|
|
|
@ -7,53 +7,19 @@ |
|
|
|
<TransitionGroup name="zoom" tag="div" class="list"> |
|
|
|
<SearchResultItem :config="config" @click="handleShop" :shop="item" v-for="item of list" :key="item.shopId" /> |
|
|
|
</TransitionGroup> |
|
|
|
<template v-if="activities.length"> |
|
|
|
<h1 class="title"> |
|
|
|
{{ $t('act') }} |
|
|
|
</h1> |
|
|
|
<div class="activity"> |
|
|
|
<div class="activity-item" @click="handleActivity(item)" v-for="item of activities" :key="item.activityId"> |
|
|
|
<div class="img-wrapper"> |
|
|
|
<img class="img" :src="config.sourceUrl + item.fileUrl" alt="" /> |
|
|
|
</div> |
|
|
|
<div class="flex"> |
|
|
|
<p class="activity-name">{{ switchLanguage(item, 'activityName') }}</p> |
|
|
|
<p class="intro">{{ $t('youxiaoqi') }}:{{ item.endDate }}</p> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</div> |
|
|
|
</ScrollView> |
|
|
|
</template> |
|
|
|
|
|
|
|
<script setup> |
|
|
|
import { computed } from 'vue' |
|
|
|
import ScrollView from '@/base/ScrollView/ScrollView.vue' |
|
|
|
import SearchResultItem from '@/components/SearchResultItem/SearchResultItem.vue' |
|
|
|
|
|
|
|
const props = defineProps({ |
|
|
|
list: { |
|
|
|
type: Array, |
|
|
|
default: () => [] |
|
|
|
}, |
|
|
|
config: { |
|
|
|
type: Object, |
|
|
|
default: () => ({}) |
|
|
|
} |
|
|
|
}) |
|
|
|
const emits = defineEmits(['handle-shop', 'handle-activity']) |
|
|
|
|
|
|
|
const shop = computed(() => props.list.filter(item => item.activityList?.length) ?? []) |
|
|
|
const activities = computed(() => shop.value.map(item => item.activityList).flat(Infinity) ?? []) |
|
|
|
const emits = defineEmits(['handle-shop']) |
|
|
|
|
|
|
|
function handleShop(item) { |
|
|
|
emits('handle-shop', item) |
|
|
|
} |
|
|
|
|
|
|
|
function handleActivity(item) { |
|
|
|
emits('handle-activity', item) |
|
|
|
} |
|
|
|
</script> |
|
|
|
|
|
|
|
<style lang="scss" scoped> |
|
|
|
|