1 line
8.8 KiB
JavaScript
1 line
8.8 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{I as m,V as ee,X as te,nt as h}from"./index-CzQJleEd.js";import"./Teleport-BFem-E2C.js";import"./button-DrsgHYrz.js";import{f as g,l as _}from"./monisuo-admin.api-B4Uh3IMq.js";import{t as v}from"./Card-CF2bJMB0.js";import{t as y}from"./CardContent-_BI4zg4C.js";import{r as ne}from"./global-layout-CliiddUG.js";import{t as re}from"./Badge-BMYp-tx9.js";import{t as b}from"./decimal-D2wgARr3.js";var ie={key:0,class:`flex items-center justify-center py-20`},x={key:1,class:`grid gap-6`},S={class:`grid gap-4 grid-cols-1 sm:grid-cols-2 lg:grid-cols-4`},C={class:`flex items-center justify-between mb-3`},w={class:`text-xs text-muted-foreground mb-1`},T={class:`grid gap-6 lg:grid-cols-5`},E={class:`lg:col-span-3`},D={class:`text-sm font-medium text-muted-foreground flex items-center gap-2 mb-3`},O={class:`lg:col-span-2`},k={class:`text-sm font-medium text-muted-foreground flex items-center gap-2 mb-3`},A={class:`grid gap-3`},j={class:`flex items-center justify-between`},M={class:`flex items-center gap-3`},N={class:`text-sm text-muted-foreground`},P={class:`grid gap-6 lg:grid-cols-5`},F={class:`lg:col-span-2`},I={class:`text-sm font-medium text-muted-foreground flex items-center gap-2 mb-3`},ae={class:`grid gap-3 grid-cols-2`},L={class:`flex items-center justify-center mb-2`},R={class:`text-xs text-muted-foreground text-center mb-1`},z={class:`text-xl font-bold text-center`},B={class:`lg:col-span-3`},V={class:`text-sm font-medium text-muted-foreground flex items-center gap-2 mb-3`},H={class:`grid gap-3 grid-cols-2 sm:grid-cols-4`},U=u({__name:`dashboard`,setup(u){let U=m(),{data:W,isLoading:G}=g(),{data:K,isLoading:q}=_(6),J=s(()=>G.value||q.value),Y=s(()=>W.value?.data),X=s(()=>K.value?.data||[]);function Z(e){let t=e||0;return t>=1e8?`${(t/1e8).toFixed(2)}亿`:t>=1e4?`${(t/1e4).toFixed(1)}万`:t.toLocaleString(`en-US`,{minimumFractionDigits:2,maximumFractionDigits:2})}function Q(e,t){if(t===0)return e>0?{text:`+100%`,up:!0}:{text:`0%`,up:!0};let n=new b(e).minus(t).div(t).mul(100).toDecimalPlaces(1);return{text:`${n.gte(0)?`+`:``}${n}%`,up:n.gte(0)}}let oe=s(()=>{let e=Y.value;if(!e)return[];let t=(e.totalDeposit||0)-(e.totalWithdraw||0),n=Q(e.monthlyDeposit,e.lastMonthDeposit),r=Q(e.monthlyWithdraw,e.lastMonthWithdraw),i=Q(e.monthlyDeposit-e.monthlyWithdraw,e.lastMonthDeposit-e.lastMonthWithdraw);return[{label:`累计充值`,value:e.totalDeposit,icon:`lucide:arrow-down-to-line`,color:`text-emerald-600`,bgColor:`bg-emerald-50 dark:bg-emerald-950/40`,growth:n},{label:`累计提现`,value:e.totalWithdraw,icon:`lucide:arrow-up-from-line`,color:`text-red-500`,bgColor:`bg-red-50 dark:bg-red-950/40`,growth:r},{label:`实际出款`,value:e.totalActualPayout,icon:`lucide:banknote`,color:`text-amber-600`,bgColor:`bg-amber-50 dark:bg-amber-950/40`,growth:r},{label:`净流入`,value:t,icon:`lucide:trending-up`,color:`text-sky-600`,bgColor:`bg-sky-50 dark:bg-sky-950/40`,growth:i}]}),se=s(()=>({tooltip:{trigger:`axis`,formatter(e){let t=Array.isArray(e)?e:[e],n=t.map(e=>`${e.marker} ${e.seriesName}: USDT ${Number(e.value).toLocaleString()}`);return`<div style="font-size:12px"><b>${t[0].axisValue}</b><br/>${n.join(`<br/>`)}</div>`}},legend:{data:[`充值`,`提现`],bottom:0},grid:{left:`3%`,right:`4%`,bottom:`14%`,top:`8%`,containLabel:!0},xAxis:{type:`category`,data:X.value.map(e=>e.month),axisTick:{show:!1},axisLine:{lineStyle:{color:`#e5e7eb`}}},yAxis:{type:`value`,axisLabel:{formatter(e){return e>=1e4?`${(e/1e4).toFixed(0)}万`:`${e}`}},splitLine:{lineStyle:{color:`#f3f4f6`,type:`dashed`}}},series:[{name:`充值`,type:`line`,smooth:!0,symbol:`circle`,symbolSize:6,data:X.value.map(e=>e.deposit),itemStyle:{color:`#10b981`},areaStyle:{color:{type:`linear`,x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:`rgba(16, 185, 129, 0.25)`},{offset:1,color:`rgba(16, 185, 129, 0.02)`}]}}},{name:`提现`,type:`line`,smooth:!0,symbol:`circle`,symbolSize:6,data:X.value.map(e=>e.withdraw),itemStyle:{color:`#ef4444`},areaStyle:{color:{type:`linear`,x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:`rgba(239, 68, 68, 0.25)`},{offset:1,color:`rgba(239, 68, 68, 0.02)`}]}}}]})),ce=s(()=>{let e=Y.value;return e?[{label:`平台总资产`,value:(e.fundBalance||0)+(e.tradeValue||0),icon:`lucide:landmark`,color:`text-violet-600`},{label:`在管资金`,value:e.fundBalance,icon:`lucide:wallet`,color:`text-blue-600`},{label:`冻结中`,value:e.totalFrozen,icon:`lucide:lock`,color:`text-slate-500`}]:[]}),le=s(()=>{let e=Y.value;return e?[{label:`用户总数`,value:e.userCount,icon:`lucide:users`,color:`text-blue-600`,bgColor:`bg-blue-50 dark:bg-blue-950/40`},{label:`今日活跃`,value:e.todayActiveUsers,icon:`lucide:activity`,color:`text-green-600`,bgColor:`bg-green-50 dark:bg-green-950/40`},{label:`本月新增`,value:e.monthNewUsers,icon:`lucide:user-plus`,color:`text-purple-600`,bgColor:`bg-purple-50 dark:bg-purple-950/40`},{label:`待审批`,value:e.pendingCount,icon:`lucide:clock`,color:e.pendingCount>0?`text-amber-600`:`text-slate-500`,bgColor:e.pendingCount>0?`bg-amber-50 dark:bg-amber-950/40`:`bg-slate-50 dark:bg-slate-950/40`}]:[]});function $(e){U.push(e)}return(s,u)=>{let m=te,g=re,_=y,b=v;return e(),i(p(ne),{title:`数据看板`,description:`核心业务数据一览`},{default:t(()=>[p(J)?(e(),c(`div`,ie,[r(m,{class:`w-8 h-8`})])):(e(),c(`div`,x,[a(`section`,null,[a(`div`,S,[(e(!0),c(o,null,n(p(oe),n=>(e(),i(b,{key:n.label,class:`hover:shadow-sm transition-shadow`},{default:t(()=>[r(_,{class:`p-5`},{default:t(()=>[a(`div`,C,[a(`div`,{class:d([`p-2 rounded-lg`,[n.bgColor]])},[r(p(h),{icon:n.icon,class:d([`size-4`,n.color])},null,8,[`icon`,`class`])],2),r(g,{variant:n.growth.up?`default`:`destructive`,class:`text-xs font-mono`},{default:t(()=>[f(l(n.growth.text),1)]),_:2},1032,[`variant`])]),a(`p`,w,l(n.label),1),a(`p`,{class:d([`text-xl font-bold font-mono truncate`,n.color])},l(Z(n.value)),3)]),_:2},1024)]),_:2},1024))),128))])]),a(`div`,T,[a(`section`,E,[a(`h2`,D,[r(p(h),{icon:`lucide:trending-up`,class:`size-4`}),u[4]||=f(` 资金流动趋势(近6月) `,-1)]),r(b,null,{default:t(()=>[r(_,{class:`p-4`},{default:t(()=>[r(p(ee),{option:p(se),autoresize:``,style:{height:`280px`}},null,8,[`option`])]),_:1})]),_:1})]),a(`section`,O,[a(`h2`,k,[r(p(h),{icon:`lucide:wallet`,class:`size-4`}),u[5]||=f(` 资产状态 `,-1)]),a(`div`,A,[(e(!0),c(o,null,n(p(ce),n=>(e(),i(b,{key:n.label,class:`hover:shadow-sm transition-shadow`},{default:t(()=>[r(_,{class:`p-4`},{default:t(()=>[a(`div`,j,[a(`div`,M,[r(p(h),{icon:n.icon,class:`size-4 text-muted-foreground`},null,8,[`icon`]),a(`span`,N,l(n.label),1)]),a(`span`,{class:d([`text-lg font-bold font-mono`,n.color])},l(Z(n.value)),3)])]),_:2},1024)]),_:2},1024))),128))])])]),a(`div`,P,[a(`section`,F,[a(`h2`,I,[r(p(h),{icon:`lucide:activity`,class:`size-4`}),u[6]||=f(` 运营快报 `,-1)]),a(`div`,ae,[(e(!0),c(o,null,n(p(le),n=>(e(),i(b,{key:n.label,class:d([`hover:shadow-sm transition-shadow`,{"cursor-pointer":n.label===`待审批`}]),onClick:e=>n.label===`待审批`&&$(`/monisuo/orders`)},{default:t(()=>[r(_,{class:`p-4`},{default:t(()=>[a(`div`,L,[a(`div`,{class:d([`p-2 rounded-lg`,[n.bgColor]])},[r(p(h),{icon:n.icon,class:d([`size-4`,n.color])},null,8,[`icon`,`class`])],2)]),a(`p`,R,l(n.label),1),a(`p`,z,l(n.value),1)]),_:2},1024)]),_:2},1032,[`class`,`onClick`]))),128))])]),a(`section`,B,[a(`h2`,V,[r(p(h),{icon:`lucide:zap`,class:`size-4`}),u[7]||=f(` 快捷入口 `,-1)]),a(`div`,H,[r(b,{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(h),{icon:`lucide:users`,class:`size-6 mx-auto mb-2 text-blue-600`}),u[8]||=a(`p`,{class:`text-sm font-medium`},` 用户管理 `,-1)]),_:1})]),_:1}),r(b,{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(h),{icon:`lucide:coins`,class:`size-6 mx-auto mb-2 text-yellow-600`}),u[9]||=a(`p`,{class:`text-sm font-medium`},` 币种管理 `,-1)]),_:1})]),_:1}),r(b,{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(h),{icon:`lucide:clipboard-check`,class:`size-6 mx-auto mb-2 text-green-600`}),u[10]||=a(`p`,{class:`text-sm font-medium`},` 订单审批 `,-1)]),_:1})]),_:1}),r(b,{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(h),{icon:`lucide:trending-up`,class:`size-6 mx-auto mb-2 text-purple-600`}),u[11]||=a(`p`,{class:`text-sm font-medium`},` 业务分析 `,-1)]),_:1})]),_:1})])])])]))]),_:1})}}});export{U as default}; |