Add HL MES manager with AI assistant service

This commit is contained in:
2026-05-25 18:28:10 +08:00
commit 35f11c095d
881 changed files with 172675 additions and 0 deletions

15
.gitignore vendored Normal file
View File

@@ -0,0 +1,15 @@
.env
*.log
debug.log
node_modules/
dist/
.idea/
.vscode/
.cursor/
package-lock.json
npm-debug.log*
yarn-debug.log*
yarn-error.log*
*.stackdump
dist.zip
~$*

View File

@@ -0,0 +1,7 @@
PORT=8787
MES_BASE_URL=http://127.0.0.1:10100
DEEPSEEK_API_KEY=replace-with-your-key
DEEPSEEK_MODEL=deepseek-v4-flash
DEEPSEEK_BASE_URL=https://api.deepseek.com
MES_AI_ALLOW_WRITE=0

2
ai-mcp-service/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
.env
*.log

View File

@@ -0,0 +1,93 @@
[
{
"keywords": ["系统日志", "操作日志", "审计日志", "日志导出"],
"module": "基础数据",
"page": "报警日志/系统日志",
"paths": [
"src/views/BasicData/WorkStationAlarmLog/index.vue",
"src/views/BasicData/SystemAlarmLog/index.vue"
],
"actions": ["查询", "导出"],
"procedures": [
"合力_系统日志_查询",
"报警工位记录表_查询"
],
"answer": "系统日志相关功能在基础数据模块下,项目中存在 WorkStationAlarmLog 和 SystemAlarmLog 两类页面,均带导出按钮。用户询问系统日志时,优先引导其打开基础数据下的日志页面,而不是泛泛询问系统外日志类型。"
},
{
"keywords": ["报警日志", "设备报警", "报警导出", "报警日志图表"],
"module": "设备运行分析/基础数据",
"page": "设备报警统计、报警日志图表、报警日志",
"paths": [
"src/views/EquipmentOperationAnalysis/EquipmentAlarmStatistics/index.vue",
"src/views/EquipmentOperationAnalysis/EquipmentAlarmLogEcharts/index.vue",
"src/views/BasicData/SystemAlarmLog/index.vue"
],
"actions": ["查询", "统计", "导出"],
"procedures": [
"测量数据工位报警全部视图_查询新",
"报警工位记录表_查询"
],
"answer": "报警相关问题优先定位到设备运行分析中的设备报警统计/报警日志图表,或基础数据中的报警日志。"
},
{
"keywords": ["过站", "过站日志", "过站信息", "在线状态"],
"module": "质量保障",
"page": "过站信息查询",
"paths": [
"src/views/QualityAssurance/InquiryTransitInformation/index.vue"
],
"actions": ["查询", "导出"],
"procedures": [
"质量数据查询_测量数据发动机在线状态_报表_NEW新"
],
"answer": "过站记录在质量保障 > 过站信息查询中处理。"
},
{
"keywords": ["扫码", "扫码记录", "条码", "二维码"],
"module": "质量保障",
"page": "扫码记录查询",
"paths": [
"src/views/QualityAssurance/BarCodeDataSearch/index.vue"
],
"actions": ["查询", "导出", "修改码值"],
"procedures": [
"合力_扫码记录_查询分页",
"合力_扫码记录_修改码值"
],
"answer": "扫码记录在质量保障 > 扫码记录查询中处理。"
},
{
"keywords": ["点检", "点检记录", "设备点检", "点检导出"],
"module": "设备运行分析/质量保障",
"page": "点检记录、设备点检质量查询",
"paths": [
"src/views/EquipmentOperationAnalysis/SpotCheckRecord/index.vue",
"src/views/QualityAssurance/EquipmentMaintenance/index.vue"
],
"actions": ["日点检", "周点检", "月点检", "季点检", "年点检", "导出"],
"procedures": [
"点检日期导出_查询数据",
"点检日期周导出_查询数据",
"点检日期月导出_查询数据",
"点检日期季导出_查询数据",
"点检日期年导出_查询数据"
],
"answer": "点检记录优先在设备运行分析 > 点检记录中处理,也可在质量保障 > 设备点检质量查询中查看质量相关点检。"
},
{
"keywords": ["质量数据", "质量追溯", "装配质量", "总成号"],
"module": "质量保障/统计分析",
"page": "装配质量数据查询、质量数据查询、SPC 分析",
"paths": [
"src/views/QualityAssurance/AssemblyQualitydataQuery/index.vue",
"src/views/SearchData/QualityDatasearch/index.vue",
"src/views/SearchData/SPC_Analysis/index.vue"
],
"actions": ["查询", "导出", "SPC"],
"procedures": [
"质量数据查询_综合查询新"
],
"answer": "质量数据优先在质量保障 > 装配质量数据查询中查看,统计分析类问题进入 SearchData 的质量数据或 SPC 页面。"
}
]

View File

@@ -0,0 +1,80 @@
{
"system": "HL_MES_manager",
"description": "合力差速器智能产线 MES 管理端功能目录",
"frontend": "前端源码/HL_MES_manager",
"backend": "MES_Manage_standard",
"mainEndpoint": "/submit/MESCommonBase.ashx",
"modules": [
{
"name": "登录与权限",
"paths": ["src/views/login/index.vue", "src/permission.js", "src/router/getRouter.js"],
"features": ["用户登录", "密码修改", "角色菜单加载", "动态路由", "Cookie 登录态"]
},
{
"name": "基础数据",
"paths": ["src/views/BasicData"],
"features": ["人员管理", "角色维护", "菜单管理", "用户权限", "班次管理", "工厂日历", "设备人员绑定", "设备能力维护", "物料维护", "工位工序维护", "零件数量维护", "报警日志", "项目展示"]
},
{
"name": "基础变量维护",
"paths": ["src/views/BasicDataMaintenance"],
"features": ["基础变量维护", "基础变量查询", "报警变量维护", "站点信息维护", "变量设备类型", "Excel 导入"]
},
{
"name": "工艺管理",
"paths": ["src/views/ProcessManagement"],
"features": ["工步内容维护", "工艺图片维护", "物料校验维护", "BOM 发动机管理", "BOM 清单比对", "接口模块维护", "监控数据", "PDF 卡片维护", "分流缓存", "仓位维护", "标签语言维护", "Andon 配置"]
},
{
"name": "工艺参数维护",
"paths": ["src/views/ProcessParameterMaintenance"],
"features": ["拧紧位置维护", "测量范围维护", "工艺节拍维护", "线体验证维护"]
},
{
"name": "生产计划",
"paths": ["src/views/WorkOrderManagement"],
"features": ["生产计划下发", "Excel 计划导入", "排程状态变更"]
},
{
"name": "质量保障",
"paths": ["src/views/QualityAssurance"],
"features": ["装配质量数据查询", "过站信息查询", "扫码记录查询", "物料数据查询", "巡检数据查询", "物料消耗统计", "线体项目查询", "线体质量查询", "生产计划完成情况", "设备点检质量查询"]
},
{
"name": "统计分析",
"paths": ["src/views/SearchData", "src/api/SPCanalysis"],
"features": ["SPC 分析", "质量数据查询", "排列图", "直方图", "正态分布", "XR 控制图", "XS 控制图", "样本趋势图", "过程能力分析", "OEE 查询", "OEE 趋势", "JPH 趋势", "FTT 趋势", "报警分析", "故障停工管理"]
},
{
"name": "设备运行分析",
"paths": ["src/views/EquipmentOperationAnalysis"],
"features": ["设备实时状态", "每日设备统计", "设备报警统计", "报警日志图表", "设备基础信息维护", "设备维修计划", "当前维修计划", "维修记录管理", "日常点检信息维护", "日/周/月/季/年点检记录"]
},
{
"name": "配方管理",
"paths": ["src/views/RecipeManagement"],
"features": ["配方维护", "新版配方维护", "配方基础数据", "电气元件参数", "物料厂家管理", "物料厂家查询", "Excel 导入"]
},
{
"name": "Andon 系统",
"paths": ["src/views/AndonSystem"],
"features": ["设备 Andon", "设备 Andon 统计", "物料 Andon", "物料 Andon 统计", "质量 Andon", "质量 Andon 统计"]
},
{
"name": "采购管理",
"paths": ["src/views/PurchasingManagement"],
"features": ["采购订单", "采购件查询", "供应商管理"]
}
],
"integration": {
"mqtt": {
"subscriptionTopic": "MES/InstantMessaging/PF25/",
"publishTopic": "MesPrint",
"usage": ["即时消息", "打印消息"]
},
"plc": {
"usage": ["OP010 上线", "自动工位质量保存", "OPA 提前上料", "RFID 托盘/总成信息交互"],
"signals": ["DBX500.1 到位", "DBX500.3 申请上线", "DBX587.0 允许 MES 保存", "DBX11.3 MES 保存完成", "DBB750 质量数据区"]
}
}
}

View File

@@ -0,0 +1,340 @@
# 数据库知识库
数据库主库配置为 MESBasicDB_HL。当前知识库从项目 Excel 资料和前端接口调用名中整理数据库对象线索。
## Excel 资料
### 数据库结构.xlsx
路径MesProject20250822\数据库结构.xlsx
状态ok
工作表:
- 测量数据合格索引25 行32 列字段示例Id_tagCF、工厂、工作中心、TagID_CF、EngineTypeID、EngineID、EngineType、TagValue1、TagValue2、TagValue3、TagValue4、TagValue5
- 测量数据合格48 行23 列字段示例Id、Id_tagCF、EngineTypeID、EngineID、TagID、TagValue、IsOK、IsGoodBad、测量位置、测量项目、工位号、理论值
- 测量数据发动机在线状态6 行35 列字段示例ID、工厂、工作中心、工位号、订单号、机型代码、机型、发动机号、托盘编号、操作者工号、班次代码、到达时间
- 测量数据工位报警全部8 行20 列字段示例ID、AlarmID、TagID、TagTypeID、OpName、TagValue、MsgNr、State、alarmStartTime、alarmEndTime、Comment、Username
- MES_装配数据_零部件追溯26 行66 列字段示例ID、追溯代码、订单号、SAP物料号、发动机型号、发动机型号代码、发动机机型、发动机数量、厂牌编号起始号、客户名称、投料日期、文件编号
### MES基础数据.xlsx
路径MesProject20250822\MES基础数据.xlsx
状态ok
工作表:
- 基本变量_JEE87 行26 列字段示例TagID、TagName、工位号、数据来源、IP、TagTypeID、TagLong、DbName、变量类型、变量地址、地址、演示偏移
- MES_计划BOM_工位与名称84 行64 列字段示例工位代码、工位号、指南工位号、机床类型、工位名称、线体类型、二维码扫描枪、固定条形码扫描枪、手持条形码扫描枪、PC、工控机名称、工控机IP
- MES_基本数据_测量范围225 行7 列字段示例数值代码、TagID、理论值、值上限、值下限、发动机型号代码、是否启用、1、70100501、110.00、112.23、108.25
- 报警变量15 行23 列字段示例X、700、701、702、703、704、705、706、707、708、709、710
- MES_基本变量原始数据337 行32 列字段示例TagID、TagName、工位号、数据来源、IP、TagTypeID、TagLong、DbName、变量类型、变量地址、变量其它、演示偏移
- MES_机床报警33 行32 列字段示例TagID、TagName、工位号、数据来源、IP、TagTypeID、TagLong、DbName、变量类型、变量地址、变量其它、演示偏移
- MES_基本变量_报警报文30 行6 列字段示例NR、MSGVAR、MSGBIT、TypeName、TEXT1、TEXT2、101005010、10100501、0、1、[000] =OP1005 + 升降机 电机过流 故障、OP1005
- Sheet385 行1 列字段示例TagTypeID、2、2、2、2
### 基本变量.xlsx
路径MesProject20250822\基本变量.xlsx
状态ok
工作表:
- Sheet1未知 行,未知 列;字段示例:
## 从接口调用推断的数据库/过程对象关键词
- .点检表类型
- AAA临工看板_主看板_查询数据
- ANDON_ANDON信息_备份_故障Andon统计综合查询
- ANDON_ANDON信息_备份_故障Andon综合查询_分页
- ANDON_ANDON信息_备份_故障Andon综合查询新
- ANDON_ANDON信息_备份_物料Andon统计综合查询
- ANDON_ANDON信息_备份_物料Andon综合查询_分页
- ANDON_ANDON信息_备份_物料Andon综合查询新
- ANDON_ANDON信息_备份_质量Andon统计综合查询
- ANDON_ANDON信息_备份_质量Andon综合查询_分页
- ANDON_ANDON信息_备份_质量Andon综合查询新
- ANDON_类型_查询
- ANDON_类型_编号_导入Excel
- ANDON_类型_编号_导入校验
- ANDON_类型_编号_工艺页删除
- ANDON_类型_编号_工艺页增加
- ANDON_类型_编号_工艺页查询
- ANDON_类型_编号_工艺页编辑
- ANDON监控_查询
- LG_临工看板_工艺管理_工艺文件上传
- LG_临工看板_工艺管理_工艺文件删除
- LG_临工看板_工艺管理_工艺文件查询
- MES_OEE计算_查询
- MES_基本变量_启用与监控编辑
- MES_基本变量_基本机型_查询_zdy
- MES_基本变量_字段信息_编辑
- MES_基本变量_报警类型
- MES_基本变量_机型代码_删除数据
- MES_基本变量_机型代码_删除数据_桥壳
- MES_基本变量_机型代码_删除数据_轮毂
- MES_基本变量_机型代码_吨位标志
- MES_基本变量_机型代码_增加数据
- MES_基本变量_机型代码_增加数据_桥壳
- MES_基本变量_机型代码_增加数据_轮毂
- MES_基本变量_机型代码_查询
- MES_基本变量_机型代码_查询数据
- MES_基本变量_机型代码_查询数据_桥壳
- MES_基本变量_机型代码_查询数据_轮毂
- MES_基本变量_机型代码_箱体标志
- MES_基本变量_机型代码_编辑数据
- MES_基本变量_查询数据
- MES_基本变量_查询数据_TagId
- MES_基本变量数据_增加
- MES_基本变量设备类型_删除
- MES_基本变量设备类型_增加
- MES_基本变量设备类型_查询
- MES_基本变量设备类型_编辑
- MES_基本变量设备类型对应表
- MES_基本数据_工位节拍_修改
- MES_基本数据_工位节拍_增加
- MES_基本数据_工位节拍_查询
- MES_工作站_设备状态表
- MES_机加工MES_工位点检任务每周_查询
- MES_机加工MES_工位点检任务每季_查询
- MES_机加工MES_工位点检任务每年_查询
- MES_机加工MES_工位点检任务每日_查询
- MES_机加工MES_工位点检任务每月_查询
- MES_机加工MES_工位零件图号查询_设备监控
- MES_机加工MES_库存管理_入库模块_增加入库信息_修改入库数量
- MES_机加工MES_库存管理_入库模块_更新零件状态
- MES_机加工MES_库存管理_入库模块_零件基础信息查询_根据零件图号
- MES_机加工MES_库存管理_出库模块_出库零件信息_零件出库
- MES_机加工MES_待加工区列表_排序
- MES_机加工MES_待加工零件_查询_设备监控
- MES_机加工MES_新增工位点检任务每周记录_循环执行_编辑
- MES_机加工MES_新增工位点检任务每季记录_循环执行_编辑
- MES_机加工MES_新增工位点检任务每年记录_循环执行_编辑
- MES_机加工MES_新增工位点检任务每日记录_循环执行_编辑
- MES_机加工MES_新增工位点检任务每月记录_循环执行_编辑
- MES_机加工MES_记录零件待加工显示
- MES_机加工MES_记录零件待加工显示_NEW
- MES_机加工MES_设备数据采集_工位状态_查询
- MES_机加工MES_设备数据采集_工位状态_查询_按工位号
- MES_机加工MES_设备数据采集_工作状态_查询
- MES_机加工MES_设备状态查询_初始化
- MES_看板统计_查询
- MES_装配数据_零部件追溯_修改码值
- MES_装配数据_零部件追溯_物料消耗统计_视图_查询
- MES_计划BOM_发动机订单计划_下发查询
- MES_计划BOM_发动机订单计划_未完成计划_查询
- MES_计划BOM_发动机订单计划_查询分页
- MES_计划BOM_发动机订单计划_状态_查询
- MES_计划BOM_发动机订单计划_订单上移
- MES_计划BOM_发动机订单计划_订单下发
- MES_计划BOM_发动机订单计划_订单下发取消
- MES_计划BOM_发动机订单计划_订单下移
- MES_计划BOM_发动机订单计划_订单启用
- MES_计划BOM_发动机订单计划_订单完工_报表
- MES_计划BOM_发动机订单计划_订单完工_报表新
- MES_计划BOM_发动机订单计划_订单完工_查询
- MES_计划BOM_发动机订单计划_订单导入
- MES_计划BOM_发动机订单计划_订单导入校验
- MES_计划BOM_发动机订单计划_订单导出新
- MES_计划BOM_发动机订单计划_订单手动增加
- MES_计划BOM_发动机订单计划_订单禁用
- MES_计划BOM_工位与名称
- MES_计划BOM_工位与名称_查询
- MES_计划BOM_工位与名称_点检_查询
- MES界面显示_模块列表_查询
- MES界面显示_消息滚动_修改
- MES界面显示_消息滚动_修改全部
- MES界面显示_消息滚动_初始化
- MRP_计划订单_组件零件清单_基本件_打回数据
- MRP_计划订单_组件零件清单_基本件_编辑数据
- MRP_计划订单_组件零件清单_基本件_采购_编辑数据
- MRP_计划订单_组件零件清单_编辑数据
- MRP_计划订单_车间打回零件_增加数据
- PDM_三表下达时间_查询数据
- PDM_整改件合并查询_查询数据
- PDM_整改件合并查询_查询机床
- PDM_机床名称
- PDM_机床名称_删除数据
- PDM_机床名称_发货审批_编辑数据
- PDM_机床名称_发货状态_查询数据
- PDM_机床名称_发货状态_编辑数据
- PDM_机床名称_机床状态_修改数据
- PDM_机床名称_机床状态_修改数据_编辑
- PDM_机床名称_查询数据
- PDM_机床名称_查询数据2
- PDM_机床名称_查询数据_查询全部
- PDM_机床名称_查询数据_获取数量和名称
- PDM_机床名称_查询数据_获取数量和名称_根据机床流水号
- PDM_机床名称_查询数据_通过项目流水号
- PDM_机床名称_电气状态_修改数据
- PDM_机床名称_电气调试状态_修改数据
- PDM_机床名称_调试状态_修改数据
- PDM_机床总图_删除数据
- PDM_机床总图_查询数据
- PDM_组件名称_查询数据
- PDM_组件名称_查询数据_新
- PDM_组件名称_查询数据_查询名称
- PDM_组件名称_查询数据_装配
- PDM_装箱单_主机_修改数据
- PDM_装箱单_主机_删除数据
- PDM_装箱单_主机_增加数据
- PDM_装箱单_主机_查询数据
- PDM_装箱单_备件_修改数据
- PDM_装箱单_备件_删除数据
- PDM_装箱单_备件_增加数据
- PDM_装箱单_备件_查询数据
- PDM_装箱单_总单据_修改数据
- PDM_装箱单_总单据_删除数据
- PDM_装箱单_总单据_增加数据
- PDM_装箱单_总单据_查询数据
- PDM_装箱单_机床所属部件_删除数据
- PDM_装箱单_机床所属部件_查询数据
- PDM_装箱单_部件_编辑数据
- PDM_装箱单_随机技术文件_修改数据
- PDM_装箱单_随机技术文件_删除数据
- PDM_装箱单_随机技术文件_增加数据
- PDM_装箱单_随机技术文件_查询数据
- PDM_零件明细表_一键删除
- PDM_零件明细表_加急件_增加
- PDM_零件明细表_基本件_不规范数据查询_gj
- PDM_零件明细表_基本件_临时表_全部删除
- PDM_零件明细表_基本件_临时表_删除
- PDM_零件明细表_基本件_临时表数据查询
- PDM_零件明细表_基本件_删除数据
- PDM_零件明细表_基本件_删除数据_根据组件流水号
- PDM_零件明细表_基本件_大量导入
- PDM_零件明细表_基本件_数据导入保存_删除数据gj
- PDM_零件明细表_基本件_数据导入保存_机床_查询数据gj
- PDM_零件明细表_基本件_数据导入保存_组号_查询数据gj
- PDM_零件明细表_基本件_数据导入保存_编辑整改类型
- PDM_零件明细表_基本件_查询数据
- PDM_零件明细表_基本件_查询数据_综合gj
- PDM_零件明细表_基本件_查询数据_综合gj_数量维护
- PDM_零件明细表_基本件_编辑数据
- PDM_零件明细表_基本件_编辑数据_验证图号
- PDM_零件明细表_基本件_规范数据查询_gj
- PDM_零件明细表_外购件和标准件_不规范数据查询gj
- PDM_零件明细表_外购件和标准件_临时表_全部删除
- PDM_零件明细表_外购件和标准件_临时表_删除
- PDM_零件明细表_外购件和标准件_临时表数据查询
- PDM_零件明细表_外购件和标准件_数据导入保存_删除数据gj
- PDM_零件明细表_外购件和标准件_数据导入保存_更改物料流水号
- PDM_零件明细表_外购件和标准件_数据导入保存_更改物料流水号_验证
- PDM_零件明细表_外购件和标准件_数据导入保存_编辑整改类型
- PDM_零件明细表_外购件和标准件_整改件_不规范数据查询gj
- PDM_零件明细表_外购件和标准件_整改件_规范数据查询_gj
- PDM_零件明细表_外购件和标准件_规范数据查询_gj
- PDM_零件明细表_整改件_不规范数据查询_gj
- PDM_零件明细表_整改件_大量导入
- PDM_零件明细表_整改件_数据关联查询_gj
- PDM_零件明细表_整改件_数据导入保存_组号_查询数据gj
- PDM_零件明细表_整改件_规范数据查询_gj
- PDM_零件明细表_材料_名称_查询数据_gj
- PDM_零件明细表_标准件和外购件_修改数据
- PDM_零件明细表_标准件和外购件_删除数据
- PDM_零件明细表_标准件和外购件_删除数据_根据组件流水号
- PDM_零件明细表_标准件和外购件_大量导入
- PDM_零件明细表_标准件和外购件_查询数据
- PDM_零件明细表_标准件和外购件_查询数据_数量维护
- PDM_零件明细表_标准件和外购件_物料对比
- PDM_零件明细表_物料查询gj
- PDM_零件明细表_物料查询总gj
- PDM_零件明细表_组件流水号_查询数据_根据机床
- PDM_零件明细表_组件流水号_组件数量_修改数据
- PDM_项目名称_查询数据
- PDM_项目名称_查询数据_总计划
- PDM_项目名称_查询数据_成本分析
- PDM_项目名称_查询数据_按时间排序
- PDM_项目名称_查询数据_是否显示
- PDM_项目名称_查询数据_是否显示_初始化
- PDM_项目名称_查询数据_是否显示_更改状态
- PDM_项目名称_综合查询
- PDM_项目名称_采购部采购_查询数据
- PDM_项目管理_零件明细表_标准件和外购件_车间采购_查询数据
- U8_错误信息查询
- _日志_描述表_查询模块描述
- _日志_描述表_查询模块类型
- dbo.人事档案管理_人员名单
- dbo.人事档案管理_基础表_部门
- dbo.基础数据_点检类型名称
- dbo.客户关系管理系统_价值评估_查询数据_MESWORK
- dbo.客户关系管理系统_客户_删除数据_MESWORK
- dbo.库存管理_供货商
- dbo.菜单系统模块_人员与角色
- dbo.车间生产管理工艺_基础表_工艺名称_增加数据
- row.人员编号
- xqs_采购管理_采购部采购_查询物料_分配后_带库存_New20191109
- xqs_采购管理_采购部采购_查询物料_分配后_带库存_创建询价单
- xqs_采购管理_采购部采购_查询物料_分配后_带库存_创建询价单_分页
- xqs_采购管理_采购部采购_查询物料_分配后_采购任务分配
- 三表导入_人员查询
- 三表查询_根据机床组号查询规格型号
- 上料无件
- 下料堵塞
- 不合格区域
- 不通过处理
- 中等故障率
- 交货日期
- 人事档案管理_人员_离职人员查询
- 人事档案管理_人员_离职操作
- 人事档案管理_人员_部门与人员_查询数据_根据部门编号
- 人事档案管理_人员_部门与人员_查询数据_根据部门编号_装配
- 人事档案管理_人员与角色_查询数据_技术员
- 人事档案管理_人员与角色_查询数据_采购员
- 人事档案管理_人员名单
- 人事档案管理_人员名单.考核部门编号=12
- 人事档案管理_人员名单.考核部门编号=人事档案管理_基础表_部门.考核部门编号
- 人事档案管理_人员名单_云上改密码
- 人事档案管理_人员名单_修改数据_MESWORK
- 人事档案管理_人员名单_删除数据_MESWORK
- 人事档案管理_人员名单_增加数据_MESWORK
- 人事档案管理_人员名单_查询数据_根据姓名_MESWORK
- 人事档案管理_人员名单_移动数据_MESWORK
- 人事档案管理_基础表_人员岗位_修改数据
- 人事档案管理_基础表_人员岗位_删除数据
- 人事档案管理_基础表_人员岗位_增加数据
- 人事档案管理_基础表_人员岗位_查询数据
- 人事档案管理_基础表_人员岗位_查询数据_根据岗位名_MESWORK
- 人事档案管理_基础表_外语及熟练程度_查询数据
- 人事档案管理_基础表_学历_查询数据
- 人事档案管理_基础表_岗位状态_查询数据
- 人事档案管理_基础表_所学专业_修改数据
- 人事档案管理_基础表_所学专业_删除数据
- 人事档案管理_基础表_所学专业_增加数据
- 人事档案管理_基础表_所学专业_查询数据
- 人事档案管理_基础表_所学专业_查询数据_根据专业名_MESWORK
- 人事档案管理_基础表_毕业院校_修改数据
- 人事档案管理_基础表_毕业院校_删除数据
- 人事档案管理_基础表_毕业院校_增加数据
- 人事档案管理_基础表_毕业院校_查询数据
- 人事档案管理_基础表_毕业院校_查询数据_根据学校名_MESWORK
- 人事档案管理_基础表_职称_查询数据
- 人事档案管理_离职人员_删除数据
- 人事档案管理_部门关系_修改节点
- 人事档案管理_部门关系_删除节点
- 人事档案管理_部门关系_增加节点
- 人事档案管理_部门关系_查询节点
- 人员名单_查询数据
- 人员管理_图片
- 人员编号
- 仓储管理_入库记录退货_未查看数量
- 仓储管理_入库记录退货_查看
- 仓储管理_入库记录退货_查询
- 低故障率
- 供应商_查询
- 供货商
- 保养周期
- 保养项目
- 停台时间
- 内容占比
- 准结定额工时
- 出库管理_人员查询
- 出库管理_人员查询1
- 出库管理_部门查询
- 创建合同_客户信息查询
- 创建合同_改变执行进度
- 创建合同_机床名称_修改数据
- 创建合同_机床名称_增加数据
- 创建合同_查询执行进度时间
- 创建合同_查询执行进度时间_总
- 初始化二维码_查询
- 制造中心_制造_零件分配_机床编号_查询
- 制造中心_制造_零件分配_组号_查询
- 加工完成时间
- 北汽福田BOM_复制
- 北汽福田_BOM_修改

View File

