feat: add all equipment view with sorting, print functionality, and UI improvements
- Add "Всё оборудование" menu item with equipment sorted by inventory number - Add row numbering in all equipment view - Add print functionality for auditory view with "Проверено" column - Hide unnecessary columns (quantity, type, owner) when printing - Make cards full-width and responsive (container-fluid) - Consolidate CSS styles from static/css/index.css to frontend/styles.css - Fix text wrapping in "Расположение" column - Add sort_by_inv parameter to /oboruds/ API endpoint Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -5,10 +5,10 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>АСУ Инвентаризация</title>
|
||||
<link rel="stylesheet" href="/static/css/bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="/static/css/index.css" />
|
||||
<link rel="stylesheet" href="/app/styles.css" />
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<header class="no-print">
|
||||
<h1>
|
||||
<a href="/app/">АСУ Инвентаризация</a>
|
||||
</h1>
|
||||
@@ -26,6 +26,7 @@
|
||||
<div class="collapse navbar-collapse" id="navbarNav">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
<li class="nav-item"><a class="nav-link" href="#" @click.prevent="view='byAud'">По аудитории</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="#" @click.prevent="showAllEquipment">Всё оборудование</a></li>
|
||||
<li class="nav-item" v-if="isAdmin"><a class="nav-link" href="#" @click.prevent="view='users'">Пользователи</a></li>
|
||||
<li class="nav-item" v-if="isAdmin"><a class="nav-link" href="#" @click.prevent="view='audManage'">Аудитории</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="/docs" target="_blank">API Docs</a></li>
|
||||
@@ -39,20 +40,22 @@
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="container-fluid px-4">
|
||||
<div v-if="view==='byAud'" class="row">
|
||||
<div class="card col-md-10 col-10">
|
||||
<div class="card col-12">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title">Оборудование по аудитории</h3>
|
||||
<div class="mb-2 d-flex align-items-center gap-2">
|
||||
<h3 class="card-title no-print">Оборудование по аудитории</h3>
|
||||
<h2 class="print-only print-title">{{ printTitle }}</h2>
|
||||
<div class="mb-2 d-flex align-items-center gap-2 no-print">
|
||||
<label for="aud-select" class="me-2">Аудитория:</label>
|
||||
<select id="aud-select" class="form-select w-auto" v-model="selectedAudId">
|
||||
<option value="">— выберите аудиторию —</option>
|
||||
<option v-for="a in auditories" :key="a.id" :value="a.id">{{ a.audnazvanie }}</option>
|
||||
</select>
|
||||
<button class="btn btn-primary" @click="loadOboruds">Показать</button>
|
||||
<button class="btn btn-secondary" @click="printPage" :disabled="!oboruds.length">Печать</button>
|
||||
</div>
|
||||
<div class="status" :class="{error: !!error}">{{ status }}</div>
|
||||
<div class="status no-print" :class="{error: !!error}">{{ status }}</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table datatable">
|
||||
<thead>
|
||||
@@ -61,9 +64,10 @@
|
||||
<th scope="col">Инв. номер</th>
|
||||
<th scope="col">Название</th>
|
||||
<th scope="col">Расположение</th>
|
||||
<th scope="col">Кол-во</th>
|
||||
<th scope="col">Тип</th>
|
||||
<th scope="col">Владелец</th>
|
||||
<th scope="col" class="no-print">Кол-во</th>
|
||||
<th scope="col" class="no-print">Тип</th>
|
||||
<th scope="col" class="no-print">Владелец</th>
|
||||
<th scope="col" class="print-only">Проверено</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -72,9 +76,9 @@
|
||||
<td class="inv">{{ it.invNumber ?? '' }}</td>
|
||||
<td>{{ it.nazvanie ?? '' }}</td>
|
||||
<td class="rasp">{{ it.raspologenie ?? '' }}</td>
|
||||
<td>{{ it.kolichestvo ?? '' }}</td>
|
||||
<td>{{ it.type?.name ?? '' }}</td>
|
||||
<td>
|
||||
<td class="no-print">{{ it.kolichestvo ?? '' }}</td>
|
||||
<td class="no-print">{{ it.type?.name ?? '' }}</td>
|
||||
<td class="no-print">
|
||||
<template v-if="canEdit">
|
||||
<select class="form-select form-select-sm d-inline w-auto" v-model="it.selectedOwnerId">
|
||||
<option value="">— нет —</option>
|
||||
@@ -86,6 +90,42 @@
|
||||
{{ it.owner?.name ?? '' }}
|
||||
</template>
|
||||
</td>
|
||||
<td class="print-only"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="view==='allEquipment'" class="row">
|
||||
<div class="card col-12">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title">Всё оборудование (по инв. номеру)</h3>
|
||||
<div class="status" :class="{error: !!error}">{{ status }}</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table datatable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">№</th>
|
||||
<th scope="col">Инв. номер</th>
|
||||
<th scope="col">Название</th>
|
||||
<th scope="col">Аудитория</th>
|
||||
<th scope="col">Расположение</th>
|
||||
<th scope="col">Кол-во</th>
|
||||
<th scope="col">Владелец</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="(it, index) in allOboruds" :key="it.id">
|
||||
<td>{{ index + 1 }}</td>
|
||||
<td class="inv">{{ it.invNumber ?? '' }}</td>
|
||||
<td>{{ it.nazvanie ?? '' }}</td>
|
||||
<td>{{ getAuditoryName(it.aud_id) }}</td>
|
||||
<td class="rasp">{{ it.raspologenie ?? '' }}</td>
|
||||
<td>{{ it.kolichestvo ?? '' }}</td>
|
||||
<td>{{ it.owner?.name ?? '' }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -95,7 +135,7 @@
|
||||
</div>
|
||||
|
||||
<div v-if="view==='users'" class="row">
|
||||
<div class="card col-md-10 col-10">
|
||||
<div class="card col-12">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title">Администрирование пользователей</h3>
|
||||
<div v-if="role!=='admin'" class="alert alert-warning">Недостаточно прав. Войдите как администратор.</div>
|
||||
@@ -142,7 +182,7 @@
|
||||
</div>
|
||||
|
||||
<div v-if="view==='audManage'" class="row">
|
||||
<div class="card col-md-10 col-10">
|
||||
<div class="card col-12">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title">Управление аудиториями</h3>
|
||||
<div v-if="role!=='admin'" class="alert alert-warning">Недостаточно прав. Войдите как администратор.</div>
|
||||
@@ -183,7 +223,7 @@
|
||||
</div>
|
||||
|
||||
<div v-if="view==='owners'" class="row">
|
||||
<div class="card col-md-10 col-10">
|
||||
<div class="card col-12">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title">Управление владельцами</h3>
|
||||
<div v-if="!canEdit" class="alert alert-warning">Недостаточно прав. Войдите как администратор или редактор.</div>
|
||||
|
||||
Reference in New Issue
Block a user