style: 全局 UI 主题皮肤重构与样式模块化
引入 Element Plus 主题定制和主题皮肤 composable,将全局 样式拆分为组件级独立 CSS 文件(侧边栏、顶栏、工作台等), 统一色彩变量和间距规范,重构所有视图和组件样式以适配新 主题系统,优化图表和知识图谱组件视觉表现,提取审计和差 旅报销相关子组件。
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user