feat: 记账新增分类筛选(本月实际分类动态选项,与类型/报销筛选叠加,切月重置)

This commit is contained in:
root
2026-10-27 12:57:11 +08:00
parent 3bbc68b63e
commit 1e3dc1a170
8 changed files with 44 additions and 21 deletions
+11
View File
@@ -86,9 +86,16 @@ const summary = computed(() => {
const typeFilter = ref<'all' | TxType>('all')
const reimbFilter = ref<'all' | 'pending' | 'done'>('all')
const catFilter = ref<string>('all')
// 切换月份时重置分类筛选(新月份的分类集合可能不同)
watch(monthRef, () => { catFilter.value = 'all' })
const usedCategories = computed(() =>
Array.from(new Set(rows.value.map(r => r.category))).sort((a, b) => a.localeCompare(b, 'zh'))
)
const filtered = computed(() =>
sorted.value.filter(r => {
if (typeFilter.value !== 'all' && r.type !== typeFilter.value) return false
if (catFilter.value !== 'all' && r.category !== catFilter.value) return false
if (reimbFilter.value === 'pending' && !(r.type === 'expense' && r.reimbursable === 1 && r.reimbursed !== 1)) return false
if (reimbFilter.value === 'done' && !(r.reimbursable === 1 && r.reimbursed === 1)) return false
return true
@@ -227,6 +234,10 @@ async function confirmDelete() {
<option value="expense">仅支出</option>
<option value="income">仅收入</option>
</select>
<select class="select w-filter" v-model="catFilter">
<option value="all">全部分类</option>
<option v-for="c in usedCategories" :key="c" :value="c">{{ c }}</option>
</select>
<select class="select w-filter" v-model="reimbFilter">
<option value="all">全部报销</option>
<option value="pending">待报销</option>