ZengTao
2025-02-14 8152ad92d3aebbac4ee66a14a318bbac19e57d8d
Merge branch 'master' of http://10.153.19.25:10105/r/YiWuProject
15个文件已修改
5个文件已添加
7个文件已删除
2177 ■■■■ 已修改文件
UI-Project/config.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/package-lock.json 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/package.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/assets/ganghuaqian.png 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/assets/screen2.png 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/assets/xiaoche.png 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/assets/zhongkong.png 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/router/index.js 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/utils/constants.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Caching/cachingbefore.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Caching/cachingun.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/GlassStorage/rawfilmstorage.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Returns/upreturns.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Returns/upreturns2.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Slicecage/slicecage.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/UnLoadGlass/Landingindication.vue 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue 188 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/UnLoadGlass/PrintCustomLabelSemi1.vue 195 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/UnLoadGlass/PrintFlow.vue 386 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/UnLoadGlass/UnLoadGlass.vue 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/UnLoadGlass/loadmachinerack.vue 584 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/UnLoadGlass/loadmachineracktwo.vue 209 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/User/userlist.vue 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/hollow/hollowaluminum.vue 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/hollow/hollowequipment.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/hollow/hollowslicecage.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/largescreendisplay/screendisplay.vue 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/config.js
@@ -1,11 +1,13 @@
export default {
    // serverUrl: "10.153.19.150:88/api",
//  serverUrl: "192.168.2.100:88/api",
    serverUrl: "127.0.0.1:88",
    serverUrl: "10.153.19.162:88",
    // serverUrl: "127.0.0.1:88",
//     serverUrl: "192.168.0.39:88",
    // serverUrl2: "10.153.19.150:88"
    // serverUrl2: "192.168.2.100:88"
    serverUrl2: "127.0.0.1:88"
    serverUrl2: "10.153.19.162:88"
    // serverUrl2: "127.0.0.1:88"
    // serverUrl2: "192.168.0.39:88"
    //serverUrl:"res.abeim.cn"
}
UI-Project/package-lock.json
@@ -12,6 +12,7 @@
        "@vue-macros/reactivity-transform": "^0.3.23",
        "axios": "^1.6.8",
        "chart.js": "^4.4.3",
        "dayjs": "^1.11.13",
        "echarts": "^5.5.1",
        "element-plus": "^2.4.0",
        "moment": "^2.30.1",
