admin
昨天 ac3856a47fe649cff0b7c6d0a7edd1d8b83f9253
返修
已修改4个文件
已添加1个文件
751 ■■■■■ 文件已修改
jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/controller/BsFormulaChildInfoController.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/domain/BsFormulaChildInfo.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/resources/mapper/om/productionOrde/OmProductionOrdeInfoMapper.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/api/main/bs/formulaChild/formulaChild.js 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/views/main/kb/repairOnline/index.vue 710 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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());
    }
    /**
     * æœªåšå®Œå·¥åºå›žå¤plc信号
     */
    @GetMapping("/unfinishedProcess")
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;
    }
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
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({
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="请扫描壳体编码"></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('进入初始化加载list方法'+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('进入初始化加载list方法')
        let rowsData = response.rows[0];
        if(rowsData){
          console.log('进入初始化加载list方法'+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('该工位没有配置IP,请联系管理员配置IP');
          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('未找到参数码,请检查参数码是否正确');
            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>