138 lines
4.3 KiB
JavaScript
138 lines
4.3 KiB
JavaScript
// 专门写一些 在不同页面的公共方法
|
|
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,
|
|
} |