add:增加看板及报表

This commit is contained in:
zhangzq
2026-03-09 17:25:58 +08:00
parent 5c4ac88b22
commit 8eb4c5889f
6 changed files with 53 additions and 47 deletions

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.biBoard.report.service.dao.mapper.ConsumeReportMapper"> <mapper namespace="org.nl.wms.biBoard.consumptionReport.service.dao.mapper.ConsumeReportMapper">
<!-- 班组焊材消耗报表分页查询 --> <!-- 班组焊材消耗报表分页查询 -->
<select id="queryConsumeReport" resultType="org.nl.wms.biBoard.consumptionReport.dto.ConsumeReportDto"> <select id="queryConsumeReport" resultType="org.nl.wms.biBoard.consumptionReport.dto.ConsumeReportDto">

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.biBoard.iosReport.service.dao.mapper.IosReportMapper"> <mapper namespace="org.nl.wms.biBoard.materialRequisition.service.dao.mapper.IosReportMapper">
<!-- 领料出库及退料入库数据报表分页查询 --> <!-- 领料出库及退料入库数据报表分页查询 -->
<select id="queryIosReport" resultType="org.nl.wms.biBoard.materialRequisition.dto.IosReportDto"> <select id="queryIosReport" resultType="org.nl.wms.biBoard.materialRequisition.dto.IosReportDto">

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

View File

