wangfei
2024-08-28 56fab901b298857ff4985b7429ef843c9a9d1471
UI-Project/src/views/Returns/returns.vue
@@ -17,12 +17,24 @@
const flakea = ref(false)
const flakeb = ref(false)
const flakec = ref(false)
const dialoglea = ref(false)
const tableDatax = ref([])
const user = ref('');
const projectNo = ref('');
const workstationId = ref('');
const id = ref('');
const patternHeight = ref('');
const patternWidth = ref('');
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(''); // 当前选中的宽  
@@ -80,29 +92,66 @@
    // ElMessage.error('获取表格数据失败,请重试');
  }
};
onMounted(() => {
const handlezhiban = () => {
  dialoglea.value = true; // 打开绑定架子对话框
  fetchFlowCardId();
};
// 值班信息
const fetchFlowCardId = async () => {
  try  {
    const response = await request.post('/loadGlass/work_assignment/selectWorkAssignment',{
      line: 2001,
      workingProcedure : '冷加工'
    })
    if (response.code == 200) {
      ElMessage.success(response.message);
      tableDatax.value = response.data;
      console.log(tableDatax.value);
      console
    } else {
      ElMessage.error(response.message);
    }
}
catch (error) {
    // 处理错误
    console.error(error);
  }
}
const handleConfirmb = async () => {
  const response = await request.post("/loadGlass/work_assignment/updateWorkAssignment", tableDatax.value)
  if (response.code === 200) {
    ElMessage.success(response.message);
    dialoglea.value = false;
  } else {
    ElMessage.error(response.message);
  }
};
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');  
    if (response.code == 200) {  
      tableDataa.value = response.data
          if (tableDataa.value.length === 4) {
          if (tableDataa.value[0].patternHeight > 0) {
          if (tableDataa.value[0].patternHeight > 0 && tableDataa.value[0].patternWidth > 0 && tableDataa.value[0].number > 0) {
          flake.value = true;
          }
         if (tableDataa.value[1].patternHeight > 0) {
         if (tableDataa.value[1].patternHeight > 0 && tableDataa.value[1].patternWidth > 0 && tableDataa.value[1].number > 0) {
          flakea.value = true;
          } 
         if (tableDataa.value[2].patternHeight > 0) {
         if (tableDataa.value[2].patternHeight > 0 && tableDataa.value[2].patternWidth > 0 && tableDataa.value[2].number > 0) {
          flakeb.value = true;
          } 
         if (tableDataa.value[3].patternHeight > 0) {
         if (tableDataa.value[3].patternHeight > 0 && tableDataa.value[3].patternWidth > 0 && tableDataa.value[3].number > 0) {
          flakec.value = true;
          } 
           }
@@ -143,16 +192,34 @@
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  
@@ -196,15 +263,6 @@
onBeforeUnmount(() => {
  closeWebSocket();
});
const user = ref('');
const projectNo = ref('');
const workstationId = ref('');
const id = ref('');
const patternHeight = ref('');
const patternWidth = ref('');
const filmsId = ref('');
const patternThickness = ref('');
const number = ref('');
// 添加
const handleBindRack = (row) => {
  workstationId.value = row.workstationId; // 假设rackNumber是架号字段的属性名
@@ -225,25 +283,38 @@
      patternThickness: selectedValuec.value,
      number: number.value
    }); 
      window.localStorage.setItem('workstationId', workstationId.value)
      window.localStorage.setItem('patternHeight', selectedValuea.value)
      // window.localStorage.setItem('workstationId', workstationId.value)
      // window.localStorage.setItem('patternHeight', selectedValuea.value)
      // window.localStorage.setItem('patternWidth', selectedValue.value)
      // window.localStorage.setItem('number', number.value)
    if (response.code == 200) {
      // 绑定成功,处理逻辑
      ElMessage.success(response.message);
      // window.location.reload() 
      add.value = false;
     tableDataa.value = response.data;
      let workstationId = window.localStorage.getItem('workstationId')
      let patternHeight = window.localStorage.getItem('patternHeight')
      if (patternHeight !== '' && workstationId === '1') {
      // let workstationId = window.localStorage.getItem('workstationId')
      // let patternHeight = window.localStorage.getItem('patternHeight')
      // let patternWidth = window.localStorage.getItem('patternWidth')
      // let number = window.localStorage.getItem('number')
      if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '1') {
      flake.value = true
    } else if (patternHeight !== '' && workstationId === '2'){
    } else if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '2'){
      flakea.value = true
    }else if (patternHeight !== '' && workstationId === '3'){
    }else if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '3'){
      flakeb.value = true
    }else if (patternHeight !== '' && workstationId === '4'){
    }else if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '4'){
      flakec.value = true
    }
    //   if (patternHeight !== '0' && patternWidth !== '0' && number !== '0' && workstationId === '1') {
    //   flake.value = true
    // } else if (patternHeight !== '0' && patternWidth !== '0' && number !== '0' && workstationId === '2'){
    //   flakea.value = true
    // }else if (patternHeight !== '0' && patternWidth !== '0' && number !== '0' && workstationId === '3'){
    //   flakeb.value = true
    // }else if (patternHeight !== '0' && patternWidth !== '0' && number !== '0' && workstationId === '4'){
    //   flakec.value = true
    // }
      selectedValuea.value = '';
      selectedValue.value = '';
      selectedValueb.value = '';
@@ -256,8 +327,6 @@
    }
  } catch (error) {  
      // 处理请求错误  
      console.error(error);
      alert('请求失败,请稍后再试!');
    }  
  }  
  else if( ida.value === 1 || ida.value === 3){
@@ -271,23 +340,19 @@
      patternThickness: selectedValuec.value,
      number: number.value
    }); 
      window.localStorage.setItem('workstationId', workstationId.value)
      window.localStorage.setItem('patternHeight', selectedValuea.value)
    if (response.code == 200) {
      // 绑定成功,处理逻辑
      ElMessage.success(response.message);
      // window.location.reload() 
      add.value = false;
     tableDataa.value = response.data;
      let workstationId = window.localStorage.getItem('workstationId')
      let patternHeight = window.localStorage.getItem('patternHeight')
      if (patternHeight !== '' && workstationId === '1') {
      if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '1') {
      flake.value = true
    } else if (patternHeight !== '' && workstationId === '2'){
    } else if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '2'){
      flakea.value = true
    }else if (patternHeight !== '' && workstationId === '3'){
    }else if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '3'){
      flakeb.value = true
    }else if (patternHeight !== '' && workstationId === '4'){
    }else if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '4'){
      flakec.value = true
    }
      selectedValuea.value = '';
