refactor: 重构项目接口与API调用体系,统一类型管理

1.  合并拆分的API类型定义到统一的api/interface.ts文件
2.  删除旧的api/client.ts与api/types.ts文件
3.  重构所有页面与组件的API调用方式,统一使用api/index.ts导出的接口
4.  调整组件文件结构,将分散的组件按模块整理
5.  统一类型导入路径,移除冗余的类型重复定义
This commit is contained in:
2026-07-02 14:57:06 +08:00
parent e160476ecf
commit 3451d373bc
54 changed files with 1106 additions and 930 deletions

View File

@@ -1,21 +1,22 @@
import { Card } from '@arco-design/web-react';
import type { AdminProfile, AppUser, Drama, RequestLog } from '../api/types';
import { dramaApi, logApi, userApi } from '../api';
import { usePageData } from '../hooks/usePageData';
import { hasPermissions } from '../utils/permission';
import { NoAccessPage } from '../components/NoAccessPage';
import { RequestLogTable } from '../components/RequestLogTable';
import type { AppUser, DashboardPageProps, Drama, MetricCardProps, RequestLog } from './interface';
function MetricCard({ label, value }: { label: string; value: number | string }) {
function MetricCard({ label, value }: MetricCardProps) {
return <Card><div className="mb-2 text-muted">{label}</div><div className="text-[28px] font-bold">{value}</div></Card>;
}
function DashboardPage({ profile }: { profile: AdminProfile | null }) {
function DashboardPage({ profile }: DashboardPageProps) {
const canReadDramas = hasPermissions(profile, ['drama:read']);
const canReadUsers = hasPermissions(profile, ['user:read']);
const canReadLogs = hasPermissions(profile, ['log:read']);
const dramas = usePageData<Drama>('/api/admin/v1/dramas', canReadDramas);
const users = usePageData<AppUser>('/api/admin/v1/users', canReadUsers);
const logs = usePageData<RequestLog>('/api/admin/v1/logs/requests', canReadLogs);
const dramas = usePageData<Drama>(dramaApi.listDramas, canReadDramas);
const users = usePageData<AppUser>(userApi.listUsers, canReadUsers);
const logs = usePageData<RequestLog>(logApi.listRequestLogs, canReadLogs);
const hasAnyDataModule = canReadDramas || canReadUsers || canReadLogs;
return (

View File

@@ -0,0 +1,12 @@
import type { AdminProfile, AppUser, Drama, RequestLog } from "../api";
export type { AdminProfile, AppUser, Drama, RequestLog };
export type DashboardPageProps = {
profile: AdminProfile | null;
};
export type MetricCardProps = {
label: string;
value: number | string;
};