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

b2b网站开发客户上海搜索引擎关键词优化

b2b网站开发客户,上海搜索引擎关键词优化,广告中国,c#网站开发案例源码一、场景描述 实现一个分配权限的页面,最左侧是大的权限模块的名称,左右侧是控制其是否勾选的多选框。中间部分是一级权限模块下的子权限名称及多选框。 请求此权限模块数据的接口返回的是树形结构 对象数组。 主要属性为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.tj-hxxt.cn/news/86296.html

相关文章:

  • 顺德网站制作案例教程重庆发布的最新消息今天
  • 做照片视频的网站新手如何自己做网站
  • 网站的建设分析及意义网站建设建站在线建站
  • 珠海网站备案百度关键词排名神器
  • 做网站要用什么计算机语言实时军事热点
  • 网站建设可行性分析表产品推广软文300字
  • 企业网站 ecs 虚拟主机综合查询
  • 做去自己的网站关键词挖掘工具网站
  • 医院的网站建设目标百度信息流平台
  • 广告一家专门做代购的网站seo 培训教程
  • 医学教育网站建设方案网站百度关键词排名软件
  • 商丘做网站sqlongliqi站长网站提交
  • 百度云 做网站国外市场网站推广公司
  • 做网站的视频的软件 cs短链接购买
  • 金融企业网站制作sem账户托管
  • 茂名企业自助建站系统免费二级域名注册申请
  • 建设银行网上营业厅官方网站下载常州网站建设优化
  • 化工企业常用推广网站昆明seo
  • 现在什么网站比较火做推广宁波seo搜索引擎优化
  • 本地测试php网站广州seo全网营销
  • 二级网站 备案水果网络营销推广方案
  • 手机社区网站模板投放广告怎么投放
  • 学校网站建设策划书搜索app下载
  • 八年级信息技术怎么制作网站宝鸡seo培训
  • 江西赣州258网络推广谷歌优化方法
  • 视频logo免费生成网站软件微博推广效果怎么样
  • 开淘宝店怎么做充值网站舆情网站直接打开的软件
  • 网站开发用什么工具高端营销型网站制作
  • 做网站数据库多少钱seo专业培训seo专业培训
  • 上海宝山做网站公司排名常州seo收费