@@ -0,0 +1,904 @@
# 导出能力知识库
该文档整理前端页面中可导出 Excel/文件/报表的页面、按钮和后端过程。用户提出导出请求时优先参考此文档。
## NO
模块AndonSystem
源码:前端源码\HL_MES_manager\src\views\AndonSystem\equipmentAndonStatistics\index.vue
路由推断:/AndonSystem/equipmentAndonStatistics
相关按钮Excel
导出接口/过程:
- MES_基本变量_机型代码_查询type=11line=166
- 测量数据发动机在线状态_订单号_查询type=11line=182
- MES_计划BOM_工位与名称_查询type=11line=197
- NOtype=line=251
- ANDON_ANDON信息_备份_故障Andon综合查询_分页type=11line=294
- ANDON_ANDON信息_备份_故障Andon统计综合查询type=11line=322
- 测量数据工位报警全部视图_查询type=2001line=350
## AndonSystem/equipmentAndon
模块AndonSystem
源码:前端源码\HL_MES_manager\src\views\AndonSystem\equipmentAndon\index.vue
路由推断:/AndonSystem/equipmentAndon
相关按钮Excel
导出接口/过程:
- MES_基本变量_机型代码_查询type=11line=171
- 测量数据发动机在线状态_订单号_查询type=11line=187
- MES_计划BOM_工位与名称_查询type=11line=202
- ANDON_ANDON信息_备份_故障Andon综合查询_分页type=11line=234
- ANDON_ANDON信息_备份_故障Andon综合查询新type=2001line=259
## NO
模块AndonSystem
源码:前端源码\HL_MES_manager\src\views\AndonSystem\materialAndonStatistics\index.vue
路由推断:/AndonSystem/materialAndonStatistics
相关按钮Excel
导出接口/过程:
- MES_基本变量_机型代码_查询type=11line=166
- 测量数据发动机在线状态_订单号_查询type=11line=182
- MES_计划BOM_工位与名称_查询type=11line=197
- NOtype=line=251
- ANDON_ANDON信息_备份_物料Andon综合查询_分页type=11line=294
- ANDON_ANDON信息_备份_物料Andon统计综合查询type=11line=322
- 测量数据工位报警全部视图_查询type=2001line=350
## AndonSystem/materialAndon
模块AndonSystem
源码:前端源码\HL_MES_manager\src\views\AndonSystem\materialAndon\index.vue
路由推断:/AndonSystem/materialAndon
相关按钮Excel
导出接口/过程:
- MES_基本变量_机型代码_查询type=11line=171
- 测量数据发动机在线状态_订单号_查询type=11line=187
- MES_计划BOM_工位与名称_查询type=11line=202
- ANDON_ANDON信息_备份_物料Andon综合查询_分页type=11line=234
- ANDON_ANDON信息_备份_物料Andon综合查询新type=2001line=259
## NO
模块AndonSystem
源码:前端源码\HL_MES_manager\src\views\AndonSystem\qualityAndonStatistics\index.vue
路由推断:/AndonSystem/qualityAndonStatistics
相关按钮Excel
导出接口/过程:
- MES_基本变量_机型代码_查询type=11line=166
- 测量数据发动机在线状态_订单号_查询type=11line=182
- MES_计划BOM_工位与名称_查询type=11line=197
- NOtype=line=251
- ANDON_ANDON信息_备份_质量Andon综合查询_分页type=11line=294
- ANDON_ANDON信息_备份_质量Andon统计综合查询type=11line=322
- 测量数据工位报警全部视图_查询type=2001line=350
## AndonSystem/qualityAndon
模块AndonSystem
源码:前端源码\HL_MES_manager\src\views\AndonSystem\qualityAndon\index.vue
路由推断:/AndonSystem/qualityAndon
相关按钮Excel
导出接口/过程:
- MES_基本变量_机型代码_查询type=11line=171
- 测量数据发动机在线状态_订单号_查询type=11line=187
- MES_计划BOM_工位与名称_查询type=11line=202
- ANDON_ANDON信息_备份_质量Andon综合查询_分页type=11line=234
- ANDON_ANDON信息_备份_质量Andon综合查询新type=2001line=259
## UploadExcel
模块BasicDataMaintenance
源码:前端源码\HL_MES_manager\src\views\BasicDataMaintenance\AlarmVariableMaintenance\index.vue
路由推断:/BasicDataMaintenance/AlarmVariableMaintenance
相关按钮:查询、复制、报警导入、编辑、取消、确定、导入到数据库
导出接口/过程:
- UploadExceltype=line=170
## UploadExcel
模块BasicDataMaintenance
源码:前端源码\HL_MES_manager\src\views\BasicDataMaintenance\BasicVariableMaintenance\index.vue
路由推断:/BasicDataMaintenance/BasicVariableMaintenance
相关按钮:查询、写入基本变量、写入报警变量、写入质量变量、新增、导入、编辑、取消、确定、导入到数据库
导出接口/过程:
- UploadExceltype=line=116
- Recipe_Machine_Exceltype=12line=465
## UploadExcel
模块BasicDataMaintenance
源码:前端源码\HL_MES_manager\src\views\BasicDataMaintenance\StationInformationMaintenance\index.vue
路由推断:/BasicDataMaintenance/StationInformationMaintenance
相关按钮Excel
导出接口/过程:
- UploadExceltype=line=770
- SELECT [工位号] FROM [dbo].[MES_计划BOM_工位与名称]type=line=908
- SELECT [设备IP],[ID] FROM [dbo].[MES_基本变量设备类型对应表] ORDER BY IDtype=line=928
- 基础数据_工位信息维护_查询type=11line=956
- 基础数据_工位信息维护_导出type=2001line=1043
- 基础数据_工位信息维护_增加type=12line=1190
- 基础数据_工位信息维护_增加type=12line=1415
- 基础数据_工位信息维护_修改type=12line=1505
- 基础数据_工位信息维护_删除type=12line=1531
- 基础数据_工位信息维护_导入校验type=11line=1646
- 基础数据_工位信息维护_导入type=12line=2016
## BasicData/SystemAlarmLog
模块BasicData
源码:前端源码\HL_MES_manager\src\views\BasicData\SystemAlarmLog\index.vue
路由推断:/BasicData/SystemAlarmLog
相关按钮:导出
导出接口/过程:
- MES_计划BOM_工位与名称_查询type=11line=111
- _日志_描述表_查询模块描述type=11line=125
- 报警工位记录表_查询type=11line=151
- 报警工位记录表_查询type=2001line=174
## BasicData/WorkStationAlarmLog
模块BasicData
源码:前端源码\HL_MES_manager\src\views\BasicData\WorkStationAlarmLog\index.vue
路由推断:/BasicData/WorkStationAlarmLog
相关按钮:导出
导出接口/过程:
- MES_计划BOM_工位与名称_查询type=11line=132
- 合力_系统日志_查询type=2001line=156
- _日志_描述表_查询模块描述type=11line=165
- 合力_系统日志_查询type=11line=191
## PASS
模块EquipmentOperationAnalysis
源码:前端源码\HL_MES_manager\src\views\EquipmentOperationAnalysis\EquipmentAlarmStatistics\index.vue
路由推断:/EquipmentOperationAnalysis/EquipmentAlarmStatistics
相关按钮Excel
导出接口/过程:
- MES_基本变量_机型代码_查询type=11line=165
- 测量数据发动机在线状态_订单号_查询type=11line=181
- MES_计划BOM_工位与名称_查询type=11line=196
- PASStype=line=243
- NOtype=line=264
- 测量数据工位报警全部视图_查询_分页type=11line=311
- 测量数据工位报警全部视图_查询报表type=11line=345
- 测量数据工位报警全部视图_查询新type=2001line=385
## EquipmentOperationAnalysis/EverydayDeviceStatistics
模块EquipmentOperationAnalysis
源码:前端源码\HL_MES_manager\src\views\EquipmentOperationAnalysis\EverydayDeviceStatistics\index.vue
路由推断:/EquipmentOperationAnalysis/EverydayDeviceStatistics
相关按钮:导出
导出接口/过程:
- MES_计划BOM_工位与名称_查询type=11line=150
- MES_看板统计_查询type=11line=174
- MES_看板统计_查询type=2001line=202
## EquipmentOperationAnalysis/Maintenancebasicequipmentinformation
模块EquipmentOperationAnalysis
源码:前端源码\HL_MES_manager\src\views\EquipmentOperationAnalysis\Maintenancebasicequipmentinformation\index.vue
路由推断:/EquipmentOperationAnalysis/Maintenancebasicequipmentinformation
相关按钮:导出
导出接口/过程:
- 设备管理_设备类型_查询type=11line=210
- MES_计划BOM_工位与名称_查询type=11line=224
- 设备管理_基础表_设备台账_综合查询type=11line=257
- 设备管理_基础表_设备台账_综合查询type=2001line=284
- 设备管理_基础表_设备台账_增加type=12line=313
- 设备管理_基础表_设备台账_删除type=12line=346
- 设备管理_基础表_设备台账_修改type=12line=390
## EquipmentOperationAnalysis/RoutineCheckInformationMaintenance
模块EquipmentOperationAnalysis
源码:前端源码\HL_MES_manager\src\views\EquipmentOperationAnalysis\RoutineCheckInformationMaintenance\index.vue
路由推断:/EquipmentOperationAnalysis/RoutineCheckInformationMaintenance
相关按钮:导出日点检表
导出接口/过程:
- MES_计划BOM_工位与名称_查询type=11line=308
- 基础数据_设备工位点检表图片_保存图片type=15line=629
## EquipmentOperationAnalysis/SpotCheckRecord
模块EquipmentOperationAnalysis
源码:前端源码\HL_MES_manager\src\views\EquipmentOperationAnalysis\SpotCheckRecord\DayCheck.vue
路由推断:/EquipmentOperationAnalysis/SpotCheckRecord
相关按钮:导出
导出接口/过程:
- MES_计划BOM_工位与名称_点检_查询type=11line=69
- 点检日期_查询数据type=11line=89
- 点检日期导出_查询数据type=2001line=105
- 点检日期_查询数据_表头type=11line=114
## EquipmentOperationAnalysis/SpotCheckRecord
模块EquipmentOperationAnalysis
源码:前端源码\HL_MES_manager\src\views\EquipmentOperationAnalysis\SpotCheckRecord\MoonCheck.vue
路由推断:/EquipmentOperationAnalysis/SpotCheckRecord
相关按钮:导出
导出接口/过程:
- MES_计划BOM_工位与名称_点检_查询type=11line=73
- 点检日期月_查询数据type=11line=93
- 点检日期月导出_查询数据type=2001line=109
- 点检日期_查询数据_表头type=11line=118
## EquipmentOperationAnalysis/SpotCheckRecord
模块EquipmentOperationAnalysis
源码:前端源码\HL_MES_manager\src\views\EquipmentOperationAnalysis\SpotCheckRecord\QuarterCheck.vue
路由推断:/EquipmentOperationAnalysis/SpotCheckRecord
相关按钮:导出
导出接口/过程:
- MES_计划BOM_工位与名称_点检_查询type=11line=73
- 点检日期季_查询数据type=11line=93
- 点检日期季导出_查询数据type=2001line=109
- 点检日期_查询数据_表头type=11line=118
## EquipmentOperationAnalysis/SpotCheckRecord
模块EquipmentOperationAnalysis
源码:前端源码\HL_MES_manager\src\views\EquipmentOperationAnalysis\SpotCheckRecord\WeekCheck.vue
路由推断:/EquipmentOperationAnalysis/SpotCheckRecord
相关按钮:导出
导出接口/过程:
- MES_计划BOM_工位与名称_点检_查询type=11line=75
- 点检日期周_查询数据type=11line=95
- 点检日期周导出_查询数据type=2001line=111
- 点检日期_查询数据_表头type=11line=120
## EquipmentOperationAnalysis/SpotCheckRecord
模块EquipmentOperationAnalysis
源码:前端源码\HL_MES_manager\src\views\EquipmentOperationAnalysis\SpotCheckRecord\YearCheck.vue
路由推断:/EquipmentOperationAnalysis/SpotCheckRecord
相关按钮:导出
导出接口/过程:
- MES_计划BOM_工位与名称_点检_查询type=11line=74
- 点检日期年_查询数据type=11line=94
- 点检日期年导出_查询数据type=2001line=110
- 点检日期_查询数据_表头type=11line=119
## UploadExcel
模块ProcessManagement
源码:前端源码\HL_MES_manager\src\views\ProcessManagement\AndonMaintenance\index.vue
路由推断:/ProcessManagement/AndonMaintenance
相关按钮:查询、添加、导入、修改、删除、取消、确定、导入到数据库
导出接口/过程:
- UploadExceltype=line=187
- ANDON_类型_编号_导入Exceltype=12line=552
## ProcessManagement/BomEngineManagement
模块ProcessManagement
源码:前端源码\HL_MES_manager\src\views\ProcessManagement\BomEngineManagement\BomList.vue
路由推断:/ProcessManagement/BomEngineManagement
相关按钮Excel
导出接口/过程:
- MES_计划BOM_工位与名称_查询type=11line=351
- 北汽福田_BOM_福田零件号_查询type=11line=372
- 北汽福田_BOM_删除type=12line=414
- 北汽福田BOM_复制type=11line=447
- 北汽福田_BOM_修改type=11line=474
- 北汽福田_BOM_增加type=11line=497
- 北汽福田_BOM_零件号查询type=11line=517
- MES_基本变量_机型代码_查询type=11line=532
- 北汽福田_BOM_查询type=11line=580
- 北汽福田_BOM_查询type=2001line=620
## UploadExcel
模块ProcessManagement
源码:前端源码\HL_MES_manager\src\views\ProcessManagement\MaterialVerificationMaintenance\index.vue
路由推断:/ProcessManagement/MaterialVerificationMaintenance
相关按钮:导出、物料导出
导出接口/过程:
- UploadExceltype=line=308
- MES_基本变量_机型代码_查询type=11line=476
- MES_计划BOM_工位与名称_查询type=11line=493
- 电子看板_装配零件_查询type=11line=514
- 电子看板_装配零件_查询type=2001line=532
- 电子看板_装配零件_SPC_增加type=11line=568
- 电子看板_装配零件_SPC_增加type=12line=638
- 电子看板_装配零件_SPC_删除type=12line=664
- 电子看板_装配零件_SPC_修改type=12line=712
- 确认导入物料字典_新增type=11line=747
- 生产计划导入_确认导入前临时表_查询type=11line=773
- 电子看板_装配零件_总物料表_导入校验type=11line=810
- 物料数据_导入Exceltype=12line=905
- 电子看板_装配零件_总物料表_导出新type=2001line=924
## ProcessManagement/ShuntingCacheManagement
模块ProcessManagement
源码:前端源码\HL_MES_manager\src\views\ProcessManagement\ShuntingCacheManagement\index.vue
路由推断:/ProcessManagement/ShuntingCacheManagement
相关按钮:查询计划生产数据、异常删除--> <!--、取消、确定、导入到数据库
导出接口/过程:
- 物料数据_导入Exceltype=12line=898
- 电子看板_装配零件_总物料表_导出新type=2001line=917
## ProcessManagement/StepContentMaintenance
模块ProcessManagement
源码:前端源码\HL_MES_manager\src\views\ProcessManagement\StepContentMaintenance\index.vue
路由推断:/ProcessManagement/StepContentMaintenance
相关按钮:导出
导出接口/过程:
- MES_计划BOM_工位与名称_查询type=11line=321
- MES_基本变量_机型代码_查询type=11line=340
- 电子看板_工序内容_查询_要点理由SQtype=11line=371
- 电子看板_工序内容_查询_要点理由SQtype=2001line=384
- 电子看板_工序内容_增加type=12line=427
- 电子看板_工序内容_增加type=12line=459
- 电子看板_工序内容_修改_要点理由YCtype=12line=517
- 电子看板_工序内容_删除type=12line=543
## select * from 机加工MES_零件图PDF表 where 是否启用 = 1 and name =
模块PurchasingManagement
源码:前端源码\HL_MES_manager\src\views\PurchasingManagement\PurchaseOrder\index.vue
路由推断:/PurchasingManagement/PurchaseOrder
相关按钮:导出
导出接口/过程:
- 仓储管理_入库记录退货_查询type=11line=655
- 仓储管理_入库记录退货_查看type=12line=662
- 仓储管理_入库记录退货_未查看数量type=11line=669
- select * from 机加工MES_零件图PDF表 where 是否启用 = 1 and name =type=line=687
- ${item.name}.${item.suffix}type=line=696
- 采购管理_采购合同选入项_使用库存type=12line=713
- 采购管理_订单信息_列表_查询数据type=11line=739
- 供应商_查询type=11line=751
- 订单信息_产品信息_查询数据type=11line=767
- 采购管理_采购合同选入项_隐藏type=12line=781
- 采购管理_采购合同选入项_恢复type=12line=795
- 采购管理_采购合同_增加type=12line=812
- 采购管理_采购合同明细_增加type=12line=847
- 采购管理_采购合同明细_查询数据type=11line=853
- 采购管理_采购合同明细_删除type=12line=870
- 采购管理_采购合同明细_查询数据type=11line=876
- 采购管理_采购合同明细_编辑单价type=12line=894
- 采购管理_采购合同_提交type=12line=911
- 采购管理_耗材采购合同_提交type=12line=952
- 采购合同查询_上传图片type=15line=993
- 采购管理_物料采购_查询数据type=11line=1029
- 采购管理_采购合同_查询数据type=11line=1040
- 采购管理_采购合同明细_查询数据type=11line=1050
- 采购管理_采购合同_查询数据type=11line=1078
- 采购管理_耗材采购合同_增加type=12line=1095
- 采购管理_耗材采购合同明细_查询数据type=11line=1114
- 采购管理_耗材采购合同明细_编辑数据type=12line=1162
- 采购管理_耗材采购合同明细_编辑数据type=12line=1173
- 采购管理_耗材采购合同明细_查询数据type=11line=1183
- 采购管理_耗材采购合同明细_增加数据type=12line=1220
- 采购管理_耗材采购合同明细_查询数据type=11line=1226
- 采购管理_耗材采购合同明细_删除数据type=12line=1267
- 采购管理_耗材采购合同明细_查询数据type=11line=1274
- 物料信息_查询type=11line=1333
- 采购管理_采购物料修改_修改数据type=12line=1350
- 物料信息_查询type=11line=1370
- 采购管理_耗材采购合同明细_增加数据type=12line=1397
- 采购管理_耗材采购合同明细_查询数据type=11line=1405
- 采购合同_图片_查询数据type=11line=1522
## QualityAssurance/AssemblyQualitydataQuery
模块QualityAssurance
源码:前端源码\HL_MES_manager\src\views\QualityAssurance\AssemblyQualitydataQuery\index.vue
路由推断:/QualityAssurance/AssemblyQualitydataQuery
相关按钮Excel
导出接口/过程:
- MES_计划BOM_工位与名称_查询type=11line=329
- MES_基本变量_机型代码_查询type=11line=346
- 测量数据合格索引_订单号_查询type=11line=371
- 初始化二维码_查询type=11line=397
- 测量数据合格索引_发动机号_发动机型号_查询type=11line=423
- 物料数据_视图_物料条码批次号_查询type=11line=441
- 质量数据查询_测量位置type=11line=455
- 质量数据查询_测量项目type=11line=472
- 质量数据_发动机质量数据_各个工位_视图_发动机型号_综合查询type=11line=515
- 质量数据查询_综合查询新type=2001line=555
## QualityAssurance/BarCodeDataSearch
模块QualityAssurance
源码:前端源码\HL_MES_manager\src\views\QualityAssurance\BarCodeDataSearch\index.vue
路由推断:/QualityAssurance/BarCodeDataSearch
相关按钮Excel
导出接口/过程:
- 合力_扫码记录_修改码值type=11line=257
- MES_计划BOM_工位与名称_查询type=11line=275
- MES_计划BOM_工位与名称_查询type=11line=289
- 测量数据发动机在线状态_订单号_查询type=11line=307
- 测量数据发动机在线状态_发动机号_查询type=11line=328
- 合力_扫码记录_查询分页type=11line=355
- 合力_扫码记录_查询分页type=2001line=381
## QualityAssurance/InquiryTransitInformation
模块QualityAssurance
源码:前端源码\HL_MES_manager\src\views\QualityAssurance\InquiryTransitInformation\index.vue
路由推断:/QualityAssurance/InquiryTransitInformation
相关按钮Excel
导出接口/过程:
- MES_计划BOM_工位与名称_查询type=11line=267
- MES_计划BOM_工位与名称_查询type=11line=281
- 测量数据发动机在线状态_订单号_查询type=11line=299
- 测量数据发动机在线状态_发动机号_查询type=11line=320
- 质量数据查询_测量数据发动机在线状态_查询_NEWtype=11line=356
- 质量数据查询_测量数据发动机在线状态_报表_NEW新type=2001line=386
## QualityAssurance/LineItemQuery
模块QualityAssurance
源码:前端源码\HL_MES_manager\src\views\QualityAssurance\LineItemQuery\index.vue
路由推断:/QualityAssurance/LineItemQuery
相关按钮Excel
导出接口/过程:
- MES_计划BOM_工位与名称_查询type=11line=265
- MES_基本变量_机型代码_查询type=11line=281
- 电子看板装配零件_零件名称_初始化查询type=11line=297
- 初始化二维码_查询type=11line=324
- 测量数据合格索引_发动机号_发动机型号_查询type=11line=348
- 物料数据分线_视图_物料条码批次号_查询type=11line=365
- 质量数据查询_测量项目type=11line=380
- 物料数据分线_视图_查询type=11line=418
- 物料数据分线查询_报表新type=2001line=452
## QualityAssurance/LineQualityQuery
模块QualityAssurance
源码:前端源码\HL_MES_manager\src\views\QualityAssurance\LineQualityQuery\index.vue
路由推断:/QualityAssurance/LineQualityQuery
相关按钮Excel
导出接口/过程:
- MES_计划BOM_工位与名称_查询type=11line=295
- MES_基本变量_机型代码_查询type=11line=312
- 测量数据发动机在线状态_订单号_查询type=11line=328
- 初始化二维码_查询type=11line=352
- 测量数据合格索引_发动机号_发动机型号_查询type=11line=376
- 物料数据分线_视图_物料条码批次号_查询type=11line=392
- 质量数据查询_测量位置type=11line=406
- 质量数据查询_测量项目type=11line=423
- 质量数据_发动机分线质量数据_综合查询type=11line=465
- 质量数据分线_导出新type=2001line=503
## QualityAssurance/MaterialDataQuery
模块QualityAssurance
源码:前端源码\HL_MES_manager\src\views\QualityAssurance\MaterialDataQuery\index.vue
路由推断:/QualityAssurance/MaterialDataQuery
相关按钮Excel
导出接口/过程:
- MES_装配数据_零部件追溯_修改码值type=11line=269
- MES_计划BOM_工位与名称_查询type=11line=287
- MES_基本变量_机型代码_查询type=11line=304
- 电子看板装配零件_零件名称_初始化查询type=11line=320
- 初始化二维码_查询type=11line=347
- 测量数据合格索引_发动机号_发动机型号_查询type=11line=373
- 物料数据_视图_物料条码批次号_查询type=11line=391
- 质量数据查询_测量位置type=11line=405
- 质量数据查询_测量项目type=11line=422
- 物料数据_视图_查询type=11line=462
- 物料数据查询_报表新type=2001line=498
## QualityAssurance/MaterialsConsumeCount
模块QualityAssurance
源码:前端源码\HL_MES_manager\src\views\QualityAssurance\MaterialsConsumeCount\index.vue
路由推断:/QualityAssurance/MaterialsConsumeCount
相关按钮Excel
导出接口/过程:
- MES_装配数据_零部件追溯_修改码值type=11line=243
- MES_计划BOM_工位与名称_查询type=11line=261
- MES_基本变量_机型代码_查询type=11line=276
- 电子看板装配零件_零件名称_初始化查询type=11line=292
- 初始化二维码_查询type=11line=319
- 测量数据合格索引_发动机号_发动机型号_查询type=11line=345
- 物料数据_视图_物料条码批次号_查询type=11line=363
- 质量数据查询_测量位置type=11line=377
- 质量数据查询_测量项目type=11line=394
- MES_装配数据_零部件追溯_物料消耗统计_视图_查询type=11line=417
- MES_装配数据_零部件追溯_物料消耗统计_视图_查询type=2001line=439
## QualityAssurance/PatrolInspectionDataSearch
模块QualityAssurance
源码:前端源码\HL_MES_manager\src\views\QualityAssurance\PatrolInspectionDataSearch\index.vue
路由推断:/QualityAssurance/PatrolInspectionDataSearch
相关按钮:导出
导出接口/过程:
- 合力_巡检记录_增加type=11line=240
- MES_计划BOM_工位与名称_查询type=11line=255
- _日志_描述表_查询模块类型type=11line=270
- _日志_描述表_查询模块描述type=11line=283
- 合力_巡检记录_视图_查询type=11line=303
- 合力_巡检记录_视图_查询type=2001line=320
## PASS
模块QualityAssurance
源码:前端源码\HL_MES_manager\src\views\QualityAssurance\ProductionPlanOrderCompletion\index.vue
路由推断:/QualityAssurance/ProductionPlanOrderCompletion
相关按钮Excel
导出接口/过程:
- MES_基本变量_机型代码_查询type=11line=177
- 测量数据发动机在线状态_订单号_查询type=11line=193
- MES_计划BOM_工位与名称_查询type=11line=208
- PASStype=line=258
- NOtype=line=279
- MES_计划BOM_发动机订单计划_订单完工_查询type=11line=328
- MES_计划BOM_发动机订单计划_订单完工_报表type=11line=364
- MES_计划BOM_发动机订单计划_订单完工_报表新type=2001line=406
## UploadExcel
模块RecipeManagement
源码:前端源码\HL_MES_manager\src\views\RecipeManagement\BasicDataManagement\index.vue
路由推断:/RecipeManagement/BasicDataManagement
相关按钮:查询、新增、导入、编辑、删除、取消、确定、导入到数据库
导出接口/过程:
- UploadExceltype=line=135
- Recipe_WorkBook_Exceltype=12line=386
## UploadExcel
模块RecipeManagement
源码:前端源码\HL_MES_manager\src\views\RecipeManagement\ElectricalComponentParameters\index.vue
路由推断:/RecipeManagement/ElectricalComponentParameters
相关按钮:查询、新增、导入、编辑、删除、取消、确定、导入到数据库
导出接口/过程:
- UploadExceltype=line=147
- Recipe_Machine_Exceltype=12line=466
## RecipeManagement/MaterialFactoryManagement
模块RecipeManagement
源码:前端源码\HL_MES_manager\src\views\RecipeManagement\MaterialFactoryManagement\index.vue
路由推断:/RecipeManagement/MaterialFactoryManagement
相关按钮:导出
导出接口/过程:
- MES_计划BOM_工位与名称_查询type=11line=281
- 合力_HMI物料厂家_查询type=11line=300
- 合力_HMI物料厂家_查询type=2001line=312
- 合力_停机记录_结束type=12line=329
- 合力_停机记录_查询type=11line=353
- 合力_HMI物料厂家_增加type=12line=400
- 合力_HMI物料厂家_修改type=12line=435
## RecipeManagement/MaterialFactorySearch
模块RecipeManagement
源码:前端源码\HL_MES_manager\src\views\RecipeManagement\MaterialFactorySearch\index.vue
路由推断:/RecipeManagement/MaterialFactorySearch
相关按钮:导出
导出接口/过程:
- MES_计划BOM_工位与名称_查询type=11line=316
- 合力_HMI物料厂家_生产记录_查询type=11line=341
- 合力_HMI物料厂家_生产记录_查询type=2001line=360
- 合力_停机记录_结束type=12line=377
- 合力_停机记录_查询type=11line=401
- 合力_HMI物料厂家_生产记录_修改厂家type=11line=425
- 合力_HMI物料厂家_增加type=11line=462
- 合力_HMI物料厂家_修改type=11line=497
## select * from [报警数据_大柴]
模块SearchData
源码:前端源码\HL_MES_manager\src\views\SearchData\AlarmAnalysis\index.vue
路由推断:/SearchData/AlarmAnalysis
相关按钮导出EXCEL
导出接口/过程:
- 设备报警_报警历史查询_管理软件分页type=11line=150
- select * from [报警数据_大柴]type=line=186
- 报警统计表type=line=201
- 报警类型type=line=274
- 报警次数type=line=288
- 报警次数type=line=294
- 报警类型type=line=338
- select 测量项目 ,COUNT(测量项目) as 次数 from 报警数据_大柴type=line=377
- 呼叫类型type=line=459
- 停台时间type=line=469
- 停台时间type=line=475
- 呼叫类型type=line=519
## NO
模块SearchData
源码:前端源码\HL_MES_manager\src\views\SearchData\FTTTrendChart\index.vue
路由推断:/SearchData/FTTTrendChart
相关按钮Excel
导出接口/过程:
- MES_计划BOM_工位与名称_查询type=11line=190
- NOtype=line=244
- Data_WorkStationFTT_Statistic_Formtype=11line=287
- Data_WorkStationFTT_Statistic_Graphtype=11line=311
## SearchData/FaultStopWorkManagement
模块SearchData
源码:前端源码\HL_MES_manager\src\views\SearchData\FaultStopWorkManagement\index.vue
路由推断:/SearchData/FaultStopWorkManagement
相关按钮:导出
导出接口/过程:
- MES_计划BOM_工位与名称_查询type=11line=375
- 测量数据发动机在线状态_工位数据_日期_查询type=11line=395
- 合力_停机记录_视图_查询type=11line=459
- 合力_停机记录_视图_查询type=2001line=478
- 合力_停机记录_结束type=12line=496
- 合力_停机记录_查询type=11line=520
- 合力_计划停机时间表_修改type=12line=543
## NO
模块SearchData
源码:前端源码\HL_MES_manager\src\views\SearchData\JPHTrendChart\index.vue
路由推断:/SearchData/JPHTrendChart
相关按钮Excel
导出接口/过程:
- NOtype=line=187
- Data_WorkStationJPH_Statistic_Formtype=11line=220
- Data_WorkStationJPH_Statistic_Addtype=11line=237
## SearchData/OEEQuerySearch
模块SearchData
源码:前端源码\HL_MES_manager\src\views\SearchData\OEEQuerySearch\index.vue
路由推断:/SearchData/OEEQuerySearch
相关按钮:导出
导出接口/过程:
- MES_计划BOM_工位与名称_查询type=11line=494
- 测量数据发动机在线状态_工位数据_日期_查询type=11line=513
- MES_OEE计算_查询type=11line=572
- MES_OEE计算_查询type=2001line=584
- 合力_停机记录_结束type=12line=601
- 合力_停机记录_查询type=11line=625
- 合力_计划停机时间表_修改type=12line=648
## NO
模块SearchData
源码:前端源码\HL_MES_manager\src\views\SearchData\OEETrendChart\index.vue
路由推断:/SearchData/OEETrendChart
相关按钮Excel
导出接口/过程:
- MES_计划BOM_工位与名称_查询type=11line=203
- NOtype=line=257
- Data_WorkStationOEE_Statistic_Formtype=11line=291
- Data_WorkStationOEE_Statistic_Addtype=11line=310
## select distinct 工位号 from dbo.MES_基本变量_原始数据 where 变量类型代码 = 101 or 变量类型代码 = 105 or 变量类型代码 = 104 order by 工位号
模块SearchData
源码:前端源码\HL_MES_manager\src\views\SearchData\QualityData_XR\index.vue
路由推断:/SearchData/QualityData_XR
相关按钮导出EXCEL
导出接口/过程:
- MES_基本变量_机型代码_查询type=11line=187
- 质量数据查询_测量位置type=11line=203
- 质量数据查询_测量项目type=11line=249
- 测量值type=line=433
- UCLtype=line=438
- CLtype=line=439
- LCLtype=line=440
- 测量值type=line=500
- UCLtype=line=505
- CLtype=line=506
- LCLtype=line=507
## select distinct 工位号 from dbo.MES_基本变量_原始数据 where 变量类型代码 = 101 or 变量类型代码 = 105 or 变量类型代码 = 104 order by 工位号
模块SearchData
源码:前端源码\HL_MES_manager\src\views\SearchData\QualityDatasearch\index.vue
路由推断:/SearchData/QualityDatasearch
相关按钮:搜索
导出接口/过程:
- 质量数据报表type=line=662
## 质量数据报表
模块SearchData
源码:前端源码\HL_MES_manager\src\views\SearchData\SPC_Analysis\QualityDatasearch.vue
路由推断:/SearchData/SPC_Analysis
相关按钮导出EXCEL
导出接口/过程:
- MES_基本变量_基本机型_查询_zdytype=11line=171
- 质量数据查询_工位号_zdytype=11line=189
- 质量数据查询_测量位置_大柴type=11line=210
- 质量数据查询_测量项目_LLJtype=11line=232
- 质量数据_发动机质量数据_各个工位_视图_综合查询_趋势图_LLJtype=11line=263
- 质量数据报表type=line=325
- 测量值type=line=387
- USLtype=line=392
- LSLtype=line=393
- QUtype=line=394
- QLtype=line=395
- SLtype=line=396
## 工序能力分析表
模块SearchData
源码:前端源码\HL_MES_manager\src\views\SearchData\SPC_Analysis\index.vue
路由推断:/SearchData/SPC_Analysis
相关按钮导出EXCEL
导出接口/过程:
- MES_基本变量_基本机型_查询_zdytype=11line=248
- 质量数据查询_工位号_zdytype=11line=265
- 质量数据查询_测量位置_大柴type=11line=286
- 质量数据查询_测量项目_LLJtype=11line=308
- 工序能力分析表type=line=387
- M值type=line=426
- 分类type=line=453
- 目标值type=line=474
- 题号type=line=500
- 频数type=line=591
- 增长type=line=602
- 概率type=line=626
- USLtype=line=632
- LSLtype=line=633
- QUtype=line=634
- QLtype=line=635
- SLtype=line=636
- 频数type=line=661
- 频数type=line=688
- 增长type=line=716
## 工序能力分析表
模块SearchData
源码:前端源码\HL_MES_manager\src\views\SearchData\SPC_Analysis\index111.vue
路由推断:/SearchData/SPC_Analysis
相关按钮导出EXCEL
导出接口/过程:
- MES_基本变量_基本机型_查询_zdytype=11line=333
- 质量数据查询_工位号_zdytype=11line=350
- 质量数据查询_测量位置_大柴type=11line=371
- 质量数据查询_测量项目_LLJtype=11line=393
- 工序能力分析表type=line=428
- 测量值type=line=508
- USLtype=line=513
- LSLtype=line=514
- QUtype=line=515
- QLtype=line=516
- SLtype=line=517
## 质量数据查询表
模块SearchData
源码:前端源码\HL_MES_manager\src\views\SearchData\SPC_Analysis\index_beifen.vue
路由推断:/SearchData/SPC_Analysis
相关按钮导出EXCEL
导出接口/过程:
- MES_基本变量_基本机型_查询_zdytype=11line=225
- 质量数据查询_工位号_zdytype=11line=242
- 质量数据查询_测量位置_大柴type=11line=263
- 质量数据查询_测量项目_LLJtype=11line=285
- 质量数据查询表type=line=347
- 频数type=line=395
- 测量值type=line=428
- 平均温度type=line=433
## select distinct 工位号 from dbo.MES_基本变量_原始数据 where 变量类型代码 = 101 or 变量类型代码 = 105 or 变量类型代码 = 104 order by 工位号
模块SearchData
源码:前端源码\HL_MES_manager\src\views\SearchData\arrangeChart\index.vue
路由推断:/SearchData/arrangeChart
相关按钮导出EXCEL
导出接口/过程:
- MES_基本变量_机型代码_查询type=11line=240
- 质量数据查询_测量位置type=11line=256
- 质量数据查询_测量项目type=11line=302
- 质量数据查询表type=line=373
- 频数1type=line=421
- 频数2type=line=425
- 频数1type=line=430
- 频数2type=line=441
## select distinct 工位号 from dbo.MES_基本变量_原始数据 where 变量类型代码 = 101 or 变量类型代码 = 105 or 变量类型代码 = 104 order by 工位号
模块SearchData
源码:前端源码\HL_MES_manager\src\views\SearchData\histogram\index.vue
路由推断:/SearchData/histogram
相关按钮导出EXCEL
导出接口/过程:
- MES_基本变量_机型代码_查询type=11line=263
- 质量数据查询_测量位置type=11line=279
- 质量数据查询_测量项目type=11line=325
- 质量数据查询表type=line=404
- 测量值type=line=443
## select distinct 工位号 from dbo.MES_基本变量_原始数据 where 变量类型代码 = 101 or 变量类型代码 = 105 or 变量类型代码 = 104 order by 工位号
模块SearchData
源码:前端源码\HL_MES_manager\src\views\SearchData\processCapabilityAnalysis\index.vue
路由推断:/SearchData/processCapabilityAnalysis
相关按钮导出EXCEL
导出接口/过程:
- MES_基本变量_机型代码_查询type=11line=248
- 质量数据查询_测量位置type=11line=264
- 质量数据查询_测量项目type=11line=310
- 工序能力分析表type=line=388
- 测量值type=line=454
- USLtype=line=459
- LSLtype=line=460
- QUtype=line=461
- QLtype=line=462
- SLtype=line=463
## select distinct 工位号 from dbo.MES_基本变量_原始数据 where 变量类型代码 = 101 or 变量类型代码 = 105 or 变量类型代码 = 104 order by 工位号
模块SearchData
源码:前端源码\HL_MES_manager\src\views\SearchData\sampleTrendChart\index.vue
路由推断:/SearchData/sampleTrendChart
相关按钮导出EXCEL
导出接口/过程:
- MES_基本变量_机型代码_查询type=11line=263
- 质量数据查询_测量位置type=11line=279
- 质量数据查询_测量项目_zdytype=11line=322
- 质量数据查询_测量项目type=11line=344
- 质量数据查询表type=line=407
- 测量值type=line=470
## UploadExcel
模块WorkOrderManagement
源码:前端源码\HL_MES_manager\src\views\WorkOrderManagement\ReleaseOfProductionPlan\index.vue
路由推断:/WorkOrderManagement/ReleaseOfProductionPlan
相关按钮:订单导出
导出接口/过程:
- UploadExceltype=line=482
- MES_Managertype=line=497
- MES_基本变量_机型代码_查询type=11line=723
- 北汽福田订单创建零件号_查询type=11line=753
- 订单计划_订单号_查询type=11line=778
- 合力_分装线PLC_更新待上线数量type=12line=801
- 合力_总装线PLC_更新待上线数量type=12line=838
- 生产计划_派工订单_打印_查询type=11line=865
- 生产计划_派工订单_打印详细_查询type=11line=875
- MES_计划BOM_发动机订单计划_查询分页type=11line=920
- MES_计划BOM_发动机订单计划_订单手动增加type=12line=953
- 生产计划_派工订单_打印_增加type=12line=985
- 生产计划_派工订单_打印记录_是否重复_查询type=11line=1026
- 生产计划_派工订单_打印记录_增加type=12line=1044
- 生产计划_派工订单_打印_查询type=11line=1074
- 订单计划_删除type=11line=1099
- MES_计划BOM_发动机订单计划_订单下发type=12line=1150
- 订单计划_修改type=11line=1184
- MES_计划BOM_发动机订单计划_订单下发type=12line=1226
- MES_计划BOM_发动机订单计划_订单下发取消type=11line=1252
- 确认导入物料字典_新增type=11line=1273
- 生产计划导入_确认导入前临时表_查询type=11line=1299
- MES_计划BOM_发动机订单计划_订单导入校验type=11line=1330
- MES_计划BOM_发动机订单计划_订单导入type=12line=1393
- MES_计划BOM_发动机订单计划_查询分页type=2001line=1439
## WorkOrderManagement/ScheduleStatusChange
模块WorkOrderManagement
源码:前端源码\HL_MES_manager\src\views\WorkOrderManagement\ScheduleStatusChange\index.vue
路由推断:/WorkOrderManagement/ScheduleStatusChange
相关按钮Excel
导出接口/过程:
- MES_基本变量_机型代码_查询type=11line=205
- MES_计划BOM_发动机订单计划_状态_查询type=11line=219
- 北汽福田订单创建零件号_查询type=11line=234
- MES_计划BOM_发动机订单计划_下发查询type=11line=264
- MES_计划BOM_发动机订单计划_订单上移type=12line=279
- MES_计划BOM_发动机订单计划_订单下移type=12line=303
- MES_计划BOM_发动机订单计划_订单禁用type=12line=327
- MES_计划BOM_发动机订单计划_订单启用type=12line=351
- MES_计划BOM_发动机订单计划_订单导出新type=2001line=387
## {{ sudoku.name }}
模块dashboard
源码:前端源码\HL_MES_manager\src\views\dashboard\index.vue
路由推断:/dashboard
相关按钮下载Excel
导出接口/过程:
- 菜单系统模块_首页信息_查询数据1type=line=151
- 菜单系统模块_首页信息_查询数据2type=line=175
- 菜单系统模块_通知信息_查询数据type=line=197
- select count(*) from ${tableName} where ${condition}type=line=213

