本地图片改对象存储

This commit is contained in:
34701892@qq.com 2025-08-13 11:53:14 +08:00
parent 1b7697d40e
commit 5934ff0b93
36 changed files with 724 additions and 666 deletions

View File

@ -2,10 +2,10 @@
"name": "uni-preset-vue",
"version": "0.0.1",
"scripts": {
"dev:mp-weixin": "uni -p mp-weixin",
"dev:h5": "uni",
"build:h5": "uni build",
"dev:h5:ssr": "uni --ssr",
"dev:mp-weixin": "uni -p mp-weixin",
"dev:mp-alipay": "uni -p mp-alipay",
"dev:app": "uni -p app",
"dev:app-android": "uni -p app-android",
@ -84,4 +84,4 @@
"engines": {
"node": ">=14.0.0"
}
}
}

View File

@ -1,75 +1,40 @@
<template>
<view class="hot-industry-container">
<u-skeleton
rows="5"
title
loading
style="margin-bottom: 30rpx"
v-if="loading"
></u-skeleton>
<u-skeleton rows="5" title loading style="margin-bottom: 30rpx" v-if="loading"></u-skeleton>
<!-- 行业列表 -->
<view class="industry-list" v-else>
<view
v-for="(item, index) in industryList"
:key="index"
class="industry-item"
:style="getItemBgStyle(index)"
@click="goDetail(item, index)"
>
<view v-for="(item, index) in industryList" :key="index" class="industry-item" :style="getItemBgStyle(index)"
@click="goDetail(item, index)">
<!-- 这里预留图标位置可自行补充 <image :src="item.icon" class="industry-icon" /> -->
<view
style="
<view style="
position: absolute;
top: 0;
z-index: 999;
display: flex;
align-items: center;
height: 100%;
"
>
<img
src="@/assets/zixun/ranking_icon_1_1.png"
class="top3numbk"
v-if="index < 3 && index == 0"
/>
<img
src="@/assets/zixun/ranking_icon_2_2.png"
class="top3numbk"
v-else-if="index < 3 && index == 1"
/>
<img
src="@/assets/zixun/ranking_icon_3_3.png"
class="top3numbk"
v-else-if="index < 3 && index == 2"
/>
">
<img src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/ranking_icon_1_1.png" class="top3numbk"
v-if="index < 3 && index == 0" />
<img src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/ranking_icon_2_2.png" class="top3numbk"
v-else-if="index < 3 && index == 1" />
<img src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/ranking_icon_3_3.png" class="top3numbk"
v-else-if="index < 3 && index == 2" />
<text class="rank" v-else>{{ index + 1 }}</text>
<text class="industry-name">{{ item.content }}</text>
</view>
<img
src="@/assets/zixun/ranking_bg_1.png"
class="top3bk"
v-if="index < 3 && index == 0"
/>
<img
src="@/assets/zixun/ranking_bg_2.png"
class="top3bk"
v-if="index < 3 && index == 1"
/>
<img
src="@/assets/zixun/ranking_bg_3.png"
class="top3bk"
v-if="index < 3 && index == 2"
/>
<img src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/ranking_bg_1.png" class="top3bk"
v-if="index < 3 && index == 0" />
<img src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/ranking_bg_2.png" class="top3bk"
v-if="index < 3 && index == 1" />
<img src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/ranking_bg_3.png" class="top3bk"
v-if="index < 3 && index == 2" />
</view>
</view>
<LoginPopup
:show="LoginShow"
@handlePopupClose="handlePopupClose"
@handlePopupSuccessCallback="handlePopupSuccessCallback"
@handlePopupErrorCallback="handlePopupErrorCallback"
/>
<LoginPopup :show="LoginShow" @handlePopupClose="handlePopupClose"
@handlePopupSuccessCallback="handlePopupSuccessCallback" @handlePopupErrorCallback="handlePopupErrorCallback" />
</view>
</template>
@ -182,27 +147,32 @@ const handlePopupErrorCallback = () => {
.hot-industry-container {
padding: 10px;
}
.header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
}
.title {
font-size: 16px;
font-weight: bold;
color: #333;
}
.view-all {
font-size: 14px;
color: #999;
text-decoration: underline;
}
.industry-list {
display: flex;
flex-direction: column;
gap: 8px;
}
.industry-item {
display: flex;
align-items: center;
@ -210,11 +180,13 @@ const handlePopupErrorCallback = () => {
position: relative;
height: 74rpx;
}
.industry-icon {
width: 24px;
height: 24px;
margin-right: 8px;
}
.rank {
margin-left: 30rpx;
@ -227,6 +199,7 @@ const handlePopupErrorCallback = () => {
font-style: normal;
margin-right: 40rpx;
}
.industry-name {
font-family: PingFangSC, PingFang SC;
font-weight: 400;

View File

@ -5,7 +5,8 @@
<!-- 搜索框 -->
<view class="sreach">
<image src="@/static/logo_mini.png" class="sreach_icon" @click="messageShow = true"></image>
<u-input v-model="keyWord" prefixIcon="search" style="flex: 1" placeholder="搜索资讯" placeholderClass="search_placeholder" class="sreach_input" :border="false" @confirm="goSreach" />
<u-input v-model="keyWord" prefixIcon="search" style="flex: 1" placeholder="搜索资讯"
placeholderClass="search_placeholder" class="sreach_input" :border="false" @confirm="goSreach" />
</view>
<!-- 渐变的背景 -->
@ -66,7 +67,8 @@
</view>
<view class="content">
<KnowEarlier @handleUpdateData="handleUpdateData" :isNewFlash="isNewFlash" :data="newsFastList" v-if="columnIndex === 0" />
<KnowEarlier @handleUpdateData="handleUpdateData" :isNewFlash="isNewFlash" :data="newsFastList"
v-if="columnIndex === 0" />
</view>
</view>
</view>
@ -74,7 +76,9 @@
<u-overlay :show="overlayShow" zIndex="101" @click="overlayShow = false"></u-overlay>
<!-- <KnowEarlier @handleUpdateData="handleUpdateData" :isNewFlash="isNewFlash" :data="newsFastList" v-if="columnIndex === 0" /> -->
<WorldlyAffairs @changelockType="changelockType" @handleSub="handleSub" :finish="finish" v-if="columnIndex === 1" :column="tagsList[columnIndex]" :bannerList="bannerList" :titleCardList="titleCardList" :worldNewsList="worldNewsList" @onload="onload" />
<WorldlyAffairs @changelockType="changelockType" @handleSub="handleSub" :finish="finish" v-if="columnIndex === 1"
:column="tagsList[columnIndex]" :bannerList="bannerList" :titleCardList="titleCardList"
:worldNewsList="worldNewsList" @onload="onload" />
</view>
</template>
@ -85,7 +89,7 @@ import KnowEarlier from "@/pages/knowEarlier/index.vue";
import WorldlyAffairs from "@/pages/worldlyAffairs/index.vue";
import { getNewsFast, checkNews, getNewsColumn, getNewsTag, getNewsList, unlockColumn } from "@/api";
import { Session } from "@/utils/storage";
import down from "@/assets/images/down.png";
import down from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/down.png";
import VipHeader from "./vipHeader";
import { scrollToTop, formatTime } from "@/utils/util.ts";
import { useShareStore } from "@/stores/shareStore";
@ -99,7 +103,7 @@ const props = defineProps({
},
columnState: {
type: Object,
default: () => {},
default: () => { },
},
});
@ -462,8 +466,10 @@ onUnmounted(() => {
background-color: #f6f6f6;
box-sizing: border-box;
overflow-y: auto;
.homeTopContainer {
position: relative;
.sreach {
width: 100%;
display: flex;
@ -471,17 +477,19 @@ onUnmounted(() => {
box-sizing: border-box;
padding: 20rpx 30rpx;
gap: 30rpx;
background-image: url(@/assets/images/vip_header_search_bg.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/vip_header_search_bg.png);
background-size: cover;
position: fixed;
left: 0;
top: 0;
z-index: 2;
.sreach_icon {
width: 78rpx;
height: 60rpx;
margin-top: 3rpx;
}
.sreach_input {
background-color: #fff;
border-radius: 36rpx;
@ -500,7 +508,7 @@ onUnmounted(() => {
top: 0;
width: 100%;
height: 366rpx;
background-image: url(@/assets/images/vip_header_content_bg.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/vip_header_content_bg.png);
background-size: cover;
margin-top: 100rpx;
}
@ -521,12 +529,14 @@ onUnmounted(() => {
box-sizing: border-box;
padding-top: 20rpx;
width: 100%;
.tabsList {
display: flex;
// background-color: aqua;
background: linear-gradient(90deg, #ffc795 0%, #ffad9a 100%);
border-top-left-radius: 32rpx;
border-top-right-radius: 32rpx;
.tab_item {
width: 52%;
height: 126rpx;
@ -535,6 +545,7 @@ onUnmounted(() => {
box-sizing: border-box;
padding-top: 24rpx;
color: #fff;
&.active {
border-top-left-radius: 32rpx;
border-top-right-radius: 32rpx;
@ -554,6 +565,7 @@ onUnmounted(() => {
top: 0;
margin-top: 106rpx;
backdrop-filter: blur(60rpx);
// z-index: ;
.newsBg {
height: 79.52rpx;
@ -563,14 +575,16 @@ onUnmounted(() => {
position: absolute;
left: 0;
top: 0;
.newsFontBg {
width: 255.78rpx;
height: 79.52rpx;
background-image: url(@/assets/images/newFontBg.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/newFontBg.png);
background-size: cover;
}
}
.content{
.content {
max-height: calc(100vh - 300rpx);
// overflow-y: auto
// height: 100vh;
@ -580,6 +594,7 @@ onUnmounted(() => {
}
}
}
// .index-wrap {
// min-height: calc(100vh - 130rpx);
// background-color: #f6f6f6;
@ -638,57 +653,57 @@ onUnmounted(() => {
// }
// //
// .tabsListContainer {
// box-sizing: border-box;
// padding-right: 60rpx;
// padding-bottom: 12rpx;
// display: flex;
// overflow-x: auto;
// position: relative;
// // background-color: red;
// margin-top: 30rpx;
// .tabsListContainer {
// box-sizing: border-box;
// padding-right: 60rpx;
// padding-bottom: 12rpx;
// display: flex;
// overflow-x: auto;
// position: relative;
// // background-color: red;
// margin-top: 30rpx;
// .tabsList {
// display: flex;
// overflow-x: auto;
// .tabsList {
// display: flex;
// overflow-x: auto;
// .tabsItem {
// font-size: 12px;
// color: #595959;
// box-sizing: border-box;
// padding: 6rpx 20rpx;
// border: 1px solid #dbdbdb;
// margin-right: 21rpx;
// border-radius: 99rpx;
// flex-shrink: 0;
// .tabsItem {
// font-size: 12px;
// color: #595959;
// box-sizing: border-box;
// padding: 6rpx 20rpx;
// border: 1px solid #dbdbdb;
// margin-right: 21rpx;
// border-radius: 99rpx;
// flex-shrink: 0;
// &.active {
// background-color: rgba(255, 208, 212, 0.4);
// border-color: rgba(255, 208, 212, 0.4);
// color: #e7303f;
// }
// }
// }
// &.active {
// background-color: rgba(255, 208, 212, 0.4);
// border-color: rgba(255, 208, 212, 0.4);
// color: #e7303f;
// }
// }
// }
// .downContainer {
// position: absolute;
// right: 0;
// top: 50%;
// height: 40rpx;
// transform: translateY(-50%);
// background-color: #f6f6f6;
// padding: 3rpx 15rpx 15rpx 15rpx;
// display: flex;
// align-items: center;
// justify-content: center;
// background-image: url(@/assets/images/overlay_world.png);
// .downContainer {
// position: absolute;
// right: 0;
// top: 50%;
// height: 40rpx;
// transform: translateY(-50%);
// background-color: #f6f6f6;
// padding: 3rpx 15rpx 15rpx 15rpx;
// display: flex;
// align-items: center;
// justify-content: center;
// background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/overlay_world.png);
// .downPng {
// width: 30rpx;
// height: 30rpx;
// }
// }
// }
// .downPng {
// width: 30rpx;
// height: 30rpx;
// }
// }
// }
// .tabsPopup {
// width: 100%;
@ -889,5 +904,4 @@ onUnmounted(() => {
// position: absolute;
// width: 180rpx;
// height: 48rpx;
// }
</style>
// }</style>

View File

@ -3,31 +3,20 @@
<!-- 搜索框 -->
<view :class="['sreach', overlayShow && 'searchIncreaseLevel']">
<image src="@/static/logo_mini.png" class="sreach_icon" @click="messageShow = true"></image>
<u-input
v-model="keyWord"
prefixIcon="search"
style="flex: 1"
placeholder="搜索资讯"
placeholderClass="search_placeholder"
class="sreach_input"
:border="false"
@confirm="goSreach"
/>
<u-input v-model="keyWord" prefixIcon="search" style="flex: 1" placeholder="搜索资讯"
placeholderClass="search_placeholder" class="sreach_input" :border="false" @confirm="goSreach" />
</view>
<!-- 渐变的背景 -->
<view :class="['vipContentBg', overlayShow && 'increaseLevel']"></view>
<!-- banner -->
<view :class="['headerBanner', overlayShow && 'increaseLevel']" @click="jumpUrl('https://cankao.cs.com.cn/cankao/')"></view>
<view :class="['headerBanner', overlayShow && 'increaseLevel']"
@click="jumpUrl('https://cankao.cs.com.cn/cankao/')"></view>
<!-- tabs -->
<u-sticky offset-top="0">
<view class="headerTabs">
<view class="tabsList">
<view
v-for="(item, index) in colList"
:key="item.id"
:class="['tab_item', index == columnIndex && 'active']"
@click="handleTabsClick(item)"
>
<view v-for="(item, index) in colList" :key="item.id" :class="['tab_item', index == columnIndex && 'active']"
@click="handleTabsClick(item)">
<view :class="['tab_item_icon', `tab_item_${item.id}`]"></view>
<view> {{ item.name }} </view>
</view>
@ -46,13 +35,9 @@
<view class="tabsPopupItem" v-for="item in sortTagsList" :key="item">
<view class="title">{{ item.name }}</view>
<view class="itemList">
<view
v-for="(childItem, index) in item.children"
:key="childItem.id"
<view v-for="(childItem, index) in item.children" :key="childItem.id"
:class="['tabsItem', { active: childItem.id == columnState.subColumn }]"
@click="handleClickSubColumn(childItem.id)"
>{{ childItem.name }}</view
>
@click="handleClickSubColumn(childItem.id)">{{ childItem.name }}</view>
</view>
</view>
</view>
@ -62,28 +47,22 @@
<u-sticky offset-top="51" zIndex="101">
<view class="contenttab">
<view class="tabsList">
<view v-for="(item, index) in colList" :key="item.id" :class="['tab_item', index == columnIndex && 'active']"></view>
<view v-for="(item, index) in colList" :key="item.id" :class="['tab_item', index == columnIndex && 'active']">
</view>
</view>
</view>
</u-sticky>
<u-sticky offset-top="52" zIndex="102" v-if="!overlayShow && columnIndex === 1">
<view
:style="{
// backdropFilter: showtabBg ? 'blur(60rpx)' : '',
height: showtabBg ? '100rpx' : '50rpx',
}"
:class="['tabtop', showtabBg ? 'showbg' : '']"
>
<view :style="{
// backdropFilter: showtabBg ? 'blur(60rpx)' : '',
height: showtabBg ? '100rpx' : '50rpx',
}" :class="['tabtop', showtabBg ? 'showbg' : '']">
<view class="tabsListContainer" v-if="!overlayShow && columnIndex === 1">
<view class="tabList">
<view
v-for="(item, index) in tagsList"
:key="item.id"
<view v-for="(item, index) in tagsList" :key="item.id"
:class="['tabsItem', { active: item.id == columnState.subColumn }]"
@click="handleClickSubColumn(item.id)"
>{{ item.name }}</view
>
@click="handleClickSubColumn(item.id)">{{ item.name }}</view>
</view>
<view class="downContainer" @click="showTabsPopup" v-if="tagsList.length > 0">
<image :src="down" class="downPng" />
@ -110,27 +89,12 @@
<image :src="down" class="downPng" />
</view>
</view> -->
<KnowEarlier
@handlePopupClose="handlePopupClose"
@handleShowPay="handleShowPay"
@handleShareTip="handleShareTip"
@handleUpdateData="handleUpdateData"
:isNewFlash="isNewFlash"
:data="newsFastList"
v-if="columnIndex === 0"
/>
<WorldlyAffairs
@handleShowPay="handleShowPay"
@changelockType="changelockType"
@handleSub="handleSub"
:finish="finish"
v-if="columnIndex === 1"
:column="tagsList[columnIndex]"
:bannerList="bannerList"
:titleCardList="titleCardList"
:worldNewsList="worldNewsList"
@onload="onload"
/>
<KnowEarlier @handlePopupClose="handlePopupClose" @handleShowPay="handleShowPay"
@handleShareTip="handleShareTip" @handleUpdateData="handleUpdateData" :isNewFlash="isNewFlash"
:data="newsFastList" v-if="columnIndex === 0" />
<WorldlyAffairs @handleShowPay="handleShowPay" @changelockType="changelockType" @handleSub="handleSub"
:finish="finish" v-if="columnIndex === 1" :column="tagsList[columnIndex]" :bannerList="bannerList"
:titleCardList="titleCardList" :worldNewsList="worldNewsList" @onload="onload" />
</view>
</view>
@ -173,7 +137,7 @@ import KnowEarlier from "@/pages/knowEarlier/index.vue";
import WorldlyAffairs from "@/pages/worldlyAffairs/index.vue";
import { getNewsFast, checkNews, getNewsTag, getNewsList, unlockColumn } from "@/api";
import { Session } from "@/utils/storage";
import down from "@/assets/images/down.png";
import down from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/down.png";
import { scrollToTop, formatTime, jumpUrl } from "@/utils/util.ts";
import { useShareStore } from "@/stores/shareStore";
import { useTimerStore } from "@/stores/timerStore";
@ -188,7 +152,7 @@ const props = defineProps({
},
columnState: {
type: Object,
default: () => {},
default: () => { },
},
});
const shareShow = ref(false);
@ -591,12 +555,15 @@ onUnmounted(() => {
background-color: #f6f6f6;
box-sizing: border-box;
overflow-y: auto;
.increaseLevel {
z-index: 103 !important;
}
.searchIncreaseLevel {
z-index: 104 !important;
}
//
.sreach {
width: 100%;
@ -605,7 +572,7 @@ onUnmounted(() => {
box-sizing: border-box;
padding: 20rpx 30rpx;
gap: 30rpx;
background-image: url(@/assets/images/vip_header_search_bg.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/vip_header_search_bg.png);
background-size: cover;
position: fixed;
left: 0;
@ -617,6 +584,7 @@ onUnmounted(() => {
height: 60rpx;
margin-top: 3rpx;
}
.sreach_input {
background-color: #fff;
border-radius: 36rpx;
@ -628,6 +596,7 @@ onUnmounted(() => {
color: #717171 !important;
}
}
//
.vipContentBg {
position: fixed;
@ -635,11 +604,12 @@ onUnmounted(() => {
top: 0;
width: 100%;
height: 366rpx;
background-image: url(@/assets/images/vip_header_content_bg.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/vip_header_content_bg.png);
background-size: cover;
margin-top: 100rpx;
z-index: 101;
}
// banner
.headerBanner {
margin: 0rpx 26rpx;
@ -649,7 +619,7 @@ onUnmounted(() => {
top: 0;
margin-top: 116rpx;
z-index: 101;
background-image: url(@/assets/images/swiper_vip.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/swiper_vip.png);
background-size: contain;
background-position: center;
background-repeat: no-repeat;
@ -659,12 +629,14 @@ onUnmounted(() => {
box-sizing: border-box;
padding-top: 20rpx;
width: 100%;
.tabsList {
display: flex;
background: linear-gradient(90deg, #ffc795 0%, #ffad9a 100%);
border-top-left-radius: 27rpx;
border-top-right-radius: 27rpx;
position: relative;
&::before {
content: "";
display: flex;
@ -676,6 +648,7 @@ onUnmounted(() => {
top: 0;
z-index: -1;
}
.tab_item {
width: 52%;
height: 86rpx;
@ -686,19 +659,21 @@ onUnmounted(() => {
// padding-top: 2rpx;
color: #fff;
font-family: "SourceHanSansCN-Medium";
&.active {
border-top-left-radius: 27rpx;
border-top-right-radius: 27rpx;
background: linear-gradient(90deg, #ff5e6a 0%, #e7303f 100%);
box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.3), 0px 0px 3px 0px rgba(143, 15, 25, 0.3);
position: relative;
&::after {
content: "";
display: flex;
width: 30rpx;
height: 25rpx;
// background-color: red;
background-image: url(@/assets/images/arrow.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/arrow.png);
position: absolute;
left: 50%;
bottom: 0;
@ -709,8 +684,10 @@ onUnmounted(() => {
background-repeat: no-repeat;
z-index: -1;
}
// box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.3), 1px 0px 2px 0px rgba(143, 15, 25, 0.3);
}
.tab_item_icon {
width: 40rpx;
height: 40rpx;
@ -718,11 +695,13 @@ onUnmounted(() => {
background-size: contain;
background-position: center;
background-repeat: no-repeat;
&.tab_item_13 {
background-image: url(@/assets/images/icon_know.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/icon_know.png);
}
&.tab_item_14 {
background-image: url(@/assets/images/icon_worldly.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/icon_worldly.png);
}
}
}
@ -731,6 +710,7 @@ onUnmounted(() => {
.contenttab {
position: relative;
&::before {
content: "";
display: flex;
@ -744,10 +724,12 @@ onUnmounted(() => {
z-index: 101;
backdrop-filter: blur(60rpx);
}
.tabsList {
display: flex;
background: linear-gradient(90deg, #ffc795 0%, #ffad9a 100%);
position: relative;
// z-index: ;
.tab_item {
width: 52%;
@ -767,6 +749,7 @@ onUnmounted(() => {
.Vipcontent {
position: relative;
box-sizing: border-box;
.content {
position: relative;
z-index: 101;
@ -786,6 +769,7 @@ onUnmounted(() => {
padding: 0 30rpx;
position: relative;
z-index: 101;
.tabList {
display: flex;
overflow-x: auto;
@ -820,7 +804,7 @@ onUnmounted(() => {
display: flex;
align-items: center;
justify-content: center;
background-image: url(@/assets/images/overlay_world.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/overlay_world.png);
.downPng {
width: 30rpx;
@ -840,9 +824,11 @@ onUnmounted(() => {
top: 0;
border-bottom-left-radius: 30rpx;
border-bottom-right-radius: 30rpx;
.popupContainer {
height: 300rpx;
overflow-y: auto;
.tabsPopupItem {
.title {
font-size: 32rpx;
@ -884,6 +870,7 @@ onUnmounted(() => {
height: 100%;
background-color: rgba(0, 0, 0, 0.8);
z-index: 9999;
.img {
width: 100%;
height: 350rpx;

View File

@ -2,7 +2,7 @@
<view class="info-summary">
<view class="left">
<view style="display: flex; align-items: center; gap: 10rpx">
<img src="@/assets/zixun/title_text.png" class="banner_title" />
<img src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/title_text.png" class="banner_title" />
<text class="date">({{ dayjs(new Date().getTime()).format("MM/DD") }})</text>
</view>

View File

@ -1,36 +1,22 @@
<template>
<view class="news-rank-list">
<u-skeleton
rows="5"
title
loading
style="margin-bottom: 30rpx"
v-if="loading"
></u-skeleton>
<u-skeleton rows="5" title loading style="margin-bottom: 30rpx" v-if="loading"></u-skeleton>
<view class="list" v-else>
<view
v-for="(item, index) in rankListLocal"
:key="index"
class="news-item"
@click="goDetail(item, 0)"
>
<view v-for="(item, index) in rankListLocal" :key="index" class="news-item" @click="goDetail(item, 0)">
<view class="rank-tag">
<view v-if="index == 0" class="rank-text-top3">
<img src="@/assets/zixun/ranking_icon_1.png" />
<img src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/ranking_icon_1.png" />
</view>
<view v-else-if="index == 1" class="rank-text-top3">
<img src="@/assets/zixun/ranking_icon_2.png" />
<img src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/ranking_icon_2.png" />
</view>
<view v-else-if="index == 2" class="rank-text-top3">
<img src="@/assets/zixun/ranking_icon_3.png" />
<img src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/ranking_icon_3.png" />
</view>
<text class="rank-text" v-else>{{ index + 1 }}</text>
</view>
<view
class="news-content"
:style="{ filter: Session.get('token') ? '' : 'blur(5px)' }"
>
<view class="news-content" :style="{ filter: Session.get('token') ? '' : 'blur(5px)' }">
<text class="news-title">{{ item.title }}</text>
<text class="news-desc">{{ item.summary }}</text>
<view class="news-meta">
@ -42,8 +28,7 @@
</view>
<text class="score">
<text v-if="index < 3">资讯评分</text>
{{ item.news_score }}</text
>
{{ item.news_score }}</text>
</view>
</view>
</view>
@ -52,16 +37,12 @@
<view @click="isExp = !isExp" class="r_exp">
<text v-if="isExp">收起</text>
<text v-else>展开全部</text>
<img src="@/assets/zixun/up_icon.png" class="exp_up" v-if="isExp" />
<img src="@/assets/zixun/down_icon.png" class="exp_up" v-else />
<img src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/up_icon.png" class="exp_up" v-if="isExp" />
<img src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/down_icon.png" class="exp_up" v-else />
</view>
<LoginPopup
:show="LoginShow"
@handlePopupClose="handlePopupClose"
@handlePopupSuccessCallback="handlePopupSuccessCallback"
@handlePopupErrorCallback="handlePopupErrorCallback"
/>
<LoginPopup :show="LoginShow" @handlePopupClose="handlePopupClose"
@handlePopupSuccessCallback="handlePopupSuccessCallback" @handlePopupErrorCallback="handlePopupErrorCallback" />
</view>
</template>
@ -223,11 +204,16 @@ const handlePopupErrorCallback = () => {
text-align: left;
font-style: normal;
display: -webkit-box; /* 设置为WebKit内核的弹性盒子模型 */
-webkit-box-orient: vertical; /* 垂直排列 */
-webkit-line-clamp: 2; /* 限制显示三行 */
overflow: hidden; /* 隐藏超出范围的内容 */
text-overflow: ellipsis; /* 使用省略号 */
display: -webkit-box;
/* 设置为WebKit内核的弹性盒子模型 */
-webkit-box-orient: vertical;
/* 垂直排列 */
-webkit-line-clamp: 2;
/* 限制显示三行 */
overflow: hidden;
/* 隐藏超出范围的内容 */
text-overflow: ellipsis;
/* 使用省略号 */
}
.news-meta {

View File

@ -1,50 +1,26 @@
<template>
<view class="list" v-if="data.length">
<view
class="listItem"
v-for="item in props.data"
:key="item.id"
@click="handleClick(item)"
>
<view class="listItem" v-for="item in props.data" :key="item.id" @click="handleClick(item)">
<view class="listItemHeader">
<view class="ListItemImg" v-if="item.picture">
<image
:src="item.picture"
class="ListItemImage"
mode="widthFix"
style="width: 204rpx"
/>
<image
class="ListItemBg"
:src="item.picture"
style="width: 100%; height: 100%"
/>
<image :src="item.picture" class="ListItemImage" mode="widthFix" style="width: 204rpx" />
<image class="ListItemBg" :src="item.picture" style="width: 100%; height: 100%" />
<view class="tag" v-if="item.newType !== 'search'">{{
item.tag
}}</view>
</view>
<view class="listItemHeaderContent">
<view
:class="['listItemTitle', !item.summary && 'noAbstract']"
v-if="item.newType !== 'search'"
>
<view :class="['listItemTitle', !item.summary && 'noAbstract']" v-if="item.newType !== 'search'">
{{ item.title }}
</view>
<view class="listItemTitleContent" v-else>
<text
class="listItemTitleContentText"
v-html="item.MarkInRedTitle || item.title"
></text>
<text class="listItemTitleContentText" v-html="item.MarkInRedTitle || item.title"></text>
</view>
<view class="listItemAbstract" v-if="item.newType !== 'search'">{{
item.summary
}}</view>
<view
class="listItemAbstract"
v-else
v-html="item.MarkInRedContent || item.abstract"
></view>
<view class="listItemAbstract" v-else v-html="item.MarkInRedContent || item.abstract"></view>
</view>
</view>
@ -99,13 +75,16 @@ const handleClick = (item: any) => {
padding: 0 21rpx 30rpx 21rpx;
border-radius: 10rpx;
font-family: "SourceHanSansCN-Regular";
.listItem {
border-bottom: 2rpx solid rgba(51, 51, 51, 0.1);
box-sizing: border-box;
padding: 30rpx 0;
.listItemHeader {
display: flex;
justify-content: space-between;
.ListItemImg {
width: 204rpx;
height: 204rpx;
@ -115,6 +94,7 @@ const handleClick = (item: any) => {
flex-shrink: 0;
position: relative;
margin-right: 12rpx;
.ListItemImage {
width: 100%;
position: absolute;
@ -122,9 +102,11 @@ const handleClick = (item: any) => {
transform: translateY(-50%);
z-index: 9;
}
.ListItemBg {
filter: blur(30rpx);
}
.tag {
position: absolute;
right: 0;
@ -144,6 +126,7 @@ const handleClick = (item: any) => {
width: 100%;
box-sizing: border-box;
padding-left: 0rpx;
.listItemTitle {
// font-size: 32rpx;
font-size: var(--h1-font-size);
@ -157,15 +140,17 @@ const handleClick = (item: any) => {
// font-weight: bold;
word-break: break-all;
font-family: "SourceHanSansCN-Medium";
// text-align: left;
&.noAbstract {
-webkit-line-clamp: 4;
}
.isVip {
display: inline-block;
width: 50rpx;
height: 29rpx;
background-image: url(@/assets/images/icon_vip.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/icon_vip.png);
background-size: cover;
}
}
@ -186,7 +171,7 @@ const handleClick = (item: any) => {
display: inline-block;
width: 50rpx;
height: 29rpx;
background-image: url(@/assets/images/icon_vip.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/icon_vip.png);
background-size: cover;
box-sizing: border-box;
margin-right: 12rpx;
@ -208,6 +193,7 @@ const handleClick = (item: any) => {
}
}
}
.listItemContent {
// font-size: 20rpx;
font-size: var(--h6-font-size);
@ -217,6 +203,7 @@ const handleClick = (item: any) => {
justify-content: space-between;
box-sizing: border-box;
padding: 21rpx 0 0 0;
.listItemData {
display: flex;
align-items: center;
@ -224,6 +211,7 @@ const handleClick = (item: any) => {
.dataItem {
margin-right: 12rpx;
&:last-child {
margin-right: 0;
}
@ -235,6 +223,7 @@ const handleClick = (item: any) => {
display: flex;
box-sizing: border-box;
padding-top: 21rpx;
.tag {
box-sizing: border-box;
padding: 6rpx 16rpx;
@ -249,7 +238,7 @@ const handleClick = (item: any) => {
.listItemFooter {
height: 74rpx;
margin-top: 15rpx;
background-image: url(@/assets/images/vip_sub_2.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/vip_sub_2.png);
background-size: cover;
}
}

View File

@ -44,7 +44,8 @@
<!-- 订阅 支付 -->
<Pay :show="payShow" @onClick="handleClose" @handleSub="handleClickPay" />
<!-- 登录弹框 -->
<LoginPopup :show="LoginShow" @handlePopupClose="handlePopupClose" @handlePopupSuccessCallback="handlePopupSuccessCallback" />
<LoginPopup :show="LoginShow" @handlePopupClose="handlePopupClose"
@handlePopupSuccessCallback="handlePopupSuccessCallback" />
</view>
</template>
@ -188,7 +189,7 @@ const handlePopupSuccessCallback = () => {
.vipHeader {
height: 168rpx;
background-image: url(@/assets/images/headerBg.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/headerBg.png);
background-size: cover;
box-sizing: border-box;
padding: 24rpx 32rpx 6rpx 40rpx;
@ -198,15 +199,18 @@ const handlePopupSuccessCallback = () => {
position: sticky;
top: 0;
z-index: 9999;
.search {
width: 100vw;
display: flex;
height: 60rpx;
gap: 20rpx;
.logo {
width: 124rpx;
height: 72rpx;
}
.search_icon {
width: 80rpx;
height: 60rpx;
@ -231,13 +235,16 @@ const handlePopupSuccessCallback = () => {
justify-content: space-between;
font-size: 14px;
color: #fff;
.tabItem {
box-sizing: border-box;
padding-bottom: 9rpx;
display: flex;
align-items: center;
&.active {
position: relative;
&::after {
content: "";
position: absolute;
@ -246,7 +253,7 @@ const handlePopupSuccessCallback = () => {
display: block;
width: 44rpx;
height: 6rpx;
background: url("@/assets/images/icon_dot.png") no-repeat center;
background: url("https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/icon_dot.png") no-repeat center;
background-size: 100% 100%;
}
}
@ -268,11 +275,13 @@ const handlePopupSuccessCallback = () => {
display: flex;
align-items: center;
justify-content: center;
.img {
width: 68rpx;
height: 68rpx;
}
}
.gridText {
font-size: 12px;
color: #333;
@ -292,6 +301,7 @@ const handlePopupSuccessCallback = () => {
color: #333;
font-size: 16px;
font-weight: bold;
.recommendedIcon {
width: 44rpx;
height: 44rpx;
@ -320,37 +330,45 @@ const handlePopupSuccessCallback = () => {
// padding: 20rpx 30rpx 0 30rpx;
background-color: #fff;
margin-top: 24rpx;
.articleListHeader {
display: flex;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
padding: 20rpx 30rpx 0 30rpx;
// padding-bottom: 21rpx;
.headerLeft {
display: flex;
align-items: center;
.articleListTitle {
font-size: 32rpx;
color: #333;
font-weight: bold;
}
.articleListTabs {
margin-left: 12rpx;
.articleListTabsItem {
::v-deep {
.u-tabs__wrapper__nav__item {
padding: 0 15rpx;
}
.u-tabs__wrapper__nav__item__text {
font-size: 24rpx;
}
}
// font-size: 60rpx !important;
// background-color: red;
}
}
}
.select {
::v-deep {
.u-checkbox {
@ -358,6 +376,7 @@ const handlePopupSuccessCallback = () => {
width: 24rpx !important;
height: 24rpx !important;
}
uni-text {
span {
font-size: 24rpx;
@ -375,11 +394,13 @@ const handlePopupSuccessCallback = () => {
background-color: #d5f7ff;
}
}
&:nth-child(2) {
.gridImg {
background-color: #fff0c2;
}
}
&:nth-child(3) {
.gridImg {
background-color: #e2eeff;
@ -390,11 +411,13 @@ const handlePopupSuccessCallback = () => {
}
}
}
&:nth-child(4) {
.gridImg {
background-color: #d5f7ff;
}
}
&:nth-child(5) {
.gridImg {
background-color: #fff0c2;
@ -418,8 +441,10 @@ const handlePopupSuccessCallback = () => {
color: #8f212a;
text-align: center;
}
.need-pay-btn {
margin-top: 24rpx;
.btn {
width: 448rpx;
height: 76rpx;

View File

@ -1,18 +1,17 @@
<template>
<view class="menu_title">
<img :src="title_bg" class="menu_title_bk" />
<img src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/title_bg.png" class="menu_title_bk" />
<text class="menut_title_text">{{ title }}</text>
</view>
</template>
<script setup lang="ts">
import title_bg from "@/assets/zixun/title_bg.png";
const props = defineProps({
//
title: {
type: Object,
default: () => {},
default: () => { },
},
});
</script>

View File

@ -33,53 +33,29 @@
<!-- 其他功能区 -->
<view class="otherContainer" v-if="isLoginStatus">
<u-cell-group :border="false">
<u-cell
title="已订阅栏目"
:icon="vip"
isLink
:iconStyle="{ width: '46rpx', height: '32rpx', marginRight: '14rpx' }"
<u-cell title="已订阅栏目" :icon="vip" isLink :iconStyle="{ width: '46rpx', height: '32rpx', marginRight: '14rpx' }"
:titleStyle="{
fontSize: '32rpx',
color: '#333333',
}"
@click="handleClick(-1)"
>
}" @click="handleClick(-1)">
</u-cell>
<u-cell
title="我的收藏"
:icon="star"
isLink
:iconStyle="{ width: '40rpx', height: '40rpx', marginRight: '20rpx' }"
<u-cell title="我的收藏" :icon="star" isLink :iconStyle="{ width: '40rpx', height: '40rpx', marginRight: '20rpx' }"
:titleStyle="{
fontSize: '32rpx',
color: '#333333',
}"
@click="handleClick(0)"
>
}" @click="handleClick(0)">
</u-cell>
<u-cell
title="我喜欢的"
:icon="like"
isLink
:iconStyle="{ width: '40rpx', height: '40rpx', marginRight: '20rpx' }"
<u-cell title="我喜欢的" :icon="like" isLink :iconStyle="{ width: '40rpx', height: '40rpx', marginRight: '20rpx' }"
:titleStyle="{
fontSize: '32rpx',
color: '#333333',
}"
@click="handleClick(1)"
>
}" @click="handleClick(1)">
</u-cell>
<!-- title="浏览记录" :icon="time" :border="false" -->
<u-cell
:icon="time"
isLink
:iconStyle="{ width: '40rpx', height: '40rpx', marginRight: '20rpx' }"
:titleStyle="{
fontSize: '32rpx',
color: '#333333',
}"
@click="handleClick(2)"
>
<u-cell :icon="time" isLink :iconStyle="{ width: '40rpx', height: '40rpx', marginRight: '20rpx' }" :titleStyle="{
fontSize: '32rpx',
color: '#333333',
}" @click="handleClick(2)">
<template #title>
<view class="recordText">
<text style="font-size: 32rpx">浏览记录</text>
@ -104,12 +80,8 @@
</view>
<!-- 登录弹框 -->
<LoginPopup
:show="LoginShow"
@handlePopupClose="handlePopupClose"
@handlePopupSuccessCallback="handlePopupSuccessCallback"
@handlePopupErrorCallback="handlePopupErrorCallback"
/>
<LoginPopup :show="LoginShow" @handlePopupClose="handlePopupClose"
@handlePopupSuccessCallback="handlePopupSuccessCallback" @handlePopupErrorCallback="handlePopupErrorCallback" />
</view>
</template>
@ -118,14 +90,14 @@ import { onMounted, ref } from "vue";
import { onPullDownRefresh, onShow } from "@dcloudio/uni-app";
import { Session } from "@/utils/storage";
import LoginPopup from "@/components/loginPopup/index.vue";
import avatarImg from "@/assets/images/avatar.png";
import column from "@/assets/images/column.png";
import article from "@/assets/images/article.png";
import balance from "@/assets/images/balance.png";
import star from "@/assets/images/star.png";
import like from "@/assets/images/like.png";
import time from "@/assets/images/time.png";
import vip from "@/assets/images/vip.png";
import avatarImg from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/avatar.png";
import column from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/column.png";
import article from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/article.png";
import balance from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/balance.png";
import star from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/star.png";
import like from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/like.png";
import time from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/time.png";
import vip from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/vip.png";
import { useShareStore } from "@/stores/shareStore";
const stores = useShareStore();
const curPages = getCurrentPages();
@ -234,6 +206,7 @@ onPullDownRefresh(() => {
// position: relative;
position: relative;
font-family: "SourceHanSansCN-Medium";
//
.userContainer {
background-color: #fff;
@ -247,10 +220,12 @@ onPullDownRefresh(() => {
flex-wrap: wrap;
width: 216rpx;
margin-left: 40rpx;
.phone {
// font-size: 32rpx;
font-size: var(--h1-font-size);
}
.setUserData {
display: flex;
align-items: center;
@ -260,6 +235,7 @@ onPullDownRefresh(() => {
}
}
}
//
.subscribeContainer {
background-color: #fff;
@ -267,6 +243,7 @@ onPullDownRefresh(() => {
padding: 21rpx 36rpx;
box-sizing: border-box;
border-radius: 8rpx;
.subTitle {
// font-size: 32rpx;
font-size: var(--h1-font-size);
@ -274,11 +251,13 @@ onPullDownRefresh(() => {
margin-bottom: 30rpx;
font-weight: bold;
}
::v-deep {
.u-grid-item {
margin-right: 30rpx;
}
}
.gridImg {
width: 96rpx;
height: 96rpx;
@ -288,26 +267,31 @@ onPullDownRefresh(() => {
display: flex;
align-items: center;
justify-content: center;
.img {
width: 64rpx;
height: 64rpx;
}
}
.gridText {
// font-size: 24rpx;
font-size: var(--h4-font-size);
color: #333;
}
}
//
.otherContainer {
background-color: #fff;
margin: 30rpx 20rpx;
box-sizing: border-box;
border-radius: 8rpx;
.recordText {
display: flex;
align-items: center;
.tips {
// font-size: 24rpx;
font-size: var(--h4-font-size);
@ -330,13 +314,15 @@ onPullDownRefresh(() => {
bottom: 500rpx;
left: 50%;
transform: translateX(-50%);
.notLoginImg {
width: 278rpx;
height: 220rpx;
// border: 1px solid;
background-image: url(@/assets/images/notLogin.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/notLogin.png);
background-size: cover;
}
.notLoginText {
width: 100%;
text-align: center;
@ -366,6 +352,7 @@ onPullDownRefresh(() => {
left: 50%;
transform: translateX(-50%);
font-family: "SourceHanSansCN-Regular";
&.loginBtn {
width: 256rpx;
height: 100rpx;

View File

@ -0,0 +1,49 @@
<template>
<view class="r_all">
<view class="top88"></view>
<view class="navnar">
<view>
<u-icon name="arrow-left" color="#000" size="22" v-if="hasBack"></u-icon>
</view>
<text>{{ title }}</text>
<view style="width: 15%;"></view>
</view>
</view>
</template>
<script setup>
import { ref, onMounted, onUnmounted, reactive } from "vue";
const props = defineProps({
//
title: {
type: String,
default: () => "中证参考",
},
//
hasBack: {
type: Boolean,
default: () => true,
},
});
onMounted(async () => { });
</script>
<style scoped lang="scss">
.r_all {}
.top88 {
width: 100vw;
height: 88rpx;
}
.navnar {
width: 100vw;
height: 120rpx;
color: black;
display: flex;
align-items: center;
justify-content: space-between;
}
</style>

View File

@ -0,0 +1,69 @@
<template>
<view class="tabbar">
<view class="tabbar_item" @click="tabChange(0)">
<image v-if="tabIndex == 1"
src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/home_icon_normal.png"
class="tabbar_img" />
<image v-if="tabIndex == 0"
src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/home_icon_press.png"
class="tabbar_img" />
<text class="tabbar_title" :style="{ color: tabIndex == 0 ? '#3F80FA' : '#666666' }">首页</text>
</view>
<view class="tabbar_item" @click="tabChange(1)">
<image v-if="tabIndex == 0"
src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/all_icon_normal.png"
class="tabbar_img" />
<image v-if="tabIndex == 1"
src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/all_icon_press.png" class="tabbar_img" />
<text class="tabbar_title" :style="{ color: tabIndex == 1 ? '#3F80FA' : '#666666' }">全部</text>
</view>
</view>
</template>
<script setup>
import { ref, onMounted, onUnmounted, reactive } from "vue";
const tabIndex = ref(0);
function tabChange(index) {
tabIndex.value = index;
}
onMounted(async () => { });
</script>
<style scoped lang="scss">
.tabbar {
display: flex;
height: 150rpx;
position: fixed;
bottom: 0;
box-shadow: 0 -2rpx 10rpx rgba(128, 128, 128, 0.2);
width: 100vw;
.tabbar_item {
width: 50%;
display: flex;
flex-direction: column;
align-items: center;
margin-top: 30rpx;
}
.tabbar_img {
width: 44rpx;
height: 44rpx;
}
.tabbar_title {
display: flex;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 20rpx;
color: #666666;
line-height: 28rpx;
text-align: left;
font-style: normal;
margin-top: 5rpx;
}
}
</style>

View File

@ -11,7 +11,8 @@
<text class="l-price">{{ item.value }}</text>
</view>
<view class="radio-label-right">
<radio :class="['radio-icon', { 'radio-icon-checked': item.name === radioValue.name }]" :value="item" :checked="item.name === radioValue.name" />
<radio :class="['radio-icon', { 'radio-icon-checked': item.name === radioValue.name }]" :value="item"
:checked="item.name === radioValue.name" />
</view>
</label>
</view>
@ -117,18 +118,22 @@ const handleSub = () => {
<style lang="scss" scoped>
.subscribe-wrap {
::v-deep {
.u-action-sheet,
.u-action-sheet__header__title {
text-align: left;
// padding-top: 48rpx;
}
.u-action-sheet__header {
padding: 0;
}
.u-action-sheet__header__title {
padding-top: 48rpx;
padding-left: 40rpx;
}
.u-action-sheet__header__icon-wrap {
padding-top: 24rpx;
}
@ -151,6 +156,7 @@ const handleSub = () => {
padding: 20rpx 40rpx 40rpx;
background-color: #fff;
background-color: red;
.radio-item {
width: 100%;
height: 100rpx;
@ -290,6 +296,7 @@ const handleSub = () => {
.price {
text-align: right;
padding: 0 60rpx;
.p-txt {
font-size: var(--h4-font-size);
color: #000;
@ -305,6 +312,7 @@ const handleSub = () => {
.agree-pay-btn {
margin-top: 60rpx;
padding: 0 60rpx;
.pay-btn {
border-radius: 20rpx;
height: 94rpx;
@ -314,6 +322,7 @@ const handleSub = () => {
// font-size: 32rpx;
font-size: var(--h1-font-size);
color: #c07e44;
&::after {
border: none;
}
@ -325,17 +334,17 @@ const handleSub = () => {
}
}
.agreement-panel{
.agreement-panel {
display: flex;
align-items: center;
box-sizing: border-box;
justify-content: center;
padding-bottom: 62rpx;
.logo{
.logo {
width: 172rpx;
height: 42rpx;
background-image: url(@/assets/images/detail_logo.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/detail_logo.png);
background-size: contain;
margin-right: 12rpx;
}

View File

@ -1,6 +1,6 @@
<template>
<view class="readable">
<view class="readableLeft">
<!-- <view class="readableLeft">
<view class="readableTime"> {{ props.data.time }} </view>
</view>
<view class="readableRight">
@ -12,9 +12,7 @@
<image :src="props.data.picture" mode="widthFix"></image>
</view>
<!-- 订阅图片 -->
<view class="unreadablebg" v-if="isUnfold && props.data.needpay" @click="handleShowPay(props.data)"></view>
<!-- 查看全文的图片 -->
<view class="viewFullText" v-if="isUnfold && !props.data.needpay" @click="jump(props.data)"></view>
<view class="readableFooter">
@ -38,18 +36,18 @@
</view>
</view>
</view>
</view>
</view> -->
</view>
</template>
<script setup lang="ts">
import { ref } from "vue";
import { Session } from "@/utils/storage";
import SharePng from "@/assets/images/share.png";
import FirePng from "@/assets/images/fire.png";
import activeFirePng from "@/assets/images/activeFire.png";
import DownPng from "@/assets/images/down.png";
import PackUp from "@/assets/images/packUp.png";
// import SharePng from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/share.png";
// import FirePng from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/fire.png";
// import activeFirePng from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/activeFire.png";
// import DownPng from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/down.png";
// import PackUp from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/packUp.png";
const emit = defineEmits(["handleFire", "handleSub", "handleShareTip", "handleShowPay"]);
@ -57,11 +55,11 @@ const props = defineProps({
//
data: {
type: Object,
default: () => {},
default: () => { },
},
handleLogin: {
type: Function,
default: () => {},
default: () => { },
},
});
@ -114,6 +112,7 @@ const handleShareTip = () => {
flex-shrink: 0;
display: flex;
color: #333;
.readableLeft {
flex-shrink: 0;
font-size: var(--h4-font-size);
@ -124,7 +123,7 @@ const handleShareTip = () => {
color: #e7303f;
z-index: 2;
font-weight: bold;
&::before {
content: "";
display: block;
@ -137,12 +136,13 @@ const handleShareTip = () => {
transform: translateX(-50%);
z-index: -1;
}
&::after {
content: "";
display: block;
width: 32rpx;
height: 32rpx;
background-image: url(@/assets/images/radio.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/radio.png);
background-size: contain;
background-repeat: no-repeat;
background-position: center;
@ -155,6 +155,7 @@ const handleShareTip = () => {
z-index: 2;
}
}
.readableRight {
width: 100%;
box-sizing: border-box;
@ -167,11 +168,12 @@ const handleShareTip = () => {
word-break: break-all;
// font-family: "SourceHanSansCN-Medium";
white-space: pre-wrap;
.isVip {
display: inline-block;
width: 50rpx;
height: 29rpx;
background-image: url(@/assets/images/icon_vip.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/icon_vip.png);
background-size: cover;
flex-shrink: 0;
}
@ -185,7 +187,7 @@ const handleShareTip = () => {
text-overflow: ellipsis;
white-space: normal;
word-break: break-all;
}
@ -193,6 +195,7 @@ const handleShareTip = () => {
.articleImg {
width: 100%;
margin-top: 21rpx;
image {
width: 100%;
}
@ -201,7 +204,7 @@ const handleShareTip = () => {
.unreadablebg {
height: 74rpx;
margin-top: 21rpx;
background-image: url(@/assets/images/flash_sub.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/flash_sub.png);
background-size: contain;
box-sizing: border-box;
background-repeat: no-repeat;
@ -211,7 +214,7 @@ const handleShareTip = () => {
.viewFullText {
height: 74rpx;
margin-top: 21rpx;
background-image: url(@/assets/images/viewFullText.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/viewFullText.png);
background-size: contain;
box-sizing: border-box;
background-repeat: no-repeat;
@ -230,6 +233,7 @@ const handleShareTip = () => {
.readableFooterLeft {
color: #c07e44;
.tags {
display: flex;
align-items: center;
@ -237,11 +241,12 @@ const handleShareTip = () => {
border-radius: 4rpx;
box-sizing: border-box;
padding: 6rpx 12rpx;
.icon_tag {
width: 20rpx;
height: 20rpx;
// background-color: red;
background-image: url(@/assets/images/icon_tag.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/icon_tag.png);
background-size: contain;
background-repeat: no-repeat;
background-position: center;
@ -255,8 +260,10 @@ const handleShareTip = () => {
.readableFooterRight {
display: flex;
align-items: center;
.item {
margin-right: 30rpx;
&:last-child {
margin-right: 0;
}
@ -264,15 +271,18 @@ const handleShareTip = () => {
&.share {
width: 24rpx;
height: 24rpx;
image {
width: 100%;
height: 100%;
}
}
&.fire,
&.arrow {
display: flex;
align-items: center;
image {
width: 24rpx;
height: 24rpx;
@ -293,6 +303,7 @@ const handleShareTip = () => {
height: 100%;
background-color: rgba(0, 0, 0, 0.8);
z-index: 9999;
.img {
width: 100%;
height: 350rpx;

View File

@ -6,7 +6,8 @@
</view>
<view class="itemList">
<view v-for="(item, index) in props.data.children" :key="index">
<Readable @handleShowPay="handleShowPay" :handleLogin="props.handleLogin" :data="item" @handleFire="handleFire" @handleSub="handleSub" @handleShareTip="handleShareTip" />
<Readable @handleShowPay="handleShowPay" :handleLogin="props.handleLogin" :data="item" @handleFire="handleFire"
@handleSub="handleSub" @handleShareTip="handleShareTip" />
</view>
</view>
</view>
@ -21,11 +22,11 @@ const props = defineProps({
//
data: {
type: Object,
default: () => {},
default: () => { },
},
handleLogin: {
type: Function,
default: () => {},
default: () => { },
},
});
@ -55,6 +56,7 @@ const handleShareTip = () => {
overflow: hidden;
margin-bottom: 60rpx;
box-shadow: 0px 2px 8px 2px rgba(0, 0, 0, 0.1);
.itemTime {
color: rgba(51, 51, 51, 0.6);
font-size: var(--h4-font-size);
@ -63,6 +65,7 @@ const handleShareTip = () => {
display: flex;
align-items: center;
font-family: "SourceHanSansCN-Medium";
.icon_calendar {
width: 32rpx;
height: 32rpx;
@ -70,8 +73,9 @@ const handleShareTip = () => {
background-size: contain;
background-position: center;
background-repeat: no-repeat;
background-image: url(@/assets/images/icon_calendar.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/icon_calendar.png);
}
// box-shadow: 0 3rpx 6rpx rgba(0, 0, 0, 0.1);
}
}

View File

@ -7,7 +7,7 @@
</text>
</view>
<view class="flashItemFooter">
<view class="unlock" v-if="props.data.item.needpay && !props.noPayShow" @click="showPay">立即解锁</view>
<view class="unlock" v-if="props.data.item.needpay && !props.noPayShow" @click="showPay">立即解锁</view>
<view class="flashItemData">
<view class="dataItem">{{ props.data.readNums || 0 }}阅读</view>
<view class="dataItem">{{ props.data.likeNums || 0 }}点赞</view>
@ -45,6 +45,7 @@ function handleClick() {
box-shadow: 0px 1px 4px rgba(12, 12, 13, 0.1);
background-color: #fff;
word-break: break-all;
.flashItemHeader {
// font-size: 28rpx;
font-size: var(--h2-font-size);
@ -59,15 +60,17 @@ function handleClick() {
text-overflow: ellipsis;
white-space: normal;
font-family: "SourceHanSansCN-Medium";
.isVip {
display: inline-block;
width: 50rpx;
height: 29rpx;
background-image: url(@/assets/images/icon_vip.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/icon_vip.png);
background-size: cover;
}
}
}
.flashItemFooter {
width: 100%;
display: flex;
@ -75,6 +78,7 @@ function handleClick() {
justify-content: space-between;
margin-top: 30rpx;
font-family: "SourceHanSansCN-Regular";
.unlock {
box-sizing: border-box;
padding: 8rpx 21rpx;
@ -84,15 +88,18 @@ function handleClick() {
color: #e7303f;
border-radius: 999rpx;
}
.flashItemData {
display: flex;
justify-content: flex-end;
box-sizing: border-box;
.dataItem {
// font-size: 20rpx;
font-size: var(--h6-font-size);
color: #b9b9b9;
margin-right: 21rpx;
&:nth-child(3) {
margin-right: 0;
}

View File

@ -3,8 +3,7 @@
<swiper class="swiper" circular next-margin="6px">
<swiper-item v-for="(item, index) in props.data" :key="{ index }">
<view class="swiperItem" @click="handleSwiperJump(item)">
<!-- <view class="isVip"></view> -->
<image class="swiperItemBg" :src="item.picture || BannerBg" />
<!-- <image class="swiperItemBg" :src="item.picture || BannerBg" /> -->
<view class="swiperItemTitle">
<text class="swiperItemType">{{ item.tag }}</text>
{{ item.title }}
@ -16,14 +15,14 @@
</template>
<script setup lang="ts">
import BannerBg from "@/assets/images/banner.png";
// import BannerBg from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/banner.png";
const emit = defineEmits(["handleSwiperJump"]);
const props = defineProps({
//
data: {
type: Object,
default: () => {},
default: () => { },
},
});
@ -35,28 +34,33 @@ const handleSwiperJump = (item) => {
<style lang="scss" scoped>
.swiperContainer {
margin: 12rpx 0;
.swiper {
height: 376rpx;
.swiperItem {
height: 376rpx;
border-radius: 12rpx;
overflow: hidden;
margin-right: 9rpx;
position: relative;
.isVip {
width: 58rpx;
height: 32rpx;
background-image: url(@/assets/images/icon_vip.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/icon_vip.png);
background-size: cover;
position: absolute;
left: 0;
top: 0;
z-index: 1;
}
.swiperItemBg {
width: 100%;
height: 100%;
}
.swiperItemTitle {
width: 100%;
position: absolute;
@ -71,6 +75,7 @@ const handleSwiperJump = (item) => {
color: #ffffff;
background-image: linear-gradient(0deg, #00000066 0%, #00000026 50%, #00000000 100%);
font-family: "SourceHanSansCN-Medium";
.swiperItemType {
display: inline-block;
box-sizing: border-box;

View File

@ -5,11 +5,14 @@
<!-- 搜索 start -->
<view class="search">
<image src="@/static/log_caixun.png" class="logo" mode="aspectFit"></image>
<u-input v-model="keyWord" prefixIcon="search" prefixIconStyle="color: rgba(255,255,255, 0.8)" style="flex: 1" placeholder="搜索资讯" class="search_input" color="#fff" :placeholderStyle="{ color: 'rgba(255,255,255,0.6)' }" :border="false" @confirm="goSearch" />
<u-input v-model="keyWord" prefixIcon="search" prefixIconStyle="color: rgba(255,255,255, 0.8)" style="flex: 1"
placeholder="搜索资讯" class="search_input" color="#fff" :placeholderStyle="{ color: 'rgba(255,255,255,0.6)' }"
:border="false" @confirm="goSearch" />
</view>
<view class="tabsContainer">
<view v-for="(item, index) in colList" :class="['tabItem', { active: columnIndex === index }]" :key="item.id" @click="handleClickColumn(item.id)">
<view v-for="(item, index) in colList" :class="['tabItem', { active: columnIndex === index }]" :key="item.id"
@click="handleClickColumn(item.id)">
<text class="tabName">{{ item.name }}</text>
<!-- <u-icon v-if="index == 3" name="list" size="16" bold color="#fff"></u-icon> -->
</view>
@ -18,11 +21,7 @@
<!-- 中证投顾子菜单 -->
<view class="sub-tabs-box" v-if="subColumnList.length != 0">
<u-tabs
lineColor="rgba(0,0,0,0)"
:current="subColumnIndex"
@click="handleSubColumnChange"
:list="subColumnList"
<u-tabs lineColor="rgba(0,0,0,0)" :current="subColumnIndex" @click="handleSubColumnChange" :list="subColumnList"
:inactiveStyle="{
color: '#595959',
fontSize: '24rpx',
@ -30,8 +29,7 @@
border: '2rpx solid #DBDBDB',
borderRadius: '36rpx',
padding: '1px 12px',
}"
:activeStyle="{
}" :activeStyle="{
color: '#E7303F',
fontSize: '24rpx',
lineHeight: '44rpx',
@ -39,13 +37,13 @@
borderRadius: '36rpx',
padding: '1px 12px',
background: 'rgba(255,208,212,0.4)',
}"
>
}">
</u-tabs>
</view>
<!-- 列表区域 -->
<Domestic :hotNewsList="hotNewsList" :newsList="newsList" :columnName="getColumnName" :columnId="columnState.subColumn" :bannerList="bannerList" @onChange="handleChange" />
<Domestic :hotNewsList="hotNewsList" :newsList="newsList" :columnName="getColumnName"
:columnId="columnState.subColumn" :bannerList="bannerList" @onChange="handleChange" />
</view>
</template>
@ -67,7 +65,7 @@ const props = defineProps({
//
columnState: {
type: Object,
default: () => {},
default: () => { },
},
});
const curPages = getCurrentPages(); //
@ -280,7 +278,7 @@ onShow(async () => {
.vipHeader {
height: 168rpx;
background-image: url(@/assets/images/headerBg.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/headerBg.png);
background-size: cover;
box-sizing: border-box;
padding: 24rpx 32rpx 6rpx 40rpx;
@ -291,16 +289,19 @@ onShow(async () => {
top: 0;
z-index: 20;
width: 100%;
.search {
width: 100vw;
display: flex;
height: 72rpx;
gap: 20rpx;
align-items: center;
.logo {
width: 104rpx;
height: 68rpx;
}
.search_icon {
width: 80rpx;
height: 60rpx;
@ -325,13 +326,16 @@ onShow(async () => {
justify-content: space-between;
font-size: 14px;
color: #fff;
.tabItem {
box-sizing: border-box;
padding-bottom: 9rpx;
display: flex;
align-items: center;
&.active {
position: relative;
&::after {
content: "";
position: absolute;
@ -340,7 +344,7 @@ onShow(async () => {
display: block;
width: 44rpx;
height: 6rpx;
background: url("@/assets/images/icon_dot.png") no-repeat center;
background: url("https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/icon_dot.png") no-repeat center;
background-size: 100% 100%;
}
}
@ -362,11 +366,13 @@ onShow(async () => {
display: flex;
align-items: center;
justify-content: center;
.img {
width: 68rpx;
height: 68rpx;
}
}
.gridText {
font-size: 12px;
color: #333;
@ -385,6 +391,7 @@ onShow(async () => {
color: #333;
font-size: 16px;
font-weight: bold;
.recommendedIcon {
width: 44rpx;
height: 44rpx;
@ -413,37 +420,45 @@ onShow(async () => {
// padding: 20rpx 30rpx 0 30rpx;
background-color: #fff;
margin-top: 24rpx;
.articleListHeader {
display: flex;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
padding: 20rpx 30rpx 0 30rpx;
// padding-bottom: 21rpx;
.headerLeft {
display: flex;
align-items: center;
.articleListTitle {
font-size: 32rpx;
color: #333;
font-weight: bold;
}
.articleListTabs {
margin-left: 12rpx;
.articleListTabsItem {
::v-deep {
.u-tabs__wrapper__nav__item {
padding: 0 15rpx;
}
.u-tabs__wrapper__nav__item__text {
font-size: 24rpx;
}
}
// font-size: 60rpx !important;
// background-color: red;
}
}
}
.select {
::v-deep {
.u-checkbox {
@ -451,6 +466,7 @@ onShow(async () => {
width: 24rpx !important;
height: 24rpx !important;
}
uni-text {
span {
font-size: 24rpx;
@ -468,11 +484,13 @@ onShow(async () => {
background-color: #d5f7ff;
}
}
&:nth-child(2) {
.gridImg {
background-color: #fff0c2;
}
}
&:nth-child(3) {
.gridImg {
background-color: #e2eeff;
@ -483,11 +501,13 @@ onShow(async () => {
}
}
}
&:nth-child(4) {
.gridImg {
background-color: #d5f7ff;
}
}
&:nth-child(5) {
.gridImg {
background-color: #fff0c2;

View File

@ -1,23 +1,23 @@
import swiperImg from "@/static/swiper_image.png";
// thumbnail
import thumbnail2 from "@/assets/images/thumbnail2.png";
import thumbnail3 from "@/assets/images/thumbnail3.png";
import thumbnail4 from "@/assets/images/thumbnail4.png";
import thumbnail5 from "@/assets/images/thumbnail5.png";
import thumbnail2 from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/thumbnail2.png";
import thumbnail3 from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/thumbnail3.png";
import thumbnail4 from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/thumbnail4.png";
import thumbnail5 from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/thumbnail5.png";
const articleListMock = [
{
id: 0,
type: "0", // 类型0:海外 1:国内 2:中证
title: "特朗普表示,他将在第一天对加拿大、中国和墨西哥征收关税", // 标题
source: "美国在线公司 America Online", // 来源
tag: "美国在线公司", // 标签
time: "2024-11-26 09:37", // 时间
thumbnail: swiperImg, // 缩略图
abstract: "当选总统川普正在兑现他的关税承诺,他星期一表示,他计划对墨西哥、加拿大和中国征收关税,以阻止毒品流入美国和非法越境。", // 摘要
needpay: 0, // 是否订阅
// 内容详情
content: `
{
id: 0,
type: "0", // 类型0:海外 1:国内 2:中证
title: "特朗普表示,他将在第一天对加拿大、中国和墨西哥征收关税", // 标题
source: "美国在线公司 America Online", // 来源
tag: "美国在线公司", // 标签
time: "2024-11-26 09:37", // 时间
thumbnail: swiperImg, // 缩略图
abstract: "当选总统川普正在兑现他的关税承诺,他星期一表示,他计划对墨西哥、加拿大和中国征收关税,以阻止毒品流入美国和非法越境。", // 摘要
needpay: 0, // 是否订阅
// 内容详情
content: `
<view class="section">
<p>当选总统川普正在兑现他的关税承诺他星期一表示他计划对墨西哥加拿大和中国征收关税以阻止毒品流入美国和非法越境</p>
<p>特朗普在他的Truth Social平台上发布消息称他将于2025年1月20日上任后签署的首批行政命令之一是对墨西哥和加拿大的所有进入美国的产品征收25%的关税</p>
@ -31,18 +31,18 @@ const articleListMock = [
<p>根据彼得森国际经济研究所的估计特朗普的关税将使美国家庭平均每年损失约2600美元</p>
</view>
`,
},
{
id: 1,
type: "1",
title: "特朗普团队准备提前采取行动结束拜登的液化天然气暂停",
source: "彭博社 Bloomberg News",
tag: "彭博社",
time: "2024-11-26 01:12",
thumbnail: thumbnail2,
abstract: "据知情人士透露,当选总统特朗普(Donald Trump)的过渡团队正在起草一项行政命令,以解除拜登政府实施的暂停天然气出口许可的禁令。",
needpay: 0,
content: `
},
{
id: 1,
type: "1",
title: "特朗普团队准备提前采取行动结束拜登的液化天然气暂停",
source: "彭博社 Bloomberg News",
tag: "彭博社",
time: "2024-11-26 01:12",
thumbnail: thumbnail2,
abstract: "据知情人士透露,当选总统特朗普(Donald Trump)的过渡团队正在起草一项行政命令,以解除拜登政府实施的暂停天然气出口许可的禁令。",
needpay: 0,
content: `
<view class="section">
<p>据知情人士透露当选总统特朗普(Donald Trump)的过渡团队正在起草一项行政命令以解除拜登政府实施的暂停天然气出口许可的禁令</p>
<p>由于信息保密不愿透露姓名的人士表示此举是特朗普上任初期计划的美国能源一揽子行动的一部分知情人士说液化天然气行政命令可能会要求能源部批准悬而未决的出口许可也可能指示该机构恢复对申请的审查作为能源政策指令的一部分不过最终方法尚未确定</p>
@ -51,18 +51,18 @@ const articleListMock = [
<p>在竞选活动中特朗普发誓要取消拜登签署的气候法中未使用的资金让生产商开采更多的石油和天然气降低能源成本并宣布全国进入紧急状态以实现国内能源供应的大幅增加</p>
</view>
`,
},
{
id: 2,
type: "0",
title: "欧盟在与中国达成避免电动汽车关税协议方面进展甚微",
tag: "彭博社",
source: "彭博社 Bloomberg News",
time: "2024-11-26 04:54",
thumbnail: thumbnail3,
abstract: "知情人士称,最近几周,欧盟(eu)与中国就一项取代电动汽车关税的全面协议进行的谈判只取得了有限进展。",
needpay: 0,
content: `
},
{
id: 2,
type: "0",
title: "欧盟在与中国达成避免电动汽车关税协议方面进展甚微",
tag: "彭博社",
source: "彭博社 Bloomberg News",
time: "2024-11-26 04:54",
thumbnail: thumbnail3,
abstract: "知情人士称,最近几周,欧盟(eu)与中国就一项取代电动汽车关税的全面协议进行的谈判只取得了有限进展。",
needpay: 0,
content: `
<view class="section">
<p>知情人士称最近几周欧盟(eu)与中国就一项取代电动汽车关税的全面协议进行的谈判只取得了有限进展</p>
<p>本月早些时候中国和欧盟在北京进行了讨论双方都宣称取得了一些进展目前双方正在继续进行技术性谈判然而自那次会谈以来情况并没有太大变化双方之间的接触也很少这些人士说由于讨论的是私下讨论他们要求匿名</p>
@ -72,18 +72,18 @@ const articleListMock = [
<p>欧盟委员会发言人拒绝置评</p>
</view>
`,
},
{
id: 3,
type: "2",
title: "中国要求地方基金停止通过港股通购买地方政府融资平台债券",
source: "彭博社 Bloomberg News",
time: "2024-11-19 13:42",
tag: "彭博社",
thumbnail: thumbnail4,
abstract: "据知情人士透露,中国实际上已禁止国内投资者通过内地与香港的交易联系购买地方政府融资平台发行的离岸人民币债券,这是遏制负债累累的中国行业风险的最新举措。",
needpay: 0,
content: `
},
{
id: 3,
type: "2",
title: "中国要求地方基金停止通过港股通购买地方政府融资平台债券",
source: "彭博社 Bloomberg News",
time: "2024-11-19 13:42",
tag: "彭博社",
thumbnail: thumbnail4,
abstract: "据知情人士透露,中国实际上已禁止国内投资者通过内地与香港的交易联系购买地方政府融资平台发行的离岸人民币债券,这是遏制负债累累的中国行业风险的最新举措。",
needpay: 0,
content: `
<view class="section">
<p>据知情人士透露中国实际上已禁止国内投资者通过内地与香港的交易联系购买地方政府融资平台发行的离岸人民币债券这是遏制负债累累的中国行业风险的最新举措</p>
<p>中国人民银行已要求国内券商和银行暂停通过债券通(Bond Connect)购买地方政府融资平台的所谓点心债券债券通是一个连接内地和香港债券市场的计划由于讨论私事这些人士要求不具名知情人士没有提供进一步的细节也没有透露这类购买可能会在何时恢复</p>
@ -97,18 +97,18 @@ const articleListMock = [
<p>彭博新闻社(Bloomberg News)今年早些时候报道称中国证券监管机构要求一些投资者不要增持地方政府融资平台发行的期限不到一年的美元债券</p>
</view>
`,
},
{
id: 4,
type: "1",
title: "中国科技集团在硅谷组建人工智能团队",
source: "金融时报 Financial Times",
time: "2024-11-19 15:18",
tag: "金融时报",
thumbnail: thumbnail5,
abstract: "中国最大的科技集团正在硅谷组建人工智能团队,寻求聘用美国顶尖人才,尽管华盛顿方面试图遏制该国对尖端技术的发展。",
needpay: 0,
content: `
},
{
id: 4,
type: "1",
title: "中国科技集团在硅谷组建人工智能团队",
source: "金融时报 Financial Times",
time: "2024-11-19 15:18",
tag: "金融时报",
thumbnail: thumbnail5,
abstract: "中国最大的科技集团正在硅谷组建人工智能团队,寻求聘用美国顶尖人才,尽管华盛顿方面试图遏制该国对尖端技术的发展。",
needpay: 0,
content: `
<view class="section">
<p>中国最大的科技集团正在硅谷组建人工智能团队寻求聘用美国顶尖人才尽管华盛顿方面试图遏制该国对尖端技术的发展</p>
<p>阿里巴巴字节跳动和美团近几个月来一直在扩大其在加州的办事处试图从竞争对手美国集团挖走员工以帮助他们在生成式人工智能的利润竞赛中取得优势</p>
@ -122,7 +122,7 @@ const articleListMock = [
<p>TikTok 所有者字节跳动在加州拥有最成熟的人工智能足迹有多个团队在从事不同的项目一个研究团队专注于将人工智能功能集成到 TikTok 据多位知情人士透露该公司还有一组研究人员与中国和新加坡的同事一起研究其豆包大语言模型</p>
</view>
`,
},
},
];

View File

@ -1,9 +1,9 @@
import swiperImg from "@/static/swiper_image.png";
// thumbnail
import thumbnail2 from "@/assets/images/thumbnail2.png";
import thumbnail3 from "@/assets/images/thumbnail3.png";
import thumbnail4 from "@/assets/images/thumbnail4.png";
import thumbnail5 from "@/assets/images/thumbnail5.png";
import thumbnail2 from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/thumbnail2.png";
import thumbnail3 from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/thumbnail3.png";
import thumbnail4 from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/thumbnail4.png";
import thumbnail5 from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/thumbnail5.png";
// 要闻列表数据
export const newsList = [

View File

@ -6,6 +6,9 @@
},
"pages": [
//pageshttps://uniapp.dcloud.io/collocation/pages
{
"path": "pages/realtimeInfo/index"
},
{
"path": "pages/login/index"
},
@ -46,9 +49,6 @@
{
"path": "pages/bookmark/index"
},
{
"path": "pages/realtimeInfo/index"
},
{
"path": "pages/realtimeInfo/rankDetail"
},

View File

@ -18,7 +18,7 @@ import NewItem from "@/components/newItem/index.vue";
const props = defineProps({
listData: {
type: Array,
default: () => {},
default: () => { },
},
loading: {
type: Boolean,
@ -45,8 +45,9 @@ const doDetail = (item: any) => {
display: flex;
align-items: center;
position: relative;
.flashBack {
}
.flashBack {}
.title {
// background-color: red;
font-size: var(--h1-font-size);
@ -69,6 +70,7 @@ const doDetail = (item: any) => {
padding: 10rpx 30rpx;
display: flex;
overflow-x: auto;
.tabsItem {
font-size: var(--h4-font-size);
color: #595959;
@ -86,6 +88,7 @@ const doDetail = (item: any) => {
}
}
}
.colListContainer {
box-sizing: border-box;
padding: 30rpx 0;
@ -97,6 +100,7 @@ const doDetail = (item: any) => {
align-items: center;
justify-content: space-between;
margin-bottom: 21rpx;
.ItemLeft {
box-sizing: border-box;
padding: 0rpx 27rpx;
@ -121,24 +125,28 @@ const doDetail = (item: any) => {
// font-weight: bold;
margin-bottom: 12rpx;
}
.colDesc {
color: #333;
// font-size: 28rpx;
font-size: var(--h2-font-size);
margin-bottom: 12rpx;
}
.colValidTime {
font-size: 20rpx;
color: rgba(51, 51, 51, 0.6);
}
}
.ItemRight {
display: flex;
align-items: center;
.ItemVipCol {
width: 118rpx;
height: 42rpx;
background-image: url(@/assets/images/vipCol.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/vipCol.png);
margin-right: 21rpx;
background-size: contain;
}

View File

@ -3,14 +3,10 @@
<!-- 导航栏 start -->
<view class="custom-bav-bar">
<view class="left">
<image
src="@/static/icon_left.png"
class="back_icon"
@click="handleBack"
/>
<image src="@/static/icon_left.png" class="back_icon" @click="handleBack" />
</view>
<view class="center">
<image src="@/assets/images/detail_logo.png" class="logo_icon" />
<image src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/detail_logo.png" class="logo_icon" />
<!-- <text>中证参考</text> -->
</view>
</view>
@ -20,19 +16,10 @@
<!-- 分割 -->
<view class="line"></view>
<!-- 推荐栏目 -->
<Column
:data="columnList"
:columnName="columnName"
@doDetail="jumpDetail"
@doAll="jumpAll"
/>
<Column :data="columnList" :columnName="columnName" @doDetail="jumpDetail" @doAll="jumpAll" />
<!-- 底部栏 评论 / 收藏 -->
<Comment
:data="data"
@handleClickLike="handleClickLike"
@handleClickStar="handleClickStar"
/>
<Comment :data="data" @handleClickLike="handleClickLike" @handleClickStar="handleClickStar" />
</view>
</template>

View File

@ -6,7 +6,7 @@
<image src="@/static/icon_left.png" class="back_icon" @click="handleBack" />
</view>
<view class="center">
<image src="@/assets/images/detail_logo.png" class="logo_icon" />
<image src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/detail_logo.png" class="logo_icon" />
</view>
</view>

View File

@ -125,13 +125,15 @@ const back = () => {
<style lang="scss" scoped>
.flashContainer {
font-size: 12px;
//
.flashHeader {
height: 168rpx;
background-image: url(@/assets/images/headerBg.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/headerBg.png);
background-size: cover;
box-sizing: border-box;
padding: 24rpx 32rpx 20rpx 40rpx;
.flashBack {
width: 40rpx;
height: 40rpx;
@ -145,13 +147,15 @@ const back = () => {
padding-top: 21rpx;
display: flex;
align-items: flex-end;
.flashLogo {
width: 192rpx;
height: 58rpx;
background-image: url(@/assets/images/flashLogo.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/flashLogo.png);
background-repeat: no-repeat;
background-position: center;
}
.flashIntro {
color: #fff;
padding-left: 9rpx;

View File

@ -13,7 +13,9 @@
</view>
<!-- 内容区域 -->
<view class="realTimeContent">
<RealTimeNewsItem v-for="item in realTimeList" :key="item.id" :data="item" @handleSub="handleSub" @handleFire="handleFire" :handleLogin="handleLogin" @handleShareTip="handleShareTip" @handleShowPay="handleShowPay" />
<RealTimeNewsItem v-for="item in realTimeList" :key="item.id" :data="item" @handleSub="handleSub"
@handleFire="handleFire" :handleLogin="handleLogin" @handleShareTip="handleShareTip"
@handleShowPay="handleShowPay" />
<u-empty v-if="realTimeList.length === 0" text="暂无快讯" mode="news" style="margin-top: 20vh"></u-empty>
</view>
@ -154,7 +156,8 @@ defineExpose({
box-sizing: border-box;
// position: relative;
overflow-y: auto;
&::before{
&::before {
content: "";
display: block;
width: 255.78rpx;
@ -165,7 +168,7 @@ defineExpose({
right: 0;
margin-top: -36rpx;
// z-index: 999;
background-image: url(@/assets/images/newFontBg.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/newFontBg.png);
background-position: center;
background-repeat: no-repeat;
background-size: contain;
@ -185,16 +188,19 @@ defineExpose({
justify-content: space-between;
align-items: center;
padding: 20rpx 0;
.realTimeLeft {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
.realTimeTitle {
font-size: var(--h1-font-size);
margin-right: 15rpx;
font-weight: bold;
}
.realTimeWarn {
font-size: var(--h4-font-size);
box-sizing: border-box;
@ -212,6 +218,7 @@ defineExpose({
width: 24rpx !important;
height: 24rpx !important;
}
uni-text {
span {
font-size: var(--h4-font-size);
@ -221,6 +228,7 @@ defineExpose({
}
}
}
.realTimeContent {
// height: 3000px;
}

View File

@ -89,11 +89,12 @@ onShow(() => {
.loginContainer {
height: 100vh;
overflow-y: auto;
background-image: url(@/assets/images/loginBg.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/loginBg.png);
background-size: cover;
position: relative;
box-sizing: border-box;
padding:176rpx 0;
padding: 176rpx 0;
.prompt {
width: 80rpx;
height: 596rpx;
@ -102,9 +103,10 @@ onShow(() => {
top: 0;
margin-top: 176rpx;
transform: translateX(-50%);
background-image: url(@/assets/images/new_logo.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/new_logo.png);
background-size: contain;
}
.logo {
width: 292rpx;
height: 68rpx;
@ -113,7 +115,7 @@ onShow(() => {
bottom: 0;
transform: translateX(-50%);
margin-bottom: 176rpx;
background-image: url(@/assets/images/logo.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/logo.png);
background-size: cover;
}
}

View File

@ -0,0 +1,24 @@
<template>
<!-- 顶部 banner 区域 -->
<view class="all">
<Navbar title="中证参考" :hasBack="false"></Navbar>
<text>123</text>
<tabbar></tabbar>
</view>
</template>
<script setup>
import { ref, onMounted, onUnmounted, reactive } from "vue";
import tabbar from "@/components/mini/Tabbar.vue";
import Navbar from '@/components/mini/Navbar.vue'
const tabIndex = ref(0);
function tabChange(index) {
tabIndex.value = index;
}
onMounted(async () => { });
</script>
<style scoped lang="scss"></style>

View File

@ -9,7 +9,8 @@
</view>
<view class="bannerContainer">
<u-swiper :list="bannerList" keyName="image" class="banner" radius="10" autoPlay interval="5000" img-mode="heightFix"></u-swiper>
<u-swiper :list="bannerList" keyName="image" class="banner" radius="10" autoPlay interval="5000"
img-mode="heightFix"></u-swiper>
</view>
<view class="subscribe" v-show="subShow">
@ -146,7 +147,7 @@ const handleSwiperClick = () => {
.vipHeader {
height: 100rpx;
background-image: url(@/assets/images/headerBg.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/headerBg.png);
background-size: cover;
box-sizing: border-box;
padding: 32rpx 32rpx 6rpx 40rpx;
@ -156,6 +157,7 @@ const handleSwiperClick = () => {
position: sticky;
top: 0;
z-index: 9999;
.title {
font-size: 32rpx;
color: #fff;
@ -172,6 +174,7 @@ const handleSwiperClick = () => {
box-sizing: border-box;
padding: 0 30rpx;
position: relative;
&::after {
content: "";
display: block;
@ -186,6 +189,7 @@ const handleSwiperClick = () => {
z-index: 0;
}
}
.banner {
position: relative;
z-index: 1;
@ -235,17 +239,19 @@ const handleSwiperClick = () => {
box-sizing: border-box;
margin-top: 60rpx;
padding: 0 9rpx;
.articleListHeader {
display: flex;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
padding-bottom: 21rpx;
.headerLeft {
display: flex;
align-items: center;
box-sizing: border-box;
.articleListTitle {
font-size: 32rpx;
color: #333;

View File

@ -3,39 +3,19 @@
<view class="all">
<view class="tabbar">
<view class="tabbar_item" @click="tabChange(0)">
<image
v-if="tabIndex == 1"
src=" @/assets/zixun/home_icon_normal.png"
class="tabbar_img"
/>
<image
v-if="tabIndex == 0"
src=" @/assets/zixun/home_icon_press.png"
class="tabbar_img"
/>
<text
class="tabbar_title"
:style="{ color: tabIndex == 0 ? '#3F80FA' : '#666666' }"
>首页</text
>
<image v-if="tabIndex == 1" src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/home_icon_normal.png"
class="tabbar_img" />
<image v-if="tabIndex == 0" src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/home_icon_press.png"
class="tabbar_img" />
<text class="tabbar_title" :style="{ color: tabIndex == 0 ? '#3F80FA' : '#666666' }">首页</text>
</view>
<view class="tabbar_item" @click="tabChange(1)">
<image
v-if="tabIndex == 0"
src=" @/assets/zixun/all_icon_normal.png"
class="tabbar_img"
/>
<image
v-if="tabIndex == 1"
src=" @/assets/zixun/all_icon_press.png"
class="tabbar_img"
/>
<text
class="tabbar_title"
:style="{ color: tabIndex == 1 ? '#3F80FA' : '#666666' }"
>全部</text
>
<image v-if="tabIndex == 0" src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/all_icon_normal.png"
class="tabbar_img" />
<image v-if="tabIndex == 1" src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/all_icon_press.png"
class="tabbar_img" />
<text class="tabbar_title" :style="{ color: tabIndex == 1 ? '#3F80FA' : '#666666' }">全部</text>
</view>
</view>
</view>
@ -49,7 +29,7 @@ function tabChange(index) {
tabIndex.value = index;
}
onMounted(async () => {});
onMounted(async () => { });
</script>
<style scoped lang="scss">

View File

@ -3,14 +3,12 @@
<view class="all">
<!-- banner start -->
<view class="banner">
<img :src="bannerImg" class="banner_bk" />
<img src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/banner_pic.png" class="banner_bk" />
<view class="r_banner_title">
<img :src="bannerTitle" class="banner_title" />
<text
>数据更新时间:{{
dayjs(new Date().getTime()).format("YYYY-MM-DD")
}}</text
>
<img src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/banner_title.png" class="banner_title" />
<text>数据更新时间:{{
dayjs(new Date().getTime()).format("YYYY-MM-DD")
}}</text>
</view>
</view>
<!-- banner end -->
@ -18,50 +16,40 @@
<view class="">
<view class="tag">
<view class="r_tag_img">
<img :src="tagicon_1_bg" class="tag_bk" />
<img src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/tagicon_1_bg.png" class="tag_bk" />
<view class="tag_content">
<view class="tag_item_left">
<text class="tag_title">行业分类贴标</text>
<view style="display: flex; margin-top: 15rpx">
<!-- <text class="tag_num">{{ topNum.leftNum }}</text> -->
<countTo
:startVal="lastLeftNum"
:endVal="topNum.leftNum"
:duration="5000"
class="tag_num"
></countTo>
<countTo :startVal="lastLeftNum" :endVal="topNum.leftNum" :duration="5000" class="tag_num"></countTo>
<text class="tag_status">已处理</text>
</view>
</view>
<view class="tag_item_right">
<img :src="tagicon_1" class="tag_icon" />
<img src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/tagicon_1.png" class="tag_icon" />
</view>
</view>
</view>
<view class="r_tag_img">
<img :src="tagicon_2_bg" class="tag_bk" />
<img src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/tagicon_2_bg.png" class="tag_bk" />
<view class="tag_content">
<view class="tag_item_left">
<text class="tag_title">概念标签贴标</text>
<view style="display: flex; margin-top: 15rpx">
<!-- <text class="tag_num">{{ topNum.rightNum }}</text> -->
<countTo
:startVal="lastRightNum"
:endVal="topNum.rightNum"
:duration="5000"
class="tag_num"
></countTo>
<countTo :startVal="lastRightNum" :endVal="topNum.rightNum" :duration="5000" class="tag_num"></countTo>
<text class="tag_status">已处理</text>
</view>
</view>
<view class="tag_item_right">
<img :src="tagicon_2" class="tag_icon" />
<img src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/tagicon_2.png" class="tag_icon" />
</view>
</view>
</view>
@ -72,16 +60,14 @@
<indexMenuTitle title="资讯评分分布区间"></indexMenuTitle>
<Line style="margin-top: 30rpx" :data="lineData"></Line>
<view
style="
<view style="
display: flex;
flex-direction: column;
text-align: center;
justify-content: center;
align-items: center;
padding-bottom: 30rpx;
"
>
">
<InfoSummary style="width: 85%" :count="newsNum"></InfoSummary>
</view>
</view>
@ -92,15 +78,13 @@
</view>
<view style="background-color: white; margin-top: 40rpx">
<view
style="
<view style="
display: flex;
justify-content: space-between;
align-items: center;
padding-right: 30rpx;
height: 100rpx;
"
>
">
<indexMenuTitle title="热门行业池 Top10"></indexMenuTitle>
<view style="display: flex; gap: 3rpx">
<text class="view-all" @click="onViewAll(0)">查看全部</text>
@ -108,23 +92,17 @@
<u-icon size="12" name="arrow-right"></u-icon>
</view>
</view>
<HotIndustryList
:industryList="industryList"
:type="0"
@viewAll="handleViewAll"
/>
<HotIndustryList :industryList="industryList" :type="0" @viewAll="handleViewAll" />
</view>
<view style="background-color: white; margin-top: 40rpx">
<view
style="
<view style="
display: flex;
justify-content: space-between;
align-items: center;
padding-right: 30rpx;
height: 100rpx;
"
>
">
<indexMenuTitle title="风口概念池 Top10"></indexMenuTitle>
<view style="display: flex; gap: 3rpx">
<text class="view-all" @click="onViewAll(1)">查看全部</text>
@ -132,35 +110,26 @@
<u-icon size="12" name="arrow-right"></u-icon>
</view>
</view>
<HotIndustryList
:type="1"
:industryList="topConceptList"
@viewAll="handleViewAll"
/>
<HotIndustryList :type="1" :industryList="topConceptList" @viewAll="handleViewAll" />
</view>
<view class="logout" @click="loginOut" v-if="Session.get('token')"
>退出登录</view
>
<view class="logout" @click="loginOut" v-if="Session.get('token')">退出登录</view>
<LoginPopup
:show="LoginShow"
@handlePopupClose="handlePopupClose"
@handlePopupSuccessCallback="handlePopupSuccessCallback"
@handlePopupErrorCallback="handlePopupErrorCallback"
/>
<LoginPopup :show="LoginShow" @handlePopupClose="handlePopupClose"
@handlePopupSuccessCallback="handlePopupSuccessCallback" @handlePopupErrorCallback="handlePopupErrorCallback" />
</view>
</template>
<script setup>
import { ref, onMounted, onUnmounted, reactive } from "vue";
import Line from "@/components/charts/Line.vue";
import bannerImg from "@/assets/zixun/banner_pic.png";
import bannerTitle from "@/assets/zixun/banner_title.png";
import tagicon_1_bg from "@/assets/zixun/tagicon_1_bg.png";
import tagicon_2_bg from "@/assets/zixun/tagicon_2_bg.png";
import tagicon_1 from "@/assets/zixun/tagicon_1.png";
import tagicon_2 from "@/assets/zixun/tagicon_2.png";
// import bannerImg from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/banner_pic.png";
// import bannerTitle from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/banner_title.png";
// import tagicon_1_bg from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/tagicon_1_bg.png";
// import tagicon_2_bg from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/tagicon_2_bg.png";
// import tagicon_1 from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/tagicon_1.png";
// import tagicon_2 from "https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/tagicon_2.png";
import LoginPopup from "@/components/loginPopup/index.vue";
import { Session } from "@/utils/storage";

View File

@ -1,7 +1,7 @@
<template>
<view class="page_top">
<view class="r_menu">
<image src="@/assets/images/logo.png" class="logo"></image>
<image src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/logo.png" class="logo"></image>
<view class="r_menu_item" @click="tabChange(1)">
<text class="menu_item">资讯头条榜</text>
<view class="line" v-if="tabIndex == 1"></view>

View File

@ -2,12 +2,9 @@
<view class="pc_all">
<PageTop></PageTop>
<view
class="content"
:style="{ filter: Session.get('token') ? '' : 'blur(5px)' }"
>
<view class="content" :style="{ filter: Session.get('token') ? '' : 'blur(5px)' }">
<view class="top" @click="goBack">
<image src="@/assets/zixun/icon_fanhui.png" class="icon_back" />
<image src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/icon_fanhui.png" class="icon_back" />
<text>返回列表</text>
</view>
@ -28,58 +25,33 @@
<!-- 两个标签 start -->
<view class="r_tag_two">
<view
style="display: flex"
v-if="infoData?.conceptLabels && infoData?.conceptLabels.length > 0"
>
<view style="display: flex" v-if="infoData?.conceptLabels && infoData?.conceptLabels.length > 0">
<text class="tag_title">行业分类</text>
<view class="r_tags">
<view
class="tag"
style="background-color: #fff9ec; color: #ffb100"
v-for="(item, index) in infoData?.industryLabels"
:key="index"
>{{ item }}</view
>
<view class="tag" style="background-color: #fff9ec; color: #ffb100"
v-for="(item, index) in infoData?.industryLabels" :key="index">{{ item }}</view>
</view>
</view>
<view
style="display: flex"
v-if="infoData?.industryLabels && infoData?.industryLabels.length > 0"
>
<view style="display: flex" v-if="infoData?.industryLabels && infoData?.industryLabels.length > 0">
<text class="tag_title">概念标签</text>
<view class="r_tags">
<view
class="tag"
style="background-color: #f5f8fe; color: #007aff"
v-for="(item, index) in infoData?.conceptLabels"
:key="index"
>{{ item }}</view
>
<view class="tag" style="background-color: #f5f8fe; color: #007aff"
v-for="(item, index) in infoData?.conceptLabels" :key="index">{{ item }}</view>
</view>
</view>
</view>
<!-- 两个标签 end -->
<view
class="text"
v-html="infoData.content"
style="white-space: pre-wrap"
>
<view class="text" v-html="infoData.content" style="white-space: pre-wrap">
</view>
<!-- <view class="text">
<text >{{ infoData.content }}</text>
</view> -->
</view>
<LoginPopup
:show="LoginShow"
mode="center"
@handlePopupClose="handlePopupClose"
@handlePopupSuccessCallback="handlePopupSuccessCallback"
@handlePopupErrorCallback="handlePopupErrorCallback"
/>
<LoginPopup :show="LoginShow" mode="center" @handlePopupClose="handlePopupClose"
@handlePopupSuccessCallback="handlePopupSuccessCallback" @handlePopupErrorCallback="handlePopupErrorCallback" />
</view>
</template>

View File

@ -2,13 +2,11 @@
<view class="pc_all">
<PageTop></PageTop>
<view
class="content"
:style="{ filter: Session.get('token') ? '' : 'blur(5px)' }"
>
<view class="content" :style="{ filter: Session.get('token') ? '' : 'blur(5px)' }">
<view class="top_title">
<text class="pageTitle">资讯头条榜</text>
<image src="@/assets/zixun/top20_icon.png" class="title_icon"></image>
<image src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/top20_icon.png" class="title_icon">
</image>
</view>
<view class="line"></view>
@ -19,16 +17,8 @@
<view class="list_item_num num1" v-if="index < 3 && index == 0">{{
index + 1
}}</view>
<view
class="list_item_num num2"
v-else-if="index < 3 && index == 1"
>{{ index + 1 }}</view
>
<view
class="list_item_num num3"
v-else-if="index < 3 && index == 2"
>{{ index + 1 }}</view
>
<view class="list_item_num num2" v-else-if="index < 3 && index == 1">{{ index + 1 }}</view>
<view class="list_item_num num3" v-else-if="index < 3 && index == 2">{{ index + 1 }}</view>
<view class="list_item_num nol_num" v-else>{{ index + 1 }}</view>
</view>
@ -52,13 +42,8 @@
</view>
</view>
</view>
<LoginPopup
:show="LoginShow"
mode="center"
@handlePopupClose="handlePopupClose"
@handlePopupSuccessCallback="handlePopupSuccessCallback"
@handlePopupErrorCallback="handlePopupErrorCallback"
/>
<LoginPopup :show="LoginShow" mode="center" @handlePopupClose="handlePopupClose"
@handlePopupSuccessCallback="handlePopupSuccessCallback" @handlePopupErrorCallback="handlePopupErrorCallback" />
</view>
</template>
@ -186,6 +171,7 @@ const handlePopupErrorCallback = () => {
background: linear-gradient(169deg, #a9c3e3 0%, #92b2e0 100%);
border-radius: 3px;
}
.num3 {
background: linear-gradient(169deg, #f2996e 0%, #f77741 100%);
border-radius: 3px;
@ -211,6 +197,7 @@ const handlePopupErrorCallback = () => {
.item_title:hover {
color: #057cff;
}
.item_title {
font-family: PingFangSC, PingFang SC;
font-weight: bold;
@ -233,6 +220,7 @@ const handlePopupErrorCallback = () => {
justify-content: space-between;
margin-top: 30rpx;
margin-bottom: 10rpx;
.time {
font-family: PingFangSC, PingFang SC;
font-weight: 400;

View File

@ -2,47 +2,26 @@
<view class="pc_all">
<PageTop></PageTop>
<view
class="content"
:style="{ filter: Session.get('token') ? '' : 'blur(5px)' }"
>
<view class="content" :style="{ filter: Session.get('token') ? '' : 'blur(5px)' }">
<view class="top_title">
<text class="pageTitle" v-if="type == 2">热门行业</text>
<text class="pageTitle" v-if="type == 3">风口概念</text>
<image src="@/assets/zixun/top10_icon.png" class="title_icon"></image>
<image src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/top10_icon.png" class="title_icon">
</image>
</view>
<view style="display: flex">
<view class="page_left">
<view
v-for="(item, index) in tagList"
:key="index"
class="tag_item"
:style="{
backgroundColor: clickTagIndex == index ? '#007AFF' : '',
color: clickTagIndex == index ? '#fff' : '#000',
}"
@mouseenter="handleMouseEnter(index)"
@click="tagClick(item, index)"
>
<view v-for="(item, index) in tagList" :key="index" class="tag_item" :style="{
backgroundColor: clickTagIndex == index ? '#007AFF' : '',
color: clickTagIndex == index ? '#fff' : '#000',
}" @mouseenter="handleMouseEnter(index)" @click="tagClick(item, index)">
<view style="display: flex; align-items: center">
<!-- 左边数字 start -->
<view class="r_list_item_num">
<view
class="list_item_num num1"
v-if="index < 3 && index == 0"
>{{ index + 1 }}</view
>
<view
class="list_item_num num2"
v-else-if="index < 3 && index == 1"
>{{ index + 1 }}</view
>
<view
class="list_item_num num3"
v-else-if="index < 3 && index == 2"
>{{ index + 1 }}</view
>
<view class="list_item_num num1" v-if="index < 3 && index == 0">{{ index + 1 }}</view>
<view class="list_item_num num2" v-else-if="index < 3 && index == 1">{{ index + 1 }}</view>
<view class="list_item_num num3" v-else-if="index < 3 && index == 2">{{ index + 1 }}</view>
<view class="list_item_num nol_num" v-else>{{
index + 1
}}</view>
@ -51,18 +30,10 @@
<text> {{ item.content }}</text>
</view>
<image
v-if="clickTagIndex == index"
class="tag_item_arrow"
src="@/assets/zixun/chose-icon_white.png"
mode="scaleToFill"
/>
<image
v-if="clickTagIndex != index && tagHoverIndex == index"
class="tag_item_arrow"
src="@/assets/zixun/chose_icon_black.png"
mode="scaleToFill"
/>
<image v-if="clickTagIndex == index" class="tag_item_arrow"
src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/chose-icon_white.png" mode="scaleToFill" />
<image v-if="clickTagIndex != index && tagHoverIndex == index" class="tag_item_arrow"
src="https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/zixun/chose_icon_black.png" mode="scaleToFill" />
</view>
</view>
<view class="page_right">
@ -91,13 +62,8 @@
</view>
</view>
<LoginPopup
:show="LoginShow"
mode="center"
@handlePopupClose="handlePopupClose"
@handlePopupSuccessCallback="handlePopupSuccessCallback"
@handlePopupErrorCallback="handlePopupErrorCallback"
/>
<LoginPopup :show="LoginShow" mode="center" @handlePopupClose="handlePopupClose"
@handlePopupSuccessCallback="handlePopupSuccessCallback" @handlePopupErrorCallback="handlePopupErrorCallback" />
</view>
</template>
@ -285,6 +251,7 @@ const handlePopupErrorCallback = () => {
background: linear-gradient(169deg, #a9c3e3 0%, #92b2e0 100%);
border-radius: 3px;
}
.num3 {
background: linear-gradient(169deg, #f2996e 0%, #f77741 100%);
border-radius: 3px;
@ -391,6 +358,7 @@ const handlePopupErrorCallback = () => {
justify-content: space-between;
margin-top: 30rpx;
margin-bottom: 10rpx;
.time {
font-family: PingFangSC, PingFang SC;
font-weight: 400;

View File

@ -38,7 +38,7 @@ const props = defineProps({
//
data: {
type: Object,
default: () => {},
default: () => { },
},
});
@ -134,8 +134,9 @@ const colList = ref([
display: flex;
align-items: center;
position: relative;
.flashBack {
}
.flashBack {}
.title {
font-size: var(--h1-font-size);
color: #fff;
@ -152,6 +153,7 @@ const colList = ref([
padding: 10rpx 30rpx;
display: flex;
overflow-x: auto;
.tabsItem {
font-size: var(--h4-font-size);
color: #595959;
@ -169,6 +171,7 @@ const colList = ref([
}
}
}
.colListContainer {
box-sizing: border-box;
padding: 30rpx 0;
@ -180,6 +183,7 @@ const colList = ref([
align-items: center;
justify-content: space-between;
margin-bottom: 21rpx;
.ItemLeft {
box-sizing: border-box;
padding: 0rpx 27rpx;
@ -204,25 +208,29 @@ const colList = ref([
// font-weight: bold;
margin-bottom: 12rpx;
}
.colDesc {
color: #333;
// font-size: 28rpx;
font-size: var(--h2-font-size);
margin-bottom: 12rpx;
}
.colValidTime {
// font-size: 20rpx;
font-size: var(--h6-font-size);
color: rgba(51, 51, 51, 0.6);
}
}
.ItemRight {
display: flex;
align-items: center;
.ItemVipCol {
width: 118rpx;
height: 42rpx;
background-image: url(@/assets/images/vipCol.png);
background-image: url(https://cankao.obs.cn-east-3.myhuaweicloud.com/mini/images/vipCol.png);
margin-right: 21rpx;
background-size: contain;
}