From dca32c435aa2995316ffdcc2279439e3691366c7 Mon Sep 17 00:00:00 2001 From: Eamon <17516219072@163.com> Date: Wed, 22 Apr 2026 13:26:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A5=97=E9=A4=90=E7=AE=A1=E7=90=86=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0IP=E6=A3=80=E6=9F=A5=E7=8A=B6=E6=80=81=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- src/actions/resources.ts | 2 +- src/app/(root)/resources/page.tsx | 36 ++++++++++++++++++++++++++++--- src/models/resources.ts | 1 + 4 files changed, 36 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 8fc2d3c..faaea24 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lanhu-admin", - "version": "1.5.0", + "version": "1.6.0", "private": true, "scripts": { "dev": "next dev -H 0.0.0.0 -p 3001 --turbopack", diff --git a/src/actions/resources.ts b/src/actions/resources.ts index 01c2ab5..1eaccad 100644 --- a/src/actions/resources.ts +++ b/src/actions/resources.ts @@ -28,7 +28,7 @@ export async function listResourceShort(params: ResourceListParams) { ) } -export async function updateResource(data: { id: number; active?: boolean }) { +export async function updateResource(data: { id: number; active?: boolean; checkip?: boolean}) { return callByUser("/api/admin/resource/update", data) } diff --git a/src/app/(root)/resources/page.tsx b/src/app/(root)/resources/page.tsx index 8e2d343..b0b0a3b 100644 --- a/src/app/(root)/resources/page.tsx +++ b/src/app/(root)/resources/page.tsx @@ -255,7 +255,30 @@ function ResourceList({ resourceType }: ResourceListProps) { }, [refreshTable], ) - + const handleCheckipChange = useCallback( + async (resource: Resources) => { + const newCheckip = !resource.checkip + setUpdatingId(resource.id) + try { + await updateResource({ + id: resource.id, + checkip: newCheckip, + }) + toast.success("更新成功", { + description: `IP检查已${newCheckip ? "启用IP检查" : "停用IP检查"}`, + }) + refreshTable() + } catch (error) { + console.error("更新IP检查状态失败:", error) + toast.error("更新失败", { + description: error instanceof Error ? error.message : "请稍后重试", + }) + } finally { + setUpdatingId(null) + } + }, + [refreshTable], + ) const onFilter = handleSubmit(data => { const result: FilterParams = {} if (data.user_phone?.trim()) result.user_phone = data.user_phone.trim() @@ -388,7 +411,7 @@ function ResourceList({ resourceType }: ResourceListProps) { { id: "action", meta: { pin: "right" }, - header: "状态", + header: "操作", cell: ({ row }: { row: { original: Resources } }) => { const resource = row.original const isLoading = updatingId === resource.id @@ -411,12 +434,19 @@ function ResourceList({ resourceType }: ResourceListProps) { {isLoading && ( )} + ) }, }, ], - [isLong, updatingId, handleStatusChange], + [isLong, updatingId, handleStatusChange, handleCheckipChange], ) return ( diff --git a/src/models/resources.ts b/src/models/resources.ts index 89fae0a..e0485bb 100644 --- a/src/models/resources.ts +++ b/src/models/resources.ts @@ -10,6 +10,7 @@ type ResourceBase = { updated_at: Date deleted_at: Date | null user: User + checkip:boolean } type ResourceShort = {