From ee7ac8df8bce38add1f75baf876b49de94b9e00a Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期五, 16 十月 2026 17:58:33 +0800
Subject: [PATCH] feat(mes): 赋码管理绑定托盘支持未录入批次的袋码

---
 src/views/wls/materialstock/index.vue |   94 +++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 86 insertions(+), 8 deletions(-)

diff --git a/src/views/wls/materialstock/index.vue b/src/views/wls/materialstock/index.vue
index a9353f0..6fc3d37 100644
--- a/src/views/wls/materialstock/index.vue
+++ b/src/views/wls/materialstock/index.vue
@@ -17,8 +17,13 @@
 } from '#/api/mes/wm/materialstock';
 import { $t } from '#/locales';
 import { MdItemTypeTree } from '#/views/mes/md/item/type/components';
-import { WmBatchDetail } from '#/views/wls/batch/components';
+import QrTraceModal from '#/views/mes/pro/components/qr-trace-modal.vue';
 import AreaForm from '#/views/wls/warehouse/area/modules/form.vue';
+import {
+  WmStockAdjustModal,
+  WmStockBagModal,
+  WmStockMoveModal,
+} from './components';
 
 import { useGridColumns, useGridFormSchema } from './data';
 
@@ -27,7 +32,30 @@
   destroyOnClose: true,
 });
 
-const batchDetailRef = ref<InstanceType<typeof WmBatchDetail>>();
+const [StockAdjustModal, stockAdjustModalApi] = useVbenModal({
+  connectedComponent: WmStockAdjustModal,
+  destroyOnClose: true,
+});
+
+const [StockMoveModal, stockMoveModalApi] = useVbenModal({
+  connectedComponent: WmStockMoveModal,
+  destroyOnClose: true,
+});
+
+const [QrTraceQueryModal, qrTraceQueryModalApi] = useVbenModal({
+  connectedComponent: QrTraceModal,
+  destroyOnClose: true,
+});
+
+const [StockBagModal, stockBagModalApi] = useVbenModal({
+  connectedComponent: WmStockBagModal,
+  destroyOnClose: true,
+});
+
+function handleOpenStockBags(row: MesWmMaterialStockApi.MaterialStock) {
+  if (!row.id) return;
+  stockBagModalApi.setData({ materialStockId: row.id }).open();
+}
 
 /** 鍒锋柊琛ㄦ牸 */
 function handleRefresh() {
@@ -58,12 +86,32 @@
   areaModalApi.setData({ formType: 'detail', id: row.areaId }).open();
 }
 
-/** 鎵撳紑鎵规璇︽儏寮圭獥 */
+/** 鎵撳紑搴撳瓨璋冩暣寮圭獥 */
+function handleOpenStockAdjust() {
+  stockAdjustModalApi.setData({}).open();
+}
+
+/** 搴撳瓨璋冩暣鎴愬姛鍥炶皟 */
+function handleStockAdjustSuccess() {
+  gridApi.query();
+}
+
+/** 鎵撳紑绉诲簱寮圭獥 */
+function handleOpenStockMove(row: MesWmMaterialStockApi.MaterialStock) {
+  stockMoveModalApi.setData(row).open();
+}
+
+/** 绉诲簱鎴愬姛鍥炶皟 */
+function handleStockMoveSuccess() {
+  gridApi.query();
+}
+
+/** 鎵撳紑鎵规杩芥函寮圭獥 */
 function handleOpenBatchDetail(row: MesWmMaterialStockApi.MaterialStock) {
-  if (!row.batchId) {
+  if (!row.batchCode) {
     return;
   }
-  batchDetailRef.value?.open(row.batchId);
+  qrTraceQueryModalApi.setData({ code: row.batchCode }).open();
 }
 
 /** 澶勭悊鍐荤粨鐘舵�佸垏鎹� */
@@ -92,7 +140,7 @@
     schema: useGridFormSchema(),
   },
   gridOptions: {
-    columns: useGridColumns(handleFrozenChange),
+    columns: useGridColumns(handleFrozenChange, handleOpenStockMove),
     height: 'auto',
     keepSource: true,
     proxyConfig: {
@@ -120,8 +168,12 @@
 </script>
 
 <template>
-  <Page auto-content-height><AreaModal />
-    <WmBatchDetail ref="batchDetailRef" />
+  <Page auto-content-height>
+    <AreaModal />
+    <QrTraceQueryModal />
+    <StockBagModal />
+    <StockAdjustModal @success="handleStockAdjustSuccess" />
+    <StockMoveModal @success="handleStockMoveSuccess" />
 
     <div class="flex h-full w-full">
       <!-- 宸︿晶鐗╂枡鍒嗙被鏍� -->
@@ -134,6 +186,13 @@
           <template #toolbar-tools>
             <TableAction
               :actions="[
+                {
+                  label: '搴撳瓨璋冩暣',
+                  type: 'default',
+                  icon: ACTION_ICON.EDIT,
+                  auth: ['mes:wm-material-stock:adjust'],
+                  onClick: handleOpenStockAdjust,
+                },
                 {
                   label: $t('ui.actionTitle.export'),
                   type: 'primary',
@@ -168,6 +227,25 @@
             </Button>
             <span v-else>-</span>
           </template>
+          <template #actions="{ row }">
+            <TableAction
+              :actions="[
+                {
+                  label: '鏌ョ湅琚嬬爜',
+                  type: 'link',
+                  ifShow: row.bagDetailSupported,
+                  onClick: handleOpenStockBags.bind(null, row),
+                },
+                {
+                  label: '绉诲簱',
+                  type: 'link',
+                  auth: ['mes:wm-material-stock:move'],
+                  ifShow: !row.frozen,
+                  onClick: handleOpenStockMove.bind(null, row),
+                },
+              ]"
+            />
+          </template>
         </Grid>
       </div>
     </div>

--
Gitblit v1.9.3