130 lines
2.5 KiB
Vue
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>
|