From ac3856a47fe649cff0b7c6d0a7edd1d8b83f9253 Mon Sep 17 00:00:00 2001
From: admin <15939171744@163.com>
Date: 星期五, 27 九月 2024 10:59:19 +0800
Subject: [PATCH] 返修

---
 jcdm-ui/src/views/main/kb/repairOnline/index.vue                                                   |  710 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/controller/BsFormulaChildInfoController.java |   24 +
 jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/domain/BsFormulaChildInfo.java               |    6 
 jcdm-ui/src/api/main/bs/formulaChild/formulaChild.js                                               |    9 
 jcdm-main/src/main/resources/mapper/om/productionOrde/OmProductionOrdeInfoMapper.xml               |    2 
 5 files changed, 751 insertions(+), 0 deletions(-)

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 4dfcc1e..7c70c94 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
@@ -53,6 +53,30 @@
     private MiloService miloService;
 
     /**
+     * 杩斾慨淇℃伅鍐欏叆plc
+     */
+    @GetMapping("/writeRepairInformationIntoPlc")
+    public AjaxResult writeRepairInformationIntoPlc(BsFormulaChildInfo bsFormulaChildInfo)
+    {
+        String thoroughfare = Constants.thoroughfareMap.get(bsFormulaChildInfo.getProcessesCode());//鑾峰彇閫氶亾
+        try {
+            String prefix = thoroughfare+".OP165.";
+            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(prefix+"SNCode").value(bsFormulaChildInfo.getSfcCode()).build());
+            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(prefix+"WorkOrderNumber").value(bsFormulaChildInfo.getWorkOrderNo()).build());
+            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(prefix+"ProcessesCode").value(bsFormulaChildInfo.getProcessesCode()).build());
+            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(prefix+"EngravingStatus").value(bsFormulaChildInfo.getEngravingStatus()).build());
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        return AjaxResult.success();
+    }
+
+    public static void main(String[] args) {
+        String str = "TZ180XSDSZX012409120000001";
+        System.out.println(str.length());
+    }
+
+    /**
      * 鏈仛瀹屽伐搴忓洖澶峱lc淇″彿
      */
     @GetMapping("/unfinishedProcess")
diff --git a/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/domain/BsFormulaChildInfo.java b/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/domain/BsFormulaChildInfo.java
index 21a304d..506c634 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/domain/BsFormulaChildInfo.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/domain/BsFormulaChildInfo.java
@@ -145,6 +145,12 @@
     @TableField(exist = false)
     private String productBarcode;
 
+    @TableField(exist = false)
+    private String engravingStatus;
+
+    @TableField(exist = false)
+    private String sfcCode;
+
     public String getParamName() {
         return paramName;
     }
diff --git a/jcdm-main/src/main/resources/mapper/om/productionOrde/OmProductionOrdeInfoMapper.xml b/jcdm-main/src/main/resources/mapper/om/productionOrde/OmProductionOrdeInfoMapper.xml
index 63fac1b..60d5a4d 100644
--- a/jcdm-main/src/main/resources/mapper/om/productionOrde/OmProductionOrdeInfoMapper.xml
+++ b/jcdm-main/src/main/resources/mapper/om/productionOrde/OmProductionOrdeInfoMapper.xml
@@ -82,6 +82,8 @@
             <if test="resultCode != null  and resultCode != ''"> and result_code = #{resultCode}</if>
             <if test="sfResult != null  and sfResult != ''"> and sf_result = #{sfResult}</if>
             <if test="onlineCompletionMark != null  and sfResult != ''"> and online_completion_mark = #{onlineCompletionMark}</if>
+            <if test="trolleyYard != null  and trolleyYard != ''"> and trolley_yard = #{trolleyYard}</if>
+
 
         </where>
         ORDER BY stream_number DESC
diff --git a/jcdm-ui/src/api/main/bs/formulaChild/formulaChild.js b/jcdm-ui/src/api/main/bs/formulaChild/formulaChild.js
index fab2be7..3701a3a 100644
--- a/jcdm-ui/src/api/main/bs/formulaChild/formulaChild.js
+++ b/jcdm-ui/src/api/main/bs/formulaChild/formulaChild.js
@@ -46,6 +46,15 @@
   })
 }
 
