index.ts 2.53 KB
import { createRouter, createWebHistory } from 'vue-router'
import { useAuthStore } from '@/stores/auth'

const router = createRouter({
  history: createWebHistory(),
  routes: [
    {
      path: '/login',
      name: 'Login',
      component: () => import('@/views/Login.vue'),
      meta: { public: true },
    },
    {
      path: '/',
      component: () => import('@/layouts/MainLayout.vue'),
      redirect: '/city',
      children: [
        {
          path: 'city',
          name: 'City',
          component: () => import('@/views/city/CityList.vue'),
          meta: { title: '城市管理' },
        },
        {
          path: 'substation',
          name: 'Substation',
          component: () => import('@/views/substation/SubstationList.vue'),
          meta: { title: '分站管理' },
        },
        {
          path: 'merchant/enter',
          name: 'MerchantEnter',
          component: () => import('@/views/merchant/EnterList.vue'),
          meta: { title: '入驻申请' },
        },
        {
          path: 'merchant/store',
          name: 'MerchantStore',
          component: () => import('@/views/merchant/StoreList.vue'),
          meta: { title: '店铺管理' },
        },
        {
          path: 'rider',
          name: 'Rider',
          component: () => import('@/views/rider/RiderList.vue'),
          meta: { title: '骑手管理' },
        },
        {
          path: 'order',
          name: 'Order',
          component: () => import('@/views/order/OrderList.vue'),
          meta: { title: '订单管理' },
        },
        {
          path: 'refund',
          name: 'Refund',
          component: () => import('@/views/order/RefundList.vue'),
          meta: { title: '退款管理' },
        },
        {
          path: 'delivery/order',
          name: 'DeliveryOrder',
          component: () => import('@/views/delivery/DeliveryOrderList.vue'),
          meta: { title: '配送订单' },
        },
        {
          path: 'rider/evaluate',
          name: 'RiderEvaluate',
          component: () => import('@/views/rider/RiderEvaluateList.vue'),
          meta: { title: '骑手评价' },
        },
        {
          path: 'open',
          name: 'OpenApp',
          component: () => import('@/views/open/OpenAppList.vue'),
          meta: { title: '开放平台' },
        },
      ],
    },
    { path: '/:pathMatch(.*)*', redirect: '/' },
  ],
})

router.beforeEach((to) => {
  const auth = useAuthStore()
  if (!to.meta.public && !auth.token) {
    return { path: '/login' }
  }
})

export default router