2 lines
8.4 KiB
JavaScript
2 lines
8.4 KiB
JavaScript
import{_ as G}from"./welcome-6f9b345d.js";import{aA as Y,r as _,m as J,n as D,U as K,al as R,ar as q,z as T,A as E,B as s,R as t,J as l,u as r,aD as H,K as Q,P as v,D as k}from"./vue-vendor-164775a6.js";import{E as I,g as W,u as y,s as X,d as N,b as Z,e as ss,f as es,m as ts}from"./element-plus-4a19e5e8.js";import{g as as,d as os,b as ns}from"./dashboard-93bacc4e.js";import{_ as ls}from"./index-2fb4354b.js";import"./utils-edfcd65b.js";const is={class:"admin-dashboard"},rs={class:"sidebar"},ds={class:"nav-menu"},cs={class:"nav-item active"},us={class:"main-content"},vs={class:"top-header"},ps={class:"search-bar"},ms={class:"header-actions"},hs={class:"notification-icon-wrapper"},_s={class:"user-avatar"},gs={class:"stats-cards"},fs={class:"stat-card"},ys={class:"stat-icon users"},bs={class:"stat-content"},Cs={class:"stat-number"},ws={class:"stat-card"},xs={class:"stat-icon paid-users"},Us={class:"stat-content"},As={class:"stat-number"},Ds={class:"stat-card"},Rs={class:"stat-icon revenue"},ks={class:"stat-content"},Ls={class:"stat-number"},Ss={class:"charts-section"},Vs={class:"chart-card"},zs={class:"chart-header"},Ts={class:"chart-content"},Es={class:"chart-card"},Is={class:"chart-header"},Ns={class:"chart-content"},Os={__name:"AdminDashboard",setup(Ps){const g=Y(),b=_("2025"),C=_("2025"),n=_({totalUsers:0,paidUsers:0,todayRevenue:0,totalUsersChange:0,paidUsersChange:0,todayRevenueChange:0}),w=_(!1),x=_(null),U=_(null);let c=null,u=null;const L=()=>new Promise((a,e)=>{if(window.echarts){a(window.echarts);return}const o=document.createElement("script");o.src="https://cdn.jsdelivr.net/npm/echarts@5.4.3/dist/echarts.min.js",o.onload=()=>a(window.echarts),o.onerror=e,document.head.appendChild(o)}),O=()=>{g.push("/member-management")},P=()=>{g.push("/admin/orders")},$=()=>{g.push("/api-management")},B=()=>{g.push("/generate-task-record")},F=()=>{g.push("/system-settings")},S=a=>a>=1e4?(a/1e4).toFixed(1)+"万":a.toLocaleString("zh-CN"),M=a=>a>=1e4?"¥"+(a/1e4).toFixed(1)+"万":"¥"+a.toLocaleString("zh-CN",{minimumFractionDigits:2,maximumFractionDigits:2}),j=async()=>{w.value=!0;try{const a=await as();console.log("仪表盘概览数据响应:",a);const e=(a==null?void 0:a.data)||a||{};console.log("解析后的数据:",e),e&&!e.error?(n.value={totalUsers:e.totalUsers||0,paidUsers:e.paidUsers||0,todayRevenue:e.todayRevenue||0,totalUsersChange:0,paidUsersChange:0,todayRevenueChange:0},console.log("设置后的统计数据:",n.value)):(console.error("获取仪表盘数据失败:",e.error||e.message),I.error("获取仪表盘数据失败: "+(e.message||"未知错误")))}catch(a){console.error("加载仪表盘数据失败:",a),I.error("加载仪表盘数据失败: "+(a.message||"未知错误"))}finally{w.value=!1}},V=async()=>{try{const e=(await os(b.value,"monthly")).data||{};if(!x.value)return;const o=await L();await D(),c&&c.dispose(),c=o.init(x.value);const i=e.monthlyData||[],m=i.map(d=>`${d.month}月`),f=i.map(d=>d.avgDailyActive||d.dailyActiveUsers||0),p={tooltip:{trigger:"axis",axisPointer:{type:"cross"}},grid:{left:"3%",right:"4%",bottom:"3%",containLabel:!0},xAxis:{type:"category",boundaryGap:!1,data:m,axisLabel:{color:"#6b7280"}},yAxis:{type:"value",axisLabel:{color:"#6b7280",formatter:"{value}"}},series:[{name:"日活用户",type:"line",smooth:!0,data:f,itemStyle:{color:"#3b82f6"},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.1)"}]}}}]};c.setOption(p),window.addEventListener("resize",()=>{c&&c.resize()})}catch(a){console.error("加载日活用户趋势图失败:",a)}},z=async()=>{try{const e=(await ns(C.value)).data||{};if(!U.value)return;const o=await L();await D(),u&&u.dispose(),u=o.init(U.value);const i=e.monthlyData||[],m=i.map(d=>`${d.month}月`),f=i.map(d=>d.conversionRate||0),p={tooltip:{trigger:"axis",axisPointer:{type:"shadow"},formatter:d=>{const A=d[0],h=i[A.dataIndex];return`${A.name}<br/>转化率: ${A.value}%<br/>总用户: ${(h==null?void 0:h.totalUsers)||0}<br/>付费用户: ${(h==null?void 0:h.paidUsers)||0}`}},grid:{left:"3%",right:"4%",bottom:"3%",containLabel:!0},xAxis:{type:"category",data:m,axisLabel:{color:"#6b7280"}},yAxis:{type:"value",axisLabel:{color:"#6b7280",formatter:"{value}%"}},series:[{name:"转化率",type:"bar",data:f,itemStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"#8b5cf6"},{offset:1,color:"#3b82f6"}]}}}]};u.setOption(p),window.addEventListener("resize",()=>{u&&u.resize()})}catch(a){console.error("加载用户转化率图失败:",a)}};return J(async()=>{console.log("后台管理页面加载完成"),await j(),await D(),await V(),await z()}),K(()=>{c&&(c.dispose(),c=null),u&&(u.dispose(),u=null)}),(a,e)=>{const o=R("el-icon"),i=R("el-option"),m=R("el-select"),f=q("loading");return T(),E("div",is,[s("aside",rs,[e[8]||(e[8]=s("div",{class:"logo"},[s("div",{class:"logo-icon"}),s("span",null,"LOGO")],-1)),s("nav",ds,[s("div",cs,[t(o,null,{default:l(()=>[t(r(W))]),_:1}),e[2]||(e[2]=s("span",null,"数据仪表台",-1))]),s("div",{class:"nav-item",onClick:O},[t(o,null,{default:l(()=>[t(r(y))]),_:1}),e[3]||(e[3]=s("span",null,"会员管理",-1))]),s("div",{class:"nav-item",onClick:P},[t(o,null,{default:l(()=>[t(r(X))]),_:1}),e[4]||(e[4]=s("span",null,"订单管理",-1))]),s("div",{class:"nav-item",onClick:$},[t(o,null,{default:l(()=>[t(r(N))]),_:1}),e[5]||(e[5]=s("span",null,"API管理",-1))]),s("div",{class:"nav-item",onClick:B},[t(o,null,{default:l(()=>[t(r(N))]),_:1}),e[6]||(e[6]=s("span",null,"生成任务记录",-1))]),s("div",{class:"nav-item",onClick:F},[t(o,null,{default:l(()=>[t(r(Z))]),_:1}),e[7]||(e[7]=s("span",null,"系统设置",-1))])]),e[9]||(e[9]=H('<div class="sidebar-footer" data-v-d600eb12><div class="online-users" data-v-d600eb12> 当前在线用户: <span class="highlight" data-v-d600eb12>87/500</span></div><div class="system-uptime" data-v-d600eb12> 系统运行时间: <span class="highlight" data-v-d600eb12>48小时32分</span></div></div>',1))]),s("main",us,[s("header",vs,[s("div",ps,[t(o,{class:"search-icon"},{default:l(()=>[t(r(y))]),_:1}),e[10]||(e[10]=s("input",{type:"text",placeholder:"搜索你的想要的内容",class:"search-input"},null,-1))]),s("div",ms,[s("div",hs,[t(o,{class:"notification-icon"},{default:l(()=>[t(r(ss))]),_:1}),e[11]||(e[11]=s("span",{class:"notification-badge"},null,-1))]),s("div",_s,[e[12]||(e[12]=s("img",{src:G,alt:"用户头像"},null,-1)),t(o,{class:"arrow-down"},{default:l(()=>[t(r(es))]),_:1})])])]),Q((T(),E("div",gs,[s("div",fs,[s("div",ys,[t(o,null,{default:l(()=>[t(r(y))]),_:1})]),s("div",bs,[e[13]||(e[13]=s("div",{class:"stat-title"},"用户总数",-1)),s("div",Cs,v(S(n.value.totalUsers)),1),s("div",{class:k(["stat-change",n.value.totalUsersChange>=0?"positive":"negative"])},v(n.value.totalUsersChange>=0?"+":"")+v(n.value.totalUsersChange)+"% 较上月同期 ",3)])]),s("div",ws,[s("div",xs,[t(o,null,{default:l(()=>[t(r(y))]),_:1})]),s("div",Us,[e[14]||(e[14]=s("div",{class:"stat-title"},"付费用户数",-1)),s("div",As,v(S(n.value.paidUsers)),1),s("div",{class:k(["stat-change",n.value.paidUsersChange>=0?"positive":"negative"])},v(n.value.paidUsersChange>=0?"+":"")+v(n.value.paidUsersChange)+"% 较上月同期 ",3)])]),s("div",Ds,[s("div",Rs,[t(o,null,{default:l(()=>[t(r(ts))]),_:1})]),s("div",ks,[e[15]||(e[15]=s("div",{class:"stat-title"},"今日收入",-1)),s("div",Ls,v(M(n.value.todayRevenue)),1),s("div",{class:k(["stat-change",n.value.todayRevenueChange>=0?"positive":"negative"])},v(n.value.todayRevenueChange>=0?"+":"")+v(n.value.todayRevenueChange)+"% 较上月同期 ",3)])])])),[[f,w.value]]),s("div",Ss,[s("div",Vs,[s("div",zs,[e[16]||(e[16]=s("h3",null,"日活用户趋势",-1)),t(m,{modelValue:b.value,"onUpdate:modelValue":e[0]||(e[0]=p=>b.value=p),onChange:V,class:"year-select"},{default:l(()=>[t(i,{label:"2025年",value:"2025"}),t(i,{label:"2024年",value:"2024"}),t(i,{label:"2023年",value:"2023"})]),_:1},8,["modelValue"])]),s("div",Ts,[s("div",{ref_key:"dailyActiveChart",ref:x,style:{width:"100%",height:"100%"}},null,512)])]),s("div",Es,[s("div",Is,[e[17]||(e[17]=s("h3",null,"用户转化率",-1)),t(m,{modelValue:C.value,"onUpdate:modelValue":e[1]||(e[1]=p=>C.value=p),onChange:z,class:"year-select"},{default:l(()=>[t(i,{label:"2025年",value:"2025"}),t(i,{label:"2024年",value:"2024"}),t(i,{label:"2023年",value:"2023"})]),_:1},8,["modelValue"])]),s("div",Ns,[s("div",{ref_key:"conversionChart",ref:U,style:{width:"100%",height:"100%"}},null,512)])])])])])}}},Ys=ls(Os,[["__scopeId","data-v-d600eb12"]]);export{Ys as default};
|