Initial commit

This commit is contained in:
meswork
2026-06-01 17:55:16 +08:00
commit 9cfb8d16f0
33 changed files with 27762 additions and 0 deletions

View File

@@ -0,0 +1,36 @@
# OPFS 持久化文件管理系统设计方案
## Summary
- 当前数据只存在 Vue 内存中,刷新会丢失。
- 新增浏览器端 OPFS 文件管理层,把设备数据和基本变量数据自动保存到浏览器私有文件系统中。
- 页面刷新后优先从 OPFS 读取;如果 OPFS 没有数据,再使用默认 JSON。
## Key Changes
- 新增 OPFS 存储工具:
- 提供加载、保存、重置、导出、导入方法。
- 页面加载流程调整:
- `created``mounted` 时异步读取 OPFS。
- 如果 OPFS 有有效数据则直接加载。
- 没有数据时使用默认 JSON并写入 OPFS 作为初始文件。
- 自动保存策略:
- 设备新增、编辑、删除后自动保存。
- 变量新增、编辑、复制、删除后自动保存。
- 新增状态提示:
- 顶部显示当前存储状态和最近保存时间。
- 增加文件管理按钮:
- `导出配置JSON`
- `导入配置JSON`
- `恢复默认数据`
## Test Plan
- 新增设备后刷新页面,设备仍存在。
- 编辑设备后刷新页面,修改仍存在。
- 新增变量后刷新页面,变量仍存在。
- 删除变量后刷新页面,被删除变量不会恢复。
- 点击 `导出配置JSON` 能下载当前配置。
- 导入配置 JSON 后刷新页面,导入的数据仍存在。
## Assumptions
- OPFS 保存的是浏览器本地私有文件。
- 数据只需要本机浏览器持久化,不需要后端数据库。
- OPFS 不可用时可降级到 `localStorage`

View File

@@ -0,0 +1,30 @@
# v4每个工位独立维护 MES 基本变量数据
## Summary
- 将当前“全局变量模板”改为“每个设备/工位拥有自己的 `MES_基本变量原始数据`”。
- 左侧点击不同设备时,右侧显示并编辑该设备自己的变量清单,修改后只影响当前工位。
- 导出 Excel 时仍只生成两个 Sheet。
## Key Changes
- 数据结构调整:
- `devices` 中每个设备增加独立 `variables` 数组。
- 旧的全局 `tableData.variables` 作为兼容迁移来源。
- 页面行为调整:
- 右侧变量表只显示当前选中设备的 `variables`
- 新增、编辑、复制、删除变量只操作当前选中设备。
- 未选择设备时,右侧显示空状态。
- Excel 生成规则调整:
- `设备类型对应表` 继续由 `devices` 生成。
- `MES_基本变量原始数据` 由所有设备的独立变量合并生成。
- 每行导出前强制覆盖 `工位号 / 数据来源 / IP / DbName`
## Test Plan
- 选择 ST04新增一条变量。
- 切换到 ST05确认 ST05 不出现 ST04 新增的变量。
- 修改 ST04 某条变量的 `TagName`,确认 ST05 对应变量不变化。
- 导出文件只包含两个 Sheet且每个设备的变量行都正确展开。
## Assumptions
- 右侧变量清单以后是“当前工位独立变量”。
- 旧数据迁移时,原全局变量复制到每个设备下。
- 导出时以网页设备字段为准。

View File

