feat(integration): 新增 site_code 支持并增强玩家与注单管理界面
在后台玩家与注单相关 API 中新增 site_code 参数,支持按站点筛选数据。 更新 PlayersConsole 与 PlayerTicketsConsole UI 组件,新增站点选择筛选功能。 增强国际化支持,在英文与中文语言包中新增站点相关文案。 优化配置中心页面,新增跳转至集成站点管理的入口,提升后台导航体验。
This commit is contained in:
66
src/hooks/use-admin-site-code-options.ts
Normal file
66
src/hooks/use-admin-site-code-options.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
"use client";
|
||||
|
||||
import { useCallback, useEffect, useState } from "react";
|
||||
|
||||
import { getAdminIntegrationSites } from "@/api/admin-integration-sites";
|
||||
import { adminHasAnyPermission } from "@/lib/admin-permissions";
|
||||
import { useAdminProfile } from "@/stores/admin-session";
|
||||
|
||||
export type AdminSiteCodeOption = {
|
||||
code: string;
|
||||
name: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* 接入站点下拉(已按当前管理员站点权限过滤)。
|
||||
*/
|
||||
export function useAdminSiteCodeOptions(): {
|
||||
sites: AdminSiteCodeOption[];
|
||||
loading: boolean;
|
||||
canChooseSite: boolean;
|
||||
reload: () => Promise<void>;
|
||||
} {
|
||||
const profile = useAdminProfile();
|
||||
const canLoad = adminHasAnyPermission(profile?.permissions, [
|
||||
"prd.integration.view",
|
||||
"prd.integration.manage",
|
||||
]);
|
||||
|
||||
const [sites, setSites] = useState<AdminSiteCodeOption[]>([]);
|
||||
const [loading, setLoading] = useState(false);
|
||||
|
||||
const reload = useCallback(async () => {
|
||||
if (!canLoad) {
|
||||
setSites([]);
|
||||
return;
|
||||
}
|
||||
|
||||
setLoading(true);
|
||||
try {
|
||||
const data = await getAdminIntegrationSites();
|
||||
setSites(
|
||||
data.items.map((row) => ({
|
||||
code: row.code,
|
||||
name: row.name,
|
||||
})),
|
||||
);
|
||||
} catch {
|
||||
setSites([]);
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
}, [canLoad]);
|
||||
|
||||
useEffect(() => {
|
||||
queueMicrotask(() => {
|
||||
void reload();
|
||||
});
|
||||
}, [reload]);
|
||||
|
||||
return {
|
||||
sites,
|
||||
loading,
|
||||
canChooseSite: canLoad && sites.length > 0,
|
||||
reload,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user