当前位置: 首页 > news >正文

桐城住房建设网站上海传媒公司介绍

桐城住房建设网站,上海传媒公司介绍,广东新闻联播片头,做网站可以赚钱吗一、场景描述 实现一个分配权限的页面#xff0c;最左侧是大的权限模块的名称#xff0c;左右侧是控制其是否勾选的多选框。中间部分是一级权限模块下的子权限名称及多选框。 请求此权限模块数据的接口返回的是树形结构 对象数组。 主要属性为menuName表示权限名#xff0…一、场景描述 实现一个分配权限的页面最左侧是大的权限模块的名称左右侧是控制其是否勾选的多选框。中间部分是一级权限模块下的子权限名称及多选框。 请求此权限模块数据的接口返回的是树形结构 对象数组。 主要属性为menuName表示权限名isHas表示是否拥有此权限1或0字符串parentMenuId为0表示一级children表示子项id唯一标识。 展示在界面的数据为一级和没有子项的末级。对象数组项中可能没有children子项即权限一级二级三级四级都可能出现。多选框标识是否是否有此权限。并且存在依赖关系。当界面上某模块所有子项勾选一级多选框自动勾选一个子项未勾选一级多选框自动不勾选。一级多选框的勾选与否同时也能控制此模块的所有子项的勾选。 当选定权限保存时向后端传递的是界面上所有勾选项。 二、实现 2.1 数据渲染 el-checkbox的v-model属性为选中项绑定值可以是布尔、字符串或数字类型。用true-label和false-label标识选中和未选中值即可。 但是当使用的是否以为只能是布尔类型就把返回的数据依赖isHas转化一下渲染. // PermissionsType.value是被赋值的数据 for (let i 0; i PermissionsType.value.length; i) {addIsCheckedProperty(PermissionsType.value[i]); } //增加isChecked标识选中未选中 function addIsCheckedProperty(menu) {if (menu.isHas 1) {menu.isChecked true;} else {menu.isChecked false;}if (menu.children menu.children.length 0) {for (let i 0; i menu.children.length; i) {addIsCheckedProperty(menu.children[i]);}} }2.2 多选框的关联关系 为el-checkbox绑定change事件传递当前的项作为参数。 当parentMenuId 0即为一级数据检测到一级就根据一级数据更新其下所有子项isChecked 。 若为子项则根据所有子项的isChecked状态改变一级项的isChecked 状态 //el-checkbox的change事件 const handleCheckboxChange (item) {//点击一级if (item.parentMenuId 0) {updateChildrenCheckedStatus(item, item.isChecked);}updateParentCheckedStatus(PermissionsType.value); }; // 递归更新子菜单状态 const updateChildrenCheckedStatus (menu, isChecked) {if (menu.children) {menu.children.forEach((child) {child.isChecked isChecked;updateChildrenCheckedStatus(child, isChecked); // 继续更新孙菜单});} }; // 检查并更新父菜单状态 const updateParentCheckedStatus (menu) {menu.forEach((menuItem) {if (menuItem.children menuItem.children.length 0) {menuItem.isChecked areAllChildrenChecked(menuItem.children);} else if (!menuItem.isChecked) {menuItem.isChecked false; // 只有一级的isChecked置为false}}); }; const areAllChildrenChecked (children) {for (const child of children) {if (child.children child.children.length 0) {if (!areAllChildrenChecked(child.children)) {return false;}} else {if (!child.isChecked) {return false;}}}return true; };2.3 只传递界面上勾选项的id 遍历数据中所有被选择项的id得到数组。 遍历数据只保留一级数据的id和末级数据的id得到数组。 数组去重。 for (let i 0; i PermissionsType.value.length; i) {getCheckedIds(PermissionsType.value[i]); } selectIgnore(); filteredMenuIds.value selectedMenuIds.value.filter((item) isIgnore.value.indexOf(item) -1);//递归遍历被选中权限id function getCheckedIds(menu) {if (menu.isChecked true) {selectedMenuIds.value.push(menu.id);}if (menu.children menu.children.length 0) {for (let i 0; i menu.children.length; i) {getCheckedIds(menu.children[i]);}} } //有三级项时忽略掉二级项 有四级项时忽略三级项 const selectIgnore () {PermissionsType.value.forEach((item) {if (item.children) {item.children.forEach((child) {if (child.children) {isIgnore.value.push(child.id);child.children.forEach((childThird) {if (childThird.children) {isIgnore.value.push(childThird.id);}});}});}}); };
http://www.hkea.cn/news/14323649/

相关文章:

  • 做网站站长开通vip果业局网站建设
  • 胶州为企业做网站的公司苏州建行网站首页
  • 网站建设包括哪些方面?wordpress媒体库不显示图片
  • 蓝杉互动网站建设莱芜亓家网站
  • 网站建设费是广告费吗网站建设公司演讲稿
  • 网站报价表对比表怎么做番禺建设网站哪个好
  • 重庆建设工程查询网站如何做滴滴网站平台
  • 怎么做网站讯息厦门市住房建设网站
  • 邢台做网站推广的地方网页设计与制作学什么
  • 网站域名一年多少钱大型企业展厅设计公司
  • 易企秀网站开发语言中山百度网站建设
  • 陕西省建设网站麻涌仿做网站
  • 电子商务网站建设的问题关键词排名的工具
  • 福建 建设网站单页面营销型网站制作
  • 企业宣传报道模板范文贺州网站seo
  • 做网站注意什么医疗网站建设好么
  • 河池市网站建设wordpress 建站教程 下载
  • 小学生做甜品的网站火车头采集Wordpress字段
  • 网站开发湛江成都高新网站建设
  • 网站优化排名软件网168电商平台
  • 厦门好景科技做网站更换wordpress界面
  • 网站与微信区别建设网站公司那家好
  • 宜昌当阳网站开发网站模板修改
  • win2008 iis建网站免费企业邮箱申请
  • 河南省建设厅八大员网站火车票网站建设多少钱
  • 南昌商城网站设计wordpress设计网页游戏
  • 重庆建站公司费用长沙招聘服务网
  • 永春县住房和城乡建设网站python建设购物网站
  • 做动漫网站想做网站制作运营注册什么公司核实
  • 福州网站建?O手机微网站注册登录源码