asyncRoutes.ts 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. // 模拟后端动态生成路由
  2. import { MockMethod } from "vite-plugin-mock";
  3. import { system, permission, frame, tabs } from "@/router/enums";
  4. import FlUser from "@iconify-icons/ri/admin-line";
  5. import Role from "@iconify-icons/ri/admin-fill";
  6. import Dict from "@iconify-icons/ri/git-repository-line";
  7. import Setting from "@iconify-icons/ri/settings-3-line";
  8. import Dept from "@iconify-icons/ri/git-branch-line";
  9. import Lollipop from "@iconify-icons/ep/lollipop";
  10. import Monitor from "@iconify-icons/ep/monitor";
  11. /**
  12. * roles:页面级别权限,这里模拟二种 "admin"、"common"
  13. * admin:管理员角色
  14. * common:普通角色
  15. */
  16. const systemRouter = {
  17. path: "/system",
  18. meta: {
  19. icon: Setting,
  20. title: "menus.hssysManagement",
  21. rank: system
  22. },
  23. children: [
  24. {
  25. path: "/system/user/index",
  26. name: "User",
  27. meta: {
  28. icon: FlUser,
  29. title: "menus.hsUser",
  30. roles: ["admin"]
  31. }
  32. },
  33. {
  34. path: "/system/role/index",
  35. name: "Role",
  36. meta: {
  37. icon: Role,
  38. title: "menus.hsRole",
  39. roles: ["admin"]
  40. }
  41. },
  42. {
  43. path: "/system/dept/index",
  44. name: "Dept",
  45. meta: {
  46. icon: Dept,
  47. title: "menus.hsDept",
  48. roles: ["admin"]
  49. }
  50. },
  51. {
  52. path: "/system/dict",
  53. component: "/system/dict/index",
  54. name: "Dict",
  55. meta: {
  56. icon: Dict,
  57. title: "menus.hsDict",
  58. keepAlive: true,
  59. roles: ["admin"]
  60. }
  61. }
  62. ]
  63. };
  64. const permissionRouter = {
  65. path: "/permission",
  66. meta: {
  67. title: "menus.permission",
  68. icon: Lollipop,
  69. rank: permission
  70. },
  71. children: [
  72. {
  73. path: "/permission/page/index",
  74. name: "PermissionPage",
  75. meta: {
  76. title: "menus.permissionPage",
  77. roles: ["admin", "common"]
  78. }
  79. },
  80. {
  81. path: "/permission/button/index",
  82. name: "PermissionButton",
  83. meta: {
  84. title: "menus.permissionButton",
  85. roles: ["admin", "common"],
  86. auths: ["btn_add", "btn_edit", "btn_delete"]
  87. }
  88. }
  89. ]
  90. };
  91. const frameRouter = {
  92. path: "/iframe",
  93. meta: {
  94. icon: Monitor,
  95. title: "menus.hsExternalPage",
  96. rank: frame
  97. },
  98. children: [
  99. {
  100. path: "/external",
  101. name: "https://yiming_chang.gitee.io/pure-admin-doc",
  102. meta: {
  103. title: "menus.externalLink",
  104. roles: ["admin", "common"]
  105. }
  106. },
  107. {
  108. path: "/iframe/pure",
  109. name: "FramePure",
  110. meta: {
  111. title: "menus.hsPureDocument",
  112. frameSrc: "https://yiming_chang.gitee.io/pure-admin-doc",
  113. roles: ["admin", "common"]
  114. }
  115. },
  116. {
  117. path: "/iframe/ep",
  118. name: "FrameEp",
  119. meta: {
  120. title: "menus.hsEpDocument",
  121. frameSrc: "https://element-plus.org/zh-CN/",
  122. roles: ["admin", "common"]
  123. }
  124. },
  125. {
  126. path: "/iframe/vue3",
  127. name: "FrameVue",
  128. meta: {
  129. title: "menus.hsVueDocument",
  130. frameSrc: "https://cn.vuejs.org/",
  131. roles: ["admin", "common"]
  132. }
  133. },
  134. {
  135. path: "/iframe/vite",
  136. name: "FrameVite",
  137. meta: {
  138. title: "menus.hsViteDocument",
  139. frameSrc: "https://cn.vitejs.dev/",
  140. roles: ["admin", "common"]
  141. }
  142. },
  143. {
  144. path: "/iframe/pinia",
  145. name: "FramePinia",
  146. meta: {
  147. title: "menus.hsPiniaDocument",
  148. frameSrc: "https://pinia.vuejs.org/zh/index.html",
  149. roles: ["admin", "common"]
  150. }
  151. },
  152. {
  153. path: "/iframe/vue-router",
  154. name: "FrameRouter",
  155. meta: {
  156. title: "menus.hsRouterDocument",
  157. frameSrc: "https://router.vuejs.org/zh/",
  158. roles: ["admin", "common"]
  159. }
  160. },
  161. {
  162. path: "/iframe/tailwindcss",
  163. name: "FrameTailwindcss",
  164. meta: {
  165. title: "menus.hsTailwindcssDocument",
  166. frameSrc: "https://tailwindcss.com/docs/installation",
  167. roles: ["admin", "common"]
  168. }
  169. }
  170. ]
  171. };
  172. const tabsRouter = {
  173. path: "/tabs",
  174. meta: {
  175. icon: "IF-team-icontabs",
  176. title: "menus.hstabs",
  177. rank: tabs
  178. },
  179. children: [
  180. {
  181. path: "/tabs/index",
  182. name: "Tabs",
  183. meta: {
  184. title: "menus.hstabs",
  185. roles: ["admin", "common"]
  186. }
  187. },
  188. // query 传参模式
  189. {
  190. path: "/tabs/query-detail",
  191. name: "TabQueryDetail",
  192. meta: {
  193. // 不在menu菜单中显示
  194. showLink: false,
  195. roles: ["admin", "common"]
  196. }
  197. },
  198. // params 传参模式
  199. {
  200. path: "/tabs/params-detail/:id",
  201. component: "params-detail",
  202. name: "TabParamsDetail",
  203. meta: {
  204. // 不在menu菜单中显示
  205. showLink: false,
  206. roles: ["admin", "common"]
  207. }
  208. }
  209. ]
  210. };
  211. export default [
  212. {
  213. url: "/getAsyncRoutes",
  214. method: "get",
  215. response: () => {
  216. return {
  217. success: true,
  218. data: [systemRouter, permissionRouter, frameRouter, tabsRouter]
  219. };
  220. }
  221. }
  222. ] as MockMethod[];