diff --git a/web/src/views/RiskRules.vue b/web/src/views/RiskRules.vue index e9cd1b3..9146e06 100644 --- a/web/src/views/RiskRules.vue +++ b/web/src/views/RiskRules.vue @@ -93,11 +93,11 @@ const fmt = (t) => t ? (t.substring(0,19)||'').replace('T',' ') : '-' const merged = computed(() => { const map = {} - for (const r of rulesData.value) { + const list = Array.isArray(rulesData.value) ? rulesData.value : [] + for (const r of list) { const cnt = (() => { try { return JSON.parse(r.rulesJson || '[]').length } catch { return 0 } })() map[r.siteType] = { siteType: r.siteType, version: r.version, ruleCount: cnt, updatedAt: r.updatedAt, rulesJson: r.rulesJson } } - // 补充未配置的类型 for (const t of siteTypes) { if (!map[t]) map[t] = { siteType: t, version: null, ruleCount: 0, updatedAt: null, rulesJson: null } } @@ -108,7 +108,7 @@ const fetchAll = async () => { loading.value = true try { const r = await api.raw.get('/admin/risk-rules') - rulesData.value = (r.data || r || []) + rulesData.value = Array.isArray(r?.data) ? r.data : Array.isArray(r) ? r : [] } catch { ElMessage.error('加载失败') } finally { loading.value = false } } diff --git a/web/src/views/SitePages.vue b/web/src/views/SitePages.vue index f1ce44f..7f66eb8 100644 --- a/web/src/views/SitePages.vue +++ b/web/src/views/SitePages.vue @@ -85,7 +85,8 @@ watch(editorMode, (m) => { const fmt = (t) => t ? (t.substring(0,19)||'').replace('T',' ') : '-' const merged = computed(() => { - return sites.value.map(s => ({ + const list = Array.isArray(sites.value) ? sites.value : [] + return list.map(s => ({ siteId: s.siteId, names: s.names, version: pagesMap.value[s.siteId]?.version || null,