fix: 优化报销创建页面样式与洞察面板交互
修复侧边栏和审计视图样式细节,完善差旅报销洞察面板和消息 组件布局,优化报销创建页面会话管理和流程状态持久化,增强 申请预览工具函数和导航图标,补充单元测试。
This commit is contained in:
@@ -145,12 +145,18 @@
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div v-if="ui.flowSteps.length" class="review-flow-list">
|
||||
<TransitionGroup
|
||||
v-if="(ui.visibleFlowSteps || ui.flowSteps).length"
|
||||
name="flow-step-reveal"
|
||||
tag="div"
|
||||
class="review-flow-list"
|
||||
>
|
||||
<article
|
||||
v-for="(step, index) in ui.flowSteps"
|
||||
v-for="(step, index) in (ui.visibleFlowSteps || ui.flowSteps)"
|
||||
:key="step.key"
|
||||
class="flow-step-item"
|
||||
:class="step.status"
|
||||
:style="resolveFlowStepStyle(index)"
|
||||
>
|
||||
<div class="flow-step-rail">
|
||||
<span>{{ index + 1 }}</span>
|
||||
@@ -160,7 +166,6 @@
|
||||
<header>
|
||||
<strong>{{ step.title }}</strong>
|
||||
<div class="flow-step-side">
|
||||
<span class="flow-step-status" :class="step.status">{{ ui.resolveFlowStepStatusLabel(step) }}</span>
|
||||
<time>{{ ui.formatFlowStepDuration(step) }}</time>
|
||||
</div>
|
||||
</header>
|
||||
@@ -169,7 +174,7 @@
|
||||
<p v-if="step.error" class="flow-step-error">{{ step.error }}</p>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
</TransitionGroup>
|
||||
|
||||
<div v-else class="flow-empty-state compact">
|
||||
<i class="mdi mdi-timeline-question-outline"></i>
|
||||
@@ -349,12 +354,18 @@
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div v-if="ui.flowSteps.length" class="review-flow-list">
|
||||
<TransitionGroup
|
||||
v-if="(ui.visibleFlowSteps || ui.flowSteps).length"
|
||||
name="flow-step-reveal"
|
||||
tag="div"
|
||||
class="review-flow-list"
|
||||
>
|
||||
<article
|
||||
v-for="(step, index) in ui.flowSteps"
|
||||
v-for="(step, index) in (ui.visibleFlowSteps || ui.flowSteps)"
|
||||
:key="step.key"
|
||||
class="flow-step-item"
|
||||
:class="step.status"
|
||||
:style="resolveFlowStepStyle(index)"
|
||||
>
|
||||
<div class="flow-step-rail">
|
||||
<span>{{ index + 1 }}</span>
|
||||
@@ -364,7 +375,6 @@
|
||||
<header>
|
||||
<strong>{{ step.title }}</strong>
|
||||
<div class="flow-step-side">
|
||||
<span class="flow-step-status" :class="step.status">{{ ui.resolveFlowStepStatusLabel(step) }}</span>
|
||||
<time>{{ ui.formatFlowStepDuration(step) }}</time>
|
||||
</div>
|
||||
</header>
|
||||
@@ -373,7 +383,7 @@
|
||||
<p v-if="step.error" class="flow-step-error">{{ step.error }}</p>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
</TransitionGroup>
|
||||
|
||||
<div v-else class="flow-empty-state compact">
|
||||
<i class="mdi mdi-timeline-question-outline"></i>
|
||||
@@ -616,6 +626,13 @@ export default {
|
||||
type: Object,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
resolveFlowStepStyle(index) {
|
||||
return {
|
||||
transitionDelay: `${Math.min(Number(index) || 0, 5) * 70}ms`
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
<EnterpriseSelect
|
||||
v-else-if="ui.isApplicationPreviewEditing(message, row.key)"
|
||||
v-model="ui.applicationPreviewEditor.draftValue"
|
||||
class="application-preview-input application-preview-select"
|
||||
class="application-preview-select"
|
||||
:options="ui.resolveApplicationPreviewEditorOptions(row.key)"
|
||||
clearable
|
||||
:teleported="false"
|
||||
@@ -105,7 +105,27 @@
|
||||
</div>
|
||||
|
||||
<div
|
||||
v-if="message.role === 'assistant' && message.applicationPreview && ui.buildApplicationPreviewFooterText(message)"
|
||||
v-if="message.role === 'assistant' && message.applicationPreview && ui.resolveApplicationPreviewMissingFields(message)?.length"
|
||||
class="application-preview-footer application-preview-footer-missing"
|
||||
aria-live="polite"
|
||||
>
|
||||
<span class="application-preview-missing-prefix">当前还需要补充:</span>
|
||||
<span class="application-preview-missing-list">
|
||||
<template
|
||||
v-for="(field, index) in ui.resolveApplicationPreviewMissingFields(message)"
|
||||
:key="`${message.id}-missing-${field}`"
|
||||
>
|
||||
<span class="application-preview-missing-chip">{{ field }}</span>
|
||||
<span
|
||||
v-if="index < ui.resolveApplicationPreviewMissingFields(message).length - 1"
|
||||
class="application-preview-missing-separator"
|
||||
>、</span>
|
||||
</template>
|
||||
</span>
|
||||
<span class="application-preview-missing-suffix">。补齐后我再帮您提交申请。</span>
|
||||
</div>
|
||||
<div
|
||||
v-else-if="message.role === 'assistant' && message.applicationPreview && ui.buildApplicationPreviewFooterText(message)"
|
||||
class="application-preview-footer message-answer-content message-answer-markdown"
|
||||
v-html="ui.renderMarkdown(ui.buildApplicationPreviewFooterText(message))"
|
||||
@click="ui.handleAssistantMarkdownClick($event, message)"
|
||||
|
||||
Reference in New Issue
Block a user