From 2c7661d0bca739a9b403cdd420d2b91eb77470e6 Mon Sep 17 00:00:00 2001
From: admin <15939171744@163.com>
Date: 星期一, 29 四月 2024 19:48:32 +0800
Subject: [PATCH] -

---
 jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java                                    |    7 
 jcdm-main/src/main/java/com/jcdm/main/restful/qingYan/doman/ChildVO.java                                |   14 
 jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/service/impl/BsFormulaChildInfoServiceImpl.java   |   84 ++++
 jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java                                       |    4 
 jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/controller/BsFormulaChildInfoController.java      |   18 +
 jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/impl/DaParamCollectionServiceImpl.java |    5 
 jcdm-ui/src/views/main/kb/preInstalledTerminal/index.vue                                                |  835 ++++++++++++++++++++++++++++++++++++++++++++++
 jcdm-framework/src/main/java/com/jcdm/framework/config/SecurityConfig.java                              |    3 
 jcdm-main/src/main/java/com/jcdm/main/restful/qingYan/doman/ParentVO.java                               |   17 
 jcdm-main/src/main/java/com/jcdm/main/restful/factoryMes/controller/TestClass.java                      |   36 +
 jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/service/IBsFormulaChildInfoService.java           |    5 
 jcdm-ui/src/api/main/bs/formulaChild/formulaChild.js                                                    |   20 +
 jcdm-admin/src/main/resources/application-druid.yml                                                     |    2 
 13 files changed, 1,038 insertions(+), 12 deletions(-)

diff --git a/jcdm-admin/src/main/resources/application-druid.yml b/jcdm-admin/src/main/resources/application-druid.yml
index af3fb75..51f6d02 100644
--- a/jcdm-admin/src/main/resources/application-druid.yml
+++ b/jcdm-admin/src/main/resources/application-druid.yml
@@ -23,6 +23,8 @@
 #                password: JCDM@2023
                 password: admin@123
 #                password: 1!deshine
+#                password: 123456
+
 
             # 浠庡簱鏁版嵁婧�
             slave:
diff --git a/jcdm-framework/src/main/java/com/jcdm/framework/config/SecurityConfig.java b/jcdm-framework/src/main/java/com/jcdm/framework/config/SecurityConfig.java
index 7cabfb5..94e0f6c 100644
--- a/jcdm-framework/src/main/java/com/jcdm/framework/config/SecurityConfig.java
+++ b/jcdm-framework/src/main/java/com/jcdm/framework/config/SecurityConfig.java
@@ -111,11 +111,12 @@
                 // 杩囨护璇锋眰
                 .authorizeRequests()
                 // 瀵逛簬鐧诲綍login 娉ㄥ唽register 楠岃瘉鐮乧aptchaImage 鍏佽鍖垮悕璁块棶
-                .antMatchers("/login", "/register", "/captchaImage","/websocket/**","/postWebsocket/**","/em/inspectionPlanTask/**","/em/inspectionPlanItemsProject/**","/jcdmMes/**").permitAll()
+                .antMatchers("/login", "/register", "/captchaImage","/websocket/**","/postWebsocket/**","/em/inspectionPlanTask/**","/em/inspectionPlanItemsProject/**").permitAll()
                 // 闈欐�佽祫婧愶紝鍙尶鍚嶈闂�
                 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
                 .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
                 .antMatchers("/sendDemo/push").permitAll()
+                .antMatchers("/jcdmMes/deviceResultFeedback").permitAll()
                 // 闄や笂闈㈠鐨勬墍鏈夎姹傚叏閮ㄩ渶瑕侀壌鏉冭璇�
                 .anyRequest().authenticated()
                 .and()
diff --git a/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/controller/BsFormulaChildInfoController.java b/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/controller/BsFormulaChildInfoController.java
index 40ddd9b..e8acbcc 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/controller/BsFormulaChildInfoController.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/controller/BsFormulaChildInfoController.java
@@ -106,6 +106,15 @@
     }
 
     /**
+     * 鎵爜纭
+     */
+    @GetMapping("/yzUpdateResults")
+    public AjaxResult yzUpdateResults(BsFormulaChildInfo bsFormulaChildInfo)
+    {
+        return bsFormulaChildInfoService.yzUpdateResults(bsFormulaChildInfo);
+    }
+
+    /**
      * 鏀捐璇风┖鐘舵��
      */
     @GetMapping("/workpieceRelease")
@@ -124,6 +133,15 @@
     }
 
     /**
+     * 鎷х揣鍚庢洿鏂板搴旀暟鎹�
+     */
+    @GetMapping("/yzUpdateTighteningFormula")
+    public AjaxResult yzUpdateTighteningFormula(BsFormulaChildInfo bsFormulaChildInfo)
+    {
+        return bsFormulaChildInfoService.yzUpdateTighteningFormula(bsFormulaChildInfo);
+    }
+
+    /**
      * 瀵煎嚭閰嶆柟閰嶇疆瀛愪俊鎭垪琛�
      */
     @PreAuthorize("@ss.hasPermi('bs:formulaChild:export')")
diff --git a/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/service/IBsFormulaChildInfoService.java b/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/service/IBsFormulaChildInfoService.java
index e83c15d..9de6261 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/service/IBsFormulaChildInfoService.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/service/IBsFormulaChildInfoService.java
@@ -76,8 +76,7 @@
     public BsFormulaChildInfo getCount(String productCode,String processesCode);
 
 
+    AjaxResult yzUpdateResults(BsFormulaChildInfo bsFormulaChildInfo);
 
-
-
-
+    AjaxResult yzUpdateTighteningFormula(BsFormulaChildInfo bsFormulaChildInfo);
 }
diff --git a/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/service/impl/BsFormulaChildInfoServiceImpl.java b/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/service/impl/BsFormulaChildInfoServiceImpl.java
index 9fea30c..cd0b658 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/service/impl/BsFormulaChildInfoServiceImpl.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/service/impl/BsFormulaChildInfoServiceImpl.java
@@ -145,6 +145,90 @@
     }
 
     @Override