View File

@@ -0,0 +1,81 @@
# 前端操作任务知识库
该文档把用户常见说法映射到 HL_MES_manager 的真实前端模块、页面和导出接口AI 助手回答时应优先按这些页面操作路径给建议。
## 报警日志/系统日志
关键词:系统日志、操作日志、审计日志、日志导出
模块:基础数据
页面:报警日志/系统日志
操作:查询、导出
过程/查询合力_系统日志_查询、报警工位记录表_查询
源码路径:
- src/views/BasicData/WorkStationAlarmLog/index.vue
- src/views/BasicData/SystemAlarmLog/index.vue
系统日志相关功能在基础数据模块下,项目中存在 WorkStationAlarmLog 和 SystemAlarmLog 两类页面,均带导出按钮。用户询问系统日志时,优先引导其打开基础数据下的日志页面,而不是泛泛询问系统外日志类型。
## 设备报警统计、报警日志图表、报警日志
关键词:报警日志、设备报警、报警导出、报警日志图表
模块:设备运行分析/基础数据
页面:设备报警统计、报警日志图表、报警日志
操作:查询、统计、导出
过程/查询测量数据工位报警全部视图_查询新、报警工位记录表_查询
源码路径:
- src/views/EquipmentOperationAnalysis/EquipmentAlarmStatistics/index.vue
- src/views/EquipmentOperationAnalysis/EquipmentAlarmLogEcharts/index.vue
- src/views/BasicData/SystemAlarmLog/index.vue
报警相关问题优先定位到设备运行分析中的设备报警统计/报警日志图表,或基础数据中的报警日志。
## 过站信息查询
关键词:过站、过站日志、过站信息、在线状态
模块:质量保障
页面:过站信息查询
操作:查询、导出
过程/查询质量数据查询_测量数据发动机在线状态_报表_NEW新
源码路径:
- src/views/QualityAssurance/InquiryTransitInformation/index.vue
过站记录在质量保障 > 过站信息查询中处理。
## 扫码记录查询
关键词:扫码、扫码记录、条码、二维码
模块:质量保障
页面:扫码记录查询
操作:查询、导出、修改码值
过程/查询合力_扫码记录_查询分页、合力_扫码记录_修改码值
源码路径:
- src/views/QualityAssurance/BarCodeDataSearch/index.vue
扫码记录在质量保障 > 扫码记录查询中处理。
## 点检记录、设备点检质量查询
关键词:点检、点检记录、设备点检、点检导出
模块:设备运行分析/质量保障
页面:点检记录、设备点检质量查询
操作:日点检、周点检、月点检、季点检、年点检、导出
过程/查询点检日期导出_查询数据、点检日期周导出_查询数据、点检日期月导出_查询数据、点检日期季导出_查询数据、点检日期年导出_查询数据
源码路径:
- src/views/EquipmentOperationAnalysis/SpotCheckRecord/index.vue
- src/views/QualityAssurance/EquipmentMaintenance/index.vue
点检记录优先在设备运行分析 > 点检记录中处理,也可在质量保障 > 设备点检质量查询中查看质量相关点检。
## 装配质量数据查询、质量数据查询、SPC 分析
关键词:质量数据、质量追溯、装配质量、总成号
模块:质量保障/统计分析
页面装配质量数据查询、质量数据查询、SPC 分析
操作查询、导出、SPC
过程/查询质量数据查询_综合查询新
源码路径:
- src/views/QualityAssurance/AssemblyQualitydataQuery/index.vue
- src/views/SearchData/QualityDatasearch/index.vue
- src/views/SearchData/SPC_Analysis/index.vue
质量数据优先在质量保障 > 装配质量数据查询中查看,统计分析类问题进入 SearchData 的质量数据或 SPC 页面。

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,269 @@
[
{
"name": "数据库结构.xlsx",
"path": "MesProject20250822\\数据库结构.xlsx",
"status": "ok",
"sheets": [
{
"name": "测量数据合格索引",
"rows": 25,
"columns": 32,
"headers": [
"Id_tagCF",
"工厂",
"工作中心",
"TagID_CF",
"EngineTypeID",
"EngineID",
"EngineType",
"TagValue1",
"TagValue2",
"TagValue3",
"TagValue4",
"TagValue5"
]
},
{
"name": "测量数据合格",
"rows": 48,
"columns": 23,
"headers": [
"Id",
"Id_tagCF",
"EngineTypeID",
"EngineID",
"TagID",
"TagValue",
"IsOK",
"IsGoodBad",
"测量位置",
"测量项目",
"工位号",
"理论值"
]
},
{
"name": "测量数据发动机在线状态",
"rows": 6,
"columns": 35,
"headers": [
"ID",
"工厂",
"工作中心",
"工位号",
"订单号",
"机型代码",
"机型",
"发动机号",
"托盘编号",
"操作者工号",
"班次代码",
"到达时间"
]
},
{
"name": "测量数据工位报警全部",
"rows": 8,
"columns": 20,
"headers": [
"ID",
"AlarmID",
"TagID",
"TagTypeID",
"OpName",
"TagValue",
"MsgNr",
"State",
"alarmStartTime",
"alarmEndTime",
"Comment",
"Username"
]
},
{
"name": "MES_装配数据_零部件追溯",
"rows": 26,
"columns": 66,
"headers": [
"ID",
"追溯代码",
"订单号",
"SAP物料号",
"发动机型号",
"发动机型号代码",
"发动机机型",
"发动机数量",
"厂牌编号起始号",
"客户名称",
"投料日期",
"文件编号"
]
}
]
},
{
"name": "MES基础数据.xlsx",
"path": "MesProject20250822\\MES基础数据.xlsx",
"status": "ok",
"sheets": [
{
"name": "基本变量_JEE",
"rows": 87,
"columns": 26,
"headers": [
"TagID",
"TagName",
"工位号",
"数据来源",
"IP",
"TagTypeID",
"TagLong",
"DbName",
"变量类型",
"变量地址",
"地址",
"演示偏移"
]
},
{
"name": "MES_计划BOM_工位与名称",
"rows": 84,
"columns": 64,
"headers": [
"工位代码",
"工位号",
"指南工位号",
"机床类型",
"工位名称",
"线体类型",
"二维码扫描枪",
"固定条形码扫描枪",
"手持条形码扫描枪",
"PC",
"工控机名称",
"工控机IP"
]
},
{
"name": "MES_基本数据_测量范围",
"rows": 225,
"columns": 7,
"headers": [
"数值代码",
"TagID",
"理论值",
"值上限",
"值下限",
"发动机型号代码",
"是否启用",
"1",
"70100501",
"110.00",
"112.23",
"108.25"
]
},
{
"name": "报警变量",
"rows": 15,
"columns": 23,
"headers": [
"X",
"700",
"701",
"702",
"703",
"704",
"705",
"706",
"707",
"708",
"709",
"710"
]
},
{
"name": "MES_基本变量原始数据",
"rows": 337,
"columns": 32,
"headers": [
"TagID",
"TagName",
"工位号",
"数据来源",
"IP",
"TagTypeID",
"TagLong",
"DbName",
"变量类型",
"变量地址",
"变量其它",
"演示偏移"
]
},
{
"name": "MES_机床报警",
"rows": 33,
"columns": 32,
"headers": [
"TagID",
"TagName",
"工位号",
"数据来源",
"IP",
"TagTypeID",
"TagLong",
"DbName",
"变量类型",
"变量地址",
"变量其它",
"演示偏移"
]
},
{
"name": "MES_基本变量_报警报文",
"rows": 30,
"columns": 6,
"headers": [
"NR",
"MSGVAR",
"MSGBIT",
"TypeName",
"TEXT1",
"TEXT2",
"101005010",
"10100501",
"0",
"1",
"[000] =OP1005 + 升降机 电机过流 故障",
"OP1005"
]
},
{
"name": "Sheet3",
"rows": 85,
"columns": 1,
"headers": [
"TagTypeID",
"2",
"2",
"2",
"2"
]
}
]
},
{
"name": "基本变量.xlsx",
"path": "MesProject20250822\\基本变量.xlsx",
"status": "ok",
"sheets": [
{
"name": "Sheet1",
"rows": 0,
"columns": 0,
"headers": []
}
]
}
]

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,125 @@
[
{
"id": "overview",
"title": "系统总体知识",
"category": "architecture",
"tags": [
"系统架构",
"前端",
"后端",
"模块"
],
"file": "overview.md",
"summary": "HL_MES_manager 的技术架构、目录、模块数量和核心入口。"
},
{
"id": "software-features",
"title": "软件功能知识库",
"category": "feature",
"tags": [
"功能",
"页面",
"菜单",
"业务模块"
],
"file": "software-features.md",
"summary": "按业务模块整理前端页面和 MES 功能。"
},
{
"id": "page-operation-catalog",
"title": "页面级操作知识库",
"category": "frontend",
"tags": [
"页面",
"按钮",
"导出",
"查询",
"操作"
],
"file": "page-operation-catalog.md",
"summary": "从 137 个 Vue 页面抽取页面操作、按钮和接口线索。"
},
{
"id": "export-capabilities",
"title": "导出能力知识库",
"category": "frontend",
"tags": [
"导出",
"Excel",
"报表",
"下载"
],
"file": "export-capabilities.md",
"summary": "整理 58 个具备导出/下载能力的页面。"
},
{
"id": "interfaces-and-procedures",
"title": "接口与存储过程知识库",
"category": "interface",
"tags": [
"接口",
"存储过程",
"ASHX",
"MESCommonBase",
"CreateData"
],
"file": "interfaces-and-procedures.md",
"summary": "从源码抽取 3310 条接口/存储过程调用。"
},
{
"id": "frontend-task-map",
"title": "前端操作任务知识库",
"category": "frontend",
"tags": [
"前端操作",
"页面跳转",
"导出",
"系统日志",
"报警日志"
],
"file": "frontend-task-map.md",
"summary": "把用户常见请求映射到当前 MES 前端页面、源码路径和导出接口。"
},
{
"id": "database-knowledge",
"title": "数据库知识库",
"category": "database",
"tags": [
"数据库",
"SQL Server",
"表",
"存储过程",
"Excel"
],
"file": "database-knowledge.md",
"summary": "数据库资料、Excel 工作簿结构和从接口名推断的对象线索。"
},
{
"id": "plc-mqtt-integration",
"title": "PLC 与 MQTT 集成知识库",
"category": "integration",
"tags": [
"PLC",
"MQTT",
"RFID",
"OP010",
"质量保存"
],
"file": "plc-mqtt-integration.md",
"summary": "现场 PLC、RFID、MQTT、OP010、自动工位和 OPA 上料的集成要点。"
},
{
"id": "operations-and-risk",
"title": "运维与风险知识库",
"category": "operations",
"tags": [
"运维",
"部署",
"安全",
"故障排查",
"风险"
],
"file": "operations-and-risk.md",
"summary": "前端、后端、AI 服务的部署检查和已知安全风险。"
}
]

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,31 @@
# 运维与风险知识库
## AI/MCP 服务
- 目录ai-mcp-service
- 后台启动:.\start.ps1
- 状态检查:.\status.ps1
- 停止服务:.\stop.ps1
- 健康检查http://127.0.0.1:8787/health
- DeepSeek Key 配置ai-mcp-service/.env 中的 DEEPSEEK_API_KEY
## 前端配置
- 开发配置:前端源码/HL_MES_manager/static/config.js
- 发布配置:前端源码/HL_MES_manager/dist/static/config.js
- 后端地址baseURL
- AI 服务地址aiMcpURL
## 后端配置
- 主配置MES_Manage_standard/Web.config
- 主库MESBasicDB_HL
- 主入口submit/MESCommonBase.ashx
## 安全风险
- Web.config 存在明文数据库账号密码。
- CORS 当前允许任意来源。
- 通用接口支持 name/param 动态调用,应限制 AI 写入权限。
- AI 服务默认禁止写入类操作,只有 MES_AI_ALLOW_WRITE=1 才放开。
- 前端登录态主要依赖 Cookiesession 校验逻辑未启用。

View File

@@ -0,0 +1,32 @@
# 系统总体知识
HL_MES_manager 是合力差速器智能产线 MES 管理端,前端为 Vue 2 + Element UI后端为 ASP.NET ASHX数据库为 SQL Server。
## 关键目录
- 前端源码:前端源码/HL_MES_manager
- 后端发布目录MES_Manage_standard
- 主接口:/submit/MESCommonBase.ashx
- AI/MCP 服务ai-mcp-service
## 规模
- Vue 页面数量137
- 前端 API 文件数量25
- 后端 ASHX 处理器数量44
- 功能模块数量12
## 模块清单
- 登录与权限用户登录、密码修改、角色菜单加载、动态路由、Cookie 登录态
- 基础数据:人员管理、角色维护、菜单管理、用户权限、班次管理、工厂日历、设备人员绑定、设备能力维护、物料维护、工位工序维护、零件数量维护、报警日志、项目展示
- 基础变量维护基础变量维护、基础变量查询、报警变量维护、站点信息维护、变量设备类型、Excel 导入
- 工艺管理工步内容维护、工艺图片维护、物料校验维护、BOM 发动机管理、BOM 清单比对、接口模块维护、监控数据、PDF 卡片维护、分流缓存、仓位维护、标签语言维护、Andon 配置
- 工艺参数维护:拧紧位置维护、测量范围维护、工艺节拍维护、线体验证维护
- 生产计划生产计划下发、Excel 计划导入、排程状态变更
- 质量保障:装配质量数据查询、过站信息查询、扫码记录查询、物料数据查询、巡检数据查询、物料消耗统计、线体项目查询、线体质量查询、生产计划完成情况、设备点检质量查询
- 统计分析SPC 分析、质量数据查询、排列图、直方图、正态分布、XR 控制图、XS 控制图、样本趋势图、过程能力分析、OEE 查询、OEE 趋势、JPH 趋势、FTT 趋势、报警分析、故障停工管理
- 设备运行分析:设备实时状态、每日设备统计、设备报警统计、报警日志图表、设备基础信息维护、设备维修计划、当前维修计划、维修记录管理、日常点检信息维护、日/周/月/季/年点检记录
- 配方管理配方维护、新版配方维护、配方基础数据、电气元件参数、物料厂家管理、物料厂家查询、Excel 导入
- Andon 系统:设备 Andon、设备 Andon 统计、物料 Andon、物料 Andon 统计、质量 Andon、质量 Andon 统计
- 采购管理:采购订单、采购件查询、供应商管理

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,25 @@
# PLC 与 MQTT 集成知识库
## MQTT
- 订阅主题MES/InstantMessaging/PF25/
- 发布主题MesPrint
- 用途:即时消息、打印消息
## PLC/RFID
用途OP010 上线、自动工位质量保存、OPA 提前上料、RFID 托盘/总成信息交互
关键点位:
- DBX500.1 到位
- DBX500.3 申请上线
- DBX587.0 允许 MES 保存
- DBX11.3 MES 保存完成
- DBB750 质量数据区
## 常见排查
- MES 不保存质量数据:检查 DBX587.0 是否置位、DBB750 是否有质量数据、MES 后端是否可用。
- PLC 等待保存完成:检查 MES 是否写 DBX11.3。
- OP010 不允许上线检查二维码、订单机型匹配、DBX500.3、DBX1.1。
- 物料数量异常:检查 OPA 上料完成信号和 MES 扣减逻辑。

View File

@@ -0,0 +1,167 @@
# 软件功能知识库
## 登录与权限
路径src/views/login/index.vue、src/permission.js、src/router/getRouter.js
功能:
- 用户登录
- 密码修改
- 角色菜单加载
- 动态路由
- Cookie 登录态
## 基础数据
路径src/views/BasicData
功能:
- 人员管理
- 角色维护
- 菜单管理
- 用户权限
- 班次管理
- 工厂日历
- 设备人员绑定
- 设备能力维护
- 物料维护
- 工位工序维护
- 零件数量维护
- 报警日志
- 项目展示
## 基础变量维护
路径src/views/BasicDataMaintenance
功能:
- 基础变量维护
- 基础变量查询
- 报警变量维护
- 站点信息维护
- 变量设备类型
- Excel 导入
## 工艺管理
路径src/views/ProcessManagement
功能:
- 工步内容维护
- 工艺图片维护
- 物料校验维护
- BOM 发动机管理
- BOM 清单比对
- 接口模块维护
- 监控数据
- PDF 卡片维护
- 分流缓存
- 仓位维护
- 标签语言维护
- Andon 配置
## 工艺参数维护
路径src/views/ProcessParameterMaintenance
功能:
- 拧紧位置维护
- 测量范围维护
- 工艺节拍维护
- 线体验证维护
## 生产计划
路径src/views/WorkOrderManagement
功能:
- 生产计划下发
- Excel 计划导入
- 排程状态变更
## 质量保障
路径src/views/QualityAssurance
功能:
- 装配质量数据查询
- 过站信息查询
- 扫码记录查询
- 物料数据查询
- 巡检数据查询
- 物料消耗统计
- 线体项目查询
- 线体质量查询
- 生产计划完成情况
- 设备点检质量查询
## 统计分析
路径src/views/SearchData、src/api/SPCanalysis
功能:
- SPC 分析
- 质量数据查询
- 排列图
- 直方图
- 正态分布
- XR 控制图
- XS 控制图
- 样本趋势图
- 过程能力分析
- OEE 查询
- OEE 趋势
- JPH 趋势
- FTT 趋势
- 报警分析
- 故障停工管理
## 设备运行分析
路径src/views/EquipmentOperationAnalysis
功能:
- 设备实时状态
- 每日设备统计
- 设备报警统计
- 报警日志图表
- 设备基础信息维护
- 设备维修计划
- 当前维修计划
- 维修记录管理
- 日常点检信息维护
- 日/周/月/季/年点检记录
## 配方管理
路径src/views/RecipeManagement
功能:
- 配方维护
- 新版配方维护
- 配方基础数据
- 电气元件参数
- 物料厂家管理
- 物料厂家查询
- Excel 导入
## Andon 系统
路径src/views/AndonSystem
功能:
- 设备 Andon
- 设备 Andon 统计
- 物料 Andon
- 物料 Andon 统计
- 质量 Andon
- 质量 Andon 统计
## 采购管理
路径src/views/PurchasingManagement
功能:
- 采购订单
- 采购件查询
- 供应商管理

View File

@@ -0,0 +1,17 @@
{
"name": "hl-mes-ai-mcp-service",
"version": "1.0.0",
"private": true,
"description": "HTTP bridge and MCP-style tool service for HL_MES_manager AI assistant.",
"main": "server.js",
"scripts": {
"start": "node server.js",
"status": "powershell -ExecutionPolicy Bypass -File .\\status.ps1",
"start:bg": "powershell -ExecutionPolicy Bypass -File .\\start.ps1",
"stop": "powershell -ExecutionPolicy Bypass -File .\\stop.ps1",
"kb:build": "node scripts/build-knowledge-base.js"
},
"engines": {
"node": ">=16"
}
}

View File

