From 88f02c2c018fb1e5c171bd4975dac534c584c3ba Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 10 十二月 2019 09:31:37 +0800
Subject: [PATCH] 2019-12-10

---
 src/templates/comtableconfig/columnform/index.jsx |   71 ++++++++++++++++++++++++++++++++++-
 1 files changed, 68 insertions(+), 3 deletions(-)

diff --git a/src/templates/comtableconfig/columnform/index.jsx b/src/templates/comtableconfig/columnform/index.jsx
index efe3cf3..17547c5 100644
--- a/src/templates/comtableconfig/columnform/index.jsx
+++ b/src/templates/comtableconfig/columnform/index.jsx
@@ -11,13 +11,77 @@
   }
 
   state = {
+    formlist: null
+  }
 
+  UNSAFE_componentWillMount () {
+    let _type = this.props.formlist.filter(form => form.key === 'type')[0].initVal
+    let _options = ['label', 'field', 'type', 'Align', 'Hide', 'IsSort', 'Width']
+
+    if (_type === 'text') {
+      _options = ['label', 'field', 'type', 'Align', 'Hide', 'IsSort', 'Width', 'prefix', 'matchVal', 'color']
+    } else if (_type === 'number') {
+      _options = ['label', 'field', 'type', 'Align', 'Hide', 'IsSort', 'Width', 'decimal', 'format', 'prefix', 'match', 'matchVal', 'color']
+    } else if (_type === 'textarea') {
+      _options = ['label', 'field', 'type', 'Align', 'Hide', 'IsSort', 'Width', 'prefix', 'matchVal', 'color']
+    }
+
+    this.setState({
+      formlist: this.props.formlist.map(item => {
+        item.hidden = !_options.includes(item.key)
+        if (item.key === 'matchVal' && (_type === 'text' || _type === 'textarea')) {
+          item.type = 'text'
+        } else if (item.key === 'matchVal' && _type === 'number') {
+          item.type = 'number'
+        }
+        return item
+      })
+    })
+  }
+
+  typeChange = (key, value) => {
+    if (key === 'type') {
+      let _options = ['label', 'field', 'type', 'Align', 'Hide', 'IsSort', 'Width']
+
+      if (value === 'text') {
+        _options = ['label', 'field', 'type', 'Align', 'Hide', 'IsSort', 'Width', 'prefix', 'matchVal', 'color']
+      } else if (value === 'number') {
+        _options = ['label', 'field', 'type', 'Align', 'Hide', 'IsSort', 'Width', 'decimal', 'format', 'prefix', 'match', 'matchVal', 'color']
+      } else if (value === 'textarea') {
+        _options = ['label', 'field', 'type', 'Align', 'Hide', 'IsSort', 'Width', 'prefix', 'matchVal', 'color']
+      }
+
+      this.setState({
+        formlist: this.props.formlist.map(item => {
+          item.hidden = !_options.includes(item.key)
+          if (item.key === 'matchVal' && (value === 'text' || value === 'textarea')) {
+            item.type = 'text'
+          } else if (item.key === 'matchVal' && value === 'number') {
+            item.type = 'number'
+            item.initVal = ''
+            item.hidden = true
+          }
+          return item
+        })
+      }, () => {
+        this.setState({
+          formlist: this.props.formlist.map(item => {
+            if (item.key === 'matchVal' && value === 'number') {
+              item.hidden = false
+            }
+            return item
+          })
+        })
+      })
+    }
   }
 
   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') { // 鏂囨湰鎼滅储
         fields.push(
           <Col span={12} key={index}>
@@ -39,14 +103,14 @@
           <Col span={12} key={index}>
             <Form.Item label={item.label}>
               {getFieldDecorator(item.key, {
-                initialValue: item.initVal || '',
+                initialValue: item.initVal,
                 rules: [
                   {
                     required: !!item.required,
                     message: this.props.dict['form.required.input'] + item.label + '!'
                   }
                 ]
-              })(<InputNumber min={1} max={1000} precision={item.decimal} />)}
+              })(<InputNumber min={item.min} max={item.max} precision={item.decimal} />)}
             </Form.Item>
           </Col>
         )
@@ -66,6 +130,7 @@
                 <Select
                   showSearch
                   filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
+                  onChange={(value) => {this.typeChange(item.key, value)}}
                   getPopupContainer={() => document.getElementById('columnwinter')}
                 >
                   {item.options.map(option =>

--
Gitblit v1.8.0