# 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/`，进入设备信息维护页面检查新增字段显示、编辑回填和保存。
