From 75623dd039b742dbb44fb4c6b4af563404ed9c7f Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期一, 03 二月 2020 16:06:04 +0800
Subject: [PATCH] 2020-02-03

---
 src/tabviews/tableshare/mutilform/index.jsx |  115 ++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 73 insertions(+), 42 deletions(-)

diff --git a/src/tabviews/tableshare/mutilform/index.jsx b/src/tabviews/tableshare/mutilform/index.jsx
index 064cd74..b56eea3 100644
--- a/src/tabviews/tableshare/mutilform/index.jsx
+++ b/src/tabviews/tableshare/mutilform/index.jsx
@@ -15,6 +15,7 @@
     action: PropTypes.object,    // 鎸夐挳淇℃伅銆佽〃鍗曞垪琛�
     dict: PropTypes.object,      // 瀛楀吀椤�
     data: PropTypes.any,         // 琛ㄦ牸鏁版嵁
+    BData: PropTypes.any,        // 涓昏〃鏁版嵁
     configMap: PropTypes.object, // 鎸夐挳鍙婁笅鎷夎〃鍗曢厤缃俊鎭泦
     inputSubmit: PropTypes.func  // input鍥炶溅鎻愪氦
   }
@@ -26,7 +27,7 @@
   }
 
   componentDidMount () {
-    const { data } = this.props
+    const { data, BData } = this.props
     let action = JSON.parse(JSON.stringify(this.props.action))
 
     let datatype = {}
@@ -83,7 +84,9 @@
         }
       }
 
-      if (!/^date/.test(item.type) && this.props.data && this.props.data.hasOwnProperty(item.field)) {
+      if (item.type === 'linkMain' && BData && BData.hasOwnProperty(item.field)) {
+        item.initval = BData[item.field]
+      } else if (!/^date/.test(item.type) && this.props.data && this.props.data.hasOwnProperty(item.field)) {
         item.initval = this.props.data[item.field]
       }
 
@@ -117,7 +120,7 @@
         duration: 10
       })
     }
-
+    
     this.setState({
       readtype: readtype,
       datatype: datatype,
@@ -139,7 +142,7 @@
     })
   }
 
-  resetform = (formlist, supfields, index) => {
+  resetform = (formlist, supfields, index, fieldsvalue) => {
     index++
     let subfields = []
 
@@ -148,7 +151,8 @@
         if (item.type === 'link' && item.linkField === supfield.field) {
           item.options = item.oriOptions.filter(option => option.parentId === supfield.initval)
           item.initval = item.options[0] ? item.options[0].Value : ''
-          item.hiden = true
+
+          fieldsvalue[item.field] = item.initval
   
           subfields.push(item)
         }
@@ -157,9 +161,10 @@
     })
 
     if (subfields.length === 0 || index > 6) {
+      this.props.form.setFieldsValue(fieldsvalue)
       return formlist
     } else {
-      return this.resetform(formlist, subfields, index)
+      return this.resetform(formlist, subfields, index, fieldsvalue)
     }
   }
 
@@ -167,11 +172,13 @@
     let formlist = JSON.parse(JSON.stringify(this.state.formlist))
 
     let subfields = []
