diff --git a/src/model/product.ts b/src/model/product.ts
index 8859b69..e8636c5 100644
--- a/src/model/product.ts
+++ b/src/model/product.ts
@@ -27,6 +27,7 @@ export interface Product{
show: boolean
show_in_assets?: boolean
show_on_tv?: boolean
+ show_in_list?: boolean
trade_by_quantity?: boolean
override_trading_hours?: boolean
use_last_price_if_zero?: boolean
@@ -40,6 +41,8 @@ export interface Product{
app_price?: boolean
price_formula_enabled?: boolean
price_formula?: string | null
+ tv_price_formula_enabled?: boolean
+ tv_price_formula?: string | null
price: number
price_profit?: number
price_offset_percent?: number
diff --git a/src/pages/menuPages/products/base/components/ProductEditorFormBody.vue b/src/pages/menuPages/products/base/components/ProductEditorFormBody.vue
index 4999804..1be6a6f 100644
--- a/src/pages/menuPages/products/base/components/ProductEditorFormBody.vue
+++ b/src/pages/menuPages/products/base/components/ProductEditorFormBody.vue
@@ -411,6 +411,21 @@
+
+
@@ -590,6 +605,7 @@ import { resolveTradeWeightUnit, weightFieldLabelForUnit } from '@/utils/weightU
import type { DashboardHelp } from '@/pages/dashboard/dashboardSectionCopy'
import DashboardLabelWithHelp from '@/pages/dashboard/components/DashboardLabelWithHelp.vue'
import FormulaPriceSection from './FormulaPriceSection.vue'
+import TvFormulaPriceSection from './TvFormulaPriceSection.vue'
import dayjs from 'dayjs'
import { computed, onMounted, ref, watch } from 'vue'
@@ -669,6 +685,10 @@ const showOnTvHelp: DashboardHelp = {
description: 'روشن: این محصول در صفحه تابلو قیمت مشتری (/tv) نمایش داده میشود.',
}
+const showInListHelp: DashboardHelp = {
+ description: 'روشن: این محصول در صفحه لیست محصولات اپ مشتری نمایش داده میشود.',
+}
+
const autoOpenHelp: DashboardHelp = {
description: 'ساعت شروع معامله این محصول — فقط وقتی ساعت اختصاصی روشن باشد.',
}
@@ -820,6 +840,11 @@ function onFormulaEnabledChange(enabled: boolean) {
}
}
+function onTvFormulaFormPatch(next: Record) {
+ props.form.tv_price_formula_enabled = !!next.tv_price_formula_enabled
+ props.form.tv_price_formula = next.tv_price_formula ?? props.form.tv_price_formula
+}
+
watch(
() => props.methodOption,
(option) => {
diff --git a/src/pages/menuPages/products/base/components/TvFormulaPriceSection.vue b/src/pages/menuPages/products/base/components/TvFormulaPriceSection.vue
new file mode 100644
index 0000000..a70a921
--- /dev/null
+++ b/src/pages/menuPages/products/base/components/TvFormulaPriceSection.vue
@@ -0,0 +1,183 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/menuPages/products/base/index.vue b/src/pages/menuPages/products/base/index.vue
index 44a01fe..97dd592 100644
--- a/src/pages/menuPages/products/base/index.vue
+++ b/src/pages/menuPages/products/base/index.vue
@@ -367,10 +367,13 @@ async function edit(record: Product) {
...productData,
show_in_assets: productData.show_in_assets ?? false,
show_on_tv: productData.show_on_tv ?? false,
+ show_in_list: productData.show_in_list ?? true,
trade_by_quantity: productData.trade_by_quantity ?? false,
app_price: Boolean(productData.app_price),
price_formula_enabled: Boolean(productData.price_formula_enabled),
price_formula: productData.price_formula ?? '',
+ tv_price_formula_enabled: Boolean(productData.tv_price_formula_enabled),
+ tv_price_formula: productData.tv_price_formula ?? '',
override_trading_hours: productData.override_trading_hours ?? false,
has_physical_delivery: productData.has_physical_delivery ?? false,
min_physical_delivery_quantity:
@@ -439,11 +442,14 @@ function resetData() {
app_price: false,
price_formula_enabled: false,
price_formula: '',
+ tv_price_formula_enabled: false,
+ tv_price_formula: '',
file_id: undefined,
file: undefined,
order_limit_enabled: false,
show_in_assets: false,
show_on_tv: false,
+ show_in_list: true,
trade_by_quantity: false,
override_trading_hours: false,
use_last_price_if_zero: false,
@@ -470,6 +476,8 @@ const PRICING_FIELDS = new Set([
'use_last_price_if_zero',
'price_formula',
'price_formula_enabled',
+ 'tv_price_formula',
+ 'tv_price_formula_enabled',
])
const DETAILS_FIELDS = new Set([
'title',
@@ -483,6 +491,7 @@ const DETAILS_FIELDS = new Set([
'trade_by_quantity',
'show_in_assets',
'show_on_tv',
+ 'show_in_list',
])
const FEES_FIELDS = new Set(['cash_fee_buy', 'cash_fee_sell'])
const HOURS_FIELDS = new Set(['override_trading_hours', 'auto_open_at', 'auto_close_at'])
@@ -609,6 +618,10 @@ async function saveProduct() {
payload.app_price = false
payload.price_formula_enabled = false
}
+ if (!payload.show_on_tv) {
+ payload.tv_price_formula_enabled = false
+ }
+
if (weightOption.value === '2') {
payload.amount = 0
if (!isMeltedTradeGroup(payload.group_type)) {