From 08cce3334a2dc81d690b518136b0aaea64e48b0b Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 14 六月 2023 09:55:50 +0800
Subject: [PATCH] 2023-06-14

---
 src/tabviews/zshare/mutilform/index.jsx |   87 +++++++++++++++++++++++++++++++++++--------
 1 files changed, 71 insertions(+), 16 deletions(-)

diff --git a/src/tabviews/zshare/mutilform/index.jsx b/src/tabviews/zshare/mutilform/index.jsx
index a1ea659..067bfd2 100644
--- a/src/tabviews/zshare/mutilform/index.jsx
+++ b/src/tabviews/zshare/mutilform/index.jsx
@@ -19,6 +19,7 @@
 
 const MKCheckCard = asyncComponent(() => import('./mkCheckCard'))
 const MKSwitch = asyncComponent(() => import('./mkSwitch'))
+const MKCheck = asyncComponent(() => import('./mkCheck'))
 const MKCheckbox = asyncComponent(() => import('./mkCheckbox'))
 const MKRadio = asyncComponent(() => import('./mkRadio'))
 const MKDatePicker = asyncComponent(() => import('./mkDatePicker'))
@@ -117,18 +118,20 @@
         }
         delete item.field
         return true
-      } else if (item.type === 'date') { // 鏃堕棿鎼滅储
+      } else if (item.type === 'date') {
         item.precision = item.precision || 'day'
       } else if (item.type === 'datetime') {
         item.type = 'date'
         item.precision = 'second'
       }
 
-      if (!item.field || !['text', 'number', 'switch', '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', '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 || {}
-        item.style.color = 'transparent'
+        item.style.opacity = 0
+        item.style.width = 1
+        item.style.display = 'inline-block'
       }
 
       // 鏁版嵁鑷姩濉厖
@@ -175,6 +178,19 @@
         if (item.empty === 'hidden' && item.oriOptions.length === 0) {
           item.hidden = true
         }
+        if (item.type === 'checkcard' && item.readonly && item.unchecked === 'hidden') {
+          let selectKeys = item.initval
+          if (item.multiple === 'true') {
+            selectKeys = selectKeys ? selectKeys.split(',') : []
+            item.options = item.options.filter(item => selectKeys.includes(item.$value))
+          } else {
+            item.options = item.options.filter(item => selectKeys === item.$value)
+          }
+          item.oriOptions = fromJS(item.options).toJS()
+          if (item.options.length === 0) {
+            item.hidden = true
+          }
+        }
       }
 
       let newval = '$empty'
@@ -205,7 +221,7 @@
         if (newval === '$empty' && item.initval) {
           newval = moment().subtract(item.initval, 'month').format('YYYY-MM')
         }
-      } else if (item.type === 'switch') { // 寮�鍏冲彧鎺ユ敹鍥哄畾鍊�
+      } else if (item.type === 'switch' || item.type === 'check') { // 寮�鍏冲嬀閫夋鍙帴鏀跺浐瀹氬��
         if (newval !== '$empty' && (newval === item.closeVal || newval === item.openVal)) {
 
         } else if (item.initval === true) {
@@ -397,10 +413,13 @@
 
         let cell = fieldMap.get(item.field)
 
-        if (cell.hidden) return
-
+        // if (cell.hidden) return
+        
         if (supItem.hidden || !item.values.includes(supItem.initval)) {
           cell.hidden = true
+          if (cell.empty === 'hidden') {
+            cell.$hidden = true
+          }
           fieldMap.set(item.field, cell)
         }
 
@@ -464,7 +483,7 @@
       }
 
       if (['select', 'link', 'radio'].includes(item.type)) { // 閫変腑绗竴椤�
-        if (typeof(item.initval) === 'string' && item.initval.indexOf('$first') > -1) {
+        if (/^\s*\$first\s*$/.test(item.initval)) {
           item.$first = true
           item.initval = ''
         }
@@ -527,9 +546,17 @@
       if (unload) return
       
       if (action.setting && action.setting.focus && fieldMap.has(action.setting.focus)) {
-        setTimeout(() => {
-          MKEmitter.emit('mkFC', 'focus', fieldMap.get(action.setting.focus).uuid)
-        }, 500)
+        let focusItem = fieldMap.get(action.setting.focus)
+
+        if (focusItem.type === 'text' || focusItem.type === 'number') {
+          setTimeout(() => {
+            MKEmitter.emit('mkFC', 'focus', focusItem.uuid)
+          }, 50)
+        } else {
+          setTimeout(() => {
+            MKEmitter.emit('mkFC', 'focus', focusItem.uuid)
+          }, 500)
+        }
       }
 
       if (deForms.length > 0) {
@@ -568,6 +595,9 @@
         if (debug) {
           console.info(sql)
         }
+
+        sql = sql.replace(/%/ig, ' mpercent ')
+        
         mainItems.push(`select '${item.field}' as obj_name,'${item.arr_field}' as arr_field,'${window.btoa(window.encodeURIComponent(sql))}' as LText`)
       } else {
         let sql = _sql + item.base_sql
@@ -579,6 +609,9 @@
         if (debug) {
           console.info(sql)
         }
+
+        sql = sql.replace(/%/ig, ' mpercent ')
+
         localItems.push(`select '${item.field}' as obj_name,'${item.arr_field}' as arr_field,'${window.btoa(window.encodeURIComponent(sql))}' as LText`)
       }
     })
@@ -821,8 +854,23 @@
           }
         }
 
