| | |
| | | import { getSearchForm } from '@/templates/zshare/formconfig' |
| | | import asyncComponent from '@/utils/asyncComponent' |
| | | import MKEmitter from '@/utils/events.js' |
| | | import SearchForm from './searchform' |
| | | import DragElement from './dragsearch' |
| | | import SearchForm from './searchform' |
| | | import SettingForm from './settingform' |
| | | import './index.scss' |
| | | |
| | | const { confirm } = Modal |
| | |
| | | |
| | | state = { |
| | | dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, |
| | | searchlist: null, // 搜索条件集 |
| | | sqlVerifing: false, // sql验证中 |
| | | visible: false, // 模态框控制 |
| | | searchlist: null, |
| | | sqlVerifing: false, |
| | | visible: false, |
| | | showField: false, |
| | | card: null // 编辑中元素 |
| | | setVisible: false, |
| | | card: null |
| | | } |
| | | |
| | | /** |
| | |
| | | }) |
| | | } |
| | | |
| | | handleSetting = () => { |
| | | this.setState({ |
| | | setVisible: true |
| | | }) |
| | | } |
| | | |
| | | settingSubmit = () => { |
| | | const { config } = this.props |
| | | |
| | | this.settingFormRef.handleConfirm().then(res => { |
| | | this.setState({ |
| | | setVisible: false |
| | | }) |
| | | this.props.updatesearch({...config, setting: {...config.setting, ...res}}) |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * @description 组件销毁,清除state更新 |
| | |
| | | if (!is(fromJS(this.state), fromJS(nextState))) { |
| | | return true |
| | | } else if (this.props.config.wrap) { |
| | | return this.props.config.wrap.show !== nextProps.config.wrap.show |
| | | return !is(fromJS(nextProps.config.wrap), fromJS(this.props.config.wrap)) |
| | | } else { |
| | | return this.props.config.setting.show !== nextProps.config.setting.show |
| | | return !is(fromJS(nextProps.config.setting), fromJS(this.props.config.setting)) |
| | | } |
| | | } |
| | | |
| | | render() { |
| | | const { config } = this.props |
| | | const { dict, searchlist, visible, sqlVerifing, card, showField } = this.state |
| | | |
| | | let show = config.setting.show |
| | | if (config.wrap) { |
| | | show = config.wrap.show |
| | | } |
| | | const { dict, searchlist, visible, sqlVerifing, card, showField, setVisible } = this.state |
| | | |
| | | return ( |
| | | <div className={'model-table-search-list length' + searchlist.length}> |
| | | <div className={'model-table-search-list length' + searchlist.length + (showField ? ' show-field' : '')}> |
| | | <Tooltip placement="bottomLeft" overlayClassName="middle" title="在左侧工具栏《搜索》中,选择对应搜索框拖至此处添加;或点击按钮《添加搜索条件》批量添加,选择批量添加时,需提前选择使用表。"> |
| | | <QuestionCircleOutlined style={{color: '#c49f47', position: 'relative', left: '-15px', top: '5px'}} /> |
| | | </Tooltip> |
| | | <FieldsComponent config={{uuid: config.uuid, search: searchlist}} type="search" /> |
| | | <Switch checkedChildren={dict['model.switch.open']} unCheckedChildren={dict['model.switch.close']} defaultChecked={showField} onChange={this.onFieldChange} /> |
| | | <Switch className="switch-field-show" checkedChildren={dict['model.switch.open']} unCheckedChildren={dict['model.switch.close']} defaultChecked={showField} onChange={this.onFieldChange} /> |
| | | <DragElement |
| | | list={searchlist} |
| | | show={show} |
| | | showField={showField} |
| | | setting={config.wrap || config.setting} |
| | | handleList={this.handleList} |
| | | handleMenu={this.handleSearch} |
| | | deleteMenu={this.deleteElement} |
| | | handleSetting={this.handleSetting} |
| | | /> |
| | | {/* 编辑搜索条件 */} |
| | | <Modal |
| | |
| | | wrappedComponentRef={(inst) => this.searchFormRef = inst} |
| | | /> |
| | | </Modal> |
| | | <Modal |
| | | title={'搜索设置'} |
| | | visible={setVisible} |
| | | width={800} |
| | | maskClosable={false} |
| | | onOk={this.settingSubmit} |
| | | onCancel={() => this.setState({setVisible: false})} |
| | | destroyOnClose |
| | | > |
| | | <SettingForm |
| | | setting={config.wrap || config.setting} |
| | | inputSubmit={this.settingSubmit} |
| | | wrappedComponentRef={(inst) => this.settingFormRef = inst} |
| | | /> |
| | | </Modal> |
| | | </div> |
| | | ) |
| | | } |