Skip to content

Instantly share code, notes, and snippets.

@sergey-s-betke
Created December 25, 2021 08:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sergey-s-betke/98a46ed37425493545d10994d726ab73 to your computer and use it in GitHub Desktop.
Save sergey-s-betke/98a46ed37425493545d10994d726ab73 to your computer and use it in GitHub Desktop.
Сценарий отправки сведений о поверке с сайта ФСА
$(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