news 2026/8/26 8:38:47

el-table 多行单元格合并+hover效果

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
el-table 多行单元格合并+hover效果

<template>

<div class="sfzy">

<div class="ejbt"><p>服装订单统计</p></div>

<div class="tableBox">

<el-table :data="tableInfo.tableData" :span-method="objectSpanMethod"

height="765px"

empty-text="暂无记录"

:header-cell-style="{

height:'40px',

padding:'0px',

color: 'rgb(126, 224, 238)',

'font-size':'16px',

background:'rgba(0, 34, 68, 1)',

}"

:cell-style="{

height:'38px',

padding:'0px',

color:'#fff',

border:'1px solid #003645',

'font-size':'16px',

'font-family': 'SourceHanSansCN-Regular',

}"

:row-style="{background:'rgba(0, 34, 68, 0.001)',}"

:row-class-name="isCell ? setCellClass : ''"

@cell-mouse-enter="handleMouse"

@cell-mouse-leave="handleMouseLeve"

>

<el-table-column label="订单编号" prop="zyh" width="270px"></el-table-column>

<el-table-column label="订单类型" prop="zylx"></el-table-column>

<el-table-column label="服装代码" prop="fzdm"></el-table-column>

<el-table-column label="服装名称" prop="fzmc" width="200px"></el-table-column>

<el-table-column label="下单时间" prop="xdsj" width="200px"></el-table-column>

<el-table-column label="尺码" prop="fzcm"></el-table-column>

<el-table-column label="件数" prop="fzjs"></el-table-column>

</el-table>

</div>

</div>

</template>

<script>

export default {

data(){

return{

cellIndex: null, // 两层合并的数据

isCell:false,

tableInfo:{

tableData:[

],

},

}

},

methods:{

// 设置行样式

setCellClass ({row, column, rowIndex, columnIndex}) {

if (row.index == this.cellIndex) {

return 'cellClass'

}

},

// 单元格移入事件

handleMouse (row, column, cell, event) {

this.cellIndex = row.firstIndex

this.isCell = true

// }

},

// 单元格移除事件

handleMouseLeve () {

this.isCell = false

},

objectSpanMethod({ row, column, rowIndex, columnIndex }){

if (columnIndex === 0 || columnIndex === 1 || columnIndex === 2 || columnIndex === 3|| columnIndex === 4) {

if (rowIndex === 0 || row.zyh !== this.tableInfo.tableData[rowIndex - 1].zyh) {

const rowspan = this.tableInfo.tableData.filter(item => item.zyh === row.zyh).length;

return { rowspan, colspan: 1 };

} else {

return { rowspan: 0, colspan: 0 };

}

}

},

updateTableData(rows) {

let data = [...rows];

let groupedData = [];

let previousLljbm = null;

data.forEach((item, index) => {

item.index = index;

if (item.zyh !== previousLljbm) {

previousLljbm = item.zyh;

item.firstIndex = `${index}`;

} else {

item.firstIndex = `${groupedData.findIndex(group => group.zyh === item.zyh)}`;

}

groupedData.push(item);

});

this.tableInfo.tableData = groupedData ;

},

getData(){

// sfzyData().then(res=>{

let data = [

{zyh: 'FZ202603030001',zylx: '普通服装',fzdm: 'FZDM002',fzmc: '外套',xdsj: '2022-01-01 10:00:00',fzcm: 'XS码',fzjs: '100.00',},

{zyh: 'FZ202603030001',zylx: '普通服装',fzdm: 'FZDM002',fzmc: '外套',xdsj: '2022-01-01 10:00:00',fzcm: 'S码',fzjs: '100.00',},

{zyh: 'FZ202603030001',zylx: '普通服装',fzdm: 'FZDM002',fzmc: '外套',xdsj: '2022-01-01 10:00:00',fzcm: 'M码',fzjs: '100.00',},

{zyh: 'FZ202603030001',zylx: '普通服装',fzdm: 'FZDM002',fzmc: '外套',xdsj: '2022-01-01 10:00:00',fzcm: 'L码',fzjs: '100.00',},

{zyh: 'FZ202603030001',zylx: '普通服装',fzdm: 'FZDM002',fzmc: '外套',xdsj: '2022-01-01 10:00:00',fzcm: 'XL码',fzjs: '100.00',},

{zyh: 'FZ202603030002',zylx: '精品服装',fzdm: 'FZDM001',fzmc: '外套',xdsj: '2022-01-01 10:00:00',fzcm: 'XS码',fzjs: '100.00',},

{zyh: 'FZ202603030002',zylx: '精品服装',fzdm: 'FZDM001',fzmc: '外套',xdsj: '2022-01-01 10:00:00',fzcm: 'S码',fzjs: '100.00',},

{zyh: 'FZ202603030002',zylx: '精品服装',fzdm: 'FZDM001',fzmc: '外套',xdsj: '2022-01-01 10:00:00',fzcm: 'M码',fzjs: '100.00',},

{zyh: 'FZ202603030002',zylx: '精品服装',fzdm: 'FZDM001',fzmc: '外套',xdsj: '2022-01-01 10:00:00',fzcm: 'L码',fzjs: '100.00',},

{zyh: 'FZ202603030002',zylx: '精品服装',fzdm: 'FZDM001',fzmc: '外套',xdsj: '2022-01-01 10:00:00',fzcm: 'XL码',fzjs: '100.00',},

{zyh: 'FZ202603030003',zylx: '精品服装',fzdm: 'FZDM001',fzmc: '外套',xdsj: '2022-01-01 10:00:00',fzcm: 'S码',fzjs: '100.00',},

{zyh: 'FZ202603030004',zylx: '精品服装',fzdm: 'FZDM001',fzmc: '外套',xdsj: '2022-01-01 10:00:00',fzcm: 'M码',fzjs: '100.00',},

];

let groupedData = [];

let previousLljbm = null;

data.forEach((item, index) => {

item.index = index;

if (item.zyh !== previousLljbm) {

previousLljbm = item.zyh;

item.firstIndex = `${index}`;

} else {

item.firstIndex = `${groupedData.findIndex(group => group.zyh === item.zyh)}`;

}

groupedData.push(item);

});

console.log(groupedData,"groupedData");

this.tableInfo.tableData = groupedData ;

}

},

mounted(){

this.getData()

},

}

