前端重构: - 新增 api/ 目录统一管理所有 API 请求 - 所有 stores 和 pages 改为使用 api 模块 - 修复日期格式化函数,支持 Date 对象和 ISO 字符串 - 修复 TransactionItem 使用 CategoryIcon 组件 - 优化 ChartWrapper 区分 H5 和小程序环境 后端修复: - 修复 auth 中间件 PUBLIC_PATHS 缺少 demo-login - 修复备份工具命令注入漏洞,改用 execFile - 修复 stats 路由 type 参数验证 - 优化分类排序为批量 SQL 更新 - 合并迁移和删除为数据库事务原子操作 - 修复交易和统计日期返回格式 - 新增自动备份功能(启动时备份)
53 lines
1.4 KiB
TypeScript
53 lines
1.4 KiB
TypeScript
import { request } from '@/utils/request'
|
|
|
|
/** 分类 */
|
|
export interface Category {
|
|
id: number
|
|
name: string
|
|
icon: string
|
|
color: string
|
|
type: 'expense' | 'income'
|
|
sort_order: number
|
|
is_custom: number
|
|
}
|
|
|
|
/** 获取分类列表 */
|
|
export function getCategories() {
|
|
return request<Category[]>({ url: '/categories' })
|
|
}
|
|
|
|
/** 创建分类 */
|
|
export function createCategory(data: {
|
|
name: string
|
|
icon: string
|
|
color: string
|
|
type: 'expense' | 'income'
|
|
}) {
|
|
return request<{ id: number }>({ url: '/categories', method: 'POST', data })
|
|
}
|
|
|
|
/** 更新分类 */
|
|
export function updateCategory(id: number, data: { name: string; color: string }) {
|
|
return request({ url: `/categories/${id}`, method: 'PUT', data })
|
|
}
|
|
|
|
/** 删除分类 */
|
|
export function deleteCategory(id: number) {
|
|
return request({ url: `/categories/${id}`, method: 'DELETE' })
|
|
}
|
|
|
|
/** 获取分类关联的交易数量 */
|
|
export function getCategoryTransactionCount(id: number) {
|
|
return request<{ count: number }>({ url: `/categories/${id}/transaction-count` })
|
|
}
|
|
|
|
/** 迁移分类关联的交易并删除分类 */
|
|
export function migrateCategory(fromId: number, targetId: number) {
|
|
return request({ url: `/categories/${fromId}/migrate`, method: 'POST', data: { targetId } })
|
|
}
|
|
|
|
/** 更新分类排序 */
|
|
export function sortCategories(ids: number[]) {
|
|
return request({ url: '/categories/sort', method: 'PUT', data: { ids } })
|
|
}
|