先上图吧,
表单里面的 表字段 以及其他字段展示与隐藏,都是根据编码项目code的值来决定的,
这种切换,对应表单字段也有变化的情况下,校验规则直接定义在data里面就不那么友好了,校验规则多了,在点击保存时,会把隐藏的值校验,导致,当前字段明明有值,也没有错误校验,但是提交表单时候,valid始终为false, 解决方法:修改rules的配置,放在计算属性里面。
上代码:
computed: {
rules() {
let flag = {
codeType: [
{ required: true, message: `编码项目不能为空`, trigger: "blur" }
]
};
switch (this.addForm.codeType) {
case "1":
flag = {
...flag,
fixedValue: [
{ required: true, message: `展示格式不能为空`, trigger: "blur" }
]
};
break;
case "2":
flag = {
...flag,
fieldName: [
{ required: true, message: `表字段不能为空`, trigger: "change" }
],
length: [
{ required: true, message: `长度不能为空`, trigger: "blur" }
]
};
break;
case "3":
flag = {
...flag,
dateFormat: [
{ required: true, message: `日期格式不能为空`, trigger: "blur" }
]
};
break;
case "4":
flag = {
...flag,
length: [
{ required: true, message: `长度不能为空`, trigger: "blur" }
],
};
break;
default:
break;
}
return flag;
},
},
为了防止el-select出现失效情况,可以在其他几个el-select的 change事件中,加上更新dom的代码段或者对表单绑定的数据进行描述
change(val) {
// 方法一 更新dom视图更新
this.$set(this.addForm, "fieldName", val);
this.$forceUpdate();
或者 方法二 进行描述、拷贝
this.addForm={...this.addForm}
},