From ea1a0a7522dbe869e02cdde1042fe2596d413bef Mon Sep 17 00:00:00 2001
From: chenhj <1263187585@qq.com>
Date: 星期四, 05 三月 2026 11:37:05 +0800
Subject: [PATCH] 坤泰修改产出统计
---
src/views/productionManagement/workOrder/index.vue | 107 +++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 91 insertions(+), 16 deletions(-)
diff --git a/src/views/productionManagement/workOrder/index.vue b/src/views/productionManagement/workOrder/index.vue
index f5d2bc1..621501c 100644
--- a/src/views/productionManagement/workOrder/index.vue
+++ b/src/views/productionManagement/workOrder/index.vue
@@ -24,10 +24,12 @@
:page="page"
:tableLoading="tableLoading"
@pagination="pagination">
- <template #completionStatus="{ row }">
- <el-progress :percentage="toProgressPercentage(row?.completionStatus)" :color="progressColor(toProgressPercentage(row?.completionStatus))" :status="toProgressPercentage(row?.completionStatus) >= 100 ? 'success' : ''" />
- </template>
- </PIMTable>
+ <template #completionStatus="{ row }">
+ <el-progress :percentage="toProgressPercentage(row?.completionStatus)"
+ :color="progressColor(toProgressPercentage(row?.completionStatus))"
+ :status="toProgressPercentage(row?.completionStatus) >= 100 ? 'success' : ''" />
+ </template>
+ </PIMTable>
</div>
<el-dialog v-model="editDialogVisible"
title="缂栬緫鏃堕棿"
@@ -104,7 +106,6 @@
transferCardRowData.status
}}</span>
</div> -->
-
<div class="info-item">
<span class="info-label">璁″垝寮�濮嬫椂闂�</span>
<span class="info-value">{{ transferCardRowData.planStartTime }}</span>
@@ -180,6 +181,13 @@
style="width: 300px"
placeholder="璇疯緭鍏ユ湰娆$敓浜ф暟閲�" />
</el-form-item>
+ <el-form-item label="鎶ュ簾鏁伴噺">
+ <el-input v-model.number="reportForm.scrapQty"
+ type="number"
+ min="1"
+ style="width: 300px"
+ placeholder="璇疯緭鍏ユ姤搴熸暟閲�" />
+ </el-form-item>
<el-form-item label="鐝粍淇℃伅">
<el-select v-model="reportForm.userId"
style="width: 300px"
@@ -189,7 +197,7 @@
@change="handleUserChange">
<el-option v-for="user in userOptions"
:key="user.userId"
- :label="user.userName"
+ :label="user.nickName"
:value="user.userId" />
</el-select>
</el-form-item>
@@ -202,6 +210,7 @@
</span>
</template>
</el-dialog>
+ <FilesDia ref="workOrderFilesRef" />
</div>
</template>
@@ -213,21 +222,23 @@
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([
{
- label: "宸ュ崟缂栧彿",
- prop: "workOrderNo",
- width: "140",
+ label: "宸ュ崟绫诲瀷",
+ prop: "workOrderType",
+ width: "80",
},
{
- label: "鐢熶骇璁㈠崟鍙�",
- prop: "productOrderNpsNo",
+ label: "宸ュ崟缂栧彿",
+ prop: "workOrderNo",
width: "140",
},
{
@@ -297,10 +308,16 @@
handleEdit(row);
},
},
+ // {
+ // name: "娴佽浆鍗�",
+ // clickFun: row => {
+ // downloadAndPrintWorkOrder(row);
+ // },
+ // },
{
- name: "娴佽浆鍗�",
+ name: "闄勪欢",
clickFun: row => {
- showTransferCard(row);
+ openWorkOrderFiles(row);
},
},
{
@@ -323,6 +340,7 @@
const transferCardQrUrl = ref("");
const transferCardRowData = ref(null);
const reportDialogVisible = ref(false);
+ const workOrderFilesRef = ref(null);
const userOptions = ref([]);
const reportForm = reactive({
planQuantity: 0,
@@ -388,6 +406,58 @@
});
};
+ // 涓嬭浇骞舵墦鍗板伐鍗曟祦杞崱锛堟枃浠舵祦锛�
+ 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);
@@ -427,12 +497,13 @@
reportForm.workOrderId = row.id;
reportForm.reportWork = row.reportWork;
reportForm.productMainId = row.productMainId;
+ reportForm.scrapQty = row.scrapQty;
// 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛淇℃伅锛岃缃负榛樿閫変腑
getUserProfile()
.then(res => {
if (res.code === 200) {
reportForm.userId = res.data.userId;
- reportForm.userName = res.data.userName;
+ reportForm.userName = res.data.nickName;
}
})
.catch(err => {
@@ -440,6 +511,10 @@
});
reportDialogVisible.value = true;
+ };
+
+ const openWorkOrderFiles = row => {
+ workOrderFilesRef.value?.openDialog(row);
};
const handleReport = () => {
@@ -489,11 +564,11 @@
};
// 鐢ㄦ埛閫夋嫨鍙樺寲鏃舵洿鏂� userName
- const handleUserChange = (userId) => {
+ const handleUserChange = userId => {
if (userId) {
const selectedUser = userOptions.value.find(user => user.userId === userId);
if (selectedUser) {
- reportForm.userName = selectedUser.userName;
+ reportForm.userName = selectedUser.nickName;
}
} else {
reportForm.userName = "";
--
Gitblit v1.9.3