index.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. import Vue from 'vue';
  2. import VueRouter from 'vue-router';
  3. import store from '@/store/index';
  4. const jwt = require('jsonwebtoken');
  5. const originalPush = VueRouter.prototype.push;
  6. VueRouter.prototype.push = function push(location) {
  7. return originalPush.call(this, location).catch((err) => err);
  8. };
  9. Vue.use(VueRouter);
  10. const web = [
  11. {
  12. path: '/',
  13. name: 'index',
  14. meta: { title: '网站首页' },
  15. component: () => import('../views/index.vue'),
  16. },
  17. {
  18. path: '/website',
  19. name: 'website',
  20. component: () => import('../views/website.vue'),
  21. children: [
  22. {
  23. path: '/news/index',
  24. name: 'news_index',
  25. meta: { title: '新闻咨询' },
  26. component: () => import('../views/news/index.vue'),
  27. },
  28. {
  29. path: '/service/index',
  30. name: 'service_index',
  31. meta: { title: '科技服务' },
  32. component: () => import('../views/service/index.vue'),
  33. },
  34. {
  35. path: '/market/index',
  36. name: 'market_index',
  37. meta: { title: '技术超市' },
  38. component: () => import('../views/market/index.vue'),
  39. },
  40. {
  41. path: '/train/index',
  42. name: 'train_index',
  43. meta: { title: '宣传培训' },
  44. component: () => import('../views/train/index.vue'),
  45. },
  46. {
  47. path: '/dynamic/index',
  48. name: 'dynamic_index',
  49. meta: { title: '数据动态' },
  50. component: () => import('../views/dynamic/index.vue'),
  51. },
  52. ],
  53. },
  54. // 管理登录
  55. {
  56. path: '/login',
  57. name: 'login',
  58. meta: { title: '管理登录' },
  59. component: () => import('../views/login.vue'),
  60. },
  61. {
  62. path: '/adminCenter/homeIndex',
  63. name: 'adminCenter',
  64. component: () => import('../views/adminCenter/index.vue'),
  65. children: [
  66. {
  67. path: '/adminCenter/homeIndex',
  68. name: 'admin_homeIndex',
  69. meta: { title: '首页' },
  70. component: () => import('../views/adminCenter/homeIndex/index.vue'),
  71. },
  72. {
  73. path: '/adminCenter/test',
  74. name: 'admin_test',
  75. meta: { title: '测试页面' },
  76. component: () => import('../views/adminCenter/test/index.vue'),
  77. },
  78. {
  79. path: '/adminCenter/news',
  80. name: 'admin_news',
  81. meta: { title: '新闻管理' },
  82. component: () => import('../views/adminCenter/news/index.vue'),
  83. },
  84. {
  85. path: '/adminCenter/news/detail',
  86. name: 'admin_news_detail',
  87. meta: { title: '新闻管理' },
  88. component: () => import('../views/adminCenter/news/detail.vue'),
  89. },
  90. {
  91. path: '/adminCenter/product',
  92. name: 'admin_product',
  93. meta: { title: '科技成果' },
  94. component: () => import('../views/adminCenter/product/index.vue'),
  95. },
  96. {
  97. path: '/adminCenter/product/detail',
  98. name: 'admin_product_detail',
  99. meta: { title: '科技成果' },
  100. component: () => import('../views/adminCenter/product/detail.vue'),
  101. },
  102. {
  103. path: '/adminCenter/patent',
  104. name: 'admin_patent',
  105. meta: { title: '专利管理' },
  106. component: () => import('../views/adminCenter/patent/index.vue'),
  107. },
  108. {
  109. path: '/adminCenter/patent/detail',
  110. name: 'admin_patent_detail',
  111. meta: { title: '专利管理' },
  112. component: () => import('../views/adminCenter/patent/detail.vue'),
  113. },
  114. {
  115. path: '/adminCenter/roadShow',
  116. name: 'admin_road_show',
  117. meta: { title: '路演管理' },
  118. component: () => import('../views/adminCenter/road_show/index.vue'),
  119. },
  120. {
  121. path: '/adminCenter/roadShow/detail',
  122. name: 'admin_road_show_detail',
  123. meta: { title: '路演管理' },
  124. component: () => import('../views/adminCenter/road_show/detail.vue'),
  125. },
  126. {
  127. path: '/adminCenter/expert',
  128. name: 'admin_expert',
  129. meta: { title: '专家管理' },
  130. component: () => import('../views/adminCenter/expert/index.vue'),
  131. },
  132. {
  133. path: '/adminCenter/expert/detail',
  134. name: 'admin_expert_detail',
  135. meta: { title: '专家管理' },
  136. component: () => import('../views/adminCenter/expert/detail.vue'),
  137. },
  138. ],
  139. },
  140. ];
  141. const routes = [...web];
  142. const router = new VueRouter({
  143. mode: 'history',
  144. base: process.env.VUE_APP_ROUTER,
  145. routes,
  146. });
  147. router.beforeEach((to, from, next) => {
  148. document.title = `${to.meta.title} `;
  149. const token = localStorage.getItem('token');
  150. if (to.path == '/adminCenter/homeIndex') {
  151. if (!token) {
  152. next('/login');
  153. } else {
  154. let user = jwt.decode(token);
  155. store.commit('setUser', user, { root: true });
  156. next();
  157. }
  158. } else {
  159. let user = jwt.decode(token);
  160. store.commit('setUser', user, { root: true });
  161. next();
  162. }
  163. });
  164. export default router;