gswz/SFHY/static/js/news_menu.js

225 lines
8.0 KiB
JavaScript

/* ................... 防抖函数 ................... */
function debounce(func, delay) {
let timeout
return function () {
clearTimeout(timeout) // 如果持续触发,那么就清除定时器,定时器的回调就不会执行。
timeout = setTimeout(() => {
func.apply(this, arguments)
}, delay)
}
}
var vm = new Vue({
el: "#app",
data: {
readManPer: "57%",
tel: "",
allNavList: {
callcenter: [
{ name: "首页", url: "/" },
{ name: "呼叫中心", url: "/callcenter/" },
{ name: "功能及价格", url: "/callcenterprice/" },
{ name: "客户案例", url: "/wincase/" },
{ name: "行业知识", url: "/innews/callcenter/" },
{ name: "关于我们", url: "/aboutus/company/" }
],
cloudcalcenter: [
{ name: "首页", url: "/" },
{ name: "云呼叫中心", url: "/callcenter/" },
{ name: "功能及价格", url: "/callcenterprice/" },
{ name: "客户案例", url: "/wincase/" },
{ name: "行业知识", url: "/innews/cloudcalcenter/" },
{ name: "关于我们", url: "/aboutus/company/" }
],
call: [
{ name: "首页", url: "/" },
{ name: "电话呼叫中心", url: "/phone/" },
{ name: "功能及价格", url: "/callcenterprice/" },
{ name: "客户案例", url: "/wincase/" },
{ name: "行业知识", url: "/innews/call/" },
{ name: "关于我们", url: "/aboutus/company/" }
],
customercall: [
{ name: "首页", url: "/" },
{ name: "客服呼叫中心", url: "/callcenter/" },
{ name: "功能及价格", url: "/callcenterprice/" },
{ name: "客户案例", url: "/wincase/" },
{ name: "行业知识", url: "/innews/customercall/" },
{ name: "关于我们", url: "/aboutus/company/" }
],
outbound: [
{ name: "首页", url: "/" },
{ name: "外呼系统", url: "/phone/" },
{ name: "功能及价格", url: "/callcenterprice/" },
{ name: "客户案例", url: "/wincase/" },
{ name: "行业知识", url: "/innews/outbound/" },
{ name: "关于我们", url: "/aboutus/company/" }
],
webchat: [
{ name: "首页", url: "/" },
{ name: "客服系统", url: "/webchat/" },
{ name: "客服机器人", url: "/robot/" },
{ name: "视频客服", url: "/ivvr/" },
{ name: "行业知识", url: "/innews/webchat/" },
{ name: "关于我们", url: "/aboutus/company/" }
],
order: [
{ name: "首页", url: "/" },
{ name: "工单系统", url: "/order/" },
{ name: "客户案例", url: "/wincase/" },
{ name: "行业知识", url: "/innews/order/" },
{ name: "关于我们", url: "/aboutus/company/" }
],
scrm: [
{ name: "首页", url: "/" },
{ name: "SCRM系统", url: "/scrm/" },
{ name: "客户案例", url: "/wincase/" },
{ name: "行业知识", url: "/innews/scrm/" },
{ name: "关于我们", url: "/aboutus/company/" }
],
sale: [
{ name: "首页", url: "/" },
{ name: "销售跟进系统", url: "/salesplat/" },
{ name: "客户案例", url: "/wincase/" },
{ name: "行业知识", url: "/innews/sale/" },
{ name: "关于我们", url: "/aboutus/company/" }
],
ai: [
{ name: "首页", url: "/" },
{ name: "客服机器人", url: "/robot/" },
{ name: "语音机器人", url: "/AIcall/" },
{ name: "客户案例", url: "/wincase/" },
{ name: "行业知识", url: "/innews/ai/" },
{ name: "关于我们", url: "/aboutus/company/" }
]
},
navList: []
},
mixins: [mixins],
created() {
this.navListShow()
this.autoMenu()
},
mounted() {
this.showTopIcon()
window.addEventListener("scroll", this.showTopIcon)
this.showReadManPer(50, 100)
if (screen.availWidth !== 1280 && window.devicePixelRatio !== 1.5) {
new WOW().init();
};
},
methods: {
showTopIcon() {//顶部导航css
const self = this;
if (/Mobile|Android|webOS|iPhone|iPad|Phone/i.test(navigator.userAgent) || screen.width <= 768) {
if (!!document.documentElement.scrollTop && document.documentElement.scrollTop > 50) {
self.headerCss = true
self.mobileLogo = "logo1.png"
} else {
self.headerCss = true;
self.mobileLogo = "logo1.png"
}
} else {
self.headerCss = true;
self.mobileLogo = "logo1.png"
}
},
showReadManPer(min, max) {//阅读人数百分比
this.readManPer = Math.floor(Math.random() * (max - min)) + min + "%";
},
articleApply() { //文章试用申请
if (this.tel) {
sessionStorage.setItem("tel", this.tel)
tool.setCookie("tel", this.tel, 1)
}
location.href = "/apply/"
},
autoMenu: debounce(function () {
var h2Tags = document.querySelectorAll('h2');
var tocContainer = document.querySelector('.toc');
// 生成目录
var tocList = document.createElement('ul');
for (var i = 0; i < h2Tags.length; i++) {
var h2Tag = h2Tags[i];
var id = 'doc' + i;
h2Tag.id = id;
var tocItem = document.createElement('li');
var tocLink = document.createElement('a');
tocLink.href = '#' + id;
tocLink.textContent = h2Tag.textContent;
tocItem.appendChild(tocLink);
tocList.appendChild(tocItem);
}
tocContainer.appendChild(tocList);
// 监听目录节点点击事件
var tocLinks = tocContainer.querySelectorAll('a');
for (var i = 0; i < tocLinks.length; i++) {
tocLinks[i].addEventListener('click', function (event) {
event.preventDefault();
var targetId = this.getAttribute('href').substring(1);
var targetElement = document.getElementById(targetId);
var targetOffset = targetElement.offsetTop - 80; // 距离顶部 80px 的位置
// 执行滚动
scrollTo({ top: targetOffset, behavior: 'smooth' });
});
}
// 监听滚动事件,实现目录节点的高亮
window.addEventListener('scroll', function () {
var currentPosition = window.pageYOffset || document.documentElement.scrollTop;
var highlightedIndex = -1;
for (var i = 0; i < h2Tags.length; i++) {
var h2Tag = h2Tags[i];
var rect = h2Tag.getBoundingClientRect();
if (rect.top <= 100) {
highlightedIndex = i;
}
}
// 移除所有目录节点的高亮样式
for (var i = 0; i < tocLinks.length; i++) {
tocLinks[i].classList.remove('highlight');
}
// 高亮显示当前区域对应的目录节点
if (highlightedIndex >= 0) {
tocLinks[highlightedIndex].classList.add('highlight');
}
});
}, 500),
navListShow() {
const self = this;
const currentUrl = window.location.pathname;
let navList = [];
if (currentUrl.includes("/innews/callcenter/")) {
navList = self.allNavList.callcenter;
} else if (currentUrl.includes("/innews/cloudcalcenter/")) {
navList = self.allNavList.cloudcalcenter;
} else if (currentUrl.includes("/innews/call/")) {
navList = self.allNavList.call;
} else if (currentUrl.includes("/innews/customercall/")) {
navList = self.allNavList.customercall;
} else if (currentUrl.includes("/innews/outbound/")) {
navList = self.allNavList.outbound;
} else if (currentUrl.includes("/innews/webchat/")) {
navList = self.allNavList.webchat;
} else if (currentUrl.includes("/innews/order/")) {
navList = self.allNavList.order;
} else if (currentUrl.includes("/innews/scrm/")) {
navList = self.allNavList.scrm;
} else if (currentUrl.includes("/innews/sale/")) {
navList = self.allNavList.sale;
} else if (currentUrl.includes("/innews/ai/")) {
navList = self.allNavList.ai;
}
self.navList = navList;
}
}
})