feat: 统计页面添加分类筛选与搜索优化
- 统计页面添加分类多选筛选功能 - 点击分类可跳转到搜索页面查看详情 - 搜索页面添加 URL 同步与自动搜索 - 提取 useCategories hook 消除重复代码 - 修复自定义分类图标显示问题 - 添加 useMemo 优化计算性能 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
b5f9a238bb
commit
a89d4f2402
@@ -1,16 +1,17 @@
|
||||
import { useState, useEffect } from 'react';
|
||||
import { useRouter } from 'next/router';
|
||||
import { isLoggedIn, getRecurringBills, createRecurringBill, updateRecurringBill, deleteRecurringBill, applyRecurringBill } from '../lib/api';
|
||||
import { DEFAULT_CATEGORIES } from '../lib/categories';
|
||||
import AppShell from '../components/AppShell';
|
||||
import { Icon } from '../components/icons';
|
||||
import { useToast } from '../components/ToastProvider';
|
||||
import { useConfirm } from '../components/ConfirmProvider';
|
||||
import { useCategories } from '../hooks/useCategories';
|
||||
|
||||
export default function Recurring() {
|
||||
const router = useRouter();
|
||||
const { showToast } = useToast();
|
||||
const { confirm } = useConfirm();
|
||||
const { categories } = useCategories();
|
||||
const [bills, setBills] = useState([]);
|
||||
const [modalOpen, setModalOpen] = useState(false);
|
||||
const [editingBill, setEditingBill] = useState(null);
|
||||
@@ -197,8 +198,8 @@ export default function Recurring() {
|
||||
</div>
|
||||
<div className="bills-list">
|
||||
{bills.map((bill) => {
|
||||
const categories = DEFAULT_CATEGORIES[bill.type];
|
||||
const cat = categories.find((item) => item.name === bill.category) || { icon: '📝' };
|
||||
const categoryList = categories[bill.type];
|
||||
const cat = categoryList.find((item) => item.name === bill.category) || { icon: '📝' };
|
||||
return (
|
||||
<button
|
||||
key={bill.id}
|
||||
@@ -304,7 +305,7 @@ export default function Recurring() {
|
||||
<div className="form-group">
|
||||
<label>分类</label>
|
||||
<div className="category-grid">
|
||||
{DEFAULT_CATEGORIES[formData.type].map((cat) => (
|
||||
{categories[formData.type].map((cat) => (
|
||||
<button
|
||||
key={cat.name}
|
||||
type="button"
|
||||
|
||||
Reference in New Issue
Block a user