feat: 星之界打手端UI与提现/充值/排行榜等页面同步更新
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,288 +1,401 @@
|
||||
// 管事会员记录页面逻辑
|
||||
// 佣金记录(三合一:接单佣金 / 管事分佣 / 组长分红)
|
||||
import request from '../../utils/request.js';
|
||||
import { getOrderStatusText } from '../../utils/api-helper.js';
|
||||
import { isRoleStatusActive } from '../../utils/base-page.js';
|
||||
|
||||
// 每页数据条数常量 - 统一管理,方便修改
|
||||
const MEIYE_TIAOSHU = 50;
|
||||
const MEIYE_TIAOSHU_GUANSHI = 50;
|
||||
const PAGE_SIZE_DASHOU = 15;
|
||||
const PAGE_SIZE_ZUZHANG = 5;
|
||||
const REFRESH_CD = 2000;
|
||||
|
||||
const TAB_MAP = {
|
||||
dashou: 'dashou',
|
||||
commission: 'dashou',
|
||||
guanshi: 'guanshi',
|
||||
recharge: 'guanshi',
|
||||
zuzhang: 'zuzhang',
|
||||
fenhong: 'zuzhang',
|
||||
};
|
||||
|
||||
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 // 每页条数
|
||||
activeTab: 'dashou',
|
||||
tabs: [],
|
||||
|
||||
isDashou: false,
|
||||
isGuanshi: false,
|
||||
isZuzhang: false,
|
||||
|
||||
// 管事分佣统计
|
||||
yaoqingzongshu: 0,
|
||||
fenyongzonge: '0.00',
|
||||
chongzhiDashouShuliang: 0,
|
||||
|
||||
// 组长分红统计
|
||||
fenhongZonge: '0.00',
|
||||
yaoqingGuanshi: 0,
|
||||
fenhongCishu: 0,
|
||||
|
||||
// 接单佣金列表
|
||||
dashouCommissionList: [],
|
||||
dashouPage: 1,
|
||||
dashouHasMore: true,
|
||||
dashouTotal: 0,
|
||||
|
||||
// 管事分佣列表
|
||||
guanshiList: [],
|
||||
guanshiPage: 1,
|
||||
guanshiHasMore: false,
|
||||
guanshiTotal: 0,
|
||||
|
||||
// 组长分红列表
|
||||
zuzhangList: [],
|
||||
zuzhangPage: 1,
|
||||
zuzhangHasMore: true,
|
||||
zuzhangTotal: 0,
|
||||
|
||||
jiazaiZhong: false,
|
||||
jiazaiGengduo: false,
|
||||
shuaxinKezhi: false,
|
||||
cuowuTishi: '',
|
||||
|
||||
loadedTabs: {},
|
||||
scrollTop: 0,
|
||||
},
|
||||
|
||||
onLoad(options) {
|
||||
// 从全局变量获取管事数据
|
||||
this.huoquQuanjubianliang();
|
||||
|
||||
// 加载第一页数据
|
||||
this.jiazaiShuju(true);
|
||||
this._initRoles();
|
||||
const requested = TAB_MAP[(options.tab || options.type || '').trim()] || 'dashou';
|
||||
const tabs = this._buildTabs();
|
||||
const activeTab = tabs.find((t) => t.key === requested)?.key || tabs[0]?.key || 'dashou';
|
||||
|
||||
this.setData({ tabs, activeTab }, () => {
|
||||
if (this.data.isGuanshi) this.huoquQuanjubianliang();
|
||||
this._loadTab(activeTab, true);
|
||||
});
|
||||
},
|
||||
|
||||
onShow() {
|
||||
// 页面显示时检查全局变量是否有更新
|
||||
this.registerNotificationComponent();
|
||||
this.huoquQuanjubianliang();
|
||||
if (this.data.isGuanshi) 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() {
|
||||
registerNotificationComponent() {
|
||||
const app = getApp();
|
||||
const guanshiData = app.globalData.guanshi;
|
||||
|
||||
const notificationComp = this.selectComponent('#global-notification');
|
||||
if (notificationComp && notificationComp.showNotification) {
|
||||
app.globalData.globalNotification = {
|
||||
show: (data) => notificationComp.showNotification(data),
|
||||
hide: () => notificationComp.hideNotification(),
|
||||
};
|
||||
}
|
||||
},
|
||||
|
||||
_initRoles() {
|
||||
const isDashou = isRoleStatusActive(wx.getStorageSync('dashoustatus'));
|
||||
const isGuanshi = isRoleStatusActive(wx.getStorageSync('guanshistatus'));
|
||||
const isZuzhang = isRoleStatusActive(wx.getStorageSync('zuzhangstatus'));
|
||||
this.setData({
|
||||
isDashou: isDashou || (!isGuanshi && !isZuzhang),
|
||||
isGuanshi,
|
||||
isZuzhang,
|
||||
});
|
||||
},
|
||||
|
||||
_buildTabs() {
|
||||
const { isDashou, isGuanshi, isZuzhang } = this.data;
|
||||
const tabs = [];
|
||||
if (isDashou) tabs.push({ key: 'dashou', label: '接单佣金' });
|
||||
if (isGuanshi) tabs.push({ key: 'guanshi', label: '管事分佣' });
|
||||
if (isZuzhang) tabs.push({ key: 'zuzhang', label: '组长分红' });
|
||||
if (!tabs.length) tabs.push({ key: 'dashou', label: '接单佣金' });
|
||||
return tabs;
|
||||
},
|
||||
|
||||
onTabTap(e) {
|
||||
const key = e.currentTarget.dataset.key;
|
||||
if (key === this.data.activeTab) return;
|
||||
this.setData({ activeTab: key, cuowuTishi: '', scrollTop: 0 });
|
||||
if (!this.data.loadedTabs[key]) {
|
||||
this._loadTab(key, true);
|
||||
}
|
||||
},
|
||||
|
||||
huoquQuanjubianliang() {
|
||||
const guanshiData = getApp().globalData.guanshi;
|
||||
if (guanshiData) {
|
||||
this.setData({
|
||||
yaoqingzongshu: guanshiData.yaoqingzongshu || 0,
|
||||
fenyongzonge: guanshiData.fenyongzonge || '0.00'
|
||||
fenyongzonge: guanshiData.fenyongzonge || '0.00',
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
// 加载数据核心方法
|
||||
async jiazaiShuju(chushihua = false) {
|
||||
// 防止重复请求
|
||||
if (this.data.jiazaiZhong) return;
|
||||
|
||||
// 如果是初始化加载,重置分页
|
||||
if (chushihua) {
|
||||
_loadTab(tab, reset) {
|
||||
if (tab === 'dashou') return this._loadDashouCommission(reset);
|
||||
if (tab === 'guanshi') return this._loadGuanshi(reset);
|
||||
if (tab === 'zuzhang') return this._loadZuzhang(reset);
|
||||
return Promise.resolve();
|
||||
},
|
||||
|
||||
shuaxinShuju() {
|
||||
if (this.data.shuaxinKezhi) {
|
||||
wx.showToast({ title: `请等待${REFRESH_CD / 1000}秒`, icon: 'none' });
|
||||
return;
|
||||
}
|
||||
this.setData({ shuaxinKezhi: true, cuowuTishi: '' });
|
||||
this._loadTab(this.data.activeTab, true).finally(() => {
|
||||
setTimeout(() => this.setData({ shuaxinKezhi: false }), REFRESH_CD);
|
||||
});
|
||||
},
|
||||
|
||||
shanglaJiazai() {
|
||||
const { activeTab, jiazaiGengduo, jiazaiZhong, loadedTabs } = this.data;
|
||||
if (!loadedTabs[activeTab] || jiazaiGengduo || jiazaiZhong) return;
|
||||
|
||||
if (activeTab === 'dashou' && !this.data.dashouHasMore) return;
|
||||
if (activeTab === 'guanshi' && this.data.guanshiHasMore === false) return;
|
||||
if (activeTab === 'zuzhang' && !this.data.zuzhangHasMore) return;
|
||||
|
||||
this._loadTab(activeTab, false);
|
||||
},
|
||||
|
||||
chongshiJiazai() {
|
||||
this.setData({ cuowuTishi: '' });
|
||||
this._loadTab(this.data.activeTab, true);
|
||||
},
|
||||
|
||||
async _loadDashouCommission(reset) {
|
||||
if (this.data.jiazaiZhong || this.data.jiazaiGengduo) return;
|
||||
const page = reset ? 1 : this.data.dashouPage;
|
||||
if (!reset && !this.data.dashouHasMore) return;
|
||||
|
||||
this.setData({
|
||||
jiazaiZhong: reset,
|
||||
jiazaiGengduo: !reset,
|
||||
cuowuTishi: '',
|
||||
});
|
||||
|
||||
try {
|
||||
const res = await request({
|
||||
url: '/dingdan/dshqdingdan',
|
||||
method: 'POST',
|
||||
data: {
|
||||
zhuangtai_list: [3, 8],
|
||||
page,
|
||||
page_size: PAGE_SIZE_DASHOU,
|
||||
},
|
||||
});
|
||||
const body = res?.data;
|
||||
if (body && (body.code === 200 || body.code === 0)) {
|
||||
const raw = body.data?.list || [];
|
||||
const rows = raw.map((item) => {
|
||||
const amt = item.jine || item.dashou_fencheng || '0.00';
|
||||
const brief = (item.jieshao || '').trim();
|
||||
const title = brief
|
||||
? (brief.length > 18 ? `${brief.slice(0, 18)}…` : brief)
|
||||
: `订单 ${item.dingdan_id || ''}`;
|
||||
return {
|
||||
id: item.dingdan_id,
|
||||
title,
|
||||
time: item.wancheng_shijian || item.jiesuan_shijian || item.creat_time || getOrderStatusText(item.zhuangtai),
|
||||
amount: parseFloat(amt || 0).toFixed(2),
|
||||
};
|
||||
});
|
||||
const list = reset ? rows : [...this.data.dashouCommissionList, ...rows];
|
||||
const hasMore = body.data?.has_more ?? raw.length >= PAGE_SIZE_DASHOU;
|
||||
const loadedTabs = { ...this.data.loadedTabs, dashou: true };
|
||||
this.setData({
|
||||
dashouCommissionList: list,
|
||||
dashouPage: reset ? 2 : page + 1,
|
||||
dashouHasMore: hasMore,
|
||||
dashouTotal: body.data?.total || list.length,
|
||||
loadedTabs,
|
||||
});
|
||||
} else {
|
||||
this.setData({ cuowuTishi: body?.msg || '数据加载失败' });
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('接单佣金加载失败', e);
|
||||
this.setData({ cuowuTishi: '网络错误,请检查网络连接' });
|
||||
} finally {
|
||||
this.setData({ jiazaiZhong: false, jiazaiGengduo: false });
|
||||
}
|
||||
},
|
||||
|
||||
async _loadGuanshi(reset) {
|
||||
if (this.data.jiazaiZhong || this.data.jiazaiGengduo) return;
|
||||
|
||||
if (reset) {
|
||||
this.setData({
|
||||
dangqianYe: 1,
|
||||
meiyouGengduo: false,
|
||||
dashouList: [],
|
||||
zongTiaoshu: 0,
|
||||
chongzhiDashouShuliang: 0
|
||||
guanshiPage: 1,
|
||||
guanshiHasMore: false,
|
||||
guanshiList: [],
|
||||
guanshiTotal: 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 });
|
||||
if (this.data.guanshiList.length > 0 && this.data.guanshiList.length < MEIYE_TIAOSHU_GUANSHI) {
|
||||
this.setData({ guanshiHasMore: false });
|
||||
return;
|
||||
}
|
||||
|
||||
// 如果数据量已经达到总条数,则不请求
|
||||
if (this.data.dashouList.length >= this.data.zongTiaoshu && this.data.zongTiaoshu > 0) {
|
||||
this.setData({ meiyouGengduo: true });
|
||||
if (this.data.guanshiList.length >= this.data.guanshiTotal && this.data.guanshiTotal > 0) {
|
||||
this.setData({ guanshiHasMore: false });
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// 设置加载状态
|
||||
|
||||
const dangqianYe = reset ? 1 : this.data.guanshiPage;
|
||||
this.setData({
|
||||
jiazaiZhong: chushihua ? true : false,
|
||||
jiazaiGengduo: !chushihua ? true : false,
|
||||
cuowuTishi: ''
|
||||
jiazaiZhong: reset,
|
||||
jiazaiGengduo: !reset,
|
||||
cuowuTishi: '',
|
||||
});
|
||||
|
||||
|
||||
try {
|
||||
const { dangqianYe } = this.data;
|
||||
|
||||
// 严格按照您的request规范调用
|
||||
const res = await request({
|
||||
url: '/shangpin/fenhonghq',
|
||||
method: 'POST',
|
||||
data: {
|
||||
page: dangqianYe,
|
||||
page_size: MEIYE_TIAOSHU // 使用统一常量
|
||||
}
|
||||
data: { page: dangqianYe, page_size: MEIYE_TIAOSHU_GUANSHI },
|
||||
});
|
||||
|
||||
// 处理返回数据
|
||||
|
||||
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;
|
||||
|
||||
// 更新数据
|
||||
const newList = this.chuliTouxiangURL(data.list || []);
|
||||
const hasMore = newList.length === MEIYE_TIAOSHU_GUANSHI;
|
||||
const loadedTabs = { ...this.data.loadedTabs, guanshi: true };
|
||||
this.setData({
|
||||
dashouList: chushihua ? processedList : [...this.data.dashouList, ...processedList],
|
||||
zongTiaoshu: total,
|
||||
guanshiList: reset ? newList : [...this.data.guanshiList, ...newList],
|
||||
guanshiTotal: data.total || 0,
|
||||
chongzhiDashouShuliang: data.chongzhi_dashou_shuliang || 0,
|
||||
meiyouGengduo: !hasMoreData,
|
||||
dangqianYe: chushihua ? 2 : this.data.dangqianYe + 1
|
||||
guanshiHasMore: hasMore,
|
||||
guanshiPage: reset ? 2 : dangqianYe + 1,
|
||||
loadedTabs,
|
||||
});
|
||||
|
||||
// 如果数据为空,显示空状态
|
||||
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
|
||||
});
|
||||
this.setData({ cuowuTishi: res.data.msg || '数据加载失败' });
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('加载数据失败:', error);
|
||||
this.setData({
|
||||
cuowuTishi: '网络错误,请检查网络连接'
|
||||
});
|
||||
wx.showToast({
|
||||
title: '网络错误',
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
});
|
||||
} catch (e) {
|
||||
console.error('管事分佣加载失败', e);
|
||||
this.setData({ cuowuTishi: '网络错误,请检查网络连接' });
|
||||
} finally {
|
||||
this.setData({
|
||||
jiazaiZhong: false,
|
||||
jiazaiGengduo: false
|
||||
});
|
||||
this.setData({ jiazaiZhong: false, jiazaiGengduo: false });
|
||||
}
|
||||
},
|
||||
|
||||
async _loadZuzhang(reset) {
|
||||
if (this.data.jiazaiZhong || this.data.jiazaiGengduo) return;
|
||||
const page = reset ? 1 : this.data.zuzhangPage;
|
||||
if (!reset && !this.data.zuzhangHasMore) return;
|
||||
|
||||
this.setData({
|
||||
jiazaiZhong: reset,
|
||||
jiazaiGengduo: !reset,
|
||||
cuowuTishi: '',
|
||||
});
|
||||
|
||||
try {
|
||||
const res = await request({
|
||||
url: '/shangpin/zuzhangfenhong',
|
||||
method: 'POST',
|
||||
data: { page, page_size: PAGE_SIZE_ZUZHANG },
|
||||
});
|
||||
|
||||
if (res.data.code === 200) {
|
||||
const data = res.data.data || {};
|
||||
const processedList = this.processZuzhangList(data.list || []);
|
||||
const loadedTabs = { ...this.data.loadedTabs, zuzhang: true };
|
||||
if (reset) {
|
||||
this.setData({
|
||||
fenhongZonge: data.fenhong_zonge || '0.00',
|
||||
yaoqingGuanshi: data.yaoqing_guanshi || 0,
|
||||
fenhongCishu: data.fenhong_cishu || 0,
|
||||
zuzhangList: processedList,
|
||||
zuzhangTotal: data.total || 0,
|
||||
zuzhangPage: 2,
|
||||
zuzhangHasMore: processedList.length === PAGE_SIZE_ZUZHANG,
|
||||
loadedTabs,
|
||||
});
|
||||
} else {
|
||||
const newList = [...this.data.zuzhangList, ...processedList];
|
||||
this.setData({
|
||||
zuzhangList: newList,
|
||||
zuzhangPage: page + 1,
|
||||
zuzhangHasMore: processedList.length === PAGE_SIZE_ZUZHANG,
|
||||
loadedTabs,
|
||||
});
|
||||
}
|
||||
} else {
|
||||
this.setData({ cuowuTishi: res.data.msg || '数据加载失败' });
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('组长分红加载失败', e);
|
||||
this.setData({ cuowuTishi: '网络错误,请检查网络连接' });
|
||||
} finally {
|
||||
this.setData({ jiazaiZhong: false, jiazaiGengduo: false });
|
||||
}
|
||||
},
|
||||
|
||||
// 处理头像URL拼接
|
||||
chuliTouxiangURL(list) {
|
||||
const app = getApp();
|
||||
const ossUrl = app.globalData.ossImageUrl || '';
|
||||
|
||||
return list.map(item => {
|
||||
// 确保有头像URL,如果没有则使用默认头像
|
||||
return list.map((item) => {
|
||||
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')}`;
|
||||
const date = new Date(parseInt(shijian, 10));
|
||||
shijian = `${date.getMonth() + 1}月${date.getDate()}日 ${String(date.getHours()).padStart(2, '0')}:${String(date.getMinutes()).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 = `${dateObj.getMonth() + 1}月${dateObj.getDate()}日 ${String(dateObj.getHours()).padStart(2, '0')}:${String(dateObj.getMinutes()).padStart(2, '0')}`;
|
||||
} catch (err) {
|
||||
shijian = shijian.substring(0, 10);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
...item,
|
||||
touxiangUrl: touxiangUrl || '/images/default-avatar.png',
|
||||
shijian: shijian,
|
||||
fenhong: parseFloat(item.fenhong || 0).toFixed(2)
|
||||
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);
|
||||
});
|
||||
processZuzhangList(list) {
|
||||
const app = getApp();
|
||||
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),
|
||||
}));
|
||||
},
|
||||
|
||||
// 上拉加载更多
|
||||
shanglaJiazai() {
|
||||
// 没有更多数据时不再请求
|
||||
if (this.data.meiyouGengduo) {
|
||||
wx.showToast({
|
||||
title: '已经到底了',
|
||||
icon: 'none',
|
||||
duration: 1000
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// 如果正在加载,不再请求
|
||||
if (this.data.jiazaiGengduo || this.data.jiazaiZhong) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.jiazaiShuju(false);
|
||||
getFullUrl(relativePath, ossUrl, defaultUrl) {
|
||||
if (!relativePath) return defaultUrl;
|
||||
if (relativePath.startsWith('http')) return relativePath;
|
||||
return ossUrl + (relativePath.startsWith('/') ? relativePath : `/${relativePath}`) || defaultUrl;
|
||||
},
|
||||
|
||||
// 重试加载
|
||||
chongshiJiazai() {
|
||||
this.setData({
|
||||
cuowuTishi: '',
|
||||
meiyouGengduo: false
|
||||
});
|
||||
this.jiazaiShuju(true);
|
||||
}
|
||||
});
|
||||
formatTime(timestamp) {
|
||||
if (!timestamp) return '';
|
||||
try {
|
||||
const date = new Date(timestamp);
|
||||
return `${date.getMonth() + 1}月${date.getDate()}日 ${String(date.getHours()).padStart(2, '0')}:${String(date.getMinutes()).padStart(2, '0')}`;
|
||||
} catch (e) {
|
||||
return String(timestamp).substring(0, 10) || '';
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user