add Form
This commit is contained in:
parent
4ed43a1798
commit
bf9649f6e8
3 changed files with 398 additions and 301 deletions
|
@ -1,132 +1,253 @@
|
|||
<!--<template>-->
|
||||
<!--<div>-->
|
||||
<!--date: {{ formInline.date }}-->
|
||||
<!--<i-form ref="formInline" :model="formInline" :rules="ruleInline">-->
|
||||
<!--<Form-item prop="date" label="日期">-->
|
||||
<!--<Date-picker type="date" placeholder="选择日期" v-model="formInline.date"></Date-picker>-->
|
||||
<!--</Form-item>-->
|
||||
<!--<Form-item prop="value2" label="级联选择">-->
|
||||
<!--<Cascader :data="formInline.data" v-model="formInline.value2" change-on-select></Cascader>-->
|
||||
<!--</Form-item>-->
|
||||
<!--<Form-item prop="user" label="输入框">-->
|
||||
<!--<Input v-model="formInline.user"></Input>-->
|
||||
<!--</Form-item>-->
|
||||
<!--<Form-item prop="targetKeys1" label="穿梭框">-->
|
||||
<!--<Transfer-->
|
||||
<!--filterable-->
|
||||
<!--:data="formInline.data1"-->
|
||||
<!--:target-keys="formInline.targetKeys1"-->
|
||||
<!--:render-format="render1"-->
|
||||
<!--@on-change="handleChange1"></Transfer>-->
|
||||
<!--</Form-item>-->
|
||||
<!--<Form-item>-->
|
||||
<!--<i-button type="primary" @click.native="handleSubmit('formInline')">登录</i-button>-->
|
||||
<!--</Form-item>-->
|
||||
<!--</i-form>-->
|
||||
<!--</div>-->
|
||||
<!--</template>-->
|
||||
<!--<script>-->
|
||||
<!--export default {-->
|
||||
<!--data () {-->
|
||||
<!--return {-->
|
||||
<!--formInline: {-->
|
||||
<!--data1: this.getMockData(),-->
|
||||
<!--targetKeys1: this.getTargetKeys(),-->
|
||||
<!--date: new Date(),-->
|
||||
<!--user: '',-->
|
||||
<!--value2: [],-->
|
||||
<!--data: [{-->
|
||||
<!--value: 'beijing',-->
|
||||
<!--label: '北京',-->
|
||||
<!--children: [-->
|
||||
<!--{-->
|
||||
<!--value: 'gugong',-->
|
||||
<!--label: '故宫'-->
|
||||
<!--},-->
|
||||
<!--{-->
|
||||
<!--value: 'tiantan',-->
|
||||
<!--label: '天坛'-->
|
||||
<!--},-->
|
||||
<!--{-->
|
||||
<!--value: 'wangfujing',-->
|
||||
<!--label: '王府井'-->
|
||||
<!--}-->
|
||||
<!--]-->
|
||||
<!--}, {-->
|
||||
<!--value: 'jiangsu',-->
|
||||
<!--label: '江苏',-->
|
||||
<!--children: [-->
|
||||
<!--{-->
|
||||
<!--value: 'nanjing',-->
|
||||
<!--label: '南京',-->
|
||||
<!--children: [-->
|
||||
<!--{-->
|
||||
<!--value: 'fuzimiao',-->
|
||||
<!--label: '夫子庙',-->
|
||||
<!--}-->
|
||||
<!--]-->
|
||||
<!--},-->
|
||||
<!--{-->
|
||||
<!--value: 'suzhou',-->
|
||||
<!--label: '苏州',-->
|
||||
<!--children: [-->
|
||||
<!--{-->
|
||||
<!--value: 'zhuozhengyuan',-->
|
||||
<!--label: '拙政园',-->
|
||||
<!--},-->
|
||||
<!--{-->
|
||||
<!--value: 'shizilin',-->
|
||||
<!--label: '狮子林',-->
|
||||
<!--}-->
|
||||
<!--]-->
|
||||
<!--}-->
|
||||
<!--],-->
|
||||
<!--}]-->
|
||||
<!--},-->
|
||||
<!--ruleInline: {-->
|
||||
<!--date: [-->
|
||||
<!--{-->
|
||||
<!--required: true,-->
|
||||
<!--type: 'date',-->
|
||||
<!--message: '请选择日期',-->
|
||||
<!--trigger: 'change'-->
|
||||
<!--}-->
|
||||
<!--],-->
|
||||
<!--user: [-->
|
||||
<!--{-->
|
||||
<!--required: true,-->
|
||||
<!--message: '请输入',-->
|
||||
<!--trigger: 'change',-->
|
||||
<!--min: 10-->
|
||||
<!--},-->
|
||||
<!--{-->
|
||||
<!--required: true,-->
|
||||
<!--message: '请输入2',-->
|
||||
<!--trigger: 'blur'-->
|
||||
<!--}-->
|
||||
<!--],-->
|
||||
<!--value2: [-->
|
||||
<!--{-->
|
||||
<!--required: true,-->
|
||||
<!--type: 'array',-->
|
||||
<!--message: '请输入',-->
|
||||
<!--trigger: 'change'-->
|
||||
<!--}-->
|
||||
<!--],-->
|
||||
<!--targetKeys1: [-->
|
||||
<!--{-->
|
||||
<!--required: true,-->
|
||||
<!--type: 'array',-->
|
||||
<!--max: 2,-->
|
||||
<!--message: '太多了',-->
|
||||
<!--trigger: 'change'-->
|
||||
<!--}-->
|
||||
<!--]-->
|
||||
<!--}-->
|
||||
<!--}-->
|
||||
<!--},-->
|
||||
<!--methods: {-->
|
||||
<!--handleSubmit(name) {-->
|
||||
<!--this.$refs[name].validate((valid) => {-->
|
||||
<!--if (valid) {-->
|
||||
<!--this.$Message.success('提交成功!');-->
|
||||
<!--} else {-->
|
||||
<!--this.$Message.error('表单验证失败!');-->
|
||||
<!--}-->
|
||||
<!--})-->
|
||||
<!--},-->
|
||||
<!--handleInput (val) {-->
|
||||
<!--console.log(val)-->
|
||||
<!--},-->
|
||||
<!--getMockData () {-->
|
||||
<!--let mockData = [];-->
|
||||
<!--for (let i = 1; i <= 20; i++) {-->
|
||||
<!--mockData.push({-->
|
||||
<!--key: i.toString(),-->
|
||||
<!--label: '内容' + i,-->
|
||||
<!--description: '内容' + i + '的描述信息',-->
|
||||
<!--disabled: Math.random() * 3 < 1-->
|
||||
<!--});-->
|
||||
<!--}-->
|
||||
<!--return mockData;-->
|
||||
<!--},-->
|
||||
<!--getTargetKeys () {-->
|
||||
<!--return this.getMockData()-->
|
||||
<!--.filter(() => Math.random() * 2 > 1)-->
|
||||
<!--.map(item => item.key);-->
|
||||
<!--},-->
|
||||
<!--render1 (item) {-->
|
||||
<!--return item.label;-->
|
||||
<!--},-->
|
||||
<!--handleChange1 (newTargetKeys, direction, moveKeys) {-->
|
||||
<!--console.log(newTargetKeys);-->
|
||||
<!--console.log(direction);-->
|
||||
<!--console.log(moveKeys);-->
|
||||
<!--this.formInline.targetKeys1 = newTargetKeys;-->
|
||||
<!--}-->
|
||||
<!--}-->
|
||||
<!--}-->
|
||||
<!--</script>-->
|
||||
|
||||
|
||||
<template>
|
||||
<div>
|
||||
date: {{ formInline.date }}
|
||||
<i-form ref="formInline" :model="formInline" :rules="ruleInline">
|
||||
<Form-item prop="date" label="日期">
|
||||
<Date-picker type="date" placeholder="选择日期" v-model="formInline.date"></Date-picker>
|
||||
</Form-item>
|
||||
<Form-item prop="value2" label="级联选择">
|
||||
<Cascader :data="formInline.data" v-model="formInline.value2" change-on-select></Cascader>
|
||||
</Form-item>
|
||||
<Form-item prop="user" label="输入框">
|
||||
<Input v-model="formInline.user"></Input>
|
||||
</Form-item>
|
||||
<Form-item prop="targetKeys1" label="穿梭框">
|
||||
<Transfer
|
||||
filterable
|
||||
:data="formInline.data1"
|
||||
:target-keys="formInline.targetKeys1"
|
||||
:render-format="render1"
|
||||
@on-change="handleChange1"></Transfer>
|
||||
</Form-item>
|
||||
<Form-item>
|
||||
<i-button type="primary" @click.native="handleSubmit('formInline')">登录</i-button>
|
||||
</Form-item>
|
||||
</i-form>
|
||||
</div>
|
||||
<Form ref="formCustom" :model="formCustom" :rules="ruleCustom" :label-width="80">
|
||||
<Form-item label="密码" prop="passwd">
|
||||
<Input type="password" v-model="formCustom.passwd"></Input>
|
||||
</Form-item>
|
||||
<Form-item label="确认密码" prop="passwdCheck">
|
||||
<Input type="password" v-model="formCustom.passwdCheck"></Input>
|
||||
</Form-item>
|
||||
<Form-item label="年龄" prop="age">
|
||||
<Input type="text" v-model="formCustom.age" number></Input>
|
||||
</Form-item>
|
||||
<Form-item>
|
||||
<Button type="primary" @click="handleSubmit('formCustom')">提交</Button>
|
||||
<Button type="ghost" @click="handleReset('formCustom')" style="margin-left: 8px">重置</Button>
|
||||
</Form-item>
|
||||
</Form>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
data () {
|
||||
const validatePass = (rule, value, callback) => {
|
||||
if (value === '') {
|
||||
callback(new Error('请输入密码'));
|
||||
} else {
|
||||
if (this.formCustom.passwdCheck !== '') {
|
||||
// 对第二个密码框单独验证
|
||||
this.$refs.formCustom.validateField('passwdCheck');
|
||||
}
|
||||
callback();
|
||||
}
|
||||
};
|
||||
const validatePassCheck = (rule, value, callback) => {
|
||||
if (value === '') {
|
||||
callback(new Error('请再次输入密码'));
|
||||
} else if (value !== this.formCustom.passwd) {
|
||||
callback(new Error('两次输入密码不一致!'));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
const validateAge = (rule, value, callback) => {
|
||||
if (!value) {
|
||||
return callback(new Error('年龄不能为空'));
|
||||
}
|
||||
// 模拟异步验证效果
|
||||
setTimeout(() => {
|
||||
if (!Number.isInteger(value)) {
|
||||
callback(new Error('请输入数字值'));
|
||||
} else {
|
||||
if (value < 18) {
|
||||
callback(new Error('必须年满18岁'));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
}
|
||||
}, 1000);
|
||||
};
|
||||
|
||||
return {
|
||||
formInline: {
|
||||
data1: this.getMockData(),
|
||||
targetKeys1: this.getTargetKeys(),
|
||||
date: new Date(),
|
||||
user: '',
|
||||
value2: [],
|
||||
data: [{
|
||||
value: 'beijing',
|
||||
label: '北京',
|
||||
children: [
|
||||
{
|
||||
value: 'gugong',
|
||||
label: '故宫'
|
||||
},
|
||||
{
|
||||
value: 'tiantan',
|
||||
label: '天坛'
|
||||
},
|
||||
{
|
||||
value: 'wangfujing',
|
||||
label: '王府井'
|
||||
}
|
||||
]
|
||||
}, {
|
||||
value: 'jiangsu',
|
||||
label: '江苏',
|
||||
children: [
|
||||
{
|
||||
value: 'nanjing',
|
||||
label: '南京',
|
||||
children: [
|
||||
{
|
||||
value: 'fuzimiao',
|
||||
label: '夫子庙',
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
value: 'suzhou',
|
||||
label: '苏州',
|
||||
children: [
|
||||
{
|
||||
value: 'zhuozhengyuan',
|
||||
label: '拙政园',
|
||||
},
|
||||
{
|
||||
value: 'shizilin',
|
||||
label: '狮子林',
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
}]
|
||||
formCustom: {
|
||||
passwd: '',
|
||||
passwdCheck: '',
|
||||
age: ''
|
||||
},
|
||||
ruleInline: {
|
||||
date: [
|
||||
{
|
||||
required: true,
|
||||
type: 'date',
|
||||
message: '请选择日期',
|
||||
trigger: 'change'
|
||||
}
|
||||
ruleCustom: {
|
||||
passwd: [
|
||||
{ validator: validatePass, trigger: 'blur' }
|
||||
],
|
||||
user: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入',
|
||||
trigger: 'change',
|
||||
min: 10
|
||||
},
|
||||
{
|
||||
required: true,
|
||||
message: '请输入2',
|
||||
trigger: 'blur'
|
||||
}
|
||||
passwdCheck: [
|
||||
{ validator: validatePassCheck, trigger: 'blur' }
|
||||
],
|
||||
value2: [
|
||||
{
|
||||
required: true,
|
||||
type: 'array',
|
||||
message: '请输入',
|
||||
trigger: 'change'
|
||||
}
|
||||
],
|
||||
targetKeys1: [
|
||||
{
|
||||
required: true,
|
||||
type: 'array',
|
||||
max: 2,
|
||||
message: '太多了',
|
||||
trigger: 'change'
|
||||
}
|
||||
age: [
|
||||
{ validator: validateAge, trigger: 'blur' }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleSubmit(name) {
|
||||
handleSubmit (name) {
|
||||
this.$refs[name].validate((valid) => {
|
||||
if (valid) {
|
||||
this.$Message.success('提交成功!');
|
||||
|
@ -135,34 +256,8 @@
|
|||
}
|
||||
})
|
||||
},
|
||||
handleInput (val) {
|
||||
console.log(val)
|
||||
},
|
||||
getMockData () {
|
||||
let mockData = [];
|
||||
for (let i = 1; i <= 20; i++) {
|
||||
mockData.push({
|
||||
key: i.toString(),
|
||||
label: '内容' + i,
|
||||
description: '内容' + i + '的描述信息',
|
||||
disabled: Math.random() * 3 < 1
|
||||
});
|
||||
}
|
||||
return mockData;
|
||||
},
|
||||
getTargetKeys () {
|
||||
return this.getMockData()
|
||||
.filter(() => Math.random() * 2 > 1)
|
||||
.map(item => item.key);
|
||||
},
|
||||
render1 (item) {
|
||||
return item.label;
|
||||
},
|
||||
handleChange1 (newTargetKeys, direction, moveKeys) {
|
||||
console.log(newTargetKeys);
|
||||
console.log(direction);
|
||||
console.log(moveKeys);
|
||||
this.formInline.targetKeys1 = newTargetKeys;
|
||||
handleReset (name) {
|
||||
this.$refs[name].resetFields();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue