fix login spaces
This commit is contained in:
@@ -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">
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ const cancel = () => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<Dialog :visible="opened" modal header="Создать новое пространство" :style="{ width: '25rem' }" @hide="cancel"
|
<Dialog :visible="opened" modal header="Создать новое пространство" :style="{ width: '25rem' }" @hide="cancel"
|
||||||
@update:visible="cancel">
|
@update:visible="cancel">
|
||||||
|
|
||||||
<SpaceCreationFormView @close-modal="cancel" @space-created="emits('space-created')" />
|
<SpaceCreationFormView @close-modal="cancel" @space-created="emits('space-created')" />
|
||||||
|
|||||||
@@ -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,11 +32,22 @@ 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
|
||||||
resetForm()
|
await createSpaceRequest(space)
|
||||||
emits("space-created", res)
|
.then((res) => {
|
||||||
})
|
resetForm()
|
||||||
|
loading.value = false
|
||||||
|
emits("space-created", res)
|
||||||
|
}).catch((err) => {
|
||||||
|
toast.add({
|
||||||
|
severity: 'error',
|
||||||
|
summary: 'Ошибка!',
|
||||||
|
detail: err.response?.data?.message || 'Ошибка при создании пространства',
|
||||||
|
life: 3000
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e)
|
console.error(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"/>
|
||||||
|
|||||||
@@ -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({
|
||||||
|
|||||||
@@ -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 })
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user