@@ -0,0 +1,661 @@
const fs = require('fs')
const path = require('path')
const childProcess = require('child_process')
const serviceDir = path.resolve(__dirname, '..')
const repoRoot = path.resolve(serviceDir, '..')
const frontendDir = path.join(repoRoot, '前端源码', 'HL_MES_manager')
const backendDir = path.join(repoRoot, 'MES_Manage_standard')
const projectDir = path.join(repoRoot, 'MesProject20250822')
const kbDir = path.join(serviceDir, 'knowledge')
const generatedDir = path.join(kbDir, 'generated')
ensureDir(kbDir)
ensureDir(generatedDir)
const capabilities = readJson(path.join(serviceDir, 'catalog', 'mes-capabilities.json'))
const frontendTaskMap = readJson(path.join(serviceDir, 'catalog', 'frontend-task-map.json'))
const apiCalls = extractApiCalls(frontendDir)
const vuePages = listFiles(path.join(frontendDir, 'src', 'views'), file => file.endsWith('.vue'))
const pageCatalog = extractPageCatalog(frontendDir, vuePages, apiCalls)
const apiFiles = listFiles(path.join(frontendDir, 'src', 'api'), file => file.endsWith('.js'))
const backendHandlers = listFiles(path.join(backendDir, 'submit'), file => file.endsWith('.ashx'))
const excelInventory = inspectExcelFiles([
path.join(projectDir, '数据库结构.xlsx'),
path.join(projectDir, 'MES基础数据.xlsx'),
path.join(projectDir, '基本变量.xlsx')
])
const docs = [
buildOverviewDoc(capabilities, vuePages, apiFiles, backendHandlers),
buildFeatureDoc(capabilities),
buildPageCatalogDoc(pageCatalog),
buildExportCatalogDoc(pageCatalog),
buildInterfaceDoc(apiCalls, backendHandlers),
buildFrontendTaskDoc(frontendTaskMap),
buildDatabaseDoc(excelInventory, apiCalls),
buildIntegrationDoc(capabilities),
buildOperationsDoc()
]
for (const doc of docs) {
fs.writeFileSync(path.join(kbDir, `${doc.id}.md`), doc.content, 'utf8')
}
const index = docs.map(doc => ({
id: doc.id,
title: doc.title,
category: doc.category,
tags: doc.tags,
file: `${doc.id}.md`,
summary: doc.summary
}))
fs.writeFileSync(path.join(kbDir, 'index.json'), JSON.stringify(index, null, 2), 'utf8')
fs.writeFileSync(path.join(generatedDir, 'api-calls.json'), JSON.stringify(apiCalls.map(item => ({
module: item.module,
operation: item.operation,
type: item.type,
name: item.name,
file: relative(repoRoot, item.file),
line: item.line
})), null, 2), 'utf8')
fs.writeFileSync(path.join(generatedDir, 'page-catalog.json'), JSON.stringify(pageCatalog.map(item => Object.assign({}, item, {
file: relative(repoRoot, item.file)
})), null, 2), 'utf8')
fs.writeFileSync(path.join(generatedDir, 'database-inventory.json'), JSON.stringify(excelInventory.map(item => Object.assign({}, item, {
path: relative(repoRoot, item.path)
})), null, 2), 'utf8')
console.log(`Knowledge base generated: ${kbDir}`)
console.log(`Documents: ${docs.length}`)
console.log(`API calls extracted: ${apiCalls.length}`)
function buildOverviewDoc(catalog, vuePages, apiFiles, handlers) {
return {
id: 'overview',
title: '系统总体知识',
category: 'architecture',
tags: ['系统架构', '前端', '后端', '模块'],
summary: 'HL_MES_manager 的技术架构、目录、模块数量和核心入口。',
content: [
'# 系统总体知识',
'',
'HL_MES_manager 是合力差速器智能产线 MES 管理端,前端为 Vue 2 + Element UI后端为 ASP.NET ASHX数据库为 SQL Server。',
'',
'## 关键目录',
'',
`- 前端源码:${catalog.frontend}`,
`- 后端发布目录:${catalog.backend}`,
`- 主接口:${catalog.mainEndpoint}`,
'- AI/MCP 服务ai-mcp-service',
'',
'## 规模',
'',
`- Vue 页面数量:${vuePages.length}`,
`- 前端 API 文件数量:${apiFiles.length}`,
`- 后端 ASHX 处理器数量:${handlers.length}`,
`- 功能模块数量:${catalog.modules.length}`,
'',
'## 模块清单',
'',
...catalog.modules.map(item => `- ${item.name}${item.features.join('、')}`),
''
].join('\n')
}
}
function buildFeatureDoc(catalog) {
const lines = ['# 软件功能知识库', '']
for (const module of catalog.modules) {
lines.push(`## ${module.name}`)
lines.push('')
lines.push(`路径:${module.paths.join('、')}`)
lines.push('')
lines.push('功能:')
for (const feature of module.features) {
lines.push(`- ${feature}`)
}
lines.push('')
}
return {
id: 'software-features',
title: '软件功能知识库',
category: 'feature',
tags: ['功能', '页面', '菜单', '业务模块'],
summary: '按业务模块整理前端页面和 MES 功能。',
content: lines.join('\n')
}
}
function buildPageCatalogDoc(pages) {
const grouped = groupBy(pages, item => item.module)
const lines = [
'# 页面级操作知识库',
'',
'该文档从 Vue 页面源码中抽取页面路径、按钮文本、接口调用、导出能力和表格字段线索,用于回答“在哪里操作、怎么查询、怎么导出”。',
''
]
Object.keys(grouped).sort().forEach(module => {
lines.push(`## ${module}`)
lines.push('')
grouped[module].forEach(page => {
lines.push(`### ${page.title || page.name}`)
lines.push('')
lines.push(`源码:${relative(repoRoot, page.file)}`)
lines.push(`路由推断:${page.route}`)
if (page.buttons.length) lines.push(`按钮:${page.buttons.join('、')}`)
if (page.exports.length) {
lines.push('导出能力:')
page.exports.forEach(item => lines.push(`- ${item.name}type=${item.type}line=${item.line}`))
}
if (page.calls.length) {
lines.push('主要接口/过程:')
page.calls.slice(0, 20).forEach(item => lines.push(`- ${item.name}type=${item.type || ''}line=${item.line}`))
}
if (page.tableColumns.length) lines.push(`表格字段线索:${page.tableColumns.slice(0, 30).join('、')}`)
lines.push('')
})
})
return {
id: 'page-operation-catalog',
title: '页面级操作知识库',
category: 'frontend',
tags: ['页面', '按钮', '导出', '查询', '操作'],
summary: `${pages.length} 个 Vue 页面抽取页面操作、按钮和接口线索。`,
content: lines.join('\n')
}
}
function buildExportCatalogDoc(pages) {
const exportPages = pages.filter(page => page.exports.length || page.buttons.some(button => /导出|下载|Excel|EXCEL/i.test(button)))
const lines = [
'# 导出能力知识库',
'',
'该文档整理前端页面中可导出 Excel/文件/报表的页面、按钮和后端过程。用户提出导出请求时优先参考此文档。',
''
]
exportPages.forEach(page => {
lines.push(`## ${page.title || page.name}`)
lines.push('')
lines.push(`模块:${page.module}`)
lines.push(`源码:${relative(repoRoot, page.file)}`)
lines.push(`路由推断:${page.route}`)
if (page.buttons.length) lines.push(`相关按钮:${page.buttons.filter(button => /导出|下载|Excel|EXCEL|报表/i.test(button)).join('、') || page.buttons.join('、')}`)
if (page.exports.length) {
lines.push('导出接口/过程:')
page.exports.forEach(item => lines.push(`- ${item.name}type=${item.type}line=${item.line}`))
}
lines.push('')
})
return {
id: 'export-capabilities',
title: '导出能力知识库',
category: 'frontend',
tags: ['导出', 'Excel', '报表', '下载'],
summary: `整理 ${exportPages.length} 个具备导出/下载能力的页面。`,
content: lines.join('\n')
}
}
function buildInterfaceDoc(apiCalls, handlers) {
const grouped = groupBy(apiCalls, item => item.module)
const lines = [
'# 接口与存储过程知识库',
'',
'前端主要通过 request.js 请求 MESCommonBase.ashx业务参数为 type、name、param。旧页面也大量使用 CreateData(type, name, param, pageSize, pageList)。',
'',
'## 后端 ASHX 入口',
'',
...handlers.map(file => `- ${relative(repoRoot, file)}`),
'',
'## 前端调用索引',
''
]
Object.keys(grouped).sort().forEach(module => {
lines.push(`### ${module}`)
lines.push('')
grouped[module].slice(0, 180).forEach(item => {
lines.push(`- ${item.operation || 'unknown'} | type=${item.type || ''} | ${item.name} | ${relative(repoRoot, item.file)}:${item.line}`)
})
if (grouped[module].length > 180) {
lines.push(`- ... 还有 ${grouped[module].length - 180} 条调用未在文档中展开,可检索 knowledge/index.json 或重新生成索引。`)
}
lines.push('')
})
return {
id: 'interfaces-and-procedures',
title: '接口与存储过程知识库',
category: 'interface',
tags: ['接口', '存储过程', 'ASHX', 'MESCommonBase', 'CreateData'],
summary: `从源码抽取 ${apiCalls.length} 条接口/存储过程调用。`,
content: lines.join('\n')
}
}
function buildFrontendTaskDoc(taskMap) {
const lines = [
'# 前端操作任务知识库',
'',
'该文档把用户常见说法映射到 HL_MES_manager 的真实前端模块、页面和导出接口AI 助手回答时应优先按这些页面操作路径给建议。',
''
]
taskMap.forEach(item => {
lines.push(`## ${item.page}`)
lines.push('')
lines.push(`关键词:${item.keywords.join('、')}`)
lines.push(`模块:${item.module}`)
lines.push(`页面:${item.page}`)
lines.push(`操作:${item.actions.join('、')}`)
lines.push(`过程/查询:${item.procedures.join('、')}`)
lines.push('源码路径:')
item.paths.forEach(file => lines.push(`- ${file}`))
lines.push('')
lines.push(item.answer)
lines.push('')
})
return {
id: 'frontend-task-map',
title: '前端操作任务知识库',
category: 'frontend',
tags: ['前端操作', '页面跳转', '导出', '系统日志', '报警日志'],
summary: '把用户常见请求映射到当前 MES 前端页面、源码路径和导出接口。',
content: lines.join('\n')
}
}
function buildDatabaseDoc(excelInventory, apiCalls) {
const objectNames = new Set()
apiCalls.forEach(call => {
extractDbTokens(call.name).forEach(name => objectNames.add(name))
})
const lines = [
'# 数据库知识库',
'',
'数据库主库配置为 MESBasicDB_HL。当前知识库从项目 Excel 资料和前端接口调用名中整理数据库对象线索。',
'',
'## Excel 资料',
''
]
excelInventory.forEach(item => {
lines.push(`### ${item.name}`)
lines.push('')
lines.push(`路径:${relative(repoRoot, item.path)}`)
lines.push(`状态:${item.status}`)
if (item.sheets && item.sheets.length) {
lines.push('工作表:')
item.sheets.forEach(sheet => {
lines.push(`- ${sheet.name}${sheet.rows || '未知'} 行,${sheet.columns || '未知'} 列;字段示例:${(sheet.headers || []).join('、')}`)
})
}
lines.push('')
})
lines.push('## 从接口调用推断的数据库/过程对象关键词')
lines.push('')
Array.from(objectNames).sort().slice(0, 300).forEach(name => {
lines.push(`- ${name}`)
})
return {
id: 'database-knowledge',
title: '数据库知识库',
category: 'database',
tags: ['数据库', 'SQL Server', '表', '存储过程', 'Excel'],
summary: '数据库资料、Excel 工作簿结构和从接口名推断的对象线索。',
content: lines.join('\n')
}
}
function buildIntegrationDoc(catalog) {
const integration = catalog.integration
return {
id: 'plc-mqtt-integration',
title: 'PLC 与 MQTT 集成知识库',
category: 'integration',
tags: ['PLC', 'MQTT', 'RFID', 'OP010', '质量保存'],
summary: '现场 PLC、RFID、MQTT、OP010、自动工位和 OPA 上料的集成要点。',
content: [
'# PLC 与 MQTT 集成知识库',
'',
'## MQTT',
'',
`- 订阅主题:${integration.mqtt.subscriptionTopic}`,
`- 发布主题:${integration.mqtt.publishTopic}`,
`- 用途:${integration.mqtt.usage.join('、')}`,
'',
'## PLC/RFID',
'',
`用途:${integration.plc.usage.join('、')}`,
'',
'关键点位:',
...integration.plc.signals.map(signal => `- ${signal}`),
'',
'## 常见排查',
'',
'- MES 不保存质量数据:检查 DBX587.0 是否置位、DBB750 是否有质量数据、MES 后端是否可用。',
'- PLC 等待保存完成:检查 MES 是否写 DBX11.3。',
'- OP010 不允许上线检查二维码、订单机型匹配、DBX500.3、DBX1.1。',
'- 物料数量异常:检查 OPA 上料完成信号和 MES 扣减逻辑。',
''
].join('\n')
}
}
function buildOperationsDoc() {
return {
id: 'operations-and-risk',
title: '运维与风险知识库',
category: 'operations',
tags: ['运维', '部署', '安全', '故障排查', '风险'],
summary: '前端、后端、AI 服务的部署检查和已知安全风险。',
content: [
'# 运维与风险知识库',
'',
'## AI/MCP 服务',
'',
'- 目录ai-mcp-service',
'- 后台启动:.\\start.ps1',
'- 状态检查:.\\status.ps1',
'- 停止服务:.\\stop.ps1',
'- 健康检查http://127.0.0.1:8787/health',
'- DeepSeek Key 配置ai-mcp-service/.env 中的 DEEPSEEK_API_KEY',
'',
'## 前端配置',
'',
'- 开发配置:前端源码/HL_MES_manager/static/config.js',
'- 发布配置:前端源码/HL_MES_manager/dist/static/config.js',
'- 后端地址baseURL',
'- AI 服务地址aiMcpURL',
'',
'## 后端配置',
'',
'- 主配置MES_Manage_standard/Web.config',
'- 主库MESBasicDB_HL',
'- 主入口submit/MESCommonBase.ashx',
'',
'## 安全风险',
'',
'- Web.config 存在明文数据库账号密码。',
'- CORS 当前允许任意来源。',
'- 通用接口支持 name/param 动态调用,应限制 AI 写入权限。',
'- AI 服务默认禁止写入类操作,只有 MES_AI_ALLOW_WRITE=1 才放开。',
'- 前端登录态主要依赖 Cookiesession 校验逻辑未启用。',
''
].join('\n')
}
}
function extractApiCalls(root) {
const files = listFiles(path.join(root, 'src'), file => file.endsWith('.js') || file.endsWith('.vue'))
const calls = []
files.forEach(file => {
const text = safeRead(file)
const lines = text.split(/\r?\n/)
lines.forEach((line, index) => {
const nameMatches = [
...line.matchAll(/name\s*:\s*['"`]([^'"`]+)['"`]/g),
...line.matchAll(/CreateData\(\s*['"`]([^'"`]+)['"`]\s*,\s*['"`]([^'"`]+)['"`]/g)
]
nameMatches.forEach(match => {
if (match[2]) {
calls.push({
file,
line: index + 1,
module: inferModule(root, file),
operation: 'CreateData',
type: match[1],
name: cleanup(match[2])
})
} else {
calls.push({
file,
line: index + 1,
module: inferModule(root, file),
operation: 'request',
type: '',
name: cleanup(match[1])
})
}
})
})
})
return calls.filter(item => item.name && item.name.length > 1 && item.name !== 'Dashboard')
}
function extractPageCatalog(root, vuePages, apiCalls) {
return vuePages.map(file => {
const text = safeRead(file)
const rel = relative(path.join(root, 'src', 'views'), file).replace(/\\/g, '/')
const parts = rel.split('/')
const module = parts[0] || 'root'
const name = parts.slice(0, -1).join('/') || path.basename(file, '.vue')
const title = inferPageTitle(text, name)
const calls = apiCalls
.filter(call => call.file === file)
.map(call => ({
operation: call.operation,
type: call.type,
name: call.name,
line: call.line
}))
const buttons = extractButtonTexts(text)
const tableColumns = extractTableColumns(text)
const exports = calls.filter(call => call.type === '2001' || /导出|报表|download|excel/i.test(call.name) || /导出|下载|Excel|EXCEL/.test(buttons.join(' ')))
return {
module,
name,
title,
file,
route: '/' + name.replace(/\/index$/, ''),
buttons,
tableColumns,
calls,
exports
}
})
}
function inferPageTitle(text, fallback) {
const titleMatch = text.match(/<h[1-6][^>]*>([^<]{2,40})<\/h[1-6]>/i)
if (titleMatch) return cleanup(titleMatch[1])
const nameMatch = text.match(/name\s*:\s*['"`]([^'"`]+)['"`]/)
if (nameMatch) return cleanup(nameMatch[1])
return fallback
}
function extractButtonTexts(text) {
const result = []
const buttonRegex = /<el-button[\s\S]*?>([\s\S]*?)<\/el-button>/g
let match
while ((match = buttonRegex.exec(text))) {
const raw = match[1]
.replace(/<[^>]+>/g, '')
.replace(/\{\{[\s\S]*?\}\}/g, '')
const value = cleanup(raw)
if (value && value.length <= 30) result.push(value)
}
return Array.from(new Set(result)).slice(0, 30)
}
function extractTableColumns(text) {
const result = []
const labelRegex = /<el-table-column[\s\S]*?label\s*=\s*['"]([^'"]+)['"][\s\S]*?>/g
let match
while ((match = labelRegex.exec(text))) {
const value = cleanup(match[1])
if (value) result.push(value)
}
return Array.from(new Set(result)).slice(0, 80)
}
function inspectExcelFiles(files) {
const xlsx = loadXlsx()
return files.map(file => {
if (!fs.existsSync(file)) {
return { name: path.basename(file), path: file, status: '文件不存在' }
}
if (xlsx) {
try {
const workbook = xlsx.readFile(file, { cellDates: false })
const sheets = workbook.SheetNames.map(name => {
const sheet = workbook.Sheets[name]
const ref = sheet['!ref'] ? xlsx.utils.decode_range(sheet['!ref']) : null
const rows = ref ? ref.e.r + 1 : 0
const columns = ref ? ref.e.c + 1 : 0
const matrix = xlsx.utils.sheet_to_json(sheet, { header: 1, blankrows: false })
const headers = []
matrix.slice(0, 5).forEach(row => {
row.forEach(value => {
if (value !== undefined && value !== null && String(value).trim() && headers.length < 12) {
headers.push(String(value).trim())
}
})
})
return { name, rows, columns, headers }
})
return { name: path.basename(file), path: file, status: 'ok', sheets }
} catch (error) {
return {
name: path.basename(file),
path: file,
status: 'xlsx 读取失败',
error: error.message
}
}
}
const script = [
'import json, sys',
'try:',
' import openpyxl',
'except Exception as e:',
' print(json.dumps({"status":"openpyxl unavailable","error":str(e)}, ensure_ascii=False)); sys.exit(0)',
'path=sys.argv[1]',
'wb=openpyxl.load_workbook(path, read_only=True, data_only=True)',
'sheets=[]',
'for ws in wb.worksheets:',
' rows=ws.max_row',
' cols=ws.max_column',
' headers=[]',
' for row in ws.iter_rows(min_row=1, max_row=min(rows, 5), values_only=True):',
' for val in row:',
' if val is not None and str(val).strip() and len(headers)<12:',
' headers.append(str(val).strip())',
' sheets.append({"name":ws.title,"rows":rows,"columns":cols,"headers":headers})',
'print(json.dumps({"status":"ok","sheets":sheets}, ensure_ascii=False))'
].join('\n')
try {
const output = childProcess.execFileSync('python', ['-c', script, file], {
encoding: 'utf8',
windowsHide: true,
timeout: 20000
})
const result = JSON.parse(output)
return Object.assign({ name: path.basename(file), path: file }, result)
} catch (error) {
return {
name: path.basename(file),
path: file,
status: '读取失败',
error: error.message
}
}
})
}
function loadXlsx() {
const candidates = [
path.join(frontendDir, 'node_modules', 'xlsx'),
'xlsx'
]
for (const candidate of candidates) {
try {
return require(candidate)
} catch (error) {
// try next candidate
}
}
return null
}
function extractDbTokens(text) {
const tokens = []
String(text || '').split(/[\s,()\[\]{};]+/).forEach(part => {
const value = part.trim()
if (!value) return
if (/[\u4e00-\u9fa5]/.test(value) && value.length >= 3) {
tokens.push(value)
}
})
return tokens
}
function inferModule(root, file) {
const rel = relative(root, file).replace(/\\/g, '/')
const parts = rel.split('/')
const viewsIndex = parts.indexOf('views')
if (viewsIndex >= 0 && parts[viewsIndex + 1]) return parts[viewsIndex + 1]
const apiIndex = parts.indexOf('api')
if (apiIndex >= 0 && parts[apiIndex + 1]) return parts[apiIndex + 1]
return parts[0] || 'root'
}
function listFiles(dir, predicate) {
if (!fs.existsSync(dir)) return []
const result = []
const stack = [dir]
while (stack.length) {
const current = stack.pop()
const entries = fs.readdirSync(current, { withFileTypes: true })
entries.forEach(entry => {
const fullPath = path.join(current, entry.name)
if (entry.isDirectory()) {
if (entry.name !== 'node_modules' && entry.name !== 'dist') stack.push(fullPath)
} else if (!predicate || predicate(fullPath)) {
result.push(fullPath)
}
})
}
return result.sort()
}
function groupBy(items, getKey) {
return items.reduce((result, item) => {
const key = getKey(item)
if (!result[key]) result[key] = []
result[key].push(item)
return result
}, {})
}
function readJson(file) {
return JSON.parse(fs.readFileSync(file, 'utf8'))
}
function safeRead(file) {
try {
return fs.readFileSync(file, 'utf8')
} catch (error) {
return ''
}
}
function cleanup(value) {
return String(value || '').replace(/\s+/g, ' ').trim()
}
function ensureDir(dir) {
fs.mkdirSync(dir, { recursive: true })
}
function relative(from, file) {
return path.relative(from, file)
}

729
ai-mcp-service/server.js Normal file
View File

@@ -0,0 +1,729 @@
const http = require('http')
const https = require('https')
const fs = require('fs')
const path = require('path')
loadEnv(path.join(__dirname, '.env'))
const PORT = Number(process.env.PORT || 8787)
const MES_BASE_URL = process.env.MES_BASE_URL || 'http://127.0.0.1:10100'
const DEEPSEEK_BASE_URL = process.env.DEEPSEEK_BASE_URL || 'https://api.deepseek.com'
const DEEPSEEK_MODEL = process.env.DEEPSEEK_MODEL || 'deepseek-v4-flash'
const DEEPSEEK_API_KEY = process.env.DEEPSEEK_API_KEY || ''
const MES_AI_ALLOW_WRITE = process.env.MES_AI_ALLOW_WRITE === '1'
const CATALOG_PATH = path.join(__dirname, 'catalog', 'mes-capabilities.json')
const catalog = JSON.parse(fs.readFileSync(CATALOG_PATH, 'utf8'))
const frontendTaskMap = readJsonIfExists(path.join(__dirname, 'catalog', 'frontend-task-map.json'), [])
const knowledgeBase = loadKnowledgeBase()
const generatedKnowledge = loadGeneratedKnowledge()
const tools = [
{
name: 'mes.list_capabilities',
description: '列出 HL_MES_manager 的模块、页面和功能能力。',
input_schema: {
type: 'object',
properties: {
module: { type: 'string', description: '可选,按模块名模糊过滤。' }
}
}
},
{
name: 'mes.search_capabilities',
description: '按关键词搜索 MES 功能目录。',
input_schema: {
type: 'object',
properties: {
keyword: { type: 'string', description: '关键词,如 质量、BOM、OEE、Andon。' }
},
required: ['keyword']
}
},
{
name: 'kb.list_documents',
description: '列出 AI 知识库中的文档。',
input_schema: {
type: 'object',
properties: {}
}
},
{
name: 'kb.search',
description: '检索 AI 知识库适合查询功能、数据库、接口、PLC、部署和风险。',
input_schema: {
type: 'object',
properties: {
keyword: { type: 'string', description: '检索关键词,如 质量数据、MES_计划BOM、OP010、DeepSeek。' },
limit: { type: 'number', description: '返回条数,默认 5。' }
},
required: ['keyword']
}
},
{
name: 'kb.read_document',
description: '读取知识库文档全文或前 N 个字符。',
input_schema: {
type: 'object',
properties: {
id: { type: 'string', description: '文档 ID。' },
maxLength: { type: 'number', description: '最大字符数,默认 12000。' }
},
required: ['id']
}
},
{
name: 'frontend.search_pages',
description: '搜索前端页面、按钮、导出能力和接口调用,适合回答页面操作问题。',
input_schema: {
type: 'object',
properties: {
keyword: { type: 'string', description: '页面、按钮、字段、接口关键词。' },
limit: { type: 'number', description: '返回条数,默认 8。' }
},
required: ['keyword']
}
},
{
name: 'mes.query',
description: '通过 MESCommonBase.ashx 调用只读查询。仅允许 type=1 或 3。',
input_schema: {
type: 'object',
properties: {
type: { type: 'string', enum: ['1', '3'] },
name: { type: 'string' },
param: { type: 'string' }
},
required: ['type', 'name']
}
},
{
name: 'mes.execute',
description: '执行 MES 通用接口。默认禁止写入类操作,需 MES_AI_ALLOW_WRITE=1。',
input_schema: {
type: 'object',
properties: {
type: { type: 'string' },
name: { type: 'string' },
param: { type: 'string' },
pageSize: {},
pageList: {}
},
required: ['type', 'name']
}
}
]
const server = http.createServer(async(req, res) => {
setCors(res)
if (req.method === 'OPTIONS') {
return sendJson(res, 204, {})
}
try {
const url = new URL(req.url, `http://${req.headers.host}`)
if (req.method === 'GET' && url.pathname === '/health') {
return sendJson(res, 200, {
ok: true,
service: 'hl-mes-ai-mcp-service',
mesBaseUrl: MES_BASE_URL,
model: DEEPSEEK_MODEL,
deepseekConfigured: Boolean(DEEPSEEK_API_KEY),
knowledgeDocuments: knowledgeBase.index.length
})
}
if (req.method === 'GET' && url.pathname === '/api/mcp/tools') {
return sendJson(res, 200, { tools })
}
if (req.method === 'GET' && url.pathname === '/api/kb/list') {
return sendJson(res, 200, { documents: knowledgeBase.index })
}
if (req.method === 'GET' && url.pathname === '/api/kb/search') {
return sendJson(res, 200, {
results: searchKnowledgeBase(url.searchParams.get('q') || '', Number(url.searchParams.get('limit') || 5))
})
}
if (req.method === 'GET' && url.pathname === '/api/kb/read') {
return sendJson(res, 200, readKnowledgeDocument(url.searchParams.get('id') || '', Number(url.searchParams.get('maxLength') || 12000)))
}
if (req.method === 'POST' && url.pathname === '/api/mcp/call') {
const body = await readJson(req)
const result = await callTool(body.name, body.arguments || {})
return sendJson(res, 200, { result })
}
if (req.method === 'POST' && url.pathname === '/api/ai/chat') {
const body = await readJson(req)
const answer = await chatWithDeepSeek(body.messages || [], body.context || {})
return sendJson(res, 200, answer)
}
sendJson(res, 404, { error: 'Not found' })
} catch (error) {
sendJson(res, 500, { error: error.message || String(error) })
}
})
server.listen(PORT, '127.0.0.1', () => {
console.log(`HL MES AI MCP service listening on http://127.0.0.1:${PORT}`)
})
async function chatWithDeepSeek(messages, context) {
if (!DEEPSEEK_API_KEY) {
return {
message: '<table><thead><tr><th>状态</th><th>处理方式</th></tr></thead><tbody><tr><td>AI 服务未配置 <code>DEEPSEEK_API_KEY</code></td><td>请在 <code>ai-mcp-service/.env</code> 中填写后重启服务。</td></tr></tbody></table>',
format: 'html',
toolResults: []
}
}
const toolResults = prefetchLocalContext(messages, context)
const systemPrompt = [
'你是 HL_MES_manager 前端系统内置 AI 助手,不是通用聊天机器人。',
'你的职责只限于帮助用户使用当前前端网页:打开模块、解释页面功能、说明查询/导出步骤、生成本系统相关表格、解释 MES 接口和排查本系统问题。',
'禁止回答与 HL_MES_manager 前端程序无关的问题。遇到无关问题,必须简短说明“我只能协助当前 MES 前端系统相关操作”,并引导用户提出页面、模块、查询、导出或排查问题。',
'回答必须优先基于当前用户可见菜单、当前路由、MES 功能目录、前端任务映射、接口约束和知识库检索结果。',
'遇到“系统日志、报警日志、扫码记录、过站日志、点检记录、导出”等词时,必须优先按前端任务映射定位项目内页面,不要扩展成操作系统日志、服务器日志或通用审计场景。',
'不要假装已经点击页面、读取实时页面数据或完成导出;实际页面跳转、导出由前端执行。',
'你可以解释模块位置、业务流程、页面查询条件、导出按钮、接口调用方式、排查方向。',
'涉及写入、删除、下发、修改数据时,必须提醒用户需要人工确认,不要直接执行。',
'输出协议:所有回答必须直接以标准 HTML 片段作为主格式输出。',
'不要使用 Markdown 语法,不要使用 ``` 代码围栏,不要输出纯文本段落,不要输出完整 html/head/body 标签。',
'输出组织规则:每次回答必须至少包含一个规范 HTML table方便用户查看。',
'即使是简短提示,也要用两列表格展示,表头可为“项目/内容”或“操作/说明”。',
'模块清单、字段说明、接口参数、页面位置、操作步骤、导出字段、排查项、对比项、结果数据,都优先使用 <table><thead><tbody><tr><th><td>。',
'可以在表格前用一个 <p> 给出一句结论,但主体必须是 table。',
'简单步骤也优先改成表格,不要使用普通项目符号列表作为主体。',
'重点使用 <strong>,路径/接口/字段使用 <code>,多行示例使用 <pre><code>。',
'不要输出 JavaScript 代码、script 标签或事件属性;需要表格时只输出静态 HTML table由前端负责显示和导出。',
'允许标签p、ul、ol、li、table、thead、tbody、tr、th、td、strong、em、code、pre、h3、h4、svg、g、rect、line、polyline、circle、text、path。',
'图文并茂规则当回答流程、模块关系、数据流、PLC/MQTT 交互、查询导出步骤时,优先在表格后补充一个简洁内联 SVG 图示SVG 必须是静态图,不得包含脚本、动画或外链。',
'禁止标签script、style、iframe、form、input、button、link、meta、image、foreignObject。',
'禁止任何 on* 事件属性、javascript: URL、内联脚本。',
'当用户要求制作 Excel、表格、清单、台账、模板时必须输出可被前端导出的 HTML table表头用 th数据行用 td。',
'如果用户要求打开某个模块或页面,只说明目标模块名称和建议页面;实际跳转由前端根据当前用户菜单执行。',
'不要输出 script、style、iframe、form、input、button不要输出任何 on* 事件属性。',
'当前前端上下文如下:',
JSON.stringify(normalizeClientContext(context)),
'当前可用 MCP 风格工具如下:',
JSON.stringify(tools.map(tool => ({ name: tool.name, description: tool.description }))),
'当前知识库文档如下:',
JSON.stringify(knowledgeBase.index.map(item => ({ id: item.id, title: item.title, category: item.category, summary: item.summary }))),
'页面级索引规模如下:',
JSON.stringify({ pages: generatedKnowledge.pages.length, apiCalls: generatedKnowledge.apiCalls.length }),
'前端任务映射如下:',
JSON.stringify(frontendTaskMap),
'MES 功能目录如下:',
JSON.stringify(catalog)
].join('\n')
const data = await requestJson(`${DEEPSEEK_BASE_URL.replace(/\/$/, '')}/chat/completions`, {
method: 'POST',
headers: {
Authorization: `Bearer ${DEEPSEEK_API_KEY}`
},
body: {
model: DEEPSEEK_MODEL,
messages: [
{ role: 'system', content: systemPrompt },
...toolResults.map(item => ({
role: 'system',
content: `本地工具 ${item.name} 结果:${JSON.stringify(item.result)}`
})),
...messages.slice(-12)
],
temperature: 0.2,
stream: false,
response_format: {
type: 'text'
}
}
})
if (data.statusCode < 200 || data.statusCode >= 300) {
const payload = data.body
throw new Error(payload.error && payload.error.message ? payload.error.message : `DeepSeek request failed: ${data.statusCode}`)
}
return {
message: ensureHtmlMessage(data.body.choices && data.body.choices[0] && data.body.choices[0].message ? data.body.choices[0].message.content : ''),
format: 'html',
model: data.body.model || DEEPSEEK_MODEL,
toolResults
}
}
function ensureHtmlMessage(message) {
const content = String(message || '').trim()
if (!content) return '<table><thead><tr><th>项目</th><th>内容</th></tr></thead><tbody><tr><td>结果</td><td>AI 服务未返回内容。</td></tr></tbody></table>'
if (/<(p|ul|ol|li|table|thead|tbody|tr|th|td|strong|em|code|pre|h3|h4|svg)[\s>]/i.test(content)) {
if (/<table[\s>]/i.test(content)) return content
return convertHtmlFragmentToTable(content)
}
return convertPlainTextToHtml(content)
}
function convertPlainTextToHtml(content) {
const lines = String(content || '').split(/\r?\n/).map(line => line.trim()).filter(Boolean)
if (!lines.length) return '<table><thead><tr><th>项目</th><th>内容</th></tr></thead><tbody><tr><td>结果</td><td>AI 服务未返回内容。</td></tr></tbody></table>'
const rows = lines.map((line, index) => {
const normalized = line
.replace(/^#{1,4}\s+/, '')
.replace(/^[-*]\s+/, '')
.replace(/^\d+[.)]\s+/, '')
return '<tr><td>' + (index + 1) + '</td><td>' + escapeHtml(normalized) + '</td></tr>'
})
return '<table><thead><tr><th>序号</th><th>内容</th></tr></thead><tbody>' + rows.join('') + '</tbody></table>'
}
function convertHtmlFragmentToTable(content) {
const blocks = []
const blockRegex = /<(h3|h4|p|li|pre)[^>]*>([\s\S]*?)<\/\1>/gi
let match
while ((match = blockRegex.exec(content))) {
const typeMap = {
h3: '标题',
h4: '标题',
p: '说明',
li: '条目',
pre: '示例'
}
const value = match[2].trim()
if (value) {
blocks.push({
type: typeMap[match[1].toLowerCase()] || '内容',
value
})
}
}
if (!blocks.length) {
const text = stripHtml(content)
return '<table><thead><tr><th>项目</th><th>内容</th></tr></thead><tbody><tr><td>说明</td><td>' + escapeHtml(text) + '</td></tr></tbody></table>'
}
const rows = blocks.map(item => '<tr><td>' + escapeHtml(item.type) + '</td><td>' + item.value + '</td></tr>')
return '<table><thead><tr><th>类型</th><th>内容</th></tr></thead><tbody>' + rows.join('') + '</tbody></table>'
}
function stripHtml(value) {
return String(value || '').replace(/<[^>]*>/g, ' ').replace(/\s+/g, ' ').trim()
}
function escapeHtml(value) {
return String(value || '')
.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#39;')
}
function prefetchLocalContext(messages, context) {
const last = messages.length ? String(messages[messages.length - 1].content || '') : ''
const results = []
if (last) {
results.push({
name: 'mes.search_capabilities',
result: searchCapabilities(last)
})
results.push({
name: 'kb.search',
result: searchKnowledgeBase(last, 5)
})
results.push({
name: 'frontend.task_map',
result: searchFrontendTaskMap(last)
})
results.push({
name: 'frontend.search_pages',
result: searchFrontendPages(last, 8)
})
const contextMatches = searchClientMenus(last, context)
if (contextMatches.length) {
results.push({
name: 'frontend.current_menu_match',
result: contextMatches
})
}
}
return results
}
async function callTool(name, args) {
if (name === 'mes.list_capabilities') {
if (!args.module) return catalog.modules
const keyword = String(args.module).toLowerCase()
return catalog.modules.filter(item => item.name.toLowerCase().includes(keyword))
}
if (name === 'mes.search_capabilities') {
return searchCapabilities(args.keyword || '')
}
if (name === 'kb.list_documents') {
return knowledgeBase.index
}
if (name === 'kb.search') {
return searchKnowledgeBase(args.keyword || '', Number(args.limit || 5))
}
if (name === 'kb.read_document') {
return readKnowledgeDocument(args.id || '', Number(args.maxLength || 12000))
}
if (name === 'frontend.search_pages') {
return searchFrontendPages(args.keyword || '', Number(args.limit || 8))
}
if (name === 'mes.query') {
const type = String(args.type || '1')
if (type !== '1' && type !== '3') {
throw new Error('mes.query only allows type=1 or type=3')
}
return callMesCommonBase({ type, name: args.name, param: args.param || '' })
}
if (name === 'mes.execute') {
const type = String(args.type || '')
if (!MES_AI_ALLOW_WRITE && type !== '1' && type !== '3') {
throw new Error('Write operations are disabled. Set MES_AI_ALLOW_WRITE=1 to enable them.')
}
return callMesCommonBase(args)
}
throw new Error(`Unknown tool: ${name}`)
}
function searchCapabilities(keyword) {
const key = String(keyword || '').trim().toLowerCase()
if (!key) return []
return catalog.modules
.map(module => {
const haystack = JSON.stringify(module).toLowerCase()
if (!haystack.includes(key)) return null
return module
})
.filter(Boolean)
}
function searchFrontendTaskMap(keyword) {
const key = String(keyword || '').toLowerCase()
if (!key) return []
return frontendTaskMap
.map(item => {
const haystack = JSON.stringify(item).toLowerCase()
let score = haystack.includes(key) ? 20 : 0
item.keywords.forEach(word => {
if (key.includes(String(word).toLowerCase()) || haystack.includes(key)) score += 5
})
return score ? Object.assign({ score }, item) : null
})
.filter(Boolean)
.sort((a, b) => b.score - a.score)
.slice(0, 5)
}
function searchClientMenus(keyword, context) {
const key = String(keyword || '').toLowerCase()
const menus = (context && Array.isArray(context.menus)) ? context.menus : []
if (!key || !menus.length) return []
return menus
.map(menu => {
const title = String(menu.title || '').toLowerCase()
let score = 0
if (title && key.includes(title)) score += 40
if (title && title.includes(key)) score += 30
for (let i = 0; i < key.length; i++) {
if (title.includes(key[i])) score += 1
}
return score ? Object.assign({ score }, menu) : null
})
.filter(Boolean)
.sort((a, b) => b.score - a.score)
.slice(0, 8)
}
function searchFrontendPages(keyword, limit) {
const key = String(keyword || '').toLowerCase()
if (!key) return []
const tokens = createSearchTokens(key)
const meaningfulTokens = tokens.filter(token => token && token.length > 1)
const max = Math.max(1, Math.min(Number(limit) || 8, 20))
return generatedKnowledge.pages
.map(page => {
const haystack = JSON.stringify(page).toLowerCase()
let score = haystack.includes(key) ? 30 : 0
key.split(/[\s,,。;;、]+/).forEach(part => {
if (part && haystack.includes(part)) score += 15
})
meaningfulTokens.forEach(token => {
if (token && haystack.includes(token)) score += token.length > 1 ? 4 : 1
})
if (/导出|excel|下载|报表/i.test(key) && page.exports && page.exports.length) score += 12
if (/日志|记录/i.test(key) && /日志|记录/i.test(haystack)) score += 12
if (!score) return null
return {
module: page.module,
title: page.title,
route: page.route,
file: page.file,
buttons: page.buttons,
exports: page.exports,
tableColumns: (page.tableColumns || []).slice(0, 20),
score
}
})
.filter(Boolean)
.sort((a, b) => b.score - a.score)
.slice(0, max)
}
function normalizeClientContext(context) {
const safeContext = context && typeof context === 'object' ? context : {}
const menus = Array.isArray(safeContext.menus) ? safeContext.menus.slice(0, 200).map(menu => ({
title: menu.title,
path: menu.path,
parentTitle: menu.parentTitle
})) : []
return {
route: safeContext.route || '',
routeName: safeContext.routeName || '',
userName: safeContext.userName || '',
menus
}
}
function readJsonIfExists(file, fallback) {
if (!fs.existsSync(file)) return fallback
return JSON.parse(fs.readFileSync(file, 'utf8'))
}
function loadGeneratedKnowledge() {
const generatedDir = path.join(__dirname, 'knowledge', 'generated')
return {
pages: readJsonIfExists(path.join(generatedDir, 'page-catalog.json'), []),
apiCalls: readJsonIfExists(path.join(generatedDir, 'api-calls.json'), []),
databaseInventory: readJsonIfExists(path.join(generatedDir, 'database-inventory.json'), [])
}
}
function loadKnowledgeBase() {
const kbDir = path.join(__dirname, 'knowledge')
const indexPath = path.join(kbDir, 'index.json')
if (!fs.existsSync(indexPath)) {
return { index: [], documents: [] }
}
const index = JSON.parse(fs.readFileSync(indexPath, 'utf8'))
const documents = index.map(item => {
const filePath = path.join(kbDir, item.file)
const content = fs.existsSync(filePath) ? fs.readFileSync(filePath, 'utf8') : ''
return Object.assign({}, item, { content })
})
return { index, documents }
}
function searchKnowledgeBase(keyword, limit) {
const query = String(keyword || '').trim().toLowerCase()
if (!query) return []
const tokens = createSearchTokens(query)
const max = Math.max(1, Math.min(Number(limit) || 5, 10))
return knowledgeBase.documents
.map(doc => {
const haystack = [
doc.id,
doc.title,
doc.category,
(doc.tags || []).join(' '),
doc.summary,
doc.content
].join('\n').toLowerCase()
let score = haystack.includes(query) ? 20 : 0
tokens.forEach(token => {
if (token && haystack.includes(token)) score += token.length > 1 ? 3 : 1
})
if (!score) return null
return {
id: doc.id,
title: doc.title,
category: doc.category,
tags: doc.tags,
summary: doc.summary,
score,
excerpt: makeExcerpt(doc.content, query, tokens)
}
})
.filter(Boolean)
.sort((a, b) => b.score - a.score)
.slice(0, max)
}
function readKnowledgeDocument(id, maxLength) {
const doc = knowledgeBase.documents.find(item => item.id === id)
if (!doc) {
return { error: `Knowledge document not found: ${id}` }
}
const size = Math.max(1000, Math.min(Number(maxLength) || 12000, 50000))
return {
id: doc.id,
title: doc.title,
category: doc.category,
tags: doc.tags,
summary: doc.summary,
content: doc.content.slice(0, size),
truncated: doc.content.length > size
}
}
function createSearchTokens(query) {
const tokens = new Set()
query.split(/[\s,,。;;、]+/).forEach(token => {
if (token) tokens.add(token)
})
if (/[\u4e00-\u9fa5]/.test(query)) {
for (let i = 0; i < query.length - 1; i++) {
const token = query.slice(i, i + 2)
if (/[\u4e00-\u9fa5]{2}/.test(token)) tokens.add(token)
}
}
return Array.from(tokens)
}
function makeExcerpt(content, query, tokens) {
const lower = content.toLowerCase()
let index = lower.indexOf(query)
if (index === -1) {
for (const token of tokens) {
index = lower.indexOf(token)
if (index !== -1) break
}
}
if (index === -1) return content.slice(0, 300)
const start = Math.max(0, index - 120)
const end = Math.min(content.length, index + 280)
return content.slice(start, end)
}
async function callMesCommonBase(payload) {
const response = await requestText(`${MES_BASE_URL.replace(/\/$/, '')}/submit/MESCommonBase.ashx`, {
method: 'POST',
body: payload
})
try {
return JSON.parse(response.body)
} catch (error) {
return response.body
}
}
function requestJson(url, options) {
return requestText(url, options).then(response => {
try {
return {
statusCode: response.statusCode,
headers: response.headers,
body: JSON.parse(response.body || '{}')
}
} catch (error) {
return {
statusCode: response.statusCode,
headers: response.headers,
body: { error: { message: response.body } }
}
}
})
}
function requestText(url, options) {
return new Promise((resolve, reject) => {
const target = new URL(url)
const transport = target.protocol === 'https:' ? https : http
const body = typeof options.body === 'string' ? options.body : JSON.stringify(options.body || {})
const headers = Object.assign({
'Content-Type': 'application/json',
'Content-Length': Buffer.byteLength(body)
}, options.headers || {})
const req = transport.request({
protocol: target.protocol,
hostname: target.hostname,
port: target.port,
path: `${target.pathname}${target.search}`,
method: options.method || 'GET',
headers
}, res => {
let raw = ''
res.setEncoding('utf8')
res.on('data', chunk => {
raw += chunk
})
res.on('end', () => {
resolve({
statusCode: res.statusCode,
headers: res.headers,
body: raw
})
})
})
req.on('error', reject)
req.setTimeout(120000, () => {
req.destroy(new Error('Upstream request timeout'))
})
if (body) req.write(body)
req.end()
})
}
function setCors(res) {
res.setHeader('Access-Control-Allow-Origin', '*')
res.setHeader('Access-Control-Allow-Headers', 'Content-Type')
res.setHeader('Access-Control-Allow-Methods', 'GET,POST,OPTIONS')
}
function sendJson(res, statusCode, data) {
res.statusCode = statusCode
res.setHeader('Content-Type', 'application/json; charset=utf-8')
if (statusCode === 204) return res.end()
res.end(JSON.stringify(data))
}
function readJson(req) {
return new Promise((resolve, reject) => {
let raw = ''
req.on('data', chunk => {
raw += chunk
if (raw.length > 1024 * 1024) {
reject(new Error('Request body too large'))
req.destroy()
}
})
req.on('end', () => {
if (!raw) return resolve({})
try {
resolve(JSON.parse(raw))
} catch (error) {
reject(new Error('Invalid JSON body'))
}
})
req.on('error', reject)
})
}
function loadEnv(filePath) {
if (!fs.existsSync(filePath)) return
const content = fs.readFileSync(filePath, 'utf8')
content.split(/\r?\n/).forEach(line => {
const trimmed = line.trim()
if (!trimmed || trimmed.startsWith('#')) return
const index = trimmed.indexOf('=')
if (index === -1) return
const key = trimmed.slice(0, index).trim()
const value = trimmed.slice(index + 1).trim()
if (!process.env[key]) process.env[key] = value
})
}

25
ai-mcp-service/start.ps1 Normal file
View File

@@ -0,0 +1,25 @@
$ErrorActionPreference = 'Stop'
$serviceDir = Split-Path -Parent $MyInvocation.MyCommand.Path
$port = if ($env:PORT) { [int]$env:PORT } else { 8787 }
$url = "http://127.0.0.1:$port/health"
try {
$health = Invoke-RestMethod -Uri $url -Method Get -TimeoutSec 2
Write-Host "AI MCP service is already running: $url"
$health | ConvertTo-Json -Depth 5
exit 0
} catch {
Write-Host "Starting AI MCP service on $url ..."
}
Start-Process -FilePath "node" -ArgumentList "server.js" -WorkingDirectory $serviceDir -WindowStyle Hidden
Start-Sleep -Seconds 2
try {
$health = Invoke-RestMethod -Uri $url -Method Get -TimeoutSec 5
Write-Host "AI MCP service started: $url"
$health | ConvertTo-Json -Depth 5
} catch {
Write-Error "AI MCP service failed to start. Run 'npm start' in this directory to see details."
}

13
ai-mcp-service/status.ps1 Normal file
View File

@@ -0,0 +1,13 @@
$ErrorActionPreference = 'Stop'
$port = if ($env:PORT) { [int]$env:PORT } else { 8787 }
$url = "http://127.0.0.1:$port/health"
try {
$health = Invoke-RestMethod -Uri $url -Method Get -TimeoutSec 3
Write-Host "AI MCP service is running: $url"
$health | ConvertTo-Json -Depth 5
} catch {
Write-Host "AI MCP service is not running on $url"
exit 1
}

23
ai-mcp-service/stop.ps1 Normal file
View File

@@ -0,0 +1,23 @@
$ErrorActionPreference = 'Stop'
$port = if ($env:PORT) { [int]$env:PORT } else { 8787 }
$connections = Get-NetTCPConnection -LocalAddress 127.0.0.1 -LocalPort $port -ErrorAction SilentlyContinue
if (!$connections) {
Write-Host "AI MCP service is not running on 127.0.0.1:$port"
exit 0
}
$processIds = $connections | Select-Object -ExpandProperty OwningProcess -Unique
foreach ($processId in $processIds) {
if ($processId -eq 0) {
continue
}
$process = Get-Process -Id $processId -ErrorAction SilentlyContinue
if ($process -and $process.ProcessName -eq 'node') {
Stop-Process -Id $processId -Force
Write-Host "Stopped AI MCP service process $processId"
} else {
Write-Host "Port $port is owned by process $processId, but it is not node. Skipped."
}
}

View File

@@ -0,0 +1,12 @@
{
"presets": [
["env", {
"modules": false,
"targets": {
"browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
}
}],
"stage-2"
],
"plugins":["transform-vue-jsx", "transform-runtime"]
}

View File

@@ -0,0 +1,14 @@
# http://editorconfig.org
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
insert_final_newline = false
trim_trailing_whitespace = false

View File

@@ -0,0 +1,5 @@
build/*.js
config/*.js
src/assets
src/icon
src/views/ProjectManagement

View File

@@ -0,0 +1,196 @@
module.exports = {
root: true,
parserOptions: {
parser: 'babel-eslint',
sourceType: 'module'
},
env: {
browser: true,
node: true,
es6: true,
},
extends: ['plugin:vue/recommended', 'eslint:recommended'],
// add your custom rules here
//it is base on https://github.com/vuejs/eslint-config-vue
rules: {
"vue/max-attributes-per-line": [2, {
"singleline": 10,
"multiline": {
"max": 1,
"allowFirstLine": false
}
}],
"vue/name-property-casing": ["error", "PascalCase"],
'accessor-pairs': 2,
'arrow-spacing': [2, {
'before': true,
'after': true
}],
'block-spacing': [2, 'always'],
'brace-style': [2, '1tbs', {
'allowSingleLine': true
}],
'camelcase': [0, {
'properties': 'always'
}],
'comma-dangle': [2, 'never'],
'comma-spacing': [2, {
'before': false,
'after': true
}],
'comma-style': [2, 'last'],
'constructor-super': 2,
'curly': [2, 'multi-line'],
'dot-location': [2, 'property'],
'eol-last': 2,
'eqeqeq': [2, 'allow-null'],
'generator-star-spacing': [2, {
'before': true,
'after': true
}],
'handle-callback-err': [2, '^(err|error)$'],
'indent': [2, 2, {
'SwitchCase': 1
}],
'jsx-quotes': [2, 'prefer-single'],
'key-spacing': [2, {
'beforeColon': false,
'afterColon': true
}],
'keyword-spacing': [2, {
'before': true,
'after': true
}],
'new-cap': [2, {
'newIsCap': true,
'capIsNew': false
}],
'new-parens': 2,
'no-array-constructor': 2,
'no-caller': 2,
'no-console': 'off',
'no-class-assign': 2,
'no-cond-assign': 2,
'no-const-assign': 2,
'no-control-regex': 2,
'no-delete-var': 2,
'no-dupe-args': 2,
'no-dupe-class-members': 2,
'no-dupe-keys': 2,
'no-duplicate-case': 2,
'no-empty-character-class': 2,
'no-empty-pattern': 2,
'no-eval': 2,
'no-ex-assign': 2,
'no-extend-native': 2,
'no-extra-bind': 2,
'no-extra-boolean-cast': 2,
'no-extra-parens': [2, 'functions'],
'no-fallthrough': 2,
'no-floating-decimal': 2,
'no-func-assign': 2,
'no-implied-eval': 2,
'no-inner-declarations': [2, 'functions'],
'no-invalid-regexp': 2,
'no-irregular-whitespace': 2,
'no-iterator': 2,
'no-label-var': 2,
'no-labels': [2, {
'allowLoop': false,
'allowSwitch': false
}],
'no-lone-blocks': 2,
'no-mixed-spaces-and-tabs': 2,
'no-multi-spaces': 2,
'no-multi-str': 2,
'no-multiple-empty-lines': [2, {
'max': 1
}],
'no-native-reassign': 2,
'no-negated-in-lhs': 2,
'no-new-object': 2,
'no-new-require': 2,
'no-new-symbol': 2,
'no-new-wrappers': 2,
'no-obj-calls': 2,
'no-octal': 2,
'no-octal-escape': 2,
'no-path-concat': 2,
'no-proto': 2,
'no-redeclare': 2,
'no-regex-spaces': 2,
'no-return-assign': [2, 'except-parens'],
'no-self-assign': 2,
'no-self-compare': 2,
'no-sequences': 2,
'no-shadow-restricted-names': 2,
'no-spaced-func': 2,
'no-sparse-arrays': 2,
'no-this-before-super': 2,
'no-throw-literal': 2,
'no-trailing-spaces': 2,
'no-undef': 2,
'no-undef-init': 2,
'no-unexpected-multiline': 2,
'no-unmodified-loop-condition': 2,
'no-unneeded-ternary': [2, {
'defaultAssignment': false
}],
'no-unreachable': 2,
'no-unsafe-finally': 2,
'no-unused-vars': [2, {
'vars': 'all',
'args': 'none'
}],
'no-useless-call': 2,
'no-useless-computed-key': 2,
'no-useless-constructor': 2,
'no-useless-escape': 0,
'no-whitespace-before-property': 2,
'no-with': 2,
'one-var': [2, {
'initialized': 'never'
}],
'operator-linebreak': [2, 'after', {
'overrides': {
'?': 'before',
':': 'before'
}
}],
'padded-blocks': [2, 'never'],
'quotes': [2, 'single', {
'avoidEscape': true,
'allowTemplateLiterals': true
}],
'semi': [2, 'never'],
'semi-spacing': [2, {
'before': false,
'after': true
}],
'space-before-blocks': [2, 'always'],
'space-before-function-paren': [2, 'never'],
'space-in-parens': [2, 'never'],
'space-infix-ops': 2,
'space-unary-ops': [2, {
'words': true,
'nonwords': false
}],
'spaced-comment': [2, 'always', {
'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']
}],
'template-curly-spacing': [2, 'never'],
'use-isnan': 2,
'valid-typeof': 2,
'wrap-iife': [2, 'any'],
'yield-star-spacing': [2, 'both'],
'yoda': [2, 'never'],
'prefer-const': 2,
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
'object-curly-spacing': [2, 'always', {
objectsInObjects: false
}],
'array-bracket-spacing': [2, 'never']
}
}

15
前端源码/HL_MES_manager/.gitignore vendored Normal file
View File

@@ -0,0 +1,15 @@
.DS_Store
node_modules/
dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
package-lock.json
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln

View File

@@ -0,0 +1,10 @@
// https://github.com/michael-ciniawsky/postcss-load-config
module.exports = {
"plugins": {
"postcss-import": {},
"postcss-url": {},
// to edit target browsers: use "browserslist" field in package.json
"autoprefixer": {}
}
}

View File

@@ -0,0 +1,5 @@
language: node_js
node_js: stable
script: npm run test
notifications:
email: false

View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2017-present PanJiaChen
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -0,0 +1,45 @@
'use strict'
require('./check-versions')()
process.env.NODE_ENV = 'production'
const ora = require('ora')
const rm = require('rimraf')
const path = require('path')
const chalk = require('chalk')
const webpack = require('webpack')
const config = require('../config')
const webpackConfig = require('./webpack.prod.conf')
const spinner = ora('building for production...')
spinner.start()
rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
if (err) throw err
webpack(webpackConfig, (err, stats) => {
spinner.stop()
if (err) throw err
process.stdout.write(
stats.toString({
colors: true,
modules: false,
children: false,
chunks: false,
chunkModules: false
}) + '\n\n'
)
if (stats.hasErrors()) {
console.log(chalk.red(' Build failed with errors.\n'))
process.exit(1)
}
console.log(chalk.cyan(' Build complete.\n'))
console.log(
chalk.yellow(
' Tip: built files are meant to be served over an HTTP server.\n' +
" Opening index.html over file:// won't work.\n"
)
)
})
})

View File

@@ -0,0 +1,64 @@
'use strict'
const chalk = require('chalk')
const semver = require('semver')
const packageConfig = require('../package.json')
const shell = require('shelljs')
function exec(cmd) {
return require('child_process')
.execSync(cmd)
.toString()
.trim()
}
const versionRequirements = [
{
name: 'node',
currentVersion: semver.clean(process.version),
versionRequirement: packageConfig.engines.node
}
]
// if (shell.which('npm')) {
// versionRequirements.push({
// name: 'npm',
// currentVersion: exec('npm --version'),
// versionRequirement: packageConfig.engines.npm
// })
// }
module.exports = function() {
const warnings = []
for (let i = 0; i < versionRequirements.length; i++) {
const mod = versionRequirements[i]
if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
warnings.push(
mod.name +
': ' +
chalk.red(mod.currentVersion) +
' should be ' +
chalk.green(mod.versionRequirement)
)
}
}
if (warnings.length) {
console.log('')
console.log(
chalk.yellow(
'To use this template, you must update following to modules:'
)
)
console.log()
for (let i = 0; i < warnings.length; i++) {
const warning = warnings[i]
console.log(' ' + warning)
}
console.log()
process.exit(1)
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@@ -0,0 +1,108 @@
'use strict'
const path = require('path')
const config = require('../config')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const packageConfig = require('../package.json')
exports.assetsPath = function(_path) {
const assetsSubDirectory =
process.env.NODE_ENV === 'production'
? config.build.assetsSubDirectory
: config.dev.assetsSubDirectory
return path.posix.join(assetsSubDirectory, _path)
}
exports.cssLoaders = function(options) {
options = options || {}
const cssLoader = {
loader: 'css-loader',
options: {
sourceMap: options.sourceMap
}
}
const postcssLoader = {
loader: 'postcss-loader',
options: {
sourceMap: options.sourceMap
}
}
// generate loader string to be used with extract text plugin
function generateLoaders(loader, loaderOptions) {
const loaders = []
// Extract CSS when that option is specified
// (which is the case during production build)
if (options.extract) {
loaders.push(MiniCssExtractPlugin.loader)
} else {
loaders.push('vue-style-loader')
}
loaders.push(cssLoader)
if (options.usePostCSS) {
loaders.push(postcssLoader)
}
if (loader) {
loaders.push({
loader: loader + '-loader',
options: Object.assign({}, loaderOptions, {
sourceMap: options.sourceMap
})
})
}
return loaders
}
// https://vue-loader.vuejs.org/en/configurations/extract-css.html
return {
css: generateLoaders(),
postcss: generateLoaders(),
less: generateLoaders('less'),
sass: generateLoaders('sass', {
indentedSyntax: true
}),
scss: generateLoaders('sass'),
stylus: generateLoaders('stylus'),
styl: generateLoaders('stylus')
}
}
// Generate loaders for standalone style files (outside of .vue)
exports.styleLoaders = function(options) {
const output = []
const loaders = exports.cssLoaders(options)
for (const extension in loaders) {
const loader = loaders[extension]
output.push({
test: new RegExp('\\.' + extension + '$'),
use: loader
})
}
return output
}
exports.createNotifierCallback = () => {
const notifier = require('node-notifier')
return (severity, errors) => {
if (severity !== 'error') return
const error = errors[0]
const filename = error.file && error.file.split('!').pop()
notifier.notify({
title: packageConfig.name,
message: severity + ': ' + error.name,
subtitle: filename || '',
icon: path.join(__dirname, 'logo.png')
})
}
}

View File

@@ -0,0 +1,5 @@
'use strict'
module.exports = {
//You can set the vue-loader configuration by yourself.
}

View File

@@ -0,0 +1,111 @@
'use strict'
const path = require('path')
const utils = require('./utils')
const config = require('../config')
const { VueLoaderPlugin } = require('vue-loader')
const vueLoaderConfig = require('./vue-loader.conf')
function resolve(dir) {
return path.join(__dirname, '..', dir)
}
const createLintingRule = () => ({
test: /\.(js|vue)$/,
loader: 'eslint-loader',
enforce: 'pre',
include: [resolve('src'), resolve('test')],
options: {
formatter: require('eslint-friendly-formatter'),
emitWarning: !config.dev.showEslintErrorsInOverlay
}
})
module.exports = {
context: path.resolve(__dirname, '../'),
entry: {
app: './src/main.js'
},
output: {
path: config.build.assetsRoot,
filename: '[name].js',
publicPath:
process.env.NODE_ENV === 'production'
? config.build.assetsPublicPath
: config.dev.assetsPublicPath
},
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'@': resolve('src')
}
},
module: {
rules: [
...(config.dev.useEslint ? [createLintingRule()] : []),
{
test: /\.vue$/,
loader: 'vue-loader',
options: vueLoaderConfig
},
{
test: /\.js$/,
loader: 'babel-loader',
include: [
resolve('src'),
resolve('test'),
resolve('node_modules/webpack-dev-server/client')
]
},
{
test: /\.svg$/,
loader: 'svg-sprite-loader',
include: [resolve('src/icons')],
options: {
symbolId: 'icon-[name]'
}
},
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader',
exclude: [resolve('src/icons')],
options: {
limit: 10000,
name: utils.assetsPath('img/[name].[hash:7].[ext]')
}
},
{
test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('media/[name].[hash:7].[ext]')
}
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
}
},
{
test: /\.txt$/,
use: 'raw-loader'
}
]
},
plugins: [new VueLoaderPlugin()],
node: {
// prevent webpack from injecting useless setImmediate polyfill because Vue
// source contains it (although only uses it if it's native).
setImmediate: false,
// prevent webpack from injecting mocks to Node native modules
// that does not make sense for the client
dgram: 'empty',
fs: 'empty',
net: 'empty',
tls: 'empty',
child_process: 'empty'
}
}

View File

@@ -0,0 +1,98 @@
'use strict'
const path = require('path')
const utils = require('./utils')
const webpack = require('webpack')
const config = require('../config')
const merge = require('webpack-merge')
const baseWebpackConfig = require('./webpack.base.conf')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
const portfinder = require('portfinder')
function resolve(dir) {
return path.join(__dirname, '..', dir)
}
const HOST = process.env.HOST
const PORT = process.env.PORT && Number(process.env.PORT)
const devWebpackConfig = merge(baseWebpackConfig, {
mode: 'development',
module: {
rules: utils.styleLoaders({
sourceMap: config.dev.cssSourceMap,
usePostCSS: true
})
},
// cheap-module-eval-source-map is faster for development
devtool: config.dev.devtool,
// these devServer options should be customized in /config/index.js
devServer: {
clientLogLevel: 'warning',
historyApiFallback: true,
hot: true,
compress: true,
host: HOST || config.dev.host,
port: PORT || config.dev.port,
open: config.dev.autoOpenBrowser,
overlay: config.dev.errorOverlay
? { warnings: false, errors: true }
: false,
publicPath: config.dev.assetsPublicPath,
proxy: config.dev.proxyTable,
quiet: true, // necessary for FriendlyErrorsPlugin
watchOptions: {
poll: config.dev.poll
}
},
plugins: [
new webpack.DefinePlugin({
'process.env': require('../config/dev.env')
}),
new webpack.HotModuleReplacementPlugin(),
// https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: 'index.html',
template: 'index.html',
inject: true,
favicon: resolve('favicon.ico'),
title: 'vue-element-admin',
templateParameters: {
BASE_URL: config.dev.assetsPublicPath + config.dev.assetsSubDirectory,
},
}),
]
})
module.exports = new Promise((resolve, reject) => {
portfinder.basePort = process.env.PORT || config.dev.port
portfinder.getPort((err, port) => {
if (err) {
reject(err)
} else {
// publish the new Port, necessary for e2e tests
process.env.PORT = port
// add port to devServer config
devWebpackConfig.devServer.port = port
// Add FriendlyErrorsPlugin
devWebpackConfig.plugins.push(
new FriendlyErrorsPlugin({
compilationSuccessInfo: {
messages: [
`Your application is running here: http://${
devWebpackConfig.devServer.host
}:${port}`
]
},
onErrors: config.dev.notifyOnErrors
? utils.createNotifierCallback()
: undefined
})
)
resolve(devWebpackConfig)
}
})
})

View File

@@ -0,0 +1,181 @@
'use strict'
const path = require('path')
const utils = require('./utils')
const webpack = require('webpack')
const config = require('../config')
const merge = require('webpack-merge')
const baseWebpackConfig = require('./webpack.base.conf')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const ScriptExtHtmlWebpackPlugin = require('script-ext-html-webpack-plugin')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
function resolve(dir) {
return path.join(__dirname, '..', dir)
}
const env = require('../config/prod.env')
// For NamedChunksPlugin
const seen = new Set()
const nameLength = 4
const webpackConfig = merge(baseWebpackConfig, {
mode: 'production',
module: {
rules: utils.styleLoaders({
sourceMap: config.build.productionSourceMap,
extract: true,
usePostCSS: true
})
},
devtool: config.build.productionSourceMap ? config.build.devtool : false,
output: {
path: config.build.assetsRoot,
filename: utils.assetsPath('js/[name].[chunkhash:8].js'),
chunkFilename: utils.assetsPath('js/[name].[chunkhash:8].js')
},
plugins: [
// http://vuejs.github.io/vue-loader/en/workflow/production.html
new webpack.DefinePlugin({
'process.env': env
}),
// extract css into its own file
new MiniCssExtractPlugin({
filename: utils.assetsPath('css/[name].[contenthash:8].css'),
chunkFilename: utils.assetsPath('css/[name].[contenthash:8].css')
}),
// generate dist index.html with correct asset hash for caching.
// you can customize output by editing /index.html
// see https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: config.build.index,
template: 'index.html',
inject: true,
favicon: resolve('favicon.ico'),
title: 'vue-admin-template',
templateParameters: {
BASE_URL: config.build.assetsPublicPath + config.build.assetsSubDirectory,
},
minify: {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true
// more options:
// https://github.com/kangax/html-minifier#options-quick-reference
}
// default sort mode uses toposort which cannot handle cyclic deps
// in certain cases, and in webpack 4, chunk order in HTML doesn't
// matter anyway
}),
new ScriptExtHtmlWebpackPlugin({
//`runtime` must same as runtimeChunk name. default is `runtime`
inline: /runtime\..*\.js$/
}),
// keep chunk.id stable when chunk has no name
new webpack.NamedChunksPlugin(chunk => {
if (chunk.name) {
return chunk.name
}
const modules = Array.from(chunk.modulesIterable)
if (modules.length > 1) {
const hash = require('hash-sum')
const joinedHash = hash(modules.map(m => m.id).join('_'))
let len = nameLength
while (seen.has(joinedHash.substr(0, len))) len++
seen.add(joinedHash.substr(0, len))
return `chunk-${joinedHash.substr(0, len)}`
} else {
return modules[0].id
}
}),
// keep module.id stable when vender modules does not change
new webpack.HashedModuleIdsPlugin(),
// copy custom static assets
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.build.assetsSubDirectory,
ignore: ['.*']
}
])
],
optimization: {
splitChunks: {
chunks: 'all',
cacheGroups: {
libs: {
name: 'chunk-libs',
test: /[\\/]node_modules[\\/]/,
priority: 10,
chunks: 'initial' // 只打包初始时依赖的第三方
},
elementUI: {
name: 'chunk-elementUI', // 单独将 elementUI 拆包
priority: 20, // 权重要大于 libs 和 app 不然会被打包进 libs 或者 app
test: /[\\/]node_modules[\\/]element-ui[\\/]/
}
}
},
runtimeChunk: 'single',
minimizer: [
new UglifyJsPlugin({
uglifyOptions: {
mangle: {
safari10: true
}
},
sourceMap: config.build.productionSourceMap,
cache: true,
parallel: true
}),
// Compress extracted CSS. We are using this plugin so that possible
// duplicated CSS from different components can be deduped.
new OptimizeCSSAssetsPlugin()
]
}
})
if (config.build.productionGzip) {
const CompressionWebpackPlugin = require('compression-webpack-plugin')
webpackConfig.plugins.push(
new CompressionWebpackPlugin({
asset: '[path].gz[query]',
algorithm: 'gzip',
test: new RegExp(
'\\.(' + config.build.productionGzipExtensions.join('|') + ')$'
),
threshold: 10240,
minRatio: 0.8
})
)
}
if (config.build.generateAnalyzerReport || config.build.bundleAnalyzerReport) {
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer')
.BundleAnalyzerPlugin
if (config.build.bundleAnalyzerReport) {
webpackConfig.plugins.push(
new BundleAnalyzerPlugin({
analyzerPort: 8080,
generateStatsFile: false
})
)
}
if (config.build.generateAnalyzerReport) {
webpackConfig.plugins.push(
new BundleAnalyzerPlugin({
analyzerMode: 'static',
reportFilename: 'bundle-report.html',
openAnalyzer: false
})
)
}
}
module.exports = webpackConfig

View File

@@ -0,0 +1,8 @@
'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
NODE_ENV: '"development"',
BASE_API: '"https://easy-mock.com/mock/5950a2419adc231f356a6636/vue-admin"',
})

View File

@@ -0,0 +1,91 @@
'use strict'
// Template version: 1.2.6
// see http://vuejs-templates.github.io/webpack for documentation.
const path = require('path')
const os = require('os')
const networkInterfaces = os.networkInterfaces()
// const ip = networkInterfaces['WLAN'][1] ? networkInterfaces['WLAN'][1].address : networkInterfaces['WLAN'][0].address
const ip = '127.0.0.1'
module.exports = {
dev: {
// Paths
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: {},
// Various Dev Server settings
host: ip, // can be overwritten by process.env.HOST
port: 1997, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
autoOpenBrowser: true,
errorOverlay: true,
notifyOnErrors: false,
poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
// Use Eslint Loader?
// If true, your code will be linted during bundling and
// linting errors and warnings will be shown in the console.
useEslint: true,
// If true, eslint errors and warnings will also be shown in the error overlay
// in the browser.
showEslintErrorsInOverlay: false,
/**
* Source Maps
*/
// https://webpack.js.org/configuration/devtool/#development
devtool: 'cheap-source-map',
// CSS Sourcemaps off by default because relative paths are "buggy"
// with this option, according to the CSS-Loader README
// (https://github.com/webpack/css-loader#sourcemaps)
// In our experience, they generally work as expected,
// just be aware of this issue when enabling this option.
cssSourceMap: false
},
build: {
// Template for index.html
index: path.resolve(__dirname, '../dist/index.html'),
// Paths
assetsRoot: path.resolve(__dirname, '../dist'),
assetsSubDirectory: 'static',
/**
* You can set by youself according to actual condition
* You will need to set this if you plan to deploy your site under a sub path,
* for example GitHub pages. If you plan to deploy your site to https://foo.github.io/bar/,
* then assetsPublicPath should be set to "/bar/".
* In most cases please use '/' !!!
*/
assetsPublicPath: '/',
/**
* Source Maps
*/
productionSourceMap: false,
// https://webpack.js.org/configuration/devtool/#production
devtool: 'source-map',
// Gzip off by default as many popular static hosts such as
// Surge or Netlify already gzip all static assets for you.
// Before setting to `true`, make sure to:
// npm install --save-dev compression-webpack-plugin
productionGzip: false,
productionGzipExtensions: ['js', 'css'],
// Run the build command with an extra argument to
// View the bundle analyzer report after build finishes:
// `npm run build --report`
// Set to `true` or `false` to always turn it on or off
bundleAnalyzerReport: process.env.npm_config_report || false,
// `npm run build:prod --generate_report`
generateAnalyzerReport: process.env.npm_config_generate_report || false
}
}

