From 8cfe20288690f2ba46c804f41f39e8aa48c2dea0 Mon Sep 17 00:00:00 2001 From: admin <15939171744@163.com> Date: 星期六, 15 六月 2024 09:08:30 +0800 Subject: [PATCH] 上传逻辑大版本更新 --- jcdm-ui/src/views/main/kb/stationTerminal/index.vue | 940 +++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 785 insertions(+), 155 deletions(-) diff --git a/jcdm-ui/src/views/main/kb/stationTerminal/index.vue b/jcdm-ui/src/views/main/kb/stationTerminal/index.vue index 81c68e6..ab5af44 100644 --- a/jcdm-ui/src/views/main/kb/stationTerminal/index.vue +++ b/jcdm-ui/src/views/main/kb/stationTerminal/index.vue @@ -1,36 +1,38 @@ <template> <div class="app-container"> <el-row :gutter="5"> - <el-col :span="6"> + <el-col :span="7"> <el-card shadow="never"> <span class="head-font">宸ヤ綅缂栧彿 : {{headContent.processesCode}}</span> </el-card> </el-col> - <el-col :span="6"> + <el-col :span="7"> <el-card shadow="never"> <span class="head-font">宸ヤ綅鍚嶇О : {{headContent.processesName}}</span> </el-card> </el-col> - <el-col :span="12"> + <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 @click="clearClick" style="float: right" type="danger">娓呴櫎</el-button> + <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="6" > + <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" :label-style="{'font-size': '15px'}" border :content-style="{'min-width': '150px'}"> + <el-descriptions :column="1" border :content-style="{'min-width': '140px'}"> +<!-- <el-descriptions :column="1" :label-style="{'font-size': '15px'}" border :content-style="{'min-width': '150px'}">--> <el-descriptions-item label="宸ュ崟缂栧彿"> - <span>{{workpieceInformation.workOrderCode}}</span> + <span>{{workpieceInformation.workOrderNo}}</span> </el-descriptions-item> <el-descriptions-item label="浜у搧缂栧彿"> <span>{{workpieceInformation.productCode}}</span> @@ -41,9 +43,9 @@ <el-descriptions-item label="浜у搧鍚嶇О"> <span>{{workpieceInformation.productName}}</span> </el-descriptions-item> - <el-descriptions-item label="鑺傛媿"> - <span>{{workpieceInformation.beat}}</span> - </el-descriptions-item> +<!-- <el-descriptions-item label="鑺傛媿">--> +<!-- <span>{{workpieceInformation.beat}}</span>--> +<!-- </el-descriptions-item>--> </el-descriptions> <el-divider></el-divider> <el-row> @@ -83,76 +85,258 @@ </el-col> </el-row> - <el-row style="margin-top: 20px"> - <el-col :span="12"> - <el-input v-model="serialPortContent" style="width: 150px;" placeholder="璇疯緭鍏ュ唴瀹�"></el-input> - - </el-col> - <el-col :span="12"> - <el-button @click="serialPortMethod" type="primary">涓插彛鑾峰彇鏁版嵁</el-button> - - </el-col> + <el-row v-show="showInput" style="margin-top: 20px"> + <el-col></el-col> + <span style="width: 130px;" class="head-font">棰勮鎬绘垚鍙� : {{headContent.yzSfcCode}}</span> </el-row> - <el-row style="margin-top: 20px"> - <el-button @click="Release" type="primary">鏀捐</el-button> +<!-- <el-row v-show="showInput" style="margin-top: 20px">--> +<!-- <el-button @click="bindYzSfc" type="primary">缁戝畾</el-button>--> +<!-- </el-row>--> + + <el-row v-show="onLineBinDing" style="margin-top: 20px"> + <el-col></el-col> + <span style="width: 130px;" class="head-font">灏忚溅鐮� : {{headContent.cardCode}}</span> </el-row> +<!-- <el-row v-show="onLineBinDing" style="margin-top: 20px">--> +<!-- <el-button @click="bindcardCode" type="primary">缁戝畾</el-button>--> +<!-- </el-row>--> </el-card> </el-col> - <el-col :span="18"> + <el-col :span="17"> <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="8"> - <el-table :cell-style="rowStyle" :data="formulaChildList"> - <el-table-column label="鎺掑簭" width="60" align="center" prop="stepSort"> + <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="鎷х揣姝ュ彿" align="center" prop="stepSort"> </el-table-column> - <el-table-column label="鎿嶄綔鍐呭" :show-overflow-tooltip='true' align="center" prop="operationSteps"> +<!-- <el-table-column label="鎿嶄綔鍐呭" :show-overflow-tooltip='true' align="center" prop="operationSteps">--> + <el-table-column label="鎿嶄綔鍐呭" 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="16"> - <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> + <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, releaseCheck, updateResults, workpieceRelease} from "@/api/main/bs/formulaChild/formulaChild"; +import { + clearWorkpieceRelease, + fistSetpNumber, + listFormulaChild, + noPageListFormulaChild, + releaseCheck, + updateResults, + updateTighteningFormula, + workpieceRelease +} from "@/api/main/bs/formulaChild/formulaChild"; +import MySerialPort from "@/utils/MySerialPort"; +import USBDevice from "@/utils/usb.json"; +import { + bindYzSfcFlag, + checkCarCode, checkYzSfcCode, + findBytrolleyYardGetOne, + listProductionOrde, + 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"; export default { name: "stationTerminal", data() { return { + carCode: '', + showInput: false, + onLineBinDing: false, + serialPortContent: '', // 鏌ヨ鍙傛暟 formulaChildParams: { @@ -168,10 +352,12 @@ headContent: { processesCode: 'OP1010', processesName: '璐存爣鏈�-璐寸爜', - sfcCode: '1000000000000001', + sfcCode: '', + yzSfcCode: '', + cardCode: '', }, workpieceInformation: { - workOrderCode: null, + workOrderNo: null, productCode: null, productModel: null, productName: null, @@ -199,11 +385,36 @@ }, content: '', activeName: 'first', - url: "ws://192.168.10.252:8080/websocket/message/", + url: "ws://192.168.2.76:8080/websocket/message/", message: "", text_content: "", ws: null, - inputValue: '9' + 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: [], + yzSfcFlag: 1, } }, beforeDestroy() { @@ -217,32 +428,84 @@ // }, 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: { - Release(){ - let formulaChildParams = { - productCode: this.workpieceInformation.productCode, - processesCode: this.headContent.processesCode + bindcardCode(){ + this.$message('缁戝畾鎴愬姛锛�'); + let param = { + productNum: this.headContent.sfcCode, + trolleyYard: this.headContent.cardCode, } - releaseCheck(formulaChildParams).then(response => { - if(response.data === 0){ - //鏀瑰彉鐘舵�� - workpieceRelease(formulaChildParams).then(response => { - }); - this.$message('鏀捐鎴愬姛锛�'); - this.formulaChildList = [] - this.getListFormulaChild() - }else { - this.$message('姝ラ鏈畬鎴愪笉璁告斁琛岋紒'); - } + trolleyYardBinDing(param).then(response => { }); + }, - serialPortMethod(){ + 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 + } + const orderParam = { + productNum: this.headContent.sfcCode, + } + replaceAssemblyCode(param).then(response => { + this.$message('缁戝畾鎴愬姛锛�'); + bindYzSfcFlag(orderParam).then(response => { + this.yzSfcFlag = 1 + }); + }); + } + }, + Release(){ + // this.$message('portsList锛�'+this.portsList.length); + if(this.btnType === "danger"){ + this.$message('杩炴帴浜嗭紒'); + + }else { + this.$message('mei杩炴帴浜嗭紒'); + + } + }, + serialPortMethod(value){ let formulaChildParams = { - materialCode: this.serialPortContent + 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 //鍏佽鏀捐 + } this.getListFormulaChild() }); }, @@ -256,18 +519,63 @@ }, /** 鏌ヨ閰嶆柟閰嶇疆瀛愪俊鎭垪琛� */ getListFormulaChild() { + // this.formulaChildList = [] this.formulaChildParams.productCode = this.workpieceInformation.productCode this.formulaChildParams.processesCode = this.headContent.processesCode - listFormulaChild(this.formulaChildParams).then(response => { + 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.headContent.sfcCode = ''; + this.headContent.yzSfcCode = ''; + this.headContent.cardCode = ''; }, changeMenu(tab, event) { console.log(tab, event); }, clearClick(){ - this.$message('杩欐槸涓�鏉℃竻闄ゆ秷鎭彁绀�'); - this.headContent.sfcCode = null + const param = { + workOrderNo: this.workpieceInformation.workOrderNo, + productCode: this.workpieceInformation.productCode, + locationCode: this.headContent.processesCode, + productBarcode: this.headContent.sfcCode, + } + this.endClear() + clearWorkpieceRelease(param).then(response => {}); + this.headContent.sfcCode = '' + this.$message('娓呮鎴愬姛锛�'); }, scanCompleted(){ this.$message('鎵爜瀹屾垚'+this.content); @@ -279,63 +587,42 @@ this.cakeLamp.startWork = 1 }, - /** 鏌ヨ鎶ュ伐璁板綍 琛ㄥ垪琛� */ + /** 鏌ヨ宸ュ崟鍒楄〃 */ async getList() { - await listWorkReport(this.queryParams).then(response => { + await listProductionOrde(this.queryParams).then(response => { let rowsData = response.rows[0]; console.log(rowsData) - this.workpieceInformation.workOrderCode = rowsData.workOrderCode; + this.workpieceInformation.workOrderNo = rowsData.workOrderNo; this.workpieceInformation.productCode = rowsData.productCode; this.workpieceInformation.productModel = rowsData.productModel; this.workpieceInformation.productName = rowsData.productName; - this.timer = setInterval(() => { - this.workpieceInformation.beat++; - }, 1000); + // this.timer = setInterval(() => { + // this.workpieceInformation.beat++; + // }, 1000); }); this.getListFormulaChild() + this.addOverStationCollection() + }, + addBaseData(){ + addBasicParameters(this.passingStationForm).then(response => {}); }, - allowRelease(){ - clearInterval(this.timer); - this.$message('淇濆瓨鑺傛媿涓�'+this.workpieceInformation.beat+'绉�'); + + /** 鍏ョ珯澧炲姞杩囩珯閲囬泦璁板綍 **/ + 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 => {}); }, - /** 鏌ヨ宸ヤ綅缁堢閰嶇疆鍒楄〃 */ - // 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('璇ュ伐浣嶆病鏈夐厤缃甀P锛岃鑱旂郴绠$悊鍛橀厤缃甀P'); - // 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(); @@ -349,54 +636,397 @@ alert("鏈繛鎺ュ埌鏈嶅姟鍣�"); } }, - async initStation(){ + + initStation: async function () { await getIpv4().then(response => { this.StationConfQueryParams.ipAddress = response.msg - console.log('鏌ヨ鍒版湰宸ヤ綅IP涓�'+this.StationConfQueryParams.ipAddress) + console.log('鏌ヨ鍒版湰宸ヤ綅IP涓�' + this.StationConfQueryParams.ipAddress) }); await listStationConf(this.StationConfQueryParams).then(response => { let rows = response.rows[0] - if(response.rows.length===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) + if(this.headContent.processesCode === 'OP240'){ + this.onLineBinDing = true + } + if(this.headContent.processesCode === 'OP260'){ + this.showInput = true + } + + console.log('璁剧疆宸ヤ綅缂栫爜' + this.headContent.processesCode) }); - console.log('websocket杩炴帴宸ヤ綅涓�'+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) { - 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.release = 1 - setTimeout(() => { - this.resetting() - }, 2000); // 寤舵椂2绉掕Е鍙� - }else if(event.data === 'TIGHTEN'){ - console.log('寮�濮嬫嫥绱�') - this.formulaChildList = [] - self.getListFormulaChild() + if (event.data === "IN") { + self.cakeLamp.InPlace = 1; + console.log(self.headContent.processesCode); + const param = { + processesCode: self.headContent.processesCode, + } + fistSetpNumber(param).then(response => {}); + } else if (event.data === "IN0") { + self.cakeLamp.InPlace = 0; + } else if (event.data === "OUT") { + self.cakeLamp.release = 1; + } else if (event.data === "END") { + const param = { + workOrderNo: self.workpieceInformation.workOrderNo, + productCode: self.workpieceInformation.productCode, + locationCode: self.headContent.processesCode, + productBarcode: self.headContent.sfcCode, + } + + const orderParam = { + productNum: self.headContent.sfcCode, + } + + if(self.headContent.sfcCode=== ''||self.headContent.sfcCode=== null){ + self.$message('鎬绘垚鐮佷负绌猴紝璇锋鏌ワ紒') + return + } + + checkCarCode(orderParam).then(response => { + console.log(response.data) + if(response.data === 1){ + if(self.headContent.processesCode === "OP260"){ + checkYzSfcCode(orderParam).then(response => { + if(response.data === 1){ + saveCampaignTimeParameters(param).then(response => { + checkRecordDataDone(param).then(response => { + if(response.msg === "21"){ + self.cakeLamp.release = 1; + self.endClear() + workpieceRelease(param).then(response => {}); + }else { + self.$message('鏈仛瀹屽伐搴忕姝㈡斁琛�'); + } + }); + }); + }else { + self.$message('璇峰厛缁戝畾棰勮鎬绘垚'); + } + }); + }else { + saveCampaignTimeParameters(param).then(response => { + checkRecordDataDone(param).then(response => { + if(response.msg === "21"){ + self.cakeLamp.release = 1; + self.endClear() + workpieceRelease(param).then(response => {}); + }else { + self.$message('鏈仛瀹屽伐搴忕姝㈡斁琛�'); + } + }); + }); + } + }else { + self.$message('鏈粦瀹氬皬杞︾爜绂佹鏀捐'); + } + }); + } 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, + } + if(formulaChilds.paramCode === null||formulaChilds.paramCode ===''){ + self.$message('鏈壘鍒板弬鏁扮爜锛岃妫�鏌ュ弬鏁扮爜鏄惁姝g‘'); + return; + } + if(self.headContent.sfcCode!==null||self.headContent.sfcCode!==''){ + addTighteningParameters(param).then(response => {}); + updateTighteningFormula(param).then(response => { + self.getListFormulaChild() + }).catch(error =>{ + self.getListFormulaChild() + }); + } } }; }, - resetting() { - this.cakeLamp = { - InPlace: 0, - release: 0, - startWork: 0, - scanFinish: 0, + + + + //鎺ュ彈鏁版嵁鐨勫洖璋� + 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 !== ''){ + if(scanValue.includes("P9900173252")){ + this.headContent.yzSfcCode = scanValue + this.bindYzSfc(); + }else if(scanValue.includes("0RSP1TE")){ + this.headContent.cardCode = scanValue + this.bindcardCode(); + }else { + this.$message('宸ヤ綅缁堢鎵弿鐗╂枡缂栫爜'+scanValue); + console.log(scanValue) + this.serialPortMethod(scanValue) + } + } else { + if(this.headContent.processesCode === 'OP240'){ + this.headContent.sfcCode = scanValue; + this.queryParams.productNum = scanValue; + this.getList() + this.cakeLamp.scanFinish = 1 + this.cakeLamp.startWork = 1 + }else { + let param = { + trolleyYard: scanValue + } + findBytrolleyYardGetOne(param).then(response => { + if(response.msg !== '2'){ + this.headContent.sfcCode = response.msg; + this.queryParams.productNum = response.msg; + this.$message('鎵爜璇嗗埆浜у搧搴忓垪鍙�'+scanValue); + // this.headContent.sfcCode = scanValue; + // this.queryParams.productNum = scanValue; + this.getList() + this.cakeLamp.scanFinish = 1 + this.cakeLamp.startWork = 1 + }else { + this.$message('娌℃湁搴忓垪鍙�'+scanValue); + return + } + }); + } + + } + } - } + }, + 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" }, + ]; + }, } } @@ -428,8 +1058,8 @@ } } .head-font{ - font-weight: bold; - font-size: 25px; + /*font-weight: bold;*/ + /*font-size: 25px;*/ } span{ font-size: 15px; -- Gitblit v1.9.3