From 7a93a85f75bcfc8001ea1d3b921860806a8209ac Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 29 十月 2026 12:28:48 +0800
Subject: [PATCH] feat(mobile): 新增多个移动端功能模块并优化扫码流程
---
src/views/wls/returnissue/modules/line-list.vue | 43 +++++++++++++++++++++++++++++++++++++++++++
1 files changed, 43 insertions(+), 0 deletions(-)
diff --git a/src/views/wls/returnissue/modules/line-list.vue b/src/views/wls/returnissue/modules/line-list.vue
index 98c6682..9ae3d05 100644
--- a/src/views/wls/returnissue/modules/line-list.vue
+++ b/src/views/wls/returnissue/modules/line-list.vue
@@ -5,6 +5,8 @@
import type { MesWmReturnIssueDetailApi } from '#/api/mes/wm/returnissue/detail';
import type { MesWmReturnIssueLineApi } from '#/api/mes/wm/returnissue/line';
+import type { TraceResult } from '#/utils/traceLookup';
+
import { computed, reactive, ref } from 'vue';
import { useVbenModal } from '@vben/common-ui';
@@ -18,7 +20,9 @@
deleteReturnIssueLine,
getReturnIssueLinePage,
} from '#/api/mes/wm/returnissue/line';
+import TraceScanPanel from '#/components/TraceScanPanel.vue';
import { $t } from '#/locales';
+import { findMaterialStocks, traceQuantity } from '#/utils/traceLookup';
import { BarcodeDetail, PrinterLabel } from '#/views/wls/barcode/components';
import { useLineGridColumns } from '../data';
@@ -62,6 +66,40 @@
/** 娣诲姞鐗╂枡 */
function handleCreate() {
lineFormModalApi.setData({ issueId: props.issueId }).open();
+}
+
+/** 鎵爜甯﹀嚭锛氭寜杩芥函鐮佸尮閰嶇嚎杈瑰簱搴撳瓨璁板綍鍚庢墦寮�鏂板閫�鏂欒 */
+async function handleTraceConfirm(trace: TraceResult) {
+ try {
+ const stocks = await findMaterialStocks(trace, { virtualFilter: 'only' });
+ const stock = stocks.find((item) => (item.quantity ?? 0) > 0) ?? stocks[0];
+ if (!stock) {
+ message.warning('鏈壘鍒拌杩芥函鐮佸搴旂殑绾胯竟搴撳簱瀛樿褰�');
+ return;
+ }
+ const quantity = traceQuantity(trace);
+ lineFormModalApi
+ .setData({
+ defaults: {
+ batchCode: stock.batchCode,
+ batchId: stock.batchId,
+ itemId: stock.itemId,
+ materialDisplayName: [stock.itemName, stock.specification]
+ .filter(Boolean)
+ .join(' | '),
+ materialStockId: stock.id,
+ quantity:
+ quantity && stock.quantity
+ ? Math.min(quantity, stock.quantity)
+ : (quantity ?? stock.quantity),
+ quantityMax: stock.quantity,
+ },
+ issueId: props.issueId,
+ })
+ .open();
+ } catch (e) {
+ message.error(e instanceof Error ? e.message : '鎵爜甯﹀嚭澶辫触');
+ }
}
/** 缂栬緫鐗╂枡 */
@@ -180,6 +218,11 @@
<div>
<LineFormModal @success="handleRefresh" />
<DetailFormModal @success="handleDetailSuccess" />
+ <TraceScanPanel
+ v-if="isEditable"
+ title="鎵爜甯﹀嚭閫�鏂欐槑缁�"
+ @confirm="handleTraceConfirm"
+ />
<Grid table-title="鐗╂枡淇℃伅">
<template v-if="isEditable" #toolbar-tools>
<TableAction
--
Gitblit v1.9.3