fix: 优化报销创建页面样式与洞察面板交互
修复侧边栏和审计视图样式细节,完善差旅报销洞察面板和消息 组件布局,优化报销创建页面会话管理和流程状态持久化,增强 申请预览工具函数和导航图标,补充单元测试。
This commit is contained in:
@@ -2,6 +2,7 @@ import { buildSuggestedActionKey } from '../../utils/suggestedActionKey.js'
|
||||
import { normalizeExpenseQueryPayload } from './travelReimbursementExpenseQueryModel.js'
|
||||
import { buildAgentInsight, buildReviewFilePreviewsFromReviewPayload } from './travelReimbursementAttachmentModel.js'
|
||||
import { resolveExpenseTypeLabel } from './travelReimbursementReviewModel.js'
|
||||
import { isBudgetMonitorUser, isExecutiveUser } from '../../utils/accessControl.js'
|
||||
import {
|
||||
GUIDED_ACTION_OPEN_TRAVEL_CALCULATOR,
|
||||
GUIDED_ACTION_START_APPLICATION,
|
||||
@@ -13,12 +14,14 @@ export const SESSION_TYPE_EXPENSE = 'expense'
|
||||
export const SESSION_TYPE_APPLICATION = 'application'
|
||||
export const SESSION_TYPE_APPROVAL = 'approval'
|
||||
export const SESSION_TYPE_KNOWLEDGE = 'knowledge'
|
||||
export const SESSION_TYPE_BUDGET = 'budget'
|
||||
|
||||
export const ASSISTANT_SESSION_TYPES = [
|
||||
SESSION_TYPE_APPLICATION,
|
||||
SESSION_TYPE_EXPENSE,
|
||||
SESSION_TYPE_APPROVAL,
|
||||
SESSION_TYPE_KNOWLEDGE
|
||||
SESSION_TYPE_KNOWLEDGE,
|
||||
SESSION_TYPE_BUDGET
|
||||
]
|
||||
|
||||
export const ASSISTANT_SESSION_MODE_OPTIONS = [
|
||||
@@ -45,9 +48,39 @@ export const ASSISTANT_SESSION_MODE_OPTIONS = [
|
||||
label: '财务知识助手',
|
||||
icon: 'mdi mdi-book-open-page-variant-outline',
|
||||
description: '只处理财务制度、标准规则、票据要求和政策解释'
|
||||
},
|
||||
{
|
||||
key: SESSION_TYPE_BUDGET,
|
||||
label: '预算编制助手',
|
||||
icon: 'mdi mdi-calculator-variant-outline',
|
||||
description: '帮助你进行预算编制与预算相关问题的整理'
|
||||
}
|
||||
]
|
||||
|
||||
export function canUseBudgetAssistantSession(user = null) {
|
||||
return Boolean(isBudgetMonitorUser(user) || isExecutiveUser(user))
|
||||
}
|
||||
|
||||
function canUseAssistantSessionType(sessionType, user = null) {
|
||||
const normalized = String(sessionType || '').trim()
|
||||
if (normalized === SESSION_TYPE_BUDGET) {
|
||||
return canUseBudgetAssistantSession(user)
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
export function filterAssistantSessionModes(sessionModes = [], user = null) {
|
||||
return Array.isArray(sessionModes)
|
||||
? sessionModes.filter((mode) => canUseAssistantSessionType(mode?.key, user))
|
||||
: []
|
||||
}
|
||||
|
||||
export function filterAssistantSessionTypes(sessionTypes = [], user = null) {
|
||||
return Array.isArray(sessionTypes)
|
||||
? sessionTypes.filter((sessionType) => canUseAssistantSessionType(String(sessionType || '').trim(), user))
|
||||
: []
|
||||
}
|
||||
|
||||
export function normalizeAssistantSessionType(sessionType, fallback = SESSION_TYPE_EXPENSE) {
|
||||
const normalized = String(sessionType || '').trim()
|
||||
if (ASSISTANT_SESSION_TYPES.includes(normalized)) {
|
||||
|
||||
Reference in New Issue
Block a user