Browse Source

feat: 🚀 模块统计

pull/2/head
liyongle 3 years ago
parent
commit
7abf0c3808
  1. 2
      src/components/Menu/Menu.vue
  2. 2
      src/components/Search/Hot.vue
  3. 2
      src/components/Search/Result.vue
  4. 37
      src/composables/useStatistics.ts
  5. 5
      src/http/api/statistics/index.ts
  6. 9
      src/http/api/statistics/types.ts
  7. 18
      src/views/Index/Middle.vue

2
src/components/Menu/Menu.vue

@ -13,6 +13,7 @@
<script setup lang="ts">
import { ref, watch } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { useStatisticsModel } from '@/composables/useStatistics'
type MenuItem = {
title: string
titleEn: string
@ -84,6 +85,7 @@ const current = ref('/')
function changeMenu(item: MenuItem) {
router.push(item.path)
useStatisticsModel({ recordType: 1, moduleName: item.title })
}
watch(route, to => {

2
src/components/Search/Hot.vue

@ -11,7 +11,7 @@
<div class="name">{{ switchLanguage(item, 'shopName') }}</div>
<div class="right">
<img src="@/assets/images/search/position.png" alt="" />
<div class="hose_num">{{ item.houseNumber }}</div>
<div class="hose_num">{{ item.floor + '-' + item.houseNumber }}</div>
</div>
</div>
</div>

2
src/components/Search/Result.vue

@ -10,7 +10,7 @@
<div class="name">{{ switchLanguage(item, 'shopName') }}</div>
<div class="right">
<img src="@/assets/images/search/position.png" alt="" />
<div class="hose_num">{{ item.houseNumber }}</div>
<div class="hose_num">{{ item.floor + '-' + item.houseNumber }}</div>
</div>
</div>
</div>

37
src/composables/useStatistics.ts

@ -1,16 +1,24 @@
import { useRootStore } from '@/store/root'
import { storeToRefs } from 'pinia'
import { getStatistics } from '@/http/api/statistics'
import type { Query, TagType } from '@/http/api/statistics/types'
import { getStatistics, getGuideClickDataUpload } from '@/http/api/statistics'
import type { Query, TagType, Clickquery, RecordType } from '@/http/api/statistics/types'
//店铺编码: tag=navigation或shop或brandSearch或时必传
//industryCode : tag=industry时必传
export const useStatistics = ({ tag, shopCode, industryCode = '' }: { tag: TagType; shopCode: string | number; industryCode?: string }) => {
export const useStatistics = ({
tag,
shopCode,
industryCode = ''
}: {
tag: TagType
shopCode?: string | number
industryCode?: string
}) => {
const store = useRootStore()
const { device } = storeToRefs(store)
const params: Query = {
deviceCode: device.value.deviceCode,
deviceCode: device.value.machineCode,
projectCode: device.value.projectCode,
tag,
shopCode,
@ -19,3 +27,24 @@ export const useStatistics = ({ tag, shopCode, industryCode = '' }: { tag: TagTy
getStatistics(params)
}
type Stype = {
recordType: RecordType
moduleName?: string
activityCode?: string
}
// 模块、活动、使用人次统计
export const useStatisticsModel = ({ recordType, moduleName, activityCode }: Stype) => {
const store = useRootStore()
const { device } = storeToRefs(store)
const params: Clickquery = {
deviceCode: device.value.machineCode,
projectCode: device.value.projectCode,
recordType,
moduleName,
activityCode
}
getGuideClickDataUpload(params)
}

5
src/http/api/statistics/index.ts

@ -1,4 +1,7 @@
import { request } from '../../http'
import type { Query } from './types'
import type { Query, Clickquery } from './types'
//数据统计
export const getStatistics = (data: Query) => request({ url: `/analysis/v1/web/deviceUseClickDataUpload`, data, method: 'post' })
//数据统计(模块点击、活动点击、使用人次点击)
export const getGuideClickDataUpload = (data: Clickquery) => request({ url: '/analysis/v1/web/guideClickDataUpload', data, method: 'post' })

9
src/http/api/statistics/types.ts

@ -1,5 +1,6 @@
//类型,设备点击量:device,导航使用次数:navigation,节目播放次数:program,店铺点击次数:shop,业态点击次数:industry,品牌店铺搜索:brandSearch
export type TagType = 'navigation' | 'shop' | 'brandSearch' | 'device' | 'program' | 'industry'
export type RecordType = 1 | 2 | 3 // 记录类型1:模块点击记录 2:活动点击记录 3:使用人次记录
export type Query = {
deviceCode: string //设备编码
@ -8,3 +9,11 @@ export type Query = {
shopCode?: string | number
industryCode?: string //tag=industry时必传
}
export type Clickquery = {
deviceCode: string //设备编码
projectCode: string //项目编码
recordType: RecordType
moduleName?: string // 模块名称
activityCode?: string // 活动code
}

18
src/views/Index/Middle.vue

@ -1,26 +1,26 @@
<template>
<Transition name="zoom">
<div class="middle-container">
<div class="brand" @click="go('brand')">
<div class="brand" @click="go('brand', '店铺导航')">
<div class="txt_w">{{ switchLanguage(list[0], 'title') }}</div>
<div class="sear">{{ $t('searB') }}</div>
</div>
<div class="activity" @click="go('activity')">
<div class="activity" @click="go('activity', '优惠与活动')">
<div class="txt">{{ switchLanguage(list[1], 'title') }}</div>
</div>
<div class="art" @click="go('art')">
<div class="art" @click="go('art', '艺术')">
<div class="txt_w">{{ switchLanguage(list[6], 'title') }}</div>
</div>
<div class="school" @click="go('school')">
<div class="school" @click="go('school', '文化学院')">
<div class="txt_w">{{ switchLanguage(list[5], 'title') }}</div>
</div>
<div class="service" @click="go('service')">
<div class="service" @click="go('service', '服务')">
<div class="txt_w">{{ switchLanguage(list[3], 'title') }}</div>
</div>
<div class="member" @click="go('member')">
<div class="member" @click="go('member', '会员专享')">
<div class="txt_w">{{ switchLanguage(list[2], 'title') }}</div>
</div>
<div class="parking" @click="go('parking')">
<div class="parking" @click="go('parking', '停车与缴费')">
<div class="txt">{{ switchLanguage(list[4], 'title') }}</div>
</div>
</div>
@ -29,6 +29,7 @@
<script setup lang="ts">
import { useRouter } from 'vue-router'
import { useStatisticsModel } from '@/composables/useStatistics'
const list = [
{
title: '店铺导航',
@ -60,8 +61,9 @@ const list = [
}
]
const router = useRouter()
function go(path: string) {
function go(path: string, moduleName: string) {
router.push(path)
useStatisticsModel({ recordType: 1, moduleName })
}
</script>

Loading…
Cancel
Save