From 79943222ed0edc6bd35ab2858c5eda2bc3246f66 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期一, 28 二月 2022 15:03:45 +0800
Subject: [PATCH] 2022-02-28

---
 src/menu/replaceField/settingform/index.jsx |  148 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 144 insertions(+), 4 deletions(-)

diff --git a/src/menu/replaceField/settingform/index.jsx b/src/menu/replaceField/settingform/index.jsx
index ed8d59a..ecf9cce 100644
--- a/src/menu/replaceField/settingform/index.jsx
+++ b/src/menu/replaceField/settingform/index.jsx
@@ -1,22 +1,60 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Tooltip, Select } from 'antd'
-import { QuestionCircleOutlined } from '@ant-design/icons'
+import { Form, Row, Col, Tooltip, Select, Radio, AutoComplete, Modal } from 'antd'
+import { QuestionCircleOutlined, SwapRightOutlined, DeleteOutlined } from '@ant-design/icons'
 
 // import './index.scss'
+const { confirm } = Modal
 
 class SettingForm extends Component {
   static propTpyes = {
     tables: PropTypes.object
   }
 
-  state = {}
+  state = {
+    resource: 'custom',
+    reType: 'field',
+    field: '',
+    label: '',
+    fields: [],
+    labels: []
+  }
+
+  UNSAFE_componentWillMount() {
+    let records = localStorage.getItem('replaceRecord')
+
+    if (records) {
+      records = JSON.parse(records)
+
+      let fields = records.fields || []
+      let labels = records.labels || []
+
+      this.setState({fields, labels, field: fields[0] || '', label: labels[0] || ''})
+    }
+
+  }
 
   handleConfirm = () => {
     // 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭�
     return new Promise((resolve, reject) => {
       this.props.form.validateFieldsAndScroll((err, values) => {
         if (!err) {
+          if (values.resource === 'custom') {
+            let records = localStorage.getItem('replaceRecord')
+
+            if (records) {
+              records = JSON.parse(records)
+            } else {
+              records = {fields: [], labels: []}
+            }
+
+            records.fields.unshift(values.field)
+            records.labels.unshift(values.label)
+            records.fields = Array.from(new Set(records.fields))
+            records.labels = Array.from(new Set(records.labels))
+
+            localStorage.setItem('replaceRecord', JSON.stringify(records))
+          }
           resolve(values)
         } else {
           reject(err)
@@ -25,9 +63,23 @@
     })
   }
 
+  clear = () => {
+    let _this = this
+    confirm({
+      title: '纭畾娓呴櫎鍘嗗彶璁板綍鍚楋紵',
+      content: '',
+      onOk() {
+        localStorage.removeItem('replaceRecord')
+        _this.setState({fields: [], labels: []})
+      },
+      onCancel() {}
+    })
+  }
+
   render() {
     const { tables } = this.props
     const { getFieldDecorator } = this.props.form
+    const { resource, fields, labels, field, label, reType } = this.state
 
     const formItemLayout = {
       labelCol: {
@@ -40,10 +92,43 @@
       }
     }
 
+    let _fields = fields
+    if (field) {
+      _fields = fields.filter(item => item.toLowerCase().indexOf(field.toLowerCase()) > -1)
+    }
+    let _labels = labels
+    if (label) {
+      _labels = labels.filter(item => item.indexOf(label) > -1)
+    }
+
     return (
       <Form {...formItemLayout}>
         <Row gutter={24}>
           <Col span={20}>
+            <Form.Item label="鏇挎崲鏉ユ簮">
+              {getFieldDecorator('resource', {
+                initialValue: 'custom'
+              })(
+                <Radio.Group onChange={(e) => this.setState({resource: e.target.value})}>
+                  <Radio value="dict">鏁版嵁瀛楀吀</Radio>
+                  <Radio value="custom">鑷畾涔�</Radio>
+                </Radio.Group>
+              )}
+            </Form.Item>
+          </Col>
+          <Col span={20}>
+            <Form.Item label="鏇挎崲渚濇嵁">
+              {getFieldDecorator('reType', {
+                initialValue: 'field'
+              })(
+                <Radio.Group onChange={(e) => this.setState({reType: e.target.value})}>
+                  <Radio value="field">瀛楁 <SwapRightOutlined /> 鍚嶇О</Radio>
+                  <Radio value="name">鍘熷瓧娈� <SwapRightOutlined /> 鏂板瓧娈�</Radio>
+                </Radio.Group>
+              )}
+            </Form.Item>
+          </Col>
+          {resource === 'dict' ? <Col span={20}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="鐢ㄤ簬瀛楁鏇挎崲鐨勮〃鍚嶃��">
                 <QuestionCircleOutlined className="mk-form-tip" />
@@ -69,7 +154,62 @@
                 </Select>
               )}
             </Form.Item>
-          </Col>
+          </Col> : null}
+          {resource === 'custom' && reType === 'field' ? <Col span={20}>
+            <Form.Item label="瀛楁">
+              {getFieldDecorator('field', {
+                initialValue: field,
+                rules: [
+                  {
+                    required: true,
+                    message: '璇疯緭鍏ュ瓧娈�!'
+                  }
+                ]
+              })(<AutoComplete dataSource={_fields} autoFocus onSearch={(val) => this.setState({ field: val})} placeholder="" />)}
+            </Form.Item>
+          </Col> : null}
+          {resource === 'custom' && reType === 'field' ? <Col span={20}>
+            <Form.Item label="鍚嶇О">
+              {getFieldDecorator('label', {
+                initialValue: label,
+                rules: [
+                  {
+                    required: true,
+                    message: '璇疯緭鍏ュ悕绉�!'
+                  }
+                ]
+              })(<AutoComplete dataSource={_labels} onSearch={(val) => this.setState({ label: val})} placeholder="" />)}
+            </Form.Item>
+          </Col> : null}
+          {resource === 'custom' && reType === 'name' ? <Col span={20}>
+            <Form.Item label="鍘熷瓧娈�">
+              {getFieldDecorator('label', {
+                initialValue: label,
+                rules: [
+                  {
+                    required: true,
+                    message: '璇疯緭鍏ュ悕绉�!'
+                  }
+                ]
+              })(<AutoComplete dataSource={_labels} autoFocus onSearch={(val) => this.setState({ label: val})} placeholder="" />)}
+            </Form.Item>
+          </Col> : null}
+          {resource === 'custom' && reType === 'name' ? <Col span={20}>
+            <Form.Item label="鏇挎崲涓�">
+              {getFieldDecorator('field', {
+                initialValue: field,
+                rules: [
+                  {
+                    required: true,
+                    message: '璇疯緭鍏ュ瓧娈�!'
+                  }
+                ]
+              })(<AutoComplete dataSource={_fields} onSearch={(val) => this.setState({ field: val})} placeholder="" />)}
+            </Form.Item>
+          </Col> : null}
+          {resource === 'custom' && fields.length > 0 ? <Col span={24}>
+            <DeleteOutlined onClick={this.clear} style={{float: 'right', fontSize: '18px', marginTop: '-10px', cursor: 'pointer', color: '#ff4d4f'}} title="娓呯┖鍘嗗彶璁板綍" />
+          </Col> : null}
         </Row>
       </Form>
     )

--
Gitblit v1.8.0