wangfei
2024-11-29 c377d90fe2a01c2118f6c69c3c177f75be7c318b
UI-Project/src/views/Returns/returns.vue
@@ -1,10 +1,14 @@
<script lang="ts" setup>
import {Search} from "@element-plus/icons-vue";
import {reactive} from "vue";
import {onBeforeUnmount, onMounted, onUnmounted, reactive, ref} from "vue";
import {useRouter} from "vue-router"
import {ElMessage} from 'element-plus'
import {useI18n} from 'vue-i18n'
import {host, WebSocketHost} from '@/utils/constants'
import request from "@/utils/request"
import {closeWebSocket, initializeWebSocket} from '@/utils/WebSocketService';
const router = useRouter()
import type { TableColumnCtx } from 'element-plus'
import { ElMessage, ElMessageBox } from 'element-plus'
const {t} = useI18n()
const dialogFormVisible = ref(false)
const blind = ref(false)
const blinda = ref(false)
@@ -13,123 +17,220 @@
const adda = ref(false)
const flake = ref(false)
const flakea = ref(false)
import { WebSocketHost } 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(''); // 当前选中的宽
const selectedValuea = ref('');
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);
const ida = ref(null);
const selectedProjectNo = ref('');
const selectedProjectNoa = ref('');
const selectedValue = ref('');
const selectedValuea = ref('');
const selectedValueb = ref('');
const selectedValuec = ref('');
const options = ref<any[]>([]); // 下拉选项列表
const selectOptions = ref<Array<any>>([]); // 下拉选选项数组
const selectOptionsa = ref<Array<any>>([]); // 下拉选选项数组
const selectOptionsb = ref<Array<any>>([]); // 下拉选选项数组
const selectOptionsc = ref<Array<any>>([]); // 下拉选选项数组
  const tableDataa = ref([])
  const tableData = reactive([]);
  const fetchTableData = async () => {
const selectedValuec = ref('');
const upstatus = ref(t('basicData.machineaa'));
const cuttingMachine = ref('');
const cuttingMachineStatusColor = ref('#911005'); // 用于动态设置i标签的背景色
const inKageWord = ref(0); // 用于存储要传递给接口的inKageWord值
const options = ref<any[]>([]);
const selectOptions = ref<Array<any>>([]);
const selectOptionsa = ref<Array<any>>([]);
const selectOptionsb = ref<Array<any>>([]);
const selectOptionsc = ref<Array<any>>([]);
const tableDataa = ref([])
const tableData = reactive([]);
const fetchTableData = async () => {
  try {
    const response = await request.get("/loadGlass/up-patten-usage/prioritylist");
    // 检查响应状态
    if (response.code === 200) {
      // 更新表格数据
      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
    }));
    selectOptionsa.value = response.data.map(item => ({
      value: item.height,
      label: item.height,
      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,
        label: width,
      }));
      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) {
    // 处理请求失败的情况
    // ElMessage.error('获取表格数据失败,请重试');
  }
};
request.get("/loadGlass/LoadGlass/list").then((res) => {
      window.localStorage.setItem('patternWidth', res.data.patternWidth)
      window.localStorage.setItem('workstationId', res.data.workstationId)
          if (res.code == 200) {
          console.log(res.data);
          tableDataa.value = res.data
          console.log(res.data.patternWidth);
      let workstationId = window.localStorage.getItem('workstationId')
      let patternWidth = window.localStorage.getItem('patternWidth')
      if (patternWidth !== '' || workstationId == '1') {
      flake.value = true
    } else if (patternWidth !== '' || workstationId == '2') {
      flakea.value = true
    }
          } else {
          ElMessage.warning(res.msg)
          // router.push("/login")
          }
          });
