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 @@
-
+
+
+