diff --git a/api/go/handler/user_handler.go b/api/go/handler/user_handler.go index 1bb9e9ef..76199413 100644 --- a/api/go/handler/user_handler.go +++ b/api/go/handler/user_handler.go @@ -89,6 +89,7 @@ func (h *UserHandler) Register(c *gin.Context) { Avatar: "/images/avatar/user.png", Salt: salt, Status: true, + Mobile: data.Mobile, ChatRoles: utils.JsonEncode(roleKeys), ChatConfig: utils.JsonEncode(types.ChatConfig{ Temperature: h.App.ChatConfig.Temperature, diff --git a/web/src/components/BindMobile.vue b/web/src/components/BindMobile.vue new file mode 100644 index 00000000..5ad077a6 --- /dev/null +++ b/web/src/components/BindMobile.vue @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + 提交绑定 + + + + + + + + + \ No newline at end of file diff --git a/web/src/components/SendMsg.vue b/web/src/components/SendMsg.vue new file mode 100644 index 00000000..20e2d7ed --- /dev/null +++ b/web/src/components/SendMsg.vue @@ -0,0 +1,59 @@ + + {{ + btnText + }} + + + + + + \ No newline at end of file diff --git a/web/src/utils/validate.js b/web/src/utils/validate.js new file mode 100644 index 00000000..c87f7cdf --- /dev/null +++ b/web/src/utils/validate.js @@ -0,0 +1,11 @@ +// 正则校验工具函数 + +export function validateEmail(email) { + const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; + return regex.test(email); +} + +export function validateMobile(mobile) { + const regex = /^1[345789]\d{9}$/; + return regex.test(mobile); +} \ No newline at end of file diff --git a/web/src/views/ChatPlus.vue b/web/src/views/ChatPlus.vue index 4a34c64d..efb806e7 100644 --- a/web/src/views/ChatPlus.vue +++ b/web/src/views/ChatPlus.vue @@ -187,6 +187,8 @@ @update-user="updateUser"/> + + @@ -219,6 +221,7 @@ import Clipboard from "clipboard"; import ConfigDialog from "@/components/ConfigDialog.vue"; import PasswordDialog from "@/components/PasswordDialog.vue"; import {checkSession} from "@/action/session"; +import BindMobile from "@/components/BindMobile.vue"; const title = ref('ChatGPT-智能助手'); const logo = 'images/logo.png'; diff --git a/web/src/views/Register.vue b/web/src/views/Register.vue index 4c05316e..1dc88235 100644 --- a/web/src/views/Register.vue +++ b/web/src/views/Register.vue @@ -76,10 +76,7 @@ - {{ - btnText - }} - + @@ -107,14 +104,14 @@ import {ref} from "vue"; import {Checked, Iphone, Lock, UserFilled} from "@element-plus/icons-vue"; -import {httpGet, httpPost} from "@/utils/http"; +import {httpPost} from "@/utils/http"; import {ElMessage} from "element-plus"; import {useRouter} from "vue-router"; import FooterBar from "@/components/FooterBar.vue"; +import SendMsg from "@/components/SendMsg.vue"; const router = useRouter(); const title = ref('ChatGPT-PLUS 用户注册'); -const btnText = ref('发送验证码') const formData = ref({ username: '', password: '', @@ -142,50 +139,6 @@ const register = function () { }) } -// const validateEmail = function (email) { -// const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; -// return regex.test(email); -// } -const validateMobile = function (mobile) { - const regex = /^1[345789]\d{9}$/; - return regex.test(mobile); -} - -const canSend = ref(true) -const sendMsg = () => { - if (!canSend.value) { - return - } - - if (!validateMobile(formData.value.mobile)) { - return ElMessage.error("请输入合法的手机号") - } - canSend.value = false - httpGet('/api/verify/token').then(res => { - httpPost('/api/verify/sms', {token: res.data, mobile: formData.value.mobile}).then(() => { - ElMessage.success('短信发送成功') - let time = 120 - btnText.value = time - const handler = setInterval(() => { - time = time - 1 - if (time <= 0) { - clearInterval(handler) - btnText.value = '重新发送' - canSend.value = true - } else { - btnText.value = time - } - }, 1000) - }).catch(e => { - canSend.value = true - ElMessage.error('短信发送失败:' + e.message) - }) - }).catch(e => { - console.log('failed to fetch token: ' + e.message) - }) - -} - \ No newline at end of file