From a1361a1e9e2999b864859a33aa1d4dc830d86818 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期五, 16 一月 2026 15:13:32 +0800
Subject: [PATCH] fix: 生产工单、生产入库调整
---
src/views/productionManagement/workOrder/index.vue | 115 +++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 90 insertions(+), 25 deletions(-)
diff --git a/src/views/productionManagement/workOrder/index.vue b/src/views/productionManagement/workOrder/index.vue
index acc3cd1..f5d2bc1 100644
--- a/src/views/productionManagement/workOrder/index.vue
+++ b/src/views/productionManagement/workOrder/index.vue
@@ -23,7 +23,11 @@
:tableData="tableData"
:page="page"
:tableLoading="tableLoading"
- @pagination="pagination"></PIMTable>
+ @pagination="pagination">
+ <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="缂栬緫鏃堕棿"
@@ -90,7 +94,7 @@
<span class="info-label">浜у搧瑙勬牸</span>
<span class="info-value">{{ transferCardRowData.model }}</span>
</div>
- <div class="info-item">
+ <!-- <div class="info-item">
<span class="info-label">宸ュ崟鐘舵��</span>
<span class="info-value">{{
transferCardRowData.status === 1 ? '寰呯‘璁�' :
@@ -99,7 +103,8 @@
transferCardRowData.status === 4 ? '宸茬敓浜�' :
transferCardRowData.status
}}</span>
- </div>
+ </div> -->
+
<div class="info-item">
<span class="info-label">璁″垝寮�濮嬫椂闂�</span>
<span class="info-value">{{ transferCardRowData.planStartTime }}</span>
@@ -115,12 +120,12 @@
</div>
<div class="info-group">
<div class="info-item">
- <span class="info-label"> </span>
- <span class="info-value"> </span>
+ <span class="info-label">闇�姹傛暟閲�</span>
+ <span class="info-value">{{ transferCardRowData.planQuantity }}</span>
</div>
<div class="info-item">
- <span class="info-label">璁″垝鏁伴噺</span>
- <span class="info-value">{{ transferCardRowData.planQuantity }}</span>
+ <span class="info-label">瀹屾垚鏁伴噺</span>
+ <span class="info-value">{{ transferCardRowData.completeQuantity }}</span>
</div>
<div class="info-item">
<span class="info-label">鑹搧鏁伴噺</span>
@@ -176,10 +181,17 @@
placeholder="璇疯緭鍏ユ湰娆$敓浜ф暟閲�" />
</el-form-item>
<el-form-item label="鐝粍淇℃伅">
- <el-input v-model="reportForm.userName"
- style="width: 300px"
- readonly
- placeholder="璇疯緭鍏ョ彮缁勪俊鎭�" />
+ <el-select v-model="reportForm.userId"
+ style="width: 300px"
+ placeholder="璇烽�夋嫨鐝粍淇℃伅"
+ clearable
+ filterable
+ @change="handleUserChange">
+ <el-option v-for="user in userOptions"
+ :key="user.userId"
+ :label="user.userName"
+ :value="user.userId" />
+ </el-select>
</el-form-item>
</el-form>
<template #footer>
@@ -202,7 +214,7 @@
updateProductWorkOrder,
addProductMain,
} from "@/api/productionManagement/workOrder.js";
- import { getUserProfile } from "@/api/system/user.js";
+ import { getUserProfile, userListNoPageByTenantId } from "@/api/system/user.js";
import QRCode from "qrcode";
import { getCurrentInstance, reactive, toRefs } from "vue";
const { proxy } = getCurrentInstance();
@@ -236,13 +248,20 @@
prop: "processName",
},
{
- label: "寰呯敓浜ф暟閲�",
+ label: "闇�姹傛暟閲�",
prop: "planQuantity",
width: "140",
},
{
- label: "璁″垝鐢熶骇鏁伴噺",
- prop: "quantity",
+ label: "瀹屾垚鏁伴噺",
+ prop: "completeQuantity",
+ width: "140",
+ },
+ {
+ label: "瀹屾垚杩涘害",
+ prop: "completionStatus",
+ dataType: "slot",
+ slot: "completionStatus",
width: "140",
},
{
@@ -289,6 +308,7 @@
clickFun: row => {
showReportDialog(row);
},
+ disabled: row => row.planQuantity <= 0,
},
],
},
@@ -303,6 +323,7 @@
const transferCardQrUrl = ref("");
const transferCardRowData = ref(null);
const reportDialogVisible = ref(false);
+ const userOptions = ref([]);
const reportForm = reactive({
planQuantity: 0,
quantity: 0,
@@ -326,6 +347,20 @@
},
});
const { searchForm } = toRefs(data);
+ const toProgressPercentage = val => {
+ const n = Number(val);
+ if (!Number.isFinite(n)) return 0;
+ if (n <= 0) return 0;
+ if (n >= 100) return 100;
+ return Math.round(n);
+ };
+ const progressColor = percentage => {
+ const p = toProgressPercentage(percentage);
+ if (p < 30) return "#f56c6c";
+ if (p < 50) return "#e6a23c";
+ if (p < 80) return "#409eff";
+ return "#67c23a";
+ };
let editrow = ref(null);
// 鏌ヨ鍒楄〃
@@ -355,9 +390,7 @@
const showTransferCard = async row => {
transferCardRowData.value = row;
- const qrContent =
- proxy.javaApi + "/work-order?orderRow=" + JSON.stringify(row);
- console.log(qrContent, "qrContent");
+ const qrContent = String(row.id);
transferCardQrUrl.value = await QRCode.toDataURL(qrContent);
transferCardVisible.value = true;
@@ -394,12 +427,28 @@
reportForm.workOrderId = row.id;
reportForm.reportWork = row.reportWork;
reportForm.productMainId = row.productMainId;
- // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛淇℃伅
+ // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛淇℃伅锛岃缃负榛樿閫変腑
+ getUserProfile()
+ .then(res => {
+ if (res.code === 200) {
+ reportForm.userId = res.data.userId;
+ reportForm.userName = res.data.userName;
+ }
+ })
+ .catch(err => {
+ console.error("鑾峰彇鐢ㄦ埛淇℃伅澶辫触", err);
+ });
reportDialogVisible.value = true;
};
const handleReport = () => {
+ if (reportForm.planQuantity <= 0) {
+ ElMessageBox.alert("寰呯敓浜ф暟閲忎负0锛屾棤娉曟姤宸�", "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ });
+ return;
+ }
if (!reportForm.quantity || reportForm.quantity <= 0) {
ElMessageBox.alert("璇疯緭鍏ユ湁鏁堢殑鏈鐢熶骇鏁伴噺", "鎻愮ず", {
confirmButtonText: "纭畾",
@@ -426,18 +475,34 @@
});
};
- onMounted(() => {
- getList();
- getUserProfile()
+ // 鑾峰彇鐢ㄦ埛鍒楄〃
+ const getUserList = () => {
+ userListNoPageByTenantId()
.then(res => {
if (res.code === 200) {
- reportForm.userName = res.data.userName;
- reportForm.userId = res.data.userId;
+ userOptions.value = res.data || [];
}
})
.catch(err => {
- console.error("鑾峰彇鐢ㄦ埛淇℃伅澶辫触", err);
+ console.error("鑾峰彇鐢ㄦ埛鍒楄〃澶辫触", err);
});
+ };
+
+ // 鐢ㄦ埛閫夋嫨鍙樺寲鏃舵洿鏂� userName
+ const handleUserChange = (userId) => {
+ if (userId) {
+ const selectedUser = userOptions.value.find(user => user.userId === userId);
+ if (selectedUser) {
+ reportForm.userName = selectedUser.userName;
+ }
+ } else {
+ reportForm.userName = "";
+ }
+ };
+
+ onMounted(() => {
+ getList();
+ getUserList();
});
</script>
--
Gitblit v1.9.3