From 2788c8a335f0f59da333aee18d5dd52507c195ab Mon Sep 17 00:00:00 2001 From: xiangxy Date: Thu, 19 Mar 2026 10:32:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/images/item-icon.png | Bin 0 -> 32615 bytes src/pages/XghyScreen.vue | 587 +++++++++++++++++++++----------- 2 files changed, 383 insertions(+), 204 deletions(-) create mode 100644 src/assets/images/item-icon.png diff --git a/src/assets/images/item-icon.png b/src/assets/images/item-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4d3f718ed430caec55294c30f58340602cf57f14 GIT binary patch literal 32615 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
CdS#bR^PJ8(y>y0p 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

hS$NV<1G8Jh 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

-
设备实时状态
+
焊材库存占比
-
110
+
110
-
设备总数
+
总数
@@ -26,6 +26,7 @@
{{e.qty}} + {{e.bfb}}
@@ -34,69 +35,31 @@
设备管理
-
-
-
弯头工段
-
-

OEE:

-

45.8%

+
+
+
+
123
+
+
合格
-
-

MIBF:

-

173h

+
+
123
+
+
合格
-
-

MTTR:

-

6h

-
-
-

报警:

-

4次

-
-
-
-
综合工段
-
-

OEE:

-

45.8%

-
-
-

MIBF:

-

173h

-
-
-

MTTR:

-

6h

-
-
-

报警:

-

4次

-
-
-
-
成品工段
-
-

OEE:

-

45.8%

-
-
-

MIBF:

-

173h

-
-
-

MTTR:

-

6h

-
-
-

报警:

-

4次

