home.component.html 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. <ion-content class="content">
  2. <div [ngClass]="{
  3. 'header': true,
  4. 'pad-top-ios': deviceSer.isIOS
  5. }" [style.background-image]="'url(img/bg.png)'">
  6. <div class="top">
  7. <ion-segment [scrollable]="true" (ionChange)="segmentChanged($event)" layout="icon-bottom" [value]="currentValue"
  8. mode="md">
  9. @for (item of options; track $index) {
  10. <ion-segment-button (click)="onChangeTab(item?.value)" [value]="item?.value" class="tabs">
  11. <ion-label>{{ item?.label }}</ion-label>
  12. </ion-segment-button>
  13. }
  14. </ion-segment>
  15. <div class="more">
  16. <img (click)="isOpen = true" src="img/more.png" alt="" />
  17. <img src="img/search.png" alt="" (click)="search()" />
  18. </div>
  19. </div>
  20. </div>
  21. <div class="banner">
  22. <div class="swiper mySwiper">
  23. <div class="swiper-wrapper">
  24. @for (item of banner; track $index) {
  25. <div class="swiper-slide" (click)="toUrl(item?.get('url'))">
  26. <img [src]="item?.get('image')" alt="" />
  27. </div>
  28. }
  29. </div>
  30. <div class="swiper-pagination"></div>
  31. </div>
  32. </div>
  33. <div class="notice">
  34. <img src="img/通知广播.png" alt="" class="notice-icon" />
  35. <div class="swiper swiper-notice">
  36. <div class="swiper-wrapper">
  37. @for (item of notices; track $index) {
  38. <div class="swiper-slide notice-item" (click)="presentAlert(item)">
  39. <div class="notice-item-title">
  40. <div class="notice-item-text">【{{ item?.get("title") }}】</div>
  41. <div class="notice-item-content">
  42. {{ item?.get("content") }}
  43. </div>
  44. </div>
  45. <div class="notice-item-time">
  46. {{ item?.createdAt | date : "yyyy-MM-dd HH:mm" }}
  47. </div>
  48. </div>
  49. }
  50. </div>
  51. </div>
  52. </div>
  53. <div class="bar">
  54. <ion-select label="主播列表" [placeholder]="sex" cancelText="关闭" okText="确定" (ionChange)="onChangeSex($event)"
  55. interface="action-sheet">
  56. <ion-select-option value="all">全部</ion-select-option>
  57. <ion-select-option value="女">女主播</ion-select-option>
  58. <ion-select-option value="男">男主播</ion-select-option>
  59. </ion-select>
  60. <div class="bar-right">
  61. <div class="city" (click)="isOpenCity = true">
  62. <ion-icon name="location-outline"></ion-icon>{{ city ? city : "全部" }}
  63. </div>
  64. <ion-icon (click)="isColumn = !isColumn" [name]="!isColumn ? 'grid' : 'list'"
  65. style="font-size: 24px; color: #fe4d53"></ion-icon>
  66. </div>
  67. </div>
  68. <div [ngClass]="{
  69. 'room-list': true,
  70. 'room-list-column': isColumn,
  71. }">
  72. @for (item of roomList; track $index) {
  73. <div [ngClass]="{
  74. 'list-row': true,
  75. 'list-row-column': isColumn,
  76. }" (click)="toUrl('user/profile/' + item.uid)" [style.background-image]="'url(' + item?.cover + ')'">
  77. <div class="title-tag">在线聊天</div>
  78. @if (userList?.includes(item.uid)) {
  79. <div class="live-tag">
  80. <img src="img/live.gif" alt="" />
  81. {{ userList?.includes(item.uid) ? "在线" : "" }}
  82. </div>
  83. }
  84. <div class="room-footer">
  85. <div class="user">
  86. {{ item?.nickname || item?.mobile }}
  87. </div>
  88. <div class="desc">{{ item?.title }}</div>
  89. <div class="city-block">
  90. <div class="row-li">
  91. <ion-icon name="location-outline"></ion-icon>
  92. {{ item.city }}
  93. </div>
  94. <div class="row-li" style="margin-left: 4px">
  95. <img src="https://file-cloud.fmode.cn/Qje9D4bqol/20241109/pctmvt110807052.png" alt="" />
  96. {{ item.birthdate }}
  97. </div>
  98. </div>
  99. </div>
  100. </div>
  101. }
  102. </div>
  103. @if (disbable) {
  104. <ion-infinite-scroll (ionInfinite)="onIonInfinite($event)">
  105. <ion-infinite-scroll-content></ion-infinite-scroll-content>
  106. </ion-infinite-scroll>
  107. }
  108. </ion-content>
  109. <ion-modal trigger="open-modal" [isOpen]="isOpen" (didDismiss)="onDidDismiss($event)">
  110. <ng-template>
  111. <ion-toolbar>
  112. <ion-buttons slot="start">
  113. <ion-button (click)="cancel('cancel')">取消</ion-button>
  114. </ion-buttons>
  115. <ion-buttons slot="end">
  116. <ion-button (click)="cancel('confirm', currentValue)">确认</ion-button>
  117. </ion-buttons>
  118. </ion-toolbar>
  119. <ion-picker>
  120. <ion-picker-column [value]="currentValue" (ionChange)="onIonChange($event)">
  121. @for (item of options; track $index) {
  122. <ion-picker-column-option value="{{ item?.value }}">{{
  123. item?.label
  124. }}</ion-picker-column-option>
  125. }
  126. </ion-picker-column>
  127. </ion-picker>
  128. </ng-template>
  129. </ion-modal>
  130. <ion-modal #modal trigger="open-modal" [isOpen]="isOpenCity" backdropDismiss="false">
  131. <ng-template>
  132. <ion-toolbar>
  133. <ion-buttons slot="start">
  134. <ion-button (click)="changeCityCancel('cancel')">取消</ion-button>
  135. </ion-buttons>
  136. <ion-buttons slot="end">
  137. <ion-button (click)="changeCityCancel('confirm')">确定</ion-button>
  138. </ion-buttons>
  139. </ion-toolbar>
  140. <ion-picker>
  141. <ion-picker-column [value]="province" (ionChange)="onIonChangeCity($event, 'province')">
  142. @for (item of provinceColumns; track $index) {
  143. <ion-picker-column-option value="{{ item }}">{{
  144. item
  145. }}</ion-picker-column-option>
  146. }
  147. </ion-picker-column>
  148. <ion-picker-column [value]="city" (ionChange)="onIonChangeCity($event, 'city')">
  149. @for (item of cityColumns; track $index) {
  150. <ion-picker-column-option value="{{ item }}">{{
  151. item
  152. }}</ion-picker-column-option>
  153. }
  154. </ion-picker-column>
  155. </ion-picker>
  156. </ng-template>
  157. </ion-modal>