wuyouming666
2023-12-12 c7682df2f5ef53c79847ff8cc625f5ad69a7a999
CanadaMes-ui/src/views/Electrical/Parameter2.vue
@@ -1,89 +1,198 @@
<template>
    <div class="app">
    <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
        <router-link to="/Electrical/alarm" tag="el-button" type="text" active-class="blue-button">{{ $t('Alarm')
        }}</router-link>
        <router-link to="/Electrical/State" tag="el-button" type="text" active-class="blue-button">{{ $t('State')
        }}</router-link>
        <router-link to="/Electrical/Action" tag="el-button" type="text" active-class="blue-button">{{ $t('Action')
        }}</router-link>
      <router-link
        to="/Electrical/alarm"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("Alarm") }}</router-link
      >
      <router-link
        to="/Electrical/State"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("State") }}</router-link
      >
      <router-link
        to="/Electrical/Action"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("Action") }}</router-link
      >
        <!-- <router-link to="/Electrical/Parameter" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter')
        }}</router-link> -->
        <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign')
        }}</router-link>
         <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter')
        }}</router-link>
      <router-link
        to="/Electrical/Sign"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("Sign") }}</router-link
      >
      <router-link
        to="/Electrical/Servomanual"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("Parameter") }}</router-link
      >
      </el-breadcrumb>
  
      <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
      <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Automatic State')
      }}</router-link>
      <router-link to="/Electrical/ManualJog" tag="el-button" type="text" active-class="blue-button">{{
        $t('ManualJog')
      }}</router-link>
      <router-link
        to="/Electrical/Parameter2"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("Automatic State") }}</router-link
      >
      <router-link
        to="/Electrical/ManualJog"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("ManualJog") }}</router-link
      >
      
       <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
        $t('ManualonePosition')
      }}</router-link>
      <router-link
        to="/Electrical/ManualonePosition"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("ManualonePosition") }}</router-link
      >
<router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
        $t('Servomanualone')
      }}</router-link>
      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
      }}</router-link>
      <router-link
        to="/Electrical/Servomanualone"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("Servomanualone") }}</router-link
      >
      <!-- <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
      }}</router-link> -->
     
      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
        $t('Address parameter settings')
      }}</router-link>
      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
      <router-link
        to="/Electrical/Positioning1"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("Address parameter settings") }}</router-link
      >
      <!-- <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
        $t('Positioning2')
      }}</router-link>
      }}</router-link> -->
      <!--
      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
        $t('ManualonePosition2')
      }}</router-link>
      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
        $t('Speed parameter settings')
      }}</router-link>
      }}</router-link> -->
      <router-link
        to="/Electrical/AutomaticParameterSetting"
        tag="el-button"
        type="text"
        active-class="blue-button"
        >{{ $t("Speed parameter settings") }}</router-link
      >
    </el-breadcrumb>
  
    <el-row :gutter="40">
      <el-col :span="6" v-for="(dataGroup, groupIndex) in jsonData" :key="groupIndex"   style="margin-bottom: -20px;">
        <el-card class="json-block"  style="width:300px;margin-bottom: 2px;">
          <div class="button-row" style="display: flex; justify-content: space-between;">
      <el-col
        :span="6"
        v-for="(dataGroup, groupIndex) in jsonData"
        :key="groupIndex"
        style="margin-bottom: -20px;"
      >
        <el-card class="json-block" style="width: 300px; margin-bottom: 2px">
          <div
            class="button-row"
            style="display: flex; justify-content: space-between"
          >
            <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex">
              <span v-if="item.title" :name="item.title.name" class="action-button" >{{ item.title.name }}</span>
              <span
                v-if="item.title"
                :name="item.title.name"
                class="action-button"
                >{{ item.title.name }}</span
              >
            </div>
          </div>
          <div class="button-row" style="display: flex; justify-content: space-between;">
          <div
            class="button-row"
            style="display: flex; justify-content: space-between"
          >
            <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex">
              <el-button v-if="item.button && language==='en-US'" :name="item.button.name" v-model="item.button.value" class="action-button"
  @click="updateButtonValue(dataGroup, itemIndex);submitDataToBackend(item.button.name)"
  :class="{ 'green-button':  (item.button.value === 0  && item.button.name !==  'Clear ID' ) ,'red-button': item.button.value === 2 && (item.button.name !==  'Clear ID' ) ,'yellow-button': item.button.value === 1 && (item.button.name !==  'Clear ID' ),'id': item.button.value === 1 && (item.button.name ==  'Clear ID' ) }">{{ item.button.name }}</el-button>
              <el-button
                v-if="item.button && language === 'en-US'"
                :name="item.button.name"
                v-model="item.button.value"
                class="action-button"
                @click="
                  updateButtonValue(dataGroup, itemIndex);
                  submitDataToBackend(item.button.name);
                "
                :class="{
                  'green-button':
                    item.button.value === 0 && item.button.name !== 'Clear ID',
                  'red-button':
                    item.button.value === 2 && item.button.name !== 'Clear ID',
                  'yellow-button':
                    item.button.value === 1 && item.button.name !== 'Clear ID',
                  id: item.button.value === 1 && item.button.name == 'Clear ID',
                }"
                >{{ item.button.name }}</el-button
              >
           
  <el-button v-if="item.button && language==='zh-CN'" :name="item.button.name" v-model="item.button.value" class="action-button"
  @click="updateButtonValue(dataGroup, itemIndex);submitDataToBackend(item.button.name)"
  :class="{ 'green-button':  (item.button.value === 0  && item.button.name !==  '清除ID' ) ,'red-button': item.button.value === 2 && (item.button.name !==  '清除ID' ) ,'yellow-button': item.button.value === 1 && (item.button.name !==  '清除ID' ),'id': item.button.value === 1 && (item.button.name ==  '清除ID' ) }">{{ item.button.name }}</el-button>
              <el-button
                v-if="item.button && language === 'zh-CN'"
                :name="item.button.name"
                v-model="item.button.value"
                class="action-button"
                @click="
                  updateButtonValue(dataGroup, itemIndex);
                  submitDataToBackend(item.button.name);
                "
                :class="{
                  'green-button':
                    item.button.value === 0 && item.button.name !== '清除ID',
                  'red-button':
                    item.button.value === 2 && item.button.name !== '清除ID',
                  'yellow-button':
                    item.button.value === 1 && item.button.name !== '清除ID',
                  id: item.button.value === 1 && item.button.name == '清除ID',
                }"
                >{{ item.button.name }}</el-button
              >
