Files
hereconnect/apps/frontend/src/views/CreateView.vue
T

91 lines
2.8 KiB
Vue
Raw Normal View History

2024-11-11 16:06:09 +02:00
<template>
2024-12-02 09:21:31 +02:00
<MetaHead>
<title>Создание QR-кода НаСвязи</title>
<meta
name="description"
content="Создайте свой QR-код для безопасного и конфиденциального взаимодействия"
/>
</MetaHead>
2024-11-20 11:31:45 +02:00
<div class="max-w-prose mx-auto py-6 px-4 md:px-6">
<section class="content">
<div class="max-w-prose mx-auto py-8">
<CreateSectionManager
:placement="placement"
:selectedActions="selectedActions"
:messageDeliveryMethod="messageDeliveryMethod"
>
<template #placement>
<CreatePlacementSection v-model="placement" />
</template>
2024-11-18 18:26:28 +02:00
2024-11-20 11:31:45 +02:00
<template #actions>
<CreateActionsSection v-model="selectedActions" />
</template>
2024-11-18 18:26:28 +02:00
2024-11-20 11:31:45 +02:00
<template #delivery>
<CreateMessageDeliveryMethodSection v-model="messageDeliveryMethod" />
</template>
2024-11-18 18:26:28 +02:00
2024-11-20 11:31:45 +02:00
<template #messages>
2024-11-21 08:46:06 +02:00
<CreatePredefinedMessagesSection :placement v-model="messages" />
2024-11-20 11:31:45 +02:00
</template>
2024-11-18 18:26:28 +02:00
2024-11-20 11:31:45 +02:00
<template #summary>
<CreateSummarySection
v-model:name="name"
buttonLabel="Создать QR‑код"
2024-12-06 11:47:45 +02:00
:isPending
2024-11-20 11:31:45 +02:00
@nextStep="createQrCode"
/>
</template>
</CreateSectionManager>
2024-12-06 11:47:45 +02:00
<p v-if="isError" class="text-red-500 mt-4">Ошибка создания QRкода: {{ error }}</p>
2024-11-20 11:31:45 +02:00
<div class="h-[30dvh] md:h-[10dvh] overflow-hidden"></div>
</div>
</section>
</div>
2024-11-11 16:06:09 +02:00
</template>
2024-11-14 16:43:46 +02:00
2024-11-14 16:48:32 +02:00
<script setup lang="ts">
2024-11-20 11:26:28 +02:00
import { ref } from 'vue'
2024-11-19 15:50:15 +02:00
import { useRouter } from 'vue-router'
import { createQrCodeDocument } from '@/api/qrCode'
2024-11-27 15:57:11 +02:00
import type { QRCodeDocument } from '@hereconnect/types'
2024-11-20 01:59:52 +02:00
import { ROUTE_NAMES } from '@/constants/routes'
2024-12-06 11:47:45 +02:00
import { useMutation } from '@tanstack/vue-query'
2024-11-14 16:43:46 +02:00
2024-11-19 15:50:15 +02:00
const placement = ref<null | QRCodeDocument['placement']>(null)
const selectedActions = ref<QRCodeDocument['actions']>([])
const messageDeliveryMethod = ref<null | QRCodeDocument['messageDeliveryMethod']>(null)
const messages = ref<Exclude<QRCodeDocument['predefinedMessages'], undefined>>([])
const name = ref<QRCodeDocument['name']>('')
const router = useRouter()
2024-12-06 11:47:45 +02:00
const {
isPending,
isError,
error,
mutate: createQrCode,
} = useMutation({
mutationKey: ['createQrCode'],
mutationFn: async () => {
2024-11-19 15:50:15 +02:00
const qrCodeDocument = await createQrCodeDocument({
name: name.value,
placement: placement.value!,
actions: selectedActions.value,
messageDeliveryMethod: messageDeliveryMethod.value!,
predefinedMessages: messages.value.length > 0 ? messages.value : undefined,
})
2024-11-20 01:59:52 +02:00
await router.push({
name: ROUTE_NAMES.MANAGE_QR_CODE_READY,
params: { qr_code_uri: qrCodeDocument.uri },
})
2024-12-06 11:47:45 +02:00
},
})
2024-11-14 16:43:46 +02:00
</script>