@@ -0,0 +1,35 @@
# v5只导出当前选中设备及其变量
## Summary
- 将“生成 Excel”从导出全部设备改为只导出左侧当前选中的设备。
- Excel 仍只包含两个 Sheet。
- `设备类型对应表` 只生成当前选中设备这一行。
- `MES_基本变量原始数据` 只生成当前选中设备对应的基本变量原始数据。
## Key Changes
- 导出数据范围:
- 新增一个“按设备构造导出数据”的工具逻辑。
- 该工具从完整 `tableData.devices` 中找到当前选中设备,只保留这一台设备及其 `variables`
- 页面导出行为:
- `handleExport()` 必须检查 `selectedDevice` 是否存在。
- 如果未选择设备,提示“请先选择要导出的设备”并阻止导出。
- 校验范围:
- 点击“生成 Excel”时只校验当前选中设备及其变量。
- Excel 内容:
- `设备类型对应表` 行数为表头 + 当前选中设备 1 行。
- `MES_基本变量原始数据` 行数为表头 + 当前设备变量行。
## Test Plan
- 选择 ST04 后点击生成 Excel
- `设备类型对应表` 只有 ST04 一条设备数据。
- `MES_基本变量原始数据` 只有 ST04 对应变量。
- 选择 ST05 后点击生成 Excel
- Excel 中不出现 ST04 数据。
- 未选择设备时点击生成 Excel
- 页面提示先选择设备。
- 不下载 Excel。
## Assumptions
- 页面仍维护所有设备和变量,只是 Excel 导出范围改成当前选中设备。
- “校验”按钮可以继续用于检查全量配置。
- 文件名仍保持 `SignalTable_CZ.xlsx`

View File

@@ -0,0 +1,29 @@
# v6 设计文档:设备模块支持多个工位
## Summary
- 将当前“一个设备 = 一个工位”的设计,调整为“一个设备模块 = 多个工位”。
- 左侧设备列表仍展示设备模块;设备编辑中新增“工位管理”能力。
- 生成 Excel 时按当前选中的设备模块导出,包含该设备下所有工位及各自对应的 `MES_基本变量原始数据`
## Key Changes
- 数据层级改为:
- `devices[]`:设备模块列表。
- `devices[].stations[]`:该设备下的多个工位。
- `devices[].stations[].variables[]`:该工位独立的变量数据。
- `设备类型对应表` 由当前设备模块下的 `stations[]` 生成多行。
- `MES_基本变量原始数据` 由当前设备模块下所有工位的变量合并生成。
- UI Design
- 左侧设备列表展示设备模块。
- 设备编辑弹窗增加“工位管理”区域。
- 点击左侧设备模块后,右侧顶部显示该设备下的工位切换列表。
## Test Plan
- 新建设备模块后,左侧出现一个设备模块。
- 在设备模块中新增 ST04、ST05 两个工位。
- 当前设备导出 Excel 后,`设备类型对应表` 有 ST04、ST05 两行。
- `MES_基本变量原始数据` 同时包含 ST04 和 ST05 的变量数据。
- 修改 ST04 的变量,不影响 ST05。
## Assumptions
- 点击“生成 Excel”导出当前选中的设备模块及其全部工位。
- 页面仍保存所有设备模块和工位数据;导出时只导出当前选中设备模块。

View File

@@ -0,0 +1,31 @@
# v7工位管理融合到设备模块新增/编辑中
## Summary
- 保留当前“设备模块 -> 多个工位 -> 共享变量”的数据模型。
- 撤回右侧工位增删改设计:右侧不再提供工位管理按钮。
- 工位维护全部放入 `新增设备模块 / 编辑设备模块` 弹窗内。
- 在设备模块弹窗上方增加一个醒目的 `+` 按钮,点击一次就自动新增一个完整工位。
## Key Changes
- 文档同步更新:
- 明确工位管理只存在于设备模块弹窗内。
- 删除右侧工位管理按钮相关描述。
- 页面交互调整:
- 移除右侧新增/编辑/复制/删除工位按钮。
- 保留右侧工位预览和切换。
- 设备模块弹窗增强:
- 弹窗中展示设备字段。
- 弹窗内增加工位列表编辑区。
- 点击 `+` 自动追加一条完整工位。
- 工位字段在设备弹窗中可直接编辑。
## Test Plan
- 打开编辑设备模块弹窗,点击 `+`
- 工位列表新增一条完整工位。
- 保存后左侧设备模块显示工位数量增加。
- 右侧不再出现工位新增/编辑/删除按钮。
## Assumptions
- 点击 `+` 是快速新增完整工位。
- 工位字段在设备模块新增/编辑弹窗内直接编辑。
- 右侧只做工位切换和共享变量维护。

