|
|
@@ -9,7 +9,7 @@
|
|
|
<!-- 登录输入框 -->
|
|
|
<div class="login-wrapper">
|
|
|
<div class="login-input">
|
|
|
- <span>人工智能通识课平台</span>
|
|
|
+ <span>{{ appTitle }}</span>
|
|
|
<el-form
|
|
|
ref="loginFormRef"
|
|
|
:model="loginData.loginForm"
|
|
|
@@ -18,15 +18,15 @@
|
|
|
class="input-item"
|
|
|
>
|
|
|
<el-form-item prop="tenantName">
|
|
|
- <el-input
|
|
|
+ <el-input v-show="!tenantNameQuery"
|
|
|
v-model="loginData.loginForm.tenantName"
|
|
|
:prefix-icon="HomeFilled"
|
|
|
placeholder="学校"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
-
|
|
|
+
|
|
|
<!-- 条件显示手机号和短信验证码或账号和密码 -->
|
|
|
- <template v-if="isAuthorized">
|
|
|
+ <template v-if="isAuthorized">
|
|
|
<el-form-item prop="username">
|
|
|
<el-input
|
|
|
v-model="loginData.loginForm.username"
|
|
|
@@ -44,8 +44,8 @@
|
|
|
show-password
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
- </template>
|
|
|
-
|
|
|
+ </template>
|
|
|
+
|
|
|
<template v-else>
|
|
|
<el-form-item prop="phoneNumber">
|
|
|
<el-input
|
|
|
@@ -62,8 +62,8 @@
|
|
|
placeholder="短信验证码"
|
|
|
class="sms-input"
|
|
|
/>
|
|
|
- <el-button
|
|
|
- type="primary"
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
@click="getSmsCode"
|
|
|
:disabled="countingDown"
|
|
|
class="get-code-btn"
|
|
|
@@ -73,7 +73,7 @@
|
|
|
</el-button>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
- </template>
|
|
|
+ </template>
|
|
|
|
|
|
<!-- 登录按钮 -->
|
|
|
<el-form-item>
|
|
|
@@ -102,9 +102,11 @@ import { ElLoading, ElMessage } from 'element-plus'
|
|
|
|
|
|
import BGImages from '@/assets/images/homeBG.png'
|
|
|
|
|
|
-
|
|
|
const router = useRouter()
|
|
|
|
|
|
+// 获取环境变量
|
|
|
+const appTitle = import.meta.env.VITE_APP_TITLE
|
|
|
+
|
|
|
const loginFormRef = ref(null)
|
|
|
|
|
|
const loginData = ref({
|
|
|
@@ -123,6 +125,8 @@ const loading = ref() // ElLoading.service 返回的实例
|
|
|
const tenantId = ref('')
|
|
|
// 登录状态标识
|
|
|
const isLoggedIn = ref(false)
|
|
|
+//地址栏传参默认值
|
|
|
+const tenantNameQuery = ref()
|
|
|
|
|
|
// 短信验证码相关状态
|
|
|
const countingDown = ref(false)
|
|
|
@@ -216,12 +220,11 @@ const getSmsCode = async () => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
// 验证码倒计时函数
|
|
|
const startCountDown = () => {
|
|
|
countingDown.value = true
|
|
|
countDown.value = 60
|
|
|
-
|
|
|
+
|
|
|
if (countDownTimer) {
|
|
|
clearInterval(countDownTimer)
|
|
|
}
|
|
|
@@ -258,7 +261,7 @@ const handleLogin = async params => {
|
|
|
{ 'Tenant-Id': tenantId.value },{
|
|
|
mobile: loginData.value.loginForm.phoneNumber,
|
|
|
code: loginData.value.loginForm.smsCode,
|
|
|
- })
|
|
|
+ })
|
|
|
} else {
|
|
|
// 授权状态,使用账号密码登录
|
|
|
res = await login(
|
|
|
@@ -266,7 +269,7 @@ const handleLogin = async params => {
|
|
|
loginDataLoginForm
|
|
|
)
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if (!res) {
|
|
|
return
|
|
|
}
|
|
|
@@ -317,15 +320,13 @@ const handleLogin = async params => {
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
// 在组件挂载时检查登录状态和恢复登录信息
|
|
|
onMounted(() => {
|
|
|
const storedStatus = localStorage.getItem('isLoggedIn') // isLoggedIn
|
|
|
const storedTenantName = localStorage.getItem('tenantName')
|
|
|
const storedUserName = localStorage.getItem('userName')
|
|
|
const storedPassword = localStorage.getItem('password')
|
|
|
-
|
|
|
+
|
|
|
// 恢复登录信息到输入框
|
|
|
if (storedTenantName) {
|
|
|
loginData.value.loginForm.tenantName = storedTenantName
|
|
|
@@ -337,7 +338,16 @@ onMounted(() => {
|
|
|
loginData.value.loginForm.password = storedPassword
|
|
|
loginData.value.loginForm.rememberMe = true
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ // 检查地址栏是否有tenantName参数
|
|
|
+ let tenantName = router.currentRoute.value.query?.TENANT;
|
|
|
+ if (tenantName && tenantName === "内部测试租户") {
|
|
|
+ loginData.value.loginForm.tenantName = tenantNameQuery.value = tenantName
|
|
|
+ } else if (Object.keys(router.currentRoute.value.query).length > 0) {
|
|
|
+ // 其他参数,重定向到登录页
|
|
|
+ router.replace('/login')
|
|
|
+ }
|
|
|
+
|
|
|
// 检查登录状态,如果已登录则直接跳转到首页
|
|
|
if (storedStatus === 'true') {
|
|
|
isLoggedIn.value = true
|
|
|
@@ -350,9 +360,9 @@ onMounted(() => {
|
|
|
handleLogin()
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
document.addEventListener('keydown', handleKeyPress)
|
|
|
-
|
|
|
+
|
|
|
// 在组件卸载时移除事件监听
|
|
|
onUnmounted(() => {
|
|
|
document.removeEventListener('keydown', handleKeyPress)
|
|
|
@@ -389,8 +399,8 @@ onMounted(() => {
|
|
|
flex: 1; // 登录框占比为 1
|
|
|
background: linear-gradient(to bottom, #001169, #8a78d0);
|
|
|
padding: 20px;
|
|
|
- position: static;
|
|
|
- transform: none;
|
|
|
+ position: static;
|
|
|
+ transform: none;
|
|
|
display: flex; // 添加 Flexbox 布局
|
|
|
justify-content: center; // 水平居中
|
|
|
align-items: center; // 垂直居中
|