perf(admin): lazy routes and nav badges

This commit is contained in:
2025-12-13 21:13:57 +08:00
parent 235ba28cc8
commit 49bc8b83b1
32 changed files with 328 additions and 68 deletions

View File

@@ -1,9 +1,11 @@
<script setup>
import { onMounted, ref } from 'vue'
import { inject, onMounted, ref } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { closeFeedback, deleteFeedback, fetchFeedbacks, replyFeedback } from '../api/feedbacks'
const refreshNavBadges = inject('refreshNavBadges', null)
const loading = ref(false)
const statusFilter = ref('')
const stats = ref({ total: 0, pending: 0, replied: 0, closed: 0 })
@@ -35,6 +37,8 @@ async function load() {
} finally {
loading.value = false
}
await refreshNavBadges?.({ pendingFeedbacks: stats.value.pending || 0 })
}
async function onReply(row) {
@@ -253,4 +257,3 @@ onMounted(load)
gap: 8px;
}
</style>

View File

@@ -7,6 +7,7 @@ import { approvePasswordReset, fetchPasswordResets, rejectPasswordReset } from '
import { parseSqliteDateTime } from '../utils/datetime'
const refreshStats = inject('refreshStats', null)
const refreshNavBadges = inject('refreshNavBadges', null)
const pendingUsers = ref([])
const passwordResets = ref([])
@@ -46,6 +47,7 @@ async function loadResets() {
async function refreshAll() {
await Promise.all([loadPending(), loadResets()])
await refreshNavBadges?.({ pendingResets: passwordResets.value.length })
}
async function onApproveUser(row) {
@@ -105,6 +107,7 @@ async function onApproveReset(row) {
const res = await approvePasswordReset(row.id)
ElMessage.success(res?.message || '密码重置申请已批准')
await loadResets()
await refreshNavBadges?.({ pendingResets: passwordResets.value.length })
} catch {
// handled by interceptor
}
@@ -125,6 +128,7 @@ async function onRejectReset(row) {
const res = await rejectPasswordReset(row.id)
ElMessage.success(res?.message || '密码重置申请已拒绝')
await loadResets()
await refreshNavBadges?.({ pendingResets: passwordResets.value.length })
} catch {
// handled by interceptor
}