feat(签到组件): 重构签到功能并优化样式

- 添加签到组件到详情页
- 修改签到初始化逻辑,使用SignInComponent代替原有方法
- 优化签到弹窗样式和交互
- 移除调试用的console.log
- 更新资源路径为绝对路径
This commit is contained in:
DESKTOP-RQ919RC\Pc
2025-11-25 13:59:12 +08:00
parent aa0723d138
commit 73731fbbba
8 changed files with 555 additions and 407 deletions

View File

@@ -116,16 +116,17 @@ export const headTop = defineComponent({
}, 50);
const signIn = () => {
ajax("/v2/api/forum/sign").then((res) => {
if (res.code != 200) {
creationAlertBox("error", res.message);
return;
}
SignInComponent.initComponent();
// ajax("/v2/api/forum/sign").then((res) => {
// if (res.code != 200) {
// creationAlertBox("error", res.message);
// return;
// }
let data = res.data;
state.value = 1;
creationAlertBox("success", res.message || "签到成功");
});
// let data = res.data;
// state.value = 1;
// creationAlertBox("success", res.message || "签到成功");
// });
};
let pitchState = ref(false);
@@ -174,5 +175,5 @@ export const headTop = defineComponent({
return { hotSearchWords, historySearchList, searchEvent, searchInputState, searchHistoryShowState, searchInputFocus, searchInputBlur, page, pitchState, state, signIn, input, currentIndex, pauseCarousel, resumeCarousel };
},
template: `<div class="head-top flexacenter"> <a href="/" class="flexacenter" target="_blank"> <img class="logo" src="https://oss.gter.net/logo" alt="" /> </a> <div class="flex1"></div> <div class="input-box flexacenter" :class="{'pitch': searchInputState}"> <div class="placeholder" v-if="!searchInputState && !input"> <div class="placeholder-box" :style="{transform: 'translateY(-' + currentIndex * 36 + 'px)', transition: 'transform .3s ease'}"> <div class="item one-line-display" v-for="(item,index) in hotSearchWords" :key="index">大家都在搜:{{ item.keyword }}</div> <div class="item one-line-display" v-for="(item,index) in hotSearchWords.slice(0, 2)" :key="'copy-' + index">大家都在搜:{{ item.keyword }}</div> </div> </div> <input class="input flex1" type="text" @keyup.enter="searchEvent()" v-model="input" @focus="searchInputFocus" @blur="searchInputBlur" maxlength="140" /> <img class="icon" src="/img/search-icon.svg" @click="searchEvent()" /> <div class="search-box-history" v-if="searchHistoryShowState"> <div class="search-box-history-title">历史搜索</div> <div class="search-box-history-list"> <div class="search-box-history-item one-line-display" v-for="(item,index) in historySearchList " :key="index" @click="searchEvent(item)">{{ item }}</div> </div> </div> </div> <div class="post-list flexacenter" v-if="page == 'details'"> <a href="/publish" target="_blank" style="margin-right: 10px"> <img class="post-item" src="/img/post-thread.png" /> </a> <a href="https://offer.gter.net/post" target="_blank" style="margin-right: 10px"> <img class="post-item" src="/img/post-offer.png" /> </a> <a href="https://offer.gter.net/post/summary" target="_blank" style="margin-right: 10px"> <img class="post-item" src="/img/post-summary.png" /> </a> <a href="https://interviewexperience.gter.net/publish" target="_blank" style="margin-right: 10px"> <img class="post-item" src="/img/post-mj.png" /> </a> <a href="https://vote.gter.net/publish" target="_blank" style="margin-right: 10px"> <img class="post-item" src="/img/post-vote.png" /> </a> </div> <template v-else> <div class="sign-in sign-in-no flexacenter" v-if="state == 0" @click="signIn()" v-cloak> <img class="sign-in-bj" src="/img/sign-in-bj.svg" /> <img class="coin-bj" src="/img/coin-bj.svg" /> <img class="coin-icon" src="/img/coin-icon.png" /> <span class="text flex1">签到领寄托币</span> <div class="sign-go flexcenter"> <img class="sign-go-bj" src="/img/sign-go.svg" /> GO </div> <img class="petal1" src="/img/petal1.png" /> <img class="petal2" src="/img/petal2.png" /> <img class="petal3" src="/img/petal3.png" /> </div> <div class="sign-in sign-in-already flexcenter" v-else> <img class="sign-icon" src="/img/sign-icon.png" /> <span>已签到,明天再来</span> </div> </template></div>`,
template: `<div class="head-top flexacenter"> <a href="/" class="flexacenter" target="_blank"> <img class="logo" src="https://oss.gter.net/logo" alt="" /> </a> <div class="flex1"></div> <div class="input-box flexacenter" :class="{'pitch': searchInputState}"> <div class="placeholder" v-if="!searchInputState && !input"> <div class="placeholder-box" :style="{transform: 'translateY(-' + currentIndex * 36 + 'px)', transition: 'transform .3s ease'}"> <div class="item one-line-display" v-for="(item,index) in hotSearchWords" :key="index">大家都在搜:{{ item.keyword }}</div> <div class="item one-line-display" v-for="(item,index) in hotSearchWords.slice(0, 2)" :key="'copy-' + index">大家都在搜:{{ item.keyword }}</div> </div> </div> <input class="input flex1" type="text" @keyup.enter="searchEvent()" v-model="input" @focus="searchInputFocus" @blur="searchInputBlur" maxlength="140" /> <img class="icon" src="/img/search-icon.svg" @click="searchEvent()" /> <div class="search-box-history" v-if="searchHistoryShowState"> <div class="search-box-history-title">历史搜索</div> <div class="search-box-history-list"> <div class="search-box-history-item one-line-display" v-for="(item,index) in historySearchList " :key="index" @click="searchEvent(item)">{{ item }}</div> </div> </div> </div> <div class="post-list flexacenter" v-if="page == 'details'"> <a href="/publish" target="_blank" style="margin-right: 10px"> <img class="post-item" src="/img/post-thread.png" /> </a> <a href="https://offer.gter.net/post" target="_blank" style="margin-right: 10px"> <img class="post-item" src="/img/post-offer.png" /> </a> <a href="https://offer.gter.net/post/summary" target="_blank" style="margin-right: 10px"> <img class="post-item" src="/img/post-summary.png" /> </a> <a href="https://interviewexperience.gter.net/publish" target="_blank" style="margin-right: 10px"> <img class="post-item" src="/img/post-mj.png" /> </a> <a href="https://vote.gter.net/publish" target="_blank" style="margin-right: 10px"> <img class="post-item" src="/img/post-vote.png" /> </a> </div> <template v-else> <div class="sign-in sign-in-no flexacenter" v-if="state == 0" @click="signIn()" v-cloak> <img class="sign-in-bj" src="/img/sign-in-bj.svg" /> <img class="coin-bj" src="/img/coin-bj.svg" /> <img class="coin-icon" src="/img/coin-icon.png" /> <span class="text flex1">签到领寄托币</span> <div class="sign-go flexcenter"> <img class="sign-go-bj" src="/img/sign-go.svg" /> GO </div> <img class="petal1" src="/img/petal1.png" /> <img class="petal2" src="/img/petal2.png" /> <img class="petal3" src="/img/petal3.png" /> </div> <div class="sign-in sign-in-already flexcenter" v-else @click="signIn()"> <img class="sign-icon" src="/img/sign-icon.png" /> <span>已签到,明天再来</span> </div> </template></div>`,
});

View File

@@ -43,7 +43,7 @@
<img class="petal2" src="/img/petal2.png" />
<img class="petal3" src="/img/petal3.png" />
</div>
<div class="sign-in sign-in-already flexcenter" v-else>
<div class="sign-in sign-in-already flexcenter" v-else @click="signIn()">
<img class="sign-icon" src="/img/sign-icon.png" />
<span>已签到,明天再来</span>
</div>

File diff suppressed because one or more lines are too long

View File

@@ -36,6 +36,7 @@
height: 100%;
z-index: 10005;
background-color: rgba(0, 0, 0, 0.5);
display: none;
}
.signInBox-mask * {
@@ -146,7 +147,7 @@
top: -21px;
z-index: 1;
width: 522px;
height: 594px;
height: 596px;
background-color: #fdda55;
padding: 20px;
border-radius: 0 0 20px 0;
@@ -331,6 +332,12 @@
cursor: pointer;
}
.signInBox-mask .signInBox .signInBox-content .left-box .calendar-box .sign-in-btn.already {
background-color: #fdeeb7;
color: #deae07;
font-size: 16px;
}
.signInBox-mask .signInBox .signInBox-content .sign-in-box {
margin: 0 15px;
border-radius: 20px;
@@ -356,6 +363,10 @@
border-bottom: 1px dotted #ebebeb;
}
.signInBox-mask .signInBox .signInBox-content .sign-in-box .sign-in-list {
display: none;
}
.signInBox-mask .signInBox .signInBox-content .sign-in-box .sign-in-list .sign-in-item {
padding: 11px 0 0 30px;
}
@@ -429,6 +440,7 @@
color: #d7d7d7;
padding-top: 10px;
padding-bottom: 10px;
display: none;
}
.signInBox-mask .signInBox .signInBox-content .sign-in-box .sign-in-more {
@@ -437,6 +449,7 @@
padding-top: 10px;
padding-bottom: 10px;
cursor: pointer;
display: none;
}
.signInBox-mask .signInBox .signInBox-content .sign-in-box .sign-in-more .sign-in-more-icon {
@@ -447,6 +460,7 @@
.signInBox-mask .signInBox .signInBox-content .sign-in-box .discuss-list-no {
flex-direction: column;
display: none;
}
.signInBox-mask .signInBox .signInBox-content .sign-in-box .discuss-list-no .empty-icon {
@@ -467,6 +481,7 @@
left: 0;
width: 100vw;
height: 100vh;
display: none;
}
.signInBox-mask .succeed-mask .succeed-box {
@@ -572,6 +587,10 @@
line-height: 28px;
}
.signInBox-mask .succeed-mask .succeed-box .succeed-award-list .succeed-award-item {
display: none;
}
.signInBox-mask .succeed-mask .succeed-box .succeed-award-list .succeed-award-item:not(:last-of-type) {
margin-bottom: 12px;
}
@@ -616,14 +635,14 @@
<div class="signInBox-mask flexcenter">
<div class="signInBox">
<div class="signInBox-head">
<img class="header-halo" src="/img/halo-icon.png">
<img class="header-bi" src="/img/coin-icon.png">
<img class="header-cross" src="/img/cross-icon.png">
<img class="header-halo" src="https://app.gter.net/image/gter/commonCom/sign-in/img/halo-icon.png">
<img class="header-bi" src="https://app.gter.net/image/gter/commonCom/sign-in/img/coin-icon.png">
<img class="header-cross" src="https://app.gter.net/image/gter/commonCom/sign-in/img/cross-icon.png">
</div>
<div class="signInBox-content flexflex">
<div class="left-box">
<div class="content-header flexacenter">
<img class="bi-img" src="/img/coin-icon.png">
<img class="bi-img" src="https://app.gter.net/image/gter/commonCom/sign-in/img/coin-icon.png">
<div class="bi-value" data-field="integral">0</div>
<div class="bi-text">寄托币</div>
<div class="bi-rule">签到规则</div>
@@ -638,21 +657,56 @@
</div>
<div class="calendar-box flexflex">
<div class="sign-in-text">本月已签到 <span class="sign-in-value" data-field="signnum">0</span> 天,共领 <span class="sign-in-value" data-field="signreward">0</span> 寄托币</div>
<div class="sign-in-text">本月已签到 <span class="sign-in-value" data-field="signnum">0</span> 天,共领 <span
class="sign-in-value" data-field="signreward">0</span> 寄托币<span class="diligent"
hidden>,次月可获寄托勤务兵勋章</span></div>
<div class="calendar flexflex" data-list="calendar"></div>
<div class="sign-in-btn flexcenter" data-action="sign">立即签到</div>
<!-- <div v-else-if="issign == 1" class="sign-in-btn flexcenter already">今天已签到,明天记得来哦~</div> -->
</div>
</div>
<div class="sign-in-box flex1 flexflex">
<div class="sign-in-header flexflex">今日已签到 <div class="sign-in-header-value" data-field="todaycount">0</div>人</div>
<div class="discuss-list-no flexcenter flex1" hidden>
<img class="empty-icon" src="https://app.gter.net/image/miniApp/offer/empty-icon.png">
<div class="discuss-list-no-text">暂无数据</div>
<div class="sign-in-header flexflex">今日已签到 <div class="sign-in-header-value" data-field="todaycount">0</div>人
</div>
<div class="discuss-list-no flexcenter flex1">
<img class="empty-icon" src="https://app.gter.net/image/gter/commonCom/sign-in/img/empty-icon.png">
<div class="discuss-list-no-text">- 暂无数据 -</div>
</div>
<div class="sign-in-list"></div>
<div class="sign-in-finish flexcenter">- End -</div>
<div class="sign-in-more flexcenter">更多 <img class="sign-in-more-icon"
src="https://app.gter.net/image/gter/commonCom/sign-in/img/arrows-circle-black.png"></div>
</div>
</div>
</div>
<!-- 签到成功 -->
<div class="succeed-mask flexcenter">
<div class="succeed-box flexcenter flexcolumn">
<div class="succeed-icon flexflex">
<img class="succeed-icon-bj" src="https://app.gter.net/image/gter/commonCom/sign-in/img/halo-icon.png">
<div class="succeed-icon-header-dot succeed-icon-header-dot-left"></div>
<div class="succeed-icon-header-dot succeed-icon-header-dot-right"></div>
<div class="succeed-icon-header"></div>
<div class="succeed-icon-dot flexflex">
<div class="succeed-icon-dot-item" v-for="index in 8" :key="index"></div>
</div>
<div class="yellow-tick-box flexcenter">
<img class="yellow-tick-circle" src="https://app.gter.net/image/gter/commonCom/sign-in/img/circle-yellow.svg">
<img class="yellow-tick-faint-yellow" src="https://app.gter.net/image/gter/commonCom/sign-in/img/tick-faint-yellow.svg">
</div>
</div>
<div class="succeed-award-list flexcolumn flexacenter">
<div class="succeed-award-item flexacenter reward" v-if="reward != 0">
<div class="succeed-award-name">随机奖励</div>
<div class="succeed-award-value flexcenter">+{{ reward }}</div>
</div>
<div class="succeed-award-item flexacenter extra_reward" v-if="extra_reward != 0">
<div class="succeed-award-name">额外奖励</div>
<div class="succeed-award-value flexcenter">+{{ extra_reward }}</div>
</div>
<div class="sign-in-list" data-list="users"></div>
<div class="sign-in-finish flexcenter" hidden>- End -</div>
<div class="sign-in-more flexcenter" hidden>更多 <img class="sign-in-more-icon" src="https://app.gter.net/image/miniApp/offer/arrows-circle-black.png"></div>
</div>
</div>
</div>

View File

@@ -16,6 +16,7 @@
</head>
<body>
<sign-in-box></sign-in-box>
<div class="container" id="details" v-cloak>
<div class="templateValue" ref="uniqidRef">fi88yrHXiDSj</div>

View File

@@ -1,282 +1,283 @@
{extend name="forum/base" /}
{block name="link"}
<link rel="stylesheet" href="{@css/index.css}" />
{/block}
<!DOCTYPE html>
<html lang="en">
{block name="main"}
<div class="container" id="appIndex" v-cloak>
<head-top page="index"></head-top>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>论坛首页</title>
<link rel="stylesheet" href="./css/public.css" />
<link rel="stylesheet" href="./css/index.css" />
<div class="header-content-box flexflex">
<div class="header-content-left">
<div class="adv-list flexacenter">
<div class="headerbanner adv-item">{:html_entity_decode($ad['headerbanner'])}</div>
<div class="subnavbanner adv-item">{:html_entity_decode($ad['subnavbanner'])}</div>
</div>
<!-- 话题和精选 -->
<div class="topic-and-selectives flexflex">
<div class="topic-box">
<div class="head-top flexcenter">
<img class="icon" src="https://app.gter.net/image/miniApp/offer/well-white.svg" />
<div class="text">话题</div>
</div>
<div class="topic-head flexflex">
<a class="title one-line-display" :href="'/details/' + ongoingbj.uniqid" target="_blank">{{ ongoingbj.title }}</a>
<a class="hint one-line-display" :href="'/details/' + ongoingbj.uniqid" target="_blank"></a>
<div class="people flexacenter">
<div class="left flexacenter">
<div class="number">{{ ongoingbj.comments }}</div>
<div class="text">人正在讨论</div>
</div>
<div class="right flexacenter">
<div class="item flexcenter" v-for="(item, index) in ongoingbj.commentUser" :key="index" :style="{zIndex: 7 - index }">
<img class="img" :src="item.avatar" />
<script src="./js/vue.global.js"></script>
<script src="./component/bi/bi.js"></script>
<style>
[v-cloak] {
display: none;
}
</style>
</head>
<body>
<div class="container" id="appIndex" v-cloak>
<head-top></head-top>
<div class="" @click="clickbtn()">按钮</div>
<bi-card coins="20" token="_TXzU0MGGjdPFL8RR-Qmja2gGEbUCNPUddwAdczWPJctueas3yXWMkYCvr96dc95-Wu_WCMXYd1kHBCRMdIeydneWA5hsg4_a8hkH5tGKdrxdc_OPQtzsCPybE62xK9rPRFsdPwzQI9pqQYthZYqcANTqof0CpHcMS3yUP1NIvFnJ602njRjNTY~"></bi-card>
<div class="header-content-box flexflex">
<div class="header-content-left">
<div class="adv-list flexacenter">
<a class="adv-item" target="_blank">
<img class="adv-img" src="https://o.x-php.com/bbs/common/cf/144405a5pqst6fakct81t8.gif" />
</a>
<a class="adv-item" target="_blank">
<img class="adv-img" src="https://o.x-php.com/bbs/common/cf/144405a5pqst6fakct81t8.gif" />
</a>
</div>
<!-- 话题和精选 -->
<div class="topic-and-selectives flexflex">
<div class="topic-box">
<div class="head-top flexcenter">
<img class="icon" src="https://app.gter.net/image/miniApp/offer/well-white.svg" />
<div class="text">话题</div>
</div>
<div class="topic-head flexflex" bind:tap="goDetails" data-uniqid="{{ ongoingbj.uniqid }}">
<div class="title one-line-display">{{ ongoingbj.title }}</div>
<div class="hint one-line-display">{{ ongoingbj.description }}</div>
<div class="people flexacenter">
<div class="left flexacenter">
<div class="number">{{ ongoingbj.comments }}</div>
<div class="text">人正在讨论</div>
</div>
<div class="right flexacenter">
<div class="item flexcenter" v-for="(item, index) in ongoingbj.commentUser" :key="index" :style="{zIndex: 7 - index }">
<img class="img" :src="item.avatar" />
</div>
</div>
</div>
</div>
<div class="topic-list">
<a class="item flexacenter" v-for="(item, index) in pastList" :key="index" :href="'http://14.22.79.19:9551/?tpl=forum/details&uniqid=' + item.uniqid" target="_blank">
<img class="img" src="https://app.gter.net/image/miniApp/offer/well-yellow.svg" />
<div class="text one-line-display flex1">{{ item.title }}</div>
</a>
</div>
</div>
<div class="topic-list">
<a class="item flexacenter" v-for="(item, index) in pastList" :key="index" :href="'/details/' + item.uniqid" target="_blank">
<img class="img" src="https://app.gter.net/image/miniApp/offer/well-yellow.svg" />
<div class="text one-line-display flex1" v-html="item.title"></div>
<div class="selectives-box">
<div class="head-top flexcenter">
<img class="icon" src="https://app.gter.net/image/miniApp/offer/handpick-icon.png" />
<div class="text">精选</div>
</div>
<div class="list flexflex">
<a class="item flexacenter" v-for="(item, index) in topicHandpickedList" :key="index" :href="'http://14.22.79.19:9551/?tpl=forum/details&uniqid=' + item.uniqid" target="_blank">
<div class="dot"></div>
<div class="text one-line-display">{{ item.title }}</div>
</a>
</div>
</div>
</div>
<div class="header-left-bottom-box flexflex">
<a class="adv flexacenter" data-x-event="bbsindexslide" href="https://bbs.gter.net/thread-1663824-1-1.html" title="26Fall祈福求offer得offer" target="_blank">
<img class="adv-icon" src="https://o.x-php.com/Zvt57TuJSUvkyhw-xG_Y2l-U_potcXiB1NFX9ddrB-ebU2ybYKMuA2kGH_7R-9lU990IXj3X-Q7x4Cg0NDI5" alt="26Fall祈福求offer得offer" />
</a>
<div class="list">
<div class="item flexacenter" v-for="(item, index) in 4" :key="index">
<div class="icon dot-gray"></div>
<a class="one-line-display text flex1" href="https://offer.gter.net/details/XynvPnSnX1KL" target="_blank">26Fall-香港理工大学 MSc Offer</a>
</div>
</div>
<div class="list list2">
<div class="item flexacenter" v-for="(item, index) in 4" :key="index">
<div class="icon dot-gray"></div>
<a class="one-line-display text flex1" href="https://offer.gter.net/details/y9KbiuzHXbmr" target="_blank">26Fall-香港科技大学 MSc Offer</a>
</div>
</div>
</div>
</div>
<div class="header-content-right">
<div class="post-entrance">
<div class="entrance-top flexacenter"><img class="icon" src="./img/forum.png" />我要发帖</div>
<div class="entrance-bottom flexacenter">
<a class="item flexcenter" href="https://offer.gter.net/post" target="_blank" style="position: relative">
<img class="icon" src="./img/offer.svg" style="width: 16px" />
<span class="text">报Offer</span>
</a>
<a class="item flexcenter" href="https://offer.gter.net/post/summary" target="_blank" style="position: relative">
<img class="icon" src="./img/summarize.png" style="width: 16px" />
<span class="text">写总结</span>
</a>
<a class="item flexcenter" href="https://interviewexperience.gter.net/publish" target="_blank" style="position: relative">
<img class="icon" src="./img/mj.png" style="width: 16px" />
<span class="text">写面经</span>
</a>
<a class="item flexcenter" href="https://vote.gter.net/publish" target="_blank" style="position: relative">
<img class="icon" src="./img/vote.svg" style="width: 16px" />
<span class="text">发起投票</span>
</a>
</div>
</div>
<div class="selectives-box">
<div class="head-top flexcenter">
<img class="icon" src="https://app.gter.net/image/miniApp/offer/handpick-icon.png" />
<div class="text">精选</div>
</div>
<div class="list flexflex">
<a class="item flexacenter" v-for="(item, index) in topicHandpickedList" :key="index" :href="'/details/' + item.uniqid" target="_blank">
<div class="dot"></div>
<div class="text one-line-display" v-html="item.title"></div>
</a>
</div>
</div>
</div>
<div class="header-left-bottom-box flexflex">
<a class="adv flexacenter" data-x-event="bbsindexslide" href="{$operation['bbsindexslide']['url']}" title="{$operation['bbsindexslide']['title']}" target="_blank">
<img class="adv-icon" src="{$operation['bbsindexslide']['image']}" alt="{$operation['bbsindexslide']['title']}" />
<a class="adv-broadside" ref="custom_2AdvRef">
<img class="adv-broadside-img" src="https://o.x-php.com/bbs/common/cf/152158dpf5eh7pqpaealiq.gif" />
</a>
<div class="list">
{foreach :array_slice($operation['bbsindexarticle'],0,4) as $key=>$vo }
<div class="item flexacenter">
<div class="icon dot-gray"></div>
<a class="one-line-display text flex1" href="{$vo['url']}" target="_blank">{$vo['title']}</a>
</div>
{/foreach}
</div>
<div class="list list2">
{foreach :array_slice($operation['bbsindexarticle'],4,8) as $key=>$vo }
<div class="item flexacenter">
<div class="icon dot-gray"></div>
<a class="one-line-display text flex1" href="{$vo['url']}" target="_blank">{$vo['title']}</a>
</div>
{/foreach}
</div>
</div>
</div>
<div class="header-content-right">
<div class="post-entrance">
<a class="entrance-top flexacenter" href="/publish" target="_blank"><img class="icon" src="./img/forum.png" />我要发帖</a>
<div class="entrance-bottom flexacenter">
<a class="item flexcenter" href="https://offer.gter.net/post" target="_blank">
<div class="icon-box">
<img class="icon" src="{@img/offer-icon-V2.svg}" />
</div>
<span class="text">报Offer</span>
</a>
<a class="item flexcenter" href="https://offer.gter.net/post/summary" target="_blank">
<div class="icon-box">
<img class="icon" src="{@img/summary-icon-V2.svg}" />
</div>
<span class="text">写总结</span>
</a>
<a class="item flexcenter" href="https://interviewexperience.gter.net/publish" target="_blank">
<div class="icon-box">
<img class="icon" src="{@img/mj-icon-V2.svg}" />
</div>
<span class="text">写面经</span>
</a>
<a class="item flexcenter" href="https://vote.gter.net/publish" target="_blank" >
<div class="icon-box">
<img class="icon" src="{@img/vote-icon-V2.svg}" />
</div>
<span class="text">发起投票</span>
</a>
</div>
</div>
{if $ad['custom_2']}
<div class="custom_2 adv" ref="custom_2AdvRef">{:html_entity_decode($ad['custom_2'])}</div>
{/if}
<div class="group-box">
<div class="group flexflex">
<div class="group-item flexcenter" v-for="(item, index) in popList" :key="index">
<div class="title">{{ item.title }}</div>
<div class="subtitle">{{ item.subtitle }}</div>
<div class="QRcode-box flexcenter">
<img class="QRcode" :src="item.img" />
<div class="text">微信扫码</div>
</div>
</div>
</div>
</div>
<div class="offer-box" :class="{'small': custom_2AdvRef}" id="offer-box" @mouseover="offerMouseover" @mouseout="offerMouseout">
<div class="offer-list" id="offer-list" ref="offerListRef" :style="{'margin-top': -offerMargin + 'px'}">
<a class="item flexflex" :href="item['url']" target="_blank" v-cloak v-for="(item, index) in offerlist" :key="index">
<div class="avatar" :style="{backgroundImage: `url(${item['avatar']})`}"></div>
<div class="">
<div class="condition one-line-display">{{ item["date"] }} {{ item['type'] }}</div>
<div class="titletitle one-line-display">{{ item["content"] }}</div>
</div>
</a>
</div>
</div>
</div>
</div>
<div class="admission">
<a class="admission-header flexflex" target="_blank" href="https://admissionofficer.gter.net">
<img class="admission-header-icon" src="/img/admission-officer-icon.png">
<div class="admission-header-name flexflex">Hello Admission Officer</div>
</a>
<div class="admission-list flexflex">
{foreach $OfficerToEnrolNewStudents as $key=>$item}
<div class="admission-item flexcenter">
<a class="admission-img" href="{$item['url']}" target="_blank">
<img src="{$item['image']}" alt="{$item['name']}" />
</a>
</div>
{/foreach}
</div>
</div>
<div class="matter flexflex" ref="matterRef">
<div class="matter-content flex1">
<!-- 论坛板块列表 -->
<div class="forum-sections-list">
<img class="img" src="{@img/sections-left.svg}" />
<div class="title">论坛版块</div>
<div class="list">
<template v-for="(item, index) in sectionList" :key="index">
<div class="line flexacenter">
<a class="item flexacenter" v-for="(item, index) in item" :key="index" target="_blank" :href="`/section/${item.uniqid}`">{{ item.name }}</a>
</div>
</template>
</div>
</div>
<item-forum :itemdata="item" v-for="(item, index) in list" :key="index"></item-forum>
<load-box :loading="loading"></load-box>
</div>
<div class="sidebar" ref="sidebarRef" :style="{'top': sidebarHeight + 'px'}">
{if $ad['custom_1']} <div class="custom_1 ad-item">{:html_entity_decode($ad['custom_1'])}</div> {/if}
{if $ad['custom_3']} <div class="custom_3 ad-item">{:html_entity_decode($ad['custom_3'])}</div> {/if}
<!-- offer -->
<div class="offer-side-box side-box" v-if="offer.length != 0">
<div class="side-header flexacenter">
<div class="left flexacenter">
<img class="header-icon" src="{@img/offer-index-icon.png}" />
<div class="title">Offer</div>
</div>
<a class="more flexacenter" href="https://offer.gter.net" target="_blank">
<span>more</span>
<img class="more-icon" src="{@img/right-arrow-black.svg}" />
</a>
</div>
<div class="box">
<a class="item flexflex" v-cloak v-for="item in offer" :key="item" :href="'/details/' + item['uniqid']" target="_blank">
<img class="school-img" :src="item.data['schoollogo']" />
<div class="school-detail flex1 flexflex">
<div class="school-name one-line-display">{{ item.data['schoolname'] }}</div>
<div class="school-brief one-line-display">{{ item.data['professional'] }}</div>
<div class="school-offer flexacenter">
<span>{{ item.data['degree'] }}</span>
<span class="long-string">|</span>
<span>{{ item.data['semester'] }}</span>
<span class="long-string">|</span>
<span>{{ item.data['apply_results_text'] }}</span>
<div class="group-box">
<div class="group flexflex">
<div class="group-item flexcenter" v-for="(item, index) in popList" :key="index">
<div class="title">{{ item.title }}</div>
<div class="subtitle">{{ item.subtitle }}</div>
<div class="QRcode-box flexcenter">
<img class="QRcode" :src="item.img" />
<div class="text">微信扫码</div>
</div>
</div>
</a>
<a class="add-btn flexcenter" style="position: relative" href="https://offer.gter.net/post" target="_blank" v-cloak>
<img class="add-icon" src="{@img/add-btn-black.svg}" />
<div>报Offer</div>
<div v-if="realname == 0 && userInfo.uin > 0" class="open-attest-btn" @click.prevent="openAttest"></div>
</a>
</div>
</div>
<div class="offer-box" :class="{'small': custom_2AdvRef}" id="offer-box" @mouseover="offerMouseover" @mouseout="offerMouseout">
<div class="offer-list" id="offer-list" ref="offerListRef" :style="{'margin-top': -offerMargin + 'px'}">
<a class="item flexflex" :href="item['url']" target="_blank" v-cloak v-for="(item, index) in offerlist" :key="index">
<div class="avatar" :style="{backgroundImage: `url(${item['avatar']})`}"></div>
<div class="">
<div class="condition one-line-display">{{ item["date"] }} {{ item['type'] }}</div>
<div class="titletitle one-line-display">{{ item["content"] }}</div>
</div>
</a>
</div>
</div>
</div>
<!-- vote -->
<div class="vote-side-box side-box" v-if="vote.length != 0">
<div class="side-header flexacenter">
<div class="left flexacenter">
<img class="header-icon" src="{@img/vote-index-icon.png}" />
<div class="title">投票</div>
</div>
<div class="matter flexflex">
<div class="matter-content flex1">
<!-- 论坛板块列表 -->
<div class="forum-sections-list">
<img class="img" src="./img/sections-left.svg" />
<div class="title">论坛版块</div>
<div class="list">
<template v-for="(item, index) in sectionList" :key="index">
<div class="line flexacenter">
<a class="item flexacenter" v-for="(item, index) in item" :key="index" target="_blank" :href="`/section-index.html?section=${item.uniqid}`">{{ item.name }}</a>
</div>
</template>
</div>
<a class="more flexacenter" target="_blank" href="https://vote.gter.net">
<span>more</span>
<img class="more-icon" src="{@img/right-arrow-black.svg}" />
</a>
</div>
<div class="box">
<a class="item flexflex" v-cloak v-for="item in vote" :key="item" target="_blank" :href="'/details/' + item['uniqid']">
<div class="name one-line-display">{{item['title']}}</div>
<div class="brief">{{ item['content'] }}</div>
</a>
<a class="add-btn flexcenter" style="position: relative" v-cloak target="_blank" href="https://vote.gter.net/publish">
<img class="add-icon" src="{@img/add-btn-black.svg}" />
<div>发起投票</div>
<div v-if="realname == 0 && userInfo.uin > 0" class="open-attest-btn" @click.prevent="openAttest"></div>
</a>
<div class="list-load-box flexcenter">
<img class="list-load-icon" src="./img/load-icon.svg" />
<div class="list-load-text">加载中</div>
</div>
<item-forum :itemdata="item" v-for="(item, index) in list" :key="index"></item-forum>
</div>
<div class="sidebar" :style="{'top': sidebarHeight + 'px'}" ref="sidebarRef">
<a class="ad-item flexacenter" href="" target="_blank">
<img class="adv-icon" src="https://o.x-php.com/bbs/common/cf/1709075xdbbbvjd8cbxvdd.jpg" alt="26Fall祈福求offer得offer" />
</a>
<a class="ad-item flexacenter" href="" target="_blank">
<img class="adv-icon" src="https://o.x-php.com/bbs/common/cf/1709075xdbbbvjd8cbxvdd.jpg" alt="26Fall祈福求offer得offer" />
</a>
<!-- mj -->
<div class="interviewexperience-side-box side-box" v-if="interviewexperience.length != 0">
<div class="side-header flexacenter">
<div class="left flexacenter">
<img class="header-icon" src="{@img/mj-index-icon.png}" />
<div class="title">面经</div>
</div>
<a class="more flexacenter" href="https://interviewexperience.gter.net/" target="_blank">
<span>more</span>
<img class="more-icon" src="{@img/right-arrow-black.svg}" />
</a>
</div>
<div class="box">
<a class="item flexflex" v-cloak v-for="(item,index) in interviewexperience" :key="item" :href="'/details/' + item['uniqid']" target="_blank">
<div class="school one-line-display">{{ item.data['schoolname'] }}</div>
<div class="major one-line-display">{{ item.data['profession'] || item.data['project'] }}</div>
<div class="info">
<img class="icon" :src="item.user['avatar']" />
<span class="text">{{ item['content'] }}</span>
<!-- offer -->
<div class="offer-side-box side-box" v-if="offer.length != 0">
<div class="side-header flexacenter">
<div class="left flexacenter">
<img class="header-icon" src="./img/offer-index-icon.png" />
<div class="title">Offer</div>
</div>
</a>
<a class="add-btn flexcenter" style="position: relative" href="https://interviewexperience.gter.net/publish" target="_blank" v-cloak>
<img class="add-icon" src="{@img/add-btn-black.svg}" />
<div>写面经</div>
<div v-if="realname == 0 && userInfo.uin > 0" class="open-attest-btn" @click.prevent="openAttest"></div>
</a>
<a class="more flexacenter" href="https://offer.gter.net" target="_blank">
<span>more</span>
<img class="more-icon" src="./img/right-arrow-black.svg" />
</a>
</div>
<div class="box">
<a class="item flexflex" v-cloak v-for="item in offer" :key="item" :href="'/details/' + item['uniqid']" target="_blank">
<img class="school-img" :src="item.data['schoollogo']" />
<div class="school-detail flex1 flexflex">
<div class="school-name one-line-display">{{ item.data['schoolname'] }}</div>
<div class="school-brief one-line-display">{{ item.data['professional'] }}</div>
<div class="school-offer flexacenter">
<span>{{ item.data['degree'] }}</span>
<span class="long-string">|</span>
<span>{{ item.data['semester'] }}</span>
<span class="long-string">|</span>
<span>{{ item.data['apply_results_text'] }}</span>
</div>
</div>
</a>
<a class="add-btn flexcenter" style="position: relative" href="https://offer.gter.net/post" target="_blank" v-cloak>
<img class="add-icon" src="./img/add-btn-black.svg" />
<div>报Offer</div>
<div v-if="realname == 0 && userInfo.uin > 0" class="open-attest-btn" @click.prevent="openAttest"></div>
</a>
</div>
</div>
</div>
<!-- newest 最新 -->
<latest-list boxtype="newest"></latest-list>
<latest-list boxtype="essence"></latest-list>
<!-- vote -->
<div class="vote-side-box side-box" v-if="vote.length != 0">
<div class="side-header flexacenter">
<div class="left flexacenter">
<img class="header-icon" src="./img/vote-index-icon.png" />
<div class="title">投票</div>
</div>
<a class="more flexacenter" target="_blank" href="https://vote.gter.net">
<span>more</span>
<img class="more-icon" src="./img/right-arrow-black.svg" />
</a>
</div>
<div class="box">
<a class="item flexflex" v-cloak v-for="item in vote" :key="item" target="_blank" :href="'https://vote.gter.net/details/' + item['uniqid']">
<div class="name one-line-display">{{item['title']}}</div>
<div class="brief">{{ item['message'] }}</div>
</a>
<a class="add-btn flexcenter" style="position: relative" v-cloak target="_blank" href="https://vote.gter.net/publish">
<img class="add-icon" src="./img/add-btn-black.svg" />
<div>发起投票</div>
<div v-if="realname == 0 && userInfo.uin > 0" class="open-attest-btn" @click.prevent="openAttest"></div>
</a>
</div>
</div>
<!-- mj -->
<div class="interviewexperience-side-box side-box" v-if="interviewexperience.length != 0">
<div class="side-header flexacenter">
<div class="left flexacenter">
<img class="header-icon" src="./img/mj-index-icon.png" />
<div class="title">面经</div>
</div>
<a class="more flexacenter" href="https://interviewexperience.gter.net/" target="_blank">
<span>more</span>
<img class="more-icon" src="./img/right-arrow-black.svg" />
</a>
</div>
<div class="box">
<a class="item flexflex" v-cloak v-for="(item,index) in interviewexperience" :key="item" :href="'https://interviewexperience.gter.net/details/' + item['uniqid']" target="_blank">
<div class="school one-line-display">{{ item.data['schoolname'] }}</div>
<div class="major one-line-display" v-if="item.data['profession']">{{ item.data['profession'] }}</div>
<div class="info">
<img class="icon" :src="item.user['avatar']" />
<span class="text">{{ item['content'] }}</span>
</div>
</a>
<a class="add-btn flexcenter" style="position: relative" href="https://interviewexperience.gter.net/publish" target="_blank" v-cloak>
<img class="add-icon" src="./img/add-btn-black.svg" />
<div>写面经</div>
<div v-if="realname == 0 && userInfo.uin > 0" class="open-attest-btn" @click.prevent="openAttest"></div>
</a>
</div>
</div>
<!-- newest 最新 -->
<latest-list boxtype="newest"></latest-list>
<latest-list boxtype="essence"></latest-list>
</div>
</div>
</div>
</div>
{/block}
{block name="module"}
{__block__}
<script src="/js/scrolltext.js"></script>
<script type="module" src="/js/index.js"></script>
<!-- <script type="module" src="https://f.gter.net/js/index.js"></script> -->
{/block}
<script src="./js/axios.min.js"></script>
<script src="./js/public.js"></script>
<script src="./js/scrolltext.js"></script>
<script type="module" src="./js/index.js"></script>
</body>
</html>

View File

@@ -16,7 +16,7 @@ const appSectionIndex = createApp({
onMounted(() => {
getUserInfoWin();
setTimeout(() => {
signInBox._init();
SignInComponent.initComponent();
}, 3000);
});

View File

@@ -399,8 +399,6 @@ const removeQueryQ = (isReplace = false) => {
// 跳转登录
const go_ajax_Login = () => {
console.log("go_ajax_Login");
if (typeof ajax_login === "function") ajax_login();
else window.open("https://passport.gter.net/?referer=" + escape(location.href), "_self");
};