index.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. import { createWebHistory, createRouter } from "vue-router";
  2. /* Layout */
  3. import Layout from "@/layout";
  4. /**
  5. * Note: 路由配置项
  6. *
  7. * hidden: true // 当设置 true 的时候该路由不会再侧边栏出现 如401,login等页面,或者如一些编辑页面/edit/1
  8. * alwaysShow: true // 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式--如组件页面
  9. * // 只有一个时,会将那个子路由当做根路由显示在侧边栏--如引导页面
  10. * // 若你想不管路由下面的 children 声明的个数都显示你的根路由
  11. * // 你可以设置 alwaysShow: true,这样它就会忽略之前定义的规则,一直显示根路由
  12. * redirect: noRedirect // 当设置 noRedirect 的时候该路由在面包屑导航中不可被点击
  13. * name:'router-name' // 设定路由的名字,一定要填写不然使用<keep-alive>时会出现各种问题
  14. * query: '{"id": 1, "name": "ry"}' // 访问路由的默认传递参数
  15. * roles: ['admin', 'common'] // 访问路由的角色权限
  16. * permissions: ['a:a:a', 'b:b:b'] // 访问路由的菜单权限
  17. * meta : {
  18. noCache: true // 如果设置为true,则不会被 <keep-alive> 缓存(默认 false)
  19. title: 'title' // 设置该路由在侧边栏和面包屑中展示的名字
  20. icon: 'svg-name' // 设置该路由的图标,对应路径src/assets/icons/svg
  21. breadcrumb: false // 如果设置为false,则不会在breadcrumb面包屑中显示
  22. activeMenu: '/system/user' // 当路由设置了该属性,则会高亮相对应的侧边栏。
  23. }
  24. */
  25. // 公共路由
  26. export const constantRoutes = [
  27. {
  28. path: "/redirect",
  29. component: Layout,
  30. hidden: true,
  31. children: [
  32. {
  33. path: "/redirect/:path(.*)",
  34. component: () => import("@/views/redirect/index.vue"),
  35. },
  36. ],
  37. },
  38. {
  39. path: "/login",
  40. component: () => import("@/views/login"),
  41. hidden: true,
  42. },
  43. {
  44. path: "/register",
  45. component: () => import("@/views/register"),
  46. hidden: true,
  47. },
  48. {
  49. path: "/:pathMatch(.*)*",
  50. component: () => import("@/views/error/404"),
  51. hidden: true,
  52. },
  53. {
  54. path: "/401",
  55. component: () => import("@/views/error/401"),
  56. hidden: true,
  57. },
  58. {
  59. path: "/wifi",
  60. component: () => import("@/views/wifi"),
  61. hidden: true,
  62. },
  63. {
  64. path: "",
  65. component: Layout,
  66. redirect: "/index",
  67. children: [
  68. {
  69. path: "/index",
  70. component: () => import("@/views/index"),
  71. name: "Index",
  72. meta: { title: "首页", icon: "dashboard", affix: true },
  73. },
  74. ],
  75. },
  76. {
  77. path: "/user",
  78. component: Layout,
  79. hidden: true,
  80. redirect: "noredirect",
  81. children: [
  82. {
  83. path: "profile",
  84. component: () => import("@/views/system/user/profile/index"),
  85. name: "Profile",
  86. meta: { title: "个人中心", icon: "user" },
  87. },
  88. ],
  89. },
  90. ];
  91. // 动态路由,基于用户权限动态去加载
  92. export const dynamicRoutes = [
  93. {
  94. path: "/system/user-auth",
  95. component: Layout,
  96. hidden: true,
  97. permissions: ["system:user:edit"],
  98. children: [
  99. {
  100. path: "role/:userId(\\d+)",
  101. component: () => import("@/views/system/user/authRole"),
  102. name: "AuthRole",
  103. meta: { title: "分配角色", activeMenu: "/system/user" },
  104. },
  105. ],
  106. },
  107. {
  108. path: "/system/role-auth",
  109. component: Layout,
  110. hidden: true,
  111. permissions: ["system:role:edit"],
  112. children: [
  113. {
  114. path: "user/:roleId(\\d+)",
  115. component: () => import("@/views/system/role/authUser"),
  116. name: "AuthUser",
  117. meta: { title: "分配用户", activeMenu: "/system/role" },
  118. },
  119. ],
  120. },
  121. {
  122. path: "/system/dict-data",
  123. component: Layout,
  124. hidden: true,
  125. permissions: ["system:dict:list"],
  126. children: [
  127. {
  128. path: "index/:dictId(\\d+)",
  129. component: () => import("@/views/system/dict/data"),
  130. name: "Data",
  131. meta: { title: "字典数据", activeMenu: "/system/dict" },
  132. },
  133. ],
  134. },
  135. {
  136. path: "/monitor/job-log",
  137. component: Layout,
  138. hidden: true,
  139. permissions: ["monitor:job:list"],
  140. children: [
  141. {
  142. path: "index/:jobId(\\d+)",
  143. component: () => import("@/views/monitor/job/log"),
  144. name: "JobLog",
  145. meta: { title: "调度日志", activeMenu: "/monitor/job" },
  146. },
  147. ],
  148. },
  149. {
  150. path: "/tool/gen-edit",
  151. component: Layout,
  152. hidden: true,
  153. permissions: ["tool:gen:edit"],
  154. children: [
  155. {
  156. path: "index/:tableId(\\d+)",
  157. component: () => import("@/views/tool/gen/editTable"),
  158. name: "GenEdit",
  159. meta: { title: "修改生成配置", activeMenu: "/tool/gen" },
  160. },
  161. ],
  162. },
  163. // 内容设定
  164. {
  165. path: "/content",
  166. component: Layout,
  167. hidden: true,
  168. permissions: ["content:setting:list"],
  169. children: [
  170. {
  171. path: "setting/detail",
  172. component: () => import("@/views/content/setting/detail"),
  173. name: "settingDetail",
  174. meta: { title: "设定详情", activeMenu: "/content/setting" },
  175. },
  176. ],
  177. },
  178. // 场景预设
  179. {
  180. path: "/scene",
  181. component: Layout,
  182. hidden: true,
  183. permissions: ["scene:presets:list"],
  184. children: [
  185. {
  186. path: "presets/detail",
  187. component: () => import("@/views/scene/presets/detail"),
  188. name: "presetsDetail",
  189. meta: { title: "预设详情", activeMenu: "/scene/presets" },
  190. },
  191. ],
  192. },
  193. // 内容插播
  194. {
  195. path: "/insert",
  196. component: Layout,
  197. hidden: true,
  198. permissions: ["insert:insertContent:list"],
  199. children: [
  200. {
  201. path: "insertContent/detail",
  202. component: () => import("@/views/insert/insertContent/detail"),
  203. name: "insertContentDetail",
  204. meta: { title: "插播详情", activeMenu: "/insert/insertContent" },
  205. },
  206. ],
  207. },
  208. {
  209. path: "/device",
  210. component: Layout,
  211. hidden: true,
  212. permissions: ["device:deviceList:list"],
  213. name: "deviceList",
  214. children: [
  215. {
  216. path: "deviceList/detail",
  217. component: () => import("@/views/device/list/detail"),
  218. name: "deviceListDetail",
  219. meta: { title: "设备详情", activeMenu: "/device/deviceList" },
  220. },
  221. ],
  222. },
  223. {
  224. path: "/device",
  225. component: Layout,
  226. hidden: true,
  227. permissions: ["device:version:list"],
  228. children: [
  229. {
  230. path: "version/detail",
  231. component: () => import("@/views/device/version/detail"),
  232. name: "deviceVersionDetail",
  233. meta: { title: "设备升级详情", activeMenu: "/device/version" },
  234. },
  235. ],
  236. },
  237. ];
  238. const router = createRouter({
  239. history: createWebHistory(),
  240. routes: constantRoutes,
  241. scrollBehavior(to, from, savedPosition) {
  242. if (savedPosition) {
  243. return savedPosition;
  244. } else {
  245. return { top: 0 };
  246. }
  247. },
  248. });
  249. export default router;