1). 新建修改密碼頁
在 src/views/users
下新建 Password.vue
文件,復制貼入以下代碼:
src/views/users/Password.vue
<template> <div class="col-md-9 left-col"> <div class="panel panel-default padding-md"> <div class="panel-body"> <h2><i class="fa fa-lock"></i> 修改密碼</h2> <hr> <div class="form-horizontal" data-validator-form> <div class="form-group"> <label class="col-sm-2 control-label">密 碼</label> <div class="col-sm-6"> <input v-model.trim="password" id="password" v-validator.required="{ regex: /^\w{6,16}$/, error: '密碼要求 6 ~ 16 個單詞字符' }" type="password" class="form-control" placeholder="請填寫密碼"> </div> </div> <div class="form-group"> <label class="col-sm-2 control-label">確認密碼</label> <div class="col-sm-6"> <input v-model.trim="cpassword" v-validator.required="{ title: '確認密碼', target: '#password' }" type="password" class="form-control"> </div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-6"> <button type="submit" class="btn btn-primary" @click="updatePassword">應用修改</button> </div> </div> </div> </div> </div> </div> </template> <script> export default { name: 'EditPassword', data() { return { password: '', // 密碼 cpassword: '' // 確認密碼 } }, // 在實例創建完成后,初始化密碼的值 created() { // 獲取倉庫的用戶信息 const user = this.$store.state.user if (user && typeof user === 'object') { // 將倉庫的用戶密碼賦值給當前密碼 this.password = user.password } }, methods: { // 更新密碼 updatePassword(e) { this.$nextTick(() => { // 表單驗證通過時 if (e.target.canSubmit) { // 依然分發一個 updateUser 的事件,這里只需傳入密碼信息 this.$store.dispatch('updateUser', { password: this.cpassword }) this.$message.show('修改成功') } }) } } } </script> <style scoped> </style>
2). 添加修改密碼路由
打開 src/router/routes.js
文件,添加修改密碼路由 EditPassword
(注釋部分是涉及的修改):
src/router/routes.js
1 // EditPassword 2 { 3 path: '/users/1/edit_password', 4 name: 'EditPassword', 5 component: () => import('@/views/users/Password.vue'), 6 meta: { auth: true } 7 }