From 7cc605bed18bf8b91fdd8ed8c05ae0bf955e5d42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=94=B0=E9=A6=99=E7=90=AA?= <624506849@qq.com> Date: Fri, 18 Sep 2026 17:58:30 +0800 Subject: [PATCH] =?UTF-8?q?feat(distribution):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=8B=9B=E5=8B=9F=E9=A1=B5=E9=9D=A2=E6=95=B0=E6=8D=AE=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 引入 `savePendingRecruitToken` 方法,确保在用户登录时保存招募令牌。 - 重构数据加载流程,使用异步函数处理页面数据和进度信息,提升用户体验。 - 增强错误处理,确保在加载失败时不影响页面展示。 --- pages/mine/distribution/join.vue | 54 +++++++++++++++++++------------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/pages/mine/distribution/join.vue b/pages/mine/distribution/join.vue index 4193a2a..358d4a4 100644 --- a/pages/mine/distribution/join.vue +++ b/pages/mine/distribution/join.vue @@ -185,7 +185,7 @@ import storage from '@/utils/storage.js' import config from '@/config/config' import { parseGoodsImageUrl, tipsToLogin } from '@/utils/filters.js' import { resolveRecruitDistributionIdFromScene } from '@/utils/distributionBind.js' -import { getRecruitPage, getRecruitProgress, getRecruitInviter, submitRecruitApplication } from '@/api/distribution' +import { getRecruitPage, getRecruitProgress, getRecruitInviter, submitRecruitApplication, savePendingRecruitToken } from '@/api/distribution' import { DISTRIBUTION_APPLY_MESSAGE, DISTRIBUTION_CLOSE_MESSAGE, @@ -386,28 +386,40 @@ function loadPageData() { submitApplicationStatus.value = '' formInfoCompleted.value = false Object.keys(fieldErrors).forEach((key) => delete fieldErrors[key]) - const tasks: Promise[] = [getRecruitPage()] - if (isUserLoggedIn.value) { - tasks.push(getRecruitProgress()) - } - Promise.all(tasks) - .then((results) => { - const pageRes = results[0] - const pageData = pageRes.data || {} - if (pageData.code == 22000) { - isDistributionClosed.value = true - pageInfo.value = {} + + const load = async () => { + if (isUserLoggedIn.value) { + if (recruitToken.value) { + try { + await savePendingRecruitToken(recruitToken.value) + } catch (e) { + // 上报失败不阻断加入页 + } + } + try { + const progressRes = await getRecruitProgress() + progress.value = progressRes.data?.result || emptyProgress() + } catch (e) { progress.value = emptyProgress() - return } - const pageResult = pageData.result || {} - pageInfo.value = pageResult - if (results.length > 1) { - progress.value = results[1].data?.result || emptyProgress() - } else { - progress.value = hasConditionalJoin(pageResult.plan) ? emptyProgress() : { satisfied: true } - } - }) + } + const pageRes = await getRecruitPage() + const pageData = pageRes.data || {} + if (pageData.code == 22000) { + isDistributionClosed.value = true + pageInfo.value = {} + progress.value = emptyProgress() + return + } + const pageResult = pageData.result || {} + pageInfo.value = pageResult + if (!isUserLoggedIn.value) { + progress.value = hasConditionalJoin(pageResult.plan) ? emptyProgress() : { satisfied: true } + } + } + + Promise.resolve(load()) + .catch(() => {}) .finally(() => { loading.value = false })