diff --git a/src/api/index.ts b/src/api/index.ts index 9dae272..f830882 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -3,69 +3,69 @@ * 统一管理所有API模块,避免直接依赖具体文件名 */ -// 公用接口 -export { default as publicApi } from './公用接口'; +export { default as answerSheetScanRecordApi } from './client/answerSheetScanRecord' -// 系统管理相关 -export { default as menuApi } from './菜单管理'; -export { default as systemUserApi } from './系统用户'; -export { default as systemRoleApi } from './系统角色'; - -// 学校管理相关 -export { default as schoolApi } from './学校管理'; -export { default as studentApi } from './学生管理'; -export { default as teacherApi } from './教师管理'; -export { default as subjectApi } from './科目管理'; - -// 考试管理相关 -export { default as examApi } from './考试管理'; -export { default as examStudentApi } from './考试学生管理'; -export { default as examManagerApi } from './考试管理员'; -export { default as examVirtualTeacherApi } from './考试虚拟阅卷老师管理'; -export { default as examReportConfigApi } from './考试报告发布设置管理'; -export { default as examSubjectAnswerSheetTemplateApi } from './考试科目答题卡模板'; -export { default as examSubjectAnswerSheetTemplateQuestionApi } from './考试科目答题卡模板题目'; -export { default as examSubjectAnswerSheetQuestionApi } from './考试科目扫描答题卡题目'; -export { default as examMarkingSettingsApi } from './阅卷设置管理'; -export { default as examStatisticsApi } from './考试统计'; -export { default as examMarkingProgressApi } from './阅卷进度'; -export { default as examMarkingQualityApi } from './阅卷质量'; -export { default as examSubjectManagementApi } from './考试科目管理'; -export { default as examProblemSheetApi } from './问题卷'; -export { default as examScanApi } from './扫描答题卡'; -export { default as examScanV2Api } from './扫描答题卡V2'; -export { default as examAnalysisSettingApi } from './成绩分析设置'; - -// 数据字典相关 -export { default as dictTypeApi } from './数据字典类型'; -export { default as dictItemApi } from './数据字典项'; - -// 答题卡管理相关 -export { default as answerSheetApi } from './答题卡管理'; - -// 基础服务相关 -export { default as fileApi } from './文件管理'; -export { default as fileUploadApi } from './文件上传'; -export { default as authApi } from './认证'; -export { default as schedulerApi } from './定时任务'; -export { default as queueApi } from './消息队列'; -export { default as queryApi } from './查询筛选'; - -// 阅卷相关 -export { default as examMarkingTaskApi } from './阅卷任务'; - -// 统分发布相关 -export { default as scorePublishApi } from './统分发布'; +export * from './client/data-contracts' +// 扫描相关 +export { default as scannerApi } from './client/scanner' +export { default as scannerClientApi } from './client/scannerClient' +export { default as templateClientApi } from './client/template' // 导出所有数据类型 -export * from './data-contracts'; -export * from './client/data-contracts'; +export * from './data-contracts' +// 公用接口 +export { default as publicApi } from './公用接口' +// 学校管理相关 +export { default as schoolApi } from './学校管理' + +export { default as studentApi } from './学生管理' +export { default as schedulerApi } from './定时任务' +export { default as examAnalysisSettingApi } from './成绩分析设置' +export { default as examScanApi } from './扫描答题卡' +export { default as examScanV2Api } from './扫描答题卡V2' +export { default as teacherApi } from './教师管理' +// 数据字典相关 +export { default as dictTypeApi } from './数据字典类型' +export { default as dictItemApi } from './数据字典项' +export { default as fileUploadApi } from './文件上传' +// 基础服务相关 +export { default as fileApi } from './文件管理' +export { default as queryApi } from './查询筛选' +export { default as queueApi } from './消息队列' +export { default as subjectApi } from './科目管理' +// 答题卡管理相关 +export { default as answerSheetApi } from './答题卡管理' +export { default as systemUserApi } from './系统用户' +export { default as systemRoleApi } from './系统角色' +// 统分发布相关 +export { default as scorePublishApi } from './统分发布' // 教师相关 -export { default as teacherScoreAnalysisApi } from './老师成绩分析'; +export { default as teacherScoreAnalysisApi } from './老师成绩分析' +export { default as examStudentApi } from './考试学生管理' -// 扫描相关 -export { default as scannerApi } from './client/scanner'; -export { default as scannerClientApi } from './client/scannerClient'; -export { default as answerSheetScanRecordApi } from './client/answerSheetScanRecord'; -export { default as templateClientApi } from './client/template'; +export { default as examReportConfigApi } from './考试报告发布设置管理' + +export { default as examSubjectAnswerSheetQuestionApi } from './考试科目扫描答题卡题目' +export { default as examSubjectAnswerSheetTemplateApi } from './考试科目答题卡模板' +export { default as examSubjectAnswerSheetTemplateQuestionApi } from './考试科目答题卡模板题目' +export { default as examSubjectManagementApi } from './考试科目管理' +// 考试管理相关 +export { default as examApi } from './考试管理' +export { default as examManagerApi } from './考试管理员' + +export { default as examStatisticsApi } from './考试统计' + +export { default as examVirtualTeacherApi } from './考试虚拟阅卷老师管理' + +// 系统管理相关 +export { default as menuApi } from './菜单管理' +export { default as authApi } from './认证' + +export { default as examProblemSheetApi } from './问题卷' + +// 阅卷相关 +export { default as examMarkingTaskApi } from './阅卷任务' +export { default as examMarkingSettingsApi } from './阅卷设置管理' +export { default as examMarkingQualityApi } from './阅卷质量' +export { default as examMarkingProgressApi } from './阅卷进度' diff --git a/src/components/class-analysis/AverageScoreChart.vue b/src/components/class-analysis/AverageScoreChart.vue index 160ec8d..39fbb93 100644 --- a/src/components/class-analysis/AverageScoreChart.vue +++ b/src/components/class-analysis/AverageScoreChart.vue @@ -40,7 +40,7 @@ watch( (options) => { if (options.length > 0 && !compareClassId.value) { // 排除当前选中的班级,选择第一个其他班级 - const otherClasses = options.filter(item => item.value !== homeStore.selectedClassId) + const otherClasses = options.filter(item => item.value !== homeStore.selectedClassKey) if (otherClasses.length > 0) { compareClassId.value = otherClasses[0].value } @@ -71,7 +71,7 @@ const { queryKey: [ 'class-trend', useUserId(), - homeStore.selectedClassId, + homeStore.selectedClassKey, homeStore.selectedGradeKey, compareClassId, props.selectedSubjectId, @@ -80,7 +80,7 @@ const { queryFn: async () => { const response = await teacherAnalysisTrendUsingPost({ body: { - class_key: homeStore.selectedClassId, + class_key: homeStore.selectedClassKey, grade_key: homeStore.selectedGradeKey, class_key_compare: compareClassId.value!, subject_id: props.selectedSubjectId || 0, @@ -91,7 +91,7 @@ const { return response || { trend_list: [] } }, enabled: computed(() => - !!homeStore.selectedClassId + !!homeStore.selectedClassKey && !!homeStore.selectedGradeKey && !!compareClassId.value, ), diff --git a/src/pages/class-analysis/index.vue b/src/pages/class-analysis/index.vue index 3901459..ecb10bc 100644 --- a/src/pages/class-analysis/index.vue +++ b/src/pages/class-analysis/index.vue @@ -42,7 +42,7 @@ async function queryExamQuestionList(pageNo: number, pageSize: number) { const result = await teacherAnalysisQuestionStatUsingPost({ body: { grade_key: homeStore.selectedGradeKey || 0, - class_key: homeStore.selectedClassId || 0, + class_key: homeStore.selectedClassKey || 0, subject_id: selectedSubjectId.value, page: pageNo, page_size: pageSize, @@ -61,7 +61,7 @@ const chartRef = ref>() // 班级选择选项(用于对比班级选择,过滤掉当前班级) const classOptions = computed(() => homeStore.classOptions - .filter(cls => cls.value !== homeStore.selectedClassId) + .filter(cls => cls.value !== homeStore.selectedClassKey) .map(cls => ({ label: cls.label, value: cls.value, diff --git a/src/pages/class-analysis/question-detail.vue b/src/pages/class-analysis/question-detail.vue index 77c3451..9620b3b 100644 --- a/src/pages/class-analysis/question-detail.vue +++ b/src/pages/class-analysis/question-detail.vue @@ -40,7 +40,7 @@ const { useUserId(), selectedExamId, homeStore.selectedGradeKey, - homeStore.selectedClassId, + homeStore.selectedClassKey, homeStore.selectedSubjectId, ], queryFn: async () => { @@ -48,7 +48,7 @@ const { body: { exam_id: selectedExamId.value!, grade_key: homeStore.selectedGradeKey!, - class_key: homeStore.selectedClassId!, + class_key: homeStore.selectedClassKey!, subject_id: homeStore.selectedSubjectId!, }, }) @@ -57,7 +57,7 @@ const { enabled: computed(() => !!selectedExamId.value && !!homeStore.selectedGradeKey - && !!homeStore.selectedClassId + && !!homeStore.selectedClassKey && !!homeStore.selectedSubjectId, ), staleTime: 30000, @@ -94,7 +94,7 @@ async function viewDetail(item: API.QuestionStatInfo) { body: { exam_id: selectedExamId.value!, grade_key: homeStore.selectedGradeKey!, - class_key: homeStore.selectedClassId!, + class_key: homeStore.selectedClassKey!, subject_id: homeStore.selectedSubjectId!, }, }) @@ -124,7 +124,7 @@ async function viewDetail(item: API.QuestionStatInfo) { // 查看学生名单 - 跳转到新页面 function handleViewStudentList(question: API.QuestionStatInfo) { uni.navigateTo({ - url: `/pages/class-analysis/question-score-detail?exam_id=${selectedExamId.value}&grade_key=${homeStore.selectedGradeKey}&class_key=${homeStore.selectedClassId}&subject_id=${homeStore.selectedSubjectId}&question_id=${question.question_id}`, + url: `/pages/class-analysis/question-score-detail?exam_id=${selectedExamId.value}&grade_key=${homeStore.selectedGradeKey}&class_key=${homeStore.selectedClassKey}&subject_id=${homeStore.selectedSubjectId}&question_id=${question.question_id}`, }) } diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue index 25198e6..c4feed7 100644 --- a/src/pages/index/index.vue +++ b/src/pages/index/index.vue @@ -81,17 +81,17 @@ const tempSettings = ref({ // 从用户store中获取教师信息 const schoolName = computed(() => { - const userInfo = userStore.getUserInfo + const userInfo = userStore.info return userInfo.schools?.[0]?.name || '学校' }) const teacherName = computed(() => { - const userInfo = userStore.getUserInfo + const userInfo = userStore.info return userInfo.nickname || '教师' }) const teacherSubject = computed(() => { - const userInfo = userStore.getUserInfo + const userInfo = userStore.info // 从角色信息中获取学科,假设角色名包含学科信息 const roleName = userInfo.roles?.[0]?.name if (roleName) { @@ -104,10 +104,10 @@ const teacherSubject = computed(() => { // 计算当前选中的班级名称 const selectedClassName = computed(() => { - if (!homeStore.selectedClassId) { + if (homeStore.selectedClassId === null) { return '请选择班级' } - const selectedClass = homeStore.classOptions.find(item => item.value === homeStore.selectedClassId && item.gradeKey === homeStore.selectedGradeKey) + const selectedClass = homeStore.classOptions.find(item => item.value === homeStore.selectedClassId) return selectedClass?.label || '请选择班级' }) @@ -145,7 +145,7 @@ const menuItems = [ // 获取统计数据 async function fetchExamStats() { - if (!homeStore.selectedClassId || !homeStore.selectedExamId) { + if (!homeStore.selectedClassKey || !homeStore.selectedExamId) { return } @@ -153,9 +153,9 @@ async function fetchExamStats() { loading.value = true const response = await teacherAnalysisRecentExamStatsUsingPost({ body: { - class_key: homeStore.selectedClassId, + class_key: homeStore.selectedClassKey, exam_id: homeStore.selectedExamId, - grade_key: homeStore.selectedClassId, // 暂时使用class_key,实际可能需要单独的grade_key + grade_key: homeStore.selectedClassKey, // 暂时使用class_key,实际可能需要单独的grade_key excellent_scoring_rate: scoreSettings.value.excellent_scoring_rate, good_scoring_rate: scoreSettings.value.good_scoring_rate, pass_scoring_rate: scoreSettings.value.pass_scoring_rate, @@ -256,7 +256,7 @@ function handleClassChange() { } // 班级选择确认 -watch(() => homeStore.selectedClassId, () => { +watch(() => homeStore.selectedClassKey, () => { // 选择班级后重新获取统计数据 fetchExamStats() // 关闭弹窗 @@ -329,7 +329,7 @@ function handleViewDetail() { // 试卷讲评 function handleExamReview() { - if (!homeStore.selectedClassId || !homeStore.selectedExamId) { + if (!homeStore.selectedClassKey || !homeStore.selectedExamId) { uni.showToast({ title: '请先选择班级和考试', icon: 'none', @@ -339,7 +339,7 @@ function handleExamReview() { // TODO: 导航到试卷讲评页,传递当前选择的参数 uni.navigateTo({ - url: `/pages-sub/exam-review/index?classId=${homeStore.selectedClassId}&examId=${homeStore.selectedExamId}&subjectId=${homeStore.selectedExamSubjectId || ''}`, + url: `/pages-sub/exam-review/index?classId=${homeStore.selectedClassKey}&examId=${homeStore.selectedExamId}&subjectId=${homeStore.selectedExamSubjectId || ''}`, }) } @@ -634,12 +634,12 @@ onMounted(async () => { v-for="classItem in homeStore.classOptions" :key="classItem.value" class="flex items-center justify-between rounded-xl p-4 transition-colors" - :class="homeStore.selectedClassId === classItem.value && homeStore.selectedGradeKey === classItem.gradeKey ? 'bg-blue-50 border border-blue-100' : 'bg-slate-50'" - @tap="homeStore.selectedClassId = classItem.value; homeStore.selectedGradeKey = classItem.gradeKey; showClassPicker = false" + :class="homeStore.selectedClassId === classItem.value ? 'bg-blue-50 border border-blue-100' : 'bg-slate-50'" + @tap="homeStore.selectedClassId = classItem.value;showClassPicker = false" > - {{ classItem.label }} + {{ classItem.label }} diff --git a/src/pages/index/score-list.vue b/src/pages/index/score-list.vue index 0d46eb4..9343e59 100644 --- a/src/pages/index/score-list.vue +++ b/src/pages/index/score-list.vue @@ -26,14 +26,8 @@ const pagingRef = ref() // 成绩单数据 const scoreList = ref([]) -// 班级选项 -const classOptions = computed(() => homeStore.classOptions) - -// 科目选项 -const subjectOptions = computed(() => homeStore.subjectOptions) - // 当前选中的班级ID -const selectedClassId = ref(homeStore.selectedClassId) +const selectedClassId = ref(homeStore.selectedClassKey) // 返回上一页 function goBack() { @@ -50,7 +44,7 @@ function handleClassChange(event: { value: string | number, selectedItem: Record // 查询成绩单数据 async function queryScoreList(pageNo: number, pageSize: number) { - if (!homeStore.selectedClassId || !homeStore.selectedExamId || !homeStore.selectedGradeKey) { + if (!homeStore.selectedClassKey || !homeStore.selectedExamId || !homeStore.selectedGradeKey) { pagingRef.value?.complete([]) return } @@ -58,7 +52,7 @@ async function queryScoreList(pageNo: number, pageSize: number) { try { const response = await teacherAnalysisScoreSheetUsingPost({ body: { - class_key: homeStore.selectedClassId, + class_key: homeStore.selectedClassKey, exam_id: homeStore.selectedExamId, grade_key: homeStore.selectedGradeKey, page: pageNo, @@ -123,7 +117,7 @@ function viewSubjectAnswerSheet(student: ScoreSheetInfo, subjectId: number) { @@ -167,7 +161,7 @@ function viewSubjectAnswerSheet(student: ScoreSheetInfo, subjectId: number) { - !!homeStore.selectedClassId && !!homeStore.selectedExamId && !!homeStore.selectedGradeKey, + !!homeStore.selectedClassKey && !!homeStore.selectedExamId && !!homeStore.selectedGradeKey, ) // --- API Hooks (保持逻辑不变) --- @@ -106,7 +106,7 @@ const { data: statsData } = useQuery({ queryKey: [ 'overview-stats', useUserId(), - homeStore.selectedClassId, + homeStore.selectedClassKey, homeStore.selectedExamId, homeStore.selectedGradeKey, selectedSubjectId, @@ -118,7 +118,7 @@ const { data: statsData } = useQuery({ queryFn: async () => { return await teacherAnalysisRecentExamStatsUsingPost({ body: { - class_key: homeStore.selectedClassId, + class_key: homeStore.selectedClassKey, exam_id: homeStore.selectedExamId, grade_key: homeStore.selectedGradeKey, subject_id: selectedSubjectId.value || undefined, @@ -140,7 +140,7 @@ const { data: comparisonData } = useQuery({ 'comparison-data', useUserId(), comparisonMode, - homeStore.selectedClassId, + homeStore.selectedClassKey, homeStore.selectedExamId, homeStore.selectedGradeKey, selectedSubjectId.value, @@ -150,7 +150,7 @@ const { data: comparisonData } = useQuery({ return (await teacherAnalysisClassExamComparisonHorizontalUsingPost({ body: { exam_id: homeStore.selectedExamId, - class_key: homeStore.selectedClassId, + class_key: homeStore.selectedClassKey, grade_key: homeStore.selectedGradeKey, subject_id: selectedSubjectId.value || undefined, }, @@ -159,14 +159,14 @@ const { data: comparisonData } = useQuery({ else { return (await teacherAnalysisClassExamComparisonUsingPost({ body: { - class_key: homeStore.selectedClassId, + class_key: homeStore.selectedClassKey, grade_key: homeStore.selectedGradeKey, subject_id: selectedSubjectId.value || undefined, }, })).exam_list as ExamComparisonItem[] || [] } }, - enabled: computed(() => !!homeStore.selectedClassId && !!homeStore.selectedGradeKey), + enabled: computed(() => !!homeStore.selectedClassKey && !!homeStore.selectedGradeKey), staleTime: 30000, }) @@ -175,7 +175,7 @@ const { data: rankStatsData } = useQuery({ 'rank-statistics', useUserId(), selectedClassIds, - homeStore.selectedClassId, + homeStore.selectedClassKey, homeStore.selectedExamId, selectedSubjectId, scoreSettings.value.rank_top_1, @@ -185,7 +185,7 @@ const { data: rankStatsData } = useQuery({ queryFn: async () => { const classIds = selectedClassIds.value.length > 0 ? selectedClassIds.value - : (homeStore.selectedClassId ? [homeStore.selectedClassId.toString()] : []) + : (homeStore.selectedClassKey ? [homeStore.selectedClassKey.toString()] : []) if (classIds.length === 0) { return [] @@ -213,14 +213,14 @@ const { data: rankStatsData } = useQuery({ // --- Methods --- async function fetchKeyStudentsPaging(pageNo: number, pageSize: number) { - if (!homeStore.selectedClassId || !homeStore.selectedExamId || !homeStore.selectedGradeKey) { + if (!homeStore.selectedClassKey || !homeStore.selectedExamId || !homeStore.selectedGradeKey) { keyStudentsPaging.value?.complete(false) return } try { const response = await teacherAnalysisKeyStudentUsingPost({ body: { - class_key: homeStore.selectedClassId, + class_key: homeStore.selectedClassKey, exam_id: homeStore.selectedExamId, grade_key: homeStore.selectedGradeKey, subject_id: selectedSubjectId.value || undefined, @@ -271,7 +271,7 @@ function toggleComparisonMode(mode: 'horizontal' | 'vertical') { } function handleViewScoreList() { - if (!homeStore.selectedClassId || !homeStore.selectedExamId) { + if (!homeStore.selectedClassKey || !homeStore.selectedExamId) { uni.showToast({ title: '请先选择班级和考试', icon: 'none' }) return } diff --git a/src/pages/mine/index.vue b/src/pages/mine/index.vue index 62dae74..169f931 100644 --- a/src/pages/mine/index.vue +++ b/src/pages/mine/index.vue @@ -32,7 +32,7 @@ safeAreaInsets = systemInfo.safeAreaInsets // #endif // 获取用户信息 -const userInfo = computed(() => userStore.getUserInfo) +const userInfo = computed(() => userStore.info) // 功能菜单项 const menuItems = [ diff --git a/src/pages/student/detail.vue b/src/pages/student/detail.vue index c122f71..2399faa 100644 --- a/src/pages/student/detail.vue +++ b/src/pages/student/detail.vue @@ -17,7 +17,7 @@ const selectedSubjectId = ref(0) const { data: reportData, isLoading } = useQuery({ queryKey: computed(() => [ 'personal-report', - homeStore.selectedClassId, + homeStore.selectedClassKey, homeStore.selectedGradeKey, homeStore.selectedExamId, studentNumber.value, @@ -26,7 +26,7 @@ const { data: reportData, isLoading } = useQuery({ queryFn: async () => { const response = await teacherAnalysisPersonalReportUsingPost({ body: { - class_key: homeStore.selectedClassId, + class_key: homeStore.selectedClassKey, grade_key: homeStore.selectedGradeKey, exam_id: homeStore.selectedExamId, student_number: studentNumber.value, @@ -36,7 +36,7 @@ const { data: reportData, isLoading } = useQuery({ return response }, enabled: computed(() => - !!homeStore.selectedClassId + !!homeStore.selectedClassKey && !!homeStore.selectedGradeKey && !!homeStore.selectedExamId && !!studentNumber.value, diff --git a/src/pages/student/list.vue b/src/pages/student/list.vue index d68f3e6..ca32a8d 100644 --- a/src/pages/student/list.vue +++ b/src/pages/student/list.vue @@ -13,7 +13,7 @@ const searchQuery = ref('') // 2. 逻辑计算与 Query (保持原逻辑不变) const canLoadStudents = computed(() => { - return homeStore.selectedClassId && homeStore.selectedExamId && homeStore.selectedExamSubjectId + return homeStore.selectedClassKey && homeStore.selectedExamId && homeStore.selectedExamSubjectId }) const { @@ -24,7 +24,7 @@ const { } = useQuery({ queryKey: computed(() => [ 'students', - homeStore.selectedClassId, + homeStore.selectedClassKey, homeStore.selectedExamId, homeStore.selectedExamSubjectId, homeStore.selectedGradeKey, @@ -33,7 +33,7 @@ const { queryFn: async () => { const response = await teacherAnalysisStudentListUsingPost({ body: { - class_id: homeStore.selectedClassId!, + class_id: homeStore.selectedClassKey!, exam_subject_id: homeStore.selectedExamSubjectId!, grade_id: homeStore.selectedGradeKey!, keyword: searchQuery.value || undefined, @@ -81,7 +81,7 @@ async function handleDownload() { uni.showLoading({ title: '准备中' }) const response = await teacherAnalysisExportStudentListUsingPost({ body: { - class_id: homeStore.selectedClassId!, + class_id: homeStore.selectedClassKey!, exam_subject_id: homeStore.selectedExamSubjectId!, grade_id: homeStore.selectedGradeKey!, }, diff --git a/src/service/types.ts b/src/service/types.ts index 68a87c1..0fea05c 100644 --- a/src/service/types.ts +++ b/src/service/types.ts @@ -630,10 +630,6 @@ export type ExamMarkingTaskResponse = { exam_name?: string; /** 考试类型 */ exam_type?: string; - /** 年级 */ - grade?: string; - /** 是否已统分 */ - is_scored?: boolean; /** 科目列表 */ subjects?: SubjectInfo[]; }; diff --git a/src/store/home.ts b/src/store/home.ts index 1b91ca2..1d703bc 100644 --- a/src/store/home.ts +++ b/src/store/home.ts @@ -10,6 +10,7 @@ export interface SelectOption { value: number examSubjectId?: number subjectId?: number + classKey?: number gradeKey?: number } @@ -36,7 +37,6 @@ export const useHomeStore = defineStore( const selectedExamId = useUserStorage('home_selectedExamId', 0) const selectedSubjectId = useUserStorage('home_selectedSubjectId', 0) const selectedExamSubjectId = useUserStorage('home_selectedExamSubjectId', 0) - const selectedGradeKey = useUserStorage('home_selectedGradeKey', 0) // 计算属性:考试选项 const examOptions = computed((): SelectOption[] => { @@ -48,13 +48,22 @@ export const useHomeStore = defineStore( // 计算属性:班级选项 const classOptions = computed((): SelectOption[] => { - return classList.value.map(item => ({ + return classList.value.map((item, index) => ({ label: item.label, - value: item.value, + value: index, + classKey: item.value, gradeKey: item.gradeKey, })) }) + const selectedClassKey = computed(() => { + return classOptions.value.find(item => item.value === selectedClassId.value)?.classKey || 0 + }) + + const selectedGradeKey = computed(() => { + return classOptions.value.find(item => item.value === selectedClassId.value)?.gradeKey || 0 + }) + // 计算属性:根据选中考试获取科目选项 const subjectOptions = computed((): SelectOption[] => { if (!selectedExamId.value) { @@ -193,6 +202,7 @@ export const useHomeStore = defineStore( selectedExamId, selectedSubjectId, selectedExamSubjectId, + selectedClassKey, selectedGradeKey, // 方法 diff --git a/src/store/user.ts b/src/store/user.ts index 4aede60..476075b 100644 --- a/src/store/user.ts +++ b/src/store/user.ts @@ -1,6 +1,8 @@ +import type { ModelSysUser, ModelTeacherListResponse, ModelUserProfileResponse } from '@/api' import type { LoginRequest, SysUser } from '@/service/types' import { defineStore } from 'pinia' import { computed, ref } from 'vue' +import { authApi } from '@/api' import { authCodeLoginUsingPost, authLoginUsingPost, @@ -19,7 +21,9 @@ export const useUserStore = defineStore( // 登录状态 const isLogin = ref(false) // 用户信息 - const info = ref>({}) + const info = ref>({}) + // 教师信息 + const teacherInfo = ref>({}) // 访问令牌 const accessToken = ref('') // 刷新令牌 @@ -39,8 +43,9 @@ export const useUserStore = defineStore( * 设置用户信息 * @param newInfo 新的用户信息 */ - const setUserInfo = (newInfo: SysUser) => { - info.value = newInfo + const setUserInfo = (newInfo: ModelUserProfileResponse) => { + info.value = newInfo.sys_user + teacherInfo.value = newInfo.teacher } /** @@ -101,7 +106,7 @@ export const useUserStore = defineStore( */ const fetchUserProfile = async () => { try { - const userData = await authProfileUsingGet({}) + const userData = await authApi.profileList() if (userData) { setUserInfo(userData) return userData