From bd999ecc09fcacf4016edcba85caf9b9696d2140 Mon Sep 17 00:00:00 2001 From: lrj <owen.stl@gmail.com> Date: 星期六, 04 十月 2025 18:40:31 +0800 Subject: [PATCH] feat: 同步本地改动(认证/评审/用户/选手模块更新;新增/调整 GraphQL schema;小程序个人信息与评审相关页面、配置与资源等) --- web/src/views/login/index.vue | 80 +++++++++++++++++++++++++++++++++++---- 1 files changed, 71 insertions(+), 9 deletions(-) diff --git a/web/src/views/login/index.vue b/web/src/views/login/index.vue index 995bd4f..a714cc8 100644 --- a/web/src/views/login/index.vue +++ b/web/src/views/login/index.vue @@ -2,6 +2,7 @@ <div class="login-container"> <div class="login-box"> <div class="login-header"> + <img src="/logo.jpg" alt="钃夋槗鍒汱ogo" class="logo" /> <h2>钃夋槗鍒涚鐞嗙郴缁�</h2> <p>姣旇禌绠$悊骞冲彴</p> </div> @@ -62,6 +63,8 @@ import { useRouter } from 'vue-router' import { ElMessage } from 'element-plus' import type { FormInstance, FormRules } from 'element-plus' +// import { loginApi } from '@/utils/graphql' +import { setToken, setUserInfo } from '@/utils/auth' const router = useRouter() const loginFormRef = ref<FormInstance>() @@ -93,17 +96,68 @@ await loginFormRef.value.validate() loading.value = true - // TODO: 璋冪敤鐧诲綍API - // 妯℃嫙鐧诲綍 - setTimeout(() => { - localStorage.setItem('token', 'mock-token-' + Date.now()) - ElMessage.success('鐧诲綍鎴愬姛') - router.push('/') - loading.value = false - }, 1000) + // 璋冪敤RESTful鐧诲綍API + const response = await fetch('/api/auth/web-login', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + phone: loginForm.phone, + password: loginForm.password + }) + }) - } catch (error) { + console.log('Response status:', response.status) + console.log('Response headers:', response.headers) + + // 妫�鏌ュ搷搴旀槸鍚︿负绌� + const responseText = await response.text() + console.log('Response text:', responseText) + + if (!responseText) { + throw new Error('鏈嶅姟鍣ㄨ繑鍥炵┖鍝嶅簲') + } + + let result + try { + result = JSON.parse(responseText) + } catch (jsonError) { + console.error('JSON瑙f瀽閿欒:', jsonError) + console.error('鍝嶅簲鍐呭:', responseText) + throw new Error('鏈嶅姟鍣ㄥ搷搴旀牸寮忛敊璇�') + } + + if (!response.ok) { + throw new Error(result.message || '鐧诲綍澶辫触') + } + + // 淇濆瓨token鍜岀敤鎴蜂俊鎭� + setToken(result.token) + setUserInfo(result.userInfo) + + ElMessage.success('鐧诲綍鎴愬姛') + router.push('/') + + } catch (error: any) { console.error('鐧诲綍澶辫触:', error) + + // 鏄剧ず閿欒淇℃伅 + let errorMessage = '鐧诲綍澶辫触' + if (error.message) { + if (error.message.includes('鐢ㄦ埛涓嶅瓨鍦�')) { + errorMessage = '鐢ㄦ埛涓嶅瓨鍦紝璇锋鏌ユ墜鏈哄彿' + } else if (error.message.includes('瀵嗙爜涓嶆纭�')) { + errorMessage = '瀵嗙爜涓嶆纭紝璇烽噸鏂拌緭鍏�' + } else if (error.message.includes('娌℃湁鏉冮檺')) { + errorMessage = '鎮ㄦ病鏈夎闂潈闄愶紝璇疯仈绯荤鐞嗗憳' + } else { + errorMessage = error.message + } + } + + ElMessage.error(errorMessage) + } finally { loading.value = false } } @@ -130,6 +184,14 @@ text-align: center; margin-bottom: 30px; + .logo { + width: 80px; + height: 80px; + object-fit: contain; + margin-bottom: 20px; + border-radius: 8px; + } + h2 { color: #303133; font-size: 24px; -- Gitblit v1.8.0