From ed719ec5d86d3373ee95df8262eba3f456f94d60 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 12 六月 2024 17:28:09 +0800
Subject: [PATCH] 2024-06-12

---
 src/templates/sharecomponent/searchcomponent/index.jsx |  155 +++++++++++++++++++++++++++------------------------
 1 files changed, 81 insertions(+), 74 deletions(-)

diff --git a/src/templates/sharecomponent/searchcomponent/index.jsx b/src/templates/sharecomponent/searchcomponent/index.jsx
index 5179021..f6e9073 100644
--- a/src/templates/sharecomponent/searchcomponent/index.jsx
+++ b/src/templates/sharecomponent/searchcomponent/index.jsx
@@ -1,19 +1,15 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
-import { Tooltip, Modal, notification, Switch } from 'antd'
-import { QuestionCircleOutlined } from '@ant-design/icons'
-import moment from 'moment'
+import { Modal, notification, Switch } from 'antd'
 
 import Api from '@/api'
-import Utils from '@/utils/utils.js'
-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 SearchForm from './searchform'
+import SettingForm from './settingform'
 import './index.scss'
 
 const { confirm } = Modal
@@ -27,12 +23,12 @@
   }
 
   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
   }
 
   /**
@@ -44,25 +40,14 @@
     })
   }
 
-  // /**
-  //  * @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)
+    // MKEmitter.addListener('revert', this.revert)
   }
+
+  // revert = () => {
+  //   this.setState({searchlist: fromJS(this.props.config.search).toJS()})
+  // }
 
   plusSearch = (MenuId, item, type) => {
     const { config } = this.props
@@ -108,6 +93,7 @@
    * @description 鎼滅储鏉′欢缂栬緫锛岃幏鍙栨悳绱㈡潯浠惰〃鍗曚俊鎭�
    */
   handleSearch = (card) => {
+    const { config } = this.props
     const { searchlist } = this.state
     let linkableFields = []
 
@@ -122,10 +108,17 @@
       })
     })
 
+    let columns = null
+    if (config.columns && config.columns.length) {
+      columns = config.columns.map(item => {
+        return {key: item.uuid, text: item.field, value: item.field, label: item.label}
+      })
+    }
+
     this.setState({
       visible: true,
       card: card,
-      formlist: getSearchForm(card, linkableFields)
+      formlist: getSearchForm(card, linkableFields, columns)
     })
   }
 
@@ -166,7 +159,6 @@
 
     this.searchFormRef.handleConfirm().then(res => {
       let fieldrepet = false // 瀛楁閲嶅
-      let labelrepet = false // 鎻愮ず鏂囧瓧閲嶅
 
       _searchlist = _searchlist.filter(item => !item.origin || item.uuid === res.uuid) // 鍘婚櫎绯荤粺椤�
 
@@ -194,8 +186,6 @@
 
           if (setFields.length < itemFields.length + resFields.length && (res.type !== 'date' || item.type !== 'date')) {
             fieldrepet = true
-          } else if (item.label === res.label) {
-            labelrepet = true
           }
         }
 
@@ -213,38 +203,19 @@
           duration: 5
         })
         return
-      } else if (labelrepet) {
-        notification.warning({
-          top: 92,
-          message: '鍚嶇О宸插瓨鍦�!',
-          duration: 5
-        })
-        return
       }
 
-      if (['checkcard', 'select', 'multiselect', 'link'].includes(res.type) && res.resourceType === '1' && /\s/.test(res.dataSource)) {
+      if (['checkcard', 'select', 'multiselect', 'link'].includes(res.type) && res.resourceType === '1' && res.database !== 'sso' && /\s/.test(res.dataSource)) {
         this.setState({
           sqlVerifing: true
         })
 
-        let param = {
-          func: 's_debug_sql',
-          exec_type: 'y',
-          LText: res.dataSource
-        }
-
-        param.LText = param.LText.replace(/@\$|\$@/ig, '')
+        let sql = `declare @mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20)
+        ${res.dataSource}`
+        sql = sql.replace(/@\$|\$@/ig, '')
         
-        param.LText = Utils.formatOptions(param.LText)
-        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
-        }
-        
-        Api.getLocalConfig(param).then(result => {
-          if (result.status) {
+        Api.sDebug(sql).then(result => {
+          if (result.status || result.ErrCode === '-2') {
             this.setState({
               sqlVerifing: false,
               searchlist: _searchlist,
@@ -276,11 +247,10 @@
    */
   deleteElement = (card) => {
     const { config } = this.props
-    const { dict } = this.state
     let _this = this
 
     confirm({
-      content: dict['model.confirm'] + dict['model.delete'] + ` - ${card.label} 锛焋,
+      content: `纭畾鍒犻櫎 - ${card.label} 锛焋,
       onOk() {
         let _searchlist = fromJS(_this.state.searchlist).toJS()
 
@@ -304,6 +274,31 @@
     })
   }
 
+  handleSetting = () => {
+    this.setState({
+      setVisible: true
+    })
+  }
+
+  settingSubmit = () => {
+    const { config } = this.props
+
+    this.settingFormRef.handleConfirm().then(res => {
+      this.setState({
+        setVisible: false
+      })
+
+      let _config = null
+
+      if (config.wrap) { // 鑷畾涔夐〉闈able
+        _config = {...config, wrap: {...config.wrap, ...res}}
+      } else {
+        _config = {...config, setting: {...config.setting, ...res}}
+      }
+
+      this.props.updatesearch(_config)
+    })
+  }
 
   /**
    * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊
@@ -312,6 +307,7 @@
     this.setState = () => {
       return
     }
+    // MKEmitter.removeListener('revert', this.revert)
     MKEmitter.removeListener('plusSearch', this.plusSearch)
   }
 
@@ -319,40 +315,37 @@
     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
+    const { searchlist, visible, sqlVerifing, card, showField, setVisible } = this.state
 
-    let show = config.setting.show
-    if (config.wrap) {
-      show = config.wrap.show
+    let size = ''
+    if (config.wrap && config.wrap.searchSize) {
+      size = ' mk-size-' + config.wrap.searchSize
     }
 
     return (
-      <div className={'model-table-search-list length' + searchlist.length}>
-        <Tooltip placement="bottomLeft" overlayClassName="middle" title={dict['model.tooltip.search.guide']}>
-          <QuestionCircleOutlined style={{color: '#c49f47', position: 'relative', left: '-15px', top: '5px'}} />
-        </Tooltip>
+      <div className={'model-table-search-list length' + searchlist.length + (showField ? ' show-field' : '') + size}>
         <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="寮�" unCheckedChildren="鍏�" 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}
-          placeholder={dict['header.form.search.placeholder']}
+          handleSetting={this.handleSetting}
         />
         {/* 缂栬緫鎼滅储鏉′欢 */}
         <Modal
           title={card && card.copyType === 'search' ?  '鎼滅储鏉′欢-澶嶅埗' : '鎼滅储鏉′欢-缂栬緫'}
+          wrapClassName="mk-scroll-modal"
           visible={visible}
           width={850}
           maskClosable={false}
@@ -362,13 +355,27 @@
           destroyOnClose
         >
           <SearchForm
-            dict={dict}
             card={this.state.card}
             formlist={this.state.formlist}
             inputSubmit={this.handleSubmit}
             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>
     )
   }

--
Gitblit v1.8.0