// 管事会员记录页面逻辑 import request from '../../utils/request.js'; // 每页数据条数常量 - 统一管理,方便修改 const MEIYE_TIAOSHU = 50; Page({ data: { // 从全局变量获取的数据 yaoqingzongshu: 0, // 邀请打手总数 fenyongzonge: '0.00', // 分成总额 // 从接口获取的数据 chongzhiDashouShuliang: 0, // 充值打手数量 dashouList: [], // 打手列表数据 zongTiaoshu: 0, // 总条数 // 分页相关 dangqianYe: 1, // 当前页 meiyouGengduo: false, // 没有更多数据 jiazaiZhong: false, // 加载中状态 jiazaiGengduo: false, // 加载更多状态 // UI状态 cuowuTishi: '', // 错误提示 shuaxinKezhi: false, // 刷新按钮是否可点击 shuaxinCd: 2000, // 刷新冷却时间(毫秒) // 常量(用于模板) meiyeTiaoshu: MEIYE_TIAOSHU // 每页条数 }, onLoad(options) { // 从全局变量获取管事数据 this.huoquQuanjubianliang(); // 加载第一页数据 this.jiazaiShuju(true); }, onShow() { // 页面显示时检查全局变量是否有更新 this.registerNotificationComponent(); this.huoquQuanjubianliang(); }, // 🆕 新增:注册通知组件 registerNotificationComponent() { const app = getApp(); const notificationComp = this.selectComponent('#global-notification'); if (notificationComp && notificationComp.showNotification) { console.log('🏪 商城页面注册通知组件'); app.globalData.globalNotification = { show: (data) => notificationComp.showNotification(data), hide: () => notificationComp.hideNotification() }; } }, // 获取全局变量数据 huoquQuanjubianliang() { const app = getApp(); const guanshiData = app.globalData.guanshi; if (guanshiData) { this.setData({ yaoqingzongshu: guanshiData.yaoqingzongshu || 0, fenyongzonge: guanshiData.fenyongzonge || '0.00' }); } }, // 加载数据核心方法 async jiazaiShuju(chushihua = false) { // 防止重复请求 if (this.data.jiazaiZhong) return; // 如果是初始化加载,重置分页 if (chushihua) { this.setData({ dangqianYe: 1, meiyouGengduo: false, dashouList: [], zongTiaoshu: 0, chongzhiDashouShuliang: 0 }); } else { // 上拉加载更多时,检查是否还有更多数据 if (this.data.meiyouGengduo) return; // 如果有数据但不足一页,说明后端已经没数据了 if (this.data.dashouList.length > 0 && this.data.dashouList.length < MEIYE_TIAOSHU) { this.setData({ meiyouGengduo: true }); return; } // 如果数据量已经达到总条数,则不请求 if (this.data.dashouList.length >= this.data.zongTiaoshu && this.data.zongTiaoshu > 0) { this.setData({ meiyouGengduo: true }); return; } } // 设置加载状态 this.setData({ jiazaiZhong: chushihua ? true : false, jiazaiGengduo: !chushihua ? true : false, cuowuTishi: '' }); try { const { dangqianYe } = this.data; // 严格按照您的request规范调用 const res = await request({ url: '/shangpin/fenhonghq', method: 'POST', data: { page: dangqianYe, page_size: MEIYE_TIAOSHU // 使用统一常量 } }); // 处理返回数据 if (res.data.code === 200) { const data = res.data.data || {}; const newList = data.list || []; const total = data.total || 0; // 处理头像URL拼接 const processedList = this.chuliTouxiangURL(newList); // 计算是否有更多数据 const hasMoreData = processedList.length === MEIYE_TIAOSHU; // 更新数据 this.setData({ dashouList: chushihua ? processedList : [...this.data.dashouList, ...processedList], zongTiaoshu: total, chongzhiDashouShuliang: data.chongzhi_dashou_shuliang || 0, meiyouGengduo: !hasMoreData, dangqianYe: chushihua ? 2 : this.data.dangqianYe + 1 }); // 如果数据为空,显示空状态 if (chushihua && processedList.length === 0) { wx.showToast({ title: '暂无数据', icon: 'none', duration: 1500 }); } // 如果加载了数据,给个提示 if (processedList.length > 0) { if (chushihua) { wx.showToast({ title: `已加载${processedList.length}条记录`, icon: 'success', duration: 1000 }); } } } else { this.setData({ cuowuTishi: res.data.msg || '数据加载失败' }); wx.showToast({ title: res.data.msg || '加载失败', icon: 'none', duration: 2000 }); } } catch (error) { console.error('加载数据失败:', error); this.setData({ cuowuTishi: '网络错误,请检查网络连接' }); wx.showToast({ title: '网络错误', icon: 'none', duration: 2000 }); } finally { this.setData({ jiazaiZhong: false, jiazaiGengduo: false }); } }, // 处理头像URL拼接 chuliTouxiangURL(list) { const app = getApp(); const ossUrl = app.globalData.ossImageUrl || ''; return list.map(item => { // 确保有头像URL,如果没有则使用默认头像 let touxiangUrl = item.avatar || ''; if (touxiangUrl && !touxiangUrl.startsWith('http')) { touxiangUrl = ossUrl + touxiangUrl; } // 格式化时间 let shijian = item.create_time || ''; if (shijian) { // 如果是时间戳,转换为日期格式 if (/^\d+$/.test(shijian)) { const date = new Date(parseInt(shijian)); shijian = `${date.getMonth() + 1}月${date.getDate()}日 ${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}`; } else { // 如果是字符串,提取日期和时间 try { const dateObj = new Date(shijian); shijian = `${dateObj.getMonth() + 1}月${dateObj.getDate()}日 ${dateObj.getHours().toString().padStart(2, '0')}:${dateObj.getMinutes().toString().padStart(2, '0')}`; } catch (e) { shijian = shijian.substring(0, 10); } } } return { ...item, touxiangUrl: touxiangUrl || '/images/default-avatar.png', shijian: shijian, fenhong: parseFloat(item.fenhong || 0).toFixed(2) }; }); }, // 刷新数据(带防重复点击) shuaxinShuju() { // 检查是否在冷却中 if (this.data.shuaxinKezhi) { wx.showToast({ title: `请等待${this.data.shuaxinCd/1000}秒`, icon: 'none', duration: 1000 }); return; } // 设置冷却状态 this.setData({ shuaxinKezhi: true }); // 显示刷新动画 this.setData({ jiazaiZhong: true }); // 刷新数据 this.jiazaiShuju(true).finally(() => { // 2秒后恢复按钮可点击 setTimeout(() => { this.setData({ shuaxinKezhi: false }); }, this.data.shuaxinCd); }); }, // 上拉加载更多 shanglaJiazai() { // 没有更多数据时不再请求 if (this.data.meiyouGengduo) { wx.showToast({ title: '已经到底了', icon: 'none', duration: 1000 }); return; } // 如果正在加载,不再请求 if (this.data.jiazaiGengduo || this.data.jiazaiZhong) { return; } this.jiazaiShuju(false); }, // 重试加载 chongshiJiazai() { this.setData({ cuowuTishi: '', meiyouGengduo: false }); this.jiazaiShuju(true); } });