From e8edfdadb561cd83bf6e1c3e00d55b8cc2aee6d5 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期一, 17 十月 2022 17:57:34 +0800
Subject: [PATCH] 2022-10-17

---
 src/menu/components/share/normalform/index.jsx |  209 ++++++++++++++++++++--------------------------------
 1 files changed, 81 insertions(+), 128 deletions(-)

diff --git a/src/menu/components/share/normalform/index.jsx b/src/menu/components/share/normalform/index.jsx
index 8fee07c..c8244d9 100644
--- a/src/menu/components/share/normalform/index.jsx
+++ b/src/menu/components/share/normalform/index.jsx
@@ -1,15 +1,28 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
+import { fromJS } from 'immutable'
 import { Form, Row, Col, Input, Tooltip, InputNumber, Select, Radio, Cascader } from 'antd'
 import { QuestionCircleOutlined } from '@ant-design/icons'
 
-// import './index.scss'
+import asyncComponent from '@/utils/asyncComponent'
+import './index.scss'
+
+const MKTable = asyncComponent(() => import('@/components/normalform/modalform/mkTable'))
 
 class SettingForm extends Component {
   static propTpyes = {
-    dict: PropTypes.object,      // 瀛楀吀椤�
     formlist: PropTypes.array,   // 琛ㄥ崟
     inputSubmit: PropTypes.func  // 鍥炶溅浜嬩欢
+  }
+
+  state = {
+    formlist: [],
+  }
+
+  UNSAFE_componentWillMount() {
+    const { formlist } = this.props
+
+    this.setState({formlist: fromJS(formlist).toJS()})
   }
 
   handleConfirm = () => {
@@ -33,141 +46,81 @@
     }
   }
 
