|
|
|
@ -15,13 +15,12 @@ function Login() {
|
|
|
|
const handleLogin = async () => {
|
|
|
|
const handleLogin = async () => {
|
|
|
|
const url = new URL(window.location.href);
|
|
|
|
const url = new URL(window.location.href);
|
|
|
|
const code = url.searchParams.get('code');
|
|
|
|
const code = url.searchParams.get('code');
|
|
|
|
const { origin } = window.location;
|
|
|
|
const { origin, pathname } = window.location;
|
|
|
|
|
|
|
|
|
|
|
|
setIsNeedLogin(code === null);
|
|
|
|
setIsNeedLogin(code === null);
|
|
|
|
console.log('code:', code);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (code) {
|
|
|
|
if (code) {
|
|
|
|
const callbackUrl = `${origin}`;
|
|
|
|
const callbackUrl = `${origin}/`;
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
// 根据code向后端获取token
|
|
|
|
// 根据code向后端获取token
|
|
|
|
const res: any = await getToken({
|
|
|
|
const res: any = await getToken({
|
|
|
|
@ -43,7 +42,6 @@ function Login() {
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
// 使用Next.js标准路由跳转方式
|
|
|
|
|
|
|
|
router.push('/dashboard/workplace');
|
|
|
|
router.push('/dashboard/workplace');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -56,29 +54,46 @@ function Login() {
|
|
|
|
useEffect(() => {
|
|
|
|
useEffect(() => {
|
|
|
|
document.body.setAttribute('arco-theme', 'light');
|
|
|
|
document.body.setAttribute('arco-theme', 'light');
|
|
|
|
|
|
|
|
|
|
|
|
// 模拟Vue的onMounted行为,在组件挂载后执行
|
|
|
|
|
|
|
|
handleLogin();
|
|
|
|
handleLogin();
|
|
|
|
}, [router]); // 依赖数组包含router,确保router变化时能正确执行
|
|
|
|
}, [router]); // 依赖数组包含router,确保router变化时能正确执行
|
|
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
return (
|
|
|
|
<div className={styles.container}>
|
|
|
|
<div className={styles.container}>
|
|
|
|
<div className={styles.logo}>
|
|
|
|
<>
|
|
|
|
<Logo />
|
|
|
|
<div className={styles.logo}>
|
|
|
|
<div className={styles['logo-text']}>Arco Design Pro</div>
|
|
|
|
<Logo />
|
|
|
|
</div>
|
|
|
|
<div className={styles['logo-text']}>Arco Design Pro</div>
|
|
|
|
<div className={styles.banner}>
|
|
|
|
|
|
|
|
<div className={styles['banner-inner']}>
|
|
|
|
|
|
|
|
<LoginBanner />
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div className={styles.banner}>
|
|
|
|
<div className={styles.content}>
|
|
|
|
<div className={styles['banner-inner']}>
|
|
|
|
<div className={styles['content-inner']}>
|
|
|
|
<LoginBanner />
|
|
|
|
<LoginForm />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{/*<div className={styles.footer}>*/}
|
|
|
|
<div className={styles.content}>
|
|
|
|
{/* <Footer />*/}
|
|
|
|
<div className={styles['content-inner']}>
|
|
|
|
{/*</div>*/}
|
|
|
|
{isNeedLogin ? (
|
|
|
|
</div>
|
|
|
|
<LoginForm />
|
|
|
|
|
|
|
|
) : (
|
|
|
|
|
|
|
|
<div className={styles['loading-content']}>
|
|
|
|
|
|
|
|
<h3 className={styles['loading-text']}>获取授权中...</h3>
|
|
|
|
|
|
|
|
<div className={styles['page-loading-warp']}>
|
|
|
|
|
|
|
|
<div className={`${styles['ant-spin']} ${styles['ant-spin-lg']} ${styles['ant-spin-spinning']}`}>
|
|
|
|
|
|
|
|
<span className={`${styles['ant-spin-dot']} ${styles['ant-spin-dot-spin']}`}>
|
|
|
|
|
|
|
|
<i className={styles['ant-spin-dot-item']} />
|
|
|
|
|
|
|
|
<i className={styles['ant-spin-dot-item']} />
|
|
|
|
|
|
|
|
<i className={styles['ant-spin-dot-item']} />
|
|
|
|
|
|
|
|
<i className={styles['ant-spin-dot-item']} />
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
)}
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
{/*<div className={styles.footer}>*/}
|
|
|
|
|
|
|
|
{/* <Footer />*/}
|
|
|
|
|
|
|
|
{/*</div>*/}
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|