oil-station/gasStation-uni/pagesHome/oilRecharge/oilRecharge.vue
2024-01-19 17:08:34 +08:00

729 lines
18 KiB
Vue

<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 style="display: flex;align-items: center;">
<view class="">{{yname}}</view>
<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-popup :show="show" :round="10" mode="bottom" @close="close" @open="open">
<view class="bottom-bb">
<view class="" v-for="(item,index) in columns" :key="index" style="margin-bottom: 10px;">
<u-button @click="confirm(item)" type="primary" :plain="true" :text="item.realName"></u-button>
</view>
<!-- <view class="" v-for="(item,index) in columns" :key="index">
{{item.realName}}
</view> -->
</view>
</u-popup>
<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 {
query: {
storeId: ''
},
yname: '',
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");
console.log("5555555555555", this.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();
}
},
onShow() {
this.getStaffList()
},
methods: {
open() {
console.log();
},
close() {
this.show = false
},
//囤油卡充值
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) {
request({
url: "/business/marketingActivity/activeExchange/cardValueOrders",
method: 'put',
data: {
"orderNo": res.data.data.orderNo,
"status": "payFail"
},
}).then((res) => {
uni.showToast({
title: "支付失败!",
icon: "error"
})
})
console.log('fail:', 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.id
this.yname = e.realName
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',
params: {
storeId: uni.getStorageSync("storeId")
}
}).then(res => {
this.columns = res.data.records
// 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%;
}
.bottom-bb {
width: 100%;
height: 200px;
box-sizing: border-box;
padding: 10px;
background: white;
overflow: scroll;
}
</style>