Files
sino-mci/admin-web/src/router/index.ts

64 lines
2.4 KiB
TypeScript

import { createRouter, createWebHistory } from 'vue-router'
import Layout from '../components/Layout.vue'
import Dashboard from '../views/Dashboard.vue'
import ChannelSubject from '../views/ChannelSubject.vue'
import ChannelApp from '../views/ChannelApp.vue'
import ChannelAccount from '../views/ChannelAccount.vue'
import Person from '../views/Person.vue'
import Conversation from '../views/Conversation.vue'
import Tag from '../views/Tag.vue'
import SendRecord from '../views/SendRecord.vue'
import Messages from '../views/Messages.vue'
import InboundFlow from '../views/InboundFlow.vue'
import TenantManagement from '../views/TenantManagement.vue'
import UserManagement from '../views/UserManagement.vue'
import Login from '../views/Login.vue'
import { useAuthStore } from '../stores/auth'
const routes = [
{
path: '/login',
component: Login,
meta: { public: true },
},
{
path: '/',
component: Layout,
redirect: '/dashboard',
children: [
{ path: 'dashboard', component: Dashboard, meta: { title: '概览' } },
{ path: 'channel/subject', component: ChannelSubject, meta: { title: '渠道主体' } },
{ path: 'channel/app', component: ChannelApp, meta: { title: '渠道应用' } },
{ path: 'channel/account', component: ChannelAccount, meta: { title: '渠道账号' } },
{ path: 'customer/person', component: Person, meta: { title: '联系人' } },
{ path: 'customer/group', component: Conversation, meta: { title: '群聊' } },
{ path: 'customer/tag', component: Tag, meta: { title: '标签体系' } },
{ path: 'message/send-record', component: SendRecord, meta: { title: '发送记录' } },
{ path: 'message/query', component: Messages, meta: { title: '消息查询' } },
{ path: 'flow/inbound', component: InboundFlow, meta: { title: '入站流程' } },
{ path: 'system/tenant', component: TenantManagement, meta: { title: '租户管理' } },
{ path: 'system/user', component: UserManagement, meta: { title: '用户管理' } },
],
},
]
const router = createRouter({
history: createWebHistory(),
routes,
})
router.beforeEach((to, from, next) => {
const authStore = useAuthStore()
const isPublic = to.meta?.public === true
if (!isPublic && !authStore.isLoggedIn) {
next('/login')
} else if (to.path === '/login' && authStore.isLoggedIn) {
next('/dashboard')
} else {
next()
}
})
export default router