瀏覽代碼

bug fix and release

刘洋 2 年之前
父節點
當前提交
d54453d5ae

+ 2 - 1
server.config.ts

@@ -4,9 +4,10 @@ const server: ServerOptions = {
   proxy: {
     '^/?(api|file)/': {
       // target: 'http://192.168.10.41:8200',
+      target: 'http://192.168.10.178:8200',
       // target: 'http://192.168.10.107:8200',
       // target: 'http://cet-test.markingtool.cn',
-      target: 'http://192.168.10.136:80',
+      // target: 'http://192.168.10.136:80',
       // target: 'http://cet-dev.markingtool.cn:8200',
     },
   },

+ 6 - 0
src/api/api-types/system.d.ts

@@ -38,6 +38,7 @@ export namespace System {
     separator: string
     /** 科目代码 */
     subjectCode: string
+    clear?: boolean
   }
 
   type ImportSamplePaper = BaseDefine<SamplePaperImport>
@@ -52,10 +53,14 @@ export namespace System {
     subjectCode: string
     /** 分隔符 */
     separator: string
+    clear?: boolean
+    paperType?: string
   }
 
   type ImportRfPaper = BaseDefine<RfPaperImport>
 
+  type ImportCheck = BaseDefine<any, any>
+
   interface importOrExportItem {
     filePath: string
     id: number
@@ -143,6 +148,7 @@ export namespace System {
     getImportFilePath: GetImportFilePath
     importSamplePaper: ImportSamplePaper
     importRfPaper: ImportRfPaper
+    importCheck: ImportCheck
     getCetScoreList: GetCetScoreList
     exportCetScoreList: ExportCetScoreList
     /** 任务设置 - 按评卷员设置 */

+ 5 - 2
src/api/system.ts

@@ -20,7 +20,8 @@ const SystemApi: DefineApiModule<System.ApiMap> = {
   getImportFilePath: '/api/reference/paper/file/path',
   /** 导入培训卷 */
   importSamplePaper: {
-    url: '/api/reference/paper/import/samp',
+    // url: '/api/reference/paper/import/samp',
+    url: '/api/reference/paper/import',
     headers: {
       'Content-Type': 'multipart/form-data',
     },
@@ -28,12 +29,14 @@ const SystemApi: DefineApiModule<System.ApiMap> = {
   },
   /** 导入RF卷 */
   importRfPaper: {
-    url: '/api/reference/paper/import/rf',
+    // url: '/api/reference/paper/import/rf',
+    url: '/api/reference/paper/import',
     headers: {
       'Content-Type': 'multipart/form-data',
     },
     timeout: 0,
   },
+  importCheck: '/api/reference/paper/import/check',
   /** CET成绩列表 */
   getCetScoreList: '/api/student/page',
   /** CET成绩导出接口 */

+ 7 - 0
src/assets/styles/app.scss

@@ -122,6 +122,13 @@ img {
   .next-button{
     z-index:5;
   }
+  .mark-score{
+    z-index: 5;
+    color:red;
+    font-size:50px;
+    left:30px;
+    top:20px;
+  }
 }
 .table-view{
   transition:all .3s;

+ 1 - 1
src/components/shared/RemarkListModal.vue

@@ -8,7 +8,7 @@
       :columns="tableColumns"
       :data="markHistoryList"
       highlight-current-row
-      max-height="620"
+      max-height="600px"
       @current-change="onCurrentChange"
     ></base-table>
     <div v-else class="flex flex-wrap preview-list">

+ 3 - 1
src/components/shared/ScoringPanelItem.vue

@@ -2,7 +2,9 @@
   <div class="flex scoring-panel" :class="getClass('modal-panel', 'sticky')">
     <toggle-dialog-render>
       <svg-icon name="question"></svg-icon>
-      <span class="m-l-mini">{{ question.mainNumber }} - {{ question.subNumber }}{{ question.mainTitle }}</span>
+      <span class="m-l-mini" style="max-width: 200px"
+        >{{ question.mainNumber }} - {{ question.subNumber }}{{ question.mainTitle }}</span
+      >
       <!-- <template #callback>
         <div class="grid radius-base dialog-name">
           <div class="text-center">

+ 61 - 8
src/modules/admin-data/paper/components/rf.vue

@@ -41,18 +41,35 @@
       <el-button type="primary" :loading="loading" @click="onSubmit">确定导入</el-button>
     </el-form-item>
   </base-form>
+  <base-dialog v-model="importMethodVisible" title="选择导入方式" destroy-on-close :width="350">
+    <!-- <base-form ref="formRef" :model="model" :items="items" :rules="rules" :label-width="useVW(72)"> -->
+    <div style="color: red; font-size: 14px">已有数据,是否继续导入?</div>
+    <el-radio-group v-model="clearMethod" size="large" style="text-align: center">
+      <el-radio label="追加导入" />
+      <el-radio v-if="curCheckStatus === 'CHOOSE'" label="清空导入" />
+    </el-radio-group>
+    <template #footer>
+      <div class="flex justify-end">
+        <confirm-button @confirm="sureImport" @cancel="cancelImport"></confirm-button>
+      </div>
+    </template>
+
+    <!-- </base-form> -->
+  </base-dialog>
 </template>
 
 <script setup lang="ts" name="ImportRF">
 /** 导入RF卷 */
 import { reactive, watch, computed, ref } from 'vue'
-import { ElFormItem, ElButton, ElUpload, ElInput, ElMessage, ElProgress } from 'element-plus'
+import { ElFormItem, ElButton, ElUpload, ElInput, ElMessage, ElProgress, ElRadioGroup, ElRadio } from 'element-plus'
 import BaseForm from '@/components/element/BaseForm.vue'
 import useFetch from '@/hooks/useFetch'
 import useForm from '@/hooks/useForm'
 import useOptions from '@/hooks/useOptions'
 import useUploadFile from '@/hooks/useUploadFile'
 import useVW from '@/hooks/useVW'
+import BaseDialog from '@/components/element/BaseDialog.vue'
+import ConfirmButton from '@/components/common/ConfirmButton.vue'
 
 import type { FormGroup, EpFormItem, EpFormRules } from 'global-type'
 import type { ExtractApiParams } from '@/api/api'
@@ -66,6 +83,7 @@ const { fileList, upload, percentage, setPercentage, onExceed, onUploadProgress,
 const { fetch: getImportFilePath, result: filePath } = useFetch('getImportFilePath')
 
 const { fetch, loading } = useFetch('importRfPaper', { onUploadProgress })
+const { fetch: checkFetch, loading: checkLoading } = useFetch('importCheck')
 
 const model = reactive<ExtractApiParams<'importRfPaper'>>({
   file: void 0,
@@ -169,17 +187,52 @@ const items = computed<EpFormItem[]>(() => {
   ]
 })
 
+const clearMethod = ref('追加导入')
+const importMethodVisible = ref(false)
+const curCheckStatus = ref('')
+const clear = ref(false)
+const sureImport = () => {
+  clear.value = clearMethod.value === '清空导入'
+  submitHandler()
+}
+const cancelImport = () => {
+  importMethodVisible.value = false
+}
+const submitHandler = async () => {
+  showProgress.value = true
+  setPercentage(0)
+  await fetch({ ...model, clear: clear.value, paperType: 'RF' })
+  setPercentage(100)
+  ElMessage.success(`导入成功`)
+  elFormRef?.value?.resetFields()
+  reset()
+  importMethodVisible.value = false
+}
 async function onSubmit() {
   try {
     const valid = await elFormRef?.value?.validate()
     if (valid) {
-      showProgress.value = true
-      setPercentage(0)
-      await fetch(model)
-      setPercentage(100)
-      ElMessage.success(`导入成功`)
-      elFormRef?.value?.resetFields()
-      reset()
+      let checkRes: any = await checkFetch({
+        mainNumber: model.mainNumber,
+        subjectCode: model.subjectCode,
+        paperType: 'RF',
+      })
+      console.log('checkRes:', checkRes)
+      curCheckStatus.value = checkRes
+      clearMethod.value = '追加导入'
+      clear.value = false
+      if (checkRes === 'CHOOSE' || checkRes === 'APPEND') {
+        importMethodVisible.value = true
+      } else {
+        submitHandler()
+      }
+      // showProgress.value = true
+      // setPercentage(0)
+      // await fetch(model)
+      // setPercentage(100)
+      // ElMessage.success(`导入成功`)
+      // elFormRef?.value?.resetFields()
+      // reset()
     }
   } catch (error) {
     showProgress.value = false

+ 62 - 8
src/modules/admin-data/paper/components/sample.vue

@@ -41,18 +41,35 @@
       <el-button type="primary" :loading="loading" @click="onSubmit">确定导入</el-button>
     </el-form-item>
   </base-form>
+  <base-dialog v-model="importMethodVisible" title="选择导入方式" destroy-on-close :width="350">
+    <!-- <base-form ref="formRef" :model="model" :items="items" :rules="rules" :label-width="useVW(72)"> -->
+    <div style="color: red; font-size: 14px">已有数据,是否继续导入?</div>
+    <el-radio-group v-model="clearMethod" size="large" style="text-align: center">
+      <el-radio label="追加导入" />
+      <el-radio v-if="curCheckStatus === 'CHOOSE'" label="清空导入" />
+    </el-radio-group>
+    <template #footer>
+      <div class="flex justify-end">
+        <confirm-button @confirm="sureImport" @cancel="cancelImport"></confirm-button>
+      </div>
+    </template>
+
+    <!-- </base-form> -->
+  </base-dialog>
 </template>
 
 <script setup lang="ts" name="ImportSample">
 /** 导入培训卷 */
 import { reactive, watch, computed, ref } from 'vue'
-import { ElFormItem, ElButton, ElUpload, ElInput, ElMessage, ElProgress } from 'element-plus'
+import { ElFormItem, ElButton, ElUpload, ElInput, ElMessage, ElProgress, ElRadioGroup, ElRadio } from 'element-plus'
 import BaseForm from '@/components/element/BaseForm.vue'
 import useFetch from '@/hooks/useFetch'
 import useForm from '@/hooks/useForm'
 import useOptions from '@/hooks/useOptions'
 import useUploadFile from '@/hooks/useUploadFile'
 import useVW from '@/hooks/useVW'
+import BaseDialog from '@/components/element/BaseDialog.vue'
+import ConfirmButton from '@/components/common/ConfirmButton.vue'
 
 import type { FormGroup, EpFormItem, EpFormRules } from 'global-type'
 import type { ExtractApiParams } from '@/api/api'
@@ -64,6 +81,7 @@ const { fileList, upload, percentage, setPercentage, onExceed, onUploadProgress,
 const { fetch: getImportFilePath, result: filePath } = useFetch('getImportFilePath')
 
 const { fetch, loading } = useFetch('importSamplePaper', { onUploadProgress })
+const { fetch: checkFetch, loading: checkLoading } = useFetch('importCheck')
 
 const model = reactive<ExtractApiParams<'importSamplePaper'>>({
   file: void 0,
@@ -185,17 +203,53 @@ const items = computed<EpFormItem[]>(() => {
   ]
 })
 
+const clearMethod = ref('追加导入')
+const importMethodVisible = ref(false)
+const curCheckStatus = ref('')
+const clear = ref(false)
+const sureImport = () => {
+  clear.value = clearMethod.value === '清空导入'
+  submitHandler()
+}
+const cancelImport = () => {
+  importMethodVisible.value = false
+}
+const submitHandler = async () => {
+  showProgress.value = true
+  setPercentage(0)
+  await fetch({ ...model, clear: clear.value })
+  setPercentage(100)
+  ElMessage.success(`导入成功`)
+  elFormRef?.value?.resetFields()
+  reset()
+  importMethodVisible.value = false
+}
 async function onSubmit() {
   try {
     const valid = await elFormRef?.value?.validate()
     if (valid) {
-      showProgress.value = true
-      setPercentage(0)
-      await fetch(model)
-      setPercentage(100)
-      ElMessage.success(`导入成功`)
-      elFormRef?.value?.resetFields()
-      reset()
+      let checkRes: any = await checkFetch({
+        mainNumber: model.mainNumber,
+        subjectCode: model.subjectCode,
+        paperType: model.paperType,
+      })
+      console.log('checkRes:', checkRes)
+      curCheckStatus.value = checkRes
+      clearMethod.value = '追加导入'
+      clear.value = false
+      if (checkRes === 'CHOOSE' || checkRes === 'APPEND') {
+        importMethodVisible.value = true
+      } else {
+        submitHandler()
+      }
+
+      // showProgress.value = true
+      // setPercentage(0)
+      // await fetch(model)
+      // setPercentage(100)
+      // ElMessage.success(`导入成功`)
+      // elFormRef?.value?.resetFields()
+      // reset()
     }
   } catch (error) {
     showProgress.value = false

+ 9 - 1
src/modules/analysis/group-monitoring-detail/index.vue

@@ -57,7 +57,8 @@
     <div class="flex-1 p-t-base flex overflow-hidden">
       <div class="flex direction-column flex-1 overflow-hidden radius-base fill-blank relative paper-view">
         <div class="flex-1 p-extra-small scroll-auto img-wrap">
-          <img :src="current?.filePath" alt="" class="paper-img" />
+          <img :src="current?.filePath" alt="" class="paper-img relative" />
+          <p v-if="current" class="absolute mark-score">{{ current.headerScore ?? current.markerScore }}</p>
         </div>
         <span class="preview" @click="onPreview">
           <svg-icon name="preview"></svg-icon>
@@ -326,11 +327,18 @@ fetchTable()
 </script>
 
 <style scoped lang="scss">
+.mark-score {
+  color: red;
+  font-size: 50px;
+  left: 30px;
+  top: 20px;
+}
 .header-view {
   border-bottom: $OnePixelLine;
 }
 .detail-info {
   height: 280px;
+
   .detail-info-chart {
     border-right: $OnePixelLine;
   }

+ 1 - 1
src/modules/analysis/personnel-compare/index.vue

@@ -134,7 +134,7 @@ watch(dataType, () => {
   curRow.value = null
 })
 watch(allTableData, () => {
-  if (!multLineXdatas.value.length) {
+  if (!multLineXdatas.value.length && allTableData.value.length) {
     multLineXdatas.value = allTableData.value[0].segmentScores.map((item: any) => {
       return item.scoreStart
     })

+ 31 - 5
src/modules/analysis/personnel-statistics/components/StatisticsPersonnel.vue

@@ -7,7 +7,7 @@
       size="small"
       :data="tableData"
       :columns="columns"
-      :height="'300px'"
+      :height="tableHeight"
       highlight-current-row
       @current-change="onCurrentChange"
       @row-dblclick="onDbClick"
@@ -40,7 +40,9 @@
       </template>
     </base-table>
   </div>
-  <div class="flex justify-between m-t-base">
+  <div v-if="!!current" v-loading="loading1 || loading2" class="flex justify-between m-t-base charts-box">
+    <el-button type="primary" plain size="small" class="close-panel" @click="clearCheck">关闭</el-button>
+
     <div class="flex-1 p-base radius-base fill-blank m-r-base chart-box">
       <vue-e-charts class="full" :option="markerSubjectiveChartsOption"></vue-e-charts>
     </div>
@@ -196,7 +198,7 @@ const data = computed(() => {
   return props.data || []
 })
 
-const { tableRef, tableData, current, onCurrentChange, onDbClick, currentView } = useTableCheck(data)
+const { tableRef, tableData, current, onCurrentChange, onDbClick, currentView, elTableRef } = useTableCheck(data, false)
 
 watch(tableData, () => {
   popovers.value = {}
@@ -211,8 +213,16 @@ watch(currentView, () => {
   }
 })
 
-const { fetch: getStatisticObjectiveByMarker, result: objectiveByMarker } = useFetch('getStatisticObjectiveByMarker')
-const { fetch: getStatisticSubjectiveByMarker, result: subjectiveByMarker } = useFetch('getStatisticSubjectiveByMarker')
+const {
+  fetch: getStatisticObjectiveByMarker,
+  result: objectiveByMarker,
+  loading: loading1,
+} = useFetch('getStatisticObjectiveByMarker')
+const {
+  fetch: getStatisticSubjectiveByMarker,
+  result: subjectiveByMarker,
+  loading: loading2,
+} = useFetch('getStatisticSubjectiveByMarker')
 
 watch(
   [() => props.params, current],
@@ -364,10 +374,26 @@ const markerObjectiveChartsOption = computed<EChartsOption>(() => {
     ],
   }
 })
+const tableHeight = computed(() => {
+  return !!current.value ? 'calc(100vh - 520px)' : 'calc(100vh - 219px)'
+})
+const clearCheck = () => {
+  ;(elTableRef as any).value!.setCurrentRow(undefined)
+}
 </script>
 
 <style scoped lang="scss">
 .chart-box {
   height: 293px;
 }
+.charts-box {
+  position: relative;
+  .close-panel {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    transform: translateX(-50%) translateY(-50%);
+    z-index: 1;
+  }
+}
 </style>

+ 6 - 3
src/modules/analysis/view-marked-detail/index.vue

@@ -78,7 +78,7 @@
 <script setup lang="ts" name="AnalysisViewMarked">
 // <script setup lang="ts" name="ViewMarkedDetail">
 /** 提取阅卷明细 */
-import { ref, computed } from 'vue'
+import { ref, computed, watch } from 'vue'
 import { useRoute } from 'vue-router'
 import { ElButton, ElMessage, ElPagination } from 'element-plus'
 import { add } from '@/utils/common'
@@ -195,11 +195,14 @@ const { fetch: updatePersonalMarkDetailScore } = useFetch('updatePersonalMarkDet
 const onSubmit = async () => {
   if (current.value) {
     await updatePersonalMarkDetailScore({ taskId: current.value.taskId, scores: modelScore.value })
-    current.value.markerScore = add(...modelScore.value)
+    // current.value.markerScore = add(...modelScore.value)
     ElMessage.success('修改成功')
+    onRefresh()
   }
 }
-
+// watch(current, () => {
+//   modelScore.value = [current.value?.markerScore || 0]
+// })
 const imgOption = computed<SetImgBgOption>(() => {
   return {
     image: current?.value?.filePath || '',

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

@@ -17,8 +17,9 @@
           <svg-icon name="preview"></svg-icon>
         </span>
         <right-button class="next-button" @click="checkNext" />
-        <div class="flex-1 p-base scroll-auto mark-content-paper img-wrap">
+        <div class="flex-1 p-base scroll-auto mark-content-paper img-wrap relative">
           <img :src="dataUrl" alt="" class="paper-img" :style="{ 'background-color': frontColor }" />
+          <p v-if="currentAssessPaper" class="absolute mark-score">{{ currentAssessPaper.score }}</p>
         </div>
         <scoring-panel-with-confirm
           v-model:visible="editScoreVisible"

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

@@ -17,8 +17,9 @@
           <svg-icon name="preview"></svg-icon>
         </span>
         <right-button class="next-button" @click="checkNext" />
-        <div class="flex-1 p-base scroll-auto mark-content-paper img-wrap">
+        <div class="flex-1 p-base scroll-auto mark-content-paper img-wrap relative">
           <img :src="dataUrl" alt="" class="paper-img" :style="{ 'background-color': frontColor }" />
+          <p v-if="currentExpertPaper" class="absolute mark-score">{{ currentExpertPaper.score }}</p>
         </div>
         <scoring-panel-with-confirm
           v-model:visible="editScoreVisible"

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

@@ -17,8 +17,9 @@
           <svg-icon name="preview"></svg-icon>
         </span>
         <right-button class="next-button" @click="checkNext" />
-        <div class="flex-1 p-base scroll-auto mark-content-paper img-wrap">
+        <div class="flex-1 p-base scroll-auto mark-content-paper img-wrap relative">
           <img :src="dataUrl" alt="" class="paper-img" :style="{ 'background-color': frontColor }" />
+          <p v-if="currentRfPaper" class="absolute mark-score">{{ currentRfPaper.score }}</p>
         </div>
         <scoring-panel-with-confirm
           v-model:visible="editScoreVisible"
@@ -205,8 +206,9 @@ const onSubmit = async () => {
   try {
     if (currentRfPaper.value) {
       await updateMarkScore({ id: currentRfPaper.value.id, scores: modelScore.value })
-      currentRfPaper.value.score = add(...modelScore.value)
+      // currentRfPaper.value.score = add(...modelScore.value)
       ElMessage.success('修改成功')
+      onSearch()
     }
   } catch (error) {
     console.error(error)

+ 2 - 1
src/modules/expert/standard/index.vue

@@ -9,8 +9,9 @@
           <svg-icon name="preview"></svg-icon>
         </span>
         <right-button class="next-button" @click="checkNext" />
-        <div class="flex-1 p-base scroll-auto mark-content-paper img-wrap">
+        <div class="flex-1 p-base scroll-auto mark-content-paper img-wrap relative">
           <img :src="dataUrl" alt="" class="paper-img" :style="{ 'background-color': frontColor }" />
+          <p v-if="currentStandardPaper" class="absolute mark-score">{{ currentStandardPaper.score }}</p>
         </div>
       </div>
       <div class="flex direction-column p-base radius-base fill-blank scroll-auto m-l-base table-view">

+ 2 - 1
src/modules/expert/training/index.vue

@@ -15,8 +15,9 @@
           <svg-icon name="preview"></svg-icon>
         </span>
         <right-button class="next-button" @click="checkNext" />
-        <div class="flex-1 p-base scroll-auto mark-content-paper img-wrap">
+        <div class="flex-1 p-base scroll-auto mark-content-paper img-wrap relative">
           <img :src="dataUrl" alt="" class="paper-img" :style="{ 'background-color': frontColor }" />
+          <p v-if="current" class="absolute mark-score">{{ current.score }}</p>
         </div>
       </div>
       <div class="flex direction-column p-base radius-base fill-blank m-l-base table-view">

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

@@ -256,6 +256,7 @@ const {
 watch(current, () => {
   if (current.value) {
     useFetch('viewCustomQuery').fetch({ taskId: current.value.taskId })
+    modelScore.value = [current.value?.headerScore ?? (current.value?.markerScore || 0)]
   }
 })
 
@@ -286,13 +287,21 @@ const items = computed<EpFormItem[]>(() => {
   ]
   let forceGroupNumberItems: EpFormItem[] = [
     {
-      label: '考核卷组',
+      label: '培训卷组',
+      prop: 'forceGroupNumber',
+      slotType: 'radio',
+      slot: {
+        options: [{ label: 'A' }, { label: 'B' }],
+      },
+    },
+    {
+      label: '强制考核卷组',
       prop: 'forceGroupNumber',
       slotType: 'radio',
       slot: {
         options: [
-          { label: 'A' },
-          { label: 'B' },
+          // { label: 'A' },
+          // { label: 'B' },
           ...Array.from({ length: 10 }).map((_, index) => ({ label: `${index + 1}` })),
         ],
       },

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

@@ -22,7 +22,20 @@
         <right-button class="next-button" @click="checkNext" />
         <div class="flex-1 p-base scroll-auto mark-content-paper img-wrap">
           <img :src="dataUrl" alt="" class="paper-img" :style="{ 'background-color': frontColor }" />
+          <p v-if="currentSystemCheckPaper" class="absolute mark-score">
+            {{ currentSystemCheckPaper.headerScore ?? currentSystemCheckPaper.markScore }}
+          </p>
         </div>
+        <scoring-panel-with-confirm
+          :id="currentSystemCheckPaper?.taskId"
+          v-model:visible="scoringPanelVisible"
+          v-model:score="modelScore"
+          modal
+          :toggle-modal="false"
+          :auto-visible="false"
+          :main-number="currentSystemCheckPaper?.mainNumber"
+          @submit="onSubmit"
+        ></scoring-panel-with-confirm>
       </div>
       <div class="flex direction-column p-base radius-base fill-blank m-l-base table-view">
         <base-form size="small" :model="formModel" :items="formItems" :label-width="'52px'">
@@ -64,17 +77,6 @@
         </div>
       </div>
     </div>
-
-    <scoring-panel-with-confirm
-      :id="currentSystemCheckPaper?.taskId"
-      v-model:visible="scoringPanelVisible"
-      v-model:score="modelScore"
-      modal
-      :toggle-modal="false"
-      :auto-visible="false"
-      :main-number="currentSystemCheckPaper?.mainNumber"
-      @submit="onSubmit"
-    ></scoring-panel-with-confirm>
   </div>
   <image-preview v-model="previewModalVisible" :url="currentSystemCheckPaper?.filePath"></image-preview>
 
@@ -283,6 +285,7 @@ const {
 watch(currentSystemCheckPaper, () => {
   if (currentSystemCheckPaper.value) {
     useFetch('viewSystemSpotPaper').fetch({ id: currentSystemCheckPaper.value.id })
+    modelScore.value = [currentSystemCheckPaper.value?.headerScore ?? (currentSystemCheckPaper.value?.markScore || 0)]
   }
 })
 

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

@@ -49,7 +49,7 @@
   <mark-history-list :id="currentViewHistory?.taskId" v-model="visibleHistory"></mark-history-list>
 </template>
 
-<script setup lang="ts" name="TrainingMonitoringDetail">
+<script setup lang="ts" name="TrainingDetail">
 /** 培训监控调卷详情 */
 import { ref, computed } from 'vue'
 import { useRoute } from 'vue-router'

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

@@ -21,6 +21,16 @@
         <div class="flex-1 p-base scroll-auto mark-content-paper img-wrap">
           <img :src="dataUrl" alt="" class="paper-img" :style="{ 'background-color': frontColor }" />
         </div>
+        <scoring-panel-with-confirm
+          :id="current?.taskId"
+          v-model:visible="editScoreVisible"
+          v-model:score="modelScore"
+          :main-number="current?.mainNumber"
+          modal
+          :toggle-modal="false"
+          :auto-visible="false"
+          @submit="onSubmit"
+        ></scoring-panel-with-confirm>
       </div>
       <div class="flex direction-column p-base radius-base fill-blank m-l-base table-view">
         <div class="flex items-center justify-between detail-info-table-header">
@@ -46,16 +56,6 @@
         </div>
       </div>
     </div>
-    <scoring-panel-with-confirm
-      :id="current?.taskId"
-      v-model:visible="editScoreVisible"
-      v-model:score="modelScore"
-      :main-number="current?.mainNumber"
-      modal
-      :toggle-modal="false"
-      :auto-visible="false"
-      @submit="onSubmit"
-    ></scoring-panel-with-confirm>
   </div>
 
   <image-preview v-model="previewModalVisible" :url="current?.filePath"></image-preview>

+ 1 - 0
src/router/index.ts

@@ -43,6 +43,7 @@ const pageJumpsMap: any = {
   AnalysisGroupMonitoring: ['AnalysisGroupDetail'],
   MarkingInquiry: ['MarkingInquiryResult'],
   QualitySelfCheck: ['QualitySelfCheckDetail'],
+  TrainingMonitoring: ['TrainingDetail'],
 }
 const keepAliveJupms = (from: any, to: any) => {
   const mStore = useMainStore()