wuyouming666
2023-12-12 35b92e62a6ba557f7feeea1a344e104d8db7ffb4
A01启动 B01启动 增加plc地址 单独写入
13个文件已修改
1个文件已删除
817 ■■■■ 已修改文件
CanadaMes-ui/public/index.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/lang/locales/en-US.json 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/AutomaticParameterSetting.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/ManualonePosition.vue 238 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue 126 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/Positioning1.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/src/views/Electrical/ServoManualone.vue 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition2.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning1.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/resources/config.properties 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CanadaMes-ui/public/index.html
@@ -5,7 +5,7 @@
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <link rel="icon" href="<%= BASE_URL %>2.ico">
    <title>北玻mes系统</title>
    <title>NorthGlass-MES-System</title>
  </head>
  <body>
    <noscript>
CanadaMes-ui/src/lang/locales/en-US.json
@@ -446,7 +446,7 @@
                "B01当前格子": "B01 Current Grid",
                "B01启动": "B01 Start",
                "复位": "Reset",
                "回零": "Zero",
                "回零": "Home",
                "未回零": "NotZero",
                "B02手动格子": "B02 Target grid(Manual)",
                "B02定位速度": "B02 TRAVEL POS Velocity manual",
@@ -466,14 +466,14 @@
                "故障": "Fault",
                "复位": "Reset",
                "未回零": "NotZero",
                "回零": "Zero",
                "回零": "Home",
                "A02手动位置": "A02 turn Target Angle(Manual)",
                "A02定位速度": "A02 TURN POS Velocity manual",
                "A02翻转实时位置": "A02 turn Actual angle",
                "A02翻转启动": "A02 SERVE TURN",
                "A02复位": "Reset",
                "未回零": "NotZero",
                "回零": "Zero"
                "A02复位": "Reset"
              },
              "AutomaticParameterSettinglang": {
                "A01行走高速角度": "A01 turn Angle1",
CanadaMes-ui/src/views/Electrical/AutomaticParameterSetting.vue
@@ -172,7 +172,7 @@
          // console.log(obj);
          const handleMouseMove = throttle(function (event) {
            const inputBox = document.querySelectorAll('.el-card__body');
            const inputBox = document.querySelectorAll('.input-box');
            const target = event.target;
            if (inputBox && Array.from(inputBox).every(box => !box.contains(target))) {
              const parms = obj.params;
CanadaMes-ui/src/views/Electrical/ManualonePosition.vue
@@ -54,7 +54,16 @@
          <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex" class="item-container">
            <div class="item-row">
              <span class="name" style="width:300px;">{{ item.name }}</span>
              <el-input style="width:250px;" v-if="item.state != 0 && item.type === '0'" v-model="item.value"
                <el-input style="width:250px;"  v-if="item.state != 0 && item.type === '0' && groupIndex === 0" v-model="item.value"  @keyup.enter.native="A01start"
                class="input-box"></el-input>
                <el-input style="width:250px;"  v-else-if="item.state != 0 && item.type === '0' && groupIndex === 1" v-model="item.value"  @keyup.enter.native="A02start"
                class="input-box"></el-input>
                <el-input style="width:250px;"  v-else-if="item.state != 0 && item.type === '0' && groupIndex === 2" v-model="item.value"  @keyup.enter.native="B01start"
                class="input-box"></el-input>
                <el-input style="width:250px;"  v-else-if="item.state != 0 && item.type === '0' && groupIndex === 3" v-model="item.value"  @keyup.enter.native="B02start"
                class="input-box"></el-input>
                <el-input style="width:250px;" v-else-if="item.state != 0 && item.type === '0'" v-model="item.value"
                class="input-box"></el-input>
            </div>
          </div>
@@ -75,11 +84,10 @@
        </el-card>
      </el-col>
    </el-row>
    <div class="container">
    <!-- 这里是用于显示内嵌 Vue 页面的区域 -->
 <div class="container">
    <component :is="embeddedComponent"></component>
  </div>
  </div>
    <!-- <el-button @click="submitDataToBackend">提交数据到后端</el-button> -->
  </div>
@@ -136,20 +144,114 @@
    },
    A01start(){
      const data = [];
for (let i = 0; i < 1; i++) {
  const inputData = this.jsonData[i].filter(item => item.type === '0').map(item => {
    return { value: item.value };
  });
  const values = inputData.map(item => item.value);
  data.push(values);
}
data.push([], [], [],[],[],[]);
const jsonObject = { data };
// 提交数据到后端
const jsonString = JSON.stringify(jsonObject);
console.log('所有Type为0的value:', jsonString);
socket?.send(jsonString);
    },
    A02start(){
      const data = [];
for (let i = 1; i < 2; i++) {
  const inputData = this.jsonData[i].filter(item => item.type === '0').map(item => {
    return { value: item.value };
  });
  const values = inputData.map(item => item.value);
  data.unshift([]);
  data.push(values);
}
data.push([], [], [],[],[]);
const jsonObject = { data };
// 提交数据到后端
const jsonString = JSON.stringify(jsonObject);
console.log('所有Type为0的value:', jsonString);
socket?.send(jsonString);
    },
    B01start(){
      const data = [];
for (let i = 2; i < 3; i++) {
  const inputData = this.jsonData[i].filter(item => item.type === '0').map(item => {
    return { value: item.value };
  });
  const values = inputData.map(item => item.value);
  data.unshift([], []);
  data.push(values);
}
//data.unshift([]);
data.push([], [], [],[]);
const jsonObject = { data };
// 提交数据到后端
const jsonString = JSON.stringify(jsonObject);
console.log('所有Type为0的value:', jsonString);
socket?.send(jsonString);
    },
    B02start(){
      const data = [];
for (let i = 3; i < 4; i++) {
  const inputData = this.jsonData[i].filter(item => item.type === '0').map(item => {
    return { value: item.value };
  });
  const values = inputData.map(item => item.value);
  data.unshift([], [], []);
  data.push(values);
}
data.push([], [],[]);
const jsonObject = { data };
// 提交数据到后端
const jsonString = JSON.stringify(jsonObject);
console.log('所有Type为0的value:', jsonString);
socket?.send(jsonString);
    },
    submitDataToBackend (currentButtonName) {
      if (currentButtonName === 'A01启动' || currentButtonName === 'A01 Start') {
        const data = [];
        for (let i = 0; i < 1; i++) {
          const inputData = this.jsonData[i].filter(item => item.type === '0').map(item => {
            return { value: item.value };
          });
          const values = inputData.map(item => item.value);
  const values = [this.jsonData[0][3].button.value]
          data.push(values);
        }
        data.push([], [], [],[],[],[]);
        data.unshift([], [], [],[],[],[],[]);
@@ -165,77 +267,60 @@
      if (currentButtonName === 'A02启动' || currentButtonName === 'A02 Start') {
        const data = [];
        for (let i = 1; i < 2; i++) {
          const inputData = this.jsonData[i].filter(item => item.type === '0').map(item => {
            return { value: item.value };
          });
const values = [this.jsonData[1][3].button.value]
          const values = inputData.map(item => item.value);
          data.unshift([]);
          data.push(values);
        }
        data.push([], [], [],[],[]);
        data.push(values);
      data.unshift([], [], [],[],[],[],[],[]);
        const jsonObject = { data };
      const jsonObject = { data };
        // 提交数据到后端
        const jsonString = JSON.stringify(jsonObject);
        console.log('所有Type为0的value:', jsonString);
        socket?.send(jsonString);
      // 提交数据到后端
      const jsonString = JSON.stringify(jsonObject);
      console.log('所有Type为0的value:', jsonString);
      socket?.send(jsonString);
      }
      if (currentButtonName === 'B01启动' || currentButtonName === 'B01 Start') {
        const data = [];
        for (let i = 2; i < 3; i++) {
          const inputData = this.jsonData[i].filter(item => item.type === '0').map(item => {
            return { value: item.value };
          });
const values = [this.jsonData[2][3].button.value]
          const values = inputData.map(item => item.value);
          data.unshift([], []);
          data.push(values);
        }
        //data.unshift([]);
        data.push([], [], [],[]);
        data.push(values);
      data.unshift([], [], [],[],[],[],[],[],[]);
        const jsonObject = { data };
        // 提交数据到后端
        const jsonString = JSON.stringify(jsonObject);
        console.log('所有Type为0的value:', jsonString);
        socket?.send(jsonString);
      const jsonObject = { data };
      // 提交数据到后端
      const jsonString = JSON.stringify(jsonObject);
      console.log('所有Type为0的value:', jsonString);
      socket?.send(jsonString);
      }
      if (currentButtonName === 'B02启动' || currentButtonName === 'B02 Start') {
        const data = [];
        for (let i = 3; i < 4; i++) {
          const inputData = this.jsonData[i].filter(item => item.type === '0').map(item => {
            return { value: item.value };
          });
const values = [this.jsonData[3][3].button.value]
          const values = inputData.map(item => item.value);
          data.unshift([], [], []);
          data.push(values);
        }
        data.push([], [],[]);
        data.push(values);
      data.unshift([], [], [],[],[],[],[],[],[],[]);
        const jsonObject = { data };
      const jsonObject = { data };
        // 提交数据到后端
        const jsonString = JSON.stringify(jsonObject);
        console.log('所有Type为0的value:', jsonString);
        socket?.send(jsonString);
      // 提交数据到后端
      const jsonString = JSON.stringify(jsonObject);
      console.log('所有Type为0的value:', jsonString);
      socket?.send(jsonString);
      }
@@ -345,7 +430,7 @@
          }
          let obj = JSON.parse(msg.data);
          // console.log(obj);
        // console.log(obj);
          const jsonData2 = this.jsonData;
          const weihuiling = obj.weihuiling;
          const handleMouseMove = throttle(function (event) {
@@ -363,24 +448,6 @@
             
              //改变状态文字
// for (let i = 2; i < jsonData2.length; i++) {
//   let arr6 = jsonData2[i];
//   for (let j = 2; j < arr6.length; j++) {
//     let obj6 = arr6[j];
//     if (obj6.button&& (obj6.button.name === "未回零" || obj6.button.name === "NotZero")) {
//       if ( obj6.button.name.includes("未")&& this.language==="zh-CN") {
//         console.log(obj6.button.name)
//       obj6.button.name =obj6.button.name.replace("未","已") ;
//     }
//     if ( obj6.button.name.includes("NotZero")) {
//       obj6.button.name =obj6.button.name.replace("NotZero","Zero") ;
//     }
//   }
// }
// }
@@ -390,6 +457,8 @@
          document.addEventListener('mouseover', handleMouseMove);
if(obj.zuhe1){
           //更新实时位置
@@ -441,7 +510,7 @@
                for (let j = 2; j < arr2.length; j++) {
                  let obj3 = arr2[j];
                  if (obj3.button) {
                    if (obj3.button && (obj3.button.name === "未回零" || obj3.button.name === "NotZero")) {
                    if (obj3.button && (obj3.button.name === "未回零" || obj3.button.name === "NotZero" || obj3.button.name === "已回零" || obj3.button.name === "Zero")) {
                      obj3.button.value = weihuiling[0][i];
                      //  console.log(obj3.button.value)
                    }
@@ -460,11 +529,19 @@
  for (let j = 0; j < arr.length; j++) {
    let obj = arr[j];
    if (obj.button && obj.button.value===1) {
      if ( obj.button.name.includes("未回零")&& this.language==="zh-CN") {
      if ( obj.button.name==="未回零" && this.language==="zh-CN") {
      obj.button.name =obj.button.name.replace("未回零","已回零") ;
    }
    if ( obj.button.name.includes("NotZero")) {
    if ( obj.button.name==="NotZero") {
      obj.button.name =obj.button.name.replace("NotZero","Zero") ;
    }
  }
  if (obj.button && obj.button.value===0) {
      if ( obj.button.name==="已回零"&& this.language==="zh-CN") {
      obj.button.name =obj.button.name.replace("已回零","未回零") ;
    }
    if ( obj.button.name==="Zero") {
      obj.button.name =obj.button.name.replace("Zero","NotZero") ;
    }
  }
@@ -472,6 +549,7 @@
}
}
}
        };
CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue
@@ -42,7 +42,12 @@
          <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex" class="item-container">
            <div class="item-row">
              <span class="name" style="width:300px;">{{ item.name }}</span>
              <el-input style="width:250px;" v-if="item.state != 0 && item.type === '0'" v-model="item.value"
                <el-input style="width:250px;"  v-if="item.state != 0 && item.type === '0' && groupIndex === 0" v-model="item.value"  @keyup.enter.native="A01start"
                class="input-box"></el-input>
                <el-input style="width:250px;" v-else-if="item.state != 0 && item.type === '0' && groupIndex === 1" v-model="item.value" @keyup.enter.native="A02start"
                class="input-box"></el-input>
                <el-input style="width:250px;" v-else-if="item.state != 0 && item.type === '0'" v-model="item.value"
                class="input-box"></el-input>
            </div>
          </div>
@@ -112,54 +117,95 @@
    },
    A01start(){
      const data = [];
for (let i = 0; i < 1; i++) {
  const inputData = this.jsonData[i].filter(item => item.type === '0').map(item => {
    return { value: item.value };
  });
  const values = inputData.map(item => item.value);
  data.push(values);
}
data.push([], [], [],[]);
const jsonObject = { data };
// 提交数据到后端
const jsonString = JSON.stringify(jsonObject);
console.log('所有Type为0的value:', jsonString);
socket?.send(jsonString);
    },
    A02start(){
      const data = [];
for (let i = 1; i < 2; i++) {
  const inputData = this.jsonData[i].filter(item => item.type === '0').map(item => {
    return { value: item.value };
  });
  const values = inputData.map(item => item.value);
  data.unshift([]);
  data.push(values);
}
data.push([], [], []);
const jsonObject = { data };
// 提交数据到后端
const jsonString = JSON.stringify(jsonObject);
console.log('所有Type为0的value:', jsonString);
socket?.send(jsonString);
    },
    //提交方法
    submitDataToBackend (currentButtonName) {
      if (currentButtonName === 'A01翻转启动' || currentButtonName === 'A01 SERVE TURN') {
        const data = [];
        for (let i = 0; i < 1; i++) {
          const inputData = this.jsonData[i].filter(item => item.type === '0').map(item => {
            return { value: item.value };
          });
const values = [this.jsonData[0][3].button.value]
          const values = inputData.map(item => item.value);
          data.push(values);
        }
        data.push([], [], [],[]);
        data.push(values);
      data.unshift([], [], [],[],[]);
        const jsonObject = { data };
      const jsonObject = { data };
        // 提交数据到后端
        const jsonString = JSON.stringify(jsonObject);
        console.log('所有Type为0的value:', jsonString);
        socket?.send(jsonString);
      // 提交数据到后端
      const jsonString = JSON.stringify(jsonObject);
      console.log('所有Type为0的value:', jsonString);
      socket?.send(jsonString);
      }
      if (currentButtonName === 'A02翻转启动' || currentButtonName === 'A02 SERVE TURN') {
        const data = [];
        for (let i = 1; i < 2; i++) {
          const inputData = this.jsonData[i].filter(item => item.type === '0').map(item => {
            return { value: item.value };
          });
const values = [this.jsonData[0][3].button.value]
          const values = inputData.map(item => item.value);
          data.unshift([]);
          data.push(values);
        }
        data.push([], [], []);
        data.push(values);
      data.unshift([], [], [],[],[],[]);
        const jsonObject = { data };
        // 提交数据到后端
        const jsonString = JSON.stringify(jsonObject);
        console.log('所有Type为0的value:', jsonString);
        socket?.send(jsonString);
      const jsonObject = { data };
      // 提交数据到后端
      const jsonString = JSON.stringify(jsonObject);
      console.log('所有Type为0的value:', jsonString);
      socket?.send(jsonString);
      }
@@ -306,6 +352,12 @@
          document.addEventListener('mouseover', handleMouseMove);
          if(obj.zuhe1){
  // 遍历guzhang数组
  for (let i = 0; i < jsonData2.length; i++) {
                let arr = jsonData2[i];
@@ -328,7 +380,7 @@
                for (let j = 0; j < arr2.length; j++) {
                  let obj3 = arr2[j];
                  if (obj3.button) {
                    if (obj3.button && (obj3.button.name === "未回零" || obj3.button.name === "NotZero")) {
                    if (obj3.button && (obj3.button.name === "未回零" || obj3.button.name === "NotZero" || obj3.button.name === "已回零" || obj3.button.name === "Zero")) {
                      obj3.button.value = weihuiling[0][i];
                      //  console.log(obj3.button.value)
                    }
@@ -360,11 +412,19 @@
  for (let j = 0; j < arr.length; j++) {
    let obj = arr[j];
    if (obj.button && obj.button.value===1) {
      if ( obj.button.name.includes("未回零")&& this.language==="zh-CN") {
      if ( obj.button.name==="未回零" && this.language==="zh-CN") {
      obj.button.name =obj.button.name.replace("未回零","已回零") ;
    }
    if ( obj.button.name.includes("NotZero")) {
    if ( obj.button.name==="NotZero") {
      obj.button.name =obj.button.name.replace("NotZero","Zero") ;
    }
  }
  if (obj.button && obj.button.value===0) {
      if ( obj.button.name==="已回零"&& this.language==="zh-CN") {
      obj.button.name =obj.button.name.replace("已回零","未回零") ;
    }
    if ( obj.button.name==="Zero") {
      obj.button.name =obj.button.name.replace("Zero","NotZero") ;
    }
  }
@@ -372,6 +432,8 @@
}
}
}
        };
CanadaMes-ui/src/views/Electrical/Positioning1.vue
@@ -244,7 +244,7 @@
          let obj = JSON.parse(msg.data);
          const jsonData2 = this.jsonData;
          document.addEventListener("mouseover", function (event) {
            const inputBox = document.querySelectorAll(".el-card__body");
            const inputBox = document.querySelectorAll(".input-box");
            const target = event.target;
            const parms = obj.params;
            if (
CanadaMes-ui/src/views/Electrical/ServoManualone.vue
@@ -56,15 +56,18 @@
          <div class="item-container">
            <div class="item-row">
              <span class="name" style='width:230px;'>{{ item.name }}</span>
              <el-input v-if="item.type === '0'" v-model="item.value"   class='input-box' :class="{ 'special-class': groupIndex === 0,'special-class2': groupIndex === 1 }" v-show="groupIndex !== 0 && groupIndex !== 1"  ></el-input>
              <el-input v-if="item.type === '0' && groupIndex === 0" v-model="item.value"  @keyup.enter.native="zuhe1"  class='input-box' :class="{ 'special-class': groupIndex === 0,'special-class2': groupIndex === 1 }" v-show="groupIndex !== 0 && groupIndex !== 1"  ></el-input>
              <el-input v-else-if="item.type === '0' && groupIndex === 1" v-model="item.value"  @keyup.enter.native="zuhe2"  class='input-box' :class="{ 'special-class': groupIndex === 0,'special-class2': groupIndex === 1 }" v-show="groupIndex !== 0 && groupIndex !== 1"  ></el-input>
              <el-input v-else-if="item.type === '0' " v-model="item.value"   class='input-box' :class="{ 'special-class': groupIndex === 0,'special-class2': groupIndex === 1 }" v-show="groupIndex !== 0 && groupIndex !== 1"  ></el-input>
            </div>
          </div>
        </el-col>
      </el-row>
      <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': true, 'error-button': item.button.name === 'Fault' && item.button.value === 1,'error-button2': item.button.name === 'NotZero' && item.button.value === 0,'error-button3': item.button.name === 'NotZero' && item.button.value === 1,'fuwei': item.button.name === 'Reset' && item.button.value === 1,'huiling': item.button.name === 'Home' && item.button.value === 1,'qidong': item.button.name === 'A01 Semi-Auto' && item.button.value === 1,'qidong2': item.button.name === 'A02 Semi-Auto' && item.button.value === 1,'qidong3': item.button.name === 'A01 Semi-Auto Start' && item.button.value === 1,'qidong4': item.button.name === 'A02 Semi-Auto Start' && item.button.value === 1,'qidong5': item.button.name === 'A02 Semi-Auto' && item.button.value === 1,'jiting': item.button.name === 'Abort/ResumeTasks' && item.button.value === 1}" @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend(item.button.name);">{{ 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': true, 'error-button': item.button.name === '故障' && item.button.value === 1,'error-button3': item.button.name === '未回零' && item.button.value === 1,'error-button2': item.button.name === '未回零' && item.button.value === 0,'fuwei': item.button.name === '复位' && item.button.value === 1,'huiling': item.button.name === '回零' && item.button.value === 1,'qidong': item.button.name === 'A01半自动' && item.button.value === 1,'qidong2': item.button.name === 'A02半自动' && item.button.value === 1,'qidong3': item.button.name === 'A01半自动启动' && item.button.value === 1,'qidong4': item.button.name === 'A02半自动启动' && item.button.value === 1,'qidong5': item.button.name === 'A02半自动' && item.button.value === 1,'jiting': item.button.name === '急停后中止/继续选择' && item.button.value === 1  }" @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend(item.button.name);">{{ 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': true, 'error-button': item.button.name === 'Fault' && item.button.value === 1,'error-button2': item.button.name === 'NotZero' && item.button.value === 0,'error-button3': item.button.name === 'NotZero' && item.button.value === 1,'fuwei': item.button.name === 'Reset' && item.button.value === 1,'huiling': item.button.name === 'Home' && item.button.value === 1,'qidong': item.button.name === 'A01 Semi-Auto' && item.button.value === 1,'qidong2': item.button.name === 'A02 Semi-Auto' && item.button.value === 1,'qidong3': item.button.name === 'A01 Semi-Auto Start' && item.button.value === 1,'qidong4': item.button.name === 'A02 Semi-Auto Start' && item.button.value === 1,'qidong5': item.button.name === 'A02 Semi-Auto' && item.button.value === 1,'jiting': item.button.name === 'Abort/ResumeTasks' && item.button.value === 1,'yihuiling': item.button.name === 'Zero' && item.button.value === 1}" @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend(item.button.name);">{{ 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': true, 'error-button': item.button.name === '故障' && item.button.value === 1,'error-button3': item.button.name === '未回零' && item.button.value === 1,'error-button2': item.button.name === '未回零' && item.button.value === 0,'fuwei': item.button.name === '复位' && item.button.value === 1,'huiling': item.button.name === '回零' && item.button.value === 1,'qidong': item.button.name === 'A01半自动' && item.button.value === 1,'qidong2': item.button.name === 'A02半自动' && item.button.value === 1,'qidong3': item.button.name === 'A01半自动启动' && item.button.value === 1,'qidong4': item.button.name === 'A02半自动启动' && item.button.value === 1,'qidong5': item.button.name === 'A02半自动' && item.button.value === 1,'jiting': item.button.name === '急停后中止/继续选择' && item.button.value === 1,'yihuiling': item.button.name === '已回零' && item.button.value === 1  }" @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend(item.button.name);">{{ item.button.name }}</el-button>
        </div>
      </div>
    </el-card>
@@ -127,11 +130,9 @@
    this.$set(dataGroup[itemIndex].button, 'value', 1);
  }
},
submitDataToBackend(currentButtonName) {
zuhe1(){
//A01半自动启动提交
  if (currentButtonName === 'A01半自动启动' ||currentButtonName === 'A01 Semi-Auto Start') {
    const data = [];
  const data = [];
for (let i = 0; i < 1; i++) {
  const inputData = this.jsonData[i].filter(item => item.type === '0' && item.read !== 9999).map(item => {
@@ -167,11 +168,10 @@
console.log('所有Type为0的value:', jsonString);
socket?.send(jsonString);
  }
  //A02半自动启动 提交
},
zuhe2(){
  if (currentButtonName === 'A02半自动启动' ||currentButtonName === 'A02 Semi-Auto Start') {
    const data2 = [];
  const data2 = [];
for (let i = 1; i < 2; i++) {
  const inputData = this.jsonData[i].filter(item => item.type === '0' && item.read !== 8888).map(item => {
@@ -198,6 +198,53 @@
  data2.push( [],[], []);
 
}
const jsonObject = { data:data2 };
// 提交数据到后端
const jsonString = JSON.stringify(jsonObject);
console.log('所有Type为0的value:', jsonString);
socket?.send(jsonString);
},
submitDataToBackend(currentButtonName) {
//A01半自动启动提交
  if (currentButtonName === 'A01半自动启动' ||currentButtonName === 'A01 Semi-Auto Start') {
    const data = [];
  const values = [this.jsonData[0][10].button.value]
  data.push(values);
data.unshift([], [],[],[], [],[],[], []);
const jsonObject = { data };
// 提交数据到后端
const jsonString = JSON.stringify(jsonObject);
console.log('所有Type为0的value:', jsonString);
socket?.send(jsonString);
  }
  //A02半自动启动 提交
  if (currentButtonName === 'A02半自动启动' ||currentButtonName === 'A02 Semi-Auto Start') {
    const data2 = [];
    const values2 = [this.jsonData[1][8].button.value]
  data2.push(values2);
  data2.unshift([],[], [],[],[], [],[],[], []);
const jsonObject = { data:data2 };
@@ -267,32 +314,7 @@
  // )
}
// if (currentButtonName === 'Abort/ResumeTasks' || currentButtonName === '急停后中止/继续选择') {
//   const data3 = [];
//   const resetButtonValues3 = this.jsonData.map(item => {
//     const buttonItem3 = item.find(subItem => subItem.button && ['Abort/resumeTasks', '急停后中止/继续选择'].includes(subItem.button.name));
//     return buttonItem3 ? buttonItem3.button.value : null;
//   }).filter(value => value !== null);
//   // 将得到的值添加到 data 数组中
//   data3.push(resetButtonValues3.flat());
//   // 在 data3 数组前面添加两个空数组
//   data3.push([], [], [],[], [], [], [],[]);
//   // 创建 jsonObject3 对象,并添加 data3 属性
//   const jsonObject3 = { data: data3 };
//   // 提交数据到后端
//   const jsonString3 = JSON.stringify(jsonObject3);
//   console.log('急停后中止/继续选择:', jsonString3);
//   socket?.send(jsonString3);
//   // setTimeout(()=>
//   //   window.location.reload(),2000
//   // )
// }
//A01半自动提交
@@ -468,7 +490,7 @@
  }
  let obj = JSON.parse(msg.data);
  //  console.log(obj)
   console.log(obj)
const weihuiling=obj.weihuiling;
  const jsonData2 = this.jsonData;
@@ -518,6 +540,9 @@
}, 50);
  document.addEventListener('mouseover', handleMouseMove);
  if (obj.qidong){
@@ -570,24 +595,44 @@
// }
// console.log(jsonData2[5][4].button.value)
if(jsonData2[2][3].button.value===1){
if(jsonData2[2][3].button.value===1 &&  (jsonData2[2][3].button.name==="NotZero" ||jsonData2[2][3].button.name==="未回零")){
  jsonData2[2][3].button.name=jsonData2[2][3].button.name.replace("未回零","已回零") ;
  jsonData2[2][3].button.name=jsonData2[2][3].button.name.replace("NotZero","Zero") ;
}
if(jsonData2[3][3].button.value===1){
if(jsonData2[3][3].button.value===1 &&  (jsonData2[3][3].button.name==="NotZero" ||jsonData2[3][3].button.name==="未回零")){
  jsonData2[3][3].button.name=jsonData2[3][3].button.name.replace("未回零","已回零") ;
  jsonData2[3][3].button.name=jsonData2[3][3].button.name.replace("NotZero","Zero") ;
}
if(jsonData2[4][4].button.value===1){
if(jsonData2[4][4].button.value===1 &&  (jsonData2[4][4].button.name==="NotZero" ||jsonData2[4][4].button.name==="未回零")){
  jsonData2[4][4].button.name=jsonData2[4][4].button.name.replace("未回零","已回零") ;
  jsonData2[4][4].button.name=jsonData2[4][4].button.name.replace("NotZero","Zero") ;
}
if(jsonData2[5][4].button.value===1){
if(jsonData2[5][4].button.value===1 &&  (jsonData2[5][4].button.name==="NotZero" ||jsonData2[5][4].button.name==="未回零")){
  jsonData2[5][4].button.name=jsonData2[5][4].button.name.replace("未回零","已回零") ;
  jsonData2[5][4].button.name=jsonData2[5][4].button.name.replace("NotZero","Zero") ;
}
if(jsonData2[2][3].button.value===0 && (jsonData2[2][3].button.name==="Zero" ||jsonData2[2][3].button.name==="已回零")){
  jsonData2[2][3].button.name=jsonData2[2][3].button.name.replace("已回零","未回零") ;
  jsonData2[2][3].button.name=jsonData2[2][3].button.name.replace("Zero","NotZero") ;
}
if(jsonData2[3][3].button.value===0 && (jsonData2[3][3].button.name==="Zero" ||jsonData2[3][3].button.name==="已回零")){
  jsonData2[3][3].button.name=jsonData2[3][3].button.name.replace("已回零","未回零") ;
  jsonData2[3][3].button.name=jsonData2[3][3].button.name.replace("Zero","NotZero") ;
}
if(jsonData2[4][4].button.value===0 && (jsonData2[4][4].button.name==="Zero" ||jsonData2[4][4].button.name==="已回零")){
  jsonData2[4][4].button.name=jsonData2[4][4].button.name.replace("已回零","未回零") ;
  jsonData2[4][4].button.name=jsonData2[4][4].button.name.replace("Zero","NotZero") ;
}
if(jsonData2[5][4].button.value===0  && (jsonData2[5][4].button.name==="Zero" ||jsonData2[5][4].button.name==="已回零")){
  jsonData2[5][4].button.name=jsonData2[5][4].button.name.replace("已回零","未回零") ;
  jsonData2[5][4].button.name=jsonData2[5][4].button.name.replace("Zero","NotZero") ;
}
}
   
};
@@ -709,4 +754,9 @@
  background-color: green;
}
.yihuiling{
  background-color: green;
}
</style>
springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java
@@ -16,6 +16,14 @@
    config = new Configuration("config.properties");
  }
  // 创建一个自定义的 S7 控制器消息处理器对象
  MessageHandler customS7Control = new MessageHandler();
  public static class PLCBooleanConverter {
    public static short[] convertListsToBinaryShortArray(List<Boolean>... lists) {
@@ -247,18 +255,6 @@
            }
            if (!sValue.isEmpty()) {
              S7control.getinstance().WriteWord(waddresses1, sValue);
              if (A01readstart != null && !A01readstart.isEmpty()) {
                // 创建一个新的列表用于写入新值
                List<Boolean> a01startval = new ArrayList<>();
                // 遍历所有读取到的位值
                for (Boolean bit : A01readstart) {
                  // 取反当前位的值并添加到新的列表中
                  a01startval.add(!bit);
                }
                // 写入新的位值列表
                S7control.getinstance().WriteBit(A01start, a01startval);
                System.out.println("a01startval " + a01startval + " written to PLC at address " + A01start);
              }
              System.out.println("Values " + sValue + " written to PLC at address " + waddresses1);
@@ -286,17 +282,7 @@
            }
            if (!sValue2.isEmpty()) {
              S7control.getinstance().WriteWord(waddresses2, sValue2);
              if (A02readstart != null && !A02readstart.isEmpty()) {
                // 创建一个新的列表用于写入新值
                List<Boolean> a02startval = new ArrayList<>();
                // 遍历所有读取到的位值
                for (Boolean bit : A02readstart) {
                  // 取反当前位的值并添加到新的列表中
                  a02startval.add(!bit);
                }
                // 写入新的位值列表
                S7control.getinstance().WriteBit(A02start, a02startval);
              }
              System.out.println("Values " + sValue2 + " written to PLC at address " + waddresses2);
@@ -323,17 +309,7 @@
            }
            if (!sValue2.isEmpty()) {
              S7control.getinstance().WriteWord(waddresses3, sValue2);
              if (B01readstart != null && !B01readstart.isEmpty()) {
                // 创建一个新的列表用于写入新值
                List<Boolean> b01startval = new ArrayList<>();
                // 遍历所有读取到的位值
                for (Boolean bit : B01readstart) {
                  // 取反当前位的值并添加到新的列表中
                  b01startval.add(!bit);
                }
                // 写入新的位值列表
                S7control.getinstance().WriteBit(B01start, b01startval);
              }
              System.out.println("Values " + sValue2 + " written to PLC at address " + waddresses3);
            }
          }
@@ -358,18 +334,7 @@
            }
            if (!sValue2.isEmpty()) {
              S7control.getinstance().WriteWord(waddresses4, sValue2);
              if (B02readstart != null && !B02readstart.isEmpty()) {
                // 创建一个新的列表用于写入新值
                List<Boolean> b02startval = new ArrayList<>();
                // 遍历所有读取到的位值
                for (Boolean bit : B02readstart) {
                  // 取反当前位的值并添加到新的列表中
                  b02startval.add(!bit);
                }
                // 写入新的位值列表
                S7control.getinstance().WriteBit(B02start, b02startval);
                System.out.println("Values " + b02startval + " written to PLC at address " + B02start);
              }
              System.out.println("Values " + sValue2 + " written to PLC at address " + waddresses4);
            }
          }
@@ -446,6 +411,11 @@
            }
          }
          customS7Control.writeBitToPLC( messageArray, A01start,7);
          customS7Control.writeBitToPLC( messageArray, A02start,8);
          customS7Control.writeBitToPLC( messageArray,B01start,9);
          customS7Control.writeBitToPLC( messageArray, B02start,10);
          // 清空消息列表
          webserver.clearMessages();
        }
springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition2.java
@@ -16,6 +16,8 @@
    config = new Configuration("config.properties");
  }
  MessageHandler customS7Control = new MessageHandler();
  public static class PLCBooleanConverter {
    public static short[] convertListsToBinaryShortArray(List<Boolean>... lists) {
@@ -197,17 +199,7 @@
                }
                if (!sValue.isEmpty()) {
                  S7control.getinstance().WriteWord(waddresses1, sValue);
                  if (A01readstart != null && !A01readstart.isEmpty()) {
                    // 创建一个新的列表用于写入新值
                    List<Boolean> a01startval = new ArrayList<>();
                    // 遍历所有读取到的位值
                    for (Boolean bit : A01readstart) {
                      // 取反当前位的值并添加到新的列表中
                      a01startval.add(!bit);
                    }
                    // 写入新的位值列表
                    S7control.getinstance().WriteBit(A01start, a01startval);
                  }
                  System.out.println("Values " + sValue + " written to PLC at address " + waddresses1);
                }
              }
@@ -232,17 +224,7 @@
                }
                if (!sValue2.isEmpty()) {
                  S7control.getinstance().WriteWord(waddresses2, sValue2);
                  if (A02readstart != null && !A02readstart.isEmpty()) {
                    // 创建一个新的列表用于写入新值
                    List<Boolean> a02startval = new ArrayList<>();
                    // 遍历所有读取到的位值
                    for (Boolean bit : A02readstart) {
                      // 取反当前位的值并添加到新的列表中
                      a02startval.add(!bit);
                    }
                    // 写入新的位值列表
                    S7control.getinstance().WriteBit(A02start, a02startval);
                  }
                  System.out.println("Values " + sValue2 + " written to PLC at address " + waddresses2);
                }
              }
@@ -319,6 +301,10 @@
                }
              }
              customS7Control.writeBitToPLC( messageArray, A01start,5);
              customS7Control.writeBitToPLC( messageArray, A02start,6);
              // 清空消息列表
              webserver.clearMessages();
            }
springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java
File was deleted
springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning1.java
@@ -122,7 +122,7 @@
                            // 整合第 1 到 3 个数组并去掉 null 元素
                            List<Short> mergedList = new ArrayList<>();
                            for (int i = 0; i < 5; i++) {
                            for (int i = 0; i < 7; i++) {
                                JSONArray sublist = messageArray.getJSONArray(i);
                                for (int j = 0; j < sublist.size(); j++) {
                                    Object value = sublist.get(j);
springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java
@@ -139,9 +139,10 @@
      List<Boolean> resumeTasks = S7control.getinstance().readBits(abortresumeTasks);
      short[] combinedBinaryShortArray = PLCBooleanConverter.convertListsToBinaryShortArray(
              A01readstart, A01readBstart, A02readstart, A02readsBtart
              A01readBstart, A01readstart,   A02readsBtart,A02readstart
      );
//      System.out.println(A01readBstart);
// 所有故障按钮转换为1和0
      short[] params2 = new short[arraylist7.size()];
@@ -255,36 +256,18 @@
              // 写入AO1组合
              customS7Control.WriteWordToPLC(messageArray, addresses,0);
              if (messageArray.getJSONArray(0).size() > 0) {
                if (A01readstart != null && !A01readstart.isEmpty()) {
                  // 创建一个新的列表用于写入新值
                  List<Boolean> a01startval = new ArrayList<>();
                  // 遍历所有读取到的位值
                  for (Boolean bit : A01readstart) {
                    // 取反当前位的值并添加到新的列表中
                    a01startval.add(!bit);
                  }
                  // 写入新的位值列表
                  S7control.getinstance().WriteBit(A01start, a01startval);
                }
              }
              //A01半自动启动
              customS7Control.writeBitToPLC( messageArray, A01start,8);
              // 写入AO2组合
              customS7Control.WriteWordToPLC(messageArray, addresses2,1);
              if (messageArray.getJSONArray(1).size() > 0) {
                if (A02readstart != null && !A02readstart.isEmpty()) {
                  // 创建一个新的列表用于写入新值
                  List<Boolean> a02startval = new ArrayList<>();
                  // 遍历所有读取到的位值
                  for (Boolean bit : A02readstart) {
                    // 取反当前位的值并添加到新的列表中
                    a02startval.add(!bit);
                  }
                  // 写入新的位值列表
                  S7control.getinstance().WriteBit(A02start, a02startval);
                }
              }
              //A02半自动启动
              customS7Control.writeBitToPLC( messageArray, A02start,9);
              // 复位按钮写入
              customS7Control.writeBitToPLC( messageArray, Reset,2);
springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
@@ -17,7 +17,7 @@
        //
        System.out.println("启动完成");
//new PlcHold().start();
new PlcHold().start();
        new Plchome().start();
springboot-vue3/src/main/resources/config.properties
@@ -27,9 +27,9 @@
A02start=DB101.5.1
#A01start
A01start=DB101.5.0
#A02start
#A02bstart
A02Bstart=DB101.11.1
#A01start
#A01bstart
A01Bstart=DB101.11.0
#abort/resumeTasks
abortresumeTasks=DB101.10.4
@@ -63,12 +63,12 @@
Parameter2.id=DB103.44,DB103.58,DB103.72,DB103.86,DB103.100,DB103.114,DB103.128,DB103.142,DB103.156,DB103.184,DB103.212
#清除id
Parameter2.cleanid=DB103.0,DB103.2,DB103.12,DB103.14,DB103.16,DB103.18,DB103.8,DB103.10,DB103.4,DB103.6
Parameter2.state=DB103.0,DB103.2,DB103.12,DB103.14,DB103.16,DB103.18,DB103.8,DB103.10,DB103.4,DB103.6
#手动状态
Parameter2.state=DB101.9.2,DB101.9.3,DB101.9.4,DB101.9.5,DB101.9.6,DB101.9.7,DB101.10.0,DB101.10.1,DB101.10.2,DB101.10.3
Parameter2.cleanid=DB101.9.2,DB101.9.3,DB101.9.4,DB101.9.5,DB101.9.6,DB101.9.7,DB101.10.0,DB101.10.1,DB101.10.2,DB101.10.3
#扫码枪
Parameter2.scanner=DB103.256,DB103.270