@jiangood/open-admin 2.5.8 → 3.0.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 (142) hide show
  1. package/package.json +20 -8
  2. package/src/framework/GlobalData.ts +85 -0
  3. package/src/framework/biz/OrgTree.tsx +2 -7
  4. package/src/framework/biz/Perm.tsx +11 -0
  5. package/src/framework/biz/PermActions.tsx +18 -15
  6. package/src/framework/biz/index.tsx +34 -19
  7. package/src/framework/components/ContextMenu/index.tsx +105 -78
  8. package/src/framework/components/DownloadModal/index.tsx +15 -17
  9. package/src/framework/components/ErrorBoundary/index.tsx +2 -2
  10. package/src/framework/components/FormModal/index.tsx +76 -0
  11. package/src/framework/components/Gap/index.tsx +1 -1
  12. package/src/framework/components/NamedIcon/index.tsx +55 -9
  13. package/src/framework/components/Page/index.less +0 -1
  14. package/src/framework/components/Page/index.tsx +34 -27
  15. package/src/framework/components/PageLoading/index.less +15 -0
  16. package/src/framework/components/PageLoading/index.tsx +32 -16
  17. package/src/framework/components/ProTable/index.tsx +86 -15
  18. package/src/framework/components/index.ts +1 -0
  19. package/src/framework/config/index.ts +1 -0
  20. package/src/framework/config/themeConfig.ts +39 -0
  21. package/src/framework/fields/FieldBoolean/index.tsx +11 -2
  22. package/src/framework/fields/FieldDate/index.tsx +22 -7
  23. package/src/framework/fields/FieldDateRange/index.tsx +24 -6
  24. package/src/framework/fields/FieldDictSelect/index.tsx +1 -0
  25. package/src/framework/fields/FieldEditor/index.tsx +7 -1
  26. package/src/framework/fields/FieldNumberRange/index.tsx +14 -5
  27. package/src/framework/fields/FieldPercent/index.tsx +16 -5
  28. package/src/framework/fields/FieldRemoteSelect/index.tsx +4 -2
  29. package/src/framework/fields/FieldRemoteTreeSelect/index.tsx +2 -1
  30. package/src/framework/fields/FieldSysOrgTree/index.tsx +6 -1
  31. package/src/framework/fields/FieldSysOrgTreeSelect/index.tsx +6 -1
  32. package/src/framework/fields/FieldTable/index.tsx +35 -6
  33. package/src/framework/fields/FieldTableSelect/index.tsx +18 -2
  34. package/src/framework/fields/FieldUploadFile/index.tsx +69 -28
  35. package/src/framework/fields/index.ts +0 -1
  36. package/src/framework/index.ts +2 -0
  37. package/src/framework/router/Link.tsx +26 -0
  38. package/src/framework/router/PageFrame.tsx +31 -0
  39. package/src/framework/router/history.ts +50 -0
  40. package/src/framework/router/index.ts +4 -0
  41. package/src/framework/router/matcher.ts +58 -0
  42. package/src/framework/utils/{ArrayUtils.js → ArrayUtils.ts} +5 -5
  43. package/src/framework/utils/{DateUtils.js → DateUtils.ts} +19 -19
  44. package/src/framework/utils/{DeviceUtils.js → DeviceUtils.ts} +8 -1
  45. package/src/framework/utils/{EventBus.js → EventBus.ts} +13 -6
  46. package/src/framework/utils/MessageApi.ts +5 -0
  47. package/src/framework/utils/ModalApi.ts +5 -0
  48. package/src/framework/utils/ObjectUtils.ts +15 -0
  49. package/src/framework/utils/{StorageUtils.js → StorageUtils.ts} +7 -7
  50. package/src/framework/utils/{StringUtils.js → StringUtils.ts} +15 -15
  51. package/src/framework/utils/{TreeUtils.js → TreeUtils.ts} +19 -12
  52. package/src/framework/utils/{UrlUtils.js → UrlUtils.ts} +10 -10
  53. package/src/framework/utils/index.ts +2 -1
  54. package/src/framework/utils/system/{DictUtils.js → DictUtils.ts} +16 -4
  55. package/src/framework/utils/system/{HttpUtils.js → HttpUtils.ts} +25 -21
  56. package/src/framework/utils/system/PageUtils.ts +49 -0
  57. package/src/framework/utils/system/{PermUtils.js → PermUtils.ts} +5 -6
  58. package/src/framework/utils/system/index.ts +0 -2
  59. package/src/framework/views/ViewBoolean/index.tsx +6 -3
  60. package/src/framework/views/ViewFileButton/index.tsx +13 -8
  61. package/src/framework/views/ViewImage/index.tsx +19 -14
  62. package/src/framework/views/ViewRange/index.tsx +10 -7
  63. package/src/framework/views/ViewText/index.tsx +9 -11
  64. package/src/layouts/admin/AdminTabs.jsx +79 -0
  65. package/src/layouts/admin/AdminTabs.less +63 -0
  66. package/src/layouts/admin/HeaderRight.jsx +66 -33
  67. package/src/layouts/admin/TabLayout.jsx +124 -0
  68. package/src/layouts/admin/index.jsx +12 -5
  69. package/src/layouts/admin/index.less +5 -83
  70. package/src/layouts/index.tsx +148 -0
  71. package/src/main.jsx +8 -0
  72. package/src/pages/account/changePassword.jsx +14 -10
  73. package/src/pages/article/$code.jsx +43 -0
  74. package/src/pages/index.jsx +6 -4
  75. package/src/pages/{login.jsx → public/login.jsx} +7 -10
  76. package/src/pages/public/test.jsx +30 -0
  77. package/src/pages/{forceUpdatePwd.jsx → standalone/forceUpdatePwd.jsx} +3 -32
  78. package/src/pages/system/article/index.jsx +147 -0
  79. package/src/pages/system/dict/index.jsx +60 -91
  80. package/src/pages/system/file/index.jsx +23 -17
  81. package/src/pages/system/job/index.jsx +63 -72
  82. package/src/pages/system/log/index.jsx +11 -8
  83. package/src/pages/system/org/index.jsx +60 -80
  84. package/src/pages/system/role/index.jsx +50 -86
  85. package/src/pages/system/role/rolePerm.jsx +2 -2
  86. package/src/pages/system/user/index.jsx +120 -73
  87. package/src/pages/system/user/userPerm.jsx +2 -2
  88. package/vite-plugin/index.js +107 -0
  89. package/config/common-plugin.js +0 -145
  90. package/config/config.js +0 -5
  91. package/config/utils.js +0 -73
  92. package/src/.umi-production/appData.json +0 -2237
  93. package/src/.umi-production/core/EmptyRoute.tsx +0 -9
  94. package/src/.umi-production/core/defineApp.ts +0 -16
  95. package/src/.umi-production/core/helmet.ts +0 -10
  96. package/src/.umi-production/core/helmetContext.ts +0 -4
  97. package/src/.umi-production/core/history.ts +0 -72
  98. package/src/.umi-production/core/historyIntelli.ts +0 -132
  99. package/src/.umi-production/core/plugin.ts +0 -40
  100. package/src/.umi-production/core/pluginConfig.ts +0 -330
  101. package/src/.umi-production/core/pluginConfigJoi.d.ts +0 -7
  102. package/src/.umi-production/core/polyfill.ts +0 -220
  103. package/src/.umi-production/core/route.tsx +0 -45
  104. package/src/.umi-production/core/routeProps.js +0 -5
  105. package/src/.umi-production/core/routeProps.ts +0 -6
  106. package/src/.umi-production/core/terminal.ts +0 -37
  107. package/src/.umi-production/exports.ts +0 -17
  108. package/src/.umi-production/testBrowser.tsx +0 -90
  109. package/src/.umi-production/tsconfig.json +0 -43
  110. package/src/.umi-production/typings.d.ts +0 -136
  111. package/src/.umi-production/umi.ts +0 -83
  112. package/src/framework/GlobalData.d.ts +0 -8
  113. package/src/framework/GlobalData.js +0 -33
  114. package/src/framework/biz/HasPerm.tsx +0 -14
  115. package/src/framework/fields/FieldRemoteSelectMultiple/index.tsx +0 -29
  116. package/src/framework/utils/ArrayUtils.d.ts +0 -6
  117. package/src/framework/utils/DateUtils.d.ts +0 -20
  118. package/src/framework/utils/DeviceUtils.d.ts +0 -3
  119. package/src/framework/utils/EventBus.d.ts +0 -6
  120. package/src/framework/utils/MessageUtils.d.ts +0 -10
  121. package/src/framework/utils/MessageUtils.js +0 -43
  122. package/src/framework/utils/ObjectUtils.d.ts +0 -14
  123. package/src/framework/utils/ObjectUtils.js +0 -12
  124. package/src/framework/utils/StorageUtils.d.ts +0 -4
  125. package/src/framework/utils/StringUtils.d.ts +0 -17
  126. package/src/framework/utils/TreeUtils.d.ts +0 -13
  127. package/src/framework/utils/UrlUtils.d.ts +0 -6
  128. package/src/framework/utils/system/DictUtils.d.ts +0 -20
  129. package/src/framework/utils/system/FormRegistry.d.ts +0 -8
  130. package/src/framework/utils/system/FormRegistry.js +0 -31
  131. package/src/framework/utils/system/HttpUtils.d.ts +0 -14
  132. package/src/framework/utils/system/PageUtils.d.ts +0 -14
  133. package/src/framework/utils/system/PageUtils.js +0 -59
  134. package/src/framework/utils/system/PermUtils.d.ts +0 -5
  135. package/src/framework/utils/system/ThemeUtils.d.ts +0 -6
  136. package/src/framework/utils/system/ThemeUtils.js +0 -52
  137. package/src/layouts/PageRender.tsx +0 -29
  138. package/src/layouts/admin/TabPageRender.jsx +0 -210
  139. package/src/layouts/index.jsx +0 -119
  140. package/src/loading.jsx +0 -19
  141. package/src/pages/about.jsx +0 -11
  142. /package/src/pages/{login.less → public/login.less} +0 -0
