Page({ data: { // 系统信息 statusBarHeight: 0, navbarHeight: 0, menuButtonInfo: { height: 32, width: 32, top: 0 }, // 字体大小相关 fontSizeValue: 16, // 默认字体大小 previewFontSize: 16, // 预览区域字体大小 currentFontSize: 'small', // 当前字体大小 activeDotIndex: 1 // 默认字体为第二个位置 }, /* 监听页面加载 */ onLoad: function (options) { // 获取系统信息 this.getSystemInfo(); // 加载字体设置 this.loadCurrentFontSize(); }, /* 获取系统信息 */ getSystemInfo: function() { const systemInfo = wx.getSystemInfoSync(); const menuButtonInfo = wx.getMenuButtonBoundingClientRect(); this.setData({ statusBarHeight: systemInfo.statusBarHeight, navbarHeight: menuButtonInfo.height + (menuButtonInfo.top - systemInfo.statusBarHeight) * 2, menuButtonInfo: menuButtonInfo }); }, /* 加载用字体设置 */ loadCurrentFontSize: function() { try { // 获取聊天设置 const chatSettings = wx.getStorageSync('chatSettings') || {}; const fontSizeValue = chatSettings.fontSizeValue || 16; // 字体大小选项 let currentFontSize = 'medium'; if (fontSizeValue <= 16) { currentFontSize = 'small'; } else if (fontSizeValue >= 20) { currentFontSize = 'large'; } // 当前字体所在的位置 const activeDotIndex = Math.min(Math.round((fontSizeValue - 14) / 2), 5); // 设置滑块值和预览字体大小 this.setData({ currentFontSize: currentFontSize, fontSizeValue: fontSizeValue, previewFontSize: fontSizeValue, activeDotIndex: activeDotIndex }); } catch (error) { console.error('加载字体设置失败:', error); } }, /* 滑块值变化 */ onSliderChange: function(e) { // 不处理滑块之间的点击 }, /* 点击字体大小位置 */ onDotClick: function(e) { const value = parseInt(e.currentTarget.dataset.value); // 当前字体所在的位置 const activeDotIndex = Math.min(Math.round((value - 14) / 2), 5); // 更新预览字体大小和字体所在位置 this.setData({ previewFontSize: value, activeDotIndex: activeDotIndex, fontSizeValue: value }); // 保存设置 this.saveFontSizeSetting(value); }, /* 阻止滑块之间的点击 */ onSliderTap: function(e) { e.stopPropagation(); }, /* 保存字体大小设置 */ saveFontSizeSetting: function(value) { try { // 字体大小选项 let fontSizeOption = 'medium'; if (value <= 16) { fontSizeOption = 'small'; } else if (value >= 20) { fontSizeOption = 'large'; } // 获取聊天设置 const chatSettings = wx.getStorageSync('chatSettings') || {}; // 更新字体大小设置 const updatedSettings = { ...chatSettings, fontSize: fontSizeOption, fontSizeValue: value }; // 保存到本地 wx.setStorageSync('chatSettings', updatedSettings); // 更新数据 this.setData({ currentFontSize: fontSizeOption, fontSizeValue: value }); // 更新通知 getApp().globalData.fontSize = fontSizeOption; } catch (error) { console.error('保存字体设置失败:', error); wx.showToast({ title: '设置保存失败', icon: 'none', duration: 1500 }); } }, /* 返回上一页 */ navigateBack: function() { wx.navigateBack(); }, /* 监听页面显示 */ onShow: function () { // 重新加载字体设置 this.loadCurrentFontSize(); } });