index.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408
  1. import Vue from 'vue';
  2. import VueRouter from 'vue-router';
  3. import store from '@/store/index';
  4. const originalPush = VueRouter.prototype.push;
  5. VueRouter.prototype.push = function push(location) {
  6. return originalPush.call(this, location).catch(err => err);
  7. };
  8. const jwt = require('jsonwebtoken');
  9. const list = [
  10. {
  11. path: '/market/list',
  12. name: 'market_list',
  13. meta: { title: '科技超市' },
  14. component: () => import('../views/market/list.vue'),
  15. },
  16. {
  17. path: '/techolchat/list',
  18. name: 'techolchat_list',
  19. meta: { title: '技术交流' },
  20. component: () => import('../views/techolchat/list.vue'),
  21. },
  22. {
  23. path: '/news/list',
  24. name: 'news_list',
  25. meta: { title: '新闻资讯' },
  26. component: () => import('../views/news/list.vue'),
  27. },
  28. ];
  29. const admin = [
  30. {
  31. path: '/admin/live/science',
  32. name: 'admin_live_science',
  33. meta: { title: '科技频道管理中心' },
  34. component: () => import('../views/admin/live/science.vue'),
  35. },
  36. {
  37. path: '/admin/live/train',
  38. name: 'admin_live_train',
  39. meta: { title: '培训问诊管理中心' },
  40. component: () => import('../views/admin/live/train.vue'),
  41. },
  42. {
  43. path: '/admin/live/achieve',
  44. name: 'admin_live_achieve',
  45. meta: { title: '科技成果管理中心' },
  46. component: () => import('../views/admin/live/achieve.vue'),
  47. },
  48. ];
  49. const twoweb = [
  50. // 直播大厅
  51. {
  52. path: '/twoweb/live/index',
  53. name: 'twoweb_live_index',
  54. meta: { title: '直播大厅' },
  55. component: () => import('../views/twoweb/live/index.vue'),
  56. },
  57. {
  58. path: '/twoweb/achieveLive/apply',
  59. name: 'twoweb_achieveLive_apply',
  60. meta: { title: '直播大厅-申请参展', subSite: true },
  61. component: () => import('../views/twoweb/achieveLive/apply.vue'),
  62. },
  63. {
  64. path: '/twoweb/market/index',
  65. name: 'twoweb_market_index',
  66. meta: { title: '科技超市' },
  67. component: () => import('../views/twoweb/market/index.vue'),
  68. },
  69. {
  70. path: '/twoweb/market/list',
  71. name: 'twoweb_market_list',
  72. meta: { title: '科技超市' },
  73. component: () => import('../views/twoweb/market/list.vue'),
  74. },
  75. {
  76. path: '/twoweb/interflow/index',
  77. name: 'twoweb_interflow_index',
  78. meta: { title: '交流合作' },
  79. component: () => import('../views/twoweb/interflow/index.vue'),
  80. },
  81. {
  82. path: '/twoweb/interflow/list',
  83. name: 'twoweb_interflow_list',
  84. meta: { title: '交流合作' },
  85. component: () => import('../views/twoweb/interflow/list.vue'),
  86. },
  87. {
  88. path: '/twoweb/service/index',
  89. name: 'twoweb_service_index',
  90. meta: { title: '创新服务' },
  91. component: () => import('../views/twoweb/service/index.vue'),
  92. },
  93. {
  94. path: '/twoweb/service/list',
  95. name: 'twoweb_service_list',
  96. meta: { title: '创新服务' },
  97. component: () => import('../views/twoweb/service/list.vue'),
  98. },
  99. {
  100. path: '/twoweb/service/project',
  101. name: 'twoweb_service_project_index',
  102. meta: { title: '项目征集' },
  103. component: () => import('../views/twoweb/service/project/index.vue'),
  104. },
  105. {
  106. path: '/twoweb/service/question',
  107. name: 'twoweb_service_question_index',
  108. meta: { title: '调查问卷' },
  109. component: () => import('../views/twoweb/service/question/index.vue'),
  110. },
  111. {
  112. path: '/twoweb/service/question/detail',
  113. name: 'twoweb_service_question_detail',
  114. meta: { title: '调查问卷' },
  115. component: () => import('../views/twoweb/service/question/detail.vue'),
  116. },
  117. {
  118. path: '/twoweb/service/made/detail',
  119. meta: { title: '调查问卷' },
  120. component: () => import('../views/twoweb/service/made/detail.vue'),
  121. },
  122. {
  123. path: '/twoweb/service/helpCompany/detail',
  124. meta: { title: '调查问卷' },
  125. component: () => import('../views/twoweb/service/helpCompany/detail.vue'),
  126. },
  127. {
  128. path: '/twoweb/service/comDemand/detail',
  129. meta: { title: '调查问卷' },
  130. component: () => import('../views/twoweb/service/comDemand/detail.vue'),
  131. },
  132. {
  133. path: '/twoweb/service/product',
  134. name: 'twoweb_service_product_index',
  135. meta: { title: '信息发布' },
  136. component: () => import('../views/twoweb/service/product/index.vue'),
  137. },
  138. {
  139. path: '/twoweb/service/policy',
  140. name: 'twoweb_service_policy_index',
  141. meta: { title: '高企申报' },
  142. component: () => import('../views/twoweb/service/policy/index.vue'),
  143. },
  144. {
  145. path: '/twoweb/service/order',
  146. name: 'twoweb_service_order_index',
  147. meta: { title: '预约服务' },
  148. component: () => import('../views/twoweb/service/order/index.vue'),
  149. },
  150. {
  151. path: '/twoweb/universal/index',
  152. name: 'twoweb_universal_index',
  153. meta: { title: '科学普及' },
  154. component: () => import('../views/twoweb/universal/index.vue'),
  155. },
  156. {
  157. path: '/twoweb/universal/list',
  158. name: 'twoweb_universal_list',
  159. meta: { title: '科学普及' },
  160. component: () => import('../views/twoweb/universal/list.vue'),
  161. },
  162. // 2021-07-23
  163. {
  164. path: '/twoweb/channel/index',
  165. meta: { title: '科技频道' },
  166. component: () => import('../views/twoweb/channel/index.vue'),
  167. },
  168. ];
  169. Vue.use(VueRouter);
  170. const live = [
  171. {
  172. path: '/',
  173. name: 'index',
  174. meta: { title: '网站首页' },
  175. component: () => import('../views/index.vue'),
  176. },
  177. {
  178. path: '/login',
  179. name: 'login',
  180. meta: { title: '登录' },
  181. component: () => import('../views/login.vue'),
  182. },
  183. {
  184. path: '/register',
  185. name: 'register',
  186. meta: { title: '注册账号' },
  187. component: () => import('../views/register.vue'),
  188. },
  189. {
  190. path: '/agreement',
  191. name: 'agreement',
  192. meta: { title: '用户注册协议' },
  193. component: () => import('../views/agreement.vue'),
  194. },
  195. {
  196. path: '/channelLive/index',
  197. name: 'channelLive_index',
  198. meta: { title: '直播大厅-科技频道', subSite: true },
  199. component: () => import('../views/channelLive/index.vue'),
  200. },
  201. {
  202. path: '/trainLive/index',
  203. name: 'trainLive_index',
  204. meta: { title: '直播大厅-培训问诊', subSite: true },
  205. component: () => import('../views/trainLive/index.vue'),
  206. },
  207. {
  208. path: '/personalLive/index',
  209. name: 'personalLive_index',
  210. meta: { title: '直播大厅-人才对接', subSite: true },
  211. component: () => import('../views/personalLive/index.vue'),
  212. },
  213. {
  214. path: '/achieveLive/before',
  215. name: 'personalLive_before',
  216. meta: { title: '直播大厅-展会活动页', subSite: true },
  217. component: () => import('../views/achieveLive/before.vue'),
  218. },
  219. {
  220. path: '/achieveLive/detail',
  221. name: 'personalLive_detail',
  222. meta: { title: '直播大厅-展会详情', subSite: true },
  223. component: () => import('../views/achieveLive/detail.vue'),
  224. },
  225. {
  226. path: '/achieveLive/model/dataIndex',
  227. name: 'personalLive_model_dataIndex',
  228. meta: { title: '直播大厅-数据列表', subSite: true },
  229. component: () => import('../views/achieveLive/model/data-index.vue'),
  230. },
  231. {
  232. path: '/achieveLive/model/dataDetail',
  233. name: 'personalLive_model_dataDetail',
  234. meta: { title: '直播大厅-数据详情', subSite: true },
  235. component: () => import('../views/achieveLive/model/data-detail.vue'),
  236. },
  237. // 2021-06-07-twoweb
  238. {
  239. path: '/twoweb/achieveLive/before',
  240. name: 'twoweb_personalLive_before',
  241. meta: { title: '直播大厅-展会活动页', subSite: true },
  242. component: () => import('../views/twoweb/achieveLive/before.vue'),
  243. },
  244. {
  245. path: '/twoweb/achieveLive/detail',
  246. name: 'twoweb_personalLive_detail',
  247. meta: { title: '直播大厅-展会详情', subSite: true },
  248. component: () => import('../views/twoweb/achieveLive/detail.vue'),
  249. },
  250. {
  251. path: '/twoweb/achieveLive/model/dataIndex',
  252. name: 'twoweb_personalLive_model_dataIndex',
  253. meta: { title: '直播大厅-数据列表', subSite: true },
  254. component: () => import('../views/twoweb/achieveLive/model/data-index.vue'),
  255. },
  256. {
  257. path: '/twoweb/achieveLive/model/dataDetail',
  258. name: 'twoweb_personalLive_model_dataDetail',
  259. meta: { title: '直播大厅-数据详情', subSite: true },
  260. component: () => import('../views/twoweb/achieveLive/model/data-detail.vue'),
  261. },
  262. {
  263. path: '/twoweb/personalLive/index',
  264. name: 'twoweb_personalLive_index',
  265. meta: { title: '直播大厅-人才对接', subSite: true },
  266. component: () => import('../views/twoweb/personalLive/index.vue'),
  267. },
  268. {
  269. path: '/twoweb/trainLive/index',
  270. name: 'twoweb_trainLive_index',
  271. meta: { title: '直播大厅-培训问诊', subSite: true },
  272. component: () => import('../views/twoweb/trainLive/index.vue'),
  273. },
  274. {
  275. path: '/twoweb/channelLive/index',
  276. name: 'twoweb_channelLive_index',
  277. meta: { title: '直播大厅-科技频道', subSite: true },
  278. component: () => import('../views/twoweb/channelLive/index.vue'),
  279. },
  280. // 2021-07-22
  281. // 通化自定义展会详情
  282. {
  283. path: '/twoweb/achieveLiveTH/detail',
  284. meta: { title: '直播大厅-展会详情', subSite: true },
  285. component: () => import('../views/twoweb/achieveLiveTH/detail.vue'),
  286. },
  287. {
  288. path: '/twoweb/achieveLiveTH/model/dataIndex',
  289. meta: { title: '直播大厅-数据列表', subSite: true },
  290. component: () => import('../views/twoweb/achieveLiveTH/model/data-index.vue'),
  291. },
  292. {
  293. path: '/twoweb/achieveLiveTH/model/dataDetail',
  294. meta: { title: '直播大厅-数据详情', subSite: true },
  295. component: () => import('../views/twoweb/achieveLiveTH/model/data-detail.vue'),
  296. },
  297. {
  298. path: '/website',
  299. name: 'website',
  300. component: () => import('../views/website.vue'),
  301. children: [
  302. // 新闻资讯
  303. {
  304. path: '/news/index',
  305. name: 'news_index',
  306. meta: { title: '新闻资讯', subSite: true },
  307. component: () => import('../views/news/index.vue'),
  308. },
  309. // 科技超市
  310. {
  311. path: '/market/index',
  312. name: 'market_index',
  313. meta: { title: '科技超市', subSite: true },
  314. component: () => import('../views/market/index.vue'),
  315. },
  316. ...list,
  317. // 直播大厅
  318. {
  319. path: '/live/index',
  320. name: 'live_index',
  321. meta: { title: '直播大厅', subSite: true },
  322. component: () => import('../views/live/index.vue'),
  323. },
  324. {
  325. path: '/achieveLive/apply',
  326. name: 'achieveLive_apply',
  327. meta: { title: '直播大厅-申请参展', subSite: true },
  328. component: () => import('../views/achieveLive/apply.vue'),
  329. },
  330. // 数据动态
  331. {
  332. path: '/dynamic/index',
  333. name: 'dynamic_index',
  334. meta: { title: '数据动态', subSite: true },
  335. component: () => import('../views/dynamic/index.vue'),
  336. },
  337. // 技术交流
  338. {
  339. path: '/techolchat/index',
  340. name: 'techolchat_index',
  341. meta: { title: '技术交流', subSite: true },
  342. component: () => import('../views/techolchat/index.vue'),
  343. },
  344. {
  345. path: '/techolchat/product',
  346. name: 'techolchat_product',
  347. meta: { title: '信息发布', subSite: true },
  348. component: () => import('../views/techolchat/product.vue'),
  349. },
  350. {
  351. path: '/userCenter',
  352. name: 'userCenter',
  353. meta: { title: '管理中心' },
  354. component: () => import('../views/userCenter/index.vue'),
  355. },
  356. ...admin,
  357. // 问卷调查
  358. {
  359. path: '/questionnaire/index',
  360. name: 'questionnaire',
  361. meta: { title: '问卷调查' },
  362. component: () => import('../views/questionnaire/index.vue'),
  363. },
  364. // 答问卷调查
  365. {
  366. path: '/questionnaire/answer',
  367. name: 'questionnaire',
  368. meta: { title: '完成问卷调查' },
  369. component: () => import('../views/questionnaire/detail.vue'),
  370. },
  371. // 科技创新能力评价
  372. {
  373. path: '/newteck/index',
  374. name: 'newteck',
  375. meta: { title: '科技创新能力评价' },
  376. component: () => import('../views/newTeck/index.vue'),
  377. },
  378. ...twoweb,
  379. ],
  380. },
  381. ];
  382. const routes = [...live];
  383. const router = new VueRouter({
  384. mode: 'history',
  385. base: process.env.VUE_APP_ROUTER,
  386. routes,
  387. });
  388. router.beforeEach((to, from, next) => {
  389. document.title = `${to.meta.title} `;
  390. const token = localStorage.getItem('token');
  391. if (to.path == '/userCenter') {
  392. if (!token) {
  393. next('/login');
  394. } else {
  395. let user = jwt.decode(token);
  396. user.type = '4';
  397. store.commit('setUser', user, { root: true });
  398. next();
  399. }
  400. } else {
  401. let user = jwt.decode(token);
  402. store.commit('setUser', user, { root: true });
  403. next();
  404. }
  405. });
  406. export default router;