From c27d57333ed38c92f595219d2190ea63cef4d182 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 12 一月 2021 18:29:16 +0800
Subject: [PATCH] 2021-01-12

---
 src/templates/sharecomponent/searchcomponent/index.jsx |   70 +++++++++++++++++------------------
 1 files changed, 34 insertions(+), 36 deletions(-)

diff --git a/src/templates/sharecomponent/searchcomponent/index.jsx b/src/templates/sharecomponent/searchcomponent/index.jsx
index b3c1ce7..ae43ac0 100644
--- a/src/templates/sharecomponent/searchcomponent/index.jsx
+++ b/src/templates/sharecomponent/searchcomponent/index.jsx
@@ -18,11 +18,7 @@
 
 class SearchComponent extends Component {
   static propTpyes = {
-    menu: PropTypes.object,          // 褰撳墠鑿滃崟淇℃伅
     config: PropTypes.object,        // 閰嶇疆淇℃伅
-    pasteContent: PropTypes.object,  // 绮樿创閰嶇疆淇℃伅
-    optionLibs: PropTypes.any,       // 涓嬫媺瀛楀吀
-    sysRoles: PropTypes.array,       // 瑙掕壊鍒楄〃锛岄粦鍚嶅崟
     updatesearch: PropTypes.func     // 鏇存柊
   }
 
@@ -49,10 +45,12 @@
   UNSAFE_componentWillReceiveProps (nextProps) {
     const { searchlist } = this.state
 
-    if (nextProps.pasteContent && nextProps.pasteContent.copyType === 'search') {
-      this.setState({searchlist: [...searchlist, nextProps.pasteContent]})
-      this.handleSearch(nextProps.pasteContent)
-    } else if (!is(fromJS(nextProps.config.search), fromJS(this.props.config.search)) && !is(fromJS(nextProps.config.search), fromJS(searchlist))) {
+    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()})
     }
   }
@@ -77,10 +75,22 @@
    * @description 鎼滅储鏉′欢缂栬緫锛岃幏鍙栨悳绱㈡潯浠惰〃鍗曚俊鎭�
    */
   handleSearch = (card) => {
+    const { searchlist } = this.state
+    let linkableFields = []
+
+    searchlist.forEach(item => {
+      if (item.uuid !== card.uuid && (item.type === 'select' || item.type === 'link')) {
+        linkableFields.push({
+          value: item.field,
+          text: item.label
+        })
+      }
+    })
+
     this.setState({
       visible: true,
       card: card,
-      formlist: getSearchForm(card, this.props.sysRoles)
+      formlist: getSearchForm(card, linkableFields)
     })
   }
 
@@ -88,18 +98,18 @@
    * @description 鍙栨秷淇濆瓨锛屽鏋滃厓绱犱负鏂版坊鍏冪礌锛屽垯浠庡簭鍒椾腑鍒犻櫎
    */
   editModalCancel = () => {
-    const { card } = this.state
+    const { config } = this.props
+    const { card, searchlist } = this.state
 
     if (card.focus) {
-      let searchlist = fromJS(this.state.searchlist).toJS()
-
-      searchlist = searchlist.filter(item => item.uuid !== card.uuid)
+      let _searchlist = searchlist.filter(item => item.uuid !== card.uuid)
 
       this.setState({
         card: null,
-        searchlist: searchlist,
+        searchlist: _searchlist,
         visible: false
       })
+      this.props.updatesearch({...config, search: _searchlist})
     } else {
       this.setState({
         card: null,
@@ -116,7 +126,7 @@
    * 4銆佷笅鎷夎彍鍗曟暟鎹簮璇硶楠岃瘉
    */
   handleSubmit = () => {
-    const { optionLibs, menu, config } = this.props
+    const { config } = this.props
     let _searchlist = fromJS(this.state.searchlist).toJS()
 
     this.searchFormRef.handleConfirm().then(res => {
@@ -164,27 +174,17 @@
       if (fieldrepet) {
         notification.warning({
           top: 92,
-          message: this.state.dict['model.field.exist'] + ' !',
+          message: '瀛楁宸插瓨鍦�!',
           duration: 5
         })
         return
       } else if (labelrepet) {
         notification.warning({
           top: 92,
-          message: this.state.dict['model.name.exist'] + ' !',
+          message: '鍚嶇О宸插瓨鍦�!',
           duration: 5
         })
         return
-      }
-
-      if ( res.options && res.options.length > 0 ) { // 涓嬫媺鑿滃崟鍙�夐泦鍚�
-        optionLibs.set(menu.MenuID + res.uuid, {
-          uuid: menu.MenuID + res.uuid,
-          label: res.label,
-          parname: menu.MenuName,
-          type: 'search',
-          options: res.options
-        })
       }
 
       if ((res.type === 'select' || res.type === 'multiselect' || res.type === 'link') && res.resourceType === '1' && /\s/.test(res.dataSource)) {
@@ -194,14 +194,15 @@
 
         let param = {
           func: 's_debug_sql',
+          exec_type: 'y',
           LText: res.dataSource
         }
 
         param.LText = param.LText.replace(/@\$|\$@/ig, '')
         
         param.LText = Utils.formatOptions(param.LText)
-        param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
-        param.secretkey = Utils.encrypt(param.LText, param.timestamp)
+        param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
+        param.secretkey = Utils.encrypt('', param.timestamp)
 
         if (window.GLOB.mainSystemApi && res.database === 'sso') {
           param.rduri = window.GLOB.mainSystemApi
@@ -214,7 +215,7 @@
               searchlist: _searchlist,
               visible: false
             }, ()=> {
-              this.props.updatesearch({...config, search: _searchlist}, optionLibs)
+              this.props.updatesearch({...config, search: _searchlist})
             })
           } else {
             this.setState({sqlVerifing: false})
@@ -229,7 +230,7 @@
           searchlist: _searchlist,
           visible: false
         }, ()=> { 
-          this.props.updatesearch({...config, search: _searchlist}, optionLibs)
+          this.props.updatesearch({...config, search: _searchlist})
         })
       }
     })
@@ -245,8 +246,6 @@
 
     confirm({
       content: dict['model.confirm'] + dict['model.delete'] + ` - ${card.label} 锛焋,
-      okText: dict['model.confirm'],
-      cancelText: this.state.dict['header.cancel'],
       onOk() {
         let _searchlist = fromJS(_this.state.searchlist).toJS()
 
@@ -279,7 +278,7 @@
     const { dict, searchlist, visible, sqlVerifing, card } = this.state
 
     return (
-      <div className="model-table-search-list">
+      <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>
@@ -292,7 +291,7 @@
         />
         {/* 缂栬緫鎼滅储鏉′欢 */}
         <Modal
-          title={dict['model.searchCriteria'] + '-' + (card && card.copyType === 'search' ?  dict['model.copy'] : dict['model.edit'])}
+          title={card && card.copyType === 'search' ?  '鎼滅储鏉′欢-澶嶅埗' : '鎼滅储鏉′欢-缂栬緫'}
           visible={visible}
           width={850}
           maskClosable={false}
@@ -306,7 +305,6 @@
             card={this.state.card}
             formlist={this.state.formlist}
             inputSubmit={this.handleSubmit}
-            optionLibs={this.props.optionLibs}
             wrappedComponentRef={(inst) => this.searchFormRef = inst}
           />
         </Modal>

--
Gitblit v1.8.0