From 6781ba45775af16872ac68f7e459b1072b16c4cc Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 18 十月 2023 17:33:47 +0800
Subject: [PATCH] Merge branch 'master' into positec

---
 src/tabviews/zshare/mutilform/index.jsx |  201 +++++++++++++++++++++++++++++++-------------------
 1 files changed, 125 insertions(+), 76 deletions(-)

diff --git a/src/tabviews/zshare/mutilform/index.jsx b/src/tabviews/zshare/mutilform/index.jsx
index e4f95d3..d4b95fd 100644
--- a/src/tabviews/zshare/mutilform/index.jsx
+++ b/src/tabviews/zshare/mutilform/index.jsx
@@ -28,6 +28,7 @@
 const MkFormula = asyncComponent(() => import('./mkFormula'))
 const MkCascader = asyncComponent(() => import('./mkCascader'))
 const MkVercode = asyncComponent(() => import('./mkVercode'))
+const MKPopSelect = asyncComponent(() => import('./mkPopSelect'))
 const MKEditor = asyncComponent(() => import('@/components/editor'))
 
 class MutilFormComponent extends Component {
@@ -125,7 +126,7 @@
         item.precision = 'second'
       }
 
-      if (!item.field || !['text', 'number', 'switch', 'check', 'rate', 'select', 'link', 'cascader', 'linkMain', 'funcvar', 'date', 'datemonth', 'radio', 'checkbox', 'checkcard', 'fileupload', 'textarea', 'multiselect', 'brafteditor', 'color', 'vercode'].includes(item.type)) return false
+      if (!item.field || !['text', 'number', 'switch', 'check', 'rate', 'select', 'popSelect', 'link', 'cascader', 'linkMain', 'funcvar', 'date', 'datemonth', 'radio', 'checkbox', 'checkcard', 'fileupload', 'textarea', 'multiselect', 'brafteditor', 'color', 'vercode'].includes(item.type)) return false
 
       if (/^\s+$/.test(item.label)) {
         item.style = item.style || {}
@@ -292,26 +293,31 @@
         }
       }
 
