Skip to content

fix(fields): 数值字段详情页显示大量末尾多余的 0(1 → 1.0000000000) #2131

Description

@baozhoutao

问题

在记录详情页(DetailSection)中,数值(number)类型字段显示出大量末尾的 0,例如:

  • 定额工时:16.00000000
  • 版本号:1.0000000000
  • 标准配员合计:2.0000000000
  • 顺序号:10.0000000000

期望显示的应是 16 / 1 / 2 / 10。

原因

数值字段的小数位(precision/scale)通常来自后端 DB 列定义(如 decimal(18,10)),表示的是存储精度上限,而不是必须展示的固定小数位数。

但 packages/fields/src/index.tsx 中的 NumberCellRenderer 把它当成固定小数位来渲染:

const precision = numField.precision ?? 0;
new Intl.NumberFormat('en-US', {
  minimumFractionDigits: precision,   // ← 强制补零
  maximumFractionDigits: precision,
}).format(num)

minimumFractionDigits 被设成了 precision,于是一个 decimal(18,10) 列里的整数 1 就被补成了 1.0000000000。

方案

把小数位当作**最大值(上限)**而非固定值:minimumFractionDigits 固定为 0,末尾多余的 0 会被自动裁掉,maximumFractionDigits 用 precision ?? scale 作为上限。这样:

  • 1(decimal(18,10)) → 1
  • 16.5 → 16.5
  • 3.14159(precision 2) → 3.14

同时补齐 DetailSection 等处只透传 precision、未透传 scale 的问题。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions