1 line
8.4 KiB
JavaScript
1 line
8.4 KiB
JavaScript
import{I as e,Q as t,R as n,b as r,g as i,h as a,l as o,m as s,v as c,wt as l,x as u,xt as d,y as f,yt as p}from"./vue.runtime.esm-bundler-DS0mm12S.js";import{$ as m,P as h,q as ee,z as g}from"./index-BpHHjIYv.js";import"./Teleport-qOjHMYM8.js";import"./button-BTKRNUhQ.js";import{l as _,o as v}from"./monisuo-admin.api-DyXM8BcP.js";import{t as te}from"./Card-o8MCRg3I.js";import{t as ne}from"./CardContent-BXRdn2MY.js";import{r as re}from"./global-layout-Dly16GP1.js";import{t as ie}from"./decimal-D2wgARr3.js";var ae={key:0,class:`flex items-center justify-center py-20`},oe={key:1,class:`grid gap-6`},y={class:`space-y-3`},b={class:`text-sm font-medium text-muted-foreground flex items-center gap-2`},x={class:`grid gap-3 grid-cols-1 sm:grid-cols-3`},S={class:`flex items-center justify-between`},C={class:`mt-3 space-y-1`},w={class:`text-xs text-muted-foreground`},T={class:`space-y-3`},E={class:`text-sm font-medium text-muted-foreground flex items-center gap-2`},D={class:`grid gap-3 grid-cols-1 sm:grid-cols-3`},O={class:`flex items-center justify-between`},k={class:`text-xs font-medium text-green-600`},A={class:`mt-3 space-y-1`},j={class:`text-xs text-muted-foreground`},M={class:`grid gap-6 lg:grid-cols-2`},N={class:`space-y-3`},P={class:`text-sm font-medium text-muted-foreground flex items-center gap-2`},F={class:`space-y-3`},I={class:`text-sm font-medium text-muted-foreground flex items-center gap-2`},L={class:`grid gap-6 lg:grid-cols-5`},R={class:`space-y-3 lg:col-span-2`},se={class:`text-sm font-medium text-muted-foreground flex items-center gap-2`},z={class:`grid gap-3 grid-cols-2`},B={class:`flex items-center justify-between`},V={class:`min-w-0`},H={class:`text-xs text-muted-foreground truncate`},U={class:`text-lg sm:text-xl font-bold mt-1 truncate`},W={class:`space-y-3 lg:col-span-3`},G={class:`text-sm font-medium text-muted-foreground flex items-center gap-2`},K={class:`grid gap-3 grid-cols-2 sm:grid-cols-4`},q=u({__name:`dashboard`,setup(u){let q=h(),{data:ce,isLoading:le}=_(),{data:ue,isLoading:de}=v(6),J=s(()=>le.value||de.value),Y=s(()=>ce.value?.data),X=s(()=>ue.value?.data||[]),fe=s(()=>[{label:`在管资金`,value:Y.value?.fundBalance||0,icon:`lucide:wallet`,color:`text-blue-600`,bgColor:`bg-blue-50 dark:bg-blue-950`},{label:`交易账户`,value:Y.value?.tradeValue||0,icon:`lucide:bar-chart-3`,color:`text-purple-600`,bgColor:`bg-purple-50 dark:bg-purple-950`},{label:`总资产`,value:(Y.value?.fundBalance||0)+(Y.value?.tradeValue||0),icon:`lucide:landmark`,color:`text-orange-600`,bgColor:`bg-orange-50 dark:bg-orange-950`}]);function Z(e,t){if(t===0)return e>0?`+100%`:`0%`;let n=new ie(e).minus(t).div(t).mul(100).toDecimalPlaces(1);return`${n.gte(0)?`+`:``}${n}%`}let pe=s(()=>{let e=X.value,t=e.length,n=t>=1?e[t-1]:null,r=t>=2?e[t-2]:null,i=n&&r?Z(n.deposit,r.deposit):`+0%`,a=n&&r?Z(n.withdraw,r.withdraw):`+0%`,o=n&&r?Z(n.netInflow,r.netInflow):`+0%`;return[{label:`累计充值`,value:Y.value?.totalDeposit||0,icon:`lucide:arrow-down-circle`,color:`text-green-600`,bgColor:`bg-green-50 dark:bg-green-950`,trend:i},{label:`累计提现`,value:Y.value?.totalWithdraw||0,icon:`lucide:arrow-up-circle`,color:`text-red-600`,bgColor:`bg-red-50 dark:bg-red-950`,trend:a},{label:`净流入`,value:(Y.value?.totalDeposit||0)-(Y.value?.totalWithdraw||0),icon:`lucide:trending-up`,color:`text-emerald-600`,bgColor:`bg-emerald-50 dark:bg-emerald-950`,trend:o}]}),me=s(()=>({tooltip:{trigger:`axis`},legend:{data:[`充值`,`提现`],bottom:0,top:`auto`},grid:{left:`3%`,right:`4%`,bottom:`15%`,top:`5%`,containLabel:!0},xAxis:{type:`category`,data:X.value.map(e=>e.month)},yAxis:{type:`value`,axisLabel:{formatter:`¥{value}K`}},series:[{name:`充值`,type:`line`,smooth:!0,data:X.value.map(e=>e.deposit),itemStyle:{color:`#10b981`},areaStyle:{color:`rgba(16, 185, 129, 0.1)`}},{name:`提现`,type:`line`,smooth:!0,data:X.value.map(e=>e.withdraw),itemStyle:{color:`#ef4444`},areaStyle:{color:`rgba(239, 68, 68, 0.1)`}}]})),he=s(()=>{let e=Y.value?.fundBalance||0,t=Y.value?.tradeValue||0;return{tooltip:{trigger:`item`,formatter:`{b}: {d}%`},legend:{orient:`vertical`,right:`5%`,top:`center`},series:[{type:`pie`,radius:[`50%`,`75%`],center:[`35%`,`50%`],avoidLabelOverlap:!1,itemStyle:{borderRadius:8,borderColor:`#fff`,borderWidth:2},label:{show:!0,position:`inside`,formatter:`{d}%`,fontSize:12},data:[{value:e,name:`在管资金`,itemStyle:{color:`#3b82f6`}},{value:t,name:`交易账户`,itemStyle:{color:`#8b5cf6`}}]}]}}),ge=s(()=>[{label:`用户总数`,value:Y.value?.userCount||0,icon:`lucide:users`},{label:`待审批`,value:Y.value?.pendingCount||0,icon:`lucide:clock`}]);function Q(e){return e>=1e4?`¥${(e/1e4).toFixed(1)}万`:`¥${e.toLocaleString()}`}function $(e){q.push(e)}return(s,u)=>{let h=ee,_=ne,v=te;return e(),i(p(re),{title:`数据看板`,description:`核心业务数据一目了然`},{default:t(()=>[p(J)?(e(),c(`div`,ae,[r(h,{class:`w-8 h-8`})])):(e(),c(`div`,oe,[a(`section`,y,[a(`h2`,b,[r(p(m),{icon:`lucide:wallet`,class:`size-4`}),u[4]||=f(` 资金概览 `,-1)]),a(`div`,x,[(e(!0),c(o,null,n(p(fe),n=>(e(),i(v,{key:n.label,class:`hover:shadow-sm transition-shadow`},{default:t(()=>[r(_,{class:`p-4`},{default:t(()=>[a(`div`,S,[a(`div`,{class:d([`p-2 rounded-lg`,[n.bgColor]])},[r(p(m),{icon:n.icon,class:d([`size-4`,n.color])},null,8,[`icon`,`class`])],2)]),a(`div`,C,[a(`p`,w,l(n.label),1),a(`p`,{class:d([`text-lg sm:text-xl font-bold font-mono truncate`,n.color])},l(Q(n.value)),3)])]),_:2},1024)]),_:2},1024))),128))])]),a(`section`,T,[a(`h2`,E,[r(p(m),{icon:`lucide:git-compare`,class:`size-4`}),u[5]||=f(` 资金流动 `,-1)]),a(`div`,D,[(e(!0),c(o,null,n(p(pe),n=>(e(),i(v,{key:n.label,class:`hover:shadow-sm transition-shadow`},{default:t(()=>[r(_,{class:`p-4`},{default:t(()=>[a(`div`,O,[a(`div`,{class:d([`p-2 rounded-lg`,[n.bgColor]])},[r(p(m),{icon:n.icon,class:d([`size-4`,n.color])},null,8,[`icon`,`class`])],2),a(`span`,k,l(n.trend),1)]),a(`div`,A,[a(`p`,j,l(n.label),1),a(`p`,{class:d([`text-lg sm:text-xl font-bold font-mono truncate`,n.color])},l(Q(n.value)),3)])]),_:2},1024)]),_:2},1024))),128))])]),a(`div`,M,[a(`section`,N,[a(`h2`,P,[r(p(m),{icon:`lucide:trending-up`,class:`size-4`}),u[6]||=f(` 资金趋势 `,-1)]),r(v,null,{default:t(()=>[r(_,{class:`p-4`},{default:t(()=>[r(p(g),{option:p(me),autoresize:``,style:{height:`240px`}},null,8,[`option`])]),_:1})]),_:1})]),a(`section`,F,[a(`h2`,I,[r(p(m),{icon:`lucide:pie-chart`,class:`size-4`}),u[7]||=f(` 资金分布 `,-1)]),r(v,null,{default:t(()=>[r(_,{class:`p-4`},{default:t(()=>[r(p(g),{option:p(he),autoresize:``,style:{height:`240px`}},null,8,[`option`])]),_:1})]),_:1})])]),a(`div`,L,[a(`section`,R,[a(`h2`,se,[r(p(m),{icon:`lucide:activity`,class:`size-4`}),u[8]||=f(` 运营指标 `,-1)]),a(`div`,z,[(e(!0),c(o,null,n(p(ge),n=>(e(),i(v,{key:n.label,class:`hover:shadow-sm transition-shadow`},{default:t(()=>[r(_,{class:`p-4`},{default:t(()=>[a(`div`,B,[a(`div`,V,[a(`p`,H,l(n.label),1),a(`p`,U,l(n.value),1)]),r(p(m),{icon:n.icon,class:`size-6 text-muted-foreground/30 shrink-0`},null,8,[`icon`])])]),_:2},1024)]),_:2},1024))),128))])]),a(`section`,W,[a(`h2`,G,[r(p(m),{icon:`lucide:zap`,class:`size-4`}),u[9]||=f(` 快捷入口 `,-1)]),a(`div`,K,[r(v,{class:`cursor-pointer hover:shadow-md hover:border-primary/50 transition-all`,onClick:u[0]||=e=>$(`/monisuo/users`)},{default:t(()=>[r(_,{class:`p-4 text-center`},{default:t(()=>[r(p(m),{icon:`lucide:users`,class:`size-6 mx-auto mb-2 text-blue-600`}),u[10]||=a(`p`,{class:`text-sm font-medium`},` 用户管理 `,-1)]),_:1})]),_:1}),r(v,{class:`cursor-pointer hover:shadow-md hover:border-primary/50 transition-all`,onClick:u[1]||=e=>$(`/monisuo/coins`)},{default:t(()=>[r(_,{class:`p-4 text-center`},{default:t(()=>[r(p(m),{icon:`lucide:coins`,class:`size-6 mx-auto mb-2 text-yellow-600`}),u[11]||=a(`p`,{class:`text-sm font-medium`},` 币种管理 `,-1)]),_:1})]),_:1}),r(v,{class:`cursor-pointer hover:shadow-md hover:border-primary/50 transition-all`,onClick:u[2]||=e=>$(`/monisuo/orders`)},{default:t(()=>[r(_,{class:`p-4 text-center`},{default:t(()=>[r(p(m),{icon:`lucide:clipboard-check`,class:`size-6 mx-auto mb-2 text-green-600`}),u[12]||=a(`p`,{class:`text-sm font-medium`},` 订单审批 `,-1)]),_:1})]),_:1}),r(v,{class:`cursor-pointer hover:shadow-md hover:border-primary/50 transition-all`,onClick:u[3]||=e=>$(`/monisuo/analytics`)},{default:t(()=>[r(_,{class:`p-4 text-center`},{default:t(()=>[r(p(m),{icon:`lucide:trending-up`,class:`size-6 mx-auto mb-2 text-purple-600`}),u[13]||=a(`p`,{class:`text-sm font-medium`},` 业务分析 `,-1)]),_:1})]),_:1})])])])]))]),_:1})}}});export{q as default}; |