//定义接收加载表头下拉数据
const titleSelectJson = ref({
  processType: [],
})
const titleSelectJsona = ref({
  processTypea: [],
})
const socketUrl = `ws://10.153.19.150:88/api/loadGlass/api/talk/loadGlass`;
// 定义消息处理函数,更新 receivedData 变量
const handleMessage = (data) => {
  // 更新 tableData 的数据
  tableData.splice(0, tableData.length, ...data.prioritylist[0]);
  tableDataa.value = data.list[0]
 // console.log("更新后数据", tableData);
const handlezhiban = () => {
  dialoglea.value = true;
  fetchFlowCardId();
};
const requestData = {
  state: 100
};
// 调用接口获取选项数据的函数
const fetchOptions = async (queryString: string) => {
const selectproject = () => {
  dialogFormVisible.value = true;
  selectgong();
};
// 值班信息
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;
    } 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('');
  socket = initializeWebSocket(socketUrl, handleMessage);
});
onUnmounted(() => {
  if (socket) {
    closeWebSocket(socket);
  }
});
const list = async () => {
  try {  
    // 发送请求到后端接口
    const response = await request.post('/loadGlass/optimizeProject/listByState', {
      ...requestData,
      query: queryString // 将查询字符串作为参数传递
    });
    const response = await request.get('/loadGlass/LoadGlass/list');
    if (response.code == 200) {  
    titleSelectJson.value.processType = response.data;
    console.log(response.data);
      tableDataa.value = response.data
          if (tableDataa.value.length === 4) {
          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 && tableDataa.value[1].patternWidth > 0 && tableDataa.value[1].number > 0) {
          flakea.value = true;
          }
         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 && tableDataa.value[3].patternWidth > 0 && tableDataa.value[3].number > 0) {
          flakec.value = true;
          }
           }
    } else {  
      ElMessage.warning(response.data);  
    }  
  } catch (error) {  
    console.error('Error fetching options:', error);  
  }  
};
const titleSelectJson = ref({
  processType: [],
})
const titleSelectJsona = ref({
  processTypea: [],
})
let socket = null;
const socketUrl = `ws://${WebSocketHost}:${host}/api/loadGlass/api/talk/loadGlass`;
const handleMessage = (data) => {
  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,
      projectNo: 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 {
    const response = await request.post('/loadGlass/optimizeProject/listByState', {
      ...requestData,
      query: queryString
    });
    if (response.code == 200) {
      // titleSelectJson.value.processType = response.data;
      console.log(response.data);
    } else {
      ElMessage.warning(response.data);
    }
  } catch (error) {
    console.error('Error fetching options:', error);
  }
};
// 处理用户输入变化的方法  
const handleInputChange = async (value: string) => {  
  if (value) {  
    await fetchOptions(value);  
  } else {
    options.value = []; // 清空选项列表
  } else {
    options.value = [];
  }  
};  
  // 处理用户输入变化的方法  
