From 04e8e3a312ed1f2d9dc40354ae5847ef9cc11360 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期六, 29 八月 2026 16:22:35 +0800
Subject: [PATCH] fix: 新疆-绿能 1.报工等待时长倒计时 + 报工数量可选 2.报工自动生成产品入库单 + 勾选入库 + 不合格仓库兜底
---
src/views/mes/workbench/components/tabs/FeedbackTab.vue | 65 ++++++++++++++++++++++++++++----
1 files changed, 56 insertions(+), 9 deletions(-)
diff --git a/src/views/mes/workbench/components/tabs/FeedbackTab.vue b/src/views/mes/workbench/components/tabs/FeedbackTab.vue
index 86b6e25..2166e3f 100644
--- a/src/views/mes/workbench/components/tabs/FeedbackTab.vue
+++ b/src/views/mes/workbench/components/tabs/FeedbackTab.vue
@@ -26,14 +26,20 @@
updateFeedback,
} from '#/api/mes/pro/feedback';
import { getRouteProcessByRouteAndProcess } from '#/api/mes/pro/route/process';
+import { getTask } from '#/api/mes/pro/task';
import { $t } from '#/locales';
import { useFormSchema } from '../../../pro/feedback/data';
import {
loadParamDetails,
paramDetails,
+ resetWaitConfig,
+ waitDuration,
+ waitStartTime,
+ waitTaskId,
} from '../../../pro/feedback/param-state';
import BatchInputDialog from '../../../pro/feedback/modules/batch-input-dialog.vue';
+import WaitCountdown from '../../../pro/feedback/modules/wait-countdown.vue';
const batchDialogRef = ref<InstanceType<typeof BatchInputDialog>>();
const batchActionType = ref<'' | 'submit' | 'approve'>('');
const pendingSubmitMode = ref<'saveAndSubmit' | 'submit'>('submit');
@@ -79,12 +85,16 @@
/** 鎻愪氦鍓嶅榻愭暟閲忥細鎶ュ伐鍙~鍐欐姤宸ユ暟閲忥紝鍚堟牸/涓嶈壇/搴熷搧鏁伴噺鐢辫川妫�纭畾锛屾姤宸ョ幆鑺備笉閲囬泦 */
function alignQuantity(data: any) {
+ if (data.needReportQuantity === false) {
+ data.feedbackQuantity = 0;
+ }
data.uncheckQuantity = data.checkFlag ? data.feedbackQuantity : 0;
delete data.qualifiedQuantity;
delete data.unqualifiedQuantity;
delete data.laborScrapQuantity;
delete data.materialScrapQuantity;
delete data.otherScrapQuantity;
+ delete data.needReportQuantity;
}
async function getAlignedData() {
@@ -102,14 +112,21 @@
}));
}
-/** 鍔犺浇 checkFlag */
-async function resolveCheckFlag(routeId?: number, processId?: number) {
- if (!routeId || !processId) return true;
+/** 鍔犺浇宸ュ簭閰嶇疆锛坈heckFlag / 绛夊緟鏃堕暱 / 鎶ュ伐鏁伴噺瑙勫垯锛� */
+async function resolveRouteProcessConfig(routeId?: number, processId?: number) {
+ if (!routeId || !processId) {
+ return { checkFlag: true, needReportQuantity: true };
+ }
try {
const rp = await getRouteProcessByRouteAndProcess(routeId, processId);
- return rp?.checkFlag ?? false;
+ waitDuration.value = rp?.waitDuration;
+ return {
+ checkFlag: rp?.checkFlag ?? false,
+ needReportQuantity: rp?.needReportQuantity ?? true,
+ };
} catch {
- return true;
+ waitDuration.value = undefined;
+ return { checkFlag: true, needReportQuantity: true };
}
}
@@ -119,13 +136,17 @@
feedbackId.value = undefined;
feedbackStatus.value = undefined;
originalSnapshot.value = '';
+ resetWaitConfig();
formApi.setState({ schema: useFormSchema(formType.value, formApi) });
const code = await generateAutoCode(MesAutoCodeRuleCode.PRO_FEEDBACK_CODE);
- const checkFlag = await resolveCheckFlag(task.routeId, task.processId);
+ const config = await resolveRouteProcessConfig(task.routeId, task.processId);
// 鍔犺浇浠诲姟缁戝畾鐨勫伐鑹哄弬鏁帮紙蹇呭~鍙傛暟鏍¢獙 + 鍙傛暟鍊煎洖鏄撅級
await loadParamDetails(task.id);
+
+ waitTaskId.value = task.id;
+ waitStartTime.value = task.waitStartTime;
await formApi.setValues({
code,
@@ -145,7 +166,8 @@
reportableQuantity: task.reportableQuantity,
scheduledQuantity: task.quantity,
feedbackApprove: task.feedbackApprove,
- checkFlag,
+ checkFlag: config.checkFlag,
+ needReportQuantity: config.needReportQuantity,
});
originalSnapshot.value = JSON.stringify(await getAlignedData());
}
@@ -337,9 +359,23 @@
feedbackStatus.value = data.status;
formType.value = 'update';
formApi.setState({ schema: useFormSchema(formType.value, formApi) });
- const checkFlag = await resolveCheckFlag(data.routeId, data.processId);
+ const config = await resolveRouteProcessConfig(data.routeId, data.processId);
await loadParamDetails(data.taskId);
- await formApi.setValues({ ...data, checkFlag });
+ waitTaskId.value = data.taskId;
+ waitStartTime.value = undefined;
+ if (data.taskId) {
+ try {
+ const task = await getTask(data.taskId);
+ waitStartTime.value = task?.waitStartTime;
+ } catch {
+ // 浠诲姟涓嶅瓨鍦ㄦ椂蹇界暐鍊掕鏃跺洖鏄�
+ }
+ }
+ await formApi.setValues({
+ ...data,
+ checkFlag: config.checkFlag,
+ needReportQuantity: config.needReportQuantity,
+ });
originalSnapshot.value = JSON.stringify(await getAlignedData());
}
@@ -377,6 +413,17 @@
<Form class="feedback-tab__form" />
+ <!-- 鎶ュ伐鍊掕鏃讹紙宸ュ簭閰嶇疆绛夊緟鏃堕暱鏃跺睍绀猴級 -->
+ <div v-if="waitDuration" class="feedback-tab__params">
+ <div class="feedback-tab__params-title">鎶ュ伐鍊掕鏃�</div>
+ <WaitCountdown
+ :task-id="waitTaskId"
+ :wait-duration="waitDuration"
+ :wait-start-time="waitStartTime"
+ :disabled="!isEditable"
+ />
+ </div>
+
<!-- 宸ヨ壓鍙傛暟锛堜换鍔$粦瀹氬弬鏁版椂灞曠ず锛屽繀濉弬鏁版湭濉細琚悗绔嫤鎴級 -->
<div v-if="paramDetails.length" class="feedback-tab__params">
<div class="feedback-tab__params-title">宸ヨ壓鍙傛暟</div>
--
Gitblit v1.9.3