wangfei
2024-10-09 33308e16bbb153d9aac76fd703ec0f38ea7e344a
UI-Project/src/views/Identify/identify.vue
@@ -11,8 +11,8 @@
      @current-change="handleCurrentChange"
    />
    </div>
    <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;height: 600px;" v-loading="loading">
      <el-scrollbar height="550px" width="1200px" style="background-color: #e9e9eb;">
    <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;height: 800px;" v-loading="loading">
      <el-scrollbar height="750px" width="1400px" style="background-color: #e9e9eb;">
  <div style="position: relative;">  
    <div  
      v-for="(rect, index) in adjustedRects"  
@@ -35,12 +35,12 @@
   </div>
  </el-scrollbar>
  <el-dialog v-model="blind" top="30vh" width="15%" style="text-align: center;" @close="handleDialogClose">
        <el-button type="warning" plain :icon="Delete" @click="handleDamage(currentGlassId)"  style="width: 140px;margin-left: 10px;">
        <el-button :disabled="currentGlassRect?.glass_state === 8 || currentGlassRect?.glass_state === 9" 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: 140px;margin-top: 10px;">
        <el-button :disabled="currentGlassRect?.glass_state === 9 || currentGlassRect?.glass_state === 8" type="danger" plain @click="handleManualTake(currentGlassId)" style="width: 140px;margin-top: 10px;">
          <el-icon class="el-icon--right"><Upload /></el-icon>
          {{ $t('order.Takeaway') }}</el-button>
          {{ $t('order.takeaway') }}</el-button>
  </el-dialog> 
  </el-card>
</template>  
@@ -60,20 +60,24 @@
const glass_id = ref();
const inputValue = ref('');
const currentGlassId = ref(null); // 存储当前点击矩形的 glass_id  
const currentstate = ref(null);
const adjustedRects = ref([]);
const raw = ref([]);
let webSocket: WebSocket | null = null;  
const totalPages = ref(0);
const pageSize = ref(1);
const currentPage = ref(1);
const currentPage = ref('');
const disabled = false;
const size = 'small';
const rawData = ref([]);
const rawData = ref([]);
// const handleBind = (row) => {
//   blind.value = true; // 打开绑定架子对话框
// };
// 显示对话框并设置当前 glass_id  
function showDialog(glassId: number) {
const currentGlassRect = computed(() => {
  return adjustedRects.value.find(rect => rect.glass_id === currentGlassId.value);
});
function showDialog(glassId: number) {
  currentGlassId.value = glassId;  
  blind.value = true;  
  adjustedRects.value = adjustedRects.value.map(rect =>  
@@ -89,20 +93,18 @@
// 破损
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', {
    glassId: currentGlassId.value,
    state: 8,
    line: 1001,
    workingProcedure: '识别',
    workingProcedure: '切割',
    })
    if (response.code == 200) {
      ElMessage.success(response.message);
      // window.location.reload() 
      blind.value = false;
      updateRectStatus(currentGlassId.value, 8); 
      findEngineering()
    } else {
      // 请求失败,显示错误消息
      ElMessage.error(response.msg);
@@ -123,7 +125,7 @@
    glassId: currentGlassId.value,
    state: 9,
    line: 1001,
    workingProcedure: '识别',
    workingProcedure: '切割',
    })
    if (response.code == 200) {
      // 绑定成功,处理逻辑
@@ -131,7 +133,8 @@
      // window.location.reload() 
      blind.value = false;
      updateRectStatus(currentGlassId.value, 9); 
    } else {
      findEngineering()
  } else {
      // 请求失败,显示错误消息
      ElMessage.error(response.msg);
    }
