Skip to content

Commit 3c6554c

Browse files
committed
租户和角色管理的菜单权限不能滚动
1 parent cea7b41 commit 3c6554c

File tree

2 files changed

+76
-45
lines changed

2 files changed

+76
-45
lines changed

src/views/system/role/index.vue

Lines changed: 55 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -99,37 +99,41 @@
9999
</el-select>
100100
</el-form-item>
101101
<!-- 分配角色的菜单权限对话框 -->
102-
<el-form-item
103-
label="权限范围"
104-
v-if="
105-
actionScopeType === 'menu' || dataScopeForm.dataScope === SystemDataScopeEnum.DEPT_CUSTOM
106-
"
107-
>
108-
<el-card shadow="never">
109-
<template #header>
110-
父子联动(选中父节点,自动选择子节点):
111-
<el-switch v-model="checkStrictly" inline-prompt active-text="" inactive-text="" />
112-
全选/全不选:
113-
<el-switch
114-
v-model="treeNodeAll"
115-
inline-prompt
116-
active-text=""
117-
inactive-text=""
118-
@change="handleCheckedTreeNodeAll()"
119-
/>
120-
</template>
121-
<el-tree
122-
ref="treeRef"
123-
node-key="id"
124-
show-checkbox
125-
:default-checked-keys="defaultCheckedKeys"
126-
:check-strictly="!checkStrictly"
127-
:props="defaultProps"
128-
:data="treeOptions"
129-
empty-text="加载中,请稍后"
130-
/>
131-
</el-card>
132-
</el-form-item>
102+
<el-row>
103+
<el-col :span="24">
104+
<el-form-item
105+
label="权限范围"
106+
v-if="
107+
actionScopeType === 'menu' ||
108+
dataScopeForm.dataScope === SystemDataScopeEnum.DEPT_CUSTOM
109+
"
110+
style="display: flex"
111+
>
112+
<el-card class="card" shadow="never">
113+
<template #header>
114+
<!--父子联动(选中父节点,自动选择子节点):-->
115+
<!--<el-switch v-model="checkStrictly" inline-prompt active-text="是" inactive-text="否" />-->
116+
<!--全选/全不选:-->
117+
<!--<el-switch-->
118+
<!-- v-model="treeNodeAll"-->
119+
<!-- inline-prompt-->
120+
<!-- active-text="是"-->
121+
<!-- inactive-text="否"-->
122+
<!-- @change="handleCheckedTreeNodeAll()"-->
123+
<!--/>-->
124+
</template>
125+
<el-tree
126+
ref="treeRef"
127+
node-key="id"
128+
show-checkbox
129+
:check-strictly="!checkStrictly"
130+
:props="defaultProps"
131+
:data="treeOptions"
132+
empty-text="加载中,请稍后"
133+
/>
134+
</el-card>
135+
</el-form-item> </el-col
136+
></el-row>
133137
</el-form>
134138
<!-- 操作按钮 -->
135139
<template #footer>
@@ -245,39 +249,40 @@ const dialogScopeVisible = ref(false)
245249
const dialogScopeTitle = ref('数据权限')
246250
const actionScopeType = ref('')
247251
const dataScopeDictDatas = ref()
248-
const defaultCheckedKeys = ref()
249252
// 选项
250-
const checkStrictly = ref(true)
251-
const treeNodeAll = ref(false)
253+
const checkStrictly = ref(false)
254+
// const treeNodeAll = ref(false)
252255
// 全选/全不选
253-
const handleCheckedTreeNodeAll = () => {
254-
treeRef.value!.setCheckedNodes(treeNodeAll.value ? treeOptions.value : [])
255-
}
256+
// const handleCheckedTreeNodeAll = () => {
257+
// treeRef.value!.setCheckedNodes(treeNodeAll.value ? treeOptions.value : [])
258+
// }
256259
// 权限操作
257260
const handleScope = async (type: string, row: RoleApi.RoleVO) => {
258261
dataScopeForm.id = row.id
259262
dataScopeForm.name = row.name
260263
dataScopeForm.code = row.code
264+
actionScopeType.value = type
265+
dialogScopeVisible.value = true
261266
if (type === 'menu') {
262267
const menuRes = await listSimpleMenusApi()
263268
treeOptions.value = handleTree(menuRes)
264269
const role = await PermissionApi.listRoleMenusApi(row.id)
265270
if (role) {
266-
// treeRef.value!.setCheckedKeys(role as unknown as Array<number>)
267-
defaultCheckedKeys.value = role
271+
role?.forEach((item: any) => {
272+
unref(treeRef)?.setChecked(item, true, false)
273+
})
268274
}
269275
} else if (type === 'data') {
270276
const deptRes = await listSimpleDeptApi()
271277
treeOptions.value = handleTree(deptRes)
272278
const role = await RoleApi.getRoleApi(row.id)
273279
dataScopeForm.dataScope = role.dataScope
274280
if (role.dataScopeDeptIds) {
275-
// treeRef.value!.setCheckedKeys(role.dataScopeDeptIds as unknown as Array<number>, false)
276-
defaultCheckedKeys.value = role.dataScopeDeptIds
281+
role.dataScopeDeptIds?.forEach((item: any) => {
282+
unref(treeRef)?.setChecked(item, true, false)
283+
})
277284
}
278285
}
279-
actionScopeType.value = type
280-
dialogScopeVisible.value = true
281286
}
282287
// 保存权限
283288
const submitScope = async () => {
@@ -312,3 +317,10 @@ onMounted(() => {
312317
init()
313318
})
314319
</script>
320+
<style scoped>
321+
.card {
322+
width: 100%;
323+
max-height: 400px;
324+
overflow-y: scroll;
325+
}
326+
</style>

src/views/system/tenantPackage/index.vue

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
ref="formRef"
2626
>
2727
<template #menuIds>
28-
<el-card class="w-120">
28+
<el-card>
2929
<template #header>
3030
<div class="card-header">
3131
全选/全不选:
@@ -91,6 +91,16 @@ const dialogTitle = ref('edit') // 弹出层标题
9191
const handleCheckedTreeNodeAll = () => {
9292
treeRef.value!.setCheckedNodes(treeNodeAll.value ? menuOptions.value : [])
9393
}
94+
95+
const validateCategory = (rule: any, value: any, callback: any) => {
96+
if (!treeRef.value!.getCheckedKeys().length) {
97+
callback(new Error('该项为必填项'))
98+
} else {
99+
callback()
100+
}
101+
}
102+
rules.menuIds = [{ required: true, validator: validateCategory, trigger: 'blur' }]
103+
94104
const getTree = async () => {
95105
const res = await listSimpleMenusApi()
96106
menuOptions.value = handleTree(res)
@@ -125,7 +135,9 @@ const handleUpdate = async (rowId: number) => {
125135
const res = await TenantPackageApi.getTenantPackageApi(rowId)
126136
unref(formRef)?.setValues(res)
127137
// 设置选中
128-
unref(treeRef)?.setCheckedKeys(res.menuIds)
138+
res.menuIds?.forEach((item: any) => {
139+
unref(treeRef)?.setChecked(item, true, false)
140+
})
129141
}
130142
131143
// 提交按钮
@@ -166,3 +178,10 @@ onMounted(async () => {
166178
})
167179
// getList()
168180
</script>
181+
<style scoped>
182+
.el-card {
183+
width: 100%;
184+
max-height: 400px;
185+
overflow-y: scroll;
186+
}
187+
</style>

0 commit comments

Comments
 (0)