ZengTao
2024-08-06 7664b90f93c4862785b8c3c18ad26a0cf0eeec33
UI-Project/src/views/Identify/identify.vue
@@ -1,10 +1,24 @@
<template>
<template>
  <div style="display: flex;">
<el-input v-model="inputValue" style="margin-left: 15px;margin-top: 10px;width: 240px" placeholder="请输入工程号" @blur="handleBlur"/>
<el-pagination
      v-model:current-page="currentPage3"
      v-model:page-size="pageSize3"
      :size="size"
      :disabled="disabled"
      :background="background"
      layout="prev, pager, next, jumper"
      :total="1000"
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
    />
    </div>
    <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;" v-loading="loading">
      <el-scrollbar height="700px">
      <el-scrollbar height="550px" >
  <div id="app" style="margin-top: 20px;">  
    <div
      :style="{ width: `${olWidth}px`, height: `${olHeight}px`,position: 'relative' }"
    >
    <!-- <div
      :style="{ width: `${olWidth}px`, height: `${olHeight}px`,position: 'relative',}"
    >  -->
    <div  
      v-for="(rect, index) in adjustedRects"  
      :key="rect.glass_id"  
@@ -26,31 +40,34 @@
  </div> 
  <!-- 点击弹出 -->
  <el-dialog v-model="blind" top="30vh" width="15%" style="text-align: center;">
        <el-button type="warning" plain :icon="Delete" @click="handleDamage(currentGlassId)"  style="width: 120px;margin-left: 10px;">
          破损
        <el-button type="warning" plain :icon="Delete" @click="handleDamage(currentGlassId)"  style="width: 140px;margin-left: 10px;">
          {{ $t('order.dilapidation') }}
        </el-button>
        <el-button  type="danger" plain @click="handleManualTake(currentGlassId)" style="width: 120px;margin-top: 10px;">
        <el-button  type="danger" plain @click="handleManualTake(currentGlassId)" style="width: 140px;margin-top: 10px;">
          <el-icon class="el-icon--right"><Upload /></el-icon>
          人工拿走</el-button>
          {{ $t('order.Takeaway') }}</el-button>
  </el-dialog> 
   </div>
  </div>
  <!-- </div>   -->
  </el-scrollbar>
  </el-card>
</template>  
<script setup lang="ts">  
import { Delete, Upload } from '@element-plus/icons-vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { ref, onMounted, onBeforeUnmount } from 'vue';
import { ref, onMounted, onBeforeUnmount,onUnmounted,watchEffect } from 'vue';
import request from "@/utils/request"
import { WebSocketHost ,host} from '@/utils/constants'
import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService';
  import { useI18n } from 'vue-i18n'
  const { t } = useI18n()
  let language = ref(localStorage.getItem('lang') || 'zh')
