<template> <view> <cu-custom class="main-totextbar bg-main-oil" :isBack="true" bgColor="bg-main-oil"> <block slot="backText">返回</block> <block slot="content">油豆中心</block> </cu-custom> <view class="" v-show="accountStatus"> <view class="placeholder bg-main-oil"> </view> <view class="move-top"> <view class="flex radius margin my-shadow position-re"> <view class="basis-sm text-center padding bg-gradual-black"> 我的油豆 </view> <view class="basis-lg padding bg-white"> 总余额:<text class="text-red">{{userTotal.oilCardTotalPrice|moneyFormat}}元</text> <text class="cu-tag yu-tag-right position-ab sm">{{cardList.length>0?cardList.length:1}} 个</text> </view> </view> <!-- <view class="flex radius margin my-shadow position-re"> <view class="basis-sm text-center padding bg-gradual-black"> 自营公司油卡 </view> <view class="basis-lg padding bg-white"> 余额:400.00 元 <text class="cu-tag yu-tag-right position-ab sm">1张</text> </view> </view> <view class="flex radius margin my-shadow position-re"> <view class="basis-sm text-center padding bg-gradual-black"> 三方公司油卡 </view> <view class="basis-lg padding bg-white"> 总余额:<text class="text-red">{{userTotal.oilCardTotalPrice|moneyFormat}}元</text> <text class="cu-tag yu-tag-right position-ab sm">{{cardList.length-1>0?cardList.length-1:1}}张</text> </view> </view> --> </view> </view> <view class=" margin-bottom-lg"> <swiper class="screen-swiper square-dot" @change="cardSwiper" :indicator-dots="true" :circular="true" :autoplay="false" interval="5000" duration="500"> <swiper-item v-for="(item,index) in cardList" :key="index" :class="cardCur==index?'cur':''"> <!-- <image :src="imgURL+ (item.type=='zs'?'card-zs.png':'card-other.png')" mode="aspectFill"> </image> --> <oil-card :card="item"></oil-card> </swiper-item> </swiper> </view> <view class="transactions padding-top solid-top margin my-shadow radius margin-top"> <view class="" v-if="cardList[cardCur].shareCompanyQuota==1"> <view class="text-center "> <view class="text-red padding-bottom-sm text-bold text-lg"> 共享企业余额 </view> <text class="text-grey">单日加油额度:{{cardList[cardCur].orderAmountToplimit}}元;单日加油升数额度:{{cardList[cardCur].orderVolumeToplimit}}L</text> </view> <view class="text-center padding"> <!-- <view class="text-red text-bold text-lg"> {{userTotal.oilCardTotalPrice|moneyFormat}}元 </view> --> <text class="">交易记录</text> </view> </view> <view> <view class="cu-list menu" v-if="historyLsit.length>0"> <view class="cu-item" v-for="detail in historyLsit" :key="detail.id"> <view class="content padding-tb-sm"> <view class="text-gray text-sm"> {{detail.createTime}} </view> <view> {{detail.billTypeName + ' '}}{{ detail.occurAmount|moneyFormat}}个 </view> </view> <view class="action"> <text class="text-black">{{detail.occurAmount|moneyFormat}}</text> </view> </view> </view> <my-empty v-else :marginTopExtra="false"></my-empty> </view> </view> <view class="bg-white"> <uni-load-more :status="loadStatus"></uni-load-more> </view> </view> </template> <script> import oilCard from '../../components/oil-card/oil-card.vue' import accountApi from '@/api/account.js' export default { components: { oilCard }, data() { return { loadStatus: 'load', userTotal: {}, historyLsit: [], accountStatus: uni.getStorageSync('accountStatus'), imgURL: this.global.imgURL, cardCur: 0, swiperList: [{ id: 0, bgColor: 'bg-gradual-blue', text: '油卡卡10086', type: 'zs' }, { id: 1, bgColor: 'bg-gradual-purple', text: '油卡卡123454', type: 'other' }, { id: 2, bgColor: 'bg-gradual-green', text: '油卡卡896671', type: 'other' }, { id: 3, bgColor: 'bg-gradual-orange', text: '油卡卡567651', type: 'other' }, { id: 4, bgColor: 'bg-gradual-pink', text: '油卡卡454565651', type: 'other' }, { id: 5, bgColor: 'bg-gradual-red', text: '油卡卡154645645', type: 'other' }, ], dotStyle: false, towerStart: 0, direction: '', cardList: [], currentPage: 1 }; }, onLoad() { this.getCards() this.getTotalOilCardInfo() this.TowerSwiper('swiperList'); // 初始化towerSwiper 传已有的数组名即可 }, onReachBottom() { if (this.loadStatus == 'more') { setTimeout(() => { this.getMoneyDetail(this.cardList[0]) }, 100) } else { uni.showToast({ title: '到底啦', icon: 'none' }) } }, methods: { getAmount() { accountApi.getTotalOilCardInfo().then(res => { if (res.code == 20000) { this.userTotal = res.data } }) }, getTotalOilCardInfo() { accountApi.getTotalOilCardInfo().then(res => { if (res.code == 20000) { this.userTotal = res.data } }) }, getMoneyDetail(card) { let data2 = { currentPage: this.currentPage, index: this.historyLsit.length?this.historyLsit.length:0, pageSize: 20, params: { id: card.id, oilCardType: card.oilCardType } } accountApi.getOilCardRecordByPage(data2).then(res => { if (res.code == 20000) { if (res.data.list.length < 20) { this.loadStatus = 'nomore' } else { this.loadStatus = 'more' this.currentPage++ } this.historyLsit = this.historyLsit.concat(res.data.list) } }) }, getCards() { accountApi.getUserAccount().then(res => { if (res.code == 20000) { this.cardList = res.data if (this.cardList.length > 0) { this.getMoneyDetail(this.cardList[0]) } } }) }, DotStyle(e) { this.dotStyle = e.detail.value }, // cardSwiper cardSwiper(e) { this.cardCur = e.detail.current this.getMoneyDetail(this.cardList[this.cardCur]) }, // towerSwiper // 初始化towerSwiper TowerSwiper(name) { let list = this[name]; for (let i = 0; i < list.length; i++) { list[i].zIndex = parseInt(list.length / 2) + 1 - Math.abs(i - parseInt(list.length / 2)) list[i].mLeft = i - parseInt(list.length / 2) } this.swiperList = list }, // towerSwiper触摸开始 TowerStart(e) { this.towerStart = e.touches[0].pageX }, // towerSwiper计算方向 TowerMove(e) { this.direction = e.touches[0].pageX - this.towerStart > 0 ? 'right' : 'left' }, // towerSwiper计算滚动 TowerEnd(e) { let direction = this.direction; let list = this.swiperList; if (direction == 'right') { let mLeft = list[0].mLeft; let zIndex = list[0].zIndex; for (let i = 1; i < this.swiperList.length; i++) { this.swiperList[i - 1].mLeft = this.swiperList[i].mLeft this.swiperList[i - 1].zIndex = this.swiperList[i].zIndex } this.swiperList[list.length - 1].mLeft = mLeft; this.swiperList[list.length - 1].zIndex = zIndex; } else { let mLeft = list[list.length - 1].mLeft; let zIndex = list[list.length - 1].zIndex; for (let i = this.swiperList.length - 1; i > 0; i--) { this.swiperList[i].mLeft = this.swiperList[i - 1].mLeft this.swiperList[i].zIndex = this.swiperList[i - 1].zIndex } this.swiperList[0].mLeft = mLeft; this.swiperList[0].zIndex = zIndex; } this.direction = "" this.swiperList = this.swiperList }, }, filters: { moneyFormat(value) { if (value) { return value.toFixed(2) } else { return '0.00' } } } } </script> <style scoped> .tower-swiper .tower-item { transform: scale(calc(0.5 + var(--index) / 10)); margin-left: calc(var(--left) * 100upx - 150upx); z-index: var(--index); } .placeholder { width: 750upx; min-height: 115rpx; } .move-top { margin-top: -110rpx; } .yu-tag-right { top: 0; right: 0; border-radius: 0 0 0 12px; background-color: #FF6D6E !important; color: #fff; padding: 0 10px; } .inner-card { height: 100%; } .opacity-half { opacity: 0.2; } </style>