src/components/AddIssue.vue
@@ -9,7 +9,7 @@
  >
    <div class="tank-box">
      <div slot="title" class="tac drawerHeader">
        <span class="title-l">新任务</span>
        <span class="title-l">{{messageError?'提示':'新任务'}}</span>
        <!-- <span class="title-r" @click="closeClick">
          <img src="../../public/close.png" />
        </span> -->
@@ -24,17 +24,10 @@
            text-align: left;
          "
        >
          <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>{{ taskData.Order.amount || 0 }}</span>
            </div>
          </div>
          <template v-if="messageError">
            <div class="error-t">
              <img src="../../public/error.png" />
              <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 }}
@@ -43,10 +36,20 @@
              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>
            <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">
@@ -119,21 +122,28 @@
                "
                :class="showBtn == 3&&isLoading?'margin-top-10px':'margin-top-40px'"
              >
              <template v-if="showBtn == 2">
              <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 / 60) * 100) }}%</span>
                    <span>{{ parseInt((num / 30) * 100) }}%</span>
                    <el-progress
                      style="width: calc(100% - 50px); float: right"
                      define-back-color="#CDC6C6"
@@ -141,7 +151,7 @@
                      text-color="#fff"
                      :text-inside="true"
                      :stroke-width="20"
                      :percentage="parseInt((num / 60) * 100)"
                      :percentage="parseInt((num / 30) * 100)"
                    ></el-progress>
                </div>
              </template>
@@ -155,18 +165,22 @@
        </div> -->
        </div>
      </div>
      <div slot="footer" class="dialog-footer tac" style="overflow: hidden">
      <div slot="footer" :class="messageError?'dialog-footer tac btn-error':'dialog-footer tac'" style="overflow: hidden">
        <template v-if="messageError">
          <div class="btn"  @click="confirmClick2">
            <img src="../../public/confirm3.png" />
          <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" @click="confirmClick1">
            <img src="../../public/confirm1.png" />
          <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" />
@@ -178,7 +192,8 @@
            @click="onSubmit()"
          >
            <i class="el-icon-loading icon-loading" v-if="isLoading"/>
            <img src="../../public/confirm1.png" />
            <img src="../../public/loading.png"  v-if="isLoading"/>
            <img src="../../public/confirm3.png" v-if="!isLoading"/>
          </div>
        </template>
      </div>
