pages-uni-stat-user-overview-overview.BnYES-Se.js 9.2 KB

12
  1. import{_ as t,W as e,n as a,r as s,a as r,o as i,c as l,w as o,i as n,aD as d,g as u,z as c,h as p,j as m}from"./index-BAMs4g2N.js";import{_ as h}from"./uni-stat-breadcrumb.BZcF2zJw.js";import{_}from"./uni-data-select.UeW2d6Yw.js";import{_ as f}from"./uni-stat-tabs.SY9F3mAw.js";import{_ as g}from"./uni-stat-panel.X3T1D0jX.js";import{_ as b}from"./qiun-data-charts.D-NEYXGW.js";import{s as y,d as D,g as v,a as q,b as x,p as T,m as C,c as F,h as w}from"./util.BXBhmNoy.js";import"./uni-tooltip.BDlhxQuq.js";const V=[{value:"今天",contrast:"昨天"},{title:"新增用户",field:"new_user_count",tooltip:"首次访问应用的用户数(以用户为判断标准,去重)",value:0,contrast:0},{title:"活跃用户",field:"active_user_count",tooltip:"访问过应用内任意页面的总用户数,今日数据为每小时活跃用户累加(未虑重),昨日数据为全天活跃用户虑重后结果。",value:0,contrast:0},{title:"次均停留时长",field:"avg_user_session_time",formatter:":",tooltip:"平均每次打开应用停留在应用内的总时长,即应用停留总时长/启动次数",value:0,contrast:0,stat:"avg"},{title:"人均停留时长 ",field:"avg_user_time",formatter:":",tooltip:"平均每个用户停留在应用内的总时长,即应用停留总时长/活跃用户",value:0,contrast:0,stat:"avg"},{title:"总用户数",field:"total_users",tooltip:"从添加统计到当前选择时间的总用户数(去重)",value:0,contrast:0}],S=[{title:"受访页",field:"path",tooltip:"用户进入应用访问的所有页面,例如用户从页面1进入应用,跳转到页面2,1,2均为受访页",formatter:""},{title:"访问次数",field:"visit_times",tooltip:"访问该页面的总次数",value:0},{title:"占比",field:"rate",computed:"visit_times/total_app_access",tooltip:"某个页面的访问次数占所有页面访问次数的比例",formatter:"%"}],I=[{title:"入口页",field:"path",tooltip:"用户进入应用访问的第一个页面,例如用户从页面1进入应用,跳转到页面2,1为入口页,而2不是",formatter:""},{title:"访问次数",field:"entry_count",tooltip:"访问该页面的总次数",value:0},{title:"占比",field:"rate",computed:"entry_count/total_app_access",tooltip:"某个页面的访问次数占所有页面访问次数的比例",formatter:"%"}],N=V.filter((t=>t.hasOwnProperty("value")));const j=t({data:()=>({tableName:"uni-stat-result",fieldsMap:V,resFieldsMap:S,entFieldsMap:I,query:{dimension:"hour",appid:"",platform_id:"",uni_platform:"",version_id:"",start_time:[]},options:{pageCurrent:1,total:0,pageSizeIndex:0,pageSizeRange:[10,20,50,100]},loading:!1,currentDateTab:2,chartTab:"new_user_count",tableData:[],resTableData:[],entTableData:[],panelData:N,chartData:{},eopts:{seriesTemplate:[{itemStyle:{borderWidth:2,borderColor:"#1890FF",color:"#1890FF"},areaStyle:{color:{colorStops:[{offset:0,color:"#1890FF"},{offset:1,color:"#FFFFFF"}]}}},{lineStyle:{color:"#ea7ccc",width:2,type:"dashed"},itemStyle:{borderWidth:1,borderColor:"#ea7ccc",color:"#ea7ccc"},areaStyle:null}]},tabIndex:0,errorMessage:""}),onLoad(t){const{appid:e}=t;e&&(this.query.appid=e)},computed:{pageSize(){const{pageSizeRange:t,pageSizeIndex:e}=this.options;return t[e]},chartTabs(){const t=[];return V.forEach((e=>{const a=e.field,s=e.title;a&&s&&t.push({_id:a,name:s})})),t},versionQuery(){const{appid:t,uni_platform:e}=this.query;return y({appid:t,uni_platform:e})},channelQuery(){const{appid:t,platform_id:e}=this.query;return y({appid:t,platform_id:e})}},created(){this.debounceGet=D((()=>{this.getAllData(this.query)}),300)},watch:{query:{deep:!0,handler(t){this.options.pageCurrent=1,this.debounceGet()}}},methods:{useDatetimePicker(){this.currentDateTab=null},changePlatform(t,e,a,s){this.query.version_id=0,this.query.uni_platform=s.code},changeTimeRange(t,e){this.currentDateTab=e;let a,s;a=v(t),s=t?v(0)-1:v(0)+864e5-1,this.query.start_time=[a,s]},changePageCurrent(t){this.options.pageCurrent=t.current,this.getChartData(this.query)},changePageSize(t){const{value:e}=t.detail;this.options.pageCurrent=1,this.options.pageSizeIndex=e,this.getChartData(this.query)},changeChartTab(t,e,a){this.tabIndex=e,this.getChartData(this.query,t,a)},getAllData(t){t.appid?(this.errorMessage="",this.getPanelData(),this.getChartData(t)):this.errorMessage="请先选择应用"},getDays(){if(!this.query.start_time.length)return!0;const[t,e]=this.query.start_time;return e-t>=864e5},getPanelData(){const{appid:t,platform_id:a,version_id:s}=this.query,r=y({appid:t,platform_id:a,version_id:s,start_time:[v(1),(new Date).getTime()]});e.database().collection(this.tableName).where(r).field(`${q(V)},dimension,stat_date`).groupBy("stat_date, dimension").groupField(x(V)).orderBy("stat_date","desc").get().then((t=>{const e=t.result.data,a=e.find((t=>t.stat_date===T(v(0),"","")))||{};a.total_users=0;const s=e.find((t=>"day"===t.dimension&&t.stat_date===T(v(1),"","")));this.panelData=[],this.panelData=C(V,a),this.panelData.map((t=>{C(V,s,t,"","contrast")})),F.call(this,r,"total_users")}))},getChartData(t,a=this.chartTabs[this.tabIndex]._id,s=this.chartTabs[this.tabIndex].name){this.options;const r=this.currentDateTab,i=v(r),l=864e5;let o;if(!this.getDays()){const e=i-l,a=i+l-1;t=JSON.parse(JSON.stringify(t)),o=t.start_time=[e,a]}t=y(t,!0,["uni_platform"]);e.database().collection(this.tableName).where(t).field(`${q(V,a)}, start_time`).groupBy("start_time").groupField(x(V,a)).orderBy("start_time","asc").get({getCount:!0}).then((t=>{const{count:e,data:r}=t.result,l={categories:[],series:[{name:s,data:[]}]};let n=V.filter((t=>t.field===a));if(n=JSON.parse(JSON.stringify(n)),delete n[0].value,n[0].formatter="",this.getDays())for(const s of r){C(n,s,s);const t=w(s.start_time,"day");let e=Number(s[a]);l.series[0].data.push(e),l.categories.push(t)}else{const[t,e]=o,s=l.series[1]={name:w(t),data:[]},d=l.series[0]={name:w(e),data:[]};for(let o=0;o<24;++o){const t=o<10?"0"+o:o,e=`${t}:00 ~ ${t}:59`;l.categories.push(e),s.data[o]=0,d.data[o]=0,r.forEach((t=>{C(n,t,t);let e=Number(t[a]);const r=new Date(t.start_time);t.start_time<i?r.getHours()===o&&(s.data[o]=e):r.getHours()===o&&(d.data[o]=e)}))}}this.chartData=l})).catch((t=>{console.error(t)})).finally((()=>{}))},getAppAccessTimes(t){return e.database().collection(this.tableName).where(t).groupBy("appid").groupField("sum(page_visit_count) as total_app_access").get()},navTo(t){t&&a({url:t})}}},[["render",function(t,e,a,y,D,v){const q=s(r("uni-stat-breadcrumb"),h),x=n,T=s(r("uni-data-select"),_),C=s(r("uni-stat-tabs"),f),F=s(r("uni-datetime-picker"),d),w=s(r("uni-stat-panel"),g),V=s(r("qiun-data-charts"),b);return i(),l(x,{class:"fix-top-window"},{default:o((()=>[u(x,{class:"uni-header"},{default:o((()=>[u(q,{class:"uni-stat-breadcrumb-on-phone"})])),_:1}),u(x,{class:"uni-container"},{default:o((()=>[u(x,{class:"uni-stat--x flex p-1015"},{default:o((()=>[u(x,{class:"uni-stat--app-select"},{default:o((()=>[u(T,{collection:"opendb-app-list",field:"appid as value, name as text",orderby:"text asc",defItem:1,label:"应用选择",modelValue:D.query.appid,"onUpdate:modelValue":e[0]||(e[0]=t=>D.query.appid=t),clear:!1},null,8,["modelValue"]),u(T,{collection:"opendb-app-versions",where:v.versionQuery,class:"ml-m",field:"_id as value, version as text, uni_platform as label, create_date as date",format:"{label} - {text}",orderby:"date desc",label:"版本选择",modelValue:D.query.version_id,"onUpdate:modelValue":e[1]||(e[1]=t=>D.query.version_id=t)},null,8,["where","modelValue"])])),_:1})])),_:1}),u(x,{class:"uni-stat--x flex"},{default:o((()=>[u(C,{label:"日期选择",current:D.currentDateTab,mode:"date",today:!0,onChange:v.changeTimeRange},null,8,["current","onChange"]),u(F,{type:"datetimerange",end:(new Date).getTime(),modelValue:D.query.start_time,"onUpdate:modelValue":e[2]||(e[2]=t=>D.query.start_time=t),returnType:"timestamp",clearIcon:!1,class:c(["uni-stat-datetime-picker",{"uni-stat__actived":D.currentDateTab<0&&!!D.query.start_time.length}]),onChange:v.useDatetimePicker},null,8,["end","modelValue","class","onChange"])])),_:1}),u(x,{class:"uni-stat--x"},{default:o((()=>[u(C,{label:"平台选择",type:"boldLine",mode:"platform",modelValue:D.query.platform_id,"onUpdate:modelValue":e[3]||(e[3]=t=>D.query.platform_id=t),onChange:v.changePlatform},null,8,["modelValue","onChange"]),D.query.platform_id&&-1===D.query.platform_id.indexOf("==")?(i(),l(T,{key:0,ref:"version-select",collection:"uni-stat-app-channels",where:v.channelQuery,class:"p-channel",field:"_id as value, channel_name as text",orderby:"text asc",label:"渠道/场景值选择",modelValue:D.query.channel_id,"onUpdate:modelValue":e[4]||(e[4]=t=>D.query.channel_id=t)},null,8,["where","modelValue"])):p("",!0)])),_:1}),u(w,{items:D.panelData,contrast:!0},null,8,["items"]),u(x,{class:"uni-stat--x p-m"},{default:o((()=>[u(x,{class:"uni-stat-card-header"},{default:o((()=>[m(" 趋势图 ")])),_:1}),u(C,{type:"box",modelValue:D.chartTab,"onUpdate:modelValue":e[5]||(e[5]=t=>D.chartTab=t),tabs:v.chartTabs,class:"mb-l",onChange:v.changeChartTab},null,8,["modelValue","tabs","onChange"]),u(x,{class:"uni-charts-box"},{default:o((()=>[u(V,{type:"area",chartData:D.chartData,eopts:D.eopts,echartsH5:"",echartsApp:"",tooltipFormat:"tooltipCustom",errorMessage:D.errorMessage},null,8,["chartData","eopts","errorMessage"])])),_:1})])),_:1})])),_:1})])),_:1})}],["__scopeId","data-v-879a6a03"]]);export{j as default};