# 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 > 📝 分析范围: 全项目静态代码分析 (前端 + 数据库)