ApprovalDetails.vue 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <template>
  2. <m-dialog ref="dialog" title="申请单" v-bind="$attrs" v-on="$listeners">
  3. <el-form label-width="120px" v-loading="loading">
  4. <el-form-item label="审批功能名称">
  5. <el-tag type="default">{{ itemData.title }}</el-tag>
  6. </el-form-item>
  7. <el-form-item label="审批状态">
  8. <el-tag :type="itemData.statusColor">{{ itemData.statusText }}</el-tag>
  9. </el-form-item>
  10. <el-form-item label="申请明细">
  11. <el-descriptions :column="1" border>
  12. <el-descriptions-item
  13. v-for="item in headers"
  14. :key="item.column"
  15. labelStyle="width: 300px"
  16. >
  17. <template slot="label">
  18. {{ item.title }}
  19. </template>
  20. {{ items[item.column] }}
  21. </el-descriptions-item>
  22. </el-descriptions>
  23. </el-form-item>
  24. </el-form>
  25. <template #button-after>
  26. <slot name="button-after" :item="itemData"></slot>
  27. </template>
  28. </m-dialog>
  29. </template>
  30. <script>
  31. import {
  32. getApprovalApply
  33. } from '@/api/approval'
  34. import {
  35. APPROVAL_STATUS
  36. } from '@/utils/dict'
  37. export default {
  38. name: 'ApprovalDetails',
  39. data () {
  40. return {
  41. statusList: APPROVAL_STATUS,
  42. headers: [],
  43. items: [],
  44. itemData: {},
  45. loading: false
  46. }
  47. },
  48. methods: {
  49. close () {
  50. this.$refs.dialog.close()
  51. },
  52. async open (item) {
  53. this.itemData = {
  54. ...item,
  55. statusText: this.statusList[item.status].text,
  56. statusColor: this.statusList[item.status].color
  57. }
  58. this.$refs.dialog.open()
  59. this.loading = true
  60. try {
  61. const { data } = await getApprovalApply({ workFlowInstanceId: item.workFlowInstanceId })
  62. this.headers = data.columns
  63. this.items = data.data
  64. } catch (error) {
  65. this.$message.error(error)
  66. } finally {
  67. this.loading = false
  68. }
  69. }
  70. }
  71. }
  72. </script>
  73. <style lang="scss" scoped>
  74. </style>