фикс
This commit is contained in:
parent
60c524caf6
commit
6bcd41d43b
@ -199,9 +199,9 @@ export default {
|
|||||||
// Изменение статуса пользователя (блокировка/разблокировка)
|
// Изменение статуса пользователя (блокировка/разблокировка)
|
||||||
const toggleUserStatus = async () => {
|
const toggleUserStatus = async () => {
|
||||||
try {
|
try {
|
||||||
loading.value = true;
|
const originalStatus = user.value.isActive;
|
||||||
|
|
||||||
const token = localStorage.getItem('userToken'); // Исправлено с 'token' на 'userToken'
|
const token = localStorage.getItem('userToken');
|
||||||
const response = await axios.put(
|
const response = await axios.put(
|
||||||
`/api/admin/users/${props.id}/toggle-active`,
|
`/api/admin/users/${props.id}/toggle-active`,
|
||||||
{},
|
{},
|
||||||
@ -212,17 +212,28 @@ export default {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
// Обновляем статус пользователя
|
// Принудительно обновляем статус пользователя для реактивности
|
||||||
|
if (response.data && typeof response.data.isActive !== 'undefined') {
|
||||||
user.value.isActive = response.data.isActive;
|
user.value.isActive = response.data.isActive;
|
||||||
|
user.value.blocked = !response.data.isActive;
|
||||||
|
|
||||||
// Заменяем alert на уведомление через сервис
|
// Форсируем реактивное обновление
|
||||||
const actionType = user.value.isActive ? 'success' : 'warning';
|
user.value = { ...user.value };
|
||||||
toastService.add(response.data.message, actionType, 3000);
|
}
|
||||||
|
|
||||||
|
// Показываем уведомление об успехе
|
||||||
|
const actionText = user.value.isActive ? 'разблокирован' : 'заблокирован';
|
||||||
|
toastService.add(
|
||||||
|
response.data.message || `Пользователь успешно ${actionText}`,
|
||||||
|
user.value.isActive ? 'success' : 'warning',
|
||||||
|
3000
|
||||||
|
);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error('Ошибка при изменении статуса пользователя:', err);
|
console.error('Ошибка при изменении статуса пользователя:', err);
|
||||||
toastService.error('Ошибка при изменении статуса пользователя');
|
|
||||||
} finally {
|
// Показываем ошибку
|
||||||
loading.value = false;
|
const errorMessage = err.response?.data?.message || 'Ошибка при изменении статуса пользователя';
|
||||||
|
toastService.add(errorMessage, 'error', 5000);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -252,9 +252,14 @@ export default {
|
|||||||
// Изменение статуса пользователя (блокировка/разблокировка)
|
// Изменение статуса пользователя (блокировка/разблокировка)
|
||||||
const toggleUserStatus = async (userId, currentStatus) => {
|
const toggleUserStatus = async (userId, currentStatus) => {
|
||||||
try {
|
try {
|
||||||
loading.value = true;
|
// Показываем индикатор загрузки для конкретного пользователя
|
||||||
|
const userIndex = users.value.findIndex(user => user._id === userId);
|
||||||
|
if (userIndex === -1) return;
|
||||||
|
|
||||||
const token = localStorage.getItem('userToken'); // Исправлено с 'token' на 'userToken'
|
// Временно отключаем кнопку, чтобы предотвратить множественные клики
|
||||||
|
const originalStatus = users.value[userIndex].isActive;
|
||||||
|
|
||||||
|
const token = localStorage.getItem('userToken');
|
||||||
const response = await axios.put(
|
const response = await axios.put(
|
||||||
`/api/admin/users/${userId}/toggle-active`,
|
`/api/admin/users/${userId}/toggle-active`,
|
||||||
{},
|
{},
|
||||||
@ -265,20 +270,36 @@ export default {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
// Обновляем статус пользователя в списке
|
// Обновляем статус пользователя в списке с использованием реактивности Vue
|
||||||
const userIndex = users.value.findIndex(user => user._id === userId);
|
if (userIndex !== -1 && response.data) {
|
||||||
if (userIndex !== -1) {
|
// Принудительно обновляем свойство для реактивности
|
||||||
users.value[userIndex].isActive = response.data.isActive;
|
users.value[userIndex].isActive = response.data.isActive;
|
||||||
|
users.value[userIndex].blocked = !response.data.isActive;
|
||||||
|
|
||||||
|
// Форсируем реактивное обновление Vue
|
||||||
|
users.value = [...users.value];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Заменяем стандартный alert на наш сервис уведомлений
|
// Показываем уведомление об успехе
|
||||||
const type = response.data.isActive ? 'success' : 'warning';
|
const actionText = response.data.isActive ? 'разблокирован' : 'заблокирован';
|
||||||
toastService.add(response.data.message, type, 3000);
|
toastService.add(
|
||||||
|
response.data.message || `Пользователь успешно ${actionText}`,
|
||||||
|
response.data.isActive ? 'success' : 'warning',
|
||||||
|
3000
|
||||||
|
);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error('Ошибка при изменении статуса пользователя:', err);
|
console.error('Ошибка при изменении статуса пользователя:', err);
|
||||||
toastService.error('Ошибка при изменении статуса пользователя');
|
|
||||||
} finally {
|
// Восстанавливаем исходный статус в случае ошибки
|
||||||
loading.value = false;
|
const userIndex = users.value.findIndex(user => user._id === userId);
|
||||||
|
if (userIndex !== -1) {
|
||||||
|
users.value[userIndex].isActive = currentStatus;
|
||||||
|
users.value = [...users.value];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Показываем ошибку
|
||||||
|
const errorMessage = err.response?.data?.message || 'Ошибка при изменении статуса пользователя';
|
||||||
|
toastService.add(errorMessage, 'error', 5000);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user