wang
2024-06-06 10b1d48b7f7655d80e1e431257f3af4e00d5ef2e
UI-Project/src/views/Returns/returns.vue
@@ -13,7 +13,7 @@
const adda = ref(false)
const flake = ref(false)
const flakea = ref(false)
import { WebSocketHost } from '@/utils/constants'
import { WebSocketHost ,host} from '@/utils/constants'
import request from "@/utils/request"
const ida = ref(null); 
import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService';
@@ -25,6 +25,10 @@
const selectedValuea = ref('');  
const selectedValueb = ref('');
const selectedValuec = ref(''); 
const upstatus = ref('上片机手动状态:'); // 假设这个用于显示自动/手动状态
const cuttingMachine = ref(''); // 假设这个用于存储后端返回的状态值(0或1)
const cuttingMachineStatusColor = ref('#911005'); // 用于动态设置i标签的背景色
const inKageWord = ref(0); // 用于存储要传递给接口的inKageWord值
const options = ref<any[]>([]); // 下拉选项列表  
const selectOptions = ref<Array<any>>([]); // 下拉选选项数组  
const selectOptionsa = ref<Array<any>>([]); // 下拉选选项数组  
@@ -40,25 +44,31 @@
      // 更新表格数据
      console.log('成功获取表格数据:', response.data);
      tableData.splice(0, tableData.length, ...response.data);
      window.localStorage.setItem('engineeringId', response.data[0].engineeringId)
      selectOptions.value = response.data.map(item => ({
      value: item.width, // 假设这是你想要作为value的属性
      label: item.width, // 假设这是你想要显示的label
      // window.localStorage.setItem('engineeringId', response.data[0].engineeringId)
      // 获取唯一值
      const uniqueWidths = new Set(response.data.map(item => item.width));
      const uniqueHeights = new Set(response.data.map(item => item.height));
      const uniqueFilmsIds = new Set(response.data.map(item => item.filmsId));
      const uniqueThicknesses = new Set(response.data.map(item => item.thickness));
      selectOptions.value = Array.from(uniqueWidths).map(width => ({
      value: width, // 假设这是你想要作为value的属性
      label: width, // 假设这是你想要显示的label
    }));  
    selectOptionsa.value = response.data.map(item => ({
      value: item.height,
      label: item.height,
      selectOptionsa.value = Array.from(uniqueHeights).map(height => ({
      value: height,
      label: height,
    })); 
    selectOptionsb.value = response.data.map(item => ({
      value: item.filmsId,
      label: item.filmsId,
    selectOptionsb.value = Array.from(uniqueFilmsIds).map(filmsId => ({
      value: filmsId,
      label: filmsId,
    })); 
    selectOptionsc.value = response.data.map(item => ({
      value: item.thickness,
      label: item.thickness,
    selectOptionsc.value = Array.from(uniqueThicknesses).map(thickness => ({
      value: thickness,
      label: thickness,
    })); 
    } else {
      ElMessage.error(response.msg);
      ElMessage.error(response.message);
    }
  } catch (error) {
    // 处理请求失败的情况
@@ -81,7 +91,7 @@
      flakea.value = true
    }
          } else {
          ElMessage.warning(res.msg)
          ElMessage.warning(res.message)
          // router.push("/login")
          }
          });
@@ -92,7 +102,7 @@
const titleSelectJsona = ref({
  processTypea: [],
})
const socketUrl = `ws://10.153.19.150:88/api/loadGlass/api/talk/loadGlass`;
const socketUrl = `ws://${WebSocketHost}:${host}/api/loadGlass/api/talk/loadGlass`;
// 定义消息处理函数,更新 receivedData 变量
const handleMessage = (data) => {
  // 更新 tableData 的数据
@@ -200,7 +210,7 @@
    }
    } else {
      // 请求失败,显示错误消息
      ElMessage.error(response.msg);
      ElMessage.error(response.message);
    }
  } catch (error) {  
      // 处理请求错误  
@@ -239,7 +249,7 @@
    }
    } else {
      // 请求失败,显示错误消息
      ElMessage.error(response.msg);
      ElMessage.error(response.message);
    }
  } catch (error) {  
      // 处理请求错误  
@@ -281,7 +291,7 @@
    }
    } else {
      // 请求失败,显示错误消息
      ElMessage.error(response.msg);
      ElMessage.error(response.message);
    }
  } catch (error) {
    // 处理错误
@@ -294,6 +304,7 @@
  const response = await request.post('/loadGlass/up-patten-usage/selectUpPattenUsage', {
    engineerId: selectedProjectNo.value,
    })
      window.localStorage.setItem('engineeringId', selectedProjectNo.value)
    if (response.code == 200) {
      // 绑定成功,处理逻辑
      ElMessage.success(response.message);
@@ -303,9 +314,31 @@
      selectedProjectNo.value = ''
      markingMachineStatus.value = '#911005';  
      cuttingMachineStatus.value = '#911005';  
      const uniqueWidths = new Set(response.data.map(item => item.width));
      const uniqueHeights = new Set(response.data.map(item => item.height));
      const uniqueFilmsIds = new Set(response.data.map(item => item.filmsId));
      const uniqueThicknesses = new Set(response.data.map(item => item.thickness));
      selectOptions.value = Array.from(uniqueWidths).map(width => ({
      value: width, // 假设这是你想要作为value的属性
      label: width, // 假设这是你想要显示的label
    }));
      selectOptionsa.value = Array.from(uniqueHeights).map(height => ({
      value: height,
      label: height,
    }));
    selectOptionsb.value = Array.from(uniqueFilmsIds).map(filmsId => ({
      value: filmsId,
      label: filmsId,
    }));
    selectOptionsc.value = Array.from(uniqueThicknesses).map(thickness => ({
      value: thickness,
      label: thickness,
    }));
    } else {
      // 请求失败,显示错误消息
      ElMessage.error(response.msg);
      ElMessage.error(response.message);
      // ElMessage.error(response.msg);
    }
}
catch (error) {
@@ -330,10 +363,10 @@
      ElMessage.success(response.message);
      // window.location.reload() 
      blind.value = false;
      selectedProjectNoa.value = ''
      selectedProjectNoa.value = '';
    } else {
      // 请求失败,显示错误消息
      ElMessage.error(response.msg);
      ElMessage.error(response.message);
    }
}
catch (error) {
@@ -358,10 +391,10 @@
    if (response.code == 200) {
      ElMessage.success(response.message);
      blinda.value = false;
      tableData.splice([]);
      // tableData.splice([]);
    } else {
      // 请求失败,显示错误消息
      ElMessage.error(response.msg);
      ElMessage.error(response.message);
    }
  }
    else  {
@@ -394,7 +427,7 @@
      tableData.splice([]);
      // 请求失败,显示错误消息
      ElMessage.error(response.msg);
      ElMessage.error(response.message);
    }
  }
    else  {
@@ -462,6 +495,89 @@
const confirmCuttingMachine = () => {  
  cuttingMachineStatus.value = 'green';  
}; 
const toggleEnableState = async (row: any) => {
  // 检查 id 是否为空
  if (!row.id) {
    ElMessage.error('该工程未保存到上片表!');
    return; // 如果 id 为空,则不执行后续操作
  }
  const newState = row.state === 100 ? 0 : 100;
  try {
    // 发送请求到后端更新状态
    const response = await request.post('/loadGlass/up-patten-usage/updateGlassState', { id: row.id, state: newState });
    if (response.code === 200) {
      ElMessage.success(response.message);
    } else {
      ElMessage.error(response.message);
    }
  } catch (error) {
    // 处理请求错误
    console.error('更新玻璃状态请求失败:', error);
    ElMessage.error('更新玻璃状态时发生错误');
  }
};
const wsUrl = `ws://${WebSocketHost}:${host}/api/loadGlass/api/talk/loadGlass`;
const ws = new WebSocket(wsUrl);
ws.onopen = () => {
  console.log('WebSocket连接已打开');
};
// 监听WebSocket的错误事件
ws.onerror = (error) => {
  console.error('WebSocket发生错误:', error);
};
// 监听WebSocket的关闭事件
ws.onclose = (event) => {
  if (event.wasClean) {
    console.log('WebSocket连接已正常关闭');
  } else {
    console.error('WebSocket连接异常关闭');
  }
};
// 监听WebSocket的消息事件
ws.onmessage = (event) => {
  try {
    const data = JSON.parse(event.data); // 解析消息为JSON
    if (data && Array.isArray(data.InkageStatus) && data.InkageStatus.length > 0) {
      const status = data.InkageStatus[0];
      cuttingMachine.value = status;
      upstatus.value = status === '1' ? '上片机联机状态:' : '上片机手动状态:';
      cuttingMachineStatusColor.value = status === '1' ? 'green' : '#911005';
      inKageWord.value = status === '1' ? 0 : 1;
    } else {
      // 处理错误情况或无效数据
      console.error('接收到的数据无效', data);
    }
  } catch (error) {
    console.error('解析WebSocket消息时发生错误', error);
  }
};
const confirmCutting = async () => {
  try {
    const response = await request.post('/loadGlass/LoadGlass/updateMesInkageLoad',
      inKageWord.value
  );
    if (response.code == 200) {
      const status = response.data.status;
      upstatus.value = status === '1' ? '上片机联机状态:' : '上片机手动状态:';
      cuttingMachineStatusColor.value = status === '1' ? 'green' : '#911005';
      // 显示成功消息
      ElMessage.success(response.message);
    } else {
      ElMessage.error(response.message || '请求失败');
    }
  } catch (error) {
    // 处理错误
    console.error('请求时发生错误', error);
    ElMessage.error('请求时发生错误');
  }
};
</script>
 
<template>
@@ -469,16 +585,19 @@
    <div id="dotClass">
      <div>打标机就绪状态:</div>  
    <i :style="{ marginTop: '2px', backgroundColor: markingMachineStatus, width: '18px', height: '18px', borderRadius: '50%', display: 'block' }"></i>  
    <el-button @click="confirmMarkingMachine" style="margin-left: 30px;margin-top: -3px;">手动确认</el-button>
    <el-button @click="confirmMarkingMachine" style="margin-left: 30px;margin-top: -3px;">确认</el-button>
    <div style="margin-left: 70px;">切割机就绪状态:</div>
    <i :style="{ marginTop: '2px', backgroundColor: cuttingMachineStatus, width: '18px', height: '18px', borderRadius: '50%', display: 'block' }"></i>  
    <el-button @click="confirmCuttingMachine" style="margin-left: 30px;margin-top: -3px;" >手动确认</el-button>
   </div>
    <el-button @click="confirmCuttingMachine" style="margin-left: 30px;margin-top: -3px;" >确认</el-button>
    <div style="margin-left: 70px;">{{ upstatus  }} </div>
    <i :style="{ marginTop: '2px', backgroundColor: cuttingMachineStatusColor, width: '18px', height: '18px', borderRadius: '50%', display: 'block' }"></i>
    <el-button @click="confirmCutting" style="margin-left: 30px;margin-top: -3px;" >切换</el-button>
  </div>
    <el-button style="margin-top: 5px;margin-left: 15px;"   id="searchButton" type="primary" @click="dialogFormVisible = true">选择工程</el-button>
    <el-button style="margin-top: 5px;margin-left: 20px;" id="searchButton" type="primary" @click="handleBind">开始上片</el-button>
    <el-button style="margin-top: 5px;margin-left: 20px;"  id="searchButton" type="warning" @click="handleBinda">暂停</el-button>
    <el-button style="margin-top: 5px;margin-left: 20px;"  id="searchButton" type="danger" @click="handleBindb">停止任务</el-button>
    <!-- <el-button style="margin-top: 5px;margin-left: 20px;"  id="searchButton" type="danger" @click="handleBindb">停止任务</el-button> -->
    
    <el-card style="flex: 1;margin-left: 10px;margin-top: 15px;" v-loading="loading">
      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
@@ -494,7 +613,7 @@
      <el-table-column prop="filmsId" label="膜系" align="center"/>
      <el-table-column prop="layoutSequence" label="数量" align="center"/>
      <el-table-column prop="thickness" label="厚度" align="center"/>
      <el-table-column
      <!-- <el-table-column
            align="center"
            label="状态"
            min-width="80"
@@ -504,7 +623,21 @@
        <el-tag :type="getStatusType(scope.row.state)">  
          {{ getStatusText(scope.row.state) }}  
        </el-tag>  
      </template>
      </template>  -->
      <el-table-column
          align="center"
            label="启用状态"
            min-width="80"
            prop="state"
          >
          <template #default="scope">
          <el-tag
            :type="scope.row.state === 100 ? 'success' : 'warning'"
            @click="toggleEnableState(scope.row)"
          >
            {{ scope.row.state === 100 ? '通过' : '等待中' }}
          </el-tag>
        </template>
          </el-table-column>
    </el-table>
      </div>