const blind = ref(false)
const olWidth = ref(); 
const olHeight = ref();
const process_id = ref(); // 用于存储process_id的响应式引用 
const glass_id = ref();
// const rects = ref([]); // 用于存储矩形数据的响应式引用
const inputValue = ref('');
const currentGlassId = ref(null); // 存储当前点击矩形的 glass_id  
const adjustedRects = ref([]);
// const handleBind = (row) => {
@@ -61,54 +78,55 @@
  currentGlassId.value = glassId;  
  blind.value = true;  
}  
onMounted(async () => {
  try {
    const response = await request.post('/cacheGlass/taskCache/currentCutTerritory'); // 替换为你的API端点
    if (response.code === 200) {
      // const process_id = response.data[0].process_id
      const rawRects = response.data; // 设置矩形数据
      console.log(response.data);
      const { olWidth: newolWidth, olHeight: newolHeight, process_id: newprocess_id ,glass_id:newglass_id } = response.data; // 获取尺寸
      olWidth.value = newolWidth; // 设置容器宽度
      olHeight.value = newolHeight; // 设置容器高度
      process_id.value = newprocess_id;
      glass_id.value = newglass_id;
// onMounted(async () => {
//   try {
//     const response = await request.post('/cacheGlass/taskCache/currentCutTerritory'); // 替换为你的API端点
//     if (response.code === 200) {
//       // const process_id = response.data[0].process_id
//       const rawRects = response.data; // 设置矩形数据
//       console.log(response.data);
//       const { olWidth: newolWidth, olHeight: newolHeight, process_id: newprocess_id ,glass_id:newglass_id } = response.data; // 获取尺寸
//       olWidth.value = newolWidth; // 设置容器宽度
//       olHeight.value = newolHeight; // 设置容器高度
//       process_id.value = newprocess_id;
//       glass_id.value = newglass_id;
      adjustedRects.value = rawRects.map(rect => ({
        ...rect, // 复制原始对象的其他属性
        x_axis: (rect.x_axis*100) * 0.004, // 将x值除以3
        y_axis: (rect.y_axis*100) * 0.004,
        width: (rect.width*100) * 0.002 ,
        widtha: rect.width ,
        heighta: rect.height ,
        height:( rect.height*100) * 0.002 ,
        glass_state: rect.glass_state
      }));
      console.log(adjustedRects.value);
//       adjustedRects.value = rawRects.map(rect => ({
//         ...rect, // 复制原始对象的其他属性
//         x_axis: (rect.x_axis*100) * 0.003, // 将x值除以3
//         y_axis: (rect.y_axis*100) * 0.003,
//         width: (rect.width*100) * 0.002 ,
//         widtha: rect.width ,
//         heighta: rect.height ,
//         height:( rect.height*100) * 0.002 ,
//         glass_state: rect.glass_state
//       }));
//       console.log(adjustedRects.value);
      
      //   console.log( (rect.width*100) / 300 );
    } else {
      // console.error('Failed to fetch rectangles from API.');
      console.error('Failed to fetch rects from API.');
    }
  } catch (error) {
    // console.error('Error fetching rectangles :', error);
    console.error('Error fetching rects :', error);
  }
});
//       //   console.log( (rect.width*100) / 300 );
//     } else {
//       // console.error('Failed to fetch rectangles from API.');
//       console.error('Failed to fetch rects from API.');
//     }
//   } catch (error) {
//     // console.error('Error fetching rectangles :', error);
//     console.error('Error fetching rects :', error);
//   }
// });
// 破损
const handleDamage = async () => {
  try  {
    var url="/cacheGlass/taskCache/identControls?identId="+currentGlassId.value+'&controlsId='+201;
      console.log(url);
      const response = await request.post(url)
  // const response = await request.post('/cacheGlass/taskCache/identControls', {
  //   identId: currentGlassId.value,
  //   controlsId: 201,
  //   })
    // var url="/cacheGlass/taskCache/identControls?identId="+currentGlassId.value+'&controlsId='+201;
    //   console.log(url);
    //   const response = await request.post(url)
  const response = await request.post('/cacheGlass/taskCache/identControls', {
    identId: currentGlassId.value,
    controlsId: 201,
    line: 1001,
    machine: '识别',
    })
    if (response.code == 200) {
      // 绑定成功,处理逻辑
      ElMessage.success(response.message);
      // window.location.reload() 
      blind.value = false;
@@ -123,16 +141,18 @@
    console.error(error);
  }
}
// // 人工拿走
 // 人工拿走
const handleManualTake = async () => {
  try  {
    var url="/cacheGlass/taskCache/identControls?identId="+currentGlassId.value+'&controlsId='+200;
      console.log(url);
      const response = await request.post(url)
  // const response = await request.post('/cacheGlass/taskCache/identControls', {
  //   identId: currentGlassId.value,
  //   controlsId: 200,
  //   })
    // var url="/cacheGlass/taskCache/identControls?identId="+currentGlassId.value+'&controlsId='+200;
    //   console.log(url);
    //   const response = await request.post(url)
  const response = await request.post('/cacheGlass/taskCache/identControls', {
    identId: currentGlassId.value,
    controlsId: 200,
    line: 1001,
    machine: '识别',
    })
    if (response.code == 200) {
      // 绑定成功,处理逻辑
      ElMessage.success(response.message);
@@ -149,6 +169,42 @@
    console.error(error);
  }
}
const handleBlur = async () => {
  if (inputValue.value !== '') {
    try {
      var url="/cacheGlass/taskCache/cutTerritory?current="+inputValue.value;
      const response = await request.post(url)
      if (response.data && response.data.currentCutTerritory) {
        // 假设返回的数据需要调整坐标和尺寸
        adjustedRects.value = response.data.currentCutTerritory.map(rect => ({
          ...rect,
          x_axis: 1360 - (rect.x_axis + rect.width) * 0.37,
          y_axis: (rect.y_axis * 100) * 0.003,
          width: (rect.width * 100) * 0.002,
          height: (rect.height * 100) * 0.002,
          widtha: rect.width ,
          heighta: rect.height ,
          glass_state: rect.glass_state
        }));
      }
    } catch (error) {
      console.error('请求数据失败:', error);
    }
  }
};
// const handleBlur = async () => {
//   if (inputValue.value !=''){
//     try {
//       var url="/cacheGlass/taskCache/cutTerritory?current="+inputValue.value;
//       const response = await request.post(url)
//       console.log(response.data.length);
//     if (response.code == 200) {
//       adjustedRects.value = response.data
//       ElMessage.success(response.message);
//     } else {
//       ElMessage.error(response.msg);
//     }
// }
function getRectColor(state: number): string {  
  switch (state) {  
    case 0:  
@@ -175,34 +231,35 @@
    }  
  });  
}
let socket = null;
const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/cacheGlass`;
// 定义消息处理函数,更新 receivedData 变量
const handleMessage = (data) => {
  // 更新 tableData 的数据
  // adjustedRects.value = data.currentCutTerritory[0]
  adjustedRects.value = data.currentCutTerritory[0].map(rect => ({  
        ...rect, // 复制原始对象的其他属性
        x_axis: (rect.x_axis*100) * 0.004, // 将x值除以3
        y_axis: (rect.y_axis*100) * 0.004,
        ...rect,
        x_axis: 1360 -(rect.x_axis + rect.width) * 0.37,
        // x_axis: (rect.x_axis*100) * 0.003,
        y_axis: (rect.y_axis*100) * 0.003,
        width: (rect.width*100) * 0.002 ,
        widtha: rect.width ,
        heighta: rect.height ,
        height:( rect.height*100) * 0.002 ,
        glass_state: rect.glass_state
      }));  
 // console.log("更新后数据", tableData);
};
// 初始化 WebSocket,并传递消息处理函数
onMounted(() => {
  // fetchFlowCardId();
  // fetchTableData(); // 获取数据
  initializeWebSocket(socketUrl, handleMessage);
  socket = initializeWebSocket(socketUrl, handleMessage);
});
  onUnmounted(() => {
    if (socket) {
    closeWebSocket(socket);
    }
    });
  watchEffect(() => {
  if (inputValue.value === '') {
    handleMessage();
  }
});
onBeforeUnmount(() => {
  console.log("关闭了")
  closeWebSocket();