From bbb54adc8d9fd6ae6b87ac036c8b21f3ad7daef4 Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期四, 16 七月 2026 10:05:40 +0800
Subject: [PATCH] 工作台报工完善

---
 src/views/mes/workbench/index.vue                              |   22 ++++---
 src/views/mes/workbench/components/tabs/FeedbackTab.vue        |   10 +-
 src/api/mes/pro/feedback/index.ts                              |    2 
 src/views/mes/workbench/components/tabs/RecordParamTab.vue     |   67 ++++++++++++++--------
 src/api/mes/pro/workorderparamrecord/index.ts                  |    4 
 src/views/mes/workbench/components/TaskListPanel.vue           |   12 +++
 src/views/mes/workbench/components/tabs/FeedbackHistoryTab.vue |   22 ++++---
 7 files changed, 88 insertions(+), 51 deletions(-)

diff --git a/src/api/mes/pro/feedback/index.ts b/src/api/mes/pro/feedback/index.ts
index fe7605d..b098949 100644
--- a/src/api/mes/pro/feedback/index.ts
+++ b/src/api/mes/pro/feedback/index.ts
@@ -54,6 +54,8 @@
     code?: string;
     type?: number;
     workOrderId?: number;
+    taskId?: number;
+    taskCode?: string;
     itemId?: number;
     feedbackUserId?: number;
     creator?: string;
diff --git a/src/api/mes/pro/workorderparamrecord/index.ts b/src/api/mes/pro/workorderparamrecord/index.ts
index e54b717..fcb0692 100644
--- a/src/api/mes/pro/workorderparamrecord/index.ts
+++ b/src/api/mes/pro/workorderparamrecord/index.ts
@@ -42,9 +42,9 @@
   }
 }
 
