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

1 line
11 KiB
Plaintext

{"version":3,"sources":["pages/user/forgot-password.uvue","pages/user/login.uvue","uni_modules/ak-req/ak-req.uts"],"sourcesContent":["<template>\r\n <scroll-view class=\"forgot-password-container\" scroll-y=\"true\" show-scrollbar=\"false\">\r\n <view class=\"language-switch\">\r\n <button class=\"language-btn\" @click=\"toggleLanguage\">\r\n {{ currentLocale === 'zh-CN' ? 'EN' : '中' }}\r\n </button>\r\n </view>\r\n \r\n <view class=\"content-wrapper\">\r\n <view class=\"logo-section\">\r\n <text class=\"app-title\">Akmon</text>\r\n <text class=\"page-title\">忘记密码</text>\r\n <text class=\"page-subtitle\">输入您的邮箱地址,我们将发送重置链接</text>\r\n </view>\r\n \r\n <view class=\"form-container\">\r\n <view v-if=\"resetEmailSent == false\">\r\n <form @submit=\"onSubmit\">\r\n <view class=\"input-group\" :class=\"emailError != '' ? 'input-error' : ''\">\r\n <text class=\"input-label\">邮箱</text>\r\n <input \r\n class=\"input-field\" \r\n name=\"email\"\r\n type=\"text\" \r\n v-model=\"email\" \r\n placeholder=\"请输入邮箱地址\"\r\n @blur=\"validateEmail\"\r\n />\r\n <text v-if=\"emailError != ''\" class=\"error-text\">{{ emailError }}</text>\r\n </view>\r\n \r\n <button form-type=\"submit\" class=\"submit-button\" :disabled=\"isLoading\" :loading=\"isLoading\">\r\n 发送重置链接\r\n </button>\r\n \r\n <text v-if=\"generalError != ''\" class=\"general-error\">{{ generalError }}</text>\r\n </form>\r\n \r\n <view class=\"login-option\">\r\n <text class=\"login-text\">想起密码了?</text>\r\n <text class=\"login-link\" @click=\"navigateToLogin\">返回登录</text>\r\n </view>\r\n </view>\r\n \r\n <view v-else class=\"success-container\">\r\n <view class=\"success-icon\">✓</view>\r\n <text class=\"success-title\">邮件已发送</text>\r\n <text class=\"success-message\">请检查您的邮箱,按照邮件中的说明重置密码</text>\r\n <button class=\"back-button\" @click=\"navigateToLogin\">\r\n 返回登录\r\n </button>\r\n </view>\r\n </view>\r\n </view>\r\n </scroll-view>\r\n</template>\r\n\r\n<script setup lang=\"uts\">\r\nimport { ref } from 'vue'\r\n\r\nconst email = ref<string>('')\r\nconst emailError = ref<string>('')\r\nconst generalError = ref<string>('')\r\nconst isLoading = ref<boolean>(false)\r\nconst resetEmailSent = ref<boolean>(false)\r\nconst currentLocale = ref<string>('zh-CN')\r\n\r\nconst toggleLanguage = (): void => {\r\n if (currentLocale.value === 'zh-CN') {\r\n currentLocale.value = 'en-US'\r\n } else {\r\n currentLocale.value = 'zh-CN'\r\n }\r\n uni.showToast({\r\n title: '语言已切换',\r\n icon: 'success'\r\n })\r\n}\r\n\r\nconst validateEmail = (): boolean => {\r\n if (email.value == null || email.value == '') {\r\n emailError.value = '请输入邮箱地址'\r\n return false\r\n }\r\n \r\n const atIndex = email.value.indexOf('@')\r\n const dotIndex = email.value.lastIndexOf('.')\r\n if (atIndex == -1 || dotIndex == -1 || atIndex > dotIndex) {\r\n emailError.value = '请输入有效的邮箱地址'\r\n return false\r\n }\r\n \r\n emailError.value = ''\r\n return true\r\n}\r\n\r\nconst handleResetRequest = async (): Promise<void> => {\r\n generalError.value = ''\r\n if (validateEmail() == false) {\r\n return\r\n }\r\n \r\n isLoading.value = true\r\n try {\r\n resetEmailSent.value = true\r\n } catch (err) {\r\n console.error(\"Password reset error:\", err)\r\n generalError.value = '发送失败,请稍后重试'\r\n } finally {\r\n isLoading.value = false\r\n }\r\n}\r\n\r\nconst onSubmit = (e: UniFormSubmitEvent): void => {\r\n handleResetRequest()\r\n}\r\n\r\nconst navigateToLogin = (): void => {\r\n uni.navigateTo({\r\n url: '/pages/user/login'\r\n })\r\n}\r\n</script>\r\n\r\n<style>\r\n.forgot-password-container {\r\n height: 100%;\r\n padding: 40rpx;\r\n background-color: #f8f9fa;\r\n box-sizing: border-box;\r\n}\r\n\r\n.content-wrapper {\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: flex-start;\r\n padding-bottom: 40rpx;\r\n min-height: 800rpx;\r\n}\r\n\r\n.language-switch {\r\n position: absolute;\r\n top: 40rpx;\r\n right: 40rpx;\r\n z-index: 10;\r\n}\r\n\r\n.language-btn {\r\n width: 80rpx;\r\n height: 80rpx;\r\n border-radius: 40rpx;\r\n font-size: 28rpx;\r\n background-color: rgba(33, 150, 243, 0.8);\r\n color: #fff;\r\n font-weight: normal;\r\n border: 2rpx solid rgba(255, 255, 255, 0.3);\r\n text-align: center;\r\n box-shadow: 0 4rpx 12rpx rgba(33, 150, 243, 0.3);\r\n}\r\n\r\n.logo-section {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n margin-top: 80rpx;\r\n margin-bottom: 40rpx;\r\n}\r\n\r\n.app-title {\r\n font-size: 36rpx;\r\n font-weight: bold;\r\n color: #2196f3;\r\n}\r\n\r\n.page-title {\r\n font-size: 48rpx;\r\n margin-top: 20rpx;\r\n font-weight: bold;\r\n color: #333;\r\n}\r\n\r\n.page-subtitle {\r\n font-size: 28rpx;\r\n margin-top: 10rpx;\r\n color: #666;\r\n}\r\n\r\n.form-container {\r\n width: 100%;\r\n max-width: 680rpx;\r\n padding: 40rpx;\r\n background-color: #ffffff;\r\n border-radius: 20rpx;\r\n box-shadow: 0 10rpx 30rpx rgba(0, 0, 0, 0.1);\r\n box-sizing: border-box;\r\n}\r\n\r\n.input-group {\r\n margin-bottom: 30rpx;\r\n}\r\n\r\n.input-label {\r\n font-size: 28rpx;\r\n margin-bottom: 10rpx;\r\n font-weight: normal;\r\n color: #333;\r\n display: flex;\r\n}\r\n\r\n.input-field {\r\n width: 100%;\r\n height: 90rpx;\r\n padding: 0 30rpx;\r\n font-size: 28rpx;\r\n border-radius: 10rpx;\r\n border: 2rpx solid #ddd;\r\n background-color: #f9f9f9;\r\n box-sizing: border-box;\r\n}\r\n\r\n.input-error .input-field {\r\n border-color: #f44336;\r\n}\r\n\r\n.error-text {\r\n font-size: 24rpx;\r\n margin-top: 6rpx;\r\n color: #f44336;\r\n}\r\n\r\n.submit-button {\r\n width: 100%;\r\n height: 90rpx;\r\n font-size: 32rpx;\r\n margin: 20rpx 0;\r\n border-radius: 45rpx;\r\n background-image: linear-gradient(to right, #2196f3, #03a9f4);\r\n color: #fff;\r\n font-weight: normal;\r\n text-align: center;\r\n box-shadow: 0 10rpx 20rpx rgba(3, 169, 244, 0.2);\r\n}\r\n\r\n.submit-button:disabled {\r\n background: #ccc;\r\n box-shadow: none;\r\n}\r\n\r\n.general-error {\r\n width: 100%;\r\n text-align: center;\r\n color: #f44336;\r\n font-size: 28rpx;\r\n margin-top: 20rpx;\r\n}\r\n\r\n.login-option {\r\n display: flex;\r\n justify-content: center;\r\n margin-top: 40rpx;\r\n}\r\n\r\n.login-text {\r\n font-size: 28rpx;\r\n margin-right: 8rpx;\r\n color: #666;\r\n}\r\n\r\n.login-link {\r\n font-size: 28rpx;\r\n color: #2196f3;\r\n font-weight: normal;\r\n}\r\n\r\n.success-container {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n padding: 20rpx 0;\r\n}\r\n\r\n.success-icon {\r\n width: 120rpx;\r\n height: 120rpx;\r\n font-size: 60rpx;\r\n margin-bottom: 30rpx;\r\n background-color: #4caf50;\r\n color: white;\r\n border-radius: 120rpx;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.success-title {\r\n font-size: 36rpx;\r\n margin-bottom: 20rpx;\r\n font-weight: bold;\r\n color: #333;\r\n}\r\n\r\n.success-message {\r\n font-size: 28rpx;\r\n margin-bottom: 40rpx;\r\n color: #666;\r\n text-align: center;\r\n}\r\n\r\n.back-button {\r\n width: 100%;\r\n height: 90rpx;\r\n font-size: 32rpx;\r\n border-radius: 45rpx;\r\n background-color: #f0f0f0;\r\n color: #333;\r\n font-weight: normal;\r\n text-align: center;\r\n}\r\n</style>\r\n",null,null],"names":[],"mappings":"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"}