|
@@ -6,14 +6,14 @@
|
|
{{ isUpdate ? '注册信息修改' : '老师注册'}}
|
|
{{ isUpdate ? '注册信息修改' : '老师注册'}}
|
|
</div>
|
|
</div>
|
|
<CtForm class="mt-5" ref="CtFormRef" :items="formItems">
|
|
<CtForm class="mt-5" ref="CtFormRef" :items="formItems">
|
|
- <template #department>
|
|
|
|
|
|
+ <template #authDept>
|
|
<div class="pa-5 mb-3" style="width: 100%; border: 1px dashed #ccc; border-radius: 4px;">
|
|
<div class="pa-5 mb-3" style="width: 100%; border: 1px dashed #ccc; border-radius: 4px;">
|
|
<p class="color-999 font-size-14 mb-3">
|
|
<p class="color-999 font-size-14 mb-3">
|
|
<span class="color-error">*</span>
|
|
<span class="color-error">*</span>
|
|
负责院系
|
|
负责院系
|
|
</p>
|
|
</p>
|
|
<div v-for="(k, index) in departmentList" :key="index" class="d-flex align-center mb-5">
|
|
<div v-for="(k, index) in departmentList" :key="index" class="d-flex align-center mb-5">
|
|
- <TextInput v-model="k.departmentTitle" :item="textItem" />
|
|
|
|
|
|
+ <TextInput v-model="k.name" :item="textItem" />
|
|
<v-icon v-if="index > 0" class="ml-3 cursor-pointer" @click="handleDeleteDepartment(index)" color="error">mdi-close-circle</v-icon>
|
|
<v-icon v-if="index > 0" class="ml-3 cursor-pointer" @click="handleDeleteDepartment(index)" color="error">mdi-close-circle</v-icon>
|
|
</div>
|
|
</div>
|
|
<v-btn class="mt-3" color="primary" prepend-icon="mdi-plus" size="small" @click="handleAddDepartment">添加院系</v-btn>
|
|
<v-btn class="mt-3" color="primary" prepend-icon="mdi-plus" size="small" @click="handleAddDepartment">添加院系</v-btn>
|
|
@@ -22,7 +22,7 @@
|
|
<template #tips>
|
|
<template #tips>
|
|
<p class="font-size-14 color-warning mb-3">图片上传提示:支持jpg、jpeg、png格式,图片大小不得超过20M</p>
|
|
<p class="font-size-14 color-warning mb-3">图片上传提示:支持jpg、jpeg、png格式,图片大小不得超过20M</p>
|
|
</template>
|
|
</template>
|
|
- <template #jobImg="{ item }">
|
|
|
|
|
|
+ <template #employmentCertificate="{ item }">
|
|
<div class="d-flex flex-column">
|
|
<div class="d-flex flex-column">
|
|
<p class="color-999 font-size-14 mb-3">
|
|
<p class="color-999 font-size-14 mb-3">
|
|
<span class="color-error">*</span>
|
|
<span class="color-error">*</span>
|
|
@@ -40,7 +40,7 @@
|
|
/>
|
|
/>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
- <template #schoolLegalPersonIdCardImg1="{ item }">
|
|
|
|
|
|
+ <template #idCardFront="{ item }">
|
|
<div class="d-flex flex-column">
|
|
<div class="d-flex flex-column">
|
|
<p class="color-999 font-size-14 mb-3">
|
|
<p class="color-999 font-size-14 mb-3">
|
|
<span class="color-error">*</span>
|
|
<span class="color-error">*</span>
|
|
@@ -58,7 +58,7 @@
|
|
/>
|
|
/>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
- <template #schoolLegalPersonIdCardImg2="{ item }">
|
|
|
|
|
|
+ <template #idCardBack="{ item }">
|
|
<div class="d-flex flex-column">
|
|
<div class="d-flex flex-column">
|
|
<p class="color-999 font-size-14 mb-3">
|
|
<p class="color-999 font-size-14 mb-3">
|
|
<span class="color-error">*</span>
|
|
<span class="color-error">*</span>
|
|
@@ -93,7 +93,7 @@ import { webContentStore } from '@/store/webContent'
|
|
import { getDict } from '@/hooks/web/useDictionaries'
|
|
import { getDict } from '@/hooks/web/useDictionaries'
|
|
import Snackbar from '@/plugins/snackbar'
|
|
import Snackbar from '@/plugins/snackbar'
|
|
import navBar from '@/layout/personal/navBar.vue'
|
|
import navBar from '@/layout/personal/navBar.vue'
|
|
-import { schoolRegister, schoolUpdate } from '@/api/school'
|
|
|
|
|
|
+import { schoolRegister } from '@/api/school'
|
|
import { useRouter } from 'vue-router'
|
|
import { useRouter } from 'vue-router'
|
|
|
|
|
|
const router = useRouter()
|
|
const router = useRouter()
|
|
@@ -101,10 +101,10 @@ const webContent = webContentStore()
|
|
|
|
|
|
const previewUrl = ref('')
|
|
const previewUrl = ref('')
|
|
const showPreview = ref(false)
|
|
const showPreview = ref(false)
|
|
-const departmentList = ref([{ departmentTitle: '' }])
|
|
|
|
|
|
+const departmentList = ref([{ name: '' }])
|
|
const textItem = {
|
|
const textItem = {
|
|
type: 'text',
|
|
type: 'text',
|
|
- key: 'departmentTitle',
|
|
|
|
|
|
+ key: 'name',
|
|
width: 450,
|
|
width: 450,
|
|
label: '院系名称 *',
|
|
label: '院系名称 *',
|
|
hideDetails: true,
|
|
hideDetails: true,
|
|
@@ -117,7 +117,7 @@ const formItems = ref({
|
|
options: [
|
|
options: [
|
|
{
|
|
{
|
|
type: 'text',
|
|
type: 'text',
|
|
- key: 'teacherNickname',
|
|
|
|
|
|
+ key: 'name',
|
|
value: '',
|
|
value: '',
|
|
label: '昵称 *',
|
|
label: '昵称 *',
|
|
col: 6,
|
|
col: 6,
|
|
@@ -126,7 +126,7 @@ const formItems = ref({
|
|
},
|
|
},
|
|
{
|
|
{
|
|
type: 'ifRadio',
|
|
type: 'ifRadio',
|
|
- key: 'teacherSex',
|
|
|
|
|
|
+ key: 'sex',
|
|
value: '1',
|
|
value: '1',
|
|
defaultValue: '1',
|
|
defaultValue: '1',
|
|
label: '性别 *',
|
|
label: '性别 *',
|
|
@@ -147,25 +147,21 @@ const formItems = ref({
|
|
rules: [v => !!v || '请填写您的联系电话']
|
|
rules: [v => !!v || '请填写您的联系电话']
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- type: 'text',
|
|
|
|
- key: 'schoolName',
|
|
|
|
- value: '',
|
|
|
|
|
|
+ type: 'autocomplete',
|
|
|
|
+ key: 'schoolId',
|
|
|
|
+ value: null,
|
|
label: '所在学校 *',
|
|
label: '所在学校 *',
|
|
col: 6,
|
|
col: 6,
|
|
|
|
+ itemText: 'name',
|
|
|
|
+ itemValue: 'id',
|
|
flexStyle: 'ml-5',
|
|
flexStyle: 'ml-5',
|
|
outlined: true,
|
|
outlined: true,
|
|
- rules: [v => !!v || '请填写您所在的学校名称']
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- type: 'text',
|
|
|
|
- key: 'schoolAdderss',
|
|
|
|
- value: '',
|
|
|
|
- label: '学校地址',
|
|
|
|
- outlined: true
|
|
|
|
|
|
+ items: [],
|
|
|
|
+ rules: [v => !!v || '请选择您所在的学校名称']
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- slotName: 'department',
|
|
|
|
- key: 'departmentTitle',
|
|
|
|
|
|
+ slotName: 'authDept',
|
|
|
|
+ key: 'authDept',
|
|
noParam: true,
|
|
noParam: true,
|
|
label: '负责院系 *',
|
|
label: '负责院系 *',
|
|
rules: [v => !!v || '请填写您在学校负责的院系']
|
|
rules: [v => !!v || '请填写您在学校负责的院系']
|
|
@@ -175,22 +171,22 @@ const formItems = ref({
|
|
noParam: true
|
|
noParam: true
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- slotName: 'jobImg',
|
|
|
|
- key: 'jobImg',
|
|
|
|
|
|
+ slotName: 'employmentCertificate',
|
|
|
|
+ key: 'employmentCertificate',
|
|
value: '',
|
|
value: '',
|
|
col: 4,
|
|
col: 4,
|
|
rules: [v => !!v || '请上传您的在岗证明图片']
|
|
rules: [v => !!v || '请上传您的在岗证明图片']
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- slotName: 'schoolLegalPersonIdCardImg1',
|
|
|
|
- key: 'schoolLegalPersonIdCardImg1',
|
|
|
|
|
|
+ slotName: 'idCardFront',
|
|
|
|
+ key: 'idCardFront',
|
|
value: '',
|
|
value: '',
|
|
col: 4,
|
|
col: 4,
|
|
rules: [v => !!v || '请上传您的身份证正面图片']
|
|
rules: [v => !!v || '请上传您的身份证正面图片']
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- slotName: 'schoolLegalPersonIdCardImg2',
|
|
|
|
- key: 'schoolLegalPersonIdCardImg2',
|
|
|
|
|
|
+ slotName: 'idCardBack',
|
|
|
|
+ key: 'idCardBack',
|
|
value: '',
|
|
value: '',
|
|
col: 4,
|
|
col: 4,
|
|
rules: [v => !!v || '请上传您的身份证背面图片']
|
|
rules: [v => !!v || '请上传您的身份证背面图片']
|
|
@@ -203,19 +199,25 @@ onMounted(async () => {
|
|
await webContent.getSystemWebContent()
|
|
await webContent.getSystemWebContent()
|
|
|
|
|
|
// 获取性别字典数据
|
|
// 获取性别字典数据
|
|
- const sexItem = formItems.value.options.find(e => e.key === 'teacherSex')
|
|
|
|
|
|
+ const sexItem = formItems.value.options.find(e => e.key === 'sex')
|
|
if (!sexItem || !Object.keys(sexItem).length) return
|
|
if (!sexItem || !Object.keys(sexItem).length) return
|
|
const { data } = await getDict(sexItem.dictTypeName)
|
|
const { data } = await getDict(sexItem.dictTypeName)
|
|
sexItem.items = data || []
|
|
sexItem.items = data || []
|
|
|
|
|
|
- // 重新提交
|
|
|
|
|
|
+ // 获取学校列表
|
|
|
|
+ const schoolItem = formItems.value.options.find(e => e.key === 'schoolId')
|
|
|
|
+ if (!schoolItem || !Object.keys(schoolItem).length) return
|
|
|
|
+ getDict('schoolList', {}, 'schoolList').then(({ data }) => {
|
|
|
|
+ schoolItem.items = data || []
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ // 重新提交,数据回显
|
|
formData.value = localStorage.getItem('registerSchoolInfo') ? JSON.parse(localStorage.getItem('registerSchoolInfo')) : {}
|
|
formData.value = localStorage.getItem('registerSchoolInfo') ? JSON.parse(localStorage.getItem('registerSchoolInfo')) : {}
|
|
- if (formData.value && formData.value.school && formData.value.school?.authStatus === '2') {
|
|
|
|
|
|
+ if (formData.value && formData.value && formData.value?.authStatus === '2') {
|
|
isUpdate.value = true
|
|
isUpdate.value = true
|
|
- departmentList.value = formData.value.schoolDepartments || [{ departmentTitle: '' }]
|
|
|
|
|
|
+ departmentList.value = formData.value?.authDept || [{ name: '' }]
|
|
formItems.value.options.forEach(item => {
|
|
formItems.value.options.forEach(item => {
|
|
- if (item.type) item.value = formData.value.school[item.key] || item?.defaultValue
|
|
|
|
- if (item.slotName && !item.noParam) item.value = formData.value.schoolQualificaions[item.key]
|
|
|
|
|
|
+ if (item.key !== 'authDept' && !item.noParam) item.value = formData.value[item.key] || item?.defaultValue
|
|
})
|
|
})
|
|
}
|
|
}
|
|
})
|
|
})
|
|
@@ -228,7 +230,7 @@ const handlePreview = (url) => {
|
|
|
|
|
|
// 添加院系
|
|
// 添加院系
|
|
const handleAddDepartment = () => {
|
|
const handleAddDepartment = () => {
|
|
- departmentList.value.push({ departmentTitle: '' })
|
|
|
|
|
|
+ departmentList.value.push({ name: '' })
|
|
}
|
|
}
|
|
// 删除院系
|
|
// 删除院系
|
|
const handleDeleteDepartment = (index) => {
|
|
const handleDeleteDepartment = (index) => {
|
|
@@ -239,40 +241,27 @@ const handleDeleteDepartment = (index) => {
|
|
const handleSubmit = async () => {
|
|
const handleSubmit = async () => {
|
|
const { valid } = await CtFormRef.value.formRef.validate()
|
|
const { valid } = await CtFormRef.value.formRef.validate()
|
|
if (!valid) return
|
|
if (!valid) return
|
|
- const isCheck = departmentList.value.every(item => item.departmentTitle)
|
|
|
|
|
|
+ const isCheck = departmentList.value.every(item => item.name)
|
|
if (!isCheck) return Snackbar.warning('请将院系信息填写完整')
|
|
if (!isCheck) return Snackbar.warning('请将院系信息填写完整')
|
|
|
|
|
|
- let obj = {}
|
|
|
|
|
|
+ let obj = {
|
|
|
|
+ authDept: departmentList.value
|
|
|
|
+ }
|
|
formItems.value.options.forEach(item => {
|
|
formItems.value.options.forEach(item => {
|
|
if (item.noParam) return
|
|
if (item.noParam) return
|
|
obj[item.key] = item.value
|
|
obj[item.key] = item.value
|
|
})
|
|
})
|
|
|
|
|
|
- const params = {
|
|
|
|
- school: {
|
|
|
|
- schoolName: obj.schoolName,
|
|
|
|
- schoolAdderss: obj.schoolAdderss,
|
|
|
|
- userId: JSON.parse(localStorage.getItem('userInfo'))?.id,
|
|
|
|
- teacherNickname: obj.teacherNickname,
|
|
|
|
- teacherSex: obj.teacherSex,
|
|
|
|
- phone: obj.phone
|
|
|
|
- },
|
|
|
|
- schoolQualificaions: {
|
|
|
|
- jobImg: obj.jobImg,
|
|
|
|
- schoolLegalPersonIdCardImg1: obj.schoolLegalPersonIdCardImg1,
|
|
|
|
- schoolLegalPersonIdCardImg2: obj.schoolLegalPersonIdCardImg2,
|
|
|
|
- },
|
|
|
|
- schoolDepartments: departmentList.value
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
// 修改信息需提交原始数据
|
|
// 修改信息需提交原始数据
|
|
- if (isUpdate.value) params.school = Object.assign(formData.value.school, params.school)
|
|
|
|
|
|
+ if (isUpdate.value) obj = Object.assign(formData.value, obj)
|
|
|
|
|
|
try {
|
|
try {
|
|
- const data = isUpdate.value ? await schoolUpdate(params) : await schoolRegister(params)
|
|
|
|
- console.log(data, 'submit-data提交成功,等待系统管理员审核')
|
|
|
|
|
|
+ await schoolRegister(obj)
|
|
|
|
+ console.log(obj, 'submit-data提交成功,等待系统管理员审核')
|
|
|
|
+
|
|
Snackbar.success('提交成功,等待系统管理员审核!')
|
|
Snackbar.success('提交成功,等待系统管理员审核!')
|
|
- localStorage.setItem('registerSchoolInfo', JSON.stringify(data))
|
|
|
|
|
|
+ // 重新提交审核的需将authStatus改为0(待审核状态)
|
|
|
|
+ localStorage.setItem('registerSchoolInfo', JSON.stringify(isUpdate.value ? { ...obj, authStatus: '0' } : obj))
|
|
isUpdate.value = false
|
|
isUpdate.value = false
|
|
router.push('/register/school/inReview')
|
|
router.push('/register/school/inReview')
|
|
} catch {}
|
|
} catch {}
|