From 6ca240a14ccf55d4e0a94fff77e95f64db2cdfcc Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 11 十月 2024 17:34:25 +0800
Subject: [PATCH] 2024-10-11

---
 src/components/normalform/modalform/index.jsx |   52 +++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 47 insertions(+), 5 deletions(-)

diff --git a/src/components/normalform/modalform/index.jsx b/src/components/normalform/modalform/index.jsx
index c685080..0ab789f 100644
--- a/src/components/normalform/modalform/index.jsx
+++ b/src/components/normalform/modalform/index.jsx
@@ -32,6 +32,7 @@
 
   state = {
     formlist: [],    // 琛ㄥ崟椤�
+    formId: ''
   }
 
   record = {}
@@ -40,6 +41,15 @@
     let record = {}
     let controlFields = {}
     let fieldMap = new Map()
+    let formId = (() => {
+      let uuid = []
+      let _options = '0123456789abcdefghigklmnopqrstuv'
+      for (let i = 0; i < 19; i++) {
+        uuid.push(_options.substr(Math.floor(Math.random() * 0x20), 1))
+      }
+      uuid = uuid.join('')
+      return uuid
+    })()
 
     let formlist = this.props.formlist.filter(item => {
       if (item.controlFields) { // 澶氬眰琛ㄥ崟鎺у埗
@@ -56,6 +66,7 @@
       if (item.options) {
         item.oriOptions = fromJS(item.options).toJS()
       }
+      item.$formId = formId
 
       if (item.type === 'text') {
         let _rules = [{
@@ -121,10 +132,11 @@
 
         let cell = fieldMap.get(item.field)
 
-        if (cell.hidden) return
+        cell.$ctrls = cell.$ctrls || []
+        cell.$ctrls.push(key)
 
-        if (cell.skip && supItem.forbid) { // 涓婄骇琛ㄥ崟绂佺敤鏃讹紝姝よ〃鍗曚笉鍙楁帶鍒�
-
+        if (cell.hidden) {
+          
         } else if (supItem.hidden) {
           cell.hidden = true
         } else if (item.notNull) {
@@ -151,6 +163,10 @@
     formlist = formlist.map(cell => {
       let item = fieldMap.get(cell.field)
 
+      if (item.$ctrls && item.$ctrls.length === 1) {
+        delete item.$ctrls
+      }
+
       if (item.linkField) {
         let supInitVal = fieldMap.get(item.linkField).initval || ''
         
@@ -162,7 +178,7 @@
 
     this.record = record
 
-    this.setState({ formlist })
+    this.setState({ formlist, formId })
   }
 
   checkNumber = (rule, value, callback, item) => {
@@ -217,6 +233,32 @@
             }
           } else {
             m.hidden = !cell.values.includes(val)
+          }
+
+          if (!m.hidden && m.$ctrls) {
+            m.$ctrls.forEach(n => {
+              if (n === current.field || m.hidden) return
+
+              let oth = map.get(n)
+              let _val = this.record[n]
+
+              if (_val && JSON.stringify(_val) === '[]') {
+                _val = ''
+              }
+
+              let p = oth.controlFields.filter(q => q.field === m.field)[0]
+
+              if (oth.hidden || (p.notNull && !_val)) {
+                m.hidden = true
+              } else if (oth.type === 'checkbox' || oth.type === 'multiselect') {
+                let _vals = [...(_val || []), ...p.values]
+                if (_vals.length === new Set(_vals).size) {
+                  m.hidden = true
+                }
+              } else if (!p.values.includes(_val)) {
+                m.hidden = true
+              }
+            })
           }
 
           if (m.hidden) {
@@ -385,7 +427,7 @@
     }
 
     return (
-      <Form {...formItemLayout} className="normal-form-field">
+      <Form {...formItemLayout} className="normal-form-field" id={this.state.formId}>
         <Row gutter={24}>{this.getFields()}</Row>
       </Form>
     )

--
Gitblit v1.8.0