|
@@ -5,16 +5,18 @@
|
|
|
title="修改密码"
|
|
|
:mask-closable="false"
|
|
|
:esc-to-close="false"
|
|
|
+ :closable="false"
|
|
|
+ @before-open="modalBeforeOpen"
|
|
|
>
|
|
|
<a-form ref="formRef" :model="formData" :rules="rules">
|
|
|
- <a-form-item field="oldPassword" label="旧密码" auto-label-width>
|
|
|
+ <!-- <a-form-item field="oldPassword" label="旧密码" auto-label-width>
|
|
|
<a-input-password
|
|
|
v-model.trim="formData.oldPassword"
|
|
|
placeholder="请输入旧密码"
|
|
|
allow-clear
|
|
|
>
|
|
|
</a-input-password>
|
|
|
- </a-form-item>
|
|
|
+ </a-form-item> -->
|
|
|
<a-form-item field="password" label="新密码">
|
|
|
<a-input-password
|
|
|
v-model.trim="formData.password"
|
|
@@ -34,7 +36,7 @@
|
|
|
</a-form>
|
|
|
|
|
|
<template #footer>
|
|
|
- <a-button @click="close">取消</a-button>
|
|
|
+ <a-button @click="cancel">取消</a-button>
|
|
|
<a-button type="primary" :disabled="loading" @click="confirm"
|
|
|
>确认</a-button
|
|
|
>
|
|
@@ -43,14 +45,13 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
- import { reactive, ref } from 'vue';
|
|
|
+ import { reactive, ref, nextTick } from 'vue';
|
|
|
import type { FormInstance, FieldRule } from '@arco-design/web-vue/es/form';
|
|
|
- import { password, strictPassword } from '@/utils/formRules';
|
|
|
+ import { password } from '@/utils/formRules';
|
|
|
import useLoading from '@/hooks/loading';
|
|
|
import { updatePwd } from '@/api/user';
|
|
|
import { Message } from '@arco-design/web-vue';
|
|
|
- import { getBase64 } from '@/utils/crypto';
|
|
|
- import { useUserStore } from '@/store';
|
|
|
+ // import { getBase64 } from '@/utils/crypto';
|
|
|
import useModal from '@/hooks/modal';
|
|
|
|
|
|
defineOptions({
|
|
@@ -61,11 +62,10 @@
|
|
|
const { visible, open, close } = useModal();
|
|
|
defineExpose({ open, close });
|
|
|
|
|
|
- const emit = defineEmits(['modified']);
|
|
|
+ const emit = defineEmits(['modified', 'cancel']);
|
|
|
|
|
|
- const userStore = useUserStore();
|
|
|
const defaultFormData = {
|
|
|
- oldPassword: '',
|
|
|
+ // oldPassword: '',
|
|
|
password: '',
|
|
|
rePassword: '',
|
|
|
};
|
|
@@ -73,30 +73,20 @@
|
|
|
|
|
|
const formRef = ref<FormInstance>();
|
|
|
const formData = reactive<FormDataType>({ ...defaultFormData });
|
|
|
- const passwordRule: FieldRule[] = [
|
|
|
- ...strictPassword,
|
|
|
- {
|
|
|
- validator: (value, callback) => {
|
|
|
- if (value === userStore.account) {
|
|
|
- return callback('禁止使用用户账户号作为密码');
|
|
|
- }
|
|
|
- return callback();
|
|
|
- },
|
|
|
- },
|
|
|
- ];
|
|
|
+ const passwordRule: FieldRule[] = [...password];
|
|
|
const rules: Record<keyof FormDataType, FieldRule[]> = {
|
|
|
- oldPassword: password,
|
|
|
+ // oldPassword: password,
|
|
|
password: [
|
|
|
...passwordRule,
|
|
|
- {
|
|
|
- validator: (value, callback) => {
|
|
|
- if (value === formData.oldPassword) {
|
|
|
- callback('新旧密码不可以相同');
|
|
|
- } else {
|
|
|
- callback();
|
|
|
- }
|
|
|
- },
|
|
|
- },
|
|
|
+ // {
|
|
|
+ // validator: (value, callback) => {
|
|
|
+ // if (value === formData.oldPassword) {
|
|
|
+ // callback('新旧密码不可以相同');
|
|
|
+ // } else {
|
|
|
+ // callback();
|
|
|
+ // }
|
|
|
+ // },
|
|
|
+ // },
|
|
|
],
|
|
|
rePassword: [
|
|
|
...passwordRule,
|
|
@@ -120,15 +110,29 @@
|
|
|
|
|
|
setLoading(true);
|
|
|
const datas = {
|
|
|
- id: userStore.id as number,
|
|
|
- oldPassword: getBase64(formData.oldPassword),
|
|
|
- password: getBase64(formData.password),
|
|
|
+ // oldPassword: formData.oldPassword,
|
|
|
+ password: formData.password,
|
|
|
};
|
|
|
- const res = await updatePwd(datas).catch(() => false);
|
|
|
+ let res = true;
|
|
|
+ await updatePwd(datas).catch(() => {
|
|
|
+ res = false;
|
|
|
+ });
|
|
|
setLoading(false);
|
|
|
if (!res) return;
|
|
|
Message.success('修改成功!');
|
|
|
emit('modified', datas);
|
|
|
close();
|
|
|
}
|
|
|
+
|
|
|
+ function cancel() {
|
|
|
+ emit('cancel');
|
|
|
+ close();
|
|
|
+ }
|
|
|
+
|
|
|
+ function modalBeforeOpen() {
|
|
|
+ formRef.value?.resetFields();
|
|
|
+ nextTick(() => {
|
|
|
+ formRef.value?.clearValidate();
|
|
|
+ });
|
|
|
+ }
|
|
|
</script>
|