| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- <template>
- <view class="page_body">
- <!-- 导航 -->
- <nav-bar height="88" :showHeaderborder="false" @GoBack="GoBack"></nav-bar>
- <view class="page_module">
- <view class="page_title">修改密码</view>
- <view class="tip">请输入两次相同的密码进行修改</view>
- <uni-forms class="forms_style" :model="state.formData" labelWidth="0rpx">
- <uni-forms-item>
- <uni-easyinput v-model="state.formData.oldPassword" :type="state.showOldPassword?'password':'text'" :clearable="false" :passwordIcon="false" placeholder="请输入原始密码">
- <template #right>
- <!-- 小眼睛 -->
- <image v-if="state.formData.oldPassword && state.showOldPassword" class="password_icon" src="@/static/image/icon/login_eyes.png" @click="OnEyes('old')"></image>
- <image v-if="state.formData.oldPassword && !state.showOldPassword" class="password_icon" src="@/static/image/icon/login_eye.png" @click="OnEyes('old')"></image>
- </template>
- </uni-easyinput>
- </uni-forms-item>
- <uni-forms-item>
- <uni-easyinput v-model="state.formData.newPassword" :type="state.showNewPassword?'password':'text'" :clearable="false" :passwordIcon="false" placeholder="请输入6位以上新密码">
- <template #right>
- <!-- 小眼睛 -->
- <image v-if="state.formData.newPassword && state.showNewPassword" class="password_icon" src="@/static/image/icon/login_eyes.png" @click="OnEyes('new')"></image>
- <image v-if="state.formData.newPassword && !state.showNewPassword" class="password_icon" src="@/static/image/icon/login_eye.png" @click="OnEyes('new')"></image>
- </template>
- </uni-easyinput>
- </uni-forms-item>
- <uni-forms-item>
- <uni-easyinput v-model="state.formData.confirmNewPassword" :type="state.showConfirmNewPassword?'password':'text'" :clearable="false" :passwordIcon="false" placeholder="请再次输入新密码">
- <template #right>
- <!-- 小眼睛 -->
- <image v-if="state.formData.confirmNewPassword && state.showConfirmNewPassword" class="password_icon" src="@/static/image/icon/login_eyes.png" @click="OnEyes('confirmNew')"></image>
- <image v-if="state.formData.confirmNewPassword && !state.showConfirmNewPassword" class="password_icon" src="@/static/image/icon/login_eye.png" @click="OnEyes('confirmNew')"></image>
- </template>
- </uni-easyinput>
- </uni-forms-item>
- <uni-forms-item>
- <button class="btn_submit" type="primary" :loading="state.loading" @click="HandleUpdatePassword">确定</button>
- </uni-forms-item>
- </uni-forms>
- </view>
- </view>
- </template>
- <script setup>
- import { reactive, ref } from 'vue';
- import navBar from '@/components/nav-bar.vue';
- import uniForms from '@/uni_modules/uni-forms/components/uni-forms/uni-forms.vue';
- import uniFormsItem from '@/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue';
- import uniEasyinput from '@/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue';
- import { encrypt } from '@/common/crypto.js';
- import user from '@/reqApi/user.js';
- import { useStore } from 'vuex';
- const store = useStore();
- const state = reactive({
- formData: {
- oldPassword: '',
- newPassword: '',
- confirmNewPassword: '',
- },
- showOldPassword:true,
- showNewPassword:true,
- showConfirmNewPassword:true,
- loading: false
- })
- //小眼睛
- const OnEyes = (type) => {
- if(type == 'new') {
- state.showNewPassword = !state.showNewPassword;
- }else if(type == 'old'){
- state.showOldPassword = !state.showOldPassword;
- }else{
- state.showConfirmNewPassword = !state.showConfirmNewPassword;
- }
- }
- //返回
- const GoBack = () => {
- uni.switchTab({
- url: '/pages/my/index'
- });
- }
- //修改密码
- const HandleUpdatePassword = () => {
- const passwordLen = state.formData.newPassword.length;
- //不为空限制
- if(!state.formData.oldPassword){
- uni.showToast({
- title: '请输入原始密码!',
- icon: 'none'
- })
- return false
- }
- if(!state.formData.newPassword){
- uni.showToast({
- title: '请输入新密码!',
- icon: 'none'
- })
- return false
- }
- if(!state.formData.confirmNewPassword){
- uni.showToast({
- title: '请再次输入新密码!',
- icon: 'none'
- })
- return false
- }
- if(state.formData.newPassword != state.formData.confirmNewPassword){
- uni.showToast({
- title: '两次输入密码不一致!',
- icon: 'none'
- })
- return false
- }
- state.loading = true;
- user.changeMinePassword({
- oldPassword:encrypt(state.formData.oldPassword),
- newPassword:encrypt(state.formData.newPassword),
- // confirmNewPassword:encrypt(state.formData.confirmNewPassword)
- }).then(res => {
- if (res.code == 200) {
- uni.showToast({
- title: '修改成功,请重新登录!',
- icon: 'none'
- })
- //清除token 以及登录相关信息
- store.dispatch('logout',true);
- uni.reLaunch({
- url: '/pages/login/index'
- });
- } else {
- uni.showToast({
- title: res.msg || '操作失败!',
- icon: 'none'
- })
- }
- }).finally(() => {
- state.loading = false;
- })
- }
- </script>
- <style scoped lang="scss">
- .page_body {
- height: 100%;
- background-color: #FFFFFF;
- .page_module {
- padding-top: 0rpx !important;
- padding: 0 48rpx;
- .page_title {
- margin-top: 32rpx;
- display: flex;
- width: 100%;
- color: #000000;
- font-size: 56rpx;
- line-height: 100%;
- font-weight: 500;
- }
- .tip {
- display: flex;
- width: 100%;
- margin-top: 16rpx;
- color: #CCCCCC;
- font-size: 32rpx;
- line-height: 100%;
- }
- .forms_style {
- margin-top: 64rpx;
- :deep(.uni-forms-item) {
- margin-bottom: 48rpx !important;
- &:last-child {
- margin-bottom: 0 !important;
- }
- .uni-forms-item__label {
- display: none;
- }
- .uni-forms-item__content {
- font-size: 32rpx;
- color: #333333;
- //输入框
- .uni-easyinput {
- .is-input-border {
- border: 1px solid #EBEEF5;
- border-radius: 16rpx;
- }
- .uni-easyinput__content-input {
- height: 96rpx;
- font-size: 32rpx;
- font-weight: 400;
- padding-left: 32rpx !important;
- .uni-easyinput__placeholder-class {
- font-size: 32rpx;
- color: #CCCCCC;
- }
- }
- .password_icon {
- width: 32rpx;
- height: 32rpx;
- margin: 0 32rpx;
- }
- .content-clear-icon {
- font-size: 40rpx !important;
- padding: 0 10rpx;
- }
- }
- }
- .btn_submit {
- margin-top: 32rpx;
- width: 100%;
- height: 96rpx;
- display: flex;
- justify-content: center;
- align-items: center;
- background-color: #2E64FA !important;
- border-radius: 16rpx;
- color: #FFFFFF;
- font-size: 32rpx;
- }
- }
- }
- }
- }
- </style>
|