</script>

<style lang="scss">

.sfzy{

width: 100%;

height: 100%;

position: relative;

background: #2083ab !important;

padding: 10px;

.ejbt{

color: rgb(255, 255, 255);

font-size: 20px;

font-family: SourceHanSansCN-Regular;

margin-bottom: 10px;

}

.myHeader{

position: absolute;

left: 0px;top: 0;

}

.tableBox{

width: 100%;

height: calc(100% - 68px);

position: relative;

.searchBox{

position: absolute;

right: 0px;

top: -46px;

}

}

// //去掉表格内的线

table th,

table td {

border: 1px solid rgb(0, 54, 69) !important;

}

//去掉最下面的那一条线

.el-table::before {

height: 0px;

}

.customer-table .el-table__fixed-right::before,

.el-table__fixed::before {

width: 0;

}

::v-deep .has-gutter .el-table__cell:last-child{

border-right: none;

}

::v-deep .has-gutter .el-table__cell:last-child{

border-right: none;

}

::v-deep .el-table__body {

border: none; /* 去掉表格的边框 */

}

.el-table th.el-table__cell {

background-color: rgba(0, 34, 68, 1);

}

// 滚动条样式修改

/* 滚动条轨道区域样式 */

::-webkit-scrollbar {

width: 4px; /* 设置滚动条宽度为8像素 */

background-color: transparent;

}

/* 滑块样式 */

::-webkit-scrollbar-thumb {

background-color:#0c7fb0; /* 设置滑块颜色为深灰色 */

border-radius: 4px; /* 设置滑块边角半径为4像素 */

}

/* 滚动条轨道内部空白区域样式 */

::-webkit-scrollbar-track {

background-color: rgba(0, 34, 68, 1); /* 设置轨道背景色为浅灰色 */

}

/* 滚动条两端按钮样式 */

::-webkit-scrollbar-button {

display: none; /* 不显示按钮 */

}

/* 交叉点处的区域样式 */

::-webkit-scrollbar-corner {

background-color: transparent; /* 设置交叉点处的背景色为透明 */

}

/* 调整大小手柄样式 */

::-webkit-resizer {

display: none; /* 不显示调整大小手柄 */

}

.el-table {

background: transparent !important;

height: 100% !important;

border: solid 1px #003645;

box-shadow: none;

.cellClass {

td:nth-child(1) {

background-color:#004662 !important;

}

td:nth-child(2) {

background-color:#004662 !important;

}

td:nth-child(3) {

background-color:#004662 !important;

}

td:nth-child(4) {

background-color:#004662 !important;

}

td:nth-child(5) {

background-color:#004662 !important;

}

}

th{

// border: 1px solid #004662;

border: 1px solid rgba(0, 34, 68, 1);

}

}

.el-table--scrollable-y .el-table__body-wrapper {

overflow-y: auto;

}

.el-table--enable-row-hover .el-table__body tr:hover > td.el-table__cell {

background-color: #004662 !important; /* 强制应用颜色 */

}

.el-table__empty-block {

height: 765px !important;

}

}

</style>

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 16:57:25

LLM Weekly(2026.2.9-2026.2.15)

网页快讯 GPT‑5.3‑Codex‑Spark 发布 OpenAI 推出 GPT‑5.3‑Codex‑Spark,这是一款轻量化的 GPT‑5.3‑Codex 模型,专为在 Cerebras Wafer Scale Engine 3 上实现超高速、实时代码生成优化。 Codex‑Spark 每秒可输出超过 1000 个 token,支持 128k 纯文本上下文长度,并…

作者头像 李华
网站建设 2026/7/14 16:57:25

Linux-C socket网络通信 03.25

socket网络通信 03.25整体结构类似 依然属于进程间的通信 网络三要素&#xff1a; IP地址&#xff1a;确定网络中某一台计算机的位置 端口号&#xff1a;确定是哪个应用程序 通信协议&#xff1a;通信时&#xff0c;通信双方预定好的规则 应用程序是静态的&#xff0c;电脑运…

作者头像 李华
网站建设 2026/7/14 16:57:23

[安全实践] 避免在主机器上运行 OpenClaw:安全隔离环境搭建指南

文章目录[安全实践] 避免在主机器上运行 OpenClaw&#xff1a;安全隔离环境搭建指南背景与痛点核心概念速览环境准备方案一&#xff1a;虚拟机隔离&#xff08;推荐&#xff09;Ubuntu/Debian方案二&#xff1a;Docker 容器隔离Ubuntu/DebianStep-by-step 实现虚拟机方案详细步…

作者头像 李华
网站建设 2026/7/14 16:57:28

2026客户管理系统对比手册:8大主流品牌全链路业务能力专业拆解

主流CRM品牌核心能力横向对比&#xff1a;获客、营销、渠道与公海管理的专业拆解在企业数字化转型中&#xff0c;CRM&#xff08;客户关系管理&#xff09;已从“工具”升级为“业务增长引擎”——其核心价值在于打通获客-营销-渠道-客户运营的全链路&#xff0c;通过数据驱动实…

作者头像 李华