@@ -214,6 +229,18 @@
        return [];
      },
    },
    ArrError:{
      type: [String],
      default: () => {
        return '';
      },
    },
    safeProduce:{
      type: [String],
      default: () => {
        return '';
      },
    }
  },
  data() {
    return {
@@ -221,31 +248,47 @@
      showBtn:1,
      num: 0,
      timer: null,
      message: "请确认生产安全!",
      message: this.safeProduce,
      messageError: "",
      resParams: {},
      isLoading:false,
      sencond:0,
      sencondTimer:null,
    };
  },
  mounted() {
    this.message=this.safeProduce;
    this.getInfo();
  },
  watch: {
    taskData(val) {
      this.message=this.safeProduce;
      this.getInfo();
    },
    num() {
      if (this.num == 60) {
      if (this.num == 30) {
        clearInterval(this.timer);
        this.showBtn = 3;
      }
    },
    sencond(){
      if(this.sencond==3){
        clearInterval(this.sencondTimer);
        this.closeClick()
      }
    },
    islook(){
      this.showBtn=1;
      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: {
@@ -256,7 +299,7 @@
    confirmClick1() {
      this.num = 0;
      this.showBtn = 2;
      (this.message = "请确认生产安全!"),
      (this.message = this.safeProduce),
        (this.timer = setInterval(() => {
          this.num = this.num + 1;
        }, 1000));
@@ -269,6 +312,7 @@
      this.shutdown();
    },
    getInfo() {
      // 1 未生产 2生产中 3生产完成
      if (
        Object.keys(this.taskData).length > 0 &&
        this.taskData.Procedure.ID &&
@@ -279,8 +323,13 @@
        this.islook = true;
      } else {
        this.islook = false;
        this.islook = true;
        // this.islook = true;
      }
      if(this.ArrError){
        this.messageError=this.ArrError;
      }
    },
    getDateObj(date, fmt) {
      if (/(y+)/.test(fmt)) {
@@ -314,7 +363,7 @@
    formatDate(value) {
      if (value) {
        const now = value ? new Date(value * 1000) : new Date();
        let time = this.getDateObj(now, "yyyy-MM-dd");
        let time = this.getDateObj(now, "MM-dd hh:mm");
        return time;
      } else {
        return "";
@@ -322,13 +371,12 @@
    },
    onSubmit() {
      if (this.taskData.Procedure.ID) {
        (this.message = "参数下发中..."), (this.num = 0);
        (this.message = "工艺参数下发中..."), (this.num = 0);
        this.timer = setInterval(() => {
          this.num = this.num + 1;
          if (this.num == 60 || this.resParams) {
            this.num = 60;
          if (this.num == 30 || this.resParams) {
            this.num = 30;
            this.getCode(this.resParams);
          }
        }, 1000);
@@ -352,12 +400,17 @@
    },
    getCode(res) {
      if (res.code == 200) {
        if (this.num == 60) {
        if (this.num == 30) {
          this.messageError = "下发成功!";
          if (!this.sencondTimer) {
            this.sencondTimer = setInterval(() => {
              this.sencond = this.sencond + 1;
            }, 1000);
          }
          clearInterval(this.timer);
          // this.num = 60;
          // this.num = 30;
          // this.showBtn = 2;
          this.message = "请确认生产安全!";
          this.message = this.safeProduce;
          this.num = 0;
          this.showBtn= 1
@@ -368,9 +421,9 @@
      } else {
        this.messageError = res.msg ? res.msg : "抱歉,工序下发失败!";
        clearInterval(this.timer);
        this.num = 60;
        this.num = 30;
        this.showBtn = 2;
        this.message = "请确认生产安全!";
        this.message =this.safeProduce;
      }
    },
    shutdown() {
@@ -381,6 +434,12 @@
</script>
<style lang="scss" scoped>
.color_error{
  color:red;
}
.color_success{
  color:green;
}
.tank-box {
  width: 753px;
  height: 728px;
@@ -388,7 +447,7 @@
  position: relative;
  .dialog-footer {
    position: absolute;
    bottom: 30px;
    bottom: 25px;
    width:100%;
    text-align:center;
  }
@@ -444,16 +503,16 @@
  }
}
.error-t {
  width: 120px;
  margin: 50px auto 40px;
  img {
    width: 100%;
  width: 100px;
  margin: 100px auto 40px;
  font-size:98px;
  span {
    display: inline-block;
  }
}
.error-m {
  line-height: 35px;
  font-size: 26px;
  font-size: 28px;
  color: #fff;
  margin-bottom: 20px;
  text-align: center;
@@ -467,6 +526,9 @@
::v-deep .el-dialog__body {
  padding: 0 !important;
}
.btn-error{
  bottom:80px!important;
}
.btn {
  width: 150px;
  height: auto;
@@ -476,11 +538,11 @@
    width: 100%;
  }
  .icon-loading{
    font-size:19px;
    font-size:32px;
    color:#333;
    position:absolute;
    line-height:3.4;
    left:15%;
    line-height:2.0;
    left:38%;
  }
  &:nth-of-type(1) {
    // margin-right: 30px;
@@ -562,14 +624,14 @@
  width: 100%;
}
.dialog-content-box {
  height: calc(100% - 200px);
  height: calc(100% - 190px);
  // overflow: hidden;
  padding: 20px 0px 20px;
  padding: 20px 0px 10px;
  .el-form {
    overflow: hidden;
  }
  .title-auto-box {
    height: calc(100% - 180px);
    height: calc(100% - 220px);
    overflow: auto;
    width:calc(100% - 140px);
    margin: 0 auto; 
@@ -579,22 +641,37 @@
      width:calc(100% - 20px);
    }
  }
  .gif{
    width:35px;
  .gif-box{
    width:230px;
    margin:0 auto;
    display:inline-block;
    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: 35px;
        height: 35px;
        display: inline-block;
        width: 55px;
        height: 55px;
        float:left;
        // background: #15d815;
        background:red;
        border-radius: 50%;
        margin-top:-5px;
        // margin-top:-5px;
        vertical-align: middle;
      }
  }