tab3.page.html 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <!-- tab3.page.html -->
  2. <ion-header [translucent]="true">
  3. <ion-toolbar class="custom-toolbar">
  4. <ion-title class="custom-title">
  5. 健康商城
  6. </ion-title>
  7. </ion-toolbar>
  8. </ion-header>
  9. <ion-content [fullscreen]="true" class="content-background">
  10. <!-- 搜索栏 -->
  11. <div class="search-container">
  12. <ion-searchbar placeholder="搜索" class="custom-searchbar"></ion-searchbar>
  13. </div>
  14. <!-- 分类区域(可横向滑动) -->
  15. <div class="category-scroll">
  16. <div class="category-scroll-inner">
  17. <ion-grid>
  18. <ion-row class="category-row">
  19. <ion-col size="3" *ngFor="let category of categories" class="category-col">
  20. <div class="category-item" (click)="onCategoryClick(category)">
  21. <div class="category-image-wrapper">
  22. <img [src]="category.image" alt="{{category.name}}" class="category-image">
  23. </div>
  24. <div class="category-text">{{ category.name }}</div>
  25. </div>
  26. </ion-col>
  27. </ion-row>
  28. </ion-grid>
  29. </div>
  30. </div>
  31. <!-- 商品卡片列表区域 -->
  32. <div class="product-container">
  33. <ng-container *ngFor="let product of products">
  34. <ion-card class="product-card" (click)="openDetailModal(product)">
  35. <ion-card-header class="product-card-header">
  36. <div class="product-tag">{{ product.get('title') || '热销🔥🔥🔥' }}</div>
  37. </ion-card-header>
  38. <ion-card-content class="product-card-content">
  39. <div class="product-image-wrapper">
  40. <img [src]="product.get('image')" alt="{{product.get('name')}}" class="product-image">
  41. </div>
  42. <div class="product-info">
  43. <h3 class="product-name">{{ product.get('name') }}</h3>
  44. <div class="product-price">{{ product.get('price') }}</div>
  45. </div>
  46. </ion-card-content>
  47. </ion-card>
  48. </ng-container>
  49. </div>
  50. <!-- 底部弹出模态 -->
  51. <ion-modal [isOpen]="showDetailModal" cssClass="bottom-modal" backdropDismiss="true" (ionModalDidDismiss)="closeDetailModal()">
  52. <ion-header>
  53. <ion-toolbar>
  54. <ion-title>详情</ion-title>
  55. <ion-buttons slot="end">
  56. <ion-button fill="clear" (click)="closeDetailModal()">
  57. <ion-icon name="close"></ion-icon>
  58. </ion-button>
  59. </ion-buttons>
  60. </ion-toolbar>
  61. </ion-header>
  62. <ion-content>
  63. <div class="modal-content" *ngIf="currentProduct">
  64. <div class="image-container">
  65. <img [src]="currentProduct.get('image')" alt="药品图片" class="medicine-image">
  66. </div>
  67. <h2 class="product-name">{{ currentProduct.get('name') }}</h2>
  68. <p><strong>价格:</strong>{{ currentProduct.get('price') }}</p>
  69. <p><strong>是否处方药:</strong>{{ currentProduct.get('prescription') ? '是' : '否' }}</p>
  70. <p><strong>用法用量:</strong>{{ currentProduct.get('usage') }}</p>
  71. <p><strong>主治功能:</strong>{{ currentProduct.get('function') }}</p>
  72. <p><strong>规格:</strong>{{ currentProduct.get('spec') }}</p>
  73. <p><strong>成分:</strong>{{ currentProduct.get('composition') }}</p>
  74. <p><strong>禁忌:</strong>{{ currentProduct.get('taboo') }}</p>
  75. </div>
  76. </ion-content>
  77. </ion-modal>
  78. </ion-content>