diff --git a/lms/nladmin-ui/src/views/system/user/index.vue b/lms/nladmin-ui/src/views/system/user/index.vue index c8c34bd4c..f7ad60f10 100644 --- a/lms/nladmin-ui/src/views/system/user/index.vue +++ b/lms/nladmin-ui/src/views/system/user/index.vue @@ -173,13 +173,15 @@ 更多 - 重置密码 - 部门权限 + 部门权限 数据权限 + 重置密码 {{ enabledTypeOptions.find(item => {return item.key !== scope.row.is_used}).display_name }}账号 - 分配角色 + + 分配角色 + @@ -190,31 +192,45 @@ -
-
- +
+ + + + + + + + + + + +
- +
+ 取 消 + 保存 +
@@ -261,6 +277,7 @@ export default { deptName: '', depts: [], deptDatas: [], level: 3, roles: [], roleDatas: [], // 多选时使用 defaultProps: { children: 'children', label: 'name' }, + deptProps: { children: 'children', label: 'name' }, permission: { add: ['admin', 'user:add'], edit: ['admin', 'user:edit'], @@ -281,7 +298,13 @@ export default { ] }, deptDrawer: false, - depChecked: [] + depChecked: [], + depCheckedId: '', + drawerDatas: [], // ? + drawerTitle: '', + drawerHint: '', + nodeKey: '', + flag: true } }, computed: { @@ -510,10 +533,38 @@ export default { }) }) }, - openDrawer(row) { + openDeptDrawer(row) { + crudDept.getDeptTree().then(res => { + this.drawerDatas = res.content + }) + this.drawerTitle = '分配部门权限' + this.drawerHint = '请选择部门' + this.nodeKey = 'dept_id' + this.flag = true this.deptDrawer = true - this.depChecked = row.depts + this.depChecked = [] + this.depCheckedId = '' console.log(row) + this.depChecked = row.depts + this.depCheckedId = row.user_id + }, + openRoleDrawer(row) { + getAll().then(res => { + this.drawerDatas = res + }) + this.deptDrawer = true + this.drawerTitle = '分配角色权限' + this.drawerHint = '请选择角色' + this.nodeKey = 'role_id' + this.flag = false + this.depChecked = [] + this.depCheckedId = '' + console.log(row) + this.depChecked = row.roles + this.depCheckedId = row.user_id + }, + clearCheck() { + this.$refs.deptUser.setCheckedKeys([]) }, handleClose(done) { this.$confirm('确认关闭?') @@ -521,6 +572,70 @@ export default { done() }) .catch(_ => {}) + }, + cancelForm() { // 关闭 + this.deptDrawer = false + }, + saveChecked() { + console.log(this.depCheckedId) + console.log(this.$refs.deptUser.getCheckedKeys()) + const user = { + user_id: this.depCheckedId, + } + if (this.flag) { + user.depts = this.$refs.deptUser.getCheckedKeys() + } else { + user.roles = this.$refs.deptUser.getCheckedKeys() + } + crudUser.edit(user).then(res => { + this.cancelForm() + this.crud.notify('保存成功', CRUD.NOTIFICATION_TYPE.SUCCESS) + this.crud.toQuery() + }) + }, + // 覆盖原有勾选功能,父与子关联,子与父不关联 + handCheck(data, node) { + this.hanleCheck(data, node, 'tree') + }, + hanleCheck(data, node, treeName) { + const _this = this + // 获取当前节点是否被选中 + const isChecked = _this.$refs[treeName].getNode(data).checked + // 如果当前节点被选中,则遍历下级子节点并选中,如果当前节点取消选中,则遍历下级节点并取消 + if (isChecked) { + // 判断该节点是否有下级节点,如果有那么遍历设置下级节点为选中 + data.children && data.children.length > 0 && setChildreChecked(data.children, true) + } else { + // 如果节点取消选中,则取消该节点下的子节点选中 + data.children && data.children.length > 0 && setChildreChecked(data.children, false) + } + function setChildreChecked(node, isChecked) { + node.forEach(item => { + item.children && item.children.length > 0 && setChildreChecked(item.children, isChecked) + // 修改勾选状态 + _this.$refs[treeName].setChecked(item.name, isChecked) + }) + } + }, + checkChange(data, checked, indeterminate) { + const _this = this + // console.log(data, checked, indeterminate); + // 选中全部子节点,父节点也默认选中,但是子节点再次取消勾选或者全部子节点取消勾选也不会影响父节点勾选状态 + const checkNode = _this.$refs.tree.getNode(data)// 获取当前节点 + // 勾选部分子节点,父节点变为半选状态 + if (checkNode.parent && checkNode.parent.childNodes.some(ele => ele.checked)) { + checkNode.parent.indeterminate = true + } + // 勾选全部子节点,父节点变为全选状态 + if (checkNode.parent && checkNode.parent.childNodes.every(ele => ele.checked)) { + checkNode.parent.checked = true + checkNode.parent.indeterminate = false + } + // 如果取消所有第二节点的勾选状态,则第一层父节点也取消勾选 + if (checkNode.level == 2 && checkNode.parent.childNodes.every(ele => !ele.checked)) { + checkNode.parent.checked = false + checkNode.parent.indeterminate = false + } } } }