Files
im-uniapp/components/hrm/detailPanels/travel.vue
砂糖 955d20413b feat(HRM): 新增HRM办公审批模块及相关功能组件
新增HRM办公审批模块,包括审批中心、抄送我的、我的申请等功能页面和组件。主要变更包括:

1. 添加审批相关API接口文件
2. 新增审批详情展示组件
3. 实现审批流程操作功能
4. 添加Vuex状态管理
5. 新增相关静态资源图片
6. 配置页面路由
7. 实现审批列表展示和筛选功能
8. 添加审批操作弹窗和状态管理
2026-02-05 10:42:50 +08:00

148 lines
4.0 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<!-- 出差申请详情容器使用已定义的样式类 -->
<view class="reimburse-detail-container">
<!-- 出差开始时间 -->
<view class="detail-item">
<view class="item-label">开始时间</view>
<view class="item-value">{{ detail.startTime || '无' }}</view>
</view>
<!-- 出差结束时间 -->
<view class="detail-item">
<view class="item-label">结束时间</view>
<view class="item-value">{{ detail.endTime || '无' }}</view>
</view>
<!-- 出差类型 -->
<view class="detail-item">
<view class="item-label">出差类型</view>
<view class="item-value">{{ detail.travelType || '无' }}</view>
</view>
<!-- 出差目的地 -->
<view class="detail-item">
<view class="item-label">出差目的地</view>
<view class="item-value">{{ detail.destination || '无' }}</view>
</view>
<!-- 出差原因 -->
<view class="detail-item">
<view class="item-label">出差原因</view>
<view class="item-value">{{ detail.reason || '无' }}</view>
</view>
<!-- 收款人姓名 -->
<view class="detail-item">
<view class="item-label">收款人姓名</view>
<view class="item-value">{{ detail.payeeName || '无' }}</view>
</view>
<!-- 预估费用拼接元单位 -->
<view class="detail-item">
<view class="item-label">预估费用</view>
<view class="item-value">{{ detail.estimatedCost || 0 }} </view>
</view>
<!-- 开户银行 -->
<view class="detail-item">
<view class="item-label">开户银行</view>
<view class="item-value">{{ detail.bankName || '无' }}</view>
</view>
<!-- 银行账号 -->
<view class="detail-item">
<view class="item-label">银行账号</view>
<view class="item-value">{{ detail.bankAccount || '无' }}</view>
</view>
<!-- 备注 -->
<view class="detail-item">
<view class="item-label">备注</view>
<view class="item-value">{{ detail.remark || '无' }}</view>
</view>
<!-- 创建人 -->
<view class="detail-item">
<view class="item-label">创建人</view>
<view class="item-value">{{ detail.createBy || '无' }}</view>
</view>
<!-- 创建时间 -->
<view class="detail-item">
<view class="item-label">创建时间</view>
<view class="item-value">{{ detail.createTime || '无' }}</view>
</view>
<!-- 更新人 -->
<view class="detail-item">
<view class="item-label">更新人</view>
<view class="item-value">{{ detail.updateBy || '无' }}</view>
</view>
<!-- 更新时间最后一项样式会自动去掉下边框 -->
<view class="detail-item">
<view class="item-label">更新时间</view>
<view class="item-value">{{ detail.updateTime || '无' }}</view>
</view>
</view>
</template>
<script>
import { getTravelReq } from '@/api/hrm/travel.js'
export default {
props: {
bizId: {
type: String,
required: true
}
},
data() {
return {
detail: {}
}
},
watch: {
bizId: {
handler(newVal) {
// 增加空值判断,避免无效请求
if (newVal) {
getTravelReq(newVal).then(res => {
this.detail = res.data || {}
console.log(this.detail)
})
}
},
immediate: true
}
},
}
</script>
<style scoped>
/* 容器样式 */
.reimburse-detail-container {
padding: 20rpx;
background-color: #ffffff;
border-radius: 12rpx;
margin: 10rpx;
box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05);
}
/* 每一项的样式 */
.detail-item {
display: flex;
align-items: flex-start; /* 多行文本对齐 */
padding: 18rpx 0;
border-bottom: 1px solid #f5f5f5;
}
/* 最后一项去掉下边框 */
.detail-item:last-child {
border-bottom: none;
}
/* 标签样式 */
.item-label {
width: 140rpx;
font-size: 28rpx;
color: #666666;
font-weight: 500;
padding-top: 2rpx; /* 对齐多行文本 */
}
/* 值的样式 */
.item-value {
flex: 1;
font-size: 28rpx;
color: #333333;
line-height: 40rpx; /* 多行文本行高 */
}
</style>