1 line
17 KiB
Plaintext
1 line
17 KiB
Plaintext
{"version":3,"sources":["pages/user/register.uvue","pages/user/login.uvue","uni_modules/ak-req/ak-req.uts"],"sourcesContent":["<template>\r\n\t<view class=\"register-wrapper\">\r\n\t\t<!-- Header Logo -->\r\n\t\t<view class=\"header\">\r\n\t\t\t<image :src=\"logoUrl\" mode=\"aspectFit\" class=\"logo\" />\r\n\t\t</view>\r\n\r\n\t\t<!-- 注册表单区域 -->\r\n\t\t<view class=\"register-box\">\r\n\t\t\t<view class=\"title\">注册账号</view>\r\n\r\n\t\t\t<!-- 注册表单 -->\r\n\t\t\t<view class=\"form-content\">\r\n\t\t\t\t<!-- 邮箱 -->\r\n\t\t\t\t<view class=\"input-group\">\r\n\t\t\t\t\t<view class=\"input-wrapper\">\r\n\t\t\t\t\t\t<image src=\"/static/user/phone_1.png\" class=\"input-icon\" />\r\n\t\t\t\t\t\t<input \r\n\t\t\t\t\t\t\ttype=\"text\" \r\n\t\t\t\t\t\t\tplaceholder=\"输入邮箱\" \r\n\t\t\t\t\t\t\tv-model=\"email\"\r\n\t\t\t\t\t\t\tclass=\"input-field\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t</view>\r\n\t\t\t\t</view>\r\n\r\n\t\t\t\t<!-- 密码 -->\r\n\t\t\t\t<view class=\"input-group\">\r\n\t\t\t\t\t<view class=\"input-wrapper\">\r\n\t\t\t\t\t\t<image src=\"/static/user/code_1.png\" class=\"input-icon\" />\r\n\t\t\t\t\t\t<input \r\n\t\t\t\t\t\t\ttype=\"password\" \r\n\t\t\t\t\t\t\tplaceholder=\"填写密码\" \r\n\t\t\t\t\t\t\tv-model=\"password\"\r\n\t\t\t\t\t\t\tclass=\"input-field\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t</view>\r\n\t\t\t\t</view>\r\n\r\n\t\t\t\t<!-- 确认密码 -->\r\n\t\t\t\t<view class=\"input-group\">\r\n\t\t\t\t\t<view class=\"input-wrapper\">\r\n\t\t\t\t\t\t<image src=\"/static/user/code_1.png\" class=\"input-icon\" />\r\n\t\t\t\t\t\t<input \r\n\t\t\t\t\t\t\ttype=\"password\" \r\n\t\t\t\t\t\t\tplaceholder=\"确认密码\" \r\n\t\t\t\t\t\t\tv-model=\"confirmPassword\"\r\n\t\t\t\t\t\t\tclass=\"input-field\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t</view>\r\n\t\t\t\t</view>\r\n\t\t\t</view>\r\n\r\n\t\t\t<!-- 注册按钮 -->\r\n\t\t\t<view class=\"register-btn\" @click=\"handleRegister\" :class=\"isLoading ? 'disabled' : ''\">\r\n\t\t\t\t注册\r\n\t\t\t</view>\r\n\r\n\t\t\t<!-- 已有账号 -->\r\n\t\t\t<view class=\"tips\">\r\n\t\t\t\t<text class=\"tips-text\">已有账号?</text>\r\n\t\t\t\t<text class=\"tips-link\" @click=\"navigateToLogin\">立即登录</text>\r\n\t\t\t</view>\r\n\r\n\t\t\t<!-- 协议勾选 -->\r\n\t\t\t<view class=\"protocol\">\r\n\t\t\t\t<checkbox-group @change=\"handleProtocolChange\">\r\n\t\t\t\t\t<checkbox \r\n\t\t\t\t\t\tclass=\"protocol-checkbox\"\r\n\t\t\t\t\t\t:checked=\"protocol\" \r\n\t\t\t\t\t\t:class=\"inAnimation ? 'trembling' : ''\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<text class=\"protocol-text\">\r\n\t\t\t\t\t\t已阅读并同意\r\n\t\t\t\t\t\t<text class=\"main-color\" @click=\"navigateToTerms(3)\">《用户协议》</text>\r\n\t\t\t\t\t\t与\r\n\t\t\t\t\t\t<text class=\"main-color\" @click=\"navigateToTerms(4)\">《隐私协议》</text>\r\n\t\t\t\t\t</text>\r\n\t\t\t\t</checkbox-group>\r\n\t\t\t</view>\r\n\t\t</view>\r\n\r\n\t\t<!-- 底部版权信息 -->\r\n\t\t<view class=\"footer\">\r\n\t\t\t<text class=\"footer-text\">Copyright ©2024 Mall. All Rights Reserved</text>\r\n\t\t</view>\r\n\t</view>\r\n</template>\r\n\r\n<script setup lang=\"uts\">\r\n\timport { ref } from 'vue'\r\n\timport supa from '@/components/supadb/aksupainstance.uts'\r\n\timport { ensureUserProfile } from '@/utils/sapi.uts'\r\n\r\n\tconst email = ref<string>('')\r\n\tconst password = ref<string>('')\r\n\tconst confirmPassword = ref<string>('')\r\n\tconst protocol = ref<boolean>(false)\r\n\tconst inAnimation = ref<boolean>(false)\r\n\tconst isLoading = ref<boolean>(false)\r\n\tconst logoUrl = ref<string>('/static/logo.png')\r\n\r\n\tconst handleProtocolChange = (e: UniCheckboxGroupChangeEvent): void => {\r\n\t\tprotocol.value = protocol.value == false\r\n\t}\r\n\r\n\tconst validateEmail = (): boolean => {\r\n\t\tif (email.value.trim() == '') {\r\n\t\t\tuni.showToast({\r\n\t\t\t\ttitle: '请填写邮箱',\r\n\t\t\t\ticon: 'none'\r\n\t\t\t})\r\n\t\t\treturn false\r\n\t\t}\r\n\t\tconst atIndex = email.value.indexOf('@')\r\n\t\tconst dotIndex = email.value.lastIndexOf('.')\r\n\t\tif (atIndex == -1 || dotIndex == -1 || atIndex > dotIndex) {\r\n\t\t\tuni.showToast({\r\n\t\t\t\ttitle: '请输入正确的邮箱',\r\n\t\t\t\ticon: 'none'\r\n\t\t\t})\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn true\r\n\t}\r\n\r\n\tconst validatePassword = (): boolean => {\r\n\t\tif (password.value.trim() == '') {\r\n\t\t\tuni.showToast({\r\n\t\t\t\ttitle: '请填写密码',\r\n\t\t\t\ticon: 'none'\r\n\t\t\t})\r\n\t\t\treturn false\r\n\t\t}\r\n\t\tif (password.value.length < 6) {\r\n\t\t\tuni.showToast({\r\n\t\t\t\ttitle: '密码长度不能少于6位',\r\n\t\t\t\ticon: 'none'\r\n\t\t\t})\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn true\r\n\t}\r\n\r\n\tconst validateConfirmPassword = (): boolean => {\r\n\t\tif (confirmPassword.value.trim() == '') {\r\n\t\t\tuni.showToast({\r\n\t\t\t\ttitle: '请确认密码',\r\n\t\t\t\ticon: 'none'\r\n\t\t\t})\r\n\t\t\treturn false\r\n\t\t}\r\n\t\tif (confirmPassword.value != password.value) {\r\n\t\t\tuni.showToast({\r\n\t\t\t\ttitle: '两次输入的密码不一致',\r\n\t\t\t\ticon: 'none'\r\n\t\t\t})\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn true\r\n\t}\r\n\r\n\tconst handleRegister = async (): Promise<void> => {\r\n\t\tif (protocol.value == false) {\r\n\t\t\tinAnimation.value = true\r\n\t\t\tuni.showToast({\r\n\t\t\t\ttitle: '请先阅读并同意协议',\r\n\t\t\t\ticon: 'none'\r\n\t\t\t})\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (validateEmail() == false) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tif (validatePassword() == false) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tif (validateConfirmPassword() == false) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tisLoading.value = true\r\n\r\n\t\ttry {\r\n\t\t\tconst result = await supa.signUp(email.value.trim(), password.value)\r\n\t\t\t\r\n\t\t\tconsole.log('注册返回结果:', result)\r\n\t\t\t\r\n\t\t\tconst errorCode = result?.getString('error_code') ?? ''\r\n\t\t\tconst errorMsg = result?.getString('msg') ?? ''\r\n\t\t\tconst code = result?.getNumber('code') ?? 0\r\n\t\t\t\r\n\t\t\tconsole.log('错误代码:', errorCode, '错误信息:', errorMsg, '状态码:', code)\r\n\t\t\t\r\n\t\t\tif (code == 500 && (errorCode == 'unexpected_failure' || errorMsg.includes('confirmation email'))) {\r\n\t\t\t\tconsole.warn('邮件发送失败,但用户可能已创建')\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tlet user: UTSJSONObject | null = null\r\n\t\t\tlet hasSession = false\r\n\t\t\t\r\n\t\t\tif (result != null) {\r\n\t\t\t\tconst userField = result.getJSON('user')\r\n\t\t\t\tif (userField != null) {\r\n\t\t\t\t\tuser = userField\r\n\t\t\t\t\tconsole.log('找到 user 字段:', user.getString('id'), user.getString('email'))\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconst id = result.getString('id')\r\n\t\t\t\t\tif (id != null && id != '') {\r\n\t\t\t\t\t\tuser = result\r\n\t\t\t\t\t\tconsole.log('result 本身就是 user 对象:', id)\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconsole.warn('未找到 user 信息')\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tconst sessionField = result.getJSON('session')\r\n\t\t\t\tif (sessionField != null) {\r\n\t\t\t\t\thasSession = true\r\n\t\t\t\t\tconsole.log('找到 session,已自动登录')\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.log('未找到 session,可能需要邮箱验证')\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (user == null && code != 0 && code != 200) {\r\n\t\t\t\tif (code == 500 && errorMsg.includes('confirmation email')) {\r\n\t\t\t\t\tthrow new Error('注册失败:邮件服务配置错误')\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthrow new Error(errorMsg != '' ? errorMsg : '注册失败,请重试')\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (user != null) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst profileResult = await ensureUserProfile(user)\r\n\t\t\t\t\tif (profileResult != null) {\r\n\t\t\t\t\t\tconsole.log('用户资料创建成功:', profileResult.id)\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconsole.warn('用户资料创建失败,但注册已成功')\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (profileError) {\r\n\t\t\t\t\tconsole.error('创建用户资料异常:', profileError)\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconsole.warn('注册成功但未获取到用户信息')\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (hasSession == false && user != null) {\r\n\t\t\t\tconsole.log('需要邮箱验证')\r\n\t\t\t}\r\n\r\n\t\t\tuni.showToast({\r\n\t\t\t\ttitle: '注册成功',\r\n\t\t\t\ticon: 'success'\r\n\t\t\t})\r\n\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tuni.redirectTo({\r\n\t\t\t\t\turl: '/pages/user/login'\r\n\t\t\t\t})\r\n\t\t\t}, 1500)\r\n\t\t} catch (err) {\r\n\t\t\tconsole.error('注册错误:', err)\r\n\t\t\t\r\n\t\t\tlet errorMessage = '注册失败,请重试'\r\n\t\t\tif (err != null) {\r\n\t\t\t\tconst error = err as Error\r\n\t\t\t\tif (error.message != null && error.message.trim() != '') {\r\n\t\t\t\t\terrorMessage = error.message\r\n\t\t\t\t\tif (error.message.includes('confirmation email') || error.message.includes('邮件')) {\r\n\t\t\t\t\t\terrorMessage = '注册可能成功,但邮件发送失败,请稍后尝试登录'\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tuni.showToast({\r\n\t\t\t\ttitle: errorMessage,\r\n\t\t\t\ticon: 'none',\r\n\t\t\t\tduration: 3000\r\n\t\t\t})\r\n\t\t} finally {\r\n\t\t\tisLoading.value = false\r\n\t\t}\r\n\t}\r\n\r\n\tconst navigateToLogin = (): void => {\r\n\t\tuni.navigateTo({\r\n\t\t\turl: '/pages/user/login'\r\n\t\t})\r\n\t}\r\n\r\n\tconst navigateToTerms = (type: number): void => {\r\n\t\tuni.navigateTo({\r\n\t\t\turl: `/pages/user/terms?type=${type}`\r\n\t\t})\r\n\t}\r\n</script>\r\n\r\n<style>\r\n.register-wrapper {\r\n\tflex: 1;\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tbackground: #F5F5F5;\r\n}\r\n\r\n.header {\r\n\tpadding: 40rpx 0 0 60rpx;\r\n\tbackground: #F5F5F5;\r\n}\r\n\r\n.logo {\r\n\twidth: 200rpx;\r\n\theight: 80rpx;\r\n}\r\n\r\n.register-box {\r\n\tflex: 1;\r\n\tbackground: #FFFFFF;\r\n\tmargin: 60rpx 40rpx 0;\r\n\tborder-radius: 8rpx;\r\n\tpadding: 60rpx 50rpx 40rpx;\r\n\tbox-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.08);\r\n}\r\n\r\n.title {\r\n\tfont-size: 40rpx;\r\n\tfont-weight: 700;\r\n\tcolor: #333333;\r\n\ttext-align: center;\r\n\tmargin-bottom: 50rpx;\r\n}\r\n\r\n.form-content {\r\n\tmargin-bottom: 40rpx;\r\n}\r\n\r\n.input-group {\r\n\tmargin-bottom: 30rpx;\r\n}\r\n\r\n.input-wrapper {\r\n\tposition: relative;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tpadding: 0 20rpx;\r\n\theight: 88rpx;\r\n\tborder: 1rpx solid #E0E0E0;\r\n\tborder-radius: 4rpx;\r\n\tbackground: #FFFFFF;\r\n}\r\n\r\n.input-icon {\r\n\twidth: 32rpx;\r\n\theight: 32rpx;\r\n\tflex-shrink: 0;\r\n\tmargin-right: 20rpx;\r\n}\r\n\r\n.input-field {\r\n\tflex: 1;\r\n\tfont-size: 28rpx;\r\n\theight: 100%;\r\n\tcolor: #333333;\r\n}\r\n\r\n.register-btn {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n\twidth: 100%;\r\n\theight: 88rpx;\r\n\tmargin-top: 50rpx;\r\n\tbackground: linear-gradient(135deg, #FF4D4F 0%, #FF7A45 100%);\r\n\tborder-radius: 4rpx;\r\n\tcolor: #FFFFFF;\r\n\tfont-size: 32rpx;\r\n\tfont-weight: 700;\r\n\tbox-shadow: 0 4rpx 12rpx rgba(255, 77, 79, 0.3);\r\n}\r\n\r\n.register-btn.disabled {\r\n\tbackground: #D9D9D9;\r\n\tbox-shadow: none;\r\n\topacity: 0.6;\r\n}\r\n\r\n.tips {\r\n\tmargin-top: 30rpx;\r\n\ttext-align: center;\r\n}\r\n\r\n.tips-text {\r\n\tfont-size: 28rpx;\r\n\tcolor: #666666;\r\n}\r\n\r\n.tips-link {\r\n\tfont-size: 28rpx;\r\n\tcolor: #FF4D4F;\r\n\tmargin-left: 8rpx;\r\n}\r\n\r\n.protocol {\r\n\tmargin-top: 40rpx;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n}\r\n\r\n.protocol-checkbox {\r\n\tmargin-right: 10rpx;\r\n}\r\n\r\n.protocol-text {\r\n\tfont-size: 24rpx;\r\n\tcolor: #999999;\r\n}\r\n\r\n.main-color {\r\n\tcolor: #FF4D4F;\r\n}\r\n\r\n.footer {\r\n\tpadding: 40rpx 0;\r\n\ttext-align: center;\r\n\tbackground: #F5F5F5;\r\n}\r\n\r\n.footer-text {\r\n\tfont-size: 22rpx;\r\n\tcolor: #999999;\r\n}\r\n</style>\r\n",null,null],"names":[],"mappings":"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"} |