import { Link } from "@/app/_lib/data/link" import { LinkType } from "@/app/_lib/data/linkType" import { mRequest } from "@/app/_lib/request" import ImageUpload from "@/app/_ui/ImageUpload" import { useAntdTable, useRequest } from "ahooks" import { Button, Card, DatePicker, Form, Image, Input, InputNumber, message, Modal, Popconfirm, Radio, Select, Space, Table, } from "antd" import dayjs from "dayjs" import { useState } from "react" export default function LinkTable(props: { id: string }) { const [loading, setLoading] = useState(false) const { data: LinkTypeList } = useRequest(async () => mRequest<{ list: LinkType[] }>('GET', '/api/linkType')) const { tableProps, refresh } = useAntdTable( async ({ current, pageSize }) => { return mRequest<{ total: number; list: Link[] }>( "GET", `/api/link?page=${current}&pageSize=${pageSize}&typeId=${props.id}` ) }, ) // const refresh = useCallback(async () => { // setLoading(true) // const res = await mRequest<{ list: Link[] }>( // "GET", // `/api/link?typeId=${props.id}&page=1&pageSize=9999` // ) // setList(res.list) // setLoading(false) // }, [props.id]) const [selected, setSelected] = useState( undefined ) return (
} > {...tableProps} loading={loading} rowKey="_id" columns={[ { title: "名称", dataIndex: "name", }, { title: "图标", dataIndex: "logoLink", render: (_, row) => ( ) }, { title: "是否热门", dataIndex: "isHot", render: (_, row) => ( row.isHot ? '是' : '否' ) }, { title: "操作", fixed: "right", width: 200, render: (_, row) => ( { await mRequest("DELETE", "/api/link/" + row._id,) refresh() message.success("删除成功") }} > ), }, ]} /> setSelected(undefined)} destroyOnClose title={(selected ? "编辑" : "新增") + "链接"} footer={false} >
{ if (selected) { await mRequest("PUT", "/api/link", { _id: selected._id, ...res, type: props.id, addTime: res.addTime.unix() }) } else { await mRequest("POST", "/api/link", { ...res, type: props.id, addTime: res.addTime.unix() }) } refresh() setSelected(undefined) message.success("操作成功") }} >
) }