支付界面更新

This commit is contained in:
GaoHao
2024-08-03 10:50:38 +08:00
parent e1e501e150
commit 2b66e1d7f8
6 changed files with 86 additions and 1794 deletions

View File

@@ -87,6 +87,7 @@
//不同按键处理逻辑
// -1 代表无效按键,直接返回
if (num == -1) return false;
switch (String(num)) {
//小数点
case '.':
@@ -140,9 +141,8 @@
//处理数字
_handleNumberKey(num) {
if (this.money.length == 6) {
return
}
let S = this.money;
//如果有小数点且小数点位数不小于2
// if (S.indexOf('.') > -1 && S.substring(S.indexOf('.') + 1).length < 2)
@@ -157,6 +157,12 @@
// this.money = S + num;
// }
// }
console.log(this.money)
console.log(this.money,this.money.length)
if (this.money.length == 6) {
this.$emit('confirmEvent', this.money); //提交参数
return
}
},
//提交

View File

@@ -1,224 +0,0 @@
<template>
<!-- ref:唯一ref passwrdType密码样式pay keyInfo密码输入返回事件 -->
<u-popup :show="payPasswordShow" :round="20" mode="bottom" @close="payPasswordShow = false" height="500" :safeAreaInsetBottom="false">
<view class="pay-info-wrap">
<view class="info-wrap flex-between">
<view class="close" @click="showShopInfo = false">
<u-icon name="close" color="#999999" size="28"></u-icon>
</view>
<text class="title">请输入支付密码</text>
<view></view>
</view>
<view class="info-content">
<view style="margin-bottom: 128rpx;">
<view class="pay-title">
<text style="margin-top: 4rpx;"> </text>
<text>123</text>
</view>
<view class="pay-password" @click="onPayUp">
<view class="list">
<text v-show="passwordArr.length >= 1"></text>
</view>
<view class="list">
<text v-show="passwordArr.length >= 2"></text>
</view>
<view class="list">
<text v-show="passwordArr.length >= 3"></text>
</view>
<view class="list">
<text v-show="passwordArr.length >= 4"></text>
</view>
<view class="list">
<text v-show="passwordArr.length >= 5"></text>
</view>
<view class="list">
<text v-show="passwordArr.length >= 6"></text>
</view>
</view>
<!-- <view class="hint" @click="gopaypassword">
<text>忘记支付密码</text>
</view> -->
</view>
<!-- ref:唯一ref passwrdType密码样式pay keyInfo密码输入返回事件 -->
<cc-defineKeyboard ref="CodeKeyboard" passwrdType="pay" @KeyInfo="KeyInfo"></cc-defineKeyboard>
</view>
</view>
</u-popup>
</template>
<script>
export default {
props: {
listinfo: {
type: Object,
default () {
return {
}
}
},
},
components: {
},
data() {
return {
// AffirmStatus: 1,
payPasswordShow: true,
passwordArr: [],
oldPasswordArr: [],
newPasswordArr: [],
afPasswordArr: [],
};
},
onLoad() {
},
methods: {
// 忘记支付密码
gopaypassword() {
uni.pro.navigateTo('/pages/user/repairpassword')
},
/**
* 唤起键盘
*/
onPayUp() {
this.$refs.CodeKeyboard.show();
},
/**
* 支付键盘回调
* @param {Object} val
*/
KeyInfo(val) {
if (val.index >= 6) {
return;
}
// 判断是否输入的是删除键
if (val.keyCode === 8) {
// 删除最后一位
this.passwordArr.splice(val.index + 1, 1)
}
// 判断是否输入的是.
else if (val.keyCode == 190) {
// 输入.无效
} else {
this.passwordArr.push(val.key);
}
// uni.showModal({
// title: '温馨提示',
// content: '输入密码是 = ' + JSON.stringify(this.passwordArr)
// })
// 判断是否等于6
if (this.passwordArr.length === 6) {
// this.AffirmStatus = this.AffirmStatus + 1;
let str = ''
this.passwordArr.forEach(res => {
str += res
})
this.$emit('accountPayevent', str)
this.passwordArr = [];
}
// 判断到哪一步了
// if (this.AffirmStatus === 1) {
// this.oldPasswordArr = this.passwordArr;
// } else if (this.AffirmStatus === 2) {
// this.newPasswordArr = this.passwordArr;
// } else if (this.AffirmStatus === 3) {
// this.afPasswordArr = this.passwordArr;
// } else if (this.AffirmStatus === 4) {
// console.log(this.oldPasswordArr.join(''));
// console.log(this.newPasswordArr.join(''));
// console.log(this.afPasswordArr.join(''));
// uni.showToast({
// title: '修改成功',
// icon: 'none'
// })
// setTimeout(() => {
// uni.navigateBack();
// }, 2000)
// }
this.$forceUpdate();
}
}
}
</script>
<style lang="scss">
.page-total{
position: inherit;
}
/deep/ .page-total{
position: inherit;
}
.pay-info-wrap{
.info-wrap{
padding: 64rpx 30rpx 0 30rpx;
box-sizing: border-box;
.title{
align-self: center;
font-size: 32rpx;
color: #333;
font-weight: bold;
}
}
.info-content{
.pay-title {
display: flex;
align-items: flex-end;
justify-content: center;
font-weight: bold;
width: 100%;
font-size: 48rpx;
color: #333;
margin-top: 48rpx;
text {
font-size: 60rpx;
color: #333;
}
}
.pay-password {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 64rpx;
.list {
width: 88rpx;
height: 88rpx;
display: flex;
align-items: center;
justify-content: center;
border: 2rpx solid #999;
border-radius: 8rpx;
text {
font-size: 32rpx;
}
}
}
.hint {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100rpx;
text {
font-size: 28rpx;
color: #ccc;
}
}
}
}
</style>

View File

@@ -2,32 +2,31 @@
<view class="content">
<view style="margin-bottom: 128rpx;">
<view class="contenttext flex-center">
{{form.password.length == 6?'请再次确认支付密码':"请设置新密码,用于支付验证"}}
<text></text>
<text>{{payAmount}}</text>
</view>
<view class="contentbox flex-between">
<view class="contentboxitem flex-colum">
{{consumeFee.slice(0,1)}}
<text v-show="consumeFee.length >= 1"></text>
</view>
<view class="contentboxitem flex-colum">
{{consumeFee.slice(1,2)}}
<text v-show="consumeFee.length >= 2"></text>
</view>
<view class="contentboxitem flex-colum">
{{consumeFee.slice(2,3)}}
<text v-show="consumeFee.length >= 3"></text>
</view>
<view class="contentboxitem flex-colum">
{{consumeFee.slice(3,4)}}
<text v-show="consumeFee.length >= 4"></text>
</view>
<view class="contentboxitem flex-colum">
{{consumeFee.slice(4,5)}}
<text v-show="consumeFee.length >= 5"></text>
</view>
<view class="contentboxitem flex-colum">
{{consumeFee.slice(5,6)}}
<text v-show="consumeFee.length >= 6"></text>
</view>
</view>
</view>
<!-- <view class="" v-else>
</view> -->
<cwx-keyboard ref="keyboard" :pos="'inherit'" @confirmEvent="confirmEvent"
:money.sync="consumeFee"></cwx-keyboard>
</view>
@@ -38,167 +37,50 @@
components: {
cwxKeyboard
},
props: {
payAmount: {
default: 0,
type: Number
},
},
data() {
return {
isPwd: uni.cache.get('userInfo').isPwd,
form: {
mobile: uni.cache.get('userInfo').telephone,
password: '', //密码
payPassword: '', //二次密码
checkCode: ''
},
passwords: false,
payPasswords: false,
// 注册定时器 初始值
second: 60,
showText: true,
Recapture: '发送验证码',
consumeFee: '', //第一遍
consumeFees: '', //第二遍
money: ''
};
},
onLoad() {
console.log(uni.cache.get('userInfo').isPwd)
if (uni.cache.get('userInfo').isPwd != 0) {
uni.setNavigationBarTitle({
title: '忘记支付密码', // 标题文本,必须是字符串
});
}
},
watch: {
consumeFee(newVal, oldVal) {
if (this.form.password.length == 6) {
this.form.payPassword = newVal
if (this.form.payPassword.length == 6) {
this.userInfosavePayPassword()
}
} else {
this.form.password = newVal
if (this.form.password.length == 6) {
this.$refs.keyboard._handleClearKey() //清空
}
}
}
},
methods: {
confirmEvent(e) {
console.log(e)
confirmEvent(val) {
// uni.showModal({
// title: '温馨提示',
// content: '输入密码是 = ' + JSON.stringify(this.passwordArr)
// })
// 判断是否等于6
if (val.length === 6) {
this.$emit('accountPayevent', val)
this.money = "";
}
this.$forceUpdate();
},
async CodeRegister() {
const res = await this.api.phoneValidateCode({
// post 手机验证码
phone: this.form.mobile
});
if (res) {
uni.showToast({
title: '验证码获取成功',
icon: 'none'
});
// 定时器
this.showText = false;
this.Recapture = '重新获取';
var interval = setInterval(() => {
let times = --this.second;
this.second = times < 10 ? '0' + times : times; //小于10秒补 0
}, 1000);
setTimeout(() => {
clearInterval(interval);
this.second = 60;
this.showText = true;
}, 60000);
}
},
async loginwxuserInfo() {
let res = await this.api.loginwxuserInfo({
userId: uni.cache.get('userInfo').id
})
if (res.code == 0) {
uni.cache.set('userInfo', res.data);
}
},
async userInfosavePayPassword() {
if (this.form.mobile.length != 11 && this.isPwd == 0) {
uni.showToast({
title: '手机号必须是11位',
icon: 'none'
});
return false;
}
if (this.form.password == null || this.form.password == '') {
uni.showToast({
title: '请输入密码',
icon: 'none'
});
return false;
}
if (this.form.payPassword == null || this.form.payPassword == '') {
uni.showToast({
title: '请输入确认密码',
icon: 'none'
});
return false;
}
if (this.form.password.length != 6 || this.form.payPassword.length != 6) {
uni.showToast({
title: '密码必须是6位',
icon: 'none'
});
return false;
}
if (this.form.payPassword != this.form.password) {
this.$refs.keyboard._handleClearKey() //清空
this.form.payPassword = ''
this.form.password = ''
uni.showToast({
title: '密码和确认密码不一致',
icon: 'none'
});
return false;
}
if (this.form.checkCode == null || this.form.checkCode == '') {
uni.showToast({
title: '请输入验证码',
icon: 'none'
});
return false;
}
let res = await this.api.loginresetPwd({
pwd: this.form.password,
code: this.form.checkCode
})
if (res.code == 0) {
if (uni.cache.get('userInfo').isPwd != 0) {
uni.showToast({
title: '修改成功',
icon: 'none'
});
} else {
uni.showToast({
title: '设置成功',
icon: 'none'
});
}
// 获取用户信息
this.loginwxuserInfo()
setTimeout(() => {
uni.navigateBack();
}, 1000);
} else {
this.$refs.keyboard._handleClearKey() //清空
this.form.payPassword = ''
this.form.password = ''
}
}
}
};
</script>
<style lang="scss">
/keep/ .keyboard {
position: inherit;
}
.content {
height: 100%;
background: #FFFFFF;
@@ -209,6 +91,16 @@
font-weight: 500;
font-size: 40rpx;
color: #333333;
text:nth-child(1){
font-weight: bold;
font-size: 48rpx;
color: #333333;
}
text:nth-child(2){
font-weight: bold;
font-size: 60rpx;
color: #333333;
}
}
.contentbox {

View File

@@ -127,14 +127,14 @@
<u-popup :show="ispws" :round="20" mode="bottom" @close="ispws = false" height="500" :safeAreaInsetBottom="false">
<view class="pay-info-wrap">
<view class="info-wrap flex-between">
<view class="close" @click="showShopInfo = false">
<view class="close" @click="ispws = false">
<u-icon name="close" color="#999999" size="28"></u-icon>
</view>
<text class="title">请输入支付密码</text>
<view></view>
</view>
<view class="info-content">
<payPasswordtwo ref="payPwd" :listinfo="listinfo" @accountPayevent="accountPayevent" v-if="ispws"></payPasswordtwo>
<payPasswordtwo ref="payPwd" :payAmount="listinfo.payAmount" @accountPayevent="accountPayevent" v-if="ispws"></payPasswordtwo>
</view>
</view>
@@ -972,10 +972,10 @@
position: inherit;
}
.pay-info-wrap{
padding: 0 30rpx 50rpx;
padding: 0;
box-sizing: border-box;
.info-wrap{
padding: 30rpx 0;
padding: 30rpx;
box-sizing: border-box;
.title{
align-self: center;

File diff suppressed because it is too large Load Diff

View File

@@ -169,7 +169,7 @@
<text class="num">{{cartLists.amount||'0.00'}}</text>
</view>
<view class="btn" @tap="$u.debounce(orderdetail, 500)">
<text class="t">结算</text>
<text class="t">结算</text>
</view>
</view>
</view>
@@ -519,9 +519,22 @@
* @param {Object} b
*/
shopAdd(item, index, index1, a, b) {
let flag = true;
if ( this.cartLists.data.length > 0) {
this.cartLists.data.forEach((v,e)=>{
if ( v.productId == item.id) {
flag = false;
}
console.log(v)
})
}
console.log(a)
console.log(this.amountcartNumber)
console.log(flag)
console.log(item)
if ( a == "+" ){
if ( this.amountcartNumber <= 0) {
this.amountcartNumber = this.amountcartNumber + item.suit;
if ( this.amountcartNumber <= 0 && flag) {
this.amountcartNumber = this.amountcartNumber + (item.suit==0?1:item.suit);
}else {
this.amountcartNumber++;
}
@@ -529,8 +542,8 @@
if ( this.amountcartNumber > 0 ) {
console.log(item)
if ( this.amountcartNumber <= item.suit) {
this.amountcartNumber = this.amountcartNumber - item.suit
if ( this.amountcartNumber <= item.suit && flag) {
this.amountcartNumber = this.amountcartNumber - (item.suit==0?1:item.suit);
} else {
this.amountcartNumber = this.amountcartNumber - 1;
}
@@ -1411,18 +1424,17 @@
.btn {
width: 160rpx;
height: 64rpx;
background: #FEFAF7;
background: #E7AE7B;
border-radius: 36rpx 36rpx 36rpx 36rpx;
border: 2rpx solid #E8AD7B;
display: flex;
align-items: center;
justify-content: flex-end;
justify-content: center;
.t {
font-weight: bold;
font-size: 28rpx;
color: #E8AD7B;
margin-right: 26rpx;
color: #FFFFFF;
}
}
}
@@ -1616,6 +1628,9 @@
font-weight: 400;
font-size: 24rpx;
color: #333333;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
&+.item {
margin-top: 1px;
@@ -1776,6 +1791,13 @@
color: #999999;
margin-bottom: 8rpx;
}
.describe,.name{
width: 270rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.lookBack {
color: #FF534B;