1 line
11 KiB
JavaScript
1 line
11 KiB
JavaScript
import{$ as e,B as t,K as n,N as r,P as ee,Q as i,R as te,St as a,W as o,X as s,Y as c,Z as l,_t as ne,a as re,ct as u,g as d,ht as f,i as ie,mt as p,nt as m,ot as ae,q as h,rt as g,tt as _,u as oe,ut as v,v as se,vt as y,yt as b,z as ce}from"./index-BHqDDh7X.js";import{t as le}from"./AdminPageSkeleton-E50Kwv4j.js";import{t as ue}from"./BaseSwitch-DYYNQNXf.js";import{t as de}from"./BaseEmptyState-vNIhbGdV.js";import{t as x}from"./AdminSelect-BjB6PHdr.js";import{r as S}from"./adminLabels-Cz9ccm1Z.js";import{t as C}from"./ActiveSwitchCell-BzzYl8MV.js";var fe={class:`customers-page`},pe={class:`customers-page__search admin-card`},me={key:2,class:`customers-page__table admin-card desktop-only`},he={class:`admin-table-wrap`},ge={class:`admin-table`},_e={class:`numeric`},ve={class:`numeric`},ye={class:`status`},be={class:`actions`},xe=[`onClick`],Se={key:3,class:`compact-only admin-card-list`},Ce={class:`admin-card-item__header`},w={class:`admin-card-item__title`},T={class:`admin-card-item__header-actions`},E=[`onClick`],D={class:`admin-card-item__meta`},O={key:0,class:`admin-form__error`,role:`alert`},k={class:`admin-form__field`},A={class:`admin-form__row`},we={class:`admin-form__field`},Te={class:`admin-form__field`},Ee={class:`admin-form__row`},De={class:`admin-form__field`},Oe={class:`admin-form__field`},ke={class:`admin-form__row`},Ae={class:`admin-form__field`},je={class:`admin-form__field`},Me={class:`admin-form__row`},Ne={class:`admin-form__field`},Pe={key:0,class:`admin-form__field`},Fe={key:1,class:`admin-form__field`},Ie={class:`customers-page__brands`},Le=[`checked`,`onChange`],Re={class:`admin-form__field`},ze=[`disabled`],Be={key:0,class:`admin-btn__spinner`,"aria-hidden":`true`},j=t(g({__name:`CustomersView`,setup(t){let g=y([]),j=y([]),M=y([]),N=y([]),P=y(``),F=y(!0),I=y(null),L=y(null),R=y(``),z=y(!1),B=ce();function V(e){if(e==null)return`-`;if(typeof e==`number`)return Number.isFinite(e)?String(e):`-`;let t=e.trim();return!t||t===`—`?`-`:t}function H(e){return e==null||!Number.isFinite(e)?`-`:re(e)}let Ve=[{value:`wholesale`,label:`عمدهفروش`},{value:`retail`,label:`خردهفروش`}],He=[{value:`customer`,label:`مشتری`},{value:`agent`,label:`واسطه`}],Ue=c(()=>[{value:``,label:`بدون سطح`},...j.value.map(e=>({value:e.id,label:e.label}))]),We=c(()=>[{value:``,label:`بدون واسطه`},...M.value.filter(e=>e.id!==L.value).map(e=>({value:e.id,label:e.name+(e.agentCode?` (${e.agentCode})`:``)}))]),U=()=>({name:``,phone:``,nationalId:``,customerType:`wholesale`,companyName:``,isActive:!0,levelDefId:``,assignedAgentId:``,brandIds:[],appRole:`customer`,agentCode:``}),W=ne(U()),Ge=c(()=>I.value!==null),G=c(()=>I.value===`edit`?`ویرایش مشتری`:`افزودن مشتری`),K=c(()=>W.name.trim()&&W.phone.trim()&&W.nationalId.trim()),q=c(()=>{let e=P.value.trim();return e?g.value.filter(t=>t.name.includes(e)||t.phone.includes(e)||t.nationalId.includes(e)||t.companyName.includes(e)):g.value});function Ke(e,t){t?W.brandIds.includes(e)||W.brandIds.push(e):W.brandIds=W.brandIds.filter(t=>t!==e)}async function qe(){F.value=!0;try{g.value=await d.list()}catch(e){B.error(e instanceof r?e.message:`بارگذاری مشتریان انجام نشد.`)}finally{F.value=!1}}async function J(){try{let[e,t,n]=await Promise.all([se.list(),d.list(void 0,`agent`),oe.list()]);j.value=e,M.value=t,N.value=n}catch(e){B.error(e instanceof r?e.message:`بارگذاری اطلاعات کمکی انجام نشد.`)}}ae(()=>{qe(),J()});function Y(){I.value=`add`,L.value=null,Object.assign(W,U()),R.value=``}function X(e){I.value=`edit`,L.value=e.id,W.name=e.name,W.phone=e.phone,W.nationalId=e.nationalId,W.customerType=e.customerType,W.companyName=e.companyName,W.isActive=e.isActive,W.levelDefId=e.levelDefId??``,W.assignedAgentId=e.assignedAgentId??``,W.brandIds=[...e.brandIds??[]],W.appRole=e.appRole===`agent`?`agent`:`customer`,W.agentCode=e.agentCode??``,R.value=``}function Z(){I.value=null,L.value=null,R.value=``}async function Q(){if(!K.value){R.value=`نام، تلفن و شناسه ملی الزامی هستند.`;return}z.value=!0;let e={name:W.name.trim(),phone:W.phone.trim(),nationalId:W.nationalId.trim(),customerType:W.customerType,isActive:W.isActive,levelDefId:W.levelDefId||null,assignedAgentId:W.assignedAgentId||null,brandIds:[...W.brandIds],appRole:W.appRole,agentCode:W.appRole===`agent`&&W.agentCode.trim()||null};try{if(I.value===`edit`&&L.value){let t=await d.update(L.value,e),n=g.value.findIndex(e=>e.id===L.value);n!==-1&&(g.value[n]={...g.value[n],...t})}else{let t=await d.create(e);g.value.unshift(t)}B.success(I.value===`edit`?`اطلاعات مشتری بهروزرسانی شد.`:`مشتری جدید ثبت شد.`),Z(),e.appRole===`agent`&&J()}catch(e){B.error(e instanceof r?e.message:`ذخیره مشتری انجام نشد.`)}finally{z.value=!1}}async function $(e,t){await d.setActive(e,t)}function Je(){P.value=``}return(t,r)=>(u(),e(`div`,fe,[s(`div`,{class:`admin-page-header`},[r[11]||=s(`div`,null,[s(`h1`,{class:`admin-page-header__title`},`مشتریان`)],-1),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:Y},` افزودن مشتری `)]),s(`div`,pe,[m(ee,{name:`search`,size:18}),f(s(`input`,{"onUpdate:modelValue":r[0]||=e=>P.value=e,type:`search`,class:`customers-page__search-input`,placeholder:`جستجو در نام، تلفن، شناسه ملی...`},null,512),[[o,P.value]])]),F.value?(u(),l(le,{key:0,variant:`table`})):q.value.length?(u(),e(`div`,me,[s(`div`,he,[s(`table`,ge,[r[12]||=s(`thead`,null,[s(`tr`,null,[s(`th`,null,`نام مشتری`),s(`th`,null,`تلفن`),s(`th`,null,`شناسه ملی`),s(`th`,null,`نوع`),s(`th`,null,`سطح`),s(`th`,null,`واسطه`),s(`th`,null,`شرکت`),s(`th`,{class:`numeric`},`تعداد سفارش`),s(`th`,{class:`numeric`},`مجموع متراژ`),s(`th`,{class:`status`},`وضعیت`),s(`th`,null,`تاریخ ثبت`),s(`th`,{class:`actions`},`عملیات`)])],-1),s(`tbody`,null,[(u(!0),e(h,null,v(q.value,t=>(u(),e(`tr`,{key:t.id},[s(`td`,null,a(V(t.name)),1),s(`td`,null,a(V(t.phone)),1),s(`td`,null,a(V(t.nationalId)),1),s(`td`,null,a(V(b(S)[t.customerType])),1),s(`td`,null,a(V(t.levelLabel)),1),s(`td`,null,a(V(t.assignedAgentName)),1),s(`td`,null,a(V(t.companyName)),1),s(`td`,_e,a(V(t.orderCount)),1),s(`td`,ve,a(H(t.totalMeterage)),1),s(`td`,ye,[m(C,{id:t.id,modelValue:t.isActive,"onUpdate:modelValue":e=>t.isActive=e,"entity-name":t.name,"entity-type":`مشتری`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),s(`td`,null,a(V(b(ie)(t.registeredAt))),1),s(`td`,be,[s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>X(t)},` ویرایش `,8,xe)])]))),128))])])])])):(u(),l(de,{key:1,class:`admin-card`,icon:`customers`,title:P.value.trim()?`نتیجهای یافت نشد`:`مشتریان ثبت شده`,description:P.value.trim()?`عبارت جستجو را تغییر دهید یا فیلترها را پاک کنید.`:`برای شروع، اولین مشتری را ثبت کنید.`},{default:p(()=>[P.value.trim()?(u(),e(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:Je},` پاک کردن جستجو `)):(u(),e(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:Y},` افزودن مشتری `))]),_:1},8,[`title`,`description`])),!F.value&&q.value.length?(u(),e(`div`,Se,[(u(!0),e(h,null,v(q.value,t=>(u(),e(`article`,{key:t.id,class:`admin-card-item`},[s(`div`,Ce,[s(`p`,w,a(V(t.name)),1),s(`div`,T,[m(C,{id:t.id,modelValue:t.isActive,"onUpdate:modelValue":e=>t.isActive=e,"entity-name":t.name,"entity-type":`مشتری`,persist:$},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`]),s(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:e=>X(t)},` ویرایش `,8,E)])]),s(`div`,D,[s(`span`,null,a(V(t.phone)),1),s(`span`,null,a(V(b(S)[t.customerType])),1),s(`span`,null,a(V(t.levelLabel)),1),s(`span`,null,a(V(t.assignedAgentName)),1),s(`span`,null,a(V(t.companyName)),1),s(`span`,null,a(V(t.orderCount))+` سفارش · `+a(H(t.totalMeterage)),1)])]))),128))])):i(``,!0),m(te,{open:Ge.value,title:G.value,size:`lg`,onClose:Z},{footer:p(()=>[s(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:Z},`انصراف`),s(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!K.value||z.value,onClick:Q},[z.value?(u(),e(`span`,Be)):i(``,!0),_(` `+a(I.value===`edit`?`ذخیره تغییرات`:`ثبت مشتری`),1)],8,ze)]),default:p(()=>[s(`form`,{class:`admin-form`,onSubmit:n(Q,[`prevent`])},[R.value?(u(),e(`p`,O,a(R.value),1)):i(``,!0),s(`div`,k,[r[13]||=s(`label`,{for:`customer-name`},[_(`نام مشتری `),s(`span`,{class:`admin-form__required`},`*`)],-1),f(s(`input`,{id:`customer-name`,"onUpdate:modelValue":r[1]||=e=>W.name=e,type:`text`,class:`admin-input`},null,512),[[o,W.name]])]),s(`div`,A,[s(`div`,we,[r[14]||=s(`label`,{for:`customer-phone`},[_(`تلفن `),s(`span`,{class:`admin-form__required`},`*`)],-1),f(s(`input`,{id:`customer-phone`,"onUpdate:modelValue":r[2]||=e=>W.phone=e,type:`tel`,class:`admin-input`,inputmode:`tel`,dir:`ltr`},null,512),[[o,W.phone]])]),s(`div`,Te,[r[15]||=s(`label`,{for:`customer-national-id`},[_(`شناسه ملی `),s(`span`,{class:`admin-form__required`},`*`)],-1),f(s(`input`,{id:`customer-national-id`,"onUpdate:modelValue":r[3]||=e=>W.nationalId=e,type:`text`,class:`admin-input`,inputmode:`numeric`,dir:`ltr`},null,512),[[o,W.nationalId]])])]),s(`div`,Ee,[s(`div`,De,[r[16]||=s(`label`,null,`نوع مشتری`,-1),m(x,{modelValue:W.customerType,"onUpdate:modelValue":r[4]||=e=>W.customerType=e,block:``,"aria-label":`نوع مشتری`,options:Ve},null,8,[`modelValue`])]),s(`div`,Oe,[r[17]||=s(`label`,{for:`customer-company`},`شرکت مرتبط`,-1),f(s(`input`,{id:`customer-company`,"onUpdate:modelValue":r[5]||=e=>W.companyName=e,type:`text`,class:`admin-input`},null,512),[[o,W.companyName]])])]),s(`div`,ke,[s(`div`,Ae,[r[18]||=s(`label`,null,`سطح`,-1),m(x,{modelValue:W.levelDefId,"onUpdate:modelValue":r[6]||=e=>W.levelDefId=e,block:``,"aria-label":`سطح مشتری`,options:Ue.value},null,8,[`modelValue`,`options`])]),s(`div`,je,[r[19]||=s(`label`,null,`واسطه`,-1),m(x,{modelValue:W.assignedAgentId,"onUpdate:modelValue":r[7]||=e=>W.assignedAgentId=e,block:``,"aria-label":`واسطه اختصاصیافته`,options:We.value},null,8,[`modelValue`,`options`])])]),s(`div`,Me,[s(`div`,Ne,[r[20]||=s(`label`,null,`نقش در اپ`,-1),m(x,{modelValue:W.appRole,"onUpdate:modelValue":r[8]||=e=>W.appRole=e,block:``,"aria-label":`نقش در اپ`,options:He},null,8,[`modelValue`])]),W.appRole===`agent`?(u(),e(`div`,Pe,[r[21]||=s(`label`,{for:`customer-agent-code`},`کد واسطه`,-1),f(s(`input`,{id:`customer-agent-code`,"onUpdate:modelValue":r[9]||=e=>W.agentCode=e,type:`text`,class:`admin-input`,dir:`ltr`},null,512),[[o,W.agentCode]])])):i(``,!0)]),N.value.length?(u(),e(`div`,Fe,[r[22]||=s(`label`,null,`برندها`,-1),s(`div`,Ie,[(u(!0),e(h,null,v(N.value,t=>(u(),e(`label`,{key:t.id,class:`customers-page__brand`},[s(`input`,{type:`checkbox`,checked:W.brandIds.includes(t.id),onChange:e=>Ke(t.id,e.target.checked)},null,40,Le),s(`span`,null,a(t.name),1)]))),128))])])):i(``,!0),s(`div`,Re,[m(ue,{modelValue:W.isActive,"onUpdate:modelValue":r[10]||=e=>W.isActive=e,label:`وضعیت`},null,8,[`modelValue`])])],32)]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-089d9237`]]);export{j as default}; |