From 351b465d5bcaa865075b8cf96b154ab0bb106e59 Mon Sep 17 00:00:00 2001 From: zzh <1368735060@qq.com> Date: Fri, 30 Oct 2026 17:07:23 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=A2=E6=88=B7=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E5=AF=B9=E9=BD=90=E7=99=BB=E5=BD=95=E5=A3=B3=EF=BC=8C=E5=B9=B6?= =?UTF-8?q?=E6=8B=86=E5=88=86=E7=BD=91=E9=A1=B5/=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 登录仅保留账号与微信;注册先选渠道,代理码仅 URL 携带时自动绑定。 Co-authored-by: Cursor --- src/locale/bootstrap-en-US.ts | 2 + src/locale/bootstrap-zh-CN.ts | 2 + src/locale/marketing/en-US.ts | 22 +- src/locale/marketing/zh-CN.ts | 21 +- .../login/components/pwd-login/index.vue | 56 +- src/views/login/components/wechat-login.vue | 24 +- src/views/login/locale/en-US.ts | 11 +- src/views/login/locale/zh-CN.ts | 11 +- src/views/register/index.vue | 1201 ++++++++++++++--- src/views/register/locale/en-US.ts | 53 + src/views/register/locale/zh-CN.ts | 51 + 11 files changed, 1229 insertions(+), 225 deletions(-) create mode 100644 src/views/register/locale/en-US.ts create mode 100644 src/views/register/locale/zh-CN.ts diff --git a/src/locale/bootstrap-en-US.ts b/src/locale/bootstrap-en-US.ts index 09e3981..17b920c 100644 --- a/src/locale/bootstrap-en-US.ts +++ b/src/locale/bootstrap-en-US.ts @@ -1,4 +1,5 @@ import localeLogin from '@/views/login/locale/en-US'; +import localeRegister from '@/views/register/locale/en-US'; import localeWechat from '@/views/wechat/locale/en-US'; import localeH5Center from '@/views/h5/customer-center/locale/en-US'; import localeH5AdminCenter from '@/views/h5/admin-center/locale/en-US'; @@ -13,6 +14,7 @@ export default { 'app.language': 'Language', 'navbar.action.locale': 'Switch to English', ...localeLogin, + ...localeRegister, ...localeWechat, ...localeH5Track, ...localeH5Center, diff --git a/src/locale/bootstrap-zh-CN.ts b/src/locale/bootstrap-zh-CN.ts index bdfad40..c12ba39 100644 --- a/src/locale/bootstrap-zh-CN.ts +++ b/src/locale/bootstrap-zh-CN.ts @@ -1,4 +1,5 @@ import localeLogin from '@/views/login/locale/zh-CN'; +import localeRegister from '@/views/register/locale/zh-CN'; import localeWechat from '@/views/wechat/locale/zh-CN'; import localeH5Center from '@/views/h5/customer-center/locale/zh-CN'; import localeH5AdminCenter from '@/views/h5/admin-center/locale/zh-CN'; @@ -13,6 +14,7 @@ export default { 'app.language': '语言', 'navbar.action.locale': '切换为中文', ...localeLogin, + ...localeRegister, ...localeWechat, ...localeH5Track, ...localeH5Center, diff --git a/src/locale/marketing/en-US.ts b/src/locale/marketing/en-US.ts index e3248e4..da7c374 100644 --- a/src/locale/marketing/en-US.ts +++ b/src/locale/marketing/en-US.ts @@ -463,25 +463,41 @@ export default { 'marketing.register.title': 'Register', 'marketing.register.subtitle': 'Member pricing and welcome benefits', + 'marketing.register.brandHint': 'Welcome to IDE customer portal', + 'marketing.register.brandHint.web': 'Register with email & phone', + 'marketing.register.brandHint.wechat': 'Register with WeChat', + 'marketing.register.choose.web': 'Web register', + 'marketing.register.choose.webDesc': 'Fill in details and open your portal', + 'marketing.register.choose.wechat': 'WeChat register', + 'marketing.register.choose.wechatDesc': 'Scan to authorize and finish quickly', + 'marketing.register.backToChoose': '← Back to options', + 'marketing.register.referrerHint': 'Invited by {name} ({code})', 'marketing.register.invalidRef': 'Invalid invite code — you can still register', 'marketing.register.referrerLoading': 'Validating invite code…', 'marketing.register.referrerTimeout': 'Invite validation timed out. Check your network and refresh; you can still register.', - 'marketing.register.agentHint': 'Channel partner · {name} ({code})', + 'marketing.register.referrerBadge': 'Friend invite', + 'marketing.register.agentHint': '{name} · {code}', + 'marketing.register.agentBadge': 'Channel partner', + 'marketing.register.agentFallbackName': 'Partner', 'marketing.register.agentField': 'Agent code (optional)', 'marketing.register.agentPlaceholder': 'Enter agent code if you were referred by a partner', - 'marketing.register.agentLockedHint': - 'Locked by invite link; you will be bound to this agent after register', + 'marketing.register.agentLockedHint': 'You will be linked to the partner above after register', 'marketing.register.agentInvalid': 'Agent code is invalid or disabled', 'marketing.register.agentValidating': 'Validating agent code…', 'marketing.register.agentPriorityHint': 'Agent code filled — channel agent binding takes priority over friend invite', 'marketing.register.customerName': 'Name', + 'marketing.register.customerNamePlaceholder': 'Your name', 'marketing.register.phone': 'Phone', + 'marketing.register.phonePlaceholder': 'Mobile number', 'marketing.register.email': 'Email', + 'marketing.register.emailPlaceholder': 'Email address', 'marketing.register.password': 'Password', + 'marketing.register.passwordPlaceholder': '6+ letters and digits', 'marketing.register.confirmPassword': 'Confirm password', + 'marketing.register.confirmPasswordPlaceholder': 'Re-enter password', 'marketing.register.submit': 'Register', 'marketing.register.submitting': 'Registering…', 'marketing.register.success': 'Registered — please sign in', diff --git a/src/locale/marketing/zh-CN.ts b/src/locale/marketing/zh-CN.ts index 4282519..1736516 100644 --- a/src/locale/marketing/zh-CN.ts +++ b/src/locale/marketing/zh-CN.ts @@ -460,22 +460,39 @@ export default { 'marketing.register.title': '客户注册', 'marketing.register.subtitle': '注册即享会员价与新人福利', + 'marketing.register.brandHint': '欢迎注册 IDE 客户门户', + 'marketing.register.brandHint.web': '网页注册 IDE 客户账号', + 'marketing.register.brandHint.wechat': '微信扫码注册 IDE 客户账号', + 'marketing.register.choose.web': '网页注册', + 'marketing.register.choose.webDesc': '填写资料,立即开通客户门户', + 'marketing.register.choose.wechat': '微信注册', + 'marketing.register.choose.wechatDesc': '扫码授权,快捷完成注册', + 'marketing.register.backToChoose': '← 返回选择注册方式', + 'marketing.register.referrerHint': '您正通过 {name}({code})的邀请注册', 'marketing.register.invalidRef': '邀请码无效或已失效,您仍可正常注册', 'marketing.register.referrerLoading': '正在校验邀请码…', 'marketing.register.referrerTimeout': '邀请码校验超时,请检查网络后刷新;您仍可继续注册', - 'marketing.register.agentHint': '渠道推荐 · {name}({code})', + 'marketing.register.referrerBadge': '好友邀请', + 'marketing.register.agentHint': '{name} · {code}', + 'marketing.register.agentBadge': '渠道推荐', + 'marketing.register.agentFallbackName': '渠道代理', 'marketing.register.agentField': '代理编号(选填)', 'marketing.register.agentPlaceholder': '有渠道推荐人可填写其代理编号', - 'marketing.register.agentLockedHint': '已由专属链接锁定,注册后自动绑定该代理', + 'marketing.register.agentLockedHint': '注册完成后将关联上方推荐渠道', 'marketing.register.agentInvalid': '代理编号无效或已停用', 'marketing.register.agentValidating': '正在校验代理编号…', 'marketing.register.agentPriorityHint': '已填写代理编号,将优先绑定渠道代理(不走好友邀请)', 'marketing.register.customerName': '客户名称', + 'marketing.register.customerNamePlaceholder': '请输入客户名称', 'marketing.register.phone': '手机号', + 'marketing.register.phonePlaceholder': '请输入手机号', 'marketing.register.email': '邮箱', + 'marketing.register.emailPlaceholder': '请输入邮箱', 'marketing.register.password': '密码', + 'marketing.register.passwordPlaceholder': '6 位以上字母数字组合', 'marketing.register.confirmPassword': '确认密码', + 'marketing.register.confirmPasswordPlaceholder': '请再次输入密码', 'marketing.register.submit': '注册', 'marketing.register.submitting': '注册中…', 'marketing.register.success': '注册成功,请登录', diff --git a/src/views/login/components/pwd-login/index.vue b/src/views/login/components/pwd-login/index.vue index 3b8026d..3d5bdf1 100644 --- a/src/views/login/components/pwd-login/index.vue +++ b/src/views/login/components/pwd-login/index.vue @@ -64,7 +64,10 @@ -
+ import { ref, reactive, computed, nextTick, inject, type ShallowRef } from 'vue'; -import { useRouter } from 'vue-router'; +import { useRoute, useRouter } from 'vue-router'; import { useI18n } from 'vue-i18n'; import { Message } from '@arco-design/web-vue'; import { IconWechat } from '@arco-design/web-vue/es/icon'; @@ -123,9 +130,20 @@ const emit = defineEmits<{ prefetchWechat: []; }>(); +const route = useRoute(); const router = useRouter(); const rbacUserStore = useRbacUserStore(); +function goRegister() { + const query: Record = {}; + for (const key of ['agent', 'agentCode', 'ref', 'invite', 'advisor', 'redirect'] as const) { + const raw = route.query[key]; + const value = typeof raw === 'string' ? raw.trim() : ''; + if (value) query[key] = value; + } + void router.push({ path: '/register', query }); +} + const passwordInputRef = ref<{ focus?: () => void } | null>(null); const loading = ref(false); const showPassword = ref(false); @@ -601,12 +619,31 @@ async function handleSubmit() { } } -.wechat-login-entry { +.login-alt-entry { display: flex; - justify-content: center; + flex-direction: column; + align-items: center; + gap: 14px; margin-top: 18px; } +.login-alt-entry__divider { + display: flex; + align-items: center; + gap: 12px; + width: 100%; + font-size: 12px; + color: rgba(100, 116, 139, 0.75); + + &::before, + &::after { + content: ''; + flex: 1; + height: 1px; + background: rgba(148, 163, 184, 0.35); + } +} + .wechat-entry-btn { display: inline-flex; align-items: center; @@ -638,6 +675,17 @@ async function handleSubmit() { } } +.login-alt-entry__hint { + margin: 0; + font-size: 13px; + color: #86909c; + + :deep(.arco-link) { + color: var(--app-primary-color); + font-weight: 600; + } +} + .agreement-content { max-height: 55vh; overflow-y: auto; diff --git a/src/views/login/components/wechat-login.vue b/src/views/login/components/wechat-login.vue index 139d89c..c6c2a30 100644 --- a/src/views/login/components/wechat-login.vue +++ b/src/views/login/components/wechat-login.vue @@ -51,7 +51,7 @@
- {{ expired ? t('login.wechat.expiredTip') : t('login.wechat.tips') }} + {{ expired ? t('login.wechat.expiredTip') : tipsText }}