@ysjdemo/umi-create-cli 0.0.2 → 0.0.4

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 (447) hide show
  1. package/README.md +50 -16
  2. package/bin/cli.js +2 -2
  3. package/lib/constants/index.js +5 -0
  4. package/lib/create.js +123 -87
  5. package/lib/templates/antd/package.json +10 -10
  6. package/lib/templates/basic/package.json +9 -9
  7. package/lib/templates/basic/src/pages/Home/index.tsx +1 -1
  8. package/lib/templates/common/.prettierrc +1 -1
  9. package/lib/templates/index.js +91 -21
  10. package/lib/templates/qiankun/README.md +65 -0
  11. package/lib/templates/qiankun/azure-pipelines.yml +103 -0
  12. package/lib/templates/qiankun/cf-workbench-base/.env +1 -0
  13. package/lib/templates/qiankun/cf-workbench-base/.eslintrc.js +8 -0
  14. package/lib/templates/qiankun/cf-workbench-base/.husky/commit-msg +1 -0
  15. package/lib/templates/qiankun/cf-workbench-base/.husky/pre-commit +1 -0
  16. package/lib/templates/qiankun/cf-workbench-base/.lintstagedrc +17 -0
  17. package/lib/templates/qiankun/cf-workbench-base/.prettierignore +3 -0
  18. package/lib/templates/qiankun/cf-workbench-base/.prettierrc +8 -0
  19. package/lib/templates/qiankun/cf-workbench-base/.stylelintrc.js +3 -0
  20. package/lib/templates/qiankun/cf-workbench-base/.yarnrc.yml +1 -0
  21. package/lib/templates/qiankun/cf-workbench-base/Dockerfile +11 -0
  22. package/lib/templates/qiankun/cf-workbench-base/README.md +3 -0
  23. package/lib/templates/qiankun/cf-workbench-base/config/config.develop.ts +39 -0
  24. package/lib/templates/qiankun/cf-workbench-base/config/config.local.ts +39 -0
  25. package/lib/templates/qiankun/cf-workbench-base/config/config.production.ts +36 -0
  26. package/lib/templates/qiankun/cf-workbench-base/config/config.ts +23 -0
  27. package/lib/templates/qiankun/cf-workbench-base/config/defaultSettings.ts +50 -0
  28. package/lib/templates/qiankun/cf-workbench-base/config/proxy.ts +29 -0
  29. package/lib/templates/qiankun/cf-workbench-base/config/routes.ts +431 -0
  30. package/lib/templates/qiankun/cf-workbench-base/mock/userAPI.ts +20 -0
  31. package/lib/templates/qiankun/cf-workbench-base/package.json +35 -0
  32. package/lib/templates/qiankun/cf-workbench-base/plugins/libs/qiankun/master/AntdErrorBoundary.tsx +34 -0
  33. package/lib/templates/qiankun/cf-workbench-base/plugins/libs/qiankun/master/AntdLoader.tsx +15 -0
  34. package/lib/templates/qiankun/cf-workbench-base/plugins/libs/qiankun/master/ErrorBoundary.tsx +7 -0
  35. package/lib/templates/qiankun/cf-workbench-base/plugins/libs/qiankun/master/MicroApp.tsx +310 -0
  36. package/lib/templates/qiankun/cf-workbench-base/plugins/libs/qiankun/master/MicroAppWithMemoHistory.tsx +43 -0
  37. package/lib/templates/qiankun/cf-workbench-base/plugins/libs/qiankun/master/common.ts +174 -0
  38. package/lib/templates/qiankun/cf-workbench-base/plugins/libs/qiankun/master/constants.ts +7 -0
  39. package/lib/templates/qiankun/cf-workbench-base/plugins/libs/qiankun/master/getMicroAppRouteComponent.tsx.tpl +37 -0
  40. package/lib/templates/qiankun/cf-workbench-base/plugins/libs/qiankun/master/masterRuntimePlugin.tsx +153 -0
  41. package/lib/templates/qiankun/cf-workbench-base/plugins/libs/qiankun/master/routeUtils.ts +26 -0
  42. package/lib/templates/qiankun/cf-workbench-base/plugins/libs/qiankun/master/types.ts +48 -0
  43. package/lib/templates/qiankun/cf-workbench-base/plugins/libs/qiankun/slave/MicroAppLink.tsx +122 -0
  44. package/lib/templates/qiankun/cf-workbench-base/plugins/libs/qiankun/slave/connectMaster.tsx +14 -0
  45. package/lib/templates/qiankun/cf-workbench-base/plugins/libs/qiankun/slave/constants.ts +5 -0
  46. package/lib/templates/qiankun/cf-workbench-base/plugins/libs/qiankun/slave/lifecycles.ts +164 -0
  47. package/lib/templates/qiankun/cf-workbench-base/plugins/libs/qiankun/slave/qiankunModel.ts +18 -0
  48. package/lib/templates/qiankun/cf-workbench-base/plugins/libs/qiankun/slave/slaveRuntimePlugin.ts +30 -0
  49. package/lib/templates/qiankun/cf-workbench-base/plugins/qiankun/constants.ts +5 -0
  50. package/lib/templates/qiankun/cf-workbench-base/plugins/qiankun/master.ts +179 -0
  51. package/lib/templates/qiankun/cf-workbench-base/plugins/qiankun.ts +24 -0
  52. package/lib/templates/qiankun/cf-workbench-base/plugins/utils/withTmpPath.ts +19 -0
  53. package/lib/templates/qiankun/cf-workbench-base/public/CNAME +1 -0
  54. package/lib/templates/qiankun/cf-workbench-base/public/favicon.ico +0 -0
  55. package/lib/templates/qiankun/cf-workbench-base/public/home_bg.png +0 -0
  56. package/lib/templates/qiankun/cf-workbench-base/public/icons/icon-128x128.png +0 -0
  57. package/lib/templates/qiankun/cf-workbench-base/public/icons/icon-192x192.png +0 -0
  58. package/lib/templates/qiankun/cf-workbench-base/public/icons/icon-512x512.png +0 -0
  59. package/lib/templates/qiankun/cf-workbench-base/public/js/dayjs.min.js +1 -0
  60. package/lib/templates/qiankun/cf-workbench-base/public/js/echarts.min.js +45 -0
  61. package/lib/templates/qiankun/cf-workbench-base/public/js/exceljs.min.js +45 -0
  62. package/lib/templates/qiankun/cf-workbench-base/public/js/lodash.min.js +140 -0
  63. package/lib/templates/qiankun/cf-workbench-base/public/js/xlsx.full.min.js +22 -0
  64. package/lib/templates/qiankun/cf-workbench-base/public/logo.png +0 -0
  65. package/lib/templates/qiankun/cf-workbench-base/public/pro_icon.svg +5 -0
  66. package/lib/templates/qiankun/cf-workbench-base/public/version.json +1 -0
  67. package/lib/templates/qiankun/cf-workbench-base/src/app.tsx +111 -0
  68. package/lib/templates/qiankun/cf-workbench-base/src/assets/.gitkeep +0 -0
  69. package/lib/templates/qiankun/cf-workbench-base/src/assets/logo.png +0 -0
  70. package/lib/templates/qiankun/cf-workbench-base/src/assets/logo.svg +1 -0
  71. package/lib/templates/qiankun/cf-workbench-base/src/assets/user.png +0 -0
  72. package/lib/templates/qiankun/cf-workbench-base/src/components/DicDropDownList/index.tsx +81 -0
  73. package/lib/templates/qiankun/cf-workbench-base/src/components/GlobalHeader/RightContent.tsx +30 -0
  74. package/lib/templates/qiankun/cf-workbench-base/src/components/GlobalHeader/WorkCenterDropdown.tsx +187 -0
  75. package/lib/templates/qiankun/cf-workbench-base/src/components/Layout/getLayoutConfig.tsx +256 -0
  76. package/lib/templates/qiankun/cf-workbench-base/src/components/Layout/layout.tsx +237 -0
  77. package/lib/templates/qiankun/cf-workbench-base/src/components/Layout/utils.tsx +131 -0
  78. package/lib/templates/qiankun/cf-workbench-base/src/constants/index.ts +11 -0
  79. package/lib/templates/qiankun/cf-workbench-base/src/echarsDarkTheme.ts +210 -0
  80. package/lib/templates/qiankun/cf-workbench-base/src/global.less +0 -0
  81. package/lib/templates/qiankun/cf-workbench-base/src/hooks/useRouteAuth.ts +121 -0
  82. package/lib/templates/qiankun/cf-workbench-base/src/lib/echarts/i18n/langHK.ts +136 -0
  83. package/lib/templates/qiankun/cf-workbench-base/src/loading.tsx +4 -0
  84. package/lib/templates/qiankun/cf-workbench-base/src/locales/en-US/commonMsg.ts +53 -0
  85. package/lib/templates/qiankun/cf-workbench-base/src/locales/en-US/index.ts +11 -0
  86. package/lib/templates/qiankun/cf-workbench-base/src/locales/en-US/menu.ts +105 -0
  87. package/lib/templates/qiankun/cf-workbench-base/src/locales/en-US/pageValue/AndroidClientVersion.ts +66 -0
  88. package/lib/templates/qiankun/cf-workbench-base/src/locales/en-US/pageValue/AutoRegisterValidate.ts +29 -0
  89. package/lib/templates/qiankun/cf-workbench-base/src/locales/en-US/pageValue/ClientDownloadDashboard.ts +17 -0
  90. package/lib/templates/qiankun/cf-workbench-base/src/locales/en-US/pageValue/ClientPermission.ts +55 -0
  91. package/lib/templates/qiankun/cf-workbench-base/src/locales/en-US/pageValue/ClientStatus.ts +7 -0
  92. package/lib/templates/qiankun/cf-workbench-base/src/locales/en-US/pageValue/ClientVersion.ts +57 -0
  93. package/lib/templates/qiankun/cf-workbench-base/src/locales/en-US/pageValue/Dictionary.ts +57 -0
  94. package/lib/templates/qiankun/cf-workbench-base/src/locales/en-US/pageValue/File.ts +34 -0
  95. package/lib/templates/qiankun/cf-workbench-base/src/locales/en-US/pageValue/JobLog.ts +27 -0
  96. package/lib/templates/qiankun/cf-workbench-base/src/locales/en-US/pageValue/Menu.ts +78 -0
  97. package/lib/templates/qiankun/cf-workbench-base/src/locales/en-US/pageValue/MenuPermission.ts +54 -0
  98. package/lib/templates/qiankun/cf-workbench-base/src/locales/en-US/pageValue/OperationLog.ts +60 -0
  99. package/lib/templates/qiankun/cf-workbench-base/src/locales/en-US/pageValue/Role.ts +69 -0
  100. package/lib/templates/qiankun/cf-workbench-base/src/locales/en-US/pageValue/SelectPermission.ts +4 -0
  101. package/lib/templates/qiankun/cf-workbench-base/src/locales/en-US/pageValue/SoftwareEcology.ts +39 -0
  102. package/lib/templates/qiankun/cf-workbench-base/src/locales/en-US/pageValue/SystemJob.ts +69 -0
  103. package/lib/templates/qiankun/cf-workbench-base/src/locales/en-US/pageValue/Template.tsx +31 -0
  104. package/lib/templates/qiankun/cf-workbench-base/src/locales/en-US/pageValue/TimeZone.ts +31 -0
  105. package/lib/templates/qiankun/cf-workbench-base/src/locales/en-US/pageValue/User.ts +85 -0
  106. package/lib/templates/qiankun/cf-workbench-base/src/locales/en-US/pageValue/index.ts +49 -0
  107. package/lib/templates/qiankun/cf-workbench-base/src/locales/en-US/settings.ts +136 -0
  108. package/lib/templates/qiankun/cf-workbench-base/src/locales/en-US.ts +5 -0
  109. package/lib/templates/qiankun/cf-workbench-base/src/locales/th-TH.ts +5 -0
  110. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-CN/commonMsg.ts +48 -0
  111. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-CN/index.ts +11 -0
  112. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-CN/menu.ts +103 -0
  113. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-CN/pageValue/AndroidClientVersion.ts +61 -0
  114. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-CN/pageValue/AutoRegisterValidate.ts +29 -0
  115. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-CN/pageValue/ClientDownloadDashboard.ts +17 -0
  116. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-CN/pageValue/ClientPermission.ts +55 -0
  117. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-CN/pageValue/ClientStatus.ts +7 -0
  118. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-CN/pageValue/ClientVersion.ts +56 -0
  119. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-CN/pageValue/Dictionary.ts +60 -0
  120. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-CN/pageValue/File.ts +34 -0
  121. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-CN/pageValue/JobLog.ts +27 -0
  122. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-CN/pageValue/Menu.ts +78 -0
  123. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-CN/pageValue/MenuPermission.ts +55 -0
  124. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-CN/pageValue/OperationLog.ts +62 -0
  125. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-CN/pageValue/Role.ts +72 -0
  126. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-CN/pageValue/SelectPermission.ts +4 -0
  127. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-CN/pageValue/SoftwareEcology.ts +39 -0
  128. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-CN/pageValue/SystemJob.ts +68 -0
  129. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-CN/pageValue/Template.tsx +31 -0
  130. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-CN/pageValue/TimeZone.ts +31 -0
  131. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-CN/pageValue/User.ts +85 -0
  132. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-CN/pageValue/index.ts +49 -0
  133. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-CN/settings.ts +128 -0
  134. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-CN.ts +5 -0
  135. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-TW/commonMsg.ts +54 -0
  136. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-TW/index.ts +11 -0
  137. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-TW/menu.ts +103 -0
  138. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-TW/pageValue/AndroidClientVersion.ts +61 -0
  139. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-TW/pageValue/AutoRegisterValidate.ts +29 -0
  140. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-TW/pageValue/ClientDownloadDashboard.ts +17 -0
  141. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-TW/pageValue/ClientPermission.ts +55 -0
  142. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-TW/pageValue/ClientStatus.ts +7 -0
  143. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-TW/pageValue/ClientVersion.ts +56 -0
  144. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-TW/pageValue/Dictionary.ts +60 -0
  145. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-TW/pageValue/File.ts +34 -0
  146. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-TW/pageValue/JobLog.ts +27 -0
  147. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-TW/pageValue/Menu.ts +78 -0
  148. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-TW/pageValue/MenuPermission.ts +55 -0
  149. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-TW/pageValue/OperationLog.ts +62 -0
  150. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-TW/pageValue/Role.ts +69 -0
  151. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-TW/pageValue/SelectPermission.ts +4 -0
  152. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-TW/pageValue/SoftwareEcology.ts +39 -0
  153. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-TW/pageValue/SystemJob.ts +68 -0
  154. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-TW/pageValue/Template.tsx +31 -0
  155. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-TW/pageValue/TimeZone.ts +31 -0
  156. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-TW/pageValue/User.ts +81 -0
  157. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-TW/pageValue/index.ts +49 -0
  158. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-TW/settings.ts +130 -0
  159. package/lib/templates/qiankun/cf-workbench-base/src/locales/zh-TW.ts +5 -0
  160. package/lib/templates/qiankun/cf-workbench-base/src/models/global.ts +96 -0
  161. package/lib/templates/qiankun/cf-workbench-base/src/models/globalRef.ts +19 -0
  162. package/lib/templates/qiankun/cf-workbench-base/src/models/login.ts +47 -0
  163. package/lib/templates/qiankun/cf-workbench-base/src/models/user.ts +140 -0
  164. package/lib/templates/qiankun/cf-workbench-base/src/overrides.less +43 -0
  165. package/lib/templates/qiankun/cf-workbench-base/src/pages/404.tsx +3 -0
  166. package/lib/templates/qiankun/cf-workbench-base/src/pages/Client/ClientPermission/components/ClientPermissionSelecter.tsx +167 -0
  167. package/lib/templates/qiankun/cf-workbench-base/src/pages/Client/ClientPermission/components/UpdateForm.tsx +105 -0
  168. package/lib/templates/qiankun/cf-workbench-base/src/pages/Client/ClientPermission/data.d.ts +39 -0
  169. package/lib/templates/qiankun/cf-workbench-base/src/pages/Client/ClientPermission/index.tsx +172 -0
  170. package/lib/templates/qiankun/cf-workbench-base/src/pages/Client/ClientPermission/service.ts +28 -0
  171. package/lib/templates/qiankun/cf-workbench-base/src/pages/Client/androidClientVersion/components/UpdateForm.tsx +118 -0
  172. package/lib/templates/qiankun/cf-workbench-base/src/pages/Client/androidClientVersion/data.d.ts +58 -0
  173. package/lib/templates/qiankun/cf-workbench-base/src/pages/Client/androidClientVersion/dataMap.ts +36 -0
  174. package/lib/templates/qiankun/cf-workbench-base/src/pages/Client/androidClientVersion/index.tsx +164 -0
  175. package/lib/templates/qiankun/cf-workbench-base/src/pages/Client/androidClientVersion/service.ts +51 -0
  176. package/lib/templates/qiankun/cf-workbench-base/src/pages/Client/clientDownloadDashboard/index.tsx +460 -0
  177. package/lib/templates/qiankun/cf-workbench-base/src/pages/Client/clientDownloadDashboard/service.ts +28 -0
  178. package/lib/templates/qiankun/cf-workbench-base/src/pages/Client/clientVersion/components/UpdateForm.tsx +187 -0
  179. package/lib/templates/qiankun/cf-workbench-base/src/pages/Client/clientVersion/data.d.ts +60 -0
  180. package/lib/templates/qiankun/cf-workbench-base/src/pages/Client/clientVersion/index.tsx +178 -0
  181. package/lib/templates/qiankun/cf-workbench-base/src/pages/Client/clientVersion/service.ts +28 -0
  182. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/AccountandSettings/components/BaseView.less +56 -0
  183. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/AccountandSettings/components/LocaleSetting.tsx +87 -0
  184. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/AccountandSettings/components/base.tsx +146 -0
  185. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/AccountandSettings/components/changePassword.tsx +106 -0
  186. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/AccountandSettings/components/notification.tsx +47 -0
  187. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/AccountandSettings/index.tsx +119 -0
  188. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/AccountandSettings/style.less +95 -0
  189. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/Dictionary/components/UpdateForm.tsx +84 -0
  190. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/Dictionary/data.d.ts +34 -0
  191. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/Dictionary/index.tsx +104 -0
  192. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/Dictionary/service.ts +35 -0
  193. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/Menu/components/MenuDropDownList.tsx +105 -0
  194. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/Menu/components/UpdateForm.tsx +177 -0
  195. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/Menu/data.d.ts +39 -0
  196. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/Menu/index.tsx +334 -0
  197. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/Menu/service.ts +34 -0
  198. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/MenuPermission/components/UpdateForm.tsx +79 -0
  199. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/MenuPermission/data.d.ts +32 -0
  200. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/MenuPermission/index.tsx +315 -0
  201. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/MenuPermission/service.ts +34 -0
  202. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/Role/components/CreateForm.tsx +189 -0
  203. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/Role/components/SelectRole.tsx +158 -0
  204. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/Role/components/UpdateForm.tsx +199 -0
  205. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/Role/data.d.ts +48 -0
  206. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/Role/index.tsx +261 -0
  207. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/Role/service.ts +44 -0
  208. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/SoftwareEcology/components/UpdateForm.tsx +170 -0
  209. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/SoftwareEcology/data.d.ts +18 -0
  210. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/SoftwareEcology/index.tsx +265 -0
  211. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/SoftwareEcology/services.ts +28 -0
  212. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/Template/components/TemplateDownloadModal.tsx +226 -0
  213. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/Template/components/UpdateForm.tsx +135 -0
  214. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/Template/data.d.ts +22 -0
  215. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/Template/index.tsx +277 -0
  216. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/Template/map.ts +8 -0
  217. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/Template/services.ts +32 -0
  218. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/TimeZone/components/UpdateForm.tsx +74 -0
  219. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/TimeZone/data.d.ts +13 -0
  220. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/TimeZone/index.tsx +91 -0
  221. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/TimeZone/services.ts +32 -0
  222. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/User/components/CreateForm.tsx +235 -0
  223. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/User/components/Selectuser.tsx +113 -0
  224. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/User/components/UpdateForm.tsx +222 -0
  225. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/User/components/UserListModal.tsx +171 -0
  226. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/User/components/UserWorkCenterMappingSelector.tsx +108 -0
  227. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/User/data.d.ts +69 -0
  228. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/User/index.tsx +445 -0
  229. package/lib/templates/qiankun/cf-workbench-base/src/pages/System/User/service.ts +84 -0
  230. package/lib/templates/qiankun/cf-workbench-base/src/pages/SystemJob/JobLog/data.d.ts +34 -0
  231. package/lib/templates/qiankun/cf-workbench-base/src/pages/SystemJob/JobLog/index.tsx +150 -0
  232. package/lib/templates/qiankun/cf-workbench-base/src/pages/SystemJob/JobLog/service.ts +10 -0
  233. package/lib/templates/qiankun/cf-workbench-base/src/pages/SystemJob/SystemJob/components/UpdateForm.tsx +145 -0
  234. package/lib/templates/qiankun/cf-workbench-base/src/pages/SystemJob/SystemJob/data.d.ts +35 -0
  235. package/lib/templates/qiankun/cf-workbench-base/src/pages/SystemJob/SystemJob/index.tsx +402 -0
  236. package/lib/templates/qiankun/cf-workbench-base/src/pages/SystemJob/SystemJob/service.ts +22 -0
  237. package/lib/templates/qiankun/cf-workbench-base/src/pages/SystemLog/OperationLog/data.d.ts +38 -0
  238. package/lib/templates/qiankun/cf-workbench-base/src/pages/SystemLog/OperationLog/index.tsx +144 -0
  239. package/lib/templates/qiankun/cf-workbench-base/src/pages/SystemLog/OperationLog/service.ts +16 -0
  240. package/lib/templates/qiankun/cf-workbench-base/src/pages/UserDisable.tsx +3 -0
  241. package/lib/templates/qiankun/cf-workbench-base/src/pages/UserNoPagePermission.tsx +3 -0
  242. package/lib/templates/qiankun/cf-workbench-base/src/pages/UserNoPermission.tsx +3 -0
  243. package/lib/templates/qiankun/cf-workbench-base/src/pages/document.ejs +201 -0
  244. package/lib/templates/qiankun/cf-workbench-base/src/services/file.ts +16 -0
  245. package/lib/templates/qiankun/cf-workbench-base/src/services/user.ts +22 -0
  246. package/lib/templates/qiankun/cf-workbench-base/src/typings.d.ts +32 -0
  247. package/lib/templates/qiankun/cf-workbench-base/src/utils/keycloak.ts +81 -0
  248. package/lib/templates/qiankun/cf-workbench-base/src/utils/qiankunConfig.ts +75 -0
  249. package/lib/templates/qiankun/cf-workbench-base/src/utils/request.ts +45 -0
  250. package/lib/templates/qiankun/cf-workbench-base/tsconfig.json +3 -0
  251. package/lib/templates/qiankun/cf-workbench-base/typings.d.ts +1 -0
  252. package/lib/templates/qiankun/cf-workbench-function/.env +1 -0
  253. package/lib/templates/qiankun/cf-workbench-function/.eslintrc.js +8 -0
  254. package/lib/templates/qiankun/cf-workbench-function/.husky/commit-msg +1 -0
  255. package/lib/templates/qiankun/cf-workbench-function/.husky/pre-commit +1 -0
  256. package/lib/templates/qiankun/cf-workbench-function/.lintstagedrc +17 -0
  257. package/lib/templates/qiankun/cf-workbench-function/.prettierignore +3 -0
  258. package/lib/templates/qiankun/cf-workbench-function/.prettierrc +8 -0
  259. package/lib/templates/qiankun/cf-workbench-function/.stylelintrc.js +3 -0
  260. package/lib/templates/qiankun/cf-workbench-function/.yarnrc.yml +1 -0
  261. package/lib/templates/qiankun/cf-workbench-function/Dockerfile +11 -0
  262. package/lib/templates/qiankun/cf-workbench-function/README.md +3 -0
  263. package/lib/templates/qiankun/cf-workbench-function/config/config.develop.ts +23 -0
  264. package/lib/templates/qiankun/cf-workbench-function/config/config.local.ts +21 -0
  265. package/lib/templates/qiankun/cf-workbench-function/config/config.production.ts +22 -0
  266. package/lib/templates/qiankun/cf-workbench-function/config/config.ts +30 -0
  267. package/lib/templates/qiankun/cf-workbench-function/config/routes.ts +438 -0
  268. package/lib/templates/qiankun/cf-workbench-function/mock/userAPI.ts +20 -0
  269. package/lib/templates/qiankun/cf-workbench-function/package.json +50 -0
  270. package/lib/templates/qiankun/cf-workbench-function/src/app.tsx +9 -0
  271. package/lib/templates/qiankun/cf-workbench-function/src/assets/.gitkeep +0 -0
  272. package/lib/templates/qiankun/cf-workbench-function/src/assets/logo.png +0 -0
  273. package/lib/templates/qiankun/cf-workbench-function/src/assets/user.png +0 -0
  274. package/lib/templates/qiankun/cf-workbench-function/src/components/DicDropDownList/index.tsx +81 -0
  275. package/lib/templates/qiankun/cf-workbench-function/src/components/Flow/ContextMenu/index.less +19 -0
  276. package/lib/templates/qiankun/cf-workbench-function/src/components/Flow/ContextMenu/index.tsx +53 -0
  277. package/lib/templates/qiankun/cf-workbench-function/src/components/Flow/CustomDndPanel/index.less +32 -0
  278. package/lib/templates/qiankun/cf-workbench-function/src/components/Flow/CustomDndPanel/index.tsx +121 -0
  279. package/lib/templates/qiankun/cf-workbench-function/src/components/Flow/CustomNode/ConnectionLine.tsx +33 -0
  280. package/lib/templates/qiankun/cf-workbench-function/src/components/Flow/CustomNode/CustomBezierEdge.tsx +54 -0
  281. package/lib/templates/qiankun/cf-workbench-function/src/components/Flow/CustomNode/GroupNode.tsx +162 -0
  282. package/lib/templates/qiankun/cf-workbench-function/src/components/Flow/CustomNode/RectNode.tsx +200 -0
  283. package/lib/templates/qiankun/cf-workbench-function/src/components/Flow/CustomNode/TextNode.tsx +50 -0
  284. package/lib/templates/qiankun/cf-workbench-function/src/components/Flow/CustomNode/createNodeWithExtras.tsx +12 -0
  285. package/lib/templates/qiankun/cf-workbench-function/src/components/Flow/CustomNode/index.less +50 -0
  286. package/lib/templates/qiankun/cf-workbench-function/src/components/Flow/CustomNode/types.d.ts +47 -0
  287. package/lib/templates/qiankun/cf-workbench-function/src/components/Flow/CustomNode/utils.ts +67 -0
  288. package/lib/templates/qiankun/cf-workbench-function/src/components/Flow/FlowControl/data.d.ts +18 -0
  289. package/lib/templates/qiankun/cf-workbench-function/src/components/Flow/FlowControl/index.less +17 -0
  290. package/lib/templates/qiankun/cf-workbench-function/src/components/Flow/FlowControl/index.tsx +350 -0
  291. package/lib/templates/qiankun/cf-workbench-function/src/components/Flow/NodeBadge/index.tsx +39 -0
  292. package/lib/templates/qiankun/cf-workbench-function/src/components/Flow/UpdateEdgeDrawer/index.less +21 -0
  293. package/lib/templates/qiankun/cf-workbench-function/src/components/Flow/UpdateEdgeDrawer/index.tsx +87 -0
  294. package/lib/templates/qiankun/cf-workbench-function/src/components/Flow/UpdateNodeDrawer/index.less +21 -0
  295. package/lib/templates/qiankun/cf-workbench-function/src/components/Flow/UpdateNodeDrawer/index.tsx +195 -0
  296. package/lib/templates/qiankun/cf-workbench-function/src/components/Flow/hooks/useFlowHooks.ts +813 -0
  297. package/lib/templates/qiankun/cf-workbench-function/src/components/Flow/index.ts +26 -0
  298. package/lib/templates/qiankun/cf-workbench-function/src/components/LogicFlow/FlowControl/data.d.ts +12 -0
  299. package/lib/templates/qiankun/cf-workbench-function/src/components/LogicFlow/FlowControl/index.less +18 -0
  300. package/lib/templates/qiankun/cf-workbench-function/src/components/LogicFlow/FlowControl/index.tsx +375 -0
  301. package/lib/templates/qiankun/cf-workbench-function/src/components/LogicFlow/FlowNodePanel/index.less +32 -0
  302. package/lib/templates/qiankun/cf-workbench-function/src/components/LogicFlow/FlowNodePanel/index.tsx +61 -0
  303. package/lib/templates/qiankun/cf-workbench-function/src/components/LogicFlow/UpdateAnchorPropertyDrawer.tsx +134 -0
  304. package/lib/templates/qiankun/cf-workbench-function/src/components/LogicFlow/UpdateArrowPropertyDrawer.tsx +125 -0
  305. package/lib/templates/qiankun/cf-workbench-function/src/components/LogicFlow/UpdateLinePropertyDrawer.tsx +242 -0
  306. package/lib/templates/qiankun/cf-workbench-function/src/components/LogicFlow/UpdatePropertyDrawer.tsx +369 -0
  307. package/lib/templates/qiankun/cf-workbench-function/src/components/LogicFlow/UpdateSettingsDrawer.tsx +236 -0
  308. package/lib/templates/qiankun/cf-workbench-function/src/components/LogicFlow/types.ts +13 -0
  309. package/lib/templates/qiankun/cf-workbench-function/src/components/LogicFlowNode/CustomGroupNode.tsx +72 -0
  310. package/lib/templates/qiankun/cf-workbench-function/src/components/LogicFlowNode/CustomLineNode.tsx +130 -0
  311. package/lib/templates/qiankun/cf-workbench-function/src/components/LogicFlowNode/CustomMachineImageNode.tsx +271 -0
  312. package/lib/templates/qiankun/cf-workbench-function/src/components/LogicFlowNode/CustomPolylineEdge.tsx +201 -0
  313. package/lib/templates/qiankun/cf-workbench-function/src/components/LogicFlowNode/CustomTextNode.tsx +60 -0
  314. package/lib/templates/qiankun/cf-workbench-function/src/components/LogicFlowNode/index.ts +13 -0
  315. package/lib/templates/qiankun/cf-workbench-function/src/components/LogicFlowNode/types.d.ts +47 -0
  316. package/lib/templates/qiankun/cf-workbench-function/src/constants/DnDContext.tsx +56 -0
  317. package/lib/templates/qiankun/cf-workbench-function/src/constants/dataMap.ts +160 -0
  318. package/lib/templates/qiankun/cf-workbench-function/src/constants/index.ts +53 -0
  319. package/lib/templates/qiankun/cf-workbench-function/src/constants/logicFlowConfig.tsx +69 -0
  320. package/lib/templates/qiankun/cf-workbench-function/src/global.less +58 -0
  321. package/lib/templates/qiankun/cf-workbench-function/src/hooks/useQiankunData.ts +168 -0
  322. package/lib/templates/qiankun/cf-workbench-function/src/hooks/useWebSocket.ts +122 -0
  323. package/lib/templates/qiankun/cf-workbench-function/src/layouts/index.tsx +12 -0
  324. package/lib/templates/qiankun/cf-workbench-function/src/lib/echarts/i18n/langHK.ts +136 -0
  325. package/lib/templates/qiankun/cf-workbench-function/src/loading.tsx +4 -0
  326. package/lib/templates/qiankun/cf-workbench-function/src/locales/en-US/commonMsg.ts +127 -0
  327. package/lib/templates/qiankun/cf-workbench-function/src/locales/en-US/index.ts +11 -0
  328. package/lib/templates/qiankun/cf-workbench-function/src/locales/en-US/lib/Flow.ts +159 -0
  329. package/lib/templates/qiankun/cf-workbench-function/src/locales/en-US/lib/index.ts +5 -0
  330. package/lib/templates/qiankun/cf-workbench-function/src/locales/en-US/menu.ts +90 -0
  331. package/lib/templates/qiankun/cf-workbench-function/src/locales/en-US/pageValue/ClientPermission.ts +55 -0
  332. package/lib/templates/qiankun/cf-workbench-function/src/locales/en-US/pageValue/Company.ts +51 -0
  333. package/lib/templates/qiankun/cf-workbench-function/src/locales/en-US/pageValue/Department.ts +50 -0
  334. package/lib/templates/qiankun/cf-workbench-function/src/locales/en-US/pageValue/Employee.ts +72 -0
  335. package/lib/templates/qiankun/cf-workbench-function/src/locales/en-US/pageValue/Factory.ts +54 -0
  336. package/lib/templates/qiankun/cf-workbench-function/src/locales/en-US/pageValue/FactoryProfile.ts +19 -0
  337. package/lib/templates/qiankun/cf-workbench-function/src/locales/en-US/pageValue/File.ts +34 -0
  338. package/lib/templates/qiankun/cf-workbench-function/src/locales/en-US/pageValue/Group.ts +50 -0
  339. package/lib/templates/qiankun/cf-workbench-function/src/locales/en-US/pageValue/GuidelineAttachmentQuery.ts +27 -0
  340. package/lib/templates/qiankun/cf-workbench-function/src/locales/en-US/pageValue/GuidelineAttachmentUpload.ts +16 -0
  341. package/lib/templates/qiankun/cf-workbench-function/src/locales/en-US/pageValue/Post.ts +50 -0
  342. package/lib/templates/qiankun/cf-workbench-function/src/locales/en-US/pageValue/WorkCenter.ts +40 -0
  343. package/lib/templates/qiankun/cf-workbench-function/src/locales/en-US/pageValue/index.ts +38 -0
  344. package/lib/templates/qiankun/cf-workbench-function/src/locales/en-US.ts +5 -0
  345. package/lib/templates/qiankun/cf-workbench-function/src/locales/th-TH.ts +5 -0
  346. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-CN/commonMsg.ts +126 -0
  347. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-CN/index.ts +11 -0
  348. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-CN/lib/Flow.ts +161 -0
  349. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-CN/lib/index.ts +5 -0
  350. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-CN/menu.ts +89 -0
  351. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-CN/pageValue/ClientPermission.ts +59 -0
  352. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-CN/pageValue/Company.ts +55 -0
  353. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-CN/pageValue/Department.ts +49 -0
  354. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-CN/pageValue/Employee.ts +73 -0
  355. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-CN/pageValue/Factory.ts +59 -0
  356. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-CN/pageValue/FactoryProfile.ts +19 -0
  357. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-CN/pageValue/File.ts +34 -0
  358. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-CN/pageValue/Group.ts +50 -0
  359. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-CN/pageValue/GuidelineAttachmentQuery.ts +26 -0
  360. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-CN/pageValue/GuidelineAttachmentUpload.ts +15 -0
  361. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-CN/pageValue/Post.ts +50 -0
  362. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-CN/pageValue/WorkCenter.ts +40 -0
  363. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-CN/pageValue/index.ts +38 -0
  364. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-CN.ts +5 -0
  365. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/commonMsg.ts +126 -0
  366. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/index.ts +11 -0
  367. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/lib/Flow.ts +143 -0
  368. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/lib/index.ts +5 -0
  369. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/menu.ts +90 -0
  370. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/pageValue/ClientPermission.ts +55 -0
  371. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/pageValue/Company.ts +55 -0
  372. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/pageValue/Defect.ts +57 -0
  373. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/pageValue/Department.ts +49 -0
  374. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/pageValue/Employee.ts +72 -0
  375. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/pageValue/Factory.ts +59 -0
  376. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/pageValue/FactoryProfile.ts +19 -0
  377. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/pageValue/File.ts +34 -0
  378. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/pageValue/Group.ts +50 -0
  379. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/pageValue/GuidelineAttachmentQuery.ts +26 -0
  380. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/pageValue/GuidelineAttachmentUpload.ts +15 -0
  381. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/pageValue/Post.ts +50 -0
  382. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/pageValue/WorkCenter.ts +40 -0
  383. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/pageValue/index.ts +38 -0
  384. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/pageValue/report/EmployeeTimeReport.ts +18 -0
  385. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/pageValue/report/FactoryProductionReport.ts +38 -0
  386. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/pageValue/report/JobOrderProductionData.ts +32 -0
  387. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/pageValue/report/MachineEfficiencyAnalysisReport.ts +26 -0
  388. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/pageValue/report/MachineLatestProductionData.ts +33 -0
  389. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/pageValue/report/MachineOperateProductionReport.ts +80 -0
  390. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/pageValue/report/MachineProductionData.ts +36 -0
  391. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/pageValue/report/MachineProductionDayReport.ts +20 -0
  392. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW/pageValue/report/MachineStatusLogRecordData.ts +31 -0
  393. package/lib/templates/qiankun/cf-workbench-function/src/locales/zh-TW.ts +5 -0
  394. package/lib/templates/qiankun/cf-workbench-function/src/overrides.less +41 -0
  395. package/lib/templates/qiankun/cf-workbench-function/src/pages/BaseManagement/Company/components/CompanyDropDownList.tsx +55 -0
  396. package/lib/templates/qiankun/cf-workbench-function/src/pages/BaseManagement/Company/components/UpdateForm.tsx +79 -0
  397. package/lib/templates/qiankun/cf-workbench-function/src/pages/BaseManagement/Company/data.d.ts +32 -0
  398. package/lib/templates/qiankun/cf-workbench-function/src/pages/BaseManagement/Company/index.tsx +104 -0
  399. package/lib/templates/qiankun/cf-workbench-function/src/pages/BaseManagement/Company/service.ts +28 -0
  400. package/lib/templates/qiankun/cf-workbench-function/src/pages/BaseManagement/Factory/components/FactoryDropDownList.tsx +57 -0
  401. package/lib/templates/qiankun/cf-workbench-function/src/pages/BaseManagement/Factory/components/UpdateForm.tsx +108 -0
  402. package/lib/templates/qiankun/cf-workbench-function/src/pages/BaseManagement/Factory/data.d.ts +36 -0
  403. package/lib/templates/qiankun/cf-workbench-function/src/pages/BaseManagement/Factory/index.tsx +139 -0
  404. package/lib/templates/qiankun/cf-workbench-function/src/pages/BaseManagement/Factory/service.ts +28 -0
  405. package/lib/templates/qiankun/cf-workbench-function/src/pages/BaseManagement/WorkCenter/components/UpdateForm.tsx +128 -0
  406. package/lib/templates/qiankun/cf-workbench-function/src/pages/BaseManagement/WorkCenter/data.d.ts +31 -0
  407. package/lib/templates/qiankun/cf-workbench-function/src/pages/BaseManagement/WorkCenter/index.tsx +288 -0
  408. package/lib/templates/qiankun/cf-workbench-function/src/pages/BaseManagement/WorkCenter/services.ts +32 -0
  409. package/lib/templates/qiankun/cf-workbench-function/src/pages/Client/ClientPermission/components/ClientPermissionSelecter.tsx +167 -0
  410. package/lib/templates/qiankun/cf-workbench-function/src/pages/Client/ClientPermission/data.d.ts +39 -0
  411. package/lib/templates/qiankun/cf-workbench-function/src/pages/Client/ClientPermission/service.ts +39 -0
  412. package/lib/templates/qiankun/cf-workbench-function/src/pages/EmployeeManagement/Department/components/DepartmentDropDownList.tsx +58 -0
  413. package/lib/templates/qiankun/cf-workbench-function/src/pages/EmployeeManagement/Department/components/UpdateForm.tsx +108 -0
  414. package/lib/templates/qiankun/cf-workbench-function/src/pages/EmployeeManagement/Department/data.d.ts +37 -0
  415. package/lib/templates/qiankun/cf-workbench-function/src/pages/EmployeeManagement/Department/index.tsx +122 -0
  416. package/lib/templates/qiankun/cf-workbench-function/src/pages/EmployeeManagement/Department/service.ts +28 -0
  417. package/lib/templates/qiankun/cf-workbench-function/src/pages/EmployeeManagement/Employee/components/UpdateForm.tsx +232 -0
  418. package/lib/templates/qiankun/cf-workbench-function/src/pages/EmployeeManagement/Employee/data.d.ts +64 -0
  419. package/lib/templates/qiankun/cf-workbench-function/src/pages/EmployeeManagement/Employee/index.tsx +326 -0
  420. package/lib/templates/qiankun/cf-workbench-function/src/pages/EmployeeManagement/Employee/service.ts +28 -0
  421. package/lib/templates/qiankun/cf-workbench-function/src/pages/EmployeeManagement/Group/components/GroupDropDownList.tsx +56 -0
  422. package/lib/templates/qiankun/cf-workbench-function/src/pages/EmployeeManagement/Group/components/UpdateForm.tsx +108 -0
  423. package/lib/templates/qiankun/cf-workbench-function/src/pages/EmployeeManagement/Group/data.d.ts +34 -0
  424. package/lib/templates/qiankun/cf-workbench-function/src/pages/EmployeeManagement/Group/index.tsx +121 -0
  425. package/lib/templates/qiankun/cf-workbench-function/src/pages/EmployeeManagement/Group/service.ts +28 -0
  426. package/lib/templates/qiankun/cf-workbench-function/src/pages/EmployeeManagement/Post/components/PostDropDownList.tsx +56 -0
  427. package/lib/templates/qiankun/cf-workbench-function/src/pages/EmployeeManagement/Post/components/UpdateForm.tsx +174 -0
  428. package/lib/templates/qiankun/cf-workbench-function/src/pages/EmployeeManagement/Post/data.d.ts +42 -0
  429. package/lib/templates/qiankun/cf-workbench-function/src/pages/EmployeeManagement/Post/index.tsx +183 -0
  430. package/lib/templates/qiankun/cf-workbench-function/src/pages/EmployeeManagement/Post/service.ts +28 -0
  431. package/lib/templates/qiankun/cf-workbench-function/src/pages/GuidelineManagement/GuidelineAttachmentQuery/data.d.ts +18 -0
  432. package/lib/templates/qiankun/cf-workbench-function/src/pages/GuidelineManagement/GuidelineAttachmentQuery/index.tsx +169 -0
  433. package/lib/templates/qiankun/cf-workbench-function/src/pages/GuidelineManagement/GuidelineAttachmentQuery/service.ts +10 -0
  434. package/lib/templates/qiankun/cf-workbench-function/src/pages/GuidelineManagement/GuidelineAttachmentUpload/components/GuidelineAttachment.tsx +275 -0
  435. package/lib/templates/qiankun/cf-workbench-function/src/pages/GuidelineManagement/GuidelineAttachmentUpload/components/service.ts +25 -0
  436. package/lib/templates/qiankun/cf-workbench-function/src/pages/GuidelineManagement/GuidelineAttachmentUpload/data.d.ts +17 -0
  437. package/lib/templates/qiankun/cf-workbench-function/src/pages/GuidelineManagement/GuidelineAttachmentUpload/index.tsx +71 -0
  438. package/lib/templates/qiankun/cf-workbench-function/src/services/file.ts +16 -0
  439. package/lib/templates/qiankun/cf-workbench-function/src/services/index.ts +15 -0
  440. package/lib/templates/qiankun/cf-workbench-function/src/services/user.ts +16 -0
  441. package/lib/templates/qiankun/cf-workbench-function/src/typings.d.ts +35 -0
  442. package/lib/templates/qiankun/cf-workbench-function/src/utils/qiankunConfig.ts +23 -0
  443. package/lib/templates/qiankun/cf-workbench-function/src/utils/request.ts +46 -0
  444. package/lib/templates/qiankun/cf-workbench-function/tsconfig.json +3 -0
  445. package/lib/templates/qiankun/cf-workbench-function/typings.d.ts +1 -0
  446. package/lib/utils/version.js +148 -0
  447. package/package.json +2 -3
