Created
December 25, 2021 08:55
-
-
Save sergey-s-betke/98a46ed37425493545d10994d726ab73 to your computer and use it in GitHub Desktop.
Сценарий отправки сведений о поверке с сайта ФСА
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$(document).ready(function() { | |
var q = $("#modal-metrology-report"); | |
var f = "../../../php/reports_send/metrology_report_send.php"; | |
var H = $("#send_metrology_report"); | |
H.attr("disabled", true); | |
var J = $("#metrology_footer"); | |
var e = $("#metrology_file_field_text"); | |
var F = $("#metrology_file_upload_wrapper"); | |
var b = $("#metrology_org_type"); | |
var C = $("#metrology_report_att_accr"); | |
var G = $("#metrology_report_att_accr_type"); | |
var t = $("#metrology_report_flk_att_accr"); | |
var g = $("#metrology_email"); | |
var o = $("#metrology_flk_email"); | |
var L = $("#metrology_methods_form"); | |
var y = $("#metrology_standard_samples_form"); | |
var n = $("#metrology_type_assertion_form"); | |
var l = $("#metrology_measurements_form"); | |
var d = $("#metrology_docs_expertise_form"); | |
var k = $("#metrology_measurements_calibration_form"); | |
var E = [L, y, n, l, d, k]; | |
var B = { | |
attestation_cert_date: $("#metrology_attestation_cert_date"), | |
attestation_cert_number: $("#metrology_attestation_cert_number"), | |
methodics_name: $("#metrology_methodics_name"), | |
methodics_attestation_cert_number: $("#metrology_methodics_attestation_cert_number") | |
}; | |
var i = { | |
standard_sample: $("#metrology_standard_sample"), | |
tests_dates: $("#metrology_tests_dates"), | |
standard_tests_surname: $("#metrology_standard_tests_surname"), | |
standard_tests_name: $("#metrology_standard_tests_name"), | |
standard_tests_patronymic: $("#metrology_standard_tests_patronymic"), | |
standard_tests_address: $("#metrology_standard_tests_address"), | |
standard_specialist_visit_dates: $("#metrology_standard_specialist_visit_dates"), | |
standard_factory_numbers: $("#metrology_standard_factory_numbers") | |
}; | |
var j = { | |
type_standard_sample: $("#metrology_type_standard_sample"), | |
type_tests_dates: $("#metrology_type_tests_dates"), | |
type_tests_surname: $("#metrology_type_tests_surname"), | |
type_tests_name: $("#metrology_type_tests_name"), | |
type_tests_patronymic: $("#metrology_type_tests_patronymic"), | |
type_tests_address: $("#metrology_type_tests_address"), | |
type_specialist_visit_dates: $("#metrology_type_specialist_visit_dates"), | |
type_check_methods: $("#metrology_type_check_methods"), | |
type_measurements_fullname: $("#metrology_type_measurements_fullname"), | |
type_factory_numbers: $("#metrology_type_factory_numbers") | |
}; | |
var h = { | |
measurements_check_number: $("#metrology_measurements_check_number"), | |
measurements_check_date: $("#metrology_measurements_check_date"), | |
measurements_limitation: $("#metrology_measurements_limitation"), | |
measurements_measurement_type: $("#metrology_measurements_measurement_type"), | |
measurements_measurement_result: $("#metrology_measurements_measurement_result"), | |
measurements_verification_surname: $("#metrology_measurements_verification_surname"), | |
measurements_verification_name: $("#metrology_measurements_verification_name"), | |
measurements_verification_patronymic: $("#metrology_measurements_verification_patronymic") | |
}; | |
var u = { | |
docs_expertise_docname: $("#metrology_docs_expertise_docname"), | |
docs_expertise_conclusion_number: $("#metrology_docs_expertise_conclusion_number"), | |
docs_expertise_conclusion_date: $("#metrology_docs_expertise_conclusion_date"), | |
docs_expertise_surname: $("#metrology_docs_expertise_surname"), | |
docs_expertise_name: $("#metrology_docs_expertise_name"), | |
docs_expertise_patronymic: $("#metrology_docs_expertise_patronymic") | |
}; | |
var p = { | |
measurements_calibration_number: $("#metrology_measurements_calibration_number"), | |
measurements_calibration_date: $("#metrology_measurements_calibration_date"), | |
measurements_calibration_measurement_type: $("#metrology_measurements_calibration_measurement_type"), | |
measurements_calibration_surname: $("#metrology_measurements_calibration_surname"), | |
measurements_calibration_name: $("#metrology_measurements_calibration_name"), | |
measurements_calibration_patronymic: $("#metrology_measurements_calibration_patronymic") | |
}; | |
var w = [B, i, j, h, u, p]; | |
var A = $("#metrology_report_file"); | |
var I = $("#metrology_report_upload_container"); | |
var z = []; | |
var K = $("#metrology_uploaded_files"); | |
var x = $("#metrology_control"); | |
var c = 0; | |
C.on("input", function() { | |
t.empty() | |
}); | |
var s = { | |
onChange: function(M, P, O, N) { | |
if (M.length < accr_length) { | |
t.empty(); | |
t.append('<p class = "uk-text-meta uk-text-danger uk-margin-remove">Введите номер аттестата полностью</p>'); | |
H.attr("disabled", true) | |
} else { | |
t.empty(); | |
H.attr("disabled", false) | |
} | |
}, | |
onComplete: function(M) { | |
t.empty(); | |
H.attr("disabled", false) | |
}, | |
translation: { | |
Z: { | |
pattern: /[а-я0-9]+$/i, | |
optional: false | |
}, | |
"9": { | |
pattern: /[0-9]+$/i, | |
optional: false | |
} | |
} | |
}; | |
function D() { | |
var M = $("#metrology_report_att_accr_type option:selected").val(); | |
switch (M) { | |
case "raru": | |
C.val(""); | |
accr_length = 6; | |
t.empty(); | |
C.mask("99ZZ99", s); | |
C.attr("placeholder", "000000 или 00АА00"); | |
return accr_length; | |
break; | |
case "rossb": | |
C.val(""); | |
accr_length = 12; | |
t.empty(); | |
C.mask("9.99999.9999", s); | |
C.attr("placeholder", "0.00000.0000"); | |
return accr_length; | |
break; | |
case "rossru": | |
C.val(""); | |
accr_length = 11; | |
t.empty(); | |
C.mask("9999.99ZZ99", s); | |
C.attr("placeholder", "0000.000000 или 0000.00АА00"); | |
return accr_length; | |
break; | |
case "ssf": | |
C.val(""); | |
accr_length = 14; | |
t.empty(); | |
C.mask("99ZZ.99ZZ99999", s); | |
C.attr("placeholder", "00АА.00АА00000"); | |
return accr_length; | |
break; | |
case "sark": | |
C.val(""); | |
accr_length = 11; | |
t.empty(); | |
C.mask("9999.999999", s); | |
C.attr("placeholder", "0000.000000"); | |
return accr_length; | |
break; | |
case "trpb": | |
C.val(""); | |
accr_length = 11; | |
t.empty(); | |
C.mask("ZZ.99", s); | |
C.attr("placeholder", "АА.00"); | |
return accr_length; | |
break; | |
case "num": | |
C.val(""); | |
accr_length = 10; | |
t.empty(); | |
C.mask("99999-9999", s); | |
C.attr("placeholder", "00000-0000"); | |
return accr_length; | |
break; | |
case "numthree": | |
C.val(""); | |
accr_length = 3; | |
t.empty(); | |
C.mask("999", s); | |
C.attr("placeholder", "000"); | |
return accr_length; | |
break; | |
case "numfour": | |
C.val(""); | |
accr_length = 4; | |
t.empty(); | |
C.mask("9999", s); | |
C.attr("placeholder", "0000"); | |
return accr_length; | |
break; | |
case "numfive": | |
C.val(""); | |
accr_length = 5; | |
t.empty(); | |
C.mask("99999", s); | |
C.attr("placeholder", "00000"); | |
return accr_length; | |
break; | |
case "numfivetwo": | |
C.val(""); | |
accr_length = 8; | |
t.empty(); | |
C.mask("99999-99", s); | |
C.attr("placeholder", "00000-00"); | |
return accr_length; | |
break; | |
case "numfivefour": | |
C.val(""); | |
accr_length = 10; | |
t.empty(); | |
C.mask("99999-9999", s); | |
C.attr("placeholder", "00000-0000"); | |
return accr_length; | |
break; | |
case "ltwotwo": | |
C.val(""); | |
accr_length = 10; | |
t.empty(); | |
C.mask("ZZ-99-99", s); | |
C.attr("placeholder", "АА-00-00"); | |
return accr_length; | |
break | |
} | |
} | |
D(); | |
G.change(function() { | |
D() | |
}); | |
b.on("change", function() { | |
m(); | |
v(); | |
switch (b.val()) { | |
case "methods": | |
F.hide(); | |
L.show(); | |
break; | |
case "standard_samples": | |
F.hide(); | |
y.show(); | |
break; | |
case "type_assertion": | |
F.hide(); | |
n.show(); | |
break; | |
case "measurements": | |
F.hide(); | |
l.show(); | |
break; | |
case "docs_expertise": | |
e.text("Максимальное количество вложений к обращению — 1 файл (скан копия заключения)"); | |
F.show(); | |
d.show(); | |
break; | |
case "measurements_calibration": | |
e.text("Максимальное количество вложений к обращению — 1 файл (скан копия свидетельства о калибровке)"); | |
F.show(); | |
k.show(); | |
break | |
} | |
}); | |
b.change(); | |
g.on("input", function() { | |
var M = /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i; | |
o.empty(); | |
g.removeClass("uk-form-success"); | |
g.removeClass("uk-form-danger"); | |
if (g.val().search(M) === 0) { | |
H.attr("disabled", false) | |
} else { | |
g.addClass("uk-form-danger"); | |
o.append('<p class = "uk-text-meta uk-text-danger uk-margin-remove">Укажите корректный e-mail</p>'); | |
H.attr("disabled", true) | |
} | |
}); | |
H.click(function() { | |
$(this).blur(); | |
if (z.length !== 1 && (b.val() === "docs_expertise" || b.val() === "measurements_calibration")) { | |
UIkit.notification({ | |
message: "Необходимо прикрепить файл", | |
status: "danger", | |
pos: "top-right", | |
timeout: 5000 | |
}); | |
return | |
} | |
var N; | |
var O = ""; | |
switch (b.val()) { | |
case "methods": | |
N = B; | |
O = "methods"; | |
break; | |
case "standard_samples": | |
N = i; | |
O = "standard_samples"; | |
break; | |
case "type_assertion": | |
N = j; | |
O = "type_assertion"; | |
break; | |
case "measurements": | |
N = h; | |
O = "measurements"; | |
break; | |
case "docs_expertise": | |
N = u; | |
O = "docs_expertise"; | |
break; | |
case "measurements_calibration": | |
N = p; | |
O = "measurements_calibration"; | |
break | |
} | |
var M = 0; | |
Object.keys(N).forEach(function(Q) { | |
if (N[Q].val().length < 1 && Q !== "standard_tests_address" && Q !== "standard_specialist_visit_dates" && Q !== "type_tests_address" && Q !== "type_specialist_visit_dates") { | |
M++; | |
N[Q].addClass("uk-form-danger"); | |
setTimeout((function() { | |
N[Q].removeClass("uk-form-danger") | |
} | |
), 3000) | |
} | |
}); | |
if (M > 0) { | |
UIkit.notification({ | |
message: "Проверьте корректность <br> заполнения полей", | |
status: "danger", | |
pos: "top-right", | |
timeout: 3000 | |
}) | |
} else { | |
var P = new FormData(); | |
P.append("form_type", O); | |
P.append("accr_cert_num", G.find(":selected").text() + C.val()); | |
P.append("metrology_email", g.val()); | |
Object.keys(N).forEach(function(Q) { | |
P.append(Q, N[Q].val()) | |
}); | |
if (z.length !== 0) { | |
$.each(z, function(R, Q) { | |
P.append("file[" + R + "]", Q) | |
}) | |
} | |
$.ajax({ | |
type: "POST", | |
url: f, | |
cache: false, | |
contentType: false, | |
processData: false, | |
data: P, | |
dataType: "json", | |
beforeSend: function() { | |
UIkit.notification({ | |
message: "Письмо отправляется. <br> Пожалуйста, ожидайте...", | |
status: "success", | |
pos: "top-right", | |
timeout: 5000 | |
}); | |
A.prop("disabled", true); | |
H.prop("disabled", true); | |
J.append('<div id = "spinner" uk-spinner></div>') | |
}, | |
success: function(Q) { | |
if (Q.status === "sended") { | |
UIkit.notification({ | |
message: "Письмо отправлено!", | |
status: "success", | |
pos: "top-right", | |
timeout: 100000 | |
}); | |
J.find("div[id^=spinner]").remove(); | |
A.val(""); | |
z.length = 0; | |
A.prop("disabled", false); | |
K.empty(); | |
v(); | |
UIkit.modal(q).hide() | |
} else { | |
J.find('div[id^="spinner"]').remove(); | |
A.prop("disabled", false); | |
H.prop("disabled", false); | |
UIkit.notification({ | |
message: "Ошибка <br>" + Q.status, | |
status: "danger", | |
pos: "top-right", | |
timeout: 3000 | |
}) | |
} | |
}, | |
complete: function() {}, | |
error: function(S, Q, R) { | |
J.find('div[id^="spinner"]').remove(); | |
A.prop("disabled", false); | |
H.prop("disabled", false); | |
console.warn(S.responseText); | |
UIkit.notification({ | |
message: "Ошибка <br>Error" + S.responseText + " - " + Q + " - " + R, | |
status: "warning", | |
pos: "top-right", | |
timeout: 10000 | |
}) | |
} | |
}) | |
} | |
}); | |
A.focus(function() { | |
$("label").addClass("focus") | |
}).focusout(function() { | |
$("label").removeClass("focus") | |
}); | |
I.on("drag dragstart dragend dragover dragenter dragleave drop", function() { | |
return false | |
}); | |
I.on("dragover dragenter", function() { | |
I.addClass("dragover") | |
}); | |
I.on("dragleave", function(O) { | |
var N = O.pageX - I.offset().left; | |
var M = O.pageY - I.offset().top; | |
if ((N < 0) || (N > I.width()) || (M < 0) || (M > I.height())) { | |
I.removeClass("dragover") | |
} | |
}); | |
I.on("drop", function(O) { | |
I.removeClass("dragover"); | |
var N = O.originalEvent.dataTransfer.files; | |
a(N, K); | |
var M = $("body").find(".file_delete"); | |
M.off().click(function() { | |
r($(this).parent(), $(this), $(this).siblings(".filename")) | |
}) | |
}); | |
A.change(function() { | |
a(this.files, K); | |
var M = $("body").find(".file_delete"); | |
M.off().click(function() { | |
r($(this).parent(), $(this), $(this).siblings(".filename")) | |
}) | |
}); | |
function a(M, N) { | |
var R = 0; | |
x.empty(); | |
for (var P = 0; P < M.length; P++) { | |
if (M[P].size <= 5242880) { | |
c++; | |
z.push(M[P]); | |
N.append('<div class = "uk-flex uk-flex-row uk-flex-middle"><p class = "uk-margin-remove uk-text-secondary filename">' + M[P].name + '</p><span class = "uk-margin-small-left file_delete" uk-icon="icon: close; ratio: 0.8"></span></div>'); | |
R = N.find("div").length | |
} else { | |
x.empty(); | |
x.append('<p class = "uk-text-danger uk-margin-remove">Размер загружаемого файла не может быть больше 5 МБ</p>') | |
} | |
} | |
if (M.length > 1 || R > 1) { | |
x.append('<p class = "uk-text-danger uk-margin-remove">Максимальное количество вложений — 1 файл</p>'); | |
z = []; | |
N.empty() | |
} | |
var Q = 0; | |
for (var O = 0; O < z.length; O++) { | |
Q += z[O].size | |
} | |
if (Q > 5242880) { | |
x.append('<p class = "uk-text-danger uk-margin-remove">Суммарный объем файлов не должен превышать 5 МБ</p>'); | |
z = []; | |
N.empty() | |
} | |
return c | |
} | |
function r(P, O, M) { | |
c--; | |
P.remove(); | |
O.remove(); | |
for (var N = 0; N < z.length; N++) { | |
if (z[N].name === M.text()) { | |
z.splice(N, 1) | |
} | |
} | |
A.val("") | |
} | |
function m() { | |
E.forEach(function(M) { | |
M.hide() | |
}) | |
} | |
function v() { | |
C.val(""); | |
g.val(""); | |
w.forEach(function(M) { | |
Object.keys(M).forEach(function(N) { | |
M[N].val("") | |
}) | |
}) | |
} | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment