add contact request

This commit is contained in:
2026-07-14 11:19:41 +03:30
parent 493ee8105e
commit 259a725fba
15 changed files with 1863 additions and 69 deletions
+7 -2
View File
@@ -4,7 +4,7 @@
<div v-if="loading" class="text-slate-500">در حال بارگذاری...</div>
<div v-else class="grid gap-4 sm:grid-cols-2 lg:grid-cols-4">
<div v-else class="grid gap-4 sm:grid-cols-2 lg:grid-cols-5">
<div v-for="stat in stats" :key="stat.label" class="card">
<p class="text-3xl font-bold text-brand">{{ stat.value }}</p>
<p class="mt-1 text-sm text-slate-600">{{ stat.label }}</p>
@@ -18,6 +18,7 @@
<RouterLink :to="{ name: 'site' }" class="btn-secondary">تنظیمات سایت</RouterLink>
<RouterLink :to="{ name: 'portfolio-edit' }" class="btn-secondary">نمونه‌کار جدید</RouterLink>
<RouterLink :to="{ name: 'blog-edit' }" class="btn-secondary">مطلب جدید</RouterLink>
<RouterLink :to="{ name: 'contact-requests' }" class="btn-secondary">درخواست‌های تماس</RouterLink>
<RouterLink :to="{ name: 'media' }" class="btn-secondary">آپلود رسانه</RouterLink>
</div>
</div>
@@ -43,24 +44,28 @@ const stats = ref([
{ value: '—', label: 'خدمات' },
{ value: '—', label: 'مشتری' },
{ value: '—', label: 'مطلب وبلاگ' },
{ value: '—', label: 'درخواست جدید' },
])
onMounted(async () => {
try {
const [site, projects, services, clients, posts] = await Promise.all([
const [site, projects, services, clients, posts, contactRequests] = await Promise.all([
api.getSite(),
api.getProjects(),
api.getServices(),
api.getClients(),
api.getBlogPosts(),
api.getContactRequests(),
])
siteName.value = site.name || 'استودیو نورو'
siteTagline.value = site.tagline || ''
const newRequests = contactRequests.filter((r) => r.status === 'new').length
stats.value = [
{ value: String(projects.length), label: 'نمونه‌کار' },
{ value: String(services.length), label: 'خدمات' },
{ value: String(clients.length), label: 'مشتری' },
{ value: String(posts.length), label: 'مطلب وبلاگ' },
{ value: String(newRequests), label: 'درخواست جدید' },
]
} catch {
// stats stay as dashes