与牧同行-小程序用户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

115 lines
3.2 KiB

import http from '../../../utils/api';
const baseUrl = require('../../../utils/baseUrl');
Page({
/**
* 页面的初始数据
*/
data: {
baseUrl: baseUrl,
chatSessions: [] // 存储聊天列表数据
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
this.getsessions();
},
// 获取聊天列表
getsessions() {
http.sessions({
data: {},
success: (res) => {
console.log('接口返回数据:', res);
if (res.code === 200 && Array.isArray(res.data)) {
// 预处理数据:为每条数据添加格式化后的时间字段
const formattedSessions = res.data.map(item => {
return {
...item,
formattedTime: this.formatTime(item.lastMessageTime) // 新增字段,在JS里直接格式化好
};
});
this.setData({
chatSessions: formattedSessions
});
} else {
console.error('数据格式错误或接口异常', res);
}
},
fail: (err) => {
console.error('请求失败', err);
}
});
},
// 格式化时间显示 - 兼容多种格式
formatTime(timeValue) {
console.log('时间原始值:', timeValue);
if (!timeValue) return '';
let date;
// 判断是否是时间戳(数字或数字字符串)
if (typeof timeValue === 'number' || (typeof timeValue === 'string' && /^\d+$/.test(timeValue))) {
// 如果是时间戳,直接使用
date = new Date(Number(timeValue));
}
// 判断是否是日期字符串
else if (typeof timeValue === 'string') {
// 尝试解析字符串日期
// 将 '2026-03-06 15:50:11' 替换为 '2026/03/06 15:50:11' (兼容 iOS)
const formattedStr = timeValue.replace(/-/g, '/');
date = new Date(formattedStr);
}
else {
console.log('未知的时间格式:', timeValue);
return '';
}
// 检查日期是否有效
if (isNaN(date.getTime())) {
console.log('无效的日期:', timeValue);
return '';
}
const now = new Date();
const today = new Date(now.getFullYear(), now.getMonth(), now.getDate()).getTime();
const yesterday = today - 24 * 60 * 60 * 1000;
const targetDate = new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime();
if (targetDate === today) {
// 今天: 显示 时:分
const hours = date.getHours().toString().padStart(2, '0');
const minutes = date.getMinutes().toString().padStart(2, '0');
return `${hours}:${minutes}`;
} else if (targetDate === yesterday) {
return '昨天';
} else {
// 更早: 显示 月-日
const month = (date.getMonth() + 1).toString().padStart(2, '0');
const day = date.getDate().toString().padStart(2, '0');
return `${month}-${day}`;
}
},
// 跳转到聊天详情页面
goToChat(e) {
console.log(e);
const id = e.currentTarget.dataset.id
wx.navigateTo({
url: `/pagesA/pages/expertChat/expertChat?id=${id}`
});
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
this.getsessions();
wx.stopPullDownRefresh();
}
});