From e5bdee63dd988a12883fb5bcb760a91d77a455d0 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期五, 07 三月 2025 13:58:24 +0800
Subject: [PATCH] 文件导出封装优化

---
 src/views/CNAS/process/sampleDisposal/sampleDisposal.vue                                 |    3 
 src/views/CNAS/process/method/methodVerification/components/ViewTestRecord.vue           |    9 --
 src/views/CNAS/systemManagement/internalAuditManagement/components/ViewTestRecord.vue    |    9 --
 src/views/CNAS/systemManagement/correctiveAction/components/ViewTestRecord.vue           |    9 --
 src/views/CNAS/systemManagement/documentRecords/approvalRecord.vue                       |    4 -
 src/views/CNAS/process/sampleDisposal/sampleRegistration.vue                             |    3 
 src/views/CNAS/systemManagement/managementReview/components/managementReviewPlan.vue     |    4 -
 src/views/CNAS/process/reportResults/index.vue                                           |    3 
 src/views/CNAS/systemManagement/documentControl/components/FileList.vue                  |    6 -
 src/views/CNAS/systemManagement/customerManagement/customerSatisfaction.vue              |    9 --
 src/views/CNAS/systemManagement/documentControl/components/ControlledFileApplication.vue |    4 -
 src/views/CNAS/systemManagement/documentRecords/regularReviewsRecord.vue                 |    7 -
 src/views/CNAS/process/method/methodVerification/components/calibrationsFileDia.vue      |    9 --
 src/views/CNAS/systemManagement/documentRecords/outDocumenRecordt.vue                    |    3 
 src/views/CNAS/systemManagement/documentRecords/distributionCollectionRecord.vue         |    4 -
 src/views/CNAS/systemManagement/documentControl/components/FileChangeRequest.vue         |    4 -
 src/views/CNAS/process/uncertainty/index.vue                                             |    3 
 src/views/CNAS/systemManagement/documentRecords/revisionRecord.vue                       |    4 -
 src/views/CNAS/process/method/methodVerification/components/viewWorkPermitDia.vue        |    9 --
 src/views/structural/capabilityAndLaboratory/laboratory/index.vue                        |    3 
 src/views/CNAS/systemManagement/documentRecords/cancellationRecord.vue                   |    4 -
 src/plugins/download.js                                                                  |   25 +++++++-
 src/views/CNAS/process/ensureResults/ensureResultsValidity/components/ViewRecord.vue     |   10 ---
 23 files changed, 46 insertions(+), 102 deletions(-)

diff --git a/src/plugins/download.js b/src/plugins/download.js
index c0c1878..d814fb9 100644
--- a/src/plugins/download.js
+++ b/src/plugins/download.js
@@ -80,11 +80,30 @@
         downloadLoadingInstance.close();
       });
   },
