PlanLinkPaper.vue 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. <template>
  2. <div class="plan-link-paper">
  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. <semester-select
  8. v-model.trim="filter.semesterId"
  9. placeholder="学期"
  10. clearable
  11. ></semester-select>
  12. </el-form-item>
  13. <el-form-item label="考试:">
  14. <exam-select
  15. v-model="filter.examId"
  16. :semester-id="filter.semesterId"
  17. ></exam-select>
  18. </el-form-item>
  19. <el-form-item label="关联状态:">
  20. <el-select
  21. v-model="filter.relateType"
  22. style="width: 120px"
  23. placeholder="关联状态"
  24. clearable
  25. >
  26. <el-option
  27. v-for="(val, key) in RELATE_TYPE"
  28. :key="key"
  29. :value="key"
  30. :label="val"
  31. ></el-option>
  32. </el-select>
  33. </el-form-item>
  34. <el-form-item label="印刷计划:">
  35. <print-plan-select
  36. v-model.trim="filter.printPlanIdList"
  37. placeholder="印刷计划"
  38. clearable
  39. multiple
  40. @change="printPlanChange"
  41. ></print-plan-select>
  42. </el-form-item>
  43. <el-form-item label="课程(代码):" label-width="110px">
  44. <course-select
  45. v-model.trim="filter.courseId"
  46. :semester-id="filter.semesterId"
  47. :exam-id="filter.examId"
  48. :print-plan-id="filter.printPlanIdList"
  49. placeholder="课程(代码)"
  50. clearable
  51. ></course-select>
  52. </el-form-item>
  53. <el-form-item label="试卷编号:">
  54. <paper-number-select
  55. ref="PaperNumberSelect"
  56. v-model="filter.paperNumber"
  57. :print-plan-id="filter.printPlanIdList"
  58. placeholder="试卷编号"
  59. clearable
  60. ></paper-number-select>
  61. </el-form-item>
  62. <el-form-item label="命题老师:">
  63. <el-input
  64. v-model="filter.userName"
  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="semesterName"
  90. label="学期"
  91. min-width="210"
  92. ></el-table-column>
  93. <el-table-column
  94. prop="examName"
  95. label="考试"
  96. min-width="160"
  97. ></el-table-column>
  98. <el-table-column
  99. prop="printPlanName"
  100. label="印刷计划"
  101. min-width="200"
  102. ></el-table-column>
  103. <el-table-column
  104. prop="paperNumber"
  105. label="试卷编号"
  106. min-width="160"
  107. ></el-table-column>
  108. <el-table-column prop="courseName" label="课程(代码)" min-width="200">
  109. <span slot-scope="scope"
  110. >{{ scope.row.courseName }}({{ scope.row.courseCode }})</span
  111. >
  112. </el-table-column>
  113. <el-table-column prop="userName" label="命题老师" min-width="100">
  114. </el-table-column>
  115. <el-table-column prop="exposedPaperType" label="已曝光类型" width="100">
  116. <span slot-scope="scope">{{
  117. scope.row.exposedPaperType | defaultFieldFilter
  118. }}</span>
  119. </el-table-column>
  120. <el-table-column
  121. prop="unexposedPaperType"
  122. label="未曝光类型"
  123. width="100"
  124. >
  125. <span slot-scope="scope">{{
  126. scope.row.unexposedPaperType | defaultFieldFilter
  127. }}</span>
  128. </el-table-column>
  129. <el-table-column prop="relatePaperType" label="关联卷型" width="100">
  130. <span slot-scope="scope">{{
  131. scope.row.relatePaperType | defaultFieldFilter
  132. }}</span>
  133. </el-table-column>
  134. <el-table-column label="关联状态" width="80">
  135. <span slot-scope="scope">
  136. {{ scope.row.relatePaperType ? "已关联" : "未关联" }}
  137. </span>
  138. </el-table-column>
  139. <el-table-column prop="totalSubjects" label="总科次" width="80">
  140. </el-table-column>
  141. <el-table-column
  142. class-name="action-column"
  143. label="操作"
  144. width="100"
  145. fixed="right"
  146. >
  147. <template slot-scope="scope">
  148. <el-button
  149. v-if="checkPrivilege('link', 'edit')"
  150. class="btn-primary"
  151. type="text"
  152. @click="toEdit(scope.row)"
  153. >关联试卷</el-button
  154. >
  155. </template>
  156. </el-table-column>
  157. </el-table>
  158. <div class="part-page">
  159. <el-pagination
  160. background
  161. layout="total, sizes, prev, pager, next, jumper"
  162. :pager-count="5"
  163. :current-page="current"
  164. :total="total"
  165. :page-size="size"
  166. @current-change="toPage"
  167. @size-change="pageSizeChange"
  168. >
  169. </el-pagination>
  170. </div>
  171. </div>
  172. <!-- ModifyPlanPaper -->
  173. <modify-plan-paper
  174. :instance="curRow"
  175. @modified="getList"
  176. ref="ModifyPlanPaper"
  177. ></modify-plan-paper>
  178. </div>
  179. </template>
  180. <script>
  181. import { planLinkPaperListPage } from "../api";
  182. import ModifyPlanPaper from "../components/ModifyPlanPaper";
  183. export const RELATE_TYPE = {
  184. RELATE: "已关联",
  185. NOT_RELATE: "未关联",
  186. };
  187. export default {
  188. name: "plan-link-paper",
  189. components: { ModifyPlanPaper },
  190. data() {
  191. return {
  192. filter: {
  193. semesterId: "",
  194. examId: "",
  195. printPlanIdList: [],
  196. courseId: "",
  197. paperNumber: "",
  198. relateType: "",
  199. cardRuleId: "",
  200. userName: "",
  201. },
  202. current: 1,
  203. size: this.GLOBAL.pageSize,
  204. total: 0,
  205. dataList: [],
  206. curRow: {},
  207. RELATE_TYPE,
  208. };
  209. },
  210. mounted() {
  211. this.search();
  212. },
  213. methods: {
  214. async getList() {
  215. if (!this.checkPrivilege("list", "list")) return;
  216. const datas = {
  217. ...this.filter,
  218. pageNumber: this.current,
  219. pageSize: this.size,
  220. };
  221. const data = await planLinkPaperListPage(datas);
  222. this.dataList = data.records;
  223. this.total = data.total;
  224. },
  225. toPage(page) {
  226. this.current = page;
  227. this.getList();
  228. },
  229. search() {
  230. this.toPage(1);
  231. },
  232. printPlanChange() {
  233. this.filter.paperNumber = "";
  234. this.filter.courseId = "";
  235. },
  236. toEdit(row) {
  237. this.curRow = row;
  238. this.$refs.ModifyPlanPaper.open();
  239. },
  240. },
  241. };
  242. </script>