# MES_Manage_View_V20 软件项目技术分析报告

> **项目名称**: MacroinfManage_MES (MES_Manage_View_V20)
> **版本**: v1.1.0
> **日期**: 2026-05-18
> **作者**: MESWORK
> **描述**: 山东元利科技有限公司制造执行系统(MES)管理视图平台

---

## 目录

1. [项目概述](#1-项目概述)
2. [技术架构路线](#2-技术架构路线)
3. [前端技术详细分析](#3-前端技术详细分析)
4. [数据库 script.sql 详细解析](#4-数据库-scriptsql-详细解析)
5. [程序问题分析报告](#5-程序问题分析报告)

---

## 1. 项目概述

| 属性 | 内容 |
|------|------|
| 项目名称 | MacroinfManage_MES (MES_Manage_View_V20) |
| 版本 | v1.1.0 |
| 基础模板 | vue-element-admin (PanJiaChen) |
| 数据库 | Microsoft SQL Server 2019 (兼容级别150) |
| 数据库名 | YL_MESDB |
| 外部集成 | SAP Business One (跨库查询) |
| 设备通信 | MQTT 4.3.7 (物联网设备实时数据) |

---

## 2. 技术架构路线

```
┌──────────────────────────────────────────────────────────────────┐
│                        前端层 (Frontend)                          │
│  Vue 2.7.16 + Element UI 2.15.14 + Webpack 5                    │
│  ├── Vue Router 3.6.5 (权限动态路由)                               │
│  ├── Vuex 3.6.2 (全局状态管理)                                     │
│  ├── Axios 0.21.4 (HTTP 通信)                                    │
│  ├── ECharts 5.4.3 (数据可视化/看板)                               │
│  ├── FullCalendar 6.1.x (排产日历)                                │
│  ├── MQTT 4.3.7 (设备实时数据/物联网通信)                           │
│  └── xlsx / jspdf / docxtemplater (报表导出)                      │
├──────────────────────────────────────────────────────────────────┤
│                        中间层 (Middleware)                        │
│  ├── ASP.NET / Node.js 后端API服务                                │
│  └── 存储过程调用 (后端直接调用SQL Server存储过程)                     │
├──────────────────────────────────────────────────────────────────┤
│                      数据库层 (Database)                          │
│  Microsoft SQL Server 2019 (兼容级别150)                           │
│  数据库名: YL_MESDB                                               │
│  ├── 30+ 数据表                                                    │
│  ├── 20+ 视图                                                     │
│  ├── 1 用户自定义函数                                              │
│  ├── 60+ 存储过程                                                  │
│  └── 外部数据源: SAP.SBO_YL (SAP Business One)                    │
├──────────────────────────────────────────────────────────────────┤
│                      外部集成 (Integration)                       │
│  ├── SAP Business One (ERP系统，跨数据库查询)                       │
│  │   ├── SAP.SBO_YL.dbo.UBT_OITM (物料主数据)                     │
│  │   ├── SAP.SBO_YL.dbo.UBT_WW_MES_OPORandOPCH (采购订单)         │
│  │   └── SAP.SBO_YL.dbo.OWOR / OWR1 / OWR4 (生产订单)             │
│  ├── 设备PLC/SCADA (通过MQTT协议采集实时数据)                       │
│  └── 文件服务器 (图纸/附件存储)                                     │
└──────────────────────────────────────────────────────────────────┘
```

---

## 3. 前端技术详细分析

### 3.1 核心框架与依赖

| 类别 | 技术 | 版本 | 用途 |
|------|------|------|------|
| 框架 | Vue.js | 2.7.16 | SPA 核心框架 |
| UI库 | Element UI | 2.15.14 | 企业级UI组件 |
| 路由 | Vue Router | 3.6.5 | 动态权限路由 |
| 状态管理 | Vuex | 3.6.2 | 全局状态 |
| HTTP | Axios | 0.21.4 | API通信 |
| 图表 | ECharts | 5.4.3 | 看板/统计图表 |
| 日历 | FullCalendar | 6.1.17 | 排产甘特视图 |
| IoT | MQTT.js | 4.3.7 | 设备实时数据订阅 |
| 构建 | Webpack | 5.89.0 | 模块打包 |
| PDF | jsPDF / html2canvas | 2.5.1 / 1.4.1 | PDF导出 |
| Excel | xlsx | 0.18.5 | 表格导入导出 |
| Word | docxtemplater | 3.42.0 | Word模板生成 |
| 条码 | qrcode | 1.5.3 | 二维码生成 |
| PDF预览 | pdfjs-dist | 5.1.91 | 图纸在线预览 |

### 3.2 项目目录结构 (src/)

```
src/
├── main.js                    # 入口文件，全局注册
├── App.vue                    # 根组件
├── permission.js              # 路由守卫/权限控制
├── api/                       # API接口层
│   └── login.js               # 登录/密码修改API
├── router/
│   ├── index.js               # 路由配置
│   ├── getTreeData.js         # 动态菜单树生成
│   └── menuComponentModule.js # 菜单组件映射
├── store/
│   ├── index.js               # Vuex Store 入口
│   └── modules/
│       ├── app.js             # 应用全局状态
│       ├── user.js            # 用户状态(登录/登出)
│       ├── login.js           # 登录时间跟踪
│       ├── permission.js      # 权限路由状态
│       └── tagsView.js        # 标签页状态
├── views/                     # 业务视图模块
│   ├── layout/                # 布局组件
│   ├── login/                 # 登录页
│   ├── dashboard/             # 看板首页
│   └── [业务模块]/            # 各MES业务模块
├── components/                # 公用组件
├── styles/                    # 全局样式
├── utils/
│   ├── auth.js                # Token管理(Cookie)
│   ├── request.js             # Axios实例配置
│   └── curd.js                # 通用增删改查
├── directive/                 # 自定义指令
│   └── el-dragDialog/         # 对话框拖拽指令
├── icons/                     # SVG图标
└── vendor/                    # 第三方工具(htmlToPdf)
```

### 3.3 权限控制机制

```
1. 用户登录 → 后端验证用户名/密码 → 返回角色列表
2. 选择登录角色 → setToken(角色编号) → Cookie存储
3. 路由守卫 permission.js 拦截：
   ├── 无Token → 重定向 /login
   └── 有Token → GetInfo() → getTreeData() 构建动态路由树
                → GenerateRoutes → router.addRoutes()
```

---

## 4. 数据库 script.sql 详细解析

### 4.1 数据库基础配置

```sql
数据库名:       YL_MESDB
数据文件:       D:\sqlData\YL_MESDB.mdf (初始 ~6.9GB, 自动增长64MB)
日志文件:       D:\sqlDataLog\YL_MESDB_log.ldf (初始 ~263GB, 最大2048GB)
兼容级别:       150 (SQL Server 2019)
恢复模式:       FULL (完全恢复)
排序规则:       DATABASE_DEFAULT
```

### 4.2 核心业务表一览

#### 生产计划与任务

| 表名 | 主键 | 说明 |
|------|------|------|
| `MES_接口_生产计划` | 订单编号 (int) | 从ERP同步的生产订单主表 |
| `MES_接口_生产计划_生产任务` | AID (bigint) | 工序级任务拆分表，UK: (订单编号+订单行号+订单拆分内码) |
| `MES_接口_生产计划_生产任务_子任务` | AID | 子任务(二次派工) |
| `MES_接口_工艺路线主数据` | AID (int) | 工艺路线主数据接口表 |

**`MES_接口_生产计划_生产任务` 关键字段**:

| 字段 | 类型 | 说明 |
|------|------|------|
| 任务状态 | int | 0-待执行, 1-可执行, 2-已开工, 4-已完成 |
| 加工状态 | int | 2-辅助开始, 3-辅助结束, 4-开始加工, 5-暂停, 6-报工 |
| 指派对象/编号 | nvarchar(50) | 分配的工位/设备名称与编号 |
| 指派数量 | decimal(16,2) | 本序计划生产数量 |
| 二次派工 | nvarchar(500) | 多人协作分配(逗号分隔人员ID) |
| 进度 | decimal(16,2) | 完成百分比 |

#### 资源与人员

| 表名 | 主键 | 说明 |
|------|------|------|
| `MES_资源主数据` | VisCode (nvarchar(50)) | 设备/工位主数据(SAP同步) |
| `登录基础数据_人员信息` | Personnel_Number (int) | 人员账号表, UK: account |
| `登录基础数据_角色信息` | Roles_number (int) | 角色定义表 |
| `登录基础数据_人员权限角色` | ID (int) | 人员-角色多对多关联 |
| `登录基础数据_二级菜单` | IDD (int) | 菜单/路由配置表 |
| `登录基础数据_部门` | 部门编号 (int) | 组织架构 |
| `工位人员绑定表` | 绑定编号 (int) | 工位-人员绑定关系 |
| `班次表` | 班次编号 (nvarchar(50)) | 班次定义(白班07:45-16:30, 夜班16:30-00:40) |
| `班次人员绑定表` | 绑定ID (int) | 人员-班次绑定 |

#### 操作记录与工时

| 表名 | 主键 | 说明 |
|------|------|------|
| `YL_加工中心_操作记录表` | AID (int) | **核心操作记录表**，含暂停/恢复/报工全流程 |
| `YL_加工中心_报工记录` | AID (int) | 报工确认记录(生产工时/辅助工时) |
| `生产管理_工时校验_校验工时表` | AID (int) | 工时审核校验(上传工时 vs 系统计算工时) |

**操作记录表关键字段**: `总时长`, `暂停总时长`, `实际工时` = 总时长 - 暂停总时长

| 操作类别 | 说明 |
|----------|------|
| 收料 | 物料接收确认 |
| 开始加工 / 辅助开始 | 生产/辅助启动 |
| 暂停 | 暂停加工 |
| 报工 / 辅助结束 | 完成报工 |
| 首检 | 首件质量检验 |
| 加班 / 休息日加班 / 法定休息日加班 | 加班工时记录 |

#### 质量管理

| 表名 | 主键 | 说明 |
|------|------|------|
| `YL_质量检验_质检记录` | QT_AID (bigint) | 质检主记录 |
| `YL_质量检验_质检记录_检测零件` | LJ_AID (bigint) | 每个被检零件的检测结果(1合格/0不合格) |
| `YL_质量检验_质检记录_检测数据` | AID (bigint) | 检测项目明细(理论值/上限/下限/实测值) |
| `YL_质量检验_检测标准` | AID (int) | 各物料工序的检测标准 |
| `YL_质量检验_量具信息` | AID (int) | 量具台账 |
| `YL_质量检验_不合格品处理` | FlowAID (int) | 不合格品处理流程(让步放行申请) |
| `YL_质量检验_不合格品处理_处理节点` | (FlowAID, FlowNodeID) | 审批流程节点 |

| 检测类型编号 | 质检类型 |
|-------------|----------|
| 1 | 首检自检 |
| 3 | 序检自检 |
| 6 | 收检 (跨工序接收检验) |
| 8 | 终检 (最终检验) |

#### 设备管理

| 表名 | 主键 | 说明 |
|------|------|------|
| `YL_设备管理_设备台账` | 设备ID (int) | 设备主数据, UK: 设备编号 |
| `YL_设备管理_维修记录` | AID (int) | 设备故障维修记录 |
| `YL_设备管理_工时记录` | ID (int) | 设备循环时间采集记录 |
| `YL_设备管理_设备生产状态_Moby` | AID | 设备实时生产状态 |
| `YL_设备管理_设备生产状态_Moby_历史记录` | AID | 设备状态变更历史 |
| `基础数据_设备工位点检表` | 设备流水号 (int) | 设备点检清单 |

#### 实时监控与历史数据

| 表名 | 主键 | 说明 |
|------|------|------|
| `CaChe_Var` | AID (int) | 设备变量实时缓存 |
| `历史_设备数据_定时` | AID (bigint) | 设备变量历史数据 |
| `历史_工位设备状态每分钟记录` | AID_N (bigint) | 每分工位状态快照(含电流/电压/功率) |
| `报警_记录_历史` | AID (int) | 报警历史记录 |
| `报警_记录_历史_缓存` | AID (int) | 当前活跃报警缓存 |
| `设备信息缓存表` | (无主键) | 工位任务信息缓存 |
| `记录_日志_项目运行日志` | AID (bigint) | API请求/响应日志 |
| `_日志` | ID (int) | 用户操作审计日志 |

#### 工艺与技术文档

| 表名 | 主键 | 说明 |
|------|------|------|
| `基础表_工序` | 工艺编号 (int) | 工序基础数据 |
| `车间生产管理工艺_零件工序_工艺库` | id (int) | 标准工艺路线库 |
| `车间生产管理工艺_零件生产工艺_工艺库` | id (int) | 生产订单关联工艺库(含订单编号) |
| `物料基础数据_零件图纸` | id (int) | 零件图纸文件元数据 |
| `物料基础数据_工艺图纸` | id (int) | 工艺图纸文件元数据 |
| `物料基础数据_零件图纸删除记录` | ID (int) | 图纸删除审计日志 |

#### 工作流与审批

| 表名 | 主键 | 说明 |
|------|------|------|
| `流程表` | 流程ID (int) | 审批流程主表 |
| `流程节点表` | 节点ID (int) | 审批流程节点 |
| `流程完成记录表` | 完成记录ID (int) | 流程完成记录 |
| `流程转办表` | 转办ID (int) | 审批转办记录 |
| `审批记录表` | 记录ID (int) | 审批意见记录 |

#### 其他

| 表名 | 说明 |
|------|------|
| `物料数据` | 物料主数据缓存 |
| `BOM数据` | BOM物料清单 |
| `YL_基础表_数据字典` | 全局数据字典(操作类别/班次/报工确认等) |
| `Attachments` | 文件附件管理 |
| `质量检验_质检任务_SAP` | SAP来料检验任务 |

### 4.3 关键视图分析

| 视图名称 | 功能描述 |
|----------|----------|
| `View_生产订单_MES` | **核心视图**：联合生产计划+生产任务+资源+图纸的完整视图 |
| `View_生产订单全部（包括已关闭）` | 同上但不过滤已关闭订单 |
| `View_生产工时视图` | 整合操作记录+校验工时+生产订单的多表联查 |
| `View_校验后的生产工时` | 仅显示已校验通过的生产工时 |
| `v_CurrentProductionStatus` | **当前生产状态看板**：机加+装配UNION，含人员名称聚合 |
| `View_外协报表视图` | 外协工序完整报表，联查SAP采购数据(s.含税行总计, s.供应商名称) |
| `View_设备工位人员` | 设备-工位-人员-班次四维关联视图 |
| `View_标准工艺视图` | 标准工艺+零件+工序关联 |
| `View_生产工艺视图` | 生产订单工艺+物料+订单状态 |
| `View_质检明细` | 质检记录+工位+合同号完整明细 |
| `View_外协质检` | 外协收检记录视图 |
| `View_装配信息` | 装配送检数/质检合格数统计 |
| `View_生产订单完工` | 复杂完工判定逻辑(合格数+不合格数=计划数量) |
| `View_终检状态` | 终检记录关联 |
| `View_账号权限信息` | 人员-角色-菜单完整权限链路 |
| `登录基础数据_管理人员权限视图` | 角色-人员-部门多维视图 |
| `计划任务视图` | 工艺编号+订单编号+物料名称 |

### 4.4 用户自定义函数 (UDF)

#### `计算班次重叠秒数`

```sql
计算班次重叠秒数(@开始时间 datetime, @结束时间 datetime, 
                  @班次开始 time, @班次结束 time) RETURNS int
```

- 逐日循环计算打卡时间和班次时间的重叠秒数
- 支持跨天班次(如夜班16:30-00:30)
- 限制最大3天计算范围防止无限循环
- 用于工时计算和加班判断

### 4.5 关键存储过程分析

#### 生产排产

| 存储过程 | 功能 |
|----------|------|
| `MES_OrderPlanned_SingleTaskPlanned` | **核心排产逻辑**：单任务拆分。当计划数量>指派数量时创建拆分任务；当计划数量<指派数量时删除未分配任务 |
| `MES_OrderPlanned_Finish` | 批量排产确认，通过OPENJSON解析JSON任务列表更新指派信息 |
| `MES_OrderPlanned_EditTaskPlanned` | 动态SQL编辑任务排产字段 |
| `MES_OrderPlanned_ChildTask_Add` | 子任务(二次派工)新增 |
| `MES_OrderPlanned_Query` / `_Queryzp` | 排产查询(自制件/装配件) |
| `__Reset_ProductOrder` | 重置订单(排产或加工中心数据) |

#### 加工中心操作

| 存储过程 | 功能 |
|----------|------|
| `MES_ProductTask_MaterialRecieved` | 收料操作：更新收料数量，当收料>0时任务状态变为可执行 |
| `MES_ProductTask_WorkingStart` | 开始加工：任务状态变为已开工(2)，自动同步上序合格数作为收料数 |
| `MES_ProductTask_Rest` | 暂停操作：加工状态变为暂停 |
| `MES_ProductTask_ProdReport` | **报工核心**：含完整加班计算(白班/夜班拆分、休息日/法定休息日处理)、捆绑报工、前序不合格数处理、报工记录双插入(生产工时+辅助工时) |
| `MES_ProductTask_HelpStart` | 辅助开始 |
| `MES_ProductTask_HelpEnd` | 辅助结束：含加班时长计算、班次判断、特殊加班人员处理 |
| `MES_ProductTask_FirstCheck` | 首检操作 |
| `MES_ProductTask_Excutable` | 标记任务为可执行 |
| `MES_ProductTask_SendInspection` | 送检(装配报工) |
| `MES_ProductCenter_OptRecord_Save` | **操作记录保存核心**：处理暂停/开始/报工的联动逻辑，计算工时 |
| `MES_ProductCenter_OptRecords` | 操作记录查询 |

#### 人员工时(装配)

| 存储过程 | 功能 |
|----------|------|
| `MES_人员工时记录_开始` | 装配人员开始加工记录 |
| `MES_人员工时记录_结束` | 装配人员结束加工：含白班/加班/休息日完整计算，生成报工记录和加班记录 |
| `MES_人员工时记录_检查是否存在` | 检查是否有未结束的开始记录 |
| `MES_人员工时记录_获取进行中任务` | 按用户ID获取进行中的装配任务 |

#### 质量管理

| 存储过程 | 功能 |
|----------|------|
| `MES_QulityInspection_ReceiveCheck` | **收检处理**：事务性写入质检记录，总检测数=计划生产数时自动完成任务，收检合格后触发下一工序可执行 |
| `MES_QulityInspection_FinalCheck` | 终检记录 |
| `MES_QulityInspection_CheckItemData_Save` | **检测数据保存**：事务性三级写入(质检主表→零件表→检测数据表)，支持批量零件检测 |
| `MES_QulityInspection_FirstCheckRecords` | 首检记录查询 |
| `MES_QulityInspection_RoundCheck` | 巡检操作 |
| `MES_QulityInspection_ProcessCheck` | 序检操作 |
| `MES_QulityInspection_GetItemStandard` | 获取检测标准 |
| `MES_QulityInspection_GetInspectionDetails` | 获取检测明细数据 |
| `MES_QulityInspection_GetInspectionParts` | 获取检测零件列表 |
| `MES_QulityInspection_NGPart_Add` | 不合格品处理流程发起 |
| `MES_QulityInspection_NGPart_FlowNode_Add` | 审批节点新增 |
| `MES_QulityInspection_NGPart_FlowNode_Update` | 审批节点完成 |
| `MES_QulityInspection_NGPart_Finish` | 不合格品处理流程结束 |

#### 设备管理与实时监控

| 存储过程 | 功能 |
|----------|------|
| `MES_DeviceAdmin_BaseInfo` | 设备台账新增 |
| `MES_DeviceAdmin_RepairRecords_Add/Query` | 维修记录增查 |
| `MES_DeviceAdmin_DeviceProductState_Update` | 设备生产状态更新(含历史记录) |
| `Event_CaChe_Var_Update` | 设备变量实时缓存更新(含循环时间触发工时记录) |
| `Event_Device_Insert_CurrInfo` | 设备数据历史写入 |
| `Event_Device_Update_CurrInfo` | 设备变量当前值更新 |
| `Event_StationStatus_Insert/Update` | 工位状态记录/更新 |
| `Event_Alarm_Start/End` | 报警开始/结束处理(含缓存→历史迁移) |
| `Event_Log_Request/Respond` | API请求/响应日志 |

#### 登录与用户

| 存储过程 | 功能 |
|----------|------|
| `MES_登录_工号密码验证` | 用户登录验证(查询基础表_用户角色) |
| `MES_登录_工位与名称_查询` | 获取工位列表(来自View_基础数据_工位) |
| `MES_登录_班次信息` | 获取班次数据字典 |
| `Prog_MES_GetDictionar_ByType` | 按类别获取数据字典 |

#### 系统工具

| 存储过程 | 功能 |
|----------|------|
| `___DB_BAK` | 数据库全量备份到 C:\_MW\数据库\ |
| `_日志_增加` | 用户操作日志插入 |
| `p_PopFirstWord` | 逗号分隔字符串解析工具函数 |

### 4.6 外部系统集成 (SAP Business One)

```
跨数据库查询链路:
├── SAP.SBO_YL.dbo.UBT_OITM                    → 物料主数据(编码/名称/品牌)
├── SAP.SBO_YL.dbo.UBT_WW_MES_OPORandOPCH      → 采购订单(供应商/含税单价/材质)
├── SAP.SBO_YL.dbo.OWOR                         → 生产订单(ERP侧)
├── SAP.SBO_YL.dbo.OWR1                         → 生产订单行
└── SAP.SBO_YL.dbo.OWR4                         → 生产订单阶段
```

### 4.7 核心数据流

```
ERP(SAP)订单下发
    │
    ▼
MES_接口_生产计划 (订单同步)
    │
    ▼
排产 (MES_OrderPlanned_SingleTaskPlanned)
    │  └── 任务拆分/工位指派/计划时间设定
    ▼
MES_接口_生产计划_生产任务 (工序级任务)
    │
    ├── 收料 → 任务状态: 0(待执行) → 1(可执行)
    │
    ├── 开始加工 → 任务状态: 1 → 2(已开工)
    │       │
    │       ├── 暂停/恢复循环 (关联开始记录 ↔ 关联暂停记录)
    │       │
    │       └── 报工 → 计算工时(总时长-暂停总时长)
    │             │
    │             ├── 生成报工记录(生产工时+辅助工时)
    │             ├── 判断加班(白班/夜班拆分/休息日)
    │             └── 任务状态: 2 → 4(已完成)
    │
    ├── 首检 → 巡检 → 序检 (质检环节)
    │
    ├── 收检 (MES_QulityInspection_ReceiveCheck)
    │       │  合格数触发下一工序可执行
    │       └── 任务状态 → 4(已完成)
    │
    └── 终检 → 完工判定
```

---

## 5. 程序问题分析报告

### 🔴 严重问题 (Critical)

#### 问题 1：SQL注入漏洞 — 60+个存储过程

**位置**: `script.sql` 中几乎所有动态SQL存储过程

所有使用 `sp_executesql` 拼接 `@whereStr` 的存储过程都存在SQL注入风险。用户输入直接通过字符串拼接插入SQL语句：

```sql
-- MES_OrderPlanned_Query (line 3303)
if(@合同号<>'') set @selectStrWhere = @selectStrWhere 
    + ' and [合同号] like ''%'+@合同号+'%'''
```

**受影响的存储过程 (部分列表)**:
- `MES_OrderPlanned_Query` / `MES_OrderPlanned_Queryzp`
- `MES_ProductAdmin_Query` / `MES_ProductAdmin_GetRptRecords`
- `MES_ProductCenter_OptRecords`
- `MES_QulityInspection_CheckRecord_Query`
- `MES_QulityInspection_FirstCheckRecords`
- `MES_QulityInspection_MeasuringTool`
- `MES_QulityInspection_GetTask`
- `MES_ProductCenter_GetTask` / `MES_ProductCenter_GetTask_zp`

**修复建议**: 统一使用参数化查询模式：
```sql
SET @SQL = @SQL + ' AND [合同号] LIKE ''%'' + @合同号 + ''%'''
EXEC sp_executesql @SQL, N'@合同号 nvarchar(50)', @合同号 = @合同号
```

---

#### 问题 2：明文密码存储于Cookie

**位置**: `src/views/login/index.vue` line 243-246

```javascript
setCookie(username, password, checked) {
  Cookie.set('username', username, { expires: 7 })
  Cookie.set('password', password, { expires: 7 })  // ❌ 明文密码存7天
  Cookie.set('checked', checked, { expires: 7 })
}
```

密码以明文存储在客户端Cookie中持续7天，可被XSS攻击轻易窃取。

---

#### 问题 3：Axios已知CVE漏洞版本

**位置**: `package.json` line 17

```json
"axios": "^0.21.4"
```

axios 0.21.4 存在已知安全漏洞 CVE-2021-3749 (ReDoS攻击)，当前最新版本为 1.7.x。

---

#### 问题 4：开发代理绕过HTTPS证书验证 + 死代码配置

**位置**: `config/index.js` line 18-19, 37-38

```javascript
proxyTable: {
  '/api/b1s': {
    target: 'https://192.168.2.90:50000',  // SAP B1
    secure: false,  // ❌ 跳过SSL证书验证 — 中间人攻击风险
  },
  '/openapi/v1': {
    target: 'http://192.168.2.90:8082',
    pathRewrite: {
      '^/api/tm': '/openapi/v1'   // ❌ 死代码：/openapi/v1 永远不会匹配 /api/tm
    }
  }
}
```

第二个代理的 pathRewrite 规则永远无法触发。

---

#### 问题 5：登录密码拼在URL参数中

**位置**: `src/api/login.js` line 13

```javascript
param: `用户名=${username}&密码=${password}`
```

密码作为URL查询参数传输，会被代理服务器日志、浏览器历史记录记录。

---

### 🟠 高优先级问题 (High)

#### 问题 6：修改密码验证器Bug (复制粘贴错误)

**位置**: `src/views/login/index.vue` line 119-130

```javascript
const validateValue = (rules, value, callback) => {
  // ❌ 三个条件都检查同一个字段 — 明显的复制粘贴bug
  if (typeof (this.form.againPassword) === 'string' || 
      typeof (this.form.againPassword) === 'string' || 
      typeof (this.form.againPassword) === 'string') {
    callback(new Error('请输入英文字母组合'))  // ❌ 字符串类型反而报错？
  }
  // ❌ 下面代码永远不会执行：已callback但未return
  if (this.form.newPassword !== this.form.againPassword) {
    callback(new Error('两次输入密码不同'))
  }
}
```

该验证器应用于所有4个密码字段，导致密码修改功能**完全无法正常工作**。

---

#### 问题 7：Vuex Action中 this.$router 为undefined

**位置**: `src/store/modules/user.js` line 44-45

```javascript
Login({ commit }, userInfo) {
  login(username, userInfo.password).then(response => {
    if (data.length === 0 || data.result === '0') {
      Message.error('账号或密码错误，请重新登录')
      this.$router.push({ path: '/login' })  // ❌ Vuex action中this不是Vue组件实例
    }
```

在Vuex action中使用 `this.$router` 会抛出 `TypeError: Cannot read properties of undefined`。

---

#### 问题 8：GetInfo 硬编码角色为 'admin'

**位置**: `src/store/modules/user.js` line 83

```javascript
GetInfo({ commit, state }) {
  getInfo(state.token).then(response => {
    commit('SET_ROLES', 'admin')  // ❌ 无视后端返回的真实角色数据
    resolve(response)
  })
}
```

所有登录用户都被授予 `'admin'` 角色。`permission.js` 第13行 `roles.indexOf('admin') >= 0` 对所有用户放行，导致权限控制完全失效。

---

#### 问题 9：登录错误被静默吞掉

**位置**: `src/views/login/index.vue` line 198-200

```javascript
}).catch(() => {
  this.loading = false  // ❌ 无任何错误提示
})
```

网络故障或服务器错误时用户看不到任何反馈。

---

#### 问题 10：Webpack开发服务器强制HTTPS但无有效证书

**位置**: `build/webpack.dev.conf.js` line 31

```javascript
devServer: {
  https: true,  // ❌ 未配置证书 → 浏览器报安全错误
```

本地开发时浏览器会因自签名证书阻止访问。

---

### 🟡 中优先级问题 (Medium)

#### 问题 11：Vue 2 已于 2023年12月 EOL

Vue 2.x 不再接收安全补丁和新功能。建议规划迁移至 Vue 3。

#### 问题 12：生产环境暴露 Source Map

**位置**: `config/index.js` line 110

```javascript
devtool: 'source-map',  // 生产环境暴露完整源码
```

用户可通过浏览器开发者工具查看未压缩的完整源码。

#### 问题 13：`__Reset_ProductOrder` 存储过程执行 TRUNCATE

**位置**: `script.sql` line 2288-2289

```sql
truncate table YL_加工中心_操作记录表
truncate table YL_加工中心_报工记录
```

当 `@optType=1` 时无条件清空全部操作记录和报工记录，误调用将导致数据永久丢失且无法回滚。

#### 问题 14：数据库日志文件初始263GB

**位置**: `script.sql` line 9

```sql
LOG ON 
(NAME = N'YL_MESDB_log', FILENAME = N'D:\sqlDataLog\YL_MESDB_log.ldf', 
 SIZE = 269688832KB)  -- 约263GB
```

恢复模式为FULL但只有全量备份，没有事务日志备份，日志文件会持续增长直至磁盘占满。

#### 问题 15：依赖项问题

**位置**: `package.json` line 26

```json
"install": "^0.13.0"  // ❌ "install"是一个真实的npm包但不应作为项目依赖
```

这是脚手架残留或误操作引入。

#### 问题 16：关键ESLint规则被关闭

**位置**: `.eslintrc.js` line 83, 153

```javascript
'no-console': 'off',
'no-unused-vars': ['off', { ... }]
```

大量 `console.log` 残留于生产代码，未使用变量不提示。

---

### 🟢 低优先级/建议 (Low)

| # | 问题 | 位置 |
|---|------|------|
| 17 | `vue$` alias 指向 `vue.esm.js` 而非 `vue.runtime.esm.js` | `webpack.base.conf.js` line 32 |
| 18 | webpack dev 使用 `cache.type: 'filesystem'` 可能引起缓存过期问题 | `webpack.dev.conf.js` line 24 |
| 19 | `devServer` 配置使用 Webpack 4 风格 (static/publicPath) | `webpack.dev.conf.js` |
| 20 | `CopyWebpackPlugin` v11 API 已弃用 patterns 外层写法 | `webpack.dev.conf.js` line 61 |
| 21 | SCSS loader 使用 Dart Sass 但配置了 `indentedSyntax: true` | `webpack.base.conf.js` line 165 |
| 22 | 登录页用户名变更时清空密码 (可能非预期行为) | `login/index.vue` line 182 |
| 23 | `config/index.js` 第9行 `networkInterfaces['WLAN']` 硬编码，可能在乙太网卡环境出错 | `config/index.js` line 9 |
| 24 | Vue-loader 配置文件为空对象，未配置任何选项 | `build/vue-loader.conf.js` |

---

### 📊 问题汇总统计

| 级别 | 数量 | 影响 |
|------|------|------|
| 🔴 Critical | 5 | 安全漏洞、数据泄露风险 |
| 🟠 High | 5 | 功能Bug、权限失效、运行时错误 |
| 🟡 Medium | 6 | 可维护性、稳定性风险 |
| 🟢 Low | 7 | 代码质量、最佳实践 |
| **总计** | **23** | |

---

### 🔧 优先修复路线图

**第1阶段 (立即)**:
1. 修复所有SQL注入漏洞 → 动态SQL改用参数化查询
2. 移除Cookie明文密码 → 仅存Token
3. 修复 `validateValue` 验证器Bug

**第2阶段 (本周)**:
4. 升级 axios 到 1.7.x
5. 修复 `GetInfo` 硬编码 admin 角色
6. 修复 `this.$router` 在 Vuex 中的调用

**第3阶段 (本月)**:
7. 配置事务日志定期备份策略
8. 修复 webpack 生产环境 source-map 泄露
9. 为 `__Reset_ProductOrder` 添加安全防护（备份确认/权限限制）

**第4阶段 (规划)**:
10. 规划 Vue 3 迁移路线图
11. 清理无用依赖和死代码
12. 恢复 ESLint 关键规则并修复代码

---

> 📅 报告生成日期: 2026-05-18
> 📝 分析范围: 全项目静态代码分析 (前端 + 数据库)
