diff --git a/backend/build.gradle b/backend/build.gradle
index ff5ab0b..631933b 100644
--- a/backend/build.gradle
+++ b/backend/build.gradle
@@ -74,7 +74,7 @@
     compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.9.1'
     compile group: 'log4j', name: 'log4j', version: '1.2.17'
 
-    compile group: 'com.supwisdom', name: 'payapi-sdk', version: '1.0.26-3-gde708e9'
+    compile group: 'com.supwisdom', name: 'payapi-sdk', version: '1.0.26-5-gf114ee1'
     
     implementation 'org.hamcrest:hamcrest:2.1'
 }
diff --git a/backend/src/main/java/com/supwisdom/dlpay/portal/util/PortalConstant.java b/backend/src/main/java/com/supwisdom/dlpay/portal/util/PortalConstant.java
index 8f0f157..21fc3a6 100644
--- a/backend/src/main/java/com/supwisdom/dlpay/portal/util/PortalConstant.java
+++ b/backend/src/main/java/com/supwisdom/dlpay/portal/util/PortalConstant.java
@@ -22,9 +22,9 @@
   public static final String ARTICLE_STATUS_REVIEW = "review";
   public static final String ARTICLE_STATUS_REJECT = "reject";
 
-  public static final String POINTTASK_STATUS_UNDONE = "undone";
-  public static final String POINTTASK_STATUS_DONE = "done";
-  public static final String POINTTASK_STATUS_RECEIVED = "received";
+  public static final String POINTTASK_STATUS_UNDONE = "undone";//未完成
+  public static final String POINTTASK_STATUS_DONE = "done";//已完成未领取
+  public static final String POINTTASK_STATUS_RECEIVED = "received";//已完成已领取
 
   public static final String FEEDBACK_STATUS_DELETE = "delete";
   public static final String FEEDBACK_STATUS_TOREPLY = "toreply";
diff --git a/backend/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/user_service_impl.kt b/backend/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/user_service_impl.kt
index a731ac1..ae8b3fd 100644
--- a/backend/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/user_service_impl.kt
+++ b/backend/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/user_service_impl.kt
@@ -96,10 +96,19 @@
     }
 
     override fun completePointTask(user: TBMobileUser, taskcode:String):JsonResult {
-        return if (taskcode == PointTaskCode.SIGN_IN.code) {
-            signInPointTask(user)
-        }else{
-            JsonResult.error(400,"未知的任务CODE")
+        return when (taskcode) {
+            PointTaskCode.SIGN_IN.code -> {
+                signInPointTask(user)
+            }
+            PointTaskCode.AUTH.code -> {
+                authPointTask(user)
+            }
+            PointTaskCode.CONSUME.code -> {
+                consumePointTask(user)
+            }
+            else -> {
+                JsonResult.error(400,"未知的任务CODE")
+            }
         }
     }
 
@@ -130,6 +139,55 @@
         return JsonResult.ok()
     }
 
+    fun consumePointTask(user: TBMobileUser):JsonResult{
+        val consumeResponse = userProxy.consumeTask(user.userid)
+        if (consumeResponse.retcode != 0) {
+            return JsonResult.error(400,"未完成首次消费不能领取积分")
+        }
+        val statusReponse = userProxy.getTaskStatus(user.userid, PointTaskCode.CONSUME.taskid)
+        if (statusReponse["retcode"] != 0) {
+            logger.error { "查询消费任务异常:${statusReponse["retmsg"]}" }
+            throw PortalBusinessException(statusReponse["retmsg"] as String)
+        }
+        val data = statusReponse["data"] as String
+        if (data.isNotEmpty()) {
+            return JsonResult.error(400,"已领取积分，不能重复领取")
+        }
+        val taskResponse = userProxy.userTask(UserTaskParam().apply {
+            this.userid = user.userid
+            this.taskid = PointTaskCode.CONSUME.taskid.toString()
+        })
+        if (taskResponse.retcode != 0) {
+            logger.error { "完成消费积分任务异常:${taskResponse.retmsg}" }
+            throw PortalBusinessException(taskResponse.retmsg)
+        }
+        return JsonResult.ok()
+    }
+
+    fun authPointTask(user: TBMobileUser):JsonResult{
+        if (user.userid.isNullOrEmpty()) {
+            return JsonResult.error(400,"未完成身份认证不能领取积分")
+        }
+        val statusReponse = userProxy.getTaskStatus(user.userid, PointTaskCode.AUTH.taskid)
+        if (statusReponse["retcode"] != 0) {
+            logger.error { "查询身份认证任务异常:${statusReponse["retmsg"]}" }
+            throw PortalBusinessException(statusReponse["retmsg"] as String)
+        }
+        val data = statusReponse["data"] as String
+        if (data.isNotEmpty()) {
+            return JsonResult.error(400,"已领取积分，不能重复领取")
+        }
+        val taskResponse = userProxy.userTask(UserTaskParam().apply {
+            this.userid = user.userid
+            this.taskid = PointTaskCode.AUTH.taskid.toString()
+        })
+        if (taskResponse.retcode != 0) {
+            logger.error { "完成身份认证积分任务异常:${taskResponse.retmsg}" }
+            throw PortalBusinessException(taskResponse.retmsg)
+        }
+        return JsonResult.ok()
+    }
+
     fun querySignInTaskStatus(user: TBMobileUser,list:ArrayList<PointTaskBean>,bean:PointTaskBean){
         bean.taskcode = PointTaskCode.SIGN_IN.code
         val lastTime = user.lastsignintime
@@ -147,15 +205,32 @@
         list.add(bean)
     }
 
-    fun queryAuthTaskStatus(user: TBMobileUser,list:ArrayList<PointTaskBean>,bean:PointTaskBean){
+    fun queryAuthTaskStatus(user: TBMobileUser,list:ArrayList<PointTaskBean>,bean:PointTaskBean,lasttime:Any?){
         bean.taskcode = PointTaskCode.AUTH.code
-        bean.status = PortalConstant.POINTTASK_STATUS_DONE
+        bean.status = PortalConstant.POINTTASK_STATUS_UNDONE
+        if (lasttime != null) {
+            bean.status = PortalConstant.POINTTASK_STATUS_RECEIVED
+        } else {
+            if (!user.userid.isNullOrEmpty()) {
+                bean.status = PortalConstant.POINTTASK_STATUS_DONE
+            }
+        }
         list.add(bean)
     }
 
-    fun queryConsumeTaskStatus(user: TBMobileUser,list:ArrayList<PointTaskBean>,bean:PointTaskBean){
+    fun queryConsumeTaskStatus(user: TBMobileUser,list:ArrayList<PointTaskBean>,bean:PointTaskBean,lasttime:Any?){
         bean.taskcode = PointTaskCode.CONSUME.code
-        bean.status = PortalConstant.POINTTASK_STATUS_DONE
+        bean.status = PortalConstant.POINTTASK_STATUS_UNDONE
+        if (lasttime != null) {
+            bean.status = PortalConstant.POINTTASK_STATUS_RECEIVED
+        } else {
+            if (!user.userid.isNullOrEmpty()) {
+                val consumeResponse = userProxy.consumeTask(user.userid)
+                if (consumeResponse.retcode == 0) {
+                    bean.status = PortalConstant.POINTTASK_STATUS_DONE
+                }
+            }
+        }
         list.add(bean)
     }
 
@@ -165,14 +240,18 @@
         list.add(bean)
     }
 
+    @Suppress("UNCHECKED_CAST")
     override fun queryPointTaskStatus(user: TBMobileUser): List<PointTaskBean>? {
         val result = ArrayList<PointTaskBean>()
-        val taskResponse = userProxy.tPointsTaskNoPage
+        var userid = ""
+        if (!StringUtil.isEmpty(user.userid)) {
+            userid = user.userid!!
+        }
+        val taskResponse = userProxy.getTPointsTaskNoPage(userid)
         if (taskResponse["retcode"] != 0) {
             logger.error { "查询积分任务异常" }
             throw PortalBusinessException("查询积分任务异常")
         }
-        @Suppress("UNCHECKED_CAST")
         val data = taskResponse["data"] as ArrayList<LinkedHashMap<String,Any>>
         data.forEach {
             val taskid =  it["taskid"] as Int
@@ -180,15 +259,16 @@
                 this.points = it["taskpoints"] as Int
                 this.taskname = it["taskname"] as String
             }
+            val lasttime = it["lasttime"]
             when (taskid) {
                 PointTaskCode.SIGN_IN.taskid -> {
                     querySignInTaskStatus(user,result,bean)
                 }
                 PointTaskCode.AUTH.taskid -> {
-                    queryAuthTaskStatus(user,result,bean)
+                    queryAuthTaskStatus(user,result,bean,lasttime)
                 }
                 PointTaskCode.CONSUME.taskid -> {
-                    queryConsumeTaskStatus(user,result,bean)
+                    queryConsumeTaskStatus(user,result,bean,lasttime)
                 }
                 PointTaskCode.EXCHANGE.taskid -> {
                     queryExchangeTaskStatus(user,result,bean)
diff --git a/backend/src/main/kotlin/com/supwisdom/dlpay/portal/PortalApi.kt b/backend/src/main/kotlin/com/supwisdom/dlpay/portal/PortalApi.kt
index 5e10bf5..23d7284 100644
--- a/backend/src/main/kotlin/com/supwisdom/dlpay/portal/PortalApi.kt
+++ b/backend/src/main/kotlin/com/supwisdom/dlpay/portal/PortalApi.kt
@@ -4,6 +4,7 @@
 import com.supwisdom.dlpay.api.service.UploadPicService
 import com.supwisdom.dlpay.framework.core.JwtConfig
 import com.supwisdom.dlpay.framework.core.JwtTokenUtil
+import com.supwisdom.dlpay.framework.domain.TOperator
 import com.supwisdom.dlpay.framework.redisrepo.ApiJwtRepository
 import com.supwisdom.dlpay.framework.service.OperatorDetailService
 import com.supwisdom.dlpay.framework.service.SystemUtilService
@@ -19,6 +20,7 @@
 import org.springframework.http.HttpStatus
 import org.springframework.http.ResponseEntity
 import org.springframework.security.core.context.SecurityContextHolder
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
 import org.springframework.web.bind.annotation.*
 import org.springframework.web.multipart.MultipartHttpServletRequest
 import java.util.regex.Pattern
@@ -67,6 +69,33 @@
         return ResponseEntity.ok().body(JsonResult.ok())
     }
 
+    @RequestMapping("user/updatepwd")
+    fun updatePwd(@RequestHeader("Authorization") auth: String?,
+                  curpwd: String, newpwd: String, renewpwd: String): ResponseEntity<Any> {
+        if (auth == null) {
+            return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build()
+        }
+        val p = SecurityContextHolder.getContext().authentication
+        val oper = operatorDetailService.findByOperid(p.name)
+        val encoder = BCryptPasswordEncoder()
+        if (!encoder.matches(curpwd, oper.password)) {
+            return ResponseEntity.ok().body(JsonResult.error("当前密码错误"))
+        }
+        if (newpwd != renewpwd) {
+            return ResponseEntity.ok().body(JsonResult.error("两次密码不一致"))
+        }
+        if (newpwd.length < 6 || newpwd.length > 20) {
+            return ResponseEntity.ok().body(JsonResult.error("密码必须为6-20个字符"))
+        }
+        oper.operpwd = encoder.encode(newpwd)
+        operatorDetailService.saveOper(oper)
+        val jwt = auth.substring(jwtConfig.tokenHeader.length)
+        val claims = JwtTokenUtil(jwtConfig).verifyToken(jwt)
+        SecurityContextHolder.clearContext()
+        apiJwtRepository.deleteById(claims[ReservedClaimNames.JWT_ID].toString())
+        return ResponseEntity.ok().body(JsonResult.ok())
+    }
+
     @RequestMapping("/user/info")
     fun getUserInfo(): JsonResult? {
         return try {
@@ -89,6 +118,39 @@
 
     }
 
+    @RequestMapping("/user/updateinfo")
+    fun updateUserInfo(@RequestBody bean:TOperator): JsonResult?{
+        return try {
+            val p = SecurityContextHolder.getContext().authentication
+            val oper = operatorDetailService.findByOperid(p.name)
+            oper.opername = bean.opername
+            oper.mobile = bean.mobile
+            oper.email = bean.email
+            operatorDetailService.saveOper(oper)
+            return JsonResult.ok()
+        } catch (e: Exception) {
+            logger.error { e.message }
+            JsonResult.error("修改用户个人资料异常")
+        }
+    }
+
+    @RequestMapping("/user/data")
+    fun getUserData(): JsonResult? {
+        return try {
+            val p = SecurityContextHolder.getContext().authentication
+            val oper = operatorDetailService.findByOperid(p.name)
+            val data = HashMap<String, String?>()
+            data["opername"] = oper.opername
+            data["opercode"] = oper.opercode
+            data["mobile"] = oper.mobile
+            data["email"] = oper.email
+            JsonResult.ok().put("data", data)
+        } catch (e: Exception) {
+            logger.error { e.message }
+            JsonResult.error("查询用户个人信息异常")
+        }
+
+    }
     @RequestMapping("/user/resource")
     fun getUserResource(): JsonResult? {
         return try {
@@ -194,7 +256,7 @@
         if (map["retcode"] == "1") {
             return JsonResult.error("图片上传失败!")
         }
-        return JsonResult.ok().put("data",map)
+        return JsonResult.ok().put("data", map)
     }
 
     @RequestMapping("/column/all")
@@ -427,7 +489,7 @@
 
     @RequestMapping(value = ["/advisory/switchdisplay/{advisoryid}"], method = [RequestMethod.POST])
     fun switchAdvisoryDisplay(@PathVariable(value = "advisoryid") advisoryid: String,
-                      @RequestParam(value = "value") value: String): JsonResult? {
+                              @RequestParam(value = "value") value: String): JsonResult? {
         return try {
             val result = advisoryService.switchDisplay(advisoryid, value)
             JsonResult.ok().put("result", result)
@@ -484,7 +546,7 @@
      */
     @RequestMapping(value = ["/outlets/switchopen/{outletsno}"], method = [RequestMethod.POST])
     fun switchOutletsOpen(@PathVariable(value = "outletsno") outletsno: String,
-                              @RequestParam(value = "value") value: String): JsonResult? {
+                          @RequestParam(value = "value") value: String): JsonResult? {
         return try {
             val result = outletsService.switchOpen(outletsno, value)
             JsonResult.ok().put("result", result)
diff --git a/frontend/src/api/user.js b/frontend/src/api/user.js
index aba990c..62c9a25 100644
--- a/frontend/src/api/user.js
+++ b/frontend/src/api/user.js
@@ -26,6 +26,13 @@
   })
 }
 
+export function getData() {
+  return request({
+    url: '/user/data',
+    method: 'get'
+  })
+}
+
 export function logout() {
   return request({
     url: '/user/logout',
@@ -33,6 +40,32 @@
   })
 }
 
+export function savePwd(data) {
+  return request({
+    url: '/user/updatepwd',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/x-www-form-urlencoded'
+    },
+    data,
+    transformRequest: [function(data) {
+      let ret = ''
+      for (const it in data) {
+        ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
+      }
+      return ret
+    }]
+  })
+}
+
+export function saveInfo(data) {
+  return request({
+    url: '/user/updateinfo',
+    method: 'post',
+    data
+  })
+}
+
 export function getAuthMenu(token) {
   return request({
     url: '/user/resource',
diff --git a/frontend/src/layout/components/Navbar.vue b/frontend/src/layout/components/Navbar.vue
index 0b0ebeb..d98e940 100644
--- a/frontend/src/layout/components/Navbar.vue
+++ b/frontend/src/layout/components/Navbar.vue
@@ -3,7 +3,88 @@
     <hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />
 
     <breadcrumb id="breadcrumb-container" class="breadcrumb-container" />
-
+    <el-dialog
+      title="修改密码"
+      :visible.sync="updatePwdVisable"
+      width="30%"
+    >
+      <div>
+        <el-form ref="pwdForm" :model="pwdForm" :rules="pwdRules" label-width="100px">
+          <el-form-item label="当前密码" prop="curpwd" class="form-input-item">
+            <el-input
+              v-model="pwdForm.curpwd"
+              type="password"
+              style="width:80%"
+            />
+          </el-form-item>
+          <el-form-item label="设置新密码" prop="newpwd" class="form-input-item">
+            <el-input
+              v-model="pwdForm.newpwd"
+              type="password"
+              style="width:80%"
+            />
+          </el-form-item>
+          <el-form-item label="重复新密码" prop="renewpwd" class="form-input-item">
+            <el-input
+              v-model="pwdForm.renewpwd"
+              type="password"
+              style="width:80%"
+            />
+          </el-form-item>
+        </el-form>
+      </div>
+      <div style="text-align:center">
+        <el-button
+          type="primary"
+          @click="savePwd('pwdForm')"
+        >保存
+        </el-button>
+        <el-button @click="updatePwdVisable = false">取消</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog
+      title="设置个人信息"
+      :visible.sync="updateInfoVisable"
+      width="30%"
+    >
+      <div>
+        <el-form ref="infoForm" :model="infoForm" :rules="infoRules" label-width="100px">
+          <el-form-item label="登录名" prop="opercode" class="form-input-item">
+            <el-input
+              v-model="infoForm.opercode"
+              :disabled="true"
+              style="width:80%"
+            />
+          </el-form-item>
+          <el-form-item label="名称" prop="opername" class="form-input-item">
+            <el-input
+              v-model="infoForm.opername"
+              style="width:80%"
+            />
+          </el-form-item>
+          <el-form-item label="电话" prop="mobile" class="form-input-item">
+            <el-input
+              v-model="infoForm.mobile"
+              style="width:80%"
+            />
+          </el-form-item>
+          <el-form-item label="邮箱" prop="email" class="form-input-item">
+            <el-input
+              v-model="infoForm.email"
+              style="width:80%"
+            />
+          </el-form-item>
+        </el-form>
+      </div>
+      <div style="text-align:center">
+        <el-button
+          type="primary"
+          @click="saveInfo('infoForm')"
+        >保存
+        </el-button>
+        <el-button @click="updateInfoVisable = false">取消</el-button>
+      </div>
+    </el-dialog>
     <div class="right-menu">
       <template v-if="device!=='mobile'">
         <search id="header-search" class="right-menu-item" />
@@ -14,12 +95,8 @@
           <span v-html="getOperName()" />
         </div>
         <el-dropdown-menu slot="dropdown">
-          <router-link to="/">
-            <el-dropdown-item>个人信息</el-dropdown-item>
-          </router-link>
-          <router-link to="/">
-            <el-dropdown-item>修改密码</el-dropdown-item>
-          </router-link>
+          <el-dropdown-item @click.native="updateInfo('infoForm')">个人信息</el-dropdown-item>
+          <el-dropdown-item @click.native="updatePwd('pwdForm')">修改密码</el-dropdown-item>
           <el-dropdown-item divided @click.native="logout">
             <span style="display:block;">退出</span>
           </el-dropdown-item>
@@ -31,6 +108,7 @@
 
 <script>
 import { mapGetters } from 'vuex'
+import { savePwd, getData, saveInfo } from '@/api/user.js'
 import user from '@/store/modules/user'
 import Breadcrumb from '@/components/Breadcrumb'
 import Hamburger from '@/components/Hamburger'
@@ -42,6 +120,70 @@
     Hamburger,
     Search
   },
+  data() {
+    var validateRepwd = (rule, value, callback) => {
+      if (this.pwdForm.renewpwd !== this.pwdForm.newpwd) {
+        callback(new Error('两次输入密码不一致'))
+      }
+      callback()
+    }
+    var validateMobile = (rule, value, callback) => {
+      if (value !== null && value !== '') {
+        var reg = /^1[3456789]\d{9}$/
+        if (!reg.test(value)) {
+          callback(new Error('请输入有效的手机号码'))
+        }
+      }
+      callback()
+    }
+    var validateEmail = (rule, value, callback) => {
+      if (value !== null && value !== '') {
+        var reg = /^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/
+        if (!reg.test(value)) {
+          callback(new Error('请输入有效的邮箱'))
+        }
+      }
+      callback()
+    }
+    return {
+      updatePwdVisable: false,
+      updateInfoVisable: false,
+      pwdForm: {
+        curpwd: '',
+        newpwd: '',
+        renewpwd: ''
+      },
+      infoForm: {
+        opercode: '',
+        opername: '',
+        mobile: '',
+        email: ''
+      },
+      pwdRules: {
+        curpwd: [
+          { required: true, message: '请输入当前密码', trigger: 'blur' }
+        ],
+        newpwd: [
+          { required: true, message: '请输入新密码', trigger: 'blur' }
+        ],
+        renewpwd: [
+          { required: true, message: '请确认新密码', trigger: 'blur' },
+          { validator: validateRepwd, trigger: 'blur' }
+        ]
+      },
+      infoRules: {
+        opername: [
+          { required: true, message: '请输入名称', trigger: 'blur' }
+        ],
+        mobile: [
+          { validator: validateMobile, trigger: 'blur' }
+        ],
+        email: [
+          { validator: validateEmail, trigger: 'blur' }
+        ]
+      }
+    }
+  },
   computed: {
     ...mapGetters([
       'sidebar',
@@ -60,6 +202,85 @@
         console.log(response)
       })
     },
+    updateInfo(formName) {
+      getData().then((response) => {
+        var data = response.data
+        this.infoForm.opercode = data.opercode
+        this.infoForm.opername = data.opername
+        this.infoForm.mobile = data.mobile
+        this.infoForm.email = data.email
+      }).catch((error) => {
+        this.$message({
+          message: error.msg || '请求异常',
+          type: 'error'
+        })
+      })
+      this.updateInfoVisable = true
+      this.$nextTick(() => {
+        this.$refs[formName].clearValidate()
+      })
+    },
+    updatePwd(formName) {
+      this.pwdForm = {
+        curpwd: '',
+        newpwd: '',
+        renewpwd: ''
+      }
+      this.$nextTick(() => {
+        this.$refs[formName].clearValidate()
+      })
+      this.updatePwdVisable = true
+    },
+    savePwd(formName) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          var _this = this
+          savePwd(this.pwdForm).then(response => {
+            this.$message({
+              message: '修改密码成功，请重新登录！',
+              type: 'success',
+              duration: 1500,
+              onClose: function() {
+                _this.$store.dispatch('user/logout', true).then(() => {
+                  _this.$router.push(`/login?redirect=${_this.$route.fullPath}`)
+                }).catch((response) => {
+                  console.log(response)
+                })
+              }
+            })
+          }).catch(error => {
+            this.$message({
+              message: error.msg || '请求异常',
+              type: 'error'
+            })
+          })
+        } else {
+          return false
+        }
+      })
+    },
+    saveInfo(formName) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          saveInfo(this.infoForm).then(response => {
+            this.$notify({
+              title: '成功',
+              message: '保存成功！',
+              type: 'success',
+              duration: 2000
+            })
+            this.updateInfoVisable = false
+          }).catch(error => {
+            this.$message({
+              message: error.msg || '请求异常',
+              type: 'error'
+            })
+          })
+        } else {
+          return false
+        }
+      })
+    },
     getOperName() {
       return user.state.name
     }
