\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n\n\n\n\n// WEBPACK FOOTER //\n// src/pages/layout.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('el-container',[_c('div',{staticClass:\"header\"},[_c('img',{staticStyle:{\"width\":\"8%\"},attrs:{\"src\":require(\"../assets/logodi2.png\")}}),_vm._v(\" \"),_c('el-menu',{attrs:{\"background-color\":\"#fff\",\"text-color\":\"#000\",\"active-text-color\":\"#f00\",\"default-active\":_vm.activeIndex,\"mode\":\"horizontal\",\"router\":\"\"}},[_c('header-nav',{attrs:{\"navMenus\":_vm.menuData}})],1)],1)]),_vm._v(\" \"),_c('router-view',{key:_vm.key}),_vm._v(\" \"),_c('footer-nav')],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vue-loader@13.7.3@vue-loader/lib/template-compiler?{\"id\":\"data-v-09fe6908\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/_vue-loader@13.7.3@vue-loader/lib/selector.js?type=template&index=0!./src/pages/layout.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/_extract-text-webpack-plugin@3.0.2@extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true,\\\"publicPath\\\":\\\"../../\\\"}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-09fe6908\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=styles&index=0!./layout.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=script&index=0!./layout.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=script&index=0!./layout.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-09fe6908\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=template&index=0!./layout.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/layout.vue\n// module id = null\n// module chunks = ","import Vue from 'vue'\r\nimport Router from 'vue-router'\r\nimport HelloWorld from '@/components/HelloWorld'\r\nimport Layout from '../pages/layout'\r\nVue.use(Router)\r\n\r\nexport default new Router({\r\n mode: 'history',\r\n base: process.env.BASE_URL,\r\n routes: [{\r\n path: '/',\r\n component: Layout,\r\n redirect: '/main',\r\n hidden: false,\r\n },\r\n {\r\n path: '/mobile',\r\n name: 'mobile',\r\n hidden: false,\r\n component: () => import('../pages/mobile.vue'),\r\n meta: {\r\n keepAlive: false,\r\n title: \"移动端\"\r\n }\r\n },\r\n {\r\n id: 1,\r\n //pid: 0,\r\n path: '/main',\r\n name: 'main',\r\n hidden: true,\r\n component: Layout,\r\n redirect: '/Home',\r\n //component: Layout,\r\n // redirect: '/charts/DiscountFigure',\r\n //redirect: () => import('../pages/Home.vue'),\r\n meta: {\r\n keepAlive: true,\r\n title: \"首页\",\r\n metaInfo: {\r\n title: \"首页\",\r\n keywords: \"向日葵钢琴城,钢琴教学,钢琴,向日葵,阳光朵拉陪练\",\r\n }\r\n }\r\n },\r\n {\r\n id: 2,\r\n //pid: 0,\r\n path: '/Course',\r\n name: 'Course',\r\n hidden: true,\r\n component: Layout,\r\n meta: {\r\n keepAlive: true,\r\n title: \"课程中心\",\n metaInfo: {\n title: \"课程中心\",\n keywords: \"向日葵钢琴城,钢琴教学,钢琴,向日葵,阳光朵拉陪练\",\n }\r\n },\r\n children: [{\r\n id: 21,\r\n pid: 2,\r\n path: '/Online',\r\n name: 'Online',\r\n hidden: true,\r\n component: () => import('../pages/GoodsList.vue'),\r\n meta: {\r\n keepAlive: true,\r\n title: \"网络课程\",\n metaInfo: {\n title: \"网络课程\",\n keywords: \"向日葵钢琴城,钢琴教学,钢琴,向日葵,阳光朵拉陪练\",\n }\r\n }\r\n },\r\n {\r\n id: 22,\r\n //pid: 2,\r\n path: '/Offline',\r\n name: 'Offline',\r\n hidden: true,\r\n component: () => import('../pages/GoodsList.vue'),\r\n meta: {\r\n keepAlive: true,\r\n title: \"线下课程\"\r\n }\r\n },\r\n {\r\n id: 23, //显示首页用\r\n //pid: 0,\r\n path: '/Home',\r\n name: 'Home',\r\n hidden: true,\r\n component: () => import('../pages/Home.vue'),\r\n meta: {\r\n keepAlive: false,\r\n //title: \"首页\"\r\n }\r\n },\r\n {\r\n id: 24, //商品详情\r\n //pid: 0,\r\n path: '/GoodsInfo',\r\n name: 'GoodsInfo',\r\n hidden: true,\r\n component: () => import('../pages/GoodsInfo.vue'),\r\n meta: {\r\n keepAlive: true,\r\n //title:\"首页\"\r\n }\r\n },\r\n {\r\n id: 25, //显示首页用\r\n //pid: 0,\r\n path: '/about',\r\n name: 'about',\r\n hidden: true,\r\n component: () => import('../pages/about.vue'),\r\n meta: {\r\n keepAlive: false,\r\n //title: \"首页\"\r\n }\r\n },\r\n {\r\n id: 26, //显示首页用\r\n //pid: 0,\r\n path: '/join',\r\n name: 'join',\r\n hidden: true,\r\n component: () => import('../pages/join.vue'),\r\n meta: {\r\n keepAlive: false,\r\n //title: \"首页\"\r\n }\r\n },\r\n {\r\n id: 27, //显示首页用\r\n //pid: 0,\r\n path: '/winnerinfo',\r\n name: 'winnerinfo',\r\n hidden: true,\r\n component: () => import('../pages/winnerinfo.vue'),\r\n meta: {\r\n keepAlive: false,\r\n //title: \"首页\"\r\n }\r\n },\r\n {\r\n id: 28, //显示首页用\r\n //pid: 0,\r\n path: '/match',\r\n name: 'match',\r\n hidden: true,\r\n component: () => import('../pages/match.vue'),\r\n meta: {\r\n keepAlive: false,\r\n //title: \"首页\"\r\n }\r\n },\r\n ]\r\n },\r\n\r\n {\r\n id: 3,\r\n //pid: 0,\r\n path: '/Mall',\r\n name: 'Mall',\r\n hidden: true,\r\n component: Layout,\r\n meta: {\r\n keepAlive: true,\r\n title: \"向日葵商城\"\r\n },\r\n children: [{\r\n id: 31,\r\n //pid: 3,\r\n path: '/Instrument',\r\n name: 'Instrument',\r\n hidden: true,\r\n component: () => import('../pages/GoodsList.vue'),\r\n meta: {\r\n keepAlive: true,\r\n title: \"乐器商城\"\r\n }\r\n },\r\n {\r\n id: 32,\r\n //pid: 3,\r\n path: '/Books',\r\n name: 'Books',\r\n hidden: true,\r\n component: () => import('../pages/GoodsList.vue'),\r\n meta: {\r\n keepAlive: true,\r\n title: \"图书及周边商城\"\r\n }\r\n },\r\n {\r\n id: 33,\r\n //pid: 3,\r\n path: '/settlement',\r\n name: 'settlement',\r\n hidden: false,\r\n component: () => import('../pages/settlement.vue'),\r\n meta: {\r\n keepAlive: true,\r\n title: \"结算\"\r\n }\r\n },\r\n {\r\n id: 34,\r\n //pid: 3,\r\n path: '/pay',\r\n name: 'pay',\r\n hidden: false,\r\n component: () => import('../pages/pay.vue'),\r\n meta: {\r\n keepAlive: true,\r\n title: \"结算\"\r\n }\r\n },\r\n ]\r\n },\r\n\r\n {\r\n id: 9,\r\n //pid: 0,\r\n path: '/joining',\r\n name: 'joining',\r\n hidden: true,\r\n component: Layout,\r\n redirect: '/join',\r\n meta: {\r\n keepAlive: true,\r\n title: \"加盟合作\",\n metaInfo: {\n title: \"加盟合作\",\n keywords: \"向日葵钢琴城,钢琴教学,钢琴,向日葵,阳光朵拉陪练\",\n }\r\n }\r\n },\r\n {\r\n id: 10,\r\n //pid: 0,\r\n path: '/matchs',\r\n name: 'matchs',\r\n hidden: true,\r\n component: Layout,\r\n redirect: '/match',\r\n meta: {\r\n keepAlive: true,\r\n title: \"大赛&集训营\",\n metaInfo: {\n title: \"大赛&集训营\",\n keywords: \"向日葵钢琴城,钢琴教学,钢琴,向日葵,阳光朵拉陪练\",\n }\r\n }\r\n },\r\n {\r\n id: 91,\r\n //pid: 0,\r\n path: '/winner',\r\n name: 'winner',\r\n hidden: true,\r\n component: Layout,\r\n redirect: '/winnerinfo',\r\n meta: {\r\n keepAlive: true,\r\n title: \"学员奖项\",\n metaInfo: {\n title: \"学员奖项\",\n keywords: \"向日葵钢琴城,钢琴教学,钢琴,向日葵,阳光朵拉陪练\",\n }\r\n }\r\n },\r\n {\r\n id: 8,\r\n //pid: 0,\r\n path: '/abouts',\r\n name: 'abouts',\r\n hidden: true,\r\n component: Layout,\r\n redirect: '/about',\r\n meta: {\r\n keepAlive: true,\r\n title: \"关于我们\",\n metaInfo: {\n title: \"关于我们\",\n keywords: \"向日葵钢琴城,钢琴教学,钢琴,向日葵,阳光朵拉陪练\",\n }\r\n }\r\n },\r\n {\r\n id: 4,\r\n //pid: 0,\r\n path: '/me',\r\n name: 'me',\r\n hidden: false,\r\n component: Layout,\r\n meta: {\r\n keepAlive: false,\r\n //title:\"首页\"\r\n },\r\n children: [{\r\n id: 41,\r\n pid: 4,\r\n path: '/shoppingcart',\r\n name: 'shoppingcart',\r\n hidden: false,\r\n component: () => import('../pages/shoppingcart.vue'),\r\n meta: {\r\n keepAlive: true,\r\n title: \"购物车\"\r\n }\r\n },\r\n {\r\n id: 42,\r\n pid: 4,\r\n path: '/CoursewareList',\r\n name: 'CoursewareList',\r\n hidden: false,\r\n component: () => import('../pages/CoursewareList.vue'),\r\n meta: {\r\n keepAlive: true,\r\n title: \"我的课程\"\r\n }\r\n },\r\n {\r\n id: 43,\r\n pid: 4,\r\n path: '/myorder',\r\n name: 'myorder',\r\n hidden: false,\r\n component: () => import('../pages/myorder.vue'),\r\n meta: {\r\n keepAlive: true,\r\n title: \"我的订单\"\r\n }\r\n },\r\n {\r\n id: 44,\r\n pid: 4,\r\n path: '/logout',\r\n name: 'logout',\r\n hidden: false,\r\n component: () => import('../pages/Home.vue'),\r\n meta: {\r\n keepAlive: true,\r\n title: \"退出\"\r\n }\r\n },\r\n {\r\n id: 49,\r\n pid: 4,\r\n path: '/addressInfo',\r\n name: 'addressInfo',\r\n hidden: false,\r\n component: () => import('../pages/addressInfo.vue'),\r\n meta: {\r\n keepAlive: false,\r\n title: \"添加地址\"\r\n }\r\n },\r\n\r\n ]\r\n },\r\n {\r\n id: 99,\r\n //pid: 0,\r\n path: '/login',\r\n name: 'login',\r\n hidden: true,\r\n component: () => import('../pages/login.vue'),\r\n meta: {\r\n keepAlive: true,\r\n title: \"登录/注册\"\r\n }\r\n },\r\n\r\n {\r\n id: 100,\r\n //pid: 0,\r\n path: '/adduserinfo',\r\n name: 'adduserinfo',\r\n hidden: false,\r\n component: () => import('../pages/adduserinfo.vue'),\r\n meta: {\r\n keepAlive: false,\r\n //title:\"首页\"\r\n }\r\n },\r\n {\r\n id: 101,\r\n //pid: 0,\r\n path: '/Franchisee',\r\n name: 'Franchisee',\r\n hidden: true,\r\n beforeEnter() {\r\n location.href = 'http://47.92.251.188:8091/Login'\r\n },\r\n meta: {\r\n keepAlive: false,\r\n title: \"加盟商登录\"\r\n }\r\n },\r\n\r\n {\r\n id: 102,\r\n //pid: 0,\r\n path: '/CoursewareInfo',\r\n name: 'CoursewareInfo',\r\n hidden: false,\r\n component: () => import('../pages/CoursewareInfo.vue'),\r\n meta: {\r\n keepAlive: false,\r\n //title:\"首页\"\r\n }\r\n },\r\n {\r\n id: 103,\r\n //pid: 0,\r\n path: '/privacyagreement',\r\n name: 'privacyagreement',\r\n hidden: false,\r\n component: () => import('../pages/privacyagreement.vue'),\r\n meta: {\r\n keepAlive: false,\r\n title: \"隐私协议\"\r\n }\r\n },\r\n {\r\n id: 103,\r\n //pid: 0,\r\n path: '/privacyagreement_t',\r\n name: 'privacyagreement_t',\r\n hidden: false,\r\n component: () => import('../pages/privacyagreement_t.vue'),\r\n meta: {\r\n keepAlive: false,\r\n title: \"隐私协议\"\r\n }\r\n },\r\n ]\r\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/router/index.js"," \r\nimport Cookies from 'js-cookie'\r\n\r\nconst TokenKey = 'Admin-Token'\r\n\r\nexport function getToken() {\r\n return Cookies.get(TokenKey)\r\n}\r\n\r\nexport function setToken(token) {\r\n return Cookies.set(TokenKey, token)\r\n}\r\n\r\nexport function removeToken() {\r\n return Cookies.remove(TokenKey)\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/auth.js","import Vue from 'vue';\r\nimport Vuex from 'vuex';\r\nimport {\r\n\tgetToken,\r\n\tsetToken,\r\n\tremoveToken\r\n} from '@/utils/auth'\r\nVue.use(Vuex);\r\n//const store = new Vuex.Store();\r\nconst store = new Vuex.Store({\r\n\tstate: {\r\n\t\ttoken: getToken(),\r\n\t\tname: '',\r\n\t\tavatar: '',\r\n\t\troles: [],\r\n\t\tcode:\"\",\r\n\t\t// isLock: getStore({\r\n\t\t// \tname: 'isLock'\r\n\t\t// }) || false,\r\n\t\t// lockPasswd: getStore({\r\n\t\t// \tname: 'lockPasswd'\r\n\t\t// }) || '',\r\n\t\t// browserHeaderTitle: getStore({\r\n\t\t// \tname: 'browserHeaderTitle'\r\n\t\t// }) || 'NxAdmin'\r\n\t},\r\n\tmutations: {\r\n\t\tSET_TOKEN: (state, token) => {\r\n\t\t\tstate.token = token\r\n\t\t},\r\n\t\tSET_ROLES: (state, roles) => {\r\n\t\t\tstate.roles = roles\r\n\t\t},\r\n\t},\r\n\tactions: {\r\n\t\t// 登录\r\n\t\tLogin({\r\n\t\t\tcommit\r\n\t\t}, userInfo) {\r\n\t\t\t//const username = userInfo.username.trim()\r\n\t\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\tdebugger\r\n\t\t\t\t// login(username, userInfo.password).then(response => {\r\n\t\t\t\t// \tconst data = response\r\n\t\t\t\t// \tsetToken(data.token)\r\n\t\t\t\t// \tcommit('SET_TOKEN', data.token)\r\n\t\t\t\t// \tresolve()\r\n\t\t\t\t// }).catch(error => {\r\n\t\t\t\t// \treject(error)\r\n\t\t\t\t// })\r\n\t\t\t\tsessionStorage.setItem('userinfo', JSON.stringify(userInfo))\n\r\n\t\t\t\tsetToken(\"Y\")\r\n\t\t\t\tcommit('SET_TOKEN', \"Y\")\r\n\t\t\t\tresolve()\r\n\t\t\t})\r\n\t\t},\n logout({commit}){\n return new Promise((resolve, reject) => {\ndebugger\n commit('SET_TOKEN', '')\n commit('SET_ROLES', [])\n // commit('CLEAR_LOCK')\n removeToken()\n sessionStorage.clear()\n resolve()\n\n })\n },\r\n\t\tSetRoles({\r\n\t\t\tcommit\r\n\t\t}, Rols) {\r\n\t\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\t//debugger\r\n\t\t\t\tcommit('SET_ROLES', Rols)\r\n\t\t\t\tresolve()\r\n\t\t\t})\r\n\r\n\t\t}\r\n\r\n\t},\r\n\tgetters: { // getters\r\n\t\troles: function(state) {\r\n\t\t\t//debugger\r\n\t\t\treturn state.roles\r\n\t\t}\r\n\t}\r\n})\r\n\r\nexport default store;\r\n\r\nexport function login(username, password) {\r\n\treturn request({\r\n\t\turl: '/user/login',\r\n\t\tmethod: 'post',\r\n\t\tdata: {\r\n\t\t\tusername,\r\n\t\t\tpassword\r\n\t\t}\r\n\t})\r\n}\r\n\r\nexport function getInfo(token) {\r\n\treturn request({\r\n\t\turl: '/user/info',\r\n\t\tmethod: 'get',\r\n\t\tparams: {\r\n\t\t\ttoken\r\n\t\t}\r\n\t})\r\n}\r\n\r\nexport function logout() {\r\n\treturn request({\r\n\t\turl: '/user/logout',\r\n\t\tmethod: 'post'\r\n\t})\r\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/index.js","import router from './router/index'\r\nimport store from './store'\r\n//import router from './router'\r\nimport ParseRoutes from \"./router/parse_routes\"\r\nimport {\r\n getToken,\r\n removeToken\r\n} from './utils/auth' // 验权\r\nrouter.beforeEach((to, from, next) => {\r\n\r\n console.log(to); // 即将要进入路由的对象\r\n console.log(from); // 当前导航要离开的路由对象\r\n console.log(next); // 调用next该方法,才能进入下一个路由\r\n var url = decodeURIComponent(location.search);\r\n\r\n // let menusMap = ParseRoutes(router.options.routes)\r\n // const routes = Object.values(menusMap)\r\n // // 默认路由拼接生成的路由(注意顺序)\r\n // //const integralRoutes = defRoutes.concat(routes)\r\n // router.options.routes = routes\r\n\r\n if (window.location.href.indexOf('code') >= 0) {\r\n //如果url中包含code,则保存到store中\r\n let code = window.location.href.split(\"?\")[1];\r\n code = code.substring(5, code.indexOf('&'));\r\n store.state.code = code;\r\n console.log(\"code:\" + code);\r\n }\r\n\r\n if (to.path != \"/mobile\") {\r\n const mobile = JSON.parse(sessionStorage.getItem('ismobile'))\r\n if (mobile == \"1\") {\r\n next('/mobile')\r\n }\r\n }\n\r\n if (to.path === \"/logout\") {\r\n store.dispatch('logout').then(res => {\r\n debugger\n router.go(0)\r\n next('/Home')\r\n })\r\n }\r\n // if(to.path === \"/Franchisee\")\r\n // {\r\n // \tlocation.href = 'http://github.com'\r\n // }\r\n if (store.getters.roles.length == 0) {\r\n if (sessionStorage.getItem('userinfo') != \"undefined\" && sessionStorage.getItem('userinfo') != null) {\r\n var userinfo = JSON.parse(sessionStorage.getItem('userinfo'))\r\n const menus = [ // 由后端传入\r\n {\r\n \"id\": 4,\r\n \"pid\": 0,\r\n \"path\": \"/\",\r\n \"name\": \"me\", //GoodsManage\r\n //\"component\": \"GoodsManage\",\r\n \"redirect\": \"\",\r\n \"hidden\": \"true\",\r\n \"meta\": \"{\\\"title\\\": \\\"欢迎:\" + userinfo.username + \"\\\"}\"\r\n },\r\n {\r\n \"id\": 41,\r\n \"pid\": 4,\r\n \"path\": \"/shoppingcart\",\r\n \"name\": \"shoppingcart\",\r\n //\"component\": \"GoodsInfo\",\r\n \"redirect\": \"\",\r\n \"hidden\": \"true\",\r\n \"meta\": \"{\\\"title\\\": \\\"购物车\\\"}\"\r\n }, ,\r\n {\r\n \"id\": 42,\r\n \"pid\": 4,\r\n \"path\": \"/CoursewareList\",\r\n \"name\": \"CoursewareList\",\r\n //\"component\": \"GoodsInfo\",\r\n \"redirect\": \"\",\r\n \"hidden\": \"true\",\r\n \"meta\": \"{\\\"title\\\": \\\"我的课程\\\"}\"\r\n },\r\n\r\n {\r\n \"id\": 43,\r\n \"pid\": 4,\r\n \"path\": \"/myorder\",\r\n \"name\": \"myorder\",\r\n //\"component\": \"GoodsInfo\",\r\n \"redirect\": \"\",\r\n \"hidden\": \"true\",\r\n \"meta\": \"{\\\"title\\\": \\\"我的订单\\\"}\"\r\n },\r\n {\r\n \"id\": 44,\r\n \"pid\": 4,\r\n \"path\": \"/logout\",\r\n \"name\": \"logout\",\r\n //\"component\": \"GoodsInfo\",\r\n \"redirect\": \"\",\r\n \"hidden\": \"true\",\r\n \"meta\": \"{\\\"title\\\": \\\"退出\\\"}\"\r\n },\r\n {\r\n \"id\": 49,\r\n \"pid\": 4,\r\n \"path\": \"/addressInfo\",\r\n \"name\": \"addressInfo\",\r\n //\"component\": \"GoodsInfo\",\r\n \"redirect\": \"\",\r\n \"hidden\": \"false\",\r\n \"meta\": \"{\\\"title\\\": \\\"添加地址\\\"}\"\r\n },\r\n {\r\n \"id\": 99,\r\n \"pid\": 0,\r\n \"path\": \"/login\",\r\n \"name\": \"login\",\r\n //\"component\": \"GoodsInfo\",\r\n \"redirect\": \"\",\r\n \"hidden\": \"false\",\r\n \"meta\": \"{\\\"title\\\": \\\"登录/注册\\\"}\"\r\n\r\n },\r\n ]\r\n let menusMap = ParseRoutes(menus)\r\n\r\n // 将生成数组树结构的菜单\r\n const routes = Object.values(menusMap)\r\n\r\n // 默认路由拼接生成的路由(注意顺序)\r\n let temp = router.options.routes\r\n for (var i = 0; i < temp.length; i++) {\r\n for (var j = 0; j < routes.length; j++) {\r\n if (temp[i].id == routes[j].id) {\r\n temp[i] = routes[j]\r\n }\r\n }\r\n }\r\n //const integralRoutes = router.options.routes.concat(routes)\r\n router.options.routes = temp\r\n store.dispatch('SetRoles', {\r\n menus\r\n }).then(() => { // 根据roles权限生成可访问的路由表\r\n\r\n router.addRoutes(routes)\r\n\r\n next({ ...to,\r\n replace: true\r\n })\r\n })\r\n }\r\n } else {\r\n //next()\r\n }\r\n let whiteList = ['/login', '/shoppingcart', '/adduserinfo', '/CoursewareList', '/CoursewareInfo', \"/settlement\",\r\n \"/pay\", \"/myorder\"\r\n ]\r\n //let whiteList=['/login']\r\n\r\n if (whiteList.indexOf(to.path) != -1) {\r\n if (getToken()) {\r\n if (to.path === '/login') {\r\n removeToken();\r\n sessionStorage.clear();\r\n next()\r\n } else {\r\n //next();\r\n //const unparseRoutes = JSON.parse(sessionStorage.getItem('userinfo'))\r\n //if(unparseRoutes)\r\n // \t\t\t\tif (store.getters.roles.length != 0) {\r\n // \t\t\t\t\tif (to.meta.empower != null) {\r\n // \t\t\t\t\t\tnext()\r\n // \t\t\t\t\t} else {\r\n // \t\t\t\t\t\t// next({\r\n // \t\t\t\t\t\t// \tpath: '/404',\r\n // \t\t\t\t\t\t// \treplace: true,\r\n // \t\t\t\t\t\t// \tquery: {\r\n // \t\t\t\t\t\t// \t\tnoGoBack: true\r\n // \t\t\t\t\t\t// \t}\r\n // \t\t\t\t\t\t// })\r\n // \t\t\t\t\t\tnext('/Home')\r\n // \t\t\t\t\t}\r\n //\r\n // \t\t\t\t} else {\r\n // \t\t\t\t\tnext()\r\n // \t\t\t\t}\r\n next()\r\n //next({ ...to, replace: true })\r\n\r\n //next({ ...to, replace: true })\r\n }\r\n } else {\r\n if (to.path === '/login') {\r\n next()\r\n } else {\r\n next('/login')\r\n //NProgress.done()\r\n }\r\n }\r\n } else {\r\n if (to.path == '/Online' && (JSON.stringify(to.params) == \"{}\")) {\r\n next({\r\n name: 'Online',\r\n params: {\r\n type: '0002'\r\n }\r\n })\r\n } else if (to.path == '/Offline' && (JSON.stringify(to.params) == \"{}\")) {\r\n next({\r\n name: 'Offline',\r\n params: {\r\n type: '0003'\r\n }\r\n })\r\n } else if (to.path == '/Books' && (JSON.stringify(to.params) == \"{}\")) {\r\n next({\r\n name: 'Books',\r\n params: {\r\n type: '0001'\r\n }\r\n })\r\n } else if (to.path == '/Instrument' && (JSON.stringify(to.params) == \"{}\")) {\r\n next({\r\n name: 'Instrument',\r\n params: {\r\n type: '0000'\r\n }\r\n })\r\n } else {\r\n next()\r\n }\r\n\r\n }\r\n\r\n\r\n //next();\r\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/permission.js","//import router from '../router/index'\r\n\r\nexport default (menus, to = '/') => {\r\n\t//debugger\r\n\t//Router.options.routes = null\r\n\t// 初始路由\r\n\t// 初始化路由信息对象\r\n\tconst menusMap = {}\r\n\t//let Url = \"GoodsInfo\"\r\n\tmenus.map(v => {\r\n\t\tconst {\r\n\t\t\tid,\r\n\t\t\tpath,\r\n\t\t\tname,\r\n\t\t\tcomponent,\r\n\t\t\tUrl,\r\n\t\t\tredirect,\r\n\t\t\thidden,\r\n\t\t\tmeta\r\n\t\t} = v\r\n\t\r\n\t\t// 重新构建路由对象\r\n\t\tconst item = {\r\n\t\t\tid,\r\n\t\t\tpath,\r\n\t\t\tname,\r\n\t\t\tcomponent,\r\n\t\t\t//component:() => import(`./pages/${component}`),\r\n\t\t\t//component: () => import('./pages/GoodsInfo'),\r\n\t\t\tredirect,\r\n\t\t\thidden: JSON.parse(hidden)\r\n\t\t}\r\n\t\t//debugger\r\n\r\n if(meta!=undefined)\r\n\t {\r\n\t\t meta.length !== 0 && (item.meta = JSON.parse(meta))\r\n\t }\r\n\t\t//if()\r\n\t\t// 判断是否为根节点\r\n\t\tif (v.pid === 0) {\r\n\t\t\tmenusMap[v.id] = item\r\n\t\t} else {\r\n\t\t\t!menusMap[v.pid].children && (menusMap[v.pid].children = [])\r\n\t\t\tmenusMap[v.pid].children.push(item)\r\n\t\t}\r\n\t})\r\n\t//debugger\r\n\tconsole.log(\"menusMap\" + JSON.stringify(menusMap))\r\n\treturn menusMap\r\n\r\n\t//console.log(\"integralRoutes\" + JSON.stringify(integralRoutes))\r\n\r\n\r\n\t//Router.options.routes = integralRoutes\r\n\t//Router.options.routes = routes\r\n\t//Router.options.routes = integralRoutes\r\n\t//Router.addRoutes(routes)\r\n\t//debugger\r\n\t// Router.push({\r\n\t// \tpath: to\r\n\t// })\r\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/router/parse_routes.js","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view')],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vue-loader@13.7.3@vue-loader/lib/template-compiler?{\"id\":\"data-v-2a8137f0\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/_vue-loader@13.7.3@vue-loader/lib/selector.js?type=template&index=0!./src/App.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../node_modules/_extract-text-webpack-plugin@3.0.2@extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true,\\\"publicPath\\\":\\\"../../\\\"}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../node_modules/_vue-loader@13.7.3@vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-2a8137f0\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=styles&index=0!./App.vue\")\n}\nvar normalizeComponent = require(\"!../node_modules/_vue-loader@13.7.3@vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=script&index=0!./App.vue\"\nimport __vue_script__ from \"!!babel-loader!../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=script&index=0!./App.vue\"\n/* template */\nimport __vue_template__ from \"!!../node_modules/_vue-loader@13.7.3@vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2a8137f0\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=template&index=0!./App.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/App.vue\n// module id = null\n// module chunks = ","