2025-01-23 12:26:55 +08:00
|
|
|
<template>
|
2025-01-23 14:12:07 +08:00
|
|
|
<div v-show="ads.length" class="ad">
|
2025-01-23 12:26:55 +08:00
|
|
|
<div class="body" @mouseenter="onMouseEnter" @mouseleave="onMouseLeave">
|
2025-01-23 14:12:07 +08:00
|
|
|
<div class="list ccui-scrollbar">
|
2025-01-23 12:26:55 +08:00
|
|
|
<Banner v-for="(item, index) in ads" :data="item" :key="index"></Banner>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
<script lang="ts">
|
|
|
|
import ccui from "@xuyanfeng/cc-ui";
|
|
|
|
import { defineComponent, onMounted, onUnmounted, ref, toRaw } from "vue";
|
2025-01-23 14:12:07 +08:00
|
|
|
import { GA_EventName } from "../../ga/type";
|
|
|
|
import Banner from "./banner.vue";
|
2025-01-23 12:26:55 +08:00
|
|
|
import { emitter, Msg } from "./const";
|
2025-01-23 14:12:07 +08:00
|
|
|
import { AdItem, getAdData } from "./loader";
|
2025-02-07 20:50:52 +08:00
|
|
|
import { sendGaEvent } from "./util";
|
2025-01-23 12:26:55 +08:00
|
|
|
const { CCButton } = ccui.components;
|
|
|
|
export default defineComponent({
|
|
|
|
name: "ad",
|
2025-01-23 14:12:07 +08:00
|
|
|
components: { CCButton, Banner },
|
2025-01-23 12:26:55 +08:00
|
|
|
setup(props, { emit }) {
|
|
|
|
onMounted(async () => {
|
|
|
|
const data = await getAdData();
|
|
|
|
if (!data) {
|
|
|
|
console.log(`get ad failed`);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (!data.valid) {
|
|
|
|
console.log(`set ad forbidden`);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (!data.data.length) {
|
|
|
|
console.log(`not find any ad`);
|
|
|
|
return;
|
|
|
|
}
|
2025-02-07 14:10:46 +08:00
|
|
|
ads.value = data.data.filter((item) => item.valid);
|
2025-01-23 12:26:55 +08:00
|
|
|
console.log("get ads ", toRaw(ads.value));
|
|
|
|
|
2025-02-07 20:50:52 +08:00
|
|
|
sendGaEvent(GA_EventName.ShowAd);
|
2025-01-23 12:26:55 +08:00
|
|
|
});
|
2025-01-23 14:12:07 +08:00
|
|
|
onUnmounted(() => {});
|
2025-01-23 12:26:55 +08:00
|
|
|
function testBanner() {
|
|
|
|
const data = new AdItem();
|
|
|
|
data.name = "ad test 11111111111 11111111111 44444444444444 5555555555555 111111111111111111 2222222222222222 33333333333333 444444444444444";
|
|
|
|
data.store = "http://www.baidu.com";
|
|
|
|
emitter.emit(Msg.ChangeAd, data);
|
|
|
|
}
|
|
|
|
|
|
|
|
let ads = ref<AdItem[]>([]);
|
|
|
|
|
|
|
|
return {
|
|
|
|
ads,
|
2025-01-23 14:12:07 +08:00
|
|
|
onMouseEnter() {},
|
|
|
|
onMouseLeave() {},
|
2025-01-23 12:26:55 +08:00
|
|
|
};
|
|
|
|
},
|
|
|
|
});
|
|
|
|
</script>
|
|
|
|
<style lang="less" scoped>
|
2025-01-23 14:12:07 +08:00
|
|
|
@color-bg: #8d8d8da6;
|
|
|
|
@color-hover: #f9c04e;
|
|
|
|
@color-active: #ffaa00;
|
2025-01-23 12:26:55 +08:00
|
|
|
.ad {
|
|
|
|
display: flex;
|
2025-01-23 14:12:07 +08:00
|
|
|
flex-direction: column;
|
|
|
|
|
2025-01-23 12:26:55 +08:00
|
|
|
.body {
|
|
|
|
display: flex;
|
2025-01-23 14:12:07 +08:00
|
|
|
overflow: hidden;
|
2025-01-23 12:26:55 +08:00
|
|
|
.list {
|
|
|
|
flex: 1;
|
|
|
|
display: flex;
|
2025-01-23 14:12:07 +08:00
|
|
|
flex-direction: column;
|
2025-01-23 12:26:55 +08:00
|
|
|
align-items: center;
|
2025-01-23 14:12:07 +08:00
|
|
|
overflow: auto;
|
2025-01-23 12:26:55 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</style>
|