View File

@@ -0,0 +1,5 @@
'use strict'
module.exports = {
NODE_ENV: '"production"',
BASE_API: '"https://easy-mock.com/mock/5950a2419adc231f356a6636/vue-admin"',
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@@ -0,0 +1,20 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>MES信息管理系统</title>
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
</head>
<body style="background-color: #eeeeee">
<script src=<%= BASE_URL %>/config.js></script>
<script src=<%= BASE_URL %>/libs/docxtemplater.js></script>
<script src=<%= BASE_URL %>/libs/jszip.js></script>
<script src=<%= BASE_URL %>/libs/FileSaver.js></script>
<script src=<%= BASE_URL %>/libs/jszip-utils.js></script>
<script src=<%= BASE_URL %>/tinymce4.7.5/tinymce.min.js></script>
<div id="app"></div>
<script></script>
<!-- built files will be auto injected -->
</body>
</html>

View File

@@ -0,0 +1,106 @@
{
"name": "MacroinfManage_MES",
"version": "1.1.0",
"description": "A Management Information System of QIANG LI CO,.LTD,the template is from git+https://github.com/PanJiaChen/vue-element-admin.git",
"author": "MESWORK",
"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"start": "npm run dev",
"build": "node build/build.js",
"build:report": "npm_config_report=true npm run build",
"lint": "eslint --fix --ext .js,.vue src",
"test": "npm run lint",
"svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml"
},
"dependencies": {
"axios": "0.18.0",
"dhtmlx-gantt": "^7.1.12",
"docxtemplater": "^3.19.7",
"echarts": "^4.2.0-rc.2",
"element-ui": "^2.13.0",
"file-saver": "^1.3.8",
"html2canvas": "^1.0.0-alpha.12",
"jquery": "^3.5.1",
"js-cookie": "2.2.0",
"jspdf": "2.5.1",
"jszip-utils": "^0.1.0",
"mqtt": "^4.3.7",
"node-sass": "latest",
"normalize.css": "7.0.0",
"npm": "^7.20.5",
"nprogress": "0.2.0",
"qrcode": "^1.3.2",
"stylus": "0.52.4",
"stylus-loader": "^3.0.1",
"time-formater": "^1.0.3",
"uuid": "^9.0.0",
"v-viewer": "^1.3.1",
"view-ui-plus": "^1.3.1",
"vue": "2.5.17",
"vue-count-to": "^1.0.13",
"vue-direction-key": "^1.0.5",
"vue-router": "^3.0.7",
"vuex": "3.0.1",
"xlsx": "^0.14.0",
"xlsx-style": "^0.8.13"
},
"devDependencies": {
"autoprefixer": "8.5.0",
"babel-core": "6.26.0",
"babel-eslint": "8.2.6",
"babel-helper-vue-jsx-merge-props": "2.0.3",
"babel-loader": "7.1.5",
"babel-plugin-syntax-jsx": "6.18.0",
"babel-plugin-transform-runtime": "6.23.0",
"babel-plugin-transform-vue-jsx": "3.7.0",
"babel-preset-env": "1.7.0",
"babel-preset-stage-2": "6.24.1",
"chalk": "2.4.1",
"copy-webpack-plugin": "4.5.2",
"css-loader": "1.0.0",
"eslint": "4.19.1",
"eslint-friendly-formatter": "4.0.1",
"eslint-loader": "2.0.0",
"eslint-plugin-vue": "4.7.1",
"eventsource-polyfill": "0.9.6",
"file-loader": "1.1.11",
"friendly-errors-webpack-plugin": "1.7.0",
"html-webpack-plugin": "^4.5.2",
"mini-css-extract-plugin": "0.4.1",
"node-notifier": "5.2.1",
"optimize-css-assets-webpack-plugin": "5.0.0",
"ora": "3.0.0",
"portfinder": "1.0.16",
"postcss-import": "12.0.0",
"postcss-loader": "2.1.6",
"postcss-url": "7.3.2",
"raw-loader": "^4.0.2",
"rimraf": "2.6.2",
"sass-loader": "7.0.3",
"script-ext-html-webpack-plugin": "2.1.3",
"script-loader": "^0.7.2",
"semver": "5.5.0",
"shelljs": "0.8.2",
"svg-sprite-loader": "3.8.0",
"svgo": "1.0.5",
"uglifyjs-webpack-plugin": "1.2.7",
"url-loader": "1.0.1",
"vue-loader": "15.3.0",
"vue-style-loader": "4.1.2",
"vue-template-compiler": "2.5.17",
"webpack": "4.36.1",
"webpack-bundle-analyzer": "2.13.1",
"webpack-cli": "3.1.0",
"webpack-dev-server": "3.1.5",
"webpack-merge": "4.1.4"
},
"engines": {
"node": ">= 6.0.0",
"npm": ">= 3.0.0"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
]
}

