網站首頁 編程語言 正文
1.? 添加 :span-method="objectSpanMethod"
?2.? 寫objectSpanMethod?方法
//#region 合并單元格
// 這個方法是 element-ui提供的單元格合并方法
// objectSpanMethod 傳入了 { row, column, rowIndex, columnIndex }
// row: 當前行
// column: 當前列
// rowIndex:當前行號
// columnIndex :當前列號
// 1代表:獨占一行
// 更大的自然數:代表合并了若干行
// 0:代表“消失”的哪那一個單元格,后面的單元格向前推一格
mergeCol(id, rowIndex) {
debugger;
// 合并單元格
// id:屬性名
// rowIndex:行索引值
var idName = this.TableData[rowIndex][id]; // 獲取當前單元格的值
if (rowIndex > 0) {
// 判斷是不是第一行
// eslint-disable-next-line eqeqeq
if (this.TableData[rowIndex][id] != this.TableData[rowIndex - 1][id]) {
// 先判斷當前單元格的值是不是和上一行的值相等
var i = rowIndex;
var num = 0; // 定義一個變量i,用于記錄行索引值并進行循環,num用于計數
while (i < this.TableData.length) {
// 當索引值小于table的數組長度時,循環執行
if (this.TableData[i][id] === idName) {
// 判斷循環的單元格的值是不是和當前行的值相等
i++; // 如果相等,則索引值加1
num++; // 合并的num計數加1
} else {
i = this.TableData.length; // 如果不相等,將索引值設置為table的數組長度,跳出循環
}
}
return {
rowspan: num, // 最終將合并的行數返回
colspan: 1,
};
} else {
return {
rowspan: 0, // 如果相等,則將rowspan設置為0
colspan: 1,
};
}
} else {
// 如果是第一行,則直接返回
let i = rowIndex;
let num = 0;
while (i < this.TableData.length) {
// 當索引值小于table的數組長度時,循環執行
if (this.TableData[i][id] === idName) {
i++;
num++;
} else {
i = this.TableData.length;
}
}
return {
rowspan: num,
colspan: 1,
};
}
},
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
// 合并單元格
switch (
columnIndex // 將列索引作為判斷值
) {
// 通過傳遞不同的列索引和需要合并的屬性名,可以實現不同列的合并(索引0,1 指的是頁面上的0,1)
// gzTroubles,gzID 這兩個字段是我要合并的字段名,
case 1:
return this.mergeCol("gzTroubles", rowIndex);
case 0:
return this.mergeCol("gzID", rowIndex);
}
},
//#endregion
其中,switch中 0和1?是根據下面這張圖中的順序來的,
?完整代碼如下:
<template>
<div class="pCindex">
<el-table
ref="tableRef"
:data="TableData"
class="tableStyle"
:span-method="objectSpanMethod"
border
>
<el-table-column
align="center"
prop="gzID"
:label="lable.gzID"
width="80"
>
</el-table-column>
<el-table-column
align="center"
prop="gzTroubles"
:label="lable.gzTroubles"
>
</el-table-column>
<el-table-column
header-align="center"
prop="gzReason"
:label="lable.gzReason"
></el-table-column>
<el-table-column
header-align="center"
prop="gzWay"
:label="lable.gzWay"
></el-table-column>
</el-table>
</div>
</template>
<script>
export default {
components: {},
data() {
return {
lable: {
gzID: "序號",
gzTroubles: "故障現象",
gzReason: "故障原因",
gzWay: "排除方法",
},
TableData: [
{
gzID: "1",
gzTroubles: "發動機勝多負少的溫度過高",
gzReason: "1.是的",
gzWay: "1.打開上翻門",
},
{
gzID: "1",
gzTroubles: "發動機勝多負少的溫度過高",
gzReason: "2.散熱風機有噪音",
gzWay: "2.轉軸上加潤滑油",
},
{
gzID: "2",
gzTroubles: "發動機不能起動",
gzReason: "1.電瓶電壓不足,接線柱松動或氧化",
gzWay: "1.充電、打磨接頭并接牢",
},
{
gzID: "3",
gzTroubles: "發動機不等等能起動",
gzReason: "2.燃油不足是否",
gzWay: "2.加油或排氣",
},
],
};
},
watch: {},
mounted() {},
methods: {
//#region 合并單元格
// 這個方法是 element-ui提供的單元格合并方法
// objectSpanMethod 傳入了 { row, column, rowIndex, columnIndex }
// row: 當前行
// column: 當前列
// rowIndex:當前行號
// columnIndex :當前列號
// 1代表:獨占一行
// 更大的自然數:代表合并了若干行
// 0:代表“消失”的哪那一個單元格,后面的單元格向前推一格
mergeCol(id, rowIndex) {
debugger;
// 合并單元格
// id:屬性名
// rowIndex:行索引值
var idName = this.TableData[rowIndex][id]; // 獲取當前單元格的值
if (rowIndex > 0) {
// 判斷是不是第一行
// eslint-disable-next-line eqeqeq
if (this.TableData[rowIndex][id] != this.TableData[rowIndex - 1][id]) {
// 先判斷當前單元格的值是不是和上一行的值相等
var i = rowIndex;
var num = 0; // 定義一個變量i,用于記錄行索引值并進行循環,num用于計數
while (i < this.TableData.length) {
// 當索引值小于table的數組長度時,循環執行
if (this.TableData[i][id] === idName) {
// 判斷循環的單元格的值是不是和當前行的值相等
i++; // 如果相等,則索引值加1
num++; // 合并的num計數加1
} else {
i = this.TableData.length; // 如果不相等,將索引值設置為table的數組長度,跳出循環
}
}
return {
rowspan: num, // 最終將合并的行數返回
colspan: 1,
};
} else {
return {
rowspan: 0, // 如果相等,則將rowspan設置為0
colspan: 1,
};
}
} else {
// 如果是第一行,則直接返回
let i = rowIndex;
let num = 0;
while (i < this.TableData.length) {
// 當索引值小于table的數組長度時,循環執行
if (this.TableData[i][id] === idName) {
i++;
num++;
} else {
i = this.TableData.length;
}
}
return {
rowspan: num,
colspan: 1,
};
}
},
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
// 合并單元格
switch (
columnIndex // 將列索引作為判斷值
) {
// 通過傳遞不同的列索引和需要合并的屬性名,可以實現不同列的合并(索引0,1 指的是頁面上的0,1)
case 1:
return this.mergeCol("gzTroubles", rowIndex);
case 0:
return this.mergeCol("gzID", rowIndex);
}
},
//#endregion
},
};
</script>
原文鏈接:https://blog.csdn.net/CMDN123456/article/details/129821922
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-03-26 C語言實現字符串替換的示例代碼_C 語言
- 2022-04-15 ASP.NET?Core基礎之請求處理管道_基礎應用
- 2022-12-03 C++可擴展性與多線程超詳細精講_C 語言
- 2022-12-14 C++?容器中map和unordered?map區別詳解_C 語言
- 2024-03-09 【Redis】Redisson分布式鎖原理與使用
- 2023-10-27 np.array()函數的使用方法_python
- 2023-10-17 前端下載文件時修改文件名
- 2022-06-22 C++深入探究類與對象之對象模型與this指針使用方法_C 語言
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支