index.wxml 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. <!--index.wxml-->
  2. <view class="{{!status_light ? 'wrapper' : 'wrapper-dark' }}" style="width: max-content; height: fit-content; display: block; box-sizing: border-box">
  3. <!-- 天气的面板 -->
  4. <view class="header-wrapper" wx:if="{{!status_fire}}">
  5. <!-- <view class="header-title">
  6. <text>空气质量-{{ airText }}</text>
  7. <text>{{ area }}-{{ city }}</text>
  8. </view>
  9. <view class="header-text">
  10. <text>{{ airValue }}</text>
  11. <text>{{ weather }}</text>
  12. </view> -->
  13. <view class="header-title">
  14. <text>空气质量-{{ airText }}</text>
  15. <text>{{ area }}-{{ city }}</text>
  16. </view>
  17. <view class="header-text">
  18. <text>{{ airValue }}</text>
  19. <text>{{ weather }}</text>
  20. </view>
  21. </view>
  22. <view wx:if="{{isLoading}}" class="loading-container">
  23. <text class="loading-text">数据正在加载,请耐心等待...</text>
  24. </view>
  25. <view class="data-container sliderList">
  26. <!--温度-->
  27. <view class="data-card">
  28. <image class="data-card__icon"src="/static/images/temp.png"/>
  29. <view class="data-card__text">
  30. <view class="data-card__title">
  31. 温度
  32. </view>
  33. <view class="data-card__value">
  34. {{w_temp}}℃
  35. </view>
  36. </view>
  37. </view>
  38. <!--湿度-->
  39. <view class="data-card">
  40. <image class="data-card__icon"src="/static/images/hum.png"/>
  41. <view class="data-card__text">
  42. <view class="data-card__title">
  43. 湿度
  44. </view>
  45. <view class="data-card__value">
  46. {{w_humidity}}%
  47. </view>
  48. </view>
  49. </view>
  50. <!--光照度-->
  51. <!-- <view class="data-card">
  52. <image class="data-card__icon"src="/static/images/light.png"/>
  53. <view class="data-card__text">
  54. <view class="data-card__title">
  55. 光照度
  56. </view>
  57. <view class="data-card__value">
  58. 100 LX
  59. </view>
  60. </view>
  61. </view> -->
  62. <!--客厅灯-->
  63. <!-- <view class="data-card">
  64. <image class="data-card__icon"src="/static/images/led.png"/>
  65. <view class="data-card__text">
  66. <view class="data-card__title">
  67. 客厅灯
  68. </view>
  69. <view class="data-card__value">
  70. <switch checked="{{Led}}" bindchange="onLedChange" color="#3d7ef9"/>
  71. </view>
  72. </view>
  73. </view> -->
  74. <!--报警器-->
  75. <!-- <view class="data-card">
  76. <image class="data-card__icon"src="/static/images/alarm.png"/>
  77. <view class="data-card__text">
  78. <view class="data-card__title">
  79. 报警器
  80. </view>
  81. <view class="data-card__value">
  82. <switch checked="{{Beep}}" bindchange="onBeepChange" color="#3d7ef9"/>
  83. </view>
  84. </view>
  85. </view> -->
  86. <view wx:for="{{listSwitch}}" wx:for-index="index" wx:for-item="item" class="sliderItem">
  87. <view class="data-card">
  88. <image class="data-card__icon" src="{{item.imgSrc}}"/>
  89. <view class="data-card__text">
  90. <view class="data-card__title1">
  91. {{item.friendly_name}}
  92. </view>
  93. <view class="data-card__value" wx:if="{{item.isAromlight}}">
  94. <image class="control-button_media_2 play {{isClickedToggleAromlight ? 'clicked' : ''}}" src="/static/images/start.png" bindtap="onSelect_All_aromlight" data-param0='{{index}}' data-param1='/services' data-param2='/{{item.domain}}'
  95. data-param3='/turn_on' data-param4='{{item.state=="on"?"0":"1"}}' data-param5='{{item.entity_id}}'/>
  96. </view>
  97. <view class="data-card__value" wx:else>
  98. <switch checked="{{item.state=='on'}}" bindchange="onSelect_All" data-param0='{{index}}' data-param1='/services' data-param2='/{{item.domain}}'
  99. data-param3='{{item.state=="on"?"/turn_off":"/turn_on"}}' data-param4='{{item.state=="on"?"0":"1"}}' data-param5='{{item.entity_id}}'/>
  100. </view>
  101. </view>
  102. </view>
  103. </view>
  104. <view wx:for="{{listCover}}" wx:for-index="index" wx:for-item="item" class="sliderItem">
  105. <view class="data-card">
  106. <image class="data-card__icon" src="{{item.imgSrc}}"/>
  107. <view class="data-card__text">
  108. <view class="data-card__title">
  109. <text class="text-content">{{item.friendly_name}}</text>
  110. </view>
  111. <view class="data-card__value">
  112. <switch checked="{{item.state=='open'}}" bindchange="onSelect_Cover" data-param0='{{index}}' data-param1='/services' data-param2='/{{item.domain}}'
  113. data-param3='{{item.state=="open"?"/open_cover":"/close_cover"}}' data-param4='{{item.state=="open"?"0":"1"}}' data-param5='{{item.entity_id}}'/>
  114. </view>
  115. </view>
  116. </view>
  117. </view>
  118. </view>
  119. <view class="body-wrapper" style="width: 694rpx; height: 800rpx; display: block; box-sizing: border-box">
  120. <view class="body" style="width: 694rpx; height: 800rpx; display: block; box-sizing: border-box; left: 0rpx; top: 0rpx">
  121. <!-- 定时功能弹窗 -->
  122. <!-- 各设备控制弹窗 结束行-->
  123. <view class='test' wx:for="{{listHumidifier}}" wx:for-index="index" wx:for-item="item" class="sliderItem">
  124. <view class="data-media-player">
  125. <view class="center-view">
  126. <text class="gray-text">{{item.friendly_name}}</text>
  127. </view>
  128. <view class="data-container data-card">
  129. <!-- <view class="data-card">
  130. <image class="data-card__icon" src="/static/images/hum.png"/>
  131. <view class="data-card__text">
  132. <view class="data-card__title">
  133. 湿度
  134. </view>
  135. <view class="data-card__value">
  136. {{item.humidity}}%
  137. </view>
  138. </view>
  139. </view> -->
  140. <view class="data-card">
  141. <image class="data-card__icon"src="/static/images/hum.png"/>
  142. <view class="data-card__text">
  143. <view class="data-card__title">
  144. 开关
  145. </view>
  146. <view class="data-card__value">
  147. <switch checked="{{item.state=='on'}}" bindchange="onSelect_All" data-param0='{{index}}' data-param1='/services' data-param2='/{{item.domain}}'
  148. data-param3='{{item.state=="on"?"/turn_off":"/turn_on"}}' data-param4='{{item.state=="on"?"0":"1"}}' data-param5='{{item.entity_id}}'/>
  149. </view>
  150. </view>
  151. </view>
  152. <view class="data-card">
  153. <image class="data-card__icon"src="/static/images/hum.png"/>
  154. <view class="data-card__text">
  155. <view class="data-card__title">
  156. 湿度:{{item.humidity}}%
  157. </view>
  158. <view class="data-card__value1">
  159. <!-- <button class="{{isButtonPressedHumidityUp ? 'round-gradient-button-pressed' : 'round-gradient-button'}} {{isClickedOnHumidifierUp ? 'clicked' : ''}}" bindtap="onHumidifierUp" style="width: 120rpx;height: 70rpx;" data-state='{{item.state}}' data-id="{{item.entity_id}}" data-domain='{{item.domain}}' data-min='{{item.min}}' data-max='{{item.max}}' data-humidity='{{item.humidity}}'>增加+</button>
  160. -->
  161. <slider class="tui-slider-box" bindchange="changeHumidity" step="1" min="{{item.min}}" max="{{item.max}}" data-id="{{item.entity_id}}" data-index='{{index}}' data-domain='{{item.domain}}' value="{{item.humidity}}" min="{{item.min}}" max="{{item.max}}" data-humidity='{{item.humidity}}'>
  162. </slider>
  163. </view>
  164. </view>
  165. </view>
  166. <!-- <view class="data-card">
  167. <image class="data-card__icon"src="/static/images/hum.png"/>
  168. <view class="data-card__text">
  169. <view class="data-card__title">
  170. 湿度-
  171. </view>
  172. <view class="data-card__value">
  173. <button class="{{isButtonPressedHumidityDown ? 'round-gradient-button-pressed' : 'round-gradient-button'}} {{isClickedOnHumidifierDown ? 'clicked' : ''}}" bindtap="onHumidifierDown" style="width: 120rpx;height: 60rpx;" data-state='{{item.state}}' data-id="{{item.entity_id}}" data-domain='{{item.domain}}' data-min='{{item.min}}' data-max='{{item.max}}' data-humidity='{{item.humidity}}'>减少-</button>
  174. </view>
  175. </view>
  176. </view> -->
  177. <view style="margin-top: 10rpx;">
  178. </view>
  179. </view>
  180. </view>
  181. </view>
  182. <view class='test sliderItem' wx:for="{{listClimate}}" wx:for-index="index" wx:for-item="item">
  183. <view class="data-media-player">
  184. <view class="center-view">
  185. <text class="gray-text">{{item.friendly_name}}</text>
  186. </view>
  187. <view class="value-display">{{temperatureHumidifyName}}:{{item.temperature}}°C</view>
  188. <view class="button-row">
  189. <!-- <button class="{{isButtonPressedClimateUp ? 'round-gradient-button-pressed' : 'round-gradient-button'}} {{isClickedOnClimateAuto ? 'clicked' : ''}}" bindtap="onClimateUp" data-state='{{item.state}}' data-id="{{item.entity_id}}" data-domain='{{item.domain}}' data-min='{{item.min}}' data-max='{{item.max}}' data-temperature='{{item.temperature}}' data-fanMode='{{item.fan_mode}}'>增加+</button>
  190. <button class="{{isButtonPressedClimateDown ? 'round-gradient-button-pressed' : 'round-gradient-button'}}" bindtap="onClimateDown" data-state='{{item.state}}' data-id="{{item.entity_id}}" data-domain='{{item.domain}}' data-min='{{item.min}}' data-max='{{item.max}}' data-temperature='{{item.temperature}}' data-fanMode='{{item.fan_mode}}'>减少-</button> -->
  191. <slider class="tui-slider-box" bindchange="changeClimate" min="{{item.min_temp}}" max="{{item.max_temp}}" step="1" value="{{item.temperature}}" data-state='{{item.state}}' data-id="{{item.entity_id}}" data-domain='{{item.domain}}' data-min='{{item.min_temp}}' data-max='{{item.max_temp}}' data-temperature='{{item.temperature}}' data-fanMode='{{item.fan_mode}}'>
  192. <text style="color:white">{{item.temperature}}°C</text>
  193. </slider>
  194. </view>
  195. <view class="air-conditioner-controls">
  196. <button class="{{item.state=='auto'?'control-button_1':'control-button'}} {{isClickedOnClimateAuto ? 'clicked' : ''}}" bindtap="onClimateAuto" data-state='{{item.state}}' data-temperature='{{item.temperature}}' data-id="{{item.entity_id}}" data-domain='{{item.domain}}'>
  197. <image class="control-icon" />
  198. <text class="control-text">自动</text>
  199. </button>
  200. <button class="{{item.state=='heat'?'control-button_1':'control-button'}}" bindtap="onClimateHeat" data-state='{{item.state}}' data-temperature='{{item.temperature}}' data-id="{{item.entity_id}}" data-domain='{{item.domain}}' data-flag='onHeat'>
  201. <image class="control-icon" />
  202. <text class="control-text_zr">制热</text>
  203. </button>
  204. <button class="{{item.state=='cool'?'control-button_1':'control-button'}}" bindtap="onClimateCool" data-state='{{item.state}}' data-temperature='{{item.temperature}}' data-id="{{item.entity_id}}" data-domain='{{item.domain}}' data-flag='onCool'>
  205. <image class="control-icon" />
  206. <text class="control-text_zl">制冷</text>
  207. </button>
  208. <button class="{{item.state=='dry'?'control-button_1':'control-button'}}" bindtap="onClimateDehumidify" data-state='{{item.state}}' data-temperature='{{item.temperature}}' data-id="{{item.entity_id}}" data-domain='{{item.domain}}' data-flag='onDehumidify'>
  209. <image class="control-icon" />
  210. <text class="control-text_cs">除湿</text>
  211. </button>
  212. <button class="{{item.state=='fan_only'?'control-button_1':'control-button'}}" bindtap="onClimateAirSupply" data-state='{{item.state}}' data-temperature='{{item.temperature}}' data-id="{{item.entity_id}}" data-domain='{{item.domain}}' data-flag='onAirSupply'>
  213. <image class="control-icon" />
  214. <text class="control-text_sf">送风</text>
  215. </button>
  216. <button class="{{item.state=='off'?'control-button_1':'control-button'}}" bindtap="onClimateOff" data-state='{{item.state}}' data-temperature='{{item.temperature}}' data-id="{{item.entity_id}}" data-domain='{{item.domain}}'>
  217. <image class="control-icon" />
  218. <text class="control-text">关闭</text>
  219. </button>
  220. </view>
  221. </view>
  222. </view>
  223. <view wx:for="{{listMiotMediaPlayer}}" wx:for-index="index" wx:for-item="item" class="sliderItem">
  224. <!-- 一行 -->
  225. <view class="data-media-player" style="{{item.entity_picture}} ">
  226. <view class="center-view">
  227. <text class="gray-text">{{item.friendly_name}}</text>
  228. </view>
  229. <view class="audio-player">
  230. <view class="controls">
  231. <image class="control-button_media prev {{isClickedPrevSong ? 'clicked' : ''}}" src="/static/images/prev.png" bindtap="prevSong" wx:if="{{canPrev}}" data-state='{{item.state}}' data-id="{{item.entity_id}}" data-domain='{{item.domain}}'/>
  232. <image class="control-button_media play {{isClickedTogglePlayPause ? 'clicked' : ''}}" src="{{item.state=='playing' ? '/static/images/pause.png' : '/static/images/play.png'}}" bindtap="togglePlayPause" data-state='{{item.state}}' data-id="{{item.entity_id}}" data-domain='{{item.domain}}'/>
  233. <image class="control-button_media next {{isClickedNextSong ? 'clicked' : ''}}" src="/static/images/next.png" bindtap="nextSong" wx:if="{{canNext}}" data-state='{{item.state}}' data-id="{{item.entity_id}}" data-domain='{{item.domain}}' bindload="imageLoad"/>
  234. </view>
  235. <view class="progress">
  236. <slider class="progress-bar" value="{{item.media_position}}" min="0" max="{{item.media_duration}}" bindchange="sliderChange" data-state='{{item.state}}' data-id="{{item.entity_id}}" data-domain='{{item.domain}}' />
  237. </view>
  238. <view class="info">
  239. <text class="song-title">歌曲名称:{{item.media_title}}</text>
  240. <text class="song-artist">演唱者:{{item.media_artist}}</text>
  241. <!-- <text class="song-artist">歌曲名称:{{item.media_album_name}}</text> -->
  242. </view>
  243. </view>
  244. </view>
  245. <!-- 一行结束 -->
  246. </view>
  247. <!-- 一行结束 -->
  248. </view>
  249. </view>
  250. </view>