</view> | </view> | ||||
</u-form> | </u-form> | ||||
<view class="btn"> | |||||
<!-- <view class="btn"> | |||||
<submit-button title="下一步" @submit="nextStep"></submit-button> | <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> | </view> | ||||
</template> | </template> | ||||
<script setup lang="ts"> | <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 { onLoad } from "@dcloudio/uni-app"; | ||||
import { reactive } from "vue"; | |||||
import { ref } from "vue"; | import { ref } from "vue"; | ||||
import { request } from "@/utils/network/request"; | import { request } from "@/utils/network/request"; | ||||
import { sendCode } from "@/utils/network/api.js"; | |||||
import { sendCode, resetPwd } from "@/utils/network/api.js"; | |||||
//上个界面传递的电话号码 | //上个界面传递的电话号码 | ||||
const phone = ref(""); | const phone = ref(""); | ||||
//倒计时时常 | //倒计时时常 | ||||
const codeDuration = ref(0); | const codeDuration = ref(0); | ||||
let interval = null; | let interval = null; | ||||
const state = reactive({ | |||||
isPwdType: true, | |||||
isAffirmPwdType: true, | |||||
password: "", //密码 | |||||
affirmPassword: "",//再次输入密码 | |||||
phone: "", //手机号 | |||||
code: "", //验证码 | |||||
pwdHint: "密码不少于10位,必须同时包含数字、大小写字母和特殊符号", | |||||
}); | |||||
onLoad((options) => { | onLoad((options) => { | ||||
phone.value = options.phone; | phone.value = options.phone; | ||||
codeInterval(); | codeInterval(); | ||||
navTo(`/login/forget-pwd-step3?phone=${phone.value}&code=${code.value}`); | 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> | </script> | ||||
<style lang="scss" scoped> | <style lang="scss" scoped> | ||||
} | } | ||||
} | } | ||||
.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 { | .btn { | ||||
margin: 200rpx 40rpx 0px; | |||||
margin: 80rpx 40px; | |||||
} | } | ||||
</style> | </style> |
}}</view> | }}</view> | ||||
</view> | </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> | <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> | </view> | ||||
</template> | </template> | ||||
<script setup lang="ts"> | <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 { onLoad } from "@dcloudio/uni-app"; | ||||
import { reactive } from "vue"; | |||||
import { ref } from "vue"; | import { ref } from "vue"; | ||||
import { request } from "@/utils/network/request"; | import { request } from "@/utils/network/request"; | ||||
import { sendCode } from "@/utils/network/api.js"; | |||||
import { sendCode, resetPwd } from "@/utils/network/api.js"; | |||||
//上个界面传递的电话号码 | //上个界面传递的电话号码 | ||||
const phone = ref(""); | const phone = ref(""); | ||||
//倒计时时常 | //倒计时时常 | ||||
const codeDuration = ref(0); | const codeDuration = ref(0); | ||||
let interval = null; | let interval = null; | ||||
const state = reactive({ | |||||
isPwdType: true, | |||||
isAffirmPwdType: true, | |||||
password: "", //密码 | |||||
affirmPassword: "",//再次输入密码 | |||||
phone: "", //手机号 | |||||
code: "", //验证码 | |||||
pwdHint: "密码不少于10位,必须同时包含数字、大小写字母和特殊符号", | |||||
}); | |||||
onLoad((options) => { | onLoad((options) => { | ||||
phone.value = options.phone; | phone.value = options.phone; | ||||
codeInterval(); | codeInterval(); | ||||
} | } | ||||
navTo(`/login/forget-pwd-step3?phone=${phone.value}&code=${code.value}`); | 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> | </script> | ||||
<style lang="scss" scoped> | <style lang="scss" scoped> | ||||
} | } | ||||
.input-code { | .input-code { | ||||
margin: 100rpx -10rpx 0px; | |||||
margin: 0 -10rpx 0px; | |||||
} | } | ||||
.hint2 { | .hint2 { | ||||
} | } | ||||
} | } | ||||
.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 { | .btn { | ||||
margin: 200rpx 40rpx 0px; | |||||
margin: 80rpx 40px; | |||||
} | } | ||||
</style> | </style> |
"subPackages": [{ | "subPackages": [{ | ||||
"root": "subpackage/after-sale", //售后相关 | "root": "subpackage/after-sale", //售后相关 | ||||
"pages": [{ | "pages": [{ | ||||
"path": "progress-query/progress-query-tab", | |||||
"style": { | |||||
"navigationBarTitleText": "进度查询", | |||||
"enablePullDownRefresh": false | |||||
} | |||||
}, | |||||
{ | |||||
"path": "add-equity/equity-list", | "path": "add-equity/equity-list", | ||||
"style": { | "style": { | ||||
"navigationBarTitleText": "购买权益列表", | "navigationBarTitleText": "购买权益列表", |
function initNfcAdapter(callBack) { | function initNfcAdapter(callBack) { | ||||
nfcAdapter = wx.getNFCAdapter() //获取NFC适配器实例 | |||||
nfcAdapter = uni.getNFCAdapter() //获取NFC适配器实例 | |||||
console.log("获取NFC适配器实例:", nfcAdapter); | console.log("获取NFC适配器实例:", nfcAdapter); | ||||
if (nfcAdapter != null) { | if (nfcAdapter != null) { | ||||
callBack.call(this, { | callBack.call(this, { |
.then((res) => { | .then((res) => { | ||||
let data = stringToJson(res.bizContent) | let data = stringToJson(res.bizContent) | ||||
console.log("开户成功", data.status) | 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) => { | .catch((err) => { | ||||
console.log(err); | console.log(err); |
<view class="card-center"> | <view class="card-center"> | ||||
<view class="card-center-head"> {{orderInfos.obuId}} </view> | <view class="card-center-head"> {{orderInfos.obuId}} </view> | ||||
<view class="tips"> | <view class="tips"> | ||||
<!-- <text>储蓄卡</text> --> | |||||
<text>OBU</text> | |||||
<text class="tips-card">{{getCodeName('OBU_STATE_TYPE',orderInfos.obuStatus)}}</text> | <text class="tips-card">{{getCodeName('OBU_STATE_TYPE',orderInfos.obuStatus)}}</text> | ||||
</view> | </view> | ||||
<!-- <view class="choose-item"> 有效期:xxxx-xx-xx </view> --> | <!-- <view class="choose-item"> 有效期:xxxx-xx-xx </view> --> | ||||
font-weight: 400; | font-weight: 400; | ||||
color: #999999; | color: #999999; | ||||
margin-bottom: 30rpx; | margin-bottom: 30rpx; | ||||
align-items: center; | |||||
text { | text { | ||||
font-size: 26rpx; | font-size: 26rpx; | ||||
font-family: Noto Sans S Chinese; | font-family: Noto Sans S Chinese; | ||||
font-weight: 400; | font-weight: 400; | ||||
color: #666666; | color: #666666; | ||||
margin-top: 4rpx; | |||||
margin-top: 10rpx; | |||||
.tips-card { | .tips-card { | ||||
width: 70rpx; | width: 70rpx; | ||||
font-weight: 400; | font-weight: 400; | ||||
color: #0a8f8a; | color: #0a8f8a; | ||||
padding: 5rpx 10rpx; | padding: 5rpx 10rpx; | ||||
margin-left: 60rpx; | |||||
margin-left: 30rpx; | |||||
} | } | ||||
</style> | </style> |
<template> | |||||
<view>11111</view> | |||||
</template> | |||||
<script> | |||||
</script> | |||||
<style> | |||||
</style> |