fix price

This commit is contained in:
2026-06-11 16:30:08 +03:30
parent 4404b4cb92
commit 366157e026
3 changed files with 14 additions and 3 deletions
+2
View File
@@ -25,6 +25,7 @@ declare module 'vue' {
ATag: typeof import('ant-design-vue/es')['Tag']
ATextarea: typeof import('ant-design-vue/es')['Textarea']
ATooltip: typeof import('ant-design-vue/es')['Tooltip']
AUpload: typeof import('ant-design-vue/es')['Upload']
BaseDatePicker: typeof import('./src/components/BasicPacks/BaseDatePicker/src/BaseDatePicker.vue')['default']
Basic: typeof import('./src/components/BasicPacks/BaseDatePicker/src/datePick/demo/basic.vue')['default']
BasicActionSheet: typeof import('./src/components/BasicPacks/BasicActionSheet.vue')['default']
@@ -68,5 +69,6 @@ declare module 'vue' {
TransactionSkeleton: typeof import('./src/components/TransactionSkeleton.vue')['default']
VanActionSheet: typeof import('vant/es')['ActionSheet']
VanDialog: typeof import('vant/es')['Dialog']
VanField: typeof import('vant/es')['Field']
}
}
+8 -2
View File
@@ -14,7 +14,10 @@ function applyPriceOffsetPercent(basePrice: number, offsetPercent?: number | nul
/** قیمت خرید نمایشی محصول (همان مقداری که در لیست و اکشن‌شیت نشان داده می‌شود) */
export function getProductBuyPrice(product: Product): number {
if (isMeltedProductUsingAppPrice(product)) {
const base = applyPriceOffsetPercent(getTradeBuyPrice(lastPrice.value), product.price_offset_percent)
const tradeBuy = getTradeBuyPrice(lastPrice.value)
const base = tradeBuy > 0
? applyPriceOffsetPercent(tradeBuy, product.price_offset_percent)
: (product.price ?? 0)
return base + (product.cash_fee_buy ?? 0)
}
@@ -36,7 +39,10 @@ export function getProductBuyPrice(product: Product): number {
/** قیمت فروش نمایشی محصول آبشده‌ای */
export function getProductSellPrice(product: Product): number {
if (isMeltedProductUsingAppPrice(product)) {
const base = applyPriceOffsetPercent(getTradeSellPrice(lastPrice.value), product.price_offset_percent)
const tradeSell = getTradeSellPrice(lastPrice.value)
const base = tradeSell > 0
? applyPriceOffsetPercent(tradeSell, product.price_offset_percent)
: (product.price ?? 0)
return base - (product.cash_fee_sell ?? 0)
}
+4 -1
View File
@@ -102,6 +102,7 @@ import { isProductPriceInactive } from '@/utils/productPrice'
import { isMetalCommodityGroup, isMeltedTradeGroup } from '@/utils/productCategories'
import { isBoursecuDealProductGroup } from '@/utils/productDealMethod'
import { loadServiceFeeFromSettings } from '@/utils/serviceFee'
import { getLastPrices, startLastPricePolling, stopLastPricePolling } from '@/utils/price'
const activekey = ref('طلا' ||'آبشده')
const showFilter = ref(false)
@@ -210,6 +211,8 @@ async function refreshProducts() {
onMounted(async () => {
try {
loading.value = true
await getLastPrices()
startLastPricePolling()
items.value = await getProducts()
if (items.value?.length) {
@@ -225,7 +228,6 @@ onMounted(async () => {
})
firstItems.value = items.value
await loadServiceFeeFromSettings()
// فقط لیست محصولات هر ۱۰ ثانیه — last فقط در صفحه اصلی poll می‌شود
productListInterval = setInterval(refreshProducts, 10000)
} catch (e) {
@@ -247,6 +249,7 @@ onMounted(async () => {
}
})
onUnmounted(() => {
stopLastPricePolling()
if (productListInterval) {
clearInterval(productListInterval)
productListInterval = undefined