4 次代码提交 3cbba78c9b ... bb8a9b4142

作者 SHA1 备注 提交日期
  lifanagju_citu bb8a9b4142 Merge branch 'necessaryInfoDialog' into jobFair 3 天之前
  Xiao_123 807b86eb82 判断当前求职者是否有老师的角色 1 周之前
  Xiao_123 30977d9d26 企业-实习情况 1 周之前
  lifanagju_citu 6229d80106 新用户注册登录跳转选择角色页面 1 周之前

+ 3 - 3
src/layout/personal/navBar.vue

@@ -165,7 +165,7 @@ const getSchoolInfo = async () => {
   const data = await getSchoolInformation()
   if (data && Object.keys(data).length > 0) {
     schoolInfo.value = data
-    showTeacherLogin.value = isSchool ? false : true
+    showTeacherLogin.value = isSchool ? true : false
   }
 }
 
@@ -288,9 +288,9 @@ const newRegistering = () => {
 
 // 跳转老师页面
 const statusList = [
-  { status: '0', path: '/register/school/inReview', key: 'registerSchoolInfo' }, // 审核中
+  { status: '0', path: '/recruit/teacher/register/school/inReview', key: 'registerSchoolInfo' }, // 审核中
   { status: '1', path: '/recruit/teacher/studentList/index', key: 'schoolInfo' }, // 审核通过
-  { status: '2', path: '/register/school/inReview', key: 'registerSchoolInfo' }, // 审核不通过
+  { status: '2', path: '/recruit/teacher/register/school/inReview', key: 'registerSchoolInfo' }, // 审核不通过
 ]
 const handleSwitchTeacher = () => {
   const obj = statusList.find(item => item.status === schoolInfo.value?.authStatus)

+ 7 - 1
src/layout/teacher/navBar.vue

@@ -46,6 +46,7 @@ import { useRouter } from 'vue-router'; const router = useRouter()
 import { useI18n } from '@/hooks/web/useI18n'; const { t } = useI18n()
 import { getUserAvatar } from '@/utils/avatar'
 import { formatName } from '@/utils/getText';
+import Confirm from '@/plugins/confirm'
 defineOptions({ name: 'teacher-navbar' })
 
 defineProps({
@@ -63,7 +64,12 @@ onMounted(() => {
   }
 })
 
-const handleLogoClick = () => { window.open('/recruitHome') } // 点击logo
+// 点击logo
+const handleLogoClick = () => {
+  Confirm('系统提示', '您将离开火苗儿校企平台前往门墩儿招聘!将以门墩儿招聘求职者的身份访问,是否继续前往?').then(() => {
+    window.open('/recruitHome')
+  })
+}
 
 // 退出登录
 const handleLogout = async () => {

+ 4 - 3
src/permission.js

@@ -8,6 +8,7 @@ import Confirm from '@/plugins/confirm'
 import fullScreen from '@/plugins/fullScreen'
 import dialogExtend from '@/plugins/dialogExtend'
 import { useMallStore } from '@/store/mall'
+import { showImprovePersonaInfo } from '@/utils/whiteList'
 
 const { start, done } = useNProgress()
 
@@ -38,9 +39,9 @@ router.beforeEach(async (to, from, next) => {
   } else if (getToken(tokenIndex)) {
     // 强制修改密码
     if (localStorage.getItem('entUpdatePassword') === 'needChange') fullScreen('entUpdatePassword')
-    // 强制填写个人信息 fddeaddc47868b/ready
-    else if (localStorage.getItem('chooseRole') === 'showChooseRole' && to.path !== '/register/selectedPersonRole' && tokenIndex === 2) next('/register/selectedPersonRole')
-    else if (localStorage.getItem('necessaryInfoReady') === 'fddeaddc47868b' && tokenIndex === 2 && localStorage.getItem('chooseRole') !== 'showChooseRole') dialogExtend('necessaryInfoDialog')
+    // 强制填写个人信息
+    else if (localStorage.getItem('necessaryInfoReady') === 'showChoose' && tokenIndex === 2 && to.path !== '/register/selectedPersonRole' && !showImprovePersonaInfo(to?.path)) next('/register/selectedPersonRole')
+    else if (['student', 'person'].includes(localStorage.getItem('necessaryInfoReady')) && tokenIndex === 2 && !showImprovePersonaInfo(to?.path)) dialogExtend('necessaryInfoDialog')
     // 企业信息完成度提示
     else if (localStorage.getItem('checkEnterpriseBaseInfoFalseHref') && tokenIndex === 1) {
       if (to.path !== '/recruit/enterprise/position/add') { // 除了点击企业登录免费职位广告提示跳转路由不提示

+ 3 - 0
src/plugins/dialogExtend/components/infoForm.vue

@@ -334,8 +334,11 @@ const getDictData = async (dictTypeName, key) => {
 
 const userInfo = ref(localStorage.getItem('userInfo') ? JSON.parse(localStorage.getItem('userInfo')) : {})
 const baseInfo = ref(localStorage.getItem('baseInfo') ? JSON.parse(localStorage.getItem('baseInfo')) : {})
+const schoolInfo = ref(localStorage.getItem('schoolInfo') ? JSON.parse(localStorage.getItem('schoolInfo')) : {})
+
 items.value.options.forEach((e) => {
   if (e.dictTypeName) getDictData(e.dictTypeName, e.key) // 查字典set options
+  if (schoolInfo.value && schoolInfo.value[e.key]) e.value = schoolInfo.value[e.key] // 人才信息回显
   if (userInfo.value && userInfo.value[e.key]) e.value = userInfo.value[e.key] // 人才信息回显
   if (baseInfo.value && baseInfo.value[e.key]) e.value = baseInfo.value[e.key] // 人才信息回显
   if (e.key === 'sex' && e.value === '0') e.value = e.default

+ 2 - 3
src/plugins/dialogExtend/components/necessaryInfoDialog.vue

@@ -50,7 +50,7 @@ const props = defineProps({
 })
 
 const dialog = ref(false)
-const isStudent = ref(localStorage.getItem('chooseRole') === 'student')
+const isStudent = ref(localStorage.getItem('necessaryInfoReady') === 'student')
 
 // const isMobile = ref(false)
 onMounted(() => {
@@ -83,9 +83,8 @@ const simpleInfoSubmit = async () => {
     Snackbar.success('保存成功')
     // const info = localStorage.getItem('baseInfo') ? JSON.parse(localStorage.getItem('baseInfo')) : {}
     // localStorage.setItem('baseInfo', JSON.stringify({ ...info, ...obj }))
-    // localStorage.setItem('necessaryInfoReady', 'ready') //
     await useUserStore().getUserBaseInfos() // 更新用户信息
-    if (isStudent.value) localStorage.removeItem('chooseRole')
+    localStorage.setItem('necessaryInfoReady', 'ready')
     dialog.value = false
     overlay.value = false
     props.sure()

+ 0 - 3
src/plugins/dialogExtend/index.js

@@ -3,11 +3,8 @@ import necessaryInfoDialog from './components/necessaryInfoDialog.vue'
 import positionAd from './components/positionAd.vue'
 import jobFairAd from './components/jobFairAd.vue'
 import vuetify from '@/plugins/vuetify'
-// import { showImprovePersonaInfo } from '@/utils/whiteList'
-// import router from '@/router'
 
 const toastMessage = (type, option = {})  => {
-  // if (type === 'necessaryInfoDialog' && router && showImprovePersonaInfo(router.path)) return
   return new Promise((resolve, reject) => {
     const componentName = type === 'necessaryInfoDialog' ?
       necessaryInfoDialog : type === 'positionAd' ?

+ 2 - 2
src/router/modules/remaining.js

@@ -53,7 +53,7 @@ const remainingRouter = [
     }
   },
   {
-    path: '/register/schoolIndex',
+    path: '/recruit/teacher/register/schoolIndex',
     component: () => import('@/views/register/schoolForm.vue'),
     name: 'registerShoolForm',
     meta: {
@@ -62,7 +62,7 @@ const remainingRouter = [
     }
   },
   {
-    path: '/register/school/inReview',
+    path: '/recruit/teacher/register/school/inReview',
     component: () => import('@/views/register/schoolInReview.vue'),
     name: 'registerShoolInReview',
     meta: {

+ 9 - 10
src/store/user.js

@@ -70,7 +70,7 @@ export const useUserStore = defineStore('user',
             localStorage.setItem('expiresTime', res.expiresTime) // token过期时间
             updateEventList(true) // 获取规则配置跟踪列表
             await this.getUserInfos()
-            await this.getUserBaseInfos('', { chooseRole: data.chooseRole, login: true })
+            await this.getUserBaseInfos('', { login: true })
             if (data?.schoolRegister) await this.getSchoolInfo(true)
             resolve(res)
           }).catch(err => { reject(err) })
@@ -131,13 +131,9 @@ export const useUserStore = defineStore('user',
           data = data || {}
           this.baseInfo = await this.getFieldText(data)
           localStorage.setItem('baseInfo', JSON.stringify(this.baseInfo))
-          // chooseRole如果是注册进入待选择求职角色,不弹必填信息弹窗
-          localStorage.setItem('necessaryInfoReady', !option?.chooseRole || checkPersonBaseInfo(this.baseInfo) ? 'ready' : 'fddeaddc47868b')
-
-          if (option?.chooseRole) {
-            // 刚注册时让用户选择学生用户还是求职者用户,角色不同填写的基本信息不同。
-            localStorage.setItem('chooseRole', 'showChooseRole')
-          }
+          // 强制填写个人信息: ready->已填写 showChoose->选择角色 student->学生 person->职场人士
+          // 用户登录后校验是否完善人才必填信息
+          localStorage.setItem('necessaryInfoReady', checkPersonBaseInfo(this.baseInfo) ? 'ready' : 'showChoose')
           // 当前角色若为学生则获取学生信息
           if (data?.type && Number(data.type) === 1) this.getStudentInformation(Boolean(option?.login || option?.register))
         } catch (error) {
@@ -286,6 +282,9 @@ export const useUserStore = defineStore('user',
 
       // 获取学校基本信息
       async getSchoolInfo (isRegister = false) {
+        
+        localStorage.setItem('necessaryInfoReady', 'person') // 老师注册默认为职场人士
+
         const data = await getSchoolInformation()
 
         // 存储学校登录标识
@@ -299,12 +298,12 @@ export const useUserStore = defineStore('user',
 
         if (!data || !Object.keys(data).length) {
           // console.log('没有注册过,直接跳转到学校注册页面')
-          router.push({ path: '/register/schoolIndex' })
+          router.push({ path: '/recruit/teacher/register/schoolIndex' })
         }
         else if (data?.authStatus === '0' || data?.authStatus === '2') {
           // console.log('审核中,等待审核  || 审核不通过,重新填写信息提交', data.authStatus)
           localStorage.setItem('registerSchoolInfo', JSON.stringify(data))
-          router.push({ path: '/register/school/inReview' })
+          router.push({ path: '/recruit/teacher/register/school/inReview' })
         }
         else if (data?.authStatus === '1') {
           // console.log('审核通过直接进入老师页面')

+ 2 - 2
src/utils/check.js

@@ -1,8 +1,8 @@
-// 校验是否完善人才必填信息
+// 校验是否完善人才必填信息 ready: 已具备; showChoose: 选择角色; student: 学生; person: 职场人士
 export const checkPersonBaseInfo = (baseInfo) => {
   const info = baseInfo ? baseInfo : localStorage.getItem('baseInfo') ? JSON.parse(localStorage.getItem('baseInfo')) : {}
   if (!info || !Object.keys(info).length) return false
-  if (info.type === '1') return true // 学生信息管理。 type:'0'是求职者,'1'是学生
+  if (info.type === '1') return true // 保存学生信息才会成为学生,无需再弹必填信息弹窗。 type:'0'是求职者,'1'是学生
   const keyArr = [ // 必填项目
     'name',
     'sex',

+ 3 - 5
src/utils/whiteList.js

@@ -2,8 +2,6 @@
 // 查询是否在白名单内
 const checkWhiteListFun = (url, whiteList)=> {
   const path = url.split('?')[0]
-  // console.log('path:', path)
-  // console.log('whiteList:', whiteList)
   for (const item of whiteList) {
     if (path.startsWith(item)) {
       // console.log('在白名单内')
@@ -13,7 +11,7 @@ const checkWhiteListFun = (url, whiteList)=> {
   return false
 }
 
-// 是否展示完善个人信息弹窗
+// 是否展示完善个人信息弹窗 // 选择角色
 export const showImprovePersonaInfo = (url) => {
   if (!url) return false
   const list = [
@@ -22,8 +20,8 @@ export const showImprovePersonaInfo = (url) => {
     '/enterpriseInvite',
     '/register/company',
     '/register/selectedPersonRole',
-    // '/recruit/entRegister/joiningEnterprise',
-    // '/recruit/entRegister/inReview',
+    '/flameLogin',
+    '/recruit/teacher',
   ]
   return checkWhiteListFun(url, list)
 }

+ 0 - 1
src/views/login/flameLogin.vue

@@ -105,7 +105,6 @@ const handleLogin = async () => {
 
   const params = {
     ...phoneRef.value.loginData,
-    chooseRole: false,
     schoolRegister: true
   }
   

+ 0 - 1
src/views/login/index.vue

@@ -202,7 +202,6 @@ const handleLogin = async () => {
     await userStore[api](params)
     // 跳转
     if (params.isEnterprise) return // 企业邮箱登录
-    else localStorage.setItem('simpleCompleteDialogHaveBeenShow', true) // 个人登录简易基本信息填写弹窗open-status
     Snackbar.success(t('login.loginSuccess'))
     router.push({ path: '/recruitHome' })
 

+ 1 - 1
src/views/recruit/entRegister/inReview.vue

@@ -116,7 +116,7 @@ const handleConfirm = () => {
 
 const toHome = () => {
   if (getToken() && !checkPersonBaseInfo()) { // 强制填写个人信息
-    localStorage.setItem('necessaryInfoReady', 'fddeaddc47868b')
+    localStorage.setItem('necessaryInfoReady', 'person') // 企业注册手机默认为职场人士
     setTimeout(() => {
       dialogExtend('necessaryInfoDialog')
     }, 1000)

+ 1 - 1
src/views/recruit/personal/PersonalCenter/student/information/index.vue

@@ -152,7 +152,7 @@ const getDepartmentList = async (id, key, type, isRefreshValue = false) => {
 
 // 获取学生基本信息
 const studentInfoFun = async () => {
-  const data = JSON.parse(localStorage.getItem('studentInfo') || '{}')
+  const data = localStorage.getItem('studentInfo') ? JSON.parse(localStorage.getItem('studentInfo')) : null
   if (!data || !Object.keys(data).length) await userStore.getStudentInformation()
   if (data.schoolId) getDepartmentList(data.schoolId, 'schoolDeptId', 0)
   if (data?.schoolClassId) getDepartmentList(data.schoolDeptId, 'schoolClassId', 2)

+ 1 - 0
src/views/register/company.vue

@@ -35,6 +35,7 @@ const handleValidate = async () => {
   } 
   // 查看用户是否有在申请中的数据
   const data = await getUserRegisterEnterpriseApply()
+  localStorage.setItem('necessaryInfoReady', 'person') // 企业注册手机默认为职场人士
   const bool = data && Object.keys(data).length && data.status !== '1' // 已经有数据说明已经申请过了 且申请状态如果为已通过,则跳转到注册页面让用户可以注册新的企业
   const path = bool ? '/recruit/entRegister/inReview' : '/recruit/entRegister'
   router.push({ path, query: { type: 'noLoginToRegister' } })

+ 0 - 2
src/views/register/person.vue

@@ -73,7 +73,6 @@ const handleRegister = async () => {
     await userStore.handleSmsLogin({ 
       ...phoneRef.value.loginData,
       autoRegister: true,
-      chooseRole: props.isCompany || props.isSchool ? false : true,
       schoolRegister: props.isSchool
     })
     // autoRegister 自动注册登录
@@ -82,7 +81,6 @@ const handleRegister = async () => {
 
     Snackbar.success(props.isCompany ? '手机号验证成功' : '注册成功')
     if (!props.isCompany) {
-      localStorage.setItem('simpleCompleteDialogHaveBeenShow', true) // 个人登录简易基本信息填写弹窗open-status
       router.push({ path: '/recruitHome' })
       localStorage.removeItem('loginAccount')
     } else emit('success')

+ 2 - 2
src/views/register/school.vue

@@ -18,9 +18,9 @@ onMounted(async () => {
   isMobile.value = /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i.test(userAgent)
 })
 
-// 手机验证码效验通过
+// 登录
 const handleValidate= async () => {
-	localStorage.setItem('necessaryInfoReady', 'ready')
+  localStorage.setItem('necessaryInfoReady', 'person') // 老师注册默认为职场人士
 }
 </script>
 

+ 1 - 1
src/views/register/schoolForm.vue

@@ -215,7 +215,7 @@ const handleSubmit = async () => {
 		// 重新提交审核的需将authStatus改为0(待审核状态)
 		localStorage.setItem('registerSchoolInfo', JSON.stringify({ ...obj, authStatus: '0' }))
 		isUpdate.value = false
-		router.push('/register/school/inReview')
+		router.push('/recruit/teacher/register/school/inReview')
 	} catch {}
 }
 </script>

+ 1 - 1
src/views/register/schoolInReview.vue

@@ -72,7 +72,7 @@ const handleBackToFlame = async () => {
 
 // 重新提交
 const handleConfirm = async () => {
-  router.push('/register/schoolIndex')
+  router.push('/recruit/teacher/register/schoolIndex')
 }
 
 // 刷新审核状态

+ 2 - 8
src/views/register/selectedPersonRole.vue

@@ -32,15 +32,9 @@ onMounted(async () => {
   isMobile.value = /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i.test(userAgent)
 })
 
+// 强制填写个人信息 ready: 已具备; showChoose: 选择角色; student: 学生; person: 职场人士
 const handleClickRole = (type) => {
-  // localStorage.removeItem('chooseRole')
-  if (type) {
-    // 学生用户
-    localStorage.setItem('chooseRole', 'student') // 校验是否完善人才必填信息
-  } else {
-    // 普通用户
-    localStorage.removeItem('chooseRole')
-  }
+  localStorage.setItem('necessaryInfoReady', type ? 'student' : 'person')
   nextTick(() => {
     window.location.href = '/recruitHome'
   })