zhoushihao
2024-07-18 0aef9abcba7f6e2cd41e330f397760cb8147c9b7
Merge remote-tracking branch 'origin/master'
9个文件已修改
4个文件已添加
278 ■■■■■ 已修改文件
UI-Project/src/assets/d1a.png 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/assets/dlpl9.png 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/assets/lp9.png 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/assets/lpa9.png 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/PurchaseReturn/purchaseReturn.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/PurchaseReturn/purchaseStorage.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Slicecage/slicecage.vue 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/UnLoadGlass/Landingindication.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/UnLoadGlass/loadmachinerack.vue 122 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/largescreen/largescreen.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/assets/d1a.png
UI-Project/src/assets/dlpl9.png
UI-Project/src/assets/lp9.png
UI-Project/src/assets/lpa9.png
UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
@@ -89,7 +89,7 @@
    >
     <div  class="centered-text">
    <div >{{ rect.flowcardId }}</div>  
    <div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div>
    <div style="text-align: center;">{{ rect.widtha }}*{{ rect.heighta }}</div>
  </div>
  </div>
   </div>
@@ -106,7 +106,7 @@
    >
     <div  class="centered-text">
    <div >{{ rect.flowcardId }}</div>  
    <div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div>
    <div style="text-align: center;">{{ rect.widtha }}*{{ rect.heighta }}</div>
  </div>
  </div>
   </div>
@@ -128,7 +128,7 @@
       backgroundColor: rect.state === 0 ? '#dedfe0' : '#d1edc4' }">
     <div  class="centered-text">
    <div >{{ rect.flowcardId }}</div>  
    <div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div>
    <div style="text-align: center;">{{ rect.widtha }}*{{ rect.heighta }}</div>
  </div>
  </div> 
   </div>
@@ -149,7 +149,7 @@
       backgroundColor: rect.state === 4 ? '#911005' : '#f8e3c5' }">
     <div  class="centered-text">
    <div >{{ rect.flowcardId }}</div>  
    <div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div>
    <div style="text-align: center;">{{ rect.widtha }}*{{ rect.heighta }}</div>
  </div>
  </div> 
   </div>
UI-Project/src/views/PurchaseReturn/purchaseStorage.vue
@@ -67,7 +67,7 @@
       backgroundColor: rect.state === 4 ? '#d1edc4' : '#f8e3c5' }">
     <div  class="centered-text">
    <div >{{ rect.flowcardId }}</div>  
    <div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div>
    <div style="text-align: center;">{{ rect.widtha }}*{{ rect.heighta }}</div>
  </div>
  </div> 
   </div>
UI-Project/src/views/Slicecage/slicecage.vue
@@ -69,57 +69,57 @@
const cell8=ref(true);
const cell9=ref(true);
const selectedRow = ref(null); // 存储选中的行数据  
    // 当前页码和每页显示的条数
    const currentPage = ref(1);
    const itemsPerPage = computed(() => {
      if (currentPage.value === 1) {
        return 21;
        return 55;
      } else if (currentPage.value === 2) {
        return 21;
        return 55;
      } else if (currentPage.value === 3) {
        return 21;
        return 55;
      } else if (currentPage.value === 4) {
        return 20;
        return 55;
      } else if (currentPage.value === 5) {
        return 21;
        return 55;
      } else if (currentPage.value === 6) {
        return 25;
      } else if (currentPage.value === 7) {
        return 51;
        return 30;
      } else if (currentPage.value === 8) {
        return 25;
      } else {
        return 25; // 默认值,可以根据实际需求修改
      }
    });
    // 计算分页后的数据
    const paginatedUsers = computed(() => {
      const startIndex = calculateStartIndex();
      const endIndex = startIndex + itemsPerPage.value;
      return tableData.value.slice(startIndex, endIndex);
    });
    // 计算当前页的起始索引
    function calculateStartIndex() {
      let index = 0;
      for (let i = 1; i < currentPage.value; i++) {
        if (i === 1) {
          index += 21;
          index += 55;
        } else if (i === 2) {
          index += 21;
          index += 55;
        } else if (i === 3) {
          index += 21;
          index += 55;
        }else if (i === 4) {
          index += 20;
          index += 55;
        }else if (i === 5) {
          index += 21;
          index += 55;
        }else if (i === 6) {
          index += 25;
        }else if (i === 7) {
          index += 51;
          index += 30;
        }else if (i === 8) {
          index += 25;
        } else {
@@ -145,7 +145,7 @@
        currentPage.value++;
      }
    };
    // 总页数计算
    const totalPages = computed(() => {
      // let total = 0;
@@ -162,9 +162,9 @@
      // }
      return 9;
    });
const getTableRow = (row,type) =>{
  switch (type) {
    case 'edit' :{
@@ -452,7 +452,7 @@
      ElMessage.success(response.message);
      glassId.value = '';
      tableDataf.value = '';
      } else {  
      ElMessage.error(response.message);
      }  
@@ -469,21 +469,38 @@
// 定义消息处理函数,更新 receivedData 变量
const handleMessage = (data) => {
  // 更新 tableData 的数据
  tableDatac.value = data.bigStorageCageDetailsOutTask[0]
  tableDatad.value = data.bigStorageCageDetailsFeedTask[0]
  if(data.bigStorageCageDetailsOutTask!=null){
    tableDatac.value = data.bigStorageCageDetailsOutTask[0]
    adjusta.value = data.bigStorageCageDetailsOutTask[0].filter(rect => rect.slot !== null && rect.slot !== undefined);
  }
  if(data.bigStorageCageDetailsFeedTask!=null){
    tableDatad.value = data.bigStorageCageDetailsFeedTask[0]
    adjust.value = data.bigStorageCageDetailsFeedTask[0].filter(rect => rect.slot !== null && rect.slot !== undefined);
  }
  // adjust.value = data.bigStorageCageDetailsFeedTask[0].map(rect => ({  
  //           ...rect, 
  //         })); 
  adjusta.value = data.bigStorageCageDetailsOutTask[0].filter(rect => rect.slot !== null && rect.slot !== undefined);
  adjust.value = data.bigStorageCageDetailsFeedTask[0].filter(rect => rect.slot !== null && rect.slot !== undefined);
//   const adjust = computed(() => {  
//   return data.value.bigStorageCageDetailsFeedTask[0].filter(rect => rect.slot !== null && rect.slot !== undefined);  
// }); 
if(data.bigStorageCageInfo!=null){
  tableData.value = data.bigStorageCageInfo[0]
}
if(data.temperingGlassInfoList!=null){
  tableDatab.value = data.temperingGlassInfoList[0]
}
if(data.bigStorageCageUsage!=null){
  tableDatae.value = data.bigStorageCageUsage[0]
}
if(data.carPostion!=null){
  carPosition.value = data.carPostion[0]
  window.localStorage.setItem('length', data.bigStorageCageInfos[0][1].length)
}
  if(data.bigStorageCageInfos!=null){
    window.localStorage.setItem('length', data.bigStorageCageInfos[0][1].length)
  let length = window.localStorage.getItem('length')
  adjustedRects.value = data.bigStorageCageInfos[0][1].map(rect => ({  
            ...rect, 
@@ -530,12 +547,15 @@
            height: 20/length,
            top: 29/length
          })); 
  }
};
// 初始化 WebSocket,并传递消息处理函数
onMounted(() => {
  // fetchFlowCardId();
  initializeWebSocket(socketUrl, handleMessage);
});
function getStatusType(enableState: number) {  
  switch (enableState) {  
@@ -599,7 +619,7 @@
    <el-button style="margin-top: 5px;margin-left: 10px;"   id="searchButton" type="success" @click="dialogFormVisibleb = true">{{ $t('searchOrder.productionqueue') }}</el-button>
    <el-card style="flex: 1;margin-left: 10px;margin-top: 5px;" v-loading="loading">
      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 100px;">
        <el-table height="100%" ref="table"
        <el-table height="100px" ref="table"
        :data="tableDatac" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
          <el-table-column prop="bigStorageCageOutTask.glassId" align="center" :label="$t('searchOrder.outputglassID')" min-width="120" />
          <el-table-column prop="bigStorageCageOutTask.startSlot" align="center" :label="$t('searchOrder.startposition')" min-width="120" />
@@ -634,7 +654,7 @@
    </el-card>
    <el-card style="flex: 1;margin-left: 10px;margin-top: 3px;" v-loading="loading">
      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 100px;">
        <el-table height="100%" ref="table"
        <el-table height="100px" ref="table"
        @selection-change="handleSelectionChange"
        :data="tableDatad" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
          <el-table-column prop="bigStorageCageFeedTask.glassId" align="center" :label="$t('searchOrder.intoglassid')" min-width="120" />
@@ -667,7 +687,7 @@
        </el-table>
      </div>
    </el-card>
    <div style="padding: 10px;display: flex;height:110px;">
    <div style="padding: 10px;display: flex;height:130px;">
            <div v-for="(item, index) in tableDatae" :key="index" id="occupy">  
               <el-col style="text-align:left;font-weight: bold;">#{{ item.device_id }}</el-col>  
               <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">  
@@ -681,7 +701,7 @@
    </div>
<!-- // 父级框 -->
<div class="img-dlpl" >
    <div class="img-car1" :style="'z-index:999;left:247px;top:' + 350*carPosition[0] + 'px;position:absolute;'">
    <div class="img-car1" :style="'z-index:999;left:270px;top:' + 350*carPosition[0] + 'px;position:absolute;'">
      <div  
      v-for="(rect, index) in adjusta"  
      :key="rect.id"  
@@ -689,13 +709,13 @@
       width: '30px',
       height: '5px',
       backgroundColor: '#409EFF',
       marginLeft: index * 5+ `px`,
       marginLeft: 5+ `px`,
       top: '10px',
       }"  
    >
    </div>
    </div>
    <div class="img-car4" :style="'z-index:999;left:704px;top:' + 350*carPosition[1] + 'px;position:absolute;'">
    <div class="img-car4" :style="'z-index:999;left:740px;top:' + 350*carPosition[1] + 'px;position:absolute;'">
      <div  
      v-for="(rect, index) in adjust"  
      :key="rect.id"  
@@ -703,14 +723,14 @@
       width: '30px',
       height: '5px',
       backgroundColor: '#409EFF',
       marginLeft: index * 5+ `px`,
       marginLeft: 5+ `px`,
       top: '10px',
       }"  
    >
    </div>
    </div>
    <div style="position: relative;">
    <div v-show="cell1" style="width: 227px;height: 29px;position: relative;top:55px;left: 465px;">
    <div v-show="cell1" style="width: 227px;height: 29px;position: relative;top:50px;left: 495px;">
      <div  
      v-for="(rect, index) in adjustedRects"  
      :key="rect"  
@@ -741,7 +761,7 @@
      </div>
    </div>
    </div>
 <div v-show="cell2" style="width: 227px;height: 29px;position: relative;top:56px;left: 465px;">
 <div v-show="cell2" style="width: 227px;height: 29px;position: relative;top:51px;left: 495px;">
  <div  
      v-for="(rect, index) in adjustedRectsa"  
      :key="rect.id"  
@@ -772,7 +792,7 @@
      </div>
    </div>
    </div>
  <div v-show="cell3" style="width: 227px;height: 29px;position: absolute;top:117px;left: 465px;">
  <div v-show="cell3" style="width: 227px;height: 29px;position: absolute;top:110px;left: 495px;">
    <div  
      v-for="(rect, index) in adjustedRectsb"  
      :key="rect.id"  
@@ -802,7 +822,7 @@
      </div>
    </div>
    </div>
  <div v-show="cell4" style="width: 227px;height: 29px;position: absolute;top:148px;left: 465px;">
  <div v-show="cell4" style="width: 227px;height: 29px;position: absolute;top:140px;left: 495px;">
    <div  
      v-for="(rect, index) in adjustedRectsc"  
      :key="rect.id"  
@@ -833,7 +853,7 @@
      </div>
    </div>
    </div>
  <div v-show="cell5" style="width: 227px;height: 29px;position: absolute;top:208px;left: 465px;">
  <div v-show="cell5" style="width: 227px;height: 29px;position: absolute;top:170px;left: 495px;">
    <div  
      v-for="(rect, index) in adjustedRectsd"  
      :key="rect.id"  
@@ -864,7 +884,7 @@
      </div>
    </div>
    </div>
  <div v-show="cell6" style="width: 227px;height: 29px;position: absolute;top:238px;left: 465px;">
  <div v-show="cell6" style="width: 227px;height: 29px;position: absolute;top:241px;left: 495px;">
    <div  
      v-for="(rect, index) in adjustedRectse"  
      :key="rect.id"  
@@ -895,7 +915,7 @@
      </div>
    </div>
    </div>
  <div v-show="cell7" style="width: 227px;height: 29px;position: absolute;top:269px;left: 465px;">
  <div v-show="cell7" style="width: 227px;height: 29px;position: absolute;top:271px;left: 495px;">
    <div  
      v-for="(rect, index) in adjustedRectsf"  
      :key="rect.id"  
@@ -926,7 +946,7 @@
      </div>
    </div>
    </div>
  <div v-show="cell8" style="width: 227px;height: 29px;position: absolute;top:300px;left: 465px;">
  <div v-show="cell8" style="width: 227px;height: 29px;position: absolute;top:301px;left: 495px;">
    <div  
      v-for="(rect, index) in adjustedRectsg"  
      :key="rect.id"  
@@ -957,7 +977,7 @@
      </div>
    </div>
    </div>
  <div v-show="cell9" style="width: 227px;height: 29px;position: absolute;top:300px;left: 465px;">
  <div v-show="cell9" style="width: 227px;height: 29px;position: absolute;top:332px;left: 495px;">
    <div  
      v-for="(rect, index) in adjustedRectsh"  
      :key="rect.id"  
@@ -1019,8 +1039,8 @@
          </el-input>
          <el-button type="primary" plain style="margin-left: 10px;" @click="searchout">{{ $t('searchOrder.search') }}</el-button>
    </div>
    <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 500px;">
    <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 200px;">
        <el-table height="100%" ref="table"
        :data="tableDataf" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
          <el-table-column prop="glassId" align="center" :label="$t('searchOrder.glassID')" min-width="120" />
@@ -1320,8 +1340,9 @@
}
 
.img-dlpl{
  margin-left: 80px;
  background-image:url('../../assets/dlpl.png');
  margin-left: 20px;
  margin-top: 20px;
  background-image:url('../../assets/dlpl9.png');
  background-repeat: no-repeat;
    background-attachment: local;
    min-height: 400px;
@@ -1333,7 +1354,7 @@
}
.img-car1{
  display: flex;
  background-image:url('../../assets/lp.png');
  background-image:url('../../assets/lp9.png');
  position: absolute;
  background-repeat: no-repeat;
    background-attachment: local;
@@ -1346,7 +1367,7 @@
}
.img-car4{
  display: flex;
  background-image:url('../../assets/lpa.png');
  background-image:url('../../assets/lpa9.png');
  position: absolute;
  background-repeat: no-repeat;
    background-attachment: local;
UI-Project/src/views/UnLoadGlass/Landingindication.vue
@@ -1,7 +1,7 @@
<template>
  <div class="glass-rack">
    <div >
      <svg width="500" height="500" xmlns="http://www.w3.org/2000/svg">
      <svg width="500" height="370" xmlns="http://www.w3.org/2000/svg">
        <g stroke="null" id="Layer_1">
          <!-- 使用 v-for 循环渲染数据 -->
          <g v-for="(rack, index) in racks" :key="index"   :data="tableData">
@@ -42,11 +42,11 @@
import { initializeWebSocket } from '@/utils/WebSocketService';
 import { WebSocketHost } from '@/utils/constants';
const racks = ref([
  { x: 50, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: '',downGlassInfoList:"" } },
  { x: 50, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: 'NG123456',downGlassInfoList:"" } },
 
  { x: 280, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: '',downGlassInfoList:"" } },
  { x: 280, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: 'NG12345678',downGlassInfoList:"" } },
 
  { x: 140, y: 320, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 20, width: 100, fillColor: 'yellow', content: '' ,downGlassInfoList:""} }
  { x: 140, y: 280, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 20, width: 100, fillColor: 'yellow', content: 'NG1234561454' ,downGlassInfoList:""} }
  
]);
UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue
@@ -1,7 +1,7 @@
<template>
  <div class="glass-rack">
    <div >
      <svg width="500" height="500" xmlns="http://www.w3.org/2000/svg">
      <svg width="500" height="370" xmlns="http://www.w3.org/2000/svg">
        <g stroke="null" id="Layer_1">
          <!-- 使用 v-for 循环渲染数据 -->
          <g v-for="(rack, index) in racks" :key="index">