@@ -141,25 +144,24 @@
    console.error(error);
  }
}
const handleBlur = async () => {
const handleBlur = async () => {
  if (inputValue.value) {  
    var url="/cacheGlass/taskCache/cutTerritory?current="+inputValue.value;
    const response = await request.post(url)
    if (response.code === 200) {
      console.log(response.data);
      const rawRects = response.data[0];
      rawData.value = response.data;
      totalPages.value = rawData.value.length;
      const scaleFactor =  1621.78/6000; 
      const scaleFactory =  750/3300;
      adjustedRects.value = rawRects.map(rect => ({  
        ...rect,
        x_axis: (6000 -(rect.x_axis + rect.width)) * scaleFactor,
        y_axis: rect.y_axis * 0.17,
        y_axis: rect.y_axis * scaleFactory,
        width: rect.width * scaleFactor ,
        widtha: rect.width ,
        heighta: rect.height ,
        height: rect.height * 0.165 ,
        height: rect.height * scaleFactory,
        glass_state: rect.glass_state
      }));  
      // 如果WebSocket已连接,则关闭  
@@ -167,46 +169,57 @@
        webSocket.close();  
        webSocket = null;
      }  
       currentPage.value = 1;
       currentPage.value = 1;
    }  
  } else{
    connectWebSocket();
  } 
}; 
const findEngineering = async () => {
  if (inputValue.value) {
    var url="/cacheGlass/taskCache/cutTerritory?current="+inputValue.value;
    const response = await request.post(url)
    if (response.code === 200) {
      rawData.value = response.data;
    }
  } else{
  }
};
const handleCurrentChange = (val: number) => {  
  currentPage.value = val;
  // window.localStorage.setItem('pagenumber', currentPage.value).
  const page = currentPage.value - 1
      const scaleFactor =  1621.78/6000; 
      const scaleFactory =  750/3300;
      adjustedRects.value = rawData.value[page]?.map(rect => ({  
      // adjustedRects.value = rawRects.map(rect => ({  
        ...rect,
        x_axis: (6000 -(rect.x_axis + rect.width)) * scaleFactor,
        y_axis: rect.y_axis * 0.17,
        y_axis: rect.y_axis * scaleFactory,
        width: rect.width * scaleFactor ,
        widtha: rect.width ,
        heighta: rect.height ,
        height: rect.height * 0.165 ,
        height: rect.height * scaleFactory,
        glass_state: rect.glass_state
      }));
      }));
};
function getRectColor(state: number): string {
  switch (state) {
    case 0:
      return '#e1f3d8';
    case 100:
      return '#c8c9cc';
    case 110:
      return '#b3e19d';
    case 120:
      return '#f89898';
    case 8:
      return '#911005';
    case 9:
      return '#f3d19e';
    // default:
    //   return '#911005'; // 默认颜色
  }
}
function getRectColor(state: number): string {
  switch (state) {
    case 0:
      return '#e1f3d8';
    case 100:
      return '#c8c9cc';
    case 110:
      return '#b3e19d';
    case 120:
      return '#f89898';
    case 8:
      return '#911005';
    case 9:
      return '#f3d19e';
  }
}
// 更新矩形状态  
function updateRectStatus(glassId: string, status: number) {  
  adjustedRects.value.forEach(rect => {  
@@ -215,50 +228,25 @@
    }  
  });  
}
// const connectWebSocket = () => {
//   if (!webSocket) {
// const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/cacheGlass`;
//     webSocket = new WebSocket(socketUrl);
//     webSocket.onmessage = (event) => {
//       const data = JSON.parse(event.data);
//       const scaleFactor =  1621.78/6000;
//         adjustedRects.value = data.currentCutTerritory[0].map(rect => ({
//         ...rect,
//         x_axis: (6000 -(rect.x_axis + rect.width)) * scaleFactor,
//         y_axis: rect.y_axis * 0.17,
//         width: rect.width * scaleFactor ,
//         widtha: rect.width ,
//         heighta: rect.height ,
//         height: rect.height * 0.165 ,
//         glass_state: rect.glass_state,
//         isActive: false
//       }));
//     };
//     webSocket.onerror = (error) => {
//       console.error('WebSocket Error:', error);
//     };
//     webSocket.onclose = () => {
//       console.log('WebSocket Connection Closed');
//       // 可以选择重新连接
//     };
//   }
// };
const connectWebSocket = () => {  
  if (!webSocket) {  
const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/cacheGlass`;
    webSocket = new WebSocket(socketUrl);  
    webSocket.onmessage = (event) => {  
      const data = JSON.parse(event.data);  
      const scaleFactor = 1621.78 / 6000;
      const scaleFactor =  1621.78/6000;
      const scaleFactory =  750/3300;
      if (data.currentCutTerritory && data.currentCutTerritory.length > 0) {
      const newRects = data.currentCutTerritory[0].map(rect => {  
        const existingRect = adjustedRects.value.find(r => r.glass_id === rect.glass_id);  
        if (existingRect) {  
          return {  
            ...existingRect,  
            x_axis: (6000 - (rect.x_axis + rect.width)) * scaleFactor,  
            y_axis: rect.y_axis * 0.17,
            y_axis: rect.y_axis * scaleFactory,
            width: rect.width * scaleFactor,  
            height: rect.height * 0.165,
            height: rect.height * scaleFactory,
            widtha: rect.width,  
            heighta: rect.height,  
            glass_state: rect.glass_state,  
@@ -269,9 +257,9 @@
          return {  
            ...rect,  
            x_axis: (6000 - (rect.x_axis + rect.width)) * scaleFactor,  
            y_axis: rect.y_axis * 0.17,
            y_axis: rect.y_axis * scaleFactory,
            width: rect.width * scaleFactor,  
            height: rect.height * 0.165,
            height: rect.height * scaleFactory,
            widtha: rect.width,  
            heighta: rect.height,  
            glass_state: rect.glass_state,  
@@ -281,10 +269,12 @@
        }
      });
      adjustedRects.value = newRects;  
     } else if (data.currentCutTerritory == '') {
      adjustedRects.value = [];
     }
    };  
  }
};  
onMounted(() => {  
  // 初始时,如果输入框为空,则连接WebSocket  
  if (!inputValue.value) {