haoxuan
2023-09-22 0ff14f558473544c9145735524fb671743c716bb
src/views/visualization.vue
@@ -13,9 +13,17 @@
            <img style="width:32px;" v-if="activeName == 1" src="../../public/one-blue.png" />
            <img style="width:32px;" v-else src="../../public/one.png" />
          </span>
          <span class="font set-title" style="float: left" @click="cutClick(2)">
          <span class="font set-title" style="float: left;margin-right: 15px;" @click="cutClick(2)">
            <img style="width:32px;" v-if="activeName == 2" src="../../public/two-blue.png" />
            <img style="width:32px;" v-else src="../../public/two.png" />
          </span>
          <span
            class="font set-title"
            style="float: left; "
            @click="cutClick(3)"
          >
            <img style="width:32px;" v-if="activeName == 3" src="../../public/one-blue.png" />
            <img style="width:32px;" v-else src="../../public/one.png" />
          </span>
          生产管理看板
          <span
@@ -33,7 +41,7 @@
        </span>
        </p>
        <div
          :class="activeName == 1 ? 'active-one' : 'active-two'"
          :class="(activeName == 1||activeName == 3) ? 'active-one' : 'active-two'"
          v-for="(taskData, index) in Tasks"
          :key="index"
        >
@@ -110,7 +118,7 @@
              </div>
            </div>
            <div class="content_right">
              <el-descriptions :column="activeName == 1 ? 2 : 1" :colon="true">
              <el-descriptions :column="(activeName == 1||activeName == 3) ? 2 : 1" :colon="true">
                <el-descriptions-item label="产品名称">{{
                  taskData.Order.productName || ""
                }}</el-descriptions-item>
@@ -308,7 +316,7 @@
                      <!-- <div class="card_content">
                        
                      </div> -->
                      <div :class="activeName==1?'card_top-4 font_size_20px':'card_top-4'">
                      <div :class="(activeName==1||activeName == 3)?'card_top-4 font_size_20px':'card_top-4'">
                        <div>工艺编号:<div >{{ list.number }}</div></div>
                        <!-- <div
                          style="
@@ -408,7 +416,7 @@
        </template>
          <!-- 2个任务的时候,第二个任务为空的时候显示 -->
          <template
              v-if="activeName == 2 &&(!taskData||Object.keys(taskData).length==0)"
              v-if="activeName == 2 &&(!taskData||Object.keys(taskData).length==0||(Tasks.length<2))"
            >
            <el-empty description="暂无任务..."></el-empty>
          </template>
@@ -665,6 +673,7 @@
      TaskCount:0,
      plcStatus:0,
      isTipShow:false,
      isFinsh:0,
    };
  },
  mounted() {
@@ -680,6 +689,13 @@
      this.getDate2();
    }, 5000);
    this.getTaskInfo();
  },
  watch:{
    isFinsh(){
      if(this.isFinsh==this.Tasks.length){
        this.getStartArr()
      }
    }
  },
  methods: {
    taskClick(){
@@ -862,48 +878,7 @@
          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:[]
          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: "工艺",
                    Arr:res.data.Params ? res.data.Params : [],
                  });
                }
              });
            }
            this.setInterCard("inputMaterials", "cardBox1&" + i, i);
            this.setInterCard("outputMaterials", "cardBox3&" + i, i);
          }
          this.getStartArr()
          this.getProgressInfo();
              if (!this.procInfoTimer) {
                this.procInfoTimer = setInterval(() => {
                  this.getProgressInfo();
                }, 3000);
          }
        }
          if (this.Tasks.length == 0) {
          if (this.Tasks.length == 0&&this.TaskCount==0) {
            if (this.activeName == 1) {
              this.Tasks.push(object);
            } else {
@@ -911,6 +886,47 @@
              this.Tasks.push(object);
            }
          }
          this.workers=res.data.workers?res.data.workers:[]
          for (let i in this.Tasks) {
            this.Tasks[i].procedureList = [];
            this.Tasks[i].inputMaterials = [];
            this.Tasks[i].outputMaterials = [];
            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,
                  });
                  this.Tasks[i].Arr=res.data.Params ? res.data.Params : []
                  this.isFinsh=Number(i)+1
                }
              });
            }
            this.setInterCard("inputMaterials", "cardBox1&" + i, i);
            this.setInterCard("outputMaterials", "cardBox3&" + i, i);
          }
          this.getProgressInfo();
              if (!this.procInfoTimer) {
                this.procInfoTimer = setInterval(() => {
                  this.getProgressInfo();
                }, 3000);
          }
        }
        if (res.code != 200 || this.Tasks.length == 0) {
          this.getcountdown();
          // 控制重新请求getTaskInfo, 只开启一个定时器
@@ -928,7 +944,7 @@
    getStartArr(){
      for (let i in this.Tasks) {
        if (this.Tasks[i].Procedure.Status==1) {
            this.Arr = this.Tasks[i].procedureList[0].Arr ?this.Tasks[i].procedureList[0].Arr: [];
            this.Arr = this.Tasks[i].Arr ?this.Tasks[i].Arr: [];
            this.taskData=this.Tasks[i];
            break;
        }
@@ -937,6 +953,7 @@
    getProgressInfo() {
      for (let i in this.Tasks){
        if(this.Tasks[i].Procedure.ID){
          this.Tasks[i].finishNumber = 0;
          getProgress({
            position: Number(i),
            procedureId: this.Tasks[i].Procedure.ID,
@@ -962,19 +979,7 @@
        path: "/set",
      });
    },
    // 右侧控制
    controlClick() {
      if (this.Tasks.length > 0) {
        for(let i in this.Tasks){
          if(this.Tasks[i].Procedure.Status==1){
            this.$refs.control.islook = true;
            break;
          }
        }
      } else {
        this.$message.error("当前设备没有工序!");
      }
    },
    // 右侧完成
    finishClick(i, taskData) {
      if (Object.keys(taskData).length > 0 && taskData.Procedure.ID) {