From f2f149af0e1b98ef2021971551443de02efdd008 Mon Sep 17 00:00:00 2001 From: zjwmiao <1723168479@qq.com> Date: Tue, 25 Feb 2025 20:28:35 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=82=B9=E5=87=BB=E9=93=BE=E6=8E=A5?= =?UTF-8?q?=E6=89=93=E5=BC=80=E6=96=B0=E9=A1=B5=E9=9D=A2=E6=97=B6=E5=9F=8B?= =?UTF-8?q?=E7=82=B9=E9=87=8D=E5=A4=8D=E4=B8=8A=E6=8A=A5=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/OCardItem.vue | 26 ++++++----- src/components/OTableItemNew.vue | 18 +++++--- src/components/detail/DetailAside.vue | 1 - src/components/filter/FilterHeader.vue | 7 ++- src/components/search/SearchFilter.vue | 7 ++- src/components/search/SearchRecommend.vue | 7 ++- src/shared/analytics/index.ts | 56 +++++++++++------------ src/views/image/TheImageDetail.vue | 1 - 8 files changed, 63 insertions(+), 60 deletions(-) diff --git a/src/components/OCardItem.vue b/src/components/OCardItem.vue index 966a1d9..c91822c 100644 --- a/src/components/OCardItem.vue +++ b/src/components/OCardItem.vue @@ -11,7 +11,7 @@ import { maintainerDefaults } from '@/data/query'; import defaultImg from '@/assets/default-logo.png'; import IconUser from '~icons/app/icon-user.svg'; -import { oaReport } from '@/shared/analytics'; +import { oaReport, searchReport } from '@/shared/analytics'; import { dataType } from 'element-plus/es/components/table-v2/src/common.mjs'; const props = defineProps({ @@ -85,7 +85,7 @@ const reportAnalytics = (data: Record, event = 'click') => { module = 'field'; } if (isPageSearch.value) { - oaReport( + searchReport( event, { module, @@ -95,18 +95,22 @@ const reportAnalytics = (data: Record, event = 'click') => { architecture: props.data.arch, ...data, }, - 'search_software' + { immediate: true } ); return; } - oaReport(event, { - module, - app_name: xssAllTag(props.data.name), - version: props.data.version, - os_version: props.data.os, - architecture: props.data.arch, - ...data, - }); + oaReport( + event, + { + module, + app_name: xssAllTag(props.data.name), + version: props.data.version, + os_version: props.data.os, + architecture: props.data.arch, + ...data, + }, + { immediate: true } + ); }; const onClickLink = (event: MouseEvent, isTag?: boolean) => { diff --git a/src/components/OTableItemNew.vue b/src/components/OTableItemNew.vue index d19c7cd..6626d1f 100644 --- a/src/components/OTableItemNew.vue +++ b/src/components/OTableItemNew.vue @@ -5,7 +5,7 @@ import { useLocale } from '@/composables/useLocale'; import { formatDateTime, checkOriginLink, windowOpen, xssAllTag, getPkgName } from '@/utils/common'; import { useI18n } from 'vue-i18n'; import { SORTPARAMS } from '@/data/query'; -import { oaReport } from '@/shared/analytics'; +import { oaReport, searchReport } from '@/shared/analytics'; import OCodeCopy from '@/components/OCodeCopy.vue'; import ExternalLink from '@/components/ExternalLink.vue'; @@ -54,21 +54,25 @@ const isPageSearch = computed(() => route.name === 'search'); const reportAnalytics = (data: Record, event = 'click') => { if (isPageSearch.value) { - oaReport( + searchReport( event, { module: 'search_page', tab: route.query.tab ?? '', ...data, }, - 'search_portal' + { immediate: true } ); return; } - oaReport(event, { - module: route.name, - ...data, - }); + oaReport( + event, + { + module: route.name, + ...data, + }, + { immediate: true } + ); }; const showDlg = ref(false); diff --git a/src/components/detail/DetailAside.vue b/src/components/detail/DetailAside.vue index 696a2b3..eb00c86 100644 --- a/src/components/detail/DetailAside.vue +++ b/src/components/detail/DetailAside.vue @@ -16,7 +16,6 @@ import { useRoute } from 'vue-router'; import IconChevronDown from '~icons/app/icon-chevron-down.svg'; import IconState from '~icons/pkg/icon-state.svg'; import IconLevel from '~icons/pkg/icon-level.svg'; -import { oaReport } from '@/shared/analytics'; import { inject } from 'vue'; import type { Ref } from 'vue'; import { pkgIdInjection } from '@/data/injectionKeys'; diff --git a/src/components/filter/FilterHeader.vue b/src/components/filter/FilterHeader.vue index 7547afb..43a3902 100644 --- a/src/components/filter/FilterHeader.vue +++ b/src/components/filter/FilterHeader.vue @@ -10,7 +10,7 @@ import { useSearchStore } from '@/stores/search'; import IconTimeOrder from '~icons/app/icon-time-order.svg'; import IconSearch from '~icons/app/icon-search.svg'; -import { oaReport } from '@/shared/analytics'; +import { searchReport } from '@/shared/analytics'; const props = defineProps({ title: { @@ -94,7 +94,7 @@ const replaceWinUrl = () => { const collectDownloadData = (keyword: string) => { const { href } = window.location; const downloadTime = new Date(); - oaReport( + searchReport( 'search', { origin: href, @@ -102,8 +102,7 @@ const collectDownloadData = (keyword: string) => { filter: 'all', pkg: props.title, downloadTime, - }, - 'search_software' + } ); }; diff --git a/src/components/search/SearchFilter.vue b/src/components/search/SearchFilter.vue index b3d4b51..0323e42 100644 --- a/src/components/search/SearchFilter.vue +++ b/src/components/search/SearchFilter.vue @@ -15,7 +15,7 @@ import { TABNAME_OPTIONS, FLITERMENUOPTIONS } from '@/data/query'; import SearchRecommend from '@/components/search/SearchRecommend.vue'; import IconSearch from '~icons/app/icon-search.svg'; -import { oaReport } from '@/shared/analytics'; +import { searchReport } from '@/shared/analytics'; defineProps({ placeholder: { @@ -43,13 +43,12 @@ const tabName = ref('all'); const fliterSelected = ref(defaultValue.value); const reportAnalytics = (data: Record, event = 'click') => { - oaReport( + searchReport( event, { module: isPageHome.value ? 'home_page' : 'search_page', ...data, - }, - 'search_software' + } ); }; diff --git a/src/components/search/SearchRecommend.vue b/src/components/search/SearchRecommend.vue index d76230c..8337c9b 100644 --- a/src/components/search/SearchRecommend.vue +++ b/src/components/search/SearchRecommend.vue @@ -12,7 +12,7 @@ import { useLocale } from '@/composables/useLocale'; import useSearchHistory from '@/composables/useSearchHistory'; import IconChevronRight from '~icons/app/icon-chevron-right.svg'; -import { oaReport } from '@/shared/analytics'; +import { searchReport } from '@/shared/analytics'; const props = defineProps({ searchValue: { @@ -42,15 +42,14 @@ const isShow = ref(props.isFeedback); const isPageHome = computed(() => route.name === 'home'); const reportAnalytics = (data: Record, event = 'click') => { - oaReport( + searchReport( event, { module: isPageHome.value ? 'home_page' : 'search_page', content: props.searchValue, ...data, ...(route.query.tab ? { tab: route.query.tab } : {}), - }, - 'search_software' + } ); }; diff --git a/src/shared/analytics/index.ts b/src/shared/analytics/index.ts index add6c1b..129e5e4 100644 --- a/src/shared/analytics/index.ts +++ b/src/shared/analytics/index.ts @@ -60,36 +60,36 @@ export const disableOA = () => { }); }; -/** - * @param event 事件名 - * @param eventData 上报数据 - * @param $service service字段取值 - * @param options options - */ -export const oaReport = >( - event: string, - eventData?: T | ((...opt: any[]) => Awaitable), - $service = 'software', - options?: { - immediate?: boolean; - eventOptions?: any; - } -) => { - if (!oa.enabled) { - return; - } - const loginStore = useLoginStore(); - return oa.report( - event, - async () => ({ - $service, - loginStatus: loginStore.isLogined, - ...(typeof eventData === 'function' ? await eventData() : eventData), - }), - options - ); +type Service = 'software' | 'search_software' + +export const getReportFn = ($service: Service = 'software') => { + return ( + event: string, + data?: Record | ((...opt: any[]) => Awaitable>), + options?: { + immediate?: boolean; + eventOptions?: any; + } + ) => { + if (!oa.enabled) { + return; + } + const loginStore = useLoginStore(); + return oa.report( + event, + async () => ({ + $service, + loginStatus: loginStore.isLogined, + ...(typeof data === 'function' ? await data() : data), + }), + options + ); + }; }; +export const searchReport = getReportFn('search_software'); +export const oaReport = getReportFn(); + export const reportPV = ($referrer?: string) => { oaReport(OpenEventKeys.PV, $referrer ? { $referrer } : undefined); }; diff --git a/src/views/image/TheImageDetail.vue b/src/views/image/TheImageDetail.vue index 284e1d4..86ba44b 100644 --- a/src/views/image/TheImageDetail.vue +++ b/src/views/image/TheImageDetail.vue @@ -19,7 +19,6 @@ import { getCode } from '@/utils/common'; import defaultImg from '@/assets/default-logo.png'; import { pkgIdInjection } from '@/data/injectionKeys'; -import { oaReport } from '@/shared/analytics'; import useDetailPageAnalytics from '@/composables/useDetailPageAnalytics'; const tabValue = ref('apppkg'); -- Gitee