feat: 新增详情页和个人主页功能及组件优化
- 添加详情页(details.html)和个人主页(homepage-me.html)的完整功能实现 - 新增多个图片资源用于UI展示 - 优化item-head、item-bottom等组件的数据绑定和交互逻辑 - 添加公共工具函数(public.js)包括时间处理和网络请求 - 完善CSS样式文件,增加响应式布局和交互效果 - 实现用户信息展示、帖子详情、相关帖子推荐等功能模块 - 添加签到、投币等交互功能 - 优化组件模板结构和数据传递方式
This commit is contained in:
150
js/public.js
Normal file
150
js/public.js
Normal file
@@ -0,0 +1,150 @@
|
||||
const forumBaseURL = "https://api.gter.net";
|
||||
axios.defaults.withCredentials = true;
|
||||
|
||||
// 导出ajax函数
|
||||
const ajax = (url) => {
|
||||
var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
||||
url = url.indexOf("https://") > -1 ? url : forumBaseURL + url;
|
||||
return new Promise(function (resolve, reject) {
|
||||
axios
|
||||
.post(url, data, {
|
||||
emulateJSON: true,
|
||||
withCredentials: true,
|
||||
})
|
||||
.then(function (res) {
|
||||
var data = typeof res.data == "string" ? JSON.parse(res.data) : res.data;
|
||||
|
||||
if (data.code == 401) {
|
||||
// 需要登录
|
||||
showWindow("login", "https://passport.gter.net/login/ajax", "get", -1, {
|
||||
cover: true,
|
||||
});
|
||||
reject();
|
||||
}
|
||||
resolve(data);
|
||||
})
|
||||
.catch((err) => {
|
||||
if (err.response.status == 401)
|
||||
showWindow("login", "https://passport.gter.net/login/ajax", "get", -1, {
|
||||
cover: true,
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// 导出ajaxget函数
|
||||
const ajaxget = (url) => {
|
||||
url = url.indexOf("https://") > -1 ? url : forumBaseURL + url;
|
||||
return new Promise(function (resolve, reject) {
|
||||
axios
|
||||
.get(
|
||||
url,
|
||||
{},
|
||||
{
|
||||
emulateJSON: true,
|
||||
withCredentials: true,
|
||||
}
|
||||
)
|
||||
.then(function (res) {
|
||||
var data = typeof res.data == "string" ? JSON.parse(res.data) : res.data;
|
||||
if (data.code == 401) {
|
||||
// 需要登录
|
||||
showWindow("login", "https://passport.gter.net/login/ajax", "get", -1, {
|
||||
cover: true,
|
||||
});
|
||||
reject();
|
||||
}
|
||||
resolve(data);
|
||||
})
|
||||
.catch((error) => {
|
||||
reject(error);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
const strtimeago = (dateStr, type = 1) => {
|
||||
dateStr = dateStr + ""; // 反之传入的不是字符串
|
||||
dateStr = dateStr.replaceAll("-", "/"); // 修改格式
|
||||
var minute = 1000 * 60; // 把分,时,天,周,半个月,一个月用毫秒表示
|
||||
var hour = minute * 60;
|
||||
var day = hour * 24;
|
||||
var now = new Date().getTime(); // 获取当前时间毫秒
|
||||
let objectTime = new Date(dateStr).getTime();
|
||||
var diffValue = now - objectTime; // 时间差
|
||||
if (diffValue < 0) return "刚刚";
|
||||
|
||||
var minC = diffValue / minute; // 计算时间差的分,时,天,周,月
|
||||
var hourC = diffValue / hour;
|
||||
var dayC = diffValue / day;
|
||||
|
||||
const diffInMilliseconds = now - objectTime;
|
||||
const diffInYears = diffInMilliseconds / (1000 * 60 * 60 * 24 * 365);
|
||||
const diffInMonths = diffInYears * 12;
|
||||
|
||||
let result = "";
|
||||
if (dayC >= 7) {
|
||||
var datetime = new Date(dateStr);
|
||||
var Nyear = datetime.getFullYear();
|
||||
var Nmonth = datetime.getMonth() + 1 < 10 ? "0" + (datetime.getMonth() + 1) : datetime.getMonth() + 1;
|
||||
var Ndate = datetime.getDate() < 10 ? "0" + datetime.getDate() : datetime.getDate();
|
||||
var Nhour = datetime.getHours() < 10 ? "0" + datetime.getHours() : datetime.getHours();
|
||||
var Nmin = datetime.getMinutes() < 10 ? "0" + datetime.getMinutes() : datetime.getMinutes();
|
||||
if (type == 4) {
|
||||
if (new Date().getFullYear() !== Nyear) result = `${Nyear}年${Nmonth}月${Ndate}日`;
|
||||
else result = `${Nmonth}月${Ndate}日 ${Nhour}:${Nmin}`;
|
||||
}
|
||||
if (type == 1) result = Nyear + "-" + Nmonth + "-" + Ndate;
|
||||
if (type == 2) {
|
||||
result = `${Nmonth}月${Ndate}日 ${Nhour}:${Nmin}`;
|
||||
if (new Date().getFullYear() !== Nyear) result = `${Nyear}年${result}`;
|
||||
}
|
||||
if (type == 3) {
|
||||
if (diffInYears >= 1) result = Math.floor(diffInYears) + "年前";
|
||||
else if (diffInMonths >= 1) result = Math.floor(diffInMonths) + "个月前";
|
||||
else result = parseInt(dayC) + "天前";
|
||||
}
|
||||
} else if (dayC >= 1) result = parseInt(dayC) + "天前";
|
||||
else if (hourC >= 1 && hourC <= 24) result = parseInt(hourC) + "小时前";
|
||||
else if (minC >= 1 && minC <= 60) result = parseInt(minC) + "分钟前";
|
||||
else result = "刚刚";
|
||||
|
||||
return result;
|
||||
};
|
||||
|
||||
const timeago = (dateTimeStamp, type = 1) => {
|
||||
if (!dateTimeStamp) return "刚刚";
|
||||
|
||||
// 判断位数
|
||||
if (dateTimeStamp.toString().length !== 13) dateTimeStamp = dateTimeStamp * 1000;
|
||||
var minute = 1000 * 60; //把分,时,天,周,半个月,一个月用毫秒表示
|
||||
var hour = minute * 60;
|
||||
var day = hour * 24;
|
||||
var now = new Date().getTime(); //获取当前时间毫秒
|
||||
var diffValue = now - dateTimeStamp; //时间差
|
||||
if (diffValue < 0) return "刚刚";
|
||||
|
||||
var minC = diffValue / minute; //计算时间差的分,时,天,周,月
|
||||
var hourC = diffValue / hour;
|
||||
var dayC = diffValue / day;
|
||||
|
||||
let result = "";
|
||||
if (dayC >= 7) {
|
||||
var datetime = new Date(dateTimeStamp);
|
||||
var Nyear = datetime.getFullYear();
|
||||
var Nmonth = datetime.getMonth() + 1 < 10 ? "0" + (datetime.getMonth() + 1) : datetime.getMonth() + 1;
|
||||
var Ndate = datetime.getDate() < 10 ? "0" + datetime.getDate() : datetime.getDate();
|
||||
var Nhour = datetime.getHours() < 10 ? "0" + datetime.getHours() : datetime.getHours();
|
||||
var Nmin = datetime.getMinutes() < 10 ? "0" + datetime.getMinutes() : datetime.getMinutes();
|
||||
|
||||
if (type == 1) result = Nyear + "-" + Nmonth + "-" + Ndate;
|
||||
if (type == 2) {
|
||||
result = `${Nmonth}月${Ndate}日 ${Nhour}:${Nmin}`;
|
||||
if (new Date().getFullYear() !== Nyear) result = `${Nyear}年${result}`;
|
||||
}
|
||||
} else if (dayC >= 1) result = parseInt(dayC) + "天前";
|
||||
else if (hourC >= 1 && hourC <= 24) result = parseInt(hourC) + "小时前";
|
||||
else if (minC >= 1 && minC <= 60) result = parseInt(minC) + "分钟前";
|
||||
else result = "刚刚";
|
||||
|
||||
return result;
|
||||
};
|
||||
Reference in New Issue
Block a user