刘洋 1 年之前
父節點
當前提交
3da65403a2

+ 20 - 4
src/components/common/ChooseMarkers.vue

@@ -46,7 +46,7 @@
 </template>
 
 <script name="ChooseMarkers" lang="ts" setup>
-import { watch, ref, computed } from 'vue'
+import { watch, ref, computed, onMounted } from 'vue'
 import useFetch from '@/hooks/useFetch'
 import { ElButton, ElInput } from 'element-plus'
 import BaseDialog from '../element/BaseDialog.vue'
@@ -54,6 +54,14 @@ import { VxeTableEvents } from 'vxe-table'
 import ConfirmButton from '@/components/common/ConfirmButton.vue'
 import { cloneDeep } from 'lodash-es'
 
+onMounted(() => {
+  tableKey.value = Date.now() + ''
+  emits('user-list', [])
+  if (props.subjectCode && props.mainNumber) {
+    fetchMarkers({ subjectCode: props.subjectCode, mainNumber: props.mainNumber, enable: true })
+  }
+})
+
 const tableKey = ref(Date.now() + '')
 const emits = defineEmits(['user-list'])
 const tableMaxHeight = window.innerHeight - 150 + 'px'
@@ -61,10 +69,15 @@ const modalVisible = ref(false)
 const { fetch: fetchMarkers, result } = useFetch('adminGetMarkers')
 const filterText = ref('')
 const computedFilterText = ref('')
+const clear = () => {
+  chooseResult.value = []
+  confirmResult.value = []
+}
 const filterSearch = () => {
   computedFilterText.value = filterText.value
-  chooseResult.value = []
+  clear()
   tableKey.value = Date.now() + ''
+  emits('user-list', [...confirmResult.value])
 }
 const tableData = computed(() => {
   let arr = []
@@ -128,7 +141,10 @@ const props = defineProps<{
 }>()
 watch([() => props.subjectCode, () => props.mainNumber], (valArr) => {
   if (valArr[0] && valArr[1]) {
-    fetchMarkers({ subjectCode: valArr[0], mainNumber: valArr[1], enable: true })
+    clear()
+    fetchMarkers({ subjectCode: valArr[0], mainNumber: valArr[1], enable: true }).then(() => {
+      tableKey.value = Date.now() + ''
+    })
   }
 })
 const chooseResult = ref<any>([])
@@ -146,7 +162,7 @@ const confirm = () => {
 }
 
 const openDialog = () => {
-  tableKey.value = Date.now() + ''
+  // tableKey.value = Date.now() + ''
   modalVisible.value = true
 }
 </script>

+ 13 - 5
src/modules/admin-data/task-setting/components/MarkerSetting.vue

@@ -1,10 +1,10 @@
 <template>
-  <base-table border stripe size="small" height="100%" :columns="columns" :data="userList?.result"></base-table>
+  <base-table border stripe size="small" height="100%" :columns="columns" :data="filterData"></base-table>
 </template>
 
 <script setup lang="ts" name="MarkerSetting">
 /** 任务设置 - 按评卷员设置 */
-import { watch } from 'vue'
+import { watch, computed } from 'vue'
 import useFetch from '@/hooks/useFetch'
 import BaseTable from '@/components/element/BaseTable.vue'
 
@@ -15,6 +15,7 @@ const props = defineProps<{
   mainNumber?: number | string
   markingGroupNumber?: number
   subjectCode?: string
+  filterUsers?: any
 }>()
 
 const emit = defineEmits<{
@@ -22,7 +23,14 @@ const emit = defineEmits<{
 }>()
 
 const { fetch: getUserList, result: userList } = useFetch('getUserList')
-
+const filterData = computed(() => {
+  if (!props.filterUsers?.length) {
+    return []
+  } else {
+    let res = userList?.value?.result || []
+    return res.filter((item: any) => !!props.filterUsers?.find((v: any) => v == item.id))
+  }
+})
 const columns: EpTableColumn[] = [
   { label: '评卷员代码', prop: 'loginName' },
   { label: '任务量', prop: 'markTotalCount' },
@@ -30,7 +38,7 @@ const columns: EpTableColumn[] = [
 ]
 
 watch(
-  props,
+  [() => props.mainNumber, () => props.subjectCode],
   () => {
     if (props.mainNumber && props.subjectCode) {
       getUserList({
@@ -46,7 +54,7 @@ watch(
 )
 
 watch(userList, () => {
-  emit('user-list', userList.value?.result)
+  // emit('user-list', userList.value?.result)
 })
 </script>
 

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

@@ -14,6 +14,7 @@
         </template>
         <template #form-item-chooseMarkers>
           <choose-markers
+            v-if="!isGroupSetting"
             :subject-code="taskSettingModel.subjectCode"
             :main-number="taskSettingModel.mainNumber"
             @user-list="onUserListChange"
@@ -25,14 +26,20 @@
           }}</el-button>
         </template>
       </base-form>
-      <div v-if="isGroupSetting" class="flex-1 overflow-hidden m-t-base">
+      <div class="flex-1 overflow-hidden m-t-base">
         <!-- <component
           :is="TableComponent"
           v-bind="taskSettingModel"
           :key="refresh"
           @user-list="onUserListChange"
         ></component> -->
-        <group-setting v-bind="taskSettingModel" :key="refresh" @user-list="onUserListChange"></group-setting>
+        <group-setting v-if="isGroupSetting" v-bind="taskSettingModel" :key="refresh"></group-setting>
+        <marker-setting
+          v-else
+          v-bind="taskSettingModel"
+          :filter-users="userIds"
+          @user-list="onUserListChange"
+        ></marker-setting>
       </div>
     </div>
   </div>