+    public AjaxResult yzUpdateResults(BsFormulaChildInfo bsFormulaChildInfo) {
+        String result = "";
+        List<BsFormulaChildInfo> bsFormulaChildInfos = new ArrayList<>();
+        List<BsFormulaChildInfo> infos = bsFormulaChildInfoService.list(new LambdaQueryWrapper<BsFormulaChildInfo>()
+                .eq(BsFormulaChildInfo::getProcessesCode, bsFormulaChildInfo.getLocationCode())
+                .eq(BsFormulaChildInfo::getProductCode, bsFormulaChildInfo.getProductCode())
+                .eq(BsFormulaChildInfo::getOperationType, "2")
+        );
+        for (BsFormulaChildInfo formulaChildInfo : infos) {
+            if(bsFormulaChildInfo.getScanBarcode().contains(formulaChildInfo.getMaterialCode())){
+                bsFormulaChildInfos.add(formulaChildInfo);
+                break;
+            }
+        }
+        if(bsFormulaChildInfos.size()>0){
+            String spareField4 = bsFormulaChildInfos.get(0).getSpareField4();
+            bsFormulaChildInfos.get(0).setCollectData(bsFormulaChildInfo.getScanBarcode());
+            bsFormulaChildInfos.get(0).setResults("OK");
+            bsFormulaChildInfoMapper.updateBsFormulaChildInfo(bsFormulaChildInfos.get(0));
+            bsFormulaChildInfo.setParamValue(bsFormulaChildInfo.getScanBarcode());
+            bsFormulaChildInfo.setParamCode(bsFormulaChildInfos.get(0).getParamCode());
+            bsFormulaChildInfo.setSfcBarcode(bsFormulaChildInfo.getSfcBarcode());
+            addParameterCollection(bsFormulaChildInfo);
+            if (spareField4 != null && !spareField4.isEmpty()) {
+                // 鎵ц鎿嶄綔
+                if(bsFormulaChildInfos.get(0).getSpareField4().equals("1")){
+                    try {
+                        result = "3";
+                    } catch (Exception e) {
+                        throw new RuntimeException(e);
+                    }
+                }
+            }
+        }else {
+            result = "1";
+        }
+        return AjaxResult.success(result);
+    }
+
+    @Override
+    public AjaxResult yzUpdateTighteningFormula(BsFormulaChildInfo bsFormulaChildInfo) {
+        String result = "1";
+        BsFormulaChildInfo getMaterTwo = new BsFormulaChildInfo();
+        getMaterTwo.setProcessesCode(bsFormulaChildInfo.getLocationCode());
+        getMaterTwo.setOperationType("2");
+        List<BsFormulaChildInfo> operationType = bsFormulaChildInfoMapper.selectBsFormulaChildInfoList(getMaterTwo);
+        List<String> collect = operationType.stream().map(BsFormulaChildInfo::getResults).collect(Collectors.toList());
+        for (String s : collect) {
+            if(s.equals("")){
+                return AjaxResult.error("鎵弿鏈畬鎴愶紝绂佹鎷х揣鎿嶄綔锛�");
+            }
+        }
+        BsFormulaChildInfo listQuery = new BsFormulaChildInfo();
+        listQuery.setParamCode(bsFormulaChildInfo.getParamCode());
+        String paramCode = bsFormulaChildInfo.getTightenTheArray();
+        if(paramCode.contains("N")){
+            List<BsFormulaChildInfo> bsFormulaChildInfos = bsFormulaChildInfoMapper.selectBsFormulaChildInfoList(listQuery);
+            bsFormulaChildInfos.get(0).setResults("NG");
+            bsFormulaChildInfos.get(0).setCollectData(bsFormulaChildInfo.getTightenTheArray());
+            bsFormulaChildInfoMapper.updateBsFormulaChildInfo(bsFormulaChildInfos.get(0));
+            return AjaxResult.error("鎵弿缁撴灉NG,璇烽噸鏂版壂鎻忥紒");
+        }else {
+            List<BsFormulaChildInfo> bsFormulaChildInfos = bsFormulaChildInfoMapper.selectBsFormulaChildInfoList(listQuery);
+            bsFormulaChildInfos.get(0).setResults("OK");
+            bsFormulaChildInfos.get(0).setCollectData(bsFormulaChildInfo.getTightenTheArray());
+            bsFormulaChildInfoMapper.updateBsFormulaChildInfo(bsFormulaChildInfos.get(0));
+            String spareField4 = bsFormulaChildInfos.get(0).getSpareField4();
+            if (spareField4 != null && !spareField4.isEmpty()) {
+                // 鎵ц鎿嶄綔
+                if(bsFormulaChildInfos.get(0).getSpareField4().equals("1")){
+                    try {
+//                        WebSocketUsers.sendMessageToUserByText(map.get(bsFormulaChildInfo.getLocationCode()), "OUT");
+                        result = "2";
+                    } catch (Exception e) {
+                        throw new RuntimeException(e);
+                    }
+                }
+            }
+
+        }
+        return AjaxResult.success(result);
+    }
+
+    @Override
     public BsFormulaChildInfo releaseCheck(BsFormulaChildInfo bsFormulaChildInfo) {
         return bsFormulaChildInfoMapper.releaseCheck(bsFormulaChildInfo);
     }
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/impl/DaParamCollectionServiceImpl.java b/jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/impl/DaParamCollectionServiceImpl.java
index c4d4395..802b6e6 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/impl/DaParamCollectionServiceImpl.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/impl/DaParamCollectionServiceImpl.java
@@ -273,12 +273,11 @@
     @Override
     public void replaceAssemblyCode(DaParamCollection daParamCollection) {
         List<DaParamCollection> list = daParamCollectionService.list(new LambdaQueryWrapper<DaParamCollection>()
-                .eq(DaParamCollection::getSfcCode, daParamCollection.getSfcCode())
-                .eq(DaParamCollection::getLocationCode, daParamCollection.getLocationCode())
+                .eq(DaParamCollection::getSfcCode, daParamCollection.getYzSfcCode())
         );
         if(list.size() > 0){
             for (DaParamCollection paramCollection : list) {
-                paramCollection.setSfcCode(daParamCollection.getYzSfcCode());
+                paramCollection.setSfcCode(daParamCollection.getSfcCode());
                 daParamCollectionService.saveOrUpdate(paramCollection);
             }
         }
diff --git a/jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java b/jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java
index 22f1bcf..c9bdf04 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java
@@ -61,8 +61,10 @@
         lists.add(OPCElement.PACK_OP230_RecordData);//璇锋眰璁板綍鏁版嵁
         lists.add(OPCElement.PACK_OP240_RecordData);//璇锋眰璁板綍鏁版嵁.
         lists.add(OPCElement.PACK_OP240_AngleResult);//璇锋眰璁板綍鏁版嵁
-        lists.add(OPCElement.PACK_OP2502_RecordData);//璇锋眰璁板綍鏁版嵁.
+//        lists.add(OPCElement.PACK_OP2502_RecordData);//璇锋眰璁板綍鏁版嵁.
+        lists.add(OPCElement.PACK_OP2501_AngleResult);//璇锋眰璁板綍鏁版嵁
         lists.add(OPCElement.PACK_OP2502_AngleResult);//璇锋眰璁板綍鏁版嵁
+        lists.add(OPCElement.PACK_OP2503_AngleResult);//璇锋眰璁板綍鏁版嵁
         lists.add(OPCElement.PACK_OP260_RecordData);//璇锋眰璁板綍鏁版嵁
         lists.add(OPCElement.PACK_OP260_AngleResult);//璇锋眰璁板綍鏁版嵁
         lists.add(OPCElement.PACK_OP270_RecordData);//璇锋眰璁板綍鏁版嵁
diff --git a/jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java b/jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java
index e222755..f11841d 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java
@@ -19,8 +19,11 @@
     public static final String PACK_OP240_RecordData = "PACK.OP240.RecordData";//璇锋眰璁板綍鏁版嵁
     public static final String PACK_OP240_AngleResult = "PACK.OP240.AngleResult";//璇锋眰鎷х揣鏁版嵁
 
-    public static final String PACK_OP2502_RecordData = "PACK.OP250-2.RecordData";//璇锋眰璁板綍鏁版嵁
-    public static final String PACK_OP2502_AngleResult = "PACK.OP2502-2.AngleResult";//璇锋眰鎷х揣鏁版嵁
+//    public static final String PACK_OP2502_RecordData = "PACK.OP250-2.RecordData";//璇锋眰璁板綍鏁版嵁
+    public static final String PACK_OP2501_AngleResult = "PACK.OP250-1.AngleResult";//璇锋眰鎷х揣鏁版嵁
+    public static final String PACK_OP2502_AngleResult = "PACK.OP250-2.AngleResult";//璇锋眰鎷х揣鏁版嵁
+    public static final String PACK_OP2503_AngleResult = "PACK.OP250-3.AngleResult";//璇锋眰鎷х揣鏁版嵁
+
 
     /**
      * OP260
diff --git a/jcdm-main/src/main/java/com/jcdm/main/restful/factoryMes/controller/TestClass.java b/jcdm-main/src/main/java/com/jcdm/main/restful/factoryMes/controller/TestClass.java
index 139641f..b362bc1 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/restful/factoryMes/controller/TestClass.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/restful/factoryMes/controller/TestClass.java
@@ -1,13 +1,45 @@
 package com.jcdm.main.restful.factoryMes.controller;
 
+import cn.hutool.http.HttpRequest;
+import cn.hutool.json.JSONUtil;
 import com.jcdm.main.restful.factoryMes.service.RestfulService;
+import com.jcdm.main.restful.qingYan.doman.ChildVO;
+import com.jcdm.main.restful.qingYan.doman.ParentVO;
 
 import java.text.SimpleDateFormat;
 import java.util.*;
 
 public class TestClass {
     public static void main(String[] args) {
-//        System.out.println(RestfulService.getProductionWorkOrderRequest("0RSPA001111111E4T0000003","POP010"));
-        System.out.println(RestfulService.getWorkReportResultFeedback("0RSPA001111111E4T0000003","POP010","2024-04-26 09:38:03"));
+        String url = "https://imes-uat-group.geelycv-test.com/api/mom-open/restful/aMesSysIntegration/deviceResultFeedback";
+
+//        System.out.println(RestfulService.getProductionWorkOrderRequest("0RSPA001111111E4T0000007","POP230"));
+//        System.out.println(RestfulService.getWorkReportResultFeedback("0RSPB001139E3AE4X0000007","POP230","2024-04-26 09:38:03"));
+        List<ChildVO> childVOList = new ArrayList<>();
+        ParentVO vo = new ParentVO();
+        ChildVO childVO = new ChildVO();
+        childVO.setItemCode("XTSX_XTID");
+        childVO.setItemType("1");
+        childVO.setItemText("绠变綋鐮�");
+        childVO.setItemValue("GLTEST02883333240429");
+        childVO.setCheckResult("1");
+        childVO.setCheckTime("2024-04-29 15:15:00");
+//        ChildVO childVO1 = new ChildVO();
+//        childVO1.setItemCode("XTSX_XTQXJG");
+//        childVO1.setItemType("3");
+//        childVO1.setItemText("绠变綋娓呮礂缁撴灉");
+//        childVO1.setItemValue("S");
+//        childVO1.setCheckResult("1");
+//        childVO1.setCheckTime("2024-04-29 15:15:00");
+//        childVOList.add(childVO1);
+        childVOList.add(childVO);
+        vo.setSiteCode("3983");
+        vo.setRecordId("100000004");
+        vo.setStationCode("POP230");
+        vo.setProductNum("0RSPB001139E3AE4X0000007");
+        vo.setTotalResult("1");
+        vo.setCheckList(childVOList);
+        System.out.println(HttpRequest.post(url).body(JSONUtil.toJsonStr(vo)).execute());
+
     }
 }
diff --git a/jcdm-main/src/main/java/com/jcdm/main/restful/qingYan/doman/ChildVO.java b/jcdm-main/src/main/java/com/jcdm/main/restful/qingYan/doman/ChildVO.java
new file mode 100644
index 0000000..abd1e46
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/restful/qingYan/doman/ChildVO.java
@@ -0,0 +1,14 @@
+package com.jcdm.main.restful.qingYan.doman;
+
+import lombok.Data;
+
+@Data
+public class ChildVO {
+
+    private String itemCode;
+    private String itemType;
+    private String itemText;
+    private String itemValue;
+    private String checkResult;
+    private String checkTime;
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/restful/qingYan/doman/ParentVO.java b/jcdm-main/src/main/java/com/jcdm/main/restful/qingYan/doman/ParentVO.java
new file mode 100644
index 0000000..3c210cb
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/restful/qingYan/doman/ParentVO.java
@@ -0,0 +1,17 @@
+package com.jcdm.main.restful.qingYan.doman;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ParentVO {
+
+    private String siteCode;
+    private String recordId;
+    private String stationCode;
+    private String productNum;
+    private String totalResult;
+    private List<ChildVO> checkList;
+
+}
diff --git a/jcdm-ui/src/api/main/bs/formulaChild/formulaChild.js b/jcdm-ui/src/api/main/bs/formulaChild/formulaChild.js
index 9b7d04f..f46fea0 100644
--- a/jcdm-ui/src/api/main/bs/formulaChild/formulaChild.js
+++ b/jcdm-ui/src/api/main/bs/formulaChild/formulaChild.js
@@ -38,6 +38,16 @@
 }
 
 // 鏌ヨ閰嶆柟閰嶇疆瀛愪俊鎭垪琛�
+export function yzUpdateResults(query) {
+  return request({
+    url: '/bs/formulaChild/yzUpdateResults',
+    method: 'get',
+    params: query
+
+  })
+}
+
+// 鏌ヨ閰嶆柟閰嶇疆瀛愪俊鎭垪琛�
 export function workpieceRelease(query) {
   return request({
     url: '/bs/formulaChild/workpieceRelease',
@@ -48,6 +58,16 @@
 }
 
 // 鏌ヨ閰嶆柟閰嶇疆瀛愪俊鎭垪琛�
+export function yzUpdateTighteningFormula(query) {
+  return request({
+    url: '/bs/formulaChild/yzUpdateTighteningFormula',
+    method: 'get',
+    params: query
+
+  })
+}
+
+// 鏌ヨ閰嶆柟閰嶇疆瀛愪俊鎭垪琛�
 export function updateTighteningFormula(query) {
   return request({
     url: '/bs/formulaChild/updateTighteningFormula',
diff --git a/jcdm-ui/src/views/main/kb/preInstalledTerminal/index.vue b/jcdm-ui/src/views/main/kb/preInstalledTerminal/index.vue
new file mode 100644
index 0000000..66292a4
--- /dev/null
+++ b/jcdm-ui/src/views/main/kb/preInstalledTerminal/index.vue
@@ -0,0 +1,835 @@
+<template>
+  <div class="app-container">
+   <el-row :gutter="5">
+     <el-col :span="7">
+       <el-card shadow="never">
+         <span class="head-font">宸ヤ綅缂栧彿 : {{headContent.processesCode}}</span>
+       </el-card>
+     </el-col>
+     <el-col :span="7">
+       <el-card shadow="never">
+         <span class="head-font">宸ヤ綅鍚嶇О : {{headContent.processesName}}</span>
+       </el-card>
+     </el-col>
+     <el-col :span="10">
+       <el-card shadow="never">
+         <span class="head-font">浜у搧搴忓垪鍙� : {{headContent.sfcCode}}</span>
+<!--         <el-input v-model="content" style="float: right;width: 150px;" placeholder="璇疯緭鍏ュ唴瀹�"></el-input>-->
+<!--         <el-button @click="scanCompleted" style="float: right" type="primary">鎵爜瀹屾垚</el-button>-->
+         <el-button type="primary" style="float: right" icon="el-icon-search" size="mini" @click="serialLink">涓插彛杩炴帴</el-button>
+         <el-button @click="clearClick" style="float: right" type="danger" size="mini">娓呴櫎</el-button>
+       </el-card>
+     </el-col>
+
+   </el-row>
+   <el-row :gutter="5" style="margin-top: 5px">
+     <el-col :span="24">
+       <el-tabs type="border-card"  style="height: 600px" v-model="activeName" @tab-click="changeMenu">
+         <el-tab-pane name="first">
+           <span slot="label"> <a class="el-icon-date"></a>棣栭〉</span>
+           <el-col :span="24">
+             <el-table height="500" :cell-style="rowStyle" :data="formulaChildList">
+               <el-table-column label="鎺掑簭" width="60" align="center" type="index">
+               </el-table-column>
+               <el-table-column label="鎿嶄綔鍐呭" :show-overflow-tooltip='true' align="center" prop="operationSteps">
+               </el-table-column>
+               <el-table-column label="浜у搧缂栧彿" align="center" prop="productCode">
+               </el-table-column>
+               <el-table-column label="鐗╂枡缂栫爜" align="center" prop="materialCode">
+               </el-table-column>
+               <el-table-column label="閲囬泦鍊�" align="center" prop="collectData">
+               </el-table-column>
+               <el-table-column label="缁撴灉" align="center" prop="results">
+               </el-table-column>
+             </el-table>
+           </el-col>
+<!--           <el-col :span="14">-->
+<!--             <el-image style="height: 520px;width: 100%" :src="imgSrc"></el-image>-->
+<!--           </el-col>-->
+         </el-tab-pane>
+<!--         <el-tab-pane name="second">-->
+<!--           <span slot="label"> <b class="el-icon-date"></b>鐗╂枡BOM</span>-->
+<!--           <el-empty>-->
+<!--             <span slot="description">鏆傛棤鏁版嵁</span>-->
+<!--           </el-empty>-->
+<!--         </el-tab-pane>-->
+<!--         <el-tab-pane name="third">-->
+<!--           <span slot="label"> <b class="el-icon-date"></b>閲囬泦娓呭崟</span>-->
+<!--           <el-empty>-->
+<!--             <span slot="description">鏆傛棤鏁版嵁</span>-->
+<!--           </el-empty>-->
+<!--         </el-tab-pane>-->
+<!--         <el-tab-pane name="fourth">-->
+<!--           <span slot="label"> <b class="el-icon-date"></b>瀹夌伅鐘舵��</span>-->
+<!--           <el-empty>-->
+<!--             <span slot="description">鏆傛棤鏁版嵁</span>-->
+<!--           </el-empty>-->
+<!--         </el-tab-pane>-->
+<!--         <el-tab-pane name="fifth">-->
+<!--           <span slot="label"> <b class="el-icon-date"></b>宸ヨ壓閰嶆柟</span>-->
+<!--           <el-empty>-->
+<!--             <span slot="description">鏆傛棤鏁版嵁</span>-->
+<!--           </el-empty>-->
+<!--         </el-tab-pane>-->
+       </el-tabs>
+     </el-col>
+   </el-row>
+    <el-dialog v-dialogpop-up :title="title" :visible.sync="open1" width="1000" append-to-body>
+      <el-row
+        type="flex"
+        class="row-bg"
+        justify="center"
+        v-show="portsList.length === 0"
+      >
+        <el-col :span="7">
+          <div style="margin-top: 400px">
+          <span style="display: block">
+            浠呮敮鎸丆hrome 89+鎴栬�匛dge 89+娴忚鍣�(瀹夊叏涓婁笅鏂囷紙HTTPS锛変腑鍙敤)
+          </span>
+            <el-button type="primary" @click="obtainAuthorization">鎺堟潈</el-button>
+          </div>
+        </el-col>
+      </el-row>
+      <el-form
+        v-show="portsList.length > 0"
+        ref="form1"
+        :model="form1"
+        label-width="100px">
+        <el-row>
+          <el-col :span="24"
+          ><div>
+            <el-form-item label="涓插彛">
+              <el-select
+                v-model="form1.port"
+                filterable
+                placeholder="璇烽�夋嫨涓插彛"
+                :disabled="isDisable"
+              >
+                <el-option
+                  v-for="item in portsList"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                >
+                </el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="娉㈢壒鐜�">
+              <el-autocomplete
+                popper-class="my-autocomplete"
+                v-model="form1.baudRate"
+                :fetch-suggestions="querySearch"
+                placeholder="璇疯緭鍏ユ尝鐗圭巼"
+                :disabled="isDisable"
+              >
+                <i class="el-icon-edit el-input__icon" slot="suffix"> </i>
+                <template slot-scope="{ item }">
+                  <div class="name">{{ item.value }}</div>
+                  <span class="addr">{{ item.address }}</span>
+                </template>
+              </el-autocomplete>
+            </el-form-item>
+            <el-form-item label="鏁版嵁浣�">
+              <el-select
+                v-model="form1.dataBits"
+                placeholder="璇烽�夋嫨鏁版嵁浣�"
+                :disabled="isDisable"
+              >
+                <el-option label="7" value="7"></el-option>
+                <el-option label="8" value="8"></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="鍋滄浣�">
+              <el-select
+                v-model="form1.stopBits"
+                placeholder="璇烽�夋嫨鍋滄浣�"
+                :disabled="isDisable"
+              >
+                <el-option label="1" value="1"></el-option>
+                <el-option label="2" value="2"></el-option>
+              </el-select>
+            </el-form-item>
+
+            <el-form-item label="鏍¢獙浣�">
+              <el-select
+                v-model="form1.parity"
+                placeholder="璇烽�夋嫨鏍¢獙浣�"
+                :disabled="isDisable"
+              >
+                <el-option label="None" value="none"></el-option>
+                <el-option label="Even" value="even"></el-option>
+                <el-option label="Odd" value="odd"></el-option>
+              </el-select>
+            </el-form-item>
+
+            <el-form-item label="娴佹帶鍒�">
+              <el-select
+                v-model="form1.flowControl"
+                placeholder="璇烽�夋嫨娴佹帶鍒�"
+                :disabled="isDisable"
+              >
+                <el-option label="None" value="none"></el-option>
+                <el-option label="HardWare" value="hardware"></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="鏄剧ず鍘嗗彶">
+              <el-switch
+                v-model="form1.isShowHistory"
+                @change="loadHistory"
+              ></el-switch>
+              <el-button
+                type="danger"
+                icon="el-icon-delete"
+                circle
+                title="娓呯┖鍘嗗彶"
+                @click="clearHistory"
+              ></el-button>
+            </el-form-item>
+            <el-form-item label="鍙戦�佸尯璁剧疆" v-show="isShowSendArea">
+              <el-form-item label="鍙戦�佹牸寮�">
+                <el-radio-group v-model="form1.type">
+                  <el-radio label="1">ASCII</el-radio>
+                  <el-radio label="2">HEX</el-radio>
+                </el-radio-group>
+              </el-form-item>
+              <el-form-item label="鍙戦�佷俊鎭�">
+                <el-input type="textarea" v-model="form1.sendMsg"></el-input>
+              </el-form-item>
+              <el-button type="primary" @click="sendCommon">鍙戦��</el-button>
+            </el-form-item>
+
+            <el-form-item>
+              <el-button :type="btnType" @click="connectBtn">{{
+                  btnText
+                }}</el-button>
+              <el-button type="info" @click="obtainAuthorization"
+              >鏂板鎺堟潈</el-button
+              >
+            </el-form-item>
+          </div>
+          </el-col>
+        </el-row>
+      </el-form>
+    </el-dialog>
+  </div>
+</template>
+<script>
+import {listWorkReport} from "@/api/main/om/workReport/workReport";
+import {listStationConf,getIpv4} from "@/api/main/sc/stationConf";
+import {
+  listFormulaChild,
+  noPageListFormulaChild,
+  releaseCheck,
+  updateResults,
+  updateTighteningFormula,
+  workpieceRelease, yzUpdateResults, yzUpdateTighteningFormula
+} from "@/api/main/bs/formulaChild/formulaChild";
+import MySerialPort from "@/utils/MySerialPort";
+import USBDevice from "@/utils/usb.json";
+import {listProductionOrde} from "@/api/main/om/productionOrde/productionOrde";
+import {addPassingStationCollection} from "@/api/main/da/passingStationCollection/passingStationCollection";
+import {
+  addBasicParameters,
+  addParamCollection,
+  addTighteningParameters,
+  saveCampaignTimeParameters,
+  replaceAssemblyCode,
+} from "@/api/main/da/paramCollection/paramCollection";
+
+export default {
+  name: "stationTerminal",
+  data() {
+    return {
+      showInput: true,
+      serialPortContent: '',
+      // 鏌ヨ鍙傛暟
+      formulaChildParams: {
+        pageNum: 1,
+        pageSize: 10,
+        productCode: null,
+        processesCode: null,
+      },
+      // 閰嶆柟閰嶇疆瀛愪俊鎭〃鏍兼暟鎹�
+      formulaChildList: [],
+      ipAddress: '',
+      imgSrc: '',
+      headContent: {
+        processesCode: 'OP1010',
+        processesName: '璐存爣鏈�-璐寸爜',
+        sfcCode: '',
+        yzSfcCode: '',
+      },
+      workpieceInformation: {
+        workOrderNo: null,
+        productCode: null,
+        productModel: null,
+        productName: null,
+        beat: null,
+      },
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        sfcCode: null,
+      },
+      // 鏌ヨ鍙傛暟
+      StationConfQueryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        ipAddress: null,
+      },
+      cakeLamp: {
+        plcState: 1, //plc
+        scannerState: 1, //鎵爜鏋�
+        InPlace: 0, //宸ヤ欢鍒颁綅
+        scanFinish: 0,
+        startWork: 0,
+        release: 0 //鍏佽鏀捐
+      },
+      content: '',
+      activeName: 'first',
+      url: "ws://192.168.2.248:8080/websocket/message/",
+      message: "",
+      text_content: "",
+      ws: null,
+      inputValue: '9',
+
+      open1: false,
+      input: "",
+      keepReading: true,
+      form1: {
+        baudRate: "115200",
+        dataBits: "8",
+        stopBits: "1",
+        parity: "none",
+        flowControl: "none",
+        desc: "",
+        type: "1",
+        isShowHistory: false,
+      },
+      btnType: "primary",
+      btnText: "杩炴帴涓插彛",
+      restaurants: [],
+      portsList: [],
+      isShowSendArea: false,
+      readType: 1,
+      title: "",
+
+      passingStationForm: {},
+      originalArray: [],
+    }
+  },
+  beforeDestroy() {
+    this.exit();
+  },
+  created() {
+    this.initStation();
+    // this.getStationConfList();
+    // setTimeout(() => {
+    //   this.connectWebsocket();
+    // }, 3000);
+  },
+  mounted() {
+    if ("serial" in navigator) {
+      this.myserialport = new MySerialPort();
+      this.getPorts();
+      navigator.serial.addEventListener("connect", (e) => {
+        this.$message.success("璁惧宸茶繛鎺�");
+        this.getPorts();
+      });
+      navigator.serial.addEventListener("disconnect", (e) => {
+        this.$message.error("璁惧宸叉柇寮�");
+      });
+      this.restaurants = this.loadAll();
+    } else {
+      this.$message.error(
+        "褰撳墠涓篐TTP妯″紡鎴栬�呮祻瑙堝櫒鐗堟湰杩囦綆锛屼笉鏀寔缃戦〉杩炴帴涓插彛"
+      );
+    }
+  },
+  computed: {
+    isDisable() {
+      return this.btnType === "danger";
+    },
+  },
+  methods: {
+    serialLink() {
+      this.open1 = true
+    },
+    bindYzSfc(){
+      if(this.headContent.sfcCode!==""&&this.headContent.yzSfcCode!==""){
+        let param = {
+          sfcCode: this.headContent.sfcCode,
+          locationCode: this.headContent.processesCode,
+          yzSfcCode: this.headContent.yzSfcCode
+        }
+        this.$message('鍙互缁戝畾锛�');
+        replaceAssemblyCode(param).then(response => {
+
+        });
+      }
+    },
+    Release(){
+      // this.$message('portsList锛�'+this.portsList.length);
+      if(this.btnType === "danger"){
+        this.$message('杩炴帴浜嗭紒');
+
+      }else {
+        this.$message('mei杩炴帴浜嗭紒');
+
+      }
+
+    },
+    serialPortMethod(value){
+      let formulaChildParams = {
+        scanBarcode: value,
+        sfcBarcode: this.headContent.sfcCode,
+        workOrderNo: this.workpieceInformation.workOrderNo,
+        productCode: "1P102S",
+        locationCode: this.headContent.processesCode,
+        collectionTime: new Date()
+      }
+      yzUpdateResults(formulaChildParams).then(response => {
+        this.getListFormulaChild()
+      });
+    },
+    rowStyle({ row }) {
+      if (row.results === 'OK') {
+        return 'background-color: PaleGreen';
+      } else if (row.results === 'NG') {
+        return 'background-color: LightSalmon';
+      }
+      return '';
+    },
+    /** 鏌ヨ閰嶆柟閰嶇疆瀛愪俊鎭垪琛� */
+    getListFormulaChild() {
+      this.formulaChildParams.productCode = "1P102S"
+      this.formulaChildParams.processesCode = this.headContent.processesCode
+      console.log(this.formulaChildParams)
+      noPageListFormulaChild(this.formulaChildParams).then(response => {
+        this.formulaChildList = response.rows;
+      });
+    },
+    endClear(){
+
+    },
+    changeMenu(tab, event) {
+      console.log(tab, event);
+    },
+    clearClick(){
+      this.$message('杩欐槸涓�鏉℃竻闄ゆ秷鎭彁绀�');
+      this.headContent.sfcCode = null
+    },
+    scanCompleted(){
+      this.$message('鎵爜瀹屾垚'+this.content);
+      this.headContent.sfcCode = this.content
+      this.queryParams.sfcCode = this.content
+      this.getList()
+      this.getListFormulaChild()
+      this.cakeLamp.scanFinish = 1
+      this.cakeLamp.startWork = 1
+
+    },
+    /** 鏌ヨ宸ュ崟鍒楄〃 */
+    async getList() {
+      this.getListFormulaChild()
+      // this.addOverStationCollection()
+    },
+
+    /** 鍏ョ珯澧炲姞杩囩珯閲囬泦璁板綍 **/
+    addOverStationCollection(){
+      this.passingStationForm = {
+        id: null,
+        workOrderNo: this.workpieceInformation.workOrderNo,
+        productCode: this.workpieceInformation.productCode,
+        locationCode: this.headContent.processesCode,
+        model: this.workpieceInformation.productModel,
+        productBarcode: this.headContent.sfcCode,
+        sfcCode: this.headContent.sfcCode,
+        inboundTime: new Date()
+      }
+      addPassingStationCollection(this.passingStationForm).then(response => {});
+      addBasicParameters(this.passingStationForm).then(response => {});
+    },
+    exit() {
+      if (this.ws) {
+        this.ws.close();
+        this.ws = null;
+      }
+    },
+    send() {
+      if (this.ws) {
+        this.ws.send(this.message);
+      } else {
+        alert("鏈繛鎺ュ埌鏈嶅姟鍣�");
+      }
+    },
+
+    initStation: async function () {
+      await getIpv4().then(response => {
+        this.StationConfQueryParams.ipAddress = response.msg
+        console.log('鏌ヨ鍒版湰宸ヤ綅IP涓�' + this.StationConfQueryParams.ipAddress)
+      });
+      await listStationConf(this.StationConfQueryParams).then(response => {
+        let rows = response.rows[0]
+        if (response.rows.length === 0) {
+          this.$message('璇ュ伐浣嶆病鏈夐厤缃甀P锛岃鑱旂郴绠$悊鍛橀厤缃甀P');
+          return
+        }
+        this.headContent.processesName = rows.processesName
+        this.headContent.processesCode = rows.processesCode
+        console.log('璁剧疆宸ヤ綅缂栫爜' + this.headContent.processesCode)
+
+      });
+      this.conCom()
+      console.log('websocket杩炴帴宸ヤ綅涓�' + this.headContent.processesCode)
+      const wsuri = this.url + this.headContent.processesCode;
+      this.ws = new WebSocket(wsuri);
+      const self = this;
+      this.ws.onopen = function (event) {
+        this.$message('websocket杩炴帴鎴愬姛锛�');
+      };
+      this.ws.onmessage = function (event) {
+        if (event.data === "IN") {
+          self.cakeLamp.InPlace = 1;
+        } else if (event.data === "IN0") {
+          self.cakeLamp.InPlace = 0;
+        } else if (event.data === "OUT") {
+          console.log("out")
+
+          const param = {
+            workOrderNo: self.workpieceInformation.workOrderNo,
+            productCode: "1P102S",
+            locationCode: self.headContent.processesCode,
+            productBarcode: self.headContent.sfcCode,
+          }
+          // saveCampaignTimeParameters(param).then(response => {});
+          // self.cakeLamp.release = 1;
+          workpieceRelease(param).then(response => {});
+          self.formulaChildList = [];
+          self.headContent.sfcCode = '';
+          console.log(self.formulaChildList)
+        } else if (event.data === "END") {
+          // const param = {
+          //   workOrderNo: self.workpieceInformation.workOrderNo,
+          //   productCode: self.workpieceInformation.productCode,
+          //   locationCode: self.headContent.processesCode,
+          //   productBarcode: self.headContent.sfcCode,
+          // }
+          // saveCampaignTimeParameters(param).then(response => {});
+          // self.endClear()
+          // workpieceRelease(param).then(response => {});
+        } else if (event.data.includes("[")) {
+          let formulaChilds = "";
+          self.formulaChildList.sort((a, b) => a.stepSort - b.stepSort);
+          self.formulaChildList
+            .filter((formulaChild) => formulaChild.operationType === '1');
+          for (let i = 0; i < self.formulaChildList.length; i++) {
+            let formulaChild = self.formulaChildList[i];
+            let results = formulaChild.results;
+            if (results === '' || results === null || results === 'NG') {
+              formulaChilds = formulaChild;
+              break;
+            }
+          }
+          const param = {
+            tightenTheArray: event.data,
+            paramCode: formulaChilds.paramCode,
+            workOrderNo: self.workpieceInformation.workOrderNo,
+            productCode: self.workpieceInformation.productCode,
+            locationCode: self.headContent.processesCode,
+            productBarcode: self.headContent.sfcCode,
+          }
+          addTighteningParameters(param).then(response => {});
+          yzUpdateTighteningFormula(param).then(response => {
+          //   self.getListFormulaChild()
+          // }).catch(error =>{
+          //   self.getListFormulaChild()
+            console.log(response.msg)
+            if(response.msg === "1"){
+                self.getListFormulaChild()
+
+            }else {
+              const param = {
+                workOrderNo: self.workpieceInformation.workOrderNo,
+                productCode: "1P102S",
+                locationCode: self.headContent.processesCode,
+                productBarcode: self.headContent.sfcCode,
+              }
+              saveCampaignTimeParameters(param).then(response => {});
+              workpieceRelease(param).then(response => {});
+              self.formulaChildList = [];
+              self.headContent.sfcCode = '';
+            }
+          });
+        }
+      };
+    },
+
+
+
+    //鎺ュ彈鏁版嵁鐨勫洖璋�
+    callBack(value) {
+      if (this.form1.isShowHistory) this.form1.desc = this.readLi().join("");
+      else {
+        const scanValue = this.myserialport.hex2atostr(value).replace(/[\r\n]/g, '');
+        console.log("涓插彛鏀跺埌鏁版嵁-------------------"+scanValue)
+
+        if(this.headContent.sfcCode !== ''){
+          this.$message('鎵弿鐗╂枡缂栫爜'+scanValue);
+          console.log(scanValue)
+          this.serialPortMethod(scanValue)
+        } else {
+          this.headContent.sfcCode = scanValue;
+          this.getList()
+        }
+
+      }
+    },
+    clearHistory() {
+      this.form1.desc = "";
+      this.myserialport.state.readValue = [];
+    },
+    loadHistory() {
+      if (this.form1.isShowHistory) this.form1.desc = this.readLi().join("");
+      else {
+        let temp = this.readLi();
+        if (temp.length > 0) this.form1.desc = temp[temp.length - 1].join("");
+      }
+    },
+    readLi() {
+      let readType = this.readType;
+      return this.myserialport.state.readValue.map((items, index) => {
+        const item = items.value;
+        const type = items.type; // 1鎺ユ敹锛�2鍙戦��
+        let body = [];
+        if (item !== undefined) {
+          let strArr = [];
+          for (let hex of Array.from(item)) {
+            strArr.push(hex.toString(16).toLocaleUpperCase());
+          }
+          if (strArr.includes("D") && strArr.includes("A")) {
+            if (strArr.indexOf("A") - strArr.indexOf("D") === 1) {
+              strArr.splice(strArr.indexOf("D"), 1);
+              strArr.splice(strArr.indexOf("A"), 1, <br key={0} />);
+            }
+          }
+          strArr = strArr.map((item) => {
+            if (typeof item === "string") {
+              if (readType === 1) {
+                return this.myserialport.hex2a(parseInt(item, 16));
+              } else if (readType === 2) {
+                return item + " ";
+              }
+            }
+            return item;
+          });
+          if (typeof strArr[strArr.length - 1] === "string") {
+            strArr.push("\r\n");
+          }
+          body.push(strArr.join(""));
+        }
+        return body;
+      });
+    },
+    conCom(){
+      try {
+        this.myserialport.state.baudRate = this.form1.baudRate;
+        this.myserialport.state.dataBits = this.form1.dataBits;
+        this.myserialport.state.stopBits = this.form1.stopBits;
+        this.myserialport.state.parity = this.form1.parity;
+        this.myserialport.state.flowControl = this.form1.flowControl;
+        this.myserialport.openPort(0, true, this.callBack);
+        console.log(this.form1.port)
+      } catch (error) {
+        this.$message.error("涓插彛杩炴帴澶辫触锛佽妫�鏌ヤ覆鍙f槸鍚﹀凡琚崰鐢�");
+      }
+      if (this.myserialport.state.isOpen) {
+        this.$message.success("涓插彛杩炴帴鎴愬姛");
+      }
+    },
+    //杩炴帴
+    async connectBtn() {
+      if (this.btnType === "primary") {
+        try {
+          this.myserialport.state.baudRate = this.form1.baudRate;
+          this.myserialport.state.dataBits = this.form1.dataBits;
+          this.myserialport.state.stopBits = this.form1.stopBits;
+          this.myserialport.state.parity = this.form1.parity;
+          this.myserialport.state.flowControl = this.form1.flowControl;
+          await this.myserialport.openPort(this.form1.port, true, this.callBack);
+          console.log(this.form1.port)
+        } catch (error) {
+          this.$message.error("涓插彛杩炴帴澶辫触锛佽妫�鏌ヤ覆鍙f槸鍚﹀凡琚崰鐢�");
+        }
+        if (this.myserialport.state.isOpen) {
+          this.$message.success("涓插彛杩炴帴鎴愬姛");
+          this.open1 = false
+          this.btnType = "danger";
+          this.btnText = "鍏抽棴涓插彛";
+        }
+      } else {
+        this.myserialport.openPort(this.form1.port, false, this.callBack);
+        this.$message.success("涓插彛鍏抽棴鎴愬姛");
+        this.btnType = "primary";
+        this.btnText = "杩炴帴涓插彛";
+      }
+    },
+    //鎺堟潈
+    async obtainAuthorization() {
+      if ("serial" in navigator) {
+        console.log("The Web Serial API is supported.");
+        if (!this.myserialport) this.myserialport = new MySerialPort();
+        try {
+          await this.myserialport.handleRequestPort();
+          this.$message.success("涓插彛鎺堟潈鎴愬姛");
+          this.getPortInfo(this.myserialport.state.ports);
+        } catch (error) {
+          this.$message.warning("鏈�夋嫨鏂颁覆鍙f巿鏉冿紒");
+        }
+      } else {
+        this.$message.error(
+          "褰撳墠涓篐TTP妯″紡鎴栬�呮祻瑙堝櫒鐗堟湰杩囦綆锛屼笉鏀寔缃戦〉杩炴帴涓插彛"
+        );
+      }
+    },
+    //涓插彛鍒楄〃鍒濆鍖�
+    getPortInfo(portList) {
+      this.portsList = [];
+      portList.map((port, index) => {
+        const { usbProductId, usbVendorId } = port.getInfo();
+        if (usbProductId === undefined || usbVendorId === undefined) {
+          this.portsList.push({ label: "鏈煡璁惧" + index, value: index });
+        } else {
+          const usbVendor = USBDevice.filter(
+            (item) => parseInt(item.vendor, 16) === usbVendorId
+          );
+          let usbProduct = [];
+          if (usbVendor.length === 1) {
+            usbProduct = usbVendor[0].devices.filter(
+              (item) => parseInt(item.devid, 16) === usbProductId
+            );
+          }
+          this.portsList.push({ label: usbProduct[0].devname, value: index });
+        }
+      });
+    },
+    // 鍙戦��
+    async sendCommon() {
+      if (this.myserialport.state.isOpen) {
+        if (this.form1.sendMsg.length !== 0) {
+          const writeType = this.form1.type;
+          let value = this.form1.sendMsg;
+          let arr = [];
+          if (writeType === 1) {
+            // ASCII
+            for (let i = 0; i < value.length; i++) {
+              arr.push(this.myserialport.a2hex(value[i]));
+            }
+          } else if (writeType === 2) {
+            // HEX
+            if (/^[0-9A-Fa-f]+$/.test(value) && value.length % 2 === 0) {
+              for (let i = 0; i < value.length; i = i + 2) {
+                arr.push(parseInt(value.substring(i, i + 2), 16));
+              }
+            } else {
+              this.$message.error("鏍煎紡閿欒");
+              return;
+            }
+          }
+          this.myserialport.writeText(arr);
+        } else {
+          this.$message.warning("璇疯緭鍏ュ彂閫佺殑淇℃伅");
+        }
+      } else {
+        this.$message.warning("涓插彛澶勪簬鍏抽棴鐘舵�侊紝璇疯繛鎺ヤ覆鍙�");
+      }
+    },
+    async getPorts() {
+      await this.myserialport.getPorts();
+      this.getPortInfo(this.myserialport.state.ports);
+    },
+    querySearch(queryString, cb) {
+      var restaurants = this.restaurants;
+      var results = queryString
+        ? restaurants.filter(this.createFilter(queryString))
+        : restaurants;
+      // 璋冪敤 callback 杩斿洖寤鸿鍒楄〃鐨勬暟鎹�
+      cb(results);
+    },
+    createFilter(queryString) {
+      return (restaurant) => {
+        return (
+          restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) ===
+          0
+        );
+      };
+    },
+    loadAll() {
+      return [
+        { value: "110" },
+        { value: "300" },
+        { value: "600" },
+        { value: "1200" },
+        { value: "2400" },
+        { value: "4800" },
+        { value: "7200" },
+        { value: "9600" },
+        { value: "14400" },
+        { value: "19200" },
+        { value: "28800" },
+        { value: "38400" },
+        { value: "56000" },
+        { value: "57600" },
+        { value: "76800" },
+        { value: "115200" },
+        { value: "230400" },
+        { value: "460800" },
+      ];
+    },
+  }
+}
+
+</script>
+<style scoped>
+.bottom-card{
+  height: 600px;
+}
+.circle-button{
+  height: 30px;
+  width: 30px;
+}
+.circle-red {
+  background-color: #e01a4f;
+}
+.circle-green {
+  background-color: green;
+}
+.circle-green-animate {
+  background-color: green;
+  animation: circle-green-animate 2s infinite;
+}
+  @keyframes circle-green-animate {
+    50% {
+      opacity: 0.6;
+    }
+    0% {
+      opacity: 0.2;
+    }
+  }
+.head-font{
+  /*font-weight: bold;*/
+  /*font-size: 25px;*/
+}
+span{
+  font-size: 15px;
+}
+.el-table .warning-row {
+  background: oldlace;
+}
+
+.el-table .success-row {
+  background: #f0f9eb;
+}
+</style>
+

--
Gitblit v1.9.3