{"version":3,"file":"settings.js","sources":["pages/ucenter/settings.vue","../../HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvdWNlbnRlci9zZXR0aW5ncy52dWU"],"sourcesContent":["<template>\r\n\t<view class=\"page-wrapper\">\r\n\t\t<div class=\"bg-top\"></div>\r\n\r\n\t\t<div class=\"content-wrapper\">\r\n\t\t\t<view class=\"center h-32\">\r\n\t\t\t\t<image :src=\"selectedavatarUrl\" class=\"w-16 h-16 rounded-full\" />\r\n\t\t\t\t<button type=\"balanced\" open-type=\"chooseAvatar\" @chooseavatar=\"onChooseAvatar\">选择头像</button>\r\n\t\t\t</view>\r\n\t\t\t<!-- 性别选择 -->\r\n\t\t\t<view class=\"mb-4\">\r\n\t\t\t\t<text class=\"font-bold mb-4\">性别</text>\r\n\t\t\t\t<view class=\"h-2\"></view>\r\n\t\t\t\t<radio-group @change=\"onSexChange\" :value=\"sex\" class=\"mt-10\">\r\n\t\t\t\t\t<label class=\"mr-4\">\r\n\t\t\t\t\t\t<radio value=\"male\" :checked=\"sex === 'male'\" /> 男\r\n\t\t\t\t\t</label>\r\n\t\t\t\t\t<label>\r\n\t\t\t\t\t\t<radio value=\"female\" :checked=\"sex === 'female'\" /> 女\r\n\t\t\t\t\t</label>\r\n\t\t\t\t</radio-group>\r\n\t\t\t</view>\r\n\r\n\t\t\t<!-- 姓名 -->\r\n\t\t\t<view class=\"flex items-center space-x-2\">\r\n\t\t\t\t<label class=\"w-30 text-sm font-medium font-bold\"><text class=\"font-bold\">姓名/昵称:</text></label>\r\n\t\t\t\t<input class=\"flex-1 border border-gray-300 rounded p-2 h-8 w-full\" type=\"nickname\"\r\n\t\t\t\t\tstyle=\"font-size:42rpx;\" :value=\"username\" @input=\"userNameInput\" @blur=\"userNameInput\" />\r\n\t\t\t</view>\r\n\t\t\t<view class=\"h-8\"></view>\r\n\r\n\t\t\t<!-- 手机号码 -->\r\n\t\t\t<view class=\"flex items-center space-x-2\">\r\n\t\t\t\t<label class=\"w-30 text-sm font-medium font-bold\"><text class=\"font-bold\">手机号码:</text></label>\r\n\t\t\t\t<input v-model=\"phone\" placeholder=\"请输入手机号码\" type=\"number\" maxlength=\"11\"\r\n\t\t\t\t\tclass=\"flex-1 border border-gray-300 rounded p-2 h-8 w-full\" />\r\n\t\t\t</view>\r\n\r\n\t\t\t<!-- 保存按钮 -->\r\n\t\t\t<button class=\"bg-blue-500 text-white p-2 rounded w-full mt-100 w-12\" @click=\"saveUser\">\r\n\t\t\t\t保存\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t\t<div class=\"bg-bottom\"></div>\r\n\t</view>\r\n</template>\r\n\r\n<script setup>\r\n\timport {\r\n\t\tref,\r\n\t\tonMounted\r\n\t} from 'vue'\r\n\timport {\r\n\t\tuseUserStore\r\n\t} from '@/stores/user'\r\n\r\n\timport {\r\n\t\tapiService\r\n\t} from '@/apiservice/apiService'\r\n\r\n\t// store\r\n\tconst userStore = useUserStore()\r\n\r\n\t// 表单数据\r\n\tconst selectedavatarUrl = ref(0)\r\n\tconst sex = ref('male')\r\n\tconst username = ref('')\r\n\tconst phone = ref('')\r\n\r\n\r\n\r\n\t//获取微信昵称\r\n\tfunction userNameInput(e) {\r\n\t\tconsole.log(e.detail)\r\n\t\tusername.value = e.detail.value\r\n\t}\r\n\t//获取微信图像\r\n\tfunction onChooseAvatar(e) {\r\n\t\tconsole.log(e.detail)\r\n\t\tselectedavatarUrl.value = e.detail.avatarUrl\r\n\t}\r\n\r\n\r\n\r\n\t// 性别切换\r\n\tfunction onSexChange(e) {\r\n\t\tsex.value = e.detail.value\r\n\t}\r\n\r\n\t// 校验规则\r\n\tfunction validateForm() {\r\n\t\tif (!username.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 (username.value.length > 10) {\r\n\t\t\tuni.showToast({\r\n\t\t\t\ttitle: '姓名不能超过10个字',\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 (phone.value) {\r\n\t\t\tconst phoneReg = /^1\\d{10}$/\r\n\t\t\tif (!phoneReg.test(phone.value)) {\r\n\t\t\t\tuni.showToast({\r\n\t\t\t\t\ttitle: '手机号格式不正确',\r\n\t\t\t\t\ticon: 'none'\r\n\t\t\t\t})\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true\r\n\t}\r\n\r\n\t// 保存\r\n\tasync function saveUser() {\r\n\t\tif (!validateForm()) return\r\n\r\n\t\ttry {\r\n\t\t\tuserStore.saveUserInfo({\r\n\t\t\t\tusername: username.value,\r\n\t\t\t\tavatarUrl: selectedavatarUrl.value,\r\n\t\t\t\tsex: sex.value,\r\n\t\t\t\tphone: phone.value\r\n\t\t\t});\r\n\r\n\t\t\tif (userStore.id) {\r\n\t\t\t\tapiService.touristUpdate({\r\n\t\t\t\t\t\tid: userStore.id,\r\n\t\t\t\t\t\tusername: userStore.username,\r\n\t\t\t\t\t\tavatarurl: userStore.avatarUrl,\r\n\t\t\t\t\t\tsex: userStore.sex,\r\n\t\t\t\t\t\tphone: userStore.phone\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.then((res) => {\r\n\t\t\t\t\t\tif (res.code === 1000) {\r\n\t\t\t\t\t\t\tconsole.log('游客更新成功:');\r\n\t\t\t\t\t\t\tuni.showToast({\r\n\t\t\t\t\t\t\t\ttitle: '保存成功',\r\n\t\t\t\t\t\t\t\ticon: 'success',\r\n\t\t\t\t\t\t\t\tduration: 1500,\r\n\t\t\t\t\t\t\t\tsuccess: () => {\r\n\t\t\t\t\t\t\t\t\t// toast 完成后跳转\r\n\t\t\t\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\t\t\t\tuni.switchTab({\r\n\t\t\t\t\t\t\t\t\t\t\turl: '/pages/index/index'\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}, 1500);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tconsole.warn('游客更新失败:', res.message);\r\n\t\t\t\t\t\t\tuni.showToast({\r\n\t\t\t\t\t\t\t\ttitle: '保存失败',\r\n\t\t\t\t\t\t\t\ticon: 'none',\r\n\t\t\t\t\t\t\t\tduration: 1500\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\t.catch((err) => {\r\n\t\t\t\t\t\tconsole.error('游客更新错误:', err);\r\n\t\t\t\t\t\tuni.showToast({\r\n\t\t\t\t\t\t\ttitle: '网络错误',\r\n\t\t\t\t\t\t\ticon: 'none',\r\n\t\t\t\t\t\t\tduration: 1500\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tuni.showToast({\r\n\t\t\t\t\ttitle: '网络错误',\r\n\t\t\t\t\ticon: 'none',\r\n\t\t\t\t\tduration: 1500\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t} catch (err) {\r\n\t\t\tconsole.error(err);\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}\r\n\t}\r\n\r\n\t// 初始化\r\n\tonMounted(() => {\r\n\t\t// 读取已有数据\r\n\t\tif (userStore.username) {\r\n\t\t\tusername.value = userStore.username\r\n\t\t}\r\n\t\tif (userStore.phone) {\r\n\t\t\tphone.value = userStore.phone\r\n\t\t}\r\n\t\tif (userStore.sex) {\r\n\t\t\tsex.value = userStore.sex\r\n\t\t}\r\n\t\tif (userStore.avatarUrl) {\r\n\t\t\tselectedavatarUrl.value = userStore.avatarUrl\r\n\t\t}\r\n\t})\r\n</script>\r\n<style>\r\n\t/* 居中容器 */\r\n\t.center {\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/* 外层容器 padding */\r\n\t.p-4 {\r\n\t\tpadding: 1rem;\r\n\t}\r\n\r\n\t/* 下边距 */\r\n\t.mb-4 {\r\n\t\tmargin-bottom: 1rem;\r\n\t}\r\n\r\n\t/* 粗体文本 */\r\n\t.font-bold {\r\n\t\tfont-weight: bold;\r\n\t}\r\n\r\n\t/* flex 布局 */\r\n\t.flex {\r\n\t\tdisplay: flex;\r\n\t}\r\n\r\n\t.flex-wrap {\r\n\t\tflex-wrap: wrap;\r\n\t}\r\n\r\n\t.items-center {\r\n\t\talign-items: center;\r\n\t}\r\n\r\n\t.justify-center {\r\n\t\tjustify-content: center;\r\n\t}\r\n\r\n\t/* 宽度控制 */\r\n\t.w-12 {\r\n\t\twidth: 3rem;\r\n\t}\r\n\r\n\t.h-12 {\r\n\t\theight: 3rem;\r\n\t}\r\n\r\n\t.h-2 {\r\n\t\theight: 0.5rem;\r\n\t}\r\n\r\n\t.w-24 {\r\n\t\twidth: 6rem;\r\n\t}\r\n\r\n\t.w-30 {\r\n\t\twidth: 7rem;\r\n\t}\r\n\r\n\t.mt-10 {\r\n\t\tmargin-top: 10rpx;\r\n\t}\r\n\r\n\t.mt-100 {\r\n\t\tmargin-top: 100rpx;\r\n\t}\r\n\r\n\t/* 头像 */\r\n\t.w-16 {\r\n\t\twidth: 4rem;\r\n\t}\r\n\r\n\t.h-16 {\r\n\t\theight: 4rem;\r\n\t}\r\n\r\n\t.h-32 {\r\n\t\theight: 8rem;\r\n\t}\r\n\r\n\t/* 边框 */\r\n\t.border {\r\n\t\tborder-width: 1px;\r\n\t\tborder-style: solid;\r\n\t}\r\n\r\n\t.border-2 {\r\n\t\tborder-width: 2px;\r\n\t}\r\n\r\n\t.border-gray-300 {\r\n\t\tborder-color: #D1D5DB;\r\n\t}\r\n\r\n\t.border-blue-500 {\r\n\t\tborder-color: #3B82F6;\r\n\t}\r\n\r\n\t/* 圆角 */\r\n\t.rounded {\r\n\t\tborder-radius: 0.25rem;\r\n\t}\r\n\r\n\t.rounded-full {\r\n\t\tborder-radius: 9999px;\r\n\t}\r\n\r\n\t/* 输入框 padding 和高度 */\r\n\t.p-2 {\r\n\t\tpadding: 0.5rem;\r\n\t}\r\n\r\n\t.h-8 {\r\n\t\theight: 2rem;\r\n\t}\r\n\r\n\t.h-12 {\r\n\t\theight: 3rem;\r\n\t}\r\n\r\n\t/* 文本颜色与背景 */\r\n\t.text-white {\r\n\t\tcolor: #ffffff;\r\n\t}\r\n\r\n\t.bg-blue-500 {\r\n\t\tbackground-color: #3B82F6;\r\n\t}\r\n\r\n\t/* label 样式 */\r\n\t.text-sm {\r\n\t\tfont-size: 0.875rem;\r\n\t}\r\n\r\n\t.font-medium {\r\n\t\tfont-weight: 500;\r\n\t}\r\n\r\n\t/* 按钮全宽 */\r\n\t.w-full {\r\n\t\twidth: 100%;\r\n\t}\r\n</style>\r\n<style>\r\n\t/* 外层容器 padding */\r\n\t.p-4 {\r\n\t\tpadding: 1rem;\r\n\t}\r\n\r\n\t/* 下边距 */\r\n\t.mb-4 {\r\n\t\tmargin-bottom: 1rem;\r\n\t}\r\n\r\n\t/* 粗体文本 */\r\n\t.font-bold {\r\n\t\tfont-weight: bold;\r\n\t}\r\n\r\n\t/* flex 布局 */\r\n\t.flex {\r\n\t\tdisplay: flex;\r\n\t}\r\n\r\n\t.flex-wrap {\r\n\t\tflex-wrap: wrap;\r\n\t}\r\n\r\n\t.items-center {\r\n\t\talign-items: center;\r\n\t}\r\n\r\n\t.justify-center {\r\n\t\tjustify-content: center;\r\n\t}\r\n\r\n\t/* 水平间距 */\r\n\t.space-x-2 {\r\n\t\tmargin-left: 0.5rem;\r\n\t}\r\n\r\n\t/* 宽度控制 */\r\n\t.w-12 {\r\n\t\twidth: 3rem;\r\n\t}\r\n\r\n\t.h-12 {\r\n\t\theight: 3rem;\r\n\t}\r\n\r\n\t.w-24 {\r\n\t\twidth: 6rem;\r\n\t}\r\n\r\n\t/* 边框 */\r\n\t.border {\r\n\t\tborder-width: 1px;\r\n\t\tborder-style: solid;\r\n\t}\r\n\r\n\t.border-2 {\r\n\t\tborder-width: 2px;\r\n\t}\r\n\r\n\t.border-gray-300 {\r\n\t\tborder-color: #D1D5DB;\r\n\t}\r\n\r\n\t.border-blue-500 {\r\n\t\tborder-color: #3B82F6;\r\n\t}\r\n\r\n\t/* 圆角 */\r\n\t.rounded {\r\n\t\tborder-radius: 0.25rem;\r\n\t}\r\n\r\n\t.rounded-full {\r\n\t\tborder-radius: 9999px;\r\n\t}\r\n\r\n\t/* 文本颜色与背景 */\r\n\t.text-white {\r\n\t\tcolor: #ffffff;\r\n\t}\r\n\r\n\t.bg-blue-500 {\r\n\t\tbackground-color: #3B82F6;\r\n\t}\r\n\r\n\t/* label 样式 */\r\n\t.text-sm {\r\n\t\tfont-size: 0.875rem;\r\n\t}\r\n\r\n\t.font-medium {\r\n\t\tfont-weight: 500;\r\n\t}\r\n\r\n\t/* 按钮全宽 */\r\n\t.w-full {\r\n\t\twidth: 100%;\r\n\t}\r\n\r\n\t.page-wrapper {\r\n\t\tposition: relative;\r\n\t\tmin-height: 100vh;\r\n\t\t/* 确保小内容时填满视口 */\r\n\t\toverflow: hidden;\r\n\t}\r\n\r\n\t/* 顶部背景 */\r\n\t.bg-top {\r\n\t\tposition: absolute;\r\n\t\ttop: 0;\r\n\t\tleft: 0;\r\n\t\twidth: 100%;\r\n\t\theight: 500rpx;\r\n\t\t/* 可用固定像素或图片高度 */\r\n\t\tbackground: url('https://farm.evcc.top/Uploads/yuanboyuan/background/bg_top.jpg') no-repeat top center;\r\n\t\tbackground-size: cover;\r\n\t\tz-index: 0;\r\n\t}\r\n\r\n\t/* 底部背景 */\r\n\t.bg-bottom {\r\n\t\tposition: absolute;\r\n\t\tbottom: 0;\r\n\t\tleft: 0;\r\n\t\twidth: 100%;\r\n\t\theight: 500rpx;\r\n\t\t/* 可用固定像素或图片高度 */\r\n\t\tbackground: url('https://farm.evcc.top/Uploads/yuanboyuan/background/bg_bottom.jpg') no-repeat bottom center;\r\n\t\tbackground-size: cover;\r\n\t\tz-index: 0;\r\n\t}\r\n\r\n\t/* 内容层 */\r\n\t.content-wrapper {\r\n\t\tposition: relative;\r\n\t\tz-index: 1;\r\n\t\tpadding: 2rem 1rem;\r\n\t}\r\n</style>","import MiniProgramPage from 'D:/HBuilderProjects/园博园/pages/ucenter/settings.vue'\nwx.createPage(MiniProgramPage)"],"names":["useUserStore","ref","uni","apiService","onMounted","MiniProgramPage"],"mappings":"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"}
|