oil-station/pos-uni/pagesHome/MemberRecharge/MemberRecharge.vue

568 lines
12 KiB
Vue
Raw Normal View History

2024-08-16 18:26:19 +08:00
<template>
<view class="content">
<headers :titles="titles"><u-icon name="arrow-left" color="#fff" size="22"></u-icon></headers>
<!-- <view class="top-box">
<view class="inputbox">
<u-icon name="search" size="20"></u-icon>
<input type="text" />
</view>
<u-icon name="scan" color="#fff" size="38"></u-icon>
</view> -->
<view class="box_">
<view class="leftbox" @click="goChooseUser()">
<view class="title_">会员信息</view>
<view v-if="!isChooseUser">
请选择会员
</view>
<view v-if="isChooseUser">
<view class="d-s">
<view class="hui">会员名称:</view>
<view class="hei">{{userInfo.name}}</view>
</view>
<view class="d-s">
<view class="hui">手机号:</view>
<view class="hei">{{userInfo.mobile}}</view>
</view>
<view class="d-s">
<view class="hui">账户余额:</view>
<view class="hei">{{userInfo.cardBalance}}</view>
</view>
</view>
</view>
<view class="rightbox">
<image src="../../static/imgs/av.png" mode=""></image>
</view>
</view>
<view class="d-bs">
<view class="title_h">充值面额</view>
<!-- <view class="title_lan">充值记录</view> -->
</view>
<view class="wrap-box">
<view class="w-box" v-for="(item,index) in numList " :key="index" @click="getindex(index,item)">
<view class="hezi" :class="{ 'acv' : listindex == index }">
{{item.rechargeBalance}}
</view>
</view>
<view class="w-box" @click="getindex(numList.length,null)">
<view class="hezi" :class="{ 'acv' : listindex == numList.length }">
<!-- 自定义金额 -->
<input placeholder="自定义金额" v-model="value" @input="custom()"></input>
</view>
</view>
</view>
<view class="bai-box">
<view class="h-box">
<view class="h-ds">
<view class="icon-img">
<image src="../../static/imgs/wx.png" mode=""></image>
</view>
<view class="">微信扫码支付</view>
</view>
<view class="qiu" v-if="memberId != 0" @click="getmemberId(0,'WECHAT')"></view>
<view class="qiux" v-if="memberId == 0">
<u-icon name="checkmark" color="#fff" size="16"></u-icon>
</view>
</view>
<view class="h-box">
<view class="h-ds">
<view class="icon-img">
<image src="../../static/imgs/zfb.png" mode=""></image>
</view>
<view class="">支付宝扫码支付</view>
</view>
<view class="qiu" v-if="memberId != 1" @click="getmemberId(1,'ALIPAY')"></view>
<view class="qiux" v-if="memberId == 1">
<u-icon name="checkmark" color="#fff" size="16"></u-icon>
</view>
</view>
<view class="h-box">
<view class="h-ds">
<view class="icon-img">
<image src="../../static/imgs/yl.png" mode=""></image>
</view>
<view class="">银联扫码支付</view>
</view>
<view class="qiu" v-if="memberId != 2" @click="getmemberId(2,'UNIONPAY')"></view>
<view class="qiux" v-if="memberId == 2">
<u-icon name="checkmark" color="#fff" size="16"></u-icon>
</view>
</view>
<view class="h-box">
<view class="h-ds">
<view class="icon-img">
<image src="../../static/imgs/xjzf.png" mode=""></image>
</view>
<view class="">现金支付</view>
</view>
<view class="qiu" v-if="memberId != 3" @click="getmemberId(3,'CASH')"></view>
<view class="qiux" v-if="memberId == 3">
<u-icon name="checkmark" color="#fff" size="16"></u-icon>
</view>
</view>
</view>
<view class="bottom-b"></view>
<view class="p-bottom" @click="scanQrcode()">
<view class="anniu">
确认支付
</view>
</view>
</view>
</template>
<script>
import request from "../../utils/request";
import headers from '../../components/header/headers.vue'
export default {
data() {
return {
titles: "会员充值",
listindex: 0,
memberId: 0,
numList: [
// "50元",
// "100元",
// "300元",
// "500元",
// "1000元",
"自定义金额",
],
isChooseUser: false,
userId: "",
userInfo: "",
order: {
paymentType: "WECHAT"
},
value: "",
realyPayBills: 0,
authCode: "",
}
},
onLoad(e) {
this.userId = e.userId
if (e.userId) {
this.isChooseUser = true
this.getUser()
}
},
onShow() {
// this.actList = ["1", "1", "1", "1", "1", ]
// this.status = "nomore" 底部刷新结束
this.getRechargeAmount()
},
onPullDownRefresh() {
console.log("刷新");
uni.stopPullDownRefresh()
},
onReachBottom() {
// this.show = true
setTimeout(() => {
console.log("加载执行");
}, 2000)
},
components: {
headers
},
methods: {
// 自定义金额
custom() {
if (this.numList.length > 0) {
// const changeList = this.cardValueList
this.numList.forEach(change => {
if (data >= change.rechargeBalance) {
this.order.points = change.points
this.order.bidBalance = change.bidBalance
this.order.giftBalance = change.giftBalance
this.order.growthValue = change.growthValue
this.order.rechargeBalance = change.rechargeBalance
this.order.royaltyType = change.royaltyType
this.order.percentageCommissions = change.percentageCommissions
this.order.amountCommission = change.amountCommission
this.order.cardValueId = change.id
}
})
}
this.order.rechargType = 1
console.log(this.value);
this.order.amount = this.value
this.realyPayBills = this.order.amount
this.order.rechargeBalance = this.order.amount
},
// 获取充值金额列表
getRechargeAmount() {
request({
url: 'business/marketingActivity/cardFuelDiesel',
method: 'get',
params: {
pageNo: 1,
pageSize: 10000
}
}).then((res) => {
this.numList = res.data.records
this.numList.sort((a, b) => a.rechargeBalance - b.rechargeBalance);
this.order.amount = this.numList[0].rechargeBalance
this.order.rechargeBalance = this.numList[0].rechargeBalance
this.order.points = this.numList[0].points
this.realyPayBills = this.numList[0].rechargeBalance
this.order.bidBalance = this.numList[0].bidBalance
this.order.points = this.numList[0].points
this.order.giftBalance = this.numList[0].giftBalance
this.order.growthValue = this.numList[0].growthValue
this.order.cardValueId = this.numList[0].id
// this.order.amount = null
this.order.royaltyType = this.numList[0].royaltyType
this.order.rechargType = 0
this.order.percentageCommissions = this.numList[0].percentageCommissions
this.order.amountCommission = this.numList[0].amountCommission
})
},
getmemberId(num, payType) {
this.memberId = num
this.order.paymentType = payType
},
// 获取用户信息
getUser() {
request({
url: '/business/userManager/user/' + this.userId,
method: 'get',
}).then((res) => {
this.userInfo = res.data
})
},
goChooseUser() {
uni.navigateTo({
url: "/pagesHome/searchVip/searchVip?type=1"
})
},
getindex(index, data) {
this.listindex = index
this.order.rechargType = 0
if (data) {
this.order.amount = data.rechargeBalance
this.order.rechargeBalance = data.rechargeBalance
this.order.points = data.points
this.realyPayBills = data.rechargeBalance
this.order.bidBalance = file.bidBalance
this.order.points = file.points
this.order.giftBalance = file.giftBalance
this.order.growthValue = file.growthValue
this.order.cardValueId = file.id
// this.order.amount = null
this.order.royaltyType = file.royaltyType
this.order.percentageCommissions = file.percentageCommissions
this.order.amountCommission = file.amountCommission
} else {
this.order.amount = this.value
this.realyPayBills = this.value
this.order.rechargeBalance = this.value
}
},
// 二维码
scanQrcode() {
if (!this.userInfo) {
uni.showToast({
title: "请先选择会员",
icon: "none"
})
return;
}
if (!this.order.amount) {
uni.showToast({
title: "请先选择充值金额",
icon: "none"
})
return;
}
if (this.order.paymentType == "CASH") {
this.authCode = this.order.amount
this.govipjs()
} else {
let _this = this
uni.scanCode({
onlyFromCamera: true,
success: (res) => {
console.log('扫描二维码成功,结果:' + JSON.stringify(res) + res.result);
_this.authCode = res.result
_this.govipjs()
},
error: (res) => {
console.log('扫描二维码出现错误')
}
})
}
},
govipjs() {
let actualPayment = 0
if (this.order.paymentType == "CASH") actualPayment = this.authCode
// 会员id 会员名字会员手机号码
this.order.mtUserId = this.userInfo.id
this.order.name = this.userInfo.name
this.order.mobile = this.userInfo.mobile
// 支付码
this.order.authCode = this.authCode
this.order.realyPayBills = this.realyPayBills
this.order.actualPayment = actualPayment
this.order.payChannel = "POS"
this.order.terminal = "POS"
// cardValueId
// growthValue
// rechargeType
// royaltyType
this.order.makeChange = 0
// url: 'business/marketingActivi ty/cardFuelRecord/prepaidFuelTopUp',
request({
url: 'business/marketingActivity/cardValueRecord/prepaidCardTopUp',
method: 'post',
data: this.order
}).then((res) => {
uni.navigateTo({
url: '/pagesHome/PaymentResults/PaymentResults?type=1&orderNo=' + res.data
.paymentNo
})
})
},
goback() {
uni.navigateBack()
}
}
}
</script>
<style scoped lang="scss">
.content {
background: #0864e9;
// background: linear-gradient(180deg, #B2D2FC 0%, #B2D2FC 14%, rgba(255, 255, 255, 0.84) 24%, rgba(255, 255, 255, 0.84) 100%);
height: 30vh;
box-sizing: border-box;
padding-top: 88px;
}
.container {
width: 100%;
background: #f4f5f6;
}
.top-box {
width: 95%;
margin: 15px auto;
display: flex;
align-items: center;
justify-content: space-between;
}
.inputbox {
width: 90%;
background: #fff;
display: flex;
align-items: center;
box-sizing: border-box;
padding: 5px 15px;
border-radius: 50px;
}
.box_ {
width: 95%;
border-radius: 8px;
height: 154px;
background: #fff;
margin: 15px auto;
border: 1px solid #0864e9;
box-sizing: border-box;
padding: 15px;
display: flex;
justify-content: space-between;
position: relative;
overflow: hidden;
}
.d-s {
display: flex;
align-items: center;
margin-bottom: 10px;
}
.title_ {
font-weight: bold;
font-size: 16px;
color: #0864E9;
margin-bottom: 10px;
}
.leftbox {
width: 50%;
}
.rightbox {
position: absolute;
right: 0px;
bottom: 0px;
image {
width: 145px;
height: 130px;
}
}
.hui {
font-weight: 500;
font-size: 14px;
color: #333333;
margin-right: 5px;
}
.hei {
font-weight: bold;
font-size: 14px;
color: #333333;
}
.bottom-b {
width: 100%;
height: 68px;
}
.p-bottom {
width: 100%;
height: 68px;
background: #fff;
position: fixed;
bottom: 0px;
left: 0px;
}
.anniu {
height: 40px;
background: #0864E9;
width: 80%;
display: flex;
align-items: center;
justify-content: center;
color: #fff;
border-radius: 50px;
margin: 5px auto;
}
.d-bs {
width: 90%;
display: flex;
align-items: center;
justify-content: space-between;
margin: 5px auto;
}
.wrap-box {
width: 100%;
display: flex;
flex-wrap: wrap;
}
.title_h {
color: #333333;
font-weight: bold;
}
.title_lan {
font-weight: 500;
font-size: 16px;
color: #0864E9;
}
.w-box {
width: 33.3%;
display: flex;
align-items: center;
justify-content: center;
}
.hezi {
width: 100px;
height: 70px;
background: #f8f8f8;
display: flex;
align-items: center;
justify-content: center;
border-radius: 6px;
overflow: hidden;
margin: 10px auto;
}
.acv {
background: #0864E9 !important;
color: #fff !important;
}
.bai-box {
width: 90%;
margin: 15px auto;
}
.h-box {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
margin: 15px auto;
}
.h-ds {
display: flex;
align-items: center;
}
.icon-img {
width: 30px;
height: 30px;
margin-right: 10px;
image {
width: 100%;
height: 100%;
}
}
.qiu {
width: 16px;
height: 16px;
border-radius: 50%;
border: 1px solid #333333;
}
.qiux {
width: 16px;
height: 16px;
border-radius: 50%;
border: 1px solid #0864e9;
background: #0864e9;
display: flex;
align-items: center;
justify-content: center;
color: #fff;
}
</style>