-        if (item.empty === 'hidden' && item.oriOptions.length > 0) {
+        if (item.empty === 'hidden' && item.oriOptions.length > 0 && !item.$hidden) {
           item.hidden = false
+        }
+        if (item.type === 'checkcard' && item.readonly && item.unchecked === 'hidden') {
+          let selectKeys = item.initval
+          if (item.multiple === 'true') {
+            selectKeys = selectKeys ? selectKeys.split(',') : []
+            item.options = item.options.filter(item => selectKeys.includes(item.$value))
+          } else {
+            item.options = item.options.filter(item => selectKeys === item.$value)
+          }
+          item.oriOptions = fromJS(item.options).toJS()
+          if (item.options.length === 0) {
+            item.hidden = true
+          } else {
+            item.hidden = false
+          }
         }
       }
       
@@ -882,6 +930,10 @@
       current.controlFields.forEach(cell => {
         let m = map.get(cell.field)
         m.hidden = current.hidden || !cell.values.includes(val)
+
+        if (m.empty === 'hidden' && m.oriOptions.length === 0) {
+          m.hidden = true
+        }
 
         if (m.hidden) {
           m.initval = this.record[m.field]
@@ -960,6 +1012,8 @@
           content = (<MKCheckCard config={item} onChange={(val, other) => this.recordChange({[item.field]: val, ...other}, item)}/>)
         } else if (item.type === 'switch') {
           content = (<MKSwitch config={item} onChange={(val) => this.recordChange({[item.field]: val}, item)}/>)
+        } else if (item.type === 'check') {
+          content = (<MKCheck config={item} onChange={(val) => this.recordChange({[item.field]: val}, item)}/>)
         } else if (item.type === 'checkbox') {
           content = (<MKCheckbox config={item} onChange={(val) => this.recordChange({[item.field]: val})}/>)
         } else if (item.type === 'radio') {
@@ -1027,7 +1081,8 @@
             readin: item.readin,
             writein: item.writein,
             fieldlen: item.fieldlength,
-            key: item.field
+            key: item.field,
+            isconst: item.constant === 'true'
           }
     
           _item.value = record[item.field] !== undefined ? record[item.field] : ''
@@ -1054,10 +1109,10 @@
                 _item.value = _item.value.slice(-item.fieldlength)
               }
             }
-          } else if (item.type.indexOf('date') > -1) {
-            if (item.declareType === 'nvarchar(50)') {
-              _item.type = 'text'
-            }
+          } else if (item.type === 'datemonth') {
+            _item.type = 'text'
+          } else  if (item.type === 'date') {
+            _item.type = item.declareType === 'nvarchar(50)' ? 'text' : 'date'
           } else if (item.type === 'vercode') {
             _item.type = 'text'
             forms.push({

--
Gitblit v1.8.0