Przeglądaj źródła

bug-91 去除选中的父节点,由 vxe-tree 组件渲染,最终数据使用 getCheckboxNodes 获取 (05683bbc8854f64dd68c9f0f37311843620457db)

cc12458 10 miesięcy temu
rodzic
commit
cc973d92ce
2 zmienionych plików z 6 dodań i 2 usunięć
  1. 2 1
      src/components/RoleEdit.vue
  2. 4 1
      src/request/api/system.api.ts

+ 2 - 1
src/components/RoleEdit.vue

@@ -62,7 +62,8 @@ const formProps = reactive<VxeFormProps<FormModel>>({
 const formEmits: VxeFormListeners<FormModel> = {
   submit({ data }) {
     const indeterminate = menusRef.value?.getCheckboxIndeterminateNodes()?.map(item => item.id) ?? [];
-    const values = new Set([...indeterminate, ...selected.value])
+    const checkbox = menusRef.value?.getCheckboxNodes()?.map(item => item.id) ?? selected.value;
+    const values = new Set([...indeterminate, ...checkbox])
     submit({ roleSort: 0, status: '0', ...data, menuIds: [...values] });
   },
   reset() { formProps.data = { ...props.data }; },

+ 4 - 1
src/request/api/system.api.ts

@@ -96,7 +96,10 @@ export function getRoleMenusMethod(data?: Partial<RoleModel>) {
       hitSource: 'edit-role',
       meta: { unconvert: true },
       transform(data) {
-        return { menus: data.menus, selected: Array.isArray(data.checkedKeys) ? data.checkedKeys : [] };
+        const flat = (menus?: RoleMenu[]): RoleMenu[] => Array.isArray(menus) ? menus.flatMap(item => [item, ...flat(item.children)]) : [];
+        const menus = flat(data.menus);
+        const selected = Array.isArray(data.checkedKeys) ? data.checkedKeys.filter(key => !menus.find(menu => menu.id === key)?.children) : [];
+        return { menus: data.menus, selected };
       },
     },
   ) : request.Get<{ selected: string[], menus: RoleMenu[] }, RoleMenu[]>(`/system/menu/treeselect`, {