zhoushihao
2024-05-09 09be761e45c76c095ddbae1c401d780bae162fdd
Merge remote-tracking branch 'origin/master'
30个文件已修改
4个文件已添加
12个文件已删除
6739 ■■■■■ 已修改文件
UI-Project/config.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/lang/locales/zh-CN.json 569 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/router/index.js 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Caching/cachingbefore.vue 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Caching/cachingun.vue 219 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Identify/identify.vue 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Slicecage/slicecage.vue 1334 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/StockBasicData/stockBasicData.vue 270 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/UnLoadGlass/loadmachinerack.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/User/permissions.vue 461 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/User/rolelist.vue 461 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/User/user.vue 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/PLCAutoMes.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/Plcdownglass.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassInfo.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/controller/DownStorageCageDetailsController.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java 147 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java 90 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstation.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstationTask.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationTaskMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationTaskService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationTaskServiceImpl.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/GlassInfoService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/tools/ExcelToJsonConverter.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcAlarm.json 371 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcMes.json 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcParameter.json 610 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcRead.json 195 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcSign.json 460 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcState.json 285 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcTest.json 378 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.json 362 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/Plcframe.json 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/alarm.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/sign.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/test.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/config.js
@@ -1,6 +1,6 @@
export default {
  serverUrl: "127.0.0.1:88/api",
  //serverUrl: "localhost:88/api/",
 serverUrl: "10.153.19.150:88/api",
  serverUrl2: "10.153.19.150:88"
  //serverUrl:"res.abeim.cn"
}
UI-Project/src/lang/locales/zh-CN.json
@@ -1,521 +1,72 @@
{
  "Clear":"清除",
  "ip":"192.168.10.21",
  "username": "用户名",
  "northglassMESsystem": "北玻MES系统",
  "username": "账号",
  "password": "密码",
  "usernamePlaceholder": "请输入用户名",
  "usernamePlaceholder": "请输入账号",
  "passwordPlaceholder": "请输入密码",
  "loginButton": "登录",
  "registerButton": "注册",
  "resetButton": "重置",
  "usernameRequired": "请输入用户名",
  "usernameLength": "用户名长度在5-15个字符之间",
  "registerButton": "注册新用户",
  "username": "姓名",
  "usernameRequired": "请输入姓名",
  "passwordRequired": "请输入密码",
  "passwordLength": "密码长度在5-15个字符之间",
  "passwordRequired": "确认密码",
  "passwordRequired": "请确认密码",
  "passwordRequired": "确认注册",
  "langCancel": "取消",
  "loginSuccess": "登录成功",
  "langBtnCN": "中文",
  "langBtnEN": "English",
  "langHome": "首页",
  "langUserManagement": "用户管理",
  "langUserList": "用户列表",
  "langUsernamePlaceholder": "请输入用户名",
  "langEmailPlaceholder": "请输入邮箱",
  "langSearch": "搜索",
  "langAddUser": "添加用户",
  "langUsername": "用户名",
  "langEmail": "邮箱",
  "langCreateTime": "创建时间",
  "langDisabled": "是否禁用",
  "langAction": "操作",
  "langEdit": "修改",
  "langDelete": "删除",
  "langAddUserTitle": "添加用户",
  "langPassword": "密码",
  "langHome": "欢迎",
  "langUserManagement": "使用北玻MES系统",
  "langUserList": "退出",
  "langUsernamePlaceholder": "打标机就绪状态",
  "langEmailPlaceholder": "切割机就绪状态",
  "langSearch": "手动确认",
  "langAddUser": "选择工程",
  "langUsername": "开始上片",
  "langEmail": "暂停",
  "langCreateTime": "停止任务",
  "langDisabled": "工程号",
  "langAction": "原片宽",
  "langEdit": "原片长",
  "langDelete": "膜系",
  "langAddUserTitle": "数量",
  "langPassword": "厚度",
  "langState": "状态",
  "langSelect": "请选择",
  "langEditUserTitle": "修改用户",
  "northglassMESsystem": "北玻MES系统",
  "exit": "退出",
  "changePassword": "修改密码",
  "Old password":"旧密码",
  "New password":"新密码",
  "Confirm password":"提交密码",
  "resetPassword": "重置密码",
  "home": "主页",
  "role": "角色",
  "langRoleManagement": "角色管理",
  "langRoleList": "角色列表",
  "langEnterRoleName": "请输入角色名称",
  "langAddRole": "添加角色",
  "langName": "名称",
  "langIsValid": "是否有效",
  "langOperation": "操作",
  "langPleaseSelect": "请选择",
  "langValid": "有效",
  "langInvalid": "无效",
  "langConfirm": "确定",
  "langCancel": "取消",
  "langAddRoleSuccess": "添加角色成功",
  "langEnterName": "请输入名称",
  "langLengthBetween": "长度在",
  "langAnd": "和",
  "langCharacters": "个字符之间",
  "langEnterState": "请输入状态",
  "langUpdateState": "状态更新成功",
  "langEditRole": "编辑角色",
  "langEditRoleSuccess": "编辑角色成功",
  "langDeleteRoleConfirm": "确定要删除该角色吗?",
  "langPrompt": "提示",
  "langDeleteRoleSuccess": "删除角色成功",
  "langCancelDelete": "已取消删除",
  "langRoleName": "角色名称",
  "updateSuccessMessage": "更新成功",
  "paginationTotal": "共 {total} 条",
  "paginationSizes": "每页显示",
  "paginationPrev": "上一页",
  "paginationPager": "{currentPage}/{pageCount}",
  "paginationNext": "下一页",
  "paginationJumper": "跳至",
  "breadcrumb": {
    "home": "首页",
    "permissionManagement": "权限管理",
    "permissionList": "权限列表"
  },
  "search": {
    "placeholder": "请输入关键字"
  },
  "button": {
    "addPermission": "添加权限",
    "cancel": "取消",
    "confirm": "确认"
  },
  "table": {
    "role": "角色",
    "permissionDescription": "权限描述",
    "permissionValue": "权限值",
    "createTime": "创建时间",
    "isActive": "是否激活",
    "operation": "操作"
  },
  "tooltip": {
    "edit": "修改",
    "delete": "删除"
  },
  "dialog": {
    "addPermission": "添加权限",
    "editPermission": "编辑权限"
  },
  "form": {
    "role": "角色",
    "select": "请选择",
    "permission": "权限",
    "isActive": "是否激活"
  },
  "操作": "操作",
  "有效": "有效",
  "无效": "无效",
  "请输入名称": "请输入名称",
  "长度在 2 到 15 个字符": "长度在 2 到 15 个字符",
  "请输入状态": "请输入状态",
  "添加角色": "添加角色",
  "修改角色": "修改角色",
  "删除角色": "删除角色",
  "此操作将永久删除该角色, 是否继续?": "此操作将永久删除该角色, 是否继续?",
  "提示": "提示",
  "确定": "确定",
  "取消": "取消",
  "添加角色成功": "添加角色成功",
  "更新状态成功": "更新状态成功",
  "修改角色成功": "修改角色成功",
  "删除角色成功": "删除角色成功",
  "translation": {
    "D01 VFD error": "D01 VFD 错误",
    "D02 VFD error": "D02 VFD 错误",
    "D03 VFD error": "D03 VFD 错误",
    "D04 VFD error": "D04 VFD 错误",
    "D05 VFD error": "D05 VFD 错误",
    "D06 VFD error": "D06 VFD 错误",
    "B01 VFD error": "B01 VFD 错误",
    "B02 VFD error": "B02 VFD 错误",
    "A01 VFD error": "A01 VFD 错误",
    "A02 VFD error": "A02 VFD 错误",
    "A01 servo turn error": "A01 servo turn 错误",
    "A02 servo turn error": "A02 servo turn 错误",
    "A01 servo travel error": "A01 servo travel 错误",
    "A02 servo travel error": "A02 servo travel 错误",
    "B01 servo travel error": "B01 servo travel 错误",
    "B02 servo travel error": "B02 servo travel 错误",
    "D01 DEC error": "D01 DEC 错误",
    "D01 pos error": "D01 pos 错误",
    "D02 DEC error": "D02 DEC 错误",
    "D02 pos error": "D02 pos 错误",
    "D03 DEC error": "D03 DEC 错误",
    "D03 pos error": "D03 pos 错误",
    "D04 DEC error": "D04 DEC 错误",
    "D04 pos error": "D04 pos 错误",
    "D05 DEC error": "D05 DEC 错误",
    "D05 pos error": "D05 pos 错误",
    "D06 DEC error": "D06 DEC 错误",
    "D06 pos error": "D06 pos 错误",
    "A01 DEC error": "A01 DEC 错误",
    "A01 pos error": "A01 pos 错误",
    "A02 DEC error": "A02 DEC 错误",
    "A02 pos error": "A02 pos 错误",
    "B01 IN DEC error": "B01 IN DEC 错误",
    "B01 IN pos error": "B01 IN pos 错误",
    "B01 OUT DEC error": "B01 OUT DEC 错误",
    "B01 OUT pos error": "B01 OUT pos 错误",
    "B02 IN DEC error": "B02 IN DEC 错误",
    "B02 IN pos error": "B02 IN pos 错误",
    "B02 OUT DEC error": "B02 OUT DEC 错误",
    "B02 OUT pos error": "B02 OUT pos 错误"
  },
  "Electrical": "用户管理",
  "Parameter": "权限管理",
  "Action": "上片机",
  "Sign": "掰片/识别",
  "State": "状态",
  "Alarm": "报警信息",
  "Distribute": "下发",
  "Search": "搜索",
  "dvstate": {
    "automatic": "自动",
    "manual": "手动"
  },
  "langUsernameLabel": "用户名",
  "langPasswordLabel": "密码",
  "langPasswordPlaceholder": "请输入密码",
  "langConfirmPasswordLabel": "确认密码",
  "langConfirmPasswordPlaceholder": "请确认密码",
  "langEmailLabel": "邮箱",
  "langQQLabel": "QQ",
  "langQQPlaceholder": "请输入QQ号码",
  "langPhoneNumberLabel": "手机号码",
  "langPhoneNumberPlaceholder": "请输入手机号码",
  "langUsernameRequiredMessage": "请输入用户名",
  "langUsernameLengthMessage": "用户名长度在5到15个字符之间",
  "langPasswordRequiredMessage": "请输入密码",
  "langPasswordLengthMessage": "密码长度在5到15个字符之间",
  "langEmailRequiredMessage": "请输入邮箱",
  "langEmailFormatMessage": "邮箱格式不正确",
  "langRegisterButton": "注册",
  "langResetButton": "重置",
  "langCancelButton": "取消",
  "langRegisterSuccessMessage": "注册成功",
  "添加用户成功": "添加用户成功",
  "confirmResetPassword": "确认重置密码为默认值吗?",
  "confirm": "确定",
  "cancel": "取消",
  "passwordResetSuccess": "密码已重置为默认值",
  "confirmDeleteCategory": "此操作将永久删除该分类, 是否继续?",
  "prompt": "提示",
  "userDeleteSuccess": "删除用户成功",
  "deleteCanceled": "已取消删除",
  "addUserSuccess": "添加用户成功",
  "editUserSuccess": "修改用户成功",
  "effective": "有效",
  "invalid": "无效",
  "addSuccessMessage": "添加成功",
  "deleteConfirmMessage": "确定要删除该权限吗?",
  "confirmButtonText": "确定",
  "cancelButtonText": "取消",
  "deleteSuccessMessage": "删除成功",
  "deleteCancelledMessage": "已取消删除操作",
  "Enter the glass barcode": "输入玻璃id",
  "Infeed Barcodeid": "手动上片",
  "Enter the order number": "输入订单号",
  "Exit the glass by order number": "按订单出片",
  "Please confirm the glass information": "请确认玻璃信息",
  "Please confirm the Ordering Information": "请确认订单信息",
  "Alarm Information": "报警信息",
  "Cage Details": "理片笼详情",
  "order": "订单",
  "Length": "长",
  "Width": "宽",
  "Operate": "操作",
  "Terminate Task":"结束任务",
  "end task": "完成任务",
  "Number": "数量",
  "Outfeed glass barcode": "出片玻璃id",
  "Infeed glass barcode": "进片玻璃id",
  "Order No": "订单编号",
  "List No": "列表编号",
  "Box No": "箱子编号",
  "Dim": "尺寸",
  "id": "id",
  "content": "内容",
  "timeon": "报警时间",
  "endTime": "结束时间",
  "Cage No": "笼子",
  "The Side": "内外侧",
  "Slot No": "格子",
  "Barcode": "玻璃id",
  "Delete": "删除",
  "Out": "出片",
  "Operation successful": "操作成功",
  "Operation canceled": "操作取消",
  "There is no such order": "没有此订单的玻璃",
  "There are currently tasks": "当前有任务",
  "There is no such glass": "没有此玻璃",
  "There is no such slot": "没有空闲格子",
  "No delete allowed": "不能删除",
  "No out allowed": "不能出片",
  "Are you sure to perform this operation ?": "确定执行此操作?",
  "prompt": "提示",
  "Yes": "是",
  "No": "否",
  "today": "今天",
  "yesterday": "昨天",
  "week": "一周前",
  "shijian": "日期",
  "Pick a day": "选择日期",
  "alarmid": "id",
  "alacontent": "报警内容",
  "time-on": "开始时间",
  "End-Time": "结束时间",
  "Please enter the password": "请输入密码",
  "Password error": "密码错误",
  "DataBase Connection failed": "数据库连接失败",
  "Distribute parameters": "下发参数",
  "The glass size is not within the range": "玻璃尺寸不在范围内",
  "Add": "添加",
  "Enable": "启用",
  "Disable": "禁用",
  "Usage": "使用率",
  "Space (Pieces)": "空间(片数)",
  "This glass is already in the cage": "笼子里已有此玻璃",
  "Enter the Order No": "请输入订单id",
  "OrderInfo": "订单信息",
  "Query": "查询",
  "permission update": "权限编辑",
  "query was successful": "查询成功",
  "Scan Code Point": "扫码位",
  "Upper film position": "上片位",
  "Glass Information": "玻璃信息",
  "current Information": "当前信息",
  "Modify Information": "修改信息",
  "Clear Current": "清除当前",
  "Confirm": "确认",
  "The glass ID already exists in the loading queue": "上片队列已存在此玻璃id",
  "This glass ID already exists in the sorting cage": "理片笼内已存在此玻璃id",
  "Outing Queue":"出片队列",
  "Enter the Aluminum Frame No":"请输入铝框id",
  "Frame No":"铝框id",
  "Glass information corresponding to aluminum frame":"铝框对应的玻璃信息",
  "In the cage":"在笼内",
  "Flipped":"翻转",
  "In the queue":"在队列",
  "Enter the Frame No":"请输入铝框id",
  "Manually Infeed Glass":"手动进片",
  "Normal":"正常",
  "Entering":"正在进",
  "Outing":"正在出",
  "Suspend":"暂停",
  "Stop":"停止",
  "Start":"开始",
  "Sequence":"顺序",
  "Position":"位置",
  "Top":"置顶",
  "Up":"上移",
  "Down":"下移",
  "You do not have this permission":"You do not have this permission",
  "Unable to find the placement method of the aluminum frame":"查询不到铝框摆放方式",
  "Unable to find whether the aluminum frame is flipped or not":"查询不到铝框是否翻转",
  "This glass is already in the Queue":"此玻璃已在出片队列中",
  "Complete":"完成",
  "Not Allow":"不允许",
  "Allow":"允许",
  "Completed":"已完成",
  "Waiting":"等待中",
  "Deleted":"已删除",
  "Glass State":"玻璃状态",
  "Absent":"不存在",
  "Approximately resettable time":"可复位大概时间",
  "EXTERIQR OUT AND BYPASS TO THE LEFT":"EXTERIQR OUT AND BYPASS TO THE LEFT",
  "EXTERIQR OUT AND BYPASS TO THE RIGHT":"EXTERIQR OUT AND BYPASS TO THE RIGHT",
  "Complete Task":"完成任务",
  "Outed":"已出笼",
  "Queue State":"队列状态",
  "Sorting State":"排序状态",
  "Confirm State":"确认状态",
  "Next":"下一个",
  "Current Frame":"当前铝框",
  "Outside":"外侧",
  "Inside":"内侧",
  "Cancel":"取消",
  "Are you sure to clear this barcode ?":"确定清除此玻璃id吗 ?",
  "Terminate Feeding":"终止进片",
  "Terminate Outing":"终止出片",
  "SoftEmergencyStop":"软急停",
  "Unable to clear glass ID in automatic mode":"无法在自动模式下清除玻璃ID",
  "Are you sure you want an emergency stop ?":"确定要急停吗?",
  "Current State":"当前状态",
  "Automatic":"自动",
  "Hand Movement":"手动",
  "Please enter the correct glassID":"请输入正确的玻璃ID",
  "Switch":"切换",
  "This frame has glass that is currently outing":"此铝框有正在出片的玻璃",
  "langparameter": {
    "conveyor Velocity(Auto FAST)": "D01-D06 皮带输送自动快速",
    "conveyor Velocity(Auto SLOW)": "D01-D06 皮带输送自动慢速",
    "conveyor Velocity(Manual)": "D01-D06 皮带输送手动速度",
    "A01 A02 TURN JOG Velocity": "A01 A02 翻转点动速度",
    "A01 A02 TRAVEL JOG Velocity": "A01 A02 行走点动速度",
    "B01 B02 TRAVEL JOG Velocity": "B01 B02 行走点动速度",
    "A01 A02 TURN POS Velocity AUTO": "A01 A02 翻转自动定位速度",
    "A01 A02 TURN POS Velocity manual": "A01 A02 翻转手动定位速度",
    "A01 A02 TRAVEL POS Velocity AUTO": "A01 A02 行走自动定位速度",
    "A01 A02 TRAVEL POS Velocity manual": "A01 A02 行走手动定位速度",
    "B01 B02 TRAVEL POS Velocity AUTO": "B01 B02 行走自动定位速度",
    "B01 B02 TRAVEL POS Velocity manual": "B01 B02 行走手动定位速度"
  },
  "langActions": {
    "D01 VFD conveyor": "D01 输送变频",
    "D02 VFD conveyor": "D02 输送变频",
    "D03 VFD conveyor": "D03 输送变频",
    "D04 VFD conveyor": "D04 输送变频",
    "D05 VFD conveyor": "D05 输送变频",
    "D06 VFD conveyor": "D06 输送变频",
    "A01 VFD conveyor": "A01 输送变频",
    "A02 VFD conveyor": "A02 输送变频",
    "B01 VFD conveyor": "B01 输送变频",
    "B02 VFD conveyor": "B02 输送变频",
    "A01 SERVE TURN JOG+": "A01 翻转伺服点动",
    "A02 SERVE TURN JOG-": "A02 翻转伺服点动",
    "A01 SERVE TRAVEL JOG+": "A01 行走伺服点动",
    "A02 SERVE TRAVEL JOG-": "A02 行走伺服点动",
    "B01 SERVE TRAVEL JOG+": "B01 行走伺服点动",
    "B02 SERVE TRAVEL JOG-": "B02 行走伺服点动",
    "A01 SERVE TURN POS": "A01 翻转伺服定位",
    "A02 SERVE TURN POS": "A02 翻转伺服定位",
    "A01 SERVE TRAVEL POS": "A01 行走伺服定位",
    "A02 SERVE TRAVEL POS": "A02 行走伺服定位",
    "B01 SERVE TRAVEL POS": "B01 行走伺服定位",
    "B02 SERVE TRAVEL POS": "B02 行走伺服定位",
    "B01 YV TURN": "B01 抬起电磁阀",
    "B01 YV UP DOWN": "B01 上升下降电磁阀",
    "B02 YV TURN": "B02 抬起电磁阀",
    "B02 YV UP DOWN": "B02 上升下降电磁阀"
  },
  "Signlang": {
    "D01.SR dec": "D01.减速传感器",
    "D01.SR in pos": "D01.到位传感器",
    "D02.SR dec": "D02.减速传感器",
    "D02.SR in pos": "D02.到位传感器",
    "D03.SR into": "D03.进片传感器",
    "D03.SR dec": "D03.减速传感器",
    "D03.SR in pos": "D03.到位传感器",
    "D04.SR dec": "D04.减速传感器",
    "D04.SR in pos": "D04.到位传感器",
    "D05.SR dec": "D05.减速传感器",
    "D05.SR in pos": "D05.到位传感器",
    "D06.SR dec": "D06.减速传感器",
    "D06.SR in pos": "D06.到位传感器",
    "B01.SR in dec": "B01.进片减速传感器",
    "B01.SR in in pos": "B01.进片到位传感器",
    "B01.SR out dec": "B01.出片减速传感器",
    "B01.SR out in pos": "B01.出片到位传感器",
    "B01.SR turn on": "B01.翻转上到位传感器",
    "B01.SR turn off": "B01.翻转下到位传感器",
    "B01.SR up": "B01.上升到位传感器",
    "B01.SR down": "B01.下降到位传感器",
    "B02.SR out dec": "B02.出片减速传感器",
    "B02.SR out in pos": "B02.出片到位传感器",
    "B02.SR in dec": "B02.进片减速传感器",
    "B02.SR in in pos": "B02.进片到位传感器",
    "B02.SR turn on": "B02.翻转上到位传感器",
    "B02.SR turn off": "B02.翻转下到位传感器",
    "B02.SR up": "B02.上升到位传感器",
    "B02.SR down": "B02.下降到位传感器",
    "B01.SR in safety": "B01.进片安全传感器",
    "B01.SR out safety": "B01.出片安全传感器",
    "B02.SR in safety": "B02.进片安全传感器",
    "SB.start(+)": "SB.启动(+)按钮",
    "SB.stop(1)": "SB.停止(-)按钮",
    "SB.reset": "SB.复位按钮",
    "SB.auto/manul": "SB.手/自切换按钮",
    "D01.SB.confirm": "玻璃信息确认",
    "SB.emg": "SB.急停按钮",
    "D01.SB.start": "D01.启动",
    "D06.SB.start": "D06.启动",
    "B02.SR out safety ": "B02.出片安全传感器",
    "SafetyDoor.requset": "安全门请求进入",
    "SafetyDoor.confirm": "安全门确认",
    "SafetyDoor.reset": "安全门复位",
    "A01.SR left dec":"A01左键速",
    "A01.SR left in pos":"A01左到位",
    "A01.SR left safety":"A01左安全",
    "A01.SR right dec":"A01右键速",
    "A01.SR right in pos":"A01右到位",
    "A01.SR right safety":"A01右安全",
    "A01.SR turn home":"A01翻转原点",
    "A01.SR turn up":"A01翻转上极限",
    "A01.SR turn down":"A01翻转下极限",
    "A01.SR travel home":"A01行走原点",
    "A01.SR travel left dec":"A01行走左减速",
    "A01.SR travel left limit":"A01行走左极限",
    "A01.SR travel right dec":"A01行走右减速",
    "A01.SR travel right limit":"A01行走右极限",
    "A02.SR left dec":"A02左键速",
    "A02.SR left in pos":"A02左到位",
    "A02.SR left safety":"A02左安全",
    "A02.SR right dec":"A02右键速",
    "A02.SR right in pos":"A02右到位",
    "A02.SR right safety":"A02右安全",
    "A02.SR turn home":"A02翻转原点",
    "A02.SR turn up":"A02翻转上极限",
    "A02.SR turn down":"A02翻转下极限",
    "A02.SR travel home":"A02行走原点",
    "A02.SR travel left dec":"A02行走左减速",
    "A02.SR travel left limit":"A02行走左极限",
    "A02.SR travel right dec":"A02行走右减速",
    "A02.SR travel right limit":"A02行走右极限",
    "B01.SR origin":"B01.原点",
    "B01.SR left limit":"B01.左极限",
    "B01.SR right limit":"B01.右极限",
    "B02.SR origin":"B02.原点",
    "B02.SR left limit":"B02.左极限",
    "B02.SR right limit":"B02.右极限",
    "LED.red": "三色灯红",
    "LED.green": "三色灯绿",
    "LED.yellow": "三色灯黄",
    "D01.LED.green": "D01.绿灯",
    "D06.LED.green": "D06.绿灯",
    "B01.YV.turn": "B01.电磁阀翻转",
    "B01.YV.up down": "B01.电磁阀上升下降",
    "B01.YV.gassing": "B01.电磁阀吹气",
    "B02.YV.turn": "B02.电磁阀翻转",
    "B02.YV.up down": "B02.电磁阀上升下降",
    "B02.YV.gassing": "B02.电磁阀吹气",
    "SafetyDoor.Led": "安全门状态灯",
    "SafetyDoor.open": "安全门打开",
    "D01 SB.confirm":"玻璃信息确认指示灯",
    "A01 oilPump":"A01注油泵",
    "A01 motorCtr":"A01电机控制",
    "A02 oilPump":"A02注油泵",
    "A02 motorCtr":"A02电机控制",
    "space":"备用"
  },
  "Statelang": {
    "D01.State": "D01.状态",
    "D02.State": "D02.状态",
    "B01.State": "B01.状态",
    "B02.State": "B02.状态",
    "A01.State": "A01.状态",
    "A02.State": "A02.状态",
    "D03.State": "D03.状态",
    "D04.State": "D04.状态",
    "D05.State": "D05.状态",
    "D06.State": "D06.状态"
  },
  "Automatic State":"自动状态",
  "ManualJog":"开关控制",
  "ManualonePosition":"手动定位",
  "Servomanualone":"半自动",
  "Address parameter settings":"地址参数设置",
  "Speed parameter settings":"速度参数设置",
  "InteractionState":"交互状态",
  "Set":"设定"
  "langSelect": "宽",
  "langEditUserTitle": "长",
  "exit": "操作",
  "changePassword": "工程",
  "Old password":"请选择工程",
  "New password":"添加原片",
  "langConfirm": "确认",
  "langUsernameLabel": "添加",
  "langPasswordLabel": "删除",
  "langPasswordLabel": "是否删除该条信息?",
  "langPasswordLabel": "是否开始上片?",
  "langPasswordLabel": "是否暂停?",
  "langPasswordLabel": "是否停止任务?",
  "langPasswordLabel": "栅格号",
  "langPasswordLabel": "玻璃编号",
  "langPasswordLabel": "高",
  "langPasswordLabel": "启用状态",
  "langPasswordLabel": "启用",
  "langPasswordLabel": "未启用",
  "langPasswordLabel": "报缺",
  "langPasswordLabel": "进炉中",
  "langPasswordLabel": "进炉前",
  "langPasswordLabel": "已出炉玻璃",
  "langPasswordLabel": "版图编号",
  "langPasswordLabel": "下片位",
  "langPasswordLabel": "架号",
  "langPasswordLabel": "流程卡号",
  "langPasswordLabel": "总数量",
  "langPasswordLabel": "已落架数量",
  "langPasswordLabel": "状态",
  "langPasswordLabel": "设备号",
  "langPasswordLabel": "启用状态",
  "langPasswordLabel": "绑定架子",
  "langPasswordLabel": "清空",
}
UI-Project/src/router/index.js
@@ -1,8 +1,8 @@
import {createRouter, createWebHashHistory} from 'vue-router'
import User from '../views/sys/User.vue'
import Role from '../views/sys/Role.vue'
import Menu from '../views/sys/Menu.vue'
// import User from '../views/sys/User.vue'
// import Role from '../views/sys/Role.vue'
// import Menu from '../views/sys/Menu.vue'
const router = createRouter({
  history: createWebHashHistory(),
@@ -212,21 +212,21 @@
          name: 'screen',
          component: () => import('../views/Visualization/screen.vue'),
          children: [
            {
              path: '/sys/users',
              name: 'SysUser',
              component: User
            },
            {
              path: '/sys/roles',
              name: 'SysRole',
              component: Role
            },
            {
              path: '/sys/menus',
              name: 'SysMenu',
              component: Menu
            },
            // {
            //   path: '/sys/users',
            //   name: 'SysUser',
            //   component: User
            // },
            // {
            //   path: '/sys/roles',
            //   name: 'SysRole',
            //   component: Role
            // },
            // {
            //   path: '/sys/menus',
            //   name: 'SysMenu',
            //   component: Menu
            // },
          ]
        },
        {
UI-Project/src/views/Caching/cachingbefore.vue
@@ -55,7 +55,7 @@
const open = async(row) => {  
  try {  
    const confirmResult = await ElMessageBox.confirm(  
      '是否删除该条信息?',
      '是否报缺该条信息?',
      '提示',  
      {  
        confirmButtonText: '是',  
@@ -66,15 +66,15 @@
    if (confirmResult === 'confirm') {  
      // 用户点击了“是”,现在调用删除接口  
      const deleteResponse = await request.post("/cacheGlass/edgStorageCage/edgStorageCageGlass", {
        id:0,
        slot: row.slot
        id: row.id,
        esdId: row.esdId
    })
      if (response.code == 200) {  
        // 删除成功,您可以根据需要处理成功的情况  
        alert('删除成功!');  
      } else {  
        // 删除失败,您可以处理错误或显示错误信息给用户  
        alert('删除失败:' + deleteResponse.message);
        alert('删除失败:' + deleteResponse.message);
      }  
    }  
  } catch (error) {  
@@ -171,9 +171,6 @@
  ]
 
})
</script>
<template>
@@ -206,16 +203,6 @@
        </el-table>
      </div>
    </el-card>
    <!-- <el-dialog v-model="adda" top="30vh" width="25%" title="是否删除该条信息?" >
    <template #footer>
      <div id="dialog-footer">
        <el-button type="primary" @click="handleConfirma">
          确认
        </el-button>
        <el-button @click="adda = false">取消</el-button>
      </div>
    </template>
  </el-dialog> -->
  </div>
  <div id="awatch">
    <img src="../../assets/woshihuancun.png" alt="" style="width: 60%;height: 90%;margin-left: 260px;margin-top: 20px;">
UI-Project/src/views/Caching/cachingun.vue
@@ -3,6 +3,7 @@
import {reactive} from "vue";
import {useRouter} from "vue-router"
const router = useRouter()
const adda = ref(false)
import request from "@/utils/request"
import { ref, onMounted } from "vue";
@@ -11,94 +12,126 @@
//  import LanguageMixin from './lang/LanguageMixin'
const tableData = ref([])
const slot = ref('')
// 发送获取表格数据的请求
// const fetchTableData = async () => {
//   try {
//     // 发送获取表格数据的请求,并等待响应
//     // const response = await request.post("/loadGlass/optimizeProject/listByState", requestData);
//     const response = await request.get("unLoadGlass/downStorage/selectStorageCage");
//     // 检查响应状态
//     if (response.code === 200) {
//       // 更新表格数据
//       console.log('成功获取表格数据:', response.data);
//       tableData.splice(0, tableData.length, ...response.data);
//     } else {
//       // 请求失败,显示错误消息
//       ElMessage.error(response.msg);
//     }
//   } catch (error) {
//     // 处理请求失败的情况
//    ElMessage.error('获取表格数据失败,请重试');
//   }
// };
// onMounted(fetchTableData);
request.get("unLoadGlass/downStorage/selectStorageCage").then((res) => {
request.get("/unLoadGlass/downStorage/selectStorageCage").then((res) => {
          if (res.code == 200) {
          console.log(res.data);
          tableData.value = res.data
          console.log(res.data[0].slot);
          } else {
          ElMessage.warning(res.msg)
        
          }
          });
const dialogForm = () => {
  ElMessageBox.confirm(
    '是否报缺?',
    '提示',
    {
      confirmButtonText: '是',
      cancelButtonText: '取消',
      type: 'warning',
    }
  )
  .then(() => {
    // this.boxa = true
    // this.box = false
//   const getTableRow = (row,type) =>{
//   switch (type) {
//     case 'delete':{
//       let flowData = ref({
//         id:0,
//         slot:row.slot
//       })
//       request.post("/cacheGlass/edgStorageCage/edgStorageCageGlass",flowData.value).then((res) => {
//         if(res.code==200){
//           ElMessage.success(t('searchOrder.msgDeleteSuccess'))
//           router.push({path:'/main/delivery/selectDelivery',query:{random:Math.random()}})
//         }else{
//           ElMessage.warning(res.msg)
//           router.push("/login")
//         }
//       })
//       return
//     }
//   }
// }
// let slots = ref({
//   id:0,
//    slot: slot.value
// })
const open = async(row) => {
  try {
    const confirmResult = await ElMessageBox.confirm(
      '是否删除该条信息?',
      '提示',
      {
        confirmButtonText: '是',
        cancelButtonText: '取消',
        type: 'warning',
      }
    );
    if (confirmResult === 'confirm') {
      // 用户点击了“是”,现在调用删除接口
      const deleteResponse = await request.post("/cacheGlass/edgStorageCage/edgStorageCageGlass", {
        id:0,
        slot: row.slot
    })
}
const open = () => {
  ElMessageBox.confirm(
    '是否删除该条信息?',
    '提示',
    {
      confirmButtonText: '是',
      cancelButtonText: '取消',
      type: 'warning',
    }
  )
    .then(() => {
      ElMessage({
        type: 'success',
        message: '删除成功!',
      })
    })
    .catch(() => {
      ElMessage({
        type: 'info',
        message: '删除失败',
      })
    })
}
const getTableRow = (row,type) =>{
  switch (type) {
    case 'edit' :{
      //alert('我接收到子组件传送的编辑信息')
      router.push({path: '/main/returns/createReturns', query: { ReturnID: 'TH24010101' }})
      break
    }
    case 'delete':{
      alert('我接收到子组件传送的删除信息')
      break
    }
  }
}
      if (response.code == 200) {
        // 删除成功,您可以根据需要处理成功的情况
        alert('删除成功!');
      } else {
        // 删除失败,您可以处理错误或显示错误信息给用户
        alert('删除失败:' + deleteResponse.message);
      }
    }
  } catch (error) {
    // 处理可能出现的错误,比如 ElMessageBox 抛出的异常等
    console.error('发生错误:', error);
  }
};
// const open = () => {
//   ElMessageBox.confirm(
//     '是否删除该条信息?',
//     '提示',
//     {
//       confirmButtonText: '是',
//       cancelButtonText: '取消',
//       type: 'warning',
//     }
//   )
//     .then(() => {
//       ElMessage({
//         type: 'success',
//         message: '删除成功!',
//       })
//     })
//     .catch(() => {
//       ElMessage({
//         type: 'info',
//         message: '删除失败',
//       })
//     })
// }
// 删除
// const handleBindRacka = (row) => {
//   adda.value = true; // 打开绑定架子对话框
// };
// // 删除
// const handleConfirma = async () => {
//   try {
//       window.localStorage.setItem('slot', res.data.slot)
//     let slot = window.localStorage.getItem('slot')
//     const response = await request.post('/cacheGlass/edgStorageCage/edgStorageCageGlass', {
//       slot: slot.value,
//       id: 0
//     });
//     if (response.code == 200) {
//       // 绑定成功,处理逻辑
//       ElMessage.success(response.message);
//       adda.value = false;
//     } else {
//       // 请求失败,显示错误消息
//       ElMessage.error(response.msg);
//     }
//   } catch (error) {
//     // 处理错误
//     console.error(error);
//   }
// };
const gridOptions = reactive({
  border:  "full",//表格加边框
@@ -150,19 +183,39 @@
        <el-table height="240" ref="table" 
        @selection-change="handleSelectionChange"
        :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
          <el-table-column prop="id" align="center" label="玻璃ID" min-width="80" />
          <el-table-column prop="sequence" align="center" label="位置" min-width="120" />
          <el-table-column prop="slot" align="center" label="栅格号" min-width="80" />
          <el-table-column prop="glass_id" align="center" label="玻璃编号" min-width="80" />
          <el-table-column prop="width" align="center" label="宽" min-width="120" />
          <el-table-column prop="height" align="center" label="长" min-width="120" />
          <el-table-column prop="height" align="center" label="高" min-width="120" />
          <el-table-column
            align="center"
            label="启用状态"
            min-width="80"
            prop="enable_state"
          >
          <template #default="scope">
            <el-tag type="success" >{{ scope.row.enable_state==1?"启用":"未启用"  }}</el-tag>
          </template>
          </el-table-column>
          <el-table-column fixed="right" label="操作" align="center" width="200">
            <template #default>
              <el-button size="mini" type="text" plain  @click="dialogForm">报缺</el-button>
            <template #default="scope">
              <!-- <el-button size="mini" type="text" plain @click="handleBindRacka(scope.row)">报缺</el-button> -->
              <el-button size="mini" type="text" plain  @click="open(scope.row)">报缺</el-button>
            </template>
        </el-table-column>
        </el-table>
      </div>
    </el-card>
    <!-- <el-dialog v-model="adda" top="30vh" width="25%" title="是否删除该条信息?" >
    <template #footer>
      <div id="dialog-footer">
        <el-button type="primary" @click="handleConfirma">
          确认
        </el-button>
        <el-button @click="adda = false">取消</el-button>
      </div>
    </template>
  </el-dialog> -->
  </div>
  <div id="awatch">
    <img src="../../assets/woshihuancun.png" alt="" style="width: 60%;height: 90%;margin-left: 260px;margin-top: 20px;">
UI-Project/src/views/Identify/identify.vue
@@ -1,5 +1,6 @@
<template>  
<!-- <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading"> -->
    <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;" v-loading="loading">
      <el-scrollbar height="700px">
  <div id="app" style="margin-top: 20px;">  
    <div  
      :style="{ width: `${olWidth}px`, height: `${olHeight}px`,position: 'relative' }"  
@@ -8,29 +9,51 @@
      v-for="(rect, index) in adjustedRects"  
      :key="index"  
      class="rect"  
      @click="handleBind"
      :style="{ position: 'absolute', top: `${rect.y_axis}px`, left: `${rect.x_axis}px`, width: `${rect.width}px`, height: `${rect.height}px` }"  
    >
     <!-- 箭头 -->  
     <div id="arrow"></div>
     <div id="line"></div>
     <!-- <div id="arrow"></div>
     <div id="line"></div>   -->
     <!-- <div  class="centered-text" >NG24030401B01</div> -->
     <div  class="centered-text">
    <div>{{ rect.process_id }}</div>  
    <div style="margin-top: 50px;margin-left: -85px;">{{ rect.width }}*{{ rect.height }}</div>  
  </div>
  </div> 
  <!-- 点击弹出 -->
  <el-dialog v-model="blind" top="30vh" width="15%" style="text-align: center;">
    <!-- <template #footer> -->
      <!-- <div id="dialog-footer"> -->
        <el-button type="warning" plain :icon="Delete" @click="handle"  style="width: 120px;margin-left: 10px;">
          破损
        </el-button>
        <el-button  type="danger" plain @click="blind = false" style="width: 120px;margin-top: 10px;">
          <el-icon class="el-icon--right"><Upload /></el-icon>
          人工拿走</el-button>
      <!-- </div> -->
    <!-- </template> -->
  </el-dialog>
   </div>
  </div>  
  </el-scrollbar>
  </el-card>
</template>  
  
<script setup>
<script setup lang="ts">
import { Delete, Upload } from '@element-plus/icons-vue'
import { ref, onMounted } from 'vue';  
import request from "@/utils/request"
const blind = ref(false)
const olWidth = ref(); 
const olHeight = ref();
const process_id = ref(); // 用于存储process_id的响应式引用 
// const rects = ref([]); // 用于存储矩形数据的响应式引用  
const adjustedRects = ref([]);
const handleBind = (row) => {
  blind.value = true; // 打开绑定架子对话框
};
onMounted(async () => {  
  try {  
    const response = await request.post('/cacheGlass/taskCache/currentCutTerritory'); // 替换为你的API端点  
@@ -103,4 +126,5 @@
  width: 240px; /* 直线的长度,根据需要调整 */  
  background-color: #911005; /* 直线的颜色 */  
}  
</style>
UI-Project/src/views/Slicecage/slicecage.vue
@@ -1,27 +1,37 @@
<script lang="ts" setup>
import {reactive, ref} from 'vue'
import {useRouter} from 'vue-router'
import {ElMessage, ElMessageBox} from 'element-plus'
import {Search} from "@element-plus/icons-vue";
import {reactive} from "vue";
import {useRouter} from "vue-router"
const router = useRouter()
import { ref } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { tr } from "element-plus/es/locale";
const dialogFormVisible = ref(false)
const dialogFormVisiblea = ref(false)
const dialogFormVisibleb = ref(false)
const carposition1 = ref(40)
const carposition2 = ref(200)
const timers1 = ref(true)
const timers2 = ref(true)
const cellshow = ref(false)
const cellshow1 = ref(true)
const cellshow2 = ref(true)
const million = ref(0)
const million1 = ref(0)
const loading = null
const handleSelectionChange = null
const carposition1 = ref(60);
const carposition2 = ref(220);
const carposition3 = ref(60);
const carposition4 = ref(260);
const timers1 =ref(true);
const timers2 =ref(true);
const timers3 =ref(true);
const timers4 =ref(true);
const cellshow=ref(false);
const cellshow5=ref(false);
const c1=ref(false);
const c2=ref(false);
const cellshow1=ref(true);
const cellshow2=ref(true);
const cellshow3=ref(true);
const cellshow4=ref(true);
const million=ref(0);
const million1=ref(0);
const million3=ref(0);
const million4=ref(0);
const currentPage4 = ref(4)
const pageSize4 = ref(100)
const tableData = [
@@ -46,338 +56,320 @@
    e: '1',
    f: '100*100',
    g: '',
  },
  }
]
const dialogForm = () => {
  ElMessageBox.confirm('确定要急停吗?', '提示', {
    confirmButtonText: '是',
    cancelButtonText: '否',
    type: 'warning',
  })
      .then(() => {
        ElMessage({
          type: 'success',
          message: '急停成功!',
        })
  ElMessageBox.confirm(
    '确定要急停吗?',
    '提示',
    {
      confirmButtonText: '是',
      cancelButtonText: '否',
      type: 'warning',
    }
  )
    .then(() => {
      ElMessage({
        type: 'success',
        message: '急停成功!',
      })
      .catch(() => {
        ElMessage({
          type: 'info',
          message: '急停失败',
    })
    .catch(() => {
      ElMessage({
        type: 'info',
        message: '急停失败',
      })
    })
}
var timer = setInterval(() => {
  console.log(million.value, million1.value)
  million.value += 1
  if (million.value - million1.value !== 12) {
    if (million.value - million1.value >= 2) {
      if (carposition1.value == 200) {
        timers1.value = false
      } else if (carposition1.value == 40) {
        timers1.value = true
  var timer=setInterval(() => {
    console.log(million.value,million1.value);
    million.value+=1;
    if(million.value-million1.value!==12){
      if(million.value-million1.value>=2){
        if(carposition1.value==220){
          timers1.value=false;
        }else if(carposition1.value==60){
          timers1.value=true;
        }
        if(timers1.value==true){
          carposition1.value=carposition1.value+16;
        }else{
          carposition1.value=carposition1.value-16;
        }
        if(carposition2.value==220){
          timers2.value=false;
        }else if(carposition2.value==60){
          timers2.value=true;
        }
        if(timers2.value==true){
          carposition2.value+=16;
        }else{
          carposition2.value-=16;
        }
      }else{
      }
      if (timers1.value == true) {
        carposition1.value = carposition1.value + 16
      } else {
        carposition1.value = carposition1.value - 16
    }else{
      million1.value=million.value;
      if(cellshow.value==true){
        cellshow.value=false;
      }else{
        cellshow.value=true;
      }
      if (carposition2.value == 200) {
        timers2.value = false
      } else if (carposition2.value == 40) {
        timers2.value = true
      if(cellshow1.value==true){
        cellshow1.value=false;
      }else{
        cellshow1.value=true;
      }
      if (timers2.value == true) {
        carposition2.value += 16
      } else {
        carposition2.value -= 16
      if(cellshow2.value==true){
        cellshow2.value=false;
      }else{
        cellshow2.value=true;
      }
    } else {
    }
  } else {
    million1.value = million.value
    if (cellshow.value == true) {
      cellshow.value = false
    } else {
      cellshow.value = true
  }, 1000);
  var timer=setInterval(() => {
    console.log(million3.value,million4.value);
    million3.value+=1;
    if(million3.value-million4.value!==12){
      if(million3.value-million4.value>=2){
        if(carposition3.value==260){
          timers3.value=false;
        }else if(carposition3.value==60){
          timers3.value=true;
        }
        if(timers3.value==true){
          carposition3.value=carposition3.value+20;
        }else{
          carposition3.value=carposition3.value-20;
        }
        if(carposition4.value==260){
          timers4.value=false;
        }else if(carposition4.value==60){
          timers4.value=true;
        }
        if(timers4.value==true){
          carposition4.value+=20;
        }else{
          carposition4.value-=20;
        }
      }else{
      }
    }else{
      million4.value=million3.value;
      if(cellshow5.value==true){
        cellshow5.value=false;
      }else{
        cellshow5.value=true;
      }
      if(cellshow3.value==true){
        cellshow3.value=false;
      }else{
        cellshow3.value=true;
      }
      if(cellshow4.value==true){
        cellshow4.value=false;
      }else{
        cellshow4.value=true;
      }
    }
    if (cellshow1.value == true) {
      cellshow1.value = false
    } else {
      cellshow1.value = true
    }
    if (cellshow2.value == true) {
      cellshow2.value = false
    } else {
      cellshow2.value = true
    }
  }
}, 100000)
const getTableRow = (row, type) => {
  }, 1000);
const getTableRow = (row,type) =>{
  switch (type) {
    case 'edit': {
    case 'edit' :{
      //alert('我接收到子组件传送的编辑信息')
      router.push({
        path: '/main/returns/createReturns',
        query: {ReturnID: 'TH24010101'},
      })
      router.push({path: '/main/returns/createReturns', query: { ReturnID: 'TH24010101' }})
      break
    }
    case 'delete': {
    case 'delete':{
      alert('我接收到子组件传送的删除信息')
      break
    }
  }
}
const gridOptions = reactive({
  border: 'full', //表格加边框
  keepSource: true, //保持源数据
  align: 'center', //文字居中
  stripe: true, //斑马纹
  rowConfig: {isCurrent: true, isHover: true, height: 50}, //鼠标移动或选择高亮
  border:  "full",//表格加边框
  keepSource: true,//保持源数据
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮
  id: 'OrderList',
  showFooter: true, //显示脚
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
  exportConfig: {},
  scrollY: {enabled: true}, //开启虚拟滚动
  showOverflow: true,
  scrollY:{ enabled: true },//开启虚拟滚动
  showOverflow:true,
  columnConfig: {
    resizable: true,
    useKey: true,
    useKey: true
  },
  filterConfig: {
    //筛选配置项
    remote: true,
  filterConfig: {   //筛选配置项
    remote: true
  },
  customConfig: {
    storage: true,
    storage: true
  },
  editConfig: {
    trigger: 'click',
    mode: 'row',
    showStatus: true,
    showStatus: true
  },
  data: [
  data:  [
    {
      id: '1',
      long: '5',
      wide: '1005',
      thick: '183.6',
    },
      'id': '1',
      'long': '5',
      'wide': '1005',
      'thick': '183.6',
    }
  ],
})
</script>
<template>
  <div style="height: 700px;">
    <!-- <el-button style="margin-top: 5px;margin-left: 10px;"   id="searchButton" type="primary" @click="dialogFormVisible = true">手动进片</el-button> -->
    <el-button style="margin-top: 5px;margin-left: 10px;"
               id="searchButton"
               type="primary"
               @click="dialogFormVisiblea = true">订单信息
    </el-button>
    <el-button style="margin-top: 5px;margin-left: 10px;"
               id="searchButton"
               type="success"
               @click="dialogFormVisibleb = true">出片队列
    </el-button>
    <el-button style="margin-top: 5px;margin-left: 10px;"
               id="searchButton"
               type="danger">终止进片
    </el-button>
    <el-button style="margin-top: 5px;margin-left: 10px;"
               id="searchButton"
               type="danger">终止出片
    </el-button>
    <el-button style="margin-top: 5px;margin-left: 10px;"
               id="searchButton"
               type="danger"
               @click="dialogForm">软急停
    </el-button>
    <el-card style="flex: 1;margin-left: 10px;margin-top: 5px;"
             v-loading="loading">
    <el-button style="margin-top: 5px;margin-left: 10px;"   id="searchButton" type="primary" @click="dialogFormVisiblea = true">订单信息</el-button>
    <el-button style="margin-top: 5px;margin-left: 10px;"   id="searchButton" type="success" @click="dialogFormVisibleb = true">出片队列</el-button>
    <el-button style="margin-top: 5px;margin-left: 10px;"   id="searchButton" type="danger">终止进片</el-button>
    <el-button style="margin-top: 5px;margin-left: 10px;"   id="searchButton" type="danger">终止出片</el-button>
    <el-button style="margin-top: 5px;margin-left: 10px;"   id="searchButton" type="danger"  @click="dialogForm">软急停</el-button>
    <el-card style="flex: 1;margin-left: 10px;margin-top: 5px;" v-loading="loading">
      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 100px;">
        <el-table height="100%"
                  ref="table"
                  @selection-change="handleSelectionChange"
                  :data="tableData"
                  :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
          <el-table-column prop="id"
                           align="center"
                           label="出片玻璃ID"
                           min-width="80"/>
          <el-table-column prop="a"
                           align="center"
                           label="笼子"
                           min-width="120"/>
          <el-table-column prop="b"
                           align="center"
                           label="格子"
                           min-width="120"/>
          <el-table-column prop="c"
                           align="center"
                           label="工程号"
                           min-width="120"/>
          <el-table-column prop="d"
                           align="center"
                           label="流程卡号"
                           min-width="120"/>
          <el-table-column prop="e"
                           align="center"
                           label="钢化版图号"
                           min-width="157"/>
          <el-table-column prop="f"
                           align="center"
                           label="尺寸"
                           min-width="120"/>
          <el-table-column prop="g"
                           align="center"
                           label="结束任务"
                           min-width="120">
            <el-button style="margin-top: 5px;margin-left: 10px;"
                       id="searchButton"
                       type="text">完成任务
            </el-button>
          </el-table-column>
        <el-table height="100%" ref="table"
        @selection-change="handleSelectionChange"
        :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
          <el-table-column prop="id" align="center" label="出片玻璃ID" min-width="80" />
          <el-table-column prop="a" align="center" label="笼子" min-width="120" />
          <el-table-column prop="b" align="center" label="格子" min-width="120" />
          <el-table-column prop="c" align="center" label="工程号" min-width="120" />
          <el-table-column prop="d" align="center" label="流程卡号" min-width="120" />
          <el-table-column prop="e" align="center" label="钢化版图号" min-width="157" />
          <el-table-column prop="f" align="center" label="尺寸" min-width="120" />
          <el-table-column prop="g" align="center" label="结束任务" min-width="120">
    <el-button style="margin-top: 5px;margin-left: 10px;"   id="searchButton" type="text">完成任务</el-button>
</el-table-column>
        </el-table>
      </div>
    </el-card>
    <el-card style="flex: 1;margin-left: 10px;margin-top: 3px;"
             v-loading="loading">
    <el-card style="flex: 1;margin-left: 10px;margin-top: 3px;" v-loading="loading">
      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 100px;">
        <el-table height="100%"
                  ref="table"
                  @selection-change="handleSelectionChange"
                  :data="tableDatab"
                  :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
          <el-table-column prop="id"
                           align="center"
                           label="进片玻璃ID"
                           min-width="80"/>
          <el-table-column prop="a"
                           align="center"
                           label="笼子"
                           min-width="120"/>
          <el-table-column prop="b"
                           align="center"
                           label="格子"
                           min-width="120"/>
          <el-table-column prop="c"
                           align="center"
                           label="工程号"
                           min-width="120"/>
          <el-table-column prop="d"
                           align="center"
                           label="流程卡号"
                           min-width="120"/>
          <el-table-column prop="e"
                           align="center"
                           label="钢化版图号"
                           min-width="157"/>
          <el-table-column prop="f"
                           align="center"
                           label="尺寸"
                           min-width="120"/>
          <el-table-column prop="g"
                           align="center"
                           label="结束任务"
                           min-width="120">
            <el-button style="margin-top: 5px;margin-left: 10px;"
                       id="searchButton"
                       type="text">完成任务
            </el-button>
          </el-table-column>
        <el-table height="100%" ref="table"
        @selection-change="handleSelectionChange"
        :data="tableDatab" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
          <el-table-column prop="id" align="center" label="进片玻璃ID" min-width="80" />
          <el-table-column prop="a" align="center" label="笼子" min-width="120" />
          <el-table-column prop="b" align="center" label="格子" min-width="120" />
          <el-table-column prop="c" align="center" label="工程号" min-width="120" />
          <el-table-column prop="d" align="center" label="流程卡号" min-width="120" />
          <el-table-column prop="e" align="center" label="钢化版图号" min-width="157" />
          <el-table-column prop="f" align="center" label="尺寸" min-width="120" />
          <el-table-column prop="g" align="center" label="结束任务" min-width="120">
    <el-button style="margin-top: 5px;margin-left: 10px;"   id="searchButton" type="text">完成任务</el-button>
</el-table-column>
        </el-table>
      </div>
    </el-card>
    <div style="padding: 10px;display: flex;height:110px;">
      <div id="occupy">
        <el-col style="text-align:left;font-weight: bold;">#1</el-col>
        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
          <span id="biao">使用率</span><span id="zhi">35%</span>
        </el-col>
        <hr style="width:80%;margin: 0 auto;"/>
        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
          <span id="biao">空闲(格子数)</span><span id="zhi">555</span>
        </el-col>
      </div>
      <div id="occupy">
        <el-col style="text-align:left;font-weight: bold;">#2</el-col>
        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
          <span id="biao">使用率</span><span id="zhi">35%</span>
        </el-col>
        <hr style="width:80%;margin: 0 auto;"/>
        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
          <span id="biao">空闲(格子数)</span><span id="zhi">555</span>
        </el-col>
      </div>
      <div id="occupy">
        <el-col style="text-align:left;font-weight: bold;">#3</el-col>
        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
          <span id="biao">使用率</span><span id="zhi">35%</span>
        </el-col>
        <hr style="width:80%;margin: 0 auto;"/>
        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
          <span id="biao">空闲(格子数)</span><span id="zhi">555</span>
        </el-col>
      </div>
      <div id="occupy">
        <el-col style="text-align:left;font-weight: bold;">#4</el-col>
        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
          <span id="biao">使用率</span><span id="zhi">35%</span>
        </el-col>
        <hr style="width:80%;margin: 0 auto;"/>
        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
          <span id="biao">空闲(格子数)</span><span id="zhi">555</span>
        </el-col>
      </div>
      <div id="occupy">
        <el-col style="text-align:left;font-weight: bold;">#5</el-col>
        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
          <span id="biao">使用率</span><span id="zhi">35%</span>
        </el-col>
        <hr style="width:80%;margin: 0 auto;"/>
        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
          <span id="biao">空闲(格子数)</span><span id="zhi">555</span>
        </el-col>
      </div>
      <div id="occupy">
        <el-col style="text-align:left;font-weight: bold;">#6</el-col>
        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
          <span id="biao">使用率</span><span id="zhi">35%</span>
        </el-col>
        <hr style="width:80%;margin: 0 auto;"/>
        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
          <span id="biao">空闲(格子数)</span><span id="zhi">555</span>
        </el-col>
      </div>
      <div id="occupy">
        <el-col style="text-align:left;font-weight: bold;">#7</el-col>
        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
          <span id="biao">使用率</span><span id="zhi">35%</span>
        </el-col>
        <hr style="width:80%;margin: 0 auto;"/>
        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
          <span id="biao">空闲(格子数)</span><span id="zhi">555</span>
        </el-col>
      </div>
      <div id="occupy">
        <el-col style="text-align:left;font-weight: bold;">#8</el-col>
        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
          <span id="biao">使用率</span><span id="zhi">35%</span>
        </el-col>
        <hr style="width:80%;margin: 0 auto;"/>
        <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
          <span id="biao">空闲(格子数)</span><span id="zhi">555</span>
        </el-col>
      </div>
      <!-- <div v-for="n in 8" :key="n" id="occupy">
      <div  id="occupy">
                    <el-col style="text-align:left;font-weight: bold;">#1</el-col>
                    <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
                        <span id="biao">使用率</span><span id="zhi">35%</span>
                    </el-col>
                    <hr style="width:80%;margin: 0 auto;" />
                    <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
                        <span id="biao">空闲(格子数)</span><span id="zhi">555</span>
                    </el-col>
                </div>
                <div  id="occupy">
                    <el-col style="text-align:left;font-weight: bold;">#2</el-col>
                    <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
                        <span id="biao">使用率</span><span id="zhi">35%</span>
                    </el-col>
                    <hr style="width:80%;margin: 0 auto;" />
                    <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
                        <span id="biao">空闲(格子数)</span><span id="zhi">555</span>
                    </el-col>
                </div>
                <div  id="occupy">
                    <el-col style="text-align:left;font-weight: bold;">#3</el-col>
                    <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
                        <span id="biao">使用率</span><span id="zhi">35%</span>
                    </el-col>
                    <hr style="width:80%;margin: 0 auto;" />
                    <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
                        <span id="biao">空闲(格子数)</span><span id="zhi">555</span>
                    </el-col>
                </div>
                <div  id="occupy">
                    <el-col style="text-align:left;font-weight: bold;">#4</el-col>
                    <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
                        <span id="biao">使用率</span><span id="zhi">35%</span>
                    </el-col>
                    <hr style="width:80%;margin: 0 auto;" />
                    <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
                        <span id="biao">空闲(格子数)</span><span id="zhi">555</span>
                    </el-col>
                </div>
                <div  id="occupy">
                    <el-col style="text-align:left;font-weight: bold;">#5</el-col>
                    <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
                        <span id="biao">使用率</span><span id="zhi">35%</span>
                    </el-col>
                    <hr style="width:80%;margin: 0 auto;" />
                    <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
                        <span id="biao">空闲(格子数)</span><span id="zhi">555</span>
                    </el-col>
                </div>
                <div  id="occupy">
                    <el-col style="text-align:left;font-weight: bold;">#6</el-col>
                    <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
                        <span id="biao">使用率</span><span id="zhi">35%</span>
                    </el-col>
                    <hr style="width:80%;margin: 0 auto;" />
                    <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
                        <span id="biao">空闲(格子数)</span><span id="zhi">555</span>
                    </el-col>
                </div>
                <div  id="occupy">
                    <el-col style="text-align:left;font-weight: bold;">#7</el-col>
                    <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
                        <span id="biao">使用率</span><span id="zhi">35%</span>
                    </el-col>
                    <hr style="width:80%;margin: 0 auto;" />
                    <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
                        <span id="biao">空闲(格子数)</span><span id="zhi">555</span>
                    </el-col>
                </div>
                <div  id="occupy">
                    <el-col style="text-align:left;font-weight: bold;">#8</el-col>
                    <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
                        <span id="biao">使用率</span><span id="zhi">35%</span>
                    </el-col>
                    <hr style="width:80%;margin: 0 auto;" />
                    <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
                        <span id="biao">空闲(格子数)</span><span id="zhi">555</span>
                    </el-col>
                </div>
                <!-- <div v-for="n in 8" :key="n" id="occupy">
                    <el-col style="text-align:left;font-weight: bold;">#1</el-col>
                    <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
                        <span id="biao">使用率</span><span id="zhi">35%</span>
@@ -391,508 +383,360 @@
    <!-- <div id="awatch">
  <img src="../../assets/cp.png" alt="" style="width: 70%;height: 70%;margin-left: 160px;">
</div> -->
    <!-- // 父级框 -->
    <div class="img-dlpl">
      <div class="img-car1"
           :style="'z-index:999;left:247px;top:' + carposition1 + 'px;position:absolute;'">
        <div v-show="cellshow1"
             style="margin-top:10px;width:200px;height:5px;background-color:red;"></div>
      </div>
      <div class="img-car2"
           :style="'z-index:999;left:704px;top:' + carposition2 + 'px;position:absolute;'">
        <div v-show="cellshow2"
             style="margin-top:10px;width:200px;height:5px;background-color:red;"></div>
      </div>
      <div v-show="cellshow"
           style="width: 200px;height: 5px;position: absolute;top:60px;left: 490px;background-color: red;">
      </div>
<!-- // 父级框 -->
<div class="img-dlpl" >
    <div class="img-car1" :style="'z-index:999;left:247px;top:' + carposition1 + 'px;position:absolute;'">
      <div v-show="cellshow1" style="margin-top:10px;width:200px;height:5px;background-color:#409EFF;"></div>
    </div>
    <div v-show="c1" class="img-car2" :style="'z-index:999;left:704px;top:' + carposition2 + 'px;position:absolute;'">
      <div v-show="cellshow2" style="margin-top:10px;width:200px;height:5px;background-color:#409EFF;"></div>
    </div>
    <div v-show="c2" class="img-car3" :style="'z-index:999;left:247px;top:' + carposition3 + 'px;position:absolute;'">
      <div v-show="cellshow3" style="margin-top:10px;width:200px;height:5px;background-color:#409EFF;"></div>
    </div>
    <div class="img-car4" :style="'z-index:999;left:704px;top:' + carposition4 + 'px;position:absolute;'">
      <div v-show="cellshow4" style="margin-top:10px;width:200px;height:5px;background-color:#409EFF;"></div>
    </div>
    <div v-show="cellshow" style="width: 200px;height: 5px;position: absolute;top:70px;left: 480px;background-color: #409EFF;">
    </div>
    <div v-show="cellshow5" style="width: 200px;height: 5px;position: absolute;top:70px;left: 480px;background-color: #409EFF;">
    </div>
</div>
  </div>
  <el-dialog v-model="dialogFormVisible"
             top="12vh"
             width="85%"
             title="请确认玻璃信息">
    <div style="margin-left: 50px;margin-bottom: 10px;">
      <div style="display: flex;">
        <p style="margin-top: 4px;">确认状态:</p>
        <el-button style="margin-left: 10px;size: mini;"
                   type="success">允许
        </el-button>
        <el-button style="margin-left: 10px;size: mini;"
                   type="danger">不允许
        </el-button>
        <p style="margin-left: 60px;margin-top: 4px;">当前状态:</p>
        <div style="margin-top: 4px; margin-left: 10px;">手动</div>
        <el-button style="margin-left: 10px;size: mini;"
                   type="primary">切换
        </el-button>
        <el-input placeholder="请输入玻璃id"
                  style="width: 180px;size: mini;margin-left: 60px;"></el-input>
        <el-button style="margin-left: 10px;size: mini;"
                   type="primary">添加
        </el-button>
        <p style="margin-left: 60px;margin-top: 4px;">玻璃id:</p>
        <el-input style="width: 180px;size: mini;margin-left: 30px;"></el-input>
      </div>
      <div style="display: flex;">
        <p style="margin-left: 290px;margin-top: 20px;font-weight: bold;">上片位</p>
        <p style="margin-left: 630px;margin-top: 20px;font-weight: bold;">扫码位</p>
      </div>
      <div style="display: flex;">
        <div style="margin-top: 20px;">
          <p style="margin-top: 10px;margin-left: 100px;margin-bottom: 20px;">当前信息</p>
          <el-form label-position="right"
                   label-width="90px">
            <el-form-item style="width: 20vw"
                          label="玻璃id:">
              <el-input style="width: 180px"
                        size="mini"
                        placeholder="请输入玻璃id"></el-input>
            </el-form-item>
            <el-form-item style="width: 20vw"
                          label="订单编号:">
              <el-input style="width: 180px"
                        size="mini"
                        placeholder="请输入订单编号"></el-input>
            </el-form-item>
            <el-form-item style="width: 20vw"
                          label="列表编号:">
              <el-input style="width: 180px"
                        size="mini"
                        placeholder="请输入列表编号"></el-input>
            </el-form-item>
            <el-form-item style="width: 20vw"
                          label="箱子编号:">
              <el-input style="width: 180px"
                        size="mini"
                        placeholder="请输入箱子编号"></el-input>
            </el-form-item>
            <el-form-item style="width: 20vw"
                          label="长:">
              <el-input style="width: 180px"
                        size="mini"
                        placeholder="请输入长"></el-input>
            </el-form-item>
            <el-form-item style="width: 20vw"
                          label="宽:">
              <el-input style="width: 180px"
                        size="mini"
                        placeholder="请输入宽"></el-input>
            </el-form-item>
          </el-form>
        </div>
        <div style="margin-top: 20px;">
          <p style="margin-top: 10px;margin-left: 100px;margin-bottom: 20px;">修改信息</p>
          <el-form label-position="right"
                   label-width="90px">
            <el-form-item style="width: 20vw"
                          label="玻璃id:">
              <el-input style="width: 180px"
                        size="mini"
                        placeholder="请输入玻璃id"></el-input>
            </el-form-item>
            <el-form-item style="width: 20vw"
                          label="订单编号:">
              <el-input style="width: 180px"
                        size="mini"
                        placeholder="请输入订单编号"></el-input>
            </el-form-item>
            <el-form-item style="width: 20vw"
                          label="列表编号:">
              <el-input style="width: 180px"
                        size="mini"
                        placeholder="请输入列表编号"></el-input>
            </el-form-item>
            <el-form-item style="width: 20vw"
                          label="箱子编号:">
              <el-input style="width: 180px"
                        size="mini"
                        placeholder="请输入箱子编号"></el-input>
            </el-form-item>
            <el-form-item style="width: 20vw"
                          label="长:">
              <el-input style="width: 180px"
                        size="mini"
                        placeholder="请输入长"></el-input>
            </el-form-item>
            <el-form-item style="width: 20vw"
                          label="宽:">
              <el-input style="width: 180px"
                        size="mini"
                        placeholder="请输入宽"></el-input>
            </el-form-item>
          </el-form>
        </div>
        <div style="margin-top: 20px;">
          <p style="margin-top: 10px;margin-left: 100px;margin-bottom: 20px;">修改信息</p>
          <el-form label-position="right"
                   label-width="90px">
            <el-form-item style="width: 20vw"
                          label="玻璃id:">
              <el-input style="width: 180px"
                        size="mini"
                        placeholder="请输入玻璃id"></el-input>
            </el-form-item>
            <el-form-item style="width: 20vw"
                          label="订单编号:">
              <el-input style="width: 180px"
                        size="mini"
                        placeholder="请输入订单编号"></el-input>
            </el-form-item>
            <el-form-item style="width: 20vw"
                          label="列表编号:">
              <el-input style="width: 180px"
                        size="mini"
                        placeholder="请输入列表编号"></el-input>
            </el-form-item>
            <el-form-item style="width: 20vw"
                          label="箱子编号:">
              <el-input style="width: 180px"
                        size="mini"
                        placeholder="请输入箱子编号"></el-input>
            </el-form-item>
            <el-form-item style="width: 20vw"
                          label="长:">
              <el-input style="width: 180px"
                        size="mini"
                        placeholder="请输入长"></el-input>
            </el-form-item>
            <el-form-item style="width: 20vw"
                          label="宽:">
              <el-input style="width: 180px"
                        size="mini"
                        placeholder="请输入宽"></el-input>
            </el-form-item>
          </el-form>
        </div>
        <div style="margin-top: 20px;">
          <p style="margin-top: 10px;margin-left: 100px;margin-bottom: 20px;">当前信息</p>
          <el-form label-position="right"
                   label-width="90px">
            <el-form-item style="width: 20vw"
                          label="玻璃id:">
              <el-input style="width: 180px"
                        size="mini"
                        placeholder="请输入玻璃id"></el-input>
            </el-form-item>
            <el-form-item style="width: 20vw"
                          label="订单编号:">
              <el-input style="width: 180px"
                        size="mini"
                        placeholder="请输入订单编号"></el-input>
            </el-form-item>
            <el-form-item style="width: 20vw"
                          label="列表编号:">
              <el-input style="width: 180px"
                        size="mini"
                        placeholder="请输入列表编号"></el-input>
            </el-form-item>
            <el-form-item style="width: 20vw"
                          label="箱子编号:">
              <el-input style="width: 180px"
                        size="mini"
                        placeholder="请输入箱子编号"></el-input>
            </el-form-item>
            <el-form-item style="width: 20vw"
                          label="长:">
              <el-input style="width: 180px"
                        size="mini"
                        placeholder="请输入长"></el-input>
            </el-form-item>
            <el-form-item style="width: 20vw"
                          label="宽:">
              <el-input style="width: 180px"
                        size="mini"
                        placeholder="请输入宽"></el-input>
            </el-form-item>
          </el-form>
        </div>
      </div>
    </div>
    <template #footer>
      <div id="dialog-footer">
        <el-button type="primary"
                   @click="dialogFormVisible = false">
          确认
        </el-button>
        <el-button @click="dialogFormVisible = false">取消</el-button>
      </div>
    </template>
  </el-dialog>
  <el-dialog v-model="dialogFormVisiblea"
             top="10vh"
             width="85%"
             title="订单信息">
    <el-input placeholder="请输入工程号"
              style="width: 180px;size: mini;"></el-input>
    <el-button style="margin-left: 10px;size: mini;"
               type="primary">查询
    </el-button>
    <el-table ref="table"
              style="margin-top: 20px;height: 500px;"
              @selection-change="handleSelectionChange"
              :data="tableDataa"
              :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
      <el-table-column prop="ida"
                       align="center"
                       label="玻璃id"
                       min-width="80"/>
      <el-table-column prop="typea"
                       align="center"
                       label="工程号"
                       min-width="120"/>
      <el-table-column prop="typea"
                       align="center"
                       label="长"
                       min-width="120"/>
      <el-table-column prop="typea"
                       align="center"
                       label="宽"
                       min-width="120"/>
      <el-table-column prop="typea"
                       align="center"
                       label="厚"
                       min-width="120"/>
    </el-table>
    <div id="demo-pagination-block">
      <el-pagination style="margin-left: 850px;"
                     v-model:current-page="currentPage4"
                     v-model:page-size="pageSize4"
                     :page-sizes="[100, 200, 300, 400]"
                     :small="small"
                     :disabled="disabled"
                     :background="background"
                     layout="total, sizes, prev, pager, next, jumper"
                     :total="400"
                     @size-change="handleSizeChange"
                     @current-change="handleCurrentChange"/>
    </div>
  </el-dialog>
  <el-dialog v-model="dialogFormVisibleb"
             top="10vh"
             width="85%"
             title="出片队列">
<el-dialog v-model="dialogFormVisible" top="12vh" width="85%" title="请确认玻璃信息" >
  <div style="margin-left: 50px;margin-bottom: 10px;">
    <div style="display: flex;">
      <p style="margin-top: 4px;">队列状态:</p>
      <p style="margin-top: 4px;">开始</p>
      <el-button style="margin-left: 10px;size: mini;"
                 type="danger">停止
      </el-button>
      <el-button style="margin-left: 10px;size: mini;"
                 type="primary">添加
      </el-button>
    <p style="margin-top: 4px;">确认状态:</p>
    <el-button style="margin-left: 10px;size: mini;" type="success">允许</el-button>
    <el-button style="margin-left: 10px;size: mini;" type="danger">不允许</el-button>
    <p style="margin-left: 60px;margin-top: 4px;">当前状态:</p>
    <div style="margin-top: 4px; margin-left: 10px;">手动</div>
    <el-button style="margin-left: 10px;size: mini;" type="primary">切换</el-button>
    <el-input  placeholder="请输入玻璃id" style="width: 180px;size: mini;margin-left: 60px;"></el-input>
    <el-button style="margin-left: 10px;size: mini;" type="primary">添加</el-button>
    <p style="margin-left: 60px;margin-top: 4px;">玻璃id:</p>
    <el-input  style="width: 180px;size: mini;margin-left: 30px;"></el-input>
  </div>
    <div style="display: flex;">
      <p style="margin-left: 290px;margin-top: 20px;font-weight: bold;">上片位</p>
      <p style="margin-left: 630px;margin-top: 20px;font-weight: bold;">扫码位</p>
    </div>
    <el-table ref="table"
              style="margin-top: 20px;height: 500px;"
              @selection-change="handleSelectionChange"
              :data="tableDatab"
              :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
      <el-table-column prop="id"
                       align="center"
                       label="铝框id"
                       min-width="80"/>
      <el-table-column prop="type"
                       align="center"
                       label="玻璃id"
                       min-width="120"/>
      <el-table-column prop="type"
                       align="center"
                       label="订单编号"
                       min-width="120"/>
      <el-table-column prop="type"
                       align="center"
                       label="列表编号"
                       min-width="120"/>
      <el-table-column prop="type"
                       align="center"
                       label="箱子编号"
                       min-width="120"/>
      <el-table-column prop="type"
                       align="center"
                       label="长"
                       min-width="120"/>
      <el-table-column prop="type"
                       align="center"
                       label="宽"
                       min-width="120"/>
      <el-table-column prop="type"
                       align="center"
                       label="玻璃状态"
                       min-width="120"/>
      <el-table-column prop="type"
                       align="center"
                       label="顺序"
                       min-width="120"/>
      <el-table-column prop="type"
                       align="center"
                       label="完成"
                       min-width="120"/>
      <el-table-column prop="type"
                       align="center"
                       label="操作"
                       min-width="120"/>
    </el-table>
  </el-dialog>
    <div style="display: flex;">
    <div style="margin-top: 20px;">
      <p style="margin-top: 10px;margin-left: 100px;margin-bottom: 20px;">当前信息</p>
      <el-form label-position="right" label-width="90px">
      <el-form-item style="width: 20vw" label="玻璃id:">
      <el-input style="width: 180px" size="mini" placeholder="请输入玻璃id"></el-input>
       </el-form-item>
      <el-form-item style="width: 20vw" label="订单编号:">
      <el-input style="width: 180px" size="mini" placeholder="请输入订单编号"></el-input>
       </el-form-item>
      <el-form-item style="width: 20vw" label="列表编号:">
      <el-input style="width: 180px" size="mini" placeholder="请输入列表编号"></el-input>
       </el-form-item>
      <el-form-item style="width: 20vw" label="箱子编号:">
      <el-input style="width: 180px" size="mini" placeholder="请输入箱子编号"></el-input>
       </el-form-item>
      <el-form-item style="width: 20vw" label="长:">
      <el-input style="width: 180px" size="mini" placeholder="请输入长"></el-input>
       </el-form-item>
      <el-form-item style="width: 20vw" label="宽:">
      <el-input style="width: 180px" size="mini" placeholder="请输入宽"></el-input>
       </el-form-item>
      </el-form>
      </div>
    <div style="margin-top: 20px;">
      <p style="margin-top: 10px;margin-left: 100px;margin-bottom: 20px;">修改信息</p>
      <el-form label-position="right" label-width="90px">
      <el-form-item style="width: 20vw" label="玻璃id:">
      <el-input style="width: 180px" size="mini" placeholder="请输入玻璃id"></el-input>
       </el-form-item>
      <el-form-item style="width: 20vw" label="订单编号:">
      <el-input style="width: 180px" size="mini" placeholder="请输入订单编号"></el-input>
       </el-form-item>
      <el-form-item style="width: 20vw" label="列表编号:">
      <el-input style="width: 180px" size="mini" placeholder="请输入列表编号"></el-input>
       </el-form-item>
      <el-form-item style="width: 20vw" label="箱子编号:">
      <el-input style="width: 180px" size="mini" placeholder="请输入箱子编号"></el-input>
       </el-form-item>
      <el-form-item style="width: 20vw" label="长:">
      <el-input style="width: 180px" size="mini" placeholder="请输入长"></el-input>
       </el-form-item>
      <el-form-item style="width: 20vw" label="宽:">
      <el-input style="width: 180px" size="mini" placeholder="请输入宽"></el-input>
       </el-form-item>
      </el-form>
      </div>
    <div style="margin-top: 20px;">
      <p style="margin-top: 10px;margin-left: 100px;margin-bottom: 20px;">修改信息</p>
      <el-form label-position="right" label-width="90px">
      <el-form-item style="width: 20vw" label="玻璃id:">
      <el-input style="width: 180px" size="mini" placeholder="请输入玻璃id"></el-input>
       </el-form-item>
      <el-form-item style="width: 20vw" label="订单编号:">
      <el-input style="width: 180px" size="mini" placeholder="请输入订单编号"></el-input>
       </el-form-item>
      <el-form-item style="width: 20vw" label="列表编号:">
      <el-input style="width: 180px" size="mini" placeholder="请输入列表编号"></el-input>
       </el-form-item>
      <el-form-item style="width: 20vw" label="箱子编号:">
      <el-input style="width: 180px" size="mini" placeholder="请输入箱子编号"></el-input>
       </el-form-item>
      <el-form-item style="width: 20vw" label="长:">
      <el-input style="width: 180px" size="mini" placeholder="请输入长"></el-input>
       </el-form-item>
      <el-form-item style="width: 20vw" label="宽:">
      <el-input style="width: 180px" size="mini" placeholder="请输入宽"></el-input>
       </el-form-item>
      </el-form>
      </div>
    <div style="margin-top: 20px;">
      <p style="margin-top: 10px;margin-left: 100px;margin-bottom: 20px;">当前信息</p>
      <el-form label-position="right" label-width="90px">
      <el-form-item style="width: 20vw" label="玻璃id:">
      <el-input style="width: 180px" size="mini" placeholder="请输入玻璃id"></el-input>
       </el-form-item>
      <el-form-item style="width: 20vw" label="订单编号:">
      <el-input style="width: 180px" size="mini" placeholder="请输入订单编号"></el-input>
       </el-form-item>
      <el-form-item style="width: 20vw" label="列表编号:">
      <el-input style="width: 180px" size="mini" placeholder="请输入列表编号"></el-input>
       </el-form-item>
      <el-form-item style="width: 20vw" label="箱子编号:">
      <el-input style="width: 180px" size="mini" placeholder="请输入箱子编号"></el-input>
       </el-form-item>
      <el-form-item style="width: 20vw" label="长:">
      <el-input style="width: 180px" size="mini" placeholder="请输入长"></el-input>
       </el-form-item>
      <el-form-item style="width: 20vw" label="宽:">
      <el-input style="width: 180px" size="mini" placeholder="请输入宽"></el-input>
       </el-form-item>
      </el-form>
      </div>
    </div>
        </div>
  <template #footer>
    <div id="dialog-footer">
      <el-button type="primary" @click="dialogFormVisible = false">
        确认
      </el-button>
      <el-button @click="dialogFormVisible = false">取消</el-button>
    </div>
  </template>
</el-dialog>
<el-dialog v-model="dialogFormVisiblea" top="10vh" width="85%" title="订单信息" >
  <el-input  placeholder="请输入工程号" style="width: 180px;size: mini;"></el-input>
    <el-button style="margin-left: 10px;size: mini;" type="primary">查询</el-button>
    <el-table  ref="table" style="margin-top: 20px;height: 500px;"
        @selection-change="handleSelectionChange"
        :data="tableDataa" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
          <el-table-column prop="ida" align="center" label="玻璃id" min-width="80" />
          <el-table-column prop="typea" align="center" label="工程号" min-width="120" />
          <el-table-column prop="typea" align="center" label="长" min-width="120" />
          <el-table-column prop="typea" align="center" label="宽" min-width="120" />
          <el-table-column prop="typea" align="center" label="厚" min-width="120" />
        </el-table>
        <div id="demo-pagination-block">
    <el-pagination
    style="margin-left: 850px;"
      v-model:current-page="currentPage4"
      v-model:page-size="pageSize4"
      :page-sizes="[100, 200, 300, 400]"
      :small="small"
      :disabled="disabled"
      :background="background"
      layout="total, sizes, prev, pager, next, jumper"
      :total="400"
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
    />
  </div>
</el-dialog>
<el-dialog v-model="dialogFormVisibleb" top="10vh" width="85%" title="出片队列" >
  <div style="display: flex;">
  <p style="margin-top: 4px;">队列状态:</p>
  <p style="margin-top: 4px;">开始</p>
    <el-button style="margin-left: 10px;size: mini;" type="danger">停止</el-button>
    <el-button style="margin-left: 10px;size: mini;" type="primary">添加</el-button>
  </div>
    <el-table  ref="table" style="margin-top: 20px;height: 500px;"
        @selection-change="handleSelectionChange"
        :data="tableDatab" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
          <el-table-column prop="id" align="center" label="铝框id" min-width="80" />
          <el-table-column prop="type" align="center" label="玻璃id" min-width="120" />
          <el-table-column prop="type" align="center" label="订单编号" min-width="120" />
          <el-table-column prop="type" align="center" label="列表编号" min-width="120" />
          <el-table-column prop="type" align="center" label="箱子编号" min-width="120" />
          <el-table-column prop="type" align="center" label="长" min-width="120" />
          <el-table-column prop="type" align="center" label="宽" min-width="120" />
          <el-table-column prop="type" align="center" label="玻璃状态" min-width="120" />
          <el-table-column prop="type" align="center" label="顺序" min-width="120" />
          <el-table-column prop="type" align="center" label="完成" min-width="120" />
          <el-table-column prop="type" align="center" label="操作" min-width="120" />
        </el-table>
</el-dialog>
</template>
<style scoped>
#dt {
  display: block;
  float: left;
  line-height: 20px;
  margin-left: 100px;
}
#dta {
  display: block;
  float: left;
  line-height: 20px;
  margin-left: 80%;
}
#dialog-footer {
#dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
#dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
#dialog-footer{
  text-align: center;
  margin-top: -15px;
}
#message {
#message{
  text-align: center;
  align-items: center;
  color: black;
  width: 200px;
  height: 100px;
  background-color: #337ecc;
  margin-left: 28%;
   width: 200px;
   height: 100px;
   background-color: #337ecc;
   margin-left: 28%;
}
#awatch {
#awatch{
  height: 450px;
}
#occupy {
  height: 100%;
  width: 15%;
  background-color: white;
  margin: 0px 8px 0px 8px;
  border: 1px #ebeef5 solid;
  text-align: center;
  padding: 5px;
    height: 100%;
    width: 15%;
    background-color: white;
    margin: 0px 8px 0px 8px;
    border: 1px #EBEEF5 solid;
    text-align: center;
    padding: 5px;
}
#biao {
  font-size: 12px;
    font-size: 12px;
}
#zhi {
  font-size: 18px;
  font-weight: bold;
    font-size: 18px;
    font-weight: bold;
}
#demo-pagination-block + #demo-pagination-block {
  margin-top: 10px;
}
#demo-pagination-block #demonstration {
  margin-bottom: 16px;
}
::-webkit-scrollbar {
  width: 0 !important;
     width: 0 !important;
   }
   ::-webkit-scrollbar {
     width: 0 !important;height: 0;
   }
   .img-list{
  position:relative;
}
::-webkit-scrollbar {
  width: 0 !important;
  height: 0;
}
.img-list {
  position: relative;
}
.data-img {
  @apply float-none;
  width: 100%;
  height: 16rem;
.data-img{
  @apply float-none ;
  width:100%;
  height:16rem;
  background: rgba(0, 0, 0, 0);
  opacity: 1;
  border-radius: 0.5rem 0.5rem 0px 0px;
}
.check-img {
.check-img{
  position: absolute;
  width: 3.3125rem;
  height: 2.9375rem;
  top: 20rem;
  top:20rem;
  right: 57rem;
  z-index: 10;
}
.check-imga {
.check-imga{
  position: absolute;
  width: 3.3125rem;
  height: 2.9375rem;
  top: 15rem;
  top:15rem;
  right: 28.5rem;
  z-index: 10;
}
.vertical {
  width: 45px;
  height: 25px;
  background-color: #409eff;
  top: 485px; /* 初始位置 */
  left: 899px; /* 水平居中 */
  transform: translateX(-50%);
  animation: move-vertical 6s infinite; /* 从上到下动画,持续6秒,无限循环 */
    width: 45px;
    height: 25px;
    background-color: #409EFF;
    top: 485px; /* 初始位置 */
    left: 899px; /* 水平居中 */
    transform: translateX(-50%);
    animation: move-vertical 6s infinite; /* 从上到下动画,持续6秒,无限循环 */
}
@keyframes move-vertical {
  0% {
    top: 485px; /* 起始位置 */
  }
  100% {
    top: calc(100% - 210px); /* 从上到下结束位置 */
  }
    0% {
        top: 485px; /* 起始位置 */
    }
    100% {
        top: calc(100% - 210px); /* 从上到下结束位置 */
    }
}
.img-dlpl {
.img-dlpl{
  margin-left: 200px;
  background-image: url('../../assets/dlpl.png');
  background-image:url('../../assets/dlpl.png');
  background-repeat: no-repeat;
  background-attachment: local;
  min-height: 400px;
  width: 1200px;
  max-width: 100%;
  background-size: 1200px 400px;
  overflow: hidden;
  position: relative;
    background-attachment: local;
    min-height: 400px;
    width: 1200px;
    max-width: 100%;
    background-size: 1200px 400px;
    overflow: hidden;
    position:relative
}
.img-car1 {
  background-image: url('../../assets/lpl.jpg');
.img-car1{
  background-image:url('../../assets/lp.png');
  position: absolute;
  background-repeat: no-repeat;
  background-attachment: local;
  min-height: 200px;
  width: 200px;
  max-width: 100%;
  background-size: 200px 70px;
  overflow: hidden;
  position: relative;
    background-attachment: local;
    min-height: 200px;
    width: 200px;
    max-width: 100%;
    background-size: 200px 70px;
    overflow: hidden;
    position:relative
}
.img-car2 {
  background-image: url('../../assets/lpla.jpg');
.img-car2{
  background-image:url('../../assets/lpa.png');
  position: absolute;
  background-repeat: no-repeat;
  background-attachment: local;
  min-height: 200px;
  width: 200px;
  max-width: 100%;
  background-size: 200px 70px;
  overflow: hidden;
  position: relative;
    background-attachment: local;
    min-height: 200px;
    width: 200px;
    max-width: 100%;
    background-size: 200px 70px;
    overflow: hidden;
    position:relative
}
.img-car3{
  background-image:url('../../assets/lp.png');
  position: absolute;
  background-repeat: no-repeat;
    background-attachment: local;
    min-height: 200px;
    width: 200px;
    max-width: 100%;
    background-size: 200px 70px;
    overflow: hidden;
    position:relative
}
.img-car4{
  background-image:url('../../assets/lpa.png');
  position: absolute;
  background-repeat: no-repeat;
    background-attachment: local;
    min-height: 200px;
    width: 200px;
    max-width: 100%;
    background-size: 200px 70px;
    overflow: hidden;
    position:relative
}
</style>
UI-Project/src/views/StockBasicData/stockBasicData.vue
@@ -3,99 +3,136 @@
import {reactive} from "vue";
import {useRouter} from "vue-router"
const router = useRouter()
const adda = ref(false)
import { ref } from 'vue'
import request from "@/utils/request"
import { ref, onMounted } from "vue";
// import { ref } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
//  import LanguageMixin from './lang/LanguageMixin'
const tableData = [
  {
    id: '1',
    long: '1005',
    wide: '183.6',
    thick: '1991',
    type: '待识别',
    typea: '1',
  },
  {
    id: '2',
    long: '105',
    wide: '183',
    thick: '191',
    typea: '1',
    type: '待识别'
  },
  {
    id: '2',
    long: '105',
    wide: '183',
    thick: '191',
    typea: '1',
    type: '待识别'
  },
]
const open = () => {
  ElMessageBox.confirm(
    '是否删除该条信息?',
    '提示',
    {
      confirmButtonText: '是',
      cancelButtonText: '取消',
      type: 'warning',
    }
  )
    .then(() => {
      ElMessage({
        type: 'success',
        message: '删除成功!',
      })
const tableData = ref([])
const slot = ref('')
request.post("/cacheGlass/taskCache/selectEdgTask").then((res) => {
          if (res.code == 200) {
          console.log(res.data);
          tableData.value = res.data
          console.log(res.data[0].slot);
          } else {
          ElMessage.warning(res.msg)
          }
          });
//   const getTableRow = (row,type) =>{
//   switch (type) {
//     case 'delete':{
//       let flowData = ref({
//         id:0,
//         slot:row.slot
//       })
//       request.post("/cacheGlass/edgStorageCage/edgStorageCageGlass",flowData.value).then((res) => {
//         if(res.code==200){
//           ElMessage.success(t('searchOrder.msgDeleteSuccess'))
//           router.push({path:'/main/delivery/selectDelivery',query:{random:Math.random()}})
//         }else{
//           ElMessage.warning(res.msg)
//           router.push("/login")
//         }
//       })
//       return
//     }
//   }
// }
// let slots = ref({
//   id:0,
//    slot: slot.value
// })
const open = async(row) => {
  try {
    const confirmResult = await ElMessageBox.confirm(
      '是否删除该条信息?',
      '提示',
      {
        confirmButtonText: '是',
        cancelButtonText: '取消',
        type: 'warning',
      }
    );
    if (confirmResult === 'confirm') {
      // 用户点击了“是”,现在调用删除接口
      const deleteResponse = await request.post("/cacheGlass/edgStorageCage/edgStorageCageGlass", {
        id:0,
        slot: row.slot
    })
    .catch(() => {
      ElMessage({
        type: 'info',
        message: '删除失败',
      })
    })
}
const getTableRow = (row,type) =>{
  switch (type) {
    case 'edit' :{
      //alert('我接收到子组件传送的编辑信息')
      router.push({path: '/main/returns/createReturns', query: { ReturnID: 'TH24010101' }})
      break
    }
    case 'delete':{
      alert('我接收到子组件传送的删除信息')
      break
    }
  }
}
const dialogForm = () => {
  ElMessageBox.confirm(
    '是否破损?',
    '提示',
    {
      confirmButtonText: '是',
      cancelButtonText: '取消',
      type: 'warning',
    }
  )
  .then(() => {
    // this.boxa = true
    // this.box = false
    })
}
const dialogForma = () => {
  ElMessageBox.confirm(
    '是否删除该条信息?',
    '提示',
    {
      confirmButtonText: '是',
      cancelButtonText: '取消',
      type: 'warning',
    }
  )
}
      if (response.code == 200) {
        // 删除成功,您可以根据需要处理成功的情况
        alert('删除成功!');
      } else {
        // 删除失败,您可以处理错误或显示错误信息给用户
        alert('删除失败:' + deleteResponse.message);
      }
    }
  } catch (error) {
    // 处理可能出现的错误,比如 ElMessageBox 抛出的异常等
    console.error('发生错误:', error);
  }
};
// const open = () => {
//   ElMessageBox.confirm(
//     '是否删除该条信息?',
//     '提示',
//     {
//       confirmButtonText: '是',
//       cancelButtonText: '取消',
//       type: 'warning',
//     }
//   )
//     .then(() => {
//       ElMessage({
//         type: 'success',
//         message: '删除成功!',
//       })
//     })
//     .catch(() => {
//       ElMessage({
//         type: 'info',
//         message: '删除失败',
//       })
//     })
// }
// 删除
// const handleBindRacka = (row) => {
//   adda.value = true; // 打开绑定架子对话框
// };
// // 删除
// const handleConfirma = async () => {
//   try {
//       window.localStorage.setItem('slot', res.data.slot)
//     let slot = window.localStorage.getItem('slot')
//     const response = await request.post('/cacheGlass/edgStorageCage/edgStorageCageGlass', {
//       slot: slot.value,
//       id: 0
//     });
//     if (response.code == 200) {
//       // 绑定成功,处理逻辑
//       ElMessage.success(response.message);
//       adda.value = false;
//     } else {
//       // 请求失败,显示错误消息
//       ElMessage.error(response.msg);
//     }
//   } catch (error) {
//     // 处理错误
//     console.error(error);
//   }
// };
const gridOptions = reactive({
  border:  "full",//表格加边框
  keepSource: true,//保持源数据
@@ -131,36 +168,48 @@
      'wide': '1005',
      'thick': '183.6',
    }
  ],
  ]
})
</script>
<template>
  <div>
    <el-card style="flex: 1;margin-left: 10px;margin-top: 5px;" v-loading="loading">
      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 200px;">
        <el-table height="100%" ref="table"
    <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading">
      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
        <el-table height="240" ref="table"
        @selection-change="handleSelectionChange"
        :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
          <el-table-column prop="id" align="center" label="id" min-width="80" />
          <el-table-column prop="long" align="center" label="长" min-width="120" />
          <el-table-column prop="wide" align="center" label="宽" min-width="120" />
          <el-table-column prop="wide" align="center" label="厚度" min-width="120" />
          <el-table-column prop="wide" align="center" label="膜系" min-width="120" />
          <el-table-column prop="wide" align="center" label="出片顺序" min-width="120" />
          <el-table-column prop="wide" align="center" label="流程卡号" min-width="120" />
          <el-table-column prop="wide" align="center" label="其他" min-width="120" />
          <el-table-column prop="slot" align="center" label="id" min-width="80" />
          <el-table-column prop="glass_id" align="center" label="长" min-width="80" />
          <el-table-column prop="width" align="center" label="宽" min-width="120" />
          <el-table-column prop="height" align="center" label="厚度" min-width="120" />
          <el-table-column prop="height" align="center" label="膜系" min-width="120" />
          <el-table-column prop="height" align="center" label="出片顺序" min-width="120" />
          <el-table-column prop="height" align="center" label="流程卡号" min-width="120" />
          <el-table-column prop="height" align="center" label="其他" min-width="120" />
          <el-table-column
            align="center"
            label="启用状态"
            min-width="80"
            prop="enable_state"
          >
          <template #default="scope">
            <el-tag type="success" >{{ scope.row.enable_state==1?"启用":"未启用"  }}</el-tag>
          </template>
          </el-table-column>
          <el-table-column fixed="right" label="操作" align="center" width="200">
            <template #default>
              <el-button size="mini" type="text" plain  @click="dialogForm">破损</el-button>
              <el-button size="mini" type="text" plain  @click="dialogForma">删除</el-button>
            <template #default="scope">
              <el-button size="mini" type="text" plain  @click="open(scope.row)">破损</el-button>
              <el-button size="mini" type="text" plain  @click="open(scope.row)">删除</el-button>
            </template>
        </el-table-column>
        </el-table>
      </div>
    </el-card>
  </div>
</template>
@@ -182,14 +231,7 @@
   margin-left: 28%;
}
#awatch{
  height: 450px;
}
#main-body{
  margin-top: -20px;
  margin-left: 300px;
}
#main-bodya{
  margin-top: -10px;
  margin-left: 100px;
  height: 460px;
  /* margin-top: -60px; */
}
</style>
UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
@@ -100,7 +100,8 @@
    const response = await request.get('unLoadGlass/downWorkStation/getflowCardId');
    console.log(response)
    if (response.code === 200) {
      flowCardOptions.value = response.data.map(item => ({ flowcard_id: item.flow_card_id }));
      flowCardOptions.value = response.data.map(item => ({ flowcard_id: item.flow_card_Id }));
      console.log(flowCardOptions.value)
    } else {
      ElMessage.error(response.msg);
    }
@@ -198,7 +199,7 @@
initWebSocket();
// initWebSocket();
onMounted(fetchTableData);
// setInterval(fetchTableData, 2000)
UI-Project/src/views/User/permissions.vue
New file
@@ -0,0 +1,461 @@
<script lang="ts" setup>
import {Search} from "@element-plus/icons-vue";
import {reactive} from "vue";
import {useRouter} from "vue-router"
import { ref } from 'vue'
const router = useRouter()
const value1 = ref(true)
const add = ref(false)
const adda = ref(false)
const changer = ref(false)
import { ElMessage, ElMessageBox } from 'element-plus'
const tableData = [
  {
    id: '1',
    long: '1005',
    wide: '183.6',
    thick: '1991',
    time: '2024/4/1',
    type: '待识别',
    typea: '1',
  },
  {
    id: '2',
    long: '105',
    wide: '183',
    time: '2024/4/1',
    thick: '191',
    typea: '1',
    type: '待识别'
  },
  {
    id: '2',
    long: '105',
    wide: '183',
    time: '2024/4/1',
    thick: '191',
    typea: '1',
    type: '待识别'
  },
]
const open = () => {
  ElMessageBox.confirm(
    '是否删除该条信息?',
    '提示',
    {
      confirmButtonText: '是',
      cancelButtonText: '取消',
      type: 'warning',
    }
  )
    .then(() => {
      ElMessage({
        type: 'success',
        message: '删除成功!',
      })
    })
    .catch(() => {
      ElMessage({
        type: 'info',
        message: '删除失败',
      })
    })
}
const getTableRow = (row,type) =>{
  switch (type) {
    case 'edit' :{
      //alert('我接收到子组件传送的编辑信息')
      router.push({path: '/main/returns/createReturns', query: { ReturnID: 'TH24010101' }})
      break
    }
    case 'delete':{
      alert('我接收到子组件传送的删除信息')
      break
    }
  }
}
const dialogForm = () => {
  ElMessageBox.confirm(
    '是否重置密码?',
    '提示',
    {
      confirmButtonText: '是',
      cancelButtonText: '取消',
      type: 'warning',
    }
  )
  .then(() => {
    // this.boxa = true
    // this.box = false
    })
}
const dialogForma = () => {
  ElMessageBox.confirm(
    '是否删除该条信息?',
    '提示',
    {
      confirmButtonText: '是',
      cancelButtonText: '取消',
      type: 'warning',
    }
  )
}
const options = [
  {
    value: 'Option1',
    label: 'admin',
  },
  {
    value: 'Option2',
    label: 'ueser2',
  },
  {
    value: 'Option3',
    label: 'ueser3',
  },
]
const optionsa = [
  {
    valuea: 'Option1',
    labela: '正常',
  },
  {
    valuea: 'Option2',
    labela: '禁用',
  },
]
const data= reactive({
   tableList:[]//table数据
})
const beforeChange = () => {
  return new Promise((resolve) => {
    setTimeout(() => {
      ElMessage.success("修改成功!");
      return resolve(true);
    }, 1000);
  });
};
// //js层,实战版本,与后台接口交互
// const gettableList = (id) = >{
//   xxx接口.({
//    id:id
// }).then((res)=>{
//    //将数据传给el-table绑定的:data=>data.tableList
//    data.tableList = res.data
// })
// }
// //最后将请求函数挂载到vue视图上
// onMounted(() => {
//   gettableList ()
// })
// const delete = () => {
//   ElMessageBox.confirm(
//     '是否删除该条信息?',
//     '提示',
//     {
//       confirmButtonText: '是',
//       cancelButtonText: '取消',
//       type: 'warning',
//     }
//   )
//   .then(() => {
//     })
// }
const gridOptions = reactive({
  border:  "full",//表格加边框
  keepSource: true,//保持源数据
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮
  id: 'OrderList',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
  exportConfig: {},
  scrollY:{ enabled: true },//开启虚拟滚动
  showOverflow:true,
  columnConfig: {
    resizable: true,
    useKey: true
  },
  filterConfig: {   //筛选配置项
    remote: true
  },
  customConfig: {
    storage: true
  },
  editConfig: {
    trigger: 'click',
    mode: 'row',
    showStatus: true
  },
  data:  [
    {
      'id': '1',
      'long': '5',
      'wide': '1005',
      'thick': '183.6',
      'time': '2024/4/1',
    }
  ]
})
</script>
<template>
  <div>
        <el-button type="primary" style="margin-top: 10px;margin-left: 10px;"  size="mini" id="searchButton" @click="add = true">添加用户</el-button>
        <el-input
          clearable
          placeholder="请输入用户名"
          size="mini"
          style="margin-right: 20px; width: 200px;margin-left: 10px;margin-top: 10px;"
        />
        <el-input
          clearable
          placeholder="请输入邮箱"
          size="mini"
          style="margin-right: 20px; width: 200px;margin-left: 10px;margin-top: 10px;"
        />
        <el-button type="primary" size="mini" @click="searchSubmit" style="margin-top: 10px;">查询</el-button >
        <el-button type="primary" size="mini" @click="empty" style="margin-top: 10px;">清空</el-button>
    <el-card style="flex: 1;margin-left: 10px;margin-top: 15px;" v-loading="loading">
      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 200px;">
        <el-table height="100%" ref="table"
        @selection-change="handleSelectionChange"
        :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
          <el-table-column prop="id" align="center" label="用户名" min-width="80" />
          <el-table-column prop="long" align="center" label="邮箱" min-width="120" />
          <el-table-column prop="time" align="center" label="创建时间" min-width="120" />
          <el-table-column  align="center" prop="changer"  label="是否禁用"   min-width="140"  >
           <template #default="scope">
           <el-switch  v-model="scope.row.changer"  :before-change="beforeChange" />
         </template>
         </el-table-column>
          <el-table-column fixed="right" label="操作" align="center" width="200">
            <template #default>
              <el-button size="mini" type="text" plain  @click="dialogForm">重置密码</el-button>
              <el-button size="mini" type="text" plain  @click="adda = true">编辑</el-button>
              <el-button size="mini" type="text" plain  @click="dialogForma">删除</el-button>
            </template>
        </el-table-column>
        </el-table>
      </div>
    </el-card>
  </div>
  <el-dialog v-model="add" top="23vh" width="37%" title="添加用户" >
    <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
            <el-form  size="mini" label-width="150px">
      <el-form label-width="100px" label-position="right">
        <el-row style="margin-top: -15px;margin-bottom: -2px;">
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
              <el-form-item label="用户名:" :required="true" style="width: 25vw">
                <el-input  autocomplete="off" />
              </el-form-item></div></div>
          </el-col>
        </el-row>
        <el-row style="margin-top: 10px;">
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
              <el-form-item label="角色:" :required="true" style="width: 25vw;">
                <el-select
               v-model="value"
               clearable
               placeholder="请选择角色"
               style="width: 330px"
             >
               <el-option
            v-for="item in options"
            :key="item.value"
            :label="item.label"
            :value="item.value"
          />
        </el-select>
              </el-form-item></div></div>
          </el-col>
        </el-row>
        <el-row style="margin-top: 10px;">
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
              <el-form-item label="邮箱:" :required="true" style="width: 25vw;">
                <el-input autocomplete="off" />
              </el-form-item></div></div>
          </el-col>
        </el-row>
        <el-row style="margin-top: 10px;">
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
              <el-form-item label="是否禁用" :required="true" style="width: 25vw;">
                <el-select
               v-model="value"
               clearable
               placeholder="请选择是否禁用"
               style="width: 330px"
             >
               <el-option
            v-for="item in optionsa"
            :key="item.valuea"
            :label="item.labela"
            :value="item.valuea"
          />
        </el-select>
              </el-form-item></div></div>
          </el-col>
        </el-row>
        <el-row style="margin-top: 10px;">
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
              <el-form-item label="密码:" :required="true" style="width: 25vw;">
                <el-input autocomplete="off" />
              </el-form-item></div></div>
          </el-col>
        </el-row>
        </el-form>
            </el-form>
          </div>
    <template #footer>
      <div id="dialog-footer">
        <el-button type="primary" @click="getTableRow('edit')">
          确认
        </el-button>
        <el-button @click="add = false">取消</el-button>
      </div>
    </template>
  </el-dialog>
  <el-dialog v-model="adda" top="23vh" width="37%" title="修改用户" >
    <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
            <el-form  size="mini" label-width="150px">
      <el-form label-width="100px" label-position="right">
        <el-row style="margin-top: -15px;margin-bottom: -2px;">
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
              <el-form-item label="用户名:" :required="true" style="width: 25vw">
                <el-input  autocomplete="off" />
              </el-form-item></div></div>
          </el-col>
        </el-row>
        <el-row style="margin-top: 10px;">
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
              <el-form-item label="角色:" :required="true" style="width: 25vw;">
                <el-select
               v-model="value"
               clearable
               placeholder="请选择角色"
               style="width: 330px"
             >
               <el-option
            v-for="item in options"
            :key="item.value"
            :label="item.label"
            :value="item.value"
          />
        </el-select>
              </el-form-item></div></div>
          </el-col>
        </el-row>
        <el-row style="margin-top: 10px;">
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
              <el-form-item label="邮箱:" :required="true" style="width: 25vw;">
                <el-input autocomplete="off" />
              </el-form-item></div></div>
          </el-col>
        </el-row>
        <el-row style="margin-top: 10px;">
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
              <el-form-item label="是否禁用" :required="true" style="width: 25vw;">
                <el-select
               v-model="value"
               clearable
               placeholder="请选择是否禁用"
               style="width: 330px"
             >
               <el-option
            v-for="item in optionsa"
            :key="item.valuea"
            :label="item.labela"
            :value="item.valuea"
          />
        </el-select>
              </el-form-item></div></div>
          </el-col>
        </el-row>
        <el-row style="margin-top: 10px;">
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
              <el-form-item label="密码:" :required="true" style="width: 25vw;">
                <el-input autocomplete="off" />
              </el-form-item></div></div>
          </el-col>
        </el-row>
        </el-form>
            </el-form>
          </div>
    <template #footer>
      <div id="dialog-footer">
        <el-button type="primary" @click="getTableRow('edit')">
          确认
        </el-button>
        <el-button @click="adda = false">取消</el-button>
      </div>
    </template>
  </el-dialog>
</template>
<style scoped>
#dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
#dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
#dialog-footer{
  text-align: center;
  margin-top: -15px;
}
#message{
  text-align: center;
  align-items: center;
  color: black;
   width: 200px;
   height: 100px;
   background-color: #337ecc;
   margin-left: 28%;
}
#awatch{
  height: 450px;
}
#main-body{
  margin-top: -20px;
  margin-left: 300px;
}
#main-bodya{
  margin-top: -10px;
  margin-left: 100px;
}
</style>
UI-Project/src/views/User/rolelist.vue
New file
@@ -0,0 +1,461 @@
<script lang="ts" setup>
import {Search} from "@element-plus/icons-vue";
import {reactive} from "vue";
import {useRouter} from "vue-router"
import { ref } from 'vue'
const router = useRouter()
const value1 = ref(true)
const add = ref(false)
const adda = ref(false)
const changer = ref(false)
import { ElMessage, ElMessageBox } from 'element-plus'
const tableData = [
  {
    id: '1',
    long: '1005',
    wide: '183.6',
    thick: '1991',
    time: '2024/4/1',
    type: '待识别',
    typea: '1',
  },
  {
    id: '2',
    long: '105',
    wide: '183',
    time: '2024/4/1',
    thick: '191',
    typea: '1',
    type: '待识别'
  },
  {
    id: '2',
    long: '105',
    wide: '183',
    time: '2024/4/1',
    thick: '191',
    typea: '1',
    type: '待识别'
  },
]
const open = () => {
  ElMessageBox.confirm(
    '是否删除该条信息?',
    '提示',
    {
      confirmButtonText: '是',
      cancelButtonText: '取消',
      type: 'warning',
    }
  )
    .then(() => {
      ElMessage({
        type: 'success',
        message: '删除成功!',
      })
    })
    .catch(() => {
      ElMessage({
        type: 'info',
        message: '删除失败',
      })
    })
}
const getTableRow = (row,type) =>{
  switch (type) {
    case 'edit' :{
      //alert('我接收到子组件传送的编辑信息')
      router.push({path: '/main/returns/createReturns', query: { ReturnID: 'TH24010101' }})
      break
    }
    case 'delete':{
      alert('我接收到子组件传送的删除信息')
      break
    }
  }
}
const dialogForm = () => {
  ElMessageBox.confirm(
    '是否重置密码?',
    '提示',
    {
      confirmButtonText: '是',
      cancelButtonText: '取消',
      type: 'warning',
    }
  )
  .then(() => {
    // this.boxa = true
    // this.box = false
    })
}
const dialogForma = () => {
  ElMessageBox.confirm(
    '是否删除该条信息?',
    '提示',
    {
      confirmButtonText: '是',
      cancelButtonText: '取消',
      type: 'warning',
    }
  )
}
const options = [
  {
    value: 'Option1',
    label: 'admin',
  },
  {
    value: 'Option2',
    label: 'ueser2',
  },
  {
    value: 'Option3',
    label: 'ueser3',
  },
]
const optionsa = [
  {
    valuea: 'Option1',
    labela: '正常',
  },
  {
    valuea: 'Option2',
    labela: '禁用',
  },
]
const data= reactive({
   tableList:[]//table数据
})
const beforeChange = () => {
  return new Promise((resolve) => {
    setTimeout(() => {
      ElMessage.success("修改成功!");
      return resolve(true);
    }, 1000);
  });
};
// //js层,实战版本,与后台接口交互
// const gettableList = (id) = >{
//   xxx接口.({
//    id:id
// }).then((res)=>{
//    //将数据传给el-table绑定的:data=>data.tableList
//    data.tableList = res.data
// })
// }
// //最后将请求函数挂载到vue视图上
// onMounted(() => {
//   gettableList ()
// })
// const delete = () => {
//   ElMessageBox.confirm(
//     '是否删除该条信息?',
//     '提示',
//     {
//       confirmButtonText: '是',
//       cancelButtonText: '取消',
//       type: 'warning',
//     }
//   )
//   .then(() => {
//     })
// }
const gridOptions = reactive({
  border:  "full",//表格加边框
  keepSource: true,//保持源数据
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮
  id: 'OrderList',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
  exportConfig: {},
  scrollY:{ enabled: true },//开启虚拟滚动
  showOverflow:true,
  columnConfig: {
    resizable: true,
    useKey: true
  },
  filterConfig: {   //筛选配置项
    remote: true
  },
  customConfig: {
    storage: true
  },
  editConfig: {
    trigger: 'click',
    mode: 'row',
    showStatus: true
  },
  data:  [
    {
      'id': '1',
      'long': '5',
      'wide': '1005',
      'thick': '183.6',
      'time': '2024/4/1',
    }
  ]
})
</script>
<template>
  <div>
        <el-button type="primary" style="margin-top: 10px;margin-left: 10px;"  size="mini" id="searchButton" @click="add = true">添加用户</el-button>
        <el-input
          clearable
          placeholder="请输入用户名"
          size="mini"
          style="margin-right: 20px; width: 200px;margin-left: 10px;margin-top: 10px;"
        />
        <el-input
          clearable
          placeholder="请输入邮箱"
          size="mini"
          style="margin-right: 20px; width: 200px;margin-left: 10px;margin-top: 10px;"
        />
        <el-button type="primary" size="mini" @click="searchSubmit" style="margin-top: 10px;">查询</el-button >
        <el-button type="primary" size="mini" @click="empty" style="margin-top: 10px;">清空</el-button>
    <el-card style="flex: 1;margin-left: 10px;margin-top: 15px;" v-loading="loading">
      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 200px;">
        <el-table height="100%" ref="table"
        @selection-change="handleSelectionChange"
        :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
          <el-table-column prop="id" align="center" label="用户名" min-width="80" />
          <el-table-column prop="long" align="center" label="邮箱" min-width="120" />
          <el-table-column prop="time" align="center" label="创建时间" min-width="120" />
          <el-table-column  align="center" prop="changer"  label="是否禁用"   min-width="140"  >
           <template #default="scope">
           <el-switch  v-model="scope.row.changer"  :before-change="beforeChange" />
         </template>
         </el-table-column>
          <el-table-column fixed="right" label="操作" align="center" width="200">
            <template #default>
              <el-button size="mini" type="text" plain  @click="dialogForm">重置密码</el-button>
              <el-button size="mini" type="text" plain  @click="adda = true">编辑</el-button>
              <el-button size="mini" type="text" plain  @click="dialogForma">删除</el-button>
            </template>
        </el-table-column>
        </el-table>
      </div>
    </el-card>
  </div>
  <el-dialog v-model="add" top="23vh" width="37%" title="添加用户" >
    <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
            <el-form  size="mini" label-width="150px">
      <el-form label-width="100px" label-position="right">
        <el-row style="margin-top: -15px;margin-bottom: -2px;">
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
              <el-form-item label="用户名:" :required="true" style="width: 25vw">
                <el-input  autocomplete="off" />
              </el-form-item></div></div>
          </el-col>
        </el-row>
        <el-row style="margin-top: 10px;">
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
              <el-form-item label="角色:" :required="true" style="width: 25vw;">
                <el-select
               v-model="value"
               clearable
               placeholder="请选择角色"
               style="width: 330px"
             >
               <el-option
            v-for="item in options"
            :key="item.value"
            :label="item.label"
            :value="item.value"
          />
        </el-select>
              </el-form-item></div></div>
          </el-col>
        </el-row>
        <el-row style="margin-top: 10px;">
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
              <el-form-item label="邮箱:" :required="true" style="width: 25vw;">
                <el-input autocomplete="off" />
              </el-form-item></div></div>
          </el-col>
        </el-row>
        <el-row style="margin-top: 10px;">
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
              <el-form-item label="是否禁用" :required="true" style="width: 25vw;">
                <el-select
               v-model="value"
               clearable
               placeholder="请选择是否禁用"
               style="width: 330px"
             >
               <el-option
            v-for="item in optionsa"
            :key="item.valuea"
            :label="item.labela"
            :value="item.valuea"
          />
        </el-select>
              </el-form-item></div></div>
          </el-col>
        </el-row>
        <el-row style="margin-top: 10px;">
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
              <el-form-item label="密码:" :required="true" style="width: 25vw;">
                <el-input autocomplete="off" />
              </el-form-item></div></div>
          </el-col>
        </el-row>
        </el-form>
            </el-form>
          </div>
    <template #footer>
      <div id="dialog-footer">
        <el-button type="primary" @click="getTableRow('edit')">
          确认
        </el-button>
        <el-button @click="add = false">取消</el-button>
      </div>
    </template>
  </el-dialog>
  <el-dialog v-model="adda" top="23vh" width="37%" title="修改用户" >
    <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
            <el-form  size="mini" label-width="150px">
      <el-form label-width="100px" label-position="right">
        <el-row style="margin-top: -15px;margin-bottom: -2px;">
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
              <el-form-item label="用户名:" :required="true" style="width: 25vw">
                <el-input  autocomplete="off" />
              </el-form-item></div></div>
          </el-col>
        </el-row>
        <el-row style="margin-top: 10px;">
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
              <el-form-item label="角色:" :required="true" style="width: 25vw;">
                <el-select
               v-model="value"
               clearable
               placeholder="请选择角色"
               style="width: 330px"
             >
               <el-option
            v-for="item in options"
            :key="item.value"
            :label="item.label"
            :value="item.value"
          />
        </el-select>
              </el-form-item></div></div>
          </el-col>
        </el-row>
        <el-row style="margin-top: 10px;">
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
              <el-form-item label="邮箱:" :required="true" style="width: 25vw;">
                <el-input autocomplete="off" />
              </el-form-item></div></div>
          </el-col>
        </el-row>
        <el-row style="margin-top: 10px;">
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
              <el-form-item label="是否禁用" :required="true" style="width: 25vw;">
                <el-select
               v-model="value"
               clearable
               placeholder="请选择是否禁用"
               style="width: 330px"
             >
               <el-option
            v-for="item in optionsa"
            :key="item.valuea"
            :label="item.labela"
            :value="item.valuea"
          />
        </el-select>
              </el-form-item></div></div>
          </el-col>
        </el-row>
        <el-row style="margin-top: 10px;">
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
              <el-form-item label="密码:" :required="true" style="width: 25vw;">
                <el-input autocomplete="off" />
              </el-form-item></div></div>
          </el-col>
        </el-row>
        </el-form>
            </el-form>
          </div>
    <template #footer>
      <div id="dialog-footer">
        <el-button type="primary" @click="getTableRow('edit')">
          确认
        </el-button>
        <el-button @click="adda = false">取消</el-button>
      </div>
    </template>
  </el-dialog>
</template>
<style scoped>
#dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
#dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
#dialog-footer{
  text-align: center;
  margin-top: -15px;
}
#message{
  text-align: center;
  align-items: center;
  color: black;
   width: 200px;
   height: 100px;
   background-color: #337ecc;
   margin-left: 28%;
}
#awatch{
  height: 450px;
}
#main-body{
  margin-top: -20px;
  margin-left: 300px;
}
#main-bodya{
  margin-top: -10px;
  margin-left: 100px;
}
</style>
UI-Project/src/views/User/user.vue
New file
@@ -0,0 +1,49 @@
<script setup>
import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue"
import {useRouter} from "vue-router";
let indexFlag=$ref(1)
function changeRouter(index){
  indexFlag=index
}
</script>
<template>
  <!-- <div id="main-div"> -->
    <div id="main-body">
      <router-view  />
    </div>
  <!-- </div> -->
</template>
<style scoped>
#main-div{
  width: 100%;
  height: 100%;
}
#div-title{
  height: 2%;
  width: 100%;
}
#searchButton{
  margin-top: -5px;
  margin-left: 1rem;
}
/* #searchButton1{
//margin-left: 10rem;
} */
/*main-body样式*/
#main-body{
  width: 100%;
  height: 95%;
  /* margin-top: 1%; */
}
#select{
  margin-left:0.5rem;
}
:deep(.indexTag .el-breadcrumb__inner){
  color: #5CADFE !important;
}
</style>
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/PLCAutoMes.java
@@ -8,7 +8,7 @@
import java.util.ArrayList;
import java.util.List;
import static com.mes.tools.InitUtil.readAndUpdateWordValues;
//import static com.mes.tools.InitUtil.readAndUpdateWordValues;
public class PLCAutoMes extends Thread {
@@ -61,7 +61,7 @@
            // System.out.println(jsonFilePath);
            // readAndUpdateWordValues(PlcReadObject);
            readAndUpdateWordValues(PlcMesObject);
            //readAndUpdateWordValues(PlcMesObject);
            List<String> addresses = new ArrayList<>();
            addresses.add("FeedID");
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/Plcdownglass.java
@@ -28,7 +28,7 @@
    private DownWorkstationService downWorkstationService;
    @Scheduled(fixedDelay = 300)
   @Scheduled(fixedDelay = 300)
    public void PlcdownglassTask() throws InterruptedException {
        JSONObject jsonObject = new JSONObject();
        try {
@@ -37,8 +37,8 @@
            //                String result = S7control.getinstance().ReadWord("DB14.0", 1).get(0) + "";
//                String number = S7control.getinstance().ReadWord("DB14.2", 1).get(0) + "";
            String result = "2";
            String number = "1";
            String result = "3";
            String number = "4";
            // 进片请求
            if (RESULT_IN.equals(result)) {
                downStorageCageService.processInto(number);
@@ -50,13 +50,19 @@
            // 进出片请求
            else if (RESULT_IN_OUT.equals(result)) {
                // 先出后进
                if (!downStorageCageService.processOut()) {
                if (downStorageCageService.processOut()) {
                    //下片更新
                    downWorkstationService.insertdownglassinfo();
                    // 执行进片操作
                    downStorageCageService.processInto(number);
                } else {
                    // 如果 processOut() 返回 false,可以在这里处理其他逻辑
                    log.info("出片请求失败,无法执行进片操作");
                }
            }
            //下片更新
            downWorkstationService.insertdownglassinfo();
        } catch (Exception e) {
            e.printStackTrace();
        }
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java
File was deleted
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassInfo.java
@@ -2,7 +2,9 @@
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.data.annotation.Id;
import org.springframework.stereotype.Component;
import java.io.Serializable;
@@ -24,6 +26,7 @@
    /**
     * 下片玻璃信息表id
     */
    private Long id;
    /**
@@ -51,8 +54,15 @@
     */
    private Double thickness;
    /**
     * 膜系
     */
    private String Filmsid;
    /**
     * 玻璃id
     */
    private String glassId;
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java
@@ -26,7 +26,7 @@
     *
     * @return
     */
    void updateTaskStateToZero(long id);
    void updateTaskStateToZero(String id);
    /**
     * 删除任务
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
@@ -14,6 +14,7 @@
import com.mes.downworkstation.service.DownWorkstationService;
import com.mes.downworkstation.service.DownWorkstationTaskService;
import com.mes.tools.WebSocketServer;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.List;
@@ -37,6 +38,9 @@
    @Override
    public void insertDownGlassInfo(DownGlassInfo downGlassInfo) {
        baseMapper.insert(downGlassInfo);
    }
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java
@@ -33,7 +33,7 @@
    }
    @Override
    public void updateTaskStateToZero(long id) {
    public void updateTaskStateToZero(String id) {
        UpdateWrapper<DownGlassTask> updateWrapper = new UpdateWrapper<>();
        updateWrapper.set("task_stauts", 0).eq("id", id);
        baseMapper.update(new DownGlassTask(), updateWrapper);
@@ -42,7 +42,7 @@
    @Override
    public void deleteTask(String id) {
        LambdaQueryWrapper<DownGlassTask> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(DownGlassTask::getFlowCardId, id);
        queryWrapper.eq(DownGlassTask::getGlassId, id);
        baseMapper.delete(queryWrapper);
    }
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/controller/DownStorageCageDetailsController.java
@@ -1,5 +1,6 @@
package com.mes.downstorage.controller;
import com.mes.downstorage.entity.DownStorageCage;
import com.mes.downstorage.entity.DownStorageCageDetails;
import com.mes.downstorage.service.DownStorageCageDetailsService;
import com.mes.downstorage.service.DownStorageCageService;
@@ -33,32 +34,35 @@
    @ApiOperation("查询缓存理片笼内详情")
    @GetMapping("/selectStorageCage")
    @ResponseBody
    public Result selectEdgStorageCage () {
        List<Map> list=downStorageCageDetailsService.getCacheInfo();
    public Result selectDownStorageCage () {
        List<Map<String, Object>> list=downStorageCageService.selectDownStorageCages();
        return Result.build(200,"成功",list);
    }
//
//    @ApiOperation("添加缓存理片笼信息   功能:笼内绑定玻璃  参数(DownStorageCageDetails downStorageCageDetails)")
//    @PostMapping("/insertEdgStorageCage")
//    @ResponseBody
//    public Result insertEdgStorageCage(@RequestBody DownStorageCageDetails downStorageCageDetails) {
//        boolean isSucess=downStorageCageService.updatedownStorageCageDetails(downStorageCageDetails);
//        return Result.build(200,"添加成功",1);
//    }
    @ApiOperation("添加缓存理片笼信息   功能:笼内绑定玻璃  参数(DownStorageCageDetails downStorageCageDetails)")
    @PostMapping("/insertEdgStorageCage")
    @ResponseBody
    public Result insertEdgStorageCage(@RequestBody DownStorageCageDetails downStorageCageDetails) {
        boolean isSucess=downStorageCageDetailsService.updatedownStorageCageDetails(downStorageCageDetails);
        return Result.build(200,"添加成功",1);
    }
    @ApiOperation("修改缓存理片笼信息   功能:对笼内栅格进行【启用/禁用】/ 【更换】笼内栅格玻璃信息")
    @PostMapping("/updateEdgStorageCage")
    @PostMapping("/updateDownStorageCage")
    @ResponseBody
    public Result updateEdgStorageCage(@RequestBody DownStorageCageDetails downStorageCageDetails) {
        boolean isSucess=downStorageCageDetailsService.updatedownStorageCageDetails(downStorageCageDetails);
    public Result updateDownStorageCage(@RequestBody DownStorageCage downStorageCage) {
        boolean isSucess=downStorageCageService.updateDownStorageCage(downStorageCage);
        return Result.build(200,"更换成功",1);
    }
    @ApiOperation("删除缓存理片笼信息   功能:对笼内栅格玻璃进行【清除】")
    @PostMapping("/deleteEdgStorageCage")
    @PostMapping("/deleteDownStorageCage")
    @ResponseBody
    public Result deleteEdgStorageCage(@RequestBody DownStorageCageDetails downStorageCageDetails) {
        boolean isSucess=downStorageCageDetailsService.updatedownStorageCageDetails(downStorageCageDetails);
    public Result deleteDownStorageCage(@RequestBody DownStorageCageDetails downStorageCageDetails,int downStorageCageId) {
        boolean isSucess=downStorageCageService.updateDownStorageCageDetails(downStorageCageId,downStorageCageDetails);
        return Result.build(200,"删除成功",1);
    }
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java
@@ -1,7 +1,6 @@
package com.mes.downstorage.service;
import com.mes.downstorage.entity.DownStorageCageDetails;
import com.mes.glassinfo.entity.GlassInfo;
import java.util.List;
import java.util.Map;
@@ -18,19 +17,19 @@
     */
    boolean updatedownStorageCageDetails(DownStorageCageDetails details);
    List<DownStorageCageDetails> getCacheLeisure();
   // List<DownStorageCageDetails> getCacheLeisure();
    /**
     * @param start
     * @param end
     * @return 根据传入的工位查询符合按照顺序和大小出片的小片
     */
    List<DownStorageCageDetails> getCacheOut(int start, int end);
  //  List<DownStorageCageDetails> getCacheOut(int start, int end);
    /**
     * @return 查询笼子内信息
     */
    List<Map> getCacheInfo();
    List<Map<String, Object>> getCacheInfo();
    /**
@@ -38,7 +37,7 @@
     * @param width
     * @return 查询可进此片玻璃的栅格号  找到空格
     */
    List<DownStorageCageDetails> getIsExistIntoCacheByflowcardid(String flowcardid, double width);
   // List<DownStorageCageDetails> getIsExistIntoCacheByflowcardid(String flowcardid, double width);
    /**
     * @param start
@@ -50,6 +49,6 @@
    /**
     * @return 查询空格子
     */
    List<DownStorageCageDetails> selectCacheEmpty2();
   // List<DownStorageCageDetails> selectCacheEmpty2();
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java
@@ -37,6 +37,30 @@
     * @return 出片
     */
    boolean processOut();
    /**
     * @return 找到空格子
     */
    List<DownStorageCageDetails> selectCacheEmpty() ;
    /**
     * @param downStorageCage
     * @return 修改理片笼信息 功能:对笼内栅格玻璃 【启用/禁用】
     */
    boolean updateDownStorageCage(DownStorageCage downStorageCage);
    /**
     /**
     *修改理片笼信息 功能:对笼内栅格玻璃 【添加/删除/更换】
     */
    boolean updateDownStorageCageDetails(int downStorageCageId,DownStorageCageDetails downStorageCageDetails);
    /**
     * @return 查询笼子信息
     */
    List<Map<String, Object>> selectDownStorageCages();
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java
@@ -1,6 +1,5 @@
package com.mes.downstorage.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.yulichang.query.MPJQueryWrapper;
@@ -13,22 +12,21 @@
import com.mes.downstorage.mapper.DownStorageCageMapper;
import com.mes.downstorage.service.DownStorageCageDetailsService;
import com.mes.glassinfo.entity.GlassInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@Slf4j
@Service
public class DownStorageCageDetailsServiceImpl extends ServiceImpl<DownStorageCageDetailsMapper, DownStorageCageDetails> implements DownStorageCageDetailsService {
    @Autowired
    @Autowired(required=false)
    private DownStorageCageMapper downStorageCageMapper;
    @Autowired
    private DownStorageCageDetailsMapper downStorageCageDetailsMapper;
    @Override
    public void addDownStorageCageDetails(DownStorageCageDetails details) {
        this.save(details);
@@ -74,80 +72,91 @@
    @Override
    public List<DownStorageCageDetails> getCacheOut(int start, int end) {
        log.info("根据传入的工位查询符合按照顺序和大小出片的小片");
        return  downStorageCageMapper.selectJoinList(
                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
                        .select("escd.*")
                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
                        .leftJoin("down_workstation dw on escd.flow_card_id = dw.flow_card_id")
                        .leftJoin("glass_info gi on dw.flow_card_id = gi.flowcard_id  and gi.flowcard_id=escd.flow_card_id ")
                        .isNotNull("escd.slot")
                        .between("dw.workstation_id", start, end)
                        .orderByDesc("escd.width")
                        .orderByDesc("escd.height")
        );
    }
//    @Override
//    public List<DownStorageCageDetails> getCacheOut(int start, int end) {
//        log.info("根据传入的工位查询符合按照顺序和大小出片的小片");
//        return  downStorageCageMapper.selectJoinList(
//                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
//                        .select("escd.*")
//                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
//                        .leftJoin("down_workstation dw on escd.flow_card_id = dw.flow_card_id")
//                        .leftJoin("glass_info gi on dw.flow_card_id = gi.flowcard_id  and gi.flowcard_id=escd.flow_card_id ")
//                        .isNotNull("escd.slot")
//                        .between("dw.workstation_id", start, end)
//                        .orderByDesc("escd.width")
//                        .orderByDesc("escd.height")
//        );
//    }
//    @Override
//    public List<DownStorageCageDetails> selectCacheEmpty2(){
//        return  downStorageCageMapper.selectJoinList(
//                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
//                        .select("escd.glass_id","escd.flow_card_id","escd.width","escd.height")
//                        .leftJoin("down_storage_cage_details escd on t.device_id=escd.device_id and t.slot=escd.slot")
//                        .isNull("escd.slot")
//        );
//    }
    @Override
    public List<DownStorageCageDetails> selectCacheEmpty2(){
        return  downStorageCageMapper.selectJoinList(
                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
                        .select("escd.glass_id","escd.flow_card_id","escd.width","escd.height")
                        .leftJoin("down_storage_cage_details escd on t.device_id=escd.device_id and t.slot=escd.slot")
                        .isNull("escd.slot")
    public List<Map<String, Object>> getCacheInfo() {
        log.info("查询笼子内信息");
        return downStorageCageDetailsMapper.selectJoinMaps(JoinWrappers.lambda(DownStorageCageDetails.class) // 使用 JoinWrappers.lambda 创建联合查询
                .selectAll(DownStorageCageDetails.class) // 选择所有字段
                .eq(DownStorageCage::getSlot, DownStorageCageDetails::getSlot) // 设置关联条件
                .orderByAsc(DownStorageCage::getSlot) // 按 slot 字段升序排序
        );
    }
//
//    @Override
//    public List<Map> getCacheInfo() {
//        log.info(" 查询笼子内信息");
//        return downStorageCageMapper.selectJoinList(
//                Map.class, new MPJQueryWrapper<DownStorageCage>()
//                        .select("escd.*")
//                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
//                        .orderByAsc("t.slot")
//        );
//
//    }
    @Override
    public List<Map> getCacheInfo() {
        log.info(" 查询笼子内信息");
        return downStorageCageMapper.selectJoinList(
                Map.class, new MPJQueryWrapper<DownStorageCage>()
                        .select("escd.*")
                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
                        .orderByAsc("t.slot")
        );
    }
//    @Override
//    public List<DownStorageCageDetails> getCacheLeisure() {
//        log.info(" 查询笼子内空闲");
//        List<DownStorageCageDetails> list = downStorageCageMapper.selectJoinList(
//                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
//                        .select("escd.*")
//                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
//                        .isNull("escd.slot")
//
//                        .orderByAsc("escd.slot")
//        );
//        return list;
//    }
    @Override
    public List<DownStorageCageDetails> getCacheLeisure() {
        log.info(" 查询笼子内空闲");
        List<DownStorageCageDetails> list = downStorageCageMapper.selectJoinList(
                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
                        .select("escd.*")
                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
                        .isNull("escd.slot")
                        .orderByAsc("escd.slot")
        );
        return list;
    }
    @Override
    public List<DownStorageCageDetails> getIsExistIntoCacheByflowcardid(String flowcardid, double width) {
        log.info("  查询可进此片玻璃的栅格号  找到空格");
        return downStorageCageMapper.selectJoinList(
                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
                        .select("escd.*")
                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
                        .isNull("escd.slot")
                        .apply("t.remain_width - " + width + " > 0")
                        .orderByAsc("escd.sequence")
        );
    }
//    @Override
//    public List<DownStorageCageDetails> getIsExistIntoCacheByflowcardid(String flowcardid, double width) {
//        log.info("  查询可进此片玻璃的栅格号  找到空格");
//
//        return downStorageCageMapper.selectJoinList(
//                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
//                        .select("escd.*")
//                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
//                        .isNull("escd.slot")
//                        .apply("t.remain_width - " + width + " > 0")
//                        .orderByAsc("escd.sequence")
//        );
//
//
//
//
//    }
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java
@@ -1,6 +1,7 @@
package com.mes.downstorage.service.impl;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.mes.common.PLCAutoMes;
import com.mes.common.S7control;
import com.mes.device.PlcParameterObject;
@@ -9,11 +10,13 @@
import com.mes.downstorage.entity.DownStorageCage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.downstorage.entity.DownStorageCageDetails;
import com.mes.downstorage.mapper.DownStorageCageDetailsMapper;
import com.mes.downstorage.mapper.DownStorageCageMapper;
import com.mes.downstorage.service.DownStorageCageDetailsService;
import com.mes.downstorage.service.DownStorageCageService;
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.glassinfo.service.GlassInfoService;
import com.mes.pp.entity.OptimizeDetail;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -33,7 +36,7 @@
@Slf4j
@Service
public class DownStorageCageServiceImpl extends ServiceImpl<DownStorageCageMapper, DownStorageCage> implements DownStorageCageService {
    @Autowired
    @Autowired(required=false)
    private DownStorageCageMapper downStorageCageMapper;
    @Autowired
@@ -43,6 +46,9 @@
    private DownGlassTaskService downGlassTaskService;
    @Autowired
    private DownStorageCageDetailsService downStorageCageDetailsService;
    @Autowired
    private DownStorageCageDetailsMapper downStorageCageDetailsMapper;
@@ -101,10 +107,6 @@
            //同找到同流程卡附近空格
            List<DownStorageCageDetails> list = selectCacheEmpty();
            //            list<Map> list=selectCacheEmpty();
//            list<Map> = downStorageCageService.selectCacheEmpty();
            if (list.size() > 0) {
                //存在空格
                //1.生成任务:  起始位置0   结束位置this.slot  任务类型 1   (进片任务)
@@ -142,13 +144,11 @@
        // 查询任务
        PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
       // PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
        List<DownStorageCageDetails> list = downStorageCageDetailsService.CacheOut(1, 5);
        List<DownStorageCageDetails> list2 = downStorageCageDetailsService.CacheOut(6, 10);
        List<DownStorageCageDetails> list3 = downStorageCageDetailsService.CacheOut(1, 10);
        //自动绑定架子
@@ -183,8 +183,8 @@
            DownGlassTask downGlassTask =createDownGlassTask(item3,"0",endcell,"2");
            downGlassTaskService.insertCacheTask(downGlassTask);
            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), SendEndcell);
            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
            //S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), SendEndcell);
            //S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
            return true;
        }
@@ -197,8 +197,8 @@
            DownGlassTask downGlassTask =createDownGlassTask(item,"0","06","2");
            downGlassTaskService.insertCacheTask(downGlassTask);
            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), "1");
            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
           // S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), "1");
           // S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
            return true;
            // 按照大小符合后端出片
@@ -210,8 +210,8 @@
            DownGlassTask downGlassTask =createDownGlassTask(item2,"0","11","2");
            downGlassTaskService.insertCacheTask(downGlassTask);
            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), "2");
            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
           // S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), "2");
           // S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
            return true;
@@ -223,7 +223,7 @@
        return false;
    }
        //找到空格子
    @Override
    public List<DownStorageCageDetails> selectCacheEmpty() {
        return baseMapper.selectJoinList(DownStorageCageDetails.class,
@@ -237,4 +237,64 @@
        );
    }
    @Override
    public List<Map<String, Object>> selectDownStorageCages() {
        return baseMapper.selectJoinMaps(JoinWrappers.lambda(DownStorageCage.class)
                .selectAll(DownStorageCage.class)
                .selectAs(DownStorageCageDetails::getId, "esdId")
                .select(DownStorageCageDetails::getGlassId, DownStorageCageDetails::getWidth, DownStorageCageDetails::getHeight, DownStorageCageDetails::getId)
                .leftJoin(DownStorageCageDetails.class, on -> on
                        .eq(DownStorageCageDetails::getDeviceId, DownStorageCage::getDeviceId)
                        .eq(DownStorageCageDetails::getSlot, DownStorageCage::getSlot))
        );
    }
    /**
     * 修改理片笼信息 功能:对笼内栅格玻璃 【启用/禁用】
     * @param downStorageCage
     * @return
     */
    @Override
    public boolean updateDownStorageCage(DownStorageCage downStorageCage){
        DownStorageCage downItem=baseMapper.selectById(downStorageCage.getId());
        downItem.setEnableState(downStorageCage.getEnableState());
        baseMapper.updateById(downItem);
        return true;
    }
    /**
     *修改理片笼信息 功能:对笼内栅格玻璃 【添加/删除/更换】
     * @param downStorageCageId
     * @param downStorageCageDetails
     * @return
     */
    @Override
    public boolean updateDownStorageCageDetails(int downStorageCageId,DownStorageCageDetails downStorageCageDetails){
        DownStorageCage downItem=baseMapper.selectById(downStorageCageId);
        log.info("正常"+downItem);
        if(downStorageCageDetails !=null){
            DownStorageCageDetails edgDItem=downStorageCageDetailsMapper.selectById(downStorageCageDetails.getId());
            //添加
            if(edgDItem!=null){
                //只传格子  :移除玻璃
                DownStorageCageDetails newresult=downStorageCageDetailsMapper.selectById(downStorageCageDetails.getId());
                newresult.setSlot(downItem.getSlot());
                downStorageCageDetailsMapper.updateById(newresult);
            }
        }
        if (downItem!=null){
            //移除
            DownStorageCageDetails result=downStorageCageDetailsMapper.selectOne(new MPJLambdaWrapper<DownStorageCageDetails>().eq(DownStorageCageDetails::getSlot,downStorageCageId));
            if (result!=null){
                result.setSlot(0);
                downStorageCageDetailsMapper.updateById(result);
            }
        }
        return true;
    }
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstation.java
@@ -54,9 +54,15 @@
    private Integer workState;
    /**
     * 总数量
     */
    @TableField("total_quantity")
    private Integer totalquantity;
    /**
     * 落架数量
     */
    @TableField("racks_number")
    private Integer Racksnumber;
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstationTask.java
@@ -56,7 +56,7 @@
     */
    private Integer state;
    /**
     * 玻璃
     * 玻璃ID
     */
    private String glassId;
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationTaskMapper.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mes.downworkstation.entity.DownWorkstation;
import com.mes.downworkstation.entity.DownWorkstationTask;
import org.mapstruct.Mapper;
import java.util.List;
@@ -15,7 +16,9 @@
 * @author zhoush
 * @since 2024-04-07
 */
@DS("salve_hangzhoumes")
@Mapper
public interface DownWorkstationTaskMapper extends BaseMapper<DownWorkstationTask> {
    List<DownWorkstationTask> selectList();
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationTaskService.java
@@ -21,12 +21,14 @@
    void insertdownWorkstationtask(DownGlassInfo downGlassInfo);
    /**
     * @param Id 更新任务状态
     * @param downWorkstationTask 更新任务状态
     */
    void updateTaskStateToZero(long Id);
    void updateTaskStateToZero(DownWorkstationTask downWorkstationTask);
    /**
     * @return 获取任务状态为1的信息
     */
    List<DownWorkstationTask> getTaskState();
    void deleteTask(DownWorkstationTask downWorkstationTask);
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
@@ -32,7 +32,7 @@
    @Autowired
    private DownWorkstationMapper downWorkstationMapper;
    @Autowired
    @Autowired(required=false)
    private DownWorkstationTaskMapper downWorkstationTaskMapper;
    @Autowired
    private DownGlassInfoService downGlassInfoService;
@@ -52,13 +52,13 @@
//获取总数量
    @Override
    public int getTotalQuantity(int workstationId) {
        QueryWrapper<DownWorkstation> queryWrapper = new QueryWrapper<>();
        queryWrapper.select("total_quantity")
                .eq("workstation_id", workstationId);
        DownWorkstation result = baseMapper.selectOne(new QueryWrapper<DownWorkstation>().lambda()
                .select(DownWorkstation::getTotalquantity)
                .eq(DownWorkstation::getWorkstationId, workstationId));
        DownWorkstation result = baseMapper.selectOne(queryWrapper);
        return result != null ? result.getTotalquantity() : 0;
    }
    //工位显示
    @Override
@@ -68,8 +68,8 @@
                .leftJoin("down_glass_info b on t.flow_card_id = b.flow_card_id")
                .groupBy("t.workstation_id", "t.flow_card_id");
//        List<DownWorkstionAndDownGlassinfo> workstationList = downWorkstationMapper.selectJoinList(DownWorkstionAndDownGlassinfo.class, queryWrapper);
        List<DownWorkstionAndDownGlassinfo> workstationList = null;
    List<DownWorkstionAndDownGlassinfo> workstationList = downWorkstationMapper.selectJoinList(DownWorkstionAndDownGlassinfo.class, queryWrapper);
       // List<DownWorkstionAndDownGlassinfo> workstationList = null;
        List<Map<String, Object>> result = new ArrayList<>();
        for (DownWorkstionAndDownGlassinfo downWorkstionAndDownGlassinfo : workstationList) {
            Map<String, Object> rack = new HashMap<>();
@@ -182,13 +182,14 @@
            for (DownGlassTask downGlassInfo : taskdownGlassInf) {
                // 创建新的 DownGlassInfo 对象并设置相关属性
                DownGlassInfo newdownGlassInfo = new DownGlassInfo();
//                newdownGlassInfo.setId(downGlassInfo.getId());
                newdownGlassInfo.setFlowCardId(downGlassInfo.getFlowCardId());
                Integer maxSequence = downGlassInfoService.getMaxSequenceByFlowCardId(downGlassInfo.getFlowCardId());
                // 初始化顺序字段值
                int sequence = maxSequence != null ? maxSequence + 1 : 1;
//                newdownGlassInfo.setId(downGlassInfo.getId());
                newdownGlassInfo.setWidth(downGlassInfo.getWidth());
                newdownGlassInfo.setGlassId(downGlassInfo.getGlassId());
                newdownGlassInfo.setHeight(downGlassInfo.getHeight());
                newdownGlassInfo.setThickness(downGlassInfo.getThickness());
                newdownGlassInfo.setFilmsid(downGlassInfo.getFilmsid());
@@ -198,12 +199,11 @@
                // 插入数据到下片玻璃信息表
                downGlassInfoService.insertDownGlassInfo(newdownGlassInfo);
                //插入数据到机械手任务表
                downWorkstationTaskService.insertdownWorkstationtask(newdownGlassInfo);
                //更新下片任务表状态为0
                downGlassTaskService.updateTaskStateToZero(downGlassInfo.getId());
                downGlassTaskService.updateTaskStateToZero(downGlassInfo.getGlassId());
                //删除下片任务表中的记录
                downGlassTaskService.deleteTask(downGlassInfo.getFlowCardId());
                downGlassTaskService.deleteTask(downGlassInfo.getGlassId());
                sequence++; // 递增顺序字段值
@@ -222,9 +222,9 @@
                    DownWorkstation downWorkstation1 = selectByFlowCardId(downWorkstation.getFlowCardId());
                    updateracksnumber(downWorkstation.getFlowCardId(), downWorkstation1.getRacksnumber() + 1);
                    //更新机械任务表中状态为0
                    downWorkstationTaskService.updateTaskStateToZero(downWorkstation.getId());
                    downWorkstationTaskService.updateTaskStateToZero(downWorkstation);
                    //删除机械任务表
                    downWorkstationTaskService.removeById(downWorkstation.getId());
                    downWorkstationTaskService.deleteTask(downWorkstation);
                }
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationTaskServiceImpl.java
@@ -1,6 +1,8 @@
package com.mes.downworkstation.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.downglassinfo.entity.DownGlassInfo;
@@ -33,7 +35,7 @@
        Long newId = (maxId == null) ? 1 : maxId + 1;
        BeanUtils.copyProperties(entity,downGlassInfo);
        BeanUtils.copyProperties(downGlassInfo,entity);
        entity.setId(newId); // 设置手动递增的 id
        entity.setState(1);
        baseMapper.insert(entity);
@@ -62,12 +64,24 @@
        queryWrapper.eq("state", 1);
        return baseMapper.selectList(queryWrapper);
    }
    @Override
    public void updateTaskStateToZero(long id) {
        UpdateWrapper<DownWorkstationTask> updateWrapper = new UpdateWrapper<>();
        updateWrapper.set("state", 0).eq("id", id);
        baseMapper.update(new DownWorkstationTask(), updateWrapper);
    @Override
    public void updateTaskStateToZero(DownWorkstationTask downWorkstationTask) {
        LambdaUpdateWrapper<DownWorkstationTask> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
        lambdaUpdateWrapper.set(DownWorkstationTask::getState, 0)
                .eq(DownWorkstationTask::getGlassId, downWorkstationTask.getGlassId());
        baseMapper.update(new DownWorkstationTask(), lambdaUpdateWrapper);
    }
    @Override
    public void deleteTask(DownWorkstationTask downWorkstationTask) {
        LambdaQueryWrapper<DownWorkstationTask> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(DownWorkstationTask::getGlassId, downWorkstationTask.getGlassId());
        baseMapper.delete(queryWrapper);
    }
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/GlassInfoService.java
@@ -16,10 +16,22 @@
 */
public interface GlassInfoService extends IService<GlassInfo> {
    /**
     * @param flowCardId
     * @return 根据流程卡号查询玻璃信息
     */
    int getGlassInfoCountByFlowCardId(String flowCardId);
    /**
     * @return
     * 查询所有不同流程卡号
     */
    List<Map<String, Object>> getFlowCardId();
    /**
     * @param id
     * @return 根据玻璃id查询玻璃信息
     */
    GlassInfo selectGlassId(String id);
//    List<GlassInfo> getmaxglass(GlassInfo glassInfo);
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
@@ -24,34 +24,34 @@
    private GlassInfoMapper glassInfoMapper;
    @Autowired
    @Autowired(required=false)
    public GlassInfoServiceImpl(GlassInfoMapper glassInfoMapper) {
        this.glassInfoMapper = glassInfoMapper;
    }
    @Override
    public int getGlassInfoCountByFlowCardId(String flowCardId) {
        QueryWrapper<GlassInfo> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("flow_card_id", flowCardId);
        return baseMapper.selectCount(queryWrapper);
        return baseMapper.selectCount(new QueryWrapper<GlassInfo>().lambda()
                .eq(GlassInfo::getFlowCardId, flowCardId));
    }
    @Override
    public List<Map<String, Object>> getFlowCardId() {
        return baseMapper.selectMaps(new QueryWrapper<GlassInfo>().select("DISTINCT flow_card_id"));
        return baseMapper.selectMaps(new QueryWrapper<GlassInfo>().lambda().select(GlassInfo::getFlowCardId).groupBy(GlassInfo::getFlowCardId));
    }
    @Override
    public GlassInfo selectGlassId(String id) {
        QueryWrapper<GlassInfo> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("glass_id", id);
        return baseMapper.selectOne(queryWrapper);
        return baseMapper.selectOne(new QueryWrapper<GlassInfo>().lambda()
                .eq(GlassInfo::getGlassId, id));
    }
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/tools/ExcelToJsonConverter.java
@@ -18,13 +18,13 @@
public class ExcelToJsonConverter {
    public static void main(String[] args) {
        String excelFilePath = "src/main/resources/JsonFile/alarm.xlsx";
        String excelFilePath = "src/main/resources/JsonFile/PlcdownGlass.xlsx";
        String sheetName = "Sheet1";
        int addressColumnIndex = 0;
        int nameColumnIndex = 1;
        //int unitColumnIndex = 2;
        String outputFilePath = "src/main/resources/JsonFile/PlcAlarm.json";
        String outputFilePath = "src/main/resources/JsonFile/PlcdownGlass.json";
        try (Workbook workbook = new XSSFWorkbook(new FileInputStream(excelFilePath))) {
            Sheet sheet = workbook.getSheet(sheetName);
@@ -75,8 +75,8 @@
            LinkedHashMap<String, Object> resultObject = new LinkedHashMap<>();
            resultObject.put("plcAddressBegin", "DB100.0");
            resultObject.put("plcAddressLenght", String.valueOf(plcAddressLength));
            // resultObject.put("dataType", "word");
            resultObject.put("dataType", "bit");
            resultObject.put("dataType", "word");
           // resultObject.put("dataType", "bit");
            resultObject.put("parameteInfor", jsonList);
            Gson gson = new Gson();
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcAlarm.json
File was deleted
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcMes.json
File was deleted
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcParameter.json
File was deleted
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcRead.json
File was deleted
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcSign.json
File was deleted
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcState.json
File was deleted
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcTest.json
File was deleted
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.json
New file
@@ -0,0 +1,362 @@
{
  "plcAddressBegin": "DB100.0",
  "plcAddressLenght": "142",
  "dataType": "word",
  "parameteInfor": [
    {
      "codeId": "RequestWord",
      "addressIndex": "0",
      "addressLenght": "2"
    },
    {
      "codeId": "G04ID",
      "addressIndex": "2",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "4",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "6",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "8",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "10",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "12",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "14",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "16",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "18",
      "addressLenght": "2"
    },
    {
      "codeId": "MESSendingWord",
      "addressIndex": "20",
      "addressLenght": "2"
    },
    {
      "codeId": "InputGrid",
      "addressIndex": "22",
      "addressLenght": "2"
    },
    {
      "codeId": "OutputGrid",
      "addressIndex": "24",
      "addressLenght": "2"
    },
    {
      "codeId": "出片ID",
      "addressIndex": "26",
      "addressLenght": "2"
    },
    {
      "codeId": "前端后端下片",
      "addressIndex": "28",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "30",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "32",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "34",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "36",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "38",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "40",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "42",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "44",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "46",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "48",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "50",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "52",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "54",
      "addressLenght": "2"
    },
    {
      "codeId": "MES任务状态",
      "addressIndex": "56",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "58",
      "addressLenght": "2"
    },
    {
      "codeId": "报警状态",
      "addressIndex": "60",
      "addressLenght": "2"
    },
    {
      "codeId": "报警字1",
      "addressIndex": "62",
      "addressLenght": "2"
    },
    {
      "codeId": "报警字2",
      "addressIndex": "64",
      "addressLenght": "2"
    },
    {
      "codeId": "报警字3",
      "addressIndex": "66",
      "addressLenght": "2"
    },
    {
      "codeId": "报警字4",
      "addressIndex": "68",
      "addressLenght": "2"
    },
    {
      "codeId": "内容",
      "addressIndex": "70",
      "addressLenght": "2"
    },
    {
      "codeId": "设备状态字",
      "addressIndex": "72",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "74",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "76",
      "addressLenght": "2"
    },
    {
      "codeId": "输入输出1",
      "addressIndex": "78",
      "addressLenght": "2"
    },
    {
      "codeId": "输入输出2",
      "addressIndex": "80",
      "addressLenght": "2"
    },
    {
      "codeId": "输入输出3",
      "addressIndex": "82",
      "addressLenght": "2"
    },
    {
      "codeId": "输入输出4",
      "addressIndex": "84",
      "addressLenght": "2"
    },
    {
      "codeId": "输入输出5",
      "addressIndex": "86",
      "addressLenght": "2"
    },
    {
      "codeId": "输入输出6",
      "addressIndex": "88",
      "addressLenght": "2"
    },
    {
      "codeId": "输入输出7",
      "addressIndex": "90",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "92",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "94",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "96",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "98",
      "addressLenght": "2"
    },
    {
      "codeId": "spare",
      "addressIndex": "100",
      "addressLenght": "2"
    },
    {
      "codeId": "G04动作状态",
      "addressIndex": "102",
      "addressLenght": "2"
    },
    {
      "codeId": "G05动作状态",
      "addressIndex": "104",
      "addressLenght": "2"
    },
    {
      "codeId": "G06动作状态",
      "addressIndex": "106",
      "addressLenght": "2"
    },
    {
      "codeId": "G07动作状态",
      "addressIndex": "108",
      "addressLenght": "2"
    },
    {
      "codeId": "G08动作状态",
      "addressIndex": "110",
      "addressLenght": "2"
    },
    {
      "codeId": "G09动作状态",
      "addressIndex": "112",
      "addressLenght": "2"
    },
    {
      "codeId": "G10动作状态",
      "addressIndex": "114",
      "addressLenght": "2"
    },
    {
      "codeId": "G11动作状态",
      "addressIndex": "116",
      "addressLenght": "2"
    },
    {
      "codeId": "G12动作状态",
      "addressIndex": "118",
      "addressLenght": "2"
    },
    {
      "codeId": "G13动作状态",
      "addressIndex": "120",
      "addressLenght": "2"
    },
    {
      "codeId": "G04ID",
      "addressIndex": "122",
      "addressLenght": "2"
    },
    {
      "codeId": "G05ID",
      "addressIndex": "124",
      "addressLenght": "2"
    },
    {
      "codeId": "G06ID",
      "addressIndex": "126",
      "addressLenght": "2"
    },
    {
      "codeId": "G07ID",
      "addressIndex": "128",
      "addressLenght": "2"
    },
    {
      "codeId": "G08ID",
      "addressIndex": "130",
      "addressLenght": "2"
    },
    {
      "codeId": "G09ID",
      "addressIndex": "132",
      "addressLenght": "2"
    },
    {
      "codeId": "G10ID",
      "addressIndex": "134",
      "addressLenght": "2"
    },
    {
      "codeId": "G11ID",
      "addressIndex": "136",
      "addressLenght": "2"
    },
    {
      "codeId": "G12ID",
      "addressIndex": "138",
      "addressLenght": "2"
    },
    {
      "codeId": "G13ID",
      "addressIndex": "140",
      "addressLenght": "2"
    }
  ]
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/Plcframe.json
File was deleted
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/alarm.xlsx
Binary files differ
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/sign.xlsx
Binary files differ
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/test.xlsx
Binary files differ
hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java
@@ -10,6 +10,7 @@
import com.mes.downworkstation.service.DownWorkstationService;
import com.mes.downworkstation.service.impl.DownWorkstationServiceImpl;
import com.mes.glassinfo.service.impl.GlassInfoServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -43,6 +44,10 @@
    DownStorageCageDetailsService downStorageCageDetailsService;
    @Autowired
    DownWorkstationServiceImpl downWorkstationServiceImpl;
    @Autowired
    GlassInfoServiceImpl glassInfoServiceImpl;
    @Autowired
    DownWorkstationService downWorkstationService;
    @Test
    public void testFindPath() {
@@ -51,21 +56,22 @@
    @Test
    public void testCacheGlass() {
        List<Map> map = downStorageCageDetailsServiceImpl.getCacheInfo();
        log.info("笼内信息:{}", Arrays.asList(map));
        //List<Map<String, Object>> map = downStorageCageServiceImpl.selectDownStorageCages();
      //  log.info("笼内信息:{}", Arrays.asList(map));
        downStorageCageServiceImpl.updateDownStorageCageDetails(1,null);
    }
    @Test
    public void testselectCacheEmpty() {
        List<DownStorageCageDetails> map = downStorageCageDetailsServiceImpl.getCacheLeisure();
        log.info("笼内空格:{}", Arrays.asList(map));
       // List<DownStorageCageDetails> map = downStorageCageDetailsServiceImpl.getCacheLeisure();
       // log.info("笼内空格:{}", Arrays.asList(map));
    }
    @Test
    public void testgetCacheOut() {
        List<DownStorageCageDetails> map = downStorageCageDetailsServiceImpl.getCacheOut(1, 5);
        log.info("根据传入的工位查询符合按照顺序和大小出片的小片:{}", Arrays.asList(map));
       // List<DownStorageCageDetails> map = downStorageCageDetailsServiceImpl.getCacheOut(1, 5);
      //  log.info("根据传入的工位查询符合按照顺序和大小出片的小片:{}", Arrays.asList(map));
    }
@@ -79,7 +85,7 @@
    @Test
    public void testplc() {
        log.info("测试");
        downWorkstationServiceImpl.insertdownglassinfo();
        glassInfoServiceImpl.getGlassInfoCountByFlowCardId("NG24030702A01");
    }
@@ -88,7 +94,7 @@
    @Test
    public void testin2() {
        log.info("测试进片");
        downStorageCageDetailsServiceImpl.getIsExistIntoCacheByflowcardid("NG2023005",500);
        //downStorageCageDetailsServiceImpl.getIsExistIntoCacheByflowcardid("NG2023005",500);
    }
@@ -96,7 +102,7 @@
    @Test
    public void selectCacheEmpty() {
        log.info("测试进片");
        downStorageCageDetailsServiceImpl.getCacheLeisure();
        //downStorageCageDetailsServiceImpl.getCacheLeisure();
    }
@@ -111,7 +117,7 @@
    @Test
    public void getTotalGlassDimensionsByWorkstation() {
        log.info("工位显示");
        downWorkstationServiceImpl.getTotalGlassDimensionsByWorkstation();
        downWorkstationService.getTotalGlassDimensionsByWorkstation();
    }
@@ -127,7 +133,7 @@
    public void updateTaskStateToZero() {
        log.info("更新状态0");
        downGlassTaskServiceImpl.updateTaskStateToZero(3);
        downGlassTaskServiceImpl.updateTaskStateToZero("3");
    }