Эх сурвалжийг харах

feat: 修改给分不刷新列表, 直接回填分数

chenhao 2 жил өмнө
parent
commit
91dfe22139

+ 3 - 1
src/api/api-types/statistics.d.ts

@@ -460,14 +460,16 @@ export namespace Statistics {
   type UpdatePersonalMarkDetailScore = BaseDefine<{ taskId?: number; scores: number[] }>
 
   interface SystemSpotListItem {
+    checkCount: number
     examNumber: string
     filePath: string
+    headerScore: number
     id: number
     mainNumber: number
     markScore: number
     markTime: string
     markerName: string
-    secretNumber: number
+    secretNumber: string
     status: string
     taskId: number
   }

+ 0 - 1
src/api/api-types/user.d.ts

@@ -231,7 +231,6 @@ export namespace User {
     userLogin: UserLogin
     userLogout: null
     exportUser: ExportUser
-    downloadUserTemplate: null
     saveUserInfo: SaveUserInfo
     getUserInfo: GetUserInfo
     getMyUserInfo: GetMyUserInfo

+ 1 - 0
src/api/marking.ts

@@ -70,6 +70,7 @@ const MarkingApi: DefineApiModule<Marking.ApiMap> = {
   exportSimilarPaper: {
     url: '/api/same/paper/export',
     download: true,
+    timeout: 0,
   },
   /** 提交雷同卷 */
   submitSimilarPaper: '/api/mark/same',

+ 2 - 0
src/api/statistics.ts

@@ -42,6 +42,7 @@ const StatisticsApi: DefineApiModule<Statistics.ApiMap> = {
   exportMarkProgressByMarker: {
     url: '/api/statistic/marking/progress/by/marker/export',
     download: true,
+    timeout: 0,
   },
   /** 质量统计-科目进度收尾 */
   subjectProgressEnd: '/api/statistic/marking/progress/ending',
@@ -86,6 +87,7 @@ const StatisticsApi: DefineApiModule<Statistics.ApiMap> = {
   exportStatisticsByGroup: {
     url: '/api/statistic/monitor/list/by/group/export',
     download: true,
+    timeout: 0,
   },
 
   /** 培训监控 */

+ 6 - 1
src/api/system.ts

@@ -8,11 +8,13 @@ const SystemApi: DefineApiModule<System.ApiMap> = {
     headers: {
       'Content-Type': 'multipart/form-data',
     },
+    timeout: 0,
   },
   /** 创建评卷分配表 */
   exportStudentTask: {
     url: '/api/student/task/export',
     download: true,
+    timeout: 0,
   },
   /** 获取培训卷RF卷评分标准路径 */
   getImportFilePath: '/api/reference/paper/file/path',
@@ -22,13 +24,15 @@ const SystemApi: DefineApiModule<System.ApiMap> = {
     headers: {
       'Content-Type': 'multipart/form-data',
     },
+    timeout: 0,
   },
-  /** 导入培训卷 */
+  /** 导入RF卷 */
   importRfPaper: {
     url: '/api/reference/paper/import/rf',
     headers: {
       'Content-Type': 'multipart/form-data',
     },
+    timeout: 0,
   },
   /** CET成绩列表 */
   getCetScoreList: '/api/student/page',
@@ -36,6 +40,7 @@ const SystemApi: DefineApiModule<System.ApiMap> = {
   exportCetScoreList: {
     url: '/api/student/export',
     download: true,
+    timeout: 0,
   },
   /** 任务设置 - 按评卷员设置 */
   markerSetCount: {

+ 2 - 3
src/api/user.ts

@@ -9,13 +9,12 @@ const UserApi: DefineApiModule<User.ApiMap> = {
   },
   /** 登出 */
   userLogout: '/api/auth/logout',
-  /** 导用户 */
+  /** 导用户 */
   exportUser: {
     url: '/api/user/export',
     download: true,
+    timeout: 0,
   },
-  /** 下载用户导入模板 */
-  downloadUserTemplate: '/api/user/import/template',
   /** 查询当前用户信息 */
   getMyUserInfo: '/api/user/my/info',
   /** 查询指定用户信息 */

+ 2 - 2
src/modules/admin-data/task-setting/index.vue

@@ -10,7 +10,7 @@
         :label-width="useVW(120)"
       >
         <template #form-item-un-mark>
-          <span class="un-mark-count">{{ unMarkTasks?.unmarkCount }}</span>
+          <span class="un-mark-count">{{ unMarkTasks?.unmarkCount ?? 0 }}</span>
         </template>
         <template #form-item-confirm>
           <el-button type="primary" @click="onSubmit">{{ isGroupSetting ? '确认追加' : '确定' }}</el-button>
@@ -147,7 +147,7 @@ const items = computed<EpFormItem[]>(() => [
     rowKey: 'row-2',
     label: '任务余量',
     slotName: 'un-mark',
-    hidden: !isGroupSetting.value || !unMarkTasks?.value?.unmarkCount,
+    hidden: !isGroupSetting.value,
   }),
   Span7({
     rowKey: 'row-3',

+ 4 - 2
src/modules/analysis/view-marked-detail/index.vue

@@ -75,7 +75,8 @@
 /** 提取阅卷明细 */
 import { ref, computed } from 'vue'
 import { useRoute } from 'vue-router'
-import { ElButton, ElPagination } from 'element-plus'
+import { ElButton, ElMessage, ElPagination } from 'element-plus'
+import { add } from '@/utils/common'
 import { useSetImgBg } from '@/hooks/useSetImgBg'
 import useFetch from '@/hooks/useFetch'
 import useTable from '@/hooks/useTable'
@@ -189,7 +190,8 @@ const { fetch: updatePersonalMarkDetailScore } = useFetch('updatePersonalMarkDet
 const onSubmit = async () => {
   if (current.value) {
     await updatePersonalMarkDetailScore({ taskId: current.value.taskId, scores: modelScore.value })
-    fetchTable()
+    current.value.markerScore = add(...modelScore.value)
+    ElMessage.success('修改成功')
   }
 }
 

+ 4 - 2
src/modules/expert/assess/index.vue

@@ -62,7 +62,8 @@
 <script setup lang="ts" name="ExpertAssess">
 /** 专家卷浏览-强制考核卷 */
 import { reactive, ref, computed, watch } from 'vue'
-import { ElButton } from 'element-plus'
+import { ElButton, ElMessage } from 'element-plus'
+import { add } from '@/utils/common'
 import { useSetImgBg } from '@/hooks/useSetImgBg'
 import useFetch from '@/hooks/useFetch'
 import useVW from '@/hooks/useVW'
@@ -220,7 +221,8 @@ const { fetch: updateMarkScore } = useFetch('updateMarkScore')
 const onSubmit = async () => {
   if (currentAssessPaper.value) {
     await updateMarkScore({ id: currentAssessPaper.value.id, scores: modelScore.value })
-    onSearch()
+    currentAssessPaper.value.score = add(...modelScore.value)
+    ElMessage.success('修改成功')
   }
 }
 

+ 3 - 1
src/modules/expert/expert/index.vue

@@ -64,6 +64,7 @@
 import { reactive, ref, computed, watch, nextTick } from 'vue'
 import { ElButton, ElMessage } from 'element-plus'
 import { ROLE_OPTION, PaperMap } from '@/constants/dicts'
+import { add } from '@/utils/common'
 import { useSetImgBg } from '@/hooks/useSetImgBg'
 import useFetch from '@/hooks/useFetch'
 import useVW from '@/hooks/useVW'
@@ -283,7 +284,8 @@ const { fetch: updateMarkScore } = useFetch('updateMarkScore')
 const onSubmit = async () => {
   if (currentExpertPaper.value) {
     await updateMarkScore({ id: currentExpertPaper.value.id, scores: modelScore.value })
-    await onSearch()
+    currentExpertPaper.value.score = add(...modelScore.value)
+    ElMessage.success('修改成功')
   }
 }
 

+ 3 - 6
src/modules/expert/sample/index.vue

@@ -63,7 +63,7 @@
 <script setup lang="ts" name="ExpertSample">
 /** 专家卷浏览-RF卷 */
 import { reactive, ref, computed, watch, nextTick } from 'vue'
-import { ElButton } from 'element-plus'
+import { ElButton, ElMessage } from 'element-plus'
 import { add } from '@/utils/common'
 import { useSetImgBg } from '@/hooks/useSetImgBg'
 import useFetch from '@/hooks/useFetch'
@@ -94,10 +94,6 @@ const previewModalVisible = ref<boolean>(false)
 
 const modelScore = ref<number[]>([])
 
-const totalScore = computed(() => {
-  return add(...modelScore.value)
-})
-
 const {
   rotate,
   scale,
@@ -205,7 +201,8 @@ const onSubmit = async () => {
   try {
     if (currentRfPaper.value) {
       await updateMarkScore({ id: currentRfPaper.value.id, scores: modelScore.value })
-      onRefresh()
+      currentRfPaper.value.score = add(...modelScore.value)
+      ElMessage.success('修改成功')
     }
   } catch (error) {
     console.error(error)

+ 6 - 6
src/modules/marking/arbitration/index.vue

@@ -59,8 +59,9 @@
 
 <script setup lang="tsx" name="MarkingArbitration">
 /** 仲裁卷查看 */
-import { reactive, ref, computed, watch, nextTick } from 'vue'
-import { ElButton } from 'element-plus'
+import { reactive, ref, computed, watch } from 'vue'
+import { ElButton, ElMessage } from 'element-plus'
+import { add } from '@/utils/common'
 import { useSetImgBg } from '@/hooks/useSetImgBg'
 import useFetch from '@/hooks/useFetch'
 import useVW from '@/hooks/useVW'
@@ -78,11 +79,9 @@ import RightButton from '@/components/shared/RightButton.vue'
 import ImagePreview from '@/components/shared/ImagePreview.vue'
 
 import type { SetImgBgOption } from '@/hooks/useSetImgBg'
-import type { ExtractApiParams, ExtractApiResponse, ExtractMultipleApiResponse } from '@/api/api'
+import type { ExtractApiParams, ExtractMultipleApiResponse } from '@/api/api'
 import type { MarkHeaderInstance, EpFormItem, EpTableColumn } from 'global-type'
 
-type RowType = ExtractMultipleApiResponse<'getArbitrationList'> & { index: number }
-
 const {
   rotate,
   scale,
@@ -224,7 +223,8 @@ const { fetch: markArbitrationPaper } = useFetch('markArbitrationPaper')
 const onSubmit = async () => {
   if (currentArbitration.value) {
     await markArbitrationPaper({ id: currentArbitration.value.id, scores: modelScore.value })
-    await onSearch()
+    currentArbitration.value.chiefScore = add(...modelScore.value)
+    ElMessage.success('修改成功')
   }
 }
 

+ 5 - 3
src/modules/marking/inquiry-result/index.vue

@@ -81,7 +81,8 @@
 /** 自定义查询结果 */
 import { ref, computed, watch, reactive } from 'vue'
 import { useRoute } from 'vue-router'
-import { ElButton, ElPagination } from 'element-plus'
+import { ElButton, ElPagination, ElMessage } from 'element-plus'
+import { add } from '@/utils/common'
 import { useSetImgBg } from '@/hooks/useSetImgBg'
 import useFetch from '@/hooks/useFetch'
 import useTable from '@/hooks/useTable'
@@ -100,7 +101,7 @@ import ImagePreview from '@/components/shared/ImagePreview.vue'
 import ScoringPanelWithConfirm from '@/components/shared/ScoringPanelWithConfirm.vue'
 
 import type { SetImgBgOption } from '@/hooks/useSetImgBg'
-import type { ExtractMultipleApiResponse, ExtractApiParams, ExtractApiResponse } from '@/api/api'
+import type { ExtractMultipleApiResponse, ExtractApiParams } from '@/api/api'
 import type { MarkHeaderInstance, EpTableColumn, EpFormItem } from 'global-type'
 
 type RowType = ExtractMultipleApiResponse<'getCustomQueryTasks'> & { index: number }
@@ -299,7 +300,8 @@ const onConfirmSetExpert = async () => {
 const onSubmit = async () => {
   if (current.value) {
     await useFetch('updateCustomPaperScore').fetch({ taskId: current.value.taskId, scores: modelScore.value })
-    await fetchTable()
+    current.value.headerScore = add(...modelScore.value)
+    ElMessage.success('修改成功')
   }
 }
 

+ 4 - 2
src/modules/marking/problem/index.vue

@@ -63,7 +63,8 @@
 <script setup lang="ts" name="MarkingProblem">
 /** 问题卷查看 */
 import { reactive, ref, computed, watch } from 'vue'
-import { ElButton } from 'element-plus'
+import { ElButton, ElMessage } from 'element-plus'
+import { add } from '@/utils/common'
 import { useSetImgBg } from '@/hooks/useSetImgBg'
 import useVW from '@/hooks/useVW'
 import useFetch from '@/hooks/useFetch'
@@ -249,7 +250,8 @@ const { fetch: markProblemPaper } = useFetch('markProblemPaper')
 const onSubmit = async () => {
   if (currentProblem.value) {
     await markProblemPaper({ id: currentProblem.value.id, scores: modelScore.value })
-    await onSearch()
+    currentProblem.value.markScore = add(...modelScore.value)
+    ElMessage.success('修改成功')
   }
 }
 

+ 5 - 3
src/modules/marking/repeat/index.vue

@@ -62,7 +62,8 @@
 <script setup lang="ts" name="MarkingRepeat">
 /** 重评卷查看 */
 import { reactive, ref, computed, watch, nextTick } from 'vue'
-import { ElButton } from 'element-plus'
+import { ElButton, ElMessage } from 'element-plus'
+import { add } from '@/utils/common'
 import { useSetImgBg } from '@/hooks/useSetImgBg'
 import useVW from '@/hooks/useVW'
 import useFetch from '@/hooks/useFetch'
@@ -80,7 +81,7 @@ import RightButton from '@/components/shared/RightButton.vue'
 import ImagePreview from '@/components/shared/ImagePreview.vue'
 
 import type { SetImgBgOption } from '@/hooks/useSetImgBg'
-import type { ExtractApiParams, ExtractApiResponse, ExtractMultipleApiResponse } from '@/api/api'
+import type { ExtractApiParams, ExtractMultipleApiResponse } from '@/api/api'
 import type { MarkHeaderInstance, EpFormItem, EpTableColumn } from 'global-type'
 
 type RowType = ExtractMultipleApiResponse<'getReMarkPaperList'> & { index: number }
@@ -221,7 +222,8 @@ const onSubmit = async () => {
   try {
     if (currentReMarkPaper.value) {
       await markReMarkPaper({ id: currentReMarkPaper.value.id, scores: modelScore.value })
-      await onSearch()
+      currentReMarkPaper.value.markerScore = add(...modelScore.value)
+      ElMessage.success('修改成功')
     }
   } catch (error) {
     console.error(error)

+ 1 - 1
src/modules/marking/similar/index.vue

@@ -47,7 +47,7 @@
 
 <script setup lang="ts" name="MarkingSimilar">
 /** 雷同卷查看 */
-import { reactive, ref, computed, watch, nextTick } from 'vue'
+import { reactive, computed, watch } from 'vue'
 import { ElButton, ElMessage } from 'element-plus'
 import { useSetImgBg } from '@/hooks/useSetImgBg'
 import useFetch from '@/hooks/useFetch'

+ 11 - 6
src/modules/monitor/system-check/index.vue

@@ -63,13 +63,19 @@
     @submit="onSubmit"
   ></scoring-panel-with-confirm>
   <mark-history-list :id="currentViewHistory?.taskId" v-model="visibleHistory"></mark-history-list>
-  <send-back-mark :id="currentSystemCheckPaper?.id" v-model="sendBackVisible" @rejected="onRejected"></send-back-mark>
+  <send-back-mark
+    :id="currentSystemCheckPaper?.id"
+    v-model="sendBackVisible"
+    type="system-check"
+    @rejected="onRejected"
+  ></send-back-mark>
 </template>
 
 <script setup lang="ts" name="SystemCheck">
 /** 系统抽查卷 */
 import { reactive, ref, computed, watch } from 'vue'
-import { ElButton } from 'element-plus'
+import { ElButton, ElMessage } from 'element-plus'
+import { add } from '@/utils/common'
 import { useSetImgBg } from '@/hooks/useSetImgBg'
 import useVW from '@/hooks/useVW'
 import useFetch from '@/hooks/useFetch'
@@ -88,11 +94,9 @@ import ScoringPanelWithConfirm from '@/components/shared/ScoringPanelWithConfirm
 import ImagePreview from '@/components/shared/ImagePreview.vue'
 
 import type { SetImgBgOption } from '@/hooks/useSetImgBg'
-import type { ExtractApiParams, ExtractApiResponse, ExtractMultipleApiResponse } from '@/api/api'
+import type { ExtractApiParams } from '@/api/api'
 import type { MarkHeaderInstance, EpFormItem, EpTableColumn } from 'global-type'
 
-type RowType = ExtractMultipleApiResponse<'getSystemSpotList'> & { index: number }
-
 const {
   rotate,
   scale,
@@ -259,7 +263,8 @@ const { fetch: markSystemSpotPaper } = useFetch('markSystemSpotPaper')
 const onSubmit = async () => {
   if (currentSystemCheckPaper.value) {
     await markSystemSpotPaper({ id: currentSystemCheckPaper.value.id, scores: modelScore.value })
-    onSearch()
+    currentSystemCheckPaper.value.headerScore = add(...modelScore.value)
+    ElMessage.success('修改成功')
   }
 }
 

+ 1 - 1
src/modules/monitor/training-monitoring-detail/index.vue

@@ -48,7 +48,7 @@
 
 <script setup lang="ts" name="TrainingMonitoringDetail">
 /** 培训监控调卷详情 */
-import { reactive, ref, computed } from 'vue'
+import { ref, computed } from 'vue'
 import { useRoute } from 'vue-router'
 import { ElButton } from 'element-plus'
 import { useSetImgBg } from '@/hooks/useSetImgBg'

+ 11 - 4
src/modules/quality/self-check-detail/index.vue

@@ -56,14 +56,20 @@
   ></scoring-panel-with-confirm>
   <image-preview v-model="previewModalVisible" :url="current?.filePath"></image-preview>
   <mark-history-list :id="currentViewHistory?.taskId" v-model="visibleHistory"></mark-history-list>
-  <send-back-mark :id="current?.taskId" v-model="sendBackVisible" @rejected="onRejected"></send-back-mark>
+  <send-back-mark
+    :id="current?.taskId"
+    v-model="sendBackVisible"
+    type="self-check"
+    @rejected="onRejected"
+  ></send-back-mark>
 </template>
 
 <script setup lang="ts" name="SelfCheckDetail">
 /** 自查数据详情 */
-import { reactive, ref, computed } from 'vue'
+import { ref, computed } from 'vue'
 import { useRoute } from 'vue-router'
-import { ElButton } from 'element-plus'
+import { ElButton, ElMessage } from 'element-plus'
+import { add } from '@/utils/common'
 import { useSetImgBg } from '@/hooks/useSetImgBg'
 import useFetch from '@/hooks/useFetch'
 import useMarkHeader from '@/hooks/useMarkHeader'
@@ -182,7 +188,8 @@ const { fetch: markSelfCheckData } = useFetch('markSelfCheckData')
 const onSubmit = async () => {
   if (current.value) {
     await markSelfCheckData({ taskId: current.value.taskId, scores: modelScore.value })
-    onRefresh()
+    current.value.markerScore = add(...modelScore.value)
+    ElMessage.success('修改成功')
   }
 }
 

+ 4 - 2
src/modules/quality/subjective-check/index.vue

@@ -74,7 +74,8 @@
 <script setup lang="ts" name="QualitySubjectiveCheck">
 /** 主观题校验 */
 import { reactive, ref, computed, watch } from 'vue'
-import { ElButton } from 'element-plus'
+import { ElButton, ElMessage } from 'element-plus'
+import { add } from '@/utils/common'
 import { useSetImgBg } from '@/hooks/useSetImgBg'
 import useFetch from '@/hooks/useFetch'
 import useVW from '@/hooks/useVW'
@@ -268,7 +269,8 @@ const { fetch: subjectiveCheckMark } = useFetch('subjectiveCheckMark')
 const onSubmit = async () => {
   if (currentSubjectiveCheck.value) {
     await subjectiveCheckMark({ taskId: currentSubjectiveCheck.value.taskId, scores: modelScore.value })
-    await onSearch()
+    currentSubjectiveCheck.value.markScore = add(...modelScore.value)
+    ElMessage.success('修改成功')
   }
 }