king
2025-02-06 d1cd5af5adb53e91efdd278328e1b6f8ad834fb5
src/menu/components/share/searchcomponent/index.jsx
@@ -2,13 +2,9 @@
import PropTypes from 'prop-types'
import { is, fromJS } from 'immutable'
import { Modal, notification } from 'antd'
import moment from 'moment'
import MKEmitter from '@/utils/events.js'
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 SearchForm from '@/templates/sharecomponent/searchcomponent/searchform'
@@ -24,7 +20,6 @@
  }
  state = {
    dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS,
    searchlist: null,    // 搜索条件集
    sqlVerifing: false,  // sql验证中
    visible: false,      // 模态框控制
@@ -69,12 +64,24 @@
    MKEmitter.removeListener('addSearch', this.addSearch)
  }
  addSearch = (cardId, element) => {
  addSearch = (cardId, element, type) => {
    if (cardId !== this.props.config.uuid) return
    const { searchlist } = this.state
    this.setState({searchlist: [...searchlist, element]})
    if (type === 'replace') {
      delete element.focus
      this.setState({
        searchlist: searchlist.map(cell => {
          if (cell.field && cell.field.toLowerCase() === element.field.toLowerCase()) {
            return element
          }
          return cell
        }),
      })
    } else {
      this.setState({searchlist: [...searchlist, element]})
    }
    this.handleSearch(element)
  }
@@ -98,6 +105,7 @@
   * @description 搜索条件编辑,获取搜索条件表单信息
   */
  handleSearch = (card) => {
    const { config } = this.props
    const { searchlist } = this.state
    let linkableFields = []
@@ -112,10 +120,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, [], 'header')
      formlist: getSearchForm(card, linkableFields, columns, 'header')
    })
  }
@@ -156,7 +171,6 @@
    this.searchFormRef.handleConfirm().then(res => {
      let fieldrepet = false // 字段重复
      let labelrepet = false // 提示文字重复
      _searchlist = _searchlist.filter(item => !item.origin || item.uuid === res.uuid) // 去除系统项
@@ -184,8 +198,6 @@
          if (setFields.length < itemFields.length + resFields.length && (res.type !== 'date' || item.type !== 'date')) {
            fieldrepet = true
          } else if (item.label === res.label) {
            labelrepet = true
          }
        }
@@ -203,38 +215,19 @@
          duration: 5
        })
        return
      } else if (labelrepet) {
        notification.warning({
          top: 92,
          message: '名称已存在!',
          duration: 5
        })
        return
      }
      if (['select', 'multiselect', 'link', 'checkcard'].includes(res.type) && res.resourceType === '1' && /\s/.test(res.dataSource)) {
      if (['select', 'multiselect', 'link', 'checkcard'].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.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
        param.LText = param.LText.replace(/@\$|\$@/ig, '').replace(/@(BID|ID|LoginUID|SessionUid|UserID|Appkey|time_id)@/ig, `'${param.timestamp}'`)
        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.secretkey = Utils.encrypt('', param.timestamp)
        if (window.GLOB.mainSystemApi && res.database === 'sso') {
          param.rduri = window.GLOB.mainSystemApi
        }
        Api.genericInterface(param).then(result => {
          if (result.status) {
        Api.sDebug(sql).then(result => {
          if (result.status || result.ErrCode === '-2') {
            this.setState({
              sqlVerifing: false,
              searchlist: _searchlist,
@@ -266,19 +259,19 @@
   */
  deleteElement = (card) => {
    const { config } = this.props
    let _this = this
    let that = this
    confirm({
      content: `确定删除 - ${card.label} ?`,
      onOk() {
        let _searchlist = fromJS(_this.state.searchlist).toJS()
        let _searchlist = fromJS(that.state.searchlist).toJS()
        _searchlist = _searchlist.filter(item => item.uuid !== card.uuid)
        _this.setState({
        that.setState({
          searchlist: _searchlist
        }, () => {
          _this.props.updatesearch({...config, search: _searchlist})
          that.props.updatesearch({...config, search: _searchlist})
        })
      },
      onCancel() {}
@@ -286,7 +279,7 @@
  }
  render() {
    const { dict, searchlist, visible, sqlVerifing } = this.state
    const { searchlist, visible, sqlVerifing } = this.state
    return (
      <div className={'model-custom-header-search-list search-length' + (searchlist.length)}>
@@ -300,7 +293,7 @@
        <Modal
          title="搜索条件-编辑"
          visible={visible}
          width={850}
          width={950}
          maskClosable={false}
          onOk={this.handleSubmit}
          confirmLoading={sqlVerifing}
@@ -308,7 +301,6 @@
          destroyOnClose
        >
          <SearchForm
            dict={dict}
            card={this.state.card}
            formlist={this.state.formlist}
            inputSubmit={this.handleSubmit}