This commit is contained in:
sajjadtalkhabi
2026-05-21 15:51:32 +03:30
parent 8990ceaddd
commit 74227d5021
71 changed files with 2014 additions and 1666 deletions
@@ -20,15 +20,15 @@
</template>
</TextField>
<SelectField
v-model="form.courseTemplateId"
name="courseTemplateId"
v-model="form.courseId"
name="courseId"
label="دوره مرتبط"
:options="templateOptions"
option-label="title"
option-value="id"
:searchable="true"
:on-search="searchTemplates"
:error="errors.courseTemplateId"
:error="errors.courseId"
@update:model-value="onCourseChange"
/>
<SelectField
@@ -40,7 +40,7 @@
option-value="id"
:searchable="true"
:on-search="searchSessions"
:disabled="!form.courseTemplateId"
:disabled="!form.courseId"
:error="errors.sessionId"
/>
<DatePickerField
@@ -131,8 +131,8 @@ import FileUploader from '@/components/form/FileUploader.vue'
import TextareaField from '@/components/form/TextareaField.vue'
import DatePickerField from '@/components/form/DatePickerField.vue'
import { assignmentSchema } from '@/features/admin/assignments/schema'
import { useAdminCoursesListQuery } from '@/services/query/admin-courses'
import { useAdminSessionsListQuery } from '@/services/query/admin-sessions'
import { useAdminCourseTemplatesListQuery } from '@/services/query/admin-course-templates'
import {
adminAssignmentsKeys,
useAddAdminAssignmentMutation,
@@ -156,7 +156,7 @@ const priorityOptions = Object.entries(ASSIGNMENT_PRIORITY).map(([value, label])
const form = ref({
title: '',
courseTemplateId: '',
courseId: '',
sessionId: '',
startDate: '',
endDate: '',
@@ -173,10 +173,7 @@ const { validate, validateAt, errors, resetErrors } = useYup(schema)
const templateSearch = ref('')
const templateFilters = computed(() => ({ title: templateSearch.value }))
const templatePagination = ref({ page: 1, perPage: 30 })
const { data: templatesResponse } = useAdminCourseTemplatesListQuery(
templateFilters,
templatePagination
)
const { data: templatesResponse } = useAdminCoursesListQuery(templateFilters, templatePagination)
const selectedTemplate = ref(null)
const templateOptions = computed(() => {
const base = templatesResponse.value?.data ?? []
@@ -189,11 +186,11 @@ const templateOptions = computed(() => {
const sessionSearch = ref('')
const sessionFilters = computed(() => ({
title: sessionSearch.value,
courseTemplateId: form.value.courseTemplateId,
courseId: form.value.courseId,
}))
const sessionPagination = ref({ page: 1, perPage: 30 })
const { data: sessionsResponse } = useAdminSessionsListQuery(sessionFilters, sessionPagination, {
enabled: () => !!form.value.courseTemplateId,
enabled: () => !!form.value.courseId,
})
const selectedSession = ref(null)
const sessionOptions = computed(() => {
@@ -212,7 +209,7 @@ const searchSessions = useDebounce((q) => {
}, 400)
const onCourseChange = (value) => {
form.value.courseTemplateId = value
form.value.courseId = value
form.value.sessionId = ''
selectedSession.value = null
}
@@ -223,13 +220,13 @@ const { data: existingAssignment } = useAdminAssignmentQuery(assignmentId, {
watch(existingAssignment, (assignment) => {
if (!assignment) return
const tpl = assignment.courseTemplate
const tpl = assignment.course
const sessionEntity = assignment.session
if (tpl) selectedTemplate.value = tpl
if (sessionEntity) selectedSession.value = sessionEntity
form.value = {
title: assignment.title || '',
courseTemplateId: tpl?.id || assignment.courseTemplateId || '',
courseId: tpl?.id || assignment.courseId || '',
sessionId: sessionEntity?.id || assignment.sessionId || '',
startDate: assignment.startDate || '',
endDate: assignment.endDate || '',
@@ -16,7 +16,7 @@
<p class="assignment-details__sub">
<span>
دوره:
{{ assignment.courseTemplate?.title || assignment.courseTemplateTitle || '—' }}
{{ assignment.course?.title || assignment.courseTitle || '—' }}
</span>
<span class="assignment-details__sep">|</span>
<span>جلسه: {{ assignment.session?.title || assignment.sessionTitle || '—' }}</span>
@@ -35,7 +35,7 @@
<div class="submission-details__assignment-meta">
<span>ترم: {{ submission.termTitle || '—' }}</span>
<span class="submission-details__sep">|</span>
<span>دوره: {{ submission.courseTemplateTitle || '—' }}</span>
<span>دوره: {{ submission.courseTitle || '—' }}</span>
<span class="submission-details__sep">|</span>
<span>جلسه: {{ submission.sessionTitle || '—' }}</span>
<span class="submission-details__sep">|</span>