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