diff --git a/src/api/screen/micro.js b/src/api/screen/micro.js new file mode 100644 index 0000000..1b42216 --- /dev/null +++ b/src/api/screen/micro.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询设备列表 +export function listDevice() { + return request({ + url: '/mf/device', + method: 'get', + }) +} + +// 查询设备能耗排行 +export function listElect(type) { + return request({ + url: '/mf/elect?type=' + type, + method: 'get', + }) +} + +// 查询设备用电监测 +export function electMonitoring() { + return request({ + url: '/mf/electMonitoring', + method: 'get', + }) +} + +// 查询设备状态 +export function deviceStatus() { + return request({ + url: '/mf/deviceStatus', + method: 'get', + }) +} + +// 设备利用率 +export function deviceRate() { + return request({ + url: '/mf/deviceRate', + method: 'get', + }) +} + + + diff --git a/src/router/index.js b/src/router/index.js index 92d4927..82ae054 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -84,9 +84,9 @@ export const constantRoutes = [ hidden: true }, { - path: "/screen/test", - name: "MicroFactorytest", - component: () => import("../views/screen/main/index.vue"), + path: "/screen/devItem", + name: "devItem", + component: () => import("../views/screen/devItem/index.vue"), hidden: true }, ] diff --git a/src/views/device/updateRecord/index.vue b/src/views/device/updateRecord/index.vue index f529eb1..3acbf7f 100644 --- a/src/views/device/updateRecord/index.vue +++ b/src/views/device/updateRecord/index.vue @@ -29,10 +29,10 @@ 删除 - + diff --git a/src/views/screen/devItem/component/card.vue b/src/views/screen/devItem/component/card.vue new file mode 100644 index 0000000..a3aa781 --- /dev/null +++ b/src/views/screen/devItem/component/card.vue @@ -0,0 +1,42 @@ + + + + + + \ No newline at end of file diff --git a/src/views/screen/devItem/component/stackBarChart.vue b/src/views/screen/devItem/component/stackBarChart.vue new file mode 100644 index 0000000..141f2be --- /dev/null +++ b/src/views/screen/devItem/component/stackBarChart.vue @@ -0,0 +1,109 @@ + + + + + \ No newline at end of file diff --git a/src/views/screen/devItem/image/center-bg.png b/src/views/screen/devItem/image/center-bg.png new file mode 100644 index 0000000..484998b Binary files /dev/null and b/src/views/screen/devItem/image/center-bg.png differ diff --git a/src/views/screen/devItem/image/u17.png b/src/views/screen/devItem/image/u17.png new file mode 100644 index 0000000..1fedb5a Binary files /dev/null and b/src/views/screen/devItem/image/u17.png differ diff --git a/src/views/screen/devItem/index.vue b/src/views/screen/devItem/index.vue new file mode 100644 index 0000000..b8267c0 --- /dev/null +++ b/src/views/screen/devItem/index.vue @@ -0,0 +1,244 @@ + + + + + diff --git a/src/views/screen/main/index.vue b/src/views/screen/main/index.vue deleted file mode 100644 index 369c9b4..0000000 --- a/src/views/screen/main/index.vue +++ /dev/null @@ -1,304 +0,0 @@ - - - - - diff --git a/src/views/screen/microFactory/component/card.vue b/src/views/screen/microFactory/component/card.vue index 2213ff4..a3aa781 100644 --- a/src/views/screen/microFactory/component/card.vue +++ b/src/views/screen/microFactory/component/card.vue @@ -26,7 +26,7 @@ width: 100%; height: 53px; background: url('../image/u17.png') no-repeat; - background-size: 100% 100%; + background-size: auto 100%; box-sizing: border-box; padding-left: 32px; font-size: 20px; diff --git a/src/views/screen/microFactory/component/lineChart.vue b/src/views/screen/microFactory/component/lineChart.vue index aab1b5a..175f78d 100644 --- a/src/views/screen/microFactory/component/lineChart.vue +++ b/src/views/screen/microFactory/component/lineChart.vue @@ -39,16 +39,19 @@ const options = computed(() => { extraCssText: 'border-radius: 8px; box-shadow: 0 0 15px rgba(0, 0, 0, 0.5);' }, backgroundColor: 'transparent', - legend: { - data: ['上月', '本月'], - right: 'left', - textStyle: { - color: '#ffff' - } + // legend: { + // data: ['上月', '本月'], + // right: 'left', + // textStyle: { + // color: '#ffff' + // } + // }, + grid: { + left: '10%', }, xAxis: { type: 'category', - data: ['W01', 'W02', 'W03', 'W04', 'W05', 'W06', 'W07'], + data: prop.data.xAxis, axisLabel: { color: "#ffffff", }, @@ -71,8 +74,8 @@ const options = computed(() => { }, }, series: [{ - name: '上月', - data: [20, 90, 60, 80, 85, 50, 70], + name: '利用率', + data: prop.data.series, type: 'line', smooth: true, itemStyle: { @@ -97,40 +100,7 @@ const options = computed(() => { }] } } - }, { - name: '本月', - data: [50, 60, 10, 60, 50, 80, 90], - type: 'line', - smooth: true, - itemStyle: { - color: '#48858e', - }, - lineStyle: { - width: 2, - }, - areaStyle: { - color: { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, - color: 'rgb(72 ,133 ,142 ,0.6)' - }, { - offset: 1, - color: 'rgb(72 ,133 ,142 ,0.2)' - }] - } - } - }], - grid: { - left: '8%', - right: '2%', - top: '10%', - bottom: '12%' - } + }] } }); diff --git a/src/views/screen/microFactory/component/powerMonitoring.vue b/src/views/screen/microFactory/component/powerMonitoring.vue index 4b421f3..060617c 100644 --- a/src/views/screen/microFactory/component/powerMonitoring.vue +++ b/src/views/screen/microFactory/component/powerMonitoring.vue @@ -23,7 +23,7 @@ const options = computed(() => { type: "gauge", z: 3, min: 0, - max: 180, + max: 380, radius: "85%", axisLine: { lineStyle: { diff --git a/src/views/screen/microFactory/component/sortBarChart.vue b/src/views/screen/microFactory/component/sortBarChart.vue index 62c00ca..f8bdfc7 100644 --- a/src/views/screen/microFactory/component/sortBarChart.vue +++ b/src/views/screen/microFactory/component/sortBarChart.vue @@ -57,11 +57,6 @@ function drawChart(elementId) { // trigger: 'item' // }, tooltip: { - trigger: 'axis', - axisPointer: { - type: 'shadow' - }, - valueFormatter: (value) => value + ' kW·h' }, toolbox: { @@ -102,7 +97,7 @@ function drawChart(elementId) { inverse: true, axisLabel: { color: '#fff', - fontSize: 16, + fontSize: 13, } }, series: [ @@ -145,7 +140,7 @@ function drawChart(elementId) { top: 50%; left: 50%; width: 65%; - height: 65%; + height: 95%; z-index: 999; transform: translate(-50%, -50%); background-color: rgba(18, 27, 38, 0.9137254901960784); diff --git a/src/views/screen/microFactory/index.vue b/src/views/screen/microFactory/index.vue index 129a06b..0231027 100644 --- a/src/views/screen/microFactory/index.vue +++ b/src/views/screen/microFactory/index.vue @@ -32,8 +32,8 @@
- - 当天 + + 当天 累计
@@ -41,11 +41,12 @@
-
+
-
{{ item.on }}
-
{{ item.all }}
-
{{ item.label }}
+
{{ item.work }}
+
{{ item.total }}
+
+
{{ item.name }}
@@ -59,14 +60,14 @@
工作数量
停机数量
待机数量
-
设备类型
+
设备总数
-
31台
-
11台
-
21台
-
71种
+
{{devStatus.work}}台
+
{{devStatus.stop}}台
+
{{devStatus.wait}}台
+
{{devStatus.total}}台
@@ -88,7 +89,7 @@
- + @@ -120,21 +121,22 @@ import u156 from './image/u156.png' import u157 from './image/u157.png' import u158 from './image/u158.png' import 'element-plus/theme-chalk/dark/css-vars.css' +import { listDevice, listElect, electMonitoring,deviceStatus,deviceRate } from '@/api/screen/micro' -let radio_bar = ref('single') +let radio_bar = ref('d') let scrollBoardConfig = reactive({ header: [ - '
设备名称
', '
编码
', - '
能耗
', + '
设备名称
', '
运行时长
', + '
设备利用率
', '
状态
'],//, '故障率' headerBGC: 'transparent', oddRowBGC: 'transparent', evenRowBGC: 'transparent', rowNum: 10, - columnWidth: [260, 160, 180, 180, 180, 180], + columnWidth: [180, 280, 180, 180, 120, 120], align: ['center', 'center', 'center', 'center', 'center', 'center'], data: [], rawData: [] @@ -151,23 +153,104 @@ let remindConfig = reactive({ oddRowBGC: 'transparent', evenRowBGC: 'transparent', rowNum: 6, - columnWidth: [160, 260, 180, 180, 180, 240], + columnWidth: [300, 120, 180, 180, 180, 100], align: ['center', 'center', 'center', 'center', 'center', 'center'], data: [], rawData: [] }) -let scrollBoardConfig_data = ref([ - ['电子套结机', '123456', '123456', '123456', `
`], - ['电子套结机', '123456', '123456', '123456', '123456'], - ['电子套结机', '123456', '123456', '123456', '123456'], - ['电子套结机', '123456', '123456', '123456', '123456'], - ['电子套结机', '123456', '123456', '123456', '123456'], - ['电子套结机', '123456', '123456', '123456', '123456'], +let devStatus = reactive({ + "wait": 0, + "total": 0, + "stop": 0, + "rate": 0, + "work": 0, + "devTypes": [ ] +}) + +let devList = ref([]) +let scrollBoardConfig_data = computed(()=>{ + let data = [] + data = devList.value.map(item => { + return [ + item.code, + item.name, + item.runTime + 'min', + item.rate, + status2Img(item.state) + ] + }) + return data +}) + +function status2Img(status) { + let html = `
` + switch (status) { + case 0: + html += `` + break + case 1: + html += `` + break + case 2: + html += `` + break + case 4: + html += `` + break + default: + html += `` + break + } + html += '
' + return html +} + +//获取设备列表 +function getListDevice() { + listDevice().then(res => { + devList.value = res.data + + }) +} + +let sortBarChartData = ref([]) +//获取设备能耗排行 +function getlistElect() { + listElect(radio_bar.value).then(res => { + sortBarChartData.value = res.data.map(item => { + return { + name: item.name, + value: item.electricity + } + }) + }) +} + +//切换能耗排行 +function handleChangeBar() { + getlistElect() +} + + +let powerMonitoring = ref([ + { label: '当天耗电量', value: 8 }, + { label: '本周耗电量', value: 60 }, + { label: '本月耗电量', value: 288 } ]) +//获取用电监测 +function getelectMonitoring() { + electMonitoring().then(res => { + powerMonitoring.value = [ + { label: '当天耗电量', value: res.data.day }, + { label: '本周耗电量', value: res.data.week }, + { label: '本月耗电量', value: res.data.month } + ] + }) +} + let remindData = ref([ ['abc', '模板缝纫机', '上油', '张三', '2025-02-19'], ['acg', '铺布机', '检查', '李四', '2025-02-20'], @@ -175,38 +258,35 @@ let remindData = ref([ ]) -let devTypeList = ref([ - { label: '板房设备', on: 2, all: 6 }, - { label: '裁剪设备', on: 3, all: 8 }, - { label: '模板缝纫设备', on: 4, all: 10 }, - { label: '簇绒设备', on: 5, all: 12 }, - { label: '绣花设备', on: 3, all: 8 }, - { label: '缝纫设备', on: 3, all: 8 }, - { label: '后整设备', on: 3, all: 8 }, -]) -let productionChart = ref() -let powerMonitoring = ref([ - { label: '当天耗电量', value: 8 }, - { label: '本周耗电量', value: 60 }, - { label: '本月耗电量', value: 288 } -]) -let sortBarChartData = ref([]) +//获取设备状态 +function getdeviceStatus() { + deviceStatus().then(res=>{ + devStatus.wait = res.data.wait + devStatus.total = res.data.total + devStatus.stop = res.data.stop + devStatus.rate = res.data.rate + devStatus.work = res.data.work + devStatus.devTypes = res.data.devTypes + }) +} +let rateData = ref() +//设备利用率 +function getdeviceRate() { + deviceRate().then(res => { + rateData.value = { + xAxis: res.data.dates, + series: res.data.rate + } + }) +} onMounted(() => { - sortBarChartData.value = [ - - { name: '缝纫设备1', value: 120 }, - { name: '缝纫设备2', value: 200 }, - { name: '缝纫设备3', value: 150 }, - { name: '缝纫设备4', value: 80 }, - { name: '缝纫设备5', value: 70 }, - { name: '板房设备1', value: 135 }, - { name: '板房设备2', value: 122 }, - { name: '板房设备3', value: 85 }, - { name: '板房设备4', value: 47 }, - { name: '板房设备5', value: 31 }, - ] + getListDevice() + getlistElect() + getelectMonitoring() + getdeviceStatus() + getdeviceRate() }) @@ -331,18 +411,19 @@ onUnmounted(() => { flex-direction: row; justify-content: center; align-items: center; - - &::after { - content: ""; - width: 1px; - height: 54px; - border: #f9f8f4 solid 1px; - position: absolute; - transform: rotate(30deg); - top: 0px; - left: 61px; - } + &::after { + content: ""; + width: 1px; + height: 54px; + border: #f9f8f4 solid 1px; + position: absolute; + transform: rotate(30deg); + top: 0px; + left: 61px; + + } + .on-text { width: 24px; height: 24px; @@ -353,6 +434,7 @@ onUnmounted(() => { text-align: center; line-height: 24px; } + .all-text { width: 24px; height: 24px; @@ -364,6 +446,7 @@ onUnmounted(() => { line-height: 24px; } } + .label { width: 100%; height: 24px; @@ -383,6 +466,7 @@ onUnmounted(() => { display: flex; flex-direction: row; align-items: center; + .yuan { width: 24px; height: 24px; @@ -396,6 +480,7 @@ onUnmounted(() => { .blue { background-color: #21dadb; } + .flag-text { color: #f9f8f4; font-size: 18px;