From 178caaf28b034867e16ff38e76b38503c2367900 Mon Sep 17 00:00:00 2001
From: mayiming <1627832236@qq.com>
Date: Mon, 29 Sep 2025 02:10:32 +0800
Subject: [PATCH] 2025/9/29/2:10
---
miniprogram/note.md | 2 +-
miniprogram/pages/setting/format.wxs | 26 ++++++
miniprogram/pages/setting/setting.json | 2 +-
miniprogram/pages/setting/setting.ts | 116 ++++++++++++++++++-------
miniprogram/pages/setting/setting.wxml | 35 ++++----
miniprogram/pages/user/user.ts | 27 +++++-
miniprogram/pages/user/user.wxml | 2 +-
7 files changed, 160 insertions(+), 50 deletions(-)
create mode 100644 miniprogram/pages/setting/format.wxs
diff --git a/miniprogram/note.md b/miniprogram/note.md
index 4ae21ff..687fe95 100644
--- a/miniprogram/note.md
+++ b/miniprogram/note.md
@@ -1 +1 @@
-当前版本:2.1.8
\ No newline at end of file
+当前版本:2.1.9
\ No newline at end of file
diff --git a/miniprogram/pages/setting/format.wxs b/miniprogram/pages/setting/format.wxs
new file mode 100644
index 0000000..b8f8799
--- /dev/null
+++ b/miniprogram/pages/setting/format.wxs
@@ -0,0 +1,26 @@
+// format.wxs (新版:使用 switch 语句,更清晰)
+
+/**
+ * 根据传入的 gender 整数,返回对应的文本
+ * @param {number} genderCode - 0, 1, 或 2
+ * @returns {string} - '未设置', '男', 或 '女'
+ */
+function formatGender(genderCode) {
+ // 直接对传入的整数进行判断
+ switch (genderCode) {
+ case 0:
+ return '未设置';
+ case 1:
+ return '男';
+ case 2:
+ return '女';
+ default:
+ // 如果传入的不是 0, 1, 2, 或者为 null/undefined,则返回默认值
+ return '未设置';
+ }
+}
+
+// 将 formatGender 函数导出,以便 WXML 文件可以使用
+module.exports = {
+ formatGender: formatGender
+};
\ No newline at end of file
diff --git a/miniprogram/pages/setting/setting.json b/miniprogram/pages/setting/setting.json
index 3bd5dd3..fa2d209 100644
--- a/miniprogram/pages/setting/setting.json
+++ b/miniprogram/pages/setting/setting.json
@@ -1,6 +1,6 @@
{
"component": true,
"usingComponents": {
-
+ "t-icon": "tdesign-miniprogram/icon/icon"
}
}
\ No newline at end of file
diff --git a/miniprogram/pages/setting/setting.ts b/miniprogram/pages/setting/setting.ts
index 6bd45b7..7f7f178 100644
--- a/miniprogram/pages/setting/setting.ts
+++ b/miniprogram/pages/setting/setting.ts
@@ -1,10 +1,12 @@
+import envConfig from "../../env";
+
// 定义用户信息数据类型
interface UserInfo {
uid: string;
telephone: string;
password: string;
avatar_url: string;
- gender: 0 | 1; // 0:女, 1:男
+ gender: 0 | 1 | 2; // 0:女, 1:男
birthdate_date: string;
createtime: string;
updatetime: string;
@@ -20,28 +22,30 @@ Page({
onLoad() {
// 从缓存或接口获取用户信息
+ console.log("tools.formatGender 是函数吗?", typeof this.data.tools?.formatGender);
this.loadUserInfo();
},
// 加载用户信息
loadUserInfo() {
- // 模拟数据,实际项目中应从接口获取
- const mockUserInfo: UserInfo = {
- uid: '10086',
- telephone: '138****8888',
- password: '',
- avatar_url: 'https://picsum.photos/200/200',
- gender: 1,
- birthdate_date: '1995-08-15',
- createtime: '2023-01-01',
- updatetime: '2023-06-10',
- bio: '热爱生活,喜欢探索',
- username: '张小明',
- total_points: 1250
- };
-
+ const app = getApp();
+ console.log("全局userinfo",app.globalData.userInfo)
+ const userInfo = app.globalData.userInfo || {};
+ console.log("userInfo 的数据类型:", typeof userInfo);
+ console.log("user中的userInfo:",userInfo)
+ let userInfoObj = userInfo;
+ if (typeof userInfo === "string") {
+ try {
+ userInfoObj = JSON.parse(userInfo); // 字符串转对象
+ } catch (e) {
+ console.error("解析 userInfo 字符串失败:", e);
+ return;
+ }
+ }
+ console.log("应保存的username:",userInfoObj.username)
+ console.log("保存的性别:",userInfoObj.gender)
this.setData({
- userInfo: mockUserInfo
+ userInfo: userInfoObj
});
},
@@ -51,15 +55,11 @@ Page({
wx.showModal({
title: '修改昵称',
- content: '请输入新的昵称',
+ content: '',
editable: true,
placeholderText: username,
success: (res) => {
if (res.confirm && res.content) {
- // 调用接口修改昵称
- this.setData({
- 'userInfo.username': res.content
- });
wx.showToast({
title: '昵称已更新',
@@ -76,21 +76,79 @@ Page({
const { gender } = this.data.userInfo;
wx.showActionSheet({
- itemList: ['男', '女'],
+ itemList: ['男', '女', '不设置'], // 建议将 '不设置' 放在最后,更符合习惯
itemColor: '#333',
success: (res) => {
- const newGender = res.tapIndex === 0 ? 1 : 0;
+ // 如果用户点击了取消按钮,res.tapIndex 会是 undefined
+ if (typeof res.tapIndex === 'undefined') {
+ return;
+ }
+
+ let newGender: 0 | 1 | 2;
+
+ // ⭐️ 修正后的正确逻辑
+ switch (res.tapIndex) {
+ case 0: // 用户点击了 '男'
+ newGender = 1;
+ break;
+ case 1: // 用户点击了 '女'
+ newGender = 2;
+ break;
+ case 2: // 用户点击了 '不设置'
+ newGender = 0;
+ break;
+ default:
+ return; // 其他情况直接返回
+ }
+
+ console.log("修改的newgender:",newGender)
if (newGender !== gender) {
+ // 更新页面数据
this.setData({
'userInfo.gender': newGender
});
+
+ wx.request({
+ url: `${envConfig.apiBaseUrl}/user/change`, // 替换为你的后端接口地址
+ method: 'POST',
+ data: {
+ "uid": this.data.userInfo.uid,
+ "gender":newGender
+ },
+ success: (res) => {
+ if(res.data.success){
+ wx.showToast({
+ title: '性别已更新',
+ icon: 'success',
+ duration: 1500
+ });
+ }else{
+ wx.showToast({
+ title: '更新失败',
+ icon: 'error',
+ duration: 1500
+ });
+ }
+
+
+ },
+ fail: (err) => {
+ wx.showToast({
+ title: '更新失败',
+ icon: 'error',
+ duration: 1500
+ });
+
+ }
+ });
+
- wx.showToast({
- title: '性别已更新',
- icon: 'success',
- duration: 1500
- });
+
+ // 调用后端 API 将 newGender 保存到数据库
+ // ... callApiToUpdate({ gender: newGender }) ...
+
+
}
}
});
diff --git a/miniprogram/pages/setting/setting.wxml b/miniprogram/pages/setting/setting.wxml
index dc9cdc7..9063c55 100644
--- a/miniprogram/pages/setting/setting.wxml
+++ b/miniprogram/pages/setting/setting.wxml
@@ -1,3 +1,4 @@
+
@@ -24,7 +25,7 @@
-
+
昵称
@@ -38,23 +39,23 @@
-
-
-
-
- 性别
- {{userInfo.gender === 1 ? '男' : '女'}}
-
-
-
-
-
+
+
+
+
+ 性别
+ {{tools.formatGender(userInfo.gender)}}
+
+
+
+
+
-
+
生日
@@ -69,7 +70,7 @@
-
+
手机号
@@ -89,7 +90,7 @@
-
+
修改密码
@@ -103,7 +104,7 @@
-
+
隐私设置
@@ -122,7 +123,7 @@
-
+
关于我们
diff --git a/miniprogram/pages/user/user.ts b/miniprogram/pages/user/user.ts
index 6153e42..d0c560c 100644
--- a/miniprogram/pages/user/user.ts
+++ b/miniprogram/pages/user/user.ts
@@ -19,7 +19,7 @@ Component({
refreshUserStatus(){
console.log("主动刷新user界面")
const app = getApp();
- console.log("全局userinfo",app.globalData.userInfo)
+ console.log("全局userinfo头像:",app.globalData.userInfo.avatar_url)
const userInfo = app.globalData.userInfo || {};
console.log("userInfo 的数据类型:", typeof userInfo);
console.log("user中的userInfo:",userInfo)
@@ -39,6 +39,7 @@ Component({
});
// 调试:确认页面数据是否正确
console.log("页面username赋值后:", this.data.username);
+ console.log("用户页面profile:",this.data.userinfo.avatar_url)
},
onRefresherRefresh() {
console.log("触发刷新");
@@ -67,6 +68,24 @@ Component({
});
console.log("更新后用户名为:",this.data.userinfo.username)
+ const app = getApp();
+ try {
+ app.globalData.userInfo = res.data.data;
+ console.log("用户信息、Token 已成功存入微信本地缓存");
+ } catch (e) {
+ // 捕获缓存失败的异常(如存储空间不足)
+ console.error("微信本地缓存存储失败:", e);
+ Toast({
+ selector: '#t-toast',
+ message: '缓存用户信息失败,请稍后重试',
+ theme: 'error',
+ direction: 'column',
+ });
+ }
+
+ console.log("缓存app中的头像为:",wx.getStorageSync("ttk_userInfo"))
+
+ console.log("app.ts中性别:",app.globalData.userInfo.gender)
// 假设后端返回的数据包含在 res.data.data 或 res.data.userinfo 中
@@ -76,6 +95,7 @@ Component({
this.setData({
refresherTriggered: false
}); // <-- 语法已修正
+
// ⭐️ 建议:调用方法来处理新数据并显示 Toast
// 假设你有一个方法来处理返回的用户数据,并同时关闭刷新动画和提示
@@ -124,6 +144,11 @@ Component({
// });
// }, 3000); // ⭐️ 延迟时间已修改为 3000 毫秒
+
+
+
+
+
},
onRefresherPulling() {
console.log("正在下拉...");
diff --git a/miniprogram/pages/user/user.wxml b/miniprogram/pages/user/user.wxml
index b6f43a7..6250916 100644
--- a/miniprogram/pages/user/user.wxml
+++ b/miniprogram/pages/user/user.wxml
@@ -15,7 +15,7 @@
-
+
{{hasToken ? (userinfo.username || '用户中心') : '点击登录/注册'}}