From af7e09cf21b0ccf2693d65cd3add4b8e75e61826 Mon Sep 17 00:00:00 2001 From: chiyi Date: Tue, 27 Oct 2026 16:59:57 +0800 Subject: [PATCH] =?UTF-8?q?feat(admin):=20=E5=88=B7=E6=96=B0=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E7=8B=AC=E7=AB=8B=E7=9A=84=E5=9C=86=E5=BD=A2=E5=9B=BE?= =?UTF-8?q?=E6=A0=87=E6=8C=89=E9=92=AE=EF=BC=8842px=EF=BC=89=EF=BC=8C?= =?UTF-8?q?=E4=B8=BB=E6=93=8D=E4=BD=9C=E6=8C=89=E9=92=AE=E5=8D=95=E7=8B=AC?= =?UTF-8?q?=E4=B8=80=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 12 个后台页的刷新统一为 .refresh-btn,固定在页头最右,悬停旋转 - 渠道管理「添加渠道」、并发分组「新增分组」移到页头下方单独一行 - 渠道空状态文案同步 Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- frontend/src/style.css | 17 +++++++++++++++++ frontend/src/views/AdminOrdersView.vue | 2 +- frontend/src/views/BannedWordHitsView.vue | 2 +- frontend/src/views/BannedWordsView.vue | 2 +- frontend/src/views/CdksView.vue | 2 +- frontend/src/views/ChannelsView.vue | 7 ++++--- frontend/src/views/ConcurrencyView.vue | 5 +++-- frontend/src/views/ImagesView.vue | 2 +- frontend/src/views/InvitesAdminView.vue | 2 +- frontend/src/views/LogsView.vue | 2 +- frontend/src/views/ModelsView.vue | 2 +- frontend/src/views/OverviewView.vue | 2 +- frontend/src/views/ShowcaseView.vue | 2 +- frontend/src/views/UsersView.vue | 2 +- 14 files changed, 35 insertions(+), 16 deletions(-) diff --git a/frontend/src/style.css b/frontend/src/style.css index 415e208..6690c74 100644 --- a/frontend/src/style.css +++ b/frontend/src/style.css @@ -376,7 +376,24 @@ button:not(:disabled), [role="button"]:not([aria-disabled="true"]) { cursor: poi .page-title { font-size: 20px; font-weight: 800; letter-spacing: -0.03em; color: var(--fg); } .page-sub { margin-top: 3px; font-size: 12.5px; color: var(--fg-3); line-height: 1.5; } .page-sub strong { color: var(--fg-2); font-weight: 700; } +/* 刷新:独立的圆形图标按钮,固定在页头最右 */ .page-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; } +.refresh-btn { + flex-shrink: 0; + width: 42px; height: 42px; + display: inline-grid; place-items: center; + border-radius: 50%; + border: 1px solid rgb(24 24 27 / 0.12); + background: #fff; + color: var(--fg-2); + box-shadow: 0 1px 2px rgb(24 24 27 / 0.04), 0 6px 16px -8px rgb(24 24 27 / 0.15); + transition: color .15s ease, border-color .15s ease, box-shadow .15s ease; +} +.refresh-btn svg { transition: transform .5s cubic-bezier(.22,.61,.36,1); } +.refresh-btn:hover { color: var(--fg); border-color: rgb(24 24 27 / 0.3); box-shadow: 0 8px 20px -8px rgb(24 24 27 / 0.25); } +.refresh-btn:hover svg { transform: rotate(180deg); } +.refresh-btn:active svg { transform: rotate(360deg); transition-duration: .25s; } +.page-bar { display: flex; justify-content: flex-end; } .toolbar { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; padding: 10px 12px; } .toolbar .field { height: 36px; padding-top: 0 !important; padding-bottom: 0 !important; font-size: 13px !important; } .toolbar input.field:not([type]), .toolbar input.field[type="text"], .toolbar input.field[type="search"] { diff --git a/frontend/src/views/AdminOrdersView.vue b/frontend/src/views/AdminOrdersView.vue index e509c26..b464d69 100644 --- a/frontend/src/views/AdminOrdersView.vue +++ b/frontend/src/views/AdminOrdersView.vue @@ -82,7 +82,7 @@ function goPage(n) {

{{ total }} 笔充值订单

- +
diff --git a/frontend/src/views/BannedWordHitsView.vue b/frontend/src/views/BannedWordHitsView.vue index 7831746..49ddfd5 100644 --- a/frontend/src/views/BannedWordHitsView.vue +++ b/frontend/src/views/BannedWordHitsView.vue @@ -57,7 +57,7 @@ function goPage(n) {

{{ total }} 条触发记录 · 每次拦截记一条(违禁词 / 用户 / 时间 / 提示词)

- +
diff --git a/frontend/src/views/BannedWordsView.vue b/frontend/src/views/BannedWordsView.vue index ab14482..968dea0 100644 --- a/frontend/src/views/BannedWordsView.vue +++ b/frontend/src/views/BannedWordsView.vue @@ -123,7 +123,7 @@ onMounted(load)

提示词包含违禁词的生成请求(画图台 + API)会被直接拦截,并累计触发次数(见用户管理)。匹配不区分大小写。

- +
diff --git a/frontend/src/views/CdksView.vue b/frontend/src/views/CdksView.vue index b0a1cff..85e5001 100644 --- a/frontend/src/views/CdksView.vue +++ b/frontend/src/views/CdksView.vue @@ -145,7 +145,7 @@ const pageNumbers = computed(() => {

兑换码管理

- +
diff --git a/frontend/src/views/ChannelsView.vue b/frontend/src/views/ChannelsView.vue index 41aba2d..f63a013 100644 --- a/frontend/src/views/ChannelsView.vue +++ b/frontend/src/views/ChannelsView.vue @@ -149,11 +149,12 @@ onMounted(load)

同构 /v1 协议上游实例 · 保存时自动同步上游模型 · 余额实时探测

- - +
+
+

{{ err }}

{{ warn }}

{{ okMsg }}

@@ -204,7 +205,7 @@ onMounted(load) 正在加载渠道… - 没有渠道,点右上角「添加渠道」接入上游实例 + 没有渠道,点上方「添加渠道」接入上游实例 diff --git a/frontend/src/views/ConcurrencyView.vue b/frontend/src/views/ConcurrencyView.vue index b401cb2..433f554 100644 --- a/frontend/src/views/ConcurrencyView.vue +++ b/frontend/src/views/ConcurrencyView.vue @@ -57,11 +57,12 @@ onMounted(load)

每个分组限制成员用户的同时生成数(画图台 + API key 合计)。0 = 不限制。新用户自动进入「默认注册分组」。

- - +
+
+
diff --git a/frontend/src/views/ImagesView.vue b/frontend/src/views/ImagesView.vue index a42c01a..94674ae 100644 --- a/frontend/src/views/ImagesView.vue +++ b/frontend/src/views/ImagesView.vue @@ -212,7 +212,7 @@ onUnmounted(() => window.removeEventListener('keydown', onKey))

作品管理

- +
diff --git a/frontend/src/views/ModelsView.vue b/frontend/src/views/ModelsView.vue index 6dd3498..1ae3c9e 100644 --- a/frontend/src/views/ModelsView.vue +++ b/frontend/src/views/ModelsView.vue @@ -77,7 +77,7 @@ onMounted(loadModels)

模型管理

- +
diff --git a/frontend/src/views/OverviewView.vue b/frontend/src/views/OverviewView.vue index 4bb3c21..942cbe9 100644 --- a/frontend/src/views/OverviewView.vue +++ b/frontend/src/views/OverviewView.vue @@ -155,7 +155,7 @@ onUnmounted(() => clearInterval(timer)) {{ overallHealth.label }} - +
diff --git a/frontend/src/views/ShowcaseView.vue b/frontend/src/views/ShowcaseView.vue index 8eda973..03d998c 100644 --- a/frontend/src/views/ShowcaseView.vue +++ b/frontend/src/views/ShowcaseView.vue @@ -185,7 +185,7 @@ onMounted(refresh)

首页首屏拼贴(Hero)与作品墙(Work)的展示图

- +
diff --git a/frontend/src/views/UsersView.vue b/frontend/src/views/UsersView.vue index 69ce203..0072bef 100644 --- a/frontend/src/views/UsersView.vue +++ b/frontend/src/views/UsersView.vue @@ -219,7 +219,7 @@ async function doRecharge() {

用户管理

- +