You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
200 lines
4.8 KiB
200 lines
4.8 KiB
<template>
|
|
<Dialog @close="back">
|
|
<div class="content">
|
|
<div class="carousel">
|
|
<EffectFade :list="[activity.fileUrl, activity.fileUrl]">
|
|
<template v-slot="{ item }">
|
|
<div class="banner-wrapper">
|
|
<img :src="config.sourceUrl + item" alt="" class="banner" />
|
|
</div>
|
|
</template>
|
|
</EffectFade>
|
|
</div>
|
|
<div class="intro-content">
|
|
<h1 class="name pos">{{ switchLanguage(activity, 'activityName') }}</h1>
|
|
<ScrollView class="content-scroll" scrollbar>
|
|
<p class="intro pos">{{ switchLanguage(activity, 'activityContent') }}</p>
|
|
</ScrollView>
|
|
<div class="time-wrapper pos">
|
|
<p class="common first">{{ $t('ActivityTime') }}:{{ activity.startDate }} {{ $t('zhi') + activity.endDate }}</p>
|
|
<p class="common">{{ $t('activityAddress') }}:{{ switchLanguage(activity, 'activityAddress') }}</p>
|
|
</div>
|
|
<Go class="detail-go" v-if="activity.shopId || activity.point" @click="handleActivity" />
|
|
</div>
|
|
<Button class="btn" @click="back" />
|
|
<ThumbQRCode class="thumbs" :title="$t('yuyue')" />
|
|
</div>
|
|
</Dialog>
|
|
</template>
|
|
|
|
<script setup>
|
|
import { useRouter } from 'vue-router'
|
|
import { useStore } from '@/store/root'
|
|
import Dialog from '@/layouts/Dialog.vue'
|
|
import Button from '@/base/Button/Button.vue'
|
|
import EffectFade from '@/components/EffectFade/EffectFade.vue'
|
|
import ScrollView from '@/base/ScrollView/ScrollView.vue'
|
|
import Go from '@/base/Go/Go.vue'
|
|
import ThumbQRCode from '@/base/ThumbQRCode/ThumbQRCode.vue'
|
|
import Shop from '@/utils/Class/Shop'
|
|
|
|
const MALL_TYPE = 1 //商场活动
|
|
const BRAND_TYPE = 2 //品牌活动
|
|
const MEMBER_TYPE = 3 //会员活动
|
|
|
|
const props = defineProps({
|
|
activity: Object,
|
|
config: Object
|
|
})
|
|
|
|
const router = useRouter()
|
|
const store = useStore()
|
|
|
|
function handleActivity() {
|
|
let shop
|
|
if (props.activity.activityType === BRAND_TYPE) {
|
|
shop = store.shopList.find(item => item.shopId === props.activity.shopId)
|
|
}
|
|
if (props.activity.activityType === MALL_TYPE || props.activity.activityType === MEMBER_TYPE) {
|
|
const { floorOrder, floor, activityName, fileUrl, point } = props.activity
|
|
shop = new Shop(activityName, floorOrder, floor, fileUrl, point)
|
|
}
|
|
|
|
if (!shop) {
|
|
return
|
|
}
|
|
store.SET_SHOP(shop)
|
|
router.push('/nav')
|
|
}
|
|
|
|
const emits = defineEmits(['close'])
|
|
function back() {
|
|
emits('close')
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.pos {
|
|
position: relative;
|
|
z-index: 5;
|
|
}
|
|
.content {
|
|
position: relative;
|
|
width: 700px;
|
|
margin: 0 auto;
|
|
margin-top: 350px;
|
|
z-index: 2;
|
|
.thumbs {
|
|
position: absolute;
|
|
top: 120px;
|
|
right: -156px;
|
|
}
|
|
&::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: 373px;
|
|
left: 0;
|
|
z-index: 2;
|
|
width: 700px;
|
|
height: 420px;
|
|
background: #ffffff;
|
|
border-radius: 12px;
|
|
}
|
|
.intro-content {
|
|
position: relative;
|
|
height: 420px;
|
|
.name {
|
|
padding: 28px 56px 32px 56px;
|
|
font-weight: 700;
|
|
font-size: 24px;
|
|
font-family: 'font_bold';
|
|
color: rgba(0, 0, 0, 0.8);
|
|
}
|
|
}
|
|
.common {
|
|
font-weight: 700;
|
|
font-size: 14px;
|
|
font-family: 'font_bold';
|
|
color: rgba(0, 0, 0, 0.6);
|
|
margin-left: 56px;
|
|
&.first {
|
|
padding-bottom: 8px;
|
|
}
|
|
}
|
|
.content-scroll {
|
|
position: relative;
|
|
height: 140px;
|
|
overflow: hidden;
|
|
margin: 0 34px 64px 56px;
|
|
padding-right: 16px;
|
|
:deep(.bscroll-vertical-scrollbar) {
|
|
width: 6px !important;
|
|
background: rgba(0, 0, 0, 0.02) !important;
|
|
border-radius: 6px !important;
|
|
opacity: 1 !important;
|
|
.bscroll-indicator {
|
|
width: 6px !important;
|
|
background: rgba(0, 0, 0, 0.1) !important;
|
|
border-radius: 6px !important;
|
|
border: none !important;
|
|
}
|
|
}
|
|
.intro {
|
|
font-weight: 400;
|
|
font-size: 14px;
|
|
line-height: 200%;
|
|
text-align: justify;
|
|
color: rgba(0, 0, 0, 0.6);
|
|
margin-bottom: 64px;
|
|
}
|
|
}
|
|
|
|
.detail-go {
|
|
bottom: -70px;
|
|
}
|
|
|
|
.carousel {
|
|
width: 700px;
|
|
height: 393px;
|
|
|
|
:deep(.swiper) {
|
|
overflow: visible !important;
|
|
z-index: auto;
|
|
}
|
|
:deep(.swiper-pagination) {
|
|
right: 32px;
|
|
left: auto;
|
|
bottom: 5px;
|
|
width: auto;
|
|
}
|
|
:deep(.swiper-pagination-bullet) {
|
|
width: 16px !important;
|
|
height: 3px !important;
|
|
background: rgba(0, 0, 0, 0.1);
|
|
border-radius: 3px !important;
|
|
opacity: inherit !important;
|
|
&.swiper-pagination-bullet-active {
|
|
background: #f1b33e;
|
|
border-radius: 3px !important;
|
|
}
|
|
}
|
|
}
|
|
.banner-wrapper {
|
|
width: 700px;
|
|
height: 393px;
|
|
border-radius: 12px;
|
|
.banner {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
border-radius: 12px;
|
|
}
|
|
}
|
|
|
|
.btn {
|
|
position: absolute;
|
|
top: 0;
|
|
right: -120px;
|
|
}
|
|
}
|
|
</style>
|
|
|