Skip to content

n-steps 步骤条 ​

任务流程 / 进度回显组件:一组有序步骤展示当前进行到哪一步、哪些已完成、哪一步出错。适用下单流程、开通引导、审批进度等场景。数据驱动(list),当前步 model-value 是纯显示值——点击某步只上报 click,是否推进由业务决定。

  1. 节点三档:默认内部 n-icon 渲染(已完成/当前步 active-icon、等待步 inactive-icon、错误步 error-icon);dot 开圆点极简形态;#icon 作用域插槽全定制(参数 item / index / status,数字盘、图片、自绘视图在此实现)。item.icon / item.activeIcon 逐项覆盖等待态与到达态图标名。标题与描述同构:#title / #desc 作用域插槽(参数同上,富内容如「标题 + 状态小标签」)优先于 item.title / item.desc 字符串字段
  2. 状态判定:步序 < model-value 为已完成、等于为当前步(标题加粗)、大于为等待;item.error 显式标记错误步(优先于位置判断,任意步可标)。model-value 越界按比较语义自然处理(-1 = 全部等待,≥ 步数 = 全部到达)
  3. 连接线按段上色:终点步已到达的段渲到达色(active-color),其中终点步带 error 的段渲错误色(error-color),其余段渲中性线色;行向首步左侧 / 末步右侧为透明占位段,保持节点在各项内居中
  4. 竖向步距 gap 挂在文字区底部(末步不占),节点列随项高拉伸,连线从节点下方连续延伸到下一步节点

平台兼容性 ​

App H5 微信小程序 支付宝小程序 百度小程序 头条小程序 QQ小程序
√ √ √ × × × ×

API ​

属性 ​

