Files
hereconnect/src/views/CreateView.vue
T

87 lines
2.8 KiB
Vue
Raw Normal View History

2024-11-11 16:06:09 +02:00
<template>
2024-11-18 18:26:28 +02:00
<div class="create-page max-w-lg mx-auto py-8">
<!-- Секция выбора размещения -->
<CreateSection isActive>
<CreatePlacementSection
v-model="placement"
@nextStep="placement && activateSections('actions')"
2024-11-14 16:48:32 +02:00
/>
2024-11-18 18:26:28 +02:00
</CreateSection>
<!-- Секция выбора доступных действий -->
<CreateSection :isActive="activeSteps.includes('actions')">
<CreateActionsSection
v-model="selectedActions"
@nextStep="
selectedActions.length &&
activateSections(selectedActions.includes('sendMessage') ? 'delivery' : 'summary')
"
/>
</CreateSection>
<!-- Секция выбора способа доставки -->
<CreateSection
v-if="selectedActions.includes('sendMessage')"
:isActive="activeSteps.includes('delivery')"
>
<CreateDeliverySection
v-model="deliveryMethod"
@nextStep="deliveryMethod && activateSections('messages', 'summary')"
/>
</CreateSection>
<!-- Секция сообщений для отправки -->
<CreateSection
v-if="selectedActions.includes('sendMessage') && activeSteps.includes('messages')"
:isActive="true"
>
<CreateMessagesSection :placement v-model="messages" />
</CreateSection>
<!-- Секция итогового резюме -->
<CreateSection :isActive="activeSteps.includes('summary')">
<CreateSummarySection
v-model:uri="uri"
v-model:name="name"
:placement="placement"
:actions="selectedActions"
:deliveryMethod="deliveryMethod"
:user_uuid="user_uuid"
:predefinedMessage="selectedActions.includes('sendMessage') ? messages : undefined"
@nextStep="activateSections('qrReady')"
/>
</CreateSection>
<!-- Секция готового QR-кода -->
<CreateSection :isActive="activeSteps.includes('qrReady')">
<CreateReadySection :uri="uri" :name="name" />
</CreateSection>
<div class="h-[30dvh] md:h-[10dvh] overflow-hidden"></div>
2024-11-11 16:06:09 +02:00
</div>
</template>
2024-11-14 16:43:46 +02:00
2024-11-14 16:48:32 +02:00
<script setup lang="ts">
2024-11-14 16:43:46 +02:00
import { ref } from 'vue'
2024-11-18 18:26:28 +02:00
// Шаги и состояния для работы с секциями
const activeSteps = ref(['placement'])
2024-11-14 16:43:46 +02:00
2024-11-18 18:26:28 +02:00
const selectedActions = ref<string[]>([])
const placement = ref('')
const deliveryMethod = ref('')
const messages = ref<string[]>([])
const name = ref('')
const uri = ref('')
const user_uuid = 'example-user-uuid' // Временно захардкожено, заменить на динамическое
2024-11-14 16:43:46 +02:00
2024-11-18 18:26:28 +02:00
// Функция активации следующих шагов
function activateSections(...sections: string[]) {
sections.forEach((section) => {
if (!activeSteps.value.includes(section)) {
activeSteps.value.push(section)
}
})
2024-11-14 16:43:46 +02:00
}
</script>