feat: 新增抱团组件和申请助手弹窗组件
新增huddle-box和helper-pop组件,包含相关图片资源和样式调整 修复item-mj组件中itemBottom导入错误 优化移动端样式适配 更新sectionV2页面引入新组件 补充公共样式和动画效果
2
.vscode/settings.json
vendored
@@ -1,3 +1,3 @@
|
||||
{
|
||||
"liveServer.settings.port": 5501
|
||||
"liveServer.settings.port": 5502
|
||||
}
|
||||
489
best.html
Normal file
@@ -0,0 +1,489 @@
|
||||
<!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>精华主题 - 寄托天下 -- 寄托天下</title>
|
||||
<link rel="stylesheet" href="https://framework.x-php.com/gter/forum/css/public.css?v=jm5aurbe8jqn" />
|
||||
<link rel="stylesheet" href="/css/search-tag.css?v=jm5aurbe8jqn" />
|
||||
|
||||
<meta name="description" content="寄托天下留学论坛上查看精华主题">
|
||||
<meta name="keywords" content="精华主题, 寄托天下, 留学论坛">
|
||||
<meta name="author" content="">
|
||||
<!-- Open Graph / Facebook -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:title" content="精华主题 - 寄托天下">
|
||||
<meta property="og:description" content="寄托天下留学论坛上查看精华主题">
|
||||
<meta property="og:image" content="">
|
||||
<!-- Twitter -->
|
||||
<meta property="twitter:card" content="summary_large_image">
|
||||
<meta property="twitter:title" content="精华主题 - 寄托天下">
|
||||
<meta property="twitter:description" content="寄托天下留学论坛上查看精华主题">
|
||||
<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=jm5aurbe8jqn" />
|
||||
<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=jm5aurbe8jqn" />
|
||||
</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=jm5aurbe8jqn" /></div>发布帖子
|
||||
</a>
|
||||
<img class="cross-icon" onclick="crossHeadPop()" src="https://framework.x-php.com/gter/forum/img/cross.svg?v=jm5aurbe8jqn">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="valueA" style="display: none;">https://framework.x-php.com/gter/forum/</div>
|
||||
|
||||
|
||||
|
||||
<div class="container" id="search-tag">
|
||||
<div class="templateValue" ref="tagValue"></div>
|
||||
<div class="templateValue" ref="typeValue"></div>
|
||||
|
||||
<!-- <div class="set-hint-box flexacenter">
|
||||
<img class="set-hint-icon" src="./img/essence-icon.png">
|
||||
<div class="set-hint-text">被小编设置为"精华"的帖子</div>
|
||||
</div> -->
|
||||
|
||||
<div class="label-title flexacenter">
|
||||
<img class="icon" src="https://framework.x-php.com/gter/forum/img/essence-head-icon.png?v=jm5aurbe8jqn" />
|
||||
<div class="text">精华帖</div>
|
||||
</div>
|
||||
|
||||
<div class="classify flexacenter" v-cloak>
|
||||
<div class="item" :class="{'pitch': key == tabValue}" v-for="(item, key) in tabList" :key="key" @click="cutTab(key)">{{ item }}</div>
|
||||
</div>
|
||||
|
||||
<div id="pre-loader">
|
||||
<div class="three-bounce" p-id="11">
|
||||
<div class="one" p-id="12"></div>
|
||||
<div class="two" p-id="13"></div>
|
||||
<div class="three" p-id="14"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="matter flexflex" ref="matterRef" v-cloak>
|
||||
<div class="matter-content flex1" ref="contentRef" :style="{'top': matterHeight + 'px'}">
|
||||
<div class="quantity flexacenter" v-cloak>
|
||||
{{ tabList[tabValue] }}
|
||||
<div class="line"></div>
|
||||
共
|
||||
<div class="num">{{ count }}</div>
|
||||
条
|
||||
|
||||
<div class="sort-area">
|
||||
<div class="sort-head flexacenter" @click="toggleSort()">
|
||||
<div class="text">{{ currentSortText }}</div>
|
||||
<img class="icon " :class="{'rotate': showSort}" src="https://app.gter.net/image/miniApp/offer/triangle-black.svg" />
|
||||
</div>
|
||||
|
||||
<div class="sort-mask" @click="hideSort()" v-if="showSort"></div>
|
||||
<div class="sort-box" v-if="showSort">
|
||||
<div class="item" :class="{'pitch': orderBy == '_score'}" @click="selectSort('_score')">按综合排序</div>
|
||||
<div class="item" :class="{'pitch': orderBy == 'id'}" @click="selectSort('id')">按最新发布排序</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="list-box" v-if="list.length != 0">
|
||||
<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-forum v-else :itemdata="item"></item-forum>
|
||||
</template>
|
||||
</div>
|
||||
|
||||
<load-box :loading="loading"></load-box>
|
||||
|
||||
<div v-if="list.length == 0 && page == null" class="empty flexcenter">
|
||||
<img class="empty-icon" src="https://framework.x-php.com/gter/forum/img/empty-icon.png?v=jm5aurbe8jqn" />
|
||||
<div class="empty-text">- 暂无内容 -</div>
|
||||
</div>
|
||||
|
||||
<div class="pages-box flexcenter" v-if="pagination.length != 0">
|
||||
<img v-if="page == 1" class="arrows" src="https://framework.x-php.com/gter/forum/img/arrows-gray-simple.svg?v=jm5aurbe8jqn" alt="">
|
||||
<img @click="prevPage" v-else class="arrows rotate180" src="https://framework.x-php.com/gter/forum/img/arrows-gray-deep.svg?v=jm5aurbe8jqn" alt="">
|
||||
|
||||
<div class="item" :class="{'pitch': item == page }" v-for="(item, index) in pagination" @click="cutPage(item)">{{ item }}</div>
|
||||
|
||||
<img v-if="page == maxPage" class="arrows rotate180" src="https://framework.x-php.com/gter/forum/img/arrows-gray-simple.svg?v=jm5aurbe8jqn" alt="">
|
||||
<img @click="nextPage" v-else v-else class="arrows" src="https://framework.x-php.com/gter/forum/img/arrows-gray-deep.svg?v=jm5aurbe8jqn" alt="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="sidebar-box" ref="sidebarRef" :style="{'top': sidebarHeight + 'px'}" style="padding-top: 40px;">
|
||||
<div class="recommend-and-essence flexacenter">
|
||||
<a class="item flexcenter" target="_blank" href="/recommend">
|
||||
<img class="icon" src="/img/recommend-head-icon.png" />
|
||||
<div class="text">编辑推荐</div>
|
||||
</a>
|
||||
<a class="item flexcenter" target="_blank" href="/best">
|
||||
<img class="icon" src="/img/essence-head-icon.png" />
|
||||
<div class="text">精华帖</div>
|
||||
</a>
|
||||
</div>
|
||||
<hot-tag></hot-tag>
|
||||
<hot-search></hot-search>
|
||||
<slideshow-box></slideshow-box>
|
||||
<latest-list></latest-list>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script src="https://framework.x-php.com/gter/forum/js/vue.global.js?v=jm5aurbe8jqn"></script>
|
||||
<script src="https://framework.x-php.com/gter/forum/js/axios.min.js?v=jm5aurbe8jqn"></script>
|
||||
<script src="https://framework.x-php.com/gter/forum/js/public.js?v=jm5aurbe8jqn"></script>
|
||||
<!-- <script src="https://f.gter.net/js/public.js"></script> -->
|
||||
|
||||
<!-- <script type="module" src="https://framework.x-php.com/gter/forum/js/search-tag.js?v=jm5aurbe8jqn"></script> -->
|
||||
<script type="module" src="https://framework.x-php.com/gter/forum/js/best.js?v=jm5aurbe8jqn"></script>
|
||||
<!-- <script type="module" src="https://f.gter.net/js/best.js"></script> -->
|
||||
<script type="module" src="https://framework.x-php.com/gter/forum/../image/gter/commonCom/sign-in/sign-in.js?v=jm5aurbe8jqn"></script>
|
||||
|
||||
|
||||
<script src="https://app.gter.net/bottom?tpl=footer,popupnotification"></script>
|
||||
|
||||
<script>
|
||||
console.log(location.href.indexOf('details') != -1);
|
||||
|
||||
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=jm5aurbe8jqn" /> </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=jm5aurbe8jqn" /> </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=jm5aurbe8jqn" /> </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=jm5aurbe8jqn" /> </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=jm5aurbe8jqn" /> </a>`
|
||||
console.log(postList);
|
||||
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')
|
||||
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=jm5aurbe8jqn" /><img class="coin-bj" src="https://framework.x-php.com/gter/forum/img/coin-bj.svg?v=jm5aurbe8jqn" />
|
||||
<img class="coin-icon" src="https://framework.x-php.com/gter/forum/img/coin-icon.png?v=jm5aurbe8jqn" /><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=jm5aurbe8jqn" /> GO
|
||||
</div>
|
||||
<img class="petal1" src="https://framework.x-php.com/gter/forum/img/petal1.png?v=jm5aurbe8jqn" />
|
||||
<img class="petal2" src="https://framework.x-php.com/gter/forum/img/petal2.png?v=jm5aurbe8jqn" />
|
||||
<img class="petal3" src="https://framework.x-php.com/gter/forum/img/petal3.png?v=jm5aurbe8jqn" />
|
||||
</div>
|
||||
<div class="sign-in-already-box">
|
||||
<img class="sign-icon" src="https://framework.x-php.com/gter/forum/img/sign-icon.png?v=jm5aurbe8jqn" />
|
||||
<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>
|
||||
30
component/helper-pop/helper-pop.js
Normal file
@@ -0,0 +1,30 @@
|
||||
// my-component.js
|
||||
// 引入全局 Vue 对象(因在 HTML 中通过 script 引入,Vue 已挂载到 window)
|
||||
const { defineComponent, ref, inject, defineAsyncComponent, onMounted } = Vue;
|
||||
|
||||
// 定义组件(直接使用模板)
|
||||
export const helperPop = defineComponent({
|
||||
name: "item-bottom",
|
||||
props: {},
|
||||
|
||||
setup(props) {
|
||||
let isMobile = ref(false);
|
||||
|
||||
let state = ref(false);
|
||||
|
||||
onMounted(() => {
|
||||
isMobile.value = window.isMobile;
|
||||
});
|
||||
|
||||
const open = () => (state.value = true);
|
||||
const closeGroup = () => (state.value = false);
|
||||
|
||||
const holdback = () => {};
|
||||
|
||||
return { state, isMobile, holdback, closeGroup, open };
|
||||
},
|
||||
|
||||
components: {},
|
||||
|
||||
template: `<div class="helper-pop flexflex" v-if="state" @click="closeGroup" @touchmove.prevent> <div class="helper-box flexacenter" @click.stop="holdback"> <img class="cross-grey" @click.stop="closeGroup" src="../../img/cross-grey.png" alt=""> <img class="helper-text helper-text1" src="../../img/apply-for-name.png" alt=""> <div class="helper-box-box flexflex"> <div class="helper-QRcode-box flexcenter"> <img class="left-top helper-QRcode-box-icon" src="../../img/yellow-border.svg" alt=""> <img class="left-bottom helper-QRcode-box-icon" src="../../img/yellow-border.svg" alt=""> <img class="right-top helper-QRcode-box-icon" src="../../img/yellow-border.svg" alt=""> <img class="right-bottom helper-QRcode-box-icon" src="../../img/yellow-border.svg" alt=""> <img class="helper-QRcode-img" src="https://u.gter.net/assistantwxqrcode.png" alt=""> </div> <span class="helper-box-text">长按识别二维码</span> </div> <img class="helper-bottom" src="../../img/helper-bottom-yellow.svg" alt=""> <img class="helper-bottom" src="../../img/helper-bottom-blue.svg" alt=""> </div></div>`,
|
||||
});
|
||||
18
component/helper-pop/helper-pop.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
<div class="helper-pop flexflex" v-if="state" @click="closeGroup" @touchmove.prevent>
|
||||
<div class="helper-box flexacenter" @click.stop="holdback">
|
||||
<img class="cross-grey" @click.stop="closeGroup" src="../../img/cross-grey.png" alt="">
|
||||
<img class="helper-text helper-text1" src="../../img/apply-for-name.png" alt="">
|
||||
<div class="helper-box-box flexflex">
|
||||
<div class="helper-QRcode-box flexcenter">
|
||||
<img class="left-top helper-QRcode-box-icon" src="../../img/yellow-border.svg" alt="">
|
||||
<img class="left-bottom helper-QRcode-box-icon" src="../../img/yellow-border.svg" alt="">
|
||||
<img class="right-top helper-QRcode-box-icon" src="../../img/yellow-border.svg" alt="">
|
||||
<img class="right-bottom helper-QRcode-box-icon" src="../../img/yellow-border.svg" alt="">
|
||||
<img class="helper-QRcode-img" src="https://u.gter.net/assistantwxqrcode.png" alt="">
|
||||
</div>
|
||||
<span class="helper-box-text">长按识别二维码</span>
|
||||
</div>
|
||||
<img class="helper-bottom" src="../../img/helper-bottom-yellow.svg" alt="">
|
||||
<img class="helper-bottom" src="../../img/helper-bottom-blue.svg" alt="">
|
||||
</div>
|
||||
</div>
|
||||
30
component/huddle-box/huddle-box.js
Normal file
@@ -0,0 +1,30 @@
|
||||
// my-component.js
|
||||
// 引入全局 Vue 对象(因在 HTML 中通过 script 引入,Vue 已挂载到 window)
|
||||
const { defineComponent, ref, inject, defineAsyncComponent, onMounted } = Vue;
|
||||
|
||||
// 定义组件(直接使用模板)
|
||||
export const huddleBox = defineComponent({
|
||||
name: "item-bottom",
|
||||
props: {},
|
||||
|
||||
setup(props) {
|
||||
let isMobile = ref(false);
|
||||
|
||||
let state = ref(false);
|
||||
|
||||
onMounted(() => {
|
||||
isMobile.value = window.isMobile;
|
||||
});
|
||||
|
||||
const open = () => (state.value = true);
|
||||
const closeGroup = () => (state.value = false);
|
||||
|
||||
const holdback = () => {};
|
||||
|
||||
return { state, isMobile, holdback, closeGroup, open };
|
||||
},
|
||||
|
||||
components: {},
|
||||
|
||||
template: `<div class="huddle-box" @click="closeGroup" v-if="state"> <div class="box flexflex" @click.stop="holdback"> <img class="bj" src="../../img/group-bj.svg" alt=""> <img class="bj-bottom" src="../../img/group-bottom.png" alt=""> <img class="top" src="../../img/group-top.png" alt=""> <img class="title" src="../../img/group-title.png" alt=""> <div class="text">抱团 / 信息共享 / 互助申学</div> <div class="case flexflex"> <div class="QRcode flexcenter"> <img class="img" src="https://o.x-php.com/Zvt57TuJSUvkyhw-xG7Y2l-c-5kpcnzqqsgFptxhcq_cQnrlJKN1WgxCBq_D-81qNDQyOQ~~" alt=""> </div> <div class="hint flexcenter"> <img class="img img-left" src="../../img/group-arrows.png" alt=""> <span class="hint-text">添加寄托葱哥进群</span> <img class="img" src="../../img/group-arrows.png" alt=""> </div> </div> </div> </div>`,
|
||||
});
|
||||
19
component/huddle-box/huddle-box.txt
Normal file
@@ -0,0 +1,19 @@
|
||||
<div class="huddle-box" @click="closeGroup" v-if="state">
|
||||
<div class="box flexflex" @click.stop="holdback">
|
||||
<img class="bj" src="../../img/group-bj.svg" alt="">
|
||||
<img class="bj-bottom" src="../../img/group-bottom.png" alt="">
|
||||
<img class="top" src="../../img/group-top.png" alt="">
|
||||
<img class="title" src="../../img/group-title.png" alt="">
|
||||
<div class="text">抱团 / 信息共享 / 互助申学</div>
|
||||
<div class="case flexflex">
|
||||
<div class="QRcode flexcenter">
|
||||
<img class="img" src="https://o.x-php.com/Zvt57TuJSUvkyhw-xG7Y2l-c-5kpcnzqqsgFptxhcq_cQnrlJKN1WgxCBq_D-81qNDQyOQ~~" alt="">
|
||||
</div>
|
||||
<div class="hint flexcenter">
|
||||
<img class="img img-left" src="../../img/group-arrows.png" alt="">
|
||||
<span class="hint-text">添加寄托葱哥进群</span>
|
||||
<img class="img" src="../../img/group-arrows.png" alt="">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -5,7 +5,7 @@ const { defineComponent, ref, defineAsyncComponent } = Vue;
|
||||
// const { itemBottom } = await import(withVer("../item-bottom/item-bottom.js"));
|
||||
// const { itemHead } = await import(withVer("../item-head/item-head.js"));
|
||||
const itemHead = defineAsyncComponent(() => import(withVer("../item-head/item-head.js")).then((m) => m.itemHead));
|
||||
const itemBottom = defineAsyncComponent(() => import(withVer("../item-bottom/item-bottom.js")).then((m) => m.itemHead));
|
||||
const itemBottom = defineAsyncComponent(() => import(withVer("../item-bottom/item-bottom.js")).then((m) => m.itemBottom));
|
||||
|
||||
// 定义组件(直接使用模板)
|
||||
export const itemMj = defineComponent({
|
||||
|
||||
340
css/public.css
@@ -57,7 +57,6 @@ body {
|
||||
border-radius: 10px;
|
||||
padding: 18px 20px 0;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
}
|
||||
.item-box .item-head {
|
||||
margin-bottom: 14px;
|
||||
@@ -2184,3 +2183,342 @@ td {
|
||||
padding: 0 5px;
|
||||
}
|
||||
}
|
||||
.huddle-box {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
background-color: rgba(0, 0, 0, 0.70588235);
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
justify-content: center;
|
||||
overflow: hidden;
|
||||
animation: slidebj 0.5s forwards;
|
||||
z-index: 10002;
|
||||
}
|
||||
.huddle-box .box {
|
||||
width: 100vw;
|
||||
height: 719px;
|
||||
border-radius: 20px 20px 0 0;
|
||||
box-shadow: 0 0 15px rgba(0, 0, 0, 0.10196078);
|
||||
animation: slideUp 0.5s forwards;
|
||||
background: linear-gradient(0.0796881deg, #c1a75a 0%, #15a3dc 100%);
|
||||
position: relative;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
padding-top: 32px;
|
||||
z-index: 1;
|
||||
}
|
||||
.huddle-box .box .code {
|
||||
width: 100vw;
|
||||
}
|
||||
.huddle-box .box .bj {
|
||||
width: 100vw;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
z-index: -1;
|
||||
}
|
||||
.huddle-box .box .bj-bottom {
|
||||
width: 126px;
|
||||
height: 134px;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
.huddle-box .box .top {
|
||||
width: 199px;
|
||||
height: 36px;
|
||||
margin-bottom: 13px;
|
||||
}
|
||||
.huddle-box .box .title {
|
||||
width: 311px;
|
||||
height: 86px;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
.huddle-box .box .text {
|
||||
font-family: "PingFangSC-Regular", "PingFang SC", sans-serif;
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-size: 20px;
|
||||
color: #ffffff;
|
||||
text-align: center;
|
||||
line-height: 30px;
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
.huddle-box .box .case {
|
||||
width: 360px;
|
||||
height: 400px;
|
||||
background: linear-gradient(180deg, #f2f2f2 0%, #ebebeb 100%);
|
||||
border-radius: 15px;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
padding-top: 50px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.huddle-box .box .case .QRcode {
|
||||
width: 240px;
|
||||
height: 240px;
|
||||
background-color: #ffffff;
|
||||
border-color: #f2f2f2;
|
||||
border-radius: 10px;
|
||||
box-shadow: 0 0 5px rgba(0, 0, 0, 0.18431373);
|
||||
margin-bottom: 26px;
|
||||
}
|
||||
.huddle-box .box .case .QRcode .img {
|
||||
width: 218px;
|
||||
height: 218px;
|
||||
}
|
||||
.huddle-box .box .case .hint .img {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
}
|
||||
.huddle-box .box .case .hint .img.img-left {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
.huddle-box .box .case .hint .hint-text {
|
||||
font-size: 18px;
|
||||
color: #000000;
|
||||
text-align: center;
|
||||
line-height: 28px;
|
||||
margin: 0 15px;
|
||||
}
|
||||
@media screen and (max-width: 600px) {
|
||||
.huddle-box .box {
|
||||
width: 100vw;
|
||||
height: calc(719 / 600 * 100vw);
|
||||
padding-top: calc(32 / 600 * 100vw);
|
||||
box-shadow: 0 0 calc(15 / 600 * 100vw) rgba(0, 0, 0, 0.10196078);
|
||||
animation-name: slideUp;
|
||||
}
|
||||
.huddle-box .box .code {
|
||||
width: 100vw;
|
||||
}
|
||||
.huddle-box .box .bj-bottom {
|
||||
width: calc(126 / 600 * 100vw);
|
||||
height: calc(134 / 600 * 100vw);
|
||||
}
|
||||
.huddle-box .box .top {
|
||||
width: calc(199 / 600 * 100vw);
|
||||
height: calc(36 / 600 * 100vw);
|
||||
margin-bottom: calc(13 / 600 * 100vw);
|
||||
}
|
||||
.huddle-box .box .title {
|
||||
width: calc(311 / 600 * 100vw);
|
||||
height: calc(86 / 600 * 100vw);
|
||||
margin-bottom: calc(4 / 600 * 100vw);
|
||||
}
|
||||
.huddle-box .box .text {
|
||||
font-size: calc(20 / 600 * 100vw);
|
||||
line-height: calc(30 / 600 * 100vw);
|
||||
margin-bottom: calc(25 / 600 * 100vw);
|
||||
}
|
||||
.huddle-box .box .case {
|
||||
width: calc(360 / 600 * 100vw);
|
||||
height: calc(400 / 600 * 100vw);
|
||||
padding-top: calc(50 / 600 * 100vw);
|
||||
border-radius: calc(15 / 600 * 100vw);
|
||||
}
|
||||
.huddle-box .box .case .QRcode {
|
||||
width: calc(240 / 600 * 100vw);
|
||||
height: calc(240 / 600 * 100vw);
|
||||
margin-bottom: calc(26 / 600 * 100vw);
|
||||
border-radius: calc(10 / 600 * 100vw);
|
||||
box-shadow: 0 0 calc(5 / 600 * 100vw) rgba(0, 0, 0, 0.18431373);
|
||||
}
|
||||
.huddle-box .box .case .QRcode .img {
|
||||
width: calc(218 / 600 * 100vw);
|
||||
height: calc(218 / 600 * 100vw);
|
||||
}
|
||||
.huddle-box .box .case .hint .img {
|
||||
width: calc(32 / 600 * 100vw);
|
||||
height: calc(32 / 600 * 100vw);
|
||||
}
|
||||
.huddle-box .box .case .hint .hint-text {
|
||||
font-size: calc(18 / 600 * 100vw);
|
||||
line-height: calc(28 / 600 * 100vw);
|
||||
margin: 0 calc(15 / 600 * 100vw);
|
||||
}
|
||||
}
|
||||
@keyframes slidebj {
|
||||
0% {
|
||||
background-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
100% {
|
||||
background-color: rgba(0, 0, 0, 0.71764706);
|
||||
}
|
||||
}
|
||||
.helper-pop {
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
background-color: rgba(0, 0, 0, 0.71764706);
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 1004;
|
||||
align-items: flex-end;
|
||||
box-sizing: border-box;
|
||||
animation: slidebj 0.5s forwards;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
overflow: hidden;
|
||||
}
|
||||
.helper-pop .helper-box {
|
||||
animation: slideUp 0.5s forwards;
|
||||
box-sizing: border-box;
|
||||
flex-direction: column;
|
||||
width: 100vw;
|
||||
background: linear-gradient(179.80708565deg, #c1cefa 0%, #e2edfb 28%, #ffffff 60%);
|
||||
border: none;
|
||||
border-radius: 20px;
|
||||
border-bottom-right-radius: 0px;
|
||||
border-bottom-left-radius: 0px;
|
||||
box-shadow: 0px 0px 15px rgba(0, 0, 0, 0.10196078);
|
||||
position: relative;
|
||||
padding-top: 59px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.helper-pop .helper-box .cross-grey {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
position: absolute;
|
||||
top: 13px;
|
||||
right: 13px;
|
||||
padding: 7px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.helper-pop .helper-box .helper-text {
|
||||
box-sizing: border-box;
|
||||
height: 103px;
|
||||
margin: 0 auto 24px;
|
||||
}
|
||||
.helper-pop .helper-box .helper-box-box {
|
||||
box-sizing: border-box;
|
||||
width: 280px;
|
||||
background: linear-gradient(139.427577deg, #6589f2 0%, #74b1f0 100%);
|
||||
border: none;
|
||||
border-radius: 20px;
|
||||
box-shadow: 0px 0px 15px rgba(0, 0, 0, 0.17647059);
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
padding: 20px 0;
|
||||
z-index: 1;
|
||||
margin-bottom: 80px;
|
||||
display: flex;
|
||||
}
|
||||
.helper-pop .helper-box .helper-box-box .helper-box-text {
|
||||
box-sizing: border-box;
|
||||
font-size: 16px;
|
||||
color: #ffffff;
|
||||
text-align: center;
|
||||
line-height: 28px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
.helper-pop .helper-box .helper-QRcode-box {
|
||||
box-sizing: border-box;
|
||||
width: 240px;
|
||||
height: 240px;
|
||||
background-color: #ffffff;
|
||||
border-radius: 6px;
|
||||
position: relative;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
.helper-pop .helper-box .helper-QRcode-box .helper-QRcode-box-icon {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
position: absolute;
|
||||
}
|
||||
.helper-pop .helper-box .helper-QRcode-box .left-top {
|
||||
top: 0;
|
||||
left: 0;
|
||||
transform: rotate(-90deg);
|
||||
}
|
||||
.helper-pop .helper-box .helper-QRcode-box .left-bottom {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
.helper-pop .helper-box .helper-QRcode-box .right-top {
|
||||
right: 0;
|
||||
top: 0;
|
||||
}
|
||||
.helper-pop .helper-box .helper-QRcode-box .right-bottom {
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
.helper-pop .helper-box .helper-QRcode-box .helper-QRcode-img {
|
||||
width: 220px;
|
||||
height: 220px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.helper-pop .helper-box .helper-bottom {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100vw;
|
||||
height: 151px;
|
||||
}
|
||||
@media screen and (max-width: 600px) {
|
||||
.helper-pop .helper-box {
|
||||
width: 100vw;
|
||||
padding-top: calc(59 / 600 * 100vw);
|
||||
border-radius: calc(20 / 600 * 100vw);
|
||||
border-bottom-right-radius: 0px;
|
||||
border-bottom-left-radius: 0px;
|
||||
box-shadow: 0px 0px calc(15 / 600 * 100vw) rgba(0, 0, 0, 0.10196078);
|
||||
}
|
||||
.helper-pop .helper-box .cross-grey {
|
||||
width: calc(16 / 600 * 100vw);
|
||||
height: calc(16 / 600 * 100vw);
|
||||
top: calc(13 / 600 * 100vw);
|
||||
right: calc(13 / 600 * 100vw);
|
||||
padding: calc(7 / 600 * 100vw);
|
||||
}
|
||||
.helper-pop .helper-box .helper-text {
|
||||
height: calc(103 / 600 * 100vw);
|
||||
margin: 0 auto calc(24 / 600 * 100vw);
|
||||
}
|
||||
.helper-pop .helper-box .helper-box-box {
|
||||
width: calc(280 / 600 * 100vw);
|
||||
border-radius: calc(20 / 600 * 100vw);
|
||||
box-shadow: 0px 0px calc(15 / 600 * 100vw) rgba(0, 0, 0, 0.17647059);
|
||||
padding: calc(20 / 600 * 100vw) 0;
|
||||
margin-bottom: calc(80 / 600 * 100vw);
|
||||
}
|
||||
.helper-pop .helper-box .helper-box-box .helper-box-text {
|
||||
font-size: calc(16 / 600 * 100vw);
|
||||
line-height: calc(28 / 600 * 100vw);
|
||||
margin-top: calc(20 / 600 * 100vw);
|
||||
}
|
||||
.helper-pop .helper-box .helper-QRcode-box {
|
||||
width: calc(240 / 600 * 100vw);
|
||||
height: calc(240 / 600 * 100vw);
|
||||
border-radius: calc(6 / 600 * 100vw);
|
||||
}
|
||||
.helper-pop .helper-box .helper-QRcode-box .helper-QRcode-box-icon {
|
||||
width: calc(24 / 600 * 100vw);
|
||||
height: calc(24 / 600 * 100vw);
|
||||
}
|
||||
.helper-pop .helper-box .helper-QRcode-box .helper-QRcode-img {
|
||||
width: calc(220 / 600 * 100vw);
|
||||
height: calc(220 / 600 * 100vw);
|
||||
}
|
||||
.helper-pop .helper-box .helper-bottom {
|
||||
height: calc(151 / 600 * 100vw);
|
||||
}
|
||||
}
|
||||
@keyframes slideUp {
|
||||
0% {
|
||||
top: 100%;
|
||||
}
|
||||
100% {
|
||||
top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
396
css/public.less
@@ -2629,3 +2629,399 @@ td {
|
||||
padding: 0 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.huddle-box {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
background-color: rgba(0, 0, 0, 0.705882352941177);
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
justify-content: center;
|
||||
overflow: hidden;
|
||||
animation: slidebj 0.5s forwards;
|
||||
z-index: 10002;
|
||||
|
||||
.box {
|
||||
width: 100vw;
|
||||
height: 719px;
|
||||
border-radius: 20px 20px 0 0;
|
||||
box-shadow: 0 0 15px rgba(0, 0, 0, 0.101960784313725);
|
||||
animation: slideUp 0.5s forwards;
|
||||
background: linear-gradient(0.0796881deg, #c1a75a 0%, #15a3dc 100%);
|
||||
position: relative;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
padding-top: 32px;
|
||||
z-index: 1;
|
||||
|
||||
.code {
|
||||
width: 100vw;
|
||||
}
|
||||
|
||||
.bj {
|
||||
width: 100vw;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.bj-bottom {
|
||||
width: 126px;
|
||||
height: 134px;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
|
||||
.top {
|
||||
width: 199px;
|
||||
height: 36px;
|
||||
margin-bottom: 13px;
|
||||
}
|
||||
|
||||
.title {
|
||||
width: 311px;
|
||||
height: 86px;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.text {
|
||||
font-family: "PingFangSC-Regular", "PingFang SC", sans-serif;
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-size: 20px;
|
||||
color: #ffffff;
|
||||
text-align: center;
|
||||
line-height: 30px;
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
.case {
|
||||
width: 360px;
|
||||
height: 400px;
|
||||
background: linear-gradient(180deg, rgba(242, 242, 242, 1) 0%, rgba(235, 235, 235, 1) 100%);
|
||||
border-radius: 15px;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
padding-top: 50px;
|
||||
margin: 0 auto;
|
||||
|
||||
.QRcode {
|
||||
width: 240px;
|
||||
height: 240px;
|
||||
background-color: rgba(255, 255, 255, 1);
|
||||
border-color: rgba(242, 242, 242, 1);
|
||||
border-radius: 10px;
|
||||
box-shadow: 0 0 5px rgba(0, 0, 0, 0.184313725490196);
|
||||
margin-bottom: 26px;
|
||||
|
||||
.img {
|
||||
width: 218px;
|
||||
height: 218px;
|
||||
}
|
||||
}
|
||||
|
||||
.hint {
|
||||
.img {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
|
||||
&.img-left {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
}
|
||||
|
||||
.hint-text {
|
||||
font-size: 18px;
|
||||
color: #000000;
|
||||
text-align: center;
|
||||
line-height: 28px;
|
||||
margin: 0 15px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 600px) {
|
||||
.box {
|
||||
width: 100vw;
|
||||
height: calc(719 / 600 * 100vw);
|
||||
padding-top: calc(32 / 600 * 100vw);
|
||||
// border-radius: calc(30 / 600 * 100vw) calc(30 / 600 * 100vw) 0 0;
|
||||
box-shadow: 0 0 calc(15 / 600 * 100vw) rgba(0, 0, 0, 0.101960784313725);
|
||||
animation-name: slideUp;
|
||||
|
||||
.code {
|
||||
width: 100vw;
|
||||
}
|
||||
|
||||
.bj-bottom {
|
||||
width: calc(126 / 600 * 100vw);
|
||||
height: calc(134 / 600 * 100vw);
|
||||
}
|
||||
|
||||
.top {
|
||||
width: calc(199 / 600 * 100vw);
|
||||
height: calc(36 / 600 * 100vw);
|
||||
margin-bottom: calc(13 / 600 * 100vw);
|
||||
}
|
||||
|
||||
.title {
|
||||
width: calc(311 / 600 * 100vw);
|
||||
height: calc(86 / 600 * 100vw);
|
||||
margin-bottom: calc(4 / 600 * 100vw);
|
||||
}
|
||||
|
||||
.text {
|
||||
font-size: calc(20 / 600 * 100vw);
|
||||
line-height: calc(30 / 600 * 100vw);
|
||||
margin-bottom: calc(25 / 600 * 100vw);
|
||||
}
|
||||
|
||||
.case {
|
||||
width: calc(360 / 600 * 100vw);
|
||||
height: calc(400 / 600 * 100vw);
|
||||
padding-top: calc(50 / 600 * 100vw);
|
||||
border-radius: calc(15 / 600 * 100vw);
|
||||
|
||||
.QRcode {
|
||||
width: calc(240 / 600 * 100vw);
|
||||
height: calc(240 / 600 * 100vw);
|
||||
margin-bottom: calc(26 / 600 * 100vw);
|
||||
border-radius: calc(10 / 600 * 100vw);
|
||||
box-shadow: 0 0 calc(5 / 600 * 100vw) rgba(0, 0, 0, 0.184313725490196);
|
||||
|
||||
.img {
|
||||
width: calc(218 / 600 * 100vw);
|
||||
height: calc(218 / 600 * 100vw);
|
||||
}
|
||||
}
|
||||
|
||||
.hint {
|
||||
.img {
|
||||
width: calc(32 / 600 * 100vw);
|
||||
height: calc(32 / 600 * 100vw);
|
||||
}
|
||||
|
||||
.hint-text {
|
||||
font-size: calc(18 / 600 * 100vw);
|
||||
line-height: calc(28 / 600 * 100vw);
|
||||
margin: 0 calc(15 / 600 * 100vw);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes slidebj {
|
||||
0% {
|
||||
background-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
100% {
|
||||
background-color: rgba(0, 0, 0, 0.717647058823529);
|
||||
}
|
||||
}
|
||||
|
||||
.helper-pop {
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
background-color: rgba(0, 0, 0, 0.717647058823529);
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 1004;
|
||||
align-items: flex-end;
|
||||
box-sizing: border-box;
|
||||
animation: slidebj 0.5s forwards;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
overflow: hidden;
|
||||
|
||||
.helper-box {
|
||||
animation: slideUp 0.5s forwards;
|
||||
box-sizing: border-box;
|
||||
flex-direction: column;
|
||||
width: 100vw;
|
||||
background: linear-gradient(179.807085646467deg, rgba(193, 206, 250, 1) 0%, rgba(226, 237, 251, 1) 28%, rgba(255, 255, 255, 1) 60%);
|
||||
border: none;
|
||||
border-radius: 20px;
|
||||
border-bottom-right-radius: 0px;
|
||||
border-bottom-left-radius: 0px;
|
||||
box-shadow: 0px 0px 15px rgba(0, 0, 0, 0.101960784313725);
|
||||
position: relative;
|
||||
padding-top: 59px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.cross-grey {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
position: absolute;
|
||||
top: 13px;
|
||||
right: 13px;
|
||||
padding: 7px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.helper-text {
|
||||
box-sizing: border-box;
|
||||
height: 103px;
|
||||
margin: 0 auto 24px;
|
||||
}
|
||||
|
||||
.helper-box-box {
|
||||
box-sizing: border-box;
|
||||
width: 280px;
|
||||
background: linear-gradient(139.427576997557deg, rgba(101, 137, 242, 1) 0%, rgba(116, 177, 240, 1) 100%);
|
||||
border: none;
|
||||
border-radius: 20px;
|
||||
box-shadow: 0px 0px 15px rgba(0, 0, 0, 0.176470588235294);
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
padding: 20px 0;
|
||||
z-index: 1;
|
||||
margin-bottom: 80px;
|
||||
display: flex;
|
||||
|
||||
.helper-box-text {
|
||||
box-sizing: border-box;
|
||||
font-size: 16px;
|
||||
color: #ffffff;
|
||||
text-align: center;
|
||||
line-height: 28px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
.helper-QRcode-box {
|
||||
box-sizing: border-box;
|
||||
width: 240px;
|
||||
height: 240px;
|
||||
background-color: rgba(255, 255, 255, 1);
|
||||
border-radius: 6px;
|
||||
position: relative;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
||||
.helper-QRcode-box-icon {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.left-top {
|
||||
top: 0;
|
||||
left: 0;
|
||||
transform: rotate(-90deg);
|
||||
}
|
||||
|
||||
.left-bottom {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
.right-top {
|
||||
right: 0;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.right-bottom {
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
|
||||
.helper-QRcode-img {
|
||||
width: 220px;
|
||||
height: 220px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
}
|
||||
|
||||
.helper-bottom {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100vw;
|
||||
height: 151px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 600px) {
|
||||
.helper-box {
|
||||
width: 100vw;
|
||||
padding-top: calc(59 / 600 * 100vw);
|
||||
border-radius: calc(20 / 600 * 100vw);
|
||||
border-bottom-right-radius: 0px;
|
||||
border-bottom-left-radius: 0px;
|
||||
box-shadow: 0px 0px calc(15 / 600 * 100vw) rgba(0, 0, 0, 0.101960784313725);
|
||||
|
||||
.cross-grey {
|
||||
width: calc(16 / 600 * 100vw);
|
||||
height: calc(16 / 600 * 100vw);
|
||||
top: calc(13 / 600 * 100vw);
|
||||
right: calc(13 / 600 * 100vw);
|
||||
padding: calc(7 / 600 * 100vw);
|
||||
}
|
||||
|
||||
.helper-text {
|
||||
height: calc(103 / 600 * 100vw);
|
||||
margin: 0 auto calc(24 / 600 * 100vw);
|
||||
}
|
||||
|
||||
.helper-box-box {
|
||||
width: calc(280 / 600 * 100vw);
|
||||
border-radius: calc(20 / 600 * 100vw);
|
||||
box-shadow: 0px 0px calc(15 / 600 * 100vw) rgba(0, 0, 0, 0.176470588235294);
|
||||
padding: calc(20 / 600 * 100vw) 0;
|
||||
margin-bottom: calc(80 / 600 * 100vw);
|
||||
|
||||
.helper-box-text {
|
||||
font-size: calc(16 / 600 * 100vw);
|
||||
line-height: calc(28 / 600 * 100vw);
|
||||
margin-top: calc(20 / 600 * 100vw);
|
||||
}
|
||||
}
|
||||
|
||||
.helper-QRcode-box {
|
||||
width: calc(240 / 600 * 100vw);
|
||||
height: calc(240 / 600 * 100vw);
|
||||
border-radius: calc(6 / 600 * 100vw);
|
||||
|
||||
.helper-QRcode-box-icon {
|
||||
width: calc(24 / 600 * 100vw);
|
||||
height: calc(24 / 600 * 100vw);
|
||||
}
|
||||
|
||||
.helper-QRcode-img {
|
||||
width: calc(220 / 600 * 100vw);
|
||||
height: calc(220 / 600 * 100vw);
|
||||
}
|
||||
}
|
||||
|
||||
.helper-bottom {
|
||||
height: calc(151 / 600 * 100vw);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes slideUp {
|
||||
0% {
|
||||
top: 100%;
|
||||
}
|
||||
|
||||
100% {
|
||||
top: 0;
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,6 @@
|
||||
}
|
||||
#search-tag .label-title .icon {
|
||||
width: 25px;
|
||||
height: 20px;
|
||||
margin-right: 12px;
|
||||
}
|
||||
#search-tag .label-title .text {
|
||||
@@ -65,6 +64,63 @@
|
||||
color: #000000;
|
||||
margin: 0 10px;
|
||||
}
|
||||
#search-tag .quantity .sort-area {
|
||||
margin-left: auto;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
#search-tag .quantity .sort-area .sort-head {
|
||||
cursor: pointer;
|
||||
}
|
||||
#search-tag .quantity .sort-area .sort-head .text {
|
||||
font-size: 14px;
|
||||
color: #555555;
|
||||
line-height: 26px;
|
||||
margin-right: 6px;
|
||||
}
|
||||
#search-tag .quantity .sort-area .sort-head .icon {
|
||||
width: 8px;
|
||||
height: 5px;
|
||||
transform: rotate(0deg);
|
||||
transition: transform 0.3s ease-in-out;
|
||||
}
|
||||
#search-tag .quantity .sort-area .sort-head .icon.rotate {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
#search-tag .quantity .sort-area .sort-mask {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
}
|
||||
#search-tag .quantity .sort-area .sort-box {
|
||||
position: absolute;
|
||||
top: 28px;
|
||||
right: 0;
|
||||
width: 140px;
|
||||
padding: 0 10px;
|
||||
background-color: #ffffff;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 0 5px rgba(0, 0, 0, 0.16862745);
|
||||
}
|
||||
#search-tag .quantity .sort-area .sort-box .item {
|
||||
font-size: 16px;
|
||||
color: #555555;
|
||||
text-align: center;
|
||||
height: 60px;
|
||||
line-height: 60px;
|
||||
cursor: pointer;
|
||||
}
|
||||
#search-tag .quantity .sort-area .sort-box .item.pitch {
|
||||
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
|
||||
font-weight: 650;
|
||||
font-style: normal;
|
||||
color: #d35110;
|
||||
}
|
||||
#search-tag .quantity .sort-area .sort-box .item:not(:last-child) {
|
||||
border-bottom: 1px dotted #d7d7d7;
|
||||
}
|
||||
#search-tag .matter {
|
||||
align-items: flex-start;
|
||||
}
|
||||
@@ -131,3 +187,31 @@
|
||||
right: calc((100% - 1200px) / 2);
|
||||
bottom: 10px;
|
||||
}
|
||||
#search-tag .matter .sidebar-box .recommend-and-essence {
|
||||
width: 291px;
|
||||
height: 64px;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #e9eef2;
|
||||
border-radius: 10px;
|
||||
padding: 0 10px;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
#search-tag .matter .sidebar-box .recommend-and-essence .item {
|
||||
width: 130px;
|
||||
height: 40px;
|
||||
background-color: #f6f6f6;
|
||||
border: 1px solid #f2f2f2;
|
||||
border-radius: 65px;
|
||||
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
|
||||
font-weight: 650;
|
||||
font-style: normal;
|
||||
font-size: 16px;
|
||||
color: #000000;
|
||||
cursor: pointer;
|
||||
}
|
||||
#search-tag .matter .sidebar-box .recommend-and-essence .item .icon {
|
||||
width: 20px;
|
||||
height: 24px;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
.icon {
|
||||
width: 25px;
|
||||
height: 20px;
|
||||
// height: 20px;
|
||||
margin-right: 12px;
|
||||
}
|
||||
|
||||
@@ -74,6 +74,74 @@
|
||||
color: #000000;
|
||||
margin: 0 10px;
|
||||
}
|
||||
|
||||
.sort-area {
|
||||
margin-left: auto;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
|
||||
.sort-head {
|
||||
cursor: pointer;
|
||||
|
||||
.text {
|
||||
font-size: 14px;
|
||||
color: #555555;
|
||||
line-height: 26px;
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
.icon {
|
||||
width: 8px;
|
||||
height: 5px;
|
||||
|
||||
transform: rotate(0deg);
|
||||
transition: transform 0.3s ease-in-out;
|
||||
|
||||
&.rotate {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.sort-mask {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
.sort-box {
|
||||
position: absolute;
|
||||
top: 28px;
|
||||
right: 0;
|
||||
width: 140px;
|
||||
padding: 0 10px;
|
||||
background-color: rgba(255, 255, 255, 1);
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 0 5px rgba(0, 0, 0, 0.168627450980392);
|
||||
|
||||
.item {
|
||||
font-size: 16px;
|
||||
color: #555555;
|
||||
text-align: center;
|
||||
height: 60px;
|
||||
line-height: 60px;
|
||||
cursor: pointer;
|
||||
|
||||
&.pitch {
|
||||
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
|
||||
font-weight: 650;
|
||||
font-style: normal;
|
||||
color: #d35110;
|
||||
}
|
||||
|
||||
&:not(:last-child) {
|
||||
border-bottom: 1px dotted #d7d7d7;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.matter {
|
||||
@@ -154,6 +222,37 @@
|
||||
right: calc((100% - 1200px) / 2);
|
||||
bottom: 10px;
|
||||
}
|
||||
|
||||
.recommend-and-essence {
|
||||
width: 291px;
|
||||
height: 64px;
|
||||
background-color: rgba(255, 255, 255, 1);
|
||||
border: 1px solid rgba(233, 238, 242, 1);
|
||||
border-radius: 10px;
|
||||
padding: 0 10px;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 12px;
|
||||
|
||||
.item {
|
||||
width: 130px;
|
||||
height: 40px;
|
||||
background-color: rgba(246, 246, 246, 1);
|
||||
border: 1px solid rgba(242, 242, 242, 1);
|
||||
border-radius: 65px;
|
||||
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
|
||||
font-weight: 650;
|
||||
font-style: normal;
|
||||
font-size: 16px;
|
||||
color: #000000;
|
||||
cursor: pointer;
|
||||
|
||||
.icon {
|
||||
width: 20px;
|
||||
height: 24px;
|
||||
margin-right: 8px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
border: none;
|
||||
outline: none;
|
||||
height: 100%;
|
||||
font-size: 16px;
|
||||
}
|
||||
#search .search-box .search-icon {
|
||||
width: 20px;
|
||||
@@ -126,3 +127,46 @@
|
||||
width: 291px;
|
||||
position: sticky;
|
||||
}
|
||||
#search .matter .sidebar-box .recommend-and-essence {
|
||||
width: 291px;
|
||||
height: 64px;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #e9eef2;
|
||||
border-radius: 10px;
|
||||
padding: 0 10px;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
#search .matter .sidebar-box .recommend-and-essence .item {
|
||||
width: 130px;
|
||||
height: 40px;
|
||||
background-color: #f6f6f6;
|
||||
border: 1px solid #f2f2f2;
|
||||
border-radius: 65px;
|
||||
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
|
||||
font-weight: 650;
|
||||
font-style: normal;
|
||||
font-size: 16px;
|
||||
color: #000000;
|
||||
cursor: pointer;
|
||||
}
|
||||
#search .matter .sidebar-box .recommend-and-essence .item .icon {
|
||||
width: 20px;
|
||||
height: 24px;
|
||||
margin-right: 8px;
|
||||
}
|
||||
#search .search-no .earth-icon {
|
||||
width: 239px;
|
||||
height: 180px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
#search .search-no .input-box {
|
||||
width: 903px;
|
||||
height: 60px;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #e9eef2;
|
||||
border-radius: 6px;
|
||||
}
|
||||
#search .search-no .input-box .input {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
border: none;
|
||||
outline: none;
|
||||
height: 100%;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.search-icon {
|
||||
@@ -161,6 +162,58 @@
|
||||
// left: calc((100% - 1200px) / 2 + 909px);
|
||||
// bottom: 10px;
|
||||
// }
|
||||
|
||||
.recommend-and-essence {
|
||||
width: 291px;
|
||||
height: 64px;
|
||||
background-color: rgba(255, 255, 255, 1);
|
||||
border: 1px solid rgba(233, 238, 242, 1);
|
||||
border-radius: 10px;
|
||||
padding: 0 10px;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 12px;
|
||||
|
||||
.item {
|
||||
width: 130px;
|
||||
height: 40px;
|
||||
background-color: rgba(246, 246, 246, 1);
|
||||
border: 1px solid rgba(242, 242, 242, 1);
|
||||
border-radius: 65px;
|
||||
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
|
||||
font-weight: 650;
|
||||
font-style: normal;
|
||||
font-size: 16px;
|
||||
color: #000000;
|
||||
cursor: pointer;
|
||||
|
||||
.icon {
|
||||
width: 20px;
|
||||
height: 24px;
|
||||
margin-right: 8px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.search-no {
|
||||
.earth-icon {
|
||||
width: 239px;
|
||||
height: 180px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.input-box {
|
||||
width: 903px;
|
||||
height: 60px;
|
||||
background-color: rgba(255, 255, 255, 1);
|
||||
border: 1px solid rgba(233, 238, 242, 1);
|
||||
border-radius: 6px;
|
||||
|
||||
.input {
|
||||
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -399,4 +399,30 @@
|
||||
#sectionIndex .matter .sidebar {
|
||||
display: none;
|
||||
}
|
||||
#sectionIndex .matter .matter-content .details-box .content-box .selectives-box .list {
|
||||
padding-right: 0;
|
||||
}
|
||||
#sectionIndex .matter .matter-content .details-box .content-box .selectives-box .list .item {
|
||||
width: 100%;
|
||||
}
|
||||
#sectionIndex .matter .matter-content .details-box .content-box .selectives-box .list .item .text {
|
||||
flex: 1;
|
||||
}
|
||||
#sectionIndex .matter .matter-content .info-box .right .link .item {
|
||||
width: 50%;
|
||||
}
|
||||
#sectionIndex .matter .matter-content .info-box .right .link .item:not(:last-child) {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 500px) {
|
||||
#sectionIndex .matter .matter-content .info-box {
|
||||
padding-top: 15px;
|
||||
padding-left: 15px;
|
||||
}
|
||||
#sectionIndex .matter .matter-content .info-box .img-box {
|
||||
width: 70px;
|
||||
height: 70px;
|
||||
margin-right: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -83,6 +83,8 @@
|
||||
}
|
||||
|
||||
.matter-content {
|
||||
min-width: 0;
|
||||
|
||||
.info-box {
|
||||
width: 100%;
|
||||
background: -webkit-linear-gradient(270.539085289936deg, rgba(255, 255, 255, 1) 2%, rgba(235, 248, 249, 1) 98%);
|
||||
@@ -234,6 +236,7 @@
|
||||
margin-right: 12px;
|
||||
position: sticky;
|
||||
z-index: 1;
|
||||
min-width: 0;
|
||||
|
||||
.selectives-box {
|
||||
width: 100%;
|
||||
@@ -473,4 +476,38 @@
|
||||
#sectionIndex .matter .sidebar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#sectionIndex .matter .matter-content {
|
||||
.details-box .content-box .selectives-box .list {
|
||||
padding-right: 0;
|
||||
|
||||
.item {
|
||||
width: 100%;
|
||||
|
||||
.text {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
.info-box .right .link .item {
|
||||
width: 50%;
|
||||
|
||||
&:not(:last-child) {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 500px) {
|
||||
#sectionIndex .matter .matter-content .info-box {
|
||||
padding-top: 15px;
|
||||
padding-left: 15px;
|
||||
|
||||
.img-box {
|
||||
width: 70px;
|
||||
height: 70px;
|
||||
margin-right: 15px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BIN
img/apply-for-name.png
Normal file
|
After Width: | Height: | Size: 154 KiB |
BIN
img/cross-grey.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
img/earth-icon.png
Normal file
|
After Width: | Height: | Size: 293 KiB |
BIN
img/essence-head-icon.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
img/group-arrows.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
11
img/group-bj.svg
Normal file
|
After Width: | Height: | Size: 287 KiB |
BIN
img/group-bottom.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
img/group-title.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
img/group-top.png
Normal file
|
After Width: | Height: | Size: 282 KiB |
6
img/helper-bottom-blue.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="500px" height="151px" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1 0 0 1 -780 -1161 )">
|
||||
<path d="M 0 151 L 0 0 C 0 0 110.916965217331 54.7610464341339 252 54.578313253012 C 390.916397535917 54.3983863378389 500 0 500 0 L 500 151 L 0 151 Z " fill-rule="nonzero" fill="#edf4ff" stroke="none" transform="matrix(1 0 0 1 780 1161 )" />
|
||||
</g>
|
||||
</svg>
|
||||
6
img/helper-bottom-yellow.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="500px" height="155px" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1 0 0 1 -780 -1157 )">
|
||||
<path d="M 0 155 L 0 0 C 0 0 110.916965217331 43.139381024107 252 42.9518072289157 C 390.916397535917 42.7671140378439 500 0 500 0 L 500 155 L 0 155 Z " fill-rule="nonzero" fill="#fddf6d" stroke="none" transform="matrix(1 0 0 1 780 1157 )" />
|
||||
</g>
|
||||
</svg>
|
||||
BIN
img/recommend-head-icon.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
6
img/triangle-black.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="8px" height="5px" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1 0 0 1 -1087 -552 )">
|
||||
<path d="M 7.8515625 0.164930555555556 C 7.95052083333333 0.274884259259259 8 0.405092592592591 8 0.555555555555556 C 8 0.706018518518518 7.95052083333333 0.836226851851851 7.8515625 0.946180555555556 L 4.3515625 4.83506944444444 C 4.25260416666667 4.94502314814815 4.13541666666667 5 4 5 C 3.86458333333333 5 3.74739583333333 4.94502314814815 3.6484375 4.83506944444444 L 0.1484375 0.946180555555556 C 0.0494791666666667 0.836226851851851 0 0.706018518518518 0 0.555555555555556 C 0 0.405092592592591 0.0494791666666667 0.274884259259259 0.1484375 0.164930555555556 C 0.247395833333333 0.0549768518518512 0.364583333333333 0 0.5 0 L 7.5 0 C 7.63541666666667 0 7.75260416666667 0.0549768518518512 7.8515625 0.164930555555556 Z " fill-rule="nonzero" fill="#000000" stroke="none" transform="matrix(1 0 0 1 1087 552 )" />
|
||||
</g>
|
||||
</svg>
|
||||
6
img/yellow-border.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="24px" height="24px" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1 0 0 1 -1126 -924 )">
|
||||
<path d="M 24 5.85365853658537 L 24 24 C 24 10.56 13.6914285714286 0 0.568479573639317 0 L 18.2857142857143 0 C 21.4857142857142 0 24 2.57560975609761 24 5.85365853658537 Z " fill-rule="nonzero" fill="#fddf6d" stroke="none" transform="matrix(1 0 0 1 1126 924 )" />
|
||||
</g>
|
||||
</svg>
|
||||
@@ -40,7 +40,11 @@ const watchList = {
|
||||
|
||||
// 监听 bi.txt,同步到 bi.js
|
||||
"../component/bi/bi.txt": "../component/bi/bi.js",
|
||||
|
||||
|
||||
"../component/huddle-box/huddle-box.txt": "../component/huddle-box/huddle-box.js",
|
||||
|
||||
"../component/helper-pop/helper-pop.txt": "../component/helper-pop/helper-pop.js",
|
||||
|
||||
// 可添加更多文件(格式:'txt路径': 'js路径')
|
||||
// './component/other/other.txt': './component/other/other.js',
|
||||
};
|
||||
|
||||
542
js/search.js
@@ -1,307 +1,295 @@
|
||||
const { createApp, ref, onMounted, nextTick, onUnmounted, computed, watch, provide } = Vue;
|
||||
import { itemForum } from "../component/item-forum/item-forum.js";
|
||||
import { itemOffer } from "../component/item-offer/item-offer.js";
|
||||
import { itemSummary } from "../component/item-summary/item-summary.js";
|
||||
import { itemVote } from "../component/item-vote/item-vote.js";
|
||||
import { itemMj } from "../component/item-mj/item-mj.js";
|
||||
import { itemTenement } from "../component/item-tenement/item-tenement.js";
|
||||
import { itemProject } from "../component/item-project/item-project.js";
|
||||
import { headTop } from "../component/head-top/head-top.js";
|
||||
import { hotTag } from "../component/hot-tag/hot-tag.js";
|
||||
import { hotSearch } from "../component/hot-search/hot-search.js";
|
||||
import { slideshowBox } from "../component/slideshow-box/slideshow-box.js";
|
||||
import { latestList } from "../component/latest-list/latest-list.js";
|
||||
import { loadBox } from "../component/load-box/load-box.js";
|
||||
(async function () {
|
||||
const { itemForum } = await import(withVer("../component/item-forum/item-forum.js"));
|
||||
const { itemOffer } = await import(withVer("../component/item-offer/item-offer.js"));
|
||||
const { itemSummary } = await import(withVer("../component/item-summary/item-summary.js"));
|
||||
const { itemVote } = await import(withVer("../component/item-vote/item-vote.js"));
|
||||
const { itemMj } = await import(withVer("../component/item-mj/item-mj.js"));
|
||||
const { itemTenement } = await import(withVer("../component/item-tenement/item-tenement.js"));
|
||||
const { itemProject } = await import(withVer("../component/item-project/item-project.js"));
|
||||
const { headTop } = await import(withVer("../component/head-top/head-top.js"));
|
||||
const { hotTag } = await import(withVer("../component/hot-tag/hot-tag.js"));
|
||||
const { hotSearch } = await import(withVer("../component/hot-search/hot-search.js"));
|
||||
const { slideshowBox } = await import(withVer("../component/slideshow-box/slideshow-box.js"));
|
||||
const { latestList } = await import(withVer("../component/latest-list/latest-list.js"));
|
||||
const { loadBox } = await import(withVer("../component/load-box/load-box.js"));
|
||||
|
||||
const appSearch = createApp({
|
||||
setup() {
|
||||
let kwValue = ref(null);
|
||||
let typeValue = ref(null);
|
||||
let kw = ref("");
|
||||
onMounted(() => {
|
||||
const params = getUrlParams();
|
||||
console.log("params", params);
|
||||
// kw.value = params.kw || "";
|
||||
// const urlObj = new URL(location.href);
|
||||
// const pathParts = urlObj.pathname.split("/").filter((part) => part);
|
||||
// kw.value = decodeURIComponent(pathParts.pop());
|
||||
kw.value = kwValue.value.innerText;
|
||||
const tab = typeValue.value.innerText;
|
||||
if (tab) tabValue.value = tab;
|
||||
if (params.page) page.value = params.page;
|
||||
else page.value = 1;
|
||||
const appSearch = createApp({
|
||||
setup() {
|
||||
let kwValue = ref(null);
|
||||
let typeValue = ref(null);
|
||||
let kw = ref("");
|
||||
onMounted(() => {
|
||||
console.log('onMounted');
|
||||
const params = getUrlParams();
|
||||
|
||||
if (kw.value) getList();
|
||||
else page.value = null;
|
||||
kw.value = kwValue.value.innerText;
|
||||
const tab = typeValue.value.innerText;
|
||||
if (tab) tabValue.value = tab;
|
||||
if (params.page) page.value = params.page;
|
||||
else page.value = 1;
|
||||
|
||||
getUserInfoWin();
|
||||
|
||||
window.addEventListener("scroll", handleScroll);
|
||||
});
|
||||
|
||||
let isLogin = ref(false);
|
||||
let realname = ref(0); // 是否已经实名
|
||||
let userInfoWin = ref({});
|
||||
|
||||
let permissions = ref([]);
|
||||
|
||||
const getUserInfoWin = () => {
|
||||
const checkUser = () => {
|
||||
const user = window.userInfoWin;
|
||||
if (!user) return;
|
||||
document.removeEventListener("getUser", checkUser);
|
||||
realname.value = user.realname;
|
||||
userInfoWin.value = user;
|
||||
if (user?.uin > 0 || user?.uid > 0) isLogin.value = true;
|
||||
permissions.value = user?.authority || [];
|
||||
};
|
||||
document.addEventListener("getUser", checkUser);
|
||||
};
|
||||
|
||||
const openAttest = () => {
|
||||
const handleAttestClose = () => {
|
||||
document.removeEventListener("closeAttest", handleAttestClose);
|
||||
realname.value = window.userInfoWin?.realname || 0;
|
||||
};
|
||||
// 启动认证流程时添加监听
|
||||
document.addEventListener("closeAttest", handleAttestClose);
|
||||
loadAttest(2);
|
||||
};
|
||||
|
||||
// 跳转登录
|
||||
const goLogin = () => {
|
||||
if (typeof window === "undefined") return;
|
||||
if (window["userInfoWin"] && Object.keys(window["userInfoWin"]).length !== 0) {
|
||||
if (window["userInfoWin"]["uid"]) isLogin.value = true;
|
||||
else ajax_login();
|
||||
} else ajax_login();
|
||||
};
|
||||
|
||||
provide("isLogin", isLogin);
|
||||
provide("userInfoWin", userInfoWin);
|
||||
provide("realname", realname);
|
||||
provide("openAttest", openAttest);
|
||||
provide("goLogin", goLogin);
|
||||
|
||||
const cutTab = (type) => {
|
||||
if (tabValue.value == type) return;
|
||||
page.value = 1;
|
||||
list.value = [];
|
||||
count.value = 0;
|
||||
tabValue.value = type;
|
||||
pagination.value = [];
|
||||
|
||||
updateUrlParams({ type: type == "all" ? null : type });
|
||||
|
||||
getList();
|
||||
};
|
||||
|
||||
let tabList = ref({
|
||||
all: "全部",
|
||||
thread: "论坛",
|
||||
offer: "Offer",
|
||||
offer_summary: "总结",
|
||||
interviewexperience: "面经",
|
||||
vote: "投票",
|
||||
});
|
||||
|
||||
let tabValue = ref("all");
|
||||
|
||||
let uniqid = "";
|
||||
const init = () => {
|
||||
ajaxGet(`https://offer.gter.net/miniprogramApi/offer/search`).then((res) => {
|
||||
if (res.code != 200) {
|
||||
creationAlertBox("error", res.message);
|
||||
page.value = 0;
|
||||
return;
|
||||
console.log("kw.value", kw.value);
|
||||
if (kw.value) getList();
|
||||
else {
|
||||
page.value = null;
|
||||
isEmptySearch.value = true;
|
||||
}
|
||||
console.log("res", res);
|
||||
});
|
||||
};
|
||||
|
||||
let loading = ref(false);
|
||||
let page = ref(0);
|
||||
let maxPage = ref(0);
|
||||
let count = ref(0);
|
||||
let list = ref([]);
|
||||
let pagination = ref([]);
|
||||
const getList = () => {
|
||||
if (loading.value || page.value == null) return;
|
||||
loading.value = true;
|
||||
const limit = 20;
|
||||
window.scrollTo(0, 0);
|
||||
updateUrlParams({ page: page.value });
|
||||
ajaxGet(`/v2/api/forum/topicLists?type=${tabValue.value == "all" ? "" : tabValue.value}&page=${page.value}&limit=${limit}&keyword=${kw.value}`)
|
||||
.then((res) => {
|
||||
getUserInfoWin();
|
||||
|
||||
window.addEventListener("scroll", handleScroll);
|
||||
|
||||
const preLoader = document.getElementById("pre-loader");
|
||||
if (preLoader) preLoader.style.display = "none";
|
||||
});
|
||||
|
||||
let isLogin = ref(false);
|
||||
let realname = ref(0); // 是否已经实名
|
||||
let userInfoWin = ref({});
|
||||
|
||||
let permissions = ref([]);
|
||||
|
||||
const getUserInfoWin = () => {
|
||||
const checkUser = () => {
|
||||
const user = window.userInfoWin;
|
||||
if (!user) return;
|
||||
document.removeEventListener("getUser", checkUser);
|
||||
realname.value = user.realname;
|
||||
userInfoWin.value = user;
|
||||
if (user?.uin > 0 || user?.uid > 0) isLogin.value = true;
|
||||
permissions.value = user?.authority || [];
|
||||
};
|
||||
document.addEventListener("getUser", checkUser);
|
||||
};
|
||||
|
||||
const openAttest = () => {
|
||||
const handleAttestClose = () => {
|
||||
document.removeEventListener("closeAttest", handleAttestClose);
|
||||
realname.value = window.userInfoWin?.realname || 0;
|
||||
};
|
||||
// 启动认证流程时添加监听
|
||||
document.addEventListener("closeAttest", handleAttestClose);
|
||||
loadAttest(2);
|
||||
};
|
||||
|
||||
// 跳转登录
|
||||
const goLogin = () => {
|
||||
if (typeof window === "undefined") return;
|
||||
if (window["userInfoWin"] && Object.keys(window["userInfoWin"]).length !== 0) {
|
||||
if (window["userInfoWin"]["uid"]) isLogin.value = true;
|
||||
else ajax_login();
|
||||
} else ajax_login();
|
||||
};
|
||||
|
||||
provide("isLogin", isLogin);
|
||||
provide("userInfoWin", userInfoWin);
|
||||
provide("realname", realname);
|
||||
provide("openAttest", openAttest);
|
||||
provide("goLogin", goLogin);
|
||||
|
||||
const cutTab = (type) => {
|
||||
if (tabValue.value == type) return;
|
||||
page.value = 1;
|
||||
list.value = [];
|
||||
count.value = 0;
|
||||
tabValue.value = type;
|
||||
pagination.value = [];
|
||||
|
||||
updateUrlParams({ type: type == "all" ? null : type });
|
||||
|
||||
getList();
|
||||
};
|
||||
|
||||
let tabList = ref({
|
||||
all: "全部",
|
||||
thread: "论坛",
|
||||
offer: "Offer",
|
||||
offer_summary: "总结",
|
||||
interviewexperience: "面经",
|
||||
vote: "投票",
|
||||
xg: "港校项目",
|
||||
});
|
||||
|
||||
let tabValue = ref("all");
|
||||
|
||||
let uniqid = "";
|
||||
const init = () => {
|
||||
ajaxGet(`https://offer.gter.net/miniprogramApi/offer/search`).then((res) => {
|
||||
if (res.code != 200) {
|
||||
creationAlertBox("error", res.message);
|
||||
page.value = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
let data = res.data;
|
||||
data.data.unshift({
|
||||
id: 20,
|
||||
program_en: "Master of Laws in Arbitration and Dispute Resolution",
|
||||
program_zh: "法学硕士(仲裁及争议解决学)",
|
||||
program_abbr: "LLMARBDR",
|
||||
program_code: "P41",
|
||||
award_en: "Master of Laws in Arbitration and Dispute Resolution",
|
||||
award_zh: "法学硕士(仲裁及争议解决学)",
|
||||
subject_area_id: 9,
|
||||
subject_area_name: "Law",
|
||||
primary_university: "City University of Hong Kong",
|
||||
primary_university_id: 3,
|
||||
status: "ACTIVE",
|
||||
intake_year: 2026,
|
||||
disciplineid: 9,
|
||||
distinctive: "毕业生可参与:当事人、辩护人、专家、仲裁员和调解员",
|
||||
rank: "42",
|
||||
department: "法律学院",
|
||||
admissionsproject: "1",
|
||||
departmentid: 26,
|
||||
schoolalias: "城大",
|
||||
schoolname: "香港城市大学",
|
||||
tags: ["有奖学金", "论文课程", "26fall 提前批", "Top 50", "专业资格认证"],
|
||||
schoolenname: "City University of Hong Kong",
|
||||
intake_month: 9,
|
||||
schoolid: 311,
|
||||
tuition_fee: null,
|
||||
uniqid: "tf1yFYMER8-1bY1t5oLbKaNc2FVhOWM0",
|
||||
type: "programs",
|
||||
schoollogo: "https://oss.x-php.com/school/J6BSwE-VfCFkCb1SBaR7ec6NYmTA4pRcOalNHJRfNzUxNg~~",
|
||||
});
|
||||
|
||||
list.value = data.data;
|
||||
if (list.value.length == 0) page.value = null;
|
||||
|
||||
count.value = data.count;
|
||||
loading.value = false;
|
||||
maxPage.value = Math.ceil(count.value / limit);
|
||||
pagination.value = calculatePagination(page.value, maxPage.value);
|
||||
|
||||
let url = `/search/${kw.value}`;
|
||||
|
||||
const hostname = location.hostname;
|
||||
const localHostReg = /^(localhost|127\.0\.0\.1|\[::1\])$/;
|
||||
if (localHostReg.test(hostname)) url = `/search.html`;
|
||||
|
||||
updateUrlLastPath(url);
|
||||
removeQueryQ();
|
||||
})
|
||||
.catch((err) => {
|
||||
err = err.data;
|
||||
if (err.code == 401) goLogin();
|
||||
loading.value = false;
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
const calculatePagination = (currentPage, totalPages, visibleCount = 3) => {
|
||||
// 处理特殊情况:总页数小于等于1时,无需显示分页
|
||||
if (totalPages <= 1) {
|
||||
return [];
|
||||
}
|
||||
let loading = ref(false);
|
||||
let page = ref(0);
|
||||
let maxPage = ref(0);
|
||||
let count = ref(0);
|
||||
let total = ref(0);
|
||||
let list = ref([]);
|
||||
let pagination = ref([]);
|
||||
const getList = () => {
|
||||
if (loading.value || page.value == null) return;
|
||||
loading.value = true;
|
||||
isEmptySearch.value = false;
|
||||
const limit = 20;
|
||||
window.scrollTo(0, 0);
|
||||
// updateUrlParams({ page: page.value });
|
||||
|
||||
const pages = [];
|
||||
// 始终显示第一页
|
||||
pages.push(1);
|
||||
let postHead = null;
|
||||
|
||||
// 计算中间需要显示的页码范围
|
||||
let startPage = Math.max(2, currentPage - Math.floor(visibleCount / 2));
|
||||
let endPage = Math.min(totalPages - 1, startPage + visibleCount - 1);
|
||||
if (tabValue.value == "xg") {
|
||||
postHead = ajax(`https://api.gter.net/v1/program/getList`, {
|
||||
page: page.value,
|
||||
keyword: kw.value,
|
||||
});
|
||||
} else postHead = ajaxGet(`/v2/api/forum/topicLists?type=${tabValue.value == "all" ? "" : tabValue.value}&page=${page.value}&limit=${limit}&keyword=${kw.value}`);
|
||||
|
||||
// 调整起始页码,确保显示足够数量的页码
|
||||
startPage = Math.max(2, endPage - visibleCount + 1);
|
||||
let historySearchList = JSON.parse(localStorage.getItem("history-search")) || [];
|
||||
historySearchList.unshift(kw.value);
|
||||
historySearchList = [...new Set(historySearchList)];
|
||||
if (historySearchList.length > 10) historySearchList = historySearchList.splice(0, 10);
|
||||
localStorage.setItem("history-search", JSON.stringify(historySearchList));
|
||||
|
||||
// 前面的省略号:如果第一页和起始页之间有间隔
|
||||
if (startPage > 2) {
|
||||
pages.push("...");
|
||||
}
|
||||
postHead
|
||||
.then((res) => {
|
||||
if (res.code != 200) {
|
||||
creationAlertBox("error", res.message);
|
||||
return;
|
||||
}
|
||||
|
||||
// 添加中间的页码
|
||||
for (let i = startPage; i <= endPage; i++) {
|
||||
pages.push(i);
|
||||
}
|
||||
let data = res.data;
|
||||
list.value = data.data;
|
||||
if (list.value.length == 0) page.value = null;
|
||||
|
||||
// 后面的省略号:如果最后一页和结束页之间有间隔
|
||||
if (endPage < totalPages - 1) {
|
||||
pages.push("...");
|
||||
}
|
||||
total.value = data.total || data.count;
|
||||
count.value = data.count;
|
||||
loading.value = false;
|
||||
maxPage.value = Math.ceil(count.value / limit);
|
||||
pagination.value = calculatePagination(page.value, maxPage.value);
|
||||
// updateUrlLastPath(`/search/${kw.value}`);
|
||||
removeQueryQ();
|
||||
})
|
||||
.catch((err) => {
|
||||
err = err?.data;
|
||||
if (err?.code == 401) goLogin();
|
||||
loading.value = false;
|
||||
});
|
||||
};
|
||||
|
||||
// 始终显示最后一页(如果总页数大于1)
|
||||
if (totalPages > 1) {
|
||||
pages.push(totalPages);
|
||||
}
|
||||
const calculatePagination = (currentPage, totalPages, visibleCount = 3) => {
|
||||
// 处理特殊情况:总页数小于等于1时,无需显示分页
|
||||
if (totalPages <= 1) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return pages;
|
||||
};
|
||||
const pages = [];
|
||||
// 始终显示第一页
|
||||
pages.push(1);
|
||||
|
||||
const cutPage = (value) => {
|
||||
if (value == "...") return;
|
||||
if (value == page.value) return;
|
||||
page.value = value;
|
||||
list.value = [];
|
||||
getList();
|
||||
};
|
||||
// 计算中间需要显示的页码范围
|
||||
let startPage = Math.max(2, currentPage - Math.floor(visibleCount / 2));
|
||||
let endPage = Math.min(totalPages - 1, startPage + visibleCount - 1);
|
||||
|
||||
const prevPage = () => {
|
||||
page.value -= 1;
|
||||
list.value = [];
|
||||
pagination.value = [];
|
||||
getList();
|
||||
};
|
||||
// 调整起始页码,确保显示足够数量的页码
|
||||
startPage = Math.max(2, endPage - visibleCount + 1);
|
||||
|
||||
const nextPage = () => {
|
||||
page.value += 1;
|
||||
list.value = [];
|
||||
pagination.value = [];
|
||||
getList();
|
||||
};
|
||||
// 前面的省略号:如果第一页和起始页之间有间隔
|
||||
if (startPage > 2) {
|
||||
pages.push("...");
|
||||
}
|
||||
|
||||
const startSearch = () => {
|
||||
if (kw.value == "") {
|
||||
creationAlertBox("error", "请输入搜索关键词");
|
||||
return;
|
||||
}
|
||||
// 添加中间的页码
|
||||
for (let i = startPage; i <= endPage; i++) {
|
||||
pages.push(i);
|
||||
}
|
||||
|
||||
page.value = 1;
|
||||
list.value = [];
|
||||
count.value = 0;
|
||||
pagination.value = [];
|
||||
getList();
|
||||
};
|
||||
// 后面的省略号:如果最后一页和结束页之间有间隔
|
||||
if (endPage < totalPages - 1) {
|
||||
pages.push("...");
|
||||
}
|
||||
|
||||
const sidebarFixed = ref(false);
|
||||
const matterFixed = ref(false);
|
||||
const matterBottom = ref(false);
|
||||
// 始终显示最后一页(如果总页数大于1)
|
||||
if (totalPages > 1) {
|
||||
pages.push(totalPages);
|
||||
}
|
||||
|
||||
const handleScroll = () => {
|
||||
matterHeight.value = -(matterContentRef.value.offsetHeight - window.innerHeight);
|
||||
sidebarHeight.value = -(sidebarRef.value.offsetHeight - window.innerHeight);
|
||||
if (matterHeight.value > 0) matterHeight.value = 12;
|
||||
if (sidebarHeight.value > 0) sidebarHeight.value = 12;
|
||||
};
|
||||
return pages;
|
||||
};
|
||||
|
||||
const matterRef = ref(null);
|
||||
const sidebarRef = ref(null);
|
||||
const matterContentRef = ref(null);
|
||||
const cutPage = (value) => {
|
||||
if (value == "...") return;
|
||||
if (value == page.value) return;
|
||||
page.value = value;
|
||||
list.value = [];
|
||||
getList();
|
||||
};
|
||||
|
||||
let sidebarHeight = ref(0);
|
||||
let matterHeight = ref(0);
|
||||
const prevPage = () => {
|
||||
page.value -= 1;
|
||||
list.value = [];
|
||||
pagination.value = [];
|
||||
getList();
|
||||
};
|
||||
|
||||
return { matterHeight, sidebarHeight, matterBottom, matterFixed, matterContentRef, sidebarFixed, matterRef, sidebarRef, loading, typeValue, kwValue, startSearch, kw, maxPage, prevPage, nextPage, tabValue, cutTab, tabList, count, list, page, pagination, cutPage };
|
||||
},
|
||||
});
|
||||
appSearch.component("item-forum", itemForum);
|
||||
appSearch.component("itemOffer", itemOffer);
|
||||
appSearch.component("itemSummary", itemSummary);
|
||||
appSearch.component("itemVote", itemVote);
|
||||
appSearch.component("itemMj", itemMj);
|
||||
appSearch.component("itemTenement", itemTenement);
|
||||
appSearch.component("itemProject", itemProject);
|
||||
appSearch.component("head-top", headTop);
|
||||
appSearch.component("hot-tag", hotTag);
|
||||
appSearch.component("hot-search", hotSearch);
|
||||
appSearch.component("slideshow-box", slideshowBox);
|
||||
appSearch.component("latest-list", latestList);
|
||||
appSearch.component("load-box", loadBox);
|
||||
appSearch.mount("#search");
|
||||
const nextPage = () => {
|
||||
page.value += 1;
|
||||
list.value = [];
|
||||
pagination.value = [];
|
||||
getList();
|
||||
};
|
||||
|
||||
const startSearch = () => {
|
||||
if (kw.value == "") {
|
||||
creationAlertBox("error", "请输入搜索关键词");
|
||||
return;
|
||||
}
|
||||
|
||||
page.value = 1;
|
||||
list.value = [];
|
||||
count.value = 0;
|
||||
pagination.value = [];
|
||||
getList();
|
||||
};
|
||||
|
||||
const sidebarFixed = ref(false);
|
||||
const matterFixed = ref(false);
|
||||
const matterBottom = ref(false);
|
||||
|
||||
const handleScroll = () => {
|
||||
matterHeight.value = -(matterContentRef.value.offsetHeight - window.innerHeight);
|
||||
sidebarHeight.value = -(sidebarRef.value.offsetHeight - window.innerHeight);
|
||||
if (matterHeight.value > 0) matterHeight.value = 12;
|
||||
if (sidebarHeight.value > 0) sidebarHeight.value = 12;
|
||||
};
|
||||
|
||||
const matterRef = ref(null);
|
||||
const sidebarRef = ref(null);
|
||||
const matterContentRef = ref(null);
|
||||
|
||||
let sidebarHeight = ref(0);
|
||||
let matterHeight = ref(0);
|
||||
|
||||
let isEmptySearch = ref(false);
|
||||
|
||||
return { isEmptySearch, total, matterHeight, sidebarHeight, matterBottom, matterFixed, matterContentRef, sidebarFixed, matterRef, sidebarRef, loading, typeValue, kwValue, startSearch, kw, maxPage, prevPage, nextPage, tabValue, cutTab, tabList, count, list, page, pagination, cutPage };
|
||||
},
|
||||
});
|
||||
appSearch.component("item-forum", itemForum);
|
||||
appSearch.component("itemOffer", itemOffer);
|
||||
appSearch.component("itemSummary", itemSummary);
|
||||
appSearch.component("itemVote", itemVote);
|
||||
appSearch.component("itemMj", itemMj);
|
||||
appSearch.component("itemTenement", itemTenement);
|
||||
appSearch.component("itemProject", itemProject);
|
||||
appSearch.component("head-top", headTop);
|
||||
appSearch.component("hot-tag", hotTag);
|
||||
appSearch.component("hot-search", hotSearch);
|
||||
appSearch.component("slideshow-box", slideshowBox);
|
||||
appSearch.component("latest-list", latestList);
|
||||
appSearch.component("load-box", loadBox);
|
||||
appSearch.mount("#search");
|
||||
})();
|
||||
|
||||
333
js/sectionV2.js
Normal file
@@ -0,0 +1,333 @@
|
||||
const { createApp, ref, onMounted, nextTick, onUnmounted, computed, watch, provide } = Vue;
|
||||
(async function () {
|
||||
const { itemForum } = await import(withVer("../component/item-forum/item-forum.js"));
|
||||
const { itemOffer } = await import(withVer("../component/item-offer/item-offer.js"));
|
||||
const { itemSummary } = await import(withVer("../component/item-summary/item-summary.js"));
|
||||
const { itemVote } = await import(withVer("../component/item-vote/item-vote.js"));
|
||||
const { itemMj } = await import(withVer("../component/item-mj/item-mj.js"));
|
||||
const { itemTenement } = await import(withVer("../component/item-tenement/item-tenement.js"));
|
||||
const { itemProject } = await import(withVer("../component/item-project/item-project.js"));
|
||||
const { latestList } = await import(withVer("../component/latest-list/latest-list.js"));
|
||||
const { headTop } = await import(withVer("../component/head-top/head-top.js"));
|
||||
const { loadBox } = await import(withVer("../component/load-box/load-box.js"));
|
||||
const { huddleBox } = await import(withVer("../component/huddle-box/huddle-box.js"));
|
||||
const { helperPop } = await import(withVer("../component/helper-pop/helper-pop.js"));
|
||||
|
||||
const appSectionIndex = createApp({
|
||||
setup() {
|
||||
let uniValue = ref(null);
|
||||
|
||||
let isMobile = ref(false);
|
||||
|
||||
onMounted(() => {
|
||||
isMobile.value = window.isMobile;
|
||||
|
||||
const urlObj = new URL(location.href);
|
||||
const pathParts = urlObj.pathname.split("/").filter((part) => part);
|
||||
const id = pathParts.pop();
|
||||
|
||||
section.value = uniValue.value.innerText;
|
||||
|
||||
init();
|
||||
getSectionList();
|
||||
handpick();
|
||||
getTags();
|
||||
getList();
|
||||
getTopicLatest();
|
||||
window.addEventListener("scroll", handleScroll);
|
||||
|
||||
// const preLoader = document.getElementById("pre-loader");
|
||||
// if (preLoader) preLoader.style.display = "none";
|
||||
|
||||
document.querySelectorAll(".vuehide").forEach((item) => {
|
||||
item.style.display = "none";
|
||||
});
|
||||
});
|
||||
|
||||
const detailsRef = ref(null);
|
||||
const matterRef = ref(null);
|
||||
const sidebarRef = ref(null);
|
||||
|
||||
const contentRef = ref(null);
|
||||
let sidebarHeight = ref(0);
|
||||
let matterHeight = ref(0);
|
||||
|
||||
const sidebarFixed = ref(false);
|
||||
const handleScroll = () => {
|
||||
const scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
|
||||
const scrollHeight = document.documentElement.scrollHeight;
|
||||
const clientHeight = window.innerHeight;
|
||||
|
||||
// 列表下 滑动到底部 获取新数据
|
||||
if (scrollTop + clientHeight >= scrollHeight - 200) getList();
|
||||
|
||||
// 侧边栏滚动固定
|
||||
// if (scrollTop >= detailsRef.value.offsetTop + sidebarRef.value.offsetHeight - clientHeight) sidebarFixed.value = true;
|
||||
// else sidebarFixed.value = false;
|
||||
|
||||
matterHeight.value = -(contentRef.value.offsetHeight - window.innerHeight);
|
||||
sidebarHeight.value = -(sidebarRef.value.offsetHeight - window.innerHeight);
|
||||
|
||||
if (matterHeight.value > 0) matterHeight.value = 12;
|
||||
if (sidebarHeight.value > 0) sidebarHeight.value = 12;
|
||||
};
|
||||
|
||||
let sectionList = ref([]);
|
||||
let section = ref("");
|
||||
|
||||
const getSectionList = () => {
|
||||
ajaxGet("/v2/api/forum/getSectionList").then((res) => {
|
||||
if (res.code != 200) return;
|
||||
const data = res.data || [];
|
||||
|
||||
let obj = {};
|
||||
|
||||
data.forEach((element) => (obj[element.cid] = element));
|
||||
const list = insertLineBetweenCategories(data, "cid");
|
||||
sectionList.value = list;
|
||||
// if (!section.value) {
|
||||
// const uniqid = list[0].uniqid;
|
||||
// section.value = uniqid;
|
||||
// updateUrlParams({ section: uniqid });
|
||||
// init();
|
||||
// }
|
||||
});
|
||||
};
|
||||
|
||||
// 将版块按 cid 分格开
|
||||
const insertLineBetweenCategories = (arr) => {
|
||||
if (!arr.length) return [];
|
||||
|
||||
const sortedArr = [...arr].sort((a, b) => {
|
||||
if (a["cid"] < b["cid"]) return -1;
|
||||
if (a["cid"] > b["cid"]) return 1;
|
||||
return 0;
|
||||
});
|
||||
|
||||
const result = [sortedArr[0]];
|
||||
let prevCategory = sortedArr[0]["cid"];
|
||||
|
||||
for (let i = 1; i < sortedArr.length; i++) {
|
||||
const current = sortedArr[i];
|
||||
const currentCategory = current["cid"];
|
||||
|
||||
if (currentCategory !== prevCategory) {
|
||||
result.push({
|
||||
key: "line",
|
||||
});
|
||||
prevCategory = currentCategory;
|
||||
}
|
||||
result.push(current);
|
||||
}
|
||||
|
||||
return result;
|
||||
};
|
||||
|
||||
let info = ref({});
|
||||
|
||||
const init = () => {
|
||||
ajaxGet(`/v2/api/forum/getSectionDetails?sectionid=${section.value}`).then((res) => {
|
||||
if (res.code != 200) return;
|
||||
const data = res.data || {};
|
||||
info.value = data;
|
||||
// 滚动到顶部
|
||||
window.scrollTo({ top: 0, behavior: "smooth" });
|
||||
});
|
||||
};
|
||||
|
||||
let handpickList = ref([]);
|
||||
const handpick = () => {
|
||||
ajaxGet(`/v2/api/forum/topicHandpicked?sectionid=${section.value}`).then((res) => {
|
||||
let data = res.data || [];
|
||||
handpickList.value = data;
|
||||
});
|
||||
};
|
||||
|
||||
let tagsList = ref([]);
|
||||
const getTags = () => {
|
||||
ajaxGet(`/v2/api/forum/sectionTags?sectionid=${section.value}`).then((res) => {
|
||||
if (res.code != 200) return;
|
||||
const data = res.data || {};
|
||||
tagsList.value = data;
|
||||
});
|
||||
};
|
||||
|
||||
let loading = ref(false);
|
||||
let page = ref(1);
|
||||
let count = ref(0);
|
||||
let list = ref([]);
|
||||
const getList = () => {
|
||||
if (loading.value || page.value == 0) return;
|
||||
loading.value = true;
|
||||
ajaxGet(`/v2/api/forum/topicLists?page=${page.value || 1}§ionid=${section.value}`)
|
||||
.then((res) => {
|
||||
if (res.code != 200) return;
|
||||
let data = res.data;
|
||||
list.value = list.value.concat(data.data);
|
||||
page.value = data.count > data.limit * data.page ? page.value + 1 : 0;
|
||||
count.value = data.count;
|
||||
loading.value = false;
|
||||
})
|
||||
.catch((err) => {
|
||||
err = err.data;
|
||||
if (err.code == 401) openLoginBtnState();
|
||||
loading.value = false;
|
||||
});
|
||||
};
|
||||
|
||||
onMounted(() => getUserInfoWin());
|
||||
|
||||
let isLogin = ref(false);
|
||||
let realname = ref(0); // 是否已经实名
|
||||
let userInfoWin = ref({});
|
||||
|
||||
const getUserInfoWin = () => {
|
||||
const checkUser = () => {
|
||||
const user = window.userInfoWin;
|
||||
if (!user) return;
|
||||
document.removeEventListener("getUser", checkUser);
|
||||
realname.value = user.realname;
|
||||
userInfoWin.value = user;
|
||||
if (user?.uin > 0 || user?.uid > 0) isLogin.value = true;
|
||||
};
|
||||
document.addEventListener("getUser", checkUser);
|
||||
};
|
||||
|
||||
const openAttest = () => {
|
||||
const handleAttestClose = () => {
|
||||
document.removeEventListener("closeAttest", handleAttestClose);
|
||||
realname.value = window.userInfoWin?.realname || 0;
|
||||
};
|
||||
// 启动认证流程时添加监听
|
||||
document.addEventListener("closeAttest", handleAttestClose);
|
||||
loadAttest(2);
|
||||
};
|
||||
|
||||
// 跳转登录
|
||||
const goLogin = () => {
|
||||
if (typeof window === "undefined") return;
|
||||
if (window["userInfoWin"] && Object.keys(window["userInfoWin"]).length !== 0) {
|
||||
if (window["userInfoWin"]["uid"]) isLogin.value = true;
|
||||
else ajax_login();
|
||||
} else ajax_login();
|
||||
};
|
||||
|
||||
provide("isLogin", isLogin);
|
||||
provide("userInfoWin", userInfoWin);
|
||||
provide("realname", realname);
|
||||
provide("openAttest", openAttest);
|
||||
provide("goLogin", goLogin);
|
||||
|
||||
const changeSection = (uniqid) => {
|
||||
section.value = uniqid;
|
||||
handpickList.value = [];
|
||||
info.value = {};
|
||||
tagsList.value = [];
|
||||
|
||||
count.value = 0;
|
||||
page.value = 1;
|
||||
list.value = [];
|
||||
|
||||
init();
|
||||
handpick();
|
||||
getTags();
|
||||
getList();
|
||||
updateUrlLastPath(`/section/${uniqid}`);
|
||||
};
|
||||
|
||||
let offer = ref([]); // 面经列表
|
||||
let vote = ref([]); // 面经列表
|
||||
let interviewexperience = ref([]); // 面经列表
|
||||
const getTopicLatest = () => {
|
||||
ajaxGet(`/v2/api/forum/getTopicLatest?limit=4`).then((res) => {
|
||||
const data = res.data || [];
|
||||
|
||||
data.vote.forEach((item) => {
|
||||
if (!item.title) {
|
||||
item.title = item.content;
|
||||
item.content = "";
|
||||
}
|
||||
});
|
||||
|
||||
offer.value = data.offer;
|
||||
vote.value = data.vote;
|
||||
interviewexperience.value = data.interviewexperience;
|
||||
});
|
||||
};
|
||||
|
||||
let linkXg = ref([
|
||||
{
|
||||
name: "申港超强资料包",
|
||||
url: "https://u.gter.net/ad/1043?x=gter",
|
||||
},
|
||||
{
|
||||
name: "港校项目库",
|
||||
url: "http://program.gter.net/",
|
||||
},
|
||||
{
|
||||
name: "26fall香港申请群",
|
||||
img: "/img/cong-ge.png",
|
||||
hint: "微信扫码添加",
|
||||
type: "cong",
|
||||
},
|
||||
{
|
||||
name: "寄托香港租房",
|
||||
url: "https://fang.gter.net/",
|
||||
},
|
||||
]); // 链接列表
|
||||
|
||||
let linkOther = ref([
|
||||
{
|
||||
name: "26fall申请群",
|
||||
img: "/img/cong-ge.png",
|
||||
title: "26fall申请群",
|
||||
hint: "微信扫码添加",
|
||||
type: "cong",
|
||||
},
|
||||
{
|
||||
name: "申请求助",
|
||||
img: "/img/university-manager.png",
|
||||
title: "申请遇疑问可联系",
|
||||
hint: "寄托院校君",
|
||||
type: "university",
|
||||
},
|
||||
]); // 链接列表
|
||||
|
||||
const handleCheckAttest = (e) => {
|
||||
if (!isLogin.value) {
|
||||
goLogin();
|
||||
e.preventDefault(); // 阻止默认跳转(即使 href 为链接,也强制拦截)
|
||||
return;
|
||||
}
|
||||
if (realname.value === 0 && userInfoWin.value?.uin > 0) {
|
||||
openAttest();
|
||||
e.preventDefault(); // 阻止默认跳转(即使 href 为链接,也强制拦截)
|
||||
}
|
||||
};
|
||||
|
||||
let huddleBoxRef = ref(null);
|
||||
let helperPopRef = ref(null);
|
||||
const linkClick = (type) => {
|
||||
if (!isMobile.value) return;
|
||||
if (type == "cong") huddleBoxRef.value.open();
|
||||
if (type == "university") helperPopRef.value.open();
|
||||
};
|
||||
|
||||
return { helperPopRef, huddleBoxRef, linkClick, handleCheckAttest, sidebarHeight, matterHeight, page, sidebarFixed, detailsRef, contentRef, matterRef, sidebarRef, loading, linkOther, linkXg, uniValue, offer, vote, interviewexperience, changeSection, sectionList, section, info, handpickList, tagsList, list, count };
|
||||
},
|
||||
});
|
||||
appSectionIndex.component("item-forum", itemForum);
|
||||
appSectionIndex.component("item-offer", itemOffer);
|
||||
appSectionIndex.component("item-summary", itemSummary);
|
||||
appSectionIndex.component("item-vote", itemVote);
|
||||
appSectionIndex.component("item-mj", itemMj);
|
||||
appSectionIndex.component("item-tenement", itemTenement);
|
||||
appSectionIndex.component("item-project", itemProject);
|
||||
appSectionIndex.component("latest-list", latestList);
|
||||
appSectionIndex.component("head-top", headTop);
|
||||
appSectionIndex.component("load-box", loadBox);
|
||||
appSectionIndex.component("huddle-box", huddleBox);
|
||||
appSectionIndex.component("helper-pop", helperPop);
|
||||
|
||||
appSectionIndex.mount("#sectionIndex");
|
||||
})();
|
||||
474
searchV2.html
Normal file
@@ -0,0 +1,474 @@
|
||||
<!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>搜索结果 - 澳门大学 - 寄托天下 -- 寄托天下</title>
|
||||
<link rel="stylesheet" href="https://framework.x-php.com/gter/forum/css/public.css?v=vDmK98808ObK" />
|
||||
<link rel="stylesheet" href="/css/search.css" />
|
||||
|
||||
<meta name="description" content="在寄托天下留学论坛上搜索澳门大学, 分享留学经验, 咨询签证, 面试, 机经, offer, 奖学金, 名校专业等。">
|
||||
<meta name="keywords" content="澳门大学, 寄托天下, 留学论坛">
|
||||
<meta name="author" content="">
|
||||
<!-- Open Graph / Facebook -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:title" content="搜索结果 - 澳门大学 - 寄托天下">
|
||||
<meta property="og:description" content="在寄托天下留学论坛上搜索澳门大学, 分享留学经验, 咨询签证, 面试, 机经, offer, 奖学金, 名校专业等。">
|
||||
<meta property="og:image" content="">
|
||||
<!-- Twitter -->
|
||||
<meta property="twitter:card" content="summary_large_image">
|
||||
<meta property="twitter:title" content="搜索结果 - 澳门大学 - 寄托天下">
|
||||
<meta property="twitter:description" content="在寄托天下留学论坛上搜索澳门大学, 分享留学经验, 咨询签证, 面试, 机经, offer, 奖学金, 名校专业等。">
|
||||
<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=vDmK98808ObK" />
|
||||
<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=vDmK98808ObK" />
|
||||
</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=vDmK98808ObK" /></div>发布帖子
|
||||
</a>
|
||||
<img class="cross-icon" onclick="crossHeadPop()" src="https://framework.x-php.com/gter/forum/img/cross.svg?v=vDmK98808ObK">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="valueA" style="display: none;">https://framework.x-php.com/gter/forum/</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="container" id="search">
|
||||
<div class="templateValue" ref="kwValue">澳门大学</div>
|
||||
<div class="templateValue" ref="typeValue"></div>
|
||||
|
||||
<template v-if="!isNoSearch">
|
||||
<div class="search-no">
|
||||
<img class="earth-icon flexflex" src="/img/earth-icon.png">
|
||||
<div class="input-box">
|
||||
<input class="flex1" placeholder="港中大 双学位">
|
||||
<div class="btn">搜索</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else>
|
||||
<div class="search-box flexacenter">
|
||||
<input class="search-input flex1" placeholder="请输入搜索关键词" v-model="kw" @keyup.enter="startSearch" />
|
||||
<img class="search-icon" src="https://framework.x-php.com/gter/forum/img/search-icon.svg?v=vDmK98808ObK" alt="" @click="startSearch" />
|
||||
</div>
|
||||
<template v-if="!isEmptySearch">
|
||||
<div class="classify flexacenter">
|
||||
<div class="item" :class="{'pitch': key == tabValue}" v-for="(item, key) in tabList" :key="key" @click="cutTab(key)">{{ item }}</div>
|
||||
</div>
|
||||
|
||||
<div class="quantity flexacenter">
|
||||
{{ tabList[tabValue] }}
|
||||
<div class="line"></div>
|
||||
共
|
||||
<div class="num">{{ total }}</div>
|
||||
条
|
||||
</div>
|
||||
</template>
|
||||
<div id="pre-loader">
|
||||
<div class="three-bounce" p-id="11">
|
||||
<div class="one" p-id="12"></div>
|
||||
<div class="two" p-id="13"></div>
|
||||
<div class="three" p-id="14"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="matter flexflex" ref="matterRef" v-cloak>
|
||||
|
||||
<div class="matter-content flex1" ref="matterContentRef" :style="{'top': matterHeight + 'px'}">
|
||||
<div class="list-box" v-if="list.length != 0">
|
||||
<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>
|
||||
</div>
|
||||
|
||||
<load-box :loading="loading"></load-box>
|
||||
|
||||
<div v-if="list.length == 0 && page == null" class="empty flexcenter">
|
||||
<img class="empty-icon" src="https://framework.x-php.com/gter/forum/img/empty-icon.png?v=vDmK98808ObK" />
|
||||
<div class="empty-text">{{ kw ? '- 暂无内容 -' : '- 请输入搜索关键词 -' }}</div>
|
||||
</div>
|
||||
|
||||
<div class="pages-box flexcenter" v-if="pagination.length != 0">
|
||||
<img v-if="page == 1" class="arrows" src="https://framework.x-php.com/gter/forum/img/arrows-gray-simple.svg?v=vDmK98808ObK" alt="" />
|
||||
<img @click="prevPage" v-else class="arrows rotate180" src="https://framework.x-php.com/gter/forum/img/arrows-gray-deep.svg?v=vDmK98808ObK" alt="" />
|
||||
|
||||
<div class="item" :class="{'pitch': item == page }" v-for="(item, index) in pagination" @click="cutPage(item)">{{ item }}</div>
|
||||
|
||||
<img v-if="page == maxPage" class="arrows rotate180" src="https://framework.x-php.com/gter/forum/img/arrows-gray-simple.svg?v=vDmK98808ObK" alt="" />
|
||||
<img @click="nextPage" v-else v-else class="arrows" src="https://framework.x-php.com/gter/forum/img/arrows-gray-deep.svg?v=vDmK98808ObK" alt="" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="sidebar-box" ref="sidebarRef" :style="{'top': sidebarHeight + 'px'}">
|
||||
<hot-search></hot-search>
|
||||
<hot-tag></hot-tag>
|
||||
<slideshow-box></slideshow-box>
|
||||
<latest-list></latest-list>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
|
||||
|
||||
<script src="https://framework.x-php.com/gter/forum/js/vue.global.js?v=vDmK98808ObK"></script>
|
||||
<script src="https://framework.x-php.com/gter/forum/js/axios.min.js?v=vDmK98808ObK"></script>
|
||||
<script src="https://framework.x-php.com/gter/forum/js/public.js?v=vDmK98808ObK"></script>
|
||||
<!-- <script src="https://f.gter.net/js/public.js"></script> -->
|
||||
|
||||
<script type="module" src="/js/search.js?v=vDmK98808ObK"></script>
|
||||
<!-- <script type="module" src="https://f.gter.net/js/search.js"></script> -->
|
||||
|
||||
|
||||
<script src="https://app.gter.net/bottom?tpl=footer,popupnotification"></script>
|
||||
|
||||
<script>
|
||||
console.log(location.href.indexOf('details') != -1);
|
||||
|
||||
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=vDmK98808ObK" /> </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=vDmK98808ObK" /> </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=vDmK98808ObK" /> </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=vDmK98808ObK" /> </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=vDmK98808ObK" /> </a>`
|
||||
console.log(postList);
|
||||
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')
|
||||
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=vDmK98808ObK" /><img class="coin-bj" src="https://framework.x-php.com/gter/forum/img/coin-bj.svg?v=vDmK98808ObK" />
|
||||
<img class="coin-icon" src="https://framework.x-php.com/gter/forum/img/coin-icon.png?v=vDmK98808ObK" /><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=vDmK98808ObK" /> GO
|
||||
</div>
|
||||
<img class="petal1" src="https://framework.x-php.com/gter/forum/img/petal1.png?v=vDmK98808ObK" />
|
||||
<img class="petal2" src="https://framework.x-php.com/gter/forum/img/petal2.png?v=vDmK98808ObK" />
|
||||
<img class="petal3" src="https://framework.x-php.com/gter/forum/img/petal3.png?v=vDmK98808ObK" />
|
||||
</div>
|
||||
<div class="sign-in-already-box">
|
||||
<img class="sign-icon" src="https://framework.x-php.com/gter/forum/img/sign-icon.png?v=vDmK98808ObK" />
|
||||
<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>
|
||||
@@ -200,7 +200,7 @@
|
||||
<div class="text">{{ item.name }}</div>
|
||||
<img class="icon" src="https://framework.x-php.com/gter/forum/img/arrows-circle-red.svg?v=vDmK98808ObK" />
|
||||
</a>
|
||||
<div v-else class="item flexacenter">
|
||||
<div v-else class="item flexacenter" @click.stop="linkClick(item.type)">
|
||||
<div class="text">{{ item.name }}</div>
|
||||
<img class="icon" src="https://framework.x-php.com/gter/forum/img/arrows-circle-red.svg?v=vDmK98808ObK" />
|
||||
<div class="QRcode-box flexcenter">
|
||||
@@ -338,14 +338,14 @@
|
||||
</div>
|
||||
</div>
|
||||
<template v-for="(item,index) in list" :key="index">
|
||||
<item-forum v-if="item.type == 'thread'" :itemdata="item"></item-forum>
|
||||
<!-- <item-offer v-if=" item.type == 'offer'" :itemdata="item"></item-offer>
|
||||
<!-- <item-forum v-if="item.type == 'thread'" :itemdata="item"></item-forum> -->
|
||||
<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> -->
|
||||
<item-forum v-else :itemdata="item"></item-forum>
|
||||
</template>
|
||||
<load-box :loading="loading"></load-box>
|
||||
</div>
|
||||
@@ -459,6 +459,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<huddle-box ref="huddleBoxRef"></huddle-box>
|
||||
<helper-pop ref="helperPopRef"></helper-pop>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -468,7 +471,7 @@
|
||||
<!-- <script src="https://f.gter.net/js/public.js"></script> -->
|
||||
|
||||
|
||||
<script type="module" src="https://framework.x-php.com/gter/forum/js/section.js?v=vDmK98808ObK"></script>
|
||||
<script type="module" src="/js/sectionV2.js"></script>
|
||||
<!-- <script type="module" src="https://f.gter.net/js/section.js"></script> -->
|
||||
<script type="module" src="https://framework.x-php.com/gter/forum/../image/gter/commonCom/sign-in/sign-in.js?v=vDmK98808ObK"></script>
|
||||
|
||||
|
||||