smart-admin-web 10.5.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 (718) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +78 -0
  3. package/dist/App.vue.d.ts +3 -0
  4. package/dist/App.vue.js +54 -0
  5. package/dist/App.vue.js.map +1 -0
  6. package/dist/App2.vue.js +5 -0
  7. package/dist/App2.vue.js.map +1 -0
  8. package/dist/_virtual/_plugin-vue_export-helper.js +10 -0
  9. package/dist/_virtual/_plugin-vue_export-helper.js.map +1 -0
  10. package/dist/api/client.d.ts +29 -0
  11. package/dist/api/client.js +139 -0
  12. package/dist/api/client.js.map +1 -0
  13. package/dist/api/index.d.ts +672 -0
  14. package/dist/api/index.js +638 -0
  15. package/dist/api/index.js.map +1 -0
  16. package/dist/api/reauthGate.d.ts +16 -0
  17. package/dist/api/reauthGate.js +21 -0
  18. package/dist/api/reauthGate.js.map +1 -0
  19. package/dist/api/schema.d.ts +10230 -0
  20. package/dist/assets/icons/ph-subset.json.js +16 -0
  21. package/dist/assets/icons/ph-subset.json.js.map +1 -0
  22. package/dist/assets/oauth/dingtalk.svg.js +5 -0
  23. package/dist/assets/oauth/dingtalk.svg.js.map +1 -0
  24. package/dist/assets/oauth/gitee.svg.js +5 -0
  25. package/dist/assets/oauth/gitee.svg.js.map +1 -0
  26. package/dist/assets/oauth/github.svg.js +5 -0
  27. package/dist/assets/oauth/github.svg.js.map +1 -0
  28. package/dist/assets/oauth/qq.svg.js +5 -0
  29. package/dist/assets/oauth/qq.svg.js.map +1 -0
  30. package/dist/assets/oauth/wechat.svg.js +5 -0
  31. package/dist/assets/oauth/wechat.svg.js.map +1 -0
  32. package/dist/assets/oauth/wecom.svg.js +5 -0
  33. package/dist/assets/oauth/wecom.svg.js.map +1 -0
  34. package/dist/assets/svg/star.svg.js +6 -0
  35. package/dist/assets/svg/star.svg.js.map +1 -0
  36. package/dist/components/ApiSelect/index.vue.d.ts +22 -0
  37. package/dist/components/ApiSelect/index.vue.js +50 -0
  38. package/dist/components/ApiSelect/index.vue.js.map +1 -0
  39. package/dist/components/ApiSelect/index2.vue.js +5 -0
  40. package/dist/components/ApiSelect/index2.vue.js.map +1 -0
  41. package/dist/components/AppIcon.vue.d.ts +7 -0
  42. package/dist/components/AppIcon.vue.js +33 -0
  43. package/dist/components/AppIcon.vue.js.map +1 -0
  44. package/dist/components/AppIcon2.vue.js +5 -0
  45. package/dist/components/AppIcon2.vue.js.map +1 -0
  46. package/dist/components/Chart/BarChart.vue.d.ts +13 -0
  47. package/dist/components/Chart/BarChart.vue.js +27 -0
  48. package/dist/components/Chart/BarChart.vue.js.map +1 -0
  49. package/dist/components/Chart/BarChart2.vue.js +5 -0
  50. package/dist/components/Chart/BarChart2.vue.js.map +1 -0
  51. package/dist/components/Chart/LineChart.vue.d.ts +15 -0
  52. package/dist/components/Chart/LineChart.vue.js +33 -0
  53. package/dist/components/Chart/LineChart.vue.js.map +1 -0
  54. package/dist/components/Chart/LineChart2.vue.js +5 -0
  55. package/dist/components/Chart/LineChart2.vue.js.map +1 -0
  56. package/dist/components/Chart/PieChart.vue.d.ts +14 -0
  57. package/dist/components/Chart/PieChart.vue.js +31 -0
  58. package/dist/components/Chart/PieChart.vue.js.map +1 -0
  59. package/dist/components/Chart/PieChart2.vue.js +5 -0
  60. package/dist/components/Chart/PieChart2.vue.js.map +1 -0
  61. package/dist/components/Chart/echarts.d.ts +57 -0
  62. package/dist/components/Chart/echarts.js +47 -0
  63. package/dist/components/Chart/echarts.js.map +1 -0
  64. package/dist/components/Chart/index.vue.d.ts +12 -0
  65. package/dist/components/Chart/index.vue.js +8 -0
  66. package/dist/components/Chart/index.vue.js.map +1 -0
  67. package/dist/components/Chart/index2.vue.js +27 -0
  68. package/dist/components/Chart/index2.vue.js.map +1 -0
  69. package/dist/components/CodeBlock/index.vue.d.ts +17 -0
  70. package/dist/components/CodeBlock/index.vue.js +8 -0
  71. package/dist/components/CodeBlock/index.vue.js.map +1 -0
  72. package/dist/components/CodeBlock/index2.vue.js +48 -0
  73. package/dist/components/CodeBlock/index2.vue.js.map +1 -0
  74. package/dist/components/CronEditor/index.vue.d.ts +15 -0
  75. package/dist/components/CronEditor/index.vue.js +8 -0
  76. package/dist/components/CronEditor/index.vue.js.map +1 -0
  77. package/dist/components/CronEditor/index2.vue.js +528 -0
  78. package/dist/components/CronEditor/index2.vue.js.map +1 -0
  79. package/dist/components/DetailPage/index.vue.d.ts +26 -0
  80. package/dist/components/DetailPage/index.vue.js +8 -0
  81. package/dist/components/DetailPage/index.vue.js.map +1 -0
  82. package/dist/components/DetailPage/index2.vue.js +51 -0
  83. package/dist/components/DetailPage/index2.vue.js.map +1 -0
  84. package/dist/components/DictCheckbox/index.vue.d.ts +6 -0
  85. package/dist/components/DictCheckbox/index.vue.js +43 -0
  86. package/dist/components/DictCheckbox/index.vue.js.map +1 -0
  87. package/dist/components/DictCheckbox/index2.vue.js +5 -0
  88. package/dist/components/DictCheckbox/index2.vue.js.map +1 -0
  89. package/dist/components/DictRadio/index.vue.d.ts +6 -0
  90. package/dist/components/DictRadio/index.vue.js +38 -0
  91. package/dist/components/DictRadio/index.vue.js.map +1 -0
  92. package/dist/components/DictRadio/index2.vue.js +5 -0
  93. package/dist/components/DictRadio/index2.vue.js.map +1 -0
  94. package/dist/components/DictSelect/index.vue.d.ts +6 -0
  95. package/dist/components/DictSelect/index.vue.js +37 -0
  96. package/dist/components/DictSelect/index.vue.js.map +1 -0
  97. package/dist/components/DictSelect/index2.vue.js +5 -0
  98. package/dist/components/DictSelect/index2.vue.js.map +1 -0
  99. package/dist/components/DictTag/index.vue.d.ts +10 -0
  100. package/dist/components/DictTag/index.vue.js +48 -0
  101. package/dist/components/DictTag/index.vue.js.map +1 -0
  102. package/dist/components/DictTag/index2.vue.js +5 -0
  103. package/dist/components/DictTag/index2.vue.js.map +1 -0
  104. package/dist/components/ErrorBoundary/index.vue.d.ts +13 -0
  105. package/dist/components/ErrorBoundary/index.vue.js +8 -0
  106. package/dist/components/ErrorBoundary/index.vue.js.map +1 -0
  107. package/dist/components/ErrorBoundary/index2.vue.js +61 -0
  108. package/dist/components/ErrorBoundary/index2.vue.js.map +1 -0
  109. package/dist/components/ExportColumnsModal/index.vue.d.ts +19 -0
  110. package/dist/components/ExportColumnsModal/index.vue.js +8 -0
  111. package/dist/components/ExportColumnsModal/index.vue.js.map +1 -0
  112. package/dist/components/ExportColumnsModal/index2.vue.js +121 -0
  113. package/dist/components/ExportColumnsModal/index2.vue.js.map +1 -0
  114. package/dist/components/FileUpload/index.vue.d.ts +24 -0
  115. package/dist/components/FileUpload/index.vue.js +42 -0
  116. package/dist/components/FileUpload/index.vue.js.map +1 -0
  117. package/dist/components/FileUpload/index2.vue.js +5 -0
  118. package/dist/components/FileUpload/index2.vue.js.map +1 -0
  119. package/dist/components/FormContainer/index.vue.d.ts +51 -0
  120. package/dist/components/FormContainer/index.vue.js +160 -0
  121. package/dist/components/FormContainer/index.vue.js.map +1 -0
  122. package/dist/components/FormContainer/index3.vue.js +6 -0
  123. package/dist/components/FormContainer/index3.vue.js.map +1 -0
  124. package/dist/components/IconPicker/index.vue.d.ts +18 -0
  125. package/dist/components/IconPicker/index.vue.js +43 -0
  126. package/dist/components/IconPicker/index.vue.js.map +1 -0
  127. package/dist/components/IconPicker/index2.vue.js +5 -0
  128. package/dist/components/IconPicker/index2.vue.js.map +1 -0
  129. package/dist/components/ImportWizard/index.vue.d.ts +39 -0
  130. package/dist/components/ImportWizard/index.vue.js +8 -0
  131. package/dist/components/ImportWizard/index.vue.js.map +1 -0
  132. package/dist/components/ImportWizard/index2.vue.js +634 -0
  133. package/dist/components/ImportWizard/index2.vue.js.map +1 -0
  134. package/dist/components/JsonEditor/index.vue.d.ts +12 -0
  135. package/dist/components/JsonEditor/index.vue.js +87 -0
  136. package/dist/components/JsonEditor/index.vue.js.map +1 -0
  137. package/dist/components/JsonEditor/index2.vue.js +5 -0
  138. package/dist/components/JsonEditor/index2.vue.js.map +1 -0
  139. package/dist/components/MarkdownEditor/MarkdownView.vue.d.ts +6 -0
  140. package/dist/components/MarkdownEditor/MarkdownView.vue.js +33 -0
  141. package/dist/components/MarkdownEditor/MarkdownView.vue.js.map +1 -0
  142. package/dist/components/MarkdownEditor/MarkdownView2.vue.js +5 -0
  143. package/dist/components/MarkdownEditor/MarkdownView2.vue.js.map +1 -0
  144. package/dist/components/MarkdownEditor/index.vue.d.ts +10 -0
  145. package/dist/components/MarkdownEditor/index.vue.js +35 -0
  146. package/dist/components/MarkdownEditor/index.vue.js.map +1 -0
  147. package/dist/components/MarkdownEditor/index2.vue.js +5 -0
  148. package/dist/components/MarkdownEditor/index2.vue.js.map +1 -0
  149. package/dist/components/MenuSearch.vue.d.ts +10 -0
  150. package/dist/components/MenuSearch.vue.js +8 -0
  151. package/dist/components/MenuSearch.vue.js.map +1 -0
  152. package/dist/components/MenuSearch2.vue.js +121 -0
  153. package/dist/components/MenuSearch2.vue.js.map +1 -0
  154. package/dist/components/OrgTreeSelect/index.vue.d.ts +6 -0
  155. package/dist/components/OrgTreeSelect/index.vue.js +42 -0
  156. package/dist/components/OrgTreeSelect/index.vue.js.map +1 -0
  157. package/dist/components/OrgTreeSelect/index2.vue.js +5 -0
  158. package/dist/components/OrgTreeSelect/index2.vue.js.map +1 -0
  159. package/dist/components/PasswordStrength/index.vue.d.ts +6 -0
  160. package/dist/components/PasswordStrength/index.vue.js +8 -0
  161. package/dist/components/PasswordStrength/index.vue.js.map +1 -0
  162. package/dist/components/PasswordStrength/index2.vue.js +91 -0
  163. package/dist/components/PasswordStrength/index2.vue.js.map +1 -0
  164. package/dist/components/ReauthModal.vue.d.ts +3 -0
  165. package/dist/components/ReauthModal.vue.js +8 -0
  166. package/dist/components/ReauthModal.vue.js.map +1 -0
  167. package/dist/components/ReauthModal2.vue.js +139 -0
  168. package/dist/components/ReauthModal2.vue.js.map +1 -0
  169. package/dist/components/RoleSelect/index.vue.d.ts +8 -0
  170. package/dist/components/RoleSelect/index.vue.js +26 -0
  171. package/dist/components/RoleSelect/index.vue.js.map +1 -0
  172. package/dist/components/RoleSelect/index2.vue.js +5 -0
  173. package/dist/components/RoleSelect/index2.vue.js.map +1 -0
  174. package/dist/components/SelectTable/index.vue.d.ts +76 -0
  175. package/dist/components/SelectTable/index.vue.js +8 -0
  176. package/dist/components/SelectTable/index.vue.js.map +1 -0
  177. package/dist/components/SelectTable/index2.vue.js +256 -0
  178. package/dist/components/SelectTable/index2.vue.js.map +1 -0
  179. package/dist/components/SmartLogo.vue.d.ts +8 -0
  180. package/dist/components/SmartLogo.vue.js +8 -0
  181. package/dist/components/SmartLogo.vue.js.map +1 -0
  182. package/dist/components/SmartLogo2.vue.js +74 -0
  183. package/dist/components/SmartLogo2.vue.js.map +1 -0
  184. package/dist/components/StatusSwitch/index.vue.d.ts +21 -0
  185. package/dist/components/StatusSwitch/index.vue.js +45 -0
  186. package/dist/components/StatusSwitch/index.vue.js.map +1 -0
  187. package/dist/components/StatusSwitch/index2.vue.js +5 -0
  188. package/dist/components/StatusSwitch/index2.vue.js.map +1 -0
  189. package/dist/components/TableZoomButton/index.vue.d.ts +13 -0
  190. package/dist/components/TableZoomButton/index.vue.js +42 -0
  191. package/dist/components/TableZoomButton/index.vue.js.map +1 -0
  192. package/dist/components/TableZoomButton/index2.vue.js +5 -0
  193. package/dist/components/TableZoomButton/index2.vue.js.map +1 -0
  194. package/dist/components/UserPicker/index.vue.d.ts +13 -0
  195. package/dist/components/UserPicker/index.vue.js +8 -0
  196. package/dist/components/UserPicker/index.vue.js.map +1 -0
  197. package/dist/components/UserPicker/index2.vue.js +214 -0
  198. package/dist/components/UserPicker/index2.vue.js.map +1 -0
  199. package/dist/components/UserSelect/index.vue.d.ts +9 -0
  200. package/dist/components/UserSelect/index.vue.js +32 -0
  201. package/dist/components/UserSelect/index.vue.js.map +1 -0
  202. package/dist/components/UserSelect/index2.vue.js +5 -0
  203. package/dist/components/UserSelect/index2.vue.js.map +1 -0
  204. package/dist/components/oauth/BrandIcon.vue.d.ts +12 -0
  205. package/dist/components/oauth/BrandIcon.vue.js +8 -0
  206. package/dist/components/oauth/BrandIcon.vue.js.map +1 -0
  207. package/dist/components/oauth/BrandIcon2.vue.js +95 -0
  208. package/dist/components/oauth/BrandIcon2.vue.js.map +1 -0
  209. package/dist/composables/authMenuRoute.d.ts +32 -0
  210. package/dist/composables/authMenuRoute.js +37 -0
  211. package/dist/composables/authMenuRoute.js.map +1 -0
  212. package/dist/composables/clearClientCache.d.ts +10 -0
  213. package/dist/composables/clearClientCache.js +17 -0
  214. package/dist/composables/clearClientCache.js.map +1 -0
  215. package/dist/composables/useAuthMenu.d.ts +3 -0
  216. package/dist/composables/useAuthMenu.js +61 -0
  217. package/dist/composables/useAuthMenu.js.map +1 -0
  218. package/dist/composables/useBatchDelete.d.ts +18 -0
  219. package/dist/composables/useBatchDelete.js +21 -0
  220. package/dist/composables/useBatchDelete.js.map +1 -0
  221. package/dist/composables/useCompactScreen.d.ts +12 -0
  222. package/dist/composables/useCompactScreen.js +17 -0
  223. package/dist/composables/useCompactScreen.js.map +1 -0
  224. package/dist/composables/useConfirm.d.ts +18 -0
  225. package/dist/composables/useConfirm.js +61 -0
  226. package/dist/composables/useConfirm.js.map +1 -0
  227. package/dist/composables/useFullscreenToggle.d.ts +11 -0
  228. package/dist/composables/useFullscreenToggle.js +64 -0
  229. package/dist/composables/useFullscreenToggle.js.map +1 -0
  230. package/dist/composables/useHeaderTools.d.ts +31 -0
  231. package/dist/composables/useHeaderTools.js +15 -0
  232. package/dist/composables/useHeaderTools.js.map +1 -0
  233. package/dist/composables/useLayoutMenu.d.ts +17 -0
  234. package/dist/composables/useLayoutMenu.js +93 -0
  235. package/dist/composables/useLayoutMenu.js.map +1 -0
  236. package/dist/composables/useMenuBadge.d.ts +11 -0
  237. package/dist/composables/useMenuBadge.js +17 -0
  238. package/dist/composables/useMenuBadge.js.map +1 -0
  239. package/dist/composables/useMenuFlat.d.ts +8 -0
  240. package/dist/composables/useMenuFlat.js +29 -0
  241. package/dist/composables/useMenuFlat.js.map +1 -0
  242. package/dist/composables/useModule.d.ts +16 -0
  243. package/dist/composables/useModule.js +44 -0
  244. package/dist/composables/useModule.js.map +1 -0
  245. package/dist/composables/useNoticeAction.d.ts +8 -0
  246. package/dist/composables/useNoticeAction.js +79 -0
  247. package/dist/composables/useNoticeAction.js.map +1 -0
  248. package/dist/composables/usePageTitle.d.ts +1 -0
  249. package/dist/composables/usePageTitle.js +20 -0
  250. package/dist/composables/usePageTitle.js.map +1 -0
  251. package/dist/composables/useRealtime.d.ts +31 -0
  252. package/dist/composables/useRealtime.js +59 -0
  253. package/dist/composables/useRealtime.js.map +1 -0
  254. package/dist/composables/useSite.d.ts +24 -0
  255. package/dist/composables/useSite.js +27 -0
  256. package/dist/composables/useSite.js.map +1 -0
  257. package/dist/composables/useTabTitle.d.ts +1 -0
  258. package/dist/composables/useTabTitle.js +10 -0
  259. package/dist/composables/useTabTitle.js.map +1 -0
  260. package/dist/composables/useTableRowSort.d.ts +20 -0
  261. package/dist/composables/useTableRowSort.js +59 -0
  262. package/dist/composables/useTableRowSort.js.map +1 -0
  263. package/dist/composables/useTableZoom.d.ts +5 -0
  264. package/dist/composables/useTableZoom.js +30 -0
  265. package/dist/composables/useTableZoom.js.map +1 -0
  266. package/dist/composables/useTheme.d.ts +13 -0
  267. package/dist/composables/useTheme.js +30 -0
  268. package/dist/composables/useTheme.js.map +1 -0
  269. package/dist/composables/useVisualViewportHeight.d.ts +3 -0
  270. package/dist/composables/useVisualViewportHeight.js +16 -0
  271. package/dist/composables/useVisualViewportHeight.js.map +1 -0
  272. package/dist/createSmartAdmin.d.ts +56 -0
  273. package/dist/createSmartAdmin.js +76 -0
  274. package/dist/createSmartAdmin.js.map +1 -0
  275. package/dist/directives/auth.d.ts +16 -0
  276. package/dist/directives/auth.js +19 -0
  277. package/dist/directives/auth.js.map +1 -0
  278. package/dist/env.d.ts +10 -0
  279. package/dist/index.d.ts +90 -0
  280. package/dist/index.js +273 -0
  281. package/dist/index.js.map +1 -0
  282. package/dist/layouts/AppHeader.vue.d.ts +12 -0
  283. package/dist/layouts/AppHeader.vue.js +8 -0
  284. package/dist/layouts/AppHeader.vue.js.map +1 -0
  285. package/dist/layouts/AppHeader2.vue.js +352 -0
  286. package/dist/layouts/AppHeader2.vue.js.map +1 -0
  287. package/dist/layouts/LayoutModeCards.vue.d.ts +3 -0
  288. package/dist/layouts/LayoutModeCards.vue.js +8 -0
  289. package/dist/layouts/LayoutModeCards.vue.js.map +1 -0
  290. package/dist/layouts/LayoutModeCards2.vue.js +67 -0
  291. package/dist/layouts/LayoutModeCards2.vue.js.map +1 -0
  292. package/dist/layouts/NoticeBell.vue.d.ts +3 -0
  293. package/dist/layouts/NoticeBell.vue.js +8 -0
  294. package/dist/layouts/NoticeBell.vue.js.map +1 -0
  295. package/dist/layouts/NoticeBell2.vue.js +292 -0
  296. package/dist/layouts/NoticeBell2.vue.js.map +1 -0
  297. package/dist/layouts/PersonalLayout.vue.d.ts +3 -0
  298. package/dist/layouts/PersonalLayout.vue.js +8 -0
  299. package/dist/layouts/PersonalLayout.vue.js.map +1 -0
  300. package/dist/layouts/PersonalLayout2.vue.js +65 -0
  301. package/dist/layouts/PersonalLayout2.vue.js.map +1 -0
  302. package/dist/layouts/SettingRow.vue.d.ts +16 -0
  303. package/dist/layouts/SettingRow.vue.js +8 -0
  304. package/dist/layouts/SettingRow.vue.js.map +1 -0
  305. package/dist/layouts/SettingRow2.vue.js +23 -0
  306. package/dist/layouts/SettingRow2.vue.js.map +1 -0
  307. package/dist/layouts/SettingsDrawer.vue.d.ts +10 -0
  308. package/dist/layouts/SettingsDrawer.vue.js +8 -0
  309. package/dist/layouts/SettingsDrawer.vue.js.map +1 -0
  310. package/dist/layouts/SettingsDrawer2.vue.js +380 -0
  311. package/dist/layouts/SettingsDrawer2.vue.js.map +1 -0
  312. package/dist/layouts/TabsBar.vue.d.ts +3 -0
  313. package/dist/layouts/TabsBar.vue.js +8 -0
  314. package/dist/layouts/TabsBar.vue.js.map +1 -0
  315. package/dist/layouts/TabsBar2.vue.js +132 -0
  316. package/dist/layouts/TabsBar2.vue.js.map +1 -0
  317. package/dist/layouts/components/SideNav.vue.d.ts +15 -0
  318. package/dist/layouts/components/SideNav.vue.js +8 -0
  319. package/dist/layouts/components/SideNav.vue.js.map +1 -0
  320. package/dist/layouts/components/SideNav2.vue.js +49 -0
  321. package/dist/layouts/components/SideNav2.vue.js.map +1 -0
  322. package/dist/layouts/default.vue.d.ts +3 -0
  323. package/dist/layouts/default.vue.js +8 -0
  324. package/dist/layouts/default.vue.js.map +1 -0
  325. package/dist/layouts/default2.vue.js +213 -0
  326. package/dist/layouts/default2.vue.js.map +1 -0
  327. package/dist/lib/chunkReload.d.ts +9 -0
  328. package/dist/lib/chunkReload.js +24 -0
  329. package/dist/lib/chunkReload.js.map +1 -0
  330. package/dist/lib/icons.d.ts +2 -0
  331. package/dist/lib/icons.js +39 -0
  332. package/dist/lib/icons.js.map +1 -0
  333. package/dist/lib/loadingBar.d.ts +7 -0
  334. package/dist/lib/loadingBar.js +18 -0
  335. package/dist/lib/loadingBar.js.map +1 -0
  336. package/dist/lib/markdown.d.ts +8 -0
  337. package/dist/lib/markdown.js +16 -0
  338. package/dist/lib/markdown.js.map +1 -0
  339. package/dist/lib/markdownLinks.d.ts +26 -0
  340. package/dist/lib/markdownLinks.js +21 -0
  341. package/dist/lib/markdownLinks.js.map +1 -0
  342. package/dist/lib/noticeActions.d.ts +13 -0
  343. package/dist/lib/noticeActions.js +16 -0
  344. package/dist/lib/noticeActions.js.map +1 -0
  345. package/dist/lib/runtime.d.ts +21 -0
  346. package/dist/lib/runtime.js +13 -0
  347. package/dist/lib/runtime.js.map +1 -0
  348. package/dist/locales/en-US.d.ts +1358 -0
  349. package/dist/locales/en-US.js +1362 -0
  350. package/dist/locales/en-US.js.map +1 -0
  351. package/dist/locales/index.d.ts +30 -0
  352. package/dist/locales/index.js +46 -0
  353. package/dist/locales/index.js.map +1 -0
  354. package/dist/locales/menuTitle.d.ts +8 -0
  355. package/dist/locales/menuTitle.js +19 -0
  356. package/dist/locales/menuTitle.js.map +1 -0
  357. package/dist/locales/zh-CN.d.ts +1358 -0
  358. package/dist/locales/zh-CN.js +1368 -0
  359. package/dist/locales/zh-CN.js.map +1 -0
  360. package/dist/router/bootFailure.d.ts +8 -0
  361. package/dist/router/bootFailure.js +11 -0
  362. package/dist/router/bootFailure.js.map +1 -0
  363. package/dist/router/detailRoutes.d.ts +2 -0
  364. package/dist/router/detailRoutes.js +19 -0
  365. package/dist/router/detailRoutes.js.map +1 -0
  366. package/dist/router/index.d.ts +3 -0
  367. package/dist/router/index.js +58 -0
  368. package/dist/router/index.js.map +1 -0
  369. package/dist/router/namedPage.d.ts +13 -0
  370. package/dist/router/namedPage.js +12 -0
  371. package/dist/router/namedPage.js.map +1 -0
  372. package/dist/router/routes.d.ts +2 -0
  373. package/dist/router/routes.js +121 -0
  374. package/dist/router/routes.js.map +1 -0
  375. package/dist/router/viewRegistry.d.ts +18 -0
  376. package/dist/router/viewRegistry.js +26 -0
  377. package/dist/router/viewRegistry.js.map +1 -0
  378. package/dist/stores/app.d.ts +83 -0
  379. package/dist/stores/app.js +82 -0
  380. package/dist/stores/app.js.map +1 -0
  381. package/dist/stores/auth.d.ts +106 -0
  382. package/dist/stores/auth.js +59 -0
  383. package/dist/stores/auth.js.map +1 -0
  384. package/dist/stores/dict.d.ts +11 -0
  385. package/dist/stores/dict.js +36 -0
  386. package/dist/stores/dict.js.map +1 -0
  387. package/dist/stores/tabs.d.ts +53 -0
  388. package/dist/stores/tabs.js +88 -0
  389. package/dist/stores/tabs.js.map +1 -0
  390. package/dist/stores/user.d.ts +64 -0
  391. package/dist/stores/user.js +64 -0
  392. package/dist/stores/user.js.map +1 -0
  393. package/dist/style.css +1 -0
  394. package/dist/theme/accents.d.ts +2 -0
  395. package/dist/theme/accents.js +5 -0
  396. package/dist/theme/accents.js.map +1 -0
  397. package/dist/theme/mix.d.ts +26 -0
  398. package/dist/theme/mix.js +43 -0
  399. package/dist/theme/mix.js.map +1 -0
  400. package/dist/theme/naive-theme.d.ts +9 -0
  401. package/dist/theme/naive-theme.js +89 -0
  402. package/dist/theme/naive-theme.js.map +1 -0
  403. package/dist/types/api.d.ts +714 -0
  404. package/dist/types/api.js +15 -0
  405. package/dist/types/api.js.map +1 -0
  406. package/dist/types/menu.d.ts +67 -0
  407. package/dist/types/menu.js +26 -0
  408. package/dist/types/menu.js.map +1 -0
  409. package/dist/utils/chunkUpload.d.ts +6 -0
  410. package/dist/utils/chunkUpload.js +35 -0
  411. package/dist/utils/chunkUpload.js.map +1 -0
  412. package/dist/utils/download.d.ts +8 -0
  413. package/dist/utils/download.js +8 -0
  414. package/dist/utils/download.js.map +1 -0
  415. package/dist/utils/error.d.ts +14 -0
  416. package/dist/utils/error.js +50 -0
  417. package/dist/utils/error.js.map +1 -0
  418. package/dist/utils/format.d.ts +20 -0
  419. package/dist/utils/format.js +19 -0
  420. package/dist/utils/format.js.map +1 -0
  421. package/dist/utils/importDup.d.ts +17 -0
  422. package/dist/utils/importDup.js +18 -0
  423. package/dist/utils/importDup.js.map +1 -0
  424. package/dist/utils/oauthBrand.d.ts +100 -0
  425. package/dist/utils/oauthBrand.js +97 -0
  426. package/dist/utils/oauthBrand.js.map +1 -0
  427. package/dist/utils/tree.d.ts +33 -0
  428. package/dist/utils/tree.js +47 -0
  429. package/dist/utils/tree.js.map +1 -0
  430. package/dist/utils/ua.d.ts +7 -0
  431. package/dist/utils/ua.js +33 -0
  432. package/dist/utils/ua.js.map +1 -0
  433. package/dist/utils/url.d.ts +16 -0
  434. package/dist/utils/url.js +13 -0
  435. package/dist/utils/url.js.map +1 -0
  436. package/dist/views/dashboard/biz.vue.d.ts +3 -0
  437. package/dist/views/dashboard/biz.vue.js +8 -0
  438. package/dist/views/dashboard/biz.vue.js.map +1 -0
  439. package/dist/views/dashboard/biz2.vue.js +136 -0
  440. package/dist/views/dashboard/biz2.vue.js.map +1 -0
  441. package/dist/views/dashboard/workbench.vue.d.ts +3 -0
  442. package/dist/views/dashboard/workbench.vue.js +8 -0
  443. package/dist/views/dashboard/workbench.vue.js.map +1 -0
  444. package/dist/views/dashboard/workbench2.vue.js +195 -0
  445. package/dist/views/dashboard/workbench2.vue.js.map +1 -0
  446. package/dist/views/embed/iframe.vue.d.ts +3 -0
  447. package/dist/views/embed/iframe.vue.js +8 -0
  448. package/dist/views/embed/iframe.vue.js.map +1 -0
  449. package/dist/views/embed/iframe2.vue.js +21 -0
  450. package/dist/views/embed/iframe2.vue.js.map +1 -0
  451. package/dist/views/error/404.vue.d.ts +3 -0
  452. package/dist/views/error/404.vue.js +8 -0
  453. package/dist/views/error/404.vue.js.map +1 -0
  454. package/dist/views/error/4042.vue.js +31 -0
  455. package/dist/views/error/4042.vue.js.map +1 -0
  456. package/dist/views/error/BootError.vue.d.ts +3 -0
  457. package/dist/views/error/BootError.vue.js +8 -0
  458. package/dist/views/error/BootError.vue.js.map +1 -0
  459. package/dist/views/error/BootError2.vue.js +57 -0
  460. package/dist/views/error/BootError2.vue.js.map +1 -0
  461. package/dist/views/error/MissingRoute.vue.d.ts +3 -0
  462. package/dist/views/error/MissingRoute.vue.js +8 -0
  463. package/dist/views/error/MissingRoute.vue.js.map +1 -0
  464. package/dist/views/error/MissingRoute2.vue.js +23 -0
  465. package/dist/views/error/MissingRoute2.vue.js.map +1 -0
  466. package/dist/views/login/LoginForm.vue.d.ts +12 -0
  467. package/dist/views/login/LoginForm.vue.js +8 -0
  468. package/dist/views/login/LoginForm.vue.js.map +1 -0
  469. package/dist/views/login/LoginForm2.vue.js +642 -0
  470. package/dist/views/login/LoginForm2.vue.js.map +1 -0
  471. package/dist/views/login/index.vue.d.ts +3 -0
  472. package/dist/views/login/index.vue.js +8 -0
  473. package/dist/views/login/index.vue.js.map +1 -0
  474. package/dist/views/login/index2.vue.js +79 -0
  475. package/dist/views/login/index2.vue.js.map +1 -0
  476. package/dist/views/login/skins/AuroraGlass.vue.d.ts +3 -0
  477. package/dist/views/login/skins/AuroraGlass.vue.js +8 -0
  478. package/dist/views/login/skins/AuroraGlass.vue.js.map +1 -0
  479. package/dist/views/login/skins/AuroraGlass2.vue.js +80 -0
  480. package/dist/views/login/skins/AuroraGlass2.vue.js.map +1 -0
  481. package/dist/views/login/skins/SplitPanel.vue.d.ts +3 -0
  482. package/dist/views/login/skins/SplitPanel.vue.js +8 -0
  483. package/dist/views/login/skins/SplitPanel.vue.js.map +1 -0
  484. package/dist/views/login/skins/SplitPanel2.vue.js +85 -0
  485. package/dist/views/login/skins/SplitPanel2.vue.js.map +1 -0
  486. package/dist/views/login/skins/Spotlight.vue.d.ts +3 -0
  487. package/dist/views/login/skins/Spotlight.vue.js +8 -0
  488. package/dist/views/login/skins/Spotlight.vue.js.map +1 -0
  489. package/dist/views/login/skins/Spotlight2.vue.js +36 -0
  490. package/dist/views/login/skins/Spotlight2.vue.js.map +1 -0
  491. package/dist/views/login/skins.d.ts +8 -0
  492. package/dist/views/login/skins.js +13 -0
  493. package/dist/views/login/skins.js.map +1 -0
  494. package/dist/views/mfa/bindComplete.d.ts +7 -0
  495. package/dist/views/mfa/bindComplete.js +8 -0
  496. package/dist/views/mfa/bindComplete.js.map +1 -0
  497. package/dist/views/mfa/index.vue.d.ts +3 -0
  498. package/dist/views/mfa/index.vue.js +8 -0
  499. package/dist/views/mfa/index.vue.js.map +1 -0
  500. package/dist/views/mfa/index2.vue.js +425 -0
  501. package/dist/views/mfa/index2.vue.js.map +1 -0
  502. package/dist/views/module/index.vue.d.ts +3 -0
  503. package/dist/views/module/index.vue.js +8 -0
  504. package/dist/views/module/index.vue.js.map +1 -0
  505. package/dist/views/module/index2.vue.js +142 -0
  506. package/dist/views/module/index2.vue.js.map +1 -0
  507. package/dist/views/oauth/callback.vue.d.ts +3 -0
  508. package/dist/views/oauth/callback.vue.js +8 -0
  509. package/dist/views/oauth/callback.vue.js.map +1 -0
  510. package/dist/views/oauth/callback2.vue.js +86 -0
  511. package/dist/views/oauth/callback2.vue.js.map +1 -0
  512. package/dist/views/personal/bindings.vue.d.ts +3 -0
  513. package/dist/views/personal/bindings.vue.js +8 -0
  514. package/dist/views/personal/bindings.vue.js.map +1 -0
  515. package/dist/views/personal/bindings2.vue.js +220 -0
  516. package/dist/views/personal/bindings2.vue.js.map +1 -0
  517. package/dist/views/personal/notice.vue.d.ts +3 -0
  518. package/dist/views/personal/notice.vue.js +5 -0
  519. package/dist/views/personal/notice.vue.js.map +1 -0
  520. package/dist/views/personal/notice2.vue.js +163 -0
  521. package/dist/views/personal/notice2.vue.js.map +1 -0
  522. package/dist/views/personal/password.vue.d.ts +3 -0
  523. package/dist/views/personal/password.vue.js +5 -0
  524. package/dist/views/personal/password.vue.js.map +1 -0
  525. package/dist/views/personal/password2.vue.js +147 -0
  526. package/dist/views/personal/password2.vue.js.map +1 -0
  527. package/dist/views/personal/profile.vue.d.ts +3 -0
  528. package/dist/views/personal/profile.vue.js +8 -0
  529. package/dist/views/personal/profile.vue.js.map +1 -0
  530. package/dist/views/personal/profile2.vue.js +264 -0
  531. package/dist/views/personal/profile2.vue.js.map +1 -0
  532. package/dist/views/personal/security.vue.d.ts +3 -0
  533. package/dist/views/personal/security.vue.js +8 -0
  534. package/dist/views/personal/security.vue.js.map +1 -0
  535. package/dist/views/personal/security2.vue.js +82 -0
  536. package/dist/views/personal/security2.vue.js.map +1 -0
  537. package/dist/views/personal/sessions.vue.d.ts +3 -0
  538. package/dist/views/personal/sessions.vue.js +8 -0
  539. package/dist/views/personal/sessions.vue.js.map +1 -0
  540. package/dist/views/personal/sessions2.vue.js +101 -0
  541. package/dist/views/personal/sessions2.vue.js.map +1 -0
  542. package/dist/views/system/cache/index.vue.d.ts +3 -0
  543. package/dist/views/system/cache/index.vue.js +8 -0
  544. package/dist/views/system/cache/index.vue.js.map +1 -0
  545. package/dist/views/system/cache/index2.vue.js +113 -0
  546. package/dist/views/system/cache/index2.vue.js.map +1 -0
  547. package/dist/views/system/config/components/ConfigFormModal.vue.d.ts +16 -0
  548. package/dist/views/system/config/components/ConfigFormModal.vue.js +5 -0
  549. package/dist/views/system/config/components/ConfigFormModal.vue.js.map +1 -0
  550. package/dist/views/system/config/components/ConfigFormModal2.vue.js +177 -0
  551. package/dist/views/system/config/components/ConfigFormModal2.vue.js.map +1 -0
  552. package/dist/views/system/config/components/ExternalAuthConfig.vue.d.ts +3 -0
  553. package/dist/views/system/config/components/ExternalAuthConfig.vue.js +8 -0
  554. package/dist/views/system/config/components/ExternalAuthConfig.vue.js.map +1 -0
  555. package/dist/views/system/config/components/ExternalAuthConfig2.vue.js +218 -0
  556. package/dist/views/system/config/components/ExternalAuthConfig2.vue.js.map +1 -0
  557. package/dist/views/system/config/components/GroupExtraConfig.vue.d.ts +9 -0
  558. package/dist/views/system/config/components/GroupExtraConfig.vue.js +8 -0
  559. package/dist/views/system/config/components/GroupExtraConfig.vue.js.map +1 -0
  560. package/dist/views/system/config/components/GroupExtraConfig2.vue.js +108 -0
  561. package/dist/views/system/config/components/GroupExtraConfig2.vue.js.map +1 -0
  562. package/dist/views/system/config/components/HighSensConfig.vue.d.ts +3 -0
  563. package/dist/views/system/config/components/HighSensConfig.vue.js +5 -0
  564. package/dist/views/system/config/components/HighSensConfig.vue.js.map +1 -0
  565. package/dist/views/system/config/components/HighSensConfig2.vue.js +134 -0
  566. package/dist/views/system/config/components/HighSensConfig2.vue.js.map +1 -0
  567. package/dist/views/system/config/components/JobConfig.vue.d.ts +3 -0
  568. package/dist/views/system/config/components/JobConfig.vue.js +5 -0
  569. package/dist/views/system/config/components/JobConfig.vue.js.map +1 -0
  570. package/dist/views/system/config/components/JobConfig2.vue.js +116 -0
  571. package/dist/views/system/config/components/JobConfig2.vue.js.map +1 -0
  572. package/dist/views/system/config/components/OtherConfig.vue.d.ts +3 -0
  573. package/dist/views/system/config/components/OtherConfig.vue.js +5 -0
  574. package/dist/views/system/config/components/OtherConfig.vue.js.map +1 -0
  575. package/dist/views/system/config/components/OtherConfig2.vue.js +121 -0
  576. package/dist/views/system/config/components/OtherConfig2.vue.js.map +1 -0
  577. package/dist/views/system/config/components/SecurityConfig.vue.d.ts +3 -0
  578. package/dist/views/system/config/components/SecurityConfig.vue.js +8 -0
  579. package/dist/views/system/config/components/SecurityConfig.vue.js.map +1 -0
  580. package/dist/views/system/config/components/SecurityConfig2.vue.js +456 -0
  581. package/dist/views/system/config/components/SecurityConfig2.vue.js.map +1 -0
  582. package/dist/views/system/config/components/SysBaseConfig.vue.d.ts +3 -0
  583. package/dist/views/system/config/components/SysBaseConfig.vue.js +5 -0
  584. package/dist/views/system/config/components/SysBaseConfig.vue.js.map +1 -0
  585. package/dist/views/system/config/components/SysBaseConfig2.vue.js +107 -0
  586. package/dist/views/system/config/components/SysBaseConfig2.vue.js.map +1 -0
  587. package/dist/views/system/config/components/UploadConfig.vue.d.ts +3 -0
  588. package/dist/views/system/config/components/UploadConfig.vue.js +5 -0
  589. package/dist/views/system/config/components/UploadConfig.vue.js.map +1 -0
  590. package/dist/views/system/config/components/UploadConfig2.vue.js +135 -0
  591. package/dist/views/system/config/components/UploadConfig2.vue.js.map +1 -0
  592. package/dist/views/system/config/groups.d.ts +9 -0
  593. package/dist/views/system/config/groups.js +18 -0
  594. package/dist/views/system/config/groups.js.map +1 -0
  595. package/dist/views/system/config/index.vue.d.ts +3 -0
  596. package/dist/views/system/config/index.vue.js +5 -0
  597. package/dist/views/system/config/index.vue.js.map +1 -0
  598. package/dist/views/system/config/index2.vue.js +127 -0
  599. package/dist/views/system/config/index2.vue.js.map +1 -0
  600. package/dist/views/system/dict/index.vue.d.ts +3 -0
  601. package/dist/views/system/dict/index.vue.js +8 -0
  602. package/dist/views/system/dict/index.vue.js.map +1 -0
  603. package/dist/views/system/dict/index2.vue.js +560 -0
  604. package/dist/views/system/dict/index2.vue.js.map +1 -0
  605. package/dist/views/system/file/index.vue.d.ts +3 -0
  606. package/dist/views/system/file/index.vue.js +5 -0
  607. package/dist/views/system/file/index.vue.js.map +1 -0
  608. package/dist/views/system/file/index2.vue.js +186 -0
  609. package/dist/views/system/file/index2.vue.js.map +1 -0
  610. package/dist/views/system/job/index.vue.d.ts +3 -0
  611. package/dist/views/system/job/index.vue.js +8 -0
  612. package/dist/views/system/job/index.vue.js.map +1 -0
  613. package/dist/views/system/job/index2.vue.js +1167 -0
  614. package/dist/views/system/job/index2.vue.js.map +1 -0
  615. package/dist/views/system/job-log/index.vue.d.ts +3 -0
  616. package/dist/views/system/job-log/index.vue.js +8 -0
  617. package/dist/views/system/job-log/index.vue.js.map +1 -0
  618. package/dist/views/system/job-log/index2.vue.js +411 -0
  619. package/dist/views/system/job-log/index2.vue.js.map +1 -0
  620. package/dist/views/system/job-monitor/index.vue.d.ts +3 -0
  621. package/dist/views/system/job-monitor/index.vue.js +8 -0
  622. package/dist/views/system/job-monitor/index.vue.js.map +1 -0
  623. package/dist/views/system/job-monitor/index2.vue.js +253 -0
  624. package/dist/views/system/job-monitor/index2.vue.js.map +1 -0
  625. package/dist/views/system/log/exception/index.vue.d.ts +3 -0
  626. package/dist/views/system/log/exception/index.vue.js +8 -0
  627. package/dist/views/system/log/exception/index.vue.js.map +1 -0
  628. package/dist/views/system/log/exception/index2.vue.js +216 -0
  629. package/dist/views/system/log/exception/index2.vue.js.map +1 -0
  630. package/dist/views/system/log/login/index.vue.d.ts +3 -0
  631. package/dist/views/system/log/login/index.vue.js +5 -0
  632. package/dist/views/system/log/login/index.vue.js.map +1 -0
  633. package/dist/views/system/log/login/index2.vue.js +113 -0
  634. package/dist/views/system/log/login/index2.vue.js.map +1 -0
  635. package/dist/views/system/log/op/index.vue.d.ts +3 -0
  636. package/dist/views/system/log/op/index.vue.js +8 -0
  637. package/dist/views/system/log/op/index.vue.js.map +1 -0
  638. package/dist/views/system/log/op/index2.vue.js +332 -0
  639. package/dist/views/system/log/op/index2.vue.js.map +1 -0
  640. package/dist/views/system/menu/components/ButtonManager.vue.d.ts +21 -0
  641. package/dist/views/system/menu/components/ButtonManager.vue.js +8 -0
  642. package/dist/views/system/menu/components/ButtonManager.vue.js.map +1 -0
  643. package/dist/views/system/menu/components/ButtonManager2.vue.js +498 -0
  644. package/dist/views/system/menu/components/ButtonManager2.vue.js.map +1 -0
  645. package/dist/views/system/menu/components/MenuFormModal.vue.d.ts +22 -0
  646. package/dist/views/system/menu/components/MenuFormModal.vue.js +8 -0
  647. package/dist/views/system/menu/components/MenuFormModal.vue.js.map +1 -0
  648. package/dist/views/system/menu/components/MenuFormModal2.vue.js +259 -0
  649. package/dist/views/system/menu/components/MenuFormModal2.vue.js.map +1 -0
  650. package/dist/views/system/menu/index.vue.d.ts +3 -0
  651. package/dist/views/system/menu/index.vue.js +8 -0
  652. package/dist/views/system/menu/index.vue.js.map +1 -0
  653. package/dist/views/system/menu/index2.vue.js +391 -0
  654. package/dist/views/system/menu/index2.vue.js.map +1 -0
  655. package/dist/views/system/module/index.vue.d.ts +3 -0
  656. package/dist/views/system/module/index.vue.js +8 -0
  657. package/dist/views/system/module/index.vue.js.map +1 -0
  658. package/dist/views/system/module/index2.vue.js +344 -0
  659. package/dist/views/system/module/index2.vue.js.map +1 -0
  660. package/dist/views/system/monitor/index.vue.d.ts +3 -0
  661. package/dist/views/system/monitor/index.vue.js +8 -0
  662. package/dist/views/system/monitor/index.vue.js.map +1 -0
  663. package/dist/views/system/monitor/index2.vue.js +184 -0
  664. package/dist/views/system/monitor/index2.vue.js.map +1 -0
  665. package/dist/views/system/notice/index.vue.d.ts +3 -0
  666. package/dist/views/system/notice/index.vue.js +8 -0
  667. package/dist/views/system/notice/index.vue.js.map +1 -0
  668. package/dist/views/system/notice/index2.vue.js +401 -0
  669. package/dist/views/system/notice/index2.vue.js.map +1 -0
  670. package/dist/views/system/org/index.vue.d.ts +3 -0
  671. package/dist/views/system/org/index.vue.js +8 -0
  672. package/dist/views/system/org/index.vue.js.map +1 -0
  673. package/dist/views/system/org/index2.vue.js +397 -0
  674. package/dist/views/system/org/index2.vue.js.map +1 -0
  675. package/dist/views/system/position/index.vue.d.ts +3 -0
  676. package/dist/views/system/position/index.vue.js +5 -0
  677. package/dist/views/system/position/index.vue.js.map +1 -0
  678. package/dist/views/system/position/index2.vue.js +211 -0
  679. package/dist/views/system/position/index2.vue.js.map +1 -0
  680. package/dist/views/system/recycle/index.vue.d.ts +3 -0
  681. package/dist/views/system/recycle/index.vue.js +8 -0
  682. package/dist/views/system/recycle/index.vue.js.map +1 -0
  683. package/dist/views/system/recycle/index2.vue.js +121 -0
  684. package/dist/views/system/recycle/index2.vue.js.map +1 -0
  685. package/dist/views/system/role/components/GrantMenuTable.vue.d.ts +18 -0
  686. package/dist/views/system/role/components/GrantMenuTable.vue.js +8 -0
  687. package/dist/views/system/role/components/GrantMenuTable.vue.js.map +1 -0
  688. package/dist/views/system/role/components/GrantMenuTable2.vue.js +212 -0
  689. package/dist/views/system/role/components/GrantMenuTable2.vue.js.map +1 -0
  690. package/dist/views/system/role/components/grantMenuGroups.d.ts +31 -0
  691. package/dist/views/system/role/components/grantMenuGroups.js +76 -0
  692. package/dist/views/system/role/components/grantMenuGroups.js.map +1 -0
  693. package/dist/views/system/role/index.vue.d.ts +3 -0
  694. package/dist/views/system/role/index.vue.js +5 -0
  695. package/dist/views/system/role/index.vue.js.map +1 -0
  696. package/dist/views/system/role/index2.vue.js +476 -0
  697. package/dist/views/system/role/index2.vue.js.map +1 -0
  698. package/dist/views/system/session/index.vue.d.ts +3 -0
  699. package/dist/views/system/session/index.vue.js +5 -0
  700. package/dist/views/system/session/index.vue.js.map +1 -0
  701. package/dist/views/system/session/index2.vue.js +80 -0
  702. package/dist/views/system/session/index2.vue.js.map +1 -0
  703. package/dist/views/system/user/components/ResetPasswordModal.vue.d.ts +10 -0
  704. package/dist/views/system/user/components/ResetPasswordModal.vue.js +8 -0
  705. package/dist/views/system/user/components/ResetPasswordModal.vue.js.map +1 -0
  706. package/dist/views/system/user/components/ResetPasswordModal2.vue.js +111 -0
  707. package/dist/views/system/user/components/ResetPasswordModal2.vue.js.map +1 -0
  708. package/dist/views/system/user/components/UserFormModal.vue.d.ts +30 -0
  709. package/dist/views/system/user/components/UserFormModal.vue.js +8 -0
  710. package/dist/views/system/user/components/UserFormModal.vue.js.map +1 -0
  711. package/dist/views/system/user/components/UserFormModal2.vue.js +415 -0
  712. package/dist/views/system/user/components/UserFormModal2.vue.js.map +1 -0
  713. package/dist/views/system/user/index.vue.d.ts +3 -0
  714. package/dist/views/system/user/index.vue.js +8 -0
  715. package/dist/views/system/user/index.vue.js.map +1 -0
  716. package/dist/views/system/user/index2.vue.js +427 -0
  717. package/dist/views/system/user/index2.vue.js.map +1 -0
  718. package/package.json +99 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/api/index.ts"],"sourcesContent":["// 平台内核 API + 给域模块复用的原语(unwrap/ApiError/pageParams/toPage/listQuery/dayRange)。\n// 应用的业务端点写在自己的 src/api/<域>.ts 里,从 smart-admin-web 导入这些原语与 createApiClient。\n// 这些原语是包的公开导出,包内没有调用方是设计如此,别当未使用代码清掉。\nimport { client, LONG_TIMEOUT_MS } from './client'\nimport { runtime } from '#/lib/runtime'\nimport type { components } from './schema'\nimport type {\n AddUserInput,\n AddUserOutput,\n ChunkInitOutput,\n ConfigInput,\n CronPreviewOutput,\n DashboardSummary,\n DataScopeType,\n DictItem,\n DictItemInput,\n DictTypeInput,\n DuplicateStrategy,\n FileUploadOutput,\n ImportCommitResult,\n ImportPreview,\n ImportRow,\n JobDashboard,\n JobHandlersOutput,\n JobInput,\n LoginOutput,\n ModuleInput,\n ModuleRow,\n MyModulesOutput,\n MySessionItem,\n NoticeMineItem,\n NoticePublishInput,\n OnlineSessionItem,\n OrgInput,\n PagedList,\n PermissionRouteItem,\n PositionInput,\n RoleInput,\n ServerInfoOutput,\n SysConfig,\n SysDictItem,\n SysDictType,\n SysExceptionLog,\n SysFile,\n SysJob,\n SysJobLog,\n SysLoginLog,\n SysNotice,\n SysOpLog,\n SysOrg,\n SysPosition,\n SysRole,\n SysRoleDataScope,\n UpdateUserInput,\n UserDetail,\n UserItem,\n UserProfile,\n} from '#/types/api'\nimport type { MenuInput, MenuNode, MenuTreeNode } from '#/types/menu'\n\n/** 业务错误(含后端 code / msgKey);视图 catch 后经 translateError 展示。 */\nexport class ApiError extends Error {\n code: number\n msgKey?: string\n args?: Record<string, unknown>\n constructor(code: number, msgKey?: string, args?: Record<string, unknown>, message?: string) {\n super(message ?? msgKey ?? `Error ${code}`)\n this.name = 'ApiError'\n this.code = code\n this.msgKey = msgKey\n this.args = args\n }\n}\n\ninterface Envelope {\n code?: number\n msgKey?: string\n args?: Record<string, unknown>\n message?: string\n data?: unknown\n}\n\n/**\n * 解包 openapi-fetch 结果,同时容忍两种形状:\n * - 2xx:body 是 Result<T> 信封;code!==0 抛 ApiError,否则返回 data.data。\n * - 非 2xx:enveloped(401/403/429)有 code → 抛带 code 的 ApiError;\n * ProblemDetails(400 校验 / 500)无 code → 抛 status + title/detail。\n */\nexport function unwrap<T>(res: { data?: unknown; error?: unknown; response: Response }): T {\n const { data, error, response } = res\n if (error !== undefined && error !== null) {\n const env = error as Envelope\n if (typeof env.code === 'number') {\n throw new ApiError(env.code, env.msgKey, env.args, env.message)\n }\n const pd = error as { title?: string; detail?: string }\n throw new ApiError(\n response.status,\n undefined,\n undefined,\n pd.title ?? pd.detail ?? response.statusText,\n )\n }\n const env = (data ?? {}) as Envelope\n if (typeof env.code === 'number' && env.code !== 0) {\n throw new ApiError(env.code, env.msgKey, env.args, env.message)\n }\n return env.data as T\n}\n\n/**\n * 按「方法 + 站内路径」调一个运行期才知道 url 的接口(通知动作按钮这类场景),\n * 走同一套中间件(令牌 / CSRF / 刷新重放 / 超时)与信封解包。url 必须是 /api/ 开头的站内路径,\n * 调用方先用 lib/noticeActions 的 classifyNoticeAction 把关。\n */\nexport function callApi<T = unknown>(\n method: 'GET' | 'POST',\n url: string,\n body?: unknown,\n): Promise<T> {\n // openapi-fetch 的 request 只认 schema 里的路径字面量;这里的 url 来自数据,类型上放开一次。\n const request = client.request as unknown as (\n m: string,\n u: string,\n init?: { body?: unknown },\n ) => Promise<{ data?: unknown; error?: unknown; response: Response }>\n return request(method, url, body === undefined ? undefined : { body }).then(r => unwrap<T>(r))\n}\n\n/**\n * 分页三件套复用(每个列表端点都重复):\n * - 前端 {page,pageSize} → 后端 record 属性 {Current,Size}(PascalCase;ASP.NET 绑定大小写不敏感但类型要 Pascal)。\n * `...pageParams(p)` 展进各端点自己的 PascalCase 过滤条件,查询对象仍逐端点强类型校验(不走 any)。\n * - 后端 PagedList<T>({current,size,total,items}) → SmartTable fetcher 契约的 {items,total}。\n *\n * 二者连同 unwrap/ApiError 一起从包入口导出,是<b>应用写自己 API 模块的接缝</b>:应用的 `src/api/<域>.ts`\n * 从 smart-admin-web 导入它们,分页端点就与内核端点同一套映射。包内没有别的调用方也必须留着,别当未使用导出清掉。\n */\nexport const pageParams = (p: { page: number; pageSize: number }) => ({\n Current: p.page,\n Size: p.pageSize,\n})\n\n/**\n * 「编号 + 名称 + 关键字 + 排序」这套列表参数是后端 CRUD 模板的默认产出,二十来个端点逐字重复。\n * 不带 Keyword 的端点用 `Omit<ListParams, 'keyword'>`,别把不存在的过滤条件写进签名骗调用方。\n */\nexport interface ListParams {\n page: number\n pageSize: number\n keyword?: string\n number?: string\n name?: string\n sortField?: string\n sortOrder?: string\n}\n\n/**\n * ListParams → 后端 PascalCase 查询串。\n * undefined 字段由 openapi-fetch 的 querySerializer 直接跳过,所以不带 keyword 的端点复用它也不会多发参数。\n */\nexport const listQuery = (p: ListParams) => ({\n ...pageParams(p),\n Keyword: p.keyword,\n Number: p.number,\n Name: p.name,\n SortField: p.sortField,\n SortOrder: p.sortOrder,\n})\n\n/**\n * SmartTable 的 daterange 控件回传 `[开始, 结束]`(YYYY-MM-DD),后端要拆成两个参数。\n * 结束日必须补 23:59:59,否则\"筛到今天\"会把今天已经发生的数据全部漏掉(纯日期串等价于当天 00:00:00)。\n * 各域 API 模块的参数名不同(XxxStart/XxxEnd),所以这里只回中性的 start/end 由调用方改名。\n */\nexport const dayRange = (range?: [string, string] | null) => {\n if (!range || range.length !== 2) return { start: undefined, end: undefined }\n return { start: range[0] || undefined, end: range[1] ? `${range[1]} 23:59:59` : undefined }\n}\n\nexport function toPage<T>(res: Parameters<typeof unwrap>[0]): { items: T[]; total: number } {\n const p = unwrap<PagedList<T>>(res)\n return { items: p.items, total: p.total }\n}\n\n/**\n * 下载 xlsx 等二进制:parseAs blob + 手查 ok(坑 2:unwrap 假定 JSON 信封)。\n * AdminExceptionFilter 对业务失败仍回 HTTP 200 + JSON 信封,故还要辨 content-type /\n * 是否以 `{` 开头,避免把错误信封当 xlsx 触发下载。\n *\n * 与 unwrap/pageParams/toPage 一样是<b>应用接缝</b>:应用 `src/api/<域>.ts` 的导出端点从 smart-admin-web 导入它,\n * 别在自己文件里再抄一份错误信封嗅探(抄漏一个分支就会把失败信封当 xlsx 存到用户磁盘上)。\n */\nexport async function unwrapDownload(res: {\n data?: unknown\n error?: unknown\n response: Response\n}): Promise<Blob> {\n const { data, error, response } = res\n if (!response.ok) {\n const env = (error ?? {}) as Envelope\n if (typeof env.code === 'number')\n throw new ApiError(env.code, env.msgKey, env.args, env.message)\n throw new ApiError(response.status, undefined, undefined, response.statusText)\n }\n const blob = data as Blob\n const ct = response.headers.get('content-type') ?? ''\n if (ct.includes('spreadsheet') || ct.includes('octet-stream')) return blob\n // 200 + application/json = 业务失败信封(导出行数超限等)\n if (ct.includes('json') || ct.includes('text/plain')) {\n const env = JSON.parse(await blob.text()) as Envelope\n if (typeof env.code === 'number' && env.code !== 0) {\n throw new ApiError(env.code, env.msgKey, env.args, env.message)\n }\n } else {\n // content-type 缺失时嗅探:xlsx 是 zip(`PK`),信封以 `{` 开头\n const head = new Uint8Array(await blob.slice(0, 1).arrayBuffer())\n if (head[0] === 0x7b /* { */) {\n const env = JSON.parse(await blob.text()) as Envelope\n if (typeof env.code === 'number' && env.code !== 0) {\n throw new ApiError(env.code, env.msgKey, env.args, env.message)\n }\n }\n }\n return blob\n}\n\n/**\n * 归一 ImportPreview:int64/int 序列化噪音 → number,缺省数组补齐。\n * 与 unwrap/unwrapDownload 一样是<b>应用接缝</b>:应用 `src/api/<域>.ts` 接自己的导入端点时从 smart-admin-web 导入它,\n * 别各自抄一份归一逻辑 —— 漏一个 Number() 就会让 ImportWizard 的错误计数错位。\n */\nexport function normalizePreview(raw: ImportPreview): ImportPreview {\n return {\n headers: raw.headers ?? [],\n mapping: raw.mapping ?? {},\n columns: (raw.columns ?? []).map(c => ({\n key: c.key,\n title: c.title,\n required: c.required,\n dictTypeCode: c.dictTypeCode,\n hint: c.hint,\n width: c.width != null ? Number(c.width) : undefined,\n })),\n rows: (raw.rows ?? []).map(normalizeRow),\n total: Number(raw.total ?? 0),\n errorRows: Number(raw.errorRows ?? 0),\n columnErrors: (raw.columnErrors ?? []).map(e => ({\n columnKey: e.columnKey,\n code: Number(e.code),\n args: e.args,\n })),\n }\n}\n\nfunction normalizeRow(r: ImportRow): ImportRow {\n return {\n index: Number(r.index ?? 0),\n cells: { ...r.cells },\n errors: (r.errors ?? []).map(e => ({\n columnKey: e.columnKey,\n code: Number(e.code),\n args: e.args,\n })),\n }\n}\n\nexport function normalizeCommit(raw: ImportCommitResult): ImportCommitResult {\n return {\n total: Number(raw.total ?? 0),\n inserted: Number(raw.inserted ?? 0),\n updated: Number(raw.updated ?? 0),\n skipped: Number(raw.skipped ?? 0),\n failed: Number(raw.failed ?? 0),\n failures: (raw.failures ?? []).map(normalizeRow),\n }\n}\n\n/**\n * 回传行:schema 把 cells 标成 `Record<string, string>`(无 null),而运行时/编辑态允许空。\n * 发送前把 null/undefined 收成 `''`,避免 openapi-fetch 类型卡死。\n * 同为应用接缝,见 normalizePreview 上的说明。\n */\nexport function toWireRows(rows: ImportRow[]) {\n return rows.map(r => {\n const cells: Record<string, string> = {}\n for (const [k, v] of Object.entries(r.cells ?? {})) cells[k] = v ?? ''\n return {\n index: r.index,\n cells,\n errors: r.errors.map(e => ({\n columnKey: e.columnKey,\n code: e.code,\n args: e.args as Record<string, never> | null | undefined,\n })),\n }\n })\n}\n\nexport const authApi = {\n login: (body: { account: string; password: string; captchaId?: string; captchaCode?: string }) =>\n client.POST('/api/v1/auth/login', { body }).then(r => unwrap<LoginOutput>(r)),\n logout: () => client.POST('/api/v1/auth/logout', {}).then(r => unwrap<boolean>(r)),\n captcha: () =>\n client\n .GET('/api/v1/auth/captcha', {})\n .then(r => unwrap<{ captchaId: string; svg: string; type?: string }>(r)),\n /** 短信二次验证:凭密码登录 40009 信令下发的挑战 Id + 短信码完成登录。 */\n smsChallengeLogin: (body: { challengeId: string; code: string }) =>\n client.POST('/api/v1/auth/login/sms', { body }).then(r => unwrap<LoginOutput>(r)),\n /** 短信二次验证:重发验证码(服务端冷却/日上限,过频抛 40008)。 */\n smsChallengeResend: (body: { challengeId: string }) =>\n client\n .POST('/api/v1/auth/login/sms/resend', { body })\n .then(r => unwrap<{ expiresSeconds: number; resendSeconds: number }>(r)),\n /** TOTP 二次验证完成登录(40018 / SSO totpChallenge);走 openapi-fetch → CSRF/credentials 中间件生效。 */\n totpChallengeLogin: (body: { challengeId: string; code: string }) =>\n client.POST('/api/v1/auth/login/totp', { body }).then(r => unwrap<LoginOutput>(r)),\n /** 短时再认证(高危写操作 40024 后由中间件唤起;窗口约 5 分钟)。 */\n reauth: (body: { method?: string; totpCode?: string; password?: string }) =>\n client.POST('/api/v1/auth/reauth', { body }).then(r => unwrap<void>(r)),\n /** 免密登录发码(图形验证码启用时须携带;响应不区分手机号是否存在,防枚举)。 */\n smsLoginSend: (body: { phone: string; captchaId?: string; captchaCode?: string }) =>\n client\n .POST('/api/v1/auth/sms/send', { body })\n .then(r => unwrap<{ expiresSeconds: number; resendSeconds: number }>(r)),\n /** 免密登录:手机号 + 短信码换令牌。 */\n smsLogin: (body: { phone: string; code: string }) =>\n client.POST('/api/v1/auth/sms/login', { body }).then(r => unwrap<LoginOutput>(r)),\n}\n\n/** TOTP 自助绑定 / 恢复 / 管理员清除(ADR 0006;无邀请路径)。 */\nexport const mfaApi = {\n bindStart: (body: components['schemas']['TotpBindStartInput']) =>\n client\n .POST('/api/v1/auth/mfa/bind/start', { body })\n .then(r => unwrap<components['schemas']['TotpBindStartOutput']>(r)),\n bindComplete: (body: components['schemas']['TotpBindCompleteInput']) =>\n client\n .POST('/api/v1/auth/mfa/bind/complete', { body })\n .then(r => unwrap<components['schemas']['TotpBindCompleteOutput']>(r)),\n recovery: (body: components['schemas']['TotpRecoveryInput']) =>\n client.POST('/api/v1/auth/mfa/recovery', { body }).then(r => unwrap<void>(r)),\n clear: (body: components['schemas']['TotpClearMfaInput']) =>\n client.POST('/api/v1/sys/mfa/clear', { body }).then(r => unwrap<void>(r)),\n}\n\n/** 高敏权限自定义追加(内核默认只读;写操作须 reauth)。 */\nexport const highSensApi = {\n list: () =>\n client\n .GET('/api/v1/sys/mfa/high-sensitivity', {})\n .then(r => unwrap<components['schemas']['HighSensitivityPermissionList']>(r)),\n add: (body: components['schemas']['HighSensitivityPermissionInput']) =>\n client\n .POST('/api/v1/sys/mfa/high-sensitivity', { body })\n .then(r => unwrap<components['schemas']['HighSensitivityPermissionItem']>(r)),\n remove: (id: number) =>\n client\n .DELETE('/api/v1/sys/mfa/high-sensitivity/{id}', { params: { path: { id } } })\n .then(r => unwrap<void>(r)),\n}\n\nexport interface ExternalProvider {\n code: string\n displayName: string\n icon?: string | null\n}\n\n/** 管理端:全部已注册 provider(含已禁用)+ enabled / linkByAccount 两个运营开关。 */\nexport interface ExternalProviderAdmin extends ExternalProvider {\n enabled: boolean\n linkByAccount: boolean\n}\n\nexport interface ExternalBinding {\n provider: string\n displayName?: string | null\n boundAt: string\n}\n\n// 外部登录 / SSO。登录:providers 点亮按钮 → 顶层导航到 authorizeUrl(后端 302 跳 IdP)→ 回调页 exchange 换令牌。\n// 绑定(个人中心):bindStart 拿授权 URL 跳转 → 同一回调把外部身份绑到当前用户;bindings 查、unbind 解绑。\nexport const externalAuthApi = {\n /** 登录页可用的外部登录方式(启用的);空数组 = 不显 SSO 区。 */\n providers: () =>\n client.GET('/api/v1/auth/external/providers', {}).then(r => unwrap<ExternalProvider[]>(r)),\n /** 管理端全量列表(含已禁用);系统配置「第三方登录」Tab。 */\n providersAll: () =>\n client\n .GET('/api/v1/auth/external/providers/all', {})\n .then(r => unwrap<ExternalProviderAdmin[]>(r)),\n /** 发起某 provider 登录的 URL(顶层浏览器导航,不走 fetch —— 后端 302 跳 IdP)。 */\n authorizeUrl: (code: string) =>\n `${runtime.apiBase}/api/v1/auth/external/${encodeURIComponent(code)}/authorize`,\n /** 一次性票据换令牌(登录回调后);票据无效/过期/已用抛 40014。 */\n exchange: (ticket: string) =>\n client\n .POST('/api/v1/auth/external/exchange', { body: { ticket } })\n .then(r => unwrap<LoginOutput>(r)),\n /** 认领未绑定 SSO 的 pending-link(账密登录后);票据无效 40014,已被他人绑 40017。 */\n claimPendingLink: (pendingLink: string) =>\n client\n .POST('/api/v1/auth/external/pending-link/claim', { body: { pendingLink } })\n .then(r => unwrap<boolean>(r)),\n /** 我的外部账号绑定列表(个人中心)。 */\n bindings: () =>\n client.GET('/api/v1/auth/external/bindings', {}).then(r => unwrap<ExternalBinding[]>(r)),\n /** 发起绑定:返回授权 URL,前端跳转开始 OAuth 往返(回调把身份绑到当前用户)。 */\n bindStart: (code: string) =>\n client\n .POST('/api/v1/auth/external/{provider}/bind', { params: { path: { provider: code } } })\n .then(r => unwrap<{ authorizeUrl: string }>(r)),\n /** 解绑某 provider 的外部账号。 */\n unbind: (code: string) =>\n client\n .DELETE('/api/v1/auth/external/{provider}/binding', { params: { path: { provider: code } } })\n .then(r => unwrap<boolean>(r)),\n}\n\nexport const dashboardApi = {\n /** 工作台首页统计([ActiveSession]:任何登录用户可取,无需权限码)。 */\n summary: () => client.GET('/api/v1/dashboard/summary', {}).then(r => unwrap<DashboardSummary>(r)),\n}\n\nexport const personalApi = {\n modules: () => client.GET('/api/v1/personal/modules', {}).then(r => unwrap<MyModulesOutput>(r)),\n menu: (moduleId: number) =>\n client\n .GET('/api/v1/personal/menu', { params: { query: { moduleId } } })\n .then(r => unwrap<MenuNode[]>(r)),\n setDefaultModule: (moduleId: number) =>\n client\n .PUT('/api/v1/personal/default-module', { body: { moduleId } })\n .then(r => unwrap<boolean>(r)),\n profile: () => client.GET('/api/v1/personal/profile', {}).then(r => unwrap<UserProfile>(r)),\n /** 改自己的资料(全量替换语义:缺字段即置空,前端整表单提交)。 */\n updateProfile: (body: {\n name: string\n nickname?: string | null\n phone?: string | null\n email?: string | null\n gender?: string | null\n avatar?: string | null\n }) => client.PUT('/api/v1/personal/profile', { body }).then(r => unwrap<boolean>(r)),\n /** 我的活跃会话列表(个人视角;isCurrent = 本次请求所用会话)。 */\n sessions: () => client.GET('/api/v1/personal/sessions', {}).then(r => unwrap<MySessionItem[]>(r)),\n /** 下线自己的某个会话;他人的/不存在的一律 42024(不区分,防探测)。 */\n kickSession: (sessionId: string) =>\n client\n .DELETE('/api/v1/personal/sessions/{sessionId}', { params: { path: { sessionId } } })\n .then(r => unwrap<boolean>(r)),\n updatePassword: (body: { oldPassword: string; newPassword: string }) =>\n client.PUT('/api/v1/personal/password', { body }).then(r => unwrap<boolean>(r)),\n /** 当前用户权限码集合(= 规范化路由);喂给 authStore.permissionCodes 驱动 v-auth。超管返回空集。 */\n permissions: () => client.GET('/api/v1/personal/permissions', {}).then(r => unwrap<string[]>(r)),\n}\n\n// 用户管理:CRUD + 启停 / 重置密码 + xlsx 导入导出。\nexport const userApi = {\n /** 归一后端 PagedList<UserItem>({current,size,total,items}) → SmartTable fetcher 契约的 {items,total}。 */\n page: (params: {\n page: number\n pageSize: number\n account?: string\n name?: string\n orgId?: number\n roleId?: number\n sortField?: string\n sortOrder?: string\n }) =>\n client\n .GET('/api/v1/sys/user/page', {\n // 查询参数名沿用后端 record 属性(PascalCase);ASP.NET 绑定大小写不敏感,类型要求 PascalCase。\n // roleId:角色反查(「这个角色有哪些人」/ 删角色前报人数)复用本端点,不另开接口。\n // sortField/sortOrder:SmartTable 排序;后端按实体列白名单校验(非法忽略回退默认),见 PagedListExtensions.OrderBySafe。\n params: {\n query: {\n ...pageParams(params),\n Account: params.account,\n Name: params.name,\n OrgId: params.orgId,\n RoleId: params.roleId,\n SortField: params.sortField,\n SortOrder: params.sortOrder,\n },\n },\n })\n .then(r => toPage<UserItem>(r)),\n /** 用户详情(含 roleIds,编辑回显 + 提交时原样带回避免清空角色)。 */\n detail: (id: number) =>\n client\n .GET('/api/v1/sys/user/{id}', { params: { path: { id } } })\n .then(r => unwrap<UserDetail>(r)),\n /** 新增用户;返回新 Id + 实际生效的初始口令(留空 password 时后端随机生成,不接住就没人知道这个号的密码)。 */\n add: (body: AddUserInput) =>\n client.POST('/api/v1/sys/user', { body }).then(r => unwrap<AddUserOutput>(r)),\n update: (id: number, body: UpdateUserInput) =>\n client\n .PUT('/api/v1/sys/user/{id}', { params: { path: { id } }, body })\n .then(r => unwrap<boolean>(r)),\n remove: (id: number) =>\n client\n .DELETE('/api/v1/sys/user/{id}', { params: { path: { id } } })\n .then(r => unwrap<boolean>(r)),\n /** 批量软删除;集合含超管后端整体拒绝(SuperAdminProtected)。 */\n batchRemove: (ids: number[]) =>\n client.POST('/api/v1/sys/user/batch-delete', { body: { ids } }).then(r => unwrap<boolean>(r)),\n /** 重置密码;返回实际生效的初始密码(newPassword 留空 = 后端默认初始密码)。 */\n resetPassword: (id: number, newPassword?: string | null) =>\n client\n .PUT('/api/v1/sys/user/{id}/password', {\n params: { path: { id } },\n body: { newPassword: newPassword || null },\n })\n .then(r => unwrap<string>(r)),\n /** 专用启停端点(非全量 update)。 */\n setEnabled: (id: number, enabled: boolean) =>\n client\n .PUT('/api/v1/sys/user/{id}/enabled', { params: { path: { id } }, body: { enabled } })\n .then(r => unwrap<boolean>(r)),\n\n // ── 导入 / 导出 ──\n\n /** 下载用户导入模板(xlsx)。[ActiveSession],无需独立权限码。 */\n importTemplate: () =>\n client\n .GET('/api/v1/sys/user/import/template', { parseAs: 'blob' })\n .then(r => unwrapDownload(r)),\n\n /**\n * 上传 xlsx 预览校验。multipart:`file` + 可选 `mapping`(JSON 字符串:表头→列 Key)。\n * bodySerializer 建 FormData(坑 3:与 fileApi.upload 同型)。\n */\n importPreview: (file: File, mapping?: Record<string, string>) =>\n client\n .POST('/api/v1/sys/user/import/preview', {\n timeout: LONG_TIMEOUT_MS,\n body: {\n file: file as unknown as string,\n mapping: mapping ? JSON.stringify(mapping) : undefined,\n },\n bodySerializer: body => {\n const b = body as unknown as { file: File; mapping?: string }\n const fd = new FormData()\n fd.append('file', b.file)\n if (b.mapping) fd.append('mapping', b.mapping)\n return fd\n },\n })\n .then(r => normalizePreview(unwrap<ImportPreview>(r))),\n\n /** 对前端改过的行重新校验(不碰文件)。 */\n importValidate: (rows: ImportRow[]) =>\n client\n .POST('/api/v1/sys/user/import/validate', {\n timeout: LONG_TIMEOUT_MS,\n body: { rows: toWireRows(rows) },\n })\n .then(r => normalizePreview(unwrap<ImportPreview>(r))),\n\n /** 下载错误报告 xlsx(原列 +「错误原因」列)。 */\n importErrorReport: (rows: ImportRow[]) =>\n client\n .POST('/api/v1/sys/user/import/error-report', {\n timeout: LONG_TIMEOUT_MS,\n body: { rows: toWireRows(rows) },\n parseAs: 'blob',\n })\n .then(r => unwrapDownload(r)),\n\n /** 按策略提交导入(部分提交:有错行跳过;服务端重校验,不信任前端 Errors)。 */\n importCommit: (rows: ImportRow[], strategy: DuplicateStrategy = 0) =>\n client\n .POST('/api/v1/sys/user/import/commit', {\n timeout: LONG_TIMEOUT_MS,\n body: { rows: toWireRows(rows), strategy },\n })\n .then(r => normalizeCommit(unwrap<ImportCommitResult>(r))),\n\n /**\n * 导出用户 xlsx。筛选条件与列表同源(Account/Name/OrgId/RoleId…)+ `columns` 逗号分隔列 Key。\n * 返回 blob,不进信封。\n */\n export: (params: {\n account?: string\n name?: string\n orgId?: number\n roleId?: number\n enabled?: boolean\n sortField?: string\n sortOrder?: string\n /** 逗号分隔列 Key;缺省 = 档案 DefaultSelected */\n columns?: string\n }) =>\n client\n .GET('/api/v1/sys/user/export', {\n timeout: LONG_TIMEOUT_MS,\n params: {\n query: {\n Account: params.account,\n Name: params.name,\n OrgId: params.orgId,\n RoleId: params.roleId,\n Enabled: params.enabled,\n SortField: params.sortField,\n SortOrder: params.sortOrder,\n columns: params.columns,\n },\n },\n parseAs: 'blob',\n })\n .then(r => unwrapDownload(r)),\n}\n\n// 机构管理:树形机构 CRUD + 子树复制,list 平铺返回由前端 buildTree 拼树。\nexport const orgApi = {\n /** 全部机构(平铺,按 Sort、Id 排序)。前端 buildTree 拼树。下拉 / 树表复用。 */\n list: () => client.GET('/api/v1/sys/org/list', {}).then(r => unwrap<SysOrg[]>(r)),\n add: (body: OrgInput) =>\n client.POST('/api/v1/sys/org/add', { body }).then(r => unwrap<number>(r)),\n update: (id: number, body: OrgInput) =>\n client\n .PUT('/api/v1/sys/org/{id}', { params: { path: { id } }, body })\n .then(r => unwrap<boolean>(r)),\n remove: (id: number) =>\n client\n .DELETE('/api/v1/sys/org/{id}', { params: { path: { id } } })\n .then(r => unwrap<boolean>(r)),\n /** 复制机构子树(整支克隆挂到源节点同级),返回新根 Id。 */\n copy: (id: number, body?: { name?: string }) =>\n client\n .POST('/api/v1/sys/org/{id}/copy', { params: { path: { id } }, body: body })\n .then(r => unwrap<number>(r)),\n}\n\n// 职位管理:普通 CRUD;岗位与机构无关联。\nexport const positionApi = {\n /** 职位分页;搜索键 name → PascalCase Name;sortField/sortOrder → 后端安全排序。下拉(拉大页)/ SmartTable 复用。 */\n page: (params: {\n page: number\n pageSize: number\n name?: string\n sortField?: string\n sortOrder?: string\n }) =>\n client\n .GET('/api/v1/sys/position/page', {\n params: {\n query: {\n ...pageParams(params),\n Name: params.name,\n SortField: params.sortField,\n SortOrder: params.sortOrder,\n },\n },\n })\n .then(r => toPage<SysPosition>(r)),\n add: (body: PositionInput) =>\n client.POST('/api/v1/sys/position/add', { body }).then(r => unwrap<number>(r)),\n update: (id: number, body: PositionInput) =>\n client\n .PUT('/api/v1/sys/position/{id}', { params: { path: { id } }, body })\n .then(r => unwrap<boolean>(r)),\n remove: (id: number) =>\n client\n .DELETE('/api/v1/sys/position/{id}', { params: { path: { id } } })\n .then(r => unwrap<boolean>(r)),\n}\n\n// 角色管理:CRUD + 菜单授权 / 数据范围 / 关联用户三块设置。\nexport const roleApi = {\n /** 角色分页;搜索键 name → PascalCase Name。列表用 + 用户/授权页拉一大页当下拉源。 */\n page: (params: { page: number; pageSize: number; name?: string }) =>\n client\n .GET('/api/v1/sys/role/page', {\n params: { query: { ...pageParams(params), Name: params.name } },\n })\n .then(r => toPage<SysRole>(r)),\n add: (body: RoleInput) =>\n client.POST('/api/v1/sys/role/add', { body }).then(r => unwrap<number>(r)),\n update: (id: number, body: RoleInput) =>\n client\n .PUT('/api/v1/sys/role/{id}', { params: { path: { id } }, body })\n .then(r => unwrap<boolean>(r)),\n remove: (id: number) =>\n client\n .DELETE('/api/v1/sys/role/{id}', { params: { path: { id } } })\n .then(r => unwrap<boolean>(r)),\n /** 批量删除角色(各自级联清关联)。 */\n batchRemove: (ids: number[]) =>\n client.POST('/api/v1/sys/role/batch-delete', { body: { ids } }).then(r => unwrap<boolean>(r)),\n /** 某角色当前授予的菜单 Id 集合(授权抽屉回显)。 */\n getMenus: (id: number) =>\n client\n .GET('/api/v1/sys/role/{id}/menus', { params: { path: { id } } })\n .then(r => unwrap<number[]>(r)),\n /** 全量设置角色授予的菜单(空数组 = 收回全部)。 */\n setMenus: (roleId: number, menuIds: number[]) =>\n client\n .PUT('/api/v1/sys/role/menu', { body: { roleId, menuIds } })\n .then(r => unwrap<boolean>(r)),\n /** 某角色的数据范围配置(未配置返回 null)。 */\n getDataScope: (id: number) =>\n client\n .GET('/api/v1/sys/role/{id}/datascope', { params: { path: { id } } })\n .then(r => unwrap<SysRoleDataScope | null>(r)),\n /** 设置角色数据范围;customOrgIds 仅 scopeType=Custom(5)时有意义。 */\n setDataScope: (roleId: number, scopeType: DataScopeType, customOrgIds?: number[]) =>\n client\n .PUT('/api/v1/sys/role/datascope', { body: { roleId, scopeType, customOrgIds } })\n .then(r => unwrap<boolean>(r)),\n /** 某角色当前关联的用户 Id 集合(授权用户抽屉回显)。 */\n getUsers: (id: number) =>\n client\n .GET('/api/v1/sys/role/{id}/users', { params: { path: { id } } })\n .then(r => unwrap<number[]>(r)),\n /** 全量设置角色关联的用户(空数组 = 收回全部)。 */\n setUsers: (roleId: number, userIds: number[]) =>\n client\n .PUT('/api/v1/sys/role/users', { body: { roleId, userIds } })\n .then(r => unwrap<boolean>(r)),\n}\n\n// 应用(模块)管理:CRUD,门户多应用切换的应用清单来源。\nexport const moduleApi = {\n list: () => client.GET('/api/v1/sys/module/list', {}).then(r => unwrap<ModuleRow[]>(r)),\n add: (body: ModuleInput) =>\n client.POST('/api/v1/sys/module/add', { body }).then(r => unwrap<number>(r)),\n update: (id: number, body: ModuleInput) =>\n client\n .PUT('/api/v1/sys/module/{id}', { params: { path: { id } }, body })\n .then(r => unwrap<boolean>(r)),\n remove: (id: number) =>\n client\n .DELETE('/api/v1/sys/module/{id}', { params: { path: { id } } })\n .then(r => unwrap<boolean>(r)),\n}\n\n// 系统配置:key/value 分页 CRUD + 按分组批量取/存(结构化表单用)+ 站点信息 / 密码策略两个匿名可读端点。\nexport const configApi = {\n /** 归一后端 PagedList<SysConfig> → SmartTable {items,total};搜索键 configKey/name/groupCode → PascalCase 查询参。 */\n page: (params: {\n page: number\n pageSize: number\n configKey?: string\n name?: string\n groupCode?: string\n excludedGroupCodes?: string[]\n }) =>\n client\n .GET('/api/v1/sys/config/page', {\n params: {\n query: {\n ...pageParams(params),\n ConfigKey: params.configKey,\n Name: params.name,\n GroupCode: params.groupCode,\n ExcludedGroupCodes: params.excludedGroupCodes,\n },\n },\n })\n .then(r => toPage<SysConfig>(r)),\n add: (body: ConfigInput) =>\n client.POST('/api/v1/sys/config', { body }).then(r => unwrap<number>(r)),\n update: (id: number, body: ConfigInput) =>\n client\n .PUT('/api/v1/sys/config/{id}', { params: { path: { id } }, body })\n .then(r => unwrap<boolean>(r)),\n remove: (id: number) =>\n client\n .DELETE('/api/v1/sys/config/{id}', { params: { path: { id } } })\n .then(r => unwrap<boolean>(r)),\n /**\n * 取某分组下全部配置(完整行,含 id/key/value),供分类配置中心结构化表单回填。\n * 逐页取全:结构化表单按键回写,漏取的字段会拿默认值把库里的真实值覆盖掉。\n */\n listByGroup: async (group: string) => {\n const all: SysConfig[] = []\n for (let current = 1; ; current++) {\n const page = await client\n .GET('/api/v1/sys/config/page', {\n params: { query: { Current: current, Size: 100, GroupCode: group } },\n })\n .then(r => unwrap<PagedList<SysConfig>>(r))\n all.push(...page.items)\n if (page.items.length === 0 || all.length >= page.total) return all\n }\n },\n /** 批量按键回写配置值(结构化表单保存);仅更新已存在键,未知键后端忽略。 */\n saveBatch: (items: { configKey: string; configValue?: string | null }[]) =>\n client.PUT('/api/v1/sys/config/batch', { body: items }).then(r => unwrap<boolean>(r)),\n /** 站点信息(匿名可读:站点标题/副标题/版权等品牌展示白名单)。 */\n siteInfo: () =>\n client.GET('/api/v1/sys/config/site', {}).then(r =>\n unwrap<{\n title?: string | null\n subtitle?: string | null\n copyright?: string | null\n copyrightUrl?: string | null\n logo?: string | null\n captchaEnabled?: boolean\n smsLoginEnabled?: boolean\n }>(r),\n ),\n /** 当前生效密码策略(任何登录用户可读);改密页据此展示真实规则清单,免配置读权限。 */\n passwordPolicy: () =>\n client.GET('/api/v1/sys/config/password-policy', {}).then(r =>\n unwrap<{\n minLength: number\n requireUpper: boolean\n requireLower: boolean\n requireDigit: boolean\n requireSpecial: boolean\n }>(r),\n ),\n}\n\n/** 日志端点用的参数名是 StartTime/EndTime;拆分与补 23:59:59 的理由见 dayRange。 */\nfunction splitRange(range?: [string, string] | null) {\n const { start, end } = dayRange(range)\n return { StartTime: start, EndTime: end }\n}\n\n// 日志查询:登录 / 操作 / 异常三类日志各自的分页与清空;操作日志另支持导出 xlsx。\nexport const logApi = {\n /** 登录日志分页;账号模糊 + 成败 + 时间范围。 */\n loginPage: (params: {\n page: number\n pageSize: number\n account?: string\n success?: boolean\n createTime?: [string, string] | null\n }) =>\n client\n .GET('/api/v1/sys/log/login/page', {\n params: {\n query: {\n ...pageParams(params),\n Account: params.account,\n Success: params.success,\n ...splitRange(params.createTime),\n },\n },\n })\n .then(r => toPage<SysLoginLog>(r)),\n /** 清空登录日志(硬删,不可恢复)。 */\n loginClear: () => client.DELETE('/api/v1/sys/log/login', {}).then(r => unwrap<boolean>(r)),\n /** 操作日志分页;操作名模糊 + 成败 + 操作人(精确)+ 接口路径(模糊)+ 时间范围——审计要能答\"谁在什么时候干了什么\"。 */\n opPage: (params: {\n page: number\n pageSize: number\n title?: string\n success?: boolean\n operatorId?: number\n path?: string\n createTime?: [string, string] | null\n }) =>\n client\n .GET('/api/v1/sys/log/op/page', {\n params: {\n query: {\n ...pageParams(params),\n Title: params.title,\n Success: params.success,\n OperatorId: params.operatorId,\n Path: params.path,\n ...splitRange(params.createTime),\n },\n },\n })\n .then(r => toPage<SysOpLog>(r)),\n /** 清空操作日志(硬删,不可恢复)。 */\n opClear: () => client.DELETE('/api/v1/sys/log/op', {}).then(r => unwrap<boolean>(r)),\n /**\n * 导出操作日志 xlsx。筛选与 opPage 同源 + `columns` 逗号分隔列 Key。\n * 返回 blob(坑 2);不进信封。\n */\n opExport: (params: {\n title?: string\n success?: boolean\n operatorId?: number\n path?: string\n createTime?: [string, string] | null\n columns?: string\n }) =>\n client\n .GET('/api/v1/sys/log/op/export', {\n timeout: LONG_TIMEOUT_MS,\n params: {\n query: {\n Title: params.title,\n Success: params.success,\n OperatorId: params.operatorId,\n Path: params.path,\n ...splitRange(params.createTime),\n columns: params.columns,\n },\n },\n parseAs: 'blob',\n })\n .then(r => unwrapDownload(r)),\n /** 异常日志分页;接口路径模糊 + 异常类型模糊 + 时间范围。 */\n exceptionPage: (params: {\n page: number\n pageSize: number\n path?: string\n exceptionType?: string\n createTime?: [string, string] | null\n }) =>\n client\n .GET('/api/v1/sys/log/exception/page', {\n params: {\n query: {\n ...pageParams(params),\n Path: params.path,\n ExceptionType: params.exceptionType,\n ...splitRange(params.createTime),\n },\n },\n })\n .then(r => toPage<SysExceptionLog>(r)),\n /** 清空异常日志(硬删,不可恢复)。 */\n exceptionClear: () =>\n client.DELETE('/api/v1/sys/log/exception', {}).then(r => unwrap<boolean>(r)),\n}\n\n// 服务器监控:只读运行快照。\nexport const monitorApi = {\n /** 服务器运行快照(CPU/内存/磁盘/运行时;后端含一次约 500ms 的 CPU 采样)。 */\n server: () => client.GET('/api/v1/sys/monitor/server', {}).then(r => unwrap<ServerInfoOutput>(r)),\n}\n\n// 缓存管理:定向失效动作(只清不看——缓存含明文 OTP、键含 PII,故后端无键浏览/取值端点)。flush* 返回被清条数。\nexport const cacheApi = {\n /** 清全部用户的权限/数据范围缓存(返回被清用户数)。 */\n flushAuth: () => client.POST('/api/v1/sys/cache/flush-auth', {}).then(r => unwrap<number>(r)),\n /** 清全部字典项缓存(返回被清字典类型数)。 */\n flushDict: () => client.POST('/api/v1/sys/cache/flush-dict', {}).then(r => unwrap<number>(r)),\n /** 清全部系统配置缓存(返回被清配置项数)。 */\n flushConfig: () => client.POST('/api/v1/sys/cache/flush-config', {}).then(r => unwrap<number>(r)),\n /** 递增门户代际,令所有用户的门户菜单/模块缓存整体失效(返回新代际值)。 */\n rebuildPortal: () =>\n client.POST('/api/v1/sys/cache/rebuild-portal', {}).then(r => unwrap<number>(r)),\n}\n\n// 字典下拉数据源(公开只读):按类型编码取启用项,不含 id;喂 stores/dict 缓存,与 dictAdminApi 的管理端读取不能互换。\nexport const dictApi = {\n /** 按类型编码取字典项(服务端已按 sort 排序)。归一 int64 序列化噪音 → DictItem 投影,供 stores/dict 缓存消费。 */\n items: (typeCode: string) =>\n client\n .GET('/api/v1/sys/dict/items/{typeCode}', { params: { path: { typeCode } } })\n .then(r =>\n unwrap<{ label?: string; value?: string; sort?: number | string; enabled?: boolean }[]>(r),\n )\n .then(list =>\n list.map((i): DictItem => ({\n label: i.label ?? '',\n value: i.value ?? '',\n sort: Number(i.sort ?? 0),\n enabled: i.enabled ?? true,\n })),\n ),\n}\n\n// 字典管理端(受权限保护):类型 + 字典项 CRUD,含停用项、带 id;下拉展示走 dictApi,两者不能互相替代。\nexport const dictAdminApi = {\n /** 字典类型分页;搜索键 code/name → PascalCase Code/Name 查询参。 */\n typePage: (params: { page: number; pageSize: number; code?: string; name?: string }) =>\n client\n .GET('/api/v1/sys/dict/type/page', {\n params: { query: { ...pageParams(params), Code: params.code, Name: params.name } },\n })\n .then(r => toPage<SysDictType>(r)),\n typeAdd: (body: DictTypeInput) =>\n client.POST('/api/v1/sys/dict/type', { body }).then(r => unwrap<number>(r)),\n typeUpdate: (id: number, body: DictTypeInput) =>\n client\n .PUT('/api/v1/sys/dict/type/{id}', { params: { path: { id } }, body })\n .then(r => unwrap<boolean>(r)),\n typeRemove: (id: number) =>\n client\n .DELETE('/api/v1/sys/dict/type/{id}', { params: { path: { id } } })\n .then(r => unwrap<boolean>(r)),\n /** 批量删除字典类型(各自级联删项)。 */\n typeBatchRemove: (ids: number[]) =>\n client\n .POST('/api/v1/sys/dict/type/batch-delete', { body: { ids } })\n .then(r => unwrap<boolean>(r)),\n /** 某类型下的字典项(管理端:含停用、带 id;非下拉缓存源)。ponytail: 拉一页 200(Api:MaxPageSize 上限),字典项数量小,真超再分页。 */\n items: (typeCode: string) =>\n client\n .GET('/api/v1/sys/dict/item/page', {\n params: { query: { TypeCode: typeCode, Current: 1, Size: 200 } },\n })\n .then(r => unwrap<PagedList<SysDictItem>>(r))\n .then(p => p.items),\n itemAdd: (body: DictItemInput) =>\n client.POST('/api/v1/sys/dict/item', { body }).then(r => unwrap<number>(r)),\n itemUpdate: (id: number, body: DictItemInput) =>\n client\n .PUT('/api/v1/sys/dict/item/{id}', { params: { path: { id } }, body })\n .then(r => unwrap<boolean>(r)),\n itemRemove: (id: number) =>\n client\n .DELETE('/api/v1/sys/dict/item/{id}', { params: { path: { id } } })\n .then(r => unwrap<boolean>(r)),\n /** 批量删除字典项。 */\n itemBatchRemove: (ids: number[]) =>\n client\n .POST('/api/v1/sys/dict/item/batch-delete', { body: { ids } })\n .then(r => unwrap<boolean>(r)),\n}\n\n// 文件管理:分页 / 上传 / 下载 / 删除,外加分片断点续传上传一整套。\nexport const fileApi = {\n /** 文件分页;搜索键 originalName → 后端 FileName 模糊过滤。 */\n page: (params: { page: number; pageSize: number; originalName?: string }) =>\n client\n .GET('/api/v1/sys/file/page', {\n params: { query: { ...pageParams(params), FileName: params.originalName } },\n })\n .then(r => toPage<SysFile>(r)),\n /** 上传单个文件:bodySerializer 建 FormData(字段名 file),openapi-fetch 对 FormData 不注入 json header,浏览器自动补 boundary(client.ts 无需改)。 */\n upload: (file: File) =>\n client\n .POST('/api/v1/sys/file/upload', {\n timeout: LONG_TIMEOUT_MS,\n body: { file: file as unknown as string },\n bodySerializer: body => {\n const fd = new FormData()\n fd.append('file', (body as unknown as { file: File }).file)\n return fd\n },\n })\n .then(r => unwrap<FileUploadOutput>(r)),\n /** 下载:parseAs blob 取原始字节(非信封,不套 unwrap);Bearer 由 client 拦截器自动带。 */\n download: (id: number) =>\n client\n .GET('/api/v1/sys/file/{id}/download', {\n timeout: LONG_TIMEOUT_MS,\n params: { path: { id } },\n parseAs: 'blob',\n })\n .then(r => {\n if (!r.response.ok)\n throw new ApiError(r.response.status, undefined, undefined, r.response.statusText)\n return r.data as Blob\n }),\n remove: (id: number) =>\n client\n .DELETE('/api/v1/sys/file/{id}', { params: { path: { id } } })\n .then(r => unwrap<boolean>(r)),\n /** 批量软删除文件记录(物理文件保留)。 */\n batchRemove: (ids: number[]) =>\n client.POST('/api/v1/sys/file/batch-delete', { body: { ids } }).then(r => unwrap<boolean>(r)),\n // ── 分片 / 断点续传上传 ──\n /** 分片初始化:秒传探测 + 已收分片(断点续传)。 */\n chunkInit: (body: {\n fileHash: string\n fileName: string\n totalSize: number\n chunkCount: number\n }) => client.POST('/api/v1/sys/file/chunk/init', { body }).then(r => unwrap<ChunkInitOutput>(r)),\n /** 上传单个分片(multipart:uploadId + index + chunk),同 upload 用 bodySerializer 建 FormData。 */\n chunkUpload: (uploadId: string, index: number, chunk: Blob) =>\n client\n .POST('/api/v1/sys/file/chunk', {\n timeout: LONG_TIMEOUT_MS,\n body: { uploadId, index, chunk: chunk as unknown as string },\n bodySerializer: body => {\n const b = body as unknown as { uploadId: string; index: number; chunk: Blob }\n const fd = new FormData()\n fd.append('uploadId', b.uploadId)\n fd.append('index', String(b.index))\n fd.append('chunk', b.chunk)\n return fd\n },\n })\n .then(r => unwrap<boolean>(r)),\n /** 完成:触发服务端合并 + 哈希校验 + 三道关 + 落库。 */\n chunkComplete: (body: {\n uploadId: string\n fileHash: string\n fileName: string\n chunkCount: number\n }) =>\n client\n .POST('/api/v1/sys/file/chunk/complete', { timeout: LONG_TIMEOUT_MS, body })\n .then(r => unwrap<FileUploadOutput>(r)),\n}\n\n// 在线会话:只读分页 + 按 sessionId 强制下线。\nexport const sessionApi = {\n /** 在线会话分页(只读)。后端仅支持按 UserId 过滤,这里不带业务搜索。 */\n online: (params: { page: number; pageSize: number }) =>\n client\n .GET('/api/v1/sys/session/online', { params: { query: pageParams(params) } })\n .then(r => toPage<OnlineSessionItem>(r)),\n /** 强制下线:按 sessionId 踢会话。 */\n kick: (sessionId: string) =>\n client\n .DELETE('/api/v1/sys/session/{sessionId}', { params: { path: { sessionId } } })\n .then(r => unwrap<boolean>(r)),\n}\n\n// 系统通知:管理端发布 / 撤回 + 用户端分页拉取 / 标记已读。\nexport const noticeApi = {\n // ── 管理端 ──\n /** 管理端分页(全量);搜索键 title/type → PascalCase 查询参。 */\n page: (params: { page: number; pageSize: number; title?: string; type?: number }) =>\n client\n .GET('/api/v1/sys/notice/page', {\n params: { query: { ...pageParams(params), Title: params.title, Type: params.type } },\n })\n .then(r => toPage<SysNotice>(r)),\n publish: (body: NoticePublishInput) =>\n client.POST('/api/v1/sys/notice', { body }).then(r => unwrap<number>(r)),\n remove: (id: number) =>\n client\n .DELETE('/api/v1/sys/notice/{id}', { params: { path: { id } } })\n .then(r => unwrap<boolean>(r)),\n // ── 用户端(任何登录用户) ──\n /** 我的通知分页(含已读标记);onlyUnread 供\"未读\"页签用。 */\n mine: (params: { page: number; pageSize: number; onlyUnread?: boolean }) =>\n client\n .GET('/api/v1/sys/notice/mine', {\n params: { query: { ...pageParams(params), OnlyUnread: params.onlyUnread } },\n })\n .then(r => toPage<NoticeMineItem>(r)),\n /** 当前用户未读通知数(顶栏角标轮询)。 */\n unreadCount: () => client.GET('/api/v1/sys/notice/unread-count', {}).then(r => unwrap<number>(r)),\n markRead: (id: number) =>\n client\n .PUT('/api/v1/sys/notice/{id}/read', { params: { path: { id } } })\n .then(r => unwrap<boolean>(r)),\n markAllRead: () => client.PUT('/api/v1/sys/notice/read-all', {}).then(r => unwrap<boolean>(r)),\n}\n\n// 菜单管理:菜单树 CRUD + 可授权路由清单(喂菜单表单「权限码」下拉)。\nexport const menuApi = {\n tree: () => client.GET('/api/v1/sys/menu/tree', {}).then(r => unwrap<MenuTreeNode[]>(r)),\n /** 可授权路由清单(后端 EndpointDataSource 实时算出,含消费方自建控制器);喂菜单表单「权限码」下拉,免手敲。 */\n routes: () =>\n client.GET('/api/v1/sys/menu/routes', {}).then(r => unwrap<PermissionRouteItem[]>(r)),\n add: (body: MenuInput) =>\n client.POST('/api/v1/sys/menu/add', { body }).then(r => unwrap<number>(r)),\n update: (id: number, body: MenuInput) =>\n client\n .PUT('/api/v1/sys/menu/{id}', { params: { path: { id } }, body })\n .then(r => unwrap<boolean>(r)),\n remove: (id: number) =>\n client\n .DELETE('/api/v1/sys/menu/{id}', { params: { path: { id } } })\n .then(r => unwrap<boolean>(r)),\n}\n\n// ── 定时任务 ──────────────────────────────\n\n// 定时任务:CRUD + 启停 / 手动执行一次 / cron 预览 / 处理器清单,外加执行记录查询、终止与监控仪表盘。\nexport const jobApi = {\n /** 任务分页;搜索键 name/status/handlerKind → PascalCase 查询参。行含全列,编辑表单直接用行数据。 */\n page: (params: {\n page: number\n pageSize: number\n name?: string\n status?: number\n handlerKind?: number\n sortField?: string\n sortOrder?: string\n }) =>\n client\n .GET('/api/v1/sys/job/page', {\n params: {\n query: {\n ...pageParams(params),\n Name: params.name,\n Status: params.status,\n HandlerKind: params.handlerKind,\n SortField: params.sortField,\n SortOrder: params.sortOrder,\n },\n },\n })\n .then(r => toPage<SysJob>(r)),\n add: (body: JobInput) => client.POST('/api/v1/sys/job', { body }).then(r => unwrap<number>(r)),\n update: (id: number, body: JobInput) =>\n client\n .PUT('/api/v1/sys/job/{id}', { params: { path: { id } }, body })\n .then(r => unwrap<boolean>(r)),\n remove: (id: number) =>\n client\n .DELETE('/api/v1/sys/job/{id}', { params: { path: { id } } })\n .then(r => unwrap<boolean>(r)),\n /** 批量删除(命中内置任务后端整批拒绝 47014)。 */\n batchRemove: (ids: number[]) =>\n client.POST('/api/v1/sys/job/batch-delete', { body: { ids } }).then(r => unwrap<boolean>(r)),\n /** 专用启停端点:true=恢复调度并重算下次执行时刻(顺带清连败计数),false=暂停。 */\n setEnabled: (id: number, enabled: boolean) =>\n client\n .PUT('/api/v1/sys/job/{id}/enabled', { params: { path: { id }, query: { enabled } } })\n .then(r => unwrap<boolean>(r)),\n /** 执行一次(收到请求的副本本机执行,不经选主、不影响调度节奏)。 */\n run: (id: number) =>\n client\n .POST('/api/v1/sys/job/{id}/run', { params: { path: { id } } })\n .then(r => unwrap<boolean>(r)),\n /** cron 预览([ActiveSession] 任何登录用户可用;POST 因 cron 含 `? #` 走 query 有转义坑)。 */\n previewCron: (body: { cron: string; count?: number; from?: string | null }) =>\n client.POST('/api/v1/sys/job/preview-cron', { body }).then(r => unwrap<CronPreviewOutput>(r)),\n /** 已注册的编译处理器清单(表单下拉数据源,免手打 HandlerName)。 */\n handlers: () =>\n client.GET('/api/v1/sys/job/handlers', {}).then(r => unwrap<JobHandlersOutput>(r)),\n /**\n * 执行记录分页。startRange 是 SmartTable daterange 的 [开始, 结束] 日期串,\n * 拆成后端 StartFrom/StartTo,结束日补 23:59:59(同 splitRange 的理由,但参数名不同,不复用)。\n */\n logPage: (params: {\n page: number\n pageSize: number\n jobId?: number\n runStatus?: number\n startRange?: [string, string] | null\n fireInstanceId?: number\n }) =>\n client\n .GET('/api/v1/sys/job/log/page', {\n params: {\n query: {\n ...pageParams(params),\n JobId: params.jobId,\n RunStatus: params.runStatus,\n FireInstanceId: params.fireInstanceId,\n StartFrom: params.startRange?.[0] || undefined,\n StartTo: params.startRange?.[1] ? `${params.startRange[1]} 23:59:59` : undefined,\n },\n },\n })\n .then(r => toPage<SysJobLog>(r)),\n /** 终止一次执行(跨节点写终止旗标,目标节点最迟 KillPollSeconds 后停)。 */\n kill: (logId: number) =>\n client\n .POST('/api/v1/sys/job/log/{id}/kill', { params: { path: { id: logId } } })\n .then(r => unwrap<boolean>(r)),\n /** 清空执行记录(硬删;运行中的一律保留),返回删除行数。 */\n logClear: (body: { beforeDays?: number | null; jobId?: number | null }) =>\n client.POST('/api/v1/sys/job/log/clear', { body }).then(r => unwrap<number>(r)),\n /** 监控仪表盘(今日成败/在飞/趋势/即将执行/集群节点)。 */\n dashboard: () => client.GET('/api/v1/sys/job/dashboard', {}).then(r => unwrap<JobDashboard>(r)),\n}\n\n// ── 回收站 ────────────────────────────────────────────────────────\n\nexport interface RecycleBinItem {\n id: number\n name: string\n code: string | null\n deletedAt: string | null\n deletedBy: number | null\n}\n\nexport const recycleApi = {\n page: (type: string) => (params: { page: number; pageSize: number }) =>\n client\n .GET('/api/v1/sys/recycle/{type}/page', {\n params: { path: { type }, query: pageParams(params) },\n })\n .then(r => toPage<RecycleBinItem>(r)),\n restore: (type: string, id: number) =>\n client\n .POST('/api/v1/sys/recycle/{type}/{id}/restore', { params: { path: { type, id } } })\n .then(r => unwrap<boolean>(r)),\n purge: (type: string, id: number) =>\n client\n .DELETE('/api/v1/sys/recycle/{type}/{id}', { params: { path: { type, id } } })\n .then(r => unwrap<boolean>(r)),\n}\n"],"names":["ApiError","code","msgKey","args","message","__publicField","unwrap","res","data","error","response","env","pd","callApi","method","url","body","request","client","r","pageParams","p","listQuery","dayRange","range","toPage","unwrapDownload","blob","ct","normalizePreview","raw","c","normalizeRow","e","normalizeCommit","toWireRows","rows","cells","k","v","authApi","mfaApi","highSensApi","id","externalAuthApi","runtime","ticket","pendingLink","dashboardApi","personalApi","moduleId","sessionId","userApi","params","ids","newPassword","enabled","file","mapping","LONG_TIMEOUT_MS","b","fd","strategy","orgApi","positionApi","roleApi","roleId","menuIds","scopeType","customOrgIds","userIds","moduleApi","configApi","group","all","current","page","items","splitRange","start","end","logApi","monitorApi","cacheApi","dictApi","typeCode","list","dictAdminApi","fileApi","uploadId","index","chunk","sessionApi","noticeApi","menuApi","jobApi","_a","_b","logId","recycleApi","type"],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * 短时再认证(40024)闸门:client 中间件在 403 + ReauthRequired 时调用,
