提交 365c970d authored 作者: 王鹏飞's avatar 王鹏飞

chore: 用户画像增加查看事件详情

上级 66090fd0
...@@ -110,3 +110,8 @@ export function searchMetaMemberAttrs(params?: { ...@@ -110,3 +110,8 @@ export function searchMetaMemberAttrs(params?: {
}) { }) {
return httpRequest.get('/api/lab/v1/experiment/meta-member/search-attributes', { params }) return httpRequest.get('/api/lab/v1/experiment/meta-member/search-attributes', { params })
} }
// 事件属性列表
export function getMemberEvents() {
return httpRequest.get('/api/lab/v1/experiment/member/events')
}
<script setup lang="ts"> <script setup lang="ts">
import { getMetaEventList } from '../api' import { getMemberEvents } from '@/api/base'
const props = defineProps<{ event: any; user: any }>() const props = defineProps<{ event: any; user: any }>()
const metaEventList = ref([]) const metaEventList = ref([])
async function fetchMetaEventList() { async function fetchMetaEventList() {
const res = await getMetaEventList() const res = await getMemberEvents()
metaEventList.value = res.data metaEventList.value = res.data
} }
onMounted(fetchMetaEventList) onMounted(fetchMetaEventList)
......
...@@ -14,8 +14,3 @@ export function getMembersList() { ...@@ -14,8 +14,3 @@ export function getMembersList() {
export function getEventList(params: { member_id: string }) { export function getEventList(params: { member_id: string }) {
return httpRequest.get('/api/lab/v1/experiment/index/events', { params }) return httpRequest.get('/api/lab/v1/experiment/index/events', { params })
} }
// 事件属性列表
export function getMetaEventList() {
return httpRequest.get('/api/lab/v1/experiment/member/events')
}
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
import { getExperimentData, getMembersList, getEventList } from '../api' import { getExperimentData, getMembersList, getEventList } from '../api'
import Icon from '@/components/ConnectionIcon.vue' import Icon from '@/components/ConnectionIcon.vue'
// import { useMapStore } from '@/stores/map' // import { useMapStore } from '@/stores/map'
const ViewEvent = defineAsyncComponent(() => import('../components/ViewEvent.vue')) const ViewEvent = defineAsyncComponent(() => import('@/components/ViewEvent.vue'))
// 左边展示数据 // 左边展示数据
let leftData = $ref<{ let leftData = $ref<{
......
<script setup lang="ts"> <script setup lang="ts">
import { UserFilled } from '@element-plus/icons-vue' // import { UserFilled } from '@element-plus/icons-vue'
import { getMemberImage, getMemberFieldsList } from '../api' import { getMemberImage, getMemberFieldsList } from '../api'
import type { MemberFieldsProp, ImageProp } from '../types' import type { MemberFieldsProp, ImageProp } from '../types'
import Icon from '@/components/ConnectionIcon.vue' import Icon from '@/components/ConnectionIcon.vue'
const ViewEvent = defineAsyncComponent(() => import('@/components/ViewEvent.vue'))
const route = useRoute() const route = useRoute()
// 画像数据 // 画像数据
...@@ -34,6 +37,13 @@ const getFields = function (data: { fields: any }) { ...@@ -34,6 +37,13 @@ const getFields = function (data: { fields: any }) {
const getDate = function (date: string) { const getDate = function (date: string) {
return parseInt(date.slice(date.indexOf(' '), date.indexOf(' ') + 3)) > 12 ? '下午' : '上午' return parseInt(date.slice(date.indexOf(' '), date.indexOf(' ') + 3)) > 12 ? '下午' : '上午'
} }
const viewEventVisible = ref(false)
const currentViewEvent = ref()
function handleViewEvent(item: any) {
viewEventVisible.value = true
currentViewEvent.value = item
}
</script> </script>
<template> <template>
...@@ -138,7 +148,7 @@ const getDate = function (date: string) { ...@@ -138,7 +148,7 @@ const getDate = function (date: string) {
</AppCard> </AppCard>
<AppCard class="card" title="用户行为轨迹"> <AppCard class="card" title="用户行为轨迹">
<el-empty v-if="!data?.events?.list || !data?.events?.list.length" description="暂无数据" :image-size="80" /> <el-empty v-if="!data?.events?.list || !data?.events?.list.length" description="暂无数据" :image-size="80" />
<div class="event-box" v-for="item in data?.events?.list" v-else> <div class="event-box" v-for="item in data?.events?.list" :key="item.id" v-else>
<div class="date">{{ item.updated_time?.slice(0, item.updated_time.indexOf(' ')) }}</div> <div class="date">{{ item.updated_time?.slice(0, item.updated_time.indexOf(' ')) }}</div>
<div class="event-content"> <div class="event-content">
<div class="time"> <div class="time">
...@@ -147,12 +157,19 @@ const getDate = function (date: string) { ...@@ -147,12 +157,19 @@ const getDate = function (date: string) {
</div> </div>
<Icon class="icon" :multicolour="true" :name="item.connection_type" w="20" h="20"></Icon> <Icon class="icon" :multicolour="true" :name="item.connection_type" w="20" h="20"></Icon>
<div class="event"> <div class="event">
<span>"{{ item.connection_name }}"</span><span>"{{ item.event_name }}"</span> <span>"{{ item.connection_name }}"</span>
<span style="cursor: pointer" @click="handleViewEvent(item)">"{{ item.event_name }}"</span>
</div> </div>
</div> </div>
</div> </div>
</AppCard> </AppCard>
</div> </div>
<!-- 事件详情 -->
<ViewEvent
v-model="viewEventVisible"
:event="currentViewEvent"
:user="data"
v-if="viewEventVisible && currentViewEvent"></ViewEvent>
</template> </template>
<style lang="scss"> <style lang="scss">
.info-box { .info-box {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论