songshankun
2023-11-22 f6739d7542be48f7f8139c3d5fc7b2326e5cfc8d
src/views/visualization.vue
@@ -4,8 +4,9 @@
    <!-- v-if="Tasks&&Tasks.length>0" -->
    <template >
      <div class="left">
        <p class="title">
          <template v-if="Number(ChannelAmount)>1">
        <div class="title">
          <div class="dashboard-channels">
            <template v-if="Number(ChannelAmount)>1">
            <span
              class="font set-title"
              style="float: left; margin-right: 15px;"
@@ -16,41 +17,48 @@
                <img style="width:32px;" src="../../public/one.png" />
              </span>
            </span>
            <span class="font set-title" style="float: left;margin-right: 15px;" @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)"
            >
              <span
                class="font set-title"
                style="float: left;"
                @click="cutClick(3)"
              >
              <img style="width:32px;" v-if="activeName == 3" src="../../public/right-blue.png" />
              <span  v-else>
                <img style="width:32px;" src="../../public/right.png" />
              </span>
            </span>
         </template>
          智能工作台
          <span
            class="font el-icon-setting set-title"
            style="float: right"
            @click="setUrl"
          ></span>
          <span
            class="font el-icon-s-tools set-title"
            style="float: right;margin-right: 6px"
            @click="openParamsConfigModal"
          ></span>
          <span
            style="float: right;margin-right:20px;font-size:28px;line-height:25px;"
            @click="taskClick"
          >
            </template>
          </div>
         <div class="dashboard-title">
           智能工作台 — {{currentDeviceName}}
           <i  @click="showDeviceModal=true" class="el-icon" style="font-size: 26px; height: 32px; color: #0db7f5; margin-left: 20px; cursor: pointer;"><svg data-v-c3da359e="" viewBox="0 0 24 24" width="1.2em" height="1.2em"><path fill="currentColor" d="M13 5h9v2h-9zM2 7h7v2h2V3H9v2H2zm7 10h13v2H9zm10-6h3v2h-3zm-2 4V9.012h-2V11H2v2h13v2zM7 21v-6H5v2H2v2h3v2z"></path></svg></i>
         </div>
          <div class="dashboard-btn">
            <span
              class="font el-icon-setting set-title"
              style="float: right"
              @click="setUrl"
            ></span>
            <span
              class="font el-icon-s-tools set-title"
              style="float: right;margin-right: 6px"
              @click="openParamsConfigModal"
            ></span>
            <span
              style="float: right;margin-right:20px;font-size:28px;line-height:25px;"
              @click="taskClick"
            >
          <el-badge :value="TaskCount"  :class="(TaskCount==0||isTipShow)?'item color_666':'item color_fff'">
            <i   class="el-icon-chat-dot-round" />
          </el-badge>
        </span>
        </p>
          </div>
        </div>
        <div
          :class="(activeName == 1||activeName == 3) ? 'active-one' : 'active-two'"
          v-for="(taskData, index) in Tasks"
@@ -599,6 +607,7 @@
      @updateGet="updateGet"
    />
    <ParamsConfigModal :visible="paramsConfigIsShow" @close="closeParamsConfigModal"></ParamsConfigModal>
    <DeviceSelectModal :visible.sync="showDeviceModal" @should-reload="reloadAllData"></DeviceSelectModal>
  </div>