-  saveAs(text, name, opts) {
+  async saveAs(text, name, opts) {
     if (typeof text === "string") {
       // 璺緞涓嬭浇
-      saveAs(text, name, opts);
-      Message.success("鏁版嵁瀵煎嚭鎴愬姛");
+      try {
+        let state = /\.(jpg|jpeg|png|gif)$/i.test(text); // 鍒ゆ柇鏄惁涓哄浘鐗�
+        let url1 = "";
+        if (state) {
+          url1 = Vue.prototype.javaApi + "/img/" + text;
+        } else {
+          url1 = Vue.prototype.javaApi + "/word/" + text;
+        }
+        // 浣跨敤 fetch 鑾峰彇鏂囦欢
+        const response = await fetch(url1);
+        if (!response.ok) {
+          throw new Error("鏂囦欢涓嬭浇澶辫触: " + response.statusText);
+        }
+        // 灏嗘枃浠惰浆鎹负 Blob
+        const blob = await response.blob();
+        // 浣跨敤 saveAs 淇濆瓨鏂囦欢
+        saveAs(blob, filename);
+        Message.success("鏁版嵁瀵煎嚭鎴愬姛");
+      } catch (error) {
+        Message.error(error);
+      }
     } else {
       // 娴佷笅杞�
       blobToText(text)
diff --git a/src/views/CNAS/process/ensureResults/ensureResultsValidity/components/ViewRecord.vue b/src/views/CNAS/process/ensureResults/ensureResultsValidity/components/ViewRecord.vue
index 0db2c44..0f049d3 100644
--- a/src/views/CNAS/process/ensureResults/ensureResultsValidity/components/ViewRecord.vue
+++ b/src/views/CNAS/process/ensureResults/ensureResultsValidity/components/ViewRecord.vue
@@ -107,15 +107,7 @@
     },
     // 涓嬭浇
     upload(row) {
-      let url = '';
-      if (row.type == 1) {
-        url = this.javaApi + '/img/' + row.fileUrl
-        this.$download.saveAs(url, row.fileName)
-      } else {
-        url = this.javaApi + '/word/' + row.fileUrlrow.fileName;
-        link.click();
-        this.$download.saveAs(url, row.fileName)
-      }
+      this.$download.saveAs(row.fileUrl, row.fileName)
     },
     // 鍒犻櫎
     delete(row) {
diff --git a/src/views/CNAS/process/method/methodVerification/components/ViewTestRecord.vue b/src/views/CNAS/process/method/methodVerification/components/ViewTestRecord.vue
index 7503777..53bda24 100644
--- a/src/views/CNAS/process/method/methodVerification/components/ViewTestRecord.vue
+++ b/src/views/CNAS/process/method/methodVerification/components/ViewTestRecord.vue
@@ -106,14 +106,7 @@
     },
     // 涓嬭浇
     upload(row) {
-      let url = '';
-      if (row.type == 1) {
-        url = this.javaApi + '/img/' + row.fileUrl
-        this.$download.saveAs(url, row.fileName)
-      } else {
-        url = this.javaApi + '/word/' + row.fileUrl
-        this.$download.saveAs(url, row.fileName)
-      }
+      this.$download.saveAs(row.fileUrl, row.fileName)
     },
     // 鍒犻櫎
     delete(row) {
diff --git a/src/views/CNAS/process/method/methodVerification/components/calibrationsFileDia.vue b/src/views/CNAS/process/method/methodVerification/components/calibrationsFileDia.vue
index c650ba2..e788817 100644
--- a/src/views/CNAS/process/method/methodVerification/components/calibrationsFileDia.vue
+++ b/src/views/CNAS/process/method/methodVerification/components/calibrationsFileDia.vue
@@ -93,14 +93,7 @@
     },
     // 涓嬭浇
     upload(row) {
-      let url = '';
-      if (row.type == 1) {
-        url = this.javaApi + '/img/' + row.fileUrl
-        this.$download.saveAs(url, row.fileName)
-      } else {
-        url = this.javaApi + '/word/' + row.fileUrl
-        this.$download.saveAs(url, row.fileName)
-      }
+      this.$download.saveAs(row.fileUrl, row.fileName)
     },
   }
 };
diff --git a/src/views/CNAS/process/method/methodVerification/components/viewWorkPermitDia.vue b/src/views/CNAS/process/method/methodVerification/components/viewWorkPermitDia.vue
index a40469f..b1f2476 100644
--- a/src/views/CNAS/process/method/methodVerification/components/viewWorkPermitDia.vue
+++ b/src/views/CNAS/process/method/methodVerification/components/viewWorkPermitDia.vue
@@ -89,14 +89,7 @@
     },
     // 涓嬭浇
     upload(row) {
-      let url = '';
-      if (row.type == 1) {
-        url = this.javaApi + '/img/' + row.fileUrl
-        this.$download.saveAs(url, row.fileName)
-      } else {
-        url = this.javaApi + '/word/' + row.fileUrl
-        this.$download.saveAs(url, row.fileName)
-      }
+      this.$download.saveAs(row.fileUrl, row.fileName)
     },
   },
 };
diff --git a/src/views/CNAS/process/reportResults/index.vue b/src/views/CNAS/process/reportResults/index.vue
index 66ae2ea..52d7349 100644
--- a/src/views/CNAS/process/reportResults/index.vue
+++ b/src/views/CNAS/process/reportResults/index.vue
@@ -223,8 +223,7 @@
       exportProcessReport({ ids: this.mutilSelect.map(m => m.id) }).then(res => {
         this.outLoading = false
         if (res.code === 201) return
-        const url = this.javaApi + '/word/' + res.data;
-        this.$download.saveAs(url, "鎶ュ憡缁撴灉");
+        this.$download.saveAs(res.data, "鎶ュ憡缁撴灉")
       })
     },
     openAdd() {
diff --git a/src/views/CNAS/process/sampleDisposal/sampleDisposal.vue b/src/views/CNAS/process/sampleDisposal/sampleDisposal.vue
index 8759567..4e8e62e 100644
--- a/src/views/CNAS/process/sampleDisposal/sampleDisposal.vue
+++ b/src/views/CNAS/process/sampleDisposal/sampleDisposal.vue
@@ -506,8 +506,7 @@
     // 瀵煎嚭璇︽儏
     handleDown0(row) {
       // 鍚庣涓嬭浇
-      let url = this.javaApi + '/word/' + row.url
-      this.$download.saveAs(url, row.month + ' 鏍峰搧澶勭悊鐢宠琛�');
+      this.$download.saveAs(row.url, row.month + ' 鏍峰搧澶勭悊鐢宠琛�')
     },
     handleDelete(row) {
       this.$confirm("鏄惁鍒犻櫎璇ユ潯鏁版嵁?", "鎻愮ず", {
diff --git a/src/views/CNAS/process/sampleDisposal/sampleRegistration.vue b/src/views/CNAS/process/sampleDisposal/sampleRegistration.vue
index 8a4a35d..020268f 100644
--- a/src/views/CNAS/process/sampleDisposal/sampleRegistration.vue
+++ b/src/views/CNAS/process/sampleDisposal/sampleRegistration.vue
@@ -535,8 +535,7 @@
     // 瀵煎嚭璇︽儏
     handleDown0(row) {
       // 鍚庣涓嬭浇
-      let url = this.javaApi + '/word/' + row.url
-      this.$download.saveAs(url, row.month + ' 鏍峰搧鎺ユ敹琛�')
+      this.$download.saveAs(row.url, row.month + ' 鏍峰搧鎺ユ敹琛�')
     },
     // 鍒犻櫎
     handleDelete(row) {
diff --git a/src/views/CNAS/process/uncertainty/index.vue b/src/views/CNAS/process/uncertainty/index.vue
index 053008b..beca85c 100644
--- a/src/views/CNAS/process/uncertainty/index.vue
+++ b/src/views/CNAS/process/uncertainty/index.vue
@@ -183,8 +183,7 @@
       })
     },
     handleDown(row) {
-      let url = this.javaApi + '/word/' + row.reportUrl
-      this.$download.saveAs(url, row.reportName);
+      this.$download.saveAs(row.reportUrl, row.reportName)
     },
     beforeUpload(file) {
       if (file.size > 1024 * 1024 * 10) {
diff --git a/src/views/CNAS/systemManagement/correctiveAction/components/ViewTestRecord.vue b/src/views/CNAS/systemManagement/correctiveAction/components/ViewTestRecord.vue
index 3c6a5bd..7252f7a 100644
--- a/src/views/CNAS/systemManagement/correctiveAction/components/ViewTestRecord.vue
+++ b/src/views/CNAS/systemManagement/correctiveAction/components/ViewTestRecord.vue
@@ -111,14 +111,7 @@
     },
     // 涓嬭浇
     upload(row) {
-      let url = '';
-      if (row.type == 1) {
-        url = this.javaApi + '/img/' + row.fileUrl
-        this.$download.saveAs(url, row.fileName);
-      } else {
-        url = this.javaApi + '/word/' + row.fileUrl
-        this.$download.saveAs(url, row.fileName);
-      }
+      this.$download.saveAs(row.fileUrl, row.fileUrl)
     },
     // 鍒犻櫎
     delete(row) {
diff --git a/src/views/CNAS/systemManagement/customerManagement/customerSatisfaction.vue b/src/views/CNAS/systemManagement/customerManagement/customerSatisfaction.vue
index 4a1900c..efcfabd 100644
--- a/src/views/CNAS/systemManagement/customerManagement/customerSatisfaction.vue
+++ b/src/views/CNAS/systemManagement/customerManagement/customerSatisfaction.vue
@@ -307,14 +307,7 @@
     },
     // 涓嬭浇瀹㈡埛绂忓缓
     upload(row) {
-      let url = '';
-      if (row.type == 1) {
-        url = this.javaApi + '/img/' + row.fileUrl
-        this.$download.saveAs(url, row.fileName);
-      } else {
-        url = this.javaApi + '/word/' + row.fileUrl
-        this.$download.saveAs(url, row.fileName);
-      }
+      this.$download.saveAs(row.fileUrl, row.fileName)
     },
     // 鍒犻櫎瀹㈡埛鍒嗘瀽闄勪欢
     delFile(row) {
diff --git a/src/views/CNAS/systemManagement/documentControl/components/ControlledFileApplication.vue b/src/views/CNAS/systemManagement/documentControl/components/ControlledFileApplication.vue
index 3e54bad..f369603 100644
--- a/src/views/CNAS/systemManagement/documentControl/components/ControlledFileApplication.vue
+++ b/src/views/CNAS/systemManagement/documentControl/components/ControlledFileApplication.vue
@@ -460,9 +460,7 @@
       })
     },
     handleDown(row) {
-      if (!row.url) return this.$message.warning('鏂囦欢鏈笂浼�')
-      let url = this.javaApi + '/word/' + row.url
-      this.$download.saveAs(url, row.url);
+      this.$download.saveAs(row.url, row.url)
     },
     async uploadPDF(pdfBlob) {
       const formData = new FormData();
diff --git a/src/views/CNAS/systemManagement/documentControl/components/FileChangeRequest.vue b/src/views/CNAS/systemManagement/documentControl/components/FileChangeRequest.vue
index 31a410a..451a392 100644
--- a/src/views/CNAS/systemManagement/documentControl/components/FileChangeRequest.vue
+++ b/src/views/CNAS/systemManagement/documentControl/components/FileChangeRequest.vue
@@ -567,9 +567,7 @@
     },
     // 涓嬭浇闄勪欢
     handleDown(row) {
-      if (!row.alterAfterUrl) return this.$message.warning('鏂囦欢鏈笂浼�')
-      let url = this.javaApi + '/word/' + row.alterAfterUrl
-      this.$download.saveAs(url, row.alterAfterUrl)
+      this.$download.saveAs(row.alterAfterUrl, row.alterAfterUrl)
     },
     // 鎵撳紑瀹℃牳寮规
     handleCheck(row) {
diff --git a/src/views/CNAS/systemManagement/documentControl/components/FileList.vue b/src/views/CNAS/systemManagement/documentControl/components/FileList.vue
index 88bc13d..a0841a2 100644
--- a/src/views/CNAS/systemManagement/documentControl/components/FileList.vue
+++ b/src/views/CNAS/systemManagement/documentControl/components/FileList.vue
@@ -251,9 +251,7 @@
     },
     // 涓嬭浇鏂囦欢
     handleDown(row) {
-      if (!row.url) return this.$message.warning('鏂囦欢鏈笂浼�')
-      let url = this.javaApi + '/word/' + row.url
-      this.$download.saveAs(url, row.url);
+      this.$download.saveAs(row.url, row.url)
     },
     // 鏌ョ湅鏂囦欢
     handleLook(row) {
@@ -317,7 +315,7 @@
       if (response.code == 200) {
         this.$message.success('涓婁紶鎴愬姛');
         this.refreshTable()
-      }else {
+      } else {
         this.$message.error(response.msg);
       }
     },
diff --git a/src/views/CNAS/systemManagement/documentRecords/approvalRecord.vue b/src/views/CNAS/systemManagement/documentRecords/approvalRecord.vue
index 0e99805..7632c4b 100644
--- a/src/views/CNAS/systemManagement/documentRecords/approvalRecord.vue
+++ b/src/views/CNAS/systemManagement/documentRecords/approvalRecord.vue
@@ -283,9 +283,7 @@
       // queryParams
       exportOutManageRecordCheck(this.queryParams).then(res => {
         this.outLoading = false
-        if (res.code == 201) return this.$message.error('瀵煎嚭澶辫触')
-        let url = this.javaApi + '/word/' + res.data
-        this.$download.saveAs(url, '鏂囦欢瀹℃壒璁板綍')
+        this.$download.saveAs(row.data, '鏂囦欢瀹℃壒璁板綍')
       })
     },
     getAuthorizedPerson() {
diff --git a/src/views/CNAS/systemManagement/documentRecords/cancellationRecord.vue b/src/views/CNAS/systemManagement/documentRecords/cancellationRecord.vue
index bdd2484..8710fa5 100644
--- a/src/views/CNAS/systemManagement/documentRecords/cancellationRecord.vue
+++ b/src/views/CNAS/systemManagement/documentRecords/cancellationRecord.vue
@@ -243,9 +243,7 @@
       this.outLoading = true
       exportOutManageRecordCancel(this.queryParams).then(res => {
         this.outLoading = false
-        if (res.code == 201) return this.$message.error('瀵煎嚭澶辫触')
-        let url = this.javaApi + '/word/' + res.data
-        this.$download.saveAs(url, "浣滃簾鏂囦欢閿�姣佽褰�");
+        this.$download.saveAs(row.data, '浣滃簾鏂囦欢閿�姣佽褰�')
       })
     },
     getList() {
diff --git a/src/views/CNAS/systemManagement/documentRecords/distributionCollectionRecord.vue b/src/views/CNAS/systemManagement/documentRecords/distributionCollectionRecord.vue
index aeb2861..beef4eb 100644
--- a/src/views/CNAS/systemManagement/documentRecords/distributionCollectionRecord.vue
+++ b/src/views/CNAS/systemManagement/documentRecords/distributionCollectionRecord.vue
@@ -300,9 +300,7 @@
       this.outLoading = true
       exportOutManageRecordIssueRecycle(this.queryParams).then(res => {
         this.outLoading = false
-        if (res.code == 201) return this.$message.error('瀵煎嚭澶辫触')
-        let url = this.javaApi + '/word/' + res.data
-        this.$download.saveAs(url, '鏂囦欢鍙戞斁涓庡洖鏀惰褰�')
+        this.$download.saveAs(row.data, '鏂囦欢鍙戞斁涓庡洖鏀惰褰�')
       })
     },
     getList() {
diff --git a/src/views/CNAS/systemManagement/documentRecords/outDocumenRecordt.vue b/src/views/CNAS/systemManagement/documentRecords/outDocumenRecordt.vue
index c7c2922..b6988a4 100644
--- a/src/views/CNAS/systemManagement/documentRecords/outDocumenRecordt.vue
+++ b/src/views/CNAS/systemManagement/documentRecords/outDocumenRecordt.vue
@@ -393,8 +393,7 @@
       }).catch(err => { });
     },
     handleDown0(row) {
-      let url = this.javaApi + '/word/' + row.url
-      this.$download.saveAs(url, '澶栨潵鏂囦欢纭璁板綍')
+      this.$download.saveAs(row.url, '澶栨潵鏂囦欢纭璁板綍')
     },
     // 鎻愪氦
     handleSubmit(row) {
diff --git a/src/views/CNAS/systemManagement/documentRecords/regularReviewsRecord.vue b/src/views/CNAS/systemManagement/documentRecords/regularReviewsRecord.vue
index 432faea..99003d8 100644
--- a/src/views/CNAS/systemManagement/documentRecords/regularReviewsRecord.vue
+++ b/src/views/CNAS/systemManagement/documentRecords/regularReviewsRecord.vue
@@ -345,9 +345,7 @@
       this.outLoading = true
       exportOutManageRecordIntervals(this.queryParams).then(res => {
         this.outLoading = false
-        if (res.code == 201) return this.$message.error('瀵煎嚭澶辫触')
-        let url = this.javaApi + 'word/' + res.message
-        this.$download.saveAs(url, "鏂囦欢瀹氭湡瀹℃煡璁板綍");
+        this.$download.saveAs(row.data, '鏂囦欢瀹氭湡瀹℃煡璁板綍')
       })
     },
     getList() {
@@ -543,8 +541,7 @@
       }
     },
     handleDown0(row) {
-      let url = this.javaApi + '/word/' + row.url
-      this.$download.saveAs(url, "鎵�鏈夋枃浠跺畾鏈熸鏌ヨ褰�");
+      this.$download.saveAs(row.url, '鎵�鏈夋枃浠跺畾鏈熸鏌ヨ褰�')
     },
     // 鎻愪氦
     handleSubmit(row) {
diff --git a/src/views/CNAS/systemManagement/documentRecords/revisionRecord.vue b/src/views/CNAS/systemManagement/documentRecords/revisionRecord.vue
index a68b966..a887fdd 100644
--- a/src/views/CNAS/systemManagement/documentRecords/revisionRecord.vue
+++ b/src/views/CNAS/systemManagement/documentRecords/revisionRecord.vue
@@ -550,9 +550,7 @@
       this.outLoading = true
       exportOutManageRecordAudit(this.queryParams).then(res => {
         this.outLoading = false
-        if (res.code == 201) return this.$message.error('瀵煎嚭澶辫触')
-        let url = this.javaApi + '/word/' + res.data
-        this.$download.saveAs(url, "鏂囦欢淇琛�");
+        this.$download.saveAs(row.data, '鏂囦欢淇琛�')
       })
     },
     getList() {
diff --git a/src/views/CNAS/systemManagement/internalAuditManagement/components/ViewTestRecord.vue b/src/views/CNAS/systemManagement/internalAuditManagement/components/ViewTestRecord.vue
index fac2da1..8470fe6 100644
--- a/src/views/CNAS/systemManagement/internalAuditManagement/components/ViewTestRecord.vue
+++ b/src/views/CNAS/systemManagement/internalAuditManagement/components/ViewTestRecord.vue
@@ -116,14 +116,7 @@
     },
     // 涓嬭浇
     upload(row) {
-      let url = '';
-      if (row.type == 1) {
-        url = this.javaApi + '/img/' + row.fileUrl
-        this.$download.saveAs(url, row.fileName)
-      } else {
-        url = this.javaApi + '/word/' + row.fileUrl
-        this.$download.saveAs(url, row.fileName)
-      }
+      this.$download.saveAs(row.fileUrl, row.fileName)
     },
     // 鍒犻櫎
     delete(row) {
diff --git a/src/views/CNAS/systemManagement/managementReview/components/managementReviewPlan.vue b/src/views/CNAS/systemManagement/managementReview/components/managementReviewPlan.vue
index 14dc270..cbea3f1 100644
--- a/src/views/CNAS/systemManagement/managementReview/components/managementReviewPlan.vue
+++ b/src/views/CNAS/systemManagement/managementReview/components/managementReviewPlan.vue
@@ -281,9 +281,7 @@
       this.lookDialogVisible = true
     },
     handleDown0(url, name) {
-      if (!url) return this.$message.warning('鏂囦欢鏈笂浼�')
-      let url0 = this.javaApi + '/word/' + url
-      this.$download.saveAs(url0, name);
+      this.$download.saveAs(url, name)
     }
   }
 };
diff --git a/src/views/structural/capabilityAndLaboratory/laboratory/index.vue b/src/views/structural/capabilityAndLaboratory/laboratory/index.vue
index 18cd6fd..da211f7 100644
--- a/src/views/structural/capabilityAndLaboratory/laboratory/index.vue
+++ b/src/views/structural/capabilityAndLaboratory/laboratory/index.vue
@@ -328,8 +328,7 @@
     },
     // 璧勮川鏄庣粏闄勪欢涓嬭浇
     handleDownLoad(row) {
-      const url = process.env.VUE_APP_BASE_API + "/img/" + row.fileUrl;
-      this.$download.saveAs(url, row.fileUrl);
+      this.$download.saveAs(row.fileUrl, row.fileUrl)
     },
     openAdd() {
       this.qualificationsConnectVisible = true;

--
Gitblit v1.9.3