Kaynağa Gözat

直播数据上线

朱鑫波 3 yıl önce
ebeveyn
işleme
a3eca04a76

+ 665 - 0
src/views/modules/Statistics/components/live-data-service.js

@@ -0,0 +1,665 @@
+/**
+ * @file 直播数据
+ * @author zhuxinbo(zhuxinbo@c-top.com.cn)
+ */
+
+class liveDataAll {
+    constructor() { }
+    // 相关账户的table列表
+    materialColumns() {
+        return [
+            {
+                title: '时间',
+                dataIndex: 'statDate',
+                scopedSlots: { customRender: 'statDate' },
+                align: 'center',
+                key: 'statDate',
+            },
+            {
+                title: '视频ID',
+                dataIndex: 'videoId',
+                scopedSlots: { customRender: 'videoId' },
+                align: 'center',
+                key: 'videoId',
+            },
+            {
+                title: '视频url',
+                dataIndex: 'videoUrl',
+                scopedSlots: { customRender: 'videoUrl' },
+                align: 'center',
+                key: 'videoUrl',
+                width: 200,
+            },
+            {
+                title: '花费(元)',
+                dataIndex: 'charge',
+                scopedSlots: { customRender: 'charge' },
+                align: 'center',
+                key: 'charge',
+            },
+            {
+                title: '曝光数',
+                dataIndex: 'shows',
+                scopedSlots: { customRender: 'shows' },
+                align: 'center',
+                key: 'shows',
+            },
+            {
+                title: '封面曝光数',
+                dataIndex: 'photoShow',
+                scopedSlots: { customRender: 'photoShow' },
+                align: 'center',
+                key: 'photoShow',
+            },
+            {
+                title: '封面点击率',
+                dataIndex: 'photoClickRatio',
+                align: 'center',
+                key: 'photoClickRatio',
+                customRender:function(t){
+                    if(t){
+                        return (t*100).toFixed(2)+'%'
+                    }else{
+                        return '-'
+                    }
+                }
+            },
+            {
+                title: '素材曝光数',
+                dataIndex: 'aclick',
+                scopedSlots: { customRender: 'aclick' },
+                align: 'center',
+                key: 'aclick',
+            },
+            {
+                title: '行为数',
+                dataIndex: 'bclick',
+                scopedSlots: { customRender: 'bclick' },
+                align: 'center',
+                key: 'bclick',
+            },
+            {
+                title: '行为率',
+                dataIndex: 'actionRatio',
+                customRender:function(t){
+                    if(t){
+                        return (t*100).toFixed(2)+'%'
+                    }else{
+                        return '-'
+                    }
+                },
+                align: 'center',
+                key: 'actionRatio',
+            },
+            {
+                title: '作品点赞数',
+                dataIndex: 'likes',
+                scopedSlots: { customRender: 'likes' },
+                align: 'center',
+                key: 'likes',
+            },
+            {
+                title: '作品分享数',
+                dataIndex: 'shares',
+                scopedSlots: { customRender: 'shares' },
+                align: 'center',
+                key: 'shares',
+            },
+            {
+                title: '作品评论数',
+                dataIndex: 'comments',
+                scopedSlots: { customRender: 'comments' },
+                align: 'center',
+                key: 'comments',
+            },
+            {
+                title: '作品3秒播放数',
+                dataIndex: 'play3sCount',
+                scopedSlots: { customRender: 'play3sCount' },
+                align: 'center',
+                key: 'play3sCount',
+            },
+            {
+                title: '预约成功数',
+                dataIndex: 'eventAppointSuccess',
+                scopedSlots: { customRender: 'eventAppointSuccess' },
+                align: 'center',
+                key: 'eventAppointSuccess',
+            },
+            {
+                title: '直播观看数',
+                dataIndex: 'liveWatchCount',
+                scopedSlots: { customRender: 'liveWatchCount' },
+                align: 'center',
+                key: 'liveWatchCount',
+            },
+            {
+                title: '直接订单数',
+                dataIndex: 'liveOrderCount',
+                scopedSlots: { customRender: 'liveOrderCount' },
+                align: 'center',
+                key: 'liveOrderCount',
+            },
+            {
+                title: '直接GMV',
+                dataIndex: 'liveGmv',
+                scopedSlots: { customRender: 'liveGmv' },
+                align: 'center',
+                key: 'liveGmv',
+            },
+            {
+                title: '直接ROI',
+                dataIndex: 'liveRoi',
+                scopedSlots: { customRender: 'liveRoi' },
+                align: 'center',
+                key: 'liveRoi',
+            },
+            {
+                title: '涨粉数',
+                dataIndex: 'liveFans',
+                scopedSlots: { customRender: 'liveFans' },
+                align: 'center',
+                key: 'liveFans',
+            },
+            {
+                title: '次日涨粉留存数',
+                dataIndex: 'liveNextDayFans',
+                scopedSlots: { customRender: 'liveNextDayFans' },
+                align: 'center',
+                key: 'liveNextDayFans',
+            },
+            {
+                title: '次日涨粉留存率',
+                dataIndex: 'liveNextDayFansRoi',
+                customRender:function(t){
+                    if(t){
+                        return (t*100).toFixed(2)+'%'
+                    }else{
+                        return '-'
+                    }
+                },
+                align: 'center',
+                key: 'liveNextDayFansRoi',
+            },
+            {
+                title: '7日涨粉留存数',
+                dataIndex: 'liveFans7d',
+                scopedSlots: { customRender: 'liveFans7d' },
+                align: 'center',
+                key: 'liveFans7d',
+            },
+            {
+                title: '7日涨粉留存率',
+                dataIndex: 'liveFans7dRoi',
+                customRender:function(t){
+                    if(t){
+                        return (t*100).toFixed(2)+'%'
+                    }else{
+                        return '-'
+                    }
+                },
+                align: 'center',
+                key: 'liveFans7dRoi',
+            },
+            {
+                title: '15日涨粉留存数',
+                dataIndex: 'liveFans15d',
+                scopedSlots: { customRender: 'liveFans15d' },
+                align: 'center',
+                key: 'liveFans15d',
+            },
+            {
+                title: '15日涨粉留存率',
+                dataIndex: 'liveFans15dRoi',
+                customRender:function(t){
+                    if(t){
+                        return (t*100).toFixed(2)+'%'
+                    }else{
+                        return '-'
+                    }
+                },
+                align: 'center',
+                key: 'liveFans15dRoi',
+            },
+        ]
+
+    }
+
+    touchColumns() {
+        return [
+            {
+                title: '时间',
+                dataIndex: 'statDate',
+                scopedSlots: { customRender: 'statDate' },
+                align: 'center',
+                key: 'statDate',
+            },
+            {
+                title: '粉丝分层',
+                dataIndex: 'fanStrat',
+                scopedSlots: { customRender: 'fanStrat' },
+                align: 'center',
+                key: 'fanStrat'
+            },
+            {
+                title: '客群分层',
+                dataIndex: 'customerStrat',
+                scopedSlots: { customRender: 'customerStrat' },
+                align: 'center',
+                key: 'customerStrat',
+            },
+            {
+                title: '花费(元)',
+                dataIndex: 'charge',
+                scopedSlots: { customRender: 'charge' },
+                align: 'center',
+                key: 'charge',
+            },
+            {
+                title: '当日累计GMV',
+                dataIndex: 'todayCumulativeGmv',
+                scopedSlots: { customRender: 'todayCumulativeGmv' },
+                align: 'center',
+                key: 'todayCumulativeGmv',
+            },
+            {
+                title: '当日累计ROI',
+                dataIndex: 'todayCumulativeRoi',
+                scopedSlots: { customRender: 'todayCumulativeRoi' },
+                align: 'center',
+                key: 'todayCumulativeRoi',
+            },
+            {
+                title: '当日累计订单数',
+                dataIndex: 'todayCumulativeOrderCount',
+                scopedSlots: { customRender: 'todayCumulativeOrderCount' },
+                align: 'center',
+                key: 'todayCumulativeOrderCount',
+            },
+            {
+                title: '曝光用户数',
+                dataIndex: 'showUsers',
+                scopedSlots: { customRender: 'showUsers' },
+                align: 'center',
+                key: 'showUsers',
+            },
+            {
+                title: '购买用户数',
+                dataIndex: 'buyUsers',
+                scopedSlots: { customRender: 'buyUsers' },
+                align: 'center',
+                key: 'buyUsers',
+            },
+            {
+                title: '购买转化率',
+                dataIndex: 'buyRatio',
+                customRender:function(t){
+                    if(t){
+                        return (t*100).toFixed(2)+'%'
+                    }else{
+                        return '-'
+                    }
+                },
+                align: 'center',
+                key: 'buyRatio',
+            },
+            {
+                title: 'ARPU',
+                dataIndex: 'arpu',
+                scopedSlots: { customRender: 'arpu' },
+                align: 'center',
+                key: 'arpu',
+            },
+            {
+                title: 'UV价值',
+                dataIndex: 'uv',
+                scopedSlots: { customRender: 'uv' },
+                align: 'center',
+                key: 'uv',
+            },
+            {
+                title: '单均价',
+                dataIndex: 'averagePrice',
+                scopedSlots: { customRender: 'averagePrice' },
+                align: 'center',
+                key: 'averagePrice',
+            },
+
+        ]
+    }
+
+    customerColumns() {
+        return [
+            {
+                title: '花费',
+                dataIndex: 'charge',
+                scopedSlots: { customRender: 'charge' },
+                align: 'center',
+                key: 'charge',
+            },
+            {
+                title: '曝光数',
+                dataIndex: 'shows',
+                scopedSlots: { customRender: 'shows' },
+                align: 'center',
+                key: 'shows'
+            },
+            {
+                title: '封面曝光数',
+                dataIndex: 'photoShow',
+                scopedSlots: { customRender: 'photoShow' },
+                align: 'center',
+                key: 'photoShow',
+            },
+            {
+                title: '封面点击率',
+                dataIndex: 'photoClickRatio',
+                customRender:function(t){
+                    if(t){
+                        return (t*100).toFixed(2)+'%'
+                    }else{
+                        return '-'
+                    }
+                },
+                align: 'center',
+                key: 'photoClickRatio',
+            },
+            {
+                title: '素材曝光数',
+                dataIndex: 'aclick',
+                scopedSlots: { customRender: 'aclick' },
+                align: 'center',
+                key: 'aclick',
+            },
+            {
+                title: '行为数',
+                dataIndex: 'bclick',
+                scopedSlots: { customRender: 'bclick' },
+                align: 'center',
+                key: 'bclick',
+            },
+            {
+                title: '行为率',
+                dataIndex: 'actionRatio',
+                customRender:function(t){
+                    if(t){
+                        return (t*100).toFixed(2)+'%'
+                    }else{
+                        return '-'
+                    }
+                },
+                align: 'center',
+                key: 'actionRatio',
+            },
+            {
+                title: '直播间商品点击数',
+                dataIndex: 'productClick',
+                scopedSlots: { customRender: 'productClick' },
+                align: 'center',
+                key: 'productClick',
+            },
+            {
+                title: '作品点赞数',
+                dataIndex: 'likes',
+                scopedSlots: { customRender: 'likes' },
+                align: 'center',
+                key: 'likes',
+            },
+            {
+                title: '作品分享数',
+                dataIndex: 'shares',
+                scopedSlots: { customRender: 'shares' },
+                align: 'center',
+                key: 'shares',
+            },
+            {
+                title: '作品评论数',
+                dataIndex: 'comments',
+                scopedSlots: { customRender: 'comments' },
+                align: 'center',
+                key: 'comments',
+            },
+            {
+                title: '作品3秒播放数',
+                dataIndex: 'play3sCount',
+                scopedSlots: { customRender: 'play3sCount' },
+                align: 'center',
+                key: 'play3sCount',
+            },
+            {
+                title: '预约成功数',
+                dataIndex: 'eventAppointSuccess',
+                scopedSlots: { customRender: 'eventAppointSuccess' },
+                align: 'center',
+                key: 'eventAppointSuccess',
+            },
+
+            {
+                title: '直播观看数',
+                dataIndex: 'liveWatchCount',
+                scopedSlots: { customRender: 'liveWatchCount' },
+                align: 'center',
+                key: 'liveWatchCount',
+            },
+            {
+                title: '直播观看成本',
+                dataIndex: 'liveWatchCost',
+                scopedSlots: { customRender: 'liveWatchCost' },
+                align: 'center',
+                key: 'liveWatchCost',
+            },
+            {
+                title: '涨粉数',
+                dataIndex: 'liveFans',
+                scopedSlots: { customRender: 'liveFans' },
+                align: 'center',
+                key: 'liveFans',
+            },
+            {
+                title: '涨粉成本',
+                dataIndex: 'liveFansCost',
+                scopedSlots: { customRender: 'liveFansCost' },
+                align: 'center',
+                key: 'liveFansCost',
+            },
+
+        ]
+    }
+
+    adColumns() {
+        return [
+            {
+                title: '直播ID',
+                dataIndex: 'liveId',
+                scopedSlots: { customRender: 'liveId' },
+                align: 'center',
+                key: 'liveId',
+            },
+            {
+                title: '快手号',
+                dataIndex: 'kuaishouName',
+                scopedSlots: { customRender: 'kuaishouName' },
+                align: 'center',
+                key: 'kuaishouName'
+            },
+            {
+                title: '直播开始时间',
+                dataIndex: 'liveStartTime',
+                scopedSlots: { customRender: 'liveStartTime' },
+                align: 'center',
+                key: 'liveStartTime',
+            },
+            {
+                title: '直播结束时间',
+                dataIndex: 'liveEndTime',
+                scopedSlots: { customRender: 'liveEndTime' },
+                align: 'center',
+                key: 'liveEndTime',
+            },
+            {
+                title: '直播持续时间(分钟)',
+                dataIndex: 'liveDuration',
+                scopedSlots: { customRender: 'liveDuration' },
+                align: 'center',
+                key: 'liveDuration',
+            },
+            {
+                title: '主播ID',
+                dataIndex: 'anchorId',
+                scopedSlots: { customRender: 'anchorId' },
+                align: 'center',
+                key: 'anchorId',
+            },
+            {
+                title: '花费',
+                dataIndex: 'charge',
+                scopedSlots: { customRender: 'charge' },
+                align: 'center',
+                key: 'charge',
+            },
+            {
+                title: '行为数',
+                dataIndex: 'bclick',
+                scopedSlots: { customRender: 'bclick' },
+                align: 'center',
+                key: 'bclick',
+            },
+            {
+                title: '直播平均观看时长',
+                dataIndex: 'liveWatchAverageTime',
+                scopedSlots: { customRender: 'liveWatchAverageTime' },
+                align: 'center',
+                key: 'liveWatchAverageTime',
+            },
+            {
+                title: '直播间评论数',
+                dataIndex: 'liveComments',
+                scopedSlots: { customRender: 'liveComments' },
+                align: 'center',
+                key: 'liveComments',
+            },
+            {
+                title: '直播间分享数',
+                dataIndex: 'liveShares',
+                scopedSlots: { customRender: 'liveShares' },
+                align: 'center',
+                key: 'liveShares',
+            },
+            {
+                title: '直播间送礼数',
+                dataIndex: 'liveGifts',
+                scopedSlots: { customRender: 'liveGifts' },
+                align: 'center',
+                key: 'liveGifts',
+            },
+            {
+                title: '涨粉数',
+                dataIndex: 'liveFans',
+                scopedSlots: { customRender: 'liveFans' },
+                align: 'center',
+                key: 'liveFans',
+            },
+
+            {
+                title: '涨粉成本',
+                dataIndex: 'liveFansCost',
+                scopedSlots: { customRender: 'liveFansCost' },
+                align: 'center',
+                key: 'liveFansCost',
+            },
+            {
+                title: '直播观看数',
+                dataIndex: 'liveWatchCount',
+                scopedSlots: { customRender: 'liveWatchCount' },
+                align: 'center',
+                key: 'liveWatchCount',
+            },
+            {
+                title: '直接订单数',
+                dataIndex: 'liveOrderCount',
+                scopedSlots: { customRender: 'liveOrderCount' },
+                align: 'center',
+                key: 'liveOrderCount',
+            },
+            {
+                title: '直接GMV',
+                dataIndex: 'liveGmv',
+                scopedSlots: { customRender: 'liveGmv' },
+                align: 'center',
+                key: 'liveGmv',
+            },
+            {
+                title: '直接ROI',
+                dataIndex: 'liveRoi',
+                scopedSlots: { customRender: 'liveRoi' },
+                align: 'center',
+                key: 'liveRoi',
+            },
+        ]
+    }
+
+
+    accountColumns() {
+        return [
+            {
+                title: '账户名称(id)',
+                dataIndex: 'accountName',
+                align: 'center',
+                key: 'accountName',
+                scopedSlots: { customRender: 'accountName' },
+            },
+            {
+                title: '账户类型',
+                dataIndex: 'accountType',
+                align: 'center',
+                scopedSlots: { customRender: 'accountType' },
+            },
+            {
+                title: '产品名称',
+                dataIndex: 'productName',
+                align: 'center',
+                scopedSlots: { customRender: 'productName' },
+                width:300
+            },
+            {
+                title: '操作',
+                dataIndex: 'action',
+                align: 'center',
+                scopedSlots: { customRender: 'action' },
+            },
+        ]
+    }
+
+
+    recordColumns() {
+        return [
+            {
+                title: '账户ID',
+                dataIndex: 'accountId',
+                align: 'center',
+                key: 'accountId',
+                scopedSlots: { customRender: 'accountId' },
+            },
+            {
+                title: '创建时间',
+                dataIndex: 'statDate',
+                align: 'center',
+                scopedSlots: { customRender: 'statDate' },
+            },
+            {
+                title: '操作人ID',
+                dataIndex: 'userId',
+                align: 'center',
+                scopedSlots: { customRender: 'userId' },
+            },
+            {
+                title: '修改时间',
+                dataIndex: 'updateTime',
+                align: 'center',
+                scopedSlots: { customRender: 'updateTime' },
+            },
+        ]
+    }
+}
+
+export default new liveDataAll();

