king
2021-10-21 1da6506bf58270bacc2a4345002c6b082835580e
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}