king
2023-08-17 c7aece35a62b6e91fd98a625bf0e53f64bfbd18d
src/tabviews/zshare/topSearch/index.jsx
@@ -7,17 +7,18 @@
import md5 from 'md5'
import Api from '@/api'
import options from '@/store/options.js'
import asyncComponent from '@/utils/asyncComponent'
import asyncSpinComponent from '@/utils/asyncSpinComponent'
import Utils from '@/utils/utils.js'
import MKEmitter from '@/utils/events.js'
import MKInput from './mkInput'
import './index.scss'
const MutilForm = asyncSpinComponent(() => import('./advanceform'))
const MKCheckCard = asyncComponent(() => import('@/tabviews/zshare/mutilform/mkCheckCard'))
const MKCheckCard = asyncComponent(() => import('./mkCheckCard'))
const MKCheck = asyncComponent(() => import('@/tabviews/zshare/mutilform/mkCheck'))
const MKSwitch = asyncComponent(() => import('@/tabviews/zshare/mutilform/mkSwitch'))
const MKRadio = asyncComponent(() => import('./mkRadio'))
const MKSelect = asyncComponent(() => import('./mkSelect'))
const DateGroup = asyncComponent(() => import('./dategroup'))
const MKDatePicker = asyncComponent(() => import('./mkDatePicker'))
@@ -25,8 +26,7 @@
class MainSearch extends Component {
  static propTpyes = {
    BID: PropTypes.any,          // 父级Id,用于查询下拉选择项
    config: PropTypes.object,    // 组件配置信息(自定义页面)
    refreshdata: PropTypes.func  // 刷新数据
    config: PropTypes.object,    // 组件配置信息
  }
  state = {
@@ -51,8 +51,6 @@
    let advanceValues = []
    let linkFields = {}
    let record = {}
    let hasReqFields = false
    let forbid = false // header中不设置高级搜索
    let _setting = {showAdv: false, show: false, style: null}
    
@@ -66,6 +64,7 @@
      _setting.labelCol = {style: {width: _setting.labelwidth + '%'}}
      _setting.wrapperCol = {style: {width: (100 - _setting.labelwidth) + '%'}}
      _setting.borderRadius = config.wrap.borderRadius
      _setting.resetContrl = config.wrap.resetContrl || 'init'
    }
    
