feat: 完善文档中心与报销申请交互及侧边栏重构
后端优化编排器报销查询和本体检测精度,增强报销单草稿保 存和附件回填逻辑,前端重构侧边栏组件支持折叠和图标导 航,完善文档中心状态筛选和详情提示,报销创建和审批详情 页优化会话管理和费用明细交互,新增助手应用服务和预设动 作工具函数,补充单元测试覆盖。
This commit is contained in:
@@ -49,6 +49,32 @@ export function normalizeExpenseType(value) {
|
||||
return String(value || '').trim() || 'other'
|
||||
}
|
||||
|
||||
export function isApplicationDocumentRequest(request) {
|
||||
const documentType = String(
|
||||
request?.documentTypeCode
|
||||
|| request?.document_type_code
|
||||
|| request?.documentType
|
||||
|| request?.document_type
|
||||
|| ''
|
||||
).trim()
|
||||
const claimNo = String(
|
||||
request?.claimNo
|
||||
|| request?.claim_no
|
||||
|| request?.documentNo
|
||||
|| request?.id
|
||||
|| ''
|
||||
).trim().toUpperCase()
|
||||
const typeCode = normalizeExpenseType(request?.typeCode || request?.expense_type)
|
||||
|
||||
return (
|
||||
documentType === 'application'
|
||||
|| documentType === 'expense_application'
|
||||
|| claimNo.startsWith('APP-')
|
||||
|| typeCode === 'application'
|
||||
|| typeCode.endsWith('_application')
|
||||
)
|
||||
}
|
||||
|
||||
export function resolveExpenseTypeLabel(value) {
|
||||
const normalized = normalizeExpenseType(value)
|
||||
return EXPENSE_TYPE_OPTIONS.find((option) => option.value === normalized)?.label
|
||||
@@ -131,7 +157,41 @@ export function resolveExpenseDescriptionDetail(itemType, itemLocation) {
|
||||
return resolveLocationDisplay(itemLocation, itemType)
|
||||
}
|
||||
|
||||
export function buildFallbackProgressSteps() {
|
||||
export function buildFallbackProgressSteps(requestModel = {}) {
|
||||
if (isApplicationDocumentRequest(requestModel)) {
|
||||
const node = String(requestModel?.node || requestModel?.workflowNode || requestModel?.approvalStage || '').trim()
|
||||
const approvalKey = String(requestModel?.approvalKey || '').trim()
|
||||
const completed = approvalKey === 'completed' || /审批完成|申请完成|已完成/.test(node)
|
||||
const inLeaderApproval = approvalKey === 'in_progress' || /直属领导|领导审批|审批中/.test(node)
|
||||
|
||||
return [
|
||||
{
|
||||
index: 1,
|
||||
label: '创建申请',
|
||||
time: completed || inLeaderApproval ? '已完成' : '进行中',
|
||||
done: completed || inLeaderApproval,
|
||||
active: true,
|
||||
current: !(completed || inLeaderApproval)
|
||||
},
|
||||
{
|
||||
index: 2,
|
||||
label: '直属领导审批',
|
||||
time: completed ? '已完成' : inLeaderApproval ? '进行中' : '待处理',
|
||||
done: completed,
|
||||
active: completed || inLeaderApproval,
|
||||
current: !completed && inLeaderApproval
|
||||
},
|
||||
{
|
||||
index: 3,
|
||||
label: '审批完成',
|
||||
time: completed ? '已完成' : '待处理',
|
||||
done: completed,
|
||||
active: completed,
|
||||
current: false
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
return [
|
||||
{ index: 1, label: '创建单据', time: '已完成', done: true, active: true },
|
||||
{ index: 2, label: '待提交', time: '进行中', active: true, current: true },
|
||||
@@ -143,6 +203,10 @@ export function buildFallbackProgressSteps() {
|
||||
}
|
||||
|
||||
export function buildFallbackExpenseItems(request) {
|
||||
if (isApplicationDocumentRequest(request)) {
|
||||
return []
|
||||
}
|
||||
|
||||
return [
|
||||
buildExpenseItemViewModel({
|
||||
id: 'fallback-1',
|
||||
@@ -413,6 +477,10 @@ export function buildExpenseDraftIssues(item) {
|
||||
}
|
||||
|
||||
export function buildOptionalTravelReceiptRiskCards(requestModel, items) {
|
||||
if (isApplicationDocumentRequest(requestModel)) {
|
||||
return []
|
||||
}
|
||||
|
||||
const normalizedItems = Array.isArray(items) ? items : []
|
||||
const isTravelContext =
|
||||
requestModel?.detailVariant === 'travel' ||
|
||||
|
||||
Reference in New Issue
Block a user