校验格式

GST002_H5
Ly 2 months ago
parent 3d504f0aec
commit b0c0b2a9db
  1. 1
      src/views/registrationGroup/components/stuDialog.vue
  2. 68
      src/views/registrationGroup/components/stuList.vue
  3. 3
      src/views/registrationGroup/components/teaDialog.vue
  4. 25
      src/views/registrationGroup/components/teaList.vue
  5. 39
      src/views/userInfo/index.vue

@ -8,6 +8,7 @@
width="800" width="800"
draggable draggable
overflow overflow
:close-on-click-modal="false"
> >
<div class="table-box"> <div class="table-box">
<div class="search"> <div class="search">

@ -1,32 +1,14 @@
<template> <template>
<div> <div>
<el-button <el-button type="primary" icon="Plus" @click="add" class="btn" :disabled="isDisable">
type="primary"
icon="Plus"
@click="add"
class="btn"
:disabled="isDisable"
>
新增 新增
</el-button> </el-button>
<el-button <el-button type="danger" icon="Delete" @click="del" class="btn" :disabled="isDisable">
type="danger"
icon="Delete"
@click="del"
class="btn"
:disabled="isDisable"
>
删除 删除
</el-button> </el-button>
<div class="table-box"> <div class="table-box">
<el-table <el-table ref="multipleTableRef" @select="(selection: any[]) => (isSele = !!selection.length)" border
ref="multipleTableRef" :data="tableData" class="table" height="276px">
@select="(selection: any[]) => (isSele = !!selection.length)"
border
:data="tableData"
class="table"
height="276px"
>
<el-table-column type="selection" width="55" /> <el-table-column type="selection" width="55" />
<el-table-column label="#" width="55"> <el-table-column label="#" width="55">
<template #default="{ $index }"> <template #default="{ $index }">
@ -41,13 +23,7 @@
<span style="margin-left: 10px">用户</span> <span style="margin-left: 10px">用户</span>
</template> </template>
<template #default="{ row }"> <template #default="{ row }">
<el-input <el-input v-model="row.realname" :disabled="isDisable" />
:disabled="isDisable"
@click="openDialog(row)"
v-model="row.realname"
placeholder="请选择"
:prefix-icon="ClusterOutlined"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column> <el-table-column>
@ -60,10 +36,17 @@
<template #default="{ row }"> <template #default="{ row }">
<el-cascader <el-cascader
:modelValue="row.captain" :modelValue="row.captain"
@update:modelValue="(arr: any[]) => (row.captain = arr[0])" @update:modelValue="(arr: any[]) => {row.captain = arr[0];console.log(arr);
}"
:options="options" :options="options"
:disabled="isDisable" :disabled="isDisable"
/> />
<!-- <el-cascader
:modelValue="row.captain"
@update:modelValue="checkUniqueness(row)"
:options="options"
:disabled="isDisable"
/> -->
</template> </template>
</el-table-column> </el-table-column>
<el-table-column> <el-table-column>
@ -117,7 +100,7 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { reactive, ref, onMounted, watch } from 'vue' import { reactive, ref, onMounted, nextTick } from 'vue'
import stuDialog from './stuDialog.vue' import stuDialog from './stuDialog.vue'
import { ClusterOutlined } from '@ant-design/icons-vue' import { ClusterOutlined } from '@ant-design/icons-vue'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
@ -141,6 +124,27 @@ const options = [
}, },
] ]
//
// const checkUniqueness = async(row:any) => {
// const currentCaptain = row.captain;
// const isUnique = tableData.every ((r) => {
// // console.log(tableData,'table');
// console.log(row.captain,'row');
// console.log(r.captain,'r.captain');
// return r.captain !== currentCaptain || r.userId == row.userId; //
// });
// if (!isUnique) {
// ElMessage({
// message: '!',
// type: 'error',
// })
// // row.captain = '1';
// }
// };
// //
const tableData = reactive<any[]>([]) const tableData = reactive<any[]>([])
onMounted(() => { onMounted(() => {
@ -203,7 +207,7 @@ const handleSelected = (row: any = {}) => {
message: '已有该用户,不能重复选择用户!', message: '已有该用户,不能重复选择用户!',
type: 'error', type: 'error',
}) })
return tableData.pop(); //
} }
console.log(row, 'aqq') console.log(row, 'aqq')
target.value.workNo = row.work_no target.value.workNo = row.work_no

