BusinessDataDetail.vue 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. <template>
  2. <div class="business-data-detail">
  3. <div class="part-box part-box-filter part-box-flex">
  4. <el-form ref="FilterForm" label-position="left" label-width="85px" inline>
  5. <template v-if="checkPrivilege('condition', 'condition')">
  6. <el-form-item label="印刷计划:">
  7. <print-plan-select
  8. v-model.trim="filter.printPlanIdList"
  9. placeholder="印刷计划"
  10. clearable
  11. multiple
  12. @change="printPlanChange"
  13. ></print-plan-select>
  14. </el-form-item>
  15. <el-form-item label="课程(代码):" label-width="110px">
  16. <course-select
  17. v-model.trim="filter.courseCode"
  18. :print-plan-id="filter.printPlanIdList"
  19. placeholder="课程(代码)"
  20. clearable
  21. ></course-select>
  22. </el-form-item>
  23. <el-form-item label="试卷编号:">
  24. <paper-number-select
  25. ref="PaperNumberSelect"
  26. v-model="filter.paperNumber"
  27. :print-plan-id="filter.printPlanIdList"
  28. placeholder="试卷编号"
  29. clearable
  30. ></paper-number-select>
  31. </el-form-item>
  32. <el-form-item label="考点:" label-width="55px">
  33. <place-select
  34. v-model.trim="filter.examPlace"
  35. :print-plan-id="filter.printPlanIdList"
  36. placeholder="考点"
  37. clearable
  38. ></place-select>
  39. </el-form-item>
  40. <el-form-item label="考场:" label-width="55px">
  41. <room-select
  42. v-model.trim="filter.examRoom"
  43. :print-plan-id="filter.printPlanIdList"
  44. placeholder="考场"
  45. clearable
  46. ></room-select>
  47. </el-form-item>
  48. <el-form-item label="考试日期:">
  49. <el-date-picker
  50. v-model="createTime"
  51. type="daterange"
  52. :picker-options="pickerOptions"
  53. range-separator="至"
  54. start-placeholder="考试开始日期"
  55. end-placeholder="考试结束日期"
  56. value-format="timestamp"
  57. align="right"
  58. unlink-panels
  59. >
  60. </el-date-picker>
  61. </el-form-item>
  62. <el-form-item label="考生:" label-width="70px">
  63. <el-input
  64. v-model="filter.studentParams"
  65. placeholder="考生"
  66. clearable
  67. ></el-input>
  68. </el-form-item>
  69. </template>
  70. <el-form-item label-width="0px">
  71. <el-button
  72. v-if="checkPrivilege('button', 'select')"
  73. type="primary"
  74. @click="search"
  75. >查询</el-button
  76. >
  77. </el-form-item>
  78. </el-form>
  79. </div>
  80. <div class="part-box part-box-pad">
  81. <el-table ref="TableList" :data="dataList">
  82. <el-table-column
  83. type="index"
  84. label="序号"
  85. width="70"
  86. :index="indexMethod"
  87. ></el-table-column>
  88. <el-table-column
  89. prop="printPlanName"
  90. label="印刷计划"
  91. min-width="200"
  92. ></el-table-column>
  93. <el-table-column
  94. prop="courseNameCode"
  95. label="课程(代码)"
  96. min-width="200"
  97. >
  98. </el-table-column>
  99. <el-table-column
  100. prop="paperNumber"
  101. label="试卷编号"
  102. min-width="160"
  103. ></el-table-column>
  104. <el-table-column prop="examDate" label="考试日期" width="100">
  105. </el-table-column>
  106. <el-table-column prop="examTime" label="考试时间" width="100">
  107. </el-table-column>
  108. <el-table-column prop="examPlace" label="考点" min-width="100">
  109. </el-table-column>
  110. <el-table-column prop="examRoom" label="考场" min-width="100">
  111. </el-table-column>
  112. <el-table-column prop="ticketNumber" label="考号" width="120">
  113. </el-table-column>
  114. <el-table-column prop="studentCode" label="学号" width="120">
  115. </el-table-column>
  116. <el-table-column prop="studentName" label="姓名" min-width="100">
  117. </el-table-column>
  118. <el-table-column
  119. class-name="action-column"
  120. label="操作"
  121. width="100"
  122. fixed="right"
  123. >
  124. <template slot-scope="scope">
  125. <el-button
  126. v-if="checkPrivilege('link', 'preview')"
  127. class="btn-primary"
  128. type="text"
  129. @click="toPreview(scope.row)"
  130. >查看详情</el-button
  131. >
  132. </template>
  133. </el-table-column>
  134. </el-table>
  135. <div class="part-page">
  136. <el-pagination
  137. background
  138. layout="total, sizes, prev, pager, next, jumper"
  139. :pager-count="5"
  140. :current-page="current"
  141. :total="total"
  142. :page-size="size"
  143. @current-change="toPage"
  144. @size-change="pageSizeChange"
  145. >
  146. </el-pagination>
  147. </div>
  148. </div>
  149. <!-- PreviewBusinessStudentDetail -->
  150. <preview-business-student-detail
  151. :instance="curRow"
  152. ref="PreviewBusinessStudentDetail"
  153. ></preview-business-student-detail>
  154. </div>
  155. </template>
  156. <script>
  157. import { businessDataDetailListPage } from "../api";
  158. import { parseTimeRangeDateAndTime } from "@/plugins/utils";
  159. import PreviewBusinessStudentDetail from "../components/PreviewBusinessStudentDetail";
  160. import pickerOptions from "@/constants/datePickerOptions";
  161. export default {
  162. name: "business-data-detail",
  163. components: { PreviewBusinessStudentDetail },
  164. data() {
  165. return {
  166. filter: {
  167. printPlanIdList: [],
  168. courseCode: "",
  169. paperNumber: "",
  170. examPlace: "",
  171. examRoom: "",
  172. studentParams: "",
  173. startDate: "",
  174. endDate: ""
  175. },
  176. current: 1,
  177. size: this.GLOBAL.pageSize,
  178. total: 0,
  179. dataList: [],
  180. curRow: {},
  181. // date-picker
  182. createTime: [],
  183. pickerOptions
  184. };
  185. },
  186. mounted() {
  187. this.search();
  188. },
  189. methods: {
  190. async getList() {
  191. if (!this.checkPrivilege("list", "list")) return;
  192. const datas = {
  193. ...this.filter,
  194. pageNumber: this.current,
  195. pageSize: this.size
  196. };
  197. if (this.createTime) {
  198. datas.startDate = this.createTime[0];
  199. datas.endDate = this.createTime[1];
  200. }
  201. const data = await businessDataDetailListPage(datas);
  202. this.dataList = data.records.map(item => {
  203. const { date, time } = parseTimeRangeDateAndTime(
  204. item.examStartTime,
  205. item.examEndTime
  206. );
  207. item.examDate = date || "--";
  208. item.examTime = time || "--";
  209. return item;
  210. });
  211. this.total = data.total;
  212. },
  213. toPage(page) {
  214. this.current = page;
  215. this.getList();
  216. },
  217. search() {
  218. this.toPage(1);
  219. },
  220. printPlanChange() {
  221. this.filter.paperNumber = "";
  222. this.filter.courseCode = "";
  223. this.filter.examRoom = "";
  224. this.filter.examPlace = "";
  225. },
  226. toPreview(row) {
  227. this.curRow = row;
  228. this.$refs.PreviewBusinessStudentDetail.open();
  229. }
  230. }
  231. };
  232. </script>