<template>
  <div class="AppAnswerList">
    <div class="search-wrapper">
      <div class="search">
        <image src="./img/search.png" />
        <input placeholder="请输入" v-model="content" @confirm="onChange">
        <image v-if="content" src="./img/close.png" @click="content = ''" />
      </div>
    </div>
    <div class="list-wrapper">
      <div class="item" v-for="(item, index) in list" :key="index" @click="linkTo('./answerList?id=' + item.id)">
        <div class="item-title">
          <i>{{ item.createUserId === user.id ? '我' : item.createUserName  }} </i>
          <span>于{{ item.createTime }} 提问</span>
        </div>
        <p>{{ item.content }}</p>
        <div class="item-bottom">
          <div class="left">
            <span>共</span>
            <i>{{ item.answerCount }}</i>
            <span>条回答</span>
          </div>
          <div class="right">
            <span @click.stop="linkTo('./Add?id=' + item.id)" v-if="item.createUserId === user.id && item.answerCount === 0">修改问题</span>
            <span @click.stop="linkTo('./answerAdd')">去回答</span>
          </div>
        </div>
      </div>
      <AiEmpty v-if="!list.length"></AiEmpty>
    </div>
  </div>
</template>

<script>
  import { mapState } from 'vuex'

  export default {
    appName: '学习问答',

    data () {
      return {
        search: {
          current: 1,
          title: '',
          size: 10
        },
        content: '',
        isMore: false,
        list: []
      }
    },

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

    mounted () {
    },

    methods: {
      linkTo (url) {
        uni.navigateTo({
          url
        })
      },

      onChange () {
        this.current = 1
        this.isMore = false

        this.getList()
      },

      getMore () {
        this.current = this.current + 1

        this.getList()
      },

      update () {
        this.current = 1
        this.isMore = false

        this.getList()
      },

      getList () {
        if (this.isMore) return
        this.$http.post(`/app/applearningquestion/list`, null, {
          params: {
            ...this.search,
            content: this.content || ''
          }
        }).then(res => {
          if (res.code == 0) {
            if (this.search.current > 1) {
              this.list = [...this.list, ...res.data.records]
            } else {
              this.list = res.data.records
            }

            uni.hideLoading()

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

              return false
            }

            this.search.current = this.search.current + 1
          } else {
            uni.hideLoading()
          }
        }).catch(() => {
          uni.hideLoading()
        })
      }
    },

    onReachBottom () {
      this.current = this.current + 1
      this.getList()
    }
  }
</script>

<style lang="scss" scoped>
  .AppAnswerList {
    padding: 0 32px 20px;

    .search-wrapper {
      position: sticky;
      top: 0;
      z-index: 11;
      padding: 20px 0;
      background: #F3F5F9;
    }

    .search {
      display: flex;
      align-items: center;
      height: 64px;
      padding: 0 32px;
      border-radius: 16px;
      background: #fff;

      image {
        width: 32px;
        height: 32px;
        margin-right: 8px;
      }

      input {
        flex: 1;
        font-size: 26px;
        color: #999999;
      }
    }

    .answer-btn {
      position: fixed;
      bottom: 0;
      left: 0;
      z-index: 11;
      width: 100%;
      padding: 16px 32px;
      text-align: center;
      box-sizing: border-box;
      background: #F3F5F9;

      div {
        height: 88px;
        line-height: 88px;
        background: #3975C6;
        border-radius: 44px;
        font-size: 34px;
        color: #FFFFFF;
      }
    }

    .list-wrapper {
      padding-bottom: 40px;

      .item {
        margin-bottom: 24px;
        padding: 24px;
        border-radius: 16px;
        background: #fff;

        .item-bottom {
          display: flex;
          align-items: center;
          justify-content: space-between;
          margin-top: 48px;

          .right {
            span {
              height: 56px;
              line-height: 56px;
              margin-right: 24px;
              padding: 0 16px;
              background: #FFFFFF;
              border: 1px solid #FF883C;
              color: #FF883C;
              border-radius: 8px;

              &:last-child {
                margin-right: 0;
                color: #3975C6;
                border: 1px solid #3975C6;
              }
            }
          }

          div {
            display: flex;
            align-items: center;
            font-size: 28px;
            color: #999;
          }

          i {
            font-style: normal;
            color: #3975C6;;
          }
        }

        p {
          line-height: 1.3;
          font-size: 34px;
          color: #333333;
        }

        .item-title {
          display: flex;
          align-items: center;
          margin-bottom: 16px;
          font-size: 28px;
          color: #999;

          i {
            font-style: normal;
            color: #3975C6;;
          }
        }
      }
    }
  }
</style>
