Browse Source

feat: bug fix

chenhao 2 năm trước cách đây
mục cha
commit
58cd70b2c0

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

@@ -174,7 +174,7 @@ export namespace Statistics {
     totalFinishCount: number
     totalFinishCount: number
   }
   }
   type GetMarkProgressByMarker = BaseDefine<
   type GetMarkProgressByMarker = BaseDefine<
-    { subjectCode: string; questionMainNumber?: number; markingGroupNumbers?: number },
+    { subjectCode: string; questionMainNumber?: number; markingGroupNumber?: number },
     MarkProgressByMarker[]
     MarkProgressByMarker[]
   >
   >
 
 

+ 1 - 1
src/api/marking.ts

@@ -41,7 +41,7 @@ const MarkingApi: DefineApiModule<Marking.ApiMap> = {
   /** 问题卷打分 */
   /** 问题卷打分 */
   markProblemPaper: '/api/problem/history/mark',
   markProblemPaper: '/api/problem/history/mark',
   /** 问题卷浏览 */
   /** 问题卷浏览 */
-  viewProblemPaper: 'api/problem/history/view',
+  viewProblemPaper: '/api/problem/history/view',
   /** 通过taskId 查询给分记录 */
   /** 通过taskId 查询给分记录 */
   getMarkScoreHistoryListWithTask: '/api/mark/history/task',
   getMarkScoreHistoryListWithTask: '/api/mark/history/task',
   /** 打回 */
   /** 打回 */

+ 3 - 0
src/components/shared/message/MessageHistory.vue

@@ -63,6 +63,9 @@ const onContentClick = (e: Event) => {
     .message-header {
     .message-header {
       color: $color--primary;
       color: $color--primary;
     }
     }
+    .message-info-content {
+      white-space: pre-wrap;
+    }
   }
   }
 }
 }
 </style>
 </style>

+ 1 - 0
src/components/shared/message/MessageList.vue

@@ -180,6 +180,7 @@ getMessageList().then((result) => (currentMessage.value = result?.[0]))
       .message-info-content {
       .message-info-content {
         border: $OnePixelLine;
         border: $OnePixelLine;
         font-size: $SmallFont;
         font-size: $SmallFont;
+        white-space: pre-wrap;
       }
       }
     }
     }
   }
   }

+ 3 - 2
src/hooks/useMessageLoop.ts

@@ -26,12 +26,13 @@ const useMessageLoop = () => {
   return unReadMessage
   return unReadMessage
 }
 }
 
 
