mirror of
https://gitee.com/xiongmao1988/rax-medical.git
synced 2025-08-24 13:04:57 +08:00
密码正则校验
This commit is contained in:
parent
04c78723ee
commit
a44ae3433d
|
@ -1,53 +1,59 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="user-info-part">
|
<div class="user-info-part">
|
||||||
<div class="header-box">
|
<div class="header-box">
|
||||||
<h3>个人信息</h3>
|
<h3>个人信息</h3>
|
||||||
<el-icon @click="close">
|
<el-icon @click="close">
|
||||||
<Close/>
|
<Close/>
|
||||||
</el-icon>
|
</el-icon>
|
||||||
|
</div>
|
||||||
|
<div class="custom-tabs">
|
||||||
|
<div class="tabs-item" v-for="(item, index) in ['基础信息', '安全信息']" :key="item"
|
||||||
|
:class="{ 'active': tabActive === index }" @click="tabActive = index">{{ item }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<el-form ref="formRef" :model="formData" :rules="rules" label-width="60">
|
||||||
|
<template v-if="tabActive === 0">
|
||||||
|
<el-upload action="#" :limit="1" :http-request="handleUpload" ref="uploadRef"
|
||||||
|
:show-file-list="false" :on-success="handleAvatarSuccess"
|
||||||
|
:before-upload="beforeAvatarUpload">
|
||||||
|
<img v-if="formData.avatar" :src="'/api' + formData.avatar" class="avatar"/>
|
||||||
|
<img v-else src="@/assets/imgs/home/avatar.png" class="avatar"/>
|
||||||
|
</el-upload>
|
||||||
|
<el-form-item label="用户名" prop="account">
|
||||||
|
<el-input v-model="formData.account" disabled></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="电话" prop="phone">
|
||||||
|
<el-input v-model="formData.phone" placeholder="请输入手机号"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="姓名" prop="name">
|
||||||
|
<el-input v-model="formData.name" placeholder="请输入姓名"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="邮箱" prop="mailbox">
|
||||||
|
<el-input v-model="formData.mailbox" placeholder="请输入邮箱"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
<el-form-item label="密码" prop="password" label-width="100">
|
||||||
|
<el-input v-model="formData.password" type="password" show-password
|
||||||
|
placeholder="请输入密码"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="新密码" prop="newPassword" label-width="100">
|
||||||
|
<el-input v-model="formData.newPassword" type="password" show-password
|
||||||
|
placeholder="请输入新密码"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="确认密码" prop="confirmPassword" label-width="100">
|
||||||
|
<el-input v-model="formData.confirmPassword" type="password" show-password
|
||||||
|
placeholder="请输入新密码"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</el-form>
|
||||||
|
<div class="submit-box">
|
||||||
|
<el-button type="primary" @click="submitForm">{{
|
||||||
|
tabActive === 0 ? '更新个人信息' : '修改密码'
|
||||||
|
}}
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="custom-tabs">
|
|
||||||
<div class="tabs-item" v-for="(item, index) in ['基础信息', '安全信息']" :key="item"
|
|
||||||
:class="{ 'active': tabActive === index }" @click="tabActive = index">{{ item }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<el-form ref="formRef" :model="formData" :rules="rules" label-width="60">
|
|
||||||
<template v-if="tabActive === 0">
|
|
||||||
<el-upload action="#" :limit="1" :http-request="handleUpload" ref="uploadRef"
|
|
||||||
:show-file-list="false" :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload">
|
|
||||||
<img v-if="formData.avatar" :src="'/api' + formData.avatar" class="avatar"/>
|
|
||||||
<img v-else src="@/assets/imgs/home/avatar.png" class="avatar"/>
|
|
||||||
</el-upload>
|
|
||||||
<el-form-item label="用户名" prop="account">
|
|
||||||
<el-input v-model="formData.account" disabled></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="电话" prop="phone">
|
|
||||||
<el-input v-model="formData.phone" placeholder="请输入手机号"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="姓名" prop="name">
|
|
||||||
<el-input v-model="formData.name" placeholder="请输入姓名"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="邮箱" prop="mailbox">
|
|
||||||
<el-input v-model="formData.mailbox" placeholder="请输入邮箱"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
<template v-else>
|
|
||||||
<el-form-item label="密码" prop="password" label-width="100">
|
|
||||||
<el-input v-model="formData.password" type="password" show-password placeholder="请输入密码"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="新密码" prop="newPassword" label-width="100">
|
|
||||||
<el-input v-model="formData.newPassword" type="password" show-password placeholder="请输入新密码"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="确认密码" prop="confirmPassword" label-width="100">
|
|
||||||
<el-input v-model="formData.confirmPassword" type="password" show-password
|
|
||||||
placeholder="请输入新密码"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-form>
|
|
||||||
<div class="submit-box">
|
|
||||||
<el-button type="primary" @click="submitForm">{{ tabActive === 0 ? '更新个人信息' : '修改密码' }}</el-button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang='ts' setup>
|
<script lang='ts' setup>
|
||||||
|
@ -57,6 +63,7 @@ import {ElMessage} from 'element-plus'
|
||||||
import {editPassword, getUserInfo, updateUserInfo} from "@/api/user";
|
import {editPassword, getUserInfo, updateUserInfo} from "@/api/user";
|
||||||
import {handleHttpUpload} from "@/api/file-upload";
|
import {handleHttpUpload} from "@/api/file-upload";
|
||||||
import {useUserStore} from "@/stores/user-info-store";
|
import {useUserStore} from "@/stores/user-info-store";
|
||||||
|
import {REGEXP} from "@/enum/log-enum";
|
||||||
|
|
||||||
const emit = defineEmits(['close'])
|
const emit = defineEmits(['close'])
|
||||||
|
|
||||||
|
@ -66,199 +73,199 @@ const formRef = ref()
|
||||||
const uploadRef = ref()
|
const uploadRef = ref()
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getUserInfo().then((res: any) => {
|
getUserInfo().then((res: any) => {
|
||||||
if (res.data) {
|
if (res.data) {
|
||||||
formData.value.account = res.data.sysUser.username
|
formData.value.account = res.data.sysUser.username
|
||||||
formData.value.name = res.data.sysUser.name
|
formData.value.name = res.data.sysUser.name
|
||||||
formData.value.phone = res.data.sysUser.phone
|
formData.value.phone = res.data.sysUser.phone
|
||||||
formData.value.mailbox = res.data.sysUser.email
|
formData.value.mailbox = res.data.sysUser.email
|
||||||
formData.value.avatar = res.data.sysUser.avatar
|
formData.value.avatar = res.data.sysUser.avatar
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
const validatePassword = (rule: any, value: any, callback: any) => {
|
const validatePassword = (rule: any, value: any, callback: any) => {
|
||||||
if (formData.value.newPassword !== formData.value.confirmPassword) {
|
if (formData.value.newPassword !== formData.value.confirmPassword) {
|
||||||
callback(new Error('两次密码不一致'))
|
callback(new Error('两次密码不一致'))
|
||||||
} else {
|
} else {
|
||||||
callback()
|
callback()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//自定义校验规则函数
|
//自定义校验规则函数
|
||||||
const validatorPassword = (rule: any, value: any, callback: any) => {
|
const validatorPassword = (rule: any, value: any, callback: any) => {
|
||||||
if (value.length >= 6) {
|
if (!(new RegExp(REGEXP.PASSWORD).test(value))) {
|
||||||
callback();
|
callback("8~16位字母或数字(区分大小写)");
|
||||||
} else {
|
} else {
|
||||||
callback(new Error('密码长度至少6位'));
|
callback()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const validatorPhone = (rule: any, value: any, callback: any) => {
|
const validatorPhone = (rule: any, value: any, callback: any) => {
|
||||||
var isPhone = /^1(3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8}$/;
|
|
||||||
|
|
||||||
|
if (value.indexOf('****') >= 0) {
|
||||||
|
return callback().trim();
|
||||||
|
}
|
||||||
|
|
||||||
if (value.indexOf('****') >= 0) {
|
if (!new RegExp(REGEXP.PHONE).test(value)) {
|
||||||
return callback().trim();
|
callback(new Error('请输入合法手机号'));
|
||||||
}
|
} else {
|
||||||
|
callback();
|
||||||
if (!isPhone.test(value)) {
|
}
|
||||||
callback(new Error('请输入合法手机号'));
|
|
||||||
} else {
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const rules = reactive({
|
const rules = reactive({
|
||||||
phone: [
|
phone: [
|
||||||
{required: true, validator: validatorPhone, trigger: 'blur'},
|
{required: true, validator: validatorPhone, trigger: 'blur'},
|
||||||
],
|
],
|
||||||
name: [
|
name: [
|
||||||
{required: true, message: '请输入姓名', trigger: 'blur'},
|
{required: true, message: '请输入姓名', trigger: 'blur'},
|
||||||
],
|
],
|
||||||
mailbox: [
|
mailbox: [
|
||||||
{type: 'email', message: '邮箱格式不正确', trigger: ['blur', 'change']},
|
{type: 'email', message: '邮箱格式不正确', trigger: ['blur', 'change']},
|
||||||
],
|
],
|
||||||
password: [
|
password: [
|
||||||
{required: true, validator: validatorPassword, trigger: 'change'},
|
{required: true, validator: validatorPassword, trigger: 'change'},
|
||||||
],
|
],
|
||||||
newPassword: [
|
newPassword: [
|
||||||
{required: true, validator: validatorPassword, trigger: 'change'},
|
{required: true, validator: validatorPassword, trigger: 'change'},
|
||||||
//{ validator: validatePassword, trigger: 'blur' }
|
//{ validator: validatePassword, trigger: 'blur' }
|
||||||
],
|
],
|
||||||
confirmPassword: [
|
confirmPassword: [
|
||||||
{required: true, message: '请输入密码', trigger: 'change'},
|
{required: true, message: '请输入密码', trigger: 'change'},
|
||||||
{validator: validatePassword, trigger: 'blur'}
|
{required: true, validator: validatorPassword, trigger: 'change'},
|
||||||
]
|
{validator: validatePassword, trigger: 'blur'}
|
||||||
|
]
|
||||||
})
|
})
|
||||||
const tabActive = ref(0)
|
const tabActive = ref(0)
|
||||||
const formData = ref({
|
const formData = ref({
|
||||||
avatar: '',
|
avatar: '',
|
||||||
account: "",
|
account: "",
|
||||||
phone: '',
|
phone: '',
|
||||||
name: "",
|
name: "",
|
||||||
mailbox: '',
|
mailbox: '',
|
||||||
password: '',
|
password: '',
|
||||||
newPassword: '',
|
newPassword: '',
|
||||||
confirmPassword: ''
|
confirmPassword: ''
|
||||||
})
|
})
|
||||||
|
|
||||||
const close = () => {
|
const close = () => {
|
||||||
emit('close')
|
emit('close')
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleAvatarSuccess(uploadFile: any) {
|
function handleAvatarSuccess(uploadFile: any) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleUpload(options: any) {
|
function handleUpload(options: any) {
|
||||||
handleHttpUpload(options).then((res: any) => {
|
handleHttpUpload(options).then((res: any) => {
|
||||||
if (res && res.code == 0) {
|
if (res && res.code == 0) {
|
||||||
formData.value.avatar = res.data.url
|
formData.value.avatar = res.data.url
|
||||||
const param = {
|
const param = {
|
||||||
avatar: formData.value.avatar,
|
avatar: formData.value.avatar,
|
||||||
username: formData.value.account
|
username: formData.value.account
|
||||||
}
|
}
|
||||||
updateUserInfo(param).then((res: any) => {
|
updateUserInfo(param).then((res: any) => {
|
||||||
uploadRef.value.clearFiles();
|
uploadRef.value.clearFiles();
|
||||||
if (res && res.code != 0) {
|
if (res && res.code != 0) {
|
||||||
ElMessage.error(res.msg)
|
ElMessage.error(res.msg)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
ElMessage.error('图片格式错误')
|
||||||
}
|
}
|
||||||
})
|
|
||||||
} else {
|
|
||||||
ElMessage.error('图片格式错误')
|
|
||||||
}
|
|
||||||
|
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
ElMessage.error('图片格式错误')
|
ElMessage.error('图片格式错误')
|
||||||
options.onError(err);
|
options.onError(err);
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const beforeAvatarUpload: UploadProps['beforeUpload'] = (rawFile) => {
|
const beforeAvatarUpload: UploadProps['beforeUpload'] = (rawFile) => {
|
||||||
if (rawFile.type !== 'image/jpeg') {
|
if (rawFile.type !== 'image/jpeg') {
|
||||||
ElMessage.error('图片必须为jpg格式!')
|
ElMessage.error('图片必须为jpg格式!')
|
||||||
return false
|
return false
|
||||||
} else if (rawFile.size / 1024 / 1024 > 2) {
|
} else if (rawFile.size / 1024 / 1024 > 2) {
|
||||||
ElMessage.error('图片大小不得超过2MB!')
|
ElMessage.error('图片大小不得超过2MB!')
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
const submitForm = async () => {
|
const submitForm = async () => {
|
||||||
await formRef.value.validate((valid: any, fields: any) => {
|
await formRef.value.validate((valid: any, fields: any) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
// console.log('submit!')
|
// console.log('submit!')
|
||||||
// 更改用户名
|
// 更改用户名
|
||||||
useUserStore().setlogin('name', formData.value.name)
|
useUserStore().setlogin('name', formData.value.name)
|
||||||
if (tabActive.value == 0) {
|
if (tabActive.value == 0) {
|
||||||
const param = {
|
const param = {
|
||||||
name: formData.value.name,
|
name: formData.value.name,
|
||||||
phone: formData.value.phone,
|
phone: formData.value.phone,
|
||||||
email: formData.value.mailbox,
|
email: formData.value.mailbox,
|
||||||
username: formData.value.account
|
username: formData.value.account
|
||||||
|
}
|
||||||
|
updateUserInfo(param).then((res: any) => {
|
||||||
|
if (res && res.code == 0) {
|
||||||
|
ElMessage.success('更新成功')
|
||||||
|
close()
|
||||||
|
} else {
|
||||||
|
ElMessage.error(res.msg)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
editPassword({
|
||||||
|
password: formData.value.password,
|
||||||
|
newpassword1: formData.value.newPassword
|
||||||
|
}).then((res: any) => {
|
||||||
|
if (res && res.code == 0) {
|
||||||
|
formRef.value.resetFields(['password', 'newPassword', 'confirmPassword'])
|
||||||
|
ElMessage.success("修改密码成功")
|
||||||
|
close()
|
||||||
|
} else {
|
||||||
|
ElMessage.error(res.msg)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// console.log('error submit!', fields)
|
||||||
}
|
}
|
||||||
updateUserInfo(param).then((res: any) => {
|
})
|
||||||
if (res && res.code == 0) {
|
|
||||||
ElMessage.success('更新成功')
|
|
||||||
close()
|
|
||||||
} else {
|
|
||||||
ElMessage.error(res.msg)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
editPassword({
|
|
||||||
password: formData.value.password,
|
|
||||||
newpassword1: formData.value.newPassword
|
|
||||||
}).then((res: any) => {
|
|
||||||
if (res && res.code == 0) {
|
|
||||||
formRef.value.resetFields(['password', 'newPassword', 'confirmPassword'])
|
|
||||||
ElMessage.success("修改密码成功")
|
|
||||||
close()
|
|
||||||
} else {
|
|
||||||
ElMessage.error(res.msg)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// console.log('error submit!', fields)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang='scss' scoped>
|
<style lang='scss' scoped>
|
||||||
.user-info-part {
|
.user-info-part {
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
padding: 30px;
|
|
||||||
|
|
||||||
.header-box {
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 50px;
|
height: 100%;
|
||||||
display: flex;
|
padding: 30px;
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
h3 {
|
.header-box {
|
||||||
color: $main-color;
|
width: 100%;
|
||||||
font-size: 20px;
|
height: 50px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
color: $main-color;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-icon {
|
||||||
|
cursor: pointer;
|
||||||
|
color: #606266;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-icon {
|
img.avatar {
|
||||||
cursor: pointer;
|
width: 128px;
|
||||||
color: #606266;
|
height: 148px;
|
||||||
|
object-fit: contain;
|
||||||
|
margin: 0 0 20px 60px;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
img.avatar {
|
.submit-box {
|
||||||
width: 128px;
|
padding-left: 60px;
|
||||||
height: 148px;
|
}
|
||||||
object-fit: contain;
|
|
||||||
margin: 0 0 20px 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-box {
|
|
||||||
padding-left: 60px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -5,3 +5,9 @@ export enum LogTypeEnum {
|
||||||
MODIFY = "3",
|
MODIFY = "3",
|
||||||
EXCEPTION = '4',
|
EXCEPTION = '4',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export enum REGEXP {
|
||||||
|
PASSWORD = '^[a-zA-Z0-9]{8,16}$',
|
||||||
|
ACCOUNT = '^[a-zA-Z0-9]{2,16}$',
|
||||||
|
PHONE = '^1(3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8}$'
|
||||||
|
}
|
|
@ -82,7 +82,8 @@
|
||||||
|
|
||||||
<el-form ref="registerFormRef" :model="registerParams" :rules="registerRules" label-width="100">
|
<el-form ref="registerFormRef" :model="registerParams" :rules="registerRules" label-width="100">
|
||||||
<el-form-item label="用户名" prop="username">
|
<el-form-item label="用户名" prop="username">
|
||||||
<el-input v-model="registerParams.username" placeholder="请输入用户名2~16位字母或数字(区分大小写)"></el-input>
|
<el-input v-model="registerParams.username"
|
||||||
|
placeholder="请输入用户名2~16位字母或数字(区分大小写)"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="密码" prop="password">
|
<el-form-item label="密码" prop="password">
|
||||||
<el-input v-model="registerParams.password" type="password" show-password
|
<el-input v-model="registerParams.password" type="password" show-password
|
||||||
|
@ -143,6 +144,7 @@ import SliderVerify from "@/components/SliderVerify/index.vue";
|
||||||
import * as loginApi from "@/api/login";
|
import * as loginApi from "@/api/login";
|
||||||
import {Session} from "@/utils/storage";
|
import {Session} from "@/utils/storage";
|
||||||
import * as hospitalApi from "@/api/hospital";
|
import * as hospitalApi from "@/api/hospital";
|
||||||
|
import {REGEXP} from "@/enum/log-enum";
|
||||||
|
|
||||||
|
|
||||||
//引入用户相关的小仓库
|
//引入用户相关的小仓库
|
||||||
|
@ -256,7 +258,7 @@ onMounted(() => {
|
||||||
})
|
})
|
||||||
|
|
||||||
function validatePass2(rule: any, value: any, callback: any) {
|
function validatePass2(rule: any, value: any, callback: any) {
|
||||||
if (!(/^[a-zA-Z0-9]{8,16}$/.test(value))) {
|
if (!(new RegExp(REGEXP.PASSWORD).test(value))) {
|
||||||
callback("8~16位字母或数字(区分大小写)");
|
callback("8~16位字母或数字(区分大小写)");
|
||||||
} else if (value !== registerParams.value.password) {
|
} else if (value !== registerParams.value.password) {
|
||||||
callback(new Error('两次密码不一致'));
|
callback(new Error('两次密码不一致'));
|
||||||
|
@ -266,7 +268,7 @@ function validatePass2(rule: any, value: any, callback: any) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function validateAccount(rule: any, value: any, callback: any) {
|
function validateAccount(rule: any, value: any, callback: any) {
|
||||||
if (!(/^[a-zA-Z0-9]{2,16}$/.test(value))) {
|
if (!(new RegExp(REGEXP.ACCOUNT).test(value))) {
|
||||||
callback("2~16位字母或数字(区分大小写)");
|
callback("2~16位字母或数字(区分大小写)");
|
||||||
} else {
|
} else {
|
||||||
callback()
|
callback()
|
||||||
|
|
|
@ -70,6 +70,7 @@ import {onMounted, reactive, ref, toRefs, watch} from 'vue'
|
||||||
import {ElMessage, ElMessageBox} from 'element-plus'
|
import {ElMessage, ElMessageBox} from 'element-plus'
|
||||||
import {getRoleList} from "@/api/role";
|
import {getRoleList} from "@/api/role";
|
||||||
import {addUser, updateUI} from "@/api/user";
|
import {addUser, updateUI} from "@/api/user";
|
||||||
|
import {REGEXP} from "@/enum/log-enum";
|
||||||
|
|
||||||
const emit = defineEmits(['close', 'save'])
|
const emit = defineEmits(['close', 'save'])
|
||||||
|
|
||||||
|
@ -80,13 +81,10 @@ const props = defineProps({
|
||||||
const roleOption = ref<any>([])
|
const roleOption = ref<any>([])
|
||||||
|
|
||||||
const validatorPhone = (rule: any, value: any, callback: any) => {
|
const validatorPhone = (rule: any, value: any, callback: any) => {
|
||||||
var isPhone = /^1(3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8}$/;
|
|
||||||
|
|
||||||
|
|
||||||
if (value.indexOf('****') >= 0) {
|
if (value.indexOf('****') >= 0) {
|
||||||
return callback().trim();
|
return callback().trim();
|
||||||
}
|
}
|
||||||
if (!isPhone.test(value)) {
|
if (!new RegExp(REGEXP.PHONE).test(value)) {
|
||||||
callback(new Error('请输入合法手机号'));
|
callback(new Error('请输入合法手机号'));
|
||||||
} else {
|
} else {
|
||||||
callback();
|
callback();
|
||||||
|
@ -149,7 +147,7 @@ defineExpose({
|
||||||
})
|
})
|
||||||
|
|
||||||
function validatePass2(rule: any, value: any, callback: any) {
|
function validatePass2(rule: any, value: any, callback: any) {
|
||||||
if (!(/^[a-zA-Z0-9]{8,16}$/.test(value))) {
|
if (!(new RegExp(REGEXP.PASSWORD).test(value))) {
|
||||||
callback("8~16位字母或数字(区分大小写)");
|
callback("8~16位字母或数字(区分大小写)");
|
||||||
} else if (value !== formData.value.password) {
|
} else if (value !== formData.value.password) {
|
||||||
callback(new Error('两次密码不一致'));
|
callback(new Error('两次密码不一致'));
|
||||||
|
@ -159,7 +157,7 @@ function validatePass2(rule: any, value: any, callback: any) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function validateAccount(rule: any, value: any, callback: any) {
|
function validateAccount(rule: any, value: any, callback: any) {
|
||||||
if (!(/^[a-zA-Z0-9]{2,16}$/.test(value))) {
|
if (!(new RegExp(REGEXP.ACCOUNT).test(value))) {
|
||||||
callback("2~16位字母或数字(区分大小写)");
|
callback("2~16位字母或数字(区分大小写)");
|
||||||
} else {
|
} else {
|
||||||
callback()
|
callback()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user