Element:Cheack多選勾選效果邏輯判斷

效果展示

取消子級勾選,父級的勾選效果

代碼合集

(1)組件代碼??fromlist.cheackType? 類型,permissio表示是權限.?fromlist:[{id:1,children:[{...}]},...]傳遞的數據大致結構

<!-- 操作權限 --><template v-if="fromlist.cheackType == 'permission'"><div v-if="item.cheackall && item.title" class="CheackAllBox"><el-checkbox v-model="item.selected" :indeterminate="item.isIndeterminate" :label="item.title" @change="(value) => { handelCheackAll(value, key, item);} ">{{ item.name }}</el-checkbox></div><el-checkbox-group v-model="TableList[key]"><!-- 最父級 --><div v-for="(val, i) in item.children" class="tow_box"><el-checkbox :indeterminate="val.isIndeterminate" @change="(value) => { cheackChange(value, key, val, val.id, item);}" :label="val.id">{{ val.name }}</el-checkbox><div class="three_box_nochildren"><template v-for="(c_val, i) in val.children"><div v-if="!c_val.children"> <el-checkbox :label="c_val.id">{{ c_val.name}}</el-checkbox></div></template></div><!-- 子級 --><div class="three_box"><template v-for="(c_val, i) in val.children"><div v-if="c_val.children"><el-checkbox :label="c_val.id" :indeterminate="c_val.isIndeterminate" @change=" (value) => {cheackChange(value, key, c_val, c_val.id, val);}" >{{ c_val.name }}</el-checkbox><div class="four_box"><template v-for="(s_val, i) in c_val.children"><el-checkbox :indeterminate="s_val.isIndeterminate" @change=" (value) => { cheackChange( value,key, s_val,s_val.id, c_val ); }" :label="s_val.id">{{ s_val.name }}</el-checkbox><div :class=" s_val.children.length > 0 ? 'fir_box' : 'four_box'" v-if="s_val.children.length > 0 "><template v-for="(ss_val, i) in s_val.children"><el-checkbox :indeterminate="ss_val.isIndeterminate" @change=" (value) => { cheackChange( value, key, ss_val, ss_val.id, s_val);}" :label="ss_val.id"> {{ ss_val.name }} </el-checkbox><div :class="ss_val.children.length > 0? 'fir_box': 'four_box'" v-if="ss_val.children.length > 0"><template v-for="(sss_val, i) in ss_val.children"><el-checkbox :indeterminate="sss_val.isIndeterminate" @change=" (value) => { cheackChange(value, key,sss_val, sss_val.id,ss_val); }" :label="sss_val.id"> {{ sss_val.name }}</el-checkbox></template></div></template></div></template></div></div></template></div></div></el-checkbox-group></template>

(2)?處理方法

