/** * 路由配置 */ export default [ { path: '/', redirect: '/index' }, { path: '/index', name: 'Index', component: () => import('@/views/index/index.vue'), meta: { title: 'index.home', keepAlive: true } }, // 扫码入口(无需登录) { path: '/scan', name: 'Scan', component: () => import('@/views/scan/index.vue'), meta: { title: '扫码点餐' } }, { path: '/menu', name: 'Menu', component: () => import('@/views/menu/menu.vue'), meta: { title: 'menu.title', keepAlive: true } }, { path: '/menu/detail', name: 'MenuDetail', component: () => import('@/views/menu/detail.vue'), meta: { title: '商品详情' } }, { path: '/cart', name: 'Cart', component: () => import('@/views/cart/cart.vue'), meta: { title: 'cart.title' } }, { path: '/order', name: 'Order', component: () => import('@/views/order/order.vue'), meta: { title: 'order.title', requiresAuth: true } }, { path: '/order/detail', name: 'OrderDetail', component: () => import('@/views/order/detail.vue'), meta: { title: 'order.orderDetail', requiresAuth: true } }, { path: '/mine', name: 'Mine', component: () => import('@/views/mine/mine.vue'), meta: { title: 'mine.title', requiresAuth: true } }, { path: '/login', name: 'Login', component: () => import('@/views/login/login.vue'), meta: { title: 'login.title' } }, { path: '/address', name: 'Address', component: () => import('@/views/address/index.vue'), meta: { title: 'address.title', requiresAuth: true } }, { path: '/address/edit', name: 'AddressEdit', component: () => import('@/views/address/edit.vue'), meta: { title: 'address.editAddress', requiresAuth: true } }, { path: '/payment', name: 'Payment', component: () => import('@/views/payment/payment.vue'), meta: { title: 'payment.title', requiresAuth: true } }, // 老板端路由 (owner) { path: '/owner/dashboard', name: 'OwnerDashboard', component: () => import('@/views/owner/dashboard.vue'), meta: { title: '公司总览', requiresAuth: true, requiresRole: 'owner' } }, { path: '/owner/shops', name: 'OwnerShops', component: () => import('@/views/owner/shops.vue'), meta: { title: '店铺管理', requiresAuth: true, requiresRole: 'owner' } }, { path: '/owner/reports', name: 'OwnerReports', component: () => import('@/views/owner/reports.vue'), meta: { title: '综合报表', requiresAuth: true, requiresRole: 'owner' } }, // 店铺管理路由 (owner/manager) { path: '/shop/dashboard', name: 'ShopDashboard', component: () => import('@/views/merchant/dashboard.vue'), meta: { title: '店铺总览', requiresAuth: true, requiresRole: ['owner', 'manager'] } }, { path: '/shop/:id/dashboard', name: 'ShopDetailDashboard', component: () => import('@/views/merchant/dashboard.vue'), meta: { title: '店铺详情', requiresAuth: true, requiresRole: ['owner', 'manager'] } }, // 商家路由(兼容) { path: '/merchant/dashboard', name: 'MerchantDashboard', component: () => import('@/views/merchant/dashboard.vue'), meta: { title: '商家仪表盘', requiresAuth: true, requiresRole: ['owner', 'manager'] } }, { path: '/merchant/orders', name: 'MerchantOrders', component: () => import('@/views/merchant/orders.vue'), meta: { title: '订单管理', requiresAuth: true, requiresRole: ['owner', 'manager'] } }, { path: '/merchant/buffet-plans', name: 'MerchantBuffetPlans', component: () => import('@/views/merchant/buffet-plans.vue'), meta: { title: '放题方案管理', requiresAuth: true, requiresRole: ['owner', 'manager'] } }, // POS/员工端路由 { path: '/pos/welcome', name: 'PosWelcome', component: () => import('@/views/pos/welcome.vue'), meta: { title: 'POS系统', requiresAuth: true, requiresRole: ['staff', 'manager', 'owner', 'admin'] } }, { path: '/pos/tables', name: 'PosTables', component: () => import('@/views/pos/tables.vue'), meta: { title: '桌位管理', requiresAuth: true, requiresRole: ['staff', 'manager', 'owner', 'admin'] } }, { path: '/pos/orders', name: 'PosOrders', component: () => import('@/views/pos/orders.vue'), meta: { title: '订单管理', requiresAuth: true, requiresRole: ['staff', 'manager', 'owner', 'admin'] } }, { path: '/pos/orders/:id', name: 'PosOrderDetail', component: () => import('@/views/pos/order-detail.vue'), meta: { title: '订单详情', requiresAuth: true, requiresRole: ['staff', 'manager', 'owner', 'admin'] } }, // 放题路由 { path: '/buffet/select', name: 'BuffetSelect', component: () => import('@/views/buffet/select.vue'), meta: { title: '选择放题方案' } }, { path: '/buffet/menu', name: 'BuffetMenu', component: () => import('@/views/buffet/menu.vue'), meta: { title: '放题点餐' } }, // 管理员路由 { path: '/admin/dashboard', name: 'AdminDashboard', component: () => import('@/views/admin/dashboard.vue'), meta: { title: '管理后台', requiresAuth: true, requiresRole: 'admin' } }, { path: '/admin/users', name: 'AdminUsers', component: () => import('@/views/admin/users.vue'), meta: { title: '用户管理', requiresAuth: true, requiresRole: 'admin' } }, { path: '/admin/merchants', name: 'AdminMerchants', component: () => import('@/views/admin/merchants.vue'), meta: { title: '商家管理', requiresAuth: true, requiresRole: 'admin' } } ]