重构资产订阅功能,将弹窗模式改为外部页面跳转模式,移除AssetSubscribeDialog组件及其在App.vue中的引用,修改assetSubscribe工具类将showAssetSubscribeDialog方法替换为redirectToSubscribePage方法,当检测到402状态码时直接跳转到外部开通页面并携带资产ID和返回地址参数
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { ref } from 'vue';
|
||||
// 开通页面地址(public/web/subscribe.html)
|
||||
const SUBSCRIBE_PAGE_URL = '/web/subscribe.html';
|
||||
|
||||
// 路由路径与 assetId 的映射关系
|
||||
const ROUTE_ASSET_MAP: Record<string, { assetId: string; serviceName: string }> = {
|
||||
@@ -10,21 +11,8 @@ const ROUTE_ASSET_MAP: Record<string, { assetId: string; serviceName: string }>
|
||||
|
||||
// 聚合电商业务(资产管理)
|
||||
'/assets': { assetId: '696b4acd1be1c8b76c4b4c15', serviceName: '资产管理' },
|
||||
|
||||
// 订单
|
||||
// '/order': { assetId: '696b4acd1be1c8b76c4b4c15', serviceName: '资产管理' },
|
||||
|
||||
// AI数字人
|
||||
// '/digitalHuman': { assetId: '696f421205e496ba4ccbe662', serviceName: 'AI客服' },
|
||||
};
|
||||
|
||||
// 当前弹窗状态(响应式,供组件使用)
|
||||
export const assetSubscribeState = ref({
|
||||
visible: false,
|
||||
assetId: '',
|
||||
serviceName: '',
|
||||
});
|
||||
|
||||
/**
|
||||
* 根据路由路径获取对应的 assetId 和服务名称
|
||||
*/
|
||||
@@ -45,26 +33,20 @@ export function getAssetInfoByRoute(routePath: string): { assetId: string; servi
|
||||
}
|
||||
|
||||
/**
|
||||
* 显示服务开通弹窗
|
||||
* 跳转到外部开通页面
|
||||
* @param assetId 资产ID
|
||||
*/
|
||||
export function showAssetSubscribeDialog(assetId: string, serviceName: string) {
|
||||
console.log('[showAssetSubscribeDialog] 显示弹窗:', { assetId, serviceName });
|
||||
console.log('[showAssetSubscribeDialog] 修改前状态:', JSON.stringify(assetSubscribeState.value));
|
||||
assetSubscribeState.value.visible = true;
|
||||
assetSubscribeState.value.assetId = assetId;
|
||||
assetSubscribeState.value.serviceName = serviceName;
|
||||
console.log('[showAssetSubscribeDialog] 修改后状态:', JSON.stringify(assetSubscribeState.value));
|
||||
export function redirectToSubscribePage(assetId: string) {
|
||||
// 当前页面地址作为返回地址
|
||||
const returnUrl = encodeURIComponent(window.location.href);
|
||||
// 构建跳转URL
|
||||
const url = `${SUBSCRIBE_PAGE_URL}?assetId=${assetId}&returnUrl=${returnUrl}`;
|
||||
console.log('[redirectToSubscribePage] 跳转到开通页面:', url);
|
||||
window.location.href = url;
|
||||
}
|
||||
|
||||
/**
|
||||
* 关闭服务开通弹窗
|
||||
*/
|
||||
export function closeAssetSubscribeDialog() {
|
||||
assetSubscribeState.value.visible = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理 403 错误码(模块未开通)
|
||||
* 处理 402 错误码(模块未开通)
|
||||
*/
|
||||
export function handleModuleNotEnabled(routePath: string): boolean {
|
||||
console.log('[模块未开通] 当前路由路径:', routePath);
|
||||
@@ -72,12 +54,12 @@ export function handleModuleNotEnabled(routePath: string): boolean {
|
||||
console.log('[模块未开通] 匹配到的资产信息:', assetInfo);
|
||||
|
||||
if (assetInfo) {
|
||||
showAssetSubscribeDialog(assetInfo.assetId, assetInfo.serviceName);
|
||||
redirectToSubscribePage(assetInfo.assetId);
|
||||
return true;
|
||||
}
|
||||
|
||||
// 如果没有匹配到路由,尝试使用默认的资产管理
|
||||
console.warn('[模块未开通] 未匹配到路由,使用默认资产管理');
|
||||
showAssetSubscribeDialog('696b4acd1be1c8b76c4b4c15', '资产管理');
|
||||
redirectToSubscribePage('696b4acd1be1c8b76c4b4c15');
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user