index.js 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360
  1. import Vue from "vue";
  2. import Router from "vue-router";
  3. Vue.use(Router);
  4. /* Layout */
  5. import Layout from "@/layout";
  6. /**
  7. * Note: 路由配置项
  8. *
  9. * hidden: true // 当设置 true 的时候该路由不会再侧边栏出现 如401,login等页面,或者如一些编辑页面/edit/1
  10. * alwaysShow: true // 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式--如组件页面
  11. * // 只有一个时,会将那个子路由当做根路由显示在侧边栏--如引导页面
  12. * // 若你想不管路由下面的 children 声明的个数都显示你的根路由
  13. * // 你可以设置 alwaysShow: true,这样它就会忽略之前定义的规则,一直显示根路由
  14. * redirect: noRedirect // 当设置 noRedirect 的时候该路由在面包屑导航中不可被点击
  15. * name:'router-name' // 设定路由的名字,一定要填写不然使用<keep-alive>时会出现各种问题
  16. * query: '{"id": 1, "name": "ry"}' // 访问路由的默认传递参数
  17. * roles: ['admin', 'common'] // 访问路由的角色权限
  18. * permissions: ['a:a:a', 'b:b:b'] // 访问路由的菜单权限
  19. * meta : {
  20. noCache: true // 如果设置为true,则不会被 <keep-alive> 缓存(默认 false)
  21. title: 'title' // 设置该路由在侧边栏和面包屑中展示的名字
  22. icon: 'svg-name' // 设置该路由的图标,对应路径src/assets/icons/svg
  23. breadcrumb: false // 如果设置为false,则不会在breadcrumb面包屑中显示
  24. activeMenu: '/system/user' // 当路由设置了该属性,则会高亮相对应的侧边栏。
  25. }
  26. */
  27. // 公共路由
  28. export const constantRoutes = [
  29. {
  30. path: "/redirect",
  31. component: Layout,
  32. hidden: true,
  33. children: [
  34. {
  35. path: "/redirect/:path(.*)",
  36. component: () => import("@/views/redirect"),
  37. },
  38. ],
  39. },
  40. // {
  41. // //自己添加的公开路由页面,不要添加在动态路由中!
  42. // path: '/dept/extend',
  43. // component: () => import('@/views/system/dept/extend'),
  44. // hidden: true,
  45. // },
  46. {
  47. path: "/system/dept-extend",
  48. component: Layout,
  49. hidden: true,
  50. permissions: ["system:dept:list"],
  51. children: [
  52. {
  53. path: "extend/:id(\\d+)",
  54. component: () => import("@/views/system/dept/extend"),
  55. name: "Data",
  56. meta: { title: "机构信息补充", activeMenu: "/system/extend" },
  57. },
  58. ],
  59. },
  60. {
  61. path: "/login",
  62. component: () => import("@/views/login"),
  63. hidden: true,
  64. },
  65. {
  66. path: "/tokenlogin",
  67. component: () => import("@/views/tokenLogin"),
  68. hidden: true,
  69. },
  70. {
  71. path: "/register",
  72. component: () => import("@/views/register"),
  73. hidden: true,
  74. },
  75. {
  76. path: "/404",
  77. component: () => import("@/views/error/404"),
  78. hidden: true,
  79. },
  80. {
  81. path: "/401",
  82. component: () => import("@/views/error/401"),
  83. hidden: true,
  84. },
  85. {
  86. path: "/sql/encryptionanddecryption/",
  87. component: () => import("@/views/system/sqlEncryptionAndDecryption"),
  88. hidden: true,
  89. },
  90. {
  91. path: "",
  92. component: Layout,
  93. redirect: "home",
  94. children: [
  95. {
  96. path: "home",
  97. component: () => import("@/views/index"),
  98. name: "home",
  99. meta: { title: "首页", icon: "dashboard", affix: true },
  100. },
  101. ],
  102. },
  103. {
  104. path: "/user",
  105. component: Layout,
  106. hidden: true,
  107. redirect: "noredirect",
  108. children: [
  109. {
  110. path: "profile",
  111. component: () => import("@/views/system/user/profile/index"),
  112. name: "Profile",
  113. meta: { title: "个人中心", icon: "user" },
  114. },
  115. ],
  116. },
  117. {
  118. path: "/safetycheck/tempregister",
  119. component: Layout,
  120. hidden: true,
  121. permissions: ["core:safetycheck:register"],
  122. children: [
  123. {
  124. path: "add",
  125. name: "tempRegister",
  126. component: () =>
  127. import("@/views/safetycheck/task/components/checkRegister.vue"),
  128. meta: { title: "临时登记" },
  129. },
  130. ],
  131. },
  132. {
  133. path: "/iot",
  134. component: Layout,
  135. hidden: true,
  136. redirect: "noredirect",
  137. children: [
  138. {
  139. path: "board",
  140. component: () => import("@/views/iot/board/index"),
  141. name: "iot_board",
  142. meta: { title: "物联看板", icon: "user" },
  143. },
  144. ],
  145. },
  146. ];
  147. // 动态路由,基于用户权限动态去加载
  148. export const dynamicRoutes = [
  149. {
  150. path: "/system/user-extend",
  151. component: Layout,
  152. hidden: true,
  153. permissions: ["system:information:edit"],
  154. children: [
  155. {
  156. path: "extend/:userId(\\d+)",
  157. component: () => import("@/views/system/user/extend"),
  158. name: "UserExtend",
  159. meta: { title: "用户信息扩展", activeMenu: "/system/user" },
  160. },
  161. ],
  162. },
  163. {
  164. path: "/system/user-auth",
  165. component: Layout,
  166. hidden: true,
  167. permissions: ["system:user:edit"],
  168. children: [
  169. {
  170. path: "role/:userId(\\d+)",
  171. component: () => import("@/views/system/user/authRole"),
  172. name: "AuthRole",
  173. meta: { title: "分配角色", activeMenu: "/system/user" },
  174. },
  175. ],
  176. },
  177. {
  178. path: "/system/role-auth",
  179. component: Layout,
  180. hidden: true,
  181. permissions: ["system:role:edit"],
  182. children: [
  183. {
  184. path: "user/:roleId(\\d+)",
  185. component: () => import("@/views/system/role/authUser"),
  186. name: "AuthUser",
  187. meta: { title: "分配用户", activeMenu: "/system/role" },
  188. },
  189. ],
  190. },
  191. {
  192. path: "/system/dict-data",
  193. component: Layout,
  194. hidden: true,
  195. permissions: ["system:dict:list"],
  196. children: [
  197. {
  198. path: "index/:dictId(\\d+)",
  199. component: () => import("@/views/system/dict/data"),
  200. name: "Data",
  201. meta: { title: "字典数据", activeMenu: "/system/dict" },
  202. },
  203. ],
  204. },
  205. {
  206. path: "/monitor/job-log",
  207. component: Layout,
  208. hidden: true,
  209. permissions: ["monitor:job:list"],
  210. children: [
  211. {
  212. path: "index/:jobId(\\d+)",
  213. component: () => import("@/views/monitor/job/log"),
  214. name: "JobLog",
  215. meta: { title: "调度日志", activeMenu: "/monitor/job" },
  216. },
  217. ],
  218. },
  219. {
  220. path: "/tool/gen-edit",
  221. component: Layout,
  222. hidden: true,
  223. permissions: ["tool:gen:edit"],
  224. children: [
  225. {
  226. path: "index/:tableId(\\d+)",
  227. component: () => import("@/views/tool/gen/editTable"),
  228. name: "GenEdit",
  229. meta: { title: "修改生成配置", activeMenu: "/tool/gen" },
  230. },
  231. ],
  232. },
  233. {
  234. path: "/core/safetycheck",
  235. component: Layout,
  236. hidden: true,
  237. // permissions: ['core:safetycheck'],
  238. children: [
  239. {
  240. path: "register/:taskId(\\d+)",
  241. component: () =>
  242. import("@/views/safetycheck/task/components/register.vue"),
  243. name: "safetyCheckRegister",
  244. meta: { title: "检查任务", activeMenu: "/safetycheck/taskmanager" },
  245. },
  246. ],
  247. },
  248. ,
  249. {
  250. path: "/core/safetycheck",
  251. component: Layout,
  252. hidden: true,
  253. permissions: ["core:task:query"],
  254. children: [
  255. {
  256. path: "detail/:taskId(\\d+)",
  257. name: "safetyTaskDetail",
  258. component: () =>
  259. import("@/views/safetycheck/task/components/detail.vue"),
  260. meta: { title: "检查任务详情" },
  261. },
  262. ],
  263. },
  264. {
  265. path: "/core/safetycheck/rule",
  266. component: Layout,
  267. hidden: true,
  268. permissions: ["safetycheck:rule:contentmanage"],
  269. children: [
  270. {
  271. path: "content/:id(\\d+)",
  272. component: () => import("@/views/safetycheck/ruleManager/index.vue"),
  273. name: "safetycheckRuleManager",
  274. meta: { title: "管理检查内容", activeMenu: "/safetycheck/rule" },
  275. },
  276. ],
  277. },
  278. {
  279. path: "/core/resumption/rule",
  280. component: Layout,
  281. hidden: true,
  282. permissions: ["resumption:rule:contentmanage"],
  283. children: [
  284. {
  285. path: "content/:id(\\d+)",
  286. component: () => import("@/views/resumption/ruleManager/index.vue"),
  287. name: "resumptionRuleManager",
  288. meta: { title: "管理履职内容", activeMenu: "/resumption/rule" },
  289. },
  290. ],
  291. },
  292. {
  293. path: "/deploy/upgrade",
  294. component: Layout,
  295. hidden: true,
  296. //permissions: ["resumption:rule:contentmanage"],
  297. children: [
  298. {
  299. path: "content/:id",
  300. component: () => import("@/views/deploy/upgradeStatus/hostUpgrade.vue"),
  301. name: "upgradeHostManager",
  302. meta: { title: "主机升级详情", activeMenu: "/deploy/upgradeStatus" },
  303. },
  304. ],
  305. },
  306. {
  307. path: "/deploy/beringpackage",
  308. component: Layout,
  309. hidden: true,
  310. //permissions: ["resumption:rule:contentmanage"],
  311. children: [
  312. {
  313. path: "content",
  314. component: () => import("@/views/deploy/bering/beringPackage.vue"),
  315. name: "beringPackageManager",
  316. meta: { title: "白令海版本管理", activeMenu: "/deploy/bering" },
  317. },
  318. ],
  319. },
  320. ];
  321. // 防止连续点击多次路由报错
  322. let routerPush = Router.prototype.push;
  323. let routerReplace = Router.prototype.replace;
  324. // push
  325. Router.prototype.push = function push(location) {
  326. return routerPush.call(this, location).catch((err) => err);
  327. };
  328. // replace
  329. Router.prototype.replace = function push(location) {
  330. return routerReplace.call(this, location).catch((err) => err);
  331. };
  332. // const router =
  333. // //路由守卫
  334. // router.beforeEach((to, from, next) => {
  335. // //路由守卫控制登陆页面取消水印非登录页显示水印
  336. // if (document.querySelector("#water")) {
  337. // if (to.path == "/login") {
  338. // document.querySelector("#water").style.display = "none";
  339. // } else {
  340. // document.querySelector("#water").style.display = "block";
  341. // }
  342. // }
  343. // });
  344. const $router = new Router({
  345. mode: "hash",
  346. scrollBehavior: () => ({ y: 0 }),
  347. routes: constantRoutes,
  348. });
  349. export default $router;