123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- <template>
- <div class="person_box">
- <!-- <div class="left_warning center_in">
- <div class="warning_card center_in">
- <svg class="warning_icon_star" aria-hidden="true">
- <defs>
- <linearGradient id="myGradient" x1="0%" y1="100%" x2="0%" y2="0%">
- <stop offset="0%" stop-color="rgb(20, 188, 244)" />
- <stop offset="100%" stop-color="#ffffff" />
- </linearGradient>
- </defs>
- <use xlink:href="#icon-user" fill="url('#myGradient')" />
- </svg>
- </div>
- </div> -->
- <div class="right_warning">
- <div class="box_equipment">
- <span class="equi_title">客流监控设备</span>
- <span class="equi_num">{{ networkDevices }}</span>
- </div>
- <div class="box_early_warn">
- <div class="space_between_in card_eary">
- <div class="type_title_early">正常</div>
- <div class="type_num_early">{{ resultData.Normal }}个</div>
- </div>
- <el-progress :percentage="getPercentage(resultData.Normal)" :text-inside="true"
- color="rgb(100, 178, 161)" />
- </div>
- <div class="box_early_warn">
- <div class="space_between_in card_eary">
- <div class="type_title_early">故障</div>
- <div class="type_num_early">{{ resultData.Fault }}个</div>
- </div>
- <el-progress :percentage="getPercentage(resultData.Fault)" :text-inside="true"
- color="rgb(230, 162, 60)" />
- </div>
- <div class="box_early_warn">
- <div class="space_between_in card_eary">
- <div class="type_title_early">离线</div>
- <div class="type_num_early">{{ resultData.Offline }}个</div>
- </div>
- <el-progress :percentage="getPercentage(resultData.Offline)" :text-inside="true"
- color="rgb(245, 108, 108)" />
- </div>
- </div>
- </div>
- </template>
- <script setup>
- const props = defineProps({
- resultData: {
- type: Object,
- default: {}
- }
- })
- const networkDevices = ref(0)
- watch(() => props.resultData, (newVal) => {
- if (newVal) {
- networkDevices.value = newVal.Normal + newVal.Fault + newVal.Offline
- }
- }, { deep: true, immediate: true } // 开启深度监听
- )
- function getPercentage(params) {
- let num = params / networkDevices.value * 100
- return Math.floor(num)
- }
- // 生命周期
- onMounted(() => {
- });
- </script>
- <style scoped lang="scss">
- .person_box {
- width: 100%;
- height: 100%;
- display: flex;
- align-items: center;
- padding-left: 20px;
- }
- .left_warning {
- width: 100px;
- }
- .right_warning {
- display: flex;
- flex-direction: column;
- justify-content: space-evenly;
- flex: 1;
- height: 100%;
- // padding-left: 20px;
- padding-right: 20px;
- }
- .box_equipment {
- display: flex;
- align-items: center;
- justify-content: center;
- border-radius: 20px;
- width: 100%;
- height: 40px;
- border: 1px solid rgb(48 69 129);
- }
- .box_early_warn {
- margin-top: 10px;
- margin-bottom: 20px;
- }
- .equi_title {
- font-size: 18px;
- font-weight: bold;
- line-height: 30px;
- font-weight: bold;
- background-image: -webkit-linear-gradient(bottom, rgb(143, 190, 224), rgb(245 245 245));
- -webkit-background-clip: text;
- -webkit-text-fill-color: transparent;
- }
- .equi_num {
- font-size: 18px;
- color: #fff;
- margin-left: 20px;
- line-height: 30px;
- }
- .card_eary {
- margin-bottom: 8px;
- }
- .type_title_early {
- font-size: 16px;
- font-weight: bold;
- background-image: -webkit-linear-gradient(bottom, rgb(143, 190, 224), rgb(245 245 245));
- -webkit-background-clip: text;
- -webkit-text-fill-color: transparent;
- }
- .type_num_early {
- font-size: 16px;
- }
- .warning_card {
- width: 90px;
- height: 90px;
- border-radius: 50%;
- background-color: rgb(9, 29, 56);
- box-shadow: inset 0px 0px 20px 3px rgb(14 67 117);
- border: 1px solid rgb(135, 152, 189);
- }
- .warning_icon_star {
- width: 40px;
- height: 40px;
- }
- </style>
- <style lang="scss" scoped>
- :deep(.el-progress__text) {
- color: #ffffff !important;
- }
- :deep(.el-progress-bar__outer) {
- overflow: unset !important;
- }
- :deep(.el-progress-bar__innerText) {
- position: absolute;
- left: 0;
- bottom: -16px;
- }
- </style>
|