diff --git a/apps/admin/src/assets/styles/custom/ui06.scss b/apps/admin/src/assets/styles/custom/ui06.scss index ce96f14..8f3faca 100644 --- a/apps/admin/src/assets/styles/custom/ui06.scss +++ b/apps/admin/src/assets/styles/custom/ui06.scss @@ -111,3 +111,114 @@ body { outline: 3px solid #9fc7ff; outline-offset: 2px; } + +/* ══════════ 治理页通用(示例 .workspace / .page-heading / .stats / .stat / .info-strip) ══════════ */ + +.ui06-page { + max-width: 1660px; + padding: 28px 30px 44px; + margin: auto; +} + +.ui06-page-heading { + display: flex; + align-items: center; + justify-content: space-between; + gap: 20px; + margin-bottom: 22px; + + h1 { + font-size: 27px; + letter-spacing: -0.7px; + line-height: 1.4; + } + + > div > p { + margin-top: 6px; + font-size: 12px; + color: #7b899f; + } + + .actions { + display: flex; + flex-wrap: wrap; + gap: 10px; + align-items: center; + } +} + +/* 三列统计卡(示例 .stats / .stat) */ +.ui06-stats { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 18px; + margin-bottom: 22px; + + .ui06-stat { + padding: 21px; + background: #ffffff; + border: 1px solid #e5eaf1; + border-radius: 12px; + + p { + font-size: 11px; + color: #8797ac; + } + + strong { + display: block; + margin: 9px 0 4px; + font-size: 27px; + font-weight: 650; + letter-spacing: -0.6px; + + .unit { + font-size: 17px; + font-weight: 600; + } + } + + small { + font-size: 10px; + color: #97a4b5; + } + } +} + +/* 提示条(示例 .info-strip) */ +.ui06-info-strip { + display: flex; + gap: 9px; + align-items: center; + padding: 12px 16px; + margin-bottom: 20px; + font-size: 12px; + color: #6480a8; + background: #edf4fe; + border: 1px solid #e2edfc; + border-radius: 9px; +} + +@media (max-width: 900px) { + .ui06-stats { + grid-template-columns: 1fr; + gap: 10px; + } + + .ui06-page { + padding: 20px 14px 40px; + } + + .ui06-page-heading { + flex-direction: column; + align-items: flex-start; + gap: 12px; + } +} + +/* 卡片头标题(示例 .card-head h2 17px) */ +.ui06-card-title { + font-size: 17px; + font-weight: 600; + line-height: 1.4; +} diff --git a/apps/admin/src/locales/langs/en.json b/apps/admin/src/locales/langs/en.json index d6dca5d..e96a242 100644 --- a/apps/admin/src/locales/langs/en.json +++ b/apps/admin/src/locales/langs/en.json @@ -586,7 +586,10 @@ "totals": { "photoCount": "Total Photos", "totalBytes": "Total Storage", - "thresholds": "Alert Thresholds" + "thresholds": "Alert Thresholds", + "photoCountNote": "Aggregate from usage response", + "totalBytesNote": "Originals + viewing variants", + "thresholdsNote": "An alert threshold, not a hard storage quota" }, "albums": { "title": "Album Usage", @@ -621,6 +624,10 @@ "kind_storage": "Storage", "kind_perAlbum": "Per album", "empty": "No alerts" + }, + "page": { + "title": "Storage & usage", + "subtitle": "Understand retained assets and act before thresholds are exceeded." } }, "usersManage": { @@ -649,7 +656,11 @@ "actionResetPassword": "Reset Password", "actionActivate": "Activate", "actionDeactivate": "Deactivate", - "actionUnlock": "Unlock" + "actionUnlock": "Unlock", + "subtitle": "Provisioned company accounts, credential state and local access controls.", + "viewSync": "View user sync", + "tableTitle": "Accounts", + "sourceHint": "Users are pulled from the company directory on a schedule; no public sign-up. Source state and local lock are independent." }, "filter": { "queryPlaceholder": "Account/name prefix", @@ -770,6 +781,10 @@ "colCode": "Code", "colDetail": "Detail", "colCreatedAt": "Recorded At" + }, + "page": { + "title": "User sync", + "subtitle": "Review scheduled directory pulls and resolve failed records." } }, "embedSlotsManage": { @@ -790,7 +805,9 @@ "unbound": "Unbound", "actionEdit": "Edit", "actionBind": "Bind Album", - "actionCode": "Embed Code" + "actionCode": "Embed Code", + "subtitle": "Manage floating photo widgets: album binding, toggles and embed code.", + "tableTitle": "Slots" }, "form": { "nameLabel": "Name", diff --git a/apps/admin/src/locales/langs/zh.json b/apps/admin/src/locales/langs/zh.json index 6a602c0..a9a6779 100644 --- a/apps/admin/src/locales/langs/zh.json +++ b/apps/admin/src/locales/langs/zh.json @@ -586,7 +586,10 @@ "totals": { "photoCount": "照片总数", "totalBytes": "存储总量", - "thresholds": "告警阈值" + "thresholds": "告警阈值", + "photoCountNote": "用量接口汇总", + "totalBytesNote": "原图 + 浏览变体", + "thresholdsNote": "告警阈值,并非存储硬配额" }, "albums": { "title": "相册用量", @@ -621,6 +624,10 @@ "kind_storage": "全库存储", "kind_perAlbum": "单相册", "empty": "暂无告警" + }, + "page": { + "title": "存储与用量", + "subtitle": "查看长期保留的照片资产与告警阈值。" } }, "usersManage": { @@ -649,7 +656,11 @@ "actionResetPassword": "重置密码", "actionActivate": "激活", "actionDeactivate": "停用", - "actionUnlock": "解锁" + "actionUnlock": "解锁", + "subtitle": "统一查看企业来源状态、登录凭据与本地账号治理。", + "viewSync": "查看用户同步", + "tableTitle": "账号列表", + "sourceHint": "用户信息来自企业接口定期拉取,不开放注册;来源状态与本地锁定相互独立。" }, "filter": { "queryPlaceholder": "账号/姓名前缀", @@ -770,6 +781,10 @@ "colCode": "分类码", "colDetail": "详情", "colCreatedAt": "记录时间" + }, + "page": { + "title": "用户同步", + "subtitle": "查看企业用户接口的定时拉取结果,定位失败记录。" } }, "embedSlotsManage": { @@ -790,7 +805,9 @@ "unbound": "未绑定", "actionEdit": "编辑", "actionBind": "绑定相册", - "actionCode": "嵌入代码" + "actionCode": "嵌入代码", + "subtitle": "管理官网悬浮照片展示位:绑定相册、启停与接入代码。", + "tableTitle": "展示位列表" }, "form": { "nameLabel": "名称", diff --git a/apps/admin/src/views/system/embed-slots/index.vue b/apps/admin/src/views/system/embed-slots/index.vue index 841b2e5..641a5fe 100644 --- a/apps/admin/src/views/system/embed-slots/index.vue +++ b/apps/admin/src/views/system/embed-slots/index.vue @@ -3,14 +3,24 @@ 文案)+ 嵌入代码卡。启停与任何管理面变更一样递增 configVersion——toast 携带新版本号提示(嵌入端轮询发现版本升即整体重置渲染)。 -->