MarkerSetting.vue 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <template>
  2. <base-table border stripe size="small" height="100%" :columns="columns" :data="filterData"></base-table>
  3. </template>
  4. <script setup lang="ts" name="MarkerSetting">
  5. /** 任务设置 - 按评卷员设置 */
  6. import { watch, computed } from 'vue'
  7. import useFetch from '@/hooks/useFetch'
  8. import BaseTable from '@/components/element/BaseTable.vue'
  9. import type { EpTableColumn } from 'global-type'
  10. import type { ExtractMultipleApiResponse } from '@/api/api'
  11. const props = defineProps<{
  12. mainNumber?: number | string
  13. markingGroupNumber?: number
  14. subjectCode?: string
  15. filterUsers?: any
  16. }>()
  17. const emit = defineEmits<{
  18. (e: 'user-list', list: ExtractMultipleApiResponse<'getUserList'>[]): void
  19. }>()
  20. const { fetch: getUserList, result: userList } = useFetch('getUserList')
  21. const filterData = computed(() => {
  22. if (!props.filterUsers?.length) {
  23. return []
  24. } else {
  25. let res = userList?.value?.result || []
  26. return res.filter((item: any) => !!props.filterUsers?.find((v: any) => v == item.id))
  27. }
  28. })
  29. const columns: EpTableColumn[] = [
  30. { label: '评卷员代码', prop: 'loginName' },
  31. { label: '任务量', prop: 'markTotalCount' },
  32. { label: '每日任务量', prop: 'markDayCount' },
  33. ]
  34. watch(
  35. [() => props.mainNumber, () => props.subjectCode],
  36. () => {
  37. if (props.mainNumber && props.subjectCode) {
  38. getUserList({
  39. pageNumber: 1,
  40. pageSize: 9999,
  41. subjectCode: props.subjectCode,
  42. mainNumber: props.mainNumber,
  43. role: 'MARKER',
  44. })
  45. }
  46. },
  47. { immediate: true }
  48. )
  49. watch(userList, () => {
  50. // emit('user-list', userList.value?.result)
  51. })
  52. </script>
  53. <style scoped lang="scss"></style>