修正了 pages 名为拼音的问题
This commit is contained in:
216
pages/leader-bonus-log/leader-bonus-log.js
Normal file
216
pages/leader-bonus-log/leader-bonus-log.js
Normal file
@@ -0,0 +1,216 @@
|
||||
// pages/zuzhangfenhongjilu/zuzhangfenhongjilu.js
|
||||
import request from '../../utils/request.js';
|
||||
|
||||
const PAGE_SIZE = 5; // 每页数据条数
|
||||
const REFRESH_COOLDOWN = 2000; // 刷新冷却时间 (ms)
|
||||
|
||||
const app = getApp();
|
||||
|
||||
Page({
|
||||
data: {
|
||||
// 统计数据
|
||||
fenhongZonge: '0.00', // 分红总额
|
||||
yaoqingGuanshi: 0, // 邀请管事数
|
||||
fenhongCishu: 0, // 分红次数
|
||||
|
||||
// 列表数据
|
||||
jiluList: [], // 分红记录列表
|
||||
totalCount: 0, // 总记录数(后端返回)
|
||||
currentPage: 1, // 当前页码
|
||||
hasMore: true, // 是否还有更多数据
|
||||
loading: false, // 首次加载中
|
||||
loadingMore: false, // 加载更多中
|
||||
refreshDisabled: false, // 刷新按钮是否冷却
|
||||
|
||||
// 错误状态
|
||||
errorMsg: '', // 错误提示信息
|
||||
},
|
||||
|
||||
onLoad() {
|
||||
this.loadFirstPage();
|
||||
},
|
||||
|
||||
onShow() {
|
||||
this.registerNotification();
|
||||
},
|
||||
|
||||
// 注册全局通知组件
|
||||
registerNotification() {
|
||||
const notificationComp = this.selectComponent('#global-notification');
|
||||
if (notificationComp && notificationComp.showNotification) {
|
||||
app.globalData.globalNotification = {
|
||||
show: (data) => notificationComp.showNotification(data),
|
||||
hide: () => notificationComp.hideNotification()
|
||||
};
|
||||
}
|
||||
},
|
||||
|
||||
// 加载第一页数据
|
||||
loadFirstPage() {
|
||||
this.setData({
|
||||
currentPage: 1,
|
||||
hasMore: true,
|
||||
jiluList: [],
|
||||
errorMsg: ''
|
||||
});
|
||||
this.fetchData(true);
|
||||
},
|
||||
|
||||
// 刷新数据(点击刷新按钮)
|
||||
onRefresh() {
|
||||
if (this.data.refreshDisabled) {
|
||||
wx.showToast({
|
||||
title: `请稍后重试`,
|
||||
icon: 'none',
|
||||
duration: 1000
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// 启用冷却
|
||||
this.setData({ refreshDisabled: true });
|
||||
setTimeout(() => {
|
||||
this.setData({ refreshDisabled: false });
|
||||
}, REFRESH_COOLDOWN);
|
||||
|
||||
// 显示刷新动画(让按钮旋转)
|
||||
// 执行刷新
|
||||
this.loadFirstPage();
|
||||
},
|
||||
|
||||
// 上拉加载更多
|
||||
onLoadMore() {
|
||||
const { hasMore, loading, loadingMore, currentPage } = this.data;
|
||||
if (!hasMore || loading || loadingMore) return;
|
||||
|
||||
this.setData({ loadingMore: true });
|
||||
this.fetchData(false, currentPage + 1);
|
||||
},
|
||||
|
||||
// 核心数据获取方法
|
||||
async fetchData(reset = false, page = 1) {
|
||||
const url = '/shangpin/zuzhangfenhong'; // 假设后端接口地址
|
||||
|
||||
if (reset) {
|
||||
this.setData({ loading: true, errorMsg: '' });
|
||||
}
|
||||
|
||||
try {
|
||||
const res = await request({
|
||||
url,
|
||||
method: 'POST',
|
||||
data: {
|
||||
page: page,
|
||||
page_size: PAGE_SIZE
|
||||
}
|
||||
});
|
||||
|
||||
if (res.data.code === 200) {
|
||||
const data = res.data.data || {};
|
||||
// 更新统计数据
|
||||
this.setData({
|
||||
fenhongZonge: data.fenhong_zonge || '0.00',
|
||||
yaoqingGuanshi: data.yaoqing_guanshi || 0,
|
||||
fenhongCishu: data.fenhong_cishu || 0,
|
||||
totalCount: data.total || 0
|
||||
});
|
||||
|
||||
// 处理列表数据(拼接头像)
|
||||
const rawList = data.list || [];
|
||||
const processedList = this.processList(rawList);
|
||||
|
||||
if (reset) {
|
||||
// 第一页
|
||||
this.setData({
|
||||
jiluList: processedList,
|
||||
currentPage: page,
|
||||
hasMore: processedList.length === PAGE_SIZE, // 如果等于页大小,认为可能还有更多
|
||||
});
|
||||
} else {
|
||||
// 加载更多
|
||||
const newList = [...this.data.jiluList, ...processedList];
|
||||
this.setData({
|
||||
jiluList: newList,
|
||||
currentPage: page,
|
||||
hasMore: processedList.length === PAGE_SIZE,
|
||||
});
|
||||
}
|
||||
|
||||
// 如果加载后数据为空且是第一页,可以给出提示
|
||||
if (reset && processedList.length === 0) {
|
||||
// 空状态已在 wxml 处理
|
||||
}
|
||||
} else {
|
||||
// 业务错误
|
||||
this.setData({
|
||||
errorMsg: res.data.msg || '数据加载失败'
|
||||
});
|
||||
this.showNotification('error', res.data.msg || '数据加载失败');
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('获取分红记录失败', err);
|
||||
this.setData({
|
||||
errorMsg: '网络异常,请检查网络'
|
||||
});
|
||||
this.showNotification('error', '网络异常');
|
||||
} finally {
|
||||
if (reset) {
|
||||
this.setData({ loading: false });
|
||||
} else {
|
||||
this.setData({ loadingMore: false });
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// 处理列表项:拼接头像、格式化金额和时间
|
||||
processList(list) {
|
||||
const ossUrl = app.globalData.ossImageUrl || '';
|
||||
const defaultAvatar = ossUrl + (app.globalData.morentouxiang || 'avatar/default.jpg');
|
||||
|
||||
return list.map(item => ({
|
||||
// 打手信息
|
||||
dashouAvatar: this.getFullUrl(item.dashou_avatar, ossUrl, defaultAvatar),
|
||||
dashouNicheng: item.dashou_nicheng || '打手',
|
||||
dashouYonghuid: item.dashou_yonghuid || '',
|
||||
// 管事信息
|
||||
guanshiAvatar: this.getFullUrl(item.guanshi_avatar, ossUrl, defaultAvatar),
|
||||
guanshiNicheng: item.guanshi_nicheng || '管事',
|
||||
guanshiYonghuid: item.guanshi_yonghuid || '',
|
||||
// 分红信息
|
||||
fenhong: parseFloat(item.fenhong || 0).toFixed(2),
|
||||
shijian: this.formatTime(item.create_time)
|
||||
}));
|
||||
},
|
||||
|
||||
// 拼接完整图片URL
|
||||
getFullUrl(relativePath, ossUrl, defaultUrl) {
|
||||
if (!relativePath) return defaultUrl;
|
||||
if (relativePath.startsWith('http')) return relativePath;
|
||||
const full = ossUrl + (relativePath.startsWith('/') ? relativePath : '/' + relativePath);
|
||||
return full || defaultUrl;
|
||||
},
|
||||
|
||||
// 格式化时间(根据实际后端返回调整)
|
||||
formatTime(timestamp) {
|
||||
if (!timestamp) return '';
|
||||
try {
|
||||
const date = new Date(timestamp);
|
||||
return `${date.getMonth() + 1}月${date.getDate()}日 ${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}`;
|
||||
} catch {
|
||||
return timestamp.substring(0, 10) || '';
|
||||
}
|
||||
},
|
||||
|
||||
// 重试加载(当错误提示出现时)
|
||||
onRetry() {
|
||||
this.loadFirstPage();
|
||||
},
|
||||
|
||||
// 显示通知(可选)
|
||||
showNotification(type, msg) {
|
||||
const noti = app.globalData.globalNotification;
|
||||
if (noti && noti.show) {
|
||||
noti.show({ type, message: msg });
|
||||
}
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user