MarkParamMarkerLeader.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <template>
  2. <div class="mark-param-marker-leader">
  3. <div class="box-justify part-box part-box-pad">
  4. <div>
  5. <p class="tips-info">
  6. 1.科组长支持查看该课程下全部学生的成绩及查看分析报告!
  7. </p>
  8. <p class="tips-info">2.支持绑定多个科组长!</p>
  9. </div>
  10. <div>
  11. <span
  12. ><i class="el-icon-success color-success"></i>科组长绑定成功!</span
  13. >
  14. <span
  15. ><i class="el-icon-success color-danger"></i>
  16. 科组长同步阅卷模块失败!</span
  17. >
  18. </div>
  19. </div>
  20. <div class="part-box part-box-pad">
  21. <table class="table">
  22. <colgroup>
  23. <col />
  24. <col width="100" />
  25. </colgroup>
  26. <tr>
  27. <th>科组长</th>
  28. <th>操作</th>
  29. </tr>
  30. <tr>
  31. <td>
  32. <el-tag
  33. v-for="user in users"
  34. :key="user.id"
  35. closable
  36. :disable-transitions="false"
  37. @close="toDeleteUser(user)"
  38. >
  39. {{ user.label }}
  40. </el-tag>
  41. </td>
  42. <td>
  43. <el-button class="btn-primary" type="text" @click="toEdit"
  44. >编辑</el-button
  45. >
  46. </td>
  47. </tr>
  48. </table>
  49. </div>
  50. <div class="text-center">
  51. <el-button type="primary" :disabled="loading" @click="submit"
  52. >提交</el-button
  53. >
  54. <el-button @click="cancel">取消</el-button>
  55. </div>
  56. <select-type-user
  57. ref="SelectTypeUser"
  58. special-privilege="SUBJECT_HEADER"
  59. dialog-title="选择科组长"
  60. :user-ids="curMarkLeaders"
  61. :user-limit-count="0"
  62. @confirm="userSelected"
  63. ></select-type-user>
  64. </div>
  65. </template>
  66. <script>
  67. import { examBindMarkLeader } from "../../api";
  68. import SelectTypeUser from "../SelectTypeUser.vue";
  69. export default {
  70. name: "mark-param-marker-leader",
  71. components: { SelectTypeUser },
  72. data() {
  73. return {
  74. loading: false,
  75. users: [],
  76. };
  77. },
  78. computed: {
  79. curMarkLeaders() {
  80. return this.users.map((item) => item.id);
  81. },
  82. },
  83. methods: {
  84. toDeleteUser(user) {
  85. this.users = this.users.filter((item) => item.id !== user.id);
  86. },
  87. userSelected(users) {
  88. this.users = users;
  89. },
  90. toEdit() {
  91. this.$refs.SelectTypeUser.open();
  92. },
  93. async submit() {
  94. if (!this.users.length) {
  95. this.$message.error("请选择科组长");
  96. return;
  97. }
  98. if (this.loading) return;
  99. this.loading = true;
  100. const res = await examBindMarkLeader({
  101. id: this.instance.id,
  102. markLeader: this.users.map((item) => {
  103. return {
  104. id: item.id,
  105. loginName: item.loginName,
  106. };
  107. }),
  108. }).catch(() => {});
  109. this.loading = false;
  110. if (!res) return;
  111. this.$message.success("绑定成功!");
  112. },
  113. cancel() {
  114. this.$emit("cancel");
  115. },
  116. },
  117. };
  118. </script>