Newer
Older
gasAlarmH5 / src / views / user / device / index.vue
liyaguang on 16 Sep 2023 3 KB feat(*): 判断用户code为空
<!-- 用户-我的设备 -->
<template>
  <NavBar title="我的设备" />
  <div class="container" v-if="deviceList.length">
    <div class="device" v-for="item, index in deviceList" ::key="item" @click="detail(item)">
      <img class="img" src="../../../assets/images/device.png" width="80" height="100">
      <p class="title">可燃气体探测器{{ index + 1 }}</p>
      <p class="title" style="font-size: 14px;">{{ item.devCode }}</p>
      <p class="status" :style="`color:${item.status === '报警' ? '#F5193E' : ''}`">{{ item.status }}</p>
      <icon v-if="item.status === '离线'" class="icon" name="link-unlink" />
    </div>
  </div>
  <t-empty v-else style="margin-top: 60px;" :icon="userIcon" description="暂无设备" />
  <t-back-top v-show="backTopVisible" text="顶部" theme="round" />
</template>
<script lang="ts" name="Home" setup>
import { useRouter } from "vue-router";
import NavBar from "../../../components/navBar/navBar.vue";
import { getUserPhone, getUserDevice } from '../../../api/user'
import { Icon, InfoCircleFilledIcon } from 'tdesign-icons-vue-next';
const $router = useRouter(); // 路由实例
const $route = useRoute()
const userIcon = () => h(InfoCircleFilledIcon);
const backTopVisible = ref(false); // 回到顶部显隐
// 用户手机号
const phone = ref('')
phone.value = sessionStorage.getItem('gas-user-phone') ? sessionStorage.getItem('gas-user-phone') as string : ''
// 监听页面滚动
window.onscroll = function () {
  if (window.scrollY > 200) {
    //scrollY距离顶部的距离
    backTopVisible.value = true;
  } else {
    backTopVisible.value = false;
  }
};

// 查看设备详情
const detail = (item: any) => {
  $router.push({
    path: item.status === '报警' ? '/monitor-alarm' : '/monitor',
    query: {
      devCode: item.devCode
    }
  })
}
// 获取用户设备列表
const deviceList = ref([])
const getDevice = () => {
  getUserDevice({
    phone: phone.value,
    // phone: '13879798637',
    pageNo: 1,
    size: 1000,
  }).then(res => {
    deviceList.value = res.data.records
  })
}
// 获取用户手机号
const getPhone = () => {
  // 获取code
  let code = $route.query.code
  console.log(code, 'code')
  if (!code) {
    code = ''
  }
  getUserPhone({ code, isAdmin: false }).then(res => {
    phone.value = res.data
    console.log(res.data, '用户手机号')
    sessionStorage.setItem('gas-user-phone', phone.value)
    // 获取设备列表
    getDevice()
  })
}
onMounted(() => {
  if (phone.value) {
    //  获取设备列表
    getDevice()
  }
  else {
    // 获取用户手机号并且获取设备列表
    getPhone()
  }
});
</script>
<style lang="scss" scoped>
.container {
  padding: 20px;
  padding-top: 58px;
  display: flex;
  justify-content: space-around;
  flex-wrap: wrap;

  .device {
    margin-top: 10px;
    padding: 18px;
    background-color: #fff;
    border-radius: 10px;
    width: 36%;
    position: relative;

    .title {
      font-size: 16px;
      font-weight: 700;
      margin: 10px 0;
      // overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
      // white-space: wrap;
      word-wrap: break-word;
      word-break: normal;
    }

    .status {
      font-size: 16px;
    }

    .icon {
      position: absolute;
      top: 10px;
      right: 20px;
      color: #ccc;
      width: 24px;
      height: 24px;
    }
  }
}
</style>