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进行样式美化,并且带上超酷的滑动 ...
随机推荐
- Hive架构组件
架构图 Hive组件
- 用python将卡尔曼滤波技术和统计套利应用在期货市场
背景 根据当前中国的交易规则,股票不能做空.与更发达的市场相反,套利机会不容易实现.这表明那些寻找并能够利用它们的人可能会有机会. 因此,我决定使用统计套利和配对交易技术专注于中国的期货市场. 战略理 ...
- python操作elasticsearch-全文检索、拼写纠错、补全提示
1.首先安装elasticsearch包 pip install elasticsearch (一般会包含新旧版本,如果想要特定的版本,比如5.x 可以在后面加5数字) ""&qu ...
- MinIO客户端之head
MinIO提供了一个命令行程序mc用于协助用户完成日常的维护.管理类工作. 官方资料 mc head 查看对象的前N行内容,N默认为10,命令如下: ./mc head local1/bkt1/doc ...
- 支付宝沙箱支付-zfbsxzf
title: 支付宝沙箱支付 date: 2022-03-03 13:55:15.281 updated: 2022-03-10 16:00:42.331 url: https://www.yby6. ...
- 【笔记】 springCloud-configServer配置中心
当然第一步还是得要了解啦! 介绍 做项目, 那么就少不了配置微服务架构中,配置文件众多,各个服务的配置文件也有可能不一样, Spring为我们提供了相应的配置中心组件--Spring Cloud co ...
- 部署堡垒机4——CentOS7 编译安装 Python 3.8.12
1.去python3的官方网站下载源代码 https://www.python.org/downloads/ 下载安装Python 3.8.12到/opt/python3 cd /opt wget h ...
- CF650A Watchmen
首先解释一下题目里面的两个概念: 曼哈顿距离:即 \(|x_a - x_b| + |y_a - y_b|\) 欧几里得距离:即 \(\sqrt{(x_a - x_b) ^ 2 + (y_a - y_b ...
- k8s初始化pod-pod标签
目录 initContainers(初始化容器) 静态pod pod的调度策略(将pod指派给特定节点) initContainers(初始化容器) k8s在1.3版本的时候引入了一个初始化容器(in ...
- CSS3学习笔记-选择器
在CSS中,选择器是一种指定一个或多个元素的方法.可以根据元素的类型.类.ID.属性等特征来选择元素.CSS3引入了很多新的选择 器,让我们可以更加灵活和精准地选择元素. 下面介绍一些常用的CSS3选 ...