合伙人运营小程序
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <view class="container">
  2. <!-- 告警分类筛选栏 -->
  3. <view class="filter_top" >
  4. <view class="filter-bar">
  5. <view class="filter-item {{activeFilter === 'all' ? 'filter-active' : ''}}" bindtap="switchFilter" data-type="all">
  6. 全部消息
  7. <span class="filter-badge" wx:if="{{alertCount.all > 0}}">{{alertCount.all}}</span>
  8. </view>
  9. <view class="filter-item {{activeFilter === 'car' ? 'filter-active' : ''}}" bindtap="switchFilter" data-type="car">
  10. 日常消息
  11. <span class="filter-badge" wx:if="{{alertCount.car > 0}}">{{alertCount.car}}</span>
  12. </view>
  13. <view class="filter-item {{activeFilter === 'station' ? 'filter-active' : ''}}" bindtap="switchFilter" data-type="station">
  14. 车辆消息
  15. <span class="filter-badge" wx:if="{{alertCount.station > 0}}">{{alertCount.station}}</span>
  16. </view>
  17. <view class="filter-item {{activeFilter === 'user' ? 'filter-active' : ''}}" bindtap="switchFilter" data-type="user">
  18. 设备消息
  19. <span class="filter-badge" wx:if="{{alertCount.user > 0}}">{{alertCount.user}}</span>
  20. </view>
  21. <view class="filter-item {{activeFilter === 'user' ? 'filter-active' : ''}}" bindtap="switchFilter" data-type="user">
  22. 运维消息
  23. <span class="filter-badge" wx:if="{{alertCount.user > 0}}">{{alertCount.user}}</span>
  24. </view>
  25. </view>
  26. <!-- 状态筛选(未读/已读/已处理) -->
  27. <view class="status-filter">
  28. <view class="status-item {{activeStatus === 'unread' ? 'status-active' : ''}}" bindtap="switchStatus" data-status="unread">全部</view>
  29. <view class="status-item {{activeStatus === 'read' ? 'status-active' : ''}}" bindtap="switchStatus" data-status="read">触发消息</view>
  30. <view class="status-item {{activeStatus === 'handled' ? 'status-active' : ''}}" bindtap="switchStatus" data-status="handled">恢复消息</view>
  31. </view>
  32. </view>
  33. <view style="height: 230rpx;"></view>
  34. <!-- 告警列表 -->
  35. <view class="alert-list">
  36. <!-- 空数据占位 -->
  37. <view class="empty-wrap" wx:if="{{filteredAlerts.length === 0}}">
  38. <view class="empty-icon">🔔</view>
  39. <view class="empty-text">{{activeFilter === 'all' ? '暂无未读消息' : '暂无该消息类型'}}</view>
  40. <view class="empty-subtext" wx:if="{{activeStatus === 'unread'}}">当前无未读消息,运营状态良好</view>
  41. </view>
  42. <!-- 告警列表项 -->
  43. <view class="alert-card" wx:for="{{filteredAlerts}}" wx:key="faultId" bindtap="toAlertDetail" data-alert="{{item}}">
  44. <!-- 未读角标 -->
  45. <view class="unread-tag" wx:if="{{item.status === 'unread'}}"></view>
  46. <!-- 告警类型图标+级别 mockAlerts -->
  47. <view class="alert-left">
  48. <view class="alert-icon {{item.level === 'critical' ? 'icon-critical' : item.level === 'warning' ? 'icon-warning' : 'icon-info'}}">
  49. {{item.level === 'critical' ? '危' : item.level === 'warning' ? '警' : '提'}}
  50. </view>
  51. <view class="alert-type">{{item.controllerId}}</view>
  52. </view>
  53. <!-- 告警核心信息 -->
  54. <view class="alert-middle">
  55. <view class="alert-title">{{item.faultdescs}}</view>
  56. <view class="alert-desc">{{item.deviceId}}</view>
  57. <view class="alert-info">
  58. <text>{{item.controllerId}}</text>
  59. <text>{{item.createtime}}</text>
  60. </view>
  61. </view>
  62. <!-- 操作按钮 -->
  63. <view class="alert-right">
  64. <button class="handle-btn" wx:if="{{item.faultstatus !== 0}}" bindtap="handleAlert" data-id="{{item.id}}" catchtap="true">
  65. 处理
  66. </button>
  67. <view class="handled-tag" wx:else>已处理</view>
  68. </view>
  69. </view>
  70. </view>
  71. <!-- 底部批量操作栏(有未处理告警时显示) -->
  72. <view class="batch-bar" wx:if="{{hasUnHandled}}">
  73. <button class="batch-read" bindtap="batchReadAll">标记全部已读</button>
  74. <button class="batch-handle" bindtap="batchHandleAll">标记全部已处理</button>
  75. </view>
  76. </view>