Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
I
inori_templ
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
zpc
inori_templ
提交
96a2960f
提交
96a2960f
编写于
9月 30, 2019
作者:
zhangpingchuan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
zpc
上级
24900011
变更
1
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
37 行增加
和
44 行删除
+37
-44
CONTROL.vue.ftl
@CONTROL/表单/CONTROL.vue.ftl
+37
-44
未找到文件。
@CONTROL/表单/CONTROL.vue.ftl
浏览文件 @
96a2960f
...
...
@@ -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);
}
},
/**
* 表单值规则校验
*
*/
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 ="";
}
* 校验单个表单项
* @param item
* @param value
*/
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
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录