@@ -836,9 +837,9 @@
      "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
    },
    "node_modules/dayjs": {
      "version": "1.11.10",
      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
      "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
      "version": "1.11.13",
      "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz",
      "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
    },
    "node_modules/debug": {
      "version": "4.3.4",
@@ -2827,9 +2828,9 @@
      "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
    },
    "dayjs": {
      "version": "1.11.10",
      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
      "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
      "version": "1.11.13",
      "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz",
      "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
    },
    "debug": {
      "version": "4.3.4",
@@ -3224,6 +3225,7 @@
        "axios": "^1.6.8",
        "babel-polyfill": "^6.26.0",
        "chart.js": "^4.4.3",
        "dayjs": "*",
        "echarts": "^5.5.1",
        "element-plus": "^2.4.0",
        "http-proxy-middleware": "^3.0.0",
@@ -3834,9 +3836,9 @@
          "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
        },
        "dayjs": {
          "version": "1.11.10",
          "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
          "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
          "version": "1.11.13",
          "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz",
          "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
        },
        "debug": {
          "version": "4.3.4",
UI-Project/package.json
@@ -12,6 +12,7 @@
    "@vue-macros/reactivity-transform": "^0.3.23",
    "axios": "^1.6.8",
    "chart.js": "^4.4.3",
    "dayjs": "^1.11.13",
    "echarts": "^5.5.1",
    "element-plus": "^2.4.0",
    "moment": "^2.30.1",
UI-Project/src/assets/ganghuaqian.png
UI-Project/src/assets/screen2.png
UI-Project/src/assets/xiaoche.png
UI-Project/src/assets/zhongkong.png
UI-Project/src/router/index.js
@@ -152,34 +152,6 @@
  },
]
},
          /*----------- 下片台 ----------------*/
        {
          path: 'UnLoadGlass',
          name: 'UnLoadGlass',
          component: () => import('../views/UnLoadGlass/UnLoadGlass.vue'),
          children:[
            {
              path: '/UnLoadGlass/loadmachinerack',
              name: 'loadmachinerack',
              component: () => import('../views/UnLoadGlass/loadmachinerack.vue')
            },
            {
              path: '/UnLoadGlass/loadmachineracktwo',
              name: 'loadmachineracktwo',
              component: () => import('../views/UnLoadGlass/loadmachineracktwo.vue')
            },
            {
              path: '/UnLoadGlass/Landingindication',
              name: 'Landingindication',
              component: () => import('../views/UnLoadGlass/Landingindication.vue')
            },
            {
              path: '/UnLoadGlass/Landingindicationtwo',
              name: 'Landingindicationtwo',
              component: () => import('../views/UnLoadGlass/Landingindicationtwo.vue')
            }
          ]
        },
         /*----------- 仓储中心 ----------------*/
         {
          path: 'GlassStorage',
@@ -306,6 +278,11 @@
              name: 'hollowslicecage',
              component: () => import('../views/hollow/hollowslicecage.vue')
            },
            {
              path: '/hollow/hollowaluminum',
              name: 'hollowaluminum',
              component: () => import('../views/hollow/hollowaluminum.vue')
            },
          ]
        },
        /*----------- 管理系统 ----------------*/
