From e695659c8c92087ab6e96eb682ea29e601ae4cc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=BF=94=E5=AE=87-=E6=97=85=E7=AE=A1=E5=AE=B6?= <153298343@qq.com> Date: Thu, 29 Dec 2022 10:16:05 +0800 Subject: [PATCH] up --- src/components/XyTable/index.vue | 6 +- src/utils/mergeTableRow.js | 62 +++ src/views/budget/budgetList.vue | 202 ++++++- src/views/budget/seeBudget.vue | 40 +- src/views/contract/contractList.vue | 9 +- .../components/examineRegistration.vue | 11 +- src/views/finance/paymentRegistrationList.vue | 5 +- .../statisticalReport/budgetProgress.vue | 527 ++++++++++-------- 8 files changed, 589 insertions(+), 273 deletions(-) create mode 100644 src/utils/mergeTableRow.js diff --git a/src/components/XyTable/index.vue b/src/components/XyTable/index.vue index a346aed..559a39d 100644 --- a/src/components/XyTable/index.vue +++ b/src/components/XyTable/index.vue @@ -51,6 +51,9 @@ export default { summaryMethod:{ type:Function }, + objectSpanMethod:{ + type:Function + }, treeProps:{ type:Object, default:()=> { @@ -120,12 +123,13 @@ export default { mounted() { }, render(h) { - let {summaryMethod,cellClick,btnWidth,selectClick,height,createIndexRow,tableStyle,treeProps,showSummary,showHeader,$scopedSlots,showIndex,defaultExpandAll,headerCellStyle,headerRowStyle,rowStyle,cellStyle,indent,tableHeight,tableItem,list,deleteClick,editorClick,rowClick} = this + let {summaryMethod,cellClick,btnWidth,selectClick,height,createIndexRow,tableStyle,treeProps,showSummary,showHeader,$scopedSlots,showIndex,defaultExpandAll,headerCellStyle,headerRowStyle,rowStyle,cellStyle,indent,tableHeight,tableItem,list,deleteClick,editorClick,rowClick,objectSpanMethod} = this return (
{ tableItem && tableItem.length>0 ? ( { + const mList = {} + data = data.map((v, index) => { + // 区分需要合并行的key值 + const rowVal = v[firstMerge] + '-' + v[m] + // 需要合并行的第二行以及之后行会走if + // m === firstMerge 判断需要合并的列是否是基准列,如果是则只满足前面的条件,如果不是则需满足前面+后面的条件 + if (mList[rowVal] && mList[rowVal].newIndex === index && (m === firstMerge ? true : data[index][firstMerge + '-span'].rowspan === 0)) { + // 判断受影响的列是否是需要合并的列 + const flag = firstMergeColNames.filter((f) => { + return f === m + }).length !== 0 + // 判断需要合并的列是否是基准列 + const mcFlag = mergeColNames.filter((mc) => { + return mc === firstMerge + }).length === 0 + // 判断基准列只有一行的时候,直接赋值rowspan和colspan为1 + if ((mcFlag && flag) || (flag && data[index][firstMerge + '-span'] && data[index][firstMerge + '-span'].rowspan === 1)) { + v[m + '-span'] = { + rowspan: 1, + colspan: 1 + } + } else { + // 判断基准列或其他需要合并列有多行时,第一行rowspan++ + data[mList[rowVal]['index']][m + '-span'].rowspan++ + // 需要合并行除了第一行之后其他行设置rowspan和colspan为0 + v[m + '-span'] = { + rowspan: 0, + colspan: 0 + } + mList[rowVal]['num']++ + mList[rowVal]['newIndex']++ + } + } else { // 需要合并列第一行走else + mList[rowVal] = { + num: 1, + index: index, + newIndex: index + 1 + } + v[m + '-span'] = { + rowspan: 1, + colspan: 1 + } + } + return v + }) + }) + return data +}; diff --git a/src/views/budget/budgetList.vue b/src/views/budget/budgetList.vue index b17b822..42faded 100644 --- a/src/views/budget/budgetList.vue +++ b/src/views/budget/budgetList.vue @@ -28,7 +28,9 @@ - + + +