Commit 87aeeacf34f06497edeab5795e6e3acaea7bf2fd
Merge branch 'dev-ft' into 'main'
fix:修复菜单管理下的角色管理,修复逐户下面的角色管理,按钮级别回显问题 See merge request huang/yun-teng-iot-front!209
Showing
2 changed files
with
33 additions
and
46 deletions
@@ -26,7 +26,7 @@ | @@ -26,7 +26,7 @@ | ||
26 | </BasicDrawer> | 26 | </BasicDrawer> |
27 | </template> | 27 | </template> |
28 | <script lang="ts"> | 28 | <script lang="ts"> |
29 | - import { defineComponent, ref, computed, unref } from 'vue'; | 29 | + import { defineComponent, ref, computed, unref, nextTick } from 'vue'; |
30 | import { BasicForm, useForm } from '/@/components/Form/index'; | 30 | import { BasicForm, useForm } from '/@/components/Form/index'; |
31 | import { formSchema } from './role.data'; | 31 | import { formSchema } from './role.data'; |
32 | import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; | 32 | import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; |
@@ -49,6 +49,9 @@ | @@ -49,6 +49,9 @@ | ||
49 | const allCheckedKeys = ref<string[]>([]); | 49 | const allCheckedKeys = ref<string[]>([]); |
50 | const roleId = ref<string>(''); | 50 | const roleId = ref<string>(''); |
51 | const treeRef = ref(); | 51 | const treeRef = ref(); |
52 | + const checked: any = ref([]); //需要选中的节点 | ||
53 | + const pidArr: any = ref([]); //获取父节点 | ||
54 | + | ||
52 | const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({ | 55 | const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({ |
53 | labelWidth: 100, | 56 | labelWidth: 100, |
54 | schemas: formSchema, | 57 | schemas: formSchema, |
@@ -66,16 +69,6 @@ | @@ -66,16 +69,6 @@ | ||
66 | } | 69 | } |
67 | }); | 70 | }); |
68 | } | 71 | } |
69 | - | ||
70 | - /** | ||
71 | - * 根据角色id获取所有的菜单ids----里面包含父级id---会造成回显数据时 | ||
72 | - * 存在父级id则默认勾选所有子级id | ||
73 | - */ | ||
74 | - function useChildrenIdsRemoveParentId(str, arr) { | ||
75 | - let index = arr.indexOf(str); | ||
76 | - arr.splice(index, 1); | ||
77 | - return arr; | ||
78 | - } | ||
79 | const originMenus = ref(); | 72 | const originMenus = ref(); |
80 | const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => { | 73 | const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => { |
81 | resetFields(); | 74 | resetFields(); |
@@ -92,19 +85,25 @@ | @@ -92,19 +85,25 @@ | ||
92 | } | 85 | } |
93 | // 更新 | 86 | // 更新 |
94 | if (unref(isUpdate)) { | 87 | if (unref(isUpdate)) { |
88 | + checked.value = []; | ||
95 | //通过角色id去获取角色对应的菜单的ids | 89 | //通过角色id去获取角色对应的菜单的ids |
96 | roleMenus.value = await getMenusIdsByRoleId(data.record.id); | 90 | roleMenus.value = await getMenusIdsByRoleId(data.record.id); |
97 | originMenus.value = [...roleMenus.value]; | 91 | originMenus.value = [...roleMenus.value]; |
98 | - | ||
99 | - for (let m of treeData.value) { | ||
100 | - console.log(m); | ||
101 | - for (let m1 of roleMenus.value) { | ||
102 | - // 利用continue特性优化一下性能 | ||
103 | - if (!(m.key === m1 && m.children.length)) continue; | ||
104 | - useChildrenIdsRemoveParentId(m1, roleMenus.value); | 92 | + for (let item of treeData.value) { |
93 | + pidArr.value.push(item.key); | ||
94 | + for (let item1 of item?.children) { | ||
95 | + pidArr.value.push(item1.key); | ||
105 | } | 96 | } |
106 | } | 97 | } |
107 | - treeRef.value.setCheckedKeys(roleMenus.value); | 98 | + for (let item of roleMenus.value) { |
99 | + let isP = pidArr.value.includes(item); | ||
100 | + if (!isP) { | ||
101 | + checked.value.push(item); | ||
102 | + } | ||
103 | + } | ||
104 | + nextTick(() => { | ||
105 | + treeRef.value.setCheckedKeys(checked.value); | ||
106 | + }); | ||
108 | roleId.value = data.record.id; | 107 | roleId.value = data.record.id; |
109 | setFieldsValue(data.record); | 108 | setFieldsValue(data.record); |
110 | } | 109 | } |
@@ -51,6 +51,9 @@ | @@ -51,6 +51,9 @@ | ||
51 | const allCheckedKeys = ref<string[]>([]); | 51 | const allCheckedKeys = ref<string[]>([]); |
52 | const roleId = ref(''); | 52 | const roleId = ref(''); |
53 | const treeRef = ref(); | 53 | const treeRef = ref(); |
54 | + const checked: any = ref([]); //需要选中的节点 | ||
55 | + const pidArr: any = ref([]); //获取父节点 | ||
56 | + | ||
54 | const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({ | 57 | const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({ |
55 | labelWidth: 90, | 58 | labelWidth: 90, |
56 | schemas: formSchema, | 59 | schemas: formSchema, |
@@ -68,15 +71,6 @@ | @@ -68,15 +71,6 @@ | ||
68 | }); | 71 | }); |
69 | } | 72 | } |
70 | 73 | ||
71 | - /** | ||
72 | - * 根据角色id获取所有的菜单ids----里面包含父级id---会造成回显数据时 | ||
73 | - * 存在父级id则默认勾选所有子级id | ||
74 | - */ | ||
75 | - function useChildrenIdsRemoveParentId(str, arr) { | ||
76 | - let index = arr.indexOf(str); | ||
77 | - arr.splice(index, 1); | ||
78 | - return arr; | ||
79 | - } | ||
80 | const originMenus = ref(); | 74 | const originMenus = ref(); |
81 | const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => { | 75 | const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => { |
82 | setDrawerProps({ confirmLoading: false }); | 76 | setDrawerProps({ confirmLoading: false }); |
@@ -94,29 +88,24 @@ | @@ -94,29 +88,24 @@ | ||
94 | } | 88 | } |
95 | // 更新 | 89 | // 更新 |
96 | if (unref(isUpdate)) { | 90 | if (unref(isUpdate)) { |
91 | + checked.value = []; | ||
97 | //通过角色id去获取角色对应的菜单的ids | 92 | //通过角色id去获取角色对应的菜单的ids |
98 | roleMenus.value = await getMenusIdsByRoleId(data.record.id); | 93 | roleMenus.value = await getMenusIdsByRoleId(data.record.id); |
99 | originMenus.value = [...roleMenus.value]; | 94 | originMenus.value = [...roleMenus.value]; |
100 | - console.log('Query role ids', roleMenus.value); | ||
101 | - console.log('TreeData ids', treeData.value); | ||
102 | - for (let m of treeData.value) { | ||
103 | - console.log('m', m); | ||
104 | - for (let m1 of roleMenus.value) { | ||
105 | - if (m?.key != m1 && m?.children.length == 0) { | ||
106 | - useChildrenIdsRemoveParentId(m1, roleMenus.value); | ||
107 | - } | 95 | + for (let item of treeData.value) { |
96 | + pidArr.value.push(item.key); | ||
97 | + for (let item1 of item?.children) { | ||
98 | + pidArr.value.push(item1.key); | ||
99 | + } | ||
100 | + } | ||
101 | + for (let item of roleMenus.value) { | ||
102 | + let isP = pidArr.value.includes(item); | ||
103 | + if (!isP) { | ||
104 | + checked.value.push(item); | ||
108 | } | 105 | } |
109 | } | 106 | } |
110 | - // for (let m of treeData.value) { | ||
111 | - // for (let m1 of roleMenus.value) { | ||
112 | - // if (m.key != m1 && m?.children.length == 0) { | ||
113 | - // useChildrenIdsRemoveParentId(m1, roleMenus.value); | ||
114 | - // } | ||
115 | - // } | ||
116 | - // } | ||
117 | nextTick(() => { | 107 | nextTick(() => { |
118 | - console.log('Finally data', roleMenus.value); | ||
119 | - treeRef.value.setCheckedKeys(roleMenus.value); | 108 | + treeRef.value.setCheckedKeys(checked.value); |
120 | }); | 109 | }); |
121 | roleId.value = data.record.id; | 110 | roleId.value = data.record.id; |
122 | setFieldsValue(data.record); | 111 | setFieldsValue(data.record); |
@@ -154,7 +143,6 @@ | @@ -154,7 +143,6 @@ | ||
154 | }; | 143 | }; |
155 | 144 | ||
156 | return { | 145 | return { |
157 | - useChildrenIdsRemoveParentId, | ||
158 | registerDrawer, | 146 | registerDrawer, |
159 | registerForm, | 147 | registerForm, |
160 | getTitle, | 148 | getTitle, |