deviceList.vue 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <template>
  2. <view class="device-list-index">
  3. <project-drop-down @change="change"></project-drop-down>
  4. <view class="device-list">
  5. <view class="device-item-box" v-for="(item,index) in deviceList" :key="index" @click="clickDevice(item)">
  6. <view class="item-box">
  7. <view class="item-icon">
  8. <uni-icons :type="item.iconName" custom-prefix="iconfont" :size="item.iconSize" color="#c3c3c3">
  9. </uni-icons>
  10. </view>
  11. <view class="operation-icon" @tap="clickOpen(item)"
  12. v-if="item.state === 1 && (item.type === 'aircondition' || item.type === 'lighting')">
  13. <uni-icons type="icon-caozuo-kaiguan" custom-prefix="iconfont" size="30"
  14. :color="!item.isOpen?'#c3c3c3':'#08979c'">
  15. </uni-icons>
  16. </view>
  17. <view class="item-label">{{item.name}}</view>
  18. <view class="item-sub-label">
  19. <view class="label">{{item.positionName}}</view>
  20. <view class="line"></view>
  21. <view class="label" v-if="item.state === 1">{{item.isOpen ? item.describe : '在线'}}</view>
  22. <view class="label" v-else>离线</view>
  23. </view>
  24. </view>
  25. </view>
  26. </view>
  27. </view>
  28. </template>
  29. <script>
  30. import projectDropDown from '@/components/common/projectDropDown.vue'
  31. import deviceList from '@/uitls/deviceList';
  32. export default {
  33. data() {
  34. return {
  35. deviceList: []
  36. }
  37. },
  38. onShow() {
  39. this.deviceList = deviceList;
  40. },
  41. methods: {
  42. clickOpen(item) {
  43. item.isOpen = !item.isOpen;
  44. },
  45. change(e) {
  46. if (e.name === 'room') {
  47. if (e.value === 'all') return this.deviceList = deviceList;
  48. this.deviceList = deviceList.filter(node => node.positionName === e.label);
  49. }
  50. console.log(e);
  51. },
  52. clickDevice(item) {
  53. this.$navigateTo(
  54. `/pages/deviceDetail/deviceDetail?id=${item.id}&name=${item.name}&type=${item.type}&space=${item.positionName}`
  55. );
  56. }
  57. },
  58. components: {
  59. projectDropDown
  60. },
  61. }
  62. </script>
  63. <style lang="scss"></style>