chore: 上传当前工作区修改

This commit is contained in:
2026-07-10 15:19:26 +08:00
parent bd9ca09983
commit a6a92ffeb2
35 changed files with 3031 additions and 778 deletions

View File

@@ -1,61 +0,0 @@
# 01-项目功能内容
## 页面
- 页面路径:`src/views/DeviceManagement/DeviceInformation/index.vue`
- 菜单/模块:设备管理 / 设备信息维护
- 原始文档:`doc/修改设备信息维护.docx`
## 本轮功能范围
1. 设备信息维护列表新增字段展示:
- 设备名称:来自 Excel `名称`,数据库字段 `名称`
- 公司编码(财务)
- 生产用名:复用原 `设备名称`
- 规格/型号:复用原 `设备型号`
- 设备信息
- 使用部门
- 入账日期
- 单位
- 数量
- 状态
- 维修记录
- 维保记录
- 工位绑定
- 主要设备
- 设备标准开机工时(小时)
- 特种设备
- 证书有效期至
2. 设备新增/编辑弹窗新增对应维护字段。
3. 公司编码(财务):
- 新增时必填。
- 编辑时前端置灰不可修改。
- 后端编辑过程不更新公司编码,避免绕过前端改动。
4. 工位绑定:
- 使用多选下拉。
- 选项来源:`MES_登录_工位与名称_查询`,即工位管理数据。
- 数据库存储为逗号分隔的工位号。
5. 主要设备、特种设备:
- 下拉选项为“是/否”。
6. 证书有效期至:
- 日期选择。
- 已过期:表格行红色背景并置顶。
- 30 天内到期:表格行黄色背景并靠前。
- 其他数据正常排序在后。
## 数据库对象
- 表:`dbo.基础数据_设备工位点检表`
- 查询过程:`dbo.设备管理_设备信息_查询`
- 新增过程:`dbo.设备管理_设备信息_增加`
- 编辑过程:`dbo.设备管理_设备信息_编辑`
- 删除过程:`dbo.设备管理_设备信息_删除`,本轮未改。
- 增量脚本:`db_backups/update_device_information_maintenance_20260629.sql`
- 设备名称字段与 Excel 导入脚本:`db_backups/add_device_name_and_import_excel_20260629.sql`
- Excel 日期修正脚本:`db_backups/fix_device_excel_import_dates_20260629.sql`
- 新增过程提示文本修正脚本:`db_backups/fix_device_add_company_code_message_20260629.sql`

View File

@@ -1,58 +0,0 @@
# 02-项目程序开发详细步骤
## 1. 需求解析
1.`doc/修改设备信息维护.docx` 提取文字需求。
2. 确认目标页面为 `src/views/DeviceManagement/DeviceInformation/index.vue`
3. 确认工位数据来源为 `MES_登录_工位与名称_查询`,与系统工位管理保持一致。
## 2. 数据库开发
1. 连接目标库 `192.168.2.92 / YL_MESDB`
2. 查询 `dbo.基础数据_设备工位点检表`,确认原表仅有旧字段。
3. 新增增量脚本 `db_backups/update_device_information_maintenance_20260629.sql`
4. 脚本内容:
- 使用 `COL_LENGTH` 判断字段是否存在,保证可重复执行。
- 新增设备档案字段:公司编码、设备信息、使用部门、入账日期、单位、数量、状态、维修记录、维保记录、工位绑定、主要设备、设备标准开机工时、特种设备、证书有效期至。
- 更新 `设备管理_设备信息_查询`,返回新字段并按证书有效期预警排序。
- 更新 `设备管理_设备信息_增加`,写入新增字段,并校验公司编码不能为空。
- 更新 `设备管理_设备信息_编辑`,更新新增字段,但不更新公司编码。
5. 使用 `sqlcmd -f 65001` 执行脚本,避免中文脚本编码问题。
## 3. 前端开发
1. 重写设备信息维护页面表格列,字段名与数据库返回保持一致。
2. 扩展新增/编辑表单字段。
3. 新增 `stationOptions`,通过 `MES_登录_工位与名称_查询` 加载工位管理数据。
4. 工位绑定使用 `el-select multiple collapse-tags`
5. 新增 `emptyForm`,统一新增和重置表单默认值。
6. 新增 `buildSubmitParams`,统一组装新增/编辑参数。
7. 新增 `getCertificateLevel``tableRowClassName``sortedTableData`
- 过期为 0置顶并红色。
- 30 天内为 1靠前并黄色。
- 其他为 2。
8. 表格使用横向宽度自动撑开,并固定操作列,适配新增多列。
## 4. 验证
1. 数据库字段验证:查询 `sys.columns`
2. 存储过程参数验证:查询 `sys.parameters`
3. 查询过程验证:执行 `EXEC dbo.[设备管理_设备信息_查询]`
4. 前端构建验证:执行 `npm run build`
5. 工作文档归档:复制原始 docx 到 `work/DeviceManagement/DeviceInformation` 并补齐 README 与 01-06 文档。
## 5. 设备信息 Excel 导入
1. 读取 `doc/设备信息.xlsx`,确认 Sheet1 共 89 行数据。
2. 新增数据库字段 `名称`,用于保存 Excel `名称` 列;原字段 `设备名称` 继续保存 Excel `生产用名`
3. 更新设备信息维护页面:
- 列表新增“设备名称”列,对应数据库字段 `名称`
- 新增/编辑弹窗新增“设备名称”输入框。
- 提交参数增加 `名称`
4. 新增脚本 `db_backups/add_device_name_and_import_excel_20260629.sql`
- `COL_LENGTH` 判断并新增 `名称` 字段。
- 更新新增/编辑存储过程参数和写入逻辑。
- 使用 `MERGE``公司编码` 导入或更新 89 行 Excel 数据,避免重复导入。
5. 首次导入后发现 Excel 日期对象受时区影响,部分入账日期早一天;新增 `db_backups/fix_device_excel_import_dates_20260629.sql`,按 Excel 单元格显示值修正入账日期。
6. 新增 `db_backups/fix_device_add_company_code_message_20260629.sql`,只重新发布新增过程,修正“公司编码不能为空”提示文本,避免重新执行整份导入脚本覆盖已修正日期。
7. 使用 `sqlcmd -f 65001` 执行数据库脚本,验证总数、样例数据和存储过程文本。

