Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
VueElementTemplate
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
黄瑜
VueElementTemplate
Commits
77d267fc
Commit
77d267fc
authored
Mar 23, 2018
by
王康
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
form
parent
4ac6a7b5
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
41 additions
and
25 deletions
+41
-25
HmComplexForm.vue
src/views/haomo/components/forms/HmComplexForm.vue
+32
-23
index.vue
src/views/haomo/components/forms/index.vue
+9
-2
No files found.
src/views/haomo/components/forms/HmComplexForm.vue
View file @
77d267fc
...
@@ -17,6 +17,7 @@
...
@@ -17,6 +17,7 @@
<el-form-item
v-for=
"column in showUserColumns"
<el-form-item
v-for=
"column in showUserColumns"
:key=
"column.id"
:key=
"column.id"
:label=
"column.name"
:label=
"column.name"
:rules=
"column.rule?column.rule:null"
:prop=
"column.codeCamel"
>
:prop=
"column.codeCamel"
>
<!--el-input
<el-input
v-if=
"column.codeCamel==='password'"
type=
"password"
<!--el-input
<el-input
v-if=
"column.codeCamel==='password'"
type=
"password"
v-model=
"formModel[column.codeCamel]"
></el-input>
-->
v-model=
"formModel[column.codeCamel]"
></el-input>
-->
...
@@ -155,14 +156,22 @@
...
@@ -155,14 +156,22 @@
* 取值1-7(1表示普通输入框,2表示下拉框,3表示复选框,4表示文本域,5表示富文本,6表示日期,7表示单选框),
* 取值1-7(1表示普通输入框,2表示下拉框,3表示复选框,4表示文本域,5表示富文本,6表示日期,7表示单选框),
* 若表单类型为下拉框/复选框/单选框,还需传入options字段,值为数组(数组元素是下拉框/复选框/单选框的选项),
* 若表单类型为下拉框/复选框/单选框,还需传入options字段,值为数组(数组元素是下拉框/复选框/单选框的选项),
* 对于复选框,如果只有一个备选项则不必传options,
* 对于复选框,如果只有一个备选项则不必传options,
* 若表单类型为下拉框,还可传入multiple字段,取值true/false,表示是否多选,默认false
* 若表单类型为下拉框,还可传入multiple字段,取值
bolean类型,
true/false,表示是否多选,默认false
* 若表单类型为时间日期,可传入dateType字段,值为date(只显示日期)或datetime(显示日期和时间),如果不传,
* 若表单类型为时间日期,可传入dateType字段,值为date(只显示日期)或datetime(显示日期和时间),如果不传,
* 默认只显示日期; 可传入dateFormate字段,为日期格式,取值遵循elementUI DatePicker组件中的日期格式,
* 默认只显示日期; 可传入dateFormate字段,为日期格式,取值遵循elementUI DatePicker组件中的日期格式,
* 比如 只显示日期取值'yyyy-MM-dd',显示日期和时间取值'yyyy-MM-dd HH:mm:ss',如果不传默认为只显示日期取值'yyyy-MM-dd',date字段和dateFormate字段取值须对应
* 比如 只显示日期取值'yyyy-MM-dd',显示日期和时间取值'yyyy-MM-dd HH:mm:ss',如果不传默认为只显示日期取值'yyyy-MM-dd',date字段和dateFormate字段取值须对应
* 所有的表单类型都可传入disabled字段,取值true/false,表示是否禁用,默认不禁用
* 所有的表单类型都可传入disabled字段,取值bolean类型,true/false,表示是否禁用,默认不禁用
* input类表单还可传入rule字段来进行自定义验证规则,rule取值规范参照elementUI,下面有简单示例
* 示例:[
* 示例:[
{ name: '用户名称', codeCamel: 'username', widgetType: 1, disabled: true },
{ name: '用户名称', codeCamel: 'username', widgetType: 1, disabled: true,
{ name: '电子邮件', codeCamel: 'email', widgetType: 5, disabled: false },
rule: { required: true, message: '用户名不能为空', trigger: 'blur' }
},
{ name: '电子邮件', codeCamel: 'email', widgetType: 5, disabled: false,
rule: [
{ required: true, message: '请输入邮箱地址', trigger: 'blur' },
{ type: 'email', message: '请输入正确的邮箱地址', trigger: 'blur,change' }
]
},
{ name: '选择类型', codeCamel: 'type', widgetType: 2, multiple: false,
{ name: '选择类型', codeCamel: 'type', widgetType: 2, multiple: false,
options: [
options: [
{ value: 0, label: '选项1' },
{ value: 0, label: '选项1' },
...
@@ -227,16 +236,16 @@
...
@@ -227,16 +236,16 @@
}
}
},
},
data
()
{
data
()
{
var
validateUsername
=
(
rule
,
value
,
callback
)
=>
{
//
var validateUsername = (rule, value, callback) => {
// console.log(value.length)
//
// console.log(value.length)
if
(
!
value
)
{
//
if (!value) {
callback
(
new
Error
(
'请输入用户名'
))
//
callback(new Error('请输入用户名'))
}
else
if
((
value
.
length
<
2
||
value
.
length
>
10
))
{
//
} else if ((value.length
<
2
||
value
.
length
>
10
))
{
callback
(
new
Error
(
'用户名长度在 2 到 10 个字符'
))
//
callback(new Error('用户名长度在 2 到 10 个字符'))
}
else
{
//
} else {
callback
()
//
callback()
}
//
}
}
//
}
var
validatePassword
=
(
rule
,
value
,
callback
)
=>
{
var
validatePassword
=
(
rule
,
value
,
callback
)
=>
{
if
(
value
.
length
>
0
&&
!
(
/^
(?![
0-9
]
+$
)(?![
a-zA-Z
]
+$
)[
0-9A-Za-z
]{6,20}
$/
.
test
(
value
)))
{
if
(
value
.
length
>
0
&&
!
(
/^
(?![
0-9
]
+$
)(?![
a-zA-Z
]
+$
)[
0-9A-Za-z
]{6,20}
$/
.
test
(
value
)))
{
callback
(
new
Error
(
'密码必须同时包含数字和字母 6-20位'
))
callback
(
new
Error
(
'密码必须同时包含数字和字母 6-20位'
))
...
@@ -266,11 +275,11 @@
...
@@ -266,11 +275,11 @@
formModel
:
{},
// 双向绑定的数据变量
formModel
:
{},
// 双向绑定的数据变量
showUserColumns
:
[],
// 要显示的字段
showUserColumns
:
[],
// 要显示的字段
rules
:
{
rules
:
{
username
:
[
//
username: [
{
validator
:
validateUsername
,
trigger
:
'change'
}
//
{ validator: validateUsername, trigger: 'change' }
// { required: true, message: '请输入用户名', trigger: 'blur' },
// { required: true, message: '请输入用户名', trigger: 'blur' },
// { min: 2, max: 10, message: '长度在 2 到 10 个字符', trigger: 'blur' }
// { min: 2, max: 10, message: '长度在 2 到 10 个字符', trigger: 'blur' }
],
//
],
loginid
:
[
loginid
:
[
// { required: true, message: '请输入登陆ID', trigger: 'blur' }
// { required: true, message: '请输入登陆ID', trigger: 'blur' }
],
],
...
@@ -281,11 +290,11 @@
...
@@ -281,11 +290,11 @@
mobile
:
[
mobile
:
[
{
validator
:
validateMobile
,
trigger
:
'change'
}
{
validator
:
validateMobile
,
trigger
:
'change'
}
// { pattern: /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/, message: '请输入正确的电话号码', trigger: 'change' }
// { pattern: /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/, message: '请输入正确的电话号码', trigger: 'change' }
],
email
:
[
// { validator: validateEmail, trigger: 'change' }
{
type
:
'email'
,
message
:
'请输入正确的邮箱'
,
trigger
:
'change'
}
]
]
// email: [
// { validator: validateEmail, trigger: 'change' }
// { type: 'email', message: '请输入正确的邮箱', trigger: 'change' }
// ]
},
},
editorOption
:
{
// 富文本选项配置
editorOption
:
{
// 富文本选项配置
placeholder
:
''
,
placeholder
:
''
,
...
@@ -421,8 +430,8 @@
...
@@ -421,8 +430,8 @@
// console.log(tmp)
// console.log(tmp)
// self.$set(tmp, 'code', tmp.code.toLowerCase())
// self.$set(tmp, 'code', tmp.code.toLowerCase())
column
.
name
&&
self
.
$set
(
tmp
,
'name'
,
column
.
name
)
// 自定义字段名
column
.
name
&&
self
.
$set
(
tmp
,
'name'
,
column
.
name
)
// 自定义字段名
self
.
$set
(
tmp
,
'widgetType'
,
column
.
widgetType
||
1
)
self
.
$set
(
tmp
,
'widgetType'
,
column
.
widgetType
||
1
)
// 设置表单类型
// column.validate && self.$set(tmp, 'validate', column.validate)
column
.
rule
&&
self
.
$set
(
tmp
,
'rule'
,
column
.
rule
)
// 设置表单校验规则
column
.
disabled
&&
self
.
$set
(
tmp
,
'disabled'
,
column
.
disabled
)
// 设置是否禁用
column
.
disabled
&&
self
.
$set
(
tmp
,
'disabled'
,
column
.
disabled
)
// 设置是否禁用
column
.
options
&&
self
.
$set
(
tmp
,
'options'
,
column
.
options
)
// 设置下拉框或者多选的选项
column
.
options
&&
self
.
$set
(
tmp
,
'options'
,
column
.
options
)
// 设置下拉框或者多选的选项
column
.
multiple
&&
self
.
$set
(
tmp
,
'multiple'
,
column
.
multiple
)
// 设置下拉框是否多选
column
.
multiple
&&
self
.
$set
(
tmp
,
'multiple'
,
column
.
multiple
)
// 设置下拉框是否多选
...
...
src/views/haomo/components/forms/index.vue
View file @
77d267fc
...
@@ -27,8 +27,15 @@
...
@@ -27,8 +27,15 @@
return
{
return
{
// widgetType值 1:普通input 2:下拉框 (如果是下拉框 再传一个options表示下拉框选项)3:复选框 4:文本域 5:富文本 6:日期 7:单选框
// widgetType值 1:普通input 2:下拉框 (如果是下拉框 再传一个options表示下拉框选项)3:复选框 4:文本域 5:富文本 6:日期 7:单选框
showUserColumns
:
[
showUserColumns
:
[
{
name
:
'用户名称'
,
codeCamel
:
'username'
,
widgetType
:
1
,
disabled
:
true
},
{
name
:
'用户名称'
,
codeCamel
:
'username'
,
widgetType
:
1
,
disabled
:
false
,
{
name
:
'电子邮件'
,
codeCamel
:
'email'
,
widgetType
:
5
,
disabled
:
false
},
rule
:
{
required
:
true
,
message
:
'用户名不能为空'
,
trigger
:
'blur'
}
},
{
name
:
'电子邮件'
,
codeCamel
:
'email'
,
widgetType
:
5
,
disabled
:
false
,
rule
:
[
{
required
:
true
,
message
:
'请输入邮箱地址'
,
trigger
:
'blur'
},
{
type
:
'email'
,
message
:
'请输入正确的邮箱地址'
,
trigger
:
'blur,change'
}
]
},
{
name
:
'选择类型'
,
codeCamel
:
'type'
,
widgetType
:
2
,
multiple
:
false
,
{
name
:
'选择类型'
,
codeCamel
:
'type'
,
widgetType
:
2
,
multiple
:
false
,
options
:
[
options
:
[
{
value
:
0
,
label
:
'选项1'
},
{
value
:
0
,
label
:
'选项1'
},
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment