ZengTao
2025-05-26 fcb8b8cc392b146aa11bbaab9e497f7f13f29d44
UI-Project/src/views/GlassStorage/rawfilmstorage.vue
@@ -1,39 +1,78 @@
<script lang="ts" setup>
import {Search} from "@element-plus/icons-vue";
import {reactive} from "vue";
import {onBeforeUnmount, onMounted, reactive, ref} from "vue";
import {useRouter} from "vue-router"
const router = useRouter()
import type { TableColumnCtx } from 'element-plus'
import { ElMessage, ElMessageBox } from 'element-plus'
import { useI18n } from 'vue-i18n'
import { WebSocketHost ,host} from '@/utils/constants'
import {ElMessage, ElMessageBox} from 'element-plus'
import {useI18n} from 'vue-i18n'
import {host, WebSocketHost} from '@/utils/constants'
import dayjs from 'dayjs';
import request from "@/utils/request"
import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService';
import { ref, onMounted, onUnmounted, onBeforeUnmount } from "vue";
import {closeWebSocket, initializeWebSocket} from '@/utils/WebSocketService';
import { inject } from 'vue';
const router = useRouter()
const tableDataa = ref([])
const tableDatab = ref([])
const { t } = useI18n()
const tableDatad = ref([])
const {t} = useI18n()
const add = ref(false)
const dialogFormVisiblea = ref(false)
const dialogFormVisibleb = ref(false)
const dialogFormVisiblec = ref(false)
const timeRange = ref(["2022-01-01 00:00:00", "2025-01-01 00:00:00"])
const dialogFormVisiblee = ref(false)
const blindb = ref(false)
const Edit = ref(false)
const card1 = ref(false)
const card2 = ref(false)
const card3 = ref(false)
const card4 = ref(false)
const card5 = ref(false)
const card6 = ref(false)
const card7 = ref(false)
const card8 = ref(false)
const card9 = ref(false)
const card10 = ref(false)
const card11 = ref(false)
const card12 = ref(false)
const card13 = ref(false)
const card14 = ref(false)
const card15 = ref(false)
const card16 = ref(false)
const card17 = ref(false)
const card18 = ref(false)
const card19 = ref(false)
const card20 = ref(false)
const card21 = ref(false)
const card22 = ref(false)
const card23 = ref(false)
const card24 = ref(false)
const card25 = ref(false)
const card98 = ref(false)
const card99 = ref(false)
const card101 = ref(false)
const card102 = ref(false)
const card103 = ref(false)
const card104 = ref(false)
const timeRange = ref([])
const timeRangea = ref([])
const selectValuesa = reactive([]);
  const patternWidth = ref('');
  const patternHeight = ref('');
  const patternThickness = ref('');
  const filmsId = ref('');
  const remainQuantity = ref('');
  const slot = ref('');
  let webSocket: WebSocket | null = null;
