Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
H
H5Public
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
CI / CD
CI / CD
流水线
作业
日程
统计图
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
前端开发小组
H5Public
Commits
875b1e89
提交
875b1e89
authored
12月 21, 2019
作者:
王绍森
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加CheckBox组件
上级
4b05126c
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
67 行增加
和
5 行删除
+67
-5
index.js
baseComponents/FormArray/index.js
+67
-5
没有找到文件。
baseComponents/FormArray/index.js
浏览文件 @
875b1e89
import
React
,
{
Fragment
,
Component
}
from
'react'
;
import
{
DatePicker
,
Picker
,
TextareaItem
,
InputItem
,
List
,
Switch
}
from
'antd-mobile'
;
import
React
,
{
Fragment
,
Component
,
useEffect
,
}
from
'react'
;
import
{
DatePicker
,
Picker
,
TextareaItem
,
InputItem
,
List
,
Switch
,
Modal
,
Button
,
Checkbox
,
}
from
'antd-mobile'
;
import
moment
from
'moment'
;
import
PropTypes
from
'prop-types'
;
import
FieldList
from
'@/H5Public/baseComponents/FieldList'
;
import
TextareaItemMultiRows
from
'../TextareaItemMultiRows'
import
{
useState
}
from
'react'
;
const
DiyInput
=
(
props
)
=>
{
...
...
@@ -119,7 +121,7 @@ const DiyDatePicker = (props) => {
let
{
config
,
formValue
,
changeValue
}
=
props
;
let
value
=
formValue
[
config
.
key
]
?
new
Date
(
formValue
[
config
.
key
].
replace
(
/-/g
,
'/'
))
:
null
;
const
change
=
(
date
)
=>
{
let
v
=
moment
(
date
.
valueOf
()).
format
(
'YYYY-MM-DD'
);
let
v
=
moment
(
date
.
valueOf
()).
format
(
config
.
formatter
||
'YYYY-MM-DD'
);
changeValue
(
v
,
config
.
key
);
};
if
(
config
.
readOnly
)
{
...
...
@@ -131,7 +133,7 @@ const DiyDatePicker = (props) => {
<
DatePicker
value
=
{
value
}
extra
=
{
config
.
placeholder
}
mode
=
{
'date'
}
mode
=
{
config
.
mode
||
'date'
}
key
=
{
config
.
key
}
disabled
=
{
config
.
readOnly
}
onChange
=
{(
date
)
=>
change
(
date
)}
...
...
@@ -149,6 +151,56 @@ const DiyDatePicker = (props) => {
};
const
DiyCheckBox
=
({
config
,
formValue
,
changeValue
})
=>
{
const
[
modalVisible
,
toggleModal
]
=
useState
(
false
);
const
[
selectedKeys
,
setSelectedKeys
]
=
useState
([]);
useEffect
(()
=>
{
setSelectedKeys
(
formValue
[
config
.
key
]
||
[])
},
[
formValue
,
config
.
key
]);
function
onChange
(
item
)
{
if
(
selectedKeys
.
includes
(
item
.
key
))
{
setSelectedKeys
(
selectedKeys
.
filter
(
i
=>
i
!==
item
.
key
));
}
else
{
setSelectedKeys
([...
selectedKeys
,
item
.
key
]);
}
}
function
submit
()
{
toggleModal
(
false
);
changeValue
(
selectedKeys
,
config
.
key
);
}
return
(
<>
<
List
.
Item
arrow
=
"horizontal"
onClick
=
{()
=>
!
config
.
readOnly
&&
toggleModal
(
true
)}
extra
=
{
config
.
options
.
filter
(
i
=>
formValue
[
config
.
key
]
&&
formValue
[
config
.
key
].
includes
(
i
.
key
)).
map
(
i
=>
i
.
name
).
join
(
','
)}
>
{
giveRequiredName
(
config
)}
<
/List.Item
>
<
Modal
popup
visible
=
{
modalVisible
}
onClose
=
{()
=>
toggleModal
(
false
)}
animationType
=
"slide-up"
>
<
List
renderHeader
=
{()
=>
<
div
>
{
config
.
name
}
<
/div>}
>
<
div
style
=
{{
maxHeight
:
'50vh'
,
overflow
:
'scroll'
}}
>
{
config
.
options
.
map
(
i
=>
(
<
Checkbox
.
CheckboxItem
checked
=
{
selectedKeys
.
includes
(
i
.
key
)}
key
=
{
i
.
key
}
onChange
=
{()
=>
onChange
(
i
)}
>
{
i
.
name
}
<
/Checkbox.CheckboxItem
>
))}
<
/div
>
<
List
.
Item
>
<
Button
type
=
"primary"
onClick
=
{
submit
}
>
确定
<
/Button
>
<
/List.Item
>
<
/List
>
<
/Modal
>
<
/
>
)
}
const
giveRequiredName
=
(
config
)
=>
{
if
(
config
.
required
)
{
return
(
...
...
@@ -167,6 +219,7 @@ const giveRequiredName = (config) => {
}
};
class
FormArray
extends
Component
{
changeValue
=
(
value
,
key
)
=>
{
...
...
@@ -176,7 +229,7 @@ class FormArray extends Component {
detailDom
=
()
=>
{
const
{
config
,
formValues
,
readOnly
}
=
this
.
props
;
return
config
.
map
((
x
)
=>
{
x
.
readOnly
=
readOnly
||
false
;
x
.
readOnly
=
readOnly
||
x
.
readOnly
;
switch
(
x
.
type
)
{
case
'InputItem'
:
return
(
...
...
@@ -233,6 +286,15 @@ class FormArray extends Component {
changeValue
=
{
this
.
changeValue
}
/
>
);
case
'CheckBox'
:
return
(
<
DiyCheckBox
key
=
{
x
.
key
}
config
=
{
x
}
formValue
=
{
formValues
}
changeValue
=
{
this
.
changeValue
}
/
>
);
default
:
return
null
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论