@ -9,6 +9,7 @@
width="1000" width="1000"
draggable draggable
overflow overflow
:close-on-click-modal="false"
> >
<div class="table-box"> <div class="table-box">
@ -61,7 +62,7 @@
$emit('update:modelValue', false) $emit('update:modelValue', false)
$emit( $emit(
'selected', 'selected',
tableData.find((o) => o.id === selectedRowId) || {}, tableData.find((o) => o.user_id === selectedRowId) || {},
); );
selectedRowId = null; // selectedRowId selectedRowId = null; // selectedRowId
} }

@ -50,13 +50,7 @@
<span style="margin-left: 10px">指导老师姓名</span> <span style="margin-left: 10px">指导老师姓名</span>
</template> </template>
<template #default="{ row }"> <template #default="{ row }">
<el-input <el-input v-model="row.teacherName" placeholder="请输入指导老师姓名" :disabled="isDisable"/>
:disabled="isDisable"
@click="openDialog(row)"
v-model="row.teacherName"
placeholder="请选择"
:prefix-icon="ClusterOutlined"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column> <el-table-column>
@ -111,7 +105,7 @@
<span style="margin-left: 10px">手机号</span> <span style="margin-left: 10px">手机号</span>
</template> </template>
<template #default="{ row }"> <template #default="{ row }">
<el-input v-model="row.teacherPhone" placeholder="请输入手机号" :disabled="isDisable"/> <el-input v-model="row.teacherPhone" @blur="validatePhoneInput(row)" placeholder="请输入手机号" :disabled="isDisable"/>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -143,6 +137,13 @@ const options = [
}, },
] ]
//
const validatePhone = (teacherPhone: string) => {
const pattern = /^1[3-9]\d{9}$/;
return pattern.test(teacherPhone);
};
// //
const tableData = reactive<any[]>([]) const tableData = reactive<any[]>([])
onMounted(async() => { onMounted(async() => {
@ -187,8 +188,11 @@ const visible = ref(false)
// //
const handleSelected = (row: any = {}) => { const handleSelected = (row: any = {}) => {
console.log(row,'row');
// tableData // tableData
if (Object.keys(row).length === 0) { if (Object.keys(row).length === 0) {
console.log(Object)
if (tableData.length > 0) { if (tableData.length > 0) {
tableData.pop(); // tableData.pop(); //
} }
@ -198,8 +202,10 @@ const handleSelected = (row: any = {}) => {
message: '已有该用户,不能重复选择用户!', message: '已有该用户,不能重复选择用户!',
type: 'error', type: 'error',
}) })
return tableData.pop(); //
} }
console.log(row,'row')
target.value.teacherName = row.realname target.value.teacherName = row.realname
target.value.teacherXl = row.exp_title target.value.teacherXl = row.exp_title
target.value.teacherZc = row.exp_zc target.value.teacherZc = row.exp_zc
@ -207,6 +213,7 @@ const handleSelected = (row: any = {}) => {
target.value.teacherYjfx = row.exp_yjfx target.value.teacherYjfx = row.exp_yjfx
target.value.teacherPhone = row.phone target.value.teacherPhone = row.phone
target.value.teacherid = row.user_id target.value.teacherid = row.user_id
} }
// //

@ -105,7 +105,7 @@
width="35%" width="35%"
:before-close="handleClose" :before-close="handleClose"
> >
<el-form :model="form" label-width="80" style="padding-right: 30px"> <el-form :model="form":rules="rules" ref="ruleFormRef" label-width="80" style="padding-right: 30px">
<el-form-item label="头像"> <el-form-item label="头像">
<el-upload <el-upload
v-model:file-list="fileList" v-model:file-list="fileList"
@ -119,7 +119,7 @@
<el-form-item label="姓名"> <el-form-item label="姓名">
<el-input v-model="form.name" /> <el-input v-model="form.name" />
</el-form-item> </el-form-item>
<el-form-item label="学号"> <el-form-item label="学号" prop="workno">
<el-input v-model="form.workNo" /> <el-input v-model="form.workNo" />
</el-form-item> </el-form-item>
<!-- <el-form-item label="部门"> <!-- <el-form-item label="部门">
@ -143,10 +143,10 @@
<el-radio :value="0" size="large"></el-radio> <el-radio :value="0" size="large"></el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="邮箱"> <el-form-item label="邮箱" prop="email">
<el-input v-model="form.email" /> <el-input v-model="form.email" />
</el-form-item> </el-form-item>
<el-form-item label="手机号"> <el-form-item label="手机号" prop="phone">
<el-input v-model="form.phone" type="number" /> <el-input v-model="form.phone" type="number" />
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -161,6 +161,7 @@
<script lang="ts" setup> <script lang="ts" setup>
import { nextTick, onMounted, reactive, ref, toRefs, watch } from 'vue' import { nextTick, onMounted, reactive, ref, toRefs, watch } from 'vue'
import { ElMessage } from 'element-plus'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import userStore from '@/store/module/user' import userStore from '@/store/module/user'
import { getFaculties, uploadFile, editUserInfoApi } from '@/api/race' import { getFaculties, uploadFile, editUserInfoApi } from '@/api/race'
@ -172,6 +173,25 @@ console.log(useUserStore.userInfo, 'useUserStore')
userInfo.value = useUserStore.userInfo userInfo.value = useUserStore.userInfo
const Router = useRouter() const Router = useRouter()
const dialogVisible = ref(false) const dialogVisible = ref(false)
const ruleFormRef = ref<any>()
const rules = {
workno: [
// { required: true, message: '/', trigger: 'blur' },
{
pattern: /^[a-zA-Z0-9]{1,20}$/,
message: '工号/学号为1-20位数字或字母',
trigger: 'blur',
},
],
phone: [
// { required: true, message: '', trigger: 'blur' },
{ pattern: /^1[3-9]\d{9}$/, message: '手机号格式不正确', trigger: 'blur' },
],
email: [
// { required: true, message: '', trigger: 'blur' },
{ type: 'email', message: '请输入有效的邮箱地址', trigger: ['blur'] }
],
}
// //
const editUserInfo = () => { const editUserInfo = () => {
form.name = useUserStore.userInfo.realname form.name = useUserStore.userInfo.realname
@ -215,6 +235,11 @@ const uploadFileEvent = async () => {
} }
// //
const submit = async () => { const submit = async () => {
//
if (!ruleFormRef.value) return
await ruleFormRef.value.validate(async (valid: boolean) => {
if (valid) {
//
if (fileList.value[0].hasOwnProperty('raw')) { if (fileList.value[0].hasOwnProperty('raw')) {
await uploadFileEvent() await uploadFileEvent()
} }
@ -237,8 +262,12 @@ const submit = async () => {
await editUserInfoApi(data) await editUserInfoApi(data)
useUserStore.getUserInfo() useUserStore.getUserInfo()
userInfo.value = useUserStore.userInfo userInfo.value = useUserStore.userInfo
dialogVisible.value = false dialogVisible.value = false
} else {
//
ElMessage.error('表单信息填写有误,请检查后再试')
}
})
} }
onMounted(() => {}) onMounted(() => {})
// //

Loading…
Cancel
Save