fix some bugs
This commit is contained in:
@@ -174,7 +174,7 @@ import SettingValueField from './SettingValueField.vue'
|
||||
import SettingCard from './SettingCard.vue'
|
||||
import { refreshAppModeMenu } from '@/router'
|
||||
import { useUserStore } from '@/store/userStore'
|
||||
import { applyBannerEnabledFromRows, applyTrackingSystemsEnabledFromRows, applyConditionalOrderEnabledFromRows, applyProductFundsEnabledFromRows, applyPriceTriggerEnabledFromRows, applyAppNotificationEnabledFromRows, applyPriceProviderFromRows, applySupportChatMenuEnabledFromRows, setBannerEnabledFromSettings, setConditionalOrderEnabledFromSettings, setProductFundsEnabledFromSettings, setPriceTriggerEnabledFromSettings, setAppNotificationEnabledFromSettings, setPriceProviderFromSettings, setStoreModeFromSettings, setTrackingSystemsEnabledFromSettings } from '@/utils/config'
|
||||
import { applyBannerEnabledFromRows, applyTrackingSystemsEnabledFromRows, applyConditionalOrderEnabledFromRows, applyProductFundsEnabledFromRows, applyPriceTriggerEnabledFromRows, applyAppNotificationEnabledFromRows, applyPriceProviderFromRows, applyPriceChannelAccessFromRows, applySupportChatMenuEnabledFromRows, setBannerEnabledFromSettings, setConditionalOrderEnabledFromSettings, setProductFundsEnabledFromSettings, setPriceTriggerEnabledFromSettings, setAppNotificationEnabledFromSettings, setPriceProviderFromSettings, setPriceChannelAccessFromSettings, setStoreModeFromSettings, setTrackingSystemsEnabledFromSettings } from '@/utils/config'
|
||||
import {
|
||||
EDITABLE_SETTING_GROUPS,
|
||||
SYSTEM_SETTING_GROUPS,
|
||||
@@ -427,11 +427,13 @@ async function initConfig() {
|
||||
applyPriceTriggerEnabledFromRows(baseData.value)
|
||||
applyAppNotificationEnabledFromRows(baseData.value)
|
||||
applyPriceProviderFromRows(baseData.value)
|
||||
applyPriceChannelAccessFromRows(baseData.value)
|
||||
applySupportChatMenuEnabledFromRows(baseData.value)
|
||||
// در صفحهٔ عادی price_provider و show_to_users_chat (can_edit=0) نیستند — از کل تنظیمات بخوان
|
||||
// در صفحهٔ عادی price_provider و show_to_users_chat و price_channel_access (can_edit=0) نیستند — از کل تنظیمات بخوان
|
||||
if (
|
||||
!baseData.value.some((row) => row.key === 'price_provider') ||
|
||||
!baseData.value.some((row) => row.key === 'show_to_users_chat')
|
||||
!baseData.value.some((row) => row.key === 'show_to_users_chat') ||
|
||||
!baseData.value.some((row) => row.key === 'price_channel_access')
|
||||
) {
|
||||
try {
|
||||
const { getConfiguration } = await import('@/api/configuration')
|
||||
@@ -439,6 +441,7 @@ async function initConfig() {
|
||||
const rows = Array.isArray(all) ? all : []
|
||||
applyPriceProviderFromRows(rows)
|
||||
applySupportChatMenuEnabledFromRows(rows)
|
||||
applyPriceChannelAccessFromRows(rows)
|
||||
} catch {
|
||||
/* کش قبلی میماند */
|
||||
}
|
||||
@@ -505,6 +508,9 @@ function syncMenuFlagsFromSetting(key: string | undefined, value: string) {
|
||||
if (row) row.value = value
|
||||
}
|
||||
}
|
||||
if (key === 'price_channel_access') {
|
||||
setPriceChannelAccessFromSettings(isSwitchOn(value))
|
||||
}
|
||||
}
|
||||
|
||||
function onValueChange(row: Const, value: string) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { Const } from '@/model/configuration'
|
||||
import { conditionalOrderEnabledSetting, isStoreApp, priceProviderSetting, showToUsersChatSetting } from '@/utils/config'
|
||||
import { conditionalOrderEnabledSetting, isStoreApp, priceChannelAccessSetting, priceProviderSetting, showToUsersChatSetting } from '@/utils/config'
|
||||
|
||||
export type SettingFieldType =
|
||||
| 'text'
|
||||
@@ -215,9 +215,24 @@ export function isSettingVisible(key: string | undefined | null): boolean {
|
||||
if ((k.startsWith('montzar_') || k === 'display_montzar') && priceProviderSetting.value !== 'montzar') {
|
||||
return false
|
||||
}
|
||||
// تنظیمات قابلویرایش کانال فقط وقتی دسترسی دیپلوی روشن است
|
||||
if (PRICE_CHANNEL_PANEL_KEYS.has(k) && !priceChannelAccessSetting.value) return false
|
||||
return true
|
||||
}
|
||||
|
||||
/** کلیدهای گروه کانال در تنظیمات عادی (نه دسترسی دیپلوی و نه مقصد/توکن) */
|
||||
const PRICE_CHANNEL_PANEL_KEYS = new Set([
|
||||
'price_channel_enabled',
|
||||
'price_channel_messengers',
|
||||
'price_channel_diff',
|
||||
'price_channel_min_seconds',
|
||||
'price_channel_message_text',
|
||||
'price_channel_footer_id',
|
||||
'price_channel_footer_phone',
|
||||
'price_channel_footer_link',
|
||||
'change_mesghal',
|
||||
])
|
||||
|
||||
export const SETTING_TYPE_OPTIONS = [
|
||||
{ key: 'text', value: 'متن کوتاه' },
|
||||
{ key: 'number', value: 'عدد / شماره' },
|
||||
@@ -262,6 +277,8 @@ const KEY_TYPE_FALLBACK: Record<string, SettingFieldType> = {
|
||||
jibit_enabled: 'switch',
|
||||
register_referral_sms_to_referrer: 'switch',
|
||||
register_referral_bonus_message: 'switch',
|
||||
referral_gift_on_first_order: 'switch',
|
||||
referral_gift_buy_from_montzar: 'switch',
|
||||
open_register: 'switch',
|
||||
sms_panel: 'switch',
|
||||
auto_active_customer: 'switch',
|
||||
@@ -351,6 +368,7 @@ const KEY_TYPE_FALLBACK: Record<string, SettingFieldType> = {
|
||||
deposit_sms_support_number: 'number',
|
||||
zaarbox_price_key: 'select',
|
||||
price_channel_enabled: 'switch',
|
||||
price_channel_access: 'switch',
|
||||
price_channel_messengers: 'multiselect',
|
||||
price_channel_diff: 'price',
|
||||
price_channel_min_seconds: 'number',
|
||||
@@ -651,15 +669,17 @@ const KEY_HELP_FALLBACK: Record<string, string> = {
|
||||
referral_id:
|
||||
'روشن: وارد کردن کد معرف در ثبتنام اجباری است. خاموش: کد معرف اختیاری است.',
|
||||
gift_for_referrer:
|
||||
'مقدار پاداش (معمولاً وزن فلز به گرم) که به کیف معرف واریز میشود. صفر = بدون پاداش. زمان واریز بسته به «پاداش معرف پس از اولین سفارش» است.',
|
||||
'مقدار پاداش (گرم) به کیف معرف. صفر = بدون پاداش. خرید پوشش از همکار با کلید «خرید پاداش معرفی از همکار» کنترل میشود.',
|
||||
gift_for_referral:
|
||||
'مقدار پاداش (معمولاً وزن فلز) که به معرفشونده واریز میشود. صفر = بدون پاداش. زمان واریز بسته به «پاداش معرف پس از اولین سفارش» است.',
|
||||
'مقدار پاداش (گرم) به معرفشونده. صفر = بدون پاداش. خرید پوشش از همکار با کلید «خرید پاداش معرفی از همکار» کنترل میشود.',
|
||||
register_referral_sms_to_referrer:
|
||||
'روشن: پس از ثبتنام کاربر جدید، پیامک اطلاعرسانی برای معرف ارسال میشود. خاموش: پیامکی برای معرف ارسال نمیشود.',
|
||||
register_referral_bonus_message:
|
||||
'روشن: متن پاداش معرف در پیامک خوشآمد ثبتنام گنجانده میشود. خاموش: متن پاداش در پیامک خوشآمد نمیآید.',
|
||||
referral_gift_on_first_order:
|
||||
'روشن: پاداش معرف (gift_for_referrer) و معرفشونده (gift_for_referral) پس از تکمیل اولین سفارش معرفشونده به کیف واریز میشود — فقط اگر مقدار هر پاداش بیشتر از صفر باشد. خاموش: پاداش بلافاصله پس از ثبتنام موفق یا تأیید احراز هویت واریز میشود (باز هم فقط برای مقادیر بیشتر از صفر).',
|
||||
referral_gift_buy_from_montzar:
|
||||
'روشن: اگر منبع قیمت montzar باشد، قبل از واریز پاداش معرف/معرفشونده همان وزن از همکار خرید میشود؛ شکست خرید = واریز نمیشود. خاموش: مثل قبل فقط به کیف واریز میشود بدون خرید از همکار.',
|
||||
referral_limit:
|
||||
'حداکثر تعداد دعوت مجاز برای هر کاربر. خالی = بدون محدودیت.',
|
||||
referral_bonus_amount:
|
||||
@@ -864,6 +884,8 @@ const KEY_HELP_FALLBACK: Record<string, string> = {
|
||||
'تنظیم قدیمی — از «منبع قیمت» استفاده کنید. روشن نگه داشتن توصیه نمیشود.',
|
||||
price_channel_enabled:
|
||||
'روشن: بعد از هر تغییر قیمت، مظنه بهصورت خودکار به کانالهای پیامرسان انتخابشده ارسال میشود.',
|
||||
price_channel_access:
|
||||
'روشن: گروه «ارسال قیمت به کانال» در تنظیمات عادی پنل دیده میشود. خاموش: مخفی است (فقط از تنظیمات پیشرفته).',
|
||||
price_channel_messengers:
|
||||
'کدام پیامرسانها قیمت را دریافت کنند؟ میتوانید چند مورد را انتخاب کنید (بله، تلگرام، روبیکا). برای هر پیامرسان باید توکن بات و «مقصد ارسال» هم پر شده باشد.',
|
||||
price_channel_diff:
|
||||
@@ -933,6 +955,7 @@ export const KEY_LABEL_FALLBACK: Record<string, string> = {
|
||||
minimum_sell: 'حداقل مبلغ فروش (ریال)',
|
||||
referral_id: 'کد معرف اجباری',
|
||||
referral_gift_on_first_order: 'پاداش معرف پس از اولین سفارش',
|
||||
referral_gift_buy_from_montzar: 'خرید پاداش معرفی از همکار',
|
||||
open_register: 'ثبتنام باز',
|
||||
sms_panel: 'پنل پیامک (کیف پول)',
|
||||
customer_direct_sms: 'پیامک تکی به مشتری از لیست',
|
||||
@@ -992,6 +1015,7 @@ export const KEY_LABEL_FALLBACK: Record<string, string> = {
|
||||
deposit_sheba: 'شبا واریز',
|
||||
deposit_sms_support_number: 'شماره تماس پشتیبانی',
|
||||
price_channel_enabled: 'ارسال قیمت به کانال',
|
||||
price_channel_access: 'دسترسی ارسال قیمت به کانال',
|
||||
price_channel_messengers: 'پیامرسانهای ارسال قیمت',
|
||||
price_channel_diff: 'اختلاف قیمت کانال',
|
||||
price_channel_min_seconds: 'حداقل فاصله ارسال (ثانیه)',
|
||||
@@ -1053,6 +1077,7 @@ export const SETTING_LOCKED_KEYS = new Set([
|
||||
'pargar_api_token', 'pargar_password', 'pargar_username',
|
||||
'pargar_item_id_rial', 'pargar_item_id_gold',
|
||||
'telegram_bot_token', 'rubika_bot_token',
|
||||
'price_channel_access',
|
||||
'price_channel_bale_to', 'price_channel_telegram_to', 'price_channel_rubika_to',
|
||||
'unit',
|
||||
'up_price', 'down_price',
|
||||
@@ -1085,7 +1110,7 @@ export const SETTING_EDITABLE_KEYS = new Set([
|
||||
'montzar_mobile', 'montzar_open_buy', 'montzar_open_sell',
|
||||
'montzar_password', 'montzar_product_id',
|
||||
'open_register',
|
||||
'referral_id', 'referral_limit', 'referral_gift_on_first_order',
|
||||
'referral_id', 'referral_limit', 'referral_gift_on_first_order', 'referral_gift_buy_from_montzar',
|
||||
'register_jibit_verify', 'register_referral_bonus_message', 'register_referral_sms_to_referrer',
|
||||
'sell_fee', 'show_last_price', 'show_home_price_when_closed', 'show_gold_ounce_price', 'show_product_details',
|
||||
'show_product_trade_status', 'show_product_card_meta',
|
||||
|
||||
@@ -64,6 +64,9 @@ export const supportChatMenuEnabledSetting = ref(false)
|
||||
/** reactive — سوییچ دیپلوی show_to_users_chat (برای مخفی کردن has_chat در تنظیمات عادی) */
|
||||
export const showToUsersChatSetting = ref(false)
|
||||
|
||||
/** reactive — سوییچ دیپلوی price_channel_access (گروه کانال در تنظیمات عادی) */
|
||||
export const priceChannelAccessSetting = ref(false)
|
||||
|
||||
export const accountingProviderSetting = ref<AccountingProvider>('none')
|
||||
|
||||
let tahesabEnabledFromSettings: boolean | null = null
|
||||
@@ -167,6 +170,10 @@ export function setShowToUsersChatFromSettings(value: boolean): void {
|
||||
showToUsersChatSetting.value = value
|
||||
}
|
||||
|
||||
export function setPriceChannelAccessFromSettings(value: boolean): void {
|
||||
priceChannelAccessSetting.value = value
|
||||
}
|
||||
|
||||
let lastShowToUsersChat = ''
|
||||
let lastHasChat = ''
|
||||
let lastChatApi = ''
|
||||
@@ -273,6 +280,13 @@ export function applyPriceProviderFromRows(
|
||||
}
|
||||
}
|
||||
|
||||
export function applyPriceChannelAccessFromRows(
|
||||
rows: Array<{ key?: string; value?: string | null }>
|
||||
) {
|
||||
const row = rows.find((item) => item.key === 'price_channel_access')
|
||||
if (row) setPriceChannelAccessFromSettings(isSwitchOn(row.value))
|
||||
}
|
||||
|
||||
async function bootstrapSettingsFromApi(): Promise<void> {
|
||||
if (settingsBootstrapped) return
|
||||
|
||||
@@ -295,6 +309,7 @@ async function bootstrapSettingsFromApi(): Promise<void> {
|
||||
applyAppNotificationEnabledFromRows(list)
|
||||
applySupportChatMenuEnabledFromRows(list)
|
||||
applyPriceProviderFromRows(list)
|
||||
applyPriceChannelAccessFromRows(list)
|
||||
setCachedMainMetal(mainMetalRow?.value)
|
||||
const { setCachedMainWalletProductIds } = await import('@/components/mobile/utils/wallet')
|
||||
setCachedMainWalletProductIds(parseMainWalletProductIds(mainWalletRow?.value))
|
||||
|
||||
Reference in New Issue
Block a user