ApplySubmitHistory.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <template>
  2. <div class="apply-submit-history">
  3. <div v-if="submitHistory.length">
  4. <el-table border :data="submitHistory">
  5. <el-table-column prop="operateTime" label="提交日期">
  6. <span slot-scope="scope"
  7. >{{ scope.row.operateTime | timestampFilter }}
  8. </span>
  9. </el-table-column>
  10. <el-table-column prop="submitUserName" label="提交人"></el-table-column>
  11. <el-table-column prop="approveUsers" label="下级审核人">
  12. <div slot-scope="scope">
  13. <span
  14. v-if="!scope.row.approveUsers && FLOW_IS_END"
  15. class="color-primary"
  16. >流程结束</span
  17. >
  18. <span
  19. v-if="!scope.row.approveUsers && !FLOW_IS_END"
  20. class="color-danger"
  21. >流程终止</span
  22. >
  23. <span v-else>{{ scope.row.approveUsers }}</span>
  24. </div>
  25. </el-table-column>
  26. <el-table-column
  27. prop="paperUrls"
  28. label="附件"
  29. class-name="action-column"
  30. align="left"
  31. >
  32. <div slot-scope="scope">
  33. <el-button
  34. v-for="item in scope.row.paperUrls"
  35. :key="item.name"
  36. type="text"
  37. class="btn-primary"
  38. @click="downloadPaper(item)"
  39. >{{ item.name }}卷:{{ item.filename }}</el-button
  40. >
  41. </div>
  42. </el-table-column>
  43. </el-table>
  44. </div>
  45. <div class="history-none" v-else>
  46. <p class="tips-info text-center">暂无数据</p>
  47. </div>
  48. </div>
  49. </template>
  50. <script>
  51. import { taskApplySubmitHistory } from "../api";
  52. import { attachmentPreview } from "../../login/api";
  53. export default {
  54. name: "apply-submit-history",
  55. props: {
  56. examTask: {
  57. type: Object,
  58. default() {
  59. return {};
  60. },
  61. },
  62. },
  63. data() {
  64. return {
  65. submitHistory: [],
  66. };
  67. },
  68. computed: {
  69. FLOW_IS_END() {
  70. return this.examTask.setup === 0;
  71. },
  72. },
  73. mounted() {
  74. this.getData();
  75. },
  76. methods: {
  77. async getData() {
  78. if (!this.examTask.id) return;
  79. const data = await taskApplySubmitHistory(this.examTask.id);
  80. const result = data || [];
  81. this.submitHistory = result.map((item) => {
  82. return {
  83. operateTime: item.submitUser.createTime,
  84. submitUserName: `${item.submitUser.realName}(${item.submitUser.orgName})`,
  85. approveUsers: !item.approveUserList
  86. ? ""
  87. : item.approveUserList
  88. .map((user) => `${user.realName}(${user.orgName})`)
  89. .join(","),
  90. paperUrls: item.submitUser.paperUrls
  91. ? JSON.parse(item.submitUser.paperUrls)
  92. : [],
  93. };
  94. });
  95. },
  96. async downloadPaper(attachment) {
  97. if (!attachment.attachmentId) return;
  98. const data = await attachmentPreview(attachment.attachmentId);
  99. window.open(data[0]?.url);
  100. },
  101. },
  102. };
  103. </script>