MarkDetail.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <template>
  2. <el-dialog
  3. class="mark-detail"
  4. :visible.sync="modalIsShow"
  5. top="0"
  6. :close-on-click-modal="false"
  7. :close-on-press-escape="false"
  8. :show-close="false"
  9. append-to-body
  10. fullscreen
  11. @open="initData"
  12. >
  13. <div slot="title">
  14. <h2 class="el-dialog__title">评卷管理</h2>
  15. <span
  16. >课程名称:{{ instance.courseName }}({{ instance.courseCode }})</span
  17. >
  18. <span>试卷编号:{{ instance.paperNumber }}</span>
  19. <button class="el-dialog__headerbtn" @click="cancel"></button>
  20. </div>
  21. <div class="mb-4 tab-btns">
  22. <el-button
  23. v-for="tab in tabs"
  24. :key="tab.val"
  25. size="medium"
  26. :type="curTab == tab.val ? 'primary' : 'default'"
  27. @click="selectMenu(tab.val)"
  28. >{{ tab.name }}
  29. </el-button>
  30. </div>
  31. <component
  32. v-if="modalIsShow"
  33. :is="currentComponent"
  34. :base-info="instance"
  35. @to-menu="selectMenu"
  36. ></component>
  37. <div slot="footer"></div>
  38. </el-dialog>
  39. </template>
  40. <script>
  41. import MarkDetailProgress from "./MarkDetailProgress.vue";
  42. import MarkDetailMarker from "./MarkDetailMarker.vue";
  43. import MarkDetailQuality from "./MarkDetailQuality.vue";
  44. import MarkDetailIssue from "./MarkDetailIssue.vue";
  45. import MarkDetailArbitration from "./MarkDetailArbitration.vue";
  46. import MarkDetailTask from "./MarkDetailTask.vue";
  47. import MarkDetailReject from "./MarkDetailReject.vue";
  48. export default {
  49. name: "mark-detail",
  50. components: {
  51. MarkDetailProgress,
  52. MarkDetailMarker,
  53. MarkDetailQuality,
  54. MarkDetailIssue,
  55. MarkDetailArbitration,
  56. MarkDetailTask,
  57. MarkDetailReject,
  58. },
  59. props: {
  60. instance: {
  61. type: Object,
  62. default() {
  63. return {};
  64. },
  65. },
  66. },
  67. data() {
  68. return {
  69. modalIsShow: false,
  70. // step
  71. curTab: "progress",
  72. tabs: [
  73. {
  74. name: "评卷进度",
  75. val: "progress",
  76. },
  77. {
  78. name: "评卷员管理",
  79. val: "marker",
  80. },
  81. {
  82. name: "任务管理",
  83. val: "task",
  84. },
  85. {
  86. name: "评卷质量",
  87. val: "quality",
  88. },
  89. {
  90. name: "问题试卷",
  91. val: "issue",
  92. },
  93. {
  94. name: "仲裁管理",
  95. val: "arbitration",
  96. },
  97. {
  98. name: "打回记录",
  99. val: "reject",
  100. },
  101. ],
  102. current: 0,
  103. };
  104. },
  105. computed: {
  106. currentComponent() {
  107. return `mark-detail-${this.curTab}`;
  108. },
  109. },
  110. methods: {
  111. initData() {
  112. this.selectMenu("progress");
  113. },
  114. selectMenu(val) {
  115. this.curTab = val;
  116. this.current = this.tabs.findIndex((item) => item.val === val);
  117. },
  118. cancel() {
  119. this.modalIsShow = false;
  120. },
  121. open() {
  122. this.modalIsShow = true;
  123. },
  124. },
  125. };
  126. </script>