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}
平均日活: ${_(G)}
最高日活: ${_(M)}
最低日活: ${_(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:o.totalRevenue||0,monthRevenue:o.monthRevenue||0}),t&&t.monthlyData&&(y.value=t.monthlyData),n&&(U.value={totalUsers:n.totalUsers||0,paidUsers:n.paidUsers||0,conversionRate:n.conversionRate||0,membershipStats:n.membershipStats||[]}),g&&(m.value={onlineUsers:g.onlineUsers||0,systemUptime:g.systemUptime||"0小时0分",databaseStatus:g.databaseStatus||"正常",serviceStatus:g.serviceStatus||"运行中"})}catch(o){console.error("加载仪表盘数据失败:",o),R.error("加载仪表盘数据失败"),f.value={totalUsers:10,paidUsers:8,todayRevenue:0,totalOrders:180,totalRevenue:0,monthRevenue:0},y.value=[{month:1,revenue:0,orderCount:0},{month:2,revenue:0,orderCount:0},{month:3,revenue:0,orderCount:0},{month:4,revenue:0,orderCount:0},{month:5,revenue:0,orderCount:0},{month:6,revenue:0,orderCount:0},{month:7,revenue:0,orderCount:0},{month:8,revenue:0,orderCount:0},{month:9,revenue:0,orderCount:0},{month:10,revenue:0,orderCount:0},{month:11,revenue:0,orderCount:0},{month:12,revenue:0,orderCount:0}],U.value={totalUsers:10,paidUsers:8,conversionRate:80,membershipStats:[]},m.value={onlineUsers:50,systemUptime:"48小时32分",databaseStatus:"正常",serviceStatus:"运行中"}}finally{C.value=!1}},e=o=>o>=1e4?(o/1e4).toFixed(1)+"万":o.toLocaleString(),u=o=>"¥"+o.toLocaleString();return B(()=>{i()}),(o,t)=>{const n=O("el-icon");return S(),V("div",xs,[s("aside",Ss,[t[8]||(t[8]=s("div",{class:"logo"},[s("div",{class:"logo-icon"}),s("span",null,"LOGO")],-1)),s("nav",Rs,[s("div",Ds,[a(n,null,{default:l(()=>[a(d(ss))]),_:1}),t[0]||(t[0]=s("span",null,"数据仪表台",-1))]),s("div",{class:"nav-item",onClick:A},[a(n,null,{default:l(()=>[a(d(L))]),_:1}),t[1]||(t[1]=s("span",null,"会员管理",-1))]),s("div",{class:"nav-item",onClick:w},[a(n,null,{default:l(()=>[a(d(ts))]),_:1}),t[2]||(t[2]=s("span",null,"订单管理",-1))]),s("div",{class:"nav-item",onClick:$},[a(n,null,{default:l(()=>[a(d(E))]),_:1}),t[3]||(t[3]=s("span",null,"API管理",-1))]),s("div",{class:"nav-item",onClick:k},[a(n,null,{default:l(()=>[a(d(E))]),_:1}),t[4]||(t[4]=s("span",null,"生成任务记录",-1))]),s("div",{class:"nav-item",onClick:_},[a(n,null,{default:l(()=>[a(d(as))]),_:1}),t[5]||(t[5]=s("span",null,"系统设置",-1))])]),s("div",As,[s("div",$s,[t[6]||(t[6]=z(" 当前在线用户: ",-1)),s("span",Ls,p(m.value.onlineUsers)+"/500",1)]),s("div",Os,[t[7]||(t[7]=z(" 系统运行时间: ",-1)),s("span",Vs,p(m.value.systemUptime),1)])])]),s("main",Ts,[s("header",zs,[s("div",Es,[a(n,{class:"search-icon"},{default:l(()=>[a(d(es))]),_:1}),t[9]||(t[9]=s("input",{type:"text",placeholder:"搜索你的想要的内容",class:"search-input"},null,-1))]),s("div",Is,[a(n,{class:"notification-icon"},{default:l(()=>[a(d(os))]),_:1}),s("div",Bs,[t[10]||(t[10]=s("img",{src:W,alt:"用户头像"},null,-1)),a(n,{class:"dropdown-icon"},{default:l(()=>[a(d(I))]),_:1})])])]),s("section",Ns,[s("div",Ps,[s("div",Fs,[a(n,null,{default:l(()=>[a(d(L))]),_:1})]),s("div",Gs,[t[11]||(t[11]=s("div",{class:"kpi-title"},"用户总数",-1)),s("div",Ms,p(e(f.value.totalUsers)),1),t[12]||(t[12]=s("div",{class:"kpi-trend positive"},"+12% 较上月同期",-1))])]),s("div",Hs,[s("div",Ws,[a(n,null,{default:l(()=>[a(d(L))]),_:1}),t[13]||(t[13]=s("div",{class:"currency-symbol"},"¥",-1))]),s("div",Ys,[t[14]||(t[14]=s("div",{class:"kpi-title"},"付费用户数",-1)),s("div",js,p(e(f.value.paidUsers)),1),t[15]||(t[15]=s("div",{class:"kpi-trend negative"},"-5% 较上月同期",-1))])]),s("div",Js,[s("div",Qs,[a(n,null,{default:l(()=>[a(d(ns))]),_:1})]),s("div",qs,[t[16]||(t[16]=s("div",{class:"kpi-title"},"今日收入",-1)),s("div",Ks,p(u(f.value.todayRevenue)),1),t[17]||(t[17]=s("div",{class:"kpi-trend positive"},"+15% 较上月同期",-1))])])]),s("section",Xs,[a(ks),s("div",Zs,[s("div",st,[t[19]||(t[19]=s("h3",null,"用户转化率",-1)),s("div",tt,[t[18]||(t[18]=s("span",null,"2025年",-1)),a(n,null,{default:l(()=>[a(d(I))]),_:1})])]),t[20]||(t[20]=X('
1月2月3月4月5月6月7月8月9月10月11月12月
20%15%10%5%0%
',1))])])])])}}},dt=P(at,[["__scopeId","data-v-fc9a7409"]]);export{dt as default};