Files
ticket_dev/old/js/common.js

588 lines
21 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// contacts
// TG: https://t.me/wwdev
$(function() {
$(document).ready(function(){
$(".js-progress-mask").inputmask("99");
$(".js-inn-mask").inputmask("999999999999");
$(".js-code-mask").inputmask("999999");
$(".js-date-mask").inputmask("99-99-9999",{ "placeholder": "__-__-____" });
$(".js-inn-mask2").inputmask("9{10,12}");
$(".js-payed-mask").inputmask('currency', {
rightAlign: true
});
let month =['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'];
let days = ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс'];
var birthday = datepicker('input[name="birthday"]',
{
customOverlayMonths: month,
customMonths: month,
customDays: days,
maxDate: new Date(),
formatter: (input, date, instance) => {
const value = date.toLocaleDateString()
input.value = value // => '1/1/2099'
},
});
var contract_date = datepicker('input[name="contract_date"]',{
customOverlayMonths: month,
customMonths: month,
customDays: days,
maxDate: new Date(),
formatter: (input, date, instance) => {
const value = date.toLocaleDateString()
input.value = value // => '1/1/2099'
}
});
var contract_date = datepicker('input[name="claim_date"]',{
customOverlayMonths: month,
customMonths: month,
customDays: days,
maxDate: new Date(),
formatter: (input, date, instance) => {
const value = date.toLocaleDateString()
input.value = value // => '1/1/2099'
}
});
var phone = document.querySelectorAll('.js-phone-mask');
$('.js-phone-mask').inputmask('999 999-99-99');
phone.forEach(el => {
const iti = window.intlTelInput(el, {
initialCountry: 'ru',
separateDialCode: true,
customContainer: ".form-item",
excludeCountries: ["kz"],
autoPlaceholder: 'aggressive',
geoIpLookup: function(callback) {
$.get('https://ipinfo.io', null, 'jsonp').always(resp => callback((resp && resp.country) ? resp.country : ''));
},
utilsScript: "libs/intl-tel-input-master/build/js/utils.js",
});
});
$('.js-phone-mask').on('countrychange', e => {
let $this = $(e.currentTarget),
placeholder = $this.attr('placeholder'),
mask = placeholder.replace(/[0-9]/g, 9);
$this.val('').inputmask(mask);
let inputCode = $(".code"),
flag = document.querySelector(".iti__selected-flag"),
codeTitle = flag.getAttribute("title");
inputCode.val(codeTitle);
});
function declOfNum(number, words) {
return words[(number % 100 > 4 && number % 100 < 20) ? 2 : [2, 0, 1, 1, 1, 2][(number % 10 < 5) ? Math.abs(number) % 10 : 5]];
}
// Загрузка файла
$('input[type="file"]').on("change",function() {
console.log("change fired");
var i = $(this).prev('label').clone();
var file = $(this)[0].files[0].name;
var length=$(this)[0].files.length;
if(length==1) {$(this).next().text(file);}
if(length>=2) { $(this).next().text('Загружено '+length+' '+declOfNum(length, ['файл', 'файла', 'файлов']));}
updateSize($(this));
});
function updateSize(elem) {
var filesQty = elem[0].files.length;
if(filesQty>10) {
elem.closest('.form-item').find('.form-item__warning').text("Разрешено не более 10 файлов");
return;
}
elem.closest('.form-item').find('.form-item__warning').text('');
var formats = ['pdf','jpg','png','gif','jpeg'];
for(var i=0; i<filesQty; i++) {
var file = elem[0].files[i],
ext = "не определилось",
parts = file.name.split('.');
if (parts.length > 1) ext = parts.pop();
if(!formats.includes(ext)) {
elem.closest('.form-item').find('.form-item__warning').append('<div> Файл '+file.name+' не подходит по формату. Доступные форматы: .pdf, .jpg, .png, .gif </div>');
elem.addClass('error');
} else {
// elem.closest('.form-item').find('.form-item__warning').text();
if((file.size/1024/1024) > 5){
elem.closest('.form-item').find('.form-item__warning').append('<div>Размер файла '+file.name+' превышает 5 Мб. </div>');
} else {
elem.removeClass('error');
}
}
}
}
let index=1;
$('.js-btn-next').on("click",function(e){
e.preventDefault();
let isvalid=validate_step(index);
if(isvalid) {
index++;
$('.span-progress .current').text(index);
if(index==5) {
$(this).hide();
$('.btn--submit').show();
} else {
$(this).show();
$('.js-btn-prev').show();
}
$('.form-step').removeClass('active');
$('.form-step[data-step='+index+']').addClass('active');
}
});
$('.js-btn-prev').on("click",function(e){
e.preventDefault();
index--;
if(index==1) {$(this).hide();} else $(this).show();
if(index<1) index=1;
if(index<5) {
$('.btn--submit').hide();
$('.js-btn-next').show();
}
$('.span-progress .current').text(index);
$('.form-step').removeClass('active');
$('.form-step[data-step='+index+']').addClass('active');
});
$('select[name=claim]').on("change",function(e){
if($(this).val()=='Нет') {
$(this).closest('.form-step').find('input[type=text]').addClass('disabled');
$(this).closest('.form-step').find('input[type=file]').addClass('disabled');
$(this).closest('.form-step').find('input[type=file]').parent().addClass('disabled');
} else {
$(this).closest('.form-step').find('input[type=text]').removeClass('disabled');
$(this).closest('.form-step').find('input[type=file]').removeClass('disabled');
$(this).closest('.form-step').find('input[type=file]').parent().removeClass('disabled');
}
});
function validate_step(step_index){
let inputs=$('.form-step.active').find('input[type="text"], input[type="number"], input[type="file"],input[type="email"], textarea.form-input, input[type="checkbox"], select');
let all_filled=false;
let res_array=[];
inputs.each(function(e){
let field_fill=false;
if((($(this).val()=='' || $(this).find("option:selected")=='') && !$(this).hasClass('disabled') && !$(this).hasClass('notvalidate') && !$(this).hasClass('error') )) {
$(this).closest('.form-item').find('.form-item__warning').text('Пожалуйста, заполните все обязательные поля');
field_fill=false;
} else {
$(this).parent().find('.form-item__warning').text('');
if($(this).attr('type')=='email'){
if(validateEmail($(this).val())) {
field_fill=true;
} else {
field_fill=false;
$(this).parent().find('.form-item__warning').text($(this).data('warmes'));
}
} else {
field_fill=true;
}
if($(this).attr('type')=='checkbox'){
if($(this).is(':checked')){
field_fill=true;
$(this).parent().parent().find('.form-item__warning').text();
} else {
field_fill=false;
$(this).parent().parent().find('.form-item__warning').text('Пожалуйста, заполните все обязательные поля');
}
if(($(this).parent().hasClass('js-enable-inputs'))){
field_fill=true;
}
}
}
res_array.push(field_fill);
});
// if((step_index==3) && $('.form-step[data-step='+step_index+']').find('input[type="checkbox"]:checked').length<1) {
// $('.form__warning').show();
// $('.form__warning').text('Выберите хотя 1 страховой случай');
// return false;
// } else {
// $('.form__warning').text('Пожалуйста, заполните все обязательные поля');
// }
if(!res_array.includes(false)){
$('.form__warning').hide();
return true;
} else {
$('.form__warning').show();
return false;
}
}
const validateEmail = (email) => {
return email.match(
/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
);
};
$('.js-enable-inputs input[type=checkbox]').on("change",function(e){
e.preventDefault();
$(this).closest('.form-item').find('input[type=file]').toggleClass('disabled');
$(this).closest('.form-item').find('input[type=file]+label').toggleClass('disabled');
});
function send_sms(){
var sended_code = Math.floor(Math.random()*(999999-100000+1)+100000);
var smsFormData = new FormData();
smsFormData.append('smscode',sended_code);
smsFormData.append('phonenumber',$('[name="phonenumber"]').val());
$.ajax({
url: '/sms-test.php',
method: 'post',
cache: false,
contentType: false,
processData: false,
data: smsFormData,
dataType : 'json',
success: function(data) {
console.log(data);
return false;
},
error: function (jqXHR, exception) {
return false;
}
});
$('.js-code-warning').text('Код отправлен на ваш номер телефона');
$.fancybox.open({
src: '#confirm_sms',
type: 'inline'
});
$('.fancybox-close-small').click(function(e) {
$('button[type="submit"]').attr("disabled", false);
$('button[type="submit"]').attr("disabled", false);
$('button[type="submit"]').text("Подать обращение");
});
return sended_code;
}
function countDown(elm, duration, fn){
// Set the date we're counting down to
var countDownDate = new Date().getTime() + (1000 * duration);
// Update the count down every 1 second
var x = setInterval(function() {
// Get today's date and time
var now = new Date().getTime();
// Find the distance between now and the count down date
var distance = countDownDate - now;
// Time calculations for days, hours, minutes and seconds
var days = Math.floor(distance / (1000 * 60 * 60 * 24));
var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
// Output the result in an element with id="demo"
elm.innerHTML = minutes + "м " + seconds + "с ";
// If the count down is over, write some text
if (distance < 0) {
clearInterval(x);
fn();
elm.innerHTML = "";
$('.sms-countdown').hide();
}
}, 1000);
}
$('.js-send-sms').on('click', function(e) {
$('.form form').submit();
$('.js-send-sms').hide();
$('.js-code-warning').show();
});
$('.form form').submit(function(e){
if(!validate_step(index)){ e.preventDefault(); } else {
$('.sms-countdown').show();
countDown(document.querySelector('.sms-countdown .time'), 120, function(){
$('.js-send-sms').show();
$('.sms-checking button.js-accept-sms').hide();
$('.js-code-warning').hide();
})
let sended_code=send_sms();
e.preventDefault();
$('button[type="submit"]').attr("disabled", true);
$('.sms-checking button.js-accept-sms').show()
$('.sms-checking button.js-accept-sms').on('click', function(e) {
e.preventDefault();
if($('.sms-checking input[type="text"]').val() == sended_code) {
$('.js-code-warning').text('');
$('.js-code-warning').hide();
$('.js-send-sms').hide();
$('.loader-wrap').removeClass('d-none');
$('button[type="submit"]').attr("disabled", false);
$('button[type="submit"]').text("Данные отправляются...");
var formData = new FormData();
jQuery.each(jQuery('input[type=file].js-attach'), function(i, file) {
let field_name=jQuery(this).data('crm_name');
jQuery.each(jQuery(this)[0].files, function(i, file) {
formData.append(field_name+'-'+i, file);
});
});
// jQuery.each(jQuery('input[name=contract_file]')[0].files, function(i, file) {
// formData.append('file_15_1-'+i, file);
// });
// jQuery.each(jQuery('input[name=pay_confirm]')[0].files, function(i, file) {
// formData.append('file_15_2-'+i, file);
// });
// jQuery.each(jQuery('input[name=programm_file]')[0].files, function(i, file) {
// formData.append('file_15_3-'+i, file);
// });
// jQuery.each(jQuery('input[name=screen]')[0].files, function(i, file) {
// formData.append('file_15_4-'+i, file);
// });
// jQuery.each(jQuery('input[name=claim_file]')[0].files, function(i, file) {
// formData.append('file_15_5-'+i, file);
// });
// jQuery.each(jQuery('input[name=claim_file_respons]')[0].files, function(i, file) {
// formData.append('file_15_6-'+i, file);
// });
// jQuery.each(jQuery('input[name=pay_return]')[0].files, function(i, file) {
// formData.append('file_15_7-'+i, file);
// });
// jQuery.each(jQuery('input[name=other_docs]')[0].files, function(i, file) {
// formData.append('file_15_8-'+i, file);
// });
//направление обращения
formData.append('cf_1187',jQuery('[name="cf_1187"]').val()); // Личные данные
formData.append('firstname',jQuery('[name="firstname"]').val()); //фамилия
formData.append('lastname',jQuery('[name="lastname"]').val()); // имя
formData.append('cf_1157',jQuery('[name="patronymic"]').val()); // отчество
formData.append('mobile',jQuery('[name="phonenumber"]').val()); // мобильный телефон
formData.append('email',jQuery('[name="email"]').val()); // электронная почта
formData.append('mailingstreet',jQuery('[name="mailingstreet"]').val()); // адрес регистрации
formData.append('birthday',jQuery('[name="birthday"]').val()); // день рождения
formData.append('cf_1263',jQuery('[name="born_adres"]').val()); // место рождения
formData.append('cf_1257',jQuery('[name="inn"]').val()); // ИНН заявителя
formData.append('cf_1273',jQuery('[name="requisite"]').val()); // банковские реквизиты
formData.append('description',jQuery('[name="message"]').val()); // Опишите подробно причину обращения
formData.append('cf_1786',jQuery('[name="cf_1786"]').val()); // Причина обращения
//контрагент
formData.append('cf_1161',jQuery('[name="contr_name"]').val()); // наименование контаргента
formData.append('cf_1163',jQuery('[name="contr_inn"]').val()); // ИНН контрагента
formData.append('cf_1165',jQuery('[name="contr_adres"]').val()); // юридический адрес контрагента
formData.append('cf_1167',jQuery('[name="contr_email"]').val()); //email контрагента
formData.append('cf_1560',jQuery('[name="contr_phone"]').val()); // телефон контрагента
formData.append('cf_1558',jQuery('[name="contr_website"]').val()); // сайт контрагента
//сведения о договоре
formData.append(' cf_1173',jQuery('[name="contract_date"]').val()); //дата заключения договора
formData.append(' cf_1171',jQuery('[name="payed"]').val()); // Оплачено за обучение, рублей.
formData.append(' cf_1169',jQuery('[name="programm"]').val()); // Образовательная программа
formData.append(' cf_1461',jQuery('[name="study_progress"]').val()); // прогресс обучения
//претензионный порядок
formData.append('cf_1415',jQuery('[name="claim"]').val()); //Самостоятельно соблюден претензионный порядок
formData.append('cf_1181',jQuery('[name="claim_date"]').val()); //Дата направления претензии
formData.append('cf_1183',jQuery('[name="claym_return"]').val()); //Вернули в претензионном порядке
//прочее
formData.append('cf_1706',jQuery('[name="code"]').val()); //код подтверждения из смс
formData.append('cf_1738',jQuery('[name="agree"]').val()); //согласие на сайте
formData.append('cf_1590',jQuery('[name="cf_1590"]').val()); // ip
formData.append('cf_1592',jQuery('[name="cf_1592"]').val()); // регион
formData.append('cf_1834',jQuery('[name="cf_1834"]').val()); //REF
$.ajax({
url: '/server.php',
method: 'post',
cache: false,
contentType: false,
processData: false,
data: formData,
dataType : 'json',
success: function(data) {
if(data == 'Message has been sent') {
alert('success! Ваше обращение направлено');
}
},
error: function (jqXHR, exception) {
if (jqXHR.status === 0) {
alert('Not connect. Verify Network.');
} else if (jqXHR.status == 404) {
alert('Requested page not found (404).');
} else if (jqXHR.status == 500) {
alert('Internal Server Error (500).');
} else if (exception === 'parsererror') {
// alert('Requested JSON parse failed.');
setTimeout(function(){
$('.loader-wrap').addClass('d-none');
$.fancybox.close();
$.fancybox.open({
src: '#success_modal',
type: 'inline'
});
setTimeout(function(){
$.fancybox.close();
// form.trigger("reset");
},3000)
setTimeout(function(){
window.location.href = "https://clientright.ru/donesend";
},3000)
},3000)
$('button[type="submit"]').text("Отправить");
} else if (exception === 'timeout') {
alert('Time out error.');
} else if (exception === 'abort') {
alert('Ajax request aborted.');
} else {
alert('Uncaught Error. ' + jqXHR.responseText);
}
}
});
return false;
} else {
$('.js-code-warning').text('Неверный код');
return false;
}
});
}
});
});
$('input[name=contr_name],input[name=contr_adres],input[name=contr_inn]').keyup(function(e){
var sourceInput = $(this);
var query = $(this).val();
var settings = {
"url": "https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/party",
"method": "POST",
"timeout": 0,
"headers": {
"Authorization": "Token f5d6928d7490cd44124ccae11a08c7fa5625d48c",
"Content-Type": "application/json",
"Cookie": "__ddg1_=BoLd7l5yOCjL9tr6qUth"
},
"data": JSON.stringify({
"query": query
}),
};
$('.autocomplete__item').remove();
var address_array = [];
$.ajax(settings).done(function (response) {
for(let i=0; i<response.suggestions.length; i++) {
$('<div class="autocomplete__item" data-address="'+response.suggestions[i].data.address.value+'" data-inn="'+response.suggestions[i].data.inn+'">'+response.suggestions[i].value+'</div>').appendTo(sourceInput.closest('.form-item').find('.form-item__dropdown'));
}
});
});
$(document).on('click', '.autocomplete__item', function() {
let currentAutocompleteItem=$(this);
let prefix = $(this).closest('.autocomplete').data('groupename');
$('.'+prefix+'_name').val(currentAutocompleteItem.text());
$('.'+prefix+'_adres').val(currentAutocompleteItem.attr('data-address'));
$('.'+prefix+'_inn').val(currentAutocompleteItem.attr('data-inn'));
currentAutocompleteItem.closest('.form-item').find('.form-item__dropdown').empty();
});
function createSuggestions($form){
$form.find(".js-adres").suggestions({
token: "d2fa8613e186d54c6c62fc321414552353ffdfa8",
type: "ADDRESS",
});
$form.find("[name='firstname']").suggestions({
token: "d2fa8613e186d54c6c62fc321414552353ffdfa8",
type: "NAME",
});
$form.find("[name='lastname']").suggestions({
token: "d2fa8613e186d54c6c62fc321414552353ffdfa8",
type: "NAME",
});
$form.find("[name='patronymic']").suggestions({
token: "d2fa8613e186d54c6c62fc321414552353ffdfa8",
type: "NAME",
});
}
$(document).ready(function(){
setTimeout(function() {
var $form = $(".form form");
createSuggestions($form);
}, 1000);
})
});