@@ -0,0 +1,813 @@
1
+ import {
2
+ CustomBezierEdge,
3
+ GroupNode,
4
+ groupNodeDefaultStyle,
5
+ RectNode,
6
+ rectNodeDefaultStyle,
7
+ TextNode,
8
+ textNodeDefaultStyle,
9
+ } from '@/components/Flow';
10
+ import { ContextMenuProps } from '@/components/Flow/ContextMenu';
11
+ import { BaseNodeDataType } from '@/components/Flow/CustomNode/types';
12
+ import { DragEnum, EdgeEnum, useDnD } from '@/constants';
13
+ import { useIntl, useMemoizedFn } from '@umijs/max';
14
+ import {
15
+ addEdge,
16
+ EdgeTypes,
17
+ isNode,
18
+ IsValidConnection,
19
+ MarkerType,
20
+ NodeMouseHandler,
21
+ NodeTypes,
22
+ OnConnect,
23
+ OnNodeDrag,
24
+ OnSelectionChangeFunc,
25
+ Position,
26
+ useReactFlow,
27
+ XYPosition,
28
+ type Edge,
29
+ type Node,
30
+ } from '@xyflow/react';
31
+ import { MenuProps } from 'antd';
32
+ import React, { useEffect, useMemo, useState } from 'react';
33
+ import { v4 as uuidv4 } from 'uuid';
34
+
35
+ type DeepGetPositionFn = (parentId: string | undefined, position: XYPosition) => XYPosition;
36
+
37
+ export enum NodeMenuEnum {
38
+ VIEW = 'view',
39
+ DETAILS = 'details',
40
+ EDIT = 'edit',
41
+ SETTING = 'setting',
42
+ COPY = 'copy',
43
+ DELETE = 'delete',
44
+ }
45
+
46
+ // 菜单项配置类型
47
+ interface MenuItemConfig<NodeData extends Record<string, unknown> = any> {
48
+ key: NodeMenuEnum;
49
+ label: string;
50
+ danger?: boolean;
51
+ action: (node: Node<NodeData>) => void;
52
+ }
53
+
54
+ export interface FlowHooksReturnType<
55
+ NodeType extends Node<Record<string, unknown>, string | undefined>,
56
+ EdgeType extends Edge<Record<string, unknown>, string | undefined>,
57
+ > {
58
+ /** 注册节点 */
59
+ nodeTypes?: NodeTypes;
60
+ /** 注册线 */
61
+ edgeTypes: EdgeTypes;
62
+ /** 连线方法 */
63
+ onConnect: OnConnect;
64
+ /** 连线校验 */
65
+ isValidConnection: IsValidConnection;
66
+ /** 节点点击 */
67
+ onNodeClick: NodeMouseHandler<NodeType>;
68
+ /** 拖动面板中的节点 */
69
+ onDrop: (event: React.DragEvent<HTMLDivElement>) => void;
70
+ /** 拖动面板中的节点结束 */
71
+ onDragOver: (event: React.DragEvent<HTMLDivElement>) => void;
72
+ /** 拖动画布中的节点 */
73
+ onNodeDrag: OnNodeDrag;
74
+ /** 拖动画布中的节点结束 */
75
+ onNodeDragStop: OnNodeDrag;
76
+ /** 复制节点 */
77
+ copyNode: (originNode: NodeType) => void;
78
+ /** 右键上下文菜单 */
79
+ onContextMenu: (event: Parameters<NodeMouseHandler>['0'], data: Node | Edge) => void;
80
+ /** 右键上下文菜单 */
81
+ contextMenu: ContextMenuProps | null;
82
+
83
+ /** 查看节点 */
84
+ viewNode: NodeType | null;
85
+ /** 设置查看的节点 */
86
+ setViewNode: React.Dispatch<React.SetStateAction<NodeType | null>>;
87
+ /** 修改节点 */
88
+ editNode: NodeType | null;
89
+ /** 修改内容的线 */
90
+ editEdge: EdgeType | null;
91
+ /** 设置修改内容的节点 */
92
+ setEditNode: React.Dispatch<React.SetStateAction<NodeType | null>>;
93
+ /** 设置修改内容的线 */
94
+ setEditEdge: React.Dispatch<React.SetStateAction<EdgeType | null>>;
95
+
96
+ /** 配置的节点 */
97
+ nodeSetting: NodeType | null;
98
+ /** 设置配置的节点 */
99
+ setNodeSetting: React.Dispatch<React.SetStateAction<NodeType | null>>;
100
+ /** 配置的线 */
101
+ edgeSetting: EdgeType | null;
102
+ /** 设置配置的线 */
103
+ setEdgeSetting: React.Dispatch<React.SetStateAction<EdgeType | null>>;
104
+
105
+ /** 选区中的线 */
106
+ selectedEdges: Edge[];
107
+ /** 选区中的节点 */
108
+ selectedNodes: Node[];
109
+ /** 选区变化 */
110
+ onSelectionChange: OnSelectionChangeFunc;
111
+
112
+ /** 递归获取父元素相对于画布的位置 */
113
+ deepGetPosition: DeepGetPositionFn;
114
+ /** 获取可以拖动进去的节点 */
115
+ getCanDragInNodes: (node: Node) => Node[];
116
+ }
117
+
118
+ // 节点右键菜单配置
119
+ const nodeMenuMap: Record<DragEnum, NodeMenuEnum[]> = {
120
+ [DragEnum.BASE_NODE]: [
121
+ NodeMenuEnum.VIEW,
122
+ NodeMenuEnum.EDIT,
123
+ NodeMenuEnum.SETTING,
124
+ NodeMenuEnum.COPY,
125
+ NodeMenuEnum.DELETE,
126
+ ],
127
+ [DragEnum.BENDING_NODE]: [
128
+ NodeMenuEnum.VIEW,
129
+ NodeMenuEnum.EDIT,
130
+ NodeMenuEnum.SETTING,
131
+ NodeMenuEnum.COPY,
132
+ NodeMenuEnum.DELETE,
133
+ ],
134
+ [DragEnum.LASER_NODE]: [
135
+ NodeMenuEnum.VIEW,
136
+ NodeMenuEnum.EDIT,
137
+ NodeMenuEnum.SETTING,
138
+ NodeMenuEnum.COPY,
139
+ NodeMenuEnum.DELETE,
140
+ ],
141
+ [DragEnum.STAMPING_NODE]: [
142
+ NodeMenuEnum.VIEW,
143
+ NodeMenuEnum.EDIT,
144
+ NodeMenuEnum.SETTING,
145
+ NodeMenuEnum.COPY,
146
+ NodeMenuEnum.DELETE,
147
+ ],
148
+ [DragEnum.NCT_NODE]: [
149
+ NodeMenuEnum.VIEW,
150
+ NodeMenuEnum.EDIT,
151
+ NodeMenuEnum.SETTING,
152
+ NodeMenuEnum.COPY,
153
+ NodeMenuEnum.DELETE,
154
+ ],
155
+ [DragEnum.RIVET_NODE]: [
156
+ NodeMenuEnum.VIEW,
157
+ NodeMenuEnum.EDIT,
158
+ NodeMenuEnum.SETTING,
159
+ NodeMenuEnum.COPY,
160
+ NodeMenuEnum.DELETE,
161
+ ],
162
+ [DragEnum.GROUP_NODE]: [NodeMenuEnum.SETTING, NodeMenuEnum.COPY, NodeMenuEnum.DELETE],
163
+ [DragEnum.TEXT_NODE]: [NodeMenuEnum.SETTING, NodeMenuEnum.COPY, NodeMenuEnum.DELETE],
164
+ [DragEnum.default]: [],
165
+ };
166
+
167
+ // 工具函数:安全执行菜单操作
168
+ const safeExecuteMenuAction = async <T>(action: () => Promise<T> | T, errorMessage: string, fallback?: T) => {
169
+ try {
170
+ return await action();
171
+ } catch (error) {
172
+ console.error(errorMessage, error);
173
+ return fallback;
174
+ }
175
+ };
176
+
177
+ const nodeStyleMap: Record<DragEnum, any> = {
178
+ [DragEnum.BASE_NODE]: rectNodeDefaultStyle,
179
+ [DragEnum.BENDING_NODE]: rectNodeDefaultStyle,
180
+ [DragEnum.LASER_NODE]: rectNodeDefaultStyle,
181
+ [DragEnum.STAMPING_NODE]: rectNodeDefaultStyle,
182
+ [DragEnum.NCT_NODE]: rectNodeDefaultStyle,
183
+ [DragEnum.RIVET_NODE]: rectNodeDefaultStyle,
184
+ [DragEnum.GROUP_NODE]: groupNodeDefaultStyle,
185
+ [DragEnum.TEXT_NODE]: textNodeDefaultStyle,
186
+ default: {
187
+ width: 120,
188
+ height: 90,
189
+ },
190
+ };
191
+
192
+ // 注册自定义通用线
193
+ const edgeTypes = {
194
+ [EdgeEnum.BEZIER_EDGE]: CustomBezierEdge,
195
+ };
196
+
197
+ // 注册自定义通用节点
198
+ const nodeTypes: NodeTypes = {
199
+ [DragEnum.BASE_NODE]: RectNode,
200
+ [DragEnum.BENDING_NODE]: RectNode,
201
+ [DragEnum.LASER_NODE]: RectNode,
202
+ [DragEnum.STAMPING_NODE]: RectNode,
203
+ [DragEnum.NCT_NODE]: RectNode,
204
+ [DragEnum.RIVET_NODE]: RectNode,
205
+ [DragEnum.TEXT_NODE]: TextNode,
206
+ [DragEnum.GROUP_NODE]: GroupNode,
207
+ };
208
+
209
+ interface IProps<
210
+ NodeType extends Node<Record<string, unknown>, string | undefined>,
211
+ EdgeType extends Edge<Record<string, unknown>, string | undefined>,
212
+ > {
213
+ reactFlowRef: React.RefObject<HTMLDivElement>;
214
+ isViewPage?: boolean;
215
+
216
+ /** 菜单点击操作拦截 */
217
+ menuInterceptors?: {
218
+ node?: {
219
+ [key in NodeMenuEnum]?: {
220
+ /** 操作前拦截, 返回true可以继续默认操作,否则不操作 */
221
+ before?: (node: NodeType) => Promise<boolean | void> | boolean | void;
222
+ /** 操作后回调 */
223
+ after?: (node: NodeType) => void;
224
+ /** 操作前回调 */
225
+ callback?: (node: NodeType) => void;
226
+ };
227
+ };
228
+ edge?: {
229
+ [key in NodeMenuEnum]?: {
230
+ /** 操作前拦截, 返回true可以继续默认操作,否则不操作 */
231
+ before?: (edge: EdgeType) => Promise<boolean | void> | boolean | void;
232
+ /** 操作后回调 */
233
+ after?: (edge: EdgeType) => void;
234
+ /** 操作前回调 */
235
+ callback?: (edge: EdgeType) => void;
236
+ };
237
+ };
238
+ };
239
+ }
240
+
241
+ // 生成拖拽节点的id
242
+ const getId = () => uuidv4();
243
+
244
+ /**
245
+ * 管理ReactFlow方法的hooks
246
+ * @param reactFlowRef flow 容器ref
247
+ * @returns {FlowHooksReturnType}
248
+ */
249
+ const useFlowHooks = <NodeData extends Record<string, unknown> = any, EdgeType extends Record<string, unknown> = any>(
250
+ props: IProps<Node<NodeData>, Edge<EdgeType>>,
251
+ ): FlowHooksReturnType<Node<NodeData>, Edge<EdgeType>> => {
252
+ const { menuInterceptors, reactFlowRef, isViewPage } = props;
253
+
254
+ const { formatMessage } = useIntl();
255
+
256
+ const {
257
+ // 可以平移屏幕像素位置到点击位置
258
+ screenToFlowPosition,
259
+ // 增加节点
260
+ addNodes,
261
+ // 保存更新节点
262
+ setNodes,
263
+ // 保存更新线
264
+ setEdges,
265
+ // 删除元素
266
+ deleteElements,
267
+ // 找到移动到上方的节点
268
+ getIntersectingNodes,
269
+ getNode,
270
+ } = useReactFlow();
271
+
272
+ // 存储拖拽出来的节点
273
+ const [node] = useDnD();
274
+
275
+ // 右键菜单定位和节点id的信息
276
+ const [contextMenu, setContextMenu] = useState<ContextMenuProps | null>(null);
277
+ const [viewNode, setViewNode] = useState<Node<NodeData> | null>(null);
278
+
279
+ // 编辑
280
+ const [nodeSetting, setNodeSetting] = useState<Node<NodeData> | null>(null);
281
+ const [editNode, setEditNode] = useState<Node<NodeData> | null>(null);
282
+ const [editEdge, setEditEdge] = useState<Edge<EdgeType> | null>(null);
283
+ const [edgeSetting, setEdgeSetting] = useState<Edge<EdgeType> | null>(null);
284
+
285
+ // 选区状态
286
+ const [selectedNodes, setSelectedNodes] = useState<Node[]>([]);
287
+ const [selectedEdges, setSelectedEdges] = useState<Edge[]>([]);
288
+
289
+ // 获取可以拖动进去的节点
290
+ const getCanDragInNodes = useMemoizedFn((node: Node) => {
291
+ // 如果拖动的节点是分组节点,不允许拖到其他节点上
292
+ if (node.type === DragEnum.GROUP_NODE) return [];
293
+
294
+ // 找到节点下面的所有node
295
+ let intersectionsNodes = getIntersectingNodes(node);
296
+
297
+ // 如果拖动的节点是文本节点,则都可以拖进去,否则只能拖进分组节点
298
+ if (node.type !== DragEnum.TEXT_NODE) {
299
+ intersectionsNodes = intersectionsNodes.filter((n) => n.type === DragEnum.GROUP_NODE);
300
+ } else {
301
+ // 不能拖进文本节点
302
+ intersectionsNodes = intersectionsNodes.filter((n) => n.type !== DragEnum.TEXT_NODE);
303
+ }
304
+ return intersectionsNodes;
305
+ });
306
+
307
+ // 连线方法
308
+ const onConnect: OnConnect = useMemoizedFn((params) =>
309
+ // 更新线条数据
310
+ setEdges((eds) =>
311
+ // 配置线条、添加线到画布
312
+ addEdge(
313
+ {
314
+ ...params,
315
+ // type: EdgeEnum.BEZIER_EDGE,
316
+ markerEnd: { type: MarkerType.ArrowClosed, strokeWidth: 3 },
317
+ style: { strokeWidth: 2, strokeDasharray: '5,5' },
318
+ },
319
+ eds,
320
+ ),
321
+ ),
322
+ );
323
+
324
+ // 线连接校验
325
+ const isValidConnection: IsValidConnection = useMemoizedFn((connection) => {
326
+ return true;
327
+ });
328
+
329
+ // 节点点击
330
+ const onNodeClick = useMemoizedFn<NodeMouseHandler<Node<NodeData>>>(async (event, node) => {
331
+ const canProceed = await menuInterceptors?.node?.[NodeMenuEnum.VIEW]?.before?.(node);
332
+ if (canProceed === false) return;
333
+
334
+ setViewNode(node);
335
+ });
336
+
337
+ // 递归获取父元素相对于画布的位置
338
+ const deepGetPosition: DeepGetPositionFn = useMemoizedFn((parentId, position) => {
339
+ const parentNode = getNode(parentId ?? '');
340
+
341
+ if (!parentNode) return position;
342
+
343
+ position.x = parentNode.position.x + position.x;
344
+ position.y = parentNode.position.y + position.y;
345
+ return deepGetPosition(parentNode.parentId, position);
346
+ });
347
+
348
+ // 拖拽面板节点
349
+ const onDrop = useMemoizedFn((event: React.DragEvent<HTMLDivElement>) => {
350
+ event.preventDefault();
351
+
352
+ if (!node?.type) {
353
+ return;
354
+ }
355
+
356
+ // 生成节点在画布的位置
357
+ const position = screenToFlowPosition({
358
+ x: event.clientX,
359
+ y: event.clientY,
360
+ });
361
+
362
+ // 新节点信息
363
+ const newNode: Node<BaseNodeDataType> = {
364
+ id: getId(),
365
+ type: node.type,
366
+ position,
367
+ data: {
368
+ name: node.name,
369
+ label: node.label ?? node.name,
370
+ ...node.data,
371
+ setting: {
372
+ sourceHandles: [{ id: 'source_1' }],
373
+ targetHandles: [{ id: 'target_1' }],
374
+ sourcePosition: Position.Right,
375
+ targetPosition: Position.Left,
376
+ ...(node.data?.setting || {}),
377
+ },
378
+ style: {
379
+ borderColor: node.style?.borderColor,
380
+ ...(node.data?.style || {}),
381
+ },
382
+ },
383
+ };
384
+
385
+ // data中定义的样式
386
+ const dataStyle = newNode.data?.setting?.style || ({} as React.CSSProperties);
387
+ // 自定义节点中定义的样式
388
+ const nodeStyle = nodeStyleMap[newNode.type as DragEnum] || nodeStyleMap.default;
389
+
390
+ // 节点最左边和最右边的位置
391
+ const x1 = position.x;
392
+ const x2 = position.x + (dataStyle.width || nodeStyle.width || nodeStyle.minWidth);
393
+
394
+ // 节点最上面和最下面的位置
395
+ const y1 = position.y;
396
+ const y2 = position.y + (dataStyle.height || nodeStyle.height || nodeStyle.minHeight);
397
+
398
+ let intersectionsNodes = getCanDragInNodes(newNode);
399
+ // 找到移动位置底部的所有节点
400
+ const filterIntersectionsNode = intersectionsNodes.filter((pNode) => {
401
+ // 目标父节点相对画布的定位
402
+ const targetParentPosition = deepGetPosition(pNode.parentId, {
403
+ ...pNode.position,
404
+ });
405
+ // 父节点最左边和最右边的位置
406
+ const px1 = targetParentPosition.x;
407
+ const px2 = targetParentPosition.x + (pNode.measured?.width || 0);
408
+ // 父节点最上面和最下面的位置
409
+ const py1 = targetParentPosition.y;
410
+ const py2 = targetParentPosition.y + (pNode.measured?.height || 0);
411
+
412
+ // 如果节点最后边或者最右边 以及 最上面或者最下面 则是拖动元素的父节点(可能是多个)
413
+ return ((x1 > px1 && x1 < px2) || (x2 > px1 && x2 < px2)) && ((y1 > py1 && y1 < py2) || (y2 > py1 && y2 < py2));
414
+ });
415
+ // 取出最后一个作为父节点
416
+ const intersectionsNode = filterIntersectionsNode.at(-1);
417
+ // 如果有父节点,更新节点位置信息
418
+ if (intersectionsNode) {
419
+ newNode.parentId = intersectionsNode.id;
420
+ // 目标父节点相对画布的定位
421
+ const targetParentPosition = deepGetPosition(intersectionsNode.parentId, { ...intersectionsNode.position });
422
+ newNode.position = {
423
+ x: x1 - targetParentPosition.x,
424
+ y: y1 - targetParentPosition.y,
425
+ };
426
+ }
427
+
428
+ // 更新节点数据
429
+ // 将分组节点放在最前面,否则新生成的节点拖不进去
430
+ setNodes((nds) => {
431
+ return newNode.type === DragEnum.GROUP_NODE ? [newNode, ...nds] : nds.concat(newNode);
432
+ });
433
+ });
434
+
435
+ // 拖拽面板节点结束
436
+ const onDragOver = useMemoizedFn((event: React.DragEvent<HTMLDivElement>) => {
437
+ event.preventDefault();
438
+ event.dataTransfer.dropEffect = 'move';
439
+ });
440
+
441
+ // 这些放进hooks中拖拽时节点不跟着移动
442
+ /** 节点拖动(拖到其他节点上时,底部节点高亮)*/
443
+ const onNodeDrag: OnNodeDrag = useMemoizedFn((event, node) => {
444
+ let intersectionsNode = getCanDragInNodes(node);
445
+
446
+ // 设置节点高亮和更新位置
447
+ setNodes((ns) =>
448
+ ns.map((n) => {
449
+ // 更新被拖拽节点的位置
450
+ if (n.id === node.id) {
451
+ return {
452
+ ...n,
453
+ position: node.position, // 关键:更新位置
454
+ className: '',
455
+ };
456
+ }
457
+
458
+ // 更新其他节点的高亮状态
459
+ return {
460
+ ...n,
461
+ className: intersectionsNode.map((node) => node.id).includes(n.id) ? 'highlight' : '',
462
+ };
463
+ }),
464
+ );
465
+ });
466
+
467
+ /** 节点拖动结束(去除节点高亮)*/
468
+ const onNodeDragStop: OnNodeDrag = useMemoizedFn((event, node) => {
469
+ let canIntersectionNode = getCanDragInNodes(node).at(-1);
470
+
471
+ setNodes((ns) =>
472
+ ns.map((n) => {
473
+ // 如果不是拖动的节点,不做操作
474
+ if (node.id !== n.id) {
475
+ return {
476
+ ...n,
477
+ className: '',
478
+ };
479
+ }
480
+
481
+ // 如果拖动到不能拖进去的节点或者画布空白位置,去除parentId,设置position相对于画布
482
+ if (!canIntersectionNode) {
483
+ const parentNode = getNode(n.parentId as string);
484
+ if (!parentNode) return n;
485
+
486
+ // 父节点位置
487
+ let parentPosition = {
488
+ x: parentNode.position.x,
489
+ y: parentNode.position.y,
490
+ };
491
+ // 如果父节点也是其他节点的子节点,位置需要加上祖父节点的位置
492
+ parentPosition = deepGetPosition(parentNode.parentId, {
493
+ ...parentPosition,
494
+ });
495
+
496
+ return {
497
+ ...n,
498
+ position: {
499
+ x: parentPosition.x + node.position.x,
500
+ y: parentPosition.y + node.position.y,
501
+ },
502
+ parentId: undefined,
503
+ className: '',
504
+ };
505
+ }
506
+
507
+ // 如果拖动到了其他可以拖进去的节点上
508
+ // 原本不是其他节点的子节点,则设置parentId和position,这里的position是相对父节点的,所以要计算
509
+ if (!n.parentId) {
510
+ // 父节点相对画布的定位
511
+ let parentPosition = {
512
+ x: canIntersectionNode.position.x,
513
+ y: canIntersectionNode.position.y,
514
+ };
515
+ // 如果父节点也是其他节点的子节点,位置需要加上祖父节点的位置
516
+ parentPosition = deepGetPosition(canIntersectionNode.parentId, {
517
+ ...parentPosition,
518
+ });
519
+
520
+ return {
521
+ ...n,
522
+ position: {
523
+ x: node.position.x - parentPosition.x,
524
+ y: node.position.y - parentPosition.y,
525
+ },
526
+ parentId: canIntersectionNode?.id,
527
+ className: '',
528
+ };
529
+ } else {
530
+ // 从其他父节点拖出来到其他节点上
531
+ const parentNode = getNode(n.parentId as string);
532
+
533
+ if (!parentNode) return n;
534
+ // 原来的父节点相对画布的定位
535
+ const originParentPosition = deepGetPosition(parentNode.parentId, {
536
+ ...parentNode.position,
537
+ });
538
+
539
+ // 自身节点相对画布的定位
540
+ let selfPosition = {
541
+ x: originParentPosition.x + n.position.x,
542
+ y: originParentPosition.y + n.position.y,
543
+ };
544
+ // 目标父节点相对画布的定位
545
+ const targetParentPosition = deepGetPosition(canIntersectionNode.parentId, {
546
+ ...canIntersectionNode.position,
547
+ });
548
+ return {
549
+ ...n,
550
+ position: {
551
+ x: selfPosition.x - targetParentPosition.x,
552
+ y: selfPosition.y - targetParentPosition.y,
553
+ },
554
+ parentId: canIntersectionNode?.id,
555
+ className: '',
556
+ };
557
+ }
558
+ }),
559
+ );
560
+ });
561
+
562
+ // 处理选区变化
563
+ const onSelectionChange: OnSelectionChangeFunc = useMemoizedFn(({ nodes, edges }) => {
564
+ setSelectedNodes(nodes);
565
+ setSelectedEdges(edges);
566
+ });
567
+
568
+ // 节点创建菜单处理函数
569
+ const createNodeMenuHandler = useMemoizedFn(
570
+ async (menuKey: NodeMenuEnum, node: Node<NodeData>, action: (node: Node<NodeData>) => void) => {
571
+ // 执行前置回调
572
+ safeExecuteMenuAction(() => menuInterceptors?.node?.[menuKey]?.callback?.(node), `前置回调执行失败: ${menuKey}`);
573
+
574
+ // 执行前置拦截器
575
+ const canProceed = await safeExecuteMenuAction(
576
+ () => menuInterceptors?.node?.[menuKey]?.before?.(node),
577
+ `前置拦截器执行失败: ${menuKey}`,
578
+ false,
579
+ );
580
+
581
+ // 如果允许继续,执行默认操作
582
+ if (canProceed !== false) {
583
+ safeExecuteMenuAction(() => action(node), `默认操作执行失败: ${menuKey}`);
584
+ }
585
+
586
+ // 执行后置回调
587
+ safeExecuteMenuAction(() => menuInterceptors?.node?.[menuKey]?.after?.(node), `后置回调执行失败: ${menuKey}`);
588
+ },
589
+ );
590
+
591
+ // 边创建菜单处理函数
592
+ const createEdgeMenuHandler = useMemoizedFn(
593
+ async (menuKey: NodeMenuEnum, edge: Edge<EdgeType>, action: (edge: Edge<EdgeType>) => void) => {
594
+ // 执行前置回调
595
+ safeExecuteMenuAction(() => menuInterceptors?.edge?.[menuKey]?.callback?.(edge), `前置回调执行失败: ${menuKey}`);
596
+
597
+ // 执行前置拦截器
598
+ const canProceed = await safeExecuteMenuAction(
599
+ () => menuInterceptors?.edge?.[menuKey]?.before?.(edge),
600
+ `前置拦截器执行失败: ${menuKey}`,
601
+ false,
602
+ );
603
+
604
+ // 如果允许继续,执行默认操作
605
+ if (canProceed !== false) {
606
+ safeExecuteMenuAction(() => action(edge), `默认操作执行失败: ${menuKey}`);
607
+ }
608
+
609
+ // 执行后置回调
610
+ safeExecuteMenuAction(() => menuInterceptors?.edge?.[menuKey]?.after?.(edge), `后置回调执行失败: ${menuKey}`);
611
+ },
612
+ );
613
+
614
+ // 复制节点
615
+ const copyNode = useMemoizedFn((originNode: Node<NodeData>) => {
616
+ const position = {
617
+ x: originNode.position.x + 50,
618
+ y: originNode.position.y + 50,
619
+ };
620
+
621
+ addNodes({
622
+ ...originNode,
623
+ selected: false,
624
+ dragging: false,
625
+ id: `${originNode.id}-copy-${uuidv4()}`,
626
+ position,
627
+ });
628
+ });
629
+
630
+ // 菜单项配置
631
+ const menuConfigs: MenuItemConfig<NodeData>[] = useMemo(
632
+ () => [
633
+ {
634
+ key: NodeMenuEnum.VIEW,
635
+ label: formatMessage({ id: 'lib.Flow.menu.view', defaultMessage: '查看' }),
636
+ action: setViewNode,
637
+ },
638
+ {
639
+ key: NodeMenuEnum.EDIT,
640
+ label: formatMessage({ id: 'lib.Flow.menu.edit', defaultMessage: '修改' }),
641
+ action: setEditNode,
642
+ },
643
+ {
644
+ key: NodeMenuEnum.SETTING,
645
+ label: formatMessage({ id: 'lib.Flow.menu.settings', defaultMessage: '配置' }),
646
+ action: setNodeSetting,
647
+ },
648
+ {
649
+ key: NodeMenuEnum.COPY,
650
+ label: formatMessage({ id: 'lib.Flow.menu.copy', defaultMessage: '复制' }),
651
+ action: copyNode,
652
+ },
653
+ {
654
+ key: NodeMenuEnum.DELETE,
655
+ label: formatMessage({ id: 'lib.Flow.menu.delete', defaultMessage: '删除' }),
656
+ danger: true,
657
+ action: (node) => deleteElements({ nodes: [node] }),
658
+ },
659
+ ],
660
+ [setViewNode, setEditNode, setNodeSetting, copyNode, deleteElements],
661
+ );
662
+
663
+ // 节点右键菜单 - 优化版本
664
+ const getNodeContextMenuItems = useMemoizedFn((node: Node<NodeData>): MenuProps['items'] => {
665
+ if (!node?.type) return [];
666
+
667
+ // 根据节点类型过滤菜单项
668
+ const allowedMenus = nodeMenuMap[node.type as DragEnum] || [];
669
+
670
+ return menuConfigs
671
+ .filter((config) => allowedMenus.includes(config.key))
672
+ .filter((config) => {
673
+ if (isViewPage) {
674
+ return config.key === NodeMenuEnum.VIEW;
675
+ }
676
+ return true;
677
+ })
678
+ .map((config) => ({
679
+ label: config.label,
680
+ key: config.key,
681
+ danger: config.danger,
682
+ onClick: () => createNodeMenuHandler(config.key, node, config.action),
683
+ }));
684
+ });
685
+
686
+ // 线右键菜单
687
+ const getEdgeContextMenuItems = useMemoizedFn((edge: Edge<EdgeType>): MenuProps['items'] => {
688
+ return [
689
+ // {
690
+ // label: '修改',
691
+ // key: 'edit',
692
+ // onClick: () => {
693
+ // setEditEdge(edge);
694
+ // },
695
+ // },
696
+ {
697
+ label: formatMessage({ id: 'lib.Flow.menu.settings', defaultMessage: '配置' }),
698
+ key: 'setting',
699
+ onClick: () => createEdgeMenuHandler(NodeMenuEnum.SETTING, edge, setEdgeSetting),
700
+ },
701
+ {
702
+ label: formatMessage({ id: 'lib.Flow.menu.delete', defaultMessage: '删除' }),
703
+ key: 'delete',
704
+ danger: true,
705
+ onClick: () => createEdgeMenuHandler(NodeMenuEnum.DELETE, edge, (edge) => deleteElements({ edges: [edge] })),
706
+ },
707
+ ];
708
+ });
709
+
710
+ // 监听节点鼠标右键信息
711
+ const onContextMenu = useMemoizedFn((event: Parameters<NodeMouseHandler>['0'], data: Node | Edge) => {
712
+ event.preventDefault();
713
+
714
+ const flowDom = reactFlowRef.current;
715
+
716
+ if (!flowDom) return;
717
+
718
+ // 获取画布的边界矩形信息
719
+ const pane = flowDom.getBoundingClientRect();
720
+
721
+ // 计算鼠标相对于画布的位置
722
+ const relativeX = event.clientX - pane.left;
723
+ const relativeY = event.clientY - pane.top;
724
+
725
+ // 菜单的预估宽高(可以根据实际调整)
726
+ const menuWidth = 120;
727
+ const menuHeight = 100;
728
+
729
+ // 计算菜单位置,确保不超出画布边界
730
+ let menuLeft: number | false = false;
731
+ let menuRight: number | false = false;
732
+ let menuTop: number | false = false;
733
+ let menuBottom: number | false = false;
734
+
735
+ // 水平位置计算
736
+ if (relativeX + menuWidth <= pane.width) {
737
+ // 右侧有足够空间,菜单显示在鼠标右侧
738
+ menuLeft = relativeX;
739
+ } else {
740
+ // 右侧空间不足,菜单显示在鼠标左侧
741
+ menuRight = pane.width - relativeX;
742
+ }
743
+
744
+ // 垂直位置计算
745
+ if (relativeY + menuHeight <= pane.height) {
746
+ // 下方有足够空间,菜单显示在鼠标下方
747
+ menuTop = relativeY;
748
+ } else {
749
+ // 下方空间不足,菜单显示在鼠标上方
750
+ menuBottom = pane.height - relativeY;
751
+ }
752
+
753
+ setContextMenu({
754
+ id: data.id,
755
+ items: isNode(data)
756
+ ? getNodeContextMenuItems(data as Node<NodeData>)
757
+ : getEdgeContextMenuItems(data as Edge<EdgeType>),
758
+ top: menuTop,
759
+ left: menuLeft,
760
+ right: menuRight,
761
+ bottom: menuBottom,
762
+ });
763
+ });
764
+
765
+ // 点击页面或拖动节点收起右键菜单
766
+ const bodyClick = useMemoizedFn(() => {
767
+ setContextMenu(null);
768
+ });
769
+
770
+ useEffect(() => {
771
+ const body = document.body;
772
+ body.addEventListener('click', bodyClick);
773
+ body.addEventListener('drag', bodyClick);
774
+ return () => {
775
+ body.removeEventListener('click', bodyClick);
776
+ body.removeEventListener('drag', bodyClick);
777
+ };
778
+ }, []);
779
+
780
+ return {
781
+ viewNode,
782
+ setViewNode,
783
+ editNode,
784
+ editEdge,
785
+ setEditNode,
786
+ setEditEdge,
787
+ nodeSetting,
788
+ setNodeSetting,
789
+ edgeSetting,
790
+ setEdgeSetting,
791
+
792
+ deepGetPosition,
793
+ getCanDragInNodes,
794
+
795
+ selectedEdges,
796
+ selectedNodes,
797
+ onSelectionChange,
798
+ onConnect,
799
+ isValidConnection,
800
+ onNodeClick,
801
+ onDrop,
802
+ onDragOver,
803
+ onNodeDrag,
804
+ onNodeDragStop,
805
+ copyNode,
806
+ nodeTypes,
807
+ edgeTypes,
808
+ onContextMenu,
809
+ contextMenu,
810
+ };
811
+ };
812
+
813
+ export default useFlowHooks;