Files
AIGC/demo/deploy_baota/frontend/static/Home-83259a91.js

5 lines
12 KiB
JavaScript
Raw Permalink Normal View History

2025-11-13 17:01:39 +08:00
import{_ as W}from"./welcome-6f9b345d.js";import{r,m as B,U as Y,al as O,z as S,A as V,B as s,R as a,J as l,Q as j,a4 as J,I as Q,P as p,D as T,n as q,aA as K,u as d,O as z,aD as X}from"./vue-vendor-164775a6.js";import{a as N,_ as P,u as Z}from"./index-2fb4354b.js";import{E as R,g as ss,u as L,s as ts,d as E,b as as,c as es,e as os,f as I,m as ns}from"./element-plus-4a19e5e8.js";import{g as is,a as ls,b as rs,c as ds}from"./dashboard-93bacc4e.js";import"./utils-edfcd65b.js";const cs=(D="2024",c="monthly")=>N.get("/analytics/daily-active-users",{params:{year:D,granularity:c}}),vs=()=>N.get("/analytics/user-activity-overview");const us={class:"daily-active-users-chart"},ps={class:"chart-header"},ms={class:"chart-controls"},hs={class:"chart-footer"},fs={class:"chart-stats"},_s={class:"stat-item"},ys={class:"stat-value"},gs={class:"stat-item"},bs={class:"stat-item"},Us={class:"stat-value"},Cs={class:"stat-item"},ws={__name:"DailyActiveUsersChart",setup(D){const c=r(null),b=r(2024),C=r([2023,2024,2025]),v=r(null),f=r(0),y=r(0),U=r(0),m=r(0),A=()=>new Promise((i,e)=>{if(window.echarts){i(window.echarts);return}const u=document.createElement("script");u.src="https://cdn.jsdelivr.net/npm/echarts@5.4.3/dist/echarts.min.js",u.onload=()=>i(window.echarts),u.onerror=e,document.head.appendChild(u)}),w=async()=>{try{const[i,e]=await Promise.all([cs(b.value,"monthly"),vs()]);i&&i.monthlyData&&(await q(),$(i.monthlyData)),e&&(f.value=e.todayDAU||0,y.value=e.dayGrowthRate||0,U.value=e.monthlyAvgDAU||0,m.value=e.monthGrowthRate||0)}catch(i){console.error("加载图表数据失败:",i),R.error("加载图表数据失败")}},$=async i=>{try{const e=await A();if(!c.value)return;v.value&&v.value.dispose(),v.value=e.init(c.value);const u=["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],o=i.map(h=>h.avgDailyActive||0),t=i.map(h=>h.maxDailyActive||0),n=i.map(h=>h.minDailyActive||0),g={tooltip:{trigger:"axis",backgroundColor:"rgba(0, 0, 0, 0.8)",borderColor:"rgba(255, 255, 255, 0.1)",borderWidth:1,textStyle:{color:"#fff",fontSize:12},formatter:function(h){const x=h[0].dataIndex,F=u[x],G=o[x],M=t[x],H=n[x];return`${F}<br/>
平均日活: ${_(G)}<br/>
最高日活: ${_(M)}<br/>
最低日活: ${_(H)}`}},grid:{left:"3%",right:"4%",bottom:"3%",top:"10%",containLabel:!0},xAxis:{type:"category",data:u,axisLine:{lineStyle:{color:"#e0e0e0"}},axisTick:{show:!1},axisLabel:{color:"#666",fontSize:12}},yAxis:{type:"value",axisLine:{show:!1},axisTick:{show:!1},axisLabel:{color:"#666",fontSize:12,formatter:function(h){return _(h)}},splitLine:{lineStyle:{color:"#f0f0f0",type:"dashed"}}},series:[{name:"日活用户",type:"line",data:o,smooth:!0,symbol:"circle",symbolSize:6,lineStyle:{color:"#3b82f6",width:3},itemStyle:{color:"#3b82f6",borderColor:"#fff",borderWidth:2},areaStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"rgba(59, 130, 246, 0.3)"},{offset:1,color:"rgba(59, 130, 246, 0.05)"}]}},emphasis:{focus:"series",itemStyle:{color:"#1d4ed8",borderColor:"#fff",borderWidth:3,shadowBlur:10,shadowColor:"rgba(59, 130, 246, 0.5)"}}}],animation:!0,animationDuration:1e3,animationEasing:"cubicOut"};v.value.setOption(g),window.addEventListener("resize",k)}catch(e){console.error("初始化图表失败:",e),R.error("图表初始化失败")}},k=()=>{v.value&&v.value.resize()},_=i=>i>=1e4?(i/1e4).toFixed(1)+"万":Math.round(i).toLocaleString();return B(()=>{w()}),Y(()=>{v.value&&(v.value.dispose(),v.value=null),window.removeEventListener("resize",k)}),(i,e)=>{const u=O("el-option"),o=O("el-select");return S(),V("div",us,[s("div",ps,[e[1]||(e[1]=s("h3",{class:"chart-title"},"日活用户趋势",-1)),s("div",ms,[a(o,{modelValue:b.value,"onUpdate:modelValue":e[0]||(e[0]=t=>b.value=t),onChange:w,placeholder:"选择年份"},{default:l(()=>[(S(!0),V(j,null,J(C.value,t=>(S(),Q(u,{key:t,label:`${t}`,value:t},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])])]),s("div",{class:"chart-container",ref_key:"chartContainer",ref:c},null,512),s("div",hs,[s("div",fs,[s("div",_s,[e[2]||(e[2]=s("span",{class:"stat-label"},"今日日活:",-1)),s("span",ys,p(_(f.value)),1)]),s("div",gs,[e[3]||(e[3]=s("span",{class:"stat-label"},"日增长率:",-1)),s("span",{class:T(["stat-value",y.value>=0?"positive":"negative"])},p(y.value>=0?"+":"")+p(y.value.toFixed(1))+"% ",3)]),s("div",bs,[e[4]||(e[4]=s("span",{class:"stat-label"},"月均日活:",-1)),s("span",Us,p(_(U.value)),1)]),s("div",Cs,[e[5]||(e[5]=s("span",{class:"stat-label"},"月增长率:",-1)),s("span",{class:T(["stat-value",m.value>=0?"positive":"negative"])},p(m.value>=0?"+":"")+p(m.value.toFixed(1))+"% ",3)])])])])}}},ks=P(ws,[["__scopeId","data-v-cd9086a6"]]);const xs={class:"dashboard"},Ss={class:"sidebar"},Rs={class:"nav-menu"},Ds={class:"nav-item active"},As={class:"sidebar-footer"},$s={class:"online-users"},Ls={class:"highlight"},Os={class:"system-uptime"},Vs={class:"highlight"},Ts={class:"main-content"},zs={class:"top-header"},Es={class:"search-bar"},Is={class:"header-actions"},Bs={class:"user-avatar"},Ns={class:"kpi-section"},Ps={class:"kpi-card"},Fs={class:"kpi-icon user-icon"},Gs={class:"kpi-content"},Ms={class:"kpi-value"},Hs={class:"kpi-card"},Ws={class:"kpi-icon paid-user-icon"},Ys={class:"kpi-content"},js={class:"kpi-value"},Js={class:"kpi-card"},Qs={class:"kpi-icon revenue-icon"},qs={class:"kpi-content"},Ks={class:"kpi-value"},Xs={class:"charts-section"},Zs={class:"chart-card full-width"},st={class:"chart-header"},tt={class:"year-selector"},at={__name:"Home",setup(D){const c=K(),b=Z(),C=r(!1),v=r("2024"),f=r({totalUsers:0,paidUsers:0,todayRevenue:0,totalOrders:0,totalRevenue:0,monthRevenue:0}),y=r([]),U=r({totalUsers:0,paidUsers:0,conversionRate:0,membershipStats:[]}),m=r({onlineUsers:0,systemUptime:"0小时0分",databaseStatus:"正常",serviceStatus:"运行中"}),A=()=>{c.push("/member-management")},w=()=>{b.isAuthenticated?c.push("/orders"):(R.warning("请先登录"),c.push("/login"))},$=()=>{c.push("/api-management")},k=()=>{c.push("/generate-task-record")},_=()=>{c.push("/system-settings")},i=async()=>{try{C.value=!0;const[o,t,n,g]=await Promise.all([is(),ls(v.value),rs(),ds()]);o&&(f.value={totalUsers:o.totalUsers||0,paidUsers:o.paidUsers||0,todayRevenue:o.todayRevenue||0,totalOrders:o.totalOrders||0,totalRevenue: