From 5b45cbaaafbc45023d7916d9e700d3c59cc33c03 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 02 六月 2026 10:52:09 +0800
Subject: [PATCH] 新疆马铃薯 1.过程检验下载添加3个模版

---
 src/views/salesManagement/returnOrder/components/formDia.vue   |    4 
 src/api/qualityManagement/rawMaterialInspection.js             |   36 +++++++++
 src/views/salesManagement/returnOrder/components/detailDia.vue |    2 
 src/views/salesManagement/returnOrder/index.vue                |    6 
 src/views/financialManagement/receivable/salesReturn.vue       |    2 
 src/views/qualityManagement/processInspection/index.vue        |  146 ++++++++++++++++++++++++++++++++++--
 6 files changed, 179 insertions(+), 17 deletions(-)

diff --git a/src/api/qualityManagement/rawMaterialInspection.js b/src/api/qualityManagement/rawMaterialInspection.js
index f81a949..0554f2b 100644
--- a/src/api/qualityManagement/rawMaterialInspection.js
+++ b/src/api/qualityManagement/rawMaterialInspection.js
@@ -64,3 +64,39 @@
     })
 }
 
+// 瀵煎嚭浼熼緳妯℃澘
+export function exportWeilongTemplate(id) {
+    return request({
+        url: `/quality/qualityInspect/export/weilong/${id}`,
+        method: 'get',
+        responseType: 'blob',
+    })
+}
+
+// 瀵煎嚭鐧句簨妯℃澘
+export function exportBaishiTemplate(id) {
+    return request({
+        url: `/quality/qualityInspect/export/baishi/${id}`,
+        method: 'get',
+        responseType: 'blob',
+    })
+}
+
+// 瀵煎嚭杈惧埄妯℃澘
+export function exportDaliTemplate(id) {
+    return request({
+        url: `/quality/qualityInspect/export/dali/${id}`,
+        method: 'get',
+        responseType: 'blob',
+    })
+}
+
+// 瀵煎嚭閫氱敤妯℃澘
+export function exportCommonTemplate(id) {
+    return request({
+        url: `/quality/qualityInspect/export/common/${id}`,
+        method: 'get',
+        responseType: 'blob',
+    })
+}
+
diff --git a/src/views/financialManagement/receivable/salesReturn.vue b/src/views/financialManagement/receivable/salesReturn.vue
index c58d330..f57f4ab 100644
--- a/src/views/financialManagement/receivable/salesReturn.vue
+++ b/src/views/financialManagement/receivable/salesReturn.vue
@@ -74,7 +74,7 @@
 const columns = [
   { label: "閫�璐у崟鍙�", prop: "returnNo", minWidth: "150" },
   { label: "瀹㈡埛鍚嶇О", prop: "customerName", minWidth: "180" },
-  { label: "鍏宠仈鍙戣揣鍗曞彿", prop: "shippingNo", minWidth: "150" },
+  { label: "鍏宠仈鎵瑰彿", prop: "shippingNo", minWidth: "150" },
   { label: "閫�璐ф棩鏈�", prop: "makeTime", minWidth: "170" },
   {
     label: "閫�娆炬�婚",
diff --git a/src/views/qualityManagement/processInspection/index.vue b/src/views/qualityManagement/processInspection/index.vue
index 9fe630a..47279a8 100644
--- a/src/views/qualityManagement/processInspection/index.vue
+++ b/src/views/qualityManagement/processInspection/index.vue
@@ -72,6 +72,35 @@
       </template>
     </el-dialog>
 
+    <el-dialog v-model="templateDialogVisible"
+               title="閫夋嫨瀵煎嚭妯℃澘"
+               width="450px"
+               @close="closeTemplateDialog">
+      <div class="template-grid">
+        <div class="template-item" @click="handleTemplateExport('weilong')">
+          <div class="template-icon weilong-icon">浼�</div>
+          <div class="template-name">浼熼緳妯℃澘</div>
+        </div>
+        <div class="template-item" @click="handleTemplateExport('baishi')">
+          <div class="template-icon baishi-icon">鐧�</div>
+          <div class="template-name">鐧句簨妯℃澘</div>
+        </div>
+        <div class="template-item" @click="handleTemplateExport('dali')">
+          <div class="template-icon dali-icon">杈�</div>
+          <div class="template-name">杈惧埄妯℃澘</div>
+        </div>
+        <div class="template-item" @click="handleTemplateExport('common')">
+          <div class="template-icon common-icon">閫�</div>
+          <div class="template-name">閫氱敤妯℃澘</div>
+        </div>
+      </div>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button @click="closeTemplateDialog">鍙栨秷</el-button>
+        </div>
+      </template>
+    </el-dialog>
+
 
   </div>
 </template>
@@ -96,6 +125,10 @@
     qualityInspectListPage,
     qualityInspectUpdate,
     submitQualityInspect,
+    exportWeilongTemplate,
+    exportBaishiTemplate,
+    exportDaliTemplate,
+    exportCommonTemplate,
   } from "@/api/qualityManagement/rawMaterialInspection.js";
   import FilesDia from "@/views/qualityManagement/processInspection/components/filesDia.vue";
   import dayjs from "dayjs";
@@ -301,6 +334,9 @@
   const quickCheckDia = ref();
   const { proxy } = getCurrentInstance();
   const userStore = useUserStore();
+
+  const templateDialogVisible = ref(false);
+  const currentExportRow = ref(null);
   const changeDaterange = value => {
     searchForm.value.entryDateStart = undefined;
     searchForm.value.entryDateEnd = undefined;
@@ -447,21 +483,51 @@
       });
   };
   const downLoadFile = row => {
-    downloadQualityInspect({ id: row.id }).then(blobData => {
-      const blob = new Blob([blobData], {
+    currentExportRow.value = row;
+    templateDialogVisible.value = true;
+  };
+
+  const closeTemplateDialog = () => {
+    templateDialogVisible.value = false;
+    currentExportRow.value = null;
+  };
+
+  const handleTemplateExport = async (templateType) => {
+    if (!currentExportRow.value) {
+      proxy.$modal.msgError("璇烽�夋嫨瑕佸鍑虹殑鏁版嵁");
+      return;
+    }
+    const id = currentExportRow.value.id;
+    const fileNameMap = {
+      weilong: "浼熼緳妯$増妫�楠岀粨鏋�.doc",
+      baishi: "鐧句簨妯$増妫�楠岀粨鏋�.doc",
+      dali: "杈惧埄妯$増妫�楠岀粨鏋�.doc",
+      common: "閫氱敤妯$増妫�楠岀粨鏋�.doc",
+    };
+    const exportFuncMap = {
+      weilong: exportWeilongTemplate,
+      baishi: exportBaishiTemplate,
+      dali: exportDaliTemplate,
+      common: exportCommonTemplate,
+    };
+    try {
+      const response = await exportFuncMap[templateType](id);
+      const blob = new Blob([response], {
         type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
       });
-      const downloadUrl = window.URL.createObjectURL(blob);
-
       const link = document.createElement("a");
-      link.href = downloadUrl;
-      link.download = "杩囩▼妫�楠屾姤鍛�.docx";
+      link.href = URL.createObjectURL(blob);
+      link.download = fileNameMap[templateType];
       document.body.appendChild(link);
       link.click();
-
       document.body.removeChild(link);
-      window.URL.revokeObjectURL(downloadUrl);
-    });
+      URL.revokeObjectURL(link.href);
+      proxy.$modal.msgSuccess("瀵煎嚭鎴愬姛");
+      closeTemplateDialog();
+    } catch (error) {
+      console.error("瀵煎嚭澶辫触", error);
+      proxy.$modal.msgError("瀵煎嚭澶辫触");
+    }
   };
   // 瀵煎嚭
   const handleOut = () => {
@@ -486,4 +552,64 @@
   });
 </script>
 
-<style scoped></style>
+<style scoped>
+.template-grid {
+  display: grid;
+  grid-template-columns: repeat(2, 1fr);
+  gap: 20px;
+  padding: 20px 10px;
+}
+
+.template-item {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  padding: 24px 16px;
+  border: 1px solid #e4e7ed;
+  border-radius: 8px;
+  cursor: pointer;
+  transition: all 0.3s;
+}
+
+.template-item:hover {
+  border-color: #409eff;
+  box-shadow: 0 2px 12px rgba(64, 158, 255, 0.2);
+  transform: translateY(-2px);
+}
+
+.template-icon {
+  width: 56px;
+  height: 56px;
+  border-radius: 50%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  font-size: 24px;
+  font-weight: bold;
+  color: #fff;
+  margin-bottom: 12px;
+}
+
+.weilong-icon {
+  background: linear-gradient(135deg, #409eff, #1677ff);
+}
+
+.baishi-icon {
+  background: linear-gradient(135deg, #67c23a, #529b2e);
+}
+
+.dali-icon {
+  background: linear-gradient(135deg, #e6a23c, #c4860c);
+}
+
+.common-icon {
+  background: linear-gradient(135deg, #909399, #6d6d6d);
+}
+
+.template-name {
+  font-size: 15px;
+  color: #303133;
+  font-weight: 500;
+}
+</style>
diff --git a/src/views/salesManagement/returnOrder/components/detailDia.vue b/src/views/salesManagement/returnOrder/components/detailDia.vue
index ecc663f..94a15ad 100644
--- a/src/views/salesManagement/returnOrder/components/detailDia.vue
+++ b/src/views/salesManagement/returnOrder/components/detailDia.vue
@@ -10,7 +10,7 @@
         <el-descriptions-item label="瀹㈡埛鍚嶇О">{{ detail.customerName }}</el-descriptions-item>
         <el-descriptions-item label="閿�鍞崟鍙�">{{ detail.salesContractNo }}</el-descriptions-item>
         <el-descriptions-item label="涓氬姟鍛�">{{ detail.salesman }}</el-descriptions-item>
-        <el-descriptions-item label="鍏宠仈鍙戣揣鍗曞彿">{{ detail.shippingNo }}</el-descriptions-item>
+        <el-descriptions-item label="鍏宠仈鎵瑰彿">{{ detail.shippingNo }}</el-descriptions-item>
         <!-- <el-descriptions-item label="椤圭洰鍚嶇О">{{ detail.projectName }}</el-descriptions-item> -->
         <el-descriptions-item label="鍒跺崟浜�">{{ detail.maker }}</el-descriptions-item>
         <el-descriptions-item label="鍒跺崟鏃堕棿">{{ detail.makeTime }}</el-descriptions-item>
diff --git a/src/views/salesManagement/returnOrder/components/formDia.vue b/src/views/salesManagement/returnOrder/components/formDia.vue
index 6a6d756..0ef4754 100644
--- a/src/views/salesManagement/returnOrder/components/formDia.vue
+++ b/src/views/salesManagement/returnOrder/components/formDia.vue
@@ -32,8 +32,8 @@
               </el-form-item>
             </el-col>
             <el-col :span="4">
-              <el-form-item label="鍏宠仈鍙戣揣鍗曞彿锛�" prop="shippingId">
-                <el-select v-model="form.shippingId" filterable placeholder="璇烽�夋嫨鍑哄簱鍗曞彿" @change="outboundNoChange">
+              <el-form-item label="鍏宠仈鎵瑰彿锛�" prop="shippingId">
+                <el-select v-model="form.shippingId" filterable placeholder="璇烽�夋嫨鍏宠仈鎵瑰彿" @change="outboundNoChange">
                   <el-option
                     v-for="item in outboundOptions"
                     :key="item.value"
diff --git a/src/views/salesManagement/returnOrder/index.vue b/src/views/salesManagement/returnOrder/index.vue
index 0a8257b..19d313c 100644
--- a/src/views/salesManagement/returnOrder/index.vue
+++ b/src/views/salesManagement/returnOrder/index.vue
@@ -11,8 +11,8 @@
 				<el-form-item label="閿�鍞崟鍙�">
 					<el-input v-model="searchForm.salesContractNo" placeholder="閿�鍞崟鍙�" clearable />
 				</el-form-item>
-				<el-form-item label="鍏宠仈鍙戣揣鍗曞彿">
-					<el-input v-model="searchForm.shippingNo" placeholder="鍏宠仈鍙戣揣鍗曞彿" clearable />
+				<el-form-item label="鍏宠仈鎵瑰彿">
+					<el-input v-model="searchForm.shippingNo" placeholder="鍏宠仈鎵瑰彿" clearable />
 				</el-form-item>
 				<el-form-item>
 					<el-button type="primary" @click="handleQuery">鎼滅储</el-button>
@@ -118,7 +118,7 @@
   { label: "瀹㈡埛鍚嶇О", prop: "customerName", minWidth: 220 },
   { label: "閿�鍞崟鍙�", prop: "salesContractNo", minWidth: 160 },
   { label: "涓氬姟鍛�", prop: "salesman", minWidth: 120 },
-  { label: "鍏宠仈鍙戣揣鍗曞彿", prop: "shippingNo", minWidth: 170 },
+  { label: "鍏宠仈鎵瑰彿", prop: "shippingNo", minWidth: 170 },
   { label: "椤圭洰鍚嶇О", prop: "projectName", minWidth: 180 },
   { label: "鍒跺崟浜�", prop: "maker", minWidth: 120 },
   {

--
Gitblit v1.9.3