84 lines
2.6 KiB
TypeScript
84 lines
2.6 KiB
TypeScript
|
|
import { ref } from 'vue';
|
|||
|
|
|
|||
|
|
// 路由路径与 assetId 的映射关系
|
|||
|
|
const ROUTE_ASSET_MAP: Record<string, { assetId: string; serviceName: string }> = {
|
|||
|
|
// CID广告业务(聚合广告)
|
|||
|
|
'/cidService': { assetId: '696f423705e496ba4ccbe665', serviceName: '聚合广告' },
|
|||
|
|
|
|||
|
|
// AI客服业务
|
|||
|
|
'/customerService': { assetId: '696f421205e496ba4ccbe662', serviceName: 'AI客服' },
|
|||
|
|
|
|||
|
|
// 聚合电商业务(资产管理)
|
|||
|
|
'/assets': { assetId: '696b4acd1be1c8b76c4b4c15', serviceName: '资产管理' },
|
|||
|
|
|
|||
|
|
// 订单
|
|||
|
|
// '/order': { assetId: '696b4acd1be1c8b76c4b4c15', serviceName: '资产管理' },
|
|||
|
|
|
|||
|
|
// AI数字人
|
|||
|
|
// '/digitalHuman': { assetId: '696f421205e496ba4ccbe662', serviceName: 'AI客服' },
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// 当前弹窗状态(响应式,供组件使用)
|
|||
|
|
export const assetSubscribeState = ref({
|
|||
|
|
visible: false,
|
|||
|
|
assetId: '',
|
|||
|
|
serviceName: '',
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 根据路由路径获取对应的 assetId 和服务名称
|
|||
|
|
*/
|
|||
|
|
export function getAssetInfoByRoute(routePath: string): { assetId: string; serviceName: string } | null {
|
|||
|
|
// 精确匹配
|
|||
|
|
if (ROUTE_ASSET_MAP[routePath]) {
|
|||
|
|
return ROUTE_ASSET_MAP[routePath];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 前缀匹配
|
|||
|
|
for (const [prefix, info] of Object.entries(ROUTE_ASSET_MAP)) {
|
|||
|
|
if (routePath.startsWith(prefix)) {
|
|||
|
|
return info;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 显示服务开通弹窗
|
|||
|
|
*/
|
|||
|
|
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 closeAssetSubscribeDialog() {
|
|||
|
|
assetSubscribeState.value.visible = false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 处理 403 错误码(模块未开通)
|
|||
|
|
*/
|
|||
|
|
export function handleModuleNotEnabled(routePath: string): boolean {
|
|||
|
|
console.log('[模块未开通] 当前路由路径:', routePath);
|
|||
|
|
const assetInfo = getAssetInfoByRoute(routePath);
|
|||
|
|
console.log('[模块未开通] 匹配到的资产信息:', assetInfo);
|
|||
|
|
|
|||
|
|
if (assetInfo) {
|
|||
|
|
showAssetSubscribeDialog(assetInfo.assetId, assetInfo.serviceName);
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 如果没有匹配到路由,尝试使用默认的资产管理
|
|||
|
|
console.warn('[模块未开通] 未匹配到路由,使用默认资产管理');
|
|||
|
|
showAssetSubscribeDialog('696b4acd1be1c8b76c4b4c15', '资产管理');
|
|||
|
|
return true;
|
|||
|
|
}
|