From 8b9effb98612ee8a00d76d639a5733d12e9ecce6 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 13 十一月 2019 22:09:35 +0800
Subject: [PATCH] 2019-11-13

---
 src/components/sidemenu/comtableconfig/searchform/index.jsx |  160 +++++++++++++++++++++++++++++++++--------------------
 1 files changed, 99 insertions(+), 61 deletions(-)

diff --git a/src/components/sidemenu/comtableconfig/searchform/index.jsx b/src/components/sidemenu/comtableconfig/searchform/index.jsx
index 319edf9..3f03957 100644
--- a/src/components/sidemenu/comtableconfig/searchform/index.jsx
+++ b/src/components/sidemenu/comtableconfig/searchform/index.jsx
@@ -24,23 +24,48 @@
 
   openTypeChange = (key, value) => {
     if (key === 'type') {
+      let resourceType = this.state.formlist.filter(cell => cell.key === 'resourceType')[0].initVal
+      let _options = ['label', 'field', 'initval', 'type']
+      if (value === 'select' && resourceType === '0') {
+        _options = [..._options, ...['resourceType', 'setAll', 'options']]
+      } else if (value === 'select' && resourceType === '1') {
+        _options = [..._options, ...['resourceType', 'setAll', 'dataSource', 'valueField', 'valueText', 'orderBy', 'orderType']]
+      }
+      
       this.setState({
-        inputType: value,
-        selectType: 0
+        formlist: this.state.formlist.map(form => {
+          form.hidden = !_options.includes(form.key)
+          return form
+        })
       })
     }
   }
 
