Răsfoiți Sursa

fix: 修复设置任务

chenhao 2 ani în urmă
părinte
comite
f133256b0b

+ 9 - 5
src/modules/admin-data/task-setting/components/GroupSetting.vue

@@ -24,11 +24,15 @@ const columns: EpTableColumn[] = [
   { label: '已完成量', prop: 'finishCount' },
 ]
 
-watch(props, () => {
-  if (props.mainNumber && props.markingGroupNumber && props.subjectCode) {
-    getTaskDetail({ ...props })
-  }
-})
+watch(
+  props,
+  () => {
+    if (props.mainNumber && props.markingGroupNumber && props.subjectCode) {
+      getTaskDetail({ ...props })
+    }
+  },
+  { immediate: true }
+)
 </script>
 
 <style scoped lang="scss"></style>

+ 10 - 0
src/modules/admin-data/task-setting/components/MarkerSetting.vue

@@ -4,10 +4,16 @@
 
 <script setup lang="ts" name="MarkerSetting">
 /** 任务设置 - 按评卷员设置 */
+import { watch } from 'vue'
 import useFetch from '@/hooks/useFetch'
 import BaseTable from '@/components/element/BaseTable.vue'
 
 import type { EpTableColumn } from 'global-type'
+import type { ExtractMultipleApiResponse } from 'api-type'
+
+const emit = defineEmits<{
+  (e: 'user-list', list: ExtractMultipleApiResponse<'getUserList'>[]): void
+}>()
 
 const { fetch: getUserList, result: userList } = useFetch('getUserList')
 
@@ -18,6 +24,10 @@ const columns: EpTableColumn[] = [
 ]
 
 getUserList({ pageNumber: 1, pageSize: 9999, role: 'MARKER' })
+
+watch(userList, () => {
+  emit('user-list', userList.value?.result)
+})
 </script>
 
 <style scoped lang="scss"></style>

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

@@ -17,7 +17,12 @@
         </template>
       </base-form>
       <div class="m-t-base">
-        <component :is="TableComponent" v-bind="taskSettingModel"></component>
+        <component
+          :is="TableComponent"
+          v-bind="taskSettingModel"
+          :key="refresh"
+          @user-list="onUserListChange"
+        ></component>
       </div>
     </div>
   </div>
@@ -25,8 +30,8 @@
 
 <script setup lang="ts" name="DataTaskSetting">
 /** 任务设置 */
-import { reactive, nextTick, computed, watch } from 'vue'
-import { ElButton } from 'element-plus'
+import { ref, reactive, computed, watch } from 'vue'
+import { ElButton, ElMessage } from 'element-plus'
 import useFetch from '@/hooks/useFetch'
 import useOptions from '@/hooks/useOptions'
 import useForm from '@/hooks/useForm'
@@ -35,12 +40,14 @@ import BaseForm from '@/components/element/BaseForm.vue'
 import GroupSetting from './components/GroupSetting.vue'
 import MarkerSetting from './components/MarkerSetting.vue'
 
-import type { ExtractApiParams } from 'api-type'
+import type { ExtractApiParams, ExtractMultipleApiResponse } from 'api-type'
 import type { EpFormRules, EpFormItem } from 'global-type'
 
 type FormParams = ExtractApiParams<'markerSetCount'> &
   ExtractApiParams<'markGroupUpdateCount'> & { settingType: 'group' | 'marker' }
 
+const refresh = ref<number>(0)
+
 const { formRef, elFormRef, defineColumn, _ } = useForm()
 
 const taskSettingModel = reactive<FormParams>({
@@ -175,9 +182,20 @@ const rules = computed<EpFormRules>(() => {
   return obj
 })
 
+const userList = ref<ExtractMultipleApiResponse<'getUserList'>[]>([])
+
+const userIds = computed(() => {
+  return userList.value?.map((u) => u.id) || []
+})
+
+const onUserListChange = (list: ExtractMultipleApiResponse<'getUserList'>[]) => {
+  userList.value = list || []
+}
+
 /** 按评卷员设置 */
 const onMarkerSetCount = async () => {
   try {
+    taskSettingModel.userId = userIds.value
     await useFetch('markerSetCount').fetch(taskSettingModel)
   } catch (error) {
     console.error(error)
@@ -198,8 +216,14 @@ const onSubmit = async () => {
   try {
     const valid = await elFormRef?.value?.validate()
     if (valid) {
-      isGroupSetting.value ? onMarkGroupUpdateCount() : onMarkerSetCount()
+      await (isGroupSetting.value ? onMarkGroupUpdateCount() : onMarkerSetCount())
     }
+    ElMessage.success('设置成功')
+    Object.assign(taskSettingModel, { markCount: void 0, markDayCount: void 0, markTotalCount: void 0, userId: [] })
+    setTimeout(() => {
+      elFormRef?.value?.clearValidate()
+      refresh.value++
+    })
   } catch (error) {
     console.error(error)
   }

+ 1 - 1
src/modules/analysis/personnel-statistics/components/StatisticsGroup.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="p-small radius-base fill-blank">
-    <base-table size="small" :columns="columns" :data="data" :height="useVW(300)"> </base-table>
+    <base-table size="small" :columns="columns" :data="data" :height="useVW(300)" highlight-current-row> </base-table>
   </div>
   <div class="flex justify-between m-t-base">
     <div class="flex-1 p-base radius-base fill-blank m-r-base chart-box">