-
+
+
+ {{ preview.warnings.length }} {{ inflect("Warning", preview.warnings.length) }}
+
-
-
{{ importPhase }}
-
+
+ {{ warning }}
+
+
+
+
+
+
- {{ importDetail }}
-
+
+ Sync will delete ALL clinical effort records
+
+
+ The source returned 0 records. Syncing will delete all {{ preview.deleteCount }} existing
+ clinical effort records for this term.
+
+
+
+
+
+
+
+ {{ preview.deleteCount }} {{ inflect("record", preview.deleteCount) }} will be deleted
+
+
+
+
+ Clear & Replace mode will delete all existing clinical records before importing.
+
+
+ Sync mode will remove clinical records that no longer exist in the source.
+
+
+
+
+
+
+
+ Nothing to import
+
+
+ There are no changes to make with the selected import mode.
+
+
+
+
+
-
-
+
-
- {{ loadError }}
-
-
-
-
-
-
-
-
-
-
-
-
-
{{ preview.addCount }}
-
To add
-
-
-
{{ preview.updateCount }}
-
To update
-
-
-
- {{ preview.deleteCount }}
-
-
To delete
-
-
-
{{ preview.skipCount }}
-
To skip
-
-
-
- Data as of {{ formatPreviewDateTime(preview.previewGeneratedAt) }}
-
-
-
-
-
-
-
- {{ preview.warnings.length }} {{ inflect("Warning", preview.warnings.length) }}
-
-
-
-
-
-
-
-
- Sync will delete ALL clinical effort records
-
-
- The source returned 0 records. Syncing will delete all {{ preview.deleteCount }} existing
- clinical effort records for this term.
-
-
-
-
-
-
-
- {{ preview.deleteCount }} {{ inflect("record", preview.deleteCount) }} will be deleted
-
-
-
-
- Clear & Replace mode will delete all existing clinical records before importing.
-
-
- Sync mode will remove clinical records that no longer exist in the source.
-
-
-
-
-
-
-
- Nothing to import
-
-
- There are no changes to make with the selected import mode.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+ {{ submitLabel }}
+
+
+
+
diff --git a/VueApp/src/Effort/components/EffortRecordAddDialog.vue b/VueApp/src/Effort/components/EffortRecordAddDialog.vue
index 2c8f0700a..a1bc97a14 100644
--- a/VueApp/src/Effort/components/EffortRecordAddDialog.vue
+++ b/VueApp/src/Effort/components/EffortRecordAddDialog.vue
@@ -122,88 +122,27 @@
-
-
-
-
-
-
-
-
-
-
-
- {{ warningMessage }}
-
-
-
-
- {{ errorMessage }}
-
-
-
-
-
-
- Add Effort
-
-
-
+
@@ -213,10 +152,12 @@ import { ref, computed, watch } from "vue"
import type { QForm } from "quasar"
import { useUnsavedChanges } from "@/composables/use-unsaved-changes"
import StatusBanner from "@/components/StatusBanner.vue"
+import DialogSubmitActions from "./DialogSubmitActions.vue"
+import EffortRecordSharedFields from "./EffortRecordSharedFields.vue"
import { recordService } from "../services/record-service"
import type { CourseOptionDto, EffortTypeOptionDto, RoleOptionDto, InstructorEffortRecordDto } from "../types"
import { filterEffortTypesByCourse } from "../utils/effort-type-filters"
-import { effortValueRules, requiredRule, notesMaxHint } from "../validation"
+import { requiredRule, notesMaxHint } from "../validation"
import "../effort-forms.css"
const props = defineProps<{
diff --git a/VueApp/src/Effort/components/EffortRecordEditDialog.vue b/VueApp/src/Effort/components/EffortRecordEditDialog.vue
index fcdaa09c3..ae8251b4b 100644
--- a/VueApp/src/Effort/components/EffortRecordEditDialog.vue
+++ b/VueApp/src/Effort/components/EffortRecordEditDialog.vue
@@ -66,88 +66,27 @@
lazy-rules="ondemand"
/>
-
-
-
-
-
-
-
-
-
-
-
- {{ warningMessage }}
-
-
-
-
- {{ errorMessage }}
-
-
-
-
-
-
- Save
-
-
-
+
@@ -157,9 +96,11 @@ import { ref, computed, watch } from "vue"
import { QForm } from "quasar"
import { useUnsavedChanges } from "@/composables/use-unsaved-changes"
import StatusBanner from "@/components/StatusBanner.vue"
+import DialogSubmitActions from "./DialogSubmitActions.vue"
+import EffortRecordSharedFields from "./EffortRecordSharedFields.vue"
import { recordService } from "../services/record-service"
import type { EffortTypeOptionDto, RoleOptionDto, InstructorEffortRecordDto } from "../types"
-import { effortValueRules, requiredRule, notesMaxHint } from "../validation"
+import { requiredRule, notesMaxHint } from "../validation"
import "../effort-forms.css"
const props = defineProps<{
diff --git a/VueApp/src/Effort/components/EffortRecordSharedFields.vue b/VueApp/src/Effort/components/EffortRecordSharedFields.vue
new file mode 100644
index 000000000..483479e99
--- /dev/null
+++ b/VueApp/src/Effort/components/EffortRecordSharedFields.vue
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ warningMessage }}
+
+
+
+
+ {{ errorMessage }}
+
+
diff --git a/VueApp/src/Effort/components/EffortReportPage.vue b/VueApp/src/Effort/components/EffortReportPage.vue
new file mode 100644
index 000000000..23c57f691
--- /dev/null
+++ b/VueApp/src/Effort/components/EffortReportPage.vue
@@ -0,0 +1,85 @@
+
+
+
+
+
{{ title }}
+
+
+
+
+
+
+
+
+ {{ subtitle ?? title }}
+
+
+
+
+
+
+
+ {{ emptyMessage ?? "No data found for the selected filters." }}
+
+
+
+
+
+
+ Select filters and click "Generate Report" to view data.
+
+
+
diff --git a/VueApp/src/Effort/components/HarvestDialog.vue b/VueApp/src/Effort/components/HarvestDialog.vue
index fac227558..013f76476 100644
--- a/VueApp/src/Effort/components/HarvestDialog.vue
+++ b/VueApp/src/Effort/components/HarvestDialog.vue
@@ -1,601 +1,522 @@
-
-
-
-
-
- Harvest Term: {{ props.termName }}
-
-
- Import instructors and courses from CREST and Clinical Scheduler
-
-
-
-
-
-
- Generating preview...
-
-
-
-
- Processing Harvest
-
-
-
-
-
- {{ harvestPhase }}
-
- {{ harvestDetail }}
-
-
-
-
-
-
- {{ loadError }}
-
-
-
-
-
-
-
-
-
-
-
{{ preview.summary.totalInstructors }}
-
Instructors
-
-
-
{{ preview.summary.totalCourses }}
-
Courses
-
-
-
{{ preview.summary.totalEffortRecords }}
-
Effort Records
-
+
+
+
+
+
+
+
{{ preview.summary.totalInstructors }}
+
Instructors
-
-
-
-
-
-
- {{ preview.warnings.length }} {{ inflect("Warning", preview.warnings.length) }}
-
+
+
{{ preview.summary.totalCourses }}
+
Courses
-
-
- ...and {{ preview.warnings.length - 5 }} more
+
+
{{ preview.summary.totalEffortRecords }}
+
Effort Records
-
+
+
-
-
-
-
- {{ preview.errors.length }} {{ inflect("Error", preview.errors.length) }} - Harvest may
- fail
-
-
-
- -
+
+
+
+ {{ preview.warnings.length }} {{ inflect("Warning", preview.warnings.length) }}
+
+
+
+ -
+ {{ warning.phase }}: {{ warning.message }}
+
- {{ error.phase }}: {{ error.message }}
-
-
-
-
-
-
+
+
+
-
- Items that will be removed
-
-
- The following items exist in the current term but are not in the harvest sources and will be
- deleted:
-
-
- {{ preview.removedInstructors.length }}
- {{ inflect("instructor", preview.removedInstructors.length) }}
-
- ({{
- preview.removedInstructors
- .slice(0, 5)
- .map((i) => i.fullName)
- .join(" / ")
- }}{{ preview.removedInstructors.length > 5 ? " / ..." : "" }})
-
-
-
+
+
+
+
+
+
+ {{ preview.errors.length }} {{ inflect("Error", preview.errors.length) }} - Harvest may fail
+
+
+
+ -
- {{ preview.removedCourses.length }}
- {{ inflect("course", preview.removedCourses.length) }}
-
- ({{
- preview.removedCourses
- .slice(0, 3)
- .map((c) => `${c.subjCode.trim()} ${c.crseNumb.trim()}`)
- .join(", ")
- }}{{ preview.removedCourses.length > 3 ? "..." : "" }})
-
-
-
-
-
-
+
+
+
+
+
+
+ Items that will be removed
+
+
+ The following items exist in the current term but are not in the harvest sources and will be
+ deleted:
+
+
-
-
-
-
+ {{ preview.removedInstructors.length }}
+ {{ inflect("instructor", preview.removedInstructors.length) }}
+
+ ({{
+ preview.removedInstructors
+ .slice(0, 5)
+ .map((i) => i.fullName)
+ .join(" / ")
+ }}{{ preview.removedInstructors.length > 5 ? " / ..." : "" }})
+
+
+
+ {{ preview.removedCourses.length }}
+ {{ inflect("course", preview.removedCourses.length) }}
+
+ ({{
+ preview.removedCourses
+ .slice(0, 3)
+ .map((c) => `${c.subjCode.trim()} ${c.crseNumb.trim()}`)
+ .join(", ")
+ }}{{ preview.removedCourses.length > 3 ? "..." : "" }})
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+
-
-
-
-
Instructors ({{ preview.crestInstructors.length }})
-
-
-
-
-
-
-
+ Instructors ({{ preview.crestInstructors.length }})
+
-
-
-
-
+
+
-
-
-
-
Courses ({{ preview.crestCourses.length }})
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
Courses ({{ preview.crestCourses.length }})
+
-
-
-
-
+
+
-
-
-
-
Effort Records ({{ preview.crestEffort.length }})
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
Effort Records ({{ preview.crestEffort.length }})
+
-
-
-
-
+
+
-
-
-
-
-
+
+
-
-
Instructors ({{ preview.nonCrestInstructors.length }})
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
Instructors ({{ preview.nonCrestInstructors.length }})
+
-
-
-
-
+
+
-
-
-
-
Courses ({{ preview.nonCrestCourses.length }})
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
Courses ({{ preview.nonCrestCourses.length }})
+
-
-
-
-
+
+
-
-
-
-
Effort Records ({{ preview.nonCrestEffort.length }})
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
Effort Records ({{ preview.nonCrestEffort.length }})
+
-
-
-
-
+
+
-
-
-
-
-
+
+
-
-
Instructors ({{ preview.clinicalInstructors.length }})
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
Instructors ({{ preview.clinicalInstructors.length }})
+
-
-
-
-
+
+
-
-
-
-
Courses ({{ preview.clinicalCourses.length }})
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
Courses ({{ preview.clinicalCourses.length }})
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Loading instructor...
+
+
+
+
+ {{ loadError }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/VueApp/src/Effort/components/PercentAssignmentAddDialog.vue b/VueApp/src/Effort/components/PercentAssignmentAddDialog.vue
index 91d394908..39c5a8734 100644
--- a/VueApp/src/Effort/components/PercentAssignmentAddDialog.vue
+++ b/VueApp/src/Effort/components/PercentAssignmentAddDialog.vue
@@ -30,163 +30,15 @@
class="effort-form"
greedy
>
-
-
-
-
- {{ scope.opt.label }}
-
-
-
- {{ scope.opt.label }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -215,27 +67,12 @@
-
-
-
-
-
- Add
-
-
-
+
@@ -245,9 +82,10 @@ import { ref, computed, watch } from "vue"
import { QForm } from "quasar"
import { useUnsavedChanges } from "@/composables/use-unsaved-changes"
import StatusBanner from "@/components/StatusBanner.vue"
+import DialogSubmitActions from "./DialogSubmitActions.vue"
+import PercentAssignmentFormFields from "./PercentAssignmentFormFields.vue"
import { percentageService } from "../services/percentage-service"
import { usePercentageForm } from "../composables/use-percentage-form"
-import { requiredRule, percentRule } from "../validation"
import "../effort-forms.css"
import type { PercentageDto, PercentAssignTypeDto, UnitDto, CreatePercentageRequest } from "../types"
diff --git a/VueApp/src/Effort/components/PercentAssignmentEditDialog.vue b/VueApp/src/Effort/components/PercentAssignmentEditDialog.vue
index 64037c2f2..34f94eb04 100644
--- a/VueApp/src/Effort/components/PercentAssignmentEditDialog.vue
+++ b/VueApp/src/Effort/components/PercentAssignmentEditDialog.vue
@@ -30,163 +30,15 @@
class="effort-form"
greedy
>
-
-
-
-
- {{ scope.opt.label }}
-
-
-
- {{ scope.opt.label }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -215,27 +67,12 @@
-
-
-
-
-
- Save
-
-
-
+
@@ -245,9 +82,10 @@ import { ref, computed, watch } from "vue"
import { QForm } from "quasar"
import { useUnsavedChanges } from "@/composables/use-unsaved-changes"
import StatusBanner from "@/components/StatusBanner.vue"
+import DialogSubmitActions from "./DialogSubmitActions.vue"
+import PercentAssignmentFormFields from "./PercentAssignmentFormFields.vue"
import { percentageService } from "../services/percentage-service"
import { usePercentageForm } from "../composables/use-percentage-form"
-import { requiredRule, percentRule } from "../validation"
import "../effort-forms.css"
import type { PercentageDto, PercentAssignTypeDto, UnitDto, UpdatePercentageRequest } from "../types"
diff --git a/VueApp/src/Effort/components/PercentAssignmentFormFields.vue b/VueApp/src/Effort/components/PercentAssignmentFormFields.vue
new file mode 100644
index 000000000..12fec1d1a
--- /dev/null
+++ b/VueApp/src/Effort/components/PercentAssignmentFormFields.vue
@@ -0,0 +1,180 @@
+
+
+
+
+
+
+
+ {{ scope.opt.label }}
+
+
+
+ {{ scope.opt.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/VueApp/src/Effort/components/PercentRolloverDialog.vue b/VueApp/src/Effort/components/PercentRolloverDialog.vue
index 37653f24c..8dbe4acba 100644
--- a/VueApp/src/Effort/components/PercentRolloverDialog.vue
+++ b/VueApp/src/Effort/components/PercentRolloverDialog.vue
@@ -1,33 +1,20 @@
-
-
-
-
-
- Percent Assignment Rollover
-
- Roll forward percent assignments to the new academic year
-
-
-
+
-
-
-
-
- Generating preview...
-
-
-
-
- Processing Rollover
-
-
-
-
-
- {{ rolloverPhase }}
-
- {{ rolloverDetail }}
-
-
-
-
-
-
- {{ loadError }}
-
-
-
-
-
-
-
-
-
-
-
{{ preview.assignments.length }}
-
To Roll Forward
-
-
-
{{ preview.existingAssignments.length }}
-
Already Rolled
-
-
-
{{ preview.excludedByAudit?.length ?? 0 }}
-
Excluded
-
+
+
+
+
+
+
+
+
+
{{ preview.assignments.length }}
+
To Roll Forward
-
- Rolling from {{ preview.sourceAcademicYearDisplay }} to
- {{ preview.targetAcademicYearDisplay }}
+
+
{{ preview.existingAssignments.length }}
+
Already Rolled
-
-
-
-
- No assignments to roll forward
-
- There are no percent assignments ending on {{ formatDate(preview.oldEndDate) }} that need to
- be rolled forward.
+
+
{{ preview.excludedByAudit?.length ?? 0 }}
+
Excluded
-
+
+
+ Rolling from {{ preview.sourceAcademicYearDisplay }} to
+ {{ preview.targetAcademicYearDisplay }}
+
+
+
+
+
+ No assignments to roll forward
+
+ There are no percent assignments ending on {{ formatDate(preview.oldEndDate) }} that need to be
+ rolled forward.
+
+
-
-
-
-
-
-
-
Will be rolled forward
-
- {{ preview.assignments.length }}
- {{ inflect("assignment", preview.assignments.length) }} ending
- {{ formatDate(preview.oldEndDate) }} will be extended to
- {{ formatDate(preview.newEndDate) }}
-
+
+
+
+
+
+
+
Will be rolled forward
+
+ {{ preview.assignments.length }}
+ {{ inflect("assignment", preview.assignments.length) }} ending
+ {{ formatDate(preview.oldEndDate) }} will be extended to
+ {{ formatDate(preview.newEndDate) }}
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
Already rolled
-
- {{ preview.existingAssignments.length }}
- {{ inflect("assignment", preview.existingAssignments.length) }} already have a
- successor in {{ preview.targetAcademicYearDisplay }}
-
+
+
+
+
+
+
+
Already rolled
+
+ {{ preview.existingAssignments.length }}
+ {{ inflect("assignment", preview.existingAssignments.length) }} already have a
+ successor in {{ preview.targetAcademicYearDisplay }}
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
Excluded - Post-Harvest Changes
-
- {{ preview.excludedByAudit.length }}
- {{ inflect("assignment", preview.excludedByAudit.length) }} excluded due to
- manual edits/deletes after harvest
-
+
+
+
+
+
+
+
Excluded - Post-Harvest Changes
+
+ {{ preview.excludedByAudit.length }}
+ {{ inflect("assignment", preview.excludedByAudit.length) }} excluded due to manual
+ edits/deletes after harvest
-
-
-
- These assignments will not be rolled forward because someone manually edited or deleted
- a percent assignment of the same type for this instructor after the term was harvested.
-
-
-
-
+
+
+
+ These assignments will not be rolled forward because someone manually edited or deleted a
+ percent assignment of the same type for this instructor after the term was harvested.
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
{{ title }}
+
+
+
+
+
+ {{ props.row.termName }}
+
+
+
+
+ {{ formatDate(props.row.harvestedDate) }}
+
+
+ {{ formatDate(props.row.openedDate) }}
+
+
+ {{ formatDate(props.row.expectedCloseDate) }}
+
+
+ {{ formatDate(props.row.closedDate) }}
+
+
+ {{ emptyMessage }}
+
+
+
+
+
+
{{ title }}
+
+
+
+ {{ term.termName }}
+
+
+
+
+
+
+
+
+
+ {{ emptyMessage }}
+
+
+
+
+
diff --git a/VueApp/src/Effort/composables/use-percentage-form.ts b/VueApp/src/Effort/composables/use-percentage-form.ts
index 2db42c53c..22a3d79ce 100644
--- a/VueApp/src/Effort/composables/use-percentage-form.ts
+++ b/VueApp/src/Effort/composables/use-percentage-form.ts
@@ -194,3 +194,4 @@ type PercentageFormState = {
}
export { usePercentageForm }
+export type { PercentageFormState, TypeOption }
diff --git a/VueApp/src/Effort/pages/DeptSummary.vue b/VueApp/src/Effort/pages/DeptSummary.vue
index 9a341b152..c9990c7f9 100644
--- a/VueApp/src/Effort/pages/DeptSummary.vue
+++ b/VueApp/src/Effort/pages/DeptSummary.vue
@@ -1,168 +1,125 @@
-
-
Teaching Activity Report - Department Summary
-
-
-
-
-
-
-
-
-
- Teaching Activity - Department Summary
-
-
-
-
-
-
-
- No data found for the selected filters.
-
-
-
-
-
-
-
-
- Department summary of effort by instructor
-
-
-
- |
- Instructor
- |
-
- {{ type }}
- |
-
-
-
-
+
+
+
+
+
+ Department summary of effort by instructor
+
+
+
+ |
- | {{ instructor.instructor }} |
-
- {{ getTotalValue(instructor.effortByType ?? {}, type) }}
- |
-
-
-
-
+ Instructor
+
+
+ {{ type }}
+ |
+
+
+
+
+ | {{ instructor.instructor }} |
+
+ {{ getTotalValue(instructor.effortByType ?? {}, type) }}
+ |
+
-
-
- |
- Department Totals:
- |
-
- {{ getTotalValue(dept.departmentTotals, type) }}
- |
-
+
+
-
-
- |
- Number Faculty:
- {{ dept.facultyCount }}
- |
-
+
+
+ |
+ Department Totals:
+ |
+
+ {{ getTotalValue(dept.departmentTotals, type) }}
+ |
+
-
-
- |
- Faculty w/ CLI assigned:
- {{ dept.facultyWithCliCount }}
- Average
- |
-
- {{ getAverageValue(dept.departmentAverages, type) }}
- |
-
-
-
-
-
-
-
+
+
+ |
+ Number Faculty:
+ {{ dept.facultyCount }}
+ |
+
-
-
- Select filters and click "Generate Report" to view data.
-
-
+
+
+ |
+ Faculty w/ CLI assigned:
+ {{ dept.facultyWithCliCount }}
+ Average
+ |
+
+ {{ getAverageValue(dept.departmentAverages, type) }}
+ |
+
+
+
+
+
+
+
-
-
diff --git a/VueApp/src/Effort/pages/MeritSummary.vue b/VueApp/src/Effort/pages/MeritSummary.vue
index 439bb875d..08a79a1c7 100644
--- a/VueApp/src/Effort/pages/MeritSummary.vue
+++ b/VueApp/src/Effort/pages/MeritSummary.vue
@@ -1,148 +1,105 @@
-
-
Merit & Promotion Report - Summary
+
+
+
+
-
+
+
+
+
+ Merit summary of effort
+
+
+
+ |
+
+ {{ type }}
+ |
+
+
+
+
+
+ |
+ Totals:
+ |
+
+ {{ getTotalValue(dept.departmentTotals, type) }}
+ |
+
-
-
+
+
+ |
+ Number Faculty:
+ {{ dept.facultyCount }}
+ |
+
-
-
-
- Merit & Promotion - Summary
-
-
-
-
-
-
-
- No data found for the selected filters.
-
-
-
-
-
-
-
-
-
-
-
- Merit summary of effort
-
-
-
- |
-
- {{ type }}
- |
-
-
-
-
-
- |
- Totals:
- |
-
- {{ getTotalValue(dept.departmentTotals, type) }}
- |
-
-
-
-
- |
- Number Faculty:
- {{ dept.facultyCount }}
- |
-
-
-
-
- |
- Faculty w/ CLI assigned:
- {{ dept.facultyWithCliCount }}
- Average
- |
-
- {{ getAverageValue(dept.departmentAverages, type) }}
- |
-
-
-
-
-
-
-
-
-
-
-
- Select filters and click "Generate Report" to view data.
-
-
+
+
+ |
+ Faculty w/ CLI assigned:
+ {{ dept.facultyWithCliCount }}
+ Average
+ |
+
+ {{ getAverageValue(dept.departmentAverages, type) }}
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Student contact record not found.
+
+
+
diff --git a/VueApp/src/Students/EmergencyContact/pages/EmergencyContactForm.vue b/VueApp/src/Students/EmergencyContact/pages/EmergencyContactForm.vue
index 1e0c56411..64bf4096a 100644
--- a/VueApp/src/Students/EmergencyContact/pages/EmergencyContactForm.vue
+++ b/VueApp/src/Students/EmergencyContact/pages/EmergencyContactForm.vue
@@ -5,6 +5,7 @@ import { useQuasar } from "quasar"
import StatusBanner from "@/components/StatusBanner.vue"
import StatusBadge from "@/components/StatusBadge.vue"
import ContactSection from "../components/ContactSection.vue"
+import EmergencyContactPageShell from "../components/EmergencyContactPageShell.vue"
import PhoneInput from "../components/PhoneInput.vue"
import { useEmergencyContact } from "../composables/use-emergency-contact"
import { emergencyContactService } from "../services/emergency-contact-service"
@@ -226,24 +227,11 @@ onBeforeRouteLeave(() => {
-
-
-
-
-
-
-
-
-
+
+
Emergency Contact: {{ detail.fullName }}
{
-
-
- Student contact record not found.
-
-
+