diff --git a/src/pages/menuPages/configuration/SupportMessengerSettings.vue b/src/pages/menuPages/configuration/SupportMessengerSettings.vue
new file mode 100644
index 0000000..93f30f0
--- /dev/null
+++ b/src/pages/menuPages/configuration/SupportMessengerSettings.vue
@@ -0,0 +1,176 @@
+
+
+
پشتیبانی پیامرسان
+
+
+
پیامرسان
+
+
+ {{ opt.label }}
+
+
+
در حال ذخیره...
+
+ ذخیره شد
+
+
+
+
+
شناسه / یوزرنیم
+
+
{{ idHelp }}
+
در حال ذخیره...
+
+ ذخیره شد
+
+
+
+
+
متن دکمه
+
+
در حال ذخیره...
+
+ ذخیره شد
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/menuPages/configuration/index.vue b/src/pages/menuPages/configuration/index.vue
index 05c0fb4..f30deb6 100644
--- a/src/pages/menuPages/configuration/index.vue
+++ b/src/pages/menuPages/configuration/index.vue
@@ -66,6 +66,18 @@
+
+
سایر تنظیمات
@@ -90,7 +102,7 @@
@@ -171,13 +183,17 @@ import { loading } from '@/utils'
import { getConfiguration, setConfiguration } from '@/api/configuration'
import SettingValueField from './SettingValueField.vue'
import SettingCard from './SettingCard.vue'
+import SupportMessengerSettings from './SupportMessengerSettings.vue'
import {
SETTING_TYPE_OPTIONS,
formatValueForSave,
helpText,
- resolveSettingFieldType
+ resolveSettingFieldType,
+ SUPPORT_MESSENGER_KEYS
} from './settingTypes'
+const supportMessengerKeySet = new Set(SUPPORT_MESSENGER_KEYS)
+
const settingTypeOptions = SETTING_TYPE_OPTIONS
const statusFilterOptions = [
@@ -270,9 +286,24 @@ const switchRows = computed(() =>
)
const otherRows = computed(() =>
- filteredRows.value.filter((row) => resolveSettingFieldType(row) !== 'switch')
+ filteredRows.value.filter(
+ (row) =>
+ resolveSettingFieldType(row) !== 'switch' &&
+ !supportMessengerKeySet.has(row.key ?? '')
+ )
)
+const supportMessengerBundle = computed(() => {
+ const rows = filteredRows.value.filter((row) => supportMessengerKeySet.has(row.key ?? ''))
+ if (!rows.length) return null
+ const byKey = Object.fromEntries(rows.map((row) => [row.key, row]))
+ return {
+ messenger: byKey.support_messenger as Const | undefined,
+ id: byKey.support_messenger_id as Const | undefined,
+ text: byKey.support_messenger_text as Const | undefined
+ }
+})
+
function rowColSpan(row: Const): number {
return resolveSettingFieldType(row) === 'longtext' ? 24 : 8
}
diff --git a/src/pages/menuPages/configuration/settingTypes.ts b/src/pages/menuPages/configuration/settingTypes.ts
index fcf1d8d..d533906 100644
--- a/src/pages/menuPages/configuration/settingTypes.ts
+++ b/src/pages/menuPages/configuration/settingTypes.ts
@@ -69,7 +69,6 @@ const KEY_TYPE_FALLBACK: Record = {
montzar_closed: 'switch',
montzar_open_buy: 'switch',
montzar_open_sell: 'switch',
- is_requaire_referral: 'switch',
product_update_price_on_list: 'switch',
product_auto_close_open_on_list: 'switch',
payping_fin_sync_enabled: 'switch',
@@ -77,7 +76,21 @@ const KEY_TYPE_FALLBACK: Record = {
store_status: 'select',
credit_rial_price_unit: 'select',
node_client_id: 'text',
- node_shared_secret: 'text'
+ node_shared_secret: 'text',
+ support_messenger_id: 'text',
+ support_messenger_text: 'text',
+ support_messenger: 'select'
+}
+
+const SELECT_LABELS_BY_KEY: Record> = {
+ support_messenger: {
+ bale: 'بله',
+ telegram: 'تلگرام',
+ whatsapp: 'واتساپ',
+ rubika: 'روبیکا',
+ eitaa: 'ایتا',
+ soroush: 'سروش'
+ }
}
const SELECT_OPTIONS_BY_KEY: Record = {
@@ -85,7 +98,39 @@ const SELECT_OPTIONS_BY_KEY: Record = {
referral_id: 'required,',
payping_gateway_name: 'sepal,',
credit_rial_price_unit: 'gram,mesghal,unit',
- store_status: 'باز,بسته'
+ store_status: 'باز,بسته',
+ support_messenger: 'bale,telegram,whatsapp,rubika,eitaa,soroush'
+}
+
+export const SUPPORT_MESSENGER_KEYS = [
+ 'support_messenger',
+ 'support_messenger_id',
+ 'support_messenger_text'
+] as const
+
+export const SUPPORT_MESSENGER_OPTIONS = [
+ { key: 'bale', label: 'بله' },
+ { key: 'telegram', label: 'تلگرام' },
+ { key: 'whatsapp', label: 'واتساپ' },
+ { key: 'rubika', label: 'روبیکا' },
+ { key: 'eitaa', label: 'ایتا' },
+ { key: 'soroush', label: 'سروش' }
+] as const
+
+export function supportMessengerIdPlaceholder(messenger: string): string {
+ switch ((messenger || '').trim().toLowerCase()) {
+ case 'telegram':
+ return 'username بدون @'
+ case 'whatsapp':
+ return '98912xxxxxxx'
+ case 'rubika':
+ case 'eitaa':
+ case 'soroush':
+ return 'username'
+ case 'bale':
+ default:
+ return 'username در ble.ir'
+ }
}
export function resolveSettingFieldType(row: Pick): SettingFieldType {
@@ -111,9 +156,10 @@ export function parseSelectOptions(
}
const opts = source.split(',').map((s) => s.trim())
+ const labels = row.key ? SELECT_LABELS_BY_KEY[row.key] : undefined
return opts.map((opt) => ({
key: opt,
- value: opt === '' ? '(خالی)' : opt
+ value: labels?.[opt] ?? (opt === '' ? '(خالی)' : opt)
}))
}