完善购买和套餐功能

This commit is contained in:
2026-09-16 17:26:02 +08:00
parent 898dedd75a
commit b48688cbab
19 changed files with 554 additions and 58 deletions
+9 -1
View File
@@ -79,10 +79,11 @@
type="primary"
size="large"
:loading="buyingIds[pkg.id]"
:disabled="isPurchasedOnce(pkg)"
@click="handleBuy(pkg)"
class="buy-btn"
>
立即购买
{{ isPurchasedOnce(pkg) ? "已购买(限购一次)" : "立即购买" }}
</el-button>
</div>
</el-card>
@@ -141,6 +142,7 @@ import { ElMessage } from "element-plus";
import { ArrowLeft, OfficeBuilding, Box, User, InfoFilled } from "@element-plus/icons-vue";
import QRCode from "qrcode";
import { useAuthStore } from "@/stores/auth";
import { reloadMenusAndDynamicRoutes } from "@/router";
import {
getPackageList,
createPackageOrder,
@@ -223,6 +225,10 @@ const renderQR = async () => {
}
};
/** 仅可购买一次的套餐(体验套餐)在已购买过之后禁用购买按钮 */
const isPurchasedOnce = (pkg: any) =>
Number(pkg?.allow_repurchase) === 0 && pkg?.purchased === true;
const handleBuy = async (pkg: any) => {
buyingIds.value[pkg.id] = true;
try {
@@ -295,6 +301,8 @@ const checkOrder = async (orderNo: string, silent = false) => {
ElMessage.success("购买成功,套餐已开通");
payVisible.value = false;
loadMyOrders();
// 重建动态路由,把新开通模块的「功能未开通」菜单占位页切换为真实页面
reloadMenusAndDynamicRoutes().catch(() => {});
return;
}
if (status === "paid") {