@@ -17,6 +17,12 @@ export const constantRouterMap = [
component: (resolve) => require(['@/views/features/404'], resolve), component: (resolve) => require(['@/views/features/404'], resolve),
hidden: true hidden: true
}, },
{
path: '/screen/fullscreen',
meta: { title: '智慧看板', noCache: true },
component: (resolve) => require(['@/views/wms/biBoard/screen/index'], resolve),
hidden: true
},
{ {
path: '/401', path: '/401',
component: (resolve) => require(['@/views/features/401'], resolve), component: (resolve) => require(['@/views/features/401'], resolve),

View File

@@ -36,12 +36,12 @@
<div class="panel-title">焊材库存占比</div> <div class="panel-title">焊材库存占比</div>
<div class="chart-container"> <div class="chart-container">
<div id="structChart" style="width: 100%; height: 280px;"></div> <div id="structChart" style="width: 100%; height: 280px;" />
</div> </div>
<div class="panel-title">焊材领料Top5</div> <div class="panel-title">焊材领料Top5</div>
<div class="chart-container"> <div class="chart-container">
<div id="materialTop5Chart" style="width: 100%; height: 300px;"></div> <div id="materialTop5Chart" style="width: 100%; height: 300px;" />
</div> </div>
</div> </div>
@@ -76,7 +76,7 @@
<!-- 温湿度监控 --> <!-- 温湿度监控 -->
<div class="temp-monitor"> <div class="temp-monitor">
<div class="monitor-title">温湿度监控</div> <div class="monitor-title">温湿度监控</div>
<div id="tempChart" style="width: 100%; height: 200px;"></div> <div id="tempChart" style="width: 100%; height: 200px;" />
</div> </div>
</div> </div>
</div> </div>
@@ -109,7 +109,7 @@
<div class="panel-title">班组焊材消耗</div> <div class="panel-title">班组焊材消耗</div>
<div class="chart-container"> <div class="chart-container">
<div id="consumeChart" style="width: 100%; height: 250px;"></div> <div id="consumeChart" style="width: 100%; height: 250px;" />
</div> </div>
<div class="panel-title">当日领退明细</div> <div class="panel-title">当日领退明细</div>
@@ -162,32 +162,6 @@ export default {
scrollIndex3: 0 scrollIndex3: 0
} }
}, },
mounted() {
this.updateTime()
this.timer = setInterval(this.updateTime, 1000)
this.loadAllData()
this.dataTimer = setInterval(this.loadAllData, 30000) // 30秒刷新一次
this.startScrolling()
},
beforeDestroy() {
if (this.timer) {
clearInterval(this.timer)
}
if (this.dataTimer) {
clearInterval(this.dataTimer)
}
if (this.scrollTimer1) {
clearInterval(this.scrollTimer1)
}
if (this.scrollTimer2) {
clearInterval(this.scrollTimer2)
}
if (this.scrollTimer3) {
clearInterval(this.scrollTimer3)
}
},
computed: { computed: {
displayIosReportData() { displayIosReportData() {
if (this.iosReportData.length <= 5) { if (this.iosReportData.length <= 5) {
@@ -223,6 +197,32 @@ export default {
return result return result
} }
}, },
mounted() {
this.updateTime()
this.timer = setInterval(this.updateTime, 1000)
this.loadAllData()
this.dataTimer = setInterval(this.loadAllData, 30000) // 30秒刷新一次
this.startScrolling()
},
beforeDestroy() {
if (this.timer) {
clearInterval(this.timer)
}
if (this.dataTimer) {
clearInterval(this.dataTimer)
}
if (this.scrollTimer1) {
clearInterval(this.scrollTimer1)
}
if (this.scrollTimer2) {
clearInterval(this.scrollTimer2)
}
if (this.scrollTimer3) {
clearInterval(this.scrollTimer3)
}
},
methods: { methods: {
updateTime() { updateTime() {
const now = new Date() const now = new Date()
@@ -394,16 +394,16 @@ export default {
radius: ['40%', '70%'], radius: ['40%', '70%'],
center: ['40%', '50%'], center: ['40%', '50%'],
data: [ data: [
{ value: data.hasGoods || 0, name: '有货', itemStyle: { color: '#5470c6' } }, { value: data.hasGoods || 0, name: '有货', itemStyle: { color: '#5470c6' }},
{ value: data.emptyBox || 0, name: '空料箱', itemStyle: { color: '#91cc75' } }, { value: data.emptyBox || 0, name: '空料箱', itemStyle: { color: '#91cc75' }},
{ value: data.noGoods || 0, name: '无货', itemStyle: { color: '#fac858' } } { value: data.noGoods || 0, name: '无货', itemStyle: { color: '#fac858' }}
], ],
label: { label: {
color: '#fff' color: '#fff'
} }
} }
] ]
}; }
chart.setOption(option) chart.setOption(option)
}, },
@@ -428,14 +428,14 @@ export default {
xAxis: { xAxis: {
type: 'category', type: 'category',
data: times, data: times,
axisLine: { lineStyle: { color: '#fff' } }, axisLine: { lineStyle: { color: '#fff' }},
axisLabel: { color: '#fff' } axisLabel: { color: '#fff' }
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
axisLine: { lineStyle: { color: '#fff' } }, axisLine: { lineStyle: { color: '#fff' }},
axisLabel: { color: '#fff' }, axisLabel: { color: '#fff' },
splitLine: { lineStyle: { color: 'rgba(255,255,255,0.1)' } } splitLine: { lineStyle: { color: 'rgba(255,255,255,0.1)' }}
}, },
series: [ series: [
{ {
@@ -477,14 +477,14 @@ export default {
xAxis: { xAxis: {
type: 'category', type: 'category',
data: groups, data: groups,
axisLine: { lineStyle: { color: '#fff' } }, axisLine: { lineStyle: { color: '#fff' }},
axisLabel: { color: '#fff', rotate: 30 } axisLabel: { color: '#fff', rotate: 30 }
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
axisLine: { lineStyle: { color: '#fff' } }, axisLine: { lineStyle: { color: '#fff' }},
axisLabel: { color: '#fff' }, axisLabel: { color: '#fff' },
splitLine: { lineStyle: { color: 'rgba(255,255,255,0.1)' } } splitLine: { lineStyle: { color: 'rgba(255,255,255,0.1)' }}
}, },
series: [ series: [
{ {
@@ -524,14 +524,14 @@ export default {
}, },
xAxis: { xAxis: {
type: 'value', type: 'value',
axisLine: { lineStyle: { color: '#fff' } }, axisLine: { lineStyle: { color: '#fff' }},
axisLabel: { color: '#fff' }, axisLabel: { color: '#fff' },
splitLine: { lineStyle: { color: 'rgba(255,255,255,0.1)' } } splitLine: { lineStyle: { color: 'rgba(255,255,255,0.1)' }}
}, },
yAxis: { yAxis: {
type: 'category', type: 'category',
data: materials, data: materials,
axisLine: { lineStyle: { color: '#fff' } }, axisLine: { lineStyle: { color: '#fff' }},
axisLabel: { color: '#fff' } axisLabel: { color: '#fff' }
}, },
series: [ series: [
@@ -642,7 +642,7 @@ export default {
} }
.center-left { .center-left {
flex: 0 0 50%; flex: 0 0 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 20px; gap: 20px;
@@ -747,7 +747,7 @@ export default {
.agv-icon { .agv-icon {
flex: 0 0 40px; flex: 0 0 40px;
.agv-img { .agv-img {
width: 40px; width: 40px;
height: 25px; height: 25px;