ソースを参照

跳转修改密码

david 2 年 前
コミット
75bb8e21f1

+ 10 - 0
src/api/user.js

@@ -39,3 +39,13 @@ export function getUserInfo(token) {
     params: { token }
   })
 }
+
+// 未登录修改密码
+export function noLoginModifyPassword(data) {
+  return request({
+    url: '/v1/oauth/no-login-modify-password',
+    method: 'post',
+    data
+  })
+}
+

+ 6 - 1
src/lang/en.js

@@ -79,7 +79,12 @@ export default {
     username: 'UserName',
     password: 'Password',
     verifyCode: 'Verification Code',
-    resetPassword:'Reset password'
+    resetPassword:'Reset password',
+    adminModifyPasswd:'Changing the Password of Administrator',
+    adminCode:'Administrator Code',
+    originLoginPassword:'Original login password',
+    newLoginPassword:'New login password',
+    confirmLoginPassword:'Confirm login password',
   },
   ad: {
     ad: 'Ad',

+ 6 - 1
src/lang/zh.js

@@ -78,7 +78,12 @@ export default {
     logIn: '登录',
     username: '账号',
     password: '密码',
-    verifyCode: '验证码'
+    verifyCode: '验证码',
+    adminModifyPasswd:'管理员密码修改',
+    adminCode:'用户编号',
+    originLoginPassword:'原登录密码',
+    newLoginPassword:'新登录密码',
+    confirmLoginPassword:'确认新密码',
   },
   ad: {
     ad: '广告名称',

+ 2 - 4
src/permission.js

@@ -7,7 +7,7 @@ import usersInfo from '@/utils/usersInfo'
 
 NProgress.configure({ showSpinner: false }) // NProgress Configuration
 
-const whiteList = ['/login', '/auth-redirect'] // no redirect whitelist
+const whiteList = ['/login', '/auth-redirect', '/modify-password'] // no redirect whitelist
 
 router.beforeEach(async(to, from, next) => {
   // start progress bar
@@ -18,7 +18,6 @@ router.beforeEach(async(to, from, next) => {
 
   // determine whether the user has logged in
   const hasToken = usersInfo.hasLogin()
-
   if (hasToken) {
     if (to.path === '/login') {
       // if is logged in, redirect to the home page
@@ -52,8 +51,7 @@ router.beforeEach(async(to, from, next) => {
     }
   } else {
     /* has no token*/
-
-    if (whiteList.indexOf(to.path) !== -1) {
+    if ((whiteList.indexOf(to.path) !== -1) || (to.path.indexOf('/modify-password/') !== -1)) {
       // in the free login whitelist, go directly
       next()
     } else {

+ 6 - 0
src/router/index.js

@@ -189,6 +189,12 @@ export const constantRoutes = [
       },
     ]
   },
+  {
+    path: '/modify-password/:adminName', 
+    hidden: true,
+    component: () => import('@/views/login/modify-password'),
+    name: 'modify-password'
+  },
   {
     path: '/login',
     component: () => import('@/views/login/index'),

+ 0 - 7
src/store/modules/user.js

@@ -52,13 +52,6 @@ const actions = {
         commit('SET_INTRODUCTION', 'introduction')
         resolve()
       }).catch(error => {
-        Message({
-          message: error.message,
-          type: 'error',
-          duration: 5 * 1000
-        })
-
-        usersInfo.clear()
         reject(error)
       })
     })

+ 13 - 3
src/views/login/index.vue

@@ -193,7 +193,8 @@ export default {
               return false
             })
           }
-
+          const self = this;
+          let loginName = this.loginForm.username;
           // 登录
           this.$store.dispatch('user/login', loginData)
             .then(() => {})
@@ -206,9 +207,18 @@ export default {
               this.$router.push({ path: this.redirect || '/dashboard/index', query: this.otherQuery })
             }).catch(error => {
               this.loading = false
+              let msg = error + '  '
+              console.log('error-------->'+error)
               // 强制修改密码
-              if (error.message === 'ERROR_IS_MODIFY_PASSWORD') {
-                this.$router.push(`/modify-password/${this.loginForm.adminName}`)
+              if (msg.indexOf('ERROR_IS_MODIFY_PASSWORD') != -1) {
+                this.$message({
+                  message: error,
+                  type: 'error'
+                })
+                console.log('loginName--->'+loginName)
+                //  window.location.href=`/modify-password/${loginName}`
+                self.$router.push(`/modify-password/${loginName}`)
+                return false;
               } else {
                 // 清除登录数据
                 usersInfo.clear()

+ 108 - 0
src/views/login/modify-password.vue

@@ -0,0 +1,108 @@
+<template>
+    <div class="modify-wrapper">
+      <el-container>
+        <el-header class="modify-header">{{ $t('login.adminModifyPasswd') }}</el-header> <!-- 管理员密码修改 -->
+        <el-main>
+          <div class="white-box">
+            <el-form ref="form" :model="passwordInfo" label-width="250px" class="">
+              <el-form-item :label="$t('login.adminCode')"> <!-- 用户编号 -->
+                <el-input v-model="passwordInfo.adminName"></el-input>
+              </el-form-item>
+              <el-form-item :label="$t('login.originLoginPassword')"> <!-- 原登录密码 -->
+                <el-input v-model="passwordInfo.oldPassword" show-password></el-input>
+              </el-form-item>
+              <el-form-item :label="$t('login.newLoginPassword')"> <!-- 新登录密码 -->
+                <el-input v-model="passwordInfo.password" show-password></el-input>
+              </el-form-item>
+              <el-form-item :label="$t('login.confirmLoginPassword')"> <!-- 确认新密码 -->
+                <el-input v-model="passwordInfo.surePassword" show-password></el-input>
+              </el-form-item>
+              <el-form-item>
+                <el-button type="primary" @click="handleModifyPasswordSubmit" :loading="modifyPasswordButtonStat">{{ $t("common.confirm") }}</el-button> <!-- 确认修改 -->
+              </el-form-item>
+            </el-form>
+          </div>
+        </el-main>
+      </el-container>
+    </div>
+</template>
+  
+  <script>
+//   import axiosObj from '../../utils/axiosPlugin'
+  import tool from '@/utils/tool'
+  import { noLoginModifyPassword } from '@/api/user'
+  
+  export default {
+    name: 'modify-password',
+    mounted () {
+      this.passwordInfo.adminName = this.$route.params.adminName
+    },
+    data () {
+      return {
+        passwordInfo: {
+          adminName: '',
+          oldPassword: '',
+          password: '',
+          surePassword: ''
+        },
+        modifyPasswordButtonStat: false
+      }
+    },
+    methods: {
+      handleModifyPasswordSubmit () {
+        this.modifyPasswordButtonStat = true
+        let objectThis = this
+        noLoginModifyPassword(this.passwordInfo).then(response => {
+            this.modifyPasswordButtonStat = false
+            this.$message.success(response.data)
+            objectThis.$router.push('/login')
+        }).catch(err => {
+            this.$message.error(err)
+            this.modifyPasswordButtonStat = false
+        })
+        // axiosObj.post(path, this.passwordInfo).then(response => {
+        //   this.$message.success(response)
+        //   this.modifyPasswordButtonStat = false
+        //   this.$router.push('/login')
+        // }).catch(error => {
+        //   this.modifyPasswordButtonStat = false
+        //   error = tool.errorHandle(error)
+        //   this.$message.error(error.message)
+        //   console.log(error)
+        // })
+      }
+    }
+  }
+  </script>
+  
+  <style scoped>
+    .modify-wrapper .white-box {
+      background: #fff;
+      padding: 25px;
+      margin-bottom: 15px;
+      border-radius: 0;box-shadow: 0 0 10px #f2f1f4;
+    }
+  
+    .modify-wrapper .modify-header{
+        text-align: center;
+        line-height: 60px;
+        font-size: 20px;
+    }
+
+    @media (max-width: 760px) {
+        /deep/ .white-box {
+            margin-top: 85px;
+        }
+
+        /deep/ .el-form-item__label {
+            text-align:left;
+            width: 100%;
+        }
+
+        /deep/ .el-form-item__content {
+            margin-left:0px !important;
+            width:100%;
+        }
+    }
+  </style>
+