import { createRouter, createWebHistory, type RouteRecordRaw } from 'vue-router' // `/` redirects to `/customers`. Chat timeline params are path segments so the // URL is shareable + survives refresh: // /chat/:channel/:ownerId/:talkerId? (1:1 DM; talkerId optional → account-level) // /group/:channel/:ownerId/:roomId? (group chat — same component, room_id) const routes: RouteRecordRaw[] = [ { path: '/', redirect: { name: 'customers' }, }, { path: '/customers', name: 'customers', component: () => import('@/views/CustomerList.vue'), meta: { title: '客户列表' }, }, { path: '/staff', name: 'staff', component: () => import('@/views/StaffList.vue'), meta: { title: '员工列表' }, }, { // Standalone 员工详情 page mirroring 云客's // /cms/customer/userDetailNew?userId=... — replaces the all-fields drawer // degradation for the 员工姓名 click. Row-click in StaffList still opens // the drawer for a quick preview. path: '/staff-detail/:userId', name: 'staff-detail', component: () => import('@/views/StaffDetail.vue'), props: true, meta: { title: '员工详情' }, }, { path: '/accounts', redirect: { name: 'staff' }, }, { path: '/groups', name: 'groups', component: () => import('@/views/GroupList.vue'), meta: { title: '群列表' }, }, { path: '/calls', name: 'calls', component: () => import('@/views/CallList.vue'), meta: { title: '通话记录' }, }, { path: '/sms', name: 'sms', component: () => import('@/views/SmsList.vue'), meta: { title: '短信记录' }, }, { path: '/sync', name: 'sync', component: () => import('@/views/SyncStatus.vue'), meta: { title: '同步状态' }, }, { path: '/search', name: 'search', component: () => import('@/views/SearchView.vue'), meta: { title: '搜索' }, }, { path: '/chat/:channel/:ownerId/:talkerId?', name: 'chat', component: () => import('@/views/ChatTimeline.vue'), props: true, meta: { title: '聊天记录' }, }, { // Group chat timeline — same component, but with a `roomId` prop so it // issues a room_id query instead of a talker_id query. path: '/group/:channel/:ownerId/:roomId?', name: 'group-chat', component: () => import('@/views/ChatTimeline.vue'), props: true, meta: { title: '群聊记录' }, }, { // Anything else → back to the list. path: '/:pathMatch(.*)*', redirect: { name: 'customers' }, }, ] export const router = createRouter({ history: createWebHistory(), routes, scrollBehavior() { return { top: 0 } }, }) router.afterEach((to) => { const title = (to.meta.title as string | undefined) ?? '' document.title = title ? `${title} · 云客数据镜像` : '云客数据镜像' })