Files
ToDoList/WebUI/src/router/index.ts
祀梦 2979197b1c release: Elysia ToDo v1.0.0
鍏ㄦ爤涓汉淇℃伅绠$悊搴旂敤锛岄泦鎴愬緟鍔炰换鍔°€佷範鎯墦鍗°€佺邯蹇垫棩鎻愰啋銆佽祫浜ф€昏鍔熻兘銆

Made-with: Cursor
2026-03-14 22:21:26 +08:00

79 lines
2.0 KiB
TypeScript

import { createRouter, createWebHistory } from 'vue-router'
import type { RouteRecordRaw } from 'vue-router'
import { useUserSettingsStore } from '@/stores/useUserSettingsStore'
const routes: RouteRecordRaw[] = [
{
path: '/',
redirect: '/tasks'
},
{
path: '/tasks',
name: 'tasks',
component: () => import('@/views/TaskListView.vue'),
meta: { title: '待办列表', view: 'list' }
},
{
path: '/calendar',
name: 'calendar',
component: () => import('@/views/CalendarPage.vue'),
meta: { title: '日历视图', view: 'calendar' }
},
{
path: '/quadrant',
name: 'quadrant',
component: () => import('@/views/QuadrantPage.vue'),
meta: { title: '四象限', view: 'quadrant' }
},
{
path: '/profile',
name: 'profile',
component: () => import('@/views/ProfileView.vue'),
meta: { title: '个人信息', view: 'profile' }
},
{
path: '/habits',
name: 'habits',
component: () => import('@/views/HabitPage.vue'),
meta: { title: '习惯打卡', view: 'habits' }
},
{
path: '/anniversaries',
name: 'anniversaries',
component: () => import('@/views/AnniversaryPage.vue'),
meta: { title: '纪念日', view: 'anniversaries' }
},
{
path: '/assets',
name: 'assets',
component: () => import('@/views/AssetPage.vue'),
meta: { title: '资产总览', view: 'assets' }
},
{
path: '/settings',
name: 'settings',
component: () => import('@/views/SettingsView.vue'),
meta: { title: '偏好设置', view: 'settings' }
}
]
const router = createRouter({
history: createWebHistory(),
routes,
scrollBehavior(_to, _from, savedPosition) {
if (savedPosition) {
return savedPosition
}
return { top: 0 }
}
})
router.beforeEach((to) => {
const page = (to.meta.title as string) || ''
const userStore = useUserSettingsStore()
const siteName = userStore.siteName || '爱莉希雅待办'
document.title = page ? `${page} - ${siteName}` : siteName
})
export default router