<template>
|
<div class="mapPopUpBox">
|
<div class="title">
|
<span>{{ info.event_name }}</span>
|
|
<el-icon class="header-close" @click="props.removeLabel">
|
<Close />
|
</el-icon>
|
</div>
|
<div class="content">
|
<div class="medium">
|
<el-image
|
v-if="info.media_type === 'PHOTO_TYPE'"
|
class="eventImage"
|
:src="info.url"
|
fit="cover"
|
:preview-src-list="[info.url]"
|
preview-teleported
|
></el-image>
|
|
<video v-else :src="info.url" autoplay muted playsinline preload="metadata" />
|
</div>
|
|
<div class="details">
|
<div class="label">位置:</div>
|
<div class="value point">{{ _.round(info.longitude, 3) }},{{ _.round(info.latitude, 3) }}</div>
|
<div class="label">时间:</div>
|
<div class="value">{{ info.create_time }}</div>
|
</div>
|
</div>
|
</div>
|
</template>
|
<script setup>
|
import { ElImage, ElIcon } from 'element-plus'
|
|
// src="@/assets/images/home/useEventOperate/eventErr.png"
|
import { Close } from '@element-plus/icons-vue'
|
import { getEventDetails } from '@/api/home/aggregation'
|
import _ from 'lodash'
|
|
const props = defineProps(['data', 'removeLabel'])
|
const loading = ref(true)
|
|
const info = ref({
|
event_name: '',
|
status: 1,
|
url: '1',
|
longitude: '',
|
latitude: '',
|
create_time: '04/01 12:41',
|
media_type: 'PHOTO_TYPE',
|
})
|
onMounted(async () => {
|
loading.value = true
|
const res = await getEventDetails({ id: props.data.eventId })
|
info.value = res.data.data
|
info.value.url = disposeUrl(info.value)
|
loading.value = false
|
})
|
|
const disposeUrl = ({ url, media_type }) => {
|
if (media_type == 'PHOTO_TYPE') {
|
const parts = url.split('.')
|
parts[parts.length - 2] += '_small' // 在最后一个点前插入 _small
|
|
return import.meta.env.VITE_APP_AIRLINE_URL + parts.join('.')
|
}
|
|
return import.meta.env.VITE_APP_AIRLINE_URL + url
|
}
|
</script>
|
|
<style scoped lang="scss">
|
.mapPopUpBox {
|
width: 271px;
|
height: 173px;
|
background: url('@/assets/images/home/useEventOperate/popUpBox.png') no-repeat center / 100% 100%;
|
padding: 13px 15px;
|
pointer-events: all;
|
|
.title {
|
font-family: YouSheBiaoTiHei, YouSheBiaoTiHei, serif;
|
font-weight: 400;
|
font-size: 18px;
|
line-height: 16px;
|
background: linear-gradient(180deg, #a8e5fb 0%, #e6f8ff 100%);
|
-webkit-background-clip: text;
|
-webkit-text-fill-color: transparent;
|
-moz-background-clip: text;
|
-moz-text-fill-color: transparent;
|
background-clip: text;
|
text-fill-color: transparent;
|
margin-bottom: 10px;
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
|
.header-close {
|
width: 20px;
|
height: 100%;
|
line-height: 100%;
|
display: flex;
|
align-items: center;
|
color: #9cd5ff;
|
pointer-events: all;
|
cursor: pointer;
|
}
|
}
|
|
.content {
|
height: 102px;
|
width: 240px;
|
display: flex;
|
align-items: center;
|
|
.medium {
|
height: 102px;
|
width: 120px;
|
margin-right: 10px;
|
|
> img,
|
video,
|
div {
|
width: 100%;
|
height: 100%;
|
}
|
}
|
|
.details {
|
.label {
|
font-family: Source Han Sans CN, Source Han Sans CN;
|
font-weight: 400;
|
font-size: 14px;
|
color: #7babd7;
|
line-height: 16px;
|
margin-bottom: 2px;
|
}
|
|
.value {
|
font-family: Source Han Sans CN, Source Han Sans CN;
|
font-weight: 400;
|
font-size: 14px;
|
color: #d8edff;
|
line-height: 16px;
|
margin-bottom: 2px;
|
}
|
|
.point {
|
margin-bottom: 14px;
|
}
|
}
|
}
|
}
|
</style>
|