1.需求如上图所以:

html相关代码如下:

 1 <div class="intent-course-wrapper">
2 <div class="class-category" v-for="(firItem, firIndex) in tabledata" :key="firIndex">
3 <div class="intent-course-header">
4 <el-checkbox v-model="firItem.mychecked" @change="firstChanged(firIndex)"></el-checkbox>
5 {{firItem.jiedianmingcheng}}
6 </div>
7 <div class="class-details" v-for="(subItem, subIndex) in firItem.classData" :key="subIndex">
8 <el-checkbox v-model="subItem.mychecked" @change="secondChanged(firIndex)"></el-checkbox>
9 <img v-lazy="subItem.kechengtupian_path" class="class-img" />
10 <div class="sub-details">
11 <p class="course-name">{{ subItem.courseName }}</p>
12 <div class="course-time">
13 {{subItem.classType}}
14 <span class="line"></span>
15 {{subItem.classHour}}
16 </div>
17 <p class="course-type">{{subItem.courseTypes.join('+') }}</p>
18 </div>
19 <div class="teacher-wrapper">
20 <div class="TeacherName">
21 <i></i>
22 {{subItem.courseTeacher}}
23 </div>
24 </div>
25 <div class="course-operate">
26 <p class="course-price" v-if="subItem.coursePrice">¥{{subItem.coursePrice}}</p>
27 <p class="combine-class" v-if="subItem.isCombineClass">
28 <i class="icon-combinate"></i>
29 {{subItem.combineClassName}}
30 </p>
31 <button class="btn-delete" @click="deleteCourse(subItem.kechengbianhao)">删除课程</button>
32 </div>
33 </div>
34 </div>
35 <div class="purchase-course">
36 <el-checkbox v-model="allChecked" @change="handleSelectAllClassfiy">全选</el-checkbox>
37 <span class="choose-class">
38 已选择
39 <span class="num">{{totalNum}}</span> 门课程
40 </span>
41 <span class="delete-class">删除选中的课程</span>
42 <router-link :to="{path:'/teamOrder'}" target="_blank" class="btn-intelligent">
43 <i class="icon-intelligent"></i>智能推荐
44 </router-link>
45 <button class="buy-class" @click="buyCourse">购买课程</button>
46 </div>
47 <div class="tip-box">
48 <i class="icon-tip-blue"></i>智能推荐:点击智能推荐,填写您的个人需求,我们可以根据您的需求,为您推荐最佳课程组合。
49 </div>
50 </div>

js相关代码如下:

data数据:

 1 tabledata: [
2 {
3 jiediandengji: '1',
4 fujiedianbianhao: '0',
5 jiedianmingcheng: '取证类课程',
6 mychecked: false,
7 classData: [
8 {
9 courseId: 'KC-2',
10 user: 'AS',
11 owner: 'AS',
12 id: '1f792fe742fb4dbba4af7b899c962567',
13 courseName: '金属非金属矿山排水作业',
14 classHour: '2',
15 coursePrice: '100',
16 courseType: '8',
17 courseDescribe: '',
18 courseTeacher: '张学军',
19 kechengtupian_path: require('../../../assets/images/temp/list1.png'),
20 classType: '石油储运类技能培训',
21 parentType: '生产类',
22 courseTypes: ['理论', '实操'],
23 mychecked: false
24 }
25 ]
26 },
27 {
28 jiediandengji: '2',
29 fujiedianbianhao: '0',
30 jiedianmingcheng: '安全生产类课程',
31 mychecked: false,
32 classData: [
33 {
34 courseId: 'KC-2',
35 user: 'AS',
36 owner: 'AS',
37 id: '1f792fe742fb4dbba4af7b899c962567',
38 courseName: '金属非金属矿山爆破作业',
39 classHour: '2',
40 coursePrice: '300',
41 courseType: '8',
42 courseDescribe: '',
43 courseTeacher: '张学军',
44 kechengtupian_path: require('../../../assets/images/temp/list2.png'),
45 classType: '石油储运类技能培训',
46 parentType: '生产类',
47 courseTypes: ['理论'],
48 mychecked: false,
49 isCombineClass: false
50 },
51 {
52 courseId: 'KC-2',
53 user: 'AS',
54 owner: 'AS',
55 id: '1f792fe742fb4dbba4af7b899c962567',
56 courseName: '油品基本特性分析以及汽柴油SDS',
57 classHour: '2',
58 coursePrice: '',
59 courseType: '8',
60 courseDescribe: '',
61 courseTeacher: '张学军',
62 kechengtupian_path: require('../../../assets/images/temp/list3.png'),
63 classType: '石油储运类技能培训',
64 parentType: '生产类',
65 courseTypes: ['实操'],
66 mychecked: false,
67 isCombineClass: false
68 },
69 {
70 courseId: 'KC-2',
71 user: 'AS',
72 owner: 'AS',
73 id: '1f792fe742fb4dbba4af7b899c962567',
74 courseName: '汽柴油化验检测基础',
75 classHour: '2',
76 coursePrice: '',
77 courseType: '8',
78 courseDescribe: '',
79 courseTeacher: '张学军',
80 kechengtupian_path: require('../../../assets/images/temp/list4.png'),
81 classType: '石油储运类技能培训',
82 parentType: '生产类',
83 courseTypes: ['实操'],
84 mychecked: false,
85 isCombineClass: true,
86 combineClassName: '组合课程一'
87 }
88 ]
89 }
90 ],

