邓洁: 表单校验
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user