From cb7d0f1d6883c185d3af3de40206e46dd0bf3152 Mon Sep 17 00:00:00 2001 From: haoxuan <haoxuan> Date: 星期六, 26 八月 2023 16:53:09 +0800 Subject: [PATCH] 修改 --- src/views/visualization.vue | 326 +++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 239 insertions(+), 87 deletions(-) diff --git a/src/views/visualization.vue b/src/views/visualization.vue index 1ed1c74..3205d3a 100644 --- a/src/views/visualization.vue +++ b/src/views/visualization.vue @@ -1,7 +1,8 @@ <template> <div class="home"> - <template v-if="Object.keys(taskData).length > 0"> + <!-- --> + <template v-if="Object.keys(taskData).length > 0 && taskData.Procedure.ID"> <div class="left"> <p class="title"> 鐢熶骇绠$悊鐪嬫澘 @@ -27,20 +28,24 @@ <span class="title-item" >鍚庨亾宸ュ簭: <span class="color_4efefa"> - <!-- {{ - taskData.NextProcedure.procedure.procedureName || "--" - }} --> + {{ + taskData.Procedure.procedure.nextProcedureName || "--" + }} </span> </span> <span class="title-item" >宸ヤ綔浜烘暟: - <span class="color_4efefa" + <span class="color_4efefa"> + <span + v-if=" + taskData.Procedure.procedure && + taskData.Procedure.procedure.workers + " + >{{ taskData.Procedure.procedure.workers.length }}</span > - <span v-if="taskData.Procedure.procedure&&taskData.Procedure.procedure.workers">{{ taskData.Procedure.procedure.workers.length }}</span> - <span v-else>0</span> - 浜� - </span - > + <span v-else>0</span> + 浜� + </span> </span> </div> <div class="content"> @@ -82,11 +87,9 @@ {{ taskData.Procedure.procedure.workHours || "" }} </el-descriptions-item> <el-descriptions-item label="璧锋鏃堕棿" - >{{ formatDate(taskData.Procedure.procedure.startTime) || "" }} + >{{ formatDate(taskData.Order.startTime) || "" }} - - {{ - formatDate(taskData.Procedure.procedure.endTime) - }}</el-descriptions-item + {{ formatDate(taskData.Order.endTime) }}</el-descriptions-item > <el-descriptions-item label="璐х墿鎻忚堪">{{ taskData.Order.orderAttr || "" @@ -104,17 +107,17 @@ <el-progress define-back-color="#133EAF" color="#09E5ED" + text-color="#fff" :text-inside="true" :stroke-width="30" - :percentage=" - finishPercent - " + :percentage="taskData.Order?parseInt(finishNumber/taskData.Order.amount*100):0" ></el-progress> </el-descriptions-item> <!-- <el-descriptions-item label="鍚堟牸鐜�" style="width: 100%"> <el-progress define-back-color="#007101" color="#00CC66" + text-color="#fff" :text-inside="true" :stroke-width="30" :percentage="passrate" @@ -196,19 +199,16 @@ </div> <div class="card_top-3"> <span class="card-top-r-t" - >瀹屾垚杩涘害锛歿{ - finishPercent || 0 - }}</span + >瀹屾垚杩涘害锛歿{ taskData.Order?parseInt(finishNumber/taskData.Order.amount*100):0}}</span > <span class="card-top-r-b"> <el-progress define-back-color="#133EAF" color="#09E5ED" + text-color="#fff" :text-inside="true" :stroke-width="10" - :percentage=" - finishPercent - " + :percentage="taskData.Order?parseInt(finishNumber/taskData.Order.amount*100):0" :show-text="false" ></el-progress> </span> @@ -347,12 +347,12 @@ <div class="right-top-l">浣滀笟鐘舵��</div> <div class="time"> <dl> - <dd><span style="font-size: 32px">17:50</span></dd> + <dd><span style="font-size: 32px">{{ formatTime3 }}</span></dd> <dd> - <span style="font-size: 12px; margin-right: 10px" - >2023/02/16</span + <span style="font-size: 12px; " + >{{ formatTime2 }}</span > - <span style="font-size: 14px">鏄熸湡鍥�</span> + <!--margin-right: 10px <span style="font-size: 14px">鏄熸湡鍥�</span> --> </dd> </dl> </div> @@ -365,11 +365,14 @@ </span> </div> <div class="right-top-m-btn"> - <el-button type="primary" @click="controlClick"> 鎺у埗</el-button> + <!-- <el-button type="primary" @click="controlClick"> 鎺у埗</el-button> --> </div> <div class="right_dutyLst"> <div class="right-small-title">褰撳墠鍊肩彮</div> - <div class="right-person-box" v-if="taskData.Procedure.procedure.workers"> + <div + class="right-person-box" + v-if="taskData.Procedure.procedure.workers" + > <dl class="right-small-person" v-for="(item, index) in taskData.Procedure.procedure.workers" @@ -389,7 +392,7 @@ style="font-size: 20px; font-weight: 600; margin-right: 10px" >{{ item.workerName || "" }}</span > - <span style="color: #666">{{ item.phoneNum || "" }}</span> + <span>{{ item.phoneNum || "" }}</span> </dl> </div> <!-- <div @@ -416,35 +419,39 @@ </div> </div> </template> + <!-- --> <template v-else> - <div - style=" - width: 100%; - height: 100%; - font-size: 20px; - text-align: center; - line-height: 100px; - " - > - <div - style=" - width: 200px; - height: 200px; - margin: 0 auto; - line-height: 200px; - margin-top: calc(20% - 100px); - " - > - 鏆傛棤浠诲姟 + <div class="home-img-box"> + <div class="bg-title"> + <img src="../../public/bg-title.png" /> + <span class="bg-title-span">璁惧瀹炴椂鐢熶骇鐪嬫澘</span> + <div class="bg-date"><span>{{ formatTime3 }}</span><br/>{{formatTime2}}</div> + <span + class="font el-icon-setting set-title bg-set" + @click="setUrl" + ></span> + </div> + <div class="yuan"> + <img src="../../public/yuan.png" /> + <div class="btn-img"> + <div class="font_size_16" style="line-height: 5; margin-top: 18%"> + <span v-if="showCountDown">璺濈浠诲姟寮�濮嬫椂闂达細{{countDownHour}}鏃� {{countDownMinute}}鍒�</span> + <span v-else>鏆傛棤浠诲姟锛屼紤鎭竴涓嬪惂...</span> + </div> + <el-button type="primary" @click="reloadPage">鍒锋柊浠诲姟</el-button> + </div> </div> </div> </template> <!-- 鎺у埗鐨勫脊妗� --> - <AddControl ref="control" :id="taskData.Procedure.ID" /> + <AddControl ref="control" :Arr="Arr" /> + <!-- 鎺у埗鐨勫脊妗� --> + <AddIssue ref="control" :Arr="Arr" :taskData="taskData" :Order="taskData.Order" @getSetProductNumber="getTaskInfo" /> </div> </template> <script> + import { getTaskInfo, finishTask, @@ -452,15 +459,18 @@ saveMiniDict, startTask, getProgress, + countdown, } from "@/api/home/index"; // 浜х嚎 import Card from "@/components/Card.vue"; import Knowledge from "../components/Knowledge.vue"; import AddControl from "../components/AddControl.vue"; +import AddIssue from "../components/AddIssue.vue"; export default { components: { Card, Knowledge, AddControl, + AddIssue, }, data() { return { @@ -468,16 +478,13 @@ passrate: 30, //鍚堟牸鐜� production: 25, //鐢熶骇涓� finishNumber: 0, - finishPercent:0, + formatTime2:'', + formatTime3:'', // 鍙充晶瀹屾垚 finishShow: false, - inputMaterials: [ - - ], + inputMaterials: [], outputMaterials: [], - procedureList: [ - - ], + procedureList: [], taskData: { Order: { amount: "", @@ -519,6 +526,11 @@ }, }, }, + totalNumber:0, + showCountDown:false, + countDownHour:0, + countDownMinute:0, + Arr:[], }; }, mounted() { @@ -527,38 +539,82 @@ // this.passrate = this.getRandomNumber(1, 100); // this.production = this.getRandomNumber(1, 100); // }, 3000); + this.getDate3() + this.getDate2() + setInterval(()=>{ + this.getDate3() + this.getDate2() + },5000) this.getTaskInfo(); - setInterval(() => { - this.getProgressInfo(); - }, 60000); }, - methods: { - getProgressInfo() { - getProgress().then((res) => { + + reloadPage() { + // window.location.reload(); + this.getTaskInfo(); + }, + getcountdown(){ + countdown().then((res) => { if (res.code == 200) { - this.finishNumber=res.data.finishNumber; - this.finishPercent=res.data.finishPercent; + this.showCountDown=res.data.ShowCountDown?res.data.ShowCountDown:false; + this.countDownHour=res.data.CountDownHour?res.data.CountDownHour:0 + this.countDownMinute=res.data.CountDownMinute?res.data.CountDownMinute:0 } }); }, - getDateObj(ms) { - const now = ms ? new Date(ms) : new Date(); - const y = now.getFullYear(); - let m = now.getMonth() + 1; - m = m > 9 ? m : "0" + m; - let d = now.getDate(); - d = d > 9 ? d : "0" + d; - return { y, m, d }; + getProgressInfo() { + getProgress().then((res) => { + if (res.code == 200) { + this.finishNumber = res.data.finishNumber ? res.data.finishNumber : 0; + + } + }); + }, + getDateObj(date, fmt) { + if (/(y+)/.test(fmt)) { + fmt = fmt.replace( + RegExp.$1, + (date.getFullYear() + "").substr(4 - RegExp.$1.length) + ); + } + let o = { + "M+": date.getMonth() + 1, + "d+": date.getDate(), + "h+": date.getHours(), + "m+": date.getMinutes(), + "s+": date.getSeconds(), + }; + for (let k in o) { + if (new RegExp(`(${k})`).test(fmt)) { + let str = o[k] + ""; + fmt = fmt.replace( + RegExp.$1, + RegExp.$1.length === 1 ? str : this.padLeftZero(str) + ); + } + } + return fmt; + }, + padLeftZero(str) { + return ("00" + str).substr(str.length); }, // 鏍煎紡鍖栨椂闂� ==> yyyy-mm-dd - formatDate(value, str) { + formatDate(value) { if (value) { - const dateObj = this.getDateObj(value); - return "" + dateObj.y + "-" + dateObj.m + "-" + dateObj.d; + const now = value ? new Date(value * 1000) : new Date(); + let time = this.getDateObj(now, "yyyy-MM-dd hh:mm:ss"); + return time; } else { return ""; } + }, + getDate3(){ + let now= new Date(); + this.formatTime3 = this.getDateObj(now, "hh:mm"); + }, + getDate2(){ + let now = new Date(); + this.formatTime2 = this.getDateObj(now, "yyyy骞碝M鏈坉d鏃�"); }, setInterCard(value, name) { let height = 200; @@ -596,36 +652,52 @@ getTaskInfo() { this.taskData = { Order: {}, - Procedure: { procedure: { inputMaterials: [], outputMaterials: [],workers:[] } }, - + Procedure: { + procedure: { inputMaterials: [], outputMaterials: [], workers: [] }, + }, }; getTaskInfo().then((res) => { if (res.code == 200) { + this.procedureList=[] this.taskData = res.data ? res.data : { Order: {}, Procedure: { - procedure: { inputMaterials: [], outputMaterials: [] }, + procedure: { + inputMaterials: [], + outputMaterials: [], + workers: [], + }, }, }; - this.taskData.Procedure.procedure.workers=this.taskData.Procedure.procedure.workers?this.taskData.Procedure.procedure.workers:[] + this.taskData.Procedure.procedure.workers = this.taskData.Procedure + .procedure.workers + ? this.taskData.Procedure.procedure.workers + : []; this.procedureList.push([ { name: "宸ュ簭", ...this.taskData.Procedure.procedure, }, ]); + + if (this.taskData.Procedure.ID) { startTask({ id: this.taskData.Procedure.ID }).then((res) => { if (res.code == 200) { // res.data.number this.procedureList[0].push({ - number: res.data.number, + number: res.data.Number, name: "宸ヨ壓", }); + this.Arr=res.data.Params?res.data.Params:[]; } }); + this.getProgressInfo(); + setInterval(() => { + this.getProgressInfo(); + }, 6000); } console.log(this.procedureList, "===1111procedureList"); // setTimeout(() => { @@ -634,14 +706,23 @@ this.setInterCard("outputMaterials", "cardBox3"); // }, 5000); } + if(res.code!=200||!this.taskData.Procedure.ID){ + this.getcountdown(); + setInterval(() => { + this.getcountdown(); + }, 60000); + } }); }, // 璁剧疆 setUrl() { - const { href } = this.$router.resolve({ + // const { href } = this.$router.resolve({ + // path: "/set", + // }); + // window.open(href, "_blank"); + this.$router.push({ path: "/set", }); - window.open(href, "_blank"); }, // 鍙充晶鎺у埗 controlClick() { @@ -676,6 +757,77 @@ </script> <style lang="scss"> +.set-title{ + cursor:pointer; +} +.home-img-box { + width: calc(100% - 40px); + height: calc(100% - 40px); + margin: 0 auto; + overflow: hidden; + padding: 20px; + .bg-title { + width: 90%; + margin: 0 auto; + position: absolute; + img { + width: 100%; + } + .bg-title-span { + position: absolute; + width: 30%; + height: 4rem; + line-height:2.4; + font-size: 26px; + font-weight: 700; + text-align: center; + left: 36%; + top: 1.5rem; + display: inline-block; + } + .bg-set{ + position:absolute; + right:10%; + height: 4rem; + line-height:2.4; + font-size: 40px; + font-weight: 700; + top: 1rem; + } + .bg-date{ + position:absolute; + left:3%; + height: 100px; + line-height: 30px; + font-size: 16px; + top: 15%; + span{ + font-size: 35px; + font-weight: 700; + line-height: 20px; + } + } + + } + .yuan { + width: 40%; + height: 80%; + margin: 0 auto; + margin-top: 10%; + position: relative; + img { + width: 100%; + } + .btn-img { + width: 100%; + height: 50%; + margin: 0 auto; + text-align: center; + position: absolute; + top: 9rem; + } + } +} .font-arrow-20 { font-size: 30px; font-weight: 700; @@ -766,7 +918,6 @@ .small_title { font-size: 24px; - font-weight: 600; margin-bottom: 10px; } .right-small-btn { @@ -801,13 +952,13 @@ width: 100%; height: 100%; color: #fff; - background: rgb(19 35 90); + background: #12234a; overflow: hidden; .left { width: calc(78% - 60px); height: 100%; min-height: 100%; - background: rgb(19 35 90); + background: #12234a; float: left; padding: 30px; padding-top: 20px; @@ -1112,7 +1263,8 @@ } .right_dutyLst { width: calc(100% - 20px); - height: 270px; + // height: 270px; + height: 310px; border-radius: 4px; line-height: 30px; overflow: hidden; -- Gitblit v1.8.0