index.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387
  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: '/news/list',
  30. name: 'news_list',
  31. meta: { title: '新闻咨询-列表页' },
  32. component: () => import('../views/news/list.vue'),
  33. },
  34. {
  35. path: '/service/index',
  36. name: 'service_index',
  37. meta: { title: '科技服务' },
  38. component: () => import('../views/service/index.vue'),
  39. },
  40. {
  41. path: '/service/policy',
  42. name: 'service_policy',
  43. meta: { title: '科技服务-高企政策服务' },
  44. component: () => import('../views/service/policy.vue'),
  45. },
  46. {
  47. path: '/service/ticket',
  48. name: 'service_ticket',
  49. meta: { title: '科技服务-创新券服务' },
  50. component: () => import('../views/service/ticket.vue'),
  51. },
  52. {
  53. path: '/service/register',
  54. name: 'service_register',
  55. meta: { title: '用户注册' },
  56. component: () => import('../views/service/register.vue'),
  57. },
  58. {
  59. path: '/market/index',
  60. name: 'market_index',
  61. meta: { title: '技术超市' },
  62. component: () => import('../views/market/index.vue'),
  63. },
  64. {
  65. path: '/market/list',
  66. name: 'market_list',
  67. meta: { title: '技术超市-列表页' },
  68. component: () => import('../views/market/list.vue'),
  69. },
  70. {
  71. path: '/train/index',
  72. name: 'train_index',
  73. meta: { title: '宣传培训' },
  74. component: () => import('../views/train/index.vue'),
  75. },
  76. {
  77. path: '/dynamic/index',
  78. name: 'dynamic_index',
  79. meta: { title: '数据动态' },
  80. component: () => import('../views/dynamic/index.vue'),
  81. },
  82. ],
  83. },
  84. // 管理登录
  85. {
  86. path: '/login',
  87. name: 'login',
  88. meta: { title: '管理登录' },
  89. component: () => import('../views/login.vue'),
  90. },
  91. // 宣传培训详情页
  92. {
  93. path: '/train/detail',
  94. name: 'train_detail',
  95. meta: { title: '宣传培训-详情页' },
  96. component: () => import('../views/train/detail.vue'),
  97. },
  98. {
  99. path: '/adminCenter/homeIndex',
  100. name: 'adminCenter',
  101. component: () => import('../views/adminCenter/index.vue'),
  102. children: [
  103. {
  104. path: '/adminCenter/homeIndex',
  105. name: 'admin_homeIndex',
  106. meta: { title: '首页' },
  107. component: () => import('../views/adminCenter/homeIndex/index.vue'),
  108. },
  109. {
  110. path: '/adminCenter/test',
  111. name: 'admin_test',
  112. meta: { title: '测试页面' },
  113. component: () => import('../views/adminCenter/test/index.vue'),
  114. },
  115. {
  116. path: '/adminCenter/news',
  117. name: 'admin_news',
  118. meta: { title: '新闻管理' },
  119. component: () => import('../views/adminCenter/news/index.vue'),
  120. },
  121. {
  122. path: '/adminCenter/news/detail',
  123. name: 'admin_news_detail',
  124. meta: { title: '新闻管理' },
  125. component: () => import('../views/adminCenter/news/detail.vue'),
  126. },
  127. {
  128. path: '/adminCenter/openinfo',
  129. name: 'admin_openinfo',
  130. meta: { title: '信息公开管理' },
  131. component: () => import('../views/adminCenter/openinfo/index.vue'),
  132. },
  133. {
  134. path: '/adminCenter/openinfo/detail',
  135. name: 'admin_openinfo_detail',
  136. meta: { title: '信息公开信息管理' },
  137. component: () => import('../views/adminCenter/openinfo/detail.vue'),
  138. },
  139. {
  140. path: '/adminCenter/product',
  141. name: 'admin_product',
  142. meta: { title: '科技成果' },
  143. component: () => import('../views/adminCenter/product/index.vue'),
  144. },
  145. {
  146. path: '/adminCenter/product/detail',
  147. name: 'admin_product_detail',
  148. meta: { title: '科技成果' },
  149. component: () => import('../views/adminCenter/product/detail.vue'),
  150. },
  151. {
  152. path: '/adminCenter/patent',
  153. name: 'admin_patent',
  154. meta: { title: '专利管理' },
  155. component: () => import('../views/adminCenter/patent/index.vue'),
  156. },
  157. {
  158. path: '/adminCenter/patent/detail',
  159. name: 'admin_patent_detail',
  160. meta: { title: '专利管理' },
  161. component: () => import('../views/adminCenter/patent/detail.vue'),
  162. },
  163. {
  164. path: '/adminCenter/roadShow',
  165. name: 'admin_road_show',
  166. meta: { title: '路演管理' },
  167. component: () => import('../views/adminCenter/road_show/index.vue'),
  168. },
  169. {
  170. path: '/adminCenter/roadShow/detail',
  171. name: 'admin_road_show_detail',
  172. meta: { title: '路演管理' },
  173. component: () => import('../views/adminCenter/road_show/detail.vue'),
  174. },
  175. {
  176. path: '/adminCenter/expert',
  177. name: 'admin_expert',
  178. meta: { title: '专家管理' },
  179. component: () => import('../views/adminCenter/expert/index.vue'),
  180. },
  181. {
  182. path: '/adminCenter/expert/detail',
  183. name: 'admin_expert_detail',
  184. meta: { title: '专家管理' },
  185. component: () => import('../views/adminCenter/expert/detail.vue'),
  186. },
  187. {
  188. path: '/adminCenter/organization',
  189. name: 'admin_organization',
  190. meta: { title: '企业管理' },
  191. component: () => import('../views/adminCenter/organization/index.vue'),
  192. },
  193. {
  194. path: '/adminCenter/organization/detail',
  195. name: 'admin_organization_detail',
  196. meta: { title: '企业管理' },
  197. component: () => import('../views/adminCenter/organization/detail.vue'),
  198. },
  199. {
  200. path: '/adminCenter/mechanism',
  201. name: 'admin_mechanism',
  202. meta: { title: '机构管理' },
  203. component: () => import('../views/adminCenter/mechanism/index.vue'),
  204. },
  205. {
  206. path: '/adminCenter/mechanism/detail',
  207. name: 'admin_mechanism_detail',
  208. meta: { title: '机构管理' },
  209. component: () => import('../views/adminCenter/mechanism/detail.vue'),
  210. },
  211. {
  212. path: '/adminCenter/online',
  213. name: 'admin_online',
  214. meta: { title: '线上管理' },
  215. component: () => import('../views/adminCenter/online/index.vue'),
  216. },
  217. {
  218. path: '/adminCenter/online/detail',
  219. name: 'admin_online_detail',
  220. meta: { title: '线上管理' },
  221. component: () => import('../views/adminCenter/online/detail.vue'),
  222. },
  223. {
  224. path: '/adminCenter/online/file',
  225. name: 'admin_online_file',
  226. meta: { title: '线上管理' },
  227. component: () => import('../views/adminCenter/online/file.vue'),
  228. },
  229. {
  230. path: '/adminCenter/policy',
  231. name: 'admin_policy',
  232. meta: { title: '高企政策服务管理' },
  233. component: () => import('../views/adminCenter/policy/index.vue'),
  234. },
  235. {
  236. path: '/adminCenter/policy/detail',
  237. name: 'admin_online_detail',
  238. meta: { title: '高企政策服务管理' },
  239. component: () => import('../views/adminCenter/policy/detail.vue'),
  240. },
  241. {
  242. path: '/adminCenter/ticket',
  243. name: 'admin_ticket',
  244. meta: { title: '创新劵服务管理' },
  245. component: () => import('../views/adminCenter/ticket/index.vue'),
  246. },
  247. {
  248. path: '/adminCenter/ticket/detail',
  249. name: 'admin_ticket_detail',
  250. meta: { title: '创新劵服务-信息管理' },
  251. component: () => import('../views/adminCenter/ticket/detail.vue'),
  252. },
  253. {
  254. path: '/adminCenter/ticket/toGrant',
  255. name: 'admin_ticket_toGrant',
  256. meta: { title: '创新劵发放' },
  257. component: () => import('../views/adminCenter/ticket/toGrant.vue'),
  258. },
  259. // 企业信息
  260. {
  261. path: '/adminCenter/company/basic',
  262. name: 'company_basic_index',
  263. meta: { title: '企业基本信息' },
  264. component: () => import('../views/adminCenter/company/basic/index.vue'),
  265. },
  266. {
  267. path: '/adminCenter/company/product',
  268. name: 'company_product_index',
  269. meta: { title: '技术超市' },
  270. component: () => import('../views/adminCenter/company/product/index.vue'),
  271. },
  272. {
  273. path: '/adminCenter/company/product/detail',
  274. name: 'company_product_index',
  275. meta: { title: '技术超市-信息管理' },
  276. component: () => import('../views/adminCenter/company/product/detail.vue'),
  277. },
  278. {
  279. path: '/adminCenter/company/subsidy',
  280. name: 'company_subsidy_index',
  281. meta: { title: '研发补贴' },
  282. component: () => import('../views/adminCenter/company/subsidy/index.vue'),
  283. },
  284. {
  285. path: '/adminCenter/company/subsidy/detail',
  286. name: 'company_subsidy_detail',
  287. meta: { title: '研发补贴-信息管理' },
  288. component: () => import('../views/adminCenter/company/subsidy/detail.vue'),
  289. },
  290. {
  291. path: '/adminCenter/company/reward',
  292. name: 'company_reward_index',
  293. meta: { title: '奖励兑现' },
  294. component: () => import('../views/adminCenter/company/reward/index.vue'),
  295. },
  296. {
  297. path: '/adminCenter/company/reward/detail',
  298. name: 'company_reward_detail',
  299. meta: { title: '奖励兑现-信息管理' },
  300. component: () => import('../views/adminCenter/company/reward/detail.vue'),
  301. },
  302. {
  303. path: '/adminCenter/company/cognizance',
  304. name: 'company_cognizance_index',
  305. meta: { title: '高企认定' },
  306. component: () => import('../views/adminCenter/company/cognizance/index.vue'),
  307. },
  308. {
  309. path: '/adminCenter/company/cognizance/detail',
  310. name: 'company_cognizance_detail',
  311. meta: { title: '高企认定-信息管理' },
  312. component: () => import('../views/adminCenter/company/cognizance/detail.vue'),
  313. },
  314. {
  315. path: '/adminCenter/company/cognizance/info',
  316. name: 'company_cognizance_info',
  317. meta: { title: '高企认定-查看审核' },
  318. component: () => import('../views/adminCenter/company/cognizance/info.vue'),
  319. },
  320. // 中介机构
  321. {
  322. path: '/adminCenter/inter/basic',
  323. name: 'inter_basic_index',
  324. meta: { title: '机构基本信息' },
  325. component: () => import('../views/adminCenter/inter/basic/index.vue'),
  326. },
  327. {
  328. path: '/adminCenter/inter/ticket',
  329. name: 'inter_ticket_index',
  330. meta: { title: '高企认证审核管理' },
  331. component: () => import('../views/adminCenter/inter/ticket/index.vue'),
  332. },
  333. {
  334. path: '/adminCenter/inter/ticket/detail',
  335. name: 'inter_ticket_detail',
  336. meta: { title: '高企认证-信息审核管理' },
  337. component: () => import('../views/adminCenter/inter/ticket/detail.vue'),
  338. },
  339. // 专家用户
  340. {
  341. path: '/adminCenter/experts/basic',
  342. name: 'experts_basic_index',
  343. meta: { title: '专家基本信息' },
  344. component: () => import('../views/adminCenter/experts/basic/index.vue'),
  345. },
  346. {
  347. path: '/adminCenter/experts/product',
  348. name: 'experts_product_index',
  349. meta: { title: '技术超市' },
  350. component: () => import('../views/adminCenter/experts/product/index.vue'),
  351. },
  352. {
  353. path: '/adminCenter/experts/product/detail',
  354. name: 'experts_product_detail',
  355. meta: { title: '技术超市-信息管理' },
  356. component: () => import('../views/adminCenter/experts/product/detail.vue'),
  357. },
  358. ],
  359. },
  360. ];
  361. const routes = [...web];
  362. const router = new VueRouter({
  363. mode: 'history',
  364. base: process.env.VUE_APP_ROUTER,
  365. routes,
  366. });
  367. router.beforeEach((to, from, next) => {
  368. document.title = `${to.meta.title} `;
  369. const token = localStorage.getItem('token');
  370. if (to.path == '/adminCenter/homeIndex') {
  371. if (!token) {
  372. next('/login');
  373. } else {
  374. let user = jwt.decode(token);
  375. store.commit('setUser', user, { root: true });
  376. next();
  377. }
  378. } else {
  379. let user = jwt.decode(token);
  380. store.commit('setUser', user, { root: true });
  381. next();
  382. }
  383. });
  384. export default router;