</div>
          </div>
          <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex" class="item-container">
          <div
            v-for="(item, itemIndex) in dataGroup"
            :key="itemIndex"
            class="item-container"
          >
            <div class="item-row">
              <span
                class="name"
                v-if="groupIndex === 12"
                style="width: 250px"
                >{{ item.name }}</span
              >
              <span class="name" v-else style="width: 150px">{{
                item.name
              }}</span>
              <span class="name" v-if="groupIndex === 12" style="width:250px;">{{ item.name }}</span>
              <span class="name" v-else style="width:150px;">{{ item.name }}</span>
              <el-input v-if="item.type === '0'" v-model="item.value" readonly="readonly"     style="width:300px;" class="input-box"></el-input>
              <el-input
                v-if="item.type === '0'"
                v-model="item.value"
                readonly="readonly"
                style="width: 300px"
                class="input-box"
              ></el-input>
            </div>
          </div>
        </el-card>
      </el-col>
    </el-row>
@@ -92,8 +201,8 @@
  </template>
  
  <script>
  import LanguageMixin from '../../lang/LanguageMixin'
  import data from '../../configuration/parameter2'
import LanguageMixin from "../../lang/LanguageMixin";
import data from "../../configuration/parameter2";
  // import { throttle } from 'lodash';
  let socket;
