- Vue 2.7 + Element UI + Webpack 5 前端 - SQL Server 数据库脚本 (script.sql) - 4份技术文档 (技术分析/功能映射/使用说明书/用户操作手册) - 存储过程修复 (fix_生产管理_外协报表_查询.sql)
30 KiB
MES_Manage_View_V20 软件项目技术分析报告
项目名称: MacroinfManage_MES (MES_Manage_View_V20) 版本: v1.1.0 日期: 2026-05-18 作者: MESWORK 描述: 山东元利科技有限公司制造执行系统(MES)管理视图平台
目录
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 | 模块打包 |
| 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 数据库基础配置
数据库名: 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)
计算班次重叠秒数
计算班次重叠秒数(@开始时间 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语句:
-- MES_OrderPlanned_Query (line 3303)
if(@合同号<>'') set @selectStrWhere = @selectStrWhere
+ ' and [合同号] like ''%'+@合同号+'%'''
受影响的存储过程 (部分列表):
MES_OrderPlanned_Query/MES_OrderPlanned_QueryzpMES_ProductAdmin_Query/MES_ProductAdmin_GetRptRecordsMES_ProductCenter_OptRecordsMES_QulityInspection_CheckRecord_QueryMES_QulityInspection_FirstCheckRecordsMES_QulityInspection_MeasuringToolMES_QulityInspection_GetTaskMES_ProductCenter_GetTask/MES_ProductCenter_GetTask_zp
修复建议: 统一使用参数化查询模式:
SET @SQL = @SQL + ' AND [合同号] LIKE ''%'' + @合同号 + ''%'''
EXEC sp_executesql @SQL, N'@合同号 nvarchar(50)', @合同号 = @合同号
问题 2:明文密码存储于Cookie
位置: src/views/login/index.vue line 243-246
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
"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
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
param: `用户名=${username}&密码=${password}`
密码作为URL查询参数传输,会被代理服务器日志、浏览器历史记录记录。
🟠 高优先级问题 (High)
问题 6:修改密码验证器Bug (复制粘贴错误)
位置: src/views/login/index.vue line 119-130
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
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
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
}).catch(() => {
this.loading = false // ❌ 无任何错误提示
})
网络故障或服务器错误时用户看不到任何反馈。
问题 10:Webpack开发服务器强制HTTPS但无有效证书
位置: build/webpack.dev.conf.js line 31
devServer: {
https: true, // ❌ 未配置证书 → 浏览器报安全错误
本地开发时浏览器会因自签名证书阻止访问。
🟡 中优先级问题 (Medium)
问题 11:Vue 2 已于 2023年12月 EOL
Vue 2.x 不再接收安全补丁和新功能。建议规划迁移至 Vue 3。
问题 12:生产环境暴露 Source Map
位置: config/index.js line 110
devtool: 'source-map', // 生产环境暴露完整源码
用户可通过浏览器开发者工具查看未压缩的完整源码。
问题 13:__Reset_ProductOrder 存储过程执行 TRUNCATE
位置: script.sql line 2288-2289
truncate table YL_加工中心_操作记录表
truncate table YL_加工中心_报工记录
当 @optType=1 时无条件清空全部操作记录和报工记录,误调用将导致数据永久丢失且无法回滚。
问题 14:数据库日志文件初始263GB
位置: script.sql line 9
LOG ON
(NAME = N'YL_MESDB_log', FILENAME = N'D:\sqlDataLog\YL_MESDB_log.ldf',
SIZE = 269688832KB) -- 约263GB
恢复模式为FULL但只有全量备份,没有事务日志备份,日志文件会持续增长直至磁盘占满。
问题 15:依赖项问题
位置: package.json line 26
"install": "^0.13.0" // ❌ "install"是一个真实的npm包但不应作为项目依赖
这是脚手架残留或误操作引入。
问题 16:关键ESLint规则被关闭
位置: .eslintrc.js line 83, 153
'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阶段 (立即):
- 修复所有SQL注入漏洞 → 动态SQL改用参数化查询
- 移除Cookie明文密码 → 仅存Token
- 修复
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 📝 分析范围: 全项目静态代码分析 (前端 + 数据库)