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

---
 src/views/qualityManagement/processInspection/index.vue |  206 +++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 148 insertions(+), 58 deletions(-)

diff --git a/src/views/qualityManagement/processInspection/index.vue b/src/views/qualityManagement/processInspection/index.vue
index 85e3811..dd40a5e 100644
--- a/src/views/qualityManagement/processInspection/index.vue
+++ b/src/views/qualityManagement/processInspection/index.vue
@@ -2,13 +2,6 @@
   <div class="app-container">
     <div class="search_form mb20">
       <div>
-        <span class="search_title">宸ュ簭锛�</span>
-        <el-input v-model="searchForm.process"
-                  style="width: 240px"
-                  placeholder="璇疯緭鍏ュ伐搴忔悳绱�"
-                  @change="handleQuery"
-                  clearable
-                  :prefix-icon="Search" />
         <span style="margin-left: 10px"
               class="search_title">妫�娴嬫棩鏈燂細</span>
         <el-date-picker v-model="searchForm.entryDate"
@@ -18,14 +11,6 @@
                         placeholder="璇烽�夋嫨"
                         clearable
                         @change="changeDaterange" />
-        <span style="margin-left: 10px"
-              class="search_title">鐢熶骇宸ュ崟鍙凤細</span>
-        <el-input v-model="searchForm.workOrderNo"
-                  style="width: 240px"
-                  placeholder="璇疯緭鍏ョ敓浜у伐鍗曞彿鎼滅储"
-                  @change="handleQuery"
-                  clearable
-                  :prefix-icon="Search" />
         <el-button type="primary"
                    @click="handleQuery"
                    style="margin-left: 10px">鎼滅储</el-button>
@@ -54,6 +39,9 @@
              @close="handleQuery"></FormDia>
     <files-dia ref="filesDia"
                @close="handleQuery"></files-dia>
+    <QuickCheckDia ref="quickCheckDia"
+                   @close="handleQuery"
+                   @success="getList"></QuickCheckDia>
     <el-dialog v-model="dialogFormVisible"
                title="缂栬緫妫�楠屽憳"
                width="30%"
@@ -84,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>
@@ -100,6 +117,7 @@
   } from "vue";
   import InspectionFormDia from "@/views/qualityManagement/processInspection/components/inspectionFormDia.vue";
   import FormDia from "@/views/qualityManagement/processInspection/components/formDia.vue";
+  import QuickCheckDia from "@/views/qualityManagement/processInspection/components/quickCheckDia.vue";
   import { ElMessageBox } from "element-plus";
   import {
     downloadQualityInspect,
@@ -107,7 +125,10 @@
     qualityInspectListPage,
     qualityInspectUpdate,
     submitQualityInspect,
-    batchQuickInspect,
+    exportWeilongTemplate,
+    exportBaishiTemplate,
+    exportDaliTemplate,
+    exportCommonTemplate,
   } from "@/api/qualityManagement/rawMaterialInspection.js";
   import FilesDia from "@/views/qualityManagement/processInspection/components/filesDia.vue";
   import dayjs from "dayjs";
@@ -116,7 +137,6 @@
 
   const data = reactive({
     searchForm: {
-      process: "",
       entryDate: undefined, // 褰曞叆鏃ユ湡
       workOrderNo: "",
       entryDateStart: undefined,
@@ -135,13 +155,13 @@
       width: 120,
     },
     {
-      label: "宸ュ簭",
-      prop: "process",
-      width: 230,
-    },
-    {
       label: "妫�楠屽憳",
       prop: "checkName",
+    },
+    {
+      label: "閲囪喘鍚堝悓鍙�",
+      prop: "purchaseContractNo",
+			width: 150,
     },
     {
       label: "浜у搧鍚嶇О",
@@ -311,8 +331,12 @@
   const formDia = ref();
   const filesDia = ref();
   const inspectionFormDia = ref();
+  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;
@@ -385,32 +409,8 @@
       return;
     }
 
-    const totalCount = selectedRows.value.length;
-    const submittedCount = totalCount - unSubmittedRows.length;
-
-    let confirmMessage = `宸查�夋嫨 ${totalCount} 鏉℃楠屽崟`;
-    if (submittedCount > 0) {
-      confirmMessage += `锛堝叾涓� ${submittedCount} 鏉″凡鎻愪氦锛屽皢鑷姩璺宠繃锛塦;
-    }
-    confirmMessage += `\n\n纭鍚庡皢鑷姩锛歕n路 妫�楠岀粨鏋滆涓�"鍚堟牸"\n路 鍚堟牸鏁伴噺璁句负鎬绘暟\n路 涓嶅悎鏍兼暟閲忚涓� 0\n路 鎻愪氦骞跺叆搴揱;
-
-    ElMessageBox.confirm(confirmMessage, "蹇�熸楠�", {
-      confirmButtonText: "纭",
-      cancelButtonText: "鍙栨秷",
-      type: "warning",
-      dangerouslyUseHTMLString: false,
-    })
-      .then(() => {
-        // 璋冪敤鎵归噺蹇�熸楠屾帴鍙�
-        const ids = unSubmittedRows.map(item => item.id);
-        batchQuickInspect(ids).then(res => {
-          proxy.$modal.msgSuccess(res.msg || "蹇�熸楠屽畬鎴�");
-          getList();
-        });
-      })
-      .catch(() => {
-        proxy.$modal.msg("宸插彇娑�");
-      });
+    const ids = unSubmittedRows.map(item => item.id);
+    quickCheckDia.value?.openDialog(ids, unSubmittedRows);
   };
 
   // 鎵撳紑鏂板妫�楠屽脊妗�
@@ -483,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 = () => {
@@ -522,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>

--
Gitblit v1.9.3