













import { createRouter, createWebHashHistory } from 'vue-router'
import store from '@/store'
import { h } from 'vue'
const Layout = () => import('@/views/Layout')
const Home = () => import('@/views/home')
const TopCategory = () => import('@/views/category/index')
const SubCategory = () => import('@/views/category/sub')
const Goods = () => import('@/views/goods/index')
const Cart = () => import('@/views/cart/index')
const Login = () => import('@/views/login/index')
const LoginCallback = () => import('@/views/login/callback')
const Checkout = () => import('@/views/member/pay/checkout')
const Pay = () => import('@/views/member/pay/index')
const PayResult = () => import('@/views/member/pay/result')
const MemberLayout = () => import('@/views/member/Layout')
const MemberHome = () => import('@/views/member/home')
const MemberOrder = () => import('@/views/member/order')
const MemberOrderDetail = () => import('@/views/member/order/detail')
const routes = [
{
path: '/',
component: Layout,
children: [
{ path: '/', component: Home },
{ path: '/category/:id', component: TopCategory },
{ path: '/category/sub/:id', component: SubCategory },
{ path: '/product/:id', component: Goods },
{ path: '/cart', component: Cart },
{ path: '/member/checkout', component: Checkout },
{ path: '/member/pay', component: Pay },
{ path: '/pay/callback', component: PayResult },
{
path: '/member',
component: MemberLayout,
children: [
{ path: '/member', component: MemberHome },
{
path: '/member/order',
component: { render: () => h(<RouterView />) },
children: [
{ path: '', component: MemberOrder },
{ path: ':id', component: MemberOrderDetail }
]
}
]
}
]
},
{ path: '/login', component: Login },
{ path: '/login/callback', component: LoginCallback }
]
const router = createRouter({
history: createWebHashHistory(),
routes,
scrollBehavior () {
return { left: 0, top: 0 }
}
})
router.beforeEach((to, from, next) => {
const { profile } = store.state.user
if (!profile.token && to.path.startsWith('/member')) {
return next('/login?redirectUrl=' + encodeURIComponent(to.fullPath))
}
next()
})
export default router





