king
2020-12-08 655ac8aef54bc134c1420c19975023182a10cae4
src/tabviews/zshare/normalTable/index.jsx
@@ -5,7 +5,6 @@
import { is, fromJS } from 'immutable'
import { Table, Affix, Typography, Modal, Icon } from 'antd'
import Utils from '@/utils/utils.js'
import { modifyTabview } from '@/store/action'
import asyncComponent from '@/utils/asyncComponent'
import MKEmitter from '@/utils/events.js'
@@ -52,7 +51,7 @@
    imgSrc: '',           // 图片路径
    lineMarks: null,      // 行标记
    activeIndex: null,    // 标记当前选中行
    rowspan: null         // 行合并字段信息
    rowspans: null        // 行合并字段信息
  }
  UNSAFE_componentWillMount () {
@@ -62,7 +61,7 @@
    let _columns = []
    let radio = 5          // 虚化比例
    let _format = false    // 是否虚化处理
    let rowspan = null
    let rowspans = []
    if (window.GLOB.dataFormat && menuType !== 'HS' && memberLevel) {
      _format = true
@@ -83,7 +82,7 @@
        item.subcols.forEach(col => {
          if (col.rowspan === 'true') {
            rowspan = col
            rowspans.push(col.field)
          }
          if (_format && !Math.floor(Math.random() * radio)) {
            col.blur = true
@@ -141,7 +140,7 @@
        }
      } else {
        if (item.rowspan === 'true') {
          rowspan = item
          rowspans.push(item.field)
        }
        if (_format && !Math.floor(Math.random() * radio)) {
          item.blur = true
@@ -183,11 +182,15 @@
      _columns.push(cell)
    })
    if (rowspans.length === 0) {
      rowspans = null
    }
    this.setState({
      columns: _columns,
      pageSize: pageSize ? pageSize : 10,
      lineMarks: lineMarks,
      rowspan: rowspan
      lineMarks,
      rowspans
    })
  }
@@ -397,7 +400,7 @@
              </div>
            ),
            props: {
              rowSpan: record.$$rowspan,
              rowSpan: record['$$' + item.field],
            }
          }
        }
@@ -421,7 +424,7 @@
              </div>
            ),
            props: {
              rowSpan: record.$$rowspan,
              rowSpan: record['$$' + item.field],
            }
          }
        }
@@ -506,7 +509,8 @@
    } else if (item.type === 'picture') {
      let photos = ''
      if (item.field && record.hasOwnProperty(item.field)) {
        photos = record[item.field].split(',')
        photos = record[item.field] + ''
        photos = photos.split(',')
      } else {
        photos = ''
      }
@@ -696,7 +700,8 @@
        } else if (col.type === 'picture') {
          let photos = []
          try {
            photos = record[col.field].split(',')
            photos = record[col.field] + ''
            photos = photos.split(',')
          } catch {
            photos = []
          }
@@ -989,9 +994,63 @@
    }
  }
  handleRowspan = (data) => {
    const { rowspans } = this.state
    if (!rowspans || data.length === 0) return data
    data = fromJS(data).toJS()
    data = data.reverse()
    data.forEach((item, index) => {
      if (index === 0) {
        rowspans.forEach(cell => {
          item['$' + cell] = 1
        })
      } else {
        let preItem = data[index - 1]
        rowspans.forEach((cell, i) => {
          if (i === 0) {
            if ((item[cell] || item[cell] === 0) && preItem[cell] === item[cell]) {
              item['$' + cell] = preItem['$' + cell] + 1
            } else {
              item['$' + cell] = 1
            }
          } else {
            if ((item[cell] || item[cell] === 0) && preItem[cell] === item[cell]) {
              item['$' + cell] = preItem['$' + cell] + 1
            } else {
              item['$' + cell] = 1
            }
            if (item['$' + cell] > item['$' + rowspans[i - 1]]) {
              item['$' + cell] = 1
            }
          }
        })
      }
    })
    data = data.reverse()
    data.forEach((item, index) => {
      if (index === 0) {
        rowspans.forEach(cell => {
          item['$$' + cell] = item['$' + cell]
        })
      } else {
        let preItem = data[index - 1]
        rowspans.forEach(cell => {
          if (preItem['$' + cell] > 1) {
            item['$$' + cell] = 0
          } else {
            item['$$' + cell] = item['$' + cell]
          }
        })
      }
    })
    return data
  }
  render() {
    const { setting, pickup, statFValue } = this.props
    const { selectedRowKeys, lineMarks, activeIndex, rowspan } = this.state
    const { selectedRowKeys, lineMarks, activeIndex } = this.state
    // 设置表格选择属性:单选、多选、不可选
    let rowSelection = null
@@ -1025,35 +1084,8 @@
      _data = _data.filter((item, index) => selectedRowKeys.includes(index))
    }
    if (rowspan) {
      let marks = {}
      let premark = {val: '', mark: ''}
      _data = _data.map(item => {
        if (item[rowspan.field]) {
          if (item[rowspan.field] !== premark.val) {
            premark = {val: item[rowspan.field], mark: Utils.getuuid()}
            marks[premark.mark] = 1
            item.$$mark = premark.mark
          } else {
            marks[premark.mark]++
            item.$$mark = premark.mark
          }
        } else {
          item.$$rowspan = 1
        }
        return item
      })
      _data = _data.map(item => {
        if (item.$$mark) {
          item.$$rowspan = marks[item.$$mark]
          marks[item.$$mark] = 0
        }
        return item
      })
    }
    _data = this.handleRowspan(_data)
    let _pagination = false
    if (setting.laypage !== 'false' && setting.laypage !== false) {
      _pagination = {