View File

@@ -0,0 +1,45 @@
<template>
<div id="app">
<router-view v-if="isRouterAlive"/>
<ai-assistant v-if="showAiAssistant"/>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
import AiAssistant from '@/components/AiAssistant'
export default {
name: 'App',
components: {
AiAssistant
},
provide() {
return {
reload: this.reload
}
},
data() {
return {
isRouterAlive: true
}
},
computed: {
...mapGetters([
'token'
]),
showAiAssistant() {
const hiddenRoutes = ['/login', '/404', '/auth-redirect']
return Boolean(this.token) && hiddenRoutes.indexOf(this.$route.path) === -1
}
},
methods: {
reload() {
this.isRouterAlive = false
this.$nextTick(function() {
this.isRouterAlive = true
})
}
}
}
</script>

View File

@@ -0,0 +1,23 @@
2022-08-29:
SQL SEVER点检表、视图、存储过程增加
2022-08-30:
1、订单计划状态
0 已结束
1 生产中
2 未上线
3 未完成
4 已超额
删除修改状态判断修改
2、SQL SEVER
1装配质量数据查询质量数据查询_综合查询新
2物料数据查询物料数据查询_报表新
3过站信息查询质量数据查询_测量数据发动机在线状态_报表_NEW新
4分线质量查询质量数据分线_导出新
5分线物料查询物料数据分线查询_报表新
6生产计划订单完工MES_计划BOM_发动机订单计划_订单完工_报表新
7设备报警统计测量数据工位报警全部视图_查询新
8物料ANDONANDON_ANDON信息_备份_物料Andon综合查询新
9质量ANDONANDON_ANDON信息_备份_质量Andon综合查询新
10设备ANDONANDON_ANDON信息_备份_故障Andon综合查询新
2022-09-05:
1、基本变量写入修改

View File

@@ -0,0 +1,75 @@
import request from '@/utils/request'
import state from '@/store'
import router from '@/router'
// 初始化获取工艺
export function getTechnology() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间生产管理工艺_基础表_工艺名称_查询数据',
param: '工艺分类流水号_check=0'
}
})
}
// 查询表格数据
export function searchtable(pageCurrent, pageSize, num1, ManufacturerNumber) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '设备管理_设备加工能力_查询数据_设备维护',
param: '设备名称_check=' + num1 + '&设备名称=' + ManufacturerNumber,
Pagination: pageCurrent + '&' + pageSize
}
})
}
// 增加
export function edittype(ManufacturerNumber, ManufacturerName, ManufacturerAbbreviation, address, phNumber, Fax, Remarks, category, attention, EquipmentCondition) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '设备管理_设备加工能力_增加数据_设备维护New',
param: '设备名称=' + ManufacturerNumber + '&设备型号=' + ManufacturerName + '&设备性能指标=' + ManufacturerAbbreviation + '&设备工时系数=' + address + '&工艺编号=' + phNumber + '&班次类型=' + Fax + '&设备加工能力工时=' + Remarks + '&整改工时系数=' + category + '&设备编号=' + attention + '&预留工时系数=' + EquipmentCondition
}
})
}
// 编辑
export function handlechange(num, ManufacturerNumber, ManufacturerName, ManufacturerAbbreviation, address, phNumber, Fax, Remarks, category, attention, EquipmentCondition) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '设备管理_设备加工能力_修改数据_设备维护New',
param: '设备流水号=' + num + '&设备名称=' + ManufacturerNumber + '&设备型号=' + ManufacturerName + '&设备性能指标=' + ManufacturerAbbreviation + '&设备工时系数=' + address + '&工艺属性代码=' + phNumber + '&班次类型=' + Fax + '&设备加工能力工时=' + Remarks + '&整改工时系数=' + category + '&设备编号=' + attention + '&预留工时系数=' + EquipmentCondition
}
})
}
// 删除
export function handledelete(CoManufacturerFlowNumber) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '设备管理_设备加工能力_删除数据_设备维护',
param: '设备流水号=' + CoManufacturerFlowNumber
}
})
}

View File

@@ -0,0 +1,44 @@
import request from '@/utils/request'
import state from '@/store'
import router from '@/router'
// 初始化工位
export function getMachine() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间生产管理工艺_加工顺序调整_查询工位及人员'
}
})
}
// 获取状态
export function searchState() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: 'MES_机加工MES_设备状态查询_初始化'
}
})
}
export function getData3(num, num1, num2) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间生产管理_设备运行情况_查询数据_状态分布图_新',
param: '工位号=' + num + '&开始时间=' + num1 + '&结束时间=' + num2
}
})
}

View File

@@ -0,0 +1,31 @@
import request from '@/utils/request'
import state from '@/store'
import router from '@/router'
// 初始化日历
export function initClendar(year, month) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间生产管理工艺_基础表_工作日历_获得状态',
param: '工作年=' + year + '&工作月=' + month
}
})
}
// 修改工作状态
export function changeState(time, code) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间生产管理工艺_基础表_工作日历_设置状态',
param: '工作日期=' + time + '&工作日状态=' + code
}
})
}

View File

@@ -0,0 +1,57 @@
import request from '@/utils/request'
import state from '@/store'
import router from '@/router'
export function featchMaterial(num1, pageCurrent, pageSize) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间生产管理工艺_材质表_查询数据_根据材料名称',
param: '材料名称=' + num1,
pagination: pageCurrent + '&' + pageSize
}
})
}
export function addMaterial(num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间生产管理工艺_材质表_增加数据',
param: '材料=' + num1
}
})
}
export function delMaterial(num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间生产管理工艺_材质表_删除数据',
param: '材料流水号=' + num1
}
})
}
export function editMaterial(num1, num2) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间生产管理工艺_材质表_修改数据',
param: '材料流水号=' + num1 + '=int&材料=' + num2
}
})
}

View File

@@ -0,0 +1,199 @@
import request from '@/utils/request'
import state from '@/store'
import router from '@/router'
// 初始化角色
export function getRole() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '菜单系统模块_项目角色_查询数据_new'
}
})
}
// 根据角色查模块
export function getModule(role) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '3',
name: `select * from 基础表_角色模块信息 inner join 基础表_模块信息 on 基础表_角色模块信息.id = 基础表_模块信息.id where 角色编号=${role} and 是否禁用 = 0 order by 角色模块顺序`
}
})
}
// 初始化一级菜单
export function initFisrtLevel() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '3',
name: `select id,title from 基础表_模块信息 where [path] = '/' and 是否禁用 = 0`
}
})
}
// 初始化二级菜单
export function initSecondLevel() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '3',
name: `select id,title from 基础表_模块信息 where [path] <> '/' and 是否禁用 = 0`
}
})
}
// 撤回分配模块
export function returnModule(id, num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: `菜单管理_角色模块_删除数据`,
param: `id=${id}&角色编号=${num}`
}
})
}
// 上移模块
export function upModule(id, num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: `菜单管理_角色模块_上移数据`,
param: `id=${id}&角色编号=${num}`
}
})
}
// 上移模块验证
export function searchUpModule(id, num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: `菜单管理_角色模块_上移数据_验证`,
param: `id=${id}&角色编号=${num}`
}
})
}
// 下移模块
export function downModule(id, num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: `菜单管理_角色模块_下移数据`,
param: `id=${id}&角色编号=${num}`
}
})
}
// 下移模块验证
export function searchDownModule(id, num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: `菜单管理_角色模块_下移数据_验证`,
param: `id=${id}&角色编号=${num}`
}
})
}
// 分配一级模块
export function giveFirstLevel(idGroup, num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: `菜单管理_角色模块_一级_增加数据`,
param: `一级模块id组=${idGroup}&角色编号=${num}`
}
})
}
// 分配一级模块
export function giveSecondLevel(idGroup, num, pid) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: `菜单管理_角色模块_二级_增加数据`,
param: `二级模块id组=${idGroup}&角色编号=${num}&pid=${pid}`
}
})
}
// 新增一级菜单
export function submitAdd(name) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: `菜单管理_模块_一级_增加数据`,
param: `模块名称=${name}`
}
})
}
// 查询二级模块分给那些角色
export function getRoleTitle() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '3',
name: ` select distinct title from
基础表_模块信息 inner join 基础表_角色模块信息 on 基础表_角色模块信息.id = 基础表_模块信息.id
inner join 菜单系统模块_项目角色 on 基础表_角色模块信息.角色编号 = 菜单系统模块_项目角色.角色编号
order by title`
}
})
}
export function getRoleNameasd(name) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '3',
name: ` select distinct 角色功能 from
基础表_模块信息 inner join 基础表_角色模块信息 on 基础表_角色模块信息.id = 基础表_模块信息.id
inner join 菜单系统模块_项目角色 on 基础表_角色模块信息.角色编号 = 菜单系统模块_项目角色.角色编号
where title=\'${name}\'`
}
})
}

View File

@@ -0,0 +1,398 @@
import request from '@/utils/request'
import state from '@/store'
import router from '@/router'
export function projectSelect() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: 'PDM_项目名称_查询数据_按时间排序'
}
})
}
export function machineSelect() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: 'PDM_项目名称_查询数据'
}
})
}
export function groupSelect(machineValue) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: 'PDM_零件明细表_组件流水号_查询数据_根据机床',
param: `机床流水号=${machineValue}`
}
})
}
export function searchTable5(machineCheck, machine, groupCheck, group, part_check, part) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: 'PDM_零件明细表_外购件和标准件_临时表数据查询',
param: `机床名字_check=${machineCheck}&机床名字=${machine}&组号_check=${groupCheck}&组号=${group}&物料名称_check=${part_check}&物料名称=${part}`
}
})
}
export function searchTable6(machineCheck, machine, groupCheck, group, part_check, part) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: 'PDM_零件明细表_基本件_临时表数据查询',
param: `机床名字_check=${machineCheck}&机床名字=${machine}&组号_check=${groupCheck}&组号=${group}&零件图号_check=${part_check}&零件图号=${part}`
}
})
}
export function basicPartsData(machine_check, machine, group_check, group, part_check, part) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: 'PDM_零件明细表_基本件_查询数据_综合gj_数量维护',
param: `机床流水号_check=${machine_check}&机床流水号=${machine}&组件流水号_check=${group_check}&组件流水号=${group}&零件图号_check=${part_check}&零件图号=${part}`
}
})
}
export function purchasePartsData(machine_check, machine, group_check, num, part_check, part) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: 'PDM_零件明细表_标准件和外购件_查询数据_数量维护',
param: `机床流水号_check=${machine_check}&机床流水号=${machine}&组件流水号_check=${group_check}&组件流水号=${num}&物料名称_check=${part_check}&物料名称=${part}`
}
})
}
export function deleteBasicParts(basicNum) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: 'PDM_零件明细表_基本件_删除数据',
param: `基本件流水号=${basicNum}`
}
})
}
export function alldelete(basicNum) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: 'PDM_零件明细表_基本件_删除数据_根据组件流水号',
param: `基本件流水号组=${basicNum}`
}
})
}
export function deleteBasicParts5(basicNum) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: 'PDM_零件明细表_外购件和标准件_临时表_删除',
param: `id=${basicNum}`
}
})
}
export function alldeleteBasicParts5(machine, group) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: 'PDM_零件明细表_外购件和标准件_临时表_全部删除',
param: `机床=${machine}&组号=${group}`
}
})
}
export function deleteBasicParts6(basicNum) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: 'PDM_零件明细表_基本件_临时表_删除',
param: `id=${basicNum}`
}
})
}
export function alldeleteBasicParts6(machine, group) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: 'PDM_零件明细表_基本件_临时表_全部删除',
param: `机床=${machine}&组号=${group}`
}
})
}
export function deletePurchaseData(num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: 'PDM_零件明细表_标准件和外购件_删除数据',
param: '标准件和外购件流水号=' + num + '=int'
}
})
}
export function alldeleteWB(num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: 'PDM_零件明细表_标准件和外购件_删除数据_根据组件流水号',
param: '标准件和外购件流水号组=' + num
}
})
}
export function editPurchaseData(num, num1, people) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: 'PDM_零件明细表_标准件和外购件_修改数据',
param: '标准件和外购件流水号=' + num + '&零件数量=' + num1 + '&修改人员=' + people
}
})
}
export function editBasicParts(num, num1, num2, num3, num4, people) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: 'PDM_零件明细表_基本件_编辑数据',
param: '基本件流水号=' + num + '&零件数量=' + num1 + '&零件名称=' + num2 + '&零件图号=' + num3 + '&材料=' + num4 + '&修改人员=' + people
}
})
}
export function isExitBasicParts(num, num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: 'PDM_零件明细表_基本件_编辑数据_验证图号',
param: '基本件流水号=' + num + '&零件图号=' + num1
}
})
}
export function getTable(num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间生产管理工艺_零件工艺计划_已投产_按组查',
param: '组件流水号=' + num + '=int'
}
})
}
export function editProductNum(num, num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: 'MRP_计划订单_组件零件清单_基本件_编辑数据',
param: '组件零件基本件流水号=' + num + '&数量=' + num1
}
})
}
export function getTable1(num, a, b, c, d, e, f, g) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间生产管理工艺_新排产算法_能力平衡_查询数据_要平衡的零件_数量维护',
param: '机床流水号_check=' + b + '=string&机床流水号=' + c + '=int&组件流水号_check=' + d + '=string&组件流水号=' + e + '=int&零件图号_check=' + f + '=string&零件图号=' + g + '=string&是否查询全部数据=1=string&单件是否外协=1=int&考核状态=5=int'
}
})
}
export function editProduceNum(num, num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间生产管理工艺_零件工艺计划_修改数据',
param: '工艺计划流水号=' + num + '&零件数量=' + num1
}
})
}
// 查询表1标准件和外购件
export function searchTable1(...params) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '采购管理_采购部采购_查询物料_数量维护',
param: `机床流水号_check=${params[0]}&机床流水号=${params[1]}&组件流水号_check=${params[2]}&组件流水号=${params[3]}&物料状态=1`
}
})
}
// 查询表1基本件
export function searchTable2(...params) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '采购管理_采购部采购_查询物料_基本件_数量维护',
param: `机床流水号_check=${params[0]}&机床流水号=${params[1]}&组件流水号_check=${params[2]}&组件流水号=${params[3]}&物料状态=1`
}
})
}
export function editGroupPartNum(num, num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: 'MRP_计划订单_组件零件清单_编辑数据',
param: '组件零件流水号=' + num + '&零件数量=' + num1
}
})
}
export function editGroupBasicPartNum(num, num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: 'MRP_计划订单_组件零件清单_基本件_采购_编辑数据',
param: '组件零件基本件流水号=' + num + '&零件数量=' + num1
}
})
}
export function getmaterial() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '零件明细表_材料_查询'
}
})
}
// 查询物料
export function searchAllMaterial(check1, MaterialName, check2, MaterialSpec, check3, MaterialModel, pageCurrent, pageSize) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '库存管理_物料主文件_基本_查询数据_分页',
param: `物料名称_check=${check1}&物料名称=${MaterialName}&物料规格_check=${check2}&物料规格=${MaterialSpec}&物料型号_check=${check3}&物料型号=${MaterialModel}&PageCurrent=${pageCurrent}=int&PageSize=${pageSize}=int&PageCount=1=int=output&ItemCount=1=int=output`
}
})
}
// 物料变更
export function materialChange(num1, num2, num3, num4, person) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '采购管理_采购物料修改_零件数量维护_修改数据',
param: `组件零件流水号=${num1}&标准件和外购件流水号=${num2}&原物料流水号=${num3}&新物料流水号=${num4}&申请人=${person}`
}
})
}
// 修改组件数量
export function editgroupNum(num, num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: 'PDM_零件明细表_组件流水号_组件数量_修改数据',
param: '组件流水号=' + num + '&数量=' + num1
}
})
}

View File

