2025-08-13 11:53:14 +08:00
|
|
|
<template>
|
|
|
|
|
<!-- 顶部 banner 区域 -->
|
|
|
|
|
<view class="all">
|
2025-08-15 13:44:27 +08:00
|
|
|
<!-- <Navbar title="中证参考" :hasBack="false"></Navbar> -->
|
2025-08-20 13:30:34 +08:00
|
|
|
<image
|
|
|
|
|
class="top_bk"
|
|
|
|
|
src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/newmini/top_bg.png"
|
|
|
|
|
></image>
|
|
|
|
|
|
|
|
|
|
<view
|
|
|
|
|
:style="{
|
|
|
|
|
height: getNavHeight() + 'px',
|
|
|
|
|
backgroundColor: isScroll ? '#fff' : 'transparent',
|
|
|
|
|
position: 'sticky',
|
|
|
|
|
top: 0,
|
|
|
|
|
zIndex: '999999',
|
|
|
|
|
}"
|
2025-08-30 13:50:28 +08:00
|
|
|
v-if="tabIndex == 0 || tabIndex == 2"
|
2025-08-20 13:30:34 +08:00
|
|
|
></view>
|
|
|
|
|
<view
|
|
|
|
|
:style="{
|
|
|
|
|
height: getNavHeight() + 'px',
|
|
|
|
|
backgroundColor: '#fff',
|
|
|
|
|
position: 'sticky',
|
|
|
|
|
top: 0,
|
|
|
|
|
zIndex: '999999',
|
|
|
|
|
}"
|
|
|
|
|
v-else
|
|
|
|
|
></view>
|
2025-08-15 13:44:27 +08:00
|
|
|
|
|
|
|
|
<view class="content">
|
2025-08-20 13:30:34 +08:00
|
|
|
<view
|
|
|
|
|
:style="{
|
|
|
|
|
position: 'sticky',
|
|
|
|
|
top: getNavHeight() + 'px',
|
|
|
|
|
backgroundColor: isScroll ? '#fff' : 'transparent',
|
|
|
|
|
zIndex: '9999',
|
|
|
|
|
}"
|
2025-08-30 13:50:28 +08:00
|
|
|
v-if="tabIndex == 0 || tabIndex == 2"
|
2025-08-20 13:30:34 +08:00
|
|
|
>
|
2025-08-15 13:44:27 +08:00
|
|
|
<view class="r_sreach">
|
2025-08-20 13:30:34 +08:00
|
|
|
<image
|
|
|
|
|
class="logo_text"
|
|
|
|
|
src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/newmini/logo_text_icon.png"
|
|
|
|
|
>
|
2025-08-15 13:44:27 +08:00
|
|
|
</image>
|
|
|
|
|
|
2025-08-18 13:05:24 +08:00
|
|
|
<view class="sreach" @click="goSreach">
|
2025-08-15 13:44:27 +08:00
|
|
|
<view class="sreach_icon">
|
2025-08-20 13:30:34 +08:00
|
|
|
<image
|
|
|
|
|
src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/newmini/icon_search_line.png"
|
|
|
|
|
></image>
|
2025-08-15 13:44:27 +08:00
|
|
|
</view>
|
|
|
|
|
<view class="sreach_text">
|
|
|
|
|
<text>搜索资讯</text>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
|
2025-08-30 13:50:28 +08:00
|
|
|
<view style="padding: 0 24rpx; margin-top: 30rpx" v-if="tabIndex == 0">
|
2025-08-15 13:44:27 +08:00
|
|
|
<u-swiper :list="list1" @change="change" @click="click"></u-swiper>
|
|
|
|
|
</view>
|
|
|
|
|
|
2025-08-20 13:30:34 +08:00
|
|
|
<view
|
2025-08-30 13:50:28 +08:00
|
|
|
v-if="tabIndex == 0"
|
2025-08-20 13:30:34 +08:00
|
|
|
style="
|
|
|
|
|
padding-top: 30rpx;
|
|
|
|
|
background-color: white;
|
|
|
|
|
padding-bottom: 30rpx;
|
|
|
|
|
"
|
|
|
|
|
>
|
2025-08-15 13:44:27 +08:00
|
|
|
<Tabs></Tabs>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
|
2025-08-20 13:30:34 +08:00
|
|
|
<view style="margin-top: 30rpx" v-if="tabIndex == 0">
|
2025-08-15 13:44:27 +08:00
|
|
|
<RankListMini :newsList="newsList"></RankListMini>
|
|
|
|
|
</view>
|
2025-08-30 13:50:28 +08:00
|
|
|
<!-- 列表区域 -->
|
|
|
|
|
<view style="margin-top: 30rpx" v-if="tabIndex == 2">
|
|
|
|
|
<Domestic />
|
|
|
|
|
</view>
|
|
|
|
|
|
2025-08-17 18:57:49 +08:00
|
|
|
<MineMini v-if="tabIndex == 1" @logout="tabIndex = 0"></MineMini>
|
2025-08-15 13:44:27 +08:00
|
|
|
</view>
|
2025-08-13 11:53:14 +08:00
|
|
|
|
2025-08-20 13:30:34 +08:00
|
|
|
<Tabbar :tabIndex="tabIndex" @tabChange="tabChange"></Tabbar>
|
2025-08-13 11:53:14 +08:00
|
|
|
</view>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup>
|
2025-08-13 13:21:40 +08:00
|
|
|
import { ref, onMounted, defineAsyncComponent, reactive } from "vue";
|
|
|
|
|
import Tabbar from "@/components/mini/Tabbar.vue";
|
2025-08-20 13:30:34 +08:00
|
|
|
import Navbar from "@/components/mini/Navbar.vue";
|
2025-08-13 12:18:25 +08:00
|
|
|
import RankListMini from "@/components/RankListMini.vue";
|
2025-08-13 13:21:40 +08:00
|
|
|
// const Mine = defineAsyncComponent(() => import("@/components/mine.vue"));
|
|
|
|
|
import MineMini from "@/components/mineMini.vue";
|
2025-08-13 13:49:54 +08:00
|
|
|
import Tabs from "@/components/mini/Tabs.vue";
|
2025-08-20 13:30:34 +08:00
|
|
|
import { getTopNews } from "@/api/newsInfo";
|
2025-08-17 17:59:04 +08:00
|
|
|
import { onPageNotFound, onPageScroll, onShow } from "@dcloudio/uni-app";
|
2025-08-20 13:30:34 +08:00
|
|
|
import { getNavHeight } from "@/utils/util";
|
2025-08-30 13:50:28 +08:00
|
|
|
import Domestic from "@/components/domesticMini.vue";
|
2025-08-15 13:44:27 +08:00
|
|
|
|
|
|
|
|
const list1 = reactive([
|
2025-08-20 13:30:34 +08:00
|
|
|
"https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/newmini/banner1.png",
|
|
|
|
|
"https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/newmini/banner1.png",
|
|
|
|
|
"https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/newmini/banner1.png",
|
2025-08-15 13:44:27 +08:00
|
|
|
]);
|
2025-08-13 12:18:25 +08:00
|
|
|
|
|
|
|
|
const newsList = ref([]);
|
|
|
|
|
// 概念标签贴标
|
|
|
|
|
async function getNewsList() {
|
|
|
|
|
newsList.value = await getTopNews({});
|
2025-08-20 13:30:34 +08:00
|
|
|
uni.stopPullDownRefresh();
|
2025-08-13 12:18:25 +08:00
|
|
|
}
|
2025-08-13 11:53:14 +08:00
|
|
|
|
|
|
|
|
const tabIndex = ref(0);
|
|
|
|
|
function tabChange(index) {
|
|
|
|
|
tabIndex.value = index;
|
2025-08-13 13:21:40 +08:00
|
|
|
|
|
|
|
|
switch (index) {
|
|
|
|
|
case 0:
|
2025-08-20 13:30:34 +08:00
|
|
|
getNewsList();
|
2025-08-13 13:21:40 +08:00
|
|
|
break;
|
2025-08-15 13:44:27 +08:00
|
|
|
case 1:
|
|
|
|
|
break;
|
2025-08-13 13:21:40 +08:00
|
|
|
}
|
2025-08-13 11:53:14 +08:00
|
|
|
}
|
|
|
|
|
|
2025-08-18 13:05:24 +08:00
|
|
|
function goSreach() {
|
2025-08-27 17:30:50 +08:00
|
|
|
if (uni.getStorageSync("token")) {
|
|
|
|
|
uni.navigateTo({
|
|
|
|
|
url: "/pages/sreachReq/index",
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
uni.navigateTo({
|
|
|
|
|
url: "/pages/login/indexMini",
|
|
|
|
|
});
|
|
|
|
|
}
|
2025-08-18 13:05:24 +08:00
|
|
|
}
|
|
|
|
|
|
2025-08-20 13:30:34 +08:00
|
|
|
const isScroll = ref(false);
|
2025-08-17 17:59:04 +08:00
|
|
|
onPageScroll((val) => {
|
2025-08-30 13:50:28 +08:00
|
|
|
if (tabIndex.value == 0 || tabIndex.value == 1) {
|
|
|
|
|
if (val.scrollTop > 150) {
|
|
|
|
|
isScroll.value = true;
|
|
|
|
|
} else {
|
|
|
|
|
isScroll.value = false;
|
|
|
|
|
}
|
2025-08-17 17:59:04 +08:00
|
|
|
} else {
|
2025-08-30 13:50:28 +08:00
|
|
|
if (val.scrollTop > 80) {
|
|
|
|
|
isScroll.value = true;
|
|
|
|
|
} else {
|
|
|
|
|
isScroll.value = false;
|
|
|
|
|
}
|
2025-08-17 17:59:04 +08:00
|
|
|
}
|
2025-08-20 13:30:34 +08:00
|
|
|
});
|
2025-08-17 17:59:04 +08:00
|
|
|
|
2025-08-15 13:44:27 +08:00
|
|
|
onShow(() => {
|
2025-08-20 13:30:34 +08:00
|
|
|
if (uni.getStorageSync("homeTabIndex") == 1) {
|
|
|
|
|
tabChange(1);
|
2025-08-17 18:49:44 +08:00
|
|
|
} else {
|
2025-08-20 13:30:34 +08:00
|
|
|
tabChange(0);
|
2025-08-17 18:49:44 +08:00
|
|
|
}
|
2025-08-18 09:49:28 +08:00
|
|
|
|
2025-08-20 13:30:34 +08:00
|
|
|
uni.setStorageSync("homeTabIndex", null);
|
|
|
|
|
});
|
2025-08-15 13:44:27 +08:00
|
|
|
|
2025-08-13 12:18:25 +08:00
|
|
|
onMounted(async () => {
|
2025-08-20 13:30:34 +08:00
|
|
|
getNewsList();
|
2025-08-13 12:18:25 +08:00
|
|
|
});
|
2025-08-13 11:53:14 +08:00
|
|
|
</script>
|
|
|
|
|
|
2025-08-15 13:44:27 +08:00
|
|
|
<style scoped lang="scss">
|
|
|
|
|
.top_bk {
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 300rpx;
|
|
|
|
|
position: fixed;
|
|
|
|
|
top: 0;
|
|
|
|
|
left: 0;
|
|
|
|
|
z-index: 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.content {
|
|
|
|
|
position: relative;
|
|
|
|
|
z-index: 99999;
|
2025-08-17 17:59:04 +08:00
|
|
|
padding-bottom: 300rpx;
|
2025-08-15 13:44:27 +08:00
|
|
|
|
|
|
|
|
.r_sreach {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
padding: 0 30rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.logo_text {
|
|
|
|
|
width: 88rpx;
|
|
|
|
|
height: 45rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.sreach {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
padding: 0rpx 30rpx;
|
|
|
|
|
background-color: #fff;
|
|
|
|
|
border-radius: 100rpx;
|
|
|
|
|
width: 47vw;
|
|
|
|
|
height: 68rpx;
|
|
|
|
|
margin-left: 20rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.sreach_icon {
|
|
|
|
|
margin-right: 10rpx;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
|
|
|
|
image {
|
|
|
|
|
width: 35rpx;
|
|
|
|
|
height: 35rpx;
|
|
|
|
|
margin-top: 5rpx;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.sreach_text {
|
|
|
|
|
font-family: PingFangSC, PingFang SC;
|
|
|
|
|
font-weight: 400;
|
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
color: #999999;
|
|
|
|
|
line-height: 33rpx;
|
|
|
|
|
text-align: left;
|
|
|
|
|
font-style: normal;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|