# MES 工业互联网平台 — 程序使用说明书

> **项目名称**: MacroinfManage_MES (MES_Manage_View_V20)
> **版本**: v1.1.0
> **适用对象**: 系统管理员、开发工程师、运维人员
> **日期**: 2026-05-18

---

## 目录

- [一、系统概述](#一系统概述)
- [二、环境要求与安装部署](#二环境要求与安装部署)
- [三、项目目录结构](#三项目目录结构)
- [四、配置文件说明](#四配置文件说明)
- [五、系统启动与运行](#五系统启动与运行)
- [六、功能模块操作指南](#六功能模块操作指南)
- [七、数据库维护](#七数据库维护)
- [八、常见问题与故障排除](#八常见问题与故障排除)
- [九、附录](#九附录)

---

## 一、系统概述

### 1.1 系统简介

MES工业互联网平台是一套面向制造企业的生产执行管理系统，覆盖从ERP订单接收、生产排产、车间加工执行、质量检验、工时核算到设备监控的全流程管理。

### 1.2 技术架构一览

| 层级 | 技术 | 说明 |
|------|------|------|
| 前端框架 | Vue 2.7 + Element UI 2.15 | SPA单页应用 |
| 构建工具 | Webpack 5.89 | 模块打包/开发服务器 |
| 后端服务 | ASP.NET (IIS) | 通用处理程序 `MESCommonBase.ashx` |
| 数据库 | SQL Server 2019 | 数据库名 `YL_MESDB` |
| 外部集成 | SAP Business One | ERP数据同步 |
| 设备通信 | MQTT 4.3.7 | 设备实时数据采集 |

### 1.3 系统访问地址

| 环境 | 地址 | 端口 |
|------|------|:---:|
| 开发环境 | `https://127.0.0.1` | 1997 |
| 生产服务器 | `https://192.168.2.92` | 10101 |

---

## 二、环境要求与安装部署

### 2.1 硬件要求

| 组件 | 最低配置 | 推荐配置 |
|------|------|------|
| CPU | 4核心 | 8核心+ |
| 内存 | 8 GB | 16 GB+ |
| 磁盘 | 50 GB可用 | 200 GB SSD |
| 网络 | 千兆局域网 | 千兆局域网 |

### 2.2 软件依赖

| 软件 | 版本要求 | 用途 |
|------|------|------|
| **Node.js** | >= 20.0.0 | 前端开发运行环境 |
| **npm** | >= 9.0.0 | 包管理器 |
| **Git Bash** | 最新版 | Windows下命令行工具(必须安装) |
| **SQL Server** | 2019+ | 数据库服务器 |
| **IIS** | 7.0+ | Web服务器(部署后端) |
| **Chrome/Edge** | 最新版 | 推荐浏览器 |

### 2.3 安装步骤

#### 步骤1：安装 Node.js

```bash
# 下载并安装 Node.js 20.x LTS
# https://nodejs.org/

# 验证安装
node --version   # 应显示 v20.x.x
npm --version    # 应显示 9.x.x 或更高
```

#### 步骤2：安装 Git Bash (Windows)

```bash
# 下载 Git for Windows
# https://git-scm.com/download/win

# 安装时选择 "Git Bash Here" 组件
# 确保 C:\Program Files\Git\bin 已添加到系统 PATH
```

#### 步骤3：安装项目依赖

```bash
# 进入项目目录
cd "c:\Users\meswork764\Desktop\元利\MacroinfManage_MES\MES_Manage_View_V20"

# 安装所有npm依赖
npm install

# 如果遇到网络问题，可先配置镜像源
npm config set registry https://registry.npmmirror.com
npm install
```

#### 步骤4：初始化数据库

```sql
-- 1. 在SQL Server Management Studio中打开 script.sql
-- 2. 修改文件路径以匹配实际环境：
--    数据文件路径: D:\sqlData\YL_MESDB.mdf
--    日志文件路径: D:\sqlDataLog\YL_MESDB_log.ldf

-- 3. 执行脚本创建数据库和所有对象
-- 4. 验证数据库创建成功
USE [YL_MESDB];
SELECT COUNT(*) AS '表数量' FROM sys.tables;
SELECT COUNT(*) AS '存储过程数量' FROM sys.procedures;
```

#### 步骤5：配置后端服务

1. 在IIS中创建应用程序池和站点
2. 指向后端发布目录
3. 确保 `MESCommonBase.ashx` 和 `MESUploadFile.ashx` 可访问
4. 配置数据库连接字符串

---

## 三、项目目录结构

```
MES_Manage_View_V20/
│
├── index.html                 # HTML入口 (加载config.js)
├── package.json               # 项目配置与依赖声明
├── babel.config.js            # Babel转译配置
├── .eslintrc.js               # ESLint代码规范
│
├── static/                    # 静态资源目录
│   ├── config.js              # ⭐ 运行环境配置(服务器地址等)
│   └── jsQR.js                # 二维码解析库
│
├── config/                    # 构建配置
│   ├── index.js               # ⭐ Webpack + 开发服务器配置
│   ├── dev.env.js             # 开发环境变量
│   └── prod.env.js            # 生产环境变量
│
├── build/                     # Webpack构建脚本
│   ├── webpack.base.conf.js   # 公共配置
│   ├── webpack.dev.conf.js    # 开发环境配置
│   ├── webpack.prod.conf.js   # 生产环境配置
│   ├── vue-loader.conf.js     # Vue Loader配置
│   └── utils.js               # 构建工具函数
│
├── src/                       # 源代码目录
│   ├── main.js                # ⭐ 应用入口
│   ├── App.vue                # 根组件
│   ├── permission.js          # ⭐ 路由守卫/权限控制
│   │
│   ├── api/                   # API接口层
│   │   └── login.js           # 登录相关API
│   │
│   ├── router/                # 路由配置
│   │   ├── index.js           # 路由主配置
│   │   ├── getTreeData.js     # 动态菜单树生成
│   │   └── menuComponentModule.js  # 组件懒加载
│   │
│   ├── store/                 # Vuex状态管理
│   │   ├── index.js           # Store入口
│   │   └── modules/           # 状态模块
│   │       ├── app.js         # 应用状态
│   │       ├── user.js        # ⭐ 用户状态(登录/权限)
│   │       ├── login.js       # 登录时间追踪
│   │       ├── permission.js  # 权限路由
│   │       └── tagsView.js    # 标签页
│   │
│   ├── views/                 # ⭐ 业务页面组件
│   │   ├── layout/            # 布局(侧边栏/顶栏/标签页)
│   │   ├── login/             # 登录页
│   │   ├── dashboard/         # 首页看板
│   │   └── [业务模块]/        # 各MES业务模块页面
│   │
│   ├── components/            # 公用组件
│   ├── utils/                 # 工具函数
│   │   ├── auth.js            # Token/Cookie管理
│   │   ├── request.js         # ⭐ Axios实例配置
│   │   └── curd.js            # ⭐ 通用CRUD封装
│   │
│   ├── styles/                # 全局样式
│   ├── icons/                 # SVG图标
│   ├── directive/             # 自定义指令
│   └── vendor/                # 第三方工具
│
├── script.sql                 # ⭐ 数据库完整脚本
├── dist/                      # 构建输出目录 (npm run build 后生成)
└── *.md                       # 项目文档
```

---

## 四、配置文件说明

### 4.1 运行环境配置 `static/config.js`

这是最重要的配置文件，控制前端连接的后端服务器地址。部署时需要修改此文件：

```javascript
window.dt_Config = {
  // ⭐ 后端API地址 (存储过程调用)
  serverAddress: 'https://192.168.2.92:10101/submit/MESCommonBase.ashx',

  // ⭐ 后端基础URL
  baseURL: 'https://192.168.2.92:10101',

  // SAP Business One Service Layer 地址
  baseURLB1: 'https://192.168.2.92:9996/b1s',

  // 其他API地址
  baseURLtm: 'https://192.168.2.92:9996/openapi',

  // 首页路由配置
  constantRouter: {
    path: '主页',
    title: '主页',
    meta: { title: '主页', icon: 'MaterialManagement' },
    alwaysShow: true
  }
}
```

**环境切换说明**:
```javascript
// 生产环境 (服务器)
serverAddress: 'https://192.168.2.92:10101/submit/MESCommonBase.ashx'

// 备用服务器
// serverAddress: 'https://192.168.2.228:10101/submit/MESCommonBase.ashx'

// 本地开发环境
// serverAddress: 'http://127.0.0.1:10101/submit/MESCommonBase.ashx'
```

### 4.2 开发服务器配置 `config/index.js`

```javascript
dev: {
  host: '127.0.0.1',         // 开发服务器地址
  port: 1997,                // ⭐ 开发服务器端口 (如被占用自动+1)
  autoOpenBrowser: true,     // 启动时自动打开浏览器
  proxyTable: {              // API代理配置
    '/api/b1s': {
      target: 'https://192.168.2.90:50000',  // SAP B1 地址
      changeOrigin: true,
      secure: false
    }
  }
}
```

### 4.3 构建输出配置

```javascript
build: {
  assetsRoot: 'dist',        // 构建输出目录
  assetsSubDirectory: 'static',
  assetsPublicPath: '/',     // ⭐ 部署路径 (如非根路径需修改)
  productionSourceMap: false // 生产环境是否生成source map
}
```

---

## 五、系统启动与运行

### 5.1 开发模式启动

```bash
# 进入项目根目录
cd "c:\Users\meswork764\Desktop\元利\MacroinfManage_MES\MES_Manage_View_V20"

# 方式1：npm脚本
npm run dev

# 方式2：直接使用webpack
npm start

# 启动成功后控制台输出：
# Your application is running here: http://127.0.0.1:1997
```

### 5.2 生产构建

```bash
# 构建生产版本
npm run build

# 构建产物在 dist/ 目录下
# 将 dist/ 目录内容部署到IIS站点即可

# 可选：构建并分析包体积
npm run build --report
```

### 5.3 访问系统

1. 打开浏览器访问 `http://127.0.0.1:1997` (开发) 或生产地址
2. 输入工号和密码登录
3. 如有多个角色，选择登录角色
4. 进入系统首页看板

---

## 六、功能模块操作指南

### 6.1 用户登录

| 步骤 | 操作 | 说明 |
|:---:|------|------|
| 1 | 打开系统地址 | 进入登录页面 |
| 2 | 输入用户名/密码 | 单击"登录"按钮 |
| 3 | 选择角色 | 如有多角色，弹出角色选择框；单一角色直接进入 |
| 4 | 进入首页 | 显示有权限的功能模块入口 |

**记住密码**: 勾选"记住账号"，下次自动填充用户名和密码(Cookie存储7天)。

**修改密码**: 点击"修改密码"→ 输入工号/原密码/新密码/确认密码 → 确定。

### 6.2 首页看板

进入系统后显示**九宫格功能入口**，按一级菜单分组展示有权限的功能模块。点击模块图标进入对应功能页面。

### 6.3 生产排产管理

**功能入口**: 首页 → 生产排产

#### 6.3.1 查询待排产任务

| 步骤 | 操作 |
|:---:|------|
| 1 | 进入"排产任务查询"页面 |
| 2 | 选择查询条件(订单号/合同号/物料/工序/时间范围/排产状态/工位) |
| 3 | 点击"查询"按钮 |
| 4 | 查看任务列表(含计划数量/指派对象/任务状态等) |

#### 6.3.2 单任务排产指派

| 步骤 | 操作 |
|:---:|------|
| 1 | 在任务列表中选中一条任务 |
| 2 | 点击"排产"或"指派" |
| 3 | 选择/输入工位、指派数量、计划开始/完成时间 |
| 4 | 填写派工特殊说明(可选) |
| 5 | 点击"保存" |

> ⚠️ **注意事项**: 指派数量**小于**计划数量时，系统自动拆分剩余数量为新任务；**大于**计划数量时会报错。

#### 6.3.3 批量排产确认

选中多条任务 → 点击"批量排产" → 确认执行。

### 6.4 加工中心(生产执行)

**功能入口**: 首页 → 加工中心

#### 6.4.1 查看任务列表

进入后显示分配给当前工位的任务列表：
- **待执行**(任务状态=0): 已排产但未收料
- **可执行**(任务状态=1): 已收料可开工
- **已开工**(任务状态=2): 正在生产中
- **已完成**(任务状态=4): 报工完成

#### 6.4.2 标准生产流程

```
收料 → 可执行 → 开始加工 → [暂停/恢复] → 报工 → 完成
```

| 步骤 | 按钮 | 说明 |
|:---:|------|------|
| 1 | **收料** | 输入收料数量 → 确认。任务变为"可执行" |
| 2 | **开始加工** | 点击后任务变为"已开工"，开始计时 |
| 3 | **暂停** | 生产中断时点击，记录暂停开始时间 |
| 4 | **恢复(开始加工)** | 从暂停恢复，自动计算暂停时长 |
| 5 | **报工** | 输入本次完成数量 → 选择班次 → 确认 |

#### 6.4.3 报工界面说明

| 字段 | 说明 |
|------|------|
| 报工日期 | 自动取当前日期 |
| 报工班次 | 白班(07:45-16:30) / 夜班(16:30-00:40) |
| 报工数量 | 本次完成的合格品数量 |
| 报工说明 | 备注信息 |
| 是否加班 | 如报工时间超过班次时间需勾选 |
| 加班人员 | 逗号分隔多个加班人员姓名 |
| 特殊加班人员 | 非标准工时(如4小时班)的特殊人员 |

> ⚠️ **休息日注意事项**: 休息日/法定休息日选择"加班"会计算加班工时，选择"不加班"记为普通工时。

#### 6.4.4 辅助工序操作

辅助工序(上下料、清理等)使用独立流程：**辅助开始 → 辅助结束**。操作方式同上。

### 6.5 质量管理

**功能入口**: 首页 → 质量管理

#### 6.5.1 质检类型说明

| 类型 | 时机 | 操作人 |
|------|------|------|
| **首检** | 每道工序开始生产时首批零件 | 操作工自检/质检员 |
| **巡检** | 生产过程中定期抽检 | 质检员 |
| **序检** | 工序加工完成后 | 质检员 |
| **收检** | 跨工序交接时 | 接收工序操作工 |
| **终检** | 全部工序完成后最终检验 | 质检员 |

#### 6.5.2 执行收检操作

| 步骤 | 操作 |
|:---:|------|
| 1 | 进入质检任务列表，筛选"收检"类型 |
| 2 | 选中任务，点击"收检" |
| 3 | 输入检验数量、合格数、不合格数 |
| 4 | 填写检测说明 |
| 5 | 点击"保存" |
| 6 | 系统自动判断：合格数>0则下一工序变为"可执行" |

#### 6.5.3 终检操作

| 步骤 | 操作 |
|:---:|------|
| 1 | 进入质检任务列表 |
| 2 | 选中任务，点击"终检" |
| 3 | 输入检测数量、合格数、不合格数、放行数量 |
| 4 | 点击"保存" |

#### 6.5.4 不合格品处理流程

```
发现不合格品 → 发起处理流程 → 填写申请内容/让步放行数量
    → 选择接收人 → 提交
    → 审批人填写处理意见 → 完成节点
    → 结束处理流程
```

#### 6.5.5 检测数据录入(逐项检测)

| 步骤 | 操作 |
|:---:|------|
| 1 | 进入质检任务，点击"检测数据" |
| 2 | 选择检测零件编号 |
| 3 | 逐项录入实测值(系统自动对比上下限判定合格/不合格) |
| 4 | 完成所有检测项目后保存 |
| 5 | 系统自动聚合统计合格数/不合格数 |

### 6.6 工时管理与校验

**功能入口**: 首页 → 工时管理

| 功能 | 说明 |
|------|------|
| **报工记录查询** | 按日期/工位/人员/确认状态筛选报工记录 |
| **报工确认** | 管理员核对报工数据，填入确认工时和说明 |
| **工时汇总** | 按TaskAID/工序汇总生产工时 |
| **装配工时记录** | 管理装配人员的开始/结束时间记录 |

### 6.7 设备管理

**功能入口**: 首页 → 设备管理

| 功能 | 操作 |
|------|------|
| **设备台账** | 增删改查设备基本信息(编号/名称/型号/制造商/车间/责任人) |
| **维修记录** | 记录故障描述/故障时间/维修人员/完成时间 |
| **生产状态** | 查看当前和历史设备生产状态 |
| **设备点检** | 维护设备点检表(保养人员/监督人员/点检类型) |

### 6.8 工艺管理

**功能入口**: 首页 → 工艺管理

| 功能 | 操作 |
|------|------|
| **工序基础数据** | 维护工序名称和编号(增删改查) |
| **标准工艺绑定** | 将工序按顺序绑定到物料编号 |
| **工艺查询** | 按物料编号查看完整工艺路线 |
| **物料查询** | 从SAP查询物料编码和名称 |

### 6.9 图纸管理

**功能入口**: 首页 → 图纸管理

| 功能 | 操作 |
|------|------|
| **上传图纸** | 选择物料 → 上传PDF/图片文件 |
| **在线预览** | 点击图纸名称在线查看(PDF.js预览) |
| **删除图纸** | 删除图纸(记录到删除日志) |

### 6.10 数据字典

**功能入口**: 系统管理 → 数据字典

维护系统全局配置项：

| 数据类别 | 词条示例 |
|------|------|
| 生产操作 | 收料(1), 开始加工(4), 暂停(5), 报工(6), 首检(7) |
| 班次 | 白班, 夜班 |
| 报工确认 | 已确认, 未确认 |
| 质检类型 | 首检自检, 序检自检, 收检, 终检 |

### 6.11 实时监控看板

**功能入口**: 首页 → 生产监控

| 功能 | 说明 |
|------|------|
| **当前生产状态** | 显示机加和装配的当前加工中任务(含人员/工位/零件) |
| **设备变量看板** | 实时显示设备运行参数(电流/电压/功率等) |
| **报警记录** | 查看历史报警和当前活跃报警 |

---

## 七、数据库维护

### 7.1 数据库备份

```sql
-- 执行全量备份存储过程
EXEC [dbo].[___DB_BAK]

-- 备份文件位置：C:\_MW\数据库\YL_MESDB_yyyy_MM_dd__HH_mm_ss_fff.bak
```

**建议**: 每日定时执行全量备份 + 每小时事务日志备份。

### 7.2 日志文件管理

```sql
-- 查看日志文件大小
EXEC sp_helpdb 'YL_MESDB'

-- 收缩日志文件(谨慎操作)
USE [YL_MESDB]
DBCC SHRINKFILE (N'YL_MESDB_log', 10240)  -- 收缩到10GB
```

### 7.3 重置排产数据

```sql
-- 重置指定订单的排产数据(保留操作记录)
EXEC [dbo].[__Reset_ProductOrder] @订单编号=10001, @optType=0

-- ⚠️ 重置全部数据并清空操作记录(危险操作!)
EXEC [dbo].[__Reset_ProductOrder] @订单编号=-1, @optType=1
```

> ⚠️ **警告**: `@optType=1` 会 **TRUNCATE** 操作记录表和报工记录表，数据不可恢复！

### 7.4 数据库结构更新

修改 `script.sql` 后重新执行或使用增量脚本：

```sql
-- 逐步执行新增/修改部分(跳过已存在的对象)
-- 注意：script.sql 中的 CREATE 语句需要改为 ALTER 或先 DROP 再 CREATE
```

---

## 八、常见问题与故障排除

### 8.1 安装与启动问题

| 问题 | 原因 | 解决方法 |
|------|------|------|
| `npm install` 失败 | 网络问题或node版本过低 | 1. 切换镜像源 `npm config set registry https://registry.npmmirror.com` 2. 确认 Node >= 20.0.0 |
| `npm run dev` 报错 | 依赖未安装或端口被占用 | 1. 重新执行 `npm install` 2. 修改 `config/index.js` 中端口 |
| 浏览器显示"无法访问" | dev server使用HTTPS但无证书 | Chrome地址栏输入 `thisisunsafe` 跳过警告，或修改 `webpack.dev.conf.js` 中 `https: false` |
| `module not found` 错误 | Webpack 5 fallback配置缺失 | 检查 `webpack.base.conf.js` 中 `resolve.fallback` 配置 |

### 8.2 登录问题

| 问题 | 原因 | 解决方法 |
|------|------|------|
| 登录提示"账号或密码错误" | 凭证错误或后端不可达 | 1. 检查用户名密码 2. 确认 `static/config.js` 中 serverAddress 正确 |
| 登录后页面空白 | Token过期或权限数据异常 | 清除浏览器Cookie后重新登录 |
| 忘记密码 | - | 联系管理员重置，当前版本不支持自助找回密码 |

### 8.3 功能操作问题

| 问题 | 原因 | 解决方法 |
|------|------|------|
| 点"开始加工"无反应 | 任务状态不是"可执行" | 先执行"收料"操作，使任务变为可执行状态 |
| 报工数量超过计划数 | 累计完成+不合格数超过指派数 | 减少本次报工数量，或先处理不合格品 |
| 质检合格后下序仍不可执行 | 拆分内码不匹配或任务状态未更新 | 检查 `MES_接口_生产计划_生产任务` 表数据 |
| 修改密码失败 | 验证器Bug(known issue) | 联系管理员在数据库中直接修改密码 |

### 8.4 数据库问题

| 问题 | 原因 | 解决方法 |
|------|------|------|
| 查询越来越慢 | 缺少索引或统计信息过期 | 更新统计信息: `EXEC sp_updatestats` |
| 日志文件过大 | FULL恢复模式无日志备份 | 1. 切换为SIMPLE模式 2. 或配置日志备份作业 |
| 外键约束错误 | 数据不一致 | 检查 `FK_MES_接口_生产计划_生产任务_MES_接口_生产计划` 等外键 |

### 8.5 浏览器兼容性

| 浏览器 | 支持情况 |
|------|:---:|
| Chrome 90+ | ✅ 推荐 |
| Edge 90+ | ✅ 推荐 |
| Firefox 90+ | ✅ 兼容 |
| Safari 14+ | ⚠️ 部分兼容 |
| IE 11 | ❌ 不支持 (browserslist 已排除) |

---

## 九、附录

### 9.1 状态码参考

**任务状态**:
| 状态码 | 含义 | 说明 |
|:---:|------|------|
| 0 | 待执行 | 已排产但未收料 |
| 1 | 可执行 | 已收料可开工 |
| 2 | 已开工 | 正在加工中 |
| 4 | 已完成 | 报工完成或终检完成 |

**加工状态**:
| 状态码 | 含义 |
|:---:|------|
| 2 | 辅助开始 |
| 3 | 辅助结束 |
| 4 | 开始加工 |
| 5 | 暂停 |
| 6 | 报工 |

**设备状态**:
| 状态码 | 含义 |
|:---:|------|
| -1 | 关机 |
| 0 | 待机 |
| 1 | 工作 |
| 2 | 报警 |
| 3 | 暂停 |

**质检结果**:
| 值 | 含义 |
|:---:|------|
| 1 | 合格 |
| 0 | 不合格 |

### 9.2 API通信协议

前端与后端通信采用统一的JSON格式：

```javascript
// 请求格式
{
  "type": "1",              // 1=查询, 2=增删改, 7=批量JSON
  "name": "存储过程名称",
  "param": "[{\"name\":\"参数名\",\"value\":\"参数值\",\"type\":\"string\",\"output\":\"0\"}]",
  "pageSize": 20,           // 分页大小(可选)
  "pageList": 1,            // 页码(可选)
  "UserID": "当前用户ID",
  "UserName": "当前用户名",
  "ModularID": "当前路由path"
}

// 响应格式
{
  "data": [ ... ],          // 查询结果数组
  "total": 100,             // 总记录数
  "result": "1"             // 1=成功, 0=失败
}
```

### 9.3 快捷键

| 快捷键 | 功能 |
|------|------|
| `Enter` | 登录页面提交登录 |
| `Ctrl + F5` | 强制刷新页面 |

### 9.4 日志查看

| 日志类型 | 位置 |
|------|------|
| 用户操作日志 | 数据库表 `_日志` |
| API请求日志 | 数据库表 `记录_日志_项目运行日志` |
| 浏览器控制台 | F12 → Console |
| 开发服务器日志 | 终端控制台输出 |

### 9.5 联系与支持

- **项目维护**: MESWORK
- **数据库文档**: 见 `script.sql` (完整DDL)
- **技术分析**: 见 `MES_技术分析报告.md`
- **功能映射**: 见 `MES_功能列表_页面_存储过程映射.md`

---

> 📅 文档生成日期: 2026-05-18
> 📝 版本: v1.0
> 🔄 最后更新: 2026-05-18
