1
李凌
2026-01-26 b27cbd67a587c040d9acbb06417456116682043a
src/views/homePage/index.vue
@@ -82,13 +82,14 @@
            <list-quatation :listData="qList" :tabShow="false" :tabActive="2" />
        </div>
        <van-popup v-model:show="item.showPopUp" style="border-radius:10px;"
            v-for="item in popupNewsList" :key="item.id">
            <div class="w-350 p-20 box-border popup_news">
                <div class="font-700 text-center font-28 textColor">{{ item.title }}</div>
                <div class="flex justify-center mt-30" v-if="item.imgUrl"><img :src="`${item.imgUrl}`"
                        class="w-200 h-200" alt="" /></div>
                <div class="py-10 textColor   content-title" v-html="item.content"></div>
        <van-popup v-model:show="item.showPopUp" style="border-radius:10px;" v-for="item in popupNewsList"
            :key="item.id">
            <div class="w-350 p-20 pb-10 box-border popup_news">
                <div class="font-700 text-center font-28">{{ item.title }}</div>
                <div class="flex justify-center mt-30" v-if="item.imgUrl">
                    <img :src="`${item.imgUrl}`" class="w-200 h-200" alt="" />
                </div>
                <div class="py-10 content-title" v-html="item.content"></div>
                <van-button color="#1194F7" class="w-full h-40 rounded-full" type="info" @click="closePopNotice(item)">
                    {{ $t('我知道了') }}
                </van-button>
@@ -100,7 +101,7 @@
<script setup>
import Head from './components/head.vue'
import { useI18n } from "vue-i18n";
import { ref, computed, onBeforeUnmount } from 'vue';
import { ref, computed, onBeforeUnmount, onMounted, watch } from 'vue';
import { useRouter } from 'vue-router';
import ListQuatation from "@/components/Transform/list-quotation/index.vue";
import { _getHomeList } from '@/service/cryptos.api'
@@ -114,7 +115,7 @@
    setStorage('symbol', 'btcusdt');
}
const userStore = useUserStore()
const { t } = useI18n()
const { t, locale } = useI18n()
const router = useRouter()
const store = useStore();
@@ -141,24 +142,36 @@
// 获取公告数据
const announceList = ref([])
_getNewsList1({
    language: useI18n().locale.value,
    language: locale.value,
}).then(res => {
    announceList.value = res
})
// 获取弹出新闻
const popupNewsList = ref([])
_getPopupNews({
    language: useI18n().locale.value,
}).then(res => {
const fetchPopupNews = async () => {
    const partyId = userStore.userInfo?.partyId
    const language = locale.value
    // 未登录/未拿到 partyId 时也允许请求(后端若需要 partyId,会自行返回空)
    const params = partyId ? { language, partyId } : { language }
    const res = await _getPopupNews(params).catch(() => null)
    if (res && res.length > 0) {
        let list = res
        const list = res
        list.forEach(item => {
            item.showPopUp = true
        })
        popupNewsList.value = list
    }
}
onMounted(() => {
    setTimeout(() => {
        fetchPopupNews()
    }, 1000)
})
// 关闭弹窗新闻
const closePopNotice = (item) => {
    item.showPopUp = false
@@ -274,7 +287,8 @@
    $tab-c: #888;
    $inp-c: #999;
    $crd-b: #f7f7f7;
    .js_title{
    .js_title {
        font-size: 2rem;
        text-align: center;
        background: linear-gradient(to right, #87CEEB, #1E90FF, #0000CD);
@@ -283,12 +297,13 @@
        -webkit-text-fill-color: transparent;
        color: transparent;
    }
    .js_content{
    .js_content {
        font-size: 1.6rem;
        text-align: center;
    }
    .popup_news{
    .popup_news {
        font-size: 1.8rem;
    }