View File

@@ -1,185 +0,0 @@
# 03-推进台账
## 2026-06-29 第 1 轮:设备信息维护页面和数据库扩展
### 做了什么
- 解析 `doc/修改设备信息维护.docx`
- 确认目标页面 `src/views/DeviceManagement/DeviceInformation/index.vue`
- 确认工位绑定选项来源为 `MES_登录_工位与名称_查询`
- 连接目标数据库并确认旧表结构缺少需求字段。
- 新增数据库增量脚本并同步到 `YL_MESDB`
- 修改设备信息维护前端页面。
- 创建 `work/DeviceManagement/DeviceInformation` 工作目录并复制需求文档。
- 新增 README、功能内容、开发步骤、推进台账、任务矩阵、验收证据、决策记录。
### 改了哪些文件
- `src/views/DeviceManagement/DeviceInformation/index.vue`
- `db_backups/update_device_information_maintenance_20260629.sql`
- `work/DeviceManagement/DeviceInformation/修改设备信息维护.docx`
- `work/DeviceManagement/DeviceInformation/README.md`
- `work/DeviceManagement/DeviceInformation/01-项目功能内容.md`
- `work/DeviceManagement/DeviceInformation/02-项目程序开发详细步骤.md`
- `work/DeviceManagement/DeviceInformation/03-推进台账.md`
- `work/DeviceManagement/DeviceInformation/04-任务矩阵.md`
- `work/DeviceManagement/DeviceInformation/05-验收证据.md`
- `work/DeviceManagement/DeviceInformation/06-决策记录.md`
- `gptlog-process/gpdlog.md`
### 验证了什么
- `sqlcmd` 连接目标库成功。
- 新增字段已存在于 `dbo.基础数据_设备工位点检表`
- `设备管理_设备信息_查询/增加/编辑` 参数已更新。
- 查询过程可执行。
- `npm run build` 通过,仅有既有体积和 Browserslist 过期警告。
### 下一步
- 进入真实系统页面做新增、编辑、证书有效期颜色排序的人工验收。
- 如果现场要求“公司编码”历史数据也必填,需要补历史数据清洗或唯一性规则。
## 2026-06-29 第 2 轮:取消设备类型必填
### 做了什么
- 根据用户反馈,去掉设备信息维护新增/编辑表单中“设备类型”的必填校验。
### 改了哪些文件
- `src/views/DeviceManagement/DeviceInformation/index.vue`
- `work/DeviceManagement/DeviceInformation/03-推进台账.md`
- `work/DeviceManagement/DeviceInformation/04-任务矩阵.md`
- `gptlog-process/gpdlog.md`
### 验证了什么
- 代码层确认 `rules` 中已移除 `设备类型` 必填规则。
### 下一步
- 如需严格验证,可再次执行 `npm run build` 或进入页面直接新增无设备类型的设备记录。
## 2026-06-29 第 3 轮:修复入账日期和证书有效期编辑报错
### 做了什么
- 修复设备编辑时 `入账日期``证书有效期至` 无法修改的问题。
- 前端提交日期时改为传 `yyyy-MM-dd` 字符串或空字符串。
- 数据库新增修复脚本,将新增/编辑过程的两个日期入参改为 `nvarchar(50)`,在过程内使用 `TRY_CONVERT(date, NULLIF(..., ''))` 转换。
### 改了哪些文件
- `src/views/DeviceManagement/DeviceInformation/index.vue`
- `db_backups/fix_device_information_date_edit_20260629.sql`
- `work/DeviceManagement/DeviceInformation/03-推进台账.md`
- `work/DeviceManagement/DeviceInformation/04-任务矩阵.md`
- `work/DeviceManagement/DeviceInformation/05-验收证据.md`
- `gptlog-process/gpdlog.md`
### 验证了什么
- 执行修复 SQL 到 `192.168.2.92 / YL_MESDB` 成功。
- 验证 `设备管理_设备信息_增加/编辑``@入账日期``@证书有效期至` 参数已变更为 `nvarchar`
- 直接执行 `设备管理_设备信息_编辑`,传入正常日期 `2026-07-01``2026-07-31`,返回 `result=1` 且数据库日期更新成功。
- 直接执行 `设备管理_设备信息_编辑`,传入空字符串日期,返回 `result=1` 且数据库日期保存为 `NULL`
### 下一步
- 到真实页面再执行一次编辑日期和清空日期的人工验收。
## 2026-06-29 第 4 轮:修复日期控件点击报错
### 做了什么
- 针对页面点击日期时报 `date.getHours is not a function` 的问题,修正前端日期控件绑定方式。
- 去掉 `el-date-picker``value-format="yyyy-MM-dd"`,让 Element UI 日期控件内部绑定 `Date` 对象。
- 编辑回填时使用 `parseDateValue` 将数据库日期转换为本地 `Date` 对象。
- 提交时继续通过 `dateParam` 格式化为 `yyyy-MM-dd` 字符串,兼容已修复的数据库过程。
### 改了哪些文件
- `src/views/DeviceManagement/DeviceInformation/index.vue`
- `work/DeviceManagement/DeviceInformation/03-推进台账.md`
- `work/DeviceManagement/DeviceInformation/04-任务矩阵.md`
- `work/DeviceManagement/DeviceInformation/05-验收证据.md`
- `gptlog-process/gpdlog.md`
### 验证了什么
- 代码层确认两个 `el-date-picker` 已移除 `value-format`
- 代码层确认编辑回填日期使用 `parseDateValue` 返回 `Date` 对象。
- 执行 `npm run build` 通过,仅有既有资源体积和 Browserslist 过期警告。
### 下一步
- 在真实页面点击日期面板并选择新日期,确认不再出现 `date.getHours is not a function`
## 2026-06-29 第 5 轮:修复编辑弹窗日期不回填
### 做了什么
- 确认数据库和列表数据有值;同时恢复测试记录 `设备流水号=1` 的日期为 `2026-07-01``2026-07-31`
- 增强 `formatDate``parseDateValue`,兼容 `yyyy-MM-dd``yyyy-MM-dd HH:mm:ss``yyyy/MM/dd``/Date(...)``Date` 对象等返回格式。
- 将新增表单日期默认值从空字符串改为 `null`,符合 Element UI 日期控件空值约定。
- 编辑回填时不再整体替换 `form` 对象,改为逐字段 `$set`,并在 `$nextTick` 后再次设置两个日期字段,避免被 `resetFields` 或弹窗初始化覆盖。
### 改了哪些文件
- `src/views/DeviceManagement/DeviceInformation/index.vue`
- `work/DeviceManagement/DeviceInformation/03-推进台账.md`
- `work/DeviceManagement/DeviceInformation/04-任务矩阵.md`
- `work/DeviceManagement/DeviceInformation/05-验收证据.md`
- `gptlog-process/gpdlog.md`
### 验证了什么
- 数据库记录 `设备流水号=1``入账日期=2026-07-01``证书有效期至=2026-07-31`
- 本地 Node 脚本验证多种日期格式可解析为有效 `Date`
- 执行 `npm run build` 通过,仅有既有资源体积和 Browserslist 过期警告。
- 本地 dev server 监听 `https://127.0.0.1:1997/`,命令行访问因自签名证书被拦截,需浏览器允许证书后测试页面。
### 下一步
- 在浏览器打开 `https://127.0.0.1:1997/`,登录后进入设备信息维护页面,点击编辑验证两个日期是否回填。
## 2026-06-29 第 6 轮:新增设备名称字段并导入设备信息 Excel
### 做了什么
- 根据用户要求新增“设备名称”字段,页面列表和新增/编辑弹窗均增加该字段。
- 读取 `doc/设备信息.xlsx`,确认 Sheet1 共 89 行数据,并复制到 `work/DeviceManagement/DeviceInformation/设备信息.xlsx` 归档。
- 明确字段映射Excel `名称` 保存到新增数据库字段 `名称`Excel `生产用名` 继续保存到原字段 `设备名称`
- 新增并执行 Excel 导入脚本,按 `公司编码` 使用 `MERGE` 导入,防止重复执行造成重复数据。
- 发现 Excel 日期导入存在时区早一天问题后,新增日期修正脚本,按 Excel 显示日期修正 `入账日期`
- 修正新增存储过程里“公司编码不能为空”提示文本,避免脚本生成时遗留问号文本。
### 改了哪些文件
- `src/views/DeviceManagement/DeviceInformation/index.vue`
- `db_backups/add_device_name_and_import_excel_20260629.sql`
- `db_backups/fix_device_excel_import_dates_20260629.sql`
- `db_backups/fix_device_add_company_code_message_20260629.sql`
- `work/DeviceManagement/DeviceInformation/README.md`
- `work/DeviceManagement/DeviceInformation/01-项目功能内容.md`
- `work/DeviceManagement/DeviceInformation/02-项目程序开发详细步骤.md`
- `work/DeviceManagement/DeviceInformation/03-推进台账.md`
- `work/DeviceManagement/DeviceInformation/04-任务矩阵.md`
- `work/DeviceManagement/DeviceInformation/05-验收证据.md`
- `work/DeviceManagement/DeviceInformation/06-决策记录.md`
- `gptlog-process/gpdlog.md`
### 验证了什么
- 数据库表 `dbo.基础数据_设备工位点检表` 已新增 `名称` 字段。
- `doc/设备信息.xlsx` 89 行已导入数据库,导入后设备信息总数为 89。
- 样例数据验证:
- `REALLY-11`:设备名称 `气泵(空压机)`,生产用名 `气泵`,入账日期 `2007-01-01`
- `REALLY-6`:设备名称 `数控加工中心`,生产用名 `加1`,入账日期 `2008-12-24`
- `REALLY-1`:设备名称 `普通车床`,生产用名 `普1`,入账日期 `2011-01-01`
- 执行 `npm run build` 通过,仅有既有资源体积和 Browserslist 过期警告。
### 下一步
- 在浏览器打开 `https://127.0.0.1:1997/`,进入设备信息维护页面检查新增字段显示、编辑回填和保存。

