index.wxml 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370
  1. <!-- index.wxml -->
  2. <view>
  3. <image src="/static/images/ic_top_bg.png" mode="widthFix"
  4. style="width: 100%;display: block;position: absolute; z-index: -1;top:0" />
  5. <view class="container">
  6. <van-nav-bar title="" left-text="" left=""></van-nav-bar>
  7. <!-- 天气的面板 -->
  8. <view class="header-wrapper" wx:if="{{!status_fire}}">
  9. <view class="weather-box">
  10. <text class="weather-title">空气质量-{{ airText }}</text>
  11. <text class="weather-value">{{ airValue }}</text>
  12. </view>
  13. <view class="weather-box" style="align-items: flex-end;">
  14. <text class="weather-title">{{ area }}-{{ city }}</text>
  15. <text class="weather-desc">{{ weather }}</text>
  16. </view>
  17. </view>
  18. <view class="contentArea">
  19. <view class="menu-tab">
  20. <view
  21. class="{{!modelList1.length ? 'menu-tab-disenable' : currentMenuTabIndex == 0 ? 'menu-tab-item-active' : 'menu-tab-item'}}"
  22. data-index="0" bindtap="checkMenuTap">起床模式</view>
  23. <view
  24. class="{{!modelList2.length ? 'menu-tab-disenable' : currentMenuTabIndex == 1 ? 'menu-tab-item-active' : 'menu-tab-item'}}"
  25. data-index="1" bindtap="checkMenuTap">观影模式</view>
  26. <view
  27. class="{{!modelList3.length ? 'menu-tab-disenable' : currentMenuTabIndex == 2 ? 'menu-tab-item-active' : 'menu-tab-item'}}"
  28. data-index="2" bindtap="checkMenuTap">睡眠模式</view>
  29. </view>
  30. <view class="theFirstRow">
  31. <image src="/static/icons/ic_temperature.svg" mode="widthFix" />
  32. <text class="theFirstRow-title">温度</text>
  33. <text class="theFirstRow-value">{{w_temp}}<text class="theFirstRow-unit">℃</text></text>
  34. <view style="margin-left: 30rpx;width: 2rpx; background: #e8e8e8; height: 24rpx;" />
  35. <image src="/static/icons/ic_humidity.svg" mode="widthFix" />
  36. <text class="theFirstRow-title">湿度</text>
  37. <text class="theFirstRow-value">{{w_humidity}}<text class="theFirstRow-unit">%</text></text>
  38. </view>
  39. <view wx:if="{{isLoading}}" class="loading-container">
  40. <text class="loading-text">数据正在加载,请耐心等待...</text>
  41. </view>
  42. <view class="data-container sliderList">
  43. <!-- 普通的-->
  44. <view wx:for="{{listSwitch}}" wx:for-index="index" wx:for-item="item" class="sliderItem">
  45. <view class="data-card" style="{{item.state=='on' ? 'background: #0BC3AA;' : item.bg}}">
  46. <image class="data-card__icon" src="{{item.state=='on' ? item.selectedImgSrc : item.imgSrc}}" />
  47. <view class="data-card__text">
  48. <text class="data-card__title1"
  49. style="{{item.state=='on' ? 'color: #ffffff' : ''}}">{{item.friendly_name}}</text>
  50. <view class="data-card__value">
  51. <van-switch size="22px" active-color="#2CCEB8" inactive-color="#E8EAEB" checked="{{item.state=='on'}}"
  52. bind:change="onSelect_All" data-param0="{{index}}" data-param1="/services"
  53. data-param2="/{{item.domain}}" data-param3='{{item.state=="on"?"/turn_off":"/turn_on"}}'
  54. data-param4='{{item.state=="on"?"0":"1"}}' data-param5="{{item.entity_id}}"
  55. custom-class="customSwitch" />
  56. </view>
  57. </view>
  58. </view>
  59. </view>
  60. <!-- cover -->
  61. <view wx:for="{{listCover}}" wx:for-index="index" wx:for-item="item" class="sliderItem">
  62. <view class="data-card">
  63. <image class="data-card__icon" src="{{item.imgSrc}}" />
  64. <view class="data-card__text">
  65. <view class="data-card__title">
  66. <text class="text-content">{{item.friendly_name}}</text>
  67. </view>
  68. <view class="data-card__value">
  69. <van-switch size="22px" active-color="#2CCEB8" inactive-color="#E8EAEB" checked="{{item.state=='open'}}"
  70. bindchange="onSelect_Cover" data-param0="{{index}}" data-param1="/services"
  71. data-param2="/{{item.domain}}" data-param3='{{item.state=="open"?"/open_cover":"/close_cover"}}'
  72. data-param4='{{item.state=="open"?"0":"1"}}' data-param5="{{item.entity_id}}" />
  73. </view>
  74. </view>
  75. </view>
  76. </view>
  77. <!-- 电视 card-->
  78. <view wx:for="{{listMitvMediaPlayer}}" wx:for-index="index" wx:for-item="item" class="sliderItem">
  79. <view class="data-card" style="{{item.bg}}">
  80. <image class="data-card__icon" src="{{item.imgSrc}}" />
  81. <view class="data-card__text">
  82. <view class="data-card__title">
  83. <text class="text-content">{{item.friendly_name}}</text>
  84. </view>
  85. <view class="data-card__value">
  86. <view class="tv_button-container">
  87. <text
  88. class=" {{(item.app_id=='com.xiaomi.mitv.tvplayer'||item.app_name=='模拟电视')?'tv_disabled-button':'tv_custom-button'}}"
  89. bindtap="tvFanChange" data-id="{{item.entity_id}}" data-fan="当贝桌面">电视模式</text>
  90. <text
  91. class=" {{(item.app_id=='com.xiaomi.mitv.tvplayer'||item.app_name=='模拟电视')?'tv_custom-button':'tv_disabled-button'}}"
  92. bindtap="tvFanChange" data-id="{{item.entity_id}}" data-fan="HDMI1">机顶盒模式</text>
  93. </view>
  94. </view>
  95. </view>
  96. </view>
  97. </view>
  98. </view>
  99. <view class="body-wrapper" style="margin-top:40rpx; display: flex;flex-direction: column;align-items: center;">
  100. <view class="body">
  101. <!-- 香薰机 -->
  102. <view class="test" class="sliderItem" wx:for="{{listAromatherapyMachine}}" wx:for-index="index"
  103. wx:for-item="item" wx:if="{{item.isAromatherapy}}">
  104. <view class="center-view">
  105. <view class="title-line"></view>
  106. <text class="gray-text">{{item.friendly_name}}</text>
  107. </view>
  108. <view class="data-media-player" style="flex-direction: row;">
  109. <view class="data-media-1">
  110. <text class="sub-title">香薰机灯光</text>
  111. <view class="btn-pos-view" bindtap="onSelect_All_aromlight" data-param0="{{index}}"
  112. data-param1="/services" data-param2="/{{item.domain}}" data-param3="/turn_on"
  113. data-param4='{{item.state=="on"?"0":"1"}}' data-param5="{{item.entity_id}}">
  114. <image src="/static/images/ic_light_button_bg.png"></image>
  115. <text>灯光切换</text>
  116. </view>
  117. </view>
  118. <view class="card-line-v"></view>
  119. <view class="data-media-1">
  120. <view class="card-data" wx:for="{{listAromatherapyMachine}}" wx:for-index="index2" wx:for-item="item2"
  121. wx:if="{{item2.isAromatherapy}}">
  122. <image class="data-card__icon" src="{{item2.imgSrc}}" />
  123. <text class="data-card__title1">{{item2.friendly_name}}</text>
  124. <view class="data-card__value">
  125. <van-switch size="22px" active-color="#2CCEB8" inactive-color="#E8EAEB"
  126. checked="{{item2.state=='on'}}" bindtap="onTap_All" data-param0="{{index2}}"
  127. data-param1="/services" data-param2="/{{item2.domain}}"
  128. data-param3='{{item2.state=="on"?"/turn_off":"/turn_on"}}'
  129. data-param4='{{item2.state=="on"?"0":"1"}}' data-param5="{{item2.entity_id}}"
  130. custom-class="customSwitch" />
  131. </view>
  132. </view>
  133. <view class="card-data" wx:for="{{listAromatherapyMachine}}" wx:for-index="index2" wx:for-item="item2"
  134. wx:if="{{item2.isAromAtomization}}" style="height: 230rpx;">
  135. <image class="data-card__icon" src="{{item2.imgSrc}}" />
  136. <text class="data-card__title1">{{item2.friendly_name}}</text>
  137. <view class="data-card__value">
  138. <image class="power-btn-small"
  139. src="{{item2.state=='on'? '/static/icons/ic_power.svg' : '/static/icons/ic_power_off.svg'}}"
  140. data-param0="{{index2}}" data-param1="/services" data-param2="/{{item2.domain}}"
  141. data-param3='{{item2.state=="on"?"/turn_off":"/turn_on"}}'
  142. data-param4='{{item2.state=="on"?"0":"1"}}' data-param5="{{item2.entity_id}}" bindtap="onTap_All">
  143. </image>
  144. </view>
  145. </view>
  146. </view>
  147. </view>
  148. </view>
  149. <!-- 加湿器 -->
  150. <view class="test" wx:for="{{listHumidifier}}" wx:for-index="index" wx:for-item="item" class="sliderItem">
  151. <view class="center-view">
  152. <view class="title-line"></view>
  153. <text class="gray-text">{{item.friendly_name}}</text>
  154. </view>
  155. <view class="data-media-player">
  156. <image class="power-btn"
  157. src="{{item.state=='on'? '/static/icons/ic_power.svg' : '/static/icons/ic_power_off.svg'}}"
  158. data-param0="{{index}}" data-param1="/services" data-param2="/{{item.domain}}"
  159. data-param3='{{item.state=="on"?"/turn_off":"/turn_on"}}' data-param4='{{item.state=="on"?"0":"1"}}'
  160. data-param5="{{item.entity_id}}" bindtap="onTap_All">
  161. </image>
  162. <view class="data-card-v" style="width: 100%;">
  163. <view class="echarts-container_humidityDial">
  164. <ec-canvas id="mychart-dom-gauge" canvas-id="mychart-gauge" ec="{{ ecHumidifier }}"></ec-canvas>
  165. </view>
  166. <view class="button-row" style="width: 100%;height: 112rpx;margin-left: 15rpx;">
  167. <image src="/static/icons/ic_minus.svg" style="width: 112rpx;height: 112rpx;"
  168. bindtap="onHumidifierDown" data-state='{{item.state}}' data-id="{{item.entity_id}}"
  169. data-domain='{{item.domain}}' data-min='{{item.min}}' data-max='{{item.max}}'
  170. data-humidity='{{item.humidity}}'></image>
  171. <van-slider bar-height="52rpx" active-color="#0BC3AA" class="tui-slider-box"
  172. bind:drag-end="handleTouchEndHumidifier" bind:drag="handleChangingHumidifier"
  173. bind:change="changeHumidity" step="1" min="{{item.min}}" max="{{item.max}}"
  174. data-id="{{item.entity_id}}" data-index="{{index}}" data-domain="{{item.domain}}"
  175. value="{{item.humidity}}" min="{{item.min}}" max="{{item.max}}" data-humidity="{{item.humidity}}">
  176. </van-slider>
  177. <image src="/static/icons/ic_add.svg" style="width: 112rpx;height: 112rpx;" bindtap="onHumidifierUp"
  178. data-state='{{item.state}}' data-id="{{item.entity_id}}" data-domain='{{item.domain}}'
  179. data-min='{{item.min}}' data-max='{{item.max}}' data-humidity='{{item.humidity}}'>
  180. </image>
  181. </view>
  182. <text
  183. style="{{'margin-left:'+humidityMarginLeft+'rpx;margin-top: -50rpx;min-height:50rpx'}}">{{sliderValueHumidifier
  184. ?
  185. sliderValueHumidifier +
  186. '%' : ''}}</text>
  187. </view>
  188. </view>
  189. </view>
  190. <!-- 空调 -->
  191. <view class="test sliderItem" wx:for="{{listClimate}}" wx:for-index="index" wx:for-item="item">
  192. <view class="center-view">
  193. <view class="title-line"></view>
  194. <text class="gray-text">{{item.friendly_name}}</text>
  195. </view>
  196. <view class="data-media-player">
  197. <text class="value-display">
  198. {{item.temperature}}<text class="value-display_unit">°C</text>
  199. </text>
  200. <view class="button-row" style="margin-left: 15rpx;">
  201. <image src="/static/icons/ic_minus.svg" style="width: 112rpx;height: 112rpx;" bindtap="minusClimate"
  202. min="{{item.min_temp}}" max="{{item.max_temp}}" step="1" data-value="{{item.temperature}}"
  203. data-state="{{item.state}}" data-id="{{item.entity_id}}" data-domain="{{item.domain}}"
  204. data-min="{{item.min_temp}}" data-max="{{item.max_temp}}" data-temperature="{{item.temperature}}"
  205. data-fanMode="{{item.fan_mode}}"></image>
  206. <van-slider bar-height="52rpx" active-color="#3A87FD" class="tui-slider-box" bind:change="changeClimate"
  207. min="{{item.min_temp}}" max="{{item.max_temp}}" step="1" value="{{item.temperature}}"
  208. data-state="{{item.state}}" data-id="{{item.entity_id}}" data-domain="{{item.domain}}"
  209. data-min="{{item.min_temp}}" data-max="{{item.max_temp}}" data-temperature="{{item.temperature}}"
  210. data-fanMode="{{item.fan_mode}}">
  211. <!-- <text style="color:black">{{sliderValueClimate}}</text> -->
  212. </van-slider>
  213. <image src="/static/icons/ic_add.svg" style="width: 112rpx;height: 112rpx;" bindtap="addClimate"
  214. min="{{item.min_temp}}" max="{{item.max_temp}}" step="1" data-value="{{item.temperature}}"
  215. data-state="{{item.state}}" data-id="{{item.entity_id}}" data-domain="{{item.domain}}"
  216. data-min="{{item.min_temp}}" data-max="{{item.max_temp}}" data-temperature="{{item.temperature}}"
  217. data-fanMode="{{item.fan_mode}}"></image>
  218. </view>
  219. <view class="air-conditioner-controls">
  220. <view
  221. class="{{item.state=='auto'?'control-button_1':'control-button'}} {{isClickedOnClimateAuto ? 'clicked' : ''}}"
  222. bindtap="onClimateAuto" data-state="{{item.state}}" data-temperature="{{item.temperature}}"
  223. data-id="{{item.entity_id}}" data-domain="{{item.domain}}">
  224. <image class="control-icon" src="/static/icons/ic_auto_1.svg" />
  225. <text class="{{item.state=='auto'? 'control-text_select' :'control-text'}}">自动</text>
  226. </view>
  227. <view class="{{item.state=='heat'?'control-button_1':'control-button'}}" bindtap="onClimateHeat"
  228. data-state="{{item.state}}" data-temperature="{{item.temperature}}" data-id="{{item.entity_id}}"
  229. data-domain="{{item.domain}}" data-flag="onHeat">
  230. <image class="control-icon" src="/static/icons/ic_hot_1.svg" />
  231. <text class="{{item.state=='heat'? 'control-text_select' :'control-text'}}">制热</text>
  232. </view>
  233. <view class="{{item.state=='cool'?'control-button_1':'control-button'}}" bindtap="onClimateCool"
  234. data-state="{{item.state}}" data-temperature="{{item.temperature}}" data-id="{{item.entity_id}}"
  235. data-domain="{{item.domain}}" data-flag="onCool">
  236. <image class="control-icon" src="/static/icons/ic_cold_1.svg" />
  237. <text class="{{item.state=='cool'? 'control-text_select' :'control-text'}}">制冷</text>
  238. </view>
  239. <view class="{{item.state=='dry'?'control-button_1':'control-button'}}" bindtap="onClimateDehumidify"
  240. data-state="{{item.state}}" data-temperature="{{item.temperature}}" data-id="{{item.entity_id}}"
  241. data-domain="{{item.domain}}" data-flag="onDehumidify">
  242. <image class="control-icon" src="/static/icons/ic_moisture_1.svg" />
  243. <text class="{{item.state=='dry'? 'control-text_select' :'control-text'}}">除湿</text>
  244. </view>
  245. <view class="{{item.state=='fan_only'?'control-button_1':'control-button'}}"
  246. bindtap="onClimateAirSupply" data-state="{{item.state}}" data-temperature="{{item.temperature}}"
  247. data-id="{{item.entity_id}}" data-domain="{{item.domain}}" data-flag="onAirSupply">
  248. <image class="control-icon" src="/static/icons/ic_wind_1.svg" />
  249. <text class="{{item.state=='fan_only'? 'control-text_select' :'control-text'}}">送风</text>
  250. </view>
  251. <!-- 关闭要单独拿出来 -->
  252. <!-- <view class="{{item.state=='off'?'control-button_1':'control-button'}}" bindtap="onClimateOff"
  253. data-state="{{item.state}}" data-temperature="{{item.temperature}}" data-id="{{item.entity_id}}"
  254. data-domain="{{item.domain}}">
  255. <image class="control-icon" />
  256. <text class="{{item.state=='off'? 'control-text_select' :'control-text'}}">关闭</text>
  257. </view> -->
  258. </view>
  259. <view class="airConditioning-title">
  260. <image src="/static/icons/ic_output_air.svg"></image>
  261. <text>{{temperatureHumidifyName}}:{{item.temperature}}°C</text>
  262. </view>
  263. <image class="power-btn"
  264. src="{{item.state=='off'? '/static/icons/ic_power_off.svg' : '/static/icons/ic_power.svg'}}"
  265. bindtap="onClimateOff" data-state="{{item.state}}" data-temperature="{{item.temperature}}"
  266. data-id="{{item.entity_id}}" data-domain="{{item.domain}}"></image>
  267. </view>
  268. </view>
  269. <view wx:for="{{listMiotMediaPlayer}}" wx:for-index="index" wx:for-item="item" class="sliderItem">
  270. <!-- 一行 -->
  271. <view class="data-media-player" style="{{item.entity_picture}}">
  272. <!-- 标题 -->
  273. <view class="center-view">
  274. <view class="title-line"></view>
  275. <text class="gray-text">{{item.friendly_name}}</text>
  276. </view>
  277. <view class="audio-player">
  278. <view class="controls">
  279. <image class="control-button_media prev {{isClickedPrevSong ? 'clicked' : ''}}"
  280. src="/static/images/prev.png" bindtap="prevSong" wx:if="{{canPrev}}" data-state="{{item.state}}"
  281. data-id="{{item.entity_id}}" data-domain="{{item.domain}}" />
  282. <image class="control-button_media play {{isClickedTogglePlayPause ? 'clicked' : ''}}"
  283. src="{{item.state=='playing' ? '/static/images/pause.png' : '/static/images/play.png'}}"
  284. bindtap="togglePlayPause" data-state="{{item.state}}" data-id="{{item.entity_id}}"
  285. data-domain="{{item.domain}}" />
  286. <image class="control-button_media next {{isClickedNextSong ? 'clicked' : ''}}"
  287. src="/static/images/next.png" bindtap="nextSong" wx:if="{{canNext}}" data-state="{{item.state}}"
  288. data-id="{{item.entity_id}}" data-domain="{{item.domain}}" bindload="imageLoad" />
  289. </view>
  290. <view class="progress">
  291. <slider class="progress-bar" value="{{item.media_position}}" min="0" max="{{item.media_duration}}"
  292. bindchange="sliderChange" data-state="{{item.state}}" data-id="{{item.entity_id}}"
  293. data-domain="{{item.domain}}" />
  294. </view>
  295. <view class="info">
  296. <text class="song-title">歌曲名称:{{item.media_title}}</text>
  297. <text class="song-artist">演唱者:{{item.media_artist}}</text>
  298. <!-- <text class="song-artist">歌曲名称:{{item.media_album_name}}</text> -->
  299. </view>
  300. </view>
  301. </view>
  302. <!-- 一行结束 -->
  303. </view>
  304. <!-- 一行结束 -->
  305. </view>
  306. </view>
  307. </view>
  308. </view>
  309. <van-overlay show="{{ menuTabDialogShow }}" z-index="10086">
  310. <view style="height: 100vh;display: flex;flex-direction: column;justify-content: center;">
  311. <view style="position: relative;">
  312. <image wx:if="{{currentDialogIndex == 0}}" src="/static/bg/ic_qcms_bg.png"
  313. style="display: block;width: 620rpx;height: 380rpx; margin: 0 auto;" />
  314. <view wx:if="{{currentDialogIndex == 0}}" class="dialog-content">
  315. <view class="dialog-h">
  316. <image class="dialog-icon" src="/static/bg/ic_qcms.png" />
  317. <text class="dialog-title">起床模式</text>
  318. </view>
  319. <text class="dialog-desc">自动调节灯光、窗帘、播放轻柔音乐等, 营造一个舒适温馨的起床环境。</text>
  320. </view>
  321. <image wx:if="{{currentDialogIndex == 1}}" src="/static/bg/ic_gyms_bg.png"
  322. style="display: block;width: 620rpx;height: 380rpx; margin: 0 auto;" />
  323. <view wx:if="{{currentDialogIndex == 1}}" class="dialog-content">
  324. <view class="dialog-h">
  325. <image class="dialog-icon" src="/static/bg/ic_gyms.png" />
  326. <text class="dialog-title">观影模式</text>
  327. </view>
  328. <text class="dialog-desc">一键切换至最佳视听环境,自动调节灯光、窗帘及电视等设置,为您打造沉浸式的观影体验。</text>
  329. </view>
  330. <image wx:if="{{currentDialogIndex == 2}}" src="/static/bg/ic_smms_bg.png"
  331. style="display: block;width: 620rpx;height: 380rpx; margin: 0 auto;" />
  332. <view wx:if="{{currentDialogIndex == 2}}" class="dialog-content">
  333. <view class="dialog-h">
  334. <image class="dialog-icon" src="/static/bg/ic_smms.png" />
  335. <text class="dialog-title" style="color: #FDFFC5;">睡眠模式</text>
  336. </view>
  337. <text class="dialog-desc" style="color: white;">自动调暗灯光、关闭窗帘、播放睡眠视频、音乐及调节室内温度、湿度,营造一个安静舒适的睡眠环境。</text>
  338. </view>
  339. <text class="dialog-sure-btn" bindtap="onClickHideSureMenuTabDialog">确定</text>
  340. </view>
  341. <image src="/static/icons/ic_dialog_close.svg"
  342. style="display: block;width: 56rpx;height: 56rpx; margin: 30rpx auto;" bindtap="onClickHideMenuTabDialog" />
  343. </view>
  344. </van-overlay>
  345. </view>