</template>
@@ -623,8 +632,11 @@
import {channelNameConfig} from "@/common/constants";
import _ from 'lodash'
import ParamsConfigModal from "@/components/ParamsConfigModal.vue";
import DeviceSelectModal from "@/components/DeviceSelectModal.vue";
import {mapActions, mapGetters, mapState} from "vuex";
export default {
  components: {
    DeviceSelectModal,
    ParamsConfigModal,
    TaskControlModal,
    Card,
@@ -635,6 +647,7 @@
  },
  data() {
    return {
      showDeviceModal:false,
      pollingTaskCountTimer: null,
      activeName: 1,
      progress: 70, //进度
@@ -782,6 +795,7 @@
    this.activeName = channelType
    this.getTaskInfo(channelType);
    this.getTaskCountStatistics()
    this.getDeviceInfo()
  },
  beforeDestroy() {
    clearTimeout(this.pollingTaskCountTimer)
@@ -796,6 +810,8 @@
    // }
  },
  computed:{
    ...mapState(['deviceInfo']),
    ...mapGetters(['currentDeviceName']),
    displayPLCStatus(){
      let PLCStatus = []
      if (this.activeName===1){
@@ -812,6 +828,13 @@
    }
  },
  methods: {
    ...mapActions(["getDeviceInfo"]),
    reloadAllData(){
      console.log(1)
      this.getTaskInfo(this.activeName);
      this.getTaskCountStatistics()
      this.getDeviceInfo()
    },
    newTaskPlaceholder(channel){
      return {
        Order: {},
@@ -891,12 +914,12 @@
    getModelList(){
      for (let i in this.TasksCopy){
        this.TasksCopy[i].isUpdateIcon=false;
        if(this.TasksCopy[i].Procedure.ID&&this.TasksCopy[i].number){
        // number:this.TasksCopy[i].number
        if(this.TasksCopy[i].Procedure.ID){
          processModelList({
            procedureId: this.TasksCopy[i].Procedure.ID,
            page: 1,
            pageSize:6,
            number:this.TasksCopy[i].number
          }).then(res=>{
            if(res.code==200){
              this.processList=res.data?res.data:[];
@@ -920,12 +943,11 @@
      this.listData=list;
      this.index=index
      if( Object.keys(this.listData).length > 0){
        if(this.listData.Procedure.ID&&this.listData.number){
        if(this.listData.Procedure.ID){
          this.$refs.processModel.islook=true
          return true;
        }
      }
      this.$message.error('当前工序无编号,无法查看工序!')
    },
    getProcessModelList(){
      this.getModelList()
@@ -1163,6 +1185,8 @@
      getTaskInfo({taskMode:1}).then((res) => {
        if (res.code === 200&&res.data) {
          this.TaskCount=res.data?.TaskCount ?? 0
        }else {
          this.TaskCount = 0
        }
      },err=>{
        this.TaskCount = 0
@@ -1170,8 +1194,8 @@
      }).finally(()=>{
        this.pollingTaskCountTimer = setTimeout(()=>{
          this.getTaskCountStatistics()
        //   20秒一次轮询
        },20000)
        //   20秒一次轮询 // 改一分钟
        },60000)
      });
    },
@@ -1267,7 +1291,12 @@
          }
          this.getProcessModelList();
          this.getStartArr()
          this.cutClick(val?val:1)
          if(this.ChannelAmount===1){
            this.cutClick(1)
          }else{
            this.cutClick(val?val:1)
          }
          if(info=='new'){
            return true;
          }
@@ -1278,6 +1307,19 @@
                  this.getProgressInfo();
                }, 3000);
              }
        }else{
          this.TaskCount = 0
          const allChannels = [0,1];
          this.workers = []
          allChannels.forEach(channel => this.TasksCopy.push(this.newTaskPlaceholder(channel)))
          this.TasksCopy.sort((a,b)=>a.Channel - b.Channel)
          this.cutClick(1)
          this.getProgressInfo();
          if (!this.procInfoTimer&&!this.resprocInfoTimer) {
            this.procInfoTimer = setInterval(() => {
              this.getProgressInfo();
            }, 3000);
          }
        }
        // if (res.code != 200 || this.TasksCopy.length == 0) {
        //   this.getcountdown();
@@ -1289,6 +1331,14 @@
        //   }
        // }
      },err=>{
        console.error(err)
        this.TaskCount = 0
        const allChannels = [0,1];
        this.workers = []
        allChannels.forEach(channel => this.TasksCopy.push(this.newTaskPlaceholder(channel)))
        this.TasksCopy.sort((a,b)=>a.Channel - b.Channel)
        this.cutClick(1)
      });
      // this.TasksCopy.push(this.object)
      // this.TasksCopy.push(this.object)
@@ -1847,6 +1897,9 @@
    padding: 30px;
    padding-top: 20px;
    .title {
      display: flex;
      align-items: center;
      justify-content: space-between;
      font-size: 30px;
      font-weight: 600;
      height:40px;
@@ -2329,4 +2382,8 @@
    display: none;
  }
}
.dashboard-title{
  display: flex;
  align-items: center;
}
</style>