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 ++++++++++++++++++++++++++++++++++++++++++++++++++---- src/views/business/inspectionTask/index.vue | 9 ++-- 2 files changed, 105 insertions(+), 13 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> diff --git a/src/views/business/inspectionTask/index.vue b/src/views/business/inspectionTask/index.vue index 8c58f11..71998c7 100644 --- a/src/views/business/inspectionTask/index.vue +++ b/src/views/business/inspectionTask/index.vue @@ -167,7 +167,7 @@ :column="column" :page="page" :tableLoading="tableLoading" - :height="'calc(100vh - 290px)'" + :height="'calc(100vh - 300px)'" @pagination="pagination" key="tableData0" ></lims-table> @@ -727,15 +727,14 @@ label: "鏍峰搧缂栧彿", prop: "sampleCode", width: "140px", - dataType: "link", - linkMethod: "selectAllByOne", + mergeCol: true, //鍚堝苟鍒� }, - { label: "鏍峰搧鍚嶇О", prop: "sample", width: "140px" }, + { label: "鏍峰搧鍚嶇О", prop: "sample", width: "140px", mergeCol: true }, { label: "妫�楠岄」鍒嗙被", prop: "inspectionItemClass" }, { label: "妫�楠岄」", prop: "inspectionItem", width: "140px" }, { label: "妫�楠屽瓙椤�", prop: "inspectionItemSubclass" }, { label: "鍗曚綅", prop: "unit" }, - { label: "鏍峰搧鍨嬪彿", prop: "model" }, + { label: "鏍峰搧鍨嬪彿", prop: "model", mergeCol: true }, { label: "鏉′欢", prop: "radius" }, { label: "鐢电紗鏍囪瘑", prop: "cableTag" }, { label: "璇曢獙瑕佹眰", prop: "tell" }, -- Gitblit v1.9.3