@@ -109,41 +218,39 @@
  data() {
    return {
      jsonData: data ,
      inputValue: '',
      inputValue: "",
      language:this.$i18n.locale,
      // 加载整个data.json文件作为jsonData
    }
    };
  },
 
  activated(){
    this.initWebSocket ();
    this.filteredData();
   const language = this.$i18n.locale;
  console.log(language);
  if (language === 'en-US') {
    if (language === "en-US") {
    this.replaceChineseWithEnglish();
  }
  this.$forceUpdate();
  },
  
    computed: {
},
  computed: {},
  methods: {
    filteredData() {
    return this.jsonData.map(item => {
      const filteredValue = item.map(obj => {
        if (typeof obj.button !== 'undefined' && typeof obj.button.value !== 'undefined') {
          obj.button.value = obj.button.value.toString().replace(/[^a-zA-Z0-9]/g, '');
        } else if (typeof obj.value !== 'undefined') {
          obj.value = obj.value.toString().replace(/[^a-zA-Z0-9]/g, '');
      return this.jsonData.map((item) => {
        const filteredValue = item.map((obj) => {
          if (
            typeof obj.button !== "undefined" &&
            typeof obj.button.value !== "undefined"
          ) {
            obj.button.value = obj.button.value
              .toString()
              .replace(/[^a-zA-Z0-9]/g, "");
          } else if (typeof obj.value !== "undefined") {
            obj.value = obj.value.toString().replace(/[^a-zA-Z0-9]/g, "");
        }
        return obj;
      });
@@ -154,43 +261,45 @@
  updateButtonValue(dataGroup, itemIndex) {
  if (dataGroup[itemIndex].button.value === 0) {
    // 如果当前按钮的值是 0,将其设为 1
    this.$set(dataGroup[itemIndex].button, 'value', 1);
        this.$set(dataGroup[itemIndex].button, "value", 1);
  } else {
    // 否则将其设为 0
    this.$set(dataGroup[itemIndex].button, 'value', 0);
        this.$set(dataGroup[itemIndex].button, "value", 0);
  }
},
    submitDataToBackend(currentButtonName) {
  if (currentButtonName === '清除ID'  || currentButtonName === 'Clear ID' ) {
      if (currentButtonName === "清除ID" || currentButtonName === "Clear ID") {
  const data2 = [];
  const resetButtonValues = this.jsonData.map(item => {
    const buttonItem = item.find(subItem => subItem.button && ['清除ID', 'Clear ID'].includes(subItem.button.name));
        const resetButtonValues = this.jsonData
          .map((item) => {
            const buttonItem = item.find(
              (subItem) =>
                subItem.button &&
                ["清除ID", "Clear ID"].includes(subItem.button.name)
            );
    
    return buttonItem ? buttonItem.button.value : null;
  }).filter(value => value !== null);
          })
          .filter((value) => value !== null);
  // 将得到的值添加到 data 数组中
  data2.push(resetButtonValues.flat());
  data2.push([]);
  // 在 data2 数组前面添加两个空数组
 
  // 创建 jsonObject2 对象,并添加 data2 属性
  const jsonObject2 = { data: data2 };
  // 提交数据到后端
  const jsonString2 = JSON.stringify(jsonObject2);
  console.log('所有Type为0的value:', jsonString2);
        console.log("所有Type为0的value:", jsonString2);
  socket?.send(jsonString2);
}
if (currentButtonName === 'Abort/ResumeTasks' || currentButtonName === '急停后中止/继续选择') {
      if (
        currentButtonName === "Abort/ResumeTasks" ||
        currentButtonName === "急停后中止/继续选择"
      ) {
  const data3 = [];
  const resetButtonValues3 = [this.jsonData[13][0].button.value];
 
@@ -199,34 +308,30 @@
  data3.unshift([]);
  // 在 data3 数组前面添加两个空数组
  
  // 创建 jsonObject3 对象,并添加 data3 属性
  const jsonObject3 = { data: data3 };
  // 提交数据到后端
  const jsonString3 = JSON.stringify(jsonObject3);
  console.log('急停后中止/继续选择:', jsonString3);
        console.log("急停后中止/继续选择:", jsonString3);
  socket?.send(jsonString3);
  // setTimeout(()=>
  //   window.location.reload(),2000
  // )
}
},
    initWebSocket () {
      let viewname = "Parameter2";
      if (typeof WebSocket === "undefined") {
        console.log("您的浏览器不支持WebSocket");
      } else {
        let socketUrl = "ws://" + this.$t('ip')+":8888" + "/springboot-vue3/api/talk/" + viewname;
        let socketUrl =
          "ws://" +
          this.$t("ip") +
          ":8888" +
          "/springboot-vue3/api/talk/" +
          viewname;
        if (socket != null) {
          socket.close();
@@ -253,10 +358,7 @@
      const parms = obj.params;
     console.log(obj);
  // const handleMouseMove = throttle(function(event) {
  // const inputBox = document.querySelectorAll('.id');
@@ -264,7 +366,7 @@
  // if (parms && inputBox && Array.from(inputBox).every(box => !box.contains(target))) {
//急停按钮
    // jsonData2[13][0].button.value = obj.jiting[0][0];
          jsonData2[13][0].button.value = obj.jiting[0][0];
    //清除id
@@ -272,13 +374,11 @@
  let arr = jsonData2[i];
  for (let j = 0; j < arr.length; j++) {
    let obj = arr[j];
    if (obj.type === '3') {
              if (obj.type === "3") {
      obj.button.value = parms[0][i];
      // console.log(obj.button.value);
    }
  }
}
//ID
@@ -289,28 +389,25 @@
  for (let j = 0; j < arr.length; j++) {
    let obj = arr[j];
    if (obj.type === '0') {
              if (obj.type === "0") {
  if (parms[1] && parms[1][i]) {
    obj.value = parms[1][i].replace(specialChars, '');
                  obj.value = parms[1][i].replace(specialChars, "");
    // console.log(obj.value);
  }
  if (obj.name === 'ID2') {
        obj.value = parms[1][7].replace(specialChars, ''); // 将ID2对应的值赋为parms[1][6]
                if (obj.name === "ID2") {
                  obj.value = parms[1][7].replace(specialChars, ""); // 将ID2对应的值赋为parms[1][7]
      }
      if (obj.name === 'A02ID') {
        obj.value = parms[1][8].replace(specialChars, ''); // 将ID2对应的值赋为parms[1][6]
                if (obj.name === "A02ID") {
                  obj.value = parms[1][8].replace(specialChars, "");
      }
      if (obj.name === 'B01ID') {
        obj.value = parms[1][9].replace(specialChars, ''); // 将ID2对应的值赋为parms[1][6]
                if (obj.name === "B01ID") {
                  obj.value = parms[1][9].replace(specialChars, "");
      }
      if (obj.name === 'B02ID') {
        obj.value = parms[1][10].replace(specialChars, ''); // 将ID2对应的值赋为parms[1][6]
                if (obj.name === "B02ID") {
                  obj.value = parms[1][10].replace(specialChars, "");
      }
}
  }
}
@@ -319,28 +416,27 @@
  let arr = jsonData2[i];
  for (let j = 0; j < arr.length; j++) {
    let obj = arr[j];
    if (obj.type === '4') {
              if (obj.type === "4") {
      obj.button.value = parms[2][i];
    }
  }
}
//改变状态文字
for (let i = 0; i < jsonData2.length; i++) {
  let arr = jsonData2[i];
  for (let j = 0; j < arr.length; j++) {
    let obj = arr[j];
    if (obj.type === '4' && obj.button.value===1) {
      if ( obj.button.name.includes("状态")&& this.language==="zh-CN") {
              if (obj.type === "4" && obj.button.value === 1) {
                if (
                  obj.button.name.includes("状态") &&
                  this.language === "zh-CN"
                ) {
      obj.button.name =obj.button.name.replace("手动","自动") ;
    }
    if ( obj.button.name.includes("Status")) {
      obj.button.name =obj.button.name.replace("Manual","Auto") ;
    }
  }
}
}
//扫描枪扫码的ID
@@ -348,7 +444,7 @@
jsonData2.forEach((item) => {
  item.forEach((subItem) => {
    if (subItem.read === 66) {
      subItem.value = parms[3][0].replace(specialChars, '');
                subItem.value = parms[3][0].replace(specialChars, "");
    }
  });
});
@@ -356,12 +452,10 @@
jsonData2.forEach((item) => {
  item.forEach((subItem) => {
    if (subItem.read === 666) {
      subItem.value = parms[3][1].replace(specialChars, '');
                subItem.value = parms[3][1].replace(specialChars, "");
    }
  });
});
//A01当前格子
let lastParmsArray = parms[parms.length - 1];
@@ -379,20 +473,13 @@
        }
    }
}
  }
        };
//  console.log(jsonData2);
// }, 50);
        
// document.addEventListener('mouseover', handleMouseMove);
  
// };
        // 关闭事件
        socket.onclose = function () {
@@ -406,14 +493,11 @@
       
        this.$router.afterEach(function(){
          socket.close();
        })
        });
      }
    },
    replaceChineseWithEnglish() {
 const nameMap=  this.$t('langParameter2')
      const nameMap = this.$t("langParameter2");
 this.jsonData = this.jsonData.map((item) => {
return item.map((obj) => {
if (obj.name) {
@@ -428,24 +512,20 @@
});
});
// console.log(this.jsonData)
},
    send () {
      socket?.send(JSON.stringify(this.messagepack));
    }
  }
  }
    },
  },
};
  </script>
  
  <style scoped>
  html,body{
html,
body {
width:100%;
height:85%;
}
  .item-row {
  display: flex;
@@ -456,7 +536,7 @@
  .action-button {
  margin-right: 30px;
  background: #66b1ff;
  color: #FFF;
  color: #fff;
  }
  .blue-button {
  background-color: skyblue;
@@ -473,7 +553,6 @@
  background-color: blue;
}
.id{
  background-color: green;
}