detail.vue 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <template>
  2. <ContentWrap>
  3. <el-descriptions :column="1" border>
  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, 'YYYY-MM-DD') }}
  9. </el-descriptions-item>
  10. <el-descriptions-item label="结束时间">
  11. {{ formatDate(detailData.endTime, 'YYYY-MM-DD') }}
  12. </el-descriptions-item>
  13. <el-descriptions-item label="原因">
  14. {{ detailData.reason }}
  15. </el-descriptions-item>
  16. </el-descriptions>
  17. </ContentWrap>
  18. </template>
  19. <script lang="ts" setup>
  20. import { DICT_TYPE } from '@/utils/dict'
  21. import { formatDate } from '@/utils/formatTime'
  22. import { propTypes } from '@/utils/propTypes'
  23. import * as LeaveApi from '@/api/bpm/leave'
  24. defineOptions({ name: 'BpmOALeaveDetail' })
  25. const { query } = useRoute() // 查询参数
  26. const props = defineProps({
  27. id: propTypes.number.def(undefined)
  28. })
  29. const detailLoading = ref(false) // 表单的加载中
  30. const detailData = ref<any>({}) // 详情数据
  31. const queryId = query.id as unknown as number // 从 URL 传递过来的 id 编号
  32. /** 获得数据 */
  33. const getInfo = async () => {
  34. detailLoading.value = true
  35. try {
  36. detailData.value = await LeaveApi.getLeave(props.id || queryId)
  37. } finally {
  38. detailLoading.value = false
  39. }
  40. }
  41. defineExpose({ open: getInfo }) // 提供 open 方法,用于打开弹窗
  42. /** 初始化 **/
  43. onMounted(() => {
  44. getInfo()
  45. })
  46. </script>