feat: 可视化大屏
parent
4874a9abdc
commit
09453ae877
@ -0,0 +1,111 @@
|
|||||||
|
<template>
|
||||||
|
<ul class="kanban-ul flex">
|
||||||
|
<li>
|
||||||
|
<CountUp
|
||||||
|
:endVal="rate.resourceAccessRate"
|
||||||
|
:duration="duration"
|
||||||
|
>
|
||||||
|
<template #suffix>
|
||||||
|
<span>%</span>
|
||||||
|
</template>
|
||||||
|
</CountUp>
|
||||||
|
<span>资源接入率</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<CountUp
|
||||||
|
:endVal="rate.resourceHealthRate"
|
||||||
|
:duration="duration"
|
||||||
|
>
|
||||||
|
<template #suffix>
|
||||||
|
<span>%</span>
|
||||||
|
</template>
|
||||||
|
</CountUp>
|
||||||
|
<span>资源健康率</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<CountUp
|
||||||
|
:endVal="rate.resourceRedundancyRate"
|
||||||
|
:duration="duration"
|
||||||
|
>
|
||||||
|
<template #suffix>
|
||||||
|
<span>%</span>
|
||||||
|
</template>
|
||||||
|
</CountUp>
|
||||||
|
<span>资源冗余率</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { ref, inject } from 'vue';
|
||||||
|
import CountUp from './common/count-up';
|
||||||
|
|
||||||
|
const currentOrg = inject('currentOrg');
|
||||||
|
const duration = 2;
|
||||||
|
const rate = ref({
|
||||||
|
resourceAccessRate: 0,
|
||||||
|
resourceHealthRate: 0,
|
||||||
|
resourceRedundancyRate: 0,
|
||||||
|
});
|
||||||
|
|
||||||
|
const getAccessStatusData = () => {
|
||||||
|
console.log('执行请求AccessStatus');
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
setTimeout(() => {
|
||||||
|
if (currentOrg.value.id === 'all') {
|
||||||
|
resolve({
|
||||||
|
resourceAccessRate: 80,
|
||||||
|
resourceHealthRate: 70,
|
||||||
|
resourceRedundancyRate: 90,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
resolve({
|
||||||
|
resourceAccessRate: 100,
|
||||||
|
resourceHealthRate: 90,
|
||||||
|
resourceRedundancyRate: 95,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, 1000);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const initFN = () => {
|
||||||
|
getAccessStatusData().then((res) => {
|
||||||
|
for (const key in rate.value) {
|
||||||
|
rate.value[key] = res[key];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
name: 'AccessStatus',
|
||||||
|
init: initFN,
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.kanban-ul {
|
||||||
|
height: 100%;
|
||||||
|
|
||||||
|
li {
|
||||||
|
flex: 1;
|
||||||
|
width: 142px;
|
||||||
|
height: 100%;
|
||||||
|
background: url(../img/di.png) no-repeat;
|
||||||
|
background-position: center bottom 50px;
|
||||||
|
background-size: 115%;
|
||||||
|
text-align: center;
|
||||||
|
color: rgb(174, 224, 240);
|
||||||
|
|
||||||
|
.countup-wrap {
|
||||||
|
padding: 25px 20px 0;
|
||||||
|
font-size: 42px;
|
||||||
|
}
|
||||||
|
|
||||||
|
& > span {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Loading…
Reference in New Issue