@@ -42,11 +42,11 @@
import { initializeWebSocket } from '@/utils/WebSocketService';
import { WebSocketHost ,host} from '@/utils/constants'
const racks = ref([
  { x: 50, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: '' } },
  { x: 50, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: 'NG123456' } },
 
  { x: 280, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: '' } },
  { x: 280, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: 'NG12345678' } },
 
  { x: 140, y: 320, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 20, width: 100, fillColor: 'yellow', content: '' } }
  { x: 140, y: 280, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 20, width: 100, fillColor: 'yellow', content: 'NG1234561454' } }
  
]);
UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
@@ -1,10 +1,8 @@
<script setup>
import {Search} from "@element-plus/icons-vue";
import {reactive, onMounted, onBeforeUnmount} from "vue";
import {useRouter} from "vue-router"
const router = useRouter()
import { useI18n } from 'vue-i18n'
  const { t } = useI18n()
  let language = ref(localStorage.getItem('lang') || 'zh')
@@ -39,7 +37,6 @@
    fetchFlowCardId(); 
  dialogFormVisiblea.value = true; // 打开绑定架子对话框
};
//获取流程卡号
const fetchFlowCardId = async () => {
  try {
@@ -59,7 +56,6 @@
  }
};
//确认
const handleConfirm = async () => {
  try {
    const firstPart = flowCardId.value.split('|')[0].trim(); // 
@@ -68,9 +64,7 @@
      workstationId: workstationId.value,
      flowCardId: firstPart,
      layer:twoPart
    }); 
    console.log(response)
    if (response.code == 200) {
      // 绑定成功,处理逻辑
@@ -88,16 +82,12 @@
    console.error(error);
  }
};
const updatePageData = () => {
  // 假设你的页面上有一个名为 tableData 的 Vue 组件
  // 你可以直接更新 tableData 的数据
  fetchTableData()
  // 使用 $forceUpdate() 强制更新组件
};
const handleBindRack2 = (row) => {
  workstationId.value = row.workstationId; // 假设rackNumber是架号字段的属性名
  dialogFormVisiblea2.value = true; // 打开绑定架子对话框
@@ -129,8 +119,6 @@
            dialogFormVisiblea2.value = false;
    }
};
// 发送获取表格数据的请求
const fetchTableData = async () => {
  try {
@@ -151,78 +139,43 @@
    ElMessage.error('获取表格数据失败,请重试');
  }
};
const socketUrl = `ws://${WebSocketHost}:${host}/api/unLoadGlass/api/talk/unloadglass`;
// 定义消息处理函数,更新 receivedData 变量
const handleMessage = (data) => {
  // 更新 tableData 的数据
  tableData.splice(0, tableData.length, ...data.params[0]);
//  console.log("更新后数据", data.params[0]);
};
// 初始化 WebSocket,并传递消息处理函数
onMounted(() => {
  fetchFlowCardId();
  fetchTableData(); // 获取数据
  initializeWebSocket(socketUrl, handleMessage);
});
onBeforeUnmount(() => {
  console.log("关闭了")
  closeWebSocket();
});
const getTagType =(status) => {
      return status === 1 ? 'success' : 'danger';
      // 根据状态值决定标签类型,这里假设状态为1时为成功(绿色),否则为失败(红色)
    }
    const toggleStatus = (row) => {
      // 切换料架状态的逻辑
      row.enableState = 1 - row.enableState; // Toggle between 0 and 1
      // 此处可以添加保存状态的逻辑,比如调用 API 更新数据
      updateRowStatus(row);
    };
    const updateRowStatus = async (row) => {
  try {
    // 假设你的后端 API 接收 PUT 请求,并且需要传递 row.id 和 row.enableState 参数
    const response = await request.post('unLoadGlass/downWorkStation/updateDownWorkstation', {
      enableState:row.enableState,
      id:row.id
    });
    console.log('Updated row status:', response.data);
    // 可以根据后端返回的数据进行进一步处理,比如更新本地状态等
  } catch (error) {
    console.error('Error updating row status:', error);
    // 处理错误情况,比如提示用户更新失败
  }
};
// beforeUnmount(() => {
//   closeWebSocket();
// });
// setInterval(fetchTableData, 2000)
</script>
<template>
  <div>
    <el-card style="flex: 1;margin-left: 10px;margin-top: 5px;" v-loading="loading">
      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 200px;">
        <el-table height="100%" ref="table"
    <el-card style="flex: 1;" v-loading="loading">
      <el-card style="flex: 1;margin-left: 4px;margin-top: 1px;" v-loading="loading">
      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
        <el-table height="200px" ref="table"
        @selection-change="handleSelectionChange"
        :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
          <el-table-column prop="workstationId" align="center" :label="$t('reportWork.lowerbit')" min-width="80" />
          <el-table-column prop="workstationId" align="center" :label="$t('reportWork.shelfnumber')" min-width="120" />
          <el-table-column prop="flowCardId" align="center" :label="$t('reportWork.cardnumber')" min-width="120" />
          <el-table-column prop="flowCardId" align="center" :label="$t('reportWork.cardnumber')" min-width="150" />
          <el-table-column prop="totalquantity" align="center" :label="$t('reportWork.totalquantity')" min-width="120" />
          <el-table-column prop="racksnumber" align="center" :label="$t('reportWork.beendropped')" min-width="120" />
          <el-table-column prop="layer" align="center" label="层数" min-width="120" />
          <el-table-column prop="otherNumber" align="center" label="人工下片数" min-width="120" />
          <el-table-column prop="artificialnumber" align="center" label="人工下片数" min-width="120" />
          <el-table-column prop="work_state" align="center" :label="$t('reportWork.state')" min-width="120" />
          <el-table-column prop="deviceId" align="center" :label="$t('reportWork.devicenumber')" min-width="120" />
          <el-table-column
