smart-admin-web 10.14.0 → 10.15.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 (194) hide show
  1. package/README.md +5 -5
  2. package/dist/api/index.d.ts +37 -0
  3. package/dist/api/index.js +35 -14
  4. package/dist/api/index.js.map +1 -1
  5. package/dist/api/schema.d.ts +381 -3
  6. package/dist/assets/icons/ph-subset.json.js +3 -3
  7. package/dist/assets/smart-logo.svg.js +5 -0
  8. package/dist/assets/smart-logo.svg.js.map +1 -0
  9. package/dist/components/SmartLogo.vue.d.ts +3 -0
  10. package/dist/components/SmartLogo.vue.js +1 -1
  11. package/dist/components/SmartLogo2.vue.js +22 -64
  12. package/dist/components/SmartLogo2.vue.js.map +1 -1
  13. package/dist/composables/useLoginHero.d.ts +2 -0
  14. package/dist/composables/useLoginHero.js +22 -0
  15. package/dist/composables/useLoginHero.js.map +1 -0
  16. package/dist/composables/usePageTitle.js +16 -14
  17. package/dist/composables/usePageTitle.js.map +1 -1
  18. package/dist/composables/useSite.d.ts +5 -0
  19. package/dist/composables/useSite.js +16 -13
  20. package/dist/composables/useSite.js.map +1 -1
  21. package/dist/index.js +92 -91
  22. package/dist/lib/favicon.d.ts +1 -0
  23. package/dist/lib/favicon.js +12 -0
  24. package/dist/lib/favicon.js.map +1 -0
  25. package/dist/lib/loginHero.d.ts +16 -0
  26. package/dist/lib/loginHero.js +33 -0
  27. package/dist/lib/loginHero.js.map +1 -0
  28. package/dist/lib/logoCrop.d.ts +25 -0
  29. package/dist/lib/logoCrop.js +22 -0
  30. package/dist/lib/logoCrop.js.map +1 -0
  31. package/dist/lib/runtime.d.ts +2 -0
  32. package/dist/lib/runtime.js +1 -1
  33. package/dist/lib/runtime.js.map +1 -1
  34. package/dist/lib/securityRules.d.ts +26 -0
  35. package/dist/lib/securityRules.js +86 -0
  36. package/dist/lib/securityRules.js.map +1 -0
  37. package/dist/locales/en-US.d.ts +242 -28
  38. package/dist/locales/en-US.js +262 -58
  39. package/dist/locales/en-US.js.map +1 -1
  40. package/dist/locales/zh-CN.d.ts +242 -28
  41. package/dist/locales/zh-CN.js +257 -58
  42. package/dist/locales/zh-CN.js.map +1 -1
  43. package/dist/router/viewRegistry.js +10 -10
  44. package/dist/router/viewRegistry.js.map +1 -1
  45. package/dist/style.css +1 -1
  46. package/dist/utils/oauthBrand.d.ts +34 -9
  47. package/dist/utils/oauthBrand.js +70 -74
  48. package/dist/utils/oauthBrand.js.map +1 -1
  49. package/dist/views/login/components/LoginHeroPanel.vue.d.ts +18 -0
  50. package/dist/views/login/components/LoginHeroPanel.vue.js +8 -0
  51. package/dist/views/login/components/LoginHeroPanel.vue.js.map +1 -0
  52. package/dist/views/login/components/LoginHeroPanel2.vue.js +66 -0
  53. package/dist/views/login/components/LoginHeroPanel2.vue.js.map +1 -0
  54. package/dist/views/login/skins/SplitPanel.vue.js +1 -1
  55. package/dist/views/login/skins/SplitPanel2.vue.js +39 -59
  56. package/dist/views/login/skins/SplitPanel2.vue.js.map +1 -1
  57. package/dist/views/system/config/components/AdminMock.vue.js +8 -0
  58. package/dist/views/system/config/components/AdminMock.vue.js.map +1 -0
  59. package/dist/views/system/config/components/AdminMock2.vue.js +76 -0
  60. package/dist/views/system/config/components/AdminMock2.vue.js.map +1 -0
  61. package/dist/views/system/config/components/AdvancedSection.vue.js +5 -0
  62. package/dist/views/system/config/components/AdvancedSection.vue.js.map +1 -0
  63. package/dist/views/system/config/components/AdvancedSection2.vue.js +135 -0
  64. package/dist/views/system/config/components/AdvancedSection2.vue.js.map +1 -0
  65. package/dist/views/system/config/components/BrandSection.vue.d.ts +7 -0
  66. package/dist/views/system/config/components/BrandSection.vue.js +8 -0
  67. package/dist/views/system/config/components/BrandSection.vue.js.map +1 -0
  68. package/dist/views/system/config/components/BrandSection2.vue.js +264 -0
  69. package/dist/views/system/config/components/BrandSection2.vue.js.map +1 -0
  70. package/dist/views/system/config/components/CfgGroup.vue.d.ts +18 -0
  71. package/dist/views/system/config/components/CfgGroup.vue.js +8 -0
  72. package/dist/views/system/config/components/CfgGroup.vue.js.map +1 -0
  73. package/dist/views/system/config/components/CfgGroup2.vue.js +22 -0
  74. package/dist/views/system/config/components/CfgGroup2.vue.js.map +1 -0
  75. package/dist/views/system/config/components/CfgRow.vue.d.ts +26 -0
  76. package/dist/views/system/config/components/CfgRow.vue.js +9 -0
  77. package/dist/views/system/config/components/CfgRow.vue.js.map +1 -0
  78. package/dist/views/system/config/components/CfgRow2.vue.js +53 -0
  79. package/dist/views/system/config/components/CfgRow2.vue.js.map +1 -0
  80. package/dist/views/system/config/components/CfgSegment.vue.d.ts +28 -0
  81. package/dist/views/system/config/components/CfgSegment.vue.js +8 -0
  82. package/dist/views/system/config/components/CfgSegment.vue.js.map +1 -0
  83. package/dist/views/system/config/components/CfgSegment2.vue.js +44 -0
  84. package/dist/views/system/config/components/CfgSegment2.vue.js.map +1 -0
  85. package/dist/views/system/config/components/ConfigFormModal.vue.js +5 -2
  86. package/dist/views/system/config/components/ConfigFormModal.vue.js.map +1 -1
  87. package/dist/views/system/config/components/ConfigFormModal2.vue.js +66 -56
  88. package/dist/views/system/config/components/ConfigFormModal2.vue.js.map +1 -1
  89. package/dist/views/system/config/components/JobSection.vue.js +8 -0
  90. package/dist/views/system/config/components/JobSection.vue.js.map +1 -0
  91. package/dist/views/system/config/components/JobSection2.vue.js +138 -0
  92. package/dist/views/system/config/components/JobSection2.vue.js.map +1 -0
  93. package/dist/views/system/config/components/{GroupExtraConfig.vue.d.ts → LoginMock.vue.d.ts} +3 -4
  94. package/dist/views/system/config/components/LoginMock.vue.js +8 -0
  95. package/dist/views/system/config/components/LoginMock.vue.js.map +1 -0
  96. package/dist/views/system/config/components/LoginMock2.vue.js +121 -0
  97. package/dist/views/system/config/components/LoginMock2.vue.js.map +1 -0
  98. package/dist/views/system/config/components/LogoCropper.vue.d.ts +10 -0
  99. package/dist/views/system/config/components/LogoCropper.vue.js +8 -0
  100. package/dist/views/system/config/components/LogoCropper.vue.js.map +1 -0
  101. package/dist/views/system/config/components/LogoCropper2.vue.js +122 -0
  102. package/dist/views/system/config/components/LogoCropper2.vue.js.map +1 -0
  103. package/dist/views/system/config/components/LogoEditor.vue.js +8 -0
  104. package/dist/views/system/config/components/LogoEditor.vue.js.map +1 -0
  105. package/dist/views/system/config/components/LogoEditor2.vue.js +163 -0
  106. package/dist/views/system/config/components/LogoEditor2.vue.js.map +1 -0
  107. package/dist/views/system/config/components/ProviderSheet.vue.d.ts +17 -0
  108. package/dist/views/system/config/components/ProviderSheet.vue.js +8 -0
  109. package/dist/views/system/config/components/ProviderSheet.vue.js.map +1 -0
  110. package/dist/views/system/config/components/ProviderSheet2.vue.js +343 -0
  111. package/dist/views/system/config/components/ProviderSheet2.vue.js.map +1 -0
  112. package/dist/views/system/config/components/ScaleToFit.vue.d.ts +17 -0
  113. package/dist/views/system/config/components/ScaleToFit.vue.js +8 -0
  114. package/dist/views/system/config/components/ScaleToFit.vue.js.map +1 -0
  115. package/dist/views/system/config/components/ScaleToFit2.vue.js +41 -0
  116. package/dist/views/system/config/components/ScaleToFit2.vue.js.map +1 -0
  117. package/dist/views/system/config/components/SectionLayout.vue.d.ts +28 -0
  118. package/dist/views/system/config/components/SectionLayout.vue.js +8 -0
  119. package/dist/views/system/config/components/SectionLayout.vue.js.map +1 -0
  120. package/dist/views/system/config/components/SectionLayout2.vue.js +45 -0
  121. package/dist/views/system/config/components/SectionLayout2.vue.js.map +1 -0
  122. package/dist/views/system/config/components/SecuritySection.vue.js +8 -0
  123. package/dist/views/system/config/components/SecuritySection.vue.js.map +1 -0
  124. package/dist/views/system/config/components/SecuritySection2.vue.js +416 -0
  125. package/dist/views/system/config/components/SecuritySection2.vue.js.map +1 -0
  126. package/dist/views/system/config/components/SensitiveSection.vue.js +8 -0
  127. package/dist/views/system/config/components/SensitiveSection.vue.js.map +1 -0
  128. package/dist/views/system/config/components/SensitiveSection2.vue.js +209 -0
  129. package/dist/views/system/config/components/SensitiveSection2.vue.js.map +1 -0
  130. package/dist/views/system/config/components/SigninSection.vue.js +8 -0
  131. package/dist/views/system/config/components/SigninSection.vue.js.map +1 -0
  132. package/dist/views/system/config/components/SigninSection2.vue.js +201 -0
  133. package/dist/views/system/config/components/SigninSection2.vue.js.map +1 -0
  134. package/dist/views/system/config/components/UploadSection.vue.d.ts +3 -0
  135. package/dist/views/system/config/components/UploadSection.vue.js +8 -0
  136. package/dist/views/system/config/components/UploadSection.vue.js.map +1 -0
  137. package/dist/views/system/config/components/UploadSection2.vue.js +167 -0
  138. package/dist/views/system/config/components/UploadSection2.vue.js.map +1 -0
  139. package/dist/views/system/config/draft.d.ts +148 -0
  140. package/dist/views/system/config/draft.js +170 -0
  141. package/dist/views/system/config/draft.js.map +1 -0
  142. package/dist/views/system/config/flash.d.ts +2 -0
  143. package/dist/views/system/config/flash.js +9 -0
  144. package/dist/views/system/config/flash.js.map +1 -0
  145. package/dist/views/system/config/groups.d.ts +35 -7
  146. package/dist/views/system/config/groups.js +99 -14
  147. package/dist/views/system/config/groups.js.map +1 -1
  148. package/dist/views/system/config/index.vue.js +4 -1
  149. package/dist/views/system/config/index.vue.js.map +1 -1
  150. package/dist/views/system/config/index2.vue.js +180 -115
  151. package/dist/views/system/config/index2.vue.js.map +1 -1
  152. package/dist/views/system/config/providerForm.d.ts +33 -0
  153. package/dist/views/system/config/providerForm.js +63 -0
  154. package/dist/views/system/config/providerForm.js.map +1 -0
  155. package/package.json +4 -4
  156. package/dist/views/system/config/components/ExternalAuthConfig.vue.js +0 -8
  157. package/dist/views/system/config/components/ExternalAuthConfig.vue.js.map +0 -1
  158. package/dist/views/system/config/components/ExternalAuthConfig2.vue.js +0 -218
  159. package/dist/views/system/config/components/ExternalAuthConfig2.vue.js.map +0 -1
  160. package/dist/views/system/config/components/GroupExtraConfig.vue.js +0 -8
  161. package/dist/views/system/config/components/GroupExtraConfig.vue.js.map +0 -1
  162. package/dist/views/system/config/components/GroupExtraConfig2.vue.js +0 -108
  163. package/dist/views/system/config/components/GroupExtraConfig2.vue.js.map +0 -1
  164. package/dist/views/system/config/components/HighSensConfig.vue.js +0 -5
  165. package/dist/views/system/config/components/HighSensConfig.vue.js.map +0 -1
  166. package/dist/views/system/config/components/HighSensConfig2.vue.js +0 -134
  167. package/dist/views/system/config/components/HighSensConfig2.vue.js.map +0 -1
  168. package/dist/views/system/config/components/JobConfig.vue.js +0 -5
  169. package/dist/views/system/config/components/JobConfig.vue.js.map +0 -1
  170. package/dist/views/system/config/components/JobConfig2.vue.js +0 -116
  171. package/dist/views/system/config/components/JobConfig2.vue.js.map +0 -1
  172. package/dist/views/system/config/components/OtherConfig.vue.js +0 -5
  173. package/dist/views/system/config/components/OtherConfig.vue.js.map +0 -1
  174. package/dist/views/system/config/components/OtherConfig2.vue.js +0 -121
  175. package/dist/views/system/config/components/OtherConfig2.vue.js.map +0 -1
  176. package/dist/views/system/config/components/SecurityConfig.vue.js +0 -8
  177. package/dist/views/system/config/components/SecurityConfig.vue.js.map +0 -1
  178. package/dist/views/system/config/components/SecurityConfig2.vue.js +0 -456
  179. package/dist/views/system/config/components/SecurityConfig2.vue.js.map +0 -1
  180. package/dist/views/system/config/components/SysBaseConfig.vue.js +0 -5
  181. package/dist/views/system/config/components/SysBaseConfig.vue.js.map +0 -1
  182. package/dist/views/system/config/components/SysBaseConfig2.vue.js +0 -107
  183. package/dist/views/system/config/components/SysBaseConfig2.vue.js.map +0 -1
  184. package/dist/views/system/config/components/UploadConfig.vue.js +0 -5
  185. package/dist/views/system/config/components/UploadConfig.vue.js.map +0 -1
  186. package/dist/views/system/config/components/UploadConfig2.vue.js +0 -135
  187. package/dist/views/system/config/components/UploadConfig2.vue.js.map +0 -1
  188. /package/dist/views/system/config/components/{ExternalAuthConfig.vue.d.ts → AdminMock.vue.d.ts} +0 -0
  189. /package/dist/views/system/config/components/{HighSensConfig.vue.d.ts → AdvancedSection.vue.d.ts} +0 -0
  190. /package/dist/views/system/config/components/{JobConfig.vue.d.ts → JobSection.vue.d.ts} +0 -0
  191. /package/dist/views/system/config/components/{OtherConfig.vue.d.ts → LogoEditor.vue.d.ts} +0 -0
  192. /package/dist/views/system/config/components/{SecurityConfig.vue.d.ts → SecuritySection.vue.d.ts} +0 -0
  193. /package/dist/views/system/config/components/{SysBaseConfig.vue.d.ts → SensitiveSection.vue.d.ts} +0 -0
  194. /package/dist/views/system/config/components/{UploadConfig.vue.d.ts → SigninSection.vue.d.ts} +0 -0
