Files
web/src/pages/AuditPage.vue
T

45 lines
1.5 KiB
Vue
Raw Normal View History

2026-07-23 10:24:50 +03:30
<script setup lang="ts">
import { onMounted, ref } from 'vue'
import { message } from 'ant-design-vue'
import api from '@/api/http'
import { formatIranDateTime } from '@/utils/datetime'
2026-07-23 10:24:50 +03:30
const loading = ref(false)
const rows = ref<any[]>([])
async function load() {
loading.value = true
try {
const { data } = await api.get('/audit?limit=100')
rows.value = data
} catch (e: any) {
message.error(e?.response?.data?.message || 'خطا در دریافت لاگ')
} finally {
loading.value = false
}
}
onMounted(load)
</script>
<template>
<div class="page-shell">
<h1 class="page-title">لاگ تغییرات</h1>
<p class="page-sub">آخرین عملیات روی نسخه‌های فروشی</p>
<a-spin :spinning="loading">
<div v-if="rows.length" class="audit-list" style="margin-top: 14px">
<article v-for="item in rows" :key="item.id" class="audit-item">
<div class="when">{{ formatIranDateTime(item.createdAt) }}</div>
2026-07-23 10:24:50 +03:30
<div class="action">{{ item.action }}</div>
<div style="margin-top: 6px; color: #64748b; font-size: 0.85rem">
نسخه: {{ item.tenant?.nameFa || item.tenantId || '—' }}
· کاربر: {{ item.user?.name || [item.user?.firstName, item.user?.lastName].filter(Boolean).join(' ') || '—' }}
2026-07-23 10:24:50 +03:30
</div>
</article>
</div>
<a-empty v-else description="لاگی نیست" style="margin: 28px 0" />
</a-spin>
</div>
</template>