/** * Banner导航工具函数 * 根据Banner的linkType决定导航方式 * @param {object} banner - Banner对象 { linkType: 'internal'|'external', linkUrl: string } * @returns {{ type: string, url: string } | null} 导航结果描述,null表示无效Banner */ export function resolveBannerNavigation(banner) { if (!banner || !banner.linkUrl) return null if (banner.linkType === 'internal') { return { type: 'internal', url: banner.linkUrl } } else if (banner.linkType === 'external') { return { type: 'external', url: banner.linkUrl } } return null } /** * 执行Banner导航(依赖uni API) * @param {object} banner - Banner对象 */ export function navigateBanner(banner) { const result = resolveBannerNavigation(banner) if (!result) return if (result.type === 'internal') { uni.navigateTo({ url: result.url }) } else if (result.type === 'external') { // #ifdef APP-PLUS plus.runtime.openURL(result.url) // #endif // #ifdef H5 window.open(result.url) // #endif } }