elementui 樹形控件半選展示問題
-
- 問題
- 解決
問題
因為需要,父節點的半選節點也存進了資料庫,但在樹形元件擷取完資料進行頁面回顯時,把不該選中的子節點也全部勾上了
解決
找了網上的例子,基本都是用了setChecked方法,但試了還是不行
var that = this;
menuIds.map((i, n) => {
var node = that.$refs.menu.getNode(i);
if (node.isLeaf) {
//設定某個節點的勾選狀态
that.$refs.menu.setChecked(node, true);
}
})
最後,隻好用背景過濾資料的方式來解決
sql:
-- 擷取所有有子類的菜單
SELECT id FROM `sys_permission` where id in (SELECT DISTINCT pid FROM `sys_permission`)
Java代碼:
public List<SysRolePermission> filterPermission(Long roleId) {
//擷取所有有子類的菜單
List<Long> roleIds = permissionMapper.getParentPermission();
//擷取角色的所有權限包括半選的父節點
List<SysRolePermission> roleList = rolePermissionMapper.selectList(new QueryWrapper<SysRolePermission>().eq("role_id", roleId));
if (roleIds.size() > 0) {
Iterator<SysRolePermission> roles = roleList.iterator();
while (roles.hasNext()) {
SysRolePermission rolePermission = roles.next();
//把所有存在子節點的過濾掉
if (roleIds.contains(rolePermission.getPermissionId())) {
roles.remove();
}
}
}
return roleList;
}