diff --git a/src/views/settings/SettingsView.vue b/src/views/settings/SettingsView.vue
index 7d5f0a1..1f74208 100644
--- a/src/views/settings/SettingsView.vue
+++ b/src/views/settings/SettingsView.vue
@@ -14,7 +14,7 @@
قالبهای پیامک
- شناسه قالبهای sms.ir را وارد کنید. اگر قالبی در پایگاه داده نباشد، با ذخیره ایجاد میشود.
+ شناسه قالب و نام متغیرهای sms.ir را وارد کنید. نام متغیر باید دقیقاً با قالب پنل یکی باشد. اگر قالبی در پایگاه داده نباشد، با ذخیره ایجاد میشود.
@@ -28,29 +28,51 @@
+
{{ template.label }}
-
-
متغیرها:
-
+ نام متغیرها در قالب sms.ir
+
+ :key="variable.slot"
+ class="flex flex-column sm:flex-row sm:align-items-center gap-2"
+ >
+
+ {{ variable.label }}
+
+
+
+
+
+
+
@@ -289,6 +311,16 @@ const confirmImport = () => {
});
};
+const emptyFormEntry = (template) => ({
+ templateId: template?.templateId || '',
+ variables: Object.fromEntries(
+ (template?.variables || []).map((variable) => [
+ variable.slot,
+ variable.name || variable.defaultName || ''
+ ])
+ )
+});
+
const applySmsTemplates = (payload) => {
const data = payload?.data || payload || {};
const templates = Array.isArray(data.smsTemplates) ? data.smsTemplates : [];
@@ -297,7 +329,7 @@ const applySmsTemplates = (payload) => {
delete templateForm[key];
});
templates.forEach((template) => {
- templateForm[template.key] = template.templateId || '';
+ templateForm[template.key] = emptyFormEntry(template);
});
};
@@ -316,11 +348,15 @@ const loadSettings = async () => {
const saveSmsTemplates = async () => {
isSavingSettings.value = true;
try {
- const smsTemplateIds = {};
+ const smsTemplatesPayload = {};
smsTemplates.value.forEach((template) => {
- smsTemplateIds[template.key] = templateForm[template.key] || '';
+ const entry = templateForm[template.key] || emptyFormEntry(template);
+ smsTemplatesPayload[template.key] = {
+ templateId: entry.templateId || '',
+ variables: { ...(entry.variables || {}) }
+ };
});
- const response = await settingsApi.save({ smsTemplates: smsTemplateIds });
+ const response = await settingsApi.save({ smsTemplates: smsTemplatesPayload });
applySmsTemplates(response);
showSuccess('قالبهای پیامک ذخیره شدند.');
} catch (err) {