mirror of
https://github.com/mayswind/ezbookkeeping.git
synced 2026-05-14 06:57:35 +08:00
230 lines
7.4 KiB
JavaScript
230 lines
7.4 KiB
JavaScript
import { createRouter, createWebHashHistory } from 'vue-router';
|
|
|
|
import { TemplateType } from '@/core/template.ts';
|
|
import { isUserLogined, isUserUnlocked } from '@/lib/userstate.ts';
|
|
|
|
import MainLayout from '@/views/desktop/MainLayout.vue';
|
|
import LoginPage from '@/views/desktop/LoginPage.vue';
|
|
import SignUpPage from '@/views/desktop/SignupPage.vue';
|
|
import VerifyEmailPage from '@/views/desktop/VerifyEmailPage.vue';
|
|
import ForgetPasswordPage from '@/views/desktop/ForgetPasswordPage.vue';
|
|
import ResetPasswordPage from '@/views/desktop/ResetPasswordPage.vue';
|
|
import UnlockPage from '@/views/desktop/UnlockPage.vue';
|
|
|
|
import HomePage from '@/views/desktop/HomePage.vue';
|
|
|
|
import TransactionListPage from '@/views/desktop/transactions/ListPage.vue';
|
|
|
|
import StatisticsTransactionPage from '@/views/desktop/statistics/TransactionPage.vue';
|
|
|
|
import AccountListPage from '@/views/desktop/accounts/ListPage.vue';
|
|
|
|
import TransactionCategoryListPage from '@/views/desktop/categories/ListPage.vue';
|
|
|
|
import TransactionTagListPage from '@/views/desktop/tags/ListPage.vue';
|
|
|
|
import TransactionTemplateListPage from '@/views/desktop/templates/ListPage.vue';
|
|
|
|
import UserSettingsPage from '@/views/desktop/user/UserSettingsPage.vue';
|
|
import AppSettingsPage from '@/views/desktop/app/AppSettingsPage.vue';
|
|
|
|
import ExchangeRatesPage from '@/views/desktop/ExchangeRatesPage.vue';
|
|
import AboutPage from '@/views/desktop/AboutPage.vue';
|
|
|
|
function checkLogin() {
|
|
if (!isUserLogined()) {
|
|
return {
|
|
path: '/login',
|
|
replace: true
|
|
};
|
|
}
|
|
|
|
if (!isUserUnlocked()) {
|
|
return {
|
|
path: '/unlock',
|
|
replace: true
|
|
};
|
|
}
|
|
}
|
|
|
|
function checkLocked() {
|
|
if (!isUserLogined()) {
|
|
return {
|
|
path: '/login',
|
|
replace: true
|
|
};
|
|
}
|
|
|
|
if (isUserUnlocked()) {
|
|
return {
|
|
path: '/',
|
|
replace: true
|
|
};
|
|
}
|
|
}
|
|
|
|
function checkNotLogin() {
|
|
if (isUserLogined() && !isUserUnlocked()) {
|
|
return {
|
|
path: '/unlock',
|
|
replace: true
|
|
};
|
|
}
|
|
|
|
if (isUserLogined()) {
|
|
return {
|
|
path: '/',
|
|
replace: true
|
|
};
|
|
}
|
|
}
|
|
|
|
const router = createRouter({
|
|
history: createWebHashHistory(),
|
|
routes: [
|
|
{
|
|
path: '/',
|
|
component: MainLayout,
|
|
beforeEnter: checkLogin,
|
|
children: [
|
|
{
|
|
path: '',
|
|
component: HomePage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/transaction/list',
|
|
component: TransactionListPage,
|
|
beforeEnter: checkLogin,
|
|
props: route => ({
|
|
initDateType: route.query.dateType,
|
|
initMaxTime: route.query.maxTime,
|
|
initMinTime: route.query.minTime,
|
|
initType: route.query.type,
|
|
initCategoryIds: route.query.categoryIds,
|
|
initAccountIds: route.query.accountIds,
|
|
initTagIds: route.query.tagIds,
|
|
initTagFilterType: route.query.tagFilterType,
|
|
initAmountFilter: route.query.amountFilter,
|
|
initKeyword: route.query.keyword
|
|
})
|
|
},
|
|
{
|
|
path: '/statistics/transaction',
|
|
component: StatisticsTransactionPage,
|
|
beforeEnter: checkLogin,
|
|
props: route => ({
|
|
initAnalysisType: route.query.analysisType,
|
|
initChartDataType: route.query.chartDataType,
|
|
initChartType: route.query.chartType,
|
|
initChartDateType: route.query.chartDateType,
|
|
initStartTime: route.query.startTime,
|
|
initEndTime: route.query.endTime,
|
|
initFilterAccountIds: route.query.filterAccountIds,
|
|
initFilterCategoryIds: route.query.filterCategoryIds,
|
|
initTagIds: route.query.tagIds,
|
|
initTagFilterType: route.query.tagFilterType,
|
|
initSortingType: route.query.sortingType,
|
|
initTrendDateAggregationType: route.query.trendDateAggregationType
|
|
})
|
|
},
|
|
{
|
|
path: '/account/list',
|
|
component: AccountListPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/category/list',
|
|
component: TransactionCategoryListPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/tag/list',
|
|
component: TransactionTagListPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/template/list',
|
|
component: TransactionTemplateListPage,
|
|
beforeEnter: checkLogin,
|
|
props: {
|
|
initType: TemplateType.Normal.type
|
|
}
|
|
},
|
|
{
|
|
path: '/schedule/list',
|
|
component: TransactionTemplateListPage,
|
|
beforeEnter: checkLogin,
|
|
props: {
|
|
initType: TemplateType.Schedule.type
|
|
}
|
|
},
|
|
{
|
|
path: '/exchange_rates',
|
|
component: ExchangeRatesPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/user/settings',
|
|
component: UserSettingsPage,
|
|
beforeEnter: checkLogin,
|
|
props: route => ({
|
|
initTab: route.query.tab
|
|
})
|
|
},
|
|
{
|
|
path: '/app/settings',
|
|
component: AppSettingsPage,
|
|
beforeEnter: checkLogin,
|
|
props: route => ({
|
|
initTab: route.query.tab
|
|
})
|
|
},
|
|
{
|
|
path: '/about',
|
|
component: AboutPage,
|
|
beforeEnter: checkLogin
|
|
}
|
|
]
|
|
},
|
|
{
|
|
path: '/login',
|
|
component: LoginPage,
|
|
beforeEnter: checkNotLogin
|
|
},
|
|
{
|
|
path: '/signup',
|
|
component: SignUpPage,
|
|
beforeEnter: checkNotLogin
|
|
},
|
|
{
|
|
path: '/verify_email',
|
|
component: VerifyEmailPage,
|
|
props: route => ({
|
|
email: route.query.email,
|
|
token: route.query.token,
|
|
hasValidEmailVerifyToken: route.query.emailSent === 'true'
|
|
})
|
|
},
|
|
{
|
|
path: '/forgetpassword',
|
|
component: ForgetPasswordPage,
|
|
beforeEnter: checkNotLogin
|
|
},
|
|
{
|
|
path: '/resetpassword',
|
|
component: ResetPasswordPage,
|
|
props: route => ({
|
|
token: route.query.token
|
|
})
|
|
},
|
|
{
|
|
path: '/unlock',
|
|
component: UnlockPage,
|
|
beforeEnter: checkLocked
|
|
}
|
|
],
|
|
})
|
|
|
|
export default router;
|