cankao-h5/src/pages/realtimeInfo/rankDetail.vue

288 lines
6.4 KiB
Vue
Raw Normal View History

2025-08-10 16:44:02 +08:00
<template>
<view class="all">
<PageHeaderView :title="type == 0 ? '热门行业池Top10' : '风口概念池Top10'"></PageHeaderView>
2025-08-10 16:44:02 +08:00
<!-- 类目标签 start -->
<view class="page_content">
<view class="tag_list">
<view :class="['tag_item', clickTagIndex == index ? tagClickedClass : '']" class="tag_item"
v-for="(item, index) in tagList" :key="index" @click="clickTag(index)">
2025-08-10 16:44:02 +08:00
{{ item.content }}
</view>
</view>
</view>
<!-- 类目标签 end -->
<!-- 列表 start -->
<view class="list">
<view v-for="(item, index) in list" :key="index" class="news-item" @click="goDetail(item)">
2025-08-10 16:44:02 +08:00
<view class="news-content">
<text class="news-title">{{ item.title }}</text>
<text class="news-desc">{{ item.summary }}</text>
<view class="news-meta">
<text class="source">{{ item.tag }}</text>
<text class="time">{{ item.time }}</text>
</view>
</view>
</view>
</view>
<!-- 列表 end -->
</view>
</template>
<script setup>
import { ref, onMounted, onUnmounted, reactive } from "vue";
import PageHeaderView from "@/components/PageHeaderView.vue";
import {
getindustryCount,
getConceptCount,
getTopNews,
getTopIndustry_d,
getTopConcept_d,
getNews_cnt_d,
newsInfoScore,
} from "@/api/newsInfo";
import { getListByTag, getListByTagIndustry } from "@/api/detail";
import dayjs from "dayjs/esm/index";
const props = defineProps({
type: {
type: String,
default: () => 0,
},
index: {
type: String,
default: () => 0,
},
});
const clickTagIndex = ref(0);
const tagList = ref([]);
const listData = ref([
{
title: "伊朗考虑报复美国对其核设施的袭击",
summary:
"伊朗誓言报复,向以色列发射导弹;特朗普提出伊朗政权更迭的想法;伊朗外长在莫斯科会见普京;伊朗考虑关闭霍尔木兹海峡,影...",
source: "日-日本经济新闻",
time: "2025-06-23 10:00",
},
{
title: "刚果延长禁令后,中国钴价和库存飙升",
summary:
"刚果民主共和国将钴出口禁令延长至9月导致全球约四分之三的钴供应受到影响。这一消息引发了中国市场的反应。",
source: "彭博社", // 原文第二条未显示明确来源,此处留空,可根据实际补充
time: "", // 原文第二条未显示明确时间,此处留空,可根据实际补充
},
]);
function clickTag(index) {
clickTagIndex.value = index;
getListByTagFn();
}
const industryList = ref([]);
const topConceptList = ref([]);
// 热门行业top10
async function getTopIndustry_dFn() {
industryList.value = await getTopIndustry_d({});
}
// 风口概念池top10
async function getTopConcept_dFn() {
topConceptList.value = await getTopConcept_d({});
}
const list = ref([]);
async function getListByTagFn() {
let id = 0;
if (props.type == 0) {
id = industryList.value[clickTagIndex.value].content;
} else {
id = topConceptList.value[clickTagIndex.value].content;
}
uni.showLoading();
if (props.type == 1) {
// id = 1125;
// 概念标签
let { code, data } = await getListByTag({ name: id });
if (code == 200) {
list.value = data;
}
} else {
// id = 181;
// 行业
let { code, data } = await getListByTagIndustry({ name: id });
if (code == 200) {
list.value = data;
}
}
uni.hideLoading();
}
function goDetail(item) {
uni.navigateTo({
url: "/pages/detail/indexNewsInfo?id=" + item.id,
});
}
const tagClickedClass = ref("");
onMounted(async () => {
if (props.type && props.type == 0) {
// 热门行业池
tagClickedClass.value = "tag_item_act_blue";
// 热门行业top10
await getTopIndustry_dFn();
tagList.value = industryList.value;
} else {
// 风口概念池
tagClickedClass.value = "tag_item_act_yellow";
// 风口概念池top10
await getTopConcept_dFn();
tagList.value = topConceptList.value;
}
if (props.index) {
clickTagIndex.value = props.index;
}
getListByTagFn();
const { aplus_queue } = window;
aplus_queue.push({
action: 'aplus.sendPV',
arguments: [{ is_auto: false }] // 此处上报的数据暂时在后台没有展示
});
2025-08-10 16:44:02 +08:00
});
</script>
<style scoped lang="scss">
.page_content {
padding: 0 30rpx;
}
.tag_list {
display: flex;
flex-wrap: wrap;
gap: 15rpx;
margin-top: 30rpx;
.tag_item {
background: #f3f5f8;
border-radius: 8rpx;
padding: 15rpx 25rpx;
border-radius: 10rpx;
width: calc(50vw - 100rpx);
font-family: PingFangSC, PingFang SC;
font-weight: normal;
font-size: 28rpx;
color: #333333;
line-height: 40rpx;
text-align: center;
font-style: normal;
}
.tag_item_act_blue {
font-family: PingFangSC, PingFang SC;
font-weight: bold;
font-size: 28rpx;
color: #3f80fa;
line-height: 40rpx;
text-align: center;
font-style: normal;
background-color: #f5f8fe;
}
.tag_item_act_yellow {
font-family: PingFangSC, PingFang SC;
font-weight: bold;
font-size: 28rpx;
color: #ffa800;
line-height: 40rpx;
text-align: center;
font-style: normal;
background-color: #fff9ec;
}
}
.news-item {
display: flex;
align-items: flex-start;
margin-bottom: 15px;
border-bottom: 1px solid #f2f2f2;
padding-bottom: 10px;
}
.list {
padding: 0 30rpx;
margin-top: 50rpx;
}
.news-content {
flex: 1;
display: flex;
flex-direction: column;
gap: 10rpx;
}
.news-title {
font-size: 16px;
font-weight: bold;
color: #333;
margin-bottom: 5px;
line-height: 1.2;
}
.news-desc {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 24rpx;
color: #333333;
text-align: left;
font-style: normal;
display: -webkit-box;
/* 设置为WebKit内核的弹性盒子模型 */
-webkit-box-orient: vertical;
/* 垂直排列 */
-webkit-line-clamp: 2;
/* 限制显示三行 */
overflow: hidden;
/* 隐藏超出范围的内容 */
text-overflow: ellipsis;
/* 使用省略号 */
2025-08-10 16:44:02 +08:00
}
.news-meta {
display: flex;
justify-content: space-between;
font-size: 12px;
color: #999;
margin-top: 10rpx;
width: 100%;
}
.time {
margin-left: 10rpx;
}
.source,
.time {
// opacity: 0.8;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 22rpx;
color: #999999;
line-height: 30rpx;
text-align: left;
font-style: normal;
}
</style>