computed代码如下:

 1 // 全选功能
2 allChecked: {
3 get () {
4 let count = 0;
5 for (let i = 0; i < this.tabledata.length; i += 1) {
6 if (this.tabledata[i].mychecked === true) {
7 count += 1;
8 } else {
9 count -= 1;
10 }
11 }
12 if (count === this.tabledata.length) {
13 return true;
14 }
15 return false;
16 },
17 set (val) {
18 return val;
19 }
20 }

methods方法:

 1 // 一级change事件
2 firstChanged(index) {
3 const { classData } = this.tabledata[index];
4 if (this.tabledata[index].mychecked === false) {
5 classData.forEach((item) => {
6 this.$set(item, 'mychecked', false);
7 });
8 } else {
9 classData.forEach((item) => {
10 this.$set(item, 'mychecked', true);
11 });
12 }
13 },
14 // 二级change事件
15 secondChanged(index) {
16 const subData = this.tabledata[index].classData;
17 let tickCount = 0;
18 const len = subData.length;
19 for (let i = 0; i < len; i += 1) {
20 if (subData[i].mychecked === true) {
21 tickCount += 1;
22 } else {
23 tickCount -= 1;
24 }
25 }
26 if (tickCount === len) {
27 // 二级全勾选 一级勾选
28 this.$set(this.tabledata[index], 'mychecked', true);
29 } else {
30 // 二级未全选 一级不勾选
31 this.$set(this.tabledata[index], 'mychecked', false);
32 }
33 },
34 // 总的全选
35 handleSelectAllClassfiy(val) {
36 if (val) {
37 for (let i = 0; i < this.tabledata.length; i += 1) {
38 this.tabledata[i].mychecked = true;
39 this.firstChanged(i); // 调用一级change事件
40 }
41 } else {
42 for (let i = 0; i < this.tabledata.length; i += 1) {
43 this.tabledata[i].mychecked = false;
44 this.firstChanged(i); // 调用一级change事件
45 }
46 }
47 },

参考网站如下:https://www.cnblogs.com/samsara-yx/p/11083038.html

