From 755f935c9d4193926e7523f101fa81fbc623f68c Mon Sep 17 00:00:00 2001 From: caoxiaozhu Date: Wed, 13 May 2026 06:55:23 +0000 Subject: [PATCH] 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 --- web/src/composables/useRequests.js | 4 ++++ web/src/utils/requestViewModel.js | 21 +++++++++++++++++++ .../views/scripts/TravelRequestDetailView.js | 14 +++++++++++++ 3 files changed, 39 insertions(+) diff --git a/web/src/composables/useRequests.js b/web/src/composables/useRequests.js index 35a1249..add6a22 100644 --- a/web/src/composables/useRequests.js +++ b/web/src/composables/useRequests.js @@ -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, diff --git a/web/src/utils/requestViewModel.js b/web/src/utils/requestViewModel.js index 7c93edb..4b3f35c 100644 --- a/web/src/utils/requestViewModel.js +++ b/web/src/utils/requestViewModel.js @@ -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) || '申' } diff --git a/web/src/views/scripts/TravelRequestDetailView.js b/web/src/views/scripts/TravelRequestDetailView.js index 543b868..c730205 100644 --- a/web/src/views/scripts/TravelRequestDetailView.js +++ b/web/src/views/scripts/TravelRequestDetailView.js @@ -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 }))