TaskManage.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. <template>
  2. <div class="task-manage">
  3. <div class="part-box part-box-filter part-box-flex">
  4. <el-form ref="FilterForm" label-position="left" label-width="85px" inline>
  5. <el-form-item label="档案:">
  6. <el-select
  7. v-model="filter.recordId"
  8. placeholder="请选择档案"
  9. clearable
  10. >
  11. <el-option
  12. v-for="item in recordList"
  13. :key="item.id"
  14. :value="item.id"
  15. :label="item.name"
  16. ></el-option>
  17. </el-select>
  18. </el-form-item>
  19. <el-form-item label="课程:">
  20. <el-select
  21. v-model="filter.courseCode"
  22. placeholder="请选择课程"
  23. clearable
  24. >
  25. <el-option
  26. v-for="item in courseList"
  27. :key="item.courseCode"
  28. :value="item.courseCode"
  29. :label="item.courseName"
  30. ></el-option>
  31. </el-select>
  32. </el-form-item>
  33. <el-form-item label="教学班:">
  34. <el-select
  35. v-model="filter.teachingClassId"
  36. placeholder="请选择教学班"
  37. clearable
  38. >
  39. <el-option
  40. v-for="item in teachingClassList"
  41. :key="item.id"
  42. :value="item.id"
  43. :label="item.name"
  44. ></el-option>
  45. </el-select>
  46. </el-form-item>
  47. <el-form-item label-width="0px">
  48. <el-button type="primary" @click="toPage(1)">查询</el-button>
  49. </el-form-item>
  50. </el-form>
  51. </div>
  52. <div class="mb-4 tab-btns">
  53. <el-button
  54. v-for="tab in tabs"
  55. :key="tab.val"
  56. size="medium"
  57. :type="curTab == tab.val ? 'primary' : 'default'"
  58. @click="selectMenu(tab.val)"
  59. >{{ tab.name }}
  60. </el-button>
  61. </div>
  62. <div class="part-box part-box-pad">
  63. <el-table ref="TableList" size="medium" :data="dataList">
  64. <el-table-column
  65. prop="taskId"
  66. label="任务ID"
  67. min-width="160"
  68. ></el-table-column>
  69. <el-table-column
  70. prop="taskName"
  71. label="任务名称"
  72. min-width="160"
  73. ></el-table-column>
  74. <el-table-column prop="courseName" label="课程(代码)" min-width="200">
  75. <template slot-scope="scope">
  76. {{ scope.row.courseName }}({{ scope.row.courseCode }})
  77. </template>
  78. </el-table-column>
  79. <el-table-column
  80. prop="userName"
  81. label="教学班"
  82. min-width="100"
  83. ></el-table-column>
  84. <el-table-column
  85. prop="userName"
  86. label="学生数"
  87. min-width="100"
  88. ></el-table-column>
  89. <el-table-column
  90. prop="userName"
  91. label="已扫描数量"
  92. min-width="100"
  93. ></el-table-column>
  94. <el-table-column
  95. class-name="action-column"
  96. label="操作"
  97. width="80"
  98. fixed="right"
  99. >
  100. <template slot-scope="scope">
  101. <el-button
  102. class="btn-primary"
  103. type="text"
  104. @click="toScan(scope.row)"
  105. >扫描</el-button
  106. >
  107. </template>
  108. </el-table-column>
  109. </el-table>
  110. <div class="part-page">
  111. <el-pagination
  112. background
  113. layout="total,prev, pager, next"
  114. :current-page="current"
  115. :total="total"
  116. :page-size="size"
  117. @current-change="toPage"
  118. >
  119. </el-pagination>
  120. </div>
  121. </div>
  122. </div>
  123. </template>
  124. <script>
  125. import { taskListPage } from "../api";
  126. export default {
  127. name: "task-manage",
  128. data() {
  129. return {
  130. curTab: "all",
  131. tabs: [
  132. {
  133. name: "全部",
  134. val: "all"
  135. },
  136. {
  137. name: "我的",
  138. val: "my"
  139. }
  140. ],
  141. cacheData: {
  142. all: {},
  143. my: {}
  144. },
  145. filter: {
  146. recordId: "",
  147. courseCode: "",
  148. teachingClassId: ""
  149. },
  150. current: 1,
  151. size: 10,
  152. total: 0,
  153. dataList: [],
  154. curRow: {},
  155. recordList: [],
  156. courseList: [],
  157. teachingClassList: []
  158. };
  159. },
  160. methods: {
  161. async getList() {
  162. const datas = {
  163. ...this.filter,
  164. pageNumber: this.current,
  165. pageSize: this.size
  166. };
  167. const data = await taskListPage(datas);
  168. this.dataList = data.records;
  169. this.total = data.total;
  170. },
  171. toPage(page) {
  172. this.current = page;
  173. this.getList();
  174. },
  175. selectMenu(curTab) {
  176. this.cacheData[this.curTab] = {
  177. current: this.current,
  178. total: this.total,
  179. dataList: this.dataList
  180. };
  181. this.curTab = curTab;
  182. if (this.cacheData[this.curTab].total) {
  183. const { current, total, dataList } = this.cacheData[this.curTab];
  184. this.current = current;
  185. this.total = total;
  186. this.dataList = dataList;
  187. } else {
  188. this.toPage(1);
  189. }
  190. }
  191. },
  192. toScan(row) {
  193. this.curRow = row;
  194. }
  195. };
  196. </script>