paper-work-history.vue 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <template>
  2. <el-card>
  3. <div class="fx-row fx-end-cen mb10">
  4. <el-button icon="el-icon-refresh" circle @click="handleQuery"></el-button>
  5. </div>
  6. <dynamic-table :rows="rows" :columns="columns">
  7. <template #type="{display}">
  8. {{ translateType(display) }}
  9. </template>
  10. <template #status="{row}">
  11. <div class="homework-status">
  12. <el-badge :value="row.doneCount" type="primary">
  13. <el-tag type="primary">已完成</el-tag>
  14. </el-badge>
  15. <el-badge :value="row.totalCount - row.doneCount" type="danger">
  16. <el-tag type="danger">未完成</el-tag>
  17. </el-badge>
  18. </div>
  19. </template>
  20. <template #action="{row}">
  21. <el-button type="text" icon="el-icon-view" @click="handleViewDetail(row)">查看</el-button>
  22. </template>
  23. </dynamic-table>
  24. <pagination v-if="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
  25. @pagination="getList"></pagination>
  26. <el-dialog v-if="detailOption.visible" :visible.sync="detailOption.visible" :title="detailOption.title"
  27. width="900px">
  28. <paper-work-history-detail :work-id="detailOption.workId"
  29. @paperView="handlePaperView"></paper-work-history-detail>
  30. </el-dialog>
  31. <!--elDrawer不要内嵌在elDialog中,否则遮罩可能重迭-->
  32. <el-drawer v-if="paperOption.visible" :visible.sync="paperOption.visible" :title="paperOption.title" size="100%">
  33. <div class="pl30 pr30 pb30">
  34. <homework-paper :params="paperOption.params"></homework-paper>
  35. </div>
  36. </el-drawer>
  37. </el-card>
  38. </template>
  39. <script>
  40. import { getTeacherHomeworks } from '@/api/webApi/homework'
  41. import consts from '@/common/mx-const'
  42. import DynamicTable from '@/components/dynamic-table/index'
  43. import PaperWorkHistoryDetail from '@/views/questioncenter/components/generate-tabs/paper-work-history-detail'
  44. import HomeworkPaper from '@/views/questioncenter/components/homework-paper'
  45. export default {
  46. name: 'paper-work-history',
  47. components: { HomeworkPaper, PaperWorkHistoryDetail, DynamicTable },
  48. data() {
  49. return {
  50. extraData: { type: consts.enum.generateScene.paperWork.value },
  51. paperWorkType: Object.freeze(consts.enum.homeworkTypes.find(t => t.value == 1)),
  52. queryParams: {
  53. pageNum: 1,
  54. pageSize: 20
  55. },
  56. columns: [
  57. { prop: 'id', label: 'ID', width: '80px' },
  58. { prop: 'type', label: '类型', width: '120px', slotBody: 'type' },
  59. { prop: 'title', label: '标题' },
  60. { prop: 'createTime', label: '创建时间', width: '180px' },
  61. { prop: 'status', label: '状态', width: '160px', slotBody: 'status' },
  62. { prop: 'action', label: '操作', width: '120px', slotBody: 'action' }
  63. ],
  64. rows: [],
  65. total: 0,
  66. detailOption: {
  67. visible: false,
  68. title: '',
  69. workId: ''
  70. },
  71. paperOption: {
  72. visible: false,
  73. title: '',
  74. params: {
  75. type: '',
  76. examineeId: ''
  77. }
  78. }
  79. }
  80. },
  81. mounted() {
  82. this.getList()
  83. },
  84. deactivated() {
  85. this.detailOption.visible = false
  86. this.paperOption.visible = false
  87. },
  88. methods: {
  89. handleQuery() {
  90. this.queryParams.pageNum = 1
  91. this.getList()
  92. },
  93. async getList() {
  94. const res = await getTeacherHomeworks(this.queryParams)
  95. this.rows = res.rows || res.data
  96. this.total = res.total || this.rows.length
  97. },
  98. translateType(type) {
  99. const enumType = consts.enum.homeworkTypes.find(t => t.value == type)
  100. return enumType?.label || type
  101. },
  102. handleViewDetail(row) {
  103. this.detailOption.workId = row.id
  104. this.detailOption.title = row.title
  105. this.detailOption.visible = true
  106. },
  107. handlePaperView(row) {
  108. this.paperOption.title = this.translateType(row.type)
  109. this.paperOption.params.type = row.type
  110. this.paperOption.params.examineeId = row.id
  111. this.paperOption.visible = true
  112. }
  113. }
  114. }
  115. </script>
  116. <style lang="scss">
  117. .homework-status {
  118. .el-badge + .el-badge {
  119. margin-left: 15px;
  120. }
  121. .el-badge__content.is-fixed {
  122. top: 8px;
  123. }
  124. }
  125. </style>