From e51c1799ce6e4f0a3d84ceb8870cc58507c5f422 Mon Sep 17 00:00:00 2001 From: haoxuan <haoxuan> Date: 星期日, 08 十月 2023 16:42:41 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/web/SchedulingDashboard into wn --- src/views/visualization.vue | 204 ++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 154 insertions(+), 50 deletions(-) diff --git a/src/views/visualization.vue b/src/views/visualization.vue index bbf6439..4a0d6f3 100644 --- a/src/views/visualization.vue +++ b/src/views/visualization.vue @@ -124,6 +124,10 @@ </div> </div> <div class="content_right"> + <div class="gif" v-if="taskData.Procedure.ID" @click="processModelClick(taskData)"> + <img v-if="isUpdateIcon" src="../../public/shan.gif" /> + <span v-else class="yuandian"></span> + </div> <el-descriptions :column="(activeName == 1||activeName == 3) ? 2 : 1" :colon="true"> <el-descriptions-item label="浜у搧鍚嶇О">{{ taskData.Order.productName || "--" @@ -271,11 +275,12 @@ v-for="(item, index) in taskData.procedureList" > <div - class="card" :key="index2" v-for="(list, index2) in item" > - <template v-if="list.name == '宸ュ簭'"> + <div + class="card" + v-if="list.name == '宸ュ簭'"> <div class="card_content"> <div class="card_contentLeft color_blue font_dian"> <!-- {{ list.deviceName }} --> @@ -333,24 +338,34 @@ <!-- <span class="card-top-r-t">瀹屾垚杩涘害锛�50%</span> <span class="card-top-r-b">12鏈�28鏃� 08:24</span> --> </div> - </template> - <template v-else> - <!-- <div class="card_content"> - - </div> --> - <div :class="(activeName==1||activeName == 3)?'card_top-4 font_size_20px':'card_top-4'"> - <div>宸ヨ壓缂栧彿锛�<div >{{ list.number }}</div></div> - <!-- <div - style=" - font-size: 14px; - color: #cfcfcf; - line-height: 20px; - " + </div> + <div v-else class="process-params"> + <div class="process-params-title"> + <el-popover + width="200" + :content="list.number" + placement="top-start" + trigger="click" > - 宸ヨ壓鐨勫叿浣撲俊鎭鐐瑰嚮鎺у埗鏌ョ湅锛� - </div> --> + <span slot="reference">宸ヨ壓缂栧彿锛歿{ list.number }}</span> + </el-popover> + </div> - </template> + <div class="process-params-value"> + <!-- 宸ヨ壓鍙傛暟--> + {{mergeProcessParams(taskData.Arr)}} + </div> + + <!-- <div + style=" + font-size: 14px; + color: #cfcfcf; + line-height: 20px; + " + > + 宸ヨ壓鐨勫叿浣撲俊鎭鐐瑰嚮鎺у埗鏌ョ湅锛� + </div> --> + </div> </div> </el-carousel-item> </el-carousel> @@ -496,7 +511,6 @@ <span v-else> <img v-if="plcStatus == 1&&!plcNotConnected" src="../../public/duan.png" /> <img v-else src="../../public/lian.png" /> - <!-- <span class="yuandian"></span> --> {{ plcStatus==1?'鏂紑':(plcStatus==2?'鐢熶骇涓�':'寰呮満') }} </span> </span> @@ -602,7 +616,7 @@ <!-- 宸ヨ壓妯″瀷 --> <ProcessModel ref="processModel" - :processList="processList" + :listData="listData" /> </div> </template> @@ -617,6 +631,7 @@ getProgress, countdown, getTaskUnStarted, + processModelList, } from "@/api/home/index"; // 浜х嚎 import Card from "@/components/Card.vue"; import Knowledge from "../components/Knowledge.vue"; @@ -735,6 +750,7 @@ // 璁板綍瀹氭椂鍣ㄧ姸鎬� procInfoTimer: null, cutdownTimer: null, + ProcessModelTimer: null, TaskCount:0, plcStatus:0, isTipShow:false, @@ -752,16 +768,11 @@ outputMaterials: [], procedureList: [], }, - processList:[ - { - name:'浜у搧1+宸ヨ壓2', - number:'v1.0' - }, - { - name:'浜у搧1+宸ヨ壓2', - number:'v2.0' - } - ] + processList:[], + isUpdateIcon:false, + listData:[], + resResult:null, + resprocInfoTimer:null, }; }, mounted() { @@ -781,6 +792,8 @@ }, beforeDestroy() { clearTimeout(this.pollingTaskCountTimer) + clearTimeout(this.procInfoTimer) + clearTimeout(this.ProcessModelTimer) }, watch:{ // isFinsh(){ @@ -790,6 +803,59 @@ // } }, methods: { + + getModelList(){ + this.resResult=null + for (let i in this.TasksCopy){ + if(this.TasksCopy[i].Procedure.ID&&this.TasksCopy[i].number){ + 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:[]; + if(this.processList.length>0){ + for(let i in this.processList){ + if(this.processList[i].isUpdate){ + this.isUpdateIcon=true; + break; + } + } + } + } + this.resResult=res; + }) + } + } + }, + processModelClick(list){ + this.listData=list; + if( Object.keys(this.listData).length > 0){ + if(this.listData.Procedure.ID&&this.listData.number){ + this.$refs.processModel.islook=true + return true; + } + } + this.$message.error('褰撳墠宸ュ簭鏃犵紪鍙凤紝鏃犳硶鏌ョ湅宸ュ簭!') + + }, + getProcessModelList(){ + this.getModelList() + if (!this.ProcessModelTimer&&!this.resResult) { + this.ProcessModelTimer = setInterval(() => { + this.getModelList(); + }, 10000) + } + }, + mergeProcessParams(params){ + if (params?.length){ + return params.map(ele=> `${ele.Key}: ${ele.Value}`).join(' ') + }else{ + return '' + } + }, taskClick(){ if(this.TaskCount>0){ // this.getStartArr() @@ -1018,6 +1084,7 @@ this.TasksCopy[i].inputMaterials = []; this.TasksCopy[i].outputMaterials = []; this.TasksCopy[i].finishNumber = 0; + this.TasksCopy[i].number=0; this.finishShow['finishShow&'+i]=false this.TasksCopy[i].Procedure.procedure.workers = this.TasksCopy[i].Procedure .procedure.workers @@ -1034,11 +1101,12 @@ if (this.TasksCopy[i].Procedure.ID) { startTask({ id: this.TasksCopy[i].Procedure.ID }).then((res) => { if (res.code == 200) { + this.TasksCopy[i].number=res.data.Number // res.data.number this.TasksCopy[i].procedureList[0].push({ number: res.data.Number, }); - // this.TasksCopy[i].Arr=res.data.Params ? res.data.Params : [] + this.TasksCopy[i].Arr=res.data.Params ? res.data.Params : [] // this.isFinsh=Number(i)+1 } }); @@ -1048,11 +1116,12 @@ } this.getStartArr() this.getProgressInfo(); - if (!this.procInfoTimer) { + if (!this.procInfoTimer&&!this.resprocInfoTimer) { this.procInfoTimer = setInterval(() => { this.getProgressInfo(); }, 3000); - } + } + this.getProcessModelList(); } // if (res.code != 200 || this.TasksCopy.length == 0) { // this.getcountdown(); @@ -1093,6 +1162,7 @@ }) }, getProgressInfo() { + this.resprocInfoTimer=null for (let i in this.TasksCopy){ if(this.TasksCopy[i].Procedure.ID){ getProgress({ @@ -1105,10 +1175,10 @@ : 0; this.plcStatus=res.data.plcStatus?res.data.plcStatus:0 } + this.resprocInfoTimer=res; }); } } - }, // 璁剧疆 setUrl() { @@ -1399,6 +1469,16 @@ background: #09e5ed !important; color: #333 !important; } +.yuandian { + width: 35px; + height: 35px; + display:inline-block; + // background: #15d815; + background:red; + border-radius: 50%; + // margin-top:-5px; + vertical-align: middle; + } .bottom_list { position: relative; padding: 10px; @@ -1459,8 +1539,7 @@ overflow-y:auto; } .el-carousel__item{ - // height:auto; - min-height:160px; + height:auto; } } .bottom-box-btn{ @@ -1468,6 +1547,10 @@ position:absolute; bottom:10px; left:10px; + .el-button{ + height: 40px; + + } } } @@ -1475,7 +1558,6 @@ font-size: 20px; } .right-small-btn { - margin-top: 10px; width: calc(100% - 20px); margin: 0 auto; position: absolute; @@ -1603,6 +1685,17 @@ padding: 0 10px; background: rgb(22 72 173); border-radius: 6px; + position:relative; + .gif{ + position:absolute; + right:15px; + top:10px; + width:35px; + vertical-align: middle; + img{ + width:100%; + } + } // background: #233b9e; .el-descriptions-row{ height:45px; @@ -1844,18 +1937,6 @@ display:inline-block; } } - - .yuandian { - width: 25px; - height: 25px; - line-height: 40px; - margin-top: 12.5px; - display: inline-block; - background: #15d815; - display: block; - border-radius: 50%; - float: right; - } } .right-top-m-btn { margin-top: 10px; @@ -1927,7 +2008,7 @@ .right-base-btn { width: 100%; position: absolute; - bottom: 0; + bottom: 24px; left: 0; .el-button--primary { width: 100%; @@ -1937,6 +2018,10 @@ color: #fff; font-weight: 700; font-size: 18px; + height: 40px; + display: flex; + align-items: center; + justify-content: center; } } // .call { @@ -1962,4 +2047,23 @@ font-weight: 700 !important; font-size: 16px; } +.process-params{ + margin-top: 10px; + border-radius: 5px; + overflow: hidden; + color: #fff; + font-size: 12px; + &-title{ + height: 25px; + padding: 0 5px; + background-color: #13235a; + line-height: 25px; + } + &-value{ + background-color: #6b83ff; + min-height: 45px; + box-sizing: border-box; + padding: 12px; + } +} </style> -- Gitblit v1.8.0