smart-admin-web 10.13.1 → 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.
- package/README.md +5 -5
- package/dist/api/index.d.ts +37 -0
- package/dist/api/index.js +35 -14
- package/dist/api/index.js.map +1 -1
- package/dist/api/schema.d.ts +381 -3
- package/dist/assets/icons/ph-subset.json.js +3 -3
- package/dist/assets/smart-logo.svg.js +5 -0
- package/dist/assets/smart-logo.svg.js.map +1 -0
- package/dist/components/SmartLogo.vue.d.ts +3 -0
- package/dist/components/SmartLogo.vue.js +1 -1
- package/dist/components/SmartLogo2.vue.js +22 -64
- package/dist/components/SmartLogo2.vue.js.map +1 -1
- package/dist/composables/useLoginHero.d.ts +2 -0
- package/dist/composables/useLoginHero.js +22 -0
- package/dist/composables/useLoginHero.js.map +1 -0
- package/dist/composables/usePageTitle.js +16 -14
- package/dist/composables/usePageTitle.js.map +1 -1
- package/dist/composables/useSite.d.ts +5 -0
- package/dist/composables/useSite.js +16 -13
- package/dist/composables/useSite.js.map +1 -1
- package/dist/index.js +92 -91
- package/dist/lib/favicon.d.ts +1 -0
- package/dist/lib/favicon.js +12 -0
- package/dist/lib/favicon.js.map +1 -0
- package/dist/lib/loginHero.d.ts +16 -0
- package/dist/lib/loginHero.js +33 -0
- package/dist/lib/loginHero.js.map +1 -0
- package/dist/lib/logoCrop.d.ts +25 -0
- package/dist/lib/logoCrop.js +22 -0
- package/dist/lib/logoCrop.js.map +1 -0
- package/dist/lib/runtime.d.ts +2 -0
- package/dist/lib/runtime.js +1 -1
- package/dist/lib/runtime.js.map +1 -1
- package/dist/lib/securityRules.d.ts +26 -0
- package/dist/lib/securityRules.js +86 -0
- package/dist/lib/securityRules.js.map +1 -0
- package/dist/locales/en-US.d.ts +250 -28
- package/dist/locales/en-US.js +271 -58
- package/dist/locales/en-US.js.map +1 -1
- package/dist/locales/zh-CN.d.ts +250 -28
- package/dist/locales/zh-CN.js +266 -58
- package/dist/locales/zh-CN.js.map +1 -1
- package/dist/router/viewRegistry.js +10 -10
- package/dist/router/viewRegistry.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/utils/oauthBrand.d.ts +34 -9
- package/dist/utils/oauthBrand.js +70 -74
- package/dist/utils/oauthBrand.js.map +1 -1
- package/dist/views/login/components/LoginHeroPanel.vue.d.ts +18 -0
- package/dist/views/login/components/LoginHeroPanel.vue.js +8 -0
- package/dist/views/login/components/LoginHeroPanel.vue.js.map +1 -0
- package/dist/views/login/components/LoginHeroPanel2.vue.js +66 -0
- package/dist/views/login/components/LoginHeroPanel2.vue.js.map +1 -0
- package/dist/views/login/skins/SplitPanel.vue.js +1 -1
- package/dist/views/login/skins/SplitPanel2.vue.js +39 -59
- package/dist/views/login/skins/SplitPanel2.vue.js.map +1 -1
- package/dist/views/system/api-docs/index.vue.js +5 -0
- package/dist/views/system/api-docs/index.vue.js.map +1 -0
- package/dist/views/system/api-docs/index2.vue.js +64 -0
- package/dist/views/system/api-docs/index2.vue.js.map +1 -0
- package/dist/views/system/config/components/AdminMock.vue.js +8 -0
- package/dist/views/system/config/components/AdminMock.vue.js.map +1 -0
- package/dist/views/system/config/components/AdminMock2.vue.js +76 -0
- package/dist/views/system/config/components/AdminMock2.vue.js.map +1 -0
- package/dist/views/system/config/components/AdvancedSection.vue.js +5 -0
- package/dist/views/system/config/components/AdvancedSection.vue.js.map +1 -0
- package/dist/views/system/config/components/AdvancedSection2.vue.js +135 -0
- package/dist/views/system/config/components/AdvancedSection2.vue.js.map +1 -0
- package/dist/views/system/config/components/BrandSection.vue.d.ts +7 -0
- package/dist/views/system/config/components/BrandSection.vue.js +8 -0
- package/dist/views/system/config/components/BrandSection.vue.js.map +1 -0
- package/dist/views/system/config/components/BrandSection2.vue.js +264 -0
- package/dist/views/system/config/components/BrandSection2.vue.js.map +1 -0
- package/dist/views/system/config/components/CfgGroup.vue.d.ts +18 -0
- package/dist/views/system/config/components/CfgGroup.vue.js +8 -0
- package/dist/views/system/config/components/CfgGroup.vue.js.map +1 -0
- package/dist/views/system/config/components/CfgGroup2.vue.js +22 -0
- package/dist/views/system/config/components/CfgGroup2.vue.js.map +1 -0
- package/dist/views/system/config/components/CfgRow.vue.d.ts +26 -0
- package/dist/views/system/config/components/CfgRow.vue.js +9 -0
- package/dist/views/system/config/components/CfgRow.vue.js.map +1 -0
- package/dist/views/system/config/components/CfgRow2.vue.js +53 -0
- package/dist/views/system/config/components/CfgRow2.vue.js.map +1 -0
- package/dist/views/system/config/components/CfgSegment.vue.d.ts +28 -0
- package/dist/views/system/config/components/CfgSegment.vue.js +8 -0
- package/dist/views/system/config/components/CfgSegment.vue.js.map +1 -0
- package/dist/views/system/config/components/CfgSegment2.vue.js +44 -0
- package/dist/views/system/config/components/CfgSegment2.vue.js.map +1 -0
- package/dist/views/system/config/components/ConfigFormModal.vue.js +5 -2
- package/dist/views/system/config/components/ConfigFormModal.vue.js.map +1 -1
- package/dist/views/system/config/components/ConfigFormModal2.vue.js +66 -56
- package/dist/views/system/config/components/ConfigFormModal2.vue.js.map +1 -1
- package/dist/views/system/config/components/JobSection.vue.js +8 -0
- package/dist/views/system/config/components/JobSection.vue.js.map +1 -0
- package/dist/views/system/config/components/JobSection2.vue.js +138 -0
- package/dist/views/system/config/components/JobSection2.vue.js.map +1 -0
- package/dist/views/system/config/components/{GroupExtraConfig.vue.d.ts → LoginMock.vue.d.ts} +3 -4
- package/dist/views/system/config/components/LoginMock.vue.js +8 -0
- package/dist/views/system/config/components/LoginMock.vue.js.map +1 -0
- package/dist/views/system/config/components/LoginMock2.vue.js +121 -0
- package/dist/views/system/config/components/LoginMock2.vue.js.map +1 -0
- package/dist/views/system/config/components/LogoCropper.vue.d.ts +10 -0
- package/dist/views/system/config/components/LogoCropper.vue.js +8 -0
- package/dist/views/system/config/components/LogoCropper.vue.js.map +1 -0
- package/dist/views/system/config/components/LogoCropper2.vue.js +122 -0
- package/dist/views/system/config/components/LogoCropper2.vue.js.map +1 -0
- package/dist/views/system/config/components/LogoEditor.vue.js +8 -0
- package/dist/views/system/config/components/LogoEditor.vue.js.map +1 -0
- package/dist/views/system/config/components/LogoEditor2.vue.js +163 -0
- package/dist/views/system/config/components/LogoEditor2.vue.js.map +1 -0
- package/dist/views/system/config/components/ProviderSheet.vue.d.ts +17 -0
- package/dist/views/system/config/components/ProviderSheet.vue.js +8 -0
- package/dist/views/system/config/components/ProviderSheet.vue.js.map +1 -0
- package/dist/views/system/config/components/ProviderSheet2.vue.js +343 -0
- package/dist/views/system/config/components/ProviderSheet2.vue.js.map +1 -0
- package/dist/views/system/config/components/ScaleToFit.vue.d.ts +17 -0
- package/dist/views/system/config/components/ScaleToFit.vue.js +8 -0
- package/dist/views/system/config/components/ScaleToFit.vue.js.map +1 -0
- package/dist/views/system/config/components/ScaleToFit2.vue.js +41 -0
- package/dist/views/system/config/components/ScaleToFit2.vue.js.map +1 -0
- package/dist/views/system/config/components/SectionLayout.vue.d.ts +28 -0
- package/dist/views/system/config/components/SectionLayout.vue.js +8 -0
- package/dist/views/system/config/components/SectionLayout.vue.js.map +1 -0
- package/dist/views/system/config/components/SectionLayout2.vue.js +45 -0
- package/dist/views/system/config/components/SectionLayout2.vue.js.map +1 -0
- package/dist/views/system/config/components/SecuritySection.vue.js +8 -0
- package/dist/views/system/config/components/SecuritySection.vue.js.map +1 -0
- package/dist/views/system/config/components/SecuritySection2.vue.js +416 -0
- package/dist/views/system/config/components/SecuritySection2.vue.js.map +1 -0
- package/dist/views/system/config/components/SensitiveSection.vue.js +8 -0
- package/dist/views/system/config/components/SensitiveSection.vue.js.map +1 -0
- package/dist/views/system/config/components/SensitiveSection2.vue.js +209 -0
- package/dist/views/system/config/components/SensitiveSection2.vue.js.map +1 -0
- package/dist/views/system/config/components/SigninSection.vue.d.ts +3 -0
- package/dist/views/system/config/components/SigninSection.vue.js +8 -0
- package/dist/views/system/config/components/SigninSection.vue.js.map +1 -0
- package/dist/views/system/config/components/SigninSection2.vue.js +201 -0
- package/dist/views/system/config/components/SigninSection2.vue.js.map +1 -0
- package/dist/views/system/config/components/UploadSection.vue.d.ts +3 -0
- package/dist/views/system/config/components/UploadSection.vue.js +8 -0
- package/dist/views/system/config/components/UploadSection.vue.js.map +1 -0
- package/dist/views/system/config/components/UploadSection2.vue.js +167 -0
- package/dist/views/system/config/components/UploadSection2.vue.js.map +1 -0
- package/dist/views/system/config/draft.d.ts +148 -0
- package/dist/views/system/config/draft.js +170 -0
- package/dist/views/system/config/draft.js.map +1 -0
- package/dist/views/system/config/flash.d.ts +2 -0
- package/dist/views/system/config/flash.js +9 -0
- package/dist/views/system/config/flash.js.map +1 -0
- package/dist/views/system/config/groups.d.ts +35 -7
- package/dist/views/system/config/groups.js +99 -14
- package/dist/views/system/config/groups.js.map +1 -1
- package/dist/views/system/config/index.vue.js +4 -1
- package/dist/views/system/config/index.vue.js.map +1 -1
- package/dist/views/system/config/index2.vue.js +180 -115
- package/dist/views/system/config/index2.vue.js.map +1 -1
- package/dist/views/system/config/providerForm.d.ts +33 -0
- package/dist/views/system/config/providerForm.js +63 -0
- package/dist/views/system/config/providerForm.js.map +1 -0
- package/package.json +4 -4
- package/dist/views/system/config/components/ExternalAuthConfig.vue.js +0 -8
- package/dist/views/system/config/components/ExternalAuthConfig.vue.js.map +0 -1
- package/dist/views/system/config/components/ExternalAuthConfig2.vue.js +0 -218
- package/dist/views/system/config/components/ExternalAuthConfig2.vue.js.map +0 -1
- package/dist/views/system/config/components/GroupExtraConfig.vue.js +0 -8
- package/dist/views/system/config/components/GroupExtraConfig.vue.js.map +0 -1
- package/dist/views/system/config/components/GroupExtraConfig2.vue.js +0 -108
- package/dist/views/system/config/components/GroupExtraConfig2.vue.js.map +0 -1
- package/dist/views/system/config/components/HighSensConfig.vue.js +0 -5
- package/dist/views/system/config/components/HighSensConfig.vue.js.map +0 -1
- package/dist/views/system/config/components/HighSensConfig2.vue.js +0 -134
- package/dist/views/system/config/components/HighSensConfig2.vue.js.map +0 -1
- package/dist/views/system/config/components/JobConfig.vue.js +0 -5
- package/dist/views/system/config/components/JobConfig.vue.js.map +0 -1
- package/dist/views/system/config/components/JobConfig2.vue.js +0 -116
- package/dist/views/system/config/components/JobConfig2.vue.js.map +0 -1
- package/dist/views/system/config/components/OtherConfig.vue.js +0 -5
- package/dist/views/system/config/components/OtherConfig.vue.js.map +0 -1
- package/dist/views/system/config/components/OtherConfig2.vue.js +0 -121
- package/dist/views/system/config/components/OtherConfig2.vue.js.map +0 -1
- package/dist/views/system/config/components/SecurityConfig.vue.js +0 -8
- package/dist/views/system/config/components/SecurityConfig.vue.js.map +0 -1
- package/dist/views/system/config/components/SecurityConfig2.vue.js +0 -456
- package/dist/views/system/config/components/SecurityConfig2.vue.js.map +0 -1
- package/dist/views/system/config/components/SysBaseConfig.vue.js +0 -5
- package/dist/views/system/config/components/SysBaseConfig.vue.js.map +0 -1
- package/dist/views/system/config/components/SysBaseConfig2.vue.js +0 -107
- package/dist/views/system/config/components/SysBaseConfig2.vue.js.map +0 -1
- package/dist/views/system/config/components/UploadConfig.vue.js +0 -5
- package/dist/views/system/config/components/UploadConfig.vue.js.map +0 -1
- package/dist/views/system/config/components/UploadConfig2.vue.js +0 -135
- package/dist/views/system/config/components/UploadConfig2.vue.js.map +0 -1
- /package/dist/views/system/{config/components/ExternalAuthConfig.vue.d.ts → api-docs/index.vue.d.ts} +0 -0
- /package/dist/views/system/config/components/{HighSensConfig.vue.d.ts → AdminMock.vue.d.ts} +0 -0
- /package/dist/views/system/config/components/{JobConfig.vue.d.ts → AdvancedSection.vue.d.ts} +0 -0
- /package/dist/views/system/config/components/{OtherConfig.vue.d.ts → JobSection.vue.d.ts} +0 -0
- /package/dist/views/system/config/components/{SecurityConfig.vue.d.ts → LogoEditor.vue.d.ts} +0 -0
- /package/dist/views/system/config/components/{SysBaseConfig.vue.d.ts → SecuritySection.vue.d.ts} +0 -0
- /package/dist/views/system/config/components/{UploadConfig.vue.d.ts → SensitiveSection.vue.d.ts} +0 -0
package/dist/locales/zh-CN.js
CHANGED
|
@@ -530,108 +530,300 @@ const e = {
|
|
|
530
530
|
deleteConfirm: "确定删除配置「{name}」?",
|
|
531
531
|
saved: "保存成功",
|
|
532
532
|
deleted: "已删除",
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
533
|
+
keyManagedBy: "该配置由「{tab}」页的表单管理,保存后请到那里修改。",
|
|
534
|
+
unsaved: "有 {n} 项修改未保存",
|
|
535
|
+
unsavedTab: "有未保存的修改",
|
|
536
|
+
discard: "放弃修改",
|
|
537
|
+
leaveTitle: "放弃未保存的修改?",
|
|
538
|
+
leaveConfirm: "配置中心还有未保存的修改,离开后会丢失。",
|
|
538
539
|
tab: {
|
|
539
|
-
|
|
540
|
+
brand: "品牌与登录页",
|
|
540
541
|
security: "安全策略",
|
|
541
|
-
|
|
542
|
-
|
|
542
|
+
signin: "登录方式",
|
|
543
|
+
sensitive: "敏感操作",
|
|
544
|
+
upload: "文件上传",
|
|
543
545
|
job: "定时任务",
|
|
544
|
-
|
|
546
|
+
advanced: "高级"
|
|
547
|
+
},
|
|
548
|
+
brand: {
|
|
549
|
+
desc: "站点在浏览器标签、侧栏、页脚和登录页上的样子。",
|
|
550
|
+
preview: "实时预览",
|
|
551
|
+
previewAdmin: "后台",
|
|
552
|
+
previewLogin: "登录页",
|
|
553
|
+
groupSite: "站点",
|
|
554
|
+
groupLogin: "登录页",
|
|
555
|
+
copyrightPh: "留空则显示站点名称",
|
|
556
|
+
copyrightUrlHint: "填了之后页脚的版权文字可点击"
|
|
557
|
+
},
|
|
558
|
+
logo: {
|
|
559
|
+
title: "Logo",
|
|
560
|
+
edit: "更换 Logo",
|
|
561
|
+
upload: "上传新图片…",
|
|
562
|
+
useUrl: "使用图片链接…",
|
|
563
|
+
remove: "移除,恢复默认",
|
|
564
|
+
help: "PNG / JPG / WEBP,裁成正方形,也用作浏览器标签图标",
|
|
565
|
+
fallback: "没有设置时使用内置 Logo。浏览器标签页图标也会跟着 Logo 变。",
|
|
566
|
+
badType: "只支持 PNG、JPG、WEBP 图片",
|
|
567
|
+
tooLarge: "图片不能超过 {mb} MB",
|
|
568
|
+
cropTitle: "裁剪新 Logo",
|
|
569
|
+
cropTip: "拖动或用方向键调整位置,滚轮、滑块或 +/- 缩放",
|
|
570
|
+
zoom: "缩放",
|
|
571
|
+
apply: "设为新 Logo",
|
|
572
|
+
cropFailed: "裁剪失败,请换一张图片",
|
|
573
|
+
badUrl: "请填写以 http:// 或 https:// 开头的地址,或以 / 开头的站内路径",
|
|
574
|
+
urlHint: "图片要能匿名访问,建议用正方形。"
|
|
575
|
+
},
|
|
576
|
+
advanced: {
|
|
577
|
+
desc: "没有归到以上分类的配置项,按键值直接编辑。以上页签里能改的键不会出现在这里。"
|
|
578
|
+
},
|
|
579
|
+
preview: {
|
|
580
|
+
minutes: "{n} 分钟",
|
|
581
|
+
hours: "{n} 小时",
|
|
582
|
+
days: "{n} 天",
|
|
583
|
+
off: "(未启用)",
|
|
584
|
+
sep: "、",
|
|
585
|
+
req: { upper: "大写字母", lower: "小写字母", digit: "数字", special: "特殊字符" },
|
|
586
|
+
lock: "连续输错密码 {count} 次,账号锁定 {minutes} 分钟",
|
|
587
|
+
lockOff: "输错密码不会锁定账号",
|
|
588
|
+
captcha: "登录时要填验证码({type})",
|
|
589
|
+
totp: "可以用动态口令做二次验证",
|
|
590
|
+
totpSuper: "可以用动态口令做二次验证,超级管理员必须开启",
|
|
591
|
+
smsMfa: "绑定了手机号的用户登录时要做短信验证",
|
|
592
|
+
password: "密码至少 {min} 位,须含{reqs}",
|
|
593
|
+
passwordMin: "密码至少 {min} 位",
|
|
594
|
+
expire: "密码 {days} 天后必须修改",
|
|
595
|
+
noExpire: "密码永不过期",
|
|
596
|
+
history: "新密码不能和最近 {n} 次用过的相同",
|
|
597
|
+
historyOff: "新密码可以和旧密码相同",
|
|
598
|
+
firstChange: "管理员新建的账号首次登录必须修改密码",
|
|
599
|
+
firstChangeOff: "新建账号首次登录不用修改密码",
|
|
600
|
+
session: "访问令牌 {access} 后自动续期,最长 {refresh} 不用重新登录",
|
|
601
|
+
rateLimit: "同一来源每 {seconds} 秒最多 {permit} 次请求"
|
|
545
602
|
},
|
|
546
603
|
job: {
|
|
547
|
-
|
|
604
|
+
desc: "执行日志保留多久,任务失败时通知谁。",
|
|
605
|
+
preview: "实时预览 · 生效效果",
|
|
606
|
+
groupLog: "执行日志",
|
|
607
|
+
groupAlert: "失败告警",
|
|
608
|
+
logRetentionDays: "保留天数",
|
|
609
|
+
logRetentionHint: "更早的日志每天自动清理",
|
|
548
610
|
alertEmails: "告警邮箱",
|
|
549
|
-
alertEmailsHint: "
|
|
611
|
+
alertEmailsHint: "回车添加;不填则不发邮件",
|
|
612
|
+
previewRetention: "执行日志保留最近 {days} 天,更早的每天自动清理",
|
|
613
|
+
previewKeep: "保留 {days} 天",
|
|
614
|
+
previewAxisStart: "{days} 天前",
|
|
615
|
+
previewToday: "今天",
|
|
616
|
+
previewTo: "收件人",
|
|
617
|
+
previewSubject: "主题",
|
|
618
|
+
previewSubjectText: "[{site}] 定时任务执行失败:日报汇总",
|
|
619
|
+
previewBody: "任务「日报汇总」在 02:00 执行失败,已重试 3 次。",
|
|
620
|
+
previewError: "数据库连接超时 (30s)",
|
|
621
|
+
previewNoAlert: "任务失败时不发邮件,只记录在执行日志里"
|
|
550
622
|
},
|
|
551
623
|
externalAuth: {
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
624
|
+
preview: "实时预览 · 登录框",
|
|
625
|
+
previewOther: "其他登录方式",
|
|
626
|
+
hint: "登录页上出现哪些登录入口。第三方的连接信息在各自的「设置」里填写,加密保存。",
|
|
627
|
+
groupLocal: "本地账号",
|
|
628
|
+
groupThird: "第三方",
|
|
629
|
+
password: "账号密码",
|
|
630
|
+
passwordHint: "始终可用",
|
|
631
|
+
smsHint: "用手机号和短信验证码登录",
|
|
632
|
+
state: {
|
|
633
|
+
notInstalled: "未安装",
|
|
634
|
+
unconfigured: "未配置",
|
|
635
|
+
configured: "已配置"
|
|
636
|
+
},
|
|
637
|
+
settings: "设置",
|
|
638
|
+
addOidc: "添加 OIDC",
|
|
639
|
+
needPackage: "需先在服务器安装 {pkg} 包",
|
|
640
|
+
codeRegistered: "由代码注册,不在此处配置",
|
|
562
641
|
linkByAccount: "按账号自动关联",
|
|
642
|
+
linkByAccountHint: "账号相同的人首次登录时自动绑定本地账号,打开时会二次确认",
|
|
563
643
|
linkByAccountConfirmTitle: "打开按账号自动关联?",
|
|
564
|
-
linkByAccountConfirm: "{name}账号与本地账号完全相同的人,首次从{name}登录时会自动绑定到该本地账号并直接登录;超级管理员、已停用账号、已绑过{name}的账号除外。请先确认两边账号是同一批人,比如本地账号就是从{name}同步来的。"
|
|
644
|
+
linkByAccountConfirm: "{name}账号与本地账号完全相同的人,首次从{name}登录时会自动绑定到该本地账号并直接登录;超级管理员、已停用账号、已绑过{name}的账号除外。请先确认两边账号是同一批人,比如本地账号就是从{name}同步来的。",
|
|
645
|
+
field: {
|
|
646
|
+
displayName: "显示名",
|
|
647
|
+
code: "标识",
|
|
648
|
+
corpId: "企业 ID",
|
|
649
|
+
agentId: "应用 AgentId",
|
|
650
|
+
corpSecret: "应用 Secret",
|
|
651
|
+
appKey: "AppKey",
|
|
652
|
+
appSecret: "AppSecret",
|
|
653
|
+
clientId: "Client ID",
|
|
654
|
+
clientSecret: "Client Secret",
|
|
655
|
+
appId: "AppId",
|
|
656
|
+
authority: "Authority",
|
|
657
|
+
scopes: "Scopes",
|
|
658
|
+
usePkce: "使用 PKCE"
|
|
659
|
+
},
|
|
660
|
+
sheet: {
|
|
661
|
+
title: "{name} 登录设置",
|
|
662
|
+
addOidc: "添加 OIDC",
|
|
663
|
+
oidcHint: "标准 OpenID Connect 身份源",
|
|
664
|
+
secretNote: "密钥加密保存,保存后不显示明文",
|
|
665
|
+
namePlaceholder: "如 公司 SSO",
|
|
666
|
+
codePlaceholder: "小写字母、数字、连字符",
|
|
667
|
+
codeFixed: "保存后不可改",
|
|
668
|
+
codeTaken: "该标识已被使用",
|
|
669
|
+
secretPlaceholder: "粘贴密钥",
|
|
670
|
+
secretSet: "已配置",
|
|
671
|
+
keepSecret: "留空则不修改 · 当前 {now}",
|
|
672
|
+
secretRetype: "请重新输入密钥",
|
|
673
|
+
endpointMoved: "已修改 Authority:为防止把已保存的密钥发到新地址,请重新输入 Client Secret。",
|
|
674
|
+
ephemeralKey: "数据保护主密钥是临时密钥,暂时不能保存密钥。请先配置 SmartAdmin:Security:DataProtection:Key 并重启。",
|
|
675
|
+
ephemeralTitle: "主密钥是临时密钥,暂时不能保存",
|
|
676
|
+
callback: "回调地址",
|
|
677
|
+
callbackHint: "请把回调地址填到{name}的后台。",
|
|
678
|
+
idp: "身份源",
|
|
679
|
+
callbackMissing: "生产环境未配置 SmartAdmin:ExternalAuth:CallbackBaseUrl,无法算出回调地址。",
|
|
680
|
+
copyFailed: "复制失败,请手动选取",
|
|
681
|
+
test: "测试连接",
|
|
682
|
+
testing: "正在测试…",
|
|
683
|
+
saved: "已保存",
|
|
684
|
+
clear: "清除配置",
|
|
685
|
+
clearTitle: "清除「{name}」的配置?",
|
|
686
|
+
clearConfirm: "清除后该登录方式不可用,登录页不再显示它。用户已绑定的{name}账号不会被删除。",
|
|
687
|
+
cleared: "已清除"
|
|
688
|
+
},
|
|
689
|
+
check: {
|
|
690
|
+
reachable: "连通性",
|
|
691
|
+
credentials: "凭据",
|
|
692
|
+
agent: "AgentId",
|
|
693
|
+
appId: "AppId",
|
|
694
|
+
secret: "AppSecret",
|
|
695
|
+
discovery: "发现文档",
|
|
696
|
+
issuer: "issuer 一致性",
|
|
697
|
+
endpoints: "授权与令牌端点",
|
|
698
|
+
clientSecret: "Client Secret",
|
|
699
|
+
timeout: "超时",
|
|
700
|
+
error: "出错"
|
|
701
|
+
},
|
|
702
|
+
checkStatus: {
|
|
703
|
+
ok: "通过",
|
|
704
|
+
failed: "失败",
|
|
705
|
+
skipped: "未验证"
|
|
706
|
+
}
|
|
565
707
|
},
|
|
566
708
|
base: {
|
|
567
709
|
siteTitle: "站点标题",
|
|
568
|
-
|
|
569
|
-
siteSubtitle: "登录副标题",
|
|
710
|
+
siteSubtitle: "副标题",
|
|
570
711
|
copyright: "版权信息",
|
|
571
712
|
copyrightUrl: "版权链接"
|
|
572
713
|
},
|
|
714
|
+
login: {
|
|
715
|
+
language: "登录页语言",
|
|
716
|
+
localeZh: "中文",
|
|
717
|
+
localeEn: "English",
|
|
718
|
+
showFeatures: "显示卖点",
|
|
719
|
+
headline: "主标题",
|
|
720
|
+
headlinePlaceholder: "留空使用内置主标题",
|
|
721
|
+
highlight: "强调词",
|
|
722
|
+
highlightPlaceholder: "主标题中需要强调色的词",
|
|
723
|
+
highlightHint: "主标题里用强调色显示的词",
|
|
724
|
+
features: "卖点",
|
|
725
|
+
featuresPlaceholder: "一行一条,最多 5 条",
|
|
726
|
+
featuresHint: "一行一条,最多 5 条",
|
|
727
|
+
highlightMissing: "主标题里没有这个词,会按普通标题显示",
|
|
728
|
+
tooManyFeatures: "最多只能配置 5 条卖点"
|
|
729
|
+
},
|
|
573
730
|
security: {
|
|
731
|
+
desc: "登录保护、密码规则、会话时长和请求限流,保存后立即生效。",
|
|
732
|
+
preview: "用户会遇到的规则",
|
|
733
|
+
groupLogin: "登录保护",
|
|
734
|
+
groupSession: "会话",
|
|
735
|
+
groupRate: "请求限流",
|
|
736
|
+
zeroNoLock: "0 表示不锁定",
|
|
737
|
+
zeroNever: "0 表示永不过期",
|
|
738
|
+
zeroOff: "0 表示不限制",
|
|
739
|
+
unit: { times: "次", minutes: "分钟", days: "天", seconds: "秒", chars: "位" },
|
|
740
|
+
tryLabel: "试填密码",
|
|
741
|
+
tryMin: "至少 {n} 位",
|
|
742
|
+
tryPass: "可以使用",
|
|
743
|
+
tryFail: "不符合要求",
|
|
574
744
|
loginLock: {
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
lockMinutes: "锁定时长(分钟)"
|
|
745
|
+
maxFailCount: "连续输错锁定",
|
|
746
|
+
lockMinutes: "锁定时长"
|
|
578
747
|
},
|
|
579
748
|
password: {
|
|
580
|
-
title: "
|
|
749
|
+
title: "密码",
|
|
581
750
|
minLength: "最小长度",
|
|
751
|
+
mustContain: "必须包含",
|
|
752
|
+
chipUpper: "A-Z",
|
|
753
|
+
chipLower: "a-z",
|
|
754
|
+
chipDigit: "0-9",
|
|
755
|
+
// @ 在 vue-i18n 里是链接语法,要用字面量插值转义
|
|
756
|
+
chipSpecial: "#{'@'}!",
|
|
582
757
|
requireUpper: "须含大写字母",
|
|
583
758
|
requireLower: "须含小写字母",
|
|
584
759
|
requireDigit: "须含数字",
|
|
585
760
|
requireSpecial: "须含特殊字符",
|
|
586
|
-
expireDays: "
|
|
587
|
-
historyCount: "
|
|
761
|
+
expireDays: "有效期",
|
|
762
|
+
historyCount: "不能与最近几次重复",
|
|
763
|
+
forceChangeOnFirstLogin: "首次登录须改密码",
|
|
764
|
+
forceChangeOnFirstLoginHint: "只影响之后新建的账号;重置密码仍须改"
|
|
588
765
|
},
|
|
589
766
|
session: {
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
refreshMinutes: "刷新令牌(分钟)"
|
|
767
|
+
accessMinutes: "访问令牌有效期",
|
|
768
|
+
refreshMinutes: "最长免登录"
|
|
593
769
|
},
|
|
594
770
|
captcha: {
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
types: { char: "字符", path: "描边(更抗爬)", math: "算术" }
|
|
771
|
+
enabled: "登录验证码",
|
|
772
|
+
type: "类型",
|
|
773
|
+
types: { char: "字符", path: "描边", math: "算术" }
|
|
599
774
|
},
|
|
600
775
|
totp: {
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
requireForSuperAdmin: "超管必须动态口令",
|
|
776
|
+
enabled: "动态口令(TOTP)",
|
|
777
|
+
requireForSuperAdmin: "超级管理员必须使用",
|
|
604
778
|
hint: "与登录验证码一样可即时开关。开启后,用户管理里的「强制动态口令」才会在登录时生效;用户可在账号安全中自助绑定。"
|
|
605
779
|
},
|
|
606
780
|
sms: {
|
|
607
|
-
title: "短信验证",
|
|
608
781
|
hint: "二次验证仅对绑定了手机号的用户生效;开发环境验证码打印在后端日志,生产需注册真实短信通道(ISmsSender)。"
|
|
609
782
|
},
|
|
610
|
-
mfa: { enabled: "
|
|
611
|
-
smsLogin: { enabled: "
|
|
783
|
+
mfa: { enabled: "短信二次验证" },
|
|
784
|
+
smsLogin: { enabled: "短信验证码登录" },
|
|
612
785
|
rateLimit: {
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
authPermitPerWindow: "认证端点每窗口请求数"
|
|
786
|
+
enabled: "启用",
|
|
787
|
+
windowSeconds: "统计窗口",
|
|
788
|
+
permitPerWindow: "每个来源最多",
|
|
789
|
+
authPermitPerWindow: "登录接口最多"
|
|
618
790
|
},
|
|
619
791
|
highSens: {
|
|
620
|
-
title: "高敏感权限(自定义追加)",
|
|
621
|
-
hint: "内核默认高敏权限不可删除;下方仅可追加/删除消费者自定义权限码。写操作需近期再认证。",
|
|
622
792
|
code: "权限码",
|
|
623
793
|
remark: "备注",
|
|
624
|
-
codePh: "如 POST:/api/v1/biz/order",
|
|
625
|
-
remarkPh: "
|
|
794
|
+
codePh: "如 POST:/api/v1/biz/order/refund",
|
|
795
|
+
remarkPh: "备注(可选)",
|
|
626
796
|
codeRequired: "请填写权限码"
|
|
627
797
|
}
|
|
628
798
|
},
|
|
799
|
+
sensitive: {
|
|
800
|
+
desc: "执行这些接口前,要求用户再次验证身份。内置的不能删,可以追加自己的业务接口;增删即时生效。",
|
|
801
|
+
preview: "用户执行时看到的验证框",
|
|
802
|
+
previewTip: "点左侧任一行切换",
|
|
803
|
+
previewDoing: "你正在执行",
|
|
804
|
+
method: "方法",
|
|
805
|
+
path: "接口",
|
|
806
|
+
builtin: "内置",
|
|
807
|
+
added: "已添加,立即生效",
|
|
808
|
+
removed: "已删除,立即生效",
|
|
809
|
+
removeConfirm: "删除「{code}」?删除后执行它不再需要验证身份。"
|
|
810
|
+
},
|
|
629
811
|
upload: {
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
812
|
+
desc: "全站上传文件的大小和格式限制,保存后立即生效。",
|
|
813
|
+
preview: "实时预览 · 用户看到的上传框",
|
|
814
|
+
previewDrop: "点击或拖拽文件到这里",
|
|
815
|
+
previewLimit: "支持 {exts},单个文件不超过 {mb} MB",
|
|
816
|
+
previewDefault: "服务端默认格式",
|
|
817
|
+
groupLimit: "限制",
|
|
818
|
+
maxSizeMb: "单个文件上限",
|
|
819
|
+
allowedExtensions: "允许的格式",
|
|
820
|
+
extTip: "留空则使用服务端默认",
|
|
821
|
+
quickAdd: "快速添加",
|
|
822
|
+
preset: { images: "图片", docs: "文档", archives: "压缩包", clear: "清空" },
|
|
823
|
+
fileOk: "可以上传",
|
|
824
|
+
fileBadExt: "不支持 {ext}",
|
|
825
|
+
fileTooBig: "超过 {mb} MB",
|
|
826
|
+
fileDefault: "按服务端默认格式判断"
|
|
635
827
|
}
|
|
636
828
|
},
|
|
637
829
|
// 字典管理(主从:左类型 / 右字典项)
|
|
@@ -1336,7 +1528,14 @@ const e = {
|
|
|
1336
1528
|
csrfInvalid: "请求校验失败,请刷新页面后重试",
|
|
1337
1529
|
reauthRequired: "此操作需要再次验证身份",
|
|
1338
1530
|
mfaBindPasswordRequired: "绑定动态口令前请先验证当前密码",
|
|
1339
|
-
apiKeyInvalid: "API Key 缺失或无效"
|
|
1531
|
+
apiKeyInvalid: "API Key 缺失或无效",
|
|
1532
|
+
externalAuthTypeNotFound: "登录方式类型不存在,或对应的扩展包尚未安装",
|
|
1533
|
+
externalAuthCodeExists: "该标识已被占用",
|
|
1534
|
+
externalAuthCodeInvalid: "标识格式不合法,或与内置登录方式的标识冲突",
|
|
1535
|
+
externalAuthFieldMissing: "请填写必填项:{field}",
|
|
1536
|
+
externalAuthDataProtectionKeyMissing: "尚未配置数据保护主密钥,无法安全保存第三方密钥。请先配置 SmartAdmin:Security:DataProtection:Key",
|
|
1537
|
+
externalAuthProviderNotFound: "该登录方式尚未配置",
|
|
1538
|
+
externalAuthEndpointBlocked: "该地址被出站访问围栏拒绝,请检查协议、主机与网段"
|
|
1340
1539
|
},
|
|
1341
1540
|
perm: {
|
|
1342
1541
|
denied: "无权限访问",
|
|
@@ -1498,6 +1697,15 @@ const e = {
|
|
|
1498
1697
|
job: "定时任务"
|
|
1499
1698
|
}
|
|
1500
1699
|
},
|
|
1700
|
+
// 接口文档入口页
|
|
1701
|
+
apiDocs: {
|
|
1702
|
+
title: "接口文档",
|
|
1703
|
+
openedHint: "接口文档已在新标签页打开。",
|
|
1704
|
+
fallbackLink: "没有自动打开?点此手动打开",
|
|
1705
|
+
copyToken: "复制我的接口令牌",
|
|
1706
|
+
copyTokenHint: "在新标签页里点右上角 Authentication → Bearer,粘贴这里复制的令牌",
|
|
1707
|
+
tokenCopied: "已复制"
|
|
1708
|
+
},
|
|
1501
1709
|
// 用户导入导出:列标题 + 文件名(与 UserImportProfile / UserExportProfile 的列一一对应)
|
|
1502
1710
|
userExport: {
|
|
1503
1711
|
account: "登录账号",
|