index.js 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878
  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. import tools from '../common/tools'
  7. Vue.use(Router)
  8. let bankAdmin = ['/person-center/bank-record', '/person-center/my-bank/index', '/person-center/free-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/', '/person-center/free-bank/bank-detail/', '/person-center/free-bank/bank-statistics/', '/person-center/free-bank/bank-explain-detail/', '/bank-exam-continue/', '/bank-exam/', '/subject/collect-bank/', '/bank-exam-explain/', '/bank-report/'];
  9. let canToBank = null;
  10. let courseAdmin = ['/my-course-detail/', '/course-exam/']
  11. let canToCourse = null;
  12. const signLoginPage = ['/my-course-detail', '/my-bank', '/my-live']
  13. const name = process.env.TENANT_NANE
  14. const router = new Router({
  15. mode: 'history',
  16. scrollBehavior: () => ({ y: 0 }),
  17. routes: [
  18. {
  19. path: '*',
  20. redirect: '/home',
  21. component: resolve => require(['@/pages/home/index'], resolve)
  22. },
  23. {
  24. path: '/refresh',
  25. name: '刷新页',
  26. component: resolve => require(['@/pages/refresh'], resolve),
  27. },
  28. {
  29. path: '/home',
  30. name: '首页',
  31. component: resolve => require(['@/pages/home/index'], resolve),
  32. meta: {
  33. title: '中正云学堂-建造师造价师在线教育培训平台报名报考',
  34. content: {
  35. keywords: '中正云学堂-一级建造师,二级建造师,造价工程师,一级消防工程师,BIM,在线教育,职业教育,报考条件,报名时间,建造师注册,建造工程师',
  36. description: '中正云学堂-职业教育一站式学习平台,专注一建,二建,造价工程师,一级消防工程师,BIM等工程师技能知识培训服务热线:020-87085982'
  37. }
  38. }
  39. },
  40. {
  41. path: '/login',
  42. name: '登录',
  43. component: resolve => require(['@/pages/login/index'], resolve),
  44. meta: {
  45. title: '中正云学堂-建造师造价师在线教育培训平台报名报考',
  46. content: {
  47. keywords: '中正云学堂-一级建造师,二级建造师,造价工程师,一级消防工程师,BIM,在线教育,职业教育,报考条件,报名时间,建造师注册,建造工程师',
  48. description: '中正云学堂-职业教育一站式学习平台,专注一建,二建,造价工程师,一级消防工程师,BIM等工程师技能知识培训服务热线:020-87085982'
  49. }
  50. }
  51. },
  52. {
  53. path: '/about',
  54. name: '走进中正',
  55. component: resolve => require(['@/pages/about/index'], resolve),
  56. meta: {
  57. title: '中正云学堂-建造师造价师在线教育培训报名报考平台',
  58. content: {
  59. keywords: '中正云学堂-建造师造价师在线教育培训平台报名报考',
  60. description: '中正云学堂-建造师造价师在线教育培训平台报名报考'
  61. }
  62. }
  63. },
  64. {
  65. path: '/cart',
  66. name: '购物车',
  67. component: resolve => require(['@/pages/cart/index'], resolve),
  68. },
  69. {
  70. path: '/payment',
  71. name: '支付',
  72. component: resolve => require(['@/pages/payment/index'], resolve),
  73. meta: {
  74. title: '中正云学堂-建造师造价师在线教育培训平台报名报考',
  75. content: {
  76. keywords: '中正云学堂-一级建造师,二级建造师,造价工程师,一级消防工程师,BIM,在线教育,职业教育,报考条件,报名时间,建造师注册,建造工程师',
  77. description: '中正云学堂-职业教育一站式学习平台,专注一建,二建,造价工程师,一级消防工程师,BIM等工程师技能知识培训服务热线:020-87085982'
  78. }
  79. }
  80. },
  81. {
  82. path: '/payment-success',
  83. name: '支付成功',
  84. component: resolve => require(['@/pages/payment-success/index'], resolve),
  85. meta: {
  86. title: '中正云学堂-建造师造价师在线教育培训平台报名报考',
  87. content: {
  88. keywords: '中正云学堂-一级建造师,二级建造师,造价工程师,一级消防工程师,BIM,在线教育,职业教育,报考条件,报名时间,建造师注册,建造工程师',
  89. description: '中正云学堂-职业教育一站式学习平台,专注一建,二建,造价工程师,一级消防工程师,BIM等工程师技能知识培训服务热线:020-87085982'
  90. }
  91. }
  92. },
  93. {
  94. path: '/course-list',
  95. name: '课程列表',
  96. component: resolve => require(['@/pages/course-list/index'], resolve),
  97. meta: {
  98. title: '中正云学堂-一二级建造师、工程师、建筑师视频课程、免费直播课',
  99. content: {
  100. keywords: '中正云学堂-一级建造师视频课件,二级建造师视频课件,建筑师工程师学习视频课程',
  101. description: '中正云学堂-提供一二级建造师视频学习、免费直播公开课 ,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料。'
  102. }
  103. }
  104. },
  105. {
  106. path: '/bank-list',
  107. name: '题库列表',
  108. component: resolve => require(['@/pages/bank-list/index'], resolve),
  109. meta: {
  110. title: '中正云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
  111. content: {
  112. keywords: '中正云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
  113. description: '中正云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
  114. }
  115. }
  116. },
  117. {
  118. path: '/live-list',
  119. name: '直播列表',
  120. component: resolve => require(['@/pages/live-list/index'], resolve),
  121. meta: {
  122. title: '中正云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
  123. content: {
  124. keywords: '中正云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
  125. description: '中正云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
  126. }
  127. }
  128. },
  129. {
  130. path: '/course-detail/:goodsId',
  131. name: '课程详情',
  132. component: resolve => require(['@/pages/goods-detail/course-detail'], resolve),
  133. meta: {
  134. title: '中正云学堂-一二级建造师、工程师、建筑师视频课程、免费直播课',
  135. content: {
  136. keywords: '中正云学堂-一级建造师视频课件,二级建造师视频课件,建筑师工程师学习视频课程',
  137. description: '中正云学堂-提供一二级建造师视频学习、免费直播公开课 ,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料。'
  138. }
  139. }
  140. },
  141. {
  142. path: '/bank-detail/:goodsId',
  143. name: '题库详情',
  144. component: resolve => require(['@/pages/goods-detail/bank-detail'], resolve),
  145. meta: {
  146. title: '中正云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
  147. content: {
  148. keywords: '中正云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
  149. description: '中正云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
  150. }
  151. }
  152. },
  153. {
  154. path: '/live-detail/:goodsId',
  155. name: '直播详情',
  156. component: resolve => require(['@/pages/goods-detail/live-detail'], resolve),
  157. meta: {
  158. title: '中正云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
  159. content: {
  160. keywords: '中正云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
  161. description: '中正云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
  162. }
  163. }
  164. },
  165. {
  166. path: '/my-course-detail/:goodsId',
  167. name: '课程详情',
  168. component: resolve => require(['@/pages/course-detail/index'], resolve),
  169. meta: {
  170. title: '中正云学堂-一二级建造师、工程师、建筑师视频课程、免费直播课',
  171. content: {
  172. keywords: '中正云学堂-一级建造师视频课件,二级建造师视频课件,建筑师工程师学习视频课程',
  173. description: '中正云学堂-提供一二级建造师视频学习、免费直播公开课 ,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料。'
  174. }
  175. }
  176. },
  177. {
  178. path: '/my-live-detail/:goodsId',
  179. name: '直播详情',
  180. component: resolve => require(['@/pages/live-detail/index'], resolve),
  181. meta: {
  182. title: '中正云学堂-一二级建造师、工程师、建筑师视频课程、免费直播课',
  183. content: {
  184. keywords: '中正云学堂-一级建造师视频课件,二级建造师视频课件,建筑师工程师学习视频课程',
  185. description: '中正云学堂-提供一二级建造师视频学习、免费直播公开课 ,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料。'
  186. }
  187. }
  188. },
  189. {
  190. path: '/living-room/:channelId',
  191. // name: '课程详情',
  192. name: '直播页面详情1',
  193. component: resolve => require(['@/pages/living-room/index'], resolve),
  194. meta: {
  195. title: '中正云学堂-一二级建造师、工程师、建筑师视频课程、免费直播课',
  196. content: {
  197. keywords: '中正云学堂-一级建造师视频课件,二级建造师视频课件,建筑师工程师学习视频课程',
  198. description: '中正云学堂-提供一二级建造师视频学习、免费直播公开课 ,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料。'
  199. }
  200. }
  201. },
  202. {
  203. path: '/mock-countdown',
  204. name: '课程详情',
  205. component: resolve => require(['@/pages/mock-countdown/index'], resolve),
  206. meta: {
  207. title: '中正云学堂-一二级建造师、工程师、建筑师视频课程、免费直播课',
  208. content: {
  209. keywords: '中正云学堂-一级建造师视频课件,二级建造师视频课件,建筑师工程师学习视频课程',
  210. description: '中正云学堂-提供一二级建造师视频学习、免费直播公开课 ,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料。'
  211. }
  212. }
  213. },
  214. {
  215. path: '/mock-report',
  216. name: '课程详情',
  217. component: resolve => require(['@/pages/mock-report/index'], resolve),
  218. meta: {
  219. title: '中正云学堂-一二级建造师、工程师、建筑师视频课程、免费直播课',
  220. content: {
  221. keywords: '中正云学堂-一级建造师视频课件,二级建造师视频课件,建筑师工程师学习视频课程',
  222. description: '中正云学堂-提供一二级建造师视频学习、免费直播公开课 ,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料。'
  223. }
  224. }
  225. },
  226. {
  227. path: '/course-report',
  228. name: '试卷报告',
  229. component: resolve => require(['@/pages/course-report/index'], resolve),
  230. meta: {
  231. title: '中正云学堂-建造师造价师在线教育培训平台报名报考',
  232. content: {
  233. keywords: '中正云学堂-一级建造师,二级建造师,造价工程师,一级消防工程师,BIM,在线教育,职业教育,报考条件,报名时间,建造师注册,建造工程师',
  234. description: '中正云学堂-职业教育一站式学习平台,专注一建,二建,造价工程师,一级消防工程师,BIM等工程师技能知识培训服务热线:020-87085982'
  235. }
  236. }
  237. },
  238. {
  239. path: '/bank-report/:goodsId',
  240. name: '试卷报告',
  241. component: resolve => require(['@/pages/bank-report/index'], resolve),
  242. meta: {
  243. title: '中正云学堂-建造师造价师在线教育培训平台报名报考',
  244. content: {
  245. keywords: '中正云学堂-一级建造师,二级建造师,造价工程师,一级消防工程师,BIM,在线教育,职业教育,报考条件,报名时间,建造师注册,建造工程师',
  246. description: '中正云学堂-职业教育一站式学习平台,专注一建,二建,造价工程师,一级消防工程师,BIM等工程师技能知识培训服务热线:020-87085982'
  247. }
  248. }
  249. },
  250. {
  251. path: '/course-exam/:goodsId',
  252. name: '做题',
  253. component: resolve => require(['@/pages/course-exam/index'], resolve),
  254. meta: {
  255. title: '中正云学堂-一二级建造师、工程师、建筑师视频课程、免费直播课',
  256. content: {
  257. keywords: '中正云学堂-一级建造师视频课件,二级建造师视频课件,建筑师工程师学习视频课程',
  258. description: '中正云学堂-提供一二级建造师视频学习、免费直播公开课 ,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料。'
  259. }
  260. }
  261. },
  262. {
  263. path: '/bank-exam/:goodsId',
  264. name: '做题',
  265. component: resolve => require(['@/pages/bank-exam/index'], resolve),
  266. meta: {
  267. title: '中正云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
  268. content: {
  269. keywords: '中正云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
  270. description: '中正云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
  271. }
  272. }
  273. },
  274. {
  275. path: '/mock-exam',
  276. name: '模考',
  277. component: resolve => require(['@/pages/mock-exam/index'], resolve),
  278. meta: {
  279. title: '中正云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
  280. content: {
  281. keywords: '中正云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
  282. description: '中正云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
  283. }
  284. }
  285. },
  286. {
  287. path: '/bank-exam-continue/:goodsId',
  288. name: '继续做题',
  289. component: resolve => require(['@/pages/bank-exam-continue/index'], resolve),
  290. meta: {
  291. title: '中正云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
  292. content: {
  293. keywords: '中正云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
  294. description: '中正云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
  295. }
  296. }
  297. },
  298. {
  299. path: '/bank-exam-all-explain/:recordId',
  300. name: '全部解析',
  301. component: resolve => require(['@/pages/bank-exam-all-explain/index'], resolve),
  302. meta: {
  303. title: '中正云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
  304. content: {
  305. keywords: '中正云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
  306. description: '中正云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
  307. }
  308. }
  309. },
  310. {
  311. path: '/bank-exam-wrong-explain/:recordId',
  312. name: '错题解析',
  313. component: resolve => require(['@/pages/bank-exam-wrong-explain/index'], resolve),
  314. meta: {
  315. title: '中正云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
  316. content: {
  317. keywords: '中正云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
  318. description: '中正云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
  319. }
  320. }
  321. },
  322. {
  323. path: '/mock-exam-all-explain/:recordId',
  324. name: '全部解析',
  325. component: resolve => require(['@/pages/mock-exam-all-explain/index'], resolve),
  326. meta: {
  327. title: '中正云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
  328. content: {
  329. keywords: '中正云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
  330. description: '中正云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
  331. }
  332. }
  333. },
  334. {
  335. path: '/mock-exam-wrong-explain/:recordId',
  336. name: '错题解析',
  337. component: resolve => require(['@/pages/mock-exam-wrong-explain/index'], resolve),
  338. meta: {
  339. title: '中正云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
  340. content: {
  341. keywords: '中正云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
  342. description: '中正云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
  343. }
  344. }
  345. },
  346. {
  347. path: '/bank-exam-explain/:goodsId',
  348. name: '题目解析',
  349. component: resolve => require(['@/pages/bank-exam-explain/index'], resolve),
  350. meta: {
  351. title: '中正云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
  352. content: {
  353. keywords: '中正云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
  354. description: '中正云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
  355. }
  356. }
  357. },
  358. {
  359. path: '/subject/wrong-type-bank/:type',
  360. name: '错题',
  361. component: resolve => require(['@/pages/subject/wrong-type-bank'], resolve),
  362. meta: {
  363. title: '中正云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
  364. content: {
  365. keywords: '中正云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
  366. description: '中正云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
  367. }
  368. }
  369. },
  370. {
  371. path: '/subject/wrong-bank/:examId',
  372. name: '错题',
  373. component: resolve => require(['@/pages/subject/wrong-bank'], resolve),
  374. meta: {
  375. title: '中正云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
  376. content: {
  377. keywords: '中正云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
  378. description: '中正云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
  379. }
  380. }
  381. },
  382. {
  383. path: '/subject/collect-type-bank/:type',
  384. name: '收藏',
  385. component: resolve => require(['@/pages/subject/collect-type-bank'], resolve),
  386. meta: {
  387. title: '中正云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
  388. content: {
  389. keywords: '中正云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
  390. description: '中正云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
  391. }
  392. }
  393. },
  394. {
  395. path: '/subject/collect-bank/:examId',
  396. name: '收藏',
  397. component: resolve => require(['@/pages/subject/collect-bank'], resolve),
  398. meta: {
  399. title: '中正云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
  400. content: {
  401. keywords: '中正云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
  402. description: '中正云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
  403. }
  404. }
  405. },
  406. {
  407. path: '/goodsTopic',
  408. name: '商品专题',
  409. component: resolve => require(['@/pages/goodsTopic/index'], resolve),
  410. meta: {
  411. title: '中正云学堂-题库-一建二建试题下载_考试科目题库_考题答案_历年试题_在线真题_水平测试_历年真题_在线题库',
  412. content: {
  413. keywords: '中正云学堂-模拟试题练习,试题答案,一级建造师试题查找,二级建造师试题练习,题目类型,考试书籍,考试图书,考试教材',
  414. description: '中正云学堂-提供一二级建造师学习资料、教材教辅,一二级建造师考试专业培训辅导课程,免费试听,建造师内部习题资料、工程师教学辅导视频、建筑考试课件视频等资料'
  415. }
  416. }
  417. },
  418. {
  419. path: '/person-center',
  420. name: '个人中心',
  421. component: resolve => require(['@/pages/person-center/index'], resolve),
  422. beforeEnter: (to, from, next) => {
  423. let token = window.localStorage.getItem('token');
  424. if (token == null || token == '' || token === undefined) {
  425. next('/login')
  426. } else {
  427. next();
  428. }
  429. },
  430. children: [
  431. {
  432. path: '/',
  433. // redirect: 'my-course',
  434. },
  435. {
  436. path: 'my-course',
  437. component: resolve => require(['@/pages/person-center/my-course/index'], resolve),
  438. name: '我的课程'
  439. },
  440. {
  441. path: 'my-live',
  442. component: resolve => require(['@/pages/person-center/my-live/index'], resolve),
  443. name: '我的直播课'
  444. },
  445. {
  446. path: 'play-record',
  447. component: resolve => require(['@/pages/person-center/play-record/index'], resolve),
  448. name: '播放记录'
  449. },
  450. {
  451. path: 'my-bank',
  452. component: resolve => require(['@/pages/person-center/my-bank/index'], resolve),
  453. name: '自购题卷',
  454. children: [
  455. {
  456. path: '/',
  457. redirect: 'index',
  458. },
  459. {
  460. path: 'index',
  461. component: resolve => require(['@/pages/person-center/my-bank/index/index'], resolve),
  462. name: '自购题卷',
  463. },
  464. {
  465. path: 'bank-detail/:goodsId',
  466. component: resolve => require(['@/pages/person-center/my-bank/bank-detail/index'], resolve),
  467. name: '题库详情'
  468. },
  469. {
  470. path: 'bank-statistics/:goodsId',
  471. component: resolve => require(['@/pages/person-center/my-bank/bank-statistics/index'], resolve),
  472. name: '做题统计'
  473. },
  474. {
  475. path: 'bank-explain-detail/:goodsId',
  476. component: resolve => require(['@/pages/person-center/my-bank/bank-explain-detail/index'], resolve),
  477. name: '详情'
  478. },
  479. ]
  480. },
  481. {
  482. path: 'free-bank',
  483. component: resolve => require(['@/pages/person-center/free-bank/index'], resolve),
  484. name: '赠送题卷',
  485. children: [
  486. {
  487. path: '/',
  488. redirect: 'index',
  489. },
  490. {
  491. path: 'index',
  492. component: resolve => require(['@/pages/person-center/free-bank/index/index'], resolve),
  493. name: '赠送题卷',
  494. },
  495. {
  496. path: 'bank-detail/:goodsId',
  497. component: resolve => require(['@/pages/person-center/free-bank/bank-detail/index'], resolve),
  498. name: '题库详情'
  499. },
  500. {
  501. path: 'bank-statistics/:goodsId',
  502. component: resolve => require(['@/pages/person-center/free-bank/bank-statistics/index'], resolve),
  503. name: '做题统计'
  504. },
  505. {
  506. path: 'bank-explain-detail/:goodsId',
  507. component: resolve => require(['@/pages/person-center/free-bank/bank-explain-detail/index'], resolve),
  508. name: '详情'
  509. },
  510. ]
  511. },
  512. {
  513. path: 'bank-record',
  514. component: resolve => require(['@/pages/person-center/bank-record/index'], resolve),
  515. name: '做题记录'
  516. },
  517. {
  518. path: 'mock-record',
  519. component: resolve => require(['@/pages/person-center/mock-record/index'], resolve),
  520. name: '模考记录'
  521. },
  522. {
  523. path: 'my-collect',
  524. component: resolve => require(['@/pages/person-center/my-collect/index'], resolve),
  525. name: '收藏集'
  526. },
  527. {
  528. path: 'my-wrong',
  529. component: resolve => require(['@/pages/person-center/my-wrong/index'], resolve),
  530. name: '错题集'
  531. },
  532. {
  533. path: 'record-list/:goodsId',
  534. component: resolve => require(['@/pages/person-center/bank-record/record-list/index'], resolve),
  535. name: '更多记录'
  536. },
  537. {
  538. path: 'mock-record-list/:goodsId',
  539. component: resolve => require(['@/pages/person-center/mock-record/record-list/index'], resolve),
  540. name: '更多模考记录'
  541. },
  542. {
  543. path: 'my-order',
  544. component: resolve => require(['@/pages/person-center/my-order/index'], resolve),
  545. name: '我的订单'
  546. },
  547. {
  548. path: 'my-examination',
  549. component: resolve => require(['@/pages/person-center/my-examination/index'], resolve),
  550. name: '我的考试'
  551. },
  552. {
  553. path: 'my-mock',
  554. component: resolve => require(['@/pages/person-center/my-mock/index'], resolve),
  555. name: '我的模考'
  556. },
  557. {
  558. path: 'my-message',
  559. component: resolve => require(['@/pages/person-center/my-message/index'], resolve),
  560. name: '我的消息'
  561. },
  562. {
  563. path: 'my-info',
  564. component: resolve => require(['@/pages/person-center/my-info/index'], resolve),
  565. name: '我的资料'
  566. },
  567. {
  568. path: 'my-invoice',
  569. name: '我的发票',
  570. component: resolve => require(['@/pages/person-center/my-invoice/index'], resolve),
  571. children: [
  572. {
  573. path: '/',
  574. redirect: 'index',
  575. },
  576. {
  577. path: 'index',
  578. component: resolve => require(['@/pages/person-center/my-invoice/index/index'], resolve),
  579. name: '我的发票',
  580. },
  581. {
  582. path: 'add',
  583. component: resolve => require(['@/pages/person-center/my-invoice/add/index'], resolve),
  584. name: '申请发票',
  585. },
  586. ]
  587. },
  588. {
  589. path: 'my-classhour',
  590. component: resolve => require(['@/pages/person-center/my-classhour/index'], resolve),
  591. name: '我的学时',
  592. children: [
  593. {
  594. path: '/',
  595. redirect: 'index',
  596. },
  597. {
  598. path: 'index',
  599. component: resolve => require(['@/pages/person-center/my-classhour/index/index'], resolve),
  600. name: '我的学时',
  601. },
  602. {
  603. path: 'appointment',
  604. component: resolve => require(['@/pages/person-center/my-classhour/appointment/index'], resolve),
  605. name: '预约考试',
  606. },
  607. {
  608. path: 'appointment-add',
  609. component: resolve => require(['@/pages/person-center/my-classhour/appointment-add/index'], resolve),
  610. name: '预约考试',
  611. },
  612. {
  613. path: 'appointment-add-kp',
  614. component: resolve => require(['@/pages/person-center/my-classhour/appointment-add-kp/index'], resolve),
  615. name: '预约考试',
  616. }
  617. ]
  618. },
  619. ]
  620. }
  621. ]
  622. })
  623. const originalPush = Router.prototype.push
  624. Router.prototype.push = function push(location) {
  625. return originalPush.call(this, location).catch((err) => err)
  626. }
  627. router.beforeEach(async (to, from, next) => {
  628. // if (!store.state.TENANT_NANE) {
  629. // await store.dispatch('findTenantId')
  630. // }
  631. if (!store.state.footer.length) {
  632. store.dispatch("getCommonBaseHomeList");
  633. }
  634. if (!store.state.isDesktop) {
  635. request.getWeAppLink().then(res => {
  636. console.log("isDesktop")
  637. res.msg && (window.location.href = res.msg);
  638. });
  639. }
  640. console.log(5)
  641. if (to.meta.content) {
  642. let head = document.getElementsByTagName('head');
  643. let meta = document.createElement('meta');
  644. document.querySelector('meta[name="keywords"]').setAttribute('content', to.meta.content.keywords)
  645. document.querySelector('meta[name="description"]').setAttribute('content', to.meta.content.description)
  646. meta.content = to.meta.content;
  647. head[0].appendChild(meta)
  648. }
  649. if (to.meta.title) {
  650. document.title = to.meta.title;
  651. }
  652. if (to.path === '/login') {
  653. if (canToBank) {
  654. clearInterval(canToBank)
  655. canToBank = null;
  656. }
  657. if (canToCourse) {
  658. clearInterval(canToCourse)
  659. canToCourse = null;
  660. }
  661. next();
  662. } else {
  663. // 处理携带skipPort隐式登录
  664. let { skipPort } = to.query
  665. if (skipPort && signLoginPage.some(path => to.path.includes(path))) {
  666. try {
  667. let { data } = await request.skipLogin({ sign: skipPort })
  668. localStorage.setItem("user_account", data.user_account);
  669. localStorage.setItem("token", data.token);
  670. } catch (error) {
  671. next('/login')
  672. }
  673. }
  674. let token = window.localStorage.getItem('token');
  675. //进入页面有token获取用户信息
  676. if (token) {
  677. store.token = token;
  678. if (!store.state.userInfo) {
  679. //获取用户信息
  680. store.dispatch('getUserInfo')
  681. store.dispatch('getbusinessList')
  682. }
  683. // //题库页面要检测是否需要锁定
  684. let isBankLock = bankAdmin.some(item => {
  685. return to.path.indexOf(item) != -1
  686. })
  687. if (isBankLock) {
  688. //没有执行定时器,开启锁定
  689. if (!canToBank) {
  690. request
  691. .lockLockStatus({
  692. action: "bank",
  693. uuid: tools.getUuid()
  694. })
  695. .then((res) => {
  696. //有其他端在操作,不能学习
  697. Message({
  698. type: "warning",
  699. message: res.msg,
  700. });
  701. if (from.path == '/') {
  702. next('/')
  703. }
  704. }).catch(err => {
  705. //可以学习,开启锁定
  706. canToBank = 1;
  707. request.lockLockAction({
  708. action: 'bank',
  709. uuid: tools.getUuid()
  710. }).then(res => {
  711. })
  712. canToBank = setInterval(() => {
  713. request.lockLockAction({
  714. action: 'bank',
  715. uuid: tools.getUuid()
  716. }).then(res => {
  717. })
  718. }, 10000);
  719. next()
  720. })
  721. return;
  722. } else {
  723. //正在执行定时器,可以直接进入
  724. next()
  725. }
  726. return;
  727. } else {
  728. //从题库页面离开删除锁定
  729. let isLeaveBank = bankAdmin.some(item => {
  730. return from.path.indexOf(item) != -1
  731. })
  732. if (isLeaveBank) {
  733. clearInterval(canToBank)
  734. canToBank = null;
  735. request.lockDelLock({
  736. action: 'bank',
  737. uuid: tools.getUuid()
  738. }).then(res => {
  739. })
  740. }
  741. }
  742. let isCourseLock = courseAdmin.some(item => {
  743. return to.path.indexOf(item) != -1
  744. })
  745. if (isCourseLock) {
  746. //没有执行定时器,开启锁定
  747. if (!canToCourse) {
  748. request.goodsDetail(to.params.goodsId).then(res => {
  749. //继续教育锁定
  750. // if(res.data.educationName == '继续教育') {
  751. request
  752. .lockLockStatus({
  753. action: "jxjy",
  754. uuid: tools.getUuid()
  755. })
  756. .then((res) => {
  757. //有其他端在操作,不能学习
  758. Message({
  759. type: "warning",
  760. message: res.msg,
  761. });
  762. if (from.path == '/') {
  763. next('/')
  764. }
  765. }).catch(err => {
  766. //可以学习,开启锁定
  767. canToCourse = 1;
  768. request.lockLockAction({
  769. action: 'jxjy',
  770. uuid: tools.getUuid()
  771. }).then(res => {
  772. })
  773. canToCourse = setInterval(() => {
  774. request.lockLockAction({
  775. action: 'jxjy',
  776. uuid: tools.getUuid()
  777. }).then(res => {
  778. })
  779. }, 10000);
  780. next()
  781. })
  782. })
  783. return;
  784. } else {
  785. //正在执行定时器,可以直接进入
  786. next()
  787. }
  788. return;
  789. } else {
  790. //非题库页面删除锁定
  791. let isLeaveCouese = courseAdmin.some(item => {
  792. return from.path.indexOf(item) != -1
  793. })
  794. if (isLeaveCouese) {
  795. clearInterval(canToCourse)
  796. canToCourse = null;
  797. request.lockDelLock({
  798. action: 'jxjy',
  799. uuid: tools.getUuid()
  800. }).then(res => {
  801. })
  802. }
  803. }
  804. if (!to.path.includes('/person-center/my-info')) {
  805. checkFunc()
  806. }
  807. console.log(11123)
  808. next()
  809. } else {
  810. next()
  811. }
  812. }
  813. })
  814. export function checkFunc() {
  815. request.usercheckPwdTime().then(res => {
  816. if (res.data) {
  817. MessageBox.confirm('您已90天为修改密码,请前往修改密码', '系统提示', {
  818. confirmButtonText: '前往修改',
  819. showCancelButton: false,
  820. closeOnClickModal: false,
  821. closeOnPressEscape: false,
  822. showClose: false,
  823. type: 'warning'
  824. }
  825. ).then(() => {
  826. location.href = '/person-center/my-info';
  827. }).catch(() => { });
  828. }
  829. })
  830. }
  831. export default router;