Commit 87aeeacf34f06497edeab5795e6e3acaea7bf2fd

Authored by xp.Huang
2 parents fadf49a8 077affe5

Merge branch 'dev-ft' into 'main'

fix:修复菜单管理下的角色管理,修复逐户下面的角色管理,按钮级别回显问题

See merge request huang/yun-teng-iot-front!209
@@ -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,