-  onChange = e => {
-    this.setState({
-      selectType: e.target.value
-    })
+  onChange = (e, key) => {
+    let value = e.target.value
+    if (key === 'resourceType') {
+      let _options = ['label', 'field', 'initval', 'type', 'resourceType', 'setAll']
+      if (value === '0') {
+        _options = [..._options, ...['options']]
+      } else if (value === '1') {
+        _options = [..._options, ...['dataSource', 'valueField', 'valueText', 'orderBy', 'orderType']]
+      }
+      
+      this.setState({
+        formlist: this.state.formlist.map(form => {
+          form.hidden = !_options.includes(form.key)
+          return form
+        })
+      })
+    }
   }
 
   getFields() {
     const { getFieldDecorator } = this.props.form
     const fields = []
-    this.props.formlist.forEach((item, index) => {
+    this.state.formlist.forEach((item, index) => {
+      if (item.hidden) return
+
       if (item.type === 'text') { // 鏂囨湰鎼滅储
         let placeholder = ''
         if (item.key === 'initval' && this.state.inputType === 'dateday') {
@@ -49,7 +74,7 @@
           placeholder = '渚嬶細' + moment().format('YYYY-MM-DD HH:mm:ss')
         }
         fields.push(
-          <Col span={24} key={index}>
+          <Col span={12} key={index}>
             <Form.Item label={item.label}>
               {getFieldDecorator(item.key, {
                 initialValue: item.initVal || '',
@@ -65,7 +90,7 @@
         )
       } else if (item.type === 'select') { // 涓嬫媺鎼滅储
         fields.push(
-          <Col span={24} key={index}>
+          <Col span={12} key={index}>
             <Form.Item label={item.label}>
               {getFieldDecorator(item.key, {
                 initialValue: item.initVal || '',
@@ -92,35 +117,47 @@
             </Form.Item>
           </Col>
         )
-        if (item.key === 'type' && this.state.inputType === 'select') {
-          fields.push(
-            <Col span={24} key={'radio' + index}>
-              <Form.Item label={'閫夐」'}>
-                <Radio.Group onChange={this.onChange} value={this.state.selectType}>
-                  <Radio value={0}>鑷畾涔�</Radio>
-                  <Radio value={1}>鏁版嵁婧�</Radio>
-                </Radio.Group>
-              </Form.Item>
-            </Col>
-          )
-          if (this.state.selectType === 0) {
-            fields.push(
-              <Col span={18} offset={6} key={'table' + index}>
-                <EditTable data={this.state.card.options} ref="editTable"/>
-              </Col>
-            )
-          } else {
-            fields.push(
-              <Col span={18} offset={6} key={'table' + index}>
-                <Form.Item className="text-area">
-                  {getFieldDecorator('datasource', {
-                    initialValue: ''
-                  })(<TextArea rows={4} />)}
-                </Form.Item>
-              </Col>
-            )
-          }
-        }
+      } else if (item.type === 'radio') {
+        fields.push(
+          <Col span={12} key={index}>
+            <Form.Item label={item.label}>
+              {getFieldDecorator(item.key, { initialValue: item.initVal })(
+                <Radio.Group onChange={(e) => {this.onChange(e, item.key)}}>
+                  {
+                    item.options.map(option => {
+                      return (
+                        <Radio key={option.MenuID} value={option.MenuID}>{option.text}</Radio>
+                      )
+                    })
+                  }
+                </Radio.Group>,
+              )}
+            </Form.Item>
+          </Col>
+        )
+        
+      } else if (item.type === 'textarea') {
+        fields.push(
+          <Col span={20} offset={4} key={index}>
+            <Form.Item className="text-area">
+              {getFieldDecorator(item.key, {
+                initialValue: item.initVal,
+                rules: [
+                  {
+                    required: !!item.required,
+                    message: this.props.dict['form.required.input'] + item.label + '!'
+                  }
+                ]
+              })(<TextArea rows={4} />)}
+            </Form.Item>
+          </Col>
+        )
+      } else if (item.type === 'options') {
+        fields.push(
+          <Col span={20} offset={4} key={index}>
+            <EditTable data={item.initVal} ref="editTable"/>
+          </Col>
+        )
       }
     })
     return fields
@@ -131,16 +168,15 @@
     return new Promise((resolve, reject) => {
       this.props.form.validateFieldsAndScroll((err, values) => {
         if (!err) {
-          if (this.state.inputType === 'select') {
-            values.resourceType = this.state.selectType
-            if (this.state.selectType === 0) {
-              values.options = this.refs.editTable.state.dataSource
-            } else {
-              values.options = []
-            }
+          if (values.type === 'select' && values.resourceType === '0') {
+            values.options = this.refs.editTable.state.dataSource
+            values.dataSource = ''
+          } else if (values.type === 'select' && values.resourceType === '1') {
+            values.options = []
           }
-          values.id = this.state.card.id
-          values.uuid = this.state.card.uuid
+
+          values.id = this.props.card.id
+          values.uuid = this.props.card.uuid
           resolve({
             type: 'search',
             values
@@ -154,19 +190,21 @@
 
   resetForm = (formlist) => {
     if (!formlist) return
-    let _item = formlist.filter(cell => cell.key === 'type')[0]
-    if (_item.initVal === 'select') {
-      this.setState({
-        inputType: 'select',
-        card: _item.card,
-        selectType: _item.card.resourceType
-      })
-    } else {
-      this.setState({
-        inputType: _item.card.type,
-        card: _item.card
-      })
+    let type = formlist.filter(cell => cell.key === 'type')[0].initVal
+    let resourceType = formlist.filter(cell => cell.key === 'resourceType')[0].initVal
+    let _options = ['label', 'field', 'initval', 'type']
+    if (type === 'select' && resourceType === '0') {
+      _options = [..._options, ...['resourceType', 'setAll', 'options']]
+    } else if (type === 'select' && resourceType === '1') {
+      _options = [..._options, ...['resourceType', 'setAll', 'dataSource', 'valueField', 'valueText', 'orderBy', 'orderType']]
     }
+    
+    this.setState({
+      formlist: formlist.map(form => {
+        form.hidden = !_options.includes(form.key)
+        return form
+      })
+    })
   }
 
   UNSAFE_componentWillMount () {
@@ -177,11 +215,11 @@
     const formItemLayout = {
       labelCol: {
         xs: { span: 24 },
-        sm: { span: 6 }
+        sm: { span: 8 }
       },
       wrapperCol: {
         xs: { span: 24 },
-        sm: { span: 18 }
+        sm: { span: 16 }
       }
     }
     return (

--
Gitblit v1.8.0