+export function writeRepairInformationIntoPlc(query) {
+  return request({
+    url: '/bs/formulaChild/writeRepairInformationIntoPlc',
+    method: 'get',
+    params: query
+
+  })
+}
+
 // 鏌ヨ閰嶆柟閰嶇疆瀛愪俊鎭垪琛�
 export function initializedData(query) {
   return request({
diff --git a/jcdm-ui/src/views/main/kb/repairOnline/index.vue b/jcdm-ui/src/views/main/kb/repairOnline/index.vue
new file mode 100644
index 0000000..8b27010
--- /dev/null
+++ b/jcdm-ui/src/views/main/kb/repairOnline/index.vue
@@ -0,0 +1,710 @@
+<template>
+  <div class="app-container">
+   <el-row :gutter="5">
+     <el-col :span="7">
+       <el-card style="height: 71px;" shadow="never">
+         宸ヤ綅缂栧彿 :
+         <el-select v-model="headContent.processesCode" placeholder="璇烽�夋嫨">
+           <el-option
+             v-for="item in processesCodeOptions"
+             :key="item.index"
+             :label="item.processesCode"
+             :value="item.processesCode">
+           </el-option>
+         </el-select>
+       </el-card>
+     </el-col>
+     <el-col :span="17">
+       <el-card shadow="never">
+         <span class="head-font">澹充綋缂栫爜 : </span>
+         <el-input style="width: 40%" ref="inputData" v-model="shellBarcode" @change="handleEnter" placeholder="璇锋壂鎻忓3浣撶紪鐮�"></el-input>
+         鏄惁鎵撳埢 :
+         <el-select v-model="engravingStatus" placeholder="璇烽�夋嫨">
+           <el-option
+             v-for="item in engravingOptions"
+             :key="item.index"
+             :label="item.label"
+             :value="item.value">
+           </el-option>
+         </el-select>
+
+         <el-button @click="clearClick" style="float: right" type="danger" >娓呴櫎</el-button>
+       </el-card>
+     </el-col>
+
+   </el-row>
+   <el-row :gutter="5" style="margin-top: 5px">
+     <el-col :span="7" >
+       <el-card class="bottom-card">
+         <div slot="header" class="clearfix">
+           <i class="el-icon-tickets"></i>
+           <span style="font-weight: bold">褰撳墠宸ヤ欢淇℃伅</span>
+         </div>
+         <el-descriptions :column="1" border :content-style="{'min-width': '140px'}">
+           <el-descriptions-item label="浜у搧搴忓垪鍙�">
+             <span>{{headContent.sfcCode}}</span>
+           </el-descriptions-item>
+           <el-descriptions-item label="宸ュ崟缂栧彿">
+               <span>{{workpieceInformation.workOrderNo}}</span>
+           </el-descriptions-item>
+           <el-descriptions-item label="浜у搧缂栫爜">
+             <span>{{workpieceInformation.productCode}}</span>
+           </el-descriptions-item>
+           <el-descriptions-item label="璁″垝鏁伴噺">
+             <span>{{workpieceInformation.planQty}}</span>
+           </el-descriptions-item>
+<!--           <el-descriptions-item label="寮�濮嬫椂闂�">-->
+<!--             <span>{{workpieceInformation.inboundTime}}</span>-->
+<!--           </el-descriptions-item>-->
+         </el-descriptions>
+         <el-divider></el-divider>
+         <el-button @click="repairClick" type="primary">杩斾慨</el-button>
+         <!--         <el-row>-->
+<!--           <el-col :span="12">-->
+<!--             <el-button class="circle-button" :class="cakeLamp.plcState ? 'circle-green-animate':'circle-red'" circle></el-button>-->
+<!--             <span style="display: none">{{cakeLamp.plcState}}</span>-->
+<!--             <span>&nbsp;PLC鐘舵��</span>-->
+<!--           </el-col>-->
+<!--           <el-col :span="12">-->
+<!--             <el-button class="circle-button" :class="cakeLamp.scannerState ? 'circle-green-animate':'circle-red'" circle></el-button>-->
+<!--             <span style="display: none">{{cakeLamp.scannerState}}</span>-->
+<!--             <span>&nbsp;鎵爜鏋姸鎬�</span>-->
+<!--           </el-col>-->
+<!--         </el-row>-->
+<!--         <el-row style="margin-top: 20px">-->
+<!--           <el-col :span="12">-->
+<!--             <el-button class="circle-button" :class="cakeLamp.InPlace ? 'circle-green':'circle-red'" circle></el-button>-->
+<!--             <span style="display: none">{{cakeLamp.InPlace}}</span>-->
+<!--             <span>&nbsp;宸ヤ欢鍒颁綅</span>-->
+<!--           </el-col>-->
+<!--           <el-col :span="12">-->
+<!--             <el-button class="circle-button" :class="cakeLamp.scanFinish ? 'circle-green':'circle-red'" circle></el-button>-->
+<!--             <span style="display: none">{{cakeLamp.scanFinish}}</span>-->
+<!--             <span>&nbsp;鎵爜瀹屾垚</span>-->
+<!--           </el-col>-->
+<!--         </el-row>-->
+<!--         <el-row style="margin-top: 20px">-->
+<!--           <el-col :span="12">-->
+<!--             <el-button class="circle-button" :class="cakeLamp.startWork ? 'circle-green':'circle-red'" circle></el-button>-->
+<!--             <span style="display: none">{{cakeLamp.startWork}}</span>-->
+<!--             <span>&nbsp;寮�濮嬩綔涓�</span>-->
+<!--           </el-col>-->
+<!--           <el-col :span="12">-->
+<!--             <el-button class="circle-button" :class="cakeLamp.release ? 'circle-green':'circle-red'" circle></el-button>-->
+<!--             <span style="display: none">{{cakeLamp.release}}</span>-->
+<!--             <span>&nbsp;鍏佽鏀捐</span>-->
+<!--           </el-col>-->
+<!--         </el-row>-->
+       </el-card>
+
+     </el-col>
+     <el-col :span="17">
+       <el-tabs type="border-card"  style="height: 600px" v-model="activeName">
+         <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="80" align="center" prop="stepSort">
+               </el-table-column>
+               <el-table-column label="鎿嶄綔鍐呭" align="center" prop="operationSteps">
+               </el-table-column>
+               <el-table-column label="浜у搧缂栧彿" width="80" align="center" prop="productCode">
+               </el-table-column>
+               <el-table-column label="鐗╂枡缂栫爜" width="110" align="center" prop="materialCode">
+               </el-table-column>
+               <el-table-column label="閲囬泦鍊�" align="center" prop="collectData">
+               </el-table-column>
+               <el-table-column label="缁撴灉" width="60" align="center" prop="results">
+               </el-table-column>
+
+             </el-table>
+           </el-col>
+         </el-tab-pane>
+       </el-tabs>
+     </el-col>
+   </el-row>
+  </div>
+</template>
+<script>
+import {listWorkReport} from "@/api/main/om/workReport/workReport";
+import {listStationConf,getIpv4} from "@/api/main/sc/stationConf";
+import {
+  clearWorkpieceRelease,
+  fistSetpNumber, initializedData,
+  listFormulaChild,
+  noPageListFormulaChild,
+  releaseCheck, unfinishedProcess,
+  updateResults,
+  updateTighteningFormula,
+  workpieceRelease, writeRepairInformationIntoPlc
+} from "@/api/main/bs/formulaChild/formulaChild";
+import MySerialPort from "@/utils/MySerialPort";
+import USBDevice from "@/utils/usb.json";
+import {
+  bindYzSfcFlag,
+  checkCarCode, checkYzSfcCode,
+  findBytrolleyYardGetOne,
+  listProductionOrde, listProductionOrdeLoopLine, mozuReceivingWorkOrders,
+  receivingWorkOrders,
+  trolleyYardBinDing
+} from "@/api/main/om/productionOrde/productionOrde";
+import {addPassingStationCollection} from "@/api/main/da/passingStationCollection/passingStationCollection";
+import {
+  addBasicParameters,
+  addParamCollection,
+  addTighteningParameters,
+  saveCampaignTimeParameters,
+  replaceAssemblyCode, checkRecordDataDone,
+} from "@/api/main/da/paramCollection/paramCollection";
+import {addFormula} from "@/api/main/bs/formula/formula";
+import QRCode from "qrcodejs2";
+import VueQr from "vue-qr";
+import {listProcesses, listProcessesNoPage} from "@/api/main/bs/processes/processes";
+
+export default {
+  components: {
+    VueQr
+  },
+  name: "stationTerminal",
+  data() {
+    return {
+      engravingStatus: '',
+      engravingOptions: [{
+        value: '1',
+        label: '鏄�'
+      }, {
+        value: '2',
+        label: '鍚�'
+      }],
+      processesCodeOptions:[], // 宸ュ簭缂栫爜
+      shellBarcode: '', // 宸ヤ欢鏉$爜
+      text: 'P9900200461#T2408170000004#V993983#SSW001.001#HHW001.001#NMCU',
+      materialCode: '', // 鐗╂枡缂栫爜
+      carCode: '',
+      showInput: false,
+      onLineBinDing: false,
+
+      serialPortContent: '',
+      // 鏌ヨ鍙傛暟
+      formulaChildParams: {
+        pageNum: 1,
+        pageSize: 10,
+        productCode: null,
+        processesCode: null,
+      },
+      // 閰嶆柟閰嶇疆瀛愪俊鎭〃鏍兼暟鎹�
+      formulaChildList: [],
+      ipAddress: '',
+      imgSrc: '',
+      headContent: {
+        processesCode: '',
+        processesName: '',
+        sfcCode: '',
+        yzSfcCode: '',
+        cardCode: '',
+      },
+      workpieceInformation: {
+        workOrderNo: null,
+        productCode: null,
+        productModel: null,
+        productName: null,
+        inboundTime: null,
+        materialCode: null,
+        planQty: null,
+      },
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        sfcCode: null,
+        productNum: '',
+        trolleyYard: '',
+      },
+      // 鏌ヨ鍙傛暟
+      StationConfQueryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        ipAddress: null,
+      },
+      cakeLamp: {
+        plcState: 1, //plc
+        scannerState: 1, //鎵爜鏋�
+        InPlace: 0, //宸ヤ欢鍒颁綅
+        scanFinish: 0,
+        startWork: 0,
+        release: 0 //鍏佽鏀捐
+      },
+      content: '',
+      // url: "ws://10.103.214.26:8080/websocket/message/",
+      url: "ws://192.168.20.250:8080/websocket/message/",
+
+      passingStationForm: {},
+      originalArray: [],
+      orderFlag: true,
+      printFlag: false,
+      activeName: 'first',
+      printMaterialCode : '',
+
+    }
+  },
+  mounted() {
+    this.setFocus()
+  },
+  beforeDestroy() {
+    this.exit();
+  },
+  created() {
+    // this.initStation();
+    this.initProcesses()
+  },
+  computed: {
+    isDisable() {
+      return this.btnType === "danger";
+    },
+  },
+  methods: {
+    repairClick(){
+      if(this.headContent.processesCode !== '' && this.engravingStatus !== '' && this.headContent.sfcCode !== ''){
+        writeRepairInformationIntoPlc({
+            processesCode: this.headContent.processesCode,
+            engravingStatus: this.engravingStatus,
+            sfcCode: this.headContent.sfcCode,
+            workOrderNo: this.workpieceInformation.workOrderNo,
+          }).then(response => {});
+      }else {
+        this.$message.error("鍩虹鍙傛暟缂哄け锛岃妫�鏌ュ伐浣嶇紪鍙峰拰鎵撳埢鐘舵�佹槸鍚﹀凡閫夋嫨锛�");
+      }
+    },
+    initProcesses(){
+      listProcessesNoPage(this.queryParams).then(response => {
+        this.processesCodeOptions = response.rows;
+      });
+    },
+    setFocus(){
+      this.$nextTick(()=>{
+        this.$refs.inputData.focus()
+      })
+    },
+    changeMenu(tab, event) {
+      console.log(tab, event);
+    },
+    handleEnter() {
+      if(this.headContent.processesCode !== '' && this.engravingStatus !== ''){
+        this.queryParams.trolleyYard = this.shellBarcode
+        listProductionOrde(this.queryParams).then(response => {
+          let rowsData = response.rows[0];
+          if(rowsData){
+            console.log('杩涘叆鍒濆鍖栧姞杞絣ist鏂规硶'+response.rows[0])
+            this.headContent.sfcCode = rowsData.productNum;
+            this.workpieceInformation.productCode = rowsData.productCode;
+            this.workpieceInformation.workOrderNo = rowsData.workOrderNo;
+            this.workpieceInformation.planQty = rowsData.planQty;
+          }else {
+            this.$message.error('绯荤粺娌℃湁姝ゅ伐鍗曪紝璇烽噸鏂版壂鐮侊紒');
+          }
+        });
+      }else {
+        this.$message.error("鍩虹鍙傛暟缂哄け锛岃妫�鏌ュ伐浣嶇紪鍙峰拰鎵撳埢鐘舵�佹槸鍚﹀凡閫夋嫨锛�");
+      }
+    },
+
+
+    serialLink() {
+      this.open1 = true
+    },
+    serialPortMethod(value){
+      let formulaChildParams = {
+        scanBarcode: value,
+        sfcBarcode: this.headContent.sfcCode,
+        workOrderNo: this.workpieceInformation.workOrderNo,
+        productCode: this.workpieceInformation.productCode,
+        locationCode: this.headContent.processesCode,
+        collectionTime: new Date()
+      }
+      updateResults(formulaChildParams).then(response => {
+        console.log(response)
+        if(response.msg === "3"){
+          this.cakeLamp.release= 1 //鍏佽鏀捐
+        }else if(response.msg === "2"){
+          this.$message.error('鎵爜閲嶅璇烽噸鏂版壂鐮侊紒');
+        }
+        this.getListFormulaChild()
+      });
+    },
+    rowStyle({ row }) {
+      if (row.results === 'OK') {
+        return 'background-color: PaleGreen';
+      } else if (row.results === 'NG') {
+        return 'background-color: LightSalmon';
+      }
+      return '';
+    },
+    /** 鏌ヨ閰嶆柟閰嶇疆瀛愪俊鎭垪琛� */
+    getListFormulaChild() {
+      // this.formulaChildList = []
+      this.formulaChildParams.productCode = this.workpieceInformation.productCode
+      this.formulaChildParams.processesCode = this.headContent.processesCode
+      console.log(this.formulaChildParams)
+      noPageListFormulaChild(this.formulaChildParams).then(response => {
+        this.formulaChildList = response.rows;
+        if (this.formulaChildList.length >0){
+          let pos = 0
+          const tempArr = this.formulaChildList.filter(x=> 'OK' === x.results)
+          if (tempArr.length>0){
+            pos = tempArr.length
+            this.$nextTick(() => {
+              let temp33 = document.getElementsByClassName('el-table__row')
+              console.log('temp33',temp33)
+              console.log('len',temp33.item(pos))
+              if (temp33.length > 0){
+                console.log('1111111111111111')
+                let arr = temp33[pos-1]
+                console.log('srr',arr)
+                arr.scrollIntoView({ block: 'center' })
+              }
+            })
+          }
+
+        }
+
+      });
+    },
+    endClear(){
+      this.cakeLamp.InPlace= 0 //宸ヤ欢鍒颁綅
+      this.cakeLamp.scanFinish= 0
+      this.cakeLamp.startWork= 0
+      this.cakeLamp.release= 0 //鍏佽鏀捐
+
+      this.formulaChildList = []
+      this.workpieceInformation.productCode = null;
+      this.workpieceInformation.workOrderNo = null;
+      this.workpieceInformation.productModel = null;
+      this.workpieceInformation.productName = null;
+      this.workpieceInformation.inboundTime = null;
+      this.headContent.sfcCode = '';
+      this.headContent.yzSfcCode = '';
+      this.headContent.cardCode = '';
+      this.workpieceInformation.planQty = ''
+      this.headContent.processesCode = ''
+      this.engravingStatus = ''
+      this.headContent.sfcCode = ''
+      this.workpieceInformation.workOrderNo = ''
+      this.shellBarcode = ''
+    },
+    clearClick(){
+      this.endClear()
+    },
+    /** 鏌ヨ宸ュ崟鍒楄〃 */
+    async getList() {
+      await listProductionOrde(this.queryParams).then(response => {
+        console.log('杩涘叆鍒濆鍖栧姞杞絣ist鏂规硶')
+        let rowsData = response.rows[0];
+        if(rowsData){
+          console.log('杩涘叆鍒濆鍖栧姞杞絣ist鏂规硶'+response.rows[0])
+          this.workpieceInformation.workOrderNo = rowsData.workOrderNo;
+          this.workpieceInformation.productCode = rowsData.productCode;
+          this.workpieceInformation.materialCode = rowsData.materialCode;
+          this.workpieceInformation.planQty = rowsData.planQty;
+          this.headContent.cardCode = rowsData.trolleyYard;
+          this.printMaterialCode = rowsData.productCode
+        }else {
+          this.$message.error('绯荤粺娌℃湁姝ゅ伐鍗曪紝璇烽噸鏂版壂鐮侊紒');
+        }
+      });
+    },
+
+    initializedData(){
+      const param = {
+        locationCode: this.headContent.processesCode,
+      }
+      initializedData(param).then(response => {
+        if(response.msg !== ''){
+          if(this.headContent.processesCode === 'OP165'){
+            this.headContent.sfcCode = response.msg.substring(13,26)
+            this.queryParams.productNum = response.msg.substring(13,26);
+          }else {
+            this.headContent.sfcCode = response.msg;
+            this.queryParams.productNum = response.msg;
+          }
+          this.getList()
+          this.cakeLamp.scanFinish = 1
+          this.cakeLamp.startWork = 1
+          this.cakeLamp.InPlace = 1
+          // this.text = 'P9900200461#T'+this.headContent.sfcCode+'#V993983#SSW001.001#HHW001.001#NMCU'
+        }
+      });
+    },
+
+    getCurrentTime() {
+      const now = new Date();
+      const year = now.getFullYear();
+      const month = this.padTimeUnit(now.getMonth() + 1); // 鏈堜唤鏄粠0寮�濮嬬殑
+      const day = this.padTimeUnit(now.getDate());
+      const hours = this.padTimeUnit(now.getHours());
+      const minutes = this.padTimeUnit(now.getMinutes());
+      const seconds = this.padTimeUnit(now.getSeconds());
+      return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
+    },
+    padTimeUnit(value) {
+      return value.toString().padStart(2, '0');
+    },
+
+    exit() {
+      if (this.ws) {
+        this.ws.close();
+        this.ws = null;
+      }
+    },
+    test1(){
+      document.getElementById('canvasWrapper1').innerHTML = '';
+      this.$nextTick(() => {
+          let qrCode = new QRCode('canvasWrapper1',{
+            width: 83,
+            height: 83,
+            text: 'P9900200461#T'+this.headContent.sfcCode+'#V993983#SSW001.001#HHW001.001#NMCU',
+            colorDark: '#000',
+            colorLight: '#fff'
+          })
+        }
+      )
+    },
+    test2(){
+      document.getElementById('canvasWrapper2').innerHTML = '';
+      this.$nextTick(() => {
+          let qrCode = new QRCode('canvasWrapper2',{
+            width: 83,
+            height: 83,
+            text: 'P9900200461#T'+this.headContent.sfcCode+'#V993983#SSW001.001#HHW001.001#NMCU',
+            colorDark: '#000',
+            colorLight: '#fff'
+          })
+        }
+      )
+    },
+    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
+        this.initializedData()
+        if(this.headContent.processesCode === 'OP165'){
+          this.printFlag = true
+        }
+
+        if(this.headContent.processesCode === 'OP250'){
+          this.printFlag = true
+        }
+
+      });
+      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) {
+        self.$message('websocket杩炴帴鎴愬姛锛�');
+      };
+
+
+      //socket浠庡悗鍙板悜鍓嶅彴鎺ㄩ�佹暟鎹�
+      this.ws.onmessage = function (event) {
+        if (event.data === "print") {
+          document.getElementById('print').click();
+          unfinishedProcess({processesCode: self.headContent.processesCode,recordDataDone: 21}).then(response => {});
+        }else if (event.data === "IN") {
+          self.cakeLamp.InPlace = 1;
+        }else if(event.data === "twoHundredAndThirtyEND"){
+          self.endClear()
+        } else if (event.data === "OUT") {
+          self.cakeLamp.release = 1;
+        } else if (event.data === "END") {
+
+          const formulaChildIndex = self.formulaChildList.length-1
+
+          const orderParam = {
+            productNum: self.headContent.sfcCode,
+          }
+
+          if(self.headContent.sfcCode=== ''||self.headContent.sfcCode=== null){
+            self.$message('鎬绘垚鐮佷负绌猴紝璇锋壂鐮侊紒')
+            unfinishedProcess({processesCode: self.headContent.processesCode,recordDataDone: 26}).then(response => {});
+            return;
+          }
+
+          if(self.formulaChildList[formulaChildIndex].results !== 'OK'){
+            self.$message('鏈仛瀹屽伐搴忕姝㈡斁琛�');
+            unfinishedProcess({processesCode: self.headContent.processesCode,recordDataDone: 25}).then(response => {});
+            return;
+          }
+
+
+          const param = {
+            workOrderNo: self.workpieceInformation.workOrderNo,
+            productCode: self.workpieceInformation.productCode,
+            locationCode: self.headContent.processesCode,
+            productBarcode: self.headContent.sfcCode,
+            inboundTime: self.workpieceInformation.inboundTime,
+            formulaChildEntity: self.formulaChildList[formulaChildIndex]
+          }
+
+          console.log("杩涘叆鏈�缁堟柟娉�")
+          self.endSaveData(param)
+
+        } else if(event.data.includes("productNum")){//浜у搧搴忓垪鍙�
+          let productNum = event.data.split(',')[1];
+          if(self.headContent.processesCode === 'OP165'){
+            console.log("杩涘幓鎴彇鎬绘垚鐮佹柟娉�165宸ョ珯鍘熷鍊兼槸"+productNum+"鎴彇涔嬪悗鐨勬槸"+productNum.substring(13,26))
+            self.headContent.sfcCode = productNum.substring(13,26)
+            console.log("self.headContent.sfcCode"+self.headContent.sfcCode)
+          }else {
+            self.headContent.sfcCode = productNum;
+          }
+          self.queryParams.productNum = productNum;
+          self.getList()
+          self.cakeLamp.scanFinish = 1
+          self.cakeLamp.startWork = 1
+          self.cakeLamp.InPlace = 1
+
+          const param = {
+            processesCode: self.headContent.processesCode,
+            productCode: self.workpieceInformation.productCode
+          }
+          fistSetpNumber(param).then(response => {
+            console.log("fistSetpNumber------"+response.msg)
+          });
+
+          //鎵撳嵃
+          if(self.headContent.processesCode === "OP165"){
+            // self.test1()
+            // self.test2()
+            self.text = 'P9900200461#T'+self.headContent.sfcCode+'#V993983#SSW002.005#HHW001.001#NMCU#'
+          }
+
+        }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;
+            }
+          }
+          if(formulaChilds === ""){
+            self.$message.error('鏈伐浣嶅凡宸ヤ綔瀹屾垚锛�');
+            return;
+          }
+          const param = {
+            id: formulaChilds.id,
+            tightenTheArray: event.data,
+            paramCode: formulaChilds.paramCode,
+            workOrderNo: self.workpieceInformation.workOrderNo,
+            productCode: self.workpieceInformation.productCode,
+            locationCode: self.headContent.processesCode,
+            productBarcode: self.headContent.sfcCode,
+            spareField1: formulaChilds.spareField1,
+            spareField2: formulaChilds.spareField2,
+            spareField3: formulaChilds.spareField3,
+            spareField4: formulaChilds.spareField4,
+            stepSort: formulaChilds.stepSort,
+            ngTimes: formulaChilds.ngTimes,
+          }
+          if(formulaChilds.paramCode === null||formulaChilds.paramCode ===''){
+            self.$message('鏈壘鍒板弬鏁扮爜锛岃妫�鏌ュ弬鏁扮爜鏄惁姝g‘');
+            return;
+          }
+          self.formulaChildParams.artificialNgFlag = null
+          console.log("self.formulaChildParams.artificialNgFlag"+self.formulaChildParams.artificialNgFlag)
+          if(self.headContent.sfcCode!==null||self.headContent.sfcCode!==''){
+            updateTighteningFormula(param).then(response => {
+              //addTighteningParameters(param).then(response => {});
+              self.getListFormulaChild()
+            }).catch(error =>{
+              self.getListFormulaChild()
+            });
+          }
+        }
+      };
+    },
+
+    endSaveData(param){
+      saveCampaignTimeParameters(param).then(response => {
+      this.cakeLamp.release = 1;
+      this.endClear()
+      workpieceRelease(param).then(response => {});
+      });
+    },
+  }
+}
+
+</script>
+<style scoped>
+.div1, .div2 {
+  flex: 1; /* 涓や釜div骞冲垎瀹瑰櫒瀹藉害 */
+}
+.span{
+  font-family: 'Microsoft YaHei', sans-serif;
+}
+.div2{
+  margin-left: 30px;
+}
+.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