"use client" import { format } from "date-fns" import { Suspense, useState } from "react" import { toast } from "sonner" import { deleteCoupon, getPagCoupon } from "@/actions/coupon" import { DataTable, useDataTable } from "@/components/data-table" import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, } from "@/components/ui/alert-dialog" import { Button } from "@/components/ui/button" import type { Coupon } from "@/models/coupon" import { CreateDiscount } from "./create" import { UpdateCoupon } from "./update" export default function CouponPage() { const table = useDataTable((page, size) => getPagCoupon({ page, size })) return (
{...table} columns={[ { header: "所属用户", accessorKey: "user_id" }, { header: "代码", accessorKey: "code" }, { header: "备注", accessorKey: "remark" }, { header: "金额", accessorKey: "amount" }, { header: "最低消费金额", accessorKey: "min_amount" }, { header: "状态", accessorKey: "status", cell: ({ row }) => { const status = row.original.status if (status === 0) { return 未使用 } if (status === 1) { return 已使用 } return - }, }, { header: "过期时间", accessorKey: "expire_at", cell: ({ row }) => format(new Date(row.original.created_at), "yyyy-MM-dd HH:mm"), }, { header: "创建时间", accessorKey: "created_at", cell: ({ row }) => format(new Date(row.original.created_at), "yyyy-MM-dd HH:mm"), }, { header: "更新时间", accessorKey: "updated_at", cell: ({ row }) => format(new Date(row.original.updated_at), "yyyy-MM-dd HH:mm"), }, { id: "action", meta: { pin: "right" }, header: "操作", cell: ({ row }) => (
), }, ]} />
) } function DeleteCoupon({ coupon, onSuccess, }: { coupon: Coupon onSuccess?: () => void }) { const [loading, setLoading] = useState(false) const handleConfirm = async () => { setLoading(true) try { const resp = await deleteCoupon(coupon.id) if (resp.success) { toast.success("删除成功") onSuccess?.() } else { toast.error(resp.message ?? "删除失败") } } catch (error) { const message = error instanceof Error ? error.message : error toast.error(`接口请求错误: ${message}`) } finally { setLoading(false) } } return ( 确认删除 确定要删除折扣「{coupon.code}」吗?此操作不可撤销。 取消 删除 ) }