|  |  |  | 
|---|
|  |  |  | import { useEffect, useState } from 'react'; | 
|---|
|  |  |  | import { useEffect, useState, createContext, useContext } from 'react'; | 
|---|
|  |  |  | import { Box, CircularProgress, Stack, Typography } from '@mui/material'; | 
|---|
|  |  |  | import Alert from '@mui/material/Alert'; | 
|---|
|  |  |  | import Dialog from '@mui/material/Dialog'; | 
|---|
|  |  |  | 
|---|
|  |  |  | Form, | 
|---|
|  |  |  | Toolbar, | 
|---|
|  |  |  | useRefresh, | 
|---|
|  |  |  | useTranslate | 
|---|
|  |  |  | useTranslate, | 
|---|
|  |  |  | useNotify | 
|---|
|  |  |  | } from 'react-admin'; | 
|---|
|  |  |  | import { Link } from 'react-router-dom'; | 
|---|
|  |  |  | import DialogCloseButton from './DialogCloseButton'; | 
|---|
|  |  |  | import { usePapaParse } from './usePapaParse'; | 
|---|
|  |  |  | import MatnrList from '../basicInfo/matnr/MatnrList'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const ImportModal = ({ open, onClose, importTemp, useCodeImport, onceBatch = 10 }) => { | 
|---|
|  |  |  | import request from '@/utils/request' | 
|---|
|  |  |  | import ImportExportOutlinedIcon from '@mui/icons-material/ImportExportOutlined'; | 
|---|
|  |  |  | const ImportModal = ({ open, onClose, importTemp, useCodeImport, onceBatch = 10, value, parmas = {}}) => { | 
|---|
|  |  |  | const refresh = useRefresh(); | 
|---|
|  |  |  | const translate = useTranslate(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const [file, setFile] = useState(null); | 
|---|
|  |  |  | const notify = useNotify(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | useEffect(() => { | 
|---|
|  |  |  | if (importer.state === 'complete') { | 
|---|
|  |  |  | 
|---|
|  |  |  | if (!file) { | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | const form = new FormData(); | 
|---|
|  |  |  | for (const key in parmas) { | 
|---|
|  |  |  | if (parmas.hasOwnProperty(key)) { | 
|---|
|  |  |  | form.append(key, parmas[key]); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | form.append('file', file); | 
|---|
|  |  |  | const { data: { code, data, msg } } = await request.post(`/${value}/import`, form) | 
|---|
|  |  |  | if (code === 200) { | 
|---|
|  |  |  | handleClose() | 
|---|
|  |  |  | notify(msg); | 
|---|
|  |  |  | refresh() | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | handleClose() | 
|---|
|  |  |  | notify(msg); | 
|---|
|  |  |  | refresh() | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | parseCsv(file); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const handleClose = () => { | 
|---|
|  |  |  | 
|---|
|  |  |  | e.preventDefault(); | 
|---|
|  |  |  | reset(); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const downloadTemplate = async (type) => { | 
|---|
|  |  |  | const res = await request.post(`/${value}/template/download`, {}, { | 
|---|
|  |  |  | responseType: "blob", | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | const url = window.URL.createObjectURL( | 
|---|
|  |  |  | new Blob([res.data], { type: res.headers["content-type"] }), | 
|---|
|  |  |  | ); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const link = document.createElement("a"); | 
|---|
|  |  |  | link.href = url; | 
|---|
|  |  |  | link.setAttribute("download", `${value}.xlsx`); | 
|---|
|  |  |  | document.body.appendChild(link); | 
|---|
|  |  |  | link.click(); | 
|---|
|  |  |  | link.remove(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return ( | 
|---|
|  |  |  | <Dialog open={open} maxWidth="md" fullWidth> | 
|---|
|  |  |  | 
|---|
|  |  |  | <Toolbar | 
|---|
|  |  |  | sx={{ | 
|---|
|  |  |  | width: '100%', | 
|---|
|  |  |  | justifyContent: 'end' | 
|---|
|  |  |  | }} | 
|---|
|  |  |  | > | 
|---|
|  |  |  | {importer.state === 'idle' ? ( | 
|---|
|  |  |  | 
|---|
|  |  |  | <Button | 
|---|
|  |  |  | label="common.action.import.title" | 
|---|
|  |  |  | variant="contained" | 
|---|
|  |  |  | startIcon={<ImportExportOutlinedIcon />} | 
|---|
|  |  |  | size='medium' | 
|---|
|  |  |  | onClick={startImport} | 
|---|
|  |  |  | disabled={!file} | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | 
|---|
|  |  |  | </Dialog> | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | {/**下载打印模板,传入type类型,调用下载模板接口 */} | 
|---|
|  |  |  | const downloadTemplate = (type) => { | 
|---|
|  |  |  | // 下载物料模板 | 
|---|
|  |  |  | if (type != undefined &&  type == 'matnr') { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | console.log('======>'); | 
|---|
|  |  |  | console.log(type); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | {/**下载打印模板,传入type类型,调用下载模板接口 */ } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function millisecondsToTime(ms) { | 
|---|
|  |  |  | var seconds = Math.floor((ms / 1000) % 60); | 
|---|