From 08bb5d242135e2c1f0fc17d2b5f7ae548275a3a2 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 28 八月 2026 17:15:33 +0800
Subject: [PATCH] feat(mes): 实现临时码预生成和补录功能
---
src/views/mes/pro/batch/index.vue | 67 ++++++++++++++++++++++++++++-----
1 files changed, 57 insertions(+), 10 deletions(-)
diff --git a/src/views/mes/pro/batch/index.vue b/src/views/mes/pro/batch/index.vue
index 73dfe65..99ff585 100644
--- a/src/views/mes/pro/batch/index.vue
+++ b/src/views/mes/pro/batch/index.vue
@@ -6,7 +6,7 @@
import { MesProBatchStatusEnum } from "@vben/constants";
import { downloadFileFromBlobPart } from "@vben/utils";
- import { Button, message } from "ant-design-vue";
+ import { Button, message, Modal, Tag } from "ant-design-vue";
import { ACTION_ICON, TableAction, useVbenVxeGrid } from "#/adapter/vxe-table";
import {
@@ -20,10 +20,16 @@
import { useGridColumns, useGridFormSchema } from "./data";
import Form from "./modules/form.vue";
+ import PreGenerateModal from "./modules/pre-generate.vue";
import QrTraceModal from "../components/qr-trace-modal.vue";
const [FormModal, formModalApi] = useVbenModal({
connectedComponent: Form,
+ destroyOnClose: true,
+ });
+
+ const [PreGenerateModalApi, preGenerateModalApi] = useVbenModal({
+ connectedComponent: PreGenerateModal,
destroyOnClose: true,
});
@@ -42,23 +48,47 @@
qrTraceQueryModalApi.open();
}
- /** 鏌ョ湅浜岀淮鐮侊紙琛屽唴棰勫~鐮佸�硷級 */
+ /** 鑾峰彇鎵规鏄剧ず鐢ㄧ殑鐮佸�硷紙姝e紡鎵规鍙蜂紭鍏堬紝鍏舵涓存椂鎵规鐮侊級 */
+ function getDisplayCode(row: MesProBatchApi.Batch) {
+ return row.code || row.tempCode || "";
+ }
+
+ /** 鏌ョ湅浜岀淮鐮侊紙琛屽唴棰勫~鐮佸�硷紝涓存椂鎵规鐢ㄤ复鏃舵壒娆$爜锛� */
function handleViewQr(row: MesProBatchApi.Batch) {
- qrTraceQueryModalApi.setData({ code: row.code }).open();
+ qrTraceQueryModalApi.setData({ code: getDisplayCode(row) }).open();
}
/** 鎵撳嵃鏁村浜岀淮鐮侊紙鎵规鍥� + 鍏ㄩ儴鎵樼洏鍥� ZIP锛� */
async function handlePrintQrSet(row: MesProBatchApi.Batch) {
const data = await exportBatchQr(row.id!);
downloadFileFromBlobPart({
- fileName: `鎵规浜岀淮鐮�-${row.code}.zip`,
+ fileName: `鎵规浜岀淮鐮�-${getDisplayCode(row)}.zip`,
source: data,
+ });
+ }
+
+ /** 棰勭敓鎴愭壒娆′簩缁寸爜鎴愬姛锛氬睍绀虹敓鎴愮殑涓存椂鎵规鐮� */
+ function handlePreGenerateSuccess(result: { id: number; tempCode: string }[]) {
+ Modal.success({
+ title: "棰勭敓鎴愪复鏃舵壒娆$爜鎴愬姛",
+ content: result.map((item) => item.tempCode).join("\n"),
+ centered: true,
});
}
/** 鏂板鎵规 */
function handleCreate() {
formModalApi.setData({ formType: "create" }).open();
+ }
+
+ /** 涓存椂鎵规琛ュ綍姝e紡淇℃伅 */
+ function handleFillInfo(row: MesProBatchApi.Batch) {
+ formModalApi.setData({ formType: "fill", id: row.id }).open();
+ }
+
+ /** 棰勭敓鎴愭壒娆′簩缁寸爜 */
+ function handlePreGenerate() {
+ preGenerateModalApi.open();
}
/** 鏌ョ湅璇︽儏 */
@@ -74,7 +104,7 @@
/** 鍒犻櫎鎵规 */
async function handleDelete(row: MesProBatchApi.Batch) {
await deleteBatch(row.id!);
- message.success($t("ui.actionMessage.deleteSuccess", [row.code]));
+ message.success($t("ui.actionMessage.deleteSuccess", [getDisplayCode(row)]));
handleRefresh();
}
@@ -129,10 +159,17 @@
<template>
<Page auto-content-height>
<FormModal @success="handleRefresh" />
+ <PreGenerateModalApi @success="handlePreGenerateSuccess" />
<QrTraceQueryModal />
<Grid table-title="鐢熶骇鎵规鍒楄〃">
<template #toolbar-tools>
<TableAction :actions="[
+ {
+ label: '棰勭敓鎴愪簩缁寸爜',
+ icon: ACTION_ICON.ADD,
+ auth: ['mes:pro-batch:create'],
+ onClick: handlePreGenerate,
+ },
{
label: $t('ui.actionTitle.create', ['鎵规']),
type: 'primary',
@@ -157,8 +194,9 @@
</template>
<template #code="{ row }">
<Button type="link" @click="handleDetail(row)">
- {{ row.code }}
+ {{ getDisplayCode(row) }}
</Button>
+ <Tag v-if="!row.code" color="warning">寰呰ˉ褰�</Tag>
</template>
<template #actions="{ row }">
<TableAction :actions="[
@@ -169,13 +207,22 @@
onClick: handleViewQr.bind(null, row),
},
{
+ label: '琛ュ綍淇℃伅',
+ type: 'link',
+ icon: ACTION_ICON.EDIT,
+ auth: ['mes:pro-batch:update'],
+ ifShow: !row.code,
+ onClick: handleFillInfo.bind(null, row),
+ },
+ {
label: $t('common.edit'),
type: 'link',
icon: ACTION_ICON.EDIT,
auth: ['mes:pro-batch:update'],
ifShow:
- row.status === MesProBatchStatusEnum.DRAFT ||
- row.status === MesProBatchStatusEnum.PRODUCING,
+ (row.status === MesProBatchStatusEnum.DRAFT ||
+ row.status === MesProBatchStatusEnum.PRODUCING) &&
+ !!row.code,
onClick: handleEdit.bind(null, row),
},
{
@@ -188,7 +235,7 @@
row.status === MesProBatchStatusEnum.DRAFT ||
row.status === MesProBatchStatusEnum.CANCELED,
popConfirm: {
- title: $t('ui.actionMessage.deleteConfirm', [row.code]),
+ title: $t('ui.actionMessage.deleteConfirm', [getDisplayCode(row)]),
confirm: handleDelete.bind(null, row),
},
},
@@ -197,7 +244,7 @@
{
label: '寮�濮嬬敓浜�',
auth: ['mes:pro-batch:update'],
- ifShow: row.status === MesProBatchStatusEnum.DRAFT,
+ ifShow: row.status === MesProBatchStatusEnum.DRAFT && !!row.code,
popConfirm: {
title: '纭寮�濮嬬敓浜ц鎵规鍚楋紵',
confirm: () =>
--
Gitblit v1.9.3