16 KiB
MES 基本变量模板功能设计文档
1. 设计目标
当前网页在新增变量时,有一部分字段适合自动填写,例如 TagID、工位号、数据来源、IP、DbName 等来源字段;也有一部分字段经常重复填写,例如 TagTypeID、TagLong、变量类型、监控组、上下限、保存标记等。
为了减少重复录入,建议新增“变量模板”功能。用户可以提前维护常用变量模板,在新增变量时直接套用模板,然后只修改少量差异字段。
模板功能的目标是:
- 支持新增模板。
- 支持编辑模板。
- 支持删除模板。
- 支持在新增变量时使用模板。
- 支持从当前变量保存为模板。
- 支持模板数据持久化,刷新页面不丢失。
- 不破坏当前设备模块、配置行、工位展开预览和 Excel 导出规则。
2. 功能边界
模板只负责快速填充变量字段,不直接生成设备配置行。
设备模块和工位配置仍由设备模块弹窗维护:
设备名称工位名称设备型号设备IPDB是否启用
变量模板主要作用于 MES_基本变量原始数据 的变量字段。
模板不直接保存以下最终展开字段:
工位号数据来源IPDbName
这些字段仍以当前设备模块配置行为准,在页面预览和导出 Excel 时自动覆盖。
3. 模板类型建议
第一版建议先做一种模板:变量模板。
后续如果需要,可以扩展为三类:
| 模板类型 | 用途 | 第一版是否实现 |
|---|---|---|
| 单变量模板 | 新增一条变量时快速填充字段 | 是 |
| 变量组模板 | 一次添加多条常用变量,例如一组握手信号 | 后续 |
| 设备模块模板 | 一次创建设备配置行和变量集合 | 后续 |
第一版先实现单变量模板即可,避免功能一下子过重。
4. 数据结构设计
建议在 OPFS/localStorage 保存的数据中新增 variableTemplates 字段:
{
"version": 2,
"updatedAt": "2026-06-01T10:00:00.000Z",
"devices": [],
"variableTemplates": []
}
模板对象建议如下:
{
"id": "tpl-bool-signal",
"templateName": "Bool 信号模板",
"description": "常用 Bool 开关量信号",
"fields": {
"TagTypeID": "11",
"TagLong": "1",
"变量类型": "Bool",
"变量地址": "",
"变量其它": "",
"是否启用": "1",
"监控组": "Monitor",
"是否监控": "1",
"IsGoodBad": "1",
"IsSaveToSql": "0",
"IsWebSocket": "0"
}
}
说明:
templateName用于页面下拉选择和模板管理列表展示。description用于解释模板用途。fields只保存模板要填充的字段。- 模板不强制保存 38 个字段,未配置字段保持空白或保留当前变量已有值。
5. 字段填充规则
新增变量时分三层填充:
- 系统自动字段。
- 用户选择的模板字段。
- 用户手动编辑字段。
优先级从低到高:
空白变量 -> 系统自动字段 -> 模板字段 -> 用户手动修改
5.1 系统自动字段
新增变量时自动填入:
| 字段 | 填充规则 |
|---|---|
TagID |
自动生成下一条基础编号,例如 TAG_0000005,允许用户修改 |
工位号 |
取当前设备模块第一条配置行的 工位名称,仅用于预览 |
数据来源 |
取当前配置行的 设备名称 或 数据来源,仅用于预览 |
IP |
取当前配置行的 设备IP,仅用于预览 |
DbName |
取当前配置行的 DB,仅用于预览 |
5.2 模板字段
选择模板后,模板中的 fields 覆盖当前表单对应字段。
例如选择 Bool 信号模板 后自动填入:
TagTypeID = 11
TagLong = 1
变量类型 = Bool
是否启用 = 1
监控组 = Monitor
是否监控 = 1
5.3 用户手动字段
用户在弹窗中手动输入的内容优先级最高。
如果用户已经输入了 TagName,再切换模板时建议弹出确认:
使用模板会覆盖当前已填写的部分字段,是否继续?
第一版也可以简化为:模板只填充空字段,不覆盖已有内容。
推荐第一版采用“只填空字段”,体验更安全。
6. 页面交互设计
6.1 新增变量弹窗
在新增变量弹窗顶部增加模板选择区:
模板: [请选择模板 v] [使用模板] [保存为模板]
按钮说明:
| 按钮 | 功能 |
|---|---|
使用模板 |
将选中的模板字段填入当前变量表单 |
保存为模板 |
将当前变量表单中可复用字段保存为一个新模板 |
TagID / TagName / TagTypeID / TagLong 建议保留在基础信息中,其中 TagTypeID 和 TagLong 必填。
6.2 编辑变量弹窗
编辑变量时也显示模板区:
模板: [请选择模板 v] [使用模板] [保存为模板]
使用模板时,只影响当前编辑的共享变量模板行。保存后当前设备模块下所有工位展开行同步变化。
6.3 模板管理入口
建议在右侧变量表工具栏增加按钮:
[模板管理] [新增变量] [编辑变量] [复制变量] [删除变量]
点击 模板管理 打开模板管理弹窗。
7. 模板管理弹窗
模板管理弹窗建议采用左右结构:
┌──────────────────────────────────────────────────────────────┐
│ 变量模板管理 [新增模板] │
├───────────────────────┬──────────────────────────────────────┤
│ 模板列表 │ 模板详情编辑 │
│ ┌───────────────────┐ │ 模板名称:[Bool 信号模板 ] │
│ │ Bool 信号模板 │ │ 模板说明:[常用 Bool 开关量信号] │
│ │ Int 数值模板 │ │ │
│ │ Real 浮点模板 │ │ TagTypeID:[11] TagLong:[1] │
│ │ String 字符串模板 │ │ 变量类型:[Bool] │
│ └───────────────────┘ │ 是否启用:[1] │
│ │ 监控组:[Monitor] │
│ │ 是否监控:[1] │
├───────────────────────┴──────────────────────────────────────┤
│ [删除] [取消] [保存模板] │
└──────────────────────────────────────────────────────────────┘
模板管理支持:
- 新增模板。
- 编辑模板。
- 删除模板。
- 复制模板。
- 从当前变量生成模板。
8. 默认模板建议
系统可以内置几条基础模板,用户可编辑或删除。
8.1 Bool 模板
{
"templateName": "Bool 信号模板",
"fields": {
"TagTypeID": "11",
"TagLong": "1",
"变量类型": "Bool",
"是否启用": "1",
"是否监控": "1"
}
}
8.2 Int 模板
{
"templateName": "Int 数值模板",
"fields": {
"TagTypeID": "2",
"TagLong": "2",
"变量类型": "Int",
"是否启用": "1"
}
}
8.3 Real 模板
{
"templateName": "Real 浮点模板",
"fields": {
"TagTypeID": "4",
"TagLong": "4",
"变量类型": "Real",
"是否启用": "1"
}
}
8.4 String 模板
{
"templateName": "String 字符串模板",
"fields": {
"TagTypeID": "8",
"TagLong": "60",
"变量类型": "String",
"变量其它": ".58",
"是否启用": "1"
}
}
9. 保存和持久化规则
模板数据和设备模块数据一起保存到 OPFS/localStorage。
每次发生以下操作后自动保存:
- 新增模板。
- 编辑模板。
- 删除模板。
- 从变量保存为模板。
- 导入配置 JSON。
导出配置 JSON 时也应包含 variableTemplates,方便用户迁移模板。
导入旧 JSON 时如果没有 variableTemplates,系统自动补充默认模板。
10. Excel 导出影响
模板不直接影响 Excel 结构。
Excel 仍只导出两个 Sheet:
MES_基本变量原始数据设备类型对应表
模板只影响变量创建和编辑后的字段值。最终 Excel 导出仍以当前设备模块中的变量数据为准。
如果变量字段为空,导出 Excel 时继续按当前规则处理:空字段不强制填默认值。
11. 校验建议
新增或编辑变量时建议校验:
TagID不能为空。TagName不能为空。TagTypeID不能为空。TagLong不能为空。- 同一设备模块内基础
TagID不建议重复。
模板保存时建议校验:
- 模板名称不能为空。
- 模板名称不能重复。
- 模板至少包含一个可填充字段。
使用模板时建议提示:
- 模板会填充哪些字段。
- 是否覆盖已有字段。
12. 第一版实施建议
建议新增或修改:
src/data/default-variable-templates.json
src/utils/templateBuilder.js
src/views/SignalTableGenerator.vue
src/utils/opfsStore.js
docs/variable-template-feature-design.md
职责划分:
| 文件 | 职责 |
|---|---|
default-variable-templates.json |
保存系统默认模板 |
templateBuilder.js |
模板规范化、应用模板、从变量生成模板 |
SignalTableGenerator.vue |
模板管理 UI、变量弹窗模板选择 |
opfsStore.js |
保存和读取 variableTemplates |
13. 测试方案
13.1 新增模板
- 打开模板管理。
- 点击
新增模板。 - 填写模板名称和字段。
- 保存模板。
- 刷新页面后模板仍存在。
13.2 使用模板新增变量
- 选择一个设备模块。
- 点击
新增变量。 - 选择
Bool 信号模板。 - 点击
使用模板。 - 确认
TagTypeID / TagLong / 变量类型自动填入。 - 保存变量。
- 右侧展开表格出现新变量。
13.3 编辑变量时使用模板
- 选中一条变量。
- 点击
编辑变量。 - 选择另一个模板。
- 保存变量。
- 当前设备模块下所有工位对应展开行同步变化。
13.4 从变量保存为模板
- 编辑一条变量。
- 点击
保存为模板。 - 输入模板名称。
- 保存后在模板管理中可以看到新模板。
13.5 导入导出配置
- 新增一个模板。
- 导出配置 JSON。
- 清空或更换浏览器数据。
- 导入配置 JSON。
- 确认模板随配置恢复。
13.6 Excel 导出
- 使用模板新增变量。
- 导出
SignalTable_CZ.xlsx。 - 确认 Excel 中变量字段来自用户保存后的变量数据。
- 确认 Excel 仍只有两个 Sheet。
14. 页面草图
14.1 变量表工具栏
┌──────────────────────────────────────────────────────────────────────────────┐
│ MES_基本变量原始数据展开预览 │
│ 当前设备模块:共 3 个配置行,右侧显示所有工位展开后的 MES 原始数据 │
│ [模板管理] [新增变量] │
├──────────────────────────────────────────────────────────────────────────────┤
│ TagID TagName 工位号 数据来源 TagTypeID TagLong │
│ ST04_TAG_0000001 PLC_PC_工件到位 ST04 放油前 11 1 │
│ ST05_TAG_0000001 PLC_PC_工件到位 ST05 放油后 11 1 │
└──────────────────────────────────────────────────────────────────────────────┘
14.2 新增变量弹窗
┌──────────────────────────────────────────────────────────────┐
│ 新增变量 │
├──────────────────────────────────────────────────────────────┤
│ 模板: [Bool 信号模板 v] [使用模板] [保存为模板] │
├──────────────────────────────────────────────────────────────┤
│ 基础信息 │
│ TagID: [TAG_0000001] TagName: [ ] │
│ TagTypeID: [11 ] TagLong: [1 ] │
│ 工位号: [ST04 ] 数据来源: [放油前 ] │
│ IP: [192.168.1.60] DbName: [DB10000 ] │
├──────────────────────────────────────────────────────────────┤
│ 变量定义 │
│ 变量类型: [Bool ] 变量地址:[ ] │
│ 变量其它: [ ] 变量类型代码:[ ] │
├──────────────────────────────────────────────────────────────┤
│ [取消] [保存变量] │
└──────────────────────────────────────────────────────────────┘
14.3 模板管理弹窗
┌──────────────────────────────────────────────────────────────┐
│ 变量模板管理 [新增模板] │
├───────────────────────┬──────────────────────────────────────┤
│ Bool 信号模板 │ 模板名称:[Bool 信号模板 ] │
│ Int 数值模板 │ 模板说明:[常用 Bool 开关量信号] │
│ Real 浮点模板 │ TagTypeID:[11] TagLong:[1] │
│ String 字符串模板 │ 变量类型:[Bool] │
│ │ 是否启用:[1] │
├───────────────────────┴──────────────────────────────────────┤
│ [删除] [取消] [保存模板] │
└──────────────────────────────────────────────────────────────┘
15. 后续扩展方向
后续可以继续增强:
- 支持变量组模板,一次新增多条变量。
- 支持模板分类,例如 Bool、Int、Real、String、MES 通讯、PLC 握手。
- 支持模板导入导出为单独 JSON 文件。
- 支持从现有 Excel 扫描变量并生成模板。
- 支持设置默认模板,新建变量时自动应用。
- 支持模板字段锁定,例如某些模板强制固定
TagTypeID和TagLong。