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