View File

@@ -1,25 +0,0 @@
# 04-任务矩阵
| 任务编号 | 任务 | 状态 | 验收标准 |
| --- | --- | --- | --- |
| DI-001 | 解析需求文档 | 已完成 | 已从 `doc/修改设备信息维护.docx` 提取字段和交互要求 |
| DI-002 | 定位目标页面 | 已完成 | 确认页面为 `src/views/DeviceManagement/DeviceInformation/index.vue` |
| DI-003 | 扩展数据库字段 | 已完成 | `dbo.基础数据_设备工位点检表` 已包含 14 个新增字段 |
| DI-004 | 更新查询过程 | 已完成 | 查询过程返回新增字段,并按证书有效期预警排序 |
| DI-005 | 更新新增过程 | 已完成 | 新增过程接收新增字段,公司编码为空时返回失败 |
| DI-006 | 更新编辑过程 | 已完成 | 编辑过程更新新增字段但不更新公司编码 |
| DI-007 | 修改列表列展示 | 已完成 | 前端表格展示需求字段,操作列固定在右侧 |
| DI-008 | 修改新增/编辑表单 | 已完成 | 表单包含需求字段,主要设备/特种设备为是/否下拉 |
| DI-008A | 取消设备类型必填 | 已完成 | `rules` 中不再包含设备类型必填校验,新增/编辑允许设备类型为空 |
| DI-009 | 工位绑定多选 | 已完成 | 工位绑定为多选下拉,选项来源于工位管理查询 |
| DI-010 | 证书有效期预警 | 已完成 | 已过期红色置顶30 天内黄色靠前 |
| DI-011 | 构建验证 | 已完成 | `npm run build` 通过 |
| DI-011A | 修复日期编辑报错 | 已完成 | 入账日期、证书有效期至可传正常日期或空字符串,存储过程返回成功 |
| DI-011B | 修复日期控件点击报错 | 已完成 | 日期控件绑定 `Date` 对象,点击日期面板不再触发 `date.getHours is not a function` |
| DI-011C | 修复编辑弹窗日期不回填 | 已完成 | 日期回填兼容多种后端返回格式,并在弹窗渲染后再次写入日期字段 |
| DI-014 | 新增设备名称字段 | 已完成 | 数据库新增 `名称` 字段,页面列表和编辑弹窗显示“设备名称” |
| DI-015 | 导入设备信息 Excel | 已完成 | `doc/设备信息.xlsx` 89 行导入数据库,按公司编码 MERGE 防重复 |
| DI-016 | 修正 Excel 入账日期 | 已完成 | 采用 Excel 显示日期修正导入结果,避免时区早一天 |
| DI-017 | 修正新增过程提示文本 | 已完成 | 新增过程公司编码为空时返回“公司编码不能为空”,不再返回问号乱码 |
| DI-012 | 真实页面人工验收 | 待办 | 登录系统确认页面显示、新增、编辑、预警颜色和排序符合需求 |
| DI-013 | 历史数据治理 | 观察 | 如历史设备缺公司编码影响业务,再补清洗脚本和规则 |

