diff --git a/src/pages/use/login/index.tsx b/src/pages/use/login/index.tsx index e595ff7..006cab7 100644 --- a/src/pages/use/login/index.tsx +++ b/src/pages/use/login/index.tsx @@ -1,22 +1,38 @@ import { Layout, Tabs, Input, Button, Typography, Row, Col, Form } from "antd"; -import { QrcodeOutlined, UserOutlined, LockOutlined } from "@ant-design/icons"; -import SelectLang from "@/components/select-lang"; +import { UserOutlined, LockOutlined } from "@ant-design/icons"; import { createFileRoute, useNavigate } from "@tanstack/react-router"; -import { useAtom, useAtomValue } from "jotai"; -import { useTranslation } from "@/i18n.ts"; -import { - emailCodeAtom, - emailLoginAtom, - telegramCodeAtom, - telegramLoginAtom, - upLoginAtom, -} from "@/store/system/user.ts"; +import { useAtomValue } from "jotai"; +import { emailLoginAtom, telegramLoginAtom, upLoginAtom } from "@/store/system/user.ts"; import React, { memo, useEffect, useLayoutEffect, useState } from "react"; import systemServ from "@/service/system.ts"; +import { t } from "i18next"; const { Title, Text, Link } = Typography; const { TabPane } = Tabs; +const i18nPrefix = "login"; + const Login = memo(() => { + const languageSet = { + 邮箱密码登录: t(`${i18nPrefix}.emailPasswordLogin`, "邮箱密码登录"), + 向量检索服务免费试用: t(`${i18nPrefix}.vectorRetrievalServiceFreeTrial`, "向量检索服务免费试用"), + 免费试用向量检索服务玩转大模型生成式检索: t( + `${i18nPrefix}.freeTrialVectorRetrievalService`, + "免费试用向量检索服务,玩转大模型生成式检索", + ), + 查看详情: t(`${i18nPrefix}.viewDetails`, "查看详情 >"), + 请输入邮箱: t(`${i18nPrefix}.pleaseEnterEmail`, "请输入邮箱"), + 请输入登录密码: t(`${i18nPrefix}.pleaseEnterPassword`, "请输入登录密码"), + 登录: t(`${i18nPrefix}.login`, "登录"), + 邮箱验证登录: t(`${i18nPrefix}.emailVerificationLogin`, "邮箱验证登录"), + 获得验证码: t(`${i18nPrefix}.getVerificationCode`, "获得验证码"), + 请输入验证码: t(`${i18nPrefix}.pleaseEnterVerificationCode`, "请输入验证码"), + 飞机验证登录: t(`${i18nPrefix}.telegramVerificationLogin`, "飞机验证登录"), + 获得飞机验证码: t(`${i18nPrefix}.getTelegramVerificationCode`, "获得飞机验证码"), + 请输入飞机验证码: t(`${i18nPrefix}.pleaseEnterTelegramVerificationCode`, "请输入飞机验证码"), + 注册: t(`${i18nPrefix}.register`, "注册"), + 忘记密码: t(`${i18nPrefix}.forgotPassword`, "忘记密码"), + }; + const navigate = useNavigate(); const [upform] = Form.useForm(); const [emailform] = Form.useForm(); @@ -100,10 +116,10 @@ const Login = memo(() => { - 向量检索服务免费试用 - 免费试用向量检索服务,玩转大模型生成式检索 + {languageSet.向量检索服务免费试用} + {languageSet.免费试用向量检索服务玩转大模型生成式检索}
- 查看详情 > + {languageSet.查看详情} { }} > - +
- - } /> + + } /> - + } autoComplete="off" /> - {/**/} - {/* } />*/} - {/**/}
- +
- + } addonAfter={ } /> - + } autoComplete="off" />
- +
- + } addonAfter={ } /> - + } autoComplete="off" />
@@ -220,11 +233,11 @@ const Login = memo(() => { }} onClick={() => navigate({ to: "/register" })} > - 注册 + {languageSet.注册} - navigate({ to: "/pwdRetrieve" })}>忘记密码 + navigate({ to: "/pwdRetrieve" })}>{languageSet.忘记密码}
diff --git a/src/pages/use/password/retrieve.tsx b/src/pages/use/password/retrieve.tsx index 31a4baa..aa424f4 100644 --- a/src/pages/use/password/retrieve.tsx +++ b/src/pages/use/password/retrieve.tsx @@ -1,13 +1,32 @@ -import {Layout, Input, Button, Typography, Row, Col, Form, message, Modal} from "antd"; +import { Layout, Input, Button, Typography, Row, Col, Form, message, Modal } from "antd"; import { LockOutlined, MailOutlined, SecurityScanOutlined } from "@ant-design/icons"; import { createFileRoute, useNavigate } from "@tanstack/react-router"; -import { useAtomValue } from "jotai"; import React, { memo, useEffect, useState } from "react"; -import { emailCodeAtom } from "@/store/system/user.ts"; import { passwordRules } from "@/pages/use/useTools.tsx"; -import { useAtom } from "jotai/index"; import systemServ from "@/service/system.ts"; -import { setToken } from "@/store/system.ts"; +import { t } from "i18next"; + +const languageSet = { + 向量检索服务免费试用: t("pwdRetrieve.vectorRetrievalServiceFreeTrial", "向量检索服务免费试用"), + 免费试用向量检索服务玩转大模型生成式检索: t( + "pwdRetrieve.freeTrialVectorRetrievalService", + "免费试用向量检索服务,玩转大模型生成式检索", + ), + 查看详情: t("pwdRetrieve.viewDetails", "查看详情 >"), + 请输入邮箱: t("pwdRetrieve.pleaseEnterEmail", "请输入邮箱"), + 获得验证码: t("pwdRetrieve.getVerificationCode", "获得验证码"), + 秒后重试: t("pwdRetrieve.retryAfterSeconds", "秒后重试"), + 请输入验证码: t("pwdRetrieve.pleaseEnterVerificationCode", "请输入验证码"), + 请输入新密码: t("pwdRetrieve.pleaseEnterNewPassword", "请输入新密码"), + 请确认密码: t("pwdRetrieve.confirmPassword", "请确认密码"), + 两次输入的密码不一致: t("pwdRetrieve.passwordsDoNotMatch", "两次输入的密码不一致"), + 找回密码: t("pwdRetrieve.retrievePassword", "找回密码"), + 返回登录: t("pwdRetrieve.backToLogin", "返回登录"), + 修改成功: t("pwdRetrieve.changeSuccess", "修改成功"), + 确认: t("pwdRetrieve.confirm", "确认"), + 密码修改成功返回登录: t("pwdRetrieve.passwordChangeSuccess", "密码修改成功,返回登录。"), +}; + const { Title, Text, Link } = Typography; const PwdRetrieve = memo(() => { @@ -34,12 +53,9 @@ const PwdRetrieve = memo(() => { const [countdown, setCountdown] = useState(0); const [isButtonDisabled, setIsButtonDisabled] = useState(false); - - - const [gotoLoginModalVisible, SetGotoLoginModalVisible] = useState(false); - const showGotoLoginModal= () => { + const showGotoLoginModal = () => { SetGotoLoginModalVisible(true); }; @@ -48,12 +64,6 @@ const PwdRetrieve = memo(() => { navigate({ to: "/login" }); }; - // const gotoLoginModalHandleCancel = () => { - // SetGotoLoginModalVisible(false); - // }; - // - - useEffect(() => { if ((emailCodeData as any)?.code === 0) { setCountdown(10); @@ -63,7 +73,7 @@ const PwdRetrieve = memo(() => { useEffect(() => { if ((pwdRetrieveData as any)?.code === 0) { - message.success("密码找回成功"); + message.success(languageSet.密码修改成功返回登录); showGotoLoginModal(); } }, [pwdRetrieveData, navigate]); @@ -97,10 +107,10 @@ const PwdRetrieve = memo(() => { - 向量检索服务免费试用 - 免费试用向量检索服务,玩转大模型生成式检索 + {languageSet.向量检索服务免费试用} + {languageSet.免费试用向量检索服务玩转大模型生成式检索}
- 查看详情 > + {languageSet.查看详情} { }} >
- + } addonAfter={ } /> - - } autoComplete="off" /> + + } + autoComplete="off" + /> } autoComplete="off" /> @@ -141,41 +156,46 @@ const PwdRetrieve = memo(() => { name="confirmPassword" dependencies={["password"]} rules={[ - { required: true, message: "请确认密码" }, + { required: true, message: languageSet.请确认密码 }, ({ getFieldValue }) => ({ validator(_, value) { if (!value || getFieldValue("password") === value) { return Promise.resolve(); } - return Promise.reject(new Error("两次输入的密码不一致")); + return Promise.reject(new Error(languageSet.两次输入的密码不一致)); }, }), ]} > - } autoComplete="off" /> + } + autoComplete="off" + /> - navigate({ to: "/login" })}>返回登录 + navigate({ to: "/login" })}>{languageSet.返回登录}
- 确认 - , - ]} + title={languageSet.修改成功} + visible={gotoLoginModalVisible} + onOk={gotoLoginModalHandleOk} + footer={[ + , + ]} > -