-function createSharedComposable(composable: typeof useMessageLoop) {
+function createSharedComposable<Fn extends (...args: any[]) => any>(composable: Fn) {
   let subscribers = 0
   let subscribers = 0
   let state: ShallowRef<ExtractApiResponse<'getUnReadMessage'>> | null | undefined
   let state: ShallowRef<ExtractApiResponse<'getUnReadMessage'>> | null | undefined
   let scope: EffectScope | null
   let scope: EffectScope | null
 
 
   const dispose = () => {
   const dispose = () => {
+    console.log('dispose', scope)
     if (scope && --subscribers <= 0) {
     if (scope && --subscribers <= 0) {
       scope.stop()
       scope.stop()
       state = scope = null
       state = scope = null
@@ -42,7 +43,7 @@ function createSharedComposable(composable: typeof useMessageLoop) {
     subscribers++
     subscribers++
     if (!state) {
     if (!state) {
       scope = effectScope(true)
       scope = effectScope(true)
-      state = scope.run<ShallowRef<ExtractApiResponse<'getUnReadMessage'>>>(composable)
+      state = scope.run(composable)
     }
     }
     onScopeDispose(dispose)
     onScopeDispose(dispose)
     return state
     return state

+ 25 - 12
src/hooks/useOptions.ts

@@ -32,6 +32,14 @@ const useOptions = (
     return mainStore?.myUserInfo
     return mainStore?.myUserInfo
   })
   })
 
 
+  const isAdmin = computed(() => {
+    return userInfo?.value?.role === 'ADMIN'
+  })
+
+  const isChief = computed(() => {
+    return userInfo?.value?.role === 'CHIEF'
+  })
+
   const dataModel = reactive<DataModel>(unref(initModel) || {})
   const dataModel = reactive<DataModel>(unref(initModel) || {})
 
 
   if (isRef(initModel)) {
   if (isRef(initModel)) {
@@ -85,16 +93,20 @@ const useOptions = (
   })
   })
 
 
   const groupList = computed<Group[]>(() => {
   const groupList = computed<Group[]>(() => {
-    return groupListResult?.value?.map((n) => {
-      return {
-        value: n,
-        label: `第${n}组`,
-      }
-    })
+    const list =
+      groupListResult?.value?.map((n) => {
+        return {
+          value: n,
+          label: `第${n}组`,
+        }
+      }) || []
+    return list?.length && (isAdmin.value || isChief.value)
+      ? [{ label: '全部', value: void 0 } as unknown as Group].concat(list)
+      : list
   })
   })
 
 
   const groupListWithAll = computed(() => {
   const groupListWithAll = computed(() => {
-    return groupList.value?.length ? [{ label: '全部', value: void 0 } as unknown as Group].concat(groupList.value) : []
+    return groupList.value
   })
   })
 
 
   watch(
   watch(
@@ -106,7 +118,8 @@ const useOptions = (
       if (!dataModel.question && userInfo.value?.mainNumber) {
       if (!dataModel.question && userInfo.value?.mainNumber) {
         dataModel.question = userInfo.value.mainNumber
         dataModel.question = userInfo.value.mainNumber
       }
       }
-      if (!dataModel.group && userInfo.value?.markingGroupNumber) {
+
+      if (!dataModel.group && userInfo.value?.markingGroupNumber && !(isAdmin.value || isChief.value)) {
         dataModel.group = userInfo.value.markingGroupNumber
         dataModel.group = userInfo.value.markingGroupNumber
       }
       }
     },
     },
@@ -152,9 +165,9 @@ const useOptions = (
       { deep: true }
       { deep: true }
     )
     )
     watch(
     watch(
-      [groupList, userInfo],
+      [groupList, userInfo, isAdmin, isChief],
       () => {
       () => {
-        if (userInfo.value?.markingGroupNumber && !dataModel.question) {
+        if (userInfo.value?.markingGroupNumber && !dataModel.question && !(isAdmin.value || isChief.value)) {
           changeModelValue('group')(userInfo.value?.markingGroupNumber)
           changeModelValue('group')(userInfo.value?.markingGroupNumber)
         }
         }
       },
       },
@@ -165,9 +178,9 @@ const useOptions = (
   const initFinish = ref<boolean>(false)
   const initFinish = ref<boolean>(false)
 
 
   const destroyInit = watch(
   const destroyInit = watch(
-    dataModel,
+    [dataModel, isAdmin, isChief],
     () => {
     () => {
-      if (types.every((t) => dataModel[t])) {
+      if (types.every((t) => dataModel[t] || (t === 'group' && (isAdmin.value || isChief.value)))) {
         nextTick(() => {
         nextTick(() => {
           initCallbacks.forEach((cb) => cb(dataModel))
           initCallbacks.forEach((cb) => cb(dataModel))
           initFinish.value = true
           initFinish.value = true

+ 9 - 2
src/modules/admin-subject/manage/index.vue

@@ -122,7 +122,10 @@ const { formRef, elFormRef } = useForm()
 const rules = computed<EpFormRules>(() => {
 const rules = computed<EpFormRules>(() => {
   return {
   return {
     code: [{ required: !editInfo.id, message: '请填写科目代码' }],
     code: [{ required: !editInfo.id, message: '请填写科目代码' }],
-    name: [{ required: true, message: '请填写科目名称' }],
+    name: [
+      { required: true, message: '请填写科目名称' },
+      { max: 40, message: '科目名称限制50字以内' },
+    ],
   }
   }
 })
 })
 
 
@@ -177,7 +180,11 @@ function toggleEnable(row: ExtractMultipleApiResponse<'getSubjectList'>) {
 const { fetch: deleteSubject } = useFetch('deleteSubject')
 const { fetch: deleteSubject } = useFetch('deleteSubject')
 
 
 function onDelete(row: ExtractMultipleApiResponse<'getSubjectList'>) {
 function onDelete(row: ExtractMultipleApiResponse<'getSubjectList'>) {
-  row.id && deleteSubject({ id: row.id }).then(fetchTable)
+  row.id &&
+    deleteSubject({ id: row.id }).then(() => {
+      forceRefresh()
+      fetchTable()
+    })
 }
 }
 </script>
 </script>
 
 

+ 3 - 3
src/modules/analysis/marking-progress/components/GroupProgress.vue

@@ -29,7 +29,7 @@ const { groupListWithAll, dataModel, changeModelValue, onOptionInit } = useOptio
 const model = reactive<ExtractApiParams<'getMarkProgressByMarker'>>({
 const model = reactive<ExtractApiParams<'getMarkProgressByMarker'>>({
   subjectCode: dataModel.subject || '',
   subjectCode: dataModel.subject || '',
   questionMainNumber: dataModel.question,
   questionMainNumber: dataModel.question,
-  markingGroupNumbers: dataModel.group,
+  markingGroupNumber: dataModel.group,
 })
 })
 
 
 const { fetch, result } = useFetch('getMarkProgressByMarker')
 const { fetch, result } = useFetch('getMarkProgressByMarker')
@@ -47,7 +47,7 @@ const onExport = () => {
 watch(dataModel, () => {
 watch(dataModel, () => {
   model.subjectCode = dataModel.subject || ''
   model.subjectCode = dataModel.subject || ''
   model.questionMainNumber = dataModel.question
   model.questionMainNumber = dataModel.question
-  model.markingGroupNumbers = dataModel.group
+  model.markingGroupNumber = dataModel.group
 })
 })
 
 
 onOptionInit(onSearch)
 onOptionInit(onSearch)
@@ -60,7 +60,7 @@ const items = computed<EpFormItem[]>(() => [
   OneRow({
   OneRow({
     label: '小组',
     label: '小组',
     slotType: 'select',
     slotType: 'select',
-    prop: 'markingGroupNumbers',
+    prop: 'markingGroupNumber',
     slot: { options: groupListWithAll.value, onChange: changeModelValue('group') },
     slot: { options: groupListWithAll.value, onChange: changeModelValue('group') },
   }),
   }),
   OneRow({ slotName: 'operation' }),
   OneRow({ slotName: 'operation' }),

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

@@ -219,7 +219,7 @@ const { fetch: markArbitrationPaper } = useFetch('markArbitrationPaper')
 const onSubmit = async () => {
 const onSubmit = async () => {
   if (currentArbitration.value) {
   if (currentArbitration.value) {
     await markArbitrationPaper({ id: currentArbitration.value.id, scores: modelScore.value })
     await markArbitrationPaper({ id: currentArbitration.value.id, scores: modelScore.value })
-    onSearch()
+    await onSearch()
   }
   }
 }
 }
 
 

+ 2 - 1
src/modules/quality/spot-check/index.vue

@@ -51,7 +51,8 @@ watch(
     if (model.questionMainNumber) {
     if (model.questionMainNumber) {
       getUserList({ enable: true, mainNumber: model.questionMainNumber, role: 'DEPUTY', pageNumber: 1, pageSize: 9999 })
       getUserList({ enable: true, mainNumber: model.questionMainNumber, role: 'DEPUTY', pageNumber: 1, pageSize: 9999 })
     }
     }
-  }
+  },
+  { immediate: true }
 )
 )
 
 
 const OneRowSpan5 = defineColumn(_, 'row-1', { span: 5 })
 const OneRowSpan5 = defineColumn(_, 'row-1', { span: 5 })