549 lines
19 KiB
JavaScript
549 lines
19 KiB
JavaScript
// 节流函数
|
||
function throttle(handle, wait) {
|
||
let lastTime = 0
|
||
return function (e) {
|
||
let nowTime = new Date().getTime()
|
||
if (nowTime - lastTime > wait) {
|
||
handle()
|
||
lastTime = nowTime
|
||
}
|
||
}
|
||
}
|
||
/* ................... 防抖函数 ................... */
|
||
function debounce(func, delay) {
|
||
let timeout
|
||
return function () {
|
||
clearTimeout(timeout) // 如果持续触发,那么就清除定时器,定时器的回调就不会执行。
|
||
timeout = setTimeout(() => {
|
||
func.apply(this, arguments)
|
||
}, delay)
|
||
}
|
||
}
|
||
var currentUrlParam = getUrlData() // 获取当前链接参数
|
||
var channel = "PC端"
|
||
if (window.navigator && /Mobile|Android|webOS|iPhone|iPad|Phone/i.test(navigator.userAgent)) {
|
||
channel = "移动端"
|
||
}
|
||
var zhArticleName = ""; // 知乎文章名
|
||
var zhArticleType = ""; // 知乎类型
|
||
var buy = currentUrlParam.buy || ""
|
||
// 按钮位置和当前链接
|
||
var btnPosition = sessionStorage.getItem("btn") || tool.getCookie("btn")
|
||
var curLink = sessionStorage.getItem("currentLink") || tool.getCookie("currentLink") || link
|
||
var vm = new Vue({
|
||
el: "#app",
|
||
data: {
|
||
headerCss: false, //导航样阴影css
|
||
mobileLogo: "logo.png", //移动端logo
|
||
mobileMenu: "menu_white.png", //移动端menu图片
|
||
mobileFixshow: true, //移动端咨询悬浮显示
|
||
show: false,
|
||
holiShow: false,
|
||
toastImg: "",
|
||
applyTitle: "7天免费注册体验",
|
||
applyText: "留下联系方式,体验更便捷的智能客服服务",
|
||
placeComTitle: "针对性提供产品方案",
|
||
placeCityTitle: "为您提供上门/远程演示服务",
|
||
submitText: "完成注册",
|
||
buttonAble: false,
|
||
codeText: "获取验证码",
|
||
sliderShow: false,
|
||
success: false,
|
||
count: 30,
|
||
timer: null,
|
||
tel: "",
|
||
com: "",
|
||
city: "",
|
||
codeStatus: false,
|
||
telTips: "",
|
||
codeTips: "",
|
||
comTips: "",
|
||
cityTips: "",
|
||
tips: "",
|
||
code: "",
|
||
state: "0",
|
||
typec: "呼叫中心",
|
||
right: ""
|
||
},
|
||
created() {
|
||
this.holiApi()
|
||
this.linkType() // 根据链接判断产品类型改文案
|
||
},
|
||
mounted() {
|
||
window.addEventListener("scroll", this.showIcon)
|
||
this.sliderInit()
|
||
this.getTel()
|
||
new Swiper(".apply-swiper", {
|
||
loop: true,
|
||
initialSlide: 0,
|
||
slidesPerView: 1,
|
||
centeredSlides: true,
|
||
slideToClickedSlide: true,
|
||
observer: true,
|
||
observerParents: true,
|
||
autoplay: {
|
||
delay: 3000,
|
||
disableOnInteraction: false
|
||
},
|
||
pagination: {
|
||
el: ".apply-swiper-pagination",
|
||
clickable: true
|
||
}
|
||
})
|
||
},
|
||
methods: {
|
||
sliderInit() {
|
||
let _this = this
|
||
// 获取 dom
|
||
const after = this.$refs.after
|
||
const slider = this.$refs.slider
|
||
const wrap = this.$refs.wrap
|
||
after.childNodes[0].style.width = wrap.offsetWidth + "px" // 设置after-inner的固定宽度
|
||
const limit = wrap.offsetWidth - slider.offsetWidth // 滑块移动最大位置
|
||
let offsetX // 实时计算滑块的偏移量
|
||
let initX // 点击滑块时的鼠标X位置
|
||
if (/Mobile|Android|webOS|iPhone|iPad|Phone/i.test(navigator.userAgent) || screen.width <= 768) {
|
||
const docMousemoveHandler = e => {
|
||
// 页面鼠标移动事件
|
||
// 获取移动后鼠标实时位置
|
||
const moveX = e.targetTouches[0].pageX
|
||
// 计算滑块应该移动的偏移量
|
||
offsetX = moveX - initX
|
||
// 限制上下限
|
||
if (offsetX < 0) {
|
||
e.style.transition = ".5s linear"
|
||
after.style.transition = ".5s linear"
|
||
offsetX = 0
|
||
} else if (offsetX > limit) {
|
||
offsetX = limit
|
||
}
|
||
slider.style.left = offsetX + "px" // 移动滑块
|
||
after.style.width = offsetX + "px" // 修改高亮背景宽度
|
||
slider.style.transition = "0s all"
|
||
after.style.transition = "0s all"
|
||
if (offsetX >= limit) {
|
||
_this.success = true
|
||
_this.getCode()
|
||
document.removeEventListener("touchmove", docMousemoveHandler)
|
||
slider.removeEventListener("touchend", sliderMousedownHandler)
|
||
}
|
||
}
|
||
const docMouseupHandler = e => {
|
||
// 页面鼠标松开事件
|
||
document.removeEventListener("touchcancel", docMousemoveHandler) // 解绑事件
|
||
if (offsetX < limit) {
|
||
// 重置滑块
|
||
slider.style.transition = ".3s ease-in-out"
|
||
slider.style.left = 0
|
||
after.style.transition = ".3s ease-in-out"
|
||
after.style.width = 0
|
||
}
|
||
}
|
||
const sliderMousedownHandler = e => {
|
||
// 滑块点击事件
|
||
initX = e.targetTouches[0].pageX // 获取鼠标位置
|
||
document.addEventListener("touchmove", docMousemoveHandler) // 绑定页面的鼠标移动事件
|
||
}
|
||
slider.addEventListener("touchstart", sliderMousedownHandler) // 绑定滑块点击事件
|
||
document.addEventListener("touchend", docMouseupHandler) // 页面鼠标松开事件
|
||
this.sliderClear = async () => {
|
||
// 定义清理方法
|
||
slider.style.left = "0px"
|
||
after.style.width = "0px"
|
||
slider.style.transition = ".3s ease-in-out"
|
||
after.style.transition = ".3s ease-in-out"
|
||
_this.success = false
|
||
document.removeEventListener("touchmove", docMousemoveHandler)
|
||
slider.removeEventListener("touchstart", sliderMousedownHandler)
|
||
document.removeEventListener("touchend", docMouseupHandler)
|
||
}
|
||
} else {
|
||
const docMousemoveHandler = e => {
|
||
// 页面鼠标移动事件
|
||
// 获取移动后鼠标实时位置
|
||
const moveX = e.clientX
|
||
// 计算滑块应该移动的偏移量
|
||
offsetX = moveX - initX
|
||
// 限制上下限
|
||
if (offsetX < 0) {
|
||
e.style.transition = ".5s linear"
|
||
after.style.transition = ".5s linear"
|
||
offsetX = 0
|
||
} else if (offsetX > limit) {
|
||
offsetX = limit
|
||
}
|
||
slider.style.left = offsetX + "px" // 移动滑块
|
||
after.style.width = offsetX + "px" // 修改高亮背景宽度
|
||
slider.style.transition = "0s all"
|
||
after.style.transition = "0s all"
|
||
if (offsetX >= limit) {
|
||
_this.success = true
|
||
_this.getCode()
|
||
document.removeEventListener("mousemove", docMousemoveHandler)
|
||
slider.removeEventListener("mousedown", sliderMousedownHandler)
|
||
}
|
||
}
|
||
const docMouseupHandler = e => {
|
||
// 页面鼠标松开事件
|
||
document.removeEventListener("mousemove", docMousemoveHandler) // 解绑事件
|
||
if (offsetX < limit) {
|
||
// 重置滑块
|
||
slider.style.transition = ".3s ease-in-out"
|
||
slider.style.left = 0
|
||
after.style.transition = ".3s ease-in-out"
|
||
after.style.width = 0
|
||
}
|
||
}
|
||
const sliderMousedownHandler = e => {
|
||
// 滑块点击事件
|
||
initX = e.clientX // 获取鼠标位置
|
||
document.addEventListener("mousemove", docMousemoveHandler) // 绑定页面的鼠标移动事件
|
||
}
|
||
slider.addEventListener("mousedown", sliderMousedownHandler) // 绑定滑块点击事件
|
||
document.addEventListener("mouseup", docMouseupHandler) // 页面鼠标松开事件
|
||
_this.sliderClear = async () => {
|
||
// 定义清理方法
|
||
slider.style.left = "0px"
|
||
after.style.width = "0px"
|
||
slider.style.transition = ".3s ease-in-out"
|
||
after.style.transition = ".3s ease-in-out"
|
||
_this.success = false
|
||
document.removeEventListener("mousemove", docMousemoveHandler)
|
||
slider.removeEventListener("mousedown", sliderMousedownHandler)
|
||
document.removeEventListener("mouseup", docMouseupHandler)
|
||
}
|
||
}
|
||
},
|
||
showIcon() {
|
||
//顶部导航css
|
||
if (!!document.documentElement.scrollTop && document.documentElement.scrollTop > 200) {
|
||
this.headerCss = true
|
||
if (screen.width < 768) {
|
||
//如果是移动端
|
||
this.mobileLogo = "logo1.png"
|
||
}
|
||
} else {
|
||
this.headerCss = false
|
||
this.mobileLogo = "logo.png"
|
||
}
|
||
},
|
||
linkType() {
|
||
if (buy) {
|
||
this.applyTitle = "获取报价"
|
||
this.applyText = "免费获取产品功能报价及价格对比"
|
||
this.submitText = "立即提交"
|
||
if (curLink.indexOf("price") > 0) {
|
||
this.applyTitle = "获取报价"
|
||
this.applyText = "免费获取产品功能报价及价格对比"
|
||
this.submitText = "立即提交"
|
||
}
|
||
}
|
||
if (curLink.indexOf("agent") > 0 || btnPosition === "首页代理加盟按钮") {
|
||
this.applyTitle = "欢迎加入合力亿捷"
|
||
this.applyText = "提交您的资料,我们将在1个工作日内与您取得联系"
|
||
this.placeComTitle = "请输入您的企业名称"
|
||
this.placeCityTitle = "方便与您取得联系"
|
||
this.submitText = "立即加入"
|
||
}
|
||
// 根据链接判断产品类型
|
||
if (buy == "base") {
|
||
this.typec = "呼叫中心-购买基础版"
|
||
} else if (buy == "online") {
|
||
this.typec = "呼叫中心-购买在线版"
|
||
} else if (buy == "stand") {
|
||
this.typec = "呼叫中心-购买标准版"
|
||
} else if (buy == "com") {
|
||
this.typec = "呼叫中心-购买企业版"
|
||
} else if (buy == "sale") {
|
||
this.typec = "呼叫中心-购买营销版"
|
||
} else if (buy == "classic") {
|
||
this.typec = "呼叫中心-购买经典版"
|
||
} else if (buy == "plus") {
|
||
this.typec = "呼叫中心-购买旗舰版"
|
||
} else if (sessionStorage.getItem("agent") && sessionStorage.getItem("agent") === "index") {
|
||
this.typec = "首页代理加盟按钮"
|
||
} else if (curLink.indexOf("callcenter") > 0) {
|
||
this.typec = "云呼叫中心系统"
|
||
} else if (curLink.indexOf("webchat") > 0) {
|
||
this.typec = "在线客服系统"
|
||
} else if (curLink.indexOf("order") > 0) {
|
||
this.typec = "工单系统"
|
||
} else if (curLink.indexOf("AIplatform") > 0) {
|
||
this.typec = "AI机器人"
|
||
} else if (curLink.indexOf("robot") > 0) {
|
||
this.typec = "智能客服机器人"
|
||
} else if (curLink.indexOf("project") > 0) {
|
||
this.typec = "项目管理"
|
||
} else if (curLink.indexOf("scrm") > 0) {
|
||
this.typec = "企微管家"
|
||
} else if (curLink.indexOf("5GMessage") > 0) {
|
||
this.typec = "5G消息创新应用"
|
||
} else if (curLink.indexOf("/solution/customer") > 0) {
|
||
this.typec = "全渠道获客"
|
||
} else if (curLink.indexOf("/solution/progress") > 0) {
|
||
this.typec = "全流程智能服务"
|
||
} else if (curLink.indexOf("remote") > 0) {
|
||
this.typec = "远程坐席管理"
|
||
} else if (curLink.indexOf("express") > 0) {
|
||
this.typec = "速递物流"
|
||
} else if (curLink.indexOf("pinzhuan") > 0 || link.indexOf("pinzhuan") > 0 || curLink.indexOf("PINZHUAN") > 0 || link.indexOf("PINZHUAN") > 0) {
|
||
this.typec = "百度品专"
|
||
} else {
|
||
this.typec = "呼叫中心"
|
||
}
|
||
if (currentUrlParam.tel) {
|
||
this.tel = currentUrlParam.tel
|
||
}
|
||
/* --------- 知乎的识别文章来源 -------- */
|
||
if (currentUrlParam.zhihu || urlParam.zhihu) {
|
||
let urlType = currentUrlParam.zhihu || urlParam.zhihu;
|
||
let data = new URLSearchParams();
|
||
data.append("query", "query");
|
||
data.append("type", urlType);
|
||
axios({
|
||
method: "post",
|
||
url: "https://site.hollycrm.com/zh/mana/assets/api/article.php",
|
||
data: data
|
||
}).then(res => { // 返回相应的微信文章原链接
|
||
zhArticleName = res.data.name;
|
||
zhArticleType = res.data.aType;
|
||
}).catch(error => {
|
||
console.log(error);
|
||
})
|
||
|
||
}
|
||
console.log("按钮位置+当前链接+关注产品+来源链接", btnPosition + "--" + curLink + "--" + this.typec + "--" + sourceUrl)
|
||
},
|
||
getTel() {
|
||
if (sessionStorage.getItem("tel") || tool.getCookie("tel")) {
|
||
this.tel = sessionStorage.getItem("tel") || tool.getCookie("tel")
|
||
this.verifyTel()
|
||
}
|
||
},
|
||
verifyTel: debounce(function () {
|
||
var RegExp = /^1[3-9][0-9]{9}$/
|
||
if (vm.tel.trim() == "") {
|
||
vm.telTips = "请输入您的手机号"
|
||
vm.sliderShow = false
|
||
} else if (!RegExp.test(vm.tel.trim())) {
|
||
vm.telTips = "请输入正确的手机号码"
|
||
vm.sliderShow = false
|
||
} else {
|
||
vm.telTips = ""
|
||
vm.sliderShow = true
|
||
}
|
||
}, 500),
|
||
getCode: throttle(function () {
|
||
var RegExp = /^1[3-9][0-9]{9}$/
|
||
if (vm.tel.trim() == "") {
|
||
vm.telTips = "请输入您的手机号"
|
||
} else if (!RegExp.test(vm.tel.trim())) {
|
||
vm.telTips = "请输入正确的手机号码"
|
||
} else {
|
||
vm.tips = "" // 验证通过
|
||
vm.timer = setInterval(() => {
|
||
if (vm.count > 0 && vm.count <= 30) {
|
||
vm.buttonAble = true
|
||
vm.count--
|
||
vm.codeText = vm.count + "秒后重新获取"
|
||
} else {
|
||
vm.buttonAble = false;
|
||
vm.codeText = "获取验证码"
|
||
clearInterval(vm.timer)
|
||
vm.timer = null
|
||
vm.count = 30
|
||
vm.sliderClear()
|
||
vm.sliderInit()
|
||
}
|
||
}, 1000)
|
||
var data = {
|
||
tel: vm.tel,
|
||
btn: btnPosition,
|
||
curLink: curLink,
|
||
protype: vm.typec,
|
||
sourceLink: sourceUrl,
|
||
website_keywords: website_keywords, // 关键词
|
||
channel: channel, // 渠道
|
||
bd_vid: bd_vid // 百度统计
|
||
}
|
||
if (zhArticleName) {
|
||
data.zhArticleName = zhArticleName
|
||
}
|
||
if (zhArticleType) {
|
||
data.zhArticleType = zhArticleType
|
||
}
|
||
$.ajax({
|
||
url: "./apply-code.php",
|
||
type: "post",
|
||
data: data,
|
||
success: function (res) {
|
||
if (res == "toomuch") {
|
||
alert("请匆频繁提交!感谢您的理解和合作,可通过在线客服或电话与我们取得联系。")
|
||
return
|
||
}
|
||
console.log("第一步推送成功!")
|
||
}
|
||
})
|
||
vm.actionId = vm.tel + "-" + Math.floor(Math.random() * 1000000)
|
||
$.ajax({
|
||
url: "/api/sendMsg.php",
|
||
type: "POST",
|
||
data: {
|
||
telNum: vm.tel,
|
||
actionId: vm.actionId,
|
||
info: G.info,
|
||
time: new Date().getTime(),
|
||
actionName: "呼叫中心站试用申请"
|
||
},
|
||
success: function (res) {
|
||
if (res.state == "sent") {//发送验证码成功,并且成功写入数据库,返回sent
|
||
return (vm.codeTips = "验证码已发送,请注意查收")
|
||
} else {//其他不成功的情况
|
||
return (vm.codeTips = "发送失败,请稍后再试")
|
||
}
|
||
}
|
||
})
|
||
}
|
||
}, 1000),
|
||
verifyCode: debounce(function (event) {
|
||
if (vm.tel == "") {
|
||
vm.codeStatus = false
|
||
return (vm.telTips = "请输入手机号码")
|
||
} else if (event.target.value == "") {
|
||
vm.codeStatus = false
|
||
return (vm.codeTips = "请输入验证码")
|
||
} else if (event.target.value.length != 4) {
|
||
vm.codeStatus = false
|
||
return (vm.codeTips = "请输入正确的验证码")
|
||
} else {
|
||
vm.codeTips = ""
|
||
}
|
||
$.ajax({
|
||
url: "/api/verifyMsg.php",
|
||
type: "post",
|
||
data: {
|
||
telNum: vm.tel,
|
||
actionId: vm.actionId,
|
||
actionName: "呼叫中心站试用申请",
|
||
code: vm.code
|
||
},
|
||
success: function (res) {
|
||
if (res.state == "vSucceed") {
|
||
$("#tel").attr({ readonly: "readonly" })
|
||
$("#getCode").attr({ disabled: "true" })
|
||
vm.$data.right = true
|
||
vm.$data.codeTips = "验证码验证成功"
|
||
setTimeout(() => {
|
||
vm.$data.codeTips = ""
|
||
vm.codeStatus = true
|
||
}, 500)
|
||
} else if (res.state == "vFail") {
|
||
event.target.focus()
|
||
vm.$data.right = false
|
||
vm.codeStatus = false
|
||
return (vm.$data.codeTips = "验证码错误,请重试")
|
||
}
|
||
}
|
||
})
|
||
}, 1500),
|
||
verifyCom: debounce(function () {
|
||
if (vm.com.trim() == "") {
|
||
vm.comTips = "请输入您的公司名称"
|
||
} else {
|
||
vm.comTips = ""
|
||
}
|
||
}, 1500),
|
||
verifyCity: debounce(function () {
|
||
if (vm.city.trim() == "") {
|
||
vm.cityTips = "请输入您所在的城市"
|
||
} else {
|
||
vm.cityTips = ""
|
||
}
|
||
}, 1500),
|
||
verify: function () {
|
||
var mobilePattern = /^1[3-9][0-9]{9}$/
|
||
if (vm.tel.trim() == "") {
|
||
vm.telTips = "请输入您的手机号"
|
||
return false
|
||
} else if (!mobilePattern.test(vm.tel.trim())) {
|
||
vm.telTips = "请输入正确的手机号码"
|
||
return false
|
||
} else if (vm.code.trim() == "") {
|
||
vm.codeTips = "请输入验证码"
|
||
return false
|
||
} else if (vm.code.trim().length != 4) {
|
||
vm.codeTips = "请输入正确的验证码"
|
||
return false
|
||
} else if (!vm.right) {
|
||
vm.codeTips = "请输入正确的验证码"
|
||
return false
|
||
} else if (vm.com.trim() == "") {
|
||
vm.comTips = "请输入您的公司名称"
|
||
return false
|
||
} else if (vm.city.trim() == "") {
|
||
vm.cityTips = "请输入您所在的城市"
|
||
return false
|
||
} else {
|
||
vm.tips = ""
|
||
tool.setCookie("applyTel", vm.tel, 1)
|
||
tool.setCookie("applyCom", vm.com, 1)
|
||
tool.setCookie("applyCity", vm.city, 1)
|
||
document.agent.submit()
|
||
}
|
||
},
|
||
holiApi() {
|
||
// 假日表单开关
|
||
var vm = this
|
||
axios({
|
||
method: "get",
|
||
url: "/api/kefu/holicode.php"
|
||
})
|
||
.then(async res => {
|
||
if (res.data) {
|
||
if (website_keywords_string) {
|
||
website_keywords_string += ",节假日表单活码"
|
||
} else {
|
||
website_keywords_string += "节假日表单活码"
|
||
}
|
||
await getCode()
|
||
vm.holiShow = true
|
||
vm.toastImg = qrCode
|
||
} else {
|
||
vm.holiShow = false
|
||
}
|
||
})
|
||
.catch(err => {
|
||
console.log(err)
|
||
})
|
||
},
|
||
holiToWeixin() {
|
||
if (website_keywords_string) {
|
||
website_keywords_string += ",节假日表单活码"
|
||
} else {
|
||
website_keywords_string += "节假日表单活码"
|
||
}
|
||
toweixin()
|
||
}
|
||
},
|
||
beforeDestroy() {
|
||
this.sliderClear()
|
||
}
|
||
})
|
||
// 点击输入框外框变红
|
||
$(".input-box input").bind("click", function () {
|
||
$(this).parent().css("border", "1px solid #eb305b")
|
||
$(this).prev().css("color", "#333")
|
||
})
|
||
$(".input-box input").bind("blur", function () {
|
||
$(this).parent().css("border", "1px solid #e2e1e5")
|
||
$(this).prev().css("color", "#666")
|
||
})
|
||
$(".code").bind("click", function () {
|
||
$(this).css("border", "1px solid #eb305b")
|
||
$(this).parent().css("border", "none")
|
||
})
|
||
$(".code").bind("blur", function () {
|
||
$(this).css("border", "1px solid #e2e1e5")
|
||
$(this).parent().css("border", "none")
|
||
})
|