123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- <template>
- <div class="_runnin">
- <HeadlineTag value="性能统计"></HeadlineTag>
- <div class="_runnin_mains">
- <!-- 修正引用名称,与脚本里保持一致 -->
- <div class="_runnin_mains_item">
- <div ref="chartRefCPU" style="width: 140px;height: 140px;"></div>
- <span style="margin-top: 10px;font-weight: bold;">CPU</span>
- </div>
- <div class="_runnin_mains_item">
- <div ref="chartRefRAM" style="width: 140px;height: 140px;"></div>
- <span style="margin-top: 10px;font-weight: bold;">RAM</span>
- </div>
- </div>
- </div>
- </template>
- <script setup>
- import { ref, onMounted, nextTick } from "vue";
- import * as echarts from 'echarts'
- import 'echarts-liquidfill';
- import HeadlineTag from '@/components/HeadlineTag'
- const chartRefCPU = ref(null);
- const chartRefRAM = ref(null);
- let chartInstanceCPU = null;
- let chartInstanceRAM = null;
- const initCPUDrop = () => {
- // 检查 DOM 元素是否存在
- if (chartRefCPU.value) {
- var value = 0.45;
- chartInstanceCPU = null
- chartInstanceCPU = echarts.init(chartRefCPU.value);
- chartInstanceCPU.setOption({
- series: [
- {
- type: 'liquidFill', //水位图
- radius: '100%', //显示比例
- center: ['50%', '50%'], //中心点
- amplitude: 20, //水波振幅
- data: [value, value], // data个数代表波浪数
- color: [
- {
- type: 'linear',
- x: 0,
- y: 0,
- x2: 0,
- y2: 1,
- colorStops: [
- {
- offset: 0,
- color: '#446bf5',
- },
- {
- offset: 1,
- color: '#2ca3e2',
- },
- ],
- globalCoord: false,
- },
- ], //波浪颜色
- backgroundStyle: {
- borderWidth: 1, //外边框
- color: 'RGBA(51, 66, 127, 0.7)',
- },
- label: {
- //标签设置
- position: ['50%', '45%'],
- formatter: '50%', //显示文本,
- textStyle: {
- // 修改字体大小,例如改为 20px
- fontSize: '20px',
- color: '#fff',
- },
- },
- outline: {
- borderDistance: 0,
- itemStyle: {
- borderWidth: 2,
- borderColor: '#112165',
- },
- },
- },
- ],
- });
- }
- }
- const initRAMDrop = () => {
- // 检查 DOM 元素是否存在
- if (chartRefRAM.value) {
- var value = 0.65;
- chartInstanceRAM = null
- chartInstanceRAM = echarts.init(chartRefRAM.value);
- chartInstanceRAM.setOption({
- series: [
- {
- type: 'liquidFill', //水位图
- radius: '100%', //显示比例
- center: ['50%', '50%'], //中心点
- amplitude: 20, //水波振幅
- data: [value, value], // data个数代表波浪数
- // 修改波浪颜色
- color: [
- {
- type: 'linear',
- x: 0,
- y: 0,
- x2: 0,
- y2: 1,
- colorStops: [
- {
- offset: 0,
- // 例如改成红色系
- color: '#ff4444',
- },
- {
- offset: 1,
- // 例如改成橙色系
- color: '#ff8800',
- },
- ],
- globalCoord: false,
- },
- ],
- backgroundStyle: {
- borderWidth: 1, //外边框
- color: 'RGBA(51, 66, 127, 0.7)',
- },
- label: {
- //标签设置
- position: ['50%', '45%'],
- // 修改 formatter 为函数,动态显示百分比
- formatter: () => `${Math.round(value * 100)}%`,
- textStyle: {
- // 修改字体大小,例如改为 20px
- fontSize: '20px',
- color: '#fff',
- },
- },
- outline: {
- borderDistance: 0,
- itemStyle: {
- borderWidth: 2,
- borderColor: '#112165',
- },
- },
- },
- ],
- });
- }
- }
- // 生命周期
- onMounted(() => {
- nextTick(() => {
- initCPUDrop()
- initRAMDrop()
- })
- });
- onUnmounted(() => {
- chartInstanceCPU.clear()
- chartInstanceRAM.clear()
- chartInstanceCPU = null
- chartInstanceRAM = null
- })
- // 窗口自适应
- window.addEventListener('resize', () => {
- chartInstanceRAM?.resize();
- chartInstanceCPU?.resize();
- });
- </script>
- <style lang="scss" scoped>
- ._runnin {
- display: flex;
- flex-direction: column;
- &_mains {
- flex: 1;
- margin: 30px;
- display: flex;
- align-items: center;
- justify-content: space-around;
- gap: 30px;
- &_item {
- display: flex;
- align-items: center;
- justify-content: center;
- flex-direction: column;
- color: #FFF;
- }
- }
- }
- </style>
|