1
0
mirror of https://github.com/ialley-workshop-open/uni-halo.git synced 2026-06-10 20:29:28 +08:00
Files
uni-halo/utils/vote.js
T
2025-08-29 17:52:53 +08:00

86 lines
1.8 KiB
JavaScript

const UnihaloVoteUid = "unihalo_vote_uid"
export const voteCacheUtil = {
getAll() {
const data = uni.getStorageSync(UnihaloVoteUid)
if (!data) {
return null
}
return JSON.parse(data)
},
get(name) {
const data = this.getAll()
if (!data) {
return null
}
return data[name]
},
has(name) {
const data = this.getAll()
if (!data) return false
return data[name] != undefined
},
set(name, value) {
let data = this.getAll()
if (!data) {
data = {
[name]: value
}
} else {
data[name] = value
}
uni.setStorageSync(UnihaloVoteUid, JSON.stringify(data))
}
}
export const VOTE_TYPES = {
"pk": "双选PK",
"multiple": "多选",
"single": "单选"
}
export const VOTE_STATES = {
"未开始": {
state: "未开始",
color: "orange"
},
"进行中": {
state: "进行中",
color: "green"
},
"已结束": {
state: "已结束",
color: "red"
},
}
export const calcVoteState = (vote) => {
if (vote.spec.timeLimit !== 'custom') {
return vote.spec.hasEnded ? VOTE_STATES["已结束"] : VOTE_STATES["进行中"]
}
const nowTime = new Date().getTime()
const startTime = new Date(vote.spec.startDate).getTime()
const endTime = new Date(vote.spec.endDate).getTime()
if (nowTime < startTime) {
return VOTE_STATES["未开始"]
}
if (nowTime < endTime) {
return VOTE_STATES["进行中"]
}
return vote.spec.hasEnded ? VOTE_STATES["已结束"] : VOTE_STATES["进行中"]
}
export const calcVotePercent = (vote, voteOption) => {
if (!vote || !voteOption) return 0
const votedDataList = vote?.stats?.voteDataList || []
if (votedDataList.length == 0) return 0
const voteCount = vote?.stats?.voteCount || 0
if (voteCount == 0) return 0
const _voteOption = votedDataList.find(x => x.id == voteOption.id)
if (!_voteOption) return 0;
const percent = (_voteOption.voteCount / voteCount) * 100
return Math.round(percent)
}