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