严智鑫
2024-08-19 de46cb80b7c4d1fb74a4b72d8fc4406e7e3144e7
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">
@@ -30,85 +30,70 @@
    </div>
  </div>
</template>
<script  setup>
import { ref, watchEffect ,onMounted} from 'vue';
import { ref, watchEffect ,onMounted,onUnmounted} from 'vue';
import { useI18n } from 'vue-i18n'
  const { t } = useI18n()
  let language = ref(localStorage.getItem('lang') || 'zh')
import Swal from 'sweetalert2'
import request from "@/utils/request";
import { initializeWebSocket } from '@/utils/WebSocketService';
import { initializeWebSocket,closeWebSocket } 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: 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:""} },
  { x: 280, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: 'NG12345678',downGlassInfoList:"" } },
  
]);
watchEffect(() => {
  // 触发数据变化时重新渲染
});
const calculateItemXPosition = (rack, item, index) => {
  if (index === 0 ) {
    return rack.x;
  } else if (index === 1 ) {
    return rack.x + rack.width - item.width;
  } else {
    return rack.x + (rack.width - item.width) / 2;
  } else {
    return rack.x + rack.width - item.width;
  }
};
const calculateItemYPosition = (rack, item, index) => {
  if (index === 0 ) {
    return rack.y + (rack.height - item.height) / 2;
  } else if (index === 1) {
    return rack.y + (rack.height - item.height) / 2;
  } else {
    return rack.y + rack.height - item.height;
  } else {
    return rack.y + (rack.height - item.height) / 2;
  }
};
const fetchFlowCardId = async () => {
  try {
    const response = await request.get('unLoadGlass/downWorkStation/getwo');
    if (response.code === 200) {
      console.log(response); 
      // 遍历响应数据并替换racks数组中的item属性
      response.data.forEach((itemData, index) => {
  if (index < racks.value.length) {
    const rack = racks.value[index];
    const newItem = {
      rack.fillColor = itemData.item.fullCardColor === 'red' ? '#911005' : '#6a6da9';
      const newItem = {
      content: itemData.item.content,
      fillColor: itemData.item.fillColor,
      width: itemData.item.width === 0 ? "" : 10,
      height: itemData.item.height === 0 ? "" : 90,
      downGlassInfoList:itemData.item.downGlassInfoList
    };
    if (index === 2 && itemData.item.width > 0) {
    if (index === 1 && itemData.item.width > 0) {
      newItem.width = 100;
      newItem.height = 20;
    }
    rack.item = newItem;
    console.log(racks.value); // 打印更新后的 racks 值
  }
});
    } else {
      ElMessage.error(response.msg);
    }
@@ -116,43 +101,41 @@
    console.error(error);
  }
};
let socket = null;
const socketUrl = `ws://${WebSocketHost}:8085/api/talk/unloadglass2`;
//const socketUrl = `ws://${WebSocketHost}:88/api/unLoadGlass/api/talk/unloadglass2`;
// 定义消息处理函数,更新 receivedData 变量
const handleMessage = (data) => {
  // 更新 tableData 的数据
  data.glassinfo[0].forEach((itemData, index) => {
  if (index < racks.value.length) {
    const rack = racks.value[index];
    const newItem = {
      rack.fillColor = itemData.item.fullCardColor === 'red' ? '#911005' : '#6a6da9';
      const newItem = {
      content: itemData.item.content,
      fillColor: itemData.item.fillColor,
      width: itemData.item.width === 0 ? "" : 10,
      height: itemData.item.height === 0 ? "" : 90,
      downGlassInfoList:itemData.item.downGlassInfoList
    };
    if (index === 2 && itemData.item.width > 0) {
    if (index === 1 && itemData.item.width > 0) {
      newItem.width = 100;
      newItem.height = 20;
    }
    rack.item = newItem;
   // console.log("显示图1",racks.value); // 打印更新后的 racks 值
  }
});
};
// 初始化 WebSocket,并传递消息处理函数
onMounted(() => {
  fetchFlowCardId(); // 获取数据
  initializeWebSocket(socketUrl, handleMessage);
  socket = initializeWebSocket(socketUrl, handleMessage);
});
  onUnmounted(() => {
    if (socket) {
    closeWebSocket(socket);
    }
    });
const showCustomAlert = (downGlassInfoList) => {
  let tableContent = '<table border="1" style="border-collapse: collapse; width: 100%;">';
  tableContent += '<tr><th style="background-color: #f2f2f2;">玻璃ID</th><th style="background-color: #f2f2f2;">膜系</th><th style="background-color: #f2f2f2;">厚度</th><th style="background-color: #f2f2f2;">宽度</th><th style="background-color: #f2f2f2;">高度</th></tr>';
@@ -166,9 +149,7 @@
      <td>${info.height}</td>
    </tr>`;
  });
  tableContent += '</table>';
  Swal.fire({
    // title: '玻璃信息',
    title: t('reportWork.glassinformation'),
@@ -178,8 +159,6 @@
    }
  });
};
    const showRectInfo = (rack) => {
      const content = rack.item.content;
      console.log(rack.item.downGlassInfoList[0].flowCardId)
@@ -188,14 +167,9 @@
    const downGlassInfoList = rack.item.downGlassInfoList;
      console.log(downGlassInfoList)
      showCustomAlert(downGlassInfoList);
   }
    };
</script>
<style scoped>
.glass-rack {
  /* margin-left: 10px; */