From 5a424170415da0453c2bada6441bc98c1b02f151 Mon Sep 17 00:00:00 2001
From: haoxuan <haoxuan>
Date: 星期二, 10 十月 2023 11:23:32 +0800
Subject: [PATCH] 工艺模型 增加产品+样式调整+再次打开弹框的分页修改
---
src/components/AddIssue.vue | 670 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 608 insertions(+), 62 deletions(-)
diff --git a/src/components/AddIssue.vue b/src/components/AddIssue.vue
index e074ee0..223ce43 100644
--- a/src/components/AddIssue.vue
+++ b/src/components/AddIssue.vue
@@ -1,80 +1,436 @@
<template>
+ <!-- top="10vh" -->
<el-dialog
:close-on-click-modal="false"
:visible.sync="islook"
- width="250px"
- top="50vh"
+ width="753px"
class="add-event-dialog"
:show-close="false"
>
- <div slot="title" class="tac drawerHeader">涓嬪彂鐢熶骇鏁版嵁</div>
- <div class="dialog-content-box">
- <div style=" margin:0 auto; width:100%;overflow:hidden;margin-bottom:30px;text-align:left;">
-
- <div class="circel-text">
+ <div class="tank-box">
+ <div slot="title" class="tac drawerHeader">
+ <span class="title-l">{{messageError?'鎻愮ず':'鏂颁换鍔�'}}</span>
+ <!-- <span class="title-r" @click="closeClick">
+ <img src="../../public/close.png" />
+ </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(sencond)}}s</span>
+ <span v-else>璇烽噸璇�</span>
+ </div>
+
+ </template>
+ <template v-else-if="Object.keys(taskData).length > 0 ">
+ <div class="title-box margin_bottom_13">
+ <div class="title-item color_4efefa font_size_20 title-bng">
+ 褰撳墠浠诲姟锛歿{ taskData.Procedure.procedure.procedureName || "" }}
+ </div>
+ <div class="title-item title-bng color_4efefa font_size_20">
+ 鐢熶骇鏁伴噺锛�<span style="color:#fff;">{{ taskData.Order.amount || 0 }}</span>
+ </div>
+ </div>
+ <div class="title-auto-box">
+ <div class="title-box margin_bottom_20">
+ <div class="title-item">
+ 璁㈠崟缂栧彿锛歿{ taskData.Order.orderId || "" }}
+ </div>
+ <div class="title-item">
+ 宸ュ崟缂栧彿锛歿{ taskData.Order.workOrderId || "" }}
+ </div>
+ <div class="title-item">
+ 浜у搧鍚嶇О锛歿{ taskData.Order.productName || "" }}
+ </div>
+ <div class="title-item">
+ 鏁伴噺锛歿{ taskData.Order.amount || 0
+ }}{{ taskData.Order.unit }}
+ </div>
+ <div class="title-item">
+ 浜よ揣鏃ユ湡锛歿{ taskData.Order.deliverDate || "" }}
+ </div>
+ <div class="title-item">
+ 宸ユ椂锛� {{ taskData.Procedure.procedure.workHours || "" }}
+ </div>
+ <div class="title-item">
+ 璁″垝鏃堕棿锛� {{ formatDate(taskData.Order.startTime) || "" }}
+ -
+ {{ formatDate(taskData.Order.endTime) }}
+ </div>
+
+ <div class="title-item">
+ 瀹㈡埛鍚嶇О锛歿{ taskData.Order.customer || "" }}
+ </div>
+ <div class="title-item title-item-two">
+ 璐х墿鎻忚堪锛� {{ taskData.Order.orderAttr || "" }}
+ </div>
+
+ <div class="title-item title-item-two">
+ 鍙傛暟瑕佹眰锛歿{ taskData.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 Arr"
+ :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>{{ parseInt((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="parseInt((num / 30) * 100)"
+ ></el-progress>
+ </div>
+ </template>
+ </div>
+ </template>
+
+ <!-- <div class="circel-text">
<div class="circel-text-b">
鐢熶骇鏁伴噺锛�<span>{{ Order.amount||0 }}</span>{{ Order.unit||'' }}
</div>
+ </div> -->
</div>
</div>
- </div>
- <div slot="footer" class="dialog-footer tac">
- <el-button type="primary" @click="onSubmit()">涓嬪彂</el-button>
+ <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 =='涓嬪彂鎴愬姛锛�'||ArrError" @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='taskData&&taskData.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>
+ <!-- <ErrorIssue ref="error" :messageError="messageError" @shutdown="shutdown"/> -->
</div>
</el-dialog>
</template>
<script>
-
import {
startTask,
- setProductNumber,
+ sendProcessParams,
} from "@/api/home/index"; // 浜х嚎
+// import ErrorIssue from "@/components/ErrorIssue";
export default {
components: {},
props: {
- Order:{
+ Order: {
type: [Object],
default: () => {
return {
- amount:0,
- unit:''
+ amount: 0,
+ unit: "",
};
},
},
- taskData:{
+ taskData: {
type: [Object],
- }
+ },
+ Arr: {
+ type: [Array],
+ default: () => {
+ return [];
+ },
+ },
+ ArrError:{
+ type: [String],
+ default: () => {
+ return '';
+ },
+ },
+ safeProduce:{
+ type: [String],
+ default: () => {
+ return '';
+ },
+ },
+ activeName:{
+ type: [String,Number],
+ default: () => {
+ return 1;
+ },
+ },
},
data() {
return {
islook: false,
+ showBtn:1,
+ num: 0,
+ timer: null,
+ message: this.safeProduce,
+ messageError: "",
+ resParams: {},
+ isLoading:false,
+ sencond:0,
+ sencondTimer:null,
};
},
mounted() {
- this.getInfo()
+ this.message=this.safeProduce;
+ this.getInfo();
},
watch: {
taskData(val) {
- this.getInfo()
+ this.message=this.safeProduce;
+ this.getInfo();
+ },
+ num() {
+ if (this.num == 30) {
+ clearInterval(this.timer);
+ this.showBtn = 3;
+ }
+ },
+ sencond(){
+ if(this.sencond==3){
+ clearInterval(this.sencondTimer);
+ this.closeClick()
+ }
+ },
+ islook(){
+ if (this.timer) {
+ clearInterval(this.timer);
+ }
+ this.num = 0;
+ this.showBtn=1;
+ this.isLoading=false
+ this.sencond=0
+ this.sencondTimer=null
+ this.messageError=''
+ this.resParams= {},
+ this.$emit('isTip',this.islook)
},
},
methods: {
- getInfo(){
- if (Object.keys(this.taskData).length > 0 && this.taskData.Procedure.ID) {
- this.islook=true
- }else{
- this.islook=false;
+ 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();
+ },
+ getInfo() {
+ // 1 鏈敓浜� 2鐢熶骇涓� 3鐢熶骇瀹屾垚
+ if (
+ Object.keys(this.taskData).length > 0 && this.taskData.Procedure.ID &&
+ this.taskData.Procedure.Status == 1
+ ) {
+ this.num = 0;
+ this.showBtn = 1;
+ this.islook = true;
+ } else {
+ this.islook = false;
+ // this.islook = true;
+
+ }
+ if(this.ArrError){
+ this.messageError=this.ArrError;
+
+ }
+
+ },
+ 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();
+ let time = this.getDateObj(now, "MM-dd hh:mm");
+ return time;
+ } else {
+ return "";
}
},
+
onSubmit() {
- setProductNumber().then(res=>{
- if(res.code==200){
- this.$message.success("涓嬪彂鎴愬姛锛�");
- this.$emit('getSetProductNumber')
- this.shutdown();
+ if (this.taskData.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.taskData.Procedure.ID,position: Number(this.taskData.Position), }).then((res) => {
+ if (res.code == 200) {
+ this.resParams = res;
+ this.isLoading=false;
+ } else {
+ this.isLoading=false;
+ this.resParams = res;
+ }
+ });
+ setTimeout(()=>{
+ this.isLoading=false;
+ },30000)
+ }
+ },
+ getCode(res) {
+ if (res.code == 200) {
+ if (this.num == 30) {
+ this.messageError = "涓嬪彂鎴愬姛锛�";
+ if (!this.sencondTimer) {
+ this.sencondTimer = setInterval(() => {
+ this.sencond = this.sencond + 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.islook = false;
@@ -84,6 +440,121 @@
</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;
@@ -94,7 +565,7 @@
border-radius: 50%;
border: 2px solid rgba(12, 79, 218, 1);
position: relative;
- float:left;
+ float: left;
.circel-two {
width: 75px;
height: 75px;
@@ -105,31 +576,30 @@
border: 2px solid rgba(12, 79, 218, 1);
}
}
-.circel-text{
- color:#333;
- margin-left:20px;
- .circel-text-t{
- font-size:18px;
- line-height:40px;
+.circel-text {
+ color: #fff;
+ margin-left: 20px;
+ .circel-text-t {
+ font-size: 18px;
+ line-height: 40px;
}
- .circel-text-b{
+ .circel-text-b {
font-weight: 700;
- font-size:14px;
-
- span{
- color:rgba(12, 79, 218, 1);
- font-size:38px;
- margin-right:10px;
+ font-size: 14px;
+
+ span {
+ color: rgba(12, 79, 218, 1);
+ font-size: 38px;
+ margin-right: 10px;
}
}
}
-.color_red{
- width:100%;
- color:red;
- margin:0 auto;
- text-align:center;
- font-size:14px;
- margin-bottom:25px;
+.color_red {
+ width: 100%;
+ margin: 0 auto;
+ text-align: center;
+ font-size: 14px;
+ margin-bottom: 25px;
}
.form-item {
width: calc(50% - 20px);
@@ -160,12 +630,72 @@
width: 100%;
}
.dialog-content-box {
- height: 100px;
- padding-bottom: 50px;
- overflow-y: auto;
- padding: 0 10px;
+ height: calc(100% - 190px);
+ // overflow: hidden;
+ padding: 20px 0px 10px;
.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;
+ margin-bottom:5px;
+ .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 {
@@ -177,13 +707,29 @@
font-weight: 600;
}
.drawerHeader {
- // position:relative;
- border-bottom: 1px solid #eee;
- height: 40px;
- line-height: 30px;
- color: #333;
- font-weight: 700;
- font-size: 18px;
+ 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;
--
Gitblit v1.8.0