| | |
| | | import type { MesWmTransferDetailApi } from '#/api/mes/wm/transfer/detail'; |
| | | import type { MesWmTransferLineApi } from '#/api/mes/wm/transfer/line'; |
| | | |
| | | import type { TraceResult } from '#/utils/traceLookup'; |
| | | |
| | | import { computed, reactive } from 'vue'; |
| | | |
| | | import { useVbenModal } from '@vben/common-ui'; |
| | |
| | | deleteTransferLine, |
| | | getTransferLineList, |
| | | } from '#/api/mes/wm/transfer/line'; |
| | | import TraceScanPanel from '#/components/TraceScanPanel.vue'; |
| | | import { $t } from '#/locales'; |
| | | import { findMaterialStocks, traceQuantity } from '#/utils/traceLookup'; |
| | | import { PrinterLabel } from '#/views/wls/barcode/components'; |
| | | |
| | | import { useLineGridColumns } from '../data'; |
| | |
| | | /** 添加调拨物料 */ |
| | | function handleCreate() { |
| | | lineFormModalApi.setData({ transferId: props.transferId }).open(); |
| | | } |
| | | |
| | | /** 扫码带出:按追溯码匹配库存记录后打开新增调拨行 */ |
| | | async function handleTraceConfirm(trace: TraceResult) { |
| | | try { |
| | | const stocks = await findMaterialStocks(trace); |
| | | 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, |
| | | fromAreaId: stock.areaId, |
| | | fromLocationId: stock.locationId, |
| | | fromWarehouseId: stock.warehouseId, |
| | | itemId: stock.itemId, |
| | | materialStockId: stock.id, |
| | | quantity: |
| | | quantity && stock.quantity |
| | | ? Math.min(quantity, stock.quantity) |
| | | : (quantity ?? stock.quantity), |
| | | quantityMax: stock.quantity, |
| | | }, |
| | | transferId: props.transferId, |
| | | }) |
| | | .open(); |
| | | } catch (e) { |
| | | message.error(e instanceof Error ? e.message : '扫码带出失败'); |
| | | } |
| | | } |
| | | |
| | | /** 编辑调拨物料 */ |
| | |
| | | <div> |
| | | <LineFormModal @success="handleRefresh" /> |
| | | <DetailFormModal @success="handleDetailSuccess" /> |
| | | <TraceScanPanel |
| | | v-if="isEditable" |
| | | title="扫码带出调拨明细" |
| | | @confirm="handleTraceConfirm" |
| | | /> |
| | | <Grid table-title="物料信息"> |
| | | <template v-if="isEditable" #toolbar-tools> |
| | | <TableAction |