<template>
  <el-row class="wrapper">
    <el-col v-if="bankAccount">
      <el-col>
        <h1>账户信息</h1>
      </el-col>
      <el-col class="bank-account-item">
        <span style="font-size: 24px;"> 账号:</span> <span style="color: red;">{{ bankAccount.bankAccount }}</span>
      </el-col>
      <el-col class="bank-account-item">
        <span style="font-size: 24px;"> 余额:</span> <span style="color: red;">{{ bankAccount.accountBalance }}</span>
        <span
          style="font-size: 24px;">巴旦木</span>
      </el-col>
      <el-col>
        <records :records="records" :bankAccount="bankAccount.bankAccount" @currentChange="handleCurrentChange"
                 @searchTransactionRecord="searchTransactionRecord"></records>
      </el-col>
    </el-col>
    <el-col v-else style="text-align: center;margin-top: 10vh;">
      <p style="font-size: 24px;line-height: 48px;">
        <code>钱包</code> 是社区非常重要的组成部分<br/>
        开通钱包账号后可激活 <code>每日一题</code> , <code>赞赏</code> 等功能
      </p>
      <el-button type="primary" @click="createBankAccount">现在开通</el-button>
    </el-col>
  </el-row>
</template>

<script>
import {mapState} from 'vuex';
import Records from "../components/common/bank/account/records";

export default {
  name: "wallet",
  components: {Records},
  fetch() {
    let {store, error} = this.$nuxt.context
    return Promise.all([
      store
        .dispatch('wallet/fetchDetail')
        .catch(err => error({statusCode: 404})),
      store
        .dispatch('wallet/fetchTransactionRecordList')
        .catch(err => error({statusCode: 404}))
    ])
  },
  computed: {
    ...mapState({
      bankAccount: state => state.wallet.detail.data,
      records: state => state.wallet.list.data
    })
  },
  data() {
    return {}
  },
  methods: {
    handleCurrentChange(search) {
      let _ts = this;
      _ts.$store.dispatch('wallet/fetchTransactionRecordList', {
        idUser: _ts.$store.state.auth.user.idUser,
        startDate: search.startDate,
        endDate: search.endDate,
        page: search.page
      })
    },
    searchTransactionRecord(dates) {
      let _ts = this
      let startDate = dates[0]
      let endDate = dates[1]
      _ts.$store.dispatch('wallet/fetchTransactionRecordList', {
        idUser: _ts.$store.state.auth.user.idUser,
        startDate: startDate,
        endDate: endDate
      })
    },
    createBankAccount() {
      let _ts = this
      _ts.$axios.$post('/api/wallet/create').then(function (res) {
        if (res) {
          _ts.$fetch()
        }
      })
    }
  },
  mounted() {
    this.$store.commit('setActiveMenu', 'wallet');
  }
}
</script>

<style scoped>
.bank-account-item {
  font-size: 32px;
  padding-left: 15vw;
}
code {
  color: red;
  font-weight: bold;
}
</style>