Files
ylst-h5/src/views/Home/components/ImageSlider/Index.vue
Huangzhe 0685c46500 feat: 更新广告页面和路由跳转逻辑
1. 添加了banner请求相关的类型定义和hooks
2. 更新了广告页面的路由跳转逻辑,支持传递code参数
3. 修改了相关组件的导入和使用方式
4. 更新了类型定义文件以支持新的功能
5. 优化了图片轮播组件的交互逻辑
2025-05-22 17:28:07 +08:00

42 lines
1.1 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<script setup lang="ts">
import { useRouter } from 'vue-router';
import { bannerInfo } from '@/views/AD/hooks/useAD';
import { fetchBanners } from '@/hooks/request/banner';
const { banners } = fetchBanners();
const router = useRouter();
// const defineBanners = defineModel('banners');
// 如果定义了 banner 那么 banners 就不再初始化
// defineBanners.value && updateBanners(defineBanners.value);
const borderRadius = defineModel('borderRadius');
function handleBannerClick(banner: any) {
// 把对应的信息给 AD 的 hooks
bannerInfo.value = banner;
router.push({ name: 'ad', params: { code: banner.code } });
}
</script>
<template>
<van-swipe :autoplay="5000" indicator-color="white">
<van-swipe-item v-for="banner in banners">
<el-image
class="img"
:style="{ borderRadius: borderRadius + 'px' }"
:src="banner.banner_address"
fit="contain"
@click="handleBannerClick(banner)"
/>
</van-swipe-item>
</van-swipe>
</template>
<style lang="scss" scoped>
@use '@/assets/css/theme' as *;
.img {
border-radius: $card-radius;
}
</style>