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

zpc

上级 24900011
......@@ -4,6 +4,7 @@ ${P.getPartCode(item,'FORM').code}
<script>
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 AppService from "@service/AppService";
export default {
......@@ -130,36 +131,6 @@ export default {
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 {
*
*/
formItemChange(name,value,isFirst){
this.resetValidates();
this.formLogic(name,value);
if(!isFirst){
this.checkRule(name,value);
this.validateItem(name, value);
}
},
/**
* 表单值规则校验
*
* 校验单个表单项
* @param item
* @param value
*/
checkRule(name,value){
if(this.rules[name][0].required){
if(ComUtil.isEmpty(this.data[name])){
this.detailsModel[name].validateStatus ="error";
this.detailsModel[name].error =this.rules[name][0].message;
}else{
this.detailsModel[name].validateStatus ="";
this.detailsModel[name].error ="";
validateItem(item, value) {
// 做校验
// 1.获取数值和规则
const rule = this.rules[item];
// 2.创建校验规则
const schema = new Schema({ [item]: rule })
// 校验返回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 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册