前端适配:Money工具函数和Wallet API类型更新
核心改造: 1. Money工具函数:新增formatCent、formatCentWithSymbol、yuanToCent等函数 2. Wallet API类型:WalletAccount和WalletLedger改为*_cent字段 3. API请求函数:rechargeWallet和startWalletRechargePayment自动转换元为分 4. 文档:生成完整的前端适配指南 技术细节: - formatCent: 分转角并格式化(四舍五入到0.1元) - yuanToCent: 元转分(用于表单提交) - API函数自动处理转换,组件层面仍使用元 - 生成详细的适配指南供后续组件修改参考 下一步: - 按照前端适配指南修改所有Vue组件 - 测试金额显示和计算精度
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
/**
|
||||
* 统一金额处理工具函数
|
||||
* 全项目金额精度统一为角(0.1元)
|
||||
* 后端存储:int64(分)
|
||||
* 前端展示:角精度(0.1元)
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -29,3 +30,47 @@ export function formatMoney(value: number | undefined | null): string {
|
||||
export function formatMoneyWithSymbol(value: number | undefined | null): string {
|
||||
return `¥${formatMoney(value)}`
|
||||
}
|
||||
|
||||
/**
|
||||
* 分转元(保留2位小数)
|
||||
* @example centToYuan(12345) -> 123.45
|
||||
*/
|
||||
export function centToYuan(cent: number | undefined | null): number {
|
||||
return Number(cent || 0) / 100
|
||||
}
|
||||
|
||||
/**
|
||||
* 分转角(四舍五入到0.1元)
|
||||
* @example centToJiao(12345) -> 123.5
|
||||
* @example centToJiao(12344) -> 123.4
|
||||
*/
|
||||
export function centToJiao(cent: number | undefined | null): number {
|
||||
return Math.round(Number(cent || 0) / 10) / 10
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化分为角字符串(保留1位小数)
|
||||
* @example formatCent(12345) -> "123.5"
|
||||
* @example formatCent(12344) -> "123.4"
|
||||
*/
|
||||
export function formatCent(cent: number | undefined | null): string {
|
||||
return centToJiao(cent).toFixed(1)
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化分为角字符串并添加货币符号
|
||||
* @example formatCentWithSymbol(12345) -> "¥123.5"
|
||||
*/
|
||||
export function formatCentWithSymbol(cent: number | undefined | null): string {
|
||||
return `¥${formatCent(cent)}`
|
||||
}
|
||||
|
||||
/**
|
||||
* 元转分(四舍五入)
|
||||
* 用户输入金额时使用
|
||||
* @example yuanToCent(123.45) -> 12345
|
||||
* @example yuanToCent(123.456) -> 12346
|
||||
*/
|
||||
export function yuanToCent(yuan: number | undefined | null): number {
|
||||
return Math.round(Number(yuan || 0) * 100)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user