fix lable of katod

This commit is contained in:
2026-06-30 10:28:05 +03:30
parent c7a0ef6b64
commit 15c43a8ee9
2 changed files with 74 additions and 18 deletions
+48
View File
@@ -607,6 +607,7 @@ export type TransactionTradeProductSource = {
product?: (ProductUnitSource & { title?: string | null }) | null
wallet?: { product?: (ProductUnitSource & { title?: string | null }) | null } | null
title?: string | null
order?: unknown
}
/** محصول معامله‌شده — نه لزوماً همان کیف پول (مثلاً خرید مفتول با کیف کاتد) */
@@ -654,6 +655,53 @@ export function getTransactionTradePriceLabel(product?: (ProductUnitSource & { t
return `قیمت هر ${getWeightUnit()} ${getTradePriceUnitLabel()}`
}
/** برچسب «موجودی کیف …» برای سطر موجودی فلز در جزئیات معامله */
export function getTransactionMetalWalletBalanceLabel(
item?: TransactionTradeProductSource | null,
): string {
if (!item) {
return getGoldWalletLabel()
}
const tradeProduct = item.order ? resolveTransactionTradeProduct(item) : null
const walletProduct = item.wallet?.product
const tradeTitle = (tradeProduct?.title ?? '').trim()
const walletTitle = (walletProduct?.title ?? '').trim()
if (tradeTitle) {
if (!walletTitle) {
return `موجودی کیف ${tradeTitle}`
}
return `موجودی ${tradeTitle}`
}
if (walletTitle) {
return `موجودی ${walletTitle}`
}
return getGoldWalletLabel(item.wallet?.product?.group_type)
}
/** واحد نمایش موجودی فلز در جزئیات معامله */
export function getTransactionMetalWalletBalanceUnit(
item?: TransactionTradeProductSource | null,
): string {
const tradeProduct = item?.order ? resolveTransactionTradeProduct(item) : null
const walletProduct = item?.wallet?.product
const product = tradeProduct?.title ? tradeProduct : walletProduct
if (product && usesQuantityTrade(product)) {
return getProductQuantityUnit(product)
}
if (product?.title) {
return getWeightUnit()
}
return getWeightUnit()
}
/** وزن کل زیر مقدار مبادله‌شده — فقط محصول تعدادی (نه trade_by_quantity) */
export function shouldShowTransactionTotalWeightLine(product?: ProductUnitSource | null) {
if (!product || usesQuantityTrade(product) || !hasProductUnitWeight(product)) {
@@ -60,29 +60,23 @@
ریال
</div>
</div>
<div v-if="item.wallet?.product" :class="variant === 'desktop' ? 'dtxn-detail__row' : 'flex justify-between mb-3'">
<div
v-if="showMetalWalletBalance"
:class="variant === 'desktop' ? 'dtxn-detail__row' : 'flex justify-between mb-3'"
>
<div :class="variant === 'desktop' ? 'dtxn-detail__label' : 'text-primary'">
موجودی {{ item.wallet.product.title }}:
{{ metalWalletBalanceLabel }}:
</div>
<div class="flex flex-col items-end text-xs text-yellow-700">
<div class="flex items-center">
<div class="text-base ml-1">{{ formatGoldAmount(item.balance_gold) }}</div>
{{ getProductQuantityUnit(item.wallet.product) }}
{{ metalWalletBalanceUnit }}
</div>
<div v-if="getProductUnitWeightLabel(item.wallet.product)" class="text-gray-500">
هر عدد {{ getProductUnitWeightLabel(item.wallet.product) }}
<div v-if="getProductUnitWeightLabel(metalWalletProduct)" class="text-gray-500">
هر عدد {{ getProductUnitWeightLabel(metalWalletProduct) }}
</div>
</div>
</div>
<div v-else :class="variant === 'desktop' ? 'dtxn-detail__row' : 'flex justify-between mb-3'">
<div :class="variant === 'desktop' ? 'dtxn-detail__label' : 'text-primary'">
{{ getGoldWalletLabel(item.wallet?.product?.group_type) }}:
</div>
<div class="flex text-xs text-yellow-700 items-center">
<div class="text-base ml-1">{{ formatGoldAmount(item.balance_gold) }}</div>
{{ getWeightUnit() }}
</div>
</div>
<div :class="variant === 'desktop' ? 'dtxn-detail__row' : 'flex justify-between mb-3'">
<div :class="variant === 'desktop' ? 'dtxn-detail__label' : 'text-primary'">وضعیت:</div>
<div class="flex text-xs items-center">
@@ -112,13 +106,12 @@ import { formatGoldAmount, usePriceWithoutType } from '@/utils/usePrice'
import type { Transaction } from '@/models/transaction'
import {
getCashWalletLabel,
getGoldWalletLabel,
getMeltedGoldTradeLabel,
getProductQuantityUnit,
getProductTotalWeightLabel,
getProductUnitWeightLabel,
getTransactionMetalWalletBalanceLabel,
getTransactionMetalWalletBalanceUnit,
getTransactionTradePriceLabel,
getWeightUnit,
getMeltedGoldTradeLabel,
resolveTransactionTradeProduct,
shouldShowTransactionTotalWeightLine,
} from '@/utils/productDealMethod'
@@ -136,4 +129,19 @@ const tradeProduct = computed(() => resolveTransactionTradeProduct(props.item))
const tradeProductLabel = computed(
() => (tradeProduct.value?.title ?? '').trim() || getMeltedGoldTradeLabel(),
)
const metalWalletProduct = computed(() => {
if (props.item.order && tradeProduct.value?.title) {
return tradeProduct.value
}
return props.item.wallet?.product ?? tradeProduct.value ?? null
})
const metalWalletBalanceLabel = computed(() => getTransactionMetalWalletBalanceLabel(props.item))
const metalWalletBalanceUnit = computed(() => getTransactionMetalWalletBalanceUnit(props.item))
const showMetalWalletBalance = computed(
() =>
props.item.order != null
|| props.item.wallet?.product != null
|| Math.abs(Number(props.item.balance_gold) || 0) > 0,
)
</script>