123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- <!-- 修改密码 - changePassword -->
- <template>
- <s-layout title="修改密码" :bgStyle="{color:'#fff'}">
- <view class="content-block">
- <uni-forms ref="changePasswordRef" v-model="state.model" :rules="state.rules" validateTrigger="bind" labelWidth="140"
- labelAlign="left" labelPosition="top">
- <uni-forms-item name="mobile" label="手机号">
- <view class="input-line">
- <uni-easyinput placeholder="请输入手机号" v-model="state.model.mobile" type="number" :inputBorder="false">
- </uni-easyinput>
- </view>
- </uni-forms-item>
- <uni-forms-item name="newPassword" label="新密码">
- <view class="input-line">
- <uni-easyinput type="password" placeholder="请输入密码" v-model="state.model.newPassword" :inputBorder="false">
- </uni-easyinput>
- </view>
- </uni-forms-item>
- <uni-forms-item name="confirmPassword" label="确认密码">
- <view class="input-line">
- <uni-easyinput type="password" placeholder="请输入密码" v-model="state.model.confirmPassword" :inputBorder="false">
- </uni-easyinput>
- </view>
- </uni-forms-item>
- <uni-forms-item name="code" label="验证码">
- <view class="ss-flex ss-row-between">
- <view class="input-line w-370">
- <uni-easyinput placeholder="请输入验证码" v-model="state.model.verificationCode" :inputBorder="false" type="number"
- maxlength="6">
- </uni-easyinput>
- </view>
- <button class="ss-reset-button code-btn code-btn-start" :disabled="getSmsTimer('changePassword') != '获取验证码'"
- :class="{ 'code-btn-end': getSmsTimer('changePassword') != '获取验证码' }"
- @tap="getSmsCode('changePassword', state.model.mobile)">
- {{ getSmsTimer('changePassword') }}
- </button>
- </view>
- </uni-forms-item>
-
-
- </uni-forms>
-
- <button class="ss-reset-button toLoginBtn" @tap="changePasswordSubmit">
- 确认
- </button>
- </view>
- </s-layout>
- </template>
- <script setup>
- import {
- computed,
- watch,
- ref,
- reactive,
- unref
- } from 'vue';
- import sheep from '@/sheep';
- import {
- code,
- mobile,
- password
- } from '@/sheep/validate/form';
- import {
- getSmsCode,
- getSmsTimer
- } from '@/sheep/hooks/useModal';
- import {Base64} from 'js-base64'
- const changePasswordRef = ref(null);
- const isLogin = computed(() => sheep.$store('user').isLogin);
- // 数据
- const state = reactive({
- isMobileEnd: false, // 手机号输入完毕
- model: {
- mobile: '', //手机号
- verificationCode: '', //验证码
- newPassword: '', //密码
- confirmPassword:'',
- },
- rules: {
- code,
- mobile,
- newPassword:password,
- confirmPassword: {
- rules: [
- {
- required: true,
- errorMessage: '请确认密码',
- },
- {
- validateFunction: function (rule, value, data, callback) {
- if (value !== state.model.newPassword) {
- callback('两次输入的密码不一致');
- }
- return true;
- },
- },
- ],
- },
- },
- });
- // 6.更改密码
- const changePasswordSubmit = async () => {
- const validate = await unref(changePasswordRef)
- .validate()
- .catch((error) => {
- console.log('error: ', error);
- });
- if (!validate) return;
- state.model.uuid = sheep.$store('user').getUUID('changePassword')
- const data = Base64.encode(JSON.stringify(state.model))
- console.log(state.model)
- sheep.$api.user.resetPassword(data).then((res) => {
- if(res.code == 200) {
- sheep.$helper.toast('修改成功')
- setTimeout(()=>{
- uni.navigateBack()
- },1500)
- }
- // if (res.error === 0) {
- // sheep.$store('user').getInfo();
- // closeAuthModal();
- // }
- });
- }
- </script>
- <style lang="scss" scoped>
- @import '@/sheep/components/s-auth-modal/index.scss';
- .content-block {
- padding: 0 30rpx;
- }
- .input-line {
- background-color: #F5F7FB;
- border-radius: 16rpx;
- padding-left: 30rpx;
- height: 88rpx;
- box-sizing: border-box;
- }
- .toLoginBtn {
- height: 88rpx;
- background: #F39801;
- border-radius: 16rpx;
- color: #fff;
- margin-bottom: 32rpx;
- margin-top: 30rpx;
- }
- .w-370 {
- width: 370rpx;
- }
- </style>
|