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. [THUPC 2023 初赛] 快速 LCM 变换

    题目描述 小 I 今天学习了快速最小公倍数变换(Fast Least-Common-Multiple Transform, FLT),于是他想考考你. 给定一个长度为 \(n\) 的正整数序列 \(r ...

  2. [AGC034D] Manhattan Max Matching

    Problem Statement Snuke is playing with red and blue balls, placing them on a two-dimensional plane. ...

  3. Ubuntu 22.04 LTS 安装lnmp

    Ubuntu 22.04 LTS 安装最新稳定版本nginx.mysql5.7和php7.2 全部apt-get安装,就是快,迅速.前提是需要在有网络环境的情况下哈!! 操作系统版本:Ubuntu 2 ...

  4. 最好用的AI换脸软件,rope下载介绍

    随着AI技术的广泛运用,市面上的换脸软件也多了起来,今天给各位介绍其中的王者Rope! 先上两个动图,给大伙看看效果 rope是如何实现这种自然的效果呢?这得益于机器学习技术的不断发展,rope经过深 ...

  5. Celery将任务分发到不同的队列,交给不同的Worker处理

    https://docs.celeryq.dev/en/stable/userguide/routing.html#routing-tasks https://blog.csdn.net/wangle ...

  6. 【内核】基于 LSM 框架的 ELF 校验控制

    欲实现操作系统对正在加载的 ELF 文件的校验控制,需要借助 LSM 框架. LSM 框架介绍 LSM 全称 Linux Security MOdule,是 Linux 的一个安全模块框架.LSM 为 ...

  7. 【C++】【图像处理】灰度直方图实现算法解析(以.raw格式的图像为基础进行图像处理、gray levels:256)

    前情提要:本记录需要一定的C++和图像处理基础进行阅读. 图像处理算法学习记录: Code: 1 void histCompute(BYTE*image, int width, int height) ...

  8. Rust实现线段树和懒标记

    参考各家代码,用Rust实现了线段树和懒标记. 由于使用了泛型,很多操作都要用闭包自定义实现. 看代码. // 线段树定义 pub struct SegmentTree<T: Clone> ...

  9. 让 sdk 包静默升级的 SAO 操作,你见过几种?

    拓展阅读 让 sdk 包静默升级的 SAO 操作,你见过几种? 业务背景 有时候为业务方提供了基础的 sdk 包,为了保证稳定性,一般都是 release 包. 但是每一次升级都非常痛苦,也不可能写一 ...

  10. CSS3学习笔记-选择器

    在CSS中,选择器是一种指定一个或多个元素的方法.可以根据元素的类型.类.ID.属性等特征来选择元素.CSS3引入了很多新的选择 器,让我们可以更加灵活和精准地选择元素. 下面介绍一些常用的CSS3选 ...