From 037a7112a2bc9e38bb2f398ff5ca740ac01a8fb2 Mon Sep 17 00:00:00 2001 From: spring <2396852758@qq.com> Date: 星期四, 20 二月 2025 10:21:05 +0800 Subject: [PATCH] 检验任务搬迁30% --- src/components/Table/lims-table.vue | 125 +++++++++++++++++++++++++++++++++++++++-- 1 files changed, 117 insertions(+), 8 deletions(-) diff --git a/src/components/Table/lims-table.vue b/src/components/Table/lims-table.vue index b7ec78f..8b5b5b4 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" @@ -19,7 +20,12 @@ @current-change="currentChange" @selection-change="handleSelectionChange" > - <el-table-column type="selection" width="55" v-if="isSelection" /> + <el-table-column + align="center" + type="selection" + width="55" + v-if="isSelection" + /> <el-table-column align="center" label="搴忓彿" @@ -43,7 +49,9 @@ show-overflow-tooltip :sortable="item.sortable ? true : false" :type="item.type" - :width="item.width" + :width=" + item.dataType === 'action' ? getWidth(item.operation) : item.width + " align="center" > <!-- <div class="123" v-if="item.type == ''"> --> @@ -351,8 +359,23 @@ }, }, }, - + data() { + return { + spanList: [], + }; + }, + mounted() { + this.calculateSpanInfo(); + }, methods: { + getWidth(row) { + 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 === "淇敼") { return "el-icon-edit"; @@ -397,6 +420,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> @@ -405,18 +510,22 @@ .el-table >>> .el-table__empty-text { text-align: center; } + +>>> .cell { + padding: 0 !important; +} .cell { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; - padding-right: 4px; - padding-left: 4px; -} ->>> .cell { - padding: 0 !important; + padding-right: 4px !important; + padding-left: 10px !important; } .link { color: rgb(64, 158, 255); cursor: pointer; } +>>> .el-table__body-wrapper::-webkit-scrollbar { + height: 14px; /* 璁剧疆婊氬姩鏉″搴� */ +} </style> -- Gitblit v1.9.3