Newer
Older
xc-business-system / src / commonMethods / useMergeTableRow.ts
/**
 * 封装表格指定行单元格
 * @param data 表格数据
 * @param merge 合并的列表头字段数组
 * @returns
 */
export function useMergeTableRow(data: any, merge: any) {
  // let data = deepCopy(list)
  if (!merge || merge.length === 0) {
    return data
  }
  merge.forEach((m: any) => {
    const mList = {} as any
    data = data.map((v: any, index: number) => {
      const rowVal = v[m]
      if (mList[rowVal] && mList[rowVal].newIndex === index) {
        mList[rowVal].num++
        mList[rowVal].newIndex++
        data[mList[rowVal].index][`${m}-span`].rowspan++
        v[`${m}-span`] = {
          rowspan: 0,
          colspan: 0,
        }
      }
      else {
        mList[rowVal] = { num: 1, index, newIndex: index + 1 }
        v[`${m}-span`] = {
          rowspan: 1,
          colspan: 1,
        }
      }
      return v
    })
  })
  return data
}

export function mergeTableRow({ row, column }: any) {
  // console.log(row, column, rowIndex, columnIndex);
  const span = `${column.property}-span`
  if (row[span]) {
    return row[span]
  }
}
// 初始化列表数据
export function initTableRow(data: any) {
  let tableData = []
  tableData = data.map((item: any) => {
    const obj = {} as { [key: string]: any }
    for (const i in item) {
      if (!i.includes('-span')) {
        obj[i] = item[i]
      }
    }
    console.log(obj, 'obj')
    return obj
  })
  return tableData
}