View File

@@ -1,288 +0,0 @@
# 05-验收证据
## 文档解析
- 原始文档:`doc/修改设备信息维护.docx`
- 工作副本:`work/DeviceManagement/DeviceInformation/修改设备信息维护.docx`
- 提取结果:字段包括公司编码、生产用名、规格/型号、设备信息、使用部门、入账日期、单位、数量、状态、维修记录、维保记录、工位绑定、主要设备、设备标准开机工时、特种设备、证书有效期至。
## 数据库连接
命令:
```powershell
sqlcmd -S 192.168.2.92 -d YL_MESDB -U sa -P ****** -Q "SET NOCOUNT ON; SELECT TOP 1 name FROM sys.databases WHERE name=N'YL_MESDB';"
```
结果:
- 返回 `YL_MESDB`
## 字段验证
命令:
```powershell
sqlcmd -S 192.168.2.92 -d YL_MESDB -U sa -P ****** -f 65001 -Q "SET NOCOUNT ON; SELECT c.name, t.name AS type_name, c.max_length, c.is_nullable FROM sys.columns c JOIN sys.types t ON c.user_type_id=t.user_type_id WHERE c.object_id=OBJECT_ID(N'dbo.基础数据_设备工位点检表') AND c.name IN (N'公司编码',N'设备信息',N'使用部门',N'入账日期',N'单位',N'数量',N'状态',N'维修记录',N'维保记录',N'工位绑定',N'主要设备',N'设备标准开机工时',N'特种设备',N'证书有效期至') ORDER BY c.column_id;"
```
结果:
- 已返回 14 个新增字段。
- 日期字段为 `date`
- 数量、设备标准开机工时为 `decimal`
- 文本字段为 `nvarchar`
## 存储过程参数验证
命令:
```powershell
sqlcmd -S 192.168.2.92 -d YL_MESDB -U sa -P ****** -f 65001 -Q "SET NOCOUNT ON; SELECT p.name AS proc_name, pa.name AS param_name, TYPE_NAME(pa.user_type_id) AS type_name FROM sys.procedures p JOIN sys.parameters pa ON p.object_id=pa.object_id WHERE p.name IN (N'设备管理_设备信息_查询',N'设备管理_设备信息_增加',N'设备管理_设备信息_编辑') ORDER BY p.name, pa.parameter_id;"
```
结果:
- `设备管理_设备信息_增加` 已包含新增字段参数。
- `设备管理_设备信息_编辑` 已包含新增字段参数和 `@设备流水号`
- `设备管理_设备信息_查询` 参数保持兼容。
## 查询过程验证
命令:
```powershell
sqlcmd -S 192.168.2.92 -d YL_MESDB -U sa -P ****** -f 65001 -Q "SET NOCOUNT ON; EXEC dbo.[设备管理_设备信息_查询] @设备名称_check=0, @设备名称=N'', @设备类型_check=0, @设备类型=NULL;" -h -1 -W
```
结果:
- 命令执行成功。
- 当前无输出行或未显示样本数据,但过程无执行错误。
## 前端构建
命令:
```powershell
npm run build
```
结果:
- 构建通过。
- webpack compiled with 2 warnings。
- 警告为项目既有资源体积过大、Browserslist/caniuse-lite 数据过期。
## 产物证据
- 前端页面:`src/views/DeviceManagement/DeviceInformation/index.vue`
- 数据库脚本:`db_backups/update_device_information_maintenance_20260629.sql`
- 日期编辑修复脚本:`db_backups/fix_device_information_date_edit_20260629.sql`
- 工作目录:`work/DeviceManagement/DeviceInformation`
- 日志:`gptlog-process/gpdlog.md`
## 日期编辑修复验证
命令:
```powershell
sqlcmd -S 192.168.2.92 -d YL_MESDB -U sa -P ****** -f 65001 -i db_backups\fix_device_information_date_edit_20260629.sql
```
结果:
- 脚本执行成功。
- `设备管理_设备信息_增加/编辑``@入账日期``@证书有效期至` 已调整为 `nvarchar` 参数。
正常日期验证:
```powershell
EXEC dbo.[设备管理_设备信息_编辑]
@入账日期=N'2026-07-01',
@证书有效期至=N'2026-07-31',
...
```
结果:
- 返回 `result = 1`
- 数据库保存为 `2026-07-01``2026-07-31`
清空日期验证:
```powershell
EXEC dbo.[设备管理_设备信息_编辑]
@入账日期=N'',
@证书有效期至=N'',
...
```
结果:
- 返回 `result = 1`
- 数据库对应日期字段保存为 `NULL`
前端构建复验:
```powershell
npm run build
```
结果:
- 构建通过。
- webpack compiled with 2 warnings。
- 警告仍为项目既有资源体积过大、Browserslist/caniuse-lite 数据过期。
## 设备名称字段和 Excel 导入验收
Excel 数据来源:
- `doc/设备信息.xlsx`
- 工作副本:`work/DeviceManagement/DeviceInformation/设备信息.xlsx`
- Sheet1 数据行数89 行。
导入脚本:
```powershell
sqlcmd -S 192.168.2.92 -d YL_MESDB -U sa -P ****** -f 65001 -i db_backups\add_device_name_and_import_excel_20260629.sql
```
结果:
- `dbo.基础数据_设备工位点检表` 已新增字段 `名称`
- `设备管理_设备信息_增加` 已增加 `@名称` 参数并写入 `[名称]`
- `设备管理_设备信息_编辑` 已增加 `@名称` 参数并更新 `[名称]`
- Excel 89 行按 `公司编码` 导入或更新。
日期修正脚本:
```powershell
sqlcmd -S 192.168.2.92 -d YL_MESDB -U sa -P ****** -f 65001 -i db_backups\fix_device_excel_import_dates_20260629.sql
```
结果:
- 使用 Excel 单元格显示值修正 `入账日期`
- 修正后设备信息总数为 89。
提示文本修正脚本:
```powershell
sqlcmd -S 192.168.2.92 -d YL_MESDB -U sa -P ****** -f 65001 -i db_backups\fix_device_add_company_code_message_20260629.sql
```
结果:
- 新增过程公司编码为空时返回 `公司编码不能为空`
- 未重新执行导入脚本,避免覆盖已修正的入账日期。
数据库抽样验证:
```powershell
SELECT COUNT(*) AS cnt
FROM dbo.[基础数据_设备工位点检表];
SELECT TOP 10
[设备流水号],
[名称],
[公司编码],
[设备名称] AS [生产用名],
[设备型号],
[入账日期]
FROM dbo.[基础数据_设备工位点检表]
ORDER BY [设备流水号];
```
结果:
- 总数89。
- `REALLY-11``名称=气泵(空压机)``生产用名=气泵``入账日期=2007-01-01`
- `REALLY-6``名称=数控加工中心``生产用名=加1``入账日期=2008-12-24`
- `REALLY-1``名称=普通车床``生产用名=普1``入账日期=2011-01-01`
前端构建验证:
```powershell
npm run build
```
结果:
- 构建通过。
- webpack compiled with 2 warnings。
- 警告仍为项目既有资源体积过大、Browserslist/caniuse-lite 数据过期。
## 编辑弹窗日期不回填修复验证
数据库测试数据:
```powershell
UPDATE dbo.[基础数据_设备工位点检表]
SET [入账日期]='2026-07-01',
[证书有效期至]='2026-07-31'
WHERE [设备流水号]=1;
```
结果:
- `设备流水号=1``入账日期``2026-07-01`
- `设备流水号=1``证书有效期至``2026-07-31`
本地日期解析验证:
```powershell
node -e "<日期解析测试脚本>"
```
结果:
- `2026-07-01`
- `2026-07-01 00:00:00`
- `2026/07/01 00:00:00`
- `/Date(1782864000000)/`
- `Date` 对象
以上格式均可解析为有效 `Date`
构建验证:
```powershell
npm run build
```
结果:
- 构建通过。
- webpack compiled with 2 warnings。
- 警告仍为项目既有资源体积过大、Browserslist/caniuse-lite 数据过期。
页面测试地址:
- `https://127.0.0.1:1997/`
- 本地 dev server 使用自签名 HTTPS浏览器需要允许证书后进入页面测试。
## 日期控件点击报错修复验证
问题:
- 页面点击 `入账日期``证书有效期至` 日期面板时报错:`TypeError: date.getHours is not a function`
修复:
- 移除两个 `el-date-picker``value-format="yyyy-MM-dd"`
- 编辑回填时用 `parseDateValue` 将数据库日期转换为 `Date` 对象。
- 提交时用 `dateParam` 再格式化为 `yyyy-MM-dd` 字符串。
验证命令:
```powershell
npm run build
```
结果:
- 构建通过。
- webpack compiled with 2 warnings。
- 警告仍为项目既有资源体积过大、Browserslist/caniuse-lite 数据过期。

