fengxuanll преди 1 година
родител
ревизия
da3af621b9
променени са 2 файла, в които са добавени 26 реда и са изтрити 5 реда
  1. 5 4
      Admin.NET/Admin.NET.Core/Utils/ExcelHelper.cs
  2. 21 1
      Web/src/components/table/importData.vue

+ 5 - 4
Admin.NET/Admin.NET.Core/Utils/ExcelHelper.cs

@@ -45,13 +45,14 @@ public class ExcelHelper
             Task.WhenAll(tasks).GetAwaiter().GetResult();
 
             // 仅导出错误记录
-            var errorList = result.Where(u => !string.IsNullOrWhiteSpace(u.Error));
-            return ExportData(errorList.Any() ? errorList : new List<IN>());
+            var errorList = result.Where(u => !string.IsNullOrWhiteSpace(u.Error)).ToList();
+            if (!errorList.Any())
+                return new JsonResult(AdminResultProvider.Ok("导入成功"));
+            return ExportData(errorList);
         }
         catch (Exception ex)
         {
-            App.HttpContext.Response.Headers["Content-Type"] = "application/json; charset=utf-8";
-            throw Oops.Oh(AdminResultProvider.Error(ex.Message, 500).ToJson());
+            return new JsonResult(AdminResultProvider.Error(ex.Message));
         }
     }
 

+ 21 - 1
Web/src/components/table/importData.vue

@@ -69,7 +69,27 @@ const handleExceed: UploadProps['onExceed'] = (files) => {
 const handleImportData = (opt: UploadRequestOptions): any => {
   state.loading = true;
   props.import(opt.file).then((res: any) => {
-    downloadStreamFile(res);
+    // 返回json数据的情况
+	const contentType = res.headers['content-type'];
+	if (contentType && contentType.toLowerCase().includes('application/json')) {
+		const decoder = new TextDecoder('utf-8');
+		const data = decoder.decode(res.data);
+		try {
+			const result = JSON.parse(data);
+			if(result.code == '200'){
+				ElMessage.success(result.message);
+			} else {
+				ElMessage.error(result.message);
+				return;
+			}
+		} catch (e) {
+			console.error("解析数据导入结果失败:", e);
+			downloadStreamFile(res);
+		}
+	}
+	else {
+		downloadStreamFile(res);
+	}
     emit('refresh');
     state.isShowDialog = false;
   }).finally(() => {