138 lines
5.0 KiB
JavaScript
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-b5fdbf1f"]]);
|
|
wx.createPage(MiniProgramPage);
|
|
//# sourceMappingURL=../../../../.sourcemap/mp-weixin/pages/activity/wuxianshang/index.js.map
|