| | |
| | | import type { VxeTableGridOptions } from '#/adapter/vxe-table'; |
| | | import type { MesWmMiscIssueLineApi } from '#/api/mes/wm/miscissue/line'; |
| | | |
| | | import type { TraceResult } from '#/utils/traceLookup'; |
| | | |
| | | import { computed } from 'vue'; |
| | | |
| | | import { useVbenModal } from '@vben/common-ui'; |
| | |
| | | deleteMiscIssueLine, |
| | | getMiscIssueLinePage, |
| | | } from '#/api/mes/wm/miscissue/line'; |
| | | import TraceScanPanel from '#/components/TraceScanPanel.vue'; |
| | | import { $t } from '#/locales'; |
| | | import { findMaterialStocks, traceQuantity } from '#/utils/traceLookup'; |
| | | |
| | | import { useLineGridColumns } from '../data'; |
| | | import LineForm from './line-form.vue'; |
| | |
| | | /** 添加物料 */ |
| | | function handleCreate() { |
| | | lineFormModalApi.setData({ issueId: props.issueId }).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: { |
| | | areaId: stock.areaId, |
| | | batchCode: stock.batchCode, |
| | | itemId: stock.itemId, |
| | | locationId: stock.locationId, |
| | | materialStockId: stock.id, |
| | | quantity: |
| | | quantity && stock.quantity |
| | | ? Math.min(quantity, stock.quantity) |
| | | : (quantity ?? stock.quantity), |
| | | quantityMax: stock.quantity, |
| | | warehouseId: stock.warehouseId, |
| | | }, |
| | | issueId: props.issueId, |
| | | }) |
| | | .open(); |
| | | } catch (e) { |
| | | message.error(e instanceof Error ? e.message : '扫码带出失败'); |
| | | } |
| | | } |
| | | |
| | | /** 编辑物料 */ |
| | |
| | | <template> |
| | | <div> |
| | | <LineFormModal @success="handleRefresh" /> |
| | | <TraceScanPanel |
| | | v-if="isEditable" |
| | | title="扫码带出出库明细" |
| | | @confirm="handleTraceConfirm" |
| | | /> |
| | | <Grid table-title="物料信息"> |
| | | <template v-if="isEditable" #toolbar-tools> |
| | | <TableAction |