View File

@@ -1,49 +0,0 @@
# 06-决策记录
## DR-001 公司编码编辑只读并由后端保护
- 决策:新增时公司编码必填;编辑时前端禁用;编辑存储过程不更新公司编码。
- 原因:需求明确“公司编码为必填且不可被修改”。仅前端禁用不足以防止接口绕过。
- 影响:历史数据若公司编码为空,编辑时不会强制补齐;如后续要求历史数据也完整,需要专项清洗。
## DR-002 生产用名和规格/型号复用旧字段
- 决策:生产用名使用 `设备名称`,规格/型号使用 `设备型号`
- 原因:需求明确“复用设备名称”“复用设备型号”,保持与既有存储过程和其他页面兼容。
- 影响:其他依赖 `设备管理_设备信息_查询` 的页面仍能使用旧字段。
## DR-003 工位绑定存储为逗号分隔工位号
- 决策:前端多选展示工位名称,提交时保存工位号逗号字符串到 `工位绑定`
- 原因:当前系统通用参数传递和旧表结构以简单字段为主,本轮避免新建关系表扩大影响面。
- 影响:后续如需要按单工位统计或约束唯一性,应迁移为设备-工位绑定明细表。
## DR-004 证书有效期排序前后端都处理
- 决策:数据库查询过程增加预警排序;前端 `sortedTableData` 再按同样规则排序并控制行背景色。
- 原因:后端保证分页查询顺序,前端保证当前页显示稳定和颜色一致。
- 影响:分页总数据的全局置顶依赖数据库排序;前端只处理当前页。
## DR-005 SQL 脚本使用可重复执行字段判断
- 决策:新增字段使用 `COL_LENGTH` 判断存在后再 `ALTER TABLE ADD`
- 原因:避免脚本重复执行时报“列已存在”。
- 影响:字段类型若后续要调整,需另起变更脚本,不能靠本脚本自动修改类型。
## DR-006 Excel 名称与生产用名分开保存
- 决策Excel `名称` 保存到新增数据库字段 `名称`页面显示为“设备名称”Excel `生产用名` 继续保存到原字段 `设备名称`,页面显示为“生产用名”。
- 原因:原系统多处依赖 `设备名称` 字段作为生产用名/设备简称,直接改语义会影响其他页面。
- 影响:后续涉及“设备名称”时应先确认是新字段 `名称` 还是旧字段 `设备名称`
## DR-007 Excel 导入按公司编码 MERGE
- 决策:设备信息 Excel 导入按 `公司编码``MERGE`,匹配则更新,不匹配则新增。
- 原因:用户要求把 Excel 数据插入数据库,但导入脚本可能被重复执行;使用 `MERGE` 可以降低重复数据风险。
- 影响Excel 中公司编码不是全局唯一的行会被视为同一设备;后续如要支持一编码多设备,需要新增更稳定的唯一键规则。
## DR-008 Excel 日期按显示值修正
- 决策:首次导入发现日期早一天后,单独使用 Excel 单元格显示值生成修正脚本,不重新执行整份导入脚本。
- 原因Node 读取 Excel 日期对象时受时区影响,显示值更贴近业务人员在表格中看到的日期。
- 影响:后续导入 Excel 日期时,应优先使用单元格显示文本或显式本地日期解析。

