HistoryList.vue 5.39 KB
<template>
    <v-flex id="HistoryList">
      <v-card v-for="(item, index) in list" :key="index" class="infoCards" flat height="6rem" @click.native='$router.push(`/${jumpPrefix}?id=${item.id}`)'>
        <v-card-title class="infoCardsTitle" >
          <div class="infoCardsAvatar">
            <img v-if="item.avatar" :src="item.avatar" alt="" />
            <i v-if="!item.avatar" class="material-icons icon iconfont icon-face"></i>
          </div>
          <div class="infoCardsName">{{item.target ? item.target.name : item.targetName}}</div>
          <div class="infoCardsTitleButton" :class="setStyle(item.status)">{{item.status}}</div>
          <div class="infoCardsCornerMark" v-if="item.status === '已生效'">
            <div class="infoCardsCornerMarkString">剩余{{item.timeRemain}}天</div>
          </div>
          <div class="infoCardsCornerMark overdue" v-if="item.status === '已逾期'">
            <div class="infoCardsCornerMarkString">逾期{{-item.timeRemain}}天</div>
          </div>
        </v-card-title>
        <v-card-text class="infoCardsContent" >
          <div class="infoCardsContentBlock amount">
            <div class="infoCardsContentKey">筹款金额</div>
            <div class="infoCardsContentValue">{{item.amount}}元</div>              
          </div>
          <div class="infoCardsContentBlock time">
            <div class="infoCardsContentKey">借款时长</div>
            <div class="infoCardsContentValue">{{item.duration}}天</div>                            
          </div>
          <div class="infoCardsContentBlock rate">
            <div class="infoCardsContentKey">年利率</div>
            <div class="infoCardsContentValue">{{item.rate * 100}}%</div>                            
          </div>
        </v-card-text>
      </v-card>
      <div v-if="!list.length" class="emptyImg">
        <img src="/netiou/listBG.png" alt="">
      </div>
    </v-flex>
</template>

<script>
export default {
  props: {
    list: {
      type: Array,
      default: ()=>([])
    },
    jumpPrefix: {
      type: String
    }
  },
  methods: {
    setStyle(status) {
      switch (status) {
        case '未发起':
          return 'notInitiated'
          break
        case '待确认':
        case '已生效':
          return 'toBeConfirmed'
          break
        case '已驳回':
        case '已逾期':
          return 'dismissed'
          break
        case '已还清':
          return 'ended'
          break
        default:
          return 'toBeConfirmed'
          break
      }
    }
  }
}
</script>

<style lang="scss" scoped>
  #HistoryList {
    width: 100vw;
    padding: 0 4vw;
    overflow: auto;
    // height: 50vh;
    margin-top: 1.5rem;

    .infoCards {
      background-color: #fff;
      color: #000;
      border-radius: 2px;
      margin-bottom: 1rem;
      position: relative;
      overflow:hidden;      

      .infoCardsTitle {
        padding:0.5rem 1.3rem 0.2rem 1.3rem; 
        

        .infoCardsAvatar {
          width: 2.5rem;
          height: 2.5rem;
          border-radius: 1.3rem;
          overflow:hidden;

          img {
            width: 100%;
            vertical-align: bottom;
          }
          
          .icon {
            color: $avatar-grey;
            font-size: 2.5rem;
          }
        }

        .infoCardsName {
          margin-left: 0.8rem;
          font-size: 16px;
          width: 4.5rem;
        }

        .infoCardsTitleButton {
          width: 3.2rem;
          height: 1.2rem;
          line-height: 1.35rem;
          font-size: 10px;
          text-align: center;
          background-image: linear-gradient(-229deg, #DAB269 37%, #E7C78C 87%);
          border-radius: 32px;
          margin-left: 0.9rem;

          &.notInitiated {
            background-image: linear-gradient(-229deg, #444 37%, #aaa 87%);
            color: #fff;
          }
          &.dismissed {
            background-image: linear-gradient(-229deg, #ff3434 37%, #ff6060 87%);
            color: #fff;
          }

          &.ended {
            background-image: linear-gradient(-229deg, #0D47A1 37%, #64B5F6 87%);
            color: #fff;
          }
        }
        .infoCardsCornerMark {
          font-size: 10px;
          width: 6.7rem;
          height: 2.8rem;
          background-image: linear-gradient(-229deg, #DAB269 37%, #E7C78C 87%);
          border-radius: 26px;
          position: absolute;
          top: -1.6rem;
          right: -1rem;
          z-index: 1;
          
          &.overdue {
            color: #fff;
            background-image: linear-gradient(-229deg, #ff3434 37%, #ff6060 87%);
          }

          .infoCardsCornerMarkString {
            position: absolute;
            bottom: 0;
            left: 1rem;
          }
        }
      }

      .infoCardsContent {
        width: 100%;
        padding: 0;

          .infoCardsContentBlock {
            width: 33%;
            display: inline-block;
            text-align: center;

            .infoCardsContentKey {
              font-size: 0.8rem;
              color: #898989;
            }

            .infoCardsContentValue {
              font-size: 0.8rem;
              color: $gold;
              margin: auto;
            }
          }
      }
    }
  }

  .emptyImg {
    background-color: $background-black;
    width: 100%;
    height: 50vh;
    padding: 2.4rem 0 0 0;
    img {
      width: 8.2rem;
      display: block;
      margin: auto;
    }
  }
</style>