king
2024-08-28 c10fc10d5fd307a7b334bcde6af5c1175aaa0410
src/utils/utils.js
@@ -712,6 +712,144 @@
    return searchText.join(' AND ')
  }
  static getSearchkeys (searches) {
    let searchText = []
    searches.forEach(item => {
      if (item.forbid || !item.value) return
      let cell = {
        key: item.key,
        match: item.match,
        type: 'text',
        value: item.value
      }
      if (item.type === 'text' || item.type === 'select') { // 综合搜索,文本或下拉,所有字段拼接
        if (/,/.test(item.key)) {
          cell.type = 'text_or'
        }
      } else if (item.type === 'multi') {
        cell.type = 'text_multi'
      } else if (item.type === 'date') {
        let _val = item.value
        let timetail = ''
        if (item.match === '<' || item.match === '<=') { // 时间为<=时,匹配后一天的0点,匹配方式为<
          cell.match = '<'
          if (item.precision === 'day') {
            _val = moment(_val, 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD')
          }
        }
        if (item.match === '=') {
          timetail = ''
        } else if (item.precision === 'day') {
          timetail = ' 00:00:00.000'
        } else if (item.precision === 'hour') {
          timetail = ':00:00.000'
        } else if (item.precision === 'minute') {
          timetail = ':00.000'
        } else if (item.precision === 'second') {
          timetail = '.000'
        }
        cell.value = _val + timetail
      }
      if (item.type === 'datemonth') { // 月-过滤条件,从月开始至结束,结束时间为月末加一天的0点,方式为<
        if (item.match === '=') {
          searchText.push(cell)
        } else {
          let _startval = moment(item.value, 'YYYY-MM').startOf('month').format('YYYY-MM-DD') + ' 00:00:00.000'
          let _endval = moment(item.value, 'YYYY-MM').endOf('month').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000'
          searchText.push({
            key: item.key,
            match: '>=',
            type: 'text',
            value: _startval
          }, {
            key: item.key,
            match: '<',
            type: 'text',
            value: _endval
          })
        }
      } else if (item.type === 'dateweek') { // 周-过滤条件
        let _startval = moment(item.value, 'YYYY-MM-DD' ).startOf('week').format('YYYY-MM-DD') + ' 00:00:00.000'
        let _endval = moment(item.value, 'YYYY-MM-DD').endOf('week').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000'
        searchText.push({
          key: item.key,
          match: '>=',
          type: 'text',
          value: _startval
        }, {
          key: item.key,
          match: '<',
          type: 'text',
          value: _endval
        })
      } else if (item.type === 'daterange') {
        let val = item.value.split(',')
        let _startval = ''
        let _endval = ''
        if (item.precision === 'day') {
          _startval = val[0] + ' 00:00:00.000'
          _endval = moment(val[1], 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000'
        } else if (item.precision === 'hour') {
          _startval = val[0] + ':00:00.000'
          _endval = val[1] + ':00:00.000'
        } else if (item.precision === 'minute') {
          _startval = val[0] + ':00.000'
          _endval = val[1] + ':00.000'
        } else if (item.precision === 'second') {
          _startval = val[0] + '.000'
          _endval = val[1] + '.000'
        }
        let _skey = item.key
        let _ekey = item.key
        if (/,/.test(item.key)) {
          _skey = item.key.split(',')[0]
          _ekey = item.key.split(',')[1]
        }
        searchText.push({
          key: _skey,
          match: '>=',
          type: 'text',
          value: _startval
        }, {
          key: _ekey,
          match: '<',
          type: 'text',
          value: _endval
        })
      } else if (item.type === 'range') {
        let val = item.value.split(',')
        searchText.push({
          key: item.key,
          match: '>=',
          type: 'number',
          value: val[0] || -999999999
        }, {
          key: item.key,
          match: '<=',
          type: 'number',
          value: val[1] || 999999999
        })
      } else {
        searchText.push(cell)
      }
    })
    return searchText
  }
  /**
   * @description 获取搜索用于正则替换
   * @param {Array}   searches     搜索条件