From 769d50bf5ab11deb27e2d9c42646198ec5943de2 Mon Sep 17 00:00:00 2001 From: WangDL Date: Fri, 22 May 2026 15:40:09 +0800 Subject: [PATCH] feat: cost CRUD + monthly summary + expiry alerts --- src/pages/Billing.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/Billing.tsx b/src/pages/Billing.tsx index 05995d3..2aa387c 100644 --- a/src/pages/Billing.tsx +++ b/src/pages/Billing.tsx @@ -3,7 +3,7 @@ import { useQuery, useQueryClient } from '@tanstack/react-query' import { Card, Row, Col, Statistic, Button, Tag, Space, Typography, App, Table, Modal, Form, Input, Select, DatePicker, InputNumber } from 'antd' import { DollarOutlined, ReloadOutlined, LinkOutlined, PlusOutlined, DeleteOutlined, EditOutlined } from '@ant-design/icons' import { getBilling, type BillingInfo } from '@/services/billing-api' -import { getCostSummary, createCost, updateCost, deleteCost, type CostSummary, type CostItem } from '@/services/costs-api' +import { getCostSummary, createCost, updateCost, deleteCost as deleteCostApi, type CostSummary, type CostItem } from '@/services/costs-api' import dayjs from 'dayjs' const { Text, Title } = Typography @@ -43,7 +43,7 @@ function BillingContent() { const deleteCost = (item: CostItem) => modal.confirm({ title: '删除费用', content: `确定删除「${item.name}」?`, okType: 'danger', okText: '删除', - onOk: async () => { await deleteCost(item.id); qc.invalidateQueries({ queryKey: ['costs', 'summary'] }) }, + onOk: async () => { await deleteCostApi(item.id); qc.invalidateQueries({ queryKey: ['costs', 'summary'] }) }, }) const openEdit = (item: CostItem) => { setEditing(item); form.setFieldsValue({ ...item, purchaseDate: dayjs(item.purchaseDate), expiryDate: item.expiryDate ? dayjs(item.expiryDate) : null }); setModalOpen(true) }