HTML代码:

        <el-table  header-row-class-name="my-el-table-header" row-class-name="my-el-table-body"  ref="multipleGroupTable" :data="vehicleGroupTableData" tooltip-effect="dark" style="width: 100%" v-loading="loading" @select="handleSelectionGroupChange" @select-all="handleSelectionGroupChange"  ><el-table-column type="selection" width="55"  ></el-table-column> <el-table-column label="AA" width="200"><template slot-scope="scope">{{ scope.row.groupName }}</template></el-table-column>    <el-table-column  label="BB" ><template slot-scope="scope">{{ scope.row.vehicles.length }}Vehicles</template></el-table-column><el-table-column label="" width="200" show-overflow-tooltip> <template slot-scope="scope"><el-link type="primary" style="color:#2764B0" :underline="false">View </el-link></template></el-table-column><el-table-column type="expand"> <template slot-scope="scope"> <div class="el-table-expand-table"><el-table :key="scope.$index" header-row-class-name="my-el-table-header" row-class-name="my-el-table-body" key="0" ref="multipleTable" :data="scope.row.vehicles" tooltip-effect="dark" style="width: 100%"><el-table-column label="" width="70"><template slot-scope="scope"><el-checkbox  :key="'checkbox-' +scope.$index + scope.row.vin"  @change="(val) => handleNestedCheckboxChange(val, scope.row,scope.$index)" :value="scope.row.isChecked" ></el-checkbox></template></el-table-column><el-table-column label="Nickname" min-width="16%"><template slot-scope="scope"> {{ scope.row.nickName }}</template></el-table-column><el-table-column  label="aa" min-width="16%"><template slot-scope="scope">{{ scope.row.vin }}</template></el-table-column> <el-table-column  label="bb" min-width="8%" show-overflow-tooltip><template slot-scope="scope">{{ scope.row.year }}</template></el-table-column><el-table-column  label="cc" min-width="16%" ><template slot-scope="scope"><div class="fleet-group-div" ><el-dropdown trigger="click" placement="bottom" :teleported="false"><div class="el-dropdown-link"><div class="el-dropdown-link-label" :title="123123">下拉菜单下拉菜单下拉菜单下拉菜单下拉菜单下拉菜单下拉菜单下拉菜单下拉菜单下拉菜单下拉菜单下拉菜单</div><i class="el-icon-arrow-down el-icon--right"></i></div><el-dropdown-menu slot="dropdown" class="fleet-group-div-dropdown "><el-checkbox-group v-model="scope.row.fleetGroup" class="fleet-group-div-dropdown-item" size="medium"><el-checkbox v-for="(i,j) in groupOptions" :key="j" :label="i.name" :title="i.name">{{i.name}}</el-checkbox></el-checkbox-group></el-dropdown-menu></el-dropdown></div></template></el-table-column><el-table-column label="" min-width="16%" show-overflow-tooltip><template slot-scope="scope"><el-link type="primary"  style="color:#2764B0" :underline="false">View</el-link></template></el-table-column></el-table></div></template></el-table-column></el-table>

 数据结构:

  vehicleGroupTableData:[ // Vehicle Groups 表格数据{groupName: 'group A',  // Group Nameid:1,vehicles:[{nickName:"昵称",vin:'123123123123',year:'2025',fleetGroup:['GroupA','GroupB','GroupC'],isChecked:false},{nickName:"昵称2",vin:'12312312312312',year:'20251',fleetGroup:['GroupA2','GroupB2','GroupC2'],isChecked:false}]},{groupName: 'group B',  // Group Nameid:2,vehicles:[{nickName:"昵称1",vin:'123123123123222',year:'20252',fleetGroup:['GroupAC','GroupB','GroupC'],isChecked:false}]},],

js代码:

  // 嵌套的内部的checkbox的点击handleNestedCheckboxChange(checked, row, index) {// 确保响应式更新this.$set(row, 'isChecked', checked);// 更新父表格的选中状态this.$nextTick(() => {const parentRow = this.vehicleGroupTableData.find(group =>group.vehicles.some(v => v.vin === row.vin));if (parentRow) {// 3. 计算父行的选中状态const checkedCount = parentRow.vehicles.filter(v => v.isChecked).length;const totalCount = parentRow.vehicles.length;// 4. 更新父行的选中状态const isAllChecked = checkedCount === totalCount;const isIndeterminate = checkedCount > 0 && checkedCount < totalCount; //是否是未全选// 5. 使用Element UI的API更新状态this.$refs.multipleGroupTable.toggleRowSelection(parentRow,isAllChecked);// 7. 添加row-class-name来反映状态this.$refs.multipleGroupTable.$el.querySelectorAll('.el-table__row').forEach(el => {const rowData = el.__vue__?.row;if (rowData === parentRow) {// 获取dom节点let dom = el.querySelector('.el-table-column--selection').querySelector('.el-checkbox__input')this.$nextTick(()=>{dom.classList.toggle('is-indeterminate',isIndeterminate);})}});}});setTimeout(()=>{this.$forceUpdate()})},handleSelectionGroupChange(val){this.multipleGroupSelection = val;//  // 如果外层行被选中/取消选中,同步到所有子行this.vehicleGroupTableData.forEach(row => {if(this.multipleGroupSelection.includes(row)){ // 如果当前行被选中// 则需要遍历当前行下面的vehicles下的每一项,给每一项的isChecked设置为truerow.vehicles.forEach(vehicle => {vehicle.isChecked =  this.multipleGroupSelection.includes(row)})}else{row.vehicles.forEach(vehicle => {vehicle.isChecked = false})}})},

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android stdio 关闭所有真机

Android Studio如何关闭所有真机 Android Studio是开发Android应用程序的集成开发环境&#xff0c;通常我们需要使用真机来进行应用程序的调试和测试。但是&#xff0c;在某些情况下&#xff0c;我们可能需要关闭所有已连接的真机。本文将介绍如何在Android Studio中关闭所有真…

Java程序员如何设计一个高并发系统?

设计一个高并发系统并非易事&#xff0c;如果不站在巨人的肩膀上来开展工作的话&#xff0c;这条路是很难保持一路畅通的&#xff01;所以&#xff0c;本着好东西就是要拿出来分享的原则&#xff0c;LZ就把前段时间从阿里的一位老哥手上捞到的百亿级系统架构设计实录分享给大家…

Flutter 状态管理与 API 调用的完美结合:从理论到实践

在现代移动应用开发中&#xff0c;状态管理和网络请求是两个至关重要的概念。Flutter 作为跨平台开发的佼佼者&#xff0c;提供了丰富的状态管理解决方案和网络请求能力。本文将深入探讨如何将 Flutter 的状态管理与 API 调用有机结合&#xff0c;特别是针对常见的列表数据加载…

全网手机二次放号查询API功能说明和Python调用示例

随着手机号码资源的日益紧张&#xff0c;“二次放号”现象愈发普遍&#xff0c;这给新用户带来了不少困扰&#xff0c;如频繁收到骚扰信息、注册App时号码被占用等。为了解决这些问题&#xff0c;探数API 提供了一种有效的解决方案——全网手机二次放号查询API。本文将详细介绍…

mysql分区备份及还原

备份 ps&#xff1a;mysql是docker启动的&#xff0c;并且data数据挂载出来了 找到mysql数据库目录 /opt/tciot/mysql/data/tciot002ddb 需要备份的文件在数据库目录下&#xff08;例如 iot_location#p#p202402.ibd&#xff09;&#xff0c;备份需要的分区cp出来 备份后删除…

轻量级 ioc 框架 loveqq,支持接口上传 jar 格式的 starter 启动器并支持热加载其中的 bean

轻量级 ioc 框架 loveqq&#xff0c;支持接口上传 jar 格式的 starter 启动器并支持热加载其中的 bean 热加载 starter 启动器代码示例&#xff1a; package com.kfyty.demo;import com.kfyty.loveqq.framework.boot.K; import com.kfyty.loveqq.framework.boot.context.Contex…

图论----4.实现 Trie (前缀树)

题目链接 /** Trie前缀树基本结构: (多叉单词查找树)每个Trie中包含一个Trie数组与一个结束标识 Trie[] children Trie数组,每个节点都可存放一个Trie,其索引代表该节点对应的字符。 boolean isEnd 结束标识, 代表当前节点是否是一个完整单词的结尾巴 前缀树insert流程: 计算第…

DELL R730XD服务器调整风扇转速

注意&#xff1a; 进入iDRAC的Web管理界面&#xff0c;左侧iDRAC设置->网络->IPMI设置&#xff0c;勾选启用LAN上的IPMI。使用ipmitool调整&#xff0c;服务器电源断开后就会失效&#xff0c;如果想要永久生效&#xff0c;就在服务器端写一个开机自启动脚本。先关闭风扇…

从C++编程入手设计模式——策略设计模式

从C编程入手设计模式——策略设计模式 ​ 在我们平时写程序的过程中&#xff0c;经常会遇到这样的情况&#xff1a;一个对象的某个功能可以有多种实现方式&#xff0c;而且可能会根据不同的场景切换这些方式。比如一只动物可以发出不同的叫声&#xff0c;一个排序器可以使用不…

网页中调用自定义字体可以通过 ‌CSS‌ 的 @font-face 规则实现

以下是详细方法&#xff1a; ‌1. 使用系统默认字体‌ 如果只是希望指定字体&#xff0c;可以直接使用 font-family&#xff1a; body { font-family: "Microsoft YaHei", "PingFang SC", sans-serif; /* 中英文适配 */ } ‌2. 使用自定义字体&…