@@ -140,72 +241,52 @@
    options.value = []; // 清空选项列表  
  }  
};  
// 初始化加载数据(如果需要)
onMounted(() => {
  fetchOptions('');
  initializeWebSocket(socketUrl, handleMessage);
});
onBeforeUnmount(() => {
  console.log("关闭了")
  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是架号字段的属性名
  workstationId.value = row.workstationId;
  ida.value = row.id;
  console.log(ida.value);
  add.value = true; // 打开绑定架子对话框
  add.value = true;
};
// 添加
    const handleConfirm = async () => {
  console.log(ida.value);
      // console.log('id.value:', id.value);
  if ((ida.value === 2 || ida.value === 4) && (parseInt(patternHeight.value, 10) >= 2700 )) {
const handleConfirm = async () => {
  if ((ida.value === 2 || ida.value === 4) && (parseInt(selectedValuea.value, 10) >= 2700)) {
    try {
    const response = await request.post('/loadGlass/LoadGlass/updateGlassMessage', {
      id: workstationId.value,
      workstationId: workstationId.value,
      patternHeight: selectedValuea.value,
      patternWidth: selectedValue.value,
      filmsId: selectedValueb.value,
      patternThickness: selectedValuec.value,
      number: number.value
    });
      const response = await request.post('/loadGlass/LoadGlass/updateGlassMessage', {
        id: workstationId.value,
        workstationId: workstationId.value,
        patternHeight: selectedValuea.value,
        patternWidth: selectedValue.value,
        filmsId: selectedValueb.value,
        patternThickness: selectedValuec.value,
        number: number.value
      });
    if (response.code == 200) {
      // 绑定成功,处理逻辑
      ElMessage.success(response.message);
      // window.location.reload()
      add.value = false;
     tableDataa.value = response.data;
      if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '1') {
      flake.value = true
    } else if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '2'){
      flakea.value = true
    }else if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '3'){
      flakeb.value = true
    }else if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '4'){
      flakec.value = true
    }
      selectedValuea.value = '';
      selectedValue.value = '';
      selectedValueb.value = '';
      selectedValuec.value = '';
      number.value = '';
      window.localStorage.setItem('workstationId', response.data.workstationId)
      let workstationId = window.localStorage.getItem('workstationId')
      if (workstationId == '1') {
      flake.value = true
    } else if (workstationId == '2'){
      flakea.value = true
    }
      list()
    } else {
      // 请求失败,显示错误消息
      ElMessage.error(response.msg);
      ElMessage.error(response.message);
    }
  } catch (error) {  
      // 处理请求错误  
      console.error(error);
      alert('请求失败,请稍后再试!');
    }  
  }  
  else if( ida.value === 1 || ida.value === 3){
@@ -220,40 +301,38 @@
      number: number.value
    }); 
    if (response.code == 200) {
      // 绑定成功,处理逻辑
      ElMessage.success(response.message);
      // window.location.reload()
      add.value = false;
     tableDataa.value = response.data;
      if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '1') {
      flake.value = true
    } else if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '2'){
      flakea.value = true
    }else if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '3'){
      flakeb.value = true
    }else if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '4'){
      flakec.value = true
    }
      selectedValuea.value = '';
      selectedValue.value = '';
      selectedValueb.value = '';
      selectedValuec.value = '';
      number.value = '';
      window.localStorage.setItem('workstationId', response.data.workstationId)
      let workstationId = window.localStorage.getItem('workstationId')
      if (workstationId == '1') {
      flake.value = true
    } else if (workstationId == '2'){
      flakea.value = true
    }
      list()
    } else {
      // 请求失败,显示错误消息
      ElMessage.error(response.msg);
      ElMessage.error(response.message);
    }
  } catch (error) {  
      // 处理请求错误  
      console.error(error);
      alert('请求失败,请稍后再试!');
    } 
    }
  else  {
      ElMessage({
        type: 'info',
        message: '第二行和第四行的高必须大于2700才能保存!',
        message: t('basicData.pause'),
      })
    }
};  
// 删除
const handleConfirma = async () => {
@@ -265,26 +344,25 @@
      filmsId: "",
      patternThickness: 0,
      number: 0
    });
    });
    if (response.code == 200) {
      // 绑定成功,处理逻辑
      ElMessage.success(response.message);
      adda.value = false;
     tableDataa.value = response.data;
      window.localStorage.setItem('workstationId', response.data.workstationId)
      let workstationId = window.localStorage.getItem('workstationId')
      if (workstationId == '1') {
      flake.value = false
    } else if (workstationId == '2'){
      flakea.value = false
    }
      tableDataa.value = response.data;
      if (workstationId.value == '1') {
        flake.value = false
      } else if (workstationId.value == '2') {
        flakea.value = false
      } else if (workstationId.value == '3') {
        flakeb.value = false
      } else if (workstationId.value == '4') {
        flakec.value = false
      }
      list()
    } else {
      // 请求失败,显示错误消息
      ElMessage.error(response.msg);
      ElMessage.error(response.message);
    }
  } catch (error) {
    // 处理错误
    console.error(error);
  }
};
@@ -294,85 +372,93 @@
  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);
      // window.location.reload()
      dialogFormVisible.value = false;
      tableData.splice(0, tableData.length, ...response.data);
      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,
      label: width,
    }));
      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);
    }
}
catch (error) {
    // 处理错误
    console.error(error);
  }
}
// 开始上片
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,
    })
    if (response.code == 200) {
      // 绑定成功,处理逻辑
      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) {
    // 处理错误
    console.error(error);
  }
    } else if (markingMachineStatus.value === '#911005' || cuttingMachineStatus.value === '#911005') {  
      // 提示用户打标机未就绪  
      ElMessage.warning('请确认打标机和切割机的就绪状态!');
      ElMessage.warning(t('basicData.pausea'));
    } 
}
// 暂停
const handlea = async () => {
  try  {
  let engineeringId = window.localStorage.getItem('engineeringId')
console.log(engineeringId);
if (engineeringId !== '') {
  const response = await request.post('/loadGlass/engineering/engineering/pauseTask', {
      engineeringId: engineeringId,
      state: 0,
    })
    if (response.code == 200) {
      ElMessage.success(response.message);
      blinda.value = false;
      tableData.splice([]);
    } else {
      // 请求失败,显示错误消息
      ElMessage.error(response.msg);
  try {
    let engineeringId = window.localStorage.getItem('engineeringId')
    console.log(engineeringId);
    if (engineeringId !== '') {
      const response = await request.post('/loadGlass/engineering/engineering/pauseTask', {
        engineeringId: engineeringId,
        state: 0,
      })
      if (response.code == 200) {
        ElMessage.success(response.message);
        blinda.value = false;
        // tableData.splice([]);
      } else {
        ElMessage.error(response.message);
    }
  }
    else  {
      ElMessage({
        type: 'info',
        message: '工程号不能为空!',
        message: t('basicData.infonull'),
      })
    }
}
catch (error) {
    // 处理错误
    console.error(error);
  }
}
@@ -387,25 +473,20 @@
      state: 0,
    })
    if (response.code == 200) {
      // 绑定成功,处理逻辑
      ElMessage.success(response.message);
      // window.location.reload()
      blindb.value = false;
      tableData.splice([]);
      // 请求失败,显示错误消息
      ElMessage.error(response.msg);
      ElMessage.error(response.message);
    }
  }
    else  {
      ElMessage({
        type: 'info',
        message: '工程号不能为空!',
        message: t('basicData.infonull'),
      })
    }
}
catch (error) {
    // 处理错误
    console.error(error);
  }
}
@@ -413,13 +494,13 @@
function getStatusText(state: number) {
  switch (state) {
    case 0:  
      return '等待中';
      return t('basicData.waiting');
    case 1:  
      return '上片中';
      return t('basicData.up');
    case 2:  
      return '上片中';
    return t('basicData.up');
    case 100:  
      return '已完成';
    return t('basicData.finish');
  }  
}  
function getStatusType(state: number) {  
@@ -436,7 +517,7 @@
}  
// 开始上片
const handleBind = (row) => {
  blind.value = true; // 打开绑定架子对话框
  blind.value = true;
};
// 暂停
const handleBinda = (row) => {
@@ -446,11 +527,10 @@
const handleBindb = (row) => {
  blindb.value = true; 
};
// 删除
const handleBindRacka = (row) => {
  workstationId.value = row.workstationId;
  adda.value = true;
  adda.value = true;
};
// 定义一个响应式引用,用于存储颜色状态  
const markingMachineStatus = ref('#911005');  
@@ -462,39 +542,96 @@
const confirmCuttingMachine = () => {  
  cuttingMachineStatus.value = 'green';  
}; 
const toggleEnableState = async (row: any) => {
  // 检查 id 是否为空
  if (!row.id) {
    ElMessage.error(t('basicData.updatanull'));
    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);
      row.state = newState;
    } else {
      ElMessage.error(response.message);
    }
  } catch (error) {
    // 处理请求错误
    ElMessage.error(t('basicData.glassnull'));
  }
};
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' ? t('basicData.machine') : t('basicData.machineaa');
      cuttingMachineStatusColor.value = status === '1' ? 'green' : '#911005';
      ElMessage.success(response.message);
    } else {
      ElMessage.error(response.message || '请求失败');
    }
  } catch (error) {
    console.error('请求时发生错误', error);
    ElMessage.error('请求时发生错误');
  }
};
</script>
<template>
  <div>
    <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>
    <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 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>
  <div style="height: 500px;">
    <div>
      <div id="dotClass">
        <div>{{ $t('basicData.laserprinting') }}</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;">{{
            $t('basicData.yes')
          }}
        </el-button>
        <div style="margin-left: 70px;">{{ $t('basicData.cuttingmachine') }}</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;">{{
            $t('basicData.yes')
          }}
        </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;">{{
            $t('basicData.change')
          }}
        </el-button>
  </div>
    <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> -->
    <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"
     ref="table"
     :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"
      :data="tableData"
        height="350"
        ref="table"
        :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"
        :data="tableData"
    >
    <el-table-column prop="engineeringId" label="工程号" width="200" align="center"/>
      <el-table-column prop="width" label="原片宽" align="center"/>
      <el-table-column prop="height" label="原片高" align="center"/>
      <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 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 :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"
            label="状态"
            min-width="80"