const selectValuesb = reactive([]);
const patternWidth = ref('');
const patternHeight = ref('');
const patternThickness = ref('');
const filmsId = ref('');
const remainQuantity = ref('');
const slot = ref('');
const leftingStation = ref('');
const loadingline = ref('');
let webSocket: WebSocket | null = null;
const globalDate = inject('globalDate');
const value = ref('')
const options = [
  {
    value: 1,
    value: 98,
    label: t('film.warehousing1'),
  },
  {
    value: 2,
    value: 99,
    label: t('film.warehousing2'),
  }
]
@@ -41,46 +80,158 @@
  taskType: '',
  taskState: '',
});
// const response = await request.post("/glassStorage/rawGlassStorageTask/setRawGlassTaskRequest", {
//     beginDate: timeRange.value[0],
//     endDate: timeRange.value[1],
//     taskState: stateList,
//     taskType: celllist
//   })
//   if (response.code === 200) {
//     // tableDataa.value = response.data;
request.post("/glassStorage/rawGlassStorageTask/setRawGlassTaskRequest",{
      beginDate: "2022-01-01 00:00:00",
      endDate: "2025-01-01 00:00:00",
  let startTime = window.localStorage.getItem('startTime')
  request.post("/glassStorage/rawGlassStorageTask/setRawGlassTaskRequest",{
  beginDate: startTime,
  endDate: globalDate,
}).then((response) => {
          if (response.code == 200) {
            tableDataa.value = response.data
            console.log(tableDataa.value);
          } else {
          ElMessage.warning(response.msg)
          }
          });
onMounted(() => {
    socket = initializeWebSocket(socketUrl, handleMessage);
// 格式化后端时间并计算一周前的时间
const defaultTime = ref<[Date, Date]>([new Date(), new Date()]);
function parseAndSetTime() {
  const backendTime = new Date(globalDate);
  const oneWeekAgo = new Date(backendTime.getTime() - 7 * 24 * 60 * 60 * 1000); // 减去7天
  oneWeekAgo.setHours(0, 0, 0, 0);
  timeRange.value = [formatTimestamp(oneWeekAgo), formatTimestamp(backendTime)];
  timeRangea.value = [formatTimestamp(oneWeekAgo), formatTimestamp(backendTime)];
  window.localStorage.setItem('startTime', formatTimestamp(oneWeekAgo))
}
  onMounted(() => {
  socket = initializeWebSocket(socketUrl, handleMessage);
  parseAndSetTime();
});
  onUnmounted(() => {
    if (socket) {
    closeWebSocket(socket);
    }
    });
let socket = null;
const socketUrl = `ws://${WebSocketHost}:${host}/api/glassStorage/api/talk/rawGlass`;
const handleMessage = (data) => {
  if(data.tasks !=null){
  tableDataa.value = data.tasks[0]
  }
    const formattedTasks = data.tasks[0].map(task => {
      if (task && task.createTime) {
        return { ...task, createTime: formatTimestamp(task.createTime) };
      }
      return task;
    });
    tableDataa.value = formattedTasks;
  if(data.rawStationDetailsList !=null){
  tableDatab.value = data.rawStationDetailsList[0]
  if (data.rawStationDetailsList[0][0].patternThickness !=null) {
    card1.value = true
  }
  if (data.rawStationDetailsList[0][1].patternThickness !=null) {
    card2.value = true
  }
  if (data.rawStationDetailsList[0][2].patternThickness !=null) {
    card3.value = true
  }
  if (data.rawStationDetailsList[0][3].patternThickness !=null) {
    card4.value = true
  }
  if (data.rawStationDetailsList[0][4].patternThickness !=null) {
    card5.value = true
  }
  if (data.rawStationDetailsList[0][5].patternThickness !=null) {
    card6.value = true
  }
  if (data.rawStationDetailsList[0][6].patternThickness !=null) {
    card7.value = true
  }
  if (data.rawStationDetailsList[0][7].patternThickness !=null) {
    card8.value = true
  }
  if (data.rawStationDetailsList[0][8].patternThickness !=null) {
    card9.value = true
  }
  if (data.rawStationDetailsList[0][9].patternThickness !=null) {
    card10.value = true
  }
  if (data.rawStationDetailsList[0][10].patternThickness !=null) {
    card11.value = true
  }
  if (data.rawStationDetailsList[0][11].patternThickness !=null) {
    card12.value = true
  }
  if (data.rawStationDetailsList[0][12].patternThickness !=null) {
    card13.value = true
  }
  if (data.rawStationDetailsList[0][13].patternThickness !=null) {
    card14.value = true
  }
  if (data.rawStationDetailsList[0][14].patternThickness !=null) {
    card15.value = true
  }
  if (data.rawStationDetailsList[0][15].patternThickness !=null) {
    card16.value = true
  }
  if (data.rawStationDetailsList[0][16].patternThickness !=null) {
    card17.value = true
  }
  if (data.rawStationDetailsList[0][17].patternThickness !=null) {
    card18.value = true
  }
  if (data.rawStationDetailsList[0][18].patternThickness !=null) {
    card19.value = true
  }
  if (data.rawStationDetailsList[0][19].patternThickness !=null) {
    card20.value = true
  }
  if (data.rawStationDetailsList[0][20].patternThickness !=null) {
    card21.value = true
  }
  if (data.rawStationDetailsList[0][21].patternThickness !=null) {
    card22.value = true
  }
  if (data.rawStationDetailsList[0][22].patternThickness !=null) {
    card23.value = true
  }
  if (data.rawStationDetailsList[0][23].patternThickness !=null) {
    card24.value = true
  }
  if (data.rawStationDetailsList[0][24].patternThickness !=null) {
    card25.value = true
  }
  if (data.rawStationDetailsList[0][25].patternThickness !=null) {
    card98.value = true
  }
  if (data.rawStationDetailsList[0][26].patternThickness !=null) {
    card99.value = true
  }
  if (data.rawStationDetailsList[0][27].patternThickness !=null) {
    card101.value = true
  }
  if (data.rawStationDetailsList[0][28].patternThickness !=null) {
    card102.value = true
  }
  if (data.rawStationDetailsList[0][29].patternThickness !=null) {
    card103.value = true
  }
  if (data.rawStationDetailsList[0][30].patternThickness !=null) {
    card104.value = true
  }
  }
};
const handleEdit = (row) => {
  patternWidth.value = row.patternWidth;
  patternHeight.value = row.patternHeight;
  patternThickness.value = row.patternThickness;
  filmsId.value = row.filmsId;
  remainQuantity.value = row.remainQuantity;
  window.localStorage.setItem('deviceId', row.deviceId)
  window.localStorage.setItem('slot', row.slot)
  Edit.value = true;
};
const handleBinda = (row) => {
  dialogFormVisibleb.value = true;
};
const handleBindc = (row) => {
  dialogFormVisiblec.value = true;
};
const handleBinde = (row) => {
  dialogFormVisiblee.value = true;
};
  // 删除 
 const opena = async(row) => {
 const deleteWarehousing = async(row) => {
  try {
    const confirmResult = await ElMessageBox.confirm(  
      t('film.dedelete'), 
@@ -92,7 +243,9 @@
      } 
    );
    if (confirmResult === 'confirm') {
      const response = await request.post("/loadGlass/sys/user/deleteUser",  [row.id])
    var url="/glassStorage/rawGlassStorageDetails/deleteWarehousing?slot="+row.slot;
    const response = await request.post(url)
      // const response = await request.post("/glassStorage/rawGlassStorageDetails/deleteWarehousing",[row.slotId])
    if (response.code === 200) {
      ElMessage.success(response.message);
      } else {
@@ -100,87 +253,10 @@
      }  
    }  
  } catch (error) {
    console.error('发生错误:', error);
  }  
};
  // 禁用
  const openb = async(row) => {
  try {
    const confirmResult = await ElMessageBox.confirm(
      t('film.dedisable'),
      t('productStock.prompt'),
      {
        confirmButtonText: t('productStock.yes'),
        cancelButtonText: t('productStock.cancel'),
        type: 'warning',
      }
    );
    if (confirmResult === 'confirm') {
      const response = await request.post("/loadGlass/sys/user/deleteUser",  [row.id])
    if (response.code === 200) {
      ElMessage.success(response.message);
      } else {
      ElMessage.error(response.msg);
      }
    }
  } catch (error) {
    console.error('发生错误:', error);
  }
};
  // 出库
  const openc = async(row) => {
  try {
    const confirmResult = await ElMessageBox.confirm(
      t('film.deoutbound'),
      t('productStock.prompt'),
      {
        confirmButtonText: t('productStock.yes'),
        cancelButtonText: t('productStock.cancel'),
        type: 'warning',
      }
    );
    if (confirmResult === 'confirm') {
      const response = await request.post("/loadGlass/sys/user/deleteUser",  [row.id])
    if (response.code === 200) {
      ElMessage.success(response.message);
      } else {
      ElMessage.error(response.msg);
      }
    }
  } catch (error) {
    console.error('发生错误:', error);
  }
};
// 查询数据
const selectReportData = async () => {
  let celllist=[]
  let stateList=[]
  if(selectValuesa[0]!=null&&selectValuesa[0]!='undefined'){
    if(selectValuesa[0]!=""){
      celllist=[selectValuesa[0]];
    }
  }
  if(selectValuesa[1]!=null&&selectValuesa[1]!='undefined'){
    if(selectValuesa[1]!=""){
      stateList=[selectValuesa[1]];
    }
  }
  const response = await request.post("/glassStorage/rawGlassStorageTask/setRawGlassTaskRequest", {
    beginDate: timeRange.value[0],
    endDate: timeRange.value[1],
    taskState: stateList,
    taskType: celllist
  })
  if (response.code === 200) {
    // tableDataa.value = response.data;
    ElMessage.success(response.message);
  }
  else {
    ElMessage.error(response.message);
  }
};
// 入库
const handleConfirma = async () => {
// 原片入库
const handleup = async () => {
  try {
    const response = await request.post('/glassStorage/rawGlassStorageDetails/patternWarehousing', {
      patternWidth: patternWidth.value,
@@ -203,32 +279,232 @@
      ElMessage.error(response.message);
    }
  } catch (error) {
    console.error(error);
  }
};
// 入库请求
const handleupc = async () => {
  try  {
    var url="/glassStorage/rawGlassStorageDetails/warehousingRequest?leftingStation="+leftingStation.value;
      const response = await request.post(url)
    if (response.code == 200) {
      ElMessage.success(response.message);
      dialogFormVisiblec.value = false;
      leftingStation.value = '';
    } else {
      // 请求失败,显示错误消息
      ElMessage.error(response.msg);
    }
}
catch (error) {
  }
}
// 出库请求
const handleupe = async () => {
  try  {
    var url="/glassStorage/rawGlassStorageDetails/outWarehousingRequest?leftingStation="+leftingStation.value;
      const response = await request.post(url)
    if (response.code == 200) {
      ElMessage.success(response.message);
      dialogFormVisiblee.value = false;
      leftingStation.value = '';
    } else {
      // 请求失败,显示错误消息
      ElMessage.error(response.msg);
    }
}
catch (error) {
  }
}
  // 出库
  const openc = async(row) => {
  try {
    const confirmResult = await ElMessageBox.confirm(
      t('film.deoutbound'),
      t('productStock.prompt'),
      {
        confirmButtonText: t('productStock.yes'),
        cancelButtonText: t('productStock.cancel'),
        type: 'warning',
      }
    );
    if (confirmResult === 'confirm') {
      var url="/glassStorage/rawGlassStorageDetails/outWarehousing?slotId="+row.slot;
      const response = await request.post(url)
      // const response = await request.post("/glassStorage/rawGlassStorageDetails/outWarehousing",[row.slotId])
    if (response.code === 200) {
      ElMessage.success(response.message);
      } else {
      ElMessage.error(response.msg);
      }
    }
  } catch (error) {
  }
};
// 查询数据
const selectReportData = async () => {
  let celllist=[]
  let stateList=[]
  if(selectValuesa[0]!=null&&selectValuesa[0]!='undefined'){
    if(selectValuesa[0]!=""){
      celllist=[selectValuesa[0]];
    }
  }
  if(selectValuesa[1]!=null&&selectValuesa[1]!='undefined'){
    if(selectValuesa[1]!=""){
      stateList=[selectValuesa[1]];
    }
  }
  const response = await request.post("/glassStorage/rawGlassStorageTask/setRawGlassTaskRequest", {
    beginDate: (timeRange.value && timeRange.value[0]) || '',
    endDate: (timeRange.value && timeRange.value[1]) || '',
    taskState: celllist,
    taskType: stateList
  })
  if (response.code === 200) {
    // tableDataa.value = response.data;
    ElMessage.success(response.message);
  }
  else {
    ElMessage.error(response.message);
  }
};
// 是否禁用
const toggleEnableState = async (row: any) => {
const toggleEnableState = async (row: any) => {
  if (!row.deviceId) {  
    ElMessage.error(t('basicData.updatanull'));  
    return;
  }  
  const newState = row.enableState === 1 ? 0 : 1;
  try {
    // 发送请求到后端更新状态
    const response = await request.post('/glassStorage/rawGlassStorageDetails/updateEnableState', { deviceId: row.deviceId, enableState: newState });
  const newState = row.state === 1 ? 0 : 1;
  try {
    var url="/glassStorage/rawGlassStorageStation/updateSlotState?slot="+row.slot + "&state=" + newState;
    const response = await request.post(url)
    if (response.code === 200) {  
      ElMessage.success(response.message);  
      row.enableState = newState;
      row.state = newState;
    } else {  
      ElMessage.error(response.message);
      ElMessage.error(response.message);
    }
  row.state = newState;
} catch (error) {
    ElMessage.error(t('basicData.glassnull'));
  }
};
// 修改数量
const Editclick = async () => {
  let slot = window.localStorage.getItem('slot')
  let deviceId = window.localStorage.getItem('deviceId')
  try {
    const response = await request.post('/glassStorage/rawGlassStorageDetails/updateQuantity', {
      deviceId: deviceId,
      slot: slot,
      remainQuantity: remainQuantity.value,
      filmsId: filmsId.value,
      patternThickness: patternThickness.value,
      patternHeight: patternHeight.value,
      patternWidth: patternWidth.value,
  }
  );
    if (response.code === 200) {
      ElMessage.success(response.message);
      Edit.value = false;
      tableDatab.value = response.data;
      patternWidth.value = '';
      patternHeight.value = '';
      patternThickness.value = '';
      filmsId.value = '';
      remainQuantity.value = '';
    } else {
      ElMessage.error(response.message);
    }
  } catch (error) {
  }
};
// 格式化时间戳为年月日时间字符串的函数
function formatTimestamp(timestamp: number | Date): string {
  const date = new Date(timestamp);
  const year = date.getFullYear();
  const month = String(date.getMonth() + 1).padStart(2, '0');
  const day = String(date.getDate()).padStart(2, '0');
  const hours = String(date.getHours()).padStart(2, '0');
  const minutes = String(date.getMinutes()).padStart(2, '0');
  const seconds = String(date.getSeconds()).padStart(2, '0');
  return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}
// 历史任务
const iframeUrl = ref('');
const handlehistorical = (row) => {
  // historical()
  // window.localStorage.setItem('pagenumber', 1)
  blindb.value = true;
  iframeUrl.value = `${window.location.origin}/#/GlassStorage/rawhistory`;
};
// const historical = async () => {
//   try {
//   let startTime = window.localStorage.getItem('startTime')
//       const response = await request.post("/glassStorage/rawGlassStorageTask/queryRawGlassHistoryTask", {
//         pageNo: 1,
//         pageSize: 20,
//         taskState: [],
//         taskType: [],
//         beginDate: startTime,
//         endDate: globalDate
//     })
//       if (response.code == 200) {
//   window.localStorage.setItem('pagenumber', 1)
// } else {
//     }
// }
// catch (error) {
//   }
// }
// 任务成功处理
const successfull = async(row) => {
  try {
    const confirmResult = await ElMessageBox.confirm(
      t('searchOrder.psuccessfullyprocessed'),
      t('workOrder.prompt'),
      {
        confirmButtonText: t('workOrder.yes'),
        cancelButtonText: t('workOrder.cancel'),
        type: 'warning',
      }
    );
    if (confirmResult === 'confirm') {
  var url="/glassStorage/rawGlassStorageTask/taskSuccess?taskId="+ row.id;
      const response = await request.post(url)
    if (response.code === 200) {
      ElMessage.success(response.message);
      } else {
      ElMessage.error(response.msg);
      }
    }  
  } catch (error) {
    ElMessage.error(t('basicData.glassnull'));
  }  
}; 
const handleEdit = (row) => {
  dialogFormVisiblec.value = true;
};
// 任务失败处理
const handleptask = async(row) => {
  try {
    const confirmResult = await ElMessageBox.confirm(
      t('searchOrder.ptaskfailure'),
      t('workOrder.prompt'),
      {
        confirmButtonText: t('workOrder.yes'),
        cancelButtonText: t('workOrder.cancel'),
        type: 'warning',
      }
    );
    if (confirmResult === 'confirm') {
  var url="/glassStorage/rawGlassStorageTask/taskError?taskId="+ row.id;
      const response = await request.post(url)
    if (response.code === 200) {
      ElMessage.success(response.message);
      } else {
      ElMessage.error(response.msg);
      }
    }
  } catch (error) {
  }
};
function getStatusType1(taskType) {  
switch (taskType) {  
  case 1:  
@@ -237,36 +513,44 @@
    return 'warning';  
  case 3:  
    return 'success';  
  case 4:
    return 'danger';
  case 5:
    return 'primary';
}  
}
function getStatusText1(taskType) {  
switch (taskType) {
  case 1:  
    return t('film.stocke');//入库
    return t('sorter.advancetask');//进片任务
  case 2:  
    return t('film.outbound');//出库
    return t('sorter.outputtasks');//出片任务
  case 3:  
  return t('film.dispatch');//调度
  return t('sorter.schedulingtasks');//调度任务
  case 4:
  return t('sorter.advancerequests');//进片请求
  case 5:
  return t('sorter.releaserequest');//出片请求
}  
}
function getStatusType2(taskState) {  
switch (taskState) {  
  case 1:
  case 0:
    return 'info';  
  case 2:  
    return 'warning';  
  case 3:
  case 1:
    return 'success';  
}  
}
function getStatusText2(taskState) {  
switch (taskState) {
  case 1:
  case 0:
    return t('film.built');//新建
  case 2:  
    return t('film.execution');//执行中
  case 3:
  return t('film.finish');//完成
    return t('film.fail');//失败
  case 1:
    return t('film.finish');//完成
}  
}
onBeforeUnmount(() => {
@@ -274,37 +558,54 @@
}); 
</script>
<template>
  <div>
  <div style="display: flex; flex-direction: row; align-items: center; margin-top: 20px;">
    <el-button style="margin-left: 20px;" id="searchButton" type="success" @click="dialogFormVisiblea = true">{{ $t('film.mes') }}</el-button>
  <el-button style="margin-left: 20px;" id="searchButton" type="success" @click="dialogFormVisibleb = true">{{ $t('film.warehousing') }}</el-button>
    <el-date-picker style="margin-left: 10px;"  v-model="timeRange" type="datetimerange"
        format="YYYY/MM/DD HH:mm:ss"
  <div style="height: 500px;">
    <div style="display: flex; flex-direction: row; align-items: center; margin-top: 20px;">
      <el-button style="margin-left: 20px;" id="searchButton" type="success" @click="dialogFormVisiblea = true">
        {{ $t('film.mes') }}
      </el-button>
      <el-button style="margin-left: 20px;" id="searchButton" type="success" @click="handleBinda">
        {{ $t('film.warehousing') }}
      </el-button>
      <el-button style="margin-left: 20px;" id="searchButton" type="success" @click="handleBindc">
        {{ $t('film.pwarehousing') }}
      </el-button>
      <el-button style="margin-left: 20px;" id="searchButton" type="success" @click="handleBinde">{{
          $t('film.pwareout')
        }}
      </el-button>
      <el-button style="margin-left: 20px;" id="searchButton" type="success" @click="handlehistorical">{{
          $t('searchOrder.historicaltasks')
        }}
      </el-button>
      <el-date-picker style="margin-left: 10px;" v-model="timeRange" type="datetimerange"
        format="YYYY/MM/DD HH:mm:ss"
        value-format="YYYY-MM-DD HH:mm:ss"
        :start-placeholder="$t('film.starttime')"
        :end-placeholder="$t('film.endtime')"
        :start-placeholder="$t('film.starttime')"
        :end-placeholder="$t('film.endtime')"
        :default-time="defaultTime" />
    <el-select v-model="selectValuesa[0]" clearable :placeholder="$t('film.taskstatus')" style="margin-left: 10px;" >
      <el-option :label="$t('film.built')" value="1"></el-option>
      <el-option :label="$t('film.execution')" value="2"></el-option>
      <el-option :label="$t('film.finish')" value="3"></el-option>
      <el-option :label="$t('film.built')" value="0"></el-option>
      <el-option :label="$t('film.finish')" value="1"></el-option>
      <el-option :label="$t('film.fail')" value="2"></el-option>
    </el-select>
    <el-select v-model="selectValuesa[1]" clearable :placeholder="$t('film.tasktype')" style="margin-left: 10px;" >
      <el-option :label="$t('film.stocke')" value="1"></el-option>
      <el-option :label="$t('film.outbound')" value="2"></el-option>
      <el-option :label="$t('film.dispatch')" value="3"></el-option>
      <el-option :label="$t('sorter.advancetask')" value="1"></el-option>
      <el-option :label="$t('sorter.outputtasks')" value="2"></el-option>
      <el-option :label="$t('sorter.schedulingtasks')" value="3"></el-option>
      <el-option :label="$t('sorter.advancerequests')" value="4"></el-option>
      <el-option :label="$t('sorter.releaserequest')" value="5"></el-option>
    </el-select>
    <el-button type="primary" style="margin-left: 10px;" @click="selectReportData()">{{ $t('film.inquire') }}</el-button>
  </div>
  <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading">
  <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" >
      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
        <el-table height="300" ref="table"
        :data="tableDataa" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
          <el-table-column prop="id" align="center" :label="$t('film.enableid')"/>
          <el-table-column prop="originateSlot" align="center" :label="$t('film.originateslot')"/>
          <el-table-column prop="endSlot" align="center" :label="$t('film.endslot')"/>
          <el-table-column prop="startSlot" align="center" :label="$t('film.originateslot')"/>
          <el-table-column prop="endSlot" align="center" :label="$t('film.endoriginateslot')"/>
          <el-table-column prop="patternQuantity" align="center" :label="$t('film.patternquantity')"/>
          <el-table-column
          <el-table-column width="100"
          align="center"
          :label="$t('film.enabletype')"
          prop="taskType"
@@ -327,19 +628,55 @@
    </template> 
        </el-table-column>
          <el-table-column prop="createTime" align="center" :label="$t('film.createtime')" />
          <el-table-column fixed="right" :label="$t('film.operate')" align="center">
            <template #default="scope">
          <el-button :disabled="(scope.row.taskState !== 0)" type="text" plain @click="successfull(scope.row)">{{ $t('searchOrder.successfullyprocessed') }}</el-button>
          <el-button :disabled="(scope.row.taskState !== 0)" type="text" plain @click="handleptask(scope.row)">{{ $t('searchOrder.taskfailure') }}</el-button>
            </template>
        </el-table-column>
        </el-table>
      </div>
    </el-card>
    <div class="awatch">
    <img src="../../assets/ypcc.png" alt="" style="width: 100%;height: 120%;margin-left: 10px;position: relative;margin-top: -20px;">
</div>
    <div class="img-dlpl">
      <div class="img-car1" style="z-index:999;top:153px;left:20px;position:absolute;"></div>
      <!-- <div class="img-car1" :style="'z-index:999;top:250px;left:' + 20 + 'px;position:absolute;'"></div> -->
      <div class="card1" v-show="card1"     style="z-index:999;top:308px;left:53px;position:absolute;"></div>
      <div class="card2" v-show="card2"     style="z-index:999;top:308px;left:80px;position:absolute;"></div>
      <div class="card3" v-show="card3"     style="z-index:999;top:308px;left:108px;position:absolute;"></div>
      <div class="card98" v-show="card98"   style="z-index:999;top:308px;left:143px;position:absolute;"></div>
      <div class="card4" v-show="card4"     style="z-index:999;top:308px;left:202px;position:absolute;"></div>
      <div class="card5" v-show="card5"     style="z-index:999;top:308px;left:227px;position:absolute;"></div>
      <div class="card6" v-show="card6"     style="z-index:999;top:308px;left:253px;position:absolute;"></div>
      <div class="card7" v-show="card7"     style="z-index:999;top:308px;left:280px;position:absolute;"></div>
      <div class="card8" v-show="card8"     style="z-index:999;top:308px;left:308px;position:absolute;"></div>
      <div class="card9" v-show="card9"     style="z-index:999;top:308px;left:337px;position:absolute;"></div>
      <div class="card10" v-show="card10"   style="z-index:999;top:308px;left:364px;position:absolute;"></div>
      <div class="card11" v-show="card11"   style="z-index:999;top:308px;left:391px;position:absolute;"></div>
      <div class="card99" v-show="card99"   style="z-index:999;top:308px;left:426px;position:absolute;"></div>
      <div class="card12" v-show="card12"   style="z-index:999;top:308px;left:489px;position:absolute;"></div>
      <div class="card13" v-show="card13"   style="z-index:999;top:308px;left:514px;position:absolute;"></div>
      <div class="card14" v-show="card14"   style="z-index:999;top:308px;left:540px;position:absolute;"></div>
      <div class="card15" v-show="card15"   style="z-index:999;top:308px;left:566px;position:absolute;"></div>
      <div class="card16" v-show="card16"   style="z-index:999;top:308px;left:595px;position:absolute;"></div>
      <div class="card17" v-show="card17"   style="z-index:999;top:308px;left:624px;position:absolute;"></div>
      <div class="card18" v-show="card18"   style="z-index:999;top:308px;left:654px;position:absolute;"></div>
      <div class="card19" v-show="card19"   style="z-index:999;top:308px;left:682px;position:absolute;"></div>
      <div class="card20" v-show="card20"   style="z-index:999;top:308px;left:707px;position:absolute;"></div>
      <div class="card25" v-show="card25"   style="z-index:999;top:44px;left:664px;position:absolute;"></div>
      <div class="card24" v-show="card24"   style="z-index:999;top:44px;left:639px;position:absolute;"></div>
      <div class="card23" v-show="card23"   style="z-index:999;top:44px;left:616px;position:absolute;"></div>
      <div class="card22" v-show="card22"   style="z-index:999;top:44px;left:592px;position:absolute;"></div>
      <div class="card21" v-show="card21"   style="z-index:999;top:44px;left:564px;position:absolute;"></div>
      <div class="card101" v-show="card101"  style="z-index:999;top:44px;left:364px;position:absolute;"></div>
      <div class="card102" v-show="card102"  style="z-index:999;top:44px;left:334px;position:absolute;"></div>
      <div class="card103" v-show="card103"  style="z-index:999;top:44px;left:96px;position:absolute;"></div>
      <div class="card104" v-show="card104"  style="z-index:999;top:44px;left:70px;position:absolute;"></div>
    </div>
    <el-dialog v-model="dialogFormVisiblea" top="5vh" width="85%" >
    <el-table  ref="table" style="margin-top: 20px;height: 700px;"
        :data="tableDatab" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
          <el-table-column prop="deviceId" fixed align="center" :label="$t('film.station')" min-width="80"/>
          <el-table-column prop="slotId" fixed align="center" :label="$t('film.slot')" min-width="80"/>
          <el-table-column prop="slot" fixed align="center" :label="$t('film.slot')" min-width="80"/>
          <el-table-column prop="patternWidth" align="center" :label="$t('film.width')"  min-width="80" />
          <el-table-column prop="patternHeight" align="center" :label="$t('film.height')" min-width="80" />
          <el-table-column prop="patternThickness" align="center" :label="$t('film.thickness')" min-width="80" />
@@ -349,29 +686,40 @@
          align="center"
            :label="$t('film.enablestate')"
            min-width="80"
            prop="enablestate"
            prop="state"
          >
          <template #default="scope">  
          <el-tag  
            :type="scope.row.enableState == 1 ? 'success' : 'danger'"
            :type="scope.row.state == 1 ? 'success' : 'danger'"
            @click="toggleEnableState(scope.row)"  
            >  
            {{ scope.row.enableState == 1 ? $t('film.start') : $t('film.disable')}}
            {{ scope.row.state == 1 ? $t('film.start') : $t('film.disable')}}
          </el-tag>  
        </template> 
          </el-table-column>
          <el-table-column fixed="right" :label="$t('film.operate')" align="center" width="270">
            <template #default="scope">
              <el-button size="mini" type="text" plain @click="handleEdit(scope.row)">{{ $t('film.exit') }}</el-button>
              <el-button size="mini" type="text" plain @click="opena(scope.row)">{{ $t('film.delete') }}</el-button>
              <el-button size="mini" type="text" plain @click="openc(scope.row)">{{ $t('film.outbound') }}</el-button>
              <el-button type="text" plain @click="handleEdit(scope.row)">{{ $t('film.exit') }}</el-button>
              <el-button :disabled="!scope.row.remainQuantity" type="text" plain @click="deleteWarehousing(scope.row)">{{ $t('film.delete') }}</el-button>
              <el-button :disabled="!scope.row.remainQuantity || scope.row.remainQuantity === 0" type="text" plain @click="openc(scope.row)">{{ $t('film.outbound') }}</el-button>
            </template>
        </el-table-column>
        </el-table>
</el-dialog>
<el-dialog v-model="dialogFormVisibleb" top="23vh" width="55%" :title="$t('basicData.addglass')" >
<!-- 历史任务 -->
<el-dialog v-model="blindb" top="5vh" width="95%" @close="iframeUrl=''">
     <iframe
     :src="iframeUrl"
     marginwidth="2000px"
     marginheight="2000px"
     width="100%"
     height="750px"
     frameborder="0"
     ></iframe>
  </el-dialog>
<el-dialog v-model="dialogFormVisibleb" top="23vh" width="55%" :title="$t('film.addglass')" >
    <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
            <el-form  size="mini" label-width="150px">
            <el-form  label-width="150px">
      <el-form label-width="100px" label-position="right">
        <el-row style="margin-top: -15px;margin-bottom: -2px;">
          <el-col :span="6">
@@ -438,46 +786,300 @@
          </div>
    <template #footer>
      <div id="dialog-footer">
        <el-button type="primary" @click="handleConfirma">
        <el-button type="primary" @click="handleup">
          {{ $t('basicData.confirm') }}
        </el-button>
        <el-button @click="dialogFormVisibleb = false">{{ $t('basicData.cancel') }}</el-button>
      </div>
    </template>
  </el-dialog>
<el-dialog v-model="dialogFormVisiblec" top="21vh" width="40%">
    <div style="margin-left: 50px;margin-top: 10px;margin-bottom: 10px;">
      <el-form size="mini" label-width="100px">
        <el-form label-width="210px" label-position="right">
          <el-form-item :label="$t('film.thickremainquantity')" :required="true" style="width: 25vw">
            <el-input v-model="workstationId" autocomplete="off" />
          </el-form-item>
        </el-form>
      </el-form>
<el-dialog v-model="dialogFormVisiblec" top="24vh" width="30%" :title="$t('film.pwarehousing')">
    <div style="margin-left: 50px;margin-bottom: 10px;">
    <el-form-item :label="$t('film.position')" :required="true">
    <el-select v-model="leftingStation" clearable :placeholder="$t('film.cposition')" style="margin-left: 20px;" >
      <el-option :label="$t('film.position1')" value="98"></el-option>
      <el-option :label="$t('film.position2')" value="99"></el-option>
    </el-select>
    </el-form-item>
    </div>
    <template #footer>
      <div id="dialog-footer">
        <el-button type="primary" @click="handleConfirmb">
          {{ $t('reportWork.sure') }}
        <el-button type="primary" @click="handleupc">
          {{ $t('basicData.confirm') }}
        </el-button>
        <el-button @click="dialogFormVisiblec = false">{{ $t('reportWork.cancel') }}</el-button>
        <el-button @click="dialogFormVisiblec = false">{{ $t('basicData.cancel') }}</el-button>
      </div>
    </template>
  </el-dialog>
<el-dialog v-model="dialogFormVisiblee" top="24vh" width="30%" :title="$t('film.pwareout')">
    <div style="margin-left: 50px;margin-bottom: 10px;">
    <el-form-item :label="$t('film.position')" :required="true">
    <el-select v-model="leftingStation" clearable :placeholder="$t('film.cposition')" style="margin-left: 20px;" >
      <el-option :label="$t('film.position1')" value="98"></el-option>
      <el-option :label="$t('film.position2')" value="99"></el-option>
    </el-select>
    </el-form-item>
    </div>
    <template #footer>
      <div id="dialog-footer">
        <el-button type="primary" @click="handleupe">
          {{ $t('basicData.confirm') }}
        </el-button>
        <el-button @click="dialogFormVisiblee = false">{{ $t('basicData.cancel') }}</el-button>
      </div>
    </template>
  </el-dialog>
  <el-dialog v-model="Edit" top="23vh" width="55%" :title="$t('film.addglass')" >
    <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
            <el-form  label-width="150px">
      <el-form label-width="100px" label-position="right">
        <el-row style="margin-top: -15px;margin-bottom: -2px;">
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('film.widtha')" :required="true" style="width: 17vw;">
                <el-input :placeholder="$t('film.inwidth')" v-model="patternWidth" autocomplete="off" />
              </el-form-item>
              </div></div>
          </el-col>
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('film.heighta')" :required="true" style="width: 17vw;">
                <el-input :placeholder="$t('film.inheight')" v-model="patternHeight" autocomplete="off" />
              </el-form-item></div>
              </div>
          </el-col>
        </el-row>
        <el-row style="margin-top: 10px;">
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('film.thicknessa')" :required="true" style="width: 17vw;">
                <el-input :placeholder="$t('film.inthickness')" v-model="patternThickness" autocomplete="off" />
              </el-form-item></div></div>
          </el-col>
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('film.filmsa')" :required="true" style="width: 17vw;">
                <el-input :placeholder="$t('film.infilms')" v-model="filmsId" autocomplete="off" />
              </el-form-item></div></div>
          </el-col>
        </el-row>
        <el-row style="margin-top: 10px;">
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
        <el-form label-width="210px">
          <el-form-item :label="$t('film.thickremainquantity')" :required="true" style="width: 44.5vw;margin-left: -40px;">
            <el-input v-model="remainQuantity" autocomplete="off" :placeholder="$t('film.inquantity')"/>
          </el-form-item>
        </el-form>
            </div></div>
          </el-col>
        </el-row>
        </el-form>
            </el-form>
          </div>
    <template #footer>
      <div id="dialog-footer">
        <el-button type="primary" @click="Editclick">
          {{ $t('basicData.confirm') }}
        </el-button>
        <el-button @click="Edit = 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%;}
.awatch{
  height: 400px;
  width: 1500px;
  max-width: 100%;
}
#dialog-footer {
  text-align: center;
  margin-top: -15px;
}
.img-dlpl{
  margin-left: 330px;
  margin-top: 10px;
  background-image:url('../../assets/ypcc.png');
  background-repeat: no-repeat;
  background-attachment: local;
  min-height: 450px;
  width: 800px;
  max-width: 100%;
  background-size: 800px 450px;
  overflow: hidden;
  position:relative;
  margin-left: 30%
}
.img-car1{
  display: flex;
  background-image:url('../../assets/C1.png');
  position: absolute;
  background-repeat: no-repeat;
  background-attachment: local;
  min-height: 150px;
  width: 70px;
  max-width: 100%;
  background-size: 70px 150px;
  overflow: hidden;
  position:relative
}
.card1{
  width: 14px;
  height: 110px;
  background-color: #911005
}
.card2{
  width: 14px;
  height: 110px;
  background-color: #911005
}
.card3{
  width: 14px;
  height: 110px;
  background-color: #911005
}
.card4{
  width: 14px;
  height: 110px;
  background-color: #911005
}
.card5{
  width: 14px;
  height: 110px;
  background-color: #911005
}
.card6{
  width: 14px;
  height: 110px;
  background-color: #911005
}
.card7{
  width: 14px;
  height: 110px;
  background-color: #911005
}
.card8{
  width: 14px;
  height: 110px;
  background-color: #911005
}
.card9{
  width: 14px;
  height: 110px;
  background-color: #911005
}
.card10{
  width: 14px;
  height: 110px;
  background-color: #911005
}
.card11{
  width: 14px;
  height: 110px;
  background-color: #911005
}
.card12{
  width: 14px;
  height: 110px;
  background-color: #911005
}
.card13{
  width: 14px;
  height: 110px;
  background-color: #911005
}
.card14{
  width: 14px;
  height: 110px;
  background-color: #911005
}
.card15{
  width: 14px;
  height: 110px;
  background-color: #911005
}
.card16{
  width: 14px;
  height: 110px;
  background-color: #911005
}
.card17{
  width: 14px;
  height: 110px;
  background-color: #911005
}
.card18{
  width: 14px;
  height: 110px;
  background-color: #911005
}
.card19{
  width: 14px;
  height: 110px;
  background-color: #911005
}
.card20{
  width: 14px;
  height: 110px;
  background-color: #911005
}
.card21{
  width: 14px;
  height: 110px;
  background-color: #911005
}
.card22{
  width: 14px;
  height: 110px;
  background-color: #911005
}
.card23{
  width: 14px;
  height: 110px;
  background-color: #911005
}
.card24{
  width: 14px;
  height: 110px;
  background-color: #911005
}
.card25{
  width: 14px;
  height: 110px;
  background-color: #911005
}
.card101{
  width: 10px;
  height: 110px;
  background-color: #911005
}
.card102{
  width: 10px;
  height: 110px;
  background-color: #911005
}
.card103{
  width: 10px;
  height: 110px;
  background-color: #911005
}
.card104{
  width: 10px;
  height: 110px;
  background-color: #911005
}
.card98{
  width: 25px;
  height: 110px;
  background-color: #911005
}
.card99{
  width: 25px;
  height: 110px;
  background-color: #911005
}
</style>