[CVPR 2025] DeformCL:基于可变形中心线的3D血管提取新范式

CVPR 2025 | DeformCL&#xff1a;基于可变形中心线的3D血管提取新范式 论文信息 标题&#xff1a;DeformCL: Learning Deformable Centerline Representation for Vessel Extraction in 3D Medical Image作者&#xff1a;Ziwei Zhao, Zhixing Zhang, Yuhang Liu, 等单位&…

BeckHoff <---> Keyence (LJ-X8000) 2D相机 Profinet 通讯

目录 ​编辑 一、 设备介绍 1、产品特点 2、控制器选择 3、应用领域 二、PLC通讯接口配置 1、PLC添加GSDML文件 2、定义输入3、变量实例化 3、定义输出变量实例化 三、设备通讯接口数据类型定义 1、定义全局结构体数据 2、定义 INput Decode结构体数据 四、通讯…

electron在单例中实现双击打开文件,并重复打开其他文件

单实例的思路 首次通过双击文件打开应用 将filePath传给render 使用中的应用&#xff0c;再次双击打开文件 第一个实例创建时&#xff0c;同时创建一个通信服务器net.createServer()第二个实例创建时&#xff0c;连接第一个服务器net.createConnection()将再次打开的filePath传…

一、基础架构层:高性能引擎基石