-  getFields() {
-    const { formlist } = this.props
-    const { getFieldDecorator } = this.props.form
-    const fields = []
+  optionChange = (item, val) => {
+    if (item.key === 'click') {
+      this.setState({formlist: fromJS(this.state.formlist).toJS().map(cell => {
+        if (!['menu', 'menuType', 'open', 'joint', 'menus'].includes(cell.key)) return cell
+        
+        if (val === 'menu') {
+          cell.hidden = !['menu', 'open', 'joint'].includes(cell.key)
+        } else if (val === 'menus') {
+          cell.hidden = !['menuType', 'open', 'joint', 'menus'].includes(cell.key)
+        } else {
+          cell.hidden = true
+        }
 
-    if (!formlist) return []
+        return cell
+      })})
+    }
+  }
+
+  getFields() {
+    const { formlist } = this.state
+    const { getFieldDecorator } = this.props.form
+
+    const fields = []
 
     formlist.forEach((item, index) => {
       if (item.hidden || item.forbid) return
-      
+
+      let content = null
+      let label = item.tooltip ? <Tooltip placement="topLeft" title={item.tooltip}><QuestionCircleOutlined className="mk-form-tip" />{item.label}</Tooltip> : item.label
+    
       if (item.type === 'text') {
-        fields.push(
-          <Col span={12} key={index}>
-            <Form.Item label={item.tooltip ?
-              <Tooltip placement="topLeft" title={item.tooltip}>
-                <QuestionCircleOutlined className="mk-form-tip" />
-                {item.label}
-              </Tooltip> : item.label
-            }>
-              {getFieldDecorator(item.key, {
-                initialValue: item.initVal,
-                rules: [
-                  {
-                    required: item.required,
-                    message: this.props.dict['form.required.input'] + item.label + '!'
-                  }
-                ]
-              })(<Input placeholder="" autoComplete="off" disabled={item.readonly} onPressEnter={this.handleSubmit}/>)}
-            </Form.Item>
-          </Col>
-        )
+        content = (<Input placeholder="" autoComplete="off" onPressEnter={this.handleSubmit}/>)
       } else if (item.type === 'number') {
-        fields.push(
-          <Col span={12} key={index}>
-            <Form.Item label={item.tooltip ?
-              <Tooltip placement="topLeft" title={item.tooltip}>
-                <QuestionCircleOutlined className="mk-form-tip" />
-                {item.label}
-              </Tooltip> : item.label
-            }>
-              {getFieldDecorator(item.key, {
-                initialValue: item.initVal,
-                rules: [
-                  {
-                    required: item.required,
-                    message: this.props.dict['form.required.input'] + item.label + '!'
-                  }
-                ]
-              })(<InputNumber min={item.min} max={item.max} precision={item.decimal} onPressEnter={this.handleSubmit}/>)}
-            </Form.Item>
-          </Col>
-        )
-      } else if (item.type === 'select') { // 涓嬫媺
-        fields.push(
-          <Col span={12} key={index}>
-            <Form.Item label={item.tooltip ?
-              <Tooltip placement="topLeft" title={item.tooltip}>
-                <QuestionCircleOutlined className="mk-form-tip" />
-                {item.label}
-              </Tooltip> : item.label
-            }>
-              {getFieldDecorator(item.key, {
-                initialValue: item.initVal,
-                rules: [
-                  {
-                    required: item.required,
-                    message: this.props.dict['form.required.select'] + item.label + '!'
-                  }
-                ]
-              })(
-                <Select mode={item.multi ? 'multiple' : ''}>
-                  {item.options.map((option, index) =>
-                    <Select.Option key={index} value={option.field || option.value}>
-                      {option.label || option.text}
-                    </Select.Option>
-                  )}
-                </Select>
-              )}
-            </Form.Item>
-          </Col>
-        )
+        content = (<InputNumber min={item.min} max={item.max} precision={item.decimal} onPressEnter={this.handleSubmit}/>)
+      } else if (item.type === 'select') {
+        content = (<Select mode={item.multi ? 'multiple' : ''}>
+          {item.options.map((option, index) =>
+            <Select.Option key={index} value={option.field || option.value}>
+              {option.label || option.text}
+            </Select.Option>
+          )}
+        </Select>)
       } else if (item.type === 'radio') {
-        fields.push(
-          <Col span={12} key={index}>
-            <Form.Item label={item.tooltip ?
-              <Tooltip placement="topLeft" title={item.tooltip}>
-                <QuestionCircleOutlined className="mk-form-tip" />
-                {item.label}
-              </Tooltip> : item.label
-            }>
-              {getFieldDecorator(item.key, {
-                initialValue: item.initVal,
-                rules: [
-                  {
-                    required: item.required,
-                    message: this.props.dict['form.required.select'] + item.label + '!'
-                  }
-                ]
-              })(
-                <Radio.Group disabled={item.readonly}>
-                  {item.options.map(option => {
-                    return (
-                      <Radio key={option.value} value={option.value}>{option.text}</Radio>
-                    )
-                  })}
-                </Radio.Group>
-              )}
-            </Form.Item>
-          </Col>
-        )
+        content = (<Radio.Group onChange={(e) => this.optionChange(item, e.target.value)}>
+          {item.options.map(option => {
+            return (
+              <Radio key={option.value} value={option.field || option.value}>{option.label || option.text}</Radio>
+            )
+          })}
+        </Radio.Group>)
       } else if (item.type === 'cascader') {
-        fields.push(
-          <Col span={12} key={index}>
-            <Form.Item label={item.tooltip ?
-              <Tooltip placement="topLeft" title={item.tooltip}>
-                <QuestionCircleOutlined className="mk-form-tip" />
-                {item.label}
-              </Tooltip> : item.label
-            }>
-              {getFieldDecorator(item.key, {
-                initialValue: item.initVal || [],
-                rules: [
-                  {
-                    required: !!item.required,
-                    message: this.props.dict['form.required.select'] + item.label + '!'
-                  }
-                ]
-              })(
-                <Cascader options={item.options} placeholder=""/>
-              )}
-            </Form.Item>
-          </Col>
-        )
+        content = (<Cascader options={item.options} placeholder=""/>)
+      } else if (item.type === 'table') {
+        content = (<MKTable columns={item.columns || []} actions={item.actions || []}/>)
       }
+
+      if (!content) return
+
+      fields.push(
+        <Col span={item.span || 12} key={index}>
+          <Form.Item label={label}>
+            {getFieldDecorator(item.key, {
+              initialValue: item.initVal,
+              rules: [
+                {
+                  required: item.required,
+                  message: (item.type === 'select' || item.type === 'cascader' ?  '璇烽�夋嫨' : '璇疯緭鍏�') + item.label + '!'
+                }
+              ]
+            })(content)}
+          </Form.Item>
+        </Col>
+      )
     })
+    
     return fields
   }
 
@@ -184,7 +137,7 @@
     }
 
     return (
-      <div>
+      <div className="plot-base-wrap">
         <Form {...formItemLayout}><Row gutter={16}>{this.getFields()}</Row></Form>
       </div>
     )

--
Gitblit v1.8.0