+ 1 - 1
src/views/modules/Statistics/kuaishouReport/accountReport.vue

@@ -1506,7 +1506,7 @@ export default {
                     }
                 })
 
-                this.scrollX = 1000 + 200 * (this.columns.length - this.columnsFixd.length)
+                this.scrollX = 1000 + 150 * (this.columns.length - this.columnsFixd.length)
             } else {
                 this.scrollX = 0
                 this.columns.forEach(element => {

+ 1 - 1
src/views/modules/Statistics/kuaishouReport/videoReport.vue

@@ -729,7 +729,7 @@ export default {
                     }
                 })
 
-                this.scrollX = 1000 + 200 * (this.columns.length - this.columnsFixd.length)
+                this.scrollX = 1000 + 150 * (this.columns.length - this.columnsFixd.length)
             } else {
                 this.scrollX = 0
                 this.columns.forEach(element => {

Dosya farkı çok büyük olduğundan ihmal edildi
+ 1586 - 0
src/views/modules/Statistics/liveData.vue


+ 9 - 0
src/views/modules/columnConst/accountConst.js

@@ -1014,6 +1014,15 @@ export const KScustomFields= [
           sorter: () => {}
         },
         {
+          title: '新增付费人数率',
+          dataIndex: 'eventNewUserPayRatio',
+          tip: '付费次数/激活数',
+          align: 'center',
+        
+          scopedSlots: { customRender: 'eventNewUserPayRatio' },
+          sorter: () => {}
+        },
+        {
           title: '安卓下载完成数',
           dataIndex: 'downloadFinish',
           tip: '安卓端调起下载器并完成下载的次数',

+ 2 - 2
src/views/modules/kuaishouapp/batchCreation/creat/creatUnit.vue

@@ -933,11 +933,11 @@
                <a-input placeholder="请输入视频名称" v-model="photoName"/>
             </a-form-item>
           </a-col>
-          <!-- <a-col :span="8" v-if="mediaDimension == 'a'">
+          <a-col :span="8" v-if="mediaDimension == 'a'">
             <a-form-item label="唯一标识" :labelCol="labelCol" :wrapperCol="wrapperCol">
                 <a-input placeholder="请输入唯一标识,多个以,隔开" v-model="md5Str"/>
             </a-form-item>
-          </a-col> -->
+          </a-col>
           <a-col :span="4">
             <a-button style="position: relative;top: 4px;" @click="selectAllVideo">
               全选

+ 7 - 4
src/views/modules/material/videoMaterial.vue

@@ -3554,7 +3554,7 @@ export default {
         this.$message.error('请选择素材')
       }else{
         this.passTheAuditLoading = true
-        this.postDataAction('/ctop/materialInfo/batchEditStatus', {ids:this.checkArr, status:'1'}).then(res=>{
+        this.postDataAction('/ctop/materialInfo/batchEditStatus', {ids:this.checkArr, status:'1',userId:this.userInfo().id}).then(res=>{
           this.passTheAuditLoading = false
           if(res.success){
             this.$message.success(res.message)
@@ -4362,7 +4362,8 @@ export default {
               item.roleCode == 'designTeamLeader' ||
               item.roleCode == 'shot' ||
               item.roleCode == 'plane' ||
-              item.roleCode == 'planeLeader'
+              item.roleCode == 'planeLeader'||
+              item.roleCode == 'externalClip'
             ) {
               return {
                 userId: item.userId,
@@ -4377,7 +4378,8 @@ export default {
               item.roleCode == 'plan' ||
               item.roleCode == 'designTeamLeader' ||
               item.roleCode == 'plane' ||
-              item.roleCode == 'planeLeader'
+              item.roleCode == 'planeLeader'||
+              item.roleCode == 'externalClip'
             ) {
               return {
                 userId: item.userId,
@@ -4392,7 +4394,8 @@ export default {
               item.roleCode == 'designTeamLeader' ||
               item.roleCode == 'clip' ||
               item.roleCode == 'plane' ||
-              item.roleCode == 'planeLeader'
+              item.roleCode == 'planeLeader'||
+              item.roleCode == 'externalClip'
             ) {
               return {
                 userId: item.userId,

+ 2 - 2
vue.config.js

@@ -108,7 +108,7 @@ module.exports = {
         // target: 'http://192.168.1.59:7701', //请求本地 需要jeecg-boot后台项目  赵西安
         // target: 'http://192.168.1.193:8080', //请求本地 需要jeecg-boot后台项目  李煜一
         // target: 'http://192.168.1.193:31012', //请求本地 需要jeecg-boot后台项目  李煜一
-        target: 'http://api.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目
+        // target: 'http://api.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目
         // target: 'https://trac.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目
         // target: 'http://39.106.184.70:8088/', //请求本地 需要jeecg-boot后台项目
         //  target: 'http://adsp.tjyourong.com.cn/', //请求本地 需要jeecg-boot后台项目
@@ -119,7 +119,7 @@ module.exports = {
         // target:'http://gateway.tjyourong.com.cn', //测试
         // target:'http://apipre.tjyourong.com.cn', //预生产
         // target: 'http://192.168.1.134:7001', //请求本地 需要jeecg-boot后台项目  周泽宇
-        // target:'http://192.168.0.195:9999/',
+        target:'http://192.168.0.195:9999/',
         // target:'http://gateway.tjyourong.com.cn/',//测试
 
         ws: false,