201 lines
6.0 KiB
Vue
201 lines
6.0 KiB
Vue
|
|
<template>
|
|||
|
|
<view :data-theme="theme" class="user_payment bg--w111-fff">
|
|||
|
|
<view class="user_heard">
|
|||
|
|
<!-- #ifdef MP || APP-->
|
|||
|
|
<nav-bar ref="navBarRef" navTitle="充值购物金" :isShowMenu="false" :isBackgroundColor="false"></nav-bar>
|
|||
|
|
<!-- #endif -->
|
|||
|
|
<view class="payment-box">
|
|||
|
|
<view
|
|||
|
|
:style="{ background: bgColor}"
|
|||
|
|
class="balance-container relative borRadius14">
|
|||
|
|
<view class="w-168 h-168 absolute member_bg"><img :src="`${urlDomain}crmebimage/presets/member_bg.png`" class="w-100-p111- h-100-p111-"></view>
|
|||
|
|
<view class="flex-between-center balance-header">
|
|||
|
|
<view>购物金余额(元)</view>
|
|||
|
|
<view class="balance-links px-16rpx">
|
|||
|
|
<navigator :url="`/pages/member/recharge_record/index?merId=${merId}`">
|
|||
|
|
<text>充值记录</text>
|
|||
|
|
</navigator>
|
|||
|
|
<text class="link-separator">|</text>
|
|||
|
|
<navigator :url="`/pages/member/shoppingFund_details/index?merId=${merId}`">
|
|||
|
|
<text>明细</text>
|
|||
|
|
</navigator>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="flex items-baseline mb-40">
|
|||
|
|
<text class="f-s-60 text--w111-fff semiBold mr-12">{{merMemberInfo.shoppingCreditsBalance}}</text>
|
|||
|
|
<text class="f-s-26 text--w111-fff regular">包含赠送 {{merMemberInfo.giftAmount}}</text>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="bg--w111-fff balance-amount relative borRadius14">
|
|||
|
|
<recharge-page :packageList="packageList" @changePriceSuccess="changePriceSuccess"></recharge-page>
|
|||
|
|
<view class="mt-48">
|
|||
|
|
<view class="mb-24 f-s-32 text-333">注意事项:</view>
|
|||
|
|
<view class="tips-samll f-s-24 text-999 lh-40rpx">
|
|||
|
|
1.赠送金额仅本店消费使用,不可提现;<br>
|
|||
|
|
2.充值本金可在「充值记录」中申请退款,赠送金额不单独还,退款时自动扣除;<br>
|
|||
|
|
3.消费优先抵扣充值本金;<br>
|
|||
|
|
4.充值如遇问题,请联系店铺客服。
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<bottom-button @handleConfirm="handleConfirm" :backgroundColor="bgColor"></bottom-button>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
// +----------------------------------------------------------------------
|
|||
|
|
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
|||
|
|
// +----------------------------------------------------------------------
|
|||
|
|
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
|||
|
|
// +----------------------------------------------------------------------
|
|||
|
|
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
|||
|
|
// +----------------------------------------------------------------------
|
|||
|
|
// | Author: CRMEB Team <admin@crmeb.com>
|
|||
|
|
// +----------------------------------------------------------------------
|
|||
|
|
import {
|
|||
|
|
setLinearThemeColor, shallowGradientColor, themeRgba
|
|||
|
|
} from "../../../utils/setTheme";
|
|||
|
|
import navBar from '@/components/navBar';
|
|||
|
|
import rechargePage from "../../../subPackage/pages/recharge";
|
|||
|
|
import BottomButton from "../../../components/bottomButton";
|
|||
|
|
import { mapGetters } from "vuex";
|
|||
|
|
import {memberShoppingCreditsApi, memberUserInfoApi} from "../memberApi";
|
|||
|
|
import {handleGoRecharge} from "../member";
|
|||
|
|
let app = getApp();
|
|||
|
|
export default {
|
|||
|
|
name: "index",
|
|||
|
|
components: {
|
|||
|
|
navBar,
|
|||
|
|
rechargePage,
|
|||
|
|
BottomButton
|
|||
|
|
},
|
|||
|
|
data() {
|
|||
|
|
return {
|
|||
|
|
merMemberInfo: {},
|
|||
|
|
merId: 0,
|
|||
|
|
urlDomain: this.$Cache.get("imgHost"),
|
|||
|
|
theme: app.globalData.theme,
|
|||
|
|
bgColor: '',
|
|||
|
|
iconColor: '#FFFFFF',
|
|||
|
|
packageList: [],
|
|||
|
|
recharge: {
|
|||
|
|
id: '',
|
|||
|
|
price: ''
|
|||
|
|
},
|
|||
|
|
backgroundColor: ''
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
onLoad(options) {
|
|||
|
|
this.merId = Number(options.merId)
|
|||
|
|
this.bgColor = setLinearThemeColor();
|
|||
|
|
this.backgroundColor = shallowGradientColor();
|
|||
|
|
this.getMerMemberInfo();
|
|||
|
|
this.getPackageList()
|
|||
|
|
},
|
|||
|
|
methods: {
|
|||
|
|
//店铺会员信息
|
|||
|
|
async getMerMemberInfo(){
|
|||
|
|
this.$store.dispatch("getMerMemberInfo", this.merId).then(data => {
|
|||
|
|
this.merMemberInfo = data
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
async getPackageList() {
|
|||
|
|
try {
|
|||
|
|
const { data } = await memberShoppingCreditsApi(this.merId)
|
|||
|
|
this.packageList = (data || []).map(({ rechargeAmount, giftAmount, id }) => ({
|
|||
|
|
price: rechargeAmount,
|
|||
|
|
giveMoney: giftAmount,
|
|||
|
|
id: id
|
|||
|
|
}))
|
|||
|
|
this.getPrice(this.packageList[0])
|
|||
|
|
} catch (e) {
|
|||
|
|
this.packageList = []
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
/**
|
|||
|
|
* 选择金额
|
|||
|
|
*/
|
|||
|
|
changePriceSuccess(e) {
|
|||
|
|
// 兼容处理:优先直接取值,取不到则尝试从 detail 中取(小程序原生事件机制)
|
|||
|
|
// #ifdef MP
|
|||
|
|
const data = e.detail || e;
|
|||
|
|
const item = data.__args__[0]
|
|||
|
|
console.log('充值金额 item:', item);
|
|||
|
|
// #endif
|
|||
|
|
// #ifndef MP
|
|||
|
|
const item = e;
|
|||
|
|
console.log('充值金额 item:', item);
|
|||
|
|
// #endif
|
|||
|
|
if (item) {
|
|||
|
|
this.getPrice(item);
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
getPrice(item){ //充值金额
|
|||
|
|
this.recharge = {
|
|||
|
|
id: item.id,
|
|||
|
|
price: item.price
|
|||
|
|
}
|
|||
|
|
console.log('this.recharge',this.recharge)
|
|||
|
|
},
|
|||
|
|
handleConfirm() {
|
|||
|
|
|
|||
|
|
handleGoRecharge(this.recharge, this.merId)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style scoped lang="scss">
|
|||
|
|
.member_bg{
|
|||
|
|
right: 52rpx;
|
|||
|
|
top: 84rpx;
|
|||
|
|
}
|
|||
|
|
.user_heard{
|
|||
|
|
@include shallow-gradient(theme);
|
|||
|
|
}
|
|||
|
|
.payment-box{
|
|||
|
|
padding: 28rpx 24rpx 0 24rpx;
|
|||
|
|
}
|
|||
|
|
.user_payment {
|
|||
|
|
height: 100vh;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.balance-amount {
|
|||
|
|
padding: 12rpx 24rpx;
|
|||
|
|
top: -188rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.balance-container {
|
|||
|
|
position: relative;
|
|||
|
|
height: 396rpx;
|
|||
|
|
padding: 32rpx 0 24rpx 44rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.balance-bg {
|
|||
|
|
width: 100%;
|
|||
|
|
height: 278rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.balance-header {
|
|||
|
|
margin-bottom: 14rpx;
|
|||
|
|
color: #fff;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.balance-links {
|
|||
|
|
font-size: 24rpx;
|
|||
|
|
display: flex;
|
|||
|
|
align-items: center;
|
|||
|
|
width: 202rpx;
|
|||
|
|
height: 48rpx;
|
|||
|
|
line-height: 48rpx;
|
|||
|
|
background-color: rgba(255, 255, 255, .2);
|
|||
|
|
border-radius: 24rpx 0 0 24rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.link-separator {
|
|||
|
|
opacity: 0.7;
|
|||
|
|
margin: 0 8rpx
|
|||
|
|
}
|
|||
|
|
</style>
|