Files
t-admin/unpackage/dist/build/web/assets/pages-uni-stat-device-overview-overview.CUt8_ugO.js
T
2025-06-13 21:16:12 +08:00

2 lines
14 KiB
JavaScript

import{_ as t,e,n as a,r as s,a as l,c as i,w as o,i as n,am as r,E as d,b as u,d as c,f as p,g as h,o as m,h as _,a0 as f,q as g,j as y,k as b,l as v,F as D,aq as T,t as q}from"./index-CS85kPhe.js";import{_ as x}from"./uni-stat-breadcrumb.xQt2SQkt.js";import{_ as C}from"./uni-data-select.CTvmxnrn.js";import{_ as k}from"./uni-stat-tabs.BqxEYTBM.js";import{_ as F}from"./uni-stat-panel.BC5-OoT8.js";import{_ as w}from"./qiun-data-charts.DPCUsCu6.js";import{_ as S}from"./uni-tooltip.Bon-gzRk.js";import{s as V,d as N,g as P,a as M,b as O,p as j,m as I,c as $,h as A}from"./util.BgZN-4QF.js";const z=[{value:"今天",contrast:"昨天"},{title:"新增设备",field:"new_device_count",tooltip:"首次访问应用的设备数(以设备为判断标准,去重)",value:0,contrast:0},{title:"活跃设备",field:"active_device_count",tooltip:"访问过应用内任意页面的总设备数,今日数据为每小时活跃设备累加(未虑重),昨日数据为全天活跃设备虑重后结果",value:0,contrast:0},{title:"访问次数",field:"page_visit_count",tooltip:"访问过应用内任意页面总次数,多个页面之间跳转、同一页面的重复访问计为多次访问",value:0,contrast:0},{title:"启动次数",field:"app_launch_count",tooltip:"设备从打开应用到主动关闭应用或超时退出计为一次启动",value:0,contrast:0},{title:"次均停留时长",field:"avg_device_session_time",computed:"duration/app_launch_count",formatter:":",tooltip:"平均每次打开应用停留在应用内的总时长,即应用停留总时长/启动次数",value:0,contrast:0},{title:"设备平均停留时长 ",field:"avg_device_time",computed:"duration/active_device_count",formatter:":",tooltip:"平均每个设备停留在应用内的总时长,即应用停留总时长/活跃设备",value:0,contrast:0},{title:"跳出率",field:"bounceRate",computed:"bounce_times/app_launch_count",formatter:"%",tooltip:"只浏览一个页面便离开应用的次数占总启动次数的百分比",value:0,contrast:0,fix:2},{title:"总设备数",field:"total_devices",tooltip:"从添加统计到当前选择时间的总设备数(去重)",value:0,contrast:0}],B=[{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:"%"}],J=[{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:"%"}],U=z.filter((t=>t.hasOwnProperty("value")));const R=t({data:()=>({tableName:"uni-stat-result",fieldsMap:z,resFieldsMap:B,entFieldsMap:J,query:{dimension:"hour",appid:"",version_id:"",platform_id:"",uni_platform:"",start_time:[],channel_id:""},options:{pageCurrent:1,total:0,pageSizeIndex:0,pageSizeRange:[10,20,50,100]},errorMessage:"",loading:!1,currentDateTab:2,chartTab:"new_user_count",tableData:[],resTableData:[],entTableData:[],panelData:U,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,tabName:"新增设备"}),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 z.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 V({appid:t,uni_platform:e})},channelQuery(){const{appid:t,platform_id:e}=this.query;return V({appid:t,platform_id:e})}},created(){this.debounceGet=N((()=>{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=P(t),s=t?P(0)-1:P(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.tabName=a,this.getChartData(this.query,t,a)},getAllData(t){t.appid?(this.errorMessage="",this.getPanelData(),this.getChartData(t),this.getPageData(t,"res"),this.getPageData(t,"ent")):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,channel_id:l}=this.query;let i=V({appid:t,platform_id:a,version_id:s,channel_id:l,start_time:[P(1),(new Date).getTime()]});e.database().collection(this.tableName).where(i).field(`${M(z)},dimension,stat_date`).groupBy("stat_date, dimension").groupField(O(z)).orderBy("stat_date","desc").get().then((t=>{const e=t.result.data,a=e.find((t=>t.stat_date===j(P(0),"","")))||{};a.total_devices=0;const s=e.find((t=>"day"===t.dimension&&t.stat_date===j(P(1),"","")));this.panelData=[],this.panelData=I(z,a),this.panelData.map((t=>{I(z,s,t,"","contrast")})),$.call(this,i)}))},getChartData(t,a=this.chartTabs[this.tabIndex]._id,s=this.chartTabs[this.tabIndex].name){this.options;const l=this.currentDateTab,i=P(l),o=864e5;let n;if(!this.getDays()){const e=i-o,a=i+o-1;t=JSON.parse(JSON.stringify(t)),n=t.start_time=[e,a]}t=V(t,!0,["uni_platform"]);e.database().collection(this.tableName).where(t).field(`${M(z,a)}, start_time`).groupBy("start_time").groupField(O(z,a)).orderBy("start_time","asc").get({getCount:!0}).then((t=>{const{count:e,data:l}=t.result,o={categories:[],series:[{name:s,data:[]}]};let r=z.filter((t=>t.field===a));if(r=JSON.parse(JSON.stringify(r)),delete r[0].value,r[0].formatter="",this.getDays())for(const s of l){I(r,s,s);const t=A(s.start_time,"day");let e=Number(s[a]);o.series[0].data.push(e),o.categories.push(t)}else{const[t,e]=n,s=o.series[1]={name:A(t),data:[]},d=o.series[0]={name:A(e),data:[]};for(let n=0;n<24;++n){const t=n<10?"0"+n:n,e=`${t}:00 ~ ${t}:59`;o.categories.push(e),s.data[n]=0,d.data[n]=0,l.forEach((t=>{I(r,t,t);let e=Number(t[a]);const l=new Date(t.start_time);t.start_time<i?l.getHours()===n&&(s.data[n]=e):l.getHours()===n&&(d.data[n]=e)}))}}this.chartData=o})).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()},getPageData(t,a){(t=JSON.parse(JSON.stringify(t))).dimension="day",t=V(t,!1,["uni_platform"]),this.options;const s=this[`${a}FieldsMap`],l=s[1].field;this.loading=!0;const i=e.database(),o=V({appid:this.query.appid}),n=i.collection("uni-stat-pages").where(o).field("_id, title, path").getTemp(),r=i.collection("uni-stat-page-result").where(`${t} && ${l} > 0`).getTemp();i.collection(r,n).field(`${M(s,l)}, stat_date, page_id`).groupBy("page_id").groupField(O(s,l)).orderBy(l,"desc").limit(10).get({getCount:!0}).then((e=>{const{count:l,data:i}=e.result;let o;this.getAppAccessTimes(t).then((t=>{const e=t.result.data[0];o=e&&e.total_app_access})).finally((()=>{this[`${a}TableData`]=[];for(const t of i){t.total_app_access=o;const e=t.page_id;if(Array.isArray(e)){delete t.page_id;const a=e[0];if(a&&Object.keys(a).length)for(const e in a)"_id"!==e&&(t[e]=a[e])}I(s,t,t),this[`${a}TableData`].push(t)}this.loading=!1}))})).catch((t=>{console.error(t)})).finally((()=>{}))},navTo(t){t&&a({url:t})}}},[["render",function(t,e,a,V,N,P){const M=s(l("uni-stat-breadcrumb"),x),O=n,j=s(l("uni-data-select"),C),I=s(l("uni-stat-tabs"),k),$=s(l("uni-datetime-picker"),r),A=s(l("uni-stat-panel"),F),z=s(l("qiun-data-charts"),w),B=s(l("uni-icons"),d),J=s(l("uni-tooltip"),S),U=s(l("uni-th"),u),R=s(l("uni-tr"),c),Q=s(l("uni-td"),p),E=s(l("uni-table"),h);return m(),i(O,{class:"fix-top-window"},{default:o((()=>[_(O,{class:"uni-header"},{default:o((()=>[_(M,{class:"uni-stat-breadcrumb-on-phone"})])),_:1}),_(O,{class:"uni-container"},{default:o((()=>[_(O,{class:"uni-stat--x flex p-1015"},{default:o((()=>[_(O,{class:"uni-stat--app-select"},{default:o((()=>[_(j,{collection:"opendb-app-list",field:"appid as value, name as text",orderby:"text asc",defItem:1,label:"应用选择",modelValue:N.query.appid,"onUpdate:modelValue":e[0]||(e[0]=t=>N.query.appid=t),clear:!1},null,8,["modelValue"]),_(j,{collection:"opendb-app-versions",where:P.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:N.query.version_id,"onUpdate:modelValue":e[1]||(e[1]=t=>N.query.version_id=t)},null,8,["where","modelValue"])])),_:1})])),_:1}),_(O,{class:"uni-stat--x flex"},{default:o((()=>[_(I,{label:"日期选择",current:N.currentDateTab,mode:"date",today:!0,onChange:P.changeTimeRange},null,8,["current","onChange"]),_($,{type:"datetimerange",end:(new Date).getTime(),modelValue:N.query.start_time,"onUpdate:modelValue":e[2]||(e[2]=t=>N.query.start_time=t),returnType:"timestamp",clearIcon:!1,class:f(["uni-stat-datetime-picker",{"uni-stat__actived":N.currentDateTab<0&&!!N.query.start_time.length}]),onChange:P.useDatetimePicker},null,8,["end","modelValue","class","onChange"])])),_:1}),_(O,{class:"uni-stat--x"},{default:o((()=>[_(I,{label:"平台选择",type:"boldLine",mode:"platform",modelValue:N.query.platform_id,"onUpdate:modelValue":e[3]||(e[3]=t=>N.query.platform_id=t),onChange:P.changePlatform},null,8,["modelValue","onChange"]),N.query.platform_id&&-1===N.query.platform_id.indexOf("==")?(m(),i(j,{key:0,collection:"uni-stat-app-channels",where:P.channelQuery,class:"p-channel",field:"_id as value, channel_name as text",orderby:"text asc",label:"渠道/场景值选择",modelValue:N.query.channel_id,"onUpdate:modelValue":e[4]||(e[4]=t=>N.query.channel_id=t)},null,8,["where","modelValue"])):g("",!0)])),_:1}),_(A,{items:N.panelData,contrast:!0},null,8,["items"]),_(O,{class:"uni-stat--x p-m"},{default:o((()=>[_(O,{class:"uni-stat-card-header"},{default:o((()=>[y(" 趋势图 ")])),_:1}),_(I,{type:"box",modelValue:N.chartTab,"onUpdate:modelValue":e[5]||(e[5]=t=>N.chartTab=t),tabs:P.chartTabs,class:"mb-l",onChange:P.changeChartTab},null,8,["modelValue","tabs","onChange"]),_(O,{class:"uni-charts-box"},{default:o((()=>[_(z,{type:"area",chartData:N.chartData,eopts:N.eopts,echartsH5:"",echartsApp:"",tooltipFormat:"tooltipCustom",errorMessage:N.errorMessage},null,8,["chartData","eopts","errorMessage"])])),_:1})])),_:1}),_(O,{class:"dispaly-grid"},{default:o((()=>[_(O,{class:"uni-stat--x p-m"},{default:o((()=>[_(O,{class:"uni-stat-card-header"},{default:o((()=>[_(O,null,{default:o((()=>[y("受访页 TOP10")])),_:1}),_(O,{class:"uni-stat-card-header-link",onClick:e[6]||(e[6]=t=>P.navTo("/pages/uni-stat/page-res/page-res"))},{default:o((()=>[y("查看更多 ")])),_:1})])),_:1}),_(E,{loading:N.loading,border:"",stripe:"",emptyText:"暂无数据"},{default:o((()=>[_(R,null,{default:o((()=>[(m(!0),b(D,null,v(N.resFieldsMap,((t,e)=>(m(),b(D,{key:e},[t.title?(m(),i(U,{key:e,align:"center"},{default:o((()=>[_(J,null,T({default:o((()=>[y(q(t.title)+" ",1),t.tooltip?(m(),i(B,{key:0,type:"help",color:"#666"})):g("",!0)])),_:2},[t.tooltip?{name:"content",fn:o((()=>[_(O,{class:"uni-stat-tooltip-s"},{default:o((()=>[y(q(t.tooltip),1)])),_:2},1024)])),key:"0"}:void 0]),1024)])),_:2},1024)):g("",!0)],64)))),128))])),_:1}),(m(!0),b(D,null,v(N.resTableData,((t,e)=>(m(),i(R,{key:e},{default:o((()=>[(m(!0),b(D,null,v(N.resFieldsMap,((e,a)=>(m(),b(D,{key:a},[e.title?(m(),i(Q,{key:a,align:0===a?"left":"center"},{default:o((()=>[y(q(void 0!==t[e.field]?t[e.field]:"-"),1)])),_:2},1032,["align"])):g("",!0)],64)))),128))])),_:2},1024)))),128))])),_:1},8,["loading"])])),_:1}),_(O,{class:"uni-stat--x uni-stat-card p-m"},{default:o((()=>[_(O,{class:"uni-stat-card-header"},{default:o((()=>[_(O,null,{default:o((()=>[y("入口页 TOP10")])),_:1}),_(O,{class:"uni-stat-card-header-link",onClick:e[7]||(e[7]=t=>P.navTo("/pages/uni-stat/page-ent/page-ent"))},{default:o((()=>[y("查看更多 ")])),_:1})])),_:1}),_(E,{loading:N.loading,border:"",stripe:"",emptyText:"暂无数据"},{default:o((()=>[_(R,null,{default:o((()=>[(m(!0),b(D,null,v(N.entFieldsMap,((t,e)=>(m(),b(D,{key:e},[t.title?(m(),i(U,{key:e,align:"center"},{default:o((()=>[_(J,null,T({default:o((()=>[y(q(t.title)+" ",1),t.tooltip?(m(),i(B,{key:0,type:"help",color:"#666"})):g("",!0)])),_:2},[t.tooltip?{name:"content",fn:o((()=>[_(O,{class:"uni-stat-tooltip-s"},{default:o((()=>[y(q(t.tooltip),1)])),_:2},1024)])),key:"0"}:void 0]),1024)])),_:2},1024)):g("",!0)],64)))),128))])),_:1}),(m(!0),b(D,null,v(N.entTableData,((t,e)=>(m(),i(R,{key:e},{default:o((()=>[(m(!0),b(D,null,v(N.entFieldsMap,((e,a)=>(m(),b(D,{key:a},[e.title?(m(),i(Q,{key:a,align:0===a?"left":"center"},{default:o((()=>[y(q(void 0!==t[e.field]?t[e.field]:"-"),1)])),_:2},1032,["align"])):g("",!0)],64)))),128))])),_:2},1024)))),128))])),_:1},8,["loading"])])),_:1})])),_:1})])),_:1})])),_:1})}],["__scopeId","data-v-5fca69d5"]]);export{R as default};