sadjv3_jishi/my/wallet/index.vue

758 lines
21 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view>
<view class="" v-if="XCXIsSelect != '否'">
<view class="bg padding dhjsbg">
<view class="flex align-center justify-between">
<view class="" style="font-size: 28rpx;color: #FFFFFF;margin-top: 6px;">当前余额(元)</view>
<view v-if="jsczSel != '否'" class="text-lg" style="text-decoration: underline;color: #ffffff;"
@tap="goMyLB">我的老板</view>
</view>
<view style="font-size: 50rpx;color: #FFFFFF;margin-top: 15rpx;font-weight: bold;"><text
style="font-size: 32rpx;margin-right: 6px;">¥</text>{{money}}</view>
</view>
<view class="" style="margin-top: -60px;padding: 30rpx;">
<view class="bg padding" style="border-radius: 20rpx;">
<view class="text-lg margin-bottom">当前可提现金额:{{currentRealIncome}}
</view>
<view class="padding-bottom-sm">
<input type="number" :placeholder="withdrawalAmountText" @input="withdrawalAmount"
v-model="moneyNum">
</view>
<view style="width: 654upx;margin: 0 auto;height: 1upx;background: #E6E6E6;"></view>
<view class="text-grey margin-top-xs">{{placeholder}}</view>
<view class="margin-top-xs margin-frame" style="font-size: 26rpx;" v-if="txMsg">*{{txMsg}}</view>
</view>
<view class="bg margin-top padding-lr" style="border-radius: 20rpx; padding: 20rpx 35rpx;">
<view>
<view v-for="(item,index) in openLists" :key='index'>
<view class="align-center justify-between"
style="display: flex;height: 100upx;padding: 20upx 0;"
v-if="item.text === '微信' && wxTxSel != '否'">
<view class="flex align-center">
<image :src="item.image" style="width: 50upx;height: 50upx;border-radius: 50upx;">
</image>
<view style="font-size: 30upx;margin-left: 20upx;">{{item.text}}
</view>
</view>
<radio-group name="openWay" style="margin-left: 20upx;" @tap='selectWay(item)'>
<label class="tui-radio">
<radio color="#029d88" :checked="openWay === item.id ? true : false" />
</label>
</radio-group>
</view>
<view class="align-center justify-between"
style="display: flex;height: 100upx;padding: 20upx 0;"
v-if="item.text === '银联' && ylTxSel != '否'">
<view class="flex align-center">
<image :src="item.image" style="width: 50upx;height: 50upx;border-radius: 50upx;">
</image>
<view style="font-size: 30upx;margin-left: 20upx;">{{item.text}}</view>
</view>
<radio-group name="openWay" style="margin-left: 20upx;" @tap='selectWay(item)'>
<label class="tui-radio">
<radio color="#029d88" :checked="openWay === item.id ? true : false" />
</label>
</radio-group>
</view>
<view class="align-center justify-between"
style="display: flex;height: 100upx;padding: 20upx 0;" v-if="item.text === '支付宝'">
<view class="flex align-center">
<image :src="item.image" style="width: 50upx;height: 50upx;border-radius: 50upx;">
</image>
<view style="font-size: 30upx;margin-left: 20upx;">{{item.text}}
</view>
</view>
<radio-group name="openWay" style="margin-left: 20upx;" @tap='selectWay(item)'>
<label class="tui-radio">
<radio color="#029d88" :checked="openWay === item.id ? true : false" />
</label>
</radio-group>
</view>
</view>
</view>
</view>
<view class="bg radius margin-top padding" style="border-radius: 20rpx;margin-bottom: 90rpx; padding: 45rpx 40rpx;"
v-if="XCXIsSelect != '否'">
<view class="flex align-center justify-between" @click="goNav('/my/wallet/zhifubao')">
<view class="flex align-center">
<!-- <image
src="https://admin.sjajk.com/file/uploadPath/2023/01/03/da75d52b95a64fc349d0353ab16cb719.png"
style="width: 44rpx;height: 44rpx;"></image> -->
<view>提现账号</view>
</view>
<image src="../../static/img/you.png" style="width: 16rpx;height: 28rpx;"></image>
</view>
<view class="flex align-center justify-between margin-top-xl"
@click="goNav('/my/wallet/mymoneydetail')">
<view class="flex align-center">
<!-- <image
src="https://admin.sjajk.com/file/uploadPath/2023/01/03/ba45c8489a14029c1782ac0a28fd8a49.png"
style="width: 48rpx;height: 34rpx;"></image> -->
<view>钱包明细</view>
</view>
<image src="../../static/img/you.png" style="width: 16rpx;height: 28rpx;"></image>
</view>
<view class="flex align-center justify-between margin-top-xl" @click="goNav('/my/wallet/cashList')">
<view class="flex align-center">
<!-- <image
src="https://admin.sjajk.com/file/uploadPath/2023/01/03/e90eb8a74548dc3b11c3c856e24e6fbc.png"
style="width: 40rpx;height: 52rpx;"></image> -->
<view>提现记录</view>
</view>
<image src="../../static/img/you.png" style="width: 16rpx;height: 28rpx;"></image>
</view>
<view class="flex align-center justify-between margin-top-xl" @click="goNav('/my/wallet/yinhangka')"
v-if="ylTxSel != '否'">
<view class="flex align-center">
<!-- <image
src="https://admin.sjajk.com/file/uploadPath/2023/01/03/ba45c8489a14029c1782ac0a28fd8a49.png"
style="width: 48rpx;height: 34rpx;"></image> -->
<view>银行卡账号</view>
</view>
<image src="../../static/img/you.png" style="width: 16rpx;height: 28rpx;"></image>
</view>
<!-- <view @click="TuiPrice()" v-if="renzheng ==2||renzheng ==5">退保证金</view> -->
</view>
</view>
<view
style="position: fixed;bottom: 0rpx;left: 0;right: 0;background: #FFFFFF;height: 110rpx;line-height: 110rpx;z-index: 999;width: 100%;padding: 0 30rpx;">
<view class="btn" @click="cashMoney">立即提现</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
XCXIsSelect: '否',
tablist: [{
id: 1,
name: '我的余额'
}, {
id: 2,
name: '我的收益'
}],
bankCard: '',
title_color: 2,
// bgCol1: '#1E1F31',
bgCol2: '#096f4b',
money: 0,
avatar: '',
Profit: 0,
openLists: [{
image: '../static/zhifubao.png',
text: '支付宝',
id: 1
}, {
image: 'https://wap.quanmindaojia.com/file/uploadPath/2023/02/22/88a1bd822b9632aaef8894021f7c9050.jpg',
text: '银联',
id: 2
}, {
image: '../static/icon_weixin.png',
text: '微信',
id: 3
}],
wxTxSel: '否',
ylTxSel: '否',
jsczSel: '否',
openWay: 1,
wallet: [{
id: 1,
num: '5',
price: '5',
isSelect: true
},
{
id: 2,
num: '20',
price: '20',
isSelect: false
},
{
id: 3,
num: '50',
price: '50',
isSelect: false
},
{
id: 4,
num: '100',
price: '100',
isSelect: false
},
{
id: 5,
num: '200',
price: '200',
isSelect: false
},
{
id: 6,
num: '500',
price: '500',
isSelect: false
}
],
moneyNum: null,
thisSelect: {
id: 1,
num: '5',
price: '5',
isSelect: true
},
ylSel: '否',
charge: 0, //提现手续费
maxMoney: 0, //最高提现额度
minMoney: 0, //最低提现额度
ratio: '', //金元比例
placeholder: '',
renzheng: 0,
sp: 0,
txMsg: '',
currentRealIncome: null,
withdrawalAmountText: "请输入提现金额",
withdrawalAmountNumType: null,
}
},
onLoad() {
this.wxTxSel = this.$queue.getData('wxTxSel');
this.ylTxSel = this.$queue.getData('ylTxSel');
this.jsczSel = this.$queue.getData('jsczSel');
this.XCXIsSelect = this.$queue.getData("XCXIsSelect");
if (this.XCXIsSelect != '否') {
uni.setNavigationBarTitle({
title: '我的钱包'
})
} else {
uni.setNavigationBarTitle({
title: '我的信息'
})
}
this.txMsg = this.$queue.getData('txMsg');
this.avatar = uni.getStorageSync('avatar')
this.renzheng = uni.getStorageSync("renzheng")
},
onShow() {
this.ylSel = this.$queue.getData('ylSel');
this.getMoney()
this.getCharge()
this.getMinMoney()
this.getMaxMoney()
this.getRatio()
this.getUserInfo()
},
methods: {
withdrawalAmount(e) {
let withdrawalAmountNumType = Number(e.detail.value);
this.withdrawalAmountNumType = Number(e.detail.value);
if (withdrawalAmountNumType && (withdrawalAmountNumType > this.currentRealIncome)) {
this.$nextTick(() => {
this.moneyNum = "";
this.withdrawalAmountText = "不能超过当前可提现金额,请重新输入";
})
}
},
goMyLB() {
uni.navigateTo({
url: '/my/wallet/therapist'
});
},
//退保证金
TuiPrice() {
let that = this
let zhiFuBao = uni.getStorageSync('zhiFuBao')
let zhiFuBaoName = uni.getStorageSync('zhiFuBaoName')
if (!zhiFuBao && !zhiFuBaoName) {
uni.navigateTo({
url: '/my/wallet/zhifubao'
})
} else {
let renzheng = uni.getStorageSync("renzheng")
console.log(renzheng)
if (renzheng == 2 || renzheng == 5) {
uni.showModal({
title: '提示',
content: '是否确定退还保证金?退还后将不能发布订单',
success: function(res) {
if (res.confirm) {
console.log('用户点击确定');
that.$Request.post("/app/userCertification/exitMoney").then(res => {
console.log(res)
if (res.msg == '您还有未下架的订单,请先下架!') {
uni.showToast({
title: res.msg,
icon: 'none'
});
} else if (res.msg == '您还有未服务的订单,请先完成!') {
uni.showToast({
title: res.msg,
icon: 'none'
});
} else if (res.msg == 'success') {
uni.showToast({
title: '退还成功',
icon: 'none'
});
uni.switchTab({
url: '/pages/my/index'
})
}
});
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
}
}
},
getUserInfo() {
this.$Request.get("/app/user/selectUserById").then(res => {
if (res.code == 0) {
this.avatar = res.data.avatar ? res.data.avatar : '../../static/logo.png'
uni.setStorageSync('avatar', res.data.avatar)
if (res.data.bankCard) {
this.bankCard = res.data.bankCard
}
}
});
},
// 提现手续费
getCharge() {
this.$Request.get("/app/common/type/152").then(res => {
if (res.code == 0) {
this.charge = res.data.value
this.placeholder = '服务费:' + this.charge * 100 + '%' + ',最低提现:' +
this.minMoney * 1 + ',最高提现:' + this.maxMoney * 1
}
});
},
// 最低提现额度
getMinMoney() {
this.$Request.get("/app/common/type/112").then(res => {
if (res.code == 0) {
this.minMoney = res.data.value
this.placeholder = '服务费:' + this.charge * 100 + '%' + ',最低提现:' +
this.minMoney * 1 + ',最高提现:' + this.maxMoney * 1
}
});
},
// 最高提现额度
getMaxMoney() {
this.$Request.get("/app/common/type/153").then(res => {
if (res.code == 0) {
this.maxMoney = res.data.value
this.placeholder = '服务费:' + this.charge * 100 + '%' + ',最低提现:' +
this.minMoney * 1 + ',最高提现:' + this.maxMoney * 1
}
});
},
// 金元比例
getRatio() {
this.$Request.get("/app/common/type/154").then(res => {
if (res.code == 0 && res.data && res.data.value) {
this.ratio = res.data.value
this.placeholder = '服务费:' + this.charge * 100 + '%' + ',最低提现:' +
this.minMoney * 1 + ',最高提现:' + this.maxMoney * 1
this.wallet.forEach(re => {
re.num = re.price * res.data.value
})
}
});
},
cut(e) {
this.title_color = e
},
goNav(url) {
uni.navigateTo({
url
})
},
active(e) {
this.wallet.forEach(res => {
if (res.id == e.id) {
res.isSelect = true
this.thisSelect = e
} else {
res.isSelect = false
}
})
},
// 我的余额
getMoney() {
var data={
userType:'2'
}
this.$Request.get("/app/userMoney/selectMyMoney").then(res => {
if (res.code == 0 && res.data) {
console.log(res.data.money)
this.currentRealIncome = res.data?.withdrawableAmount;
this.money = res.data.money
}
});
},
selectWay: function(item) {
this.openWay = item.id;
},
pay() {
let data = {
money: this.thisSelect.price
}
console.log(data)
// 获取订单编号
this.$Request.post("/app/appOrder/insertOrder", data).then(res => {
console.log(res, '********')
uni.showLoading({
title: '支付中...'
});
if (res.code == 0) {
// this.Profit = res.data
if (this.openWay == 2) {
// #ifdef APP-PLUS
// 微信APP支付 根据订单id获取支付信息
this.$Request.post("/app/wxPay/payAppOrder", {
id: res.data.id
}).then(ret => {
this.isCheckPay(ret.code, 'wxpay', JSON.stringify(ret.data));
});
// #endif
// #ifdef MP-WEIXIN
// 微信小程序支付
this.$Request.post('/app/wxPay/wxPayJsApiOrder', {
orderId: res.data.id
}).then(ret => {
uni.hideLoading()
uni.requestPayment({
provider: 'wxpay',
timeStamp: ret.data.timestamp,
nonceStr: ret.data.noncestr,
package: ret.data.package,
signType: ret.data.signType,
paySign: ret.data.sign,
success: function(suc) {
console.log('success:' + JSON.stringify(suc));
uni.showToast({
title: '支付成功',
icon: 'success'
})
setTimeout(d => {
uni.navigateBack(1)
}, 1000);
},
fail: function(err) {
console.log('fail:' + JSON.stringify(err));
uni.showToast({
title: '支付失败',
icon: 'none'
})
}
});
});
// #endif
// #ifdef H5
let ua = navigator.userAgent.toLowerCase();
if (ua.indexOf('micromessenger') !== -1) {
this.$Request.post('/app/wxPay/wxPayMpOrder?orderId=' + res.data.id).then(res => {
if (res.code == 0) {
this.callPay(res.data);
} else {
uni.showToast({
icon: 'none',
title: '支付失败!'
});
}
});
} else {
this.$Request.post('/app/aliPay/payOrder?orderId=' + res.data.id).then(
res => {
if (res.code === 0) {
const div = document.createElement('div')
div.innerHTML = res.data //此处form就是后台返回接收到的数据
document.body.appendChild(div)
document.forms[0].submit()
uni.showToast({
title: '支付成功',
icon: 'success'
})
setTimeout(d => {
uni.navigateBack(1)
}, 1000);
} else {
uni.showToast({
icon: 'none',
title: '支付失败!'
});
}
});
}
// #endif
} else {
// APP支付宝支付
this.$Request.post("/app/aliPay/payApp", {
id: res.data.id
}).then(ret => {
console.log(ret)
this.isCheckPay(ret.code, 'alipay', ret.data);
});
}
}
});
},
callPay: function(response) {
if (typeof WeixinJSBridge === "undefined") {
if (document.addEventListener) {
document.addEventListener('WeixinJSBridgeReady', this.onBridgeReady(response), false);
} else if (document.attachEvent) {
document.attachEvent('WeixinJSBridgeReady', this.onBridgeReady(response));
document.attachEvent('onWeixinJSBridgeReady', this.onBridgeReady(response));
}
} else {
this.onBridgeReady(response);
}
},
onBridgeReady: function(response) {
let that = this;
if (!response.package) {
return;
}
console.log(response, '++++++++')
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId": response.appid, //公众号名称,由商户传入
"timeStamp": response.timestamp, //时间戳自1970年以来的秒数
"nonceStr": response.noncestr, //随机串
"package": response.package,
"signType": response.signType, //微信签名方式:
"paySign": response.sign //微信签名
},
function(res) {
console.log(res, '/*-/*-/*-')
if (res.err_msg === "get_brand_wcpay_request:ok") {
// 使用以上方式判断前端返回,微信团队郑重提示:
//res.err_msg将在用户支付成功后返回ok但并不保证它绝对可靠。
uni.showLoading({
title: '支付成功'
});
setTimeout(function() {
uni.hideLoading();
}, 1000);
} else {
uni.hideLoading();
}
WeixinJSBridge.log(response.err_msg);
}
);
},
isCheckPay(status, name, order) {
if (status == 0) {
this.setPayment(name, order);
} else {
uni.hideLoading();
uni.showToast({
title: '支付信息有误',
icon: 'none'
});
}
},
setPayment(name, order) {
console.log('*-*-*')
uni.requestPayment({
provider: name,
orderInfo: order, //微信、支付宝订单数据
success: function(res) {
console.log(res)
uni.hideLoading();
uni.showLoading({
title: '支付成功'
});
setTimeout(d => {
uni.navigateBack(1)
}, 1000);
},
fail: function(err) {
console.log(err)
uni.hideLoading();
},
complete() {
uni.hideLoading();
}
});
},
// 提现
cashMoney() {
if (!this.moneyNum) {
uni.showToast({
icon: 'none',
title: '请输入提现金额'
})
return
}
if (this.moneyNum == 0 || this.moneyNum < 100) {
uni.showToast({
icon: 'none',
title: '最低提现金额不能少于100元'
})
return
}
if (this.moneyNum > this.money * 1) {
uni.showToast({
icon: 'none',
title: '您的余额不足'
})
return
}
if (this.withdrawalAmountNumType % 100 !== 0) {
this.$nextTick(() => {
this.moneyNum = "";
this.withdrawalAmountText = "不支持零钱取现,只能进行整百元的操作";
uni.showToast({
title: "不支持零钱提现,只能进行整百元的操作",
icon: "none",
duration: 2000,
})
})
return;
}
// if (this.moneyNum*1+this.charge*this.moneyNum > this.money*1) {
// uni.showToast({
// icon: 'none',
// title: '您的手续费不足'
// })
// return
// }
let zhiFuBao = uni.getStorageSync('zhiFuBao')
let zhiFuBaoName = uni.getStorageSync('zhiFuBaoName')
if (!zhiFuBao && !zhiFuBaoName && this.openWay == 1) {
uni.navigateTo({
url: '/my/wallet/zhifubao'
})
return
}
if (!this.bankCard && this.openWay == 2) {
uni.navigateTo({
url: '/my/wallet/yinhangka'
})
return
}
let that = this
that.sp = (that.moneyNum * this.charge).toFixed(2)
uni.showModal({
title: '提示',
content: '本次提现' + that.moneyNum + '元,服务费' + this.sp + '元,是否确认提现?',
success: function(res) {
if (res.confirm) {
that.$Request.get("/app/cash/cashMoney", {
money: that.moneyNum,
userType: 2,
classify: that.openWay
}).then(res => {
if (res.code == 0) {
uni.showToast({
icon: 'none',
title: '提现申请成功,请耐心等待!'
})
that.moneyNum = null
} else {
uni.showToast({
icon: 'none',
title: res.msg
})
}
that.getMoney()
});
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
}
}
}
</script>
<style>
page {
background-color: #F2F2F2;
}
.bg {
background-color: #FFFFFF;
}
.margin-frame{
border:1rpx dashed #fe912e;
border-radius: 12rpx;
padding: 15rpx;
color: #fe912e;
}
.dhjsbg {
width: 100%;
height: 166px;
padding: 28px;
background:#f6f6f6 url('../../static/index/fun_banner4.png');
background-repeat: no-repeat;
background-size: 100% 100%;
display: flex;
flex-direction: column;
}
.active {
border: 1px solid #096f4b !important;
color: #096f4b !important;
}
.title_btn {
height: 78upx;
line-height: 78upx;
/* background: #f7f7f7; */
}
.btn {
background: linear-gradient(90deg, #019C88, #28BA92, #35C495);
color: #FFFFFF;
margin: 16rpx 0;
width: 100%;
border-radius: 50rpx;
height: 78rpx;
line-height: 78rpx;
font-size: 30rpx;
text-align: center;
}
.bgCol2 {
color: #096f4b;
}
.haha {
display: flex;
/* justify-content: space-around; */
}
.inner {
margin-left: 20px;
}
/* .text-lg text {
font-weight: 540;
} */
</style>