mirror of
https://github.com/jeecgboot/JeecgBoot.git
synced 2025-12-11 20:32:49 +00:00
101 lines
3.2 KiB
Vue
101 lines
3.2 KiB
Vue
<template>
|
||
<BasicModal v-bind="$attrs" @register="registerModal" :title="title" @ok="handleSubmit" width="500px" :bodyStyle="{ padding: '20px 40px 20px 20px'}">
|
||
<BasicForm @register="registerForm" />
|
||
</BasicModal>
|
||
</template>
|
||
<script lang="ts" setup>
|
||
import { ref, unref } from 'vue';
|
||
import { rules } from '/@/utils/helper/validator';
|
||
import { defHttp } from '/@/utils/http/axios';
|
||
import { BasicModal, useModalInner } from '/@/components/Modal';
|
||
import BasicForm from '/@/components/Form/src/BasicForm.vue';
|
||
import { useForm } from '/@/components/Form/src/hooks/useForm';
|
||
import { useMessage } from '/@/hooks/web/useMessage';
|
||
import { useLocaleStore } from '/@/store/modules/locale';
|
||
import { useI18n } from '/@/hooks/web/useI18n';
|
||
const localeStore = useLocaleStore();
|
||
const { t } = useI18n();
|
||
// 声明Emits
|
||
const emit = defineEmits(['register']);
|
||
const $message = useMessage();
|
||
const formRef = ref();
|
||
const username = ref('');
|
||
// update-begin--author:liaozhiyang---date:20240124---for:【QQYUN-7970】国际化
|
||
const title = ref(t('layout.changePassword.changePassword'));
|
||
//表单配置
|
||
const [registerForm, { resetFields, validate, clearValidate }] = useForm({
|
||
schemas: [
|
||
{
|
||
label: t('layout.changePassword.oldPassword'),
|
||
field: 'oldpassword',
|
||
component: 'InputPassword',
|
||
required: true,
|
||
},
|
||
{
|
||
label: t('layout.changePassword.newPassword'),
|
||
field: 'password',
|
||
component: 'StrengthMeter',
|
||
componentProps: {
|
||
placeholder: t('layout.changePassword.pleaseEnterNewPassword'),
|
||
},
|
||
rules: [
|
||
{
|
||
required: true,
|
||
message: t('layout.changePassword.pleaseEnterNewPassword'),
|
||
},
|
||
],
|
||
},
|
||
{
|
||
label: t('layout.changePassword.confirmNewPassword'),
|
||
field: 'confirmpassword',
|
||
component: 'InputPassword',
|
||
dynamicRules: ({ values }) => rules.confirmPassword(values, true),
|
||
},
|
||
],
|
||
showActionButtonGroup: false,
|
||
wrapperCol: null,
|
||
labelWidth: localeStore.getLocale == 'zh_CN' ? 100 : 160,
|
||
});
|
||
// update-end--author:liaozhiyang---date:20240124---for:【QQYUN-7970】国际化
|
||
//表单赋值
|
||
const [registerModal, { setModalProps, closeModal }] = useModalInner();
|
||
|
||
//表单提交事件
|
||
async function handleSubmit() {
|
||
try {
|
||
const values = await validate();
|
||
setModalProps({ confirmLoading: true });
|
||
//提交表单
|
||
let params = Object.assign({ username: unref(username) }, values);
|
||
defHttp.put({ url: '/sys/user/updatePassword', params }, { isTransformResponse: false }).then((res) => {
|
||
if (res.success) {
|
||
$message.createMessage.success(res.message);
|
||
//关闭弹窗
|
||
closeModal();
|
||
} else {
|
||
$message.createMessage.warning(res.message);
|
||
}
|
||
});
|
||
} finally {
|
||
setModalProps({ confirmLoading: false });
|
||
}
|
||
}
|
||
|
||
async function show(name) {
|
||
if (!name) {
|
||
$message.createMessage.warning('当前系统无登录用户!');
|
||
return;
|
||
} else {
|
||
username.value = name;
|
||
await setModalProps({ visible: true });
|
||
await resetFields();
|
||
await clearValidate();
|
||
}
|
||
}
|
||
|
||
defineExpose({
|
||
title,
|
||
show,
|
||
});
|
||
</script>
|