import Vue from 'vue'
import VueRouter from 'vue-router'
// 加载条
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import VueAMap from 'vue-amap';

Vue.use(VueRouter);
// Vue.use(VueAMap);

// VueAMap.initAMapApiLoader({
//     key: 'your amap key',
//     plugin: ['AMap.Autocomplete', 'AMap.PlaceSearch', 'AMap.Scale', 'AMap.OverView', 'AMap.ToolBar', 'AMap.MapType', 'AMap.PolyEditor', 'AMap.CircleEditor'],
//     // 默认高德 sdk 版本为 1.4.4
//     v: '1.4.4'
// });

const routes = [
    {
        path: '/',
        component: () => import( '../views/Index.vue'),
        children: [
            {
                path: '/',
                name: 'Main',
                component: () => import('@/views/Main.vue'),
                meta: {
                    title: "首页",
                    clmid: "1",
                }
            },{
                path: '/member',
                name: 'Member',
                component: () => import('@/views/Member.vue'),
                meta: {
                    title: "会员管理",
                    clmid: "2",
                }
            },{
                path: '/lesson',
                name: 'Lesson',
                component: () => import('@/views/Lesson.vue'),
                meta: {
                    title: "课程模板",
                    clmid: "3",
                }
            },{
                path: '/lessonTable',
                name: 'lessonTable',
                component: () => import('@/views/LessonTable.vue'),
                meta: {
                    title: "课程表模板",
                    clmid: "4",
                }
            },{
                path: '/editLessonTable',
                name: 'EditLessonTable',
                component: () => import('@/views/EditLessonTable.vue'),
                meta: {
                    title: "编辑课程表模板",
                    clmid: "4",
                }
            },{
                path: '/editLessonManage',
                name: 'EditLessonManage',
                component: () => import('@/views/EditLessonManage.vue'),
                meta: {
                    title: "编辑课程表",
                    clmid: "5",
                }
            },{
                path: '/adminManage',
                name: 'AdminManage',
                component: () => import('@/views/AdminManage.vue'),
                meta: {
                    title: "管理员管理",
                    clmid: "12",
                }
            },{
                path: '/log',
                name: 'Log',
                component: () => import('@/views/Log.vue'),
                meta: {
                    title: "操作日志",
                    clmid: "14",
                }
            },{
                path: '/shopManage',
                name: 'ShopManage',
                component: () => import('@/views/ShopManage.vue'),
                meta: {
                    title: "店面管理",
                    clmid: "13",
                }
            },{
                path: '/adminSetting',
                name: 'AdminSetting',
                component: () => import('@/views/AdminSetting.vue'),
                meta: {
                    title: "系统设置",
                    clmid: "15",
                }
            },{
                path: '/lessonManage',
                name: 'lessonManage',
                component: () => import('@/views/lessonManage.vue'),
                meta: {
                    title: "课程表管理",
                    clmid: "5",
                }
            },{
                path: '/coach',
                name: 'coach',
                component: () => import('@/views/coach.vue'),
                meta: {
                    title: "教练管理",
                    clmid: "6",
                }
            },{
                path: '/appoint',
                name: 'appoint',
                component: () => import('@/views/appoint.vue'),
                meta: {
                    title: "预约管理",
                    clmid: "7",
                }
            },{
                path: '/record',
                name: 'record',
                component: () => import('@/views/record.vue'),
                meta: {
                    title: "预约记录",
                    clmid: "8",
                }
            },{
                path: '/cost',
                name: 'cost',
                component: () => import('@/views/cost.vue'),
                meta: {
                    title: "消费记录",
                    clmid: "9",
                }
            },{
                path: '/setting',
                name: 'setting',
                component: () => import('@/views/setting.vue'),
                meta: {
                    title: "系统设置",
                    clmid: "11",
                }
            },{
                path: '/finish',
                name: 'finish',
                component: () => import('@/views/finish.vue'),
                meta: {
                    title: "下课管理",
                    clmid: "10",
                }
            },{
                path: '/finishDetail',
                name: 'finishDetail',
                component: () => import('@/views/finishDetail.vue'),
                meta: {
                    title: "下课管理",
                    clmid: "10",
                }
            },
        ]
    }, {
        path: '/login',
        name: 'Login',
        component: () => import( '../views/Login.vue')
    },, {
        path: '*',
        name: '404',
        component: () => import( '../views/404.vue')
    },
]

const originalPush = VueRouter.prototype.push;
VueRouter.prototype.push = function push(location) {
    return originalPush.call(this, location).catch(err => err)
};

const router = new VueRouter({
    mode: 'history',
    base: process.env.BASE_URL,
    routes
});

// 路由守卫
router.beforeEach((to,from,next)=>{
    NProgress.start()
    const isLogin = localStorage.token? true : false;
    if(to.path == '/login' || to.path == '/register'){//'login'和'register'相当于是路由白名单
        next();
    }else{
        //如果token存在，就正常跳转，如果不存在，则说明未登陆，则跳转到'login'
        isLogin? next() : next("/login");
    }
});

router.afterEach(() => {
    NProgress.done()
})

export default router