package/README.md CHANGED
@@ -9,7 +9,7 @@ SmartAdmin 的前端内核:布局壳、动态菜单路由、登录与鉴权、
9
9
  从前端模板起步最省事,它就是一个装好这个包的薄壳应用:
10
10
 
11
11
  ```bash
12
- npx degit SmartCode-X/SmartAdmin/web/template web
12
+ npx degit SimpleOne-X/SmartAdmin/web/template web
13
13
  cd web
14
14
  npm install
15
15
  npm run dev
@@ -66,13 +66,13 @@ import { SmartTable } from 'smart-naive-table'
66
66
 
67
67
  ## 版本
68
68
 
69
- 版本号与 NuGet 包 `SmartAdmin` 一致:主版本 = 内核所用的 .NET 主版本,次版本加功能,修订号修 bug。内置页照同一版后端的接口写,所以 `package.json` 里精确钉住版本、不带 `^`;升级时后端的 `SmartAdmin` 包与前端的 `smart-admin-web` 填同一个数字,改动见 [CHANGELOG](https://github.com/SmartCode-X/SmartAdmin/blob/main/CHANGELOG.md)。
69
+ 版本号与 NuGet 包 `SmartAdmin` 一致:主版本 = 内核所用的 .NET 主版本,次版本加功能,修订号修 bug。内置页照同一版后端的接口写,所以 `package.json` 里精确钉住版本、不带 `^`;升级时后端的 `SmartAdmin` 包与前端的 `smart-admin-web` 填同一个数字,改动见 [CHANGELOG](https://github.com/SimpleOne-X/SmartAdmin/blob/main/CHANGELOG.md)。
70
70
 
71
71
  ## 文档
72
72
 
73
- - 文档站:<https://smartcode-x.github.io/SmartAdmin/zh/>
74
- - 共享组件目录:[web/COMPONENTS.md](https://github.com/SmartCode-X/SmartAdmin/blob/main/web/COMPONENTS.md)
75
- - 源码与 issue:<https://github.com/SmartCode-X/SmartAdmin>
73
+ - 文档站:<https://simpleone-x.github.io/SmartAdmin/zh/>
74
+ - 共享组件目录:[web/COMPONENTS.md](https://github.com/SimpleOne-X/SmartAdmin/blob/main/web/COMPONENTS.md)
75
+ - 源码与 issue:<https://github.com/SimpleOne-X/SmartAdmin>
76
76
 
77
77
  ## 许可证
78
78
 
@@ -226,7 +226,32 @@ export declare const externalAuthApi: {
226
226
  }>;
227
227
  /** 解绑某 provider 的外部账号。 */
228
228
  unbind: (code: string) => Promise<boolean>;
229
+ /** 管理端:类型目录 + 全部 provider 的配置状态(机密只回 hasValue 与尾四位)。「登录方式」页。 */
230
+ catalog: () => Promise<{
231
+ dataProtectionEphemeral: boolean;
232
+ callbackBaseUrlMissing: boolean;
233
+ types: components["schemas"]["ExternalAuthTypeView"][];
234
+ providers: components["schemas"]["ExternalAuthProviderView"][];
235
+ callbackUriTemplate: string;
236
+ }>;
237
+ /** 新增或更新一条配置;机密留空 = 不改。需重新验证身份。 */
238
+ saveProvider: (code: string, body: ExternalAuthProviderSaveInput) => Promise<boolean>;
239
+ /** 清除配置(软删,不动用户已绑定的外部账号)。需重新验证身份。 */
240
+ removeProvider: (code: string) => Promise<boolean>;
241
+ /** 连接测试:用表单里的值,机密留空取已保存的;不落库,失败原因在 checks 里。 */
242
+ testProvider: (body: ExternalAuthProviderTestInput) => Promise<{
243
+ ok: boolean;
244
+ checks: components["schemas"]["ExternalAuthCheckView"][];
245
+ }>;
229
246
  };
247
+ export type ExternalAuthCatalog = components['schemas']['ExternalAuthCatalogOutput'];
248
+ export type ExternalAuthType = components['schemas']['ExternalAuthTypeView'];
249
+ export type ExternalAuthField = components['schemas']['ExternalAuthFieldView'];
250
+ export type ExternalAuthProvider = components['schemas']['ExternalAuthProviderView'];
251
+ export type ExternalAuthProviderSaveInput = components['schemas']['ExternalAuthProviderSaveInput'];
252
+ export type ExternalAuthProviderTestInput = components['schemas']['ExternalAuthProviderTestInput'];
253
+ export type ExternalAuthTestResult = components['schemas']['ExternalAuthTestView'];
254
+ export type ExternalAuthCheck = components['schemas']['ExternalAuthCheckView'];
230
255
  export declare const dashboardApi: {
231
256
  /** 工作台首页统计([ActiveSession]:任何登录用户可取,无需权限码)。 */
232
257
  summary: () => Promise<DashboardSummary>;
@@ -394,6 +419,7 @@ export declare const configApi: {
394
419
  name?: string;
395
420
  groupCode?: string;
396
421
  excludedGroupCodes?: string[];
422
+ excludedKeys?: string[];
397
423
  }) => Promise<{
398
424
  items: SysConfig[];
399
425
  total: number;
@@ -411,6 +437,11 @@ export declare const configApi: {
411
437
  configKey: string;
412
438
  configValue?: string | null;
413
439
  }[]) => Promise<boolean>;
440
+ /**
441
+ * 上传站点 Logo(只收 PNG/JPG/WEBP、1 MB 以内,不受全局上传白名单约束)。
442
+ * 返回的 viewUrl 是签名直链,写进 sys.site.logo 随批量保存生效。FormData 写法同 fileApi.upload。
443
+ */
444
+ uploadLogo: (file: File) => Promise<FileUploadOutput>;
414
445
  /** 站点信息(匿名可读:站点标题/副标题/版权等品牌展示白名单)。 */
415
446
  siteInfo: () => Promise<{
416
447
  title?: string | null;
@@ -418,6 +449,12 @@ export declare const configApi: {
418
449
  copyright?: string | null;
419
450
  copyrightUrl?: string | null;
420
451
  logo?: string | null;
452
+ loginHero?: Record<string, {
453
+ headline?: string | null;
454
+ highlight?: string | null;
455
+ features?: string[] | null;
456
+ }> | null;
457
+ showFeatures?: boolean | null;
421
458
  captchaEnabled?: boolean;
422
459
  smsLoginEnabled?: boolean;
423
460
  }>;
package/dist/api/index.js CHANGED
@@ -31,14 +31,14 @@ function a(e) {
31
31
  throw new u(n.code, n.msgKey, n.args, n.message);
32
32
  return n.data;
33
33
  }
34
- function U(e, t, i) {
34
+ function x(e, t, i) {
35
35
  const o = s.request;
36
36
  return o(e, t, i === void 0 ? void 0 : { body: i }).then((n) => a(n));
37
37
  }
38
38
  const r = (e) => ({
39
39
  Current: e.page,
40
40
  Size: e.pageSize
41
- }), x = (e) => ({
41
+ }), U = (e) => ({
42
42
  ...r(e),
43
43
  Keyword: e.keyword,
44
44
  Number: e.number,
@@ -148,11 +148,11 @@ const C = {
148
148
  bindComplete: (e) => s.POST("/api/v1/auth/mfa/bind/complete", { body: e }).then((t) => a(t)),
149
149
  recovery: (e) => s.POST("/api/v1/auth/mfa/recovery", { body: e }).then((t) => a(t)),
150
150
  clear: (e) => s.POST("/api/v1/sys/mfa/clear", { body: e }).then((t) => a(t))
151
- }, q = {
151
+ }, D = {
152
152
  list: () => s.GET("/api/v1/sys/mfa/high-sensitivity", {}).then((e) => a(e)),
153
153
  add: (e) => s.POST("/api/v1/sys/mfa/high-sensitivity", { body: e }).then((t) => a(t)),
154
154
  remove: (e) => s.DELETE("/api/v1/sys/mfa/high-sensitivity/{id}", { params: { path: { id: e } } }).then((t) => a(t))
155
- }, k = {
155
+ }, q = {
156
156
  /** 登录页可用的外部登录方式(启用的);空数组 = 不显 SSO 区。 */
157
157
  providers: () => s.GET("/api/v1/auth/external/providers", {}).then((e) => a(e)),
158
158
  /** 管理端全量列表(含已禁用);系统配置「第三方登录」Tab。 */
@@ -168,11 +168,19 @@ const C = {
168
168
  /** 发起绑定:返回授权 URL,前端跳转开始 OAuth 往返(回调把身份绑到当前用户)。 */
169
169
  bindStart: (e) => s.POST("/api/v1/auth/external/{provider}/bind", { params: { path: { provider: e } } }).then((t) => a(t)),
170
170
  /** 解绑某 provider 的外部账号。 */
171
- unbind: (e) => s.DELETE("/api/v1/auth/external/{provider}/binding", { params: { path: { provider: e } } }).then((t) => a(t))
172
- }, D = {
171
+ unbind: (e) => s.DELETE("/api/v1/auth/external/{provider}/binding", { params: { path: { provider: e } } }).then((t) => a(t)),
172
+ /** 管理端:类型目录 + 全部 provider 的配置状态(机密只回 hasValue 与尾四位)。「登录方式」页。 */
173
+ catalog: () => s.GET("/api/v1/sys/external-auth/providers", {}).then((e) => a(e)),
174
+ /** 新增或更新一条配置;机密留空 = 不改。需重新验证身份。 */
175
+ saveProvider: (e, t) => s.PUT("/api/v1/sys/external-auth/providers/{code}", { params: { path: { code: e } }, body: t }).then((i) => a(i)),
176
+ /** 清除配置(软删,不动用户已绑定的外部账号)。需重新验证身份。 */
177
+ removeProvider: (e) => s.DELETE("/api/v1/sys/external-auth/providers/{code}", { params: { path: { code: e } } }).then((t) => a(t)),
178
+ /** 连接测试:用表单里的值,机密留空取已保存的;不落库,失败原因在 checks 里。 */
179
+ testProvider: (e) => s.POST("/api/v1/sys/external-auth/providers/test", { body: e }).then((t) => a(t))
180
+ }, L = {
173
181
  /** 工作台首页统计([ActiveSession]:任何登录用户可取,无需权限码)。 */
174
182
  summary: () => s.GET("/api/v1/dashboard/summary", {}).then((e) => a(e))
175
- }, L = {
183
+ }, k = {
176
184
  modules: () => s.GET("/api/v1/personal/modules", {}).then((e) => a(e)),
177
185
  menu: (e) => s.GET("/api/v1/personal/menu", { params: { query: { moduleId: e } } }).then((t) => a(t)),
178
186
  setDefaultModule: (e) => s.PUT("/api/v1/personal/default-module", { body: { moduleId: e } }).then((t) => a(t)),
@@ -344,7 +352,8 @@ const C = {
344
352
  ConfigKey: e.configKey,
345
353
  Name: e.name,
346
354
  GroupCode: e.groupCode,
347
- ExcludedGroupCodes: e.excludedGroupCodes
355
+ ExcludedGroupCodes: e.excludedGroupCodes,
356
+ ExcludedKeys: e.excludedKeys
348
357
  }
349
358
  }
350
359
  }).then((t) => d(t)),
@@ -366,6 +375,18 @@ const C = {
366
375
  },
367
376
  /** 批量按键回写配置值(结构化表单保存);仅更新已存在键,未知键后端忽略。 */
368
377
  saveBatch: (e) => s.PUT("/api/v1/sys/config/batch", { body: e }).then((t) => a(t)),
378
+ /**
379
+ * 上传站点 Logo(只收 PNG/JPG/WEBP、1 MB 以内,不受全局上传白名单约束)。
380
+ * 返回的 viewUrl 是签名直链,写进 sys.site.logo 随批量保存生效。FormData 写法同 fileApi.upload。
381
+ */
382
+ uploadLogo: (e) => s.POST("/api/v1/sys/config/logo", {
383
+ timeout: l,
384
+ body: { file: e },
385
+ bodySerializer: (t) => {
386
+ const i = new FormData();
387
+ return i.append("file", t.file), i;
388
+ }
389
+ }).then((t) => a(t)),
369
390
  /** 站点信息(匿名可读:站点标题/副标题/版权等品牌展示白名单)。 */
370
391
  siteInfo: () => s.GET("/api/v1/sys/config/site", {}).then(
371
392
  (e) => a(e)
@@ -682,17 +703,17 @@ export {
682
703
  ee as aiUsageApi,
683
704
  C as authApi,
684
705
  $ as cacheApi,
685
- U as callApi,
706
+ x as callApi,
686
707
  z as configApi,
687
- D as dashboardApi,
708
+ L as dashboardApi,
688
709
  f as dayRange,
689
710
  V as dictAdminApi,
690
711
  J as dictApi,
691
- k as externalAuthApi,
712
+ q as externalAuthApi,
692
713
  _ as fileApi,
693
- q as highSensApi,
714
+ D as highSensApi,
694
715
  X as jobApi,
695
- x as listQuery,
716
+ U as listQuery,
696
717
  B as logApi,
697
718
  W as menuApi,
698
719
  I as mfaApi,
@@ -703,7 +724,7 @@ export {
703
724
  Q as noticeApi,
704
725
  R as orgApi,
705
726
  r as pageParams,
706
- L as personalApi,
727
+ k as personalApi,
707
728
  F as positionApi,
708
729
  Y as recycleApi,
709
730
  K as roleApi,