From 96a32645822c3c1486eae30282c33adf9e3aee80 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 11 十二月 2024 23:29:18 +0800
Subject: [PATCH] 2024-12-11

---
 src/menu/replaceField/settingform/index.jsx |  125 ++++++++++++++++++++++++++---------------
 src/menu/replaceField/index.jsx             |    6 +-
 2 files changed, 81 insertions(+), 50 deletions(-)

diff --git a/src/menu/replaceField/index.jsx b/src/menu/replaceField/index.jsx
index 822ac40..d7d29ec 100644
--- a/src/menu/replaceField/index.jsx
+++ b/src/menu/replaceField/index.jsx
@@ -89,9 +89,9 @@
 
       if (res.resource === 'custom') {
         if (res.reType === 'name') {
-          let map = {[res.label.toLowerCase()]: {
-            FieldDec: res.label,
-            FieldName: res.field,
+          let map = {[res.field.toLowerCase()]: {
+            FieldDec: res.field,
+            FieldName: res.label,
             datatype: ''
           }}
   
diff --git a/src/menu/replaceField/settingform/index.jsx b/src/menu/replaceField/settingform/index.jsx
index 91d3236..9d20e58 100644
--- a/src/menu/replaceField/settingform/index.jsx
+++ b/src/menu/replaceField/settingform/index.jsx
@@ -1,6 +1,6 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Tooltip, Select, Radio, AutoComplete, Modal } from 'antd'
+import { Form, Row, Col, Tooltip, Select, Radio, AutoComplete, Input, Modal } from 'antd'
 import { QuestionCircleOutlined, SwapRightOutlined, DeleteOutlined } from '@ant-design/icons'
 
 // import './index.scss'
@@ -14,27 +14,38 @@
   state = {
     resource: 'custom',
     reType: 'field',
-    field: '',
-    label: '',
-    fields: [],
-    labels: []
+    records: []
   }
 
-  UNSAFE_componentWillMount() {
+  componentDidMount () {
     let records = localStorage.getItem('replaceRecord')
 
     if (records) {
       records = JSON.parse(records)
 
-      let fields = records.fields || []
-      let labels = records.labels || []
+      if (!Array.isArray(records)) {
+        localStorage.removeItem('replaceRecord')
+        records = []
+      }
 
-      this.setState({fields, labels, field: fields[0] || '', label: labels[0] || ''})
+      this.setState({records})
+
+      let field = ''
+      let label = ''
+      records.forEach(item => {
+        if (item.reType !== 'field' || field) return
+
+        field = item.value
+        label = item.label
+      })
+
+      this.props.form.setFieldsValue({field, label})
     }
-
   }
 
   handleConfirm = () => {
+    const { reType } = this.state
+
     // 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭�
     return new Promise((resolve, reject) => {
       this.props.form.validateFieldsAndScroll((err, values) => {
@@ -42,28 +53,30 @@
           if (values.resource === 'custom') {
             let records = localStorage.getItem('replaceRecord')
 
+            if (reType === 'name') {
+              values.field = values.orifield
+              values.label = values.name
+  
+              delete values.orifield
+              delete values.name
+            }
+
             if (records) {
               records = JSON.parse(records)
             } else {
-              records = {fields: [], labels: []}
+              records = []
             }
 
-            records.fields.unshift(values.field)
-            records.labels.unshift(values.label)
+            let field = values.field.toLowerCase()
+            records = records.filter(item => item.reType !== reType || item.value.toLowerCase() !== field)
 
-            let _fields = []
-            let _labels = []
+            records.unshift({
+              value: values.field,
+              label: values.label,
+              reType
+            })
 
-            records.fields = records.fields.filter(m => {
-              if (_fields.includes(m.toLowerCase())) return false
-              _fields.push(m.toLowerCase())
-              return true
-            })
-            records.labels = records.labels.filter(m => {
-              if (_labels.includes(m.toLowerCase())) return false
-              _labels.push(m.toLowerCase())
-              return true
-            })
+            this.setState({records: records})
 
             localStorage.setItem('replaceRecord', JSON.stringify(records))
           }
@@ -82,16 +95,33 @@
       content: '',
       onOk() {
         localStorage.removeItem('replaceRecord')
-        that.setState({fields: [], labels: []})
+        that.setState({records: []})
       },
       onCancel() {}
     })
   }
 
+  complete = (key) => {
+    const { records, reType } = this.state
+
+    let label = ''
+    records.forEach(item => {
+      if (item.reType === reType && key === item.value) {
+        label = item.label
+      }
+    })
+
+    if (reType === 'name') {
+      this.props.form.setFieldsValue({name: label})
+    } else {
+      this.props.form.setFieldsValue({label: label})
+    }
+  }
+
   render() {
     const { tables } = this.props
     const { getFieldDecorator } = this.props.form
-    const { resource, fields, labels, field, label, reType } = this.state
+    const { resource, records, reType } = this.state
 
     const formItemLayout = {
       labelCol: {
@@ -104,14 +134,15 @@
       }
     }
 
-    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)
-    }
+    let _fields1 = []
+    let _fields2 = []
+    records.forEach(item => {
+      if (item.reType === 'field') {
+        _fields1.push(item.value)
+      } else {
+        _fields2.push(item.value)
+      }
+    })
 
     return (
       <Form {...formItemLayout}>
@@ -170,56 +201,56 @@
           {resource === 'custom' && reType === 'field' ? <Col span={20}>
             <Form.Item label="瀛楁">
               {getFieldDecorator('field', {
-                initialValue: field,
+                initialValue: '',
                 rules: [
                   {
                     required: true,
                     message: '璇疯緭鍏ュ瓧娈�!'
                   }
                 ]
-              })(<AutoComplete dataSource={_fields} autoFocus onSearch={(val) => this.setState({ field: val})} placeholder="" />)}
+              })(<AutoComplete dataSource={_fields1} onSelect={this.complete} filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0} autoFocus placeholder="" />)}
             </Form.Item>
           </Col> : null}
           {resource === 'custom' && reType === 'field' ? <Col span={20}>
             <Form.Item label="鍚嶇О">
               {getFieldDecorator('label', {
-                initialValue: label,
+                initialValue: '',
                 rules: [
                   {
                     required: true,
                     message: '璇疯緭鍏ュ悕绉�!'
                   }
                 ]
-              })(<AutoComplete dataSource={_labels} onSearch={(val) => this.setState({ label: val})} placeholder="" />)}
+              })(<Input autoComplete="off"/>)}
             </Form.Item>
           </Col> : null}
           {resource === 'custom' && reType === 'name' ? <Col span={20}>
             <Form.Item label="鍘熷瓧娈�">
-              {getFieldDecorator('label', {
-                initialValue: label,
+              {getFieldDecorator('orifield', {
+                initialValue: '',
                 rules: [
                   {
                     required: true,
-                    message: '璇疯緭鍏ュ悕绉�!'
+                    message: '璇疯緭鍏ュ師瀛楁!'
                   }
                 ]
-              })(<AutoComplete dataSource={_labels} autoFocus onSearch={(val) => this.setState({ label: val})} placeholder="" />)}
+              })(<AutoComplete dataSource={_fields2} onSelect={this.complete} filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0} autoFocus placeholder="" />)}
             </Form.Item>
           </Col> : null}
           {resource === 'custom' && reType === 'name' ? <Col span={20}>
             <Form.Item label="鏇挎崲涓�">
-              {getFieldDecorator('field', {
-                initialValue: field,
+              {getFieldDecorator('name', {
+                initialValue: '',
                 rules: [
                   {
                     required: true,
                     message: '璇疯緭鍏ュ瓧娈�!'
                   }
                 ]
-              })(<AutoComplete dataSource={_fields} onSearch={(val) => this.setState({ field: val})} placeholder="" />)}
+              })(<Input autoComplete="off"/>)}
             </Form.Item>
           </Col> : null}
-          {resource === 'custom' && fields.length > 0 ? <Col span={24}>
+          {resource === 'custom' && records.length > 0 ? <Col span={24}>
             <DeleteOutlined onClick={this.clear} style={{float: 'right', fontSize: '18px', marginTop: '-10px', cursor: 'pointer', color: '#ff4d4f'}} title="娓呯┖鍘嗗彶璁板綍" />
           </Col> : null}
         </Row>

--
Gitblit v1.8.0