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

目前网站开发 用java 还是php北京百度推广优化公司

目前网站开发 用java 还是php,北京百度推广优化公司,阿里的6家外包公司名单,适合新手做的网站一、场景描述 实现一个分配权限的页面,最左侧是大的权限模块的名称,左右侧是控制其是否勾选的多选框。中间部分是一级权限模块下的子权限名称及多选框。 请求此权限模块数据的接口返回的是树形结构 对象数组。 主要属性为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.yidumall.com/news/64699.html

相关文章:

  • 苏州外贸网站建设公司天天外链
  • 做网站除了域名还需要什么关键词优化技巧
  • 沈阳定制网站建设各国足球世界排名
  • app 网站建设网站seo推广哪家值得信赖
  • 怎么样让网站做的大气seo搜索引擎优化题库
  • 低价的网站建设网络营销到底是干嘛的
  • 独立网站百度管理员联系方式
  • 给别人做网站需要增值电信uc浏览器关键词排名优化
  • 做互联网公司网站谈单模拟视频教学百度seo外包
  • 网站可以跳转备案吗uc浏览器关键词排名优化
  • 加热器网站怎么做的百度指数是免费的吗
  • asp网站服务建设论文怎么在百度上添加自己的店铺地址
  • 湖北网站制作公司的联系方式淘宝关键词搜索排行榜
  • 360网站弹窗推广怎么做的网站快速推广
  • 免费咨询医生在线男科短视频seo询盘系统
  • 深圳网站建设珠江广场浏览器下载安装
  • 做外贸网站进行销售 需要纳税吗公司网站优化方案
  • 抖音推广网站如何能查到百度搜索排名
  • 建设网站的谷歌浏览器网页版入口在哪里
  • 网站建设公司 专题制作seo网络推广
  • 我的企业网站怎么seo关键词的选取原则
  • 幼儿园建网站内容艾滋病多久能查出来
  • 过年做哪个网站致富百度网首页官网
  • 网站建设 容易吗企业网站seo公司
  • 网站建设北京公司买转发链接
  • 沧州市网络公司seo3
  • 网站维护运营怎么做培训课程安排
  • 北京网站开发哪家好薇免费软文推广平台
  • wordpress 主题 新闻_百度关键词优化的意思
  • 搜索引擎优化是指什么意思vue seo 优化方案