PersonSet.vue 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. <template>
  2. <div class="info_container">
  3. <el-row class="info_row row" :gutter="10">
  4. <el-tabs v-model="activeName" type="card">
  5. <el-tab-pane label="个人信息" name="person_setup">
  6. <el-col :span="8">
  7. <div class="area">
  8. <p class="title"><h5>个人信息</h5></p>
  9. <el-form class="form" :model="personInfo" :rules="personRules" ref="personInfo" label-width="80px">
  10. <el-form-item label="登录名">
  11. <el-input v-model="personInfo.username" size="small" disabled></el-input>
  12. </el-form-item>
  13. <el-form-item label="姓名" prop="nickname">
  14. <el-input v-model="personInfo.nickname" size="small" placeholder="请输入姓名"></el-input>
  15. </el-form-item>
  16. <el-form-item label="邮箱" prop="email">
  17. <el-input v-model="personInfo.email" size="small" placeholder="请输入邮箱"></el-input>
  18. </el-form-item>
  19. <el-form-item label="电话" prop="mobile">
  20. <el-input v-model="personInfo.mobile" size="small" placeholder="请输入电话"></el-input>
  21. </el-form-item>
  22. <el-form-item>
  23. <el-button type="primary" @click="modifyPerson('personInfo')">提交</el-button>
  24. <el-button @click="cancelPerson()">取消</el-button>
  25. </el-form-item>
  26. </el-form>
  27. </div>
  28. </el-col>
  29. </el-tab-pane>
  30. <el-tab-pane label="密码" name="pwd_setup">
  31. <el-col :span="8">
  32. <div class="area">
  33. <p class="title"><h5>修改密码</h5></p>
  34. <el-form class="form" :model="pwdInfo" :rules="pwdRules" ref="pwdInfo" label-width="80px">
  35. <el-form-item label="原密码" prop="password">
  36. <el-input type="password" v-model="pwdInfo.password" size="small" placeholder="原密码"></el-input>
  37. </el-form-item>
  38. <el-form-item label="新密码" prop="newpassword">
  39. <el-input type="password" v-model="pwdInfo.newpassword" size="small" placeholder="新密码"></el-input>
  40. </el-form-item>
  41. <el-form-item label="确认密码" prop="surepassword">
  42. <el-input type="password" v-model="pwdInfo.surepassword" size="small" placeholder="确认新密码"></el-input>
  43. </el-form-item>
  44. <el-form-item>
  45. <el-button type="primary" @click="modifyPwd('pwdInfo')">提交</el-button>
  46. <el-button @click="resetPwd('pwdInfo')">重置</el-button>
  47. </el-form-item>
  48. </el-form>
  49. </div>
  50. </el-col>
  51. </el-tab-pane>
  52. </el-tabs>
  53. </el-row>
  54. </div>
  55. </template>
  56. <script>
  57. export default {
  58. data() {
  59. let validatePass = (rule, value, callback) => {
  60. if (value === '') {
  61. callback(new Error('请输入新密码'));
  62. } else {
  63. if (this.pwdInfo.surepassword !== '') {
  64. this.$refs.pwdInfo.validateField('surepassword');
  65. }
  66. callback();
  67. }
  68. };
  69. let validateSurepwd = (rule, value, callback) => {
  70. if (value === '') {
  71. callback(new Error('请输入确认密码'));
  72. } else if (value !== this.pwdInfo.newpassword) {
  73. callback(new Error('两次输入密码不一致!'));
  74. } else {
  75. callback();
  76. }
  77. };
  78. let checkMobile = (rule, value, callback) => {
  79. if (value === '') {
  80. return callback(new Error('手机号不能为空'));
  81. }
  82. setTimeout(() => {
  83. let mobile = /^1[34578]\d{9}$/;
  84. if (!mobile.test(value)) {
  85. callback(new Error('手机号不正确'));
  86. } else {
  87. callback();
  88. }
  89. }, 1000);
  90. };
  91. return {
  92. personInfo: {
  93. username: '',
  94. nickname: '',
  95. email:'',
  96. mobile: '',
  97. },
  98. pwdInfo:{
  99. password:'',
  100. newpassword:'',
  101. surepassword:''
  102. },
  103. activeName: 'person_setup',
  104. personRules: {
  105. nickname: [
  106. {required: true, message: '请输入姓名', trigger: 'blur'}
  107. ],
  108. mobile: [
  109. {required: true, validator: checkMobile, trigger: 'blur'}
  110. ],
  111. email:[
  112. { required: true, message: '请输入邮箱地址', trigger: 'blur' },
  113. { type: 'email', message: '请输入正确的邮箱地址', trigger: 'blur,change' }
  114. ],
  115. },
  116. pwdRules: {
  117. password: [
  118. { required: true, message: '请输入原密码', trigger: 'blur' }
  119. ],
  120. newpassword: [
  121. {required: true, validator: validatePass, trigger: 'blur'}
  122. ],
  123. surepassword:[
  124. { required: true, validator:validateSurepwd, trigger: 'blur' },
  125. ],
  126. },
  127. }
  128. },
  129. methods: {
  130. //获取用户信息
  131. getPersonInfo() {
  132. this.$http.get(`/api/account/users/self`).then((response) => {
  133. this.personInfo = response.result;
  134. }, (response) => this.$layer_message(response.result))
  135. },
  136. //重置密码表单
  137. cancelPerson: function () {
  138. this.$router.push('/welcome');
  139. },
  140. resetPwd: function () {
  141. this.pwdInfo = {};
  142. },
  143. modifyPwd: function () {
  144. if (this.pwdInfo.newpassword !== this.pwdInfo.surepassword) {
  145. this.$layer_message('两次输入密码不一致');
  146. return
  147. }
  148. this.$http.post(`/api/account/users/setting/password`, this.pwdInfo).then(() => {
  149. this.$layer_message('修改成功', 'success');
  150. this.logout();
  151. }, response => this.$layer_message(response.result));
  152. },
  153. modifyPerson: function () {
  154. this.$http.post(`/api/account/users/setting/info`, this.personInfo).then(() => {
  155. this.$layer_message('保存成功', 'success');
  156. localStorage.setItem('nickname', this.personInfo['nickname']);
  157. }, response => this.$layer_message(response.result));
  158. },
  159. logout() {
  160. this.$http.get('/api/account/users/logout/').finally(() => {
  161. localStorage.removeItem('token');
  162. this.$router.push({name: 'login'})
  163. })
  164. }
  165. },
  166. mounted() {
  167. this.getPersonInfo();
  168. }
  169. }
  170. </script>