@@ -504,32 +641,71 @@
        <el-tag :type="getStatusType(scope.row.state)">  
          {{ getStatusText(scope.row.state) }}  
        </el-tag>  
      </template>
      </template>  -->
      <el-table-column
          align="center"
            :label="$t('basicData.startstatus')"
            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 ? $t('basicData.pass') : $t('basicData.waiting') }}
          </el-tag>
        </template>
          </el-table-column>
    </el-table>
      </div>
    </el-card>
  <el-dialog v-model="blind" top="30vh" width="25%" title="是否开始上片?" >
  <el-dialog v-model="blind" top="30vh" width="25%" :title="$t('basicData.startfilm')">
    <template #footer>
      <div id="dialog-footer">
        <el-button type="primary" @click="handle">
          确认
          {{ $t('basicData.confirm') }}
        </el-button>
        <el-button @click="blind = false">取消</el-button>
        <el-button @click="blind = false">{{ $t('basicData.cancel') }}</el-button>
      </div>
    </template>
  </el-dialog>
  <el-dialog v-model="blinda" top="30vh" width="25%" title="是否暂停?" >
<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">
        <el-button type="primary" @click="handlea">
          确认
          {{ $t('basicData.confirm') }}
        </el-button>
        <el-button @click="blinda = false">取消</el-button>
        <el-button @click="blinda = false">{{ $t('basicData.cancel') }}</el-button>
      </div>
    </template>
  </el-dialog>
  <el-dialog v-model="blindb" top="30vh" width="25%" title="是否停止任务?" >
  <!-- <el-dialog v-model="blindb" top="30vh" width="25%" title="是否停止任务?" >
    <template #footer>
      <div id="dialog-footer">
        <el-button type="primary" @click="handleb">
