borrowHistory.vue 4.37 KB
<template>
  <v-layout column justify-center align-center id="borrowHistory">
    <v-flex>
      <HistoryStatisticsCard type="borrow" :data="overview"/>
      <div id="SearchBlock">
        <input v-model="search" type="search" id="searchInput" :class="search ? '' : 'empty'" @input="getData" placeholder="搜索姓名 search"/>
      </div>
      <div id="SortAndStatusBlock">
        <div id="SortBlock">
          <v-select
            :items="sortItems"
            v-model="sort"
            label="Select"
            color="light-gold"
            :dense="true"
            :hide-details="true"
            @input="getData"
            single-line
          ></v-select>
        </div>
        <div id="StatusBlock">
          <v-select
            :items="statusItems"
            v-model="status"
            label="Select"
            color="light-gold"
            :dense='true'
            :hide-details="true"
            @input="getData"          
            single-line
          ></v-select>
        </div>
      </div>
    	<HistoryList :list="list" jumpPrefix="comfirmedBorrow"/>
    </v-flex>
  </v-layout>
</template>

<script>
import HistoryStatisticsCard from '@/components/HistoryStatisticsCard'
import HistoryList from '@/components/HistoryList'
import {wechatShareSetting} from '@/helper'

export default {
  async asyncData({store, query, app, redirect}) {
    let {data} = await app.$axios.get(`/iou/history?type=borrow&userId=${store.state.user.id}`)
    if (data.success) {
      return {list: data.list, overview: data.overview}
    } else {
      store.dispatch('displayMessage', data.msg)
      return {list: [], overview: {
        total: '0.00',
        interest: '0.00',
        times: '0'
      }}
    }
  },
  data:() => ({
    search: '',
    sort: 'endDate,DESC',
    status: '',
    sortItems: [{text: '还款日期降序', value: 'endDate,DESC'}, {text: '还款日期升序', value: 'endDate,ASC'}, {text: '还款金额降序', value: 'amount,DESC'}, {text: '还款金额升序', value: 'amount,ASC'}],
    statusItems: [{text: '全部', value: ''}, {text: '已生效', value: '已生效'}, {text: '已逾期', value: '已逾期'}, {text: '已还清', value: '已还清'}]
  }),
  head:() => ({
    title: '借入记录'
  }),
  components: {
    HistoryStatisticsCard,
    HistoryList
  },
  mounted() {
    wechatShareSetting(this.$axios, this.$store)
  },
  methods: {
    async getData() {
      let {data} = await this.$axios.get(`/iou/history?type=borrow&userId=${this.$store.state.user.id}&sort=${this.sort}&status=${this.status}&search=${this.search}`)
      if (data.success) {
        this.list = data.list
      } else {
        this.$store.dispatch('displayMessage', data.msg)
      }
    }
  }
}
</script>

<style lang="scss" scpoed>
  #borrowHistory {
    #SearchBlock {
      width: 100vw;
      padding: 0.9rem 0.7rem;

      #searchInput {
        background-color: $menu-grey;
        border: 1px solid #979797;
        border-radius: 0.5rem;
        width: 100%;
        height: 2rem;
        text-align: center;
        outline: none;
        color: $light-gold;

        &.empty {
          font-family: 'Material Icons';
        }
      }
      ::-moz-placeholder { color: $light-gold; line-height: 1.2rem;}
      ::-webkit-input-placeholder { color:$light-gold; line-height: 1.2rem; }
      :-ms-input-placeholder { color:$light-gold; line-height: 1.2rem; }
    }

    #SortAndStatusBlock {
      width: 100%;
      background-color: $menu-grey;
      padding: 0.5rem 0;
      
      /deep/ .input-group {
        padding-top: 0;

        .input-group__selections {

          .input-group__selections__comma {
            color: $light-gold;
            justify-content: center;
            width: 100%;
          }
        }
        .input-group__append-icon {
          color: $light-gold;
        }
        .input-group__details {
          display: none;
        }
      }
      /deep/ .menu__content {
        background-color: #fff;
        a.list__tile--active {
          color: $light-gold;          
        }
      }

      #SortBlock {
        width: 50%;
        display: inline-block;
      }
      #StatusBlock {
        width: 50%;
        display: inline-block;
        border-left: 2px solid $light-gold;
      }
    }
  }
</style>