fix(realtimeInfo): 修复页面导航和登录逻辑问题

修复导航菜单条件渲染错误,优化登录流程处理token逻辑
移除多余的空行和console.log,格式化代码样式
This commit is contained in:
zzp 2025-11-08 16:54:18 +08:00
parent a9eef0d69f
commit d25f87a889
3 changed files with 77 additions and 52 deletions

View File

@ -3,22 +3,22 @@
<view class="r_menu"> <view class="r_menu">
<image src="@/assets/images/logo.png" class="logo"></image> <image src="@/assets/images/logo.png" class="logo"></image>
<view class="r_menu_item" @click="tabChange(1)" v-if="tabIndex != 4"> <view class="r_menu_item" @click="tabChange(1)">
<text class="menu_item">资讯头条榜</text> <text class="menu_item">资讯头条榜</text>
<view class="line" v-if="tabIndex == 1"></view> <view class="line" v-if="tabIndex == 1"></view>
</view> </view>
<view class="r_menu_item" @click="tabChange(2)" v-if="tabIndex != 4"> <view class="r_menu_item" @click="tabChange(2)">
<text class="menu_item">热门行业</text> <text class="menu_item">热门行业</text>
<view class="line" v-if="tabIndex == 2"></view> <view class="line" v-if="tabIndex == 2"></view>
</view> </view>
<view class="r_menu_item" @click="tabChange(3)" v-if="tabIndex != 4"> <view class="r_menu_item" @click="tabChange(3)">
<text class="menu_item">风口概念</text> <text class="menu_item">风口概念</text>
<view class="line" v-if="tabIndex == 3"></view> <view class="line" v-if="tabIndex == 3"></view>
</view> </view>
<view class="r_menu_item" @click="tabChange(4)" v-if="tabIndex == 4"> <view class="r_menu_item" @click="tabChange(4)">
<text class="menu_item">编辑精选</text> <text class="menu_item">编辑精选</text>
<view class="line" v-if="tabIndex == 4"></view> <view class="line" v-if="tabIndex == 4"></view>
</view> </view>
@ -31,7 +31,7 @@
</template> </template>
<script setup> <script setup>
import { ref, onMounted, onUnmounted, reactive } from "vue"; import { ref, onMounted, onUnmounted, reactive, nextTick } from "vue";
import { onLoad, onShow } from "@dcloudio/uni-app"; import { onLoad, onShow } from "@dcloudio/uni-app";
import { Session } from "@/utils/storage"; import { Session } from "@/utils/storage";
import { doLogout } from "@/api"; import { doLogout } from "@/api";
@ -45,17 +45,41 @@ function tabChange(type) {
}); });
} }
import { useRoute, useRouter } from "vue-router";
const route = useRoute();
const router = useRouter();
async function logout() { async function logout() {
if (Session.get("userPhone")) {
await doLogout({ await doLogout({
financialAccount: Session.get("userPhone"), financialAccount: Session.get("userPhone"),
}); });
}
Session.clear(); Session.clear();
// token
const { token, ...otherQuery } = route.query;
// token
if (token) {
router.replace({
path: route.path, //
query: otherQuery, //
});
}
nextTick(() => {
setTimeout(() => {
window.location.reload(); window.location.reload();
}, 500);
});
} }
onLoad((e) => { onLoad((e) => {
if (e.type) tabIndex.value = e.type; if (e.type) tabIndex.value = e.type;
console.log("🚀 ~ route.query.token:", route.query.token);
}); });
</script> </script>

View File

