vue3 antdesign table表格特定单元格背景变色

news2025/4/15 7:40:37

效果:

<a-table  :columns="columnsAll" :data-source="tableAllData"
           bordered size="middle"  :scroll="{ x: '100',y: 600 }" :pagination="false"
           style="margin: 0 10px 10px 10px;" >
     <template #bodyCell="{ column, record, index }">
            <span>
                 {{ record[column.dataIndex] }}
             </span>
      </template>
</a-table>
<script setup lang="ts">
import { onMounted, reactive, ref, computed} from "vue";
import { message,notification } from "ant-design-vue";
const columnsAll = ref<any>([])
const tableAllData = ref<any>([]);
const specialCells = ref<any>([]);//变色单元格所在 行下标,列下标,值
const checkDataList = () => {
    let param = {
        type:'3',
    }
    uploadSalary(param).then((res: any) => {
        if(res.status == 200){
            message.success('校验成功');
            pageList.value = res.respdata;
            specialCells.value = res.errorindex
            columnsAll.value = res.columnsjson.map(col => {
                return { ...col, width: '180px'};
            });
            tableAllData.value = res.valuesjson;
            //单表头
            // const processedColumns = columnsAll.value.map((col, colIndex) => {
            //     return {
            //         ...col,
            //         customCell: (record, rowindex,column) => {
            //          const cellInfo = specialCells.value.find(cell => cell[0] === rowindex && cell[1] === colIndex);
            //             if (cellInfo) {
            //                 return {
            //                 style: {
            //                     backgroundColor: '#fff1f0',
            //                     color: '#cf1322',
            //                 },
            //                 };
            //             }
            //             return {};
            //         },
            //     };
            // });

            //多级表头处理
            const processColumns = (columns, indexCounter = { index: 0 }) => {
                return columns.map(col => {
                    if (col.children) {
                    // 递归处理子列
                    return {
                        ...col,
                        children: processColumns(col.children, indexCounter),
                    };
                    } else {
                    // 叶子列:分配当前索引并递增
                    const currentColIndex = indexCounter.index++;
                    return {
                        ...col,
                        customCell: (record, rowIndex) => {
                        const cellInfo = specialCells.value.find(
                            cell => cell[0] === rowIndex && cell[1] === currentColIndex
                        );
                        return cellInfo ? { 
                            style: { backgroundColor: '#fff1f0', color: '#cf1322' } 
                        } : {};
                        },
                    };
                    }
                });
            };

            // 生成最终处理后的列配置
            columnsAll.value = processColumns(columnsAll.value, { index: 0 });
        }
        else{
            message.error('校验失败');
        }
    })
    .catch((error: any) => {
    if (error.response) {
        const status = error.response.status;
        if (status === 422) {
            if(error.response.data.misscol){
                const misscol = error.response.data.misscol;
                const resultString = misscol.join(", ");
                openNotificationWithIcon(error.response.data.error,resultString)
            }else if(error.response.data.errercol){
                const errercol = error.response.data.errercol;
                const resultString = errercol.join(", ");
                openNotificationWithIcon(error.response.data.error,resultString)
            }
        } else {
            istableLoading.value = false
            // 其他 HTTP 错误
            message.error(error.message);
        }
    } else {
        message.error('请求失败:', error.message);
        istableLoading.value = false
    }
    })
}
</script>
//动态表头数据
const columnsAll = [
    {
        "title": "姓名",
        "dataIndex": "f01020003",
        "key": "f01020003"
    },
    {
        "title": "身份证号",
        "dataIndex": "f01020004",
        "key": "f01020004"
    },
    {
        "title": "岗位工资",
        "dataIndex": "f02010001",
        "key": "f02010001"
    },
    {
        "title": "人员类别",
        "children": [
            {
                "title": "本次人员类别",
                "dataIndex": "f01020005",
                "key": "f01020005"
            },
            {
                "title": "上月人员类别",
                "dataIndex": "花名册人员类别",
                "key": "花名册人员类别"
            }
        ]
    },
    {
        "title": "职务",
        "children": [
            {
                "title": "本次职务",
                "dataIndex": "f01020001",
                "key": "f01020001"
            },
            {
                "title": "上月职务",
                "dataIndex": "花名册职务",
                "key": "花名册职务"
            }
        ]
    },
]
//[单元格行下标,列下标,值]
const errorindex =  [
    [
        0,
        7,
        38908
    ],
    [
        0,
        2,
        15000
    ],
    [
        1,
        7,
        38908
    ],
    [
        1,
        2,
        15000
    ],
    [
        2,
        7,
        36788
    ],
    [
        2,
        2,
        14000
    ],
    [
        3,
        7,
        36788
    ],
    [
        3,
        2,
        14000
    ],
    [
        4,
        7,
        34528
    ],
    [
        4,
        2,
        14000
    ],
    
]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2334246.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言】--- 编译和链接

