import React, { useEffect, useState } from 'react'; import { InboxOutlined } from '@ant-design/icons'; import { Button, Modal, Upload, message } from 'antd'; import ConfirmDetailModal from '@/pages/pms/partPlan/PlanShipping/components/ConfirmDetailModal'; import usePagination from '@/hooks/usePagination'; import { getStoragePage } from '@/pages/pms/storage/StorageManage/api'; import { getPageListApi, Item } from '@/pages/pms/partPlan/PlanSupplier/api'; import SelectRow from '@/pages/pms/comonents/SelectRow'; import useInitail from "@/hooks/useInitail"; import { getShopApi } from '@/pages/pms/storage/partShop/api'; const Dragger = Upload.Dragger; interface Props { getList: () => any importVisible: boolean brands: any[] setImportVisible: (v: boolean) => any } export default function UploadExcel({ getList, importVisible, setImportVisible, brands }: Props) { const [delay, setDelay] = useState(true); const [fileList, setFileList] = useState([]); const { list: storages } = usePagination(getStoragePage, {pageSize: 1000}); const { list: suppliers, setParams, innerParams } = usePagination(getPageListApi, { pageSize: 500, supplierType: 10 }, {delay}); const { data: shops } = useInitail(getShopApi, [], {}); const [param, setParam] = useState({ brandId: null, storageId: null, supplierId: null, settleShopId: null}); const [visibleDetail, setVisibleDetail] = useState(false); const [uploadResult, setUploadResult] = useState(); useEffect(() => { if (!importVisible) { setUploadResult(null); setParam({ brandId: null, storageId: null, supplierId: null, settleShopId: null }); setFileList([]); } }, [importVisible]); useEffect(() => { if (!visibleDetail) { setImportVisible(false); } }, [visibleDetail]); function beforeUpload(file: any) { const isLt2M = file.size / 1024 / 1024 < 20; if (!isLt2M) { message.error('文件不能超过20MB!'); } return isLt2M; } function handleChange(info: any) { const { file: { status, response }, fileList } = info; if (status !== 'uploading' && response) { const { success, result, data } = response; if (status === 'done' && success) { message.success(`${info.file.name} 上传成功`); // 调用上传接口 setUploadResult(data); getList(); } else if (response && !success) { message.error(`${info.file.name} 上传失败: ${result}`); } } setFileList(fileList.splice(-1)); } const uploadProps = { accept: '.xls, .xlsx', name: 'file', fileList, multiple: false, data: param, action: `/api/pms/app/part/shipping/save`, onChange: (file: any) => handleChange(file), beforeUpload: (info: any) => beforeUpload(info) }; return ( { setImportVisible(false); setUploadResult(null); }} footer={ } >
{ setParam({...param, brandId}); setParams({ ...innerParams, brandId, current: 1 }, true); setDelay(false); }} /> setParam({ ...param, supplierId })} /> setParam({ ...param, storageId })} /> setParam({ ...param, settleShopId })} />
{!uploadResult ? !!param.brandId && !!param.storageId && !!param.supplierId && (

将文件拖到此处上传

) : (

数据总条数:{uploadResult.totalCount}条

成功条数:{uploadResult.successCount}条

失败条数:{uploadResult.failedCount}

{uploadResult.filePath ? (下载错误文件) : null} {!!uploadResult.data && !!uploadResult.successCount && (

供应商:{uploadResult.data?.supplierName || '--'}

发运单号:{uploadResult.data?.shippingNo || '--'}

发运品种:{uploadResult.data?.cnt || 0}种

本次导入金额:{uploadResult.data?.importAmount || 0}元

{ setVisibleDetail(true); }}>去确认
)}
)} setVisibleDetail(false)} fetchList={() => { setUploadResult(null); getList(); }} />
); }