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