@@ -538,31 +714,32 @@
        <el-button @click="blindb = false">取消</el-button>
      </div>
    </template>
  </el-dialog>
  </el-dialog> -->
      <div id="parent">
        <img src="../../assets/shangpianji.png" alt="" style="max-width: 20%;max-height: 20%;margin-top: 20px;margin-left: 500px;">
        <img src="../../assets/shangpian.png" alt="" style="max-width: 40%;max-height: 40%;margin-top: 20px;margin-left: 340px;">
        <div id="overlay" v-show="flake"></div>
        <div id="overlaya" v-show="flakea"></div>
        <div id="overlayb" v-show="flakeb"></div>
        <div id="overlayc" v-show="flakec"></div>
      </div>
      <div style="margin-top: -350px;margin-left: 650px;">
        <el-table :data="tableDataa" border style="width: 70%"
      <div style="margin-top: -300px;margin-left: 680px;">
        <el-table :data="tableDataa" border style="width: 85%"
     :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"
        >
          <el-table-column prop="workstationId" align="center" label="工位" min-width="50" />
          <el-table-column prop="patternWidth" align="center" label="宽" min-width="80" />
          <el-table-column prop="patternHeight" align="center" label="高" min-width="80" />
          <el-table-column prop="filmsId" align="center" label="膜系" min-width="80" />
          <el-table-column prop="number" align="center" label="数量" min-width="80" />
          <el-table-column fixed="right" label="操作" align="center" width="150">
          <el-table-column prop="workstationId" align="center" :label="$t('basicData.station')" min-width="60" />
          <el-table-column prop="patternWidth" align="center" :label="$t('basicData.width')" min-width="80" />
          <el-table-column prop="patternHeight" align="center" :label="$t('basicData.height')" min-width="80" />
          <el-table-column prop="filmsId" align="center" :label="$t('basicData.coatingtypes')" min-width="80" />
          <el-table-column prop="number" align="center" :label="$t('basicData.quantity')" min-width="80" />
          <el-table-column fixed="right" :label="$t('basicData.operate')" align="center" width="150">
            <template #default="scope">
              <el-button size="mini" type="text" plain @click="handleBindRack(scope.row)">添加</el-button>
              <el-button size="mini" type="text" plain @click="handleBindRacka(scope.row)">删除</el-button>
              <el-button size="mini" type="text" plain @click="handleBindRack(scope.row)">{{ $t('basicData.add') }}</el-button>
              <el-button size="mini" type="text" plain @click="handleBindRacka(scope.row)">{{ $t('basicData.delete') }}</el-button>
            </template>
        </el-table-column>
        </el-table>
    </div>
  <el-dialog v-model="add" top="23vh" width="45%" title="添加原片" >
  <el-dialog v-model="add" top="23vh" width="45%" :title="$t('basicData.addglass')" >
    <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
            <el-form  size="mini" label-width="150px">
      <el-form label-width="70px" label-position="right">
