Files
hedena_gold/apps/admin-panel/dist/assets/Dashboard-BsSCYCyA.js
T
s.esmaeiliandCursor 1dd66a1baf Commit frontend release builds after the admin Icon migration.
Refresh admin-panel and user-app dist bundles produced by the production build.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-16 00:22:49 +03:30

2 lines
15 KiB
JavaScript

import{I as b}from"./Icon-B1Oy_KgZ.js";import{j as S,p as I}from"./filters-RVjQA319.js";import{d as xs,s as ws,u as Os,v as Ss,x as Cs,c as u,w as y,k as X,y as zs,r as v,o as n,m as s,p as _,t as l,e as h,f as L,a as m,z as M,F as C,b as q,q as B,g as i,n as Ls,_ as Ms}from"./index-DHam5nqk.js";import"./index-DJrSfVT0.js";const Ns={class:"dashboard"},Ts={class:"dash-head"},Rs={class:"dash-head__date"},Is={class:"kpi-grid"},Bs={class:"kpi kpi--success"},As={class:"kpi__top"},Ps={class:"kpi__icon"},Ds={class:"kpi__value"},Hs={class:"kpi kpi--primary"},Ws={class:"kpi__top"},Fs={class:"kpi__icon"},Gs={class:"kpi__value"},js={class:"kpi__foot"},Es={class:"kpi kpi--warning"},Us={class:"kpi__top"},Vs={class:"kpi__icon"},$s={class:"kpi__value"},Ys={class:"kpi__foot"},Xs={class:"kpi kpi--danger"},qs={class:"kpi__top"},Js={class:"kpi__icon"},Ks={class:"kpi__value kpi__value--price"},Qs={class:"kpi__foot"},Zs={class:"row row--main"},se={class:"panel"},ee={class:"panel__head"},te={class:"panel__sub"},ae={class:"trend-totals"},le={key:0,class:"trend-totals__item"},oe={class:"trend-totals__item"},ne={key:0,class:"panel"},ie={class:"legend-list"},re={class:"legend-list__label"},de={class:"legend-list__meta"},ce={class:"row row--main"},_e={class:"panel"},ue={class:"panel__head"},pe={class:"pill"},he={class:"panel"},me={class:"metric-list"},be={class:"metric-list__icon tone-primary"},ve={class:"metric-list__icon tone-success"},ge={class:"metric-list__icon tone-warning"},ke={class:"metric-list__icon tone-danger"},fe={class:"row row--half"},ye={class:"panel"},xe={key:0,class:"rank-list"},we={class:"rank-list__body"},Oe={class:"rank-list__row"},Se={class:"rank-list__name"},Ce={class:"rank-list__bar"},ze={class:"rank-list__meta"},Le={class:"panel"},Me={class:"panel"},Ne={class:"panel__head"},Te={class:"pill"},Re={class:"order-item__head"},Ie={class:"order-item__name"},Be={class:"order-item__customer"},Ae={class:"order-item__meta"},x="#1d4ed8",g="#28c76f",A="#ff9f43",Pe="#ea5455",f="#8a94a6",De=xs({__name:"Dashboard",setup(He){const N=X(!1),d=ws(),J=Os(),w=i(()=>J.isSuperAdmin),K=i(()=>d.isMobile?240:300),Q=i(()=>d.isMobile?220:240),Z=i(()=>d.isMobile?260:320),a=zs({customerCount:0,allgram:0,ordercount:0,reagent:[],lastOrder:[],sumLastOrder:0,sumLastOrderMonth:0,ordersTrend:[],statusBreakdown:[],channelBreakdown:[],topProducts:[],goldPricePerGram:null,totalCustomerDebtGrams:0}),T=[x,g],ss=[A,x,x,A,A,g,g,Pe],O={fontFamily:"inherit",parentHeightOffset:0,toolbar:{show:!1}},R={borderColor:"#eef0f5",strokeDashArray:4},es=[{title:"شماره سفارش",dataIndex:"name"},{title:"مشتری",dataIndex:"customer"},{title:"وزن",dataIndex:"w"},{title:"وضعیت",dataIndex:"sts_str"},{title:"تاریخ",dataIndex:"caj"}];function P(t){return{success:"green",warning:"orange",danger:"red",primary:"blue"}[t]??""}function c(t){return I(t??0)||"0"}const ts=i(()=>S(new Date().toISOString())),as=i(()=>a.goldPricePerGram?`${I(Math.round(Number(a.goldPricePerGram)))} تومان`:"—"),D=i(()=>I(Number(a.totalCustomerDebtGrams??0).toFixed(2))),H=i(()=>{const t=Number(a.sumLastOrder??0),e=Number(a.sumLastOrderMonth??0);return t>0?(e/t).toFixed(2):"0"}),W=i(()=>(a.ordersTrend??[]).map(t=>t.total)),ls={chart:{...O,sparkline:{enabled:!0},animations:{enabled:!1}},colors:[g],stroke:{curve:"smooth",width:2},fill:{type:"gradient",gradient:{opacityFrom:.35,opacityTo:0}},tooltip:{enabled:!1}},k=X("area"),os=[{label:"ناحیه‌ای",value:"area"},{label:"ستونی",value:"bar"}],ns=i(()=>(a.ordersTrend??[]).reduce((t,e)=>t+Number(e.retail??0),0)),is=i(()=>(a.ordersTrend??[]).reduce((t,e)=>t+Number(e.wholesale??0),0)),rs=i(()=>{const t=a.ordersTrend??[],e={name:"عمده فروشی",data:t.map(r=>r.wholesale)};return w.value?[{name:"تک فروشی",data:t.map(r=>r.retail)},e]:[e]}),ds=i(()=>({chart:{...O,stacked:k.value==="bar"},colors:w.value?[x,g]:[g],dataLabels:{enabled:!1},stroke:k.value==="area"?{curve:"smooth",width:2.5}:{width:0},fill:k.value==="area"?{type:"gradient",gradient:{opacityFrom:.3,opacityTo:.02}}:{opacity:1},plotOptions:{bar:{columnWidth:"55%",borderRadius:3,borderRadiusApplication:"end"}},legend:{show:!1},grid:{...R,padding:d.isMobile?{left:4,right:4}:{}},markers:{size:0,hover:{size:5}},xaxis:{categories:(a.ordersTrend??[]).map(t=>String(S(t.date)??"").slice(5)),tickAmount:d.isMobile?6:10,axisBorder:{show:!1},axisTicks:{show:!1},labels:{rotate:0,hideOverlappingLabels:!0,style:{colors:f,fontSize:d.isMobile?"10px":"12px"}}},yaxis:{labels:{style:{colors:f,fontSize:d.isMobile?"10px":"12px"},formatter:t=>String(Math.round(t))}},tooltip:{shared:!0,intersect:!1,x:{formatter:(t,e)=>{var r;return S((r=(a.ordersTrend??[])[e==null?void 0:e.dataPointIndex])==null?void 0:r.date)}}}})),F=i(()=>(a.channelBreakdown??[]).map(t=>Number(t.count??0))),cs=i(()=>({chart:{...O},labels:(a.channelBreakdown??[]).map(t=>t.label),colors:T,legend:{show:!1},dataLabels:{enabled:!1},stroke:{width:3,colors:["#fff"]},plotOptions:{pie:{donut:{size:"74%",labels:{show:!0,name:{fontSize:"13px",color:f,offsetY:18},value:{fontSize:"16px",fontWeight:500,color:x,offsetY:-14},total:{show:!0,label:"کل سفارش‌ها",color:f,fontSize:"13px",formatter:t=>String(t.globals.seriesTotals.reduce((e,r)=>e+r,0))}}}}}})),_s=i(()=>(a.statusBreakdown??[]).reduce((t,e)=>t+Number(e.count??0),0)),G=i(()=>[{name:"تعداد",data:(a.statusBreakdown??[]).map(t=>Number(t.count??0))}]),us=i(()=>{var t;return Math.max(200,(((t=a.statusBreakdown)==null?void 0:t.length)??0)*(d.isMobile?38:44)+40)}),ps=i(()=>({chart:{...O},colors:ss,plotOptions:{bar:{horizontal:!0,distributed:!0,borderRadius:6,borderRadiusApplication:"end",barHeight:"58%"}},legend:{show:!1},dataLabels:{enabled:!0,textAnchor:"start",offsetX:8,style:{colors:["#fff"],fontWeight:500,fontSize:"12px"}},grid:{...R,xaxis:{lines:{show:!0}},yaxis:{lines:{show:!1}}},xaxis:{categories:(a.statusBreakdown??[]).map(t=>t.label),axisBorder:{show:!1},axisTicks:{show:!1},labels:{style:{colors:f,fontSize:"11px"}}},yaxis:{labels:{maxWidth:d.isMobile?110:160,style:{colors:"#475467",fontSize:"12px",fontWeight:500}}},tooltip:{y:{formatter:t=>`${t} سفارش`}}})),hs=i(()=>Math.max(1,...(a.reagent??[]).map(t=>Number(t.grams_sell??0))));function ms(t){return Math.max(2,Math.round(Number(t.grams_sell??0)/hs.value*100))}const j=i(()=>[{name:"وزن فروخته‌شده (گرم)",data:(a.topProducts??[]).map(t=>Number(t.weight??0))}]),bs=i(()=>({chart:{...O},plotOptions:{bar:d.isMobile?{horizontal:!0,borderRadius:6,borderRadiusApplication:"end",barHeight:"60%"}:{borderRadius:8,borderRadiusApplication:"end",columnWidth:"45%"}},colors:[g],fill:{type:"gradient",gradient:{shade:"light",type:"vertical",shadeIntensity:.2,opacityFrom:1,opacityTo:.75}},dataLabels:{enabled:!1},grid:R,xaxis:{categories:(a.topProducts??[]).map(t=>t.title),axisBorder:{show:!1},axisTicks:{show:!1},labels:{trim:!0,style:{colors:f,fontSize:d.isMobile?"10px":"12px"}}},yaxis:{labels:{maxWidth:d.isMobile?120:160,style:{colors:f,fontSize:d.isMobile?"11px":"12px"}}},tooltip:{y:{formatter:t=>`${t} گرم`}}}));return Ss(async()=>{try{N.value=!0;const{data:t}=await Cs.get("dashboard/overview");Object.assign(a,t),a.reagent=[...a.reagent??[]].sort((e,r)=>Number(r.grams_sell)-Number(e.grams_sell)),a.lastOrder=[...a.lastOrder??[]].sort((e,r)=>Number(r.w)-Number(e.w))}catch(t){console.error(t)}finally{N.value=!1}}),(t,e)=>{const r=v("apexchart"),vs=v("a-segmented"),z=v("a-empty"),E=v("a-tag"),gs=v("a-list-item"),ks=v("a-list"),fs=v("a-table"),ys=v("a-spin");return n(),u(ys,{spinning:N.value},{default:y(()=>{var U,V,$,Y;return[s("div",Ns,[s("header",Ts,[e[1]||(e[1]=s("div",null,[s("h1",{class:"dash-head__title"},"داشبورد"),s("p",{class:"dash-head__sub"},"خلاصه عملکرد فروش در ۳۰ روز گذشته")],-1)),s("div",Rs,[_(b,{icon:"vuesax-linear:calendar",size:"16"}),s("span",null,l(ts.value),1)])]),s("section",Is,[s("div",Bs,[s("div",As,[s("span",Ps,[_(b,{icon:"vuesax-linear:bag-2",size:"16"})]),e[2]||(e[2]=s("span",{class:"kpi__label"},"تعداد سفارشات (۳۰ روز گذشته)",-1))]),s("div",Ds,[h(l(c(a.ordercount)),1),e[3]||(e[3]=s("small",null,"سفارش",-1))]),W.value.length?(n(),u(r,{key:0,class:"kpi__spark",type:"area",height:"56",options:ls,series:[{name:"سفارش",data:W.value}]},null,8,["series"])):L("",!0)]),s("div",Hs,[s("div",Ws,[s("span",Fs,[_(b,{icon:"vuesax-linear:diamonds",size:"16"})]),e[4]||(e[4]=s("span",{class:"kpi__label"},"طلای فروش رفته (۳۰ روز گذشته)",-1))]),s("div",Gs,[h(l(c(a.allgram)),1),e[5]||(e[5]=s("small",null,"گرم",-1))]),s("div",js,[e[6]||(e[6]=h(" میانگین هر سفارش تحویل‌شده: ",-1)),s("b",null,l(H.value)+" گرم",1)])]),s("div",Es,[s("div",Us,[s("span",Vs,[_(b,{icon:"vuesax-linear:user-add",size:"16"})]),e[7]||(e[7]=s("span",{class:"kpi__label"},"مشتریان جدید (۳۰ روز گذشته)",-1))]),s("div",$s,[h(l(c(a.customerCount)),1),e[8]||(e[8]=s("small",null,"نفر",-1))]),s("div",Ys,[e[9]||(e[9]=h(" مجموع بدهی طلای مشتریان: ",-1)),s("b",null,l(D.value)+" گرم",1)])]),s("div",Xs,[s("div",qs,[s("span",Js,[_(b,{icon:"vuesax-linear:dollar-circle",size:"16"})]),e[10]||(e[10]=s("span",{class:"kpi__label"},"نرخ هر گرم طلای ۱۸ عیار",-1))]),s("div",Ks,l(as.value),1),s("div",Qs,[e[11]||(e[11]=h(" سفارشات تحویل‌شده (۳۰ روز گذشته): ",-1)),s("b",null,l(c(a.sumLastOrder))+" سفارش",1)])])]),s("section",Zs,[s("div",se,[s("div",ee,[s("div",null,[e[12]||(e[12]=s("h3",{class:"panel__title"},"روند سفارش‌ها",-1)),s("p",te,l(w.value?"۳۰ روز گذشته، تفکیک تک و عمده":"۳۰ روز گذشته"),1)]),_(vs,{value:k.value,"onUpdate:value":e[0]||(e[0]=o=>k.value=o),options:os,size:"small"},null,8,["value"])]),s("div",ae,[w.value?(n(),m("div",le,[s("span",{class:"dot",style:M({background:x})},null,4),e[13]||(e[13]=s("span",null,"تک فروشی",-1)),s("b",null,l(c(ns.value)),1)])):L("",!0),s("div",oe,[s("span",{class:"dot",style:M({background:g})},null,4),e[14]||(e[14]=s("span",null,"عمده فروشی",-1)),s("b",null,l(c(is.value)),1)])]),(n(),u(r,{key:k.value,type:k.value,height:K.value,options:ds.value,series:rs.value},null,8,["type","height","options","series"]))]),w.value?(n(),m("div",ne,[e[15]||(e[15]=s("div",{class:"panel__head"},[s("div",null,[s("h3",{class:"panel__title"},"تفکیک عمده / تک"),s("p",{class:"panel__sub"},"۳۰ روز گذشته")])],-1)),F.value.some(o=>o>0)?(n(),m(C,{key:0},[_(r,{type:"donut",height:Q.value,options:cs.value,series:F.value},null,8,["height","options","series"]),s("ul",ie,[(n(!0),m(C,null,q(a.channelBreakdown,(o,p)=>(n(),m("li",{key:o.channel},[s("span",{class:"dot",style:M({background:T[p%T.length]})},null,4),s("span",re,l(o.label),1),s("span",de,l(c(o.grams))+" گرم",1),s("b",null,l(c(o.count)),1)]))),128))])],64)):(n(),u(z,{key:1,description:"داده‌ای برای نمایش وجود ندارد"}))])):L("",!0)]),s("section",ce,[s("div",_e,[s("div",ue,[e[16]||(e[16]=s("div",null,[s("h3",{class:"panel__title"},"وضعیت سفارشات"),s("p",{class:"panel__sub"},"۳۰ روز گذشته")],-1)),s("span",pe,l(c(_s.value))+" سفارش",1)]),G.value[0].data.length?(n(),u(r,{key:0,type:"bar",height:us.value,options:ps.value,series:G.value},null,8,["height","options","series"])):(n(),u(z,{key:1,description:"داده‌ای برای نمایش وجود ندارد"}))]),s("div",he,[e[21]||(e[21]=s("div",{class:"panel__head"},[s("div",null,[s("h3",{class:"panel__title"},"میزان فروش"),s("p",{class:"panel__sub"},"۳۰ روز گذشته")])],-1)),s("ul",me,[s("li",null,[s("span",be,[_(b,{icon:"vuesax-linear:tick-circle",size:"16"})]),e[17]||(e[17]=s("span",{class:"metric-list__label"},"تعداد سفارش (۳۰ روز)",-1)),s("b",null,l(c(a.sumLastOrder)),1)]),s("li",null,[s("span",ve,[_(b,{icon:"vuesax-linear:diamonds",size:"16"})]),e[18]||(e[18]=s("span",{class:"metric-list__label"},"مجموع وزن (۳۰ روز)",-1)),s("b",null,l(c(a.sumLastOrderMonth))+" گرم",1)]),s("li",null,[s("span",ge,[_(b,{icon:"vuesax-linear:chart",size:"16"})]),e[19]||(e[19]=s("span",{class:"metric-list__label"},"میانگین هر سفارش",-1)),s("b",null,l(H.value)+" گرم",1)]),s("li",null,[s("span",ke,[_(b,{icon:"vuesax-linear:card",size:"16"})]),e[20]||(e[20]=s("span",{class:"metric-list__label"},"مجموع بدهی طلای مشتریان",-1)),s("b",null,l(D.value)+" گرم",1)])])])]),s("section",fe,[s("div",ye,[e[22]||(e[22]=s("div",{class:"panel__head"},[s("div",null,[s("h3",{class:"panel__title"},"عملکرد کارشناسان فروش"),s("p",{class:"panel__sub"},"بر اساس گرم فروخته‌شده")])],-1)),(U=a.reagent)!=null&&U.length?(n(),m("ol",xe,[(n(!0),m(C,null,q(a.reagent,(o,p)=>(n(),m("li",{key:o.id??p},[s("span",{class:Ls(["rank-list__pos",{"is-top":p<3}])},l(p+1),3),s("div",we,[s("div",Oe,[s("span",Se,l(o.name),1),s("b",null,l(c(o.grams_sell))+" گرم",1)]),s("div",Ce,[s("span",{style:M({width:`${ms(o)}%`})},null,4)]),s("span",ze,l(c(o.order_count))+" سفارش",1)])]))),128))])):(n(),u(z,{key:1,description:"داده‌ای برای نمایش وجود ندارد"}))]),s("div",Le,[e[23]||(e[23]=s("div",{class:"panel__head"},[s("div",null,[s("h3",{class:"panel__title"},"محصولات پرفروش"),s("p",{class:"panel__sub"},"۳۰ روز گذشته، بر اساس وزن")])],-1)),(V=j.value[0])!=null&&V.data.length?(n(),u(r,{key:0,type:"bar",height:Z.value,options:bs.value,series:j.value},null,8,["height","options","series"])):(n(),u(z,{key:1,description:"داده‌ای برای نمایش وجود ندارد"}))])]),s("section",Me,[s("div",Ne,[e[24]||(e[24]=s("div",null,[s("h3",{class:"panel__title"},"سفارشات هفته جاری"),s("p",{class:"panel__sub"},"مرتب‌شده بر اساس وزن")],-1)),s("span",Te,l(c((($=a.lastOrder)==null?void 0:$.length)??0))+" سفارش",1)]),B(d).isMobile?(n(),u(ks,{key:0,class:"order-list","data-source":a.lastOrder,pagination:((Y=a.lastOrder)==null?void 0:Y.length)>10?{pageSize:10,size:"small",align:"center"}:!1,"row-key":"id"},{renderItem:y(({item:o})=>[_(gs,{class:"order-item"},{default:y(()=>[s("div",Re,[s("span",Ie,l(o.name),1),_(E,{color:P(o.statusColor),class:"order-item__tag"},{default:y(()=>[h(l(o.sts_str),1)]),_:2},1032,["color"])]),s("div",Be,l(o.customer),1),s("div",Ae,[s("span",null,l(o.w)+" گرم",1),s("span",null,l(B(S)(o.caj)),1)])]),_:2},1024)]),_:1},8,["data-source","pagination"])):(n(),u(fs,{key:1,class:"dash-table",size:"middle","data-source":a.lastOrder,columns:es,pagination:{pageSize:10},scroll:{x:"max-content"},"row-key":"id"},{bodyCell:y(({column:o,record:p})=>[o.dataIndex==="sts_str"?(n(),u(E,{key:0,color:P(p.statusColor)},{default:y(()=>[h(l(p.sts_str),1)]),_:2},1032,["color"])):o.dataIndex==="caj"?(n(),m(C,{key:1},[h(l(B(S)(p.caj)),1)],64)):o.dataIndex==="w"?(n(),m(C,{key:2},[h(l(p.w)+" گرم",1)],64)):L("",!0)]),_:1},8,["data-source"]))])])]}),_:1},8,["spinning"])}}}),Ee=Ms(De,[["__scopeId","data-v-72481926"]]);export{Ee as default};