detail.vue 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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" name="BpmOALeaveDetail" 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. const { query } = useRoute() // 查询参数
  25. const props = defineProps({
  26. id: propTypes.number.def(undefined)
  27. })
  28. const detailLoading = ref(false) // 表单的加载中
  29. const detailData = ref({}) // 详情数据
  30. const queryId = query.id as unknown as number // 从 URL 传递过来的 id 编号
  31. /** 获得数据 */
  32. const getInfo = async () => {
  33. detailLoading.value = true
  34. try {
  35. detailData.value = await LeaveApi.getLeave(props.id || queryId)
  36. } finally {
  37. detailLoading.value = false
  38. }
  39. }
  40. defineExpose({ open: getInfo }) // 提供 open 方法,用于打开弹窗
  41. /** 初始化 **/
  42. onMounted(() => {
  43. getInfo()
  44. })
  45. </script>