game/nginx/admin/assets/points-economy-IIgvLFBX.js
2026-04-20 16:07:22 +08:00

2 lines
7.2 KiB
JavaScript

var e=Object.defineProperty,t=Object.defineProperties,a=Object.getOwnPropertyDescriptors,l=Object.getOwnPropertySymbols,s=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable,r=(t,a,l)=>a in t?e(t,a,{enumerable:!0,configurable:!0,writable:!0,value:l}):t[a]=l,n=(e,t)=>{for(var a in t||(t={}))s.call(t,a)&&r(e,a,t[a]);if(l)for(var a of l(t))o.call(t,a)&&r(e,a,t[a]);return e},i=(e,l)=>t(e,a(l));import{d,N as u,b as c,e as m,m as p,b2 as v,r as g,c as x,o as f,f as h,g as b,w as y,j as _,v as w,q as j,h as C,i as P,T as k}from"./index-BoIUJTA2.js";/* empty css *//* empty css *//* empty css */import{_ as L}from"./index.vue_vue_type_script_setup_true_lang-DUbflfBQ.js";import{l as O,m as A,n as T}from"./operations-Cr4YfoRu.js";import{_ as R}from"./index.vue_vue_type_script_setup_true_lang-DUnXk1_V.js";import{u as S,a as B}from"./useChart-DmniNG26.js";import{a as D,E as I}from"./index-DqTthkO7.js";import{_ as V}from"./_plugin-vue_export-helper-BCo6x5W8.js";import"./iconify-DFoKediz.js";import"./installCanvasRenderer-D-xUkWdX.js";const W=d(i(n({},{name:"ArtRingChart"}),{__name:"index",props:{data:{default:()=>[]},radius:{default:()=>["50%","80%"]},borderRadius:{default:10},centerText:{default:""},showLabel:{type:Boolean,default:!1},height:{default:S().chartHeight},loading:{type:Boolean,default:!1},isEmpty:{type:Boolean,default:!1},colors:{default:()=>S().colors},showTooltip:{type:Boolean,default:!0},showLegend:{type:Boolean,default:!1},legendPosition:{default:"right"}},setup(e){const t=e,{chartRef:a,isDark:l,getAnimationConfig:s,getTooltipStyle:o,getLegendStyle:r}=B({props:t,checkEmpty:()=>{var e;return!(null==(e=t.data)?void 0:e.length)||t.data.every(e=>0===e.value)},watchSources:[()=>t.data,()=>t.centerText],generateOptions:()=>{const e=()=>{if(!t.showLegend)return["50%","50%"];switch(t.legendPosition){case"left":return["60%","50%"];case"right":return["40%","50%"];case"top":return["50%","60%"];case"bottom":return["50%","40%"];default:return["50%","50%"]}},a={tooltip:t.showTooltip?o("item",{formatter:"{b}: {c} ({d}%)"}):void 0,legend:t.showLegend?r(t.legendPosition):void 0,series:[i(n({name:"数据占比",type:"pie",radius:t.radius,center:e(),avoidLabelOverlap:!1,itemStyle:{borderRadius:t.borderRadius,borderColor:l.value?"#2c2c2c":"#fff",borderWidth:0},label:{show:t.showLabel,formatter:"{b}\n{d}%",position:"outside",color:l.value?"#ccc":"#999",fontSize:12},emphasis:{label:{show:!1,fontSize:14,fontWeight:"bold"}},labelLine:{show:t.showLabel,length:15,length2:25,smooth:!0},data:t.data,color:t.colors},s()),{animationType:"expansion"})]};if(t.centerText){const s=e();a.title={text:t.centerText,left:s[0],top:s[1],textAlign:"center",textVerticalAlign:"middle",textStyle:{fontSize:18,fontWeight:500,color:l.value?"#999":"#ADB0BC"}}}return a}});return(e,l)=>{const s=v;return u((m(),c("div",{ref_key:"chartRef",ref:a,class:"relative w-full",style:p({height:t.height})},null,4)),[[s,t.loading]])}}})),z={class:"art-card h-full p-6 relative overflow-hidden group"},E={class:"art-card-header mb-6"},q={class:"title"},N={class:"flex-c mb-1"},U={class:"extra"},F={class:"grid grid-cols-2 md:grid-cols-4 gap-4 mb-6"},H={class:"bg-blue-50 dark:bg-blue-900/20 p-4 rounded-xl"},M={class:"text-2xl font-bold"},X={class:"bg-orange-50 dark:bg-orange-900/20 p-4 rounded-xl"},Y={class:"text-2xl font-bold"},G={class:"bg-green-50 dark:bg-green-900/20 p-4 rounded-xl"},J={class:"bg-purple-50 dark:bg-purple-900/20 p-4 rounded-xl"},K={class:"text-2xl font-bold"},Q={class:"grid grid-cols-1 lg:grid-cols-3 gap-6"},Z={class:"lg:col-span-2"},$=V(d({__name:"points-economy",setup(e){const t=g("7d"),a=g(!1),l=g({totalIssued:0,totalConsumed:0,netChange:0,activeUsersWithPoints:0,conversionRate:0}),s=g([]),o=g([]),r=x(()=>s.value.map(e=>e.date.slice(5))),n=x(()=>[{name:"发行量",data:s.value.map(e=>e.issued),showAreaColor:!0},{name:"消耗量",data:s.value.map(e=>e.consumed),showAreaColor:!0}]),i={admin_add:"后台充值",redeem_coupon:"兑换优惠券",redeem_product:"兑换商品",redeem_item_card:"兑换道具卡",check_in:"每日签到",lottery_reward:"抽奖奖励",register_bonus:"注册赠送",invite_bonus:"邀请奖励",system_deduct:"系统扣除",refund:"退款返还",expired:"过期失效",game_win:"游戏获胜",game_cost:"游戏消耗"},d=x(()=>o.value.map(e=>({name:i[e.category]||e.category,value:Math.abs(e.amount)}))),p=e=>(new Intl.NumberFormat).format(e),S=()=>{return e=this,r=null,n=function*(){a.value=!0;try{const[e,a,r]=yield Promise.all([O(t.value),A(t.value),T(t.value)]);l.value=e,s.value=a,o.value=r}catch(e){k.error("获取积分经济数据失败")}finally{a.value=!1}},new Promise((t,a)=>{var l=e=>{try{o(n.next(e))}catch(t){a(t)}},s=e=>{try{o(n.throw(e))}catch(t){a(t)}},o=e=>e.done?t(e.value):Promise.resolve(e.value).then(l,s);o((n=n.apply(e,r)).next())});var e,r,n};return f(()=>{S()}),(e,i)=>{const g=L,x=I,f=D,k=v;return m(),c("div",z,[h("div",E,[h("div",q,[h("div",N,[b(g,{icon:"ri:coins-line",class:"text-warning mr-2 text-xl"}),i[1]||(i[1]=h("h4",{class:"text-xl font-black text-g-900 tracking-tight"},"积分经济总览",-1))]),i[2]||(i[2]=h("p",{class:"text-sm text-g-500"},"监控系统积分发行、消耗与存量健康度",-1))]),h("div",U,[b(f,{modelValue:t.value,"onUpdate:modelValue":i[0]||(i[0]=e=>t.value=e),size:"small",onChange:S},{default:y(()=>[b(x,{label:"7d"},{default:y(()=>[...i[3]||(i[3]=[_("近7天",-1)])]),_:1}),b(x,{label:"30d"},{default:y(()=>[...i[4]||(i[4]=[_("近30天",-1)])]),_:1})]),_:1},8,["modelValue"])])]),u((m(),c("div",null,[h("div",F,[h("div",H,[i[5]||(i[5]=h("div",{class:"text-blue-500 text-sm font-medium mb-1"},"发行总额",-1)),h("div",M,w(p(l.value.totalIssued)),1),i[6]||(i[6]=h("div",{class:"text-xs text-blue-400 mt-1"},"系统产出流入",-1))]),h("div",X,[i[7]||(i[7]=h("div",{class:"text-orange-500 text-sm font-medium mb-1"},"消耗总额",-1)),h("div",Y,w(p(l.value.totalConsumed)),1),i[8]||(i[8]=h("div",{class:"text-xs text-orange-400 mt-1"},"用户核销流出",-1))]),h("div",G,[i[9]||(i[9]=h("div",{class:"text-green-500 text-sm font-medium mb-1"},"净值变化",-1)),h("div",{class:j(["text-2xl font-bold",l.value.netChange>=0?"text-success":"text-danger"])},w(l.value.netChange>=0?"+":"")+w(p(l.value.netChange)),3),i[10]||(i[10]=h("div",{class:"text-xs text-green-400 mt-1"},"池内余额变动",-1))]),h("div",J,[i[11]||(i[11]=h("div",{class:"text-purple-500 text-sm font-medium mb-1"},"活跃持仓率",-1)),h("div",K,w(l.value.conversionRate)+"%",1),i[12]||(i[12]=h("div",{class:"text-xs text-purple-400 mt-1"},"活跃用户持分占比",-1))])]),h("div",Q,[h("div",Z,[i[13]||(i[13]=h("div",{class:"flex items-center justify-between mb-4"},[h("span",{class:"text-sm font-bold text-g-600"},"产出/消耗趋势")],-1)),s.value.length?(m(),C(R,{key:0,height:"280px",data:n.value,xAxisData:r.value,showLegend:!0,showAreaColor:!0,smooth:!0},null,8,["data","xAxisData"])):P("",!0)]),h("div",null,[i[14]||(i[14]=h("div",{class:"mb-4"},[h("span",{class:"text-sm font-bold text-g-600"},"收支结构占比")],-1)),o.value.length?(m(),C(W,{key:0,height:"280px",data:d.value,showLegend:!0,legendPosition:"bottom",centerText:"收支分布",showLabel:!0},null,8,["data"])):P("",!0)])])])),[[k,a.value]])])}}}),[["__scopeId","data-v-ae73b32d"]]);export{$ as default};