fix bugs and added some feature for withdraw handling

This commit is contained in:
2026-07-19 15:49:52 +03:30
parent b446c21afc
commit 3cb1e1a0b0
17 changed files with 442 additions and 58 deletions
+8 -2
View File
@@ -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, setBannerEnabledFromSettings, setStoreModeFromSettings } from '@/utils/config'
import { applyBannerEnabledFromRows, applyTrackingSystemsEnabledFromRows, setBannerEnabledFromSettings, setStoreModeFromSettings, setTrackingSystemsEnabledFromSettings } from '@/utils/config'
import {
EDITABLE_SETTING_GROUPS,
SYSTEM_SETTING_GROUPS,
@@ -424,7 +424,10 @@ async function initConfig() {
baseData.value = rows.map(normalizeSettingRow)
if (isSystemMode.value) {
applyBannerEnabledFromRows(baseData.value)
applyTrackingSystemsEnabledFromRows(baseData.value)
} else {
applyBannerEnabledFromRows(baseData.value)
applyTrackingSystemsEnabledFromRows(baseData.value)
const storeRow = baseData.value.find((row) => row.key === 'is_store')
if (storeRow) {
setStoreModeFromSettings(isSwitchOn(storeRow.value))
@@ -535,9 +538,12 @@ async function saveSettingRow(row: Const) {
setStoreModeFromSettings(isSwitchOn(value))
refreshMenuAfterStoreChange()
}
if (row.key === 'banner_enabled' && isSystemMode.value) {
if (row.key === 'banner_enabled') {
setBannerEnabledFromSettings(isSwitchOn(value))
}
if (row.key === 'tracking_systems_enabled') {
setTrackingSystemsEnabledFromSettings(isSwitchOn(value))
}
savedFlashIds.value.add(id)
if (saveTimers.has(id)) clearTimeout(saveTimers.get(id))
saveTimers.set(
@@ -12,7 +12,7 @@ export const EDITABLE_SETTING_GROUPS: SettingGroupDef[] = [
title: 'عمومی و برند',
icon: 'vuesax-linear:home-2',
match: (k) =>
/^(name_fa|name_en|bace_url|server_url|logo_|title_pwa|title_fav|open_register|auto_active_customer|store_status|key$)/.test(
/^(name_fa|name_en|bace_url|server_url|logo_|title_pwa|title_fav|open_register|auto_active_customer|store_status|key$|tracking_systems_enabled|banner_enabled)$/.test(
k
)
},
@@ -119,7 +119,7 @@ export const SYSTEM_SETTING_GROUPS: SettingGroupDef[] = [
title: 'عمومی و برند',
icon: 'vuesax-linear:home-2',
match: (k) =>
/^(name_fa|name_en|app_url|admin_url|apk_download_link|banner_enabled|permision__enabled|bace_url|server_url|logo_|title_pwa|title_fav|metal_type|main_metal|unit$|open_register|auto_active_customer|store_status|key$|is_store|group_sms|customer_direct_sms|has_page_earn_money|sms_panel)/.test(
/^(name_fa|name_en|app_url|admin_url|apk_download_link|permision__enabled|bace_url|server_url|logo_|title_pwa|title_fav|metal_type|main_metal|unit$|open_register|auto_active_customer|store_status|key$|is_store|group_sms|customer_direct_sms|has_page_earn_money|sms_panel)/.test(
k
)
},
@@ -176,7 +176,7 @@ export const SYSTEM_SETTING_GROUPS: SettingGroupDef[] = [
id: 'infra',
title: 'زیرساخت',
icon: 'vuesax-linear:cpu',
match: (k) => /^(wss_enabled|sse_path|profit_gold_api_enabled|tracking_systems|tracking_systems_enabled)$/.test(k)
match: (k) => /^(wss_enabled|sse_path|profit_gold_api_enabled)$/.test(k)
},
{
id: 'misc',
@@ -187,6 +187,8 @@ export const HIDDEN_LEGACY_SETTING_KEYS = new Set([
'service_charge_percentage',
'support_messenger',
'support_messenger_id',
// JSON از صفحهٔ اختصاصی «سایت‌های ری‌گیری» مدیریت می‌شود؛ سوییچ نمایش در تنظیمات می‌ماند
'tracking_systems',
])
/** فقط وقتی is_store فعال است در پنل دیده می‌شوند */
@@ -234,6 +236,7 @@ const KEY_TYPE_FALLBACK: Record<string, SettingFieldType> = {
sell_fee: 'price',
fee_free: 'number',
min_withdraw: 'price',
min_deposit: 'price',
min_first_buy: 'price',
minimum_sell: 'price',
gift_for_referrer: 'number',
@@ -514,7 +517,7 @@ const KEY_HELP_FALLBACK: Record<string, string> = {
name_fa:
'نام فارسی برند که در پیامک‌ها، عنوان صفحات و بخش‌های عمومی اپ به مشتری نشان داده می‌شود.',
banner_enabled:
'روشن: منوی «بنرها» در تنظیمات فعال می‌شود و می‌توانید اسلایدر بالای صفحهٔ اصلی اپ را مدیریت کنید. خاموش: بنرها در اپ نشان داده نمی‌شوند.',
'روشن: منوی «بنرها» در ادمین و اسلایدر صفحه اصلی اپ مشتری نمایش داده می‌شود. خاموش: مخفی است.',
permision__enabled:
'روشن: آیتم «مجوز ها» در منوی تنظیمات اپ خانگی (تم جدید) نمایش داده می‌شود. خاموش: مخفی است.',
open_register:
@@ -549,6 +552,8 @@ const KEY_HELP_FALLBACK: Record<string, string> = {
'تعداد اولین سفارش‌های هر کاربر که از کارمزد معاف می‌شوند. صفر یعنی غیرفعال.',
min_withdraw:
'حداقل مبلغ درخواست برداشت (ریال). درخواست‌های کمتر پذیرفته نمی‌شوند.',
min_deposit:
'حداقل مبلغ واریز به کیف پول (ریال). مبالغ کمتر در اپ و درگاه پذیرفته نمی‌شوند.',
min_first_buy:
'حداقل مبلغ اولین خرید هر کاربر (ریال).',
minimum_sell:
@@ -608,9 +613,9 @@ const KEY_HELP_FALLBACK: Record<string, string> = {
support_messengers:
'فقط مواردی که در این لیست ثبت شوند در منوی شناور پشتیبانی اپ مشتری نمایش داده می‌شوند. برای تماس تلفنی یا پیامک، نوع «تماس تلفنی» / «پیامک» را با شماره اضافه کنید.',
tracking_systems:
'لیست JSON سامانه‌های ردیابی/آنالیتیکس در اپ مشتری. هر مورد: type (gtag، gtm، clarity، custom)، id (کد اندازه‌گیری یا شناسه پروژه)، enabled (روشن/خاموش). فقط از صفحه دیپلوی قابل ویرایش است.',
'لیست سایت‌های ری‌گیری (name/url) — از منوی «سایت‌های ری‌گیری» ویرایش کنید.',
tracking_systems_enabled:
'روشن: وقتی tracking_systems پر باشد، اسکریپت‌های ردیابی در اپ مشتری بارگذاری می‌شوند. خاموش: هیچ سامانه ردیابی نمایش داده نمی‌شود — حتی اگر JSON پر باشد.',
'روشن: منوی «سایت‌های ری‌گیری» در ادمین و اپ مشتری نمایش داده می‌شود. خاموش: مخفی است.',
support_messenger:
'پیام‌رسانی که آیکون کناری و دکمه شناور پشتیبانی در اپ مشتری (درباره ما، قوانین، آموزش و راهنمای واریز) به آن هدایت می‌کند.',
support_messenger_id:
@@ -771,6 +776,7 @@ export const KEY_LABEL_FALLBACK: Record<string, string> = {
fee_deduct_from_gold: 'اعمال مبلغ دقیق در معامله مشتری',
fee_free: 'معافیت کارمزد سفارش اول',
min_withdraw: 'حداقل مبلغ برداشت',
min_deposit: 'حداقل مبلغ واریز کیف پول',
min_first_buy: 'حداقل اولین خرید',
minimum_sell: 'حداقل مبلغ فروش (ریال)',
referral_id: 'کد معرف اجباری',
@@ -808,8 +814,8 @@ export const KEY_LABEL_FALLBACK: Record<string, string> = {
send_to_tahesab: 'ارسال خودکار به ته‌حساب (قدیمی)',
send_to_pargar: 'ارسال خودکار به پرگار (قدیمی)',
support_messengers: 'پیام‌رسان‌های پشتیبانی',
tracking_systems: 'سامانه‌های ردیابی',
tracking_systems_enabled: 'نمایش سامانه‌های ردیابی',
tracking_systems: 'سایت‌های ری‌گیری',
tracking_systems_enabled: 'نمایش سایت‌های ری‌گیری',
permision__enabled: 'نمایش منوی مجوزها',
support_messenger: 'پیام‌رسان پشتیبانی',
support_messenger_id: 'شناسه پشتیبانی',
@@ -891,7 +897,7 @@ export const SETTING_EDITABLE_KEYS = new Set([
'invite_link_text',
'jibit_verification',
'main_product_price',
'min_first_buy', 'min_withdraw', 'minimum_sell',
'min_first_buy', 'min_withdraw', 'min_deposit', 'minimum_sell',
'montzar_mobile', 'montzar_open_buy', 'montzar_open_sell',
'montzar_password', 'montzar_price', 'montzar_product_id',
'open_register',