@@ -23,17 +23,45 @@ | |||
</view> | |||
</u-form> | |||
<view class="btn"> | |||
<!-- <view class="btn"> | |||
<submit-button title="下一步" @submit="nextStep"></submit-button> | |||
</view> --> | |||
<view class="register-main"> | |||
<!-- <view class="title">重置密码</view> | |||
<view class="hint">重置之前的密码,设置新密码</view> --> | |||
<view class="hint1">请输入密码</view> | |||
<view class="form-input"> | |||
<input class="input" v-model="state.password" placeholder="请输入密码" placeholder-class="form-placeholder" | |||
:password="state.isPwdType ? true : false" type="text" /> | |||
<image :src="`${$imgUrl}login/${ | |||
state.isPwdType ? 'icon_eye_close' : 'icon_eye_open' | |||
}.png`" class="eye" @click="state.isPwdType = !state.isPwdType" mode="aspectFill"></image> | |||
</view> | |||
<view class="hint2">请再次输入密码</view> | |||
<view class="form-input"> | |||
<input class="input" v-model="state.affirmPassword" placeholder="请再次输入密码" | |||
placeholder-class="form-placeholder" :password="state.isAffirmPwdType ? true : false" type="text" /> | |||
<image :src="`${$imgUrl}login/${ | |||
state.isAffirmPwdType ? 'icon_eye_close' : 'icon_eye_open' | |||
}.png`" class="eye" @click="state.isAffirmPwdType = !state.isAffirmPwdType" mode="aspectFill"></image> | |||
</view> | |||
<view class="hint4">{{ state.pwdHint }}</view> | |||
</view> | |||
<view class="btn"> | |||
<submit-button title="确认更改" @submit="doResetPwd"></submit-button> | |||
</view> | |||
</template> | |||
<script setup lang="ts"> | |||
import { msg, navTo } from "@/utils/utils"; | |||
import { msg, navTo, confirm, checkStr } from "@/utils/utils"; | |||
import { onLoad } from "@dcloudio/uni-app"; | |||
import { reactive } from "vue"; | |||
import { ref } from "vue"; | |||
import { request } from "@/utils/network/request"; | |||
import { sendCode } from "@/utils/network/api.js"; | |||
import { sendCode, resetPwd } from "@/utils/network/api.js"; | |||
//上个界面传递的电话号码 | |||
const phone = ref(""); | |||
@@ -42,7 +70,15 @@ | |||
//倒计时时常 | |||
const codeDuration = ref(0); | |||
let interval = null; | |||
const state = reactive({ | |||
isPwdType: true, | |||
isAffirmPwdType: true, | |||
password: "", //密码 | |||
affirmPassword: "",//再次输入密码 | |||
phone: "", //手机号 | |||
code: "", //验证码 | |||
pwdHint: "密码不少于10位,必须同时包含数字、大小写字母和特殊符号", | |||
}); | |||
onLoad((options) => { | |||
phone.value = options.phone; | |||
codeInterval(); | |||
@@ -88,6 +124,50 @@ | |||
navTo(`/login/forget-pwd-step3?phone=${phone.value}&code=${code.value}`); | |||
}; | |||
/* 忘记密码 */ | |||
const doResetPwd = () => { | |||
if (!code.value) { | |||
msg("请先输入验证码!"); | |||
return; | |||
} | |||
if (!state.password) { | |||
msg("请输入密码"); | |||
return; | |||
} | |||
if (!state.affirmPassword) { | |||
msg("请再次输入密码"); | |||
return; | |||
} | |||
if (state.password !== state.affirmPassword) { | |||
msg("两次密码输入不一致,请重新输入!"); | |||
return; | |||
} | |||
const options = { | |||
type: 2, | |||
data: { | |||
newPassword: state.password, | |||
affirmNewPassword: state.affirmPassword, | |||
mobile: phone.value, | |||
code: code.value, | |||
}, | |||
method: "POST", | |||
showLoading: true, | |||
}; | |||
request(resetPwd, options).then((res) => { | |||
confirm( | |||
"密码重置成功,请登录!", | |||
() => { | |||
uni.$emit("login", { phone: phone.value }); | |||
uni.navigateBack({ delta: 2 }); | |||
}, | |||
"提示", | |||
false | |||
); | |||
}); | |||
}; | |||
</script> | |||
<style lang="scss" scoped> | |||
@@ -128,7 +208,70 @@ | |||
} | |||
} | |||
.register-main { | |||
border-top: 1rpx solid #dcdcdc; | |||
padding: 78rpx 30rpx 50rpx; | |||
.title { | |||
font-size: 32rpx; | |||
color: #333333; | |||
font-weight: 600; | |||
} | |||
.hint { | |||
font-size: 24rpx; | |||
color: #999999; | |||
margin-top: 20rpx; | |||
} | |||
.hint1 { | |||
color: #333333; | |||
font-size: 28rpx; | |||
// margin-top: 100rpx; | |||
font-weight: 600; | |||
} | |||
.hint2 { | |||
color: #333333; | |||
font-size: 28rpx; | |||
margin-top: 50rpx; | |||
font-weight: 600; | |||
} | |||
.hint4 { | |||
margin-top: 30rpx; | |||
font-size: 26rpx; | |||
color: #00b38b; | |||
} | |||
} | |||
.form-input { | |||
display: flex; | |||
flex-direction: row; | |||
align-items: center; | |||
height: 90rpx; | |||
margin-top: 30rpx; | |||
border-bottom: 1rpx solid #dcdcdc; | |||
color: #333333; | |||
.input { | |||
flex: 1; | |||
padding-right: 48rpx; | |||
font-size: 26rpx; | |||
background: transparent; | |||
} | |||
.eye { | |||
width: 48rpx; | |||
height: 48rpx; | |||
} | |||
} | |||
.form-placeholder { | |||
color: #999999; | |||
} | |||
.btn { | |||
margin: 200rpx 40rpx 0px; | |||
margin: 80rpx 40px; | |||
} | |||
</style> |
@@ -13,52 +13,45 @@ | |||
}}</view> | |||
</view> | |||
</view> | |||
<!-- <view class="register-main"> | |||
<view class="title">请输入验证码</view> | |||
<view class="hint">验证码已发送至:{{ phone }}</view> | |||
<view class="input-code"> | |||
<verification-code-input v-model="code" ></verification-code-input> | |||
</view> | |||
<view class="hint2"> | |||
<view class="green">{{ codeDuration === 0 ? "" : codeDuration }}</view> | |||
<view class="grey" @click="sendRegisterCode">{{ | |||
codeDuration === 0 ? "重新发送验证码" : "秒后可重新发送验证码" | |||
}}</view> | |||
</view> | |||
</view> --> | |||
<!-- <u-form ref="myForm"> | |||
<view class="from"> | |||
<u-form-item prop="phone"> | |||
<view class="from_item" style="background-color: #f7f7f7"> | |||
<text><text style="color: red"></text>手机号:</text> | |||
<u-input v-model="phone" :disabled="true" class="input" /> | |||
</view> | |||
</u-form-item> | |||
<u-form-item prop="code"> | |||
<view class="from_item"> | |||
<text><text style="color: red"></text>验证码:</text> | |||
<u-input v-model="code" placeholder="请输入验证码" class="input" /> | |||
<view class="hint2"> | |||
<view class="green">{{ codeDuration === 0 ? "" : codeDuration }}</view> | |||
<view class="grey" @click="sendRegisterCode">{{ | |||
codeDuration === 0 ? "发送验证码" : "秒后可重发" | |||
}}</view> | |||
</view> | |||
</view> | |||
</u-form-item> | |||
</view> | |||
</u-form> --> | |||
<view class="btn"> | |||
<!-- <view class="btn"> | |||
<submit-button title="下一步" @submit="nextStep"></submit-button> | |||
</view> --> | |||
<view class="register-main"> | |||
<!-- <view class="title">重置密码</view> | |||
<view class="hint">重置之前的密码,设置新密码</view> --> | |||
<view class="hint1">请输入密码</view> | |||
<view class="form-input"> | |||
<input class="input" v-model="state.password" placeholder="请输入密码" placeholder-class="form-placeholder" | |||
:password="state.isPwdType ? true : false" type="text" /> | |||
<image :src="`${$imgUrl}login/${ | |||
state.isPwdType ? 'icon_eye_close' : 'icon_eye_open' | |||
}.png`" class="eye" @click="state.isPwdType = !state.isPwdType" mode="aspectFill"></image> | |||
</view> | |||
<view class="hint2">请再次输入密码</view> | |||
<view class="form-input"> | |||
<input class="input" v-model="state.affirmPassword" placeholder="请再次输入密码" | |||
placeholder-class="form-placeholder" :password="state.isAffirmPwdType ? true : false" type="text" /> | |||
<image :src="`${$imgUrl}login/${ | |||
state.isAffirmPwdType ? 'icon_eye_close' : 'icon_eye_open' | |||
}.png`" class="eye" @click="state.isAffirmPwdType = !state.isAffirmPwdType" mode="aspectFill"></image> | |||
</view> | |||
<view class="hint4">{{ state.pwdHint }}</view> | |||
</view> | |||
<view class="btn"> | |||
<submit-button title="确认更改" @submit="doResetPwd"></submit-button> | |||
</view> | |||
</template> | |||
<script setup lang="ts"> | |||
import { msg, navTo } from "@/utils/utils"; | |||
import { msg, navTo, confirm, checkStr } from "@/utils/utils"; | |||
import { onLoad } from "@dcloudio/uni-app"; | |||
import { reactive } from "vue"; | |||
import { ref } from "vue"; | |||
import { request } from "@/utils/network/request"; | |||
import { sendCode } from "@/utils/network/api.js"; | |||
import { sendCode, resetPwd } from "@/utils/network/api.js"; | |||
//上个界面传递的电话号码 | |||
const phone = ref(""); | |||
@@ -67,7 +60,15 @@ | |||
//倒计时时常 | |||
const codeDuration = ref(0); | |||
let interval = null; | |||
const state = reactive({ | |||
isPwdType: true, | |||
isAffirmPwdType: true, | |||
password: "", //密码 | |||
affirmPassword: "",//再次输入密码 | |||
phone: "", //手机号 | |||
code: "", //验证码 | |||
pwdHint: "密码不少于10位,必须同时包含数字、大小写字母和特殊符号", | |||
}); | |||
onLoad((options) => { | |||
phone.value = options.phone; | |||
codeInterval(); | |||
@@ -112,6 +113,50 @@ | |||
} | |||
navTo(`/login/forget-pwd-step3?phone=${phone.value}&code=${code.value}`); | |||
}; | |||
/* 忘记密码 */ | |||
const doResetPwd = () => { | |||
if (!code.value) { | |||
msg("请先输入验证码!"); | |||
return; | |||
} | |||
if (!state.password) { | |||
msg("请输入密码"); | |||
return; | |||
} | |||
if (!state.affirmPassword) { | |||
msg("请再次输入密码"); | |||
return; | |||
} | |||
if (state.password !== state.affirmPassword) { | |||
msg("两次密码输入不一致,请重新输入!"); | |||
return; | |||
} | |||
const options = { | |||
type: 2, | |||
data: { | |||
newPassword: state.password, | |||
affirmNewPassword: state.affirmPassword, | |||
mobile: phone.value, | |||
code: code.value, | |||
}, | |||
method: "POST", | |||
showLoading: true, | |||
}; | |||
request(resetPwd, options).then((res) => { | |||
confirm( | |||
"密码重置成功,请登录!", | |||
() => { | |||
uni.$emit("login", { phone: phone.value }); | |||
uni.navigateBack({ delta: 2 }); | |||
}, | |||
"提示", | |||
false | |||
); | |||
}); | |||
}; | |||
</script> | |||
<style lang="scss" scoped> | |||
@@ -133,7 +178,7 @@ | |||
} | |||
.input-code { | |||
margin: 100rpx -10rpx 0px; | |||
margin: 0 -10rpx 0px; | |||
} | |||
.hint2 { | |||
@@ -152,7 +197,70 @@ | |||
} | |||
} | |||
.register-main { | |||
border-top: 1rpx solid #dcdcdc; | |||
padding: 78rpx 30rpx 50rpx; | |||
.title { | |||
font-size: 32rpx; | |||
color: #333333; | |||
font-weight: 600; | |||
} | |||
.hint { | |||
font-size: 24rpx; | |||
color: #999999; | |||
margin-top: 20rpx; | |||
} | |||
.hint1 { | |||
color: #333333; | |||
font-size: 28rpx; | |||
// margin-top: 100rpx; | |||
font-weight: 600; | |||
} | |||
.hint2 { | |||
color: #333333; | |||
font-size: 28rpx; | |||
margin-top: 50rpx; | |||
font-weight: 600; | |||
} | |||
.hint4 { | |||
margin-top: 30rpx; | |||
font-size: 26rpx; | |||
color: #00b38b; | |||
} | |||
} | |||
.form-input { | |||
display: flex; | |||
flex-direction: row; | |||
align-items: center; | |||
height: 90rpx; | |||
margin-top: 30rpx; | |||
border-bottom: 1rpx solid #dcdcdc; | |||
color: #333333; | |||
.input { | |||
flex: 1; | |||
padding-right: 48rpx; | |||
font-size: 26rpx; | |||
background: transparent; | |||
} | |||
.eye { | |||
width: 48rpx; | |||
height: 48rpx; | |||
} | |||
} | |||
.form-placeholder { | |||
color: #999999; | |||
} | |||
.btn { | |||
margin: 200rpx 40rpx 0px; | |||
margin: 80rpx 40px; | |||
} | |||
</style> |
@@ -103,6 +103,13 @@ | |||
"subPackages": [{ | |||
"root": "subpackage/after-sale", //售后相关 | |||
"pages": [{ | |||
"path": "progress-query/progress-query-tab", | |||
"style": { | |||
"navigationBarTitleText": "进度查询", | |||
"enablePullDownRefresh": false | |||
} | |||
}, | |||
{ | |||
"path": "add-equity/equity-list", | |||
"style": { | |||
"navigationBarTitleText": "购买权益列表", |
@@ -234,7 +234,7 @@ export function removeObj() { | |||
function initNfcAdapter(callBack) { | |||
nfcAdapter = wx.getNFCAdapter() //获取NFC适配器实例 | |||
nfcAdapter = uni.getNFCAdapter() //获取NFC适配器实例 | |||
console.log("获取NFC适配器实例:", nfcAdapter); | |||
if (nfcAdapter != null) { | |||
callBack.call(this, { |
@@ -232,9 +232,21 @@ | |||
.then((res) => { | |||
let data = stringToJson(res.bizContent) | |||
console.log("开户成功", data.status) | |||
if (data.status == 1) { | |||
navTo(`/subpackage/after-sale/account-recharge/login`) | |||
} | |||
uni.showModal({ | |||
content: '审核中', | |||
showCancel: false, | |||
success: function (res) { | |||
if (res.confirm) { | |||
uni.navigateBack({ | |||
delta: 2 | |||
}) | |||
// navTo(`/subpackage/after-sale/account-recharge/login`) | |||
} else if (res.cancel) { | |||
console.log('用户点击取消'); | |||
} | |||
} | |||
}); | |||
}) | |||
.catch((err) => { | |||
console.log(err); |
@@ -60,7 +60,7 @@ | |||
<view class="card-center"> | |||
<view class="card-center-head"> {{orderInfos.obuId}} </view> | |||
<view class="tips"> | |||
<!-- <text>储蓄卡</text> --> | |||
<text>OBU</text> | |||
<text class="tips-card">{{getCodeName('OBU_STATE_TYPE',orderInfos.obuStatus)}}</text> | |||
</view> | |||
<!-- <view class="choose-item"> 有效期:xxxx-xx-xx </view> --> | |||
@@ -637,6 +637,7 @@ | |||
font-weight: 400; | |||
color: #999999; | |||
margin-bottom: 30rpx; | |||
align-items: center; | |||
text { | |||
font-size: 26rpx; | |||
@@ -682,7 +683,7 @@ | |||
font-family: Noto Sans S Chinese; | |||
font-weight: 400; | |||
color: #666666; | |||
margin-top: 4rpx; | |||
margin-top: 10rpx; | |||
.tips-card { | |||
width: 70rpx; | |||
@@ -842,6 +843,6 @@ | |||
font-weight: 400; | |||
color: #0a8f8a; | |||
padding: 5rpx 10rpx; | |||
margin-left: 60rpx; | |||
margin-left: 30rpx; | |||
} | |||
</style> |
@@ -0,0 +1,9 @@ | |||
<template> | |||
<view>11111</view> | |||
</template> | |||
<script> | |||
</script> | |||
<style> | |||
</style> |