@@ -232,10 +185,7 @@
            prop="enableState"
          >
          <template #default="scope">
            <el-tag :type="getTagType(scope.row.enableState)" @click="toggleStatus(scope.row)">
          {{ scope.row.enableState === 1 ? $t('reportWork.enable') : $t('reportWork.unenable') }}
        </el-tag>
            <el-tag type="success" >{{ scope.row.enableState==1? $t('reportWork.enable') : $t('reportWork.unenable')}}</el-tag>
          </template>
          </el-table-column>
          <el-table-column fixed="right" :label="$t('reportWork.operate')" align="center" width="200">
@@ -247,7 +197,22 @@
        </el-table>
      </div>
    </el-card>
    <!-- workstationId: '1',
    workstationId: '1005',
    flowCardId: '183.6',
    totalquantity: '1991',
    racksnumber:"1",
    work_state: '待识别', -->
  <div style="display: flex;" class="awatch">
  <div id="main-body">
      <Landingindication></Landingindication>
    </div>
  <div id="main-bodya">
    <Landingindicationtwo></Landingindicationtwo>
    </div>
    </div>
    </el-card>
  </div>
    <el-dialog v-model="dialogFormVisiblea" top="21vh" width="40%" :title="$t('reportWork.bindingshelves')">
    <div style="margin-left: 50px;margin-top: 10px;margin-bottom: 10px;">
