文档赞助页增加分页能力

This commit is contained in:
click33
2024-03-19 17:08:34 +08:00
parent 03bcf61fb5
commit bd08d840d8
8 changed files with 277 additions and 162 deletions

View File

@@ -0,0 +1,185 @@
// --------------------- 工具方法 ---------------------
// 打开 loading
loadingIcon = function(msg) {
layer.closeAll(); // 开始前先把所有弹窗关了
return layer.msg(msg, {icon: 16, shade: 0.3, time: 1000 * 20, skin: 'ajax-layer-load' });
};
// 隐藏 loading
hideLoadingIcon = function() {
layer.closeAll();
};
// --------------------- 渲染赞助者名单 ---------------------
// 返回赞助者名单副本
function getCopyDonateList() {
var arr = [];
for (var i = 0; i < donateList.length; i++) {
var item = donateList[i];
// 时间转时间戳,方便排序
item.dateT = new Date(item.date).getTime();
// 金额补 .0
item.moneyS = item.money + '';
if(item.moneyS.indexOf('.') == -1) {
item.moneyS = item.moneyS + '.0';
}
arr.push(item);
}
return arr;
}
// 返回赞助者名单副本,根据日期倒叙排列
function getCopyDonateListByDateSort() {
var arr = getCopyDonateList();
arr.sort(function(a, b){
var value = b.dateT - a.dateT;
if(value == 0) {
value = -1;
}
return value;
})
return arr;
}
// 返回赞助者名单副本,根据赞助金额倒叙排列
function getCopyDonateListByMoneySort() {
var arr = getCopyDonateList();
arr.sort(function(a, b){
var value = b.money - a.money;
if(value == 0) {
value = b.dateT - a.dateT;
}
return value;
})
return arr;
}
// console.log(getCopyDonateListByMoneySort());
// 赞助配置
var zzCfg = {
curr: 1, // 当前页
size: 15, // 页大小
pageCount: 0, // 页总数
dataCount: 0, // 数据总数
sort: 1, // 排序方式1=按照日期倒叙2=按照金额倒叙)
}
// 将赞助者名单渲染到页面上
function renderDonateTable() {
// 先清空旧数据
$('.zanzhu-table tbody').empty();
// 拼接 tr 字符串
var trArrStr = '';
var arr = zzCfg.sort == 1 ? getCopyDonateListByDateSort() : getCopyDonateListByMoneySort();
// 按照页参数进行遍历
let index = (zzCfg.curr - 1) * zzCfg.size; // 起始索引
let end = index + zzCfg.size; // 结束索引
if(end > arr.length) {
end = arr.length;
}
zzCfg.pageCount = parseInt(arr.length / zzCfg.size); // 页总数
if(arr.length % zzCfg.size != 0) {
zzCfg.pageCount++;
}
zzCfg.dataCount = arr.length; // 数据总数
// 开始拼接字符串
for (let i = index; i < end; i++) {
// console.log(item);
let item = arr[i];
let name = item.name;
if(item.link) {
name = '<a href="' + item.link + '" target="_blank">' + name + '</a>'
}
var trStr = `
<tr>
<td class="zanzhu-name">${name}</td>
<td class="zanzhu-money">¥ ${item.moneyS}</td>
<td>${item.msg}</td>
<td>${item.date}</td>
</tr>
`;
trArrStr += trStr;
}
// 渲染到 table 里
$('.zanzhu-table tbody').html(trArrStr);
// 重置分页信息
const pageInfo = `${zzCfg.curr}/${zzCfg.pageCount} 页(共${zzCfg.dataCount}位)`;
$('.zz-pageInfo').text(pageInfo);
}
// 带动画的渲染
function renderDonateTable2() {
// 模拟ajax的延时
loadingIcon('努力加载中...');
setTimeout(function() {
hideLoadingIcon(); // 隐藏掉转圈圈
renderDonateTable();
}, 300);
}
// renderDonateTable();
// 上一页
function prevPageRDT(){
if(zzCfg.curr <= 1) {
return layer.msg('达咩,不能再往前了');
}
zzCfg.curr--;
renderDonateTable2();
}
// 下一页
function nextPageRDT(){
if(zzCfg.curr >= zzCfg.pageCount) {
return layer.msg('嘿,到底了');
}
zzCfg.curr++;
renderDonateTable2();
}
// 绑定事件:切换排序
function onZanzhuSortClick(){
$('.zanzhu-sort-btn').click(function(){
// 切换 class
$('.zz-sort-native').removeClass('zz-sort-native');
$(this).addClass('zz-sort-native');
// 切换数据
zzCfg.curr = 1; // 重置为第1页
zzCfg.sort = parseInt($(this).attr('sort-value'));
renderDonateTable2();
})
}
onZanzhuSortClick();
// 读取 sa-token-donate 页数据为 json
function readDataToJson() {
var arr = [];
var trList = $('.zanzhu-box table tbody tr');
for (let tr of trList) {
var tdArr = $(tr).find('td');
var item = {
name: $(tdArr[0]).text(),
link: $(tdArr[0]).find('a').attr('href') || '',
money: parseFloat($(tdArr[1]).text().replaceAll('¥', '')),
msg: $(tdArr[2]).html(),
date: $(tdArr[3]).text(),
};
arr.push(item);
}
return arr;
}
function readDataToJsonStr() {
var arr = readDataToJson();
var str = '';
for (let item of arr) {
str = JSON.stringify(item) + ',' + str;
}
return str;
}