diff --git a/frontend/src/store/modules/user.js b/frontend/src/store/modules/user.js
index 736df15..7ff9b2b 100644
--- a/frontend/src/store/modules/user.js
+++ b/frontend/src/store/modules/user.js
@@ -77,9 +77,27 @@
   },
 
   // user logout
-  logout({ commit, state, dispatch }) {
+  logout({ commit, state, dispatch }, alreayLogout) {
     return new Promise((resolve, reject) => {
-      logout(state.token).then(() => {
+      if (!alreayLogout) {
+        logout(state.token).then(() => {
+          commit('SET_TOKEN', '')
+          commit('SET_ROLES', [])
+          commit('SET_URL', '')
+          commit('SET_MAPKEY', '')
+          commit('SET_MAPURL', '')
+          removeToken()
+          resetRouter()
+
+          // reset visited views and cached views
+          // to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2485
+          dispatch('tagsView/delAllViews', null, { root: true })
+
+          resolve()
+        }).catch(error => {
+          reject(error)
+        })
+      } else {
         commit('SET_TOKEN', '')
         commit('SET_ROLES', [])
         commit('SET_URL', '')
@@ -93,9 +111,7 @@
         dispatch('tagsView/delAllViews', null, { root: true })
 
         resolve()
-      }).catch(error => {
-        reject(error)
-      })
+      }
     })
   },
 
diff --git a/frontend/src/utils/request.js b/frontend/src/utils/request.js
index 7288f82..a0b141a 100644
--- a/frontend/src/utils/request.js
+++ b/frontend/src/utils/request.js
@@ -57,7 +57,7 @@
       Message({
         message: '当前登录信息已过期，请重新登录',
         type: 'error',
-        duration: 5 * 1000
+        duration: 3 * 1000
       })
       router.push(`/login`)
     } else {
