Files
airz-uniapp/services/money.uts
T
hujun dcf12a4471 refactor: 重构存储与接口适配,统一金额单位与会话管理
- 新增配置、存储、金额转换工具服务
- 按userId隔离本地缓存,替换旧设备级存储
- 统一移动端金额单位为万元,新增转换适配逻辑
- 重构认证与请求逻辑,支持真实后端会话
- 调整搜索、帮助、融资模块的模拟开关与数据适配
- 更新文档说明开发状态与配置规则
2026-09-22 17:25:52 +08:00

31 lines
1.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 金额转换使用整数分,避免万元与元之间的浮点乘法误差。
export function wanAmountValid(value: string): boolean {
if (!/^[0-9]{1,5}([.][0-9]{1,6})?$/.test(value)) return false
return wanToCents(value) <= 99999999999
}
export function wanToCents(value: string): number {
const parts = value.split('.')
const fraction = parts.length > 1 ? parts[1] : ''
return parseInt(parts[0]) * 1000000 + parseInt((fraction + '000000').substring(0, 6))
}
export function wanToYuan(value: string): string {
if (!wanAmountValid(value)) throw new Error('金额范围为 0–99999.999999 万元,最多六位小数')
const cents = wanToCents(value)
const fraction = (cents % 100).toString()
return Math.floor(cents / 100).toString() + '.' + (fraction.length == 1 ? '0' + fraction : fraction)
}
export function yuanToWan(value: string): string {
if (value.length == 0) return ''
if (!/^[0-9]+([.][0-9]{1,2})?$/.test(value)) return value
const parts = value.split('.')
const fraction = parts.length > 1 ? parts[1] : ''
const digits = parts[0] + (fraction + '00').substring(0, 2)
const padded = '000000' + digits
const whole = parseInt(padded.substring(0, padded.length - 6)).toString()
const decimal = padded.substring(padded.length - 6).replace(/0+$/, '')
return whole + (decimal.length > 0 ? '.' + decimal : '')
}