Add HL MES manager with AI assistant service
15
.gitignore
vendored
Normal 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
|
||||
~$*
|
||||
7
ai-mcp-service/.env.example
Normal 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
@@ -0,0 +1,2 @@
|
||||
.env
|
||||
*.log
|
||||
93
ai-mcp-service/catalog/frontend-task-map.json
Normal 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 页面。"
|
||||
}
|
||||
]
|
||||
80
ai-mcp-service/catalog/mes-capabilities.json
Normal 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 质量数据区"]
|
||||
}
|
||||
}
|
||||
}
|
||||
340
ai-mcp-service/knowledge/database-knowledge.md
Normal 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
|
||||
工作表:
|
||||
- 基本变量_JEE:87 行,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
|
||||
- Sheet3:85 行,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_修改
|
||||
904
ai-mcp-service/knowledge/export-capabilities.md
Normal file
@@ -0,0 +1,904 @@
|
||||
# 导出能力知识库
|
||||
|
||||
该文档整理前端页面中可导出 Excel/文件/报表的页面、按钮和后端过程。用户提出导出请求时优先参考此文档。
|
||||
|
||||
## NO
|
||||
|
||||
模块:AndonSystem
|
||||
源码:前端源码\HL_MES_manager\src\views\AndonSystem\equipmentAndonStatistics\index.vue
|
||||
路由推断:/AndonSystem/equipmentAndonStatistics
|
||||
相关按钮:Excel
|
||||
导出接口/过程:
|
||||
- MES_基本变量_机型代码_查询(type=11,line=166)
|
||||
- 测量数据发动机在线状态_订单号_查询(type=11,line=182)
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=197)
|
||||
- NO(type=,line=251)
|
||||
- ANDON_ANDON信息_备份_故障Andon综合查询_分页(type=11,line=294)
|
||||
- ANDON_ANDON信息_备份_故障Andon统计综合查询(type=11,line=322)
|
||||
- 测量数据工位报警全部视图_查询(type=2001,line=350)
|
||||
|
||||
## AndonSystem/equipmentAndon
|
||||
|
||||
模块:AndonSystem
|
||||
源码:前端源码\HL_MES_manager\src\views\AndonSystem\equipmentAndon\index.vue
|
||||
路由推断:/AndonSystem/equipmentAndon
|
||||
相关按钮:Excel
|
||||
导出接口/过程:
|
||||
- MES_基本变量_机型代码_查询(type=11,line=171)
|
||||
- 测量数据发动机在线状态_订单号_查询(type=11,line=187)
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=202)
|
||||
- ANDON_ANDON信息_备份_故障Andon综合查询_分页(type=11,line=234)
|
||||
- ANDON_ANDON信息_备份_故障Andon综合查询新(type=2001,line=259)
|
||||
|
||||
## NO
|
||||
|
||||
模块:AndonSystem
|
||||
源码:前端源码\HL_MES_manager\src\views\AndonSystem\materialAndonStatistics\index.vue
|
||||
路由推断:/AndonSystem/materialAndonStatistics
|
||||
相关按钮:Excel
|
||||
导出接口/过程:
|
||||
- MES_基本变量_机型代码_查询(type=11,line=166)
|
||||
- 测量数据发动机在线状态_订单号_查询(type=11,line=182)
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=197)
|
||||
- NO(type=,line=251)
|
||||
- ANDON_ANDON信息_备份_物料Andon综合查询_分页(type=11,line=294)
|
||||
- ANDON_ANDON信息_备份_物料Andon统计综合查询(type=11,line=322)
|
||||
- 测量数据工位报警全部视图_查询(type=2001,line=350)
|
||||
|
||||
## AndonSystem/materialAndon
|
||||
|
||||
模块:AndonSystem
|
||||
源码:前端源码\HL_MES_manager\src\views\AndonSystem\materialAndon\index.vue
|
||||
路由推断:/AndonSystem/materialAndon
|
||||
相关按钮:Excel
|
||||
导出接口/过程:
|
||||
- MES_基本变量_机型代码_查询(type=11,line=171)
|
||||
- 测量数据发动机在线状态_订单号_查询(type=11,line=187)
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=202)
|
||||
- ANDON_ANDON信息_备份_物料Andon综合查询_分页(type=11,line=234)
|
||||
- ANDON_ANDON信息_备份_物料Andon综合查询新(type=2001,line=259)
|
||||
|
||||
## NO
|
||||
|
||||
模块:AndonSystem
|
||||
源码:前端源码\HL_MES_manager\src\views\AndonSystem\qualityAndonStatistics\index.vue
|
||||
路由推断:/AndonSystem/qualityAndonStatistics
|
||||
相关按钮:Excel
|
||||
导出接口/过程:
|
||||
- MES_基本变量_机型代码_查询(type=11,line=166)
|
||||
- 测量数据发动机在线状态_订单号_查询(type=11,line=182)
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=197)
|
||||
- NO(type=,line=251)
|
||||
- ANDON_ANDON信息_备份_质量Andon综合查询_分页(type=11,line=294)
|
||||
- ANDON_ANDON信息_备份_质量Andon统计综合查询(type=11,line=322)
|
||||
- 测量数据工位报警全部视图_查询(type=2001,line=350)
|
||||
|
||||
## AndonSystem/qualityAndon
|
||||
|
||||
模块:AndonSystem
|
||||
源码:前端源码\HL_MES_manager\src\views\AndonSystem\qualityAndon\index.vue
|
||||
路由推断:/AndonSystem/qualityAndon
|
||||
相关按钮:Excel
|
||||
导出接口/过程:
|
||||
- MES_基本变量_机型代码_查询(type=11,line=171)
|
||||
- 测量数据发动机在线状态_订单号_查询(type=11,line=187)
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=202)
|
||||
- ANDON_ANDON信息_备份_质量Andon综合查询_分页(type=11,line=234)
|
||||
- ANDON_ANDON信息_备份_质量Andon综合查询新(type=2001,line=259)
|
||||
|
||||
## UploadExcel
|
||||
|
||||
模块:BasicDataMaintenance
|
||||
源码:前端源码\HL_MES_manager\src\views\BasicDataMaintenance\AlarmVariableMaintenance\index.vue
|
||||
路由推断:/BasicDataMaintenance/AlarmVariableMaintenance
|
||||
相关按钮:查询、复制、报警导入、编辑、取消、确定、导入到数据库
|
||||
导出接口/过程:
|
||||
- UploadExcel(type=,line=170)
|
||||
|
||||
## UploadExcel
|
||||
|
||||
模块:BasicDataMaintenance
|
||||
源码:前端源码\HL_MES_manager\src\views\BasicDataMaintenance\BasicVariableMaintenance\index.vue
|
||||
路由推断:/BasicDataMaintenance/BasicVariableMaintenance
|
||||
相关按钮:查询、写入基本变量、写入报警变量、写入质量变量、新增、导入、编辑、取消、确定、导入到数据库
|
||||
导出接口/过程:
|
||||
- UploadExcel(type=,line=116)
|
||||
- Recipe_Machine_Excel(type=12,line=465)
|
||||
|
||||
## UploadExcel
|
||||
|
||||
模块:BasicDataMaintenance
|
||||
源码:前端源码\HL_MES_manager\src\views\BasicDataMaintenance\StationInformationMaintenance\index.vue
|
||||
路由推断:/BasicDataMaintenance/StationInformationMaintenance
|
||||
相关按钮:Excel
|
||||
导出接口/过程:
|
||||
- UploadExcel(type=,line=770)
|
||||
- SELECT [工位号] FROM [dbo].[MES_计划BOM_工位与名称](type=,line=908)
|
||||
- SELECT [设备IP],[ID] FROM [dbo].[MES_基本变量设备类型对应表] ORDER BY ID(type=,line=928)
|
||||
- 基础数据_工位信息维护_查询(type=11,line=956)
|
||||
- 基础数据_工位信息维护_导出(type=2001,line=1043)
|
||||
- 基础数据_工位信息维护_增加(type=12,line=1190)
|
||||
- 基础数据_工位信息维护_增加(type=12,line=1415)
|
||||
- 基础数据_工位信息维护_修改(type=12,line=1505)
|
||||
- 基础数据_工位信息维护_删除(type=12,line=1531)
|
||||
- 基础数据_工位信息维护_导入校验(type=11,line=1646)
|
||||
- 基础数据_工位信息维护_导入(type=12,line=2016)
|
||||
|
||||
## BasicData/SystemAlarmLog
|
||||
|
||||
模块:BasicData
|
||||
源码:前端源码\HL_MES_manager\src\views\BasicData\SystemAlarmLog\index.vue
|
||||
路由推断:/BasicData/SystemAlarmLog
|
||||
相关按钮:导出
|
||||
导出接口/过程:
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=111)
|
||||
- _日志_描述表_查询模块描述(type=11,line=125)
|
||||
- 报警工位记录表_查询(type=11,line=151)
|
||||
- 报警工位记录表_查询(type=2001,line=174)
|
||||
|
||||
## BasicData/WorkStationAlarmLog
|
||||
|
||||
模块:BasicData
|
||||
源码:前端源码\HL_MES_manager\src\views\BasicData\WorkStationAlarmLog\index.vue
|
||||
路由推断:/BasicData/WorkStationAlarmLog
|
||||
相关按钮:导出
|
||||
导出接口/过程:
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=132)
|
||||
- 合力_系统日志_查询(type=2001,line=156)
|
||||
- _日志_描述表_查询模块描述(type=11,line=165)
|
||||
- 合力_系统日志_查询(type=11,line=191)
|
||||
|
||||
## PASS
|
||||
|
||||
模块:EquipmentOperationAnalysis
|
||||
源码:前端源码\HL_MES_manager\src\views\EquipmentOperationAnalysis\EquipmentAlarmStatistics\index.vue
|
||||
路由推断:/EquipmentOperationAnalysis/EquipmentAlarmStatistics
|
||||
相关按钮:Excel
|
||||
导出接口/过程:
|
||||
- MES_基本变量_机型代码_查询(type=11,line=165)
|
||||
- 测量数据发动机在线状态_订单号_查询(type=11,line=181)
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=196)
|
||||
- PASS(type=,line=243)
|
||||
- NO(type=,line=264)
|
||||
- 测量数据工位报警全部视图_查询_分页(type=11,line=311)
|
||||
- 测量数据工位报警全部视图_查询报表(type=11,line=345)
|
||||
- 测量数据工位报警全部视图_查询新(type=2001,line=385)
|
||||
|
||||
## EquipmentOperationAnalysis/EverydayDeviceStatistics
|
||||
|
||||
模块:EquipmentOperationAnalysis
|
||||
源码:前端源码\HL_MES_manager\src\views\EquipmentOperationAnalysis\EverydayDeviceStatistics\index.vue
|
||||
路由推断:/EquipmentOperationAnalysis/EverydayDeviceStatistics
|
||||
相关按钮:导出
|
||||
导出接口/过程:
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=150)
|
||||
- MES_看板统计_查询(type=11,line=174)
|
||||
- MES_看板统计_查询(type=2001,line=202)
|
||||
|
||||
## EquipmentOperationAnalysis/Maintenancebasicequipmentinformation
|
||||
|
||||
模块:EquipmentOperationAnalysis
|
||||
源码:前端源码\HL_MES_manager\src\views\EquipmentOperationAnalysis\Maintenancebasicequipmentinformation\index.vue
|
||||
路由推断:/EquipmentOperationAnalysis/Maintenancebasicequipmentinformation
|
||||
相关按钮:导出
|
||||
导出接口/过程:
|
||||
- 设备管理_设备类型_查询(type=11,line=210)
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=224)
|
||||
- 设备管理_基础表_设备台账_综合查询(type=11,line=257)
|
||||
- 设备管理_基础表_设备台账_综合查询(type=2001,line=284)
|
||||
- 设备管理_基础表_设备台账_增加(type=12,line=313)
|
||||
- 设备管理_基础表_设备台账_删除(type=12,line=346)
|
||||
- 设备管理_基础表_设备台账_修改(type=12,line=390)
|
||||
|
||||
## EquipmentOperationAnalysis/RoutineCheckInformationMaintenance
|
||||
|
||||
模块:EquipmentOperationAnalysis
|
||||
源码:前端源码\HL_MES_manager\src\views\EquipmentOperationAnalysis\RoutineCheckInformationMaintenance\index.vue
|
||||
路由推断:/EquipmentOperationAnalysis/RoutineCheckInformationMaintenance
|
||||
相关按钮:导出日点检表
|
||||
导出接口/过程:
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=308)
|
||||
- 基础数据_设备工位点检表图片_保存图片(type=15,line=629)
|
||||
|
||||
## EquipmentOperationAnalysis/SpotCheckRecord
|
||||
|
||||
模块:EquipmentOperationAnalysis
|
||||
源码:前端源码\HL_MES_manager\src\views\EquipmentOperationAnalysis\SpotCheckRecord\DayCheck.vue
|
||||
路由推断:/EquipmentOperationAnalysis/SpotCheckRecord
|
||||
相关按钮:导出
|
||||
导出接口/过程:
|
||||
- MES_计划BOM_工位与名称_点检_查询(type=11,line=69)
|
||||
- 点检日期_查询数据(type=11,line=89)
|
||||
- 点检日期导出_查询数据(type=2001,line=105)
|
||||
- 点检日期_查询数据_表头(type=11,line=114)
|
||||
|
||||
## EquipmentOperationAnalysis/SpotCheckRecord
|
||||
|
||||
模块:EquipmentOperationAnalysis
|
||||
源码:前端源码\HL_MES_manager\src\views\EquipmentOperationAnalysis\SpotCheckRecord\MoonCheck.vue
|
||||
路由推断:/EquipmentOperationAnalysis/SpotCheckRecord
|
||||
相关按钮:导出
|
||||
导出接口/过程:
|
||||
- MES_计划BOM_工位与名称_点检_查询(type=11,line=73)
|
||||
- 点检日期月_查询数据(type=11,line=93)
|
||||
- 点检日期月导出_查询数据(type=2001,line=109)
|
||||
- 点检日期_查询数据_表头(type=11,line=118)
|
||||
|
||||
## EquipmentOperationAnalysis/SpotCheckRecord
|
||||
|
||||
模块:EquipmentOperationAnalysis
|
||||
源码:前端源码\HL_MES_manager\src\views\EquipmentOperationAnalysis\SpotCheckRecord\QuarterCheck.vue
|
||||
路由推断:/EquipmentOperationAnalysis/SpotCheckRecord
|
||||
相关按钮:导出
|
||||
导出接口/过程:
|
||||
- MES_计划BOM_工位与名称_点检_查询(type=11,line=73)
|
||||
- 点检日期季_查询数据(type=11,line=93)
|
||||
- 点检日期季导出_查询数据(type=2001,line=109)
|
||||
- 点检日期_查询数据_表头(type=11,line=118)
|
||||
|
||||
## EquipmentOperationAnalysis/SpotCheckRecord
|
||||
|
||||
模块:EquipmentOperationAnalysis
|
||||
源码:前端源码\HL_MES_manager\src\views\EquipmentOperationAnalysis\SpotCheckRecord\WeekCheck.vue
|
||||
路由推断:/EquipmentOperationAnalysis/SpotCheckRecord
|
||||
相关按钮:导出
|
||||
导出接口/过程:
|
||||
- MES_计划BOM_工位与名称_点检_查询(type=11,line=75)
|
||||
- 点检日期周_查询数据(type=11,line=95)
|
||||
- 点检日期周导出_查询数据(type=2001,line=111)
|
||||
- 点检日期_查询数据_表头(type=11,line=120)
|
||||
|
||||
## EquipmentOperationAnalysis/SpotCheckRecord
|
||||
|
||||
模块:EquipmentOperationAnalysis
|
||||
源码:前端源码\HL_MES_manager\src\views\EquipmentOperationAnalysis\SpotCheckRecord\YearCheck.vue
|
||||
路由推断:/EquipmentOperationAnalysis/SpotCheckRecord
|
||||
相关按钮:导出
|
||||
导出接口/过程:
|
||||
- MES_计划BOM_工位与名称_点检_查询(type=11,line=74)
|
||||
- 点检日期年_查询数据(type=11,line=94)
|
||||
- 点检日期年导出_查询数据(type=2001,line=110)
|
||||
- 点检日期_查询数据_表头(type=11,line=119)
|
||||
|
||||
## UploadExcel
|
||||
|
||||
模块:ProcessManagement
|
||||
源码:前端源码\HL_MES_manager\src\views\ProcessManagement\AndonMaintenance\index.vue
|
||||
路由推断:/ProcessManagement/AndonMaintenance
|
||||
相关按钮:查询、添加、导入、修改、删除、取消、确定、导入到数据库
|
||||
导出接口/过程:
|
||||
- UploadExcel(type=,line=187)
|
||||
- ANDON_类型_编号_导入Excel(type=12,line=552)
|
||||
|
||||
## ProcessManagement/BomEngineManagement
|
||||
|
||||
模块:ProcessManagement
|
||||
源码:前端源码\HL_MES_manager\src\views\ProcessManagement\BomEngineManagement\BomList.vue
|
||||
路由推断:/ProcessManagement/BomEngineManagement
|
||||
相关按钮:Excel
|
||||
导出接口/过程:
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=351)
|
||||
- 北汽福田_BOM_福田零件号_查询(type=11,line=372)
|
||||
- 北汽福田_BOM_删除(type=12,line=414)
|
||||
- 北汽福田BOM_复制(type=11,line=447)
|
||||
- 北汽福田_BOM_修改(type=11,line=474)
|
||||
- 北汽福田_BOM_增加(type=11,line=497)
|
||||
- 北汽福田_BOM_零件号查询(type=11,line=517)
|
||||
- MES_基本变量_机型代码_查询(type=11,line=532)
|
||||
- 北汽福田_BOM_查询(type=11,line=580)
|
||||
- 北汽福田_BOM_查询(type=2001,line=620)
|
||||
|
||||
## UploadExcel
|
||||
|
||||
模块:ProcessManagement
|
||||
源码:前端源码\HL_MES_manager\src\views\ProcessManagement\MaterialVerificationMaintenance\index.vue
|
||||
路由推断:/ProcessManagement/MaterialVerificationMaintenance
|
||||
相关按钮:导出、物料导出
|
||||
导出接口/过程:
|
||||
- UploadExcel(type=,line=308)
|
||||
- MES_基本变量_机型代码_查询(type=11,line=476)
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=493)
|
||||
- 电子看板_装配零件_查询(type=11,line=514)
|
||||
- 电子看板_装配零件_查询(type=2001,line=532)
|
||||
- 电子看板_装配零件_SPC_增加(type=11,line=568)
|
||||
- 电子看板_装配零件_SPC_增加(type=12,line=638)
|
||||
- 电子看板_装配零件_SPC_删除(type=12,line=664)
|
||||
- 电子看板_装配零件_SPC_修改(type=12,line=712)
|
||||
- 确认导入物料字典_新增(type=11,line=747)
|
||||
- 生产计划导入_确认导入前临时表_查询(type=11,line=773)
|
||||
- 电子看板_装配零件_总物料表_导入校验(type=11,line=810)
|
||||
- 物料数据_导入Excel(type=12,line=905)
|
||||
- 电子看板_装配零件_总物料表_导出新(type=2001,line=924)
|
||||
|
||||
## ProcessManagement/ShuntingCacheManagement
|
||||
|
||||
模块:ProcessManagement
|
||||
源码:前端源码\HL_MES_manager\src\views\ProcessManagement\ShuntingCacheManagement\index.vue
|
||||
路由推断:/ProcessManagement/ShuntingCacheManagement
|
||||
相关按钮:查询计划生产数据、异常删除--> <!--、取消、确定、导入到数据库
|
||||
导出接口/过程:
|
||||
- 物料数据_导入Excel(type=12,line=898)
|
||||
- 电子看板_装配零件_总物料表_导出新(type=2001,line=917)
|
||||
|
||||
## ProcessManagement/StepContentMaintenance
|
||||
|
||||
模块:ProcessManagement
|
||||
源码:前端源码\HL_MES_manager\src\views\ProcessManagement\StepContentMaintenance\index.vue
|
||||
路由推断:/ProcessManagement/StepContentMaintenance
|
||||
相关按钮:导出
|
||||
导出接口/过程:
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=321)
|
||||
- MES_基本变量_机型代码_查询(type=11,line=340)
|
||||
- 电子看板_工序内容_查询_要点理由SQ(type=11,line=371)
|
||||
- 电子看板_工序内容_查询_要点理由SQ(type=2001,line=384)
|
||||
- 电子看板_工序内容_增加(type=12,line=427)
|
||||
- 电子看板_工序内容_增加(type=12,line=459)
|
||||
- 电子看板_工序内容_修改_要点理由YC(type=12,line=517)
|
||||
- 电子看板_工序内容_删除(type=12,line=543)
|
||||
|
||||
## select * from 机加工MES_零件图PDF表 where 是否启用 = 1 and name =
|
||||
|
||||
模块:PurchasingManagement
|
||||
源码:前端源码\HL_MES_manager\src\views\PurchasingManagement\PurchaseOrder\index.vue
|
||||
路由推断:/PurchasingManagement/PurchaseOrder
|
||||
相关按钮:导出
|
||||
导出接口/过程:
|
||||
- 仓储管理_入库记录退货_查询(type=11,line=655)
|
||||
- 仓储管理_入库记录退货_查看(type=12,line=662)
|
||||
- 仓储管理_入库记录退货_未查看数量(type=11,line=669)
|
||||
- select * from 机加工MES_零件图PDF表 where 是否启用 = 1 and name =(type=,line=687)
|
||||
- ${item.name}.${item.suffix}(type=,line=696)
|
||||
- 采购管理_采购合同选入项_使用库存(type=12,line=713)
|
||||
- 采购管理_订单信息_列表_查询数据(type=11,line=739)
|
||||
- 供应商_查询(type=11,line=751)
|
||||
- 订单信息_产品信息_查询数据(type=11,line=767)
|
||||
- 采购管理_采购合同选入项_隐藏(type=12,line=781)
|
||||
- 采购管理_采购合同选入项_恢复(type=12,line=795)
|
||||
- 采购管理_采购合同_增加(type=12,line=812)
|
||||
- 采购管理_采购合同明细_增加(type=12,line=847)
|
||||
- 采购管理_采购合同明细_查询数据(type=11,line=853)
|
||||
- 采购管理_采购合同明细_删除(type=12,line=870)
|
||||
- 采购管理_采购合同明细_查询数据(type=11,line=876)
|
||||
- 采购管理_采购合同明细_编辑单价(type=12,line=894)
|
||||
- 采购管理_采购合同_提交(type=12,line=911)
|
||||
- 采购管理_耗材采购合同_提交(type=12,line=952)
|
||||
- 采购合同查询_上传图片(type=15,line=993)
|
||||
- 采购管理_物料采购_查询数据(type=11,line=1029)
|
||||
- 采购管理_采购合同_查询数据(type=11,line=1040)
|
||||
- 采购管理_采购合同明细_查询数据(type=11,line=1050)
|
||||
- 采购管理_采购合同_查询数据(type=11,line=1078)
|
||||
- 采购管理_耗材采购合同_增加(type=12,line=1095)
|
||||
- 采购管理_耗材采购合同明细_查询数据(type=11,line=1114)
|
||||
- 采购管理_耗材采购合同明细_编辑数据(type=12,line=1162)
|
||||
- 采购管理_耗材采购合同明细_编辑数据(type=12,line=1173)
|
||||
- 采购管理_耗材采购合同明细_查询数据(type=11,line=1183)
|
||||
- 采购管理_耗材采购合同明细_增加数据(type=12,line=1220)
|
||||
- 采购管理_耗材采购合同明细_查询数据(type=11,line=1226)
|
||||
- 采购管理_耗材采购合同明细_删除数据(type=12,line=1267)
|
||||
- 采购管理_耗材采购合同明细_查询数据(type=11,line=1274)
|
||||
- 物料信息_查询(type=11,line=1333)
|
||||
- 采购管理_采购物料修改_修改数据(type=12,line=1350)
|
||||
- 物料信息_查询(type=11,line=1370)
|
||||
- 采购管理_耗材采购合同明细_增加数据(type=12,line=1397)
|
||||
- 采购管理_耗材采购合同明细_查询数据(type=11,line=1405)
|
||||
- 采购合同_图片_查询数据(type=11,line=1522)
|
||||
|
||||
## QualityAssurance/AssemblyQualitydataQuery
|
||||
|
||||
模块:QualityAssurance
|
||||
源码:前端源码\HL_MES_manager\src\views\QualityAssurance\AssemblyQualitydataQuery\index.vue
|
||||
路由推断:/QualityAssurance/AssemblyQualitydataQuery
|
||||
相关按钮:Excel
|
||||
导出接口/过程:
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=329)
|
||||
- MES_基本变量_机型代码_查询(type=11,line=346)
|
||||
- 测量数据合格索引_订单号_查询(type=11,line=371)
|
||||
- 初始化二维码_查询(type=11,line=397)
|
||||
- 测量数据合格索引_发动机号_发动机型号_查询(type=11,line=423)
|
||||
- 物料数据_视图_物料条码批次号_查询(type=11,line=441)
|
||||
- 质量数据查询_测量位置(type=11,line=455)
|
||||
- 质量数据查询_测量项目(type=11,line=472)
|
||||
- 质量数据_发动机质量数据_各个工位_视图_发动机型号_综合查询(type=11,line=515)
|
||||
- 质量数据查询_综合查询新(type=2001,line=555)
|
||||
|
||||
## QualityAssurance/BarCodeDataSearch
|
||||
|
||||
模块:QualityAssurance
|
||||
源码:前端源码\HL_MES_manager\src\views\QualityAssurance\BarCodeDataSearch\index.vue
|
||||
路由推断:/QualityAssurance/BarCodeDataSearch
|
||||
相关按钮:Excel
|
||||
导出接口/过程:
|
||||
- 合力_扫码记录_修改码值(type=11,line=257)
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=275)
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=289)
|
||||
- 测量数据发动机在线状态_订单号_查询(type=11,line=307)
|
||||
- 测量数据发动机在线状态_发动机号_查询(type=11,line=328)
|
||||
- 合力_扫码记录_查询分页(type=11,line=355)
|
||||
- 合力_扫码记录_查询分页(type=2001,line=381)
|
||||
|
||||
## QualityAssurance/InquiryTransitInformation
|
||||
|
||||
模块:QualityAssurance
|
||||
源码:前端源码\HL_MES_manager\src\views\QualityAssurance\InquiryTransitInformation\index.vue
|
||||
路由推断:/QualityAssurance/InquiryTransitInformation
|
||||
相关按钮:Excel
|
||||
导出接口/过程:
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=267)
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=281)
|
||||
- 测量数据发动机在线状态_订单号_查询(type=11,line=299)
|
||||
- 测量数据发动机在线状态_发动机号_查询(type=11,line=320)
|
||||
- 质量数据查询_测量数据发动机在线状态_查询_NEW(type=11,line=356)
|
||||
- 质量数据查询_测量数据发动机在线状态_报表_NEW新(type=2001,line=386)
|
||||
|
||||
## QualityAssurance/LineItemQuery
|
||||
|
||||
模块:QualityAssurance
|
||||
源码:前端源码\HL_MES_manager\src\views\QualityAssurance\LineItemQuery\index.vue
|
||||
路由推断:/QualityAssurance/LineItemQuery
|
||||
相关按钮:Excel
|
||||
导出接口/过程:
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=265)
|
||||
- MES_基本变量_机型代码_查询(type=11,line=281)
|
||||
- 电子看板装配零件_零件名称_初始化查询(type=11,line=297)
|
||||
- 初始化二维码_查询(type=11,line=324)
|
||||
- 测量数据合格索引_发动机号_发动机型号_查询(type=11,line=348)
|
||||
- 物料数据分线_视图_物料条码批次号_查询(type=11,line=365)
|
||||
- 质量数据查询_测量项目(type=11,line=380)
|
||||
- 物料数据分线_视图_查询(type=11,line=418)
|
||||
- 物料数据分线查询_报表新(type=2001,line=452)
|
||||
|
||||
## QualityAssurance/LineQualityQuery
|
||||
|
||||
模块:QualityAssurance
|
||||
源码:前端源码\HL_MES_manager\src\views\QualityAssurance\LineQualityQuery\index.vue
|
||||
路由推断:/QualityAssurance/LineQualityQuery
|
||||
相关按钮:Excel
|
||||
导出接口/过程:
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=295)
|
||||
- MES_基本变量_机型代码_查询(type=11,line=312)
|
||||
- 测量数据发动机在线状态_订单号_查询(type=11,line=328)
|
||||
- 初始化二维码_查询(type=11,line=352)
|
||||
- 测量数据合格索引_发动机号_发动机型号_查询(type=11,line=376)
|
||||
- 物料数据分线_视图_物料条码批次号_查询(type=11,line=392)
|
||||
- 质量数据查询_测量位置(type=11,line=406)
|
||||
- 质量数据查询_测量项目(type=11,line=423)
|
||||
- 质量数据_发动机分线质量数据_综合查询(type=11,line=465)
|
||||
- 质量数据分线_导出新(type=2001,line=503)
|
||||
|
||||
## QualityAssurance/MaterialDataQuery
|
||||
|
||||
模块:QualityAssurance
|
||||
源码:前端源码\HL_MES_manager\src\views\QualityAssurance\MaterialDataQuery\index.vue
|
||||
路由推断:/QualityAssurance/MaterialDataQuery
|
||||
相关按钮:Excel
|
||||
导出接口/过程:
|
||||
- MES_装配数据_零部件追溯_修改码值(type=11,line=269)
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=287)
|
||||
- MES_基本变量_机型代码_查询(type=11,line=304)
|
||||
- 电子看板装配零件_零件名称_初始化查询(type=11,line=320)
|
||||
- 初始化二维码_查询(type=11,line=347)
|
||||
- 测量数据合格索引_发动机号_发动机型号_查询(type=11,line=373)
|
||||
- 物料数据_视图_物料条码批次号_查询(type=11,line=391)
|
||||
- 质量数据查询_测量位置(type=11,line=405)
|
||||
- 质量数据查询_测量项目(type=11,line=422)
|
||||
- 物料数据_视图_查询(type=11,line=462)
|
||||
- 物料数据查询_报表新(type=2001,line=498)
|
||||
|
||||
## QualityAssurance/MaterialsConsumeCount
|
||||
|
||||
模块:QualityAssurance
|
||||
源码:前端源码\HL_MES_manager\src\views\QualityAssurance\MaterialsConsumeCount\index.vue
|
||||
路由推断:/QualityAssurance/MaterialsConsumeCount
|
||||
相关按钮:Excel
|
||||
导出接口/过程:
|
||||
- MES_装配数据_零部件追溯_修改码值(type=11,line=243)
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=261)
|
||||
- MES_基本变量_机型代码_查询(type=11,line=276)
|
||||
- 电子看板装配零件_零件名称_初始化查询(type=11,line=292)
|
||||
- 初始化二维码_查询(type=11,line=319)
|
||||
- 测量数据合格索引_发动机号_发动机型号_查询(type=11,line=345)
|
||||
- 物料数据_视图_物料条码批次号_查询(type=11,line=363)
|
||||
- 质量数据查询_测量位置(type=11,line=377)
|
||||
- 质量数据查询_测量项目(type=11,line=394)
|
||||
- MES_装配数据_零部件追溯_物料消耗统计_视图_查询(type=11,line=417)
|
||||
- MES_装配数据_零部件追溯_物料消耗统计_视图_查询(type=2001,line=439)
|
||||
|
||||
## QualityAssurance/PatrolInspectionDataSearch
|
||||
|
||||
模块:QualityAssurance
|
||||
源码:前端源码\HL_MES_manager\src\views\QualityAssurance\PatrolInspectionDataSearch\index.vue
|
||||
路由推断:/QualityAssurance/PatrolInspectionDataSearch
|
||||
相关按钮:导出
|
||||
导出接口/过程:
|
||||
- 合力_巡检记录_增加(type=11,line=240)
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=255)
|
||||
- _日志_描述表_查询模块类型(type=11,line=270)
|
||||
- _日志_描述表_查询模块描述(type=11,line=283)
|
||||
- 合力_巡检记录_视图_查询(type=11,line=303)
|
||||
- 合力_巡检记录_视图_查询(type=2001,line=320)
|
||||
|
||||
## PASS
|
||||
|
||||
模块:QualityAssurance
|
||||
源码:前端源码\HL_MES_manager\src\views\QualityAssurance\ProductionPlanOrderCompletion\index.vue
|
||||
路由推断:/QualityAssurance/ProductionPlanOrderCompletion
|
||||
相关按钮:Excel
|
||||
导出接口/过程:
|
||||
- MES_基本变量_机型代码_查询(type=11,line=177)
|
||||
- 测量数据发动机在线状态_订单号_查询(type=11,line=193)
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=208)
|
||||
- PASS(type=,line=258)
|
||||
- NO(type=,line=279)
|
||||
- MES_计划BOM_发动机订单计划_订单完工_查询(type=11,line=328)
|
||||
- MES_计划BOM_发动机订单计划_订单完工_报表(type=11,line=364)
|
||||
- MES_计划BOM_发动机订单计划_订单完工_报表新(type=2001,line=406)
|
||||
|
||||
## UploadExcel
|
||||
|
||||
模块:RecipeManagement
|
||||
源码:前端源码\HL_MES_manager\src\views\RecipeManagement\BasicDataManagement\index.vue
|
||||
路由推断:/RecipeManagement/BasicDataManagement
|
||||
相关按钮:查询、新增、导入、编辑、删除、取消、确定、导入到数据库
|
||||
导出接口/过程:
|
||||
- UploadExcel(type=,line=135)
|
||||
- Recipe_WorkBook_Excel(type=12,line=386)
|
||||
|
||||
## UploadExcel
|
||||
|
||||
模块:RecipeManagement
|
||||
源码:前端源码\HL_MES_manager\src\views\RecipeManagement\ElectricalComponentParameters\index.vue
|
||||
路由推断:/RecipeManagement/ElectricalComponentParameters
|
||||
相关按钮:查询、新增、导入、编辑、删除、取消、确定、导入到数据库
|
||||
导出接口/过程:
|
||||
- UploadExcel(type=,line=147)
|
||||
- Recipe_Machine_Excel(type=12,line=466)
|
||||
|
||||
## RecipeManagement/MaterialFactoryManagement
|
||||
|
||||
模块:RecipeManagement
|
||||
源码:前端源码\HL_MES_manager\src\views\RecipeManagement\MaterialFactoryManagement\index.vue
|
||||
路由推断:/RecipeManagement/MaterialFactoryManagement
|
||||
相关按钮:导出
|
||||
导出接口/过程:
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=281)
|
||||
- 合力_HMI物料厂家_查询(type=11,line=300)
|
||||
- 合力_HMI物料厂家_查询(type=2001,line=312)
|
||||
- 合力_停机记录_结束(type=12,line=329)
|
||||
- 合力_停机记录_查询(type=11,line=353)
|
||||
- 合力_HMI物料厂家_增加(type=12,line=400)
|
||||
- 合力_HMI物料厂家_修改(type=12,line=435)
|
||||
|
||||
## RecipeManagement/MaterialFactorySearch
|
||||
|
||||
模块:RecipeManagement
|
||||
源码:前端源码\HL_MES_manager\src\views\RecipeManagement\MaterialFactorySearch\index.vue
|
||||
路由推断:/RecipeManagement/MaterialFactorySearch
|
||||
相关按钮:导出
|
||||
导出接口/过程:
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=316)
|
||||
- 合力_HMI物料厂家_生产记录_查询(type=11,line=341)
|
||||
- 合力_HMI物料厂家_生产记录_查询(type=2001,line=360)
|
||||
- 合力_停机记录_结束(type=12,line=377)
|
||||
- 合力_停机记录_查询(type=11,line=401)
|
||||
- 合力_HMI物料厂家_生产记录_修改厂家(type=11,line=425)
|
||||
- 合力_HMI物料厂家_增加(type=11,line=462)
|
||||
- 合力_HMI物料厂家_修改(type=11,line=497)
|
||||
|
||||
## select * from [报警数据_大柴]
|
||||
|
||||
模块:SearchData
|
||||
源码:前端源码\HL_MES_manager\src\views\SearchData\AlarmAnalysis\index.vue
|
||||
路由推断:/SearchData/AlarmAnalysis
|
||||
相关按钮:导出EXCEL
|
||||
导出接口/过程:
|
||||
- 设备报警_报警历史查询_管理软件分页(type=11,line=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=11,line=190)
|
||||
- NO(type=,line=244)
|
||||
- Data_WorkStationFTT_Statistic_Form(type=11,line=287)
|
||||
- Data_WorkStationFTT_Statistic_Graph(type=11,line=311)
|
||||
|
||||
## SearchData/FaultStopWorkManagement
|
||||
|
||||
模块:SearchData
|
||||
源码:前端源码\HL_MES_manager\src\views\SearchData\FaultStopWorkManagement\index.vue
|
||||
路由推断:/SearchData/FaultStopWorkManagement
|
||||
相关按钮:导出
|
||||
导出接口/过程:
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=375)
|
||||
- 测量数据发动机在线状态_工位数据_日期_查询(type=11,line=395)
|
||||
- 合力_停机记录_视图_查询(type=11,line=459)
|
||||
- 合力_停机记录_视图_查询(type=2001,line=478)
|
||||
- 合力_停机记录_结束(type=12,line=496)
|
||||
- 合力_停机记录_查询(type=11,line=520)
|
||||
- 合力_计划停机时间表_修改(type=12,line=543)
|
||||
|
||||
## NO
|
||||
|
||||
模块:SearchData
|
||||
源码:前端源码\HL_MES_manager\src\views\SearchData\JPHTrendChart\index.vue
|
||||
路由推断:/SearchData/JPHTrendChart
|
||||
相关按钮:Excel
|
||||
导出接口/过程:
|
||||
- NO(type=,line=187)
|
||||
- Data_WorkStationJPH_Statistic_Form(type=11,line=220)
|
||||
- Data_WorkStationJPH_Statistic_Add(type=11,line=237)
|
||||
|
||||
## SearchData/OEEQuerySearch
|
||||
|
||||
模块:SearchData
|
||||
源码:前端源码\HL_MES_manager\src\views\SearchData\OEEQuerySearch\index.vue
|
||||
路由推断:/SearchData/OEEQuerySearch
|
||||
相关按钮:导出
|
||||
导出接口/过程:
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=494)
|
||||
- 测量数据发动机在线状态_工位数据_日期_查询(type=11,line=513)
|
||||
- MES_OEE计算_查询(type=11,line=572)
|
||||
- MES_OEE计算_查询(type=2001,line=584)
|
||||
- 合力_停机记录_结束(type=12,line=601)
|
||||
- 合力_停机记录_查询(type=11,line=625)
|
||||
- 合力_计划停机时间表_修改(type=12,line=648)
|
||||
|
||||
## NO
|
||||
|
||||
模块:SearchData
|
||||
源码:前端源码\HL_MES_manager\src\views\SearchData\OEETrendChart\index.vue
|
||||
路由推断:/SearchData/OEETrendChart
|
||||
相关按钮:Excel
|
||||
导出接口/过程:
|
||||
- MES_计划BOM_工位与名称_查询(type=11,line=203)
|
||||
- NO(type=,line=257)
|
||||
- Data_WorkStationOEE_Statistic_Form(type=11,line=291)
|
||||
- Data_WorkStationOEE_Statistic_Add(type=11,line=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=11,line=187)
|
||||
- 质量数据查询_测量位置(type=11,line=203)
|
||||
- 质量数据查询_测量项目(type=11,line=249)
|
||||
- 测量值(type=,line=433)
|
||||
- UCL(type=,line=438)
|
||||
- CL(type=,line=439)
|
||||
- LCL(type=,line=440)
|
||||
- 测量值(type=,line=500)
|
||||
- UCL(type=,line=505)
|
||||
- CL(type=,line=506)
|
||||
- LCL(type=,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_基本变量_基本机型_查询_zdy(type=11,line=171)
|
||||
- 质量数据查询_工位号_zdy(type=11,line=189)
|
||||
- 质量数据查询_测量位置_大柴(type=11,line=210)
|
||||
- 质量数据查询_测量项目_LLJ(type=11,line=232)
|
||||
- 质量数据_发动机质量数据_各个工位_视图_综合查询_趋势图_LLJ(type=11,line=263)
|
||||
- 质量数据报表(type=,line=325)
|
||||
- 测量值(type=,line=387)
|
||||
- USL(type=,line=392)
|
||||
- LSL(type=,line=393)
|
||||
- QU(type=,line=394)
|
||||
- QL(type=,line=395)
|
||||
- SL(type=,line=396)
|
||||
|
||||
## 工序能力分析表
|
||||
|
||||
模块:SearchData
|
||||
源码:前端源码\HL_MES_manager\src\views\SearchData\SPC_Analysis\index.vue
|
||||
路由推断:/SearchData/SPC_Analysis
|
||||
相关按钮:导出EXCEL
|
||||
导出接口/过程:
|
||||
- MES_基本变量_基本机型_查询_zdy(type=11,line=248)
|
||||
- 质量数据查询_工位号_zdy(type=11,line=265)
|
||||
- 质量数据查询_测量位置_大柴(type=11,line=286)
|
||||
- 质量数据查询_测量项目_LLJ(type=11,line=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)
|
||||
- USL(type=,line=632)
|
||||
- LSL(type=,line=633)
|
||||
- QU(type=,line=634)
|
||||
- QL(type=,line=635)
|
||||
- SL(type=,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_基本变量_基本机型_查询_zdy(type=11,line=333)
|
||||
- 质量数据查询_工位号_zdy(type=11,line=350)
|
||||
- 质量数据查询_测量位置_大柴(type=11,line=371)
|
||||
- 质量数据查询_测量项目_LLJ(type=11,line=393)
|
||||
- 工序能力分析表(type=,line=428)
|
||||
- 测量值(type=,line=508)
|
||||
- USL(type=,line=513)
|
||||
- LSL(type=,line=514)
|
||||
- QU(type=,line=515)
|
||||
- QL(type=,line=516)
|
||||
- SL(type=,line=517)
|
||||
|
||||
## 质量数据查询表
|
||||
|
||||
模块:SearchData
|
||||
源码:前端源码\HL_MES_manager\src\views\SearchData\SPC_Analysis\index_beifen.vue
|
||||
路由推断:/SearchData/SPC_Analysis
|
||||
相关按钮:导出EXCEL
|
||||
导出接口/过程:
|
||||
- MES_基本变量_基本机型_查询_zdy(type=11,line=225)
|
||||
- 质量数据查询_工位号_zdy(type=11,line=242)
|
||||
- 质量数据查询_测量位置_大柴(type=11,line=263)
|
||||
- 质量数据查询_测量项目_LLJ(type=11,line=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=11,line=240)
|
||||
- 质量数据查询_测量位置(type=11,line=256)
|
||||
- 质量数据查询_测量项目(type=11,line=302)
|
||||
- 质量数据查询表(type=,line=373)
|
||||
- 频数1(type=,line=421)
|
||||
- 频数2(type=,line=425)
|
||||
- 频数1(type=,line=430)
|
||||
- 频数2(type=,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=11,line=263)
|
||||
- 质量数据查询_测量位置(type=11,line=279)
|
||||
- 质量数据查询_测量项目(type=11,line=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=11,line=248)
|
||||
- 质量数据查询_测量位置(type=11,line=264)
|
||||
- 质量数据查询_测量项目(type=11,line=310)
|
||||
- 工序能力分析表(type=,line=388)
|
||||
- 测量值(type=,line=454)
|
||||
- USL(type=,line=459)
|
||||
- LSL(type=,line=460)
|
||||
- QU(type=,line=461)
|
||||
- QL(type=,line=462)
|
||||
- SL(type=,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=11,line=263)
|
||||
- 质量数据查询_测量位置(type=11,line=279)
|
||||
- 质量数据查询_测量项目_zdy(type=11,line=322)
|
||||
- 质量数据查询_测量项目(type=11,line=344)
|
||||
- 质量数据查询表(type=,line=407)
|
||||
- 测量值(type=,line=470)
|
||||
|
||||
## UploadExcel
|
||||
|
||||
模块:WorkOrderManagement
|
||||
源码:前端源码\HL_MES_manager\src\views\WorkOrderManagement\ReleaseOfProductionPlan\index.vue
|
||||
路由推断:/WorkOrderManagement/ReleaseOfProductionPlan
|
||||
相关按钮:订单导出
|
||||
导出接口/过程:
|
||||
- UploadExcel(type=,line=482)
|
||||
- MES_Manager(type=,line=497)
|
||||
- MES_基本变量_机型代码_查询(type=11,line=723)
|
||||
- 北汽福田订单创建零件号_查询(type=11,line=753)
|
||||
- 订单计划_订单号_查询(type=11,line=778)
|
||||
- 合力_分装线PLC_更新待上线数量(type=12,line=801)
|
||||
- 合力_总装线PLC_更新待上线数量(type=12,line=838)
|
||||
- 生产计划_派工订单_打印_查询(type=11,line=865)
|
||||
- 生产计划_派工订单_打印详细_查询(type=11,line=875)
|
||||
- MES_计划BOM_发动机订单计划_查询分页(type=11,line=920)
|
||||
- MES_计划BOM_发动机订单计划_订单手动增加(type=12,line=953)
|
||||
- 生产计划_派工订单_打印_增加(type=12,line=985)
|
||||
- 生产计划_派工订单_打印记录_是否重复_查询(type=11,line=1026)
|
||||
- 生产计划_派工订单_打印记录_增加(type=12,line=1044)
|
||||
- 生产计划_派工订单_打印_查询(type=11,line=1074)
|
||||
- 订单计划_删除(type=11,line=1099)
|
||||
- MES_计划BOM_发动机订单计划_订单下发(type=12,line=1150)
|
||||
- 订单计划_修改(type=11,line=1184)
|
||||
- MES_计划BOM_发动机订单计划_订单下发(type=12,line=1226)
|
||||
- MES_计划BOM_发动机订单计划_订单下发取消(type=11,line=1252)
|
||||
- 确认导入物料字典_新增(type=11,line=1273)
|
||||
- 生产计划导入_确认导入前临时表_查询(type=11,line=1299)
|
||||
- MES_计划BOM_发动机订单计划_订单导入校验(type=11,line=1330)
|
||||
- MES_计划BOM_发动机订单计划_订单导入(type=12,line=1393)
|
||||
- MES_计划BOM_发动机订单计划_查询分页(type=2001,line=1439)
|
||||
|
||||
## WorkOrderManagement/ScheduleStatusChange
|
||||
|
||||
模块:WorkOrderManagement
|
||||
源码:前端源码\HL_MES_manager\src\views\WorkOrderManagement\ScheduleStatusChange\index.vue
|
||||
路由推断:/WorkOrderManagement/ScheduleStatusChange
|
||||
相关按钮:Excel
|
||||
导出接口/过程:
|
||||
- MES_基本变量_机型代码_查询(type=11,line=205)
|
||||
- MES_计划BOM_发动机订单计划_状态_查询(type=11,line=219)
|
||||
- 北汽福田订单创建零件号_查询(type=11,line=234)
|
||||
- MES_计划BOM_发动机订单计划_下发查询(type=11,line=264)
|
||||
- MES_计划BOM_发动机订单计划_订单上移(type=12,line=279)
|
||||
- MES_计划BOM_发动机订单计划_订单下移(type=12,line=303)
|
||||
- MES_计划BOM_发动机订单计划_订单禁用(type=12,line=327)
|
||||
- MES_计划BOM_发动机订单计划_订单启用(type=12,line=351)
|
||||
- MES_计划BOM_发动机订单计划_订单导出新(type=2001,line=387)
|
||||
|
||||
## {{ sudoku.name }}
|
||||
|
||||
模块:dashboard
|
||||
源码:前端源码\HL_MES_manager\src\views\dashboard\index.vue
|
||||
路由推断:/dashboard
|
||||
相关按钮:下载Excel
|
||||
导出接口/过程:
|
||||
- 菜单系统模块_首页信息_查询数据1(type=,line=151)
|
||||
- 菜单系统模块_首页信息_查询数据2(type=,line=175)
|
||||
- 菜单系统模块_通知信息_查询数据(type=,line=197)
|
||||
- select count(*) from ${tableName} where ${condition}(type=,line=213)
|
||||
81
ai-mcp-service/knowledge/frontend-task-map.md
Normal 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 页面。
|
||||
26482
ai-mcp-service/knowledge/generated/api-calls.json
Normal file
269
ai-mcp-service/knowledge/generated/database-inventory.json
Normal 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": []
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
10513
ai-mcp-service/knowledge/generated/page-catalog.json
Normal file
125
ai-mcp-service/knowledge/index.json
Normal 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 服务的部署检查和已知安全风险。"
|
||||
}
|
||||
]
|
||||
2405
ai-mcp-service/knowledge/interfaces-and-procedures.md
Normal file
31
ai-mcp-service/knowledge/operations-and-risk.md
Normal 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 才放开。
|
||||
- 前端登录态主要依赖 Cookie,session 校验逻辑未启用。
|
||||
32
ai-mcp-service/knowledge/overview.md
Normal 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 统计
|
||||
- 采购管理:采购订单、采购件查询、供应商管理
|
||||
2277
ai-mcp-service/knowledge/page-operation-catalog.md
Normal file
25
ai-mcp-service/knowledge/plc-mqtt-integration.md
Normal 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 扣减逻辑。
|
||||
167
ai-mcp-service/knowledge/software-features.md
Normal 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
|
||||
|
||||
功能:
|
||||
- 采购订单
|
||||
- 采购件查询
|
||||
- 供应商管理
|
||||
17
ai-mcp-service/package.json
Normal 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"
|
||||
}
|
||||
}
|
||||
661
ai-mcp-service/scripts/build-knowledge-base.js
Normal 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 才放开。',
|
||||
'- 前端登录态主要依赖 Cookie,session 校验逻辑未启用。',
|
||||
''
|
||||
].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
@@ -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, '&')
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>')
|
||||
.replace(/"/g, '"')
|
||||
.replace(/'/g, ''')
|
||||
}
|
||||
|
||||
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
@@ -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
@@ -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
@@ -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."
|
||||
}
|
||||
}
|
||||
12
前端源码/HL_MES_manager/.babelrc
Normal 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"]
|
||||
}
|
||||
14
前端源码/HL_MES_manager/.editorconfig
Normal 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
|
||||
5
前端源码/HL_MES_manager/.eslintignore
Normal file
@@ -0,0 +1,5 @@
|
||||
build/*.js
|
||||
config/*.js
|
||||
src/assets
|
||||
src/icon
|
||||
src/views/ProjectManagement
|
||||
196
前端源码/HL_MES_manager/.eslintrc.js
Normal 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
@@ -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
|
||||
10
前端源码/HL_MES_manager/.postcssrc.js
Normal 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": {}
|
||||
}
|
||||
}
|
||||
5
前端源码/HL_MES_manager/.travis.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
language: node_js
|
||||
node_js: stable
|
||||
script: npm run test
|
||||
notifications:
|
||||
email: false
|
||||
21
前端源码/HL_MES_manager/LICENSE
Normal 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.
|
||||
45
前端源码/HL_MES_manager/build/build.js
Normal 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"
|
||||
)
|
||||
)
|
||||
})
|
||||
})
|
||||
64
前端源码/HL_MES_manager/build/check-versions.js
Normal 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)
|
||||
}
|
||||
}
|
||||
BIN
前端源码/HL_MES_manager/build/logo.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
108
前端源码/HL_MES_manager/build/utils.js
Normal 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')
|
||||
})
|
||||
}
|
||||
}
|
||||
5
前端源码/HL_MES_manager/build/vue-loader.conf.js
Normal file
@@ -0,0 +1,5 @@
|
||||
'use strict'
|
||||
|
||||
module.exports = {
|
||||
//You can set the vue-loader configuration by yourself.
|
||||
}
|
||||
111
前端源码/HL_MES_manager/build/webpack.base.conf.js
Normal 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'
|
||||
}
|
||||
}
|
||||
98
前端源码/HL_MES_manager/build/webpack.dev.conf.js
Normal 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)
|
||||
}
|
||||
})
|
||||
})
|
||||
181
前端源码/HL_MES_manager/build/webpack.prod.conf.js
Normal 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
|
||||
8
前端源码/HL_MES_manager/config/dev.env.js
Normal 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"',
|
||||
})
|
||||
91
前端源码/HL_MES_manager/config/index.js
Normal 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
|
||||
}
|
||||
}
|
||||
5
前端源码/HL_MES_manager/config/prod.env.js
Normal file
@@ -0,0 +1,5 @@
|
||||
'use strict'
|
||||
module.exports = {
|
||||
NODE_ENV: '"production"',
|
||||
BASE_API: '"https://easy-mock.com/mock/5950a2419adc231f356a6636/vue-admin"',
|
||||
}
|
||||
BIN
前端源码/HL_MES_manager/favicon.ico
Normal file
|
After Width: | Height: | Size: 9.4 KiB |
20
前端源码/HL_MES_manager/index.html
Normal 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>
|
||||
106
前端源码/HL_MES_manager/package.json
Normal 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"
|
||||
]
|
||||
}
|
||||
45
前端源码/HL_MES_manager/src/App.vue
Normal 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>
|
||||
23
前端源码/HL_MES_manager/src/WorkRecode/WorkRecode
Normal 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)物料ANDON:ANDON_ANDON信息_备份_物料Andon综合查询新
|
||||
(9)质量ANDON:ANDON_ANDON信息_备份_质量Andon综合查询新
|
||||
(10)设备ANDON:ANDON_ANDON信息_备份_故障Andon综合查询新
|
||||
2022-09-05:
|
||||
1、基本变量写入:修改
|
||||
@@ -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
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
})
|
||||
}
|
||||
31
前端源码/HL_MES_manager/src/api/BasicData/FactoryCalendar.js
Normal 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
|
||||
}
|
||||
})
|
||||
}
|
||||
57
前端源码/HL_MES_manager/src/api/BasicData/Materialmaintenance.js
Normal 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
|
||||
}
|
||||
})
|
||||
}
|
||||
199
前端源码/HL_MES_manager/src/api/BasicData/MenuManagement.js
Normal 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}\'`
|
||||
}
|
||||
})
|
||||
}
|
||||
398
前端源码/HL_MES_manager/src/api/BasicData/PartsNumberMaintenance.js
Normal 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
|
||||
}
|
||||
})
|
||||
}
|
||||
430
前端源码/HL_MES_manager/src/api/BasicData/PersonnelManagement.js
Normal 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: '班组管理_班组查询'
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
})
|
||||
}
|
||||
88
前端源码/HL_MES_manager/src/api/BasicData/ShiftManagement.js
Normal 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: '设备管理_基础表_班次表_班次类型与工作时间_增加'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -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}`
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -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'
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -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'
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -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 [工位日点检任务记录].点检任务编号`
|
||||
}
|
||||
})
|
||||
}
|
||||
15
前端源码/HL_MES_manager/src/api/SPCanalysis/QualityData_XR.js
Normal 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)
|
||||
}
|
||||
11
前端源码/HL_MES_manager/src/api/SPCanalysis/QualityData_XS.js
Normal 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)
|
||||
}
|
||||
11
前端源码/HL_MES_manager/src/api/SPCanalysis/arrangeChart.js
Normal 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)
|
||||
}
|
||||
15
前端源码/HL_MES_manager/src/api/SPCanalysis/basicTrendTap.js
Normal 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)
|
||||
}
|
||||
15
前端源码/HL_MES_manager/src/api/SPCanalysis/histogram.js
Normal 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)
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
11
前端源码/HL_MES_manager/src/api/SPCanalysis/sampleTrendChart.js
Normal 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)
|
||||
}
|
||||
4
前端源码/HL_MES_manager/src/api/ipAddress.js
Normal 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' // 福田
|
||||
|
||||
47
前端源码/HL_MES_manager/src/api/login.js
Normal 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'
|
||||
}
|
||||
})
|
||||
}
|
||||
BIN
前端源码/HL_MES_manager/src/assets/404_images/404.png
Normal file
|
After Width: | Height: | Size: 96 KiB |
BIN
前端源码/HL_MES_manager/src/assets/404_images/404_cloud.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
前端源码/HL_MES_manager/src/assets/gaojing.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
BIN
前端源码/HL_MES_manager/src/assets/img/CompanyIcon.png
Normal file
|
After Width: | Height: | Size: 590 KiB |
BIN
前端源码/HL_MES_manager/src/assets/img/CompanyQRCode.jpg
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
前端源码/HL_MES_manager/src/assets/img/HELI.jpg
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
前端源码/HL_MES_manager/src/assets/img/HELILOGO.png
Normal file
|
After Width: | Height: | Size: 432 B |
BIN
前端源码/HL_MES_manager/src/assets/img/Init1.png
Normal file
|
After Width: | Height: | Size: 162 B |
BIN
前端源码/HL_MES_manager/src/assets/img/JYLogo.png
Normal file
|
After Width: | Height: | Size: 9.2 KiB |
BIN
前端源码/HL_MES_manager/src/assets/img/JYuser.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
前端源码/HL_MES_manager/src/assets/img/MES.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
前端源码/HL_MES_manager/src/assets/img/MESLOGO.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
BIN
前端源码/HL_MES_manager/src/assets/img/MESLONG.png
Normal file
|
After Width: | Height: | Size: 810 B |
BIN
前端源码/HL_MES_manager/src/assets/img/MESWORK.png
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
BIN
前端源码/HL_MES_manager/src/assets/img/SiyuanLOGO.png
Normal file
|
After Width: | Height: | Size: 9.0 KiB |
BIN
前端源码/HL_MES_manager/src/assets/img/StationLayout.jpg
Normal file
|
After Width: | Height: | Size: 307 KiB |
BIN
前端源码/HL_MES_manager/src/assets/img/StationLayout.psd
Normal file
BIN
前端源码/HL_MES_manager/src/assets/img/StationLayoutNew.jpg
Normal file
|
After Width: | Height: | Size: 300 KiB |
BIN
前端源码/HL_MES_manager/src/assets/img/StationLayoutNew1.jpg
Normal file
|
After Width: | Height: | Size: 306 KiB |
@@ -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]
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
153
前端源码/HL_MES_manager/src/assets/img/api/Assembly/AssemblyMes.js
Normal 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
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
})
|
||||
}
|
||||