|
|
@ -1,119 +1,178 @@ |
|
|
|
<template> |
|
|
|
<el-dialog :visible.sync="visible" |
|
|
|
<el-dialog |
|
|
|
:visible.sync="visible" |
|
|
|
:title="$t('updatePassword.title')" |
|
|
|
width="500px" |
|
|
|
:close-on-click-modal="false" |
|
|
|
:close-on-press-escape="false" |
|
|
|
:append-to-body="true"> |
|
|
|
<el-form :model="dataForm" |
|
|
|
:append-to-body="true" |
|
|
|
> |
|
|
|
<el-form |
|
|
|
:model="dataForm" |
|
|
|
:rules="dataRule" |
|
|
|
ref="dataForm" |
|
|
|
@keyup.enter.native="dataFormSubmitHandle()" |
|
|
|
label-width="100px"> |
|
|
|
label-width="100px" |
|
|
|
> |
|
|
|
<el-form-item :label="$t('updatePassword.username')"> |
|
|
|
<span>{{ $store.state.user.realName }}</span> |
|
|
|
</el-form-item> |
|
|
|
<!-- <el-form-item prop="password" |
|
|
|
:label="$t('updatePassword.password')"> |
|
|
|
<el-input v-model="dataForm.password" |
|
|
|
<el-form-item prop="password" :label="$t('updatePassword.password')"> |
|
|
|
<el-input |
|
|
|
v-model="dataForm.password" |
|
|
|
type="password" |
|
|
|
:placeholder="$t('updatePassword.password')"></el-input> |
|
|
|
</el-form-item> --> |
|
|
|
<el-form-item prop="newPassword" |
|
|
|
:label="$t('updatePassword.newPassword')"> |
|
|
|
<el-input v-model="dataForm.newPassword" |
|
|
|
:placeholder="$t('updatePassword.password')" |
|
|
|
></el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item |
|
|
|
prop="newPassword" |
|
|
|
:label="$t('updatePassword.newPassword')" |
|
|
|
> |
|
|
|
<el-input |
|
|
|
v-model="dataForm.newPassword" |
|
|
|
type="password" |
|
|
|
:placeholder="$t('updatePassword.newPassword')"></el-input> |
|
|
|
placeholder="密码必须8-20个字符,而且同时包含大小写字母和数字" |
|
|
|
></el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item prop="confirmPassword" |
|
|
|
:label="$t('updatePassword.confirmPassword')"> |
|
|
|
<el-input v-model="dataForm.confirmPassword" |
|
|
|
<el-form-item |
|
|
|
prop="confirmPassword" |
|
|
|
:label="$t('updatePassword.confirmPassword')" |
|
|
|
> |
|
|
|
<el-input |
|
|
|
v-model="dataForm.confirmPassword" |
|
|
|
type="password" |
|
|
|
:placeholder="$t('updatePassword.confirmPassword')"></el-input> |
|
|
|
:placeholder="$t('updatePassword.confirmPassword')" |
|
|
|
></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
<template slot="footer"> |
|
|
|
<el-button @click="visible = false">{{ $t('cancel') }}</el-button> |
|
|
|
<el-button type="primary" |
|
|
|
@click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button> |
|
|
|
<el-button type="primary" @click="dataFormSubmitHandle()">{{ |
|
|
|
$t('confirm') |
|
|
|
}}</el-button> |
|
|
|
</template> |
|
|
|
</el-dialog> |
|
|
|
</template> |
|
|
|
|
|
|
|
<script> |
|
|
|
import debounce from 'lodash/debounce' |
|
|
|
import { clearLoginInfo } from '@/utils' |
|
|
|
import { clearLoginInfo, encryptedData } from '@/utils' |
|
|
|
import { requestPost } from '@/js/dai/request' |
|
|
|
export default { |
|
|
|
data () { |
|
|
|
data() { |
|
|
|
return { |
|
|
|
visible: false, |
|
|
|
pubKey: '', |
|
|
|
dataForm: { |
|
|
|
// password: '', |
|
|
|
password: '', |
|
|
|
newPassword: '', |
|
|
|
confirmPassword: '' |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
computed: { |
|
|
|
dataRule () { |
|
|
|
dataRule() { |
|
|
|
var validateConfirmPassword = (rule, value, callback) => { |
|
|
|
if (this.dataForm.newPassword !== value) { |
|
|
|
return callback(new Error(this.$t('updatePassword.validate.confirmPassword'))) |
|
|
|
return callback( |
|
|
|
new Error(this.$t('updatePassword.validate.confirmPassword')) |
|
|
|
) |
|
|
|
} |
|
|
|
callback() |
|
|
|
} |
|
|
|
return { |
|
|
|
// password: [ |
|
|
|
// { required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|
|
|
// ], |
|
|
|
password: [ |
|
|
|
{ |
|
|
|
required: true, |
|
|
|
message: this.$t('validate.required'), |
|
|
|
trigger: 'blur' |
|
|
|
} |
|
|
|
], |
|
|
|
newPassword: [ |
|
|
|
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|
|
|
{ |
|
|
|
required: true, |
|
|
|
message: this.$t('validate.required'), |
|
|
|
trigger: 'blur' |
|
|
|
} |
|
|
|
], |
|
|
|
confirmPassword: [ |
|
|
|
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }, |
|
|
|
{ |
|
|
|
required: true, |
|
|
|
message: this.$t('validate.required'), |
|
|
|
trigger: 'blur' |
|
|
|
}, |
|
|
|
{ validator: validateConfirmPassword, trigger: 'blur' } |
|
|
|
] |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
init () { |
|
|
|
init() { |
|
|
|
this.visible = true |
|
|
|
this.$nextTick(() => { |
|
|
|
this.$refs['dataForm'].resetFields() |
|
|
|
}) |
|
|
|
|
|
|
|
//获取公钥 |
|
|
|
this.getPubKey() |
|
|
|
}, |
|
|
|
// 表单提交 |
|
|
|
dataFormSubmitHandle () { |
|
|
|
this.$refs['dataForm'].validate((valid) => { |
|
|
|
if (!valid) { |
|
|
|
return false |
|
|
|
|
|
|
|
// 获取公钥 |
|
|
|
getPubKey() { |
|
|
|
this.$http |
|
|
|
.post('/auth/govweb/getKey') |
|
|
|
.then(({ data: res }) => { |
|
|
|
if (res.code !== 0) { |
|
|
|
return this.$message.error(res.msg) |
|
|
|
} |
|
|
|
|
|
|
|
this.submitForm() |
|
|
|
this.pubKey = res.data // 获取到公钥; |
|
|
|
}) |
|
|
|
.catch(() => {}) |
|
|
|
}, |
|
|
|
|
|
|
|
validateComplexity(pwd) { |
|
|
|
let regex = new RegExp('(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z]).{8,20}') |
|
|
|
|
|
|
|
if (!regex.test(pwd)) { |
|
|
|
this.$message({ |
|
|
|
message: '密码必须8-20个字符,而且同时包含大小写字母和数字', |
|
|
|
type: 'error' |
|
|
|
}) |
|
|
|
return false |
|
|
|
} |
|
|
|
return true |
|
|
|
}, |
|
|
|
|
|
|
|
async submitForm () { |
|
|
|
// 表单提交 |
|
|
|
dataFormSubmitHandle() { |
|
|
|
this.$refs['dataForm'].validate((valid) => { |
|
|
|
if (!valid) return false |
|
|
|
if (!this.validateComplexity(this.dataForm.newPassword)) return false |
|
|
|
|
|
|
|
if (this.dataForm.newPassword !== this.dataForm.confirmPassword) { |
|
|
|
this.$message.info('请输入相同密码') |
|
|
|
this.$message.error('请输入相同密码') |
|
|
|
return false |
|
|
|
} |
|
|
|
|
|
|
|
this.submitForm() |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
async submitForm() { |
|
|
|
const { pubKey } = this |
|
|
|
const url = '/epmetuser/operuser/updatePwd' |
|
|
|
const params = { |
|
|
|
// workAuth: 1, |
|
|
|
// resiAuth: 1, |
|
|
|
newPassword: this.dataForm.newPassword, |
|
|
|
|
|
|
|
oldPassword: encryptedData(pubKey, this.dataForm.password), |
|
|
|
password: encryptedData(pubKey, this.dataForm.newPassword), |
|
|
|
newPassword: encryptedData(pubKey, this.dataForm.newPassword), |
|
|
|
confirmNewPassword: encryptedData(pubKey, this.dataForm.confirmPassword) |
|
|
|
} |
|
|
|
|
|
|
|
const { data, code, msg } = await requestPost(url, params) |
|
|
|
if (code === 0) { |
|
|
|
this.$message.success('操作成功') |
|
|
|
this.visible = false |
|
|
|
|
|
|
|
} else { |
|
|
|
this.$message.error(msg) |
|
|
|
} |
|
|
|