View File

@@ -1,18 +0,0 @@
# 修改设备信息维护 README
## 索引
| 文件 | 用途 |
| --- | --- |
| `修改设备信息维护.docx` | 原始需求文档副本 |
| `设备信息.xlsx` | 设备信息初始化导入数据副本 |
| `01-项目功能内容.md` | 本轮设备信息维护页面功能范围 |
| `02-项目程序开发详细步骤.md` | 前端、数据库和验证开发步骤 |
| `03-推进台账.md` | 每轮做了什么、改了哪些文件、验证了什么、下一步是什么 |
| `04-任务矩阵.md` | 任务编号、状态、验收标准 |
| `05-验收证据.md` | 命令、数据库、页面、构建等验收证据 |
| `06-决策记录.md` | 关键实现决策与原因 |
## 后续推进方式
后续继续该任务时,优先查看 `04-任务矩阵.md` 中状态为“待办”或“观察”的任务,再按 `03-推进台账.md` 追加新轮次记录。涉及数据库变更时,先补充 `db_backups` 增量脚本,再同步更新 `05-验收证据.md`

View File

@@ -28,7 +28,7 @@
字段:
- DID唯一序号自增新建时不可见编辑时不可修改。
- 项目号:下拉选择,可搜索;具体 SAP 视图字段后续提供
- 项目号:下拉选择,可搜索;来源为 `[SAP].[SBO_YL].[dbo].[VIEW_OPRJ]``项目代码` 字段,页面显示 `项目代码 | 项目名称`
- 物料编码:下拉选择,可搜索,参考 `ProcessManagement/PartDrawlook/index.vue` 的物料编码过滤。
- 图号:文本框输入。
- 任务描述:文本框输入。

