1
All checks were successful
Docker Build & Deploy / Build Docker Image (push) Successful in 23s
Docker Build & Deploy / Deploy to Production (push) Successful in 10s
Docker Build & Deploy / Cleanup Dangling Images (push) Successful in 1s
Docker Build & Deploy / WeChat Notification (push) Successful in 1s

This commit is contained in:
孙诚
2026-01-16 12:27:00 +08:00
parent 59b81148ac
commit f77cc57cab

View File

@@ -228,95 +228,94 @@
image="search"
/>
</div>
<!-- 入分类统计 -->
<!-- 支和不计收支并列显示 -->
<div
v-if="incomeCategoriesView.length > 0"
class="common-card"
v-if="incomeCategoriesView.length > 0 || noneCategoriesView.length > 0"
class="side-by-side-cards"
>
<div class="card-header">
<h3 class="card-title">
收入分类统计
</h3>
<van-tag
type="success"
size="medium"
>
{{ incomeCategoriesView.length }}
</van-tag>
</div>
<!-- 收入分类统计 -->
<div
v-if="incomeCategoriesView.length > 0"
class="common-card half-card"
>
<div class="card-header">
<h3 class="card-title">
收入
</h3>
<van-tag
type="success"
size="medium"
>
{{ incomeCategoriesView.length }}
</van-tag>
</div>
<div class="category-list">
<div
v-for="category in incomeCategoriesView"
:key="category.classify"
class="category-item clickable"
@click="goToCategoryBills(category.classify, 1)"
>
<div class="category-info">
<div class="category-color income-color" />
<div class="category-name-with-count">
<span class="category-name">{{ category.classify || '未分类' }}</span>
<div class="category-list">
<div
v-for="category in incomeCategoriesView"
:key="category.classify"
class="category-item clickable compact"
@click="goToCategoryBills(category.classify, 1)"
>
<div class="compact-row top">
<div class="category-info-compact">
<div class="category-color income-color" />
<span class="category-name text-ellipsis">{{ category.classify || '未分类' }}</span>
</div>
<div class="category-percent">
{{ category.percent }}%
</div>
</div>
<div class="compact-row bottom">
<div class="category-amount income-text">
¥{{ formatMoney(category.amount) }}
</div>
<span class="category-count">{{ category.count }}</span>
</div>
</div>
<div class="category-stats">
<div class="category-amount income-text">
¥{{ formatMoney(category.amount) }}
</div>
<div class="category-percent">
{{ category.percent }}%
</div>
</div>
<van-icon
name="arrow"
class="category-arrow"
/>
</div>
</div>
</div>
<!-- 不计收支分类统计 -->
<div
v-if="noneCategoriesView.length > 0"
class="common-card"
>
<div class="card-header">
<h3 class="card-title">
不计收支分类统计
</h3>
<van-tag
type="warning"
size="medium"
>
{{ noneCategoriesView.length }}
</van-tag>
</div>
<div class="category-list">
<div
v-for="category in noneCategoriesView"
:key="category.classify"
class="category-item clickable"
@click="goToCategoryBills(category.classify, 2)"
>
<div class="category-info">
<div class="category-color none-color" />
<div class="category-name-with-count">
<span class="category-name">{{ category.classify || '未分类' }}</span>
<!-- 不计收支分类统计 -->
<div
v-if="noneCategoriesView.length > 0"
class="common-card half-card"
>
<div class="card-header">
<h3 class="card-title">
不计收支
</h3>
<van-tag
type="warning"
size="medium"
>
{{ noneCategoriesView.length }}
</van-tag>
</div>
<div class="category-list">
<div
v-for="category in noneCategoriesView"
:key="category.classify"
class="category-item clickable compact"
@click="goToCategoryBills(category.classify, 2)"
>
<div class="compact-row top">
<div class="category-info-compact">
<div class="category-color none-color" />
<span class="category-name text-ellipsis">{{ category.classify || '未分类' }}</span>
</div>
<div class="category-percent">
{{ category.percent }}%
</div>
</div>
<div class="compact-row bottom">
<div class="category-amount none-text">
¥{{ formatMoney(category.amount) }}
</div>
<span class="category-count">{{ category.count }}</span>
</div>
</div>
<div class="category-stats">
<div class="category-amount none-text">
¥{{ formatMoney(category.amount) }}
</div>
<div class="category-percent">
{{ category.percent }}%
</div>
</div>
<van-icon
name="arrow"
class="category-arrow"
/>
</div>
</div>
</div>
@@ -1805,4 +1804,69 @@ onBeforeUnmount(() => {
:deep(.van-nav-bar) {
background: transparent !important;
}
/* 并列显示卡片 */
.side-by-side-cards {
display: flex;
gap: 12px;
margin: 0 12px 16px;
}
.side-by-side-cards .common-card {
margin: 0;
flex: 1;
min-width: 0; /* 允许内部元素缩小 */
padding: 12px;
}
.side-by-side-cards .card-header {
margin-bottom: 12px;
}
/* 紧凑模式列表项 */
.category-item.compact {
flex-direction: column;
align-items: stretch;
gap: 6px;
padding: 10px 0;
}
.compact-row {
display: flex;
justify-content: space-between;
align-items: center;
gap: 8px;
}
.compact-row.top {
margin-bottom: 2px;
}
.category-info-compact {
display: flex;
align-items: center;
gap: 6px;
min-width: 0;
flex: 1;
}
.text-ellipsis {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-size: 13px;
}
/* 调整紧凑模式下的字体大小 */
.compact-row .category-percent {
font-size: 12px;
}
.compact-row .category-amount {
font-size: 14px;
}
.compact-row .category-count {
font-size: 11px;
}
</style>