feat: Implement detailed semester management components

This commit is contained in:
skytek_xinliang
2026-03-30 14:44:53 +08:00
parent edf664fbb8
commit f7413111c0
9 changed files with 16 additions and 16 deletions
+6 -6
View File
@@ -192,7 +192,7 @@
class="detail-panel-wrapper" class="detail-panel-wrapper"
:class="{ 'is-active': !!selectedSemesterId, 'is-mobile': isMobile }" :class="{ 'is-active': !!selectedSemesterId, 'is-mobile': isMobile }"
> >
<master-detail-semester-panel <DetailSidePanel
v-model:detail-form="detailForm" v-model:detail-form="detailForm"
:is-detail-editing="isDetailEditing" :is-detail-editing="isDetailEditing"
:is-mobile="isMobile" :is-mobile="isMobile"
@@ -268,7 +268,7 @@
:class="{ 'form-readonly': isFormReadonly }" :class="{ 'form-readonly': isFormReadonly }"
@submit.prevent="requestSaveConfirmation" @submit.prevent="requestSaveConfirmation"
> >
<master-form-fields <MasterFileFormFields
:departments="departments" :departments="departments"
:enroll-years="enrollYears" :enroll-years="enrollYears"
:field-errors="fieldErrors" :field-errors="fieldErrors"
@@ -284,7 +284,7 @@
<!-- 學期成績紀錄區塊 --> <!-- 學期成績紀錄區塊 -->
<!-- 說明顯示該學生的所有學期紀錄並提供新增與選取功能 --> <!-- 說明顯示該學生的所有學期紀錄並提供新增與選取功能 -->
<master-detail-semester-list <DetailNavigation
:is-mobile="isMobile" :is-mobile="isMobile"
:is-view-mode="isViewMode" :is-view-mode="isViewMode"
:selected-semester-id="selectedSemesterId" :selected-semester-id="selectedSemesterId"
@@ -424,9 +424,9 @@ import { computed, nextTick, ref, watch } from 'vue'
import { useDisplay } from 'vuetify' import { useDisplay } from 'vuetify'
import ConfirmDialog from '@/components/maint/CommonConfirmDialog.vue' import ConfirmDialog from '@/components/maint/CommonConfirmDialog.vue'
import MasterFormFields from '@/components/maint/MasterFormFields.vue' import DetailNavigation from '@/components/maint/master-detail/DetailNavigation.vue'
import MasterDetailSemesterList from '@/components/maint/master-detail/SemesterList.vue' import DetailSidePanel from '@/components/maint/master-detail/DetailSidePanel.vue'
import MasterDetailSemesterPanel from '@/components/maint/master-detail/SemesterPanel.vue' import MasterFileFormFields from '@/components/maint/MasterFileFormFields.vue'
import MntDialogCard from '@/components/maint/MntDialogCard.vue' import MntDialogCard from '@/components/maint/MntDialogCard.vue'
import MntRecordNavToolbar from '@/components/maint/MntRecordNavToolbar.vue' import MntRecordNavToolbar from '@/components/maint/MntRecordNavToolbar.vue'
import PageMaint from '@/components/maint/PageMaint.vue' import PageMaint from '@/components/maint/PageMaint.vue'
+6 -6
View File
@@ -185,7 +185,7 @@
@update:model-value="handleDialogVisibility" @update:model-value="handleDialogVisibility"
> >
<div class="dialog-panel" :class="{ 'is-mobile': isMobile }"> <div class="dialog-panel" :class="{ 'is-mobile': isMobile }">
<master-detail-b-semester-mobile-panel <DetailFullHeightPanel
v-if="isMobile && activeMobilePanel === 'detail'" v-if="isMobile && activeMobilePanel === 'detail'"
:is-form-locked="isFormLocked" :is-form-locked="isFormLocked"
:is-view-mode="isViewMode" :is-view-mode="isViewMode"
@@ -267,7 +267,7 @@
]" ]"
@submit.prevent="requestSaveConfirmation" @submit.prevent="requestSaveConfirmation"
> >
<master-form-fields <MasterFileFormFields
:departments="departments" :departments="departments"
:enroll-years="enrollYears" :enroll-years="enrollYears"
:field-errors="fieldErrors" :field-errors="fieldErrors"
@@ -281,7 +281,7 @@
<v-divider /> <v-divider />
<master-detail-b-semester-section <DetailCollapseGropus
:is-form-locked="isFormLocked" :is-form-locked="isFormLocked"
:is-form-readonly="isFormReadonly" :is-form-readonly="isFormReadonly"
:is-mobile="isMobile" :is-mobile="isMobile"
@@ -503,9 +503,9 @@ import { computed, nextTick, ref, watch } from 'vue'
import { useDisplay } from 'vuetify' import { useDisplay } from 'vuetify'
import ConfirmDialog from '@/components/maint/CommonConfirmDialog.vue' import ConfirmDialog from '@/components/maint/CommonConfirmDialog.vue'
import MasterFormFields from '@/components/maint/MasterFormFields.vue' import DetailCollapseGropus from '@/components/maint/master-detail/DetailCollapseGropus.vue'
import MasterDetailBSemesterMobilePanel from '@/components/maint/master-detail/SemesterMobilePanel.vue' import DetailFullHeightPanel from '@/components/maint/master-detail/DetailFullHeightPanel.vue'
import MasterDetailBSemesterSection from '@/components/maint/master-detail/SemesterSection.vue' import MasterFileFormFields from '@/components/maint/MasterFileFormFields.vue'
import MntDialogCard from '@/components/maint/MntDialogCard.vue' import MntDialogCard from '@/components/maint/MntDialogCard.vue'
import MntRecordNavToolbar from '@/components/maint/MntRecordNavToolbar.vue' import MntRecordNavToolbar from '@/components/maint/MntRecordNavToolbar.vue'
import PageMaint from '@/components/maint/PageMaint.vue' import PageMaint from '@/components/maint/PageMaint.vue'
+4 -4
View File
@@ -266,7 +266,7 @@
]" ]"
@submit.prevent="requestSaveConfirmation" @submit.prevent="requestSaveConfirmation"
> >
<master-form-fields <MasterFileFormFields
:departments="departments" :departments="departments"
:enroll-years="enrollYears" :enroll-years="enrollYears"
:field-errors="fieldErrors" :field-errors="fieldErrors"
@@ -279,7 +279,7 @@
/> />
<v-divider /> <v-divider />
<master-detail-c-course-section <DetailSimpleList
:is-form-locked="isFormLocked" :is-form-locked="isFormLocked"
:is-form-readonly="isFormReadonly" :is-form-readonly="isFormReadonly"
:is-mobile="isMobile" :is-mobile="isMobile"
@@ -490,9 +490,9 @@ import { computed, nextTick, ref, watch } from 'vue'
import { useDisplay } from 'vuetify' import { useDisplay } from 'vuetify'
import ConfirmDialog from '@/components/maint/CommonConfirmDialog.vue' import ConfirmDialog from '@/components/maint/CommonConfirmDialog.vue'
import MasterFormFields from '@/components/maint/MasterFormFields.vue'
import MasterDetailCCourseMobilePanel from '@/components/maint/master-detail/CourseMobilePanel.vue' import MasterDetailCCourseMobilePanel from '@/components/maint/master-detail/CourseMobilePanel.vue'
import MasterDetailCCourseSection from '@/components/maint/master-detail/CourseSection.vue' import DetailSimpleList from '@/components/maint/master-detail/DetailSimpleList.vue'
import MasterFileFormFields from '@/components/maint/MasterFileFormFields.vue'
import MntDialogCard from '@/components/maint/MntDialogCard.vue' import MntDialogCard from '@/components/maint/MntDialogCard.vue'
import MntRecordNavToolbar from '@/components/maint/MntRecordNavToolbar.vue' import MntRecordNavToolbar from '@/components/maint/MntRecordNavToolbar.vue'
import PageMaint from '@/components/maint/PageMaint.vue' import PageMaint from '@/components/maint/PageMaint.vue'