@@ -1,2237 +0,0 @@
1
- {
2
- "cwd": "/home/runner/work/open-admin/open-admin/web",
3
- "pkg": {
4
- "devDependencies": {
5
- "@types/qs": "^6.15.1",
6
- "@types/react": "^19.2.2",
7
- "@types/react-dom": "^19.0.0",
8
- "babel-plugin-react-compiler": "^1.0.0",
9
- "typescript": "^6.0.3"
10
- },
11
- "peerDependencies": {
12
- "@ant-design/icons": "^6.0.0",
13
- "@tinymce/tinymce-react": "^6.0.0",
14
- "antd": "^6.0.0",
15
- "antd-img-crop": "^4.23.0",
16
- "axios": "^1.13.2",
17
- "dayjs": "^1.11.13",
18
- "lodash": "^4.17.23",
19
- "qs": "^6.14.0",
20
- "react": "^19.0.0",
21
- "react-dom": "^19.0.0",
22
- "umi": "^4.0.0"
23
- },
24
- "name": "@jiangood/open-admin",
25
- "repository": {
26
- "type": "git",
27
- "url": "https://github.com/jiangood/open-admin"
28
- },
29
- "description": "open-admin",
30
- "files": [
31
- "src/*",
32
- "config/*",
33
- "!src/.umi",
34
- "!src/pages/test/*"
35
- ],
36
- "main": "src/index.ts",
37
- "scripts": {
38
- "dev": "umi dev",
39
- "build": "umi build"
40
- },
41
- "version": "2.5.8"
42
- },
43
- "pkgPath": "/home/runner/work/open-admin/open-admin/web/package.json",
44
- "plugins": {
45
- "./node_modules/@umijs/core/dist/service/servicePlugin": {
46
- "cwd": "/home/runner/work/open-admin/open-admin/web",
47
- "type": "preset",
48
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/core/dist/service/servicePlugin.js",
49
- "id": "./node_modules/@umijs/core/dist/service/servicePlugin",
50
- "key": "servicePlugin",
51
- "config": {},
52
- "time": {
53
- "hooks": {},
54
- "register": 1
55
- },
56
- "enableBy": "register"
57
- },
58
- "@umijs/preset-umi": {
59
- "cwd": "/home/runner/work/open-admin/open-admin/web",
60
- "type": "preset",
61
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/index.js",
62
- "id": "@umijs/preset-umi",
63
- "key": "umi",
64
- "config": {},
65
- "time": {
66
- "hooks": {},
67
- "register": 4
68
- },
69
- "enableBy": "register"
70
- },
71
- "./node_modules/@umijs/preset-umi/dist/registerMethods": {
72
- "cwd": "/home/runner/work/open-admin/open-admin/web",
73
- "type": "plugin",
74
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/registerMethods.js",
75
- "id": "./node_modules/@umijs/preset-umi/dist/registerMethods",
76
- "key": "registerMethods",
77
- "config": {},
78
- "time": {
79
- "hooks": {
80
- "onStart": [
81
- 0
82
- ]
83
- },
84
- "register": 2
85
- },
86
- "enableBy": "register"
87
- },
88
- "@umijs/did-you-know": {
89
- "cwd": "/home/runner/work/open-admin/open-admin/web",
90
- "type": "plugin",
91
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/did-you-know/dist/plugin.js",
92
- "id": "@umijs/did-you-know",
93
- "key": "umijsDidYouKnow",
94
- "config": {},
95
- "time": {
96
- "hooks": {
97
- "onStart": [
98
- 1
99
- ]
100
- },
101
- "register": 2
102
- },
103
- "enableBy": "register"
104
- },
105
- "./node_modules/@umijs/preset-umi/dist/features/404/404": {
106
- "cwd": "/home/runner/work/open-admin/open-admin/web",
107
- "type": "plugin",
108
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/404/404.js",
109
- "id": "./node_modules/@umijs/preset-umi/dist/features/404/404",
110
- "key": "404",
111
- "config": {},
112
- "time": {
113
- "hooks": {
114
- "modifyRoutes": [
115
- 0
116
- ]
117
- },
118
- "register": 1
119
- },
120
- "enableBy": "register"
121
- },
122
- "./node_modules/@umijs/preset-umi/dist/features/aiDev/aiDev": {
123
- "cwd": "/home/runner/work/open-admin/open-admin/web",
124
- "type": "plugin",
125
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/aiDev/aiDev.js",
126
- "id": "./node_modules/@umijs/preset-umi/dist/features/aiDev/aiDev",
127
- "key": "aiDev",
128
- "config": {},
129
- "time": {
130
- "hooks": {},
131
- "register": 1
132
- },
133
- "enableBy": "register"
134
- },
135
- "./node_modules/@umijs/preset-umi/dist/features/appData/appData": {
136
- "cwd": "/home/runner/work/open-admin/open-admin/web",
137
- "type": "plugin",
138
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/appData/appData.js",
139
- "id": "./node_modules/@umijs/preset-umi/dist/features/appData/appData",
140
- "key": "appData",
141
- "config": {},
142
- "time": {
143
- "hooks": {
144
- "modifyAppData": [
145
- 72
146
- ]
147
- },
148
- "register": 20
149
- },
150
- "enableBy": "register"
151
- },
152
- "./node_modules/@umijs/preset-umi/dist/features/appData/umiInfo": {
153
- "cwd": "/home/runner/work/open-admin/open-admin/web",
154
- "type": "plugin",
155
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/appData/umiInfo.js",
156
- "id": "./node_modules/@umijs/preset-umi/dist/features/appData/umiInfo",
157
- "key": "umiInfo",
158
- "config": {},
159
- "time": {
160
- "hooks": {},
161
- "register": 1
162
- },
163
- "enableBy": "register"
164
- },
165
- "./node_modules/@umijs/preset-umi/dist/features/check/check": {
166
- "cwd": "/home/runner/work/open-admin/open-admin/web",
167
- "type": "plugin",
168
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/check/check.js",
169
- "id": "./node_modules/@umijs/preset-umi/dist/features/check/check",
170
- "key": "check",
171
- "config": {},
172
- "time": {
173
- "hooks": {
174
- "onCheckConfig": [
175
- 0
176
- ],
177
- "onCheck": [
178
- 0
179
- ]
180
- },
181
- "register": 1
182
- },
183
- "enableBy": "register"
184
- },
185
- "./node_modules/@umijs/preset-umi/dist/features/check/babel722": {
186
- "cwd": "/home/runner/work/open-admin/open-admin/web",
187
- "type": "plugin",
188
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/check/babel722.js",
189
- "id": "./node_modules/@umijs/preset-umi/dist/features/check/babel722",
190
- "key": "babel722",
191
- "config": {},
192
- "time": {
193
- "hooks": {
194
- "onCheck": [
195
- 0
196
- ]
197
- },
198
- "register": 0
199
- },
200
- "enableBy": "register"
201
- },
202
- "./node_modules/@umijs/preset-umi/dist/features/codeSplitting/codeSplitting": {
203
- "cwd": "/home/runner/work/open-admin/open-admin/web",
204
- "type": "plugin",
205
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/codeSplitting/codeSplitting.js",
206
- "id": "./node_modules/@umijs/preset-umi/dist/features/codeSplitting/codeSplitting",
207
- "key": "codeSplitting",
208
- "config": {},
209
- "time": {
210
- "hooks": {},
211
- "register": 1
212
- },
213
- "enableBy": "config"
214
- },
215
- "./node_modules/@umijs/preset-umi/dist/features/configPlugins/configPlugins": {
216
- "cwd": "/home/runner/work/open-admin/open-admin/web",
217
- "type": "plugin",
218
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/configPlugins/configPlugins.js",
219
- "id": "./node_modules/@umijs/preset-umi/dist/features/configPlugins/configPlugins",
220
- "key": "configPlugins",
221
- "config": {},
222
- "time": {
223
- "hooks": {
224
- "modifyConfig": [
225
- 0
226
- ]
227
- },
228
- "register": 6
229
- },
230
- "enableBy": "register"
231
- },
232
- "virtual: config-title": {
233
- "id": "virtual: config-title",
234
- "key": "title",
235
- "config": {},
236
- "type": "plugin",
237
- "enableBy": "register",
238
- "time": {
239
- "hooks": {},
240
- "register": 0
241
- }
242
- },
243
- "virtual: config-styles": {
244
- "id": "virtual: config-styles",
245
- "key": "styles",
246
- "config": {},
247
- "type": "plugin",
248
- "enableBy": "register",
249
- "time": {
250
- "hooks": {},
251
- "register": 0
252
- }
253
- },
254
- "virtual: config-scripts": {
255
- "id": "virtual: config-scripts",
256
- "key": "scripts",
257
- "config": {},
258
- "type": "plugin",
259
- "enableBy": "register",
260
- "time": {
261
- "hooks": {},
262
- "register": 0
263
- }
264
- },
265
- "virtual: config-routes": {
266
- "id": "virtual: config-routes",
267
- "key": "routes",
268
- "config": {
269
- "onChange": "regenerateTmpFiles"
270
- },
271
- "type": "plugin",
272
- "enableBy": "register",
273
- "time": {
274
- "hooks": {},
275
- "register": 0
276
- }
277
- },
278
- "virtual: config-routeLoader": {
279
- "id": "virtual: config-routeLoader",
280
- "key": "routeLoader",
281
- "config": {
282
- "default": {
283
- "moduleType": "esm"
284
- }
285
- },
286
- "type": "plugin",
287
- "enableBy": "register",
288
- "time": {
289
- "hooks": {},
290
- "register": 0
291
- }
292
- },
293
- "virtual: config-reactRouter5Compat": {
294
- "id": "virtual: config-reactRouter5Compat",
295
- "key": "reactRouter5Compat",
296
- "config": {},
297
- "type": "plugin",
298
- "enableBy": "register",
299
- "time": {
300
- "hooks": {},
301
- "register": 0
302
- }
303
- },
304
- "virtual: config-presets": {
305
- "id": "virtual: config-presets",
306
- "key": "presets",
307
- "config": {},
308
- "type": "plugin",
309
- "enableBy": "register",
310
- "time": {
311
- "hooks": {},
312
- "register": 0
313
- }
314
- },
315
- "virtual: config-plugins": {
316
- "id": "virtual: config-plugins",
317
- "key": "plugins",
318
- "config": {},
319
- "type": "plugin",
320
- "enableBy": "register",
321
- "time": {
322
- "hooks": {},
323
- "register": 0
324
- }
325
- },
326
- "virtual: config-npmClient": {
327
- "id": "virtual: config-npmClient",
328
- "key": "npmClient",
329
- "config": {},
330
- "type": "plugin",
331
- "enableBy": "register",
332
- "time": {
333
- "hooks": {},
334
- "register": 0
335
- }
336
- },
337
- "virtual: config-mountElementId": {
338
- "id": "virtual: config-mountElementId",
339
- "key": "mountElementId",
340
- "config": {
341
- "default": "root"
342
- },
343
- "type": "plugin",
344
- "enableBy": "register",
345
- "time": {
346
- "hooks": {},
347
- "register": 0
348
- }
349
- },
350
- "virtual: config-metas": {
351
- "id": "virtual: config-metas",
352
- "key": "metas",
353
- "config": {},
354
- "type": "plugin",
355
- "enableBy": "register",
356
- "time": {
357
- "hooks": {},
358
- "register": 0
359
- }
360
- },
361
- "virtual: config-links": {
362
- "id": "virtual: config-links",
363
- "key": "links",
364
- "config": {},
365
- "type": "plugin",
366
- "enableBy": "register",
367
- "time": {
368
- "hooks": {},
369
- "register": 0
370
- }
371
- },
372
- "virtual: config-historyWithQuery": {
373
- "id": "virtual: config-historyWithQuery",
374
- "key": "historyWithQuery",
375
- "config": {},
376
- "type": "plugin",
377
- "enableBy": "register",
378
- "time": {
379
- "hooks": {},
380
- "register": 0
381
- }
382
- },
383
- "virtual: config-history": {
384
- "id": "virtual: config-history",
385
- "key": "history",
386
- "config": {
387
- "default": {
388
- "type": "browser"
389
- }
390
- },
391
- "type": "plugin",
392
- "enableBy": "register",
393
- "time": {
394
- "hooks": {},
395
- "register": 0
396
- }
397
- },
398
- "virtual: config-headScripts": {
399
- "id": "virtual: config-headScripts",
400
- "key": "headScripts",
401
- "config": {},
402
- "type": "plugin",
403
- "enableBy": "register",
404
- "time": {
405
- "hooks": {},
406
- "register": 0
407
- }
408
- },
409
- "virtual: config-esbuildMinifyIIFE": {
410
- "id": "virtual: config-esbuildMinifyIIFE",
411
- "key": "esbuildMinifyIIFE",
412
- "config": {},
413
- "type": "plugin",
414
- "enableBy": "register",
415
- "time": {
416
- "hooks": {},
417
- "register": 0
418
- }
419
- },
420
- "virtual: config-conventionRoutes": {
421
- "id": "virtual: config-conventionRoutes",
422
- "key": "conventionRoutes",
423
- "config": {},
424
- "type": "plugin",
425
- "enableBy": "register",
426
- "time": {
427
- "hooks": {},
428
- "register": 0
429
- }
430
- },
431
- "virtual: config-conventionLayout": {
432
- "id": "virtual: config-conventionLayout",
433
- "key": "conventionLayout",
434
- "config": {},
435
- "type": "plugin",
436
- "enableBy": "register",
437
- "time": {
438
- "hooks": {},
439
- "register": 0
440
- }
441
- },
442
- "virtual: config-base": {
443
- "id": "virtual: config-base",
444
- "key": "base",
445
- "config": {
446
- "default": "/"
447
- },
448
- "type": "plugin",
449
- "enableBy": "register",
450
- "time": {
451
- "hooks": {},
452
- "register": 0
453
- }
454
- },
455
- "virtual: config-analyze": {
456
- "id": "virtual: config-analyze",
457
- "key": "analyze",
458
- "config": {},
459
- "type": "plugin",
460
- "enableBy": "register",
461
- "time": {
462
- "hooks": {},
463
- "register": 0
464
- }
465
- },
466
- "virtual: config-writeToDisk": {
467
- "id": "virtual: config-writeToDisk",
468
- "key": "writeToDisk",
469
- "config": {},
470
- "type": "plugin",
471
- "enableBy": "register",
472
- "time": {
473
- "hooks": {},
474
- "register": 0
475
- }
476
- },
477
- "virtual: config-transformRuntime": {
478
- "id": "virtual: config-transformRuntime",
479
- "key": "transformRuntime",
480
- "config": {},
481
- "type": "plugin",
482
- "enableBy": "register",
483
- "time": {
484
- "hooks": {},
485
- "register": 0
486
- }
487
- },
488
- "virtual: config-theme": {
489
- "id": "virtual: config-theme",
490
- "key": "theme",
491
- "config": {},
492
- "type": "plugin",
493
- "enableBy": "register",
494
- "time": {
495
- "hooks": {},
496
- "register": 0
497
- }
498
- },
499
- "virtual: config-targets": {
500
- "id": "virtual: config-targets",
501
- "key": "targets",
502
- "config": {},
503
- "type": "plugin",
504
- "enableBy": "register",
505
- "time": {
506
- "hooks": {},
507
- "register": 0
508
- }
509
- },
510
- "virtual: config-svgr": {
511
- "id": "virtual: config-svgr",
512
- "key": "svgr",
513
- "config": {
514
- "default": {}
515
- },
516
- "type": "plugin",
517
- "enableBy": "register",
518
- "time": {
519
- "hooks": {},
520
- "register": 0
521
- }
522
- },
523
- "virtual: config-svgo": {
524
- "id": "virtual: config-svgo",
525
- "key": "svgo",
526
- "config": {},
527
- "type": "plugin",
528
- "enableBy": "register",
529
- "time": {
530
- "hooks": {},
531
- "register": 0
532
- }
533
- },
534
- "virtual: config-stylusLoader": {
535
- "id": "virtual: config-stylusLoader",
536
- "key": "stylusLoader",
537
- "config": {},
538
- "type": "plugin",
539
- "enableBy": "register",
540
- "time": {
541
- "hooks": {},
542
- "register": 0
543
- }
544
- },
545
- "virtual: config-styleLoader": {
546
- "id": "virtual: config-styleLoader",
547
- "key": "styleLoader",
548
- "config": {},
549
- "type": "plugin",
550
- "enableBy": "register",
551
- "time": {
552
- "hooks": {},
553
- "register": 0
554
- }
555
- },
556
- "virtual: config-srcTranspilerOptions": {
557
- "id": "virtual: config-srcTranspilerOptions",
558
- "key": "srcTranspilerOptions",
559
- "config": {},
560
- "type": "plugin",
561
- "enableBy": "register",
562
- "time": {
563
- "hooks": {},
564
- "register": 0
565
- }
566
- },
567
- "virtual: config-srcTranspiler": {
568
- "id": "virtual: config-srcTranspiler",
569
- "key": "srcTranspiler",
570
- "config": {},
571
- "type": "plugin",
572
- "enableBy": "register",
573
- "time": {
574
- "hooks": {},
575
- "register": 0
576
- }
577
- },
578
- "virtual: config-sassLoader": {
579
- "id": "virtual: config-sassLoader",
580
- "key": "sassLoader",
581
- "config": {},
582
- "type": "plugin",
583
- "enableBy": "register",
584
- "time": {
585
- "hooks": {},
586
- "register": 0
587
- }
588
- },
589
- "virtual: config-runtimePublicPath": {
590
- "id": "virtual: config-runtimePublicPath",
591
- "key": "runtimePublicPath",
592
- "config": {},
593
- "type": "plugin",
594
- "enableBy": "register",
595
- "time": {
596
- "hooks": {},
597
- "register": 0
598
- }
599
- },
600
- "virtual: config-purgeCSS": {
601
- "id": "virtual: config-purgeCSS",
602
- "key": "purgeCSS",
603
- "config": {},
604
- "type": "plugin",
605
- "enableBy": "register",
606
- "time": {
607
- "hooks": {},
608
- "register": 0
609
- }
610
- },
611
- "virtual: config-publicPath": {
612
- "id": "virtual: config-publicPath",
613
- "key": "publicPath",
614
- "config": {
615
- "default": "/"
616
- },
617
- "type": "plugin",
618
- "enableBy": "register",
619
- "time": {
620
- "hooks": {},
621
- "register": 0
622
- }
623
- },
624
- "virtual: config-proxy": {
625
- "id": "virtual: config-proxy",
626
- "key": "proxy",
627
- "config": {},
628
- "type": "plugin",
629
- "enableBy": "register",
630
- "time": {
631
- "hooks": {},
632
- "register": 0
633
- }
634
- },
635
- "virtual: config-postcssLoader": {
636
- "id": "virtual: config-postcssLoader",
637
- "key": "postcssLoader",
638
- "config": {},
639
- "type": "plugin",
640
- "enableBy": "register",
641
- "time": {
642
- "hooks": {},
643
- "register": 0
644
- }
645
- },
646
- "virtual: config-outputPath": {
647
- "id": "virtual: config-outputPath",
648
- "key": "outputPath",
649
- "config": {},
650
- "type": "plugin",
651
- "enableBy": "register",
652
- "time": {
653
- "hooks": {},
654
- "register": 0
655
- }
656
- },
657
- "virtual: config-normalCSSLoaderModules": {
658
- "id": "virtual: config-normalCSSLoaderModules",
659
- "key": "normalCSSLoaderModules",
660
- "config": {},
661
- "type": "plugin",
662
- "enableBy": "register",
663
- "time": {
664
- "hooks": {},
665
- "register": 0
666
- }
667
- },
668
- "virtual: config-mfsu": {
669
- "id": "virtual: config-mfsu",
670
- "key": "mfsu",
671
- "config": {
672
- "default": {
673
- "strategy": "eager"
674
- }
675
- },
676
- "type": "plugin",
677
- "enableBy": "register",
678
- "time": {
679
- "hooks": {},
680
- "register": 0
681
- }
682
- },
683
- "virtual: config-mdx": {
684
- "id": "virtual: config-mdx",
685
- "key": "mdx",
686
- "config": {},
687
- "type": "plugin",
688
- "enableBy": "register",
689
- "time": {
690
- "hooks": {},
691
- "register": 0
692
- }
693
- },
694
- "virtual: config-manifest": {
695
- "id": "virtual: config-manifest",
696
- "key": "manifest",
697
- "config": {},
698
- "type": "plugin",
699
- "enableBy": "register",
700
- "time": {
701
- "hooks": {},
702
- "register": 0
703
- }
704
- },
705
- "virtual: config-lessLoader": {
706
- "id": "virtual: config-lessLoader",
707
- "key": "lessLoader",
708
- "config": {},
709
- "type": "plugin",
710
- "enableBy": "register",
711
- "time": {
712
- "hooks": {},
713
- "register": 0
714
- }
715
- },
716
- "virtual: config-jsMinifierOptions": {
717
- "id": "virtual: config-jsMinifierOptions",
718
- "key": "jsMinifierOptions",
719
- "config": {},
720
- "type": "plugin",
721
- "enableBy": "register",
722
- "time": {
723
- "hooks": {},
724
- "register": 0
725
- }
726
- },
727
- "virtual: config-jsMinifier": {
728
- "id": "virtual: config-jsMinifier",
729
- "key": "jsMinifier",
730
- "config": {},
731
- "type": "plugin",
732
- "enableBy": "register",
733
- "time": {
734
- "hooks": {},
735
- "register": 0
736
- }
737
- },
738
- "virtual: config-inlineLimit": {
739
- "id": "virtual: config-inlineLimit",
740
- "key": "inlineLimit",
741
- "config": {},
742
- "type": "plugin",
743
- "enableBy": "register",
744
- "time": {
745
- "hooks": {},
746
- "register": 0
747
- }
748
- },
749
- "virtual: config-ignoreMomentLocale": {
750
- "id": "virtual: config-ignoreMomentLocale",
751
- "key": "ignoreMomentLocale",
752
- "config": {
753
- "default": true
754
- },
755
- "type": "plugin",
756
- "enableBy": "register",
757
- "time": {
758
- "hooks": {},
759
- "register": 0
760
- }
761
- },
762
- "virtual: config-https": {
763
- "id": "virtual: config-https",
764
- "key": "https",
765
- "config": {},
766
- "type": "plugin",
767
- "enableBy": "register",
768
- "time": {
769
- "hooks": {},
770
- "register": 0
771
- }
772
- },
773
- "virtual: config-hash": {
774
- "id": "virtual: config-hash",
775
- "key": "hash",
776
- "config": {},
777
- "type": "plugin",
778
- "enableBy": "register",
779
- "time": {
780
- "hooks": {},
781
- "register": 0
782
- }
783
- },
784
- "virtual: config-forkTSChecker": {
785
- "id": "virtual: config-forkTSChecker",
786
- "key": "forkTSChecker",
787
- "config": {},
788
- "type": "plugin",
789
- "enableBy": "register",
790
- "time": {
791
- "hooks": {},
792
- "register": 0
793
- }
794
- },
795
- "virtual: config-fastRefresh": {
796
- "id": "virtual: config-fastRefresh",
797
- "key": "fastRefresh",
798
- "config": {},
799
- "type": "plugin",
800
- "enableBy": "register",
801
- "time": {
802
- "hooks": {},
803
- "register": 0
804
- }
805
- },
806
- "virtual: config-extraPostCSSPlugins": {
807
- "id": "virtual: config-extraPostCSSPlugins",
808
- "key": "extraPostCSSPlugins",
809
- "config": {},
810
- "type": "plugin",
811
- "enableBy": "register",
812
- "time": {
813
- "hooks": {},
814
- "register": 0
815
- }
816
- },
817
- "virtual: config-extraBabelPresets": {
818
- "id": "virtual: config-extraBabelPresets",
819
- "key": "extraBabelPresets",
820
- "config": {},
821
- "type": "plugin",
822
- "enableBy": "register",
823
- "time": {
824
- "hooks": {},
825
- "register": 0
826
- }
827
- },
828
- "virtual: config-extraBabelPlugins": {
829
- "id": "virtual: config-extraBabelPlugins",
830
- "key": "extraBabelPlugins",
831
- "config": {},
832
- "type": "plugin",
833
- "enableBy": "register",
834
- "time": {
835
- "hooks": {},
836
- "register": 0
837
- }
838
- },
839
- "virtual: config-extraBabelIncludes": {
840
- "id": "virtual: config-extraBabelIncludes",
841
- "key": "extraBabelIncludes",
842
- "config": {},
843
- "type": "plugin",
844
- "enableBy": "register",
845
- "time": {
846
- "hooks": {},
847
- "register": 0
848
- }
849
- },
850
- "virtual: config-externals": {
851
- "id": "virtual: config-externals",
852
- "key": "externals",
853
- "config": {
854
- "default": {}
855
- },
856
- "type": "plugin",
857
- "enableBy": "register",
858
- "time": {
859
- "hooks": {},
860
- "register": 0
861
- }
862
- },
863
- "virtual: config-esm": {
864
- "id": "virtual: config-esm",
865
- "key": "esm",
866
- "config": {},
867
- "type": "plugin",
868
- "enableBy": "register",
869
- "time": {
870
- "hooks": {},
871
- "register": 0
872
- }
873
- },
874
- "virtual: config-devtool": {
875
- "id": "virtual: config-devtool",
876
- "key": "devtool",
877
- "config": {},
878
- "type": "plugin",
879
- "enableBy": "register",
880
- "time": {
881
- "hooks": {},
882
- "register": 0
883
- }
884
- },
885
- "virtual: config-depTranspiler": {
886
- "id": "virtual: config-depTranspiler",
887
- "key": "depTranspiler",
888
- "config": {},
889
- "type": "plugin",
890
- "enableBy": "register",
891
- "time": {
892
- "hooks": {},
893
- "register": 0
894
- }
895
- },
896
- "virtual: config-define": {
897
- "id": "virtual: config-define",
898
- "key": "define",
899
- "config": {},
900
- "type": "plugin",
901
- "enableBy": "register",
902
- "time": {
903
- "hooks": {},
904
- "register": 0
905
- }
906
- },
907
- "virtual: config-deadCode": {
908
- "id": "virtual: config-deadCode",
909
- "key": "deadCode",
910
- "config": {},
911
- "type": "plugin",
912
- "enableBy": "register",
913
- "time": {
914
- "hooks": {},
915
- "register": 0
916
- }
917
- },
918
- "virtual: config-cssPublicPath": {
919
- "id": "virtual: config-cssPublicPath",
920
- "key": "cssPublicPath",
921
- "config": {},
922
- "type": "plugin",
923
- "enableBy": "register",
924
- "time": {
925
- "hooks": {},
926
- "register": 0
927
- }
928
- },
929
- "virtual: config-cssMinifierOptions": {
930
- "id": "virtual: config-cssMinifierOptions",
931
- "key": "cssMinifierOptions",
932
- "config": {},
933
- "type": "plugin",
934
- "enableBy": "register",
935
- "time": {
936
- "hooks": {},
937
- "register": 0
938
- }
939
- },
940
- "virtual: config-cssMinifier": {
941
- "id": "virtual: config-cssMinifier",
942
- "key": "cssMinifier",
943
- "config": {},
944
- "type": "plugin",
945
- "enableBy": "register",
946
- "time": {
947
- "hooks": {},
948
- "register": 0
949
- }
950
- },
951
- "virtual: config-cssLoaderModules": {
952
- "id": "virtual: config-cssLoaderModules",
953
- "key": "cssLoaderModules",
954
- "config": {},
955
- "type": "plugin",
956
- "enableBy": "register",
957
- "time": {
958
- "hooks": {},
959
- "register": 0
960
- }
961
- },
962
- "virtual: config-cssLoader": {
963
- "id": "virtual: config-cssLoader",
964
- "key": "cssLoader",
965
- "config": {},
966
- "type": "plugin",
967
- "enableBy": "register",
968
- "time": {
969
- "hooks": {},
970
- "register": 0
971
- }
972
- },
973
- "virtual: config-copy": {
974
- "id": "virtual: config-copy",
975
- "key": "copy",
976
- "config": {},
977
- "type": "plugin",
978
- "enableBy": "register",
979
- "time": {
980
- "hooks": {},
981
- "register": 0
982
- }
983
- },
984
- "virtual: config-checkDepCssModules": {
985
- "id": "virtual: config-checkDepCssModules",
986
- "key": "checkDepCssModules",
987
- "config": {},
988
- "type": "plugin",
989
- "enableBy": "register",
990
- "time": {
991
- "hooks": {},
992
- "register": 0
993
- }
994
- },
995
- "virtual: config-chainWebpack": {
996
- "id": "virtual: config-chainWebpack",
997
- "key": "chainWebpack",
998
- "config": {},
999
- "type": "plugin",
1000
- "enableBy": "register",
1001
- "time": {
1002
- "hooks": {},
1003
- "register": 0
1004
- }
1005
- },
1006
- "virtual: config-cacheDirectoryPath": {
1007
- "id": "virtual: config-cacheDirectoryPath",
1008
- "key": "cacheDirectoryPath",
1009
- "config": {},
1010
- "type": "plugin",
1011
- "enableBy": "register",
1012
- "time": {
1013
- "hooks": {},
1014
- "register": 0
1015
- }
1016
- },
1017
- "virtual: config-babelLoaderCustomize": {
1018
- "id": "virtual: config-babelLoaderCustomize",
1019
- "key": "babelLoaderCustomize",
1020
- "config": {},
1021
- "type": "plugin",
1022
- "enableBy": "register",
1023
- "time": {
1024
- "hooks": {},
1025
- "register": 0
1026
- }
1027
- },
1028
- "virtual: config-autoprefixer": {
1029
- "id": "virtual: config-autoprefixer",
1030
- "key": "autoprefixer",
1031
- "config": {},
1032
- "type": "plugin",
1033
- "enableBy": "register",
1034
- "time": {
1035
- "hooks": {},
1036
- "register": 0
1037
- }
1038
- },
1039
- "virtual: config-autoCSSModules": {
1040
- "id": "virtual: config-autoCSSModules",
1041
- "key": "autoCSSModules",
1042
- "config": {
1043
- "default": true
1044
- },
1045
- "type": "plugin",
1046
- "enableBy": "register",
1047
- "time": {
1048
- "hooks": {},
1049
- "register": 0
1050
- }
1051
- },
1052
- "virtual: config-alias": {
1053
- "id": "virtual: config-alias",
1054
- "key": "alias",
1055
- "config": {
1056
- "default": {
1057
- "umi": "@@/exports",
1058
- "react": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/node_modules/react",
1059
- "react-dom": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/node_modules/react-dom",
1060
- "react-router": "/home/runner/work/open-admin/open-admin/web/node_modules/react-router",
1061
- "react-router-dom": "/home/runner/work/open-admin/open-admin/web/node_modules/react-router-dom"
1062
- }
1063
- },
1064
- "type": "plugin",
1065
- "enableBy": "register",
1066
- "time": {
1067
- "hooks": {},
1068
- "register": 0
1069
- }
1070
- },
1071
- "./node_modules/@umijs/preset-umi/dist/features/crossorigin/crossorigin": {
1072
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1073
- "type": "plugin",
1074
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/crossorigin/crossorigin.js",
1075
- "id": "./node_modules/@umijs/preset-umi/dist/features/crossorigin/crossorigin",
1076
- "key": "crossorigin",
1077
- "config": {},
1078
- "time": {
1079
- "hooks": {},
1080
- "register": 0
1081
- },
1082
- "enableBy": "config"
1083
- },
1084
- "./node_modules/@umijs/preset-umi/dist/features/depsOnDemand/depsOnDemand": {
1085
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1086
- "type": "plugin",
1087
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/depsOnDemand/depsOnDemand.js",
1088
- "id": "./node_modules/@umijs/preset-umi/dist/features/depsOnDemand/depsOnDemand",
1089
- "key": "depsOnDemand",
1090
- "config": {},
1091
- "time": {
1092
- "hooks": {
1093
- "onStart": [
1094
- 1
1095
- ]
1096
- },
1097
- "register": 1
1098
- },
1099
- "enableBy": "register"
1100
- },
1101
- "./node_modules/@umijs/preset-umi/dist/features/devTool/devTool": {
1102
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1103
- "type": "plugin",
1104
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/devTool/devTool.js",
1105
- "id": "./node_modules/@umijs/preset-umi/dist/features/devTool/devTool",
1106
- "key": "devTool",
1107
- "config": {},
1108
- "time": {
1109
- "hooks": {},
1110
- "register": 0
1111
- },
1112
- "enableBy": "register"
1113
- },
1114
- "./node_modules/@umijs/preset-umi/dist/features/esbuildHelperChecker/esbuildHelperChecker": {
1115
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1116
- "type": "plugin",
1117
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/esbuildHelperChecker/esbuildHelperChecker.js",
1118
- "id": "./node_modules/@umijs/preset-umi/dist/features/esbuildHelperChecker/esbuildHelperChecker",
1119
- "key": "esbuildHelperChecker",
1120
- "config": {},
1121
- "time": {
1122
- "hooks": {},
1123
- "register": 103
1124
- },
1125
- "enableBy": "register"
1126
- },
1127
- "./node_modules/@umijs/preset-umi/dist/features/esmi/esmi": {
1128
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1129
- "type": "plugin",
1130
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/esmi/esmi.js",
1131
- "id": "./node_modules/@umijs/preset-umi/dist/features/esmi/esmi",
1132
- "key": "esmi",
1133
- "config": {},
1134
- "time": {
1135
- "hooks": {},
1136
- "register": 30
1137
- },
1138
- "enableBy": "config"
1139
- },
1140
- "./node_modules/@umijs/preset-umi/dist/features/exportStatic/exportStatic": {
1141
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1142
- "type": "plugin",
1143
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/exportStatic/exportStatic.js",
1144
- "id": "./node_modules/@umijs/preset-umi/dist/features/exportStatic/exportStatic",
1145
- "key": "exportStatic",
1146
- "config": {},
1147
- "time": {
1148
- "hooks": {},
1149
- "register": 10
1150
- },
1151
- "enableBy": "config"
1152
- },
1153
- "./node_modules/@umijs/preset-umi/dist/features/favicons/favicons": {
1154
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1155
- "type": "plugin",
1156
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/favicons/favicons.js",
1157
- "id": "./node_modules/@umijs/preset-umi/dist/features/favicons/favicons",
1158
- "key": "favicons",
1159
- "config": {},
1160
- "time": {
1161
- "hooks": {
1162
- "modifyAppData": [
1163
- 0
1164
- ]
1165
- },
1166
- "register": 1
1167
- },
1168
- "enableBy": "register"
1169
- },
1170
- "./node_modules/@umijs/preset-umi/dist/features/helmet/helmet": {
1171
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1172
- "type": "plugin",
1173
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/helmet/helmet.js",
1174
- "id": "./node_modules/@umijs/preset-umi/dist/features/helmet/helmet",
1175
- "key": "helmet",
1176
- "config": {},
1177
- "time": {
1178
- "hooks": {},
1179
- "register": 0
1180
- },
1181
- "enableBy": "register"
1182
- },
1183
- "./node_modules/@umijs/preset-umi/dist/features/icons/icons": {
1184
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1185
- "type": "plugin",
1186
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/icons/icons.js",
1187
- "id": "./node_modules/@umijs/preset-umi/dist/features/icons/icons",
1188
- "key": "icons",
1189
- "config": {},
1190
- "time": {
1191
- "hooks": {},
1192
- "register": 1
1193
- },
1194
- "enableBy": "config"
1195
- },
1196
- "./node_modules/@umijs/preset-umi/dist/features/mock/mock": {
1197
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1198
- "type": "plugin",
1199
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/mock/mock.js",
1200
- "id": "./node_modules/@umijs/preset-umi/dist/features/mock/mock",
1201
- "key": "mock",
1202
- "config": {},
1203
- "time": {
1204
- "hooks": {},
1205
- "register": 39
1206
- }
1207
- },
1208
- "./node_modules/@umijs/preset-umi/dist/features/mpa/mpa": {
1209
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1210
- "type": "plugin",
1211
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/mpa/mpa.js",
1212
- "id": "./node_modules/@umijs/preset-umi/dist/features/mpa/mpa",
1213
- "key": "mpa",
1214
- "config": {},
1215
- "time": {
1216
- "hooks": {},
1217
- "register": 1
1218
- },
1219
- "enableBy": "config"
1220
- },
1221
- "./node_modules/@umijs/preset-umi/dist/features/okam/okam": {
1222
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1223
- "type": "plugin",
1224
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/okam/okam.js",
1225
- "id": "./node_modules/@umijs/preset-umi/dist/features/okam/okam",
1226
- "key": "okam",
1227
- "config": {},
1228
- "time": {
1229
- "hooks": {},
1230
- "register": 0
1231
- }
1232
- },
1233
- "./node_modules/@umijs/preset-umi/dist/features/overrides/overrides": {
1234
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1235
- "type": "plugin",
1236
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/overrides/overrides.js",
1237
- "id": "./node_modules/@umijs/preset-umi/dist/features/overrides/overrides",
1238
- "key": "overrides",
1239
- "config": {},
1240
- "time": {
1241
- "hooks": {},
1242
- "register": 0
1243
- },
1244
- "enableBy": "register"
1245
- },
1246
- "./node_modules/@umijs/preset-umi/dist/features/phantomDependency/phantomDependency": {
1247
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1248
- "type": "plugin",
1249
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/phantomDependency/phantomDependency.js",
1250
- "id": "./node_modules/@umijs/preset-umi/dist/features/phantomDependency/phantomDependency",
1251
- "key": "phantomDependency",
1252
- "config": {},
1253
- "time": {
1254
- "hooks": {},
1255
- "register": 1
1256
- },
1257
- "enableBy": "config"
1258
- },
1259
- "./node_modules/@umijs/preset-umi/dist/features/polyfill/polyfill": {
1260
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1261
- "type": "plugin",
1262
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/polyfill/polyfill.js",
1263
- "id": "./node_modules/@umijs/preset-umi/dist/features/polyfill/polyfill",
1264
- "key": "polyfill",
1265
- "config": {},
1266
- "time": {
1267
- "hooks": {
1268
- "modifyConfig": [
1269
- 0
1270
- ]
1271
- },
1272
- "register": 1
1273
- }
1274
- },
1275
- "./node_modules/@umijs/preset-umi/dist/features/polyfill/publicPathPolyfill": {
1276
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1277
- "type": "plugin",
1278
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/polyfill/publicPathPolyfill.js",
1279
- "id": "./node_modules/@umijs/preset-umi/dist/features/polyfill/publicPathPolyfill",
1280
- "key": "publicPathPolyfill",
1281
- "config": {},
1282
- "time": {
1283
- "hooks": {},
1284
- "register": 1
1285
- },
1286
- "enableBy": "register"
1287
- },
1288
- "./node_modules/@umijs/preset-umi/dist/features/prepare/prepare": {
1289
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1290
- "type": "plugin",
1291
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/prepare/prepare.js",
1292
- "id": "./node_modules/@umijs/preset-umi/dist/features/prepare/prepare",
1293
- "key": "prepare",
1294
- "config": {},
1295
- "time": {
1296
- "hooks": {},
1297
- "register": 1
1298
- },
1299
- "enableBy": "register"
1300
- },
1301
- "./node_modules/@umijs/preset-umi/dist/features/routePrefetch/routePrefetch": {
1302
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1303
- "type": "plugin",
1304
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/routePrefetch/routePrefetch.js",
1305
- "id": "./node_modules/@umijs/preset-umi/dist/features/routePrefetch/routePrefetch",
1306
- "key": "routePrefetch",
1307
- "config": {},
1308
- "time": {
1309
- "hooks": {},
1310
- "register": 0
1311
- },
1312
- "enableBy": "config"
1313
- },
1314
- "./node_modules/@umijs/preset-umi/dist/features/stagewise/stagewise": {
1315
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1316
- "type": "plugin",
1317
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/stagewise/stagewise.js",
1318
- "id": "./node_modules/@umijs/preset-umi/dist/features/stagewise/stagewise",
1319
- "key": "stagewise",
1320
- "config": {},
1321
- "time": {
1322
- "hooks": {},
1323
- "register": 1
1324
- },
1325
- "enableBy": "config"
1326
- },
1327
- "./node_modules/@umijs/preset-umi/dist/features/terminal/terminal": {
1328
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1329
- "type": "plugin",
1330
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/terminal/terminal.js",
1331
- "id": "./node_modules/@umijs/preset-umi/dist/features/terminal/terminal",
1332
- "key": "terminal",
1333
- "config": {},
1334
- "time": {
1335
- "hooks": {},
1336
- "register": 0
1337
- },
1338
- "enableBy": "register"
1339
- },
1340
- "./node_modules/@umijs/preset-umi/dist/features/tmpFiles/tmpFiles": {
1341
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1342
- "type": "plugin",
1343
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/tmpFiles/tmpFiles.js",
1344
- "id": "./node_modules/@umijs/preset-umi/dist/features/tmpFiles/tmpFiles",
1345
- "key": "tmpFiles",
1346
- "config": {},
1347
- "time": {
1348
- "hooks": {},
1349
- "register": 3
1350
- },
1351
- "enableBy": "register"
1352
- },
1353
- "./node_modules/@umijs/preset-umi/dist/features/clientLoader/clientLoader": {
1354
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1355
- "type": "plugin",
1356
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/clientLoader/clientLoader.js",
1357
- "id": "./node_modules/@umijs/preset-umi/dist/features/clientLoader/clientLoader",
1358
- "key": "clientLoader",
1359
- "config": {},
1360
- "time": {
1361
- "hooks": {},
1362
- "register": 1
1363
- },
1364
- "enableBy": "config"
1365
- },
1366
- "./node_modules/@umijs/preset-umi/dist/features/routeProps/routeProps": {
1367
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1368
- "type": "plugin",
1369
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/routeProps/routeProps.js",
1370
- "id": "./node_modules/@umijs/preset-umi/dist/features/routeProps/routeProps",
1371
- "key": "routeProps",
1372
- "config": {},
1373
- "time": {
1374
- "hooks": {},
1375
- "register": 1
1376
- }
1377
- },
1378
- "./node_modules/@umijs/preset-umi/dist/features/ssr/ssr": {
1379
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1380
- "type": "plugin",
1381
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/ssr/ssr.js",
1382
- "id": "./node_modules/@umijs/preset-umi/dist/features/ssr/ssr",
1383
- "key": "ssr",
1384
- "config": {},
1385
- "time": {
1386
- "hooks": {},
1387
- "register": 1
1388
- },
1389
- "enableBy": "config"
1390
- },
1391
- "./node_modules/@umijs/preset-umi/dist/features/tmpFiles/configTypes": {
1392
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1393
- "type": "plugin",
1394
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/tmpFiles/configTypes.js",
1395
- "id": "./node_modules/@umijs/preset-umi/dist/features/tmpFiles/configTypes",
1396
- "key": "configTypes",
1397
- "config": {},
1398
- "time": {
1399
- "hooks": {},
1400
- "register": 1
1401
- },
1402
- "enableBy": "register"
1403
- },
1404
- "./node_modules/@umijs/preset-umi/dist/features/transform/transform": {
1405
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1406
- "type": "plugin",
1407
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/transform/transform.js",
1408
- "id": "./node_modules/@umijs/preset-umi/dist/features/transform/transform",
1409
- "key": "transform",
1410
- "config": {},
1411
- "time": {
1412
- "hooks": {},
1413
- "register": 4
1414
- },
1415
- "enableBy": "register"
1416
- },
1417
- "./node_modules/@umijs/preset-umi/dist/features/lowImport/lowImport": {
1418
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1419
- "type": "plugin",
1420
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/lowImport/lowImport.js",
1421
- "id": "./node_modules/@umijs/preset-umi/dist/features/lowImport/lowImport",
1422
- "key": "lowImport",
1423
- "config": {},
1424
- "time": {
1425
- "hooks": {},
1426
- "register": 4
1427
- },
1428
- "enableBy": "config"
1429
- },
1430
- "./node_modules/@umijs/preset-umi/dist/features/vite/vite": {
1431
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1432
- "type": "plugin",
1433
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/vite/vite.js",
1434
- "id": "./node_modules/@umijs/preset-umi/dist/features/vite/vite",
1435
- "key": "vite",
1436
- "config": {},
1437
- "time": {
1438
- "hooks": {},
1439
- "register": 1
1440
- },
1441
- "enableBy": "config"
1442
- },
1443
- "./node_modules/@umijs/preset-umi/dist/features/apiRoute/apiRoute": {
1444
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1445
- "type": "plugin",
1446
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/apiRoute/apiRoute.js",
1447
- "id": "./node_modules/@umijs/preset-umi/dist/features/apiRoute/apiRoute",
1448
- "key": "apiRoute",
1449
- "config": {},
1450
- "time": {
1451
- "hooks": {},
1452
- "register": 4
1453
- }
1454
- },
1455
- "./node_modules/@umijs/preset-umi/dist/features/monorepo/redirect": {
1456
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1457
- "type": "plugin",
1458
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/monorepo/redirect.js",
1459
- "id": "./node_modules/@umijs/preset-umi/dist/features/monorepo/redirect",
1460
- "key": "monorepoRedirect",
1461
- "config": {},
1462
- "time": {
1463
- "hooks": {},
1464
- "register": 26
1465
- },
1466
- "enableBy": "config"
1467
- },
1468
- "./node_modules/@umijs/preset-umi/dist/features/test/test": {
1469
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1470
- "type": "plugin",
1471
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/test/test.js",
1472
- "id": "./node_modules/@umijs/preset-umi/dist/features/test/test",
1473
- "key": "test",
1474
- "config": {},
1475
- "time": {
1476
- "hooks": {},
1477
- "register": 1
1478
- }
1479
- },
1480
- "./node_modules/@umijs/preset-umi/dist/features/clickToComponent/clickToComponent": {
1481
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1482
- "type": "plugin",
1483
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/clickToComponent/clickToComponent.js",
1484
- "id": "./node_modules/@umijs/preset-umi/dist/features/clickToComponent/clickToComponent",
1485
- "key": "clickToComponent",
1486
- "config": {},
1487
- "time": {
1488
- "hooks": {},
1489
- "register": 1
1490
- }
1491
- },
1492
- "./node_modules/@umijs/preset-umi/dist/features/legacy/legacy": {
1493
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1494
- "type": "plugin",
1495
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/legacy/legacy.js",
1496
- "id": "./node_modules/@umijs/preset-umi/dist/features/legacy/legacy",
1497
- "key": "legacy",
1498
- "config": {},
1499
- "time": {
1500
- "hooks": {},
1501
- "register": 1
1502
- },
1503
- "enableBy": "config"
1504
- },
1505
- "./node_modules/@umijs/preset-umi/dist/features/classPropertiesLoose/classPropertiesLoose": {
1506
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1507
- "type": "plugin",
1508
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/classPropertiesLoose/classPropertiesLoose.js",
1509
- "id": "./node_modules/@umijs/preset-umi/dist/features/classPropertiesLoose/classPropertiesLoose",
1510
- "key": "classPropertiesLoose",
1511
- "config": {},
1512
- "time": {
1513
- "hooks": {},
1514
- "register": 0
1515
- },
1516
- "enableBy": "config"
1517
- },
1518
- "./node_modules/@umijs/preset-umi/dist/features/webpack/webpack": {
1519
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1520
- "type": "plugin",
1521
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/webpack/webpack.js",
1522
- "id": "./node_modules/@umijs/preset-umi/dist/features/webpack/webpack",
1523
- "key": "preset-umi:webpack",
1524
- "config": {},
1525
- "time": {
1526
- "hooks": {},
1527
- "register": 1
1528
- }
1529
- },
1530
- "./node_modules/@umijs/preset-umi/dist/features/swc/swc": {
1531
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1532
- "type": "plugin",
1533
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/swc/swc.js",
1534
- "id": "./node_modules/@umijs/preset-umi/dist/features/swc/swc",
1535
- "key": "swc",
1536
- "config": {},
1537
- "time": {
1538
- "hooks": {
1539
- "addOnDemandDeps": [
1540
- 0
1541
- ]
1542
- },
1543
- "register": 0
1544
- },
1545
- "enableBy": "register"
1546
- },
1547
- "./node_modules/@umijs/preset-umi/dist/features/ui/ui": {
1548
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1549
- "type": "plugin",
1550
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/ui/ui.js",
1551
- "id": "./node_modules/@umijs/preset-umi/dist/features/ui/ui",
1552
- "key": "ui",
1553
- "config": {},
1554
- "time": {
1555
- "hooks": {},
1556
- "register": 3
1557
- }
1558
- },
1559
- "./node_modules/@umijs/preset-umi/dist/features/mako/mako": {
1560
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1561
- "type": "plugin",
1562
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/mako/mako.js",
1563
- "id": "./node_modules/@umijs/preset-umi/dist/features/mako/mako",
1564
- "key": "mako",
1565
- "config": {},
1566
- "time": {
1567
- "hooks": {},
1568
- "register": 0
1569
- },
1570
- "enableBy": "config"
1571
- },
1572
- "./node_modules/@umijs/preset-umi/dist/features/utoopack/utoopack": {
1573
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1574
- "type": "plugin",
1575
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/utoopack/utoopack.js",
1576
- "id": "./node_modules/@umijs/preset-umi/dist/features/utoopack/utoopack",
1577
- "key": "utoopack",
1578
- "config": {},
1579
- "time": {
1580
- "hooks": {},
1581
- "register": 1
1582
- }
1583
- },
1584
- "./node_modules/@umijs/preset-umi/dist/features/hmrGuardian/hmrGuardian": {
1585
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1586
- "type": "plugin",
1587
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/hmrGuardian/hmrGuardian.js",
1588
- "id": "./node_modules/@umijs/preset-umi/dist/features/hmrGuardian/hmrGuardian",
1589
- "key": "hmrGuardian",
1590
- "config": {},
1591
- "time": {
1592
- "hooks": {},
1593
- "register": 2
1594
- }
1595
- },
1596
- "./node_modules/@umijs/preset-umi/dist/features/routePreloadOnLoad/routePreloadOnLoad": {
1597
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1598
- "type": "plugin",
1599
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/routePreloadOnLoad/routePreloadOnLoad.js",
1600
- "id": "./node_modules/@umijs/preset-umi/dist/features/routePreloadOnLoad/routePreloadOnLoad",
1601
- "key": "routePreloadOnLoad",
1602
- "config": {},
1603
- "time": {
1604
- "hooks": {},
1605
- "register": 32
1606
- }
1607
- },
1608
- "./node_modules/@umijs/preset-umi/dist/features/forget/forget": {
1609
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1610
- "type": "plugin",
1611
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/forget/forget.js",
1612
- "id": "./node_modules/@umijs/preset-umi/dist/features/forget/forget",
1613
- "key": "forget",
1614
- "config": {},
1615
- "time": {
1616
- "hooks": {},
1617
- "register": 1
1618
- },
1619
- "enableBy": "config"
1620
- },
1621
- "./node_modules/@umijs/preset-umi/dist/features/bundler/bundler": {
1622
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1623
- "type": "plugin",
1624
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/features/bundler/bundler.js",
1625
- "id": "./node_modules/@umijs/preset-umi/dist/features/bundler/bundler",
1626
- "key": "preset-umi:bundler",
1627
- "config": {},
1628
- "time": {
1629
- "hooks": {},
1630
- "register": 2
1631
- },
1632
- "enableBy": "register"
1633
- },
1634
- "./node_modules/@umijs/preset-umi/dist/commands/build": {
1635
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1636
- "type": "plugin",
1637
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/commands/build.js",
1638
- "id": "./node_modules/@umijs/preset-umi/dist/commands/build",
1639
- "key": "build",
1640
- "config": {},
1641
- "time": {
1642
- "hooks": {},
1643
- "register": 3
1644
- },
1645
- "enableBy": "register"
1646
- },
1647
- "./node_modules/@umijs/preset-umi/dist/commands/config/config": {
1648
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1649
- "type": "plugin",
1650
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/commands/config/config.js",
1651
- "id": "./node_modules/@umijs/preset-umi/dist/commands/config/config",
1652
- "key": "config",
1653
- "config": {},
1654
- "time": {
1655
- "hooks": {},
1656
- "register": 46
1657
- },
1658
- "enableBy": "register"
1659
- },
1660
- "./node_modules/@umijs/preset-umi/dist/commands/dev/dev": {
1661
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1662
- "type": "plugin",
1663
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/commands/dev/dev.js",
1664
- "id": "./node_modules/@umijs/preset-umi/dist/commands/dev/dev",
1665
- "key": "dev",
1666
- "config": {},
1667
- "time": {
1668
- "hooks": {},
1669
- "register": 16
1670
- }
1671
- },
1672
- "./node_modules/@umijs/preset-umi/dist/commands/help": {
1673
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1674
- "type": "plugin",
1675
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/commands/help.js",
1676
- "id": "./node_modules/@umijs/preset-umi/dist/commands/help",
1677
- "key": "help",
1678
- "config": {},
1679
- "time": {
1680
- "hooks": {},
1681
- "register": 1
1682
- },
1683
- "enableBy": "register"
1684
- },
1685
- "./node_modules/@umijs/preset-umi/dist/commands/lint": {
1686
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1687
- "type": "plugin",
1688
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/commands/lint.js",
1689
- "id": "./node_modules/@umijs/preset-umi/dist/commands/lint",
1690
- "key": "lint",
1691
- "config": {},
1692
- "time": {
1693
- "hooks": {},
1694
- "register": 0
1695
- },
1696
- "enableBy": "register"
1697
- },
1698
- "./node_modules/@umijs/preset-umi/dist/commands/setup": {
1699
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1700
- "type": "plugin",
1701
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/commands/setup.js",
1702
- "id": "./node_modules/@umijs/preset-umi/dist/commands/setup",
1703
- "key": "setup",
1704
- "config": {},
1705
- "time": {
1706
- "hooks": {},
1707
- "register": 0
1708
- },
1709
- "enableBy": "register"
1710
- },
1711
- "./node_modules/@umijs/preset-umi/dist/commands/deadcode": {
1712
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1713
- "type": "plugin",
1714
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/commands/deadcode.js",
1715
- "id": "./node_modules/@umijs/preset-umi/dist/commands/deadcode",
1716
- "key": "deadcode",
1717
- "config": {},
1718
- "time": {
1719
- "hooks": {},
1720
- "register": 1
1721
- },
1722
- "enableBy": "register"
1723
- },
1724
- "./node_modules/@umijs/preset-umi/dist/commands/version": {
1725
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1726
- "type": "plugin",
1727
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/commands/version.js",
1728
- "id": "./node_modules/@umijs/preset-umi/dist/commands/version",
1729
- "key": "version",
1730
- "config": {},
1731
- "time": {
1732
- "hooks": {},
1733
- "register": 0
1734
- },
1735
- "enableBy": "register"
1736
- },
1737
- "./node_modules/@umijs/preset-umi/dist/commands/generators/page": {
1738
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1739
- "type": "plugin",
1740
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/commands/generators/page.js",
1741
- "id": "./node_modules/@umijs/preset-umi/dist/commands/generators/page",
1742
- "key": "generator:page",
1743
- "config": {},
1744
- "time": {
1745
- "hooks": {},
1746
- "register": 2
1747
- },
1748
- "enableBy": "register"
1749
- },
1750
- "./node_modules/@umijs/preset-umi/dist/commands/generators/prettier": {
1751
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1752
- "type": "plugin",
1753
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/commands/generators/prettier.js",
1754
- "id": "./node_modules/@umijs/preset-umi/dist/commands/generators/prettier",
1755
- "key": "generator:prettier",
1756
- "config": {},
1757
- "time": {
1758
- "hooks": {},
1759
- "register": 0
1760
- },
1761
- "enableBy": "register"
1762
- },
1763
- "./node_modules/@umijs/preset-umi/dist/commands/generators/tsconfig": {
1764
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1765
- "type": "plugin",
1766
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/commands/generators/tsconfig.js",
1767
- "id": "./node_modules/@umijs/preset-umi/dist/commands/generators/tsconfig",
1768
- "key": "generator:tsconfig",
1769
- "config": {},
1770
- "time": {
1771
- "hooks": {},
1772
- "register": 1
1773
- },
1774
- "enableBy": "register"
1775
- },
1776
- "./node_modules/@umijs/preset-umi/dist/commands/generators/jest": {
1777
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1778
- "type": "plugin",
1779
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/commands/generators/jest.js",
1780
- "id": "./node_modules/@umijs/preset-umi/dist/commands/generators/jest",
1781
- "key": "generator:jest",
1782
- "config": {},
1783
- "time": {
1784
- "hooks": {},
1785
- "register": 0
1786
- },
1787
- "enableBy": "register"
1788
- },
1789
- "./node_modules/@umijs/preset-umi/dist/commands/generators/tailwindcss": {
1790
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1791
- "type": "plugin",
1792
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/commands/generators/tailwindcss.js",
1793
- "id": "./node_modules/@umijs/preset-umi/dist/commands/generators/tailwindcss",
1794
- "key": "generator:tailwindcss",
1795
- "config": {},
1796
- "time": {
1797
- "hooks": {},
1798
- "register": 0
1799
- },
1800
- "enableBy": "register"
1801
- },
1802
- "./node_modules/@umijs/preset-umi/dist/commands/generators/dva": {
1803
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1804
- "type": "plugin",
1805
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/commands/generators/dva.js",
1806
- "id": "./node_modules/@umijs/preset-umi/dist/commands/generators/dva",
1807
- "key": "generator:dva",
1808
- "config": {},
1809
- "time": {
1810
- "hooks": {},
1811
- "register": 0
1812
- },
1813
- "enableBy": "register"
1814
- },
1815
- "./node_modules/@umijs/preset-umi/dist/commands/generators/component": {
1816
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1817
- "type": "plugin",
1818
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/commands/generators/component.js",
1819
- "id": "./node_modules/@umijs/preset-umi/dist/commands/generators/component",
1820
- "key": "generator:component",
1821
- "config": {},
1822
- "time": {
1823
- "hooks": {},
1824
- "register": 0
1825
- },
1826
- "enableBy": "register"
1827
- },
1828
- "./node_modules/@umijs/preset-umi/dist/commands/generators/mock": {
1829
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1830
- "type": "plugin",
1831
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/commands/generators/mock.js",
1832
- "id": "./node_modules/@umijs/preset-umi/dist/commands/generators/mock",
1833
- "key": "generator:mock",
1834
- "config": {},
1835
- "time": {
1836
- "hooks": {},
1837
- "register": 1
1838
- },
1839
- "enableBy": "register"
1840
- },
1841
- "./node_modules/@umijs/preset-umi/dist/commands/generators/cypress": {
1842
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1843
- "type": "plugin",
1844
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/commands/generators/cypress.js",
1845
- "id": "./node_modules/@umijs/preset-umi/dist/commands/generators/cypress",
1846
- "key": "generator:cypress",
1847
- "config": {},
1848
- "time": {
1849
- "hooks": {},
1850
- "register": 0
1851
- },
1852
- "enableBy": "register"
1853
- },
1854
- "./node_modules/@umijs/preset-umi/dist/commands/generators/api": {
1855
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1856
- "type": "plugin",
1857
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/commands/generators/api.js",
1858
- "id": "./node_modules/@umijs/preset-umi/dist/commands/generators/api",
1859
- "key": "generator:api",
1860
- "config": {},
1861
- "time": {
1862
- "hooks": {},
1863
- "register": 1
1864
- },
1865
- "enableBy": "register"
1866
- },
1867
- "./node_modules/@umijs/preset-umi/dist/commands/generators/precommit": {
1868
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1869
- "type": "plugin",
1870
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/commands/generators/precommit.js",
1871
- "id": "./node_modules/@umijs/preset-umi/dist/commands/generators/precommit",
1872
- "key": "generator:precommit",
1873
- "config": {},
1874
- "time": {
1875
- "hooks": {},
1876
- "register": 0
1877
- },
1878
- "enableBy": "register"
1879
- },
1880
- "./node_modules/@umijs/preset-umi/dist/commands/plugin": {
1881
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1882
- "type": "plugin",
1883
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/commands/plugin.js",
1884
- "id": "./node_modules/@umijs/preset-umi/dist/commands/plugin",
1885
- "key": "command:plugin",
1886
- "config": {},
1887
- "time": {
1888
- "hooks": {},
1889
- "register": 0
1890
- },
1891
- "enableBy": "register"
1892
- },
1893
- "./node_modules/@umijs/preset-umi/dist/commands/verify-commit": {
1894
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1895
- "type": "plugin",
1896
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/commands/verify-commit.js",
1897
- "id": "./node_modules/@umijs/preset-umi/dist/commands/verify-commit",
1898
- "key": "verifyCommit",
1899
- "config": {},
1900
- "time": {
1901
- "hooks": {},
1902
- "register": 1
1903
- },
1904
- "enableBy": "register"
1905
- },
1906
- "./node_modules/@umijs/preset-umi/dist/commands/preview": {
1907
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1908
- "type": "plugin",
1909
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/commands/preview.js",
1910
- "id": "./node_modules/@umijs/preset-umi/dist/commands/preview",
1911
- "key": "preview",
1912
- "config": {},
1913
- "time": {
1914
- "hooks": {},
1915
- "register": 21
1916
- },
1917
- "enableBy": "register"
1918
- },
1919
- "./node_modules/@umijs/preset-umi/dist/commands/mfsu/mfsu": {
1920
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1921
- "type": "plugin",
1922
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/dist/commands/mfsu/mfsu.js",
1923
- "id": "./node_modules/@umijs/preset-umi/dist/commands/mfsu/mfsu",
1924
- "key": "mfsu-cli",
1925
- "config": {},
1926
- "time": {
1927
- "hooks": {},
1928
- "register": 1
1929
- },
1930
- "enableBy": "register"
1931
- },
1932
- "@umijs/plugin-run": {
1933
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1934
- "type": "plugin",
1935
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/plugin-run/dist/index.js",
1936
- "id": "@umijs/plugin-run",
1937
- "key": "run",
1938
- "config": {},
1939
- "time": {
1940
- "hooks": {},
1941
- "register": 1
1942
- },
1943
- "enableBy": "register"
1944
- },
1945
- "./node_modules/@umijs/core/dist/service/generatePlugin": {
1946
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1947
- "type": "plugin",
1948
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/core/dist/service/generatePlugin.js",
1949
- "id": "./node_modules/@umijs/core/dist/service/generatePlugin",
1950
- "key": "generatePlugin",
1951
- "config": {},
1952
- "time": {
1953
- "hooks": {},
1954
- "register": 1
1955
- },
1956
- "enableBy": "register"
1957
- },
1958
- "./config/common-plugin": {
1959
- "cwd": "/home/runner/work/open-admin/open-admin/web",
1960
- "type": "plugin",
1961
- "path": "/home/runner/work/open-admin/open-admin/web/config/common-plugin.js",
1962
- "id": "./config/common-plugin",
1963
- "key": "open-admin",
1964
- "config": {},
1965
- "time": {
1966
- "hooks": {
1967
- "modifyConfig": [
1968
- 0
1969
- ]
1970
- },
1971
- "register": 5
1972
- },
1973
- "enableBy": "register"
1974
- }
1975
- },
1976
- "presets": [],
1977
- "name": "build",
1978
- "args": {
1979
- "_": []
1980
- },
1981
- "userConfig": {
1982
- "plugins": [
1983
- "./config/common-plugin"
1984
- ]
1985
- },
1986
- "mainConfigFile": "/home/runner/work/open-admin/open-admin/web/config/config.js",
1987
- "config": {
1988
- "routeLoader": {
1989
- "moduleType": "esm"
1990
- },
1991
- "mountElementId": "root",
1992
- "history": {
1993
- "type": "hash"
1994
- },
1995
- "base": "/",
1996
- "svgr": {},
1997
- "publicPath": "./",
1998
- "mfsu": false,
1999
- "ignoreMomentLocale": true,
2000
- "externals": {},
2001
- "autoCSSModules": true,
2002
- "alias": {
2003
- "umi": "@@/exports",
2004
- "react": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/node_modules/react",
2005
- "react-dom": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/node_modules/react-dom",
2006
- "react-router": "/home/runner/work/open-admin/open-admin/web/node_modules/react-router",
2007
- "react-router-dom": "/home/runner/work/open-admin/open-admin/web/node_modules/react-router-dom",
2008
- "@": "/home/runner/work/open-admin/open-admin/web/src",
2009
- "@@": "/home/runner/work/open-admin/open-admin/web/src/.umi-production",
2010
- "regenerator-runtime": "/home/runner/work/open-admin/open-admin/web/node_modules/regenerator-runtime"
2011
- },
2012
- "plugins": [
2013
- "./config/common-plugin"
2014
- ],
2015
- "targets": {
2016
- "chrome": 80
2017
- },
2018
- "define": {
2019
- "SERVLET_CONTEXT": "/change-this-servlet-context"
2020
- },
2021
- "hash": true,
2022
- "esbuildMinifyIIFE": true,
2023
- "proxy": {
2024
- "/change-this-servlet-context": {
2025
- "target": "http://127.0.0.1:8080",
2026
- "changeOrigin": true,
2027
- "ws": true
2028
- }
2029
- }
2030
- },
2031
- "routes": {
2032
- "404": {
2033
- "path": "*",
2034
- "id": "404",
2035
- "parentId": "@@/global-layout",
2036
- "file": "404.jsx",
2037
- "absPath": "/*",
2038
- "__content": "import React from \"react\";\nimport {Result} from \"antd\";\nimport {Page} from \"../framework\";\n\nexport default class extends React.Component {\n\n render() {\n return <Page>\n <Result\n status={404}\n title='页面不存在'\n />\n </Page>\n }\n}\n",
2039
- "__isJSFile": true,
2040
- "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/404.jsx"
2041
- },
2042
- "account/changePassword": {
2043
- "path": "account/changePassword",
2044
- "id": "account/changePassword",
2045
- "parentId": "@@/global-layout",
2046
- "file": "account/changePassword.jsx",
2047
- "absPath": "/account/changePassword",
2048
- "__content": "import React from \"react\";\nimport {Button, Form, Input, Modal} from \"antd\";\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/update-pwd', values).then(() => {\n Modal.success({\n title: '提示',\n content: '修改密码成功',\n onOk: () => {\n history.push('/login')\n }\n })\n })\n }\n\n validator = (rule, value) => {\n return new Promise((resolve, reject) => {\n HttpUtils.get(\"admin/sysUser/pwd-strength\", {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",
2049
- "__isJSFile": true,
2050
- "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/account/changePassword.jsx"
2051
- },
2052
- "system/role/rolePerm": {
2053
- "path": "system/role/rolePerm",
2054
- "id": "system/role/rolePerm",
2055
- "parentId": "@@/global-layout",
2056
- "file": "system/role/rolePerm.jsx",
2057
- "absPath": "/system/role/rolePerm",
2058
- "__content": "import React from \"react\";\nimport {Button, Card, Checkbox, Table, Typography} from \"antd\";\nimport {SaveOutlined} from \"@ant-design/icons\";\nimport {HttpUtils, Page, 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 const 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/perm-tree-table', {id: this.roleId}).then(rs => {\n this.setState({dataSource: rs})\n }),\n HttpUtils.get('admin/sysRole/own-perms', {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 perms.push(...ks)\n }\n HttpUtils.post('admin/sysRole/save-perms', {id: this.roleId, perms, menus}).then(rs => {\n // Page.open(PageUtils.currentPathname(), PageUtils.currentLabel())\n })\n };\n\n\n render() {\n return <Page title=\"角色权限设置\" description=\"设置角色的菜单和权限\">\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 </Page>\n }\n}\n",
2059
- "__isJSFile": true,
2060
- "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/system/role/rolePerm.jsx"
2061
- },
2062
- "system/user/userPerm": {
2063
- "path": "system/user/userPerm",
2064
- "id": "system/user/userPerm",
2065
- "parentId": "@@/global-layout",
2066
- "file": "system/user/userPerm.jsx",
2067
- "absPath": "/system/user/userPerm",
2068
- "__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/get-perm-info', {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/grant-perm', 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 const {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",
2069
- "__isJSFile": true,
2070
- "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/system/user/userPerm.jsx"
2071
- },
2072
- "system/dict/index": {
2073
- "path": "system/dict",
2074
- "id": "system/dict/index",
2075
- "parentId": "@@/global-layout",
2076
- "file": "system/dict/index.jsx",
2077
- "absPath": "/system/dict",
2078
- "__content": "import {DeleteOutlined, EditOutlined, PlusOutlined} from '@ant-design/icons';\nimport {Button, Card, Descriptions, Empty, Form, Input, InputNumber, Modal, Popconfirm, Splitter, Tree, Tag, TreeSelect, Typography} from 'antd';\nimport React from 'react';\nimport {\n PermActions,\n FieldBoolean,\n FieldDictSelect,\n HttpUtils,\n Page,\n ProTable,\n ViewSwitch,\n} from \"../../../framework\";\n\nexport default class extends React.Component {\n\n state = {\n typeTree: [],\n treeLoading: false,\n selectedType: null,\n selectedTypeCode: null,\n\n formOpen: false,\n formValues: {},\n typeFormOpen: false,\n typeFormValues: {},\n\n }\n\n formRef = React.createRef();\n typeFormRef = React.createRef();\n tableRef = React.createRef();\n\n componentDidMount() {\n this.loadTree()\n }\n\n loadTree = () => {\n this.setState({treeLoading: true})\n HttpUtils.get('admin/dict/type-tree').then(rs => {\n this.setState({typeTree: rs})\n }).finally(() => {\n this.setState({treeLoading: false})\n })\n }\n\n handleTypeAdd = () => {\n this.setState({\n typeFormOpen: true,\n typeFormValues: {pid: this.state.selectedType?.id, enabled: true},\n })\n }\n\n handleTypeEdit = () => {\n const {selectedType} = this.state\n if (!selectedType) return\n this.setState({typeFormOpen: true, typeFormValues: {...selectedType}})\n }\n\n handleTypeDelete = () => {\n const {selectedType} = this.state\n if (!selectedType) return\n HttpUtils.post('admin/dict/type-delete', {id: selectedType.id}).then(() => {\n this.setState({selectedType: null, selectedTypeCode: null})\n this.loadTree()\n })\n }\n\n handleTypeFormFinish = values => {\n const isNew = !values.id\n const url = isNew ? 'admin/dict/type-create' : 'admin/dict/type-update'\n HttpUtils.post(url, values).then(rs => {\n this.setState({typeFormOpen: false})\n this.loadTree()\n })\n }\n\n findNode = (nodes, key) => {\n for (const n of nodes) {\n if (n.id === key) return n\n if (n.children) {\n const found = this.findNode(n.children, key)\n if (found) return found\n }\n }\n return null\n }\n\n getParentLabel = () => {\n const {selectedType, typeTree} = this.state\n if (!selectedType?.pid) return null\n const parent = this.findNode(typeTree, selectedType.pid)\n return parent?.typeLabel || null\n }\n\n onTreeSelect = (selectedKeys) => {\n if (selectedKeys.length === 0) {\n this.setState({selectedType: null, selectedTypeCode: null})\n return\n }\n const node = this.findNode(this.state.typeTree, selectedKeys[0])\n this.setState({\n selectedType: node,\n selectedTypeCode: node?.typeCode || null\n },()=>this.tableRef.current.reload())\n }\n\n handleItemAdd = () => {\n this.setState({formOpen: true, formValues: {typeCode: this.state.selectedTypeCode}})\n }\n\n handleItemEdit = record => {\n this.setState({formOpen: true, formValues: record})\n }\n\n handleItemDelete = row => {\n HttpUtils.post('admin/dict/delete', row).then(rs => {\n this.tableRef.current.reload()\n })\n }\n\n onItemFormFinish = values => {\n const isNew = !values.id\n const url = isNew ? 'admin/dict/create' : 'admin/dict/update'\n HttpUtils.post(url, values).then(rs => {\n this.setState({formOpen: false})\n this.tableRef.current.reload()\n })\n }\n\n columns = [\n {title: '编码', dataIndex: 'code'},\n {title: '标签', dataIndex: 'label'},\n {\n title: '颜色', dataIndex: 'color',\n render(v) {\n if (v) return <Tag color={v.toLowerCase()}>{v}</Tag>\n }\n },\n {\n title: '启用', dataIndex: 'enabled',\n render(v) {\n return <ViewSwitch value={v}/>\n }\n },\n {title: '序号', dataIndex: 'seq'},\n {\n title: '操作', dataIndex: 'option',\n render: (_, record) => {\n return (\n <PermActions>\n <Button size='small' perm='sys-dict:update'\n onClick={() => this.handleItemEdit(record)}>编辑</Button>\n <Popconfirm perm='sys-dict:delete' title='是否确定删除字典项'\n onConfirm={() => this.handleItemDelete(record)}>\n <Button size='small'>删除</Button>\n </Popconfirm>\n </PermActions>\n );\n },\n },\n ]\n\n render() {\n const {selectedType, selectedTypeCode} = this.state\n const hasTypeSelected = selectedType != null && selectedTypeCode != null\n\n return <Page title=\"数据字典\" description=\"管理数据字典类型和字典项\"\n actions={<Button perm='sys-dict:create' icon={<PlusOutlined/>} onClick={this.handleTypeAdd}>新增类型</Button>}>\n <Splitter>\n <Splitter.Panel defaultSize={300} style={{paddingRight: 8}}>\n <Card loading={this.state.treeLoading}\n size='small'\n >\n <Typography.Text strong style={{marginBottom: 8, display: 'block'}}>字典类型</Typography.Text>\n <Tree\n treeData={this.state.typeTree}\n onSelect={this.onTreeSelect}\n fieldNames={{title: 'typeLabel', key: 'id'}}\n showLine\n defaultExpandAll\n blockNode\n />\n {this.state.typeTree.length === 0 && <Empty/>}\n </Card>\n </Splitter.Panel>\n\n <Splitter.Panel style={{paddingLeft: 8}}>\n <Card size='small' style={{marginBottom: 8}}>\n <div style={{display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: 8}}>\n <Typography.Text strong>类型信息</Typography.Text>\n {hasTypeSelected && (\n <span>\n <Button size='small' icon={<EditOutlined/>} perm='sys-dict:update'\n onClick={this.handleTypeEdit} style={{marginRight: 4}}>编辑</Button>\n <Popconfirm perm='sys-dict:delete' title='是否确定删除此类型及其所有子类型和字典项?'\n onConfirm={this.handleTypeDelete}>\n <Button size='small' icon={<DeleteOutlined/>}>删除</Button>\n </Popconfirm>\n </span>\n )}\n </div>\n {hasTypeSelected && <Descriptions size='small' column={3}>\n <Descriptions.Item label=\"名称\">{selectedType.typeLabel}</Descriptions.Item>\n <Descriptions.Item label=\"类型编码\">{selectedType.typeCode}</Descriptions.Item>\n <Descriptions.Item label=\"分类\">{this.getParentLabel() || '-'}</Descriptions.Item>\n <Descriptions.Item label=\"序号\">{selectedType.seq}</Descriptions.Item>\n <Descriptions.Item label=\"启用\"><ViewSwitch value={selectedType.enabled}/></Descriptions.Item>\n </Descriptions>}\n </Card>\n <Card size='small'>\n <div style={{display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: 8}}>\n <Typography.Text strong>字典项</Typography.Text>\n {hasTypeSelected && <Button type='primary' icon={<PlusOutlined/>} onClick={this.handleItemAdd}>新增字典项</Button>}\n </div>\n {hasTypeSelected && <ProTable\n rowKey='uid'\n actionRef={this.tableRef}\n request={(params) => {\n params.typeCode = selectedTypeCode\n return HttpUtils.get('admin/dict/page', params)\n }}\n columns={this.columns}\n />\n }\n </Card>\n </Splitter.Panel>\n </Splitter>\n\n <Modal title={this.state.typeFormValues?.id ? '编辑字典类型' : '新增字典类型'}\n open={this.state.typeFormOpen}\n onOk={() => this.typeFormRef.current.submit()}\n onCancel={() => this.setState({typeFormOpen: false})}\n destroyOnClose\n >\n <Form ref={this.typeFormRef} labelCol={{flex: '100px'}}\n initialValues={this.state.typeFormValues}\n onFinish={this.handleTypeFormFinish}\n >\n <Form.Item name='id' noStyle/>\n <Form.Item label='父类型' name='pid'>\n <TreeSelect treeData={this.state.typeTree}\n fieldNames={{label: 'typeLabel', value: 'id'}}\n allowClear\n />\n </Form.Item>\n <Form.Item label='类型编码' name='typeCode' rules={[{required: true}]}>\n <Input placeholder='举例: orderStatus'/>\n </Form.Item>\n <Form.Item label='类型名称' name='typeLabel' rules={[{required: true}]}>\n <Input placeholder='举例: 订单状态'/>\n </Form.Item>\n <Form.Item label='启用' name='enabled' rules={[{required: true}]}>\n <FieldBoolean/>\n </Form.Item>\n <Form.Item label='序号' name='seq'>\n <InputNumber/>\n </Form.Item>\n </Form>\n </Modal>\n\n <Modal title='编辑字典项'\n open={this.state.formOpen}\n onOk={() => this.formRef.current.submit()}\n onCancel={() => this.setState({formOpen: false})}\n destroyOnClose\n >\n <Form ref={this.formRef} labelCol={{flex: '100px'}}\n initialValues={this.state.formValues}\n onFinish={this.onItemFormFinish}\n >\n <Form.Item name='id' noStyle/>\n <Form.Item label='类型编码' name='typeCode'>\n <Input disabled/>\n </Form.Item>\n <Form.Item label='编码' name='code' rules={[{required: true}]}>\n <Input/>\n </Form.Item>\n <Form.Item label='标签' name='label' rules={[{required: true}]} help='显示文本'>\n <Input/>\n </Form.Item>\n <Form.Item label='颜色' name='color'>\n <FieldDictSelect typeCode='statusColor'/>\n </Form.Item>\n <Form.Item label='序号' name='seq'>\n <InputNumber/>\n </Form.Item>\n <Form.Item label='启用' name='enabled' rules={[{required: true}]}>\n <FieldBoolean/>\n </Form.Item>\n </Form>\n </Modal>\n </Page>\n }\n}\n",
2079
- "__isJSFile": true,
2080
- "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/system/dict/index.jsx"
2081
- },
2082
- "system/file/index": {
2083
- "path": "system/file",
2084
- "id": "system/file/index",
2085
- "parentId": "@@/global-layout",
2086
- "file": "system/file/index.jsx",
2087
- "absPath": "/system/file",
2088
- "__content": "import React from 'react'\nimport {Button, Form, Input, Modal, Popconfirm} from 'antd'\nimport {CloudUploadOutlined} from \"@ant-design/icons\";\n\nimport {PermActions, FieldDateRange, FieldDictSelect, FieldUploadFile, HttpUtils, Page, ProTable, UrlUtils} from \"../../../framework\";\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.post('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={UrlUtils.contextPath('/admin/sysFile/preview/' + record.id)} target='_blank'>预览</a>]\n\n\n if (record.imageUrls?.length > 0) {\n for (let item of record.imageUrls) {\n const url = item.url;\n const 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 <PermActions>\n <Popconfirm perm='sys-file:delete' title='是否确定删除文件信息'\n onConfirm={() => this.handleDelete(record)}>\n <a>删除</a>\n </Popconfirm>\n </PermActions>\n ),\n },\n ]\n\n render() {\n return <Page title=\"文件管理\" description=\"管理系统上传文件\" actions={<Button type='primary' icon={<CloudUploadOutlined/>} onClick={() => this.setState({formOpen: true})}>上传文件</Button>}>\n <ProTable\n actionRef={this.tableRef}\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 </Page>\n }\n}\n\n\n\n",
2089
- "__isJSFile": true,
2090
- "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/system/file/index.jsx"
2091
- },
2092
- "system/role/index": {
2093
- "path": "system/role",
2094
- "id": "system/role/index",
2095
- "parentId": "@@/global-layout",
2096
- "file": "system/role/index.jsx",
2097
- "absPath": "/system/role",
2098
- "__content": "import {PlusOutlined} from '@ant-design/icons'\nimport {Button, Form, Input, InputNumber, Modal, Popconfirm, Select, Transfer, Tree} from 'antd'\nimport React from 'react'\nimport {PermActions, 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/user-list', {id: record.id}).then(rs => {\n this.setState({userList: rs.list, targetKeys: rs.selectedKeys})\n })\n }\n\n onFinish = values => {\n const isNew = !values.id;\n const url = isNew ? 'admin/sysRole/create' : 'admin/sysRole/update';\n HttpUtils.post(url, values).then(rs => {\n this.setState({formOpen: false})\n this.tableRef.current.reload()\n })\n }\n\n handleDelete = record => {\n HttpUtils.post('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 <PermActions>\n <Button size='small' perm='sys-role:grant-permission'\n onClick={() => this.handleEditUser(record)}>用户设置</Button>\n\n <Button size='small' perm='sys-role:grant-permission' disabled={record.builtin}\n onClick={() => PageUtils.open('/system/role/rolePerm?id=' + record.id, '角色权限设置')}>权限设置</Button>\n\n <Button size='small' perm='sys-role:update' disabled={record.builtin}\n onClick={() => this.handleEdit(record)}>编辑</Button>\n <Popconfirm perm='sys-role:delete' disabled={record.builtin} title='是否确定删除系统角色'\n onConfirm={() => this.handleDelete(record)}>\n <Button size='small' disabled={record.builtin}>删除</Button>\n </Popconfirm>\n </PermActions>\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/grant-users', 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 this.setState({menuOpen: false})\n })\n }\n\n render() {\n return <Page\n title=\"角色管理\"\n description=\"管理系统角色,包括角色权限分配、用户设置等\"\n actions={<Button perm='sys-role:create' type='primary' icon={<PlusOutlined/>} onClick={this.handleAdd}>新增</Button>}\n >\n <ProTable\n actionRef={this.tableRef}\n request={(params) => HttpUtils.get('admin/sysRole/page', params)}\n columns={this.columns}\n >\n <Form.Item label='角色名称' name='name'>\n <Input/>\n </Form.Item>\n <Form.Item label='角色编码' name='code'>\n <Input/>\n </Form.Item>\n <Form.Item label='是否内置' name='builtin'>\n <Select allowClear placeholder='全部'>\n <Select.Option value={true}>是</Select.Option>\n <Select.Option value={false}>否</Select.Option>\n </Select>\n </Form.Item>\n </ProTable>\n\n <Modal title='系统角色'\n open={this.state.formOpen}\n onOk={() => this.formRef.current.submit()}\n onCancel={() => this.setState({formOpen: false})}\n destroyOnHidden\n mask={{ closable: 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 mask={{ closable: false }}\n width={800}\n onCancel={() => this.setState({usersModalOpen: false})}\n onOk={this.handleSaveUsers}\n >\n\n\n <Transfer\n styles={{ section: { 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 mask={{ closable: 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",
2099
- "__isJSFile": true,
2100
- "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/system/role/index.jsx"
2101
- },
2102
- "system/user/index": {
2103
- "path": "system/user",
2104
- "id": "system/user/index",
2105
- "parentId": "@@/global-layout",
2106
- "file": "system/user/index.jsx",
2107
- "absPath": "/system/user",
2108
- "__content": "import {PlusOutlined} from '@ant-design/icons';\nimport {Button, Card, Form, Input, Modal, Popconfirm, Select, Splitter} from 'antd';\nimport React from 'react';\nimport {\n PermActions,\n DictUtils,\n FieldBoolean,\n FieldRemoteSelect,\n FieldSysOrgTreeSelect,\n HttpUtils,\n OrgTree,\n Page,\n ProTable,\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 }\n permRef = React.createRef();\n\n formRef = React.createRef()\n tableRef = React.createRef()\n\n resetPwd(row) {\n HttpUtils.post('admin/sysUser/reset-pwd', {id: row.id}).then(rs => {\n Modal.success({\n title: '重置密码成功',\n content: rs\n })\n })\n }\n\n handleDelete = r => {\n HttpUtils.post('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 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 <PermActions>\n <Button size='small' perm='sys-user:update' onClick={() => this.handleEdit(record)}> 编辑 </Button>\n\n <Button size='small' perm='sys-user:grant-permission'\n onClick={() => this.permRef.current.show(record)}> 授权 </Button>\n\n <Popconfirm perm='sys-user:reset-password' title='确认重置密码?' onConfirm={() => this.resetPwd(record)}>\n <Button size='small'>重置密码</Button>\n </Popconfirm>\n\n <Popconfirm perm='sys-user:delete' title={'是否确定删除用户'}\n onConfirm={() => this.handleDelete(record)}>\n <Button size='small'>删除</Button>\n </Popconfirm>\n </PermActions>;\n },\n },\n ];\n\n onFinish = values => {\n const isNew = !values.id;\n const url = isNew ? 'admin/sysUser/create' : 'admin/sysUser/update';\n HttpUtils.post(url, values).then(rs => {\n this.setState({formOpen: false})\n this.tableRef.current.reload()\n })\n }\n\n render() {\n\n return <Page title=\"用户管理\" description=\"管理系统用户\" actions={<Button perm='sys-user:create' type=\"primary\" icon={<PlusOutlined/>} onClick={this.handleAdd}>新增</Button>}>\n <Splitter>\n <Splitter.Panel defaultSize={350} style={{paddingRight: 8}}>\n <Card size='small'>\n <OrgTree onChange={this.onSelectOrg}/>\n </Card>\n </Splitter.Panel>\n <Splitter.Panel style={{paddingLeft: 8}}>\n <ProTable\n searchColumns={3}\n actionRef={this.tableRef}\n request={(params) => {\n params.orgId = this.state.currentOrgId\n return HttpUtils.get('admin/sysUser/page', params)\n }}\n columns={this.columns}\n >\n <Form.Item label='姓名' name='name'>\n <Input/>\n </Form.Item>\n <Form.Item label='登录账号' name='account'>\n <Input/>\n </Form.Item>\n <Form.Item label='手机号' name='phone'>\n <Input/>\n </Form.Item>\n <Form.Item label='角色' name='roleId'>\n <FieldRemoteSelect url='admin/sysRole/options' placeholder='请选择角色'/>\n </Form.Item>\n <Form.Item label='状态' name='enabled'>\n <Select allowClear placeholder='全部'>\n <Select.Option value={true}>启用</Select.Option>\n <Select.Option value={false}>停用</Select.Option>\n </Select>\n </Form.Item>\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",
2109
- "__isJSFile": true,
2110
- "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/system/user/index.jsx"
2111
- },
2112
- "system/job/index": {
2113
- "path": "system/job",
2114
- "id": "system/job/index",
2115
- "parentId": "@@/global-layout",
2116
- "file": "system/job/index.jsx",
2117
- "absPath": "/system/job",
2118
- "__content": "import React from 'react'\nimport {\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 {PlusOutlined} from \"@ant-design/icons\";\nimport {HttpUtils, Page, ProTable, StringUtils, UrlUtils, 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/job-class-options').then(rs => {\n this.setState({jobClassOptions: rs})\n }).catch(e => {\n console.error('[Job] 加载作业类选项失败:', e);\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/get-job-param-fields\", jobData || {}, {className}).then(rs => {\n this.setState({paramList: rs})\n }).catch(e => {\n console.error('[Job] 加载作业参数字段失败:', e);\n })\n }\n\n onFinish = (values) => {\n const isNew = !values.id;\n const url = isNew ? 'admin/job/create' : 'admin/job/update';\n HttpUtils.post(url, values).then(rs => {\n this.setState({formOpen: false})\n this.tableRef.current.reload();\n }).catch(e => {\n console.error('[Job] 保存作业失败:', e);\n })\n }\n\n handleDelete = row => {\n const hide = message.loading(\"删除作业中...\")\n HttpUtils.post('admin/job/delete', {id: row.id}).then(rs => {\n this.tableRef.current.reload();\n }).catch(e => {\n console.error('[Job] 删除作业失败:', e);\n hide();\n })\n }\n\n handleTriggerJob = row => {\n HttpUtils.get('admin/job/trigger-job', {id: row.id}).then(rs => {\n this.tableRef.current.reload();\n }).catch(e => {\n console.error('[Job] 触发作业失败:', e);\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' perm='job:trigger' onClick={() => this.handleTriggerJob(record)}>执行一次</Button>\n <Button size='small' perm='job:update' onClick={() => this.handleEdit(record)}> 编辑 </Button>\n <Popconfirm perm='job:delete' 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 }).catch(e => {\n console.error('[Job] 加载状态失败:', e);\n })\n };\n\n showExecuteRecord(record) {\n this.setState({executeRecordOpen: true, formValues: record})\n }\n\n\n render() {\n return <Page title=\"作业调度\" description=\"管理定时作业任务\" actions={<><Button type='primary' icon={<PlusOutlined/>} onClick={() => this.handleAdd()}>新增</Button><Button onClick={this.showStatus}>查看状态</Button></>}>\n <ProTable\n actionRef={this.tableRef}\n request={(params) => HttpUtils.get('admin/job/page', params)}\n columns={this.columns}\n >\n <Form.Item label='名称' name='name'>\n <Input/>\n </Form.Item>\n <Form.Item label='执行类' name='jobClass'>\n <Input/>\n </Form.Item>\n </ProTable>\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 initialValue={p.defaultValue}\n rules={[{required: p.required}]}>\n {ValueType.renderField(p.componentType, {\n ...p.componentProps,\n placeholder: p.placeholder || '请输入'\n })}\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 title={<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 const url = UrlUtils.contextPath('/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/execute-record', 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 const {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",
2119
- "__isJSFile": true,
2120
- "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/system/job/index.jsx"
2121
- },
2122
- "system/log/index": {
2123
- "path": "system/log",
2124
- "id": "system/log/index",
2125
- "parentId": "@@/global-layout",
2126
- "file": "system/log/index.jsx",
2127
- "absPath": "/system/log",
2128
- "__content": "import React from 'react';\nimport {Form, Input, Tag} from \"antd\";\nimport {ViewText, FieldDateRange, HttpUtils, Page, ProTable} from \"../../../framework\";\n\nexport default class extends React.Component {\n\n\n columns = [\n {\n title: '操作者',\n dataIndex: 'username'\n },\n {\n title: '操作',\n dataIndex: 'operation',\n },\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 <Page title=\"操作日志\" description=\"查看系统操作日志\">\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 </Page>\n }\n\n\n}\n\n\n\n",
2129
- "__isJSFile": true,
2130
- "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/system/log/index.jsx"
2131
- },
2132
- "system/org/index": {
2133
- "path": "system/org",
2134
- "id": "system/org/index",
2135
- "parentId": "@@/global-layout",
2136
- "file": "system/org/index.jsx",
2137
- "absPath": "/system/org",
2138
- "__content": "import {DeleteOutlined, EditOutlined, PlusOutlined, SettingOutlined, SyncOutlined} from '@ant-design/icons';\nimport {Button, Card, Checkbox, Descriptions, Form, Input, InputNumber, Modal, Popconfirm, Popover, Space, Splitter, Switch, Tree, Typography} from 'antd';\nimport React from 'react';\nimport {\n FieldBoolean,\n FieldDictSelect,\n FieldRemoteTreeSelect,\n FieldUserSelect,\n HttpUtils,\n NamedIcon,\n Page,\n ViewSwitch,\n} from \"../../../framework\";\n\nexport default class extends React.Component {\n\n state = {\n selectedOrg: null,\n params: {\n onlyShowEnabled: true,\n onlyShowUnit: false,\n searchText: null,\n },\n treeData: [],\n treeLoading: false,\n draggable: false,\n\n modalOpen: false,\n modalValues: {},\n modalLoading: false,\n }\n formRef = React.createRef();\n treeRef = React.createRef();\n\n componentDidMount() {\n this.loadTree()\n }\n\n loadTree = () => {\n this.setState({treeLoading: true})\n HttpUtils.get('admin/sysOrg/tree', this.state.params).then(rs => {\n this.setState({treeData: rs})\n }).finally(() => {\n this.setState({treeLoading: false});\n })\n }\n\n handleDelete = () => {\n const {selectedOrg} = this.state\n if (!selectedOrg) return\n HttpUtils.post('admin/sysOrg/delete', {id: selectedOrg.id}).then(() => {\n this.setState({selectedOrg: null})\n this.loadTree()\n })\n }\n\n onSelect = (selectedKeys) => {\n if (selectedKeys.length === 0) {\n this.setState({selectedOrg: null})\n return\n }\n HttpUtils.get(\"admin/sysOrg/detail\", {id: selectedKeys[0]}).then(rs => {\n this.setState({selectedOrg: rs})\n })\n }\n\n handleAdd = () => {\n const {selectedOrg} = this.state\n this.setState({\n modalOpen: true,\n modalValues: {pid: selectedOrg?.id, enabled: true},\n })\n }\n\n handleEdit = () => {\n this.setState({\n modalOpen: true,\n modalValues: {...this.state.selectedOrg},\n })\n }\n\n handleModalFinish = (values) => {\n this.setState({modalLoading: true})\n const isNew = !values.id\n const url = isNew ? 'admin/sysOrg/create' : 'admin/sysOrg/update'\n HttpUtils.post(url, values).then(() => {\n this.setState({modalOpen: false})\n this.loadTree()\n }).finally(() => {\n this.setState({modalLoading: false})\n })\n }\n\n onDraggableChange = e => {\n this.setState({draggable: e})\n };\n\n render() {\n const {selectedOrg} = this.state\n const params = this.state.params\n\n return <Page title=\"组织机构\" description=\"管理组织机构树\"\n actions={<Button type='primary' perm='sys-org:create' icon={<PlusOutlined/>} onClick={this.handleAdd}>新增</Button>}>\n <Splitter>\n <Splitter.Panel defaultSize={400} style={{paddingRight: 8}}>\n <Card loading={this.state.treeLoading}\n size='small'\n >\n <div style={{display: 'flex', alignItems: 'center', gap: 4, marginBottom: 8}}>\n <Input.Search placeholder='搜索' value={params.searchText} onChange={e => {\n params.searchText = e.target.value\n this.setState({params}, this.loadTree)\n }} style={{flex: 1}}/>\n <Popover\n trigger='click'\n placement='bottomRight'\n title='设置'\n content={<Space direction='vertical'>\n <Checkbox checked={params.onlyShowEnabled}\n onChange={e => {\n params.onlyShowEnabled = e.target.checked;\n this.setState({params}, this.loadTree);\n }}>仅显示启用</Checkbox>\n <Checkbox checked={params.onlyShowUnit}\n onChange={e => {\n params.onlyShowUnit = e.target.checked;\n this.setState({params}, this.loadTree);\n }}>仅显示单位</Checkbox>\n <div>\n 拖拽排序&nbsp;<Switch\n value={this.state.draggable}\n onChange={this.onDraggableChange}/>\n </div>\n <Button size='small' shape='round' icon={<SyncOutlined/>} onClick={this.loadTree}>刷新</Button>\n </Space>}\n >\n <Button type='text' size='small' icon={<SettingOutlined/>}/>\n </Popover>\n </div>\n <Tree ref={this.treeRef}\n treeData={this.state.treeData}\n onSelect={this.onSelect}\n showIcon\n blockNode\n icon={item => <NamedIcon name={item.data.iconName}/>}\n draggable={this.state.draggable}\n onDrop={this.onDrop}\n showLine\n defaultExpandAll\n />\n </Card>\n </Splitter.Panel>\n\n <Splitter.Panel style={{paddingLeft: 8}}>\n <Card size='small' style={{marginBottom: 8}}>\n <div style={{display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: 8}}>\n <Typography.Text strong>机构信息</Typography.Text>\n {selectedOrg && (\n <span>\n <Button size='small' icon={<EditOutlined/>} perm='sys-org:update'\n onClick={this.handleEdit} style={{marginRight: 4}}>编辑</Button>\n <Popconfirm perm='sys-org:delete' title='是否确定删除组织机构'\n onConfirm={this.handleDelete}>\n <Button size='small' icon={<DeleteOutlined/>}>删除</Button>\n </Popconfirm>\n </span>\n )}\n </div>\n {selectedOrg && (\n <Descriptions size='small' column={2}>\n <Descriptions.Item label=\"名称\">{selectedOrg.name}</Descriptions.Item>\n <Descriptions.Item label=\"类型\">{selectedOrg.typeLabel}</Descriptions.Item>\n <Descriptions.Item label=\"上级机构\">{selectedOrg.parentName || '-'}</Descriptions.Item>\n <Descriptions.Item label=\"序号\">{selectedOrg.seq ?? '-'}</Descriptions.Item>\n <Descriptions.Item label=\"部门领导\">{selectedOrg.leader?.name || '-'}</Descriptions.Item>\n <Descriptions.Item label=\"启用\"><ViewSwitch value={selectedOrg.enabled}/></Descriptions.Item>\n {selectedOrg.extra1 && <Descriptions.Item label=\"扩展字段1\">{selectedOrg.extra1}</Descriptions.Item>}\n {selectedOrg.extra2 && <Descriptions.Item label=\"扩展字段2\">{selectedOrg.extra2}</Descriptions.Item>}\n {selectedOrg.extra3 && <Descriptions.Item label=\"扩展字段3\">{selectedOrg.extra3}</Descriptions.Item>}\n </Descriptions>\n )}\n </Card>\n </Splitter.Panel>\n </Splitter>\n\n <Modal title={this.state.modalValues?.id ? '编辑组织机构' : '新增组织机构'}\n open={this.state.modalOpen}\n onOk={() => this.formRef.current.submit()}\n onCancel={() => this.setState({modalOpen: false})}\n destroyOnClose\n >\n <Form ref={this.formRef} labelCol={{flex: '120px'}}\n initialValues={this.state.modalValues}\n onFinish={this.handleModalFinish}\n >\n <Form.Item name='id' noStyle/>\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 <Form.Item label='序号' name='seq'>\n <InputNumber/>\n </Form.Item>\n <Form.Item label='类型' name='type' rules={[{required: true}]}>\n <FieldDictSelect typeCode='orgType'/>\n </Form.Item>\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 </Form>\n </Modal>\n </Page>\n }\n\n onDrop = (e) => {\n const {dragNode, dropToGap, node} = e;\n const dropKey = node.key;\n const dragKey = dragNode.key;\n const dropPos = e.node.pos.split('-');\n const dropPosition = e.dropPosition - Number(dropPos[dropPos.length - 1]);\n HttpUtils.post('admin/sysOrg/sort', {dropPosition, dropToGap, dropKey, dragKey}).then(this.loadTree)\n };\n}\n\n\n\n",
2139
- "__isJSFile": true,
2140
- "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/system/org/index.jsx"
2141
- },
2142
- "forceUpdatePwd": {
2143
- "path": "forceUpdatePwd",
2144
- "id": "forceUpdatePwd",
2145
- "parentId": "@@/global-layout",
2146
- "file": "forceUpdatePwd.jsx",
2147
- "absPath": "/forceUpdatePwd",
2148
- "__content": "import React from \"react\";\nimport {Button, Form, Input, message} from \"antd\";\nimport {history} from 'umi'\nimport {HttpUtils, PageUtils, GlobalData} from \"../framework\";\n\nexport default class extends React.Component {\n\n state = {\n checking: true\n }\n\n async componentDidMount() {\n try {\n const rs = await HttpUtils.get('/admin/public/user-info', null, {showError: false});\n if (!rs.login) {\n PageUtils.redirectToLogin();\n return;\n }\n GlobalData.setLoginInfo(rs.loginInfo);\n this.setState({checking: false});\n } catch (e) {\n PageUtils.redirectToLogin();\n }\n }\n\n onFinish = (values) => {\n HttpUtils.post('admin/userCenter/update-pwd', values).then(() => {\n message.success('修改密码成功,请重新登录');\n history.push('/login');\n })\n }\n\n validator = (rule, value) => {\n return new Promise((resolve, reject) => {\n HttpUtils.get(\"admin/sysUser/pwd-strength\", {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 render() {\n if (this.state.checking) return null;\n\n return (\n <div style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n minHeight: '100vh',\n background: '#f0f2f5'\n }}>\n <div style={{\n background: '#fff',\n padding: '40px',\n borderRadius: '8px',\n boxShadow: '0 2px 8px rgba(0,0,0,0.1)',\n maxWidth: 400,\n width: '100%'\n }}>\n <h2 style={{textAlign: 'center', marginBottom: 24}}>修改密码</h2>\n <p style={{textAlign: 'center', color: '#999', marginBottom: 24}}>\n 首次登录或密码已被重置,请修改密码后重新登录\n </p>\n <Form onFinish={this.onFinish}>\n <Form.Item name='newPassword'\n label='新密码'\n extra={'请输入字母、数字、特殊字符'}\n rules={[\n {required: true, message: '请输入新密码'},\n {validator: this.validator}\n ]}\n >\n <Input.Password/>\n </Form.Item>\n <Form.Item style={{marginTop: 40}}>\n <Button type=\"primary\" htmlType=\"submit\" block size='large'>\n 确定\n </Button>\n </Form.Item>\n </Form>\n </div>\n </div>\n )\n }\n}\n",
2149
- "__isJSFile": true,
2150
- "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/forceUpdatePwd.jsx"
2151
- },
2152
- "account/index": {
2153
- "path": "account",
2154
- "id": "account/index",
2155
- "parentId": "@@/global-layout",
2156
- "file": "account/index.jsx",
2157
- "absPath": "/account",
2158
- "__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 backgroundGray title=\"个人中心\" description=\"查看和编辑个人资料\">\n\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='oa-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 ]}\n tabPlacement='left'\n >\n </Tabs>\n </Card>\n </Col>\n </Row>\n\n\n </Page>\n\n }\n}\n",
2159
- "__isJSFile": true,
2160
- "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/account/index.jsx"
2161
- },
2162
- "about": {
2163
- "path": "about",
2164
- "id": "about",
2165
- "parentId": "@@/global-layout",
2166
- "file": "about.jsx",
2167
- "absPath": "/about",
2168
- "__content": "import React from \"react\";\nimport {Page} from \"../framework\";\n\nexport default class extends React.Component {\n\n render() {\n return <Page title=\"关于\" description=\"了解系统版本与相关信息\">\n <h1>关于</h1>\n </Page>\n }\n}\n",
2169
- "__isJSFile": true,
2170
- "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/about.jsx"
2171
- },
2172
- "index": {
2173
- "path": "/",
2174
- "id": "index",
2175
- "parentId": "@@/global-layout",
2176
- "file": "index.jsx",
2177
- "absPath": "/",
2178
- "__content": "import React from \"react\";\nimport {Card} from \"antd\";\nimport {Page} from \"../framework\";\n\nexport default function () {\n return <Page title=\"首页\" description=\"欢迎使用本系统\">\n <Card>欢迎使用本系统</Card>\n </Page>\n}\n",
2179
- "__isJSFile": true,
2180
- "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/index.jsx"
2181
- },
2182
- "login": {
2183
- "path": "login",
2184
- "id": "login",
2185
- "parentId": "@@/global-layout",
2186
- "file": "login.jsx",
2187
- "absPath": "/login",
2188
- "__content": "import React from 'react';\nimport {Button, Form, Input, message} from 'antd';\nimport {LockOutlined, UserOutlined, WarningOutlined} from '@ant-design/icons';\nimport {history} from 'umi';\nimport {EventBus, HttpUtils, PageUtils, GlobalData} from \"../framework\";\n\nimport \"./login.less\"\n\nfunction getRedirect() {\n let redirect = PageUtils.currentParams()['redirect'];\n if (redirect) {\n redirect = decodeURIComponent(redirect)\n } else {\n redirect = '/'\n }\n return redirect;\n}\n\nfunction postLogin(values) {\n return new Promise((resolve, reject) => {\n HttpUtils.post('/admin/auth/login', values).then(rs => {\n EventBus.emit('loginSuccess')\n history.push(getRedirect())\n resolve(rs)\n }).catch(e => {\n console.error('[Login] 登录失败:', e);\n reject(e)\n })\n })\n}\n\nfunction encodePassword(pwd) {\n const chars = [];\n for (let i = 0; i < pwd.length; i++)\n chars.push(pwd.charCodeAt(i) + i + 2);\n return btoa(String.fromCharCode(...chars));\n}\n\nexport default class extends React.Component {\n\n state = {\n logging: false,\n siteInfo: {}\n }\n\n async componentDidMount() {\n const siteInfo = GlobalData.getSiteInfo()\n if (siteInfo && siteInfo.title) {\n this.setState({siteInfo})\n return\n }\n // localStorage 中无站点信息,从服务端重新加载\n try {\n const rs = await HttpUtils.get('/admin/public/site-info', null, { showError: false })\n GlobalData.setSiteInfo(rs)\n this.setState({siteInfo: rs})\n } catch (e) {\n console.error('[Login] 加载站点信息失败:', e);\n message.error('加载站点信息失败,请刷新页面重试')\n }\n }\n\n submit = values => {\n this.setState({logging: true})\n values.password = encodePassword(values.password)\n postLogin(values).finally(() => {\n this.setState({logging: false})\n })\n }\n\n render() {\n const {siteInfo} = this.state\n\n const pageStyle = {\n backgroundImage: `url(\"./login_bg.jpg\")`\n }\n\n return (\n <section className='login-page' style={pageStyle}>\n <div className=\"login-content\">\n <h1>{siteInfo.title}</h1>\n {this.getForm(siteInfo)}\n {this.renderFormBottom()}\n </div>\n </section>\n );\n }\n\n getForm = siteInfo => {\n const form = (\n <Form\n name=\"normal_login\"\n className=\"login-form\"\n initialValues={{remember: true}}\n onFinish={this.submit}\n requiredMark={false}\n colon={false}\n >\n <Form.Item name=\"username\" rules={[{required: true, message: '请输入用户名!'}]}>\n <Input size='large' prefix={<UserOutlined/>} placeholder=\"用户名\" autoComplete=\"off\"/>\n </Form.Item>\n <Form.Item name=\"password\" rules={[{required: true, message: '请输入密码!'}]}>\n <Input autoComplete=\"off\" prefix={<LockOutlined/>} type=\"password\" placeholder=\"密码\"\n size='large'\n />\n </Form.Item>\n\n <Form.Item style={{marginTop: 10}}>\n <Button loading={this.state.logging} type=\"primary\" htmlType=\"submit\"\n block size='large'>\n 登录\n </Button>\n </Form.Item>\n </Form>\n );\n\n if (this.props.formRender) {\n return this.props.formRender(form);\n }\n return form;\n };\n\n renderFormBottom() {\n const siteInfo = this.state.siteInfo;\n if (siteInfo.loginBoxBottomTip) {\n return (\n <div style={{color: 'white', marginTop: 50, fontSize: '14px', textAlign: 'center'}}>\n <WarningOutlined/> {siteInfo.loginBoxBottomTip}\n </div>\n )\n }\n }\n}\n",
2189
- "__isJSFile": true,
2190
- "__absFile": "/home/runner/work/open-admin/open-admin/web/src/pages/login.jsx"
2191
- },
2192
- "@@/global-layout": {
2193
- "id": "@@/global-layout",
2194
- "path": "/",
2195
- "file": "/home/runner/work/open-admin/open-admin/web/src/layouts/index.jsx",
2196
- "absPath": "/",
2197
- "isLayout": true,
2198
- "__absFile": "/home/runner/work/open-admin/open-admin/web/src/layouts/index.jsx"
2199
- }
2200
- },
2201
- "apiRoutes": {},
2202
- "hasSrcDir": true,
2203
- "npmClient": "cnpm",
2204
- "umi": {
2205
- "version": "4.6.57",
2206
- "name": "Umi",
2207
- "importSource": "umi",
2208
- "cliName": "umi"
2209
- },
2210
- "bundleStatus": {
2211
- "done": false
2212
- },
2213
- "react": {
2214
- "version": "18.3.1",
2215
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/node_modules/react"
2216
- },
2217
- "react-dom": {
2218
- "version": "18.3.1",
2219
- "path": "/home/runner/work/open-admin/open-admin/web/node_modules/@umijs/preset-umi/node_modules/react-dom"
2220
- },
2221
- "appJS": null,
2222
- "locale": "C",
2223
- "globalCSS": [],
2224
- "globalJS": [],
2225
- "overridesCSS": [],
2226
- "globalLoading": "/home/runner/work/open-admin/open-admin/web/src/loading.jsx",
2227
- "bundler": "webpack",
2228
- "git": {
2229
- "originUrl": "https://github.com/jiangood/open-admin"
2230
- },
2231
- "framework": "react",
2232
- "typescript": {
2233
- "tsVersion": "6.0.3",
2234
- "tslibVersion": "2.8.1"
2235
- },
2236
- "faviconFiles": []
2237
- }