| | |
| | | <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="10"> |
| | | <el-col :span="24"> |
| | | <el-table :cell-style="rowStyle" :data="formulaChildList"> |
| | | <el-table-column label="排序" width="60" align="center" prop="stepSort"> |
| | | <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="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-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-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> |
| | |
| | | <script> |
| | | import {listWorkReport} from "@/api/main/om/workReport/workReport"; |
| | | import {listStationConf,getIpv4} from "@/api/main/sc/stationConf"; |
| | | import {listFormulaChild, releaseCheck, updateResults, workpieceRelease} from "@/api/main/bs/formulaChild/formulaChild"; |
| | | import { |
| | | listFormulaChild, |
| | | releaseCheck, |
| | | updateResults, |
| | | updateTighteningFormula, |
| | | workpieceRelease |
| | | } 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 { |
| | | addBasicParameters, |
| | | addParamCollection, |
| | | addTighteningParameters |
| | | addTighteningParameters, |
| | | saveCampaignTimeParameters |
| | | } from "@/api/main/da/paramCollection/paramCollection"; |
| | | |
| | | export default { |
| | |
| | | }, |
| | | content: '', |
| | | activeName: 'first', |
| | | url: "ws://192.168.11.76:8080/websocket/message/", |
| | | url: "ws://192.168.10.21:8080/websocket/message/", |
| | | message: "", |
| | | text_content: "", |
| | | ws: null, |
| | |
| | | // }); |
| | | }, |
| | | serialPortMethod(value){ |
| | | // let formulaChilds = ""; |
| | | // this.formulaChildList.forEach((formulaChild) => { |
| | | // let operationType = formulaChild.operationType; |
| | | // let results = formulaChild.results; |
| | | // let materialCode = formulaChild.materialCode; |
| | | // if(operationType === '2' && value.includes(materialCode) && (results === "" || results === null || results === 'NG')){ |
| | | // formulaChilds = formulaChild; |
| | | // return; // 使用return代替break |
| | | // } |
| | | // }); |
| | | // console.log(formulaChilds) |
| | | let formulaChildParams = { |
| | | scanBarcode: value, |
| | | sfcBarcode: this.headContent.sfcCode, |
| | |
| | | }, |
| | | /** 查询配方配置子信息列表 */ |
| | | getListFormulaChild() { |
| | | // this.formulaChildList = [] |
| | | this.formulaChildParams.productCode = this.workpieceInformation.productCode |
| | | this.formulaChildParams.processesCode = this.headContent.processesCode |
| | | listFormulaChild(this.formulaChildParams).then(response => { |
| | | this.formulaChildList = response.rows; |
| | | }); |
| | | }, |
| | | |
| | | changeMenu(tab, event) { |
| | | console.log(tab, event); |
| | | }, |
| | |
| | | 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 => { |
| | | }); |
| | | addPassingStationCollection(this.passingStationForm).then(response => {}); |
| | | addBasicParameters(this.passingStationForm).then(response => {}); |
| | | }, |
| | | allowRelease(){ |
| | | clearInterval(this.timer); |
| | | this.$message('保存节拍为'+this.workpieceInformation.beat+'秒'); |
| | | }, |
| | | /** 查询工位终端配置列表 */ |
| | | // async getStationConfList() { |
| | | // await getIpv4().then(response => { |
| | | // this.StationConfQueryParams.ipAddress = response.msg |
| | | // console.log('查询到本工位IP为'+this.StationConfQueryParams.ipAddress) |
| | | // }); |
| | | // 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 |
| | | // console.log('设置工位编码'+this.headContent.processesCode) |
| | | // |
| | | // }); |
| | | // }, |
| | | // connectWebsocket() { |
| | | // 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.text_content = self.text_content + "已经打开连接!" + "\n"; |
| | | // this.$message('websocket连接成功!'); |
| | | // }; |
| | | // this.ws.onmessage = function (event) { |
| | | // self.text_content = event.data + "\n"; |
| | | // console.log(event.data) |
| | | // if(event.data === "IN"){ |
| | | // self.cakeLamp.InPlace = "1" |
| | | // }else if(event.data === "OUT"){ |
| | | // self.cakeLamp.outRsSign = "1" |
| | | // } |
| | | // }; |
| | | // }, |
| | | exit() { |
| | | if (this.ws) { |
| | | this.ws.close(); |
| | |
| | | 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); |
| | |
| | | self.cakeLamp.InPlace = 0; |
| | | } else if (event.data === "OUT") { |
| | | self.cakeLamp.release = 1; |
| | | setTimeout(() => { |
| | | self.cakeLamp.InPlace = 0; |
| | | self.cakeLamp.release = 0; |
| | | self.cakeLamp.startWork = 0; |
| | | self.cakeLamp.scanFinish = 0; |
| | | self.Release(); |
| | | }, DELAY_TIME); |
| | | } else if (event.data === "TIGHTEN") { |
| | | this.formulaChildList = []; |
| | | self.getListFormulaChild(); |
| | | } 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 => {}); |
| | | |
| | | } else if (event.data.includes("[")) { |
| | | // 这里是 default 分支,如果需要执行某些操作,可以放在这里 |
| | | // console.log('接收到数据:', event.data) |
| | | // const arr = JSON.parse(event.data) |
| | | // console.log(arr) |
| | | 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 => {}); |
| | | updateTighteningFormula(param).then(response => { |
| | | self.getListFormulaChild() |
| | | }).catch(error =>{ |
| | | self.getListFormulaChild() |
| | | }); |
| | | } |
| | | // switch (event.data) { |
| | | // case "IN": |
| | | // self.cakeLamp.InPlace = 1; |
| | | // break; |
| | | // case "IN0": |
| | | // self.cakeLamp.InPlace = 0; |
| | | // break; |
| | | // case "OUT": |
| | | // self.cakeLamp.release = 1; |
| | | // setTimeout(() => { |
| | | // self.cakeLamp.InPlace = 0; |
| | | // self.cakeLamp.release = 0; |
| | | // self.cakeLamp.startWork = 0; |
| | | // self.cakeLamp.scanFinish = 0; |
| | | // self.Release(); |
| | | // }, DELAY_TIME); |
| | | // break; |
| | | // case "TIGHTEN": |
| | | // this.formulaChildList = []; |
| | | // self.getListFormulaChild(); |
| | | // break; |
| | | // default: |
| | | // break; |
| | | // } |
| | | }; |
| | | }, |
| | | |
| | |
| | | if (this.form1.isShowHistory) this.form1.desc = this.readLi().join(""); |
| | | else { |
| | | const scanValue = this.myserialport.hex2atostr(value).replace(/[\r\n]/g, ''); |
| | | // if (value.length > 0) |
| | | // this.form1.desc = this.myserialport.hex2atostr(value); |
| | | this.$message('扫码完成'+this.content); |
| | | if (/T/.test(scanValue)) { |
| | | console.log('字符串包含字母"T"'); |
| | | this.serialPortMethod(scanValue) |
| | | } else { |
| | | console.log('字符串不包含字母"T"'); |
| | | this.headContent.sfcCode = scanValue; |
| | | this.queryParams.productNum = scanValue; |
| | | this.getList() |
| | | // this.getListFormulaChild() |
| | | this.cakeLamp.scanFinish = 1 |
| | | this.cakeLamp.startWork = 1 |
| | | } |
| | | console.log("串口收到数据-------------------"+scanValue) |
| | | // if(this.cakeLamp.InPlace=== 1){ |
| | | if(this.headContent.sfcCode !== ''){ |
| | | console.log(scanValue) |
| | | this.serialPortMethod(scanValue) |
| | | }else { |
| | | this.headContent.sfcCode = scanValue; |
| | | this.queryParams.productNum = scanValue; |
| | | this.getList() |
| | | // this.getListFormulaChild() |
| | | this.cakeLamp.scanFinish = 1 |
| | | this.cakeLamp.startWork = 1 |
| | | } |
| | | // }else { |
| | | // this.$message('工件未到位禁止扫码!'); |
| | | // } |
| | | } |
| | | }, |
| | | clearHistory() { |
| | |
| | | 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("串口连接失败!请检查串口是否已被占用"); |
| | | } |
| | | if (this.myserialport.state.isOpen) { |
| | | this.$message.success("串口连接成功"); |
| | | } |
| | | }, |
| | | //连接 |
| | | async connectBtn() { |
| | | if (this.btnType === "primary") { |
| | |
| | | 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("串口连接失败!请检查串口是否已被占用"); |
| | | } |