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