zhoushihao
2024-10-11 d5d0d1c7a84b996b9bbcebfaf2c2c95f1a5a3678
UI-Project/src/views/Returns/returns.vue
@@ -28,12 +28,13 @@
const filmsId = ref('');
const patternThickness = ref('');
const number = ref('');
const canSelectProject = ref(true);
const canStartLoading = ref(false);
import { WebSocketHost ,host} from '@/utils/constants'
import request from "@/utils/request"
const ida = ref(null); 
import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService';
import { ref, onMounted, onUnmounted, onBeforeUnmount } from "vue";
// 响应式数据
const selectedProjectNo = ref(''); // 当前选中的工程号  
const selectedProjectNoa = ref(''); // 当前选中的工程号  
const selectedValue = ref(''); // 当前选中的宽  
@@ -95,6 +96,10 @@
  dialoglea.value = true; // 打开绑定架子对话框
  fetchFlowCardId(); 
};
const selectproject = () => {
  dialogFormVisible.value = true;
  selectgong();
};
// 值班信息
const fetchFlowCardId = async () => {
  try  {
@@ -125,13 +130,16 @@
    ElMessage.error(response.message);
  }
};
onMounted(() => {
onMounted(() => {
  list('');  
  fetchOptions('');
  initializeWebSocket(socketUrl, handleMessage);
  socket = initializeWebSocket(socketUrl, handleMessage);
});
onMounted(() => {
});
  onUnmounted(() => {
    if (socket) {
    closeWebSocket(socket);
    }
    });
const list = async () => {  
  try {  
    const response = await request.get('/loadGlass/LoadGlass/list');  
@@ -188,21 +196,59 @@
const titleSelectJsona = ref({
  processTypea: [],
})
let socket = null;
const socketUrl = `ws://${WebSocketHost}:${host}/api/loadGlass/api/talk/loadGlass`;
// 定义消息处理函数,更新 receivedData 变量
const handleMessage = (data) => {
  // 更新 tableData 的数据
  if(data.prioritylist!=null){
  tableData.splice(0, tableData.length, ...data.prioritylist[0]);
  }
  if(data.list!=null){
  tableDataa.value = data.list[0]
  }
  if(data.engineering ){
    if ( Array.isArray(data.engineering) && data.engineering.length !== 0) {
    canSelectProject.value = false;
    canStartLoading.value = true;
  }else{
      canSelectProject.value = true;
      canStartLoading.value = false;
  }
}
if (data.InkageStatus) {
if(data.InkageStatus!=null){
      const status = data.InkageStatus[0];
      cuttingMachine.value = status;
            upstatus.value = status === '1' ? t('basicData.machine') : t('basicData.machineaa');
      cuttingMachineStatusColor.value = status === '1' ? 'green' : '#911005';
      inKageWord.value = status === '1' ? 0 : 1;
}
}
};
const requestData = {  
  state: 100  
};  
// 调用接口获取选项数据的函数
const selectgong = async (queryString: string) => {
  try  {
    const response = await request.post('/loadGlass/optimizeProject/listByState',{
      ...requestData,
      query: queryString
    })
    if (response.code == 200) {
      titleSelectJson.value.processType = response.data;
    } else {
      ElMessage.error(response.message);
    }
}
catch (error) {
    // 处理错误
    console.error(error);
  }
}
const fetchOptions = async (queryString: string) => {  
  try {  
    // 发送请求到后端接口  
@@ -210,9 +256,8 @@
      ...requestData,  
      query: queryString // 将查询字符串作为参数传递  
    });  
    if (response.code == 200) {  
    titleSelectJson.value.processType = response.data;
    // titleSelectJson.value.processType = response.data;
    console.log(response.data);
 
    } else {  
@@ -221,7 +266,7 @@
  } catch (error) {  
    console.error('Error fetching options:', error);  
  }  
};
};
// 处理用户输入变化的方法  
const handleInputChange = async (value: string) => {  
  if (value) {  
@@ -353,7 +398,6 @@
        message: t('basicData.pause'),
      })
    }
};  
// 删除
const handleConfirma = async () => {
@@ -365,8 +409,7 @@
      filmsId: "",
      patternThickness: 0,
      number: 0
    });
    });
    if (response.code == 200) {
      // 绑定成功,处理逻辑
      ElMessage.success(response.message);
@@ -413,7 +456,6 @@
      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, 
      label: width, 
@@ -443,12 +485,9 @@
}
// 开始上片
const handle = async () => {
  if (markingMachineStatus.value === 'green' && cuttingMachineStatus.value === 'green') {
  if (markingMachineStatus.value === 'green' && cuttingMachineStatus.value === 'green') {
  try  {
  let engineeringId = window.localStorage.getItem('engineeringId')
console.log(engineeringId);
  const response = await request.post('/loadGlass/engineering/engineering/changeTask', {
    engineerId: engineeringId,
    state: 1,
@@ -611,47 +650,46 @@
    ElMessage.error(t('basicData.glassnull'));   
  }  
};  
const wsUrl = `ws://${WebSocketHost}:${host}/api/loadGlass/api/talk/loadGlass`;
const ws = new WebSocket(wsUrl);
ws.onopen = () => {
  console.log('WebSocket连接已打开');
};
// 上片机联机状态
// 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.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.replace('<END>', '')); // 解析消息为JSON
    if (data && Array.isArray(data.InkageStatus) && data.InkageStatus.length > 0) {
if(data.InkageStatus!=null){
      const status = data.InkageStatus[0];
      cuttingMachine.value = status;
            upstatus.value = status === '1' ? t('basicData.machine') : t('basicData.machineaa');
      cuttingMachineStatusColor.value = status === '1' ? 'green' : '#911005';
      inKageWord.value = status === '1' ? 0 : 1;
}
    } else {
      // 处理错误情况或无效数据
      // console.error('接收到的数据无效', data);
    }
  } catch (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.replace('<END>', '')); // 解析消息为JSON
//     if (data && Array.isArray(data.InkageStatus) && data.InkageStatus.length > 0) {
// if(data.InkageStatus!=null){
//       const status = data.InkageStatus[0];
//       cuttingMachine.value = status;
//             upstatus.value = status === '1' ? t('basicData.machine') : t('basicData.machineaa');
//       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', 
@@ -687,8 +725,8 @@
    <el-button @click="confirmCutting" style="margin-left: 30px;margin-top: -3px;" >{{ $t('basicData.change') }}</el-button>
   
  </div>
    <el-button style="margin-top: 5px;margin-left: 15px;"   id="searchButton" type="primary" @click="dialogFormVisible = true">{{ $t('basicData.selectproject') }}</el-button>
    <el-button style="margin-top: 5px;margin-left: 20px;" id="searchButton" type="primary" @click="handleBind">{{ $t('basicData.startloading') }}</el-button>
    <el-button :disabled="!canSelectProject" style="margin-top: 5px;margin-left: 15px;"  type="primary" @click="selectproject">{{ $t('basicData.selectproject') }}</el-button>
    <el-button :disabled="!canSelectProject" :style="{ backgroundColor: canStartLoading ? 'green' : 'initial',color: canStartLoading ? 'white' : 'black', }" style="margin-top: 5px;margin-left: 20px;"  @click="handleBind">{{ $t('basicData.startloading') }}</el-button>
    <el-button style="margin-top: 5px;margin-left: 20px;"  id="searchButton" type="warning" @click="handleBinda">{{ $t('basicData.stop') }}</el-button>
    <el-button style="margin-top: 5px;margin-left: 20px;" id="searchButton" type="info" @click="handlezhiban">{{ $t('searchOrder.dutyinformation') }}</el-button>
    <!-- <el-button style="margin-top: 5px;margin-left: 20px;"  id="searchButton" type="danger" @click="handleBindb">停止任务</el-button> -->
@@ -696,7 +734,7 @@
    <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;">
    <el-table
    height="150"
    height="350"
     ref="table" 
     :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"
      :data="tableData"