uniapp自定义圆形勾选框和全选框

自定义圆形勾选框和全选框

原来用的checkbox

cpp 复制代码
	dataList: [],//数据列表
	allChecked: false,//是否全选
	selectList: [],//选中的id列表
	selectNameList: [],//选中的name列表
cpp 复制代码
	<!--checkbox start -->
	<!--单选-->
	<view class="li" v-for="(item,index) in  dataList" :key="index" @click="btnApprove(item)">
		<checkbox :checked="selectList.length > 0 && selectList.indexOf(item.enrollId) !== -1"
	                    class="w30 h64 lh-54"
	                    @click.stop="btnClickSpeciality(item, '')"
	                    style="transform: scale(0.8) translateY(0px);margin-left:15px;"
	                    />
	</view>
	
	<!--全选-->
	<view class="h70" v-if="dataList.length > 0"></view>
	<view class="bottomStatus" v-if="dataList.length > 0">
		<checkbox :checked="allChecked" @click="handleSelectionChange(!allChecked)" />全选
		
		<view class="refuse">驳回</view>
		<view class="sure">同意</view>
	</view>
	<!--checkbox end -->
cpp 复制代码
	<!--自定义checkbox start -->
	<!--自定义圆形勾选框 单选-->
	<view v-if="curValue==0" style="margin-right: 15px;">
		<!--已选中-->
		<view class="el-radio__input is-checked" v-if="selectList.length > 0 && selectList.indexOf(item.enrollId) !== -1" @click.stop="btnClickSpeciality(item, '')">
              <text class="iconfont icon-success" style="color: white;"></text>
		</view>
        <!--未选中-->
		<view class="el-radio__input" v-else @click.stop="btnClickSpeciality(item, '')"></view>
	</view>


	<view class="h70" v-if="dataList.length > 0"></view>
    <view class="bottomStatus" v-if="dataList.length > 0">
    <!--自定义圆形勾选框 多选-->
   	 <view style="margin-right: 15px;">
      <!--已选中-->
        <view class="el-radio__input is-checked" v-if="allChecked" @click="handleSelectionChange(!allChecked)">
   	     <text class="iconfont icon-success" style="color: white;"></text>
        </view>
      <!--未选中-->
        <view class="el-radio__input" v-else @click="handleSelectionChange(!allChecked)"></view>
        </view>
        全选
     </view>

     <view class="refuse" @click="btnAllRefuse">驳回</view>
     <view class="sure" @click="btnSure">同意</view>
    </view>
	<!--自定义checkbox end -->
cpp 复制代码
  // 点击单选
    btnClickSpeciality(row) {
      let index = this.selectList.indexOf(row.enrollId);
      if (index !== -1) {
        this.selectList.splice(index, 1);
        this.selectNameList.splice(index, 1);
      } else {
        this.selectList.push(row.enrollId);
        this.selectNameList.push(row.studentName)
      }
      this.checkAll();
    },
	 // 全选
    checkAll() {
      if (this.dataList && this.dataList.length > 0) {
        let checkList = this.dataList.filter(a => this.selectList.find(b => a.enrollId == b));
        console.log("checkList===", checkList);

        if (this.dataList.length == checkList.length) {
          this.allChecked = true;
        } else {
          this.allChecked = false;
        }

      } else {
        this.allChecked = false;
      }
    },
     // 点击全选
    handleSelectionChange(e) {
      if (e) {
        let list = this.dataList.filter((a) => !this.selectList.find(b => a.enrollId == b));

        list.map(row => {
          this.btnClickSpeciality(row);
        })
      } else {
        let list = this.dataList.filter((a) => this.selectList.find(b => a.enrollId == b));
        list.map(row => {
          this.btnClickSpeciality(row);
        })
      }
    },
相关推荐
OpsEye1 小时前
大模型 Token 计量不准,是什么原因,怎么解决??
javascript·ai编程
独隅3 小时前
WebStorm Windows 版 React / Next.js 实战替换指南
javascript·windows·webstorm
冷眸_3 小时前
同名食材不能直接相减:一个 JavaScript 用量模型的边界
javascript
apollo_qwe3 小时前
接口超时了,前端为什么不能直接重试?
javascript·http
码间留白6 小时前
鸿蒙端对接 BLE 血压计:从一次握手到读数入库(二)设备篇
物联网·uni-app·鸿蒙·蓝牙ble·血压计
toooooop88 小时前
CRMEB 故障排查笔记:安全网关只放行 GET/POST 怎么办
前端·javascript·vue.js·thinkphp6·crmeb
软件技术NINI8 小时前
基于SpringBoot和Vue的项目评审系统
javascript·vue.js·spring boot·后端·spring·毕业设计·毕设
vipxieliang8 小时前
JavaScript 模板字符串与标签模板:不只是拼接
前端·javascript
Dream-Y.ocean18 小时前
鸿蒙PC平台宅匠 3D 室内设计适配实战:基于 Electron 壳方案的 Three.js 双渲染引擎与参数化户型编辑器开发
javascript·3d·harmonyos
Highcharts.js19 小时前
Highcharts Gantt使用符号的自定义数据标签开发甘特图示例
javascript·甘特图·highcharts·图表开发·实战代码·响应式图表