PrintPlanManage.vue 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285
  1. <template>
  2. <div class="print-plan-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. <template v-if="checkPrivilege('condition', 'condition')">
  6. <el-form-item label="学期:">
  7. <semester-select
  8. v-model="filter.semesterId"
  9. default-select
  10. @default-selected="getList"
  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. <print-plan-select
  21. v-model.trim="filter.printPlanIdList"
  22. placeholder="印刷计划"
  23. multiple
  24. clearable
  25. style="width:300px"
  26. ></print-plan-select>
  27. </el-form-item>
  28. <el-form-item label="计划状态:">
  29. <el-select
  30. v-model="filter.status"
  31. style="width: 142px;"
  32. placeholder="计划状态"
  33. clearable
  34. >
  35. <el-option
  36. v-for="(val, key) in PRINT_PLAN_STATUS"
  37. :key="key"
  38. :value="key"
  39. :label="val"
  40. ></el-option>
  41. </el-select>
  42. </el-form-item>
  43. <el-form-item label="创建时间:">
  44. <el-date-picker
  45. v-model="createTime"
  46. type="datetimerange"
  47. :picker-options="pickerOptions"
  48. range-separator="至"
  49. start-placeholder="创建开始时间"
  50. end-placeholder="创建结束时间"
  51. value-format="timestamp"
  52. align="right"
  53. unlink-panels
  54. >
  55. </el-date-picker>
  56. </el-form-item>
  57. </template>
  58. <el-form-item label-width="0px">
  59. <el-button
  60. v-if="checkPrivilege('button', 'select')"
  61. type="primary"
  62. @click="search"
  63. >查询</el-button
  64. >
  65. </el-form-item>
  66. </el-form>
  67. <div class="part-box-action">
  68. <el-button
  69. v-if="checkPrivilege('button', 'add')"
  70. icon="el-icon-circle-plus-outline"
  71. type="primary"
  72. @click="toAdd"
  73. >
  74. 新建印刷计划
  75. </el-button>
  76. </div>
  77. </div>
  78. <div class="part-box part-box-pad">
  79. <el-table ref="TableList" :data="dataList">
  80. <el-table-column
  81. type="index"
  82. label="序号"
  83. width="70"
  84. :index="indexMethod"
  85. ></el-table-column>
  86. <el-table-column
  87. prop="name"
  88. label="印刷计划"
  89. min-width="200"
  90. ></el-table-column>
  91. <el-table-column
  92. prop="semesterName"
  93. label="学期"
  94. min-width="200"
  95. ></el-table-column>
  96. <el-table-column
  97. prop="examName"
  98. label="考试"
  99. min-width="200"
  100. ></el-table-column>
  101. <el-table-column prop="examStartTime" label="考试开始时间" width="170">
  102. <span slot-scope="scope">{{
  103. scope.row.examStartTime | timestampFilter
  104. }}</span>
  105. </el-table-column>
  106. <el-table-column prop="examEndTime" label="考试结束时间" width="170">
  107. <span slot-scope="scope">{{
  108. scope.row.examEndTime | timestampFilter
  109. }}</span>
  110. </el-table-column>
  111. <el-table-column
  112. prop="createName"
  113. label="创建人"
  114. min-width="100"
  115. ></el-table-column>
  116. <el-table-column prop="createTime" label="创建时间" width="170">
  117. <span slot-scope="scope">{{
  118. scope.row.createTime | timestampFilter
  119. }}</span>
  120. </el-table-column>
  121. <el-table-column prop="status" label="计划状态" width="100">
  122. <span slot-scope="scope">
  123. {{ scope.row.status | printPlanStatusFilter }}
  124. </span>
  125. </el-table-column>
  126. <el-table-column
  127. class-name="action-column"
  128. label="操作"
  129. width="140"
  130. fixed="right"
  131. >
  132. <template slot-scope="scope">
  133. <el-button
  134. v-if="checkPrivilege('link', 'preview')"
  135. class="btn-primary"
  136. type="text"
  137. @click="toPreview(scope.row)"
  138. >查看</el-button
  139. >
  140. <el-button
  141. class="btn-primary"
  142. type="text"
  143. @click="toEdit(scope.row)"
  144. v-if="
  145. scope.row.createId === curUserId &&
  146. scope.row.status === 'NEW' &&
  147. checkPrivilege('link', 'edit')
  148. "
  149. >修改</el-button
  150. >
  151. <el-button
  152. class="btn-danger"
  153. type="text"
  154. @click="toDelete(scope.row)"
  155. v-if="
  156. scope.row.createId === curUserId &&
  157. scope.row.status === 'NEW' &&
  158. checkPrivilege('link', 'delete')
  159. "
  160. >删除</el-button
  161. >
  162. </template>
  163. </el-table-column>
  164. </el-table>
  165. <div class="part-page">
  166. <el-pagination
  167. background
  168. layout="total, sizes, prev, pager, next, jumper"
  169. :pager-count="5"
  170. :current-page="current"
  171. :total="total"
  172. :page-size="size"
  173. @current-change="toPage"
  174. @size-change="pageSizeChange"
  175. >
  176. </el-pagination>
  177. </div>
  178. </div>
  179. <!-- ModifyPrintPlan -->
  180. <modify-print-plan
  181. v-if="checkPrivilege('link', 'edit') || checkPrivilege('button', 'add')"
  182. ref="ModifyPrintPlan"
  183. :instance="curPrintPlan"
  184. :edit-type="editType"
  185. @modified="getList"
  186. ></modify-print-plan>
  187. <!-- PrintPlanDetail -->
  188. <print-plan-detail
  189. v-if="checkPrivilege('link', 'preview')"
  190. ref="PrintPlanDetail"
  191. :plan="curPrintPlan"
  192. ></print-plan-detail>
  193. </div>
  194. </template>
  195. <script>
  196. import { printPlanListPage, removePrintPlan } from "../api";
  197. import { PRINT_PLAN_STATUS } from "@/constants/enumerate";
  198. import pickerOptions from "@/constants/datePickerOptions";
  199. import ModifyPrintPlan from "../components/ModifyPrintPlan";
  200. import PrintPlanDetail from "../components/PrintPlanDetail.vue";
  201. export default {
  202. name: "print-plan-manage",
  203. components: { ModifyPrintPlan, PrintPlanDetail },
  204. data() {
  205. return {
  206. filter: {
  207. semesterId: "",
  208. examId: "",
  209. printPlanIdList: [],
  210. status: "",
  211. startTime: "",
  212. endTime: ""
  213. },
  214. current: 1,
  215. size: this.GLOBAL.pageSize,
  216. total: 0,
  217. dataList: [],
  218. curPrintPlan: {},
  219. editType: "ADD",
  220. PRINT_PLAN_STATUS,
  221. curUserId: this.$ls.get("user", { id: "" }).id,
  222. // date-picker
  223. createTime: [],
  224. pickerOptions
  225. };
  226. },
  227. mounted() {
  228. // this.search();
  229. },
  230. methods: {
  231. async getList() {
  232. if (!this.checkPrivilege("list", "list")) return;
  233. const datas = {
  234. ...this.filter,
  235. pageNumber: this.current,
  236. pageSize: this.size
  237. };
  238. if (this.createTime) {
  239. datas.startTime = this.createTime[0];
  240. datas.endTime = this.createTime[1];
  241. }
  242. const data = await printPlanListPage(datas);
  243. this.dataList = data.records;
  244. this.total = data.total;
  245. },
  246. toPage(page) {
  247. this.current = page;
  248. this.getList();
  249. },
  250. search() {
  251. this.toPage(1);
  252. },
  253. toAdd() {
  254. this.curPrintPlan = {};
  255. this.editType = "ADD";
  256. this.$refs.ModifyPrintPlan.open();
  257. },
  258. toEdit(row) {
  259. this.curPrintPlan = row;
  260. this.editType = "EDIT";
  261. this.$refs.ModifyPrintPlan.open();
  262. },
  263. toPreview(row) {
  264. this.curPrintPlan = row;
  265. this.$refs.PrintPlanDetail.open();
  266. },
  267. toDelete(row) {
  268. this.$confirm(`确定要删除印刷计划【${row.name}】吗?`, "提示", {
  269. type: "warning"
  270. })
  271. .then(async () => {
  272. await removePrintPlan(row.id);
  273. this.$message.success("删除成功!");
  274. this.deletePageLastItem();
  275. })
  276. .catch(() => {});
  277. }
  278. }
  279. };
  280. </script>