From ffeb05ad55f62677ed915c1f19c765a2550cc07e Mon Sep 17 00:00:00 2001
From: haoxuan <haoxuan>
Date: 星期三, 13 九月 2023 20:44:06 +0800
Subject: [PATCH] 面板改版 2023-9-13
---
public/two-blue.png | 0
public/one-blue.png | 0
public/tank.png | 0
public/one.png | 0
src/views/visualization.vue | 1145 ++++++++++++++++++++++++++++++++++----------------------
public/two.png | 0
src/api/home/index.js | 15
src/components/AddIssue.vue | 31
8 files changed, 707 insertions(+), 484 deletions(-)
diff --git a/public/one-blue.png b/public/one-blue.png
new file mode 100644
index 0000000..2796b0d
--- /dev/null
+++ b/public/one-blue.png
Binary files differ
diff --git a/public/one.png b/public/one.png
new file mode 100644
index 0000000..6a99884
--- /dev/null
+++ b/public/one.png
Binary files differ
diff --git a/public/tank.png b/public/tank.png
index 1aec6ca..ac8c075 100644
--- a/public/tank.png
+++ b/public/tank.png
Binary files differ
diff --git a/public/two-blue.png b/public/two-blue.png
new file mode 100644
index 0000000..a181ea3
--- /dev/null
+++ b/public/two-blue.png
Binary files differ
diff --git a/public/two.png b/public/two.png
new file mode 100644
index 0000000..a8c17e3
--- /dev/null
+++ b/public/two.png
Binary files differ
diff --git a/src/api/home/index.js b/src/api/home/index.js
index 6076513..2c8ebe1 100644
--- a/src/api/home/index.js
+++ b/src/api/home/index.js
@@ -1,4 +1,5 @@
import request from "@/utils/request";
+import axios from "axios"
// 鑾峰彇缃戠粶閰嶇疆
export const NetworkCard = () => {
return request({
@@ -18,7 +19,7 @@
export const getProgress = (data) => {
return request({
url: "/v1/plc/productProgress",
- method: "get",
+ method: "post",
data
});
};
@@ -69,7 +70,7 @@
//鑾峰彇浠诲姟
export const getTaskInfo = (data) => {
return request({
- url: "/v1/task/get",
+ url: "/v1/task/get?page="+data.page+'&pageSize='+data.pageSize,
method: "get",
data,
});
@@ -103,15 +104,7 @@
});
};
-// 鐢熶骇鎬婚噺
-export const setProductNumber = (data) => {
- return request({
- url: 'v1/plc/setProductNumber',
- loadingFlag:true,
- method: "post",
- data,
- });
-};
+
// 鍊掕鏃�
export const countdown = (data) => {
return request({
diff --git a/src/components/AddIssue.vue b/src/components/AddIssue.vue
index 3d4e1f0..0c0eb71 100644
--- a/src/components/AddIssue.vue
+++ b/src/components/AddIssue.vue
@@ -3,16 +3,16 @@
<el-dialog
:close-on-click-modal="false"
:visible.sync="islook"
- width="783px"
+ width="753px"
class="add-event-dialog"
:show-close="false"
>
<div class="tank-box">
<div slot="title" class="tac drawerHeader">
<span class="title-l">鏂颁换鍔�</span>
- <span class="title-r" @click="closeClick">
+ <!-- <span class="title-r" @click="closeClick">
<img src="../../public/close.png" />
- </span>
+ </span> -->
</div>
<div class="dialog-content-box">
<div
@@ -73,6 +73,7 @@
-
{{ formatDate(taskData.Order.endTime) }}
</div>
+
<div class="title-item">
瀹㈡埛鍚嶇О锛歿{ taskData.Order.customer || "" }}
</div>
@@ -110,10 +111,9 @@
<div
style="
color: red;
- font-size: 16px;
+ font-size: 26px;
width: 100%;
text-align: center;
- font-weight: 700;
margin-bottom: 20px;
margin-top: 10px;
"
@@ -151,7 +151,7 @@
<template v-else>
<div class="btn" v-if="showBtn == 1" @click="confirmClick1">
- <img src="../../public/confirm3.png" />
+ <img src="../../public/confirm1.png" />
</div>
<div class="btn" v-if="showBtn == 2">
<img src="../../public/confirm2.png" />
@@ -178,7 +178,6 @@
<script>
import {
startTask,
- setProductNumber,
sendProcessParams,
} from "@/api/home/index"; // 浜х嚎
// import ErrorIssue from "@/components/ErrorIssue";
@@ -320,10 +319,8 @@
sendProcessParams({ id: this.taskData.Procedure.ID }).then((res) => {
console.log(res,'====res')
if (res.code == 200) {
- setProductNumber().then((res) => {
- this.resParams = res;
- this.isLoading=false;
- });
+ this.resParams = res;
+ this.isLoading=false;
} else {
this.isLoading=false;
this.resParams = res;
@@ -366,8 +363,8 @@
<style lang="scss" scoped>
.tank-box {
- width: 783px;
- height: 630px;
+ width: 753px;
+ height: 728px;
background: url("../../public/tank.png") no-repeat center center / cover;
position: relative;
.dialog-footer {
@@ -547,8 +544,14 @@
overflow: hidden;
}
.title-auto-box {
- height: calc(100% - 150px);
+ height: calc(100% - 180px);
overflow: auto;
+ width:calc(100% - 140px);
+ margin: 0 auto;
+ background:#0E246A;
+ .title-box{
+ padding:0 10px;
+ }
}
.progress-item {
width: 55%;
diff --git a/src/views/visualization.vue b/src/views/visualization.vue
index 9a27125..9640465 100644
--- a/src/views/visualization.vue
+++ b/src/views/visualization.vue
@@ -1,307 +1,206 @@
<template>
<div class="home">
- <!-- -->
- <template v-if="Object.keys(taskData).length > 0 && taskData.Procedure.ID">
+ <!-- v-if="Object.keys(taskData).length > 0 && taskData.Procedure.ID" -->
+ <template>
<div class="left">
<p class="title">
+ <span
+ class="font set-title"
+ style="float: left; margin-right: 15px"
+ @click="cutClick(1)"
+ >
+ <img v-if="activeName == 1" src="../../public/one-blue.png" />
+ <img v-else src="../../public/one.png" />
+ </span>
+ <span class="font set-title" style="float: left" @click="cutClick(2)">
+ <img v-if="activeName == 2" src="../../public/two-blue.png" />
+ <img v-else src="../../public/two.png" />
+ </span>
鐢熶骇绠$悊鐪嬫澘
<span
class="font el-icon-setting set-title"
style="float: right"
@click="setUrl"
></span>
+ <span
+ style="float: right;margin-right:20px;font-size:28px;line-height:25px;"
+ @click="taskClick"
+ >
+ <el-badge :value="TaskCount" class="item">
+ <i class="el-icon-chat-round"/>
+ </el-badge>
+ </span>
</p>
- <div class="statelist">
- <span class="title-item"
- >宸ュ崟缂栧彿:
- <span class="color_4efefa">{{
- taskData.Order.workOrderId || ""
- }}</span>
- </span>
- <span class="title-item"
- >褰撳墠宸ュ簭:
- <span class="color_4efefa">{{
- taskData.Procedure.procedure.procedureName || ""
- }}</span>
- </span>
- <span class="title-item"
- >鍚庨亾宸ュ簭:
- <span class="color_4efefa">
- {{
- taskData.Procedure.procedure.nextProcedureName || "--"
- }}
+ <div
+ :class="activeName == 1 ? 'active-one' : 'active-two'"
+ v-for="(taskData, index) in Tasks"
+ :key="index"
+ >
+ <div class="statelist">
+ <span class="title-item"
+ >宸ュ崟缂栧彿:
+ <span class="color_4efefa">{{
+ taskData.Order.workOrderId || ""
+ }}</span>
</span>
- </span>
- <span class="title-item"
- >宸ヤ綔浜烘暟:
- <span class="color_4efefa">
- <span
- v-if="
- taskData.Procedure.procedure &&
- taskData.Procedure.procedure.workers
- "
- >{{ taskData.Procedure.procedure.workers.length }}</span
- >
- <span v-else>0</span>
- 浜�
+ <span class="title-item"
+ >褰撳墠宸ュ簭:
+ <span class="color_4efefa">{{
+ taskData.Procedure.procedure.procedureName || ""
+ }}</span>
</span>
- </span>
- </div>
- <div class="content">
- <div class="content_left">
- <div class="content-top">
- <div class="small_title">褰撳墠瀹屾垚</div>
- <div class="content_leftBttom">
- <dl>
- <dd style="font-size: 26px; font-weight: 600">
- {{ finishNumber }}{{ taskData.Order.unit }}
- </dd>
- </dl>
- </div>
- </div>
- <div class="content-top">
- <div class="small_title">姝e搧鐢熶骇</div>
- <div class="content_leftBttom">
- <dl>
- <dd style="font-size: 26px; font-weight: 600">
- {{ taskData.Order.amount || 0 }}{{ taskData.Order.unit }}
- </dd>
- </dl>
- </div>
- </div>
+ <span class="title-item"
+ >鍚庨亾宸ュ簭:
+ <span class="color_4efefa">
+ {{ taskData.Procedure.procedure.nextProcedureName || "--" }}
+ </span>
+ </span>
+ <span class="title-item"
+ >宸ヤ綔浜烘暟:
+ <span class="color_4efefa">
+ <span
+ v-if="
+ taskData.Procedure.procedure &&
+ taskData.Procedure.procedure.workers
+ "
+ >{{ taskData.Procedure.procedure.workers.length }}</span
+ >
+ <span v-else>0</span>
+ 浜�
+ </span>
+ </span>
</div>
- <div class="content_right">
- <el-descriptions :column="2" :colon="true">
- <el-descriptions-item label="浜у搧鍚嶇О">{{
- taskData.Order.productName || ""
- }}</el-descriptions-item>
- <el-descriptions-item label="鏁伴噺"
- >{{ taskData.Order.amount || 0
- }}{{ taskData.Order.unit }}</el-descriptions-item
- >
- <el-descriptions-item label="浜よ揣鏃ユ湡">{{
- taskData.Order.deliverDate || ""
- }}</el-descriptions-item>
- <el-descriptions-item label="宸ユ椂">
- {{ taskData.Procedure.procedure.workHours || "" }}
- </el-descriptions-item>
- <el-descriptions-item label="璧锋鏃堕棿"
- >{{ formatDate(taskData.Order.startTime) || "" }}
- -
- {{ formatDate(taskData.Order.endTime) }}</el-descriptions-item
- >
- <el-descriptions-item label="璐х墿鎻忚堪">{{
- taskData.Order.orderAttr || ""
- }}</el-descriptions-item>
- <el-descriptions-item label="瀹㈡埛鍚嶇О">{{
- taskData.Order.customer || ""
- }}</el-descriptions-item>
- <el-descriptions-item label="鍙傛暟瑕佹眰">{{
- taskData.Order.parameter || ""
- }}</el-descriptions-item>
- </el-descriptions>
- <el-descriptions :column="1" :colon="true">
- <el-descriptions-item label="瀹屾垚搴�" style="width: 100%">
- <!--:text-format="format" -->
- <el-progress
- define-back-color="#133EAF"
- color="#09E5ED"
- text-color="#fff"
- :text-inside="true"
- :stroke-width="30"
- :percentage="taskData.Order?parseInt(finishNumber/taskData.Order.amount*100):0"
- ></el-progress>
- </el-descriptions-item>
- <!-- <el-descriptions-item label="鍚堟牸鐜�" style="width: 100%">
+ <div class="gongx" v-if="taskData.AllProcedures">
+ <el-steps :active="taskData.CurrentProcedureIndex?taskData.CurrentProcedureIndex:0" finish-status="success" simple>
+ <el-step :title="item" v-for="(item,index) in taskData.AllProcedures" :key="index"></el-step>
+ </el-steps>
+ </div>
+ <div class="content">
+ <div class="content_left">
+ <div class="content-top">
+ <div class="small_title">褰撳墠瀹屾垚</div>
+ <div class="content_leftBttom">
+ <dl>
+ <dd
+ style="font-size: 26px; font-weight: 600"
+ class="color_green"
+ >
+ {{ taskData.finishNumber }}{{ taskData.Order.unit }}
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="content-top">
+ <div class="small_title">姝e搧鐢熶骇</div>
+ <div class="content_leftBttom">
+ <dl>
+ <dd
+ style="font-size: 26px; font-weight: 600"
+ class="color_green"
+ >
+ {{ taskData.Order.amount || 0 }}{{ taskData.Order.unit }}
+ </dd>
+ </dl>
+ </div>
+ </div>
+ </div>
+ <div class="content_right">
+ <el-descriptions :column="activeName == 1 ? 2 : 1" :colon="true">
+ <el-descriptions-item label="浜у搧鍚嶇О">{{
+ taskData.Order.productName || ""
+ }}</el-descriptions-item>
+ <el-descriptions-item label="鏁伴噺"
+ >{{ taskData.Order.amount || 0
+ }}{{ taskData.Order.unit }}</el-descriptions-item
+ >
+ <el-descriptions-item label="浜よ揣鏃ユ湡">{{
+ taskData.Order.deliverDate || ""
+ }}</el-descriptions-item>
+ <el-descriptions-item label="宸ユ椂">
+ {{ taskData.Procedure.procedure.workHours || "" }}
+ </el-descriptions-item>
+ <el-descriptions-item label="璧锋鏃堕棿"
+ >{{ formatDate(taskData.Order.startTime) || "" }}
+ -
+ {{ formatDate(taskData.Order.endTime) }}</el-descriptions-item
+ >
+ <el-descriptions-item label="璐х墿鎻忚堪">{{
+ taskData.Order.orderAttr || ""
+ }}</el-descriptions-item>
+ <el-descriptions-item label="瀹㈡埛鍚嶇О">{{
+ taskData.Order.customer || ""
+ }}</el-descriptions-item>
+ <el-descriptions-item label="鍙傛暟瑕佹眰">{{
+ taskData.Order.parameter || ""
+ }}</el-descriptions-item>
+ </el-descriptions>
+ <el-descriptions :column="1" :colon="true">
+ <el-descriptions-item label="瀹屾垚搴�" style="width: 100%">
+ <!--:text-format="format" -->
<el-progress
- define-back-color="#007101"
- color="#00CC66"
+ define-back-color="#133EAF"
+ color="#09E5ED"
text-color="#fff"
:text-inside="true"
:stroke-width="30"
- :percentage="passrate"
+ :percentage="
+ (taskData.Order && taskData.finishNumber != 0)
+ ? parseInt(
+ (taskData.finishNumber / taskData.Order.amount) *
+ 100
+ )
+ : 0
+ "
></el-progress>
- </el-descriptions-item> -->
- </el-descriptions>
- </div>
- </div>
- <div class="bottom">
- <div class="bottom_list">
- <div class="bottom-title">杈撳叆璧勬簮</div>
- <el-carousel
- direction="vertical"
- height="calc(100% - 0px)"
- :interval="500"
- class="card-box"
- ref="cardBox1"
- v-if="
- taskData.Procedure.procedure &&
- taskData.Procedure.procedure.inputMaterials
- "
- >
- <el-carousel-item
- :key="index"
- v-for="(item, index) in inputMaterials"
- >
- <div class="card" :key="index2" v-for="(list, index2) in item">
- <div class="card_content">
- <div class="card_contentLeft">{{ list.materialId }}</div>
- </div>
- <div class="card_top">
- <div>
- <!-- 璁惧12<i
- style="font-size: 14px"
- class="el-icon-right font-arrow-20"
- ></i>
- 璁惧13 -->
- {{ list.materialName }}
- </div>
- </div>
- <div class="card_top2">
- <div style="line-height: 45px; text-align: center">
- {{ list.amount }} {{ list.unit }}
- </div>
- <!-- <span class="card-top-r-t">鐢熶骇瀹屾垚</span>
- <span class="card-top-r-b">12鏈�28鏃� 08:24</span> -->
- </div>
- </div>
- </el-carousel-item>
- </el-carousel>
- <el-button type="primary" class="color_f70f83">
- <i class="el-icon-phone-outline" />鐗╂枡鍛煎彨</el-button
- >
- </div>
- <i class="el-icon-arrow-right font-arrow-20 color_4efefa"></i>
- <div class="bottom_list">
- <div class="bottom-title">
- 褰撳墠宸ュ簭:{{ taskData.Procedure.procedure.procedureName || "" }}
- </div>
- <el-carousel
- direction="vertical"
- height="calc(100% - 0px)"
- :interval="500"
- class="card-box"
- ref="cardBox2"
- v-if="taskData.Procedure.procedure && procedureList"
- >
- <el-carousel-item
- :key="index"
- v-for="(item, index) in procedureList"
- >
- <div class="card" :key="index2" v-for="(list, index2) in item">
- <template v-if="list.name == '宸ュ簭'">
- <div class="card_content">
- <div class="card_contentLeft color_blue">
- {{ list.deviceName }}
- <!-- <span style="float: right">6m/s</span> -->
- </div>
- </div>
- <div class="card_top-3">
- <span class="card-top-r-t"
- >瀹屾垚杩涘害锛歿{ 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="taskData.Order?parseInt(finishNumber/taskData.Order.amount*100):0"
- :show-text="false"
- ></el-progress>
- </span>
- </div>
- <div class="card_top-2">
- <div style="line-height: 45px; text-align: center">
- 鐢熶骇涓�
- </div>
- <!-- <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="card_top-4">
- <div>宸ヨ壓缂栧彿锛歿{ list.number }}</div>
- <!-- <div
- style="
- font-size: 14px;
- color: #cfcfcf;
- line-height: 20px;
- "
- >
- 宸ヨ壓鐨勫叿浣撲俊鎭鐐瑰嚮鎺у埗鏌ョ湅锛�
- </div> -->
- </div>
- </template>
- </div>
- </el-carousel-item>
- </el-carousel>
-
- <p style="font-size: 22px; margin-left: 12px; margin-top: 50px"></p>
- <div class="right-small-btn">
- <el-button type="primary"> 鎵撳嵃</el-button>
- <el-popover
- placement="top-end"
- width="160"
- class="button-finish"
- v-model="finishShow"
- trigger="click"
- >
- <p>璇风‘璁ゆ槸鍚﹀凡瀹屾垚璇ョ敓浜т换鍔�?</p>
- <div style="text-align: right; margin: 0">
- <el-button size="mini" @click="finishShow = false">
- 鍙栨秷</el-button
- >
- <el-button type="primary" size="mini" @click="finishClick">
- 纭畾</el-button
- >
- </div>
- <el-button type="primary" slot="reference"> 瀹屾垚</el-button>
- </el-popover>
+ </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"
+ ></el-progress>
+ </el-descriptions-item> -->
+ </el-descriptions>
</div>
</div>
- <i class="el-icon-arrow-right font-arrow-20 color_4efefa"></i>
- <div class="bottom_list">
- <div class="bottom-title">
- <span>杈撳嚭璧勬簮</span>
- </div>
- <el-carousel
- direction="vertical"
- height="calc(100% - 0px)"
- :interval="500"
- ref="cardBox3"
- class="card-box"
- v-if="
- taskData.Procedure.procedure &&
- taskData.Procedure.procedure.outputMaterials
- "
- >
- <el-carousel-item
- :key="index"
- v-for="(item, index) in outputMaterials"
+ <div class="bottom">
+ <div class="bottom_list">
+ <div class="bottom-title">杈撳叆璧勬簮</div>
+ <el-carousel
+ direction="vertical"
+ height="calc(100% - 0px)"
+ :interval="500"
+ class="card-box"
+ :ref="'cardBox1&' + index"
+ v-if="
+ taskData.Procedure.procedure &&
+ taskData.Procedure.procedure.inputMaterials
+ "
>
- <div
- class="card-box"
- :key="index2"
- v-for="(list, index2) in item"
+ <el-carousel-item
+ :key="index"
+ v-for="(item, index) in taskData.inputMaterials"
>
- <div class="card">
+ <div
+ class="card"
+ :key="index2"
+ v-for="(list, index2) in item"
+ >
<div class="card_content">
<div class="card_contentLeft">{{ list.materialId }}</div>
</div>
<div class="card_top">
<div>
- {{ list.materialName }}
<!-- 璁惧12<i
- style="font-size: 14px"
- class="el-icon-right font-arrow-20"
- ></i>
- 璁惧13 -->
+ style="font-size: 14px"
+ class="el-icon-right font-arrow-20"
+ ></i>
+ 璁惧13 -->
+ {{ list.materialName }}
</div>
</div>
<div class="card_top2">
@@ -309,36 +208,211 @@
{{ list.amount }} {{ list.unit }}
</div>
<!-- <span class="card-top-r-t">鐢熶骇瀹屾垚</span>
- <span class="card-top-r-b">12鏈�28鏃� 08:24</span> -->
+ <span class="card-top-r-b">12鏈�28鏃� 08:24</span> -->
</div>
- <!-- <div class="card-info-box">棰勮10鍒嗛挓閫佽揪</div> -->
</div>
- <!-- <div class="card">
- <div class="card_content">
- <div class="card_contentLeft color_green">
- 鍖呭彿:G22122304 100鍚�
+ </el-carousel-item>
+ </el-carousel>
+ <el-button type="primary" class="color_f70f83">
+ <i class="el-icon-phone-outline" />鐗╂枡鍛煎彨</el-button
+ >
+ </div>
+ <i class="el-icon-arrow-right font-arrow-20 color_4efefa"></i>
+ <div class="bottom_list">
+ <div class="bottom-title">
+ 褰撳墠宸ュ簭:{{ taskData.Procedure.procedure.procedureName || "" }}
+ </div>
+ <el-carousel
+ direction="vertical"
+ height="calc(100% - 0px)"
+ :interval="500"
+ class="card-box"
+ :ref="'cardBox2&' + index"
+ v-if="taskData.Procedure.procedure && taskData.procedureList"
+ >
+ <el-carousel-item
+ :key="index"
+ 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_content">
+ <div class="card_contentLeft color_blue">
+ {{ list.deviceName }}
+ <!-- <span style="float: right">6m/s</span> -->
+ </div>
</div>
- </div>
- <div class="card_top">
- <div>
- 璁惧12<i
- style="font-size: 14px"
- class="el-icon-right font-arrow-20"
- ></i>
- 璁惧13
+ <div class="card_top-3">
+ <span class="card-top-r-t"
+ >瀹屾垚杩涘害锛歿{
+ taskData.Order && taskData.finishNumber != 0
+ ? parseInt(
+ (taskData.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="
+ (taskData.Order && taskData.finishNumber != 0)
+ ? parseInt(
+ (taskData.finishNumber /
+ taskData.Order.amount) *
+ 100
+ )
+ : 0
+ "
+ :show-text="false"
+ ></el-progress>
+ </span>
</div>
+ <div class="card_top-2">
+ <div style="line-height: 45px; text-align: center">
+ 鐢熶骇涓�
+ </div>
+ <!-- <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="card_top-4">
+ <div>宸ヨ壓缂栧彿锛歿{ list.number }}</div>
+ <!-- <div
+ style="
+ font-size: 14px;
+ color: #cfcfcf;
+ line-height: 20px;
+ "
+ >
+ 宸ヨ壓鐨勫叿浣撲俊鎭鐐瑰嚮鎺у埗鏌ョ湅锛�
+ </div> -->
+ </div>
+ </template>
+ </div>
+ </el-carousel-item>
+ </el-carousel>
+
+ <p
+ style="font-size: 22px; margin-left: 12px; margin-top: 50px"
+ ></p>
+ <div class="right-small-btn">
+ <el-button type="primary"> 鎵撳嵃</el-button>
+ <el-popover
+ placement="top-end"
+ width="160"
+ class="button-finish"
+ v-model="finishShow['finishShow&'+index]"
+ trigger="click"
+ >
+ <p>璇风‘璁ゆ槸鍚﹀凡瀹屾垚璇ョ敓浜т换鍔�?</p>
+ <div style="text-align: right; margin: 0">
+ <el-button size="mini" @click="finishShow['finishShow&'+index] = false">
+ 鍙栨秷</el-button
+ >
+ <el-button
+ type="primary"
+ size="mini"
+ @click="finishClick(index, taskData)"
+ >
+ 纭畾</el-button
+ >
+ </div>
+ <el-button type="primary" slot="reference"> 瀹屾垚</el-button>
+ </el-popover>
+ </div>
+ </div>
+ <i class="el-icon-arrow-right font-arrow-20 color_4efefa"></i>
+ <div class="bottom_list">
+ <div class="bottom-title">
+ <span>杈撳嚭璧勬簮</span>
+ </div>
+ <el-carousel
+ direction="vertical"
+ height="calc(100% - 0px)"
+ :interval="500"
+ :ref="'cardBox3&' + index"
+ class="card-box"
+ v-if="
+ taskData.Procedure.procedure &&
+ taskData.Procedure.procedure.outputMaterials
+ "
+ >
+ <el-carousel-item
+ :key="index"
+ v-for="(item, index) in taskData.outputMaterials"
+ >
+ <div
+ class="card-box"
+ :key="index2"
+ v-for="(list, index2) in item"
+ >
+ <div class="card">
+ <div class="card_content">
+ <div class="card_contentLeft">
+ {{ list.materialId }}
+ </div>
+ </div>
+ <div class="card_top">
+ <div>
+ {{ list.materialName }}
+ <!-- 璁惧12<i
+ style="font-size: 14px"
+ class="el-icon-right font-arrow-20"
+ ></i>
+ 璁惧13 -->
+ </div>
+ </div>
+ <div class="card_top2">
+ <div style="line-height: 45px; text-align: center">
+ {{ list.amount }} {{ list.unit }}
+ </div>
+ <!-- <span class="card-top-r-t">鐢熶骇瀹屾垚</span>
+ <span class="card-top-r-b">12鏈�28鏃� 08:24</span> -->
+ </div>
+ <!-- <div class="card-info-box">棰勮10鍒嗛挓閫佽揪</div> -->
</div>
- <div class="card_top-2">
- <span class="card-top-r-t">鐢熶骇瀹屾垚</span>
- <span class="card-top-r-b">12鏈�28鏃� 08:24</span>
- </div>
- </div> -->
- </div>
- </el-carousel-item>
- </el-carousel>
- <el-button type="primary" class="color_f70f83">
- <i class="el-icon-phone-outline" />杩愯緭鍛煎彨</el-button
- >
+ <!-- <div class="card">
+ <div class="card_content">
+ <div class="card_contentLeft color_green">
+ 鍖呭彿:G22122304 100鍚�
+ </div>
+ </div>
+ <div class="card_top">
+ <div>
+ 璁惧12<i
+ style="font-size: 14px"
+ class="el-icon-right font-arrow-20"
+ ></i>
+ 璁惧13
+ </div>
+ </div>
+ <div class="card_top-2">
+ <span class="card-top-r-t">鐢熶骇瀹屾垚</span>
+ <span class="card-top-r-b">12鏈�28鏃� 08:24</span>
+ </div>
+ </div> -->
+ </div>
+ </el-carousel-item>
+ </el-carousel>
+ <el-button type="primary" class="color_f70f83">
+ <i class="el-icon-phone-outline" />杩愯緭鍛煎彨</el-button
+ >
+ </div>
</div>
</div>
</div>
@@ -347,11 +421,11 @@
<div class="right-top-l">浣滀笟鐘舵��</div>
<div class="time">
<dl>
- <dd><span style="font-size: 32px">{{ formatTime3 }}</span></dd>
<dd>
- <span style="font-size: 12px; "
- >{{ formatTime2 }}</span
- >
+ <span style="font-size: 32px">{{ formatTime3 }}</span>
+ </dd>
+ <dd>
+ <span style="font-size: 12px">{{ formatTime2 }}</span>
<!--margin-right: 10px <span style="font-size: 14px">鏄熸湡鍥�</span> -->
</dd>
</dl>
@@ -369,13 +443,11 @@
</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="workers && workers.length > 0">
<dl
class="right-small-person"
- v-for="(item, index) in taskData.Procedure.procedure.workers"
+ v-for="(item, index) in workers"
:key="index"
>
<dt>
@@ -419,13 +491,16 @@
</div>
</div>
</template>
- <!-- -->
- <template v-else>
+ <!-- v-else -->
+ <template>
<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>
+ <div class="bg-date">
+ <span>{{ formatTime3 }}</span
+ ><br />{{ formatTime2 }}
+ </div>
<span
class="font el-icon-setting set-title bg-set"
@click="setUrl"
@@ -435,7 +510,12 @@
<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-if="showCountDown"
+ >璺濈浠诲姟寮�濮嬫椂闂达細
+ <span class="color_red">{{ countDownHour }}</span
+ >鏃� <span class="color_red">{{ countDownMinute }}</span
+ >鍒�</span
+ >
<span v-else>鏆傛棤浠诲姟锛屼紤鎭竴涓嬪惂...</span>
</div>
<el-button type="primary" @click="reloadPage">鍒锋柊浠诲姟</el-button>
@@ -446,12 +526,17 @@
<!-- 鎺у埗鐨勫脊妗� -->
<AddControl ref="control" :Arr="Arr" />
<!-- 鎺у埗鐨勫脊妗� -->
- <AddIssue ref="control" :Arr="Arr" :taskData="taskData" :Order="taskData.Order" @getSetProductNumber="getTaskInfo" />
+ <AddIssue
+ ref="control"
+ :Arr="Arr"
+ :taskData="taskData"
+ :Order="taskData.Order"
+ @getSetProductNumber="getTaskInfo"
+ />
</div>
</template>
<script>
-
import {
getTaskInfo,
finishTask,
@@ -474,17 +559,54 @@
},
data() {
return {
+ activeName: 1,
progress: 70, //杩涘害
passrate: 30, //鍚堟牸鐜�
production: 25, //鐢熶骇涓�
- finishNumber: 0,
- formatTime2:'',
- formatTime3:'',
+ formatTime2: "",
+ formatTime3: "",
// 鍙充晶瀹屾垚
- finishShow: false,
- inputMaterials: [],
- outputMaterials: [],
- procedureList: [],
+ finishShow:{},
+ workers:[],
+ Tasks: [
+ {
+ Order: {
+ amount: "",
+ customer: "",
+ deliverDate: "",
+ endTime: "",
+ orderAttr: [],
+ orderId: "",
+ parameter: "",
+ productId: "",
+ productName: "",
+ startTime: "",
+ unit: "",
+ },
+ Procedure: {
+ id: 1,
+ procedure: {
+ deviceId: "",
+ endTime: "",
+ inputMaterials: [
+ {
+ amount: 1,
+ materialId: 1,
+ materialName: 1,
+ },
+ ],
+ outputMaterials: [],
+ procedureId: "",
+ procedureName: "",
+ startTime: "",
+ workHours: "",
+ },
+ },
+ inputMaterials: [],
+ outputMaterials: [],
+ procedureList: [],
+ },
+ ],
taskData: {
Order: {
amount: "",
@@ -526,14 +648,15 @@
},
},
},
- totalNumber:0,
- showCountDown:false,
- countDownHour:0,
- countDownMinute:0,
- Arr:[],
- // 璁板綍瀹氭椂鍣ㄧ姸鎬�
- procInfoTimer:null,
- cutdownTimer: null
+ totalNumber: 0,
+ showCountDown: false,
+ countDownHour: 0,
+ countDownMinute: 0,
+ Arr: [],
+ // 璁板綍瀹氭椂鍣ㄧ姸鎬�
+ procInfoTimer: [null, null],
+ cutdownTimer: null,
+ TaskCount:0,
};
},
mounted() {
@@ -542,37 +665,46 @@
// this.passrate = this.getRandomNumber(1, 100);
// this.production = this.getRandomNumber(1, 100);
// }, 3000);
- this.getDate3()
- this.getDate2()
- setInterval(()=>{
- this.getDate3()
- this.getDate2()
- },5000)
+ this.getDate3();
+ this.getDate2();
+ setInterval(() => {
+ this.getDate3();
+ this.getDate2();
+ }, 5000);
this.getTaskInfo();
},
methods: {
-
+ taskClick(){
+ if(this.TaskCount>0){
+ this.$refs.control.islook=true
+ }else{
+ this.$message.error('鐩墠娌℃湁浠诲姟锛�')
+ }
+ },
+ cutClick(val) {
+ this.activeName = val;
+ this.getTaskInfo();
+ },
reloadPage() {
// window.location.reload();
this.getTaskInfo();
},
- getcountdown(){
+ getcountdown() {
countdown().then((res) => {
if (res.code == 200) {
- 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
+ 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;
}
});
},
- 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(
@@ -611,114 +743,139 @@
return "";
}
},
- getDate3(){
- let now= new Date();
+ getDate3() {
+ let now = new Date();
this.formatTime3 = this.getDateObj(now, "hh:mm");
},
- getDate2(){
- let now = new Date();
+ getDate2() {
+ let now = new Date();
this.formatTime2 = this.getDateObj(now, "yyyy骞碝M鏈坉d鏃�");
},
- setInterCard(value, name) {
- let height = 200;
- let num = 1;
- if (this.$refs[name]) {
- height = this.$refs[name].$el.offsetHeight;
- num = Math.floor(height / 80);
- }
- let inputMaterials = JSON.parse(
- JSON.stringify(this.taskData.Procedure.procedure[value])
- );
- let newDataList = [];
- let current = 0;
- // let num=4;
- if (inputMaterials && inputMaterials.length > 0) {
- for (let i = 0; i <= inputMaterials.length - 1; i++) {
- if (i % num !== 0 || i === 0) {
- if (!newDataList[current]) {
+ setInterCard(value, name, i) {
+ if (this.Tasks[i].Procedure.procedure[value]) {
+ let height = 200;
+ let num = 1;
+ if (this.$refs[name]) {
+ height = this.$refs[name].$el.offsetHeight;
+ num = Math.floor(height / 80);
+ }
+ let inputMaterials = JSON.parse(
+ JSON.stringify(this.Tasks[i].Procedure.procedure[value])
+ );
+ let newDataList = [];
+ let current = 0;
+ // let num=4;
+ if (inputMaterials && inputMaterials.length > 0) {
+ for (let i = 0; i <= inputMaterials.length - 1; i++) {
+ if (i % num !== 0 || i === 0) {
+ if (!newDataList[current]) {
+ newDataList[current] = [];
+ newDataList[current].push(inputMaterials[i]);
+ } else {
+ newDataList[current].push(inputMaterials[i]);
+ }
+ } else {
+ current++;
newDataList[current] = [];
newDataList[current].push(inputMaterials[i]);
- } else {
- newDataList[current].push(inputMaterials[i]);
}
- } else {
- current++;
- newDataList[current] = [];
- newDataList[current].push(inputMaterials[i]);
}
}
+ this.Tasks[i][value] = [...newDataList];
}
- this[value] = [...newDataList];
- console.log(this.inputMaterials, "inputMaterials");
},
getTaskInfo() {
- this.taskData = {
+ let object = {
Order: {},
Procedure: {
procedure: { inputMaterials: [], outputMaterials: [], workers: [] },
},
+ inputMaterials: [],
+ outputMaterials: [],
+ procedureList: [],
};
- getTaskInfo().then((res) => {
+ this.Tasks = [];
+ getTaskInfo({ page: 1, pageSize: this.activeName }).then((res) => {
if (res.code == 200) {
- this.procedureList=[]
- this.taskData = res.data
- ? res.data
- : {
- Order: {},
- Procedure: {
- procedure: {
- inputMaterials: [],
- outputMaterials: [],
- 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,
- name: "宸ヨ壓",
- });
- this.Arr=res.data.Params?res.data.Params:[];
- }
- });
- this.getProgressInfo();
- if (!this.procInfoTimer) {
- this.procInfoTimer = setInterval(() => {
- this.getProgressInfo();
- }, 6000);
+ let arr=[]
+ if(res.data.Tasks){
+ arr.sort(function(a,b){
+ return (a.Position - b.Position)
+ })
+ }
+ this.Tasks = res.data.Tasks ? res.data.Tasks : [];
+ this.TaskCount=res.data.TaskCount?res.data.TaskCount:0
+ this.workers=res.data.workers?res.data.workers:[]
+ if (this.Tasks.length == 0) {
+ if (this.activeName == 1) {
+ this.Tasks.push(object);
+ } else {
+ this.Tasks.push(object);
+ this.Tasks.push(object);
}
}
- console.log(this.procedureList, "===1111procedureList");
- // setTimeout(() => {
- this.setInterCard("inputMaterials", "cardBox1");
- // this.setInterCard('procedureList','cardBox2')
- this.setInterCard("outputMaterials", "cardBox3");
- // }, 5000);
+ for (let i in this.Tasks) {
+ this.Tasks[i].procedureList = [];
+ this.Tasks[i].inputMaterials = [];
+ this.Tasks[i].outputMaterials = [];
+ this.Tasks[i].finishNumber = 0;
+ this.finishShow['finishShow&'+i]=false
+ this.Tasks[i].Procedure.procedure.workers = this.Tasks[i].Procedure
+ .procedure.workers
+ ? this.Tasks[i].Procedure.procedure.workers
+ : [];
+ this.Tasks[i].procedureList.push([
+ {
+ name: "宸ュ簭",
+ ...this.Tasks[i].Procedure.procedure,
+ },
+ ]);
+ if (this.Tasks[i].Procedure.ID) {
+ startTask({ id: this.Tasks[i].Procedure.ID }).then((res) => {
+ if (res.code == 200) {
+ // res.data.number
+ this.Tasks[i].procedureList[0].push({
+ number: res.data.Number,
+ name: "宸ヨ壓",
+ });
+ if (i == 0) {
+ this.Arr = res.data.Params ? res.data.Params : [];
+ this.taskData=this.Tasks[i]
+ }
+ }
+ });
+ this.getProgressInfo(i);
+ if (!this.procInfoTimer[i]) {
+ this.procInfoTimer[i] = setInterval(() => {
+ this.getProgressInfo(i);
+ }, 6000);
+ }
+ }
+ this.setInterCard("inputMaterials", "cardBox1&" + i, i);
+ this.setInterCard("outputMaterials", "cardBox3&" + i, i);
+ }
}
- if(res.code!=200||!this.taskData.Procedure.ID){
+ if (res.code != 200 || this.Tasks.length == 0) {
this.getcountdown();
// 鎺у埗閲嶆柊璇锋眰getTaskInfo, 鍙紑鍚竴涓畾鏃跺櫒
- if (!this.cutdownTimer) {
- this.cutdownTimer = setInterval(() => {
- this.getcountdown();
- }, 60000);
- }
+ if (!this.cutdownTimer) {
+ this.cutdownTimer = setInterval(() => {
+ this.getcountdown();
+ }, 60000);
+ }
+ }
+ });
+ },
+ getProgressInfo(i) {
+ getProgress({
+ position: Number(i),
+ procedureId: this.Tasks[i].Procedure.ID,
+ }).then((res) => {
+ if (res.code == 200) {
+ this.Tasks[i].finishNumber = res.data.finishNumber
+ ? res.data.finishNumber
+ : 0;
}
});
},
@@ -734,19 +891,18 @@
},
// 鍙充晶鎺у埗
controlClick() {
- if (Object.keys(this.taskData).length > 0 && this.taskData.Procedure.ID) {
+ if (this.Tasks.length > 0) {
this.$refs.control.islook = true;
} else {
this.$message.error("褰撳墠璁惧娌℃湁宸ュ簭锛�");
-
}
},
// 鍙充晶瀹屾垚
- finishClick() {
- if (Object.keys(this.taskData).length > 0 && this.taskData.Procedure.ID) {
- finishTask({ id: this.taskData.Procedure.ID }).then((res) => {
+ finishClick(i, taskData) {
+ if (Object.keys(taskData).length > 0 && taskData.Procedure.ID) {
+ finishTask({ id: taskData.Procedure.ID }).then((res) => {
if (res.code == 200) {
- this.finishShow = false;
+ this.finishShow['finishShow&'+i] = false;
this.getTaskInfo();
this.$message.success("鎿嶄綔鎴愬姛锛�");
}
@@ -766,8 +922,80 @@
</script>
<style lang="scss">
-.set-title{
- cursor:pointer;
+.active-one {
+ width: 100%;
+ height: 100%;
+ .statelist {
+ height: 50px;
+ }
+ .content {
+ height: 240px;
+ }
+ .bottom {
+ height: calc(100% - 500px - 30px);
+ }
+}
+.active-two {
+ width: calc(50% - 10px);
+ height: 100%;
+ float: left;
+ padding-left: 10px;
+ &:nth-of-type(1) {
+ padding-right: 10px;
+ padding-left: 0px;
+ box-sizing: border-box;
+ border-right: 1px solid #eee;
+ }
+ .statelist {
+ height: 60px;
+ }
+ .title-item > span {
+ display: block;
+ line-height: 20px;
+ }
+ .content {
+ height: 370px;
+
+ .content-top {
+ height: calc(50% - 60px) !important;
+ padding-top: 50px !important;
+ }
+ .el-descriptions__body {
+ font-size: 16px !important;
+ }
+ }
+ .bottom {
+ height: calc(100% - 630px - 50px);
+ }
+ .bottom_list .bottom-title {
+ font-size: 18px;
+ }
+}
+.gongx{
+ width:100%;
+ height:30px;
+ margin-bottom:10px;
+ .el-steps--simple{
+ background:transparent;
+ padding:5px 10px;
+ }
+ .el-step__head.is-process{
+ color: #00cc66 !important;
+ border-color:#00cc66;
+ }
+ .el-step__title.is-process{
+ color: #00cc66 !important;
+ }
+ .el-step__head.is-wait{
+ color:#fff;
+ border-color:#fff;
+ }
+ .el-step__title.is-wait{
+ color:#fff;
+ }
+}
+.set-title {
+ cursor: pointer;
}
.home-img-box {
width: calc(100% - 40px);
@@ -786,7 +1014,7 @@
position: absolute;
width: 30%;
height: 4rem;
- line-height:2.4;
+ line-height: 2.4;
font-size: 26px;
font-weight: 700;
text-align: center;
@@ -794,29 +1022,28 @@
top: 1.5rem;
display: inline-block;
}
- .bg-set{
- position:absolute;
- right:10%;
+ .bg-set {
+ position: absolute;
+ right: 10%;
height: 4rem;
- line-height:2.4;
+ line-height: 2.4;
font-size: 40px;
font-weight: 700;
top: 1rem;
}
- .bg-date{
- position:absolute;
- left:3%;
+ .bg-date {
+ position: absolute;
+ left: 3%;
height: 100px;
line-height: 30px;
font-size: 16px;
top: 15%;
- span{
+ span {
font-size: 35px;
- font-weight: 700;
- line-height: 20px;
+ font-weight: 700;
+ line-height: 20px;
}
}
-
}
.yuan {
width: 40%;
@@ -852,7 +1079,10 @@
background: #33ccff !important;
}
.color_green {
- background: #00cc66 !important;
+ color: #00cc66 !important;
+}
+.color_red {
+ background: red !important;
}
.color_organge {
background: #f76c0f !important;
@@ -976,8 +1206,7 @@
.statelist {
width: 100%;
- margin: 0 auto;
- height: 50px;
+ margin: 0 auto 20px;
flex-wrap: nowrap;
align-content: center;
justify-content: space-around;
@@ -1000,8 +1229,7 @@
}
.content {
width: 100%;
- height: 240px;
- margin: 30px 0px;
+ margin: 0px 0px 30px;
overflow: hidden;
.content_left {
width: 24%;
@@ -1051,7 +1279,7 @@
width: 100%;
margin: 10px 0px;
// background: #233b9e;
- color: #fff;
+ color: #ffff99;
.el-descriptions--small {
width: 100%;
// margin: 50px 50px;
@@ -1065,7 +1293,6 @@
.bottom {
width: 100%;
- height: calc(100% - 500px);
display: flex;
flex-wrap: nowrap;
align-content: center;
--
Gitblit v1.8.0