import Vue from 'vue' import store from "@/store" import common from '../util/common' import Router from 'vue-router' import sa from 'sa-sdk-javascript'; import { getUserDetailApi } from "../service/api"; Vue.use(Router); let browser = { versions: function () { let u = navigator.userAgent, app = navigator.appVersion; return { //移动终端浏览器版本信息 trident: u.indexOf('Trident') > -1, //IE内核 presto: u.indexOf('Presto') > -1, //opera内核 webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核 gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') === -1, //火狐内核 mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端 ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端 android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或uc浏览器 iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器 iPad: u.indexOf('iPad') > -1, //是否iPad webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部 }; }(), language: (navigator.browserLanguage || navigator.language).toLowerCase() }; let ua = window.navigator.userAgent.toLowerCase(); const router = new Router({ // mode: 'history', routes: [ { path: '/', name: 'index', component: () => import('@/components/index'),// meta: { deep: 0, title: '唱唱启蒙' } }, { path: '/extensionV1Shop', name: 'extensionV1Shop', component: () => import('@/components/activity/extensionV1Shop'),// meta: { deep: 0, noNew: true, } }, { path: '/extensionV1', name: 'extensionV1', component: () => import('@/components/activity/extensionV1'),// meta: { deep: 0, noNew: true, } }, { path: '/guideActivity', name: 'guideActivity', component: () => import('@/components/buy/guideActivity'),// meta: { deep: 0, noNew: true, } }, { path: '/guide', name: 'guide', component: () => import('@/components/buy/guide'),// meta: { deep: 0, noNew: true, } }, { path: '/spcShop', name: 'spcShop', component: () => import('@/components/buy/spcShop'),// meta: { deep: 0, noNew: true, } }, { path: '/orderTrans', name: 'orderTrans', component: () => import('@/components/orderTrans/index'), meta: { deep: 0, noNew: true, } }, { path: '/addressEdit', name: 'addressEdit', component: () => import('@/components/mine/addressEdit'), meta: { deep: 0, noNew: true, } }, { path: '/addressModify', name: 'addressModify', component: () => import('@/components/mine/addressModify'), meta: { deep: 0, noNew: true, } }, { path: '/subAccept', name: 'subAccept', component: () => import('@/components/subAccount/accept'), meta: { deep: 0, noNew: true, } }, { path: '/subAccount', name: 'subAccount', component: () => import('@/components/subAccount/index'), meta: { deep: 0, noNew: true, } }, { path: '/address', name: 'Address', component: () => import('@/components/mine/address'), meta: { deep: 0, noNew: true, } }, { path: '/activityAddr', name: 'activityAddr', component: () => import('@/components/mine/activityAddr'), meta: { deep: 0, noNew: true, } }, { path: '/liuyi', name: 'liuyi', component: () => import('@/components/activity/liuyi'), meta: { deep: 0, noNew: true, } }, { path: '/starRank', name: 'starRank', component: () => import('@/components/star/starRank'), meta: { deep: 0, noNew: true, } }, { path: '/starRankV2', name: 'starRankV2', component: () => import('@/components/star/starRankV2'), meta: { deep: 0, noNew: true, } }, { path: '/starDetail', name: 'starDetail', component: () => import('@/components/star/detail'), meta: { deep: 0, noNew: true, } }, { path: '/starResult', name: 'starResult', component: () => import('@/components/star/result'), meta: { deep: 0, noNew: true, } }, { path: '/starResultV2', name: 'starResultV2', component: () => import('@/components/star/resultV2'), meta: { deep: 0, noNew: true, } }, { path: '/zhibo', name: 'zhibo', component: () => import('@/components/indexPage/zb'), meta: { deep: 0, noNew: true, } }, { path: '/med', name: 'med', component: () => import('@/components/indexPage/med'), meta: { deep: 0, noNew: true, } }, { path: '/preview', name: 'preview', component: () => import('@/components/indexPage/preview'), meta: { deep: 0, noNew: true, } }, { path: '/bbda', name: 'bbda', component: () => import('@/components/indexPage/bbda'), meta: { deep: 0, noNew: true, } }, { path: '/exChange', name: 'exChange', component: () => import('@/components/exChange'), meta: { deep: 0, noNew: true, } }, { path: '/newLesson', name: 'newLesson', component: () => import('@/components/newLesson'), meta: { deep: 0 } }, { path: '/star', name: 'star', component: () => import('@/components/star'), meta: { deep: 0, noNew: true, } }, { path: '/shareGoods', name: 'shareGoods', component: () => import('@/components/newLesson/shareGoods'), meta: { deep: 0, noNew: true } }, { path: '/myGoodsList', name: 'myGoodsList', component: () => import('@/components/myGoodsList'), meta: { deep: 1 } }, { path: '/mine', name: 'mine', component: () => import('@/components/mine/index'), meta: { deep: 1 } }, { path: '/order', name: 'order', component: () => import('@/components/order'), meta: { deep: 2 } }, { path: '/share', name: 'share', component: () => import('@/components/share'), meta: { deep: 2 } }, { path: '/author', name: 'author', component: () => import('@/components/author'), meta: { deep: 100, noNew: true } }, { path: '/buyDetail', name: 'buyDetail', component: () => import('@/components/buy/index'), meta: { skip_login: false, noNew: true, deep: 10 } }, { path: '/buy', name: 'buy', component: () => import('@/components/buy/buy'), meta: { noNew: true, deep: 11 } }, { path: '/success', name: 'success', component: () => import('@/components/buy/success'), meta: { noNew: true, deep: 12 } }, { path: '/buySuccess', name: 'buySuccess', component: () => import('@/components/buy/buySuccess'), meta: { noNew: true, deep: 12 } }, { path: '/map', name: 'map', component: () => import('@/components/map/index'), meta: { deep: 3 } }, { path: '/saleSuccess', name: 'saleSuccess', component: () => import('@/components/buy/saleSuccess'), meta: { deep: 4 } }, { path: '/bindMobile', name: 'bindMobile', component: () => import('@/components/bindMobile'), meta: { deep: 0 } }, { path: '/activity', name: 'activity', component: () => import('@/components/buy/activity'), meta: { skip_login: true, noNew: true, } }, { path: '/inviteFriends', name: 'inviteFriends', component: () => import('@/components/buy/inviteFriends'), meta: { deep: 0, noNew: true, } }, { path: '/inviteRecordList', name: 'inviteRecordList', component: () => import('@/components/buy/inviteRecordList'), meta: { deep: 0, noNew: true, } }, { path: '/activityInvite', name: 'activityInvite', component: () => import('@/components/buy/activityInvite'), meta: { skip_login: true, noNew: true, } }, { path: '/inviteList', name: 'inviteList', component: () => import('@/components/buy/inviteList'), meta: { skip_login: true, noNew: true, } }, { path: '/collection', name: 'collection', component: () => import('@/components/collection'), meta: { skip_login: true } }, { path: '/noWechat', name: 'noWechat', component: () => import('@/components/noWechat'), meta: { skip_login: false } }, { path: '/mpShop', name: 'mpShop', component: () => import('@/components/buy/mpShop'), meta: { skip_login: false, noNew: true, } }, { path: '/shareConfig', name: 'shareConfig', component: () => import('@/components/shareConfig'), meta: { noNew: true, } }, { path: '/inspectorActivit', name: 'inspectorActivit', component: () => import('@/components/inspector/inspectorActivit'), meta: { noNew: true, } }, { path: '/inspectorList', name: 'inspectorList', component: () => import('@/components/inspector/inspectorList'), meta: { noNew: true, } }, { path: '/secMap', name: 'secMap', component: () => import('@/components/map/secMap'), meta: { noNew: true, } }, { path: '/hasaccount', name: 'hasaccount', component: () => import('@/components/map/hasaccount'), meta: { noNew: true, } }, { path: '/oldShareGoods', name: 'oldShareGoods', component: e => require(['@/components/newLesson/oldShareGoods'], e), meta: { noNew: true, } }, { path: '/passShop', name: 'passShop', component: e => require(['@/components/buy/passShop'], e), meta: { noNew: true, } }, { path: '/ybIndex', name: 'ybIndex', component: e => require(['@/components/youbang/index'], e), meta: { noNew: true, } }, { path: '/ybOrderRender', name: 'ybOrderRender', component: e => require(['@/components/youbang/ybOrderRender'], e), meta: { noNew: true, } }, { path: '/ybPaySuccess', name: 'ybPaySuccess', component: e => require(['@/components/youbang/ybPaySuccess'], e), meta: { noNew: true, } }, { path: '/ybNav', name: 'ybNav', component: e => require(['@/components/youbang/nav'], e), meta: { noNew: true, } }, { path: '/navShare', name: 'navShare', component: e => require(['@/components/newLesson/navShare'], e), meta: { noNew: true, } }, { path: '/logistics', name: 'logistics', component: e => require(['@/components/logistics'], e), meta: { noNew: true, } }, { path: '*', component: () => import('@/components/error'), }, ] }); router.beforeEach((to, from, next) => { // console.log(process.env) // 神策路由埋点 Vue.nextTick(() => { sa.quick("autoTrackSinglePage"); }); // 判断是否是微信环境 排除本地 if (ua.match(/MicroMessenger/i) == 'micromessenger' || ua.match(/_SQ_/i) == '_sq_') { if (to.name == 'noWechat') { // 在微信里打开非微信提示页 if (to.query.url) { next(decodeURIComponent(to.query.url)) } else { next({ name: 'index' }); } } } else { if (to.name !== 'noWechat' && process.env.NODE_ENV === 'production') { next({ name: 'noWechat', query: { url: encodeURIComponent(to.fullPath) } }); } } // 移动端判断 store.dispatch('isMobile', browser.versions.mobile); // 默认title if (process.env.NODE_ENV === 'production') { document.title = '唱唱启蒙英语'; } else { document.title = '唱唱测试'; } let goOn = function () { if (localStorage.getItem('retUrl') && localStorage.getItem('retUrl') !== null && localStorage.getItem('retUrl') !== '') { console.log(localStorage.getItem('retUrl')) let retUrl = localStorage.getItem('retUrl').toString(); localStorage.removeItem('retUrl'); next(retUrl); } else { next() } }; if (window.location.href.indexOf('gdt_vid') > -1) { localStorage.setItem('gdt_vid', common.getParamhref().gdt_vid); console.log(query.gdt_vid) } // extensionV1Shop // extensionV1 if (to.name === 'author' || to.name === 'bindMobile' || to.name === 'noWechat' || to.name === 'inspectorActivit' || to.name === 'passShop'|| to.name === 'ybIndex' ) { // 无需登录的页面 console.log(488) next() } else if (window.location.href.indexOf('token') > -1 && to.name === 'index') { let token = common.getUrlParam().token || to.query.token; console.log(common.getUrlParam()) console.log(to.name) // debugger store.dispatch('setToken', token); getUserDetailApi().then(res => { // debugger localStorage.setItem('userDesc', JSON.stringify(res)); sa.login(res.user_id); goOn() }).catch((res) => { console.log(res) // debugger if (localStorage.getItem('userDesc')) { goOn() } }); } else if (localStorage.getItem('cc_token')) { // 已登陆 store.dispatch('setToken', localStorage.getItem('cc_token')); if (localStorage.getItem('userDesc')) { sa.login(JSON.parse(localStorage.getItem('userDesc')).user_id); goOn() } else { getUserDetailApi().then(res => { localStorage.setItem('userDesc', JSON.stringify(res)); sa.login(res.user_id); goOn() }).catch(() => { if (localStorage.getItem('userDesc')) { goOn() } }); } // debugger } else { // 未登陆,保存下路径 let query = { retUrl: to.fullPath }; localStorage.setItem('retUrl', to.fullPath); // console.log(process.env.AUTHOR_UEL) // console.log(window.location.href) if (to.meta.noNew) { query.is_new_user_url = 1; window.location.href = `${process.env.AUTHOR_UEL}` // debugger } else { window.location.href = `${process.env.AUTHOR_UEL}&is_new_user_url=1` } // debugger } // if(to.meta.skip_login){ // next(); // } }); export default router;