feat: 新增日历页面并设为默认首页

新增日历页以月视图展示每日收支汇总、以年视图展示每月汇总,支持月份切换、统计口径过滤与当日明细查看,并将日历置于侧边导航首位、作为访问 / 的默认落地页。

变更内容:
- 新增 `views/Calendar.vue`:月视图按日展示收入/支出/结余与当月合计,年视图以 12 月网格展示每月汇总并可点击进入该月,表头支持上一/下一期、年与月下拉跳转、「今天」及月/年视图切换
- 日历支持统计口径过滤(仅计入统计/全部记录/仅不计入,持久化于 `ledgerly.calendar.statsScope`),仅作用于汇总、不影响当日明细
- 点击日期弹出当日明细浮窗(顶部显示当日收入/支出/结余合计),明细行在条目主行展示金额,可点击打开完整账单详情(只读)并跳转到收支记录按当日筛选
- 视图模式持久化于 `ledgerly.calendar.view`,当前视图与年月同步到 URL(`?view=month|year&y=YYYY&m=MM`),月/年无数据时显示空状态
- `TransactionDetailModal` 新增 `editable` 属性(默认 true)以支持只读场景;`utils/navItems.ts` 将日历置于导航首位;`router` 与 `Login` 默认跳转由统计面板改为日历;补充导航、存储键与 `layout.calendar`、`calendar.*` 三语文案
This commit is contained in:
2026-09-30 17:50:21 +08:00
parent 75e75ad190
commit 007e6727a6
8 changed files with 954 additions and 8 deletions
+25
View File
@@ -88,6 +88,7 @@ export default {
appTitle: { zh: '汇账', en: 'Ledgerly', ja: 'Ledgerly' },
appSubtitle: { zh: '个人财务管理', en: 'Personal Finance', ja: '個人財務管理' },
dashboard: { zh: '统计面板', en: 'Dashboard', ja: 'ダッシュボード' },
calendar: { zh: '日历', en: 'Calendar', ja: 'カレンダー' },
transactions: { zh: '收支记录', en: 'Transactions', ja: '収支記録' },
categories: { zh: '分类管理', en: 'Categories', ja: 'カテゴリ管理' },
tags: { zh: '标签管理', en: 'Tags', ja: 'タグ管理' },
@@ -414,6 +415,30 @@ export default {
chartActionView: { zh: '查看明细', en: 'View Details', ja: '明細を表示' },
},
// 日历
calendar: {
title: { zh: '日历', en: 'Calendar', ja: 'カレンダー' },
hint: { zh: '点击日期查看当天交易明细', en: "Click a date to view that day's transactions", ja: '日付をクリックするとその日の明細を表示します' },
loadFailed: { zh: '加载日历数据失败', en: 'Failed to load calendar data', ja: 'カレンダーデータの読み込みに失敗しました' },
transactionCount: { zh: '交易笔数', en: 'Transactions', ja: '取引件数' },
today: { zh: '今天', en: 'Today', ja: '今日' },
viewMonth: { zh: '月视图', en: 'Month', ja: '月' },
viewYear: { zh: '年视图', en: 'Year', ja: '年' },
prevPeriod: { zh: '上一个', en: 'Previous', ja: '前へ' },
nextPeriod: { zh: '下一个', en: 'Next', ja: '次へ' },
income: { zh: '收入', en: 'Income', ja: '収入' },
expense: { zh: '支出', en: 'Expense', ja: '支出' },
balance: { zh: '结余', en: 'Balance', ja: '収支' },
noData: { zh: '无数据', en: 'No data', ja: 'データなし' },
monthEmpty: { zh: '本月暂无交易数据', en: 'No transactions this month', ja: '今月の取引はありません' },
yearEmpty: { zh: '本年暂无交易数据', en: 'No transactions this year', ja: '今年の取引はありません' },
detailTitle: { zh: '{date} 交易明细', en: 'Transactions on {date}', ja: '{date} の取引明細' },
detailEmpty: { zh: '当天没有交易记录', en: 'No transactions on this day', ja: 'この日の取引はありません' },
detailLoadFailed: { zh: '加载明细失败', en: 'Failed to load details', ja: '明細の読み込みに失敗しました' },
detailMore: { zh: '仅显示前 {shown} 条,共 {total} 条', en: 'Showing first {shown} of {total}', ja: '先頭 {shown} 件を表示(全 {total} 件)' },
viewInTransactions: { zh: '在收支记录中查看', en: 'View in Transactions', ja: '収支記録で表示' },
},
// 收支记录
transaction: {
title: { zh: '收支记录', en: 'Transactions', ja: '収支記録' },