@gadmin2n/schematics 0.0.71 → 0.0.72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (501) hide show
  1. package/dist/lib/application/files/gadmin2-game-angle-demo/config/prisma/system.prisma +21 -0
  2. package/dist/lib/application/files/gadmin2-game-angle-demo/server/gadmin-cli.json +9 -1
  3. package/dist/lib/application/files/gadmin2-game-angle-demo/server/package-lock.json +15579 -0
  4. package/dist/lib/application/files/gadmin2-game-angle-demo/server/package.json +5 -3
  5. package/dist/lib/application/files/gadmin2-game-angle-demo/server/seed/permissions.ts +16 -4
  6. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/app.module.ts +2 -0
  7. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/agenda/agenda.controller.ts +106 -0
  8. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/agenda/agenda.module.ts +10 -0
  9. package/dist/lib/application/files/gadmin2-game-angle-demo/server/src/modules/agenda/agenda.service.ts +569 -0
  10. package/dist/lib/application/files/gadmin2-game-angle-demo/server/yarn.lock +1159 -481
  11. package/dist/lib/application/files/gadmin2-game-angle-demo/web/.env +1 -0
  12. package/dist/lib/application/files/gadmin2-game-angle-demo/web/package.json +1 -1
  13. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/inspectorActions.ts +130 -3
  14. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/NumCard/index.tsx +5 -5
  15. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/NumLineCard/index.tsx +2 -2
  16. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/config/routeRegistry.tsx +15 -0
  17. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/DevShell.tsx +55 -43
  18. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/SkillMenu.tsx +1 -1
  19. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/en/common.json +2 -4
  20. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/locales/zh_CN/common.json +2 -4
  21. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agenda/index.tsx +536 -0
  22. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/agenda/show.tsx +671 -0
  23. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasPage.tsx +9 -60
  24. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasToolbar.tsx +2 -2
  25. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/ComponentThumbnail.tsx +3 -1
  26. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasContextMenuRegistry.tsx +11 -11
  27. package/dist/lib/application/files/gadmin2-game-angle-demo/web/src/vite-env.d.ts +12 -0
  28. package/package.json +1 -1
  29. package/dist/lib/application/files/gadmin2-game-angle-demo/web/.npmrc +0 -1
  30. package/src/lib/application/application.schema.d.ts +0 -59
  31. package/src/lib/application/files/gadmin2-game-angle-demo/.dockerignore +0 -33
  32. package/src/lib/application/files/gadmin2-game-angle-demo/.gitignore +0 -46
  33. package/src/lib/application/files/gadmin2-game-angle-demo/.husky/_/.gitignore +0 -1
  34. package/src/lib/application/files/gadmin2-game-angle-demo/.husky/_/husky.sh +0 -36
  35. package/src/lib/application/files/gadmin2-game-angle-demo/.husky/pre-commit +0 -10
  36. package/src/lib/application/files/gadmin2-game-angle-demo/Dockerfile +0 -63
  37. package/src/lib/application/files/gadmin2-game-angle-demo/Jenkinsfile +0 -70
  38. package/src/lib/application/files/gadmin2-game-angle-demo/config/.types.d.ts +0 -143
  39. package/src/lib/application/files/gadmin2-game-angle-demo/config/prisma/canvas.prisma +0 -45
  40. package/src/lib/application/files/gadmin2-game-angle-demo/config/prisma/example.prisma +0 -34
  41. package/src/lib/application/files/gadmin2-game-angle-demo/config/prisma/system.prisma +0 -173
  42. package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/Audit.ts +0 -70
  43. package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/Event.ts +0 -70
  44. package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/Game.ts +0 -58
  45. package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/ITActivityDay.ts +0 -70
  46. package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/Log.ts +0 -56
  47. package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/Page.ts +0 -70
  48. package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/PageResource.ts +0 -70
  49. package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/Resource.ts +0 -70
  50. package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/Role.ts +0 -58
  51. package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/RolePages.ts +0 -70
  52. package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/RoleResource.ts +0 -70
  53. package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/SavedQuery.ts +0 -70
  54. package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/User.ts +0 -70
  55. package/src/lib/application/files/gadmin2-game-angle-demo/config/ui/_common.ts +0 -16
  56. package/src/lib/application/files/gadmin2-game-angle-demo/readme.md +0 -142
  57. package/src/lib/application/files/gadmin2-game-angle-demo/server/.env +0 -31
  58. package/src/lib/application/files/gadmin2-game-angle-demo/server/.env.local +0 -1
  59. package/src/lib/application/files/gadmin2-game-angle-demo/server/.eslintrc.js +0 -28
  60. package/src/lib/application/files/gadmin2-game-angle-demo/server/.prettierignore +0 -7
  61. package/src/lib/application/files/gadmin2-game-angle-demo/server/.prettierrc +0 -4
  62. package/src/lib/application/files/gadmin2-game-angle-demo/server/README.md +0 -55
  63. package/src/lib/application/files/gadmin2-game-angle-demo/server/config/ac.config.ts +0 -24
  64. package/src/lib/application/files/gadmin2-game-angle-demo/server/config/index.ts +0 -58
  65. package/src/lib/application/files/gadmin2-game-angle-demo/server/gadmin-cli.json +0 -25
  66. package/src/lib/application/files/gadmin2-game-angle-demo/server/migrate-between-pg-schemas.js +0 -1232
  67. package/src/lib/application/files/gadmin2-game-angle-demo/server/package.json +0 -143
  68. package/src/lib/application/files/gadmin2-game-angle-demo/server/prisma/.generator.prisma +0 -34
  69. package/src/lib/application/files/gadmin2-game-angle-demo/server/prisma.config.ts +0 -16
  70. package/src/lib/application/files/gadmin2-game-angle-demo/server/scripts/lib/page-helpers.ts +0 -157
  71. package/src/lib/application/files/gadmin2-game-angle-demo/server/scripts/page-manage.ts +0 -290
  72. package/src/lib/application/files/gadmin2-game-angle-demo/server/scripts/permission-manage.ts +0 -184
  73. package/src/lib/application/files/gadmin2-game-angle-demo/server/scripts/prismaModels.ts +0 -143
  74. package/src/lib/application/files/gadmin2-game-angle-demo/server/scripts/sync-resources.ts +0 -100
  75. package/src/lib/application/files/gadmin2-game-angle-demo/server/scripts/syncDataMngtPages.ts +0 -119
  76. package/src/lib/application/files/gadmin2-game-angle-demo/server/seed/games.ts +0 -1
  77. package/src/lib/application/files/gadmin2-game-angle-demo/server/seed/index.ts +0 -21
  78. package/src/lib/application/files/gadmin2-game-angle-demo/server/seed/permissions.ts +0 -244
  79. package/src/lib/application/files/gadmin2-game-angle-demo/server/seed/users.ts +0 -7
  80. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/alias.config.ts +0 -7
  81. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/app.controller.spec.ts +0 -22
  82. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/app.controller.ts +0 -192
  83. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/app.module.ts +0 -91
  84. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/app.service.ts +0 -189
  85. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/lib/auth.guard.ts +0 -154
  86. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/lib/http-cache.interceptor.ts +0 -21
  87. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/lib/logger.ts +0 -19
  88. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/lib/roles.guard.ts +0 -47
  89. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/lib/safe-log.util.ts +0 -176
  90. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/lib/taihu.ts +0 -175
  91. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/lib/tracing.ts +0 -174
  92. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/lib/trim.pipe.ts +0 -51
  93. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/lib/utils.ts +0 -145
  94. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/lib/woaAuth.ts +0 -95
  95. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/main.ts +0 -132
  96. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/audit/audit.controller.spec.ts +0 -20
  97. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/audit/audit.controller.ts +0 -190
  98. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/audit/audit.module.ts +0 -10
  99. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/audit/audit.service.spec.ts +0 -338
  100. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/audit/audit.service.ts +0 -83
  101. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.controller.spec.ts +0 -20
  102. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.controller.ts +0 -81
  103. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.dto.ts +0 -49
  104. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.module.ts +0 -11
  105. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.service.spec.ts +0 -334
  106. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/canvas/canvas.service.ts +0 -249
  107. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/game/game.controller.spec.ts +0 -20
  108. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/game/game.controller.ts +0 -188
  109. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/game/game.module.ts +0 -10
  110. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/game/game.service.spec.ts +0 -18
  111. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/game/game.service.ts +0 -83
  112. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/index.ts +0 -4
  113. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/page/page.controller.spec.ts +0 -20
  114. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/page/page.controller.ts +0 -250
  115. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/page/page.module.ts +0 -10
  116. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/page/page.service.spec.ts +0 -18
  117. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/page/page.service.ts +0 -1051
  118. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/pageResource/pageResource.controller.spec.ts +0 -20
  119. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/pageResource/pageResource.controller.ts +0 -196
  120. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/pageResource/pageResource.module.ts +0 -13
  121. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/pageResource/pageResource.service.spec.ts +0 -18
  122. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/pageResource/pageResource.service.ts +0 -219
  123. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/resource/resource.controller.spec.ts +0 -20
  124. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/resource/resource.controller.ts +0 -196
  125. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/resource/resource.module.ts +0 -10
  126. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/resource/resource.service.spec.ts +0 -18
  127. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/resource/resource.service.ts +0 -199
  128. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/role/role.controller.spec.ts +0 -20
  129. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/role/role.controller.ts +0 -210
  130. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/role/role.module.ts +0 -12
  131. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/role/role.service.spec.ts +0 -18
  132. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/role/role.service.ts +0 -862
  133. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/role/roles-refresher.service.ts +0 -133
  134. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/rolePages/rolePages.controller.spec.ts +0 -20
  135. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/rolePages/rolePages.controller.ts +0 -196
  136. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/rolePages/rolePages.module.ts +0 -10
  137. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/rolePages/rolePages.service.spec.ts +0 -18
  138. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/rolePages/rolePages.service.ts +0 -201
  139. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/roleResource/roleResource.controller.spec.ts +0 -20
  140. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/roleResource/roleResource.controller.ts +0 -196
  141. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/roleResource/roleResource.module.ts +0 -10
  142. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/roleResource/roleResource.service.spec.ts +0 -18
  143. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/roleResource/roleResource.service.ts +0 -216
  144. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/user/user.controller.spec.ts +0 -20
  145. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/user/user.controller.ts +0 -198
  146. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/user/user.module.ts +0 -10
  147. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/user/user.service.spec.ts +0 -18
  148. package/src/lib/application/files/gadmin2-game-angle-demo/server/src/modules/user/user.service.ts +0 -104
  149. package/src/lib/application/files/gadmin2-game-angle-demo/server/start-prod.sh +0 -130
  150. package/src/lib/application/files/gadmin2-game-angle-demo/server/test/app.e2e-spec.ts +0 -24
  151. package/src/lib/application/files/gadmin2-game-angle-demo/server/test/jest-e2e.json +0 -9
  152. package/src/lib/application/files/gadmin2-game-angle-demo/server/tsconfig.build.json +0 -4
  153. package/src/lib/application/files/gadmin2-game-angle-demo/server/tsconfig.json +0 -36
  154. package/src/lib/application/files/gadmin2-game-angle-demo/server/yarn.lock +0 -7737
  155. package/src/lib/application/files/gadmin2-game-angle-demo/web/.env +0 -2
  156. package/src/lib/application/files/gadmin2-game-angle-demo/web/.eslintrc.json +0 -38
  157. package/src/lib/application/files/gadmin2-game-angle-demo/web/.npmrc +0 -1
  158. package/src/lib/application/files/gadmin2-game-angle-demo/web/.prettierignore +0 -2
  159. package/src/lib/application/files/gadmin2-game-angle-demo/web/.prettierrc +0 -4
  160. package/src/lib/application/files/gadmin2-game-angle-demo/web/README.MD +0 -48
  161. package/src/lib/application/files/gadmin2-game-angle-demo/web/dev-shell-entry.html +0 -49
  162. package/src/lib/application/files/gadmin2-game-angle-demo/web/index.html +0 -19
  163. package/src/lib/application/files/gadmin2-game-angle-demo/web/package.json +0 -92
  164. package/src/lib/application/files/gadmin2-game-angle-demo/web/postcss.config.cjs +0 -6
  165. package/src/lib/application/files/gadmin2-game-angle-demo/web/public/favicon.ico +0 -0
  166. package/src/lib/application/files/gadmin2-game-angle-demo/web/public/images/flags/en.svg +0 -1
  167. package/src/lib/application/files/gadmin2-game-angle-demo/web/public/images/flags/zh_CN.svg +0 -11
  168. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/App.tsx +0 -137
  169. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/auditLogProvider.ts +0 -89
  170. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/authProvider.ts +0 -144
  171. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/BulkActions.tsx +0 -287
  172. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/ListPageHeader.tsx +0 -56
  173. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/RowActions.tsx +0 -318
  174. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/SearchBar.tsx +0 -323
  175. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/SqlModal.tsx +0 -495
  176. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/VanillaJSONEditor/index.css +0 -10
  177. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/VanillaJSONEditor/index.jsx +0 -53
  178. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/AgentContext.tsx +0 -375
  179. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/ElementInspector.tsx +0 -1133
  180. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/agentAttributes.ts +0 -70
  181. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/index.ts +0 -8
  182. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/inspectorActions.ts +0 -1034
  183. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/pagePathUtils.ts +0 -66
  184. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/promptGenerator.ts +0 -135
  185. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/agentPanel/propPatcher.ts +0 -84
  186. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/eventList/index.tsx +0 -58
  187. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/index.ts +0 -4
  188. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logButton/index.tsx +0 -96
  189. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/logList/index.tsx +0 -72
  190. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/components/modalDiffViewer/index.tsx +0 -104
  191. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/auditLog/index.tsx +0 -2
  192. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/BarChart/index.tsx +0 -896
  193. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/ChartSwitcher/index.tsx +0 -219
  194. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/ChartViewer/index.tsx +0 -159
  195. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/Filter/index.tsx +0 -192
  196. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/LineChart/index.tsx +0 -1034
  197. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/NumCard/NumCard.module.css +0 -8
  198. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/NumCard/index.tsx +0 -509
  199. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/NumLineCard/index.tsx +0 -66
  200. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/PieChart/index.tsx +0 -552
  201. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/RadarChart/index.tsx +0 -263
  202. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/Section/index.tsx +0 -35
  203. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/Table/index.tsx +0 -207
  204. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/TreemapChart/index.tsx +0 -382
  205. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/WorldMap/index.tsx +0 -135
  206. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/chart-constants.ts +0 -53
  207. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/icon/InfoIcon.tsx +0 -8
  208. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/icon/index.ts +0 -1
  209. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/map/config.ts +0 -31
  210. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/map/nameMap.json +0 -9
  211. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/map/world.geo.json +0 -39349
  212. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/canvas/metric-info-tooltip/index.tsx +0 -19
  213. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/business/index.tsx +0 -65
  214. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/contexts/color-mode/index.tsx +0 -54
  215. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/custom-avatar.tsx +0 -42
  216. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/index.ts +0 -8
  217. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/header.tsx +0 -106
  218. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/index.ts +0 -4
  219. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/layout.tsx +0 -32
  220. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/logo.tsx +0 -19
  221. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/sider.tsx +0 -431
  222. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/layout/title.tsx +0 -61
  223. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/offLayoutArea/index.tsx +0 -5
  224. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/pagination-total.tsx +0 -21
  225. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/tags/index.ts +0 -1
  226. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/tags/role-tag.tsx +0 -44
  227. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/components/text.tsx +0 -78
  228. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/config/http.ts +0 -49
  229. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/config/routeRegistry.tsx +0 -428
  230. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/constants/layout.ts +0 -16
  231. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddDataModal.tsx +0 -199
  232. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/AddPageModal.tsx +0 -335
  233. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/DeleteDataConfirm.tsx +0 -56
  234. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/DevShell.tsx +0 -401
  235. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/EditDataModal.tsx +0 -129
  236. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/SkillMenu.tsx +0 -202
  237. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/UndoConfirm.tsx +0 -36
  238. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/index.tsx +0 -8
  239. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/dev-shell/style.css +0 -835
  240. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/enums/audit-log.enum.ts +0 -13
  241. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/enums/index.ts +0 -1
  242. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/form.tsx +0 -471
  243. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/get-name-initials.ts +0 -8
  244. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/get-random-color.ts +0 -27
  245. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/http.ts +0 -84
  246. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/index.tsx +0 -8
  247. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/list.tsx +0 -491
  248. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/login.ts +0 -82
  249. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/page-tree.ts +0 -74
  250. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/show.tsx +0 -226
  251. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/helpers/utils.tsx +0 -9
  252. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/index.ts +0 -7
  253. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/types.ts +0 -138
  254. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchDelete.ts +0 -191
  255. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchOperations.ts +0 -153
  256. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchOperationsCore.ts +0 -193
  257. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useBatchUpdate.ts +0 -182
  258. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useDynamicResources.tsx +0 -220
  259. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useECharts.tsx +0 -144
  260. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useFetchData.ts +0 -33
  261. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useListPageState.ts +0 -303
  262. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useRoles.ts +0 -34
  263. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useRowSelection.ts +0 -38
  264. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/hooks/useUserPageAccess.ts +0 -353
  265. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/i18n.ts +0 -23
  266. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/index.tsx +0 -27
  267. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/locales/en/common.json +0 -321
  268. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/locales/zh_CN/common.json +0 -324
  269. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/meta.json +0 -4
  270. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/plugins/devShellPlugin.ts +0 -81
  271. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/components/action-cell.css +0 -3
  272. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/components/action-cell.tsx +0 -134
  273. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/create.tsx +0 -105
  274. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/edit.tsx +0 -121
  275. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/index.ts +0 -8
  276. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/index.tsx +0 -4
  277. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/list.tsx +0 -220
  278. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/audit/show.tsx +0 -74
  279. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasCell.tsx +0 -87
  280. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasEditPage.tsx +0 -192
  281. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasListPage.tsx +0 -409
  282. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasPage.tsx +0 -1372
  283. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CanvasToolbar.tsx +0 -384
  284. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/CodeFloatWindow.tsx +0 -476
  285. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/ComponentThumbnail.tsx +0 -137
  286. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/IsolatedLivePreview.tsx +0 -101
  287. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/LivePreview.tsx +0 -236
  288. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/PublishModal.tsx +0 -200
  289. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasApi.ts +0 -92
  290. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasConfigRegistry.tsx +0 -25
  291. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasContextMenuRegistry.tsx +0 -875
  292. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasDefaults.ts +0 -126
  293. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/canvasI18n.ts +0 -11
  294. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/BarChartDataSourceModal.tsx +0 -115
  295. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/ChartViewerConfigModal.tsx +0 -217
  296. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/LineChartDataSourceModal.tsx +0 -153
  297. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/NumCardDataSourceModal.tsx +0 -211
  298. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/PromptModal.tsx +0 -90
  299. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/RadarChartDataSourceModal.tsx +0 -87
  300. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/components/TableDataSourceModal.tsx +0 -204
  301. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/demos.ts +0 -1153
  302. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/index.tsx +0 -2
  303. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/sectionCompactor.ts +0 -45
  304. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas/types.ts +0 -45
  305. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/canvas-page/index.tsx +0 -108
  306. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/create.tsx +0 -105
  307. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/edit.tsx +0 -121
  308. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/index.tsx +0 -4
  309. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/list.tsx +0 -237
  310. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/game/show.tsx +0 -74
  311. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/AssignRolesModal.tsx +0 -177
  312. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/CreatePageModal.tsx +0 -42
  313. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/EditPageModal.tsx +0 -46
  314. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/PageDetailDrawer.tsx +0 -136
  315. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/Components/PageFormModal.tsx +0 -815
  316. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/hooks/usePageManagement.ts +0 -40
  317. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/index.ts +0 -1
  318. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/list.tsx +0 -1370
  319. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/queries.ts +0 -17
  320. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/page/types.ts +0 -45
  321. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/permissionReadme/index.tsx +0 -1090
  322. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/CreateModal.tsx +0 -25
  323. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/EditModal.tsx +0 -28
  324. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/ResourceDetailDrawer.tsx +0 -177
  325. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/Components/modal.tsx +0 -230
  326. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/index.ts +0 -2
  327. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/list.tsx +0 -250
  328. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/queries.ts +0 -10
  329. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/resource/types.ts +0 -9
  330. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/CreateModal.tsx +0 -30
  331. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/EditModal.tsx +0 -47
  332. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/RoleDetailDrawer.tsx +0 -66
  333. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/Components/modal.tsx +0 -300
  334. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/hooks/useRolePage.ts +0 -35
  335. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/index.ts +0 -1
  336. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/list.tsx +0 -405
  337. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/queries.ts +0 -8
  338. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/role/types.ts +0 -8
  339. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/create-modal.tsx +0 -17
  340. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/edit-modal.tsx +0 -19
  341. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/form-modal.tsx +0 -194
  342. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/index.ts +0 -5
  343. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/role-tag.tsx +0 -48
  344. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/components/show-drawer.tsx +0 -145
  345. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/index.ts +0 -1
  346. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/list.tsx +0 -377
  347. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/routes/user/queries.ts +0 -14
  348. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/setupTests.ts +0 -5
  349. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/styles/antd.css +0 -132
  350. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/styles/fc.css +0 -58
  351. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/styles/index.css +0 -128
  352. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/styles/show-drawer.module.css +0 -18
  353. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/styles/show-page.module.css +0 -21
  354. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/types/audit-log.ts +0 -1
  355. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/types/index.ts +0 -3
  356. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/types/role.ts +0 -7
  357. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/types/user.ts +0 -1
  358. package/src/lib/application/files/gadmin2-game-angle-demo/web/src/vite-env.d.ts +0 -13
  359. package/src/lib/application/files/gadmin2-game-angle-demo/web/tsconfig.json +0 -28
  360. package/src/lib/application/files/gadmin2-game-angle-demo/web/vite.config.ts +0 -48
  361. package/src/lib/application/files/gadmin2-game-angle-demo/web/yarn.lock +0 -9482
  362. package/src/lib/class/class.schema.d.ts +0 -32
  363. package/src/lib/class/files/js/__name__.js +0 -1
  364. package/src/lib/class/files/js/__name__.spec.js +0 -7
  365. package/src/lib/class/files/ts/__name__.spec.ts +0 -7
  366. package/src/lib/class/files/ts/__name__.ts +0 -1
  367. package/src/lib/client-app/angular/angular.schema.d.ts +0 -32
  368. package/src/lib/client-app/angular/files/angular.constants.ts +0 -4
  369. package/src/lib/client-app/angular/files/angular.module.ts +0 -41
  370. package/src/lib/client-app/angular/files/angular.providers.ts +0 -27
  371. package/src/lib/client-app/angular/files/angular.utils.ts +0 -19
  372. package/src/lib/client-app/angular/files/interfaces/angular-options.interface.ts +0 -87
  373. package/src/lib/client-app/angular/files/loaders/abstract.loader.ts +0 -16
  374. package/src/lib/client-app/angular/files/loaders/express.loader.ts +0 -25
  375. package/src/lib/client-app/angular/files/loaders/fastify.loader.ts +0 -34
  376. package/src/lib/client-app/angular/files/loaders/noop.loader.ts +0 -12
  377. package/src/lib/configuration/configuration.schema.d.ts +0 -18
  378. package/src/lib/configuration/files/js/nest-cli.json +0 -6
  379. package/src/lib/configuration/files/ts/nest-cli.json +0 -5
  380. package/src/lib/controller/controller.schema.d.ts +0 -45
  381. package/src/lib/controller/files/js/__name__.controller.js +0 -4
  382. package/src/lib/controller/files/js/__name__.controller.spec.js +0 -18
  383. package/src/lib/controller/files/ts/__name__.controller.spec.ts +0 -18
  384. package/src/lib/controller/files/ts/__name__.controller.ts +0 -137
  385. package/src/lib/decorator/decorator.schema.d.ts +0 -24
  386. package/src/lib/decorator/files/js/__name__.decorator.js +0 -3
  387. package/src/lib/decorator/files/ts/__name__.decorator.ts +0 -3
  388. package/src/lib/filter/files/js/__name__.filter.js +0 -6
  389. package/src/lib/filter/files/js/__name__.filter.spec.js +0 -7
  390. package/src/lib/filter/files/ts/__name__.filter.spec.ts +0 -7
  391. package/src/lib/filter/files/ts/__name__.filter.ts +0 -6
  392. package/src/lib/filter/filter.schema.d.ts +0 -28
  393. package/src/lib/gateway/files/js/__name__.gateway.js +0 -9
  394. package/src/lib/gateway/files/js/__name__.gateway.spec.js +0 -18
  395. package/src/lib/gateway/files/ts/__name__.gateway.spec.ts +0 -18
  396. package/src/lib/gateway/files/ts/__name__.gateway.ts +0 -9
  397. package/src/lib/gateway/gateway.schema.d.ts +0 -36
  398. package/src/lib/guard/files/js/__name__.guard.js +0 -8
  399. package/src/lib/guard/files/js/__name__.guard.spec.js +0 -7
  400. package/src/lib/guard/files/ts/__name__.guard.spec.ts +0 -7
  401. package/src/lib/guard/files/ts/__name__.guard.ts +0 -11
  402. package/src/lib/guard/guard.schema.d.ts +0 -28
  403. package/src/lib/interceptor/files/js/__name__.interceptor.js +0 -8
  404. package/src/lib/interceptor/files/js/__name__.interceptor.spec.js +0 -7
  405. package/src/lib/interceptor/files/ts/default/__name__.interceptor.spec.ts +0 -7
  406. package/src/lib/interceptor/files/ts/default/__name__.interceptor.ts +0 -9
  407. package/src/lib/interceptor/files/ts/generated/__name__.interceptor.spec.ts +0 -7
  408. package/src/lib/interceptor/files/ts/generated/__name__.interceptor.ts +0 -13
  409. package/src/lib/interceptor/interceptor.schema.d.ts +0 -35
  410. package/src/lib/interface/files/__name__.interface.ts +0 -1
  411. package/src/lib/interface/interface.schema.d.ts +0 -20
  412. package/src/lib/library/files/js/.babelrc +0 -4
  413. package/src/lib/library/files/js/jsconfig.json +0 -9
  414. package/src/lib/library/files/js/src/__name__.module.js +0 -8
  415. package/src/lib/library/files/js/src/__name__.service.js +0 -4
  416. package/src/lib/library/files/js/src/__name__.service.spec.js +0 -18
  417. package/src/lib/library/files/js/src/index.js +0 -2
  418. package/src/lib/library/files/ts/src/__name__.module.ts +0 -8
  419. package/src/lib/library/files/ts/src/__name__.service.spec.ts +0 -18
  420. package/src/lib/library/files/ts/src/__name__.service.ts +0 -4
  421. package/src/lib/library/files/ts/src/index.ts +0 -2
  422. package/src/lib/library/files/ts/tsconfig.lib.json +0 -9
  423. package/src/lib/library/library.schema.d.ts +0 -24
  424. package/src/lib/middleware/files/js/__name__.middleware.js +0 -8
  425. package/src/lib/middleware/files/js/__name__.middleware.spec.js +0 -7
  426. package/src/lib/middleware/files/ts/__name__.middleware.spec.ts +0 -7
  427. package/src/lib/middleware/files/ts/__name__.middleware.ts +0 -8
  428. package/src/lib/middleware/middleware.schema.d.ts +0 -28
  429. package/src/lib/module/files/js/__name__.module.js +0 -4
  430. package/src/lib/module/files/ts/__name__.module.ts +0 -4
  431. package/src/lib/module/module.schema.d.ts +0 -40
  432. package/src/lib/pipe/files/js/__name__.pipe.js +0 -8
  433. package/src/lib/pipe/files/js/__name__.pipe.spec.js +0 -7
  434. package/src/lib/pipe/files/ts/__name__.pipe.spec.ts +0 -7
  435. package/src/lib/pipe/files/ts/__name__.pipe.ts +0 -8
  436. package/src/lib/pipe/pipe.schema.d.ts +0 -28
  437. package/src/lib/prisma-resource/files/ts/__name__.controller.spec.ts +0 -20
  438. package/src/lib/prisma-resource/files/ts/__name__.controller.ts +0 -63
  439. package/src/lib/prisma-resource/files/ts/__name__.module.ts +0 -9
  440. package/src/lib/prisma-resource/files/ts/__name__.service.spec.ts +0 -18
  441. package/src/lib/prisma-resource/files/ts/__name__.service.ts +0 -28
  442. package/src/lib/prisma-resource/files/ts/dto/create-__name@singular__.dto.ts +0 -1
  443. package/src/lib/prisma-resource/files/ts/dto/create-__name@singular__.input.ts +0 -7
  444. package/src/lib/prisma-resource/files/ts/dto/update-__name@singular__.dto.ts +0 -6
  445. package/src/lib/prisma-resource/files/ts/dto/update-__name@singular__.input.ts +0 -13
  446. package/src/lib/prisma-resource/files/ts/entities/__name@singular@ent__.ts +0 -7
  447. package/src/lib/prisma-resource/prisma-resource.schema.d.ts +0 -57
  448. package/src/lib/provider/files/js/__name__.js +0 -4
  449. package/src/lib/provider/files/js/__name__.spec.js +0 -18
  450. package/src/lib/provider/files/ts/__name__.spec.ts +0 -18
  451. package/src/lib/provider/files/ts/__name__.ts +0 -4
  452. package/src/lib/provider/provider.schema.d.ts +0 -48
  453. package/src/lib/resolver/files/js/__name__.resolver.js +0 -4
  454. package/src/lib/resolver/files/js/__name__.resolver.spec.js +0 -18
  455. package/src/lib/resolver/files/ts/__name__.resolver.spec.ts +0 -18
  456. package/src/lib/resolver/files/ts/__name__.resolver.ts +0 -4
  457. package/src/lib/resolver/resolver.schema.d.ts +0 -36
  458. package/src/lib/resource/files/ts/__name__.controller.spec.ts +0 -20
  459. package/src/lib/resource/files/ts/__name__.controller.ts +0 -63
  460. package/src/lib/resource/files/ts/__name__.gateway.spec.ts +0 -19
  461. package/src/lib/resource/files/ts/__name__.gateway.ts +0 -34
  462. package/src/lib/resource/files/ts/__name__.graphql +0 -24
  463. package/src/lib/resource/files/ts/__name__.module.ts +0 -9
  464. package/src/lib/resource/files/ts/__name__.resolver.spec.ts +0 -19
  465. package/src/lib/resource/files/ts/__name__.resolver.ts +0 -60
  466. package/src/lib/resource/files/ts/__name__.service.spec.ts +0 -18
  467. package/src/lib/resource/files/ts/__name__.service.ts +0 -28
  468. package/src/lib/resource/files/ts/dto/create-__name@singular__.dto.ts +0 -1
  469. package/src/lib/resource/files/ts/dto/create-__name@singular__.input.ts +0 -7
  470. package/src/lib/resource/files/ts/dto/update-__name@singular__.dto.ts +0 -6
  471. package/src/lib/resource/files/ts/dto/update-__name@singular__.input.ts +0 -13
  472. package/src/lib/resource/files/ts/entities/__name@singular@ent__.ts +0 -7
  473. package/src/lib/resource/resource.schema.d.ts +0 -57
  474. package/src/lib/service/files/js/__name__.service.js +0 -4
  475. package/src/lib/service/files/js/__name__.service.spec.js +0 -18
  476. package/src/lib/service/files/ts/__name__.service.spec.ts +0 -18
  477. package/src/lib/service/files/ts/__name__.service.ts +0 -4
  478. package/src/lib/service/service.schema.d.ts +0 -44
  479. package/src/lib/sub-app/files/js/.babelrc +0 -4
  480. package/src/lib/sub-app/files/js/index.js +0 -2
  481. package/src/lib/sub-app/files/js/jsconfig.json +0 -10
  482. package/src/lib/sub-app/files/js/src/app.controller.js +0 -15
  483. package/src/lib/sub-app/files/js/src/app.controller.spec.js +0 -22
  484. package/src/lib/sub-app/files/js/src/app.module.js +0 -10
  485. package/src/lib/sub-app/files/js/src/app.service.js +0 -8
  486. package/src/lib/sub-app/files/js/src/main.js +0 -8
  487. package/src/lib/sub-app/files/js/test/app.e2e-spec.js +0 -23
  488. package/src/lib/sub-app/files/js/test/jest-e2e.json +0 -5
  489. package/src/lib/sub-app/files/ts/src/__name__.controller.spec.ts +0 -22
  490. package/src/lib/sub-app/files/ts/src/__name__.controller.ts +0 -12
  491. package/src/lib/sub-app/files/ts/src/__name__.module.ts +0 -10
  492. package/src/lib/sub-app/files/ts/src/__name__.service.ts +0 -8
  493. package/src/lib/sub-app/files/ts/src/main.ts +0 -8
  494. package/src/lib/sub-app/files/ts/test/app.e2e-spec.ts +0 -24
  495. package/src/lib/sub-app/files/ts/test/jest-e2e.json +0 -9
  496. package/src/lib/sub-app/files/ts/tsconfig.app.json +0 -9
  497. package/src/lib/sub-app/sub-app.schema.d.ts +0 -21
  498. package/src/lib/sub-app/workspace/js/.babelrc +0 -4
  499. package/src/lib/sub-app/workspace/js/index.js +0 -2
  500. package/src/lib/sub-app/workspace/js/jsconfig.json +0 -10
  501. package/src/lib/sub-app/workspace/ts/tsconfig.app.json +0 -9
