Explorar el Código

feat: 评卷任务获取逻辑调整

chenhao hace 2 años
padre
commit
c9f05a9734
Se han modificado 4 ficheros con 37 adiciones y 6 borrados
  1. 2 0
      src/api/marking.ts
  2. 23 5
      src/modules/marking/mark/index.vue
  3. 6 0
      src/store/layout.ts
  4. 6 1
      types/api.d.ts

+ 2 - 0
src/api/marking.ts

@@ -22,6 +22,8 @@ const MarkingApi: DefineApiModule<Marking.ApiMap> = {
   getMarkingStandard: '/api/mark/markstandard',
   /** 获取评卷任务 */
   getMarkingTask: '/api/mark/task',
+  /** 清除评卷任务缓存 */
+  clearCachedTasks: '/api/mark/clear',
   /** 提交评卷任务 */
   submitMarkTask: {
     url: '/api/mark/submit',

+ 23 - 5
src/modules/marking/mark/index.vue

@@ -88,7 +88,7 @@ const { push, replace } = useRouter()
 
 const { getSpentTime, resume } = useTime()
 
-type TaskType = ExtractApiResponse<'getMarkingTask'>['taskType'] | 'default' | 'remarking'
+type TaskType = ExtractArrayValue<ExtractApiResponse<'getMarkingTask'>>['taskType'] | 'default' | 'remarking'
 
 const markStatusIcon: Partial<Record<TaskType, string>> = {
   FORMAL: MarkingStatus,
@@ -119,11 +119,15 @@ const {
   onViewStandard,
 } = useMarkHeader()
 
-type TaskInfoType = ExtractApiResponse<'getMarkingTask'> | ExtractArrayValue<ExtractApiResponse<'getMarkHistory'>>
+type TaskInfoType =
+  | ExtractArrayValue<ExtractApiResponse<'getMarkingTask'>>
+  | ExtractArrayValue<ExtractApiResponse<'getMarkHistory'>>
+
+let currentTaskPool: ExtractApiResponse<'getMarkingTask'> = []
 
 const currentTask = ref<TaskInfoType>()
 
-const { fetch: getMarkingTask, loading } = useFetch('getMarkingTask')
+const { fetch: getMarkingTask, loading, result: taskPool } = useFetch('getMarkingTask')
 const { fetch: submitMarkTask, loading: submitting, result: submitMarkStatus } = useFetch('submitMarkTask')
 const { fetch: getMarkStatus, result: markStatus } = useFetch('getMarkStatus')
 
@@ -133,13 +137,26 @@ const historyTaskChange = (task: TaskInfoType) => {
 }
 
 const getNextTask = () => {
-  getMarkingTask().then((task) => (currentTask.value = task))
+  currentTask.value = currentTaskPool.shift()
+  if (currentTaskPool.length < 2) {
+    getMarkingTask()
+  }
 }
 
-getNextTask()
+watch(taskPool, () => {
+  if (taskPool.value) {
+    currentTaskPool = currentTaskPool.concat(taskPool.value)
+    if (currentTaskPool.length && !currentTask.value) {
+      getNextTask()
+    }
+  }
+})
+
+useFetch('clearCachedTasks').fetch().then(getNextTask)
 
 watch(currentTask, () => {
   resume()
+  console.log(currentTask.value)
   scoringPanelVisible.value = true
 })
 
@@ -176,6 +193,7 @@ const onSubmit: InstanceType<typeof ScoringPanelWithConfirm>['onSubmit'] = async
       taskId: currentTask.value.taskId,
     })
     await getNextTask()
+    await getMarkStatus()
   } catch (error) {
     console.error(error)
     scoringPanelVisible.value = true

+ 6 - 0
src/store/layout.ts

@@ -81,6 +81,12 @@ const useMainLayoutStore = defineStore<'main-layout', MainLayoutStore.State, any
         this.collapse = !this.collapse
       },
     },
+    getters: {
+      renderMenuList: (state: MainLayoutStore.State) => {
+        console.log(state)
+        return state.menuList
+      },
+    },
   }
 )
 

+ 6 - 1
types/api.d.ts

@@ -473,7 +473,10 @@ declare module 'api-type' {
       url: string
     }
 
-    type GetMarkingTask = BaseDefine<null, Task>
+    type GetMarkingTask = BaseDefine<null, Task[]>
+
+    /** 清除评卷任务缓存 */
+    type ClearCachedTasks = BaseDefine
 
     interface MarkStatus {
       markedCount: number
@@ -697,6 +700,8 @@ declare module 'api-type' {
       getMarkingStandard: GetMarkingStandard
       /** 获取评卷任务 */
       getMarkingTask: GetMarkingTask
+      /** 清除评卷任务缓存 */
+      clearCachedTasks: ClearCachedTasks
       /** 获取评卷进度 */
       getMarkStatus: GetMarkStatus
       /** 提交评卷任务 */