<template>
  <div class="page md:flex md:justify-between">
    <div class="page-title">机构认证</div>
    <div class="page-top">
      <div class="swiper">
        <SimpleSwiper :imageList="clubInfo.bannerList"></SimpleSwiper>
      </div>
    </div>
    <div class="page-content">
      <div class="club-info">
        <div class="section flex justify-between items-center">
          <div class="info">
            <div class="name" v-text="clubInfo.authParty"></div>
            <div class="mobile">{{ clubInfo.mobile | formatEmpty }}</div>
            <div class="address" v-text="address"></div>
          </div>
          <div class="logo"><img :src="clubInfo.logo" /></div>
        </div>
        <div class="section flex justify-between items-center mt-6">
          <div class="navigation" @click="onMapNav">导航</div>
          <div
            class="distance"
            v-if="clubInfo.distance && clubInfo.distance < 99999"
            v-text="'距你' + clubInfo.distance + 'km'"
          ></div>
        </div>
      </div>
      <div class="divider"></div>
      <div class="device-list">
        <div class="title">已认证设备</div>
        <div class="list">
          <div
            class="device flex justify-between items-center"
            v-for="item in clubInfo.productList"
            :key="item.productId"
          >
            <div class="info">
              <div class="name" v-text="item.productName"></div>
              <div class="code">SN码：{{ item.snCode | formatSnCode }}</div>
            </div>
            <div class="detail" @click="toDetail(item)">查看认证</div>
          </div>
        </div>
      </div>
      <SimpleEmpty
        v-if="isEmpty"
        name="icon-empty-device.png"
        description="暂无已认证设备"
      ></SimpleEmpty>
    </div>

    <SimpleMapNav
      ref="mapNav"
      @click="navigation"
      color="#f3920d"
    ></SimpleMapNav>
  </div>
</template>

<script>
import { drawLogo } from '@/utils'
import { convertor, mapNavigate } from '@/utils/map-utils'
import { mapGetters } from 'vuex'
export default {
  layout: 'app-ross',
  filters: {
    formatEmpty(val) {
      return val || '暂无'
    },
    formatSnCode(code) {
      if (!code) return ''
      return code.replace(/^(\w{2})\w+(\w{4})$/, '$1******$2')
    },
  },
  data() {
    return {
      authId: '',
      clubInfo: {},
    }
  },
  computed: {
    ...mapGetters(['routePrefix']),
    address() {
      let resultAddress = this.clubInfo.area
        ? this.clubInfo.area + this.clubInfo.address
        : this.clubInfo.address
      return resultAddress || '暂无'
    },
    isEmpty() {
      return this.clubInfo.productList
        ? this.clubInfo.productList.length === 0
        : true
    },
  },
  mounted() {
    this.initData()
  },
  beforeDestroy() {
    this.$removeStorage(this.routePrefix, 'clubInfo')
  },
  methods: {
    // 设备详情
    toDetail(item) {
      // window.location.href = `${process.env.CIMEI_LOCAL}/product/auth/product-${item.productId}.html`
      this.$router.push(
        `${this.routePrefix}/approve/device/detail?id=${item.productId}`
      )
    },
    // 初始化
    initData() {
      this.authId = parseInt(this.$route.query.id)
      const clubInfo = this.$getStorage(this.routePrefix, 'clubInfo')
      if (clubInfo) {
        this.clubInfo = clubInfo
      }
      this.fetchDetail()
    },
    // 获取机构详细信息
    async fetchDetail() {
      try {
        const res = await this.$http.api.getAuthClubDetail({
          authId: this.authId,
        })
        this.clubInfo = { ...this.clubInfo, ...res.data } // 合并
      } catch (error) {
        console.log(error)
      }
      // 默认轮播图
      if (this.clubInfo.bannerList.length <= 0) {
        this.clubInfo.bannerList.push('/placeholder.png')
      }
      // 默认logo
      if (!this.clubInfo.logo) {
        this.clubInfo.logo = drawLogo(this.clubInfo.authParty)
      }
    },
    // 地图导航
    onMapNav() {
      this.$refs.mapNav.open()
    },
    // 导航
    navigation(type) {
      const point = this.clubInfo.lngAndLat.split(',')
      let lng = point[0]
      let lat = point[1]

      mapNavigate(
        { lat, lng, title: this.clubInfo.authParty, address: this.address },
        type
      )
      this.$refs.mapNav.close()
    },
  },
}
</script>

