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 { itemBottom } = await import(withVer("../item-bottom/item-bottom.js"));
|
||||||
// const { itemHead } = await import(withVer("../item-head/item-head.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 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({
|
export const itemMj = defineComponent({
|
||||||
|
|||||||
340
css/public.css
@@ -57,7 +57,6 @@ body {
|
|||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
padding: 18px 20px 0;
|
padding: 18px 20px 0;
|
||||||
display: block;
|
display: block;
|
||||||
overflow: hidden;
|
|
||||||
}
|
}
|
||||||
.item-box .item-head {
|
.item-box .item-head {
|
||||||
margin-bottom: 14px;
|
margin-bottom: 14px;
|
||||||
@@ -2184,3 +2183,342 @@ td {
|
|||||||
padding: 0 5px;
|
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;
|
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 {
|
#search-tag .label-title .icon {
|
||||||
width: 25px;
|
width: 25px;
|
||||||
height: 20px;
|
|
||||||
margin-right: 12px;
|
margin-right: 12px;
|
||||||
}
|
}
|
||||||
#search-tag .label-title .text {
|
#search-tag .label-title .text {
|
||||||
@@ -65,6 +64,63 @@
|
|||||||
color: #000000;
|
color: #000000;
|
||||||
margin: 0 10px;
|
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 {
|
#search-tag .matter {
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
}
|
}
|
||||||
@@ -131,3 +187,31 @@
|
|||||||
right: calc((100% - 1200px) / 2);
|
right: calc((100% - 1200px) / 2);
|
||||||
bottom: 10px;
|
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 {
|
.icon {
|
||||||
width: 25px;
|
width: 25px;
|
||||||
height: 20px;
|
// height: 20px;
|
||||||
margin-right: 12px;
|
margin-right: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,6 +74,74 @@
|
|||||||
color: #000000;
|
color: #000000;
|
||||||
margin: 0 10px;
|
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 {
|
.matter {
|
||||||
@@ -154,6 +222,37 @@
|
|||||||
right: calc((100% - 1200px) / 2);
|
right: calc((100% - 1200px) / 2);
|
||||||
bottom: 10px;
|
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;
|
border: none;
|
||||||
outline: none;
|
outline: none;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
font-size: 16px;
|
||||||
}
|
}
|
||||||
#search .search-box .search-icon {
|
#search .search-box .search-icon {
|
||||||
width: 20px;
|
width: 20px;
|
||||||
@@ -126,3 +127,46 @@
|
|||||||
width: 291px;
|
width: 291px;
|
||||||
position: sticky;
|
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;
|
border: none;
|
||||||
outline: none;
|
outline: none;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
font-size: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.search-icon {
|
.search-icon {
|
||||||
@@ -161,6 +162,58 @@
|
|||||||
// left: calc((100% - 1200px) / 2 + 909px);
|
// left: calc((100% - 1200px) / 2 + 909px);
|
||||||
// bottom: 10px;
|
// 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 {
|
#sectionIndex .matter .sidebar {
|
||||||
display: none;
|
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 {
|
.matter-content {
|
||||||
|
min-width: 0;
|
||||||
|
|
||||||
.info-box {
|
.info-box {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background: -webkit-linear-gradient(270.539085289936deg, rgba(255, 255, 255, 1) 2%, rgba(235, 248, 249, 1) 98%);
|
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;
|
margin-right: 12px;
|
||||||
position: sticky;
|
position: sticky;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
|
min-width: 0;
|
||||||
|
|
||||||
.selectives-box {
|
.selectives-box {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -473,4 +476,38 @@
|
|||||||
#sectionIndex .matter .sidebar {
|
#sectionIndex .matter .sidebar {
|
||||||
display: none;
|
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>
|
||||||
@@ -41,6 +41,10 @@ const watchList = {
|
|||||||
// 监听 bi.txt,同步到 bi.js
|
// 监听 bi.txt,同步到 bi.js
|
||||||
"../component/bi/bi.txt": "../component/bi/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路径')
|
// 可添加更多文件(格式:'txt路径': 'js路径')
|
||||||
// './component/other/other.txt': './component/other/other.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;
|
const { createApp, ref, onMounted, nextTick, onUnmounted, computed, watch, provide } = Vue;
|
||||||
import { itemForum } from "../component/item-forum/item-forum.js";
|
(async function () {
|
||||||
import { itemOffer } from "../component/item-offer/item-offer.js";
|
const { itemForum } = await import(withVer("../component/item-forum/item-forum.js"));
|
||||||
import { itemSummary } from "../component/item-summary/item-summary.js";
|
const { itemOffer } = await import(withVer("../component/item-offer/item-offer.js"));
|
||||||
import { itemVote } from "../component/item-vote/item-vote.js";
|
const { itemSummary } = await import(withVer("../component/item-summary/item-summary.js"));
|
||||||
import { itemMj } from "../component/item-mj/item-mj.js";
|
const { itemVote } = await import(withVer("../component/item-vote/item-vote.js"));
|
||||||
import { itemTenement } from "../component/item-tenement/item-tenement.js";
|
const { itemMj } = await import(withVer("../component/item-mj/item-mj.js"));
|
||||||
import { itemProject } from "../component/item-project/item-project.js";
|
const { itemTenement } = await import(withVer("../component/item-tenement/item-tenement.js"));
|
||||||
import { headTop } from "../component/head-top/head-top.js";
|
const { itemProject } = await import(withVer("../component/item-project/item-project.js"));
|
||||||
import { hotTag } from "../component/hot-tag/hot-tag.js";
|
const { headTop } = await import(withVer("../component/head-top/head-top.js"));
|
||||||
import { hotSearch } from "../component/hot-search/hot-search.js";
|
const { hotTag } = await import(withVer("../component/hot-tag/hot-tag.js"));
|
||||||
import { slideshowBox } from "../component/slideshow-box/slideshow-box.js";
|
const { hotSearch } = await import(withVer("../component/hot-search/hot-search.js"));
|
||||||
import { latestList } from "../component/latest-list/latest-list.js";
|
const { slideshowBox } = await import(withVer("../component/slideshow-box/slideshow-box.js"));
|
||||||
import { loadBox } from "../component/load-box/load-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({
|
const appSearch = createApp({
|
||||||
setup() {
|
setup() {
|
||||||
let kwValue = ref(null);
|
let kwValue = ref(null);
|
||||||
let typeValue = ref(null);
|
let typeValue = ref(null);
|
||||||
let kw = ref("");
|
let kw = ref("");
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
const params = getUrlParams();
|
console.log('onMounted');
|
||||||
console.log("params", params);
|
const params = getUrlParams();
|
||||||
// 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;
|
|
||||||
|
|
||||||
if (kw.value) getList();
|
kw.value = kwValue.value.innerText;
|
||||||
else page.value = null;
|
const tab = typeValue.value.innerText;
|
||||||
|
if (tab) tabValue.value = tab;
|
||||||
|
if (params.page) page.value = params.page;
|
||||||
|
else page.value = 1;
|
||||||
|
|
||||||
getUserInfoWin();
|
console.log("kw.value", kw.value);
|
||||||
|
if (kw.value) getList();
|
||||||
window.addEventListener("scroll", handleScroll);
|
else {
|
||||||
});
|
page.value = null;
|
||||||
|
isEmptySearch.value = true;
|
||||||
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("res", res);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
let loading = ref(false);
|
getUserInfoWin();
|
||||||
let page = ref(0);
|
|
||||||
let maxPage = ref(0);
|
window.addEventListener("scroll", handleScroll);
|
||||||
let count = ref(0);
|
|
||||||
let list = ref([]);
|
const preLoader = document.getElementById("pre-loader");
|
||||||
let pagination = ref([]);
|
if (preLoader) preLoader.style.display = "none";
|
||||||
const getList = () => {
|
});
|
||||||
if (loading.value || page.value == null) return;
|
|
||||||
loading.value = true;
|
let isLogin = ref(false);
|
||||||
const limit = 20;
|
let realname = ref(0); // 是否已经实名
|
||||||
window.scrollTo(0, 0);
|
let userInfoWin = ref({});
|
||||||
updateUrlParams({ page: page.value });
|
|
||||||
ajaxGet(`/v2/api/forum/topicLists?type=${tabValue.value == "all" ? "" : tabValue.value}&page=${page.value}&limit=${limit}&keyword=${kw.value}`)
|
let permissions = ref([]);
|
||||||
.then((res) => {
|
|
||||||
|
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) {
|
if (res.code != 200) {
|
||||||
creationAlertBox("error", res.message);
|
creationAlertBox("error", res.message);
|
||||||
|
page.value = 0;
|
||||||
return;
|
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) => {
|
let loading = ref(false);
|
||||||
// 处理特殊情况:总页数小于等于1时,无需显示分页
|
let page = ref(0);
|
||||||
if (totalPages <= 1) {
|
let maxPage = ref(0);
|
||||||
return [];
|
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 = [];
|
let postHead = null;
|
||||||
// 始终显示第一页
|
|
||||||
pages.push(1);
|
|
||||||
|
|
||||||
// 计算中间需要显示的页码范围
|
if (tabValue.value == "xg") {
|
||||||
let startPage = Math.max(2, currentPage - Math.floor(visibleCount / 2));
|
postHead = ajax(`https://api.gter.net/v1/program/getList`, {
|
||||||
let endPage = Math.min(totalPages - 1, startPage + visibleCount - 1);
|
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}`);
|
||||||
|
|
||||||
// 调整起始页码,确保显示足够数量的页码
|
let historySearchList = JSON.parse(localStorage.getItem("history-search")) || [];
|
||||||
startPage = Math.max(2, endPage - visibleCount + 1);
|
historySearchList.unshift(kw.value);
|
||||||
|
historySearchList = [...new Set(historySearchList)];
|
||||||
|
if (historySearchList.length > 10) historySearchList = historySearchList.splice(0, 10);
|
||||||
|
localStorage.setItem("history-search", JSON.stringify(historySearchList));
|
||||||
|
|
||||||
// 前面的省略号:如果第一页和起始页之间有间隔
|
postHead
|
||||||
if (startPage > 2) {
|
.then((res) => {
|
||||||
pages.push("...");
|
if (res.code != 200) {
|
||||||
}
|
creationAlertBox("error", res.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// 添加中间的页码
|
let data = res.data;
|
||||||
for (let i = startPage; i <= endPage; i++) {
|
list.value = data.data;
|
||||||
pages.push(i);
|
if (list.value.length == 0) page.value = null;
|
||||||
}
|
|
||||||
|
|
||||||
// 后面的省略号:如果最后一页和结束页之间有间隔
|
total.value = data.total || data.count;
|
||||||
if (endPage < totalPages - 1) {
|
count.value = data.count;
|
||||||
pages.push("...");
|
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)
|
const calculatePagination = (currentPage, totalPages, visibleCount = 3) => {
|
||||||
if (totalPages > 1) {
|
// 处理特殊情况:总页数小于等于1时,无需显示分页
|
||||||
pages.push(totalPages);
|
if (totalPages <= 1) {
|
||||||
}
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
return pages;
|
const pages = [];
|
||||||
};
|
// 始终显示第一页
|
||||||
|
pages.push(1);
|
||||||
|
|
||||||
const cutPage = (value) => {
|
// 计算中间需要显示的页码范围
|
||||||
if (value == "...") return;
|
let startPage = Math.max(2, currentPage - Math.floor(visibleCount / 2));
|
||||||
if (value == page.value) return;
|
let endPage = Math.min(totalPages - 1, startPage + visibleCount - 1);
|
||||||
page.value = value;
|
|
||||||
list.value = [];
|
|
||||||
getList();
|
|
||||||
};
|
|
||||||
|
|
||||||
const prevPage = () => {
|
// 调整起始页码,确保显示足够数量的页码
|
||||||
page.value -= 1;
|
startPage = Math.max(2, endPage - visibleCount + 1);
|
||||||
list.value = [];
|
|
||||||
pagination.value = [];
|
|
||||||
getList();
|
|
||||||
};
|
|
||||||
|
|
||||||
const nextPage = () => {
|
// 前面的省略号:如果第一页和起始页之间有间隔
|
||||||
page.value += 1;
|
if (startPage > 2) {
|
||||||
list.value = [];
|
pages.push("...");
|
||||||
pagination.value = [];
|
}
|
||||||
getList();
|
|
||||||
};
|
|
||||||
|
|
||||||
const startSearch = () => {
|
// 添加中间的页码
|
||||||
if (kw.value == "") {
|
for (let i = startPage; i <= endPage; i++) {
|
||||||
creationAlertBox("error", "请输入搜索关键词");
|
pages.push(i);
|
||||||
return;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
page.value = 1;
|
// 后面的省略号:如果最后一页和结束页之间有间隔
|
||||||
list.value = [];
|
if (endPage < totalPages - 1) {
|
||||||
count.value = 0;
|
pages.push("...");
|
||||||
pagination.value = [];
|
}
|
||||||
getList();
|
|
||||||
};
|
|
||||||
|
|
||||||
const sidebarFixed = ref(false);
|
// 始终显示最后一页(如果总页数大于1)
|
||||||
const matterFixed = ref(false);
|
if (totalPages > 1) {
|
||||||
const matterBottom = ref(false);
|
pages.push(totalPages);
|
||||||
|
}
|
||||||
|
|
||||||
const handleScroll = () => {
|
return pages;
|
||||||
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 cutPage = (value) => {
|
||||||
const sidebarRef = ref(null);
|
if (value == "...") return;
|
||||||
const matterContentRef = ref(null);
|
if (value == page.value) return;
|
||||||
|
page.value = value;
|
||||||
|
list.value = [];
|
||||||
|
getList();
|
||||||
|
};
|
||||||
|
|
||||||
let sidebarHeight = ref(0);
|
const prevPage = () => {
|
||||||
let matterHeight = ref(0);
|
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 };
|
const nextPage = () => {
|
||||||
},
|
page.value += 1;
|
||||||
});
|
list.value = [];
|
||||||
appSearch.component("item-forum", itemForum);
|
pagination.value = [];
|
||||||
appSearch.component("itemOffer", itemOffer);
|
getList();
|
||||||
appSearch.component("itemSummary", itemSummary);
|
};
|
||||||
appSearch.component("itemVote", itemVote);
|
|
||||||
appSearch.component("itemMj", itemMj);
|
const startSearch = () => {
|
||||||
appSearch.component("itemTenement", itemTenement);
|
if (kw.value == "") {
|
||||||
appSearch.component("itemProject", itemProject);
|
creationAlertBox("error", "请输入搜索关键词");
|
||||||
appSearch.component("head-top", headTop);
|
return;
|
||||||
appSearch.component("hot-tag", hotTag);
|
}
|
||||||
appSearch.component("hot-search", hotSearch);
|
|
||||||
appSearch.component("slideshow-box", slideshowBox);
|
page.value = 1;
|
||||||
appSearch.component("latest-list", latestList);
|
list.value = [];
|
||||||
appSearch.component("load-box", loadBox);
|
count.value = 0;
|
||||||
appSearch.mount("#search");
|
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>
|
<div class="text">{{ item.name }}</div>
|
||||||
<img class="icon" src="https://framework.x-php.com/gter/forum/img/arrows-circle-red.svg?v=vDmK98808ObK" />
|
<img class="icon" src="https://framework.x-php.com/gter/forum/img/arrows-circle-red.svg?v=vDmK98808ObK" />
|
||||||
</a>
|
</a>
|
||||||
<div v-else class="item flexacenter">
|
<div v-else class="item flexacenter" @click.stop="linkClick(item.type)">
|
||||||
<div class="text">{{ item.name }}</div>
|
<div class="text">{{ item.name }}</div>
|
||||||
<img class="icon" src="https://framework.x-php.com/gter/forum/img/arrows-circle-red.svg?v=vDmK98808ObK" />
|
<img class="icon" src="https://framework.x-php.com/gter/forum/img/arrows-circle-red.svg?v=vDmK98808ObK" />
|
||||||
<div class="QRcode-box flexcenter">
|
<div class="QRcode-box flexcenter">
|
||||||
@@ -338,14 +338,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<template v-for="(item,index) in list" :key="index">
|
<template v-for="(item,index) in list" :key="index">
|
||||||
<item-forum v-if="item.type == 'thread'" :itemdata="item"></item-forum>
|
<!-- <item-forum v-if="item.type == 'thread'" :itemdata="item"></item-forum> -->
|
||||||
<!-- <item-offer v-if=" item.type == 'offer'" :itemdata="item"></item-offer>
|
<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-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-vote v-else-if="item.type == 'vote'" :itemdata="item"></item-vote>
|
||||||
<item-mj v-else-if="item.type == 'interviewexperience'" :itemdata="item"></item-mj>
|
<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-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-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>
|
</template>
|
||||||
<load-box :loading="loading"></load-box>
|
<load-box :loading="loading"></load-box>
|
||||||
</div>
|
</div>
|
||||||
@@ -459,6 +459,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<huddle-box ref="huddleBoxRef"></huddle-box>
|
||||||
|
<helper-pop ref="helperPopRef"></helper-pop>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
@@ -468,7 +471,7 @@
|
|||||||
<!-- <script src="https://f.gter.net/js/public.js"></script> -->
|
<!-- <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://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>
|
<script type="module" src="https://framework.x-php.com/gter/forum/../image/gter/commonCom/sign-in/sign-in.js?v=vDmK98808ObK"></script>
|
||||||
|
|
||||||
|
|||||||