Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
V
vue-form
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
vue-form
Commits
53331ff5
提交
53331ff5
authored
12月 28, 2019
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update
上级
07a76974
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
225 行增加
和
83 行删除
+225
-83
answer.js
examples/page/answer.js
+54
-14
career.js
examples/page/career.js
+22
-6
declare.js
examples/page/declare.js
+6
-11
education.js
examples/page/education.js
+3
-2
honor.js
examples/page/honor.js
+11
-12
profile.js
examples/page/profile.js
+16
-4
training.js
examples/page/training.js
+19
-11
FormPane.vue
src/FormPane.vue
+94
-23
没有找到文件。
examples/page/answer.js
浏览文件 @
53331ff5
...
@@ -6,37 +6,77 @@ export default {
...
@@ -6,37 +6,77 @@ export default {
get
:
{
get
:
{
action
:
'/zws/v1/enrollment/answers?project_id=1001'
,
action
:
'/zws/v1/enrollment/answers?project_id=1001'
,
callback
(
data
)
{
callback
(
data
)
{
data
.
date_of_starting_to_work
=
data
.
date_of_starting_to_work
+
''
let
[
first
,
second
]
=
data
return
data
return
{
qid1
:
first
.
qid
,
question1
:
first
.
question
,
answer1
:
first
.
answer
,
qid2
:
second
.
qid
,
question2
:
second
.
question
,
answer2
:
second
.
answer
}
}
}
},
},
update
:
{
update
:
{
action
:
'/zws/v1/enrollment/answers/batch-upload'
,
action
:
'/zws/v1/enrollment/answers/batch-upload'
,
data
:
{
project_id
:
1001
},
data
:
{
project_id
:
1001
},
callback
(
data
)
{
beforeRequest
(
data
)
{
return
data
return
{
records
:
[
{
qid
:
data
.
qid1
,
question
:
data
.
question1
,
answer
:
data
.
answer1
},
{
qid
:
data
.
qid2
,
question
:
data
.
question2
,
answer
:
data
.
answer2
}
]
}
}
}
},
},
form
:
{
form
:
{
options
:
{
labelWidth
:
'160px'
},
items
:
[
items
:
[
{
{
type
:
'input-form'
,
type
:
'input-form'
,
label
:
'姓名'
,
label
:
model
:
'real_name_cn'
,
'您为什么要申请美国印第安纳大学Kelley商学院金融学硕士项目?(200字以上,1000字以内)'
,
placeholder
:
'123123'
,
model
:
'answer1'
,
attrs
:
{
type
:
'textarea'
,
rows
:
'8'
,
maxlength
:
'1000'
,
'show-word-limit'
:
true
},
rules
:
[
{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
},
{
min
:
200
,
max
:
1000
,
message
:
'长度在 200 到 1000 个字符'
,
trigger
:
'blur'
}
]
},
{
type
:
'input-form'
,
label
:
'您的短期和长期职业发展目标是什么?您打算如何达成此愿景?(200字以上,1000字以内)'
,
model
:
'answer2'
,
attrs
:
{
type
:
'textarea'
,
rows
:
'8'
,
maxlength
:
'1000'
,
'show-word-limit'
:
true
},
rules
:
[
rules
:
[
{
{
required
:
true
,
required
:
true
,
message
:
'请输入
活动名称
'
,
message
:
'请输入'
,
trigger
:
'blur'
trigger
:
'blur'
},
},
{
{
min
:
3
,
min
:
200
,
max
:
5
,
max
:
1000
,
message
:
'长度在
3 到 5
个字符'
,
message
:
'长度在
200 到 1000
个字符'
,
trigger
:
'blur'
trigger
:
'blur'
}
}
]
]
...
...
examples/page/career.js
浏览文件 @
53331ff5
...
@@ -19,7 +19,7 @@ export default {
...
@@ -19,7 +19,7 @@ export default {
form
:
{
form
:
{
hasAdd
:
true
,
hasAdd
:
true
,
options
:
{
options
:
{
labelWidth
:
'1
6
0px'
labelWidth
:
'1
4
0px'
},
},
model
:
[
model
:
[
{
{
...
@@ -34,7 +34,7 @@ export default {
...
@@ -34,7 +34,7 @@ export default {
],
],
items
:
[
items
:
[
{
{
type
:
'date-picker-form'
,
type
:
'date-picker-f
rom-to-f
orm'
,
elemType
:
'monthrange'
,
elemType
:
'monthrange'
,
label
:
'工作时间'
,
label
:
'工作时间'
,
model
:
'times'
,
model
:
'times'
,
...
@@ -86,23 +86,39 @@ export default {
...
@@ -86,23 +86,39 @@ export default {
{
required
:
true
,
message
:
'请选择职位类型'
,
trigger
:
'change'
}
{
required
:
true
,
message
:
'请选择职位类型'
,
trigger
:
'change'
}
]
]
},
},
{
{
type
:
'input-form'
,
type
:
'input-form'
,
label
:
'工作年薪(万元)'
,
label
:
'工作年薪(万元)'
,
model
:
'annual_salary'
model
:
'annual_salary'
,
rules
:
[{
required
:
true
,
message
:
'请输入工作年薪'
,
trigger
:
'blur'
}]
},
},
{
{
type
:
'input-form'
,
type
:
'input-form'
,
label
:
'工作描述'
,
label
:
'工作描述'
,
model
:
'job_desc_cn'
,
model
:
'job_desc_cn'
,
attrs
:
{
type
:
'textarea'
}
attrs
:
{
type
:
'textarea'
,
placeholder
:
'请详细描述您的职责范围,工作任务以及取得的成绩等,填写文字在100个字以上评定等级,少于不计算,内容越详细,等级越高。(字限3000字以内)'
,
rows
:
'8'
,
maxlength
:
'3000'
,
'show-word-limit'
:
true
},
rules
:
[{
required
:
true
,
message
:
'请输入工作描述'
,
trigger
:
'blur'
}]
},
},
{
{
type
:
'input-form'
,
type
:
'input-form'
,
label
:
'公司(单位)简介'
,
label
:
'公司(单位)简介'
,
model
:
'company_profile'
,
model
:
'company_profile'
,
attrs
:
{
type
:
'textarea'
}
attrs
:
{
type
:
'textarea'
,
placeholder
:
'300字左右,包括所属行业在业内的位置,经营时间,业务规模,发展前景等信息'
,
rows
:
'4'
},
rules
:
[
{
required
:
true
,
message
:
'请输入公司(单位)简介'
,
trigger
:
'blur'
}
]
}
}
]
]
}
}
...
...
examples/page/declare.js
浏览文件 @
53331ff5
...
@@ -18,26 +18,21 @@ export default {
...
@@ -18,26 +18,21 @@ export default {
}
}
},
},
form
:
{
form
:
{
hint
:
'我提供的所有报名材料信息皆准确和完整。我同意在需要的情况下提交原件以确认我的报名资格。由于报名材料中的虚假、错误信息或重大遗漏导致不录取或取消学籍的后果由我个人承担。 我理解并同意所有报名材料归紫荆教育所有,无论考生录取与否均不退回。我授权紫荆教育使用报名表中的信息查询本人学习和工作记录。'
,
options
:
{
options
:
{
labelWidth
:
'160px'
labelWidth
:
'160px'
},
},
items
:
[
items
:
[
{
{
type
:
'
input
-form'
,
type
:
'
checkbox
-form'
,
label
:
'
姓名
'
,
label
:
'
我同意
'
,
model
:
'real_name_cn'
,
model
:
'real_name_cn'
,
placeholder
:
'123123'
,
rules
:
[
rules
:
[
{
{
required
:
true
,
required
:
true
,
message
:
'请输入活动名称'
,
message
:
'请勾选'
,
trigger
:
'blur'
trigger
:
'change'
},
{
min
:
3
,
max
:
5
,
message
:
'长度在 3 到 5 个字符'
,
trigger
:
'blur'
}
}
]
]
}
}
...
...
examples/page/education.js
浏览文件 @
53331ff5
...
@@ -28,9 +28,11 @@ export default {
...
@@ -28,9 +28,11 @@ export default {
}
}
},
},
form
:
{
form
:
{
hint
:
`<div style="color:red;font-size:18px;">请务必如实提供高中以上所有学历学位的详细信息。</div>
<div>按照从最高学历至第一学历的顺序,请您依次填写:博士、硕士、本科、专科,<br>并且填写您获得学位所在学校的国家和城市</div>`
,
hasAdd
:
true
,
hasAdd
:
true
,
options
:
{
options
:
{
labelWidth
:
'1
6
0px'
labelWidth
:
'1
1
0px'
},
},
model
:
[
model
:
[
{
{
...
@@ -49,7 +51,6 @@ export default {
...
@@ -49,7 +51,6 @@ export default {
elemType
:
'monthrange'
,
elemType
:
'monthrange'
,
label
:
'教育时间'
,
label
:
'教育时间'
,
model
:
'times'
,
model
:
'times'
,
required
:
true
,
attrs
:
{
'value-format'
:
'yyyy-MM'
},
attrs
:
{
'value-format'
:
'yyyy-MM'
},
rules
:
[{
required
:
true
,
message
:
'请选择教育时间'
,
trigger
:
'blur'
}]
rules
:
[{
required
:
true
,
message
:
'请选择教育时间'
,
trigger
:
'blur'
}]
},
},
...
...
examples/page/honor.js
浏览文件 @
53331ff5
export
default
{
export
default
{
id
:
'honor'
,
id
:
'honor'
,
title
:
'
学习目的
'
,
title
:
'
荣誉奖励
'
,
showProgress
:
true
,
showProgress
:
true
,
progress
:
0
,
progress
:
0
,
get
:
{
get
:
{
...
@@ -19,24 +19,23 @@ export default {
...
@@ -19,24 +19,23 @@ export default {
},
},
form
:
{
form
:
{
options
:
{
options
:
{
labelWidth
:
'1
6
0px'
labelWidth
:
'1
8
0px'
},
},
items
:
[
items
:
[
{
{
type
:
'input-form'
,
type
:
'input-form'
,
label
:
'姓名'
,
label
:
'荣誉/奖励'
,
model
:
'real_name_cn'
,
model
:
'school_name_cn'
,
placeholder
:
'123123'
,
rules
:
[{
required
:
true
,
message
:
'请输入荣誉/奖励'
,
trigger
:
'blur'
}]
},
{
type
:
'input-form'
,
label
:
'证书颁发机构及获得时间'
,
model
:
'school_country'
,
rules
:
[
rules
:
[
{
{
required
:
true
,
required
:
true
,
message
:
'请输入活动名称'
,
message
:
'请输入证书颁发机构及获得时间'
,
trigger
:
'blur'
},
{
min
:
3
,
max
:
5
,
message
:
'长度在 3 到 5 个字符'
,
trigger
:
'blur'
trigger
:
'blur'
}
}
]
]
...
...
examples/page/profile.js
浏览文件 @
53331ff5
...
@@ -7,19 +7,24 @@ export default {
...
@@ -7,19 +7,24 @@ export default {
action
:
'/zws/v1/enrollment/profiles?project_id=1001'
,
action
:
'/zws/v1/enrollment/profiles?project_id=1001'
,
callback
(
data
)
{
callback
(
data
)
{
data
.
date_of_starting_to_work
=
data
.
date_of_starting_to_work
+
''
data
.
date_of_starting_to_work
=
data
.
date_of_starting_to_work
+
''
data
.
city
=
`
${
data
.
address_province
+
''
}
-
${
data
.
address_city
+
''
}
`
return
data
return
data
}
}
},
},
update
:
{
update
:
{
action
:
'/zws/v1/enrollment/profiles'
,
action
:
'/zws/v1/enrollment/profiles'
,
data
:
{
project_id
:
1001
},
data
:
{
project_id
:
1001
},
callback
(
data
)
{
beforeRequest
(
data
)
{
let
[
province
,
city
]
=
data
.
city
.
split
(
'-'
)
data
.
address_province
=
province
data
.
address_city
=
city
delete
data
.
city
return
data
return
data
}
}
},
},
form
:
{
form
:
{
options
:
{
options
:
{
labelWidth
:
'1
6
0px'
labelWidth
:
'1
5
0px'
},
},
mode
:
{
mode
:
{
real_name_cn
:
''
,
real_name_cn
:
''
,
...
@@ -46,7 +51,6 @@ export default {
...
@@ -46,7 +51,6 @@ export default {
type
:
'input-form'
,
type
:
'input-form'
,
label
:
'姓名'
,
label
:
'姓名'
,
model
:
'real_name_cn'
,
model
:
'real_name_cn'
,
placeholder
:
'123123'
,
rules
:
[{
required
:
true
,
message
:
'请输入姓名'
,
trigger
:
'blur'
}]
rules
:
[{
required
:
true
,
message
:
'请输入姓名'
,
trigger
:
'blur'
}]
},
},
{
{
...
@@ -104,11 +108,19 @@ export default {
...
@@ -104,11 +108,19 @@ export default {
model
:
'nationality'
,
model
:
'nationality'
,
rules
:
[{
required
:
true
,
message
:
'请选择国籍'
,
trigger
:
'blur'
}]
rules
:
[{
required
:
true
,
message
:
'请选择国籍'
,
trigger
:
'blur'
}]
},
},
{
type
:
'city-select-form'
,
label
:
'现居住城市'
,
model
:
'city'
,
separator
:
'-'
,
rules
:
[{
required
:
true
,
message
:
'请选择居住城市'
,
trigger
:
'blur'
}]
},
{
{
type
:
'date-picker-form'
,
type
:
'date-picker-form'
,
elemType
:
'year'
,
label
:
'参加工作年份'
,
label
:
'参加工作年份'
,
model
:
'date_of_starting_to_work'
,
model
:
'date_of_starting_to_work'
,
attrs
:
{
type
:
'year'
,
'value-format'
:
'yyyy'
},
attrs
:
{
'value-format'
:
'yyyy'
},
rules
:
[
rules
:
[
{
required
:
true
,
message
:
'请选择参加工作年份'
,
trigger
:
'blur'
}
{
required
:
true
,
message
:
'请选择参加工作年份'
,
trigger
:
'blur'
}
]
]
...
...
examples/page/training.js
浏览文件 @
53331ff5
...
@@ -19,24 +19,32 @@ export default {
...
@@ -19,24 +19,32 @@ export default {
},
},
form
:
{
form
:
{
options
:
{
options
:
{
labelWidth
:
'
16
0px'
labelWidth
:
'
8
0px'
},
},
items
:
[
items
:
[
{
type
:
'date-picker-form'
,
elemType
:
'monthrange'
,
label
:
'培训时间'
,
model
:
'times'
,
required
:
true
,
attrs
:
{
'value-format'
:
'yyyy-MM'
},
rules
:
[{
required
:
true
,
message
:
'请选择培训时间'
,
trigger
:
'blur'
}]
},
{
type
:
'input-form'
,
label
:
'培训机构'
,
model
:
'school_name_cn'
,
rules
:
[{
required
:
true
,
message
:
'请输入培训机构'
,
trigger
:
'blur'
}]
},
{
{
type
:
'input-form'
,
type
:
'input-form'
,
label
:
'姓名'
,
label
:
'课程名称'
,
model
:
'real_name_cn'
,
model
:
'school_country'
,
placeholder
:
'123123'
,
rules
:
[
rules
:
[
{
{
required
:
true
,
required
:
true
,
message
:
'请输入活动名称'
,
message
:
'请输入课程名称'
,
trigger
:
'blur'
},
{
min
:
3
,
max
:
5
,
message
:
'长度在 3 到 5 个字符'
,
trigger
:
'blur'
trigger
:
'blur'
}
}
]
]
...
...
src/FormPane.vue
浏览文件 @
53331ff5
<
template
>
<
template
>
<div
class=
"ezj-form-pane"
>
<div
class=
"ezj-form-pane"
>
<template
v-if=
"form.hint"
>
<div
class=
"ezj-form-pane__hint"
v-html=
"form.hint"
></div>
</
template
>
<!-- 多个表单 -->
<!-- 多个表单 -->
<
template
v-if=
"form.hasAdd"
>
<
template
v-if=
"form.hasAdd"
>
<template
v-for=
"(item, index) in formModel"
>
<template
v-for=
"(item, index) in formModel"
>
<form-form
<div
class=
"ejz-form-pane_group"
:key=
"index"
>
:options=
"form.options"
<div
class=
"remove"
@
click=
"handleRemove(index)"
>
:model=
"item"
<i
class=
"el-icon-close"
></i>
:items=
"form.items"
</div>
@
onSubmit=
"onSubmit"
<form-form
:options=
"form.options"
:model=
"item"
:items=
"form.items"
@
onSubmit=
"onSubmit"
>
:key=
"index"
<el-button
@
click=
"handleAdd"
>
增加一项
</el-button>
>
<el-button
@
click=
"handleSubmit"
>
保存
</el-button>
<el-button>
增加一项
</el-button>
</form-form>
<el-button>
保存
</el-button>
</div>
</form-form>
</
template
>
</
template
>
</template>
</template>
...
@@ -48,8 +50,6 @@ export default {
...
@@ -48,8 +50,6 @@ export default {
return
{}
return
{}
}
}
},
},
data
:
Object
,
headers
:
Object
,
form
:
Object
form
:
Object
},
},
data
()
{
data
()
{
...
@@ -59,7 +59,7 @@ export default {
...
@@ -59,7 +59,7 @@ export default {
},
},
computed
:
{
computed
:
{
isMultiple
()
{
isMultiple
()
{
return
Array
.
isArray
(
this
.
model
)
return
Array
.
isArray
(
this
.
form
)
},
},
formModel
()
{
formModel
()
{
return
this
.
model
||
this
.
form
.
model
return
this
.
model
||
this
.
form
.
model
...
@@ -71,8 +71,17 @@ export default {
...
@@ -71,8 +71,17 @@ export default {
},
},
// 获取
// 获取
getData
()
{
getData
()
{
const
{
action
,
data
=
{},
callback
}
=
this
.
get
let
{
axios
.
get
(
action
,
{
params
:
data
}).
then
(
res
=>
{
action
,
headers
=
{},
data
=
{},
beforeRequest
,
callback
}
=
this
.
get
if
(
beforeRequest
)
{
data
=
beforeRequest
(
data
)
}
axios
.
get
(
action
,
{
params
:
data
,
headers
}).
then
(
res
=>
{
let
{
data
}
=
res
let
{
data
}
=
res
if
(
callback
)
{
if
(
callback
)
{
data
=
callback
(
data
)
data
=
callback
(
data
)
...
@@ -81,19 +90,54 @@ export default {
...
@@ -81,19 +90,54 @@ export default {
})
})
},
},
// 更新
// 更新
updateData
(
params
)
{
updateData
(
formData
)
{
const
{
action
,
data
=
{},
callback
}
=
this
.
update
let
{
params
=
Object
.
assign
({},
params
,
data
)
action
,
if
(
callback
)
{
headers
=
{},
params
=
callback
(
params
)
data
=
{},
beforeRequest
,
callback
}
=
this
.
update
if
(
beforeRequest
)
{
formData
=
beforeRequest
(
formData
)
}
// 自定义数据和表单数据合并
formData
=
Object
.
assign
({},
formData
,
data
)
// 自定义header和默认header合并
headers
=
Object
.
assign
(
{
'Content-Type'
:
'application/x-www-form-urlencoded'
},
headers
)
// 表单数据序列化
if
(
headers
[
'Content-Type'
]
===
'application/x-www-form-urlencoded'
)
{
let
params
=
new
URLSearchParams
()
for
(
let
key
in
formData
)
{
let
value
=
formData
[
key
]
params
.
append
(
key
,
typeof
value
===
'object'
?
JSON
.
stringify
(
value
)
:
value
)
}
formData
=
params
}
}
axios
.
post
(
action
,
params
).
then
(
res
=>
{
axios
.
post
(
action
,
formData
,
{
headers
}).
then
(
res
=>
{
this
.
$emit
(
'update'
)
let
{
data
}
=
res
callback
&&
callback
(
data
)
this
.
$emit
(
'update'
,
data
)
})
})
},
},
onSubmit
(
data
)
{
onSubmit
(
data
)
{
this
.
updateData
(
data
)
this
.
updateData
(
data
)
}
},
// 新增表单
handleAdd
()
{
this
.
formModel
.
push
(
this
.
form
.
model
)
},
// 删除表单
handleRemove
(
index
)
{
this
.
formModel
.
splice
(
0
,
index
)
},
handleSubmit
()
{}
},
},
beforeMount
()
{
beforeMount
()
{
this
.
init
()
this
.
init
()
...
@@ -102,4 +146,31 @@ export default {
...
@@ -102,4 +146,31 @@ export default {
</
script
>
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
>
.ezj-form-pane__hint
{
margin-bottom
:
20px
;
}
.ejz-form-pane_group
{
position
:
relative
;
margin-bottom
:
20px
;
padding
:
15px
;
border
:
2px
solid
#c41230
;
border-radius
:
10px
;
.remove
{
position
:
absolute
;
top
:
-12px
;
right
:
-12px
;
z-index
:
999
;
font-size
:
20px
;
line-height
:
24px
;
text-align
:
center
;
color
:
#fff
;
cursor
:
pointer
;
background-color
:
#c41230
;
width
:
24px
;
height
:
24px
;
border-radius
:
50%
;
overflow
:
hidden
;
}
}
</
style
>
</
style
>
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论