page-selectlist-detail.page.html 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <ion-header [translucent]="true" class="recipe-header">
  2. <ion-toolbar color="light">
  3. <ion-buttons slot="start">
  4. <ion-back-button defaultHref="/" text="" color="dark"></ion-back-button>
  5. </ion-buttons>
  6. <ion-title class="header-title">菜谱详情</ion-title>
  7. <ion-buttons slot="end">
  8. <ion-button fill="clear" color="dark">
  9. <ion-icon slot="icon-only" name="bookmark-outline"></ion-icon>
  10. </ion-button>
  11. <ion-button fill="clear" color="dark">
  12. <ion-icon slot="icon-only" name="share-social-outline"></ion-icon>
  13. </ion-button>
  14. </ion-buttons>
  15. </ion-toolbar>
  16. </ion-header>
  17. <ion-content [fullscreen]="true" class="recipe-content">
  18. <!-- 菜品图片 -->
  19. <div class="recipe-image-container">
  20. <img [src]="recipe?.get('imageUrl') || 'assets/images/default-food.jpg'"
  21. [alt]="recipe?.get('title')"
  22. class="recipe-image">
  23. <div class="image-overlay">
  24. <ion-chip color="warning" outline>
  25. <ion-icon name="time-outline" slot="start"></ion-icon>
  26. {{ recipe?.get('cookTime') || '30分钟' }}
  27. </ion-chip>
  28. </div>
  29. </div>
  30. <!-- 菜品名称和评分 -->
  31. <div class="recipe-info-section">
  32. <div class="recipe-header">
  33. <h1 class="recipe-title">{{ recipe?.get('title') }}</h1>
  34. <div class="recipe-rating">
  35. <ion-icon name="star" color="warning"></ion-icon>
  36. <ion-icon name="star" color="warning"></ion-icon>
  37. <ion-icon name="star" color="warning"></ion-icon>
  38. <ion-icon name="star" color="warning"></ion-icon>
  39. <ion-icon name="star-outline" color="warning"></ion-icon>
  40. <span class="rating-text">4.5</span>
  41. </div>
  42. </div>
  43. <!-- 菜品元信息 -->
  44. <div class="recipe-meta">
  45. <ion-item lines="none" class="meta-item">
  46. <ion-icon slot="start" name="time-outline" color="medium"></ion-icon>
  47. <ion-label>{{ recipe?.get('prepTime') || '10分钟' }} 准备</ion-label>
  48. </ion-item>
  49. <ion-item lines="none" class="meta-item">
  50. <ion-icon slot="start" name="flame-outline" color="medium"></ion-icon>
  51. <ion-label>{{ recipe?.get('difficulty') || '中等' }}难度</ion-label>
  52. </ion-item>
  53. <ion-item lines="none" class="meta-item">
  54. <ion-icon slot="start" name="people-outline" color="medium"></ion-icon>
  55. <ion-label>{{ recipe?.get('servings') || 2 }} 人份</ion-label>
  56. </ion-item>
  57. </div>
  58. <!-- 菜品描述 -->
  59. <p class="recipe-description" *ngIf="recipe?.get('description')">
  60. {{ recipe?.get('description') }}
  61. </p>
  62. </div>
  63. <!-- 食材部分 -->
  64. <ion-card class="section-card">
  65. <ion-card-header class="section-header">
  66. <ion-card-title class="section-title">
  67. <ion-icon name="basket-outline" class="section-icon"></ion-icon>
  68. 所需食材
  69. </ion-card-title>
  70. </ion-card-header>
  71. <ion-card-content>
  72. <ion-list lines="none" class="ingredient-list">
  73. <ion-item *ngFor="let ingredient of recipe?.get('ingredients')" class="ingredient-item">
  74. <ion-icon name="ellipse" slot="start" class="bullet-icon"></ion-icon>
  75. <ion-label class="ingredient-name">{{ ingredient.name }}</ion-label>
  76. <ion-note slot="end" color="primary" class="ingredient-amount">{{ ingredient.amount }}</ion-note>
  77. </ion-item>
  78. </ion-list>
  79. </ion-card-content>
  80. </ion-card>
  81. <!-- 操作步骤 -->
  82. <ion-card class="section-card">
  83. <ion-card-header class="section-header">
  84. <ion-card-title class="section-title">
  85. <ion-icon name="restaurant-outline" class="section-icon"></ion-icon>
  86. 操作步骤
  87. </ion-card-title>
  88. </ion-card-header>
  89. <ion-card-content>
  90. <ion-list lines="none" class="step-list">
  91. <ion-item *ngFor="let step of recipe?.get('steps'); let i = index" class="step-item">
  92. <ion-avatar slot="start" class="step-number">
  93. {{ i + 1 }}
  94. </ion-avatar>
  95. <ion-label class="ion-text-wrap step-text">
  96. <p>{{ step }}</p>
  97. </ion-label>
  98. </ion-item>
  99. </ion-list>
  100. </ion-card-content>
  101. </ion-card>
  102. <!-- 底部操作按钮 -->
  103. <div class="action-buttons">
  104. <ion-button expand="block" color="success" shape="round" class="cook-button">
  105. <ion-icon name="restaurant" slot="start"></ion-icon>
  106. 开始烹饪
  107. </ion-button>
  108. </div>
  109. </ion-content>