feat: 完善预算中心图表与确认对话框交互
后端预算服务增加汇总查询和辅助计算,前端预算中心优化趋 势图组件和数据展示,增强确认对话框通用性和样式,完善预 算编辑对话框布局,补充预算端点单元测试。
This commit is contained in:
@@ -7,12 +7,13 @@
|
||||
role="presentation"
|
||||
@click.self="handleMaskClose"
|
||||
>
|
||||
<section
|
||||
class="shared-confirm-card"
|
||||
role="alertdialog"
|
||||
aria-modal="true"
|
||||
:aria-labelledby="titleId"
|
||||
@click.stop
|
||||
<section
|
||||
class="shared-confirm-card"
|
||||
:class="cardClasses"
|
||||
role="alertdialog"
|
||||
aria-modal="true"
|
||||
:aria-labelledby="titleId"
|
||||
@click.stop
|
||||
>
|
||||
<span v-if="badge" class="shared-confirm-badge" :class="badgeTone">
|
||||
{{ badge }}
|
||||
@@ -62,16 +63,22 @@ const props = defineProps({
|
||||
cancelText: { type: String, default: '取消' },
|
||||
confirmText: { type: String, default: '确认' },
|
||||
busyText: { type: String, default: '处理中...' },
|
||||
confirmTone: { type: String, default: 'primary' },
|
||||
confirmIcon: { type: String, default: '' },
|
||||
busy: { type: Boolean, default: false },
|
||||
closeOnMask: { type: Boolean, default: true }
|
||||
})
|
||||
confirmTone: { type: String, default: 'primary' },
|
||||
confirmIcon: { type: String, default: '' },
|
||||
busy: { type: Boolean, default: false },
|
||||
closeOnMask: { type: Boolean, default: true },
|
||||
size: { type: String, default: 'default' },
|
||||
actionsAlign: { type: String, default: 'end' }
|
||||
})
|
||||
|
||||
const emit = defineEmits(['close', 'cancel', 'confirm'])
|
||||
const instance = getCurrentInstance()
|
||||
|
||||
const titleId = computed(() => `shared-confirm-title-${instance?.uid || 'dialog'}`)
|
||||
const titleId = computed(() => `shared-confirm-title-${instance?.uid || 'dialog'}`)
|
||||
const cardClasses = computed(() => [
|
||||
`shared-confirm-card--${props.size}`,
|
||||
`shared-confirm-actions-${props.actionsAlign}`
|
||||
])
|
||||
|
||||
function handleMaskClose() {
|
||||
if (!props.closeOnMask || props.busy) {
|
||||
@@ -163,16 +170,28 @@ function handleCancel() {
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.shared-confirm-actions {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
gap: 10px;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.shared-confirm-btn {
|
||||
min-width: 140px;
|
||||
min-height: 42px;
|
||||
.shared-confirm-actions {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
gap: 10px;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.shared-confirm-card.shared-confirm-actions-start .shared-confirm-actions {
|
||||
justify-content: flex-start;
|
||||
}
|
||||
|
||||
.shared-confirm-card.shared-confirm-actions-center .shared-confirm-actions {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.shared-confirm-card.shared-confirm-actions-end .shared-confirm-actions {
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.shared-confirm-btn {
|
||||
min-width: 140px;
|
||||
min-height: 42px;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
@@ -233,12 +252,42 @@ function handleCancel() {
|
||||
|
||||
.shared-confirm-enter-from .shared-confirm-card,
|
||||
.shared-confirm-leave-to .shared-confirm-card {
|
||||
transform: translateY(8px) scale(0.98);
|
||||
}
|
||||
|
||||
@media (max-width: 720px) {
|
||||
.shared-confirm-mask {
|
||||
padding: 18px;
|
||||
transform: translateY(8px) scale(0.98);
|
||||
}
|
||||
|
||||
.shared-confirm-card--compact {
|
||||
width: min(360px, 100%);
|
||||
gap: 8px;
|
||||
padding: 16px;
|
||||
border-radius: 12px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.shared-confirm-card--compact h4 {
|
||||
font-size: 15px;
|
||||
line-height: 1.35;
|
||||
}
|
||||
|
||||
.shared-confirm-card--compact p {
|
||||
font-size: 12px;
|
||||
line-height: 1.55;
|
||||
}
|
||||
|
||||
.shared-confirm-card--compact .shared-confirm-actions {
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
.shared-confirm-card--compact .shared-confirm-btn {
|
||||
min-width: 76px;
|
||||
min-height: 30px;
|
||||
padding: 0 10px;
|
||||
border-radius: 7px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
@media (max-width: 720px) {
|
||||
.shared-confirm-mask {
|
||||
padding: 18px;
|
||||
}
|
||||
|
||||
.shared-confirm-card {
|
||||
|
||||
Reference in New Issue
Block a user