Skip to content

BizStatusTag 状态标签 ​

码值 → 标签的统一渲染组件(原 BizDictTag 字典标签已合并进本组件并删除):status 码值经数据源解析出统一文案与颜色,一处配置全局统一,替代模板里散落的 v-if / 三元判断 el-tag type。

双模式三数据源,按优先级级联解析:

优先级数据源说明
1dict 本地字典直传字典数组(静态字典 / 演示 / 字段名自定义场景),不出网
2dict-type 全局字典经 configureBizDict 注入的加载器按类型拉取,useDict 同类型共享缓存(详见指南《数据字典 useDict》)
3status-map 手传映射Record<string, { text, type?, effect?, color? }>,每处手传的业务映射表
  • 同时传 dict-type 与 status-map 时 dict-type 优先:字典命中的码值走字典渲染,字典没有的码值(含字典异步加载完成前)回落 status-map——适合「全局字典为主、私有码值补充」的页面;
  • 三数据源都未命中时兜底原样显示码值(不报错),fallback-text 可自定义兜底文案;
  • 字典项 / 映射项 color 字段(合法 css 颜色)渲染实色标签,type 字段映射 EP 色系——两通道并存;
  • dot 圆点风格(彩色圆点 + 纯文本)、field-names 字典字段名可配、click 外抛命中项、default 插槽接管内容;
  • el-tag 原生 props(round / hit...)与事件经 $attrs 全量透传,绑定在后的 attrs 可覆盖兜底样式。
  • 组模式支持直传标签对象({ text, type?, effect?, color?, closable? } 免映射直渲,可与码值混用)、closable 可关闭标签(remove 事件外抛项与下标)、+N 弹层触发 / 位置可配与空态占位——表格多标签列一套组件全覆盖。

从 BizDictTag 迁移

type → dict-type、value → status、fallback → fallback-text、fallback-type / effect / dict 原名保留;color-field / type-field 合并为 field-names: { color, type };click 事件、default 插槽({ item, value, label })、getItem / getLabel expose 全部保留。

基础用法(status-map 手传映射) ​

待支付待发货已完成已取消99(99 未命中任何数据源 → 原样显示码值)
状态映射 + status 值直接渲染;未命中任何数据源时原样显示码值。

全局字典联动(dict-type) ​

012首次渲染拉取一次,同类型多处使用共享缓存(300ms 模拟延迟)
configureBizDict 注入加载器后按 dict-type 拉取(模拟接口),同类型多处使用共享一次请求。

本地字典(dict 直传) ​

待支付已支付已发货已完成已取消
dict 直传字典数组(静态字典或演示场景),type 字段映射 EP 色系。

三数据源级联与优先级 ​

已付款(本地覆盖)20:本地 dict 命中 → 覆盖全局
已发货(映射兜底)30:本地未命中 → 全局 dict-type 优先于 status-map
已取消(映射兜底)90:本地 / 全局都未命中 → status-map 兜底
9999:三数据源都未命中 → 原样显示码值
本地 dict 覆盖全局 dict-type,status-map 兜底补充,都未命中原样显示码值。

field-names 字段名自定义 ​

运行正常轻微告警严重告警id/name/tagColor/statusType → 标准字段自动重映射
后端字典返回 id / name / tagColor / statusType 等自定义字段时,经 field-names 重映射直接渲染,无需前端转换。

color 实色标签 ​

上行下行空闲
上行下行空闲
左:实色(light)/ 右:plain 幽灵描边
字典项 color 字段(css 颜色)渲染实色 / plain 幽灵样式,与 EP 色系通道并存。

type 色系 / effect / 尺寸 / attrs 透传 ​

已通过审批中已驳回size="large" + round(attrs 透传)/ 单项 effect / 全局 effect
EP type 色系、effect 主题(单项 effect 优先于全局 effect)、size 尺寸、$attrs 透传(round),以及表格列内的典型用法。

未命中兜底 ​

正常故障99未知状态99 未命中:默认原样显示码值 / 自定义兜底文案与色系
码值未命中任何数据源时默认原样显示,fallback-text / fallback-type 自定义兜底文案与色系。

高密度监控列表(dot 圆点风格) ​

圆点风格(dot)

运行中order-centerQPS 1,284
告警pay-gatewayQPS 3,902
维护中stock-syncQPS 96
已停止report-workerQPS 0

标签风格(默认)

运行中order-centerQPS 1,284
告警pay-gatewayQPS 3,902
维护中stock-syncQPS 96
已停止report-workerQPS 0
服务监控列表场景:dot 圆点风格与默认标签风格并排对照——无边框无底色,行高更紧凑;同一份映射两种风格复用。

