2024-12-06 14:07:31 +02:00
|
|
|
<template>
|
2024-12-06 14:42:03 +02:00
|
|
|
<div class="flex flex-col min-h-full">
|
|
|
|
|
<main class="flex-grow flex justify-center py-6 px-4 md:px-6">
|
|
|
|
|
<div>
|
|
|
|
|
<h1 class="text-2xl font-bold mb-4 text-center lg:text-left">Управление QR-кодом</h1>
|
|
|
|
|
<QueryRender :query="qrCodeQuery">
|
|
|
|
|
<template #default="{ data: qrCodeDoc }">
|
|
|
|
|
<MetaHead>
|
|
|
|
|
<title>{{ qrCodeDoc.name }}: управление QR-кодом — НаСвязи</title>
|
|
|
|
|
<meta
|
|
|
|
|
name="description"
|
|
|
|
|
content="Просматривайте и управляйте сообщениями, отправленными через ваш QR-код. Полная конфиденциальность и удобный интерфейс чата"
|
|
|
|
|
/>
|
|
|
|
|
</MetaHead>
|
|
|
|
|
<div class="bg-white p-6 rounded-lg shadow-md mb-6">
|
|
|
|
|
<div class="flex items-center justify-between mb-4">
|
|
|
|
|
<div class="flex items-center">
|
|
|
|
|
<QRCodePlacementIcon :placement="qrCodeDoc.placement" />
|
|
|
|
|
<h2 class="text-xl font-semibold">{{ qrCodeDoc.name }}</h2>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="flex gap-2">
|
|
|
|
|
<!-- <Button-->
|
|
|
|
|
<!-- icon="pi pi-cog"-->
|
|
|
|
|
<!-- label="Настроить"-->
|
|
|
|
|
<!-- :to="`/manage/qr/${qrCodeDoc.uri}/settings`"-->
|
|
|
|
|
<!-- as="router-link"-->
|
|
|
|
|
<!-- severity="secondary"-->
|
|
|
|
|
<!-- size="small"-->
|
|
|
|
|
<!-- outlined-->
|
|
|
|
|
<!-- />-->
|
|
|
|
|
<Button
|
|
|
|
|
icon="pi pi-qrcode"
|
|
|
|
|
label="QR-код и инструкции"
|
|
|
|
|
:to="`/manage/qr/${qrCodeDoc.uri}/ready`"
|
|
|
|
|
as="router-link"
|
|
|
|
|
severity="secondary"
|
|
|
|
|
size="small"
|
|
|
|
|
outlined
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="mb-4 flex gap-2 items-baseline flex-wrap">
|
|
|
|
|
<strong>Ссылка: </strong>
|
|
|
|
|
<LinkQRCode :url="qrCodeDoc.url" />
|
|
|
|
|
<div class="flex gap-2 items-baseline flex-wrap">
|
|
|
|
|
<LinkCopyButton :url="qrCodeDoc.url" />
|
|
|
|
|
<LinkShareTelegramButton
|
|
|
|
|
:shareUrl="qrCodeDoc.url"
|
|
|
|
|
shareText="Используйте эту ссылку НаСвязи!"
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div>
|
|
|
|
|
<p>
|
|
|
|
|
<strong>Создано: </strong>
|
|
|
|
|
<span class="text-nowrap">{{ formatDate(qrCodeDoc.created_at) }}</span>
|
|
|
|
|
</p>
|
|
|
|
|
<!-- <p><strong>Количество сканирований:</strong> {{ qrCodeDoc.scanCount }}</p>-->
|
|
|
|
|
<!-- <p><strong>Последнее сканирование:</strong> {{ formatDate(qrCodeDoc.lastScan) }}</p>-->
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
</QueryRender>
|
|
|
|
|
|
|
|
|
|
<!-- <div class="bg-white p-6 rounded-lg shadow-md mb-6">-->
|
|
|
|
|
<!-- <h2 class="text-xl font-bold mb-4">Чаты</h2>-->
|
|
|
|
|
<!-- <div v-if="chats.length > 0" class="grid grid-cols-1 gap-4">-->
|
|
|
|
|
<!-- <div v-for="chat in chats" :key="chat._id" class="p-4 rounded-lg bg-white shadow-md">-->
|
|
|
|
|
<!-- <div class="flex items-center justify-between">-->
|
|
|
|
|
<!-- <div>-->
|
|
|
|
|
<!-- <p class="text-lg font-semibold">Чат #{{ chat._id }}</p>-->
|
|
|
|
|
<!-- <p class="text-gray-500">-->
|
|
|
|
|
<!-- Последнее сообщение: {{ formatDate(chat.lastMessageDate) }}-->
|
|
|
|
|
<!-- </p>-->
|
|
|
|
|
<!-- </div>-->
|
|
|
|
|
<!-- <Button-->
|
|
|
|
|
<!-- label="Открыть"-->
|
|
|
|
|
<!-- :to="`/manage/qr/${qrCodeDoc.uri}/chat/${chat._id}`"-->
|
|
|
|
|
<!-- as="router-link"-->
|
|
|
|
|
<!-- class="p-button-outlined p-button-sm"-->
|
|
|
|
|
<!-- />-->
|
|
|
|
|
<!-- </div>-->
|
|
|
|
|
<!-- </div>-->
|
|
|
|
|
<!-- </div>-->
|
|
|
|
|
<!-- <div v-else class="text-center text-gray-500">-->
|
|
|
|
|
<!-- <p>Нет активных чатов для этого QR-кода.</p>-->
|
|
|
|
|
<!-- </div>-->
|
|
|
|
|
<!-- </div>-->
|
2024-12-06 14:07:31 +02:00
|
|
|
</div>
|
2024-12-06 14:42:03 +02:00
|
|
|
</main>
|
2024-12-06 14:07:31 +02:00
|
|
|
|
2024-12-06 14:42:03 +02:00
|
|
|
<footer class="bg-gray-100 text-center py-4 border-t text-sm text-gray-700">
|
|
|
|
|
<p>
|
|
|
|
|
Нужен еще один?
|
|
|
|
|
<a href="/create" class="underline">Создайте QR‑код</a>.
|
|
|
|
|
</p>
|
|
|
|
|
<p class="mt-1">
|
|
|
|
|
Сделайте НаСвязи удобнее. Будем рады вашей <a href="/donate" class="underline"
|
|
|
|
|
>поддержке</a
|
|
|
|
|
>.
|
|
|
|
|
</p>
|
|
|
|
|
</footer>
|
2024-12-06 14:07:31 +02:00
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
|
|
import { computed } from 'vue'
|
|
|
|
|
import type { QRCodeDocument } from '@hereconnect/types'
|
|
|
|
|
import { getQrCodeDocument } from '@/api/qrCode'
|
|
|
|
|
|
|
|
|
|
const props = defineProps<{ qr_code_uri: QRCodeDocument['uri'] }>()
|
|
|
|
|
|
|
|
|
|
const qrCodeUri = computed(() => props.qr_code_uri)
|
|
|
|
|
|
|
|
|
|
const qrCodeQuery = useQuery({
|
|
|
|
|
queryKey: ['qrCode', qrCodeUri],
|
|
|
|
|
queryFn: () => getQrCodeDocument(qrCodeUri.value),
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
// const { data: chatsData } = useQuery({
|
|
|
|
|
// queryKey: ['chats', qrCodeUri],
|
|
|
|
|
// queryFn: () => messagesDbRemote.find({ selector: { qr_code_uri: qrCodeUri } }),
|
|
|
|
|
// })
|
|
|
|
|
|
|
|
|
|
// const chats = computed(() => chatsData.value?.docs || [])
|
|
|
|
|
|
|
|
|
|
const formatDate = (date: string) => {
|
|
|
|
|
if (!date) return '—'
|
|
|
|
|
const options: Intl.DateTimeFormatOptions = { year: 'numeric', month: 'long', day: 'numeric' }
|
|
|
|
|
return new Date(date).toLocaleDateString(['ru-RU'], options)
|
|
|
|
|
}
|
|
|
|
|
</script>
|