|
@@ -5,8 +5,17 @@
|
|
<!-- <div class="text-end pr-5 pt-5">
|
|
<!-- <div class="text-end pr-5 pt-5">
|
|
<span class="color-error cursor-pointer text-decoration-underline" @click="router.push('/register/selected')">还没有登录账户?去注册</span>
|
|
<span class="color-error cursor-pointer text-decoration-underline" @click="router.push('/register/selected')">还没有登录账户?去注册</span>
|
|
</div> -->
|
|
</div> -->
|
|
|
|
+ <div class="login-change" @click="handleChangeLogin">{{ isEnterpriseLogin ? '切换个人登录' : '切换企业登录' }}</div>
|
|
<div class="login-content-box my-10">
|
|
<div class="login-content-box my-10">
|
|
- <div class="login-tab">
|
|
|
|
|
|
+ <!-- 企业邮箱登录 -->
|
|
|
|
+ <div v-show="isEnterpriseLogin" class="login-tab">
|
|
|
|
+ <v-tabs v-model="tab1" align-tabs="center" color="primary" class="mb-10">
|
|
|
|
+ <v-tab :value="1">企业邮箱登录</v-tab>
|
|
|
|
+ </v-tabs>
|
|
|
|
+ <passwordFrom ref="passRef" placeholder="请输入企业邮箱" :validEmail="true" @handleEnter="handleLogin"></passwordFrom>
|
|
|
|
+ </div>
|
|
|
|
+ <!-- 个人登录 -->
|
|
|
|
+ <div v-show="!isEnterpriseLogin" class="login-tab">
|
|
<v-tabs v-model="tab" align-tabs="center" color="primary" class="mb-10" @update:modelValue="tabChange">
|
|
<v-tabs v-model="tab" align-tabs="center" color="primary" class="mb-10" @update:modelValue="tabChange">
|
|
<v-tab :value="1">验证码</v-tab>
|
|
<v-tab :value="1">验证码</v-tab>
|
|
<v-tab :value="2">账号</v-tab>
|
|
<v-tab :value="2">账号</v-tab>
|
|
@@ -33,7 +42,7 @@
|
|
</v-window>
|
|
</v-window>
|
|
</div>
|
|
</div>
|
|
<div class="font-size-14 tips">
|
|
<div class="font-size-14 tips">
|
|
- <span class="float-left color-666 cursor-pointer" v-if="tab === 2" @click="router.push('/forgotPassword')">忘记密码</span>
|
|
|
|
|
|
+ <span class="float-left color-666 cursor-pointer" v-if="tab === 2 && !isEnterpriseLogin" @click="router.push('/forgotPassword')">忘记密码</span>
|
|
<span class="float-right color-error cursor-pointer text-decoration-underline" @click="router.push('/register/selected')">还没有登录账户?去注册</span>
|
|
<span class="float-right color-error cursor-pointer text-decoration-underline" @click="router.push('/register/selected')">还没有登录账户?去注册</span>
|
|
</div>
|
|
</div>
|
|
<v-btn :loading="loginLoading" color="primary" class="white--text mt-5" min-width="350" @click="handleLogin">
|
|
<v-btn :loading="loginLoading" color="primary" class="white--text mt-5" min-width="350" @click="handleLogin">
|
|
@@ -51,7 +60,7 @@
|
|
|
|
|
|
<script setup>
|
|
<script setup>
|
|
defineOptions({ name: 'login-index' })
|
|
defineOptions({ name: 'login-index' })
|
|
-import { ref } from 'vue'
|
|
|
|
|
|
+import { nextTick, ref } from 'vue'
|
|
import passwordFrom from './components/passwordPage.vue'
|
|
import passwordFrom from './components/passwordPage.vue'
|
|
import phoneFrom from '@/components/VerificationCode'
|
|
import phoneFrom from '@/components/VerificationCode'
|
|
import { useUserStore } from '@/store/user'
|
|
import { useUserStore } from '@/store/user'
|
|
@@ -68,6 +77,15 @@ import navBar from '@/layout/personal/navBar.vue'
|
|
const { t } = useI18n()
|
|
const { t } = useI18n()
|
|
const router = useRouter()
|
|
const router = useRouter()
|
|
const tab = ref(1)
|
|
const tab = ref(1)
|
|
|
|
+const tab1 = ref(1)
|
|
|
|
+const isEnterpriseLogin = ref(false)
|
|
|
|
+
|
|
|
|
+const handleChangeLogin = () => {
|
|
|
|
+ isEnterpriseLogin.value = !isEnterpriseLogin.value
|
|
|
|
+ nextTick(() => {
|
|
|
|
+ tab.value = isEnterpriseLogin.value ? 2 : 1 // 为了验证邮箱validate
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
|
|
// 验证码登录
|
|
// 验证码登录
|
|
const phoneRef = ref()
|
|
const phoneRef = ref()
|
|
@@ -95,9 +113,10 @@ const handleLogin = async () => {
|
|
else { params = { ...passRef.value.loginData }; api = 'handlePasswordLogin'}
|
|
else { params = { ...passRef.value.loginData }; api = 'handlePasswordLogin'}
|
|
|
|
|
|
// 邮箱为企业招聘, 手机号为个人求职
|
|
// 邮箱为企业招聘, 手机号为个人求职
|
|
- if (tab.value === 2) {
|
|
|
|
|
|
+ if (isEnterpriseLogin.value) {
|
|
const pattern = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
|
|
const pattern = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
|
|
const isEnterprise = pattern.test(params.phone)
|
|
const isEnterprise = pattern.test(params.phone)
|
|
|
|
+ if (!isEnterprise) return // 选中企业登录但输入内容非邮箱
|
|
params.isEnterprise = isEnterprise
|
|
params.isEnterprise = isEnterprise
|
|
}
|
|
}
|
|
await userStore[api](params)
|
|
await userStore[api](params)
|
|
@@ -139,11 +158,11 @@ const handleLogin = async () => {
|
|
// }
|
|
// }
|
|
|
|
|
|
// const showQrCode = ref(false)
|
|
// const showQrCode = ref(false)
|
|
-// const tabChange = (val) => {
|
|
|
|
-// if (val === 3) {
|
|
|
|
-// getSocialAuthRedirect()
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
|
|
+const tabChange = (val) => {
|
|
|
|
+ if (val === 3) {
|
|
|
|
+ // getSocialAuthRedirect()
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
@@ -159,6 +178,23 @@ const handleLogin = async () => {
|
|
position: absolute;
|
|
position: absolute;
|
|
top: 0;
|
|
top: 0;
|
|
}
|
|
}
|
|
|
|
+.login-change {
|
|
|
|
+ position: absolute;
|
|
|
|
+ top: 0;
|
|
|
|
+ right: 0;
|
|
|
|
+ padding: 15px 44px;
|
|
|
|
+ text-decoration: underline;
|
|
|
|
+ color: orange;
|
|
|
|
+ cursor: pointer;
|
|
|
|
+ font-weight: 400;
|
|
|
|
+ &:hover {
|
|
|
|
+ text-decoration: underline;
|
|
|
|
+ color: #fbb93e;
|
|
|
|
+ }
|
|
|
|
+ // width: 450px;
|
|
|
|
+ // background-color: #fff;
|
|
|
|
+ // border-radius: 10px;
|
|
|
|
+}
|
|
.login-content {
|
|
.login-content {
|
|
position: absolute;
|
|
position: absolute;
|
|
top: 50%;
|
|
top: 50%;
|