index.js 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. import Vue from 'vue';
  2. import VueRouter from 'vue-router';
  3. import store from '@/store/index';
  4. const jwt = require('jsonwebtoken');
  5. Vue.use(VueRouter);
  6. const routes = [
  7. // 首页
  8. {
  9. path: '/',
  10. name: 'index',
  11. meta: { title: '首页', isleftarrow: false },
  12. component: () => import('../views/index.vue'),
  13. },
  14. // 直播大厅
  15. {
  16. path: '/live/index',
  17. name: 'live_index',
  18. meta: { title: '直播大厅', isleftarrow: false },
  19. component: () => import('../views/live/index.vue'),
  20. },
  21. {
  22. path: '/live/detail',
  23. name: 'live_detail',
  24. meta: { title: '直播详情', isleftarrow: true },
  25. component: () => import('../views/live/detail.vue'),
  26. },
  27. {
  28. path: '/live/detail2',
  29. name: 'detail2',
  30. meta: { title: '直播详情', isleftarrow: true },
  31. component: () => import('../views/live/detail2.vue'),
  32. },
  33. // 科技超市
  34. {
  35. path: '/market/index',
  36. name: 'market_index',
  37. meta: { title: '科技超市', isleftarrow: false },
  38. component: () => import('../views/market/index.vue'),
  39. },
  40. {
  41. path: '/market/productDetail',
  42. name: 'market_productDetail',
  43. meta: { title: '科技超市详情', isleftarrow: true },
  44. component: () => import('../views/market/productDetail.vue'),
  45. },
  46. {
  47. path: '/market/exportDetail',
  48. name: 'market_exportDetail',
  49. meta: { title: '专家详情', isleftarrow: true },
  50. component: () => import('../views/market/exportDetail.vue'),
  51. },
  52. // 创新服务
  53. {
  54. path: '/service/index',
  55. name: 'service_index',
  56. meta: { title: '创新服务', isleftarrow: false },
  57. component: () => import('../views/service/index.vue'),
  58. },
  59. {
  60. path: '/service/detail',
  61. name: 'service_detail',
  62. meta: { title: '创新服务', isleftarrow: true },
  63. component: () => import('../views/service/detail.vue'),
  64. },
  65. // 个人中心
  66. {
  67. path: '/user/index',
  68. name: 'user_index',
  69. meta: { title: '个人中心', isleftarrow: false },
  70. component: () => import('../views/user/index.vue'),
  71. },
  72. // 用户-基本信息
  73. {
  74. path: '/userCenter/user/index',
  75. name: 'user_index',
  76. meta: { title: '基本信息', isleftarrow: true },
  77. component: () => import('../views/userCenter/user/index.vue'),
  78. },
  79. // 用户-我的发布
  80. {
  81. path: '/userCenter/myProduct/index',
  82. name: 'myProduct_index',
  83. meta: { title: '我的发布', isleftarrow: true },
  84. component: () => import('../views/userCenter/myProduct/index.vue'),
  85. },
  86. //用户-发布产品
  87. {
  88. path: '/userCenter/myProduct/detail',
  89. name: 'myProduct_index',
  90. meta: { title: '信息管理', isleftarrow: true },
  91. component: () => import('../views/userCenter/myProduct/detail.vue'),
  92. },
  93. // 用户-事项管理
  94. {
  95. path: '/userCenter/matter/index',
  96. name: 'matter_index',
  97. meta: { title: '事项管理', isleftarrow: true },
  98. component: () => import('../views/userCenter/matter/index.vue'),
  99. },
  100. // 用户-交易完成
  101. {
  102. path: '/userCenter/matter/detail',
  103. name: 'matter_detail',
  104. meta: { title: '交易完成', isleftarrow: true },
  105. component: () => import('../views/userCenter/matter/detail.vue'),
  106. },
  107. // 用户-展会管理
  108. {
  109. path: '/userCenter/dock/index',
  110. name: 'dock_index',
  111. meta: { title: '展会管理', isleftarrow: true },
  112. component: () => import('../views/userCenter/dock/index.vue'),
  113. },
  114. {
  115. path: '/userCenter/dock/detail',
  116. name: 'detail',
  117. meta: { title: '申请', isleftarrow: true },
  118. component: () => import('../views/userCenter/dock/detail.vue'),
  119. },
  120. // 管理用户菜单
  121. // 管理-用户管理
  122. {
  123. path: '/adminCenter/user/index',
  124. name: 'adminCenter_user_index',
  125. meta: { title: '用户管理', isleftarrow: true },
  126. component: () => import('../views/adminCenter/user/index.vue'),
  127. },
  128. // 管理-查看用户
  129. {
  130. path: '/adminCenter/user/detail',
  131. name: 'adminCenter_user_detail',
  132. meta: { title: '审核/查看用户', isleftarrow: true },
  133. component: () => import('../views/adminCenter/user/detail.vue'),
  134. },
  135. // 管理-展会管理
  136. {
  137. path: '/adminCenter/duijiehui/index',
  138. name: 'adminCenter_duijiehui_index',
  139. meta: { title: '展会管理', isleftarrow: true },
  140. component: () => import('../views/adminCenter/duijiehui/index.vue'),
  141. },
  142. // 管理-展会信息管理
  143. {
  144. path: '/adminCenter/duijiehui/add',
  145. name: 'adminCenter_duijiehui_add',
  146. meta: { title: '展会信息管理', isleftarrow: true },
  147. component: () => import('../views/adminCenter/duijiehui/add.vue'),
  148. },
  149. // 管理-审核管理
  150. {
  151. path: '/adminCenter/enterpriseProduct/index',
  152. name: 'adminCenter_enterpriseProduct',
  153. meta: { title: '审核管理', isleftarrow: true },
  154. component: () => import('../views/adminCenter/enterpriseProduct/index.vue'),
  155. },
  156. // 管理-产品信息管理
  157. {
  158. path: '/adminCenter/enterpriseProduct/detail',
  159. name: 'adminCenter_enterpriseProduct',
  160. meta: { title: '产品信息管理', isleftarrow: true },
  161. component: () => import('../views/adminCenter/enterpriseProduct/detail.vue'),
  162. },
  163. // 管理-交易审核管理
  164. {
  165. path: '/adminCenter/transaction/index',
  166. name: 'adminCenter_transaction',
  167. meta: { title: '交易审核管理', isleftarrow: true },
  168. component: () => import('../views/adminCenter/transaction/index.vue'),
  169. },
  170. // 管理-交易信息管理
  171. {
  172. path: '/adminCenter/transaction/detail',
  173. name: 'adminCenter_transaction',
  174. meta: { title: '交易信息管理', isleftarrow: true },
  175. component: () => import('../views/adminCenter/transaction/detail.vue'),
  176. },
  177. //共用-修改密码
  178. {
  179. path: '/updatePwd/index',
  180. name: 'updatePwd',
  181. meta: { title: '修改密码', isleftarrow: true },
  182. component: () => import('../views/updatePwd/index.vue'),
  183. },
  184. // 登录-用户+管理
  185. {
  186. path: '/login',
  187. name: 'login',
  188. meta: { title: '登录', isleftarrow: true },
  189. component: () => import('../views/login.vue'),
  190. },
  191. // 绑定
  192. {
  193. path: '/bind',
  194. name: 'bind',
  195. meta: { title: '绑定', isleftarrow: false },
  196. component: () => import('../views/bind.vue'),
  197. },
  198. // 展会绑定
  199. {
  200. path: '/dockbind',
  201. name: 'dockbind',
  202. meta: { title: '展会绑定', isleftarrow: false },
  203. component: () => import('../views/dockbind.vue'),
  204. },
  205. //关注公众号
  206. {
  207. path: '/followbind',
  208. name: 'followbind',
  209. meta: { title: '关注公众号', isleftarrow: false },
  210. component: () => import('../views/followbind.vue'),
  211. },
  212. // 错误
  213. {
  214. path: '/error',
  215. name: 'error',
  216. meta: { title: '绑定授权', isleftarrow: false },
  217. component: () => import('../views/followbind.vue'),
  218. },
  219. ];
  220. const router = new VueRouter({
  221. mode: 'history',
  222. base: process.env.NODE_ENV === 'development' ? '' : process.env.VUE_APP_ROUTER,
  223. routes,
  224. });
  225. router.beforeEach(async (to, form, next) => {
  226. if (to.name == 'user_index') {
  227. let res = await store.dispatch('login/toGetUser');
  228. console.log(res);
  229. if (res && res.uid) {
  230. console.log('1');
  231. next();
  232. } else {
  233. let key = sessionStorage.getItem('token');
  234. let user = jwt.decode(key);
  235. if (user && user.uid) {
  236. store.commit('setUser', user, { root: true });
  237. next();
  238. } else {
  239. next({ name: 'login' });
  240. }
  241. }
  242. } else {
  243. let res = await store.dispatch('login/toGetUser');
  244. next();
  245. }
  246. });
  247. const originalPush = VueRouter.prototype.push;
  248. VueRouter.prototype.push = function push(location, onResolve, onReject) {
  249. if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject);
  250. return originalPush.call(this, location).catch(err => err);
  251. };
  252. export default router;