ApproveRecordManage.vue 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. <template>
  2. <div class="approve-record-manage">
  3. <div class="part-box part-box-filter part-box-border">
  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. <el-select
  8. v-model="filter.status"
  9. style="width: 120px;"
  10. placeholder="请选择状态"
  11. clearable
  12. >
  13. <el-option
  14. v-for="(val, key) in AUDITING_STATUS"
  15. :key="key"
  16. :value="key"
  17. :label="val"
  18. ></el-option>
  19. </el-select>
  20. </el-form-item>
  21. <el-form-item label="机构:">
  22. <org-select
  23. v-model="filter.teachingRoomId"
  24. style="width:100%;"
  25. placeholder="所属机构"
  26. ></org-select>
  27. </el-form-item>
  28. <el-form-item label="提交人:">
  29. <el-input
  30. style="width: 142px;"
  31. v-model.trim="filter.teacherUserName"
  32. placeholder="请输入提交人"
  33. clearable
  34. ></el-input>
  35. </el-form-item>
  36. <el-form-item label="提交时间:">
  37. <el-date-picker
  38. v-model="createTime"
  39. type="datetimerange"
  40. :picker-options="pickerOptions"
  41. range-separator="至"
  42. start-placeholder="提交开始时间"
  43. end-placeholder="提交结束时间"
  44. value-format="timestamp"
  45. align="right"
  46. unlink-panels
  47. >
  48. </el-date-picker>
  49. </el-form-item>
  50. <el-form-item label="当前处理人:">
  51. <el-input
  52. style="width: 142px;"
  53. v-model.trim="filter.pendApproveUserName"
  54. placeholder="请输入当前处理人"
  55. clearable
  56. ></el-input>
  57. </el-form-item>
  58. </template>
  59. <el-form-item label-width="0px">
  60. <el-button
  61. v-if="checkPrivilege('button', 'select')"
  62. type="primary"
  63. @click="toPage(1)"
  64. >查询</el-button
  65. >
  66. </el-form-item>
  67. </el-form>
  68. </div>
  69. <div class="part-box part-box-pad">
  70. <el-table ref="TableList" :data="dataList">
  71. <el-table-column
  72. type="index"
  73. label="序号"
  74. width="70"
  75. :index="indexMethod"
  76. ></el-table-column>
  77. <el-table-column
  78. prop="teacherUserName"
  79. label="提交人"
  80. min-width="120"
  81. ></el-table-column>
  82. <el-table-column prop="createTime" label="提交时间" width="170">
  83. <span slot-scope="scope">{{
  84. scope.row.createTime | timestampFilter
  85. }}</span>
  86. </el-table-column>
  87. <el-table-column prop="statusStr" label="流程状态"></el-table-column>
  88. <el-table-column prop="setupStr" label="当前节点"></el-table-column>
  89. <el-table-column
  90. prop="pendApproveUserName"
  91. label="当前处理人"
  92. min-width="120"
  93. >
  94. </el-table-column>
  95. <el-table-column
  96. class-name="action-column"
  97. label="操作"
  98. width="100"
  99. fixed="right"
  100. >
  101. <template slot-scope="scope">
  102. <el-button
  103. v-if="checkPrivilege('link', 'preview')"
  104. class="btn-primary"
  105. type="text"
  106. @click="toPreview(scope.row)"
  107. >查看</el-button
  108. >
  109. <el-button
  110. v-if="checkPrivilege('link', 'delete')"
  111. class="btn-danger"
  112. type="text"
  113. @click="toDelete(scope.row)"
  114. >删除</el-button
  115. >
  116. </template>
  117. </el-table-column>
  118. </el-table>
  119. <div class="part-page">
  120. <el-pagination
  121. background
  122. layout="total,prev, pager, next"
  123. :current-page="current"
  124. :total="total"
  125. :page-size="size"
  126. @current-change="toPage"
  127. >
  128. </el-pagination>
  129. </div>
  130. </div>
  131. <!-- ModifyTaskApply -->
  132. <modify-task-apply
  133. v-if="checkPrivilege('link', 'preview')"
  134. ref="ModifyTaskApply"
  135. edit-type="PREVIEW"
  136. :instance="curExamTask"
  137. ></modify-task-apply>
  138. </div>
  139. </template>
  140. <script>
  141. import { approveRecordListPage, deleteApproveRecord } from "../api";
  142. import { examTaskGetOne } from "../../exam/api";
  143. import { AUDITING_STATUS } from "@/constants/enumerate";
  144. import pickerOptions from "@/constants/datePickerOptions";
  145. import ModifyTaskApply from "../../exam/components/ModifyTaskApply";
  146. export default {
  147. name: "approve-record-manage",
  148. components: { ModifyTaskApply },
  149. data() {
  150. return {
  151. filter: {
  152. status: "",
  153. teachingRoomId: "",
  154. teacherUserName: "",
  155. pendApproveUserName: "",
  156. startTime: null,
  157. endTime: null
  158. },
  159. current: 1,
  160. size: this.GLOBAL.pageSize,
  161. total: 0,
  162. dataList: [],
  163. AUDITING_STATUS,
  164. curExamTask: {},
  165. // date-picker
  166. createTime: [],
  167. pickerOptions
  168. };
  169. },
  170. mounted() {
  171. this.toPage(1);
  172. },
  173. methods: {
  174. async getList() {
  175. if (!this.checkPrivilege("list", "list")) return;
  176. const datas = {
  177. ...this.filter,
  178. pageNumber: this.current,
  179. pageSize: this.size
  180. };
  181. if (this.createTime) {
  182. datas.startTime = this.createTime[0];
  183. datas.endTime = this.createTime[1];
  184. }
  185. const data = await approveRecordListPage(datas);
  186. this.dataList = data.records;
  187. this.total = data.total;
  188. },
  189. toPage(page) {
  190. this.current = page;
  191. this.getList();
  192. },
  193. async toPreview(row) {
  194. const types = {
  195. exam_task: this.previewExmaTask
  196. };
  197. const func = types[row.objectTable];
  198. if (!func) {
  199. this.$message.error("操作错误!");
  200. return;
  201. }
  202. func(row);
  203. },
  204. async previewExmaTask(data) {
  205. this.curExamTask = await examTaskGetOne(data.objectId);
  206. this.$refs.ModifyTaskApply.open();
  207. },
  208. toDelete(row) {
  209. this.$confirm(`确定要删除当前记录吗?`, "提示", {
  210. type: "warning"
  211. })
  212. .then(async () => {
  213. await deleteApproveRecord({
  214. id: row.id,
  215. enable: 0
  216. });
  217. this.$message.success("操作成功!");
  218. this.getList();
  219. })
  220. .catch(() => {});
  221. }
  222. }
  223. };
  224. </script>