tab3.page.html 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  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. <ion-searchbar
  12. placeholder="搜索"
  13. class="custom-searchbar"
  14. (ionInput)="searchProducts($event)">
  15. </ion-searchbar>
  16. <!-- 分类区域(可横向滑动) -->
  17. <div class="category-scroll">
  18. <div class="category-scroll-inner">
  19. <ion-grid>
  20. <ion-row class="category-row">
  21. <ion-col
  22. size="3"
  23. size-sm="3"
  24. size-md="3"
  25. size-lg="3"
  26. size-xl="3"
  27. *ngFor="let category of categories"
  28. class="category-col">
  29. <div class="category-item" (click)="onCategoryClick(category)">
  30. <div class="category-image-wrapper">
  31. <img [src]="category.image" alt="{{category.name}}" class="category-image">
  32. </div>
  33. <div class="category-text">{{ category.name }}</div>
  34. </div>
  35. </ion-col>
  36. </ion-row>
  37. </ion-grid>
  38. </div>
  39. </div>
  40. <!-- 热销模块 -->
  41. <div class="marketing-section">
  42. <h2>热销🔥🔥🔥</h2>
  43. <div class="product-container">
  44. <ng-container *ngFor="let product of hotProducts | slice:0:2">
  45. <ion-card class="product-card" (click)="openDetailModal(product)">
  46. <ion-card-header class="product-card-header">
  47. <div class="product-tag">{{ product.get('title') || '热销🔥🔥🔥' }}</div>
  48. </ion-card-header>
  49. <ion-card-content class="product-card-content">
  50. <div class="product-image-wrapper">
  51. <img [src]="product.get('image')" alt="{{product.get('name')}}" class="product-image">
  52. </div>
  53. <div class="product-info">
  54. <h3 class="product-name">{{ product.get('name') }}</h3>
  55. <div class="product-price">{{ product.get('price') }}</div>
  56. </div>
  57. </ion-card-content>
  58. </ion-card>
  59. </ng-container>
  60. <ion-button fill="clear" (click)="viewMore('hot')">查看更多</ion-button>
  61. </div>
  62. </div>
  63. <!-- 特价模块 -->
  64. <div class="marketing-section">
  65. <h2>特价优惠💰💰💰</h2>
  66. <div class="product-container">
  67. <ng-container *ngFor="let product of specialProducts | slice:0:2">
  68. <ion-card class="product-card" (click)="openDetailModal(product)">
  69. <ion-card-header class="product-card-header">
  70. <div class="product-tag">{{ product.get('title') || '特价优惠💰💰💰' }}</div>
  71. </ion-card-header>
  72. <ion-card-content class="product-card-content">
  73. <div class="product-image-wrapper">
  74. <img [src]="product.get('image')" alt="{{product.get('name')}}" class="product-image">
  75. </div>
  76. <div class="product-info">
  77. <h3 class="product-name">{{ product.get('name') }}</h3>
  78. <div class="product-price">{{ product.get('price') }}</div>
  79. </div>
  80. </ion-card-content>
  81. </ion-card>
  82. </ng-container>
  83. <ion-button fill="clear" (click)="viewMore('special')">查看更多</ion-button>
  84. </div>
  85. </div>
  86. <!-- 商品卡片列表区域 -->
  87. <div class="product-container">
  88. <ng-container *ngFor="let product of products">
  89. <ion-card class="product-card" (click)="openDetailModal(product)">
  90. <ion-card-header class="product-card-header">
  91. <div class="product-tag">{{ product.get('title') || '药品详情' }}</div>
  92. </ion-card-header>
  93. <ion-card-content class="product-card-content">
  94. <div class="product-image-wrapper">
  95. <img [src]="product.get('image')" alt="{{product.get('name')}}" class="product-image">
  96. </div>
  97. <div class="product-info">
  98. <h3 class="product-name">{{ product.get('name') }}</h3>
  99. <div class="product-price">{{ product.get('price') }}</div>
  100. </div>
  101. </ion-card-content>
  102. </ion-card>
  103. </ng-container>
  104. </div>
  105. <!-- 底部弹出模态 -->
  106. <ion-modal [isOpen]="showDetailModal" cssClass="bottom-modal" backdropDismiss="true" (ionModalDidDismiss)="closeDetailModal()">
  107. <ion-header>
  108. <ion-toolbar>
  109. <ion-title>详情</ion-title>
  110. <ion-buttons slot="end">
  111. <ion-button fill="clear" (click)="closeDetailModal()">
  112. <ion-icon name="close"></ion-icon>
  113. </ion-button>
  114. </ion-buttons>
  115. </ion-toolbar>
  116. </ion-header>
  117. <ion-content>
  118. <div class="modal-content" *ngIf="currentProduct">
  119. <div class="image-container">
  120. <img [src]="currentProduct.get('image')" alt="药品图片" class="medicine-image">
  121. </div>
  122. <h2 class="product-name">{{ currentProduct.get('name') }}</h2>
  123. <p><strong>价格:</strong>{{ currentProduct.get('price') }}</p>
  124. <p><strong>是否处方药:</strong>{{ currentProduct.get('prescription') ? '是' : '否' }}</p>
  125. <p><strong>用法用量:</strong>{{ currentProduct.get('usage') }}</p>
  126. <p><strong>主治功能:</strong>{{ currentProduct.get('function') }}</p>
  127. <p><strong>规格:</strong>{{ currentProduct.get('spec') }}</p>
  128. <p><strong>成分:</strong>{{ currentProduct.get('composition') }}</p>
  129. <p><strong>禁忌:</strong>{{ currentProduct.get('taboo') }}</p>
  130. </div>
  131. </ion-content>
  132. </ion-modal>
  133. </ion-content>