<template> <ContentWrap> <el-descriptions :column="1" border> <el-descriptions-item label="请假类型"> <dict-tag :type="DICT_TYPE.BPM_OA_LEAVE_TYPE" :value="detailData.type" /> </el-descriptions-item> <el-descriptions-item label="开始时间"> {{ formatDate(detailData.startTime, 'YYYY-MM-DD') }} </el-descriptions-item> <el-descriptions-item label="结束时间"> {{ formatDate(detailData.endTime, 'YYYY-MM-DD') }} </el-descriptions-item> <el-descriptions-item label="原因"> {{ detailData.reason }} </el-descriptions-item> </el-descriptions> </ContentWrap> </template> <script lang="ts" name="BpmOALeaveDetail" setup> import { DICT_TYPE } from '@/utils/dict' import { formatDate } from '@/utils/formatTime' import { propTypes } from '@/utils/propTypes' import * as LeaveApi from '@/api/bpm/leave' const { query } = useRoute() // 查询参数 const props = defineProps({ id: propTypes.number.def(undefined) }) const detailLoading = ref(false) // 表单的加载中 const detailData = ref({}) // 详情数据 const queryId = query.id as unknown as number // 从 URL 传递过来的 id 编号 /** 获得数据 */ const getInfo = async () => { detailLoading.value = true try { detailData.value = await LeaveApi.getLeave(props.id || queryId) } finally { detailLoading.value = false } } defineExpose({ open: getInfo }) // 提供 open 方法,用于打开弹窗 /** 初始化 **/ onMounted(() => { getInfo() }) </script>