"use client" import { format } from "date-fns" import { EyeIcon, EyeOffIcon, PlusIcon, TrashIcon } from "lucide-react" import { Suspense, useCallback, useEffect, useMemo, useState } from "react" import { getAllProduct, getPageProductSku } from "@/actions/product" import { DataTable, useDataTable } from "@/components/data-table" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { Tooltip, TooltipContent, TooltipTrigger, } from "@/components/ui/tooltip" import { cn } from "@/lib/utils" import type { Product } from "@/models/product" export default function ProductPage() { const [selected, setSelected] = useState(undefined) return (
) } function Products(props: { selected?: number onSelect?: (id: number) => void }) { const [list, setList] = useState([]) const refresh = useCallback(async () => { const resp = await getAllProduct() if (resp.success) { setList(resp.data) console.log(resp.data) } }, []) const selected = useMemo(() => { return list.find(item => item.id === props.selected) }, [list, props.selected]) useEffect(() => { refresh() }, [refresh]) return (

产品列表

新建产品

{!!selected && (

{selected.status ? "禁用产品" : "启用产品"}

)}

删除产品

    {list.map(item => (
  • ))}
) } function ProductSkus(props: { selected?: number }) { const action = useCallback( (page: number, size: number) => { return getPageProductSku({ page, size, product_id: props.selected }) }, [props.selected], ) const table = useDataTable(action) return (
Number(row.price) * row.discount, }, { header: "创建时间", accessorFn: row => format(row.created_at, "yyyy-MM-dd HH:mm"), }, { header: "更新时间", accessorFn: row => format(row.updated_at, "yyyy-MM-dd HH:mm"), }, { header: "操作", cell: () =>
}, ]} />
) }