feat: 添加移动端适配和优化组件样式

refactor: 重构CSS和LESS文件结构
style: 调整搜索页和公共样式
fix: 修复组件图片路径问题
docs: 更新组件文档和注释
This commit is contained in:
DESKTOP-RQ919RC\Pc
2025-12-23 19:13:01 +08:00
parent 2fd55c3e61
commit 826700970d
26 changed files with 2130 additions and 343 deletions

759
index-v2.html Normal file
View File

@@ -0,0 +1,759 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>寄托天下_中立的出国留学申请和考试交流平台|留学资讯|DIY留学|留学经验|留学考试|海外生活 寄托天下出国留学网 -- 寄托天下</title>
<link rel="stylesheet" href="/css/public.css" />
<link rel="stylesheet" href="/css/index.css" />
<!-- <link rel="stylesheet" href="https://f.gter.net/css/index.css" /> -->
<meta name="description" content="提供最有用的出国留学资讯和最热心的留学交流论坛。在BBS上,你可以咨询签证, 面试, 机经, offer, 奖学金, 名校专业等, 也可以分享雅思、托福、GRE的学习心得。无论你留学在美国、加拿大、英国还是澳洲, 都能在留学论坛上找到寄托情感的归宿。">
<meta name="keywords" content="美国留学,加拿大留学,香港留学,新加坡留学,英国留学,欧洲留学, 留学经验分享,DIY留学,留学申请,留学流程,留学费用,出国留学,留学论坛, 留学网站,留学考试,GRE,TOEFL,IBT,GMAT,IELTS,SAT,VISA,文书,签证">
<meta name="author" content="">
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website">
<meta property="og:title" content="寄托天下_中立的出国留学申请和考试交流平台|留学资讯|DIY留学|留学经验|留学考试|海外生活 寄托天下出国留学网">
<meta property="og:description" content="提供最有用的出国留学资讯和最热心的留学交流论坛。在BBS上,你可以咨询签证, 面试, 机经, offer, 奖学金, 名校专业等, 也可以分享雅思、托福、GRE的学习心得。无论你留学在美国、加拿大、英国还是澳洲, 都能在留学论坛上找到寄托情感的归宿。">
<meta property="og:image" content="">
<!-- Twitter -->
<meta property="twitter:card" content="summary_large_image">
<meta property="twitter:title" content="寄托天下_中立的出国留学申请和考试交流平台|留学资讯|DIY留学|留学经验|留学考试|海外生活 寄托天下出国留学网">
<meta property="twitter:description" content="提供最有用的出国留学资讯和最热心的留学交流论坛。在BBS上,你可以咨询签证, 面试, 机经, offer, 奖学金, 名校专业等, 也可以分享雅思、托福、GRE的学习心得。无论你留学在美国、加拿大、英国还是澳洲, 都能在留学论坛上找到寄托情感的归宿。">
<meta property="twitter:image" content="">
<!-- 网站图标 -->
<link rel="icon" href="https://www.gter.net/favicon.ico" type="image/x-icon">
<link rel="shortcut icon" href="https://www.gter.net/favicon.ico" type="image/x-icon">
<style>
[v-cloak] {
display: none !important;
}
#pre-loader {
height: 70vh;
display: flex;
justify-content: center;
align-items: center;
}
#pre-loader .three-bounce>div {
display: inline-block;
width: 18px;
height: 18px;
border-radius: 100%;
top: 50%;
margin-top: -9px;
background: #aeadba;
animation: bouncedelay 1.4s infinite ease-in-out;
animation-fill-mode: both;
}
#pre-loader .three-bounce .one {
animation-delay: -0.32s;
}
#pre-loader .three-bounce .two {
animation-delay: -0.16s;
}
@keyframes bouncedelay {
0%,
100%,
80% {
transform: scale(0);
-webkit-transform: scale(0);
}
40% {
transform: scale(1);
-webkit-transform: scale(1);
}
}
</style>
<script type="text/javascript">
var STYLEID = '2',
STATICURL = 'static/',
IMGDIR = 'https://bbs.gter.net/template/archy_plt8/image',
VERHASH = 'Z62',
charset = 'gbk',
discuz_uid = '0',
cookiepre = '4B5x_c0ae_',
cookiedomain = 'gter.net',
cookiepath = '/',
showusercard = '1',
attackevasive = '0',
disallowfloat = '',
creditnotice = ',',
defaultstyle = '',
REPORTURL = 'aHR0cDovL2Jicy5ndGVyLm5ldC9mb3J1bS5waHA/dGlkPTI0MDYzNTYmZ290bz1sYXN0cG9zdA==',
SITEURL = 'https://app.gter.net/',
JSPATH = 'static/js/';
</script>
<script src="https://app.gter.net/bottom?tpl=header&menukey=bbs"></script>
<script src="https://framework.x-php.com/gter/bbs/static/js/common.js" charset="gbk"></script>
</head>
<body>
<script>
window.__ASSET_VERSION__ = 'Z69';
// 判断是否是移动端
window.isMobile = window.innerWidth <= 768;
</script>
<div id="ajaxwaitid"></div>
<div id="append_parent"></div>
<div class="head-top flexacenter" style="width: 1200px;margin: 20px auto 30px;">
<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">
<div class="placeholder">
<div class="placeholder-box" style="transition: transform .3s ease"></div>
</div>
<input class="input flex1" type="text" maxlength="140" /> <img class="icon" onclick="searchEvent()" src="https://framework.x-php.com/gter/forum/img/search-icon.svg?v=euX4m9PrbyvP" />
<div class="search-box-history">
<div class="search-box-history-title">历史搜索</div>
<div class="search-box-history-list"></div>
</div>
</div>
<div class="post-list flexacenter"> </div>
<div class="sign-in sign-in-no flexacenter"></div>
<div class="head-more flexcenter" onclick="openHeadPop()">
<img class="more-icon" style="width: 18px;height: 15px;" src="https://framework.x-php.com/gter/forum/img/threeAcross.svg?v=euX4m9PrbyvP" />
</div>
<div class="head-pop" style="display: none;">
<div class="head-more-pop">
<div class="head-more-userinfo flex1 flexacenter">
<div class="head-more-left flexacenter"><img class="head-more-userinfo-avatar" src="" alt="">
<div class="head-more-userinfo-username"></div>
</div>
<div class="head-more-right">
<div class="loginBtn flexcenter" onclick="go_ajax_Login()">登录/注册</div>
</div>
</div>
<div class="tab-list"><a class="tab-item flexacenter" href="https://www.gter.net" target="_blank">寄托首页</a><a class="tab-item flexacenter pitch" href="https://f.gter.net" target="_blank">论坛</a><a class="tab-item flexacenter" href="https://app.gter.net/admissionOfficer" target="_blank">招生官</a><a class="tab-item flexacenter" href="https://bbs.gter.net/thread-2345065-1-1.html" target="_blank">加群</a><a class="tab-item flexacenter" href="https://offer.gter.net" target="_blank">Offer榜</a></div>
<a class="head-more-post flexcenter" href="/publish" target="" onclick="skipLoginUrl(event)">
<div class="head-more-post-icon flexcenter"><img class="head-more-post-img" src="https://framework.x-php.com/gter/forum/img/addyellow.svg?v=euX4m9PrbyvP" /></div>发布帖子
</a>
<img class="cross-icon" onclick="crossHeadPop()" src="https://framework.x-php.com/gter/forum/img/cross.svg?v=euX4m9PrbyvP">
</div>
</div>
</div>
<div class="valueA" style="display: none;">https://framework.x-php.com/gter/forum/</div>
<sign-in-box></sign-in-box>
<div class="container" id="appIndex">
<div class="header-content-box flexflex">
<div class="header-content-left">
<div class="adv-list flexacenter">
<div class="headerbanner adv-item"><a href="https://u.gter.net/Prvu9GvzXWWC" data-x-event="bbsAdv" data-x-event-id="778" target="_blank"><img src="https://o.x-php.com/bbs/common/cf/155629cw8ccbw6ipiycoio.gif" height="60" width="468" border="0"></a></div>
<div class="subnavbanner adv-item"><a href="/details/W0KqbeO5SHjG" target="_blank"><img src="https://o.x-php.com/Zvt57TuJSUvkyhw-xG7Y2l-c_JkvfHbqqsgFptxhXa6RWi26P-BuTQcSQLLBs9kb8LQ0NDI5" height="60" width="468" border="0"></a></div>
</div>
<!-- 话题和精选 -->
<div class="topic-and-selectives flexflex">
<div class="topic-box">
<div class="head-top flexcenter">
<img class="icon" src="https://framework.x-php.com/gter/forum/img/well-white.svg?v=euX4m9PrbyvP" />
<div class="text">话题</div>
</div>
<div class="topic-head flexflex">
<a class="title one-line-display vuehide" :href="'/details/' + ongoingbj.uniqid" target="_blank"></a>
<a class="title one-line-display" :href="'/details/' + ongoingbj.uniqid" target="_blank" v-cloak>{{ 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 vuehide"></div>
<div class="number" v-cloak>{{ 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="'/details/' + item.uniqid" target="_blank">
<img class="img" src="https://framework.x-php.com/gter/forum/img/well-yellow.svg?v=euX4m9PrbyvP" />
<div class="text one-line-display flex1" v-html="item.title"></div>
</a>
</div>
</div>
<div class="selectives-box">
<div class="head-top flexcenter">
<img class="icon" src="https://framework.x-php.com/gter/forum/img/handpick-icon.png?v=euX4m9PrbyvP" />
<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="https://offer.gter.net/duckProphet" title="26Fall-offer鸭先知" target="_blank">
<img class="adv-icon" src="https://o.x-php.com/Zvt57TuJSUvkyhw-xG7Y2l-c95MocHbqqsgFptxhT66SWgrlI64uMxcfWaHf9Z0F9N5dCHzZ5RLrizQ0Mjk~" alt="26Fall-offer鸭先知" />
</a>
<div class="list">
<div class="item flexacenter">
<div class="icon dot-gray"></div>
<a class="one-line-display text flex1" href="https://offer.gter.net/details/vnzyj8vjWzDK" target="_blank">香港科技大学 AI 太贵了</a>
</div>
<div class="item flexacenter">
<div class="icon dot-gray"></div>
<a class="one-line-display text flex1" href="https://offer.gter.net/details/juPvfSzvbOvv" target="_blank">鲁汶大学 有点离谱不想去</a>
</div>
<div class="item flexacenter">
<div class="icon dot-gray"></div>
<a class="one-line-display text flex1" href="https://offer.gter.net/details/5GLeOzuHjLnj" target="_blank">26Fall Offer 10 SSE Econ</a>
</div>
<div class="item flexacenter">
<div class="icon dot-gray"></div>
<a class="one-line-display text flex1" href="https://offer.gter.net/details/SzfGzTzTPWW4" target="_blank">香港理工大学 当保底了</a>
</div>
</div>
<div class="list list2">
<div class="item flexacenter">
<div class="icon dot-gray"></div>
<a class="one-line-display text flex1" href="https://offer.gter.net/details/KXCGLrGvbia4" target="_blank">26Fall-埃因霍温理工大学</a>
</div>
<div class="item flexacenter">
<div class="icon dot-gray"></div>
<a class="one-line-display text flex1" href="https://offer.gter.net/details/S18G9aHnDnPn" target="_blank">港城莞 cs MSc 没有吸引力</a>
</div>
<div class="item flexacenter">
<div class="icon dot-gray"></div>
<a class="one-line-display text flex1" href="https://interviewexperience.gter.net/details/SX4KfeGDeXCi" target="_blank">面经圣三一性别研究Mphil</a>
</div>
<div class="item flexacenter">
<div class="icon dot-gray"></div>
<a class="one-line-display text flex1" href="https://offer.gter.net/details/jey48WGfGfam" target="_blank">巴黎政治学院 传媒被拒</a>
</div>
</div>
</div>
</div>
<div class="header-content-right">
<div class="post-entrance">
<a class="entrance-top flexacenter" href="/publish" target="_blank" @click="handleCheckAttest"><img class="icon" src="./img/forum.png" />我要发帖</a>
<div class="entrance-bottom flexacenter">
<a class="item flexcenter" href="https://offer.gter.net/post" @click="handleCheckAttest" target="_blank">
<div class="icon-box">
<img class="icon" src="https://framework.x-php.com/gter/forum/img/offer-icon-V2.svg?v=euX4m9PrbyvP" />
</div>
<span class="text">报Offer</span>
</a>
<a class="item flexcenter" href="https://offer.gter.net/post/summary" @click="handleCheckAttest" target="_blank">
<div class="icon-box">
<img class="icon" src="https://framework.x-php.com/gter/forum/img/summary-icon-V2.svg?v=euX4m9PrbyvP" />
</div>
<span class="text">写总结</span>
</a>
<a class="item flexcenter" href="https://interviewexperience.gter.net/publish" @click="handleCheckAttest" target="_blank">
<div class="icon-box">
<img class="icon" src="https://framework.x-php.com/gter/forum/img/mj-icon-V2.svg?v=euX4m9PrbyvP" />
</div>
<span class="text">写面经</span>
</a>
<a class="item flexcenter" href="https://vote.gter.net/publish" @click="handleCheckAttest" target="_blank">
<div class="icon-box">
<img class="icon" src="https://framework.x-php.com/gter/forum/img/vote-icon-V2.svg?v=euX4m9PrbyvP" />
</div>
<span class="text">发起投票</span>
</a>
</div>
</div>
<div class="custom_2 adv" ref="custom_2AdvRef"><a href="https://u.gter.net/8i8KfWGvTKXu" data-x-event="bbsAdv" data-x-event-id="777" target="_blank"><img src="https://o.x-php.com/bbs/common/cf/152158dpf5eh7pqpaealiq.gif" border="0"></a></div>
<div class="group-box">
<div class="group flexflex">
<div class="group-item flexcenter">
<div class="title">26FALL</div>
<div class="subtitle">申请群</div>
<div class="QRcode-box flexcenter">
<img class="QRcode" src="https://o.x-php.com/Zvt57TuJSUvkyhw-xG7Y2l-c-5kpcnzqqsgFptxhcq_cQnrlJKN1WgxCBq_D-81qNDQyOQ~~" />
<div class="text">微信扫码</div>
</div>
</div>
<div class="group-item flexcenter">
<div class="title">申请求助</div>
<div class="subtitle">寄托院校君</div>
<div class="QRcode-box flexcenter">
<img class="QRcode" src="https://u.gter.net/assistantwxqrcode.png" />
<div class="text">微信扫码</div>
</div>
</div>
<div class="group-item flexcenter">
<div class="title">香港租房</div>
<div class="subtitle">交流群</div>
<div class="QRcode-box flexcenter">
<img class="QRcode" src="https://o.x-php.com/Zvt57TuJSUvkyhw-xG7Y2l-c-5kpcnzqqsgFptxhcq_cQnrlJKN1WgxCBq_D-81qNDQyOQ~~" />
<div class="text">微信扫码</div>
</div>
</div>
<div class="group-item flexcenter">
<div class="title">香港租房顾问</div>
<div class="subtitle">寄托方同学</div>
<div class="QRcode-box flexcenter">
<img class="QRcode" src="https://o.x-php.com/Zvt57TuJSUvkyhw-xG7Y2l-d_JkpcHnqqsgFptxhcq_cQnrlcaF2WQQQBq_D-81qNDQyOQ~~" />
<div class="text">微信扫码</div>
</div>
</div>
</div>
</div>
<div class="offer-box" :class="{'big': !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-for="(item, index) in offerlist" :key="index">
<div class="avatar" :style="{backgroundImage: `url(${item.user['avatar']})`}"></div>
<div class="">
<div class="condition one-line-display" v-cloak style="height: 17px;">{{ item["date"] }} {{ item['type_label'] }}</div>
<div class="titletitle one-line-display" v-cloak style="height: 20px;">{{ 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">
<div class="admission-item flexcenter">
<a class="admission-img" href="https://u.gter.net/ad/1054?x=gter" target="_blank">
<img src="https://o.x-php.com/Zvt57TuJSUvkyhw-xGnSskf57MJoMT_Fsq9DwMI1EuyMED63bKEtAmkLfvWH4sxjtaM9biierFaq-w1X0BACzthmrBDmRe4Za8WJtUoB4WZMfMOnffaaFYU6LcOVh-3zu1apgN799koldhb0KGuHSNK1gJ0jRkHZYxm738yXgyT4Vl89GL1RT3rg1FpDYM8rZRNGWplgpDF9NDQyOQ~~" alt="中大政务" />
</a>
</div>
<div class="admission-item flexcenter">
<a class="admission-img" href="https://u.gter.net/ad/1075?x=gter" target="_blank">
<img src="https://o.x-php.com/Zvt57TuJSUvkyhw-xGnSskf57MJoMT_Fsq9DwMI1EuyMED63bKEtAmkLfvWH4sxjtaM9biierFaq-w1X0BACzthmrBD6ROsZI8qJtUoB4WZMfMOnffaaFYU6LcOVh-3zu1apgN799koiZEDCIHCCWNK1gJ0jRkHZYxm738yXgyT4Vl89GL1RT3rg1FpDYM8kNhZMU5hgpDF9NDQyOQ~~" alt="教大个人理财" />
</a>
</div>
<div class="admission-item flexcenter">
<a class="admission-img" href="https://u.gter.net/ad/964?x=gter" target="_blank">
<img src="https://o.x-php.com/Zvt57TuJSUvkyhw-xGnSskf57MJoMT_Fsq9DwMI1EuyMED63bKEtAmkLfvWH4sxjtaM9biierFaq-w1X0BACzthmrBDmQusvPM6JtUoB4WZMfMOnffaaFYU6LcOVh-3zu1apgN799koiZlTjaFqedZu1gJ0jRkHZYxm738yXgyT4Vl89GL1RT3rg1FpDYM95MxVKUMBgpDF9NDQyOQ~~" alt="香港中文大学经济学" />
</a>
</div>
<div class="admission-item flexcenter">
<a class="admission-img" href="https://u.gter.net/ad/1070?x=gter" target="_blank">
<img src="https://o.x-php.com/Zvt57TuJSUvkyhw-xGnSskf57MJoMT_Fsq9DwMI1EuyMED63bKEtAmkLfvWH4sxjtaM9biierFaq-w1X0BACzthmrBD6Rewvf8KJtUoB4WZMfMOnffaaFYU6LcOVh-3zu1apgN799koldlTJLVmFEJe1gJ0jRkHZYxm738yXgyT4Vl89GL1RT3rg1FpDYM8sZhAbV8NgpDF9NDQyOQ~~" alt="理工会计金融" />
</a>
</div>
<div class="admission-item flexcenter">
<a class="admission-img" href="https://u.gter.net/ad/1072?x=gter" target="_blank">
<img src="https://o.x-php.com/Zvt57TuJSUvkyhw-xGnSskf57MJoMT_Fsq9DwMI1EuyMED63bKEtAmkLfvWH4sxjtaM9biierFaq-w1X0BACzthmrBDmXewvON2JtUoB4WZMfMOnffaaFYU6LcOVh-3zu1apgN799kolcBbJd3CFdr61gJ0jRkHZYxm738yXgyT4Vl89GL1RT3rg1FpDYM9-NkNKUJRgpDF9NDQyOQ~~" alt="港大工程学院" />
</a>
</div>
<div class="admission-item flexcenter">
<a class="admission-img" href="https://u.gter.net/ad/1071?x=gter" target="_blank">
<img src="https://o.x-php.com/Zvt57TuJSUvkyhw-xGnSskf57MJoMT_Fsq9DwMI1EuyMED63bKEtAmkLfvWH4sxjtaM9biierFaq-w1X0BACzthmrBD6Rewvb8mJtUoB4WZMfMOnffaaFYU6LcOVh-3zu1apgN799kolcRbCb3aCEJO1gJ0jRkHZYxm738yXgyT4Vl89GL1RT3rg1FpDYM8lZhUcApNgpDF9NDQyOQ~~" alt="港教大心理学" />
</a>
</div>
<div class="admission-item flexcenter">
<a class="admission-img" href="https://u.gter.net/ad/1009?x=gter" target="_blank">
<img src="https://o.x-php.com/Zvt57TuJSUvkyhw-xGnSskf57MJoMT_Fsq9DwMI1EuyMED63bKEtAmkLfvWH4sxjtaM9biierFaq-w1X0BACzthmrBD6ROwZPMmJtUoB4WZMfMOnffaaFYU6LcOVh-3zu1apgN799kolcUHjb3eCEL61gJ0jRkHZYxm738yXgyT4Vl89GL1RT3rg1FpDYM9-MxZLVZhgpDF9NDQyOQ~~" alt="港大教育" />
</a>
</div>
<div class="admission-item flexcenter">
<a class="admission-img" href="https://u.gter.net/ad/981?x=gter" target="_blank">
<img src="https://o.x-php.com/Zvt57TuJSUvkyhw-xGnSskf57MJoMT_Fsq9DwMI1EuyMED63bKEtAmkLfvWH4sxjtaM9biierFaq-w1X0BACzthmrBD6Rewvf92JtUoB4WZMfMOnffaaFYU6LcOVh-3zu1apgN799koiZhaUaGKRT4-1gJ0jRkHZYxm738yXgyT4Vl89GL1RT3rg1FpDYM8qNRIbBsVgpDF9NDQyOQ~~" alt="理工商业管理" />
</a>
</div>
</div>
</div>
<div class="pop-list">
<div class="list">
<div class="item" v-for="item in popList" @click="openPop(item.type)">
<div class="top">{{ item.title }}</div>
<div class="bottom">{{ item.subtitle }}</div>
</div>
</div>
</div>
<div class="matter flexflex" ref="matterRef">
<div class="matter-content flex1">
<!-- 论坛板块列表 -->
<div class="forum-sections-list">
<img class="img" src="https://framework.x-php.com/gter/forum/img/sections-left.svg?v=euX4m9PrbyvP" />
<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> -->
<template v-for="(item,index) in list" :key="index">
<item-offer v-if=" item.type == 'offer'" :itemdata="item"></item-offer>
<item-summary v-else-if="item.type == 'offer_summary'" :itemdata="item"></item-summary>
<item-vote v-else-if="item.type == 'vote'" :itemdata="item"></item-vote>
<item-mj v-else-if="item.type == 'interviewexperience'" :itemdata="item"></item-mj>
<item-tenement v-else-if="item.type == 'tenement'" :itemdata="item"></item-tenement>
<item-project v-else-if="item.type == 'programs' || tabValue == 'xg'" :itemdata="item"></item-project>
<item-forum v-else :itemdata="item"></item-forum>
</template>
<load-box :loading="loading"></load-box>
</div>
<div class="sidebar" ref="sidebarRef" :style="{'top': sidebarHeight + 'px'}">
<div class="custom_1 ad-item"><a href="https://u.gter.net/by1aWW1iKSrf" data-x-event="bbsAdv" data-x-event-id="779" target="_blank"><img src="https://o.x-php.com/bbs/common/cf/1600395jzy35vvv75fy6oo.jpg" height="220" width="291" border="0"></a></div> <!-- 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="https://framework.x-php.com/gter/forum/img/offer-index-icon.png?v=euX4m9PrbyvP" />
<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="https://framework.x-php.com/gter/forum/img/right-arrow-black.svg?v=euX4m9PrbyvP" />
</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 vuehide"></div>
<div v-cloak 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" @click="handleCheckAttest" style="position: relative" href="https://offer.gter.net/post" target="_blank" v-cloak>
<img class="add-icon" src="https://framework.x-php.com/gter/forum/img/add-btn-black.svg?v=euX4m9PrbyvP" />
<div>报Offer</div>
<div v-if="realname == 0 && userInfo.uin > 0" class="open-attest-btn" @click.prevent="openAttest"></div>
</a>
</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="https://framework.x-php.com/gter/forum/img/vote-index-icon.png?v=euX4m9PrbyvP" />
<div class="title">投票</div>
</div>
<a class="more flexacenter" target="_blank" href="https://vote.gter.net">
<span>more</span>
<img class="more-icon" src="https://framework.x-php.com/gter/forum/img/right-arrow-black.svg?v=euX4m9PrbyvP" />
</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" @click="handleCheckAttest" style="position: relative" v-cloak target="_blank" href="https://vote.gter.net/publish">
<img class="add-icon" src="https://framework.x-php.com/gter/forum/img/add-btn-black.svg?v=euX4m9PrbyvP" />
<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="https://framework.x-php.com/gter/forum/img/mj-index-icon.png?v=euX4m9PrbyvP" />
<div class="title">面经</div>
</div>
<a class="more flexacenter" href="https://interviewexperience.gter.net/" target="_blank">
<span>more</span>
<img class="more-icon" src="https://framework.x-php.com/gter/forum/img/right-arrow-black.svg?v=euX4m9PrbyvP" />
</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>
</div>
</a>
<a class="add-btn flexcenter" @click="handleCheckAttest" style="position: relative" href="https://interviewexperience.gter.net/publish" target="_blank" v-cloak>
<img class="add-icon" src="https://framework.x-php.com/gter/forum/img/add-btn-black.svg?v=euX4m9PrbyvP" />
<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>
<huddle-box ref="huddleBoxRef"></huddle-box>
<helper-pop ref="helperPopRef"></helper-pop>
<group-pop ref="groupPopRef"></group-pop>
<qr-code-pop ref="qrCodePopRef"></qr-code-pop>
</div>
<script src="https://framework.x-php.com/gter/forum/js/vue.global.js?v=euX4m9PrbyvP"></script>
<script src="https://framework.x-php.com/gter/forum/js/axios.min.js?v=euX4m9PrbyvP"></script>
<script src="https://framework.x-php.com/gter/forum/js/public.js?v=euX4m9PrbyvP"></script>
<script src="https://framework.x-php.com/gter/forum/js/scrolltext.js?v=euX4m9PrbyvP"></script>
<script type="module" src="/js/index.js"></script>
<script type="module" src="https://framework.x-php.com/gter/forum/../image/gter/commonCom/sign-in/sign-in.js?v=euX4m9PrbyvP"></script>
<script src="https://app.gter.net/bottom?tpl=footer,popupnotification"></script>
<script>
if (location.href.indexOf('details') != -1) {
const postList = document.querySelector('.head-top .post-list')
postList.innerHTML = `<a href="/publish" target="_blank" style="margin-right: 10px"> <img class="post-item" src="https://framework.x-php.com/gter/forum/img/post-thread.png?v=euX4m9PrbyvP" /> </a> <a href="https://offer.gter.net/post" target="_blank" style="margin-right: 10px"> <img class="post-item" src="https://framework.x-php.com/gter/forum/img/post-offer.png?v=euX4m9PrbyvP" /> </a> <a href="https://offer.gter.net/post/summary" target="_blank" style="margin-right: 10px"> <img class="post-item" src="https://framework.x-php.com/gter/forum/img/post-summary.png?v=euX4m9PrbyvP" /> </a> <a href="https://interviewexperience.gter.net/publish" target="_blank" style="margin-right: 10px"> <img class="post-item" src="https://framework.x-php.com/gter/forum/img/post-mj.png?v=euX4m9PrbyvP" /> </a> <a href="https://vote.gter.net/publish" target="_blank"> <img class="post-item" src="https://framework.x-php.com/gter/forum/img/post-vote.png?v=euX4m9PrbyvP" /> </a>`
postList.style.display = 'flex'
} else if (location.href.indexOf('search') != -1) {
const box = document.querySelector(".head-top")
box.querySelector(".input-box").style.display = "none"
box.querySelector(".sign-in").style.display = "none"
} else if (location.href.indexOf("publish") != -1) {
const box = document.querySelector(".head-top")
if (box) document.body.removeChild(box)
} else {
const signIn = document.querySelector('.head-top .sign-in')
console.log('signIn', signIn);
signIn.innerHTML = `<div class="sign-in-no-box" onclick="headSignIn()">
<img class="sign-in-bj" src="https://framework.x-php.com/gter/forum/img/sign-in-bj.svg?v=euX4m9PrbyvP" /><img class="coin-bj" src="https://framework.x-php.com/gter/forum/img/coin-bj.svg?v=euX4m9PrbyvP" />
<img class="coin-icon" src="https://framework.x-php.com/gter/forum/img/coin-icon.png?v=euX4m9PrbyvP" /><span class="text flex1">签到领寄托币</span>
<div class="sign-go flexcenter">
<img class="sign-go-bj" src="https://framework.x-php.com/gter/forum/img/sign-go.svg?v=euX4m9PrbyvP" /> GO
</div>
<img class="petal1" src="https://framework.x-php.com/gter/forum/img/petal1.png?v=euX4m9PrbyvP" />
<img class="petal2" src="https://framework.x-php.com/gter/forum/img/petal2.png?v=euX4m9PrbyvP" />
<img class="petal3" src="https://framework.x-php.com/gter/forum/img/petal3.png?v=euX4m9PrbyvP" />
</div>
<div class="sign-in-already-box">
<img class="sign-icon" src="https://framework.x-php.com/gter/forum/img/sign-icon.png?v=euX4m9PrbyvP" />
<span>已签到,明天再来</span>
</div>`
signIn.style.display = 'flex'
let userInfoWinTimerCount = 0;
const userInfoWinTimer = setInterval(() => {
if (location.host == "127.0.0.1:5501") return;
if (todaysignedState) {
clearInterval(userInfoWinTimer);
if (todaysigned == 1) {
signIn.classList.add('sign-in-already')
signIn.classList.remove("sign-in-no");
}
}
userInfoWinTimerCount++;
if (userInfoWinTimerCount >= 3000) clearInterval(userInfoWinTimer);
}, 50);
}
function headSignIn() {
SignInComponent.initComponent();
}
const searchInput = document.querySelector('.head-top .input')
// 绑定 blur 和 focus 事件
if (searchInput) {
searchInput.addEventListener('blur', function () {
setTimeout(() => {
const historyBox = document.querySelector('.head-top .search-box-history')
if (historyBox) historyBox.style.display = 'none'
}, 300);
const inputBox = document.querySelector('.head-top .input-box')
if (inputBox) inputBox.classList.remove('pitch')
startCarousel();
})
searchInput.addEventListener('focus', () => {
const historyBox = document.querySelector('.head-top .search-box-history')
const historyItem = historyBox.querySelectorAll(".search-box-history-item")
if (historyBox && historyItem.length > 0) historyBox.style.display = 'block'
const inputBox = document.querySelector('.head-top .input-box')
if (inputBox) inputBox.classList.add('pitch')
if (carouselTimer) clearInterval(carouselTimer);
})
// 绑定回车事件
searchInput.addEventListener('keydown', (e) => {
if (e.key == 'Enter') searchEvent()
})
searchInput.addEventListener('input', (e) => {
const value = e.target.value || ''
const placeholder = document.querySelector(".head-top .placeholder")
if (value) placeholder.style.display = 'none'
else placeholder.style.display = 'block'
})
}
let historySearchList = []
// 获取历史搜索
const getHistorySearch = () => {
const data = JSON.parse(localStorage.getItem("history-search")) || [];
historySearchList = data;
let itemAll = ``
data.forEach((item, index) => itemAll += `<div class="search-box-history-item one-line-display" onclick="searchEvent('${item}')">${item}</div>`) // 绑定事件 searchEvent 点击搜索)
const historyList = document.querySelector('.search-box-history-list')
historyList.innerHTML = itemAll
};
if (location.href.indexOf("/publish") == -1 && location.href.indexOf("/search") == -1) getHistorySearch();
const searchEvent = (value) => {
if (window.innerWidth <= 480) {
redirectToExternalWebsite("/search");
return
}
const kw = value || searchInput.value || hotSearchWords[currentIndex]?.keyword || "";;
if (!kw) return;
historySearchList.unshift(kw);
historySearchList = [...new Set(historySearchList)];
if (historySearchList.length > 10) historySearchList = historySearchList.splice(0, 10);
localStorage.setItem("history-search", JSON.stringify(historySearchList));
redirectToExternalWebsite("/search/" + kw);
searchInput.value = ""
}
let hotSearchWords = [];
const renderingPlaceholder = () => {
let itemAll = ``
hotSearchWords.forEach(item => {
itemAll += `<div class="item one-line-display" >大家都在搜:${item.keyword}</div>`
})
const sliceHotSearchWords = hotSearchWords.slice(0, 2)
sliceHotSearchWords.forEach(item => {
itemAll += `<div class="item one-line-display" >大家都在搜:${item.keyword}</div>`
})
const placeholderBox = document.querySelector('.placeholder .placeholder-box')
placeholderBox.innerHTML = itemAll
}
const getWConfigg = () => {
ajaxGet("/v2/api/config/website").then((res) => {
if (res.code == 200) {
let data = res["data"] || {};
hotSearchWords = data.hotSearchWords || [];
renderingPlaceholder()
data.time = new Date().toISOString();
localStorage.setItem("wConfig", JSON.stringify(data));
}
});
};
const checkWConfig = () => {
const wConfig = JSON.parse(localStorage.getItem("wConfig")) || {};
if (wConfig.time) {
const time = new Date(wConfig.time);
const now = new Date();
if (now - time > 24 * 60 * 60 * 1000) getWConfigg();
else {
hotSearchWords = wConfig.hotSearchWords || [];
renderingPlaceholder()
}
} else getWConfigg();
};
checkWConfig()
const renderCurrentIndex = () => {
const placeholderBox = document.querySelector('.placeholder .placeholder-box')
if (placeholderBox) placeholderBox.style.transform = `translateY(${-currentIndex * 36}px)`
}
let currentIndex = 0; // 当前显示的关键词索引
let carouselTimer = null; // 轮播定时器
// 启动轮播函数
const startCarousel = () => {
// 清除已有的定时器
if (carouselTimer) clearInterval(carouselTimer);
// 设置新的定时器,每秒滚动一次
carouselTimer = setInterval(() => {
if (hotSearchWords.length > 1) {
if (currentIndex >= hotSearchWords.length - 1) {
currentIndex++;
setTimeout(() => {
currentIndex = 0;
}, 2300);
} else currentIndex++;
}
renderCurrentIndex()
}, 2300);
};
startCarousel();
const openHeadPop = () => {
if (window["userInfoWin"]?.uin > 0 || window["userInfoWin"]?.uid > 0) {
// 登录
const headMoreLeft = document.querySelector(".head-pop .head-more-left")
headMoreLeft.innerHTML = `<img class="head-more-userinfo-avatar" src="${window["userInfoWin"]?.avatar}" alt=""><div class="head-more-userinfo-username">${window["userInfoWin"]?.nickname}</div>`
} else {
const avatar = document.querySelector(".head-pop .head-more-userinfo-avatar")
avatar.src = "/img/defaultAvatar.png"
const headMoreRight = document.querySelector(".head-pop .head-more-right")
headMoreRight.style.display = "block"
}
document.querySelector(".head-pop").classList.add("head-pop-show");
}
const skipLoginUrl = (e) => {
if (window["userInfoWin"]?.uin > 0 || window["userInfoWin"]?.uid > 0) { }
else {
e.preventDefault();
go_ajax_Login();
}
}
const crossHeadPop = () => document.querySelector(".head-pop").classList.remove("head-pop-show");
</script>
</body>
</html>