|
|
@@ -1,37 +1,36 @@
|
|
|
import {getRoleMenu} from '@apis';
|
|
|
-import {menuStore, userStore} from '@stores';
|
|
|
+import {TreeRoleMenuData} from '@models';
|
|
|
+import {menuStore} from '@stores';
|
|
|
import {useQuery} from '@tanstack/react-query';
|
|
|
import {sortMenu} from '@utils';
|
|
|
-import {useNavigate} from 'react-router-dom';
|
|
|
import {useStore} from 'zustand';
|
|
|
|
|
|
+const homeMenuData: TreeRoleMenuData = {
|
|
|
+ id: '-1',
|
|
|
+ name: '首页',
|
|
|
+ url: '/',
|
|
|
+ pId: '0',
|
|
|
+ page: 1,
|
|
|
+ limit: 0,
|
|
|
+ orderBy: '0',
|
|
|
+};
|
|
|
+
|
|
|
export function useMenu() {
|
|
|
const setMenus = useStore(menuStore, state => state.setMenu);
|
|
|
- const menus = useStore(
|
|
|
- userStore,
|
|
|
- state => state.menu,
|
|
|
- );
|
|
|
-
|
|
|
- const navigate = useNavigate();
|
|
|
|
|
|
const {data} = useQuery(
|
|
|
[getRoleMenu.name],
|
|
|
async function() {
|
|
|
- if (!menus)
|
|
|
- throw new Error('未配置菜单信息');
|
|
|
-
|
|
|
const data = await getRoleMenu();
|
|
|
|
|
|
if (data.msg === '200') {
|
|
|
- setMenus(data.data);
|
|
|
- const resultMenu = sortMenu(data.data);
|
|
|
- const firstUrl = resultMenu[0]?.children
|
|
|
- ? resultMenu[0].children[0].url
|
|
|
- : resultMenu[0].url;
|
|
|
-
|
|
|
- navigate(firstUrl);
|
|
|
+ const finalMenu = [
|
|
|
+ homeMenuData,
|
|
|
+ ...data.data,
|
|
|
+ ];
|
|
|
|
|
|
- return resultMenu;
|
|
|
+ setMenus(finalMenu);
|
|
|
+ return sortMenu(finalMenu);
|
|
|
}
|
|
|
|
|
|
throw new Error(data.errMsg);
|