<template> <view class="content"> <view class="container"> <headers :titles="titles"><u-icon name="arrow-left" color="#fff" size="22"></u-icon></headers> <view class="input-box"> <view style="margin-right: 10px;">总收款金额</view> <view class="">{{AmountCollected}}</view> <!-- <input type="number" /> --> </view> <view class="input-box"> <view style="margin-right: 10px;">优惠后收款金额</view> <view class="">{{paymentAmount}}</view> <!-- <input type="number" /> --> </view> <view class="input-box"> <view style="margin-right: 10px;">优惠金额</view> <view class="">{{DiscountAmount}}</view> <!-- <input type="number" /> --> </view> <view class="input-box"> <view style="margin-right: 10px;">储值卡消费金额</view> <view class="">{{balanceRedece}}</view> <!-- <input type="number" /> --> </view> <!-- <view class="title_">选择油号</view> <view class="warp-box"> <view class="w-box" :class="{ 'acv' : oilIndex == index }" @click="getoilIndex(index)" v-for="(item,index) in oilList" :key="index"> {{item}} </view> </view> --> <view class="title_">选择油枪</view> <view class="warp-box"> <view class="w-box" :class="{ 'acv' : spearIndex == index }" v-for="(item,index) in spearList" :key="index" @click="getspearIndex(index,item)"> {{item.gunName}} </view> </view> <view style="width: 100%; height: 500px; "></view> <view class="bai-kuang"> <view class="kuang-top"> <view class="w-shi" @click="show = true">添加备注</view> <view style="color: #E8E8E8;"> | </view> <view class="w-shi" @click="gosearchVip()">{{userInfo ? userInfo.mobile : '搜索会员'}}</view> </view> <!-- 键盘区域 --> <view class="num-box"> <view class="k-box" v-for="(item,index) in keyboardList" :key="index" @click="KeyboardLogic(item)"> <!-- pd- --> <view class="CentralLogic" v-if="item.type == 'num' "> {{item.value}} </view> <view class="Centralimg" v-if="item.type == 'img' "> <view class="icon-box"> <image src="/static/imgs/smzf.png" v-if="item.value == 'smzf' " @click="scanQrcode()"> </image> <image src="/static/imgs/skzf.png" v-if="item.value == 'skzf' " @click="swipeCard()"> </image> <image src="/static/imgs/hyzf.png" v-if="item.value == 'hyzf' " @click="scanAppletQrCode()"></image> <image src="/static/imgs/xjzf.png" v-if="item.value == 'xjzf' " @click="cashPay()"> </image> <image src="/static/imgs/scjian.png" style="height: 30px;" v-if="!item.value"></image> </view> <view class="icon-size" v-if="item.value == 'smzf' " @click="scanQrcode()">扫码支付</view> <view class="icon-size" v-if="item.value == 'skzf' " @click="swipeCard()">刷卡支付</view> <view class="icon-size" v-if="item.value == 'hyzf' " @click="scanAppletQrCode()">会员支付</view> <view class="icon-size" v-if="item.value == 'xjzf' " @click="cashPay()">现金支付</view> </view> </view> </view> <!-- 垫子 --> <view style="width: 100%; height: 25px; "></view> </view> <u-popup :show="show" mode="bottom" :round="10" @close="close"> <view class="bottom_box"> <u--textarea v-model="value1" placeholder="请输入内容"></u--textarea> <view style="width: 100%; display: flex;align-items: center;justify-content: space-around;margin-top: 20px; "> <view class="anniuq" @click="submitRemark()">确定</view> <view class="anniux" @click="close">取消</view> </view> </view> </u-popup> </view> </view> </template> <script> import request from "../../utils/request"; import headers from '../../components/header/headers.vue' export default { data() { return { value1: '', show: false, userId: "", userInfo: "", AmountCollected: "", paymentAmount: "", DiscountAmount: 0, balance: 0, balanceRedece: 0, // 是否使用囤油卡 isOilStorageCard: false, authCode: "", oilName: "", tankId: "", oilPrice: "", oilGunNum: "", oilCardAmount: 0, levelAmount: 0, activeAmount: 0, // 支付订单信息 oilOrder: {}, titles: "收款", oilList: [ "92#", "95#", "98#" ], oilIndex: 0, spearList: [ "1号枪", "2号枪", "3号枪" ], spearIndex: 0, orderNo: "", preferentialData: {}, // 键盘 keyboardList: [{ value: '1', type: 'num' }, { value: '2', type: 'num' }, { value: '3', type: 'num' }, { value: 'smzf', type: 'img' }, { value: '4', type: 'num' }, { value: '5', type: 'num' }, { value: '6', type: 'num' }, { value: 'skzf', type: 'img' }, { value: '7', type: 'num' }, { value: '8', type: 'num' }, { value: '9', type: 'num' }, { value: 'hyzf', type: 'img' }, { value: '0', type: 'num' }, { value: '.', type: 'num' }, { value: null, type: 'img' }, { value: 'xjzf', type: 'img' }, ] } }, onLoad(e) { if (e.userId) { this.userId = e.userId this.AmountCollected = e.AmountCollected this.getUser(); } }, onShow() { // this.actList = ["1", "1", "1", "1", "1", ] // this.status = "nomore" 底部刷新结束 this.getOilGun() }, onPullDownRefresh() { console.log("刷新"); uni.stopPullDownRefresh() }, onReachBottom() { // this.show = true setTimeout(() => { console.log("加载执行"); }, 2000) }, components: { headers }, methods: { // 确定备注 submitRemark() { this.show = false this.oilOrder.remark = this.value1 }, close() { this.show = false }, // 获取优惠信息 getPaymentPreferential() { if (!this.AmountCollected || !this.userInfo) { return; } this.DiscountAmount = 0; let type = 0; if (this.balanceRedece == 0) { type = 2 } else { type = 0 } let map = { //支付类型 0:储值卡 1:囤油卡 type: type, //支付金额 amount: this.AmountCollected, //可用油品Id oilId: this.oilName, //店铺id storeId: uni.getStorageSync("storeId"), //会员等级 mtUserLevel: this.userInfo.gradeId, //用户id userId: this.userInfo.id, } request({ url: "business/marketingActivity/activeExchange/getPaymentActive", method: 'get', params: map, }).then((res) => { this.preferentialData = res.data if (res.data.memberFavorableAmount) { this.DiscountAmount += res.data.memberFavorableAmount this.oilOrder.levelAmount = res.data.memberFavorableAmount } if (res.data.cardFavorableAmount) { this.DiscountAmount += res.data.cardFavorableAmount } if (res.data.activeFavorableAmount) { this.DiscountAmount += res.data.activeFavorableAmount this.oilOrder.activeAmount = res.data.activeFavorableAmount } this.countAmount() }) }, // 获取用户信息 getUser() { request({ url: '/business/userManager/user/' + this.userId, method: 'get', }).then((res) => { this.userInfo = res.data this.balance = res.data.cardBalance this.getPaymentPreferential() }) }, // 计算收款金额 countAmount() { if (this.balance >= (this.AmountCollected - this.DiscountAmount - this.oilCardAmount)) { this.balanceRedece = this.AmountCollected - this.DiscountAmount - this.oilCardAmount this.paymentAmount = 0 } else { this.balanceRedece = this.balance this.paymentAmount = (this.AmountCollected - this.DiscountAmount - this.balance - this.oilCardAmount) .toFixed(2) } }, // 二维码 scanQrcode() { if (!this.AmountCollected) { uni.showToast({ title: "请先输入收款金额", icon: "none" }) return; } let _this = this uni.scanCode({ onlyFromCamera: true, success: (res) => { console.log('扫描二维码成功,结果:' + JSON.stringify(res) + res.result); _this.authCode = res.result _this.payMent() }, error: (res) => { console.log('扫描二维码出现错误') } }) }, // 扫描小程序会员码支付 scanAppletQrCode() { if (!this.AmountCollected) { uni.showToast({ title: "请先输入收款金额", icon: "none" }) return; } this.oilOrder.payType = "APPLET_CODE" this.oilOrder.orderNo = this.orderNo this.oilOrder.orderAmount = this.AmountCollected this.oilOrder.payAmount = this.paymentAmount this.oilOrder.discountAmount = this.DiscountAmount this.oilOrder.balanceAmount = this.balanceRedece this.oilOrder.isOilStorageCard = this.isOilStorageCard this.oilOrder.isUseChildCard = this.isUseChildCard this.oilOrder.activeId = this.preferentialData.activeId this.oilOrder.cardFavorableId = this.preferentialData.cardFavorableId this.oilOrder.recordId = this.preferentialData.recordId this.oilOrder.type = this.preferentialData.type this.oilOrder.balanceAmountSale = this.balanceRedece this.oilOrder.levelAmount = this.levelAmount this.oilOrder.activeAmount = this.activeAmount this.oilOrder.oils = this.oilName this.oilOrder.tankId = this.tankId this.oilOrder.oilPrice = this.oilPrice this.oilOrder.oilCardAmount1 = this.oilCardAmount this.oilOrder.userId = this.userInfo.id this.oilOrder.oilGunNum = this.oilGunNum this.oilOrder.payUser = this.userInfo.mobile let _this = this uni.scanCode({ onlyFromCamera: true, success: (res) => { console.log('扫描二维码成功,结果:' + JSON.stringify(res) + res.result); _this.authCode = res.result _this.oilOrder.authCode = _this.authCode request({ url: '/business/oilOrder/scanAppletQrCodePos', method: 'post', data: _this.oilOrder }).then((resp) => { if (resp.data.success == 'success') { _this.reset() // uni.showToast({ // title: "支付成功", // icon: "success" // }) uni.navigateTo({ url: "/pagesHome/PaymentResults/PaymentResults?orderNo=" + resp.data.orderNo }) } else { uni.showToast({ title: resp.data.error, icon: "none" }) } }) }, error: (res) => { console.log('扫描二维码出现错误') } }) }, // 刷卡支付 swipeCard() { uni.showToast({ title: "暂未开发", icon: "error" }) }, // 现金支付 cashPay() { if (!this.AmountCollected) { uni.showToast({ title: "请先输入收款金额", icon: "none" }) return; } this.oilOrder.payType = "CASH" this.payMent() }, getOilCardAmount() { if (!this.userInfo) { return; } request({ url: '/business/marketingActivity/cardFuelRecord/getRecordByUserId', method: 'get', params: { mtUserId: this.userInfo.id } }).then((res) => { res.data.forEach(item => { if (item.oilType == this.oilName) { let liters = this.AmountCollected / this.oilPrice this.oilCardAmount = item.lockupPrice * liters } }) }) }, // 调用支付接口 payMent() { this.oilOrder.orderNo = this.orderNo this.oilOrder.orderAmount = this.AmountCollected this.oilOrder.payAmount = this.paymentAmount this.oilOrder.discountAmount = this.DiscountAmount this.oilOrder.balanceAmount = this.balanceRedece this.oilOrder.isOilStorageCard = this.isOilStorageCard this.oilOrder.isUseChildCard = this.isUseChildCard this.oilOrder.activeId = this.preferentialData.activeId this.oilOrder.cardFavorableId = this.preferentialData.cardFavorableId this.oilOrder.recordId = this.preferentialData.recordId this.oilOrder.type = this.preferentialData.type this.oilOrder.balanceAmountSale = this.balanceRedece this.oilOrder.levelAmount = this.levelAmount this.oilOrder.activeAmount = this.activeAmount this.oilOrder.authCode = this.authCode this.oilOrder.oils = this.oilName this.oilOrder.tankId = this.tankId this.oilOrder.oilPrice = this.oilPrice this.oilOrder.oilCardAmount1 = this.oilCardAmount this.oilOrder.oilGunNum = this.oilGunNum if (this.userInfo) { this.oilOrder.userId = this.userInfo.id this.oilOrder.payUser = this.userInfo.mobile } request({ url: "business/oilOrder/addOrderPos", method: 'post', data: this.oilOrder }).then((res) => { this.orderNo = res.data.orderNo if (res.data.code == 1) { this.reset() // uni.showToast({ // title: "支付成功", // icon: "success" // }) uni.navigateTo({ url: "/pagesHome/PaymentResults/PaymentResults?orderNo=" + this.orderNo }) } else if (res.data.code == 2) { uni.showToast({ title: "请先配置商户号", icon: "none" }) } else { uni.showToast({ title: "支付失败,请联系管理员", icon: "none" }) } }) }, // 重置 reset() { this.userId = ""; this.userInfo = ""; this.AmountCollected = ""; this.DiscountAmount = 0; this.balanceRedece = 0; this.isOilStorageCard = false; this.balanceRedece = 0; this.authCode = ""; this.oilName = ""; this.tankId = ""; this.oilPrice = ""; this.oilCardAmount = 0; this.paymentAmount = 0; this.levelAmount = 0; this.activeAmount = 0; this.getOilGun() }, // 获取油枪信息 getOilGun() { request({ url: 'business/petrolStationManagement/oilGun/queryOilGunList', method: 'get', }).then((res) => { this.spearList = res.data if (this.spearList.length > 0) { this.oilGunNum = this.spearList[0].id this.oilName = this.spearList[0].oilName this.tankId = this.spearList[0].tankId this.oilPrice = this.spearList[0].oilPrice } }) }, // 跳会员 gosearchVip() { uni.navigateTo({ url: '/pagesHome/searchVip/searchVip?AmountCollected=' + this.AmountCollected }) }, // 键盘方法 KeyboardLogic(data) { // console.log(data); if (data.type == 'num') { this.AmountCollected = this.AmountCollected + data.value if (!this.userInfo) this.paymentAmount = this.AmountCollected this.getPaymentPreferential() } if (data.type == 'img') { if (!data.value) { this.AmountCollected = this.AmountCollected.substring(0, this.AmountCollected.length - 1); } // if (data.value == 'skzf') { // uni.navigateTo({ // url: '/pagesHome/CardPayment/CardPayment' // }) // } } }, getoilIndex(num) { this.oilIndex = num }, getspearIndex(num, data) { this.spearIndex = num this.oilGunNum = data.id this.oilName = data.oilName this.tankId = data.tankId this.oilPrice = data.oilPrice this.getPaymentPreferential() }, 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: 100vh; } .container { width: 100%; background: #0864e9; box-sizing: border-box; padding-top: 88px; } .input-box { width: 95%; margin: 10px auto; border-bottom: 1px solid #fff; box-sizing: border-box; padding: 10px 0px; font-size: 20px; font-weight: bold; color: #fff; display: flex; align-items: center; } .title_ { font-weight: bold; font-size: 16px; color: #FFFFFF; width: 95%; margin: 10px auto; } .warp-box { width: 95%; margin: 10px auto; display: flex; align-items: center; flex-wrap: wrap; } .w-box { width: 60px; height: 32px; background: #FFFFFF; border-radius: 6px 6px 6px 6px; display: flex; align-items: center; justify-content: center; font-weight: 500; font-size: 14px; color: #333333; margin-right: 10px; } .acv { background: #E8F5FF !important; color: #0864E9 !important; } .s-h-box { width: 100%; border-top: 1px solid #E8E8E8; display: flex; align-items: center; justify-content: space-between; } .bai-kuang { width: 100%; position: fixed; bottom: 0px; left: 0px; background: #fff; border-radius: 18px 18px 0px 0px; overflow: hidden; } .num-box { width: 100%; display: flex; flex-wrap: wrap; justify-content: space-between; } .k-box { width: 24.5%; height: 80px; display: flex; align-items: center; justify-content: center; border-right: 1px solid #E8E8E8; border-top: 1px solid #E8E8E8; } .CentralLogic { font-weight: bold; font-size: 30px; color: #333333; } .Centralimg {} .icon-box { width: 40px; height: 40px; margin: 5px auto; image { width: 100%; height: 100%; } } .icon-size { font-size: 14px; color: #333333; text-align: center; } .kuang-top { width: 100%; display: flex; align-items: center; justify-content: space-between; } .w-shi { width: 50%; display: flex; align-items: center; justify-content: center; color: #0864E9; box-sizing: border-box; padding: 15px; } .bottom_box { width: 100%; background: #fff; box-sizing: border-box; padding: 15px; border-radius: 10px 10px 0px 0px; } .anniuq { width: 100px; height: 35px; background: #0864E9; display: flex; align-items: center; justify-content: center; color: #fff; border-radius: 50px; } .anniux { width: 100px; height: 35px; background: #FD504E; display: flex; align-items: center; justify-content: center; color: #fff; border-radius: 50px; } </style>