index.wxml 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  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 wx:for="{{listMitvMediaPlayer}}" wx:for-index="index" wx:for-item="item" class="sliderItem">
  119. <view class="data-card">
  120. <image class="data-card__icon" src="{{item.imgSrc}}"/>
  121. <view class="data-card__text">
  122. <view class="data-card__title">
  123. <text class="text-content">{{item.friendly_name}}</text>
  124. </view>
  125. <view class="data-card__value">
  126. <view class="tv_button-container">
  127. <button class=" {{(item.app_id=='com.xiaomi.mitv.tvplayer'||item.app_name=='模拟电视')?'tv_disabled-button':'tv_custom-button'}}" bindtap="tvFanChange" data-id="{{item.entity_id}}" data-fan="当贝桌面">电视模式</button>
  128. <button class=" {{(item.app_id=='com.xiaomi.mitv.tvplayer'||item.app_name=='模拟电视')?'tv_custom-button':'tv_disabled-button'}}" bindtap="tvFanChange" data-id="{{item.entity_id}}" data-fan="HDMI1">机顶盒模式</button>
  129. </view>
  130. </view>
  131. </view>
  132. </view>
  133. </view>
  134. </view>
  135. <view class="body-wrapper" style="width: 694rpx; height: 800rpx; display: block; box-sizing: border-box">
  136. <view class="body" style="width: 694rpx; height: 800rpx; display: block; box-sizing: border-box; left: 0rpx; top: 0rpx">
  137. <!-- 定时功能弹窗 -->
  138. <!-- 各设备控制弹窗 结束行-->
  139. <view class='test' wx:for="{{listHumidifier}}" wx:for-index="index" wx:for-item="item" class="sliderItem">
  140. <view class="data-media-player">
  141. <view class="center-view">
  142. <text class="gray-text">{{item.friendly_name}}</text>
  143. </view>
  144. <view class="data-container data-card">
  145. <!-- <view class="data-card">
  146. <image class="data-card__icon" src="/static/images/hum.png"/>
  147. <view class="data-card__text">
  148. <view class="data-card__title">
  149. 湿度
  150. </view>
  151. <view class="data-card__value">
  152. {{item.humidity}}%
  153. </view>
  154. </view>
  155. </view> -->
  156. <view class="data-card">
  157. <image class="data-card__icon"src="/static/images/hum.png"/>
  158. <view class="data-card__text">
  159. <view class="data-card__title">
  160. 开关
  161. </view>
  162. <view class="data-card__value">
  163. <switch checked="{{item.state=='on'}}" bindchange="onSelect_All" data-param0='{{index}}' data-param1='/services' data-param2='/{{item.domain}}'
  164. data-param3='{{item.state=="on"?"/turn_off":"/turn_on"}}' data-param4='{{item.state=="on"?"0":"1"}}' data-param5='{{item.entity_id}}'/>
  165. </view>
  166. </view>
  167. </view>
  168. <view class="data-card">
  169. <image class="data-card__icon"src="/static/images/hum.png"/>
  170. <view class="data-card__text">
  171. <view class="data-card__title">
  172. 湿度:{{item.humidity}}%
  173. </view>
  174. <view class="data-card__value1">
  175. <!-- <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>
  176. -->
  177. <slider style="width:100%;margin:20rpx 20rpx 0rpx 0rpx" bindtouchend="handleTouchEndHumidifier" bindchanging="handleChangingHumidifier" 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}}'>
  178. <text style="color:white">{{sliderValueHumidifier}}</text>
  179. </slider>
  180. </view>
  181. </view>
  182. </view>
  183. <!-- <view class="data-card">
  184. <image class="data-card__icon"src="/static/images/hum.png"/>
  185. <view class="data-card__text">
  186. <view class="data-card__title">
  187. 湿度-
  188. </view>
  189. <view class="data-card__value">
  190. <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>
  191. </view>
  192. </view>
  193. </view> -->
  194. <view style="margin-top: 10rpx;">
  195. </view>
  196. </view>
  197. </view>
  198. </view>
  199. <view class='test sliderItem' wx:for="{{listClimate}}" wx:for-index="index" wx:for-item="item">
  200. <view class="data-media-player">
  201. <view class="center-view">
  202. <text class="gray-text">{{item.friendly_name}}</text>
  203. </view>
  204. <view class="value-display">{{temperatureHumidifyName}}:{{item.temperature}}°C</view>
  205. <view class="button-row">
  206. <!-- <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>
  207. <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> -->
  208. <slider class="tui-slider-box" bindtouchend="handleTouchEndClimate" bindchanging="handleChangingClimate" 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}}'>
  209. <text style="color:white">{{sliderValueClimate}}</text>
  210. </slider>
  211. </view>
  212. <view class="air-conditioner-controls">
  213. <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}}'>
  214. <image class="control-icon" />
  215. <text class="control-text">自动</text>
  216. </button>
  217. <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'>
  218. <image class="control-icon" />
  219. <text class="control-text_zr">制热</text>
  220. </button>
  221. <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'>
  222. <image class="control-icon" />
  223. <text class="control-text_zl">制冷</text>
  224. </button>
  225. <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'>
  226. <image class="control-icon" />
  227. <text class="control-text_cs">除湿</text>
  228. </button>
  229. <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'>
  230. <image class="control-icon" />
  231. <text class="control-text_sf">送风</text>
  232. </button>
  233. <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}}'>
  234. <image class="control-icon" />
  235. <text class="control-text">关闭</text>
  236. </button>
  237. </view>
  238. </view>
  239. </view>
  240. <!-- <view wx:for="{{listMitvMediaPlayer}}" wx:for-index="index" wx:for-item="item" class="sliderItem">
  241. <view class="data-media-player" style="{{item.entity_picture}} ">
  242. <view class="center-view">
  243. <text class="gray-text">{{item.friendly_name}}</text>
  244. </view>
  245. <view class="tv_button-container">
  246. <button class="tv_custom-button" bindtap="tvFanChange" data-id="{{item.entity_id}}" data-fan="TV" disabled="{{item.device_class!='tv'}}">电视模式</button>
  247. <button class="tv_custom-button tv_disabled-button" bindtap="tvFanChange" data-id="{{item.entity_id}}" data-fan="HDMI1" disabled="{{item.device_class!='hdmi1'}}">机顶盒模式</button>
  248. </view>
  249. </view>
  250. </view> -->
  251. <view wx:for="{{listMiotMediaPlayer}}" wx:for-index="index" wx:for-item="item" class="sliderItem">
  252. <!-- 一行 -->
  253. <view class="data-media-player" style="{{item.entity_picture}} ">
  254. <view class="center-view">
  255. <text class="gray-text">{{item.friendly_name}}</text>
  256. </view>
  257. <view class="audio-player">
  258. <view class="controls">
  259. <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}}'/>
  260. <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}}'/>
  261. <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"/>
  262. </view>
  263. <view class="progress">
  264. <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}}' />
  265. </view>
  266. <view class="info">
  267. <text class="song-title">歌曲名称:{{item.media_title}}</text>
  268. <text class="song-artist">演唱者:{{item.media_artist}}</text>
  269. <!-- <text class="song-artist">歌曲名称:{{item.media_album_name}}</text> -->
  270. </view>
  271. </view>
  272. </view>
  273. <!-- 一行结束 -->
  274. </view>
  275. <!-- 一行结束 -->
  276. </view>
  277. </view>
  278. </view>