Compare commits

...

5 Commits

Author SHA1 Message Date
1ab75f4701 Merge branch 'develop' into feature/member
修改
2024-11-27 16:18:26 +08:00
773c155d0c 修复警告 2024-11-27 16:08:34 +08:00
3ad8cf9184 Revert "修复警告"
This reverts commit 1147bc47d7.
2024-11-27 16:07:37 +08:00
1147bc47d7 修复警告 2024-11-27 16:07:10 +08:00
30e9345d81 优化: 主页统计功能改进
- 调整主页统计区域布局和样式
- 优化支出、收入、结余的显示顺序
- 改进结余区域的高亮显示逻辑
- 简化代码结构和格式
2024-11-27 14:27:26 +08:00

View File

@ -1,5 +1,6 @@
package com.yovinchen.bookkeeping.ui.components
import android.annotation.SuppressLint
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
@ -22,9 +23,7 @@ import java.time.YearMonth
@Composable
fun MonthYearPickerDialog(
selectedMonth: YearMonth,
onMonthSelected: (YearMonth) -> Unit,
onDismiss: () -> Unit
selectedMonth: YearMonth, onMonthSelected: (YearMonth) -> Unit, onDismiss: () -> Unit
) {
var currentYearMonth by remember { mutableStateOf(selectedMonth) }
@ -71,8 +70,7 @@ fun MonthYearPickerDialog(
// 月份网格
LazyVerticalGrid(
columns = GridCells.Fixed(3),
modifier = Modifier.height(200.dp)
columns = GridCells.Fixed(3), modifier = Modifier.height(200.dp)
) {
items(12) { index ->
val month = index + 1
@ -126,6 +124,7 @@ fun MonthYearPickerDialog(
}
}
@SuppressLint("DefaultLocale")
@Composable
fun MonthlyStatistics(
totalIncome: Double,
@ -163,11 +162,9 @@ fun MonthlyStatistics(
Icon(Icons.AutoMirrored.Filled.KeyboardArrowLeft, "上个月")
}
Text(
text = "${selectedMonth.year}${selectedMonth.monthValue}",
Text(text = "${selectedMonth.year}${selectedMonth.monthValue}",
style = MaterialTheme.typography.titleLarge,
modifier = Modifier.clickable { showMonthPicker = true }
)
modifier = Modifier.clickable { showMonthPicker = true })
IconButton(onClick = onNextMonth) {
Icon(Icons.AutoMirrored.Filled.KeyboardArrowRight, "下个月")
@ -177,24 +174,38 @@ fun MonthlyStatistics(
Spacer(modifier = Modifier.height(16.dp))
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceBetween
modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween
) {
// 收入统计
Column(
modifier = Modifier
.weight(1f)
.clickable { onIncomeClick() }
.background(
if (selectedType == TransactionType.INCOME) MaterialTheme.colorScheme.primaryContainer
else Color.Transparent,
RoundedCornerShape(8.dp)
)
.padding(8.dp)
) {
// 支出统计
Column(modifier = Modifier
.weight(1f)
.clickable { onExpenseClick() }
.background(
if (selectedType == TransactionType.EXPENSE) MaterialTheme.colorScheme.primaryContainer
else Color.Transparent, RoundedCornerShape(8.dp)
)
.padding(8.dp)) {
Text(
text = "收入",
style = MaterialTheme.typography.titleMedium
text = "支出", style = MaterialTheme.typography.titleMedium
)
Text(
text = "¥${String.format("%.2f", totalExpense)}",
style = MaterialTheme.typography.bodyLarge,
color = MaterialTheme.colorScheme.error
)
}
Spacer(modifier = Modifier.width(16.dp))
// 收入统计
Column(modifier = Modifier
.weight(1f)
.clickable { onIncomeClick() }
.background(
if (selectedType == TransactionType.INCOME) MaterialTheme.colorScheme.primaryContainer
else Color.Transparent, RoundedCornerShape(8.dp)
)
.padding(8.dp)) {
Text(
text = "收入", style = MaterialTheme.typography.titleMedium
)
Text(
text = "¥${String.format("%.2f", totalIncome)}",
@ -204,35 +215,30 @@ fun MonthlyStatistics(
}
Spacer(modifier = Modifier.width(16.dp))
// 支出统计
Column(
modifier = Modifier
.weight(1f)
.clickable { onExpenseClick() }
.background(
if (selectedType == TransactionType.EXPENSE) MaterialTheme.colorScheme.primaryContainer
else Color.Transparent,
RoundedCornerShape(8.dp)
)
.padding(8.dp)
) {
// 结余统计
Column(modifier = Modifier
.weight(1f)
.clickable { onClearFilter() }
.background(
if (selectedType == TransactionType.INCOME) MaterialTheme.colorScheme.primaryContainer
else Color.Transparent, RoundedCornerShape(8.dp)
)
.padding(8.dp)) {
Text(
text = "支出",
style = MaterialTheme.typography.titleMedium
text = "结余", style = MaterialTheme.typography.titleMedium
)
Text(
text = "¥${String.format("%.2f", totalExpense)}",
text = "¥${String.format("%.2f", totalIncome - totalExpense)}",
style = MaterialTheme.typography.bodyLarge,
color = MaterialTheme.colorScheme.error
color = if (totalIncome >= totalExpense) MaterialTheme.colorScheme.tertiary
else MaterialTheme.colorScheme.error
)
}
}
if (selectedType != null) {
TextButton(
onClick = onClearFilter,
modifier = Modifier.align(Alignment.End)
onClick = onClearFilter, modifier = Modifier.align(Alignment.End)
) {
Text("清除筛选")
}
@ -241,10 +247,8 @@ fun MonthlyStatistics(
}
if (showMonthPicker) {
MonthYearPickerDialog(
selectedMonth = selectedMonth,
MonthYearPickerDialog(selectedMonth = selectedMonth,
onMonthSelected = onMonthSelected,
onDismiss = { showMonthPicker = false }
)
onDismiss = { showMonthPicker = false })
}
}