function cheackChange( value: any,key: string,item: any,id: any,p_item: any,isselect: boolean) {
//點擊傳遞的數據console.log('value',value,'key',key,'item',item,'id',id,'p_item',p_item,'isselect',isselect);if (!props.fromlist.notrigger) {
//判斷是否有子數據,則調到處理全選方法 針對點擊的多選這個數據的子級,而不是最父級的子級if (item.children.length > 0) {handelCheackAll(value, key, item, id, "");}
//cheack點擊傳遞過來的 數據 trus or falseif (value) {//處理勾選的方法getIdUpdataPrintSelectStatus(p_item,key,isselect,item.id,value,true,id);} else {//將點擊的對象賦值為 false 就是取消勾選 item.isIndeterminate = false;//處理勾選的方法getIdUpdataPrintSelectStatus(p_item, key,isselect,item.id,value,false,id);}}}function getIdUpdataPrintSelectStatus(data: any,key: string,isselect: boolean,printid: number,value: boolean,is: boolean,id: number) {forFromlistGetIdUpdataStatus(props.fromlist.listData[key],data.id,key,is,id);
}function forFromlistGetIdUpdataStatus(data:any,printid:number,key:string,is:boolean,id:number){//傳遞過來的 多選存放的數組 data : 傳遞給組件渲染的數組  ,printid:多選勾選的元素的父級id  key:是當前分辨是哪個組件的key(如標簽頁點擊切換不同模塊下的多選,key就是tab的key值) is:勾選返回的 true(勾選中)/false(取消勾選)  id:當前勾選元素的id 在此方法中沒用到//循環傳遞過來的數組data.children.map(item=>{//判斷數組下是否能夠匹配到 傳遞過來當前勾選數據的父id(判斷父級勾選效果)if(item.id == printid){//找到勾選的父級//判斷結構數組的子級的id是否存在 TableList[key]存放勾選數據中 并且 判斷(你勾選的那個cheack)當前勾選的狀態是trueif(item.children.every(c_item=> TableList[key].includes(c_item.id)) && is){//判斷是否取消 cheack indeterminate屬性,循環父級中是否所有的子級被勾選let isinfalse = item.children.every(c_item => {// 判斷勾選數據中是否存在所有的子級數據。 并且子級為false if (TableList[key].includes(c_item.id) && !c_item.isIndeterminate ) {// 判斷是否包含所有子級數據 這一層已經可以循環到勾選的那層級了return c_item.children.every(cc_item => TableList[key].includes(cc_item.id));}return false;});//判斷是否存在勾選數據中,沒有的話就添加進去TableList[key].includes(item.id)  ? '' : TableList[key].push(item.id)//是否父級層級下的子級全部勾選,將isIndeterminate設置為false ,設置為false 并且 父級下的子級數據全部都在TableList[key]中,父級勾選狀態就會變成勾選。isinfalse  ? item.isIndeterminate = false : ''}else if(item.children.some(c_item=> TableList[key].includes(c_item.id))){// console.log('有子集并且還是勾選狀態',item,'TableList[key]',TableList[key]);!TableList[key].includes(item.id)  ? TableList[key].push(item.id)   : ''//設置為減號item.isIndeterminate = true}else{//勾選的數組中如果不存在父級中的子級數據 就將父級取消所有狀態 變成空的cheack框item.isIndeterminate = isTableList[key] = TableList[key].filter(num => num != item.id);}//如果此層級找不到就一層一層向上找 直到能匹配上傳遞過來的勾選父級id:printidforFromlistGetIdUpdataStatus(props.fromlist.listData[key],item.parent_id,key,is,id)}else {//如果此層級找不到就一層一層向下找 直到能匹配上傳遞過來的勾選父級id:printidforFromlistGetIdUpdataStatus(item,printid,key,is,id)}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/80939.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/80939.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/80939.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【3DMax腳本MaxScript開發:創建高效模型虛擬體綁定和材質管理系統,從3DMax到Unreal和Unity引擎_系列第一篇】

3ds Max 腳本開發 3ds Max 腳本開發&#xff1a;創建高效模型虛擬體綁定和材質管理系統3ds Max 插件制作背景&#xff1a;設計思路一、場景節點收集與過濾廢話不多說&#xff0c;直接上完整代碼&#xff1a;界面定義與基礎設置界面控件創建狀態變量核心邏輯函數過濾選項改變事件…

【Linux學習筆記】進程替換和自定義shell

【Linux學習筆記】進程替換和自定義shell &#x1f525;個人主頁&#xff1a;大白的編程日記 &#x1f525;專欄&#xff1a;Linux學習筆記 文章目錄 【Linux學習筆記】進程替換和自定義shell前言一.進程程序替換1.1 替換原理1.2 替換函數1.2.1函數解釋1.2.2命名理解 二.自主…

【辦公類-89-03】20250429AI寫的研討記錄,清除格式,統一格式,名字替換。部分加粗,添加頁眉

背景需求: 檢查自即,需要AI一下院內的五次科研培訓記錄。 本次用了豆包 豆包寫的不錯,也是“水字數”的高手 把每次培訓內容貼到WORD里 把AI資料貼到WORD里,發現問題: 1、字體、段落什么都是不統一的,需要統一改成宋體小四,1.5倍行距 2、十個研討人也要改成真人。就找…

unity Orbbec Femto Bolt接入unity流程記錄 AzureKinectExamples 插件 使用記錄

奧比中光的深度相機Orbbec Femto Bolt是Microsoft的Azure Kinect DK的升級版&#xff0c;根據官網的文檔配置環境遇到了一些問題&#xff0c;記錄一下。 注意&#xff1a; 官網文檔鏈接&#xff1a;Femto Bolt文檔 1、首先連接相機到電腦USB3.0&#xff0c;接通電源&#xf…

聊天室系統:多任務版TCP服務端程序開發詳細代碼解釋

1. 需求 目前我們開發的TCP服務端程序只能服務于一個客戶端&#xff0c;如何開發一個多任務版的TCP服務端程序能夠服務于多個客戶端呢? 完成多任務&#xff0c;可以使用線程&#xff0c;比進程更加節省內存資源。 2. 具體實現步驟 編寫一個TCP服務端程序&#xff0c;循環等…

Python3:裝飾器、生成器與迭代器

Python3&#xff1a;裝飾器、生成器與迭代器 一、&#x1f3ad; 裝飾器&#xff1a;給函數穿上"魔法外衣"裝飾器基本概念為裝飾器添加參數傳遞功能帶參數的裝飾器functools.wraps&#xff1a;保留原函數的元信息實用裝飾器示例1. 計時器裝飾器2. 緩存裝飾器(Memoizat…

SQL命令一:SQL 基礎操作與建表約束

目錄 引言 一、SQL 基礎命令 &#xff08;一&#xff09;數據庫相關操作 &#xff08;二&#xff09;表格相關操作 &#xff08;三&#xff09;MySQL 常用數據類型 二、增刪改查&#xff08;CRUD&#xff09;操作 &#xff08;一&#xff09;增加數據 &#xff08;二&a…

Windows 桌面個性高效組件工具

軟件介紹 Widgets 這款基于 Vue3 構建的開源 Windows 桌面小部件工具超實用。 其多樣化組件庫涵蓋超 20 種&#xff0c;從倒計時、打工進度等實用工具&#xff0c;到抖音熱榜等實時資訊組件應有盡有&#xff0c;各組件獨立運行&#xff0c;滿足多場景需求。 高度自定義布局支持…

PCB入門指南:從電阻到常見電路的全解析

知識點1【電阻】 常見的是 色環電阻和貼片電阻 1、色環電阻 色環電阻&#xff0c;早期是碳膜電阻&#xff0c;精度不是很高&#xff0c;一般是4個色環&#xff0c;紅 橙 黃 綠 藍 紫 灰 白 黑&#xff0c;每個顏色代表一個阻值 后期是金屬膜電阻&#xff0c;5個色環&#x…

論文閱讀的三個步驟

論文閱讀的三個步驟 方法說明鏈接&#xff1a;https://www.academia.edu/4907403/How_to_Read_a_Paper 方法框架如下

Centos 7 ssh連接速度慢(耗時20秒+)

作系統&#xff1a;centos7.9 現象突然間通過 ssh、xshell等客戶端工具連接時&#xff0c;連接速度緩慢&#xff0c;需要耗時20秒左右才能連接上 排查思路&#xff1a; 1. 查看操作系統日志 從系統日志里看到較多的錯誤&#xff0c;這個可能是一個bug &#xff08;現象類似&a…

通過腳本自動檢查項目中全局的中文

現在越來越多的公司在做出海項目&#xff0c;出海項目首先要解決的就是語言國際化的問題&#xff0c;有很多如l18n、l10n的工具可以用&#xff0c;這些工具可以提供解決方案&#xff0c;但是不能約束開發者的開發行為。開發者仍然可能在代碼中存留沒有做過國際化處理的部分&…

軟件分析師-第三遍-章節導圖-13/14

系統設計&#xff0c;按步驟分&#xff1a;概要設計、詳細設計。另一種分類方式&#xff1a;按設計內容和設計方法分。設計內容&#xff1a;處理流程、輸入/輸出原型、人機交互。設計方法&#xff1a;結構化、面向對象、設計模式。 軟件實現&測試&#xff0c;分為實現、測…

通過全局交叉注意力機制和距離感知訓練從多模態數據中識別橋本氏甲狀腺炎|文獻速遞-深度學習醫療AI最新文獻

Title 題目 Hashimoto’s thyroiditis recognition from multi-modal data via globalcross-attention and distance-aware training 通過全局交叉注意力機制和距離感知訓練從多模態數據中識別橋本氏甲狀腺炎 01 文獻速遞介紹 橋本氏甲狀腺炎&#xff08;HT&#xff09;&a…

刀客doc:小紅書商業技術負責人蒼響離職

根據大廠日爆的爆料&#xff0c;小紅書商業化再度迎來高層人事變動&#xff0c;原商業平臺技術負責人蒼響&#xff08;薯名&#xff09;&#xff0c;職級L2&#xff0c;已于本月正式離職&#xff0c;其下屬團隊現由電商業務負責人接管。 根據刀客doc獲得的資料&#xff0c;蒼響…

Manus AI多語言手寫識別技術全解析:從模型架構到實戰部署

簡介 Manus AI作為當前多語言手寫識別領域的領軍技術&#xff0c;其核心創新在于融合三維卷積網絡、動態特征融合引擎和混合解碼系統&#xff0c;實現了對112種語言的98.7%識別準確率和8ms延遲的實時處理能力。本文將深入探討Manus AI的架構設計、特征提取方法、數據預處理策略…

華為云Astro大屏從iotda影子設備抽取數據做設備運行狀態的大屏實施步驟

目錄 背景與意義 1. 準備階段 2. IoTDA 開放影子查詢API 3. Astro輕應用創建連接器 4. Astro大屏設計界面 5. 數據綁定與交互邏輯 6. 發布與測試 小結&#xff08;流程復盤&#xff09; 背景與意義 隨著物聯網技術的快速發展&#xff0c;越來越多的設備接入云端&#x…

為什么要學習《易經》?

《易經》精華解讀&#xff1a;變易之道與人生智慧 《易經》&#xff08;《周易》&#xff09;是中國最古老的經典之一&#xff0c;被譽為“群經之首&#xff0c;大道之源”。它不僅是占卜之書&#xff0c;更是一部哲學經典&#xff0c;揭示了宇宙運行的規律和人生處世的智慧。…

逆傳播AIGEO營銷:破局生成式搜索時代,讓AI成為品牌代言人!

當GS(Generative Search生成式搜索)成為用戶的新“搜索入口”&#xff0c;你的品牌還在進行傳統軟文發布嗎? Gartner分析師預測"到2026年70%企業將把生成式AI整合進核心營銷系統"&#xff0c;傳統SEO的正被AI搜索徹底重構。用戶的搜索行為發生史詩級轉變&#xff0…

WPF(Windows Presentation Foundation)的內容模型

WPF&#xff08;Windows Presentation Foundation&#xff09;的內容模型&#xff08;Content Model&#xff09;是其核心架構之一&#xff0c;定義了UI元素如何組織和呈現內容。以下是WPF內容模型的系統化解析&#xff1a; 1. 內容模型基礎概念 WPF通過邏輯樹和可視化樹管理內…