wuyouming666
2023-12-04 82c2df0968b099bd589936adc5b28c1ac4827a05
CanadaMes-ui/src/views/Electrical/Parameter2.vue
@@ -7,8 +7,8 @@
        }}</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/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('Servo Manual')
@@ -26,11 +26,23 @@
          }}</router-link>
            <router-link to="/Electrical/Positioning2" tag="el-button" type="text"  active-class="blue-button">{{ $t('Positioning2')
          }}</router-link>
           <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
        $t('ManualonePosition')
      }}</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('AutomaticParameterSetting')
      }}</router-link>
      <router-link to="/Electrical/ManualJog" tag="el-button" type="text" active-class="blue-button">{{
        $t('ManualJog')
      }}</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:260px;margin-bottom: 2px;">
        <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>
@@ -39,16 +51,27 @@
          <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" :name="item.button.name" v-model="item.button.value" class="action-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 !== '清除ID','red-button': item.button.value === 2 && item.button.name !== '清除ID' ,'yellow-button': item.button.value === 1 && item.button.name !== '清除ID' }">{{ item.button.name }}</el-button>
            </div>
  :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' ) }">{{ 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' ) }">{{ item.button.name }}</el-button>
</div>
          </div>
          <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex" class="item-container">
            <div class="item-row">
              <span class="name" style="width:150px;">{{ item.name }}</span>
              <el-input v-if="item.type === '0'" v-model="item.value" readonly="readonly"    style="width:400px;" class="input-box"></el-input>
              <span class="name" v-if="groupIndex === 13" 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:400px;" class="input-box"></el-input>
            </div>
          </div>
        
@@ -63,6 +86,10 @@
  import LanguageMixin from '../../lang/LanguageMixin'
  import data from '../../configuration/parameter2'
  let socket;
  // window.onload=function(){
  //   console.log("44");
  // }
  export default {
    destroyed() {
    socket.close();
@@ -72,56 +99,86 @@
  data() {
    return {
      jsonData: data ,
      inputValue: '',
      language:this.$i18n.locale,
      // 加载整个data.json文件作为jsonData
    }
  },
  created () {
    this.initWebSocket();
    // console.log('jsonData:', this.jsonData);
  activated(){
    this.initWebSocket ();
    this.filteredData();
   const language = this.$i18n.locale;
  console.log(language);
  if (language === 'en-US') {
    this.replaceChineseWithEnglish();
  }
  this.$forceUpdate();
  },
    computed: {
  },
  mounted() {
    window.addEventListener('beforeunload', this.closeSocket);
  },
},
  beforeUnmount() {
    window.removeEventListener('beforeunload', this.closeSocket);
  },
  methods: {
    closeSocket() {
      // 关闭 WebSocket 连接
      socket.close();
    },
    updateButtonValue(dataGroup, itemIndex) {
  // 将当前按钮的值设为1
    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 obj;
      });
      return filteredValue;
    });
  },
  
  updateButtonValue(dataGroup, itemIndex) {
  if (dataGroup[itemIndex].button.value === 1) {
    // 如果当前按钮的值是 0,将其设为 1
    this.$set(dataGroup[itemIndex].button, 'value', 0);
  } else {
    // 否则将其设为 0
    this.$set(dataGroup[itemIndex].button, 'value', 1);
  // 将其他按钮的值全部设为0
  }
},
    submitDataToBackend(currentButtonName) {
  if (currentButtonName === '清除ID') {
    const inputData = this.jsonData.map(dataGroup => {
      return dataGroup.map(item => {
        if (item.type === '3') {
          return { value: item.button.value };
        }
        return null;
      });
    });
    const values = inputData.flat().filter(item => item !== null).map(item => item.value);
    const jsonObject = { data: values };
  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));
    return buttonItem ? buttonItem.button.value : null;
  }).filter(value => value !== null);
  // 将得到的值添加到 data 数组中
  data2.push(resetButtonValues.flat());
 
 // 提交数据到后端
 const jsonString = JSON.stringify(jsonObject);
   console.log('Type为3的value:', jsonString);
     socket?.send(jsonString);
     window.location.reload();
  }
  // 在 data2 数组前面添加两个空数组
  // 创建 jsonObject2 对象,并添加 data2 属性
  const jsonObject2 = { data: data2 };
  // 提交数据到后端
  const jsonString2 = JSON.stringify(jsonObject2);
  console.log('所有Type为0的value:', jsonString2);
  socket?.send(jsonString2);
}
},
    initWebSocket () {
 
@@ -154,13 +211,13 @@
  let obj = JSON.parse(msg.data);
 
  const jsonData2 = this.jsonData;
  // console.log(jsonData2);
      // 如果鼠标不在输入框内,更新输入框的值
      // this.submitDataToBackend()
      const parms = obj.params;
      // const xiaoche = obj.params[3];
   
    //  console.log(parms);
  //  console.log(obj);
//清除id
      for (let i = 0; i < jsonData2.length; i++) {
  let arr = jsonData2[i];
@@ -168,23 +225,45 @@
    let obj = arr[j];
    if (obj.type === '3') {
      obj.button.value = parms[0][i];
      // console.log(obj.button.value);
    }
  }
     
}
//ID
      for (let i = 0; i < jsonData2.length; i++) {
const specialChars = /[^\w\s]/g; // 正则表达式匹配非字母、数字、下划线和空格的字符
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 === '0') {
      obj.value = parms[1][i];
    }
  }
    if (obj.type === '0') {
  if (parms[1] && parms[1][i]) {
    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 === 'A02ID') {
        obj.value = parms[1][8].replace(specialChars, ''); // 将ID2对应的值赋为parms[1][6]
      }
      if (obj.name === 'B01ID') {
        obj.value = parms[1][9].replace(specialChars, ''); // 将ID2对应的值赋为parms[1][6]
      }
      if (obj.name === 'B02ID') {
        obj.value = parms[1][10].replace(specialChars, ''); // 将ID2对应的值赋为parms[1][6]
      }
}
  }
}
//手动状态
for (let i = 0; i < jsonData2.length; i++) {
  let arr = jsonData2[i];
@@ -198,10 +277,19 @@
     
}
//扫描枪扫码的ID
jsonData2.forEach((item) => {
  item.forEach((subItem) => {
    if (subItem.read === 66) {
      subItem.value = parms[3][0];
      subItem.value = parms[3][0].replace(specialChars, '');
    }
  });
});
jsonData2.forEach((item) => {
  item.forEach((subItem) => {
    if (subItem.read === 666) {
      subItem.value = parms[3][1].replace(specialChars, '');
    }
  });
});
@@ -246,10 +334,35 @@
        socket.onerror = function () {
          console.log("websocket发生了错误");
        };
        this.$router.afterEach(function(){
          socket.close();
        })
      }
    },
    replaceChineseWithEnglish() {
 const nameMap=  this.$t('langParameter2')
 this.jsonData = this.jsonData.map((item) => {
return item.map((obj) => {
if (obj.name) {
 const newName = nameMap[obj.name] || obj.name;
 return { ...obj, name: newName };
} else if (obj.button && obj.button.name) {
 const newName = nameMap[obj.button.name] || obj.button.name;
 return { ...obj, button: { ...obj.button, name: newName } };
} else {
 return obj;
}
});
});
// console.log(this.jsonData)
},
    send () {