move create into CreateView.vue
Main daploy / deploy (push) Successful in 49s

This commit is contained in:
2024-11-19 15:50:15 +02:00
parent 00f7963c8a
commit fc7afb2d12
7 changed files with 92 additions and 88 deletions
@@ -59,7 +59,7 @@ const defaultMessages = {
}
// Локальное хранилище сообщений
const messages = defineModel<Exclude<QRCodeDocument['predefinedMessage'], undefined>>({
const messages = defineModel<Exclude<QRCodeDocument['predefinedMessages'], undefined>>({
required: true,
})
@@ -67,11 +67,13 @@ const messages = defineModel<Exclude<QRCodeDocument['predefinedMessage'], undefi
watch(
() => props.placement,
(newPlacement, previousPlacement) => {
let prevDefaultMessages: QRCodeDocument['predefinedMessage'] = []
let prevDefaultMessages: QRCodeDocument['predefinedMessages'] = []
if (previousPlacement && previousPlacement in defaultMessages) {
prevDefaultMessages = defaultMessages[previousPlacement]
}
const isMessagesDefault = JSON.stringify(messages.value) === JSON.stringify(prevDefaultMessages)
const isMessagesDefault =
messages.value.length === 0 ||
JSON.stringify(messages.value) === JSON.stringify(prevDefaultMessages)
if (isMessagesDefault) {
messages.value = [...(defaultMessages[newPlacement] || [])]
}
+5 -43
View File
@@ -3,57 +3,19 @@
<h2 class="text-xl font-semibold mb-4">Введите название для вашего QRкода</h2>
<p class="text-gray-600 mb-4">Название поможет вам организовать ваши QRкоды.</p>
<form @submit.prevent="saveQRCode">
<form @submit.prevent="emit('nextStep')">
<label for="name" class="block text-gray-700 font-semibold mb-2">Название</label>
<InputText id="name" v-model="name" class="w-full" placeholder="Введите название" />
<p v-if="!name" class="text-red-500 text-sm mt-1">Название обязательно.</p>
<Button
type="submit"
label="Создать QR‑код"
class="p-button-md mt-4 mb-4"
:disabled="!name"
/>
<Button type="submit" :label="buttonLabel" class="p-button-md mt-4 mb-4" :disabled="!name" />
</form>
<p v-if="error" class="text-red-500 mt-4">Ошибка создания QRкода: {{ error }}</p>
</section>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { useRouter } from 'vue-router'
import { type QRCodeDocument } from '@/types/DBDocumentTypes'
import { createQrCodeDocument } from '@/api/qrCode'
const router = useRouter()
const { placement, actions, messageDeliveryMethod, predefinedMessage } = defineProps<{
placement: QRCodeDocument['placement']
actions: QRCodeDocument['actions']
messageDeliveryMethod: QRCodeDocument['messageDeliveryMethod']
// user_uuid: QRCodeDocument['user_uuid']
predefinedMessage: QRCodeDocument['predefinedMessage'] | undefined
}>()
const name = ref<QRCodeDocument['name']>('name')
const error = ref<string | null>(null)
async function saveQRCode() {
try {
const qrCodeDocument = await createQrCodeDocument({
name: name.value,
placement,
actions,
// user_uuid,
messageDeliveryMethod,
predefinedMessage,
})
error.value = null
// Перенаправление на страницу /manage/:qr/ready
await router.push({ name: 'ManageQRCodeReady', params: { qr_code_uri: qrCodeDocument.uri } })
} catch (err) {
error.value = (err as Error).message || 'Неизвестная ошибка'
}
}
defineProps<{ buttonLabel: string }>()
const name = defineModel<QRCodeDocument['name']>('name')
const emit = defineEmits(['nextStep'])
</script>