密码修改成功,返回登录。

+

{languageSet.密码修改成功返回登录}

); diff --git a/src/pages/use/register/index.tsx b/src/pages/use/register/index.tsx index cafd793..45690f7 100644 --- a/src/pages/use/register/index.tsx +++ b/src/pages/use/register/index.tsx @@ -1,11 +1,32 @@ import { Layout, Input, Button, Typography, Row, Col, Form } from "antd"; -import {LockOutlined, MailOutlined, SecurityScanOutlined, UserOutlined} from "@ant-design/icons"; +import { LockOutlined, MailOutlined, SecurityScanOutlined } from "@ant-design/icons"; import { createFileRoute, useNavigate } from "@tanstack/react-router"; import { useAtomValue } from "jotai"; import React, { memo, useEffect, useState } from "react"; import { emailRegisterAtom } from "@/store/system/user.ts"; import { passwordRules } from "@/pages/use/useTools"; import systemServ from "@/service/system.ts"; +import { t } from "i18next"; + +const languageSet = { + 向量检索服务免费试用: t("register.vectorRetrievalServiceFreeTrial", "向量检索服务免费试用"), + 免费试用向量检索服务玩转大模型生成式检索: t( + "register.freeTrialVectorRetrievalService", + "免费试用向量检索服务,玩转大模型生成式检索", + ), + 查看详情: t("register.viewDetails", "查看详情 >"), + 请输入邮箱: t("register.pleaseEnterEmail", "请输入邮箱"), + 获得验证码: t("register.getVerificationCode", "获得验证码"), + 秒后重试: t("register.retryAfterSeconds", "秒后重试"), + 请输入验证码: t("register.pleaseEnterVerificationCode", "请输入验证码"), + 请输入密码: t("register.pleaseEnterPassword", "请输入密码"), + 请确认密码: t("register.confirmPassword", "请确认密码"), + 两次输入的密码不一致: t("register.passwordsDoNotMatch", "两次输入的密码不一致"), + 注册: t("register.register", "注册"), + 登录: t("register.login", "登录"), + 返回登录: t("register.backToLogin", "返回登录"), +}; + const { Title, Text, Link } = Typography; const Register = memo(() => { @@ -51,111 +72,126 @@ const Register = memo(() => { }, []); return ( - - - - - - 向量检索服务免费试用 - 免费试用向量检索服务,玩转大模型生成式检索 -
- 查看详情 > - - -
- - } - addonAfter={ - - } - /> - - - } autoComplete="off" /> - - - } autoComplete="off" /> - - ({ - validator(_, value) { - if (!value || getFieldValue("password") === value) { - return Promise.resolve(); - } - return Promise.reject(new Error("两次输入的密码不一致")); - }, - }), - ]} - > - } autoComplete="off" /> - - -
-
+ } + /> + + + } + autoComplete="off" + /> + + + } + autoComplete="off" + /> + + ({ + validator(_, value) { + if (!value || getFieldValue("password") === value) { + return Promise.resolve(); + } + return Promise.reject(new Error(languageSet.两次输入的密码不一致)); + }, + }), + ]} + > + } + autoComplete="off" + /> + + + +
navigate({ to: "/login" })} + style={{ + cursor: "pointer", + position: "absolute", + top: "-70px", + right: "0px", + color: "#fff", + fontSize: "16px", + transform: "rotate(0deg)", + textAlign: "center", + width: "60px", + display: "block", + }} + onClick={() => navigate({ to: "/login" })} > - 登录 + {languageSet.登录} -
- - navigate({ to: "/login" })}>返回登录 - - - - - - +
+ + navigate({ to: "/login" })}>{languageSet.返回登录} + + +
+ +
+
); });