提交 5ab01049 authored 作者: jinrongbin's avatar jinrongbin

修改手机号码

上级 9fe8f82f
<template>
<BasicModal v-bind="$attrs" @register="registerModal" title="修改手机号" @ok="handleSubmit" width="600px">
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script lang="ts" setup>
import { ref, unref, defineExpose } from 'vue';
import { rules } from '/@/utils/helper/validator';
import { defHttp } from '/@/utils/http/axios';
import { BasicModal, useModalInner } from '/@/components/Modal';
import { BasicForm, useForm } from '/@/components/Form/index';
import { useMessage } from '/@/hooks/web/useMessage';
// 声明Emits
const emit = defineEmits(['register']);
const $message = useMessage();
const formRef = ref();
const username = ref('');
//表单配置
const [registerForm, { resetFields, validate, clearValidate }] = useForm({
schemas: [
// {
// label: '旧密码',
// field: 'oldphone',
// component: 'Input',
// //动态自定义正则,values: 当前表单的所有值
// dynamicRules: ({ values }) => {
// console.log('values:', values);
// //需要return
// return [
// {
// //默认开启表单检验
// required: true,
// // value 当前手机号输入的值
// validator: (_, value) => {
// //需要return 一个Promise对象
// return new Promise((resolve, reject) => {
// if (!value) {
// reject('请输入手机号!');
// }
// //验证手机号是否正确
// let reg = /^1[3456789]\d{9}$/;
// if (!reg.test(value)) {
// reject('请输入正确手机号!');
// }
// resolve();
// });
// },
// },
// ];
// },
// },
{
label: '新手机号',
field: 'phone',
component: 'Input',
componentProps: {
placeholder: '请输入新手机号',
},
//动态自定义正则,values: 当前表单的所有值
dynamicRules: ({ values }) => {
console.log('values:', values);
//需要return
return [
{
//默认开启表单检验
required: true,
// value 当前手机号输入的值
validator: (_, value) => {
//需要return 一个Promise对象
return new Promise((resolve, reject) => {
if (!value) {
reject('请输入手机号!');
}
//验证手机号是否正确
let reg = /^1[3456789]\d{9}$/;
if (!reg.test(value)) {
reject('请输入正确手机号!');
}
resolve();
});
},
},
];
},
},
],
showActionButtonGroup: false,
});
//表单赋值
const [registerModal, { setModalProps, closeModal }] = useModalInner();
//表单提交事件
async function handleSubmit() {
try {
const values = await validate();
setModalProps({ confirmLoading: true });
//提交表单
let params = Object.assign({ id: unref(username) }, values);
defHttp.post({ url: '/sys/user/changePhone', 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({
show,
});
</script>
......@@ -29,6 +29,7 @@
<MenuDivider v-if="getShowDoc" />
<!-- <MenuItem key="account" :text="t('layout.header.dropdownItemSwitchAccount')" icon="ant-design:setting-outlined" /> -->
<MenuItem key="password" :text="t('layout.header.dropdownItemSwitchPassword')" icon="ant-design:edit-outlined" />
<MenuItem key="phone" :text="t('layout.header.dropdownItemSwitchPhone')" icon="ant-design:edit-outlined" />
<!-- <MenuItem key="depart" :text="t('layout.header.dropdownItemSwitchDepart')" icon="ant-design:cluster-outlined" /> -->
<!-- <MenuItem key="cache" :text="t('layout.header.dropdownItemRefreshCache')" icon="ion:sync-outline" /> -->
<!-- <MenuItem
......@@ -44,6 +45,7 @@
<LockAction @register="register" />
<DepartSelect ref="loginSelectRef" />
<UpdatePassword ref="updatePasswordRef" />
<UpdatePhone ref="updatePhoneRef" />
</template>
<script lang="ts">
// components
......@@ -70,7 +72,7 @@
import { removeAuthCache, setAuthCache } from '/src/utils/auth';
import { getFileAccessHttpUrl } from '/@/utils/common/compUtils';
type MenuEvent = 'logout' | 'doc' | 'lock' | 'cache' | 'depart';
type MenuEvent = 'logout' | 'doc' | 'lock' | 'cache' | 'depart' | 'phone' | 'password' | 'account';
const { createMessage } = useMessage();
export default defineComponent({
name: 'UserDropdown',
......@@ -83,6 +85,7 @@
LockAction: createAsyncComponent(() => import('../lock/LockModal.vue')),
DepartSelect: createAsyncComponent(() => import('./DepartSelect.vue')),
UpdatePassword: createAsyncComponent(() => import('./UpdatePassword.vue')),
UpdatePhone: createAsyncComponent(() => import('./UpdatePhone.vue')),
},
props: {
theme: propTypes.oneOf(['dark', 'light']),
......@@ -191,6 +194,11 @@
updatePasswordRef.value.show(userStore.getUserInfo.username);
}
const updatePhoneRef = ref();
function updatePhone() {
updatePhoneRef.value.show(userStore.getUserInfo.id);
}
function handleMenuClick(e: { key: MenuEvent }) {
switch (e.key) {
case 'logout':
......@@ -211,6 +219,9 @@
case 'password':
updatePassword();
break;
case 'phone':
updatePhone();
break;
case 'account':
//update-begin---author:wangshuai ---date:20221125 for:进入用户设置页面------------
go(`/system/usersetting`);
......@@ -233,6 +244,7 @@
getUseLockPage,
loginSelectRef,
updatePasswordRef,
updatePhoneRef,
};
},
});
......
......@@ -5,6 +5,7 @@ export default {
dropdownItemDoc: 'Document',
dropdownItemLoginOut: 'Login Out',
dropdownItemSwitchPassword: 'Password Change',
dropdownItemSwitchPhone: 'Phone Change',
dropdownItemSwitchDepart: 'Switch Department',
dropdownItemRefreshCache: 'Clean cache',
dropdownItemSwitchAccount: 'Account Setting',
......
......@@ -5,6 +5,7 @@ export default {
dropdownItemDoc: '官网',
dropdownItemLoginOut: '退出系统',
dropdownItemSwitchPassword: '密码修改',
dropdownItemSwitchPhone: '密码手机号',
dropdownItemSwitchDepart: '切换部门',
dropdownItemRefreshCache: '刷新缓存',
dropdownItemSwitchAccount: '账户设置',
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论