huang
2025-06-12 9b58ee6a291e34717597001fe56e25fbe0d60adc
更新设备图
3个文件已添加
1个文件已修改
1344 ■■■■■ 已修改文件
UI-Project/src/assets/cangchu1.png 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/assets/cangchu2.png 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/router/index.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/GlassStorage/rawfilmstorage2.vue 1339 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/assets/cangchu1.png
UI-Project/src/assets/cangchu2.png
UI-Project/src/router/index.js
@@ -179,6 +179,11 @@
              path: '/GlassStorage/rawfilmstorage',
              name: 'rawfilmstorage',
              component: () => import('../views/GlassStorage/rawfilmstorage.vue')
            },
            {
              path: '/GlassStorage/rawfilmstorage2',
              name: 'rawfilmstorage2',
              component: () => import('../views/GlassStorage/rawfilmstorage2.vue')
            }
          ]
        },
UI-Project/src/views/GlassStorage/rawfilmstorage2.vue
New file
@@ -0,0 +1,1339 @@
<script lang="ts" setup>
import { onBeforeUnmount, onMounted, reactive, ref } from "vue";
import { useRouter } from "vue-router"
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 { closeWebSocket, initializeWebSocket } from '@/utils/WebSocketService';
import { inject } from 'vue';
const router = useRouter()
const tableDataa = ref([])
const tableDatab = ref([])
const tableDatad = ref([])
const { t } = useI18n()
const add = ref(false)
const dialogFormVisiblea = ref(false)
const dialogFormVisibleb = ref(false)
const dialogFormVisiblec = ref(false)
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 card26 = ref(false)
const card27 = ref(false)
const card28 = ref(false)
const card31 = ref(false)
const card32 = ref(false)
const card33 = ref(false)
const card34 = ref(false)
const card35 = ref(false)
const card36 = ref(false)
const card37 = ref(false)
const card38 = ref(false)
const card40 = ref(false)
const card41 = ref(false)
const card42 = ref(false)
const card43 = ref(false)
const card44 = ref(false)
const card45 = ref(false)
const card46 = ref(false)
const card47 = ref(false)
const card48 = ref(false)
const card49 = ref(false)
const card101 = ref(false)
const timeRange = ref([])
const timeRangea = ref([])
const selectValuesa = reactive([]);
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: 98,
    label: t('film.warehousing1'),
  },
  {
    value: 99,
    label: t('film.warehousing2'),
  }
]
const report = ref({
  taskType: '',
  taskState: '',
});
let startTime = window.localStorage.getItem('startTime')
request.post("/glassStorage/rawGlassStorageTask/setRawGlassTaskRequest", {
  beginDate: startTime,
  endDate: globalDate,
}).then((response) => {
  if (response.code == 200) {
  } else {
    ElMessage.warning(response.msg)
  }
});
// 格式化后端时间并计算一周前的时间
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();
});
let socket = null;
const socketUrl = `ws://${WebSocketHost}:${host}/api/glassStorage/api/talk/rawGlass`;
const handleMessage = (data) => {
  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) {
      card26.value = true
    }
    if (data.rawStationDetailsList[0][26].patternThickness != null) {
      card27.value = true
    }
    if (data.rawStationDetailsList[0][27].patternThickness != null) {
      card28.value = true
    }
    if (data.rawStationDetailsList[0][28].patternThickness != null) {
      card31.value = true
    }
    if (data.rawStationDetailsList[0][29].patternThickness != null) {
      card32.value = true
    }
    if (data.rawStationDetailsList[0][30].patternThickness != null) {
      card33.value = true
    }
    if (data.rawStationDetailsList[0][31].patternThickness != null) {
      card34.value = true
    }
    if (data.rawStationDetailsList[0][32].patternThickness != null) {
      card35.value = true
    }
    if (data.rawStationDetailsList[0][33].patternThickness != null) {
      card36.value = true
    }
    if (data.rawStationDetailsList[0][34].patternThickness != null) {
      card37.value = true
    }
    if (data.rawStationDetailsList[0][35].patternThickness != null) {
      card38.value = true
    }
    if (data.rawStationDetailsList[0][36].patternThickness != null) {
      card40.value = true
    }
    if (data.rawStationDetailsList[0][37].patternThickness != null) {
      card41.value = true
    }
    if (data.rawStationDetailsList[0][38].patternThickness != null) {
      card42.value = true
    }
    if (data.rawStationDetailsList[0][39].patternThickness != null) {
      card43.value = true
    }
    if (data.rawStationDetailsList[0][40].patternThickness != null) {
      card44.value = true
    }
    if (data.rawStationDetailsList[0][41].patternThickness != null) {
      card45.value = true
    }
    if (data.rawStationDetailsList[0][42].patternThickness != null) {
      card46.value = true
    }
    if (data.rawStationDetailsList[0][43].patternThickness != null) {
      card47.value = true
    }
    if (data.rawStationDetailsList[0][44].patternThickness != null) {
      card48.value = true
    }
    if (data.rawStationDetailsList[0][45].patternThickness != null) {
      card49.value = true
    }
    if (data.rawStationDetailsList[0][46].patternThickness != null) {
      card101.value = true
    }
  }
};
const handleEdit = (row) => {
  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 deleteWarehousing = async (row) => {
  try {
    const confirmResult = await ElMessageBox.confirm(
      t('film.dedelete'),
      t('productStock.prompt'),
      {
        confirmButtonText: t('productStock.yes'),
        cancelButtonText: t('productStock.cancel'),
        type: 'warning',
      }
    );
    if (confirmResult === 'confirm') {
      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 {
        ElMessage.error(response.msg);
      }
    }
  } catch (error) {
  }
};
// 原片入库
const handleup = async () => {
  try {
    const response = await request.post('/glassStorage/rawGlassStorageDetails/patternWarehousing', {
      patternWidth: patternWidth.value,
      patternHeight: patternHeight.value,
      patternThickness: patternThickness.value,
      filmsId: filmsId.value,
      remainQuantity: remainQuantity.value,
      slot: slot.value,
    });
    if (response.code === 200) {
      ElMessage.success(response.message);
      dialogFormVisibleb.value = false;
      patternWidth.value = '';
      patternHeight.value = '';
      patternThickness.value = '';
      filmsId.value = '';
      remainQuantity.value = '';
      slot.value = '';
    } else {
      ElMessage.error(response.message);
    }
  } catch (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) => {
  if (!row.deviceId) {
    ElMessage.error(t('basicData.updatanull'));
    return;
  }
  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.state = newState;
    } else {
      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) {
  }
};
// 任务失败处理
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:
      return 'info';
    case 2:
      return 'warning';
    case 3:
      return 'success';
    case 4:
      return 'danger';
    case 5:
      return 'primary';
  }
}
function getStatusText1(taskType) {
  switch (taskType) {
    case 1:
      return t('sorter.advancetask');//进片任务
    case 2:
      return t('sorter.outputtasks');//出片任务
    case 3:
      return t('sorter.schedulingtasks');//调度任务
    case 4:
      return t('sorter.advancerequests');//进片请求
    case 5:
      return t('sorter.releaserequest');//出片请求
  }
}
function getStatusType2(taskState) {
  switch (taskState) {
    case 0:
      return 'info';
    case 2:
      return 'warning';
    case 1:
      return 'success';
  }
}
function getStatusText2(taskState) {
  switch (taskState) {
    case 0:
      return t('film.built');//新建
    case 2:
      return t('film.fail');//失败
    case 1:
      return t('film.finish');//完成
  }
}
onBeforeUnmount(() => {
  closeWebSocket();
});
</script>
<template>
  <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')" :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="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('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;">
      <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="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 width="100" align="center" :label="$t('film.enabletype')" prop="taskType">
            <template #default="scope">
              <el-tag :type="getStatusType1(scope.row.taskType)">
                {{ getStatusText1(scope.row.taskType) }}
              </el-tag>
            </template>
          </el-table-column>
          <el-table-column align="center" :label="$t('film.taskstatus')" prop="taskState">
            <template #default="scope">
              <el-tag :type="getStatusType2(scope.row.taskState)">
                {{ getStatusText2(scope.row.taskState) }}
              </el-tag>
            </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="img-dlpl">
      <div class="img-car1" style="z-index:999;top:250px;left:20px;position:absolute;"></div>
      <div class="glasscard1">
        <!-- <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;"></div>
        <div class="card2" v-show="card2" style="z-index:999;"></div>
        <div class="card3" v-show="card3" style="z-index:999;"></div>
        <div class="card4" v-show="card4" style="z-index:999;"></div>
        <div class="card5" v-show="card5" style="z-index:999;"></div>
        <div class="card6" v-show="card6" style="z-index:999;"></div>
        <div class="card7" v-show="card7" style="z-index:999;"></div>
        <div class="card8" v-show="card8" style="z-index:999;"></div>
        <div class="card9" v-show="card9" style="z-index:999;"></div>
        <div class="card10" v-show="card10" style="z-index:999;"></div>
        <div class="card11" v-show="card11" style="z-index:999;"></div>
        <div class="card12" v-show="card12" style="z-index:999;"></div>
        <div class="card13" v-show="card13" style="z-index:999;"></div>
        <div class="card14" v-show="card14" style="z-index:999;"></div>
        <div class="card15" v-show="card15" style="z-index:999;"></div>
        <div class="card16" v-show="card16" style="z-index:999;"></div>
        <div class="card17" v-show="card17" style="z-index:999;"></div>
        <div class="card18" v-show="card18" style="z-index:999;"></div>
        <div class="card19" v-show="card19" style="z-index:999;"></div>
        <div class="card20" v-show="card20" style="z-index:999;"></div>
        <div class="card21" v-show="card21" style="z-index:999;"></div>
        <div class="card22" v-show="card22" style="z-index:999;"></div>
        <div class="card23" v-show="card23" style="z-index:999;"></div>
        <div class="card24" v-show="card24" style="z-index:999;"></div>
        <div class="card25" v-show="card25" style="z-index:999;"></div>
        <div class="card26" v-show="card26" style="z-index:999;"></div>
        <div class="card27" v-show="card27" style="z-index:999;"></div>
        <div class="card28" v-show="card28" style="z-index:999;"></div>
      </div>
      <div class="glasscard2">
        <div class="card31" v-show="card31" style="z-index:999;"></div>
        <div class="card32" v-show="card32" style="z-index:999;"></div>
        <div class="card33" v-show="card33" style="z-index:999;"></div>
        <div class="card34" v-show="card34" style="z-index:999;"></div>
        <div class="card35" v-show="card35" style="z-index:999;"></div>
        <div class="card36" v-show="card36" style="z-index:999;"></div>
        <div class="card37" v-show="card37" style="z-index:999;"></div>
        <div class="card38" v-show="card38" style="z-index:999;"></div>
      </div>
      <div class="glasscard3">
        <div class="card40" v-show="card40" style="z-index:999;"></div>
        <div class="card41" v-show="card41" style="z-index:999;"></div>
        <div class="card42" v-show="card42" style="z-index:999;"></div>
        <div class="card43" v-show="card43" style="z-index:999;"></div>
        <div class="card44" v-show="card44" style="z-index:999;"></div>
        <div class="card45" v-show="card45" style="z-index:999;"></div>
        <div class="card46" v-show="card46" style="z-index:999;"></div>
        <div class="card47" v-show="card47" style="z-index:999;"></div>
        <div class="card48" v-show="card48" style="z-index:999;"></div>
        <div class="card49" v-show="card49" style="z-index:999;"></div>
      </div>
      <div class="card101" v-show="card101" style="z-index:999;"></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="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" />
        <el-table-column prop="filmsId" align="center" :label="$t('film.films')" min-width="80" />
        <el-table-column prop="remainQuantity" align="center" :label="$t('film.remainquantity')" min-width="120" />
        <el-table-column align="center" :label="$t('film.enablestate')" min-width="80" prop="state">
          <template #default="scope">
            <el-tag :type="scope.row.state == 1 ? 'success' : 'danger'" @click="toggleEnableState(scope.row)">
              {{ 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 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="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 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-item :label="$t('film.quantitya')" :required="true" style="width: 17vw;">
                      <el-input :placeholder="$t('film.inquantity')" v-model="remainQuantity" 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.inwarehousing')" :required="true" style="width: 17vw">
                      <el-select :placeholder="$t('film.selectwarehousing')" style="width: 270px" v-model="slot">
                        <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
                      </el-select>
                    </el-form-item>
                  </div>
                </div>
              </el-col>
            </el-row>
          </el-form>
        </el-form>
      </div>
      <template #footer>
        <div id="dialog-footer">
          <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="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="handleupc">
            {{ $t('basicData.confirm') }}
          </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: 360px;
  margin-top: 15px;
  background-image: url('../../assets/cangchu2.png');
  background-repeat: no-repeat;
  background-attachment: local;
  min-height: 800px;
  width: 800px;
  max-width: 100%;
  background-size: 1020px 590px;
  overflow: hidden;
  position: relative;
}
.img-car1 {
  display: flex;
  background-image: url('../../assets/cangchu1.png');
  position: absolute;
  background-repeat: no-repeat;
  background-attachment: local;
  min-height: 200px;
  width: 240px;
  max-width: 100%;
  background-size: 270px 250px;
  overflow: hidden;
  position: relative;
  margin-left: 527px;
  margin-top: 6px
}
.glasscard1 {
  height: 200px;
  display: flex;
  gap: 5px;
  margin-top: 445px;
  margin-left: 335px;
}
.card1 {
  width: 8px;
  height: 95px;
  background-color: #911005
}
.card2 {
  width: 8px;
  height: 95px;
  background-color: #911005
}
.card3 {
  width: 8px;
  height: 95px;
  background-color: #911005
}
.card4 {
  width: 8px;
  height: 95px;
  background-color: #911005
}
.card5 {
  width: 8px;
  height: 95px;
  background-color: #911005
}
.card6 {
  width: 8px;
  height: 95px;
  background-color: #911005
}
.card7 {
  width: 8px;
  height: 95px;
  background-color: #911005
}
.card8 {
  width: 8px;
  height: 95px;
  background-color: #911005;
}
.card9 {
  width: 8px;
  height: 95px;
  background-color: #911005;
}
.card10 {
  width: 8px;
  height: 95px;
  background-color: #911005;
}
.card11 {
  width: 8px;
  height: 95px;
  background-color: #911005;
}
.card12 {
  width: 8px;
  height: 95px;
  background-color: #911005;
}
.card13 {
  width: 8px;
  height: 95px;
  background-color: #911005;
}
.card14 {
  width: 8px;
  height: 95px;
  background-color: #911005;
}
.card15 {
  width: 8px;
  height: 95px;
  background-color: #911005;
}
.card16 {
  width: 8px;
  height: 95px;
  background-color: #911005;
}
.card17 {
  width: 8px;
  height: 95px;
  background-color: #911005;
}
.card18 {
  width: 8px;
  height: 95px;
  background-color: #911005;
}
.card19 {
  width: 8px;
  height: 95px;
  background-color: #911005;
}
.card20 {
  width: 8px;
  height: 95px;
  background-color: #911005;
}
.card21 {
  width: 8px;
  height: 95px;
  background-color: #911005;
}
.card22 {
  width: 8px;
  height: 95px;
  background-color: #911005;
}
.card23 {
  width: 8px;
  height: 95px;
  background-color: #911005;
}
.card24 {
  width: 8px;
  height: 95px;
  background-color: #911005;
}
.card25 {
  width: 8px;
  height: 95px;
  background-color: #911005;
}
.card26 {
  width: 8px;
  height: 95px;
  background-color: #911005;
}
.card27 {
  width: 8px;
  height: 95px;
  background-color: #911005;
}
.card28 {
  width: 8px;
  height: 95px;
  background-color: #911005;
}
.glasscard2 {
  display: flex;
  gap: 5px;
  margin-top: -420px;
  margin-left: 335px;
}
.card31 {
  width: 8px;
  height: 90px;
  background-color: #911005;
}
.card32 {
  width: 8px;
  height: 90px;
  background-color: #911005;
}
.card33 {
  width: 8px;
  height: 90px;
  background-color: #911005;
}
.card34 {
  width: 8px;
  height: 90px;
  background-color: #911005;
}
.card35 {
  width: 8px;
  height: 90px;
  background-color: #911005;
}
.card36 {
  width: 8px;
  height: 90px;
  background-color: #911005;
}
.card37 {
  width: 8px;
  height: 90px;
  background-color: #911005;
}
.card38 {
  width: 8px;
  height: 90px;
  background-color: #911005;
}
.glasscard3 {
  display: flex;
  gap: 5px;
  margin-left: 550px;
  margin-top: -90px;
}
.card40 {
  width: 8px;
  height: 90px;
  background-color: #911005;
}
.card41 {
  width: 8px;
  height: 90px;
  background-color: #911005;
}
.card42 {
  width: 8px;
  height: 90px;
  background-color: #911005;
}
.card43 {
  width: 8px;
  height: 90px;
  background-color: #911005;
}
.card44 {
  width: 8px;
  height: 90px;
  background-color: #911005;
}
.card45 {
  width: 8px;
  height: 90px;
  background-color: #911005;
}
.card46 {
  width: 8px;
  height: 90px;
  background-color: #911005;
}
.card47 {
  width: 8px;
  height: 90px;
  background-color: #911005;
}
.card48 {
  width: 8px;
  height: 90px;
  background-color: #911005;
}
.card49 {
  width: 8px;
  height: 90px;
  background-color: #911005;
}
.card101 {
  width: 8px;
  height: 90px;
  background-color: #911005;
  margin-top: -90px;
  margin-left: 695px;
}
</style>