<template>
  <div class="home">
    <div class="header" :class="[isFixed ? 'header-active' : '']">
      <div class="status-bar" :style="{height: statusBarHeight + 'px'}"></div>
      <div class="nav-bar">
        <h2>天府星小程序</h2>
      </div>
    </div>
    <div></div>
    <image class="bg-img" src="https://cdn.cunwuyun.cn/wxmp/tianfuxing/home-bg.png" />
    <div class="wrapper">
      <image class="banner" src="https://cdn.cunwuyun.cn/wxmp/tianfuxing/banner.png" />
      <div class="nav">
        <div class="nav-item" hover-class="text-hover" @click="$linkTo('./PhotoReport')">
          <image mode="aspectFill" src="https://cdn.cunwuyun.cn/wxmp/tianfuxing/ssp.png" />
        </div>
        <div class="nav-item" hover-class="text-hover" @click="$linkTo('./Culture')">
          <image mode="aspectFill" src="https://cdn.cunwuyun.cn/wxmp/tianfuxing/wmcd.png" />
        </div>
      </div>
      <div class="activity-wrapper">
        <h2>线下活动</h2>
        <div class="activity-list">
          <div class="activity-item" @click="$linkTo('./Activity?id=' + item.id)" hover-class="bg-hover" v-for="(item, index) in list" :key="index">
            <div class="top">
              <h2>{{ item.title }}</h2>
              <p>{{ item.detail }}</p>
            </div>
            <div class="bottom">
              <div class="item">
                <h3>进场时间：</h3>
                <span>{{ item.intoBegintime }}  至 {{ item.intoEndtime }}</span>
              </div>
              <div class="item">
                <h3>进场时间：</h3>
                <span>{{ item.exitBegintime }}  至 {{ item.exitEndtime }}</span>
              </div>
            </div>
          </div>
          <AiEmpty v-if="!list.length"></AiEmpty>
        </div>
      </div>
    </div>
  </div>
</template>

<script>
  import { mapActions, mapState } from 'vuex'

  export default {
    appName: '首页',
    customNavigation: true,
    navigationBarTitleText: '天府星小程序',
    name: 'AppHome',

    data () {
      return {
        current: 1,
        list: [],
        isMore: false,
        isFixed: false,
        statusBarHeight: 20,
      }
    },

    computed: {
      ...mapState(['user', 'token'])
    },

    onLoad () {
      this.statusBarHeight = uni.getSystemInfoSync().statusBarHeight
      uni.setNavigationBarColor({
        frontColor: '#000000'
      })
      this.getList()

      if (!this.token) {
        this.autoLogin()
      } else {
        this.getUserInfo()
      }
    },

    methods: {
      ...mapActions(['autoLogin', 'getUserInfo']),

      getList () {
        if (this.isMore) return

        this.$loading()
        this.$instance.post(`/appactivityinfo/list`, null, {
          withoutToken: true,
          params: {
            current: this.current,
            size: 10
          }
        }).then(res => {
          if (res.code === 0) {
            this.$hideLoading()
            if (this.current > 1) {
              this.list = [...this.list, ...res.data.records]
            } else {
              this.list = res.data.records
            }

            if (res.data.records.length < 10) {
              this.isMore = true

              return false
            }

            this.current = this.current + 1
          } else {
            this.isMore = true
          }
        }).catch(() => {
          this.$hideLoading()
        })
      }
    },

    onReachBottom () {
      this.getList()
    },

    onPageScroll (params) {
      this.isFixed = params.scrollTop > 60
    }
  }
</script>

<style lang="scss" scoped>
  .home {
    position: relative;
    padding: 32px 0 40px;

    .bg-img {
      position: absolute;
      top: 0;
      left: 0;
      z-index: 1;
      width: 100%;
      height: 512px;
    }

    .wrapper {
      position: relative;
      z-index: 11;
      padding-top: 208px;
    }

    .back-wrapper {
      position: fixed;
      z-index: 11;
      left: 20px;
      top: 24px;
      width: 40px;
      height: 40px;

      image {
        width: 40px;
        height: 40px;
      }
    }

    .header {
      position: fixed;
      left: 0;
      top: 0;
      z-index: 111;
      width: 100%;
      opacity: 1;
      transition: all 0.2s ease;

      .nav-bar {
        position: relative;
        height: 88px;
        line-height: 88px;
        color: #000;
        font-size: 34px;
        font-weight: 600;
        text-align: center;

        image {
          position: absolute;
          top: 0;
          left: 0;
          z-index: 1;
          width: 40px;
          height: 40px;
          padding: 24px 20px 0 20px;
          box-sizing: content-box;
        }
      }

      &.header-active {
        z-index: 1111;
        opacity: 1;
        color: #fff;
        background: linear-gradient(180deg, #2D7DFF 0%, #2D7DFF 40%);

        .nav-bar {
          color: #fff;
        }
      }
    }
    .banner {
      display: block;
      width: 686px;
      height: 240px;
      margin: 0 auto 32rpx;
      border-radius: 10px;
    }

    .nav {
      display: flex;
      align-items: center;
      justify-content: space-between;
      margin: 0 32rpx 58rpx;

      .nav-item {
        width: 328px;
        height: 122px;

        image {
          width: 100%;
          height: 100%;
          border-radius: 10px;
        }
      }
    }

    .activity-wrapper {
      padding: 0 32px;

      & > h2 {
        margin-bottom: 26px;
        color: #1D2229;
        font-size: 34px;
        font-weight: 600;
      }

      .activity-item {
        margin-bottom: 24px;
        padding: 24px;
        background: #FCFCFC;
        box-shadow: 0 0 8px 0 rgba(0,0,0,0.02);
        border-radius: 16px;

        .bottom {
          padding-top: 24px;

          .item {
            display: flex;
            line-height: 1.3;
            margin-bottom: 8px;

            h3 {
              font-size: 28px;
              color: #999999;
            }

            span {
              flex: 1;
              text-align: justify;
              font-size: 28px;
              color: #333333;
            }
          }
        }

        .top {
          padding-bottom: 24px;
          border-bottom: 1px solid #eee;

          h2 {
            margin-bottom: 14px;
            font-weight: 500;
            font-size: 34px;
            color: #333333;
          }

          p {
            display: -webkit-box;
            overflow: hidden;
            -webkit-line-clamp: 2;
            -webkit-box-orient: vertical;
            line-height: 1.3;
            font-size: 30px;
            color: #999999;
            text-align: justify;
          }
        }
      }
    }
  }
</style>
