AGILE TEAM
Skip to content

C_TagStatus 状态标签组件

📖 简介

C_TagStatus 是一个统一的状态标签组件,基于 Element Plus 的 el-tag 封装,用于在表格、表单等场景中展示各种状态信息。

特性

  • ✅ 开箱即用,预配置了棒线材模块所有状态
  • ✅ 视觉精致,圆角标签 + 语义化配色
  • ✅ 类型安全,完整的 TypeScript 支持
  • ✅ 易于扩展,支持自定义状态配置
  • ✅ 性能优秀,组件级复用

🎨 效果预览

[待下达]  [已下达]  [执行中]  [已完成]  [已取消]
 灰色      蓝色      橙色      绿色      红色

🚀 快速开始

1. 基础用法(在模板中使用)

vue
<template>
  <C_TagStatus :value="row.planStatus" type="plan" />
  <C_TagStatus :value="row.prodStatus" type="product" />
  <C_TagStatus :value="row.isHot" type="boolean" />
</template>

2. 在表格列中使用(推荐)

typescript
import { renderPlanStatus, renderProductStatus } from '@/util/status-render';

// 方式1:使用预定义的渲染器
{
  label: "计划状态",
  name: "planStatus",
  minWidth: 120,
  customRender: (row) => renderPlanStatus(row, 'planStatus')
}

// 方式2:使用通用渲染函数
{
  label: "产品状态",
  name: "prodStatus",
  minWidth: 120,
  customRender: (row) => renderStatusTag(row, 'prodStatus', { type: 'product' })
}

// 方式3:自定义点击事件
{
  label: "材料状态",
  name: "matStatus",
  minWidth: 120,
  customRender: (row) => renderStatusTag(row, 'matStatus', {
    type: 'material',
    onClick: (row, value, event) => {
      console.log('点击了状态', row, value);
    }
  })
}

📝 组件属性

属性说明类型可选值默认值
value状态值string | number | boolean--
type状态类型StatusType | stringplan/product/material/process/sampling/sample/slab/boolean-
size尺寸stringlarge/default/smallsmall
round是否圆角boolean-true
closable是否可关闭boolean-false
defaultEffect默认效果TagEffectlight/dark/plainlight

🎯 状态类型说明

1. 计划状态 (plan)

字典: mmwrMillPlanStatus / mmwrFinishPlanStatus

状态值显示文本颜色
0待下达灰色
1已下达蓝色
2执行中橙色
3已完成绿色
4已取消红色
A待入炉灰色
B已入炉蓝色
C待完轧橙色
D已完轧绿色

2. 产品状态 (product)

字典: mmwrProdStatus

状态值显示文本颜色
0待加工灰色
1加工中蓝色
2已完成绿色
3合格品深绿
4不合格红色
A待产出灰色
B已产出绿色
C产出完毕深绿

3. 材料状态 (material)

字典: mmwrMatStatus

状态值显示文本颜色
0在库灰色
1在线蓝色
2已使用绿色
3待检橙色
4异常红色

4. 进程状态 (process)

字典: mmwrProcessStatus

状态值显示文本颜色
0待上料灰色
1上料中蓝色
2已产出绿色
3已取消红色
A待处理灰色
B处理中橙色
C已完成绿色

5. 切取确认状态 (sampling)

字典: mmwrSampLingStus

状态值显示文本颜色
0未确认灰色
1已确认绿色
2已取消红色

6. 试样状态 (sample)

字典: mmwrSampleStatus

状态值显示文本颜色
0待检验灰色
1检验中橙色
2已完成绿色
3不合格红色

7. 出炉状态 (slab)

字典: mmwrSlabStatus

状态值显示文本颜色
0待出炉灰色
1已出炉绿色
2在线蓝色

8. 布尔状态 (boolean)

用于: 是/否 类型字段

状态值显示文本颜色
true/1/"1"/"Y"绿色
false/0/"0"/"N"灰色

🔧 高级用法

1. 扩展自定义状态

typescript
import { registerStatusConfig } from "@/components/global/C_TagStatus/config";

// 注册新的状态类型
registerStatusConfig("custom", [
  { value: "1", label: "自定义状态1", type: "success" },
  { value: "2", label: "自定义状态2", type: "warning", color: "#FF6B6B" }
]);

2. 创建自定义渲染器

typescript
import { createStatusRenderer } from '@/util/status-render';

// 创建自定义渲染器
const renderMyStatus = createStatusRenderer('custom', {
  size: 'small',
  effect: 'dark'
});

// 在表格中使用
{
  label: "自定义状态",
  name: "myStatus",
  customRender: (row) => renderMyStatus(row, 'myStatus')
}

📦 文件结构

C_TagStatus/
├── index.vue      # 组件主体
├── config.ts      # 状态配置(颜色映射表)
├── types.ts       # TypeScript 类型定义
└── README.md      # 使用文档(本文件)

💡 最佳实践

  1. 统一使用预定义渲染器:优先使用 renderPlanStatusrenderProductStatus 等预定义函数
  2. 保持配置集中:所有状态配置统一在 config.ts 中管理
  3. 类型安全:充分利用 TypeScript 类型检查,避免配置错误
  4. 性能优化:表格中大量使用时,组件会自动复用,无需担心性能问题

🐛 常见问题

Q: 状态显示为原始值,没有颜色?

A: 检查 type 属性是否正确,以及状态值是否在配置表中。

Q: 如何添加新的状态值?

A: 在 config.ts 中对应的状态类型数组中添加配置项。

Q: 可以使用自定义颜色吗?

A: 可以,在配置中添加 color 属性,优先级高于 type


📚 相关文档

You may not distribute, modify, or sell this software without permission.