style: 全局 UI 主题皮肤重构与样式模块化

引入 Element Plus 主题定制和主题皮肤 composable,将全局
样式拆分为组件级独立 CSS 文件(侧边栏、顶栏、工作台等),
统一色彩变量和间距规范,重构所有视图和组件样式以适配新
主题系统,优化图表和知识图谱组件视觉表现,提取审计和差
旅报销相关子组件。
This commit is contained in:
caoxiaozhu
2026-05-27 09:17:57 +08:00
parent df49103f23
commit 2dcc72102d
112 changed files with 10983 additions and 8996 deletions

View File

@@ -2,6 +2,8 @@ import { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue'
import { useRouter } from 'vue-router'
import ConfirmDialog from '../../components/shared/ConfirmDialog.vue'
import TravelReimbursementInsightPanel from '../../components/travel/TravelReimbursementInsightPanel.vue'
import TravelReimbursementMessageItem from '../../components/travel/TravelReimbursementMessageItem.vue'
import { useSystemState } from '../../composables/useSystemState.js'
import { useToast } from '../../composables/useToast.js'
import { useTravelReimbursementFlow } from './useTravelReimbursementFlow.js'
@@ -501,7 +503,9 @@ function buildReviewMainMessageText(message) {
export default {
name: 'TravelReimbursementCreateView',
components: {
ConfirmDialog
ConfirmDialog,
TravelReimbursementInsightPanel,
TravelReimbursementMessageItem
},
props: {
initialPrompt: {
@@ -2109,8 +2113,126 @@ export default {
await handleSaveDraftDirectly(message, 'save_draft')
}
const messageItemUi = computed(() => ({
ASSISTANT_DISPLAY_NAME,
aiAvatar,
userAvatar,
submitting: submitting.value,
reviewActionBusy: reviewActionBusy.value,
sessionSwitchBusy: sessionSwitchBusy.value,
applicationPreviewEditor: applicationPreviewEditor.value,
buildMessageBubbleClass,
buildReviewMainMessageText,
renderMarkdown,
handleAssistantMarkdownClick,
resolveApplicationPreviewRows,
resolveApplicationPreviewEditorControl,
resolveApplicationPreviewEditorOptions,
isApplicationPreviewEditing,
openApplicationPreviewEditor,
commitApplicationPreviewEditor,
handleApplicationPreviewEditorKeydown,
buildApplicationPreviewFooterText,
runWelcomeQuickAction: runShortcut,
handleSuggestedAction,
isSuggestedActionSelected,
buildExpenseQueryWindowLabel,
buildExpenseQueryHint,
getExpenseQueryActivePage,
getExpenseQueryTotalPages,
getExpenseQueryVisibleRecords,
handleExpenseQueryRecordClick,
appendExpenseQueryRiskToConversation,
shiftExpenseQueryPage,
setExpenseQueryPage,
buildReviewPlainFollowupForMessage,
canUseInlineSaveDraft,
handleInlineSaveDraft,
buildReviewNextStepRichCopyForMessage,
resolveReviewFooterActions,
handleReviewAction,
buildReviewPrimaryButtonLabel
}))
const insightPanelUi = computed(() => ({
showInsightPanel: showInsightPanel.value,
isKnowledgeSession: isKnowledgeSession.value,
activeReviewPayload: activeReviewPayload.value,
isReviewFlowDrawer: isReviewFlowDrawer.value,
currentInsight: currentInsight.value,
currentIntentLabel: currentIntentLabel.value,
reviewDrawerTitle: reviewDrawerTitle.value,
reviewOverviewDrawerAvailable: reviewOverviewDrawerAvailable.value,
isReviewOverviewDrawer: isReviewOverviewDrawer.value,
submitting: submitting.value,
reviewActionBusy: reviewActionBusy.value,
switchToReviewOverviewDrawer,
reviewDocumentDrawerAvailable: reviewDocumentDrawerAvailable.value,
isReviewDocumentDrawer: isReviewDocumentDrawer.value,
toggleReviewDocumentDrawer,
reviewDocumentDrawerIcon: reviewDocumentDrawerIcon.value,
reviewRiskDrawerAvailable: reviewRiskDrawerAvailable.value,
isReviewRiskDrawer: isReviewRiskDrawer.value,
toggleReviewRiskDrawer,
reviewRiskDrawerIcon: reviewRiskDrawerIcon.value,
reviewFlowDrawerAvailable: reviewFlowDrawerAvailable.value,
flowOverallStatusTone: flowOverallStatusTone.value,
toggleReviewFlowDrawer,
reviewFlowDrawerIcon: reviewFlowDrawerIcon.value,
activeSessionType: activeSessionType.value,
reviewDrawerMode: reviewDrawerMode.value,
hotKnowledgeQuestions,
deleteSessionBusy: deleteSessionBusy.value,
sessionSwitchBusy: sessionSwitchBusy.value,
askHotKnowledgeQuestion,
resolveKnowledgeRankTone,
resolveKnowledgeRankLabel,
flowOverallStatusText: flowOverallStatusText.value,
flowTotalDurationText: flowTotalDurationText.value,
flowRunId: flowRunId.value,
flowRefreshBusy: flowRefreshBusy.value,
refreshFlowRunDetail,
flowSteps: flowSteps.value,
resolveFlowStepStatusLabel,
formatFlowStepDuration,
resolveFlowStepDetail,
reviewIntentText: reviewIntentText.value,
reviewFactCards: reviewFactCards.value,
reviewInlineEditorKey: reviewInlineEditorKey.value,
reviewInlineErrors: reviewInlineErrors.value,
reviewInlineForm: reviewInlineForm.value,
DATE_INPUT_FORMAT,
REVIEW_SCENE_OPTIONS,
REVIEW_SCENE_OTHER_OPTION,
clearInlineReviewFieldError,
commitInlineReviewEditor,
selectInlineScene,
reviewInlinePendingFiles: reviewInlinePendingFiles.value,
openInlineReviewEditor,
reviewPanelConfidence: reviewPanelConfidence.value,
reviewCategoryOptions: reviewCategoryOptions.value,
selectReviewCategory,
reviewSelectedOtherCategory: reviewSelectedOtherCategory.value,
reviewOtherCategoryOpen: reviewOtherCategoryOpen.value,
reviewOtherCategoryOptions: reviewOtherCategoryOptions.value,
selectReviewOtherCategory,
activeReviewDocumentIndex: activeReviewDocumentIndex.value,
reviewDocumentCount: reviewDocumentCount.value,
goReviewDocument,
activeReviewDocument: activeReviewDocument.value,
activeReviewDocumentPreview: activeReviewDocumentPreview.value,
canPreviewActiveReviewDocument: canPreviewActiveReviewDocument.value,
openActiveReviewDocumentPreview,
reviewRiskSummary: reviewRiskSummary.value,
reviewRiskItems: reviewRiskItems.value,
appendReviewRiskBriefToConversation,
reviewRiskEmpty: reviewRiskEmpty.value,
reviewHasUnsavedChanges: reviewHasUnsavedChanges.value,
saveInlineReviewChanges
}))
return {
emit, ASSISTANT_DISPLAY_NAME, aiAvatar, userAvatar, fileInputRef, composerTextareaRef, messageListRef, composerDraft, composerDatePickerOpen, composerDateMode, composerSingleDate, composerRangeStartDate, composerRangeEndDate, composerBusinessTimeTags, composerCanApplyDateSelection,
emit, messageItemUi, insightPanelUi, ASSISTANT_DISPLAY_NAME, aiAvatar, userAvatar, fileInputRef, composerTextareaRef, messageListRef, composerDraft, composerDatePickerOpen, composerDateMode, composerSingleDate, composerRangeStartDate, composerRangeEndDate, composerBusinessTimeTags, composerCanApplyDateSelection,
toggleComposerDatePicker, closeComposerDatePicker, setComposerDateMode, handleComposerDateInputChange, removeComposerBusinessTimeTag, flowSteps, flowRunId, flowRefreshBusy, completedFlowStepCount, flowOverallStatusTone, flowOverallStatusText, flowTotalDurationText,
attachedFiles, composerFilesExpanded, visibleAttachedFiles, hiddenAttachedFileCount, submitting, sessionSwitchBusy, messages, currentInsight, linkedRequest, canSubmit, activeSessionType, isKnowledgeSession, hotKnowledgeQuestions,
hasInsightPanelContent, showInsightPanel, insightPanelToggleLabel, assistantHeaderTitle, assistantHeaderDescription, composerPlaceholder, currentIntentLabel, canDeleteCurrentSession, latestReviewMessage, activeReviewPayload, activeReviewPanelScope, activeReviewFilePreviews, reviewDrawerMode, isReviewOverviewDrawer, isReviewDocumentDrawer, isReviewRiskDrawer, isReviewFlowDrawer,