This commit is contained in:
2025-03-10 19:01:21 +08:00
parent 94644d0601
commit 31a2667f8b
28 changed files with 1370 additions and 57 deletions

View File

@@ -1,9 +1,47 @@
import {defineStore} from "pinia";
import {ref} from "vue";
import mockRoutes from './mock.js';
import router from "../../router/index.js";
import generateRouter from "../../router/generateRouter.js";
export const useSystemStore = defineStore("SystemStore", () => {
const isRoot = ref(false);
const RoutesTemp = ref([]);
const installRoute = async () => {
const routes = generateRouter(RoutesTemp.value);
router.removeRoute('home');
router.addRoute({
path: '/home',
name: 'home',
component: () => import('../../pages/layout/index.vue'),
redirect: `/home/${routes[0].path}`,
children: routes
});
await router.replace(router.currentRoute.value.fullPath);
}
const setRouter = async () => {
RoutesTemp.value.length = 0;
// 请求资源 mockRoutes
const routes = generateRouter(mockRoutes);
RoutesTemp.value.push(...mockRoutes);
await installRoute();
}
return {
isRoot
isRoot,
RoutesTemp,
setRouter,
installRoute,
}
}, {
persist: {
key: 'SystemStore',
storage: localStorage,
afterHydrate: (val) => {
val.store.installRoute && val.store.installRoute();
},
pick: ['RoutesTemp']
}
});

View File

@@ -0,0 +1,27 @@
const mockRoutes = [
{
path: 'task-center',
name: 'task-center',
title: '任务中心',
icon: '',
component: 'task-center',
children: [
{
path: 'reward-mission',
name: 'reward-mission',
title: '悬赏任务',
icon: '',
component: 'reward-mission',
},
{
path: 'appointed-task',
name: 'appointed-task',
title: '任务指派',
icon: '',
component: 'appointed-task',
}
]
},
];
export default mockRoutes;

View File

@@ -1,12 +1,25 @@
import {defineStore} from "pinia";
import {ref} from "vue";
import {useSystemStore} from "../SystemStore/index.js";
import router from "../../router/index.js";
export const useUserStore = defineStore("UserStore", () => {
const isLogin = ref(true);
const isLogin = ref(false);
const userInfo = ref(null);
const login = async (from) => {
// 请求
isLogin.value = true;
// 获取并安装路由
const { setRouter } = useSystemStore();
await setRouter();
// 跳转
await router.push('/home');
}
return {
isLogin,
userInfo
userInfo,
login,
}
}, {
persist: {