king
2024-05-21 66bdbc1df92e8ec4a5108a4e0323e25a7b9ff8f8
src/tabviews/custom/components/table/normal-table/index.jsx
@@ -2,6 +2,7 @@
import PropTypes from 'prop-types'
import { is, fromJS } from 'immutable'
import { Collapse } from 'antd'
import moment from 'moment'
import Api from '@/api'
import UtilsDM from '@/utils/utils-datamanage.js'
@@ -152,6 +153,11 @@
      _config.colsCtrls = null
    }
    let columns = _config.cols
    if (_config.hasExtend) {
      columns = this.getCols(_config.cols, BData, _config.setting.extendTime)
    }
    this.setState({
      pageSize: setting.pageSize || 10,
      BID: BID || '',
@@ -161,7 +167,7 @@
      config: _config,
      setting: setting,
      actions: _config.action,
      columns: _config.cols,
      columns: columns,
      search: _config.$searches,
      allSearch
    })
@@ -377,6 +383,130 @@
    window.GLOB.SyncData.delete(config.dataName)
    MKEmitter.removeListener('transferSyncData', this.transferSyncData)
  }
  getCols = (cols, BData, time) => {
    let _cols = []
    let weeks = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
    let excols = (col) => {
      let _s = []
      let _marks = col.marks || []
      let names = []
      let fields = []
      for (let i = 0; i < col.quota; i++) {
        fields.push(col.field + (i === 0 ? '' : i))
        if (col.colUnit === 'day') {
          let hasweek = col.dayFormat.indexOf('week') > -1
          let format = col.dayFormat.replace(/\sweek/, '')
          let day = moment().add(col.shift + i, 'days').format(format)
          if (hasweek) {
            let _w = moment().add(col.shift + i, 'days').weekday()
            day = day + ' ' + weeks[_w]
          }
          names.push(day)
        } else {
          let format = col.hourFormat
          if (format === 'H point') {
            format = 'H点'
          }
          let hour = moment(time).add(col.shift + i, 'hours').format(format)
          if (format === 'h:00') {
            if (hour === '12:00') {
              hour = hour + ' pm'
            } else if (hour === moment(time).add(col.shift + i, 'hours').format('H:00')) {
              hour = hour + ' am'
            } else {
              hour = hour + ' pm'
            }
          }
          names.push(hour)
        }
      }
      if (col.supField) {
        names = []
        let val = ''
        if (BData) {
          let field = col.supField.toLowerCase()
          Object.keys(BData).forEach(key => {
            if (key.toLowerCase() === field) {
              val = BData[key] + ''
            }
          })
        }
        if (val) {
          names = val.split(',')
          if (names.length > fields.length) {
            names.length = fields.length
          } else if (fields.length > names.length) {
            fields.length = names.length
          }
        }
      }
      if (names.length === 0) return _s
      _s = fields.map((f, i) => {
        return {
          type: 'text',
          Align: col.Align,
          Width: col.Width,
          field: f,
          label: names[i],
          uuid: col.uuid + i,
          marks: _marks.filter(mark => mark.field[0] === f || !fields.includes(mark.field[0]))
        }
      })
      return _s
    }
    cols.forEach(col => {
      if (col.type === 'extend') {
        let exs = excols(col)
        _cols.push(...exs)
      } else if (col.type === 'colspan') {
        let subs = []
        col.subcols.forEach(subcol => {
          if (subcol.type === 'extend') {
            let exs = excols(subcol)
            subs.push(...exs)
          } else {
            subs.push(col)
          }
        })
        if (subs.length) {
          _cols.push({...col, subcols: subs})
        }
      } else {
        _cols.push(col)
      }
    })
    return _cols
  }
  resetCols = (BData) => {
    const { config } = this.state
    let columns = this.getCols(config.cols, BData, config.setting.extendTime)
    this.setState({
      columns: columns,
      data: [],
      selectedData: [],
      total: 0
    })
  }
  /**
@@ -780,6 +910,9 @@
      if (!setting.supModule || setting.supModule !== MenuID) return
  
      if (id !== this.state.BID || id !== '') {
        if (config.parCtrl) {
          this.resetCols(data)
        }
        this.setState({
          pageIndex: 1,
          BID: id,
@@ -805,7 +938,7 @@
    if (config.uuid !== menuId) return
    if (config.supNodes) {
      if (position === 'mainline' || position === 'popclose') {
      if (['mainline', 'maingrid', 'popclose'].includes(position)) {
        let supNode = this.supModules[this.supModules.length - 1]
        config.supNodes.forEach((item, i) => {
          setTimeout(() => {
@@ -834,8 +967,8 @@
        } else {
          this.reloadtable(btn, id)
        }
      } else if ((position === 'mainline' || position === 'popclose') && config.setting.supModule && BID) { // 刷新源组件时,附带刷新上级行与当前组件
        MKEmitter.emit('reloadData', config.setting.supModule, BID)
      } else if (['mainline', 'maingrid', 'popclose'].includes(position) && config.setting.supModule) {
        MKEmitter.emit('reloadData', config.setting.supModule, position === 'maingrid' ? '' : BID)
      } else {
        this.reloadtable(btn, id)
      }
@@ -904,6 +1037,7 @@
        data={this.state.data}
        fields={config.columns}
        total={this.state.total}
        parCtrl={config.parCtrl}
        colsCtrls={config.colsCtrls}
        lineMarks={config.lineMarks}
        loading={this.state.loading}