From f5870047d2dffa312f9d3f80abb3def283b5647f Mon Sep 17 00:00:00 2001
From: 张诺 <zhang_12370@163.com>
Date: 星期二, 28 四月 2026 14:56:25 +0800
Subject: [PATCH] 阳光印刷开发-先生产排产->报工 只允许选择排产的生产人

---
 src/views/productionManagement/workOrder/index.vue |  121 ++++++++++++++--------------------------
 1 files changed, 42 insertions(+), 79 deletions(-)

diff --git a/src/views/productionManagement/workOrder/index.vue b/src/views/productionManagement/workOrder/index.vue
index 18423af..2b56480 100644
--- a/src/views/productionManagement/workOrder/index.vue
+++ b/src/views/productionManagement/workOrder/index.vue
@@ -234,7 +234,7 @@
                   placeholder="璇烽�夋嫨鐝粍鎴愬憳"
               >
                 <el-option
-                    v-for="user in userTeamOptions"
+                    v-for="user in reportForm.userIdsList"
                     :key="user.userId"
                     :label="user.nickName"
                     :value="{ userId: user.userId, userName: user.nickName }"
@@ -243,25 +243,25 @@
             </el-form-item>
           </el-col>
 
-          <el-col :span="12">
-            <el-form-item label="鏈哄彴" prop="deviceId">
-              <el-select
-                  v-model="reportForm.deviceId"
-                  placeholder="璇烽�夋嫨鏈哄彴"
-                  filterable
-                  clearable
-                  @change="(val) => handleDeviceChange(val)"
-                  :disabled="isDetail"
-              >
-                <el-option
-                    v-for="item in deviceOptions"
-                    :key="item.id"
-                    :label="item.deviceName"
-                    :value="item.id"
-                />
-              </el-select>
-            </el-form-item>
-          </el-col>
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="鏈哄彴" prop="deviceId">-->
+<!--              <el-select-->
+<!--                  v-model="reportForm.deviceId"-->
+<!--                  placeholder="璇烽�夋嫨鏈哄彴"-->
+<!--                  filterable-->
+<!--                  clearable-->
+<!--                  @change="(val) => handleDeviceChange(val)"-->
+<!--                  :disabled="isDetail"-->
+<!--              >-->
+<!--                <el-option-->
+<!--                    v-for="item in deviceOptions"-->
+<!--                    :key="item.id"-->
+<!--                    :label="item.deviceName"-->
+<!--                    :value="item.id"-->
+<!--                />-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
 
           <el-col :span="12">
             <el-form-item label="瀹℃牳浜�" prop="auditUserId">
@@ -500,50 +500,15 @@
   return [val];
 };
 
-const isCurrentUserReportWorker = (row) => {
+const isCurrentUserInUserIds = (row) => {
   const uid = String(currentUserId.value || "");
   if (!uid) return false;
-  if (!row) return false;
 
-  const candidateIds = [
-    row.reportUserIds,
-    row.reportWorkerIds,
-    row.userIdList,
-    row.reportUserId,
-    row.userId,
-  ]
-      .flatMap((v) => normalizeArray(v))
-      .map((v) => String(v))
+  const ids = normalizeArray(row?.userIds)
+      .map(id => String(id))
       .filter(Boolean);
 
-  if (candidateIds.includes(uid)) return true;
-
-  const candidateNames = [
-    row.userNames,
-    row.reportUserNames,
-    row.reportWorkerNames,
-    row.userName,
-  ]
-      .flatMap((v) => normalizeArray(v))
-      .map((v) => String(v))
-      .filter(Boolean);
-
-  if (currentUserName.value && candidateNames.includes(currentUserName.value)) {
-    return true;
-  }
-
-  if (Array.isArray(row.reportWorkerList)) {
-    const list = row.reportWorkerList
-        .map((item) => String(item?.userId ?? item?.id ?? ""))
-        .filter(Boolean);
-    if (list.includes(uid)) return true;
-    const nameList = row.reportWorkerList
-        .map((item) => String(item?.userName ?? item?.nickName ?? ""))
-        .filter(Boolean);
-    if (currentUserName.value && nameList.includes(currentUserName.value)) return true;
-  }
-
-  return false;
+  return ids.includes(uid);
 };
 
 const canOperateByReportWorker = computed(() => {
@@ -1042,6 +1007,9 @@
         clickFun: row => {
           showReportDialog(row);
         },
+        // 鐢ㄦ埛褰撳墠id
+        disabled: row => row.completeQuantity === row.planQuantity ||
+            !isCurrentUserInUserIds(row)
       },
       {
         name: "鐢熶骇鎺掍骇",
@@ -1394,14 +1362,9 @@
 };
 
 const showReportDialog = row => {
-  // if (!isCurrentUserReportWorker(row)) {
-  //   ElMessage.warning("褰撳墠鐢ㄦ埛涓嶆槸璇ュ伐鍗曠殑鎶ュ伐浜猴紝鏃犳硶鎶ュ伐");
-  //   return;
-  // }
   currentReportRowData.value = row;
   reportForm.planQuantity = row.planQuantity - row.completeQuantity;
-  reportForm.quantity =
-      row.quantity !== undefined && row.quantity !== null ? row.quantity : null;
+  reportForm.quantity = row.quantity !== undefined && row.quantity !== null ? row.quantity : null;
   reportForm.productProcessRouteItemId = row.productProcessRouteItemId;
   reportForm.workOrderId = row.id;
   reportForm.reportWork = row.reportWork;
@@ -1411,6 +1374,20 @@
   reportForm.replenishQty = 0;
   reportForm.teamList = [];
   reportForm.scrapQty = 0;
+  reportForm.userIds = row.userIds || [];
+
+  const ids = (row.userIds || "")
+      .split(",")
+      .map(id => id.trim())
+      .filter(Boolean);
+
+  reportForm.userIdsList = userTeamOptions.value
+      .filter(item => ids.includes(String(item.userId)))
+      .map(item => ({
+        userId: item.userId,
+        nickName: item.nickName
+      }));
+
 
   nextTick(() => {
     reportFormRef.value?.clearValidate();
@@ -1478,20 +1455,6 @@
 
     if (quantity > reportForm.planQuantity) {
       ElMessageBox.alert("鏈鐢熶骇鏁伴噺涓嶈兘瓒呰繃寰呯敓浜ф暟閲�", "鎻愮ず", {
-        confirmButtonText: "纭畾",
-      });
-      return;
-    }
-
-    if (!reportForm.startTime || !reportForm.endTime) {
-      ElMessageBox.alert("寮�濮嬫椂闂村拰缁撴潫鏃堕棿涓嶈兘涓虹┖", "鎻愮ず", {
-        confirmButtonText: "纭畾",
-      });
-      return;
-    }
-
-    if (dayjs(reportForm.startTime).isSame(dayjs(reportForm.endTime)) || dayjs(reportForm.startTime).isAfter(dayjs(reportForm.endTime))) {
-      ElMessageBox.alert("寮�濮嬫椂闂村繀椤诲皬浜庣粨鏉熸椂闂�", "鎻愮ず", {
         confirmButtonText: "纭畾",
       });
       return;

--
Gitblit v1.9.3