From 49d0886f6855f1fb1c628b8205a8ae299aa3db09 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期四, 14 七月 2022 18:05:28 +0800
Subject: [PATCH] 2022-07-14

---
 src/tabviews/zshare/mutilform/index.jsx |   73 +++++++++++++++++++++++++++++++-----
 1 files changed, 63 insertions(+), 10 deletions(-)

diff --git a/src/tabviews/zshare/mutilform/index.jsx b/src/tabviews/zshare/mutilform/index.jsx
index e75b9b7..ca9344d 100644
--- a/src/tabviews/zshare/mutilform/index.jsx
+++ b/src/tabviews/zshare/mutilform/index.jsx
@@ -26,6 +26,7 @@
 const MKFileUpload = asyncComponent(() => import('../fileupload'))
 const MKColor = asyncComponent(() => import('./mkColor'))
 const MkFormula = asyncComponent(() => import('./mkFormula'))
+const MkCascader = asyncComponent(() => import('./mkCascader'))
 const MKEditor = asyncComponent(() => import('@/components/editor'))
 
 class MainSearch extends Component {
@@ -99,7 +100,7 @@
         item.precision = 'second'
       }
 
-      if (!item.field || !['text', 'number', 'switch', 'rate', 'select', 'link', 'linkMain', 'funcvar', 'date', 'datemonth', 'radio', 'checkbox', 'checkcard', 'fileupload', 'textarea', 'multiselect', 'brafteditor', 'color'].includes(item.type)) return false
+      if (!item.field || !['text', 'number', 'switch', 'rate', 'select', 'link', 'cascader', 'linkMain', 'funcvar', 'date', 'datemonth', 'radio', 'checkbox', 'checkcard', 'fileupload', 'textarea', 'multiselect', 'brafteditor', 'color'].includes(item.type)) return false
 
       if (/^\s+$/.test(item.label)) {
         item.style = item.style || {}
@@ -124,7 +125,7 @@
         item.initval = item.initval || 0
       }
 
-      if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect'].includes(item.type)) {
+      if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect', 'cascader'].includes(item.type)) {
         item.options = item.options || []
         item.options = item.options.filter(cell => {
           cell.value = cell.Value
@@ -206,7 +207,7 @@
         item.initval = ''
       }
 
-      if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect'].includes(item.type) && item.resourceType === '1') {
+      if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect', 'cascader'].includes(item.type) && item.resourceType === '1') {
         deForms.push(item)
       } else if (item.type === 'rate') {
         item.rateCount = item.rateCount || 5
@@ -236,8 +237,13 @@
           pattern: /^[^']*$/ig,
           message: '涓嶅彲浣跨敤鑻辨枃鐘舵�佺殑鍗曞紩鍙凤紒'
         }, {
-          pattern: /^[^--]*$/ig,
-          message: '涓嶅彲浣跨敤 -- 锛�'
+          validator: (rule, value, callback) => {
+            if (/--/ig.test(value)) {
+              callback('涓嶅彲浣跨敤 -- 锛�')
+            } else {
+              callback()
+            }
+          }
         }, {
           required: item.required === 'true',
           message: item.label + '涓嶅彲涓虹┖!'
@@ -308,8 +314,13 @@
             pattern: /^[^']*$/ig,
             message: '涓嶅彲浣跨敤鑻辨枃鐘舵�佺殑鍗曞紩鍙凤紒'
           }, {
-            pattern: /^[^--]*$/ig,
-            message: '涓嶅彲浣跨敤 -- 锛�'
+            validator: (rule, value, callback) => {
+              if (/--/ig.test(value)) {
+                callback('涓嶅彲浣跨敤 -- 锛�')
+              } else {
+                callback()
+              }
+            }
           })
         }
         item.rules = _rules
@@ -407,6 +418,9 @@
           item.options = fromJS(item.oriOptions).toJS()
         }
         item.linkSubField = null
+      } else if (item.type === 'cascader' && item.fillField) {
+        let n = fieldMap.get(item.fillField)
+        item.fillFieldId = n ? n.uuid : ''
       }
 
       // if (item.type === 'link') {
@@ -422,7 +436,7 @@
         item.options = item.oriOptions.filter(option => option.ParentID === item.supInitVal || option.value === '')
       }
 
-      if (['select', 'link', 'radio'].includes(item.type) && item.resourceType !== '1') { // 閫変腑绗竴椤�
+      if (['select', 'link', 'radio'].includes(item.type) && item.resourceType === '0') { // 閫変腑绗竴椤�
         if (typeof(item.initval) === 'string' && item.initval.indexOf('$first') > -1) {
           item.initval = item.options[0] ? item.options[0].value : ''
         }
@@ -457,6 +471,23 @@
           item.subFields.forEach(n => {
             reFieldsVal[n.field] = option[n.field]
           })
+        }
+      } else if (item.fillField && item.initval && item.separator && item.options.length > 0) {
+        let initvals = item.initval.split(item.separator)
+        let label = []
+        initvals.forEach(m => {
+          // eslint-disable-next-line
+          let option = item.options.filter(cell => m == cell.value)[0]
+          if (option) {
+            label.push(option.label)
+          }
+        })
+
+        label = label.join(item.separator)
+
+        if (label) {
+          reFieldsVal = reFieldsVal || {}
+          reFieldsVal[item.fillField] = label
         }
       }
       
@@ -660,7 +691,7 @@
   resetFormList = (result) => {
     let reFieldsVal = null
     let _formlist = fromJS(this.state.formlist).toJS().map(item => {
-      if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect'].includes(item.type) && result[item.field] && result[item.field].length > 0) {
+      if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect', 'cascader'].includes(item.type) && result[item.field] && result[item.field].length > 0) {
         let options = []
         result[item.field].forEach(cell => {
           let _cell = { key: Utils.getuuid() }
@@ -715,6 +746,23 @@
               reFieldsVal[n.field] = option[n.field]
             })
           }
+        } else if (item.fillField && item.initval && item.separator && item.options.length > 0) {
+          let initvals = item.initval.split(item.separator)
+          let label = []
+          initvals.forEach(m => {
+            // eslint-disable-next-line
+            let option = item.options.filter(cell => m == cell.value)[0]
+            if (option) {
+              label.push(option.label)
+            }
+          })
+  
+          label = label.join(item.separator)
+  
+          if (label) {
+            reFieldsVal = reFieldsVal || {}
+            reFieldsVal[item.fillField] = label
+          }
         }
       }
       
@@ -749,9 +797,12 @@
         callback(item.label + '鏈�灏忓�间负 ' + item.min)
       } else if (typeof(item.max) === 'number' && val > item.max) {
         callback(item.label + '鏈�澶у�间负 ' + item.max)
+      } else {
+        callback()
       }
+    } else {
+      callback()
     }
-    callback()
   }
 
   recordChange = (values, item) => {
@@ -840,6 +891,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 === 'cascader') {
+          content = (<MkCascader config={item} onChange={(val, other) => this.recordChange({[item.field]: val, ...other}, item)}/>)
         } else if (item.type === 'color') {
           content = (<MKColor config={item} onChange={(val) => this.recordChange({[item.field]: val})}/>)
         } else if (item.type === 'checkcard') {

--
Gitblit v1.8.0