编译和链接 1. 翻译环境和运行环境2. 翻译环境2.1 预处理2.2 编译2.2.1 词法分析2.2.2 语法分析2.2.3 语义分析 2.3 汇编2.4 链接 3. 运行环境 1. 翻译环境和运行环境 计算机只能运行二进制指令&#xff0c;所以我们的.c的文本程序需要先翻译为二进制程序才能被计算机执行。在…

深入解析Python爬虫技术:从基础到实战的功能工具开发指南

一、引言:Python 爬虫技术的核心价值 在数据驱动的时代,网络爬虫作为获取公开数据的重要工具,正发挥着越来越关键的作用。Python 凭借其简洁的语法、丰富的生态工具以及强大的扩展性,成为爬虫开发的首选语言。根据 Stack Overflow 2024 年开发者调查,68% 的专业爬虫开发者…

前端 Vue: Cannot find module XX or its corresponding type declarations.

记一个常见错误&#xff0c;每次创建完新的vuetsvite项目&#xff0c;在配置路由的时候总会找不到vue文件&#xff0c;我用的是Webstorm&#xff0c;在设置里面修改以下设置&#xff0c;即可消除警告。

数字内容体验案例解析与行业应用

数字内容案例深度解析 在零售行业头部品牌的实践中&#xff0c;数字内容体验的革新直接推动了用户行为模式的转变。某国际美妆集团通过搭建智能内容中台&#xff0c;将产品信息库与消费者行为数据实时对接&#xff0c;实现不同渠道的动态内容生成。其电商平台首页的交互式AR试…

HBuilderX中uni-app打包Android(apk)全流程超详细打包

一、Android生成打包证书 1、Android平台签名证书(.keystore)生成指南_android 签名生成-CSDN博客&#xff08;如果不上架应用商店可以跳过&#xff0c;可以使用云端证书&#xff09; 二、打开manifest.json配置基础设置 三、配置安卓应用图标 四、配置安卓启动页图片 五、…

多模态大模型重塑自动驾驶:技术融合与实践路径全解析

目录 1、 引言&#xff1a;AI与自动驾驶的革命性融合 2、五大领先多模态模型解析 2.1 Qwen2.5-Omni&#xff1a;全模态集大成者 2.2. LLaVA&#xff1a;视觉语言理解专家 2.3. Qwen2-VL&#xff1a;长视频理解能手 2.4. X-InstructBLIP&#xff1a;跨模态理解框架 2.5. …

vue2 el-element中el-select选中值,数据已经改变但选择框中不显示值,需要其他输入框输入值才显示这个选择框才会显示刚才选中的值。

项目场景&#xff1a; <el-table-column label"税率" prop"TaxRate" width"180" align"center" show-overflow-tooltip><template slot-scope"{row, $index}"><el-form-item :prop"InquiryItemList. …

OFDM CP 对解码影响

OFDM符号间会存在ISI&#xff0c;为了解决该问题在符号间插入了循环前缀&#xff0c;可以说这个发明是OFDM能够实用的关键&#xff0c;在多径信道中CP可以有效的解决符号间干扰。3GPP中对于不同SCS 定义了不同的CP长度&#xff1a; 5G Cyclic Prefix (CP) Design -5G Physical …

Vue3.5 企业级管理系统实战(十四):动态主题切换

动态主题切换是针对用户体验的常见的功能之一&#xff0c;我们可以自己实现如暗黑模式、明亮模式的切换&#xff0c;也可以利用 Element Plus 默认支持的强大动态主题方案实现。这里我们探讨的是后者通过 CSS 变量设置的方案。 1 组件准备 1.1 修改 Navbar 组件 在 src/layo…

