246 lines
5.9 KiB
Vue
246 lines
5.9 KiB
Vue
<!-- / || /index.html 首页 | 列表 | 搜索
|
||
/publish 发布
|
||
/details/{id} 详情 -->
|
||
|
||
<template>
|
||
<div id="append_parent"></div>
|
||
<div id="ajaxwaitid"></div>
|
||
<!-- <script src="https://app.gter.net/bottom?tpl=header&menukey=mj"></script> -->
|
||
<!-- <RouterView :key="$route.fullPath"></RouterView> -->
|
||
<NuxtPage></NuxtPage>
|
||
</template>
|
||
<script setup>
|
||
const route = useRoute();
|
||
// 是否是 生产环境
|
||
const isProduction = process.env.NODE_ENV === "production";
|
||
|
||
// watchEffect(() => {
|
||
// if (typeof window !== "undefined" && route.path) {
|
||
// if (window._hmt) window._hmt.push(["_trackPageview", route.fullPath])
|
||
// if (window._czc) {
|
||
// let location = window.location
|
||
// let contentUrl = location.pathname + location.hash
|
||
// let refererUrl = "/"
|
||
// window._czc.push(["_trackPageview", contentUrl, refererUrl])
|
||
// window._czc.push(["_setAutoPageview", false])
|
||
// }
|
||
// }
|
||
// })
|
||
|
||
onMounted(() => {
|
||
if (!isProduction) {
|
||
isNeedLogin.value = false;
|
||
// // setTimeout(() => isGetLoginState.value = false, 10000)
|
||
userInfo.value = {
|
||
username: "",
|
||
uid: 256624,
|
||
uin: 4171117,
|
||
avatar: "https://oss.x-php.com/avatar/97K4EWIMLrsbGTWXslC1XFxTFauOikN42jDKLNjtax7HLtRjKcKMSdU9oWFhY2E~/small?random=1739160957",
|
||
messagenum: 0,
|
||
newprompt: 1,
|
||
todaysigned: 0,
|
||
};
|
||
} else determineIsLogin();
|
||
|
||
const params = new URLSearchParams(window.location.search);
|
||
const isLoginValue = params.get("islogin");
|
||
if (isLoginValue == 1) getUserInfoWin();
|
||
else realname.value = 1;
|
||
});
|
||
|
||
let isNeedLogin = ref(true); // 是否需要登录状态
|
||
let userInfo = ref({});
|
||
let isGetLoginState = ref(true); // 在获取登录状态 false 代表没有已经确定了
|
||
let realname = ref(0) // 是否已经实名
|
||
|
||
// 判断是否登录状态
|
||
const determineIsLogin = () => {
|
||
let count = 0;
|
||
let timer = setInterval(() => {
|
||
if (Object.keys(window["userInfoWin"]).length !== 0) {
|
||
clearInterval(timer);
|
||
isGetLoginState.value = false;
|
||
if (window["userInfoWin"]["uid"] || window["userInfoWin"]["uin"]) {
|
||
isNeedLogin.value = false;
|
||
userInfo.value = window["userInfoWin"];
|
||
}
|
||
}
|
||
count++;
|
||
if (count >= 30) {
|
||
clearInterval(timer);
|
||
isGetLoginState.value = false;
|
||
}
|
||
}, 100);
|
||
};
|
||
|
||
// 跳转登录
|
||
const goLogin = () => {
|
||
if (typeof window === "undefined") return;
|
||
if (Object.keys(window["userInfoWin"]).length !== 0) {
|
||
if (window["userInfoWin"]["uid"]) isNeedLogin.value = false;
|
||
else ajax_login();
|
||
} else ajax_login();
|
||
};
|
||
|
||
const getUserInfoWin = () => {
|
||
const checkUser = () => {
|
||
const user = window.userInfoWin;
|
||
if (!user) {
|
||
setTimeout(checkUser, 100);
|
||
return;
|
||
}
|
||
realname.value = user.realname || 0;
|
||
};
|
||
|
||
setTimeout(checkUser, 100);
|
||
};
|
||
|
||
const openAttest = () => {
|
||
const handleAttestClose = () => {
|
||
document.removeEventListener("closeAttest", handleAttestClose);
|
||
realname.value = window.userInfoWin?.realname || 0;
|
||
};
|
||
// 启动认证流程时添加监听
|
||
document.addEventListener("closeAttest", handleAttestClose);
|
||
loadAttest(2);
|
||
};
|
||
|
||
provide("isNeedLogin", isNeedLogin);
|
||
provide("userInfo", userInfo);
|
||
provide("goLogin", goLogin);
|
||
provide("isGetLoginState", isGetLoginState);
|
||
provide("realname", realname);
|
||
provide("openAttest", openAttest);
|
||
</script>
|
||
|
||
<style lang="less">
|
||
* {
|
||
margin: 0;
|
||
padding: 0;
|
||
box-sizing: border-box;
|
||
font-family: "PingFangSC-Regular", "PingFang SC", sans-serif;
|
||
}
|
||
|
||
.flexflex {
|
||
display: flex;
|
||
}
|
||
|
||
.flex1 {
|
||
flex: 1;
|
||
}
|
||
|
||
.flexcenter {
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
}
|
||
|
||
.flexacenter {
|
||
display: flex;
|
||
align-items: center;
|
||
}
|
||
|
||
.flexjcenter {
|
||
display: flex;
|
||
justify-content: center;
|
||
}
|
||
|
||
/* // 一行显示 */
|
||
.ellipsis {
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
}
|
||
|
||
body {
|
||
background-color: rgba(238, 242, 245, 1);
|
||
}
|
||
|
||
a {
|
||
text-decoration: none !important;
|
||
}
|
||
|
||
/* Webkit浏览器(Chrome、Safari等) */
|
||
*::-webkit-scrollbar {
|
||
width: 8px;
|
||
background-color: transparent;
|
||
}
|
||
|
||
*::-webkit-scrollbar-thumb {
|
||
background-color: #d7d7d7;
|
||
border-radius: 4px;
|
||
}
|
||
|
||
*::-webkit-scrollbar-thumb:hover {
|
||
background-color: #666;
|
||
}
|
||
|
||
/* Firefox浏览器 */
|
||
/* 注意:Firefox浏览器不支持修改滚动条的宽度 */
|
||
/* 若要修改滚动条的宽度,可以使用一些特殊的插件或者自定义滚动条的替代方案 */
|
||
/* 以下代码只是修改滚动条的颜色和背景色 */
|
||
* {
|
||
scrollbar-width: thin;
|
||
scrollbar-color: #d7d7d7 transparent;
|
||
}
|
||
|
||
*::-moz-scrollbar-thumb {
|
||
background-color: #d7d7d7;
|
||
}
|
||
|
||
*::-moz-scrollbar-thumb:hover {
|
||
background-color: #666;
|
||
}
|
||
|
||
header.page-header .box .tab-list .item.pitch {
|
||
color: #72db86 !important;
|
||
}
|
||
|
||
header.page-header .box .tab-list .item.pitch:after {
|
||
background-color: #72db86 !important;
|
||
}
|
||
|
||
.avatar-box {
|
||
flex-direction: column;
|
||
height: 101px;
|
||
background-color: rgba(244, 248, 255, 1);
|
||
border: 1px solid rgba(220, 224, 234, 1);
|
||
border-radius: 10px;
|
||
z-index: 100;
|
||
|
||
.avatar-mask {
|
||
width: 100%;
|
||
height: 100%;
|
||
position: fixed;
|
||
top: 0;
|
||
left: 0;
|
||
z-index: -1;
|
||
cursor: auto;
|
||
}
|
||
|
||
.avatar-item {
|
||
font-size: 14px;
|
||
color: #333;
|
||
height: 50px;
|
||
cursor: pointer;
|
||
|
||
&:not(:last-of-type) {
|
||
border-bottom: 1px dotted #d7d7d7;
|
||
}
|
||
}
|
||
|
||
.avatar-icon {
|
||
width: 16px;
|
||
height: 16px;
|
||
margin-right: 5px;
|
||
}
|
||
}
|
||
|
||
.el-popover.el-popper.avatar-box-popper {
|
||
min-width: 140px;
|
||
padding: 0;
|
||
border-radius: 10px;
|
||
border: none;
|
||
}
|
||
</style>
|