@@ -302,8 +367,6 @@
    }
  } catch (error) {  
      // 处理请求错误  
      console.error(error);
      alert('请求失败,请稍后再试!');
    } 
    }
  else  {
@@ -570,47 +633,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); // 解析消息为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', 
@@ -632,7 +694,6 @@
  }  
};
</script>
<template>
  <div>
    <div id="dotClass">
@@ -647,24 +708,31 @@
    <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="dialogFormVisible = true">{{ $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> -->
    
    <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"
    >
    <el-table-column prop="engineeringId" :label="$t('basicData.projectnumber')" width="200" align="center"/>
      <el-table-column prop="layoutSequence" :label="$t('basicData.layoutSequence')" width="100" align="center"/>
      <el-table-column prop="engineeringId" :label="$t('basicData.projectnumber')" width="200" align="center"/>
      <el-table-column prop="width" :label="$t('basicData.glasswidth')" align="center"/>
      <el-table-column prop="height" :label="$t('basicData.glassheight')" align="center"/>
      <el-table-column prop="filmsId" :label="$t('basicData.coatingtypes')" align="center"/>
      <el-table-column prop="layoutSequence" :label="$t('basicData.quantity')" align="center"/>
      <el-table-column :label="$t('basicData.quantity')" align="center">
      <template #default="{ row }">
        <!-- 这里总是显示 1 -->
        <span>{{ 1 }}</span>
      </template>
    </el-table-column>
      <el-table-column prop="thickness" :label="$t('basicData.thickness')" align="center"/>
      <!-- <el-table-column
            align="center"
@@ -705,6 +773,32 @@
      </div>
    </template>
  </el-dialog>
<el-dialog v-model="dialoglea" top="15vh" width="70%" :title="$t('searchOrder.dutyinformation')">
    <el-table  ref="table" style="margin-top: 20px;height: 300px;"
        :data="tableDatax" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
          <el-table-column prop="line" fixed align="center" :label="$t('searchOrder.line')"/>
          <el-table-column prop="workProcesses" fixed align="center" :label="$t('searchOrder.process')" />
          <el-table-column prop="teamsGroupsName" align="center" :label="$t('searchOrder.team')">
        <template #default="{ row }">
          <el-input v-model="row.teamsGroupsName" autocomplete="off" min-width="150"/>
        </template>
      </el-table-column>
          <el-table-column prop="deviceName" align="center" :label="$t('searchOrder.basic')">
            <template #default="{ row }">
          <el-input v-model="row.deviceName" autocomplete="off" min-width="150"/>
        </template>
        </el-table-column>
        </el-table>
        <template #footer>
      <div id="dialog-footer">
        <el-button type="primary" @click="handleConfirm">
          {{ $t('searchOrder.add') }}
        </el-button>
        <el-button @click="dialoglea = false">{{ $t('searchOrder.cancel') }}</el-button>
      </div>
    </template>
</el-dialog>
  <el-dialog v-model="blinda" top="30vh" width="25%" :title="$t('basicData.whetherpause')">
    <template #footer>
      <div id="dialog-footer">
@@ -928,7 +1022,7 @@
  width: 1500px;
  margin-left: -300px
}
#overlay{
#overlayb{
  position: absolute;
  z-index: 1;
  width: 228px;
@@ -937,7 +1031,7 @@
  margin-top: -303px;
  margin-left: 355px;
}
#overlaya{
#overlayc{
  position: absolute;
  z-index: 1;
  width: 228px;
@@ -946,7 +1040,7 @@
  margin-top: -303px;
  margin-left:703px;
}
#overlayb{
#overlay{
  position: absolute;
  z-index: 1;
  width: 228px;
@@ -955,7 +1049,7 @@
  margin-top: -45px;
  margin-left: 355px;
}
#overlayc{
#overlaya{
  position: absolute;
  z-index: 1;
  width: 228px;