import { includeList } from './router.config.js' // 配置信息 import ajaxService from '@/services/ajax.service.js' import UserService from '@/services/user.service' const UserApi = new UserService(ajaxService) // 校验是否为配置的路径 const isInclude = (url) => { if (!url) return false return includeList.some(item => url.indexOf(item.url) > -1) } // 校验返回页面类型 const isIncludeType = (url) => { if (!url) return false return includeList.find(item => url === item.url) } // 参数 const userSync = uni.getStorageSync('userInfo') const defaultParams = { pagePath: '', //页面路径 accessDuration: 0, //浏览时长初始值为 0 pageType: '', //页面类型 pageLabel: '', //页面标签 userId: userSync ? userSync.userId : 0, //用户Id productId: 0 //商品Id } // 页面进入 const enter = (current) => { current.meta.enterTime = Date.now() } // 页面离开 const leave = (prev) => { prev.meta.leaveTime = Date.now() } // 页面切换 const routting = async (current, prev) => { await userBehavior(current, prev) } /* 用户停留时间 */ async function userBehavior(current, prev) { try { if (!prev) return if (!isInclude(prev.path)) return console.log('\n') console.log('------------------------') // 停留时长参数设置 defaultParams.accessDuration = prev.meta.leaveTime - prev.meta.enterTime console.log('当前页面:', current.path) console.log('离开页面:', prev.path) // 接口参数设置 const pageData = isIncludeType(prev.path) defaultParams.pagePath = prev.fullPath defaultParams.pageType = pageData ? pageData.pageType : '' defaultParams.productId = prev.query.id ? prev.query.id : 0 defaultParams.pageLabel = uni.getStorageSync('pageLabel') // 调用接口 console.log('记录路径:', prev.path, '停留时间:', defaultParams.accessDuration,'ms','标签:', defaultParams.pageLabel) await UserApi.userRecordStatistics(defaultParams) console.log('---用户行为轨迹记录成功---') console.log('------------------------') console.log('\n') } catch (e) { console.log(e) console.log('---用户行为轨迹记录异常---') } } export default { enter, leave, routting }