@jiangood/open-admin 1.0.0 → 1.1.0

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 (176) hide show
  1. package/config/common-plugin.js +94 -0
  2. package/config/config.js +58 -0
  3. package/config/utils.js +73 -0
  4. package/package.json +8 -7
  5. package/src/.umi-production/appData.json +2365 -0
  6. package/src/.umi-production/core/EmptyRoute.tsx +9 -0
  7. package/src/.umi-production/core/defineApp.ts +16 -0
  8. package/src/.umi-production/core/helmet.ts +10 -0
  9. package/src/.umi-production/core/helmetContext.ts +4 -0
  10. package/src/.umi-production/core/history.ts +72 -0
  11. package/src/.umi-production/core/historyIntelli.ts +132 -0
  12. package/src/.umi-production/core/plugin.ts +40 -0
  13. package/src/.umi-production/core/pluginConfig.ts +324 -0
  14. package/src/.umi-production/core/pluginConfigJoi.d.ts +7 -0
  15. package/src/.umi-production/core/polyfill.ts +220 -0
  16. package/src/.umi-production/core/route.tsx +54 -0
  17. package/src/.umi-production/core/routeProps.js +5 -0
  18. package/src/.umi-production/core/routeProps.ts +6 -0
  19. package/src/.umi-production/core/terminal.ts +37 -0
  20. package/src/.umi-production/exports.ts +17 -0
  21. package/src/.umi-production/testBrowser.tsx +90 -0
  22. package/src/.umi-production/tsconfig.json +44 -0
  23. package/src/.umi-production/typings.d.ts +136 -0
  24. package/src/.umi-production/umi.ts +83 -0
  25. package/src/framework/components/{DownloadFileButton.jsx → DownloadFileButton/index.jsx} +1 -1
  26. package/src/framework/components/{LinkButton.d.ts → LinkButton/index.d.ts} +1 -1
  27. package/src/framework/components/{LinkButton.jsx → LinkButton/index.jsx} +1 -1
  28. package/src/framework/components/NamedIcon/index.d.ts +5 -0
  29. package/src/framework/components/{NamedIcon.tsx → NamedIcon/index.jsx} +1 -5
  30. package/src/framework/components/OrgTree/index.d.ts +4 -0
  31. package/src/framework/{field-components/system/OrgTree.tsx → components/OrgTree/index.jsx} +1 -4
  32. package/src/framework/components/PageLoading/index.d.ts +1 -0
  33. package/src/framework/components/{PageLoading.tsx → PageLoading/index.jsx} +3 -5
  34. package/src/framework/components/RoleTree/index.d.ts +4 -0
  35. package/src/framework/{field-components/system/RoleTree.tsx → components/RoleTree/index.jsx} +1 -4
  36. package/src/framework/components/ValueType/index.jsx +1 -1
  37. package/src/framework/components/ValueType/registry.jsx +2 -3
  38. package/src/framework/components/{view/ViewRange → ViewRange}/index.d.ts +5 -7
  39. package/src/framework/components/index.ts +3 -7
  40. package/src/framework/components/system/index.tsx +1 -1
  41. package/src/framework/fields/FieldBoolean/index.d.ts +9 -0
  42. package/src/framework/{field-components/FieldBoolean.jsx → fields/FieldBoolean/index.jsx} +6 -9
  43. package/src/framework/{field-components/FieldDate.d.ts → fields/FieldDate/index.d.ts} +5 -9
  44. package/src/framework/{field-components/FieldDate.jsx → fields/FieldDate/index.jsx} +28 -26
  45. package/src/framework/fields/FieldDateRange/index.d.ts +22 -0
  46. package/src/framework/{field-components/FieldDateRange.jsx → fields/FieldDateRange/index.jsx} +26 -27
  47. package/src/framework/fields/FieldDictSelect/index.d.ts +12 -0
  48. package/src/framework/{field-components/FieldDictSelect.jsx → fields/FieldDictSelect/index.jsx} +5 -5
  49. package/src/framework/fields/FieldEditor/index.d.ts +14 -0
  50. package/src/framework/fields/FieldEditor/index.jsx +59 -0
  51. package/src/framework/fields/FieldNumberRange/index.d.ts +10 -0
  52. package/src/framework/{field-components/FieldNumberRange.jsx → fields/FieldNumberRange/index.jsx} +20 -24
  53. package/src/framework/fields/FieldPercent/index.d.ts +8 -0
  54. package/src/framework/{field-components/FieldPercent.jsx → fields/FieldPercent/index.jsx} +9 -6
  55. package/src/framework/fields/FieldRemoteSelect/index.d.ts +44 -0
  56. package/src/framework/fields/FieldRemoteSelect/index.jsx +125 -0
  57. package/src/framework/fields/FieldRemoteSelectMultiple/index.d.ts +20 -0
  58. package/src/framework/{field-components/FieldRemoteSelectMultiple.jsx → fields/FieldRemoteSelectMultiple/index.jsx} +4 -5
  59. package/src/framework/fields/FieldRemoteSelectMultipleInline/index.d.ts +21 -0
  60. package/src/framework/{field-components/FieldRemoteSelectMultipleInline.jsx → fields/FieldRemoteSelectMultipleInline/index.jsx} +8 -6
  61. package/src/framework/fields/FieldRemoteTree/index.d.ts +20 -0
  62. package/src/framework/fields/FieldRemoteTree/index.jsx +50 -0
  63. package/src/framework/{field-components/FieldRemoteTreeCascader.d.ts → fields/FieldRemoteTreeCascader/index.d.ts} +10 -15
  64. package/src/framework/{field-components/FieldRemoteTreeCascader.jsx → fields/FieldRemoteTreeCascader/index.jsx} +11 -13
  65. package/src/framework/fields/FieldRemoteTreeSelect/index.d.ts +19 -0
  66. package/src/framework/{field-components/FieldRemoteTreeSelect.jsx → fields/FieldRemoteTreeSelect/index.jsx} +10 -20
  67. package/src/framework/fields/FieldRemoteTreeSelectMultiple/index.d.ts +20 -0
  68. package/src/framework/{field-components/FieldRemoteTreeSelectMultiple.jsx → fields/FieldRemoteTreeSelectMultiple/index.jsx} +11 -21
  69. package/src/framework/fields/FieldSysOrgTree/index.d.ts +9 -0
  70. package/src/framework/fields/FieldSysOrgTree/index.jsx +20 -0
  71. package/src/framework/fields/FieldSysOrgTreeSelect/index.d.ts +9 -0
  72. package/src/framework/{field-components/FieldSysOrgTreeSelect.jsx → fields/FieldSysOrgTreeSelect/index.jsx} +7 -8
  73. package/src/framework/fields/FieldTable/index.d.ts +14 -0
  74. package/src/framework/{field-components/FieldTable.jsx → fields/FieldTable/index.jsx} +38 -38
  75. package/src/framework/fields/FieldTableSelect/index.d.ts +19 -0
  76. package/src/framework/{field-components/FieldTableSelect.jsx → fields/FieldTableSelect/index.jsx} +13 -12
  77. package/src/framework/{field-components/FieldUploadFile.d.ts → fields/FieldUploadFile/index.d.ts} +12 -15
  78. package/src/framework/{field-components/FieldUploadFile.jsx → fields/FieldUploadFile/index.jsx} +32 -34
  79. package/src/framework/{field-components → fields}/index.ts +2 -1
  80. package/src/framework/fields/types.ts +16 -0
  81. package/src/framework/index.ts +2 -2
  82. package/src/framework/utils/index.ts +0 -1
  83. package/src/framework/utils/system/DictUtils.ts +1 -1
  84. package/src/framework/views/ViewApproveStatus/index.d.ts +3 -0
  85. package/src/framework/{view-components/ViewApproveStatus.tsx → views/ViewApproveStatus/index.jsx} +3 -8
  86. package/src/framework/views/ViewBoolean/index.d.ts +3 -0
  87. package/src/framework/views/ViewBoolean/index.jsx +4 -0
  88. package/src/framework/views/ViewBooleanEnableDisable/index.d.ts +5 -0
  89. package/src/framework/{components/view/ViewBooleanEnableDisable.tsx → views/ViewBooleanEnableDisable/index.jsx} +2 -7
  90. package/src/framework/{components/view/ViewFileButton.d.ts → views/ViewFile/index.d.ts} +3 -3
  91. package/src/framework/views/ViewFileButton/index.d.ts +10 -0
  92. package/src/framework/views/ViewFileButton/index.jsx +22 -0
  93. package/src/framework/views/ViewImage/index.d.ts +6 -0
  94. package/src/framework/views/ViewPassword/index.d.ts +5 -0
  95. package/src/framework/{view-components/ViewPassword.tsx → views/ViewPassword/index.jsx} +2 -3
  96. package/src/framework/views/ViewProcessInstanceProgress/index.d.ts +12 -0
  97. package/src/framework/{view-components/ViewFlowableInstanceProgress.jsx → views/ViewProcessInstanceProgress/index.jsx} +2 -2
  98. package/src/framework/views/ViewProcessInstanceProgressButton/index.d.ts +6 -0
  99. package/src/framework/{view-components/ViewFlowableInstanceProgressButton.tsx → views/ViewProcessInstanceProgressButton/index.jsx} +4 -6
  100. package/src/framework/views/ViewText/index.d.ts +16 -0
  101. package/src/framework/views/ViewText/index.jsx +42 -0
  102. package/src/framework/views/index.ts +12 -0
  103. package/src/framework/views/types.ts +26 -0
  104. package/src/layouts/admin/index.jsx +0 -2
  105. package/src/layouts/index.jsx +38 -16
  106. package/src/pages/404.jsx +4 -4
  107. package/src/pages/about.jsx +0 -2
  108. package/src/pages/index.jsx +4 -19
  109. package/src/pages/login.jsx +3 -8
  110. package/src/pages/system/api/ApiDoc.jsx +19 -15
  111. package/src/pages/system/api/index.jsx +23 -24
  112. package/src/pages/system/api/perm.jsx +4 -4
  113. package/src/pages/system/dict/Dict.jsx +0 -5
  114. package/src/pages/system/dict/DictItem.jsx +23 -25
  115. package/src/pages/system/dict/index.jsx +2 -2
  116. package/src/pages/system/file/index.jsx +16 -29
  117. package/src/pages/system/job/index.jsx +44 -44
  118. package/src/pages/system/log/index.jsx +3 -4
  119. package/src/pages/system/org/index.jsx +34 -36
  120. package/src/pages/system/role/index.jsx +68 -74
  121. package/src/pages/system/role/perm.jsx +0 -1
  122. package/src/pages/system/sysManual/index.jsx +27 -28
  123. package/src/pages/system/user/UserPerm.jsx +5 -8
  124. package/src/pages/system/user/index.jsx +46 -51
  125. package/src/pages/test/views.jsx +95 -0
  126. package/src/pages/ureport/index.jsx +2 -2
  127. package/src/pages/userCenter/ChangePassword.jsx +2 -1
  128. package/src/pages/userCenter/index.jsx +8 -8
  129. package/src/pages/userCenter/manual.jsx +3 -5
  130. package/src/pages/userCenter/message.jsx +14 -16
  131. package/config/dist/common-plugin.js +0 -148
  132. package/config/dist/config.js +0 -45
  133. package/config/dist/index.js +0 -18
  134. package/src/app.js +0 -1
  135. package/src/asserts/welcome.png +0 -0
  136. package/src/forms/demoForm.jsx +0 -16
  137. package/src/framework/components/Ellipsis.jsx +0 -39
  138. package/src/framework/components/Ellipsis.less +0 -8
  139. package/src/framework/components/view/ViewEllipsis.d.ts +0 -11
  140. package/src/framework/components/view/ViewEllipsis.jsx +0 -30
  141. package/src/framework/components/view/ViewFile.d.ts +0 -10
  142. package/src/framework/components/view/ViewFileButton.jsx +0 -0
  143. package/src/framework/components/view/ViewImage.d.ts +0 -9
  144. package/src/framework/components/view/ViewText.tsx +0 -16
  145. package/src/framework/components/view/index.ts +0 -10
  146. package/src/framework/field-components/FieldBoolean.d.ts +0 -13
  147. package/src/framework/field-components/FieldDateRange.d.ts +0 -6
  148. package/src/framework/field-components/FieldDictSelect.d.ts +0 -13
  149. package/src/framework/field-components/FieldEditor.d.ts +0 -10
  150. package/src/framework/field-components/FieldEditor.jsx +0 -58
  151. package/src/framework/field-components/FieldNumberRange.d.ts +0 -13
  152. package/src/framework/field-components/FieldPercent.d.ts +0 -12
  153. package/src/framework/field-components/FieldRemoteSelect.d.ts +0 -13
  154. package/src/framework/field-components/FieldRemoteSelect.jsx +0 -87
  155. package/src/framework/field-components/FieldRemoteSelectMultiple.d.ts +0 -13
  156. package/src/framework/field-components/FieldRemoteSelectMultipleInline.d.ts +0 -20
  157. package/src/framework/field-components/FieldRemoteTree.d.ts +0 -21
  158. package/src/framework/field-components/FieldRemoteTree.jsx +0 -45
  159. package/src/framework/field-components/FieldRemoteTreeSelect.d.ts +0 -17
  160. package/src/framework/field-components/FieldRemoteTreeSelectMultiple.d.ts +0 -17
  161. package/src/framework/field-components/FieldSysOrgTree.d.ts +0 -12
  162. package/src/framework/field-components/FieldSysOrgTree.jsx +0 -23
  163. package/src/framework/field-components/FieldSysOrgTreeSelect.d.ts +0 -12
  164. package/src/framework/field-components/FieldTable.d.ts +0 -17
  165. package/src/framework/field-components/FieldTableSelect.d.ts +0 -19
  166. package/src/framework/field-components/system/index.ts +0 -2
  167. package/src/framework/view-components/ViewBoolean.tsx +0 -6
  168. package/src/framework/view-components/ViewFlowableInstanceProgress.d.ts +0 -12
  169. package/src/framework/view-components/ViewProps.ts +0 -11
  170. package/src/framework/view-components/index.ts +0 -6
  171. package/src/pages/test.jsx +0 -200
  172. /package/src/framework/components/{DownloadFileButton.d.ts → DownloadFileButton/index.d.ts} +0 -0
  173. /package/src/framework/components/{view/ViewRange → ViewRange}/index.jsx +0 -0
  174. /package/src/framework/{field-components/FieldTable.less → fields/FieldTable/styles.less} +0 -0
  175. /package/src/framework/{components/view/ViewFile.jsx → views/ViewFile/index.jsx} +0 -0
  176. /package/src/framework/{components/view/ViewImage.jsx → views/ViewImage/index.jsx} +0 -0
