settings.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. // pages/settings/settings.js
  2. const userUtil = require('../../utils/user');
  3. const userApi = require('../../api/user');
  4. Page({
  5. data: {
  6. userInfo: null,
  7. saving: false
  8. },
  9. onLoad() {
  10. this.loadUserInfo();
  11. },
  12. // 加载用户信息
  13. loadUserInfo() {
  14. const userInfo = userUtil.getUserInfo();
  15. this.setData({ userInfo });
  16. },
  17. // 昵称输入
  18. onNicknameInput(e) {
  19. this.setData({
  20. 'userInfo.nickname': e.detail.value
  21. });
  22. },
  23. // 头像URL输入
  24. onAvatarUrlInput(e) {
  25. this.setData({
  26. 'userInfo.avatarUrl': e.detail.value
  27. });
  28. },
  29. // 保存用户信息
  30. async saveUserInfo() {
  31. if (this.data.saving) return;
  32. const { userInfo } = this.data;
  33. if (!userInfo || !userInfo.userId) {
  34. wx.showToast({
  35. title: '用户信息不存在',
  36. icon: 'none'
  37. });
  38. return;
  39. }
  40. this.setData({ saving: true });
  41. try {
  42. const updateData = {
  43. nickname: userInfo.nickname || '',
  44. avatarUrl: userInfo.avatarUrl || ''
  45. };
  46. await userApi.updateCurrentUserInfo(updateData);
  47. // 更新本地存储的用户信息
  48. const token = wx.getStorageSync('token');
  49. const updatedUserInfo = {
  50. ...userInfo,
  51. ...updateData
  52. };
  53. userUtil.saveUserInfo(updatedUserInfo, token);
  54. wx.showToast({
  55. title: '保存成功',
  56. icon: 'success'
  57. });
  58. // 延迟返回上一页
  59. setTimeout(() => {
  60. wx.navigateBack();
  61. }, 1500);
  62. } catch (error) {
  63. wx.showToast({
  64. title: error || '保存失败',
  65. icon: 'none'
  66. });
  67. } finally {
  68. this.setData({ saving: false });
  69. }
  70. }
  71. });