index.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. import Vue from "vue";
  2. import Router from "vue-router";
  3. import store from "../store/index";
  4. Vue.use(Router);
  5. const router = new Router({
  6. routes: [
  7. {
  8. path: "/",
  9. redirect: "/login"
  10. },
  11. {
  12. path: "/audit",
  13. meta: {
  14. title: "导入日报审核"
  15. },
  16. component: () => import("@/views/audit/audit")
  17. },
  18. {
  19. path: "/login",
  20. component: () => import("@/views/login/index"),
  21. meta: {
  22. title: "登陆"
  23. }
  24. },
  25. {
  26. path: "/register",
  27. component: () => import("@/views/register/index"),
  28. meta: {
  29. title: "注册"
  30. }
  31. },
  32. {
  33. path: "/index",
  34. component: () => import("@/views/index/index"),
  35. meta: {
  36. title: "工时管家",
  37. keepAlive: true
  38. }
  39. },
  40. {
  41. path: "/view",
  42. meta: {
  43. title: "查看日报"
  44. },
  45. component: () => import("@/views/view/index")
  46. },
  47. {
  48. path: "/calendar",
  49. meta: {
  50. title: "查看日报"
  51. },
  52. component: () => import("@/views/view/calendar")
  53. },
  54. {
  55. path: "/edit",
  56. meta: {
  57. title: "填写日报"
  58. },
  59. component: () => import("@/views/edit/index")
  60. },
  61. {
  62. path: "/weekedit",
  63. meta: {
  64. title: "按周填报"
  65. },
  66. component: () => import("@/views/edit/weekEdit")
  67. },
  68. {
  69. path: "/task",
  70. meta: {
  71. title: "待办任务"
  72. },
  73. component: () => import("@/views/task/index")
  74. },
  75. {
  76. path: "/expense",
  77. meta: {
  78. title: "费用报销"
  79. },
  80. component: () => import("@/views/expense/index")
  81. },
  82. {
  83. path: "/expenseDetails",
  84. name: "expenseDetails",
  85. meta: {
  86. title: "单据编辑"
  87. },
  88. component: () => import("@/views/expense/details")
  89. },
  90. {
  91. path: "/projectInside",
  92. name: "projectInside",
  93. meta: {
  94. title: "项目详情"
  95. },
  96. component: () => import("@/views/project/projectInside")
  97. },
  98. {
  99. path: "/editProject",
  100. meta: {
  101. title: "编辑项目"
  102. },
  103. component: () => import("@/views/project/edit")
  104. },
  105. {
  106. path: "/editask",
  107. name: "editask",
  108. meta: {
  109. title: "编辑任务"
  110. },
  111. component: () => import("@/views/task/editask")
  112. },
  113. {
  114. path: "/search",
  115. meta: {
  116. title: "选择项目"
  117. },
  118. component: () => import("@/views/edit/search")
  119. },
  120. {
  121. path: "/review",
  122. meta: {
  123. title: "审核日报"
  124. },
  125. component: () => import("@/views/review/index")
  126. },
  127. {
  128. path: "/profession_review",
  129. meta: {
  130. title: "专业审核"
  131. },
  132. component: () => import("@/views/review/profession_list")
  133. },
  134. {
  135. path: "/department_review",
  136. meta: {
  137. title: "部门审核"
  138. },
  139. component: () => import("@/views/review/department_list")
  140. },
  141. {
  142. path: "/msg",
  143. meta: {
  144. title: "消息记录"
  145. },
  146. component: () => import("@/views/msg/index")
  147. },
  148. {
  149. path: "/project",
  150. meta: {
  151. title: "项目管理"
  152. },
  153. component: () => import("@/views/project/index")
  154. },
  155. {
  156. path: "/error",
  157. meta: {
  158. title: "错误提示"
  159. },
  160. component: () => import("@/views/error/index")
  161. },
  162. {
  163. path: "/test",
  164. meta: {
  165. title: "测试页面"
  166. },
  167. component: () => import("@/views/test/index")
  168. },
  169. {
  170. path: "/tests",
  171. meta: {
  172. title: "测试页面2"
  173. },
  174. component: () => import("@/views/test/list")
  175. },
  176. // {
  177. // path: "/timetool",
  178. // meta: {
  179. // title: "自动计时"
  180. // },
  181. // component: () => import("@/views/timetool/timetool")
  182. // },
  183. {
  184. path: "/exaLeave",
  185. meta: {
  186. title: "请假审批"
  187. },
  188. component: () => import("@/views/exaLeave/exaLeave")
  189. },
  190. {
  191. path: "/my",
  192. component: () => import("@/views/my/index"),
  193. redirect: "/my/center",
  194. children: [
  195. {
  196. path: "center",
  197. meta: {
  198. title: "个人中心"
  199. },
  200. component: () => import("@/views/my/children/center")
  201. },
  202. {
  203. path: "set",
  204. meta: {
  205. title: "修改密码"
  206. },
  207. component: () => import("@/views/my/children/set")
  208. }
  209. ]
  210. },
  211. {
  212. path: "/count",
  213. component: () => import("@/views/count/count"),
  214. meta: {
  215. title: "填报统计"
  216. }
  217. },
  218. {
  219. path: "/cost",
  220. component: () => import("@/views/cost/cost"),
  221. meta: {
  222. title: "成本"
  223. }
  224. },
  225. {
  226. path: "*",
  227. component: () => import("@/components/NotFound")
  228. }
  229. ]
  230. });
  231. // 解决编程式路由往同一地址跳转时会报错的情况
  232. const originalPush = Router.prototype.push;
  233. const originalReplace = Router.prototype.replace;
  234. Router.prototype.push = function push(location, onResolve, onReject) {
  235. if (onResolve || onReject)
  236. return originalPush.call(this, location, onResolve, onReject);
  237. return originalPush.call(this, location).catch(err => err);
  238. };
  239. Router.prototype.replace = function push(location, onResolve, onReject) {
  240. if (onResolve || onReject)
  241. return originalReplace.call(this, location, onResolve, onReject);
  242. return originalReplace.call(this, location).catch(err => err);
  243. };
  244. router.beforeEach((to, from, next) => {
  245. let { title, needLogin } = to.meta;
  246. let { isLogin } = store.state;
  247. document.title = title;
  248. if (needLogin && !isLogin) {
  249. next({
  250. path: "/login"
  251. });
  252. } else {
  253. next();
  254. }
  255. });
  256. export default router;