提交 96a2960f 编写于 作者: zhangpingchuan's avatar zhangpingchuan

zpc

上级 24900011
...@@ -4,6 +4,7 @@ ${P.getPartCode(item,'FORM').code} ...@@ -4,6 +4,7 @@ ${P.getPartCode(item,'FORM').code}
<script> <script>
import { FormButtonModel,FormDetailModel,FormItemModel,FormDRUIPartModel,FormGroupPanelModel,FormIFrameModel,FormPageModel,FormPartModel,FormRowItemModel,FormTabPageModel,FormTabPanelModel,FormUserControlModel} from "@models/index.js"; import { FormButtonModel,FormDetailModel,FormItemModel,FormDRUIPartModel,FormGroupPanelModel,FormIFrameModel,FormPageModel,FormPartModel,FormRowItemModel,FormTabPageModel,FormTabPanelModel,FormUserControlModel} from "@models/index.js";
import Schema from "async-validator";
import ComUtil from '@utils/ComUtil'; import ComUtil from '@utils/ComUtil';
import AppService from "@service/AppService"; import AppService from "@service/AppService";
export default { export default {
...@@ -130,36 +131,6 @@ export default { ...@@ -130,36 +131,6 @@ export default {
console.log("表单选中了"+key); console.log("表单选中了"+key);
}, },
/**
* 重置校验结果
*
*/
resetValidates() {
Object.values(this.detailsModel).forEach((detail) => {
if (!Object.is(detail.detailType, 'FORMITEM')) {
return;
}
const formItem = detail;
formItem.setError('');
});
},
/**
* 填充校验结果
*
*/
fillValidates(fieldErrors){
fieldErrors.forEach((error) => {
const formItem = this.detailsModel[error.field];
if (!formItem) {
return;
}
this.$nextTick(() => {
formItem.setError(error.message);
});
});
},
/** /**
* 按钮点击事件 * 按钮点击事件
* *
...@@ -173,27 +144,49 @@ export default { ...@@ -173,27 +144,49 @@ export default {
* *
*/ */
formItemChange(name,value,isFirst){ formItemChange(name,value,isFirst){
this.resetValidates();
this.formLogic(name,value); this.formLogic(name,value);
if(!isFirst){ if(!isFirst){
this.checkRule(name,value); this.validateItem(name, value);
} }
}, },
/** /**
* 表单值规则校验 * 校验单个表单项
* * @param item
*/ * @param value
checkRule(name,value){ */
if(this.rules[name][0].required){ validateItem(item, value) {
if(ComUtil.isEmpty(this.data[name])){ // 做校验
this.detailsModel[name].validateStatus ="error"; // 1.获取数值和规则
this.detailsModel[name].error =this.rules[name][0].message; const rule = this.rules[item];
}else{ // 2.创建校验规则
this.detailsModel[name].validateStatus =""; const schema = new Schema({ [item]: rule })
this.detailsModel[name].error =""; // 校验返回Promise
} return schema.validate({ [item]: value },undefined,errors => {
if (errors) {
// 有错
this.detailsModel[item].setError(errors[0].message);
} else {
this.detailsModel[item].setError('');
}
})
},
/**
* 校验表单
*
* @memberof Main
*/
validateForm(callback) {
let tasks;
if (Object.keys(this.data).length > 0) {
tasks = Object.keys(this.data).map((item) => {
this.validateItem(item, this.data[item]);
})
} }
Promise.all(tasks)
.then(() => callback(true))
.catch(() => callback(false))
}, },
/** /**
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册