liu
6 天以前 ee7ac8df8bce38add1f75baf876b49de94b9e00a
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>