From 7b083d5dbc58d7c4fd1b2cb583b14044af9b8b6c Mon Sep 17 00:00:00 2001 From: Kavehhn174 Date: Sat, 15 Aug 2026 23:09:04 +0330 Subject: [PATCH] feat(settings): add class schedule SMS slots without overwriting names Let SuperAdmin map start date, class days, and course time, and keep custom sms.ir names when changing the system value. --- src/views/settings/SettingsView.vue | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/views/settings/SettingsView.vue b/src/views/settings/SettingsView.vue index 7b0fa7f..fa6628f 100644 --- a/src/views/settings/SettingsView.vue +++ b/src/views/settings/SettingsView.vue @@ -98,7 +98,6 @@ optionValue="value" placeholder="انتخاب مقدار داده" class="w-full text-sm" - @change="onSlotChange(template.key, vIdx)" /> @@ -292,7 +291,10 @@ const TEMPLATE_SLOT_DEFS = { { value: 'className', label: 'نام کلاس', defaultName: 'className' }, { value: 'courseName', label: 'نام دوره', defaultName: 'courseName' }, { value: 'fullName', label: 'نام کارآموز', defaultName: 'fullName' }, - { value: 'phoneNumber', label: 'شماره همراه', defaultName: 'mobile' } + { value: 'phoneNumber', label: 'شماره همراه', defaultName: 'mobile' }, + { value: 'classStartDate', label: 'تاریخ شروع کلاس', defaultName: 'classStartDate' }, + { value: 'classDays', label: 'روزهای برگزاری (مثلاً شنبه و دوشنبه)', defaultName: 'classDays' }, + { value: 'courseTime', label: 'ساعت دوره (مثلاً از ۱۹ تا ۲۱)', defaultName: 'courseTime' } ], classReminder: [ { value: 'className', label: 'نام کلاس', defaultName: 'className' }, @@ -300,13 +302,19 @@ const TEMPLATE_SLOT_DEFS = { { value: 'place', label: 'مکان برگزاری', defaultName: 'place' }, { value: 'courseName', label: 'نام دوره', defaultName: 'courseName' }, { value: 'fullName', label: 'نام کاربر', defaultName: 'fullName' }, - { value: 'phoneNumber', label: 'شماره همراه', defaultName: 'mobile' } + { value: 'phoneNumber', label: 'شماره همراه', defaultName: 'mobile' }, + { value: 'classStartDate', label: 'تاریخ شروع کلاس', defaultName: 'classStartDate' }, + { value: 'classDays', label: 'روزهای برگزاری (مثلاً شنبه و دوشنبه)', defaultName: 'classDays' }, + { value: 'courseTime', label: 'ساعت دوره (مثلاً از ۱۹ تا ۲۱)', defaultName: 'courseTime' } ], invoiceCreated: [ { value: 'amount', label: 'مبلغ صورتحساب (تومان)', defaultName: 'PAYMENT_PRICE' }, { value: 'fullName', label: 'نام کارآموز', defaultName: 'FULLNAME' }, { value: 'course', label: 'نام دوره / کلاس', defaultName: 'COURSE' }, - { value: 'phoneNumber', label: 'شماره همراه', defaultName: 'MOBILE' } + { value: 'phoneNumber', label: 'شماره همراه', defaultName: 'MOBILE' }, + { value: 'classStartDate', label: 'تاریخ شروع کلاس', defaultName: 'classStartDate' }, + { value: 'classDays', label: 'روزهای برگزاری (مثلاً شنبه و دوشنبه)', defaultName: 'classDays' }, + { value: 'courseTime', label: 'ساعت دوره (مثلاً از ۱۹ تا ۲۱)', defaultName: 'courseTime' } ] }; @@ -330,14 +338,6 @@ const lockedAtLabel = computed(() => { return `قفل شده در ${date.toLocaleString('fa-IR')}`; }); -const onSlotChange = (templateKey, vIdx) => { - const form = templateForm.value[templateKey]; - if (!form || !form.variables[vIdx]) return; - const currentVar = form.variables[vIdx]; - const defaultName = getSlotDefaultName(templateKey, currentVar.slot); - currentVar.name = defaultName; -}; - const addVariable = (templateKey) => { const form = templateForm.value[templateKey]; if (!form) return; @@ -345,7 +345,7 @@ const addVariable = (templateKey) => { form.variables = []; } const availableSlots = getAvailableSlots(templateKey); - + const existingSlots = new Set(form.variables.map((v) => v.slot)); const unusedSlot = availableSlots.find((s) => !existingSlots.has(s.value)); const selectedSlot = unusedSlot || availableSlots[0] || { value: 'amount', defaultName: 'PAYMENT_PRICE' }; @@ -353,7 +353,7 @@ const addVariable = (templateKey) => { form.variables.push({ id: nextVarId(), slot: selectedSlot.value, - name: selectedSlot.defaultName || '' + name: '' }); };