detail.vue 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <template>
  2. <Dialog title="详情" v-model="modelVisible" :scroll="true" :max-height="200">
  3. <el-descriptions border :column="1">
  4. <el-descriptions-item label="请假类型">
  5. <dict-tag :type="DICT_TYPE.BPM_OA_LEAVE_TYPE" :value="detailData.type" />
  6. </el-descriptions-item>
  7. <el-descriptions-item label="开始时间">
  8. {{ formatDate(detailData.startTime) }}
  9. </el-descriptions-item>
  10. <el-descriptions-item label="结束时间">
  11. {{ formatDate(detailData.endTime) }}
  12. </el-descriptions-item>
  13. <el-descriptions-item label="原因">
  14. {{ detailData.reason }}
  15. </el-descriptions-item>
  16. </el-descriptions>
  17. </Dialog>
  18. </template>
  19. <script setup lang="ts">
  20. import { DICT_TYPE } from '@/utils/dict'
  21. import { formatDate } from '@/utils/formatTime'
  22. import * as LeaveApi from '@/api/bpm/leave'
  23. const modelVisible = ref(false) // 弹窗的是否展示
  24. const detailLoading = ref(false) // 表单的加载中
  25. const detailData = ref() // 详情数据
  26. /** 打开弹窗 */
  27. const open = async (data: LeaveApi.LeaveVO) => {
  28. modelVisible.value = true
  29. // 设置数据
  30. detailLoading.value = true
  31. try {
  32. detailData.value = data
  33. } finally {
  34. detailLoading.value = false
  35. }
  36. }
  37. defineExpose({ open }) // 提供 open 方法,用于打开弹窗
  38. </script>