Files
hereconnect/src/components/create/CreateSummarySection.vue
T
2024-11-18 18:26:28 +02:00

73 lines
2.4 KiB
Vue

<template>
<section>
<h2 class="text-xl font-semibold mb-4">Введите название для вашего QR-кода</h2>
<p class="text-gray-600 mb-4">Название поможет вам организовать ваши QR-коды.</p>
<!-- Форма задания названия -->
<div class="mb-6">
<label for="name" class="block text-gray-700 font-semibold mb-2">Название</label>
<InputText id="name" v-model="nameModel" class="w-full" placeholder="Введите название" />
<p v-if="!nameModel" class="text-red-500 text-sm mt-1">Название обязательно.</p>
</div>
<!-- Кнопка создания -->
<Button
label="Создать QR-код"
class="p-button-sm mt-4 mb-4"
:disabled="!nameModel"
@click="saveQRCode"
/>
<p v-if="error" class="text-red-500 mt-4">Ошибка создания QR-кода: {{ error }}</p>
</section>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { qrCodeDb } from '@/dbs'
import { type QRCodeDocument } from '@/types/DBDocumentTypes'
const { placement, actions, deliveryMethod, user_uuid, predefinedMessage } = defineProps<{
placement: QRCodeDocument['placement']
actions: QRCodeDocument['actions']
deliveryMethod: QRCodeDocument['deliveryMethod']
user_uuid: QRCodeDocument['user_uuid']
predefinedMessage: QRCodeDocument['predefinedMessage'] | undefined
}>()
const uriModel = defineModel<QRCodeDocument['uri']>('uri', { required: true })
const nameModel = defineModel<QRCodeDocument['name']>('name', { required: true })
const emit = defineEmits(['nextStep'])
const error = ref<string | null>(null)
async function saveQRCode() {
try {
// Генерация уникального uri
const EPOHE = 1731661630981
const uri = Math.abs(Date.now() - EPOHE).toString(36)
const qrCodeDoc: QRCodeDocument = {
_id: `qr_code:${uri}`,
type: 'qr_code',
uri,
url: `https://hereconnect.condev.ru/read/${uri}`,
name: nameModel.value,
deliveryMethod,
created_at: new Date().toISOString(),
placement,
actions,
user_uuid,
predefinedMessage,
}
await qrCodeDb.put(qrCodeDoc)
uriModel.value = uri
error.value = null
emit('nextStep')
} catch (err) {
error.value = (err as Error).message || 'Неизвестная ошибка'
}
}
</script>