/** * 1.整合表单Rules处理 * 2.整合常用跳转函数 */ import Utils from "~/utils"; export default { methods: { /** * 表单校验 rules 的赋值 * @returns void */ generateFormRules(skipDefault) { let keySet = new Set(Object.keys(this.checkRules).concat(Object.keys(this.defaultRules))) console.log('keySet', keySet) const res = {}; for (let key of keySet.keys()) { res[key] = this.checkRules[key] || this.defaultRules[key]; } this.rules = res; console.log("rules", this.rules); }, /** * 触发方式 * @param {String} prop item属性 * @returns */ getTriggerType(prop) { const modelForm = this.root ? this.root.$refs.modelForm : this.$refs.modelForm const fields = modelForm.fields; for (let i = 0; i < fields.length; i++) { const field = fields[i]; if (field.prop === prop) { // select、checkbox使用change触发 const ele = field.$children[1] ? field.$children[1].$children[0] : field.$children[0].$children[0] if (ele.$el.className.startsWith("el-select") || ele.$el.className.startsWith("el-checkbox")) { return "change"; } return "blur"; } } return "blur"; }, /** * 表单有些 tab 是通过 v-if 控制的,这些表单项初始时的 trigger 均为 blur,需要手动更新 */ updateRulesTrigger() { const rules = this.root.rules for (const key in rules) { if (Object.hasOwnProperty.call(rules, key)) { const rule = rules[key]; const triggerType = this.getTriggerType(key) for (let i = 0; i < rule.length; i++) { const r = rule[i]; if (r.validator && r.trigger !== triggerType) { r.trigger = triggerType; } } } } }, showBackendErrors(fieldErrors) { // 清除之前的校验状态 if (!this.$refs.modelForm) { return } if (!this.isChecking) { this.$refs.modelForm.clearValidate(); } else { // 当 checkAll 操作时,由面板切换所触发的 executeRule 请求时,不清空 checkAll 的错误信息 this.isChecking = false; } const fields = this.$refs.modelForm.fields; const tab = Utils.positioningErrorMsg(fieldErrors, fields); return tab; }, // 添加isModify字段 changeModify () { let prop = this.$parent.prop // 查询条件使用时,不存在prop,不用触发isModify字段的维护 if (!prop) { return } if (!this.root) { return } let tempObj = this.root.model let propArr = prop.split('.') propArr.pop() let curProp = null if (propArr && propArr.length > 0) { while (curProp = propArr.shift()) { if (tempObj[curProp]) { tempObj = tempObj[curProp] } } } let propKey = prop.substring(prop.lastIndexOf(".") + 1) if (!tempObj.modifySet) { this.$set(tempObj, 'modifySet', [propKey]) } else { if (!tempObj.modifySet.includes(propKey)) { tempObj.modifySet.push(propKey) } } // 对于markSet和markSetX处理 // 区分总行修改还是分行修改 let ignoreModFlg = this.root.model.trnInfo && this.root.model.trnInfo.sptHldflg if (!ignoreModFlg) { // 分行修改添加markSet if (!tempObj.markSet) { this.$set(tempObj, 'markSet', [propKey]) } else { if (!tempObj.markSet.includes(propKey)) { tempObj.markSet.push(propKey) } } // 同时如果总行修改的markSetX存在要删掉 if (tempObj.markSetX && tempObj.markSetX.length > 0 && tempObj.markSetX.includes(propKey)) { let indMarkSetX = tempObj.markSetX.indexOf(propKey) tempObj.markSetX.splice(indMarkSetX, 1) } } else { // 总行修改添加masksetX if (!tempObj.markSetX) { this.$set(tempObj, 'markSetX', [propKey]) } else { if (!tempObj.markSetX.includes(propKey)) { tempObj.markSetX.push(propKey) } } } console.log('model', this.root.model) }, // 自定义添加modifySet customAddModify (modelObj, prop) { if (modelObj && modelObj.modifySet && modelObj.modifySet.length) { if (!modelObj.modifySet.includes(prop)) { modelObj.modifySet.push(prop) } } else { this.$set(modelObj, 'modifySet', [prop]) } // 对于markSet和markSetX处理 if (this.root && this.root.model) { // 区分总行修改还是分行修改 let ignoreModFlg = this.root.model.trnInfo && this.root.model.trnInfo.sptHldflg if (!ignoreModFlg) { // 分行修改添加markSet if (!modelObj.markSet) { this.$set(modelObj, 'markSet', [prop]) } else { if (!modelObj.markSet.includes(prop)) { modelObj.markSet.push(prop) } } // 同时如果总行修改的markSetX存在要删掉 if (modelObj.markSetX && modelObj.markSetX.length > 0 && modelObj.markSetX.includes(prop)) { let indMarkSetX = modelObj.markSetX.indexOf(prop) modelObj.markSetX.splice(indMarkSetX, 1) } } else { // 总行修改添加masksetX if (!modelObj.markSetX) { this.$set(modelObj, 'markSetX', [prop]) } else { if (!modelObj.markSetX.includes(prop)) { modelObj.markSetX.push(prop) } } } } console.log('customAdd', modelObj, prop) }, // 自定义去除modifySet customRemoveModify (modelObj, prop) { if (modelObj && modelObj.modifySet && modelObj.modifySet.length && modelObj.modifySet.includes(prop)) { let ind = modelObj.modifySet.indexOf(prop) modelObj.modifySet.splice(ind, 1) } // markset相关的删除处理 if (modelObj && modelObj.markSet && modelObj.markSet.length && modelObj.markSet.includes(prop)) { let ind = modelObj.markSet.indexOf(prop) modelObj.markSet.splice(ind, 1) } // marksetX相关的删除处理 if (modelObj && modelObj.markSetX && modelObj.markSetX.length && modelObj.markSetX.includes(prop)) { let ind = modelObj.markSetX.indexOf(prop) modelObj.markSetX.splice(ind, 1) } console.log('customRemove', modelObj, prop) }, // 自定义校验去掉后端校验失败的状态 customValidateClear () { let prop = this.$parent.prop if (!prop) { return } if (!this.root) { return } let modelFormDom = this.root.$refs['modelForm'] if (modelFormDom) { let backendValidateKeyList = this.root.rules.backendValidateKeyList let formFields = this.root.$refs['modelForm'].fields for (let i = 0; i < formFields.length; i++) { const field = formFields[i]; if (field.prop === prop && backendValidateKeyList && backendValidateKeyList.includes(field.prop)) { field.validateState = 'success'; field.validateMessage = null; } } } }, }, computed: { isInDisplay() { return this.$store.state.Status.mode === 'display' } } }