king
2023-11-03 eb0482b3fc2e91a626baa6ac73e75e0b0038f552
src/tabviews/custom/components/table/edit-table/index.jsx
@@ -35,7 +35,8 @@
    pageIndex: 1,         // 页码
    pageSize: 10,         // 每页数据条数
    orderBy: '',          // 排序
    search: ''            // 搜索条件数组,使用时需分场景处理
    search: '',           // 搜索条件数组,使用时需分场景处理
    allSearch: null
  }
  /**
@@ -45,10 +46,10 @@
  UNSAFE_componentWillMount () {
    let _config = fromJS(this.props.config).toJS()
    let setting = {..._config.setting, ..._config.wrap}
    setting.tableId = Utils.getuuid()
    let BID = ''
    let BData = ''
    setting.tableId = Utils.getuuid().substr(-6).toUpperCase()
    if (_config.setting.supModule) {
      BData = window.GLOB.CacheData.get(_config.setting.supModule)
@@ -75,9 +76,12 @@
    })
    let _columns = []
    setting.initId = ''
    let triMap = new Map()
    let initId = ''
    setting.hasSubmit = false
    if (setting.commit === 'change' || setting.commit === 'simple') {
      setting.commit = 'change'
    }
    let getColumns = (cols) => {
      return cols.filter(item => {
@@ -114,14 +118,25 @@
          }
          if (item.editable === 'true') {
            setting.hasSubmit = true
            if (!setting.initId) {
              setting.initId = item.uuid
            setting.hasSubmit = setting.commit !== 'change'
            item.$ctrl = setting.commit === 'change'
            if (!initId) {
              initId = item.uuid
            }
            if (item.type === 'text' && (item.editType === 'switch' || item.editType === 'select')) {
              triMap.set(item.uuid, item.editType)
            if (item.enter === '$sub') {
              item.enter = '$noAct'
            } else if (item.enter === '$next') {
              item.enter = '$next_' + initId
            }
            if (item.type === 'text' && item.editType === 'select') {
            if (item.linkSubField && item.linkSubField.length === 0) {
              item.linkSubField = null
            }
            if (item.type === 'number') {
            } else if (item.editType === 'select') {
              item.options = item.options || []
              item.options = item.options.filter(cell => {
                cell.value = cell.Value
@@ -129,6 +144,16 @@
        
                return !cell.Hide
              })
            } else if (item.editType === 'popSelect') {
              if (item.pops) {
                item.pops.forEach(cell => {
                  cell.linkSubField = item.linkSubField
                  this.resetPop(cell)
                  cell.tabName = cell.initval.replace(/^tab:/, '')
                })
              } else {
                this.resetPop(item)
              }
            }
          }
        }
@@ -139,28 +164,22 @@
    _columns = getColumns(_config.cols)
    if (triMap.size > 0) {
      let setColumns = (cols) => {
        return cols.map(item => {
          if (item.type === 'colspan') {
            item.subcols = setColumns(item.subcols)
          } else if (item.editable === 'true' && triMap.has(item.enter)) {
            item.triType = 'click'
          }
          return item
        })
      }
      _columns = setColumns(_columns)
      if (setting.initId && triMap.has(setting.initId)) {
        setting.triType = 'click'
      }
    }
    setting.initId = initId
    if (!_config.lineMarks || _config.lineMarks.length === 0) {
      _config.lineMarks = null
    }
    let allSearch = null
    if (_config.colsCtrls && _config.colsCtrls.length > 0) {
      allSearch = [{key: 'BID', value: BID || ''}]
      allSearch.push(..._config.$searches)
      if (_config.setting.useMSearch) {
        let mainSearch = window.GLOB.SearchBox.get(_config.$searchId) || []
        allSearch.push(...mainSearch)
      }
    } else {
      _config.colsCtrls = null
    }
    this.setState({
@@ -172,7 +191,8 @@
      setting: setting,
      actions: _config.action,
      columns: _columns,
      search: _config.$searches
      search: _config.$searches,
      allSearch
    }, () => {
      if (_config.setting.onload === 'true') {
        setTimeout(() => {
@@ -180,6 +200,67 @@
        }, _config.setting.delay || 0)
      }
    })
  }
  resetPop = (config) => {
    let arrfield = config.columns.map(f => f.field)
    if (config.linkSubField && config.linkSubField.length > 0) {
      config.linkSubField.forEach(n => {
        if (!arrfield.includes(n)) {
          arrfield.push(n)
        }
      })
    }
    if (sessionStorage.getItem('dataM') === 'true') { // 数据权限
      config.dataSource = config.dataSource.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'')
    } else {
      config.dataSource = config.dataSource.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'')
    }
    config.dataSource = config.dataSource.replace(/@LoginUID@/ig, `'${sessionStorage.getItem('LoginUID') || ''}'`)
    config.dataSource = config.dataSource.replace(/@SessionUid@/ig, `'${localStorage.getItem('SessionUid') || ''}'`)
    config.dataSource = config.dataSource.replace(/@UserID@/ig, `'${sessionStorage.getItem('UserID') || ''}'`)
    config.dataSource = config.dataSource.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`)
    if (/\s/.test(config.dataSource)) { // 拼接别名
      config.dataSource = '(' + config.dataSource + ') tb'
    }
    let labels = {}
    config.cols = []
    config.columns.forEach(col => {
      labels[col.field] = col.label
      if (col.Hide === 'true') return
      config.cols.push({
        dataIndex: col.field,
        title: col.label,
        sorter: col.IsSort === 'true',
        width: col.Width || 120
      })
    })
    let placeholder = ''
    if (!config.searchKey) {
      config.onload = 'true'
    } else {
      placeholder = []
      config.searchKey.split(',').forEach(key => {
        if (!labels[key]) {
          placeholder = ''
        } else if (placeholder) {
          placeholder.push(labels[key])
        }
      })
      placeholder = placeholder ? placeholder.join('、') : ''
    }
    config.placeholder = placeholder
    config.arr_field = arrfield.join(',')
  }
  /**
@@ -255,14 +336,21 @@
        total = data[data.length - 1].mk_total || 0
      }
      let allSearch = null
      if (config.colsCtrls) {
        allSearch = [{key: 'BID', value: BID || ''}]
        allSearch.push(...searches)
      }
      this.setState({
        data: data,
        selectedData: [],
        allSearch: allSearch,
        total: total,
        loading: false
      })
      MKEmitter.emit('transferData', config.uuid, data)
      MKEmitter.emit('transferData' + setting.tableId, data)
      if (result.message) {
        if (result.ErrCode === 'Y') {
@@ -303,6 +391,11 @@
  async loadmainLinedata (id) {
    const { setting, config, search, orderBy, BID, pageIndex, pageSize, BData } = this.state
    if (config.forbidLine) {
      this.reloadtable()
      return
    }
    let searches = fromJS(search).toJS()
    if (config.setting.useMSearch) { // 主表搜索条件
      let mainSearch = window.GLOB.SearchBox.get(config.$searchId) || []
@@ -365,7 +458,7 @@
        return item
      })
      MKEmitter.emit('transferData', config.uuid, _data, 'line')
      MKEmitter.emit('transferData' + setting.tableId, _data, 'line')
      MKEmitter.emit('resetSelectLine', config.uuid, _data.$$uuid, _data)
      this.setState({
@@ -580,7 +673,7 @@
  }
  render() {
    const { BID, setting, actions, config, columns, BData, data, selectedData } = this.state
    const { BID, setting, actions, config, columns, BData, data, selectedData, allSearch } = this.state
    let style = {...config.style}
    if (config.wrap.empty === 'hidden' && data.length === 0) {
@@ -606,9 +699,11 @@
          setting={setting}
          columns={columns}
          MenuID={config.uuid}
          allSearch={allSearch}
          submit={config.submit}
          fields={config.columns}
          total={this.state.total}
          colsCtrls={config.colsCtrls}
          lineMarks={config.lineMarks}
          loading={this.state.loading}
          refreshdata={this.refreshbytable}