This commit is contained in:
279
common/common.js
279
common/common.js
@@ -106,279 +106,20 @@ $(function () {
|
||||
$(".no-login").attr("style", "display:block");
|
||||
}
|
||||
};
|
||||
// 获取通用配置信息(先用系统 /console/v1/common,若有插件则再用插件数据覆盖部分字段)
|
||||
const 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 || {};
|
||||
|
||||
// SEO:如配置了插件 SEO,则覆盖页面标题与 meta
|
||||
if (cfg.seo) {
|
||||
if (cfg.seo.title) {
|
||||
document.title = cfg.seo.title;
|
||||
}
|
||||
if (cfg.seo.keywords) {
|
||||
var $kw = $('meta[name="keywords"]');
|
||||
if ($kw.length) {
|
||||
$kw.attr("content", cfg.seo.keywords);
|
||||
}
|
||||
}
|
||||
if (cfg.seo.description) {
|
||||
var $desc = $('meta[name="description"]');
|
||||
if ($desc.length) {
|
||||
$desc.attr("content", cfg.seo.description);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 覆盖基础字段:企业信息 & ICP 等
|
||||
baseData.enterprise_name =
|
||||
cfg.enterprise_name || baseData.enterprise_name;
|
||||
baseData.enterprise_telephone =
|
||||
cfg.enterprise_telephone || baseData.enterprise_telephone;
|
||||
baseData.enterprise_mailbox =
|
||||
cfg.enterprise_mailbox || baseData.enterprise_mailbox;
|
||||
baseData.enterprise_qrcode =
|
||||
cfg.enterprise_qrcode || baseData.enterprise_qrcode;
|
||||
baseData.official_website_logo =
|
||||
cfg.official_website_logo || baseData.official_website_logo;
|
||||
baseData.online_customer_service_link =
|
||||
cfg.online_customer_service_link ||
|
||||
baseData.online_customer_service_link;
|
||||
baseData.icp_info = cfg.icp_info || baseData.icp_info;
|
||||
baseData.icp_info_link =
|
||||
cfg.icp_info_link || baseData.icp_info_link;
|
||||
baseData.public_security_network_preparation =
|
||||
cfg.public_security_network_preparation ||
|
||||
baseData.public_security_network_preparation;
|
||||
baseData.public_security_network_preparation_link =
|
||||
cfg.public_security_network_preparation_link ||
|
||||
baseData.public_security_network_preparation_link;
|
||||
baseData.telecom_appreciation =
|
||||
cfg.telecom_appreciation || baseData.telecom_appreciation;
|
||||
baseData.copyright_info =
|
||||
cfg.copyright_info || baseData.copyright_info;
|
||||
baseData.cloud_product_link =
|
||||
cfg.cloud_product_link || baseData.cloud_product_link;
|
||||
baseData.dcim_product_link =
|
||||
cfg.dcim_product_link || baseData.dcim_product_link;
|
||||
baseData.terms_service_url =
|
||||
cfg.terms_service_url || baseData.terms_service_url;
|
||||
baseData.terms_privacy_url =
|
||||
cfg.terms_privacy_url || baseData.terms_privacy_url;
|
||||
|
||||
// 数组字段:优先使用插件配置
|
||||
if (cfg.friendly_link) {
|
||||
baseData.friendly_link = cfg.friendly_link;
|
||||
}
|
||||
if (cfg.honor) {
|
||||
baseData.honor = cfg.honor;
|
||||
}
|
||||
if (cfg.partner) {
|
||||
baseData.partner = cfg.partner;
|
||||
}
|
||||
if (cfg.feedback_type) {
|
||||
baseData.feedback_type = cfg.feedback_type;
|
||||
}
|
||||
if (cfg.header_nav) {
|
||||
baseData.header_nav = cfg.header_nav;
|
||||
}
|
||||
if (cfg.footer_nav) {
|
||||
baseData.footer_nav = cfg.footer_nav;
|
||||
}
|
||||
if (cfg.side_floating_window) {
|
||||
baseData.side_floating_window = cfg.side_floating_window;
|
||||
}
|
||||
}
|
||||
|
||||
sessionStorage.commentData = JSON.stringify(baseData);
|
||||
setCommData();
|
||||
},
|
||||
error: function () {
|
||||
// 插件不可用则直接使用系统默认配置
|
||||
sessionStorage.commentData = JSON.stringify(baseData);
|
||||
setCommData();
|
||||
},
|
||||
});
|
||||
},
|
||||
});
|
||||
};
|
||||
// 根据插件配置重绘顶部导航(header_nav)
|
||||
const renderHeaderNav = (commentObj) => {
|
||||
var navData = commentObj && commentObj.header_nav;
|
||||
if (!Array.isArray(navData) || navData.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 更新 Logo 点击链接
|
||||
var home = navData[0] || {};
|
||||
if (home.file_address) {
|
||||
$(".nav-icon a").attr("href", home.file_address);
|
||||
}
|
||||
|
||||
var $menu = $(".nav-menu");
|
||||
var $navContSection = $(".nav-cont .section-content");
|
||||
if (!$menu.length || !$navContSection.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 顶部一级导航
|
||||
$menu.empty();
|
||||
for (var i = 1; i < navData.length; i++) {
|
||||
var item = navData[i] || {};
|
||||
var name = item.name || "";
|
||||
var file = item.file_address || "";
|
||||
var blank = Number(item.blank) === 1;
|
||||
|
||||
if (!name) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (file) {
|
||||
var $a = $("<a></a>")
|
||||
.attr("href", file)
|
||||
.attr("target", blank ? "_blank" : "_self");
|
||||
$a.append($("<div></div>").addClass("nav-item").text(name));
|
||||
$menu.append($a);
|
||||
} else {
|
||||
$menu.append($("<div></div>").addClass("nav-item").text(name));
|
||||
}
|
||||
}
|
||||
|
||||
// 下拉菜单
|
||||
$navContSection.empty();
|
||||
for (var j = 1; j < navData.length; j++) {
|
||||
var parent = navData[j] || {};
|
||||
var children = Array.isArray(parent.children) ? parent.children : [];
|
||||
if (!children.length) {
|
||||
$navContSection.append(
|
||||
$("<div></div>").addClass("nav-cont-menu nav-cont-empty")
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
||||
var $menuWrap = $("<div></div>").addClass(
|
||||
"nav-cont-menu animated slideInDown"
|
||||
);
|
||||
var $content = $("<div></div>").addClass("nav-content");
|
||||
children.forEach(function (child) {
|
||||
if (!child) return;
|
||||
var cname = child.name || "";
|
||||
var curl = child.file_address || "";
|
||||
var cblank = Number(child.blank) === 1;
|
||||
var cicon = child.icon || "";
|
||||
var cdesc = child.description || "";
|
||||
|
||||
if (!cname && !curl) return;
|
||||
|
||||
var $link = $("<a></a>");
|
||||
if (curl) {
|
||||
$link.attr("href", curl).attr("target", cblank ? "_blank" : "_self");
|
||||
} else {
|
||||
$link.attr("href", "javascript:;");
|
||||
}
|
||||
|
||||
var $box = $("<div></div>").addClass("nav-item-box");
|
||||
if (cicon) {
|
||||
$box.append($("<img>").attr("src", cicon).attr("alt", ""));
|
||||
}
|
||||
var $titleWrap = $("<div></div>").addClass("item-box-title");
|
||||
$titleWrap.append($("<div></div>").addClass("title").text(cname));
|
||||
$titleWrap.append($("<div></div>").addClass("desc").text(cdesc));
|
||||
$box.append($titleWrap);
|
||||
|
||||
$link.append($box);
|
||||
$content.append($link);
|
||||
});
|
||||
|
||||
$menuWrap.append($content);
|
||||
$navContSection.append($menuWrap);
|
||||
}
|
||||
|
||||
// 重绑 hover 事件,避免新节点没有事件
|
||||
$(".nav-menu .nav-item").off("mouseenter mouseleave");
|
||||
$(".nav-cont").off("mouseenter mouseleave");
|
||||
initHeader();
|
||||
};
|
||||
|
||||
// 设置通用信息函数
|
||||
// 设置通用信息相关的点击跳转(云服务器/物理机 CTA 等),来源于 SSR 注入的 window.__themeCommon
|
||||
const setCommData = () => {
|
||||
const commentObj = JSON.parse(sessionStorage.commentData);
|
||||
$("#enterprise_name").text(commentObj.enterprise_name);
|
||||
$(".com-contact-tel").text(commentObj.enterprise_telephone);
|
||||
$("#enterprise_telephone").text(
|
||||
`联系电话:${commentObj.enterprise_telephone}`
|
||||
);
|
||||
$("#enterprise_mailbox").text(`联系邮箱:${commentObj.enterprise_mailbox}`);
|
||||
$("#enterprise_qrcode").attr("src", commentObj.enterprise_qrcode);
|
||||
$("#logo").attr("src", commentObj.official_website_logo);
|
||||
if (commentObj.friendly_link.length > 0) {
|
||||
$("#index #footerLink").attr("style", "display: block;");
|
||||
// 先清空,再填充,避免重复叠加
|
||||
$("#footerLink a").remove();
|
||||
commentObj.friendly_link.forEach((item) => {
|
||||
$("#footerLink").append(
|
||||
`<a href=${item.url} target="_blank" rel="nofollow">${item.name}</a>`
|
||||
);
|
||||
});
|
||||
} else {
|
||||
$("#footerLink").attr("style", "display: none;");
|
||||
}
|
||||
|
||||
// 统一覆盖底部备案信息和版权
|
||||
$("#footerRecord").html(`
|
||||
<div class='left-info'>
|
||||
<a href='${commentObj.icp_info_link}' target="_blank" rel="nofollow">${commentObj.icp_info}</a>
|
||||
<a href='${commentObj.public_security_network_preparation_link}' target="_blank" rel="nofollow">${commentObj.public_security_network_preparation}</a>
|
||||
<span>${commentObj.telecom_appreciation}</span>
|
||||
</div>
|
||||
<span>${commentObj.copyright_info}</span>
|
||||
`);
|
||||
$("#terms_service_url").click(function () {
|
||||
location.href = commentObj.terms_service_url;
|
||||
});
|
||||
$("#terms_privacy_url").click(function () {
|
||||
location.href = commentObj.terms_privacy_url;
|
||||
});
|
||||
|
||||
|
||||
const commentObj = window.__themeCommon || {};
|
||||
$(".buy-cloud").click(function () {
|
||||
location.href = commentObj.cloud_product_link;
|
||||
if (commentObj.cloud_product_link) {
|
||||
location.href = commentObj.cloud_product_link;
|
||||
}
|
||||
});
|
||||
$(".buy-dcim-btn").click(function () {
|
||||
location.href = commentObj.dcim_product_link;
|
||||
if (commentObj.dcim_product_link) {
|
||||
location.href = commentObj.dcim_product_link;
|
||||
}
|
||||
});
|
||||
|
||||
// 顶部导航改用插件 header_nav
|
||||
renderHeaderNav(commentObj);
|
||||
};
|
||||
$(".line-server-btn").click(function () {
|
||||
const commentObj = sessionStorage.commentData
|
||||
? JSON.parse(sessionStorage.commentData)
|
||||
: null;
|
||||
if (commentObj && commentObj.online_customer_service_link) {
|
||||
window.open(commentObj.online_customer_service_link);
|
||||
}
|
||||
});
|
||||
// 跳转函数
|
||||
const goOtherPage = (url) => {
|
||||
sessionStorage.redirectUrl = location.href;
|
||||
@@ -482,8 +223,8 @@ $(function () {
|
||||
});
|
||||
}
|
||||
function initFooter() {
|
||||
// 始终从后端获取最新通用配置,避免缓存导致配置不生效
|
||||
getCommentInfo();
|
||||
// 主题配置已在服务端渲染阶段注入到 window.__themeCommon,这里只做少量点击事件绑定
|
||||
setCommData();
|
||||
}
|
||||
// 首页渲染
|
||||
// $("#header").load("/web/BlackFruit-web/public/header.html", function () {
|
||||
|
||||
Reference in New Issue
Block a user