From e9c1bc5f107ebfdb58b6c85e01a719bbeb643d66 Mon Sep 17 00:00:00 2001 From: songshankun <songshankun@foxmail.com> Date: 星期日, 08 十月 2023 11:39:59 +0800 Subject: [PATCH] feat: 任务弹窗添加翻页展示 --- vue.config.js | 4 src/components/TaskControlModal.vue | 923 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/visualization.vue | 69 ++- 3 files changed, 972 insertions(+), 24 deletions(-) diff --git a/src/components/TaskControlModal.vue b/src/components/TaskControlModal.vue new file mode 100644 index 0000000..a32ed8d --- /dev/null +++ b/src/components/TaskControlModal.vue @@ -0,0 +1,923 @@ +<template> + <el-dialog + :close-on-click-modal="false" + :visible.sync="show" + width="753px" + class="add-event-dialog" + :show-close="false" + > + <div class="tank-box"> + <div slot="title" class="tac drawerHeader"> + <span class="title-l">{{ messageError ? '鎻愮ず' : '鏂颁换鍔�' }}</span> + </div> + <div class="dialog-content-box"> + <div style=" + margin: 0 auto; + width: 100%; + height: 100%; + overflow: hidden; + text-align: left;" + > + <template v-if="messageError"> + <div class="error-t"> + <span v-if="messageError ==='涓嬪彂鎴愬姛锛�'" class="el-icon-success color_success"></span> + <span v-else class="el-icon-error color_error"></span> + </div> + <div class="error-m"> + {{ messageError }} + </div> + <div + class="font_size_20 color_fff" + style="text-align: center; width: 100%; margin: 10px 0" + > + <span v-if="messageError ==='涓嬪彂鎴愬姛锛�'" style="font-size:30px;">{{ 3 - Number(second) }}s</span> + <span v-else>璇烽噸璇�</span> + </div> + + </template> + <template v-else-if="Object.keys(currentTaskData || {}).length"> + <div class="title-box margin_bottom_13"> + <div class="title-item color_4efefa font_size_20 title-bng"> + 褰撳墠浠诲姟锛歿{ currentTaskData.Procedure.procedure.procedureName || "" }} + </div> + <div class="title-item title-bng color_4efefa font_size_20"> + 鐢熶骇鏁伴噺锛�<span style="color:#fff;">{{ currentTaskData.Order.amount || 0 }}</span> + </div> + </div> + <div class="title-auto-box"> + <div class="title-box margin_bottom_20"> + <div class="title-item"> + 璁㈠崟缂栧彿锛歿{ currentTaskData.Order.orderId || "" }} + </div> + <div class="title-item"> + 宸ュ崟缂栧彿锛歿{ currentTaskData.Order.workOrderId || "" }} + </div> + <div class="title-item"> + 浜у搧鍚嶇О锛歿{ currentTaskData.Order.productName || "" }} + </div> + <div class="title-item"> + 鏁伴噺锛歿{ currentTaskData.Order.amount || 0 }}{{ currentTaskData.Order.unit }} + </div> + <div class="title-item"> + 浜よ揣鏃ユ湡锛歿{ currentTaskData.Order.deliverDate || "" }} + </div> + <div class="title-item"> + 宸ユ椂锛� {{ currentTaskData.Procedure.procedure.workHours || "" }} + </div> + <div class="title-item"> + 璁″垝鏃堕棿锛� {{ formatDate(currentTaskData.Order.startTime) || "" }} + - + {{ formatDate(currentTaskData.Order.endTime) }} + </div> + + <div class="title-item"> + 瀹㈡埛鍚嶇О锛歿{ currentTaskData.Order.customer || "" }} + </div> + <div class="title-item title-item-two"> + 璐х墿鎻忚堪锛� {{ currentTaskData.Order.orderAttr || "" }} + </div> + + <div class="title-item title-item-two"> + 鍙傛暟瑕佹眰锛歿{ currentTaskData.Order.parameter || "" }} + </div> + </div> + <div class="title-box margin_bottom_20"> + <div + style=" + color: #fff; + font-size: 18px; + margin-bottom: 10px; + margin-top: 20px; + " + class="color_4efefa" + > + 宸ヨ壓鍙傛暟 + </div> + <div + class="title-item title-item-two" + v-for="(item, index) in currentProcessParams" + :key="index" + > + {{ item.Key }}锛歿{ item.Value || "" }} + + </div> + </div> + </div> + <div class="process-box" v-if="showBtn === 2 || showBtn === 3"> + <div + style=" + color: red; + font-size: 26px; + width: 100%; + text-align: center; + margin-bottom: 15px; + line-height:35px; + " + :class="showBtn === 3&&isLoading?'margin-top-10px':'margin-top-40px'" + > + <div class="gif-box" v-if="showBtn === 2||(showBtn === 3&&!isLoading)"> + <template v-if="showBtn === 2"> + <div class="gif"> + <img src="../../public/shan.gif"/> + </div> + + </template> + <template v-if="showBtn === 3&&!isLoading"> + <div class="gif"> + <span class="yuandian"></span> + </div> + </template> + <div class="gif-right"> + ----- 鍓╀綑鏃堕棿 ----- + <span>00:00:{{ 30 - Number(num) < 10 ? 0 : '' }}{{ 30 - Number(num) }}</span> + </div> + </div> + {{ message }} + </div> + <template v-if="showBtn === 3&&isLoading"> + <div class="progress-item"> + <span>{{ (+num / 30) * 100 }}%</span> + <el-progress + style="width: calc(100% - 50px); float: right" + define-back-color="#CDC6C6" + color="#00cc66" + text-color="#fff" + :text-inside="true" + :stroke-width="20" + :percentage="(+num / 30) * 100" + ></el-progress> + </div> + </template> + </div> + </template> + </div> + <!--宸︾炕椤垫寜閽�--> + <div v-show="showPreviousTaskBtn" class="paginator-btn previous" @click="previousTask"><</div> + <!--鍙崇炕椤垫寜閽�--> + <div v-show="showNextTaskBtn" class="paginator-btn next" @click="nextTask">></div> + </div> + <div slot="footer" :class="messageError?'dialog-footer tac btn-error':'dialog-footer tac'" + style="overflow: hidden"> + <template v-if="messageError"> + <div class="btn" v-if="messageError ==='涓嬪彂鎴愬姛锛�'||getProcessParamsErrMsg" @click="closeClick"> + <img src="../../public/close-btn.png"/> + </div> + <div class="btn" v-else @click="confirmClick2"> + <img src="../../public/agin.png"/> + </div> + </template> + <template v-else> + <div class="btn" @click="closeClick"> + <img src="../../public/btn1.png"/> + </div> + <div class="btn" v-if="showBtn === 1"> + <div v-if='currentTaskData && currentTaskData.CanStarted' @click="confirmClick1"> + <img src="../../public/confirm1.png"/> + </div> + <div v-else> + <img src="../../public/confirm2.png"/> + </div> + </div> + <div class="btn" v-if="showBtn === 2"> + <img src="../../public/confirm2.png"/> + </div> + <div + class="btn" + v-if="showBtn === 3" + v-prevent-re-click="3000" + @click="onSubmit()" + > + <i class="el-icon-loading icon-loading" v-if="isLoading"/> + <img src="../../public/loading.png" v-if="isLoading"/> + <img src="../../public/confirm3.png" v-if="!isLoading"/> + </div> + </template> + </div> + + <div class="paginator-text" v-if="taskList?.length"> + <span class="page">{{ paginatorText.page }}</span> + <span class="total">/ {{ paginatorText.total }}</span> + </div> + </div> + </el-dialog> +</template> + +<script> +import {getTaskInfo, sendProcessParams, startTask,} from "@/api/home"; // 浜х嚎 +export default { + name: 'TaskControlModal', + components: {}, + props: { + activeName: { + type: [String, Number], + default: () => { + return 1; + }, + }, + }, + data() { + return { + show: false, + // 褰撳墠搴斿睍绀虹殑浠诲姟绱㈠紩 + currentTaskIndex: 0, + // 褰撳墠灞曠ず鐨勪换鍔″搴旂殑宸ヨ壓鍙傛暟 + currentProcessParams: [], + getProcessParamsErrMsg: '', + // 浠诲姟鍒楄〃 + taskList: [], + showBtn: 1, + num: 0, + timer: null, + safeProduce:'', + message: this.safeProduce, + messageError: "", + resParams: {}, + isLoading: false, + second: 0, + secondTimer: null, + }; + }, + mounted() { + this.getTaskList().then(() => { + const firstData = this.taskList[0] + const id = firstData?.Procedure?.ID + if (id) { + this.currentTaskIndex = this.taskList.findIndex(ele => ele.Procedure.ID === id) + this.getCurrentTaskProduceParams(id) + } + }) + this.message = this.safeProduce; + this.getInfo(); + }, + computed: { + /** + * 褰撳墠搴斿睍绀虹殑浠诲姟鏁版嵁 + * @returns {*} + */ + currentTaskData() { + return this.taskList[this.currentTaskIndex] + }, + showPreviousTaskBtn() { + return this.currentTaskIndex > 0 + }, + showNextTaskBtn() { + return this.currentTaskIndex < this.taskList.length - 1 + }, + paginatorText() { + return { + page: this.currentTaskIndex + 1, + total: this.taskList.length + } + } + }, + watch: { + taskData(val) { + this.message = this.safeProduce; + this.getInfo(); + }, + num() { + if (this.num === 30) { + clearInterval(this.timer); + this.showBtn = 3; + } + }, + second() { + if (this.second === 3) { + clearInterval(this.secondTimer); + this.closeClick() + } + }, + show(newVal) { + if (this.timer) { + clearInterval(this.timer); + } + this.num = 0; + this.showBtn = 1; + this.isLoading = false + this.second = 0 + this.secondTimer = null + this.messageError = '' + this.resParams = {}; + if (newVal){ + this.getTaskList().then(() => { + const firstData = this.taskList[0] + const id = firstData?.Procedure?.ID + if (id) { + this.currentTaskIndex = this.taskList.findIndex(ele => ele.Procedure.ID === id) + this.getCurrentTaskProduceParams(id) + } + }) + this.message = this.safeProduce; + this.getInfo(); + } + this.$emit('isTip', this.show) + }, + }, + methods: { + confirmClick2() { + this.messageError = ""; + this.isLoading = false; + }, + confirmClick1() { + this.num = 0; + this.showBtn = 2; + (this.message = this.safeProduce), + (this.timer = setInterval(() => { + this.num = this.num + 1; + }, 1000)); + }, + closeClick() { + if (this.timer) { + clearInterval(this.timer); + } + this.num = 0; + this.shutdown(); + }, + /** + * 鑾峰彇浠诲姟鍒楄〃 + */ + getTaskList() { + return getTaskInfo({taskMode: 1}).then(res => { + if (res.code == 200) { + this.taskList = res.data?.Tasks?.length ? res.data.Tasks : [] + this.safeProduce = res.data.Prompt.safeProduce ? res.data.Prompt.safeProduce : '' + this.message = this.safeProduce + } + }, err => { + this.taskList = [] + console.error(err) + },) + }, + /** + * 鑾峰彇褰撳墠灞曠ず鐨勪换鍔$殑宸ヨ壓鍙傛暟 + */ + getCurrentTaskProduceParams(id) { + // const id = this.currentTaskData?.Procedure?.ID + if (id) { + startTask({id}).then((res) => { + if (res.code === 200) { + this.currentProcessParams = res.data.Params ?? [] + } else { + this.getProcessParamsErrMsg = res.msg ?? '鑾峰彇宸ヨ壓鍙傛暟澶辫触锛�'; + } + }); + } + }, + /** + * 鍓嶇炕椤� + */ + previousTask() { + if (this.currentTaskIndex - 1 >= 0) { + this.currentTaskIndex -= 1 + this.$nextTick(() => { + const id = this.currentTaskData?.Procedure?.ID + this.getCurrentTaskProduceParams(id) + this.message = this.safeProduce; + this.getInfo() + }) + } + }, + /** + * 鍚庣炕椤� + */ + nextTask() { + if (this.currentTaskIndex + 1 <= this.taskList.length - 1) { + this.currentTaskIndex += 1 + this.$nextTick(() => { + const id = this.currentTaskData?.Procedure?.ID + this.getCurrentTaskProduceParams(id) + this.message = this.safeProduce; + this.getInfo() + }) + } + }, + getInfo() { + // 1 鏈敓浜� 2鐢熶骇涓� 3鐢熶骇瀹屾垚 + if (this.currentTaskData?.Procedure?.ID && this.currentTaskData?.Procedure?.Status === 1) { + this.num = 0; + this.showBtn = 1; + this.show = true; + } else { + this.show = false; + } + if (this.getProcessParamsErrMsg) { + this.messageError = this.getProcessParamsErrMsg; + } + }, + 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) { + if (value) { + const now = value ? new Date(value * 1000) : new Date(); + return this.getDateObj(now, "MM-dd hh:mm"); + } else { + return ""; + } + }, + + onSubmit() { + if (this.currentTaskData.Procedure.ID) { + this.message = "宸ヨ壓鍙傛暟涓嬪彂涓�..."; + this.num = 0; + this.timer = setInterval(() => { + this.num = this.num + 1; + if (this.num === 30 || this.resParams) { + this.num = 30; + this.getCode(this.resParams); + } + }, 1000); + if (this.isLoading) { + return true; + } + this.isLoading = true; + sendProcessParams({ + procedureId: this.currentTaskData.Procedure.ID, + position: Number(this.currentTaskData.Position), + }).then((res) => { + if (res.code === 200) { + this.resParams = res; + this.isLoading = false; + } else { + this.isLoading = false; + this.resParams = res; + } + }, err => { + console.error(err) + }).finally(() => { + this.isLoading = false + }); + } + }, + getCode(res) { + if (res.code === 200) { + if (this.num === 30) { + this.messageError = "涓嬪彂鎴愬姛锛�"; + if (!this.secondTimer) { + this.secondTimer = setInterval(() => { + this.second = this.second + 1; + }, 1000); + } + clearInterval(this.timer); + // this.num = 30; + // this.showBtn = 2; + this.message = this.safeProduce; + + this.num = 0; + this.showBtn = 1 + this.shutdown(); + this.$emit('getSetProductNumber', this.activeName) + // this.$message.success("涓嬪彂鐢熶骇鏁伴噺鎴愬姛锛�"); + } + } else { + this.messageError = res.msg ? res.msg : "鎶辨瓑锛屽伐搴忎笅鍙戝け璐ワ紒"; + clearInterval(this.timer); + this.num = 30; + this.showBtn = 2; + this.message = this.safeProduce; + } + }, + shutdown() { + this.show = false; + }, + }, +}; +</script> + +<style lang="scss" scoped> +.color_error { + color: red; +} + +.color_success { + color: green; +} + +.tank-box { + width: 753px; + height: 728px; + background: url("../../public/tank.png") no-repeat center center / cover; + position: relative; + + .dialog-footer { + position: absolute; + bottom: 25px; + width: 100%; + text-align: center; + } +} + +.margin-top-10px { + margin-top: 10px; +} + +.margin-top-40px { + margin-top: 40px; +} + +.color_4efefa { + color: #4efefa !important; +} + +.color_fff { + color: #fff; +} + +.font_size_20 { + font-size: 20px !important; +} + +.margin_bottom_13 { + margin-bottom: 13px; +} + +.title-box { + width: calc(100% - 140px); + height: auto; + overflow: hidden; + padding: 0 70px; + + .title-item { + width: 45%; + float: left; + height: 35px; + line-height: 35px; + font-size: 16px; + color: #fff; + + &:nth-of-type(odd) { + width: 55%; + } + } + + .title-bng { + height: 52px; + line-height: 52px; + + span { + width: calc(100% - 120px); + height: 52px; + text-align: center; + display: inline-block; + background: url("../../public/number.png") no-repeat center center / cover; + } + } + + .title-item-two { + width: 100% !important; + } +} + +.error-t { + width: 100px; + margin: 100px auto 40px; + font-size: 98px; + + span { + display: inline-block; + } +} + +.error-m { + line-height: 35px; + font-size: 28px; + color: #fff; + margin-bottom: 20px; + text-align: center; +} + +::v-deep .el-dialog { + background: transparent; +} + +::v-deep .el-dialog__header { + padding: 0 !important; +} + +::v-deep .el-dialog__body { + padding: 0 !important; +} + +.btn-error { + bottom: 80px !important; +} + +.btn { + width: 150px; + height: auto; + display: inline-block; + position: relative; + + img { + width: 100%; + } + + .icon-loading { + font-size: 32px; + color: #333; + position: absolute; + line-height: 2.0; + left: 38%; + } + + &:nth-of-type(1) { + // margin-right: 30px; + // margin-left: 110px; + } +} + +::v-deep .el-tabs__content { + height: calc(100% - 55px); + overflow-y: auto; +} + +.circel { + width: 100px; + height: 100px; + border-radius: 50%; + border: 2px solid rgba(12, 79, 218, 1); + position: relative; + float: left; + + .circel-two { + width: 75px; + height: 75px; + position: absolute; + top: 11px; + left: 11px; + border-radius: 50%; + border: 2px solid rgba(12, 79, 218, 1); + } +} + +.circel-text { + color: #fff; + margin-left: 20px; + + .circel-text-t { + font-size: 18px; + line-height: 40px; + } + + .circel-text-b { + font-weight: 700; + font-size: 14px; + + span { + color: rgba(12, 79, 218, 1); + font-size: 38px; + margin-right: 10px; + } + } +} + +.color_red { + width: 100%; + margin: 0 auto 25px auto; + text-align: center; + font-size: 14px; +} + +.form-item { + width: calc(50% - 20px); + float: left; + + &:nth-child(odd) { + margin-right: 20px; + } +} + +.form-item-two { + width: calc(50% - 20px); + float: left; + + &:nth-of-type(odd) { + margin-right: 20px; + } +} + +.form-item-three { + width: calc(100% - 20px); + float: left; +} + +.form-item-check { + width: calc(33% - 40px); + float: left; + + &:nth-of-type(odd) { + margin-right: 20px; + } +} + +.title { + width: 100%; +} + +.dialog-content-box { + height: calc(100% - 190px); + padding: 20px 0 10px; + position: relative; + + .el-form { + overflow: hidden; + } + + .title-auto-box { + height: calc(100% - 220px); + overflow: auto; + width: calc(100% - 140px); + margin: 0 auto; + background: #0E246A; + + .title-box { + padding: 0 10px; + width: calc(100% - 20px); + } + } + + .gif-box { + width: 230px; + margin: 0 auto 5px auto; + + .gif-right { + width: 210px; + font-size: 14px; + color: #fff; + line-height: 28px; + + span { + font-weight: 700; + font-size: 18px; + } + } + } + + .gif { + width: 55px; + vertical-align: middle; + float: left; + margin-right: 20px; + + img { + width: 100%; + } + + .yuandian { + width: 55px; + height: 55px; + float: left; + // background: #15d815; + background: red; + border-radius: 50%; + // margin-top:-5px; + vertical-align: middle; + } + } + + .progress-item { + width: 55%; + padding: 2px 8px; + height: 20px; + background: #fff; + border-radius: 30px; + margin: 0 auto; + border: 2px solid rgba(255, 255, 255, 0.5); + box-shadow: 1px 5px 5px rgba(255, 255, 255, 0.5); + + span { + float: left; + font-weight: 700; + color: #333; + font-size: 15px; + } + } +} + +.num-identify { + padding: 5px 8px; + background-color: rgba(255, 153, 0, 1); + border-radius: 6px; + font-size: 14px; + color: #fff; + font-weight: 600; +} + +.drawerHeader { + width: 98%; + margin: 0 auto; + overflow: hidden; + + .title-l { + width: 25%; + float: left; + margin-left: 30px; + font-size: 25px; + color: #fff; + height: 3.2vw; + line-height: 4.5vw; + } + + .title-r { + width: 60px; + float: right; + height: 60px; + line-height: 5vw; + cursor: pointer; + + img { + display: inline-block; + width: 100%; + } + } + + .identify { + width: 80px; + height: 25px; + line-height: 25px; + text-align: center; + border: 1px solid rgba(255, 153, 0, 1); + border-radius: 6px; + font-size: 16px; + color: rgba(255, 153, 0, 1); + transform: rotate(15deg); + font-weight: 600; + margin-right: 100px; + margin-top: 12px; + float: right; + } +} + +.paginator-btn { + position: absolute; + height: 40px; + width: 40px; + background-color: #09e5ed; + color: #fff; + top: 50%; + text-align: center; + font-size: 24px; + font-weight: 500; + border-radius: 50%; + margin-top: -20px; + line-height: 38px; + box-sizing: border-box; + cursor: pointer; + user-select: none; + + &.previous { + left: -60px; + padding-right: 2px; + } + + &.next { + right: -60px; + padding-left: 4px; + } +} + +.paginator-text { + position: absolute; + bottom: -30px; + height: 40px; + width: 100%; + text-align: center; + + & .page { + color: #fff; + font-size: 22px; + padding-right: 8px; + } + + & .total { + color: #ffffffaa; + font-size: 16px; + } +} +</style> diff --git a/src/views/visualization.vue b/src/views/visualization.vue index 98b8087..bbf6439 100644 --- a/src/views/visualization.vue +++ b/src/views/visualization.vue @@ -336,7 +336,7 @@ </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> @@ -457,7 +457,7 @@ <template v-if="activeName == 2 &&(!taskData||Object.keys(taskData).length==0)" > - + <el-empty description="鏆傛棤浠诲姟..."></el-empty> </template> </div> @@ -530,9 +530,9 @@ <!-- <span>{{ item.phoneNum || "" }}</span> --> <span class="color_yellow"><i class="el-icon-star-on" /><i class="el-icon-star-on" /><i class="el-icon-star-on" /><i class="el-icon-star-on" /><i class="el-icon-star-on" /></span> </dl> - + </div> - + <!-- <div style=" width: 100%; @@ -588,19 +588,14 @@ </div> </div> </div> - + </template> --> <!-- 鎺у埗鐨勫脊妗� --> <AddControl ref="control" :Arr="Arr" /> <!-- 鎺у埗鐨勫脊妗� --> - <AddIssue + <TaskControlModal ref="control" - :Arr="Arr" :activeName="activeName" - :ArrError="ArrError" - :safeProduce="safeProduce" - :taskData="taskData" - :Order="taskData.Order" @getSetProductNumber="reloadPage" @isTip="isTip" /> @@ -628,8 +623,10 @@ import AddControl from "../components/AddControl.vue"; import AddIssue from "../components/AddIssue.vue"; import ProcessModel from "../components/ProcessModel.vue"; +import TaskControlModal from "@/components/TaskControlModal.vue"; export default { components: { + TaskControlModal, Card, Knowledge, AddControl, @@ -638,6 +635,7 @@ }, data() { return { + pollingTaskCountTimer: null, activeName: 1, progress: 70, //杩涘害 passrate: 30, //鍚堟牸鐜� @@ -779,6 +777,10 @@ this.getDate2(); }, 5000); this.getTaskInfo(); + this.getTaskCountStatistics() + }, + beforeDestroy() { + clearTimeout(this.pollingTaskCountTimer) }, watch:{ // isFinsh(){ @@ -790,8 +792,8 @@ methods: { taskClick(){ if(this.TaskCount>0){ - this.getStartArr() - this.$refs.control.islook=true + // this.getStartArr() + this.$refs.control.show=true }else{ this.$message({ message:'鐩墠娌℃湁浠诲姟锛�', @@ -847,6 +849,8 @@ } }); }, + + getDateObj(date, fmt) { if (/(y+)/.test(fmt)) { @@ -910,7 +914,7 @@ 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 @@ -961,6 +965,25 @@ } }, + /** + * 杞鑾峰彇浠诲姟鏁伴噺 + */ + getTaskCountStatistics(){ + getTaskInfo({taskMode:1}).then((res) => { + if (res.code === 200&&res.data) { + this.TaskCount=res.data?.TaskCount ?? 0 + } + },err=>{ + this.TaskCount = 0 + console.error(err) + }).finally(()=>{ + this.pollingTaskCountTimer = setTimeout(()=>{ + this.getTaskCountStatistics() + // 20绉掍竴娆¤疆璇� + },20000) + }); + }, + getTaskInfo(val) { this.Tasks = []; this.TasksCopy=[] @@ -973,14 +996,14 @@ }) } this.TasksCopy = res.data.Tasks ? res.data.Tasks : []; - this.safeProduce=res.data.Prompt.safeProduce?res.data.Prompt.safeProduce:'' + // 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 // if(this.ChannelAmount>1 &&this.TasksCopy.length<2){ // this.TasksCopy.push(this.object) // } this.TaskCount=res.data.TaskCount?res.data.TaskCount:0 - + if ((this.TasksCopy.length ==0 )||!this.TasksCopy) { if (this.activeName == 1||this.activeName == 3) { this.TasksCopy.push(this.object); @@ -1007,7 +1030,7 @@ ...this.TasksCopy[i].Procedure.procedure, }, ]); - + if (this.TasksCopy[i].Procedure.ID) { startTask({ id: this.TasksCopy[i].Procedure.ID }).then((res) => { if (res.code == 200) { @@ -1085,7 +1108,7 @@ }); } } - + }, // 璁剧疆 setUrl() { @@ -1143,7 +1166,7 @@ background:#12234a!important; color:#fff!important; border-color: #09e5ed !important; - + .popper__arrow::after{ border-top-color:#09e5ed !important; } @@ -1192,7 +1215,7 @@ box-sizing: border-box; border-right: 1px solid #eee; } - + .small_title { margin-bottom: 30px; } @@ -1248,7 +1271,7 @@ font-size:14px; } } - + .el-step{ .el-step__icon{ background:#00cc66; @@ -1750,7 +1773,7 @@ border-radius: 5px 5px 0 0; background: rgb(19, 35, 90); } - + .card_contentRight { width: 100%; @@ -1821,7 +1844,7 @@ display:inline-block; } } - + .yuandian { width: 25px; height: 25px; diff --git a/vue.config.js b/vue.config.js index d51a8bb..cd9a548 100644 --- a/vue.config.js +++ b/vue.config.js @@ -72,7 +72,9 @@ // 寮犻獮鏈湴 // target: "http://192.168.20.120:8003", // 鍗氬畤 - target: "http://192.168.20.119:8003", + // target: "http://192.168.20.119:8003", + // 绾夸笂 + target: "http://192.168.8.113:8080", ws: true, changeOrigin: true, }, -- Gitblit v1.8.0