88 lines
1.8 KiB
JavaScript
88 lines
1.8 KiB
JavaScript
|
|
function parseRequestDateFromId(id) {
|
||
|
|
const match = String(id || '').match(/^REQ-(\d{4})-(\d{2})(\d{2})$/)
|
||
|
|
|
||
|
|
if (!match) {
|
||
|
|
return ''
|
||
|
|
}
|
||
|
|
|
||
|
|
const [, year, month, day] = match
|
||
|
|
return `${year}-${month}-${day}`
|
||
|
|
}
|
||
|
|
|
||
|
|
function formatTripWindow(range) {
|
||
|
|
const normalized = String(range || '')
|
||
|
|
|
||
|
|
if (!normalized) {
|
||
|
|
return '待补充'
|
||
|
|
}
|
||
|
|
|
||
|
|
if (normalized.includes('本月')) {
|
||
|
|
return '本月申请'
|
||
|
|
}
|
||
|
|
|
||
|
|
if (normalized.includes('本周')) {
|
||
|
|
return '本周申请'
|
||
|
|
}
|
||
|
|
|
||
|
|
if (normalized.includes('今天')) {
|
||
|
|
return '今日申请'
|
||
|
|
}
|
||
|
|
|
||
|
|
return normalized
|
||
|
|
}
|
||
|
|
|
||
|
|
function mapApproval(status) {
|
||
|
|
if (status === 'success') {
|
||
|
|
return {
|
||
|
|
node: '已完成归档',
|
||
|
|
approval: '已完成',
|
||
|
|
approvalTone: 'success',
|
||
|
|
travel: '已完成行程',
|
||
|
|
travelTone: 'success'
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if (status === 'danger') {
|
||
|
|
return {
|
||
|
|
node: '异常待复核',
|
||
|
|
approval: '待处理',
|
||
|
|
approvalTone: 'danger',
|
||
|
|
travel: '存在异常',
|
||
|
|
travelTone: 'danger'
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return {
|
||
|
|
node: '财务审核中',
|
||
|
|
approval: '审批中',
|
||
|
|
approvalTone: 'info',
|
||
|
|
travel: '待安排行程',
|
||
|
|
travelTone: 'warning'
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
export function normalizeRequestForUi(request) {
|
||
|
|
if (!request) {
|
||
|
|
return null
|
||
|
|
}
|
||
|
|
|
||
|
|
const applyTime = parseRequestDateFromId(request.id) || '2026-04-18'
|
||
|
|
const reason = `${request.category || '差旅'}申请`
|
||
|
|
const city = request.entity || '待补充'
|
||
|
|
const period = formatTripWindow(request.range)
|
||
|
|
const approvalState = mapApproval(request.status)
|
||
|
|
|
||
|
|
return {
|
||
|
|
...request,
|
||
|
|
reason,
|
||
|
|
city,
|
||
|
|
period,
|
||
|
|
applyTime,
|
||
|
|
node: approvalState.node,
|
||
|
|
approval: approvalState.approval,
|
||
|
|
approvalTone: approvalState.approvalTone,
|
||
|
|
travel: approvalState.travel,
|
||
|
|
travelTone: approvalState.travelTone
|
||
|
|
}
|
||
|
|
}
|