записьнаприем.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. // Функция открытия всплывающего окна
  2. function showPopup(popupId) {
  3. document.getElementById(popupId).style.display = "block";
  4. }
  5. // Функция закрытия всплывающего окна
  6. function closePopup(popupId) {
  7. document.getElementById(popupId).style.display = "none";
  8. }
  9. // Обработчик события submit для формы
  10. document.getElementById("loginForm").addEventListener("submit", function(event) {
  11. event.preventDefault(); // Предотвращаем стандартную отправку формы
  12. // Получаем значения из полей формы
  13. const name = document.getElementById("name").value;
  14. const phone = document.getElementById("phone").value;
  15. const email = document.getElementById("email").value;
  16. const date = document.getElementById("date").value;
  17. const time = document.getElementById("time").value;
  18. const comment = document.getElementById("comment").value;
  19. // Проверяем, заполнены ли все поля формы
  20. if (name === "" || phone === "" || email === "" || date === "" || time === "" || comment === "") {
  21. // Если поля не заполнены, показываем ошибку
  22. document.getElementById("errorMessage").textContent = "Пожалуйста, заполните все поля формы.";
  23. showPopup("errorPopup");
  24. return;
  25. }
  26. // Проверяем, не является ли дата и время прошедшими
  27. const currentDate = new Date();
  28. const selectedDate = new Date(date + "T" + time);
  29. if (selectedDate < currentDate) {
  30. // Если дата и время прошедшие, показываем ошибку
  31. document.getElementById("errorMessage").textContent = "Выбрана прошедшая дата и/или время. Пожалуйста, выберите дату и время в будущем.";
  32. showPopup("errorPopup");
  33. return;
  34. }
  35. // Сохраняем данные в localStorage
  36. saveRecordToLocalStorage(name, phone, email, date, time, comment);
  37. // Показываем всплывающее окно с успешным сообщением
  38. showPopup("successPopup");
  39. loginForm.reset(); // Очистка формы
  40. });
  41. // Сохраняем данные в localStorage
  42. function saveRecordToLocalStorage(name, phone, email, date, time, comment) {
  43. let records = localStorage.getItem('priem');
  44. if (!records) {
  45. records = [];
  46. } else {
  47. records = JSON.parse(records);
  48. }
  49. records.push({ name, phone, email, date, time, comment });
  50. localStorage.setItem('priem', JSON.stringify(records));
  51. }
  52. // Функция для скачивания CSV-файла
  53. function tableToCSV() {
  54. const records = JSON.parse(localStorage.getItem('priem'));
  55. if (!records) {
  56. alert('Нет записей для сохранения!');
  57. return;
  58. }
  59. // Создаем объект Blob с типом данных "text/csv" и кодировкой "windows-1251"
  60. const blob = new Blob([
  61. "\uFEFF" + // BOM для корректного отображения кириллицы в Excel
  62. "ФИО,Номер телефона,Email,Дата,Время,Комментарий\n" +
  63. records.map(record => `${record.name},${record.phone},${record.email},${record.date},${record.time},${record.comment}`).join('\n')
  64. ], { type: 'text/csv;charset=windows-1251;' });
  65. // Создаем URL-адрес для объекта Blob
  66. const url = window.URL.createObjectURL(blob);
  67. // Создаем ссылку для скачивания файла
  68. const link = document.createElement("a");
  69. link.setAttribute("href", url);
  70. link.setAttribute("download", "прием.csv");
  71. // Добавляем ссылку на страницу, кликаем по ней и удаляем
  72. document.body.appendChild(link);
  73. link.click();
  74. document.body.removeChild(link);
  75. }
  76. // Чтение данных из csv файла
  77. document.getElementById('csvFileInput').addEventListener('change', function() {
  78. if (this.files && this.files[0]) {
  79. let reader = new FileReader();
  80. reader.onload = function(e) {
  81. let csvData = e.target.result;
  82. createTableFromCSV(csvData);
  83. };
  84. reader.readAsText(this.files[0]);
  85. }
  86. });
  87. function createTableFromCSV(csvData) {
  88. let rows = csvData.split('\n');
  89. let tableContent = '<thead><tr>';
  90. // Заголовки таблицы (первая строка CSV)
  91. let headers = rows[0].split(',');
  92. headers.forEach(header => {
  93. tableContent += `<th>${header}</th>`;
  94. });
  95. tableContent += '</tr></thead><tbody>';
  96. // Данные таблицы (остальные строки CSV)
  97. for (let i = 1; i < rows.length; i++) {
  98. let rowData = rows[i].split(',');
  99. tableContent += '<tr>';
  100. rowData.forEach(cellData => {
  101. tableContent += `<td>${cellData}</td>`;
  102. });
  103. tableContent += '</tr>';
  104. }
  105. tableContent += '</tbody>';
  106. document.getElementById('appointmentsTable').innerHTML = tableContent;
  107. }