diff --git a/src/actions/resource.ts b/src/actions/resource.ts index e92fc9d..d2c9319 100644 --- a/src/actions/resource.ts +++ b/src/actions/resource.ts @@ -24,6 +24,7 @@ export async function listResourceShort(props: { size: number resource_no?: string type?: number + status?: number create_after?: Date create_before?: Date expire_after?: Date @@ -37,6 +38,7 @@ export async function listResourceLong(props: { size: number resource_no?: string type?: number + status?: number create_after?: Date create_before?: Date expire_after?: Date diff --git a/src/app/admin/resources/_components/filter.tsx b/src/app/admin/resources/_components/filter.tsx index d7f9723..a4d2b25 100644 --- a/src/app/admin/resources/_components/filter.tsx +++ b/src/app/admin/resources/_components/filter.tsx @@ -12,6 +12,7 @@ import {Eraser, Search} from 'lucide-react' export interface ResourceFilterValues { resource_no: string type: 'expire' | 'quota' | 'all' + status: '0' | '1' | '2' create_after?: Date create_before?: Date expire_after?: Date @@ -41,13 +42,27 @@ export default function ResourceFilter({form, onSubmit, onReset}: ResourceFilter - 全部 + 全部 包时 包量 )} + 状态}> + {({field}) => ( + + )} +
diff --git a/src/app/admin/resources/_components/list.tsx b/src/app/admin/resources/_components/list.tsx index 5966164..f51f443 100644 --- a/src/app/admin/resources/_components/list.tsx +++ b/src/app/admin/resources/_components/list.tsx @@ -17,6 +17,7 @@ import { ExpireBadge, formatDateTime, getTodayUsage, + isValidResourcestatus, isValidResourceType, ResourceTypeBadge, } from './utils' @@ -24,6 +25,7 @@ import { const filterSchema = zod.object({ resource_no: zod.string().optional().default(''), type: zod.enum(['expire', 'quota', 'all']).default('all'), + status: zod.enum(['0', '1', '2']).default('1'), create_after: zod.date().optional(), create_before: zod.date().optional(), expire_after: zod.date().optional(), @@ -47,12 +49,13 @@ export default function ResourceList({resourceType}: ResourceListProps) { // 从 URL 参数初始化筛选条件 const params = useSearchParams() const paramType = params.get('type') - + const paramStatus = params.get('status') const form = useForm({ resolver: zodResolver(filterSchema), defaultValues: { resource_no: params.get('resource_no') || '', type: isValidResourceType(paramType) ? paramType : 'all', + status: isValidResourcestatus(paramStatus) ? paramStatus : '1', create_after: params.get('create_after') ? new Date(params.get('create_after')!) : undefined, create_before: params.get('create_before') ? new Date(params.get('create_before')!) : undefined, expire_after: params.get('expire_after') ? new Date(params.get('expire_after')!) : undefined, @@ -71,6 +74,7 @@ export default function ResourceList({resourceType}: ResourceListProps) { expire: 1, quota: 2, }[getValues('type')] + const status = getValues('status') const create_after = getValues('create_after') const create_before = getValues('create_before') const expire_after = getValues('expire_after') @@ -82,6 +86,7 @@ export default function ResourceList({resourceType}: ResourceListProps) { page, size, type, + status: Number(status), create_after, create_before, expire_after, @@ -116,6 +121,7 @@ export default function ResourceList({resourceType}: ResourceListProps) { const handleReset = () => { form.reset({ type: 'all', + status: '1', resource_no: '', create_after: undefined, create_before: undefined, diff --git a/src/app/admin/resources/_components/utils.tsx b/src/app/admin/resources/_components/utils.tsx index 10e3ff6..0952113 100644 --- a/src/app/admin/resources/_components/utils.tsx +++ b/src/app/admin/resources/_components/utils.tsx @@ -7,6 +7,11 @@ export function isValidResourceType(type: string | null): type is 'expire' | 'qu return type === 'expire' || type === 'quota' || type === 'all' } +// 状态 +export function isValidResourcestatus(status: string | null): status is '0' | '1' | '2' { + return status === '0' || status === '1' || status === '2' +} + // 资源类型徽章 export function ResourceTypeBadge({type}: {type: number}) { if (type === 1) {