+      item.rules = []
       if (item.type === 'text') {
         item.initval = item.initval + ''
-        let _rules = [{
-          pattern: /^[^']*$/ig,
-          message: '涓嶅彲浣跨敤鑻辨枃鐘舵�佺殑鍗曞紩鍙凤紒'
-        }, {
+
+        if (item.required === 'true') {
+          item.rules.push({
+            required: true,
+            message: item.label + '涓嶅彲涓虹┖!'
+          })
+        }
+
+        item.rules.push({
           validator: (rule, value, callback) => {
-            if (/--/ig.test(value)) {
+            if (/'/.test(value)) {
+              callback('涓嶅彲浣跨敤鑻辨枃鐘舵�佺殑鍗曞紩鍙凤紒')
+            } else if (/--/.test(value)) {
               callback('涓嶅彲浣跨敤 -- 锛�')
             } else {
               callback()
             }
           }
-        }, {
-          required: item.required === 'true',
-          message: item.label + '涓嶅彲涓虹┖!'
-        }]
-
+        })
+        
         if (!item.lenControl || item.lenControl === 'limit') {
-          _rules.push({
+          item.rules.push({
             max: item.fieldlength,
             message: formRule.input.formMessage.replace('@max', item.fieldlength)
           })
@@ -323,7 +329,7 @@
             if (item.regularExtra) {
               reg = new RegExp('^[0-9.-' + item.regularExtra.replace(/\.|-/g, '') + ']*$')
             }
-            _rules.push({
+            item.rules.push({
               pattern: reg,
               message: item.regularText || formRule.input.numbermsg
             })
@@ -332,7 +338,7 @@
             if (item.regularExtra) {
               reg = new RegExp('^[a-zA-Z' + item.regularExtra + ']*$')
             }
-            _rules.push({
+            item.rules.push({
               pattern: reg,
               message: item.regularText || formRule.input.lettermsg
             })
@@ -341,7 +347,7 @@
             if (item.regularExtra) {
               reg = new RegExp('^[a-zA-Z0-9' + item.regularExtra + ']*$')
             }
-            _rules.push({
+            item.rules.push({
               pattern: reg,
               message: item.regularText || '璇疯緭鍏ユ暟瀛楁垨瀛楁瘝'
             })
@@ -350,80 +356,113 @@
             if (item.regularExtra) {
               reg = new RegExp('^[a-zA-Z0-9@_.' + item.regularExtra.replace(/\.|_|@/g, '') + ']*$')
             }
-            _rules.push({
+            item.rules.push({
               pattern: reg,
               message: item.regularText || '璇疯緭鍏ユ暟瀛椼�佸瓧姣嶄互鍙夽_.'
             })
           } else if (item.regular === 'phone') {
-            _rules.push({
+            item.rules.push({
               pattern: /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/,
               message: item.regularText || '璇锋纭緭鍏ユ墜鏈哄彿'
             })
           } else if (item.regular === 'email') {
-            _rules.push({
+            item.rules.push({
               pattern: /^([a-zA-Z0-9._-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/,
               message: item.regularText || '璇锋纭緭鍏ラ偖绠卞湴鍧�'
             })
           }
         }
-        
-        item.rules = _rules
       } else if (item.type === 'number') {
         item.rules = [{
           required: true,
           message: item.label + '涓嶅彲涓虹┖!'
-        }, {
-          validator: (rule, value, callback) => this.handleConfirmPassword(rule, value, callback, item)
         }]
-      } else if (item.type === 'textarea') {
-        let _rules = [
-          {
-            required: item.required === 'true',
-            message: item.label + '涓嶅彲涓虹┖!'
-          },
-          {
-            max: item.fieldlength,
-            message: formRule.input.formMessage.replace('@max', item.fieldlength)
-          },
-          {
-            pattern: /^[^']*$/ig,
-            message: '涓嶅彲浣跨敤鑻辨枃鐘舵�佺殑鍗曞紩鍙凤紒'
-          }, {
+
+        if (typeof(item.min) === 'number' || typeof(item.max) === 'number') {
+          item.rules.push({
             validator: (rule, value, callback) => {
-              if (/--/ig.test(value)) {
-                callback('涓嶅彲浣跨敤 -- 锛�')
+              if (isNaN(value)) {
+                callback()
+              } else if (typeof(item.min) === 'number' && value < item.min) {
+                if (item.min < 1e-6) {
+                  if (item.min === 1e-6) {
+                    callback(item.label + '鏈�灏忓�间负 0.000001')
+                  } else if (item.min === 1e-7) {
+                    callback(item.label + '鏈�灏忓�间负 0.0000001')
+                  } else if (item.min === 1e-8) {
+                    callback(item.label + '鏈�灏忓�间负 0.00000001')
+                  } else if (item.min === 1e-9) {
+                    callback(item.label + '鏈�灏忓�间负 0.000000001')
+                  } else if (item.min === 1e-10) {
+                    callback(item.label + '鏈�灏忓�间负 0.0000000001')
+                  } else if (item.min === 1e-11) {
+                    callback(item.label + '鏈�灏忓�间负 0.00000000001')
+                  } else {
+                    callback(item.label + '鏈�灏忓�间负 ' + item.min)
+                  }
+                } else {
+                  callback(item.label + '鏈�灏忓�间负 ' + item.min)
+                }
+              } else if (typeof(item.max) === 'number' && value > item.max) {
+                callback(item.label + '鏈�澶у�间负 ' + item.max)
               } else {
                 callback()
               }
             }
+          })
+        }
+      } else if (item.type === 'textarea') {
+        if (item.required === 'true') {
+          item.rules.push({
+            required: true,
+            message: item.label + '涓嶅彲涓虹┖!'
+          })
+        }
+
+        item.rules.push({
+          validator: (rule, value, callback) => {
+            if (/'/.test(value)) {
+              callback('涓嶅彲浣跨敤鑻辨枃鐘舵�佺殑鍗曞紩鍙凤紒')
+            } else if (/--/.test(value)) {
+              callback('涓嶅彲浣跨敤 -- 锛�')
+            } else {
+              callback()
+            }
           }
-        ]
-        item.rules = _rules
+        }, {
+          max: item.fieldlength,
+          message: formRule.input.formMessage.replace('@max', item.fieldlength)
+        })
       } else if (item.type === 'brafteditor') {
-        item.rules = [
-          {
-            required: item.required === 'true',
+        if (item.required === 'true') {
+          item.rules.push({
+            required: true,
             message: item.label + '涓嶅彲涓虹┖!'
-          },
-          {
-            max: item.fieldlength,
-            message: formRule.input.formMessage.replace('@max', item.fieldlength)
-          }
-        ]
+          })
+        }
+
+        item.rules.push({
+          max: item.fieldlength,
+          message: formRule.input.formMessage.replace('@max', item.fieldlength)
+        })
       } else if (item.type === 'linkMain' || item.type === 'vercode') {
-        item.rules = [
-          {
-            required: item.required === 'true',
+        if (item.required === 'true') {
+          item.rules.push({
+            required: true,
             message: item.label + '涓嶅彲涓虹┖!'
-          }
-        ]
+          })
+        }
       } else {
-        item.rules = [
-          {
-            required: item.required === 'true',
+        if (item.required === 'true') {
+          item.rules.push({
+            required: true,
             message: '璇烽�夋嫨' + item.label + '!'
-          }
-        ]
+          })
+        }
+      }
+
+      if (item.rules.length === 0) {
+        item.rules = null
       }
 
       fieldMap.set(item.field, item)
@@ -530,6 +569,18 @@
             reFieldsVal[n.field] = val || ''
           })
         } else if (item.type === 'fileupload') {
+          item.options = []
+          item.subFields = []
+          item.linkSubField.forEach(m => {
+            let n = fieldMap.get(m)
+            if (n && ['text', 'number', 'textarea'].includes(n.type)) {
+              item.subFields.push({
+                uuid: n.uuid,
+                field: m
+              })
+            }
+          })
+        } else if (item.type === 'popSelect') {
           item.options = []
           item.subFields = []
           item.linkSubField.forEach(m => {
@@ -1002,22 +1053,6 @@
     })
   }
 
-  handleConfirmPassword = (rule, value, callback, item) => {
-    let val = parseFloat(value)
-
-    if (!isNaN(val)) {
-      if (typeof(item.min) === 'number' && val < item.min) {
-        callback(item.label + '鏈�灏忓�间负 ' + item.min)
-      } else if (typeof(item.max) === 'number' && val > item.max) {
-        callback(item.label + '鏈�澶у�间负 ' + item.max)
-      } else {
-        callback()
-      }
-    } else {
-      callback()
-    }
-  }
-
   recordChange = (values, item) => {
     this.record = {...this.record, ...values}
 
@@ -1124,6 +1159,8 @@
           content = (<MKNumberInput config={item} onChange={(val, defer) => !defer && this.recordChange({[item.field]: val})} onSubmit={this.props.inputSubmit} />)
         } else if (item.type === 'select' || item.type === 'link' || item.type === 'multiselect') {
           content = (<MKSelect config={item} onChange={(val, other) => this.recordChange({[item.field]: val, ...other}, item)} onSubmit={this.props.inputSubmit} />)
+        } else if (item.type === 'popSelect') {
+          content = (<MKPopSelect config={item} BID={this.props.BID} ID={this.state.ID} onChange={(val, other) => this.recordChange({[item.field]: val, ...other}, item)} onSubmit={this.props.inputSubmit} />)
         } else if (item.type === 'cascader') {
           content = (<MkCascader config={item} onChange={(val, other) => this.recordChange({[item.field]: val, ...other}, item)}/>)
         } else if (item.type === 'color') {
@@ -1218,7 +1255,19 @@
             _item.value = _item.value.replace(/\t+|\v+/g, '')       // 鍘婚櫎鍒惰〃绗�
     
             if (item.interception !== 'false') {                    // 鍘婚櫎棣栧熬绌烘牸
-              _item.value = _item.value.replace(/(^\s*|\s*$)/g, '')
+              if (item.interception === 'func') {
+                try {
+                  // eslint-disable-next-line
+                  let func = new Function('value', 'data', item.func)
+                  _item.value = func(_item.value, record)
+                  _item.value = _item.value !== undefined ? _item.value : ''
+                } catch (e) {
+                  console.warn(e)
+                  _item.value = ''
+                }
+              } else {
+                _item.value = _item.value.replace(/(^\s*|\s*$)/g, '')
+              }
             }
             if (item.type === 'text' && /@appkey@|@SessionUid@|@bid@/ig.test(_item.value)) { // 鐗规畩瀛楁鏇挎崲
               _item.value = _item.value.replace(/^(\s*)@appkey@(\s*)$/ig, window.GLOB.appkey).replace(/^(\s*)@SessionUid@(\s*)$/ig, (localStorage.getItem('SessionUid') || '')).replace(/^(\s*)@bid@(\s*)$/ig, (this.props.BID || ''))

--
Gitblit v1.8.0