import { useRef, useState } from "react"; import { ActionType, ProColumns } from "@ant-design/pro-components"; import { ProTable } from "@ant-design/pro-components"; import { Space, Tag, message, Popconfirm } from "antd"; import AddTemplateDrawer from "./AddTemplateDrawer"; import { GetTemplateList, DeleteTemplate, OnMarketTemplate, OffMarketTemplate, } from "@/api/templateStore"; import { history } from "umi"; import { MODULE_TEMPLATE_TYPE } from "@/constants"; export default () => { const actionRef = useRef(); const [editData, setEditData] = useState(); const handleToDetail = (id?: string) => { history.push(`/detail/template/${id}`); }; const handleOffMarket = async (id?: string) => { if (id) { await OffMarketTemplate({ ids: [id] }); actionRef.current?.reload(); message.success("下架成功"); } }; const handleOnMarket = async (id?: string) => { if (id) { await OnMarketTemplate({ ids: [id] }); actionRef.current?.reload(); message.success("上架成功"); } }; const handleDelete = async (id?: string) => { if (id) { await DeleteTemplate({ ids: [id] }); actionRef.current?.reload(); message.success("删除成功"); } }; const columns: ProColumns[] = [ { title: "图标", dataIndex: "icon", search: false, render: (_, record) => ( ), }, { title: "模版名称", dataIndex: "name", copyable: true, ellipsis: true, }, { title: "作者", dataIndex: "createByName", ellipsis: true, search: false, }, { title: "模版分类", dataIndex: "type", copyable: true, ellipsis: true, valueType: "select", fieldProps: { options: MODULE_TEMPLATE_TYPE, }, }, { disable: true, title: "标签", dataIndex: "labels", search: false, renderFormItem: (_, { defaultRender }) => { return defaultRender(_); }, render: (_, record) => ( {record.tags?.split(",").map((tag: string) => ( {tag} ))} ), }, { title: "上架状态", dataIndex: "isOnMarket", ellipsis: true, valueType: "select", valueEnum: { on: { text: "已上架", status: "Error", }, off: { text: "未上架", status: "Success", }, }, render: (_, record) => ( {record.isOnMarket ? "已上架" : "未上架"} ), }, { title: "使用量", dataIndex: "useNum", search: false, }, { title: "价格", dataIndex: "price", search: false, renderText: (text) => { return text ? `¥${text}` : "免费"; }, }, { title: "更新时间", dataIndex: "createTime", search: false, }, { title: "更新时间", dataIndex: "updateTime", search: false, }, { title: "操作", valueType: "option", key: "option", width: 180, render: (text, record, _, action) => [ setEditData(record)}> 编辑 , handleToDetail(record.id)} > 详情 , record.isOnMarket ? ( handleOffMarket(record.id)} > 下架 ) : ( handleOnMarket(record.id)} > 上架 ), handleDelete(record.id)} > 删除 , ], }, ]; return ( { const isOnMarket = params?.isOnMarket === "on" ? 1 : params?.isOnMarket === "off" ? 0 : undefined; const res = await GetTemplateList({ currentPage: params.current || 1, pageSize: params.pageSize || 10, filters: [ { name: "name", value: params?.name }, { name: "isFree", value: params?.isFree }, { name: "isOnMarket", value: isOnMarket }, { name: "isDel", value: 0 }, { name: "type", value: params?.type }, ], }); const data = res?.result || {}; return { success: true, data: data.model || [], total: data.totalCount || 0, }; }} columnsState={{ persistenceKey: "shalu-marketplace", persistenceType: "localStorage", defaultValue: { option: { fixed: "right", disable: true }, }, }} rowKey="id" search={{ labelWidth: "auto", }} options={{ setting: { listsHeight: 400, }, }} pagination={{ pageSize: 10, }} dateFormatter="string" headerTitle={ setEditData(undefined)} onSuccess={() => { actionRef.current?.reload(); }} editData={editData} /> } /> ); };