|
|
|
|
@ -1,4 +1,4 @@
|
|
|
|
|
<template>
|
|
|
|
|
<template>
|
|
|
|
|
<view class="page-container">
|
|
|
|
|
<NavBar :title="t('productInbound.createTitle')" />
|
|
|
|
|
|
|
|
|
|
@ -168,7 +168,7 @@
|
|
|
|
|
|
|
|
|
|
<script setup>
|
|
|
|
|
import { computed, ref } from 'vue'
|
|
|
|
|
import { onShow } from '@dcloudio/uni-app'
|
|
|
|
|
import { onLoad, onShow } from '@dcloudio/uni-app'
|
|
|
|
|
import { useI18n } from 'vue-i18n'
|
|
|
|
|
import NavBar from '@/components/common/NavBar.vue'
|
|
|
|
|
import { getTaskDefaultPackagingSchemes } from '@/api/mes/productInbound'
|
|
|
|
|
@ -182,6 +182,7 @@ const taskCode = ref('')
|
|
|
|
|
const selectedTaskData = ref(null)
|
|
|
|
|
const selectedTaskProduct = ref(null)
|
|
|
|
|
const selectedPallets = ref([])
|
|
|
|
|
const editingIndex = ref(null)
|
|
|
|
|
|
|
|
|
|
const warehouseOptions = ref([])
|
|
|
|
|
const warehouseAreaMap = ref({})
|
|
|
|
|
@ -208,7 +209,77 @@ const count = computed(() => {
|
|
|
|
|
})
|
|
|
|
|
const palletCode = computed(() => selectedPallets.value.map((item) => getPalletCode(item)).filter(Boolean).join(', '))
|
|
|
|
|
|
|
|
|
|
function textValue(v) {
|
|
|
|
|
function cloneData(value) {
|
|
|
|
|
if (value === null || value === undefined) return value
|
|
|
|
|
return JSON.parse(JSON.stringify(value))
|
|
|
|
|
}
|
|
|
|
|
function buildSchemeFromItem(item) {
|
|
|
|
|
return {
|
|
|
|
|
id: item?.packagingSchemeRelationId,
|
|
|
|
|
packagingSchemeId: item?.packagingSchemeId,
|
|
|
|
|
packagingSchemeName: item?.packagingSchemeName,
|
|
|
|
|
packageQuantity: item?.packageQuantity,
|
|
|
|
|
palletPackageQuantity: item?.palletPackageQuantity,
|
|
|
|
|
palletTotalQuantity: item?.palletTotalQuantity,
|
|
|
|
|
defaultStatus: 1
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
function normalizeEditPallets(item) {
|
|
|
|
|
return (Array.isArray(item?.pallets) ? item.pallets : []).map((pallet) => ({
|
|
|
|
|
...pallet,
|
|
|
|
|
id: pallet.id || pallet.palletId,
|
|
|
|
|
code: pallet.code || pallet.palletCode,
|
|
|
|
|
palletCode: pallet.palletCode || pallet.code,
|
|
|
|
|
packageCount: Number(pallet.packageCount) || 0,
|
|
|
|
|
warehouseId: pallet.warehouseId,
|
|
|
|
|
areaId: pallet.areaId
|
|
|
|
|
}))
|
|
|
|
|
}
|
|
|
|
|
async function hydrateEditItem(item) {
|
|
|
|
|
if (!item) return
|
|
|
|
|
const scheme = buildSchemeFromItem(item)
|
|
|
|
|
relateTask.value = item.relateTask === true || item.relateTask === 1 || item.relateTask === '1'
|
|
|
|
|
taskId.value = relateTask.value ? item.taskId : null
|
|
|
|
|
taskCode.value = relateTask.value ? (item.taskCode || '') : ''
|
|
|
|
|
selectedTaskData.value = item._selectedTaskData ? cloneData(item._selectedTaskData) : null
|
|
|
|
|
product.value = item._product
|
|
|
|
|
? cloneData(item._product)
|
|
|
|
|
: {
|
|
|
|
|
id: item.productId,
|
|
|
|
|
name: item.productName,
|
|
|
|
|
barCode: item.productBarCode,
|
|
|
|
|
code: item.productBarCode,
|
|
|
|
|
unitName: item.productUnitName,
|
|
|
|
|
images: item.images,
|
|
|
|
|
packagingSchemes: [scheme]
|
|
|
|
|
}
|
|
|
|
|
if (relateTask.value) {
|
|
|
|
|
selectedTaskProduct.value = item._selectedTaskProduct
|
|
|
|
|
? cloneData(item._selectedTaskProduct)
|
|
|
|
|
: {
|
|
|
|
|
productId: item.productId,
|
|
|
|
|
productName: item.productName,
|
|
|
|
|
productCode: item.productBarCode,
|
|
|
|
|
taskDetailIds: item.taskDetailIds,
|
|
|
|
|
packagingSchemes: [scheme]
|
|
|
|
|
}
|
|
|
|
|
if (taskId.value) {
|
|
|
|
|
try {
|
|
|
|
|
const res = await getTaskDefaultPackagingSchemes(taskId.value)
|
|
|
|
|
selectedTaskData.value = res?.data || res || selectedTaskData.value || {}
|
|
|
|
|
taskProductList.value = Array.isArray(selectedTaskData.value?.products) ? selectedTaskData.value.products : []
|
|
|
|
|
} catch (e) {
|
|
|
|
|
taskProductList.value = Array.isArray(selectedTaskData.value?.products) ? selectedTaskData.value.products : []
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
selectedTaskProduct.value = null
|
|
|
|
|
selectedTaskData.value = null
|
|
|
|
|
taskProductList.value = []
|
|
|
|
|
}
|
|
|
|
|
selectedPallets.value = normalizeEditPallets(item)
|
|
|
|
|
await loadAreasForPallets(selectedPallets.value)
|
|
|
|
|
}function textValue(v) {
|
|
|
|
|
if (v === 0) return '0'
|
|
|
|
|
if (v == null) return '-'
|
|
|
|
|
const s = String(v).trim()
|
|
|
|
|
@ -329,6 +400,9 @@ async function loadAreasForPallets(pallets) {
|
|
|
|
|
await Promise.all(warehouseIds.map((id) => loadAreasForWarehouse(id)))
|
|
|
|
|
}
|
|
|
|
|
function handleCancel() {
|
|
|
|
|
const gd = getApp().globalData
|
|
|
|
|
gd._productInboundEditIndex = null
|
|
|
|
|
gd._productInboundEditItem = null
|
|
|
|
|
uni.navigateBack()
|
|
|
|
|
}
|
|
|
|
|
function handleConfirm() {
|
|
|
|
|
@ -386,14 +460,35 @@ function handleConfirm() {
|
|
|
|
|
count: (Number(pallet.packageCount) || 0) * (packageQuantity.value || 1)
|
|
|
|
|
})),
|
|
|
|
|
images: product.value.images,
|
|
|
|
|
_product: { ...product.value }
|
|
|
|
|
_product: { ...product.value },
|
|
|
|
|
_selectedTaskProduct: selectedTaskProduct.value ? { ...selectedTaskProduct.value } : null,
|
|
|
|
|
_selectedTaskData: selectedTaskData.value ? { ...selectedTaskData.value } : null
|
|
|
|
|
}
|
|
|
|
|
const gd = getApp().globalData
|
|
|
|
|
if (!gd._productInboundItems) gd._productInboundItems = []
|
|
|
|
|
const index = Number(editingIndex.value)
|
|
|
|
|
if (Number.isInteger(index) && index >= 0 && index < gd._productInboundItems.length) {
|
|
|
|
|
gd._productInboundItems.splice(index, 1, item)
|
|
|
|
|
} else {
|
|
|
|
|
gd._productInboundItems.push(item)
|
|
|
|
|
}
|
|
|
|
|
if (!getApp().globalData._productInboundItems) getApp().globalData._productInboundItems = []
|
|
|
|
|
getApp().globalData._productInboundItems.push(item)
|
|
|
|
|
gd._productInboundEditIndex = null
|
|
|
|
|
gd._productInboundEditItem = null
|
|
|
|
|
uni.showToast({ title: t('productInbound.productAdded'), icon: 'success', duration: 1000 })
|
|
|
|
|
setTimeout(() => uni.navigateBack(), 700)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
onLoad(async () => {
|
|
|
|
|
const gd = getApp().globalData
|
|
|
|
|
const index = gd?._productInboundEditIndex
|
|
|
|
|
const item = gd?._productInboundEditItem
|
|
|
|
|
if (item && index !== null && index !== undefined) {
|
|
|
|
|
editingIndex.value = Number(index)
|
|
|
|
|
gd._productInboundEditIndex = null
|
|
|
|
|
gd._productInboundEditItem = null
|
|
|
|
|
await hydrateEditItem(item)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
onShow(async () => {
|
|
|
|
|
const gd = getApp().globalData
|
|
|
|
|
const taskResult = gd?._productInboundTaskSelectResult
|
|
|
|
|
|