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 | 146 ++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 138 insertions(+), 8 deletions(-)
diff --git a/src/components/Table/lims-table.vue b/src/components/Table/lims-table.vue
index c9c9bd5..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"
@@ -19,7 +20,12 @@
@current-change="currentChange"
@selection-change="handleSelectionChange"
>
- <el-table-column align="center" 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 == ''"> -->
@@ -170,6 +178,15 @@
</el-upload>
</template>
</div>
+ <!-- 鍙偣鍑荤殑鏂囧瓧 -->
+ <div
+ v-else-if="item.dataType == 'link'"
+ class="cell link"
+ style="width: 100%"
+ @click="goLink(scope.row, item.linkMethod)"
+ >
+ <span v-if="!item.formatData">{{ scope.row[item.prop] }}</span>
+ </div>
<!-- 榛樿绾睍绀烘暟鎹� -->
<div v-else class="cell" style="width: 100%">
<span v-if="!item.formatData">{{ scope.row[item.prop] }}</span>
@@ -294,7 +311,7 @@
},
border: {
type: Boolean,
- default: false,
+ default: true,
},
highlightCurrentRow: {
type: Boolean,
@@ -342,8 +359,24 @@
},
},
},
-
+ 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";
+ },
iconFn(row) {
if (row.name === "缂栬緫" || row.name === "淇敼") {
return "el-icon-edit";
@@ -381,6 +414,95 @@
// return index * 2;
return (this.page.current - 1) * this.page.size + index + 1;
},
+ // 鐐瑰嚮鍗曞厓鏍糽ink浜嬩欢
+ goLink(row, linkMethod) {
+ if (!linkMethod) {
+ return this.$message.warning("璇烽厤缃甽ingk浜嬩欢");
+ }
+ 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>
@@ -389,14 +511,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;
+ padding-right: 4px !important;
+ padding-left: 10px !important;
}
->>> .cell {
- padding: 0 !important;
+.link {
+ color: rgb(64, 158, 255);
+ cursor: pointer;
+}
+>>> .el-table__body-wrapper::-webkit-scrollbar {
+ height: 14px; /* 璁剧疆婊氬姩鏉″搴� */
}
</style>
--
Gitblit v1.9.3