@@ -0,0 +1,430 @@
import request from '@/utils/request'
import state from '@/store'
import router from '@/router'
export function getTree() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 1,
name: '人事档案管理_部门关系_查询节点',
param: '子节点=0=int'
}
})
}
export function tree(data, pid) {
const result = []
let temp
for (let i = 0; i < data.length; i++) {
if (data[i].父节点 === pid) {
const obj = { label: data[i].节点名称, id: data[i].子节点 }
temp = tree(data, data[i].子节点)
if (temp.length > 0) {
obj.children = temp
}
result.push(obj)
}
}
return result
}
export function getTablePeople(code, pageCurrent, pageSize) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 1,
name: '人事档案管理_人员_部门与人员_查询数据_根据部门编号',
param: '考核部门编号=' + code + '=int',
pagination: pageCurrent + '&' + pageSize
}
})
}
export function getTablePeopleForName(name) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 1,
name: '人事档案管理_人员名单_查询数据_根据姓名_MESWORK',
param: '姓名=' + name + '=string'
}
})
}
// 新增部门
export function addDepartmentName(num1, num2, num3) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 2,
name: '人事档案管理_部门关系_增加节点',
param: '父节点=' + num1 + '=int&节点名称=' + num2 + '=string&子节点=' + num3
}
})
}
// 删除部门
export function delList(num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 2,
name: '人事档案管理_部门关系_删除节点',
param: '子节点=' + num1 + '=int'
}
})
}
// 编辑部门
export function editList(num1, num2) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 2,
name: '人事档案管理_部门关系_修改节点',
param: '子节点=' + num1 + '=int&节点名称=' + num2 + '=string'
}
})
}
export function delPeopleList(num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 2,
name: '人事档案管理_人员名单_删除数据_MESWORK',
param: '人员编号=' + num1 + '=int'
}
})
}
export function initUniversity() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 1,
name: '人事档案管理_基础表_毕业院校_查询数据'
}
})
}
export function fetchEducationData() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 1,
name: '人事档案管理_基础表_学历_查询数据'
}
})
}
export function initMajor() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 1,
name: '人事档案管理_基础表_所学专业_查询数据'
}
})
}
export function fetchForeignLanguageLevelDate() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 1,
name: '人事档案管理_基础表_外语及熟练程度_查询数据'
}
})
}
export function fetchTitleData() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 1,
name: '人事档案管理_基础表_职称_查询数据'
}
})
}
export function fetchPostData() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 1,
name: '人事档案管理_基础表_人员岗位_查询数据'
}
})
}
export function fetchPositionStatusData() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 1,
name: '人事档案管理_基础表_岗位状态_查询数据'
}
})
}
export function addPeople(id, Sex, Education, Address, Nation, Post, AccountNumber, Password, Name, IDcard, TimeOfEntry, Birthday, ContactInformation, TeamValue) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 2,
name: '人事档案管理_人员名单_增加数据_MESWORK',
param: '考核部门编号=' + id + '=int&性别编号=' + Sex + '=int&学历编号=' + Education + '=int&家庭住址=' + Address + '&民族=' + Nation + '&岗位编号=' + Post + '=int&考勤编号=' + AccountNumber + '=string&密码=' + Password + '=string&姓名=' + Name + '=string&身份证号=' + IDcard + '=string&入公司时间=' + TimeOfEntry + '=string&出生日期=' + Birthday + '=string&联系电话=' + ContactInformation + '=string&班组=' + TeamValue
}
})
}
export function editPeople(id, Sex, Education, Address, Nation, Post, AccountNumber, Password, Name, IDcard, TimeOfEntry, Birthday, ContactInformation, TeamValue) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 2,
name: '人事档案管理_人员名单_修改数据_MESWORK',
param: '人员编号=' + id + '=int&性别编号=' + Sex + '=int&学历编号=' + Education + '=int&家庭住址=' + Address + '&民族=' + Nation + '&岗位编号=' + Post + '=int&考勤编号=' + AccountNumber + '=string&密码=' + Password + '=string&姓名=' + Name + '=string&身份证号=' + IDcard + '=string&入公司时间=' + TimeOfEntry + '=string&出生日期=' + Birthday + '=string&联系电话=' + ContactInformation + '=string&班组=' + TeamValue
}
})
}
export function moveGroups(num1, num2) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 2,
name: '人事档案管理_人员名单_移动数据_MESWORK',
param: '人员编号=' + num1 + '=int&考核部门编号=' + num2 + '=int'
}
})
}
export function feacthUniversity(num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 1,
name: '人事档案管理_基础表_毕业院校_查询数据_根据学校名_MESWORK',
param: '毕业院校名称=' + num1 + '=string'
}
})
}
export function addUniversity(num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 2,
name: '人事档案管理_基础表_毕业院校_增加数据',
param: '毕业院校名称=' + num1 + '=string'
}
})
}
export function editUniversity(num1, num2) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 2,
name: '人事档案管理_基础表_毕业院校_修改数据',
param: '毕业院校编号=' + num1 + '=int&毕业院校名称=' + num2 + '=string'
}
})
}
export function delUniversity(num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 2,
name: '人事档案管理_基础表_毕业院校_删除数据',
param: '毕业院校编号=' + num1 + '=int'
}
})
}
export function fetchMajor(num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 1,
name: '人事档案管理_基础表_所学专业_查询数据_根据专业名_MESWORK',
param: '专业名称=' + num1 + '=string'
}
})
}
export function addMajor(num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 2,
name: '人事档案管理_基础表_所学专业_增加数据',
param: '专业名称=' + num1 + '=string'
}
})
}
export function editMajor(num1, num2) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 2,
name: '人事档案管理_基础表_所学专业_修改数据',
param: '专业编号=' + num1 + '=int&专业名称=' + num2 + '=string'
}
})
}
export function delMajor(num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 2,
name: '人事档案管理_基础表_所学专业_删除数据',
param: '专业编号=' + num1 + '=int'
}
})
}
export function fetchPost(num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 1,
name: '人事档案管理_基础表_人员岗位_查询数据_根据岗位名_MESWORK',
param: '岗位名称=' + num1 + '=string'
}
})
}
export function addPost(num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 2,
name: '人事档案管理_基础表_人员岗位_增加数据',
param: '岗位名称=' + num1 + '=string'
}
})
}
export function editPost(num1, num2) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 2,
name: '人事档案管理_基础表_人员岗位_修改数据',
param: '岗位编号=' + num1 + '=int&岗位名称=' + num2 + '=string'
}
})
}
export function delPost(num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 2,
name: '人事档案管理_基础表_人员岗位_删除数据',
param: '岗位编号=' + num1 + '=int'
}
})
}
export function quit(num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 2,
name: '人事档案管理_人员_离职操作',
param: '人员编号=' + num1 + '=int'
}
})
}
export function searchLeavingList(pageCurrent, pageSize) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 1,
name: '人事档案管理_人员_离职人员查询',
pagination: pageCurrent + '&' + pageSize
}
})
}
export function fetchteamviwer() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 1,
name: '班组管理_班组查询'
}
})
}

View File

@@ -0,0 +1,58 @@
import request from '@/utils/request'
import state from '@/store'
import router from '@/router'
// 项目
export function getProject() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: 'PDM_项目名称_查询数据_是否显示_初始化',
param: '项目流水号_check=0=int&项目流水号=0'
}
})
}
// 机床
export function getToolNum(check, num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: 'PDM_项目名称_查询数据_是否显示_初始化',
param: '项目流水号_check=' + check + '=int&项目流水号=' + num
}
})
}
export function searchTable(check, num, check1, num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: 'PDM_项目名称_查询数据_是否显示',
param: '项目流水号_check=' + check + '=int&项目流水号=' + num + '&机床流水号_check=' + check1 + '=int&机床流水号=' + num1
}
})
}
export function upData(num, show) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: 'PDM_项目名称_查询数据_是否显示_更改状态',
param: '机床流水号=' + num + '&是否显示=' + show
}
})
}

View File

@@ -0,0 +1,88 @@
import request from '@/utils/request'
import state from '@/store'
import router from '@/router'
// 查询班次
export function getScheduling(SchedulingType) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '设备管理_基础表_班次表_查询数据',
param: '班次类型=' + SchedulingType
}
})
}
// 查询班次
export function searchProgramme() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '设备管理_基础表_班次表_查询班次'
}
})
}
// 新增班次
export function addShift(starttime, endtime, shifttype, shiftnumber, nightwork, work, temporary, difficult, note) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '设备管理_基础表_班次表_增加数据',
param: '开始工作时间=' + starttime + '&结束工作时间=' + endtime + '&班次类型=' + shifttype + '&班次代码=' + shiftnumber + '&是否夜班=' + nightwork + '&是否工作=' + work + '=int&是否可以安排临时件=' + temporary + '=int&是否可以安排高难度件=' + difficult + '=int&备注=' + note
}
})
}
// 编辑班次
export function editShift(shiftCode, starttime, endtime, shifttype, shiftnumber, nightwork, work, temporary, difficult, note) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '设备管理_基础表_班次表_修改数据',
param: '序号=' + shiftCode + '=int&开始工作时间=' + starttime + '=datetime&结束工作时间=' + endtime + '=datetime&班次类型=' + shifttype + '=int&班次代码=' + shiftnumber + '=int&是否夜班=' + nightwork + '=int&是否工作=' + work + '=int&是否可以安排临时件=' + temporary + '=int&是否可以安排高难度件=' + difficult + '=int&备注=' + note
}
})
}
// 删除班次
export function deleteShift(shiftCode) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '设备管理_基础表_班次表_删除数据',
param: '序号=' + shiftCode
}
})
}
// 班次类型与工作时间增加
export function addShiftType() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '设备管理_基础表_班次表_班次类型与工作时间_增加'
}
})
}

View File

@@ -0,0 +1,69 @@
import request from '@/utils/request'
import state from '@/store'
import router from '@/router'
export function InitRolefunction() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '菜单系统模块_项目角色_查询数据_MESWORK'
}
})
}
export function deleteData(code) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 2,
name: '菜单系统模块_项目角色_删除_MESWORK',
param: '角色编号=' + code + '=int'
}
})
}
export function searchTable(num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '菜单系统模块_项目角色_查询数据_MESWORK',
param: '角色功能=' + num + '=string'
}
})
}
export function addData(code) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 2,
name: '菜单系统模块_项目角色_增加_MESWORK',
param: '角色功能=' + code + '=string'
}
})
}
export function addData2(code1, num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 2,
name: '菜单系统模块_项目角色_修改数据_MESWORK',
param: '角色功能=' + code1 + '&角色编号=' + num1
}
})
}

View File

@@ -0,0 +1,98 @@
import request from '@/utils/request'
import state from '@/store'
import router from '@/router'
export function getRole() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '菜单系统模块_项目角色_查询数据_new'
}
})
}
export function getModule(role_check, role) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '菜单系统模块_项目主模块列表_查询数据_gj',
param: `角色编号_check=${role_check}&角色编号=${role}=int`
}
})
}
export function addModule(module, role) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '菜单系统模块_项目角色模块列表_增加数据_gj',
param: `角色编号=${role}=int&主模块编号=${module}=int`
}
})
}
export function deleteModule(module, role) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '菜单系统模块_项目角色模块列表_删除数据_gj',
param: `角色编号=${role}=int&主模块编号=${module}=int`
}
})
}
export function getModelData(role) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '菜单系统模块_项目主模块列表_查询单个模块_gj',
param: `主模块编号=${role}=int`
}
})
}
export function addModelData(component, title, icons) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '菜单系统模块_项目主模块列表_增加单个模块_gj',
param: `父路径=/${icons}&子名称=${icons}&子组件=${component}&标题=${title}&图标=${icons}`
}
})
}
export function editModelData(modelNum, component, title, icons) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '菜单系统模块_项目主模块列表_修改单个模块_gj',
param: `主模块编号=${modelNum}&父路径=/${icons}&子名称=${icons}&子组件=${component}&标题=${title}&图标=${icons}`
}
})
}

View File

@@ -0,0 +1,176 @@
import request from '@/utils/request'
import state from '@/store'
import router from '@/router'
// 查询项目名称
export function dialogtablevisible() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '人事档案管理_部门关系_查询节点',
param: '子节点=0'
}
})
}
export function dialogtablevisible1() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '人事档案管理_部门关系_查询节点',
param: '子节点=0'
}
})
}
export function addData1(code, groupNum) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 2,
name: '菜单系统模块_项目角色员工综合_增加数据',
param: '人员编号=' + code + '=int&角色编号=' + groupNum + '=int&项目编号=10=int'
}
})
}
export function addData2(lsh, code, groupNum) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 2,
name: '菜单系统模块_项目角色员工综合_修改数据',
param: '人员角色流水号=' + lsh + '&人员编号=' + code + '&角色编号=' + groupNum
}
})
}
// 初始化科室
export function initDepartment() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '人事档案管理_部门关系_查询节点'
}
})
}
// 初始化人员信息 弹出框
export function getTree() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 1,
name: '人事档案管理_部门关系_查询节点',
param: '子节点=0=int'
}
})
}
export function fn(data, pid) {
const result = []
let temp
for (let i = 0; i < data.length; i++) {
if (data[i].父节点 === pid) {
const obj = { label: data[i].节点名称, id: data[i].子节点 }
temp = fn(data, data[i].子节点)
if (temp.length > 0) {
obj.children = temp
}
result.push(obj)
}
}
return result
}
export function getTable8(code) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 1,
name: '人事档案管理_人员_部门与人员_查询数据_根据部门编号',
param: '考核部门编号=' + code + '=int'
}
})
}
export function handledelete(ryjslsh) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 2,
name: '菜单系统模块_项目角色员工综合_删除数据',
param: '人员角色流水号=' + ryjslsh + '=string'
}
})
}
export function deleteData(Number) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '菜单系统模块_项目角色员工综合_删除数据',
param: '人员角色流水号=' + Number + '=int'
}
})
}
export function searchdesigner(num2) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '人事档案管理_人员_部门与人员_查询数据_根据部门编号',
param: '考核部门编号=' + num2 + '=int'
}
})
}
export function initOrderType() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '菜单系统模块_项目角色_查询数据_new'
}
})
}
export function searchTable(check1, staffName, check2, systemAdministrator) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '菜单系统模块_项目角色员工综合_查询数据',
param: '姓名_check=' + check1 + '=int&姓名=' + staffName + '=string&角色编号_check=' + check2 + ' =int&角色编号=' + systemAdministrator + '=int'
}
})
}

View File

@@ -0,0 +1,184 @@
import request from '@/utils/request'
import state from '@/store'
import router from '@/router'
// 查工艺分类名称
export function searchProcessClassification() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间生产管理工艺_基础表_工艺分类名称_查询数据'
}
})
}
// 增加工艺分类
export function addProcessClassification(ProcessClassification) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间生产管理工艺_基础表_工艺分类名称_增加数据',
param: '工艺分类名称=' + ProcessClassification
}
})
}
// 编辑工艺分类
export function editProcessClassification(ProcessClassificationNum, ProcessClassification) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间生产管理工艺_基础表_工艺分类名称_修改数据',
param: '工艺分类流水号=' + ProcessClassificationNum + '&工艺分类名称=' + ProcessClassification
}
})
}
// 通过工艺编分类流水号查工艺分类名称
export function searchProcessClassificationOfProcessClassificationNum(ProcessNum) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间生产管理工艺_基础表_工艺分类名称_根据流水号_查询数据_MESWORK',
param: '工艺分类流水号=' + ProcessNum
}
})
}
// 删除工艺分类
export function delProcessClassification(ProcessClassificationNum) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间生产管理工艺_基础表_工艺分类名称_删除数据',
param: '工艺分类流水号=' + ProcessClassificationNum
}
})
}
// 通过工艺分类流水号查工艺名称
export function searchProcessNameOfProcessClassification(ProcessClassificationNum) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间生产管理工艺_基础表_工艺名称_查询数据_按工艺分类流水号查_MESWORK',
param: '工艺分类流水号=' + ProcessClassificationNum
}
})
}
// 通过工艺编号查工艺要求
export function searchTechnologicalRequirementsOfProcessNum(ProcessNum) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间生产管理_基础表_工艺要求_查询数据',
param: '工艺编号=' + ProcessNum
}
})
}
// 增加工艺
export function addProcess(ProcessClassificationNum, ProcessName, ShortName) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: 'dbo.车间生产管理工艺_基础表_工艺名称_增加数据',
param: '工艺分类流水号=' + ProcessClassificationNum + '&工艺名称=' + ProcessName + '&工艺名称简称=' + ShortName
}
})
}
// 编辑工艺
export function editProcess(ProcessClassificationNum, ProcessName, ShortName, Requirement) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间生产管理工艺_基础表_工艺名称_修改名称及简称',
param: '工艺编号=' + ProcessClassificationNum + '&工艺名称=' + ProcessName + '&工艺名称简称=' + ShortName + '&工艺要求=' + Requirement
}
})
}
// 删除工艺
export function delProcess(ProcessNum) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间生产管理工艺_基础表_工艺名称_删除数据',
param: '工艺编号=' + ProcessNum
}
})
}
// 新增工艺要求
export function addTechnologicalRequirements(ProcessClassificationNum, ProcessName) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间生产管理_基础表_工艺要求_增加数据',
param: '工艺编号=' + ProcessClassificationNum + '&工艺要求=' + ProcessName
}
})
}
// 编辑工艺要求
export function editTechnologicalRequirements(ProcessClassificationNum, ProcessName) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间生产管理_基础表_工艺要求_修改数据',
param: '工艺要求流水号=' + ProcessClassificationNum + '&工艺要求=' + ProcessName
}
})
}
// 删除工艺要求
export function delTechnologicalRequirements(ProcessClassificationNum) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间生产管理_基础表_工艺要求_删除数据',
param: '工艺要求流水号=' + ProcessClassificationNum
}
})
}

View File

@@ -0,0 +1,115 @@
import request from '@/utils/request'
import state from '@/store'
import router from '@/router'
// 初始化设备名称
export function getEquipment(id, equipmentNum) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '设备管理_设备名称与班次关系_查询数据',
param: `查询代码=${id}=int&设备流水号=${equipmentNum}`
}
})
}
export function getDepartment() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '设备管理_部门查询'
}
})
}
export function getTablePeople(number) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '人事档案管理_人员_部门与人员_查询数据_根据部门编号',
param: `考核部门编号=${number}`
}
})
}
export function getTableData(equipmentCheck, equipmentNameValue, operatorCheck, operatorNumber, pageCurrent, pageSize) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '设备管理_设备名称_人员关系_查询数据',
param: `设备流水号_check=${equipmentCheck}&设备流水号=${equipmentNameValue}&操作者编号_check=${operatorCheck}&操作者编号=${operatorNumber}`,
pagination: pageCurrent + '&' + pageSize
}
})
}
export function deleteTable(number) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '设备管理_设备名称_人员关系_删除数据',
param: '设备人员关系流水号=' + number + '=int'
}
})
}
export function getStaff() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '设备管理_基础表_班次表_查询班次'
}
})
}
export function addTable(equipmentNumber, shift, operator, operatorNumber) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '设备管理_设备名称_人员关系_增加数据',
param: '设备流水号=' + equipmentNumber + '=int&班次代码=' + shift + '=int&操作者=' + operator + '=string&操作者编号=' + operatorNumber + '=int'
}
})
}
export function editTable(equipmentNumber, shift, operator, operatorNumber, Number) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '设备管理_设备名称_人员关系_修改数据',
param: '设备流水号=' + equipmentNumber + '=int&班次代码=' + shift + '=int&操作者=' + operator + '=string&操作者编号=' + operatorNumber + '=int&设备人员关系流水号=' + Number + '=int'
}
})
}

View File

@@ -0,0 +1,199 @@
import request from '@/utils/request'
import state from '@/store'
import router from '@/router'
// 获取工位 表1
export function getTableData1() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '3',
name: `
SELECT 基础数据_点检类型名称.*,[基础数据_设备工位点检表].*,[MES_计划BOM_工位与名称].工位名称 FROM [基础数据_设备工位点检表]
inner join dbo.基础数据_点检类型名称
on [基础数据_设备工位点检表].点检表类型 = 基础数据_点检类型名称.点检表类型流水号
inner join [MES_计划BOM_工位与名称]
on [MES_计划BOM_工位与名称].工位号 = [基础数据_设备工位点检表].工位号
where MES_计划BOM_工位与名称.总线被监测工位 = 1
`
}
})
}
// 点检类型 表2
export function getTableData2() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '3',
name: 'select * from 基础数据_点检类型名称'
}
})
}
// 点检内容 表3
export function getTableData3(num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '3',
name: `select * from 基础数据_点检内容 where 点检表类型 = ${num}`
}
})
}
// 表1 编辑
export function editType(num1, num2) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '4',
name: `update [基础数据_设备工位点检表] set 点检表类型 = ${num1} where ID = ${num2}`
}
})
}
export function confirmEdit1(num1, num2) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '4',
name: `update [基础数据_点检类型名称] set 点检表类型名称 = '${num1}' where 点检表类型流水号 = ${num2}`
}
})
}
export function confirmEdit2(num1, num2, num3) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '4',
name: `update 基础数据_点检内容 set 保养周期 = ${num1} ,保养项目 = '${num2}' where ID = ${num3}`
}
})
}
export function openDelete1(num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '4',
name: `delete 基础数据_点检类型名称 where 点检表类型流水号 = ${num1}`
}
})
}
export function selectCount(num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '3',
name: `SELECT 工位号 FROM [基础数据_设备工位点检表] where 点检表类型 = ${num1}`
}
})
}
export function openDelete2(num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '4',
name: `delete 基础数据_点检内容 where ID = ${num1}`
}
})
}
export function submit1(num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '4',
name: `insert into 基础数据_点检类型名称 (点检表类型名称) values ('${num1}')`
}
})
}
export function submit2(num1, num2, num3) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '4',
name: ` declare @id int = 0
SELECT top 1 @id = ID FROM [dbo].基础数据_点检内容 order by ID desc
set @id = @id + 1
insert into 基础数据_点检内容 (点检任务编号,点检表类型,保养项目,保养周期) values (@id,${num1},'${num2}',${num3})`
}
})
}
export function exportOut(num1, num2, num3) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '3',
name: `SELECT *
,case when [FN1] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN1]) else '' end as [姓名1]
,case when [FN2] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN2]) else '' end as [姓名2]
,case when [FN3] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN3]) else '' end as [姓名3]
,case when [FN4] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN4]) else '' end as [姓名4]
,case when [FN5] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN5]) else '' end as [姓名5]
,case when [FN6] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN6]) else '' end as [姓名6]
,case when [FN7] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN7]) else '' end as [姓名7]
,case when [FN8] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN8]) else '' end as [姓名8]
,case when [FN9] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN9]) else '' end as [姓名9]
,case when [FN10] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN10]) else '' end as [姓名10]
,case when [FN11] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN11]) else '' end as [姓名11]
,case when [FN12] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN12]) else '' end as [姓名12]
,case when [FN13] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN13]) else '' end as [姓名13]
,case when [FN14] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN14]) else '' end as [姓名14]
,case when [FN15] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN15]) else '' end as [姓名15]
,case when [FN16] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN16]) else '' end as [姓名16]
,case when [FN17] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN17]) else '' end as [姓名17]
,case when [FN18] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN18]) else '' end as [姓名18]
,case when [FN19] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN19]) else '' end as [姓名19]
,case when [FN20] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN20]) else '' end as [姓名20]
,case when [FN21] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN21]) else '' end as [姓名21]
,case when [FN22] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN22]) else '' end as [姓名22]
,case when [FN23] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN23]) else '' end as [姓名23]
,case when [FN24] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN24]) else '' end as [姓名24]
,case when [FN25] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN25]) else '' end as [姓名25]
,case when [FN26] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN26]) else '' end as [姓名26]
,case when [FN27] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN27]) else '' end as [姓名27]
,case when [FN28] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN28]) else '' end as [姓名28]
,case when [FN29] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN29]) else '' end as [姓名29]
,case when [FN30] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN30]) else '' end as [姓名30]
,case when [FN31] in (select 人员编号 from 人事档案管理_人员名单) then (select 姓名 from 人事档案管理_人员名单 where 人员编号 = [FN31]) else '' end as [姓名31]
FROM
[基础数据_设备工位点检表] inner join [工位日点检任务记录]
on [基础数据_设备工位点检表].工位号 = [工位日点检任务记录].工位号
inner join [基础数据_点检内容]
on [工位日点检任务记录].点检任务编号 = [基础数据_点检内容].点检任务编号
where [基础数据_设备工位点检表].工位号 = '${num1}' and 年 = '${num2}' and 月 = '${num3}' order by [工位日点检任务记录].点检任务编号`
}
})
}

View File

@@ -0,0 +1,15 @@
import { ip } from '@/api/ipAddress'
import axios from 'axios'
// 排列表图
export function GetChart(OPNameCheck, opName, shaftNameCheck, shaftName, itemNameCheck, itemName, EngineTypeIDCheck, EngineTypeID, startTime, endTime, yangben, num) {
return axios.post(ip + '/submit/QualityData_XR.ashx?type=GetChart&OPNameCheck=' + OPNameCheck + '&OPName=' + opName + '&shaftNameCheck=' + shaftNameCheck + '&shaftName=' + shaftName + '&itemNameCheck=' + itemNameCheck + '&itemName=' + itemName + '&EngineTypeIDCheck=' + EngineTypeIDCheck + '&EngineTypeID=' + EngineTypeID + '&startTime=' + startTime + '&endTime=' + endTime + '&Yangben=' + yangben + '&Num=' + num)
}
// 均值图&极差图&正态分布图
export function GetBaseTrendData(OPNameCheck, opName, shaftNameCheck, shaftName, itemNameCheck, itemName, EngineTypeIDCheck, EngineTypeID, startTime, endTime, yangben, num) {
return axios.post(ip + '/submit/QualityData_XR.ashx?type=GetBaseTrendData&OPNameCheck=' + OPNameCheck + '&OPName=' + opName + '&shaftNameCheck=' + shaftNameCheck + '&shaftName=' + shaftName + '&itemNameCheck=' + itemNameCheck + '&itemName=' + itemName + '&EngineTypeIDCheck=' + EngineTypeIDCheck + '&EngineTypeID=' + EngineTypeID + '&startTime=' + startTime + '&endTime=' + endTime + '&Yangben=' + yangben + '&Num=' + num)
}
// 分析线及Y轴/X轴
export function GetMarkLineByConditent(OPNameCheck, opName, shaftNameCheck, shaftName, itemNameCheck, itemName, EngineTypeIDCheck, EngineTypeID, startTime, endTime, yangben, num) {
return axios.post(ip + '/submit/QualityData_XR.ashx?type=GetMarkLineByConditent&OPNameCheck=' + OPNameCheck + '&OPName=' + opName + '&shaftNameCheck=' + shaftNameCheck + '&shaftName=' + shaftName + '&itemNameCheck=' + itemNameCheck + '&itemName=' + itemName + '&EngineTypeIDCheck=' + EngineTypeIDCheck + '&EngineTypeID=' + EngineTypeID + '&startTime=' + startTime + '&endTime=' + endTime + '&Yangben=' + yangben + '&Num=' + num)
}

View File

@@ -0,0 +1,11 @@
import { ip } from '@/api/ipAddress'
import axios from 'axios'
// 均值图&极差图&正态分布图
export function GetBaseTrendData(OPNameCheck, opName, shaftNameCheck, shaftName, itemNameCheck, itemName, EngineTypeIDCheck, EngineTypeID, startTime, endTime, yangben, num) {
return axios.post(ip + '/submit/QualityData_XS.ashx?type=GetBaseTrendData&OPNameCheck=' + OPNameCheck + '&OPName=' + opName + '&shaftNameCheck=' + shaftNameCheck + '&shaftName=' + shaftName + '&itemNameCheck=' + itemNameCheck + '&itemName=' + itemName + '&EngineTypeIDCheck=' + EngineTypeIDCheck + '&EngineTypeID=' + EngineTypeID + '&startTime=' + startTime + '&endTime=' + endTime + '&Yangben=' + yangben + '&Num=' + num)
}
// 分析线及Y轴/X轴
export function GetMarkLineByConditent(OPNameCheck, opName, shaftNameCheck, shaftName, itemNameCheck, itemName, EngineTypeIDCheck, EngineTypeID, startTime, endTime, yangben, num) {
return axios.post(ip + '/submit/QualityData_XS.ashx?type=GetMarkLineByConditent&OPNameCheck=' + OPNameCheck + '&OPName=' + opName + '&shaftNameCheck=' + shaftNameCheck + '&shaftName=' + shaftName + '&itemNameCheck=' + itemNameCheck + '&itemName=' + itemName + '&EngineTypeIDCheck=' + EngineTypeIDCheck + '&EngineTypeID=' + EngineTypeID + '&startTime=' + startTime + '&endTime=' + endTime + '&Yangben=' + yangben + '&Num=' + num)
}

View File

@@ -0,0 +1,11 @@
import { ip } from '@/api/ipAddress'
import axios from 'axios'
// 获取表格数据--质量数据查询_综合查询_数据分组_大柴
export function getList(OPNameCheck, opName, shaftNameCheck, measureName, EngineTypeIDCheck, model, itemNameCheck, measureContent, startTime, endTime, yangben, num, pageSize, pageCurrent) {
return axios.post(ip + '/submit/QualityData_Histogram.ashx?type=GetDataTableByConditent&OPNameCheck=' + OPNameCheck + '&OPName=' + opName + '&shaftNameCheck=' + shaftNameCheck + '&shaftName=' + measureName + '&EngineTypeIDCheck=' + EngineTypeIDCheck + '&EngineTypeID=' + model + '&itemNameCheck=' + itemNameCheck + '&itemName=' + measureContent + '&startTime=' + startTime + '&endTime=' + endTime + '&Yangben=' + yangben + '&Num=' + num + '&page=' + pageCurrent + '&rows=' + pageSize)
}
// 获取图形数据--质量数据查询_综合查询_数据分组_绘趋势图_DC
export function getLine(OPNameCheck, opName, shaftNameCheck, measureName, EngineTypeIDCheck, model, itemNameCheck, measureContent, startTime, endTime, yangben, num) {
return axios.post(ip + '/submit/QualityData_Pareto.ashx?type=GetChart&OPNameCheck=' + OPNameCheck + '&OPName=' + opName + '&shaftNameCheck=' + shaftNameCheck + '&shaftName=' + measureName + '&EngineTypeIDCheck=' + EngineTypeIDCheck + '&EngineTypeID=' + model + '&itemNameCheck=' + itemNameCheck + '&itemName=' + measureContent + '&startTime=' + startTime + '&endTime=' + endTime + '&Yangben=' + yangben + '&Num=' + num)
}

View File