参数 说明 类型 默认值 可选值
list 步骤数据源(title / desc / error / icon / activeIcon 字段说明见 NStepsItem) Array [] -
model-value 当前步下标(0 起):步序 < 它为已完成、等于它为当前步;纯显示值,点击不改写(click 交业务推进) Number 0 -
direction 排列方向:row 横向(步骤平分整行、标题居中)/ column 竖向(节点列 + 右侧标题描述) String row row / column
dot 圆点模式:全部节点渲小圆点(#icon 插槽优先级更高,提供插槽时本项不生效) Boolean false -
icon-size 图标节点边长 px(也是列向标题行高与节点列宽的对齐基准,小于 8 按 8 处理) Number 20 -
gap 竖向步距 px:相邻两步的间距(仅 column 生效,末步不带;挂文字区底部,节点列随项高拉伸使连线连续到下一步节点) Number 32 -
active-color 到达色:已完成/当前步图标、标题与已到达连线段的颜色;空串取品牌色主题令牌 String "" 与 css 相同
inactive-color 等待色:等待步图标、圆点与未到达连线段的颜色;空串取主题次级文字/线色令牌 String "" 与 css 相同
error-color 错误色:错误步图标、标题与到达该步连线段的颜色;空串取错误色主题令牌 String "" 与 css 相同
active-icon 到达态图标名:已完成步与当前步的节点图标(内部 n-icon 渲染;item.activeIcon 逐项覆盖) String check-circle-fill n-icon 名称
inactive-icon 等待态图标名:等待步的节点图标(内部 n-icon 渲染;item.icon 逐项覆盖) String check-circle n-icon 名称
error-icon 错误态图标名:错误步(item.error)的节点图标 String close-circle-fill n-icon 名称
custom-class 挂到根节点的额外 class(类需定义在组件样式表内) String "" -
custom-style 根节点行内样式,如 "margin-top:8px" String "" 与 css 相同

NStepsItem 字段 ​

字段 说明 类型 默认值
title 步骤标题;空串时不渲染标题行(节点与连线照常) String ""
desc 步骤描述:标题下方次级说明文字,空串不渲染 String ""
error 错误步:节点改渲 error-icon、标题转 error-color、到达该步的连线段转错误色(不限当前步,任意步可标记) Boolean false
icon 等待态图标名(n-icon 名称):覆盖组件级 inactive-icon,仅该步生效 String -
activeIcon 到达态图标名(n-icon 名称):覆盖组件级 active-icon,仅该步的已完成/当前态生效;缺省回落 icon 再回落组件级 String -

事件 ​

事件名 说明 回调参数
click 点击步骤项时触发,参数为 { item, index };是否推进当前步由业务决定(组件不改写 model-value)

插槽 ​

插槽名 说明
icon 节点内容(每步一个实例,作用域参数 item / index / status):提供后覆盖 dot 圆点与内部 n-icon;status 为该步状态(finish / process / wait / error),数字盘、图片、自绘视图按它分支渲染
title 标题内容(每步一个实例,作用域参数 item / index / status):提供后本步不再渲染 item.title 文字行(文字色 / 行高等样式由插槽内容自理);「标题 + 状态小标签」等富内容在此实现
desc 描述内容(每步一个实例,作用域参数 item / index / status):提供后本步不再渲染 item.desc 文字行

实现说明 ​

  • 机制对照(参考实现 vs 本组件):数据驱动单组件 + #icon / #title / #desc 作用域插槽,替代「容器 + 步骤子组件」的父子注册模型(子组件经 provide/inject 取当前步,弱类型且列表项无类型提示)与「键名映射」(titleKey / textKey 等全动态字段,拼错不报错)两种参考形态;NStepsItem 固定字段全类型化。参考实现步骤子组件的三个插槽(自定义标题 / 图标 / 描述)以同构的三个作用域插槽收编(参数 item / index / status 一致,且比原「整步单实例插槽」粒度更细——原实现插槽挂在子组件标签上只能定制该步,本库每步渲染插槽内容并回传该步状态)
  • 逐项图标尺寸不设 item 级字段:节点盒、竖向节点列宽与标题行高都以组件级 icon-size 为对齐基准,逐项尺寸会破坏三者的统一节奏;需要逐项尺寸的节点走 #icon 插槽自定内容(插槽态不设几何)即是逐项尺寸
  • 节点默认形态取图标(到达 check-circle-fill / 等待 check-circle / 错误 close-circle-fill,到达色随主题品牌令牌);参考实现的数字盘节点不设独立开关——#icon 插槽按 status 分支即是数字盘(readme 有完整写法),图片节点同理(插槽内放 n-icon 的 image 模式或 image 组件)
  • 参考实现「当前步状态机 + 状态色」(wait / fail / success + 专用色)收拢为逐项 error 布尔 + error-color:错误是业务显式标记、任意步可标,语义比「仅当前步可标状态」更通用;「进行中」等自绘当前步图形同样走 #icon 插槽的 status 分支
  • 参考实现的「行向进行中半程上色」(当前步右侧连线也上色)不收:连线只表达「已到达」,进行中由节点态与标题加粗表达,避免连线颜色与到达语义混杂;「圆点模式连线贯穿」变体不收(默认连线断在节点两侧,贯穿属低频形态,#icon 插槽可自绘)
  • 连线粗细不设开关:全线 1px(微信 / H5 半高渲染减重,App 端实心 view 缩放不可靠保持 1px),与 n-divider 同策略;需要更粗的线用 custom-style 覆盖根节点背景再自行叠线属过度定制,不在组件面内
  • 步骤项内容 + 状态 + 形态签名进 :key:状态翻转 / 圆点切换 / 图标名变化整项销毁重建,绕开 App 端已挂载节点插拔不即时重绘的已知问题(库内既有模式);标题行高显式 = icon-size(等高行盒,竖向标题与节点垂直居中对齐)
  • model-value 是纯显示值:步骤进度是业务过程状态,点击步骤只上报 click(两参考实现同构,组件不回写);需要点击推进的用法见示例代码最后一则

记录 · 思考 · 创作