oil-station/gasStation-uni/pagesHome/oilRecharge/oilRecharge.vue
2024-01-04 15:01:20 +08:00

674 lines
16 KiB
Vue
Raw 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 class="content">
<view class="container">
<view class="my-header">
<view class="my-icons" @click="goback"> <uni-icons type="left" size="16"></uni-icons> </view>
<view class="my-text">油卡充值</view>
<view class="my-icons"></view>
</view>
<!-- 顶部区域 -->
<view class="tap-box">
<view class="box-tap" :class="{ 'act' :actinput == index }" v-for="(item,index) in taplist" :key="index"
@click="getindex(index)">
<view class="title">{{item.title}}</view>
<view class="gang" :class="{ 'actgang' : actinput == index }"></view>
</view>
</view>
<!-- 储值充值 -->
<view class="boxback" v-if="actinput == 0">
<view class="box-cz">
<view class="box-jg" :class="{ 'actbox' : actindex == index }" v-for="(item,index) in cardValueList"
:key="index"
@click="xzindex(index,item.rechargeBalance,item.fringeBenefit,item.giftBalance,item.points,item.growthValue,item.count,item.id)">
<view class="s-title" :class="{ 'actsize' : actindex == index }">¥ <text
style="font-weight: bold;"></text>{{item.rechargeBalance}}</view>
<view class="min-size" :class="{ 'actsize' : actindex == index }">售价¥{{item.rechargeBalance}}
</view>
</view>
</view>
<view class="box-hui">
<view style="margin-bottom: 15px;">充值{{text}}元权益</view>
<view class="huisize" v-for="(item,index) in shuomingList" :key="index">
{{index+1}}.{{item || "" }}
</view>
</view>
<view class="box-gang" @click="show = true">
<view class="">推荐员工</view>
<view class=""></view>
<view class="">
<uni-icons type="right" size="14"></uni-icons>
</view>
<!-- 底部 -->
</view>
<view class="bottom-box">
<view class="anniu" @click="addValueCarRecords()">
<text>立即充值</text>
</view>
<view class="dibu" @click="goRechargeRecords()">
<view class="">充值记录</view>
<uni-icons type="right" color="#1678ff" size="14"></uni-icons>
</view>
<view class="box-hui">
<view style="margin-bottom: 15px;">服务说明</view>
<view class="huisize">1.该服务为储蓄卡直充服务,仅限本站使用</view>
<view class="huisize">2.请确认充值类型正确后再付款,一经充值不支持退款; </view>
</view>
</view>
</view>
<!-- 囤油充值 -->
<view class="boxback" v-if="actinput == 1">
<view class="box-cz">
<view class="box-jg" :class="{ 'actbox' : actindex == index }" v-for="(item,index) in cardFuleList"
:key="index" @click="fuleindex(index,item.rechargeBalance,item.points,item.id)">
<view class="s-title" :class="{ 'actsize' : actindex == index }">油品:{{item.type}}
</view>
<view class="s-title" :class="{ 'actsize' : actindex == index }">油号:{{item.oilType}}
</view>
<view class="min-size" :class="{ 'actsize' : actindex == index }">单价¥<text
style="font-weight: bold;"></text>{{item.incomeLitres}}元/升</view>
<view class="min-size" :class="{ 'actsize' : actindex == index }">总价¥{{item.rechargeBalance}}元
</view>
<view class="min-size" :class="{ 'actsize' : actindex == index }">升数:{{item.incomeLitres}}L
</view>
</view>
</view>
<view class="box-hui">
<view style="margin-bottom: 15px;">充值{{text}}元权益</view>
<view class="huisize" v-for="(item,index) in shuomingFList" :key="index">
{{index+1}}.{{item || "" }}
</view>
</view>
<view class="box-gang">
<view class="">推荐员工</view>
<view class=""></view>
<view class="" @click="show = true">
<uni-icons type="right" size="14"></uni-icons>
</view>
</view>
<!-- 底部 -->
<view class="bottom-box">
<view class="anniu" @click="addFuleCarRecords()">
<text>立即充值</text>
</view>
<view class="dibu" @click="goRechargeRecords()">
<view class="">充值记录</view>
<uni-icons type="right" color="#1678ff" size="14"></uni-icons>
</view>
<view class="box-hui">
<view style="margin-bottom: 15px;">服务说明</view>
<view class="huisize">1.该服务为储蓄卡直充服务仅限本站使用</view>
<view class="huisize">2.请确认充值类型正确后再付款一经充值不支持退款 </view>
</view>
</view>
</view>
<!-- 礼品兑换 -->
<view class="boxback" style="box-sizing: border-box; padding: 1px; " v-if="actinput == 2 ">
<view class="inputbox">
<view class="cadname">卡号</view>
<input type="text" v-model="number" placeholder="请输入礼品卡卡号" />
</view>
<view class="inputbox">
<view class="cadname">卡密</view>
<input type="text" v-model="cardPassword" placeholder="请输入礼品卡卡密" />
</view>
<view class="bottom-box">
<view class="anniu" @click="exchangeGift()">
<text>立即兑换</text>
</view>
<view class="dibu" @click="golpk()">
<view class="">兑换记录</view>
<uni-icons type="right" color="#1678ff" size="14"></uni-icons>
</view>
<view class="box-hui">
<view style="margin-bottom: 15px;">服务说明</view>
<view class="huisize">1.该服务为储蓄卡直充服务,仅限本站使用</view>
<view class="huisize">2.请确认充值类型正确后再付款,一经充值不支持退款; </view>
</view>
</view>
</view>
<u-picker :show="show" :columns="columns" keyName="realName" @confirm="confirm" @cancel="cancel"></u-picker>
<u-modal :show="shows" :title="message" :content='money' @confirm="confirms()"></u-modal>
</view>
</view>
</template>
<script>
import request from '../../utils/request'
import {
getValue
} from "@dcloudio/uni-ui/lib/uni-forms/utils";
export default {
data() {
return {
chainStoreId: '',
cardRecordId: '',
cardFavorableId: '',
storeId: '',
staffId: '',
carValueId: '',
cardFuleId: '',
shows: false,
money: '',
message: '',
number: '',
cardPassword: '',
title: '',
actindex: 0,
actInput: 0,
index: 0,
text: '',
fringeBenefit: "",
giftBalance: "",
rechargeBalance: "",
incomeLitres: "",
lockupPrice: "",
type: "",
oilType: "",
points: "",
growthValue: "",
show: false,
shuomingList: [],
shuomingFList: [],
columns: [],
taplist: [{
title: '储值充值'
},
{
title: '囤油充值'
},
{
title: '礼品卡兑换'
},
],
cardValueList: [],
cardFuleList: [],
actinput: 0,
}
},
components: {},
onLoad(option) {
this.storeId = uni.getStorageSync("storeId");
this.chainStoreId = uni.getStorageSync('chainStoreId');
console.log("66666666666", this.chainStoreId);
this.actinput = option.id
this.cardFavorableId = option.cardFavorableId
this.cardRecordId = option.cardRecordId
console.log('11111111111111', this.cardRecordId);
if (option.id == 0) {
this.getValueCars();
}
if (option.id == 1) {
console.log("囤油");
this.getFuelCars();
}
this.getStaffList()
},
methods: {
//囤油卡充值
addFuleCarRecords() {
if (this.staffId == '') {
uni.showToast({
title: "员工为必填项",
icon: Error
})
return
}
if (this.carValueId == '') {
uni.showToast({
title: "囤油卡为必填项",
icon: Error
})
return
}
request({
url: 'business/marketingActivity/cardFuelRecord/addFuleCarRecords',
method: 'post',
data: {
payType: 'WECHAT',
mtStaffId: this.staffId,
id: this.carValueId,
storeId: this.storeId,
chainStoreId: this.chainStoreId,
cardFavorableId: this.cardFavorableId,
cardRecordId: this.cardRecordId
},
}).then(res => {
if (res.code === 200) {
let _this = this
console.log(res)
let payProvider = "wxpay"
_this.orderInfo = JSON.parse(res.data.reservedPayInfo);
uni.requestPayment({
// 微信支付provider: 'wxpay' 支付宝支付 'alipay'
provider: payProvider,
timeStamp: _this.orderInfo.timeStamp,
nonceStr: _this.orderInfo.nonceStr,
package: _this.orderInfo.package,
signType: 'MD5',
paySign: _this.orderInfo.paySign,
success: function(res) {
console.log('success:', res);
uni.reLaunch({
url: '/pagesRefuel/orderSuccess/index'
})
},
fail: function(err) {}
});
}
})
},
//储值卡充值
addValueCarRecords() {
if (this.staffId == '') {
uni.showToast({
title: "员工为必填项",
icon: Error
})
return
}
if (this.carValueId == '') {
uni.showToast({
title: "储值卡为必填项",
icon: Error
})
return
}
request({
url: 'business/marketingActivity/cardValueRecord',
method: 'post',
data: {
payType: 'WECHAT',
mtStaffId: this.staffId,
id: this.carValueId,
storeId: this.storeId,
chainStoreId: this.chainStoreId,
cardFavorableId: this.cardFavorableId,
cardRecordId: this.cardRecordId
},
}).then(res => {
if (res.code === 200) {
let _this = this
console.log(res)
let payProvider = "wxpay"
_this.orderInfo = JSON.parse(res.data.reservedPayInfo);
uni.requestPayment({
// 微信支付provider: 'wxpay' 支付宝支付 'alipay'
provider: payProvider,
timeStamp: _this.orderInfo.timeStamp,
nonceStr: _this.orderInfo.nonceStr,
package: _this.orderInfo.package,
signType: 'MD5',
paySign: _this.orderInfo.paySign,
success: function(res) {
console.log('success:', res);
uni.reLaunch({
url: '/pagesRefuel/orderSuccess/index'
})
},
fail: function(err) {
// request({
// url: "business/oilOrder/orderStatus",
// method: 'post',
// data: {
// "orderNo": res.data.data.orderNo,
// "status": "payFail"
// },
// }).then((res) => {
// uni.showToast({
// title: "支付失败!",
// icon: "error"
// })
// })
// console.log('fail:', err);
}
});
}
})
},
confirms() {
this.shows = false
},
confirm(e) {
console.log(e);
this.staffId = e.value[0].id
this.show = false
},
cancel() {
this.show = false
},
xzindex(index, text, fringeBenefit, giftBalance, points, growthValue, count, id) {
console.log(text);
this.shuomingList = []
this.carValueId = id
console.log(this.shuomingList);
if (text) {
this.text = text
}
if (fringeBenefit) {
this.shuomingList.push(fringeBenefit)
}
if (giftBalance) {
this.shuomingList.push('赠送' + giftBalance + '金额')
}
if (points) {
this.shuomingList.push('赠送' + points + '积分')
}
if (growthValue) {
this.shuomingList.push('赠送' + growthValue + '成长值')
}
if (count) {
this.shuomingList.push('赠送卡券:' + count + '张')
}
this.actindex = index
},
fuleindex(index, text, points, id) {
this.shuomingFList = [];
this.carValueId = id;
console.log("1111111111", this.carValueId)
console.log(this.shuomingFList);
if (text) {
this.text = text
}
if (points) {
this.shuomingFList.push('赠送' + points + '积分')
}
this.actindex = index
},
getindex(index) {
this.actinput = index
if (index == 0) {
this.getValueCars();
}
if (index == 1) {
this.getFuelCars();
}
},
goback() {
uni.navigateBack()
},
//储值卡
getValueCars() {
request({
url: 'business/marketingActivity/cardValue/appletL',
method: 'get',
data: {
activeStatus: '1',
storeId: this.storeId,
},
}).then(res => {
this.cardValueList = []
if (res.code == 200) {
this.cardValueList = res.data.records
console.log(res.data.records);
this.xzindex(0, res.data.records[0].rechargeBalance, res.data.records[0].fringeBenefit,
res.data.records[0].giftBalance, res.data.records[0].points, res.data.records[0]
.growthValue, res.data.records[0]
.count, res.data.records[0].id)
}
})
},
//囤油卡
getFuelCars() {
request({
url: 'business/marketingActivity/cardFuelDiesel/selectAllApplet',
method: 'get',
data: {
activeStatus: '1',
storeId: this.storeId,
},
}).then(res => {
this.cardValueList = []
if (res.code == 200) {
this.cardFuleList = res.data.records
this.fuleindex(0, res.data.records[0].rechargeBalance, res.data.records[0].points, res.data
.records[0].id)
}
})
},
//礼品卡兑换
exchangeGift() {
request({
url: '/business/marketingActivity/cardGift/exchange?number=' + this.number + "&cardPassword=" +
this.cardPassword,
method: 'get',
}).then(res => {
if (res.data.id == '' || res.data.id == null) {
this.shows = true
this.message = '兑换失败!',
this.money = ''
} else {
this.shows = true
this.message = '兑换成功!',
this.money = res.data.cardAmount + '元'
}
})
},
//礼品卡兑换记录
getGiftRecords() {
request({
url: '/business/marketingActivity/cardGift/selectAllRecords',
method: 'get',
}).then(res => {
console.log(res)
})
},
goRechargeRecords() {
uni.navigateTo({
url: '/pagesMy/Recharge/Recharge'
})
},
//获取本店员工列表
getStaffList() {
request({
url: '/business/member/staff/list',
method: 'get',
}).then(res => {
this.columns.push(res.data.records)
console.log("columns", this.columns);
})
},
golpk() {
uni.navigateTo({
url: '/pagesHome/RechargeRecords/RechargeRecords'
})
}
}
}
</script>
<style scoped lang="scss">
.content {
background: #f4f5f6;
}
.container {
width: 100%;
height: 100vh;
box-sizing: border-box;
padding-top: 88px;
}
.my-header {
width: 100%;
height: 88px;
background: #ffffff;
display: flex;
align-items: center;
justify-content: space-between;
color: #000;
box-sizing: border-box;
padding: 0px 15px;
padding-top: 40px;
.my-icons {
width: 20px;
}
position: fixed;
top: 0px;
}
.tap-box {
width: 100%;
height: 50px;
display: flex;
align-items: center;
background-color: #ffffff;
}
.box-tap {
width: 33%;
text-align: center;
}
.act {
color: #2979ff;
font-weight: bold;
}
.gang {
width: 25px;
height: 5px;
// background-color: #2979ff;
border-radius: 8px;
margin: 2px auto;
margin-top: 5px;
}
.actgang {
background-color: #2979ff;
}
.bottom-box {
width: 100%;
background-color: #ffffff;
padding: 10px;
box-sizing: border-box;
}
.anniu {
width: 95%;
height: 40px;
border-radius: 50px;
background: #1678ff;
display: flex;
align-items: center;
justify-content: center;
color: white;
margin: 15px auto;
}
.dibu {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
color: #1678ff;
font-size: 14px;
}
.box-hui {
width: 95%;
border-radius: 8px;
background: #f4f5f6;
box-sizing: border-box;
padding: 15px;
margin: 15px auto;
}
.huisize {
color: #a8a8a8;
font-size: 14px;
}
.box-cz {
flex-wrap: wrap;
display: flex;
width: 100%;
background: #ffffff;
}
.box-jg {
width: 30%;
border-radius: 8px;
border: 1px solid #e2e2e2;
box-sizing: border-box;
padding: 10px;
margin: 5px;
}
.s-title {
width: 100%;
text-align: center;
font-size: 12px;
font-weight: bold;
}
.min-size {
width: 100%;
font-size: 10px;
//color: #e2e2e2;
text-align: center;
}
.actbox {
border: 1px solid #1678ff;
background: #e7f1ff;
}
.actsize {
color: #1678ff !important;
}
.boxback {
width: 100%;
background: #ffffff;
box-sizing: border-box;
padding-bottom: 1px;
}
.box-gang {
width: 95%;
margin: 0 auto;
display: flex;
align-items: center;
justify-content: space-between;
}
.inputbox {
width: 95%;
margin: 10px auto;
display: flex;
// align-items: center;
}
.cadname {
width: 20%;
}
</style>