| | |
| | | const blindb = ref(false) |
| | | const { t } = useI18n() |
| | | let language = ref(localStorage.getItem('lang') || 'zh') |
| | | |
| | | let socket = null; |
| | | const rawGlassStorageDetailList = ref([]) |
| | | const orderDTOS = ref([]) |
| | |
| | | rawGlassStorageDetailList.value = data.rawGlassStorageDetailList[0] |
| | | orderDTOS.value = data.orderDTOS[0] |
| | | }; |
| | | |
| | | let socket1 = null; |
| | | const edgOneTasks = ref([]) |
| | | const edgTwoTasks = ref([]) |
| | |
| | | } |
| | | |
| | | }; |
| | | |
| | | let socket2 = null; |
| | | const temperingTaskType = ref([]) |
| | | const temperingGlassInfoList = ref([]) |
| | | const temperingGlassInfoOutList = ref([]) |
| | | const socketUrl2 = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/largenScreen`; |
| | | const handleMessage2 = (data) => { |
| | | temperingTaskType.value = data.temperingTaskType[0]; |
| | |
| | | numBoxes3.value =temperingTaskType.value; |
| | | boxStart3(); |
| | | } |
| | | temperingGlassInfoOutList.value = data.temperingGlassInfoOutList[0]; |
| | | if(numBoxes4.value !=temperingGlassInfoOutList.value){ |
| | | numBoxes4.value =temperingGlassInfoOutList.value; |
| | | boxStart3(); |
| | | } |
| | | }; |
| | | |
| | | let socket3 = null; |
| | | const bigStorageCageUsage = ref([]) |
| | | const socketUrl3 = `ws://${WebSocketHost}:${host}/api/cacheVerticalGlass/api/talk/largenScreen`; |
| | | const handleMessage3 = (data) => { |
| | | bigStorageCageUsage.value = data.bigStorageCageUsage[0]; |
| | | }; |
| | | |
| | | let socket4 = null; |
| | | const hollowBigStorageCageUsage = ref([]) |
| | | const socketUrl4 = `ws://${WebSocketHost}:${host}/api/hollowGlass/api/talk/largenScreen`; |
| | | const handleMessage4 = (data) => { |
| | | hollowBigStorageCageUsage.value = data.hollowBigStorageCageUsage[0]; |
| | | }; |
| | | |
| | | |
| | | const tableDatad = ref([]); |
| | | const patternUsage = async () => { |
| | | try { |
| | |
| | | thickness: '', |
| | | films: '' |
| | | }) |
| | | // const tableDatac = ref([]); |
| | | // const patternUsage = async () => { |
| | | // try { |
| | | // const response = await request.post('/glassStorage/rawGlassStorageDetails/patternUsage?width=' + ptnusage.value.width + '&height=' + ptnusage.value.height + '&thickness=' + ptnusage.value.thickness + '&films=' + ptnusage.value.films); |
| | | // if (response.code == 200) { |
| | | // ElMessage.success(response.message); |
| | | // tableDatad.value = response.data; |
| | | // } else { |
| | | // ElMessage.error(response.message); |
| | | // } |
| | | // } |
| | | // catch (error) { |
| | | // console.error(error); |
| | | // } |
| | | // } |
| | | |
| | | |
| | | // 点击下方弹窗 |
| | | const handlehistorical = (row) => { |
| | | blindb.value = true; |
| | |
| | | boxStart(); |
| | | boxStart2(); |
| | | boxStart3(); |
| | | boxStart4(); |
| | | requestAnimationFrame(animate); |
| | | socket = initializeWebSocket(socketUrl, handleMessage); |
| | | socket1 = initializeWebSocket(socketUrl1, handleMessage1); |
| | | socket2 = initializeWebSocket(socketUrl2, handleMessage2); |
| | | socket3 = initializeWebSocket(socketUrl3, handleMessage3); |
| | | socket4 = initializeWebSocket(socketUrl4, handleMessage4); |
| | | const endTime = dayjs().startOf('minute'); // 当前时间,精确到分钟 |
| | | const startTime = endTime.subtract(1, 'day').startOf('minute'); // 当前时间的前一天,精确到分钟 |
| | | // 设置时间范围为 [开始时间, 结束时间] |
| | |
| | | closeWebSocket(socket); |
| | | closeWebSocket(socket1); |
| | | closeWebSocket(socket2); |
| | | closeWebSocket(socket3); |
| | | closeWebSocket(socket4); |
| | | } |
| | | }); |
| | | onBeforeUnmount(() => { |
| | | console.log("关闭了") |
| | | closeWebSocket(); |
| | | }); |
| | | |
| | | const numBoxes = ref(5); |
| | | const numBoxes2 = ref(5); |
| | | const numBoxes3 = ref(5); // 可动态修改的 div 数量 |
| | | const numBoxes3 = ref(5); |
| | | const numBoxes4 = ref(1); |
| | | const speed = 0.1; |
| | | const maxX = 200; // 终点X坐标 |
| | | const maxY = -80; // 终点Y坐标 |
| | | const maxY = -73; // 终点Y坐标 |
| | | const maxX2 = 250; // 终点X坐标 |
| | | const maxY2 = -165; // 终点Y坐标 |
| | | const maxX3 = 100; // 终点X坐标 |
| | | const maxY3 = -55; // 终点Y坐标 |
| | | const maxY3 = -75; // 终点Y坐标 |
| | | const maxX4 = 60; // 终点X坐标 |
| | | const maxY4 = 0; // 终点Y坐标 |
| | | const delayFrames = 600; // 每个 div 的延迟帧数 |
| | | |
| | | const boxes = ref([]); |
| | | const boxes2 = ref([]); |
| | | const boxes3 = ref([]); |
| | | const boxes4 = ref([]); |
| | | |
| | | // 初始化 div 数据 |
| | | const boxStart = () => { |
| | | boxes.value = []; |
| | |
| | | }); |
| | | } |
| | | } |
| | | |
| | | const boxStart3 = () => { |
| | | boxes3.value = []; |
| | | for (let i = 0; i < numBoxes3.value; i++) { |
| | |
| | | }); |
| | | } |
| | | } |
| | | |
| | | const boxStart4 = () => { |
| | | boxes4.value = []; |
| | | for (let i = 0; i < numBoxes4.value; i++) { |
| | | boxes4.value.push({ |
| | | x: 0, |
| | | y: 0, // 初始位置在底部 |
| | | direction: 'right', |
| | | delay: i * delayFrames, |
| | | style: { |
| | | width: '15px', |
| | | height: '15px', |
| | | backgroundColor: i % 2 === 0 ? '#911005' : 'blue', |
| | | position: 'absolute', |
| | | transform: `translate(0px, 0px)` |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | |
| | | |
| | | const animate = () => { |
| | | boxes.value.forEach((box) => { |
| | | if (box.delay > 0) { |
| | | box.delay--; |
| | | return; |
| | | } |
| | | |
| | | if (box.direction === 'up') { |
| | | box.y -= speed; |
| | | if (box.y <= maxY) { |
| | |
| | | box.direction = 'up'; |
| | | } |
| | | } |
| | | |
| | | box.style = { |
| | | ...box.style, |
| | | transform: `translate(${box.x}px, ${box.y}px)` |
| | | }; |
| | | }); |
| | | |
| | | boxes2.value.forEach((box) => { |
| | | if (box.delay > 0) { |
| | | box.delay--; |
| | | return; |
| | | } |
| | | |
| | | if (box.direction === 'up') { |
| | | box.y -= speed; |
| | | if (box.y <= maxY2) { |
| | |
| | | transform: `translate(${box.x}px, ${box.y}px)` |
| | | }; |
| | | }); |
| | | |
| | | boxes3.value.forEach((box) => { |
| | | if (box.delay > 0) { |
| | | box.delay--; |
| | | return; |
| | | } |
| | | |
| | | if (box.direction === 'up') { |
| | | box.y -= speed; |
| | | if (box.y <= maxY3) { |
| | |
| | | transform: `translate(${box.x}px, ${box.y}px)` |
| | | }; |
| | | }); |
| | | |
| | | boxes4.value.forEach((box) => { |
| | | if (box.delay > 0) { |
| | | box.delay--; |
| | | return; |
| | | } |
| | | |
| | | if (box.direction === 'right') { |
| | | box.x += speed; |
| | | if (box.x >= maxX4) { |
| | | // box.y = 0; // 确保不会超出界限 |
| | | box.x = 0; |
| | | box.y = 0; // 重新回到底部 |
| | | } |
| | | } |
| | | box.style = { |
| | | ...box.style, |
| | | transform: `translate(${box.x}px, ${box.y}px)` |
| | | }; |
| | | }); |
| | | |
| | | requestAnimationFrame(animate); |
| | | }; |
| | | |
| | | </script> |
| | | <template> |
| | | <div style="height: 500px;"> |
| | | |
| | | <div class="awatch"> |
| | | <div class="img-screen" alt="Screen"> |
| | | <!-- 钢化色块 --> |
| | |
| | | <div v-for="(item,index) in rawGlassStorageDetailList.slice(28,29)" :key="index" :style='"width: "+(item.remainQuantity / 5)+"px;height: 5px;background-color: #911005;"'></div> |
| | | </div> |
| | | <!-- 磨边色块 --> |
| | | <div class="container" style="position: relative;width: 20px;height: 20px;top: 572px;left: 645px;border: 1px solid #000;position: absolute;"> |
| | | <div class="container" style="position: relative;width: 20px;height: 20px;top: 572px;left: 648px;border: 1px solid #000;position: absolute;"> |
| | | <div v-for="(box, index) in boxes" :key="index" class="box" :style="box.style"></div> |
| | | </div> |
| | | <div class="container" style="position: relative;width: 20px;height: 20px;top: 625px;left: 700px;border: 1px solid #000;position: absolute;"> |
| | | <div v-for="(box, index) in boxes2" :key="index" class="box1" :style="box.style"></div> |
| | | <div v-for="(box, index) in boxes2" :key="index" class="box" :style="box.style"></div> |
| | | </div> |
| | | <!-- 钢化运动色块 --> |
| | | <div class="container" style="position: relative;width: 20px;height: 20px;top: 438px;left: 196px;border: 1px solid #000;position: absolute;"> |
| | | <div v-for="(box, index) in boxes3" :key="index" class="box1" :style="box.style"></div> |
| | | <div v-for="(box, index) in boxes3" :key="index" class="box" :style="box.style"></div> |
| | | </div> |
| | | <!-- <div class="raw" style="width: 31px;height: 32px;top: 571px;left: 300px;position: absolute;background-color: #911005;"> |
| | | <div v-for="(item,index) in rawGlassStorageDetailList.slice(0,7)" :key="index" :style='"width: "+item.remainQuantity+"px;height: 5px;background-color: #911005;"'></div> |
| | | </div> --> |
| | | <div class="container" style="position: relative;width: 20px;height: 20px;top: 355px;left: 496px;border: 1px solid #000;position: absolute;"> |
| | | <div v-for="(box, index) in boxes4" :key="index" class="box" :style="box.style"></div> |
| | | </div> |
| | | <!-- 钢化前大理片色块 --> |
| | | <div class="container" v-for="(item,index) in bigStorageCageUsage.slice(0,1)" :key="index" :style='"position: relative;width: "+(38*item.percentage/100)+"px;height: 13px;top: 447px;left: 314px;position: absolute;background-color: #911005;"'></div> |
| | | <div class="container" v-for="(item,index) in bigStorageCageUsage.slice(1,2)" :key="index" :style='"position: relative;width: "+(38*item.percentage/100)+"px;height: 13px;top: 463px;left: 314px;position: absolute;background-color: #911005;"'></div> |
| | | <div class="container" v-for="(item,index) in bigStorageCageUsage.slice(2,3)" :key="index" :style='"position: relative;width: "+(38*item.percentage/100)+"px;height: 13px;top: 478px;left: 314px;position: absolute;background-color: #911005;"'></div> |
| | | <div class="container" v-for="(item,index) in bigStorageCageUsage.slice(3,4)" :key="index" :style='"position: relative;width: "+(38*item.percentage/100)+"px;height: 13px;top: 493px;left: 314px;position: absolute;background-color: #911005;"'></div> |
| | | <!-- 中空前大理片色块 --> |
| | | <div class="container" v-for="(item,index) in hollowBigStorageCageUsage.slice(0,1)" :key="index" :style='"position: relative;width: "+(38*item.percentage/100)+"px;height: 13px;top: 337px;left: 671px;position: absolute;background-color: #911005;"'></div> |
| | | <div class="container" v-for="(item,index) in hollowBigStorageCageUsage.slice(1,2)" :key="index" :style='"position: relative;width: "+(38*item.percentage/100)+"px;height: 13px;top: 353px;left: 671px;position: absolute;background-color: #911005;"'></div> |
| | | <div class="container" v-for="(item,index) in hollowBigStorageCageUsage.slice(2,3)" :key="index" :style='"position: relative;width: "+(38*item.percentage/100)+"px;height: 13px;top: 369px;left: 671px;position: absolute;background-color: #911005;"'></div> |
| | | <div class="container" v-for="(item,index) in hollowBigStorageCageUsage.slice(3,4)" :key="index" :style='"position: relative;width: "+(38*item.percentage/100)+"px;height: 13px;top: 385px;left: 671px;position: absolute;background-color: #911005;"'></div> |
| | | <div class="container" v-for="(item,index) in hollowBigStorageCageUsage.slice(4,5)" :key="index" :style='"position: relative;width: "+(38*item.percentage/100)+"px;height: 13px;top: 401px;left: 671px;position: absolute;background-color: #911005;"'></div> |
| | | </div> |
| | | <div class="clickable-area" @click="handlehistorical" |
| | | style="position: relative;width: 110px;height: 140px;top: 603px;left: 297px;"></div> |
| | |
| | | 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; |
| | |
| | | background-color: #337ecc; |
| | | margin-left: 28%; |
| | | } |
| | | |
| | | #awatch { |
| | | height: 460px; |
| | | } |
| | | |
| | | .img-screen { |
| | | max-width: 48%; |
| | | max-height: 100%; |
| | |
| | | height: 0; |
| | | padding-bottom: 50%; */ |
| | | } |
| | | |
| | | .clickable-area { |
| | | cursor: pointer; |
| | | /* 指示这是一个可点击的区域 */ |
| | |
| | | line-height: 95px; |
| | | /* 如果需要,使文本垂直居中 */ |
| | | } |
| | | |
| | | /* .awatch{ |
| | | height: 460px; |
| | | /* max-width: 100%; */ |
| | | |
| | | .box { |
| | | transition: transform 0.016s linear; |
| | | } |