    if (config.type === 'search') {
@@ -113,10 +112,6 @@
        item.field = item.field + '@tail@'
      }
      if (item.required) {
        hasReqFields = true
      }
      if (item.advanced && !forbid) {
        _setting.showAdv = true
      } else {
@@ -132,7 +127,9 @@
            val = val + ':00'
          }
        }
        advanceValues.push({field: item.field, type: item.type, label: item.label, value: val})
        if (['text', 'date', 'datemonth', 'dateweek', 'daterange'].includes(item.type)) {
          advanceValues.push({field: item.field, type: item.type, label: item.label, value: val})
        }
      }
      if (item.type === 'group') {
@@ -142,7 +139,7 @@
        record[item.field] = item.initval
      }
      
      if (['select', 'link', 'multiselect', 'checkcard'].includes(item.type)) {
      if (['select', 'link', 'multiselect', 'checkcard', 'radio'].includes(item.type)) {
        item.options = item.options || []
        item.options = item.options.filter(op => !op.Hide)
        if (item.setAll === 'true' && ['select', 'link'].includes(item.type)) {
@@ -158,12 +155,12 @@
        if (item.resourceType === '1' && item.dataSource) {
          let _option = Utils.getSelectQueryOptions(item)
          if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
          if (window.GLOB.debugger === true) {
            console.info(_option.sql)
          }
          // 测试系统单个请求
          if (!window.GLOB.mkHS && options.sysType === 'local' && !window.GLOB.systemType) {
          if (!window.GLOB.mkHS && window.GLOB.sysType === 'local' && !window.GLOB.systemType) {
            deForms.push({
              ...item,
              arr_field: _option.field,
@@ -178,6 +175,10 @@
          }
        }
        item.oriOptions = fromJS(item.options).toJS()
        if (item.type === 'checkcard' && item.multiple === 'dropdown' && item.resourceType === '0') {
          this.resetCheckcard(item)
        }
      }
      fieldMap.set(item.field, item)
@@ -213,16 +214,48 @@
    this.setState({
      setting: _setting,
      hasReqFields,
      hasReqFields: config.$s_req,
      advanceValues,
      searchlist: _list
    }, () => {
      if (!window.GLOB.mkHS && options.sysType === 'local' && window.GLOB.systemType !== 'production') {
      if (!window.GLOB.mkHS && window.GLOB.sysType === 'local' && window.GLOB.systemType !== 'production') {
        this.improveSimpleSearch(deForms)
      } else if (mainItems.length > 0 || localItems.length > 0) {
        this.improveSearch(mainItems, localItems)
      }
    })
  }
  resetCheckcard = (item) => {
    let pid = item.resourceType === '0' ? 'pid' : item.parentField
    let _options = []
    let _others = []
    item.oriOptions.forEach(op => {
      if (op[pid] === item.mark) {
        _options.push(op)
      } else {
        _others.push(op)
      }
    })
    _options = _options.map(op => {
      op.children = []
      _others = _others.filter(cell => {
        if (cell[pid] === op.$value) {
          op.children.push(cell)
          return false
        }
        return true
      })
      op.subIds = op.children.map(cell => cell.$value)
      return op
    })
    item.oriOptions = _options
    item.options = _options
  }
  // 查询下拉菜单
@@ -288,8 +321,8 @@
      if (window.GLOB.mkHS) { // 云端数据验证
        mainparam.open_key = Utils.encryptOpenKey(mainparam.secretkey, mainparam.timestamp)
        if (options.cloudServiceApi) {
          mainparam.rduri = options.cloudServiceApi
        if (window.GLOB.cloudServiceApi) {
          mainparam.rduri = window.GLOB.cloudServiceApi
          mainparam.userid = sessionStorage.getItem('CloudUserID') || ''
          mainparam.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
        }
@@ -384,7 +417,7 @@
  resetSearch = (result) => {
    let _searchlist = fromJS(this.state.searchlist).toJS().map(item => {
      if (['select', 'link', 'multiselect', 'checkcard'].includes(item.type) && result[item.field] && result[item.field].length > 0) {
      if (['select', 'link', 'multiselect', 'checkcard', 'radio'].includes(item.type) && result[item.field] && result[item.field].length > 0) {
        let options = []
        let map = new Map()
        let all = false
@@ -432,6 +465,10 @@
        })
        item.oriOptions = [...item.oriOptions, ...options]
        if (item.type === 'checkcard' && item.multiple === 'dropdown') {
          this.resetCheckcard(item)
        }
      }
      if (item.linkField) {
@@ -514,6 +551,8 @@
        content = <DateGroup position={index} config={item} onChange={(val, type) => this.dateGroupChange(val, type, item)} />
      } else if (item.type === 'checkcard') {
        content = <MKCheckCard config={item} onChange={(val) => this.cardChange(val, item)} />
      } else if (item.type === 'radio') {
        content = <MKRadio config={item} onChange={(val) => this.recordChange(val, false, item)} />
      } else if (item.type === 'check') {
        content = <MKCheck config={item} onChange={(val) => this.recordChange(val, false, item)} />
      } else if (item.type === 'switch') {
@@ -593,7 +632,9 @@
                val = val + ':00'
              }
            }
            advanceValues.push({field: item.field, type: item.type, label: item.label, value: val})
            if (['text', 'date', 'datemonth', 'dateweek', 'daterange'].includes(item.type)) {
              advanceValues.push({field: item.field, type: item.type, label: item.label, value: val})
            }
          }
        })
        this.setState({advanceValues})
@@ -648,7 +689,12 @@
          this.sign = ''
        }, 2000)
        
        this.props.refreshdata(searches)
        if (this.props.refreshdata) {
          this.props.refreshdata(searches)
        } else {
          window.GLOB.SearchBox.set(this.props.config.$searchId, searches)
          MKEmitter.emit('searchRefresh', this.props.config.$searchId)
        }
      })
    })
  }
@@ -657,10 +703,16 @@
   * @description 搜索条件重置
   */
  handleReset = () => {
    const { setting } = this.state
    let record = {}
    let advanceValues = []
    let searchlist = this.state.searchlist.map(item => {
      item.initval = item.oriInitval
      if (setting.resetContrl === 'clear' && ['text', 'date', 'datemonth', 'dateweek', 'daterange'].includes(item.type)) {
        item.initval = ''
      }
      if (item.type === 'group') {
        record[item.datefield] = item.initval
@@ -677,7 +729,9 @@
            val = val + ':00'
          }
        }
        advanceValues.push({field: item.field, type: item.type, label: item.label, value: val})
        if (['text', 'date', 'datemonth', 'dateweek', 'daterange'].includes(item.type)) {
          advanceValues.push({field: item.field, type: item.type, label: item.label, value: val})
        }
      }
      return item
@@ -792,7 +846,9 @@
            val = val + ':00'
          }
        }
        advanceValues.push({field: item.field, type: item.type, label: item.label, value: val})
        if (['text', 'date', 'datemonth', 'dateweek', 'daterange'].includes(item.type)) {
          advanceValues.push({field: item.field, type: item.type, label: item.label, value: val})
        }
      }
    })