修改弹窗两次时候无法弹出
This commit is contained in:
@@ -138,8 +138,11 @@
|
||||
},
|
||||
failCb: (res) => {
|
||||
checkInLoading.value = false;
|
||||
console.log('签到失败', res);
|
||||
common.msg('签到失败,请稍后再试');
|
||||
if (res.data.rtnCode === '0002') {
|
||||
common.msg(res.data.message);
|
||||
} else {
|
||||
common.msg('签到失败,请稍后再试');
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
@@ -34,88 +34,118 @@ export default function usePointsAndBadge() {
|
||||
* @param {any} res - 接口返回数据
|
||||
*/
|
||||
const handlePointsBadgePopup = (points, pointsBadges, complete = () => {}, res = {}) => {
|
||||
// AI问答仅弹徽章弹窗
|
||||
if (points?.length > 0) {
|
||||
// 普通场景:先弹积分弹窗,再弹徽章弹窗
|
||||
pointsRef.value?.open(points, pointsBadges, (status, pointsList, badgesList) => {
|
||||
pointsRef.value.close();
|
||||
// 有徽章则弹徽章弹窗,否则直接完成
|
||||
if (badgesList?.length > 0) {
|
||||
nextTick(() => {
|
||||
setTimeout(() => {
|
||||
badgeRef.value.open(pointsList, badgesList, () => {
|
||||
badgeRef.value.close();
|
||||
complete(true, '积分获取成功', res);
|
||||
// AI问答仅弹徽章弹窗
|
||||
if (points?.length > 0) {
|
||||
// 普通场景:先弹积分弹窗,再弹徽章弹窗
|
||||
pointsRef.value?.open(points, pointsBadges, (status, pointsList, badgesList) => {
|
||||
pointsRef.value.close();
|
||||
if(pointsList.length > 0) {
|
||||
setTimeout(() => {
|
||||
pointsRef.value?.open(pointsList, badgesList, (status, pointsList,
|
||||
badgesList) => {
|
||||
pointsRef.value.close();
|
||||
// 有徽章则弹徽章弹窗,否则直接完成
|
||||
if (badgesList?.length > 0) {
|
||||
nextTick(() => {
|
||||
setTimeout(() => {
|
||||
badgeRef.value.open(pointsList,
|
||||
badgesList, () => {
|
||||
badgeRef.value.close();
|
||||
complete(true, '积分获取成功',
|
||||
res);
|
||||
});
|
||||
}, pop_up_time);
|
||||
});
|
||||
}, pop_up_time);
|
||||
} else {
|
||||
complete(true, '积分获取成功', res);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
complete(true, '积分获取成功', res);
|
||||
}
|
||||
});
|
||||
} else if (pointsBadges?.length > 0) {
|
||||
badgeRef.value.open([], pointsBadges, () => {
|
||||
badgeRef.value.close();
|
||||
}, 300)
|
||||
} else if (badgesList?.length > 0) {
|
||||
// 有徽章则弹徽章弹窗,否则直接完成
|
||||
nextTick(() => {
|
||||
setTimeout(() => {
|
||||
badgeRef.value.open(pointsList, badgesList, () => {
|
||||
badgeRef.value.close();
|
||||
complete(true, '积分获取成功', res);
|
||||
});
|
||||
}, pop_up_time);
|
||||
});
|
||||
} else {
|
||||
complete(true, '积分获取成功', res);
|
||||
});
|
||||
}else{
|
||||
}
|
||||
});
|
||||
} else if (pointsBadges?.length > 0) {
|
||||
badgeRef.value.open([], pointsBadges, () => {
|
||||
badgeRef.value.close();
|
||||
complete(true, '积分获取成功', res);
|
||||
});
|
||||
} else {
|
||||
complete(false, '积分接口返回数据异常', res);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 积分和徽章处理主方法
|
||||
* @param {string} type - 任务类型(04:课程练习,06:AI问答,其他:普通任务)
|
||||
* @param {string|null} taskId - 任务ID
|
||||
* @param {Function} complete - 完成回调(status, message, data)
|
||||
*/
|
||||
const pointAndBadgesRun = async (type, taskId = '', complete = () => {}) => {
|
||||
|
||||
try {
|
||||
console.log('调用积分接口');
|
||||
const res = await addPointsByTask({
|
||||
type,
|
||||
taskId
|
||||
});
|
||||
|
||||
// 防御性处理:确保res.body存在
|
||||
if (!res?.body) {
|
||||
complete(false, '积分接口返回数据异常', res);
|
||||
return;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 积分和徽章处理主方法
|
||||
* @param {string} type - 任务类型(04:课程练习,06:AI问答,其他:普通任务)
|
||||
* @param {string|null} taskId - 任务ID
|
||||
* @param {Function} complete - 完成回调(status, message, data)
|
||||
*/
|
||||
const pointAndBadgesRun = async (type, taskId = '', complete = () => {}) => {
|
||||
|
||||
try {
|
||||
console.log('调用积分接口');
|
||||
const res = await addPointsByTask({
|
||||
type,
|
||||
taskId
|
||||
});
|
||||
|
||||
// 防御性处理:确保res.body存在
|
||||
if (!res?.body) {
|
||||
complete(false, '积分接口返回数据异常', res);
|
||||
const {
|
||||
points,
|
||||
pointsBadges,
|
||||
message = ''
|
||||
} = res.body;
|
||||
// const points = [{
|
||||
// "changePoints": 1,
|
||||
// "message": '学习时长累计1小时'
|
||||
// },
|
||||
// {
|
||||
// "changePoints": 10,
|
||||
// "message": '完成课程学习'
|
||||
// }
|
||||
// ]
|
||||
// 分支逻辑:按类型处理
|
||||
switch (type) {
|
||||
case '04': // 04:课程练习,自定义返回逻辑,不弹弹窗
|
||||
complete(true, '', res.body); // 补充回调,避免调用方等待
|
||||
return;
|
||||
}
|
||||
const {
|
||||
points,
|
||||
pointsBadges,
|
||||
message = ''
|
||||
} = res.body;
|
||||
|
||||
// 分支逻辑:按类型处理
|
||||
switch (type) {
|
||||
case '04': // 04:课程练习,自定义返回逻辑,不弹弹窗
|
||||
complete(true, '', res.body); // 补充回调,避免调用方等待
|
||||
return;
|
||||
case '06': // 06:AI问答,仅弹徽章弹窗
|
||||
if (pointsBadges?.length > 0) {
|
||||
handlePointsBadgePopup(points, pointsBadges, complete, res);
|
||||
} else {
|
||||
complete(true, '', res);
|
||||
}
|
||||
return;
|
||||
// 其他类型:弹积分+徽章弹窗
|
||||
default:
|
||||
case '06': // 06:AI问答,仅弹徽章弹窗
|
||||
if (pointsBadges?.length > 0) {
|
||||
handlePointsBadgePopup(points, pointsBadges, complete, res);
|
||||
return;
|
||||
}
|
||||
} catch (error) {
|
||||
// 细化错误信息:区分网络错误/接口错误
|
||||
const errorMsg = error?.message || '积分获取失败';
|
||||
complete(false, `积分获取失败:${errorMsg}`, error);
|
||||
} else {
|
||||
complete(true, '', res);
|
||||
}
|
||||
return;
|
||||
// 其他类型:弹积分+徽章弹窗
|
||||
default:
|
||||
handlePointsBadgePopup(points, pointsBadges, complete, res);
|
||||
return;
|
||||
}
|
||||
};
|
||||
return {
|
||||
pointAndBadgesRun,
|
||||
handlePointsBadgePopup,
|
||||
badgeRef,
|
||||
pointsRef
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
// 细化错误信息:区分网络错误/接口错误
|
||||
const errorMsg = error?.message || '积分获取失败';
|
||||
complete(false, `积分获取失败:${errorMsg}`, error);
|
||||
}
|
||||
};
|
||||
return {
|
||||
pointAndBadgesRun,
|
||||
handlePointsBadgePopup,
|
||||
badgeRef,
|
||||
pointsRef
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user