项目正在快速迭代中,API 与视觉细节可能随版本调整,请勿用于生产环境。
仅桌面端保证样式

AuditTimeline 审计时间线 ​

面向操作审计的时间线:操作者头像色按名字稳定取色,时间放轴对侧,字段级 diff 可展开查看变更前后值。

规则要点:

  • 操作者名依次取 operator、user,都没有时显示 系统;同名操作者永远得到同一节点色;
  • 仅当 expandable 为真且该条 diff 非空时才显示展开按钮,按钮文案为展开变更(条数);
  • before 为 undefined 或空串时显示(空),适合新建类记录(无变更前值);
  • 展开键为 item.id(缺省用下标),因此受控/非受控都建议给每条记录配稳定 id。

基础用法 ​

  • 2026-09-05 10:00
    张三更新了订单金额
  • 2026-09-05 09:00
    李四创建了订单
    来源:后台录入
  • 受控展开 ​

    传 expanded-items(可配 v-model:expanded-items)即为受控模式,展开状态交给外部,便于默认展开某条或跨组件联动;未传时组件内部维护展开状态。本例默认展开 a1,其中备注字段的 before 为空串,渲染为(空)。

  • 2026-09-05 10:00
    张三更新了订单金额
    风控审核通过
    金额100200
    备注(空)加急处理
  • 2026-09-05 09:00
    李四创建了订单
    来源:后台录入
  • 2026-09-05 08:00
    系统自动对账
  • 当前展开 1 条变更明细

    a2 没有 diff(不显示按钮),a3 没有 operator / user(显示为系统)。无论受控与否,每次切换都会 emit expand-change,携带展开键数组。

    关闭展开 ​

    expandable: false 隐藏全部展开按钮,diff 内容不再可见,时间线退化为纯流水。

  • 2026-09-05 10:00
    张三更新了订单金额
    风控审核通过
  • 2026-09-05 09:00
    李四创建了订单
    来源:后台录入
  • 2026-09-05 08:00
    系统自动对账
  • 自定义格式化 ​

    formatTime 与 formatDiffValue 分别接管时间与 diff 值的展示,例如时间戳转本地格式、数值千分位。

  • 9/5/2025, 8:40:00 AM
    王五调整了库存
  • 常见问题 ​

    • 展开按钮不显示:确认 expandable 未被关闭,且该条 diff 是非空数组;
    • 受控模式下点击无反应:需要监听 update:expandedItems(或用 v-model:expanded-items)并回写,组件不会修改外部数组;
    • 记录很多时建议在组件外层自行分页或虚拟滚动,组件只负责渲染传入的 items;
    • 展开状态以 id 为键,列表重排或追加记录时已展开项不会错位,因此务必保证 id 稳定唯一。

    API ​

    AuditTimeline Props

    参数说明类型默认值
    items审计记录Item[][]
    expandable允许展开 diffbooleantrue
    expandedItems受控展开项(item.id,未传则内部维护)array—
    formatTime时间格式化(t) => string(t) => String(t)
    formatDiffValuediff 值格式化(v) => string(v) => String(v)

    Item

    参数说明类型默认值
    id唯一标识(展开状态键,缺省用下标)string | number—
    operator / user操作者(取色与展示,依次取 operator、user)string系统
    action操作描述string
    createdAt时间(显示在轴对侧)string | number—
    detail补充说明string—
    diff字段变更数组,项为 { field, before, after };before 为空时显示(空)array—

    Events

    参数说明类型默认值
    expand-change展开项变化(受控/非受控都触发)(keys: array) => void—
    update:expandedItems受控展开更新(keys: array) => void—

    本组件无插槽与实例方法,纯展示。