export default { // 格式化表单数据(准备提交) formatFormData: function ({ data, rules, igFields }) { // 格式化表单数据 let feachRules = (rules) => { rules.forEach(rule => { // 循环规则 try { if (rule.children && rule.children.length) { feachRules(rule.children); } if (!rule.dataRule) { return; } if (rule.field in data) { // 如果字段在数据中 let value = data[rule.field]; // 获取值 if (rule.dataRule.type == "object" && rule.dataRule.fromTextField) { data[rule.dataRule.saveTextField] = value[rule.dataRule.fromTextField]; } if (rule.dataRule.fromField) { value = value[rule.dataRule.fromField]; } let saveField = rule.field; if (rule.dataRule.saveField) { saveField = rule.dataRule.saveField; } if (rule.dataRule.type == "integer") { // 如果是整数 if(value == null){ data[saveField] = null; }else{ if (!value) { value = 0; } if(value === true){ value = 1; } if(value === false){ value = 1; } data[saveField] = parseInt(value); // 转换为整数 } } if (rule.dataRule.type == "bool") { // 如果是布尔 if(value == null){ data[saveField] = null; }else{ if (!value) { value = 0; } if(value === true){ value = 1; } if(value === false){ value = 1; } data[saveField] = value ? 1 : 0; } } else if (rule.dataRule.type == "number" || rule.dataRule.type == "float") { // 如果是整数 if(value == null){ data[saveField] = null; }else{ if (!value) { value = 0; } data[saveField] = parseFloat(value); // 转换为整数 } } else if (rule.dataRule.type == "timestamp") { // 如果是时间戳 if (!value) { data[saveField] = null; }else{ data[saveField] = parseInt(new Date(value).getTime() / 1000); // 转换为时间戳 } } else if (rule.dataRule.type == "string") { // 如果是字符串 if (data[saveField] === true) { data[saveField] = "true"; } else if (data[saveField] === false) { data[saveField] = "false"; } else if (data[saveField]) { data[saveField] = value + ""; } } else { data[saveField] = value; } } } catch (e) { console.log(e) } }); }; feachRules(rules); if (igFields) { igFields.forEach(field => { if (field in data) { delete data[field]; } }) } }, // 格式化表单数据(准备展示) formatInitFormData: function ({ data, rules }) { // 格式化表单数据 let feachRules = (rules) => { rules.forEach(rule => { // 循环规则 if (rule.children && rule.children.length) { feachRules(rule.children); } if (!rule.dataRule) { return; } if (rule.dataRule.getter) { data[rule.field] = rule.dataRule.getter(data); } if (rule.field in data) { // 如果字段在数据中 if (rule.dataRule.type == "timestamp") { // 如果是时间戳 if (data[rule.field] > 0) { data[rule.field] = new Date(data[rule.field] * 1000); } } if(rule.dataRule.type == "bool"){ data[rule.field] = data[rule.field] ? true :false; } } }); }; feachRules(rules); }, // 验证表单数据 validateForm: function ({ form }) { // 验证表单 return new Promise((resolve, reject) => { // 返回一个Promise form.validate(a => { // 验证表单 let count = 0; // 计数器 if (a) { // 如果有错误 for (let name in a) { // 循环错误 a[name]; // 获取错误 count++; // 计数器加1 } } if (count > 0) { // 如果有错误 reject(count); // 返回错误 } else { // 如果没有错误 resolve(); // 返回成功 } }); }); } }