Просмотр исходного кода

♻️ refactor(utils): 重构日期和货币格式化工具函数

- 从Expenses页面移动formatDate和formatCurrency函数到utils.ts
- 优化日期格式化函数实现,支持字符串和Date对象输入
- 增强货币格式化函数健壮性,处理字符串类型输入和NaN情况

✨ feat(logger): 简化日志工具导入方式

- 统一使用logger导入替代单独的errorLogger和apiLogger
- 减少代码中的日志工具导入语句复杂度
yourname 8 месяцев назад
Родитель
Сommit
2e904b2174
2 измененных файлов с 23 добавлено и 1 удалено
  1. 1 1
      src/client/admin/pages/Expenses.tsx
  2. 22 0
      src/client/utils/utils.ts

+ 1 - 1
src/client/admin/pages/Expenses.tsx

@@ -7,7 +7,7 @@ import { expenseClient, clientClient } from '@/client/api';
 import dayjs, { Dayjs } from 'dayjs';
 import dayjs, { Dayjs } from 'dayjs';
 import { App } from 'antd';
 import { App } from 'antd';
 import { formatCurrency, formatDate } from '@/client/utils/utils';
 import { formatCurrency, formatDate } from '@/client/utils/utils';
-import { errorLogger, apiLogger } from '@/client/utils/logger';
+import { logger } from '@/client/utils/logger';
 
 
 // 定义类型
 // 定义类型
 type ExpenseItem = InferResponseType<typeof expenseClient.$get, 200>['data'][0];
 type ExpenseItem = InferResponseType<typeof expenseClient.$get, 200>['data'][0];

+ 22 - 0
src/client/utils/utils.ts

@@ -41,3 +41,25 @@ export const validateUrl = (url: string): boolean => {
 export const validateAuthHeader = (auth: string): boolean => {
 export const validateAuthHeader = (auth: string): boolean => {
   return /^Basic [A-Za-z0-9+/]+={0,2}$/.test(auth);
   return /^Basic [A-Za-z0-9+/]+={0,2}$/.test(auth);
 };
 };
+
+/**
+ * 格式化日期为YYYY-MM-DD格式
+ * @param date 日期字符串或Date对象
+ * @returns 格式化后的日期字符串
+ */
+export function formatDate(date: string | Date): string {
+  if (!date) return '';
+  const d = new Date(date);
+  return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}`;
+}
+
+/**
+ * 格式化货币为带两位小数的格式
+ * @param amount 金额数字
+ * @returns 格式化后的货币字符串
+ */
+export function formatCurrency(amount: number | string): string {
+  const num = typeof amount === 'string' ? parseFloat(amount) : amount;
+  if (isNaN(num)) return '0.00';
+  return num.toFixed(2);
+}