Files
BlackFruit-UI/js/index.js
yiqiu 587ee8f99e
All checks were successful
continuous-integration/drone/push Build is passing
sfgsd
2025-11-22 00:41:38 +08:00

310 lines
9.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
$(function () {
// 获取url地址栏参数函数
function getUrlParams() {
const url = window.location.href;
// 判断是否有参数
if (url.indexOf("?") === -1) {
return {};
}
const params = url.split("?")[1];
const paramsArr = params.split("&");
const paramsObj = {};
paramsArr.forEach((item) => {
const key = item.split("=")[0];
const value = item.split("=")[1];
// 解析中文
paramsObj[key] = decodeURI(value);
});
return paramsObj;
}
//设置cookie
function setCookie(c_name, value, expiredays = 1) {
const exdate = new Date();
exdate.setDate(exdate.getDate() + expiredays);
document.cookie =
c_name + "=" + value + (";expires=" + exdate.toGMTString());
}
// 判断首页是否为推荐页面
function isRecommend() {
const urlParams = getUrlParams();
if (urlParams.recommend_c) {
setCookie("recommend_c", urlParams.recommend_c);
}
}
isRecommend();
let bannerData = [];
let bannerTextTimer = null;
const updateBannerText = (index) => {
if (!Array.isArray(bannerData) || bannerData.length === 0) {
return;
}
const idx = index >= 0 && index < bannerData.length ? index : 0;
const item = bannerData[idx] || {};
// 标签渲染:标题上方的小块标签
const $tagsWrap = $("#bannerTags");
if ($tagsWrap.length) {
$tagsWrap.empty();
const rawTags = item.tags || "";
const tags = rawTags
.split(/[,]/)
.map((t) => t.trim())
.filter((t) => t);
tags.forEach((tag) => {
$tagsWrap.append(
`<span class="banner-tag-pill">${tag}</span>`
);
});
if (tags.length === 0) {
$tagsWrap.hide();
} else {
$tagsWrap.show();
}
}
$("#bannerTitle").text(item.title || "");
$("#bannerDesc").text(item.description || "");
const $btn = $("#bannerButton");
if (item.button_text) {
const link = item.button_link || item.url || "javascript:;";
const target = item.button_blank ? "_blank" : "_self";
$btn
.text(item.button_text)
.attr("href", link)
.attr("target", target)
.show();
} else {
$btn.hide();
}
};
// 简单的文案轮播(不再使用 Swiper 图片,仅轮播标题/描述/按钮)
const startBannerTextLoop = () => {
if (!Array.isArray(bannerData) || bannerData.length === 0) {
return;
}
let current = 0;
// 初始化先展示第一条
updateBannerText(current);
// 清理旧定时器
if (bannerTextTimer) {
clearInterval(bannerTextTimer);
bannerTextTimer = null;
}
// 只有一条时不需要轮播
if (bannerData.length === 1) {
return;
}
bannerTextTimer = setInterval(() => {
current = (current + 1) % bannerData.length;
// 淡入动画:先让文案透明,再渐显
const $copy = $(".banner-copy");
$copy
.stop(true, true)
.css({ opacity: 0 })
.animate({ opacity: 1 }, 400);
updateBannerText(current);
}, 5000);
};
// 设置首页函数
function setIndexData() {
const commentObj = JSON.parse(sessionStorage.commentData);
bannerData = commentObj.banner || [];
// 仅轮播文案
startBannerTextLoop();
if (commentObj.honor.length > 0) {
commentObj.honor.forEach((item) => {
$("#certBox").append(`<div class="cert-item">
<img src=${item.img} alt="">
<p class="mt-20">${item.name}</p>
</div>`);
});
}
if (commentObj.partner.length > 0 && commentObj.partner.length <= 3) {
commentObj.partner.forEach((item) => {
$("#practiceBox").append(`<div class="practice-box">
<img src="${item.img}" alt="">
<div class="mt-10">${item.description}</div>
<p class="tr font-grey mt-20 font12">${item.name}</p>
</div>`);
});
} else if (commentObj.partner.length > 3) {
const arr1 = commentObj.partner.slice(0, 3);
const arr2 = commentObj.partner.slice(3);
arr1.forEach((item) => {
$("#practiceBox").append(`<div class="practice-box">
<img src="${item.img}" alt="">
<div class="mt-10">${item.description}</div>
<p class="tr font-grey mt-20 font12">${item.name}</p>
</div>`);
});
$("#morPracticeBox").attr("style", "display: flex;");
arr2.forEach((item) => {
$("#morPracticeBox").append(` <div class="brand-box">
<img src="${item.img}" alt="">
</div>`);
});
}
}
// 获取通用配置信息(首页:先用 /console/v1/common再用插件配置覆盖后渲染荣誉/合作伙伴)
function getCommentInfo() {
$.ajax({
url: "/console/v1/common",
method: "get",
headers: {
Authorization: "Bearer" + " " + localStorage.jwt,
},
success: function (res) {
if (!res || res.status !== 200 || !res.data) {
return;
}
var baseData = res.data || {};
$.ajax({
url: "/console/v1/theme/config",
method: "get",
headers: {
Authorization: "Bearer" + " " + localStorage.jwt,
},
success: function (pluginRes) {
if (pluginRes && pluginRes.status === 200 && pluginRes.data) {
var cfg = pluginRes.data || {};
// 仅覆盖首页会用到的字段honor/partner/banner/friendly_link 等
if (cfg.honor) {
baseData.honor = cfg.honor;
}
if (cfg.partner) {
baseData.partner = cfg.partner;
}
if (cfg.banner) {
baseData.banner = cfg.banner;
}
if (cfg.friendly_link) {
baseData.friendly_link = cfg.friendly_link;
}
}
sessionStorage.commentData = JSON.stringify(baseData);
setIndexData();
},
error: function () {
sessionStorage.commentData = JSON.stringify(baseData);
setIndexData();
},
});
},
});
}
// 获取首页数据
getCommentInfo();
var viewer = new Viewer(document.getElementById("viewer"), {
button: true,
inline: false,
zoomable: true,
title: true,
tooltip: true,
minZoomRatio: 0.5,
maxZoomRatio: 100,
movable: true,
interval: 2000,
navbar: true,
loading: true,
});
// 点击显示图片
$(".cert-item,.practice-box,.brand-box").click(function () {
// 设置图片
$("#viewer").attr("src", $(this).find("img").attr("src"));
viewer.show();
});
function formateTimeFun(time) {
const date = new Date(time * 1000);
Y = date.getFullYear() + "-";
M =
(date.getMonth() + 1 < 10
? "0" + (date.getMonth() + 1)
: date.getMonth() + 1) + "-";
D = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
return Y + M + D;
}
// 公告列表
function getAnnounceList() {
$.ajax({
url: "/console/v1/announcement",
method: "get",
data: {
page: 1,
limit: 5,
},
success: function (res) {
const announceList = res.data.list;
announceList.forEach((item, index) => {
$("#announceList").append(`
<div class="news-item">
<div class="fboxRow Ycenter">
<div class="number">${index + 1}</div>
<a href="./announce-details.html?id=${item.id}">
<div class="title font-ell1">${item.title}</div>
</a>
</div>
<div class="time">${formateTimeFun(item.create_time)}</div>
</div>
`);
});
},
});
}
getAnnounceList();
// 新闻列表
function getNewsList() {
$.ajax({
url: "/console/v1/news",
method: "get",
data: {
page: 1,
limit: 5,
},
success: function (res) {
const announceList = res.data.list;
announceList.forEach((item, index) => {
$("#newsList").append(`
<div class="news-item">
<div class="fboxRow Ycenter">
<div class="number">${index + 1}</div>
<a href="./news-details.html?id=${item.id}">
<div class="title font-ell1">${item.title}</div>
</a>
</div>
<div class="time">${formateTimeFun(item.create_time)}</div>
</div>
`);
});
},
});
}
getNewsList();
$("#myTabs a").click(function (e) {
e.preventDefault();
$(this).tab("show");
});
// 跳转函数
function goOtherPage(url) {
location.href = url;
}
$("#cloud-box").click(function () {
location.href = "cloud.html";
});
$("#domain-box").click(function () {
location.href = "domain.html";
});
$("#recomment-box").click(function () {
location.href = "/home.htm";
});
$("#logon-box").click(function () {
location.href = "/regist.htm";
});
$("#cps-box").click(function () {
location.href = "partner/cps.html";
});
});