tab1.page.html 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <ion-header [translucent]="true" class="health-header">
  2. <ion-toolbar>
  3. <ion-buttons slot="start">
  4. <ion-avatar>
  5. <img src="assets/avatar.png" />
  6. <ion-badge color="warning" class="health-badge">优</ion-badge>
  7. </ion-avatar>
  8. </ion-buttons>
  9. <ion-title class="location-title">
  10. <ion-icon name="location-sharp"></ion-icon>
  11. <span>井冈山革命博物馆</span>
  12. <ion-note>28°C 晴</ion-note>
  13. </ion-title>
  14. <ion-buttons slot="end">
  15. <ion-button fill="clear" (click)="openNotifications()">
  16. <ion-icon name="notifications" slot="icon-only"></ion-icon>
  17. <ion-badge color="danger" *ngIf="hasEmergency">!</ion-badge>
  18. </ion-button>
  19. </ion-buttons>
  20. </ion-toolbar>
  21. </ion-header>
  22. <ion-content [fullscreen]="true" class="health-content">
  23. <!-- 健康仪表盘 -->
  24. <ion-card class="health-dashboard">
  25. <ion-card-header>
  26. <ion-card-title>健康状态监测</ion-card-title>
  27. <ion-card-subtitle>最后更新: {{ lastUpdate | date:'HH:mm' }}</ion-card-subtitle>
  28. </ion-card-header>
  29. <ion-card-content>
  30. <div class="gauge-container">
  31. <canvas #healthGauge width="240" height="240"></canvas>
  32. <div class="gauge-center">
  33. <div class="gauge-value">{{ healthScore }}</div>
  34. <div class="gauge-label">健康指数</div>
  35. </div>
  36. </div>
  37. <div class="health-stats">
  38. <div class="stat-item">
  39. <ion-icon name="heart" color="danger"></ion-icon>
  40. <div>{{ currentHeartRate }}</div>
  41. <div>心率</div>
  42. </div>
  43. <div class="stat-item">
  44. <ion-icon name="water" color="primary"></ion-icon>
  45. <div>{{ bloodOxygen }}%</div>
  46. <div>血氧</div>
  47. </div>
  48. <div class="stat-item">
  49. <ion-icon name="walk" color="success"></ion-icon>
  50. <div>{{ steps }}/8000</div>
  51. <div>步数</div>
  52. </div>
  53. </div>
  54. </ion-card-content>
  55. <ion-fab vertical="bottom" horizontal="end" slot="fixed">
  56. <ion-fab-button color="danger" (click)="emergencyCall()">
  57. <ion-icon name="alert"></ion-icon>
  58. </ion-fab-button>
  59. </ion-fab>
  60. </ion-card>
  61. <!-- 快捷功能入口 -->
  62. <ion-grid class="quick-actions">
  63. <ion-row>
  64. <ion-col size="6" *ngFor="let action of quickActions">
  65. <ion-button expand="block" fill="clear" (click)="actionClick(action)">
  66. <div class="action-button">
  67. <ion-icon [name]="action.icon" color="primary"></ion-icon>
  68. <div>{{ action.label }}</div>
  69. </div>
  70. </ion-button>
  71. </ion-col>
  72. </ion-row>
  73. </ion-grid>
  74. <!-- 健康预警卡片 -->
  75. <ion-card *ngIf="showWarning" class="warning-card" @fadeIn>
  76. <ion-card-header>
  77. <ion-card-title color="danger">
  78. <ion-icon name="warning"></ion-icon>
  79. 健康预警
  80. </ion-card-title>
  81. </ion-card-header>
  82. <ion-card-content>
  83. <ion-item lines="none">
  84. <ion-icon slot="start" name="heart" color="danger"></ion-icon>
  85. <ion-label>您的心率超过安全阈值</ion-label>
  86. </ion-item>
  87. <ion-button expand="block" fill="solid" color="danger">
  88. 查看处理建议
  89. </ion-button>
  90. </ion-card-content>
  91. </ion-card>
  92. <!-- 红色文旅推荐 -->
  93. <ion-card class="red-tourism">
  94. <ion-card-header>
  95. <ion-card-title>
  96. <ion-icon name="star" color="warning"></ion-icon>
  97. 今日红色足迹
  98. </ion-card-title>
  99. </ion-card-header>
  100. <ion-card-content>
  101. <swiper-container [slidesPerView]="1.2" [spaceBetween]="10" class="tourism-swiper">
  102. <swiper-slide *ngFor="let spot of tourismSpots">
  103. <div class="spot-card" [style.background-image]="'url(' + spot.image + ')'">
  104. <div class="spot-overlay">
  105. <div class="spot-title">{{ spot.name }}</div>
  106. <div class="spot-difficulty">
  107. <ion-icon name="star" *ngFor="let i of [].constructor(spot.difficulty)"></ion-icon>
  108. </div>
  109. <ion-badge *ngFor="let tag of spot.tags" color="light">{{ tag }}</ion-badge>
  110. </div>
  111. </div>
  112. </swiper-slide>
  113. </swiper-container>
  114. </ion-card-content>
  115. </ion-card>
  116. <!-- 历史上的今天 -->
  117. <ion-card class="history-today">
  118. <ion-card-header>
  119. <ion-card-title>
  120. <ion-icon name="calendar" color="medium"></ion-icon>
  121. 历史上的今天
  122. </ion-card-title>
  123. </ion-card-header>
  124. <ion-card-content>
  125. <div class="history-content">
  126. <div class="history-text">{{ todayHistory }}</div>
  127. <ion-button fill="outline" size="small">学习更多</ion-button>
  128. </div>
  129. <div class="health-tip">
  130. <ion-icon name="bulb" color="warning"></ion-icon>
  131. {{ healthTip }}
  132. </div>
  133. </ion-card-content>
  134. </ion-card>
  135. </ion-content>
  136. <ion-footer>
  137. <ion-toolbar>
  138. <ion-segment value="home" color="danger">
  139. <ion-segment-button value="home">
  140. <ion-icon name="home"></ion-icon>
  141. <ion-label>首页</ion-label>
  142. </ion-segment-button>
  143. <ion-segment-button value="report">
  144. <ion-icon name="document-text"></ion-icon>
  145. <ion-label>健康报告</ion-label>
  146. </ion-segment-button>
  147. <ion-segment-button value="map">
  148. <ion-icon name="map"></ion-icon>
  149. <ion-label>红色地图</ion-label>
  150. </ion-segment-button>
  151. <ion-segment-button value="profile">
  152. <ion-icon name="person"></ion-icon>
  153. <ion-label>我的</ion-label>
  154. </ion-segment-button>
  155. </ion-segment>
  156. </ion-toolbar>
  157. </ion-footer>