350 lines
17 KiB
HTML
350 lines
17 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||
<link href="https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">
|
||
<link rel="stylesheet" href="../styles/main.css">
|
||
<script src="../scripts/jquery.min.js"></script>
|
||
<script src="../scripts/helpPopup.js"></script>
|
||
<title>Заявка на пропуск</title>
|
||
<style>
|
||
body {
|
||
background-color: #EEEFF5;
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<header>
|
||
<a href="/account"><h1>Бюро пропусков / Личный кабинет</h1></a>
|
||
<nav>
|
||
<div class="dropdown">
|
||
<a class="help-button" onclick="toggleDropdown('dropdownHelp-1')">Техническая поддержка</a>
|
||
<div id="dropdownHelp-1" class="dropdown-help">
|
||
<a href="tel:83477527706">8 (34775) 2-77-06</a>
|
||
<a href="tel:89174023516">8 (917) 402-35-16</a>
|
||
</div>
|
||
</div>
|
||
<div class="dropdown">
|
||
<a class="help-button" onclick="toggleDropdown('dropdownHelp-2')">Инструкции</a>
|
||
<div id="dropdownHelp-2" class="dropdown-help dropdown-manual">
|
||
<a href="/docs/manual.pdf" target="_blank">Текст</a>
|
||
<a href="https://drive.google.com/file/d/1CxrAgr2brQclZqtbbreSUU9tN-jsNTwf/view?usp=sharing" target="_blank">Видео</a>
|
||
</div>
|
||
</div>
|
||
{{#if (eq Role 'legal')}}
|
||
<span>{{User.Наименование}}</span>
|
||
{{else}}
|
||
<span>{{User.Фамилия}} {{User.Имя}} {{User.Отчество}}</span>
|
||
{{/if}}
|
||
<a class="exit-button" href="/logout"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="16" fill="none" viewBox="0 0 20 16">
|
||
<path fill="#6B7A99" d="m4.016 7.13 2.608-2.606-1.226-1.226L.696 8l4.702 4.702 1.226-1.226L4.016 8.87h4.858V7.131H4.016ZM8.874.179v6.953h5.215V8.87H8.874v6.953h10.43V.178H8.873Z"/>
|
||
</svg>
|
||
</a>
|
||
</nav>
|
||
</header>
|
||
|
||
<form class="main-form" id="pass-form">
|
||
<h1>Новая заявка на пропуск</h1>
|
||
<div class="radio-inputs">
|
||
<label class="radio">
|
||
<input autocomplete="off" type="radio" id="temp-radio" name="form-type" value="temp" checked>
|
||
<span class="name">Временный пропуск</span>
|
||
</label>
|
||
<label class="radio">
|
||
<input autocomplete="off" type="radio" id="car-radio" name="form-type" value="car">
|
||
<span class="name">Автомобильный пропуск</span>
|
||
</label>
|
||
<label class="radio">
|
||
<input autocomplete="off" type="radio" id="tmc-radio" name="form-type" value="tmc">
|
||
<span class="name">Ввоз-Вывоз ТМЦ</span>
|
||
</label>
|
||
</div>
|
||
|
||
<div class="input-area" id="fullname-container">
|
||
<label>ФИО*</label>
|
||
<div class="fullname-input-group">
|
||
<input type="text" class="fullname-input" value="{{User.Фамилия}} {{User.Имя}} {{User.Отчество}}" required>
|
||
<button type="button" class="add-fullname">+</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="input-area">
|
||
<label for="legalname-input">Наименование организации</label>
|
||
<input type="text" id="legalname-input" value="{{User.Наименование}}">
|
||
</div>
|
||
<div class="input-area">
|
||
<label for="date-input">Дата посещения*</label>
|
||
<input type="date" id="date-input" required>
|
||
</div>
|
||
|
||
<div style="display: none;" class="inputs" id="car-inputs">
|
||
<div class="car-input-group" data-index="1">
|
||
<label>Номер автомобиля</label>
|
||
<input type="text" class="carnumber-input">
|
||
<label>Марка автомобиля</label>
|
||
<input type="text" class="carbrand-input">
|
||
<label>Модель автомобиля</label>
|
||
<input type="text" class="carmodel-input">
|
||
<label>Цвет автомобиля</label>
|
||
<input type="text" class="carcolor-input">
|
||
<button type="button" class="add-car">Добавить ещё автомобиль</button>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div style="display: none;" class="inputs" id="tmc-inputs">
|
||
|
||
<div class="tmc-input-group" data-index="1">
|
||
<label>Наименование ТМЦ</label>
|
||
<input type="text" class="tmcname-input">
|
||
<label>Единица измерения</label>
|
||
<input type="text" class="tmcunit-input">
|
||
<label>Количество</label>
|
||
<input type="text" class="tmcquantity-input">
|
||
<button type="button" class="add-tmc">Добавить ещё ТМЦ</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="input-area">
|
||
<label for="text-input">Текст заявки</label>
|
||
<textarea id="text-input" cols="30" rows="10"></textarea>
|
||
</div>
|
||
<div class="form-info">
|
||
<p>В тексте формы указывайе всю информацию, которая может быть полезна при оформлении пропусков. Например, ФИО или номер автомобиля.</p>
|
||
</div>
|
||
<button style="margin-top: 15px;" type="submit" id="send-button">Оставить заявку</button>
|
||
</form>
|
||
|
||
<script>
|
||
|
||
function getCookie(name) {
|
||
var cookies = document.cookie.split(";");
|
||
for (var i = 0; i < cookies.length; i++) {
|
||
var cookie = cookies[i].trim();
|
||
if (cookie.startsWith(name + "=")) {
|
||
return cookie.substring(name.length + 1);
|
||
}
|
||
}
|
||
return null;
|
||
}
|
||
document.addEventListener("DOMContentLoaded", function() {
|
||
const passForm = document.getElementById("pass-form");
|
||
|
||
const carInputsContainer = document.getElementById("car-inputs");
|
||
|
||
let carIndex = 1;
|
||
|
||
function addCarInput() {
|
||
carIndex++;
|
||
const inputGroup = document.createElement("div");
|
||
inputGroup.classList.add("car-input-group");
|
||
inputGroup.setAttribute("data-index", carIndex);
|
||
inputGroup.innerHTML = `
|
||
<label>Номер автомобиля</label>
|
||
<input type="text" class="carnumber-input" required>
|
||
<label>Марка автомобиля</label>
|
||
<input type="text" class="carbrand-input" required>
|
||
<label>Модель автомобиля</label>
|
||
<input type="text" class="carmodel-input" required>
|
||
<label>Цвет автомобиля</label>
|
||
<input type="text" class="carcolor-input" required>
|
||
<button type="button" class="remove-car bright">Удалить этот автомобиль</button>
|
||
`;
|
||
carInputsContainer.appendChild(inputGroup);
|
||
|
||
inputGroup.querySelector(".remove-car").addEventListener("click", function() {
|
||
inputGroup.remove();
|
||
});
|
||
}
|
||
|
||
carInputsContainer.addEventListener("click", function(e) {
|
||
if (e.target.classList.contains("add-car")) {
|
||
addCarInput();
|
||
}
|
||
});
|
||
|
||
const tmcInputsContainer = document.getElementById("tmc-inputs");
|
||
|
||
let tmcIndex = 1;
|
||
|
||
function addTmcInput() {
|
||
tmcIndex++;
|
||
const inputGroup = document.createElement("div");
|
||
inputGroup.classList.add("tmc-input-group");
|
||
inputGroup.setAttribute("data-index", tmcIndex);
|
||
inputGroup.innerHTML = `
|
||
<label>Наименование ТМЦ</label>
|
||
<input type="text" class="tmcname-input" required>
|
||
<label>Единица измерения</label>
|
||
<input type="text" class="tmcunit-input" required>
|
||
<label>Количество</label>
|
||
<input type="text" class="tmcquantity-input" required>
|
||
<button type="button" class="remove-tmc bright">Удалить это ТМЦ</button>
|
||
`;
|
||
tmcInputsContainer.appendChild(inputGroup);
|
||
|
||
inputGroup.querySelector(".remove-tmc").addEventListener("click", function() {
|
||
inputGroup.remove();
|
||
});
|
||
}
|
||
|
||
tmcInputsContainer.addEventListener("click", function(e) {
|
||
if (e.target.classList.contains("add-tmc")) {
|
||
addTmcInput();
|
||
}
|
||
});
|
||
|
||
const fullnameContainer = document.getElementById("fullname-container");
|
||
|
||
function addFullnameInput() {
|
||
const inputGroup = document.createElement("div");
|
||
inputGroup.classList.add("fullname-input-group");
|
||
inputGroup.innerHTML = `
|
||
<input type="text" class="fullname-input" required>
|
||
<button type="button" class="remove-fullname bright">-</button>
|
||
`;
|
||
inputGroup.querySelector(".remove-fullname").addEventListener("click", function() {
|
||
inputGroup.remove();
|
||
});
|
||
fullnameContainer.appendChild(inputGroup);
|
||
}
|
||
|
||
fullnameContainer.addEventListener("click", function(e) {
|
||
if (e.target.classList.contains("add-fullname")) {
|
||
addFullnameInput();
|
||
}
|
||
});
|
||
|
||
passForm.addEventListener("submit", async function(event) {
|
||
event.preventDefault();
|
||
$('#send-button').addClass('inactive');
|
||
|
||
const formrole = '{{Role}}'
|
||
|
||
const passtext = $('#text-input').val();
|
||
|
||
const fullnames = Array.from(document.querySelectorAll(".fullname-input")).map(input => input.value);
|
||
const legalname = $('#legalname-input').val();
|
||
const date = $('#date-input').val();
|
||
|
||
var type;
|
||
|
||
if (document.getElementById('temp-radio').checked) {
|
||
type = "Временный";
|
||
// Отправляем запрос на сервер для авторизации
|
||
const response = await fetch("{{API_SERVER}}/passes/newform", {
|
||
method: "POST",
|
||
headers: {
|
||
"Content-Type": "application/json",
|
||
Authorization: getCookie("token"),
|
||
},
|
||
body: JSON.stringify({ formrole, passtext, type, fullnames, legalname, date })
|
||
});
|
||
if (response.status === 201) {
|
||
const data = await response.json();
|
||
alert("Ваша заявка принята к рассмотрению!")
|
||
|
||
window.location.href = "/";
|
||
$('#send-button').removeClass('inactive');
|
||
} else {
|
||
alert("Произошла ошибка при попытке отправить заявку");
|
||
$('#send-button').removeClass('inactive');
|
||
}
|
||
}
|
||
if (document.getElementById('car-radio').checked) {
|
||
type = "Автомобильный";
|
||
|
||
const carnumber = Array.from(document.querySelectorAll(".carnumber-input")).map(input => input.value);
|
||
const carbrand = Array.from(document.querySelectorAll(".carbrand-input")).map(input => input.value);
|
||
const carmodel = Array.from(document.querySelectorAll(".carmodel-input")).map(input => input.value);
|
||
const carcolor = Array.from(document.querySelectorAll(".carcolor-input")).map(input => input.value);
|
||
|
||
// Отправляем запрос на сервер для авторизации
|
||
const response = await fetch("{{API_SERVER}}/passes/newform", {
|
||
method: "POST",
|
||
headers: {
|
||
"Content-Type": "application/json",
|
||
Authorization: getCookie("token"),
|
||
},
|
||
body: JSON.stringify({ formrole, passtext, type, fullnames, legalname, date, carnumber, carbrand, carmodel, carcolor })
|
||
});
|
||
if (response.status === 201) {
|
||
const data = await response.json();
|
||
alert("Ваша заявка принята к рассмотрению!")
|
||
|
||
window.location.href = "/";
|
||
$('#send-button').removeClass('inactive');
|
||
} else {
|
||
alert("Произошла ошибка при попытке отправить заявку");
|
||
$('#send-button').removeClass('inactive');
|
||
}
|
||
}
|
||
if (document.getElementById('tmc-radio').checked) {
|
||
type = "ТМЦ";
|
||
|
||
const tmcname = Array.from(document.querySelectorAll(".tmcname-input")).map(input => input.value);
|
||
const tmcunit = Array.from(document.querySelectorAll(".tmcunit-input")).map(input => input.value);
|
||
const tmcquantity = Array.from(document.querySelectorAll(".tmcquantity-input")).map(input => input.value);
|
||
|
||
// Отправляем запрос на сервер для авторизации
|
||
const response = await fetch("{{API_SERVER}}/passes/newform", {
|
||
method: "POST",
|
||
headers: {
|
||
"Content-Type": "application/json",
|
||
Authorization: getCookie("token"),
|
||
},
|
||
body: JSON.stringify({ formrole, passtext, type, fullnames, legalname, date, tmcname, tmcunit, tmcquantity })
|
||
});
|
||
if (response.status === 201) {
|
||
const data = await response.json();
|
||
alert("Ваша заявка принята к рассмотрению!")
|
||
|
||
window.location.href = "/";
|
||
$('#send-button').removeClass('inactive');
|
||
} else {
|
||
alert("Произошла ошибка при попытке отправить заявку");
|
||
$('#send-button').removeClass('inactive');
|
||
}
|
||
}
|
||
|
||
});
|
||
});
|
||
|
||
|
||
</script>
|
||
<script src="https://rawgit.com/RobinHerbots/Inputmask/5.x/dist/jquery.inputmask.js"></script>
|
||
<script>
|
||
$(document).ready(function(){
|
||
|
||
$('#phone-input').inputmask({"mask": "+7 (999) 999-9999"});
|
||
$('#contactphone-input').inputmask({"mask": "+7 (999) 999-9999"});
|
||
|
||
});
|
||
</script>
|
||
<script>
|
||
const radioInputs = document.querySelectorAll('input[name="form-type"]');
|
||
const carInputs = document.getElementById('car-inputs');
|
||
const tmcInputs = document.getElementById('tmc-inputs');
|
||
|
||
radioInputs.forEach(input => {
|
||
input.addEventListener('change', function() {
|
||
if (this.checked) {
|
||
if (this.value === "car") {
|
||
carInputs.style.display = 'flex';
|
||
tmcInputs.style.display = 'none';
|
||
} else if (this.value === "tmc") {
|
||
carInputs.style.display = 'none';
|
||
tmcInputs.style.display = 'flex';
|
||
} else if (this.value === "temp") {
|
||
carInputs.style.display = 'none';
|
||
tmcInputs.style.display = 'none';
|
||
}
|
||
}
|
||
});
|
||
});
|
||
</script>
|
||
</body>
|
||
</html> |