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/components/normalform/modalform/index.jsx |   43 ++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 38 insertions(+), 5 deletions(-)

diff --git a/src/components/normalform/modalform/index.jsx b/src/components/normalform/modalform/index.jsx
index eb177a9..7ce6bc5 100644
--- a/src/components/normalform/modalform/index.jsx
+++ b/src/components/normalform/modalform/index.jsx
@@ -45,6 +45,8 @@
       
       item.hidden = false
 
+      if (item.forbid && item.del) return false
+
       if (item.forbid) {
         item.hidden = true
       }
@@ -104,6 +106,12 @@
       if (!fieldMap.has(key)) return
 
       let supItem = fieldMap.get(key)
+      let supval = supItem.initval
+
+      if (supItem.initval && supItem.type !== 'checkbox' && JSON.stringify(supItem.initval) === '[]') {
+        supval = ''
+      }
+
       let fields = []
       controlFields[key].forEach(item => {
         if (!fieldMap.has(item.field)) return
@@ -117,15 +125,16 @@
         } else if (supItem.hidden) {
           cell.hidden = true
         } else if (supItem.type === 'checkbox') {
-          let vals = [...supItem.initval, ...item.values]
+          let vals = [...supval, ...item.values]
           if (vals.length === new Set(vals).size) {
             cell.hidden = true
           }
         } else if (item.notNull) {
-          cell.hidden = !supItem.initval || JSON.stringify(supItem.initval) === '[]'
-        } else if (!item.values.includes(supItem.initval)) {
+          cell.hidden = !supval
+        } else if (!item.values.includes(supval)) {
           cell.hidden = true
         }
+
         fieldMap.set(item.field, cell)
 
         fields.push(item)
@@ -169,7 +178,9 @@
   recordChange = (values, item) => {
     this.record = {...this.record, ...values}
 
-    if (item && item.controlFields) {
+    if (!item) return
+    
+    if (item.controlFields) {
       let map = new Map()
       this.state.formlist.forEach(cell => {
         if (!cell.field) return
@@ -178,6 +189,10 @@
 
       let reset = (current) => {
         let val = this.record[current.field]
+
+        if (val && current.type !== 'checkbox' && JSON.stringify(val) === '[]') {
+          val = ''
+        }
 
         current.controlFields.forEach(cell => {
           let m = map.get(cell.field)
@@ -192,7 +207,7 @@
               m.hidden = true
             }
           } else if (cell.notNull) {
-            m.hidden = !val || JSON.stringify(val) === '[]'
+            m.hidden = !val
           } else {
             m.hidden = !cell.values.includes(val)
           }
@@ -226,6 +241,24 @@
           return item || cell
         })
       })
+    } else if (item.reset_source) {
+      let map = new Map()
+      this.state.formlist.forEach(cell => {
+        if (!cell.field) return
+        map.set(cell.field, cell)
+      })
+
+      item.callback(map, this.record)
+
+      this.setState({
+        formlist: this.state.formlist.map(cell => {
+          if (!cell.field) return cell
+
+          let item = map.get(cell.field)
+
+          return item || cell
+        })
+      })
     }
   }
 

--
Gitblit v1.8.0