320 lines
9.3 KiB
JavaScript
320 lines
9.3 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)
|
||
}
|
||
}
|
||
/* .................. 获取链接参数 .................. */
|
||
function getUrlData(name) {
|
||
var query = window.location.search.substring(1);
|
||
var vars = query.split("&");
|
||
for (var i = 0; i < vars.length; i++) {
|
||
var pair = vars[i].split("=");
|
||
if (pair[0] == name) {
|
||
return decodeURI(pair[1]);
|
||
}
|
||
}
|
||
return (false);
|
||
}
|
||
var channel = "PC端";
|
||
if (window.navigator && (/Mobile|Android|webOS|iPhone|iPad|Phone/i.test(navigator.userAgent))) {
|
||
channel = "移动端";
|
||
}
|
||
// 按钮位置和当前链接
|
||
var btnPosition = "价格页面按钮";
|
||
var curLink = sessionStorage.getItem("currentLink") || tool.getCookie("currentLink");
|
||
if (curLink == "") {
|
||
curLink = link;
|
||
}
|
||
console.log("按钮位置+当前链接---" + btnPosition + "---" + curLink);
|
||
console.log("🚀 sourceUrl---", sourceUrl)
|
||
var vm = new Vue({
|
||
el: "#app",
|
||
data: {
|
||
advanI: 1,
|
||
problemI: 1,
|
||
codeText: '获取验证码',
|
||
count: 30,
|
||
timer: null,
|
||
tel: "",
|
||
cityValue: "",
|
||
city: "",
|
||
com: "",
|
||
typec: "价格页面",
|
||
telCodeStatus: false,
|
||
codeStatus: false,
|
||
telTips: "",
|
||
codeTips: "",
|
||
comTips: "",
|
||
cityTips: "",
|
||
buttonAble: false,
|
||
code: "",
|
||
state: "0",
|
||
options: provinceArr,
|
||
selectedOptions: [],
|
||
right: "",
|
||
like: [true, true, true, true, true, true],
|
||
dislike: [true, true, true, true, true, true],
|
||
tabV: 1,
|
||
priceDetailShowFlag: false,
|
||
priceDetailCloseShowFlag: false,
|
||
},
|
||
mixins: [mixins],
|
||
methods: {
|
||
/* ------- 显示关闭价格详情关闭按钮 ------- */
|
||
priceDetailCloseShow() {
|
||
let _this = this;
|
||
let priceDetail = document.querySelector(".price-detail-wrap");
|
||
if (priceDetail.scrollTop > 300) {
|
||
_this.priceDetailCloseShowFlag = true;
|
||
} else {
|
||
_this.priceDetailCloseShowFlag = false;
|
||
}
|
||
},
|
||
showPriceDetail() {
|
||
this.priceDetailShowFlag = true;
|
||
document.documentElement.style.overflowY = "hidden"
|
||
},
|
||
closePriceDetail() {
|
||
this.priceDetailShowFlag = false;
|
||
document.documentElement.style.overflowY = "auto"
|
||
},
|
||
problemLike(i) {
|
||
this.$set(this.like, i, false);
|
||
this.$set(this.dislike, i, true);
|
||
},
|
||
problemDislike(i) {
|
||
this.$set(this.dislike, i, false);
|
||
this.$set(this.like, i, true);
|
||
},
|
||
verifyTel: debounce(function () {
|
||
var RegExp = /^1[3-9][0-9]{9}$/;
|
||
if (vm.tel.trim() == "") {
|
||
vm.telTips = "请输入您的手机号";
|
||
vm.telCodeStatus = false;
|
||
} else if (!RegExp.test(vm.tel.trim())) {
|
||
vm.telTips = "请输入正确的手机号码";
|
||
vm.telCodeStatus = false;
|
||
} else {
|
||
vm.telTips = "";
|
||
vm.telCodeStatus = true;
|
||
}
|
||
}, 500),
|
||
getCode: throttle(function () {
|
||
btnPosition = "价格页面免费咨询按钮"
|
||
var RegExp = /^1[3-9][0-9]{9}$/;
|
||
if (vm.tel.trim() == "") {
|
||
Swal.fire({
|
||
title: '请输入您的手机号',
|
||
showConfirmButton: false,
|
||
timer: 1500
|
||
})
|
||
return false
|
||
} else if (!RegExp.test(vm.tel.trim())) {
|
||
Swal.fire({
|
||
title: '请输入正确的手机号码',
|
||
showConfirmButton: false,
|
||
timer: 1500
|
||
})
|
||
} 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;
|
||
}
|
||
}, 1000);
|
||
$.ajax({
|
||
url: "/apply/apply-code.php",
|
||
type: "post",
|
||
data: {
|
||
tel: vm.tel,
|
||
btn: btnPosition,
|
||
curLink: curLink,
|
||
protype: vm.typec,
|
||
sourceLink: sourceUrl,
|
||
channel: channel
|
||
},
|
||
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: 'holly.400',
|
||
time: new Date().getTime(),
|
||
actionName: "呼叫中心站试用申请",
|
||
verifyCode: ""
|
||
},
|
||
success: function (res) {
|
||
if (res.state == "sent") {//发送验证码成功,并且成功写入数据库,返回sent
|
||
return (vm.codeTips = "验证码已发送,请注意查收");
|
||
} else {//其他不成功的情况
|
||
return (vm.codeTips = "发送失败,请稍后再试");
|
||
}
|
||
}
|
||
});
|
||
}
|
||
}, 1500),
|
||
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),
|
||
handleChange() {
|
||
for (let i = 0; i < this.selectedOptions.length; i++) {
|
||
this.city = this.city + " " + CodeToText[this.selectedOptions[i]];
|
||
}
|
||
},
|
||
verify: function () {
|
||
btnPosition = "价格页面免费咨询按钮"
|
||
var mobilePattern = /^1[3-9][0-9]{9}$/;
|
||
if (vm.tel.trim() == "") {
|
||
Swal.fire({
|
||
title: '请输入您的手机号',
|
||
showConfirmButton: false,
|
||
timer: 1500
|
||
})
|
||
return false;
|
||
} else if (!mobilePattern.test(vm.tel.trim())) {
|
||
Swal.fire({
|
||
title: '请输入正确的手机号码',
|
||
showConfirmButton: false,
|
||
timer: 1500
|
||
})
|
||
return false;
|
||
} else if (vm.code.trim() == "") {
|
||
Swal.fire({
|
||
title: '请输入验证码',
|
||
showConfirmButton: false,
|
||
timer: 1500
|
||
})
|
||
return false;
|
||
} else if (vm.code.trim().length != 4) {
|
||
Swal.fire({
|
||
title: '请输入正确的验证码',
|
||
showConfirmButton: false,
|
||
timer: 1500
|
||
})
|
||
return false;
|
||
} else if (!vm.right) {
|
||
Swal.fire({
|
||
title: '请输入正确的验证码',
|
||
showConfirmButton: false,
|
||
timer: 1500
|
||
})
|
||
return false;
|
||
} else if (!this.city) {
|
||
Swal.fire({
|
||
type: 'error',
|
||
height: "300",
|
||
title: '请先选择地区',
|
||
showConfirmButton: false,
|
||
timer: 1500
|
||
})
|
||
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();
|
||
}
|
||
}
|
||
}
|
||
});
|
||
if (screen.availWidth !== 1280 && window.devicePixelRatio !== 1.5) {
|
||
AOS.init({
|
||
disable: "mobile",
|
||
duration: 600,
|
||
delay: 50,
|
||
easing: 'ease-in-out'
|
||
})
|
||
} else {
|
||
AOS.init({
|
||
disable: true,
|
||
duration: 600,
|
||
delay: 50,
|
||
easing: 'ease-in-out'
|
||
})
|
||
}
|