From c801f1d76578cfe2db9da8888d8f8690e9b5dee0 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期三, 16 四月 2025 09:38:49 +0800
Subject: [PATCH] #修复:保存过"批次规则-批次规则标识",再点开查看时数据没了

---
 rsf-admin/src/page/components/ImportModal.jsx |   78 +++++++++++++++++++++++++++++++--------
 1 files changed, 62 insertions(+), 16 deletions(-)

diff --git a/rsf-admin/src/page/components/ImportModal.jsx b/rsf-admin/src/page/components/ImportModal.jsx
index 76e7713..703a018 100644
--- a/rsf-admin/src/page/components/ImportModal.jsx
+++ b/rsf-admin/src/page/components/ImportModal.jsx
@@ -1,4 +1,4 @@
-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';
@@ -13,23 +13,27 @@
     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';
+import request from '@/utils/request'
 
-const ImportModal = ({ open, onClose, importTemp, useCodeImport, onceBatch = 10 }) => {
+const ImportModal = ({ open, onClose, importTemp, useCodeImport, onceBatch = 10, value, parmas = {} }) => {
     const refresh = useRefresh();
     const translate = useTranslate();
 
-    const { processBatch } = useCodeImport();
+    // const { processBatch } = useCodeImport();
     const { importer, parseCsv, reset } = usePapaParse({
         batchSize: onceBatch,
-        processBatch,
+        // processBatch,
     });
 
     const [file, setFile] = useState(null);
+    const notify = useNotify();
 
     useEffect(() => {
         if (importer.state === 'complete') {
@@ -45,9 +49,25 @@
         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)
 
-        parseCsv(file);
+        if (code === 200) {
+            handleClose()
+        } else {
+            notify(msg);
+
+        }
+
     };
+
+
 
     const handleClose = () => {
         reset();
@@ -58,6 +78,22 @@
         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>
@@ -144,22 +180,30 @@
                                 <Alert
                                     severity="info"
                                     action={
-                                        <Button
-                                            component={Link}
-                                            label="common.action.import.download"
-                                            color="info"
-                                            to={importTemp}
-                                            download={'import_template.csv'}
-                                        />
+                                        <MatnrList.Context.Consumer>
+                                            {context => (
+                                                <Button
+                                                    component={Link}
+                                                    onClick={() => {
+                                                        downloadTemplate(context)
+                                                    }}
+                                                    label="common.action.import.download"
+                                                    color="info"
+                                                    to={importTemp}
+                                                    download={'import_template.csv'}
+                                                />
+                                            )}
+
+                                        </MatnrList.Context.Consumer>
                                     }
                                 >
                                     {translate('common.action.import.msg')}
                                 </Alert>
 
                                 <FileInput
-                                    source="csv"
-                                    label="CSV File"
-                                    accept={{ 'text/csv': ['.csv'] }}
+                                    source="xlsx"
+                                    label="Xlsx File"
+                                    accept={{ 'text/xlsx': ['.xls', '.xlsx'] }}
                                     onChange={handleFileChange}
                                 >
                                     <FileField source="src" title="title" />
@@ -201,6 +245,8 @@
         </Dialog>
     );
 }
+{/**涓嬭浇鎵撳嵃妯℃澘锛屼紶鍏ype绫诲瀷锛岃皟鐢ㄤ笅杞芥ā鏉挎帴鍙� */ }
+
 
 function millisecondsToTime(ms) {
     var seconds = Math.floor((ms / 1000) % 60);

--
Gitblit v1.9.1