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

1 line
31 KiB
Plaintext

{"version":3,"sources":["pages/user/profile.uvue","uni_modules/ak-req/ak-req.uts"],"sourcesContent":["<template>\r\n <view class=\"page-wrapper\">\r\n <view class=\"top-section\">\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 </view>\r\n\r\n <view class=\"main-section\">\r\n <scroll-view direction=\"vertical\" class=\"profile-container\">\r\n <view v-if=\"isLoading\" class=\"loading-container\">\r\n <text class=\"loading-text\">加载中...</text>\r\n </view>\r\n\r\n <view v-else-if=\"profile.email == ''\" class=\"error-container\">\r\n <text class=\"error-text\">加载失败</text>\r\n <button class=\"retry-button\" @click=\"loadProfile\">重试</button>\r\n </view>\r\n\r\n <view v-else class=\"profile-content\">\r\n <view class=\"avatar-section\">\r\n <image class=\"avatar\" :src=\"userAvatar\" mode=\"aspectFill\" @click=\"chooseAvatar\"></image>\r\n </view>\r\n\r\n <form @submit=\"onSubmit\">\r\n <view class=\"input-group\">\r\n <text class=\"input-label\">用户名</text>\r\n <input class=\"input-field\" name=\"username\" type=\"text\" v-model=\"profile.username\" placeholder=\"请输入用户名\" />\r\n </view>\r\n\r\n <view class=\"input-group\">\r\n <text class=\"input-label\">邮箱</text>\r\n <input class=\"input-field readonly\" name=\"email\" type=\"text\" v-model=\"profile.email\" disabled />\r\n <text class=\"hint-text\">邮箱不可修改</text>\r\n </view>\r\n\r\n <view class=\"input-group\">\r\n <text class=\"input-label\">性别</text>\r\n <view class=\"picker-field\" @click=\"showGenderPickerNow\">\r\n <text>{{ getGenderText(profile.gender ?? 'other') }}</text>\r\n <text class=\"picker-arrow\">></text>\r\n </view>\r\n <view v-if=\"showGenderPicker\" class=\"picker-modal\">\r\n <picker-view class=\"picker-view\" :value=\"tempGenderIndex\" :indicator-style=\"'height: 50px;'\" @change=\"onGenderPickerViewChange\">\r\n <picker-view-column style=\"width:750rpx;\">\r\n <view v-for=\"(g, idx) in genderOptions\" :key=\"g\" class=\"picker-item\">\r\n {{ getGenderText(g) }}\r\n </view>\r\n </picker-view-column>\r\n </picker-view>\r\n <view class=\"picker-actions\">\r\n <button @click=\"showGenderPicker = false\">取消</button>\r\n <button @click=\"confirmGenderPicker\" class=\"picker-actions-button\">确定</button>\r\n </view>\r\n </view>\r\n </view>\r\n\r\n <view class=\"input-group\">\r\n <text class=\"input-label\">生日</text>\r\n <view class=\"picker-field\" @click=\"showBirthdayPickernow\">\r\n <text>{{ profile.birthday != null && profile.birthday != '' ? profile.birthday : '请选择生日' }}</text>\r\n <text class=\"picker-arrow\">></text>\r\n </view>\r\n <view v-if=\"showBirthdayPicker\" class=\"picker-modal\">\r\n <picker-date :startYear=\"1970\" :endYear=\"new Date().getFullYear()\" :value=\"tempBirthday\" @change=\"onBirthdayDateChange\" />\r\n <view class=\"picker-actions\">\r\n <button @click=\"showBirthdayPicker = false\">取消</button>\r\n <button @click=\"confirmBirthdayPicker\" class=\"picker-actions-button\">确定</button>\r\n </view>\r\n </view>\r\n </view>\r\n\r\n <view class=\"input-group\">\r\n <text class=\"input-label\">身高 (cm)</text>\r\n <input class=\"input-field\" name=\"height\" type=\"number\" :value=\"profile.height_cm != null && profile.height_cm > 0 ? profile.height_cm : ''\" placeholder=\"请输入身高\" @input=\"onHeightInput\" />\r\n </view>\r\n\r\n <view class=\"input-group\">\r\n <text class=\"input-label\">体重 (kg)</text>\r\n <input class=\"input-field\" name=\"weight\" type=\"number\" :value=\"profile.weight_kg != null && profile.weight_kg > 0 ? profile.weight_kg : ''\" placeholder=\"请输入体重\" @input=\"onWeightInput\" />\r\n </view>\r\n\r\n <view class=\"input-group\">\r\n <text class=\"input-label\">个人简介</text>\r\n <textarea class=\"textarea-field\" name=\"bio\" v-model=\"profile.bio\" placeholder=\"请输入个人简介\"></textarea>\r\n </view>\r\n\r\n <button form-type=\"submit\" class=\"save-button\" :disabled=\"isSaving\" :loading=\"isSaving\">\r\n 保存\r\n </button>\r\n </form>\r\n\r\n <view v-if=\"saveSuccess != ''\" class=\"success-message\">\r\n <text class=\"success-text\">{{ saveSuccess }}</text>\r\n </view>\r\n <view v-else-if=\"saveError != ''\" class=\"error-message\">\r\n <text class=\"error-text\">{{ saveError }}</text>\r\n </view>\r\n </view>\r\n </scroll-view>\r\n </view>\r\n </view>\r\n</template>\r\n\r\n<script setup lang=\"uts\">\r\nimport { ref, onMounted } from 'vue'\r\nimport supa from '@/components/supadb/aksupainstance.uts'\r\nimport { AkSupaSelectOptions } from '@/components/supadb/aksupa.uts'\r\nimport { setUserProfile } from '@/utils/store.uts'\r\nimport type { UserProfile } from '@/types/mall-types.uts'\r\n\r\nconst isLoading = ref<boolean>(false)\r\nconst saveSuccess = ref<string>('')\r\nconst saveError = ref<string>('')\r\nconst isSaving = ref<boolean>(false)\r\nconst userAvatar = ref<string>('/static/logo.png')\r\nconst currentLocale = ref<string>('zh-CN')\r\nconst genderOptions: Array<string> = ['male', 'female', 'other']\r\nconst tempGenderIndex = ref<Array<number>>([0])\r\nconst showGenderPicker = ref<boolean>(false)\r\nconst showBirthdayPicker = ref<boolean>(false)\r\nconst tempBirthday = ref<Array<number>>([2000, 1, 1])\r\n\r\nconst profile = ref<UserProfile>({\r\n id: '',\r\n username: '',\r\n email: '',\r\n gender: 'other',\r\n birthday: '',\r\n height_cm: 0,\r\n weight_kg: 0,\r\n bio: '',\r\n avatar_url: '/static/logo.png',\r\n preferred_language: 'zh-CN'\r\n} as UserProfile)\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 getGenderText = (genderCode: string): string => {\r\n if (genderCode == 'male') {\r\n return '男'\r\n } else if (genderCode == 'female') {\r\n return '女'\r\n } else {\r\n return '其他'\r\n }\r\n}\r\n\r\nconst loadProfile = async (): Promise<void> => {\r\n isLoading.value = true\r\n \r\n const user = supa.user\r\n if (user == null) {\r\n profile.value.email = ''\r\n isLoading.value = false\r\n return\r\n }\r\n \r\n const userEmail = user.getString('email')\r\n if (userEmail == null || userEmail == '') {\r\n profile.value.email = ''\r\n isLoading.value = false\r\n return\r\n }\r\n \r\n const filter = `id=eq.${user.id as string}`\r\n const options = { single: true } as AkSupaSelectOptions\r\n const result = await supa.select('ak_users', filter, options)\r\n const data = result.data\r\n const error = result.error\r\n \r\n if (Array.isArray(data) && data.length > 0) {\r\n const prodata = data[0] as UTSJSONObject\r\n const p: UserProfile = {\r\n id: user.id as string,\r\n username: prodata.getString('username') ?? '',\r\n email: prodata.getString('email') ?? '',\r\n gender: prodata.getString('gender') ?? 'other',\r\n birthday: prodata.getString('birthday') ?? '',\r\n height_cm: prodata.getNumber('height_cm') ?? 0,\r\n weight_kg: prodata.getNumber('weight_kg') ?? 0,\r\n bio: prodata.getString('bio') ?? '',\r\n avatar_url: prodata.getString('avatar_url') ?? '/static/logo.png',\r\n preferred_language: prodata.getString('preferred_language') ?? 'zh-CN'\r\n } as UserProfile\r\n profile.value = p\r\n \r\n if (p.avatar_url != null && p.avatar_url != '') {\r\n userAvatar.value = p.avatar_url!\r\n }\r\n \r\n setUserProfile(p)\r\n } else {\r\n profile.value.id = user.getString('id') ?? ''\r\n profile.value.username = user.getString('username') ?? ''\r\n profile.value.email = user.getString('email') ?? ''\r\n \r\n if (profile.value.username == '') {\r\n const emailStr = profile.value.email\r\n if (emailStr != null && emailStr != '') {\r\n const parts = emailStr.split('@')\r\n if (parts.length > 0) {\r\n profile.value.username = parts[0]\r\n }\r\n }\r\n }\r\n \r\n const newProfile = new UTSJSONObject({\r\n id: profile.value.id,\r\n username: profile.value.username,\r\n email: profile.value.email,\r\n gender: profile.value.gender,\r\n preferred_language: profile.value.preferred_language\r\n })\r\n \r\n const insertResult = await supa.from('ak_users').insert(newProfile).execute()\r\n if (insertResult.error == null) {\r\n const newProfileData: UserProfile = {\r\n id: profile.value.id,\r\n username: profile.value.username,\r\n email: profile.value.email,\r\n gender: profile.value.gender,\r\n preferred_language: profile.value.preferred_language\r\n } as UserProfile\r\n setUserProfile(newProfileData)\r\n }\r\n }\r\n \r\n isLoading.value = false\r\n}\r\n\r\nconst saveProfile = async (): Promise<void> => {\r\n isSaving.value = true\r\n saveSuccess.value = ''\r\n saveError.value = ''\r\n \r\n try {\r\n const userid: string = profile.value.id ?? ''\r\n const updateData = {\r\n username: profile.value.username,\r\n gender: profile.value.gender,\r\n birthday: profile.value.birthday,\r\n height_cm: profile.value.height_cm,\r\n weight_kg: profile.value.weight_kg,\r\n bio: profile.value.bio,\r\n avatar_url: profile.value.avatar_url,\r\n preferred_language: profile.value.preferred_language\r\n }\r\n \r\n const result = await supa\r\n .from('ak_users')\r\n .update(updateData)\r\n .eq('id', userid)\r\n .execute()\r\n \r\n if (result.error == null) {\r\n saveSuccess.value = '保存成功'\r\n } else {\r\n saveError.value = '保存失败'\r\n }\r\n } catch (e) {\r\n saveError.value = '保存失败'\r\n }\r\n \r\n isSaving.value = false\r\n}\r\n\r\nconst onSubmit = (): void => {\r\n saveProfile()\r\n}\r\n\r\nconst getUuid = (): string => {\r\n return `${Date.now()}_${Math.floor(Math.random() * 1e8)}`\r\n}\r\n\r\nconst chooseAvatar = (): void => {\r\n uni.chooseImage({\r\n count: 1,\r\n sizeType: ['compressed'],\r\n sourceType: ['album', 'camera'],\r\n success: (res: ChooseImageSuccess) => {\r\n const upfilepath = res.tempFilePaths[0]\r\n const userId = profile.value.id ?? ''\r\n let ext = 'png'\r\n \r\n const tempFiles = res.tempFiles\r\n if (Array.isArray(tempFiles) && tempFiles.length > 0) {\r\n const fileObj: ChooseImageTempFile = tempFiles[0]\r\n const fileName = fileObj.name\r\n if (fileName != null && fileName != '') {\r\n const idx = fileName.lastIndexOf('.')\r\n if (idx >= 0) {\r\n ext = fileName.substring(idx + 1)\r\n }\r\n }\r\n }\r\n \r\n const uuid = getUuid()\r\n const remotePath = `profiles/${userId}_${uuid}.${ext}`\r\n \r\n supa.storage.from('zhipao').upload(remotePath, upfilepath, {}).then((uploadResult) => {\r\n if (uploadResult.status == 200 || uploadResult.status == 201) {\r\n const data = uploadResult.data\r\n if (data != null) {\r\n const dataObj = data as UTSJSONObject\r\n let avatarUrl = dataObj.getString('Key')\r\n if (avatarUrl != null && avatarUrl != '') {\r\n avatarUrl = 'https://ak3.oulog.com/storage/v1/object/public/' + avatarUrl\r\n userAvatar.value = avatarUrl\r\n profile.value.avatar_url = avatarUrl\r\n saveProfile()\r\n uni.showToast({ title: '头像已更新', icon: 'success' })\r\n }\r\n }\r\n } else {\r\n uni.showToast({ title: '上传失败', icon: 'none' })\r\n }\r\n })\r\n }\r\n })\r\n}\r\n\r\nconst onHeightInput = (e: UniInputEvent): void => {\r\n const val = e.detail.value\r\n if (val == '') {\r\n profile.value.height_cm = 0\r\n } else {\r\n profile.value.height_cm = parseInt(val)\r\n }\r\n}\r\n\r\nconst onWeightInput = (e: UniInputEvent): void => {\r\n const val = e.detail.value\r\n if (val == '') {\r\n profile.value.weight_kg = 0\r\n } else {\r\n profile.value.weight_kg = parseInt(val)\r\n }\r\n}\r\n\r\nconst showGenderPickerNow = (): void => {\r\n const genderValue = profile.value.gender\r\n const idx = genderValue != null ? genderOptions.indexOf(genderValue) : -1\r\n tempGenderIndex.value = [idx >= 0 ? idx : 0]\r\n showGenderPicker.value = true\r\n}\r\n\r\nconst onGenderPickerViewChange = (e: UniPickerViewChangeEvent): void => {\r\n const idx = e.detail.value[0]\r\n tempGenderIndex.value = [(idx >= 0 && idx < genderOptions.length) ? idx : 0]\r\n}\r\n\r\nconst confirmGenderPicker = (): void => {\r\n profile.value.gender = genderOptions[tempGenderIndex.value[0]]\r\n showGenderPicker.value = false\r\n}\r\n\r\nconst onBirthdayDateChange = (vals: Array<number>): void => {\r\n tempBirthday.value = vals\r\n}\r\n\r\nconst showBirthdayPickernow = (): void => {\r\n const birthday = profile.value.birthday\r\n if (birthday != null && birthday != '') {\r\n const parts = birthday.split('-')\r\n if (parts.length == 3) {\r\n tempBirthday.value = [parseInt(parts[0]), parseInt(parts[1]), parseInt(parts[2])]\r\n }\r\n }\r\n showBirthdayPicker.value = true\r\n}\r\n\r\nconst confirmBirthdayPicker = (): void => {\r\n showBirthdayPicker.value = false\r\n const y = tempBirthday.value[0]\r\n const m = tempBirthday.value[1]\r\n const d = tempBirthday.value[2]\r\n const mm = m < 10 ? '0' + m : '' + m\r\n const dd = d < 10 ? '0' + d : '' + d\r\n profile.value.birthday = `${y}-${mm}-${dd}`\r\n}\r\n\r\nonMounted(() => {\r\n loadProfile()\r\n})\r\n</script>\r\n\r\n<style>\r\n.page-wrapper {\r\n display: flex;\r\n flex-direction: column;\r\n background-color: #f8f9fa;\r\n /* 使用 100% 替代 100vh 以增强安卓兼容性 */\r\n height: 100%;\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n}\r\n\r\n.top-section {\r\n flex-shrink: 0;\r\n height: 100rpx;\r\n position: relative;\r\n background-color: #f8f9fa;\r\n}\r\n\r\n.main-section {\r\n flex: 1;\r\n /* 显式声明高度为 0 是 flex 容器内 scroll-view 生效的关键 */\r\n height: 0;\r\n}\r\n\r\n.profile-container {\r\n width: 100%;\r\n height: 100%;\r\n padding: 20rpx;\r\n background-color: #f8f9fa;\r\n box-sizing: border-box;\r\n}\r\n\r\n.language-switch {\r\n position: absolute;\r\n top: 20rpx;\r\n right: 30rpx;\r\n z-index: 10;\r\n}\r\n\r\n.language-btn {\r\n width: 60rpx;\r\n height: 60rpx;\r\n border-radius: 30rpx;\r\n font-size: 22rpx;\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}\r\n\r\n.loading-container {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n height: 80%;\r\n}\r\n\r\n.loading-text {\r\n font-size: 28rpx;\r\n color: #666;\r\n}\r\n\r\n.error-container {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n height: 80%;\r\n}\r\n\r\n.error-text {\r\n font-size: 28rpx;\r\n color: #f44336;\r\n margin-bottom: 20rpx;\r\n}\r\n\r\n.retry-button {\r\n padding: 20rpx 40rpx;\r\n font-size: 28rpx;\r\n background-color: #2196f3;\r\n color: white;\r\n border-radius: 10rpx;\r\n}\r\n\r\n.profile-content {\r\n padding: 20rpx;\r\n background-color: white;\r\n border-radius: 20rpx;\r\n}\r\n\r\n.avatar-section {\r\n display: flex;\r\n justify-content: center;\r\n margin-bottom: 40rpx;\r\n}\r\n\r\n.avatar {\r\n width: 140rpx;\r\n height: 140rpx;\r\n border-radius: 70rpx;\r\n background-color: #eee;\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: 80rpx;\r\n padding: 0 20rpx;\r\n font-size: 28rpx;\r\n border-radius: 10rpx;\r\n border: 2rpx solid #ddd;\r\n background-color: #fff;\r\n box-sizing: border-box;\r\n}\r\n\r\n.input-field.readonly {\r\n background-color: #f5f5f5;\r\n color: #999;\r\n}\r\n\r\n.hint-text {\r\n font-size: 24rpx;\r\n margin-top: 6rpx;\r\n color: #999;\r\n}\r\n\r\n.picker-field {\r\n width: 100%;\r\n height: 80rpx;\r\n padding: 0 20rpx;\r\n font-size: 28rpx;\r\n border-radius: 10rpx;\r\n border: 2rpx solid #ddd;\r\n background-color: #fff;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n justify-content: space-between;\r\n box-sizing: border-box;\r\n}\r\n\r\n.picker-arrow {\r\n color: #999;\r\n font-size: 24rpx;\r\n}\r\n\r\n.textarea-field {\r\n width: 100%;\r\n height: 200rpx;\r\n padding: 20rpx;\r\n font-size: 28rpx;\r\n border-radius: 10rpx;\r\n border: 2rpx solid #ddd;\r\n background-color: #fff;\r\n box-sizing: border-box;\r\n}\r\n\r\n.save-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}\r\n\r\n.save-button:disabled {\r\n background: #ccc;\r\n}\r\n\r\n.success-message {\r\n padding: 20rpx;\r\n margin-bottom: 20rpx;\r\n background-color: #e8f5e9;\r\n border-radius: 10rpx;\r\n}\r\n\r\n.success-text {\r\n color: #43a047;\r\n font-size: 28rpx;\r\n text-align: center;\r\n}\r\n\r\n.error-message {\r\n padding: 20rpx;\r\n margin-bottom: 20rpx;\r\n background-color: #ffebee;\r\n border-radius: 10rpx;\r\n}\r\n\r\n.picker-modal {\r\n position: fixed;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n background: #fff;\r\n z-index: 1000;\r\n padding-bottom: 30rpx;\r\n border-top-left-radius: 20rpx;\r\n border-top-right-radius: 20rpx;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n}\r\n\r\n.picker-view {\r\n width: 750rpx;\r\n height: 320px;\r\n background: #fff;\r\n}\r\n\r\n.picker-item {\r\n height: 50px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 750rpx;\r\n}\r\n\r\n.picker-actions {\r\n display: flex;\r\n justify-content: space-between;\r\n width: 750rpx;\r\n padding: 20rpx 40rpx 0 40rpx;\r\n box-sizing: border-box;\r\n}\r\n\r\n.picker-actions-button {\r\n flex: 1;\r\n margin: 0 10rpx;\r\n background: #2196f3;\r\n color: #fff;\r\n border-radius: 10rpx;\r\n font-size: 28rpx;\r\n height: 80rpx;\r\n}\r\n</style>\r\n",null],"names":[],"mappings":"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"}