解决Ubuntu20.04安装ROS2的问题(操作记录)

一、ROS 系统安装版本选择 每版的Ubuntu系统版本都有与之对应ROS版本&#xff0c;每一版ROS都有其对应版本的Ubuntu版本&#xff0c;切记不可随便装。ROS 和Ubuntu之间的版本对应关系如下&#xff1a;&#xff08; 可以从这个网站查看ROS2的各个发行版本的介绍信息。&#xff…

C# 设置Excel中文本的对齐方式、换行、和旋转

在 Excel 中&#xff0c;对齐、换行和旋转是用于设置单元格内容显示方式的功能。合理的设置这些文本选项可以帮助用户更好地组织和展示 Excel 表格中的数据&#xff0c;使表格更加清晰、易读&#xff0c;提高数据的可视化效果。本文将介绍如何在.NET 程序中通过C# 设置Excel单元…

RPA VS AI Agent

图片来源网络 RPA&#xff08;机器人流程自动化&#xff09;和AI Agent&#xff08;人工智能代理&#xff09;在自动化和智能化领域各自扮演着重要角色&#xff0c;但它们之间存在显著的区别。以下是对两者区别的详细分析&#xff1a; 一、定义与核心功能 RPA&#xff08;机…

uniapp大文件分包

1. 在pages.json中配置 "subPackages":[{"root":pagesUser,"pages":[{"path":mine/xxx,"style":xxx },{"path":mine/xxx,"style":xxx}]},{"root":pagesIndex,"pages":[{"p…

Spark-core编程

sortByKey 函数说明 join 函数说明 leftOuterJoin 函数说明 cogroup 函数说明 RDD行动算子&#xff1a; 行动算子就是会触发action的算子&#xff0c;触发action的含义就是真正的计算数据。 reduce 函数说明 collect 函数说明 foreach 函数说明 count 函数说明 first …

2025年的Android NDK 快速开发入门

十年前写过一篇介绍NDK开发的文章《Android实战技巧之二十三&#xff1a;Android Studio的NDK开发》&#xff0c;今天看来已经发生了很多变化&#xff0c;NDK开发变得更加容易了。下面就写一篇当下NDK开发快速入门。 **原生开发套件 (NDK) **是一套工具&#xff0c;使开发者能…

基于springboot的“嗨玩旅游网站”的设计与实现(源码+数据库+文档+PPT)

基于springboot的“嗨玩旅游网站”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;springboot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 局部E-R图 系统首页界面 系统注册…

React 之 Redux 第三十一节 useDispatch() 和 useSelector()使用以及详细案例

使用 Redux 实现购物车案例 由于 redux 5.0 已经将 createStore 废弃&#xff0c;我们需要先将 reduxjs/toolkit 安装一下&#xff1b; yarn add reduxjs/toolkit// 或者 npm install reduxjs/toolkit使用 vite 创建 React 项目时候 配置路径别名 &#xff1a; // 第一种写法…

Llama 4全面评测:官方数据亮眼,社区测试显不足之处

引言 2025年4月&#xff0c;Meta正式发布了全新的Llama 4系列模型&#xff0c;这标志着Llama生态系统进入了一个全新的时代。Llama 4不仅是Meta首个原生多模态模型&#xff0c;还采用了混合专家(MoE)架构&#xff0c;并提供了前所未有的上下文长度支持。本文将详细介绍Llama 4…

【C++】函数直接返回bool值和返回bool变量差异

函数直接返回bool值和返回bool变量差异 背景 在工作中遇到一个比较诡异的问题&#xff0c;场景是给业务方提供的SDK有一个获取状态的函数GetStatus&#xff0c;函数的返回值类型是bool&#xff0c;在测试过程中发现&#xff0c;SDK返回的是false&#xff0c;但是业务方拿到的…

第1节:计算机视觉发展简史

计算机视觉与图像分类概述&#xff1a;计算机视觉发展简史 计算机视觉&#xff08;Computer Vision&#xff09;作为人工智能领域的重要分支&#xff0c;是一门研究如何使机器"看"的科学&#xff0c;更具体地说&#xff0c;是指用摄影机和计算机代替人眼对目标进行识…