From 240fa2b20900b8c2542f6bc5d912d7f647ad0b64 Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期三, 19 二月 2025 16:31:18 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- src/components/Table/lims-table.vue | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 101 insertions(+), 8 deletions(-) diff --git a/src/components/Table/lims-table.vue b/src/components/Table/lims-table.vue index d960129..dc592f0 100644 --- a/src/components/Table/lims-table.vue +++ b/src/components/Table/lims-table.vue @@ -12,6 +12,7 @@ :row-class-name="rowClassName" :row-style="rowStyle" :row-key="rowKey" + :span-method="spanMethod" stripe style="width: 100%" tooltip-effect="dark" @@ -48,7 +49,9 @@ show-overflow-tooltip :sortable="item.sortable ? true : false" :type="item.type" - :width="item.dataType === 'action'? getWidth(item.operation) : item.width" + :width=" + item.dataType === 'action' ? getWidth(item.operation) : item.width + " align="center" > <!-- <div class="123" v-if="item.type == ''"> --> @@ -356,15 +359,23 @@ }, }, }, - + data() { + return { + spanInfo: {}, + spanList: [], + }; + }, + created() { + this.calculateSpanInfo(); + }, methods: { getWidth(row) { - let count = 0 - console.log('row---', row) - row.forEach(a => { - count += a.name.length - }) - return count * 15 + 40 + 'px' + let count = 0; + console.log("row---", row); + row.forEach((a) => { + count += a.name.length; + }); + return count * 15 + 40 + "px"; }, iconFn(row) { if (row.name === "缂栬緫" || row.name === "淇敼") { @@ -410,6 +421,88 @@ } this.$parent[linkMethod](row); }, + // 鍚堝苟鍗曞厓鏍� + calculateSpanInfo() { + // 鍒濆鍖栨瘡鍒楃殑鍚堝苟淇℃伅 + this.spanList = []; + this.column.forEach((m, i) => { + if (m.mergeCol) { + this.spanList.push({ + arr: [], + position: 0, + name: m.prop, + index: i + 1, + }); + } + }); + this.spanList.forEach((item, i) => { + this.rowspan( + this.spanList[i].arr, + this.spanList[i].position, + item.name + ); + }); + }, + rowspan(spanArr, position, spanName) { + this.tableData.forEach((item, index) => { + if (index === 0) { + spanArr.push(1); + position = 0; + } else { + if ( + this.tableData[index][spanName] === + this.tableData[index - 1][spanName] + ) { + spanArr[position] += 1; + spanArr.push(0); + } else { + spanArr.push(1); + position = index; + } + } + }); + }, + // 鍚堝苟鍗曞厓鏍� + spanMethod({ row, column, rowIndex, columnIndex }) { + // 涓�鑸殑鍚堝苟琛� + if (this.column.find((m) => m.mergeCol)) { + let i = null; + let obj = this.spanList.find((item, index) => { + i = index; + return item.index == columnIndex; + }); + if (obj) { + const _row = this.spanList[i].arr[rowIndex]; + const _col = _row > 0 ? 1 : 0; + return { + rowspan: _row, + colspan: _col, + }; + } + } + // // 鐗规畩鐨勫悎骞惰 + // if ( + // this.data.spanConfig != undefined && + // this.data.spanConfig.special && + // this.data.spanConfig.special.main && + // this.data.spanConfig.special.rows && + // this.data.spanConfig.special.rows.length > 0 + // ) { + // let i = null; + // let obj = this.data.spanConfig.special.rows.find((item, index) => { + // i = index; + // return item.index == columnIndex; + // }); + // if (obj) { + // const _row = this.specialSpanList[i].arr[rowIndex]; + // const _col = _row > 0 ? 1 : 0; + // return { + // rowspan: _row, + // colspan: _col, + // }; + // } + // } + }, }, }; </script> -- Gitblit v1.9.3