| | |
| | | <div class="app-container"> |
| | | <div style="width: 100%"> |
| | | <el-card class="box-card" > |
| | | <el-form :model="from" ref="queryForm" :inline="true" > |
| | | <el-form-item label="箱体码:" prop="scanObject1" > |
| | | <el-input |
| | | style="width: 350px" |
| | | v-model="from.scanObject1" |
| | | placeholder="请输入箱体码" |
| | | clearable |
| | | @keyup.enter.native="handleQuery" |
| | | @input="handleQuery" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="曲轴码:" prop="scanObject2" > |
| | | <el-input |
| | | style="width: 350px" |
| | | v-model="from.scanObject2" |
| | | placeholder="请输入曲轴码" |
| | | clearable |
| | | @keyup.enter.native="handleQuery" |
| | | @input="handleQuery" |
| | | /> |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-form :model="from" ref="queryForm" :inline="true" > |
| | | <el-form-item label="机型:" prop="productSeries" > |
| | | <el-select v-model="from.productSeries" placeholder="" clearable style="width: 105px"> |
| | | <el-option |
| | | |
| | | v-for="dict in dict.type.productseries" |
| | | :key="dict.value" |
| | | :label="dict.label" |
| | | :value="dict.value" |
| | | @keyup.enter.native="handleQuery" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="轴名称:" prop="axisName" >--> |
| | | <!-- <el-select v-model="from.axisName" placeholder="" clearable style="width: 125px">--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="dict in dict.type.axisname"--> |
| | | <!-- :key="dict.value"--> |
| | | <!-- :label="dict.label"--> |
| | | <!-- :value="dict.value"--> |
| | | <!-- @keyup.enter.native="handleQuery"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="颈名称:" prop="neckName" >--> |
| | | <!-- <el-select v-model="from.neckName" placeholder="" clearable style="width: 125px">--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="dict in dict.type.neckname"--> |
| | | <!-- :key="dict.value"--> |
| | | <!-- :label="dict.label"--> |
| | | <!-- :value="dict.value"--> |
| | | <!-- @keyup.enter.native="handleQuery"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- </el-form-item>--> |
| | | <el-form-item label="瓦名称:" prop="tileName" > |
| | | <el-select v-model="from.tileName" placeholder="" clearable style="width: 125px" > |
| | | <el-option |
| | | v-for="dict in dict.type.tilename" |
| | | :key="dict.value" |
| | | :label="dict.label" |
| | | :value="dict.value" |
| | | @keyup.enter.native="handleQuery" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-button type="primary" icon="el-icon-refresh" @click="handleQuery">查询</el-button> |
| | | </el-form> |
| | | <div slot="header" style="text-align: center"> |
| | | <span style="font-weight: bold; font-size: 30px; text-align: center">曲轴配瓦</span> |
| | | </div> |
| | | </el-card> |
| | | <el-col :span="24" > |
| | | <el-col :span="14" > |
| | | <el-card class="bottom-card"> |
| | | <div slot="header" class="clearfix"> |
| | | <i class="el-icon-tickets"></i> |
| | |
| | | <el-descriptions-item label="曲轴码"> |
| | | <span>{{queryParams.scanObject2}}</span> |
| | | </el-descriptions-item> |
| | | <!-- <el-descriptions-item label="轴名称">--> |
| | | <!-- <span>{{queryParams.axisName}}</span>--> |
| | | <!-- </el-descriptions-item>--> |
| | | <!-- <el-descriptions-item label="颈名称">--> |
| | | <!-- <span>{{queryParams.neckName}}</span>--> |
| | | <!-- </el-descriptions-item>--> |
| | | <!-- <el-descriptions-item label="轴名称">--> |
| | | <!-- <span>{{queryParams.axisName}}</span>--> |
| | | <!-- </el-descriptions-item>--> |
| | | <!-- <el-descriptions-item label="颈名称">--> |
| | | <!-- <span>{{queryParams.neckName}}</span>--> |
| | | <!-- </el-descriptions-item>--> |
| | | <el-descriptions-item label="瓦名称"> |
| | | <span>{{queryParams.tileName}}</span> |
| | | </el-descriptions-item> |
| | | <!-- <el-descriptions-item label="重量">--> |
| | | <!-- <span>{{queryParams.weight}}</span>--> |
| | | <!-- </el-descriptions-item>--> |
| | | <!-- <el-descriptions-item label="重量">--> |
| | | <!-- <span>{{queryParams.weight}}</span>--> |
| | | <!-- </el-descriptions-item>--> |
| | | <el-descriptions-item label="配瓦颜色"> |
| | | <span v-for="(word, index) in queryParams.words" :key="index" :style="{ backgroundColor: queryParams.colors[index],fontSize: '30px',}">{{ word }}</span> |
| | | </el-descriptions-item> |
| | |
| | | <el-divider></el-divider> |
| | | </el-card> |
| | | </el-col> |
| | | <el-col :span="10" > |
| | | <div id="block" > |
| | | <!-- 变量赋值 :src="imageUrl" --> |
| | | <!-- 直接读取文件路径 :src="require('@/assets/images/profile.jpg')" --> |
| | | <el-image id="imageRef" fit="contain" :src="require('@/assets/images/463XT.png')" style="width:480px;height:390px;" |
| | | @click="clickMarkPoint($event)"></el-image> |
| | | <div1 class="marker" id="marker5" style="width: 20px; height: 20px; backgroundColor: red; right: 88px; bottom: 132px; position: relative; border-radius: 50%;" |
| | | > |
| | | <span><font style="color:yellow;text-align:center">5</font></span> |
| | | </div1> |
| | | <div2 class="marker" id="marker4" style="width: 20px; height: 20px; background-color: red; right: 173px; bottom: 132px; position: relative; border-radius: 50%;"> |
| | | <span><font style="color:yellow;text-align:center">4</font></span> |
| | | </div2> |
| | | <div3 class="marker" id="marker3" style="width: 20px; height: 20px; background-color: red; right: 260px; bottom: 132px; position: relative; border-radius: 50%;"> |
| | | <span><font style="color:yellow;text-align:center">3</font></span> |
| | | </div3> |
| | | <div4 class="marker" id="marker2" style="width: 20px; height: 20px; background-color: red; right: 345px; bottom: 132px; position: relative; border-radius: 50%;"> |
| | | <span><font style="color:yellow;text-align:center">2</font></span> |
| | | </div4> |
| | | <div5 class="marker" id="marker1" style="width: 20px; height: 20px; background-color: red; right: 435px; bottom: 132px; position: relative; border-radius: 50%;"> |
| | | <span><font style="color:yellow;text-align:center">1</font></span> |
| | | </div5> |
| | | </div> |
| | | |
| | | </el-col> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import VueQr from 'vue-qr' |
| | | import { listTileMatchRules, getTileMatchRules, delTileMatchRules, addTileMatchRules, updateTileMatchRules } from "@/api/main/bs/tileMatchRules/tileMatchRules"; |
| | | import { listTileMatchRules,getTileMatchRules, delTileMatchRules, addTileMatchRules, updateTileMatchRules } from "@/api/main/bs/tileMatchRules/tileMatchRules"; |
| | | import {forceUploadMethod, getUrl} from "@/api/main/bs/orderScheduling/orderScheduling"; |
| | | import WebSocketReconnect from "@/utils/WebsocketTool"; |
| | | import {getCheckData} from "../../../../api/main/bs/tileMatchRules/tileMatchRules"; |
| | | export default { |
| | | name: "index", |
| | | dicts: ['colour_hex','productseries','axisname','neckname','tilename'], |
| | |
| | | from:{ |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | productSeries: '380Y', |
| | | // scanObject1: 'ONYL01FZ0120003023123;1206B0026;D2212BA', |
| | | // scanObject2: 'P0NYK0410001000;T231107031;D2222232;S500003', |
| | | scanObject1: null, |
| | | scanObject2: null, |
| | | productSeries: '', |
| | | scanObject1: '', |
| | | scanObject2: '', |
| | | SNCode: '', |
| | | // scanObject1: null, |
| | | // scanObject2: null, |
| | | axisName: null, |
| | | neckName: null, |
| | | tileName: '主轴瓦', |
| | |
| | | mounted() { |
| | | this.getWebUrl() |
| | | }, |
| | | methods:{ |
| | | getWebUrl(){ |
| | | getUrl().then(res=>{ |
| | | this.websocketUrl = res+"OP060" |
| | | methods: { |
| | | getWebUrl() { |
| | | getUrl().then(res => { |
| | | this.websocketUrl = res + "OP060" |
| | | console.log('websocketUrl:', this.websocketUrl) |
| | | this.initWebSocket() |
| | | }) |
| | | }, |
| | | initWebSocket: function (){ |
| | | initWebSocket: function () { |
| | | //判断当前浏览器是否支持WebSocket |
| | | if ('WebSocket' in window) { |
| | | //连接WebSocket节点 |
| | |
| | | //接收到消息的回调方法 |
| | | this.websocket.socket.onmessage = (event) => { |
| | | let data = event.data; |
| | | if (data != null && data !== ''){ |
| | | if (data != null && data !== '') { |
| | | this.result = JSON.parse(data); |
| | | const parts3 = this.result.server_message.split("*"); |
| | | if (parts3.length >= 2) { |
| | | this.from.scanObject1=parts3[0]; |
| | | this.from.scanObject2=parts3[1]; |
| | | this.handleQuery(); |
| | | if (parts3[0] === 'clean'){ |
| | | this.from.scanObject1 = '' |
| | | this.from.scanObject2 = '' |
| | | this.from.SNCode = '' |
| | | this.queryParams.scanObject1 = '' |
| | | this.queryParams.scanObject2 = '' |
| | | this.queryParams.SNCode = '' |
| | | this.queryParams.productSeries = '' |
| | | this.from.productSeries = '' |
| | | this.queryParams.words = ['------', '------', '------', '------'] |
| | | this.queryParams.colors = ['#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF'] |
| | | } else { |
| | | this.from.scanObject1 = parts3[0]; |
| | | this.from.scanObject2 = parts3[1]; |
| | | this.from.SNCode = parts3[2]; |
| | | this.handleQuery(); |
| | | } |
| | | |
| | | } |
| | | // if (this.form.scanObject1 !== null && this.form.scanObject1 !== ''){ |
| | | // this.handleQuery(); |
| | |
| | | window.onbeforeunload = function () { |
| | | this.websocket.close() |
| | | } |
| | | |
| | | //关闭连接 |
| | | function closeWebSocket() { |
| | | this.websocket.close() |
| | | } |
| | | |
| | | //发送消息 |
| | | function send() { |
| | | this.websocket.socket.send({ kk: 123 }) |
| | | this.websocket.socket.send({kk: 123}) |
| | | } |
| | | } else { |
| | | alert('浏览器不支持webSocket') |
| | |
| | | }, |
| | | /** 搜索按钮操作 */ |
| | | handleQuery() { |
| | | console.log('111111111') |
| | | this.clear(); |
| | | |
| | | if(this.from.scanObject1 !== null && this.from.scanObject2 !== null |
| | | if (this.from.scanObject1 !== null && this.from.scanObject1 !== "" |
| | | // && this.from.axisName !== null && this.from.axisName !== "" |
| | | // && this.from.neckName !== null && this.from.neckName !== "" |
| | | // && this.from.tileName !== null && this.from.tileName !== "" |
| | | && this.from.productSeries !== null && this.from.productSeries !== "") |
| | | { |
| | | && this.from.scanObject2 !== null && this.from.scanObject2 !== "") { |
| | | console.log('2222222') |
| | | this.axisValueextracted(); |
| | | this.neckValueextracted(); |
| | | if(this.queryParams.axisValue !== null && this.queryParams.neckValue !== null){ |
| | | if (this.queryParams.axisValue !== null && this.queryParams.neckValue !== null) { |
| | | this.insetFromToQueryParams(); |
| | | this.getList(); |
| | | } |
| | | else{ |
| | | } else { |
| | | const h = this.$createElement; |
| | | this.$message({ |
| | | message: h('p',null, [ |
| | | message: h('p', null, [ |
| | | h('span', null, '警告 '), |
| | | h('i', { style: 'color: black' }, '箱体码或曲轴码输入有误'), |
| | | h('i', {style: 'color: black'}, '箱体码或曲轴码输入有误'), |
| | | h()]), |
| | | type: 'error', |
| | | center: true, |
| | | offset:300 |
| | | offset: 300 |
| | | }); |
| | | } |
| | | } |
| | | else{ |
| | | } else { |
| | | const h = this.$createElement; |
| | | this.$message({ |
| | | message: h('p',null, [ |
| | | message: h('p', null, [ |
| | | h('span', null, '警告 '), |
| | | h('i', { style: 'color: black' }, '请填写所有搜索条件'), |
| | | h('i', {style: 'color: black'}, '请填写所有搜索条件'), |
| | | h()]), |
| | | type: 'error', |
| | | center: true, |
| | | offset:300 |
| | | offset: 300 |
| | | }); |
| | | } |
| | | }, |
| | | |
| | | // 取箱体码第三段为配瓦值 |
| | | axisValueextracted() { |
| | | const parts1 = this.from.scanObject1.split(","); |
| | | if (parts1.length >= 2) { |
| | | //const axisValueextracted = parts1[2].substring(3,4); |
| | | const axisValueextracted = parts1[1]; |
| | | return this.queryParams.axisValue= axisValueextracted; |
| | | console.log("33") |
| | | if (this.from.scanObject1.indexOf(";") !== -1) { |
| | | const parts1 = this.from.scanObject1.split(";"); |
| | | if (parts1.length >= 3) { |
| | | console.log("44", parts1) |
| | | //const axisValueextracted = parts1[2].substring(3,4); |
| | | const axisValueextracted = parts1[2]; |
| | | return this.queryParams.axisValue = axisValueextracted; |
| | | |
| | | } |
| | | } |
| | | }, |
| | | |
| | | //取曲轴码第三段为配瓦值 |
| | | neckValueextracted() { |
| | | const parts2 = this.from.scanObject2.split(";"); |
| | | if (parts2.length >= 3) { |
| | | //const neckValueextracted = parts2[2].substring(3,4); |
| | | const neckValueextracted = parts2[2]; |
| | | return this.queryParams.neckValue= neckValueextracted; |
| | | console.log('4432') |
| | | console.log('scanObject2', this.from.scanObject2) |
| | | if (this.from.scanObject2.indexOf(";") !== -1) { |
| | | const parts2 = this.from.scanObject2.split(";"); |
| | | if (parts2.length >= 3) { |
| | | //const neckValueextracted = parts2[2].substring(3,4); |
| | | const neckValueextracted = parts2[2]; |
| | | return this.queryParams.neckValue = neckValueextracted; |
| | | } |
| | | } |
| | | }, |
| | | //取配瓦颜色 |
| | | getList() { |
| | | let queryParams = { |
| | | productSeries : this.queryParams.productSeries, |
| | | axisName : this.queryParams.axisName, |
| | | neckName : this.queryParams.neckName, |
| | | tileName : this.queryParams.tileName, |
| | | axisValue: this.queryParams.axisValue, |
| | | neckValue: this.queryParams.neckValue, |
| | | SNCode: this.from.SNCode, |
| | | XT: this.from.scanObject1, |
| | | CZ: this.from.scanObject2, |
| | | } |
| | | console.log(queryParams) |
| | | listTileMatchRules(queryParams).then(response => { |
| | | this.queryParams.words= ['------', '------', '------', '------'] |
| | | this.queryParams.colors= ['#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF'] |
| | | for (var i=0;i<response.rows.length;i++){ |
| | | this.queryParams.colors[i]=response.rows[i].tileColor; |
| | | this.queryParams.words[i]=response.rows[i].tileName; |
| | | console.log('queryParams', queryParams) |
| | | getCheckData(queryParams).then(response => { |
| | | console.log('resssss', response) |
| | | this.queryParams.words = ['------', '------', '------', '------'] |
| | | this.queryParams.colors = ['#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF'] |
| | | if (response.code === 200) { |
| | | if (response.data.length > 0) { |
| | | this.queryParams.productSeries = response.data[0].productSeries |
| | | } |
| | | for (var i = 0; i < response.data.length; i++) { |
| | | this.queryParams.colors[i] = response.data[i].tileColor; |
| | | this.queryParams.words[i] = response.data[i].tileName; |
| | | } |
| | | |
| | | document.getElementById('marker1').style.backgroundColor = this.queryParams.colors[0]; |
| | | document.getElementById('marker2').style.backgroundColor = this.queryParams.colors[1]; |
| | | document.getElementById('marker3').style.backgroundColor = this.queryParams.colors[2]; |
| | | document.getElementById('marker4').style.backgroundColor = this.queryParams.colors[3]; |
| | | document.getElementById('marker5').style.backgroundColor = this.queryParams.colors[4]; |
| | | console.log('颜色:', response) |
| | | } |
| | | console.log('颜色:',response) |
| | | |
| | | }); |
| | | }, |
| | | clear(){ |
| | | this.queryParams.axisValue=null; |
| | | this.queryParams.neckValue=null; |
| | | clear() { |
| | | this.queryParams.axisValue = null; |
| | | this.queryParams.neckValue = null; |
| | | }, |
| | | insetFromToQueryParams(){ |
| | | this.queryParams.productSeries=this.from.productSeries; |
| | | this.queryParams.axisName=this.from.axisName; |
| | | this.queryParams.neckName=this.from.neckName; |
| | | this.queryParams.tileName=this.from.tileName; |
| | | this.queryParams.scanObject1=this.from.scanObject1; |
| | | this.queryParams.scanObject2=this.from.scanObject2; |
| | | insetFromToQueryParams() { |
| | | this.queryParams.productSeries = this.from.productSeries; |
| | | this.queryParams.axisName = this.from.axisName; |
| | | this.queryParams.neckName = this.from.neckName; |
| | | this.queryParams.tileName = this.from.tileName; |
| | | this.queryParams.scanObject1 = this.from.scanObject1; |
| | | this.queryParams.scanObject2 = this.from.scanObject2; |
| | | } |
| | | |
| | | }, |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | ::v-deep .el-form-item__label{ |
| | | ::v-deep .el-form-item__label { |
| | | font-size: large; |
| | | } |
| | | ::v-deep .el-card__body{ |
| | | |
| | | ::v-deep .el-card__body { |
| | | padding: 15px 20px 0px 20px; |
| | | } |
| | | ::v-deep .el-input .el-input--medium .el-input--suffix{ |
| | | |
| | | ::v-deep .el-input .el-input--medium .el-input--suffix { |
| | | width: 200px; |
| | | } |
| | | |