settings.js 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. // pages/settings/settings.js
  2. const app = getApp();
  3. Page({
  4. data: {
  5. role: 'parent', // parent 或 child
  6. userInfo: null,
  7. familyInfo: null,
  8. children: [],
  9. currentChild: null,
  10. settings: {
  11. notification: true,
  12. sound: true,
  13. darkMode: false,
  14. language: 'zh_CN'
  15. },
  16. danLevels: [
  17. { value: 'A1', label: 'A1 - 幼儿园小班' },
  18. { value: 'A2', label: 'A2 - 幼儿园中班' },
  19. { value: 'A3', label: 'A3 - 幼儿园大班' },
  20. { value: 'B1', label: 'B1 - 小学一年级' },
  21. { value: 'B2', label: 'B2 - 小学二年级' },
  22. { value: 'B3', label: 'B3 - 小学三年级' },
  23. { value: 'B4', label: 'B4 - 小学四年级' },
  24. { value: 'B5', label: 'B5 - 小学五年级' },
  25. { value: 'B6', label: 'B6 - 小学六年级' }
  26. ],
  27. loading: false
  28. },
  29. onLoad() {
  30. this.setData({ role: app.globalData.role });
  31. this.loadUserInfo();
  32. this.loadSettings();
  33. },
  34. onShow() {
  35. this.loadUserInfo();
  36. },
  37. // 加载用户信息
  38. loadUserInfo() {
  39. this.setData({
  40. userInfo: app.globalData.userInfo,
  41. loading: true
  42. });
  43. // 模拟数据
  44. const mockFamily = {
  45. id: 1,
  46. name: '快乐家庭',
  47. inviteCode: 'ABC123',
  48. memberCount: 4
  49. };
  50. const mockChildren = [
  51. { id: 1, name: '小明', age: 8, danLevel: 'B2', penaltyEnabled: true, points: 120 },
  52. { id: 2, name: '小红', age: 6, danLevel: 'A3', penaltyEnabled: false, points: 85 }
  53. ];
  54. setTimeout(() => {
  55. this.setData({
  56. familyInfo: mockFamily,
  57. children: mockChildren,
  58. currentChild: mockChildren[0],
  59. loading: false
  60. });
  61. }, 500);
  62. },
  63. // 加载设置
  64. loadSettings() {
  65. const settings = wx.getStorageSync('appSettings');
  66. if (settings) {
  67. this.setData({ settings });
  68. }
  69. },
  70. // 保存设置
  71. saveSettings() {
  72. wx.setStorageSync('appSettings', this.data.settings);
  73. },
  74. // 切换通知
  75. onNotificationChange(e) {
  76. this.setData({ 'settings.notification': e.detail.value });
  77. this.saveSettings();
  78. },
  79. // 切换声音
  80. onSoundChange(e) {
  81. this.setData({ 'settings.sound': e.detail.value });
  82. this.saveSettings();
  83. },
  84. // 切换暗黑模式
  85. onDarkModeChange(e) {
  86. this.setData({ 'settings.darkMode': e.detail.value });
  87. this.saveSettings();
  88. // 实际应用中这里需要切换主题
  89. wx.showToast({
  90. title: '暗黑模式功能开发中',
  91. icon: 'none'
  92. });
  93. },
  94. // 切换语言
  95. onLanguageChange(e) {
  96. this.setData({ 'settings.language': e.detail.value });
  97. this.saveSettings();
  98. },
  99. // 切换孩子
  100. onChildChange(e) {
  101. const childId = parseInt(e.detail.value);
  102. const child = this.data.children.find(c => c.id === childId);
  103. this.setData({ currentChild: child });
  104. },
  105. // 编辑孩子信息
  106. onEditChild() {
  107. wx.navigateTo({
  108. url: `/pages/child-edit/child-edit?id=${this.data.currentChild.id}`
  109. });
  110. },
  111. // 管理家庭
  112. onManageFamily() {
  113. wx.navigateTo({
  114. url: '/pages/family-manage/family-manage'
  115. });
  116. },
  117. // 邀请成员
  118. onInviteMember() {
  119. wx.showModal({
  120. title: '邀请家庭成员',
  121. content: `家庭邀请码:${this.data.familyInfo?.inviteCode || ''}`,
  122. showCancel: false,
  123. confirmText: '复制邀请码',
  124. success: (res) => {
  125. if (res.confirm) {
  126. wx.setClipboardData({
  127. data: this.data.familyInfo?.inviteCode || '',
  128. success: () => {
  129. wx.showToast({
  130. title: '邀请码已复制',
  131. icon: 'success'
  132. });
  133. }
  134. });
  135. }
  136. }
  137. });
  138. },
  139. // 查看积分记录
  140. onViewPointsLog() {
  141. wx.navigateTo({
  142. url: `/pages/points-log/points-log?childId=${this.data.currentChild?.id || 0}&childName=${this.data.currentChild?.name || ''}`
  143. });
  144. },
  145. // 查看成就
  146. onViewAchievements() {
  147. wx.navigateTo({
  148. url: '/pages/achievements/achievements'
  149. });
  150. },
  151. // DAN测评
  152. onDanAssessment() {
  153. wx.navigateTo({
  154. url: `/pages/dan-assessment/dan-assessment?childId=${this.data.currentChild?.id || 0}`
  155. });
  156. },
  157. // 关于我们
  158. onAbout() {
  159. wx.showModal({
  160. title: '关于知行益家',
  161. content: '版本:V1.0.0\n\n知行益家是一款家庭教育任务管理小程序,通过积分奖励机制激励孩子自主完成任务,培养时间管理和延迟满足能力。',
  162. showCancel: false
  163. });
  164. },
  165. // 帮助中心
  166. onHelp() {
  167. wx.navigateTo({
  168. url: '/pages/help/help'
  169. });
  170. },
  171. // 反馈建议
  172. onFeedback() {
  173. wx.navigateTo({
  174. url: '/pages/feedback/feedback'
  175. });
  176. },
  177. // 退出登录
  178. onLogout() {
  179. wx.showModal({
  180. title: '确认退出',
  181. content: '确定要退出登录吗?',
  182. success: (res) => {
  183. if (res.confirm) {
  184. app.logout();
  185. wx.reLaunch({
  186. url: '/pages/login/login'
  187. });
  188. }
  189. }
  190. });
  191. },
  192. // 清除缓存
  193. onClearCache() {
  194. wx.showModal({
  195. title: '确认清除',
  196. content: '确定要清除本地缓存吗?这可能会影响应用性能。',
  197. success: (res) => {
  198. if (res.confirm) {
  199. wx.clearStorageSync();
  200. wx.showToast({
  201. title: '缓存已清除',
  202. icon: 'success'
  203. });
  204. }
  205. }
  206. });
  207. },
  208. // 检查更新
  209. onCheckUpdate() {
  210. wx.showLoading({ title: '检查更新中...' });
  211. setTimeout(() => {
  212. wx.hideLoading();
  213. wx.showToast({
  214. title: '已是最新版本',
  215. icon: 'success'
  216. });
  217. }, 1000);
  218. }
  219. });