邓洁: 表单校验

This commit is contained in:
邓洁
2024-01-03 21:07:45 +08:00
parent 53cdb854a3
commit c9d84979d9
3 changed files with 71 additions and 77 deletions

View File

@@ -62,8 +62,8 @@
<div class="siteId"> <div class="siteId">
<span>{{ title }}</span> <span>{{ title }}</span>
</div> </div>
<el-form :model="form" :label-position="right" :rules="formRules" ref="formInstance" label-width="168px"> <el-form :model="form" :label-position="right" :rules="formRules" ref="formInstance" label-width="190px">
<el-form-item label="站点名称"> <el-form-item label="站点名称" prop="siteName">
<el-input v-model="form.siteName" placeholder="请输入站点名称"/> <el-input v-model="form.siteName" placeholder="请输入站点名称"/>
</el-form-item> </el-form-item>
<el-form-item label="是否默认"> <el-form-item label="是否默认">
@@ -108,35 +108,7 @@ import {ElMessage, ElMessageBox} from "element-plus";
const router = useRouter() const router = useRouter()
const userId = reactive(router.currentRoute.value.params.userId) const userId = reactive(router.currentRoute.value.params.userId)
const siteList = ref([ const siteList = ref([])
// {
// siteName: '松江站',
// info:{
// tunnelNum: 1,
// tunnelName: '一号隧道',
// constructionLength: 500,
// implementationLength: 10
// }
// },
// {
// siteName: '松江站',
// info:{
// tunnelNum: 1,
// tunnelName: '二号隧道',
// constructionLength: 500,
// implementationLength: 10
// }
// },
// {
// siteName: '松江站',
// info:{
// tunnelNum: 1,
// tunnelName: '三号隧道',
// constructionLength: 500,
// implementationLength: 10
// }
// }
])
const siteIds = ref([]) const siteIds = ref([])
const siteNameList = ref([]) const siteNameList = ref([])
const info = ref({ const info = ref({
@@ -160,7 +132,7 @@ const form = ref({
isDefault: false isDefault: false
}); });
const formRules = ref({ const formRules = ref({
siteName: [{required: true, message: '请输入站点名称', trigger: 'blur'}] siteName: [{required: true, message: '请输入站点名称', trigger:['blur','change']}]
}) })
const formInstance = ref() const formInstance = ref()
const getList = () => { const getList = () => {
@@ -235,7 +207,7 @@ const handleAdd = () => {
} }
const handleSubmit = (instance) => { const handleSubmit = (instance) => {
if (!instance) return if (!instance) return
instance.validate(async (valid) => { instance.validate(valid => {
if (!valid) return if (!valid) return
if (title.value === '编辑站点') { if (title.value === '编辑站点') {
editSite(form.value).then((res) => { editSite(form.value).then((res) => {
@@ -328,6 +300,9 @@ const handleCurrentChange = (val) => {
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
:deep(.el-form-item__error){
font-size: 35px;
}
:deep(.el-radio-group) { :deep(.el-radio-group) {
margin-top: 10px; margin-top: 10px;
} }

View File

@@ -67,13 +67,13 @@
<span>{{ title }}</span> <span>{{ title }}</span>
</div> </div>
<el-form :model="form" :label-position="right" label-width="188px" :rules="formRules" ref="formInstance"> <el-form :model="form" :label-position="right" label-width="188px" :rules="formRules" ref="formInstance">
<el-form-item label="隧道名称" required> <el-form-item label="隧道名称" prop="tunnelName">
<el-input v-model="form.tunnelName" placeholder="请输入隧道名称"/> <el-input v-model="form.tunnelName" placeholder="请输入隧道名称"/>
</el-form-item> </el-form-item>
<el-form-item label="序列号" required> <el-form-item label="序列号" prop="serialNumber">
<el-input v-model="form.serialNumber" placeholder="请输入序列号"/> <el-input v-model="form.serialNumber" placeholder="请输入序列号"/>
</el-form-item> </el-form-item>
<el-form-item label="隧道长度" required> <el-form-item label="隧道长度" prop="totalLength">
<el-input type="number" v-model="form.totalLength" placeholder="请输入隧道长度"/> <el-input type="number" v-model="form.totalLength" placeholder="请输入隧道长度"/>
</el-form-item> </el-form-item>
<el-form-item label="是否默认"> <el-form-item label="是否默认">
@@ -117,9 +117,17 @@ const params = router.currentRoute.value.params;
const siteId = reactive(params.siteId) const siteId = reactive(params.siteId)
const userId = reactive(params.userId) const userId = reactive(params.userId)
const type = reactive(params.type) const type = reactive(params.type)
const validateNumber = (rule, value) => {
const reg = /^[A-Za-z0-9]+$/;
return reg.test(value);
}
const formRules = ref({ const formRules = ref({
tunnelName: [{required: true, message: '请输入隧道名称', trigger: 'blur'}], tunnelName: [{required: true, message: '请输入隧道名称', trigger: ['blur', 'change']}],
serialNumber: [{required: true, message: '请输入序列号', trigger: 'blur'}] serialNumber: [
{required: true, message: '请输入序列号', trigger: ['blur', 'change']},
{validator: validateNumber, message: '请输入英文、数字、英文数字组合的用户名', trigger: ['blur', 'change']}
],
totalLength: [{required: true, message: '请输入隧道长度', trigger: ['blur', 'change']}]
}) })
const showFirst = ref(true) const showFirst = ref(true)
const showOperation = ref(true) const showOperation = ref(true)
@@ -232,16 +240,13 @@ const handleCurrentChange = (val) => {
getList() getList()
} }
const handleSubmit = (instance) => { const handleSubmit = (instance) => {
// if (!instance) return if (!instance) return
// console.log('instance',instance) instance.validate(async (valid) => {
// instance.validate(async (valid) => { if (!valid) return
// console.log('valid',valid)
// if (!valid) return
const data = { const data = {
siteId: siteId, siteId: siteId,
...form.value ...form.value
} }
if (form.value.tunnelName && form.value.serialNumber && form.value.totalLength) {
addTunnel(data).then(res => { addTunnel(data).then(res => {
if (res.code === 1000) { if (res.code === 1000) {
ElMessage.success('新增成功') ElMessage.success('新增成功')
@@ -251,10 +256,7 @@ const handleSubmit = (instance) => {
ElMessage.warning(res.msg) ElMessage.warning(res.msg)
} }
}) })
} else { })
ElMessage.warning('请先完善信息再新增')
}
// })
} }
//预览隧道 //预览隧道
const handlePreview = (id) => { const handlePreview = (id) => {
@@ -353,6 +355,10 @@ const handleMoreDelete = () => {
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
:deep(.el-form-item__error) {
font-size: 35px;
}
.site-name { .site-name {
position: absolute; position: absolute;
left: 250px; left: 250px;

View File

@@ -72,16 +72,16 @@
<el-form-item label="当前站点"> <el-form-item label="当前站点">
<div class="current-site">{{ currentSite }}<span v-if="showAdmin">如果需要切换站点,请返回首屏切换</span></div> <div class="current-site">{{ currentSite }}<span v-if="showAdmin">如果需要切换站点,请返回首屏切换</span></div>
</el-form-item> </el-form-item>
<el-form-item label="输入用户名"> <el-form-item label="输入用户名" prop="userName">
<el-input v-model="form.userName" placeholder="请输入用户名"/> <el-input v-model="form.userName" placeholder="请输入用户名"/>
</el-form-item> </el-form-item>
<el-form-item label="输入密码" v-if="title==='添加用户'"> <el-form-item label="输入密码" v-if="title==='添加用户'" prop="password">
<el-input type="password" show-password v-model="form.password" placeholder="请输入密码"/> <el-input type="password" show-password v-model="form.password" placeholder="请输入密码"/>
</el-form-item> </el-form-item>
<el-form-item label="输入昵称"> <el-form-item label="输入昵称" prop="nickName">
<el-input v-model="form.nickName" placeholder="请输入昵称"/> <el-input v-model="form.nickName" placeholder="请输入昵称"/>
</el-form-item> </el-form-item>
<el-form-item label="输入电话号码"> <el-form-item label="输入电话号码" prop="phoneNumber">
<el-input v-model="form.phoneNumber" placeholder="输入电话号码"/> <el-input v-model="form.phoneNumber" placeholder="输入电话号码"/>
</el-form-item> </el-form-item>
<el-form-item label="是否启用"> <el-form-item label="是否启用">
@@ -90,7 +90,7 @@
<el-radio label="0">停用</el-radio> <el-radio label="0">停用</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="选择身份"> <el-form-item label="选择身份" prop="roleId">
<el-radio-group v-model="form.roleId" @change="(val) => { <el-radio-group v-model="form.roleId" @change="(val) => {
if (val >3){ if (val >3){
getTunnel() getTunnel()
@@ -98,7 +98,7 @@
<el-radio v-for="item in radioList" :label="item.value" :key="item.value">{{ item.label }}</el-radio> <el-radio v-for="item in radioList" :label="item.value" :key="item.value">{{ item.label }}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="选择隧道" v-if="form.roleId>3"> <el-form-item label="选择隧道" v-if="form.roleId>3" prop="tunnelList">
<div class="user-select"> <div class="user-select">
<el-select <el-select
v-model="form.tunnelList" v-model="form.tunnelList"
@@ -172,20 +172,27 @@ const form = ref({
roleId: [], roleId: [],
tunnelList: [1] tunnelList: [1]
}); });
const validateName = (rule, value) => {
const reg = /^[A-Za-z0-9]+$/;
return reg.test(value);
}
const formRules = ref({ const formRules = ref({
userName: [{required: true, message: '请输入用户名', trigger: 'blur'}], userName: [
password: [{required: true, message: '请输入密码', trigger: 'blur'}] {required: true, message: '请输入用户名', trigger: ['blur', 'change']},
{validator: validateName, message: '请输入英文、数字、英文数字组合的用户名', trigger: ['blur', 'change']}
],
password: [{required: true, message: '请输入密码', trigger: ['blur', 'change']}],
nickName: [{required: true, message: '请输入昵称', trigger: ['blur', 'change']}],
roleId: [{required: true, message: '请选择身份', trigger: ['blur', 'change']}],
tunnelList: [{required: true, message: '请选择隧道', trigger: ['blur', 'change']}]
}) })
const radioList = ref([]) const radioList = ref([])
const tunnelList = ref([]) const tunnelList = ref([])
const multipleTable = ref() const multipleTable = ref()
onMounted(() => { onMounted(() => {
if (localStorage.getItem('userId') == 2) { showAdmin.value = localStorage.getItem('userId') == 2;
showAdmin.value = true
} else {
showAdmin.value = false
}
}) })
const getTunnel = () => { const getTunnel = () => {
getTunnelOption(siteId).then(res => { getTunnelOption(siteId).then(res => {
if (res.code === 1000) { if (res.code === 1000) {
@@ -280,9 +287,9 @@ const handleCurrentChange = (val) => {
pageInfo.pageNum = val pageInfo.pageNum = val
getInfo() getInfo()
} }
const handleSubmit = async (formInstance) => { const handleSubmit = (formInstance) => {
if (!formInstance) return; if (!formInstance) return;
formInstance.validate(async (valid) => { formInstance.validate((valid) => {
if (!valid) return; if (!valid) return;
const data = { const data = {
siteId: siteId, siteId: siteId,
@@ -295,7 +302,7 @@ const handleSubmit = async (formInstance) => {
tunnelList: form.value.tunnelList tunnelList: form.value.tunnelList
} }
if (title.value === '添加用户') { if (title.value === '添加用户') {
await addUser(data).then(res => { addUser(data).then(res => {
if (res.code === 1000) { if (res.code === 1000) {
getInfo() getInfo()
isVisited.value = false isVisited.value = false
@@ -309,7 +316,7 @@ const handleSubmit = async (formInstance) => {
userId: form.value.userId, userId: form.value.userId,
...data ...data
} }
await editUser(editData).then(res => { editUser(editData).then(res => {
if (res.code === 1000) { if (res.code === 1000) {
getInfo() getInfo()
isVisited.value = false isVisited.value = false
@@ -335,11 +342,13 @@ const handleSelect = async (selection, row) => {
} }
</script> </script>
<style lang="scss"> <style lang="scss">
.user-select { .user-select {
.el-input { .el-input {
min-height: 75px; min-height: 75px;
height: auto !important; height: auto !important;
} }
.el-select__popper { .el-select__popper {
margin-top: -12px !important; margin-top: -12px !important;
background: #072247 !important; background: #072247 !important;
@@ -358,6 +367,7 @@ const handleSelect = async (selection, row) => {
font-size: 38px !important; font-size: 38px !important;
height: 60px !important; height: 60px !important;
line-height: 60px !important; line-height: 60px !important;
> span { > span {
color: #FFFFFF; color: #FFFFFF;
} }
@@ -390,6 +400,10 @@ const handleSelect = async (selection, row) => {
} }
</style> </style>
<style scoped lang="scss"> <style scoped lang="scss">
:deep(.el-form-item__error) {
font-size: 35px;
}
:deep(.el-input .el-input__password) { :deep(.el-input .el-input__password) {
font-size: 60px; font-size: 60px;
} }
@@ -415,7 +429,6 @@ const handleSelect = async (selection, row) => {
} }
:deep(.el-radio-group) { :deep(.el-radio-group) {
margin-top: 10px; margin-top: 10px;
} }