@@ -570,12 +747,12 @@
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
              <el-form-item label="宽:" :required="true" style="width: 14vw">
              <el-form-item :label="$t('basicData.widtha')" :required="true" style="width: 14vw">
               <el-select  
                      v-model="selectedValue"  
                      filterable  
                      clearable  
                      placeholder="请选择宽"
                      :placeholder="$t('basicData.selectwidth')"
                      style="width: 220px"  
                      @input="handleInputChangea"  
                    >  
@@ -592,12 +769,12 @@
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
          <el-form-item label="高:" :required="true" style="width: 14vw">
          <el-form-item :label="$t('basicData.heighta')" :required="true" style="width: 14vw">
            <el-select  
                      v-model="selectedValuea"  
                      filterable  
                      clearable  
                      placeholder="请选择高"
                      :placeholder="$t('basicData.selectheight')"
                      style="width: 220px"  
                      @input="handleInputChangea"  
                    >  
@@ -616,12 +793,12 @@
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
              <el-form-item label="膜系:" :required="true" style="width: 14vw;">
              <el-form-item :label="$t('basicData.coatingtypesa')"  :required="true" style="width: 14vw;">
                <el-select  
                      v-model="selectedValueb"  
                      filterable  
                      clearable  
                      placeholder="请选择膜系"
                      :placeholder="$t('basicData.selectcoatingtypes')"
                      style="width: 220px"  
                      @input="handleInputChangea"  
                    >  
@@ -637,12 +814,12 @@
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
              <el-form-item label="厚度:" :required="true" style="width: 14vw">
              <el-form-item :label="$t('basicData.thicknessa')" :required="true" style="width: 14vw">
                <el-select  
                      v-model="selectedValuec"  
                      filterable  
                      clearable  
                      placeholder="请选择厚度"
                      :placeholder="$t('basicData.selectthickness')"
                      style="width: 220px"  
                      @input="handleInputChangea"  
                    >  
