ваше сообщение коммита
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
<BaseLayout>
|
||||
<div class="create-table-container">
|
||||
<h2>Создать новую таблицу</h2>
|
||||
<form v-if="isAdmin" @submit.prevent="handleCreateTable" class="create-table-form">
|
||||
<form v-if="canEdit" @submit.prevent="handleCreateTable" class="create-table-form">
|
||||
<label>Название таблицы</label>
|
||||
<input v-model="newTableName" required placeholder="Введите название" />
|
||||
<label>Описание</label>
|
||||
@@ -29,7 +29,10 @@
|
||||
<button type="button" @click="goBack">Отмена</button>
|
||||
</div>
|
||||
</form>
|
||||
<div v-else class="empty-table-placeholder">Нет прав для создания таблицы</div>
|
||||
<div v-else class="empty-table-placeholder">
|
||||
<p>Нет прав для создания таблицы</p>
|
||||
<button type="button" @click="goBack" class="btn btn-primary">Назад</button>
|
||||
</div>
|
||||
</div>
|
||||
</BaseLayout>
|
||||
</template>
|
||||
@@ -40,12 +43,14 @@ import { useRouter } from 'vue-router';
|
||||
import BaseLayout from '../../components/BaseLayout.vue';
|
||||
import tablesService from '../../services/tablesService';
|
||||
import { useAuthContext } from '@/composables/useAuth';
|
||||
import { usePermissions } from '@/composables/usePermissions';
|
||||
|
||||
const router = useRouter();
|
||||
const newTableName = ref('');
|
||||
const newTableDescription = ref('');
|
||||
const newTableIsRagSourceId = ref(2);
|
||||
const { isAdmin } = useAuthContext();
|
||||
const { canEdit } = usePermissions();
|
||||
|
||||
async function handleCreateTable() {
|
||||
if (!newTableName.value) return;
|
||||
@@ -128,4 +133,30 @@ function goBack() {
|
||||
.form-actions button[type="button"]:hover {
|
||||
background: #d5d5d5;
|
||||
}
|
||||
|
||||
.empty-table-placeholder {
|
||||
text-align: center;
|
||||
padding: 2em;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.empty-table-placeholder p {
|
||||
margin-bottom: 1.5em;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
.empty-table-placeholder .btn {
|
||||
background: #2ecc40;
|
||||
color: #fff;
|
||||
border: none;
|
||||
border-radius: 8px;
|
||||
padding: 0.5em 1.2em;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: background 0.2s;
|
||||
}
|
||||
|
||||
.empty-table-placeholder .btn:hover {
|
||||
background: #27ae38;
|
||||
}
|
||||
</style>
|
||||
@@ -16,10 +16,10 @@
|
||||
<h2>Удалить таблицу?</h2>
|
||||
<p>Вы уверены, что хотите удалить эту таблицу? Это действие необратимо.</p>
|
||||
<div class="actions">
|
||||
<button v-if="isAdmin" class="danger" @click="remove">Удалить</button>
|
||||
<button v-if="canDelete" class="danger" @click="remove">Удалить</button>
|
||||
<button @click="cancel">Отмена</button>
|
||||
</div>
|
||||
<div v-if="!isAdmin" class="empty-table-placeholder">Нет прав для удаления таблицы</div>
|
||||
<div v-if="!canDelete" class="empty-table-placeholder">Нет прав для удаления таблицы</div>
|
||||
</div>
|
||||
</BaseLayout>
|
||||
</template>
|
||||
@@ -28,9 +28,11 @@ import { useRoute, useRouter } from 'vue-router';
|
||||
import BaseLayout from '../../components/BaseLayout.vue';
|
||||
import axios from 'axios';
|
||||
import { useAuthContext } from '@/composables/useAuth';
|
||||
import { usePermissions } from '@/composables/usePermissions';
|
||||
const $route = useRoute();
|
||||
const router = useRouter();
|
||||
const { isAdmin } = useAuthContext();
|
||||
const { canDelete } = usePermissions();
|
||||
|
||||
async function remove() {
|
||||
await axios.delete(`/tables/${$route.params.id}`);
|
||||
|
||||
@@ -17,10 +17,10 @@
|
||||
<button class="nav-btn" @click="goToTables">Таблицы</button>
|
||||
<button class="nav-btn" @click="goToCreate">Создать таблицу</button>
|
||||
<button class="close-btn" @click="closeTable">Закрыть</button>
|
||||
<button v-if="isAdmin" class="action-btn" @click="goToEdit">Редактировать</button>
|
||||
<button v-if="isAdmin" class="danger-btn" @click="goToDelete">Удалить</button>
|
||||
<button v-if="canEdit" class="action-btn" @click="goToEdit">Редактировать</button>
|
||||
<button v-if="canDelete" class="danger-btn" @click="goToDelete">Удалить</button>
|
||||
</div>
|
||||
<UserTableView v-if="isAdmin" :table-id="Number($route.params.id)" />
|
||||
<UserTableView v-if="canRead" :table-id="Number($route.params.id)" />
|
||||
<div v-else class="empty-table-placeholder">Нет данных для отображения</div>
|
||||
</div>
|
||||
</BaseLayout>
|
||||
@@ -31,9 +31,11 @@ import BaseLayout from '../../components/BaseLayout.vue';
|
||||
import UserTableView from '../../components/tables/UserTableView.vue';
|
||||
import { useRoute, useRouter } from 'vue-router';
|
||||
import { useAuthContext } from '@/composables/useAuth';
|
||||
import { usePermissions } from '@/composables/usePermissions';
|
||||
const $route = useRoute();
|
||||
const router = useRouter();
|
||||
const { isAdmin } = useAuthContext();
|
||||
const { canRead, canEdit, canDelete } = usePermissions();
|
||||
|
||||
function closeTable() {
|
||||
if (window.history.length > 1) {
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<div class="tables-list-block">
|
||||
<button class="close-btn" @click="goBack">×</button>
|
||||
<h2>Список таблиц</h2>
|
||||
<UserTablesList v-if="isAdmin" />
|
||||
<UserTablesList v-if="canRead" />
|
||||
<div v-else class="empty-table-placeholder">Нет данных для отображения</div>
|
||||
</div>
|
||||
</BaseLayout>
|
||||
@@ -26,8 +26,10 @@ import BaseLayout from '../../components/BaseLayout.vue';
|
||||
import UserTablesList from '../../components/tables/UserTablesList.vue';
|
||||
import { useRouter } from 'vue-router';
|
||||
import { useAuthContext } from '@/composables/useAuth';
|
||||
import { usePermissions } from '@/composables/usePermissions';
|
||||
const router = useRouter();
|
||||
const { isAdmin } = useAuthContext();
|
||||
const { canRead } = usePermissions();
|
||||
function goBack() {
|
||||
router.push({ name: 'crm' });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user