<style scoped lang="scss">
// pc 端
@media screen and (min-width: 768px) {
  .page {
    position: relative;
    width: 1200px;
    height: 612px;
    margin-left: auto;
    margin-right: auto;
    margin-top: 80px;
    background-color: #fff;
    box-sizing: border-box;
    padding: 16px;
    padding-right: 0;
  }

  .page-title {
    position: absolute;
    font-size: 24px;
    color: #333;
    top: -50px;
    left: 0;
  }

  .page-top {
    margin-right: 24px;
    .swiper {
      width: 580px;
      height: 580px;
      background: #f7f7f7;
      ::v-deep {
        img {
          width: 580px;
          height: 580px;
        }
      }
    }
  }

  .page-content {
    width: 580px;
    overflow-y: auto;

    &::-webkit-scrollbar {
      width: 8px;
      // background-color: #eeeeee;
    }

    &::-webkit-scrollbar-thumb {
      border-radius: 4px;
      background-color: #eeeeee;
    }

    .club-info {
      padding: 32px 24px;
      width: 564px;
      min-height: 264px;
      background: url(~assets/theme-images/ross/pc-club-info-bg.png) center
        no-repeat;
      background-size: cover;
      box-sizing: border-box;

      .info {
        width: 360px;
        .name {
          font-size: 24px;
          color: #fff;
          font-weight: bold;
          margin-bottom: 34px;
        }
        .mobile,
        .address {
          position: relative;
          padding-left: 28px;
          margin-top: 16px;
          line-height: 24px;
          font-size: 16px;
          color: #fff;

          &::after {
            content: '';
            display: block;
            width: 24px;
            height: 24px;
            position: absolute;
            left: 0;
            top: 0;
            background-size: 20px;
            background-repeat: no-repeat;
            background-position: center;
          }
        }
        .mobile {
          &::after {
            @include themify($themes) {
              background-image: themed('pc-icon-mobile');
            }
          }
        }
        .address {
          &::after {
            @include themify($themes) {
              background-image: themed('h5-icon-address');
            }
          }
        }
      }

      .logo {
        position: relative;
        width: 114px;
        height: 114px;
        border-radius: 50% 50% 0 50%;
        overflow: hidden;
        background: #fff;

        &::after {
          position: absolute;
          bottom: 0;
          right: 0;
          content: '';
          display: block;
          width: 23px;
          height: 23px;
          background: url(~assets/theme-images/ross/pc-icon-avatar-v.png)
            no-repeat center;
          background-size: 23px;
        }
      }
      .navigation {
        display: flex;
        justify-content: center;
        align-items: center;
        width: 72px;
        height: 32px;
        border-radius: 4px;

        font-size: 16px;
        color: #f3920d;
        border: 1px solid #fff;
        background-color: #fff;
        cursor: pointer;

        &::after {
          content: '';
          display: block;
          width: 16px;
          height: 16px;
          margin-left: 4px;
          @include themify($themes) {
            background: themed('pc-icon-navigation') no-repeat center;
          }
          background-size: 16px;
        }
      }
      .distance {
        font-size: 14px;
        color: #fff;
      }
    }

    .device-list {
      .title {
        position: relative;
        font-size: 20px;
        font-weight: bold;
        color: #282828;
        line-height: 30px;
        padding-left: 32px;
        margin-top: 46px;
        margin-bottom: 24px;

        &::before {
          content: '';
          display: block;
          width: 30px;
          height: 30px;
          background: url(~assets/theme-images/ross/pc-icon-device-list.png)
            no-repeat center;
          position: absolute;
          left: 0;
          top: 0;
        }
      }

      .list {
        padding-right: 16px;
      }

      .device {
        padding: 20px 16px;
        box-sizing: border-box;
        background: #f3f5f6;
        margin-top: 16px;

        &:first-child {
          margin-top: 0;
        }

        .info {
          width: 80%;
          .name {
            font-size: 18px;
            color: #282828;
          }
          .code {
            margin-top: 12px;
            font-size: 14px;
            color: #666;
          }
        }
        .detail {
          display: flex;
          justify-content: center;
          align-items: center;
          width: 80px;
          height: 32px;
          border-radius: 4px;
          font-size: 14px;
          color: #ffffff;
          cursor: pointer;
          @include themify($themes) {
            background: themed('color');
          }
        }
      }
    }
  }
}

