|
|
|
@ -11,28 +11,18 @@
|
|
|
|
|
<span class="title">基础设施</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="infrastructure-content">
|
|
|
|
|
<div
|
|
|
|
|
class="infrastructure-content-son"
|
|
|
|
|
v-for="(item, index) in myDataList"
|
|
|
|
|
:key="index"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="num-class"
|
|
|
|
|
:style="`background:url(${item.img}) no-repeat;background-position:top left;background-size:40%`"
|
|
|
|
|
>
|
|
|
|
|
<div class="infrastructure-content-son" v-for="(item, index) in myDataList" :key="index">
|
|
|
|
|
<div class="num-class"
|
|
|
|
|
:style="`background:url(${item.img}) no-repeat;background-position:top left;background-size:40%`">
|
|
|
|
|
<div>{{ item.title }}</div>
|
|
|
|
|
<div>{{ item.snum }}</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="health-degree">
|
|
|
|
|
<div class="health-degree-title">健康度</div>
|
|
|
|
|
<a-progress
|
|
|
|
|
:stroke-color="{
|
|
|
|
|
'0%': '#108ee9',
|
|
|
|
|
'100%': '#87d068',
|
|
|
|
|
}"
|
|
|
|
|
:percent="item.percentage"
|
|
|
|
|
:show-info="false"
|
|
|
|
|
/>
|
|
|
|
|
<a-progress :stroke-color="{
|
|
|
|
|
'0%': '#108ee9',
|
|
|
|
|
'100%': '#87d068',
|
|
|
|
|
}" :percent="item.percentage" :show-info="false" />
|
|
|
|
|
</div>
|
|
|
|
|
<div class="percentage" :style="fontFormat(item.title)">
|
|
|
|
|
{{ item.percentage }}%
|
|
|
|
@ -42,172 +32,201 @@
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<script setup>
|
|
|
|
|
import { ref } from 'vue'
|
|
|
|
|
import { infrastructureInfo } from '@/api/capabilityCloud'
|
|
|
|
|
let myDataList = ref([
|
|
|
|
|
{
|
|
|
|
|
title: '视频资源数量',
|
|
|
|
|
snum: '0',
|
|
|
|
|
percentage: '100',
|
|
|
|
|
img: require('../../../assets/capabilityCloud/infrastructure_sz.png'),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '云资源',
|
|
|
|
|
snum: '0',
|
|
|
|
|
percentage: '0',
|
|
|
|
|
img: require('../../../assets/capabilityCloud/infrastructure_yz.png'),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '感知资源',
|
|
|
|
|
snum: '0',
|
|
|
|
|
percentage: '0',
|
|
|
|
|
img: require('../../../assets/capabilityCloud/infrastructure_gz.png'),
|
|
|
|
|
},
|
|
|
|
|
])
|
|
|
|
|
function fontFormat(name) {
|
|
|
|
|
switch (name) {
|
|
|
|
|
case '视频资源数量':
|
|
|
|
|
return 'color: #32ff91;'
|
|
|
|
|
break
|
|
|
|
|
case '云资源':
|
|
|
|
|
return 'color: #f4fd25;'
|
|
|
|
|
break
|
|
|
|
|
case '感知资源':
|
|
|
|
|
return 'color: #ff1d18;'
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
import { ref } from 'vue'
|
|
|
|
|
import { infrastructureInfo } from '@/api/capabilityCloud'
|
|
|
|
|
let myDataList = ref([
|
|
|
|
|
{
|
|
|
|
|
title: '视频资源数量',
|
|
|
|
|
snum: '0',
|
|
|
|
|
percentage: '100',
|
|
|
|
|
img: require('../../../assets/capabilityCloud/infrastructure_sz.png'),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
// title: '云资源',
|
|
|
|
|
title: '单兵设备',
|
|
|
|
|
snum: '2',
|
|
|
|
|
percentage: '100',
|
|
|
|
|
img: require('../../../assets/capabilityCloud/infrastructure_yz.png'),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
// title: '感知资源',
|
|
|
|
|
title: '无人机',
|
|
|
|
|
snum: '2',
|
|
|
|
|
percentage: '100',
|
|
|
|
|
img: require('../../../assets/capabilityCloud/infrastructure_gz.png'),
|
|
|
|
|
},
|
|
|
|
|
])
|
|
|
|
|
function fontFormat(name) {
|
|
|
|
|
switch (name) {
|
|
|
|
|
case '视频资源数量':
|
|
|
|
|
return 'color: #32ff91;'
|
|
|
|
|
break
|
|
|
|
|
// case '云资源':
|
|
|
|
|
// return 'color: #f4fd25;'
|
|
|
|
|
// break
|
|
|
|
|
// case '感知资源':
|
|
|
|
|
// return 'color: #ff1d18;'
|
|
|
|
|
// break
|
|
|
|
|
|
|
|
|
|
case '单兵设备':
|
|
|
|
|
return 'color: #f4fd25;'
|
|
|
|
|
break
|
|
|
|
|
case '无人机':
|
|
|
|
|
return 'color: #ff1d18;'
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
const params = {
|
|
|
|
|
name: '',
|
|
|
|
|
pageNo: 1,
|
|
|
|
|
pageSize: 10,
|
|
|
|
|
}
|
|
|
|
|
infrastructureInfo().then((res) => {
|
|
|
|
|
console.log('基础设施==================>', res.data.data)
|
|
|
|
|
myDataList.value.forEach((val) => {
|
|
|
|
|
const obj = res.data.data.filter((item) => item.type === val.title)[0]
|
|
|
|
|
if (obj) {
|
|
|
|
|
if (obj.type == '视频资源数量') {
|
|
|
|
|
if (uavAndIndividualSoldier.num) {
|
|
|
|
|
obj.amount = obj.amount - 0 + uavAndIndividualSoldier.num
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
const params = {
|
|
|
|
|
name: '',
|
|
|
|
|
pageNo: 1,
|
|
|
|
|
pageSize: 10,
|
|
|
|
|
}
|
|
|
|
|
infrastructureInfo().then((res) => {
|
|
|
|
|
console.log('基础设施==================>', res.data.data)
|
|
|
|
|
myDataList.value.forEach((val) => {
|
|
|
|
|
const obj = res.data.data.filter((item) => item.type === val.title)[0]
|
|
|
|
|
if (obj) {
|
|
|
|
|
if (obj.type == '视频资源数量') {
|
|
|
|
|
if (uavAndIndividualSoldier.num) {
|
|
|
|
|
obj.amount = obj.amount - 0 + uavAndIndividualSoldier.num
|
|
|
|
|
}
|
|
|
|
|
val.snum = obj.amount
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
val.snum = obj.amount
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}).catch(err => {
|
|
|
|
|
console.log('err------------>', err);
|
|
|
|
|
})
|
|
|
|
|
</script>
|
|
|
|
|
<style lang="less" scoped>
|
|
|
|
|
.infrastructure {
|
|
|
|
|
.infrastructure {
|
|
|
|
|
width: 4.4rem;
|
|
|
|
|
height: 4.63rem;
|
|
|
|
|
position: relative;
|
|
|
|
|
background: rgba(0, 108, 188, 0.1);
|
|
|
|
|
border: 0.01rem rgba(0, 108, 188, 0.7) solid;
|
|
|
|
|
border-radius: 0.03rem;
|
|
|
|
|
padding: 0.2rem;
|
|
|
|
|
padding-top: 0;
|
|
|
|
|
text-decoration: none;
|
|
|
|
|
outline: none;
|
|
|
|
|
-webkit-transition: all 100ms ease-out;
|
|
|
|
|
-moz-transition: all 100ms ease-out;
|
|
|
|
|
transition: all 100ms ease-out;
|
|
|
|
|
|
|
|
|
|
.infrastructure-top {
|
|
|
|
|
width: 4.4rem;
|
|
|
|
|
height: 4.63rem;
|
|
|
|
|
position: relative;
|
|
|
|
|
background: rgba(0, 108, 188, 0.1);
|
|
|
|
|
border: 0.01rem rgba(0, 108, 188, 0.7) solid;
|
|
|
|
|
border-radius: 0.03rem;
|
|
|
|
|
padding: 0.2rem;
|
|
|
|
|
padding-top: 0;
|
|
|
|
|
text-decoration: none;
|
|
|
|
|
outline: none;
|
|
|
|
|
-webkit-transition: all 100ms ease-out;
|
|
|
|
|
-moz-transition: all 100ms ease-out;
|
|
|
|
|
transition: all 100ms ease-out;
|
|
|
|
|
.infrastructure-top {
|
|
|
|
|
width: 4.4rem;
|
|
|
|
|
height: 0.44rem;
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: 0;
|
|
|
|
|
background: url('~@/assets/capabilityCloud/infrastructure_title.png')
|
|
|
|
|
no-repeat;
|
|
|
|
|
background-size: cover;
|
|
|
|
|
background-position: center;
|
|
|
|
|
line-height: 0.44rem;
|
|
|
|
|
text-align: center;
|
|
|
|
|
.title {
|
|
|
|
|
font-size: 0.24rem;
|
|
|
|
|
}
|
|
|
|
|
height: 0.44rem;
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: 0;
|
|
|
|
|
background: url('~@/assets/capabilityCloud/infrastructure_title.png') no-repeat;
|
|
|
|
|
background-size: cover;
|
|
|
|
|
background-position: center;
|
|
|
|
|
line-height: 0.44rem;
|
|
|
|
|
text-align: center;
|
|
|
|
|
|
|
|
|
|
.title {
|
|
|
|
|
font-size: 0.24rem;
|
|
|
|
|
}
|
|
|
|
|
.infrastructure-content {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.infrastructure-content {
|
|
|
|
|
width: 4rem;
|
|
|
|
|
margin-top: 0.62rem;
|
|
|
|
|
|
|
|
|
|
.infrastructure-content-son {
|
|
|
|
|
display: flex;
|
|
|
|
|
width: 4rem;
|
|
|
|
|
margin-top: 0.62rem;
|
|
|
|
|
.infrastructure-content-son {
|
|
|
|
|
display: flex;
|
|
|
|
|
width: 4rem;
|
|
|
|
|
height: 1.17rem;
|
|
|
|
|
background: linear-gradient(to right, #214677, rgba(2, 20, 103, 0));
|
|
|
|
|
align-items: center;
|
|
|
|
|
margin-bottom: 0.14rem;
|
|
|
|
|
padding-left: 0.1rem;
|
|
|
|
|
height: 1.17rem;
|
|
|
|
|
background: linear-gradient(to right, #214677, rgba(2, 20, 103, 0));
|
|
|
|
|
align-items: center;
|
|
|
|
|
margin-bottom: 0.14rem;
|
|
|
|
|
padding-left: 0.1rem;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.num-class {
|
|
|
|
|
width: 1.5rem;
|
|
|
|
|
height: 1rem;
|
|
|
|
|
text-align: center;
|
|
|
|
|
margin-right: 0.2rem;
|
|
|
|
|
|
|
|
|
|
&>div:first-child {
|
|
|
|
|
font-size: 0.18rem;
|
|
|
|
|
color: #ffffff;
|
|
|
|
|
margin-bottom: 0.1rem;
|
|
|
|
|
line-height: 0.18rem;
|
|
|
|
|
margin-top: 0.3rem;
|
|
|
|
|
}
|
|
|
|
|
.num-class {
|
|
|
|
|
width: 1.5rem;
|
|
|
|
|
height: 1rem;
|
|
|
|
|
text-align: center;
|
|
|
|
|
margin-right: 0.2rem;
|
|
|
|
|
& > div:first-child {
|
|
|
|
|
font-size: 0.18rem;
|
|
|
|
|
color: #ffffff;
|
|
|
|
|
margin-bottom: 0.1rem;
|
|
|
|
|
line-height: 0.18rem;
|
|
|
|
|
margin-top: 0.3rem;
|
|
|
|
|
}
|
|
|
|
|
& > div:last-child {
|
|
|
|
|
font-size: 0.36rem;
|
|
|
|
|
line-height: 0.36rem;
|
|
|
|
|
color: #1ce2e5;
|
|
|
|
|
|
|
|
|
|
&>div:last-child {
|
|
|
|
|
font-size: 0.36rem;
|
|
|
|
|
line-height: 0.36rem;
|
|
|
|
|
color: #1ce2e5;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.health-degree {
|
|
|
|
|
width: 1.35rem;
|
|
|
|
|
|
|
|
|
|
.health-degree-title {
|
|
|
|
|
font-size: 0.14rem;
|
|
|
|
|
color: rgba(255, 255, 255, 0.6);
|
|
|
|
|
margin-bottom: 0.08rem;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
:deep(.ant-progress-outer) {
|
|
|
|
|
height: 0.27rem;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
:deep(.ant-progress-inner) {
|
|
|
|
|
height: 0.27rem;
|
|
|
|
|
border-radius: 0.14rem;
|
|
|
|
|
border: 0.01rem solid rgba(8, 153, 231, 0.6);
|
|
|
|
|
background: rgba(21, 65, 123, 0.6);
|
|
|
|
|
|
|
|
|
|
div {
|
|
|
|
|
height: 0.27rem !important;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.health-degree {
|
|
|
|
|
width: 1.35rem;
|
|
|
|
|
.health-degree-title {
|
|
|
|
|
font-size: 0.14rem;
|
|
|
|
|
color: rgba(255, 255, 255, 0.6);
|
|
|
|
|
margin-bottom: 0.08rem;
|
|
|
|
|
}
|
|
|
|
|
:deep(.ant-progress-outer) {
|
|
|
|
|
height: 0.27rem;
|
|
|
|
|
}
|
|
|
|
|
:deep(.ant-progress-inner) {
|
|
|
|
|
height: 0.27rem;
|
|
|
|
|
border-radius: 0.14rem;
|
|
|
|
|
border: 0.01rem solid rgba(8, 153, 231, 0.6);
|
|
|
|
|
background: rgba(21, 65, 123, 0.6);
|
|
|
|
|
div {
|
|
|
|
|
height: 0.27rem !important;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// .health-degree:
|
|
|
|
|
.percentage {
|
|
|
|
|
height: 0.57rem;
|
|
|
|
|
font-size: 0.24rem;
|
|
|
|
|
line-height: 0.24rem;
|
|
|
|
|
font-family: 'DIN-Bold';
|
|
|
|
|
margin-left: 0.1rem;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: flex-end;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// .health-degree:
|
|
|
|
|
.percentage {
|
|
|
|
|
height: 0.57rem;
|
|
|
|
|
font-size: 0.24rem;
|
|
|
|
|
line-height: 0.24rem;
|
|
|
|
|
font-family: 'DIN-Bold';
|
|
|
|
|
margin-left: 0.1rem;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: flex-end;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.infrastructure:hover {
|
|
|
|
|
border: 2px solid;
|
|
|
|
|
animation: turn 5s linear infinite;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.infrastructure:hover {
|
|
|
|
|
border: 2px solid;
|
|
|
|
|
animation: turn 5s linear infinite;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@keyframes turn {
|
|
|
|
|
0% {
|
|
|
|
|
border-image: linear-gradient(to right, #003194, #00ffea) 1;
|
|
|
|
|
}
|
|
|
|
|
@keyframes turn {
|
|
|
|
|
0% {
|
|
|
|
|
border-image: linear-gradient(to right, #003194, #00ffea) 1;
|
|
|
|
|
}
|
|
|
|
|
25% {
|
|
|
|
|
border-image: linear-gradient(to bottom, #003194, #00ffea) 1;
|
|
|
|
|
}
|
|
|
|
|
50% {
|
|
|
|
|
border-image: linear-gradient(to left, #003194, #00ffea) 1;
|
|
|
|
|
}
|
|
|
|
|
75% {
|
|
|
|
|
border-image: linear-gradient(to top, #003194, #00ffea) 1;
|
|
|
|
|
}
|
|
|
|
|
100% {
|
|
|
|
|
border-image: linear-gradient(to right, #003194, #00ffea) 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
25% {
|
|
|
|
|
border-image: linear-gradient(to bottom, #003194, #00ffea) 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
50% {
|
|
|
|
|
border-image: linear-gradient(to left, #003194, #00ffea) 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
75% {
|
|
|
|
|
border-image: linear-gradient(to top, #003194, #00ffea) 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
100% {
|
|
|
|
|
border-image: linear-gradient(to right, #003194, #00ffea) 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
|