diff --git a/js/common.js b/js/common.js index 4fe4c42..35ec186 100644 --- a/js/common.js +++ b/js/common.js @@ -1,16 +1,16 @@ -const projectBaseURL = "https://program.gter.net" +const projectBaseURL = "https://program.gter.net"; if (["localhost", "127.0.0.1"].includes(location.hostname)) { axios.defaults.headers = { Authorization: "97d1c7b2fe6dec05aaf52c0f3b9130e8", - } + }; } function $ajax(url) { - var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {} - url = url.indexOf("https://") > -1 ? url : projectBaseURL + url + var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + url = url.indexOf("https://") > -1 ? url : projectBaseURL + url; - if (["localhost", "127.0.0.1"].includes(location.hostname)) data["authorization"] = "97d1c7b2fe6dec05aaf52c0f3b9130e8" + if (["localhost", "127.0.0.1"].includes(location.hostname)) data["authorization"] = "97d1c7b2fe6dec05aaf52c0f3b9130e8"; return new Promise(function (resolve, reject) { axios @@ -19,88 +19,87 @@ function $ajax(url) { withCredentials: true, }) .then(function (res) { - var data = typeof res.data == "string" ? JSON.parse(res.data) : res.data + var data = typeof res.data == "string" ? JSON.parse(res.data) : res.data; if (data.code == 401) { - openShowWindow() - reject() + openShowWindow(); + reject(); } - if (data.code == 201) creationAlertBox("error", data.message || data.msg) - resolve(data) + if (data.code == 201) creationAlertBox("error", data.message || data.msg); + resolve(data); }) - .catch(err => { - if (err.response?.status == 401) openShowWindow() - }) - }) + .catch((err) => { + if (err.response?.status == 401) openShowWindow(); + }); + }); } function $ajaxget(url, data) { - if (!data) data = {} + if (!data) data = {}; // data["authorization"] = "97d1c7b2fe6dec05aaf52c0f3b9130e8" - if (["localhost", "127.0.0.1"].includes(location.hostname)) data["authorization"] = "97d1c7b2fe6dec05aaf52c0f3b9130e8" + if (["localhost", "127.0.0.1"].includes(location.hostname)) data["authorization"] = "97d1c7b2fe6dec05aaf52c0f3b9130e8"; - url = url.indexOf("https://") > -1 ? url : projectBaseURL + url - url += objectToQueryString(data) + url = url.indexOf("https://") > -1 ? url : projectBaseURL + url; + url += objectToQueryString(data); return new Promise((resolve, reject) => { axios .get( url, - {}, { emulateJSON: true, withCredentials: true, } ) - .then(res => { - var data = typeof res.data == "string" ? JSON.parse(res.data) : res.data + .then((res) => { + var data = typeof res.data == "string" ? JSON.parse(res.data) : res.data; if (data.code == 401) { - openShowWindow() - reject() + openShowWindow(); + reject(); } - if (data.code == 201) creationAlertBox("error", data.message || data.msg) + if (data.code == 201) creationAlertBox("error", data.message || data.msg); - resolve(data) + resolve(data); }) - .catch(error => { + .catch((error) => { // console.log("resolve", resolve) // if (error.response?.status == 401) openShowWindow() - resolve("") - }) - }) + resolve(""); + }); + }); } function randomString(n) { - let str = "abcdefghijklmnopqrstuvwxyz9876543210" + let str = "abcdefghijklmnopqrstuvwxyz9876543210"; let tmp = "", i = 0, - l = str.length + l = str.length; for (i = 0; i < n; i++) { - tmp += str.charAt(Math.floor(Math.random() * l)) + tmp += str.charAt(Math.floor(Math.random() * l)); } - return tmp + return tmp; } function formatNumberWithSpaces(number) { - if (typeof number != "string") number = "" - return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + 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 : "" + .map((key) => encodeURIComponent(key) + "=" + encodeURIComponent(obj[key])) + .join("&"); + return queryString ? "?" + queryString : ""; } function decodeKey(encrypted, key) { return new Promise((resolve, reject) => { try { - if (typeof encrypted!= "string") resolve(encrypted) - - const encryptedData = CryptoJS.enc.Base64.parse(encrypted) + if (typeof encrypted != "string") resolve(encrypted); + + const encryptedData = CryptoJS.enc.Base64.parse(encrypted); const decrypted = CryptoJS.AES.decrypt( { @@ -111,14 +110,14 @@ function decodeKey(encrypted, key) { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7, } - ) + ); - const text = JSON.parse(decrypted.toString(CryptoJS.enc.Utf8)) - resolve(text) + const text = JSON.parse(decrypted.toString(CryptoJS.enc.Utf8)); + resolve(text); } catch (error) { - reject() + reject(); } - }) + }); } function getBaseData() { @@ -135,10 +134,10 @@ function getBaseData() { // return // } - $ajaxget("/api/home/basicData").then(res => { - if (res.code != 200) return - const data = res.data - const user = data.user + $ajaxget("/api/home/basicData").then((res) => { + if (res.code != 200) return; + const data = res.data; + const user = data.user; const basicData = { contrastcount: data.contrastcount || 0, university: data.university, @@ -146,7 +145,7 @@ function getBaseData() { rankings: data.rankings, encodekey: data.encodekey, user, - } + }; // if (user.uin > 0) { // localStorage.setItem("dataTimestamp", new Date().getTime()) // localStorage.setItem("basicData", JSON.stringify(basicData)) @@ -154,57 +153,57 @@ function getBaseData() { // localStorage.removeItem("basicData") // localStorage.removeItem("dataTimestamp") // } - resolve(basicData) - }) - }) + resolve(basicData); + }); + }); } function openShowWindow() { - showWindow("login", "https://passport.gter.net/login/ajax", "get", -1, { cover: true }) + showWindow("login", "https://passport.gter.net/login/ajax", "get", -1, { cover: true }); } function strtimeago(dateStr) { - 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 "刚刚" + 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 + 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 + const diffInMilliseconds = now - objectTime; + const diffInYears = diffInMilliseconds / (1000 * 60 * 60 * 24 * 365); + const diffInMonths = diffInYears * 12; - let result = "" + 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() + 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 = "刚刚" + 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 + return result; } const rankingKey = { "Shanghai Ranking": "软科", "Times Higher Education": "泰晤士", - "times": "泰晤士", - "USNEWS": "U.S. News", + times: "泰晤士", + USNEWS: "U.S. News", "US News": "U.S. News", -} \ No newline at end of file +};