Files
nademitex_user/dist/assets/CustomersView-CNLgp8Je.js
T
mohmdsdgandCopilot adb6ca47cd fix(auth): secure sessions and app routing
Validate sessions against the API, honor configurable base paths, and route unknown pages to 404. Keep development ports stable so user and admin apps cannot be confused.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-09-24 20:14:11 +03:30

1 line
4.9 KiB
JavaScript

import{D as e,E as t,Et as n,G as r,J as i,Kt as a,M as o,N as s,O as c,P as l,T as u,Xt as d,Yt as f,Z as p,at as m,b as h,g as ee,h as g,st as _,t as v,vt as y,w as b}from"./_plugin-vue_export-helper-Bo3WtfwJ.js";import{o as x}from"./format-C72AoJ2H.js";import{E as te,o as ne,w as S}from"./index-BAQfYU-Q.js";import{t as re}from"./IconFilter-C0e5CP4I.js";import{t as ie}from"./PageHeader-DTO8lja2.js";import{t as ae}from"./SearchField-BMLbKLPW.js";import{t as C}from"./PageSkeleton-DHtB6RUa.js";import{t as w}from"./crm-CooNUbmr.js";import{t as T}from"./CustomerCreateOverlay-BlatCdeJ.js";var E={class:`page customers-page`},D={class:`desktop-page__head desktop-only customers-desk-head`},O={class:`page__scroll page__scroll--with-nav customers-scroll`},k={class:`toolbar`},A={class:`summary-card`},j={class:`summary-card__icon`,"aria-hidden":`true`},M={class:`summary-card__cols`},N={class:`tabs`,role:`tablist`},P=[`aria-selected`,`onClick`],F={class:`tab__text`},I={key:1},L=[`onClick`],R={class:`customer-card__body`},oe={class:`customer-card__top`},z=v(l({__name:`CustomersView`,setup(l){let v=g(),z=ee(),B=w(),V=y(String(v.query.q??``)),H=b(()=>String(v.query.status??`all`)),U=y([]),W=y(!0),G=y(null),K=b(()=>U.value),q=b(()=>v.query.create===`1`),se=b(()=>U.value.filter(e=>e.status===`active`).length),ce=b(()=>U.value.reduce((e,t)=>e+t.totalPurchaseToman,0)),le=[{id:`all`,label:`همه`},{id:`active`,label:`فعال`},{id:`inactive`,label:`غیرفعال`},{id:`new`,label:`جدید`}];async function J(){W.value=!0,G.value=null;try{U.value=await B.loadCustomers({q:V.value||void 0,status:H.value===`all`?void 0:H.value})}catch(e){G.value=e instanceof Error?e.message:`بارگذاری مشتریان ناموفق بود.`,U.value=[]}finally{W.value=!1}}r(J),m([H,V],J);function Y(e){z.replace({path:`/customers`,query:{...e===`all`?{}:{status:e},...V.value?{q:V.value}:{}}})}function X(e){V.value=e,z.replace({path:`/customers`,query:{...H.value===`all`?{}:{status:H.value},...e?{q:e}:{}}})}function ue(e){return e===`active`?`فعال`:e===`inactive`?`غیرفعال`:`جدید`}function Z(e={}){return{...H.value===`all`?{}:{status:H.value},...V.value?{q:V.value}:{},...e}}function Q(){z.push({path:`/customers`,query:{...Z(),create:`1`}})}function $(){z.replace({path:`/customers`,query:Z()})}async function de(e){if(e){await z.replace({path:`/customer`,query:{id:e}});return}$(),await J()}function fe(){let e=[`all`,`active`,`inactive`,`new`],t=e.indexOf(H.value);Y(e[(t<0?0:t+1)%e.length]??`all`)}return(r,l)=>(i(),c(`div`,E,[s(ie,{class:`mobile-only`,title:`مشتریان من`,"show-back":``,centered:``,onBack:l[0]||=e=>n(z).back()},{trailing:_(()=>[u(`button`,{type:`button`,class:`nav-add-btn`,"aria-label":`ثبت مشتری`,onClick:Q},[s(S,{size:22})])]),_:1}),u(`header`,D,[l[2]||=u(`div`,null,[u(`h1`,{class:`desktop-page__title`},`مشتریان من`),u(`p`,{class:`desktop-page__subtitle`},`مدیریت مشتریان و پیگیری خریدها`)],-1),u(`button`,{type:`button`,class:`desk-add-btn`,onClick:Q},[s(S,{size:18}),l[1]||=o(` ثبت مشتری `,-1)])]),u(`div`,O,[u(`div`,k,[s(ae,{"model-value":V.value,placeholder:`جستجو بر اساس نام یا موبایل...`,"onUpdate:modelValue":X},null,8,[`model-value`]),u(`button`,{type:`button`,class:`filter-btn`,"aria-label":`فیلتر وضعیت`,onClick:fe},[s(re,{size:18})])]),u(`section`,A,[u(`div`,j,[s(te,{size:22,color:`#fff`})]),u(`div`,M,[u(`div`,null,[l[3]||=u(`span`,null,`تعداد مشتری فعال`,-1),u(`strong`,null,d(n(x)(se.value)),1)]),l[6]||=u(`span`,{class:`summary-card__divider`,"aria-hidden":`true`},null,-1),u(`div`,null,[l[4]||=u(`span`,null,`مجموع خرید (ریال)`,-1),u(`strong`,null,d(n(x)(ce.value)),1),l[5]||=u(`em`,null,`تومان`,-1)])])]),u(`div`,N,[(i(),c(h,null,p(le,e=>u(`button`,{key:e.id,type:`button`,role:`tab`,class:a([`tab`,{"tab--active":H.value===e.id}]),"aria-selected":H.value===e.id,onClick:t=>Y(e.id)},[u(`span`,F,d(e.label),1)],10,P)),64))]),W.value?(i(),t(C,{key:0,variant:`list`})):G.value?(i(),c(`p`,I,d(G.value),1)):e(``,!0),(i(!0),c(h,null,p(K.value,e=>(i(),c(`button`,{key:e.id,type:`button`,class:`customer-card`,onClick:t=>n(z).push({path:`/customer`,query:{id:e.id}})},[u(`div`,{class:`customer-card__avatar`,style:f({background:e.avatarColor})},d(e.avatarLetter),5),u(`div`,R,[u(`div`,oe,[u(`strong`,null,d(e.name),1)]),u(`p`,null,d(e.phone),1),u(`p`,null,`مجموع خرید: `+d(n(x)(e.totalPurchaseToman))+` تومان`,1)]),u(`span`,{class:a([`status`,{"status--ok":e.status===`active`,"status--off":e.status===`inactive`,"status--new":e.status===`new`}])},d(ue(e.status)),3),s(ne,{size:18,class:`chevron`})],8,L))),128)),l[7]||=u(`section`,{class:`promo`},[u(`div`,null,[u(`strong`,null,`افزایش مشتریان = افزایش سطح شما`),u(`p`,null,`با جذب مشتریان بیشتر به سطح VIP برسید`)])],-1)]),s(T,{open:q.value,onClose:$,onSuccess:de},null,8,[`open`])]))}}),[[`__scopeId`,`data-v-a6283622`]]);export{z as default};