@@ -1,1090 +0,0 @@
1
- import { Alert, Card, Collapse, Divider, Table, Tabs, Typography } from 'antd';
2
-
3
- const { Title, Paragraph, Text } = Typography;
4
-
5
- // ─── 核心概念 ────────────────────────────────────────────────────────────────
6
-
7
- const coreConceptColumns = [
8
- { title: '概念', dataIndex: 'concept', key: 'concept', width: 160 },
9
- { title: '数据库表', dataIndex: 'table', key: 'table', width: 140 },
10
- { title: '说明', dataIndex: 'description', key: 'description' },
11
- ];
12
-
13
- const coreConceptData = [
14
- {
15
- key: 'page',
16
- concept: 'Page(页面/菜单)',
17
- table: 't_page',
18
- description:
19
- '定义系统中的所有菜单项,支持树形结构(parentId)。每个 Page 有唯一的 code,对应前端路由注册表中的 key。',
20
- },
21
- {
22
- key: 'resource',
23
- concept: 'Resource(资源)',
24
- table: 't_resource',
25
- description:
26
- '定义后端 API 资源,每个资源对应一组 CRUD 权限(readAny, createAny, updateAny, deleteAny)。',
27
- },
28
- {
29
- key: 'role',
30
- concept: 'Role(角色)',
31
- table: 't_role',
32
- description:
33
- '角色是权限分配的基本单位。一个用户拥有一个角色,角色决定了可见菜单和 API 权限。',
34
- },
35
- {
36
- key: 'role_pages',
37
- concept: 'RolePages(角色-页面)',
38
- table: 't_role_pages',
39
- description: '角色与页面的关联表,决定角色可以看到哪些菜单项。',
40
- },
41
- {
42
- key: 'role_resource',
43
- concept: 'RoleResource(角色-资源)',
44
- table: 't_role_resource',
45
- description:
46
- '角色与资源的关联表,定义角色对每个资源的具体权限(读/写/改/删)。',
47
- },
48
- {
49
- key: 'page_resource',
50
- concept: 'PageResource(页面-资源)',
51
- table: 't_page_resource',
52
- description:
53
- '页面与资源的关联表,记录每个页面需要哪些 API 资源。用于批量为角色分配权限。',
54
- },
55
- ];
56
-
57
- // ─── t_page 字段说明 ─────────────────────────────────────────────────────────
58
-
59
- const pageFieldColumns = [
60
- { title: '字段', dataIndex: 'field', key: 'field', width: 180 },
61
- { title: '说明', dataIndex: 'description', key: 'description' },
62
- { title: '示例', dataIndex: 'example', key: 'example', width: 260 },
63
- ];
64
-
65
- const pageFieldData = [
66
- {
67
- key: 'code',
68
- field: 'code',
69
- description: '页面唯一标识,原生页面必须与 routeRegistry 的 key 一致',
70
- example: 'software_dashboard',
71
- },
72
- {
73
- key: 'zhName',
74
- field: 'zhName / enName',
75
- description: '菜单显示的中英文名称',
76
- example: '软件看板 / Software Dashboard',
77
- },
78
- {
79
- key: 'path',
80
- field: 'path',
81
- description:
82
- 'URL 完整路径。原生页面会被 routeRegistry 覆盖,iframe/外部链接页面以此作为菜单跳转路径',
83
- example: '/office/software-dashboard',
84
- },
85
- {
86
- key: 'parentId',
87
- field: 'parentId',
88
- description: '父菜单 ID,用于构建树形菜单结构',
89
- example: 'office 页面的 ID',
90
- },
91
- {
92
- key: 'sortOrder',
93
- field: 'sortOrder',
94
- description: '同级菜单的排序权重,数字越小越靠前',
95
- example: '10',
96
- },
97
- {
98
- key: 'iframeUrl',
99
- field: 'iframeUrl',
100
- description:
101
- 'iframe 嵌入地址。设置后页面以 iframe 方式渲染,支持 {{locale}} 模板变量',
102
- example: 'https://analytics.example.com?lang={{locale}}',
103
- },
104
- {
105
- key: 'externalRedirectUrl',
106
- field: 'externalRedirectUrl',
107
- description:
108
- '外部跳转地址。设置后点击菜单在新窗口打开目标 URL,支持 {{locale}} 模板变量',
109
- example: 'https://wiki.example.com/page',
110
- },
111
- {
112
- key: 'isVirtual',
113
- field: 'isVirtual',
114
- description: '虚拟页面标记,设为 true 时不在侧边栏显示菜单项',
115
- example: 'false',
116
- },
117
- ];
118
-
119
- // ─── 常见问题 ────────────────────────────────────────────────────────────────
120
-
121
- const faqItems = [
122
- {
123
- key: '1',
124
- label: '菜单不显示?',
125
- children: (
126
- <ol>
127
- <li>
128
- 检查 <Text code>routeRegistry.tsx</Text> 中是否注册了路由,且 key 与
129
- t_page 的 code 一致
130
- </li>
131
- <li>
132
- 检查 <Text code>t_page</Text> 表中是否创建了记录(进入 Page Management
133
- 查看)
134
- </li>
135
- <li>检查当前用户的角色是否分配了该页面(进入 Role Management 查看)</li>
136
- <li>
137
- 检查 <Text code>parentId</Text>{' '}
138
- 是否正确——父级页面也需要分配给角色,否则整个子树不可见
139
- </li>
140
- </ol>
141
- ),
142
- },
143
- {
144
- key: '2',
145
- label: '页面显示空白?',
146
- children: (
147
- <ol>
148
- <li>
149
- 检查 <Text code>routeRegistry.tsx</Text> 中的{' '}
150
- <Text code>component</Text> 是否正确导入
151
- </li>
152
- <li>确认页面组件文件已正确导出(export 名称是否与 import 一致)</li>
153
- <li>打开浏览器 DevTools Console 查看是否有 JS 加载错误</li>
154
- </ol>
155
- ),
156
- },
157
- {
158
- key: '3',
159
- label: 'API 返回 403?',
160
- children: (
161
- <Paragraph>
162
- 后端权限由 <Text code>t_role_resource</Text> 控制。进入 Role
163
- Management,检查角色是否分配了对应资源的权限(readAny / createAny /
164
- updateAny / deleteAny)。注意:前端菜单可见不代表有 API
165
- 权限,两者独立配置。
166
- </Paragraph>
167
- ),
168
- },
169
- {
170
- key: '4',
171
- label: 'iframe 页面加载失败?',
172
- children: (
173
- <ol>
174
- <li>
175
- 检查目标网站是否允许被 iframe 嵌入(X-Frame-Options /
176
- Content-Security-Policy 头)
177
- </li>
178
- <li>
179
- 确认 <Text code>iframeUrl</Text> 与{' '}
180
- <Text code>externalRedirectUrl</Text> 未同时填写(两者互斥)
181
- </li>
182
- <li>
183
- 如果目标网站禁止 iframe 嵌入,改用{' '}
184
- <Text code>externalRedirectUrl</Text> 以新窗口方式打开
185
- </li>
186
- </ol>
187
- ),
188
- },
189
- {
190
- key: '5',
191
- label: '如何添加子菜单?',
192
- children: (
193
- <Paragraph>
194
- 在 <Text code>t_page</Text> 中创建记录时将 <Text code>parentId</Text>{' '}
195
- 设为父菜单的 ID。如果是原生页面,在 <Text code>routeRegistry.tsx</Text>{' '}
196
- 中也需要将路由放入父路由的 <Text code>children</Text> 对象中。
197
- </Paragraph>
198
- ),
199
- },
200
- {
201
- key: '6',
202
- label: '{{locale}} 模板变量怎么用?',
203
- children: (
204
- <Paragraph>
205
- 在 <Text code>iframeUrl</Text> 或 <Text code>externalRedirectUrl</Text>{' '}
206
- 中使用 <Text code>{'{{locale}}'}</Text>
207
- ,系统会在运行时自动替换为当前语言(
208
- <Text code>en</Text> 或 <Text code>zh_CN</Text>)。例如:
209
- <Text code>
210
- https://example.com/docs?lang=zh_CN https://example.com/docs?lang=en
211
- </Text>
212
- </Paragraph>
213
- ),
214
- },
215
- ];
216
-
217
- // ─── 原生页面注册步骤 ────────────────────────────────────────────────────────
218
-
219
- const nativeStepColumns = [
220
- { title: '步骤', dataIndex: 'step', key: 'step', width: 80 },
221
- { title: '操作', dataIndex: 'action', key: 'action', width: 200 },
222
- { title: '说明', dataIndex: 'detail', key: 'detail' },
223
- ];
224
-
225
- const nativeStepData = [
226
- {
227
- key: '1',
228
- step: '1',
229
- action: '创建页面组件',
230
- detail:
231
- '在 src/routes/ 下创建页面组件文件,如 src/routes/office/my-feature/index.tsx,导出页面组件。',
232
- },
233
- {
234
- key: '2',
235
- step: '2',
236
- action: '在 routeRegistry 注册路由',
237
- detail:
238
- '在 src/config/routeRegistry.tsx 中添加路由条目。key 即为 page code,配置 path(相对路径)和 component(lazy import)。如有子路由放入 children。',
239
- },
240
- {
241
- key: '3',
242
- step: '3',
243
- action: '在 Page Management 创建记录',
244
- detail:
245
- '进入 /admin/permission/page-list,新建页面。code 必须与 routeRegistry 中的 key 完全一致,设置 parentId 为父菜单 ID。',
246
- },
247
- {
248
- key: '4',
249
- step: '4',
250
- action: '关联资源(可选)',
251
- detail:
252
- '如果页面需要 API 权限控制,在页面记录中关联对应的 Resource,用于后续批量分配权限。',
253
- },
254
- {
255
- key: '5',
256
- step: '5',
257
- action: '为角色分配页面',
258
- detail:
259
- '进入 /admin/permission/role-list,编辑目标角色,勾选新添加的页面。',
260
- },
261
- ];
262
-
263
- // ─── 对比表 ──────────────────────────────────────────────────────────────────
264
-
265
- const comparisonColumns = [
266
- { title: '', dataIndex: 'item', key: 'item', width: 160 },
267
- { title: '原生页面', dataIndex: 'native', key: 'native' },
268
- { title: '外部链接', dataIndex: 'external', key: 'external' },
269
- { title: 'iframe 嵌入', dataIndex: 'iframe', key: 'iframe' },
270
- { title: '动态菜单', dataIndex: 'dynamic', key: 'dynamic' },
271
- ];
272
-
273
- const comparisonData = [
274
- {
275
- key: 'scene',
276
- item: '适用场景',
277
- native: '内部开发的完整功能页面',
278
- external: '跳转到外部系统(Wiki、文档等)',
279
- iframe: '在应用内嵌入外部页面(报表等)',
280
- dynamic: '同一组件多实例(如工作室列表)',
281
- },
282
- {
283
- key: 'registry',
284
- item: '需要修改前端页面',
285
- native: '是(config/routeRegistry.tsx)',
286
- external: '否',
287
- iframe: '否',
288
- dynamic: '是(config/dynamicMenus.ts 配置)',
289
- },
290
- {
291
- key: 'component',
292
- item: '需要写页面组件',
293
- native: '是',
294
- external: '否',
295
- iframe: '否',
296
- dynamic: '是(共享组件)',
297
- },
298
- {
299
- key: 'tpage',
300
- item: '需要 t_page 记录',
301
- native: '是(code = routeRegistry key)',
302
- external: '是(填 externalRedirectUrl)',
303
- iframe: '是(填 iframeUrl)',
304
- dynamic: '是(父级目录)',
305
- },
306
- {
307
- key: 'url',
308
- item: '关键 t_page 字段',
309
- native: 'code, path, parentId',
310
- external: 'externalRedirectUrl',
311
- iframe: 'iframeUrl',
312
- dynamic: 'code(如 invested / native)',
313
- },
314
- {
315
- key: 'behavior',
316
- item: '用户体验',
317
- native: '应用内完整渲染',
318
- external: '新窗口打开 + 自动返回',
319
- iframe: '应用框架内嵌入',
320
- dynamic: '应用内完整渲染',
321
- },
322
- {
323
- key: 'template',
324
- item: '支持 {{locale}}',
325
- native: '—',
326
- external: '是',
327
- iframe: '是',
328
- dynamic: '—',
329
- },
330
- ];
331
-
332
- // ─── 组件 ────────────────────────────────────────────────────────────────────
333
-
334
- export const PermissionReadmePage = () => {
335
- return (
336
- <div>
337
- <Typography>
338
- <Title level={2}>菜单管理说明</Title>
339
- <Paragraph>
340
- 本页面介绍系统的菜单、路由与权限管理机制,帮助管理员理解如何添加和配置不同类型的菜单项。
341
- </Paragraph>
342
- </Typography>
343
-
344
- {/* ── 架构概览 ──────────────────────────────────────────────── */}
345
- <Card title="菜单系统架构" style={{ marginBottom: 24 }}>
346
- <Paragraph>
347
- 系统的菜单管理涉及<Text strong>前端路由注册</Text>和
348
- <Text strong>数据库页面配置</Text>两个部分的协作。 未匹配到
349
- routeRegistry 的路由会进入 <Text code>WildcardPage</Text> 通配组件,
350
- 由它根据 t_page 的配置决定渲染 iframe、打开外部链接或显示 404。
351
- </Paragraph>
352
- <Alert
353
- type="info"
354
- showIcon
355
- message="数据流"
356
- description={
357
- <div>
358
- <Text code>routeRegistry.tsx</Text>(前端路由定义:Route
359
- Path、React组件) + <Text code>t_page</Text>(数据库菜单配置) →{' '}
360
- <Text code>侧边栏菜单渲染</Text> + <Text code>路由匹配</Text>
361
- <br />
362
- <br />
363
- 路由匹配优先级:<Text code>routeRegistry</Text> 原生路由 &gt;{' '}
364
- <Text code>WildcardPage (/*)</Text> 通配路由
365
- <br />
366
- <br />
367
- WildcardPage 处理:查询 t_page → 有 <Text code>iframeUrl</Text> →
368
- 渲染 iframe | 有 <Text code>externalRedirectUrl</Text> →
369
- 新窗口打开 | 否则 → 404
370
- </div>
371
- }
372
- style={{ marginBottom: 16 }}
373
- />
374
- </Card>
375
-
376
- {/* ── 核心概念 ──────────────────────────────────────────────── */}
377
- <Card title="核心概念" style={{ marginBottom: 24 }}>
378
- <Table
379
- columns={coreConceptColumns}
380
- dataSource={coreConceptData}
381
- pagination={false}
382
- size="small"
383
- bordered
384
- />
385
- <Divider />
386
- <Title level={5}>t_page 关键字段</Title>
387
- <Table
388
- columns={pageFieldColumns}
389
- dataSource={pageFieldData}
390
- pagination={false}
391
- size="small"
392
- bordered
393
- />
394
- </Card>
395
-
396
- {/* ── 四种注册方式 ──────────────────────────────────────────── */}
397
- <Card title="菜单注册方式" style={{ marginBottom: 24 }}>
398
- <Alert
399
- type="info"
400
- showIcon
401
- message="四种方式对比"
402
- style={{ marginBottom: 16 }}
403
- description={
404
- <Table
405
- columns={comparisonColumns}
406
- dataSource={comparisonData}
407
- pagination={false}
408
- size="small"
409
- bordered
410
- scroll={{ x: 800 }}
411
- />
412
- }
413
- />
414
-
415
- <Tabs
416
- items={[
417
- {
418
- key: 'native',
419
- label: '原生页面',
420
- children: (
421
- <>
422
- <Paragraph>
423
- 原生页面是最常见的方式——编写 React 组件,在{' '}
424
- <Text code>routeRegistry.tsx</Text> 中注册路由,再在 t_page
425
- 中创建对应记录。
426
- </Paragraph>
427
- <Alert
428
- type="warning"
429
- showIcon
430
- message="关键约束"
431
- description={
432
- <>
433
- routeRegistry 中的 key(如{' '}
434
- <Text code>software_dashboard</Text>)必须与 t_page 的{' '}
435
- <Text code>code</Text>{' '}
436
- 字段完全一致,否则菜单无法正常显示。
437
- </>
438
- }
439
- style={{ marginBottom: 16 }}
440
- />
441
- <Title level={5}>注册步骤</Title>
442
- <Table
443
- columns={nativeStepColumns}
444
- dataSource={nativeStepData}
445
- pagination={false}
446
- size="small"
447
- bordered
448
- />
449
- <Divider />
450
- <Title level={5}>routeRegistry 示例</Title>
451
- <pre
452
- style={{
453
- background: '#f5f5f5',
454
- padding: 16,
455
- borderRadius: 6,
456
- overflow: 'auto',
457
- fontSize: 13,
458
- lineHeight: 1.6,
459
- }}
460
- >{`// src/config/routeRegistry.tsx
461
- office: {
462
- path: "/office",
463
- children: {
464
- // key "my_feature" 即为 t_page 中的 code
465
- my_feature: {
466
- path: "my-feature-dashboard",
467
- component: lazy(() => import("@/routes/office/my-feature")),
468
- },
469
- },
470
- },`}</pre>
471
-
472
- <Divider />
473
- <Title level={5}>下划线前缀(_ 开头)的子路由</Title>
474
- <Paragraph>
475
- routeRegistry 中以 <Text code>_</Text> 开头的 key 是
476
- <Text strong>内部子路由</Text>,
477
- <Text strong>无需在 t_page 中注册</Text>。 它们由父级页面的
478
- code 统一管理权限,属于同一个页面模块的不同视图。
479
- </Paragraph>
480
-
481
- <Title level={5}>CRUD 子路由</Title>
482
- <Paragraph>
483
- 最常见的 <Text code>_</Text> 前缀子路由,
484
- 用于同一模块的列表/新建/编辑/详情视图,不出现在侧边栏中:
485
- </Paragraph>
486
- <Table
487
- columns={[
488
- {
489
- title: 'Key',
490
- dataIndex: 'key',
491
- key: 'key',
492
- width: 100,
493
- },
494
- {
495
- title: '典型 path',
496
- dataIndex: 'path',
497
- key: 'path',
498
- width: 140,
499
- },
500
- { title: '用途', dataIndex: 'usage', key: 'usage' },
501
- ]}
502
- dataSource={[
503
- {
504
- key: '_list',
505
- path: '""(index: true)',
506
- usage:
507
- '列表页,作为父路由的默认子路由(index route),访问父路径时自动渲染',
508
- },
509
- {
510
- key: '_create',
511
- path: '"create"',
512
- usage: '新建页,如 /admin/staff/create',
513
- },
514
- {
515
- key: '_edit',
516
- path: '"edit/:id"',
517
- usage: '编辑页,如 /admin/staff/edit/123',
518
- },
519
- {
520
- key: '_show',
521
- path: '"show/:id"',
522
- usage: '详情页,如 /admin/staff/show/123',
523
- },
524
- {
525
- key: '_index',
526
- path: '""(index: true)',
527
- usage: '与 _list 类似,用于非 CRUD 场景的默认子路由',
528
- },
529
- ]}
530
- pagination={false}
531
- size="small"
532
- bordered
533
- />
534
-
535
- <Divider />
536
- <Title level={5}>动态参数路由 + Sidebar-only 菜单条目</Title>
537
- <Paragraph>
538
- 当多个菜单项共享同一个页面组件、只通过 URL
539
- 参数区分内容时,使用{' '}
540
- <Text strong>动态参数路由 + Sidebar-only 条目</Text>
541
- 的组合模式:
542
- </Paragraph>
543
- <ul>
544
- <li>
545
- 动态参数路由(如 <Text code>_tab</Text> /{' '}
546
- <Text code>_region</Text>) - 负责实际渲染,
547
- <Text strong>不注册 t_page</Text>
548
- </li>
549
- <li>
550
- Sidebar-only 条目(如 <Text code>apac</Text>、
551
- <Text code>security_event</Text>
552
- )— 只有 path、没有 component,
553
- <Text strong>需要注册 t_page</Text>,
554
- 出现在侧边栏菜单中。用户点击后 URL
555
- 匹配到动态参数路由,由共享组件渲染。
556
- </li>
557
- </ul>
558
- <pre
559
- style={{
560
- background: '#f5f5f5',
561
- padding: 16,
562
- borderRadius: 6,
563
- overflow: 'auto',
564
- fontSize: 13,
565
- lineHeight: 1.6,
566
- }}
567
- >{`// 示例:RTO 看板按区域分子菜单
568
- // t_page 需注册:overview, apac, amer, emea
569
- // _index 和 _region 无需注册
570
-
571
- overview: {
572
- path: "rto-dashboard",
573
- children: {
574
- _index: { // 默认视图,无需注册 t_page
575
- path: "",
576
- index: true,
577
- component: lazy(() => import("@/routes/office/rto")),
578
- },
579
- _region: { // 动态参数路由,无需注册 t_page
580
- path: ":region", // 匹配 /office/rto-dashboard/apac 等
581
- component: lazy(() => import("@/routes/office/rto")),
582
- },
583
- // Sidebar-only 条目:需注册 t_page,出现在侧边栏菜单
584
- apac: { path: "apac" }, // 无 component,点击后由 _region 渲染
585
- amer: { path: "amer" },
586
- emea: { path: "emea" },
587
- },
588
- },`}</pre>
589
-
590
- <Alert
591
- type="info"
592
- showIcon
593
- message="命名约定总结"
594
- description={
595
- <ul style={{ margin: 0, paddingLeft: 20 }}>
596
- <li>
597
- <Text strong>不以 _ 开头</Text>的 key → 页面
598
- code,需在 t_page 中注册。有 component
599
- 的是原生页面,无 component 的是 sidebar-only 菜单条目
600
- </li>
601
- <li>
602
- <Text strong>以 _ 开头</Text>的 key →
603
- 内部子路由,不注册
604
- t_page,不出现在侧边栏,权限跟随父级页面
605
- </li>
606
- </ul>
607
- }
608
- style={{ marginTop: 16, marginBottom: 16 }}
609
- />
610
-
611
- <Title level={5}>CRUD 模块完整示例</Title>
612
- <pre
613
- style={{
614
- background: '#f5f5f5',
615
- padding: 16,
616
- borderRadius: 6,
617
- overflow: 'auto',
618
- fontSize: 13,
619
- lineHeight: 1.6,
620
- }}
621
- >{`// 只需在 t_page 中注册 "staff"(code="staff"),
622
- // 下面 4 个 _ 开头的子路由无需注册,自动跟随 staff 的权限。
623
- staff: {
624
- path: "staff",
625
- children: {
626
- _list: {
627
- path: "",
628
- index: true, // 访问 /admin/staff 时渲染列表页
629
- component: lazy(() => import("@/routes/administration/staff")
630
- .then((m) => ({ default: m.StaffListPage }))),
631
- },
632
- _create: {
633
- path: "create", // /admin/staff/create
634
- component: lazy(() => import("@/routes/administration/staff")
635
- .then((m) => ({ default: m.StaffCreatePage }))),
636
- },
637
- _edit: {
638
- path: "edit/:id", // /admin/staff/edit/123
639
- component: lazy(() => import("@/routes/administration/staff")
640
- .then((m) => ({ default: m.StaffEditPage }))),
641
- },
642
- _show: {
643
- path: "show/:id", // /admin/staff/show/123
644
- component: lazy(() => import("@/routes/administration/staff")
645
- .then((m) => ({ default: m.StaffShowPage }))),
646
- },
647
- },
648
- },`}</pre>
649
- </>
650
- ),
651
- },
652
- {
653
- key: 'external',
654
- label: '外部链接',
655
- children: (
656
- <>
657
- <Paragraph>
658
- 外部链接方式<Text strong>无需编写任何前端代码</Text>
659
- ,只需在 Page Management 中创建一条 t_page 记录,并填写{' '}
660
- <Text code>externalRedirectUrl</Text> 字段即可。
661
- 点击菜单时系统会在新窗口打开目标 URL,并自动返回前一个页面。
662
- </Paragraph>
663
- <Title level={5}>注册步骤</Title>
664
- <ol>
665
- <li>
666
- 进入 <Text code>/admin/permission/page-list</Text>
667
- ,新建页面记录
668
- </li>
669
- <li>
670
- 填写 <Text code>code</Text>、<Text code>zhName</Text>、
671
- <Text code>path</Text>(任意唯一路径即可)、
672
- <Text code>parentId</Text>
673
- </li>
674
- <li>
675
- 在 <Text code>External Redirect URL</Text>{' '}
676
- 字段填入目标地址
677
- </li>
678
- <li>为角色分配该页面</li>
679
- </ol>
680
- <Alert
681
- type="info"
682
- showIcon
683
- message="模板变量"
684
- description={
685
- <>
686
- URL 中可使用 <Text code>{'{{locale}}'}</Text>{' '}
687
- 模板变量,运行时会替换为当前语言(en / zh)。例如:
688
- <br />
689
- <Text code>
690
- https://wiki.example.com/page?lang={'{{locale}}'}
691
- </Text>
692
- </>
693
- }
694
- style={{ marginTop: 16 }}
695
- />
696
- <Divider />
697
- <Title level={5}>工作流程</Title>
698
- <pre
699
- style={{
700
- background: '#f5f5f5',
701
- padding: 16,
702
- borderRadius: 6,
703
- overflow: 'auto',
704
- fontSize: 13,
705
- lineHeight: 1.6,
706
- }}
707
- >{`用户点击菜单
708
- → 前端路由跳转到 page.path
709
- → 未匹配到 routeRegistry,进入 WildcardPage
710
- → WildcardPage 查询 t_page,发现 externalRedirectUrl
711
- → window.open(url, "_blank") 新窗口打开
712
- → window.history.back() 自动返回`}</pre>
713
- </>
714
- ),
715
- },
716
- {
717
- key: 'iframe',
718
- label: 'iframe 嵌入',
719
- children: (
720
- <>
721
- <Paragraph>
722
- iframe 方式同样<Text strong>无需编写前端代码</Text>
723
- ,在 Page Management 中填写 <Text code>iframeUrl</Text>{' '}
724
- 字段即可。页面会在应用框架(侧边栏、顶栏)内以 iframe
725
- 全屏嵌入目标网页。
726
- </Paragraph>
727
- <Title level={5}>注册步骤</Title>
728
- <ol>
729
- <li>
730
- 进入 <Text code>/admin/permission/page-list</Text>
731
- ,新建页面记录
732
- </li>
733
- <li>
734
- 填写 <Text code>code</Text>、<Text code>zhName</Text>、
735
- <Text code>path</Text>(任意唯一路径即可)、
736
- <Text code>parentId</Text>
737
- </li>
738
- <li>
739
- 在 <Text code>Iframe URL</Text> 字段填入目标地址
740
- </li>
741
- <li>为角色分配该页面</li>
742
- </ol>
743
- <Alert
744
- type="warning"
745
- showIcon
746
- message="注意事项"
747
- description={
748
- <ul style={{ margin: 0, paddingLeft: 20 }}>
749
- <li>
750
- <Text code>iframeUrl</Text> 和{' '}
751
- <Text code>externalRedirectUrl</Text>{' '}
752
- 不能同时填写,两者互斥
753
- </li>
754
- <li>
755
- 目标网站必须允许被 iframe 嵌入(未设置{' '}
756
- <Text code>X-Frame-Options: DENY</Text> 或{' '}
757
- <Text code>
758
- Content-Security-Policy: frame-ancestors 'none'
759
- </Text>
760
-
761
- </li>
762
- <li>如果目标网站禁止 iframe,请改用外部链接方式</li>
763
- <li>
764
- 同样支持 <Text code>{'{{locale}}'}</Text> 模板变量
765
- </li>
766
- </ul>
767
- }
768
- style={{ marginTop: 16 }}
769
- />
770
- </>
771
- ),
772
- },
773
- {
774
- key: 'dynamic',
775
- label: '动态菜单',
776
- children: (
777
- <>
778
- <Paragraph>
779
- 动态菜单适用于
780
- <Text strong>同一个页面组件需要生成多个菜单项</Text>
781
- 的场景。通过 <Text code>
782
- src/config/dynamicMenus.ts
783
- </Text>{' '}
784
- 的配置驱动方案,开发者只需添加一条配置即可新增动态菜单组。
785
- </Paragraph>
786
-
787
- <Title level={5}>配置方式</Title>
788
- <Paragraph>
789
- 在 <Text code>src/config/dynamicMenus.ts</Text> 中的{' '}
790
- <Text code>dynamicMenuGroups</Text> 数组中添加一条配置:
791
- </Paragraph>
792
- <pre
793
- style={{
794
- background: '#f5f5f5',
795
- padding: 16,
796
- borderRadius: 6,
797
- overflow: 'auto',
798
- fontSize: 13,
799
- lineHeight: 1.6,
800
- }}
801
- >{`// src/config/dynamicMenus.ts
802
- interface DynamicMenuGroup {
803
- parentCode: string; // 父级 page code(需在 t_page 注册)
804
- routePrefix: string; // 路由前缀,如 "/rd/invested"
805
- items: string[]; // 子项列表,每项生成一个菜单项和路由
806
- component: LazyExoticComponent<ComponentType<any>>; // 共享组件
807
- }
808
-
809
- // 示例:RD 工作室
810
- {
811
- parentCode: "invested",
812
- routePrefix: "/rd/invested",
813
- items: studioMap.investedStudios,
814
- component: lazy(() => import("@/routes/rd/rdec")),
815
- }`}</pre>
816
-
817
- <Alert
818
- type="info"
819
- showIcon
820
- message="权限控制"
821
- description={
822
- <>
823
- 动态菜单的权限以 <Text code>parentCode</Text>{' '}
824
- 为单位控制。例如为角色分配 <Text code>invested</Text>{' '}
825
- 页面后,该角色可以看到该组下所有子菜单项。无需为每个子项单独配置权限。
826
- </>
827
- }
828
- style={{ marginTop: 16 }}
829
- />
830
-
831
- <Divider />
832
- <Title level={5}>添加新动态菜单组的步骤</Title>
833
- <ol>
834
- <li>
835
- 在 <Text code>t_page</Text> 中注册父级页面(设置{' '}
836
- <Text code>code</Text>、<Text code>parentId</Text>)
837
- </li>
838
- <li>
839
- 在 <Text code>src/config/dynamicMenus.ts</Text> 的{' '}
840
- <Text code>dynamicMenuGroups</Text> 数组中添加一条配置
841
- </li>
842
- <li>
843
- 路由和菜单项会自动生成,无需修改{' '}
844
- <Text code>routeRegistry.tsx</Text>、
845
- <Text code>App.tsx</Text> 或{' '}
846
- <Text code>useDynamicResources.tsx</Text>
847
- </li>
848
- </ol>
849
-
850
- <Divider />
851
- <Title level={5}>现有示例:RD 工作室</Title>
852
- <Paragraph>
853
- 当前系统中 RD 模块的 invested(投资工作室)和
854
- native(自研工作室)使用动态菜单:
855
- </Paragraph>
856
- <ul>
857
- <li>
858
- 工作室列表定义在 <Text code>src/config/studio.ts</Text> 的{' '}
859
- <Text code>studioMap</Text> 中
860
- </li>
861
- <li>
862
- 所有工作室路由共享同一个 <Text code>RDEC</Text>{' '}
863
- 组件,组件内从 URL 提取工作室名称
864
- </li>
865
- <li>
866
- 添加新工作室只需在 <Text code>studio.ts</Text> 的{' '}
867
- <Text code>StudioEnum</Text> 和{' '}
868
- <Text code>studioMap</Text> 中添加条目即可
869
- </li>
870
- </ul>
871
- </>
872
- ),
873
- },
874
- ]}
875
- />
876
- </Card>
877
-
878
- {/* ── 权限层级关系 ────────────────────────────────────────────── */}
879
- <Card title="权限层级关系" style={{ marginBottom: 24 }}>
880
- <Title level={5}>实体关系总览</Title>
881
- <pre
882
- style={{
883
- background: '#f5f5f5',
884
- padding: 16,
885
- borderRadius: 6,
886
- overflow: 'auto',
887
- fontSize: 13,
888
- lineHeight: 1.8,
889
- }}
890
- >{`User (t_admin_user_role)
891
- └─ roles: ["PRODUCT", "SYSTEM_ADMIN"] ← 用户可拥有多个角色(JSON 数组)
892
-
893
-
894
- Role (t_role)
895
- ├─ RolePages (t_role_pages) ← 控制菜单可见性(前端)
896
- │ └─ Page (t_page)
897
- │ └─ PageResource (t_page_resource) ← 页面声明需要的资源权限
898
-
899
- └─ RoleResource (t_role_resource) ← 控制 API 访问权限(后端)
900
- └─ Resource (t_resource)
901
- └─ actions: ["readAny", "createAny", "updateAny", "deleteAny"]`}</pre>
902
-
903
- <Divider />
904
- <Title level={5}>双层权限防御</Title>
905
- <Paragraph>系统在前端和后端分别进行权限检查,两层独立运作:</Paragraph>
906
-
907
- <Table
908
- columns={[
909
- { title: '', dataIndex: 'item', key: 'item', width: 140 },
910
- {
911
- title: '前端:菜单可见性',
912
- dataIndex: 'frontend',
913
- key: 'frontend',
914
- },
915
- {
916
- title: '后端:API 访问权限',
917
- dataIndex: 'backend',
918
- key: 'backend',
919
- },
920
- ]}
921
- dataSource={[
922
- {
923
- key: 'table',
924
- item: '关联表',
925
- frontend: 't_role_pages(角色 → 页面)',
926
- backend: 't_role_resource(角色 → 资源)',
927
- },
928
- {
929
- key: 'what',
930
- item: '控制什么',
931
- frontend: '侧边栏菜单项是否显示',
932
- backend: 'API 请求是否允许执行',
933
- },
934
- {
935
- key: 'fail',
936
- item: '无权限表现',
937
- frontend: '菜单不可见',
938
- backend: '返回 HTTP 403',
939
- },
940
- {
941
- key: 'check',
942
- item: '检查机制',
943
- frontend: 'useUserPageAccess() Hook 过滤菜单树',
944
- backend: 'AuthGuard → RolesGuard → @UseRoles() 装饰器',
945
- },
946
- ]}
947
- pagination={false}
948
- size="small"
949
- bordered
950
- />
951
-
952
- <Divider />
953
- <Title level={5}>权限检查完整流程</Title>
954
- <pre
955
- style={{
956
- background: '#f5f5f5',
957
- padding: 16,
958
- borderRadius: 6,
959
- overflow: 'auto',
960
- fontSize: 13,
961
- lineHeight: 1.8,
962
- }}
963
- >{`┌─ 前端菜单加载 ─────────────────────────────────────────────────────┐
964
- │ │
965
- │ 1. GET /userinfo → 获取用户角色列表 (如 ["PRODUCT"]) │
966
- │ 2. POST /role/findMany → 查询角色 ID │
967
- │ 3. POST /rolePages/findMany → 查询角色关联的页面 ID │
968
- │ 4. POST /page/findMany → 获取所有页面定义 │
969
- │ 5. 构建可访问页面集合(包含分配页面 + 递归添加祖先页面) │
970
- │ 6. 生成侧边栏菜单树 │
971
- │ │
972
- └─────────────────────────────────────────────────────────────────────┘
973
-
974
- ┌─ 后端 API 权限检查 ────────────────────────────────────────────────┐
975
- │ │
976
- │ 请求到达 → AuthGuard(验证身份,提取 userid) │
977
- │ → RolesGuard(查询 t_admin_user_role,获取角色列表) │
978
- │ → @UseRoles({ resource: "xxx", action: "read" }) │
979
- │ → RolesBuilder 检查该角色对该资源是否有对应权限 │
980
- │ → 通过 ✓ 执行 / 拒绝 ✗ 返回 403 │
981
- │ │
982
- └─────────────────────────────────────────────────────────────────────┘`}</pre>
983
-
984
- <Divider />
985
- <Title level={5}>PageResource 的作用</Title>
986
- <Paragraph>
987
- <Text code>t_page_resource</Text> 定义了每个页面需要哪些 API
988
- 资源及权限。当管理员在 Role Management 中为角色勾选页面时,系统会
989
- <Text strong>自动从 PageResource 中提取资源权限</Text>,同步写入{' '}
990
- <Text code>t_role_resource</Text>。
991
- </Paragraph>
992
- <pre
993
- style={{
994
- background: '#f5f5f5',
995
- padding: 16,
996
- borderRadius: 6,
997
- overflow: 'auto',
998
- fontSize: 13,
999
- lineHeight: 1.8,
1000
- }}
1001
- >{`管理员勾选页面 A(关联了 Resource X [readAny] 和 Resource Y [readAny, createAny])
1002
-
1003
- 系统自动执行:
1004
- 1. 写入 t_role_pages:角色 → 页面 A
1005
- 2. 查询 t_page_resource:页面 A 需要 X(readAny)、Y(readAny, createAny)
1006
- 3. 合并写入 t_role_resource:角色 → X(readAny)、Y(readAny, createAny)
1007
-
1008
- 管理员取消勾选页面 A:
1009
- 1. 删除 t_role_pages 中的关联
1010
- 2. 如果 Resource X/Y 不被其他页面引用,同步删除 t_role_resource 中的关联`}</pre>
1011
-
1012
- <Divider />
1013
- <Title level={5}>API 权限类型</Title>
1014
- <Table
1015
- columns={[
1016
- { title: '权限', dataIndex: 'action', key: 'action', width: 140 },
1017
- { title: '含义', dataIndex: 'meaning', key: 'meaning' },
1018
- {
1019
- title: '对应 HTTP 操作',
1020
- dataIndex: 'http',
1021
- key: 'http',
1022
- width: 200,
1023
- },
1024
- ]}
1025
- dataSource={[
1026
- {
1027
- key: 'read',
1028
- action: 'readAny',
1029
- meaning: '读取任意记录',
1030
- http: 'GET / POST findMany',
1031
- },
1032
- {
1033
- key: 'create',
1034
- action: 'createAny',
1035
- meaning: '创建新记录',
1036
- http: 'POST createOne',
1037
- },
1038
- {
1039
- key: 'update',
1040
- action: 'updateAny',
1041
- meaning: '修改任意记录',
1042
- http: 'PATCH / PUT updateOne',
1043
- },
1044
- {
1045
- key: 'delete',
1046
- action: 'deleteAny',
1047
- meaning: '删除任意记录',
1048
- http: 'DELETE deleteOne',
1049
- },
1050
- ]}
1051
- pagination={false}
1052
- size="small"
1053
- bordered
1054
- />
1055
-
1056
- <Divider />
1057
- <Title level={5}>通用资源(Common Resource)</Title>
1058
- <Paragraph>
1059
- <Text code>t_resource</Text> 中标记为{' '}
1060
- <Text code>isCommonResource = true</Text> 的资源会自动为所有角色授予{' '}
1061
- <Text code>readAny</Text>{' '}
1062
- 权限,无需在页面或角色中单独配置。适用于全局公共数据(如枚举列表、配置项等)。
1063
- </Paragraph>
1064
-
1065
- <Divider />
1066
- <Title level={5}>系统管理员</Title>
1067
- <Alert
1068
- type="info"
1069
- showIcon
1070
- message="硬编码管理员"
1071
- description={
1072
- <>
1073
- 以下用户在后端硬编码为 SYSTEM_ADMIN 角色,即使不在{' '}
1074
- <Text code>t_admin_user_role</Text> 表中也会自动获得管理员权限:
1075
- <Text code>kavenma</Text>、<Text code>jasonlan</Text>、
1076
- <Text code>gc_lvhenan</Text>。
1077
- </>
1078
- }
1079
- />
1080
- </Card>
1081
-
1082
- {/* ── 常见问题 ──────────────────────────────────────────────── */}
1083
- <Card title="常见问题">
1084
- <Collapse items={faqItems} />
1085
- </Card>
1086
- </div>
1087
- );
1088
- };
1089
-
1090
- export default PermissionReadmePage;