From f068c617b918fc7817c11724424cb1a9149ec3a2 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期四, 09 一月 2020 16:51:10 +0800
Subject: [PATCH] 2020-01-09

---
 src/tabviews/tableshare/mutilform/index.jsx |   34 ++++++++++++++++++++++++++++++----
 1 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/src/tabviews/tableshare/mutilform/index.jsx b/src/tabviews/tableshare/mutilform/index.jsx
index a4750de..83fe6a0 100644
--- a/src/tabviews/tableshare/mutilform/index.jsx
+++ b/src/tabviews/tableshare/mutilform/index.jsx
@@ -2,6 +2,7 @@
 import PropTypes from 'prop-types'
 import { Form, Row, Col, Input, InputNumber, Select, DatePicker, notification } from 'antd'
 import moment from 'moment'
+import { formRule } from '@/utils/option.js'
 import Utils from '@/utils/utils.js'
 import FileUpload from '../fileupload'
 import './index.scss'
@@ -57,6 +58,8 @@
       })
     }
 
+    let _inputfields = formlist.filter(item => item.type === 'text' || item.type === 'number') // 鐢ㄤ簬杩囨护涓嬫媺鑿滃崟鍏宠仈琛ㄥ崟
+
     formlist = formlist.map(item => {
       if (item.type === 'select' || item.type === 'link') {
         if (item.setAll === 'true') {
@@ -72,6 +75,11 @@
         }
 
         item.oriOptions = JSON.parse(JSON.stringify(item.options))
+
+        if (item.linkSubField && item.linkSubField.length > 0) {
+          let _fields = _inputfields.map(_item => _item.field)
+          item.linkSubField = item.linkSubField.filter(_item => _fields.includes(_item))
+        }
       }
 
       if (!/^date/.test(item.type) && this.props.data && this.props.data.hasOwnProperty(item.field)) {
@@ -154,7 +162,7 @@
     }
   }
 
-  selectChange = (_field, value) => {
+  selectChange = (_field, value, option) => {
     let formlist = JSON.parse(JSON.stringify(this.state.formlist))
 
     let subfields = []
@@ -168,6 +176,16 @@
       }
       return item
     })
+    
+    // 琛ㄥ崟鍒囨崲鏃讹紝鏇存柊鍏宠仈瀛楁
+    if (_field.type === 'select' && _field.linkSubField && _field.linkSubField.length > 0 && option.props.data) {
+      let _data = option.props.data
+      let fieldVal = {}
+      _field.linkSubField.forEach(subfield => {
+        fieldVal[subfield] = _data[subfield]
+      })
+      this.props.form.setFieldsValue(fieldVal)
+    }
 
     if (subfields.length === 0) return
 
@@ -225,6 +243,10 @@
                   {
                     required: item.required === 'true',
                     message: this.props.dict['form.required.input'] + item.label + '!'
+                  },
+                  {
+                    max: formRule.input.max,
+                    message: formRule.input.message
                   }
                 ]
               })(<Input placeholder="" autoComplete="off" disabled={item.readonly === 'true'} onPressEnter={this.handleSubmit} />)}
@@ -264,6 +286,11 @@
           </Col>
         )
       } else if (item.type === 'select' || item.type === 'link') { // 涓嬫媺鎼滅储
+        let hasSubField = false
+        if (item.linkSubField && item.linkSubField.length > 0) { // 瀛樺湪鍏宠仈瀛楁锛屾暟鎹瓨鍌�
+          hasSubField = true
+        }
+
         fields.push(
           <Col span={24 / cols} key={index}>
             <Form.Item label={item.label}>
@@ -279,11 +306,10 @@
                 <Select
                   showSearch
                   filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
-                  onChange={(value) => {this.selectChange(item, value)}}
-                  // getPopupContainer={() => document.getElementById('form-box')}
+                  onChange={(value, option) => {this.selectChange(item, value, option)}}
                 >
                   {item.options.map(option =>
-                    <Select.Option id={option.key} title={option.Text} key={option.key} value={option.Value}>{option.Text}</Select.Option>
+                    <Select.Option id={option.key} data={hasSubField ? option : ''} title={option.Text} key={option.key} value={option.Value}>{option.Text}</Select.Option>
                   )}
                 </Select>
               )}

--
Gitblit v1.8.0