View File

@@ -0,0 +1,40 @@
# v8设备模块弹窗改为整表编辑模式
## Summary
-`新增/编辑设备模块` 弹窗扩大,并改成一个完整的表格式编辑窗口。
- 删除弹窗上方独立表单,不再单独摆放 `设备名称 / 设备型号 / 设备IP / 是否启用` 输入框。
- 每点一次左上角 `+`,就新增一条完整配置行。
## Key Changes
- 弹窗 UI
- `el-dialog` 宽度扩大。
- 弹窗左上角保留醒目的红色 `+`
- 表格列改为:
- `设备名称`
- `工位名称`
- `设备型号`
- `设备IP`
- `DB`
- `是否启用`
- `操作`
- 数据结构兼容:
- 保留 `devices[].variables[]` 作为共享变量。
- `devices[].stations[]` 扩展保存每行配置。
- 导出规则:
- `设备类型对应表` 每一行来自 `stations[]` 的一条完整配置。
- `MES_基本变量原始数据` 仍用设备模块共享变量按每条 station 展开。
- 默认新增行:
- `工位名称` 自动递增。
- `DB` 自动递增。
- `是否启用` 默认 `1`
## Test Plan
- 打开新增/编辑设备模块弹窗,只看到一个大表格编辑区域。
- 点击 `+` 后新增一行,行内包含完整配置字段。
- 保存后刷新页面数据仍存在。
- 表格中有 3 行配置时,`设备类型对应表` 导出表头 + 3 行。
## Assumptions
- 弹窗中仍保留 `DB` 列。
- 设备模块左侧列表显示第一行配置的设备名称、设备型号、设备IP并显示总行数。
- 每个设备模块仍共享一套 `MES_基本变量原始数据`

View File

@@ -0,0 +1,27 @@
# 修复设备模块弹窗加号不新增配置行
## Summary
- 当前问题原因基本明确:`+` 按钮使用 `@click="addStationToDeviceForm"`Vue 会把点击事件 `MouseEvent` 作为第一个参数传入。
- 现有方法 `addStationToDeviceForm(targetForm)` 会把这个事件对象误当成表单对象,导致新增行没有正确写入 `deviceForm.stations`
- 修复目标:新增和编辑设备模块时,点击 `+` 都能立即在弹窗表格中新增一条完整配置行。
## Key Changes
- 修改弹窗 `+` 按钮点击事件:
-`@click="addStationToDeviceForm"` 改为明确调用当前表单。
- 加固 `addStationToDeviceForm` 方法:
- 默认只操作 `this.deviceForm`
- 如果传入参数不是有效表单对象,自动回退到 `this.deviceForm`
- 使用响应式方式确保 `stations` 数组存在。
- 保持现有保存逻辑:
- 保存后第一行同步为设备模块左侧列表展示信息。
- 所有配置行写入 `stations[]`,用于导出 `设备类型对应表` 多行。
## Test Plan
- 打开新增弹窗,默认已有一行。
- 点击 `+`,表格立即增加第二行。
- 连续点击 `+`,每次都增加一行。
- 打开编辑弹窗后点击 `+`,在原有配置后追加一行。
## Assumptions
- 这次只修复 `+` 不新增配置行的问题,不调整整体 UI 布局。
- 仍保持 v8 的“弹窗整表编辑模式”。

View File

