Files
tripellet-merchant/pages/verification/selectIntegral.vue
2023-06-06 17:11:04 +08:00

288 lines
7.1 KiB
Vue

<template>
<view class="content">
<custom :bgColor="'transparent'">
<template v-slot:content>
<view class="custom_content flex_ac">
<view class="custom_c_txt">マインポイント</view>
</view>
</template>
</custom>
<view class="main">
<view class="zon-box">
<view class="zon-tit">マインポイント</view>
<view class="zon-jifen"
><view class="img">
<image src="../../static/img/icon_28.png" /> </view
>{{ allIntegral }}</view
>
</view>
<view class="kou-box">
<view class="kou-tit"> ご利用ポイント数 </view>
<view class="kou-nr">
<view class="nr-left">
<input
type="number"
class="uni-input"
name="input"
v-model="userNum"
:style="{ color: userNum == 0 ? '#dbdbdb' : '#000000' }"
/>
</view>
<view class="nr-right">
<view class="txt">{{ $t("Point") }}</view>
<view @tap="allBtn" class="button"
>全部使う/{{ $t("全部使用") }}</view
>
</view>
</view>
<view class="kou-txt">ポイント利用上限 {{ integCap }}point</view>
</view>
<view @tap="btnOk" :class="['btn-btm', { 'btn-acv': userNum != 0 }]"
>確認/{{ $t("确认") }}</view
>
</view>
</view>
</template>
<script>
import { getWriteOffInfo } from "@/request/ticketReq.js";
import { getUserWallet } from "@/request/loginReq.js";
export default {
data() {
return {
userNum: "",
allIntegral: "",
heXiaoData: [],
integCap: "", // 计算后积分上限
poins_deduction: "", // 店铺设置的上限
};
},
onLoad(e) {
let storeId = uni.getStorageSync("store_obj").id;
let userId = uni.getStorageSync("customer_info")[0];
this.getListFn(storeId, userId);
this.getUserWalletFn(userId);
this.heXiaoData = uni.getStorageSync("heXiaoData");
console.log("heXiaoData", this.heXiaoData);
},
methods: {
btnOk() {
this.userNum = +this.userNum;
if (this.userNum == 0) return;
// 判断输入的积分是否超过上限
if (this.integCap < this.userNum) {
uni.showToast({
icon: "none",
title: this.$t(
"超出账号可使用积分上限,以帮你修正,请确认并再次点击按钮"
),
});
this.userNum = this.integCap;
return;
}
console.log("确定", this.userNum);
// 计算抵扣后的金额
// if (!!this.heXiaoData.dMoney) {
// 抵扣后的价格=总价-(积分抵扣+优惠券抵扣)
this.heXiaoData.dMoney =
this.heXiaoData.totalMoney - (this.userNum + this.heXiaoData.dTicket);
// } else {
// this.heXiaoData.dMoney = this.heXiaoData.totalMoney - this.userNum;
// }
// 抵扣的积分
this.heXiaoData.dIntegral = this.userNum;
uni.setStorageSync("heXiaoData", this.heXiaoData);
// uni.setStorageSync("use_point", this.userNum);
uni.navigateBack({
delta: 1,
});
},
// 获取用户积分
async getUserWalletFn(id) {
let res = await getUserWallet(id);
this.allIntegral = res.data.data.points;
getUserWallet;
console.log("钱包", res);
},
async getListFn(spid, userId) {
let res = await getWriteOffInfo({ shop_id: spid, user_id: userId });
this.poins_deduction = res.data.data.poins_deduction;
console.log("店铺上限", this.poins_deduction);
this.integCap = Math.round(
(this.poins_deduction.deduction_ratio / 100) *
this.heXiaoData.totalMoney
);
// 一个是对比消费金额计算出的积分上限,一个是店铺设置的积分上限
// -优先显示计算出的上限,如果计算出的上限超过店铺设置的上限,则显示店铺设置的上限
if (
this.poins_deduction.max_poins_deduction != 0 &&
this.poins_deduction.max_poins_deduction < this.integCap
) {
this.integCap = this.poins_deduction.max_poins_deduction;
}
console.log("计算后", this.integCap);
},
allBtn() {
// 可使用的积分上限
if (this.allIntegral > this.integCap) {
this.userNum = this.integCap;
} else {
this.userNum = this.allIntegral;
}
},
},
};
</script>
<style>
page {
background: linear-gradient(
rgba(160, 204, 87, 0.2) 0%,
rgba(223, 226, 0, 0.2) 100%
);
}
</style>
<style lang="scss" scoped>
page {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
}
.custom_content {
width: 500rpx;
justify-content: center;
}
.custom_c_txt {
font-size: 40rpx;
color: $step_color;
font-weight: 600;
}
.content {
display: flex;
flex: 1;
flex-direction: column;
overflow: auto;
background-color: #f8f9fb;
height: 100vh;
background: linear-gradient(
rgba(160, 204, 87, 0.2) 0%,
rgba(223, 226, 0, 0.2) 100%
);
background: linear-gradient(
rgba(160, 204, 87, 0.2) 0%,
rgba(223, 226, 0, 0.2) 100%
);
}
.main {
padding: 32rpx 30rpx 0;
.zon-box {
padding: 30rpx;
background-color: #fff;
border-radius: 16rpx;
margin-bottom: 30rpx;
.zon-tit {
color: #85bc6b;
font-weight: 600;
font-size: 28rpx;
margin-bottom: 8rpx;
}
.zon-jifen {
font-weight: 600;
font-size: 68rpx;
color: #000;
display: flex;
align-items: center;
.img {
width: 24px;
height: 24px;
border-radius: 50%;
margin-right: 10rpx;
image {
width: 100%;
height: 100%;
}
}
}
}
.kou-box {
padding: 30rpx;
background-color: #fff;
border-radius: 16rpx;
.kou-tit {
font-weight: 600;
font-size: 28rpx;
color: #85bc6b;
}
.kou-nr {
margin: 16rpx 0 20rpx;
border: 1px solid #85bc6b;
padding: 24rpx;
border-radius: 16rpx;
display: flex;
align-items: center;
.nr-left {
flex: 1;
input {
font-weight: 600;
font-size: 48rpx;
// color: #dbdbdb;
}
}
.nr-right {
display: flex;
align-items: center;
.txt {
font-weight: 400;
font-size: 36rpx;
color: #000;
}
.button {
padding: 20rpx 30rpx;
border-radius: 39rpx;
background: linear-gradient(90deg, #7eb96a 0%, #d3d722 100%);
margin-left: 24rpx;
color: #fff;
font-weight: 700;
}
}
}
.kou-txt {
font-weight: 600;
font-size: 28rpx;
color: #007ad7;
}
}
.btn-btm {
padding: 20rpx 0;
width: 560rpx;
background-color: #f2f2f2;
font-weight: 600;
font-size: 32rpx;
color: #acacac;
border-radius: 41rpx;
text-align: center;
margin: 0 auto;
margin-top: 60rpx;
&.btn-acv {
background: linear-gradient(90deg, #7eb96a 0%, #d3d722 100%);
color: #fff;
}
}
}
</style>