123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- <template>
- <div ref="container">
- <a-modal
- :title="title"
- :width="modalWidth"
- :visible="visible"
- :confirmLoading="confirmLoading"
- :getContainer="() => $refs.container"
- :maskStyle="{ top: '93px', left: '154px' }"
- :wrapClassName="wrapClassNameInfo()"
- :mask="isDesktop()"
- :maskClosable="false"
- @ok="handleOk"
- @cancel="handleCancel"
- cancelText="关闭"
- style="top: 20%; height: 50%"
- >
- <a-spin :spinning="confirmLoading">
- <a-form :form="form">
- <a-form-item label="旧密码" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input-password
- type="password"
- placeholder="请输入旧密码"
- v-decorator="['oldpassword', validatorRules.oldpassword]"
- />
- </a-form-item>
- <a-form-item label="新密码" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input-password
- type="password"
- placeholder="新密码至少6位,区分大小写"
- v-decorator="['password', validatorRules.password]"
- />
- </a-form-item>
- <a-form-item label="确认新密码" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input-password
- type="password"
- placeholder="请确认新密码"
- v-decorator="['confirmPassword', validatorRules.confirmPassword]"
- />
- </a-form-item>
- </a-form>
- </a-spin>
- </a-modal>
- </div>
- </template>
- <script>
- import { putAction } from '@/api/manage'
- import { mixinDevice } from '@/utils/mixin'
- import md5 from 'md5'
- export default {
- name: 'UserPassword',
- mixins: [mixinDevice],
- data() {
- return {
- title: '修改密码',
- modalWidth: 800,
- visible: false,
- confirmLoading: false,
- validatorRules: {
- oldpassword: {
- rules: [
- {
- required: true,
- message: '请输入旧密码!',
- },
- ],
- },
- password: {
- rules: [{ required: true, message: '请输入新密码!' }, { validator: this.handlePassword }],
- validateTrigger: ['change', 'blur'],
- validateFirst: true,
- },
- confirmPassword: {
- rules: [{ required: true, message: '请确认新密码!' }, { validator: this.handleConfirmPassword }],
- validateTrigger: ['change', 'blur'],
- validateFirst: true,
- },
- },
- confirmDirty: false,
- labelCol: {
- xs: { span: 24 },
- sm: { span: 5 },
- },
- wrapperCol: {
- xs: { span: 24 },
- sm: { span: 16 },
- },
- form: this.$form.createForm(this),
- url: '/user/updatePwd',
- userId: '',
- }
- },
- methods: {
- show(userId) {
- if (!userId) {
- this.$message.warning('当前系统无登陆用户!')
- } else {
- this.userId = userId
- this.form.resetFields()
- this.visible = true
- }
- },
- handleCancel() {
- this.close()
- },
- close() {
- this.$emit('close')
- this.visible = false
- this.disableSubmit = false
- },
- handleOk() {
- const that = this
- // 触发表单验证
- this.form.validateFields((err, values) => {
- if (!err) {
- that.confirmLoading = true
- values.oldpassword = md5(values.oldpassword)
- values.password = md5(values.password)
- let params = Object.assign({ userId: this.userId }, values)
- console.log('修改密码提交数据', params)
- putAction(this.url, params)
- .then((res) => {
- if (res.code === 200) {
- if (res.data.status === 2 || res.data.status === 3) {
- that.$message.warning(res.data.message)
- } else {
- that.$message.success(res.data.message)
- that.close()
- }
- } else {
- that.$message.warning(res.data.message)
- }
- })
- .finally(() => {
- that.confirmLoading = false
- })
- }
- })
- },
- handlePassword(rule, value, callback) {
- let oldpassword = this.form.getFieldValue('oldpassword')
- if (oldpassword === value) {
- callback(new Error('新密码和旧密码不能相同!'))
- }
- let reg = /^(?=.*[a-z])(?=.*\d).{6,}$/
- if (!reg.test(value)) {
- callback(new Error('密码由6位数字、小写字母组成!'))
- }
- callback()
- },
- handleConfirmPassword(rule, value, callback) {
- let password = this.form.getFieldValue('password')
- if (value === undefined) {
- callback(new Error('请输入密码!'))
- }
- if (value && password && value.trim() !== password.trim()) {
- callback(new Error('两次密码不一致!'))
- }
- callback()
- },
- },
- }
- </script>
- <style scoped></style>
|