@@ -273,12 +238,7 @@
      </div>
    </template>
  </el-dialog>
  <el-dialog v-model="dialogFormVisiblea2" top="21vh" width="30%" :title="$t('reportWork.clearglass')">
    <template #footer>
      <div id="dialog-footer">
        <el-button type="primary" @click="handleclear">
@@ -288,26 +248,8 @@
      </div>
    </template>
  </el-dialog>
    <!-- workstationId: '1',
    workstationId: '1005',
    flowCardId: '183.6',
    totalquantity: '1991',
    racksnumber:"1",
    work_state: '待识别', -->
  </div>
  <div style="display: flex;">
  <div id="main-body">
      <Landingindication></Landingindication>
    </div>
  <div id="main-bodya">
    <Landingindicationtwo></Landingindicationtwo>
    </div></div>
</template>
<style scoped>
#dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
#dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
#dialog-footer{
@@ -323,15 +265,15 @@
   background-color: #337ecc;
   margin-left: 28%;
}
#awatch{
  height: 450px;
.awatch{
  max-width: 100%;
}
#main-body{
  margin-top: -20px;
  margin-left: 200px;
  margin-top: -40px;
  margin-left: 150px;
}
#main-bodya{
  margin-top: -10px;
  margin-top: -40px;
  margin-left: 100px;
}
</style>
UI-Project/src/views/largescreen/largescreen.vue
@@ -26,7 +26,7 @@
      </el-table>
