From f6739d7542be48f7f8139c3d5fc7b2326e5cfc8d Mon Sep 17 00:00:00 2001 From: songshankun <songshankun@foxmail.com> Date: 星期三, 22 十一月 2023 11:06:35 +0800 Subject: [PATCH] feat: 轮询plc时间调整; 接口报错时也轮询plc --- src/views/visualization.vue | 121 +++++++++++++++++++++++++++++---------- 1 files changed, 89 insertions(+), 32 deletions(-) diff --git a/src/views/visualization.vue b/src/views/visualization.vue index 65eda1a..8811c49 100644 --- a/src/views/visualization.vue +++ b/src/views/visualization.vue @@ -4,8 +4,9 @@ <!-- v-if="Tasks&&Tasks.length>0" --> <template > <div class="left"> - <p class="title"> - <template v-if="Number(ChannelAmount)>1"> + <div class="title"> + <div class="dashboard-channels"> + <template v-if="Number(ChannelAmount)>1"> <span class="font set-title" style="float: left; margin-right: 15px;" @@ -16,41 +17,48 @@ <img style="width:32px;" src="../../public/one.png" /> </span> </span> - <span class="font set-title" style="float: left;margin-right: 15px;" @click="cutClick(2)"> + <span class="font set-title" style="float: left;margin-right: 15px;" @click="cutClick(2)"> <img style="width:32px;" v-if="activeName == 2" src="../../public/two-blue.png" /> <img style="width:32px;" v-else src="../../public/two.png" /> </span> - <span - class="font set-title" - style="float: left;" - @click="cutClick(3)" - > + <span + class="font set-title" + style="float: left;" + @click="cutClick(3)" + > <img style="width:32px;" v-if="activeName == 3" src="../../public/right-blue.png" /> <span v-else> <img style="width:32px;" src="../../public/right.png" /> </span> </span> - </template> - 鏅鸿兘宸ヤ綔鍙� - <span - class="font el-icon-setting set-title" - style="float: right" - @click="setUrl" - ></span> - <span - class="font el-icon-s-tools set-title" - style="float: right;margin-right: 6px" - @click="openParamsConfigModal" - ></span> - <span - style="float: right;margin-right:20px;font-size:28px;line-height:25px;" - @click="taskClick" - > + </template> + </div> + <div class="dashboard-title"> + 鏅鸿兘宸ヤ綔鍙� 鈥� {{currentDeviceName}} + + <i @click="showDeviceModal=true" class="el-icon" style="font-size: 26px; height: 32px; color: #0db7f5; margin-left: 20px; cursor: pointer;"><svg data-v-c3da359e="" viewBox="0 0 24 24" width="1.2em" height="1.2em"><path fill="currentColor" d="M13 5h9v2h-9zM2 7h7v2h2V3H9v2H2zm7 10h13v2H9zm10-6h3v2h-3zm-2 4V9.012h-2V11H2v2h13v2zM7 21v-6H5v2H2v2h3v2z"></path></svg></i> + </div> + <div class="dashboard-btn"> + <span + class="font el-icon-setting set-title" + style="float: right" + @click="setUrl" + ></span> + <span + class="font el-icon-s-tools set-title" + style="float: right;margin-right: 6px" + @click="openParamsConfigModal" + ></span> + <span + style="float: right;margin-right:20px;font-size:28px;line-height:25px;" + @click="taskClick" + > <el-badge :value="TaskCount" :class="(TaskCount==0||isTipShow)?'item color_666':'item color_fff'"> <i class="el-icon-chat-dot-round" /> </el-badge> </span> - </p> + </div> + </div> <div :class="(activeName == 1||activeName == 3) ? 'active-one' : 'active-two'" v-for="(taskData, index) in Tasks" @@ -599,6 +607,7 @@ @updateGet="updateGet" /> <ParamsConfigModal :visible="paramsConfigIsShow" @close="closeParamsConfigModal"></ParamsConfigModal> + <DeviceSelectModal :visible.sync="showDeviceModal" @should-reload="reloadAllData"></DeviceSelectModal> </div> </template> @@ -623,8 +632,11 @@ import {channelNameConfig} from "@/common/constants"; import _ from 'lodash' import ParamsConfigModal from "@/components/ParamsConfigModal.vue"; +import DeviceSelectModal from "@/components/DeviceSelectModal.vue"; +import {mapActions, mapGetters, mapState} from "vuex"; export default { components: { + DeviceSelectModal, ParamsConfigModal, TaskControlModal, Card, @@ -635,6 +647,7 @@ }, data() { return { + showDeviceModal:false, pollingTaskCountTimer: null, activeName: 1, progress: 70, //杩涘害 @@ -782,6 +795,7 @@ this.activeName = channelType this.getTaskInfo(channelType); this.getTaskCountStatistics() + this.getDeviceInfo() }, beforeDestroy() { clearTimeout(this.pollingTaskCountTimer) @@ -796,6 +810,8 @@ // } }, computed:{ + ...mapState(['deviceInfo']), + ...mapGetters(['currentDeviceName']), displayPLCStatus(){ let PLCStatus = [] if (this.activeName===1){ @@ -812,6 +828,13 @@ } }, methods: { + ...mapActions(["getDeviceInfo"]), + reloadAllData(){ + console.log(1) + this.getTaskInfo(this.activeName); + this.getTaskCountStatistics() + this.getDeviceInfo() + }, newTaskPlaceholder(channel){ return { Order: {}, @@ -891,12 +914,12 @@ getModelList(){ for (let i in this.TasksCopy){ this.TasksCopy[i].isUpdateIcon=false; - if(this.TasksCopy[i].Procedure.ID&&this.TasksCopy[i].number){ + // number:this.TasksCopy[i].number + if(this.TasksCopy[i].Procedure.ID){ processModelList({ procedureId: this.TasksCopy[i].Procedure.ID, page: 1, pageSize:6, - number:this.TasksCopy[i].number }).then(res=>{ if(res.code==200){ this.processList=res.data?res.data:[]; @@ -920,12 +943,11 @@ this.listData=list; this.index=index if( Object.keys(this.listData).length > 0){ - if(this.listData.Procedure.ID&&this.listData.number){ + if(this.listData.Procedure.ID){ this.$refs.processModel.islook=true return true; } } - this.$message.error('褰撳墠宸ュ簭鏃犵紪鍙凤紝鏃犳硶鏌ョ湅宸ュ簭!') }, getProcessModelList(){ this.getModelList() @@ -1163,6 +1185,8 @@ getTaskInfo({taskMode:1}).then((res) => { if (res.code === 200&&res.data) { this.TaskCount=res.data?.TaskCount ?? 0 + }else { + this.TaskCount = 0 } },err=>{ this.TaskCount = 0 @@ -1170,8 +1194,8 @@ }).finally(()=>{ this.pollingTaskCountTimer = setTimeout(()=>{ this.getTaskCountStatistics() - // 20绉掍竴娆¤疆璇� - },20000) + // 20绉掍竴娆¤疆璇� // 鏀逛竴鍒嗛挓 + },60000) }); }, @@ -1267,7 +1291,12 @@ } this.getProcessModelList(); this.getStartArr() - this.cutClick(val?val:1) + if(this.ChannelAmount===1){ + this.cutClick(1) + }else{ + this.cutClick(val?val:1) + } + if(info=='new'){ return true; } @@ -1278,6 +1307,19 @@ this.getProgressInfo(); }, 3000); } + }else{ + this.TaskCount = 0 + const allChannels = [0,1]; + this.workers = [] + allChannels.forEach(channel => this.TasksCopy.push(this.newTaskPlaceholder(channel))) + this.TasksCopy.sort((a,b)=>a.Channel - b.Channel) + this.cutClick(1) + this.getProgressInfo(); + if (!this.procInfoTimer&&!this.resprocInfoTimer) { + this.procInfoTimer = setInterval(() => { + this.getProgressInfo(); + }, 3000); + } } // if (res.code != 200 || this.TasksCopy.length == 0) { // this.getcountdown(); @@ -1289,6 +1331,14 @@ // } // } + },err=>{ + console.error(err) + this.TaskCount = 0 + const allChannels = [0,1]; + this.workers = [] + allChannels.forEach(channel => this.TasksCopy.push(this.newTaskPlaceholder(channel))) + this.TasksCopy.sort((a,b)=>a.Channel - b.Channel) + this.cutClick(1) }); // this.TasksCopy.push(this.object) // this.TasksCopy.push(this.object) @@ -1847,6 +1897,9 @@ padding: 30px; padding-top: 20px; .title { + display: flex; + align-items: center; + justify-content: space-between; font-size: 30px; font-weight: 600; height:40px; @@ -2329,4 +2382,8 @@ display: none; } } +.dashboard-title{ + display: flex; + align-items: center; +} </style> -- Gitblit v1.8.0