MarkerSetting.vue 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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, onUnmounted } from 'vue'
  7. import useFetch from '@/hooks/useFetch'
  8. import BaseTable from '@/components/element/BaseTable.vue'
  9. import bus from '@/utils/bus'
  10. import type { EpTableColumn } from 'global-type'
  11. import type { ExtractMultipleApiResponse } from '@/api/api'
  12. const props = defineProps<{
  13. mainNumber?: number | string
  14. markingGroupNumber?: number
  15. subjectCode?: string
  16. filterUsers?: any
  17. }>()
  18. const emit = defineEmits<{
  19. (e: 'user-list', list: ExtractMultipleApiResponse<'getUserList'>[]): void
  20. }>()
  21. const { fetch: getUserList, result: userList } = useFetch('getUserList')
  22. const filterData = computed(() => {
  23. if (!props.filterUsers?.length) {
  24. return []
  25. } else {
  26. let res = userList?.value?.result || []
  27. return res.filter((item: any) => !!props.filterUsers?.find((v: any) => v == item.id))
  28. }
  29. })
  30. const columns: EpTableColumn[] = [
  31. { label: '评卷员代码', prop: 'loginName' },
  32. { label: '任务量', prop: 'markTotalCount' },
  33. { label: '每日任务量', prop: 'markDayCount' },
  34. ]
  35. function getList() {
  36. if (props.mainNumber && props.subjectCode) {
  37. getUserList({
  38. pageNumber: 1,
  39. pageSize: 9999,
  40. subjectCode: props.subjectCode,
  41. mainNumber: props.mainNumber,
  42. role: 'MARKER',
  43. })
  44. }
  45. }
  46. watch(
  47. [() => props.mainNumber, () => props.subjectCode],
  48. () => {
  49. getList()
  50. },
  51. { immediate: true }
  52. )
  53. bus.on('updateMarkerSetting', getList)
  54. onUnmounted(() => {
  55. bus.off('updateMarkerSetting', getList)
  56. })
  57. watch(userList, () => {
  58. // emit('user-list', userList.value?.result)
  59. })
  60. </script>
  61. <style scoped lang="scss"></style>