@@ -661,8 +838,8 @@
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
              <el-form-item label="数量:" :required="true" style="width: 14vw;">
                <el-input  v-model="number" autocomplete="off" />
              <el-form-item :label="$t('basicData.quantitya')" :required="true" style="width: 14vw;">
                <el-input :placeholder="$t('basicData.selectquantity')" v-model="number" autocomplete="off" />
              </el-form-item></div></div>
          </el-col>
        </el-row>
@@ -672,56 +849,55 @@
    <template #footer>
      <div id="dialog-footer">
        <el-button type="primary" @click="handleConfirm">
          确认
          {{ $t('basicData.confirm') }}
        </el-button>
        <el-button @click="add = false">取消</el-button>
        <el-button @click="add = false">{{ $t('basicData.cancel') }}</el-button>
      </div>
    </template>
  </el-dialog>
  <el-dialog v-model="adda" top="30vh" width="25%" title="是否删除该条信息?" >
  <el-dialog v-model="adda" top="30vh" width="25%" :title="$t('basicData.deletemessage')">
    <template #footer>
      <div id="dialog-footer">
        <el-button type="primary" @click="handleConfirma">
          确认
          {{ $t('basicData.confirm') }}
        </el-button>
        <el-button @click="adda = false">取消</el-button>
        <el-button @click="adda = false">{{ $t('basicData.cancel') }}</el-button>
      </div>
    </template>
  </el-dialog>
        </div>
  <el-dialog v-model="dialogFormVisible" top="24vh" width="30%" title="工程" >
  <el-dialog v-model="dialogFormVisible" top="24vh" width="30%" :title="$t('basicData.project')" >
    <div style="margin-left: 50px;margin-bottom: 10px;">
      <el-form-item label="工程号:" :required="true">
        <el-select
           v-model="selectedProjectNo"
           filterable
           clearable
           placeholder="请选择工程"
           style="width: 220px"
           @input="handleInputChange"
         >
      <el-option
         v-for="item in titleSelectJson['processType']"
         :key="item.id"
         :label="item.projectNo"
         :value="item.projectNo"
      />
    </el-select>
              </el-form-item>
          </div>
      <el-form-item :label="$t('basicData.projectnumber')" :required="true">
        <el-select
            v-model="selectedProjectNo"
            filterable
            clearable
            :placeholder="$t('basicData.plselectproject')"
            style="width: 220px"
            @input="handleInputChange"
        >
          <el-option
              v-for="item in titleSelectJson['processType']"
              :key="item.id"
              :label="item.projectNo"
              :value="item.projectNo"
          />
        </el-select>
      </el-form-item>
    </div>
    <template #footer>
      <div id="dialog-footer">
        <el-button type="primary" @click="handleup">
          确认
          {{ $t('basicData.confirm') }}
        </el-button>
        <el-button @click="dialogFormVisible = false">取消</el-button>
        <el-button @click="dialogFormVisible = false">{{ $t('basicData.cancel') }}</el-button>
      </div>
    </template>
  </el-dialog>
  </div>
</template>
<style scoped>
#dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
#dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
#dialog-footer{
@@ -740,23 +916,40 @@
  width: 1500px;
  margin-left: -300px
}
#overlayb{
  position: absolute;
  z-index: 1;
  width: 228px;
  height: 16px;
  background-color: #529b2e;
  margin-top: -303px;
  margin-left: 355px;
}
#overlayc{
  position: absolute;
  z-index: 1;
  width: 228px;
  height: 16px;
  background-color: #529b2e;
  margin-top: -303px;
  margin-left:703px;
}
#overlay{
  position: absolute;
  z-index: 1;
  width: 212px;
  height: 15px;
  width: 228px;
  height: 16px;
  background-color: #529b2e;
  margin-top: -404px;
  margin-left: 542px;
  margin-top: -45px;
  margin-left: 355px;
}
#overlaya{
  position: absolute;
  z-index: 1;
  width: 212px;
  height: 15px;
  width: 228px;
  height: 16px;
  background-color: #529b2e;
  margin-top: -38px;
  margin-left: 537px;
  margin-top: -45px;
  margin-left: 703px;
}
</style>