-/** 鎸夊伐鍗曞垎椤垫煡璇㈠弬鏁拌褰� */
+/** 鎸夊伐鍗�/宸ヤ綔绔欏垎椤垫煡璇㈠弬鏁拌褰� */
 export function getWorkOrderParamRecordPage(
-  params: PageParam & { workOrderId: number; recordNo?: string; templateName?: string; createTime?: string[] },
+  params: PageParam & { workOrderId?: number; workstationId?: number; recordNo?: string; templateName?: string; createTime?: string[] },
 ) {
   return requestClient.get<PageResult<MesProWorkOrderParamRecordApi.WorkOrderParamRecord>>(
     '/mes/pro/work-order-param-record/page-by-work-order',
diff --git a/src/views/mes/workbench/components/TaskListPanel.vue b/src/views/mes/workbench/components/TaskListPanel.vue
index 24d1f72..be2d5bf 100644
--- a/src/views/mes/workbench/components/TaskListPanel.vue
+++ b/src/views/mes/workbench/components/TaskListPanel.vue
@@ -11,6 +11,8 @@
   list: PendingTask[];
   selectedId?: number;
   loading?: boolean;
+  /** 褰撳墠宸ヤ綔绔欏搴旂殑宸ュ簭鍚嶇О锛屽垪琛ㄥ彧灞曠ず鍖归厤鐨勫伐搴� */
+  processName?: string;
 }>();
 
 const emit = defineEmits<{
@@ -19,10 +21,16 @@
 
 const searchKeyword = ref('');
 
+/** 鍏堟寜宸ヤ綔绔欏伐搴忚繃婊わ紝鍐嶆寜鎼滅储鍏抽敭瀛楀尮閰� */
 const filteredList = computed(() => {
+  let result = props.list;
+  // 鍥哄畾鍙樉绀哄拰褰撳墠宸ヤ綔绔欏伐搴忓尮閰嶇殑浠诲姟
+  if (props.processName) {
+    result = result.filter((row) => row.processName === props.processName);
+  }
   const kw = searchKeyword.value.trim().toLowerCase();
-  if (!kw) return props.list;
-  return props.list.filter((row) => {
+  if (!kw) return result;
+  return result.filter((row) => {
     const fields = [
       row.code,
       row.workOrderCode,
diff --git a/src/views/mes/workbench/components/tabs/FeedbackHistoryTab.vue b/src/views/mes/workbench/components/tabs/FeedbackHistoryTab.vue
index 578eaf9..7ec016e 100644
--- a/src/views/mes/workbench/components/tabs/FeedbackHistoryTab.vue
+++ b/src/views/mes/workbench/components/tabs/FeedbackHistoryTab.vue
@@ -16,7 +16,7 @@
 import {
   approveFeedback,
   deleteFeedback,
-  getFeedbackListByTask,
+  getFeedbackPage,
   rejectFeedback,
   submitFeedback,
 } from '#/api/mes/pro/feedback';
@@ -134,11 +134,15 @@
     keepSource: true,
     proxyConfig: {
       ajax: {
-        query: async () => {
+        query: async ({ page }) => {
           if (!props.taskId) {
-            return [];
+            return { list: [], total: 0 };
           }
-          return await getFeedbackListByTask(props.taskId);
+          return await getFeedbackPage({
+            taskId: props.taskId,
+            pageNo: page.currentPage,
+            pageSize: page.pageSize,
+          });
         },
       },
     },
@@ -213,7 +217,7 @@
         <template #actions="{ row }">
           <Space :size="4" wrap>
             <Button type="link" size="small" @click="handleDetail(row)">
-              {{ $t('common.view') }}
+              鏌ョ湅
             </Button>
             <!-- 鑽夌锛氱紪杈戙�佸垹闄ゃ�佹彁浜� -->
             <Button
@@ -222,7 +226,7 @@
               size="small"
               @click="handleEdit(row)"
             >
-              {{ $t('common.edit') }}
+              缂栬緫
             </Button>
             <Popconfirm
               v-if="row.status === STATUS_PREPARE"
@@ -230,7 +234,7 @@
               @confirm="handleSubmit(row)"
             >
               <Button type="link" size="small">
-                {{ $t('common.submit') }}
+                鎻愪氦
               </Button>
             </Popconfirm>
             <Popconfirm
@@ -239,7 +243,7 @@
               @confirm="handleDelete(row)"
             >
               <Button type="link" size="small" danger>
-                {{ $t('common.delete') }}
+                鍒犻櫎
               </Button>
             </Popconfirm>
             <!-- 瀹℃壒涓細瀹℃壒閫氳繃銆侀┏鍥� -->
@@ -249,7 +253,7 @@
               @confirm="handleApprove(row)"
             >
               <Button type="link" size="small">
-                {{ $t('common.approve') }}
+                瀹℃壒閫氳繃
               </Button>
             </Popconfirm>
             <Popconfirm
diff --git a/src/views/mes/workbench/components/tabs/FeedbackTab.vue b/src/views/mes/workbench/components/tabs/FeedbackTab.vue
index 367c822..22e58f9 100644
--- a/src/views/mes/workbench/components/tabs/FeedbackTab.vue
+++ b/src/views/mes/workbench/components/tabs/FeedbackTab.vue
@@ -212,12 +212,12 @@
   originalSnapshot.value = JSON.stringify(await getAlignedData());
 }
 
-// 鐩戝惉浠诲姟鍙樻洿
+// 鐩戝惉浠诲姟鍙樻洿锛堜粎褰撲换鍔� ID 鐪熸鍙樺寲鏃舵墠閲嶇疆琛ㄥ崟锛�
 watch(
-  () => props.task,
-  (task) => {
-    if (task) {
-      resetForTask(task);
+  () => props.task?.id,
+  () => {
+    if (props.task) {
+      resetForTask(props.task);
     }
   },
   { immediate: true },
diff --git a/src/views/mes/workbench/components/tabs/RecordParamTab.vue b/src/views/mes/workbench/components/tabs/RecordParamTab.vue
index 7ecea3a..5cf6271 100644
--- a/src/views/mes/workbench/components/tabs/RecordParamTab.vue
+++ b/src/views/mes/workbench/components/tabs/RecordParamTab.vue
@@ -26,6 +26,8 @@
 const props = defineProps<{
   /** 褰撳墠宸ュ崟缂栧彿 */
   workOrderId?: number;
+  /** 褰撳墠宸ヤ綔绔欑紪鍙� */
+  workstationId?: number;
 }>();
 
 // --- 妯″紡 ---
@@ -283,6 +285,7 @@
   try {
     const result = await getWorkOrderParamRecordPage({
       workOrderId: props.workOrderId,
+      workstationId: props.workstationId,
       pageNo: 1,
       pageSize: 100,
     });
@@ -292,20 +295,15 @@
   }
 }
 
-// 宸ュ崟鍙樻洿鏃跺姞杞借褰�
+// 宸ュ崟鎴栧伐浣滅珯鍙樻洿鏃跺姞杞借褰�
 watch(
-  () => props.workOrderId,
+  () => [props.workOrderId, props.workstationId],
   () => {
     handleCancelForm();
     refreshRecordList();
   },
+  { immediate: true },
 );
-
-/** 鏍煎紡鍖栧弬鏁板�煎睍绀� */
-function formatParamDisplay(detail: MesProWorkOrderParamRecordApi.ParamRecordDetail) {
-  const unit = detail.unitMeasureName ? ` ${detail.unitMeasureName}` : '';
-  return `${detail.paramName}: ${detail.paramValue ?? '-'}${unit}`;
-}
 </script>
 
 <template>
@@ -410,7 +408,7 @@
       <!-- 鏃犲伐鍗曟彁绀� -->
       <div v-if="!workOrderId" class="record-param-tab__empty">
         <IconifyIcon icon="lucide:alert-circle" class="record-param-tab__empty-icon" />
-        <p>璇峰厛浠庡乏渚ч�夋嫨涓�鏉″伐鍗曚换鍔�</p>
+        <p>璇峰厛閫夋嫨宸ヤ綔绔欏拰宸ュ崟浠诲姟</p>
       </div>
 
       <!-- 绌哄垪琛� -->
@@ -450,13 +448,16 @@
             澶囨敞锛歿{ record.remark }}
           </div>
           <div class="record-param-tab__card-params">
-            <span
+            <div
               v-for="d in record.details"
               :key="d.id"
-              class="record-param-tab__param-tag"
+              class="record-param-tab__param-row"
             >
-              {{ formatParamDisplay(d) }}
-            </span>
+              <span class="record-param-tab__param-name">{{ d.paramName }}</span>
+              <span class="record-param-tab__param-value">
+                {{ d.paramValue ?? '-' }}<span v-if="d.unitMeasureName" class="record-param-tab__param-unit"> {{ d.unitMeasureName }}</span>
+              </span>
+            </div>
           </div>
         </div>
       </div>
@@ -680,20 +681,38 @@
 }
 
 .record-param-tab__card-params {
-  display: flex;
-  flex-wrap: wrap;
-  gap: 6px;
+  display: grid;
+  grid-template-columns: repeat(3, 1fr);
+  gap: 4px 16px;
   margin-top: 8px;
 }
 
-.record-param-tab__param-tag {
-  display: inline-flex;
-  align-items: center;
-  padding: 3px 10px;
-  border-radius: 4px;
+.record-param-tab__param-row {
+  display: flex;
+  align-items: baseline;
+  gap: 8px;
+  font-size: 13px;
+  line-height: 1.6;
+  padding: 2px 0;
+}
+
+.record-param-tab__param-name {
+  flex-shrink: 0;
+  color: #8c8c8c;
+  min-width: 100px;
+
+  &::after {
+    content: ':';
+  }
+}
+
+.record-param-tab__param-value {
+  color: #1a1a1a;
+  font-weight: 500;
+}
+
+.record-param-tab__param-unit {
+  color: #8c8c8c;
   font-size: 12px;
-  background: #f6ffed;
-  color: #389e0d;
-  border: 1px solid #d9f7be;
 }
 </style>
diff --git a/src/views/mes/workbench/index.vue b/src/views/mes/workbench/index.vue
index 4fc3302..2d9072b 100644
--- a/src/views/mes/workbench/index.vue
+++ b/src/views/mes/workbench/index.vue
@@ -71,16 +71,18 @@
       pageSize: 200,
     });
     taskList.value = result.list ?? [];
-    // 鑷姩閫変腑骞跺悓姝� selectedTask 鍒版渶鏂版暟鎹�
-    if (taskList.value.length) {
-      if (selectedTask.value) {
-        // 灏濊瘯鍦ㄦ柊鍒楄〃涓壘鍒板悓 ID 鐨勪换鍔★紝鏇存柊寮曠敤浠ュ埛鏂版暟鎹�
-        const updated = taskList.value.find(
-          (t) => t.id === selectedTask.value!.id,
-        );
-        selectedTask.value = updated ?? taskList.value[0];
+    // 鍚屾 selectedTask 鍒版渶鏂版暟鎹紙涓嶈嚜鍔ㄩ�変腑绗竴涓紝闇�鐢ㄦ埛鎵嬪姩鐐瑰嚮锛�
+    if (selectedTask.value) {
+      const updated = taskList.value.find(
+        (t) => t.id === selectedTask.value!.id,
+      );
+      if (updated) {
+        selectedTask.value = updated;
+      } else if (taskList.value.length) {
+        // 涔嬪墠閫変腑鐨勪换鍔′笉鍦ㄦ柊鍒楄〃涓簡锛屾竻绌�
+        selectedTask.value = undefined;
       } else {
-        selectedTask.value = taskList.value[0];
+        selectedTask.value = undefined;
       }
     } else {
       selectedTask.value = undefined;
@@ -165,6 +167,7 @@
           :list="taskList"
           :selected-id="selectedTask?.id"
           :loading="taskLoading"
+          :process-name="workstation?.processName"
           @select="handleSelectTask"
         />
       </aside>
@@ -202,6 +205,7 @@
           <RecordParamTab
             v-else-if="activeTab === 'record-param'"
             :work-order-id="selectedTask?.workOrderId"
+            :workstation-id="workstationId"
           />
           <ProductIssueTab
             v-else-if="activeTab === 'product-issue'"

--
Gitblit v1.9.3