Загрузка данных


<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Список работников</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
    <style>
        :root {
            --rosatom-dark-blue: #003274;
            --rosatom-blue: #025EA1;
            --rosatom-light-blue: #6CACE4;
            --rosatom-grey: #7F7F7F;
            --rosatom-dark-grey: #333333;
            --rosatom-teal: #259789;
        }

        body { 
            background-color: #f4f6f9; 
            font-family: Arial, Helvetica, sans-serif;
            color: var(--rosatom-dark-grey);
        }

        h2 {
            color: var(--rosatom-dark-blue);
            font-weight: bold;
        }

        .search-block { 
            background: white; 
            padding: 20px; 
            border-radius: 8px; 
            box-shadow: 0 2px 8px rgba(0,0,0,0.08); 
            border-top: 4px solid var(--rosatom-dark-blue);
        }

        .table-wrapper { 
            overflow-x: auto; 
            margin-bottom: 20px; 
            background: white;
            border-radius: 8px;
            box-shadow: 0 2px 8px rgba(0,0,0,0.08);
        }

        table.table-bordered { 
            border: 1px solid #dee2e6; 
            margin-bottom: 0;
        }

        table.table-bordered th, table.table-bordered td { 
            border: 1px solid #dee2e6; 
            vertical-align: middle; 
            padding: 12px 15px;
        }

        thead.table-dark th { 
            background-color: var(--rosatom-dark-blue); 
            color: white; 
            border-color: var(--rosatom-dark-blue);
            font-weight: normal;
        }

        .table tbody tr.selected {
            background-color: var(--rosatom-light-blue) !important;
            color: white;
            cursor: pointer;
        }

        .table tbody tr:hover:not(.selected) {
            background-color: #f1f3f5;
            cursor: pointer;
        }

        /* Кнопки */
        .btn {
            font-family: Arial, Helvetica, sans-serif;
            border-radius: 4px;
            font-weight: 500;
        }

        #searchBtn {
            background-color: var(--rosatom-dark-blue);
            border-color: var(--rosatom-dark-blue);
            color: white;
        }
        #searchBtn:hover {
            background-color: var(--rosatom-blue);
            border-color: var(--rosatom-blue);
            color: white;
        }

        #resetBtn {
            background-color: var(--rosatom-grey);
            border-color: var(--rosatom-grey);
            color: white;
        }
        #resetBtn:hover {
            background-color: var(--rosatom-dark-grey);
            border-color: var(--rosatom-dark-grey);
            color: white;
        }

        #selectBtn {
            background-color: var(--rosatom-teal);
            border-color: var(--rosatom-teal);
            color: white;
        }
        #selectBtn:hover:not(:disabled) {
            background-color: #1e7a6e;
            border-color: #1e7a6e;
            color: white;
        }
        #selectBtn:disabled {
            background-color: #a0c4e8;
            border-color: #a0c4e8;
            opacity: 0.7;
            cursor: not-allowed;
        }

        #selectedTabnum {
            display: none;
        }
    </style>
</head>
<body>
    <div class="container mt-5">
        <h2 class="mb-4 text-center">Список работников</h2>

        <!-- Важно: action="/" исправляет ошибку поиска -->
        <form id="selectForm" method="get" action="/">
            <div class="table-wrapper">
                <table class="table table-bordered table-hover" id="workerTable">
                    <thead class="table-dark">
                        <tr>
                            {% for col in column_names %}
                            <th>{{ col }}</th>
                            {% endfor %}
                        </tr>
                    </thead>
                    <tbody>
                        {% for row in rows %}
                        <tr data-tabnum="{{ row[0] }}">
                            <td>{{ row[0] }}</td>
                            <td>{{ row[1] }}</td>
                            <td>{{ row[2] }}</td>
                            <td>{{ row[3] }}</td>
                            <td>{{ row[4] }}</td>
                        </tr>
                        {% endfor %}
                    </tbody>
                </table>
            </div>

            <input type="hidden" id="selectedTabnum" name="tabnum" value="">

            <div class="search-block mt-3">
                <div class="row g-3 align-items-end">
                    <div class="col-md-3">
                        <label for="tabnum" class="form-label">Табельный номер</label>
                        <input type="text" class="form-control" id="tabnum" name="tabnum_search" value="{{ search_tabnum }}" placeholder="Например, 06520001">
                    </div>
                    <div class="col-md-3">
                        <label for="fam" class="form-label">Фамилия</label>
                        <input type="text" class="form-control" id="fam" name="fam" value="{{ search_fam }}" placeholder="Иванов">
                    </div>
                    <div class="col-md-6 d-flex gap-2">
                        <button type="submit" class="btn flex-grow-1" id="searchBtn">Поиск</button>
                        <a href="/" class="btn flex-grow-1" id="resetBtn">Сбросить</a>
                        <button type="button" class="btn btn-select flex-grow-1" id="selectBtn" disabled>Выбрать</button>
                    </div>
                </div>
            </div>
        </form>

        <script>
            (function() {
                const table = document.getElementById('workerTable');
                const rows = table.querySelectorAll('tbody tr');
                const selectBtn = document.getElementById('selectBtn');
                const selectedInput = document.getElementById('selectedTabnum');
                const selectForm = document.getElementById('selectForm');

                let selectedRow = null;

                function clearSelection() {
                    rows.forEach(row => row.classList.remove('selected'));
                    selectedRow = null;
                    selectBtn.disabled = true;
                    selectedInput.value = '';
                }

                function selectRow(row) {
                    clearSelection();
                    row.classList.add('selected');
                    selectedRow = row;
                    const tabnum = row.getAttribute('data-tabnum');
                    selectedInput.value = tabnum;
                    selectBtn.disabled = false;
                }

                rows.forEach(row => {
                    row.addEventListener('click', function(e) {
                        selectRow(this);
                    });
                });

                selectBtn.addEventListener('click', function() {
                    const tabnum = selectedInput.value;
                    if (tabnum) {
                        selectForm.action = '/employee/' + tabnum + '/children';
                        selectForm.submit();
                    }
                });
            })();
        </script>
    </div>
</body>
</html>