5050 <!-- 告警列表 -->
5151 <div v-else class =" alerts-list" >
5252 <div
53- v-for =" alert in filteredAlerts "
53+ v-for =" alert in alerts "
5454 :key =" alert.id"
5555 class =" alert-card"
5656 >
@@ -229,6 +229,7 @@ const showAnalysisDialog = ref(false)
229229const selectedAlert = ref <AlertIssue | null >(null )
230230const alertDetail = ref <AlertDetail | null >(null )
231231const alerts = ref <AlertIssue []>([])
232+ const allAlerts = ref <AlertIssue []>([]) // 存储所有告警数据用于计数
232233const loading = ref (false )
233234const detailLoading = ref (false )
234235const error = ref <string | null >(null )
@@ -238,30 +239,25 @@ const filters = computed(() => [
238239 {
239240 key: ' all' ,
240241 label: ' All' ,
241- count: alerts .value .length
242+ count: allAlerts .value .length
242243 },
243244 {
244245 key: ' open' ,
245246 label: ' Open' ,
246- count: alerts .value .filter (alert => alert .state === ' Open' ).length
247+ count: allAlerts .value .filter (alert => alert .state === ' Open' ).length
247248 },
248249 {
249250 key: ' closed' ,
250251 label: ' Closed' ,
251- count: alerts .value .filter (alert => alert .state === ' Closed' ).length
252+ count: allAlerts .value .filter (alert => alert .state === ' Closed' ).length
252253 }
253254])
254255
255- const filteredAlerts = computed (() => {
256- if (filterState .value === ' all' ) return alerts .value
257- if (filterState .value === ' open' ) return alerts .value .filter (alert => alert .state === ' Open' )
258- if (filterState .value === ' closed' ) return alerts .value .filter (alert => alert .state === ' Closed' )
259- return alerts .value
260- })
261256
262257// 方法
263258const setFilterState = (state : ' all' | ' open' | ' closed' ) => {
264259 filterState .value = state
260+ loadAlerts () // 触发重新加载
265261}
266262
267263const formatRelativeTime = (timestamp : string ) => {
@@ -384,9 +380,19 @@ const loadAlerts = async () => {
384380 loading .value = true
385381 error .value = null
386382
387- const response = await mockApi .getAlerts (undefined , 10 )
383+ // 根据 filterState 构造 API 参数
384+ const apiState = filterState .value === ' all' ? undefined :
385+ filterState .value === ' open' ? ' Open' : ' Closed'
386+
387+ const response = await mockApi .getAlerts (undefined , 10 , apiState )
388388 alerts .value = response .items
389389
390+ // 如果是首次加载(allAlerts为空),则加载所有数据用于计数
391+ if (allAlerts .value .length === 0 ) {
392+ const allResponse = await mockApi .getAlerts (undefined , 100 ) // 获取更多数据用于计数
393+ allAlerts .value = allResponse .items
394+ }
395+
390396 console .log (' 告警数据加载成功:' , response )
391397 } catch (err ) {
392398 console .error (' 加载告警数据失败:' , err )
0 commit comments