feat(ui): 设置页重设计 + 全站表格配色统一为亮色变量

- 设置页:移除暗色残留,统一页头/卡片/图标块/按钮样式
- 模型管理:照 vivid 重排——模型名等宽显示,子行展示渠道名+权重,
  定价胶囊「档位+普通价+代理价」,配置列统一灰色等宽标签,
  操作列加宽修复删除按钮被挤
- 后端 ModelsView 返回每个模型绑定的渠道名列表(channel_models JOIN)
- 全站 scoped 样式里的硬编码白值(rgb(255 255 255/white)批量替换为
  主题变量,修复亮色模式下表头/开关/操作按钮不可见(如渠道表头)
- 关于页:联系卡片统一等高布局,链接/非链接卡片对齐一致

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
2026-10-27 17:28:47 +08:00
co-authored by Devin
parent 6c6e5add03
commit c78b01d988
19 changed files with 415 additions and 545 deletions
+2
View File
@@ -85,6 +85,7 @@ func (s *AdminReadService) ModelsView(ctx context.Context) ([]map[string]any, er
return nil, err
}
routable, _ := s.channels.RoutableModelIDs(ctx)
channelNames, _ := s.channels.ChannelNamesByModel(ctx)
out := make([]map[string]any, 0, len(items))
for _, item := range items {
_, bound := routable[item.ID]
@@ -94,6 +95,7 @@ func (s *AdminReadService) ModelsView(ctx context.Context) ([]map[string]any, er
"type": item.Type,
"name": item.Name,
"provider": item.Provider,
"channels": channelNames[item.ID],
// 配价即上架(无启停开关):全档位有价 + 绑定了启用渠道才算可售。
"sellable": bound && ModelFullyPriced(&item),
"ratios": repo.JSONStrings(item.Ratios),