Files
medical-mall/unpackage/cache/.app-android/sourcemap/pages/user/register.kt.map

1 line
17 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"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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"}