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. MybatisPlus条件查询方法全解

    1.是什么? MybatisPlus通过条件构造器可以组装复杂的查询条件,写一些复杂的SQL语句,从而简化我们的开发提升我们的开发效率 # 可以简单的理解为就是我们写SQL语句时where后面的条件 ...

  2. Python 潮流周刊第 32 期(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  3. 华企盾DSC防泄密:PTC Creo程序打开加密文件报错

    SolidDesigner.exe(PTC Creo)程序打开加密文件报错,添加的进程不对,任务管理器查看详细信息即可找到进程

  4. 3D组合地图在数据可视化大屏中的应用

    前言 当下数据可视化大屏展示的花样层出不穷,可视化大屏的C位越来越卷,地图的样式已经不再止步于普通的平面地图,在虚拟环境中探索和交互,今天我们要介绍的这一款3D组合地图可以将复杂的数据以直观的方式呈现 ...

  5. 为什么要重写equals()?

    为什么要重写equals()? Equals和 == 的区别: ==:是个运算符, 判断是否相等,基本数据类型进行判断 也可判断两个对象相等,比较两个对象的哈希码值 Equals:是个Object类的 ...

  6. JavaFx FXML入门(五)

    JavaFx FXML入门(五) JavaFX 从入门入门到入土系列 JavaFx的FXML类似安卓中的视图文件,可以添加样式,添加css,添加id然后在java代码中绑定点击事件.可以使用工具编辑: ...

  7. MySQL 基础(一)数据存储

    存储在磁盘上的数据需要通过 IO 来读取,这是一个比较耗时的操作,为了能够提高访问速度,MySQL 引入了 Page 的结构作为客户端与数据交互的基本单元. Page 结构 Page 的大小默认为 1 ...

  8. Feign源码解析5:loadbalancer

    背景 经过前面几篇的理解,我们大致梳理清楚了FeignClient的创建.Feign调用的大体流程,本篇会深入Feign调用中涉及的另一个重要组件:loadbalancer,了解loadbalance ...

  9. 在线录屏-通过Web API接口轻松实现录屏

    在线录屏是指在互联网上进行屏幕录制的过程.它允许用户通过网络连接,将自己的屏幕活动记录下来,并可以在需要时进行播放.共享或存档.在线录屏常用于教育.培训.演示.游戏等场景,可以帮助用户展示操作步骤.解 ...

  10. JDK1.6在生产环境引起的坑

    本文分享自华为云社区<[高并发]记一次JDK1.6在生产环境引起的坑!>,作者: 冰 河 . 最近有朋友遇到一个困惑:他写的程序在测试环境一点问题没有,但是发到生产环境却会频繁出现内存溢出 ...