personal-info.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. // pages/personal-info/personal-info.js
  2. const app = getApp();
  3. Page({
  4. data: {
  5. isLogin: false,
  6. userInfo: null,
  7. phone: '',
  8. email: '',
  9. hobby: '',
  10. signature: '',
  11. registerTime: '',
  12. lastLogin: '',
  13. // 编辑相关数据
  14. showEditDialog: false,
  15. editField: '',
  16. editFieldLabel: '',
  17. editValue: ''
  18. },
  19. onLoad() {
  20. this.checkLoginStatus();
  21. this.formatTimeData();
  22. this.loadUserInfo();
  23. },
  24. onShow() {
  25. this.checkLoginStatus();
  26. },
  27. checkLoginStatus() {
  28. const userInfo = app.globalData.userInfo;
  29. if (userInfo && userInfo.token) {
  30. this.setData({
  31. isLogin: true,
  32. userInfo: userInfo,
  33. phone: userInfo.phone || ''
  34. });
  35. } else {
  36. this.setData({
  37. isLogin: false,
  38. userInfo: null
  39. });
  40. }
  41. },
  42. loadUserInfo() {
  43. // 从缓存加载用户额外信息
  44. const userExtraInfo = wx.getStorageSync('userExtraInfo') || {};
  45. this.setData({
  46. email: userExtraInfo.email || '',
  47. hobby: userExtraInfo.hobby || '',
  48. signature: userExtraInfo.signature || ''
  49. });
  50. },
  51. formatTimeData() {
  52. const now = new Date();
  53. const formattedTime = `${now.getFullYear()}-${(now.getMonth()+1).toString().padStart(2, '0')}-${now.getDate().toString().padStart(2, '0')}`;
  54. this.setData({
  55. registerTime: this.data.userInfo?.registerTime || formattedTime,
  56. lastLogin: formattedTime
  57. });
  58. },
  59. // 编辑字段
  60. editField(e) {
  61. const field = e.currentTarget.dataset.field;
  62. const fieldLabels = {
  63. email: '电子邮箱',
  64. hobby: '我的爱好',
  65. signature: '个性签名'
  66. };
  67. this.setData({
  68. showEditDialog: true,
  69. editField: field,
  70. editFieldLabel: fieldLabels[field],
  71. editValue: this.data[field] || ''
  72. });
  73. },
  74. // 输入框变化
  75. onEditInput(e) {
  76. this.setData({
  77. editValue: e.detail.value
  78. });
  79. },
  80. // 关闭编辑弹窗
  81. closeEditDialog() {
  82. this.setData({
  83. showEditDialog: false
  84. });
  85. },
  86. // 确认编辑
  87. confirmEdit() {
  88. const { editField, editValue } = this.data;
  89. const updateData = {};
  90. updateData[editField] = editValue;
  91. // 更新页面数据
  92. this.setData(updateData);
  93. // 保存到缓存
  94. const userExtraInfo = wx.getStorageSync('userExtraInfo') || {};
  95. userExtraInfo[editField] = editValue;
  96. wx.setStorageSync('userExtraInfo', userExtraInfo);
  97. // 关闭弹窗
  98. this.closeEditDialog();
  99. // 提示保存成功
  100. wx.showToast({
  101. title: '保存成功',
  102. icon: 'success'
  103. });
  104. },
  105. logout() {
  106. wx.showModal({
  107. title: '退出登录',
  108. content: '确定要退出当前账号吗?',
  109. confirmColor: '#ff4d4f',
  110. success: (res) => {
  111. if (res.confirm) {
  112. app.delUserInfo();
  113. this.setData({
  114. isLogin: false,
  115. userInfo: null
  116. });
  117. wx.showToast({
  118. title: '已退出登录',
  119. icon: 'success',
  120. duration: 1500,
  121. complete: () => {
  122. setTimeout(() => {
  123. wx.switchTab({
  124. url: '/pages/my/my'
  125. });
  126. }, 1500);
  127. }
  128. });
  129. }
  130. }
  131. });
  132. }
  133. });