# 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 数据过期。
