list-exact-hand.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <template>
  2. <el-form ref="queryRef" :model="queryParams" :rules="rules" label-width="68px" inline>
  3. <el-form-item label="批次" prop="batchId">
  4. <el-select v-model="batchId" clearable @change="handleQuery" style="width: 172px">
  5. <el-option v-for="b in batchList" :label="formatBatchName(b)" :value="b.batchId"/>
  6. </el-select>
  7. </el-form-item>
  8. <el-form-item label="考生类型" prop="examType">
  9. <el-select v-model="examType" clearable @change="handleQuery" style="width: 172px">
  10. <el-option v-for="e in examTypes" :label="e.dictLabel" :value="e.dictValue"/>
  11. </el-select>
  12. </el-form-item>
  13. <el-form-item label="院校">
  14. <el-select v-model="universityId" clearable @change="handleQuery" style="width: 172px">
  15. <el-option v-for="u in universities" :label="u.name" :value="u.id"/>
  16. </el-select>
  17. </el-form-item>
  18. <el-form-item label="专业组">
  19. <el-select v-model="majorGroup" clearable @change="handleQuery" style="width: 172px">
  20. <el-option v-for="g in majorGroups" :label="g" :value="g"/>
  21. </el-select>
  22. </el-form-item>
  23. <el-form-item label="专业">
  24. <el-select v-model="majorPlanId" clearable @change="handleQuery" style="width: 172px">
  25. <el-option v-for="m in majors" :label="m.majorName" :value="m.id"/>
  26. </el-select>
  27. </el-form-item>
  28. <el-form-item label="班级" prop="classId">
  29. <el-select v-model="classId" clearable @change="handleQuery" style="width: 172px">
  30. <el-option v-for="c in classList" :label="c.name" :value="c.classId"/>
  31. </el-select>
  32. </el-form-item>
  33. <el-form-item>
  34. <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
  35. <!-- <el-button icon="Refresh" @click="resetQuery">重置</el-button>-->
  36. </el-form-item>
  37. </el-form>
  38. <Table :data="list" :columns="columns" :actions="actions" @get-list="getList" @action="handleAction">
  39. <template #batchName="{row}">
  40. <span>{{ getBatchDisplayName(row) }}</span>
  41. </template>
  42. </Table>
  43. <el-drawer v-model="drawer" title="班级详情" size="1000px">
  44. <class-detail v-if="drawer" :data="drawerObj" exact-mode />
  45. </el-drawer>
  46. </template>
  47. <script setup name="ListExactHand">
  48. import consts from "@/utils/consts.js";
  49. import {useProvidePaperList} from "@/views/dz/papers/hooks/usePaperList.js";
  50. import {useProvidePaperExactCondition} from "@/views/dz/papers/hooks/usePaperExactCondition.js";
  51. import {usePaperDownload} from "@/views/dz/papers/hooks/usePaperDownload.js";
  52. import Table from "@/components/Table/index.vue";
  53. import ClassDetail from "@/views/dz/papers/components/plugs/class-detail.vue";
  54. const columns = [
  55. {label: '组卷类型', prop: 'buildTypeName'},
  56. {label: '班级', prop: 'className'},
  57. {label: '批次', prop: 'batchName', type: 'slot', slotName: 'batchName'},
  58. {label: '班级人数', prop: 'total'},
  59. ...consts.config.exactColumns.slice(0, 3)
  60. ]
  61. const actions = [
  62. {label: '详情', key: 'detail', permission: ['learn:test:list']},
  63. // {label: '下载', key: 'download', permission: ['learn:paper:download']}
  64. ]
  65. const drawer = ref(false)
  66. const drawerObj = ref(null)
  67. const type = consts.enums.buildType.ExactHand
  68. const {
  69. batchList,
  70. batchId,
  71. examTypes,
  72. examType,
  73. universityId,
  74. universities,
  75. majorGroup,
  76. majorGroups,
  77. majorPlanId,
  78. majors,
  79. conditionArgs,
  80. formatBatchName,
  81. getBatchDisplayName
  82. } = useProvidePaperExactCondition(type)
  83. const classId = ref('')
  84. const queryParams = computed(() => ({
  85. ...toValue(conditionArgs),
  86. classId: toValue(classId)
  87. }))
  88. const {rules, handleQuery, resetQuery, list, total, getList, classList} = useProvidePaperList(queryParams)
  89. const {handleDownload} = usePaperDownload(queryParams)
  90. const handleAction = async function (action, row) {
  91. switch (action.key) {
  92. case "detail":
  93. drawer.value = true
  94. drawerObj.value = row
  95. break;
  96. case "download":
  97. await handleDownload(row)
  98. break;
  99. default:
  100. throw new Error(`Action key '${action.key}' not support.`)
  101. break
  102. }
  103. }
  104. </script>
  105. <style scoped>
  106. </style>