@@ -0,0 +1,36 @@
# 设计文档:前端第一版修正方案 v3
## Summary
- 先更新设计文档,再进入代码修改。
- 解决 3 个问题:
- 点击“生成 Excel”没有下载。
- `基本变量清单` 也要支持新增、编辑、删除。
- 右侧要完整展示/编辑 `MES_基本变量原始数据` 的 38 个字段,左侧设备管理支持展开/收起,上方当前设备信息区域移除。
## Key Changes
- Excel 下载修正:
- 导出函数改为明确下载链路。
- 导出失败时页面必须弹出错误提示,不能静默无反应。
- 基本变量清单改为可维护表:
- 右侧增加 `新增变量``编辑变量``删除变量``复制变量`
- 新增变量时自动生成默认 `TagID`
- 38 字段完整保留:
- 右侧表格数据源就是 `MES_基本变量原始数据` 的完整 38 列。
- 表格横向滚动展示全部字段。
- 页面布局调整:
- 左侧设备管理增加 `展开/收起` 按钮。
- 收起后左侧只保留窄条按钮。
- 删除上方 `当前设备信息` 卡片。
## Test Plan
- 点击 `生成 Excel` 后浏览器必须下载文件。
- 新增变量后,右侧表格新增一行。
- 编辑变量任一字段后,表格同步更新。
- 删除变量后,表格移除该行。
- 导出的 `MES_基本变量原始数据` 第一行必须有 38 列。
- 点击左侧收起按钮后,右侧变量表宽度变大。
## Assumptions
- `基本变量清单` 的新增/编辑操作维护的是全局变量模板。
- 点击不同左侧工位时,右侧表格仍显示同一套变量模板。
- 第一版优先保证下载可用和 38 列完整。

View File

@@ -0,0 +1,53 @@
# 更新 `signal-table-excel-generator-design.md` 为 v2 两表生成器文档
## Summary
- 只更新 Markdown 设计/测试文档,不编写代码。
- 文档目标改为:前端网页用于维护设备和变量配置,点击“生成”后导出标准 Excel。
- 最终 Excel 只包含两个 Sheet
- `MES_基本变量原始数据`
- `设备类型对应表`
- 页面参考微信双栏结构:左侧是设备列表,点击某一行设备/工位,右侧显示该工位对应的基本变量详情。
## Key Changes
- 删除文档中所有“五个 Sheet”相关内容包括
- `工厂接口配置`
- `变量类型代码说明`
- `配置_信号`
- 重写 Excel 结构说明:
- `设备类型对应表` 作为左侧设备/工位配置的数据来源。
- `MES_基本变量原始数据` 作为右侧基本变量详情的数据来源。
- 左侧设备创建表字段先定义为:
- `设备名称`
- `工位名称`
- `设备型号`
- `设备IP`
- `是否启用`
- 文档中注明:为了兼容现有 SCADA导出 Excel 时 `设备类型对应表` 仍需要保留程序必读列,如 `DB``数据来源`;但第一版页面主界面先不展示,可作为默认值或后续高级字段补充。
- 页面行为写清楚:
- 左侧一行代表一个设备/工位。
- 点击左侧某一行,右侧切换显示该工位的基本变量。
- 交互方式参考微信:左侧列表选中项高亮,右侧展示详情。
- 未选择设备时,右侧显示空状态。
- 文档明确后续规则:
- 没有明确要求时,只更新 `.md` 文档。
- 不主动进行 Vue 代码实现。
## Test Plan
- 创建设备后,左侧列表出现一行新设备。
- 编辑设备后,左侧对应字段同步更新。
- 删除设备后,左侧列表移除该设备。
- 禁用设备后,导出 Excel 中 `是否启用``0`
- 点击左侧不同工位,右侧显示对应工位的基本变量。
- 未选择左侧设备时,右侧显示空状态。
- 导出的 Excel 只包含两个 Sheet。
- `MES_基本变量原始数据` Sheet 名称必须完全一致。
- `设备类型对应表` Sheet 名称必须完全一致。
- 导出前校验设备名称、工位名称、设备型号、设备IP不能为空。
- 导出的文件能被当前 SCADA 项目读取。
## Assumptions
- 当前只更新设计文档,不改 Vue 源码。
- 第一版网页主界面只展示用户指定的 5 个设备字段。
- Excel 导出只生成两个 Sheet。
- 右侧基本变量详情由左侧选中的工位触发显示。
- 页面布局参考微信双栏交互:左侧列表,右侧详情。

View File