订单/工单表格状态列(批量使用) ​

最常见用法:订单状态列(dict 模式)与售后工单列(status-map 模式)同表并用,整列统一渲染。

事件与插槽 ​

在线离线未点击
click 外抛命中的字典项(status-map 命中时为映射项合成对象),插槽接管标签内容(附加图标等)。

订单状态流转 ​

已创建→已支付→已发货→已签收→已完成当前:已发货(第 3/5 环)
状态机场景:全流程节点并行展示——已到达 info、当前态 primary 高亮、未到达 plain 半透明降权。

服务依赖树 ​

●web-gateway运行中
└user-service运行中
└user-mysql运行中
└user-redis降级
└order-service运行中
└order-mysql停止
●report-worker降级
拓扑场景:层级缩进 + 连线符号 + dot 圆点逐行状态——网关 → 服务 → 中间件三层健康度一屏看全。

表格双状态列 ​

信贷场景:借据状态(标签)与风险等级(dot 圆点)双列并行——同一行两种状态不同密度呈现。

组模式:多标签并排 ​

status 传数组进入组模式:多码值并排渲染(逐项走三数据源级联解析),适合表格故障状态列、用户多标签。

组模式折叠(max + N) ​

max:
(缺省 max 时全部展示,不折叠)
项目能力标签
物联网边缘计算视频监控+4

超出 max 的标签收进 +N,鼠标悬浮展开剩余项(气泡内仍按字典解析着色)。

max 直接展示上限,超出收进 +N 悬浮气泡展开剩余项;缺省 max 全部展示不折叠。

组模式注意事项

组模式固定渲染标签风格(dot 圆点风格为主语言单值设计,组内不生效);$attrs 中的 el-tag 原生属性(round / hit 等)仅单值模式透传生效,组模式 class/style 仍落根元素。

组模式交互与插槽 ​

张三 · 角色标签(点击任一标签)
管理员 ★运维开发+2

组模式沿用单值契约:三数据源级联解析(此处本地 dict)、click 逐项外抛命中项、default 插槽按项接管(作用域 value / label / item)。

组模式沿用单值契约:click 逐项外抛命中项,default 插槽按项接管(作用域 value / label / item)。

组模式直传字符串数组(免映射) ​

用户兴趣标签(全量)
徒步摄影咖啡自驾滑雪垂钓桌游
折叠展示(max=3)
徒步摄影咖啡+4

数组项为纯字符串时跳过字典 / status-map 解析直接渲染(统一 info 色系);需要逐项配色时改传标签对象(见下例)。

数组项为纯字符串时跳过字典 / status-map 解析直接渲染,后端直接返回文案列表的场景零配置。

组模式直传标签对象 ​

成员技能标签(对象直传 + 实色混搭)
Vue3TypeScriptNode.jsGoK8s低代码
折叠展示(max=3)
Vue3TypeScriptNode.js+3

status 数组项直接传 { text, type?, effect?, color? } 标签对象,逐项指定 EP 色系 / 主题 / 实色,无需码值映射; round 等 el-tag 原生属性仅单值模式透传生效(组模式见下方 tip)。

数组项传 { text, type?, effect?, color? } 对象,逐项指定 EP 色系 / 主题 / 实色,无需维护映射表。

组模式码值与对象混用 ​

项目成员角色(混合数组)
管理员研发乙方实施临时访客+1

同一数组内码值(admin / dev / ops 走映射配色)与对象(乙方实施 / 临时访客直传)混用—— 映射命不中的动态标签不必再往字典里补码值。

存量码值走映射解析、动态下发标签对象直传,同一数组混用——动态标签不必再补字典码值。

组模式可关闭标签(closable + remove) ​

客户分组(点击 × 移除)
新零售华东大区重点客户Q4 冲刺复购提醒

closable 全局开启后逐项渲染关闭按钮;「新零售」单项 closable: false 豁免移除。 组件不改动数组,remove 事件回传 { item, value, index } 由父级删。

closable 开启逐项关闭按钮(单项 closable: false 豁免);组件不改数组,remove 事件回传 { item, value, index } 由父级删。

组模式弹层触发与位置 ​

触发:
位置:
已开通能力(max=3)
数据看板权限中心消息推送+5

popper-trigger 默认 hover 悬浮展开;触屏 / 平板场景改 click 点按展开, popper-placement 控制弹出方位(默认 top,贴近表格底行时改 bottom)。

popper-trigger 支持 hover / click(触屏场景),popper-placement 控制弹出方位,默认 hover + top。

组模式空态占位 ​

覆盖平台
iOSAndroid小程序

空数组缺省不渲染(表格内保持空白);传 empty-text 显示弱化占位文案。