@ -10,7 +10,6 @@ import { ref, onMounted, defineAsyncComponent, reactive } from "vue";
import PageTop from "@/pages/realtimeInfo/pc/components/PageTop.vue"; import PageTop from "@/pages/realtimeInfo/pc/components/PageTop.vue";
import { useRoute, useRouter } from "vue-router"; import { useRoute, useRouter } from "vue-router";
const route = useRoute(); const route = useRoute();
const router = useRouter(); const router = useRouter();
const layoutName = ref(); const layoutName = ref();
@ -21,7 +20,7 @@ onMounted(async () => {
infoId.value = route.query.id; infoId.value = route.query.id;
} }
// token // token
console.log("🚀 ~ route.query:", route.query) console.log("🚀 ~ route.query:", route.query);
if (route.query.type) { if (route.query.type) {
switch (route.query.type) { switch (route.query.type) {
@ -41,11 +40,7 @@ onMounted(async () => {
case "3": case "3":
layoutName.value = "top10"; layoutName.value = "top10";
uni.navigateTo({ uni.navigateTo({
url: url: "/pages/realtimeInfo/pc/top10?type=" + route.query.type + "&name=" + route.query.name,
"/pages/realtimeInfo/pc/top10?type=" +
route.query.type +
"&name=" +
route.query.name,
}); });
break; break;
case "4": case "4":

View File

@ -7,10 +7,14 @@
<text class="pageTitle" v-if="pageType != 4">资讯头条榜</text> <text class="pageTitle" v-if="pageType != 4">资讯头条榜</text>
<text class="pageTitle" v-if="pageType == 4">编辑精选</text> <text class="pageTitle" v-if="pageType == 4">编辑精选</text>
<image src="@/assets/zixun/top20_icon.png" class="title_icon" v-if="pageType != 4"></image> <image src="@/assets/zixun/top20_icon.png" class="title_icon" v-if="pageType != 4"></image>
<u-input v-if="pageType == 4" placeholder="请输入搜索内容" v-model="form.keyword" prefixIcon="search" <u-input
v-if="pageType == 4"
placeholder="请输入搜索内容"
v-model="form.keyword"
prefixIcon="search"
prefixIconStyle="font-size: 22px;color: #909399" prefixIconStyle="font-size: 22px;color: #909399"
style="margin-left: 40rpx;margin-top: 5rpx;border-radius: 20rpx;"> style="margin-left: 40rpx; margin-top: 5rpx; border-radius: 20rpx"
>
<template #suffix> <template #suffix>
<u-button @tap="getNewsList" text="搜索" size="mini"></u-button> <u-button @tap="getNewsList" text="搜索" size="mini"></u-button>
</template> </template>
@ -36,12 +40,8 @@
<view class="item_bottom"> <view class="item_bottom">
<view> <view>
<text class="time">{{ item.source }}</text> <text class="time">{{ item.source }}</text>
<text class="time" style="margin-left: 30rpx" v-if="pageType != 4">{{ <text class="time" style="margin-left: 30rpx" v-if="pageType != 4">{{ dayjs(item.publish_time).format("YYYY-MM-DD HH:MM:ss") }}</text>
dayjs(item.publish_time).format("YYYY-MM-DD HH:MM:ss") <text class="time" style="margin-left: 30rpx" v-if="pageType == 4">{{ item.time }}</text>
}}</text>
<text class="time" style="margin-left: 30rpx" v-if="pageType == 4">{{
item.time
}}</text>
</view> </view>
<text class="score" v-if="pageType != 4">{{ item.news_score }}</text> <text class="score" v-if="pageType != 4">{{ item.news_score }}</text>
@ -50,15 +50,24 @@
</view> </view>
</view> </view>
<div style="width: 100%;display: flex;justify-content: center;" <div style="width: 100%; display: flex; justify-content: center" v-if="pageType == 4 && newsList && newsList.length > 0">
v-if="pageType == 4 && newsList && newsList.length > 0"> <el-pagination
<el-pagination v-model:current-page="currentPage" :page-size="form.size" layout="prev, pager, next" v-model:current-page="currentPage"
:total="form.total" @current-change="currentChange" @size-change="sizeChange" /> :page-size="form.size"
layout="prev, pager, next"
:total="form.total"
@current-change="currentChange"
@size-change="sizeChange"
/>
</div> </div>
</view> </view>
<LoginPopup :show="LoginShow" mode="center" @handlePopupClose="handlePopupClose" <LoginPopup
@handlePopupSuccessCallback="handlePopupSuccessCallback" @handlePopupErrorCallback="handlePopupErrorCallback" /> :show="LoginShow"
mode="center"
@handlePopupClose="handlePopupClose"
@handlePopupSuccessCallback="handlePopupSuccessCallback"
@handlePopupErrorCallback="handlePopupErrorCallback"
/>
</view> </view>
</template> </template>
@ -78,7 +87,7 @@ const form = reactive({
keyword: "", keyword: "",
page: 1, page: 1,
size: 10, size: 10,
total: 10 total: 10,
}); });
const currentPage = ref(form.page); const currentPage = ref(form.page);
@ -88,19 +97,18 @@ const router = useRouter();
const pageType = ref(route.query.type); const pageType = ref(route.query.type);
const newsList = ref([]); const newsList = ref([]);
async function getNewsList() { async function getNewsList() {
if (pageType.value == 4) { if (pageType.value == 4) {
// //
let { code, data } = await editTopNews({ let { code, data } = await editTopNews({
...form ...form,
}); });
if (code == 200) { if (code == 200) {
newsList.value = data.list; newsList.value = data.list;
form.total = data.total; form.total = data.total;
data.list.forEach((item) => { data.list.forEach((item) => {
item.summary = item.summary.replace(form.keyword, "<span style='color: #007aff'>" + form.keyword + '</span>'); item.summary = item.summary.replace(form.keyword, "<span style='color: #007aff'>" + form.keyword + "</span>");
item.title = item.title.replace(form.keyword, "<span style='color: #007aff'>" + form.keyword + '</span>'); item.title = item.title.replace(form.keyword, "<span style='color: #007aff'>" + form.keyword + "</span>");
}); });
} }
} else { } else {
@ -110,11 +118,11 @@ async function getNewsList() {
} }
function goDetail(item) { function goDetail(item) {
let id = null let id = null;
if (pageType.value != 4) { if (pageType.value != 4) {
id = item.news_id id = item.news_id;
} else { } else {
id = item.id id = item.id;
} }
uni.navigateTo({ uni.navigateTo({
url: "/pages/realtimeInfo/pc/indexPC?id=" + id + "&type=" + pageType.value, url: "/pages/realtimeInfo/pc/indexPC?id=" + id + "&type=" + pageType.value,
@ -127,24 +135,25 @@ function currentChange(page) {
} }
onMounted(async (e) => { onMounted(async (e) => {
console.log("🚀 ~ route.query:", route.query);
console.log("🚀 ~ route.query:", route.query) if (route.query?.token && (!Session.get("token") || Session.get("token") == "undefined")) {
if (route.query?.token && !Session.get("token")) {
uni.showLoading({ uni.showLoading({
title: '加载中', title: "加载中",
mask: true mask: true,
}) });
sendToken({ sendToken({
token: route.query.token, token: route.query.token,
}).then((res) => { }).then((res) => {
uni.hideLoading() uni.hideLoading();
if (res.code == 200) { if (res.code == 200) {
Session.set("token", res.data.token); Session.set("token", res.data.token);
Session.set("userPhone", res.data.phone); Session.set("userPhone", res.data.phone);
setTimeout(() => {
window.location.reload(); window.location.reload();
}, 500);
} }
}) });
} else { } else {
if (!Session.get("token")) { if (!Session.get("token")) {
LoginShow.value = true; LoginShow.value = true;
@ -152,8 +161,6 @@ onMounted(async (e) => {
} }
getNewsList(); getNewsList();
}); });
const LoginShow = ref(false); const LoginShow = ref(false);
@ -293,7 +300,6 @@ const handlePopupErrorCallback = () => {
color: #333333; color: #333333;
margin-top: 20rpx; margin-top: 20rpx;
/* 必须:限制内容不溢出容器 */ /* 必须:限制内容不溢出容器 */
overflow: hidden; overflow: hidden;
/* 必须:超出部分显示省略号 */ /* 必须:超出部分显示省略号 */