| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | /** * * @param {Array} mergeKeys  要合并的keys数组 * @param {Array} tableData  渲染table组件的原始数据 */export function handleTableSpan(mergeKeys, tableData) {  const spanObj = {}  if (mergeKeys instanceof Array && tableData instanceof Array && mergeKeys.length && tableData.length) {    mergeKeys.forEach(key => {      spanObj[key] = []      let position = 0      tableData.forEach((item, index) => {        if (index === 0) {          spanObj[key].push(1)          position = 0        } else {          // 如果要合并的key 值是引用数据类型,我们要先把 数组或者 对象转成json 格式然后对比          if (tableData[index][key] instanceof Array || tableData[index][key] instanceof Object) {            if (JSON.stringify(tableData[index][key]) === JSON.stringify(tableData[index - 1][key])) {              spanObj[key][position] += 1              spanObj[key].push(0)            } else {              spanObj[key].push(1)              position = index            }          } else {            if (tableData[index][key] === tableData[index - 1][key]) {              spanObj[key][position] += 1              spanObj[key].push(0)            } else {              spanObj[key].push(1)              position = index            }          }        }      })    })    return spanObj  }}/** * * @param {Object} tableObj table组件 span-method 方法四个参数{ row, column, rowIndex, columnIndex } 的对象 * @param {Array} mergeKeys 要合并的keys数组 * @param {Object} rowspanObj 经过 handleTableSpan 方法处理tableData 数据,得到的单元格的合并行数对象 * @param {Boolean} notEmpty 是否要合并有 ’/‘ 单元格,此参数非必传。默认不合并, notEmpty = true 则合并 */export function handleObjectSpanMethod(tableObj, mergeKeys, rowspanObj, notEmpty) {  if (mergeKeys instanceof Array && rowspanObj instanceof Object) {    const { row, column, rowIndex, columnIndex } = tableObj    for (let i = 0; i < mergeKeys.length; i++) {      let term      if (notEmpty) {        term = column.property === mergeKeys[i] && row[mergeKeys[i]] !== '/'      } else {        term = column.property === mergeKeys[i]      }      if (term) {        const _row = rowspanObj[mergeKeys[i]][rowIndex]        const _col = _row > 0 ? 1 : 0        return {          rowspan: _row,          colspan: _col        }      }    }  }}
 |