Files
Neo-ZQYY/apps/demo-miniprogram/miniprogram/utils/money.ts
Neo 779b2f6d52 chore: v1 整理 — 清理历史文件、DDL 合并、文档归档
- 清理 1155 个已删除的历史文件(废弃 prompt_logs、tmp、旧 ops 脚本)
- export/ 数据文件从 git 移除(已在 .gitignore)
- demo-miniprogram 从 tmp/ 移入 apps/,添加 CLAUDE.md 注解
- DDL 合并:完整 schema 定义填充到 db/*/schemas/(从 docs/database/ddl/ 复制)
- 39 个 v1 迁移脚本归档到 db/_archived/migrations_v1_merged/
- 4 个迁移变更类 BD_Manual 文档归档到 docs/database/_archived/
- .gitignore 补充 .vite/ 和 apps/*.zip
- settings.json 添加 effortLevel 默认配置
- scripts/ops/ 新增运维脚本入库

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 00:39:27 +08:00

66 lines
2.0 KiB
TypeScript
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.
/**
* 金额 / 计数 / 百分比格式化工具
* 规范docs/miniprogram-dev/design-system/DISPLAY-STANDARDS.md
*/
/**
* 金额格式化
* ¥12,680 / -¥368 / ¥0 / --
* @param value 金额(元,整数)
*/
export function formatMoney(value: number | null | undefined): string {
if (value === null || value === undefined) return '--'
if (value === 0) return '¥0'
const abs = Math.round(Math.abs(value))
const formatted = abs.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')
return value < 0 ? `${formatted}` : `¥${formatted}`
}
/**
* 计数格式化(带单位)
* 零值返回 '--'≥1000 加千分位
* @param value 数值
* @param unit 单位字符串,如 '笔' '次' '人'
*/
export function formatCount(
value: number | null | undefined,
unit: string,
): string {
if (value === null || value === undefined || value === 0) return '--'
const n =
value >= 1000
? value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')
: String(value)
return `${n}${unit}`
}
/**
* 纯数字千分位格式化(无单位,用于非金额大数字)
* 零值返回 '--'
*/
export function formatNumber(value: number | null | undefined): string {
if (value === null || value === undefined || value === 0) return '--'
return value >= 1000
? value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')
: String(value)
}
/**
* 百分比展示允许超过100%
* 保留1位小数零值返回 '0%';空值返回 '--'
*/
export function formatPercent(value: number | null | undefined): string {
if (value === null || value === undefined) return '--'
if (value === 0) return '0%'
return `${value.toFixed(1)}%`
}
/**
* 进度条 CSS 宽度字符串(截断至 [0, 100],防止溢出)
* 用法style="width: {{toProgressWidth(perfData.filledPct)}}"
*/
export function toProgressWidth(value: number | null | undefined): string {
if (value === null || value === undefined) return '0%'
return `${Math.min(100, Math.max(0, value)).toFixed(1)}%`
}