From 0d4b65b968fdbf59cc9c0b0b2ca2091b4fc6c4ba Mon Sep 17 00:00:00 2001 From: songshankun <songshankun@foxmail.com> Date: 星期五, 10 十一月 2023 11:50:38 +0800 Subject: [PATCH] feat: 添加获取/设定设备配置接口,添加设备配置弹窗,生产弹窗添加根据配置决定是否允许无工艺参数生产 --- src/views/visualization.vue | 148 ++++++++++++++++++++++++++++++++++++------------- 1 files changed, 108 insertions(+), 40 deletions(-) diff --git a/src/views/visualization.vue b/src/views/visualization.vue index b2c21a5..65eda1a 100644 --- a/src/views/visualization.vue +++ b/src/views/visualization.vue @@ -38,6 +38,11 @@ @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" > @@ -53,7 +58,7 @@ > <template v-if="taskData"> <div class="gong-date"> - 宸ュ簭杩愯鏃堕棿锛歿{ getFormatTime(taskData.Procedure.startTime) }} + 宸ュ簭杩愯鏃堕棿锛歿{ getTaskRunningTime(taskData.Procedure.realStartTime,taskData.Procedure.realEndTime) }} </div> <div class="statelist"> <span class="title-item" @@ -145,9 +150,9 @@ {{ taskData.Procedure.procedure.workHours || "--" }} </el-descriptions-item> <el-descriptions-item label="璁″垝鏃堕棿" - >{{ formatDate(taskData.Order.startTime) || "--" }} + >{{ formatDate(taskData.Procedure.startTime) || "--" }} - - {{ formatDate(taskData.Order.endTime) }}</el-descriptions-item + {{ formatDate(taskData.Procedure.endTime) }}</el-descriptions-item > <el-descriptions-item label="閫氶亾"> {{ channelNameConfig[taskData.Channel] || "--" }} @@ -306,7 +311,7 @@ </div> <div class="card_top-2"> <div style="line-height: 45px; text-align: center"> - {{ taskData?.plcStatus === 3 ? '寰呮満' : (taskData.Procedure.Status==3?'鐢熶骇瀹屾垚':'鐢熶骇涓�') }} + {{ displayProcedureStatus(taskData) }} </div> <!-- <span class="card-top-r-t">瀹屾垚杩涘害锛�50%</span> <span class="card-top-r-b">12鏈�28鏃� 08:24</span> --> @@ -593,6 +598,7 @@ :listData="listData" @updateGet="updateGet" /> + <ParamsConfigModal :visible="paramsConfigIsShow" @close="closeParamsConfigModal"></ParamsConfigModal> </div> </template> @@ -616,8 +622,10 @@ import TaskControlModal from "@/components/TaskControlModal.vue"; import {channelNameConfig} from "@/common/constants"; import _ from 'lodash' +import ParamsConfigModal from "@/components/ParamsConfigModal.vue"; export default { components: { + ParamsConfigModal, TaskControlModal, Card, Knowledge, @@ -753,6 +761,7 @@ resprocInfoTimer:null, channelNameConfig: channelNameConfig, index:null, + paramsConfigIsShow:false }; }, mounted() { @@ -803,6 +812,37 @@ } }, methods: { + newTaskPlaceholder(channel){ + return { + Order: {}, + Procedure: { + procedure: { inputMaterials: [], outputMaterials: [], workers: [] }, + }, + Channel:channel, + inputMaterials: [], + outputMaterials: [], + procedureList: [], + } + }, + /** + * 灞曠ず宸ュ簭鐘舵�� + * 濡傛灉PLC鐨勭姸鎬佹槸寰呮満瑕佽窡闅廝LC鐘舵�� + * @param taskData + * @return {string} + */ + displayProcedureStatus(taskData){ + if (taskData?.plcStatus === 3){ + return '寰呮満' + } + if (!taskData?.Procedure?.Status){ + return '' + } + if (taskData.Procedure.Status===3){ + return '鐢熶骇瀹屾垚' + }else{ + return '鐢熶骇涓�' + } + }, /** * 浠庝换鍔′腑鑾峰彇鍔犲伐鏁板拰鐩爣鏁� * @param taskData @@ -871,7 +911,7 @@ } } this.resResult[i]=res; - console.log( this.resResult[i],'===res111') + // console.log( this.resResult[i],'===res111') }) } } @@ -1027,23 +1067,55 @@ let now = new Date(); this.formatTime2 = this.getDateObj(now, "yyyy骞碝M鏈坉d鏃�"); }, - getFormatTime(date){ - const getCha=()=>{ - let now=new Date().getTime() - let String=now-date*1000; - let seconds=Math.floor(String/1000) - let minutes=Math.floor(seconds/60) - - let days=Math.floor(String/1000/60/60/24) - let hours=Math.floor(minutes/60)-days*24 - let m=minutes-days*24*60-hours*60 - return days+'澶�'+hours+'鏃�'+m+'鍒�' + /** + * 璁$畻鏃堕棿娈�, 娉ㄦ剰鍙傛暟瑕佹眰鏃堕棿鎴充负 JS Date 鐨�13浣嶆椂闂存埑 + * @param {number} startTime + * @param {number} endTime + * @return {string} + */ + calcRunningDuration(startTime,endTime){ + let timeDuration=endTime-startTime; + if (timeDuration<0){ + return '0澶�0鏃�0鍒�' } - let d= getCha() + + let seconds=Math.floor(timeDuration/1000) + let minutes=Math.floor(seconds/60) + + let days=Math.floor(timeDuration/1000/60/60/24) + let hours=Math.floor(minutes/60)-days*24 + let m=minutes-days*24*60-hours*60 + return `${days}澶�${hours}鏃�${m}鍒哷 + }, + + /** + * 宸ュ簭杩愯鏃堕棿 + * 鏍规嵁鎺ュ彛杩斿洖 realStartTime realEndTime 鍒ゆ柇濡備綍灞曠ず + * 濡傛灉 realEndTime 涓� 0 鍒� 鐢ㄥ綋鍓嶆椂闂� - realStartTime + * 濡傛灉 瀛樺湪 realEndTime, 鍒� realEndTime - realStartTime + * 娉ㄦ剰 realStartTime realEndTime 鏄帴鍙h繑鍥炵殑10浣嶆椂闂存埑 + * @param realStartTime + * @param realEndTime + * @return {string} + */ + getTaskRunningTime(realStartTime,realEndTime){ + const getInfo = ()=>{ + if (!realStartTime && !realEndTime){ + return '--' + } + if(!realEndTime){ + const now = Math.floor(new Date().getTime()/1000) * 1000 + return this.calcRunningDuration(realStartTime*1000,now) + } + + return this.calcRunningDuration(realStartTime*1000,realEndTime*1000) + } + + let result = getInfo() setInterval(() => { - d= getCha(); + result = getInfo(); }, 6000); - return date?d:'--'; + return result; }, setInterCard(value, name, i) { if (this.TasksCopy[i].Procedure.procedure[value]!=null) { @@ -1127,29 +1199,22 @@ this.TasksCopy=[] getTaskInfo({taskMode:2}).then((res) => { if (res.code == 200&&res.data) { - // let arr=[] - if(res.data.Tasks){ - res.data.Tasks.sort(function(a,b){ - return (a.Channel - b.Channel) - }) - } - this.TasksCopy = res.data.Tasks ? res.data.Tasks : []; + this.TasksCopy = res.data?.Tasks ?? []; // this.safeProduce=res.data.Prompt.safeProduce?res.data.Prompt.safeProduce:'' - this.plcNotConnected=res.data.Prompt.plcNotConnected?res.data.Prompt.plcNotConnected:'' - this.ChannelAmount=res.data.ChannelAmount?res.data.ChannelAmount:1 + this.plcNotConnected=res.data.Prompt.plcNotConnected ?? '' + this.ChannelAmount=res.data.ChannelAmount ?? 1 // if(this.ChannelAmount>1 &&this.TasksCopy.length<2){ // this.TasksCopy.push(this.object) // } - this.TaskCount=res.data.TaskCount?res.data.TaskCount:0 + this.TaskCount=res.data.TaskCount ?? 0 - if ((this.TasksCopy.length ==0 )||!this.TasksCopy) { - if (this.activeName == 1||this.activeName == 3) { - this.TasksCopy.push(this.object); - } else { - this.TasksCopy.push(this.object); - this.TasksCopy.push(this.object); - } - } + // 鎵惧嚭缂哄皯浠诲姟鏁版嵁鐨勯�氶亾, 浣跨敤鍗犱綅鏁版嵁鍗犱綇瀵瑰簲閫氶亾 + const channelNumbers = this.TasksCopy.map(task=>task.Channel) + const allChannels = [0,1]; + const lackChannels = _.chain(allChannels).difference(channelNumbers).value() + lackChannels.forEach(channel => this.TasksCopy.push(this.newTaskPlaceholder(channel))) + this.TasksCopy.sort((a,b)=>a.Channel - b.Channel) + this.workers=res.data.workers?res.data.workers:[] // 灏嗗�肩彮浜烘牴鎹�氶亾鍙峰垎缁� @@ -1276,10 +1341,8 @@ getProgressInfo() { this.resprocInfoTimer=null for (let i in this.TasksCopy){ - if(this.TasksCopy[i].Procedure.ID){ getProgress({ channel: Number(i), - procedureId: this.TasksCopy[i].Procedure.ID, }).then((res) => { if (res.code == 200) { this.TasksCopy[i].finishNumber = res.data?.finishNumber ?? 0; @@ -1289,7 +1352,6 @@ } this.resprocInfoTimer=res; }); - } } }, // 璁剧疆 @@ -1302,6 +1364,12 @@ path: "/set", }); }, + openParamsConfigModal(){ + this.paramsConfigIsShow=true + }, + closeParamsConfigModal(){ + this.paramsConfigIsShow=false + }, // 鍙充晶鎺у埗 controlClick() { if (this.Tasks.length > 0) { -- Gitblit v1.8.0