index.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <template>
  2. <wrapper
  3. fill
  4. margin
  5. padding
  6. background
  7. >
  8. <schema-table
  9. ref="table"
  10. :schema="schema"
  11. />
  12. <publish-detail-dialog ref="publishDetailDialog" />
  13. <workflow-history-dialog ref="workflowHistoryDialog" />
  14. </wrapper>
  15. </template>
  16. <script>
  17. import { State } from '@/constant'
  18. import {
  19. getPublishHistory,
  20. cancelPublish
  21. } from '../api'
  22. import { parseDeploy } from '../utils'
  23. import PublishDetailDialog from '../components/PublishDetailDialog.vue'
  24. import WorkflowHistoryDialog from '../components/WorkflowHistoryDialog.vue'
  25. export default {
  26. name: 'ScheduleDeployHistory',
  27. components: {
  28. PublishDetailDialog,
  29. WorkflowHistoryDialog
  30. },
  31. data () {
  32. return {
  33. workflow: {},
  34. schema: {
  35. list: getPublishHistory,
  36. transform: this.transform,
  37. cols: [
  38. { type: 'refresh' },
  39. { prop: 'priority', label: '优先级', width: 100, align: 'center' },
  40. { prop: 'type', label: '上播内容', width: 80, align: 'center' },
  41. { prop: 'name', label: '' },
  42. { prop: 'createByUsername', label: '发布人', width: 160, align: 'center' },
  43. { prop: 'createTime', label: '发布时间', width: 160, align: 'center' },
  44. { type: 'tag', render: ({ status, remark }) => {
  45. switch (status) {
  46. case State.SUBMITTED:
  47. return {
  48. type: 'primary',
  49. label: '发布中'
  50. }
  51. case State.RESOLVED:
  52. return {
  53. type: 'success',
  54. label: '已发布'
  55. }
  56. case State.CANCEL:
  57. return {
  58. type: 'danger',
  59. label: '已下架'
  60. }
  61. default:
  62. return {
  63. type: 'danger',
  64. label: '异常',
  65. msg: remark
  66. }
  67. }
  68. } },
  69. { type: 'invoke', render: [
  70. this.$store.getters.isGroupAdmin && { label: '下架', allow: ({ status }) => status === State.RESOLVED, on: this.onCancel },
  71. { label: '详情', on: this.onDetail },
  72. { label: '流程历史', allow: ({ workflowId }) => !!workflowId, on: this.onViewHistory }
  73. ].filter(Boolean), width: 180 }
  74. ]
  75. }
  76. }
  77. },
  78. methods: {
  79. transform ({ id, status, workflowId, createByUsername, createTime, remark, ...data }) {
  80. return {
  81. id,
  82. status,
  83. workflowId,
  84. createByUsername,
  85. createTime,
  86. remark,
  87. ...parseDeploy(data)
  88. }
  89. },
  90. onCancel (workflowHis) {
  91. cancelPublish(workflowHis.id).then(() => {
  92. this.$refs.table.pageTo()
  93. })
  94. },
  95. onDetail (workflowHis) {
  96. this.$refs.publishDetailDialog.show(workflowHis)
  97. },
  98. onViewHistory ({ workflowId }) {
  99. this.$refs.workflowHistoryDialog.show(workflowId)
  100. }
  101. }
  102. }
  103. </script>