perf(admin): lazy routes and nav badges
This commit is contained in:
@@ -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>
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user