175 lines
7.3 KiB
HTML
175 lines
7.3 KiB
HTML
<!doctype html>
|
||
<html lang="ru">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<title>Заявки на подключение — Алматы</title>
|
||
<link rel="stylesheet" href="style.css">
|
||
</head>
|
||
<body>
|
||
<header class="header">
|
||
<div class="header-left">
|
||
<h1>Заявки на подключение</h1>
|
||
<p class="subtitle">Отдел продаж филиала Алматы</p>
|
||
</div>
|
||
<div class="header-right">
|
||
<button class="btn btn-secondary" onclick="showTelegramSummary()">📊 Сводка в Telegram</button>
|
||
<button class="btn btn-secondary" onclick="exportToExcel()">📥 Выгрузить в Excel</button>
|
||
<button class="btn btn-primary" onclick="openModal()">+ Новая заявка</button>
|
||
</div>
|
||
</header>
|
||
|
||
<main class="main">
|
||
<section class="dashboard">
|
||
<div class="stat-card stat-new">
|
||
<div class="stat-value" id="count-new">0</div>
|
||
<div class="stat-label">Новые</div>
|
||
</div>
|
||
<div class="stat-card stat-work">
|
||
<div class="stat-value" id="count-work">0</div>
|
||
<div class="stat-label">В работе</div>
|
||
</div>
|
||
<div class="stat-card stat-duplicate">
|
||
<div class="stat-value" id="count-duplicate">0</div>
|
||
<div class="stat-label">Дубли</div>
|
||
</div>
|
||
<div class="stat-card stat-overdue">
|
||
<div class="stat-value" id="count-overdue">0</div>
|
||
<div class="stat-label">Просрочка</div>
|
||
</div>
|
||
<div class="stat-card stat-total">
|
||
<div class="stat-value" id="count-total">0</div>
|
||
<div class="stat-label">Всего</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="filters">
|
||
<div class="search-box">
|
||
<input type="text" id="search" placeholder="Поиск по ФИО, адресу, телефону..." oninput="renderTable()">
|
||
</div>
|
||
<div class="status-filters">
|
||
<button class="filter-btn active" data-status="all" onclick="setFilter('all')">Все</button>
|
||
<button class="filter-btn" data-status="новая" onclick="setFilter('новая')">Новые</button>
|
||
<button class="filter-btn" data-status="в работе" onclick="setFilter('в работе')">В работе</button>
|
||
<button class="filter-btn" data-status="на проверке" onclick="setFilter('на проверке')">На проверке</button>
|
||
<button class="filter-btn" data-status="спорная" onclick="setFilter('спорная')">Спорные</button>
|
||
<button class="filter-btn" data-status="завершена" onclick="setFilter('завершена')">Завершена</button>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="table-section">
|
||
<table class="requests-table">
|
||
<thead>
|
||
<tr>
|
||
<th>Дата</th>
|
||
<th>ФИО</th>
|
||
<th>Телефон</th>
|
||
<th>Адрес</th>
|
||
<th>Тариф</th>
|
||
<th>Менеджер</th>
|
||
<th>Статус</th>
|
||
<th>Действия</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody id="table-body"></tbody>
|
||
</table>
|
||
</section>
|
||
</main>
|
||
|
||
<div class="modal" id="modal">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<h2 id="modal-title">Новая заявка</h2>
|
||
<button class="close-btn" onclick="closeModal()">×</button>
|
||
</div>
|
||
<form id="request-form" onsubmit="saveRequest(event)">
|
||
<input type="hidden" id="req-id">
|
||
<div class="form-row">
|
||
<div class="form-group">
|
||
<label>ФИО *</label>
|
||
<input type="text" id="req-name" required placeholder="Иванов Иван Иванович">
|
||
</div>
|
||
<div class="form-group">
|
||
<label>Телефон *</label>
|
||
<input type="tel" id="req-phone" required placeholder="+7 777 123 45 67">
|
||
</div>
|
||
</div>
|
||
<div class="form-row">
|
||
<div class="form-group">
|
||
<label>Адрес *</label>
|
||
<input type="text" id="req-address" required placeholder="г. Алматы, ул. Абая 10, кв. 5">
|
||
</div>
|
||
<div class="form-group">
|
||
<label>Тариф *</label>
|
||
<select id="req-tariff" required>
|
||
<option value="">Выберите тариф</option>
|
||
<option>Домашний интернет 50 Мбит/с</option>
|
||
<option>Домашний интернет 100 Мбит/с</option>
|
||
<option>Домашний интернет 500 Мбит/с</option>
|
||
<option>ТВ + Интернет</option>
|
||
<option>Тройной пакет</option>
|
||
<option>Бизнес тариф</option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
<div class="form-row">
|
||
<div class="form-group">
|
||
<label>Менеджер</label>
|
||
<input type="text" id="req-manager" placeholder="Фамилия И.О.">
|
||
</div>
|
||
<div class="form-group">
|
||
<label>Статус</label>
|
||
<select id="req-status">
|
||
<option value="новая">Новая</option>
|
||
<option value="в работе">В работе</option>
|
||
<option value="на проверке">На проверке</option>
|
||
<option value="спорная">Спорная</option>
|
||
<option value="завершена">Завершена</option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
<div class="form-group">
|
||
<label>Комментарий</label>
|
||
<textarea id="req-comment" rows="3" placeholder="Дополнительная информация..."></textarea>
|
||
</div>
|
||
<div class="form-actions">
|
||
<button type="button" class="btn btn-secondary" onclick="closeModal()">Отмена</button>
|
||
<button type="submit" class="btn btn-primary">Сохранить</button>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="modal" id="telegram-modal">
|
||
<div class="modal-content modal-small">
|
||
<div class="modal-header">
|
||
<h2>📊 Сводка для руководителя</h2>
|
||
<button class="close-btn" onclick="closeTelegramModal()">×</button>
|
||
</div>
|
||
<div class="telegram-content" id="telegram-content"></div>
|
||
<div class="form-actions">
|
||
<button class="btn btn-secondary" onclick="closeTelegramModal()">Закрыть</button>
|
||
<button class="btn btn-primary" onclick="copyTelegram()">📋 Копировать</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="modal" id="duplicate-modal">
|
||
<div class="modal-content modal-small">
|
||
<div class="modal-header">
|
||
<h2>⚠️ Возможный дубль</h2>
|
||
<button class="close-btn" onclick="closeDuplicateModal()">×</button>
|
||
</div>
|
||
<div class="duplicate-content" id="duplicate-content"></div>
|
||
<div class="form-actions">
|
||
<button class="btn btn-secondary" onclick="closeDuplicateModal()">Отмена</button>
|
||
<button class="btn btn-warning" onclick="confirmDuplicate()">Пометить как дубль</button>
|
||
<button class="btn btn-primary" onclick="keepBoth()">Оставить обе</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<script src="script.js"></script>
|
||
</body>
|
||
</html>
|