View File

@@ -29,7 +29,7 @@
8. 已新增辅助下拉过程:
- `设计报工_物料查询`
- `设计报工_人员查询`
- `设计报工_项目查询`
- `设计报工_项目查询`:来源为 `[SAP].[SBO_YL].[dbo].[VIEW_OPRJ]``项目代码` 字段
## 二、前端开发
@@ -42,6 +42,7 @@
7. 指派对象多人员选择参考 `PlanManagement/SelfMakePlando/index.vue` 的二次派工。
8. 工时校验布局参考 `ProductionManagement/WorkHoursCheck/index.vue`,但移除 SAP 上传相关逻辑。
9. 工时报表布局参考 `ProductionManagement/Workhours/index.vue`,但查询独立设计报工表。
10. 四个页面的项目号查询条件统一使用 `设计报工_项目查询` 远程下拉。
## 三、验证步骤

View File

@@ -100,3 +100,32 @@
### 下一步
- 等待项目号 SAP 视图字段来源。
- 如后续需要访问页面,再单独做菜单权限分配;本轮不处理菜单权限。
## 2026-07-09 项目号来源修正
### 做了什么
- 根据用户确认,将项目号来源从临时的 `MES_设计报工_任务` 已有项目号改为 SAP 项目视图。
- 新增并发布 `db_backups/update_design_report_project_source_20260709.sql`
- 同步更新 `db_backups/create_design_report_task_module_20260630.sql` 中的 `设计报工_项目查询`
- 检查并修改 DesignReportTask 四个页面,项目号查询条件统一使用 SAP 项目代码远程下拉。
### 改了哪些文件
- `db_backups/update_design_report_project_source_20260709.sql`
- `db_backups/create_design_report_task_module_20260630.sql`
- `src/views/ProductionManagement/DesignReportTask/Task/index.vue`
- `src/views/ProductionManagement/DesignReportTask/Report/index.vue`
- `src/views/ProductionManagement/DesignReportTask/Check/index.vue`
- `src/views/ProductionManagement/DesignReportTask/HoursReport/index.vue`
- `work/ProductionManagement/DesignReportTask/README.md`
- `work/ProductionManagement/DesignReportTask/01-项目功能内容.md`
- `work/ProductionManagement/DesignReportTask/02-项目程序开发详细步骤.md`
- `work/ProductionManagement/DesignReportTask/03-推进台账.md`
- `work/ProductionManagement/DesignReportTask/04-任务矩阵.md`
- `work/ProductionManagement/DesignReportTask/05-验收证据.md`
- `work/ProductionManagement/DesignReportTask/06-决策记录.md`
### 验证了什么
- `[SAP].[SBO_YL].[dbo].[VIEW_OPRJ]` 存在字段 `项目代码``项目名称`
- `设计报工_项目查询 @过滤=N''` 可返回 SAP 项目代码列表。
- `设计报工_项目查询 @过滤=N'CW-260001'` 可返回 `CW-260001`
- `npm run build` 构建通过。

View File

