xg-project-library/js/common.js

201 lines
7.0 KiB
JavaScript
Raw Normal View History

2024-12-10 07:51:34 +00:00
const projectBaseURL = "https://program.gter.net"
2024-11-13 11:16:00 +00:00
2024-10-31 11:03:26 +00:00
if (["localhost", "127.0.0.1"].includes(location.hostname)) {
axios.defaults.headers = {
2024-11-25 10:36:10 +00:00
Authorization: "97d1c7b2fe6dec05aaf52c0f3b9130e8",
2024-10-31 11:03:26 +00:00
}
}
function $ajax(url) {
var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}
2024-11-04 08:40:52 +00:00
url = url.indexOf("https://") > -1 ? url : projectBaseURL + url
2024-10-31 11:03:26 +00:00
2024-11-15 10:59:31 +00:00
if (["localhost", "127.0.0.1"].includes(location.hostname)) data["authorization"] = "97d1c7b2fe6dec05aaf52c0f3b9130e8"
2024-10-31 11:03:26 +00:00
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
2024-11-12 08:07:32 +00:00
if (data.code == 401) {
2024-11-19 06:25:46 +00:00
openShowWindow()
2024-11-12 08:07:32 +00:00
reject()
}
2024-11-14 10:30:12 +00:00
if (data.code == 201) creationAlertBox("error", data.message || data.msg)
2024-10-31 11:03:26 +00:00
resolve(data)
})
.catch(err => {
2024-11-19 06:25:46 +00:00
if (err.response?.status == 401) openShowWindow()
2024-10-31 11:03:26 +00:00
})
})
}
function $ajaxget(url, data) {
2024-11-12 08:07:32 +00:00
if (!data) data = {}
2024-11-15 10:59:31 +00:00
// data["authorization"] = "97d1c7b2fe6dec05aaf52c0f3b9130e8"
if (["localhost", "127.0.0.1"].includes(location.hostname)) data["authorization"] = "97d1c7b2fe6dec05aaf52c0f3b9130e8"
2024-11-11 10:43:41 +00:00
2024-11-04 08:40:52 +00:00
url = url.indexOf("https://") > -1 ? url : projectBaseURL + url
2024-10-31 11:03:26 +00:00
url += objectToQueryString(data)
2024-12-16 11:02:38 +00:00
return new Promise((resolve, reject) => {
2024-10-31 11:03:26 +00:00
axios
.get(
url,
{},
{
emulateJSON: true,
withCredentials: true,
}
)
2024-12-16 11:02:38 +00:00
.then(res => {
2024-10-31 11:03:26 +00:00
var data = typeof res.data == "string" ? JSON.parse(res.data) : res.data
2024-12-16 10:51:30 +00:00
2024-11-12 08:07:32 +00:00
if (data.code == 401) {
2024-11-19 06:25:46 +00:00
openShowWindow()
2024-11-12 08:07:32 +00:00
reject()
}
2024-11-14 10:30:12 +00:00
if (data.code == 201) creationAlertBox("error", data.message || data.msg)
2024-11-14 03:56:17 +00:00
2024-10-31 11:03:26 +00:00
resolve(data)
})
.catch(error => {
2024-12-16 11:05:39 +00:00
console.log("resolve", resolve)
2024-12-16 11:07:09 +00:00
// if (error.response?.status == 401) openShowWindow()
2024-12-16 11:04:58 +00:00
resolve("")
2024-10-31 11:03:26 +00:00
})
})
}
function randomString(n) {
let str = "abcdefghijklmnopqrstuvwxyz9876543210"
let tmp = "",
i = 0,
l = str.length
for (i = 0; i < n; i++) {
tmp += str.charAt(Math.floor(Math.random() * l))
}
return tmp
}
function formatNumberWithSpaces(number) {
if (typeof number != "string") number = ""
return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")
}
// 将一个JavaScript对象转换为路由参数的形式将键值对转换为key=value的形式
function objectToQueryString(obj = {}) {
const queryString = Object.keys(obj)
.map(key => encodeURIComponent(key) + "=" + encodeURIComponent(obj[key]))
.join("&")
return queryString ? "?" + queryString : ""
}
2024-11-04 08:24:44 +00:00
2024-11-11 10:39:40 +00:00
function decodeKey(encrypted, key) {
2024-11-04 08:24:44 +00:00
return new Promise((resolve, reject) => {
try {
const encryptedData = CryptoJS.enc.Base64.parse(encrypted)
2024-11-05 11:00:36 +00:00
const decrypted = CryptoJS.AES.decrypt(
{
ciphertext: encryptedData,
},
2024-11-08 07:52:42 +00:00
CryptoJS.enc.Utf8.parse(key),
2024-11-05 11:00:36 +00:00
{
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7,
}
)
2024-11-04 08:24:44 +00:00
const text = JSON.parse(decrypted.toString(CryptoJS.enc.Utf8))
resolve(text)
} catch (error) {
reject()
}
})
2024-11-05 11:00:36 +00:00
}
function getBaseData() {
return new Promise((resolve, reject) => {
2024-11-28 09:06:45 +00:00
// const storedTime = localStorage.getItem("dataTimestamp")
// const storedData = localStorage.getItem("basicData")
// const currentTime = new Date().getTime()
// const timeDiff = currentTime - parseInt(storedTime)
// if (storedTime && storedData && timeDiff <= 5 * 60 * 1000) {
// // 在5分钟内使用本地存储的数据
// const basicData = JSON.parse(storedData)
// // 处理数据
// resolve(basicData)
// return
// }
2024-11-25 10:36:37 +00:00
2024-11-12 09:53:45 +00:00
$ajaxget("/api/home/basicData").then(res => {
2024-11-05 11:00:36 +00:00
if (res.code != 200) return
const data = res.data
2024-11-15 04:12:55 +00:00
const user = data.user
2024-11-05 11:00:36 +00:00
const basicData = {
contrastcount: data.contrastcount || 0,
university: data.university,
discipline: data.discipline,
rankings: data.rankings,
encodekey: data.encodekey,
2024-11-15 04:12:55 +00:00
user,
}
2024-11-29 10:39:47 +00:00
// if (user.uin > 0) {
// localStorage.setItem("dataTimestamp", new Date().getTime())
// localStorage.setItem("basicData", JSON.stringify(basicData))
// } else {
// localStorage.removeItem("basicData")
// localStorage.removeItem("dataTimestamp")
// }
2024-11-05 11:00:36 +00:00
resolve(basicData)
})
})
}
2024-11-19 06:25:46 +00:00
function openShowWindow() {
showWindow("login", "https://passport.gter.net/login/ajax", "get", -1, { cover: true })
}
2024-11-21 06:39:38 +00:00
2024-11-21 07:04:13 +00:00
function strtimeago(dateStr) {
2024-11-21 06:39:38 +00:00
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 (diffInYears >= 1) result = Math.floor(diffInYears) + "年前"
else if (diffInMonths >= 1) result = Math.floor(diffInMonths) + "个月前"
} 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
}