miniprogramme/pages/settingss/settingss.js
2025-09-12 16:08:17 +08:00

266 lines
No EOL
6.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// pages/settingss/settingss.js
const app = getApp();
Page({
data: {
currentTheme: '浅色',
notificationStatus: '已开启',
currentLanguage: '中文',
isDarkMode: false,
// 初始化默认值避免null导致的错误
menuButtonInfo: {
height: 32, // 默认高度
width: 32, // 默认宽度
top: 0
},
statusBarHeight: 0,
// 聊天设置数据
chatSettings: {
fontSize: 'medium',
backgroundName: '默认背景',
showPreview: true
}
},
onLoad() {
try {
// 1. 获取系统信息(含状态栏高度)
const systemInfo = wx.getSystemInfoSync();
// 2. 获取胶囊按钮位置信息(用于导航栏对齐)
const menuButtonInfo = wx.getMenuButtonBoundingClientRect();
// 初始化全局设置对象
if (!app.globalData.settings) {
app.globalData.settings = {};
}
// 更新数据
this.setData({
isDarkMode: systemInfo.theme === 'dark',
statusBarHeight: systemInfo.statusBarHeight,
menuButtonInfo: menuButtonInfo || this.data.menuButtonInfo,
currentTheme: app.globalData.settings.theme || '浅色',
notificationStatus: app.globalData.settings.notification || '已开启',
currentLanguage: app.globalData.settings.language || '中文'
});
} catch (e) {
console.error('获取系统信息失败:', e);
}
},
// 返回上一页
navigateBack() {
wx.navigateBack();
},
// 切换主题
toggleTheme(e) {
const isDark = e.detail.value;
const newTheme = isDark ? '深色' : '浅色';
this.setData({
currentTheme: newTheme,
isDarkMode: isDark
});
app.globalData.settings.theme = newTheme;
wx.showToast({
title: `已切换到${newTheme}主题`,
icon: 'success'
});
},
// 跳转到账号安全
openAccountSecurity() {
wx.navigateTo({
url: '/pages/settings/account-security/account-security'
});
},
// 跳转到隐私设置
openPrivacySettings() {
wx.navigateTo({
url: '/pages/settings/privacy/privacy'
});
},
// 主题设置
openThemeSettings() {
const themes = ['浅色', '深色', '自动'];
wx.showActionSheet({
itemList: themes,
success: (res) => {
const selectedTheme = themes[res.tapIndex];
this.setData({ currentTheme: selectedTheme });
app.globalData.settings.theme = selectedTheme;
wx.showToast({
title: `已切换到${selectedTheme}主题`,
icon: 'success'
});
}
});
},
// 通知设置
openNotificationSettings() {
const options = ['已开启', '已关闭', '勿扰模式'];
wx.showActionSheet({
itemList: options,
success: (res) => {
const selectedStatus = options[res.tapIndex];
this.setData({ notificationStatus: selectedStatus });
app.globalData.settings.notification = selectedStatus;
wx.showToast({
title: `通知已${selectedStatus === '已开启' ? '开启' : selectedStatus === '已关闭' ? '关闭' : '设为勿扰'}`,
icon: 'success'
});
}
});
},
// 语言设置
openLanguageSettings() {
const languages = ['中文', 'English'];
wx.showActionSheet({
itemList: languages,
success: (res) => {
const selectedLanguage = languages[res.tapIndex];
this.setData({ currentLanguage: selectedLanguage });
app.globalData.settings.language = selectedLanguage;
wx.showToast({
title: `已切换到${selectedLanguage}`,
icon: 'success'
});
}
});
},
// 聊天设置
openChatSettings() {
const options = ['字体大小', '聊天背景', '信息预览'];
wx.showActionSheet({
itemList: options,
success: (res) => {
switch(res.tapIndex) {
case 0: // 字体大小
this.selectFontSize();
break;
case 1: // 聊天背景
this.selectChatBackground();
break;
case 2: // 信息预览
this.toggleMessagePreview();
break;
}
}
});
},
// 选择字体大小
selectFontSize() {
const fontSizeOptions = ['小', '中', '大'];
wx.showActionSheet({
itemList: fontSizeOptions,
success: (res) => {
const fontSize = ['small', 'medium', 'large'][res.tapIndex];
const chatSettings = this.data.chatSettings;
chatSettings.fontSize = fontSize;
this.setData({
chatSettings: chatSettings
});
// 保存设置
wx.setStorageSync('chatSettings', this.data.chatSettings);
wx.showToast({
title: `字体大小已设为${fontSizeOptions[res.tapIndex]}`,
icon: 'success'
});
}
});
},
// 选择聊天背景
selectChatBackground() {
const options = ['默认背景', '渐变蓝', '渐变紫', '自然风光', '抽象艺术'];
wx.showActionSheet({
itemList: options,
success: (res) => {
const backgroundName = options[res.tapIndex];
const chatSettings = this.data.chatSettings;
chatSettings.backgroundName = backgroundName;
this.setData({
chatSettings: chatSettings
});
// 保存设置
wx.setStorageSync('chatSettings', this.data.chatSettings);
wx.showToast({
title: `已切换到${backgroundName}`,
icon: 'success'
});
}
});
},
// 切换消息预览
toggleMessagePreview() {
const showPreview = !this.data.chatSettings.showPreview;
const chatSettings = this.data.chatSettings;
chatSettings.showPreview = showPreview;
this.setData({
chatSettings: chatSettings
});
// 保存设置
wx.setStorageSync('chatSettings', this.data.chatSettings);
wx.showToast({
title: `消息预览已${showPreview ? '开启' : '关闭'}`,
icon: 'success'
});
},
// 意见反馈
openFeedback() {
wx.navigateTo({
url: '/pages/settings/feedback/feedback'
});
},
// 关于
openAbout() {
wx.navigateTo({
url: '/pages/settings/about/about'
});
},
// 退出登录
logout() {
wx.showModal({
title: '退出登录',
content: '确定要退出登录吗?',
success: (res) => {
if (res.confirm) {
// 模拟退出登录
wx.showLoading({
title: '退出中...',
});
// 模拟网络请求延迟
setTimeout(() => {
wx.hideLoading();
wx.reLaunch({
url: '/pages/login/login'
});
}, 1000);
}
}
});
}
});