import { statisticscontrollerStockforecast } from '@/servers/api/statistics'; import { stockcontrollerGetallstockpoints } from '@/servers/api/stock'; import { ActionType, PageContainer, ProColumns, ProFormDatePicker, ProFormDigit, ProTable, } from '@ant-design/pro-components'; import dayjs from 'dayjs'; import { useEffect, useRef, useState } from 'react'; const ListPage: React.FC = () => { const actionRef = useRef(); const [points, setPoints] = useState([]); useEffect(() => { stockcontrollerGetallstockpoints().then(({ data }) => { setPoints(data as API.StockPoint[]); }); }, []); const [real, setReal] = useState({}); const columns: ProColumns[] = [ { title: '产品名称', dataIndex: 'productName', }, { title: 'SKU', dataIndex: 'productSku', hideInSearch: true, }, ...points ?.filter((point: API.StockPoint) => !point.ignore) ?.map((point: API.StockPoint) => ({ title: point.name, dataIndex: `point_${point.name}`, hideInSearch: true, render(_: any, record: any) { const quantity = record.stockDetails?.find( (item: any) => item.id === point.id, )?.quantity; return quantity || 0; }, })), { title: '途中库存', dataIndex: 'transitStock', hideInSearch: true, }, { title: '加拿大库存', dataIndex: 'caTotalStock', hideInSearch: true, render(_, record) { if (!record.caTotalStock || record.caTotalStock > 400) { return record.caTotalStock; } return {record.caTotalStock}; }, }, { title: '总库存', dataIndex: 'totalStock', hideInSearch: true, }, { title: '30天', dataIndex: 'totalSales_30', hideInSearch: true, }, { title: '2*15天', dataIndex: 'totalSales_15', hideInSearch: true, }, { title: '补货数量', dataIndex: 'restockQuantity', hideInSearch: true, }, { title: '实补数量', dataIndex: 'restockQuantityReal', hideInSearch: true, render(_, record) { return ( ); }, }, { title: 'B端实补数量', dataIndex: 'restockQuantityReal', hideInSearch: true, render(_, record) { return ; }, }, { title: '加拿大剩余天数', dataIndex: 'caAvailableDays', hideInSearch: true, render(_, record) { if (!record.caAvailableDays || record.caAvailableDays > 40) { return record.caAvailableDays; } return {record.caAvailableDays}; }, }, { title: '剩余天数', dataIndex: 'availableDays', hideInSearch: true, render(_, record) { if (!record.availableDays || record.availableDays > 70) { return record.availableDays; } return {record.availableDays}; }, }, { title: '实补后剩余天数', hideInSearch: true, render(_, record) { if (!record.availableDays) return '-'; const availableDays = Number(record.availableDays); const quantity = real?.[record.productSku] || 0; const day = availableDays + Math.floor( quantity / (Math.max(record.totalSales_30, record.totalSales_15) / 30), ); return day; }, }, { title: '实补后日期', hideInSearch: true, render(_, record) { if (!record.availableDays) return '-'; const availableDays = Number(record.availableDays); const quantity = real?.[record.productSku] || 0; const day = availableDays + Math.floor( quantity / (Math.max(record.totalSales_30, record.totalSales_15) / 30), ); return ( ); }, }, ]; return ( { const { data, success } = await statisticscontrollerStockforecast( param, ); if (success) { return { total: data?.total || 0, data: data?.items || [], }; } return { data: [], }; }} columns={columns} dateFormatter="number" /> ); }; export default ListPage;