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.
This commit is contained in:
2026-08-15 23:09:04 +03:30
parent 84cd291dc2
commit 7b083d5dbc
+14 -14
View File
@@ -98,7 +98,6 @@
optionValue="value"
placeholder="انتخاب مقدار داده"
class="w-full text-sm"
@change="onSlotChange(template.key, vIdx)"
/>
</div>
@@ -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: ''
});
};