fix: 换账号报错
continuous-integration/drone/push Build is passing Details

This commit is contained in:
张哲铜 2025-10-12 23:07:15 +08:00
parent 7089fe521f
commit 3534feff4b
12 changed files with 57 additions and 33 deletions

View File

@ -4,6 +4,7 @@ import type * as API from '@/service/types'
import { useQuery } from '@tanstack/vue-query' import { useQuery } from '@tanstack/vue-query'
import UniEcharts from 'uni-echarts' import UniEcharts from 'uni-echarts'
import { computed, ref, watch } from 'vue' import { computed, ref, watch } from 'vue'
import { useUserId } from '@/composables/useUserId'
import { teacherAnalysisTrendUsingPost } from '@/service/laoshichengjifenxi' import { teacherAnalysisTrendUsingPost } from '@/service/laoshichengjifenxi'
import { useHomeStore } from '@/store/home' import { useHomeStore } from '@/store/home'
@ -74,15 +75,16 @@ const {
isLoading: loading, isLoading: loading,
refetch: refetchData, refetch: refetchData,
} = useQuery({ } = useQuery({
queryKey: computed(() => [ queryKey: [
'class-trend', 'class-trend',
useUserId(),
homeStore.selectedClassId, homeStore.selectedClassId,
homeStore.selectedGradeKey, homeStore.selectedGradeKey,
compareClassId.value, compareClassId,
compareClassGradeKey.value, compareClassGradeKey,
props.selectedSubjectId, props.selectedSubjectId,
topN.value, topN,
]), ],
queryFn: async () => { queryFn: async () => {
const response = await teacherAnalysisTrendUsingPost({ const response = await teacherAnalysisTrendUsingPost({
body: { body: {

View File

@ -4,6 +4,7 @@ import { useQuery, useQueryClient } from '@tanstack/vue-query'
import { useDebounceFn, useThrottleFn } from '@vueuse/core' import { useDebounceFn, useThrottleFn } from '@vueuse/core'
import { computed, inject, provide, readonly, ref, watch } from 'vue' import { computed, inject, provide, readonly, ref, watch } from 'vue'
import { examMarkingTaskApi } from '@/api' import { examMarkingTaskApi } from '@/api'
import { useUserId } from '@/composables/useUserId'
export interface MarkingSubmitData { export interface MarkingSubmitData {
score: number score: number
@ -62,7 +63,7 @@ function createMarkingData(options: UseMarkingDataOptions) {
error: questionError, error: questionError,
refetch: refetchQuestion, refetch: refetchQuestion,
} = useQuery({ } = useQuery({
queryKey: computed(() => ['marking-question', taskId.value]), queryKey: ['marking-question', taskId, useUserId()],
queryFn: async () => examMarkingTaskApi.questionDetail(taskId.value), queryFn: async () => examMarkingTaskApi.questionDetail(taskId.value),
enabled: computed(() => !!taskId.value), enabled: computed(() => !!taskId.value),
gcTime: 0, gcTime: 0,
@ -73,7 +74,7 @@ function createMarkingData(options: UseMarkingDataOptions) {
data: questionsListData, data: questionsListData,
refetch: refetchQuestionsList, refetch: refetchQuestionsList,
} = useQuery({ } = useQuery({
queryKey: computed(() => ['marking-questions-list', examId?.value, subjectId?.value]), queryKey: ['marking-questions-list', examId, subjectId, useUserId()],
queryFn: async () => examMarkingTaskApi.byQuestionList({ queryFn: async () => examMarkingTaskApi.byQuestionList({
exam_id: examId!.value!, exam_id: examId!.value!,
exam_subject_id: subjectId!.value!, exam_subject_id: subjectId!.value!,
@ -87,7 +88,7 @@ function createMarkingData(options: UseMarkingDataOptions) {
data: avgScoreData, data: avgScoreData,
refetch: refetchAvgScore, refetch: refetchAvgScore,
} = useQuery({ } = useQuery({
queryKey: computed(() => ['marking-avg-score', questionId.value, taskId.value]), queryKey: ['marking-avg-score', questionId, taskId, useUserId()],
queryFn: async () => examMarkingTaskApi.questionTaskAverageScoreComparisonDetail( queryFn: async () => examMarkingTaskApi.questionTaskAverageScoreComparisonDetail(
questionId.value, questionId.value,
taskId.value, taskId.value,

View File

@ -2,6 +2,7 @@ import type { DictionaryItem } from '@/service/types'
import { useQuery, useQueryClient } from '@tanstack/vue-query' import { useQuery, useQueryClient } from '@tanstack/vue-query'
import { computed, readonly } from 'vue' import { computed, readonly } from 'vue'
import { dictionaryItemsUsingGet } from '@/service' import { dictionaryItemsUsingGet } from '@/service'
import { useUserId } from './useUserId'
export type DictOptions = Array<{ label: string, value: string }> export type DictOptions = Array<{ label: string, value: string }>
@ -29,7 +30,7 @@ export function useDict() {
*/ */
const useDictOptionsQuery = (dictCode: string) => { const useDictOptionsQuery = (dictCode: string) => {
return useQuery({ return useQuery({
queryKey: ['dict', dictCode], queryKey: ['dict', dictCode, useUserId()],
queryFn: async (): Promise<DictOptions> => { queryFn: async (): Promise<DictOptions> => {
try { try {
const response = await dictionaryItemsUsingGet({ const response = await dictionaryItemsUsingGet({
@ -71,7 +72,7 @@ export function useDict() {
// 通过query获取数据 // 通过query获取数据
return queryClient.fetchQuery({ return queryClient.fetchQuery({
queryKey: ['dict', dictCode], queryKey: ['dict', dictCode, useUserId()],
queryFn: async (): Promise<DictOptions> => { queryFn: async (): Promise<DictOptions> => {
try { try {
const response = await dictionaryItemsUsingGet({ const response = await dictionaryItemsUsingGet({

View File

@ -0,0 +1,7 @@
import { useUserStore } from '@/store'
export function useUserId() {
const userStore = useUserStore()
const userId = computed(() => userStore.info.id)
return userId
}

View File

@ -13,6 +13,7 @@ import { useQuery } from '@tanstack/vue-query'
import { computed, onMounted, ref } from 'vue' import { computed, onMounted, ref } from 'vue'
import QuestionDetailPopup from '@/components/class-analysis/QuestionDetailPopup.vue' import QuestionDetailPopup from '@/components/class-analysis/QuestionDetailPopup.vue'
import QuestionDetailTable from '@/components/class-analysis/QuestionDetailTable.vue' import QuestionDetailTable from '@/components/class-analysis/QuestionDetailTable.vue'
import { useUserId } from '@/composables/useUserId'
import { teacherAnalysisQuestionDetailUsingPost, teacherAnalysisQuestionScoreDetailUsingPost } from '@/service/laoshixiaotichengjifenxi' import { teacherAnalysisQuestionDetailUsingPost, teacherAnalysisQuestionScoreDetailUsingPost } from '@/service/laoshixiaotichengjifenxi'
import { useHomeStore } from '@/store/home' import { useHomeStore } from '@/store/home'
@ -34,13 +35,14 @@ const {
data: questionDetailData, data: questionDetailData,
isLoading: loading, isLoading: loading,
} = useQuery({ } = useQuery({
queryKey: computed(() => [ queryKey: [
'question-detail', 'question-detail',
selectedExamId.value, useUserId(),
selectedExamId,
homeStore.selectedGradeKey, homeStore.selectedGradeKey,
homeStore.selectedClassId, homeStore.selectedClassId,
homeStore.selectedSubjectId, homeStore.selectedSubjectId,
]), ],
queryFn: async () => { queryFn: async () => {
const response = await teacherAnalysisQuestionDetailUsingPost({ const response = await teacherAnalysisQuestionDetailUsingPost({
body: { body: {

View File

@ -10,6 +10,7 @@
<script lang="ts" setup> <script lang="ts" setup>
import { useQuery } from '@tanstack/vue-query' import { useQuery } from '@tanstack/vue-query'
import { computed, onMounted, ref, watch } from 'vue' import { computed, onMounted, ref, watch } from 'vue'
import { useUserId } from '@/composables/useUserId'
import { teacherAnalysisQuestionScoreDetailUsingPost } from '@/service/laoshixiaotichengjifenxi' import { teacherAnalysisQuestionScoreDetailUsingPost } from '@/service/laoshixiaotichengjifenxi'
defineOptions({ defineOptions({
@ -36,13 +37,14 @@ const {
data: questionListData, data: questionListData,
isLoading: loading, isLoading: loading,
} = useQuery({ } = useQuery({
queryKey: computed(() => [ queryKey: [
'question-score-detail', 'question-score-detail',
useUserId(),
params.value.exam_id, params.value.exam_id,
params.value.grade_key, params.value.grade_key,
params.value.class_key, params.value.class_key,
params.value.subject_id, params.value.subject_id,
]), ],
queryFn: async () => { queryFn: async () => {
const response = await teacherAnalysisQuestionScoreDetailUsingPost({ const response = await teacherAnalysisQuestionScoreDetailUsingPost({
body: { body: {

View File

@ -14,6 +14,7 @@ import { whenever } from '@vueuse/core'
import { computed, ref } from 'vue' import { computed, ref } from 'vue'
import OverviewSettingsDialog from '@/components/score/OverviewSettingsDialog.vue' import OverviewSettingsDialog from '@/components/score/OverviewSettingsDialog.vue'
import RankSettingsDialog from '@/components/score/RankSettingsDialog.vue' import RankSettingsDialog from '@/components/score/RankSettingsDialog.vue'
import { useUserId } from '@/composables/useUserId'
import { import {
teacherAnalysisClassExamComparisonHorizontalUsingPost, teacherAnalysisClassExamComparisonHorizontalUsingPost,
teacherAnalysisClassExamComparisonUsingPost, teacherAnalysisClassExamComparisonUsingPost,
@ -137,17 +138,18 @@ const {
isLoading: isLoadingStats, isLoading: isLoadingStats,
refetch: refetchStats, refetch: refetchStats,
} = useQuery({ } = useQuery({
queryKey: computed(() => [ queryKey: [
'overview-stats', 'overview-stats',
useUserId(),
homeStore.selectedClassId, homeStore.selectedClassId,
homeStore.selectedExamId, homeStore.selectedExamId,
homeStore.selectedGradeKey, homeStore.selectedGradeKey,
selectedSubjectId.value, selectedSubjectId,
scoreSettings.value.excellent_scoring_rate, scoreSettings.value.excellent_scoring_rate,
scoreSettings.value.good_scoring_rate, scoreSettings.value.good_scoring_rate,
scoreSettings.value.pass_scoring_rate, scoreSettings.value.pass_scoring_rate,
scoreSettings.value.top_n, scoreSettings.value.top_n,
]), ],
queryFn: async () => { queryFn: async () => {
return await teacherAnalysisRecentExamStatsUsingPost({ return await teacherAnalysisRecentExamStatsUsingPost({
body: { body: {
@ -172,14 +174,15 @@ const {
data: comparisonData, data: comparisonData,
isLoading: isLoadingComparison, isLoading: isLoadingComparison,
} = useQuery({ } = useQuery({
queryKey: computed(() => [ queryKey: [
'comparison-data', 'comparison-data',
comparisonMode.value, useUserId(),
comparisonMode,
homeStore.selectedClassId, homeStore.selectedClassId,
homeStore.selectedExamId, homeStore.selectedExamId,
homeStore.selectedGradeKey, homeStore.selectedGradeKey,
selectedSubjectId.value, selectedSubjectId.value,
]), ],
queryFn: async () => { queryFn: async () => {
if (comparisonMode.value === 'horizontal') { if (comparisonMode.value === 'horizontal') {
return (await teacherAnalysisClassExamComparisonHorizontalUsingPost({ return (await teacherAnalysisClassExamComparisonHorizontalUsingPost({
@ -210,16 +213,17 @@ const {
data: rankStatsData, data: rankStatsData,
isLoading: isLoadingRank, isLoading: isLoadingRank,
} = useQuery({ } = useQuery({
queryKey: computed(() => [ queryKey: [
'rank-statistics', 'rank-statistics',
selectedClassIds.value, useUserId(),
selectedClassIds,
homeStore.selectedClassId, homeStore.selectedClassId,
homeStore.selectedExamId, homeStore.selectedExamId,
selectedSubjectId.value, selectedSubjectId,
scoreSettings.value.rank_top_1, scoreSettings.value.rank_top_1,
scoreSettings.value.rank_top_2, scoreSettings.value.rank_top_2,
scoreSettings.value.rank_top_3, scoreSettings.value.rank_top_3,
]), ],
queryFn: async () => { queryFn: async () => {
const classIds = selectedClassIds.value.length > 0 const classIds = selectedClassIds.value.length > 0
? selectedClassIds.value ? selectedClassIds.value

View File

@ -12,6 +12,7 @@ import { useQuery } from '@tanstack/vue-query'
import { computed, ref } from 'vue' import { computed, ref } from 'vue'
import { examMarkingTaskApi } from '@/api' import { examMarkingTaskApi } from '@/api'
import { DictCode, useDict } from '@/composables/useDict' import { DictCode, useDict } from '@/composables/useDict'
import { useUserId } from '@/composables/useUserId'
import { markingTasksTaskIdStartUsingPost } from '@/service' import { markingTasksTaskIdStartUsingPost } from '@/service'
defineOptions({ defineOptions({
@ -41,7 +42,7 @@ const {
error, error,
refetch, refetch,
} = useQuery({ } = useQuery({
queryKey: ['marking-questions', examId, subjectId], queryKey: ['marking-questions', examId, subjectId, useUserId()],
queryFn: () => examMarkingTaskApi.byQuestionList( queryFn: () => examMarkingTaskApi.byQuestionList(
{ {
exam_id: examId.value!, exam_id: examId.value!,

View File

@ -12,6 +12,7 @@ import type { TeacherMarkingTasksResponse } from '@/service/types'
import { useQuery } from '@tanstack/vue-query' import { useQuery } from '@tanstack/vue-query'
import { computed, ref } from 'vue' import { computed, ref } from 'vue'
import TaskCard from '@/components/marking/TaskCard.vue' import TaskCard from '@/components/marking/TaskCard.vue'
import { useUserId } from '@/composables/useUserId'
import { markingTasksUsingGet } from '@/service' import { markingTasksUsingGet } from '@/service'
defineOptions({ defineOptions({
@ -31,7 +32,7 @@ const {
error, error,
refetch, refetch,
} = useQuery({ } = useQuery({
queryKey: ['marking-tasks'], queryKey: ['marking-tasks', useUserId()],
queryFn: () => markingTasksUsingGet({ queryFn: () => markingTasksUsingGet({
params: { params: {
page: 1, page: 1,

View File

@ -14,6 +14,7 @@ import { useQuery } from '@tanstack/vue-query'
import { computed, ref, watch } from 'vue' import { computed, ref, watch } from 'vue'
import QuestionTabs from '@/components/marking/QuestionTabs.vue' import QuestionTabs from '@/components/marking/QuestionTabs.vue'
import { DictCode, useDict } from '@/composables/useDict' import { DictCode, useDict } from '@/composables/useDict'
import { useUserId } from '@/composables/useUserId'
import { markingProgressQuestionUsingGet, markingProgressUsingGet } from '@/service/yuejuanjindu' import { markingProgressQuestionUsingGet, markingProgressUsingGet } from '@/service/yuejuanjindu'
defineOptions({ defineOptions({
@ -44,7 +45,7 @@ const {
error: errorAll, error: errorAll,
refetch: refetchAll, refetch: refetchAll,
} = useQuery({ } = useQuery({
queryKey: ['marking-progress', examSubjectId], queryKey: ['marking-progress', examSubjectId, useUserId()],
queryFn: () => markingProgressUsingGet({ queryFn: () => markingProgressUsingGet({
params: { params: {
exam_subject_id: examSubjectId.value!, exam_subject_id: examSubjectId.value!,
@ -86,7 +87,7 @@ const {
error: errorQuestion, error: errorQuestion,
refetch: refetchQuestion, refetch: refetchQuestion,
} = useQuery({ } = useQuery({
queryKey: computed(() => ['question-marking-progress', questionId.value]), queryKey: ['question-marking-progress', questionId, useUserId()],
queryFn: () => markingProgressQuestionUsingGet({ queryFn: () => markingProgressQuestionUsingGet({
params: { params: {
question_id: questionId.value!, question_id: questionId.value!,

View File

@ -13,6 +13,7 @@ import { onLoad } from '@dcloudio/uni-app'
import { useQuery } from '@tanstack/vue-query' import { useQuery } from '@tanstack/vue-query'
import { computed, ref, watch } from 'vue' import { computed, ref, watch } from 'vue'
import QuestionTabs from '@/components/marking/QuestionTabs.vue' import QuestionTabs from '@/components/marking/QuestionTabs.vue'
import { useUserId } from '@/composables/useUserId'
import { markingQualityQuestionUsingGet, markingQualityUsingGet } from '@/service/yuejuanzhiliang' import { markingQualityQuestionUsingGet, markingQualityUsingGet } from '@/service/yuejuanzhiliang'
defineOptions({ defineOptions({
@ -43,7 +44,7 @@ const {
error: errorAll, error: errorAll,
refetch: refetchAll, refetch: refetchAll,
} = useQuery({ } = useQuery({
queryKey: ['marking-quality', examSubjectId], queryKey: ['marking-quality', examSubjectId, useUserId()],
queryFn: () => markingQualityUsingGet({ queryFn: () => markingQualityUsingGet({
params: { params: {
exam_subject_id: examSubjectId.value!, exam_subject_id: examSubjectId.value!,
@ -87,7 +88,7 @@ const {
error: errorQuestion, error: errorQuestion,
refetch: refetchQuestion, refetch: refetchQuestion,
} = useQuery({ } = useQuery({
queryKey: computed(() => ['question-marking-quality', questionId.value]), queryKey: ['question-marking-quality', questionId, useUserId()],
queryFn: () => markingQualityQuestionUsingGet({ queryFn: () => markingQualityQuestionUsingGet({
params: { params: {
question_id: questionId.value!, question_id: questionId.value!,

View File

@ -15,6 +15,7 @@ import { examMarkingTaskApi } from '@/api'
import ReviewHeader from '@/components/marking/review/ReviewHeader.vue' import ReviewHeader from '@/components/marking/review/ReviewHeader.vue'
import ReviewImageRenderer from '@/components/marking/review/ReviewImageRenderer.vue' import ReviewImageRenderer from '@/components/marking/review/ReviewImageRenderer.vue'
import ScoreEditDialog from '@/components/marking/review/ScoreEditDialog.vue' import ScoreEditDialog from '@/components/marking/review/ScoreEditDialog.vue'
import { useUserId } from '@/composables/useUserId'
defineOptions({ defineOptions({
name: 'MarkingReviewPage', name: 'MarkingReviewPage',
@ -46,7 +47,7 @@ const {
data: historyScoreOptions, data: historyScoreOptions,
isLoading: isLoadingScoreOptions, isLoading: isLoadingScoreOptions,
} = useQuery({ } = useQuery({
queryKey: ['review-history-score', taskId], queryKey: ['review-history-score', taskId, useUserId()],
queryFn: () => examMarkingTaskApi.reviewHistoryScoreCreate({ queryFn: () => examMarkingTaskApi.reviewHistoryScoreCreate({
task_id: taskId.value!, task_id: taskId.value!,
}), }),
@ -64,7 +65,7 @@ const {
error: historyError, error: historyError,
refetch: refetchHistory, refetch: refetchHistory,
} = useQuery({ } = useQuery({
queryKey: ['review-history', taskId, currentPage, selectedScore, selectedOrderBy], queryKey: ['review-history', taskId, currentPage, selectedScore, selectedOrderBy, useUserId()],
queryFn: () => examMarkingTaskApi.historyDetail( queryFn: () => examMarkingTaskApi.historyDetail(
taskId.value!, taskId.value!,
{ {