+
+
123
+
+
合格
+
焊条1保质期剩余2天!
+
焊丝2保质期剩余1天!
-
设备产能利用
+
库位总览
@@ -110,15 +73,56 @@
AGV监控
-
-
+
+
+ +
+ +
+ + +
+ +
+ + + {{ device.name }} + {{ device.status }} + +
+ + +
+
+ 当前任务: + {{ device.currentTask }} +
+
+ 剩余电量: + {{ device.battery }}% +
+
+ + +
+
+ 已完成任务: + {{ device.completedTasks }} +
+
+ 剩余任务数: + {{ device.remainingTasks }} +
+
+
+
温湿度监控
-
+
@@ -189,29 +193,57 @@ export default { data () { return { ddddcolor: '#f00', + devices: [ + { + name: 'CTU01', + status: '正常', + currentTask: 'L1-01-02 → c201', + battery: 80, + completedTasks: 12, + remainingTasks: 6 + }, + { + name: 'AGV01', + status: '正常', + currentTask: 'L1-01-02 → c201', + battery: 40, + completedTasks: 12, + remainingTasks: 6 + } + ], arrR01: [ { color: '#2D7CEB', - name: '正常运行', - qty: '10' + name: '物料1', + qty: '10', + bfb: '10%' }, { color: '#07E083', - name: '暂未生产', - qty: '20' + name: '物料2', + qty: '20', + bfb: '20%' }, { color: '#00D5FF', - name: '空闲设备', - qty: '30' + name: '物料3', + qty: '30', + bfb: '30%' }, { color: '#CC6060', - name: '故障设备', - qty: '40' + name: '物料4', + qty: '20', + bfb: '20%' + }, + { + color: '#ffcc00', + name: '物料5', + qty: '20', + bfb: '20%' } ], - data01: [{value: 500, name: '正常运行'}, {value: 300, name: '暂未生产'}, {value: 200, name: '空闲设备'}, {value: 100, name: '故障设备'}], + data01: [{value: 10, name: '物料1'}, {value: 20, name: '物料2'}, {value: 30, name: '物料3'}, {value: 20, name: '物料4'}, {value: 20, name: '物料5'}], chartData1: [ { total_quantity: '31', @@ -335,7 +367,7 @@ export default { // this.setEchart10() // 右3 this.setEchart01() // 左1 this.setEchart02() // 左3 - this.setEchart03() + // this.setEchart03() this.setEchart04() this.setEchart05() }, @@ -346,6 +378,12 @@ export default { let fontSize = clientWidth * res / 1920 return fontSize }, + // 根据电量百分比返回进度条颜色 + getBatteryColor(level) { + if (level <= 20) return '#e74c3c' // 低电量红色 + if (level <= 50) return '#f39c12' // 中等电量橙色 + return '#2ecc71' // 高电量绿色 + }, setEchart08 () { // var myColor = ['#81E7ED'] // 内柱状图颜色 var dataLine = [5, 66, 33, 25, 10] @@ -526,7 +564,7 @@ export default { // fontSize: '16' // } // }, - color: ['#0966E8', '#07E083', '#00D5FF', '#CC6060'], + color: ['#0966E8', '#07E083', '#00D5FF', '#CC6060', '#ffcc00'], series: [ { type: 'pie', @@ -1068,151 +1106,85 @@ export default { }) }, setEchart02 () { - // 左3 - let total = [] - let names = [] - let max = 0 - this.chartData1.map(el => { - total.push(el.total_quantity) - names.push(el.material_name) - max = Math.max(max, Number(el.total_quantity)) - }) - let option = { - grid: { - top: 30, - left: 0, - right: 0, - bottom: 0, - borderColor: '#ffffff', - containLabel: true + const data = [ + { value: 100, name: '空料箱' }, + { value: 32, name: '锁定' }, + { value: 180, name: '满料箱' } + ] + const total = data.reduce((sum, item) => sum + item.value, 0) + + const option = { + // backgroundColor: '#1a1a1a', + tooltip: { + trigger: 'item', + formatter: '{b}: {c} ({d}%)', + backgroundColor: 'rgba(0,0,0,0.7)', + borderColor: '#333', + textStyle: { color: '#fff' } }, - // legend: { - // top: 0, - // right: 0, - // textStyle: { - // color: '#ffffff', - // fontSize: 12, - // lineHeight: 20 - // }, - // itemGap: 20, - // itemHeight: 8, - // data: ['总库存'] - // }, - xAxis: { - type: 'category', - axisTick: { - show: false - }, - axisLine: { - lineStyle: { - color: '#8FABBF ', - fontSize: 14, - lineHeight: 14 - } - }, - axisLabel: { - color: '#8FABBF ', - rotate: 50 - }, - // data: names - data: names.length >= 7 ? names.slice(0, 7) : names - }, - yAxis: { - axisTick: { - show: false - }, - axisLine: { - lineStyle: { - color: '#909399' - } - }, - // axisLabel: { - // color: '#909399' - // }, - axisLabel: { - formatter: '{value} %', - textStyle: { - color: '#8FABBF', - fontSize: 14 - } - }, - splitLine: { - show: false, - lineStyle: { - type: [8, 4], - dashOffset: 4, - color: '#8FABBF', - opacity: 0.2 - } - }, - max: max + legend: { + show: false, + orient: 'horizontal', + left: 'center', + top: 0, + data: ['空料箱', '锁定', '满料箱'], + textStyle: { color: '#fff' }, + itemWidth: 20, + itemHeight: 14 }, series: [ { - type: 'bar', - barWidth: 8, - itemStyle: { - normal: { - show: true, - color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [ - { - offset: 0, - color: '#0E90FD' - }, - { - offset: 1, - color: '#607080' - } - ]), - borderWidth: 0 - } - }, - // data: [100, 51, 90, 41, 91, 61, 51] - // data: total, - data: total.length >= 7 ? total.slice(0, 7) : total, + name: '料箱', + type: 'pie', + radius: ['40%', '70%'], + center: ['50%', '50%'], + data: data, label: { show: true, - position: 'top', - // distance: 5, - // fontSize: 12, - textStyle: { - color: '#8FABBF', - fontSize: 14 + position: 'outside', + color: '#fff', + formatter: function (params) { + return params.name + ': ' + params.value + '\n(' + params.percent.toFixed(0) + '%)' }, - formatter: function (data) { - return data.value + '%' + lineHeight: 20 + }, + labelLine: { + length: 15, + length2: 15, + smooth: true, + lineStyle: { color: '#fff' } + }, + emphasis: { + itemStyle: { + shadowBlur: 10, + shadowOffsetX: 0, + shadowColor: 'rgba(255,255,255,0.5)' } - } + }, + avoidLabelOverlap: true + } + ], + graphic: [ + { + type: 'text', + left: 'center', + top: 'middle', + style: { + text: total + '\n总数', // 两行显示:数字在上,文字在下 + fill: '#fff', + fontSize: 16, + fontWeight: 'bold', + textAlign: 'center', // 水平居中 + textVerticalAlign: 'middle', // 垂直居中(整个文本块中心与定位点重合) + lineHeight: 28 // 控制行间距,使两行紧凑且整体居中 + }, + z: 100 } ] } let echart = document.getElementById('echart_d02') this.myCharts02 = this.$echarts.init(echart) this.myCharts02.setOption(option) - if (names.length > 7) { - let t = 1 - let stotal = total.slice(0, 7) - let snames = names.slice(0, 7) - this.timer2 = setInterval(() => { - stotal.shift() - stotal.push(total[t + 6]) - snames.shift() - snames.push(names[t + 6]) - this.myCharts02.setOption({ - xAxis: { - data: snames - }, - series: [ - {data: stotal} - ] - }) - if (t + 7 < names.length) { - t++ - } else { - t = -6 - } - }, 2000) - } }, setEchart10 () { // 右3 @@ -1402,11 +1374,53 @@ export default { letter-spacing .02rem text-shadow 0 0 .09rem #159AFF padding-left .38rem +.item_content_ss + // _wh(100%, calc(100% - .32rem)) + // _fj(space-around) + padding-top .17rem .item_content_0 width 2.2rem height 2.2rem // _fj(space-around) // padding .17rem 0 .24rem +.item_content_aa + _wh(100%, calc(100% - .32rem)) + // _fj(space-around) + padding-top .17rem + background-color #000219 +.congroup + display flex + // flex 1 + text-align center + // width 33.3% + margin-bottom .2rem +.acon + width calc(100% / 3) +.acon-num + font-size .24rem + height 50px + line-height 50px +.acon-icon + // width 120px + width 100% + height 80px + background center center / 100% 100% url(../assets/images/item-icon.png) no-repeat +.acon-label + font-size .26rem + height 50px + line-height 50px +.tips-ht + color #f00 + width 50% + height .36rem + line-height .36rem + // display inline-block + padding .1rem 0 0 .3rem + float left +.item_content_04 + _wh(100%, calc(100% - .32rem)) + _fj(space-around) + padding-top .17rem .item_content_1 _wh(100%, calc(100% - .32rem)) _fj(space-around) @@ -1448,8 +1462,9 @@ export default { margin-bottom .26rem background center bottom / 100% 100% url(../assets/images/screen1/xghy-bg.jpg) no-repeat .inlblock - display inline-block + // display inline-block margin-right 0.08rem + float: left; .item_content_2 _wh(100%, calc(100% - .32rem)) margin-top .06rem @@ -1673,4 +1688,168 @@ export default { text-align center .cred color #CC6060 + +/* 监控模块容器 — 两张卡片并排 */ +.monitor-module { + width: 100%; + max-width: 1060px; /* 适应两张500px卡片+间隙 */ + display: flex; + flex-wrap: wrap; + gap: 24px; + justify-content: center; +} + +/* 设备卡片 — 宽度500px,保证所有内容完整显示且不换行 */ +.device-card { + flex: 0 1 500px; /* 基础500px,可收缩但有限 */ + min-width: 480px; /* 最小480px,确保内部不换行 */ + background: rgba(18, 28, 40, 0.8); + backdrop-filter: blur(4px); + -webkit-backdrop-filter: blur(4px); + border: 1px solid rgba(64, 128, 255, 0.25); + border-radius: 24px; + padding: 11px 12px 11px 10px; + display: flex; + gap: 22px; + box-shadow: 0 12px 32px -10px rgba(0, 0, 0, 0.9), 0 0 0 1px rgba(78, 159, 255, 0.15) inset; + transition: all 0.2s ease; + position: relative; + overflow: hidden; +} + +// .device-card:hover { +// border-color: rgba(78, 159, 255, 0.5); +// box-shadow: 0 18px 40px -12px rgba(0, 160, 255, 0.4); +// } + +/* 顶部光晕线条 */ +.device-card::after { + content: ''; + position: absolute; + top: 0; + left: 10%; + width: 80%; + height: 2px; + background: linear-gradient(90deg, transparent, #3f9eff, #6ec8ff, transparent); + border-radius: 100%; + opacity: 0.4; +} + +/* 左侧网络图标 — 90x90,与三行明细高度协调 */ +.device-icon { + width: 90px; + height: 90px; + background: rgba(0, 45, 85, 0.8); + border-radius: 22px; + display: flex; + align-items: center; + justify-content: center; + border: 1px solid rgba(0, 200, 255, 0.4); + box-shadow: 0 0 20px rgba(0, 180, 255, 0.3); + color: #8cd4ff; + font-size: 48px; + flex-shrink: 0; + align-self: center; +} + +/* 右侧详细信息容器 */ +.device-details { + flex: 1; + display: flex; + flex-direction: column; + gap: 16px; + justify-content: center; +} + +/* 占位列(用于第一行缩进)— 宽度改为95px,与标签一致 */ +.label-placeholder { + width: 95px; /* 从80px改为95px */ + flex-shrink: 0; + opacity: 0; + pointer-events: none; +} + +/* 第一行:设备名 + 状态 */ +.device-name-status { + display: flex; + align-items: center; + gap: 12px; + flex-wrap: wrap; +} + +.device-name { + font-size: 22px; + font-weight: 700; + color: white; + letter-spacing: 1px; + text-shadow: 0 0 8px rgba(0, 160, 255, 0.6); +} + +.status-badge { + display: inline-block; + background: rgba(46, 204, 113, 0.2); + border: 1px solid rgba(46, 204, 113, 0.6); + color: #c0ffe0; + font-size: 14px; + font-weight: 600; + padding: 4px 14px; + border-radius: 30px; + backdrop-filter: blur(2px); + box-shadow: 0 0 10px rgba(46, 204, 113, 0.3); +} + +/* 分割行:左右两部分 — 强制不换行 */ +.split-row { + display: flex; + justify-content: space-between; + align-items: center; + gap: 16px; + flex-wrap: nowrap; /* 强制一行,永不换行 */ +} + +/* 每个信息项 */ +.info-item { + display: flex; + align-items: center; + // flex: 1; + min-width: 0; /* 允许收缩,但内容强制不换行 */ +} + +/* 标签统一宽度95px */ +.info-item .item-label { + width: 80px; /* 从80px改为95px */ + color: #9bb5d9; + font-weight: 400; + font-size: 14px; + letter-spacing: 0.3px; + flex-shrink: 0; +} + +/* 值区域 — 强制不换行,溢出可见(卡片宽度已保证完整显示) */ +.info-item .item-value { + // flex: 1; + color: #f0f6ff; + font-weight: 500; + font-size: 14px; + white-space: nowrap; + overflow: visible; +} + +/* 剩余电量值微暖色 */ +.battery-text { + font-weight: 600; + color: #ffecb3; +} + +/* 极小屏适配,但仍保持一行 */ +@media (max-width: 800px) { + .device-card { + flex: 0 1 100%; + min-width: 360px; + } + .device-details { + gap: 12px; + } + /* 仍保持 .split-row 的 nowrap */ +}