1 line
12 KiB
JavaScript
1 line
12 KiB
JavaScript
import{A as e,At as t,D as n,F as r,N as i,Ot as a,U as o,c as s,ct as c,d as l,et as u,g as d,h as f,jt as p,l as m,m as h,r as g,s as _,t as v,u as y}from"./_plugin-vue_export-helper-vx-p5QAT.js";import{a as b,t as x}from"./http-CTjL79ty.js";import{C as S,L as C,b as w,c as T,i as E,o as D,z as O}from"./index-DxcN1-hp.js";import{t as k}from"./StatusBadge-BkaoX2rz.js";var ee={class:`sales-chart`},A={key:0,class:`sales-chart__header`},j={key:0,class:`sales-chart__title`},M={key:1,class:`sales-chart__subtitle`},N=[`viewBox`,`aria-label`],te=[`x1`,`x2`,`y1`,`y2`],P=[`points`],F=[`points`],I=[`x1`,`x2`,`y1`,`y2`],L=[`cx`,`cy`],R={class:`sales-chart__tooltip-label`},z={key:1,class:`sales-chart__axis`},B=320,V=120,H=v(d({__name:`SalesAreaChart`,props:{data:{},title:{},subtitle:{},height:{default:160},color:{default:`#091d36`},unit:{default:`میلیارد تومان`},labels:{}},setup(n){let r=n,a=u(null),o={top:12,right:8,bottom:8,left:8},d=_(()=>Math.max(...r.data,.001)),f=_(()=>{let e=B-o.left-o.right,t=V-o.top-o.bottom,n=e/Math.max(r.data.length-1,1);return r.data.map((e,r)=>({x:o.left+r*n,y:o.top+t-e/d.value*t,value:e,index:r}))}),m=_(()=>f.value.map(e=>`${e.x},${e.y}`).join(` `)),h=_(()=>{let e=V-o.bottom,t=f.value[0],n=f.value[f.value.length-1];return!t||!n?``:`${t.x},${e} ${m.value} ${n.x},${e}`}),v=_(()=>{let e=V-o.top-o.bottom;return[0,.5,1].map(t=>o.top+e*t)}),b=_(()=>a.value===null?null:f.value[a.value]??null);function x(e){let t=e.currentTarget.getBoundingClientRect(),n=(e.clientX-t.left)/t.width*B,r=0,i=1/0;f.value.forEach(e=>{let t=Math.abs(e.x-n);t<i&&(i=t,r=e.index)}),a.value=r}function S(){a.value=null}return(r,a)=>(e(),l(`div`,ee,[n.title||n.subtitle?(e(),l(`div`,A,[s(`div`,null,[n.title?(e(),l(`h3`,j,p(n.title),1)):y(``,!0),n.subtitle?(e(),l(`p`,M,p(n.subtitle),1)):y(``,!0)])])):y(``,!0),s(`div`,{class:`sales-chart__body`,style:t({height:`${n.height}px`})},[(e(),l(`svg`,{class:`sales-chart__svg`,viewBox:`0 0 ${B} ${V}`,preserveAspectRatio:`none`,role:`img`,"aria-label":n.title||`نمودار فروش`,onMousemove:x,onMouseleave:S},[(e(!0),l(g,null,i(v.value,(t,n)=>(e(),l(`line`,{key:n,x1:o.left,x2:B-o.right,y1:t,y2:t,class:`sales-chart__grid`},null,8,te))),128)),h.value?(e(),l(`polygon`,{key:0,points:h.value,class:`sales-chart__area`,style:t({fill:`${n.color}22`})},null,12,P)):y(``,!0),s(`polyline`,{points:m.value,class:`sales-chart__line`,style:t({stroke:n.color})},null,12,F),b.value?(e(),l(g,{key:1},[s(`line`,{x1:b.value.x,x2:b.value.x,y1:o.top,y2:V-o.bottom,class:`sales-chart__cursor`},null,8,I),s(`circle`,{cx:b.value.x,cy:b.value.y,r:`4`,class:`sales-chart__dot`,style:t({fill:n.color})},null,12,L)],64)):y(``,!0)],40,N)),b.value?(e(),l(`div`,{key:0,class:`sales-chart__tooltip`,style:t({left:`${b.value.x/B*100}%`})},[s(`span`,R,p(n.labels?.[b.value.index]??`روز ${b.value.index+1}`),1),s(`strong`,null,p(c(T)(b.value.value))+` `+p(n.unit),1)],4)):y(``,!0)],4),n.labels?.length?(e(),l(`div`,z,[(e(!0),l(g,null,i(n.labels,(t,n)=>(e(),l(`span`,{key:n},p(t),1))),128))])):y(``,!0)]))}}),[[`__scopeId`,`data-v-36d15f13`]]),U={info:`var(--color-info-light)`,warning:`var(--color-warning-light)`,purple:`var(--color-purple-light)`,success:`var(--color-success-light)`},W={info:`var(--color-info)`,warning:`var(--color-warning-dark)`,purple:`var(--color-purple)`,success:`var(--color-success)`},G=()=>({newOrders:0,pendingReview:0,pendingCheck:0,finalApproval:0,todaySales:0,todaySalesGrowth:0,monthSales:0});function K(){let e=O(),t=b(),r=u(G()),i=u([]),a=u(Array.from({length:28},()=>0)),o=u([`۱`,`۷`,`۱۴`,`۲۱`,`۲۸`]),s=u([]),c=u(!1),l=_(()=>[{label:`سفارشهای جدید`,value:r.value.newOrders,icon:`cart`,tone:`info`,link:`/orders`},{label:`در انتظار بررسی`,value:r.value.pendingReview,icon:`file`,tone:`warning`,link:`/orders?tab=pending_review`},{label:`بررسی چک`,value:r.value.pendingCheck,icon:`wallet`,tone:`purple`,link:`/orders?tab=pending_check`},{label:`تأیید نهایی شده`,value:r.value.finalApproval,icon:`check-circle`,tone:`success`,link:`/orders?tab=final_approval`}]),d=_(()=>{let e=a.value;if(!e.length)return``;let t=Math.max(...e,.001),n=e.length>1?280/(e.length-1):280;return e.map((e,r)=>`${r*n},${120-e/t*110-5}`).join(` `)});async function f(){c.value=!0;try{let e=await w.get();r.value=e.stats,i.value=(e.recentOrders??[]).map(e=>S(e)),a.value=e.salesChartData?.length?e.salesChartData:Array.from({length:28},()=>0),o.value=e.chartAxisLabels?.length?e.chartAxisLabels:[`۱`,`۷`,`۱۴`,`۲۱`,`۲۸`],s.value=e.checkDeadlines??[]}catch(e){t.error(e instanceof x?e.message:`بارگذاری داشبورد انجام نشد.`)}finally{c.value=!1}}n(()=>{f()});function p(){e.push(`/orders`)}return{checkDeadlines:s,dashboardStats:r,recentOrders:i,chartPoints:d,salesChartData:a,chartAxisLabels:o,statCards:l,loading:c,goOrders:p,loadDashboard:f}}var q={class:`dashboard`},J={class:`dashboard__toolbar`},Y={type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`},X={class:`dashboard__stats`},Z={class:`admin-stat-card__label`},Q={class:`admin-stat-card__value`},ne={class:`dashboard__sales-card admin-stat-card`},re={class:`dashboard__sales-header`},ie={class:`admin-stat-card__value dashboard__sales-value`},ae={class:`dashboard__sales-growth`},oe={class:`dashboard__grid`},se={class:`dashboard__chart-card admin-card`},ce={class:`dashboard__orders-card admin-card`},le={class:`admin-table-wrap`},ue={class:`admin-table admin-table--compact`},de={class:`dashboard__card-footer`},fe={class:`dashboard__checks-card admin-card`},pe={class:`dashboard__deadline-list`},me={class:`dashboard__deadline-count`},he={class:`dashboard__deadline-amount`},ge={class:`dashboard__card-footer`},_e=v(d({__name:`DesktopDashboard`,setup(n){let{checkDeadlines:u,dashboardStats:d,recentOrders:m,salesChartData:_,chartAxisLabels:v,goOrders:y,statCards:b}=K();return(n,x)=>{let S=r(`RouterLink`);return e(),l(`div`,q,[s(`div`,J,[s(`button`,Y,[f(C,{name:`calendar`,size:16}),x[1]||=h(` امروز `,-1)])]),s(`div`,X,[(e(!0),l(g,null,i(c(b),n=>(e(),l(`div`,{key:n.label,class:`admin-stat-card`},[s(`div`,{class:`admin-stat-card__icon`,style:t({background:c(U)[n.tone],color:c(W)[n.tone]})},[f(C,{name:n.icon,size:20},null,8,[`name`])],4),s(`p`,Z,p(n.label),1),s(`p`,Q,p(n.value),1),f(S,{to:n.link,class:`admin-stat-card__link`},{default:o(()=>[...x[2]||=[h(`مشاهده سفارشها`,-1)]]),_:1},8,[`to`])]))),128)),s(`div`,ne,[s(`div`,re,[s(`div`,null,[x[3]||=s(`p`,{class:`admin-stat-card__label`},`فروش امروز`,-1),s(`p`,ie,p(c(E)(c(d).todaySales)),1),s(`span`,ae,` +`+p(c(d).todaySalesGrowth)+`% نسبت به دیروز `,1)]),f(C,{name:`calendar`,size:20,class:`dashboard__sales-icon`})]),x[4]||=s(`svg`,{class:`dashboard__sparkline`,viewBox:`0 0 120 32`,preserveAspectRatio:`none`},[s(`polyline`,{fill:`none`,stroke:`#159660`,"stroke-width":`2`,points:`0,24 20,18 40,22 60,12 80,16 100,8 120,14`})],-1)])]),s(`div`,oe,[s(`div`,se,[f(H,{title:`فروش ماه جاری`,subtitle:c(E)(c(d).monthSales),data:c(_),labels:c(v),unit:`میلیارد`,height:168},null,8,[`subtitle`,`data`,`labels`])]),s(`div`,ce,[x[7]||=s(`div`,{class:`dashboard__card-header`},[s(`h2`,{class:`dashboard__card-title`},`سفارشهای اخیر`)],-1),s(`div`,le,[s(`table`,ue,[x[5]||=s(`thead`,null,[s(`tr`,null,[s(`th`,null,`شماره سفارش`),s(`th`,null,`مشتری`),s(`th`,null,`شرکت`),s(`th`,null,`وضعیت`),s(`th`,null,`تاریخ ثبت`)])],-1),s(`tbody`,null,[(e(!0),l(g,null,i(c(m),t=>(e(),l(`tr`,{key:t.id},[s(`td`,null,p(t.orderNumber),1),s(`td`,null,p(t.customerName),1),s(`td`,null,p(t.companyName),1),s(`td`,null,[f(k,{status:t.status},null,8,[`status`])]),s(`td`,null,p(c(D)(t.createdAt)),1)]))),128))])])]),s(`div`,de,[s(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:x[0]||=(...e)=>c(y)&&c(y)(...e)},[x[6]||=h(` مشاهده همه سفارشها `,-1),f(C,{name:`chevron-left`,size:16})])])]),s(`div`,fe,[x[9]||=s(`div`,{class:`dashboard__card-header`},[s(`h2`,{class:`dashboard__card-title`},`سررسید چکها`)],-1),s(`ul`,pe,[(e(!0),l(g,null,i(c(u),t=>(e(),l(`li`,{key:t.id,class:`dashboard__deadline-item`},[s(`span`,{class:a([`admin-badge`,{"admin-badge--danger":t.tone===`danger`,"admin-badge--warning":t.tone===`warning`,"admin-badge--neutral":t.tone===`neutral`}])},p(t.label),3),s(`span`,me,p(t.count)+` فقره`,1),s(`span`,he,p(c(E)(t.amount)),1)]))),128))]),s(`div`,ge,[f(S,{to:`/checks`,class:`admin-btn admin-btn--outline admin-btn--sm`},{default:o(()=>[x[8]||=h(` مشاهده همه `,-1),f(C,{name:`chevron-left`,size:16})]),_:1})])])])])}}}),[[`__scopeId`,`data-v-bf2ebdae`]]),ve={class:`compact-dashboard page-shell`},ye={class:`flex justify-end mb-3`},be={type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`},xe={class:`compact-stats-grid`},Se={class:`admin-stat-card__label`},Ce={class:`admin-stat-card__value`},we={class:`admin-stat-card col-span-full`},$={class:`admin-stat-card__value`},Te={class:`text-xs font-semibold text-success`},Ee={class:`compact-section-grid`},De={class:`compact-section-card admin-panel`},Oe={class:`compact-section-card admin-panel`},ke={class:`admin-card-list`},Ae={class:`admin-card-item__header`},je={class:`admin-card-item__title`},Me={class:`admin-card-item__meta`},Ne={class:`compact-section-card admin-panel`},Pe={class:`m-0 p-0 list-none flex flex-col gap-2.5`},Fe={class:`mr-auto text-xs`},Ie=d({__name:`CompactDashboard`,setup(n){let{checkDeadlines:u,dashboardStats:d,recentOrders:_,salesChartData:v,chartAxisLabels:y,goOrders:b,statCards:x}=K();return(n,S)=>{let w=r(`RouterLink`);return e(),l(`div`,ve,[s(`div`,ye,[s(`button`,be,[f(C,{name:`calendar`,size:16}),S[1]||=h(` امروز `,-1)])]),s(`div`,xe,[(e(!0),l(g,null,i(c(x),n=>(e(),l(`div`,{key:n.label,class:`admin-stat-card`},[s(`div`,{class:`admin-stat-card__icon`,style:t({background:c(U)[n.tone],color:c(W)[n.tone]})},[f(C,{name:n.icon,size:20},null,8,[`name`])],4),s(`p`,Se,p(n.label),1),s(`p`,Ce,p(n.value),1),f(w,{to:n.link,class:`admin-stat-card__link`},{default:o(()=>[...S[2]||=[h(`مشاهده`,-1)]]),_:1},8,[`to`])]))),128)),s(`div`,we,[S[3]||=s(`p`,{class:`admin-stat-card__label`},`فروش امروز`,-1),s(`p`,$,p(c(E)(c(d).todaySales)),1),s(`span`,Te,` +`+p(c(d).todaySalesGrowth)+`% نسبت به دیروز `,1)])]),s(`div`,Ee,[s(`section`,De,[f(H,{title:`فروش ماه جاری`,subtitle:c(E)(c(d).monthSales),data:c(v),labels:c(y),unit:`میلیارد`,height:140},null,8,[`subtitle`,`data`,`labels`])]),s(`section`,Oe,[S[5]||=s(`h2`,{class:`compact-section-card__title`},`سفارشهای اخیر`,-1),s(`div`,ke,[(e(!0),l(g,null,i(c(_),t=>(e(),m(w,{key:t.id,to:`/orders`,class:`admin-card-item block no-underline text-inherit`},{default:o(()=>[s(`div`,Ae,[s(`p`,je,p(t.orderNumber),1),f(k,{status:t.status},null,8,[`status`])]),s(`div`,Me,[s(`span`,null,p(t.customerName),1),s(`span`,null,p(c(D)(t.createdAt)),1)])]),_:2},1024))),128))]),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm inline-flex mt-3`,onClick:S[0]||=(...e)=>c(b)&&c(b)(...e)},[S[4]||=h(` مشاهده همه سفارشها `,-1),f(C,{name:`chevron-left`,size:16})])]),s(`section`,Ne,[S[7]||=s(`h2`,{class:`compact-section-card__title`},`سررسید چکها`,-1),s(`ul`,Pe,[(e(!0),l(g,null,i(c(u),t=>(e(),l(`li`,{key:t.id,class:`flex flex-wrap items-center gap-2 text-sm`},[s(`span`,{class:a([`admin-badge`,{"admin-badge--danger":t.tone===`danger`,"admin-badge--warning":t.tone===`warning`,"admin-badge--neutral":t.tone===`neutral`}])},p(t.label),3),s(`span`,null,p(t.count)+` فقره`,1),s(`strong`,Fe,p(c(E)(t.amount)),1)]))),128))]),f(w,{to:`/checks`,class:`admin-btn admin-btn--outline admin-btn--sm inline-flex mt-3 no-underline`},{default:o(()=>[S[6]||=h(` مشاهده همه `,-1),f(C,{name:`chevron-left`,size:16})]),_:1})])])])}}}),Le=d({__name:`DashboardView`,setup(t){return(t,n)=>(e(),l(g,null,[f(_e,{class:`desktop-only`}),f(Ie,{class:`compact-only`})],64))}});export{Le as default}; |