refactor(web): update composables, utils and scripts

- useRequests.js: update requests composable
- utils/requestViewModel.js: update request view model utility
- scripts/TravelRequestDetailView.js: update travel detail view script
This commit is contained in:
caoxiaozhu
2026-05-13 06:55:23 +00:00
parent 999872a060
commit 755f935c9d
3 changed files with 39 additions and 0 deletions

View File

@@ -353,6 +353,10 @@ function mapExpenseClaimToRequest(claim) {
dept: String(claim?.department_name || '').trim() || '待补充',
departmentName: String(claim?.department_name || '').trim() || '待补充',
employeeName: String(claim?.employee_name || '').trim() || '待补充',
employeePosition: String(claim?.employee_position || '').trim(),
employeeGrade: String(claim?.employee_grade || '').trim(),
managerName: String(claim?.manager_name || '').trim(),
roleLabels: Array.isArray(claim?.role_labels) ? claim.role_labels.filter(Boolean) : [],
entity: '',
typeCode,
typeLabel,

View File

@@ -172,6 +172,15 @@ function resolveTypeMeta(request) {
}
}
function normalizeRoleLabels(value) {
if (Array.isArray(value)) {
return value.map((item) => String(item || '').trim()).filter(Boolean)
}
const text = String(value || '').trim()
return text ? [text] : []
}
export function normalizeRequestForUi(request) {
if (!request) {
return null
@@ -190,6 +199,11 @@ export function normalizeRequestForUi(request) {
String(request.secondaryStatusValue || request.travel || '').trim()
|| (detailVariant === 'travel' ? '待安排行程' : '待补充票据')
const secondaryStatusTone = String(request.secondaryStatusTone || request.travelTone || '').trim() || 'neutral'
const roleLabels = normalizeRoleLabels(request.roleLabels || request.role_labels)
const profileIdentity =
String(request.profileIdentity || request.employeeIdentity || request.identity || '').trim()
|| roleLabels.join(' / ')
|| '员工'
return {
...request,
@@ -230,6 +244,13 @@ export function normalizeRequestForUi(request) {
note: String(request.note || '').trim(),
profileName: String(request.person || request.applicant || request.employeeName || '').trim() || '当前申请人',
profileDepartment: String(request.dept || request.department || request.departmentName || '').trim() || '所属部门',
profileIdentity,
profilePosition:
String(request.profilePosition || request.employeePosition || request.employee_position || request.position || '').trim()
|| '待补充',
profileGrade: String(request.profileGrade || request.employeeGrade || request.employee_grade || request.grade || '').trim() || '待补充',
profileManager: String(request.profileManager || request.managerName || request.manager_name || request.manager || '').trim() || '待补充',
roleLabels,
profileAvatar:
String(request.person || request.applicant || request.employeeName || '申').trim().slice(0, 1) || '申'
}

View File

@@ -422,6 +422,10 @@ export default {
attachmentSummary: '待补充',
riskSummary: '待补充',
note: '',
profileIdentity: '员工',
profilePosition: '待补充',
profileGrade: '待补充',
profileManager: '待补充',
profileName: '当前申请人',
profileDepartment: '待补充部门',
profileAvatar: '申'
@@ -443,7 +447,17 @@ export default {
const profile = computed(() => ({
name: request.value.profileName,
identity: request.value.profileIdentity,
position: request.value.profilePosition,
department: request.value.profileDepartment,
grade: request.value.profileGrade,
manager: request.value.profileManager,
facts: [
{ label: '身份', value: request.value.profileIdentity },
{ label: '部门', value: request.value.profileDepartment },
{ label: '职级', value: request.value.profileGrade },
{ label: '直属上司', value: request.value.profileManager }
],
avatar: request.value.profileAvatar
}))