ZengTao
2024-05-30 17fc2a65cc8630dcaa7eea4271c6a003935ccc41
UI-Project/src/views/Returns/returns.vue
@@ -4,7 +4,6 @@
import {useRouter} from "vue-router"
const router = useRouter()
import type { TableColumnCtx } from 'element-plus'
import { ElMessage, ElMessageBox } from 'element-plus'
const dialogFormVisible = ref(false)
const blind = ref(false)
@@ -14,54 +13,61 @@
const adda = ref(false)
const flake = ref(false)
const flakea = ref(false)
// const patternHeight = ref('');
// const patternWidth = ref('');
// const filmsId = ref('');
// const patternThickness = ref('');
// const number = ref('');
//  patternHeight.value = '';
    //  patternWidth.value = '';
    //  filmsId.value = '';
    //  patternThickness.value = '';
    //  number.value = '';
import { WebSocketHost } from '@/utils/constants'
import request from "@/utils/request"
const ida = ref(null); 
import { ref, onMounted, onUnmounted } from "vue";
// import http from "@/http/index";
let ruleForm = ref({
  projectNo: '',
  workstationId: '',
  patternHeight: '',
  patternWidth: '',
  filmsId: '',
  patternThickness: '',
  number: '',
})
const tableDataa = ref([])
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 selectedValueb = ref('');
const selectedValuec = ref('');
const upstatus = ref(''); // 假设这个用于显示自动/手动状态
const cuttingMachine = ref(''); // 假设这个用于存储后端返回的状态值(0或1)
const cuttingMachineStatusColor = ref(''); // 用于动态设置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([]);
//   let filterData = ref({
//   damageDetails: {
//     state: '',
//   },
// })
// 发送获取表格数据的请求
const fetchTableData = async () => {
  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)
      // 获取唯一值
      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);
    }
  } catch (error) {
@@ -69,135 +75,45 @@
    // ElMessage.error('获取表格数据失败,请重试');
  }
};
onMounted(async () => {
  await fetchTableData();
  // 设置定时器来定期刷新数据
  const intervalId = setInterval(async () => {
    await fetchTableData();
  }, 1000); // 每1秒刷新一次
  // 组件卸载时清除定时器
  onUnmounted(() => {
    clearInterval(intervalId);
  });
});
onMounted(async () => {
  await fetchTableDataa();
  // 设置定时器来定期刷新数据
  const intervalId = setInterval(async () => {
    await fetchTableDataa();
  }, 1000); // 每1秒刷新一次
  // 组件卸载时清除定时器
  onUnmounted(() => {
    clearInterval(intervalId);
  });
});
  //  request.get("/loadGlass/LoadGlass/list").then((res) => {
  //   if (res.code === 200) {
  //    console.log(res.data);
  //    tableDataa.value = res.data;
  //   if (tableDataa.value.length === 2) {
  //    if (tableDataa.value[0].patternWidth > 0) {
  //     flake.value = true;
  //    }
  //   if (tableDataa.value[1].patternWidth > 0) {
  //   flakea.value = true;
  //   }
  //   }
  //   } else {
  //   ElMessage.warning(res.msg);
  //   // router.push("/login");
  //   }
  //  });
   async function fetchTableDataa() {
  try {
    const res = await request.get("/loadGlass/LoadGlass/list");
    if (res.code === 200) {
      tableDataa.value = res.data;
      // 根据数据更新 flake 和 flakea 的值
      if (res.data.length >= 2) {
        if (res.data[0].patternWidth > 0) {
          flake.value = true;
        } else {
          flake.value = false;
        }
        if (res.data[1].patternWidth > 0) {
          flakea.value = true;
        } else {
          flakea.value = false;
        }
      }
    } else {
      ElMessage.warning(res.msg);
    }
  } catch (error) {
    console.error('获取表格数据失败', 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);
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")
//           }
//           });
      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 getBasicData = ref({
//   id: '',
//   projectNo: '',
// })
// const requestData = {
//     // projectNo:"P24030805",
//     state:100
//   };
// request.post("/loadGlass/optimizeProject/listByState", requestData)
// .then((res) => {
//           if (res.code == 200) {
//     titleSelectJson.value.processType = res.data;
//           console.log(res.data);
//           } else {
//           ElMessage.warning(res.msg)
//           // router.push("/login")
//           }
//           });
          // 初始请求参数
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 requestData = {  
  state: 100  
};  
// 响应式数据
const selectedProjectNo = ref(''); // 当前选中的工程号
const selectedProjectNoa = ref(''); // 当前选中的工程号
const options = ref<any[]>([]); // 下拉选项列表
// 调用接口获取选项数据的函数  
const fetchOptions = async (queryString: string) => {  
  try {  
@@ -218,22 +134,6 @@
    console.error('Error fetching options:', error);  
  }  
};  
  // 开始上片下拉选
const fetchOptionsa = async (queryString: string) => {
  try {
    // 发送请求到后端接口
    const response = await request.get('/loadGlass/engineering/engineering/selectTask');
    if (response.code == 200) {
    titleSelectJsona.value.processTypea = 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) {  
@@ -252,28 +152,14 @@
};  
// 初始化加载数据(如果需要)  
onMounted(() => {  
  // 在组件挂载后调用 fetchOptions('') 来加载初始数据(如果需要)
  fetchOptions('');  
  initializeWebSocket(socketUrl, handleMessage);
});  
onMounted(() => {
  // 在组件挂载后调用 fetchOptions('') 来加载初始数据(如果需要)
  fetchOptionsa('');
});
// const billall  = () => {
//   request.post("/loadGlass/optimizeProject/listByState", requestData)
//     .then((res: any) => {
//       // if (res.code == 200) {
//       tableData.value = res.data;
//       // let self = this
//       // }
//     })
//     .catch((err: any) => {});
// }
onBeforeUnmount(() => {
  console.log("关闭了")
  closeWebSocket();
});
const user = ref('');
// 定义表头上传数据
// let titleUploadData = ref({
//   projectNo:'',
// })
const projectNo = ref('');
const workstationId = ref('');
const id = ref('');
@@ -298,10 +184,10 @@
    const response = await request.post('/loadGlass/LoadGlass/updateGlassMessage', {
      id: workstationId.value,
      workstationId: workstationId.value,
      patternHeight: patternHeight.value,
      patternWidth: patternWidth.value,
      filmsId: filmsId.value,
      patternThickness: patternThickness.value,
      patternHeight: selectedValuea.value,
      patternWidth: selectedValue.value,
      filmsId: selectedValueb.value,
      patternThickness: selectedValuec.value,
      number: number.value
    }); 
    if (response.code == 200) {
@@ -310,11 +196,11 @@
      // window.location.reload() 
      add.value = false;
     tableDataa.value = response.data;
    //  patternHeight = '';
    //  patternWidth.value = '';
    //  filmsId.value = '';
    //  patternThickness.value = '';
    //  number.value = '';
      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') {
@@ -337,10 +223,10 @@
    const response = await request.post('/loadGlass/LoadGlass/updateGlassMessage', {
      id: workstationId.value,
      workstationId: workstationId.value,
      patternHeight: patternHeight.value,
      patternWidth: patternWidth.value,
      filmsId: filmsId.value,
      patternThickness: patternThickness.value,
      patternHeight: selectedValuea.value,
      patternWidth: selectedValue.value,
      filmsId: selectedValueb.value,
      patternThickness: selectedValuec.value,
      number: number.value
    }); 
    if (response.code == 200) {
@@ -349,6 +235,11 @@
      // window.location.reload() 
      add.value = false;
     tableDataa.value = response.data;
      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') {
@@ -410,7 +301,7 @@
// 选择工程确认
const handleup = async () => {
  try  {
  const response = await request.post('/loadGlass/up-patten-usage/saveUpPattenUsage', {
  const response = await request.post('/loadGlass/up-patten-usage/selectUpPattenUsage', {
    engineerId: selectedProjectNo.value,
    })
    if (response.code == 200) {
@@ -418,7 +309,31 @@
      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, // 假设这是你想要作为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);
@@ -431,9 +346,14 @@
}
// 开始上片
const handle = async () => {
  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: selectedProjectNoa.value,
    engineerId: engineeringId,
    state: 1,
    })
    if (response.code == 200) {
@@ -441,7 +361,6 @@
      ElMessage.success(response.message);
      // window.location.reload() 
      blind.value = false;
      tableData.splice(0, tableData.length, ...response.data);
      selectedProjectNoa.value = ''
    } else {
      // 请求失败,显示错误消息
@@ -452,6 +371,10 @@
    // 处理错误
    console.error(error);
  }
    } else if (markingMachineStatus.value === '#911005' || cuttingMachineStatus.value === '#911005') {
      // 提示用户打标机未就绪
      ElMessage.warning('请确认打标机和切割机的就绪状态!');
    }
}
// 暂停
const handlea = async () => {
@@ -459,17 +382,13 @@
  let engineeringId = window.localStorage.getItem('engineeringId')
console.log(engineeringId);
if (engineeringId !== '') {
  const response = await request.post('/loadGlass/engineering/engineering/changeTask', {
  const response = await request.post('/loadGlass/engineering/engineering/pauseTask', {
      engineeringId: engineeringId,
      state: 0,
    })
    if (response.code == 200) {
      // 绑定成功,处理逻辑
      ElMessage.success(response.message);
      // window.location.reload()
      blinda.value = false;
      // tableData.value = response.data
      // tableData.value = [];
      tableData.splice([]);
    } else {
      // 请求失败,显示错误消息
@@ -494,7 +413,7 @@
  let engineeringId = window.localStorage.getItem('engineeringId')
console.log(engineeringId);
if (engineeringId !== '') {
  const response = await request.post('/loadGlass/engineering/engineering/changeTask', {
  const response = await request.post('/loadGlass/engineering/engineering/pauseTask', {
      engineeringId: engineeringId,
      state: 0,
    })
@@ -522,7 +441,6 @@
  }
}
onMounted(fetchTableData);
onMounted(fetchTableDataa);
function getStatusText(state: number) {
  switch (state) {
    case 0:  
@@ -533,115 +451,149 @@
      return '上片中';  
    case 100:  
      return '已完成';  
    default:
      return '未知状态';
  }  
}  
function getStatusType(state: number) {  
  // 这里假设只有100时类型不是success,其他都是success
  return state === 100 ? 'info' : 'success'; // 根据需要调整类型
  switch (state) {
    case 0:
      return 'warning';
    case 1:
      return 'primary';
    case 2:
      return 'primary';
    case 100:
      return 'success';
  }
}  
// const open = () => {
//   ElMessageBox.confirm(
//     '是否删除该条信息?',
//     '提示',
//     {
//       confirmButtonText: '是',
//       cancelButtonText: '取消',
//       type: 'warning',
//     }
//   )
//     .then(() => {
//       ElMessage({
//         type: 'success',
//         message: '删除成功!',
//       })
//     })
//     .catch(() => {
//       ElMessage({
//         type: 'info',
//         message: '删除失败',
//       })
//     })
// }
// 开始上片
const handleBind = (row) => {
  // engineeringId.value = row.engineeringId;
  blind.value = true; // 打开绑定架子对话框
};
// 暂停
const handleBinda = (row) => {
  // engineeringId.value = row.engineeringId;
  blinda.value = true; // 打开绑定架子对话框
  blinda.value = true;
};
// 停止任务
const handleBindb = (row) => {
  // engineeringId.value = row.engineeringId;
  blindb.value = true; // 打开绑定架子对话框
  blindb.value = true;
};
// 删除
const handleBindRacka = (row) => {
  workstationId.value = row.workstationId; // 假设rackNumber是架号字段的属性名
  adda.value = true; // 打开绑定架子对话框
  workstationId.value = row.workstationId;
  adda.value = true;
};
const gridOptions = reactive({
  border:  "full",//表格加边框
  keepSource: true,//保持源数据
  align: 'center',//文字居中
  stripe:true,//斑马纹
  rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮
  id: 'OrderList',
  showFooter: true,//显示脚
  printConfig: {},
  importConfig: {},
  exportConfig: {},
  scrollY:{ enabled: true },//开启虚拟滚动
  showOverflow:true,
  columnConfig: {
    resizable: true,
    useKey: true
  },
  filterConfig: {   //筛选配置项
    remote: true
  },
  customConfig: {
    storage: true
  },
  editConfig: {
    trigger: 'click',
    mode: 'row',
    showStatus: true
  },
  data:  [
    {
      'id': '1',
      'long': '5',
      'wide': '1005',
      'thick': '183.6',
    }
  ],
})
// 定义一个响应式引用,用于存储颜色状态
const markingMachineStatus = ref('#911005');
const cuttingMachineStatus = ref('#911005');
// 定义一个方法来改变颜色状态
const confirmMarkingMachine = () => {
  markingMachineStatus.value = 'green';
};
const confirmCuttingMachine = () => {
  cuttingMachineStatus.value = 'green';
};
const wsUrl = 'ws://10.153.19.150:88/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) => {
  // 假设服务器发送的是JSON格式的字符串
  try {
    const data = JSON.parse(event.data); // 解析消息为JSON
    // 假设服务器发送的数据结构是 { InkageStatus: ["1"] }
    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' ? '#911005' : 'green';
      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' ? '#911005' : 'green';
      // 显示成功消息
      ElMessage.success(response.message);
    } else {
      ElMessage.error(response.message || '请求失败');
    }
  } catch (error) {
    // 处理错误
    console.error('请求时发生错误', error);
    ElMessage.error('请求时发生错误');
  }
};
// const confirmCutting = async () => {
//   try  {
//   const response = await request.post('/loadGlass/LoadGlass/updateMesInkageLoad', {
//     inKageWord: inKageWord.value
//     })
//     if (response.code == 200) {
//       inKageWord == '1' ? '上片机联机状态:' : '上片机手动状态:';
//       inKageWord.value == '1' ? '#911005' : 'green';
//       ElMessage.success(response.message);
//     } else {
//       // 请求失败,显示错误消息
//       ElMessage.error(response.msg);
//     }
// }
// catch (error) {
//     // 处理错误
//     console.error(error);
//   }
// }
</script>
 
<template>
  <div>
    <div id="dotClass">
      <div>打标机就绪状态:</div>
      <i style="margin-top: 2px; background-color: green;width:18px;  height:18px;  border-radius: 50%;  display: block"></i>
    <el-button style="margin-left: 30px;margin-top: -3px;">手动确认</el-button>
      <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="margin-top: 2px; background-color: #911005 ;width:18px;  height:18px;  border-radius: 50%;  display: block"></i>
    <el-button style="margin-left: 30px;margin-top: -3px;" >手动确认</el-button>
   </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 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="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>
    
@@ -655,7 +607,7 @@
    >
    <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="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"/>
@@ -670,34 +622,11 @@
          {{ getStatusText(scope.row.state) }}  
        </el-tag>  
      </template> 
          <!-- <template #default="scope">
            <el-tag type="success" >{{ scope.row.state==0?"等待中":"上片中"  }}</el-tag>
          </template> -->
          </el-table-column>
    </el-table>
      </div>
    </el-card>
    <el-dialog v-model="blind" top="24vh" width="30%" title="是否开始上片?" >
    <div style="margin-left: 50px;margin-bottom: 10px;">
      <el-form-item label="工程号:" :required="true">
        <el-select
           v-model="selectedProjectNoa"
           filterable
           clearable
           placeholder="请选择工程"
           style="width: 220px"
           @input="handleInputChangea"
         >
      <el-option
         v-for="item in titleSelectJsona['processTypea']"
         :key="item.id"
         :label="item.engineerId"
         :value="item.engineerId"
      />
    </el-select>
              </el-form-item>
          </div>
  <el-dialog v-model="blind" top="30vh" width="25%" title="是否开始上片?" >
    <template #footer>
      <div id="dialog-footer">
        <el-button type="primary" @click="handle">
@@ -707,16 +636,6 @@
      </div>
    </template>
  </el-dialog>
  <!-- <el-dialog v-model="blind" top="30vh" width="25%" title="是否开始上片?" >
    <template #footer>
      <div id="dialog-footer">
        <el-button type="primary" @click="handle">
          确认
        </el-button>
        <el-button @click="blind = false">取消</el-button>
      </div>
    </template>
  </el-dialog> -->
  <el-dialog v-model="blinda" top="30vh" width="25%" title="是否暂停?" >
    <template #footer>
      <div id="dialog-footer">
@@ -743,9 +662,10 @@
        <div id="overlaya" v-show="flakea"></div>
      </div>
      <div style="margin-top: -350px;margin-left: 650px;">
        <el-table :data="tableDataa" border style="width: 60%"
        <el-table :data="tableDataa" border style="width: 70%"
     :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" />
@@ -767,15 +687,44 @@
          <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="patternHeight" autocomplete="off" />
              </el-form-item></div></div>
              <el-form-item label="宽:" :required="true" style="width: 14vw">
               <el-select
                      v-model="selectedValue"
                      filterable
                      clearable
                      placeholder="请选择宽"
                      style="width: 220px"
                      @input="handleInputChangea"
                    >
                 <el-option
                    v-for="item in selectOptions"
                    :key="item.id"
                    :label="item.label"
                    :value="item.value"
                 />
               </el-select>
              </el-form-item>
              </div></div>
          </el-col>
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
              <el-form-item label="宽:" :required="true" style="width: 14vw">
                <el-input v-model="patternWidth" autocomplete="off" />
          <el-form-item label="高:" :required="true" style="width: 14vw">
            <el-select
                      v-model="selectedValuea"
                      filterable
                      clearable
                      placeholder="请选择高"
                      style="width: 220px"
                      @input="handleInputChangea"
                    >
                 <el-option
                    v-for="item in selectOptionsa"
                    :key="item.id"
                    :label="item.label"
                    :value="item.value"
                 />
               </el-select>
              </el-form-item></div>
              </div>
          </el-col>
@@ -785,14 +734,43 @@
              <div id="dt" style="font-size: 15px;">
        <div>
              <el-form-item label="膜系:" :required="true" style="width: 14vw;">
                <el-input v-model="filmsId" autocomplete="off" />
                <el-select
                      v-model="selectedValueb"
                      filterable
                      clearable
                      placeholder="请选择膜系"
                      style="width: 220px"
                      @input="handleInputChangea"
                    >
                 <el-option
                    v-for="item in selectOptionsb"
                    :key="item.id"
                    :label="item.label"
                    :value="item.value"
                 />
               </el-select>
              </el-form-item></div></div>
          </el-col>
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
              <el-form-item label="厚度:" :required="true" style="width: 14vw">
                <el-input v-model="patternThickness" autocomplete="off" />
                <el-select
                      v-model="selectedValuec"
                      filterable
                      clearable
                      placeholder="请选择厚度"
                      style="width: 220px"
                      @input="handleInputChangea"
                    >
                 <el-option
                    v-for="item in selectOptionsc"
                    :key="item.id"
                    :label="item.label"
                    :value="item.value"
                 />
               </el-select>
                <!-- <el-input v-model="patternThickness" autocomplete="off" /> -->
              </el-form-item></div></div>
          </el-col>
        </el-row>
@@ -828,8 +806,6 @@
    </template>
  </el-dialog>
        </div>
  <el-dialog v-model="dialogFormVisible" top="24vh" width="30%" title="工程" >
    <div style="margin-left: 50px;margin-bottom: 10px;">
      <el-form-item label="工程号:" :required="true">