Files
dvcp_v2_webapp/packages/2.0.5/AppBuildMap/toolBar/nearbyGCS.vue
aixianling a8dff862d2 初始化
2021-12-14 18:36:19 +08:00

130 lines
2.5 KiB
Vue

<template>
<section class="nearbyGCS">
<ai-title title="全部网格员"/>
<div class="radarPane">
<div class="radar">
<div class="indicator"/>
</div>
<div class="gcsItem" v-for="(op,i) in userList" :key="i" :style="op.style">
<i class="dot" :class="{offline:op.offline}"/>
<span>{{ op.name }}</span>
<ai-icon icon="iconIM"/>
</div>
</div>
</section>
</template>
<script>
export default {
name: "nearbyGCS",
inject: ['root', 'sta'],
data () {
return {
userList: []
}
},
mounted () {
this.getInfo()
},
methods: {
getInfo () {
this.root.instance.post('/app/appgirdmemberinfo/queryGirdMemberByBuilding', null, {
params: {buildingId: this.$route.query.buildingId}
}).then(res => {
if (res?.data) {
this.gcsList(res.data)
}
})
},
gcsList (data) {
this.userList = data.map(e => ({
...e,
style: {
transform: `translate(
${Math.round(160 * (Math.random() - 0.5))}px,
${Math.round(160 * (Math.random() - 0.5))}px)`}
}))
}
}
}
</script>
<style lang="scss" scoped>
.nearbyGCS {
.radarPane {
width: 100%;
height: 360px;
display: flex;
justify-content: center;
align-items: center;
position: relative;
.gcsItem {
position: absolute;
width: 92px;
height: 28px;
background: #FFFFFF;
box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.1);
border-radius: 16px;
font-size: 12px;
color: #333333;
display: flex;
justify-content: center;
align-items: center;
z-index: 3;
gap: 8px;
.AiIcon {
width: 16px;
height: 16px;
}
.dot {
width: 4px;
height: 4px;
background: #30BC77;
&.offline {
background: #FF4466;
}
}
}
}
.radar {
width: 320px;
height: 320px;
position: relative;
border-radius: 50%;
overflow: hidden;
background-image: url("https://cdn.cunwuyun.cn/buildSta/radarBg.png");
.indicator {
position: absolute;
width: 160px;
height: 160px;
top: 0;
left: 0;
transform-origin: 100% 100%;
background: linear-gradient(190deg, rgba(162, 255, 182, 0.5) 0%, rgba(162, 255, 215, 0) 100%);
border-right: 1px solid #A2FFB6;
animation: radar 5s linear infinite;
z-index: 2;
}
}
}
@keyframes radar {
0% {
transform: rotate(0deg)
}
100% {
transform: rotate(360deg)
}
}
</style>