Преглед на файлове

修复打开录入页时,所有有校验规则的属性都有红竖线的问题

Ben преди 2 дни
родител
ревизия
838290ea33
променени са 2 файла, в които са добавени 30 реда и са изтрити 6 реда
  1. 23 4
      js/validate/validation-manager.js
  2. 7 2
      page/env/objInp.jsp

+ 23 - 4
js/validate/validation-manager.js

@@ -20,7 +20,7 @@ class ValidationManager {
     }
 
     // 添加验证规则
-    add(ruleName, fields, options = {}, priority = 1) {
+    add(ruleName, fields, options = {}, fieldValMap, priority = 1) {//增加fieldValMap参数,传入表单元素在页面打开时的默认值 Ben(20260107)
         if (!Array.isArray(fields)) {
             fields = [fields];
         }
@@ -28,18 +28,23 @@ class ValidationManager {
         const rule = this._parseRule(ruleName);
         if (!rule) return;
 
+
         fields.forEach(field => {
             if (!this.validations.has(field)) {
                 this.validations.set(field, []);
             }
-            
+
+            let val = fieldValMap[field];//add by Ben(20260107)
+
             this.validations.get(field).push({
                 rule: rule,
                 options: {
                     msgPrfx: options.msgPrfx || field,
                     ...options
                 },
-                priority: priority
+                priority: priority,
+                'val':val, //传入的val值,用于页面刚打开时初始化非空红线时判断用 by Ben(20260107)
+                'ruleName':ruleName //传入ruleName规则名称,用于页面刚打开时初始化非空红线时判断用 by Ben(20260107)
             });
         });
 
@@ -285,7 +290,21 @@ class ValidationManager {
             // 获取同一个 td 内的所有需要验证的字段
             const tdFields = Array.from(td.querySelectorAll('[name]'))
                 .map(el => el.getAttribute('name'))
-                .filter(name => this.validations.has(name));
+                .filter(name => {//条件改为:如果字段存在非空校验规则,且当前值为空,filter才通过返回tdField Ben(20260107)
+                    let vArr = this.validations.get(name);
+
+                    for(let i=0;i<vArr.length;i++){
+                        let v = vArr[i];
+                        console.log('@@v:'+JSON.stringify(v));
+
+                        if(v&&(v.ruleName==='ss.commonValidator.notNull')&&(v.val==='0'||v.val===''||v.val===undefined||v.val===null))
+                            return true;
+                        else
+                            return false;
+                    }
+
+
+                });
 
             // 只要有验证规则就添加必填标记
             if (tdFields.length > 0) {

+ 7 - 2
page/env/objInp.jsp

@@ -469,9 +469,14 @@
 				const item = ss.dom.formVmConfig[i];
 				// 处理每个元素
 				let rule = item.rule;
-				let field = item.field;
+				let fieldArr = item.field;
 				let param = item.param;
-				window.ssVm.add(rule, field, param);
+				let fieldValMap = [];
+				for (let i = 0; i < fieldArr.length; i++) {//校验程序增加传入表单元素的值fieldValMap Ben(20260107)
+					const field = fieldArr[i];
+					fieldValMap[field] = window.SS.dom.formElemConfig[field].val;
+				}
+				window.ssVm.add(rule, fieldArr, param ,fieldValMap);//校验程序增加传入表单元素的值fieldValMap Ben(20260107)
 
 			}