From f624d2f62d1e2e6c61dffd79eb728d41a0128c72 Mon Sep 17 00:00:00 2001
From: 张诺 <zhang_12370@163.com>
Date: 星期二, 28 四月 2026 17:40:24 +0800
Subject: [PATCH] 生产工单 生产派拆 报工优化
---
src/views/productionManagement/workOrder/index.vue | 93 ++++++++++++++++++++++++++++++++++++----------
1 files changed, 72 insertions(+), 21 deletions(-)
diff --git a/src/views/productionManagement/workOrder/index.vue b/src/views/productionManagement/workOrder/index.vue
index 2b56480..6fdccc0 100644
--- a/src/views/productionManagement/workOrder/index.vue
+++ b/src/views/productionManagement/workOrder/index.vue
@@ -337,10 +337,8 @@
</el-button>
</el-col>
</el-row>
-
<el-table :data="scheduleRows" border style="width: 100%" v-loading="scheduleLoading">
- <el-table-column type="index" label="搴忓彿" width="70" align="center" />
-
+ <el-table-column type="index" label="搴忓彿" width="70" align="center" :index="indexMethod" />
<el-table-column label="鏈涓婃満鏈哄彴" min-width="220">
<template #default="{ row }">
<el-select
@@ -441,6 +439,7 @@
import {ElMessageBox, ElMessage} from "element-plus";
import Pagination from "@/components/PIMTable/Pagination.vue";
import dayjs from "dayjs";
+import { processList } from '@/api/productionManagement/productionProcess.js'
import {
productWorkOrderPage,
updateProductWorkOrder,
@@ -672,8 +671,7 @@
return;
}
- const rows = buildScheduleRowsFromRecords(records);
-
+ const rows = records.map(record => mapMachineRecordToScheduleRow(record));
scheduleRows.value = rows.length > 0 ? rows : [createScheduleRow({})];
} catch (error) {
console.error("鑾峰彇鎺掍骇璁板綍澶辫触", error);
@@ -814,6 +812,10 @@
}
return payload;
+};
+
+const indexMethod = (index) => {
+ return (schedulePage.current - 1) * schedulePage.size + index + 1;
};
const mapMachineRecordToScheduleRow = (record) => {
@@ -1008,15 +1010,20 @@
showReportDialog(row);
},
// 鐢ㄦ埛褰撳墠id
- disabled: row => row.completeQuantity === row.planQuantity ||
+ disabled: row => row.completeQuantity !==0 ||
!isCurrentUserInUserIds(row)
},
{
name: "鐢熶骇鎺掍骇",
clickFun: row => {
+ if (!row.canSchedule) {
+ ElMessage.warning("褰撳墠鐢ㄦ埛涓嶅湪璇ュ伐搴忎汉鍛樹腑锛屼笉鑳界敓浜ф帓浜�");
+ return;
+ }
openScheduleDialog(row);
},
- },
+ disabled: row => !row.canSchedule
+ }
// {
// name:"瀹℃牳",
// color: "#f56c6c",
@@ -1260,18 +1267,27 @@
page.size = obj.limit;
getList();
};
-const getList = () => {
+const getList = async () => {
tableLoading.value = true;
- const params = {...searchForm.value, ...page};
- productWorkOrderPage(params)
- .then(res => {
- tableLoading.value = false;
- tableData.value = res.data.records;
- page.total = res.data.total;
- })
- .catch(() => {
- tableLoading.value = false;
- });
+
+ try {
+ await ensureCurrentUser();
+ await processLists();
+
+ const params = { ...searchForm.value, ...page };
+ const res = await productWorkOrderPage(params);
+
+ const records = Array.isArray(res?.data?.records) ? res.data.records : [];
+
+ tableData.value = records.map(row => ({
+ ...row,
+ canSchedule: canScheduleByWorkOrderNo(row)
+ }));
+
+ page.total = res?.data?.total || 0;
+ } finally {
+ tableLoading.value = false;
+ }
};
// 涓嬭浇骞舵墦鍗板伐鍗曟祦杞崱锛堟枃浠舵祦锛�
@@ -1520,9 +1536,44 @@
}
}
-onMounted(() => {
- ensureCurrentUser();
- getList();
+const processData = ref([]);
+
+// 鏌ヨ鎵�鏈夊伐搴�
+const processLists = async () => {
+ console.log(processData.value)
+ if (processData.value.length > 0) {
+ return processData.value;
+ }
+ const res = await processList();
+
+ processData.value = Array.isArray(res?.data) ? res.data : [];
+ return processData.value;
+};
+
+// 鍒ゆ柇褰撳墠鐢ㄦ埛鏄惁鑳芥帓浜�
+const canScheduleByWorkOrderNo = (row) => {
+ if (!row) return false;
+
+ const uid = String(currentUserId.value || "");
+ if (!uid) return false;
+
+ const currentProcess = processData.value.find(item =>
+ String(item.id) === String(row.processId)
+ );
+
+ if (!currentProcess) return false;
+
+ const ids = normalizeArray(currentProcess.userIds)
+ .map(id => String(id).trim())
+ .filter(Boolean);
+
+ return ids.includes(uid);
+};
+
+onMounted(async () => {
+ await ensureCurrentUser();
+ await processLists();
+ await getList();
getUserList();
getDeviceList();
});
--
Gitblit v1.9.3