// 移动 端
@media screen and (max-width: 768px) {
  .page-title {
    display: none;
  }

  .page-top {
    .swiper {
      height: 100vw;

      background: #f7f7f7;
      ::v-deep {
        img {
          height: 100vw;
        }
      }
    }
  }

  .page-content {
    .club-info {
      padding: 4vw;
      width: 100vw;
      min-height: 43.4vw;
      background: url(~assets/theme-images/ross/h5-club-info-bg.png) center
        no-repeat;
      background-size: cover;
      box-sizing: border-box;

      .info {
        width: 67vw;
        .name {
          font-size: 4.8vw;
          color: #fff;
          font-weight: bold;
          margin-bottom: 4vw;
        }
        .mobile,
        .address {
          position: relative;
          padding-left: 5vw;
          margin-top: 1.6vw;
          line-height: 5vw;
          font-size: 3.2vw;
          color: #fff;

          &::after {
            content: '';
            display: block;
            width: 4vw;
            height: 5vw;
            position: absolute;
            left: 0;
            top: 0;
            background-size: 4vw 4vw;
            background-repeat: no-repeat;
            background-position: center;
          }
        }
        .mobile {
          &::after {
            @include themify($themes) {
              background-image: themed('h5-icon-mobile');
            }
          }
        }
        .address {
          &::after {
            @include themify($themes) {
              background-image: themed('h5-icon-address');
            }
          }
        }
      }

      .logo {
        position: relative;
        width: 18vw;
        height: 18vw;
        border-radius: 9vw 9vw 0 9vw;
        overflow: hidden;
        background: #fff;

        &::after {
          position: absolute;
          bottom: 0;
          right: 0;
          content: '';
          display: block;
          width: 3.6vw;
          height: 3.6vw;
          background: url(~assets/theme-images/ross/h5-icon-avatar-v.png)
            no-repeat center;
          background-size: 3.6vw;
        }
      }
      .navigation {
        display: flex;
        justify-content: center;
        align-items: center;
        width: 14.4vw;
        height: 6.4vw;
        border-radius: 0.4vw;
        font-size: 3.2vw;
        color: #f3920d;
        border: 1px solid #fff;
        background-color: #fff;

        &::after {
          content: '';
          display: block;
          width: 3.6vw;
          height: 3.6vw;
          margin-left: 0.4vw;
          @include themify($themes) {
            background: themed('h5-icon-navigation') no-repeat center;
            background-size: 3.6vw;
          }
        }
      }
      .distance {
        font-size: 3vw;
        color: #fff;
      }
    }

    .device-list {
      padding: 0 4vw;
      .title {
        position: relative;
        padding-left: 6.8vw;
        margin-top: 9.6vw;
        margin-bottom: 4vw;
        font-size: 4vw;
        font-weight: bold;
        color: #101010;

        &::before {
          content: '';
          display: block;
          width: 4.4vw;
          height: 4.4vw;
          background: url(~assets/theme-images/ross/h5-icon-device-list.png)
            no-repeat center;
          position: absolute;
          left: 0;
          top: 0;
        }
      }
      .device {
        padding: 4.4vw 3.2vw;
        background: #f3f5f6;
        margin-bottom: 3.2vw;
        .info {
          width: 74%;
          .name {
            font-size: 3.6vw;
            color: #282828;
          }
          .code {
            margin-top: 3.2vw;
            font-size: 3vw;
            color: #666;
          }
        }
        .detail {
          display: flex;
          justify-content: center;
          align-items: center;
          width: 15.8vw;
          height: 6.4vw;
          border-radius: 0.4vw;
          font-size: 3vw;
          color: #ffffff;
          @include themify($themes) {
            background: themed('color');
          }
        }
      }
    }
  }
}
</style>
