From c0b596275d583b0874e501f49a90e7a1dfd879e3 Mon Sep 17 00:00:00 2001 From: wuyouming666 <2265557248@qq.com> Date: 星期四, 09 五月 2024 09:37:48 +0800 Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/CanadaMes --- CanadaMes-ui/src/views/home/index.vue | 341 +++++++++++++++++++++++++++++++++----------------------- 1 files changed, 203 insertions(+), 138 deletions(-) diff --git a/CanadaMes-ui/src/views/home/index.vue b/CanadaMes-ui/src/views/home/index.vue index 49b6c9e..a5a1780 100644 --- a/CanadaMes-ui/src/views/home/index.vue +++ b/CanadaMes-ui/src/views/home/index.vue @@ -235,6 +235,7 @@ height: 15px; position: absolute; } + </style> <template> <el-container> @@ -243,7 +244,7 @@ <div class="box" @click="dialogFormVisible2 = true"> <div class="text"> <!-- Alarm: --> - {{ this.text }} + {{ this.text }}{{this.plc1}}{{this.plc2}} <label v-for="item in this.alarm" :key="item['id']"> {{ item['content'] }} </label> @@ -344,6 +345,9 @@ </el-main> <el-footer> <div class="blocks" style="position: relative;"> + <div :style="'position:absolute;width:40px;height:40px;top:40px;left:50px;background-Color:'+StateColor+';font-size:30px;text-align:center;border-radius: 50%;'"> + {{ CountDowns }} + </div> <div style="display:flex;position: absolute;float:left;z-index: 999;top:102px;left:237px;"> <div :class="getStatusClass(item.state)" v-for="(item, index) in cagelist1" :key="item['date']" :style="{ height: 35 * item['glassWidth'] + 'px', left: 3.07 * index + Math.abs(item['cage'] - 10) * 6.8 + 'px' }" @@ -416,7 +420,7 @@ </div> <div class="glass D02" style="top: 117px;left: 1055px;position: absolute;">{{ ShowGlassIdList(1) }} <br /> - <el-button type="primary" size="mini" @click="ClearGlassId('DB101.9.2', 1)"> + <el-button type="primary" size="mini" @click="ClearGlassId('DB101.9.3', 1)"> {{ $t('Clear') }}</el-button> </div> <div class="glass B01" style="top: 270px;left: 640px;position: absolute;"> @@ -615,7 +619,6 @@ :page-sizes="[42, 84, 126, 420]" :page-size="pagesizes" layout="total, sizes, prev, pager, next, jumper" :total="cageinfo.length > 0 ? cageinfo.length : null" background style="float: right; margin-top: 20px"> </el-pagination> - </el-dialog> <el-dialog :visible.sync="dialogFormVisible4" :title="$t('Order Info')" top="5vh"> @@ -641,11 +644,11 @@ <el-dialog :visible.sync="dialogFormVisible5" :title="$t('Please confirm the glass information')"> <el-form :model="form" label-width="100px" style="padding-right: 30px"> <div style="display: flex;justify-content: center;"> - <el-form-item> + <!-- <el-form-item> {{ $t('Confirm State') }}:{{ this.isConfirm == true ? $t('Allow') : $t('Not Allow') }} <el-button type="primary" @click="isConfirmState()"> {{ this.isConfirm == true ? $t('Not Allow') : $t('Allow') }}</el-button> - </el-form-item> + </el-form-item> --> <el-form-item> {{ $t('Current State') }}:{{ this.Scanningmethod == false ? $t('Automatic') : $t('Hand Movement') }} @@ -653,7 +656,7 @@ }}</el-button> </el-form-item> <el-form-item> - <el-input style="width:70%;" maxlength="13" :placeholder="$t('Enter the glass barcode')" + <el-input style="width:70%;" maxlength="14" :placeholder="$t('Enter the glass barcode')" v-model="glassid1"></el-input> <el-button type="primary" :disabled="!Scanningmethod" @click="WriteGlassID()">{{ $t('Add') }}</el-button> @@ -664,106 +667,112 @@ v-model="CurrrentGlassId"></el-input> </el-form-item> </div> - <div style="display: flex;justify-content: space-around;"> + <!-- <div style="display: flex;justify-content: space-around;"> <label for="">{{ $t('Upper film position') }}</label> <label for="">{{ $t('Scan Code Point') }}</label> - </div> + </div> --> <div style="display: flex;justify-content: space-around;height: 40px;"> - <label for="">{{ $t('current Information') }}</label> - <label for="">{{ $t('Modify Information') }}</label> - <label for="">{{ $t('current Information') }}</label> - <label for="">{{ $t('Modify Information') }}</label> + <label for="">{{ $t('D02 Current Information') }}</label> + <!-- <label for="">{{ $t('D01 Current Information') }}</label> --> + <label for="">{{ $t('D01 Modify Information') }}</label> + <label for="">{{ $t('Scan Code Information') }}</label> </div> <div style="display: flex;justify-content: space-around;"> - <el-form-item :label="$t('Barcode')"> + <el-form-item :label="$t('Barcode')" > <el-input v-model="form2.glassId" readonly autocomplete="off" /> </el-form-item> - <el-form-item :label="$t('Barcode')"> - <el-input v-model="form4.glassId" readonly autocomplete="off" /> - </el-form-item> - <el-form-item :label="$t('Barcode')"> + <!-- <el-form-item :label="$t('Barcode')"> <el-input v-model="form3.glassId" readonly autocomplete="off" /> - </el-form-item> + </el-form-item> --> <el-form-item :label="$t('Barcode')"> <el-input v-model="form5.glassId" readonly autocomplete="off" /> + </el-form-item> + <el-form-item :label="$t('Barcode')" :style="'background-Color:'+(form6state==1?'yellow':'')+';'"> + <el-input v-model="form6.barcode" readonly autocomplete="off" /> </el-form-item> </div> <div style="display: flex;justify-content: space-around;"> <el-form-item :label="$t('Order No')"> <el-input v-model="form2.orderId" readonly autocomplete="off" /> </el-form-item> - <el-form-item :label="$t('Order No')"> - <el-input v-model="form4.orderId" readonly autocomplete="off" /> - </el-form-item> - <el-form-item :label="$t('Order No')"> - <el-input v-model="form3.orderId" readonly autocomplete="off" /> - </el-form-item> + <!-- <el-form-item :label="$t('Order No')"> + <el-input v-model="form3.orderId" readonly autocomplete="off" /> + </el-form-item>--> <el-form-item :label="$t('Order No')"> <el-input v-model="form5.orderId" readonly autocomplete="off" /> + </el-form-item> + <el-form-item :label="$t('Order No')" :style="'background-Color:'+(form6state==1?'yellow':'')+';'"> + <el-input v-model="form6.ordernumber" readonly autocomplete="off" /> </el-form-item> </div> <div style="display: flex;justify-content: space-around;"> <el-form-item :label="$t('List No')"> <el-input v-model="form2.listId" readonly autocomplete="off" /> </el-form-item> - <el-form-item :label="$t('List No')"> - <el-input v-model="form4.listId" readonly autocomplete="off" /> - </el-form-item> - <el-form-item :label="$t('List No')"> + <!-- <el-form-item :label="$t('List No')"> <el-input v-model="form3.listId" readonly autocomplete="off" /> - </el-form-item> + </el-form-item> --> <el-form-item :label="$t('List No')"> <el-input v-model="form5.listId" readonly autocomplete="off" /> + </el-form-item> + <el-form-item :label="$t('List No')" :style="'background-Color:'+(form6state==1?'yellow':'')+';'"> + <el-input v-model="form6.listnumber" readonly autocomplete="off" /> </el-form-item> </div> <div style="display: flex;justify-content: space-around;"> <el-form-item :label="$t('Box No')"> <el-input v-model="form2.boxId" readonly autocomplete="off" /> </el-form-item> - <el-form-item :label="$t('Box No')"> - <el-input v-model="form4.boxId" readonly autocomplete="off" /> - </el-form-item> - <el-form-item :label="$t('Box No')"> + <!-- <el-form-item :label="$t('Box No')"> <el-input v-model="form3.boxId" readonly autocomplete="off" /> - </el-form-item> + </el-form-item> --> <el-form-item :label="$t('Box No')"> <el-input v-model="form5.boxId" readonly autocomplete="off" /> + </el-form-item> + <el-form-item :label="$t('Box No')" :style="'background-Color:'+(form6state==1?'yellow':'')+';'"> + <el-input v-model="form6.boxnumber" readonly autocomplete="off" /> </el-form-item> </div> <div style="display: flex;justify-content: space-around;"> <el-form-item :label="$t('Length')"> <el-input v-model="form2.glasswidthmm" readonly autocomplete="off" /> </el-form-item> - <el-form-item :label="$t('Length')"> - <el-input v-model="form4.glasswidthmm" readonly autocomplete="off" /> - </el-form-item> - <el-form-item :label="$t('Length')"> + <!-- <el-form-item :label="$t('Length')"> <el-input v-model="form3.glasswidthmm" readonly autocomplete="off" /> - </el-form-item> + </el-form-item> --> <el-form-item :label="$t('Length')"> <el-input v-model="form5.glasswidthmm" readonly autocomplete="off" /> + </el-form-item> + <el-form-item :label="$t('Length')" :style="'background-Color:'+(form6state==1?'yellow':'')+';'"> + <el-input v-model="form6.glasslength" readonly autocomplete="off" /> </el-form-item> </div> <div style="display: flex;justify-content: space-around;"> <el-form-item :label="$t('Width')"> <el-input v-model="form2.glassheightmm" readonly autocomplete="off" /> </el-form-item> - <el-form-item :label="$t('Width')"> - <el-input v-model="form4.glassheightmm" readonly autocomplete="off" /> - </el-form-item> - <el-form-item :label="$t('Width')"> + <!-- <el-form-item :label="$t('Width')"> <el-input v-model="form3.glassheightmm" readonly autocomplete="off" /> - </el-form-item> + </el-form-item> --> <el-form-item :label="$t('Width')"> <el-input v-model="form5.glassheightmm" readonly autocomplete="off" /> </el-form-item> + <el-form-item :label="$t('Width')" :style="'background-Color:'+(form6state==1?'yellow':'')+';'"> + <el-input v-model="form6.glassheight" readonly autocomplete="off" /> + </el-form-item> </div> <div style="display: flex;justify-content: right;"> - <el-button @click="InsertQueueGlass(1)" style="margin-right: 100px;" type="primary" + <el-button @click="InsertQueueGlass(1)" style="margin-right: 28%;" type="primary" :disabled="disabled1"> {{ $t('Confirm') }}</el-button> + <span style="margin-right: 12%;"> + {{ $t('Remaining width:') }} + {{ (108.27 - (Object.keys(this.form6).length === 0 ? 0 : (form6.glassheight > form6.glasslength ? + form6.glassheight : form6.glasslength))).toFixed(2) }} + + </span> </div> </el-form> </el-dialog> @@ -790,18 +799,18 @@ <el-table-column :min-width="70" prop="orderId" :label="$t('Order No')"></el-table-column> <el-table-column :min-width="70" prop="listId" :label="$t('List No')"></el-table-column> <el-table-column :min-width="70" prop="boxId" :label="$t('Box No')"></el-table-column> + <el-table-column :min-width="70" prop="cell" :label="$t('Slot No')"></el-table-column> <el-table-column :min-width="100" prop="glasswidthmm" :label="$t('Length')"></el-table-column> <el-table-column :min-width="100" prop="glassheightmm" :label="$t('Width')"></el-table-column> <el-table-column :min-width="90" prop="state" :label="$t('Glass State')"> <template slot-scope='scope'> - {{ scope.row.state == 0 ? $t('Waiting') : scope.row.state == 1 ? $t('Outing') : - scope.row.state - == 2 - ? $t('Outed') : scope.row.state == 3 ? $t('Absent') : $t('Completed') }} + {{ scope.row.state == 0 ? $t('Waiting') : scope.row.state == 1 ? + $t('Outing') : scope.row.state == 2 ? $t('Outed') : scope.row.state == 3 ? $t('Absent') + : $t('Completed') }} </template> </el-table-column> <el-table-column prop="sequence" :label="$t('Sequence')"></el-table-column> - <el-table-column :min-width="90" prop="barcode" :label="$t('Complete')"> + <!-- <el-table-column :min-width="90" prop="barcode" :label="$t('Complete')"> <template slot-scope='scope' style="height:100px;height:100px;"> <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" :disabled="!(!isAllowQueue && scope.row.state != 1 && scope.row.state != 2)" @@ -809,7 +818,7 @@ $t('Complete') }}</el-button> </template> - </el-table-column> + </el-table-column> --> <el-table-column :width="100" :label="$t('Operate')"> <template slot-scope='scope'> @@ -904,6 +913,7 @@ import LanguageMixin from '../../lang/LanguageMixin' let socket; +let timer; export default { name: "Home", data() { @@ -935,6 +945,7 @@ form3: {}, form4: {}, form5: {}, + form6: {}, alarm: [], tableData: [], cagelist1: [], @@ -987,7 +998,7 @@ ClearGlassID: true, StopTask: true, SoftEmergencyStopState: true, - CountDowns: "0", + CountDowns: "", D01RequestState: false, EmergencyStop: false, PromptSize: 250, @@ -998,22 +1009,27 @@ GlassIdList: [], Scanningmethod: true, CurrrentGlassId: "", - feedglassid:"", - count1:0, - count2:1 + feedglassid: "", + count1: 0, + count2: 1, + loadname: "", + form6state:0, + StateColor:"green", + plc1:"", + plc2:"" }; }, created() { this.load(); - // setInterval(() => { - // if(this.count1<this.count2){ - // this.count1=this.count2; - // }else{ - // const now = new Date(); - // console.log(now); - // alert("websocket鍋滄"+now); - // } - // }, 3000); + setInterval(() => { + if(this.count1<this.count2){ + this.count1=this.count2; + }else{ + const now = new Date(); + console.log(this.count1,this.count2); + console.log(this.$t('Mes Connection failed')+now); + } + }, 60000); }, activated() { this.init(); @@ -1039,7 +1055,7 @@ }; // 娴忚鍣ㄧ鏀舵秷鎭紝鑾峰緱浠庢湇鍔$鍙戦�佽繃鏉ョ殑鏂囨湰娑堟伅 socket.onmessage = function (msg) { - this.count2=this.count2+1; + this.count2 = this.count2 + 1; //console.log("鏀跺埌鏁版嵁====" + msg.data); let obj = JSON.parse(msg.data); if (obj.params != null) { @@ -1049,6 +1065,20 @@ this.car2 = 210 + 8.15 * Math.abs(zhi2 - this.carlist[1]['start']) / Math.abs(this.carlist[1]['end'] - this.carlist[1]['start']) * 100; // this.car1 = 210 + 11.25 * (obj.params[0][1]-this.carlist[1]['start'])/(this.carlist[1]['end']-this.carlist[1]['start'])*100; // this.car2 = 300 + 11.25 * (obj.params[0][1]-this.carlist[1]['start'])/(this.carlist[1]['end']-this.carlist[1]['start'])*100; + } + if (obj.Plc1 != null) { + if(obj.Plc1[0]==true){ + this.plc1=""; + }else{ + this.plc1=this.$t('Plc1 Connection failed'); + } + } + if (obj.Plc2 != null) { + if(obj.Plc2[0]==true){ + this.plc2=""; + }else{ + this.plc2=this.$t('Plc2 Connection failed'); + } } this.tableData = obj.tableData[0]; @@ -1083,7 +1113,7 @@ } //鑾峰彇寰呯‘璁ょ殑閾濇鐜荤拑淇℃伅 if (obj.AluminumFrame != null) { - + this.AluminumFrame = obj.AluminumFrame[0]; if (this.dialogFormVisible6 == true) { this.dialogFormVisible7 = true; @@ -1097,8 +1127,8 @@ } } - if(obj.feedglassid!=null){ - this.feedglassid=obj.feedglassid[0]; + if (obj.feedglassid != null) { + this.feedglassid = obj.feedglassid[0]; } // if (obj.alarmmg[0].length > 0) { @@ -1112,28 +1142,47 @@ // this.dialogFormVisible2 = true; // } // } - // //鏄惁鎬ュ仠 - // if (obj.emergencystop != null) { - // this.EmergencyStop = obj.emergencystop[0]; - // } + //鏄惁鎬ュ仠 + if (obj.emergencystop != null) { + this.EmergencyStop = obj.emergencystop[0]; + } + //澶嶄綅鍊掕鏃� + if (obj.countdown != null) { + if ((obj.countdown[0] == true && this.CountDowns == 0) || this.EmergencyStop == true) { + this.CountDown(); + } + } - // //澶嶄綅鍊掕鏃� - // if (obj.countdown != null) { - // if ((obj.countdown[0] == true && this.CountDowns == 0) || this.EmergencyStop == true) { - // this.CountDown(); - // } - // } - - // //澶嶄綅瀹屾垚淇″彿 - // if (obj.reset != null) { - // this.reset = obj.reset[0]; - // } + //澶嶄綅瀹屾垚淇″彿 + if (obj.reset != null) { + this.reset = obj.reset[0]; + } //鏄惁鏈夎繘鐗囪姹� if (obj.D01RequestState != null) { this.D01RequestState = obj.D01RequestState[0]; } // this.D01RequestState=true; + + if (obj.zhi != null) { + if (obj.zhi[0] != 0) { + if (obj.zhi[0] == 200) { + this.form5 = {}; + this.$message.success(this.$t('Operation successful')); + } + else if (obj.zhi[0] == 300) { + this.$message.error(this.$t('There is no such glass')); + } + else if (obj.zhi[0] == 400) { + this.$message.error(this.$t('There is no such slot')); + } else if(obj.zhi[0] == 500) { + this.$message.error(this.$t('This glass ID already exists in the sorting cage')); + } else if(obj.zhi[0] == 600) { + this.$message.error(this.$t('The glass size is not within the range')); + } + } + + } //鏄惁鍏佽鍑虹墖 this.isAllowQueue = obj.isAllowQueue[0]; @@ -1173,8 +1222,9 @@ if (obj.form3 != null && obj.form3 != "" && obj.state[0] == 0) { this.loadglassheight1 = 70; if (this.form5.glassId != obj.form3[0].glassId && this.ManuallyInfeedGlass == false) { - this.showform3(); - + if (this.loadname == "Buffer") { + this.showform3(); + } } this.form5 = obj.form3[0]; this.glassid1 = ""; @@ -1187,6 +1237,17 @@ if (this.glassid1 == "") { this.DeleteBarcodeGlass(); } + } + if (obj.form6 != null) { + this.form6state=1; + this.form6 = obj.form6[0]; + if(this.form6.glassheight=="0"){ + this.form6.glassheight=""; + this.form6.glasslength=""; + } + } else { + this.form6 = {}; + this.form6state=0; } //鏁版嵁搴撹繛鎺ユ槸鍚︽甯� if (obj.dbconnected == "false") { @@ -1218,6 +1279,7 @@ load() { //鍔犺浇鐢ㄦ埛鏉冮檺 currentUsername().then(res => { + this.loadname = res.data; SelectPermissionByUserName(res.data).then(res => { res.data.permission.forEach(item => { if (item.permissionId == "32" && item.state == 1) { @@ -1306,14 +1368,14 @@ //鎵嬪姩涓婄墖 sbumitglassid() { if (this.form.order != "") { - let width=0; - let height=0; - if(this.form.glassheight<this.form.glasswidth){ - width=this.form.glasswidth; - height=this.form.glassheight; - }else{ - height=this.form.glasswidth; - width=this.form.glassheight; + let width = 0; + let height = 0; + if (this.form.glassheight < this.form.glasswidth) { + width = this.form.glasswidth; + height = this.form.glassheight; + } else { + height = this.form.glasswidth; + width = this.form.glassheight; } if (height < 380 || width < 380 || height > 1810 || width > 2760) { this.$message.error(this.$t('The glass size is not within the range')); @@ -1674,9 +1736,12 @@ this.form5 = {}; this.$message.success(this.$t('Operation successful')); } + else if (res.data.message == 300) { + this.$message.error(this.$t('There is no such glass')); + } else if (res.data.message == 400) { this.$message.error(this.$t('There is no such slot')); - } else { + }else if (res.data.message == 500) { this.$message.error(this.$t('This glass ID already exists in the sorting cage')); } }); @@ -1948,14 +2013,14 @@ Sizerange(Glass, position) { console.log(position); if (this.ManuallyInfeedGlass == false) { - let width=0; - let height=0; - if(Glass.glassheight<Glass.glasswidth){ - width=Glass.glasswidth; - height=Glass.glassheight; - }else{ - height=Glass.glasswidth; - width=Glass.glassheight; + let width = 0; + let height = 0; + if (Glass.glassheight < Glass.glasswidth) { + width = Glass.glasswidth; + height = Glass.glassheight; + } else { + height = Glass.glasswidth; + width = Glass.glassheight; } if (height < 380 || width < 380 || height > 1810 || width > 2760) { this.$alert(this.$t('The glass size is not within the range'), this.$t('confirm'), { @@ -2001,34 +2066,34 @@ }, //60绉掑浣嶅�掓暟璁℃椂 CountDown() { + clearInterval(timer); let count = 60; - let timer = setInterval( + timer = setInterval( () => { if (this.EmergencyStop == true) { - this.dialogFormCountDown = false; clearInterval(timer); - this.CountDowns = "0"; + this.StateColor="red"; + this.CountDowns = ""; } else { if (count > 0) { - this.PromptSize = 500; - count--; - this.CountDowns = count; - this.dialogFormCountDown = true; + this.StateColor="yellow"; + this.PromptSize = 500; + this.CountDowns = count; + count--; } else { - this.PromptSize = 200; - this.CountDowns = "Waiting for reset"; - if (this.reset == true) { - clearInterval(timer); - this.dialogFormCountDown = false; - } + this.PromptSize = 200; + this.CountDowns = ""; + this.StateColor="green"; + if (this.reset == true) { + clearInterval(timer); + } } } }, 1000 ); - - }, + }, //鏇存崲褰撳墠閾濇 FrameStateUpdate(frameno) { FrameStateUpdate(frameno).then(res => { @@ -2099,28 +2164,28 @@ if (this.ClearGlassID == false) { console.log(this.DeviceList, num); if (this.DeviceList[num] == 0) { - if (this.GlassIdList[num].length <= 14) { - this.$confirm(this.$t('Are you sure to clear this barcode ?'), this.$t('confirm'), { - confirmButtonText: this.$t('Yes'), - cancelButtonText: this.$t('No'), - type: 'warning' - }).then(() => { - ClearGlassId(position, this.GlassIdList[num]).then(res => { - if (res.data.message == 200) { - this.$message.success(this.$t('Operation successful')); - } else { - this.$message.success(this.$t('operation failed')); - } - }); - }).catch(() => { - this.$message({ - type: 'info', - message: this.$t('Operation canceled') - }); + // if (this.GlassIdList[num].length <= 14) { + this.$confirm(this.$t('Are you sure to clear this barcode ?'), this.$t('confirm'), { + confirmButtonText: this.$t('Yes'), + cancelButtonText: this.$t('No'), + type: 'warning' + }).then(() => { + ClearGlassId(position, this.GlassIdList[num]).then(res => { + if (res.data.message == 200) { + this.$message.success(this.$t('Operation successful')); + } else { + this.$message.success(this.$t('operation failed')); + } }); - } else { - this.$message.error(this.$t('There is no glass ID here')); - } + }).catch(() => { + this.$message({ + type: 'info', + message: this.$t('Operation canceled') + }); + }); + // } else { + // this.$message.error(this.$t('There is no glass ID here')); + // } } else { //鑷姩鐘舵�佷笉鑳芥竻闄ょ幓鐠僫d this.$message.error(this.$t('Unable to clear glass ID in automatic mode')); -- Gitblit v1.8.0