Files
PC-mj/app.vue
DESKTOP-RQ919RC\Pc edb7d1ae45 chore: 更新静态资源文件并清理构建输出目录
删除旧的构建输出文件,包括图片资源和编译生成的JavaScript文件
添加新的图标资源文件到assets/img目录
更新package.json中的开发脚本配置
2025-11-12 19:11:40 +08:00

256 lines
6.2 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- / || /index.html | |
/publish
/details/{id} 详情 -->
<!-- // shared_cjs_prodExports.hasOwn; -->
<!-- npm run created -->
<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();
getUserInfoWin();
});
let isNeedLogin = ref(true); // 是否需要登录状态
let userInfo = ref({});
let isGetLoginState = ref(true); // 在获取登录状态 false 代表没有已经确定了
let realname = ref(1); // 是否已经实名
let permissions = ref([]);
let ismanager = ref(false);
// 判断是否登录状态
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) return;
document.removeEventListener("getUser", checkUser);
if (user?.uin > 0 || user?.uid > 0) {
isNeedLogin.value = false;
userInfo.value = user;
}
isGetLoginState.value = false;
realname.value = user.realname;
permissions.value = user?.authority || [];
ismanager.value = permissions.value.indexOf("topic:manager") >= 0;
};
document.addEventListener("getUser", checkUser);
};
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);
provide("permissions", permissions);
provide("ismanager", ismanager);
</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>