@@ -0,0 +1,35 @@
# 更新页面成品设计草图章节
## Summary
- 只更新 `docs/signal-table-excel-generator-design.md`
- 将当前文档末尾的“最终页面草图”替换为新版“页面成品设计草图”。
- 不修改 Vue 代码。
## Key Changes
- 将原来的最终草图章节调整为:
- `## 10. 页面成品设计草图`
- `### 10.1 完整页面布局`
- `### 10.2 新增/编辑设备弹窗`
- `### 10.3 空状态页面`
- 保留三组 ASCII 草图:
- 完整页面布局
- 新增/编辑设备弹窗
- 空状态页面
- 在草图前补充一句说明:
- 页面参考微信式左右分栏,左侧为设备管理与设备列表,右侧为当前设备信息和基本变量清单。
- 在弹窗设计中明确 `DB高级` 只作为兼容 SCADA 导出字段,主列表不展示。
- 页面草图中的字段与前文保持一致:
- 左侧设备字段:`设备名称 / 工位名称 / 设备型号 / 设备IP / 是否启用`
- 高级字段:`DB`
- 右侧变量字段:`TagID / TagName / 类型 / 地址`
## Test Impact
- 测试文档不需要大改。
- 只需确认测试用例中的页面描述与新版草图一致:
- 左侧按钮包含 `新增 / 编辑 / 删除 / 查询`
- 右侧详情包含 `当前设备信息 / 基本变量清单`
- 空状态展示设备数量和启用设备数量
## Assumptions
- 这次只替换和完善文档草图章节。
- 不新增代码、不调整已有 Vue 文件。

View File

@@ -0,0 +1,45 @@
# 第一版前端网页实现与项目清理计划
## Summary
- 按当前设计文档实现第一版 Vue2 前端网页:左侧设备列表,右侧工位基本变量详情,点击生成标准 `SignalTable_CZ.xlsx`
- Excel 只导出两个 Sheet`MES_基本变量原始数据``设备类型对应表`
- 清理旧大屏项目遗留文件,只保留本工具运行、构建、文档所需内容。
## Key Changes
- 页面实现:
- 新增/重写 `src/views/SignalTableGenerator.vue`,实现微信式左右布局。
- 左侧支持设备新增、编辑、删除、查询、选中高亮、启用/禁用。
- 新增/编辑弹窗包含 `设备名称 / 工位名称 / 设备型号 / 设备IP / 是否启用 / DB高级`
- 右侧显示当前设备信息和变量清单;无选中设备时显示空状态与设备统计。
- 顶部提供 `校验``生成 Excel` 按钮。
- 数据与导出:
- 重写 `src/data/default-signal-table.json`,只保留 `devices``variables`
- 重写 `src/utils/signalTableBuilder.js`,只生成两个 Sheet。
- 重写 `src/utils/excelWriter.js`,负责 `.xlsx` 下载、基础列宽、表头样式。
- `设备类型对应表` 导出列固定为 `设备IP / 设备类型 / DB / 是否启用 / 工位号 / 数据来源`
- `MES_基本变量原始数据` 保持 38 列模板形态。
- 入口简化:
- 简化 `src/main.js``src/App.vue``src/router/index.js`
- 依赖简化:
- `package.json` 只保留本工具需要的运行依赖和 Vue CLI 构建依赖。
- 删除旧大屏相关依赖。
## Test Plan
- 运行 `npm install` 同步精简后的依赖和 `package-lock.json`
- 运行 `npm run build`,确认 Vue 项目可构建。
- 页面手测:
- 新增设备后左侧出现新行。
- 编辑设备后左侧和右侧同步变化。
- 删除选中设备后右侧进入空状态。
- 查询设备能按设备名称或工位名称过滤。
- Excel 校验:
- 点击生成后文件名为 `SignalTable_CZ.xlsx`
- 文件只包含两个 Sheet。
- `MES_基本变量原始数据` 保持 38 列。
- 禁用设备导出为 `是否启用 = 0`
## Assumptions
- 第一版不接后端,数据只在前端内存中维护。
- 第一版不做 Excel 导入,只做网页编辑和 Excel 导出。
- `DB` 虽然是高级字段,但导出时必填。
- 清理旧文件以当前 Excel 生成器为唯一目标。