2025-11-24 22:37:11 +08:00

138 lines
5.0 KiB
JavaScript

"use strict";
const common_vendor = require("../../../common/vendor.js");
const api_appUser = require("../../../api/appUser.js");
const _sfc_main = {
__name: "index",
setup(__props) {
const detail = common_vendor.ref({});
const statusText = common_vendor.ref("");
const issues = common_vendor.ref([]);
const rewardsMap = common_vendor.ref({});
function statusToText(s) {
if (s === 1)
return "进行中";
if (s === 0)
return "未开始";
if (s === 2)
return "已结束";
return String(s || "");
}
async function fetchDetail(id) {
const data = await api_appUser.getActivityDetail(id);
detail.value = data || {};
statusText.value = statusToText(detail.value.status);
}
function unwrap(list) {
if (Array.isArray(list))
return list;
const obj = list || {};
const data = obj.data || {};
const arr = obj.list || obj.items || data.list || data.items || data;
return Array.isArray(arr) ? arr : [];
}
function normalizeIssues(list) {
const arr = unwrap(list);
return arr.map((i, idx) => ({
id: i.id ?? String(idx),
title: i.title ?? i.name ?? "",
no: i.no ?? i.index ?? i.issue_no ?? i.issue_number ?? null,
status_text: i.status_text ?? (i.status === 1 ? "进行中" : i.status === 0 ? "未开始" : i.status === 2 ? "已结束" : "")
}));
}
function normalizeRewards(list) {
const arr = unwrap(list);
return arr.map((i, idx) => ({
id: i.id ?? String(idx),
title: i.title ?? i.name ?? "",
image: i.image ?? i.img ?? i.pic ?? i.banner ?? "",
odds: i.odds ?? i.rate ?? i.probability ?? i.prob ?? "",
rarity: i.rarity ?? i.rarity_name ?? ""
}));
}
async function fetchRewardsForIssues(activityId) {
const list = issues.value || [];
const promises = list.map((it) => api_appUser.getActivityIssueRewards(activityId, it.id));
const results = await Promise.allSettled(promises);
results.forEach((res, i) => {
const issueId = list[i] && list[i].id;
if (!issueId)
return;
const value = res.status === "fulfilled" ? normalizeRewards(res.value) : [];
rewardsMap.value = { ...rewardsMap.value || {}, [issueId]: value };
});
}
async function fetchIssues(id) {
const data = await api_appUser.getActivityIssues(id);
issues.value = normalizeIssues(data);
await fetchRewardsForIssues(id);
}
function onPreviewBanner() {
const url = detail.value.banner || "";
if (url)
common_vendor.index.previewImage({ urls: [url], current: url });
}
function onParticipate() {
common_vendor.index.showToast({ title: "功能待接入", icon: "none" });
}
common_vendor.onLoad((opts) => {
const id = opts && opts.id || "";
if (id) {
fetchDetail(id);
fetchIssues(id);
}
});
return (_ctx, _cache) => {
return common_vendor.e({
a: detail.value.banner
}, detail.value.banner ? {
b: detail.value.banner
} : {}, {
c: common_vendor.t(detail.value.name || detail.value.title || "-"),
d: common_vendor.t(detail.value.category_name || "对对碰"),
e: detail.value.price_draw !== void 0
}, detail.value.price_draw !== void 0 ? {
f: common_vendor.t(detail.value.price_draw)
} : {}, {
g: detail.value.status !== void 0
}, detail.value.status !== void 0 ? {
h: common_vendor.t(statusText.value)
} : {}, {
i: common_vendor.o(onPreviewBanner),
j: common_vendor.o(onParticipate),
k: issues.value.length
}, issues.value.length ? {
l: common_vendor.f(issues.value, (it, k0, i0) => {
return common_vendor.e({
a: common_vendor.t(it.title || "第" + (it.no || it.index || it.issue_no || "-") + "期"),
b: it.status_text
}, it.status_text ? {
c: common_vendor.t(it.status_text)
} : {}, {
d: rewardsMap.value[it.id] && rewardsMap.value[it.id].length
}, rewardsMap.value[it.id] && rewardsMap.value[it.id].length ? {
e: common_vendor.f(rewardsMap.value[it.id], (rw, k1, i1) => {
return common_vendor.e({
a: rw.image
}, rw.image ? {
b: rw.image
} : {}, {
c: common_vendor.t(rw.title),
d: rw.rarity || rw.odds
}, rw.rarity || rw.odds ? {
e: common_vendor.t([rw.rarity, rw.odds].filter(Boolean).join(" · "))
} : {}, {
f: rw.id
});
})
} : {}, {
f: it.id
});
})
} : {});
};
}
};
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-e6d1f6ed"]]);
wx.createPage(MiniProgramPage);
//# sourceMappingURL=../../../../.sourcemap/mp-weixin/pages/activity/duiduipeng/index.js.map