index.js 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  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: 'detail',
  24. meta: { title: '视频详情', isleftarrow: true },
  25. component: () => import('../views/live/detail.vue'),
  26. },
  27. // 1005视频详情
  28. {
  29. path: '/live/detailtwo',
  30. name: 'detailtwo',
  31. meta: { title: '视频详情', isleftarrow: true },
  32. component: () => import('../views/live/detailtwo.vue'),
  33. },
  34. {
  35. path: '/live/personalDetail',
  36. name: 'personalDetail',
  37. meta: { title: '人才招聘详情', isleftarrow: true },
  38. component: () => import('../views/live/personalDetail.vue'),
  39. },
  40. {
  41. path: '/live/exportsDetail',
  42. name: 'exportsDetail',
  43. meta: { title: '专家培训详情', isleftarrow: true },
  44. component: () => import('../views/live/exportsDetail.vue'),
  45. },
  46. // 科技超市
  47. {
  48. path: '/market/index',
  49. name: 'market_index',
  50. meta: { title: '科技超市', isleftarrow: false },
  51. component: () => import('../views/market/index.vue'),
  52. },
  53. {
  54. path: '/market/productDetail',
  55. name: 'market_productDetail',
  56. meta: { title: '科技超市详情', isleftarrow: true },
  57. component: () => import('../views/market/productDetail.vue'),
  58. },
  59. {
  60. path: '/market/exportDetail',
  61. name: 'market_exportDetail',
  62. meta: { title: '专家详情', isleftarrow: true },
  63. component: () => import('../views/market/exportDetail.vue'),
  64. },
  65. // 技术交流
  66. {
  67. path: '/service/index',
  68. name: 'service_index',
  69. meta: { title: '技术交流', isleftarrow: false },
  70. component: () => import('../views/service/index.vue'),
  71. },
  72. {
  73. path: '/service/detail',
  74. name: 'service_detail',
  75. meta: { title: '技术交流', isleftarrow: true },
  76. component: () => import('../views/service/detail.vue'),
  77. },
  78. //新闻资讯
  79. {
  80. path: '/journ/index',
  81. name: 'journ',
  82. meta: { title: '新闻资讯', isleftarrow: false },
  83. component: () => import('../views/journ/index.vue'),
  84. },
  85. {
  86. path: '/journ/detail',
  87. name: 'detail',
  88. meta: { title: '新闻资讯', isleftarrow: true },
  89. component: () => import('../views/journ/detail.vue'),
  90. },
  91. {
  92. path: '/service/techDetail',
  93. name: 'service_techDetail',
  94. meta: { title: '技术交流', isleftarrow: true },
  95. component: () => import('../views/service/techDetail.vue'),
  96. },
  97. // 个人中心
  98. {
  99. path: '/user/index',
  100. name: 'user_index',
  101. meta: { title: '个人中心', isleftarrow: false },
  102. component: () => import('../views/user/index.vue'),
  103. },
  104. // 用户-基本信息
  105. {
  106. path: '/userCenter/user/index',
  107. name: 'user_index',
  108. meta: { title: '基本信息', isleftarrow: true },
  109. component: () => import('../views/userCenter/user/index.vue'),
  110. },
  111. // 用户-我的发布
  112. {
  113. path: '/userCenter/myProduct/index',
  114. name: 'myProduct_index',
  115. meta: { title: '我的发布', isleftarrow: true },
  116. component: () => import('../views/userCenter/myProduct/index.vue'),
  117. },
  118. //用户-发布产品
  119. {
  120. path: '/userCenter/myProduct/detail',
  121. name: 'myProduct_index',
  122. meta: { title: '信息管理', isleftarrow: true },
  123. component: () => import('../views/userCenter/myProduct/detail.vue'),
  124. },
  125. // 用户-事项管理
  126. {
  127. path: '/userCenter/matter/index',
  128. name: 'matter_index',
  129. meta: { title: '事项管理', isleftarrow: true },
  130. component: () => import('../views/userCenter/matter/index.vue'),
  131. },
  132. // 用户-交易完成
  133. {
  134. path: '/userCenter/matter/detail',
  135. name: 'matter_detail',
  136. meta: { title: '交易完成', isleftarrow: true },
  137. component: () => import('../views/userCenter/matter/detail.vue'),
  138. },
  139. // 用户-展会管理
  140. {
  141. path: '/userCenter/dock/index',
  142. name: 'dock_index',
  143. meta: { title: '展会管理', isleftarrow: true },
  144. component: () => import('../views/userCenter/dock/index.vue'),
  145. },
  146. {
  147. path: '/userCenter/dock/detail',
  148. name: 'detail',
  149. meta: { title: '申请', isleftarrow: true },
  150. component: () => import('../views/userCenter/dock/detail.vue'),
  151. },
  152. // 管理用户菜单
  153. // 管理-用户管理
  154. {
  155. path: '/adminCenter/user/index',
  156. name: 'adminCenter_user_index',
  157. meta: { title: '用户管理', isleftarrow: true },
  158. component: () => import('../views/adminCenter/user/index.vue'),
  159. },
  160. // 管理-查看用户
  161. {
  162. path: '/adminCenter/user/detail',
  163. name: 'adminCenter_user_detail',
  164. meta: { title: '审核/查看用户', isleftarrow: true },
  165. component: () => import('../views/adminCenter/user/detail.vue'),
  166. },
  167. // 管理-展会管理
  168. {
  169. path: '/adminCenter/duijiehui/index',
  170. name: 'adminCenter_duijiehui_index',
  171. meta: { title: '展会管理', isleftarrow: true },
  172. component: () => import('../views/adminCenter/duijiehui/index.vue'),
  173. },
  174. // 管理-展会信息管理
  175. {
  176. path: '/adminCenter/duijiehui/add',
  177. name: 'adminCenter_duijiehui_add',
  178. meta: { title: '展会信息管理', isleftarrow: true },
  179. component: () => import('../views/adminCenter/duijiehui/add.vue'),
  180. },
  181. // 管理-审核管理
  182. {
  183. path: '/adminCenter/enterpriseProduct/index',
  184. name: 'adminCenter_enterpriseProduct',
  185. meta: { title: '审核管理', isleftarrow: true },
  186. component: () => import('../views/adminCenter/enterpriseProduct/index.vue'),
  187. },
  188. // 管理-产品信息管理
  189. {
  190. path: '/adminCenter/enterpriseProduct/detail',
  191. name: 'adminCenter_enterpriseProduct',
  192. meta: { title: '产品信息管理', isleftarrow: true },
  193. component: () => import('../views/adminCenter/enterpriseProduct/detail.vue'),
  194. },
  195. // 管理-交易审核管理
  196. {
  197. path: '/adminCenter/transaction/index',
  198. name: 'adminCenter_transaction',
  199. meta: { title: '交易审核管理', isleftarrow: true },
  200. component: () => import('../views/adminCenter/transaction/index.vue'),
  201. },
  202. // 管理-交易信息管理
  203. {
  204. path: '/adminCenter/transaction/detail',
  205. name: 'adminCenter_transaction',
  206. meta: { title: '交易信息管理', isleftarrow: true },
  207. component: () => import('../views/adminCenter/transaction/detail.vue'),
  208. },
  209. //共用-修改密码
  210. {
  211. path: '/updatePwd/index',
  212. name: 'updatePwd',
  213. meta: { title: '修改密码', isleftarrow: true },
  214. component: () => import('../views/updatePwd/index.vue'),
  215. },
  216. // 登录-用户+管理
  217. {
  218. path: '/login',
  219. name: 'login',
  220. meta: { title: '登录', isleftarrow: true },
  221. component: () => import('../views/login.vue'),
  222. },
  223. // 绑定
  224. {
  225. path: '/bind',
  226. name: 'bind',
  227. meta: { title: '绑定', isleftarrow: false },
  228. component: () => import('../views/bind.vue'),
  229. },
  230. // 展会绑定
  231. {
  232. path: '/dockbind',
  233. name: 'dockbind',
  234. meta: { title: '展会绑定', isleftarrow: false },
  235. component: () => import('../views/dockbind.vue'),
  236. },
  237. //关注公众号
  238. {
  239. path: '/followbind',
  240. name: 'followbind',
  241. meta: { title: '关注公众号', isleftarrow: false },
  242. component: () => import('../views/followbind.vue'),
  243. },
  244. // 错误
  245. {
  246. path: '/error',
  247. name: 'error',
  248. meta: { title: '绑定授权', isleftarrow: false },
  249. component: () => import('../views/followbind.vue'),
  250. },
  251. // 11-9新菜单
  252. {
  253. path: '/channel/index',
  254. name: 'channel',
  255. meta: { title: '科技频道', isleftarrow: false },
  256. component: () => import('../views/channel/index.vue'),
  257. },
  258. {
  259. path: '/channel/detail',
  260. name: 'detail',
  261. meta: { title: '科技频道', isleftarrow: true },
  262. component: () => import('../views/channel/detail.vue'),
  263. },
  264. ];
  265. const router = new VueRouter({
  266. mode: 'history',
  267. base: process.env.NODE_ENV === 'development' ? '' : process.env.VUE_APP_ROUTER,
  268. routes,
  269. });
  270. router.beforeEach(async (to, form, next) => {
  271. if (to.name == 'user_index') {
  272. let res = await store.dispatch('login/toGetUser');
  273. if (res && res.uid) {
  274. next();
  275. } else {
  276. let key = sessionStorage.getItem('token');
  277. let user = jwt.decode(key);
  278. if (user && user.uid) {
  279. store.commit('setUser', user, { root: true });
  280. next();
  281. } else {
  282. next({ name: 'login' });
  283. }
  284. }
  285. } else {
  286. let res = await store.dispatch('login/toGetUser');
  287. next();
  288. }
  289. });
  290. const originalPush = VueRouter.prototype.push;
  291. VueRouter.prototype.push = function push(location, onResolve, onReject) {
  292. if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject);
  293. return originalPush.call(this, location).catch(err => err);
  294. };
  295. export default router;