@@ -162,20 +162,20 @@ const sourcePill = (s) => ({
-
总计
+
总计
{{ stats.total }}
-
成功
-
{{ stats.success }}
+
成功
+
{{ stats.success }}
-
失败
-
{{ stats.failed }}
+
失败
+
{{ stats.failed }}
-
进行中
-
{{ stats.pending }}
+
进行中
+
{{ stats.pending }}
@@ -231,7 +231,7 @@ const sourcePill = (s) => ({
-
-
+
+
@@ -268,7 +268,7 @@ const sourcePill = (s) => ({
{{ e.model }}
+ :class="e.kind === 'video' ? 'text-rose-600' : 'text-sky-600'">
{{ e.kind === 'video' ? '视频' : '图像' }}
· {{ e.provider }}
@@ -283,7 +283,7 @@ const sourcePill = (s) => ({
:class="e.prompt ? 'cursor-pointer hover:text-white' : ''"
:title="e.prompt ? '点击复制提示词' : ''"
@click="e.prompt && copyPrompt(e)">{{ e.prompt || '—' }}
-
{{ e.error }}
@@ -308,7 +308,7 @@ const sourcePill = (s) => ({
|
- {{ e.cost }}
+ {{ e.cost }}
0
|
@@ -371,21 +371,9 @@ const sourcePill = (s) => ({
color: rgb(15 23 42);
box-shadow: none;
}
-.fp-emerald {
- background: rgb(16 185 129 / 0.22);
- color: rgb(110 231 183);
- box-shadow: inset 0 0 0 1px rgb(110 231 183 / 0.45);
-}
-.fp-rose {
- background: rgb(244 63 94 / 0.22);
- color: rgb(253 164 175);
- box-shadow: inset 0 0 0 1px rgb(253 164 175 / 0.45);
-}
-.fp-amber {
- background: rgb(245 158 11 / 0.22);
- color: rgb(252 211 77);
- box-shadow: inset 0 0 0 1px rgb(252 211 77 / 0.45);
-}
+.fp-emerald { background: rgb(16 185 129 / 0.1); color: #059669; box-shadow: inset 0 0 0 1px rgb(16 185 129 / 0.22); }
+.fp-rose { background: rgb(239 68 68 / 0.09); color: #dc2626; box-shadow: inset 0 0 0 1px rgb(239 68 68 / 0.2); }
+.fp-amber { background: rgb(245 158 11 / 0.12); color: #b45309; box-shadow: inset 0 0 0 1px rgb(245 158 11 / 0.25); }
/* --- type / status chip used inside table rows --- */
.chip {
diff --git a/frontend/src/views/ModelsView.vue b/frontend/src/views/ModelsView.vue
index ac590e2..dda93b9 100644
--- a/frontend/src/views/ModelsView.vue
+++ b/frontend/src/views/ModelsView.vue
@@ -82,20 +82,20 @@ onMounted(loadModels)
- 总数
+ 总数
{{ stats.total }}
- 图像
- {{ stats.image }}
+ 图像
+ {{ stats.image }}
- 视频
- {{ stats.video }}
+ 视频
+ {{ stats.video }}
- 上架
- {{ stats.sellable }}/ {{ stats.total }}
+ 上架
+ {{ stats.sellable }}/ {{ stats.total }}
@@ -207,7 +207,7 @@ onMounted(loadModels)
|
{{ m.sellable ? '已上架' : '未上架' }}
diff --git a/frontend/src/views/OverviewView.vue b/frontend/src/views/OverviewView.vue
index f4d54b3..1760ccf 100644
--- a/frontend/src/views/OverviewView.vue
+++ b/frontend/src/views/OverviewView.vue
@@ -113,15 +113,15 @@ const recentLogs = computed(() => logs.value.slice(0, 12))
// ---- formatters ----
function statusLabel(s) { return s === 'healthy' ? '健康' : s === 'warning' ? '告警' : '未配置' }
-function statusDot(s) { return s === 'healthy' ? 'bg-emerald-400' : s === 'warning' ? 'bg-amber-400' : 'bg-rose-500' }
+function statusDot(s) { return s === 'healthy' ? 'bg-emerald-500' : s === 'warning' ? 'bg-amber-500' : 'bg-rose-500' }
function statusPill(s) {
- if (s === 'healthy') return 'bg-emerald-500/10 text-emerald-300 ring-emerald-400/30'
- if (s === 'warning') return 'bg-amber-500/10 text-amber-300 ring-amber-400/30'
- return 'bg-rose-500/10 text-rose-300 ring-rose-400/30'
+ if (s === 'healthy') return 'bg-emerald-500/10 text-emerald-600 ring-emerald-500/25'
+ if (s === 'warning') return 'bg-amber-500/10 text-amber-600 ring-amber-500/25'
+ return 'bg-rose-500/10 text-rose-600 ring-rose-500/25'
}
function logDot(status) {
- if (status === 'success') return 'bg-emerald-400'
- if (status === 'pending') return 'bg-amber-400'
+ if (status === 'success') return 'bg-emerald-500'
+ if (status === 'pending') return 'bg-amber-500'
return 'bg-rose-500'
}
function fmtMs(ms) {
diff --git a/frontend/src/views/UserLogsView.vue b/frontend/src/views/UserLogsView.vue
index 1249657..864fa53 100644
--- a/frontend/src/views/UserLogsView.vue
+++ b/frontend/src/views/UserLogsView.vue
@@ -312,7 +312,7 @@ onUnmounted(() => {
生成失败
- {{ e.error }}
+ {{ e.error }}
@@ -355,9 +355,9 @@ onUnmounted(() => {
{{ e.model || '—' }}
- {{ e.resolution }}
+ {{ e.resolution }}
{{ e.ratio }}
- {{ e.duration }}
+ {{ e.duration }}
去AI
diff --git a/frontend/src/views/UsersView.vue b/frontend/src/views/UsersView.vue
index 8c7565a..d767510 100644
--- a/frontend/src/views/UsersView.vue
+++ b/frontend/src/views/UsersView.vue
@@ -224,20 +224,20 @@ async function doRecharge() {
- 用户总数
+ 用户总数
{{ stats.total }}
- 正常
- {{ stats.active }}
+ 正常
+ {{ stats.active }}
- 管理员
- {{ stats.admins }}
+ 管理员
+ {{ stats.admins }}
- 总积分
- {{ points(stats.credits_total).toLocaleString('en-US') }}
+ 总积分
+ {{ points(stats.credits_total).toLocaleString('en-US') }}
@@ -331,12 +331,12 @@ async function doRecharge() {
|
+ :class="u.role === 'admin' ? 'bg-rose-500' : u.role === 'agent' ? 'bg-amber-500' : 'bg-slate-400'">
{{ roleLabel(u.role) }}
|
@@ -352,7 +352,7 @@ async function doRecharge() {
{{ points(u.credits).toLocaleString('en-US') }}
+ :class="u.recharge_total > 0 ? 'text-emerald-600' : 'text-white/25'">
¥{{ (u.recharge_total || 0).toLocaleString('en-US') }}
|
|
+ :class="u.banned_word_hits > 0 ? 'text-rose-600' : 'text-white/25'">
{{ (u.banned_word_hits || 0).toLocaleString('en-US') }}
|
@@ -427,7 +427,7 @@ async function doRecharge() {
|