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