UserPassword.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. <template>
  2. <a-modal
  3. :title="title"
  4. :width="modalWidth"
  5. :visible="visible"
  6. :confirm-loading="confirmLoading"
  7. cancel-text="关闭"
  8. @ok="handleOk"
  9. @cancel="handleCancel"
  10. >
  11. <a-spin :spinning="confirmLoading">
  12. <a-form :form="form">
  13. <a-form-item
  14. :label-col="labelCol"
  15. :wrapper-col="wrapperCol"
  16. label="旧密码"
  17. >
  18. <a-input
  19. v-decorator="[ 'oldPassword', validatorRules.oldPassword]"
  20. type="password"
  21. placeholder="请输入旧密码"
  22. />
  23. </a-form-item>
  24. <a-form-item
  25. :label-col="labelCol"
  26. :wrapper-col="wrapperCol"
  27. label="新密码"
  28. >
  29. <a-input
  30. v-decorator="[ 'newPassword', validatorRules.newPassword]"
  31. type="password"
  32. placeholder="请输入新密码"
  33. />
  34. </a-form-item>
  35. <a-form-item
  36. :label-col="labelCol"
  37. :wrapper-col="wrapperCol"
  38. label="确认新密码"
  39. >
  40. <a-input
  41. v-decorator="[ 'confirmPassword', validatorRules.confirmPassword]"
  42. type="password"
  43. placeholder="请确认新密码"
  44. />
  45. </a-form-item>
  46. </a-form>
  47. </a-spin>
  48. </a-modal>
  49. </template>
  50. <script>
  51. import { putAction } from '@/api/request'
  52. import { Base64 } from 'js-base64'
  53. export default {
  54. name: 'UserPassword',
  55. data() {
  56. return {
  57. title: '修改密码',
  58. modalWidth: 800,
  59. visible: false,
  60. confirmLoading: false,
  61. validatorRules: {
  62. oldPassword: {
  63. rules: [{
  64. required: true, message: '请输入旧密码!'
  65. }]
  66. },
  67. newPassword: {
  68. rules: [{
  69. required: true, message: '请输入新密码!'
  70. }, {
  71. validator: this.validateToNextPassword
  72. }]
  73. },
  74. confirmPassword: {
  75. rules: [{
  76. required: true, message: '请确认新密码!'
  77. }, {
  78. validator: this.compareToFirstPassword
  79. }]
  80. }
  81. },
  82. labelCol: {
  83. xs: { span: 24 },
  84. sm: { span: 5 }
  85. },
  86. wrapperCol: {
  87. xs: { span: 24 },
  88. sm: { span: 16 }
  89. },
  90. form: this.$form.createForm(this),
  91. url: 'system/user/profile/updatePwd',
  92. username: ''
  93. }
  94. },
  95. methods: {
  96. show(uname) {
  97. if (!uname) {
  98. this.$message.warning('当前系统无登录用户!')
  99. return
  100. } else {
  101. this.username = uname
  102. this.form.resetFields()
  103. this.visible = true
  104. }
  105. },
  106. handleCancel() {
  107. this.close()
  108. },
  109. close() {
  110. this.$emit('close')
  111. this.visible = false
  112. this.disableSubmit = false
  113. this.selectedRole = []
  114. },
  115. handleOk() {
  116. const that = this
  117. // 触发表单验证
  118. this.form.validateFields((err, values) => {
  119. if (!err) {
  120. that.confirmLoading = true
  121. // { userName: this.username },
  122. const params = Object.assign(values)
  123. params.oldPassword = encodeURIComponent(params.oldPassword)
  124. params.newPassword = encodeURIComponent(params.newPassword)
  125. params.confirmPassword = encodeURIComponent(params.confirmPassword)
  126. delete params.confirmPassword
  127. console.log('修改密码提交数据', params)
  128. putAction(this.url, params).then((res) => {
  129. that.confirmLoading = false
  130. if (res.code === 200) {
  131. that.$message.success(res.msg)
  132. that.close()
  133. } else {
  134. that.$message.warning(res.msg)
  135. }
  136. })
  137. }
  138. })
  139. },
  140. validateToNextPassword(rule, value, callback) {
  141. const pattern = /^(?![A-Za-z0-9]+$)(?![a-z0-9\W]+$)(?![A-Za-z\W]+$)(?![A-Z0-9\W]+$)[a-zA-Z0-9\W]{8,}$/
  142. if (value && !pattern.test(value)) {
  143. callback('请输入8位以上大小写字母、数字、特殊符号组合')
  144. } else {
  145. callback()
  146. }
  147. },
  148. compareToFirstPassword(rule, value, callback) {
  149. const form = this.form
  150. if (value && value !== form.getFieldValue('newPassword')) {
  151. callback('两次输入的密码不一样!')
  152. } else {
  153. callback()
  154. }
  155. }
  156. }
  157. }
  158. </script>
  159. <style scoped>
  160. </style>