@@ -0,0 +1,15 @@
import { ip } from '@/api/ipAddress'
import axios from 'axios'
// 获取表格数据--质量数据_发动机质量数据_各个工位_视图_综合查询_趋势图_LLJ
export function getList(OPNameCheck, opName, shaftNameCheck, shaftName, itemNameCheck, itemName, EngineTypeIDCheck, EngineTypeID, timeValue, pageSize, pageCurrent) {
return axios.post(ip + '/submit/QualityData_TrendPictureBasic.ashx?type=GetDataTableByConditent&OPNameCheck=' + OPNameCheck + '&OPName=' + opName + '&shaftNameCheck=' + shaftNameCheck + '&shaftName=' + shaftName + '&itemNameCheck=' + itemNameCheck + '&itemName=' + itemName + '&EngineTypeIDCheck=' + EngineTypeIDCheck + '&EngineTypeID=' + EngineTypeID + '&startTime=' + timeValue[0] + '&endTime=' + timeValue[1] + '&page=' + pageCurrent + '&rows=' + pageSize)
}
// ------质量数据_发动机质量数据_各个工位_视图_综合查询_趋势图
export function getLine(OPNameCheck, opName, shaftNameCheck, shaftName, itemNameCheck, itemName, EngineTypeIDCheck, EngineTypeID, startTime, endTime, pageSize, pageCurrent) {
return axios.post(ip + '/submit/QualityData_TrendPictureBasic.ashx?type=GetMarkLineByConditent&OPNameCheck=' + OPNameCheck + '&OPName=' + opName + '&shaftNameCheck=' + shaftNameCheck + '&shaftName=' + shaftName + '&itemNameCheck=' + itemNameCheck + '&itemName=' + itemName + '&EngineTypeIDCheck=' + EngineTypeIDCheck + '&EngineTypeID=' + EngineTypeID + '&startTime=' + startTime + '&endTime=' + endTime + '&page=' + pageCurrent + '&rows=' + pageSize)
}
// 获取图形数据--质量数据查询_综合查询_绘趋势图_DC
export function getEchart(OPNameCheck, opName, shaftNameCheck, shaftName, itemNameCheck, itemName, EngineTypeIDCheck, EngineTypeID, startTime, endTime) {
return axios.post(ip + '/submit/QualityData_TrendPictureBasic.ashx?type=GetBaseTrendData&OPNameCheck=' + OPNameCheck + '&OPName=' + opName + '&shaftNameCheck=' + shaftNameCheck + '&shaftName=' + shaftName + '&itemNameCheck=' + itemNameCheck + '&itemName=' + itemName + '&EngineTypeIDCheck=' + EngineTypeIDCheck + '&EngineTypeID=' + EngineTypeID + '&startTime=' + startTime + '&endTime=' + endTime)
}

View File

@@ -0,0 +1,15 @@
import { ip } from '@/api/ipAddress'
import axios from 'axios'
// 获取表格数据--质量数据查询_综合查询_数据分组_大柴
export function getList(OPNameCheck, opName, shaftNameCheck, measureName, EngineTypeIDCheck, model, itemNameCheck, measureContent, startTime, endTime, yangben, num, pageSize, pageCurrent) {
return axios.post(ip + '/submit/QualityData_Histogram.ashx?type=GetDataTableByConditent&OPNameCheck=' + OPNameCheck + '&OPName=' + opName + '&shaftNameCheck=' + shaftNameCheck + '&shaftName=' + measureName + '&EngineTypeIDCheck=' + EngineTypeIDCheck + '&EngineTypeID=' + model + '&itemNameCheck=' + itemNameCheck + '&itemName=' + measureContent + '&startTime=' + startTime + '&endTime=' + endTime + '&Yangben=' + yangben + '&Num=' + num + '&page=' + pageCurrent + '&rows=' + pageSize)
}
// 获取图形数据--质量数据查询_综合查询_数据分组_大柴
export function getLine(OPNameCheck, opName, shaftNameCheck, measureName, EngineTypeIDCheck, model, itemNameCheck, measureContent, startTime, endTime, yangben, num) {
return axios.post(ip + '/submit/QualityData_Histogram.ashx?type=data1&OPNameCheck=' + OPNameCheck + '&OPName=' + opName + '&shaftNameCheck=' + shaftNameCheck + '&shaftName=' + measureName + '&EngineTypeIDCheck=' + EngineTypeIDCheck + '&EngineTypeID=' + model + '&itemNameCheck=' + itemNameCheck + '&itemName=' + measureContent + '&startTime=' + startTime + '&endTime=' + endTime + '&Yangben=' + yangben + '&Num=' + num)
}
// 获取x轴数据--质量数据查询_综合查询_数据分组_大柴
export function getxData(OPNameCheck, opName, shaftNameCheck, measureName, EngineTypeIDCheck, model, itemNameCheck, measureContent, startTime, endTime, yangben, num) {
return axios.post(ip + '/submit/QualityData_Histogram.ashx?type=data&OPNameCheck=' + OPNameCheck + '&OPName=' + opName + '&shaftNameCheck=' + shaftNameCheck + '&shaftName=' + measureName + '&EngineTypeIDCheck=' + EngineTypeIDCheck + '&EngineTypeID=' + model + '&itemNameCheck=' + itemNameCheck + '&itemName=' + measureContent + '&startTime=' + startTime + '&endTime=' + endTime + '&Yangben=' + yangben + '&Num=' + num)
}

View File

@@ -0,0 +1,24 @@
import { ip } from '@/api/ipAddress'
import axios from 'axios'
// 获取表格数据--质量数据查询_综合查询_数据分组_大柴
export function bargetList(OPNameCheck, opName, shaftNameCheck, measureName, EngineTypeIDCheck, model, itemNameCheck, measureContent, startTime, endTime, yangben, num, pageSize, pageCurrent) {
return axios.post(ip + '/submit/QualityData_Histogram.ashx?type=GetDataTableByConditent&OPNameCheck=' + OPNameCheck + '&OPName=' + opName + '&shaftNameCheck=' + shaftNameCheck + '&shaftName=' + measureName + '&EngineTypeIDCheck=' + EngineTypeIDCheck + '&EngineTypeID=' + model + '&itemNameCheck=' + itemNameCheck + '&itemName=' + measureContent + '&startTime=' + startTime + '&endTime=' + endTime + '&Yangben=' + yangben + '&Num=' + num + '&page=' + pageCurrent + '&rows=' + pageSize)
}
// 获取图形数据--质量数据查询_综合查询_数据分组_大柴
export function bargetLine(OPNameCheck, opName, shaftNameCheck, measureName, EngineTypeIDCheck, model, itemNameCheck, measureContent, startTime, endTime, yangben, num) {
return axios.post(ip + '/submit/QualityData_Histogram.ashx?type=data1&OPNameCheck=' + OPNameCheck + '&OPName=' + opName + '&shaftNameCheck=' + shaftNameCheck + '&shaftName=' + measureName + '&EngineTypeIDCheck=' + EngineTypeIDCheck + '&EngineTypeID=' + model + '&itemNameCheck=' + itemNameCheck + '&itemName=' + measureContent + '&startTime=' + startTime + '&endTime=' + endTime + '&Yangben=' + yangben + '&Num=' + num)
}
// 获取x轴数据--质量数据查询_综合查询_数据分组_大柴
export function bargetxData(OPNameCheck, opName, shaftNameCheck, measureName, EngineTypeIDCheck, model, itemNameCheck, measureContent, startTime, endTime, yangben, num) {
return axios.post(ip + '/submit/QualityData_Histogram.ashx?type=data&OPNameCheck=' + OPNameCheck + '&OPName=' + opName + '&shaftNameCheck=' + shaftNameCheck + '&shaftName=' + measureName + '&EngineTypeIDCheck=' + EngineTypeIDCheck + '&EngineTypeID=' + model + '&itemNameCheck=' + itemNameCheck + '&itemName=' + measureContent + '&startTime=' + startTime + '&endTime=' + endTime + '&Yangben=' + yangben + '&Num=' + num)
}
// 获取表格数据--质量数据查询_综合查询_数据分组_大柴
export function linegetList(OPNameCheck, opName, shaftNameCheck, measureName, EngineTypeIDCheck, model, itemNameCheck, measureContent, startTime, endTime, yangben, num, pageSize, pageCurrent) {
return axios.post(ip + '/submit/QualityData_Histogram.ashx?type=GetDataTableByConditent&OPNameCheck=' + OPNameCheck + '&OPName=' + opName + '&shaftNameCheck=' + shaftNameCheck + '&shaftName=' + measureName + '&EngineTypeIDCheck=' + EngineTypeIDCheck + '&EngineTypeID=' + model + '&itemNameCheck=' + itemNameCheck + '&itemName=' + measureContent + '&startTime=' + startTime + '&endTime=' + endTime + '&Yangben=' + yangben + '&Num=' + num + '&page=' + pageCurrent + '&rows=' + pageSize)
}
// 获取图形数据
export function linegetLine(OPNameCheck, opName, shaftNameCheck, measureName, EngineTypeIDCheck, model, itemNameCheck, measureContent, startTime, endTime, yangben, num, Usl, Lsl) {
return axios.post(ip + '/submit/QualityData_NormalDistribution.ashx?type=GetBaseTrendData&OPNameCheck=' + OPNameCheck + '&OPName=' + opName + '&shaftNameCheck=' + shaftNameCheck + '&shaftName=' + measureName + '&EngineTypeIDCheck=' + EngineTypeIDCheck + '&EngineTypeID=' + model + '&itemNameCheck=' + itemNameCheck + '&itemName=' + measureContent + '&startTime=' + startTime + '&endTime=' + endTime + '&Yangben=' + yangben + '&Num=' + num + '&Usl=' + Usl + '&Lsl=' + Lsl)
}

View File

@@ -0,0 +1,11 @@
import { ip } from '@/api/ipAddress'
import axios from 'axios'
// 获取表格数据--质量数据查询_综合查询_数据分组_大柴
export function getList(OPNameCheck, opName, shaftNameCheck, measureName, EngineTypeIDCheck, model, itemNameCheck, measureContent, startTime, endTime, yangben, num, pageSize, pageCurrent) {
return axios.post(ip + '/submit/QualityData_Histogram.ashx?type=GetDataTableByConditent&OPNameCheck=' + OPNameCheck + '&OPName=' + opName + '&shaftNameCheck=' + shaftNameCheck + '&shaftName=' + measureName + '&EngineTypeIDCheck=' + EngineTypeIDCheck + '&EngineTypeID=' + model + '&itemNameCheck=' + itemNameCheck + '&itemName=' + measureContent + '&startTime=' + startTime + '&endTime=' + endTime + '&Yangben=' + yangben + '&Num=' + num + '&page=' + pageCurrent + '&rows=' + pageSize)
}
// 获取图形数据
export function getLine(OPNameCheck, opName, shaftNameCheck, measureName, EngineTypeIDCheck, model, itemNameCheck, measureContent, startTime, endTime, yangben, num, Usl, Lsl) {
return axios.post(ip + '/submit/QualityData_NormalDistribution.ashx?type=GetBaseTrendData&OPNameCheck=' + OPNameCheck + '&OPName=' + opName + '&shaftNameCheck=' + shaftNameCheck + '&shaftName=' + measureName + '&EngineTypeIDCheck=' + EngineTypeIDCheck + '&EngineTypeID=' + model + '&itemNameCheck=' + itemNameCheck + '&itemName=' + measureContent + '&startTime=' + startTime + '&endTime=' + endTime + '&Yangben=' + yangben + '&Num=' + num + '&Usl=' + Usl + '&Lsl=' + Lsl)
}

View File

@@ -0,0 +1,11 @@
import { ip } from '@/api/ipAddress'
import axios from 'axios'
// 获取表格数据--质量数据查询_综合查询_数据分组_大柴
export function getList(OPNameCheck, opName, shaftNameCheck, measureName, EngineTypeIDCheck, model, itemNameCheck, measureContent, startTime, endTime, yangben, num, pageSize, pageCurrent) {
return axios.post(ip + '/submit/QualityData_TrendPicture.ashx?type=GetDataTableByConditent&OPNameCheck=' + OPNameCheck + '&OPName=' + opName + '&shaftNameCheck=' + shaftNameCheck + '&shaftName=' + measureName + '&EngineTypeIDCheck=' + EngineTypeIDCheck + '&EngineTypeID=' + model + '&itemNameCheck=' + itemNameCheck + '&itemName=' + measureContent + '&startTime=' + startTime + '&endTime=' + endTime + '&Yangben=' + yangben + '&Num=' + num + '&page=' + pageCurrent + '&rows=' + pageSize)
}
// 获取图形数据--质量数据查询_综合查询_数据分组_绘趋势图_DC
export function getLine(OPNameCheck, opName, shaftNameCheck, measureName, EngineTypeIDCheck, model, itemNameCheck, measureContent, startTime, endTime, yangben, num) {
return axios.post(ip + '/submit/QualityData_TrendPicture.ashx?type=GetBaseTrendData&OPNameCheck=' + OPNameCheck + '&OPName=' + opName + '&shaftNameCheck=' + shaftNameCheck + '&shaftName=' + measureName + '&EngineTypeIDCheck=' + EngineTypeIDCheck + '&EngineTypeID=' + model + '&itemNameCheck=' + itemNameCheck + '&itemName=' + measureContent + '&startTime=' + startTime + '&endTime=' + endTime + '&Yangben=' + yangben + '&Num=' + num)
}

View File

@@ -0,0 +1,4 @@
export const ip = 'http://localhost:8051'
// export const ip = 'http://124.220.15.242:8154' // AP
// export const ip = 'http://124.220.15.242:8153' // 福田

View File

@@ -0,0 +1,47 @@
import request from '@/utils/request'
export function login(username, password) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '菜单系统模块_用户名密码_查询数据_new2',
param: `用户名=${username}&密码=${password}`
}
})
}
export function getInfo(token) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: `菜单系统模块_获取角色模块_查询数据`,
param: `角色编号=${token}`
}
})
}
// 查询按钮功能实现
export function editPassword(num1, num2, num3, num4) {
return request({
url: '',
method: 'post',
data: {
type: '2',
name: '账号信息_修改密码_MESWORK',
param: '考勤编号=' + num1 + '=int&原始密码=' + num2 + '=string&新密码=' + num3 + '=string&返回=' + num4 + '=string=output'
}
})
}
export function cloudEditPassword(num1, num2) {
return request({
url: '',
method: 'post',
data: {
type: '2',
name: '人事档案管理_人员名单_云上改密码',
param: 'id=' + num1 + '=int&新密码=' + num2 + '=string'
}
})
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 590 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 810 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 KiB

View File

@@ -0,0 +1,142 @@
import request from '@/utils/request'
import state from '@/store'
import router from '@/router'
// 初始化机床项目
export function initProject() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: 'PDM_项目名称_查询数据'
}
})
}
// 组件查询
export function searchgroup(num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: 'PDM_组件名称_查询数据',
param: '机床流水号=' + num
}
})
}
// 机床查询
export function searchTable1(machineNumberValue, check2) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间装配管理_机床信息_查询数据',
param: '机床流水号_check=' + check2 + '&机床流水号=' + machineNumberValue
}
})
}
export function editData(machineNumberValue, num1, num2, num3, num4) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: 'PDM_机床名称_机床状态_修改数据_编辑',
param: '机床流水号=' + machineNumberValue + '&机床装配开始时间=' + num1 + '=datetime' + '&机床装配实际完成时间=' + num2 + '=datetime' + '&调试开始时间=' + num3 + '=datetime' + '&调试结束时间=' + num4 + '=datetime'
}
})
}
// // 组件查询
// export function searchTable2(machineNumberValue, check2, groupNumberValue, check3) {
// return request({
// url: '',
// method: 'post',
// data: {
// type: '1',
// name: '车间管理_基本件采购_查询数据',
// param: '机床流水号_check=' + check2 + '&机床流水号=' + machineNumberValue + '&组件流水号_check=' + check3 + '&组件流水号=' + groupNumberValue
// }
// })
// }
// 机床名称_机床状态_修改数据
export function MachineToolStateUpdate(machineNumberValue, check) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: 'PDM_机床名称_机床状态_修改数据',
param: '机床流水号=' + machineNumberValue + '&装配状态=' + check
}
})
}
// 机床名称_调试状态_修改数据
export function DebugStatusUpdate(machineNumberValue, check) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: 'PDM_机床名称_调试状态_修改数据',
param: '机床流水号=' + machineNumberValue + '&调试状态=' + check
}
})
}
// 组件名称_组件状态_修改数据
export function ComponentStateUpdate() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间管理_工作计划_执行计划',
param: '计划流水号=' + arguments[0] + '&是否工作=' + arguments[1]
}
})
}
// 车间管理_工作计划_查询
// 2019/8/3 16:40:23
export function searchTable2() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间管理_工作计划_查询',
param: '机床流水号=' + arguments[0] + '&计划类型=' + arguments[1]
}
})
}
// 车间管理_工作计划_执行计划_编辑
export function submitTable2() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间管理_工作计划_执行计划_编辑',
param: '备注=' + arguments[0] + '&计划流水号=' + arguments[1] + '&实际工时=' + arguments[2] + '&修补工时=' + arguments[3]
}
})
}

View File

@@ -0,0 +1,100 @@
import request from '@/utils/request'
import state from '@/store'
import router from '@/router'
// 初始化项目
export function initProject() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: 'PDM_项目名称_查询数据'
}
})
}
// 查询组件工艺
export function searchDetail(num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间装配管理_组件工艺_查询数据',
param: '机床流水号=' + num
}
})
}
// 查询工序
export function searchProcess(num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间装配管理_装配工序_查询数据',
param: '组件工艺流水号=' + num
}
})
}
// 编辑
export function update(num, num1, num2, num3, num4) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间装配管理_装配工序工时_编辑数据',
param: '装配工序流水号=' + num + '&实际工时=' + num1 + '&完成情况=' + num2 + '&检验情况=' + num3 + '&备注=' + num4
}
})
}
export function getTree() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 1,
name: '人事档案管理_部门关系_查询节点',
param: '子节点=0=int'
}
})
}
export function getTable8(code) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: 1,
name: '人事档案管理_人员_部门与人员_查询数据_根据部门编号',
param: '考核部门编号=' + code + '=int'
}
})
}
export function fn(data, pid) {
const result = []
let temp
for (let i = 0; i < data.length; i++) {
if (data[i].父节点 === pid) {
const obj = { label: data[i].节点名称, id: data[i].子节点 }
temp = fn(data, data[i].子节点)
if (temp.length > 0) {
obj.children = temp
}
result.push(obj)
}
}
return result
}

View File

@@ -0,0 +1,153 @@
import request from '@/utils/request'
import state from '@/store'
import router from '@/router'
// 初始化机床项目
export function initProject() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间装配管理_装配MES_机床编号_查询数据'
}
})
}
export function initProjectNew(role, personnel) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '机床_查询_营销筛选',
param: '角色编号=' + role + '&人员编号=' + personnel
}
})
}
export function searchTable(check, machineNumberValue, check1, startTime, endTime, check2, stateValue, check3, workerValue) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间管理_装配任务_MES_查询数据',
param: '机床流水号_check=' + check + '&机床流水号=' + machineNumberValue + '&时间段_check=' + check1 + '&开始时间=' + startTime + '&结束时间=' + endTime + '&状态_check=' + check2 + '&状态=' + stateValue + '&人员_check=' + check3 + '&人员=' + workerValue
}
})
}
export function searchTableALL(check, machineNumberValue, check1, startTime, endTime, check2, stateValue, check3, workerValue, role, personnel) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间管理_装配任务_MES_查询数据_全部',
param: '机床流水号_check=' + check + '&机床流水号=' + machineNumberValue + '&时间段_check=' + check1 + '&开始时间=' + startTime + '&结束时间=' + endTime + '&状态_check=' + check2 + '&状态=' + stateValue + '&人员_check=' + check3 + '&人员=' + workerValue + '&角色编号=' + role + '&人员编号=' + personnel
}
})
}
// 获取分配后装配人员
export function searchName(num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间管理_装配计划_装配工_查询数据',
param: '计划流水号=' + num
}
})
}
export function ComponentStateUpdate() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间管理_工作计划_执行计划',
param: '计划流水号=' + arguments[0] + '&是否工作=' + arguments[1] + '&考勤编号=' + arguments[2]
}
})
}
export function submitSuspend() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间管理_工作计划_暂停计划',
param: '计划流水号=' + arguments[0] + '&是否暂停=' + arguments[1]
}
})
}
// 获取装配人员
export function searchPeople() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '人事档案管理_人员_部门与人员_查询数据_根据部门编号',
param: '考核部门编号=11'
}
})
}
export function submitRework() {
return request({
url: '',
method: 'post',
data: {
type: '2',
name: '车间装配管理_装配任务_返工',
param: '计划流水号=' + arguments[0] + '&返工原因=' + arguments[1] + '&返工工时=' + arguments[2]
}
})
}
export function searchReworkMX(num) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '车间装配管理_装配任务_返工记录_查询',
param: '计划流水号=' + num
}
})
}
export function searchProcess(num) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '车间装配管理_装配工艺_查询',
param: '计划流水号=' + num
}
})
}
export function submitRemark(num, remark) {
return request({
url: '',
method: 'post',
data: {
type: '2',
name: '车间装配管理_装配工艺_备注编辑',
param: '计划流水号=' + num + '&备注=' + remark
}
})
}

View File

@@ -0,0 +1,46 @@
import request from '@/utils/request'
import state from '@/store'
import router from '@/router'
// 初始化项目
export function initProject() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: 'PDM_项目名称_查询数据'
}
})
}
// 主表查询
export function searchTable(check1, machineNumberValue, check2, time, time1, pageCurrent, pageSize) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间装配管理_计划信息_查询数据',
param: '机床流水号_check=' + check1 + '=int&机床流水号=' + machineNumberValue + '&计划完成日期_check=' + check2 + '=int&开始时间=' + time + '&结束时间=' + time1,
Pagination: pageCurrent + '&' + pageSize
}
})
}
// 计划下发
export function goDown(ProjectSerialNumber, MachineSerialNumber, ProcessStartTime, ProcessEndTime, TimeToGo) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间装配管理_装配计划_下发',
param: '项目流水号=' + ProjectSerialNumber + '&机床流水号=' + MachineSerialNumber + '&工艺开始时间=' + ProcessStartTime + '&工艺结束时间=' + ProcessEndTime + '&下发时间=' + TimeToGo
}
})
}

View File

@@ -0,0 +1,59 @@
import request from '@/utils/request'
import state from '@/store'
import router from '@/router'
// 初始化项目
export function initProject() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: 'PDM_项目名称_查询数据'
}
})
}
export function initPerson() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '人事档案管理_人员_部门与人员_查询数据_根据部门编号',
param: '考核部门编号=9=int'
}
})
}
// 主表查询
export function searchTable(check1, machineNumberValue, pageCurrent, pageSize) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间装配管理_工艺任务_查询数据',
param: '机床流水号_check=' + check1 + '=int&机床流水号=' + machineNumberValue,
Pagination: pageCurrent + '&' + pageSize
}
})
}
// 任务分配
export function Preservation(ProcessSerialNumber, PersonnelNumber) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间装配管理_装配工艺_任务分配',
param: '工艺计划流水号=' + ProcessSerialNumber + '&人员编号=' + PersonnelNumber
}
})
}

View File

@@ -0,0 +1,324 @@
import request from '@/utils/request'
import state from '@/store'
import router from '@/router'
// 初始化 工艺员A
export function initCraftmen() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '人事档案管理_人员_部门与人员_查询数据_根据部门编号',
param: '考核部门编号=9'
}
})
}
// 初始化 工序分类
export function initprocessNameClass() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间装配管理_工序分类_查询数据'
}
})
}
// 初始化 机床分类
export function initmachineType() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间装配管理_机床分类_查询数据'
}
})
}
// 查询机床编号
export function SearchMachine(num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间装配管理_典型机床_查询数据',
param: '机床分类流水号=' + num
}
})
}
// 查询工序名称
export function initProcessName(num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间装配管理_工序名称_查询数据',
param: '工序分类流水号=' + num
}
})
}
// 查询机床
export function searchMachine(num, num1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间装配管理_机床编号_查询数据',
param: '人员编号=' + num + '&是否编制=' + num1
}
})
}
// 查询组件
export function searchGroup(num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间装配管理_组件名称_查询数据',
param: '机床流水号=' + num
}
})
}
// 查询组件工艺
export function searchDetail(num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间装配管理_组件工艺_查询数据',
param: '机床流水号=' + num
}
})
}
// 增加组件工艺
export function submitAdd(machineNumberValue, SerialNumber, Group, AssemblyTask, GroupNumberValue1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间装配管理_组件工艺_增加数据',
param: '机床流水号=' + machineNumberValue + '&序号=' + SerialNumber + '&组号=' + Group + '&装配任务=' + AssemblyTask + '&组件流水号=' + GroupNumberValue1
}
})
}
// 编辑组件工艺
export function submitEdit(GroupProcessNumber, SerialNumber, Group, AssemblyTask, GroupNumberValue1) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间装配管理_组件工艺_编辑数据',
param: '组件工艺流水号=' + GroupProcessNumber + '&序号=' + SerialNumber + '&组号=' + Group + '&装配任务=' + AssemblyTask + '&组件流水号=' + GroupNumberValue1
}
})
}
// 删除组件工艺
export function deleteGroup(GroupProcessNumber) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间装配管理_组件工艺_删除数据',
param: '组件工艺流水号=' + GroupProcessNumber
}
})
}
// 查询工序
export function searchProcess(num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '车间装配管理_装配工序_查询数据',
param: '组件工艺流水号=' + num
}
})
}
// 增加工序
export function insertOne(num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间装配管理_装配工序_增加数据',
param: '组件工艺流水号=' + num
}
})
}
// 编辑工序
export function update(num, num1, num2, num3, num4) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间装配管理_装配工序_编辑数据',
param: '装配工序流水号=' + num + '&序号=' + num1 + '&工序名称=' + num2 + '&工艺内容及装配具体要求=' + num3 + '&质检=' + num4
}
})
}
// 编辑工序1
export function update1(num, num1, num2, num3) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间装配管理_装配工序_编辑数据',
param: '装配工序流水号=' + num + '&序号=' + num1 + '&工序名称=' + num2 + '&工艺内容及装配具体要求=' + num3
}
})
}
// 上移
export function upOne(num, num1, num2) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间装配管理_装配工序_上移',
param: '装配工序流水号=' + num + '&组件工艺流水号=' + num1 + '&工序顺序=' + num2
}
})
}
// 下移
export function downOne(num, num1, num2) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间装配管理_装配工序_下移',
param: '装配工序流水号=' + num + '&组件工艺流水号=' + num1 + '&工序顺序=' + num2
}
})
}
// 删除工序
export function deleteOne(num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间装配管理_装配工序_删除数据',
param: '装配工序流水号=' + num
}
})
}
// 保存
export function saveApprove(num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间装配管理_机床工艺_编制完成',
param: '机床流水号=' + num
}
})
}
// 工艺调整
export function returnEdit(num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间装配管理_机床工艺_调整',
param: '机床流水号=' + num
}
})
}
// 工艺删除
export function deleteTable(num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间装配管理_机床工艺_删除数据',
param: '机床流水号=' + num
}
})
}
// 增加已完组件工艺 工艺拷贝
export function processCopy1(machineNumberValue, SerialNumber, Group, AssemblyTask) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间装配管理_已完组件工艺_增加数据',
param: '机床流水号=' + machineNumberValue + '&序号=' + SerialNumber + '&组号=' + Group + '&装配任务=' + AssemblyTask + '&组件工艺流水号=10=int=output'
}
})
}
// 增加已完装配工序 工艺拷贝
export function procedureCopy1(GroupNum, SerialNumberGroup, ProcedureNameGroup, ProcessContentGroup, QualityTesting, ProcessSequence) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '2',
name: '车间装配管理_已完装配工序_增加数据',
param: '组件工艺流水号=' + GroupNum + '&序号=' + SerialNumberGroup + '&工序名称=' + ProcedureNameGroup + '&工艺内容及装配具体要求=' + ProcessContentGroup + '&质检=' + QualityTesting + '&工序顺序=' + ProcessSequence
}
})
}

View File

@@ -0,0 +1,103 @@
import request from '@/utils/request'
import state from '@/store'
import router from '@/router'
// 初始化机床项目
export function initProject() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: 'PDM_项目名称_查询数据'
}
})
}
// 初始化检测项
export function searchTest() {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '质检管理_装配质检_检测项_查询数据'
}
})
}
// 组件查询
export function searchgroup(num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: 'PDM_组件名称_查询数据',
param: '机床流水号=' + num
}
})
}
// 质检管理_质量情况_查询数据
export function selecttable(check1, value1, check2, value2, check3, value3, check4, value4, check5, time1, time2, pageCurrent, pageSize) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '质检管理_装配质检_质检情况_查询数据',
param: '机床流水号_check=' + check1 + '&机床流水号=' + value1 + '&组件流水号_check=' + check2 + '&组件流水号=' + value2 + '&检测项_check=' + check3 + '&检测项流水号=' + value3 +
'&质检情况_check=' + check4 + '&质检情况=' + value4 + '&时间段_check=' + check5 + '&开始时间=' + time1 + '&结束时间=' + time2,
Pagination: pageCurrent + '&' + pageSize
}
})
}
// 质检管理_质量情况_查询数据
export function selecttable22(check1, value1, check2, value2, check3, value3, check4, value4) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '质检管理_装配质检_质检情况_查询数据',
param: '机床流水号_check=' + check1 + '&机床流水号=' + value1 + '&组件流水号_check=' + check2 + '&组件流水号=' + value2 + '&检测项_check=' + check3 + '&检测项流水号=' + value3 +
'&质检情况_check=' + check4 + '&质检情况=' + value4
}
})
}
// 检测项明细查询
export function searchMX(num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '质检管理_装配质检_明细_质检情况_查询数据',
param: '装配质检流水号=' + num
}
})
}
// 检测统计
export function searchTestStatistics(num) {
return request({
url: '',
method: 'post',
data: {
UserID: state.state.user.id,
ModularID: router.currentRoute.path,
type: '1',
name: '质检管理_装配质检_质检情况_统计数据',
param: '机床流水号=' + num
}
})
}

Some files were not shown because too many files have changed in this diff Show More