空数组缺省不渲染(表格内保持空白);传 empty-text 显示弱化占位文案。

组模式尺寸档位 ​

small
等保三级ISO27001+2
default
等保三级ISO27001+2
large
等保三级ISO27001+2

尺寸跟随 el-tag 三档(含 +N 折叠按钮),表格标签列用 small 密度最高。

size 三档(small 表格 / default 卡片 / large 大屏),含 +N 折叠按钮同步缩放。

表格标签列集成(折叠 + 移除实战) ​

用户列表:技能列对象直传 + max 折叠 + 空态,权限列 closable 就地回收——多标签表格列的完整范式。

Props ​

属性名类型默认值说明
statusstring | number | Array<string | number | BizStatusTagRawItem>''当前码值;传数组进入组模式:项可为码值(三数据源解析)或直传标签对象 { text, type?, effect?, color?, closable? }(免映射直渲,可混用),超出 max 折叠 +N
maxnumber—组模式直接展示上限,超出收进 +N 悬浮气泡(仅 status 为数组时生效,缺省全部展示)
closablebooleanfalse组模式标签可关闭(关闭外抛 remove 事件;直传对象单项 closable 优先)
popper-trigger'hover' | 'click' | 'focus''hover'组模式 +N 折叠弹层触发方式(触屏场景用 click)
popper-placementBizStatusTagPlacement'top'组模式 +N 折叠弹层弹出位置(top / bottom 起始的六方位)
empty-textstring''组模式空数组占位文案(缺省不渲染任何内容)
status-mapRecord<string, BizStatusMapItem>{}手传状态映射(业务侧维护;与 dict-type 同传时字典优先)
dict-typestring''字典类型编码(经 configureBizDict 注入的加载器拉取,同类型共享缓存)
dictBizStatusDictItem[]—本地字典数组(优先于全局加载,用于静态字典 / 演示)
field-namesBizStatusFieldNames—字典数组字段名配置:{ label?, value?, color?, type? },缺省 label / value / color / type 同名字段
fallback-textstring—未命中任何数据源时的兜底文案(默认原样显示码值,码值为空时显示「未知」)
fallback-typeBizStatusTagType'info'未命中任何数据源时的兜底色系
effect'light' | 'dark' | 'plain''light'标签主题(status-map 单项 effect 优先于全局)
size'large' | 'default' | 'small''small'标签尺寸(表格内常用)
dotbooleanfalse圆点风格:彩色圆点 + 纯文本(无边框无底色),高密度列表更轻量

BizStatusTagRawItem: { text: string; type?; effect?; color?; closable? }——组模式直传标签对象(数组项为对象时免字典 / 映射直接渲染,closable 单项优先于组件全局开关)。

BizStatusMapItem: { text: string; type?: 'primary' \| 'success' \| 'warning' \| 'danger' \| 'info'; effect?: 'light' \| 'dark' \| 'plain'; color?: string }(text 文案、type EP 色系、effect 单项主题、color 实色;旧导出名 BizStatusTagItem 为其别名)

BizStatusFieldNames: { label?: string; value?: string; color?: string; type?: string }——字典数组字段名重映射,配合 dict 使用。

其余属性(round / hit...)经 v-bind="$attrs" 全量透传 el-tag,绑定在后的 attrs 可覆盖解析出的兜底样式。

Events ​

事件名参数说明
click(item: BizStatusDictItem | undefined)标签点击外抛命中项(字典项原样;status-map 命中时为 { value, label, ...映射项 } 合成对象;兜底为 undefined);el-tag 其余原生事件经 $attrs 透传
remove(payload: BizStatusTagRemovePayload)组模式可关闭标签点击 × 时外抛 { item, value, index }(对象直传时 item 为 { value, label, ...原对象 });组件不改动数组,由父级维护增删

Slots ​

插槽名作用域说明
default{ item, value, label }标签内容接管(item 命中项 / value 码值 / label 解析文案),dot 圆点风格同样生效

Expose ​

属性/方法类型说明
getItem() => BizStatusDictItem | undefined命中的数据项(status-map 命中时为合成对象;组模式为首项)
getLabel() => string解析出的标签文案(组模式为首项)
getResolved() => BizStatusResolved当前完整解析结果:{ text, type, effect, color?, item?, closable?, source },source 为 local / global / map / raw / fallback(组模式为首项)
getResolvedList() => Array<BizStatusResolved & { value, index }>组模式逐项解析结果(value 为对象项的 text,index 为数组下标;单值模式为空数组)

TIP

全局字典经 configureBizDict(loader) 在应用启动时注入一次;clearBizDictCache 可在字典热更新后清缓存。详见指南《数据字典 useDict》。