| | |
| | | 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' |
| | |
| | | imgSrc: '', // 图片路径 |
| | | lineMarks: null, // 行标记 |
| | | activeIndex: null, // 标记当前选中行 |
| | | rowspan: null // 行合并字段信息 |
| | | rowspans: null // 行合并字段信息 |
| | | } |
| | | |
| | | UNSAFE_componentWillMount () { |
| | |
| | | let _columns = [] |
| | | let radio = 5 // 虚化比例 |
| | | let _format = false // 是否虚化处理 |
| | | let rowspan = null |
| | | let rowspans = [] |
| | | |
| | | if (window.GLOB.dataFormat && menuType !== 'HS' && memberLevel) { |
| | | _format = true |
| | |
| | | |
| | | item.subcols.forEach(col => { |
| | | if (col.rowspan === 'true') { |
| | | rowspan = col |
| | | rowspans.push(col.field) |
| | | } |
| | | if (_format && !Math.floor(Math.random() * radio)) { |
| | | col.blur = true |
| | |
| | | } |
| | | } else { |
| | | if (item.rowspan === 'true') { |
| | | rowspan = item |
| | | rowspans.push(item.field) |
| | | } |
| | | if (_format && !Math.floor(Math.random() * radio)) { |
| | | item.blur = true |
| | |
| | | _columns.push(cell) |
| | | }) |
| | | |
| | | if (rowspans.length === 0) { |
| | | rowspans = null |
| | | } |
| | | |
| | | this.setState({ |
| | | columns: _columns, |
| | | pageSize: pageSize ? pageSize : 10, |
| | | lineMarks: lineMarks, |
| | | rowspan: rowspan |
| | | lineMarks, |
| | | rowspans |
| | | }) |
| | | } |
| | | |
| | |
| | | </div> |
| | | ), |
| | | props: { |
| | | rowSpan: record.$$rowspan, |
| | | rowSpan: record['$$' + item.field], |
| | | } |
| | | } |
| | | } |
| | |
| | | </div> |
| | | ), |
| | | props: { |
| | | rowSpan: record.$$rowspan, |
| | | rowSpan: record['$$' + item.field], |
| | | } |
| | | } |
| | | } |
| | |
| | | } 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 = '' |
| | | } |
| | |
| | | } else if (col.type === 'picture') { |
| | | let photos = [] |
| | | try { |
| | | photos = record[col.field].split(',') |
| | | photos = record[col.field] + '' |
| | | photos = photos.split(',') |
| | | } catch { |
| | | photos = [] |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | 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 |
| | |
| | | _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 = { |