100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > elementui 嵌套表单验证_elementUI 表单嵌套表格验证 日期选择器联动限制等写法

elementui 嵌套表单验证_elementUI 表单嵌套表格验证 日期选择器联动限制等写法

时间:2022-04-06 03:00:51

相关推荐

elementui 嵌套表单验证_elementUI 表单嵌套表格验证 日期选择器联动限制等写法

最近项目需要做巡检相关的功能,用到的表单表格比较多,加上各种验证快玩出了花,倒不是难,就是挺繁琐的,记录一下比较基础的写法。

1.表单嵌套表格的验证:

如图,表单被分为了一个可以动态增减的表格和普通的表单两部分,且表格是遍历出来的,内容是必选项,这样验证项目必须要直接写在遍历的地方,表格的增删就不说了直接push和splice就好,废话不说,上代码

基础信息

label-width="100px"

label="班次名称:"

prop="name"

>

label-width="100px"

label=""

prop="cycle_days"

>

每天为一个单次循环周期

班次表

:data="form.patrol_scheme_details"

header-row-class-name="table-head"

row-class-name="table-body"

stripe

>

label="天数"

>

:prop="'patrol_scheme_details.' + scope.$index+ '.scheme_day'"

:rules="{

required: true, message: '请选择', trigger: 'change'

}"

>

v-for="item in dayOption"

:key="item.value"

:label="item.label"

:value="item.value"

/>

:prop="'patrol_scheme_details.' + scope.$index+ '.time_slot'"

:rules="{

required: true, message: '请选择', trigger: 'change'

}"

>

v-for="item in slotOption"

:key="item.value"

:label="item.label"

:value="item.value"

/>

:prop="'patrol_scheme_details.' + scope.$index+ '.persons'"

:rules="{

required: true, message: '请选择', trigger: 'change'

}"

>

v-for="item in userOption"

:key="item.id"

:label="item.full_name ? item.full_name : item.username"

:value="item.id"

/>

v-if="$route.meta.privileges.includes('Edit')"

prop="op"

label="操作"

width="80"

>

删除

class="add-button"

@click="addRow()"

>

单次循环班次

export default {

data() {

return {

form: {

'name': '', // 必须,班次名字

'cycle_days': 1, // 循环周期,天数

'patrol_scheme_details': [

{

'scheme_day': 1, // 第几天,排版日

'time_slot': '', // 排版时段,选择项

'persons': [] // 巡检人ID列表,多选数组

}

]

},

rules: {

name: [{ required: true, message: '请输入', trigger: 'blur' }],

cycle_days: [{ required: true, message: '请输入', trigger: 'blur' }]

},

slotOption: [],

userOption: []

}

},

}

其实主要看这几句就可以

这样动态验证就完成了。

2.时间选择器限制

两个时间选择器,第一个只能选今天及以后的日期范围,第二个只能选第一个选的日期范围中的日期。

只能选今天及以后,第一个选了10-15号

label="起止时间:"

>

v-model="form.schemeDate"

type="daterange"

range-separator="至"

start-placeholder="开始日期"

end-placeholder="结束日期"

size="small"

format="yyyy-MM-dd"

:clearable="false"

value-format="yyyy-MM-dd"

:picker-options="pickerOptions2"

/>

pickerOptions2: {

disabledDate(time) {

return time.getTime() < Date.now() - 8.64e7

}

}

只能从10-15号中选一天

v-model="scope.row.scheme_date"

value-format="yyyy-MM-dd"

placeholder="选择日期"

:clearable="false"

:picker-options="pickerOptions"

/>

computed: {

pickerOptions() {

var self = this

return {

disabledDate(time) {

return time.getTime() < new Date(self.form.schemeDate[0]).getTime() - 8.64e7 || time.getTime() > new Date(self.form.schemeDate[1]).getTime()

}

}

},

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。