// 专门写一些 在不同页面的公共方法 const util = require('./util') const CryptoJS = require("./crypto-js.js"); // 列表页 的 公共 点击获取 广告详情 function getOfferAdDetails(id) { util.wxpost('/miniprogramApi/offer/ads/details', { id }).then(res => { if (res.code != 200) return let data = res.data if (!data.url) return let url = encodeURIComponent(data.url) wx.navigateTo({ url: `/pages/webview/webview?url=${url}`, }) }) } // 公共跳转页面 function goPage(url) { wx.navigateTo({ url, fail: function (err) { if (err.errMsg = "navigateTo:fail webview count limit exceed") { wx.redirectTo({ url, }) } } }) } // function toast(title) { wx.showToast({ icon: "none", title, }) } // isindex 是经过首页要更新一下 function xgBasicData(that, app, isindex = false) { return new Promise(resolve => { if (app.globalData.basicDataState && !isindex) { const basicData = app.globalData.basicData || {} resolve(basicData) return } util.wxget("/api/project.home/basicData").then(res => { if (res.code != 200) return const data = res.data const basicData = { contrastcount: data.contrastcount || 0, university: data.university, discipline: data.discipline, rankings: data.rankings, encodekey: data.encodekey, } resolve(basicData) app.globalData.basicData = basicData app.globalData.basicDataState = true }) }) } function formatNumberWithSpaces(number) { if (typeof number != 'string') number = '' return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); } function decodeKey(encrypted, key) { return new Promise((resolve, reject) => { try { const app = getApp() var decodekey = app.globalData.basicData.encodekey const encryptedData = CryptoJS.enc.Base64.parse(encrypted) const decrypted = CryptoJS.AES.decrypt({ ciphertext: encryptedData }, CryptoJS.enc.Utf8.parse(decodekey), { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7, }) const text = JSON.parse(decrypted.toString(CryptoJS.enc.Utf8)) resolve(text) } catch (error) { reject() } }) } const scoresList = scores => { return scores .map(element => { let text = "" if (["GMAT", "GMAT Focus Edition"].includes(element.name_zh)) text = `Verbal Reasoning ${element.verbal_reasoning} 分以上` else if (["IELTS Academic", "TOEFL-iBT", "TOEFL-pBT"].includes(element.name_en)) { const fields = { total: "总分", reading: "阅读", speaking: "口语", writing: "写作", listening: "听力", } let scores = [element.reading, element.speaking, element.writing, element.listening] if (scores.length == 4 && scores.every(score => score !== undefined && score > 0 && score === scores[0])) text = `总分 ${element.total} 分以上,各项分数不低于 ${scores[0]} 分` else { for (const [key, label] of Object.entries(fields)) { if (element[key]) text += `${label} ${element[key]} 分以上、` } if (text.endsWith("、")) text = text.slice(0, -1) } } else if (element.total && element.total == 'Pass') text = `等级 ${element.total}` else if (element.total && /^[A-Za-z]+$/.test(element.total)) text = `等级 ${element.total} 以上` else if (element.total) text = `总分 ${element.total} 分以上` return text ? { name: element.name_zh, text } : null }) .filter(item => item !== null) } module.exports = { getOfferAdDetails, goPage, toast, xgBasicData, formatNumberWithSpaces, decodeKey, scoresList, }