UserPassword.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. <template>
  2. <div ref="container">
  3. <a-modal
  4. :title="title"
  5. :width="modalWidth"
  6. :visible="visible"
  7. :confirmLoading="confirmLoading"
  8. :getContainer="() => $refs.container"
  9. :maskStyle="{ top: '93px', left: '154px' }"
  10. :wrapClassName="wrapClassNameInfo()"
  11. :mask="isDesktop()"
  12. :maskClosable="false"
  13. @ok="handleOk"
  14. @cancel="handleCancel"
  15. cancelText="关闭"
  16. style="top: 20%; height: 50%"
  17. >
  18. <a-spin :spinning="confirmLoading">
  19. <a-form :form="form">
  20. <a-form-item label="旧密码" :labelCol="labelCol" :wrapperCol="wrapperCol">
  21. <a-input-password
  22. type="password"
  23. placeholder="请输入旧密码"
  24. v-decorator="['oldpassword', validatorRules.oldpassword]"
  25. />
  26. </a-form-item>
  27. <a-form-item label="新密码" :labelCol="labelCol" :wrapperCol="wrapperCol">
  28. <a-input-password
  29. type="password"
  30. placeholder="新密码至少6位,区分大小写"
  31. v-decorator="['password', validatorRules.password]"
  32. />
  33. </a-form-item>
  34. <a-form-item label="确认新密码" :labelCol="labelCol" :wrapperCol="wrapperCol">
  35. <a-input-password
  36. type="password"
  37. placeholder="请确认新密码"
  38. v-decorator="['confirmPassword', validatorRules.confirmPassword]"
  39. />
  40. </a-form-item>
  41. </a-form>
  42. </a-spin>
  43. </a-modal>
  44. </div>
  45. </template>
  46. <script>
  47. import { putAction } from '@/api/manage'
  48. import { mixinDevice } from '@/utils/mixin'
  49. import md5 from 'md5'
  50. export default {
  51. name: 'UserPassword',
  52. mixins: [mixinDevice],
  53. data() {
  54. return {
  55. title: '修改密码',
  56. modalWidth: 800,
  57. visible: false,
  58. confirmLoading: false,
  59. validatorRules: {
  60. oldpassword: {
  61. rules: [
  62. {
  63. required: true,
  64. message: '请输入旧密码!',
  65. },
  66. ],
  67. },
  68. password: {
  69. rules: [{ required: true, message: '请输入新密码!' }, { validator: this.handlePassword }],
  70. validateTrigger: ['change', 'blur'],
  71. validateFirst: true,
  72. },
  73. confirmPassword: {
  74. rules: [{ required: true, message: '请确认新密码!' }, { validator: this.handleConfirmPassword }],
  75. validateTrigger: ['change', 'blur'],
  76. validateFirst: true,
  77. },
  78. },
  79. confirmDirty: false,
  80. labelCol: {
  81. xs: { span: 24 },
  82. sm: { span: 5 },
  83. },
  84. wrapperCol: {
  85. xs: { span: 24 },
  86. sm: { span: 16 },
  87. },
  88. form: this.$form.createForm(this),
  89. url: '/user/updatePwd',
  90. userId: '',
  91. }
  92. },
  93. methods: {
  94. show(userId) {
  95. if (!userId) {
  96. this.$message.warning('当前系统无登陆用户!')
  97. } else {
  98. this.userId = userId
  99. this.form.resetFields()
  100. this.visible = true
  101. }
  102. },
  103. handleCancel() {
  104. this.close()
  105. },
  106. close() {
  107. this.$emit('close')
  108. this.visible = false
  109. this.disableSubmit = false
  110. },
  111. handleOk() {
  112. const that = this
  113. // 触发表单验证
  114. this.form.validateFields((err, values) => {
  115. if (!err) {
  116. that.confirmLoading = true
  117. values.oldpassword = md5(values.oldpassword)
  118. values.password = md5(values.password)
  119. let params = Object.assign({ userId: this.userId }, values)
  120. console.log('修改密码提交数据', params)
  121. putAction(this.url, params)
  122. .then((res) => {
  123. if (res.code === 200) {
  124. if (res.data.status === 2 || res.data.status === 3) {
  125. that.$message.warning(res.data.message)
  126. } else {
  127. that.$message.success(res.data.message)
  128. that.close()
  129. }
  130. } else {
  131. that.$message.warning(res.data.message)
  132. }
  133. })
  134. .finally(() => {
  135. that.confirmLoading = false
  136. })
  137. }
  138. })
  139. },
  140. handlePassword(rule, value, callback) {
  141. let oldpassword = this.form.getFieldValue('oldpassword')
  142. if (oldpassword === value) {
  143. callback(new Error('新密码和旧密码不能相同!'))
  144. }
  145. let reg = /^(?=.*[a-z])(?=.*\d).{6,}$/
  146. if (!reg.test(value)) {
  147. callback(new Error('密码由6位数字、小写字母组成!'))
  148. }
  149. callback()
  150. },
  151. handleConfirmPassword(rule, value, callback) {
  152. let password = this.form.getFieldValue('password')
  153. if (value === undefined) {
  154. callback(new Error('请输入密码!'))
  155. }
  156. if (value && password && value.trim() !== password.trim()) {
  157. callback(new Error('两次密码不一致!'))
  158. }
  159. callback()
  160. },
  161. },
  162. }
  163. </script>
  164. <style scoped></style>