123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- <template>
- <view class="app-account-balance dir-left-nowrap cross-center"
- :class="[!margin?'no-margin':'', !round?'no-round':'',]" v-if="showBar">
- <template v-if="showIntegral">
- <view class="box-grow-1 split" :class="[showCount > 1?'':'data-col']">
- <app-account-style :show-count="showCount" :icon="userCenter.account_bar.integral.icon"
- :text="userCenter.account_bar.integral.text"
- :value="userInfo?userInfo.integral:'-'"
- :page="userCenter.account_bar.integral.navigate_enabled?'/plugins/integral_mall/index/index':''"></app-account-style>
- </view>
- </template>
- <template v-if="showBalance">
- <view class="box-grow-1 split" :class="[showCount > 1?'':'data-col']">
- <app-account-style :show-count="showCount" :icon="userCenter.account_bar.balance.icon"
- :text="userCenter.account_bar.balance.text"
- :value="userInfo?userInfo.balance:'-'"
- page="/pages/balance/balance"></app-account-style>
- </view>
- </template>
- <template v-if="showCoupon">
- <view class="box-grow-1 split" :class="[showCount > 1?'':'data-col']">
- <app-account-style :show-count="showCount" :icon="userCenter.account_bar.coupon.icon"
- :text="userCenter.account_bar.coupon.text"
- :value="userInfo?userInfo.coupon:'-'"
- page="/pages/coupon/index/index"></app-account-style>
- </view>
- </template>
- <template v-if="showCard">
- <view class="box-grow-1 split" :class="[showCount > 1?'':'data-col']">
- <app-account-style :show-count="showCount" :icon="userCenter.account_bar.card.icon"
- :text="userCenter.account_bar.card.text"
- :value="userInfo?userInfo.card:'-'"
- page="/pages/card/index/index"></app-account-style>
- </view>
- </template>
- </view>
- </template>
- <script>
- import {mapState} from 'vuex';
- import appAccountStyle from "./app-account-style.vue";
- export default {
- name: 'app-account-balance',
- components: {
- 'app-account-style': appAccountStyle,
- },
- props: {
- margin: {
- type: Boolean,
- default: false,
- },
- round: {
- type: Boolean,
- default: false,
- },
- inputUserCenter: null,
- },
- computed: {
- ...mapState({
- userInfo: state => state.user.info,
- storeUserCenter: state => state.mallConfig.user_center,
- }),
- showBar() {
- if (this.userCenter
- && this.userCenter.account_bar
- && this.userCenter.account_bar.status == 0
- ) return false;
- return this.showBalance || this.showIntegral;
- },
- userCenter() {
- if (this.inputUserCenter) return this.inputUserCenter;
- return this.storeUserCenter;
- },
- showIntegral() {
- if (!this.userCenter) return false;
- if (this.userCenter.account_bar && this.userCenter.account_bar.integral.status == 1) return true;
- return false;
- },
- showBalance() {
- if (!this.userCenter) return false;
- if (this.userCenter.recharge_setting
- && this.userCenter.recharge_setting.status == 1
- && this.userCenter.account_bar
- && this.userCenter.account_bar.balance.status == 1
- ) return true;
- return false;
- },
- showCoupon() {
- if (!this.userCenter) return false;
- if (this.userCenter.account_bar && this.userCenter.account_bar.coupon.status == 1) return true;
- return false;
- },
- showCard() {
- if (!this.userCenter) return false;
- if (this.userCenter.account_bar && this.userCenter.account_bar.card.status == 1) return true;
- return false;
- },
- showCount() {
- let count = 0;
- if (this.showIntegral) {
- count++;
- }
- if (this.showBalance) {
- count++;
- }
- if (this.showCoupon) {
- count++;
- }
- if (this.showCard) {
- count++;
- }
- return count;
- }
- }
- }
- </script>
- <style lang="scss" scoped>
- .app-account-balance.no-margin {
- width: 100%;
- margin: 0 auto;
- box-shadow: none;
- }
- .app-account-balance.no-round {
- border-radius: 0;
- }
- .app-account-balance {
- width: #{702rpx};
- height: #{100rpx};
- background: #fff;
- border-radius: #{16rpx};
- margin: #{24rpx} auto;
- box-shadow: 0 0 #{8rpx} rgba(0, 0, 0, .05);
- }
- .data-col {
- width: 100%;
- padding: 0 #{32rpx};
- }
- .split {
- border-left: #{1rpx #eeeeee solid};
- &:first-child {
- border: none;
- }
- }
- </style>
|