</div> 
<div id="center" style="margin-top: 10px;margin-left: 10px; height: 240px;width: 750px;">
  <img src="../../assets/d1.png" alt="" style="margin-left: -30px; width: 110%;height: 100%;position: relative;">
  <img src="../../assets/d1a.png" alt="" style="margin-left: -10px; width: 100%;height: 100%;position: relative;">
</div>
<div id="centerright" style="margin-top: 10px;margin-left: 10px; height: 240px;width: 240px;background-color: #911005;">
  <el-table height="240" ref="table" width="340px"
hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java
@@ -43,6 +43,8 @@
    public void onOpen(Session session, @PathParam("username") String username) {
        this.username = username;
        this.session = session;
        this.session.setMaxTextMessageBufferSize(12*1024*1024);
        this.session.setMaxBinaryMessageBufferSize(12*1024*1024);
        List<WebSocketServer> webSocketServers = sessionMap.get(username);
        if (webSocketServers == null) {
            ArrayList<WebSocketServer> arrayListwebserver = new ArrayList<WebSocketServer>();
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java
@@ -33,13 +33,14 @@
    private TemperingGlassInfoService temperingGlassInfoService;
    private JSONObject jsonObject = new JSONObject();
    private JSONObject jsonObject1 = new JSONObject();
    public void queryDataSource1() throws InterruptedException {
        List<Double> carPostion=new ArrayList<>();
        carPostion.add(0.25);
        carPostion.add(0.5);
        jsonObject.append("carPostion",carPostion);
        //界面展示笼子信息
//        jsonObject.append("bigStorageCageInfos", bigStorageCageService.querybigStorageCageDetail());
        jsonObject1.append("bigStorageCageInfos", bigStorageCageService.querybigStorageCageDetail());
        //进片任务数据
        List<BigStorageCageDetails> bigStorageCageDetailsFeedTask=bigStorageCageDetailsService.selectTask(1);
@@ -71,17 +72,19 @@
    @Scheduled(fixedDelay = 1000)
    public void plcStorageCageTask() throws InterruptedException {
        jsonObject = new JSONObject();
        jsonObject1 = new JSONObject();
        try {
            //查询使用数据源1查询数据
            queryDataSource1();
            //查询使用数据源2查询数据
            queryDataSource2();
            ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("slicecage");
            if (sendwServer != null) {
                for (WebSocketServer webserver : sendwServer) {
                    if (webserver != null) {
                        webserver.sendMessage(jsonObject.toString());
                        webserver.sendMessage(jsonObject1.toString());
                        List<String> messages = webserver.getMessages();
                        if (!messages.isEmpty()) {
                            // // 将最后一个消息转换为整数类型的列表