asyncRoutes.ts 4.4 KB

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