+    let fieldsvalue = {}
     formlist = formlist.map(item => {
       if (item.type === 'link' && item.linkField === _field.field) {
         item.options = item.oriOptions.filter(option => option.parentId === value)
         item.initval = item.options[0] ? item.options[0].Value : ''
-        item.hiden = true
+
+        fieldsvalue[item.field] = item.initval
 
         subfields.push(item)
       }
@@ -190,28 +197,22 @@
 
     if (subfields.length === 0) return
 
-    formlist = this.resetform(formlist, subfields, 0)
+    formlist = this.resetform(formlist, subfields, 0, fieldsvalue)
+
     this.setState({
       formlist: formlist
-    }, () => {
-      this.setState({
-        formlist: formlist.map(item => {
-          item.hiden = false
-          return item
-        })
-      })
     })
   }
 
-  handleInputNumber = (rule, value, callback, item) => {
-    if (item.required === 'true' && (!value && value !== 0)) {
-      callback()
-    } else if ((item.min || item.min === 0) && (value || value === 0) && value < item.min) {
-      callback(item.label + '鏈�灏忓�间负' + item.min + '!')
-    } else if ((item.max || item.max === 0) && (value || value === 0) && value > item.max) {
-      callback(item.label + '鏈�澶у�间负' + item.max + '!')
-    }
-  }
+  // handleInputNumber = (rule, value, callback, item) => {
+  //   if (item.required === 'true' && (!value && value !== 0)) {
+  //     callback(this.props.dict['form.required.input'] + item.label + '!')
+  //   } else if ((item.min || item.min === 0) && (value || value === 0) && value < item.min) {
+  //     callback(item.label + '鏈�灏忓�间负' + item.min + '!')
+  //   } else if ((item.max || item.max === 0) && (value || value === 0) && value > item.max) {
+  //     callback(item.label + '鏈�澶у�间负' + item.max + '!')
+  //   }
+  // }
 
   getFields() {
     const { getFieldDecorator } = this.props.form
@@ -226,8 +227,8 @@
     }
 
     this.state.formlist.forEach((item, index) => {
-      if ((!item.field && item.type !== 'title') || item.hiden) return
-
+      if ((!item.field && item.type !== 'title') || item.hidden === 'true') return
+      
       if (item.type === 'title') {
         fields.push(
           <Col span={24} key={index}>
@@ -259,13 +260,7 @@
         let max = (item.max || item.max === 0) ? item.max : Infinity
         let _initval = item.initval
         let precision = (item.decimal || item.decimal === 0) ? item.decimal : null
-        let rules = []
-        if ((item.min || item.min === 0) || (item.max || item.max === 0)) {
-          rules.push({
-            validator: (rule, value, callback) => {this.handleInputNumber(rule, value, callback, item)}
-          })
-        }
-        
+
         fields.push(
           <Col span={24 / cols} key={index}>
             <Form.Item label={item.label}>
@@ -275,13 +270,12 @@
                   {
                     required: item.required === 'true',
                     message: this.props.dict['form.required.input'] + item.label + '!'
-                  },
-                  ...rules
+                  }
                 ]
               })(
                 precision === null ?
-                <InputNumber initialValue={_initval} min={min} max={max} disabled={item.readonly === 'true'} onPressEnter={this.handleSubmit} /> :
-                <InputNumber initialValue={_initval} min={min} max={max} precision={precision} disabled={item.readonly === 'true'} onPressEnter={this.handleSubmit} />
+                <InputNumber min={min} max={max} disabled={item.readonly === 'true'} onPressEnter={this.handleSubmit} /> :
+                <InputNumber min={min} max={max} precision={precision} disabled={item.readonly === 'true'} onPressEnter={this.handleSubmit} />
                 )}
             </Form.Item>
           </Col>
@@ -291,7 +285,7 @@
         if (item.linkSubField && item.linkSubField.length > 0) { // 瀛樺湪鍏宠仈瀛楁锛屾暟鎹瓨鍌�
           hasSubField = true
         }
-
+        
         fields.push(
           <Col span={24 / cols} key={index}>
             <Form.Item label={item.label}>
@@ -452,16 +446,32 @@
             </Form.Item>
           </Col>
         )
-      } else if (item.type === 'funcvar') {
+      } else if (item.type === 'linkMain') {
         fields.push(
           <Col span={24 / cols} key={index}>
             <Form.Item label={item.label}>
               {getFieldDecorator(item.field, {
-                initialValue: item.linkfield || '',
+                initialValue: item.initval,
+                rules: [
+                  {
+                    required: item.required === 'true',
+                    message: this.props.dict['form.required.input'] + item.label + '!'
+                  }
+                ]
               })(<Input placeholder="" autoComplete="off" disabled={item.readonly === 'true'} />)}
             </Form.Item>
           </Col>
         )
+      } else if (item.type === 'funcvar') {
+        // fields.push(
+        //   <Col span={24 / cols} key={index}>
+        //     <Form.Item label={item.label}>
+        //       {getFieldDecorator(item.field, {
+        //         initialValue: item.linkfield || '',
+        //       })(<Input placeholder="" autoComplete="off" disabled={item.readonly === 'true'} />)}
+        //     </Form.Item>
+        //   </Col>
+        // )
       } else if (item.type === 'textarea') {
         let _labelcol = cols !== 3 ? 8 / cols : 3
         let _wrapcol = cols !== 3 ? 16 + (cols - 1) * 4 : 21
@@ -500,6 +510,27 @@
       this.props.form.validateFieldsAndScroll((err, values) => {
         if (!err) {
           let search = []
+          // 闅愯棌琛ㄥ崟
+          this.state.formlist.forEach(item => {
+            if (!item.field) return
+
+            if (item.type === 'funcvar') {
+              search.push({
+                type: 'funcvar',
+                readonly: 'true',
+                key: item.field,
+                value: ''
+              })
+            } else if (item.hidden === 'true') {
+              search.push({
+                type: this.state.datatype[item.field],
+                readonly: this.state.readtype[item.field],
+                key: item.field,
+                value: item.initval
+              })
+            }
+          })
+
           Object.keys(values).forEach(key => {
             if (this.state.datatype[key] === 'datetime') {
               let _value = ''
@@ -550,8 +581,8 @@
               })
             } else if (this.state.datatype[key] === 'fileupload') {
               let vals = []
-              
-              if (values[key].length > 0) {
+
+              if (values[key] && values[key].length > 0) {
                 values[key].forEach(_val => {
                   if (_val.origin && _val.url) {
                     vals.push(_val.url)

--
Gitblit v1.8.0