| | |
| | | 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'; |
| | |
| | | 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'; |
| | |
| | | /** 添加物料 */ |
| | | 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 : '扫码带出失败'); |
| | | } |
| | | } |
| | | |
| | | /** 编辑物料 */ |
| | |
| | | <div> |
| | | <LineFormModal @success="handleRefresh" /> |
| | | <DetailFormModal @success="handleDetailSuccess" /> |
| | | <TraceScanPanel |
| | | v-if="isEditable" |
| | | title="扫码带出退料明细" |
| | | @confirm="handleTraceConfirm" |
| | | /> |
| | | <Grid table-title="物料信息"> |
| | | <template v-if="isEditable" #toolbar-tools> |
| | | <TableAction |