16 changed files with 241 additions and 220 deletions
@ -0,0 +1,145 @@ |
|||||||
|
<template> |
||||||
|
<el-dialog |
||||||
|
title="修改密码" |
||||||
|
:async="true" |
||||||
|
width="550px" |
||||||
|
@confirm="handleSubmit" |
||||||
|
> |
||||||
|
<el-form |
||||||
|
ref="formRef" |
||||||
|
:model="formData" |
||||||
|
label-width="84px" |
||||||
|
:rules="formRules" |
||||||
|
> |
||||||
|
<el-form-item label="旧密码" prop="oldpassword"> |
||||||
|
<el-input |
||||||
|
v-model.trim="formData.oldpassword" |
||||||
|
show-password |
||||||
|
clearable |
||||||
|
placeholder="请输入旧密码" |
||||||
|
/> |
||||||
|
</el-form-item> |
||||||
|
|
||||||
|
<el-form-item label="新密码" prop="password"> |
||||||
|
<el-input |
||||||
|
v-model.trim="formData.password" |
||||||
|
show-password |
||||||
|
clearable |
||||||
|
placeholder="请输入密码" |
||||||
|
/> |
||||||
|
</el-form-item> |
||||||
|
|
||||||
|
<el-form-item label="确认密码" prop="passwordConfirm"> |
||||||
|
<el-input |
||||||
|
v-model.trim="formData.passwordConfirm" |
||||||
|
show-password |
||||||
|
clearable |
||||||
|
placeholder="请输入确认密码" |
||||||
|
/> |
||||||
|
</el-form-item> |
||||||
|
</el-form> |
||||||
|
<template #footer> |
||||||
|
<div class="dialog-footer"> |
||||||
|
<el-button @click="emit('close')">取消</el-button> |
||||||
|
<el-button type="primary" @click="handleSubmit">确认修改</el-button> |
||||||
|
</div> |
||||||
|
</template> |
||||||
|
</el-dialog> |
||||||
|
</template> |
||||||
|
<script lang="ts" setup> |
||||||
|
import type { FormInstance } from "element-plus"; |
||||||
|
import { |
||||||
|
adminAdd, |
||||||
|
adminEdit, |
||||||
|
adminDetail, |
||||||
|
resetPassword, |
||||||
|
} from "@/api/perms/admin"; |
||||||
|
import feedback from "@/utils/feedback"; |
||||||
|
const emit = defineEmits(["close"]); |
||||||
|
const formRef = shallowRef<FormInstance>(); |
||||||
|
|
||||||
|
const formData = reactive({ |
||||||
|
oldpassword: "", |
||||||
|
password: "", |
||||||
|
passwordConfirm: "", |
||||||
|
}); |
||||||
|
|
||||||
|
const password = (rule: object, value: string, callback: any) => { |
||||||
|
if (formData.oldpassword) { |
||||||
|
if (value == formData.oldpassword) |
||||||
|
callback(new Error("旧密码和原密码相同!")); |
||||||
|
} |
||||||
|
callback(); |
||||||
|
}; |
||||||
|
|
||||||
|
const passwordConfirmValidator = ( |
||||||
|
rule: object, |
||||||
|
value: string, |
||||||
|
callback: any |
||||||
|
) => { |
||||||
|
if (formData.password) { |
||||||
|
if (!value) callback(new Error("请再次输入密码")); |
||||||
|
if (value !== formData.password) |
||||||
|
callback(new Error("两次输入密码不一致!")); |
||||||
|
} |
||||||
|
callback(); |
||||||
|
}; |
||||||
|
const formRules = reactive({ |
||||||
|
oldpassword: [ |
||||||
|
{ |
||||||
|
required: true, |
||||||
|
message: "请输入旧密码", |
||||||
|
trigger: "blur", |
||||||
|
}, |
||||||
|
] as any[], |
||||||
|
password: [ |
||||||
|
{ |
||||||
|
required: true, |
||||||
|
message: "请输入密码", |
||||||
|
trigger: "blur", |
||||||
|
}, |
||||||
|
{ |
||||||
|
validator: password, |
||||||
|
trigger: "blur", |
||||||
|
}, |
||||||
|
] as any[], |
||||||
|
passwordConfirm: [ |
||||||
|
{ |
||||||
|
required: true, |
||||||
|
message: "请再次输入密码", |
||||||
|
trigger: "blur", |
||||||
|
}, |
||||||
|
{ |
||||||
|
validator: passwordConfirmValidator, |
||||||
|
trigger: "blur", |
||||||
|
}, |
||||||
|
] as any[], |
||||||
|
}); |
||||||
|
|
||||||
|
const handleSubmit = async () => { |
||||||
|
await formRef.value?.validate(); |
||||||
|
await resetPassword(formData); |
||||||
|
feedback.msgSuccess("密码修改成功"); |
||||||
|
emit("close"); |
||||||
|
} |
||||||
|
|
||||||
|
const setFormData = async (row: any) => { |
||||||
|
formRules.password = [ |
||||||
|
{ |
||||||
|
validator: password, |
||||||
|
trigger: "blur", |
||||||
|
}, |
||||||
|
]; |
||||||
|
formRules.passwordConfirm = [ |
||||||
|
{ |
||||||
|
validator: passwordConfirmValidator, |
||||||
|
trigger: "blur", |
||||||
|
}, |
||||||
|
]; |
||||||
|
}; |
||||||
|
|
||||||
|
const handleClose = () => { |
||||||
|
emit("close"); |
||||||
|
}; |
||||||
|
|
||||||
|
</script> |
||||||
@ -1,155 +0,0 @@ |
|||||||
<template> |
|
||||||
<div class="edit-popup"> |
|
||||||
<popup |
|
||||||
ref="popupRef" |
|
||||||
:title="popupTitle" |
|
||||||
:async="true" |
|
||||||
width="550px" |
|
||||||
@confirm="handleSubmit" |
|
||||||
@close="handleClose" |
|
||||||
> |
|
||||||
<el-form ref="formRef" :model="formData" label-width="84px" :rules="formRules"> |
|
||||||
|
|
||||||
<el-form-item label="旧密码" prop="oldpassword"> |
|
||||||
<el-input |
|
||||||
v-model.trim="formData.oldpassword" |
|
||||||
show-password |
|
||||||
clearable |
|
||||||
placeholder="请输入旧密码" |
|
||||||
/> |
|
||||||
</el-form-item> |
|
||||||
|
|
||||||
<el-form-item label="新密码" prop="password"> |
|
||||||
<el-input |
|
||||||
v-model.trim="formData.password" |
|
||||||
show-password |
|
||||||
clearable |
|
||||||
placeholder="请输入密码" |
|
||||||
/> |
|
||||||
</el-form-item> |
|
||||||
|
|
||||||
<el-form-item label="确认密码" prop="passwordConfirm"> |
|
||||||
<el-input |
|
||||||
v-model.trim="formData.passwordConfirm" |
|
||||||
show-password |
|
||||||
clearable |
|
||||||
placeholder="请输入确认密码" |
|
||||||
/> |
|
||||||
</el-form-item> |
|
||||||
|
|
||||||
|
|
||||||
</el-form> |
|
||||||
</popup> |
|
||||||
</div> |
|
||||||
</template> |
|
||||||
<script lang="ts" setup> |
|
||||||
import type { FormInstance } from 'element-plus' |
|
||||||
import Popup from '@/components/popup/index.vue' |
|
||||||
import { adminAdd, adminEdit, adminDetail, resetPassword } from '@/api/perms/admin' |
|
||||||
import { useDictOptions } from '@/hooks/useDictOptions' |
|
||||||
import { roleAll } from '@/api/perms/role' |
|
||||||
import { postAll } from '@/api/org/post' |
|
||||||
import { deptLists } from '@/api/org/department' |
|
||||||
import feedback from '@/utils/feedback' |
|
||||||
const emit = defineEmits(['success', 'close']) |
|
||||||
const formRef = shallowRef<FormInstance>() |
|
||||||
const popupRef = shallowRef<InstanceType<typeof Popup>>() |
|
||||||
const mode = ref('add') |
|
||||||
const popupTitle = computed(() => { |
|
||||||
return '修改密码' |
|
||||||
}) |
|
||||||
|
|
||||||
const formData = reactive({ |
|
||||||
oldpassword: '', |
|
||||||
password: '', |
|
||||||
passwordConfirm: '', |
|
||||||
}) |
|
||||||
|
|
||||||
|
|
||||||
const popupTrue = computed(() => { |
|
||||||
return mode.value == 'edit' ? true: false |
|
||||||
}) |
|
||||||
const password = (rule: object, value: string, callback: any) => { |
|
||||||
if (formData.oldpassword) { |
|
||||||
if (value == formData.oldpassword) callback(new Error('旧密码和原密码相同!')) |
|
||||||
} |
|
||||||
callback() |
|
||||||
} |
|
||||||
|
|
||||||
const passwordConfirmValidator = (rule: object, value: string, callback: any) => { |
|
||||||
if (formData.password) { |
|
||||||
if (!value) callback(new Error('请再次输入密码')) |
|
||||||
if (value !== formData.password) callback(new Error('两次输入密码不一致!')) |
|
||||||
} |
|
||||||
callback() |
|
||||||
} |
|
||||||
const formRules = reactive({ |
|
||||||
oldpassword: [ |
|
||||||
{ |
|
||||||
required: true, |
|
||||||
message: '请输入旧密码', |
|
||||||
trigger: 'blur' |
|
||||||
} |
|
||||||
] as any[], |
|
||||||
password: [ |
|
||||||
{ |
|
||||||
required: true, |
|
||||||
message: '请输入密码', |
|
||||||
trigger: 'blur' |
|
||||||
}, |
|
||||||
{ |
|
||||||
validator: password, |
|
||||||
trigger: 'blur' |
|
||||||
} |
|
||||||
] as any[], |
|
||||||
passwordConfirm: [ |
|
||||||
{ |
|
||||||
required: true, |
|
||||||
message: '请再次输入密码', |
|
||||||
trigger: 'blur' |
|
||||||
}, |
|
||||||
{ |
|
||||||
validator: passwordConfirmValidator, |
|
||||||
trigger: 'blur' |
|
||||||
} |
|
||||||
] as any[] |
|
||||||
}) |
|
||||||
|
|
||||||
|
|
||||||
const handleSubmit = async () => { |
|
||||||
await formRef.value?.validate() |
|
||||||
await resetPassword(formData) |
|
||||||
popupRef.value?.close() |
|
||||||
feedback.msgSuccess('操作成功') |
|
||||||
emit('success') |
|
||||||
} |
|
||||||
|
|
||||||
const open = (type = 'add') => { |
|
||||||
mode.value = type |
|
||||||
popupRef.value?.open() |
|
||||||
} |
|
||||||
|
|
||||||
const setFormData = async (row: any) => { |
|
||||||
formRules.password = [ |
|
||||||
{ |
|
||||||
validator: password, |
|
||||||
trigger: 'blur' |
|
||||||
} |
|
||||||
] |
|
||||||
formRules.passwordConfirm = [ |
|
||||||
{ |
|
||||||
validator: passwordConfirmValidator, |
|
||||||
trigger: 'blur' |
|
||||||
} |
|
||||||
] |
|
||||||
} |
|
||||||
|
|
||||||
const handleClose = () => { |
|
||||||
emit('close') |
|
||||||
} |
|
||||||
|
|
||||||
defineExpose({ |
|
||||||
open, |
|
||||||
setFormData |
|
||||||
}) |
|
||||||
</script> |
|
||||||
Loading…
Reference in new issue