Appearance
BizStatusTag 状态标签
码值 → 标签的统一渲染组件(原 BizDictTag 字典标签已合并进本组件并删除):status 码值经数据源解析出统一文案与颜色,一处配置全局统一,替代模板里散落的 v-if / 三元判断 el-tag type。
双模式三数据源,按优先级级联解析:
| 优先级 | 数据源 | 说明 |
|---|---|---|
| 1 | dict 本地字典 | 直传字典数组(静态字典 / 演示 / 字段名自定义场景),不出网 |
| 2 | dict-type 全局字典 | 经 configureBizDict 注入的加载器按类型拉取,useDict 同类型共享缓存(详见指南《数据字典 useDict》) |
| 3 | status-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 未命中任何数据源 → 原样显示码值)
全局字典联动(dict-type)
012首次渲染拉取一次,同类型多处使用共享缓存(300ms 模拟延迟)
本地字典(dict 直传)
待支付已支付已发货已完成已取消
三数据源级联与优先级
已付款(本地覆盖)20:本地 dict 命中 → 覆盖全局
已发货(映射兜底)30:本地未命中 → 全局 dict-type 优先于 status-map
已取消(映射兜底)90:本地 / 全局都未命中 → status-map 兜底
9999:三数据源都未命中 → 原样显示码值
field-names 字段名自定义
运行正常轻微告警严重告警id/name/tagColor/statusType → 标准字段自动重映射
color 实色标签
上行下行空闲
上行下行空闲
左:实色(light)/ 右:plain 幽灵描边type 色系 / effect / 尺寸 / attrs 透传
已通过审批中已驳回size="large" + round(attrs 透传)/ 单项 effect / 全局 effect
未命中兜底
正常故障99未知状态99 未命中:默认原样显示码值 / 自定义兜底文案与色系
高密度监控列表(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
订单/工单表格状态列(批量使用)
事件与插槽
在线离线未点击
订单状态流转
已创建→已支付→已发货→已签收→已完成当前:已发货(第 3/5 环)
服务依赖树
●web-gateway运行中
└user-service运行中
└user-mysql运行中
└user-redis降级
└order-service运行中
└order-mysql停止
●report-worker降级
表格双状态列
组模式:多标签并排
组模式折叠(max + N)
max:
(缺省 max 时全部展示,不折叠)
项目能力标签
物联网边缘计算视频监控+4
超出 max 的标签收进 +N,鼠标悬浮展开剩余项(气泡内仍按字典解析着色)。
组模式注意事项
组模式固定渲染标签风格(dot 圆点风格为主语言单值设计,组内不生效);$attrs 中的 el-tag 原生属性(round / hit 等)仅单值模式透传生效,组模式 class/style 仍落根元素。
组模式交互与插槽
张三 · 角色标签(点击任一标签)
管理员 ★运维开发+2
组模式沿用单值契约:三数据源级联解析(此处本地 dict)、click 逐项外抛命中项、default 插槽按项接管(作用域 value / label / item)。
组模式直传字符串数组(免映射)
用户兴趣标签(全量)
徒步摄影咖啡自驾滑雪垂钓桌游
折叠展示(max=3)
徒步摄影咖啡+4
数组项为纯字符串时跳过字典 / status-map 解析直接渲染(统一 info 色系);需要逐项配色时改传标签对象(见下例)。
组模式直传标签对象
成员技能标签(对象直传 + 实色混搭)
Vue3TypeScriptNode.jsGoK8s低代码
折叠展示(max=3)
Vue3TypeScriptNode.js+3
status 数组项直接传 { text, type?, effect?, color? } 标签对象,逐项指定 EP 色系 / 主题 / 实色,无需码值映射; round 等 el-tag 原生属性仅单值模式透传生效(组模式见下方 tip)。
组模式码值与对象混用
项目成员角色(混合数组)
管理员研发乙方实施临时访客+1
同一数组内码值(admin / dev / ops 走映射配色)与对象(乙方实施 / 临时访客直传)混用—— 映射命不中的动态标签不必再往字典里补码值。
组模式可关闭标签(closable + remove)
客户分组(点击 × 移除)
新零售华东大区重点客户Q4 冲刺复购提醒
closable 全局开启后逐项渲染关闭按钮;「新零售」单项 closable: false 豁免移除。 组件不改动数组,remove 事件回传 { item, value, index } 由父级删。
组模式弹层触发与位置
触发:
位置:
已开通能力(max=3)
数据看板权限中心消息推送+5
popper-trigger 默认 hover 悬浮展开;触屏 / 平板场景改 click 点按展开, popper-placement 控制弹出方位(默认 top,贴近表格底行时改 bottom)。
组模式空态占位
覆盖平台
iOSAndroid小程序
空数组缺省不渲染(表格内保持空白);传 empty-text 显示弱化占位文案。
组模式尺寸档位
small
等保三级ISO27001+2
default
等保三级ISO27001+2
large
等保三级ISO27001+2
尺寸跟随 el-tag 三档(含 +N 折叠按钮),表格标签列用 small 密度最高。
表格标签列集成(折叠 + 移除实战)
Props
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| status | string | number | Array<string | number | BizStatusTagRawItem> | '' | 当前码值;传数组进入组模式:项可为码值(三数据源解析)或直传标签对象 { text, type?, effect?, color?, closable? }(免映射直渲,可混用),超出 max 折叠 +N |
| max | number | — | 组模式直接展示上限,超出收进 +N 悬浮气泡(仅 status 为数组时生效,缺省全部展示) |
| closable | boolean | false | 组模式标签可关闭(关闭外抛 remove 事件;直传对象单项 closable 优先) |
| popper-trigger | 'hover' | 'click' | 'focus' | 'hover' | 组模式 +N 折叠弹层触发方式(触屏场景用 click) |
| popper-placement | BizStatusTagPlacement | 'top' | 组模式 +N 折叠弹层弹出位置(top / bottom 起始的六方位) |
| empty-text | string | '' | 组模式空数组占位文案(缺省不渲染任何内容) |
| status-map | Record<string, BizStatusMapItem> | {} | 手传状态映射(业务侧维护;与 dict-type 同传时字典优先) |
| dict-type | string | '' | 字典类型编码(经 configureBizDict 注入的加载器拉取,同类型共享缓存) |
| dict | BizStatusDictItem[] | — | 本地字典数组(优先于全局加载,用于静态字典 / 演示) |
| field-names | BizStatusFieldNames | — | 字典数组字段名配置:{ label?, value?, color?, type? },缺省 label / value / color / type 同名字段 |
| fallback-text | string | — | 未命中任何数据源时的兜底文案(默认原样显示码值,码值为空时显示「未知」) |
| fallback-type | BizStatusTagType | 'info' | 未命中任何数据源时的兜底色系 |
| effect | 'light' | 'dark' | 'plain' | 'light' | 标签主题(status-map 单项 effect 优先于全局) |
| size | 'large' | 'default' | 'small' | 'small' | 标签尺寸(表格内常用) |
| dot | boolean | false | 圆点风格:彩色圆点 + 纯文本(无边框无底色),高密度列表更轻量 |
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》。