UI-Project/src/utils/constants.js
@@ -2,5 +2,6 @@
// export const WebSocketHost = "192.168.0.39";
// export const WebSocketHost = "10.153.19.150";
// export const WebSocketHost = "192.168.2.100";
export const WebSocketHost = "127.0.0.1";
export const WebSocketHost = "10.153.19.162";
// export const WebSocketHost = "127.0.0.1";
export const host = "88";
UI-Project/src/views/Caching/cachingbefore.vue
@@ -2,6 +2,7 @@
import {onBeforeUnmount, onMounted, onUnmounted, ref, reactive} from "vue";
import {useRouter} from "vue-router"
import {host, WebSocketHost} from '@/utils/constants'
import dayjs from 'dayjs';
import request from "@/utils/request"
import {closeWebSocket, initializeWebSocket} from '@/utils/WebSocketService';
import {ElMessage, ElMessageBox} from 'element-plus'
@@ -37,9 +38,12 @@
  //     id: rect.id * 10,
  //   })); 
};
// 初始化 WebSocket,并传递消息处理函数
onMounted(() => {
  socket = initializeWebSocket(socketUrl, handleMessage);
  const endTime = dayjs().startOf('minute'); // 当前时间,精确到分钟
  const startTime = endTime.subtract(1, 'day').startOf('minute'); // 当前时间的前一天,精确到分钟
  // 设置时间范围为 [开始时间, 结束时间]
  timeRange.value = [startTime.format('YYYY-MM-DD HH:mm:ss'), endTime.format('YYYY-MM-DD HH:mm:ss')];
});
// 历史任务
const handlehistorical = (row) => {
@@ -66,8 +70,8 @@
  try { 
    const params = {
      deviceId: 1,
      startTime: timeRange.value[0] || '',
      endTime: timeRange.value[1] || '',
      startTime: (timeRange.value && timeRange.value[0]) || '',
      endTime: (timeRange.value && timeRange.value[1]) || '',
      glassId: glassId.value || '',
      taskState: taskStat.value,
      taskType: taskType.value || ''
UI-Project/src/views/Caching/cachingun.vue
@@ -2,6 +2,7 @@
import {onBeforeUnmount, onMounted, onUnmounted, ref, reactive} from "vue";
import {useRouter} from "vue-router"
import {host, WebSocketHost} from '@/utils/constants'
import dayjs from 'dayjs';
import request from "@/utils/request"
import {closeWebSocket, initializeWebSocket} from '@/utils/WebSocketService';
import {ElMessage, ElMessageBox} from 'element-plus'
@@ -36,9 +37,12 @@
  //     id: rect.id * 10,
  //   })); 
};
// 初始化 WebSocket,并传递消息处理函数
onMounted(() => {
  socket = initializeWebSocket(socketUrl, handleMessage);
  const endTime = dayjs().startOf('minute'); // 当前时间,精确到分钟
  const startTime = endTime.subtract(1, 'day').startOf('minute'); // 当前时间的前一天,精确到分钟
  // 设置时间范围为 [开始时间, 结束时间]
  timeRange.value = [startTime.format('YYYY-MM-DD HH:mm:ss'), endTime.format('YYYY-MM-DD HH:mm:ss')];
});
// 历史任务
const handlehistorical = (row) => {
@@ -65,8 +69,8 @@
  try { 
    const params = {
      deviceId: 2,
      startTime: timeRange.value[0] || '',
      endTime: timeRange.value[1] || '',
      startTime: (timeRange.value && timeRange.value[0]) || '',
      endTime: (timeRange.value && timeRange.value[1]) || '',
      glassId: glassId.value || '',
      taskState: taskState.value,
      taskType: taskType.value || ''
UI-Project/src/views/GlassStorage/rawfilmstorage.vue
@@ -101,7 +101,7 @@
      } 
    );
    if (confirmResult === 'confirm') {
    var url="/glassStorage/rawGlassStorageDetails/deleteWarehousing?slotId="+row.slotId;
    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) {
@@ -192,7 +192,7 @@
      } 
    );
    if (confirmResult === 'confirm') {
      var url="/glassStorage/rawGlassStorageDetails/outWarehousing?slotId="+row.slotId;
      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) {
@@ -220,8 +220,8 @@
    }
  }
  const response = await request.post("/glassStorage/rawGlassStorageTask/setRawGlassTaskRequest", {
    beginDate: timeRange.value[0],
    endDate: timeRange.value[1],
    beginDate: (timeRange.value && timeRange.value[0]) || '',
    endDate: (timeRange.value && timeRange.value[1]) || '',
    taskState: stateList,
    taskType: celllist
  })
UI-Project/src/views/Returns/upreturns.vue
@@ -119,7 +119,7 @@
    window.localStorage.setItem('filmRemove', filmRemove.value)
    if (response.code == 200) {
      ElMessage.success(response.message);
      // closeWebSocket(socket);
      closeWebSocket(socket);
      tableData.value = response.data;
      dialogFormVisible.value = false;
      selectedProjectNo.value = '';
@@ -181,7 +181,7 @@
        canSelectProjecta.value = false;
        canSelectProjectb.value = false;
        canSelectProjectc.value = true;
        // socket = initializeWebSocket(socketUrl, handleMessage);
        socket = initializeWebSocket(socketUrl, handleMessage);
        blind.value = false;
      } else {
        ElMessage.error(response.message);
@@ -384,10 +384,6 @@
        </el-button>
        <div style="margin-left: 70px;">{{ upstatus }}</div>
        <i :style="{ marginTop: '2px', backgroundColor: cuttingMachineStatusColor, width: '18px', height: '18px', borderRadius: '50%', display: 'block' }"></i>
        <el-button @click="confirmCutting" style="margin-left: 30px;margin-top: -3px;">{{
            $t('basicData.change')
          }}
        </el-button>
  </div>
    <el-button :disabled="!canSelectProjecta" style="margin-top: 5px;margin-left: 15px;"  type="primary" @click="selectproject">{{ $t('Mounting.previewproject') }}</el-button>
    <el-button :disabled="!canSelectProjectb" style="margin-top: 5px;margin-left: 20px;" type="success" @click="handleBind">{{ $t('basicData.startloading') }}</el-button>
UI-Project/src/views/Returns/upreturns2.vue
@@ -119,7 +119,7 @@
    window.localStorage.setItem('filmRemove', filmRemove.value)
    if (response.code == 200) {
      ElMessage.success(response.message);
      // closeWebSocket(socket);
      closeWebSocket(socket);
      tableData.value = response.data;
      dialogFormVisible.value = false;
      selectedProjectNo.value = '';
@@ -181,7 +181,7 @@
        canSelectProjecta.value = false;
        canSelectProjectb.value = false;
        canSelectProjectc.value = true;
        // socket = initializeWebSocket(socketUrl, handleMessage);
        socket = initializeWebSocket(socketUrl, handleMessage);
        blind.value = false;
      } else {
        ElMessage.error(response.message);
UI-Project/src/views/Slicecage/slicecage.vue
@@ -1007,7 +1007,7 @@
    </div>
<!-- // 父级框 -->
<div class="img-dlpl" >
    <div class="img-car1" :style="'z-index:999;left:270px;top:' + 350*carPosition[0] + 'px;position:absolute;'">
    <div class="img-car1" :style="'z-index:999;left:375px;top:' + 350*carPosition[0] + 'px;position:absolute;'">
      <div  
      v-for="(rect, index) in adjusta"  
      :key="rect.id"  
@@ -1021,7 +1021,7 @@
    >
    </div>
    </div>
    <div class="img-car4" :style="'z-index:999;left:740px;top:' + 350*carPosition[1] + 'px;position:absolute;'">
    <div class="img-car4" :style="'z-index:999;left:770px;top:' + 350*carPosition[1] + 'px;position:absolute;'">
      <div  
      v-for="(rect, index) in adjust"  
      :key="rect.id"  
@@ -1853,7 +1853,7 @@
.img-dlpl{
  margin-left: 20px;
  margin-top: 0px;
  background-image:url('../../assets/dlpl9.png');
  background-image:url('../../assets/ganghuaqian.png');
  background-repeat: no-repeat;
  background-attachment: local;
  min-height: 400px;
@@ -1865,7 +1865,7 @@
}
.img-car1{
  display: flex;
  background-image:url('../../assets/lp9.png');
  background-image:url('../../assets/xiaoche.png');
  position: absolute;
  background-repeat: no-repeat;
  background-attachment: local;
@@ -1878,7 +1878,7 @@
}
.img-car4{
  display: flex;
  background-image:url('../../assets/lpa9.png');
  background-image:url('../../assets/xiaoche.png');
  position: absolute;
  background-repeat: no-repeat;
  background-attachment: local;
UI-Project/src/views/UnLoadGlass/Landingindication.vue
File was deleted
UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue
File was deleted
UI-Project/src/views/UnLoadGlass/PrintCustomLabelSemi1.vue
File was deleted
UI-Project/src/views/UnLoadGlass/PrintFlow.vue
File was deleted
UI-Project/src/views/UnLoadGlass/UnLoadGlass.vue
File was deleted
UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
File was deleted
UI-Project/src/views/UnLoadGlass/loadmachineracktwo.vue
File was deleted
UI-Project/src/views/User/userlist.vue
@@ -16,16 +16,30 @@
const password = ref('');
const tableData = ref([])
const slot = ref('')
request.post("/loadGlass/sys/user/listByUserName",{
// request.post("/loadGlass/sys/user/listByUserName",{
//   key: ''
// }).then((res) => {
//    if (res.code == 200) {
//    console.log(res.data);
//    tableData.value = res.data
//    } else {
//    ElMessage.warning(res.msg)
//    }
//    });
  const listByUserName = async () => {
  try {
    const response = await request.post('/loadGlass/sys/user/listByUserName',{
  key: ''
}).then((res) => {
   if (res.code == 200) {
   console.log(res.data);
   tableData.value = res.data
   } else {
   ElMessage.warning(res.msg)
   }
   });
    if (response.code === 200) {
      tableData.value = response.data
    } else {
      ElMessage.warning(response.data);
    }
  } catch (error) {
    console.error('Error fetching options:', error);
  }
};
// 重置密码
 const open = async(row) => {  
  try {
@@ -59,6 +73,7 @@
})
onMounted(() => {
  fetchOptionsa('');  
  listByUserName('');
}); 
  // 角色下拉选  
  const fetchOptionsa = async () => {  
@@ -113,7 +128,8 @@
    if (response.code === 200) {
      ElMessage.success(response.message);
      add.value = false;
     tableData.value = response.data;
      listByUserName('');
  // tableData.value = response.data;
    } else {
      ElMessage.error(response.message);
    }
@@ -137,6 +153,7 @@
    if (response.code === 200) {
      ElMessage.success(response.message);
      adda.value = false;
      listByUserName('');
     tableData.value = response.data;
    } else {
      ElMessage.error(response.message);
@@ -161,6 +178,7 @@
      const response = await request.post("/loadGlass/sys/user/deleteUser",  [row.id])
    if (response.code === 200) {
      ElMessage.success(response.message);
      listByUserName('');
      } else {
      ElMessage.error(response.msg);
      }  
UI-Project/src/views/hollow/hollowaluminum.vue
New file
@@ -0,0 +1,90 @@
<script setup>
import {onBeforeUnmount, onMounted, onUnmounted, reactive, ref} from "vue";
import {useRouter} from "vue-router"
import {host, WebSocketHost} from '@/utils/constants'
import request from "@/utils/request"
import {closeWebSocket, initializeWebSocket} from '@/utils/WebSocketService';
import {ElMessage, ElMessageBox} from 'element-plus'
import {useI18n} from 'vue-i18n'
const router = useRouter()
const adda = ref(false)
const {t} = useI18n()
let language = ref(localStorage.getItem('lang') || 'zh')
const tableData = ref([])
const slot = ref('')
const requestData = {
  line: 2001
};
const timeRange = ref([])
const selectValuesa = reactive([]);
let socket = null;
const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/edgTasks`;
const handleMessage = (data) => {
  tableData.value = data.edgTasks[0]
};
onMounted(() => {
  socket = initializeWebSocket(socketUrl, handleMessage);
});
  onUnmounted(() => {
    if (socket) {
      closeWebSocket(socket);
    }
  });
onBeforeUnmount(() => {
  console.log("关闭了")
  closeWebSocket();
});
</script>
<template>
  <div style="height: 500px;">
    <div>
      <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading">
      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
        <el-table height="750" ref="table"
        @selection-change="handleSelectionChange"
        :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
        <el-table-column prop="glassId" align="center" :label="$t('workOrder.glassID')" min-width="180" />
          <el-table-column prop="width" align="center" :label="$t('workOrder.width')" min-width="120" />
          <el-table-column prop="height" align="center" :label="$t('workOrder.height')" min-width="80" />
          <el-table-column prop="thickness" align="center" :label="$t('workOrder.thickness')" min-width="120" />
          <el-table-column prop="glassType" align="center" :label="$t('workOrder.glasstype')" min-width="120" />
          <el-table-column prop="line" align="center" :label="$t('workOrder.line')" min-width="120" />
          <el-table-column fixed="right" :label="$t('workOrder.operate')" align="center" width="200">
            <template #default="scope">
              <el-button size="mini" type="text" plain @click="open(scope.row)">{{
                  $t('workOrder.breakage')
                }}
              </el-button>
              <el-button size="mini" type="text" plain @click="opena(scope.row)">{{
                  $t('workOrder.takeout')
                }}
              </el-button>
            </template>
          </el-table-column>
        </el-table>
      </div>
      </el-card>
    </div>
  </div>
</template>
<style scoped>
#dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
#dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
#dialog-footer{
  text-align: center;
  margin-top: -15px;
}
#message{
  text-align: center;
  align-items: center;
  color: black;
   width: 200px;
   height: 100px;
   background-color: #337ecc;
   margin-left: 28%;
}
#awatch{
  height: 460px;
  /* margin-top: -60px; */
}
</style>
UI-Project/src/views/hollow/hollowequipment.vue
@@ -279,14 +279,14 @@
              <div id="dt" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.intervalFrameHeightbOne')" :required="true" style="width: 16vw;">
                <el-input :placeholder="$t('hellow.intervalFrameHeightbOne')" v-model="intervalFrameHeightOne" autocomplete="off" />
                <el-input :placeholder="$t('hellow.intervalFrameHeightaOne')" v-model="intervalFrameHeightOne" 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('hellow.intervalFrameHeightbTwo')" :required="true" style="width: 16vw;">
            <el-input :placeholder="$t('hellow.intervalFrameHeightbTwo')" v-model="intervalFrameHeightTwo" autocomplete="off" />
            <el-input :placeholder="$t('hellow.intervalFrameHeightaTwo')" v-model="intervalFrameHeightTwo" autocomplete="off" />
              </el-form-item>
            </div></div>
          </el-col>
@@ -296,14 +296,14 @@
              <div id="dt" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.intervalFrameHeightbThree')" :required="true" style="width: 16vw;">
                <el-input :placeholder="$t('hellow.intervalFrameHeightbThree')" v-model="intervalFrameHeightThree" autocomplete="off" />
                <el-input :placeholder="$t('hellow.intervalFrameHeightaThree')" v-model="intervalFrameHeightThree" 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('hellow.intervalFrameHeightbFour')" :required="true" style="width: 16vw;">
            <el-input :placeholder="$t('hellow.intervalFrameHeightbFour')" v-model="intervalFrameHeightFour" autocomplete="off" />
            <el-input :placeholder="$t('hellow.intervalFrameHeightaFour')" v-model="intervalFrameHeightFour" autocomplete="off" />
              </el-form-item>
            </div></div>
          </el-col>
@@ -556,14 +556,14 @@
              <div id="dt" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.intervalFrameHeightbOne')" :required="true" style="width: 16vw;">
                <el-input :placeholder="$t('hellow.intervalFrameHeightbOne')" v-model="intervalFrameHeightOne" autocomplete="off" />
                <el-input :placeholder="$t('hellow.intervalFrameHeightaOne')" v-model="intervalFrameHeightOne" 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('hellow.intervalFrameHeightbTwo')" :required="true" style="width: 16vw;">
            <el-input :placeholder="$t('hellow.intervalFrameHeightbTwo')" v-model="intervalFrameHeightTwo" autocomplete="off" />
            <el-input :placeholder="$t('hellow.intervalFrameHeightaTwo')" v-model="intervalFrameHeightTwo" autocomplete="off" />
              </el-form-item>
            </div></div>
          </el-col>
@@ -573,14 +573,14 @@
              <div id="dt" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.intervalFrameHeightbThree')" :required="true" style="width: 16vw;">
                <el-input :placeholder="$t('hellow.intervalFrameHeightbThree')" v-model="intervalFrameHeightThree" autocomplete="off" />
                <el-input :placeholder="$t('hellow.intervalFrameHeightaThree')" v-model="intervalFrameHeightThree" 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('hellow.intervalFrameHeightbFour')" :required="true" style="width: 16vw;">
            <el-input :placeholder="$t('hellow.intervalFrameHeightbFour')" v-model="intervalFrameHeightFour" autocomplete="off" />
            <el-input :placeholder="$t('hellow.intervalFrameHeightaFour')" v-model="intervalFrameHeightFour" autocomplete="off" />
              </el-form-item>
            </div></div>
          </el-col>
UI-Project/src/views/hollow/hollowslicecage.vue
@@ -484,7 +484,7 @@
    </div>
<!-- // 父级框 -->
<div class="img-dlpl" >
    <div class="img-car1" :style="'z-index:999;left:270px;top:' + 350*carPosition[0] + 'px;position:absolute;'">
    <div class="img-car1" :style="'z-index:999;left:475px;top:' + 1450*carPosition[0] + 'px;position:absolute;'">
      <div  
      v-for="(rect, index) in adjusta"  
      :key="rect.id"  
@@ -498,7 +498,7 @@
    >
    </div>
    </div>
    <div class="img-car4" :style="'z-index:999;left:740px;top:' + 350*carPosition[1] + 'px;position:absolute;'">
    <div class="img-car4" :style="'z-index:999;left:890px;top:' + 50*carPosition[1] + 'px;position:absolute;'">
      <div  
      v-for="(rect, index) in adjust"  
      :key="rect.id"  
@@ -1019,19 +1019,19 @@
.img-dlpl{
  margin-left: 20px;
  margin-top: 0px;
  background-image:url('../../assets/dlpl9.png');
  background-image:url('../../assets/zhongkong.png');
  background-repeat: no-repeat;
  background-attachment: local;
  min-height: 400px;
  min-height: 700px;
  width: 1200px;
  max-width: 100%;
  background-size: 1200px 400px;
  background-size: 1200px 700px;
  overflow: hidden;
  position:relative
}
.img-car1{
  display: flex;
  background-image:url('../../assets/lp9.png');
  background-image:url('../../assets/xiaoche.png');
  position: absolute;
  background-repeat: no-repeat;
  background-attachment: local;
@@ -1044,7 +1044,7 @@
}
.img-car4{
  display: flex;
  background-image:url('../../assets/lpa9.png');
  background-image:url('../../assets/xiaoche.png');
  position: absolute;
  background-repeat: no-repeat;
  background-attachment: local;
UI-Project/src/views/largescreendisplay/screendisplay.vue
@@ -4,13 +4,16 @@
import {host, WebSocketHost} from '@/utils/constants'
import request from "@/utils/request"
import {closeWebSocket, initializeWebSocket} from '@/utils/WebSocketService';
import dayjs from 'dayjs';
import {ElMessage, ElMessageBox} from 'element-plus'
import {useI18n} from 'vue-i18n'
const router = useRouter()
const blinda = ref(false)
const blindb = ref(false)
const {t} = useI18n()
let language = ref(localStorage.getItem('lang') || 'zh')
const tableData = ref([])
const timeRange = ref([])
let socket = null;
const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/edgTasks`;
const handleMessage = (data) => {
@@ -37,9 +40,22 @@
    console.error(error);
  }
}
// 点击下方弹窗
  const handlehistorical = (row) => {
  blindb.value = true;
  historical()
};
// 在组件挂载时设置默认时间范围
onMounted(() => {
  socket = initializeWebSocket(socketUrl, handleMessage);
  const endTime = dayjs().startOf('minute'); // 当前时间,精确到分钟
  const startTime = endTime.subtract(1, 'day').startOf('minute'); // 当前时间的前一天,精确到分钟
  // 设置时间范围为 [开始时间, 结束时间]
  timeRange.value = [startTime.format('YYYY-MM-DD HH:mm:ss'), endTime.format('YYYY-MM-DD HH:mm:ss')];
});
// onMounted(() => {
//   socket = initializeWebSocket(socketUrl, handleMessage);
// });
  onUnmounted(() => {
    if (socket) {
      closeWebSocket(socket);
@@ -52,10 +68,15 @@
</script>
<template>
  <div style="height: 500px;">
    <div>
      <img src="../../assets/screen.png" alt=""  style="max-width: 48%;max-height: 100%;margin-top: 50px;float: left;">
<div class="awatch">
    <img src="../../assets/screen.png" alt="Screen" style="max-width: 48%; max-height: 100%; margin-top: 50px; float: left; position: relative;" />
    <div
      class="clickable-area"
      @click="handlehistorical"
      style="position: relative; width: 175px; height: 240px; top: 570px; left: 310px;"
    ></div>
    </div>
    <div style="margin-top: 60px;height: 190px;width: 48%;float: right;">
    <div style="height: 190px;width: 48%;float: right;">
<el-table height="500" ref="table"
      @selection-change="handleSelectionChange"
      :data="tableDatac" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
@@ -85,7 +106,77 @@
      </el-table>
</div>
  </div>
  <!-- 点击下方弹窗 -->
  <el-dialog v-model="blindb" top="10vh" width="90%">
  <div style="display: flex;">
            <el-select
            :placeholder="$t('basicData.coatingtypes')"
             clearable
             style="width: 270px;margin-left: 10px;"
             v-model="taskStat">
               <el-option
                v-for="item in optionsa"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              />
          </el-select>
          <span class="demonstration" style="margin-left: 20px;margin-top: 3px;">{{ $t('workOrder.time') }}</span>
            <!-- <el-date-picker v-model="timeRange" type="datetimerange" range-separator="至" :start-placeholder="$t('reportmanage.starttime')"
             style="margin-left: 15px;" value-format = "YYYY-MM-DD hh:mm:ss"
              :end-placeholder="$t('reportmanage.endtime')">
            </el-date-picker> -->
            <el-date-picker
              v-model="timeRange"
              type="datetimerange"
              range-separator="至"
              :start-placeholder="$t('reportmanage.starttime')"
              style="margin-left: 15px;"
              value-format="YYYY-MM-DD hh:mm:ss"
              :end-placeholder="$t('reportmanage.endtime')">
            </el-date-picker>
          <el-button type="primary" style="margin-left: 10px;margin-bottom: 10px;" @click="sethistorical()">{{
        $t('reportmanage.inquire')
      }}</el-button>
      </div>
    <el-table ref="table" style="margin-top: 20px;height: 650px;" :data="tableDatad" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
      <el-table-column prop="glassIdIn" align="center" :label="$t('searchOrder.intoglassid')" min-width="80" />
      <el-table-column prop="glassIdOut" align="center" :label="$t('searchOrder.outputglassID')" min-width="80" />
          <el-table-column prop="currentCell" align="center" :label="$t('sorter.layernow')" min-width="80" />
          <el-table-column prop="startCell" align="center" :label="$t('processCard.layer')" min-width="120" />
          <el-table-column
            align="center"
            :label="$t('film.taskstatus')"
            min-width="80"
            prop="taskState"
          >
          <template #default="scope">
        <el-tag :type="getStatusTypeb(scope.row.taskState)">
          {{ getStatusTextb(scope.row.taskState) }}
        </el-tag>
      </template>
          </el-table-column>
          <el-table-column
            align="center"
            :label="$t('film.enabletype')"
            min-width="80"
            prop="taskType"
          >
          <template #default="scope">
        <el-tag :type="getStatusTypea(scope.row.taskType)">
          {{ getStatusTexta(scope.row.taskType) }}
        </el-tag>
      </template>
          </el-table-column>
          <el-table-column prop="createTime" align="center" :label="$t('film.createtime')" min-width="120" />
          <el-table-column prop="updateTime" align="center" :label="$t('sorter.updateTime')" min-width="120" />
        </el-table>
        <template #footer>
      <div id="dialog-footer">
        <el-button @click="blindb = false">{{ $t('large.close') }}</el-button>
      </div>
    </template>
  </el-dialog>
<el-dialog v-model="blinda" top="5vh" width="85%">
  <el-table height="650" ref="table" 
      @selection-change="handleSelectionChange"
@@ -144,6 +235,13 @@
}
#awatch{
  height: 460px;
  /* margin-top: -60px; */
}
.clickable-area {
  cursor: pointer; /* 指示这是一个可点击的区域 */
  text-align: center; /* 如果需要,可以在div中添加文本并居中 */
  line-height: 95px; /* 如果需要,使文本垂直居中 */
}
/* .awatch{
  height: 460px;
  /* max-width: 100%; */
</style>