index.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478
  1. import Vue from 'vue'
  2. import Router from 'vue-router'
  3. import store from '../store/index'
  4. import request from '@/request'
  5. import { Notification, MessageBox, Message } from 'element-ui'
  6. Vue.use(Router)
  7. let bankAdmin = ['/person-center/bank-record','/person-center/my-bank/index','/person-center/my-collect','/person-center/my-wrong','/person-center/my-bank/bank-detail/','/person-center/my-bank/bank-statistics/','/person-center/my-bank/bank-explain-detail/','/bank-exam-continue/','/bank-exam/','/subject/collect-bank/','/bank-exam-explain/','/bank-report/'];
  8. let canToBank = null;
  9. let courseAdmin = ['/my-course-detail/','/course-exam/']
  10. let canToCourse = null;
  11. const router = new Router({
  12. mode:'history',
  13. scrollBehavior: () => ({ y: 0 }),
  14. routes: [
  15. {
  16. path: '*',
  17. redirect: '/home',
  18. component: resolve => require(['@/pages/home/index'],resolve)
  19. },
  20. {
  21. path: '/home',
  22. name: '首页',
  23. component: resolve => require(['@/pages/home/index'],resolve)
  24. },
  25. {
  26. path: '/login',
  27. name: '登录',
  28. component: resolve => require(['@/pages/login/index'],resolve)
  29. },
  30. {
  31. path: '/about',
  32. name: '走进祥粤',
  33. component: resolve => require(['@/pages/about/index'],resolve)
  34. },
  35. {
  36. path: '/cart',
  37. name: '购物车',
  38. component: resolve => require(['@/pages/cart/index'],resolve)
  39. },
  40. {
  41. path: '/payment',
  42. name: '支付',
  43. component: resolve => require(['@/pages/payment/index'],resolve)
  44. },
  45. {
  46. path: '/payment-success',
  47. name: '支付成功',
  48. component: resolve => require(['@/pages/payment-success/index'],resolve)
  49. },
  50. {
  51. path: '/course-list',
  52. name: '课程列表',
  53. component: resolve => require(['@/pages/course-list/index'],resolve)
  54. },
  55. {
  56. path: '/bank-list',
  57. name: '题库列表',
  58. component: resolve => require(['@/pages/bank-list/index'],resolve)
  59. },
  60. {
  61. path: '/course-detail/:goodsId',
  62. name: '课程详情',
  63. component: resolve => require(['@/pages/goods-detail/course-detail'],resolve)
  64. },
  65. {
  66. path: '/bank-detail/:goodsId',
  67. name: '题库详情',
  68. component: resolve => require(['@/pages/goods-detail/bank-detail'],resolve)
  69. },
  70. {
  71. path: '/my-course-detail/:goodsId',
  72. name: '课程详情',
  73. component: resolve => require(['@/pages/course-detail/index'],resolve)
  74. },
  75. {
  76. path: '/course-report',
  77. name: '试卷报告',
  78. component: resolve => require(['@/pages/course-report/index'],resolve)
  79. },
  80. {
  81. path: '/bank-report/:goodsId',
  82. name: '试卷报告',
  83. component: resolve => require(['@/pages/bank-report/index'],resolve)
  84. },
  85. {
  86. path: '/course-exam/:goodsId',
  87. name: '做题',
  88. component: resolve => require(['@/pages/course-exam/index'],resolve)
  89. },
  90. {
  91. path: '/bank-exam/:goodsId',
  92. name: '做题',
  93. component: resolve => require(['@/pages/bank-exam/index'],resolve)
  94. },
  95. {
  96. path: '/bank-exam-continue/:goodsId',
  97. name: '继续做题',
  98. component: resolve => require(['@/pages/bank-exam-continue/index'],resolve)
  99. },
  100. {
  101. path: '/bank-exam-all-explain/:recordId',
  102. name: '全部解析',
  103. component: resolve => require(['@/pages/bank-exam-all-explain/index'],resolve)
  104. },
  105. {
  106. path: '/bank-exam-wrong-explain/:recordId',
  107. name: '错题解析',
  108. component: resolve => require(['@/pages/bank-exam-wrong-explain/index'],resolve)
  109. },
  110. {
  111. path: '/bank-exam-explain/:goodsId',
  112. name: '题目解析',
  113. component: resolve => require(['@/pages/bank-exam-explain/index'],resolve)
  114. },
  115. {
  116. path: '/subject/wrong-type-bank/:type',
  117. name: '错题',
  118. component: resolve => require(['@/pages/subject/wrong-type-bank'],resolve)
  119. },
  120. {
  121. path: '/subject/wrong-bank/:examId',
  122. name: '错题',
  123. component: resolve => require(['@/pages/subject/wrong-bank'],resolve)
  124. },
  125. {
  126. path: '/subject/collect-type-bank/:type',
  127. name: '收藏',
  128. component: resolve => require(['@/pages/subject/collect-type-bank'],resolve)
  129. },
  130. {
  131. path: '/subject/collect-bank/:examId',
  132. name: '收藏',
  133. component: resolve => require(['@/pages/subject/collect-bank'],resolve)
  134. },
  135. {
  136. path: '/person-center',
  137. name: '个人中心',
  138. component: resolve => require(['@/pages/person-center/index'],resolve),
  139. beforeEnter:(to,from,next) => {
  140. let token = window.localStorage.getItem('token');
  141. if(token == null || token == '' || token === undefined){
  142. next('/login')
  143. }else{
  144. next();
  145. }
  146. },
  147. children:[
  148. {
  149. path: '/',
  150. // redirect: 'my-course',
  151. },
  152. {
  153. path: 'my-course',
  154. component: resolve => require(['@/pages/person-center/my-course/index'],resolve),
  155. name: '我的课程'
  156. },
  157. {
  158. path: 'play-record',
  159. component: resolve => require(['@/pages/person-center/play-record/index'],resolve),
  160. name: '播放记录'
  161. },
  162. {
  163. path: 'my-bank',
  164. component: resolve => require(['@/pages/person-center/my-bank/index'],resolve),
  165. name:'我的题库',
  166. children:[
  167. {
  168. path: '/',
  169. redirect: 'index',
  170. },
  171. {
  172. path: 'index',
  173. component: resolve => require(['@/pages/person-center/my-bank/index/index'],resolve),
  174. name: '我的题库',
  175. },
  176. {
  177. path: 'bank-detail/:goodsId',
  178. component: resolve => require(['@/pages/person-center/my-bank/bank-detail/index'],resolve),
  179. name: '题库详情'
  180. },
  181. {
  182. path: 'bank-statistics/:goodsId',
  183. component: resolve => require(['@/pages/person-center/my-bank/bank-statistics/index'],resolve),
  184. name: '做题统计'
  185. },
  186. {
  187. path: 'bank-explain-detail/:goodsId',
  188. component: resolve => require(['@/pages/person-center/my-bank/bank-explain-detail/index'],resolve),
  189. name: '详情'
  190. },
  191. ]
  192. },
  193. {
  194. path: 'bank-record',
  195. component: resolve => require(['@/pages/person-center/bank-record/index'],resolve),
  196. name: '做题记录'
  197. },
  198. {
  199. path: 'my-collect',
  200. component: resolve => require(['@/pages/person-center/my-collect/index'],resolve),
  201. name: '收藏集'
  202. },
  203. {
  204. path: 'my-wrong',
  205. component: resolve => require(['@/pages/person-center/my-wrong/index'],resolve),
  206. name: '错题集'
  207. },
  208. {
  209. path: 'record-list/:goodsId',
  210. component: resolve => require(['@/pages/person-center/bank-record/record-list/index'],resolve),
  211. name: '更多记录'
  212. },
  213. {
  214. path: 'my-order',
  215. component: resolve => require(['@/pages/person-center/my-order/index'],resolve),
  216. name: '我的订单'
  217. },
  218. {
  219. path: 'my-examination',
  220. component: resolve => require(['@/pages/person-center/my-examination/index'],resolve),
  221. name: '我的考试'
  222. },
  223. {
  224. path: 'my-message',
  225. component: resolve => require(['@/pages/person-center/my-message/index'],resolve),
  226. name: '我的消息'
  227. },
  228. {
  229. path: 'my-info',
  230. component: resolve => require(['@/pages/person-center/my-info/index'],resolve),
  231. name: '我的资料'
  232. },
  233. {
  234. path: 'my-invoice',
  235. name: '我的发票',
  236. component: resolve => require(['@/pages/person-center/my-invoice/index'],resolve),
  237. children:[
  238. {
  239. path: '/',
  240. redirect: 'index',
  241. },
  242. {
  243. path: 'index',
  244. component: resolve => require(['@/pages/person-center/my-invoice/index/index'],resolve),
  245. name: '我的发票',
  246. },
  247. {
  248. path: 'add',
  249. component: resolve => require(['@/pages/person-center/my-invoice/add/index'],resolve),
  250. name: '申请发票',
  251. },
  252. ]
  253. },
  254. {
  255. path: 'my-classhour',
  256. component: resolve => require(['@/pages/person-center/my-classhour/index'],resolve),
  257. name: '我的学时',
  258. children:[
  259. {
  260. path: '/',
  261. redirect: 'index',
  262. },
  263. {
  264. path: 'index',
  265. component: resolve => require(['@/pages/person-center/my-classhour/index/index'],resolve),
  266. name: '我的学时',
  267. },
  268. {
  269. path: 'appointment',
  270. component: resolve => require(['@/pages/person-center/my-classhour/appointment/index'],resolve),
  271. name: '预约考试',
  272. },
  273. {
  274. path: 'appointment-add',
  275. component: resolve => require(['@/pages/person-center/my-classhour/appointment-add/index'],resolve),
  276. name: '预约考试',
  277. },
  278. {
  279. path: 'appointment-add-kp',
  280. component: resolve => require(['@/pages/person-center/my-classhour/appointment-add-kp/index'],resolve),
  281. name: '预约考试',
  282. }
  283. ]
  284. },
  285. ]
  286. }
  287. ]
  288. })
  289. const originalPush = Router.prototype.push
  290. Router.prototype.push = function push(location) {
  291. return originalPush.call(this, location).catch((err) => err)
  292. }
  293. router.beforeEach((to,from,next) => {
  294. console.log(to,'to')
  295. console.log(from,'from')
  296. if(to.path === '/login'){
  297. next();
  298. }else{
  299. let token = window.localStorage.getItem('token');
  300. //进入页面有token获取用户信息
  301. if(token){
  302. store.token = token;
  303. if(!store.state.userInfo) {
  304. //获取用户信息
  305. store.dispatch('getUserInfo')
  306. }
  307. // //题库页面要检测是否需要锁定
  308. // let isBankLock = bankAdmin.some(item => {
  309. // return to.path.indexOf(item) != -1
  310. // })
  311. // console.log(isBankLock,'isBankLock')
  312. // if(isBankLock) {
  313. // //没有执行定时器,开启锁定
  314. // if(!canToBank) {
  315. // request
  316. // .lockLockStatus({
  317. // action: "bank",
  318. // })
  319. // .then((res) => {
  320. // //有其他端在操作,不能学习
  321. // Message({
  322. // type: "warning",
  323. // message: res.msg,
  324. // });
  325. // if(from.path=='/') {
  326. // next('/')
  327. // }
  328. // }).catch(err => {
  329. // //可以学习,开启锁定
  330. // canToBank = 1;
  331. // request.lockLockAction({
  332. // action:'bank'
  333. // }).then(res => {
  334. // })
  335. // canToBank = setInterval(() => {
  336. // request.lockLockAction({
  337. // action:'bank'
  338. // }).then(res => {
  339. // })
  340. // }, 10000);
  341. // next()
  342. // })
  343. // return;
  344. // } else {
  345. // //正在执行定时器,可以直接进入
  346. // next()
  347. // }
  348. // return;
  349. // } else {
  350. // //从题库页面离开删除锁定
  351. // let isLeaveBank = bankAdmin.some(item => {
  352. // return from.path.indexOf(item) != -1
  353. // })
  354. // if(isLeaveBank) {
  355. // clearInterval(canToBank)
  356. // canToBank = null;
  357. // request.lockDelLock({
  358. // action:'bank'
  359. // }).then(res => {
  360. // })
  361. // }
  362. // }
  363. // let isCourseLock = courseAdmin.some(item => {
  364. // return to.path.indexOf(item) != -1
  365. // })
  366. // console.log(isCourseLock,'isCourseLock')
  367. // if(isCourseLock) {
  368. // //没有执行定时器,开启锁定
  369. // if(!canToCourse) {
  370. // request.goodsDetail(to.params.goodsId).then(res => {
  371. // //继续教育锁定
  372. // if(res.data.educationName == '继续教育') {
  373. // request
  374. // .lockLockStatus({
  375. // action: "jxjy",
  376. // })
  377. // .then((res) => {
  378. // //有其他端在操作,不能学习
  379. // Message({
  380. // type: "warning",
  381. // message: res.msg,
  382. // });
  383. // if(from.path=='/') {
  384. // next('/')
  385. // }
  386. // }).catch(err => {
  387. // //可以学习,开启锁定
  388. // canToCourse = 1;
  389. // request.lockLockAction({
  390. // action:'jxjy'
  391. // }).then(res => {
  392. // })
  393. // canToCourse = setInterval(() => {
  394. // request.lockLockAction({
  395. // action:'jxjy'
  396. // }).then(res => {
  397. // })
  398. // }, 10000);
  399. // next()
  400. // })
  401. // } else {
  402. // next()
  403. // }
  404. // })
  405. // return;
  406. // } else {
  407. // //正在执行定时器,可以直接进入
  408. // next()
  409. // }
  410. // return;
  411. // } else {
  412. // //非题库页面删除锁定
  413. // let isLeaveCouese = courseAdmin.some(item => {
  414. // return from.path.indexOf(item) != -1
  415. // })
  416. // if(isLeaveCouese) {
  417. // clearInterval(canToCourse)
  418. // canToCourse = null;
  419. // request.lockDelLock({
  420. // action:'jxjy'
  421. // }).then(res => {
  422. // })
  423. // }
  424. // }
  425. next()
  426. } else {
  427. next()
  428. }
  429. }
  430. })
  431. export default router;