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