PrintPlanDetail.vue 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. <template>
  2. <div>
  3. <el-dialog
  4. class="print-plan-detail page-dialog"
  5. :visible.sync="modalIsShow"
  6. :title="title"
  7. :close-on-click-modal="false"
  8. :close-on-press-escape="false"
  9. append-to-body
  10. fullscreen
  11. @open="visibleChange"
  12. >
  13. <div class="part-box part-box-filter part-box-flex">
  14. <el-form
  15. ref="FilterForm"
  16. label-position="left"
  17. label-width="85px"
  18. inline
  19. >
  20. <el-form-item label="学期:">
  21. <semester-select
  22. v-model.trim="filter.semesterId"
  23. placeholder="学期"
  24. clearable
  25. ></semester-select>
  26. </el-form-item>
  27. <el-form-item label="考试:">
  28. <exam-select
  29. v-model="filter.examId"
  30. :semester-id="filter.semesterId"
  31. ></exam-select>
  32. </el-form-item>
  33. <el-form-item label="课程(代码):" label-width="110px">
  34. <course-select
  35. v-model.trim="filter.courseCode"
  36. :print-plan-id="filter.printPlanIdList"
  37. placeholder="课程(代码)"
  38. clearable
  39. ></course-select>
  40. </el-form-item>
  41. <el-form-item label="试卷编号:">
  42. <paper-number-select
  43. ref="PaperNumberSelect"
  44. v-model="filter.paperNumber"
  45. :print-plan-id="filter.printPlanIdList"
  46. placeholder="试卷编号"
  47. clearable
  48. ></paper-number-select>
  49. </el-form-item>
  50. <el-form-item label="命题老师:">
  51. <el-input
  52. v-model="filter.userName"
  53. placeholder="命题老师"
  54. clearable
  55. ></el-input>
  56. </el-form-item>
  57. <el-form-item label-width="0px">
  58. <el-button type="primary" @click="search">查询</el-button>
  59. </el-form-item>
  60. </el-form>
  61. </div>
  62. <div class="part-box part-box-pad box-justify">
  63. <p>
  64. <span class="mr-4">
  65. 该印刷计划共计:
  66. <i class="color-primary">{{ totalInfo.totalSubjects }}</i>
  67. 科次
  68. </span>
  69. <span class="mr-4">
  70. <i class="color-primary">{{ totalInfo.taskCount }}</i> 个命题任务
  71. </span>
  72. <span class="mr-4">
  73. <i class="color-primary">{{ totalInfo.paperCount }}</i>
  74. 科次(考生人数)
  75. </span>
  76. </p>
  77. <p>
  78. <el-button type="primary" @click="toBatchLink">批量关联</el-button>
  79. </p>
  80. </div>
  81. <div class="part-box part-box-pad">
  82. <el-table ref="TableList" :data="dataList">
  83. <el-table-column
  84. type="index"
  85. label="序号"
  86. width="70"
  87. :index="indexMethod"
  88. ></el-table-column>
  89. <el-table-column
  90. prop="semesterName"
  91. label="学期"
  92. min-width="160"
  93. ></el-table-column>
  94. <el-table-column
  95. prop="examName"
  96. label="考试"
  97. min-width="160"
  98. ></el-table-column>
  99. <el-table-column
  100. prop="courseName"
  101. label="课程(代码)"
  102. min-width="200"
  103. >
  104. <span slot-scope="scope"
  105. >{{ scope.row.courseName }}({{ scope.row.courseCode }})</span
  106. >
  107. </el-table-column>
  108. <el-table-column
  109. prop="paperNumber"
  110. label="试卷编号"
  111. min-width="160"
  112. ></el-table-column>
  113. <el-table-column prop="userName" label="命题老师" min-width="100">
  114. </el-table-column>
  115. <el-table-column
  116. prop="exposedPaperType"
  117. label="已曝光类型"
  118. width="100"
  119. >
  120. <span slot-scope="scope">{{
  121. scope.row.exposedPaperType | defaultFieldFilter
  122. }}</span>
  123. </el-table-column>
  124. <el-table-column
  125. prop="unexposedPaperType"
  126. label="未曝光类型"
  127. width="100"
  128. >
  129. <span slot-scope="scope">{{
  130. scope.row.unexposedPaperType | defaultFieldFilter
  131. }}</span>
  132. </el-table-column>
  133. <el-table-column prop="relatePaperType" label="关联卷型" width="100">
  134. <span slot-scope="scope">{{
  135. scope.row.relatePaperType | defaultFieldFilter
  136. }}</span>
  137. </el-table-column>
  138. <el-table-column prop="totalSubjects" label="科次" width="80">
  139. </el-table-column>
  140. <el-table-column
  141. class-name="action-column"
  142. label="操作"
  143. width="100"
  144. fixed="right"
  145. >
  146. <template slot-scope="scope">
  147. <el-button
  148. class="btn-primary"
  149. type="text"
  150. @click="toEdit(scope.row)"
  151. >关联试卷</el-button
  152. >
  153. </template>
  154. </el-table-column>
  155. </el-table>
  156. <div class="part-page">
  157. <el-pagination
  158. background
  159. layout="total,prev, pager, next"
  160. :current-page="current"
  161. :total="total"
  162. :page-size="size"
  163. @current-change="toPage"
  164. >
  165. </el-pagination>
  166. </div>
  167. </div>
  168. <div class="tips-info">
  169. <p>说明:批量关联操作,只能关联所有命题任务共有的卷型</p>
  170. </div>
  171. </el-dialog>
  172. <!-- ModifyPlanPaper -->
  173. <modify-plan-paper
  174. :instance="curRow"
  175. @modified="getList"
  176. ref="ModifyPlanPaper"
  177. ></modify-plan-paper>
  178. <!-- PrintPlanBatchLinkPaper -->
  179. <print-plan-batch-link-paper
  180. ref="PrintPlanBatchLinkPaper"
  181. :plan="plan"
  182. ></print-plan-batch-link-paper>
  183. </div>
  184. </template>
  185. <script>
  186. import { planLinkPaperListPage } from "../api";
  187. import ModifyPlanPaper from "./ModifyPlanPaper";
  188. import PrintPlanBatchLinkPaper from "./PrintPlanBatchLinkPaper.vue";
  189. export default {
  190. name: "print-plan-detail",
  191. components: { ModifyPlanPaper, PrintPlanBatchLinkPaper },
  192. props: {
  193. plan: {
  194. type: Object,
  195. default() {
  196. return {};
  197. }
  198. }
  199. },
  200. computed: {
  201. title() {
  202. return `印刷计划详情-${this.plan.name}`;
  203. }
  204. },
  205. data() {
  206. return {
  207. modalIsShow: false,
  208. filter: {
  209. semesterId: "",
  210. examId: "",
  211. printPlanIdList: [],
  212. courseCode: "",
  213. paperNumber: "",
  214. userName: ""
  215. },
  216. current: 1,
  217. size: this.GLOBAL.pageSize,
  218. total: 0,
  219. dataList: [],
  220. curRow: {},
  221. totalInfo: {}
  222. };
  223. },
  224. methods: {
  225. visibleChange() {
  226. this.filter = {
  227. semesterId: "",
  228. examId: "",
  229. printPlanIdList: [this.plan.id],
  230. courseCode: "",
  231. paperNumber: "",
  232. userName: ""
  233. };
  234. this.dataList = [];
  235. this.totalInfo = {};
  236. this.toPage(1);
  237. },
  238. cancel() {
  239. this.modalIsShow = false;
  240. },
  241. open() {
  242. this.modalIsShow = true;
  243. },
  244. async getList() {
  245. const datas = {
  246. ...this.filter,
  247. pageNumber: this.current,
  248. pageSize: this.size
  249. };
  250. const data = await planLinkPaperListPage(datas);
  251. this.dataList = data.records;
  252. this.total = data.total;
  253. },
  254. toPage(page) {
  255. this.current = page;
  256. this.getList();
  257. },
  258. search() {
  259. this.toPage(1);
  260. },
  261. toEdit(row) {
  262. this.curRow = row;
  263. this.$refs.ModifyPlanPaper.open();
  264. },
  265. toBatchLink() {
  266. this.$refs.PrintPlanBatchLinkPaper.open();
  267. }
  268. }
  269. };
  270. </script>