From eeefce8145b5ab47ba7148fc05092e2d01e1fc8e Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期三, 28 一月 2026 09:13:19 +0800
Subject: [PATCH] fix: 搬迁军泰生产-可上传图片、下载流转码
---
src/views/productionManagement/workOrder/index.vue | 66 ++++++++++++++++++++++++++++++++
1 files changed, 65 insertions(+), 1 deletions(-)
diff --git a/src/views/productionManagement/workOrder/index.vue b/src/views/productionManagement/workOrder/index.vue
index de91893..291ca18 100644
--- a/src/views/productionManagement/workOrder/index.vue
+++ b/src/views/productionManagement/workOrder/index.vue
@@ -209,6 +209,7 @@
</span>
</template>
</el-dialog>
+ <FilesDia ref="workOrderFilesRef" />
</div>
</template>
@@ -220,10 +221,12 @@
productWorkOrderPage,
updateProductWorkOrder,
addProductMain,
+ downProductWorkOrder,
} from "@/api/productionManagement/workOrder.js";
import { getUserProfile, userListNoPageByTenantId } from "@/api/system/user.js";
import QRCode from "qrcode";
import { getCurrentInstance, reactive, toRefs } from "vue";
+ import FilesDia from "./components/filesDia.vue";
const { proxy } = getCurrentInstance();
const tableColumn = ref([
@@ -307,7 +310,13 @@
{
name: "娴佽浆鍗�",
clickFun: row => {
- showTransferCard(row);
+ downloadAndPrintWorkOrder(row);
+ },
+ },
+ {
+ name: "闄勪欢",
+ clickFun: row => {
+ openWorkOrderFiles(row);
},
},
{
@@ -330,6 +339,7 @@
const transferCardQrUrl = ref("");
const transferCardRowData = ref(null);
const reportDialogVisible = ref(false);
+ const workOrderFilesRef = ref(null);
const userOptions = ref([]);
const reportForm = reactive({
planQuantity: 0,
@@ -395,6 +405,56 @@
});
};
+ // 涓嬭浇骞舵墦鍗板伐鍗曟祦杞崱锛堟枃浠舵祦锛�
+ const downloadAndPrintWorkOrder = async row => {
+ if (!row || !row.id) {
+ proxy.$modal.msgError("缂哄皯宸ュ崟ID锛屾棤娉曚笅杞芥祦杞崱");
+ return;
+ }
+ const fileName = row.workOrderNo
+ ? `宸ュ崟娴佽浆鍗${row.workOrderNo}.xlsx`
+ : "宸ュ崟娴佽浆鍗�.xlsx";
+ try {
+ // 璋冪敤鎺ュ彛锛屼互 responseType: 'blob' 鑾峰彇鏂囦欢娴�
+ const blob = await downProductWorkOrder(row.id);
+
+ if (!blob) {
+ proxy.$modal.msgError("鏈幏鍙栧埌娴佽浆鍗℃枃浠�");
+ return;
+ }
+
+ // 鍒涘缓 Blob URL
+ const fileBlob =
+ blob instanceof Blob ? blob : new Blob([blob], { type: blob.type || "application/octet-stream" });
+ const url = window.URL.createObjectURL(fileBlob);
+
+ // 鍒涘缓闅愯棌 iframe锛岀敤浜庤Е鍙戞祻瑙堝櫒鎵撳嵃
+ const iframe = document.createElement("iframe");
+ iframe.style.position = "fixed";
+ iframe.style.right = "0";
+ iframe.style.bottom = "0";
+ iframe.style.width = "0";
+ iframe.style.height = "0";
+ iframe.style.border = "0";
+ iframe.src = url;
+ document.body.appendChild(iframe);
+
+ iframe.onload = () => {
+ try {
+ iframe.contentWindow?.focus();
+ iframe.contentWindow?.print();
+ } catch (e) {
+ console.error("鑷姩璋冪敤鎵撳嵃澶辫触", e);
+ // 閫�鑰屾眰鍏舵锛屾墦寮�鏂扮獥鍙g敱鐢ㄦ埛鎵嬪姩鎵撳嵃
+ window.open(url);
+ }
+ };
+ } catch (e) {
+ console.error("涓嬭浇宸ュ崟娴佽浆鍗″け璐�", e);
+ proxy.$modal.msgError("涓嬭浇宸ュ崟娴佽浆鍗″け璐�");
+ }
+ };
+
const showTransferCard = async row => {
transferCardRowData.value = row;
const qrContent = String(row.id);
@@ -450,6 +510,10 @@
reportDialogVisible.value = true;
};
+ const openWorkOrderFiles = row => {
+ workOrderFilesRef.value?.openDialog(row);
+ };
+
const handleReport = () => {
if (reportForm.planQuantity <= 0) {
ElMessageBox.alert("寰呯敓浜ф暟閲忎负0锛屾棤娉曟姤宸�", "鎻愮ず", {
--
Gitblit v1.9.3