1 line
52 KiB
Plaintext
1 line
52 KiB
Plaintext
{"version":3,"sources":["pages/user/profile.uvue","pages/user/terms.uvue","uni_modules/ak-req/ak-req.uts"],"sourcesContent":["<template>\r\n\t<view class=\"page-wrapper\">\r\n\t\t<!-- Top section with language switch -->\r\n\t\t<view class=\"top-section\">\r\n\t\t\t<view class=\"language-switch\">\r\n\t\t\t\t<button class=\"language-btn\" @click=\"toggleLanguage\">\r\n\t\t\t\t\t{{ currentLocale === 'zh-CN' ? 'EN' : '中' }}\r\n\t\t\t\t</button>\r\n\t\t\t</view>\r\n\t\t</view>\r\n\r\n\t\t<!-- Main content section -->\r\n\t\t<view class=\"main-section\">\r\n\t\t\t<scroll-view direction=\"vertical\" class=\"profile-container\">\r\n\r\n\t\t\t\t<!-- Loading state -->\r\n\t\t\t\t<view v-if=\"isLoading\" class=\"loading-container\">\r\n\t\t\t\t\t<text class=\"loading-text\">{{ $t('user.profile.loading') }}</text>\r\n\t\t\t\t</view>\r\n\r\n\t\t\t\t<!-- Error state -->\r\n\t\t\t\t<view v-else-if=\"profile.email == ''\" class=\"error-container\">\r\n\t\t\t\t\t<text class=\"error-text\">{{ $t('user.profile.load_error') }}</text>\r\n\t\t\t\t\t<button class=\"retry-button\" @click=\"loadProfile\">{{ $t('retry') }}</button>\r\n\t\t\t\t</view>\r\n\r\n\t\t\t\t<!-- Profile content -->\r\n\t\t\t\t<view v-else class=\"profile-content\">\r\n\t\t\t\t\t<!-- Avatar section -->\r\n\t\t\t\t\t<view class=\"avatar-section\">\r\n\t\t\t\t\t\t<image class=\"avatar\" :src=\"userAvatar\" mode=\"aspectFill\" @click=\"chooseAvatar\">></image>\r\n\t\t\t\t\t</view>\r\n\r\n\t\t\t\t\t<!-- Profile form -->\r\n\t\t\t\t\t<form @submit=\"onSubmit\">\r\n\t\t\t\t\t\t<!-- Username input -->\r\n\t\t\t\t\t\t<view class=\"input-group\">\r\n\t\t\t\t\t\t\t<text class=\"input-label\">{{ $t('user.profile.username') }}</text>\r\n\t\t\t\t\t\t\t<input class=\"input-field\" name=\"username\" type=\"text\" v-model=\"profile.username\"\r\n\t\t\t\t\t\t\t\t:placeholder=\"$t('user.profile.username_placeholder')\" />\r\n\t\t\t\t\t\t</view>\r\n\r\n\t\t\t\t\t\t<!-- Email input (read-only) -->\r\n\t\t\t\t\t\t<view class=\"input-group\">\r\n\t\t\t\t\t\t\t<text class=\"input-label\">{{ $t('user.profile.email') }}</text>\r\n\t\t\t\t\t\t\t<input class=\"input-field readonly\" name=\"email\" type=\"text\" v-model=\"profile.email\"\r\n\t\t\t\t\t\t\t\tdisabled />\r\n\t\t\t\t\t\t\t<text class=\"hint-text\">{{ $t('user.profile.email_readonly') }}</text>\r\n\t\t\t\t\t\t</view>\r\n\r\n\t\t\t\t\t\t<!-- Gender select -->\r\n\t\t\t\t\t\t<view class=\"input-group\">\r\n\t\t\t\t\t\t\t<text class=\"input-label\">{{ $t('user.profile.gender') }}</text>\r\n\t\t\t\t\t\t\t<view class=\"picker-field\" @click=\"showGenderPicker = true\">\r\n\t\t\t\t\t\t\t\t<text>{{ getGenderText(profile.gender ?? 'other') }}</text>\r\n\t\t\t\t\t\t\t\t<text class=\"picker-arrow\"></text>\r\n\t\t\t\t\t\t\t</view>\r\n\t\t\t\t\t\t\t<view v-if=\"showGenderPicker\" class=\"picker-modal\">\r\n\t\t\t\t\t\t\t\t<picker-view class=\"picker-view\" :value=\"tempGenderIndex\"\r\n\t\t\t\t\t\t\t\t\t:indicator-style=\"'height: 50px;'\" @change=\"onGenderPickerViewChange\">\r\n\t\t\t\t\t\t\t\t\t<picker-view-column style=\"width:750rpx;\">\r\n\t\t\t\t\t\t\t\t\t\t<view v-for=\"(g, idx) in genderOptions\" :key=\"g\" class=\"picker-item\">\r\n\t\t\t\t\t\t\t\t\t\t\t{{ getGenderText(g) }}\r\n\t\t\t\t\t\t\t\t\t\t</view>\r\n\t\t\t\t\t\t\t\t\t</picker-view-column>\r\n\t\t\t\t\t\t\t\t</picker-view>\r\n\t\t\t\t\t\t\t\t<view class=\"picker-actions\">\r\n\t\t\t\t\t\t\t\t\t<button @click=\"showGenderPicker = false\">{{ $t('cancel') }}</button>\r\n\t\t\t\t\t\t\t\t\t<button @click=\"confirmGenderPicker\"\r\n\t\t\t\t\t\t\t\t\t\tclass=\"picker-actions-button\">{{ $t('confirm') }}</button>\r\n\t\t\t\t\t\t\t\t</view>\r\n\t\t\t\t\t\t\t</view>\r\n\t\t\t\t\t\t</view>\r\n\r\n\t\t\t\t\t\t<!-- Birthday picker -->\r\n\t\t\t\t\t\t<view class=\"input-group\">\r\n\t\t\t\t\t\t\t<text class=\"input-label\">{{ $t('user.profile.birthday') }}</text>\r\n\t\t\t\t\t\t\t<view class=\"picker-field\" @click=\"showBirthdayPickernow\">\r\n\t\t\t\t\t\t\t\t<text>{{ profile.birthday ?? $t('user.profile.birthday_placeholder') }}</text>\r\n\t\t\t\t\t\t\t\t<text class=\"picker-arrow\"></text>\r\n\t\t\t\t\t\t\t</view>\r\n\t\t\t\t\t\t\t<view v-if=\"showBirthdayPicker\" class=\"picker-modal\">\r\n\t\t\t\t\t\t\t\t<picker-date :startYear=\"1970\" :endYear=\"new Date().getFullYear()\" :value=\"tempBirthday\"\r\n\t\t\t\t\t\t\t\t\t@change=\"onBirthdayDateChange\" />\r\n\t\t\t\t\t\t\t\t<view class=\"picker-actions\">\r\n\t\t\t\t\t\t\t\t\t<button @click=\"showBirthdayPicker = false\">{{ $t('cancel') }}</button>\r\n\t\t\t\t\t\t\t\t\t<button @click=\"confirmBirthdayPicker\"\r\n\t\t\t\t\t\t\t\t\t\tclass=\"picker-actions-button\">{{ $t('confirm') }}</button>\r\n\t\t\t\t\t\t\t\t</view>\r\n\t\t\t\t\t\t\t</view>\r\n\t\t\t\t\t\t</view>\r\n\r\n\t\t\t\t\t\t<!-- Height input -->\r\n\t\t\t\t\t\t<view class=\"input-group\">\r\n\t\t\t\t\t\t\t<text class=\"input-label\">{{ $t('user.profile.height') }} (cm)</text>\r\n\t\t\t\t\t\t\t<input class=\"input-field\" name=\"height\" type=\"number\" :value=\"profile.height_cm ?? ''\"\r\n\t\t\t\t\t\t\t\t:placeholder=\"$t('user.profile.height_placeholder')\" @input=\"onHeightInput\" />\r\n\t\t\t\t\t\t</view>\r\n\r\n\t\t\t\t\t\t<!-- Weight input -->\r\n\t\t\t\t\t\t<view class=\"input-group\">\r\n\t\t\t\t\t\t\t<text class=\"input-label\">{{ $t('user.profile.weight') }} (kg)</text>\r\n\t\t\t\t\t\t\t<input class=\"input-field\" name=\"weight\" type=\"number\" :value=\"profile.weight_kg ?? ''\"\r\n\t\t\t\t\t\t\t\t:placeholder=\"$t('user.profile.weight_placeholder')\" @input=\"onWeightInput\" />\r\n\t\t\t\t\t\t</view> <!-- Language preference -->\r\n\t\t\t\t\t\t<view class=\"input-group\">\r\n\t\t\t\t\t\t\t<text class=\"input-label\">{{ $t('user.profile.language') }}</text>\r\n\t\t\t\t\t\t\t<view class=\"picker-field\" @click=\"showLanguagePickerNow\">\r\n\t\t\t\t\t\t\t\t<text>{{ getLanguageName(profile.preferred_language??'') }}</text>\r\n\t\t\t\t\t\t\t\t<text class=\"picker-arrow\">›</text>\r\n\t\t\t\t\t\t\t</view>\r\n\t\t\t\t\t\t\t<view v-if=\"showLanguagePicker\" class=\"picker-modal\">\r\n\t\t\t\t\t\t\t\t<picker-view class=\"picker-view\" :value=\"tempLanguageIndexArr\"\r\n\t\t\t\t\t\t\t\t\t:indicator-style=\"'height: 50px;'\" @change=\"onLanguagePickerViewChange\">\r\n\t\t\t\t\t\t\t\t\t<picker-view-column style=\"width:750rpx;\">\r\n\t\t\t\t\t\t\t\t\t\t<view v-for=\"(lang, idx) in languageOptions\" :key=\"lang\" class=\"picker-item\">\r\n\t\t\t\t\t\t\t\t\t\t\t{{ lang }}\r\n\t\t\t\t\t\t\t\t\t\t</view>\r\n\t\t\t\t\t\t\t\t\t</picker-view-column>\r\n\t\t\t\t\t\t\t\t</picker-view>\r\n\t\t\t\t\t\t\t\t<view class=\"picker-actions\">\r\n\t\t\t\t\t\t\t\t\t<button @click=\"showLanguagePicker = false\">{{ $t('cancel') }}</button>\r\n\t\t\t\t\t\t\t\t\t<button @click=\"confirmLanguagePicker\"\r\n\t\t\t\t\t\t\t\t\t\tclass=\"picker-actions-button\">{{ $t('confirm') }}</button>\r\n\t\t\t\t\t\t\t\t</view>\r\n\t\t\t\t\t\t\t</view>\r\n\t\t\t\t\t\t</view>\r\n\r\n\t\t\t\t\t\t<!-- Bio/description textarea -->\r\n\t\t\t\t\t\t<view class=\"input-group\">\r\n\t\t\t\t\t\t\t<text class=\"input-label\">{{ $t('user.profile.bio') }}</text>\r\n\t\t\t\t\t\t\t<textarea class=\"textarea-field\" name=\"bio\" v-model=\"profile.bio\"\r\n\t\t\t\t\t\t\t\t:placeholder=\"$t('user.profile.bio_placeholder')\"></textarea>\r\n\t\t\t\t\t\t</view>\r\n\r\n\t\t\t\t\t\t<!-- Save button -->\r\n\t\t\t\t\t\t<button form-type=\"submit\" class=\"save-button\" :disabled=\"isSaving\" :loading=\"isSaving\">\r\n\t\t\t\t\t\t\t{{ $t('user.profile.save_button') }}\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t</form>\r\n\r\n\t\t\t\t\t<!-- Success/error messages -->\r\n\t\t\t\t\t<view v-if=\"saveSuccess\" class=\"success-message\">\r\n\t\t\t\t\t\t<text class=\"success-text\">{{ $t('user.profile.save_success') }}</text>\r\n\t\t\t\t\t</view>\r\n\t\t\t\t\t<view v-else-if=\"saveError\" class=\"error-message\">\r\n\t\t\t\t\t\t<text class=\"error-text\">{{ saveError }}</text>\r\n\t\t\t\t\t</view>\r\n\t\t\t\t</view>\r\n\t\t\t</scroll-view>\r\n\t\t</view>\r\n\r\n\t\t<!-- Bottom section -->\r\n\t\t<view class=\"bottom-section\">\r\n\t\t\t<!-- Footer content or spacing -->\r\n\t\t</view>\r\n\t</view>\r\n</template>\r\n\r\n<script lang=\"uts\">\r\n\timport supa from '@/components/supadb/aksupainstance.uts';\r\n\timport { AkSupaSelectOptions } from '@/components/supadb/aksupa.uts'\r\n\timport { setUserProfile } from '@/utils/store.uts';\r\n\timport type { UserProfile, LanguageOption } from './types.uts';\r\n\timport { switchLocale, getCurrentLocale } from '@/utils/utils.uts';\r\n\r\n\texport default {\r\n\t\tdata() {\r\n\t\t\treturn {\r\n\t\t\t\tisLoading: false,\r\n\t\t\t\tsaveSuccess: '',\r\n\t\t\t\tsaveError: '',\r\n\t\t\t\tisSaving: false,\r\n\t\t\t\tuserAvatar: '',\r\n\t\t\t\tgenderOptions: ['male', 'female', 'other'],\r\n\t\t\t\ttempGenderIndex: [0], currentLocale: getCurrentLocale(),\r\n\t\t\t\tlanguages: [] as LanguageOption[], // 从数据库获取的语言选项\r\n\t\t\t\tlanguageOptions: [] as string[], // 显示的语言名称列表\r\n\t\t\t\tlanguageIds: [] as string[], // 语言UUID列表\r\n\t\t\t\tprofile: {\r\n\t\t\t\t\tid: null,\r\n\t\t\t\t\tusername: '',\r\n\t\t\t\t\temail: '',\r\n\t\t\t\t\tgender: 'other',\r\n\t\t\t\t\tbirthday: '',\r\n\t\t\t\t\theight_cm: null,\r\n\t\t\t\t\tweight_kg: null,\r\n\t\t\t\t\tbio: '',\r\n\t\t\t\t\tavatar_url: '',\r\n\t\t\t\t\tpreferred_language: 'zh-CN',\r\n\t\t\t\t} as UserProfile,\r\n\t\t\t\tshowGenderPicker: false,\r\n\t\t\t\tshowBirthdayPicker: false,\r\n\t\t\t\tshowLanguagePicker: false,\r\n\t\t\t\ttempBirthday: [2000, 1, 1],\r\n\t\t\t\tbirthdayYears: [] as number[],\r\n\t\t\t\tbirthdayMonths: [] as number[],\r\n\t\t\t\tbirthdayDays: [] as number[],\r\n\t\t\t\tbirthdayPickerValue: [0, 0, 0],\r\n\t\t\t\ttempLanguageIndex: 0,\r\n\t\t\t\ttempLanguageIndexArr: [0],\r\n\t\t\t\tindicatorStyle: 'height: 50px;',\r\n\t\t\t\tindicatorClass: '',\r\n\t\t\t\tmaskStyle: '',\r\n\t\t\t\tmaskClass: '',\r\n\t\t\t\tmaskTopStyle: '',\r\n\t\t\t\tmaskBottomStyle: ''\r\n\t\t\t};\r\n\t\t},\r\n\t\tonLoad(options) {\r\n\t\t\tthis.loadLanguages();\r\n\t\t\tthis.loadProfile();\r\n\t\t}, methods: {\r\n\r\n\t\t\ttoggleLanguage() {\r\n\t\t\t\tconst newLocale = this.currentLocale === 'zh-CN' ? 'en-US' : 'zh-CN';\r\n\t\t\t\tswitchLocale(newLocale);\r\n\t\t\t\tthis.currentLocale = newLocale;\r\n\r\n\t\t\t\tuni.showToast({\r\n\t\t\t\t\ttitle: this.$t('user.profile.language_switched'),\r\n\t\t\t\t\ticon: 'success'\r\n\t\t\t\t});\r\n\t\t\t}, async loadLanguages() {\r\n\t\t\t\ttry {\r\n\r\n\t\t\t\t\tconst result = await supa.from('ak_languages').select('id,code,name,native_name', {}).execute();\r\n\t\t\t\t\tconst error = result.error\r\n\t\t\t\t\tconst data = result.data\r\n\t\t\t\t\tif (error == null && Array.isArray(data) && data.length > 0) {\r\n\t\t\t\t\t\t// Replace map with for loop for UTS compatibility\r\n\t\t\t\t\t\tconst languageList : LanguageOption[] = []\r\n\t\t\t\t\t\tfor (let i = 0; i < data.length; i++) {\r\n\t\t\t\t\t\t\tconst item = data[i] as UTSJSONObject\r\n\t\t\t\t\t\t\tlanguageList.push({\r\n\t\t\t\t\t\t\t\tid: item.getString(\"id\") ?? '',\r\n\t\t\t\t\t\t\t\tcode: item.getString(\"code\") ?? '',\r\n\t\t\t\t\t\t\t\tname: item.getString(\"name\") ?? '',\r\n\t\t\t\t\t\t\t\tnative_name: item.getString(\"native_name\") ?? ''\r\n\t\t\t\t\t\t\t} as LanguageOption)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.languages = languageList\r\n\r\n\t\t\t\t\t\t// Replace map with for loop for UTS compatibility \r\n\t\t\t\t\t\tconst optionsList : string[] = []\r\n\t\t\t\t\t\tconst idsList : string[] = []\r\n\t\t\t\t\t\tfor (let i = 0; i < this.languages.length; i++) {\r\n\t\t\t\t\t\t\tconst lang = this.languages[i]\r\n\t\t\t\t\t\t\toptionsList.push(lang.native_name)\r\n\t\t\t\t\t\t\tidsList.push(lang.id)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.languageOptions = optionsList\r\n\t\t\t\t\t\tthis.languageIds = idsList\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconsole.warn('ak_languages 表中没有数据,请先添加语言选项');\r\n\t\t\t\t\t\t// 如果数据库没有数据,使用空数组,避免UUID错误\r\n\t\t\t\t\t\tthis.languages = [] as LanguageOption[];\r\n\t\t\t\t\t\tthis.languageOptions = [];\r\n\t\t\t\t\t\tthis.languageIds = [];\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tconsole.error('加载语言选项失败:', e);\r\n\t\t\t\t\t// 使用空数组,避免UUID错误\r\n\t\t\t\t\tthis.languages = [] as LanguageOption[];\r\n\t\t\t\t\tthis.languageOptions = [];\r\n\t\t\t\t\tthis.languageIds = [];\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tasync loadProfile() {\r\n\r\n\t\t\t\tconst user = supa.user;\r\n\t\t\t\tif (user == null || user.getString(\"email\") == null || user.getString(\"email\")?.trim() === '') {\r\n\t\t\t\t\tconsole.log('null user:', user)\r\n\t\t\t\t\tthis.profile.email = '';\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tconst filter = `id=eq.${user.id as string}`;\r\n\t\t\t\tconst options = { single: true } as AkSupaSelectOptions;\r\n\t\t\t\tconst result = await supa.select('ak_users', filter, options);\r\n\t\t\t\tconst data = result.data;\r\n\t\t\t\tconst error = result.error;\r\n\t\t\t\t// 判断 data 是否为数组且为空\r\n\t\t\t\tif (Array.isArray(data) && data.length > 0) {\r\n\t\t\t\t\tconsole.log(data)\r\n\t\t\t\t\tlet prodata = data[0] as UTSJSONObject; this.profile = {\r\n\t\t\t\t\t\tid: user.id as string,\r\n\t\t\t\t\t\tusername: prodata.getString(\"username\") ?? \"\",\r\n\t\t\t\t\t\temail: prodata.getString(\"email\") ?? \"\",\r\n\t\t\t\t\t\tgender: prodata.getString(\"gender\") ?? 'other',\r\n\t\t\t\t\t\tbirthday: prodata.getString(\"birthday\") ?? '',\r\n\t\t\t\t\t\theight_cm: prodata.getNumber(\"height_cm\"),\r\n\t\t\t\t\t\tweight_kg: prodata.getNumber(\"weight_kg\"),\r\n\t\t\t\t\t\tbio: prodata.getString(\"bio\") ?? '',\r\n\t\t\t\t\t\tavatar_url: prodata.getString(\"avatar_url\") ?? '/static/logo.png',\r\n\t\t\t\t\t\tpreferred_language: prodata.getString(\"preferred_language\") ?? this.getDefaultLanguageId(),\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// UTS兼容:avatar_url 需强转为string,避免smart cast 报错 this.userAvatar = (this.profile.avatar_url && typeof this.profile.avatar_url === 'string') ? (this.profile.avatar_url as string) : '';\r\n\t\t\t\t\tsetUserProfile(this.profile);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.profile.id = user.getString(\"id\") ?? null;\r\n\t\t\t\t\tthis.profile.username = user.getString(\"username\") ?? \"\";\r\n\t\t\t\t\tthis.profile.email = user.getString(\"email\") ?? \"\";\r\n\t\t\t\t\t// UTS兼容:判断字符串为空需用trim() === ''\r\n\t\t\t\t\tif (this.profile.username == null || this.profile.username.trim() === '') {\r\n\t\t\t\t\t\t// UTS兼容:三元表达式替换 ||\r\n\t\t\t\t\t\tlet emailStr = this.profile.email;\r\n\t\t\t\t\t\tlet splitArr = (emailStr != null && emailStr.trim() !== '') ? emailStr.split(\"@\") : [];\r\n\t\t\t\t\t\tthis.profile.username = (splitArr != null && splitArr.length > 0 && splitArr[0] != null && splitArr[0].trim() !== '') ? splitArr[0] : \"user\";\r\n\t\t\t\t\t} if (this.profile.email == null || this.profile.email.trim() === '') this.profile.email = \"\";\r\n\t\t\t\t\t// 设置默认语言首选项\r\n\t\t\t\t\tthis.profile.preferred_language = this.getDefaultLanguageId();\r\n\t\t\t\t\tlet newProfile = new UTSJSONObject(this.profile);\r\n\t\t\t\t\tconst insertResult = await supa.from('ak_users').insert(newProfile).execute();\r\n\t\t\t\t\tconsole.log(insertResult)\r\n\t\t\t\t\tif (insertResult.error == null) {\r\n\t\t\t\t\t\tsetUserProfile(this.profile);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonSubmit() {\r\n\t\t\t\tthis.saveProfile();\r\n\t\t\t}, async saveProfile() {\r\n\t\t\t\tthis.isSaving = true;\r\n\t\t\t\tthis.saveSuccess = '';\r\n\t\t\t\tthis.saveError = '';\r\n\t\t\t\tconsole.log('ak save ...')\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst updateData = { ...this.profile };\r\n\t\t\t\t\tif (this.userAvatar != '') updateData.avatar_url = this.userAvatar;\r\n\t\t\t\t\t// 验证语言ID,如果不是有效的UUID,则不保存语言首选项\r\n\t\t\t\t\tif (updateData.preferred_language != null && (updateData.preferred_language as string).trim() !== '' && this.languages.length > 0) {\r\n\t\t\t\t\t\tconst isValidLanguage = this.languages.some(lang => lang.id === updateData.preferred_language);\r\n\t\t\t\t\t\tif (!isValidLanguage) {\r\n\t\t\t\t\t\t\tupdateData.preferred_language = null;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// 只允许更新部分字段\r\n\t\t\t\t\t// UTS兼容:避免'!!',直接类型断言或判断\r\n\t\t\t\t\tconst userid : string = this.profile.id != null ? this.profile.id as string : '';\r\n\t\t\t\t\tconst result = await supa\r\n\t\t\t\t\t\t.from('ak_users')\r\n\t\t\t\t\t\t.update(updateData)\r\n\t\t\t\t\t\t.eq('id', userid)\r\n\t\t\t\t\t\t.execute();\r\n\r\n\t\t\t\t\tconsole.log(result)\r\n\t\t\t\t\t// if (error) {\r\n\t\t\t\t\t// this.saveError = error.message || '保存失败';\r\n\t\t\t\t\t// } else {\r\n\t\t\t\t\t// this.saveSuccess = '保存成功';\r\n\t\t\t\t\t// }\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tthis.saveError = '保存失败';\r\n\t\t\t\t}\r\n\t\t\t\tthis.isSaving = false;\r\n\t\t\t},\r\n\t\t\t// 替换 uuid 依赖,使用本地生成唯一文件名\r\n\t\t\tgetUuid() : string {\r\n\t\t\t\treturn `${Date.now()}_${Math.floor(Math.random() * 1e8)}`;\r\n\t\t\t},\r\n\t\t\tasync chooseAvatar() {\r\n\t\t\t\tlet that = this;\r\n\t\t\t\tuni.chooseImage({\r\n\t\t\t\t\tcount: 1,\r\n\t\t\t\t\tsizeType: ['compressed'],\r\n\t\t\t\t\tsourceType: ['album', 'camera'],\r\n\t\t\t\t\t// 注意:uni.chooseImage 的success 回调不能是async,需用普通函数\r\n\t\t\t\t\tsuccess(res : ChooseImageSuccess) {\r\n\t\t\t\t\t\tconst upfilepath = res.tempFilePaths[0];\r\n\t\t\t\t\t\tconsole.log(that.profile)\r\n\t\t\t\t\t\tconst userId = that.profile.id ?? '';\r\n\t\t\t\t\t\t// 优先从tempFiles[0] 获取扩展名,否则从路径推断\r\n\t\t\t\t\t\tlet ext = 'png';\r\n\r\n\t\t\t\t\t\tconst tempFiles = res.tempFiles;\r\n\t\t\t\t\t\tif (Array.isArray(tempFiles) && tempFiles.length > 0) {\r\n\t\t\t\t\t\t\tconst fileObj : ChooseImageTempFile = tempFiles[0];\r\n\t\t\t\t\t\t\t// 兼容 UTS: 直接尝试 fileObj.name,判空和类型\r\n\t\t\t\t\t\t\tlet fileName = fileObj?.name; if (fileName != null && fileName.length > 0) {\r\n\t\t\t\t\t\t\t\tconst idx = fileName.lastIndexOf('.');\r\n\t\t\t\t\t\t\t\tif (idx >= 0) ext = fileName.substring(idx + 1);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else if (typeof that.userAvatar === 'string' && that.userAvatar.indexOf('.') > -1) {\r\n\t\t\t\t\t\t\text = that.userAvatar.split('.').pop() ?? 'png';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tconst uuid = that.getUuid();\r\n\t\t\t\t\t\tconst remotePath = `profiles/${userId}_${uuid}.${ext}`;\r\n\t\t\t\t\t\t// 传递空对象作为 options,兼容upload 的参数要求\r\n\t\t\t\t\t\tsupa.storage.from('zhipao').upload(remotePath, upfilepath, {}).then(({ data, status }) => {\r\n\r\n\t\t\t\t\t\t\tif (status === 200 || status === 201) {\r\n\t\t\t\t\t\t\t\tconsole.log(data)\r\n\t\t\t\t\t\t\t\t// 用host+key 作为头像 URL\r\n\t\t\t\t\t\t\t\tif (data != null && typeof data == 'object') {\r\n\t\t\t\t\t\t\t\t\tconst dataObj = data as UTSJSONObject;\r\n\t\t\t\t\t\t\t\t\tlet avatarUrl = dataObj.getString(\"Key\");\r\n\t\t\t\t\t\t\t\t\tconsole.log(avatarUrl)\r\n\t\t\t\t\t\t\t\t\tif (avatarUrl != null && avatarUrl.trim() !== '') {\r\n\t\t\t\t\t\t\t\t\t\tavatarUrl = 'https://ak3.oulog.com/storage/v1/object/public/' + avatarUrl;\r\n\t\t\t\t\t\t\t\t\t\tthat.userAvatar = avatarUrl;\r\n\t\t\t\t\t\t\t\t\t\tthat.profile.avatar_url = avatarUrl;\r\n\t\t\t\t\t\t\t\t\t\t// 直接更新 profile\r\n\t\t\t\t\t\t\t\t\t\tthat.saveProfile();\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tconsole.log(that.userAvatar)\r\n\t\t\t\t\t\t\t\t\tuni.showToast({ title: that.$t('user.profile.avatar_selected'), icon: 'success' });\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tuni.showToast({ title: that.$t('uploadfail'), icon: 'none', duration: 5000 });\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tuni.showToast({ title: that.$t('uploadfail'), icon: 'none', duration: 5000 });\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\tgetGenderText(genderCode : string) : string {\r\n\t\t\t\tconsole.log(genderCode)\r\n\t\t\t\tswitch (genderCode) {\r\n\t\t\t\t\tcase 'male':\r\n\t\t\t\t\t\treturn this.$t('user.profile.gender_male');\r\n\t\t\t\t\tcase 'female':\r\n\t\t\t\t\t\treturn this.$t('user.profile.gender_female');\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\treturn this.$t('user.profile.gender_other');\r\n\t\t\t\t}\r\n\t\t\t}, getLanguageIndex() : number {\r\n\t\t\t\tconst langIndex = this.languageIds.indexOf(this.profile.preferred_language ?? '');\r\n\t\t\t\treturn langIndex >= 0 ? langIndex : 0;\r\n\t\t\t}, getDefaultLanguageId() : string {\r\n\t\t\t\t// 查找 zh-CN 对应的UUID,如果没找到则返回第一个可用的语言 UUID\r\n\t\t\t\tconst zhLang = this.languages.find(lang => lang.code === 'zh-CN');\r\n\t\t\t\tif (zhLang != null) {\r\n\t\t\t\t\treturn zhLang.id;\r\n\t\t\t\t}\r\n\t\t\t\t// 如果没有中文,返回第一个可用的语言\r\n\t\t\t\treturn this.languages.length > 0 ? this.languages[0].id : '';\r\n\t\t\t}, getLanguageName(langId : string) : string { // 通过 langId 查找 native_name,兼容UTS 类型推断\r\n\t\t\t\tconst lang = this.languages.find(lang => lang.id === langId);\r\n\t\t\t\tif (lang != null && typeof lang.native_name === 'string') {\r\n\t\t\t\t\treturn lang.native_name;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn this.languageOptions.length > 0 ? this.languageOptions[0] : '';\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgoBack() {\r\n\t\t\t\tuni.navigateBack();\r\n\t\t\t},\r\n\t\t\tonHeightInput(e : UniInputEvent) {\r\n\t\t\t\tconst val = e.detail.value;\r\n\t\t\t\tthis.profile.height_cm = val === '' ? null : parseInt(val);\r\n\t\t\t},\r\n\t\t\tonWeightInput(e : UniInputEvent) {\r\n\t\t\t\tconst val = e.detail.value;\r\n\t\t\t\tthis.profile.weight_kg = val === '' ? null : parseInt(val);\r\n\t\t\t},\r\n\t\t\tshowGenderPickerNow() {\r\n\t\t\t\t// 打开弹窗时同步索引,保证 tempGenderIndex 为number[]\r\n\t\t\t\tconst idx = this.genderOptions.indexOf(this.profile.gender ?? 'other');\r\n\t\t\t\tthis.tempGenderIndex = [idx >= 0 ? idx : 0];\r\n\t\t\t\tthis.showGenderPicker = true;\r\n\t\t\t},\r\n\t\t\tonGenderPickerViewChange(e : UniPickerViewChangeEvent) {\r\n\t\t\t\tconst idx = e.detail.value[0];\r\n\t\t\t\tthis.tempGenderIndex = [(idx >= 0 && idx < this.genderOptions.length) ? idx : 0];\r\n\t\t\t},\r\n\t\t\tconfirmGenderPicker() {\r\n\t\t\t\tthis.profile.gender = this.genderOptions[this.tempGenderIndex[0]];\r\n\t\t\t\tthis.showGenderPicker = false;\r\n\t\t\t},\r\n\t\t\tonBirthdayDateChange([y, m, d] : number[]) {\r\n\t\t\t\tthis.tempBirthday = [y, m, d];\r\n\t\t\t},\r\n\t\t\tshowBirthdayPickernow() {\r\n\t\t\t\t// 打开弹窗时同步tempBirthday\r\n\t\t\t\tthis.tempBirthday = this.parseBirthday(this.profile.birthday ?? '');\r\n\t\t\t\tthis.showBirthdayPicker = true;\r\n\t\t\t},\r\n\t\t\tconfirmBirthdayPicker() {\r\n\t\t\t\tthis.showBirthdayPicker = false;\r\n\t\t\t\tconst [y, m, d] = this.tempBirthday;\r\n\t\t\t\t// 兼容 UTS:用 (m < 10 ? '0' + m : m) 拼接字符串\r\n\t\t\t\tconst mm = m < 10 ? '0' + m : '' + m;\r\n\t\t\t\tconst dd = d < 10 ? '0' + d : '' + d;\r\n\t\t\t\tthis.profile.birthday = `${y}-${mm}-${dd}`;\r\n\t\t\t\tthis.showBirthdayPicker = false;\r\n\t\t\t}, showLanguagePickerNow() {\r\n\t\t\t\t// 打开弹窗时同步索引,保证 tempLanguageIndexArr 为number[]\r\n\t\t\t\tconst idx = this.languageIds.indexOf(this.profile.preferred_language ?? '');\r\n\t\t\t\tthis.tempLanguageIndex = idx >= 0 ? idx : 0;\r\n\t\t\t\tthis.tempLanguageIndexArr = [this.tempLanguageIndex];\r\n\t\t\t\tthis.showLanguagePicker = true;\r\n\t\t\t},\r\n\t\t\tonLanguagePickerViewChange(e : UniPickerViewChangeEvent) {\r\n\t\t\t\tconst idx = e.detail.value[0];\r\n\t\t\t\tthis.tempLanguageIndex = (idx >= 0 && idx < this.languageOptions.length) ? idx : 0;\r\n\t\t\t\tthis.tempLanguageIndexArr = [this.tempLanguageIndex];\r\n\t\t\t}, confirmLanguagePicker() {\r\n\t\t\t\tthis.profile.preferred_language = this.languageIds[this.tempLanguageIndex];\r\n\t\t\t\tthis.showLanguagePicker = false;\r\n\r\n\t\t\t\t// 同步更新应用的语言设置 - 使用语言代码而不是UUID\r\n\t\t\t\tconst selectedLang = this.languages[this.tempLanguageIndex];\r\n\t\t\t\tif (selectedLang != null && selectedLang.code != null) {\r\n\t\t\t\t\tconst langCode = selectedLang.code;\r\n\t\t\t\t\tuni.setStorageSync('uVueI18nLocale', langCode);\r\n\t\t\t\t\tthis.$i18n.global.locale.value = langCode;\r\n\r\n\t\t\t\t\t// 显示语言切换成功提示,使用native_name\r\n\t\t\t\t\tconst message = `${this.$t('user.profile.language_switched')} ${selectedLang.native_name}`;\r\n\t\t\t\t\tuni.showToast({\r\n\t\t\t\t\t\ttitle: message,\r\n\t\t\t\t\t\ticon: 'success'\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tparseBirthday(birthday : any) : number[] {\r\n\t\t\t\t// 兼容 UTS,确保birthday 为string\r\n\t\t\t\tlet str = '';\r\n\t\t\t\tif (typeof birthday === 'string') {\r\n\t\t\t\t\tstr = birthday;\r\n\t\t\t\t} else if (birthday != null) {\r\n\t\t\t\t\tstr = '' + birthday;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// 为空直接用当前日期\r\n\t\t\t\t\tconst now = new Date();\r\n\t\t\t\t\treturn [now.getFullYear(), now.getMonth() + 1, now.getDate()];\r\n\t\t\t\t}\r\n\t\t\t\t// UTS split 返回 UTSArray<String?>,需转普通string[]\r\n\t\t\t\tconst partsRaw = str.split('-');\r\n\t\t\t\t// 如果分割后不够段,直接用当前日期\r\n\t\t\t\tif (partsRaw == null || partsRaw.length !== 3) {\r\n\t\t\t\t\tconst now = new Date();\r\n\t\t\t\t\treturn [now.getFullYear(), now.getMonth() + 1, now.getDate()];\r\n\t\t\t\t}\r\n\t\t\t\tconst parts : string[] = [];\r\n\t\t\t\tfor (let i = 0; i < 3; i++) {\r\n\t\t\t\t\tlet p : string = '';\r\n\t\t\t\t\tif (typeof partsRaw[i] == 'string') {\r\n\t\t\t\t\t\tp = partsRaw[i] as string;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tp = '' + (partsRaw[i] ?? '');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tparts.push(p);\r\n\t\t\t\t}\r\n\t\t\t\t// 保证 parseInt 参数为string\r\n\t\t\t\tconst y = parseInt(parts[0]);\r\n\t\t\t\tconst m = parseInt(parts[1]);\r\n\t\t\t\tconst d = parseInt(parts[2]);\r\n\t\t\t\tif (isNaN(y) || isNaN(m) || isNaN(d)) {\r\n\t\t\t\t\tconst now = new Date();\r\n\t\t\t\t\treturn [now.getFullYear(), now.getMonth() + 1, now.getDate()];\r\n\t\t\t\t}\r\n\t\t\t\treturn [y, m, d];\r\n\t\t\t},\r\n\t\t}\r\n\t};\r\n</script>\r\n\r\n<style>\r\n\t/* Page wrapper for full screen utilization */\r\n\t.page-wrapper {\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t\tbackground-color: #f8f9fa;\r\n\t}\r\n\r\n\t/* Top section - Fixed header */\r\n\t.top-section {\r\n\r\n\r\n\r\n\r\n\r\n\t\theight: 120rpx;\r\n\r\n\t\tposition: relative;\r\n\t\tbackground-color: #f8f9fa;\r\n\t}\r\n\r\n\t/* Main content section - Scrollable */\r\n\t.main-section {\r\n\r\n\r\n\r\n\r\n\r\n\t\tflex-grow: 1;\r\n\r\n\t}\r\n\r\n\t/* Bottom section - Fixed footer */\r\n\t.bottom-section {\r\n\r\n\r\n\r\n\r\n\r\n\t\theight: 60rpx;\r\n\r\n\t\tbackground-color: #f8f9fa;\r\n\t}\r\n\r\n\t.profile-container {\r\n\r\n\r\n\r\n\r\n\t\tpadding: 30rpx;\r\n\r\n\t\tbackground-color: #f8f9fa;\r\n\t\tdisplay: flex;\r\n\t\tflex-direction: column;\r\n\t\tbox-sizing: border-box;\r\n\t}\r\n\r\n\t/* Language switch button */\r\n\t.language-switch {\r\n\t\tposition: absolute;\r\n\r\n\r\n\r\n\r\n\r\n\t\ttop: 30rpx;\r\n\t\tright: 40rpx;\r\n\r\n\t\tz-index: 10;\r\n\t}\r\n\r\n\r\n\t.header {\r\n\t\tdisplay: flex;\r\n\t\talign-items: center;\r\n\t\tpadding-top: 30rpx;\r\n\t\tpadding-bottom: 30rpx;\r\n\t\tmargin-bottom: 30rpx;\r\n\t}\r\n\r\n\t.back-button {\r\n\t\twidth: 60rpx;\r\n\t\theight: 60rpx;\r\n\t\tdisplay: flex;\r\n\t\talign-items: center;\r\n\t\tjustify-content: center;\r\n\t}\r\n\r\n\t.back-icon {\r\n\t\tfont-size: 36rpx;\r\n\t\tcolor: #333;\r\n\t}\r\n\r\n\t.page-title {\r\n\t\tflex: 1;\r\n\t\tfont-size: 36rpx;\r\n\t\tfont-weight: bold;\r\n\t\tcolor: #333;\r\n\t\ttext-align: center;\r\n\t\tmargin-right: 60rpx;\r\n\t\t/* Balance the back button width */\r\n\t}\r\n\r\n\t/* Loading state */\r\n\t.loading-container {\r\n\t\tdisplay: flex;\r\n\t\tflex-direction: column;\r\n\t\talign-items: center;\r\n\t\tjustify-content: center;\r\n\t\theight: 80%;\r\n\t}\r\n\r\n\t.loading-text {\r\n\r\n\r\n\r\n\r\n\r\n\t\tfont-size: 28rpx;\r\n\t\tmargin-top: 20rpx;\r\n\r\n\t\tcolor: #666;\r\n\t}\r\n\r\n\t/* Error state */\r\n\t.error-container {\r\n\t\tdisplay: flex;\r\n\t\tflex-direction: column;\r\n\t\talign-items: center;\r\n\t\tjustify-content: center;\r\n\t\theight: 80%;\r\n\t}\r\n\r\n\t.error-text {\r\n\r\n\r\n\r\n\r\n\r\n\t\tfont-size: 28rpx;\r\n\t\tmargin-bottom: 20rpx;\r\n\r\n\t\tcolor: #f44336;\r\n\t}\r\n\r\n\t.retry-button {\r\n\r\n\r\n\r\n\r\n\r\n\t\tpadding: 20rpx 40rpx;\r\n\t\tfont-size: 28rpx;\r\n\r\n\t\tbackground-color: #2196f3;\r\n\t\tcolor: white;\r\n\t\tborder-radius: 10rpx;\r\n\t}\r\n\r\n\t/* Profile content */\r\n\t.profile-content {\r\n\r\n\r\n\r\n\r\n\t\tpadding: 20rpx;\r\n\r\n\t\tbackground-color: white;\r\n\t\tborder-radius: 20rpx;\r\n\t\tbox-shadow: 0 5rpx 20rpx rgba(0, 0, 0, 0.05);\r\n\t}\r\n\r\n\t/* Avatar section */\r\n\t.avatar-section {\r\n\t\tposition: relative;\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: center;\r\n\r\n\r\n\r\n\r\n\t\tmargin-bottom: 40rpx;\r\n\r\n\t}\r\n\r\n\t.avatar {\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t\twidth: 180rpx;\r\n\t\theight: 180rpx;\r\n\t\tborder-radius: 90rpx;\r\n\r\n\t\tbackground-color: #eee;\r\n\t}\r\n\r\n\t.avatar-upload-button {\r\n\t\tposition: absolute;\r\n\t\tright: 30rpx;\r\n\t\tbottom: 0;\r\n\t\twidth: 60rpx;\r\n\t\theight: 60rpx;\r\n\t\tbackground-color: #2196f3;\r\n\t\tborder-radius: 30rpx;\r\n\t\tdisplay: flex;\r\n\t\talign-items: center;\r\n\t\tjustify-content: center;\r\n\t\tbox-shadow: 0 5rpx 10rpx rgba(0, 0, 0, 0.1);\r\n\t}\r\n\r\n\t.avatar-upload-icon {\r\n\t\tfont-size: 30rpx;\r\n\t\tcolor: white;\r\n\t}\r\n\r\n\t/* Form elements */\r\n\t.input-group {\r\n\r\n\r\n\r\n\r\n\t\tmargin-bottom: 30rpx;\r\n\r\n\t}\r\n\r\n\t.input-label {\r\n\r\n\r\n\r\n\r\n\r\n\t\tfont-size: 28rpx;\r\n\t\tmargin-bottom: 10rpx;\r\n\r\n\t\tfont-weight: normal;\r\n\t\tcolor: #333;\r\n\t}\r\n\r\n\t.input-field {\r\n\t\twidth: 100%;\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t\theight: 80rpx;\r\n\t\tpadding: 0 30rpx;\r\n\t\tfont-size: 28rpx;\r\n\r\n\t\tborder-radius: 10rpx;\r\n\t\tborder: 2rpx solid #ddd;\r\n\t\tbackground-color: #fff;\r\n\t\tbox-sizing: border-box;\r\n\t}\r\n\r\n\t.input-field.readonly {\r\n\t\tbackground-color: #f5f5f5;\r\n\t\tcolor: #999;\r\n\t}\r\n\r\n\t.hint-text {\r\n\r\n\r\n\r\n\r\n\r\n\t\tfont-size: 24rpx;\r\n\t\tmargin-top: 6rpx;\r\n\r\n\t\tcolor: #999;\r\n\t}\r\n\r\n\t/* Picker */\r\n\t.picker-field {\r\n\t\twidth: 100%;\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t\theight: 80rpx;\r\n\t\tpadding: 0 30rpx;\r\n\t\tfont-size: 28rpx;\r\n\r\n\t\tborder-radius: 10rpx;\r\n\t\tborder: 2rpx solid #ddd;\r\n\t\tbackground-color: #fff;\r\n\t\tdisplay: flex;\r\n\t\tflex-direction: row;\r\n\t\talign-items: center;\r\n\t\tjustify-content: space-between;\r\n\t\tbox-sizing: border-box;\r\n\t}\r\n\r\n\t.picker-arrow {\r\n\t\tcolor: #999;\r\n\r\n\r\n\r\n\r\n\t\tfont-size: 24rpx;\r\n\r\n\t}\r\n\r\n\t/* Textarea */\r\n\t.textarea-field {\r\n\t\twidth: 100%;\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t\theight: 200rpx;\r\n\t\tpadding: 20rpx 30rpx;\r\n\t\tfont-size: 28rpx;\r\n\r\n\t\tborder-radius: 10rpx;\r\n\t\tborder: 2rpx solid #ddd;\r\n\t\tbackground-color: #fff;\r\n\t\tbox-sizing: border-box;\r\n\t}\r\n\r\n\t/* Save button */\r\n\t.save-button {\r\n\t\twidth: 100%;\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t\theight: 90rpx;\r\n\t\tfont-size: 32rpx;\r\n\t\tmargin: 20rpx 0 30rpx;\r\n\t\tborder-radius: 45rpx;\r\n\r\n\t\tbackground-image: linear-gradient(to right, #2196f3, #03a9f4);\r\n\t\tcolor: #fff;\r\n\t\tfont-weight: normal;\r\n\t\ttext-align: center;\r\n\t\tbox-shadow: 0 10rpx 20rpx rgba(3, 169, 244, 0.2);\r\n\t}\r\n\r\n\t.save-button:disabled {\r\n\t\tbackground: #ccc;\r\n\t\tbox-shadow: none;\r\n\t}\r\n\r\n\t/* Success/error messages */\r\n\t.success-message {\r\n\r\n\r\n\r\n\r\n\r\n\t\tpadding: 20rpx;\r\n\t\tmargin-bottom: 20rpx;\r\n\r\n\t\tbackground-color: #e8f5e9;\r\n\t\tborder-radius: 10rpx;\r\n\t}\r\n\r\n\t.success-text {\r\n\t\tcolor: #43a047;\r\n\r\n\r\n\r\n\r\n\t\tfont-size: 28rpx;\r\n\r\n\t\ttext-align: center;\r\n\t}\r\n\r\n\t.error-message {\r\n\r\n\r\n\r\n\r\n\r\n\t\tpadding: 20rpx;\r\n\t\tmargin-bottom: 20rpx;\r\n\r\n\t\tbackground-color: #ffebee;\r\n\t\tborder-radius: 10rpx;\r\n\t}\r\n\r\n\t.error-text {\r\n\t\tcolor: #e53935;\r\n\r\n\r\n\r\n\r\n\t\tfont-size: 28rpx;\r\n\r\n\t\ttext-align: center;\r\n\t}\r\n\r\n\t.picker-modal {\r\n\t\tposition: fixed;\r\n\t\tleft: 0;\r\n\t\tright: 0;\r\n\t\tbottom: 0;\r\n\t\tbackground: #fff;\r\n\t\tz-index: 1000;\r\n\t\tbox-shadow: 0 -2px 20px rgba(0, 0, 0, 0.1);\r\n\t\tpadding-bottom: 30rpx;\r\n\t\twidth: 750rpx;\r\n\t\tborder-top-left-radius: 20rpx;\r\n\t\tborder-top-right-radius: 20rpx;\r\n\t\tdisplay: flex;\r\n\t\tflex-direction: column;\r\n\t\talign-items: center;\r\n\t}\r\n\r\n\t.picker-view {\r\n\t\twidth: 750rpx;\r\n\t\tmin-width: 240px;\r\n\t\theight: 320px;\r\n\t\tbackground: #fff;\r\n\t\tdisplay: flex;\r\n\t\tflex-direction: row;\r\n\t\tbox-sizing: border-box;\r\n\t}\r\n\r\n\t.picker-view-column {\r\n\t\tflex: 1;\r\n\t\tmin-width: 80px;\r\n\t\twidth: 750rpx;\r\n\t\tdisplay: flex;\r\n\t\tflex-direction: column;\r\n\t\talign-items: center;\r\n\t\tjustify-content: center;\r\n\t\tbox-sizing: border-box;\r\n\t}\r\n\r\n\t.picker-item {\r\n\t\theight: 50px;\r\n\t\tdisplay: flex;\r\n\t\talign-items: center;\r\n\t\tjustify-content: center;\r\n\t\twidth: 750rpx;\r\n\t\tbox-sizing: border-box;\r\n\t}\r\n\r\n\t.picker-actions {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between;\r\n\t\twidth: 750rpx;\r\n\t\tpadding: 20rpx 40rpx 0 40rpx;\r\n\t\tbox-sizing: border-box;\r\n\t}\r\n\r\n\t.picker-actions-button {\r\n\t\tflex: 1;\r\n\t\tmargin: 0 10rpx;\r\n\t\tbackground: #2196f3;\r\n\t\tcolor: #fff;\r\n\t\tborder-radius: 10rpx;\r\n\t\tfont-size: 28rpx;\r\n\t\theight: 80rpx;\r\n\t\tborder: none;\r\n\t}\r\n\r\n\t/* Language switch button */\r\n\t.language-switch {\r\n\t\tposition: absolute;\r\n\r\n\r\n\r\n\r\n\r\n\t\ttop: 60rpx;\r\n\t\tright: 40rpx;\r\n\r\n\t\tz-index: 10;\r\n\t}\r\n\r\n\t.language-btn {\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t\twidth: 80rpx;\r\n\t\theight: 80rpx;\r\n\t\tborder-radius: 40rpx;\r\n\t\tfont-size: 28rpx;\r\n\r\n\t\tbackground-color: rgba(33, 150, 243, 0.8);\r\n\t\tcolor: #fff;\r\n\t\tfont-weight: normal;\r\n\t\tborder: 2rpx solid rgba(255, 255, 255, 0.3);\r\n\t\ttext-align: center;\r\n\t\tbox-shadow: 0 4rpx 12rpx rgba(33, 150, 243, 0.3);\r\n\t}\r\n</style>",null,null],"names":[],"mappings":"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"} |