@@ -0,0 +1,2365 @@
1
+ {
2
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
3
+ "pkg": {
4
+ "devDependencies": {
5
+ "@types/lodash": "^4.17.23",
6
+ "@types/react": "^19.2.2",
7
+ "@types/react-dom": "^19.0.0",
8
+ "@umijs/plugins": "^4.3.17",
9
+ "typescript": "^5.0.0"
10
+ },
11
+ "peerDependencies": {
12
+ "@ant-design/icons": "^6.0.0",
13
+ "@bpmn-io/properties-panel": "^3.34.0",
14
+ "@tinymce/tinymce-react": "^6.0.0",
15
+ "@umijs/types": "^3.5.43",
16
+ "antd": "^6.0.0",
17
+ "antd-img-crop": "^4.23.0",
18
+ "axios": "^1.13.2",
19
+ "bpmn-js": "^18.7.0",
20
+ "bpmn-js-properties-panel": "^5.43.0",
21
+ "dayjs": "^1.11.13",
22
+ "jsencrypt": "^3.5.4",
23
+ "lodash": "^4.17.23",
24
+ "preact": "^10.27.2",
25
+ "qs": "^6.14.0",
26
+ "react": "^19.0.0",
27
+ "react-dom": "^19.0.0",
28
+ "umi": "^4.0.0"
29
+ },
30
+ "name": "@jiangood/open-admin",
31
+ "description": "open-admin",
32
+ "files": [
33
+ "src/*",
34
+ "config/*",
35
+ "!src/.umi",
36
+ "!src/pages/test/*"
37
+ ],
38
+ "main": "src/index.ts",
39
+ "scripts": {
40
+ "dev": "umi dev",
41
+ "build": "umi build"
42
+ },
43
+ "version": "1.1.0"
44
+ },
45
+ "pkgPath": "/home/runner/work/open-admin/open-admin/web/package.json",
46
+ "plugins": {
47
+ "./node_modules/.pnpm/@umijs+core@4.6.25/node_modules/@umijs/core/dist/service/servicePlugin": {
48
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
49
+ "type": "preset",
50
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+core@4.6.25/node_modules/@umijs/core/dist/service/servicePlugin.js",
51
+ "id": "./node_modules/.pnpm/@umijs+core@4.6.25/node_modules/@umijs/core/dist/service/servicePlugin",
52
+ "key": "servicePlugin",
53
+ "config": {},
54
+ "time": {
55
+ "hooks": {},
56
+ "register": 0
57
+ },
58
+ "enableBy": "register"
59
+ },
60
+ "@umijs/preset-umi": {
61
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
62
+ "type": "preset",
63
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/index.js",
64
+ "id": "@umijs/preset-umi",
65
+ "key": "umi",
66
+ "config": {},
67
+ "time": {
68
+ "hooks": {},
69
+ "register": 6
70
+ },
71
+ "enableBy": "register"
72
+ },
73
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/registerMethods": {
74
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
75
+ "type": "plugin",
76
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/registerMethods.js",
77
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/registerMethods",
78
+ "key": "registerMethods",
79
+ "config": {},
80
+ "time": {
81
+ "hooks": {
82
+ "onStart": [
83
+ 0
84
+ ]
85
+ },
86
+ "register": 7
87
+ },
88
+ "enableBy": "register"
89
+ },
90
+ "@umijs/did-you-know": {
91
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
92
+ "type": "plugin",
93
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+did-you-know@1.0.4/node_modules/@umijs/did-you-know/dist/plugin.js",
94
+ "id": "@umijs/did-you-know",
95
+ "key": "umijsDidYouKnow",
96
+ "config": {},
97
+ "time": {
98
+ "hooks": {
99
+ "onStart": [
100
+ 1
101
+ ]
102
+ },
103
+ "register": 2
104
+ },
105
+ "enableBy": "register"
106
+ },
107
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/404/404": {
108
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
109
+ "type": "plugin",
110
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/404/404.js",
111
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/404/404",
112
+ "key": "404",
113
+ "config": {},
114
+ "time": {
115
+ "hooks": {
116
+ "modifyRoutes": [
117
+ 0
118
+ ]
119
+ },
120
+ "register": 1
121
+ },
122
+ "enableBy": "register"
123
+ },
124
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/aiDev/aiDev": {
125
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
126
+ "type": "plugin",
127
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/aiDev/aiDev.js",
128
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/aiDev/aiDev",
129
+ "key": "aiDev",
130
+ "config": {},
131
+ "time": {
132
+ "hooks": {},
133
+ "register": 1
134
+ },
135
+ "enableBy": "register"
136
+ },
137
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/appData/appData": {
138
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
139
+ "type": "plugin",
140
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/appData/appData.js",
141
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/appData/appData",
142
+ "key": "appData",
143
+ "config": {},
144
+ "time": {
145
+ "hooks": {
146
+ "modifyAppData": [
147
+ 64
148
+ ]
149
+ },
150
+ "register": 25
151
+ },
152
+ "enableBy": "register"
153
+ },
154
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/appData/umiInfo": {
155
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
156
+ "type": "plugin",
157
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/appData/umiInfo.js",
158
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/appData/umiInfo",
159
+ "key": "umiInfo",
160
+ "config": {},
161
+ "time": {
162
+ "hooks": {},
163
+ "register": 0
164
+ },
165
+ "enableBy": "register"
166
+ },
167
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/check/check": {
168
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
169
+ "type": "plugin",
170
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/check/check.js",
171
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/check/check",
172
+ "key": "check",
173
+ "config": {},
174
+ "time": {
175
+ "hooks": {
176
+ "onCheckConfig": [
177
+ 0
178
+ ],
179
+ "onCheck": [
180
+ 0
181
+ ]
182
+ },
183
+ "register": 1
184
+ },
185
+ "enableBy": "register"
186
+ },
187
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/check/babel722": {
188
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
189
+ "type": "plugin",
190
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/check/babel722.js",
191
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/check/babel722",
192
+ "key": "babel722",
193
+ "config": {},
194
+ "time": {
195
+ "hooks": {
196
+ "onCheck": [
197
+ 1
198
+ ]
199
+ },
200
+ "register": 1
201
+ },
202
+ "enableBy": "register"
203
+ },
204
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/codeSplitting/codeSplitting": {
205
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
206
+ "type": "plugin",
207
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/codeSplitting/codeSplitting.js",
208
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/codeSplitting/codeSplitting",
209
+ "key": "codeSplitting",
210
+ "config": {},
211
+ "time": {
212
+ "hooks": {},
213
+ "register": 0
214
+ },
215
+ "enableBy": "config"
216
+ },
217
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/configPlugins/configPlugins": {
218
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
219
+ "type": "plugin",
220
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/configPlugins/configPlugins.js",
221
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/configPlugins/configPlugins",
222
+ "key": "configPlugins",
223
+ "config": {},
224
+ "time": {
225
+ "hooks": {
226
+ "modifyConfig": [
227
+ 0
228
+ ]
229
+ },
230
+ "register": 6
231
+ },
232
+ "enableBy": "register"
233
+ },
234
+ "virtual: config-title": {
235
+ "id": "virtual: config-title",
236
+ "key": "title",
237
+ "config": {},
238
+ "type": "plugin",
239
+ "enableBy": "register",
240
+ "time": {
241
+ "hooks": {},
242
+ "register": 0
243
+ }
244
+ },
245
+ "virtual: config-styles": {
246
+ "id": "virtual: config-styles",
247
+ "key": "styles",
248
+ "config": {},
249
+ "type": "plugin",
250
+ "enableBy": "register",
251
+ "time": {
252
+ "hooks": {},
253
+ "register": 0
254
+ }
255
+ },
256
+ "virtual: config-scripts": {
257
+ "id": "virtual: config-scripts",
258
+ "key": "scripts",
259
+ "config": {},
260
+ "type": "plugin",
261
+ "enableBy": "register",
262
+ "time": {
263
+ "hooks": {},
264
+ "register": 0
265
+ }
266
+ },
267
+ "virtual: config-routes": {
268
+ "id": "virtual: config-routes",
269
+ "key": "routes",
270
+ "config": {
271
+ "onChange": "regenerateTmpFiles"
272
+ },
273
+ "type": "plugin",
274
+ "enableBy": "register",
275
+ "time": {
276
+ "hooks": {},
277
+ "register": 0
278
+ }
279
+ },
280
+ "virtual: config-routeLoader": {
281
+ "id": "virtual: config-routeLoader",
282
+ "key": "routeLoader",
283
+ "config": {
284
+ "default": {
285
+ "moduleType": "esm"
286
+ }
287
+ },
288
+ "type": "plugin",
289
+ "enableBy": "register",
290
+ "time": {
291
+ "hooks": {},
292
+ "register": 0
293
+ }
294
+ },
295
+ "virtual: config-reactRouter5Compat": {
296
+ "id": "virtual: config-reactRouter5Compat",
297
+ "key": "reactRouter5Compat",
298
+ "config": {},
299
+ "type": "plugin",
300
+ "enableBy": "register",
301
+ "time": {
302
+ "hooks": {},
303
+ "register": 0
304
+ }
305
+ },
306
+ "virtual: config-presets": {
307
+ "id": "virtual: config-presets",
308
+ "key": "presets",
309
+ "config": {},
310
+ "type": "plugin",
311
+ "enableBy": "register",
312
+ "time": {
313
+ "hooks": {},
314
+ "register": 0
315
+ }
316
+ },
317
+ "virtual: config-plugins": {
318
+ "id": "virtual: config-plugins",
319
+ "key": "plugins",
320
+ "config": {},
321
+ "type": "plugin",
322
+ "enableBy": "register",
323
+ "time": {
324
+ "hooks": {},
325
+ "register": 0
326
+ }
327
+ },
328
+ "virtual: config-npmClient": {
329
+ "id": "virtual: config-npmClient",
330
+ "key": "npmClient",
331
+ "config": {},
332
+ "type": "plugin",
333
+ "enableBy": "register",
334
+ "time": {
335
+ "hooks": {},
336
+ "register": 0
337
+ }
338
+ },
339
+ "virtual: config-mountElementId": {
340
+ "id": "virtual: config-mountElementId",
341
+ "key": "mountElementId",
342
+ "config": {
343
+ "default": "root"
344
+ },
345
+ "type": "plugin",
346
+ "enableBy": "register",
347
+ "time": {
348
+ "hooks": {},
349
+ "register": 0
350
+ }
351
+ },
352
+ "virtual: config-metas": {
353
+ "id": "virtual: config-metas",
354
+ "key": "metas",
355
+ "config": {},
356
+ "type": "plugin",
357
+ "enableBy": "register",
358
+ "time": {
359
+ "hooks": {},
360
+ "register": 0
361
+ }
362
+ },
363
+ "virtual: config-links": {
364
+ "id": "virtual: config-links",
365
+ "key": "links",
366
+ "config": {},
367
+ "type": "plugin",
368
+ "enableBy": "register",
369
+ "time": {
370
+ "hooks": {},
371
+ "register": 0
372
+ }
373
+ },
374
+ "virtual: config-historyWithQuery": {
375
+ "id": "virtual: config-historyWithQuery",
376
+ "key": "historyWithQuery",
377
+ "config": {},
378
+ "type": "plugin",
379
+ "enableBy": "register",
380
+ "time": {
381
+ "hooks": {},
382
+ "register": 0
383
+ }
384
+ },
385
+ "virtual: config-history": {
386
+ "id": "virtual: config-history",
387
+ "key": "history",
388
+ "config": {
389
+ "default": {
390
+ "type": "browser"
391
+ }
392
+ },
393
+ "type": "plugin",
394
+ "enableBy": "register",
395
+ "time": {
396
+ "hooks": {},
397
+ "register": 0
398
+ }
399
+ },
400
+ "virtual: config-headScripts": {
401
+ "id": "virtual: config-headScripts",
402
+ "key": "headScripts",
403
+ "config": {},
404
+ "type": "plugin",
405
+ "enableBy": "register",
406
+ "time": {
407
+ "hooks": {},
408
+ "register": 0
409
+ }
410
+ },
411
+ "virtual: config-esbuildMinifyIIFE": {
412
+ "id": "virtual: config-esbuildMinifyIIFE",
413
+ "key": "esbuildMinifyIIFE",
414
+ "config": {},
415
+ "type": "plugin",
416
+ "enableBy": "register",
417
+ "time": {
418
+ "hooks": {},
419
+ "register": 0
420
+ }
421
+ },
422
+ "virtual: config-conventionRoutes": {
423
+ "id": "virtual: config-conventionRoutes",
424
+ "key": "conventionRoutes",
425
+ "config": {},
426
+ "type": "plugin",
427
+ "enableBy": "register",
428
+ "time": {
429
+ "hooks": {},
430
+ "register": 0
431
+ }
432
+ },
433
+ "virtual: config-conventionLayout": {
434
+ "id": "virtual: config-conventionLayout",
435
+ "key": "conventionLayout",
436
+ "config": {},
437
+ "type": "plugin",
438
+ "enableBy": "register",
439
+ "time": {
440
+ "hooks": {},
441
+ "register": 0
442
+ }
443
+ },
444
+ "virtual: config-base": {
445
+ "id": "virtual: config-base",
446
+ "key": "base",
447
+ "config": {
448
+ "default": "/"
449
+ },
450
+ "type": "plugin",
451
+ "enableBy": "register",
452
+ "time": {
453
+ "hooks": {},
454
+ "register": 0
455
+ }
456
+ },
457
+ "virtual: config-analyze": {
458
+ "id": "virtual: config-analyze",
459
+ "key": "analyze",
460
+ "config": {},
461
+ "type": "plugin",
462
+ "enableBy": "register",
463
+ "time": {
464
+ "hooks": {},
465
+ "register": 0
466
+ }
467
+ },
468
+ "virtual: config-writeToDisk": {
469
+ "id": "virtual: config-writeToDisk",
470
+ "key": "writeToDisk",
471
+ "config": {},
472
+ "type": "plugin",
473
+ "enableBy": "register",
474
+ "time": {
475
+ "hooks": {},
476
+ "register": 0
477
+ }
478
+ },
479
+ "virtual: config-transformRuntime": {
480
+ "id": "virtual: config-transformRuntime",
481
+ "key": "transformRuntime",
482
+ "config": {},
483
+ "type": "plugin",
484
+ "enableBy": "register",
485
+ "time": {
486
+ "hooks": {},
487
+ "register": 0
488
+ }
489
+ },
490
+ "virtual: config-theme": {
491
+ "id": "virtual: config-theme",
492
+ "key": "theme",
493
+ "config": {},
494
+ "type": "plugin",
495
+ "enableBy": "register",
496
+ "time": {
497
+ "hooks": {},
498
+ "register": 0
499
+ }
500
+ },
501
+ "virtual: config-targets": {
502
+ "id": "virtual: config-targets",
503
+ "key": "targets",
504
+ "config": {},
505
+ "type": "plugin",
506
+ "enableBy": "register",
507
+ "time": {
508
+ "hooks": {},
509
+ "register": 0
510
+ }
511
+ },
512
+ "virtual: config-svgr": {
513
+ "id": "virtual: config-svgr",
514
+ "key": "svgr",
515
+ "config": {
516
+ "default": {}
517
+ },
518
+ "type": "plugin",
519
+ "enableBy": "register",
520
+ "time": {
521
+ "hooks": {},
522
+ "register": 0
523
+ }
524
+ },
525
+ "virtual: config-svgo": {
526
+ "id": "virtual: config-svgo",
527
+ "key": "svgo",
528
+ "config": {},
529
+ "type": "plugin",
530
+ "enableBy": "register",
531
+ "time": {
532
+ "hooks": {},
533
+ "register": 0
534
+ }
535
+ },
536
+ "virtual: config-stylusLoader": {
537
+ "id": "virtual: config-stylusLoader",
538
+ "key": "stylusLoader",
539
+ "config": {},
540
+ "type": "plugin",
541
+ "enableBy": "register",
542
+ "time": {
543
+ "hooks": {},
544
+ "register": 0
545
+ }
546
+ },
547
+ "virtual: config-styleLoader": {
548
+ "id": "virtual: config-styleLoader",
549
+ "key": "styleLoader",
550
+ "config": {},
551
+ "type": "plugin",
552
+ "enableBy": "register",
553
+ "time": {
554
+ "hooks": {},
555
+ "register": 0
556
+ }
557
+ },
558
+ "virtual: config-srcTranspilerOptions": {
559
+ "id": "virtual: config-srcTranspilerOptions",
560
+ "key": "srcTranspilerOptions",
561
+ "config": {},
562
+ "type": "plugin",
563
+ "enableBy": "register",
564
+ "time": {
565
+ "hooks": {},
566
+ "register": 0
567
+ }
568
+ },
569
+ "virtual: config-srcTranspiler": {
570
+ "id": "virtual: config-srcTranspiler",
571
+ "key": "srcTranspiler",
572
+ "config": {},
573
+ "type": "plugin",
574
+ "enableBy": "register",
575
+ "time": {
576
+ "hooks": {},
577
+ "register": 0
578
+ }
579
+ },
580
+ "virtual: config-sassLoader": {
581
+ "id": "virtual: config-sassLoader",
582
+ "key": "sassLoader",
583
+ "config": {},
584
+ "type": "plugin",
585
+ "enableBy": "register",
586
+ "time": {
587
+ "hooks": {},
588
+ "register": 0
589
+ }
590
+ },
591
+ "virtual: config-runtimePublicPath": {
592
+ "id": "virtual: config-runtimePublicPath",
593
+ "key": "runtimePublicPath",
594
+ "config": {},
595
+ "type": "plugin",
596
+ "enableBy": "register",
597
+ "time": {
598
+ "hooks": {},
599
+ "register": 0
600
+ }
601
+ },
602
+ "virtual: config-purgeCSS": {
603
+ "id": "virtual: config-purgeCSS",
604
+ "key": "purgeCSS",
605
+ "config": {},
606
+ "type": "plugin",
607
+ "enableBy": "register",
608
+ "time": {
609
+ "hooks": {},
610
+ "register": 0
611
+ }
612
+ },
613
+ "virtual: config-publicPath": {
614
+ "id": "virtual: config-publicPath",
615
+ "key": "publicPath",
616
+ "config": {
617
+ "default": "/"
618
+ },
619
+ "type": "plugin",
620
+ "enableBy": "register",
621
+ "time": {
622
+ "hooks": {},
623
+ "register": 0
624
+ }
625
+ },
626
+ "virtual: config-proxy": {
627
+ "id": "virtual: config-proxy",
628
+ "key": "proxy",
629
+ "config": {},
630
+ "type": "plugin",
631
+ "enableBy": "register",
632
+ "time": {
633
+ "hooks": {},
634
+ "register": 0
635
+ }
636
+ },
637
+ "virtual: config-postcssLoader": {
638
+ "id": "virtual: config-postcssLoader",
639
+ "key": "postcssLoader",
640
+ "config": {},
641
+ "type": "plugin",
642
+ "enableBy": "register",
643
+ "time": {
644
+ "hooks": {},
645
+ "register": 0
646
+ }
647
+ },
648
+ "virtual: config-outputPath": {
649
+ "id": "virtual: config-outputPath",
650
+ "key": "outputPath",
651
+ "config": {},
652
+ "type": "plugin",
653
+ "enableBy": "register",
654
+ "time": {
655
+ "hooks": {},
656
+ "register": 0
657
+ }
658
+ },
659
+ "virtual: config-normalCSSLoaderModules": {
660
+ "id": "virtual: config-normalCSSLoaderModules",
661
+ "key": "normalCSSLoaderModules",
662
+ "config": {},
663
+ "type": "plugin",
664
+ "enableBy": "register",
665
+ "time": {
666
+ "hooks": {},
667
+ "register": 0
668
+ }
669
+ },
670
+ "virtual: config-mfsu": {
671
+ "id": "virtual: config-mfsu",
672
+ "key": "mfsu",
673
+ "config": {
674
+ "default": {
675
+ "strategy": "eager"
676
+ }
677
+ },
678
+ "type": "plugin",
679
+ "enableBy": "register",
680
+ "time": {
681
+ "hooks": {},
682
+ "register": 0
683
+ }
684
+ },
685
+ "virtual: config-mdx": {
686
+ "id": "virtual: config-mdx",
687
+ "key": "mdx",
688
+ "config": {},
689
+ "type": "plugin",
690
+ "enableBy": "register",
691
+ "time": {
692
+ "hooks": {},
693
+ "register": 0
694
+ }
695
+ },
696
+ "virtual: config-manifest": {
697
+ "id": "virtual: config-manifest",
698
+ "key": "manifest",
699
+ "config": {},
700
+ "type": "plugin",
701
+ "enableBy": "register",
702
+ "time": {
703
+ "hooks": {},
704
+ "register": 0
705
+ }
706
+ },
707
+ "virtual: config-lessLoader": {
708
+ "id": "virtual: config-lessLoader",
709
+ "key": "lessLoader",
710
+ "config": {},
711
+ "type": "plugin",
712
+ "enableBy": "register",
713
+ "time": {
714
+ "hooks": {},
715
+ "register": 0
716
+ }
717
+ },
718
+ "virtual: config-jsMinifierOptions": {
719
+ "id": "virtual: config-jsMinifierOptions",
720
+ "key": "jsMinifierOptions",
721
+ "config": {},
722
+ "type": "plugin",
723
+ "enableBy": "register",
724
+ "time": {
725
+ "hooks": {},
726
+ "register": 0
727
+ }
728
+ },
729
+ "virtual: config-jsMinifier": {
730
+ "id": "virtual: config-jsMinifier",
731
+ "key": "jsMinifier",
732
+ "config": {},
733
+ "type": "plugin",
734
+ "enableBy": "register",
735
+ "time": {
736
+ "hooks": {},
737
+ "register": 0
738
+ }
739
+ },
740
+ "virtual: config-inlineLimit": {
741
+ "id": "virtual: config-inlineLimit",
742
+ "key": "inlineLimit",
743
+ "config": {},
744
+ "type": "plugin",
745
+ "enableBy": "register",
746
+ "time": {
747
+ "hooks": {},
748
+ "register": 0
749
+ }
750
+ },
751
+ "virtual: config-ignoreMomentLocale": {
752
+ "id": "virtual: config-ignoreMomentLocale",
753
+ "key": "ignoreMomentLocale",
754
+ "config": {
755
+ "default": true
756
+ },
757
+ "type": "plugin",
758
+ "enableBy": "register",
759
+ "time": {
760
+ "hooks": {},
761
+ "register": 0
762
+ }
763
+ },
764
+ "virtual: config-https": {
765
+ "id": "virtual: config-https",
766
+ "key": "https",
767
+ "config": {},
768
+ "type": "plugin",
769
+ "enableBy": "register",
770
+ "time": {
771
+ "hooks": {},
772
+ "register": 0
773
+ }
774
+ },
775
+ "virtual: config-hash": {
776
+ "id": "virtual: config-hash",
777
+ "key": "hash",
778
+ "config": {},
779
+ "type": "plugin",
780
+ "enableBy": "register",
781
+ "time": {
782
+ "hooks": {},
783
+ "register": 0
784
+ }
785
+ },
786
+ "virtual: config-forkTSChecker": {
787
+ "id": "virtual: config-forkTSChecker",
788
+ "key": "forkTSChecker",
789
+ "config": {},
790
+ "type": "plugin",
791
+ "enableBy": "register",
792
+ "time": {
793
+ "hooks": {},
794
+ "register": 0
795
+ }
796
+ },
797
+ "virtual: config-fastRefresh": {
798
+ "id": "virtual: config-fastRefresh",
799
+ "key": "fastRefresh",
800
+ "config": {},
801
+ "type": "plugin",
802
+ "enableBy": "register",
803
+ "time": {
804
+ "hooks": {},
805
+ "register": 0
806
+ }
807
+ },
808
+ "virtual: config-extraPostCSSPlugins": {
809
+ "id": "virtual: config-extraPostCSSPlugins",
810
+ "key": "extraPostCSSPlugins",
811
+ "config": {},
812
+ "type": "plugin",
813
+ "enableBy": "register",
814
+ "time": {
815
+ "hooks": {},
816
+ "register": 0
817
+ }
818
+ },
819
+ "virtual: config-extraBabelPresets": {
820
+ "id": "virtual: config-extraBabelPresets",
821
+ "key": "extraBabelPresets",
822
+ "config": {},
823
+ "type": "plugin",
824
+ "enableBy": "register",
825
+ "time": {
826
+ "hooks": {},
827
+ "register": 0
828
+ }
829
+ },
830
+ "virtual: config-extraBabelPlugins": {
831
+ "id": "virtual: config-extraBabelPlugins",
832
+ "key": "extraBabelPlugins",
833
+ "config": {},
834
+ "type": "plugin",
835
+ "enableBy": "register",
836
+ "time": {
837
+ "hooks": {},
838
+ "register": 0
839
+ }
840
+ },
841
+ "virtual: config-extraBabelIncludes": {
842
+ "id": "virtual: config-extraBabelIncludes",
843
+ "key": "extraBabelIncludes",
844
+ "config": {},
845
+ "type": "plugin",
846
+ "enableBy": "register",
847
+ "time": {
848
+ "hooks": {},
849
+ "register": 0
850
+ }
851
+ },
852
+ "virtual: config-externals": {
853
+ "id": "virtual: config-externals",
854
+ "key": "externals",
855
+ "config": {
856
+ "default": {}
857
+ },
858
+ "type": "plugin",
859
+ "enableBy": "register",
860
+ "time": {
861
+ "hooks": {},
862
+ "register": 0
863
+ }
864
+ },
865
+ "virtual: config-esm": {
866
+ "id": "virtual: config-esm",
867
+ "key": "esm",
868
+ "config": {},
869
+ "type": "plugin",
870
+ "enableBy": "register",
871
+ "time": {
872
+ "hooks": {},
873
+ "register": 0
874
+ }
875
+ },
876
+ "virtual: config-devtool": {
877
+ "id": "virtual: config-devtool",
878
+ "key": "devtool",
879
+ "config": {},
880
+ "type": "plugin",
881
+ "enableBy": "register",
882
+ "time": {
883
+ "hooks": {},
884
+ "register": 0
885
+ }
886
+ },
887
+ "virtual: config-depTranspiler": {
888
+ "id": "virtual: config-depTranspiler",
889
+ "key": "depTranspiler",
890
+ "config": {},
891
+ "type": "plugin",
892
+ "enableBy": "register",
893
+ "time": {
894
+ "hooks": {},
895
+ "register": 0
896
+ }
897
+ },
898
+ "virtual: config-define": {
899
+ "id": "virtual: config-define",
900
+ "key": "define",
901
+ "config": {},
902
+ "type": "plugin",
903
+ "enableBy": "register",
904
+ "time": {
905
+ "hooks": {},
906
+ "register": 0
907
+ }
908
+ },
909
+ "virtual: config-deadCode": {
910
+ "id": "virtual: config-deadCode",
911
+ "key": "deadCode",
912
+ "config": {},
913
+ "type": "plugin",
914
+ "enableBy": "register",
915
+ "time": {
916
+ "hooks": {},
917
+ "register": 0
918
+ }
919
+ },
920
+ "virtual: config-cssPublicPath": {
921
+ "id": "virtual: config-cssPublicPath",
922
+ "key": "cssPublicPath",
923
+ "config": {},
924
+ "type": "plugin",
925
+ "enableBy": "register",
926
+ "time": {
927
+ "hooks": {},
928
+ "register": 0
929
+ }
930
+ },
931
+ "virtual: config-cssMinifierOptions": {
932
+ "id": "virtual: config-cssMinifierOptions",
933
+ "key": "cssMinifierOptions",
934
+ "config": {},
935
+ "type": "plugin",
936
+ "enableBy": "register",
937
+ "time": {
938
+ "hooks": {},
939
+ "register": 0
940
+ }
941
+ },
942
+ "virtual: config-cssMinifier": {
943
+ "id": "virtual: config-cssMinifier",
944
+ "key": "cssMinifier",
945
+ "config": {},
946
+ "type": "plugin",
947
+ "enableBy": "register",
948
+ "time": {
949
+ "hooks": {},
950
+ "register": 0
951
+ }
952
+ },
953
+ "virtual: config-cssLoaderModules": {
954
+ "id": "virtual: config-cssLoaderModules",
955
+ "key": "cssLoaderModules",
956
+ "config": {},
957
+ "type": "plugin",
958
+ "enableBy": "register",
959
+ "time": {
960
+ "hooks": {},
961
+ "register": 0
962
+ }
963
+ },
964
+ "virtual: config-cssLoader": {
965
+ "id": "virtual: config-cssLoader",
966
+ "key": "cssLoader",
967
+ "config": {},
968
+ "type": "plugin",
969
+ "enableBy": "register",
970
+ "time": {
971
+ "hooks": {},
972
+ "register": 0
973
+ }
974
+ },
975
+ "virtual: config-copy": {
976
+ "id": "virtual: config-copy",
977
+ "key": "copy",
978
+ "config": {},
979
+ "type": "plugin",
980
+ "enableBy": "register",
981
+ "time": {
982
+ "hooks": {},
983
+ "register": 0
984
+ }
985
+ },
986
+ "virtual: config-checkDepCssModules": {
987
+ "id": "virtual: config-checkDepCssModules",
988
+ "key": "checkDepCssModules",
989
+ "config": {},
990
+ "type": "plugin",
991
+ "enableBy": "register",
992
+ "time": {
993
+ "hooks": {},
994
+ "register": 0
995
+ }
996
+ },
997
+ "virtual: config-chainWebpack": {
998
+ "id": "virtual: config-chainWebpack",
999
+ "key": "chainWebpack",
1000
+ "config": {},
1001
+ "type": "plugin",
1002
+ "enableBy": "register",
1003
+ "time": {
1004
+ "hooks": {},
1005
+ "register": 0
1006
+ }
1007
+ },
1008
+ "virtual: config-cacheDirectoryPath": {
1009
+ "id": "virtual: config-cacheDirectoryPath",
1010
+ "key": "cacheDirectoryPath",
1011
+ "config": {},
1012
+ "type": "plugin",
1013
+ "enableBy": "register",
1014
+ "time": {
1015
+ "hooks": {},
1016
+ "register": 0
1017
+ }
1018
+ },
1019
+ "virtual: config-babelLoaderCustomize": {
1020
+ "id": "virtual: config-babelLoaderCustomize",
1021
+ "key": "babelLoaderCustomize",
1022
+ "config": {},
1023
+ "type": "plugin",
1024
+ "enableBy": "register",
1025
+ "time": {
1026
+ "hooks": {},
1027
+ "register": 0
1028
+ }
1029
+ },
1030
+ "virtual: config-autoprefixer": {
1031
+ "id": "virtual: config-autoprefixer",
1032
+ "key": "autoprefixer",
1033
+ "config": {},
1034
+ "type": "plugin",
1035
+ "enableBy": "register",
1036
+ "time": {
1037
+ "hooks": {},
1038
+ "register": 0
1039
+ }
1040
+ },
1041
+ "virtual: config-autoCSSModules": {
1042
+ "id": "virtual: config-autoCSSModules",
1043
+ "key": "autoCSSModules",
1044
+ "config": {
1045
+ "default": true
1046
+ },
1047
+ "type": "plugin",
1048
+ "enableBy": "register",
1049
+ "time": {
1050
+ "hooks": {},
1051
+ "register": 0
1052
+ }
1053
+ },
1054
+ "virtual: config-alias": {
1055
+ "id": "virtual: config-alias",
1056
+ "key": "alias",
1057
+ "config": {
1058
+ "default": {
1059
+ "umi": "@@/exports",
1060
+ "react": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/react@18.3.1/node_modules/react",
1061
+ "react-dom": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom",
1062
+ "react-router": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/react-router@6.3.0_react@18.3.1/node_modules/react-router",
1063
+ "react-router-dom": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/react-router-dom@6.3.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-router-dom"
1064
+ }
1065
+ },
1066
+ "type": "plugin",
1067
+ "enableBy": "register",
1068
+ "time": {
1069
+ "hooks": {},
1070
+ "register": 0
1071
+ }
1072
+ },
1073
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/crossorigin/crossorigin": {
1074
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1075
+ "type": "plugin",
1076
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/crossorigin/crossorigin.js",
1077
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/crossorigin/crossorigin",
1078
+ "key": "crossorigin",
1079
+ "config": {},
1080
+ "time": {
1081
+ "hooks": {},
1082
+ "register": 0
1083
+ },
1084
+ "enableBy": "config"
1085
+ },
1086
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/depsOnDemand/depsOnDemand": {
1087
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1088
+ "type": "plugin",
1089
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/depsOnDemand/depsOnDemand.js",
1090
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/depsOnDemand/depsOnDemand",
1091
+ "key": "depsOnDemand",
1092
+ "config": {},
1093
+ "time": {
1094
+ "hooks": {
1095
+ "onStart": [
1096
+ 0
1097
+ ]
1098
+ },
1099
+ "register": 1
1100
+ },
1101
+ "enableBy": "register"
1102
+ },
1103
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/devTool/devTool": {
1104
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1105
+ "type": "plugin",
1106
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/devTool/devTool.js",
1107
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/devTool/devTool",
1108
+ "key": "devTool",
1109
+ "config": {},
1110
+ "time": {
1111
+ "hooks": {},
1112
+ "register": 1
1113
+ },
1114
+ "enableBy": "register"
1115
+ },
1116
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/esbuildHelperChecker/esbuildHelperChecker": {
1117
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1118
+ "type": "plugin",
1119
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/esbuildHelperChecker/esbuildHelperChecker.js",
1120
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/esbuildHelperChecker/esbuildHelperChecker",
1121
+ "key": "esbuildHelperChecker",
1122
+ "config": {},
1123
+ "time": {
1124
+ "hooks": {},
1125
+ "register": 91
1126
+ },
1127
+ "enableBy": "register"
1128
+ },
1129
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/esmi/esmi": {
1130
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1131
+ "type": "plugin",
1132
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/esmi/esmi.js",
1133
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/esmi/esmi",
1134
+ "key": "esmi",
1135
+ "config": {},
1136
+ "time": {
1137
+ "hooks": {},
1138
+ "register": 29
1139
+ },
1140
+ "enableBy": "config"
1141
+ },
1142
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/exportStatic/exportStatic": {
1143
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1144
+ "type": "plugin",
1145
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/exportStatic/exportStatic.js",
1146
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/exportStatic/exportStatic",
1147
+ "key": "exportStatic",
1148
+ "config": {},
1149
+ "time": {
1150
+ "hooks": {},
1151
+ "register": 10
1152
+ },
1153
+ "enableBy": "config"
1154
+ },
1155
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/favicons/favicons": {
1156
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1157
+ "type": "plugin",
1158
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/favicons/favicons.js",
1159
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/favicons/favicons",
1160
+ "key": "favicons",
1161
+ "config": {},
1162
+ "time": {
1163
+ "hooks": {
1164
+ "modifyAppData": [
1165
+ 0
1166
+ ]
1167
+ },
1168
+ "register": 0
1169
+ },
1170
+ "enableBy": "register"
1171
+ },
1172
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/helmet/helmet": {
1173
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1174
+ "type": "plugin",
1175
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/helmet/helmet.js",
1176
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/helmet/helmet",
1177
+ "key": "helmet",
1178
+ "config": {},
1179
+ "time": {
1180
+ "hooks": {},
1181
+ "register": 1
1182
+ },
1183
+ "enableBy": "register"
1184
+ },
1185
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/icons/icons": {
1186
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1187
+ "type": "plugin",
1188
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/icons/icons.js",
1189
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/icons/icons",
1190
+ "key": "icons",
1191
+ "config": {},
1192
+ "time": {
1193
+ "hooks": {},
1194
+ "register": 1
1195
+ },
1196
+ "enableBy": "config"
1197
+ },
1198
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/mock/mock": {
1199
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1200
+ "type": "plugin",
1201
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/mock/mock.js",
1202
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/mock/mock",
1203
+ "key": "mock",
1204
+ "config": {},
1205
+ "time": {
1206
+ "hooks": {},
1207
+ "register": 33
1208
+ }
1209
+ },
1210
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/mpa/mpa": {
1211
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1212
+ "type": "plugin",
1213
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/mpa/mpa.js",
1214
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/mpa/mpa",
1215
+ "key": "mpa",
1216
+ "config": {},
1217
+ "time": {
1218
+ "hooks": {},
1219
+ "register": 1
1220
+ },
1221
+ "enableBy": "config"
1222
+ },
1223
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/okam/okam": {
1224
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1225
+ "type": "plugin",
1226
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/okam/okam.js",
1227
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/okam/okam",
1228
+ "key": "okam",
1229
+ "config": {},
1230
+ "time": {
1231
+ "hooks": {},
1232
+ "register": 1
1233
+ }
1234
+ },
1235
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/overrides/overrides": {
1236
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1237
+ "type": "plugin",
1238
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/overrides/overrides.js",
1239
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/overrides/overrides",
1240
+ "key": "overrides",
1241
+ "config": {},
1242
+ "time": {
1243
+ "hooks": {},
1244
+ "register": 0
1245
+ },
1246
+ "enableBy": "register"
1247
+ },
1248
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/phantomDependency/phantomDependency": {
1249
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1250
+ "type": "plugin",
1251
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/phantomDependency/phantomDependency.js",
1252
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/phantomDependency/phantomDependency",
1253
+ "key": "phantomDependency",
1254
+ "config": {},
1255
+ "time": {
1256
+ "hooks": {},
1257
+ "register": 0
1258
+ },
1259
+ "enableBy": "config"
1260
+ },
1261
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/polyfill/polyfill": {
1262
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1263
+ "type": "plugin",
1264
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/polyfill/polyfill.js",
1265
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/polyfill/polyfill",
1266
+ "key": "polyfill",
1267
+ "config": {},
1268
+ "time": {
1269
+ "hooks": {
1270
+ "modifyConfig": [
1271
+ 1
1272
+ ]
1273
+ },
1274
+ "register": 2
1275
+ }
1276
+ },
1277
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/polyfill/publicPathPolyfill": {
1278
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1279
+ "type": "plugin",
1280
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/polyfill/publicPathPolyfill.js",
1281
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/polyfill/publicPathPolyfill",
1282
+ "key": "publicPathPolyfill",
1283
+ "config": {},
1284
+ "time": {
1285
+ "hooks": {},
1286
+ "register": 0
1287
+ },
1288
+ "enableBy": "register"
1289
+ },
1290
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/prepare/prepare": {
1291
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1292
+ "type": "plugin",
1293
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/prepare/prepare.js",
1294
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/prepare/prepare",
1295
+ "key": "prepare",
1296
+ "config": {},
1297
+ "time": {
1298
+ "hooks": {},
1299
+ "register": 1
1300
+ },
1301
+ "enableBy": "register"
1302
+ },
1303
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/routePrefetch/routePrefetch": {
1304
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1305
+ "type": "plugin",
1306
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/routePrefetch/routePrefetch.js",
1307
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/routePrefetch/routePrefetch",
1308
+ "key": "routePrefetch",
1309
+ "config": {},
1310
+ "time": {
1311
+ "hooks": {},
1312
+ "register": 0
1313
+ },
1314
+ "enableBy": "config"
1315
+ },
1316
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/stagewise/stagewise": {
1317
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1318
+ "type": "plugin",
1319
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/stagewise/stagewise.js",
1320
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/stagewise/stagewise",
1321
+ "key": "stagewise",
1322
+ "config": {},
1323
+ "time": {
1324
+ "hooks": {},
1325
+ "register": 1
1326
+ },
1327
+ "enableBy": "config"
1328
+ },
1329
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/terminal/terminal": {
1330
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1331
+ "type": "plugin",
1332
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/terminal/terminal.js",
1333
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/terminal/terminal",
1334
+ "key": "terminal",
1335
+ "config": {},
1336
+ "time": {
1337
+ "hooks": {},
1338
+ "register": 0
1339
+ },
1340
+ "enableBy": "register"
1341
+ },
1342
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/tmpFiles/tmpFiles": {
1343
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1344
+ "type": "plugin",
1345
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/tmpFiles/tmpFiles.js",
1346
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/tmpFiles/tmpFiles",
1347
+ "key": "tmpFiles",
1348
+ "config": {},
1349
+ "time": {
1350
+ "hooks": {},
1351
+ "register": 4
1352
+ },
1353
+ "enableBy": "register"
1354
+ },
1355
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/clientLoader/clientLoader": {
1356
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1357
+ "type": "plugin",
1358
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/clientLoader/clientLoader.js",
1359
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/clientLoader/clientLoader",
1360
+ "key": "clientLoader",
1361
+ "config": {},
1362
+ "time": {
1363
+ "hooks": {},
1364
+ "register": 1
1365
+ },
1366
+ "enableBy": "config"
1367
+ },
1368
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/routeProps/routeProps": {
1369
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1370
+ "type": "plugin",
1371
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/routeProps/routeProps.js",
1372
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/routeProps/routeProps",
1373
+ "key": "routeProps",
1374
+ "config": {},
1375
+ "time": {
1376
+ "hooks": {},
1377
+ "register": 0
1378
+ }
1379
+ },
1380
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/ssr/ssr": {
1381
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1382
+ "type": "plugin",
1383
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/ssr/ssr.js",
1384
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/ssr/ssr",
1385
+ "key": "ssr",
1386
+ "config": {},
1387
+ "time": {
1388
+ "hooks": {},
1389
+ "register": 2
1390
+ },
1391
+ "enableBy": "config"
1392
+ },
1393
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/tmpFiles/configTypes": {
1394
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1395
+ "type": "plugin",
1396
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/tmpFiles/configTypes.js",
1397
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/tmpFiles/configTypes",
1398
+ "key": "configTypes",
1399
+ "config": {},
1400
+ "time": {
1401
+ "hooks": {},
1402
+ "register": 2
1403
+ },
1404
+ "enableBy": "register"
1405
+ },
1406
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/transform/transform": {
1407
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1408
+ "type": "plugin",
1409
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/transform/transform.js",
1410
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/transform/transform",
1411
+ "key": "transform",
1412
+ "config": {},
1413
+ "time": {
1414
+ "hooks": {},
1415
+ "register": 3
1416
+ },
1417
+ "enableBy": "register"
1418
+ },
1419
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/lowImport/lowImport": {
1420
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1421
+ "type": "plugin",
1422
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/lowImport/lowImport.js",
1423
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/lowImport/lowImport",
1424
+ "key": "lowImport",
1425
+ "config": {},
1426
+ "time": {
1427
+ "hooks": {},
1428
+ "register": 2
1429
+ },
1430
+ "enableBy": "config"
1431
+ },
1432
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/vite/vite": {
1433
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1434
+ "type": "plugin",
1435
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/vite/vite.js",
1436
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/vite/vite",
1437
+ "key": "vite",
1438
+ "config": {},
1439
+ "time": {
1440
+ "hooks": {},
1441
+ "register": 1
1442
+ },
1443
+ "enableBy": "config"
1444
+ },
1445
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/apiRoute/apiRoute": {
1446
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1447
+ "type": "plugin",
1448
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/apiRoute/apiRoute.js",
1449
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/apiRoute/apiRoute",
1450
+ "key": "apiRoute",
1451
+ "config": {},
1452
+ "time": {
1453
+ "hooks": {},
1454
+ "register": 3
1455
+ }
1456
+ },
1457
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/monorepo/redirect": {
1458
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1459
+ "type": "plugin",
1460
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/monorepo/redirect.js",
1461
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/monorepo/redirect",
1462
+ "key": "monorepoRedirect",
1463
+ "config": {},
1464
+ "time": {
1465
+ "hooks": {},
1466
+ "register": 21
1467
+ },
1468
+ "enableBy": "config"
1469
+ },
1470
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/test/test": {
1471
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1472
+ "type": "plugin",
1473
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/test/test.js",
1474
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/test/test",
1475
+ "key": "test",
1476
+ "config": {},
1477
+ "time": {
1478
+ "hooks": {},
1479
+ "register": 0
1480
+ }
1481
+ },
1482
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/clickToComponent/clickToComponent": {
1483
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1484
+ "type": "plugin",
1485
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/clickToComponent/clickToComponent.js",
1486
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/clickToComponent/clickToComponent",
1487
+ "key": "clickToComponent",
1488
+ "config": {},
1489
+ "time": {
1490
+ "hooks": {},
1491
+ "register": 1
1492
+ }
1493
+ },
1494
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/legacy/legacy": {
1495
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1496
+ "type": "plugin",
1497
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/legacy/legacy.js",
1498
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/legacy/legacy",
1499
+ "key": "legacy",
1500
+ "config": {},
1501
+ "time": {
1502
+ "hooks": {},
1503
+ "register": 1
1504
+ },
1505
+ "enableBy": "config"
1506
+ },
1507
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/classPropertiesLoose/classPropertiesLoose": {
1508
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1509
+ "type": "plugin",
1510
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/classPropertiesLoose/classPropertiesLoose.js",
1511
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/classPropertiesLoose/classPropertiesLoose",
1512
+ "key": "classPropertiesLoose",
1513
+ "config": {},
1514
+ "time": {
1515
+ "hooks": {},
1516
+ "register": 0
1517
+ },
1518
+ "enableBy": "config"
1519
+ },
1520
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/webpack/webpack": {
1521
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1522
+ "type": "plugin",
1523
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/webpack/webpack.js",
1524
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/webpack/webpack",
1525
+ "key": "preset-umi:webpack",
1526
+ "config": {},
1527
+ "time": {
1528
+ "hooks": {},
1529
+ "register": 1
1530
+ }
1531
+ },
1532
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/swc/swc": {
1533
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1534
+ "type": "plugin",
1535
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/swc/swc.js",
1536
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/swc/swc",
1537
+ "key": "swc",
1538
+ "config": {},
1539
+ "time": {
1540
+ "hooks": {
1541
+ "addOnDemandDeps": [
1542
+ 0
1543
+ ]
1544
+ },
1545
+ "register": 0
1546
+ },
1547
+ "enableBy": "register"
1548
+ },
1549
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/ui/ui": {
1550
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1551
+ "type": "plugin",
1552
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/ui/ui.js",
1553
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/ui/ui",
1554
+ "key": "ui",
1555
+ "config": {},
1556
+ "time": {
1557
+ "hooks": {},
1558
+ "register": 3
1559
+ }
1560
+ },
1561
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/mako/mako": {
1562
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1563
+ "type": "plugin",
1564
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/mako/mako.js",
1565
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/mako/mako",
1566
+ "key": "mako",
1567
+ "config": {},
1568
+ "time": {
1569
+ "hooks": {},
1570
+ "register": 1
1571
+ },
1572
+ "enableBy": "config"
1573
+ },
1574
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/utoopack/utoopack": {
1575
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1576
+ "type": "plugin",
1577
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/utoopack/utoopack.js",
1578
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/utoopack/utoopack",
1579
+ "key": "utoopack",
1580
+ "config": {},
1581
+ "time": {
1582
+ "hooks": {},
1583
+ "register": 0
1584
+ }
1585
+ },
1586
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/hmrGuardian/hmrGuardian": {
1587
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1588
+ "type": "plugin",
1589
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/hmrGuardian/hmrGuardian.js",
1590
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/hmrGuardian/hmrGuardian",
1591
+ "key": "hmrGuardian",
1592
+ "config": {},
1593
+ "time": {
1594
+ "hooks": {},
1595
+ "register": 3
1596
+ }
1597
+ },
1598
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/routePreloadOnLoad/routePreloadOnLoad": {
1599
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1600
+ "type": "plugin",
1601
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/routePreloadOnLoad/routePreloadOnLoad.js",
1602
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/routePreloadOnLoad/routePreloadOnLoad",
1603
+ "key": "routePreloadOnLoad",
1604
+ "config": {},
1605
+ "time": {
1606
+ "hooks": {},
1607
+ "register": 26
1608
+ }
1609
+ },
1610
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/forget/forget": {
1611
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1612
+ "type": "plugin",
1613
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/forget/forget.js",
1614
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/forget/forget",
1615
+ "key": "forget",
1616
+ "config": {},
1617
+ "time": {
1618
+ "hooks": {},
1619
+ "register": 1
1620
+ },
1621
+ "enableBy": "config"
1622
+ },
1623
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/bundler/bundler": {
1624
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1625
+ "type": "plugin",
1626
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/bundler/bundler.js",
1627
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/features/bundler/bundler",
1628
+ "key": "preset-umi:bundler",
1629
+ "config": {},
1630
+ "time": {
1631
+ "hooks": {},
1632
+ "register": 1
1633
+ },
1634
+ "enableBy": "register"
1635
+ },
1636
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/build": {
1637
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1638
+ "type": "plugin",
1639
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/build.js",
1640
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/build",
1641
+ "key": "build",
1642
+ "config": {},
1643
+ "time": {
1644
+ "hooks": {},
1645
+ "register": 3
1646
+ },
1647
+ "enableBy": "register"
1648
+ },
1649
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/config/config": {
1650
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1651
+ "type": "plugin",
1652
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/config/config.js",
1653
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/config/config",
1654
+ "key": "config",
1655
+ "config": {},
1656
+ "time": {
1657
+ "hooks": {},
1658
+ "register": 39
1659
+ },
1660
+ "enableBy": "register"
1661
+ },
1662
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/dev/dev": {
1663
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1664
+ "type": "plugin",
1665
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/dev/dev.js",
1666
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/dev/dev",
1667
+ "key": "dev",
1668
+ "config": {},
1669
+ "time": {
1670
+ "hooks": {},
1671
+ "register": 25
1672
+ }
1673
+ },
1674
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/help": {
1675
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1676
+ "type": "plugin",
1677
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/help.js",
1678
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/help",
1679
+ "key": "help",
1680
+ "config": {},
1681
+ "time": {
1682
+ "hooks": {},
1683
+ "register": 0
1684
+ },
1685
+ "enableBy": "register"
1686
+ },
1687
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/lint": {
1688
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1689
+ "type": "plugin",
1690
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/lint.js",
1691
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/lint",
1692
+ "key": "lint",
1693
+ "config": {},
1694
+ "time": {
1695
+ "hooks": {},
1696
+ "register": 1
1697
+ },
1698
+ "enableBy": "register"
1699
+ },
1700
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/setup": {
1701
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1702
+ "type": "plugin",
1703
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/setup.js",
1704
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/setup",
1705
+ "key": "setup",
1706
+ "config": {},
1707
+ "time": {
1708
+ "hooks": {},
1709
+ "register": 0
1710
+ },
1711
+ "enableBy": "register"
1712
+ },
1713
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/deadcode": {
1714
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1715
+ "type": "plugin",
1716
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/deadcode.js",
1717
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/deadcode",
1718
+ "key": "deadcode",
1719
+ "config": {},
1720
+ "time": {
1721
+ "hooks": {},
1722
+ "register": 1
1723
+ },
1724
+ "enableBy": "register"
1725
+ },
1726
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/version": {
1727
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1728
+ "type": "plugin",
1729
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/version.js",
1730
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/version",
1731
+ "key": "version",
1732
+ "config": {},
1733
+ "time": {
1734
+ "hooks": {},
1735
+ "register": 0
1736
+ },
1737
+ "enableBy": "register"
1738
+ },
1739
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/page": {
1740
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1741
+ "type": "plugin",
1742
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/page.js",
1743
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/page",
1744
+ "key": "generator:page",
1745
+ "config": {},
1746
+ "time": {
1747
+ "hooks": {},
1748
+ "register": 2
1749
+ },
1750
+ "enableBy": "register"
1751
+ },
1752
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/prettier": {
1753
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1754
+ "type": "plugin",
1755
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/prettier.js",
1756
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/prettier",
1757
+ "key": "generator:prettier",
1758
+ "config": {},
1759
+ "time": {
1760
+ "hooks": {},
1761
+ "register": 0
1762
+ },
1763
+ "enableBy": "register"
1764
+ },
1765
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/tsconfig": {
1766
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1767
+ "type": "plugin",
1768
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/tsconfig.js",
1769
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/tsconfig",
1770
+ "key": "generator:tsconfig",
1771
+ "config": {},
1772
+ "time": {
1773
+ "hooks": {},
1774
+ "register": 1
1775
+ },
1776
+ "enableBy": "register"
1777
+ },
1778
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/jest": {
1779
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1780
+ "type": "plugin",
1781
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/jest.js",
1782
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/jest",
1783
+ "key": "generator:jest",
1784
+ "config": {},
1785
+ "time": {
1786
+ "hooks": {},
1787
+ "register": 0
1788
+ },
1789
+ "enableBy": "register"
1790
+ },
1791
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/tailwindcss": {
1792
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1793
+ "type": "plugin",
1794
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/tailwindcss.js",
1795
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/tailwindcss",
1796
+ "key": "generator:tailwindcss",
1797
+ "config": {},
1798
+ "time": {
1799
+ "hooks": {},
1800
+ "register": 1
1801
+ },
1802
+ "enableBy": "register"
1803
+ },
1804
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/dva": {
1805
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1806
+ "type": "plugin",
1807
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/dva.js",
1808
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/dva",
1809
+ "key": "generator:dva",
1810
+ "config": {},
1811
+ "time": {
1812
+ "hooks": {},
1813
+ "register": 0
1814
+ },
1815
+ "enableBy": "register"
1816
+ },
1817
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/component": {
1818
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1819
+ "type": "plugin",
1820
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/component.js",
1821
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/component",
1822
+ "key": "generator:component",
1823
+ "config": {},
1824
+ "time": {
1825
+ "hooks": {},
1826
+ "register": 1
1827
+ },
1828
+ "enableBy": "register"
1829
+ },
1830
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/mock": {
1831
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1832
+ "type": "plugin",
1833
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/mock.js",
1834
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/mock",
1835
+ "key": "generator:mock",
1836
+ "config": {},
1837
+ "time": {
1838
+ "hooks": {},
1839
+ "register": 0
1840
+ },
1841
+ "enableBy": "register"
1842
+ },
1843
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/cypress": {
1844
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1845
+ "type": "plugin",
1846
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/cypress.js",
1847
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/cypress",
1848
+ "key": "generator:cypress",
1849
+ "config": {},
1850
+ "time": {
1851
+ "hooks": {},
1852
+ "register": 1
1853
+ },
1854
+ "enableBy": "register"
1855
+ },
1856
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/api": {
1857
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1858
+ "type": "plugin",
1859
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/api.js",
1860
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/api",
1861
+ "key": "generator:api",
1862
+ "config": {},
1863
+ "time": {
1864
+ "hooks": {},
1865
+ "register": 0
1866
+ },
1867
+ "enableBy": "register"
1868
+ },
1869
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/precommit": {
1870
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1871
+ "type": "plugin",
1872
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/precommit.js",
1873
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/generators/precommit",
1874
+ "key": "generator:precommit",
1875
+ "config": {},
1876
+ "time": {
1877
+ "hooks": {},
1878
+ "register": 1
1879
+ },
1880
+ "enableBy": "register"
1881
+ },
1882
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/plugin": {
1883
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1884
+ "type": "plugin",
1885
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/plugin.js",
1886
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/plugin",
1887
+ "key": "command:plugin",
1888
+ "config": {},
1889
+ "time": {
1890
+ "hooks": {},
1891
+ "register": 0
1892
+ },
1893
+ "enableBy": "register"
1894
+ },
1895
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/verify-commit": {
1896
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1897
+ "type": "plugin",
1898
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/verify-commit.js",
1899
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/verify-commit",
1900
+ "key": "verifyCommit",
1901
+ "config": {},
1902
+ "time": {
1903
+ "hooks": {},
1904
+ "register": 1
1905
+ },
1906
+ "enableBy": "register"
1907
+ },
1908
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/preview": {
1909
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1910
+ "type": "plugin",
1911
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/preview.js",
1912
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/preview",
1913
+ "key": "preview",
1914
+ "config": {},
1915
+ "time": {
1916
+ "hooks": {},
1917
+ "register": 23
1918
+ },
1919
+ "enableBy": "register"
1920
+ },
1921
+ "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/mfsu/mfsu": {
1922
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1923
+ "type": "plugin",
1924
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/mfsu/mfsu.js",
1925
+ "id": "./node_modules/.pnpm/@umijs+preset-umi@4.6.25_@types+node@25.2.0_@types+react@19.2.10_less-loader@12.3.0_les_58df256248ff09e533aea72785e2522e/node_modules/@umijs/preset-umi/dist/commands/mfsu/mfsu",
1926
+ "key": "mfsu-cli",
1927
+ "config": {},
1928
+ "time": {
1929
+ "hooks": {},
1930
+ "register": 0
1931
+ },
1932
+ "enableBy": "register"
1933
+ },
1934
+ "@umijs/plugin-run": {
1935
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1936
+ "type": "plugin",
1937
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+plugin-run@4.6.25/node_modules/@umijs/plugin-run/dist/index.js",
1938
+ "id": "@umijs/plugin-run",
1939
+ "key": "run",
1940
+ "config": {},
1941
+ "time": {
1942
+ "hooks": {},
1943
+ "register": 2
1944
+ },
1945
+ "enableBy": "register"
1946
+ },
1947
+ "./node_modules/.pnpm/@umijs+core@4.6.25/node_modules/@umijs/core/dist/service/generatePlugin": {
1948
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1949
+ "type": "plugin",
1950
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/@umijs+core@4.6.25/node_modules/@umijs/core/dist/service/generatePlugin.js",
1951
+ "id": "./node_modules/.pnpm/@umijs+core@4.6.25/node_modules/@umijs/core/dist/service/generatePlugin",
1952
+ "key": "generatePlugin",
1953
+ "config": {},
1954
+ "time": {
1955
+ "hooks": {},
1956
+ "register": 1
1957
+ },
1958
+ "enableBy": "register"
1959
+ },
1960
+ "./config/common-plugin": {
1961
+ "cwd": "/home/runner/work/open-admin/open-admin/web",
1962
+ "type": "plugin",
1963
+ "path": "/home/runner/work/open-admin/open-admin/web/config/common-plugin.js",
1964
+ "id": "./config/common-plugin",
1965
+ "key": "open-admin",
1966
+ "config": {},
1967
+ "time": {
1968
+ "hooks": {},
1969
+ "register": 8
1970
+ },
1971
+ "enableBy": "register"
1972
+ }
1973
+ },
1974
+ "presets": [],
1975
+ "name": "build",
1976
+ "args": {
1977
+ "_": []
1978
+ },
1979
+ "userConfig": {
1980
+ "hash": true,
1981
+ "history": {
1982
+ "type": "hash"
1983
+ },
1984
+ "mfsu": false,
1985
+ "esbuildMinifyIIFE": true,
1986
+ "plugins": [
1987
+ "./config/common-plugin"
1988
+ ],
1989
+ "proxy": {
1990
+ "/admin": {
1991
+ "target": "http://127.0.0.1:8080",
1992
+ "changeOrigin": true
1993
+ },
1994
+ "/preview": {
1995
+ "target": "http://127.0.0.1:8080",
1996
+ "changeOrigin": true
1997
+ },
1998
+ "/ureport": {
1999
+ "target": "http://127.0.0.1:8080",
2000
+ "changeOrigin": true,
2001
+ "pathRewrite": {
2002
+ "^/ureport": "/ureport"
2003
+ }
2004
+ },
2005
+ "/admin/ws": {
2006
+ "target": "ws://127.0.0.1:8080",
2007
+ "changeOrigin": true,
2008
+ "ws": true
2009
+ }
2010
+ }
2011
+ },
2012
+ "mainConfigFile": "/home/runner/work/open-admin/open-admin/web/config/config.js",
2013
+ "config": {
2014
+ "routeLoader": {
2015
+ "moduleType": "esm"
2016
+ },
2017
+ "mountElementId": "root",
2018
+ "history": {
2019
+ "type": "hash"
2020
+ },
2021
+ "base": "/",
2022
+ "svgr": {},
2023
+ "publicPath": "/",
2024
+ "mfsu": false,
2025
+ "ignoreMomentLocale": true,
2026
+ "externals": {},
2027
+ "autoCSSModules": true,
2028
+ "alias": {
2029
+ "umi": "@@/exports",
2030
+ "react": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/react@18.3.1/node_modules/react",
2031
+ "react-dom": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom",
2032
+ "react-router": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/react-router@6.3.0_react@18.3.1/node_modules/react-router",
2033
+ "react-router-dom": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/react-router-dom@6.3.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-router-dom",
2034
+ "@": "/home/runner/work/open-admin/open-admin/web/src",
2035
+ "@@": "/home/runner/work/open-admin/open-admin/web/src/.umi-production",
2036
+ "regenerator-runtime": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/regenerator-runtime@0.13.11/node_modules/regenerator-runtime"
2037
+ },
2038
+ "hash": true,
2039
+ "esbuildMinifyIIFE": true,
2040
+ "plugins": [
2041
+ "./config/common-plugin"
2042
+ ],
2043
+ "proxy": {
2044
+ "/admin": {
2045
+ "target": "http://127.0.0.1:8080",
2046
+ "changeOrigin": true
2047
+ },
2048
+ "/preview": {
2049
+ "target": "http://127.0.0.1:8080",
2050
+ "changeOrigin": true
2051
+ },
2052
+ "/ureport": {
2053
+ "target": "http://127.0.0.1:8080",
2054
+ "changeOrigin": true,
2055
+ "pathRewrite": {
2056
+ "^/ureport": "/ureport"
2057
+ }
2058
+ },
2059
+ "/admin/ws": {
2060
+ "target": "ws://127.0.0.1:8080",
2061
+ "changeOrigin": true,
2062
+ "ws": true
2063
+ }
2064
+ },
2065
+ "targets": {
2066
+ "chrome": 80
2067
+ }
2068
+ },
2069
+ "routes": {
2070
+ "404": {
2071
+ "path": "*",
2072
+ "id": "404",
2073
+ "parentId": "@@/global-layout",
2074
+ "file": "404.jsx",
2075
+ "absPath": "/*",
2076
+ "__content": "import React from \"react\";\nimport {Result} from \"antd\";\n\nexport default class extends React.Component {\n\n render() {\n return <Result\n status={404}\n title='页面不存在'\n />\n\n }\n}\n",
2077
+ "__isJSFile": true,
2078
+ "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/404.jsx"
2079
+ },
2080
+ "userCenter/ChangePassword": {
2081
+ "path": "userCenter/ChangePassword",
2082
+ "id": "userCenter/ChangePassword",
2083
+ "parentId": "@@/global-layout",
2084
+ "file": "userCenter/ChangePassword.jsx",
2085
+ "absPath": "/userCenter/ChangePassword",
2086
+ "__content": "import React from \"react\";\nimport {Button, Form, Input, Modal} from \"antd\";\n\n\nimport {history} from 'umi'\nimport {HttpUtils} from \"../../framework\";\n\nexport default class extends React.Component {\n\n\n onFinish = (values) => {\n HttpUtils.post('admin/userCenter/updatePwd', values).then(() => {\n Modal.success({\n title: '提示',\n content: '修改密码成功',\n onOk: () => {\n SysUtils.setToken(null)\n history.push('/login')\n }\n })\n })\n }\n\n validator = (rule, value) => {\n return new Promise((resolve, reject) => {\n HttpUtils.get(\"admin/sysUser/pwdStrength\", {password: value}).then(response => {\n const rs = response.data\n if (!rs.success) {\n reject(rs.message)\n }\n resolve()\n })\n })\n\n }\n\n render() {\n return <div>\n\n <Form onFinish={this.onFinish} style={{maxWidth: 400}}>\n\n <Form.Item name='newPassword'\n label='新密码'\n extra={'请输入字母、数字、特殊字符'}\n rules={[\n {required: true},\n {\n validator: this.validator\n }\n ]}\n >\n <Input.Password></Input.Password>\n </Form.Item>\n\n <Form.Item wrapperCol={{offset: 5}} style={{marginTop: 40}}>\n <Button type=\"primary\" htmlType=\"submit\">\n 确定\n </Button>\n </Form.Item>\n </Form>\n\n </div>\n }\n}\n",
2087
+ "__isJSFile": true,
2088
+ "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/userCenter/ChangePassword.jsx"
2089
+ },
2090
+ "system/sysManual/index": {
2091
+ "path": "system/sysManual",
2092
+ "id": "system/sysManual/index",
2093
+ "parentId": "@@/global-layout",
2094
+ "file": "system/sysManual/index.jsx",
2095
+ "absPath": "/system/sysManual",
2096
+ "__content": "import {PlusOutlined} from '@ant-design/icons'\nimport {Button, Form, Input, Modal, Popconfirm} from 'antd'\nimport React from 'react'\nimport {ButtonList, FieldUploadFile, HttpUtils, Page, ProTable} from \"../../../framework\";\n\n\nexport default class extends React.Component {\n\n state = {\n formValues: {},\n formOpen: false\n }\n\n formRef = React.createRef()\n tableRef = React.createRef()\n\n handleAdd = () => {\n this.setState({formOpen: true, formValues: {}})\n }\n\n handleEdit = record => {\n this.setState({formOpen: true, formValues: record})\n }\n\n onFinish = values => {\n HttpUtils.post('admin/sysManual/save', values).then(rs => {\n this.setState({formOpen: false})\n this.tableRef.current.reload()\n })\n }\n\n handleDelete = record => {\n HttpUtils.get('admin/sysManual/delete', {id: record.id}).then(rs => {\n this.tableRef.current.reload()\n })\n }\n\n columns = [\n\n {\n title: '名称',\n dataIndex: 'name',\n\n\n },\n\n {\n title: '版本',\n dataIndex: 'version',\n render(version) {\n return 'v' + version;\n }\n },\n\n {\n title: '文件',\n dataIndex: 'fileId',\n render(id) {\n const url = 'admin/sysFile/preview/' + id;\n return <a href={url} target='_blank'>查看文件</a>\n }\n\n },\n {\n title: '操作',\n dataIndex: 'option',\n render: (_, record) => (\n <ButtonList>\n <Button size='small' perm='sysManual:save' onClick={() => this.handleEdit(record)}>编辑</Button>\n <Popconfirm perm='sysManual:delete' title='是否确定删除操作手册'\n onConfirm={() => this.handleDelete(record)}>\n <Button size='small'>删除</Button>\n </Popconfirm>\n </ButtonList>\n ),\n },\n\n ]\n\n render() {\n return <Page>\n <ProTable\n actionRef={this.tableRef}\n toolBarRender={(params, {selectedRows, selectedRowKeys}) => {\n return <ButtonList>\n <Button perm='sysManual:save' type='primary' onClick={this.handleAdd}>\n <PlusOutlined/> 新增\n </Button>\n </ButtonList>\n }}\n request={(params) => HttpUtils.get('admin/sysManual/page', params)}\n columns={this.columns}\n\n />\n\n <Modal title='操作手册'\n open={this.state.formOpen}\n onOk={() => this.formRef.current.submit()}\n onCancel={() => this.setState({formOpen: false})}\n destroyOnHidden\n maskClosable={false}\n >\n\n <Form ref={this.formRef} labelCol={{flex: '100px'}}\n initialValues={this.state.formValues}\n onFinish={this.onFinish}\n >\n <Form.Item name='id' noStyle></Form.Item>\n\n <Form.Item label='名称' name='name' rules={[{required: true}]}>\n <Input/>\n </Form.Item>\n\n <Form.Item label='文件' name='fileId' rules={[{required: true}]}>\n <FieldUploadFile accept=\".pdf\" maxCount={1}/>\n </Form.Item>\n\n </Form>\n </Modal>\n </Page>\n\n\n }\n}\n\n\n",
2097
+ "__isJSFile": true,
2098
+ "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/system/sysManual/index.jsx"
2099
+ },
2100
+ "system/dict/DictItem": {
2101
+ "path": "system/dict/DictItem",
2102
+ "id": "system/dict/DictItem",
2103
+ "parentId": "@@/global-layout",
2104
+ "file": "system/dict/DictItem.jsx",
2105
+ "absPath": "/system/dict/DictItem",
2106
+ "__content": "import {PlusOutlined} from '@ant-design/icons'\nimport {Button, Col, Form, Input, InputNumber, Modal, Popconfirm, Row, Tag} from 'antd'\nimport React from 'react'\n\nimport {ButtonList, FieldBoolean, HttpUtils, ProTable} from '../../../framework'\n\n\nexport default class extends React.Component {\n\n state = {\n formValues: {},\n formOpen: false\n }\n\n formRef = React.createRef()\n tableRef = React.createRef()\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (prevProps.sysDictId !== this.props.sysDictId) {\n this.tableRef.current.reload()\n }\n }\n\n handleAdd = () => {\n this.setState({formOpen: true, formValues: {}})\n }\n\n handleEdit = record => {\n this.setState({formOpen: true, formValues: record})\n }\n\n onFinish = values => {\n values.sysDict = {id: this.props.sysDictId}\n HttpUtils.post('admin/sysDictItem/save', values).then(rs => {\n this.setState({formOpen: false})\n this.tableRef.current.reload()\n })\n }\n\n handleDelete = row => {\n HttpUtils.get('admin/sysDictItem/delete', row).then(rs => {\n this.tableRef.current.reload()\n })\n }\n\n columns = [\n {\n title: '文本',\n dataIndex: 'text',\n },\n {\n title: '编码',\n dataIndex: 'code',\n },\n\n {\n title: '启用',\n dataIndex: 'enabled',\n render(v) {\n return v ? '是' : '否'\n }\n\n },\n {\n title: '显示颜色',\n dataIndex: 'color',\n render(v) {\n return <Tag color={v}>COLOR</Tag>\n }\n },\n {\n title: '系统内置',\n dataIndex: 'builtin',\n render(v) {\n return v ? '是' : '否'\n }\n\n },\n {\n title: '序号',\n dataIndex: 'seq',\n },\n {\n title: '操作',\n dataIndex: 'option',\n render: (_, record) => {\n\n return (\n <ButtonList>\n <Button size='small' perm='sysDict:save'\n onClick={() => this.handleEdit(record)}> 编辑 </Button>\n <Popconfirm perm='sysDict:delete' title='是否确定删除字典项'\n onConfirm={() => this.handleDelete(record)}>\n <Button size='small'>删除</Button>\n </Popconfirm>\n </ButtonList>\n );\n },\n },\n ]\n\n render() {\n return <>\n <ProTable\n headerTitle='字典项列表'\n actionRef={this.tableRef}\n toolBarRender={() => {\n return <ButtonList>\n <Button perm='sysDictItem:save' type='primary' onClick={this.handleAdd}>\n <PlusOutlined/> 新增\n </Button>\n </ButtonList>\n }}\n request={(params) => {\n params.sysDictId = this.props.sysDictId\n return HttpUtils.get('admin/sysDictItem/page', params);\n }}\n columns={this.columns}\n rowKey='id'\n search={false}\n />\n\n <Modal\n title='编辑数据字典项'\n open={this.state.formOpen}\n onOk={() => this.formRef.current.submit()}\n onCancel={() => this.setState({formOpen: false})}\n destroyOnHidden\n >\n\n <Form ref={this.formRef} labelCol={{flex: '100px'}}\n initialValues={this.state.formValues}\n onFinish={this.onFinish}>\n <Form.Item name='id' noStyle></Form.Item>\n\n <Row>\n <Col span={12}>\n <Form.Item label='编码' name='code' rules={[{required: true}]}>\n <Input/>\n </Form.Item>\n </Col>\n <Col span={12}>\n <Form.Item label='文本' name='text' rules={[{required: true}]}>\n <Input/>\n </Form.Item>\n </Col>\n </Row>\n\n <Row>\n <Col span={12}>\n <Form.Item label='颜色' name='color' rules={[{required: true}]}>\n <Input/>\n </Form.Item>\n </Col>\n <Col span={12}>\n <Form.Item label='序号' name='seq' rules={[{required: true}]}>\n <InputNumber/>\n </Form.Item>\n </Col>\n </Row>\n\n <Form.Item label='启用' name='enabled' rules={[{required: true}]}>\n <FieldBoolean/>\n </Form.Item>\n\n </Form>\n </Modal>\n </>\n\n\n }\n}\n\n\n\n",
2107
+ "__isJSFile": true,
2108
+ "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/system/dict/DictItem.jsx"
2109
+ },
2110
+ "system/user/UserPerm": {
2111
+ "path": "system/user/UserPerm",
2112
+ "id": "system/user/UserPerm",
2113
+ "parentId": "@@/global-layout",
2114
+ "file": "system/user/UserPerm.jsx",
2115
+ "absPath": "/system/user/UserPerm",
2116
+ "__content": "import {Form, Modal} from 'antd';\nimport React from 'react';\nimport {FieldDictSelect, FieldRemoteSelectMultiple, FieldSysOrgTree, HttpUtils} from \"../../../framework\";\n\n\nexport default class UserPerm extends React.Component {\n\n\n state = {\n visible: false,\n\n confirmLoading: false,\n\n formValues: {\n dataPermType: null\n },\n }\n formRef = React.createRef()\n\n show(item) {\n this.setState({visible: true})\n\n HttpUtils.get('admin/sysUser/getPermInfo', {id: item.id}).then(rs => {\n this.setState({formValues: rs})\n this.formRef.current.setFieldsValue(rs)\n })\n }\n\n handleSave = (values) => {\n values.grantOrgIdList = this.state.checked\n\n this.setState({\n confirmLoading: true\n })\n\n\n HttpUtils.post('admin/sysUser/grantPerm', values).then(rs => {\n this.setState({\n visible: false,\n confirmLoading: false\n })\n this.props.onOk()\n }).finally(() => {\n this.setState({\n confirmLoading: false\n })\n\n })\n }\n\n render() {\n let {visible, confirmLoading} = this.state\n\n return <Modal\n title=\"授权\"\n destroyOnHidden\n width={600}\n open={visible}\n confirmLoading={confirmLoading}\n onCancel={() => this.setState({visible: false})}\n onOk={() => this.formRef.current.submit()}\n >\n\n <Form ref={this.formRef}\n onFinish={this.handleSave}\n onValuesChange={(change, values) => {\n this.setState({formValues: values})\n }}\n labelCol={{flex: '100px'}}\n >\n <Form.Item name='id' noStyle></Form.Item>\n <Form.Item label='角色' name='roleIds' rules={[{required: true}]}>\n <FieldRemoteSelectMultiple url='admin/sysRole/options'/>\n </Form.Item>\n <Form.Item label='数据权限' name='dataPermType' rules={[{required: true}]}>\n <FieldDictSelect typeCode='dataPermType'/>\n </Form.Item>\n\n\n {this.state.formValues.dataPermType === 'CUSTOM' && <>\n <Form.Item label='组织机构' name='orgIds'>\n <FieldSysOrgTree/>\n </Form.Item>\n </>}\n\n\n </Form>\n\n\n </Modal>\n }\n\n\n}\n",
2117
+ "__isJSFile": true,
2118
+ "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/system/user/UserPerm.jsx"
2119
+ },
2120
+ "userCenter/message": {
2121
+ "path": "userCenter/message",
2122
+ "id": "userCenter/message",
2123
+ "parentId": "@@/global-layout",
2124
+ "file": "userCenter/message.jsx",
2125
+ "absPath": "/userCenter/message",
2126
+ "__content": "import React from \"react\";\nimport {Button, Card, Tabs, Tag} from \"antd\";\nimport {ProTable} from \"../../framework\";\n\nexport default class extends React.Component {\n\n tableRef = React.createRef()\n\n read = (record) => {\n HttpUtils.post(\"admin/user/msg/read\", record).then(rs => {\n this.tableRef.current.reload()\n })\n }\n\n columns = [\n {\n title: '时间',\n dataIndex: 'createTime',\n width: 150\n },\n {\n title: '标题',\n dataIndex: 'title',\n },\n {\n title: '内容',\n dataIndex: 'content',\n render(content, row) {\n return <div dangerouslySetInnerHTML={{__html: content}}/>\n }\n },\n {\n title: '已读时间',\n dataIndex: 'readTime',\n width: 150\n },\n {\n title: '状态',\n dataIndex: 'isRead',\n render: (v, row) => {\n return v == true ? <Tag color='green'>已读</Tag> : <Tag color='red'>未读</Tag>;\n },\n width: 80\n },\n\n {\n title: '-',\n dataIndex: 'option',\n render: (read, row) => {\n if (!row.isRead)\n return <Button size='small' onClick={() => this.read(row)}> 标记已读 </Button>\n }, width: 80\n }\n ]\n\n render() {\n return <Card variant={\"borderless\"}>\n\n <Tabs defaultActiveKey=\"0\" destroyOnHidden\n >\n <Tabs.TabPane key='0' tab='所有消息'>\n <ProTable\n actionRef={this.tableRef}\n request={(params) => HttpUtils.get(\"admin/user/msg/page\", params)}\n columns={this.columns}\n toolbarOptions={{showSearch: false}}\n size='small'\n />\n </Tabs.TabPane>\n <Tabs.TabPane key='1' tab='未读消息'>\n <ProTable\n actionRef={this.tableRef}\n request={(params) => HttpUtils.get(\"admin/user/msg/page?read=false\", params)}\n columns={this.columns}\n rowSelection={false}\n rowKey='id'\n toolbarOptions={{showSearch: false}}\n size='small'\n />\n\n\n </Tabs.TabPane>\n <Tabs.TabPane key='2' tab='已读消息'>\n\n <ProTable\n actionRef={this.tableRef}\n request={(params) => HttpUtils.get(\"admin/user/msg/page?read=true\", params)}\n rowSelection={false}\n rowKey='id'\n toolbarOptions={{showSearch: false}}\n options={false}\n size='small'\n columns={this.columns}\n />\n\n\n </Tabs.TabPane>\n\n </Tabs>\n\n </Card>\n }\n}\n",
2127
+ "__isJSFile": true,
2128
+ "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/userCenter/message.jsx"
2129
+ },
2130
+ "system/api/ApiDoc": {
2131
+ "path": "system/api/ApiDoc",
2132
+ "id": "system/api/ApiDoc",
2133
+ "parentId": "@@/global-layout",
2134
+ "file": "system/api/ApiDoc.jsx",
2135
+ "absPath": "/system/api/ApiDoc",
2136
+ "__content": "import React from \"react\";\nimport {FieldRemoteSelect, HttpUtils, PageUtils} from \"../../../framework\";\nimport {Button, Descriptions, message, Space, Table, Typography} from \"antd\";\n\nconst {Title, Paragraph, Text, Link} = Typography;\n\nexport class ApiDoc extends React.Component {\n\n state = {\n url: null,\n appId: null,\n apiList: [],\n frameworkVersion: null,\n errorList: []\n }\n\n columns = [\n {dataIndex: 'name', title: '名称', width: 150},\n {dataIndex: 'type', title: '类型', width: 100},\n {\n dataIndex: 'required', title: '必填', width: 100, render: v => {\n if (v == null) {\n return null;\n }\n return v ? '是' : '否';\n }\n },\n {dataIndex: 'desc', title: '描述'},\n ]\n\n componentDidMount() {\n const id = PageUtils.currentParams().id\n this.loadData(id);\n\n let url = window.location.protocol + '//' + window.location.host\n this.setState({url})\n }\n\n async loadData(id) {\n const hide = message.loading('加载中...', 0)\n const rs = await HttpUtils.get('admin/apiAccount/docInfo', {id})\n this.setState(rs)\n hide()\n }\n\n\n render() {\n const {apiList} = this.state\n return <div>\n\n <Space>\n <FieldRemoteSelect url='admin/apiAccount/accountOptions' placeholder='请选择账号'\n onChange={v => this.loadData(v)}/>\n <Button type='primary'>导出PDF</Button>\n </Space>\n <div id='doc-content'>\n <Title level={1}>接口说明文档</Title>\n\n <Title level={2}>一、基本信息</Title>\n <Paragraph>\n <Descriptions column={1} bordered size='small'>\n <Descriptions.Item label='请求地址'>\n {this.state.url}/api/gateway/接口名称\n </Descriptions.Item>\n <Descriptions.Item label='appId'>\n 私发\n </Descriptions.Item>\n <Descriptions.Item label='appSecret'>\n 私发\n </Descriptions.Item>\n </Descriptions>\n\n </Paragraph>\n\n\n <Paragraph>\n <Typography.Text>\n <div>\n 请求使用HTTP POST发送,请求参数也使用json格式\n </div>\n <div> 响应报文以JSON方式返回</div>\n </Typography.Text>\n </Paragraph>\n\n\n <Title level={4}>请求头</Title>\n\n <Table rowKey='name' columns={this.columns} bordered dataSource={[\n {name: 'appId', type: 'String', required: true, desc: '账号标识,appId'},\n {name: 'timestamp', type: 'String', required: true, desc: '时间戳,当前UNIX时间戳,13位,精确到毫秒'},\n {\n name: 'sign',\n type: 'String',\n required: true,\n desc: '数据签名,appId + appSecret + timestamp拼接后,进行md5摘要,值为32位小写'\n },\n ]} size='small' pagination={false}>\n </Table>\n\n\n <Typography.Title level={4}>公共错误码</Typography.Title>\n <Table columns={[\n {dataIndex: 'code', title: '错误码'},\n {dataIndex: 'message', title: '错误描述'}\n ]} rowKey='code' bordered dataSource={this.state.errorList} size='small' pagination={false}>\n </Table>\n\n <Typography.Title level={2}>二、接口列表</Typography.Title>\n {apiList.map((api, index) => {\n return <div key={index}>\n <Typography.Title level={3}>{api.name} </Typography.Title>\n <p>接口名称: {api.action}</p>\n <p>功能描述:{api.desc}</p>\n\n\n <Title level={5}>请求参数</Title>\n <Table rowKey='name' columns={this.columns} bordered dataSource={api.parameterList}\n size='small' pagination={false}>\n </Table>\n\n <Title level={5}>响应数据</Title>\n <Table columns={this.columns} bordered\n rowKey={'name'}\n dataSource={[\n {name: 'code', type: 'int', required: true, desc: '响应码,0表示成功'},\n {name: 'message', type: 'String', required: false, desc: '结果提示信息'},\n {name: 'data', type: api.returnType, required: false, desc: '返回数据'}\n ]} size='small' pagination={false}>\n </Table>\n {api.returnList != null && api.returnList.length > 0 && <>\n <Title level={5}>data 对象 {api.returnType} 说明</Title>\n\n <Table columns={this.columns}\n rowKey={'name'}\n bordered\n dataSource={api.returnList} size='small' pagination={false}>\n </Table>\n </>\n }\n\n </div>\n })}\n\n\n </div>\n </div>\n }\n}\n",
2137
+ "__isJSFile": true,
2138
+ "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/system/api/ApiDoc.jsx"
2139
+ },
2140
+ "system/dict/index": {
2141
+ "path": "system/dict",
2142
+ "id": "system/dict/index",
2143
+ "parentId": "@@/global-layout",
2144
+ "file": "system/dict/index.jsx",
2145
+ "absPath": "/system/dict",
2146
+ "__content": "import React from \"react\";\nimport Dict from \"./Dict\";\nimport DictItem from \"./DictItem\";\nimport {Splitter} from \"antd\";\n\nexport default class extends React.Component {\n\n state = {\n selectedKey: null\n }\n\n\n render() {\n return <Splitter>\n <Splitter.Panel defaultSize={600} style={{paddingRight: 16}}>\n <Dict onChange={selectedKey => this.setState({selectedKey})}/>\n </Splitter.Panel>\n <Splitter.Panel style={{paddingLeft: 16}}>\n <DictItem sysDictId={this.state.selectedKey}/>\n </Splitter.Panel>\n </Splitter>\n\n\n }\n}\n",
2147
+ "__isJSFile": true,
2148
+ "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/system/dict/index.jsx"
2149
+ },
2150
+ "system/file/index": {
2151
+ "path": "system/file",
2152
+ "id": "system/file/index",
2153
+ "parentId": "@@/global-layout",
2154
+ "file": "system/file/index.jsx",
2155
+ "absPath": "/system/file",
2156
+ "__content": "import {Button, Form, Input, Modal, Popconfirm} from 'antd'\nimport React from 'react'\nimport {ButtonList, FieldDateRange, FieldDictSelect, FieldUploadFile, HttpUtils, ProTable} from \"../../../framework\";\nimport {CloudUploadOutlined} from \"@ant-design/icons\";\n\nexport default class extends React.Component {\n\n state = {\n formOpen: false,\n formValues: {}\n }\n\n tableRef = React.createRef()\n formRef = React.createRef()\n\n handleDelete = row => {\n HttpUtils.get('admin/sysFile/delete', row).then(rs => {\n this.tableRef.current.reload()\n })\n }\n\n columns = [\n {\n title: '原始名称',\n tooltip: '上传时候的文件名',\n dataIndex: 'originName',\n width: 200,\n },\n {\n title: '存储名称',\n dataIndex: 'objectName',\n tooltip: '文件唯一标识id'\n },\n\n {\n title: '文件大小',\n dataIndex: 'sizeInfo',\n },\n\n {\n title: 'mime',\n dataIndex: 'mimeType',\n },\n {\n title: '扩展名',\n dataIndex: 'suffix',\n },\n\n {\n title: '上传时间',\n dataIndex: 'createTime',\n },\n {\n title: '上传者',\n dataIndex: 'createUserLabel',\n },\n {\n title: '预览',\n dataIndex: 'id',\n render(id, record) {\n const nodes = [<a href={'/admin/sysFile/preview/' + record.id} target='_blank'>预览</a>]\n\n\n if (record.imageUrls?.length > 0) {\n for (let item of record.imageUrls) {\n let url = item.url;\n let label = item.label;\n nodes.push(<a href={(url)} target='_blank' style={{marginLeft: 8}}>{label}</a>)\n }\n }\n\n return nodes;\n\n }\n },\n {\n title: '操作',\n dataIndex: 'option',\n render: (_, record) => (\n <ButtonList>\n <Popconfirm perm='sysFile:delete' title='是否确定删除文件信息'\n onConfirm={() => this.handleDelete(record)}>\n <a>删除</a>\n </Popconfirm>\n </ButtonList>\n ),\n },\n ]\n\n render() {\n return <>\n <ProTable\n actionRef={this.tableRef}\n toolBarRender={() => {\n return <Button type='primary' icon={<CloudUploadOutlined/>}\n onClick={() => this.setState({formOpen: true})}>\n 上传文件\n </Button>\n }}\n request={(params) => {\n return HttpUtils.get('admin/sysFile/page', params);\n }}\n\n columns={this.columns}\n\n >\n <Form.Item label='文件名' name='originName'>\n <Input/>\n </Form.Item>\n <Form.Item label='对象名称' name='objectName'>\n <Input/>\n </Form.Item>\n <Form.Item label='类型' name='type'>\n <FieldDictSelect typeCode='materialType'/>\n </Form.Item>\n\n <Form.Item label='上传时间' name='dateRange'>\n <FieldDateRange/>\n </Form.Item>\n </ProTable>\n\n <Modal open={this.state.formOpen} title='上传文件'\n width={800}\n onCancel={() => {\n this.setState({formOpen: false})\n this.tableRef.current.reload()\n }}\n footer={null}\n destroyOnHidden\n >\n <Form ref={this.formRef}\n initialValues={this.state.formValues}\n >\n <Form.Item name='文件'>\n <FieldUploadFile accept=\"*/*\"/>\n </Form.Item>\n\n\n </Form>\n </Modal>\n\n </>\n }\n}\n\n\n\n",
2157
+ "__isJSFile": true,
2158
+ "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/system/file/index.jsx"
2159
+ },
2160
+ "system/role/index": {
2161
+ "path": "system/role",
2162
+ "id": "system/role/index",
2163
+ "parentId": "@@/global-layout",
2164
+ "file": "system/role/index.jsx",
2165
+ "absPath": "/system/role",
2166
+ "__content": "import {PlusOutlined} from '@ant-design/icons'\nimport {Button, Form, Input, InputNumber, Modal, Popconfirm, Transfer, Tree} from 'antd'\nimport React from 'react'\nimport {ButtonList, FieldBoolean, HttpUtils, Page, PageUtils, ProTable, ViewText} from \"../../../framework\";\n\n\nexport default class extends React.Component {\n\n state = {\n formValues: {},\n formOpen: false,\n\n usersModalOpen: false,\n\n\n userList: [],\n targetKeys: [],\n selectedKeys: [],\n\n menuOpen: false,\n menuTree: [],\n menuTreeLoading: false,\n menuChecked: [],\n menuHalfChecked: []\n }\n\n formRef = React.createRef()\n tableRef = React.createRef()\n\n handleAdd = () => {\n this.setState({formOpen: true, formValues: {}})\n }\n\n handleEdit = record => {\n this.setState({formOpen: true, formValues: record}, () => {\n\n })\n }\n\n handleEditUser = record => {\n this.setState({usersModalOpen: true, formValues: record})\n HttpUtils.get('admin/sysRole/userList', {id: record.id}).then(rs => {\n this.setState({userList: rs.list, targetKeys: rs.selectedKeys})\n })\n }\n\n onFinish = values => {\n HttpUtils.post('admin/sysRole/save', values).then(rs => {\n this.setState({formOpen: false})\n this.tableRef.current.reload()\n })\n }\n\n handleDelete = record => {\n HttpUtils.get('admin/sysRole/delete', {id: record.id}).then(rs => {\n this.tableRef.current.reload()\n })\n }\n\n columns = [\n\n {\n title: '名称',\n dataIndex: 'name',\n\n\n },\n\n {\n title: '编号',\n dataIndex: 'code',\n\n\n },\n\n {\n title: '排序',\n dataIndex: 'seq',\n\n\n },\n\n {\n title: '备注',\n dataIndex: 'remark',\n\n\n },\n\n {\n title: '启用',\n dataIndex: 'enabled',\n\n\n render(v) {\n return v == null ? null : (v ? '是' : '否')\n },\n\n\n },\n {\n title: '是否内置',\n dataIndex: 'builtin',\n\n\n render(v) {\n return v == null ? null : (v ? '是' : '否')\n },\n\n\n },\n\n {\n title: '权限码',\n dataIndex: 'perms',\n width: 300,\n render(v) {\n if (v) {\n return <ViewText value={v.join(',')} ellipsis={true} />\n }\n }\n\n },\n\n\n {\n title: '操作',\n dataIndex: 'option',\n render: (_, record) => {\n\n return (\n <ButtonList>\n <Button size='small' perm='sysRole:manage'\n onClick={() => this.handleEditUser(record)}>用户设置</Button>\n\n <Button size='small' perm='sysRole:manage' disabled={record.builtin}\n onClick={() => PageUtils.open('/system/role/perm?id=' + record.id, '角色权限设置')}>权限设置</Button>\n\n <Button size='small' perm='sysRole:manage' disabled={record.builtin}\n onClick={() => this.handleEdit(record)}>编辑</Button>\n <Popconfirm perm='sysRole:manage' disabled={record.builtin} title='是否确定删除系统角色'\n onConfirm={() => this.handleDelete(record)}>\n <Button size='small'>删除</Button>\n </Popconfirm>\n </ButtonList>\n );\n },\n },\n ]\n\n handleSaveUsers = () => {\n const params = {\n id: this.state.formValues.id,\n userIdList: this.state.targetKeys\n }\n HttpUtils.post('admin/sysRole/grantUsers', params).then(rs => {\n this.setState({usersModalOpen: false})\n })\n }\n\n handleEditMenu = (record) => {\n this.setState({menuOpen: true, formValues: record, menuTreeLoading: true})\n HttpUtils.get('admin/sysRole/ownMenu', {id: record.id}).then(rs => {\n this.setState({menuChecked: rs.checked, menuHalfChecked: rs.halfChecked})\n })\n HttpUtils.get('admin/sysRole/menuTree').then(rs => {\n this.setState({menuTree: rs, menuTreeLoading: false})\n })\n }\n handleGrantMenu = () => {\n const params = {\n id: this.state.formValues.id,\n menuIds: [...this.state.menuChecked, ...this.state.menuHalfChecked]\n }\n HttpUtils.post('admin/sysRole/grantMenu', params).then(rs => {\n debugger\n this.setState({menuOpen: false})\n })\n }\n\n render() {\n return <Page padding>\n <ProTable\n actionRef={this.tableRef}\n toolBarRender={() => {\n return <ButtonList>\n <Button perm='sysRole:manage' type='primary' onClick={this.handleAdd}>\n <PlusOutlined/> 新增\n </Button>\n </ButtonList>\n }}\n request={(params) => HttpUtils.get('admin/sysRole/page', params)}\n columns={this.columns}\n\n />\n\n <Modal title='系统角色'\n open={this.state.formOpen}\n onOk={() => this.formRef.current.submit()}\n onCancel={() => this.setState({formOpen: false})}\n destroyOnHidden\n maskClosable={false}\n width={600}\n >\n\n <Form ref={this.formRef} labelCol={{flex: '100px'}}\n initialValues={this.state.formValues}\n onFinish={this.onFinish}\n >\n <Form.Item name='id' noStyle></Form.Item>\n\n\n <Form.Item label='名称' name='name' rules={[{required: true}]}>\n <Input/>\n </Form.Item>\n\n <Form.Item label='编码' name='code' rules={[{required: true}]}>\n <Input/>\n </Form.Item>\n\n\n <Form.Item label='排序' name='seq'>\n <InputNumber/>\n </Form.Item>\n\n\n <Form.Item label='备注' name='remark'>\n <Input/>\n </Form.Item>\n\n <Form.Item label='启用' name='enabled' rules={[{required: true}]}>\n <FieldBoolean/>\n </Form.Item>\n\n\n </Form>\n </Modal>\n\n\n <Modal title={'角色用户' + \"【\" + this.state.formValues?.name + '】'}\n open={this.state.usersModalOpen}\n destroyOnHidden\n maskClosable={false}\n width={800}\n onCancel={() => this.setState({usersModalOpen: false})}\n onOk={this.handleSaveUsers}\n >\n\n\n <Transfer\n listStyle={{height: '60vh', width: 300}}\n\n dataSource={this.state.userList} titles={[\"未选择\", \"已选择\"]}\n targetKeys={this.state.targetKeys}\n selectedKeys={this.state.selectedKeys}\n render={item => item.title}\n onChange={(nextTargetKeys, direction, moveKeys) => {\n this.setState({\n targetKeys: nextTargetKeys\n })\n }}\n onSelectChange={(sourceSelectedKeys, targetSelectedKeys) => {\n this.setState({\n selectedKeys: [...sourceSelectedKeys, ...targetSelectedKeys]\n })\n }}\n showSearch\n />\n\n\n </Modal>\n\n <Modal title={'角色授权菜单权限' + \"【\" + this.state.formValues?.name + '】'}\n open={this.state.menuOpen}\n destroyOnHidden\n maskClosable={false}\n width={800}\n onCancel={() => this.setState({menuOpen: false})}\n onOk={this.handleGrantMenu}\n loading={this.state.menuTreeLoading}\n >\n <Tree\n height={600}\n treeData={this.state.menuTree}\n multiple\n checkable\n checkedKeys={{checked: this.state.menuChecked}}\n onCheck={(keys, e) => {\n this.setState({menuChecked: keys, menuHalfChecked: e.halfCheckedKeys})\n }}\n defaultExpandAll\n titleRender={node => {\n return <span title={node.perm}>{node.title}</span>\n }}\n />\n </Modal>\n </Page>\n\n\n }\n}\n\n",
2167
+ "__isJSFile": true,
2168
+ "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/system/role/index.jsx"
2169
+ },
2170
+ "system/user/index": {
2171
+ "path": "system/user",
2172
+ "id": "system/user/index",
2173
+ "parentId": "@@/global-layout",
2174
+ "file": "system/user/index.jsx",
2175
+ "absPath": "/system/user",
2176
+ "__content": "import {PlusOutlined} from '@ant-design/icons';\nimport {Button, Form, Input, Modal, Popconfirm, Splitter, Tabs} from 'antd';\nimport React from 'react';\nimport {\n ButtonList,\n DictUtils,\n FieldBoolean,\n FieldSysOrgTreeSelect,\n HttpUtils,\n OrgTree,\n Page,\n ProTable,\n RoleTree\n} from \"../../../framework\";\nimport UserPerm from \"./UserPerm\";\n\nexport default class extends React.Component {\n\n state = {\n showAddForm: false,\n showEditForm: false,\n formValues: {},\n\n currentOrgId: null,\n currentRoleId: null,\n }\n permRef = React.createRef();\n\n formRef = React.createRef()\n tableRef = React.createRef()\n\n resetPwd(row) {\n HttpUtils.post('admin/sysUser/resetPwd', {id: row.id}).then(rs => {\n Modal.success({\n title: '重置密码成功',\n content: rs\n })\n })\n }\n\n handleDelete = r => {\n HttpUtils.get('admin/sysUser/delete', {id: r.id}).then(rs => {\n this.tableRef.current.reload();\n })\n }\n\n onSelectOrg = (key) => {\n this.setState({currentOrgId: key}, () => this.tableRef.current.reload())\n }\n\n onSelectRole = (key) => {\n this.setState({currentRoleId: key}, () => this.tableRef.current.reload())\n }\n\n handleAdd = () => {\n this.setState({formOpen: true, formValues: {}})\n }\n\n handleEdit = record => {\n record.deptId = record.deptId || record.unitId\n this.setState({formOpen: true, formValues: record})\n }\n\n columns = [\n {\n title: '单位',\n dataIndex: 'unitLabel',\n },\n {\n title: '部门',\n dataIndex: 'deptLabel',\n },\n {\n title: '姓名',\n dataIndex: 'name',\n sorter: true\n },\n {\n title: '登录账号',\n dataIndex: 'account',\n sorter: true\n },\n\n\n {\n title: '手机',\n dataIndex: 'phone'\n },\n {\n title: '邮箱',\n dataIndex: 'email'\n },\n\n {\n title: '角色',\n dataIndex: 'roleIds',\n render: (_, row) => {\n if (row.roleNames) {\n return row.roleNames.join(',')\n }\n },\n },\n {\n title: '状态',\n dataIndex: 'enabled',\n render(v) {\n return v == null ? null : (v ? '是' : '否')\n },\n },\n {\n title: '数据权限',\n dataIndex: 'dataPermType',\n render(v) {\n return DictUtils.dictTag('dataPermType', v)\n }\n },\n\n {\n title: '创建时间',\n dataIndex: 'createTime',\n },\n {\n title: '操作',\n dataIndex: 'option',\n fixed: 'right',\n render: (_, record) => {\n return <ButtonList>\n <Button size='small' perm='sysUser:save' onClick={() => this.handleEdit(record)}> 编辑 </Button>\n\n <Button size='small' perm='sysUser:grantPerm'\n onClick={() => this.permRef.current.show(record)}> 授权 </Button>\n\n <Popconfirm perm='sysUser:resetPwd' title='确认重置密码?' onConfirm={() => this.resetPwd(record)}>\n <Button size='small'>重置密码</Button>\n </Popconfirm>\n\n <Popconfirm perm='sysUser:delete' title={'是否确定删除用户'}\n onConfirm={() => this.handleDelete(record)}>\n <Button size='small'>删除</Button>\n </Popconfirm>\n </ButtonList>;\n },\n },\n ];\n\n onFinish = values => {\n HttpUtils.post('admin/sysUser/save', values).then(rs => {\n this.setState({formOpen: false})\n this.tableRef.current.reload()\n })\n }\n\n render() {\n\n return <Page>\n <Splitter>\n <Splitter.Panel defaultSize={400}>\n <Tabs\n type='card'\n size='small'\n items={[\n {\n key: 'org',\n label: '按组织机构',\n children: <OrgTree onChange={this.onSelectOrg}/>\n },\n {\n key: 'role',\n label: '按角色',\n children: <RoleTree onSelect={this.onSelectRole}/>\n }\n ]}/>\n\n </Splitter.Panel>\n <Splitter.Panel style={{paddingLeft: 16}}>\n <ProTable\n actionRef={this.tableRef}\n toolBarRender={() => {\n return <ButtonList>\n <Button\n perm='sysUser:save'\n type=\"primary\"\n onClick={this.handleAdd}>\n <PlusOutlined/> 新增\n </Button>\n\n\n </ButtonList>\n }}\n showToolbarSearch\n request={(params) => {\n params.orgId = this.state.currentOrgId\n params.roleId = this.state.currentRoleId\n return HttpUtils.get('admin/sysUser/page', params)\n }\n }\n columns={this.columns}\n >\n\n </ProTable>\n </Splitter.Panel>\n </Splitter>\n\n\n <Modal title='系统用户'\n open={this.state.formOpen}\n onOk={() => this.formRef.current.submit()}\n onCancel={() => this.setState({formOpen: false})}\n destroyOnHidden\n >\n\n <Form ref={this.formRef} labelCol={{flex: '100px'}}\n initialValues={this.state.formValues}\n onFinish={this.onFinish}>\n <Form.Item name='id' noStyle></Form.Item>\n\n <Form.Item label='所属机构' name='deptId' rules={[{required: true}]}>\n <FieldSysOrgTreeSelect/>\n </Form.Item>\n\n <Form.Item label='姓名' name='name' rules={[{required: true}]}>\n <Input/>\n </Form.Item>\n <Form.Item label='账号' name='account' rules={[{required: true}]}>\n <Input/>\n </Form.Item>\n\n\n <Form.Item label='电话' name='phone'>\n <Input/>\n </Form.Item>\n <Form.Item label='邮箱' name='email'>\n <Input/>\n </Form.Item>\n\n <Form.Item label='启用状态' name='enabled' rules={[{required: true}]}>\n <FieldBoolean/>\n </Form.Item>\n\n </Form>\n </Modal>\n\n\n <UserPerm ref={this.permRef} onOk={() => this.tableRef.current.reload()}/>\n\n </Page>\n }\n\n\n}\n\n\n\n",
2177
+ "__isJSFile": true,
2178
+ "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/system/user/index.jsx"
2179
+ },
2180
+ "userCenter/manual": {
2181
+ "path": "userCenter/manual",
2182
+ "id": "userCenter/manual",
2183
+ "parentId": "@@/global-layout",
2184
+ "file": "userCenter/manual.jsx",
2185
+ "absPath": "/userCenter/manual",
2186
+ "__content": "import React from 'react'\nimport {HttpUtils, Page, ProTable} from \"../../framework\";\n\n\nexport default class extends React.Component {\n\n\n tableRef = React.createRef()\n\n columns = [\n\n {\n title: '名称',\n dataIndex: 'name',\n\n\n },\n\n {\n title: '版本',\n dataIndex: 'version',\n render(version) {\n return 'v' + version;\n }\n },\n\n {\n title: '文件',\n dataIndex: 'fileId',\n render(id) {\n const url = ('admin/sysFile/preview/' + id);\n return <a href={url} target='_blank'>查看文件</a>\n }\n\n },\n\n {\n title: '更新时间',\n dataIndex: 'updateTime',\n },\n ]\n\n\n render() {\n return <Page>\n <ProTable\n actionRef={this.tableRef}\n request={(params) => HttpUtils.get('admin/sysManual/pageForUser', params)}\n columns={this.columns}\n />\n </Page>\n\n\n }\n}\n\n\n",
2187
+ "__isJSFile": true,
2188
+ "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/userCenter/manual.jsx"
2189
+ },
2190
+ "system/api/index": {
2191
+ "path": "system/api",
2192
+ "id": "system/api/index",
2193
+ "parentId": "@@/global-layout",
2194
+ "file": "system/api/index.jsx",
2195
+ "absPath": "/system/api",
2196
+ "__content": "import {PlusOutlined} from '@ant-design/icons'\nimport {Button, Form, Input, Modal, Popconfirm, Tabs} from 'antd'\nimport React from 'react'\nimport {\n ButtonList,\n FieldBoolean,\n FieldDate,\n HttpUtils,\n Page,\n PageUtils,\n ProTable,\n StringUtils,\n ViewPassword\n} from \"../../../framework\";\nimport {ApiDoc} from \"./ApiDoc\";\n\n\nexport default class extends React.Component {\n\n state = {\n formValues: {},\n formOpen: false\n }\n\n formRef = React.createRef()\n tableRef = React.createRef()\n\n handleAdd = () => {\n this.setState({formOpen: true, formValues: {}})\n }\n\n handleEdit = record => {\n this.setState({formOpen: true, formValues: record})\n }\n\n onFinish = values => {\n HttpUtils.post('admin/apiAccount/save', values).then(rs => {\n this.setState({formOpen: false})\n this.tableRef.current.reload()\n })\n }\n\n handleDelete = record => {\n HttpUtils.get('admin/apiAccount/delete', {id: record.id}).then(rs => {\n this.tableRef.current.reload()\n })\n }\n\n columns = [\n {\n title: '名称',\n dataIndex: 'name',\n },\n {\n title: 'appId',\n dataIndex: 'appId',\n },\n\n {\n title: 'appSecret',\n dataIndex: 'appSecret',\n render(v) {\n return <ViewPassword value={v}></ViewPassword>;\n }\n },\n {\n title: '准入IP',\n dataIndex: 'accessIp',\n },\n {\n title: '有效期',\n dataIndex: 'endTime',\n },\n {\n title: '启用',\n dataIndex: 'enable',\n render(v) {\n return v == null ? null : (v ? '是' : '否')\n },\n },\n {\n title: '操作',\n dataIndex: 'option',\n render: (_, record) => (\n <ButtonList>\n <Button size='small' perm='api'\n onClick={() => PageUtils.open('/system/api/perm?accountId=' + record.id, '账户权限')}\n type='primary'>权限</Button>\n <Button size='small' perm='api' onClick={() => this.handleEdit(record)}>编辑</Button>\n <Popconfirm perm='api' title='是否确定删除接口访客' onConfirm={() => this.handleDelete(record)}>\n <Button size='small'>删除</Button>\n </Popconfirm>\n </ButtonList>\n ),\n },\n ]\n\n randomAppSecret = () => {\n const appSecret = StringUtils.random(32)\n this.formRef.current.setFieldsValue({appSecret})\n }\n\n render() {\n return <Page padding>\n <Tabs items={[\n\n {\n label: '接口列表',\n key: '2',\n children: <ProTable\n rowKey='action'\n columns={[\n {dataIndex: 'name', title: '名称'},\n {dataIndex: 'action', title: '动作'},\n {dataIndex: 'desc', title: '描述'},\n\n ]}\n request={(params,) => HttpUtils.get('admin/api/resource/page', params)}\n />\n },\n\n {\n label: '账号列表',\n key: '1',\n children: <ProTable\n actionRef={this.tableRef}\n toolBarRender={() => {\n return <ButtonList>\n <Button perm='api' type='primary' onClick={this.handleAdd}>\n <PlusOutlined/> 新增\n </Button>\n </ButtonList>\n }}\n request={(params) => HttpUtils.get('admin/apiAccount/page', params)}\n columns={this.columns}\n />\n }, {\n label: '接口文档',\n key: '3',\n children: <ApiDoc/>\n },\n {\n label: '访问记录',\n key: '4',\n children: <ProTable\n request={(params) => HttpUtils.get('admin/apiAccessLog/page', params)}\n columns={[\n\n {\n title: '接口名称',\n dataIndex: 'name',\n\n\n },\n\n {\n title: '接口',\n dataIndex: 'action',\n\n\n },\n\n {\n title: 'requestId',\n dataIndex: 'requestId',\n\n },\n\n {\n title: '请求数据',\n dataIndex: 'requestData',\n\n\n },\n\n {\n title: '响应数据',\n dataIndex: 'responseData',\n\n\n },\n\n {\n title: 'ip',\n dataIndex: 'ip',\n\n\n },\n\n {\n title: 'ipLocation',\n dataIndex: 'ipLocation',\n\n\n },\n\n {\n title: '执行时间',\n dataIndex: 'executionTime',\n\n\n },\n\n {\n title: '接口账户',\n dataIndex: 'accountName',\n\n\n },\n\n\n ]}\n />\n },\n\n ]}>\n\n </Tabs>\n\n\n <Modal title='接口访客'\n open={this.state.formOpen}\n onOk={() => this.formRef.current.submit()}\n onCancel={() => this.setState({formOpen: false})}\n destroyOnHidden\n maskClosable={false}\n >\n\n <Form ref={this.formRef} labelCol={{flex: '100px'}}\n initialValues={this.state.formValues}\n onFinish={this.onFinish}\n\n >\n <Form.Item name='id' noStyle></Form.Item>\n\n <Form.Item label='名称' name='name' rules={[{required: true}]}>\n <Input/>\n </Form.Item>\n\n\n <Form.Item label='appId' name='appId'>\n <Input placeholder='多个用逗号分隔'/>\n </Form.Item>\n <Form.Item label='appSecret' name='appSecret' rules={[{required: true}, {len: 32}]}\n help={<Button size='small' type='link' onClick={this.randomAppSecret}>随机生成</Button>}\n >\n <Input/>\n </Form.Item>\n\n <Form.Item label='准入IP' name='accessIp'>\n <Input placeholder='多个用逗号分隔'/>\n </Form.Item>\n <Form.Item label='有效期' name='endTime' style={{marginTop: 32}}>\n <FieldDate type='YYYY-MM-DD'/>\n </Form.Item>\n <Form.Item label='启用' name='enable' rules={[{required: true}]}>\n <FieldBoolean/>\n </Form.Item>\n\n </Form>\n </Modal>\n </Page>\n\n\n }\n}\n\n",
2197
+ "__isJSFile": true,
2198
+ "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/system/api/index.jsx"
2199
+ },
2200
+ "system/dict/Dict": {
2201
+ "path": "system/dict/Dict",
2202
+ "id": "system/dict/Dict",
2203
+ "parentId": "@@/global-layout",
2204
+ "file": "system/dict/Dict.jsx",
2205
+ "absPath": "/system/dict/Dict",
2206
+ "__content": "import React from 'react'\nimport {HttpUtils, ProTable} from \"../../../framework\";\n\n\nexport default class extends React.Component {\n\n state = {\n formValues: {},\n formOpen: false,\n selectedRowKeys: []\n }\n\n formRef = React.createRef()\n tableRef = React.createRef()\n\n columns = [\n\n\n {\n title: '编码',\n dataIndex: 'code',\n\n\n },\n {\n title: '文本',\n dataIndex: 'text',\n },\n\n\n ]\n\n\n render() {\n return <>\n <ProTable\n actionRef={this.tableRef}\n\n request={(params) => HttpUtils.get('admin/sysDict/page', params)}\n columns={this.columns}\n rowKey='id'\n\n rowSelection={{\n type: 'radio',\n selectedRowKeys: this.state.selectedRowKeys,\n onChange: (selectedRowKeys, selectedRows) => {\n this.setState({selectedRowKeys: selectedRowKeys})\n this.props.onChange(selectedRowKeys[0])\n }\n }}\n onRow={(record) => ({\n onClick: () => {\n this.setState({selectedRowKeys: [record.id]})\n this.props.onChange(record.id)\n }\n })}\n />\n\n\n </>\n\n\n }\n}\n\n\n\n",
2207
+ "__isJSFile": true,
2208
+ "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/system/dict/Dict.jsx"
2209
+ },
2210
+ "system/job/index": {
2211
+ "path": "system/job",
2212
+ "id": "system/job/index",
2213
+ "parentId": "@@/global-layout",
2214
+ "file": "system/job/index.jsx",
2215
+ "absPath": "/system/job",
2216
+ "__content": "import {\n Alert,\n AutoComplete,\n Button,\n Divider,\n Form,\n Input,\n message,\n Modal,\n Popconfirm,\n Select,\n Space,\n Switch,\n Tag\n} from 'antd'\nimport React from 'react'\nimport {PlusOutlined} from \"@ant-design/icons\";\nimport {ButtonList, HttpUtils, Page, ProTable, StringUtils, ValueType} from \"../../../framework\";\n\n\nconst cronOptions = [\n {\n label: '*/5 * * * * ? 每隔5秒',\n value: '*/5 * * * * ?'\n },\n {\n label: '0 */5 * * * ? 每隔5分钟',\n value: '0 */5 * * * ?'\n },\n {\n label: '0 0 22 * * ? 每天22点',\n value: '0 0 22 * * ?'\n },\n {\n label: '0 0 1 * * ? 每天1点',\n value: '0 0 1 * * ?'\n },\n {\n label: '0 0 1 1 * ? 每月1号凌晨1点',\n value: '0 0 1 1 * ?'\n }\n]\n\n\nexport default class extends React.Component {\n\n state = {\n formValues: {},\n formOpen: false,\n\n selectedRowKeys: [],\n\n jobClassOptions: [],\n\n paramList: [],\n\n statusOpen: false,\n status: null,\n\n executeRecordOpen: false,\n }\n tableRef = React.createRef()\n formRef = React.createRef()\n\n componentDidMount() {\n HttpUtils.get('admin/job/jobClassOptions').then(rs => {\n this.setState({jobClassOptions: rs})\n })\n }\n\n handleAdd = () => {\n this.setState({formOpen: true, formValues: {}, paramList: []})\n }\n\n handleEdit = (record) => {\n this.loadJobParamFields(record.jobClass, record.jobData)\n this.setState({formOpen: true, formValues: record,})\n }\n\n loadJobParamFields(className, jobData) {\n HttpUtils.post(\"admin/job/getJobParamFields\", jobData || {}, {className}).then(rs => {\n this.setState({paramList: rs})\n })\n }\n\n onFinish = (values) => {\n HttpUtils.post('admin/job/save', values).then(rs => {\n this.setState({formOpen: false})\n this.tableRef.current.reload();\n })\n }\n\n handleDelete = row => {\n const hide = message.loading(\"删除作业中...\")\n HttpUtils.get('admin/job/delete', {id: row.id}).then(rs => {\n this.tableRef.current.reload();\n }).catch(hide)\n }\n\n handleTriggerJob = row => {\n HttpUtils.get('admin/job/triggerJob', {id: row.id}).then(rs => {\n this.tableRef.current.reload();\n })\n }\n\n columns = [\n {\n title: '名称',\n dataIndex: 'name',\n\n },\n {\n title: '执行类',\n dataIndex: 'jobClass',\n\n },\n\n {\n title: 'cron',\n dataIndex: 'cron',\n },\n\n\n {\n title: '参数',\n dataIndex: 'jobData',\n render(list) {\n if (list)\n return JSON.stringify(list)\n }\n },\n\n\n {\n title: '启用状态',\n dataIndex: 'enabled',\n render: (v, record) => {\n return record.enabled ? <Tag color='green'>启用</Tag> : <Tag color='red'>停用</Tag>\n },\n },\n\n {\n title: '操作',\n dataIndex: 'option',\n fixed: 'right',\n render: (_, record) => {\n\n return (\n <Space>\n <Button size='small' onClick={() => this.showExecuteRecord(record)}>执行记录</Button>\n <Button size='small' onClick={() => this.handleTriggerJob(record)}>执行一次</Button>\n <Button size='small' onClick={() => this.handleEdit(record)}> 编辑 </Button>\n <Popconfirm title='是否确定删除?' onConfirm={() => this.handleDelete(record)}>\n <Button size='small'>删除</Button>\n </Popconfirm>\n </Space>\n );\n },\n },\n\n ]\n\n showStatus = () => {\n this.setState({statusOpen: true})\n HttpUtils.get('admin/job/status').then(rs => {\n this.setState({status: rs})\n })\n };\n\n showExecuteRecord(record) {\n this.setState({executeRecordOpen: true, formValues: record})\n }\n\n\n render() {\n return <Page padding>\n <ProTable\n actionRef={this.tableRef}\n toolBarRender={() => {\n return <ButtonList>\n <Button type='primary' onClick={() => this.handleAdd()} icon={<PlusOutlined/>}>\n 新增\n </Button>\n <Button onClick={this.showStatus}>\n 查看状态\n </Button>\n </ButtonList>\n }}\n request={(params) => HttpUtils.get('admin/job/page', params)}\n columns={this.columns}\n showToolbarSearch\n />\n\n\n <Modal title='作业调度'\n open={this.state.formOpen}\n destroyOnHidden\n width={800}\n onOk={() => this.formRef.current.submit()}\n onCancel={() => this.setState({formOpen: false})}\n >\n\n <Form ref={this.formRef} labelCol={{flex: '100px'}}\n initialValues={this.state.formValues}\n onValuesChange={this.onValuesChange}\n onFinish={this.onFinish}>\n <Form.Item name='id' noStyle>\n </Form.Item>\n <Form.Item label='执行类' name='jobClass' rules={[{required: true}]}\n tooltip='org.quartz.Job接口,参考io.tmgg.job.builtin.DemoJob'>\n <Select options={this.state.jobClassOptions}/>\n </Form.Item>\n <Form.Item label='名称' name='name' rules={[{required: true}]}>\n <Input/>\n </Form.Item>\n\n <Form.Item label='cron表达式' name='cron' help='格式:秒分时日月周,留空表示手动执行'\n rules={[{required: true}]}>\n <AutoComplete placeholder='如 0 */5 * * * ?' options={cronOptions}/>\n </Form.Item>\n\n <Form.Item label='启用' name='enabled' valuePropName='checked' rules={[{required: true}]}>\n <Switch/>\n </Form.Item>\n\n\n {this.state.paramList?.map(p => (\n <div key={p.name}>\n <Divider>作业参数</Divider>\n <Form.Item label={p.label}\n name={['jobData', p.name]}\n key={p.name}\n rules={[{required: p.required}]}>\n {ValueType.renderField(p.componentType, p.componentProps)}\n </Form.Item>\n </div>\n ))}\n </Form>\n </Modal>\n\n <Modal title='作业调度状态'\n open={this.state.statusOpen}\n onCancel={() => this.setState({statusOpen: false})}\n footer={null}\n width={1024}\n >\n <Alert message={<pre>{this.state.status}</pre>}></Alert>\n\n </Modal>\n\n <Modal title='作业调度记录'\n open={this.state.executeRecordOpen}\n onCancel={() => this.setState({executeRecordOpen: false})}\n footer={null}\n width={1024}\n destroyOnHidden\n >\n <ProTable columns={[{\n title: '开始时间',\n dataIndex: 'beginTime',\n },\n {\n title: '结束时间',\n dataIndex: 'endTime',\n },\n {\n title: '耗时',\n dataIndex: 'jobRunTimeLabel',\n\n },\n {\n title: '是否成功',\n dataIndex: 'success',\n width: 200,\n render: v => {\n if (v != null) {\n return v ? '成功' : '异常'\n }\n }\n },\n {\n title: '返回结果',\n dataIndex: 'result',\n width: 300\n },\n\n {\n title: '操作',\n dataIndex: 'option',\n render: (_, record) => {\n let url = '/admin/sys/log/' + record.id;\n return <a href={url} target='_blank'>日志</a>;\n },\n }\n ]} request={params => {\n params.jobId = this.state.formValues.id\n return HttpUtils.get('admin/job/executeRecord', params);\n }}></ProTable>\n\n </Modal>\n </Page>\n }\n\n onValuesChange = (changed, values) => {\n if (changed.jobClass) {\n this.loadJobParamFields(values.jobClass)\n const option = this.state.jobClassOptions.find(o => o.value === changed.jobClass)\n if (option) {\n let {label} = option;\n if (StringUtils.contains(label, \" \")) { // 取中文名部门设置为name\n this.formRef.current.setFieldValue(\"name\", label.split(\" \")[1])\n }\n }\n }\n\n if (changed.jobData) {\n this.loadJobParamFields(values.jobClass, values.jobData)\n }\n\n };\n}\n\n\n\n",
2217
+ "__isJSFile": true,
2218
+ "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/system/job/index.jsx"
2219
+ },
2220
+ "system/log/index": {
2221
+ "path": "system/log",
2222
+ "id": "system/log/index",
2223
+ "parentId": "@@/global-layout",
2224
+ "file": "system/log/index.jsx",
2225
+ "absPath": "/system/log",
2226
+ "__content": "import React, {Fragment} from 'react';\nimport {Form, Input, Tag} from \"antd\";\nimport {ViewText, FieldDateRange, HttpUtils, ProTable} from \"../../../framework\";\n\nexport default class extends React.Component {\n\n\n columns = [\n {\n title: '操作',\n dataIndex: 'operation',\n },\n {\n title: '操作者',\n dataIndex: 'username'\n },\n\n {\n title: 'ip',\n dataIndex: 'ip',\n },\n\n\n {\n title: '时间',\n dataIndex: 'operationTime',\n sorter: true,\n },\n {\n title: '参数',\n dataIndex: 'params',\n render(v) {\n return <ViewText value={v} ellipsis={true} />\n }\n\n },\n {\n title: '结果',\n dataIndex: 'success',\n render(v) {\n return <>\n <Tag color={v ? 'green' : 'red'}>{v ? '成功' : '失败'}</Tag>\n </>\n }\n },\n {\n title: '错误消息',\n dataIndex: 'error',\n render(v) {\n return <ViewText value={v} ellipsis={true} />\n }\n },\n ];\n\n\n render() {\n return <>\n <ProTable\n request={(params) => HttpUtils.get('admin/sysLog/page', params)}\n columns={this.columns}\n >\n <Form.Item label='操作' name='operation'>\n <Input/>\n </Form.Item>\n <Form.Item label='时间' name='dateRange'>\n <FieldDateRange/>\n </Form.Item>\n </ProTable>\n\n </>\n }\n\n\n}\n\n\n\n",
2227
+ "__isJSFile": true,
2228
+ "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/system/log/index.jsx"
2229
+ },
2230
+ "system/org/index": {
2231
+ "path": "system/org",
2232
+ "id": "system/org/index",
2233
+ "parentId": "@@/global-layout",
2234
+ "file": "system/org/index.jsx",
2235
+ "absPath": "/system/org",
2236
+ "__content": "import {DeleteOutlined, EditOutlined, PlusOutlined, SyncOutlined} from '@ant-design/icons';\nimport {Button, Card, Checkbox, Empty, Form, Input, Popconfirm, Space, Splitter, Switch, Tree} from 'antd';\nimport React from 'react';\nimport {\n FieldBoolean,\n FieldDictSelect,\n FieldRemoteTreeSelect,\n FieldUserSelect,\n Gap,\n HttpUtils,\n NamedIcon,\n Page\n} from \"../../../framework\";\n\n\nexport default class extends React.Component {\n\n state = {\n formLoading: false,\n formValues: undefined,\n submitLoading: false,\n formEditing: false,\n\n\n params: {\n onlyShowEnabled: true,\n onlyShowUnit: false,\n searchText: null\n },\n\n treeData: [],\n treeLoading: false,\n draggable: false,\n }\n actionRef = React.createRef();\n treeRef = React.createRef();\n\n componentDidMount() {\n this.loadTree()\n }\n\n loadTree = () => {\n this.setState({treeLoading: true})\n\n const {params} = this.state\n HttpUtils.get('admin/sysOrg/tree', params).then(rs => {\n let treeData = rs;\n this.setState({treeData})\n }).finally(() => {\n this.setState({treeLoading: false});\n })\n }\n\n handleDelete = record => {\n HttpUtils.get('admin/sysOrg/delete', {id: record.id})\n .then(rs => {\n this.setState({formValues: null})\n this.loadTree()\n })\n }\n\n\n onSelect = (selectedKeys) => {\n if (selectedKeys.length === 0) {\n this.setState({formValues: null})\n return\n }\n\n const key = selectedKeys[0]\n this.setState({formLoading: true, formEditing: false})\n HttpUtils.get(\"admin/sysOrg/detail\", {id: key}).then(rs => {\n this.setState({formValues: rs})\n }).finally(() => {\n this.setState({formLoading: false})\n })\n }\n\n onFinish = (values) => {\n this.setState({submitLoading: true, formEditing: false})\n HttpUtils.post('admin/sysOrg/save', values).then(rs => {\n this.loadTree()\n }).finally(() => {\n this.setState({submitLoading: false})\n })\n }\n\n\n onDraggableChange = e => {\n this.setState({draggable: e})\n };\n\n\n render() {\n let {formValues} = this.state;\n let disabled = formValues == null;\n let params = this.state.params;\n return <Page padding>\n <Card>\n <Space>\n\n <Input.Search placeholder='搜索' value={params.searchText} onChange={e => {\n params.searchText = e.target.value\n this.setState({params}, this.loadTree)\n }}/>\n <Checkbox checked={params.onlyShowEnabled}\n onChange={e => {\n params.onlyShowEnabled = e.target.checked;\n this.setState({params}, this.loadTree);\n }}>仅显示启用</Checkbox>\n\n <Checkbox checked={params.onlyShowUnit}\n onChange={e => {\n params.onlyShowUnit = e.target.checked;\n this.setState({params}, this.loadTree);\n }}>仅显示单位</Checkbox>\n\n\n </Space>\n </Card>\n <Gap/>\n <Splitter>\n <Splitter.Panel defaultSize={500}>\n <Card loading={this.state.treeLoading}\n title='组织机构'\n extra={<Space>\n\n <div>\n 拖拽排序&nbsp;<Switch\n value={this.state.draggable}\n onChange={this.onDraggableChange}/>\n </div>\n <Button size='small' shape={\"round\"} icon={<SyncOutlined/>}\n onClick={this.loadTree}></Button>\n </Space>}>\n\n\n <Tree ref={this.treeRef}\n treeData={this.state.treeData}\n onSelect={this.onSelect}\n showIcon\n blockNode\n icon={item => {\n return <NamedIcon name={item.data.iconName}/>;\n }}\n draggable={this.state.draggable}\n onDrop={this.onDrop}\n showLine\n defaultExpandAll\n >\n </Tree>\n {this.state.treeData.length === 0 && <Empty/>}\n </Card>\n </Splitter.Panel>\n\n <Splitter>\n <Card\n loading={this.state.formLoading}\n extra={<Space>\n <Button type='primary' onClick={() => {\n this.setState({\n formLoading: true,\n formEditing: true,\n formValues: {\n pid: formValues?.id,\n }\n }, () => {\n this.setState({formLoading: false})\n })\n }}>\n <PlusOutlined/> 新增\n </Button>\n <Button disabled={disabled} onClick={() => {\n this.setState({\n formEditing: true\n })\n }}>\n <EditOutlined/> 编辑\n </Button>\n\n <Popconfirm title={'是否确定删除组织机构'} disabled={disabled}\n onConfirm={() => this.handleDelete(formValues)}>\n <Button icon={<DeleteOutlined/>} disabled={disabled}>删除</Button>\n </Popconfirm>\n\n\n </Space>}\n >\n\n {formValues == null ? <Empty description='未选择机构'/> : <Form\n disabled={!this.state.formEditing}\n labelCol={{flex: '150px'}}\n wrapperCol={{flex: '400px'}}\n initialValues={formValues}\n onFinish={this.onFinish}\n >\n <Form.Item noStyle name='id'>\n </Form.Item>\n <Form.Item label='父节点' name='pid'>\n <FieldRemoteTreeSelect url='admin/sysOrg/tree'/>\n </Form.Item>\n <Form.Item label='名称' name='name' rules={[{required: true}]}>\n <Input/>\n </Form.Item>\n\n\n <Form.Item label='类型' name='type' rules={[{required: true}]}>\n <FieldDictSelect typeCode='orgType'/>\n </Form.Item>\n\n <Form.Item label='部门领导' name={['leader', 'id']}>\n <FieldUserSelect/>\n </Form.Item>\n <Form.Item label='启用' name='enabled' rules={[{required: true}]}>\n <FieldBoolean/>\n </Form.Item>\n <Form.Item label='扩展字段1' name='extra1'>\n <Input/>\n </Form.Item>\n <Form.Item label='扩展字段2' name='extra2'>\n <Input/>\n </Form.Item>\n <Form.Item label='扩展字段3' name='extra3'>\n <Input/>\n </Form.Item>\n\n\n <Form.Item label=' ' colon={false}>\n <Button type=\"primary\" htmlType='submit'\n loading={this.state.submitLoading}>保存</Button>\n </Form.Item>\n\n </Form>\n }\n\n\n </Card>\n </Splitter>\n\n </Splitter>\n\n\n </Page>\n }\n\n onDrop = (e) => {\n const {dragNode, dropToGap, node} = e;\n const dropKey = node.key;\n const dragKey = dragNode.key;\n\n const dropPos = e.node.pos.split('-');\n const dropPosition = e.dropPosition - Number(dropPos[dropPos.length - 1]); // the drop position relative to the drop node, inside 0, top -1, bottom 1\n\n\n console.log(dragNode.title, '->', node.title, 'dropToGap:', dropToGap, \"dropPosition:\", dropPosition)\n HttpUtils.post('admin/sysOrg/sort', {dropPosition, dropToGap, dropKey, dragKey}).then(this.loadTree)\n };\n}\n\n\n\n",
2237
+ "__isJSFile": true,
2238
+ "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/system/org/index.jsx"
2239
+ },
2240
+ "system/role/perm": {
2241
+ "path": "system/role/perm",
2242
+ "id": "system/role/perm",
2243
+ "parentId": "@@/global-layout",
2244
+ "file": "system/role/perm.jsx",
2245
+ "absPath": "/system/role/perm",
2246
+ "__content": "import React from \"react\";\nimport {Button, Card, Checkbox, Table, Typography} from \"antd\";\nimport {SaveOutlined} from \"@ant-design/icons\";\nimport {ArrUtils, HttpUtils, PageUtils} from \"../../../framework\";\nexport default class extends React.Component {\n\n\n state = {\n loading: false,\n roleInfo: {},\n\n dataSource: [],\n rowSelectedKeys: {},\n }\n\n columns = [\n {\n title: '菜单',\n dataIndex: 'name',\n },\n\n {\n title: '权限',\n dataIndex: 'permCodes',\n render: (permCodes, record) => {\n if (permCodes == null) {\n return\n }\n const {permNames} = record\n const options = [];\n for (let i = 0; i < permCodes.length; i++) {\n const label = permNames[i];\n const value = permCodes[i];\n options.push({label, value});\n }\n\n\n let rowSelectedKey = this.state.rowSelectedKeys[record.id];\n return <Checkbox.Group options={options}\n value={rowSelectedKey}\n onChange={(ks) => {\n const rowSelectedKeys = this.state.rowSelectedKeys;\n rowSelectedKeys[record.id] = ks;\n this.setState({rowSelectedKeys})\n }}/>\n }\n }\n ]\n\n componentDidMount() {\n this.roleId = PageUtils.currentParams().id;\n this.loadData();\n }\n\n\n loadData() {\n this.setState({loading: true})\n Promise.all([\n HttpUtils.get('admin/sysRole/get', {id: this.roleId}).then(rs => {\n this.setState({roleInfo: rs})\n }),\n HttpUtils.get('admin/sysRole/permTreeTable', {id: this.roleId}).then(rs => {\n this.setState({dataSource: rs})\n }),\n HttpUtils.get('admin/sysRole/ownPerms', {id: this.roleId}).then(rs => {\n this.setState({rowSelectedKeys: rs})\n })\n ]).then(rs => {\n this.setState({loading: false})\n })\n }\n\n savePerms = () => {\n const {rowSelectedKeys} = this.state;\n const perms = [];\n const menus = []\n for (let menuId in rowSelectedKeys) {\n const ks = rowSelectedKeys[menuId];\n if (ks == null || ks.length === 0) {\n continue;\n }\n menus.push(menuId)\n ArrUtils.addAll(perms, ks)\n }\n HttpUtils.post('admin/sysRole/savePerms', {id: this.roleId, perms, menus}).then(rs => {\n // Page.open(PageUtils.currentPathname(), PageUtils.currentLabel())\n })\n };\n\n\n render() {\n return <>\n\n\n <Card title='角色权限设置' loading={this.state.loading}\n variant={\"borderless\"}\n extra={<Button type='primary' icon={<SaveOutlined/>} onClick={this.savePerms}>保存权限</Button>}>\n <Typography.Text>角色名称:{this.state.roleInfo.name}, 编码:{this.state.roleInfo.code} </Typography.Text>\n <Table dataSource={this.state.dataSource}\n columns={this.columns}\n size='small' bordered pagination={false} rowKey='id'\n expandable={{defaultExpandAllRows: true}}\n ></Table>\n </Card>\n </>\n }\n}\n",
2247
+ "__isJSFile": true,
2248
+ "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/system/role/perm.jsx"
2249
+ },
2250
+ "userCenter/index": {
2251
+ "path": "userCenter",
2252
+ "id": "userCenter/index",
2253
+ "parentId": "@@/global-layout",
2254
+ "file": "userCenter/index.jsx",
2255
+ "absPath": "/userCenter",
2256
+ "__content": "import React from \"react\";\nimport {Avatar, Card, Col, Row, Tabs} from \"antd\";\nimport ChangePassword from \"./ChangePassword\";\nimport {HttpUtils, Page} from \"../../framework\";\n\nexport default class extends React.Component {\n\n state = {\n info: {}\n }\n\n componentDidMount() {\n HttpUtils.get('admin/userCenter/info').then(rs => {\n this.setState({info: rs})\n })\n }\n\n render() {\n const {info} = this.state;\n return <Page padding backgroundGray>\n <Row gutter={[16, 16]}>\n <Col md={6} sm={24}>\n <Card title='个人信息'>\n\n <div className='flex-center' style={{marginBottom: 32}}>\n <Avatar size={128} title='点击修改头像'/>\n </div>\n\n\n <table className='tmgg-table'>\n <tbody>\n <tr>\n <td>用户名称</td>\n <td align='right'>{info.name}</td>\n </tr>\n <tr>\n <td>账号</td>\n <td align='right'>{info.account}</td>\n </tr>\n <tr>\n <td>手机号码</td>\n <td>{info.phone}</td>\n </tr>\n <tr>\n <td>用户邮箱</td>\n <td>{info.email}</td>\n </tr>\n <tr>\n <td>所属部门</td>\n <td>{info.unit} {info.dept}</td>\n </tr>\n <tr>\n <td>所属角色</td>\n <td>{info.roles}</td>\n </tr>\n <tr>\n <td>创建日期</td>\n <td>{info.createTime}</td>\n </tr>\n </tbody>\n </table>\n </Card>\n </Col>\n <Col md={18} sm={24}>\n <Card title='个人设置'>\n <Tabs\n items={[\n {\n label: '修改密码', key: 'pwd', children: <div>\n <ChangePassword/>\n </div>\n },\n {\n label: '消息订阅', key: 'topic', children: <div>\n 当账号管理邮箱后,系统消息会发送邮件给您\n </div>\n }\n ]}\n tabPosition='left'\n >\n </Tabs>\n </Card>\n </Col>\n </Row>\n\n\n </Page>\n\n }\n}\n",
2257
+ "__isJSFile": true,
2258
+ "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/userCenter/index.jsx"
2259
+ },
2260
+ "system/api/perm": {
2261
+ "path": "system/api/perm",
2262
+ "id": "system/api/perm",
2263
+ "parentId": "@@/global-layout",
2264
+ "file": "system/api/perm.jsx",
2265
+ "absPath": "/system/api/perm",
2266
+ "__content": "import {message, Switch} from 'antd'\nimport React from 'react'\nimport {ArrUtils, HttpUtils, Page, PageUtils, ProTable} from \"../../../framework\";\n\n\nexport default class extends React.Component {\n\n\n state = {\n perms: []\n }\n\n constructor(props) {\n super(props);\n this.accountId = PageUtils.currentParams().accountId\n }\n\n async componentDidMount() {\n const rs = await HttpUtils.get('admin/apiAccount/get', {id: this.accountId})\n this.setState({perms: rs.perms})\n }\n\n onChange = async (action, checked) => {\n const hide = message.loading('保存中...', 0)\n await HttpUtils.post('admin/apiAccount/grant', {accountId: this.accountId, action, checked});\n\n const perms = this.state.perms\n if (checked) {\n ArrUtils.add(perms, action)\n } else {\n ArrUtils.remove(perms, action)\n }\n this.setState({perms})\n hide();\n }\n\n\n render() {\n return <Page>\n\n\n <ProTable\n rowKey='action'\n columns={[\n {dataIndex: 'name', title: '名称'},\n {dataIndex: 'action', title: '动作'},\n {dataIndex: 'desc', title: '描述'},\n {\n dataIndex: 'option', title: '操作',\n render: (_, record) => {\n let action = record.action;\n return <Switch checked={this.state.perms.includes(action)}\n onChange={(checked) => {\n this.onChange(action, checked)\n\n }}> </Switch>\n }\n }\n ]}\n request={(params,) => HttpUtils.get('admin/api/resource/page', params)}\n />\n\n </Page>\n\n\n }\n}\n\n\n",
2267
+ "__isJSFile": true,
2268
+ "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/system/api/perm.jsx"
2269
+ },
2270
+ "ureport/index": {
2271
+ "path": "ureport",
2272
+ "id": "ureport/index",
2273
+ "parentId": "@@/global-layout",
2274
+ "file": "ureport/index.jsx",
2275
+ "absPath": "/ureport",
2276
+ "__content": "import React from 'react'\nimport {Button} from \"antd\";\n\nexport default class extends React.Component {\n\n render() {\n return <div style={{display: 'flex', alignItems: 'center', justifyContent: 'center'}}>\n <Button type='primary' href='/ureport/designer'>打开设计器</Button>\n </div>\n }\n\n\n}\n\n\n\n",
2277
+ "__isJSFile": true,
2278
+ "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/ureport/index.jsx"
2279
+ },
2280
+ "test/views": {
2281
+ "path": "test/views",
2282
+ "id": "test/views",
2283
+ "parentId": "@@/global-layout",
2284
+ "file": "test/views.jsx",
2285
+ "absPath": "/test/views",
2286
+ "__content": "import {ViewText, ViewBoolean, ViewBooleanEnableDisable, ViewFile, ViewFileButton, ViewImage, ViewPassword, ViewApproveStatus, ViewProcessInstanceProgress, ViewProcessInstanceProgressButton} from \"../../framework\";\n\nexport function ViewTextTest() {\n return <ViewText value='你好' />\n}\n\nexport function ViewBooleanTest() {\n return <ViewBoolean value={true} />\n}\n\nexport function ViewBooleanEnableDisableTest() {\n return <ViewBooleanEnableDisable value={true} />\n}\n\nexport function ViewTextEllipsisTest() {\n return <ViewText value='这是一段很长的文本,用于测试省略显示功能' ellipsis={true} maxLength={10} />\n}\n\nexport function ViewFileTest() {\n return <ViewFile value='file123' height='200px' />\n}\n\nexport function ViewFileButtonTest() {\n return <ViewFileButton value='file123' height='200px' />\n}\n\nexport function ViewImageTest() {\n return <ViewImage value='https://via.placeholder.com/150' />\n}\n\nexport function ViewPasswordTest() {\n return <ViewPassword value='password123' />\n}\n\nexport function ViewApproveStatusTest() {\n return <ViewApproveStatus value='approved' />\n}\n\nexport function ViewProcessInstanceProgressTest() {\n return <ViewProcessInstanceProgress value='process123' />\n}\n\nexport function ViewProcessInstanceProgressButtonTest() {\n return <ViewProcessInstanceProgressButton value='process123' />\n}\n\nexport default function () {\n return <>\n <h1>View 组件测试</h1>\n <div style={{marginBottom: '20px'}}>\n <h2>ViewText</h2>\n <ViewTextTest/>\n </div>\n <div style={{marginBottom: '20px'}}>\n <h2>ViewBoolean</h2>\n <ViewBooleanTest/>\n </div>\n <div style={{marginBottom: '20px'}}>\n <h2>ViewBooleanEnableDisable</h2>\n <ViewBooleanEnableDisableTest/>\n </div>\n <div style={{marginBottom: '20px'}}>\n <h2>ViewText (with ellipsis)</h2>\n <ViewTextEllipsisTest/>\n </div>\n <div style={{marginBottom: '20px'}}>\n <h2>ViewFile</h2>\n <ViewFileTest/>\n </div>\n <div style={{marginBottom: '20px'}}>\n <h2>ViewFileButton</h2>\n <ViewFileButtonTest/>\n </div>\n <div style={{marginBottom: '20px'}}>\n <h2>ViewImage</h2>\n <ViewImageTest/>\n </div>\n <div style={{marginBottom: '20px'}}>\n <h2>ViewPassword</h2>\n <ViewPasswordTest/>\n </div>\n <div style={{marginBottom: '20px'}}>\n <h2>ViewApproveStatus</h2>\n <ViewApproveStatusTest/>\n </div>\n <div style={{marginBottom: '20px'}}>\n <h2>ViewProcessInstanceProgress</h2>\n <ViewProcessInstanceProgressTest/>\n </div>\n <div style={{marginBottom: '20px'}}>\n <h2>ViewProcessInstanceProgressButton</h2>\n <ViewProcessInstanceProgressButtonTest/>\n </div>\n </>\n}",
2287
+ "__isJSFile": true,
2288
+ "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/test/views.jsx"
2289
+ },
2290
+ "about": {
2291
+ "path": "about",
2292
+ "id": "about",
2293
+ "parentId": "@@/global-layout",
2294
+ "file": "about.jsx",
2295
+ "absPath": "/about",
2296
+ "__content": "import React from \"react\";\n\nexport default class extends React.Component {\n\n\n render() {\n return <>\n <h1>关于</h1>\n </>\n\n }\n}\n",
2297
+ "__isJSFile": true,
2298
+ "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/about.jsx"
2299
+ },
2300
+ "index": {
2301
+ "path": "/",
2302
+ "id": "index",
2303
+ "parentId": "@@/global-layout",
2304
+ "file": "index.jsx",
2305
+ "absPath": "/",
2306
+ "__content": "import React from \"react\";\nimport {Card} from \"antd\";\n\n\nexport default function () {\n\n return <Card>\n 欢迎使用本系统\n </Card>\n}\n",
2307
+ "__isJSFile": true,
2308
+ "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/index.jsx"
2309
+ },
2310
+ "login": {
2311
+ "path": "login",
2312
+ "id": "login",
2313
+ "parentId": "@@/global-layout",
2314
+ "file": "login.jsx",
2315
+ "absPath": "/login",
2316
+ "__content": "import React from 'react';\n\nimport {LoginPage} from \"../framework/pages/LoginPage\";\n\n\nexport default class extends React.Component {\n\n\n render() {\n return <LoginPage/>\n // 支持自定义\n // return <LoginPage form={<Button type={\"primary\"} size='large'>xx登录</Button>} />\n }\n\n\n}\n",
2317
+ "__isJSFile": true,
2318
+ "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/login.jsx"
2319
+ },
2320
+ "@@/global-layout": {
2321
+ "id": "@@/global-layout",
2322
+ "path": "/",
2323
+ "file": "/home/runner/work/open-admin/open-admin/web/src/layouts/index.jsx",
2324
+ "absPath": "/",
2325
+ "isLayout": true,
2326
+ "__absFile": "/home/runner/work/open-admin/open-admin/web/src/layouts/index.jsx"
2327
+ }
2328
+ },
2329
+ "apiRoutes": {},
2330
+ "hasSrcDir": true,
2331
+ "npmClient": "pnpm",
2332
+ "umi": {
2333
+ "version": "4.6.25",
2334
+ "name": "Umi",
2335
+ "importSource": "umi",
2336
+ "cliName": "umi"
2337
+ },
2338
+ "bundleStatus": {
2339
+ "done": false
2340
+ },
2341
+ "react": {
2342
+ "version": "18.3.1",
2343
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/react@18.3.1/node_modules/react"
2344
+ },
2345
+ "react-dom": {
2346
+ "version": "18.3.1",
2347
+ "path": "/home/runner/work/open-admin/open-admin/web/node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom"
2348
+ },
2349
+ "appJS": null,
2350
+ "locale": "C",
2351
+ "globalCSS": [],
2352
+ "globalJS": [],
2353
+ "overridesCSS": [],
2354
+ "globalLoading": "/home/runner/work/open-admin/open-admin/web/src/loading.jsx",
2355
+ "bundler": "webpack",
2356
+ "git": {
2357
+ "originUrl": "https://github.com/jiangood/open-admin"
2358
+ },
2359
+ "framework": "react",
2360
+ "typescript": {
2361
+ "tsVersion": "5.9.3",
2362
+ "tslibVersion": "2.8.1"
2363
+ },
2364
+ "faviconFiles": []
2365
+ }