@@ -10,7 +10,7 @@
| DRT-006 | 确认完成规则 | 已完成 | 必须已有结束时间,未结束不能完成 |
| DRT-007 | 确认删除规则 | 已完成 | 有报工记录不能删除 |
| DRT-008 | 确认独立性 | 已完成 | 不参与现有任何生产/SAP/工时报表流程 |
| DRT-009 | 确认项目号来源 | 待确认 | 业务提供 SAP 视图和字段 |
| DRT-009 | 确认项目号来源 | 已完成 | 来源为 `[SAP].[SBO_YL].[dbo].[VIEW_OPRJ]``项目代码` |
| DRT-010 | 数据库和页面开发 | 已完成 | 表、过程、页面发布并验证,不分配菜单权限 |
| DRT-011 | 复制确认版 Word 文档到工作目录 | 已完成 | `work/ProductionManagement/DesignReportTask/设计报工任务模块.docx` 存在 |
| DRT-012 | 补充菜单权限口径 | 已完成 | README、开发步骤、决策记录明确本阶段不分配菜单权限 |
@@ -21,3 +21,4 @@
| DRT-017 | 新增设计工时校验页面 | 已完成 | 页面文件 `Check/index.vue` 存在并构建通过 |
| DRT-018 | 新增设计工时报表页面 | 已完成 | 页面文件 `HoursReport/index.vue` 存在并构建通过 |
| DRT-019 | 验证完成/删除业务规则 | 已完成 | 未结束不能完成,已有报工记录不能删除由后端约束 |
| DRT-020 | 修正项目号来源和四页项目下拉 | 已完成 | 四个页面项目号均通过 `设计报工_项目查询` 查询 SAP 项目代码 |

View File

@@ -24,7 +24,7 @@ work/ProductionManagement/DesignReportTask/设计报工任务模块.docx
## 用户确认口径
```text
项目号具体取哪个 SAP 视图字段后续提供
项目号来源修正为 SAP 视图 `[SAP].[SBO_YL].[dbo].[VIEW_OPRJ]` 的 `项目代码` 字段。
完成要求已有结束时间,未结束不能完成。
删除任务时,如果已经有报工记录,不能删除。
不参与之前的任何东西,独立的。
@@ -43,7 +43,20 @@ src/views/ProductionManagement/Workhours/index.vue
设计报工模块的独立数据表、独立过程和 4 个前端页面已新增。
项目号 SAP 视图字段来源仍待业务提供;当前项目号下拉临时从已存在设计任务项目号中取值,并允许前端手工录入
项目号 SAP 视图字段来源已确认:`[SAP].[SBO_YL].[dbo].[VIEW_OPRJ].[项目代码]`。当前四个页面项目号均通过 `设计报工_项目查询` 使用 SAP 项目代码下拉
## 项目号来源修正验证
执行过程:
```powershell
sqlcmd -S 192.168.2.92 -U sa -P ****** -d YL_MESDB -f 65001 -i .\db_backups\update_design_report_project_source_20260709.sql
```
验证结果:
```text
设计报工_项目查询 @过滤=N'' 可返回 SAP 项目代码和项目名称。
设计报工_项目查询 @过滤=N'CW-260001' 返回 CW-260001。
```
## 菜单权限口径

View File

@@ -32,15 +32,16 @@
- 删除过程需要先检查设计报工记录表。
- 后续如需撤销,只能增加作废状态,不做物理删除。
## DDR-004 项目号来源待业务提供
## DDR-004 项目号来源已确认
决策:项目号字段暂保留为可搜索下拉,SAP 视图和字段来源后续补充
决策:项目号字段使用可搜索下拉,来源为 `[SAP].[SBO_YL].[dbo].[VIEW_OPRJ]``项目代码` 字段
原因:用户确认项目号具体 SAP 视图字段后续提供
原因:用户确认项目号来源应为 `SAP.SBO_YL.dbo.VIEW_OPRJ.项目代码`
影响:
- 开发时可先预留过程参数和前端控件
- 项目号下拉过程需等字段来源明确后实现
- `设计报工_项目查询` 返回 `项目号=项目代码`,同时返回 `项目名称` 供前端展示
- DesignReportTask 四个页面的项目号查询条件统一使用该过程
- 新建设计任务的项目号不再依赖已存在设计任务中的历史项目号。
## DDR-005 指派对象按多人派工预留
@@ -64,14 +65,15 @@
- 菜单挂载和角色权限分配暂不纳入本轮验收。
- 如果后续需要开放页面访问,再单独按权限方案处理。
## DDR-007 项目号来源未确认时的临时实现
## DDR-007 项目号临时实现已废弃
决策:项目号下拉暂时查询 `MES_设计报工_任务` 中已存在项目号,并允许前端手工输入。
决策:废弃“从 `MES_设计报工_任务`已存在项目号,并允许前端手工输入”的临时实现
原因:用户确认项目号具体 SAP 视图字段后续提供,但本轮需要先落地页面、数据表和功能
原因:项目号正式来源已经确认为 `[SAP].[SBO_YL].[dbo].[VIEW_OPRJ].[项目代码]`
影响:
- 后续拿到 SAP 视图字段后,只需要调整 `设计报工_项目查询` 存储过程
- `设计报工_项目查询` 已改为查询 SAP 项目视图
- `Task``Report``Check``HoursReport` 四个页面项目号均使用远程下拉。
- 前端控件和任务表字段无需重做。
## DDR-008 前端页面独立放在 DesignReportTask 目录

View File

@@ -16,7 +16,7 @@
- 当前阶段:方案梳理与文档修订。
- 核心原则设计报工任务、设计报工记录、设计工时校验、设计工时报表全部独立不参与现有生产报工、SAP 上传、生产工时校验和既有工时报表。
- 菜单权限:本阶段不分配菜单权限,不写入菜单表和角色权限表。
- 待确认项:`项目号` 的 SAP 视图和字段来源由业务后续提供
- 项目号来源:`[SAP].[SBO_YL].[dbo].[VIEW_OPRJ]``项目代码` 字段,页面显示 `项目代码 | 项目名称`
## 已落地内容