我的套餐新增状态筛选字段
This commit is contained in:
@@ -24,6 +24,7 @@ export async function listResourceShort(props: {
|
|||||||
size: number
|
size: number
|
||||||
resource_no?: string
|
resource_no?: string
|
||||||
type?: number
|
type?: number
|
||||||
|
status?: number
|
||||||
create_after?: Date
|
create_after?: Date
|
||||||
create_before?: Date
|
create_before?: Date
|
||||||
expire_after?: Date
|
expire_after?: Date
|
||||||
@@ -37,6 +38,7 @@ export async function listResourceLong(props: {
|
|||||||
size: number
|
size: number
|
||||||
resource_no?: string
|
resource_no?: string
|
||||||
type?: number
|
type?: number
|
||||||
|
status?: number
|
||||||
create_after?: Date
|
create_after?: Date
|
||||||
create_before?: Date
|
create_before?: Date
|
||||||
expire_after?: Date
|
expire_after?: Date
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import {Eraser, Search} from 'lucide-react'
|
|||||||
export interface ResourceFilterValues {
|
export interface ResourceFilterValues {
|
||||||
resource_no: string
|
resource_no: string
|
||||||
type: 'expire' | 'quota' | 'all'
|
type: 'expire' | 'quota' | 'all'
|
||||||
|
status: '0' | '1' | '2'
|
||||||
create_after?: Date
|
create_after?: Date
|
||||||
create_before?: Date
|
create_before?: Date
|
||||||
expire_after?: Date
|
expire_after?: Date
|
||||||
@@ -48,6 +49,20 @@ export default function ResourceFilter({form, onSubmit, onReset}: ResourceFilter
|
|||||||
</Select>
|
</Select>
|
||||||
)}
|
)}
|
||||||
</FormField>
|
</FormField>
|
||||||
|
<FormField name="status" label={<span className="text-sm">状态</span>}>
|
||||||
|
{({field}) => (
|
||||||
|
<Select value={field.value} onValueChange={field.onChange}>
|
||||||
|
<SelectTrigger className="w-24 h-9">
|
||||||
|
<SelectValue placeholder="选择状态"/>
|
||||||
|
</SelectTrigger>
|
||||||
|
<SelectContent>
|
||||||
|
<SelectItem value="0">全部</SelectItem>
|
||||||
|
<SelectItem value="1">可用</SelectItem>
|
||||||
|
<SelectItem value="2">已过期</SelectItem>
|
||||||
|
</SelectContent>
|
||||||
|
</Select>
|
||||||
|
)}
|
||||||
|
</FormField>
|
||||||
<div className="flex flex-col gap-2">
|
<div className="flex flex-col gap-2">
|
||||||
<Label className="text-sm">开通时间</Label>
|
<Label className="text-sm">开通时间</Label>
|
||||||
<div className="flex items-center">
|
<div className="flex items-center">
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import {
|
|||||||
ExpireBadge,
|
ExpireBadge,
|
||||||
formatDateTime,
|
formatDateTime,
|
||||||
getTodayUsage,
|
getTodayUsage,
|
||||||
|
isValidResourcestatus,
|
||||||
isValidResourceType,
|
isValidResourceType,
|
||||||
ResourceTypeBadge,
|
ResourceTypeBadge,
|
||||||
} from './utils'
|
} from './utils'
|
||||||
@@ -24,6 +25,7 @@ import {
|
|||||||
const filterSchema = zod.object({
|
const filterSchema = zod.object({
|
||||||
resource_no: zod.string().optional().default(''),
|
resource_no: zod.string().optional().default(''),
|
||||||
type: zod.enum(['expire', 'quota', 'all']).default('all'),
|
type: zod.enum(['expire', 'quota', 'all']).default('all'),
|
||||||
|
status: zod.enum(['0', '1', '2']).default('1'),
|
||||||
create_after: zod.date().optional(),
|
create_after: zod.date().optional(),
|
||||||
create_before: zod.date().optional(),
|
create_before: zod.date().optional(),
|
||||||
expire_after: zod.date().optional(),
|
expire_after: zod.date().optional(),
|
||||||
@@ -47,12 +49,13 @@ export default function ResourceList({resourceType}: ResourceListProps) {
|
|||||||
// 从 URL 参数初始化筛选条件
|
// 从 URL 参数初始化筛选条件
|
||||||
const params = useSearchParams()
|
const params = useSearchParams()
|
||||||
const paramType = params.get('type')
|
const paramType = params.get('type')
|
||||||
|
const paramStatus = params.get('status')
|
||||||
const form = useForm<ResourceFilterValues>({
|
const form = useForm<ResourceFilterValues>({
|
||||||
resolver: zodResolver(filterSchema),
|
resolver: zodResolver(filterSchema),
|
||||||
defaultValues: {
|
defaultValues: {
|
||||||
resource_no: params.get('resource_no') || '',
|
resource_no: params.get('resource_no') || '',
|
||||||
type: isValidResourceType(paramType) ? paramType : 'all',
|
type: isValidResourceType(paramType) ? paramType : 'all',
|
||||||
|
status: isValidResourcestatus(paramStatus) ? paramStatus : '1',
|
||||||
create_after: params.get('create_after') ? new Date(params.get('create_after')!) : undefined,
|
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,
|
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,
|
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,
|
expire: 1,
|
||||||
quota: 2,
|
quota: 2,
|
||||||
}[getValues('type')]
|
}[getValues('type')]
|
||||||
|
const status = getValues('status')
|
||||||
const create_after = getValues('create_after')
|
const create_after = getValues('create_after')
|
||||||
const create_before = getValues('create_before')
|
const create_before = getValues('create_before')
|
||||||
const expire_after = getValues('expire_after')
|
const expire_after = getValues('expire_after')
|
||||||
@@ -82,6 +86,7 @@ export default function ResourceList({resourceType}: ResourceListProps) {
|
|||||||
page,
|
page,
|
||||||
size,
|
size,
|
||||||
type,
|
type,
|
||||||
|
status: Number(status),
|
||||||
create_after,
|
create_after,
|
||||||
create_before,
|
create_before,
|
||||||
expire_after,
|
expire_after,
|
||||||
@@ -116,6 +121,7 @@ export default function ResourceList({resourceType}: ResourceListProps) {
|
|||||||
const handleReset = () => {
|
const handleReset = () => {
|
||||||
form.reset({
|
form.reset({
|
||||||
type: 'all',
|
type: 'all',
|
||||||
|
status: '1',
|
||||||
resource_no: '',
|
resource_no: '',
|
||||||
create_after: undefined,
|
create_after: undefined,
|
||||||
create_before: undefined,
|
create_before: undefined,
|
||||||
|
|||||||
@@ -7,6 +7,11 @@ export function isValidResourceType(type: string | null): type is 'expire' | 'qu
|
|||||||
return type === 'expire' || type === 'quota' || type === 'all'
|
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}) {
|
export function ResourceTypeBadge({type}: {type: number}) {
|
||||||
if (type === 1) {
|
if (type === 1) {
|
||||||
|
|||||||
Reference in New Issue
Block a user