basestate.vue 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <template>
  2. <view class="statebox">
  3. <view class="stateitem" v-for="item,index in olddatas" :key="index">
  4. <view class="stateitem_img">
  5. <image :src="$imageURL+'/bigdata_pc/sf/tubiao/'+typename[item.icon]+item.value+'.png'" mode="" class="img"></image>
  6. </view>
  7. <view class="stateitem_txt">
  8. {{item.txt}}
  9. </view>
  10. <view class="stateitem_btn">
  11. <u-switch v-model="item.valuenum" active-color="#6EF1BE" size="40" @change="change(item,$event)"></u-switch>
  12. </view>
  13. </view>
  14. </view>
  15. </template>
  16. <script>
  17. export default {
  18. data() {
  19. return {
  20. olddatas: [],
  21. typename: [
  22. "-",
  23. "风机",
  24. "水泵",
  25. "增氧机",
  26. "湿帘",
  27. "遮阳",
  28. "开窗",
  29. "保温",
  30. "投食机",
  31. ],
  32. device_id:""
  33. }
  34. },
  35. onLoad(option) {
  36. this.device_id = option.device_id
  37. this.history()
  38. },
  39. onNavigationBarButtonTap(e) {
  40. console.log(e)
  41. uni.navigateTo({
  42. url:"./waterhis?device_id="+this.device_id
  43. })
  44. },
  45. methods: {
  46. async history() { //设备列表
  47. // this.dataloadingtf = true
  48. const res = await this.$myRequest({
  49. url: '/api/api_gateway?method=weather.weather.sf_status',
  50. data: {
  51. device_id: this.device_id
  52. }
  53. })
  54. // this.dataloadingtf = false
  55. // console.log(res)
  56. this.olddatas = []
  57. var dataarr = res.conf.relayName.split("/")
  58. var elearr = res.conf.relayNum.split("/")
  59. var numarr = JSON.stringify(res.dat.device_status).slice(2, -2)
  60. numarr = numarr.split(",")
  61. var numobj = {}
  62. for (var i = 0; i < numarr.length; i++) {
  63. numarr[i] = numarr[i].split(":")
  64. var index = numarr[i][0].indexOf("j") == -1 ? numarr[i][0].indexOf("e") : numarr[i][0].indexOf("j")
  65. numobj[numarr[i][0].slice(index, -1)] = Number(numarr[i][1])
  66. }
  67. // console.log(numobj)
  68. for (var i = 0; i < dataarr.length; i++) {
  69. if (dataarr[i] != "-") {
  70. var obj = {
  71. txt: dataarr[i],
  72. icon: elearr[i],
  73. value: numobj['j' + (i + 1)],
  74. valuenum: numobj['j' + (i + 1)]== 1 ? true : false,
  75. id:i
  76. // + elelist[elearr[i]].unit
  77. }
  78. this.olddatas.push(obj)
  79. }
  80. }
  81. // console.log(this.olddatas)
  82. },
  83. change(item,e){
  84. if(e){
  85. item.value = 1
  86. }else{
  87. item.value = 0
  88. }
  89. this.sf_control(item)
  90. },
  91. async sf_control(item){
  92. const res = await this.$myRequest({
  93. url: '/api/api_gateway?method=weather.weather.sf_control',
  94. data: {
  95. device_id: this.device_id,
  96. relayNum: item.id,
  97. relayState: item.value,
  98. }
  99. })
  100. // console.log(res)
  101. if(res.controlState){
  102. uni.showToast({
  103. title: "操作成功",
  104. icon: "none"
  105. })
  106. }else{
  107. uni.showToast({
  108. title: "操作失败",
  109. icon: "none"
  110. })
  111. for(var i=0;i<this.olddatas.length;i++){
  112. if(this.olddatas[i].id == res.relayNum ){
  113. this.olddatas[i].valuenum = res.controlState
  114. this.olddatas[i].value = res.controlState ? 1 : 0
  115. }
  116. }
  117. }
  118. }
  119. }
  120. }
  121. </script>
  122. <style lang="scss">
  123. page {
  124. background: $uni-bg-color-grey;
  125. }
  126. .statebox{
  127. padding-top: 30rpx;
  128. }
  129. .stateitem {
  130. width: 90%;
  131. margin: 0 auto 30rpx;
  132. display: flex;
  133. padding: 20rpx 30rpx;
  134. box-sizing: border-box;
  135. box-shadow: 0 0 10rpx #bcb9ca;
  136. background-color: #fff;
  137. justify-content: space-between;
  138. border-radius: 20rpx;
  139. .stateitem_img{
  140. width: 60rpx;
  141. height: 60rpx;
  142. .img{
  143. width: 60rpx;
  144. height: 60rpx;
  145. }
  146. }
  147. .stateitem_txt{
  148. height: 60rpx;
  149. line-height: 60rpx;
  150. font-size: 32rpx;
  151. width: 60%;
  152. }
  153. .stateitem_btn{
  154. padding-top:10rpx ;
  155. }
  156. }
  157. </style>