gswz/SFHY/static/js/apply.js

549 lines
19 KiB
JavaScript
Raw Normal View History

2024-02-28 14:35:44 +08:00
// 节流函数
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")
})