运营后台前端:权限管理(RBAC)+ 系统配置 + 比价记录店/商品搜索 (#36)

一、权限管理(原「管理员」页,重命名为「权限管理」)
- 重建为 4 视图:账号列表 / 新增·编辑人员 / 角色设置(只读权限矩阵,无权限置灰)/ 角色权限勾选矩阵
- 左侧导航按当前角色的可见页过滤(拉 /me 刷新);角色显示中文名 管理员/运营/财务/技术
- 新增人员自动生成一次性密码;编辑复看已确定登录密码(只读),无留存明文的账号不显示密码

二、系统配置
- 首页数据「保存」改为保存即生效
- 首页轮播种子页加 真实/种子/混播 数据源切换

三、比价记录
- 店/商品拆两列 + 各自搜索框;整格换行不截断;搜索命中黄底高亮

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: zzhyyyyy <2685922758@qq.com>
Reviewed-on: #36
Co-authored-by: zhuzihao <zhuzihao@wonderable.ai>
Co-committed-by: zhuzihao <zhuzihao@wonderable.ai>
This commit was merged in pull request #36.
This commit is contained in:
2026-07-05 09:46:24 +08:00
committed by marco
parent 281cfdb0e4
commit b620948a71
6 changed files with 535 additions and 112 deletions
+23 -1
View File
@@ -3,10 +3,31 @@
export interface AdminInfo {
id: number;
username: string;
role: string; // super_admin / finance / operator
role: string; // super_admin / finance / operator / 自定义角色名
status: string;
created_at: string;
last_login_at: string | null;
pages?: string[]; // 当前角色有效可见页 key(登录 / /me 下发);super_admin = 全部页。左侧导航按此过滤
password?: string | null; // 明文登录密码(仅账号列表下发);无留存(脚本建的超管)为 null → 不显示
}
// RBAC:页面权限目录(= 左侧导航项,后端 /admin/api/roles/catalog 下发)
export interface PermissionPage {
key: string;
label: string;
}
export interface PermissionGroup {
group: string;
pages: PermissionPage[];
}
// RBAC:角色(可见页集合)
export interface AdminRole {
id: number;
name: string; // 角色 key(承重,admin_user.role 引用)
label: string; // 展示名(UI 显示,如 管理员/运营/财务/技术)
pages: string[]; // 该角色有效可见页 key(super_admin = 全部)
is_builtin: boolean; // 内建(super_admin):不可编辑/删除
in_use: number; // 使用该角色的管理员数
}
export interface LoginResponse {
@@ -309,6 +330,7 @@ export interface ComparisonRecordListItem {
status: string;
information: string | null;
store_name: string | null;
product_names: string | null; // 下单商品名派生串(顿号分隔),「商品」列展示
source_platform_name: string | null;
best_platform_name: string | null;
source_price_cents: number | null;