min-project/utils/commonMethod.js
2025-02-25 19:17:05 +08:00

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,
}