中秋节快乐

This commit is contained in:
Alone
2024-09-14 17:00:49 +08:00
parent 610dee88cd
commit dff1b038b1
4286 changed files with 807503 additions and 6 deletions
+9
View File
@@ -0,0 +1,9 @@
<div class="footerBox">
<div class="box">
<p>{$config.footer_dec|raw}</p>
<p>
{$config.footer_copyright|raw}
<a href="/sitemap.xml" target="_blank">网站地图</a>
</p>
</div>
</div>
+175
View File
@@ -0,0 +1,175 @@
<script src="/static/index/js/vue.global.min.js"></script>
<script src="/static/index/js/index.full.min.js"></script>
<script src="/static/index/js/axios.min.js"></script>
<script>
const { createApp, ref, onMounted, onUnmounted } = Vue;
const { ElButton, ElMessage } = ElementPlus;
const app = createApp({
setup() {
// 定义响应式数据
const elementOpacity = ref(0);
const scrollThreshold = ref(150); // 动态设置的滚动阈值
const keyword = ref('{$keyword??''}');
const qcodeVisible = ref(false);
const layerVisible = ref(false);
const content = ref('');
const load = ref(false)
const drawer = ref(false)
const rankList = ref([]);
const rankDj = ref([]);
const is_m = ref(0);
const newList = ref([]);
// 公共消息方法
const showMessage = (message, type = 'info') => {
ElMessage({
message,
type,
plain: true,
});
};
// 滚动监听方法
const handleScroll = () => {
const scrollTop = window.scrollY || document.documentElement.scrollTop;
elementOpacity.value = scrollTop >= scrollThreshold.value
? Math.min((scrollTop - scrollThreshold.value) / 100, 1)
: Math.max(1 - (scrollThreshold.value - scrollTop) / 100, 0);
const boxElement = document.querySelector('.listBox .screen .fixed .box');
if (boxElement.style.display === 'block' && is_m.value) {
boxElement.style.display = 'none'; // 隐藏元素
}
};
// 搜索按钮点击事件
const searchBtn = () => {
if (!keyword.value) {
return showMessage('请输入你要搜索的内容~', 'error');
}
const currentUrl = window.location.href;
const targetUrl = `/s/${keyword.value}.html`;
if (currentUrl.includes('/s/') || currentUrl.includes('/d/')) {
window.location.href = targetUrl;
} else {
window.open(targetUrl, '_blank');
}
};
// 保存按钮点击事件
const saveBtn = async () => {
if (!content.value) {
return showMessage('请输入你想看的资源信息~', 'error');
}
if (load.value) return;
load.value = true;
try {
const response = await axios.post('/api/tool/feedback', { content: content.value });
showMessage(response.data.message, response.data.code === 200 ? 'success' : 'error');
if (response.data.code === 200) {
layerVisible.value = false;
content.value = '';
}
} finally {
load.value = false;
}
};
const setnum = (num) => (num / 10000).toFixed(2) + 'W';
const goLink = (event,id) => {
event.preventDefault();
window.location.href = `/d/${id}.html`;
}
const changeBtn = (e) => {
const category_id = `{$category_id}`;
if(category_id){
window.location.href = `/s/${keyword.value}-${e}-${category_id}.html`;
}else{
window.location.href = `/s/${keyword.value}-${e}.html`;
}
};
const copyText = async(event,title,url,code) => {
event.preventDefault();
var text = '标题:'+title+'\n链接:'+url
if (code) text += `\n提取码:${code}`;
text += `\n由【${'{$config.app_name}'}${window.location.hostname}】供网盘分享链接`;
try {
// 优先使用 navigator.clipboard
await navigator.clipboard.writeText(text);
showMessage('复制成功', 'success');
} catch (err) {
// 如果 navigator.clipboard 失败,使用 document.execCommand 作为回退
const textArea = document.createElement('textarea');
textArea.value = text;
textArea.style.position = 'fixed'; // 避免滚动
textArea.style.opacity = 0;
document.body.appendChild(textArea);
textArea.focus();
textArea.select();
try {
const successful = document.execCommand('copy');
if (successful) {
showMessage('复制成功', 'success');
} else {
throw new Error('复制失败');
}
} catch (err) {
showMessage('复制失败,请手动复制', 'error');
}
document.body.removeChild(textArea);
}
}
const selectBtn = () => {
const boxElement = document.querySelector('.listBox .screen .fixed .box');
// 切换 display 属性,显示或隐藏
if (boxElement.style.display === 'none' || boxElement.style.display === '') {
boxElement.style.display = 'block'; // 显示
} else {
boxElement.style.display = 'none'; // 隐藏
}
}
const handleDeviceType = () => {
const isMobile = window.matchMedia('(max-width: 768px)').matches;
if (isMobile) {
// 手机端的逻辑
is_m.value = 1
} else {
// 电脑端的逻辑
is_m.value = 0
}
};
// 组件挂载时添加滚动监听
onMounted(() => {
handleDeviceType();
window.addEventListener('scroll', handleScroll);
window.addEventListener('resize', handleDeviceType);
});
// 组件卸载时移除滚动监听
onUnmounted(() => {
window.removeEventListener('scroll', handleScroll);
window.removeEventListener('resize', handleDeviceType);
});
// 返回数据和方法
return { elementOpacity, scrollThreshold, keyword, searchBtn, rankList,newList, setnum, qcodeVisible, layerVisible, content, saveBtn, rankDj,goLink,changeBtn,copyText,drawer,selectBtn,is_m };
}
})
.use(ElementPlus) // 使用 Element Plus
.mount('#app'); // 挂载 Vue 实例
</script>
+71
View File
@@ -0,0 +1,71 @@
<div class="headerBox">
<div class="bg" {notempty name="fixed"}:style="{ opacity: elementOpacity }"{/notempty}></div>
<div class="box">
<a href="/" class="logoBox" {notempty name="fixed"}:style="{ opacity: elementOpacity }"{/notempty}>
{notempty name="config.logo"}
<img class="logo" src="{$config.logo}"></img>
{/notempty}
{if condition="$config.app_name && $config.app_name_hide!=1"}
<div class="title">{$config.app_name}</div>
{/if}
</a>
<div class="search" {notempty name="fixed"}:style="{ opacity: elementOpacity }"{/notempty}>
<input type="text" v-model="keyword" placeholder="输入关键字进行搜索" @keyup.enter="searchBtn" confirm-type="search" @confirm="searchBtn">
<div class="btn" @click="searchBtn">
<i class="iconfont icon-sousuo"></i>
</div>
</div>
<div class="navs">
{notempty name="config.qcode"}
<div class="item" @click="qcodeVisible = true">加入群聊</div>
{/notempty}
{empty name="config.app_demand"}
<div class="item" @click="layerVisible = true">提交需求</div>
{/empty}
<div class="btns" v-html="`{$config.app_links}`"></div>
<div class="iconfont icon-caidan" @click="drawer = true"></div>
</div>
</div>
</div>
<div class="headerKox"></div>
<el-dialog
v-model="qcodeVisible"
width="300"
>
<img src="{$config.qcode}" style="width: 100%" />
</el-dialog>
<el-dialog
v-model="layerVisible"
width="300"
>
<div class="layerBox">
<div class="vname">提交需求</div>
<el-input
v-model="content"
placeholder="请输入你想看的资源信息~"
type="textarea"
resize='none'
></el-input>
<div class="vbtn" @click="saveBtn">提交</div>
</div>
</el-dialog>
<el-dialog
v-model="drawer"
width="300"
center
>
<div class="drawer">
{notempty name="config.qcode"}
<div class="item" @click="qcodeVisible = true">加入群聊</div>
{/notempty}
{empty name="config.app_demand"}
<div class="item" @click="layerVisible = true">提交需求</div>
{/empty}
<div class="btns" v-html="`{$config.app_links}`"></div>
</div>
</el-dialog>
+27
View File
@@ -0,0 +1,27 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
{notempty name="config.app_icon"}
<link rel="icon" href="{$config.app_icon}" />
{/notempty}
<meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width,user-scalable=no,maximum-scale=1.0">
<title>{if condition="isset($detail) && $detail.title"}{$detail.title} - {$config.app_name}{else /}{$config.app_name}{notempty name="$config.app_title"} - {$config.app_title}{/notempty}{/if}</title>
<meta name="keywords" content="{notempty name="detail"}{$detail.title},{/notempty}{$config.app_keywords}" />
<meta name="description" content="{notempty name="detail"}{$detail.title} - {/notempty}{$config.app_description}" />
<link rel="stylesheet" href="/static/index/css/index.min.css">
<link rel="stylesheet" href="/static/index/css/app.css">
<link rel="stylesheet" href="/static/index/css/m.css">
{$config.seo_statistics|raw}
<style>
:root {
--theme-color: {$config.home_color|default='#3e3e3e'};
--theme-theme: {$config.home_theme|default='#133ab3'};
--theme-background: {$config.home_background|default='#fafafa'};
--theme-other_background: {$config.other_background|default='#ffffff'};
}
{$config.home_css}
</style>
+310
View File
@@ -0,0 +1,310 @@
<!DOCTYPE html>
<html dir="ltr" lang="zh">
<head>
<meta charset="utf-8">
<meta name="theme-color" content="#fff">
<meta name="viewport" content="initial-scale=1, minimum-scale=1, width=device-width">
<title>提示</title>
<style>
a {
color: var(--link-color);
}
body {
--background-color: #fff;
--error-code-color: var(--google-gray-700);
--google-blue-100: rgb(210, 227, 252);
--google-blue-300: rgb(138, 180, 248);
--google-blue-600: rgb(26, 115, 232);
--google-blue-700: rgb(25, 103, 210);
--google-gray-100: rgb(241, 243, 244);
--google-gray-300: rgb(218, 220, 224);
--google-gray-500: rgb(154, 160, 166);
--google-gray-50: rgb(248, 249, 250);
--google-gray-600: rgb(128, 134, 139);
--google-gray-700: rgb(95, 99, 104);
--google-gray-800: rgb(60, 64, 67);
--google-gray-900: rgb(32, 33, 36);
--heading-color: var(--google-gray-900);
--primary-button-fill-color-active: var(--google-blue-700);
--primary-button-fill-color: var(--google-blue-600);
--primary-button-text-color: #fff;
--text-color: var(--google-gray-700);
background: var(--background-color);
color: var(--text-color);
word-wrap: break-word;
}
html {
-webkit-text-size-adjust: 100%;
font-size: 125%;
}
.icon {
background-repeat: no-repeat;
background-size: 100%;
}
@media (prefers-color-scheme: dark) {
body.captive-portal,
body.dark-mode-available,
body.neterror,
body.supervised-user-block,
.offline body {
--background-color: var(--google-gray-900);
--error-code-color: var(--google-gray-500);
--heading-color: var(--google-gray-500);
--link-color: var(--google-blue-300);
--primary-button-fill-color-active: rgb(129, 162, 208);
--primary-button-fill-color: var(--google-blue-300);
--primary-button-text-color: var(--google-gray-900);
--text-color: var(--google-gray-500);
}
}
</style>
<style>
button {
border: 0;
border-radius: 4px;
box-sizing: border-box;
color: var(--primary-button-text-color);
cursor: pointer;
float: right;
font-size: .875em;
margin: 0;
padding: 8px 16px;
transition: box-shadow 150ms cubic-bezier(0.4, 0, 0.2, 1);
user-select: none;
}
[dir='rtl'] button {
float: left;
}
.ssl button {
background: var(--primary-button-fill-color);
}
button:active {
background: var(--primary-button-fill-color-active);
outline: 0;
}
h1 {
color: var(--heading-color);
font-size: 1.6em;
font-weight: normal;
line-height: 1.25em;
margin-bottom: 16px;
}
h2 {
font-size: 1.2em;
font-weight: normal;
}
.icon {
height: 72px;
margin: 0 0 40px;
width: 72px;
}
.interstitial-wrapper {
box-sizing: border-box;
font-size: 1em;
line-height: 1.6em;
margin: 14vh auto 0;
max-width: 600px;
width: 100%;
}
#main-message>p {
display: inline;
}
.nav-wrapper {
margin-top: 51px;
}
.nav-wrapper::after {
clear: both;
content: '';
display: table;
width: 100%;
}
@media (max-width: 700px) {
.interstitial-wrapper {
padding: 0 10%;
}
}
@media (max-width: 420px) {
button,
[dir='rtl'] button {
float: none;
font-size: .825em;
font-weight: 500;
margin: 0;
width: 100%;
}
button {
padding: 16px 24px;
}
.interstitial-wrapper {
padding: 0 5%;
}
.nav-wrapper {
margin-top: 30px;
}
}
@media (min-width: 240px) and (max-width: 420px) and (min-height: 401px),
(min-width: 421px) and (min-height: 240px) and (max-height: 560px) {
body .nav-wrapper {
background: var(--background-color);
bottom: 0;
box-shadow: 0 -22px 40px var(--background-color);
left: 0;
margin: 0 auto;
max-width: 736px;
padding-left: 24px;
padding-right: 24px;
position: fixed;
right: 0;
width: 100%;
z-index: 2;
}
.interstitial-wrapper {
max-width: 736px;
}
}
@media (max-width: 420px) and (orientation: portrait),
(max-height: 560px) {
body {
margin: 0 auto;
}
button,
[dir='rtl'] button,
button.small-link {
font-family: Roboto-Regular, Helvetica;
font-size: .933em;
margin: 6px 0;
transform: translatez(0);
}
.nav-wrapper {
box-sizing: border-box;
padding-bottom: 8px;
width: 100%;
}
h1 {
font-size: 1.5em;
margin-bottom: 8px;
}
.icon {
margin-bottom: 5.69vh;
}
.interstitial-wrapper {
box-sizing: border-box;
margin: 7vh auto 12px;
padding: 0 24px;
position: relative;
}
.interstitial-wrapper p {
font-size: .95em;
line-height: 1.61em;
margin-top: 8px;
}
}
@media (min-width: 421px) and (min-height: 500px) and (max-height: 560px) {
.interstitial-wrapper {
margin-top: 10vh;
}
}
@media (min-height: 400px) and (orientation:portrait) {
.interstitial-wrapper {
margin-bottom: 145px;
}
}
@media (min-height: 299px) {
.nav-wrapper {
padding-bottom: 16px;
}
}
@media (min-height: 500px) and (max-height: 650px) and (max-width: 414px) and (orientation: portrait) {
.interstitial-wrapper {
margin-top: 7vh;
}
}
@media (min-height: 650px) and (max-width: 414px) and (orientation: portrait) {
.interstitial-wrapper {
margin-top: 10vh;
}
}
.ssl .icon {
background-image: -webkit-image-set(url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAMAAABiM0N1AAABAlBMVEUAAADcRTfcRDfdRET/gIDcRjr/ZmbjVTncRDfcRTfcRDfdRDzgSTncRDjeSDvcRTjbRDfbRDjeRzvcRjfbRjjcRTjcRTjcRTfdRTfcRDjdRTjcRTjbRDjbRTjbRTjbRTfcRjjdRDrcRjfbRTjZQzfcRDjZRDfZRzbWQzXXRDXXQzbXQzbWQjXYSDvWQjbbRDfOQDPSQTTUQjXCPDDNPzPJPjLGPTHVQjXMPzPRQTTWQjXLPzPDPDHYQzbAOzDTQTXHPTLIPjK8Oi++Oy/FPTHEPTHPQDTQQDTUQTXBPDDKPjK/OzC9Oi/////PQDPRQDS3OS66OS7TQTTEPDHXQjbMPjMBhLaWAAAAL3RSTlMA4tgPAhYFCcL98B4x9ie1+s49WICbqXNKZY3pjuqcgVdLZnL2qKg9zmXpjfontV8LANsAAAJrSURBVHhe7ZTnduIwFAY3ARIgBAg9vW1v173ROylby/u/yso2Fx3MNaxs9h/zAHM+Sfa8+M/s2LFjx+3tdjwH+/sHWxHVAerb8KSyANnUFkRXwLiK78llgJHJxRalwSMd11OGOeV4nsM9FO0dxhJdw4LrOJ6jYy46PoohqgEHatE9JViiFNWTPIElTpIRRXcQ4C6aJ3EJAS4TkUQXsMJFFE++CCsU8xFEBSAoiHsaQNIQ7yuQCFe3DiHUhftKIlzdKoRSFe0r8sXDAkSoumkIigYaIOkIfeWi56EESFm8r1w0fFIl4epWgBA9qOMpmirCfeWijtoa9WSx6taAELFBRl/vilS3BJRIbRk9/VFTsLrifUXRuNfXLU0y/7m6p0CKxqN+v6lJU/k3eJxu7Os5LWKDHi1tYstKG1zON1X3DGiRMR80Mx3fdCbc1+bQe3o2SJrYXcV0fFMxL9xXiz0987BBtux65qaCeF8lHCR3FabBTQ3xvk4M1yN5B/Mw2+urew8hTP1BM38Qnu5evK8gMw+7IcfH9E3ZlEBfMSO//Kf35+Cm6ua+rhbSYDeEa9CUyW3qK1HIjj5DBz8dWd0bWCd6Ult/uMPEr+BmbV/JHrVG/a9MsEybV5fsK50R3frmBFXtCtVXmt73H4PhQ4t9k9rkJ55tYXwZrO4rCEUfPHfUEcuaZC/umw97TfaVpslu2tCb2lRWnBlKFtf+huwrjaa6Pxv7RfgW7nubJPtKI/X0puQO4k/Pfe/ovtLY7KbxVwve0/sE3VeaLosIbkEDvt8Hoq/hKGwQYvoq5OMnoq/hLAbgc/FVn33PX7pAfE5QHR6fAAAAAElFTkSuQmCC) 1x,
url(data:image/png;base64,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) 2x);
}
</style>
</head>
<body id="body" class="ssl extended-reporting-has-checkbox">
<div class="interstitial-wrapper">
<div id="main-content">
<div class="icon" id="icon"></div>
<div id="main-message">
<h1>提示</h1>
<p>{$msg}</p>
</div>
</div>
<div class="nav-wrapper">
<a href="javascript:history.go(-1);"><button id="primary-button">好的,我知道了</button></a>
</div>
</div>
<style>
html {
direction: ltr;
}
body {
font-family: system-ui, PingFang SC, STHeiti, sans-serif;
font-size: 75%;
}
button {
font-family: system-ui, PingFang SC, STHeiti, sans-serif;
}
</style>
</body>
</html>
+29
View File
@@ -0,0 +1,29 @@
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="/assets/uni.4906e6f8.css">
<meta charset="UTF-8" />
<script>
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
CSS.supports('top: constant(a)'))
document.write(
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
(coverSupport ? ', viewport-fit=cover' : '') + '" />')
</script>
<title>心悦搜剧-免费分享百万级网盘资源,致力打造顶尖网盘搜索引擎,让您畅享资源无忧!</title>
<meta name="keywords" content="心悦搜剧、短剧搜索、影视资源、在线短剧">
<meta name="description" content="免费分享百万级网盘资源,致力打造顶尖网盘搜索引擎,让您畅享资源无忧!">
<link rel="icon" href="/assets/logo-DQLPqAxx.png" />
<script src="./static/config.js"></script>
<!--preload-links-->
<!--app-context-->
<script type="module" crossorigin src="/assets/index-CICgbd-2.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-BLVVqZ0m.css">
</head>
<body>
<div id="app"><!--app-html--></div>
<script charset="UTF-8" id="LA_COLLECT" src="//sdk.51.la/js-sdk-pro.min.js"></script>
<script>LA.init({id:"3HsdT1GaTQzE091Y",ck:"3HsdT1GaTQzE091Y",hashMode:true})</script>
</body>
</html>
+15
View File
@@ -0,0 +1,15 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<div>
<h4>【{$day} | 短剧每日更新】</h4>
{volist name="list" id="vo"}
{$key+1}、{$vo.title}<br/>
{/volist}
<br/>
</div>
</body>
</html>
+123
View File
@@ -0,0 +1,123 @@
{include file="common/header"}
</head>
<body>
<div class="headBg" style="background-image: url({$config.home_bg});"></div>
<div id="app" v-cloak>
{include file="common/head"}
<div class="searchBox searchDetail">
<div class="search">
<input type="text" v-model="keyword" placeholder="输入关键字进行搜索" @keyup.enter="searchBtn" confirm-type="search" @confirm="searchBtn">
<div class="btn" @click="searchBtn">
<i class="iconfont icon-sousuo"></i>
</div>
</div>
</div>
<div class="listBox detailBox">
<div class="left">
<h3>详情</h3>
<div class="box details">
{notempty name="detail.vod_pic"}
<div class="pic">
<img src="{$detail.vod_pic}" />
</div>
{/notempty}
<div class="title">{$detail.title}</div>
<div class="cat">
<div class="l">资源分类</div>
<div class="r">
{if condition="$detail.category && $detail.category.name"}
{$detail.category.name}
{else /}
其它
{/if}
</div>
</div>
<div class="cat">
<div class="l">资源描述</div>
<div class="r">
{if condition="$detail.vod_content"}
{$detail.vod_content}
{else /}
-
{/if}
</div>
</div>
<div class="cat">
<div class="l">更新时间</div>
<div class="r">{$detail.times}</div>
</div>
<div class="cat">
<div class="l">资源类型</div>
<div class="r">
<img src="/static/index/images/{$detail.is_type}.png" class="icon" />
{if condition="$detail.is_type==1"}
<span>阿里云盘</span>
{elseif condition="$detail.is_type==2"/}
<span>百度网盘</span>
{elseif condition="$detail.is_type==3"/}
<span>UC网盘</span>
{elseif condition="$detail.is_type==4"/}
<span>迅雷网盘</span>
{else /}
<span>夸克网盘</span>
{/if}
</div>
</div>
<div class="cat">
<div class="l">资源地址</div>
<div class="r">
<a href="{$detail.url}" target="_blank">{$detail.url}</a>
</div>
</div>
{notempty name="detail.code"}
<div class="cat">
<div class="l">提取码</div>
<div class="r" style="color: #FF3F3D;">{$detail.code}</div>
</div>
{/notempty}
<div class="btns">
<div class="btn btnCol" @click.stop="copyText($event,'{$detail.title}','{$detail.url}','{$detail.code}')"><i class="iconfont icon-fenxiang1"></i>复制分享</div>
<a href="{$detail.url}" target="_blank" class="btn"><i class="iconfont icon-yun_o"></i>立即访问</a>
</div>
</div>
</div>
<div class="right">
<block v-for="(item,index) in rankList" :key="index">
<div class="nav">
<img :src="item.image" v-if="item.image">
{{item.name}}
</div>
<div class="box" v-if="item.list && item.list.length>0">
<div class="list">
<a :href="'/s/'+vo.title+'.html'" v-for="(vo,i) in item.list" :key="i" class="item" v-show="i<5">
<p>
<span>{{i+1}}</span>
{{vo.title}}
</p>
</a>
</div>
</div>
</block>
</div>
</div>
{include file="common/foot"}
</div>
{include file="common/footer"}
<script type="text/javascript" charset="utf-8">
if(!app.is_m){
app.rankList = JSON.parse('<?php echo json_encode($rankList, JSON_UNESCAPED_UNICODE); ?>');
for (const item of app.rankList) {
axios.get('/api/tool/ranking',{
params: {
channel: item.name,
is_m: app.is_m
}
})
.then(function (res) {
item.list = res.data.data
})
}
}
</script>
</body>
</html>
+113
View File
@@ -0,0 +1,113 @@
{include file="common/header"}
</head>
<body>
<div class="headBg" style="background-image: url({$config.home_bg});"></div>
<div id="app" v-cloak>
{include file="common/head"}
<div class="homeBox searchBox">
<div class="box">
<div class="logoBox">
{notempty name="config.logo"}
<img class="logo" src="{$config.logo}"></img>
{/notempty}
{if condition="$config.app_name && $config.app_name_hide!=1"}
<span class="title">{$config.app_name}</span>
{/if}
</div>
{notempty name="config.app_subname"}
<div class="subTitle">{$config.app_subname}</div>
{/notempty}
<div class="search">
<input type="text" v-model="keyword" placeholder="输入关键字进行搜索" @keyup.enter="searchBtn" confirm-type="search" @confirm="searchBtn">
<div class="btn" @click="searchBtn">
<i class="iconfont icon-sousuo"></i>
</div>
</div>
</div>
<div class="home {if $config.ranking_type != 1}homeNO{/if}">
<div class="block" v-if="newList.length>0">
<div class="nav">
{notempty name="config.home_new_img"}
<img src="{$config.home_new_img}"></img>
{/notempty}
最新更新
</div>
<div class="content">
{if $config.ranking_type == 1 }
<div class="list">
<a :href="'/s/'+vo.title+'.html'" target="_blank" class="item" v-for="(vo,i) in newList" :key="i">
<div class="img">
<img :src="vo.src" />
<span>Loading...</span>
</div>
<p>{{vo.title}}</p>
</a>
</div>
{else /}
<div class="list">
<a :href="'/s/'+vo.title+'.html'" target="_blank" class="item" v-for="(vo,i) in newList" :key="i">
<p>
<span>{{i+1}}</span>
{{vo.title}}
</p>
</a>
</div>
{/if}
</div>
</div>
<div class="block" v-for="(item,index) in rankList" :key="index">
<div class="nav">
<img :src="item.image" v-if="item.image">
{{item.name}}
</div>
<div class="content">
{if $config.ranking_type == 1 }
<div class="list">
<a :href="'/s/'+vo.title+'.html'" target="_blank" class="item" v-for="(vo,i) in item.list" :key="i">
<div class="img">
<img :src="vo.src" />
<span>Loading...</span>
</div>
<p>{{vo.title}}</p>
</a>
</div>
{else /}
<div class="list">
<a :href="'/s/'+vo.title+'.html'" target="_blank" class="item" v-for="(vo,i) in item.list" :key="i">
<p>
<span>{{i+1}}</span>
{{vo.title}}
</p>
</a>
</div>
{/if}
</div>
</div>
</div>
</div>
{include file="common/foot"}
</div>
{include file="common/footer"}
<script type="text/javascript" charset="utf-8">
app.newList = JSON.parse('<?php echo json_encode($newList, JSON_UNESCAPED_UNICODE); ?>');
let num = '{$config.ranking_m_num}';
if(app.is_m){
app.newList = app.newList.slice(0, num);
}
app.rankList = JSON.parse('<?php echo json_encode($rankList, JSON_UNESCAPED_UNICODE); ?>');
for (const item of app.rankList) {
axios.get('/api/tool/ranking',{
params: {
channel: item.name,
is_m: app.is_m
}
})
.then(function (res) {
item.list = res.data.data
})
}
</script>
</body>
</html>
+121
View File
@@ -0,0 +1,121 @@
{include file="common/header"}
</head>
<body>
<div class="headBg" style="background-image: url({$config.home_bg});"></div>
<div id="app" v-cloak>
{include file="common/head"}
<div class="searchBox searchList">
<div class="search">
<div class="select" @click="selectBtn">
{if condition="$category_id == ''"}全部{/if}
{foreach $category as $key=>$vo }
{if condition='$category_id == $vo.id'}{$vo.name}{/if}
{/foreach}
<i class="iconfont icon-xiala" style="font-size: 3vw"></i>
</div>
<input type="text" v-model="keyword" placeholder="输入关键字进行搜索" @keyup.enter="searchBtn" confirm-type="search" @confirm="searchBtn">
<div class="btn" @click="searchBtn">
<i class="iconfont icon-sousuo"></i>
</div>
</div>
</div>
<div class="listBox">
<div class="screen">
<div class="fixed">
<h3>筛选</h3>
<div class="box">
<a href="/s/{$keyword}.html" class="{eq name="category_id" value=""}active{/eq}">全部</a>
{foreach $category as $key=>$vo }
<a href="/s/{$keyword}-1-{$vo.id}.html" class="{if condition='$category_id == $vo.id'}active{/if}">{$vo.name}</a>
{/foreach}
</div>
</div>
</div>
<div class="left">
<h3>为您找到【<span>{$keyword}</span>】相关资源<span> {$list.total_result} </span></h3>
<div class="box">
{if condition="$list.total_result>0"}
<div class="list">
{foreach $list.items as $key=>$vo }
<a class="item" target="_blank" href="{$vo.url}">
<div class="title">
{$vo.name|raw}
</div>
<div class="type time">{$vo.times}</div>
<div class="type">
{if condition="$vo.is_type==1"}
<span>来源:阿里云盘</span>
{elseif condition="$vo.is_type==2"/}
<span>来源:百度网盘</span>
{elseif condition="$vo.is_type==3"/}
<span>来源:UC网盘</span>
{elseif condition="$vo.is_type==4"/}
<span>来源:迅雷网盘</span>
{else /}
<span>来源:夸克网盘</span>
{/if}
{notempty name="vo.code"}
<span>提取码:<span>{$vo.code}</span></span>
{/notempty}
</div>
<div class="btns">
<div class="btn" @click.stop="copyText($event,'{$vo.title}','{$vo.url}','{$vo.code}')"><i class="iconfont icon-fenxiang1"></i>复制分享</div>
<div class="btn" @click.stop="goLink($event,'{$vo.id}')"><i class="iconfont icon-fangwen"></i>查看详情</div>
<div class="btn">
<img src="/static/index/images/{$vo.is_type}.png" class="icon" />
立即访问
</div>
</div>
</a>
{/foreach}
</div>
<div class="page">
{notempty name="list.total_result"}
<el-pagination background layout="prev, pager, next" :pager-count="3" :default-current-page="{$page_no}" :default-page-size="{$page_size}" :total="{$list.total_result}" @change="changeBtn"></el-pagination>
{/notempty}
</div>
{else /}
<el-empty style="margin-top: 10%;" :image-size="200" image="{$config.search_bg??''}" description="{$config.search_tips|default='未找到,可换个关键词尝试哦~'}"></el-empty>
{/if}
</div>
</div>
<div class="right">
<block v-for="(item,index) in rankList" :key="index">
<div class="nav">
<img :src="item.image" v-if="item.image">
{{item.name}}
</div>
<div class="box" v-if="item.list && item.list.length>0">
<div class="list">
<a :href="'/s/'+vo.title+'.html'" v-for="(vo,i) in item.list" :key="i" class="item" v-show="i<5">
<p>
<span>{{i+1}}</span>
{{vo.title}}
</p>
</a>
</div>
</div>
</block>
</div>
</div>
{include file="common/foot"}
</div>
{include file="common/footer"}
<script type="text/javascript" charset="utf-8">
// if(!app.is_m){
app.rankList = JSON.parse('<?php echo json_encode($rankList, JSON_UNESCAPED_UNICODE); ?>');
for (const item of app.rankList) {
axios.get('/api/tool/ranking',{
params: {
channel: item.name,
is_m: app.is_m
}
})
.then(function (res) {
item.list = res.data.data
})
}
// }
</script>
</body>
</html>