1. ECS架构工业级实现 // EnTT实战示例&#xff1a;导弹系统组件定义 struct Position { vec3 value; }; struct Velocity { vec3 value; }; struct ExplodeWhen { float distance; };entt::registry registry;// 实体创建与组件绑定 auto missile registry.create(); regist…

rockylinuxapache和Linux服务配置

目录 apache nginx 反向代理配置[rootk8s2 ~]# [rootk8s2 ~]# cat /etc/nginx/conf.d/webserver.confserver { listen 80; server_name www.sxy1.com; location / { root /var/www/html; index index.html; } location /py/{ …

ai 幻觉

ai幻觉: 感知人类观察者不存在或无法感知的模式或对象&#xff0c;从而产生无意义或完全不准确的输出 有时 AI 算法会生成并非基于训练数据的输出结果&#xff0c;继而被转换器错误解码或不遵循任何可识别的模式。换句话说&#xff0c;它会在给出响应时“产生幻觉” 致因:训练…

freeRTOS移植实验

提示&#xff1a;文章 文章目录 前言一、背景第6章节 二、2.12.2 三、3.1 总结 前言 前期疑问&#xff1a; 本文目标&#xff1a; 一、背景 在家里先使用野火网盘资料里的freeRTOS源码&#xff0c;网盘里是v9.0.0。 J:\野火\STM32F103ZET6_霸道开发板\A盘&#xff08;资料盘…

食品加工温控场景:PROFIBUS转MODBUS的温控表连接规范

在现代的工业自动化领域里&#xff0c;实现不同通信协议设备间无缝对接的技术日益受到重视。这不仅关乎系统整合性和效率的提升&#xff0c;更是实现复杂工业过程自动化的必经之路。特别是在众多的通信协议中&#xff0c;MODBUS和PROFIBUS这两种广泛使用的协议因其各自的优势而…

【动态规划】回文串(二)

&#x1f4dd;前言说明&#xff1a; 本专栏主要记录本人的动态规划算法学习以及LeetCode刷题记录&#xff0c;按专题划分每题主要记录&#xff1a;&#xff08;1&#xff09;本人解法 本人屎山代码&#xff1b;&#xff08;2&#xff09;优质解法 优质代码&#xff1b;&…

Ubuntu22.04.5 桌面版然后安装 VMware 17

安装 VMware 需要 GCC 12版本 标题通过 PPA 安装 这是最简单的方法&#xff0c;适用于大多数 Ubuntu 版本。 步骤 1&#xff1a;添加 PPA 仓库 sudo apt update sudo apt install software-properties-common sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt…