feat: 访问埋点
This commit is contained in:
@@ -1,7 +1,12 @@
|
||||
import i18n, { getLocaleByPath } from '@/lang'
|
||||
import { trackRouteEntry } from '@/utils/tracking'
|
||||
import router from './index'
|
||||
|
||||
router.beforeEach((to, _from, next) => {
|
||||
i18n.global.locale.value = getLocaleByPath(to.path)
|
||||
next()
|
||||
})
|
||||
|
||||
router.afterEach(() => {
|
||||
trackRouteEntry()
|
||||
})
|
||||
|
||||
@@ -144,7 +144,8 @@ export const Https = {
|
||||
getContestantByID: '/api/global-award/contestants/', // 获取表单
|
||||
getContestCount: '/api/global-award/contestants/count', // 获取已提交申请总数
|
||||
getExcel: '/api/global-award/contestants/export', // 导出excel
|
||||
postExportFile: '/api/global-award/contestants/export/files' // 下载指定范围文件
|
||||
postExportFile: '/api/global-award/contestants/export/files', // 下载指定范围文件
|
||||
visitTracking: '/api/global-award/page/visit' // 每次都调用的埋点接口
|
||||
},
|
||||
|
||||
axiosGet(url, config) {
|
||||
|
||||
30
src/utils/tracking.ts
Normal file
30
src/utils/tracking.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
import { Https } from '@/utils/request'
|
||||
import { generateUuid } from '@/utils/util'
|
||||
|
||||
const VISIT_TRACKING_SESSION_ID_KEY = 'global_award_visit_tracking_session_id'
|
||||
|
||||
const getVisitTrackingSessionId = () => {
|
||||
try {
|
||||
const storedSessionId = window.sessionStorage.getItem(VISIT_TRACKING_SESSION_ID_KEY)
|
||||
if (storedSessionId) return storedSessionId
|
||||
|
||||
const sessionId = generateUuid()
|
||||
window.sessionStorage.setItem(VISIT_TRACKING_SESSION_ID_KEY, sessionId)
|
||||
return sessionId
|
||||
} catch (error) {
|
||||
console.warn('[tracking] sessionStorage access failed', error)
|
||||
return generateUuid()
|
||||
}
|
||||
}
|
||||
|
||||
const requestVisitTracking = async () => {
|
||||
await Https.axiosPost(Https.httpUrls.visitTracking, {
|
||||
sessionId: getVisitTrackingSessionId()
|
||||
})
|
||||
}
|
||||
|
||||
export const trackRouteEntry = () => {
|
||||
requestVisitTracking().catch((error) => {
|
||||
console.warn('[tracking] request failed', error)
|
||||
})
|
||||
}
|
||||
@@ -676,6 +676,16 @@ function sketchToMask(sketchImage) {
|
||||
img.src = sketchImage
|
||||
})
|
||||
}
|
||||
|
||||
// 生成Uuid
|
||||
function generateUuid() {
|
||||
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
||||
const r = (Math.random() * 16) | 0
|
||||
const v = c === 'x' ? r : (r & 0x3) | 0x8
|
||||
return v.toString(16)
|
||||
})
|
||||
}
|
||||
|
||||
export {
|
||||
isEmail,
|
||||
getUploadUrl,
|
||||
@@ -699,5 +709,6 @@ export {
|
||||
calculateGradientCoordinate,
|
||||
segmentImage,
|
||||
UrlToFile,
|
||||
sketchToMask
|
||||
sketchToMask,
|
||||
generateUuid
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user