/** * 封装表格指定行单元格 * @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 } // 判断是否被修改 export function isMerge(data: any) { let result = false for (const i in data) { if (i.includes('-span')) { result = true } } return result } export function initTableLastRow(data: any) { const tableData = data if (!tableData.length) { return tableData } for (const i in tableData[tableData.length - 1]) { if (i.includes('-span')) { tableData[tableData.length - 1][i] = undefined } } return tableData }