From 1da6506bf58270bacc2a4345002c6b082835580e Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期四, 21 十月 2021 23:17:08 +0800 Subject: [PATCH] 2021-10-21 --- src/templates/sharecomponent/searchcomponent/index.jsx | 70 +++++++++++++++++++++++++++++------ 1 files changed, 58 insertions(+), 12 deletions(-) diff --git a/src/templates/sharecomponent/searchcomponent/index.jsx b/src/templates/sharecomponent/searchcomponent/index.jsx index 44d9716..73cae07 100644 --- a/src/templates/sharecomponent/searchcomponent/index.jsx +++ b/src/templates/sharecomponent/searchcomponent/index.jsx @@ -9,12 +9,15 @@ import zhCN from '@/locales/zh-CN/model.js' import enUS from '@/locales/en-US/model.js' 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 './index.scss' const { confirm } = Modal + +const FieldsComponent = asyncComponent(() => import('@/templates/sharecomponent/fieldscomponent')) class SearchComponent extends Component { static propTpyes = { @@ -40,19 +43,47 @@ }) } - /** - * @description 鐩戝惉鍒版悳绱㈡潯浠跺鍒舵椂锛岃Е鍙戞悳绱㈡潯浠剁紪杈� - */ - UNSAFE_componentWillReceiveProps (nextProps) { + // /** + // * @description 鐩戝惉鍒版悳绱㈡潯浠跺鍒舵椂锛岃Е鍙戞悳绱㈡潯浠剁紪杈� + // */ + // UNSAFE_componentWillReceiveProps (nextProps) { + // const { searchlist } = this.state + + // if (!is(fromJS(nextProps.config.search), fromJS(this.props.config.search)) && !is(fromJS(nextProps.config.search), fromJS(searchlist))) { + // let len = nextProps.config.search.length + // let item = nextProps.config.search[len - 1] + // if (item && item.focus) { + // this.handleSearch(item) + // } + // this.setState({searchlist: fromJS(nextProps.config.search).toJS()}) + // } + // } + + componentDidMount () { + MKEmitter.addListener('plusSearch', this.plusSearch) + } + + plusSearch = (MenuId, item, type) => { + const { config } = this.props const { searchlist } = this.state - if (!is(fromJS(nextProps.config.search), fromJS(this.props.config.search)) && !is(fromJS(nextProps.config.search), fromJS(searchlist))) { - let len = nextProps.config.search.length - let item = nextProps.config.search[len - 1] - if (item && item.focus) { + if (MenuId !== config.uuid) return + + if (type === 'simple') { + this.setState({ + searchlist: [...searchlist, item], + }, () => { this.handleSearch(item) - } - this.setState({searchlist: fromJS(nextProps.config.search).toJS()}) + }) + } else if (type === 'multil') { + let list = [...searchlist, ...item] + list = list.filter(item => !item.origin) // 鍘婚櫎绯荤粺椤� + + this.setState({ + searchlist: list + }, () => { + this.props.updatesearch({...config, search: list}) + }) } } @@ -280,23 +311,38 @@ this.setState = () => { return } + MKEmitter.removeListener('plusSearch', this.plusSearch) } shouldComponentUpdate (nextProps, nextState) { - return !is(fromJS(this.state), fromJS(nextState)) + 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 + } else { + return this.props.config.setting.show !== nextProps.config.setting.show + } } 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 + } return ( <div className={'model-table-search-list length' + searchlist.length}> <Tooltip placement="bottomLeft" overlayClassName="middle" title={dict['model.tooltip.search.guide']}> <Icon type="question-circle" /> </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} /> <DragElement list={searchlist} + show={show} showField={showField} handleList={this.handleList} handleMenu={this.handleSearch} -- Gitblit v1.8.0