3
+ * UI 宿主(ReauthModal)注册 handler 弹窗收 TOTP/密码后 resolve。
4
+ * 并发 403 合流到同一次弹窗。
5
+ */
6
+ export declare const REAUTH_REQUIRED_CODE = 40024;
7
+ export declare const REAUTH_RETRY_HEADER = "X-Smart-Reauth-Retried";
8
+ type ReauthHandler = () => Promise<boolean>;
9
+ /** 布局/App 挂载时注册;卸载时传 null。 */
10
+ export declare function registerReauthHandler(h: ReauthHandler | null): void;
11
+ /**
12
+ * 请求一次再认证。无 handler 或用户取消 → false。
13
+ * 已有进行中的弹窗则复用同一 Promise。
14
+ */
15
+ export declare function requestReauth(): Promise<boolean>;
16
+ export {};
@@ -0,0 +1,21 @@
1
+ const r = 40024, l = "X-Smart-Reauth-Retried";
2
+ let e = null, t = null;
3
+ function u(n) {
4
+ e = n;
5
+ }
6
+ function a() {
7
+ return t || (t = (async () => {
8
+ try {
9
+ return e ? await e() : !1;
10
+ } finally {
11
+ t = null;
12
+ }
13
+ })(), t);
14
+ }
15
+ export {
16
+ r as REAUTH_REQUIRED_CODE,
17
+ l as REAUTH_RETRY_HEADER,
18
+ u as registerReauthHandler,
19
+ a as requestReauth
20
+ };
21
+ //# sourceMappingURL=reauthGate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reauthGate.js","sources":["../../src/api/reauthGate.ts"],"sourcesContent":["/**\n * 短时再认证(40024)闸门:client 中间件在 403 + ReauthRequired 时调用,\n * UI 宿主(ReauthModal)注册 handler 弹窗收 TOTP/密码后 resolve。\n * 并发 403 合流到同一次弹窗。\n */\n\nexport const REAUTH_REQUIRED_CODE = 40024\nexport const REAUTH_RETRY_HEADER = 'X-Smart-Reauth-Retried'\n\ntype ReauthHandler = () => Promise<boolean>\n\nlet handler: ReauthHandler | null = null\nlet inflight: Promise<boolean> | null = null\n\n/** 布局/App 挂载时注册;卸载时传 null。 */\nexport function registerReauthHandler(h: ReauthHandler | null): void {\n handler = h\n}\n\n/**\n * 请求一次再认证。无 handler 或用户取消 → false。\n * 已有进行中的弹窗则复用同一 Promise。\n */\nexport function requestReauth(): Promise<boolean> {\n if (inflight) return inflight\n inflight = (async () => {\n try {\n if (!handler) return false\n return await handler()\n } finally {\n inflight = null\n }\n })()\n return inflight\n}\n"],"names":["REAUTH_REQUIRED_CODE","REAUTH_RETRY_HEADER","handler","inflight","registerReauthHandler","h","requestReauth"],"mappings":"AAMO,MAAMA,IAAuB,OACvBC,IAAsB;AAInC,IAAIC,IAAgC,MAChCC,IAAoC;AAGjC,SAASC,EAAsBC,GAA+B;AACnE,EAAAH,IAAUG;AACZ;AAMO,SAASC,IAAkC;AAChD,SAAIH,MACJA,KAAY,YAAY;AACtB,QAAI;AACF,aAAKD,IACE,MAAMA,EAAA,IADQ;AAAA,IAEvB,UAAA;AACE,MAAAC,IAAW;AAAA,IACb;AAAA,EACF,GAAA,GACOA;AACT;"}