jiuyiUniapp/jiuyi2/pages/index/dataCenter/dataCenter.vue

342 lines
7.1 KiB
Vue
Raw Normal View History

2024-12-18 15:46:27 +08:00
<script setup>
// 数据中心
import {
2025-01-25 21:43:01 +08:00
ref,
reactive,
computed,
2024-12-18 15:46:27 +08:00
} from 'vue';
2025-01-25 21:43:01 +08:00
import {
onLoad,
onReady,
onHide,
onUnload,
} from '@dcloudio/uni-app'
//
import api from '@/api/index.js'
2024-12-18 15:46:27 +08:00
//
2025-01-25 21:43:01 +08:00
import util from '@/common/js/util.js'
import {
useStore
} from 'vuex'
// 顶部导航
2024-12-18 15:46:27 +08:00
import apex from '@/components/header/apex.vue'
2025-01-25 21:43:01 +08:00
// 支付密码
import payPwd from '@/components/mine/payPwd.vue'
//
const store = useStore()
2024-12-18 15:46:27 +08:00
// 配置项
const opts = reactive({
color: ["#D8D8D8", "#C2ECFF", "#FFD2D2", "#C2FFCC", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4", "#ea7ccc"],
padding: [0, 35, 0, 0],
touchMoveLimit: 24,
enableScroll: true,
legend: {
padding: 20,
margin: 30,
position: 'top',
backgroundColor: 'rgb(0,0,0)',
fontColor: '#fff',
itemGap: 10,
},
xAxis: {
titleFontSize: 16,
disableGrid: true,
scrollShow: true,
itemCount: 10,
showTitle: true,
title: '秒数',
},
yAxis: {
data: [{
min: 0,
titleFontSize: 16,
title: '人数',
}],
showTitle: true,
},
extra: {
column: {
type: "group",
width: 5,
activeBgColor: "#000000",
activeBgOpacity: 0.08
},
}
})
2025-01-25 21:43:01 +08:00
// 图表数据
const chartData = reactive({})
// 详情
const detail = reactive({})
// 视频id
const videoId = ref('')
// 是否解锁
const isLock = ref(false)
// 系统配置
const config = computed(() => {
return store.state.config
})
onLoad((option) => {
if (option.videoId) videoId.value = option.videoId
// 获取详情
getDetail()
// 获取流量统计
getFlow()
})
// 查看流量
function getFlow() {
api.video.getFlow({
data: {
videoId: videoId.value,
},
}).then(res => {
if (res.code === 200) {
const result = res.data
// 是否解锁
if (result.isLock) Object.assign(chartData, {}, res.data)
isLock.value = result.isLock
return
}
util.alert({
content: res.msg,
showCancel: false,
})
})
}
// 详情
function getDetail() {
api.video.getStatistics({
data: {
videoId: videoId.value,
},
}).then(res => {
if (res.code === 200) {
// 详情
Object.assign(detail, {}, res.data)
return
}
util.alert({
content: res.msg,
showCancel: false,
})
})
}
// 解锁查看流量统计表
function handleUnlock() {
api.video.unlockStatistics({}).then(res => {
if (res.code === 200) {
// 获取流量统计
getFlow()
return
}
util.alert({
content: res.msg,
showCancel: false,
})
})
}
2024-12-18 15:46:27 +08:00
/**
* 跳转
* @param {Object} url 路径参数
*/
function link(url) {
uni.navigateTo({
url,
})
}
</script>
<template>
<view class="app">
<apex title="数据中心">
<template #right>
2025-01-25 21:43:01 +08:00
<view class="rows c999 f24" @click="link(util.setUrl('/pages/index/dataCenter/like',{videoId: videoId}))">
2024-12-18 15:46:27 +08:00
<view class="ver mr10">
<image class="wh26" src="/static/indexLike1.png" mode="aspectFit" />
<view>公开赞</view>
</view>
<view class="ver mr10">
<image class="wh26" src="/static/privateLike.png" mode="aspectFit" />
<view>隐私赞</view>
</view>
</view>
</template>
</apex>
<!-- 顶部 -->
<view class="apex ptb30 plr30 bfff">
<view class="rows">
<view class="title c333 f36 b">统计中心</view>
</view>
<!-- 查看时间 -->
2025-01-25 21:43:01 +08:00
<view class="line mt20 c999 f26">统计时间{{detail.statisticsTime}}</view>
2024-12-18 15:46:27 +08:00
</view>
<!-- 视频详情 -->
<view class="video df mtb20 ptb20 plr30 bfff">
2025-01-25 21:43:01 +08:00
<image class="poster br10" :src="detail.coverUrl" mode="aspectFill" />
2024-12-18 15:46:27 +08:00
<view class="info df fdc jcsb f1 ml30">
2025-01-25 21:43:01 +08:00
<view class="title t2hd f34 c111">{{detail.title}}</view>
<view class="desc t2hd f28 c666">{{detail.description}}</view>
<view class="time f26 c999">{{detail.createTime}}</view>
2024-12-18 15:46:27 +08:00
</view>
</view>
<view class="container">
<view class="rows">
<view class="title">流量统计</view>
2025-01-25 21:43:01 +08:00
<view class="lock rows ptb5 plr20 bar cfff f28" :class="{'active': !isLock}">
2024-12-18 15:46:27 +08:00
<image class="lockImg wh30" src="/static/dataLock.png" mode="aspectFit" />
<image class="unlockImg wh30" src="/static/dataUnlock.png" mode="aspectFit" />
2025-01-25 21:43:01 +08:00
<view class="ml5" v-if="!isLock" @click="$refs.payPwdRef.open()">去解锁</view>
<view class="ml5" v-else>已解锁</view>
2024-12-18 15:46:27 +08:00
</view>
</view>
2025-01-25 21:43:01 +08:00
<view class="charts" v-if="isLock">
2024-12-18 15:46:27 +08:00
<qiun-data-charts type="column" :opts="opts" :chartData="chartData" :ontouch="true" />
</view>
<view class="mtb30 fmid" v-else>
<view>点击消耗榴莲果</view>
<image class="wh30" src="/static/fruit.png" mode="aspectFit" />
2025-01-25 21:43:01 +08:00
<view>{{config.UNLOCK_FLOW_STATISTICS}}解锁查看24h</view>
2024-12-18 15:46:27 +08:00
</view>
</view>
<view class="container">
<view class="title">数据统计</view>
<view class="dataList">
<view class="main">
<!-- <view class="item tac">
<view class="key">公开赞</view>
<view class="value">1000</view>
</view>
<view class="item tac">
<view class="key">隐私赞</view>
<view class="value">20</view>
</view> -->
<view class="item tac">
<view class="key">展播量推流</view>
2025-01-25 21:43:01 +08:00
<view class="value">{{detail.exhibitionScreening}}</view>
2024-12-18 15:46:27 +08:00
</view>
<view class="item tac">
<view class="key">完播量推流</view>
2025-01-25 21:43:01 +08:00
<view class="value">{{detail.completeViewing}}</view>
2024-12-18 15:46:27 +08:00
</view>
<view class="item tac">
<view class="key">评论</view>
2025-01-25 21:43:01 +08:00
<view class="value">{{detail.commentCount}}</view>
2024-12-18 15:46:27 +08:00
</view>
<view class="item tac">
<view class="key">收藏</view>
2025-01-25 21:43:01 +08:00
<view class="value">{{detail.collectCount}}</view>
2024-12-18 15:46:27 +08:00
</view>
</view>
<view class="item tac mt20" @click="link('/pages/index/dataCenter/otherPush')">
<view class="key">他人推广</view>
2025-01-25 21:43:01 +08:00
<view class="value">{{detail.othersPromotionCount}}</view>
2024-12-18 15:46:27 +08:00
</view>
<view class="item tac mt20">
<view class="key">下单数量</view>
2025-01-25 21:43:01 +08:00
<view class="value">{{detail.placeAnOrderCount}}</view>
2024-12-18 15:46:27 +08:00
</view>
</view>
</view>
<view class="fill" style="height: 30rpx;"></view>
2025-01-25 21:43:01 +08:00
<!-- 支付密码 -->
<payPwd ref="payPwdRef" :check="true" @confirm="handleUnlock" />
2024-12-18 15:46:27 +08:00
</view>
</template>
<style lang="scss" scoped>
// 页面标题
.apex {
border-bottom: 2rpx solid #eee;
}
// 视频
.video {
.poster {
height: 288rpx;
width: 162rpx;
}
}
// 锁
.lock {
background-color: #FF9B27;
.lockImg {
display: none;
}
.unlockImg {
display: block;
}
&.active {
background-color: #ddd;
.lockImg {
display: block;
}
.unlockImg {
display: none;
}
}
}
// 内容
.container {
margin: 30rpx;
padding: 30rpx 20rpx;
background-color: #fff;
border-radius: 20rpx;
// 标题
.title {
margin: 0 30rpx;
font-size: 30rpx;
font-weight: bold;
}
// 图表
.charts {
height: 700rpx;
}
// 数据列表
.dataList {
margin-top: 30rpx;
.main {
display: grid;
grid-template-columns: repeat(2, 1fr);
grid-gap: 20rpx;
}
.item {
padding: 30rpx 0;
background-color: #f8f8f8;
border-radius: 20rpx;
.value {
margin-top: 10rpx;
font-size: 40rpx;
font-weight: bold;
}
}
}
}
</style>