vue结合element-ui实现多层复选框checkbox

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的更多相关文章
- vue结合element-ui实现二级复选框checkbox
vue结合element-ui实现二级复选框checkbox 话不多说先上效果 交互:1.点击按钮全选,所有的checkbox全部选中:点击清空,所有的checkbox框都不选:点击确定获取选中的ch ...
- 安卓开发:UI组件-RadioButton和复选框CheckBox
2.5RadioButton 为用户提供由两个及以上互斥的选项组成的选项集. 2.5.1精简代码 在按钮变多之后,多次重复书写点击事件有些繁琐,我们在这里创建一个事件OnClick,每次点击时调用该事 ...
- [原创]纯JS实现网页中多选复选框checkbox和单选radio的美化效果
图片素材: 最终效果图: <html><title> 纯JS实现网页中多选复选框checkbox和单选radio的美化效果</title><head>& ...
- css3美化复选框checkbox
两种美化效果如下图: 代码(html) <div id="main"> <h2 class="top_title">使用CSS3美化复 ...
- 复选框(checkbox)、单选框(radiobox)的使用
复选框(checkbox).单选框(radiobox)的使用 复选框: HTML: // 复选框 <input type="checkbox" name="chec ...
- php 判断复选框checkbox是否被选中
php 判断复选框checkbox是否被选中 复选框checkbox在php表单提交中经常被使用到,本文章通过实例向大家介绍php如何判断复选框checkbox中的值是否被选中,需要的朋友可以参考 ...
- jquery判断复选框checkbox是否被选中
jquery判断复选框checkbox是否被选中 使用is方法 //如果选中返回true //如果未选中返回false .is(':checked');
- 3.Android之单选按钮RadioGroup和复选框Checkbox学习
单选按钮和复选框在实际中经常看到,今天就简单梳理下. 首先,我们在工具中拖进单选按钮RadioGroup和复选框Checkbox,如图: xml对应的源码: <?xml version=&quo ...
- Jquery操作复选框(CheckBox)的取值赋值实现代码
赋值 复选框 CheckBox 遍历 取值 1. 获取单个checkbox选中项(三种写法): $("input:checkbox:checked").val() 或者 $(&q ...
- 使用CSS3美化复选框checkbox
我们知道HTML默认的复选框样式十分简陋,而以图片代替复选框的美化方式会给页面表单的处理带来麻烦,那么本文将结合实例带您一起了解一下使用CSS3将复选框checkbox进行样式美化,并且带上超酷的滑动 ...
随机推荐
- [THUPC 2023 初赛] 快速 LCM 变换
题目描述 小 I 今天学习了快速最小公倍数变换(Fast Least-Common-Multiple Transform, FLT),于是他想考考你. 给定一个长度为 \(n\) 的正整数序列 \(r ...
- [AGC034D] Manhattan Max Matching
Problem Statement Snuke is playing with red and blue balls, placing them on a two-dimensional plane. ...
- Ubuntu 22.04 LTS 安装lnmp
Ubuntu 22.04 LTS 安装最新稳定版本nginx.mysql5.7和php7.2 全部apt-get安装,就是快,迅速.前提是需要在有网络环境的情况下哈!! 操作系统版本:Ubuntu 2 ...
- 最好用的AI换脸软件,rope下载介绍
随着AI技术的广泛运用,市面上的换脸软件也多了起来,今天给各位介绍其中的王者Rope! 先上两个动图,给大伙看看效果 rope是如何实现这种自然的效果呢?这得益于机器学习技术的不断发展,rope经过深 ...
- Celery将任务分发到不同的队列,交给不同的Worker处理
https://docs.celeryq.dev/en/stable/userguide/routing.html#routing-tasks https://blog.csdn.net/wangle ...
- 【内核】基于 LSM 框架的 ELF 校验控制
欲实现操作系统对正在加载的 ELF 文件的校验控制,需要借助 LSM 框架. LSM 框架介绍 LSM 全称 Linux Security MOdule,是 Linux 的一个安全模块框架.LSM 为 ...
- 【C++】【图像处理】灰度直方图实现算法解析(以.raw格式的图像为基础进行图像处理、gray levels:256)
前情提要:本记录需要一定的C++和图像处理基础进行阅读. 图像处理算法学习记录: Code: 1 void histCompute(BYTE*image, int width, int height) ...
- Rust实现线段树和懒标记
参考各家代码,用Rust实现了线段树和懒标记. 由于使用了泛型,很多操作都要用闭包自定义实现. 看代码. // 线段树定义 pub struct SegmentTree<T: Clone> ...
- 让 sdk 包静默升级的 SAO 操作,你见过几种?
拓展阅读 让 sdk 包静默升级的 SAO 操作,你见过几种? 业务背景 有时候为业务方提供了基础的 sdk 包,为了保证稳定性,一般都是 release 包. 但是每一次升级都非常痛苦,也不可能写一 ...
- CSS3学习笔记-选择器
在CSS中,选择器是一种指定一个或多个元素的方法.可以根据元素的类型.类.ID.属性等特征来选择元素.CSS3引入了很多新的选择 器,让我们可以更加灵活和精准地选择元素. 下面介绍一些常用的CSS3选 ...