import { EllipsisOutlined, PlusOutlined } from '@ant-design/icons'; import type { ActionType, ProColumns } from '@ant-design/pro-components'; import { useNavigate } from '@umijs/max'; import type { MenuProps, TabsProps } from 'antd'; import { Button, Dropdown, Space, Tabs } from 'antd'; import { useCallback, useRef, useState } from 'react'; import ConfigurableDrawerForm, { type ConfigurableDrawerFormRef, } from '@/components/DrawerForm'; import EnhancedProTable from '@/components/EnhancedProTable'; import type { ToolbarAction } from '@/components/EnhancedProTable/types'; import { formStatusType } from '@/constants'; import ProdDetail from '@/pages/prod/list/detail'; import { createProd, getProdDetail, getProdPage, type Prod, type ProdReq, updateProd, } from '@/services/prod/prod-manager'; import { baseTenantColumns } from './config'; const ProdList = () => { const tableRef = useRef(null); const [type, setType] = useState<'create' | 'update' | 'test'>('create'); const [status, setStatus] = useState(); const detailRef = useRef(null); const navigator = useNavigate(); // const editRef = useRef(null); const [id, setId] = useState(0); const onChange = useCallback( (key: string) => { setStatus(Number(key)); }, [status], ); const onFetch = async (params: ProdReq) => { const data = await getProdPage({ ...params, status: status ? status : undefined, }); return { data: data.list, success: true, }; }; const handleAdd = () => { setType('create'); detailRef.current?.open({}); }; const toolbarActions: ToolbarAction[] = [ { key: 'add', label: '新建', type: 'primary', icon: , onClick: handleAdd, }, ]; const handleEdit = async (row: Prod) => { setType('update'); const res = await getProdDetail({ id: row.prodId as number }); setId(row.prodId as number); detailRef.current?.open(res); }; // 商品更新 // const _handleEditSubmit = async (values: Prod) => { // await updateProd(values); // tableRef.current?.reload(); // message.success("编辑成功"); // return true; // }; const handleSubmit = useCallback( async (values: Prod) => { if (type === 'create') { await createProd(values); } else { await updateProd({ ...values, categoryId: id, }); } tableRef.current?.reload(); return true; }, [id, type], ); const handleLink = (key: string, row: Prod) => { if (key === 'sku') { // navigator(`/prod/list/sku/${row.prodId}`); } console.log(key, row); }; // const renderDetailFooter = () => { // if (type === "update") { // return ( // // // // // ); // } else { // return ( // // ); // } // }; const itemsMenu = (row: Prod): MenuProps['items'] => [ { key: 'edit', label: ( ), }, { key: 'sku', label: ( ), }, { key: 'rules-service', label: , }, { key: 'extend-service', label: , }, { key: 'status', label: , }, { key: 'delete', label: ( ), }, ]; const actionColumns: ProColumns = { title: '操作', dataIndex: 'option', valueType: 'option', fixed: 'right', align: 'center', width: 200, render: (_text: React.ReactNode, record: Prod, _: number) => [ , ], }; const columns = [...baseTenantColumns, actionColumns]; const renderChildren = () => { return ( <> ref={tableRef} columns={columns} request={onFetch} toolbarActions={toolbarActions} headerTitle="短信渠道" showIndex={false} rowKey="prodId" showSelection={false} /> {/* */} ); }; const items: TabsProps['items'] = [ { key: '', label: '全部商品', children: renderChildren(), }, { key: '1', label: '出售中的商品', children: renderChildren(), }, { key: '0', label: '仓库中的商品', children: renderChildren(), }, { key: '2', label: '待审核的商品', children: renderChildren(), }, ]; return ( ); }; export default ProdList;