Add numberOfSessions to class form and fix attendance navigation.
Editable session count on the class edit page and corrected redirects back to the attendance list route.
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
:title="$t('attendances.title')"
|
||||
:subtitle="`دوره: ${session.course?.title || '-'} | کلاس: ${session.class?.name || '-'} | تاریخ: ${formatJalali(session.day)} (${session.startTime || ''} تا ${session.endTime || ''})`"
|
||||
>
|
||||
<Button label="بازگشت" icon="pi pi-arrow-left" text severity="secondary" @click="$router.push('/attendances')" />
|
||||
<Button label="بازگشت" icon="pi pi-arrow-left" text severity="secondary" @click="$router.push('/attendance')" />
|
||||
</PageHeader>
|
||||
|
||||
<div class="surface-card p-4 sm:p-5 border-round border-1 border-color shadow-sm mb-3" v-if="session.note">
|
||||
@@ -56,7 +56,7 @@
|
||||
</DataTable>
|
||||
|
||||
<div class="flex justify-content-end gap-2 mt-4 pt-3 border-top-1 border-color">
|
||||
<Button label="انصراف" text severity="secondary" @click="$router.push('/attendances')" />
|
||||
<Button label="انصراف" text severity="secondary" @click="$router.push('/attendance')" />
|
||||
<Button
|
||||
:label="$t('attendances.submitAttendance')"
|
||||
icon="pi pi-save"
|
||||
@@ -147,7 +147,7 @@ const handleSubmit = async () => {
|
||||
}));
|
||||
await attendanceApi.recordSessionAttendance(sessionId, payloadList);
|
||||
showSuccess('حضور و غیاب جلسه با موفقیت ثبت شد');
|
||||
router.push('/attendances');
|
||||
router.push('/attendance');
|
||||
} catch (err) {
|
||||
showError(err);
|
||||
} finally {
|
||||
|
||||
@@ -45,6 +45,11 @@
|
||||
<InputNumber v-model="form.freeSpots" :min="0" class="w-full text-sm" placeholder="دستی" />
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-3 flex flex-column gap-2">
|
||||
<label class="font-semibold text-sm">تعداد جلسات</label>
|
||||
<InputNumber v-model="form.numberOfSessions" :min="1" class="w-full text-sm" placeholder="مثلا ۱۲" />
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<div class="flex flex-column gap-2 p-3 border-1 border-color border-round">
|
||||
<div class="flex align-items-center gap-2">
|
||||
@@ -303,6 +308,7 @@ const form = reactive({
|
||||
days: [],
|
||||
startTime: '',
|
||||
endTime: '',
|
||||
numberOfSessions: null,
|
||||
isActive: true,
|
||||
adminNotes: []
|
||||
});
|
||||
@@ -359,6 +365,9 @@ const applyCourseDefaults = (course) => {
|
||||
}
|
||||
if (course.capacity) form.capacity = course.capacity;
|
||||
if (course.price != null) form.tuitionFee = course.price;
|
||||
if (form.numberOfSessions == null && course.sectionCount) {
|
||||
form.numberOfSessions = course.sectionCount;
|
||||
}
|
||||
if (course.sectionCount) defaultSessionCount.value = course.sectionCount;
|
||||
};
|
||||
|
||||
@@ -400,11 +409,16 @@ const fetchData = async () => {
|
||||
days: Array.isArray(data.days) ? data.days.map(Number).filter((day) => day >= 0 && day <= 6) : [],
|
||||
startTime: data.startTime || '',
|
||||
endTime: data.endTime || '',
|
||||
numberOfSessions: data.numberOfSessions ?? null,
|
||||
isActive: data.isActive !== false,
|
||||
adminNotes: Array.isArray(data.adminNotes) ? [...data.adminNotes] : []
|
||||
});
|
||||
students.value = data.students || [];
|
||||
if (data.course?.sectionCount) defaultSessionCount.value = data.course.sectionCount;
|
||||
if (data.numberOfSessions) {
|
||||
defaultSessionCount.value = data.numberOfSessions;
|
||||
} else if (data.course?.sectionCount) {
|
||||
defaultSessionCount.value = data.course.sectionCount;
|
||||
}
|
||||
} else if (queryCourseId) {
|
||||
const linked = courses.value.find((c) => String(c._id) === String(queryCourseId));
|
||||
if (linked) {
|
||||
@@ -443,6 +457,7 @@ const handleSubmit = async () => {
|
||||
days: form.days || [],
|
||||
startTime: form.startTime || '',
|
||||
endTime: form.endTime || '',
|
||||
numberOfSessions: form.numberOfSessions,
|
||||
isActive: form.isActive,
|
||||
adminNotes: (form.adminNotes || []).map((n) => String(n).trim()).filter(Boolean)
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user