vue结合element-ui实现多层复选框checkbox的更多相关文章

  1. vue结合element-ui实现二级复选框checkbox

    vue结合element-ui实现二级复选框checkbox 话不多说先上效果 交互:1.点击按钮全选,所有的checkbox全部选中:点击清空,所有的checkbox框都不选:点击确定获取选中的ch ...

  2. 安卓开发:UI组件-RadioButton和复选框CheckBox

    2.5RadioButton 为用户提供由两个及以上互斥的选项组成的选项集. 2.5.1精简代码 在按钮变多之后,多次重复书写点击事件有些繁琐,我们在这里创建一个事件OnClick,每次点击时调用该事 ...

  3. [原创]纯JS实现网页中多选复选框checkbox和单选radio的美化效果

    图片素材: 最终效果图: <html><title> 纯JS实现网页中多选复选框checkbox和单选radio的美化效果</title><head>& ...

  4. css3美化复选框checkbox

     两种美化效果如下图: 代码(html) <div id="main"> <h2 class="top_title">使用CSS3美化复 ...

  5. 复选框(checkbox)、单选框(radiobox)的使用

    复选框(checkbox).单选框(radiobox)的使用 复选框: HTML: // 复选框 <input type="checkbox" name="chec ...

  6. php 判断复选框checkbox是否被选中

    php 判断复选框checkbox是否被选中   复选框checkbox在php表单提交中经常被使用到,本文章通过实例向大家介绍php如何判断复选框checkbox中的值是否被选中,需要的朋友可以参考 ...

  7. jquery判断复选框checkbox是否被选中

    jquery判断复选框checkbox是否被选中 使用is方法 //如果选中返回true //如果未选中返回false .is(':checked');

  8. 3.Android之单选按钮RadioGroup和复选框Checkbox学习

    单选按钮和复选框在实际中经常看到,今天就简单梳理下. 首先,我们在工具中拖进单选按钮RadioGroup和复选框Checkbox,如图: xml对应的源码: <?xml version=&quo ...

  9. Jquery操作复选框(CheckBox)的取值赋值实现代码

    赋值 复选框 CheckBox 遍历 取值  1. 获取单个checkbox选中项(三种写法): $("input:checkbox:checked").val() 或者 $(&q ...

  10. 使用CSS3美化复选框checkbox

    我们知道HTML默认的复选框样式十分简陋,而以图片代替复选框的美化方式会给页面表单的处理带来麻烦,那么本文将结合实例带您一起了解一下使用CSS3将复选框checkbox进行样式美化,并且带上超酷的滑动 ...

随机推荐

  1. 【UniApp】-uni-app概述

    前言 好,经过我们前面文章的编写,大家可以了解到微信小程序开发相关的知识,了解完了这个微信小程序开发和云开发之后,从这篇文章开始,我再来给大家写一下关于 Uniapp 的知识. 好,开始,那什么是 U ...

  2. force语句

    类似于assign,用于调试,可以强制给赋值,放在initial后,可以穿透到最内部模块. force (强制赋值操作)与 release(取消强制赋值)表示第二类过程连续赋值语句. 使用方法和效果, ...

  3. springcloud+nacos项目启动后,登陆连接服务器时超时:Connection timed out no further information

    问题现象:项目启动后,登陆连接服务器时超时:Connection timed out no further information 192.168.42.190:4004 原因:我的配置有问题,在na ...

  4. [ABC274E] Booster

    Problem Statement In a two-dimensional plane, there are $N$ towns and $M$ chests. Town $i$ is at the ...

  5. Feign远程调用丢失请求头问题

    问题 项目中我使用feign进行远程调用时,在请求头设置了参数(UserId),结果在调用方却收获取不到... 解决办法 feign提供了一个拦截器,在远程调用之前执行 核心代码 package co ...

  6. URL路径参数转换器

    作用和基本使用 作用: 用于校验请求的路由参数中的值是否符合符合指定的规则. 这个使用方法和django中的路由参数转换器是差不多的. 至于为什么用路径参数转换器,原因和django中的一样,虽然你可 ...

  7. bash shell笔记整理——cd命令、目录路径

    cd---change directory 改变目录的意思 语法: cd [选项] <目录> 选项: -L 会自动进入符号连接目录(默认) -P 进入符号连接目录的真实目录下. 常用: 命 ...

  8. Spring Boot 2.x 到 3.2 的全面升级指南

    Spring Framework 是一种流行的开源企业级框架,用于创建在 Java Virtual Machine (JVM) 上运行的独立.生产级应用程序.而Spring Boot 是一个工具,可以 ...

  9. springboot整合mybatis步骤思路

    /** * springboot整合mybatis步骤思路 * 依赖导入 * 建表 * 实体类 * mapper配置文件 * mapper接口 * yaml配置 * properties配置数据库连接 ...

  10. 为什么说UUID是唯一的?

    在数字时代,我们需要一种能够唯一标识各种实体的方法.通用唯一标识符(UUID)正是为满足这一需求而诞生的.本文将从多个方面介绍UUID,探讨它为何成为通用唯一标识符,以及为什么说UUID是唯一的. U ...