From c635d78b479510ebe2556a420948effcd30a0731 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期六, 21 十二月 2024 18:40:43 +0800 Subject: [PATCH] 新建德森项目分支 --- zy-asrs-admin/src/views/HomeView.vue | 536 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 268 insertions(+), 268 deletions(-) diff --git a/zy-asrs-admin/src/views/HomeView.vue b/zy-asrs-admin/src/views/HomeView.vue index db2e818..dfc37d1 100644 --- a/zy-asrs-admin/src/views/HomeView.vue +++ b/zy-asrs-admin/src/views/HomeView.vue @@ -1,268 +1,268 @@ -<script setup> -import { getCurrentInstance, ref, onMounted, reactive } from 'vue'; -import { get, post } from '@/utils/request.js' -import * as echarts from "echarts"; -const context = getCurrentInstance()?.appContext.config.globalProperties; - -let chartPie = null; -const chartPieContainer = ref(null); -let chartLine = null; -const chartLineContainer = ref(null); - -function getPieOptions() { - post('/api/charts/loc/use', {}).then(resp => { - let result = resp.data; - if (result.code == 200) { - let data = result.data; - - let pieOptions = { - title: { - text: '搴撲綅浣跨敤姣斾緥', - left: 'center', - top: '0%' - }, - tooltip: { - trigger: 'item', - top: '0%' - }, - grid: { - top: '0%', - left: '3%', - right: '4%', - bottom: '3%', - containLabel: true - }, - // legend: { - // orient: 'vertical', - // left: 'left' - // }, - series: [ - { - type: 'pie', - radius: '70%', - data: data, - emphasis: { - itemStyle: { - shadowBlur: 10, - shadowOffsetX: 0, - shadowColor: 'rgba(0, 0, 0, 0.5)' - } - } - } - ] - } - - chartPie.setOption(pieOptions); - - } - }) -} - -function getLineOptions() { - post('/api/charts/loc/line', {}).then(resp => { - let result = resp.data; - if (result.code == 200) { - let data = result.data; - - let lineOptions = { - title: { - text: '鏃ュ嚭鍏ュ簱鏁伴噺', - left: 'center', - }, - tooltip: { - trigger: 'axis' - }, - legend: { - data: ['鍏ュ簱鏁伴噺', '鍑哄簱鏁伴噺'], - top: '10%' - }, - grid: { - top: '20%', - left: '3%', - right: '4%', - bottom: '3%', - containLabel: true - }, - xAxis: { - type: 'category', - boundaryGap: false, - data: data.days - }, - yAxis: { - type: 'value' - }, - series: [ - { - name: '鍏ュ簱鏁伴噺', - type: 'line', - data: data.in.value, - smooth: true - }, - { - name: '鍑哄簱鏁伴噺', - type: 'line', - data: data.out.value, - smooth: true - } - ] - } - - chartLine.setOption(lineOptions); - - } - }) -} - -function initChart() { - chartPie = echarts.init(chartPieContainer.value); - chartPie.setOption({ - type: Object, - required: true - }) - - chartLine = echarts.init(chartLineContainer.value); - chartLine.setOption({ - type: Object, - required: true - }) -} - -const information = reactive({ - inCount: 0, - outCount: 0, - totalCount: 0, - matCount: 0, -}); -function getInformation() { - post('/api/charts/information', {}).then(resp => { - let result = resp.data; - if (result.code == 200) { - let data = result.data; - information.inCount = data.inCount; - information.outCount = data.outCount; - information.totalCount = data.totalCount; - information.matCount = data.matCount; - } - }) -} - -const informationTop = reactive({ - topIn: [], - topOut: [], -}); -function getInformationTop() { - post('/api/charts/information/top', {}).then(resp => { - let result = resp.data; - if (result.code == 200) { - let data = result.data; - informationTop.topIn = data.topIn; - informationTop.topOut = data.topOut; - } - }) -} - -onMounted(() => { - initChart() - getPieOptions() - getLineOptions() - getInformation() - getInformationTop() -}) - -</script> - -<script> -export default { - name: '涓婚〉' -} -</script> - -<template> - <div style="display: flex;"> - <div style="width: 24%;margin-right: 20px;"> - <a-card> - <a-statistic title="浠婃棩鍏ュ嚭搴�" :value="information.totalCount" :value-style="{ color: '#3f8600' }" - style="margin-right: 50px"> - <template #prefix> - <!-- <arrow-up-outlined /> --> - </template> - </a-statistic> - </a-card> - </div> - <div style="width: 24%;margin-right: 20px;"> - <a-card> - <a-statistic title="浠婃棩鍏ュ簱" :value="information.inCount" :value-style="{ color: '#3f8600' }" - style="margin-right: 50px"> - <template #prefix> - <!-- <arrow-up-outlined /> --> - </template> - </a-statistic> - </a-card> - </div> - <div style="width: 24%;margin-right: 20px;"> - <a-card> - <a-statistic title="浠婃棩鍑哄簱" :value="information.outCount" :value-style="{ color: '#3f8600' }" - style="margin-right: 50px"> - <template #prefix> - <!-- <arrow-up-outlined /> --> - </template> - </a-statistic> - </a-card> - </div> - <div style="width: 24%;margin-right: 20px;"> - <a-card> - <a-statistic title="鍟嗗搧鎬绘暟" :value="information.matCount" :value-style="{ color: '#3f8600' }" - style="margin-right: 50px"> - <template #prefix> - <!-- <arrow-up-outlined /> --> - </template> - </a-statistic> - </a-card> - </div> - </div> - <div style="display: flex;margin-top: 20px;"> - <div style="width: 49%;margin-right: 20px;"> - <a-card title="浠婃棩鍏ュ簱Top10"> - <div v-if="informationTop.topIn.length == 0"> - <a-empty /> - </div> - <div v-else v-for="(item, index) in informationTop.topIn" :key="index" - style="display: flex;justify-content: space-between;margin-top: 10px;"> - <div>{{ item.matnr }} - {{ item.maktx }}</div> - <div> - <a-tag v-if="index == 0" color="#87d068">{{ item.count }}</a-tag> - <a-tag v-else color="#2db7f5">{{ item.count }}</a-tag> - </div> - </div> - </a-card> - </div> - <div style="width: 49%;margin-right: 20px;"> - <a-card title="浠婃棩鍑哄簱Top10"> - <div v-if="informationTop.topOut.length == 0"> - <a-empty /> - </div> - <div v-else v-for="(item, index) in informationTop.topOut" :key="index" - style="display: flex;justify-content: space-between;margin-top: 10px;"> - <div>{{ item.matnr }} - {{ item.maktx }}</div> - <div> - <a-tag v-if="index == 0" color="#87d068">{{ item.count }}</a-tag> - <a-tag v-else color="#2db7f5">{{ item.count }}</a-tag> - </div> - </div> - </a-card> - </div> - </div> - <div style="display: flex;margin-top: 20px;"> - <div style="width: 49%;margin-right: 20px;"> - <a-card> - <div ref="chartPieContainer" style="width: 100%;height: 400px;"></div> - </a-card> - </div> - <div style="width: 49%;"> - <a-card> - <div ref="chartLineContainer" style="width: 90%;height: 400px;"></div> - </a-card> - </div> - <!-- <EChartView ref="chartChild2" /> --> - </div> -</template> +<script setup> +import { getCurrentInstance, ref, onMounted, reactive } from 'vue'; +import { get, post } from '@/utils/request.js' +import * as echarts from "echarts"; +const context = getCurrentInstance()?.appContext.config.globalProperties; + +let chartPie = null; +const chartPieContainer = ref(null); +let chartLine = null; +const chartLineContainer = ref(null); + +function getPieOptions() { + post('/api/charts/loc/use', {}).then(resp => { + let result = resp.data; + if (result.code == 200) { + let data = result.data; + + let pieOptions = { + title: { + text: '搴撲綅浣跨敤姣斾緥', + left: 'center', + top: '0%' + }, + tooltip: { + trigger: 'item', + top: '0%' + }, + grid: { + top: '0%', + left: '3%', + right: '4%', + bottom: '3%', + containLabel: true + }, + // legend: { + // orient: 'vertical', + // left: 'left' + // }, + series: [ + { + type: 'pie', + radius: '70%', + data: data, + emphasis: { + itemStyle: { + shadowBlur: 10, + shadowOffsetX: 0, + shadowColor: 'rgba(0, 0, 0, 0.5)' + } + } + } + ] + } + + chartPie.setOption(pieOptions); + + } + }) +} + +function getLineOptions() { + post('/api/charts/loc/line', {}).then(resp => { + let result = resp.data; + if (result.code == 200) { + let data = result.data; + + let lineOptions = { + title: { + text: '鏃ュ嚭鍏ュ簱鏁伴噺', + left: 'center', + }, + tooltip: { + trigger: 'axis' + }, + legend: { + data: ['鍏ュ簱鏁伴噺', '鍑哄簱鏁伴噺'], + top: '10%' + }, + grid: { + top: '20%', + left: '3%', + right: '4%', + bottom: '3%', + containLabel: true + }, + xAxis: { + type: 'category', + boundaryGap: false, + data: data.days + }, + yAxis: { + type: 'value' + }, + series: [ + { + name: '鍏ュ簱鏁伴噺', + type: 'line', + data: data.in.value, + smooth: true + }, + { + name: '鍑哄簱鏁伴噺', + type: 'line', + data: data.out.value, + smooth: true + } + ] + } + + chartLine.setOption(lineOptions); + + } + }) +} + +function initChart() { + chartPie = echarts.init(chartPieContainer.value); + chartPie.setOption({ + type: Object, + required: true + }) + + chartLine = echarts.init(chartLineContainer.value); + chartLine.setOption({ + type: Object, + required: true + }) +} + +const information = reactive({ + inCount: 0, + outCount: 0, + totalCount: 0, + matCount: 0, +}); +function getInformation() { + post('/api/charts/information', {}).then(resp => { + let result = resp.data; + if (result.code == 200) { + let data = result.data; + information.inCount = data.inCount; + information.outCount = data.outCount; + information.totalCount = data.totalCount; + information.matCount = data.matCount; + } + }) +} + +const informationTop = reactive({ + topIn: [], + topOut: [], +}); +function getInformationTop() { + post('/api/charts/information/top', {}).then(resp => { + let result = resp.data; + if (result.code == 200) { + let data = result.data; + informationTop.topIn = data.topIn; + informationTop.topOut = data.topOut; + } + }) +} + +onMounted(() => { + initChart() + getPieOptions() + getLineOptions() + getInformation() + getInformationTop() +}) + +</script> + +<script> +export default { + name: '涓婚〉' +} +</script> + +<template> + <div style="display: flex;"> + <div style="width: 24%;margin-right: 20px;"> + <a-card> + <a-statistic title="浠婃棩鍏ュ嚭搴�" :value="information.totalCount" :value-style="{ color: '#3f8600' }" + style="margin-right: 50px"> + <template #prefix> + <!-- <arrow-up-outlined /> --> + </template> + </a-statistic> + </a-card> + </div> + <div style="width: 24%;margin-right: 20px;"> + <a-card> + <a-statistic title="浠婃棩鍏ュ簱" :value="information.inCount" :value-style="{ color: '#3f8600' }" + style="margin-right: 50px"> + <template #prefix> + <!-- <arrow-up-outlined /> --> + </template> + </a-statistic> + </a-card> + </div> + <div style="width: 24%;margin-right: 20px;"> + <a-card> + <a-statistic title="浠婃棩鍑哄簱" :value="information.outCount" :value-style="{ color: '#3f8600' }" + style="margin-right: 50px"> + <template #prefix> + <!-- <arrow-up-outlined /> --> + </template> + </a-statistic> + </a-card> + </div> + <div style="width: 24%;margin-right: 20px;"> + <a-card> + <a-statistic title="鍟嗗搧鎬绘暟" :value="information.matCount" :value-style="{ color: '#3f8600' }" + style="margin-right: 50px"> + <template #prefix> + <!-- <arrow-up-outlined /> --> + </template> + </a-statistic> + </a-card> + </div> + </div> + <div style="display: flex;margin-top: 20px;"> + <div style="width: 49%;margin-right: 20px;"> + <a-card title="浠婃棩鍏ュ簱Top10"> + <div v-if="informationTop.topIn.length == 0"> + <a-empty /> + </div> + <div v-else v-for="(item, index) in informationTop.topIn" :key="index" + style="display: flex;justify-content: space-between;margin-top: 10px;"> + <div>{{ item.matnr }} - {{ item.maktx }}</div> + <div> + <a-tag v-if="index == 0" color="#87d068">{{ item.count }}</a-tag> + <a-tag v-else color="#2db7f5">{{ item.count }}</a-tag> + </div> + </div> + </a-card> + </div> + <div style="width: 49%;margin-right: 20px;"> + <a-card title="浠婃棩鍑哄簱Top10"> + <div v-if="informationTop.topOut.length == 0"> + <a-empty /> + </div> + <div v-else v-for="(item, index) in informationTop.topOut" :key="index" + style="display: flex;justify-content: space-between;margin-top: 10px;"> + <div>{{ item.matnr }} - {{ item.maktx }}</div> + <div> + <a-tag v-if="index == 0" color="#87d068">{{ item.count }}</a-tag> + <a-tag v-else color="#2db7f5">{{ item.count }}</a-tag> + </div> + </div> + </a-card> + </div> + </div> + <div style="display: flex;margin-top: 20px;"> + <div style="width: 49%;margin-right: 20px;"> + <a-card> + <div ref="chartPieContainer" style="width: 100%;height: 400px;"></div> + </a-card> + </div> + <div style="width: 49%;"> + <a-card> + <div ref="chartLineContainer" style="width: 90%;height: 400px;"></div> + </a-card> + </div> + <!-- <EChartView ref="chartChild2" /> --> + </div> +</template> -- Gitblit v1.9.1