fix login spaces

This commit is contained in:
xds
2025-03-06 18:54:45 +03:00
parent ba12fb649a
commit 9cf471009d
6 changed files with 28 additions and 11 deletions

View File

@@ -10,7 +10,7 @@ const props = defineProps({
<template> <template>
<div class="relative w-full " :class="!props.halfscreen ? 'h-screen' : 'h-80'"> <div class="relative w-full " :class="!props.halfscreen ? 'h-screen' : 'h-80'">
<!-- Полупрозрачный белый фон --> <!-- Полупрозрачный белый фон -->
<div class="absolute top-0 left-0 w-full h-full bg-gray-100 z-0"></div> <div class="absolute top-0 left-0 w-full h-full z-0" :class="props.halfscreen ? 'bg-white': 'bg-gray-100'"></div>
<!-- Спиннер поверх --> <!-- Спиннер поверх -->
<div class="absolute top-0 left-0 w-full h-full flex items-center justify-center z-50"> <div class="absolute top-0 left-0 w-full h-full flex items-center justify-center z-50">

View File

@@ -121,6 +121,7 @@ import {TransactionType} from "@/models/Transaction";
import {CategoryType} from "@/models/Category"; import {CategoryType} from "@/models/Category";
import {useDrawerStore} from "@/stores/drawerStore"; import {useDrawerStore} from "@/stores/drawerStore";
import {useRoute, useRouter} from "vue-router"; import {useRoute, useRouter} from "vue-router";
const router = useRouter() const router = useRouter()
const route = useRoute() const route = useRoute()

View File

@@ -10,13 +10,17 @@ import InputText from "primevue/inputtext";
import Textarea from "primevue/textarea"; import Textarea from "primevue/textarea";
import Button from "primevue/button"; import Button from "primevue/button";
import DatePicker from "primevue/datepicker"; import DatePicker from "primevue/datepicker";
import {useToast} from "primevue/usetoast";
import LoadingView from "@/components/LoadingView.vue";
const emits = defineEmits(['space-created', 'close-modal', 'error-space-creation']) const emits = defineEmits(['space-created', 'close-modal', 'error-space-creation'])
const toast = useToast()
const spaceName = ref('') const spaceName = ref('')
const spaceDescription = ref('') const spaceDescription = ref('')
const createCategories = ref(true) const createCategories = ref(true)
const loading = ref(false)
const cancel = () => { const cancel = () => {
resetForm() resetForm()
@@ -28,10 +32,21 @@ const createSpace = async () => {
space.name = spaceName.value space.name = spaceName.value
space.description = spaceDescription.value space.description = spaceDescription.value
space.createCategories = createCategories.value space.createCategories = createCategories.value
try { try {
await createSpaceRequest(space).then((res) => { loading.value = true
await createSpaceRequest(space)
.then((res) => {
resetForm() resetForm()
loading.value = false
emits("space-created", res) emits("space-created", res)
}).catch((err) => {
toast.add({
severity: 'error',
summary: 'Ошибка!',
detail: err.response?.data?.message || 'Ошибка при создании пространства',
life: 3000
});
}) })
} catch (e) { } catch (e) {
@@ -46,8 +61,8 @@ const resetForm = () => {
</script> </script>
<template> <template>
<LoadingView v-if="loading" halfscreen/>
<div class="flex flex-col gap-4 mt-1"> <div v-else class="flex flex-col gap-4 mt-1">
<FloatLabel variant="on" class="w-full"> <FloatLabel variant="on" class="w-full">
<label for="name">Название</label> <label for="name">Название</label>
<InputText v-model="spaceName" id="name" class="w-full"/> <InputText v-model="spaceName" id="name" class="w-full"/>

View File

@@ -154,9 +154,8 @@ const kickMember = async (space: Space, user: User) => {
} }
const deleteSpace = async (space: Space) => { const deleteSpace = async (space: Space) => {
confirm.require({ confirm.require({
message: `Вы действительно хотите удалить пространство ${space.name}? Будут удалены все бюджеты!`, message: `Вы действительно хотите удалить пространство ${space.name}? Будут удалены все данные!`,
header: 'Удаление пространства', header: 'Удаление пространства',
icon: 'pi pi-info-circle', icon: 'pi pi-info-circle',
rejectLabel: 'Отмена', rejectLabel: 'Отмена',
@@ -171,8 +170,10 @@ const deleteSpace = async (space: Space) => {
}, },
accept: async () => { accept: async () => {
try { try {
loading.value = true;
await deleteSpaceRequest(space.id).then((res) => { await deleteSpaceRequest(space.id).then((res) => {
spaceStore.fetchSpaces(); spaceStore.fetchSpaces();
loading.value = false;
}) })
} catch (error: Error) { } catch (error: Error) {
toast.add({ toast.add({

View File

@@ -55,7 +55,7 @@ export const useUserStore = defineStore('user', () => {
await router.push(route.query['back'] ? route.query['back'].toString() : '/'); await router.push(route.query['back'] ? route.query['back'].toString() : '/');
} catch (error) { } catch (error) {
console.error(error); console.error(error);
toast.add({ severity: 'error', summary: 'Ошибка входа', detail: 'Ошибка Telegram авторизации', life: 3000 }) toast.add({ severity: 'error', summary: 'Ошибка авторизации', detail: error.response.data.message, life: 3000 })
} }
}; };