| | |
| | | |
| | | </view> |
| | | |
| | | <view v-if="!isFullyStocked(item)" |
| | | <view |
| | | |
| | | class="stocked-qty-block"> |
| | | |
| | |
| | | |
| | | <up-input :key="'stocked-' + idx" |
| | | |
| | | v-model="item.stockedQuantity" |
| | | v-model="item.operateQuantity" |
| | | |
| | | type="number" |
| | | |
| | |
| | | |
| | | |
| | | |
| | | const { detailFieldRows, summaryFieldRows } = useScanOutFieldRows(contractKind); |
| | | const { detailFieldRows: rawDetailFieldRows, summaryFieldRows: rawSummaryFieldRows } = useScanOutFieldRows( |
| | | contractKind, |
| | | "outbound" |
| | | ); |
| | | const shouldShowOutboundQuantityField = key => { |
| | | if (type.value === QUALITY_TYPE.qualified) |
| | | return key !== "unqualifiedShippedQuantity" && key !== "unqualifiedStockedQuantity"; |
| | | if (type.value === QUALITY_TYPE.unqualified) return key !== "shippedQuantity" && key !== "remainingShippedQuantity"; |
| | | return true; |
| | | }; |
| | | const detailFieldRows = computed(() => |
| | | rawDetailFieldRows.value.filter(row => shouldShowOutboundQuantityField(row.key)) |
| | | ); |
| | | const summaryFieldRows = computed(() => |
| | | rawSummaryFieldRows.value.filter(row => shouldShowOutboundQuantityField(row.key)) |
| | | ); |
| | | |
| | | |
| | | |
| | |
| | | |
| | | |
| | | |
| | | const isFullyStocked = item => { |
| | | |
| | | const s = item?.productStockStatus; |
| | | |
| | | return s == 2 || s === "2"; |
| | | |
| | | }; |
| | | |
| | | |
| | | |
| | | const parseOptionalNumberLocal = raw => { |
| | | |
| | | if (raw === null || raw === undefined || raw === "") return null; |
| | |
| | | |
| | | const onStockedQtyBlur = item => { |
| | | |
| | | if (isFullyStocked(item)) return; |
| | | |
| | | const raw = item.stockedQuantity; |
| | | const raw = item.operateQuantity; |
| | | |
| | | if (raw === null || raw === undefined || String(raw).trim() === "") { |
| | | |
| | | item.stockedQuantity = "0"; |
| | | item.operateQuantity = "0"; |
| | | |
| | | return; |
| | | |
| | |
| | | const n = Number(String(raw).trim()); |
| | | |
| | | if (Number.isNaN(n)) { |
| | | |
| | | item.stockedQuantity = defaultStockedQuantityFromRow(item); |
| | | if (type.value === QUALITY_TYPE.unqualified) { |
| | | const unqualifiedInbound = parseOptionalNumber(item.unqualifiedStockedQuantity) ?? 0; |
| | | const unqualifiedOutbound = parseOptionalNumber(item.unqualifiedShippedQuantity) ?? 0; |
| | | item.operateQuantity = String(Math.max(0, unqualifiedInbound - unqualifiedOutbound)); |
| | | } else { |
| | | item.operateQuantity = defaultStockedQuantityFromRow(item, "outbound"); |
| | | } |
| | | |
| | | return; |
| | | |
| | | } |
| | | |
| | | item.stockedQuantity = String(Math.max(0, n)); |
| | | item.operateQuantity = String(Math.max(0, n)); |
| | | |
| | | }; |
| | | |
| | |
| | | |
| | | if (row.key === "remainingQuantity") { |
| | | |
| | | const v = |
| | | |
| | | item.remainingQuantity ?? |
| | | |
| | | item.remaining_quantity ?? |
| | | |
| | | item.remainQuantity ?? |
| | | |
| | | item.remain_quantity; |
| | | const v = item.remainingQuantity; |
| | | |
| | | return emptyDash(v); |
| | | |
| | | } |
| | | if (row.key === "remainingShippedQuantity") { |
| | | const v = item.remainingShippedQuantity; |
| | | return emptyDash(v); |
| | | } |
| | | if (row.key === "shippedQuantity") { |
| | | const v = item.shippedQuantity; |
| | | return emptyDash(v); |
| | | } |
| | | if (row.key === "unqualifiedShippedQuantity") { |
| | | const v = |
| | | item.unqualifiedShippedQuantity ?? |
| | | item.unQualifiedShippedQuantity ?? |
| | | item.unqualifiedShippedQty ?? |
| | | item.unqualifiedOutboundQuantity; |
| | | return emptyDash(v); |
| | | } |
| | | if (row.key === "stockedQuantity") { |
| | | const v = item.stockedQuantity; |
| | | return emptyDash(v); |
| | | } |
| | | if (row.key === "unqualifiedStockedQuantity") { |
| | | const v = item.unqualifiedStockedQuantity; |
| | | return emptyDash(v); |
| | | } |
| | | |
| | | if (row.key === "availableQuality") { |
| | |
| | | recordList.value = res.data.map(row => ({ |
| | | |
| | | ...row, |
| | | |
| | | stockedQuantity: defaultStockedQuantityFromRow(row), |
| | | unqualifiedShippedQuantity: |
| | | row.unqualifiedShippedQuantity ?? |
| | | row.unQualifiedShippedQuantity ?? |
| | | row.unqualifiedShippedQty ?? |
| | | row.unqualifiedOutboundQuantity, |
| | | unqualifiedStockedQuantity: |
| | | row.unqualifiedStockedQuantity ?? |
| | | row.unQualifiedStockedQuantity ?? |
| | | row.unqualifiedStockedQty ?? |
| | | row.unqualifiedInboundQuantity, |
| | | operateQuantity: |
| | | type.value === QUALITY_TYPE.unqualified |
| | | ? String( |
| | | Math.max( |
| | | 0, |
| | | (parseOptionalNumber( |
| | | row.unqualifiedStockedQuantity ?? |
| | | row.unQualifiedStockedQuantity ?? |
| | | row.unqualifiedStockedQty ?? |
| | | row.unqualifiedInboundQuantity |
| | | ) ?? 0) - |
| | | (parseOptionalNumber( |
| | | row.unqualifiedShippedQuantity ?? |
| | | row.unQualifiedShippedQuantity ?? |
| | | row.unqualifiedShippedQty ?? |
| | | row.unqualifiedOutboundQuantity |
| | | ) ?? 0) |
| | | ) |
| | | ) |
| | | : defaultStockedQuantityFromRow(row, "outbound"), |
| | | |
| | | })); |
| | | |