# 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` 执行数据库脚本，验证总数、样例数据和存储过程文本。
