This commit is contained in:
@@ -19,13 +19,9 @@
|
||||
<body id="index">
|
||||
<header>{include file="public/header"}</header>
|
||||
|
||||
<!-- banner -->
|
||||
<!-- banner:去掉图片轮播,仅保留文案轮播 + 右侧地球 -->
|
||||
<section class="section banner">
|
||||
<div class="swiper banner-cont">
|
||||
<div class="swiper-wrapper" id="bannerWrapper"></div>
|
||||
<!-- 如果需要分页器 -->
|
||||
<div class="swiper-pagination"></div>
|
||||
<!-- 固定文案区域,使用第一张轮播图的标题/描述/按钮 -->
|
||||
<div class="banner-cont">
|
||||
<div class="banner-text">
|
||||
<div class="section-content">
|
||||
<div class="banner-copy">
|
||||
@@ -43,7 +39,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="banner-s">
|
||||
<div class="section-content banner-list">
|
||||
<div class="banner-item" id="cloud-box">
|
||||
|
||||
66
js/index.js
66
js/index.js
@@ -30,10 +30,10 @@ $(function () {
|
||||
if (urlParams.recommend_c) {
|
||||
setCookie("recommend_c", urlParams.recommend_c);
|
||||
}
|
||||
}
|
||||
}
|
||||
isRecommend();
|
||||
let bannerSwiper = null;
|
||||
let bannerData = [];
|
||||
let bannerTextTimer = null;
|
||||
|
||||
const updateBannerText = (index) => {
|
||||
if (!Array.isArray(bannerData) || bannerData.length === 0) {
|
||||
@@ -57,59 +57,35 @@ $(function () {
|
||||
}
|
||||
};
|
||||
|
||||
const initBannerSwiper = () => {
|
||||
if (bannerSwiper) {
|
||||
bannerSwiper.destroy(true, true);
|
||||
}
|
||||
bannerSwiper = new Swiper(".swiper", {
|
||||
loop: true,
|
||||
autoplay: true,
|
||||
pagination: {
|
||||
el: ".swiper-pagination",
|
||||
clickable: true,
|
||||
},
|
||||
on: {
|
||||
slideChange: function () {
|
||||
// realIndex 对应原始数据下标
|
||||
updateBannerText(this.realIndex || 0);
|
||||
},
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
const renderBannerSlides = (list = []) => {
|
||||
const wrapper = document.getElementById("bannerWrapper");
|
||||
if (!wrapper) {
|
||||
// 简单的文案轮播(不再使用 Swiper 图片,仅轮播标题/描述/按钮)
|
||||
const startBannerTextLoop = () => {
|
||||
if (!Array.isArray(bannerData) || bannerData.length === 0) {
|
||||
return;
|
||||
}
|
||||
if (!Array.isArray(list) || list.length === 0) {
|
||||
initBannerSwiper();
|
||||
let current = 0;
|
||||
// 初始化先展示第一条
|
||||
updateBannerText(current);
|
||||
// 清理旧定时器
|
||||
if (bannerTextTimer) {
|
||||
clearInterval(bannerTextTimer);
|
||||
bannerTextTimer = null;
|
||||
}
|
||||
// 只有一条时不需要轮播
|
||||
if (bannerData.length === 1) {
|
||||
return;
|
||||
}
|
||||
wrapper.innerHTML = "";
|
||||
list.forEach((item) => {
|
||||
const slide = document.createElement("div");
|
||||
slide.className = "swiper-slide";
|
||||
const targetAttr = item.blank ? "_blank" : "_self";
|
||||
const imgHtml = `<img class="img-responsive img center-block" src="${
|
||||
item.img || ""
|
||||
}" alt="${item.alt || item.title || "banner"}">`;
|
||||
const mediaBlock = item.url
|
||||
? `<a href="${item.url}" target="${targetAttr}">${imgHtml}</a>`
|
||||
: imgHtml;
|
||||
slide.innerHTML = mediaBlock;
|
||||
wrapper.appendChild(slide);
|
||||
});
|
||||
initBannerSwiper();
|
||||
bannerTextTimer = setInterval(() => {
|
||||
current = (current + 1) % bannerData.length;
|
||||
updateBannerText(current);
|
||||
}, 5000);
|
||||
};
|
||||
|
||||
// 设置首页函数
|
||||
function setIndexData() {
|
||||
const commentObj = JSON.parse(sessionStorage.commentData);
|
||||
bannerData = commentObj.banner || [];
|
||||
renderBannerSlides(bannerData);
|
||||
// 初始化时使用第一张轮播图的文案
|
||||
updateBannerText(0);
|
||||
// 仅轮播文案
|
||||
startBannerTextLoop();
|
||||
if (commentObj.honor.length > 0) {
|
||||
commentObj.honor.forEach((item) => {
|
||||
$("#certBox").append(`<div class="cert-item">
|
||||
|
||||
@@ -257,9 +257,9 @@
|
||||
</t-tab-panel>
|
||||
|
||||
<t-tab-panel value="home" label="首页内容">
|
||||
<t-card class="theme-card" title="首页轮播" bordered>
|
||||
<t-card class="theme-card" title="首页轮播文案" bordered>
|
||||
<div v-if="!bannerList.length" class="empty-tip">
|
||||
还没有轮播图,点击下方按钮添加。
|
||||
还没有轮播文案,点击下方按钮添加。
|
||||
</div>
|
||||
<div class="banner-item" v-for="(banner, index) in bannerList" :key="index">
|
||||
<div class="banner-item__header">
|
||||
@@ -277,25 +277,6 @@
|
||||
<label>描述</label>
|
||||
<t-input v-model="banner.description" placeholder="一句宣传语"></t-input>
|
||||
</div>
|
||||
<div class="form-item form-item--full">
|
||||
<label>图片地址</label>
|
||||
<div class="upload-row">
|
||||
<t-input v-model="banner.img" placeholder="/upload/banner.png"></t-input>
|
||||
<t-upload
|
||||
theme="custom"
|
||||
:action="uploadUrl"
|
||||
:headers="uploadHeaders"
|
||||
:format-response="uploadFormatResponse"
|
||||
:show-upload-progress="false"
|
||||
:max="1"
|
||||
@success="(ctx) => handleUpload(['banner', index, 'img'], ctx)"
|
||||
>
|
||||
<t-button size="small" class="ml-10">
|
||||
<t-icon name="upload" size="small" /> 上传
|
||||
</t-button>
|
||||
</t-upload>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>跳转链接</label>
|
||||
<t-input v-model="banner.url" placeholder="/cloud.html"></t-input>
|
||||
|
||||
Reference in New Issue
Block a user