feat: 书库导入导出/图片变体/书籍搜索/小组件运行时等
新增: - 书库导入导出(library_import/library_export)及测试 - 图片变体生成(image_variants)与响应式图片(responsiveImage) - 书籍搜索(bookSearch)+ BookSearch/LibrarySearchGrid 组件 - 小组件运行时(widgetRuntime)与静态检查(widgetLint) - 上传缓存中间件(upload_cache)与字体 CSS 提取脚本 其它: - 后端 handlers/services 全量调整 - 前端页面、组件、库函数与配置更新
This commit is contained in:
@@ -13,6 +13,7 @@ import {
|
||||
Users,
|
||||
} from "lucide-react";
|
||||
import {
|
||||
apiAdminGetUserPerms,
|
||||
apiAdminSetUserBan,
|
||||
apiListBoards,
|
||||
apiMe,
|
||||
@@ -61,6 +62,8 @@ export default function StaffUserMenu({
|
||||
const [roleOpen, setRoleOpen] = useState(false);
|
||||
const [boards, setBoards] = useState<Board[]>([]);
|
||||
const [acting, setActing] = useState(false);
|
||||
/** 目标账号的渠道权限(打开弹窗时按需拉取;undefined = 加载中) */
|
||||
const [rolePerms, setRolePerms] = useState<string[] | undefined>(undefined);
|
||||
|
||||
useEffect(() => {
|
||||
apiMe()
|
||||
@@ -99,11 +102,15 @@ export default function StaffUserMenu({
|
||||
const openRoleModal = () => {
|
||||
setOpen(false);
|
||||
setRoleOpen(true);
|
||||
setRolePerms(undefined);
|
||||
if (boards.length === 0) {
|
||||
apiListBoards()
|
||||
.then((res) => setBoards(res.boards ?? []))
|
||||
.catch(() => toast("板块列表加载失败"));
|
||||
}
|
||||
apiAdminGetUserPerms(target.id)
|
||||
.then((res) => setRolePerms(res.perm_overrides))
|
||||
.catch(() => toast("渠道权限加载失败"));
|
||||
};
|
||||
|
||||
const handleBanConfirm = async () => {
|
||||
@@ -130,6 +137,7 @@ export default function StaffUserMenu({
|
||||
role: target.role,
|
||||
board_ids: target.board_ids,
|
||||
banned,
|
||||
perm_overrides: rolePerms,
|
||||
avatar: target.avatar,
|
||||
created_at: target.created_at,
|
||||
points: target.points,
|
||||
@@ -241,6 +249,7 @@ export default function StaffUserMenu({
|
||||
onClose={() => setRoleOpen(false)}
|
||||
onSaved={(next) => {
|
||||
setBanned(next.banned);
|
||||
setRolePerms(next.perm_overrides);
|
||||
onBannedChange?.(next.banned);
|
||||
setRoleOpen(false);
|
||||
router.refresh();
|
||||
|
||||
Reference in New Issue
Block a user