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