1 line
16 KiB
JavaScript
1 line
16 KiB
JavaScript
import{$ as e,At as t,B as n,Dt as r,E as ee,H as i,M as a,U as o,Z as s,c,d as l,g as u,h as d,k as f,l as p,m,r as h,s as g,st as _,t as v,u as y}from"./_plugin-vue_export-helper-QrIvvHC8.js";import{a as b,f as x,m as S,t as C}from"./http-BjLkjdQu.js";import{E as w,H as T,M as E,R as D,S as te,o as O,s as k,y as A}from"./index-BzcByePp.js";import{t as ne}from"./AdminPageSkeleton-oWhHYjl4.js";import{t as re}from"./BaseSwitch-pJwnFBVo.js";import{t as ie}from"./BaseEmptyState-B7aEMvHg.js";import{t as j}from"./AdminSelect-8XDtPu3U.js";import{r as M}from"./adminLabels-Cz9ccm1Z.js";import{t as N}from"./ActiveSwitchCell-Mj6U4GtB.js";var P={class:`suggestions-panel`},F={key:0,class:`suggestions-panel__loading`},I={class:`suggestions-panel__add`},L={class:`field`},R={key:0,class:`suggestions-panel__picked`},z=[`onClick`],B={class:`field`},V=[`disabled`],H={key:0,class:`suggestions-panel__list`},U={class:`muted`,dir:`ltr`},W={key:0,class:`note`},G={class:`suggestions-panel__actions`},K=[`onClick`],q={key:1,class:`suggestions-panel__empty`},ae=v(u({__name:`CustomerSuggestionsPanel`,props:{customerId:{}},setup(i){let s=i,u=b(),p=e(!0),_=e(!1),v=e([]),S=e([]),T=e([]),D=e(``),te=g(()=>S.value.filter(e=>!v.value.some(t=>t.productId===e.id&&t.isActive)).map(e=>({value:e.id,label:`${e.name} (${e.productCode})`})));async function O(){if(s.customerId){p.value=!0;try{let[e,t]=await Promise.all([E.list(s.customerId),w.list()]);v.value=e,S.value=t}catch(e){u.error(e instanceof C?e.message:`بارگذاری پیشنهادها ناموفق بود`)}finally{p.value=!1}}}async function k(){if(T.value.length){_.value=!0;try{for(let e of T.value)await E.create({customerId:s.customerId,productId:e,note:D.value.trim()||void 0});T.value=[],D.value=``,u.success(`پیشنهادها به صفحه خانه مشتری اضافه شد`),await O()}catch(e){u.error(e instanceof C?e.message:`ثبت پیشنهاد ناموفق بود`)}finally{_.value=!1}}}async function A(e){try{await E.setActive(e.id,!e.isActive),await O()}catch(e){u.error(e instanceof C?e.message:`بهروزرسانی ناموفق بود`)}}function ne(e){e&&(T.value.includes(e)||(T.value=[...T.value,e]))}function re(e){T.value=T.value.filter(t=>t!==e)}return n(()=>s.customerId,()=>{O()}),ee(()=>{O()}),(e,n)=>(f(),l(`section`,P,[n[4]||=c(`header`,{class:`suggestions-panel__head`},[c(`div`,null,[c(`h3`,{class:`suggestions-panel__title`},`پیشنهاد اختصاصی در اپ`),c(`p`,{class:`suggestions-panel__hint`},` محصولات انتخابشده در بخش «پیشنهاد اختصاصی ما برای شما» در صفحه خانه مشتری نمایش داده میشوند. `)])],-1),p.value?(f(),l(`div`,F,`در حال بارگذاری...`)):(f(),l(h,{key:1},[c(`div`,I,[c(`label`,L,[n[1]||=m(` افزودن محصول (کد کالیته) `,-1),d(j,{"model-value":``,options:[{value:``,label:`انتخاب محصول...`},...te.value],"onUpdate:modelValue":ne},null,8,[`options`])]),T.value.length?(f(),l(`div`,R,[(f(!0),l(h,null,a(T.value,e=>(f(),l(`span`,{key:e,class:`suggestions-panel__chip`},[m(t(S.value.find(t=>t.id===e)?.productCode||e)+` `,1),c(`button`,{type:`button`,"aria-label":`حذف`,onClick:t=>re(e)},`×`,8,z)]))),128))])):y(``,!0),c(`label`,B,[n[2]||=m(` یادداشت (اختیاری) `,-1),o(c(`textarea`,{"onUpdate:modelValue":n[0]||=e=>D.value=e,class:`admin-input`,rows:`2`,placeholder:`دلیل پیشنهاد برای مشتری`},null,512),[[x,D.value]])]),c(`button`,{type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,disabled:!T.value.length||_.value,onClick:k},` افزودن به صفحه خانه مشتری `,8,V)]),v.value.length?(f(),l(`div`,H,[n[3]||=c(`h4`,{class:`suggestions-panel__sub`},`پیشنهادهای ثبتشده`,-1),c(`ul`,null,[(f(!0),l(h,null,a(v.value,e=>(f(),l(`li`,{key:e.id,class:`suggestions-panel__row`},[c(`div`,null,[c(`strong`,null,t(e.productName),1),c(`span`,U,`(`+t(e.productCode)+`)`,1),e.note?(f(),l(`p`,W,t(e.note),1)):y(``,!0)]),c(`div`,G,[c(`span`,{class:r(e.isActive?`on`:`off`)},t(e.isActive?`فعال`:`غیرفعال`),3),c(`button`,{type:`button`,class:`link`,onClick:t=>A(e)},t(e.isActive?`حذف از خانه`:`فعالسازی`),9,K)])]))),128))])])):(f(),l(`p`,q,`هنوز پیشنهادی برای این مشتری ثبت نشده است.`))],64))]))}}),[[`__scopeId`,`data-v-4182e847`]]),oe={class:`customers-page`},se={class:`admin-page-header`},ce={class:`customers-page__tabs`,role:`tablist`,"aria-label":`نوع کاربر`},le=[`aria-selected`],ue=[`aria-selected`],de={class:`customers-page__search admin-card`},fe={key:2,class:`customers-page__table admin-card desktop-only`},pe={class:`admin-table-wrap`},me={class:`admin-table`},he={key:0},ge={key:1},_e={key:2},ve={key:3},ye={key:4},be={key:0},xe={key:1},Se={key:2},Ce={key:3},we={key:4},Te={class:`numeric`},Ee={class:`numeric`},De={class:`status`},Oe={class:`actions`},ke=[`onClick`],Ae={key:3,class:`compact-only admin-card-list`},je={class:`admin-card-item__header`},Me={class:`admin-card-item__title`},Ne={class:`admin-card-item__header-actions`},Pe=[`onClick`],Fe={class:`admin-card-item__meta`},Ie={key:0},Le={key:1},Re={key:2},ze={key:3},Be={key:4},Ve={key:0,class:`admin-form__error`,role:`alert`},He={class:`admin-form__field`},Ue={class:`admin-form__row`},We={class:`admin-form__field`},Ge={class:`admin-form__field`},Ke={class:`admin-form__row`},qe={class:`admin-form__field`},Je={class:`admin-form__field`},Ye={class:`admin-form__row`},Xe={class:`admin-form__field`},Ze={class:`admin-form__field`},Qe={class:`admin-form__row`},$e={class:`admin-form__field`},et={key:0,class:`admin-form__field`},tt={class:`admin-form__field`},nt=[`disabled`],rt={key:0,class:`admin-btn__spinner`,"aria-hidden":`true`},J=v(u({__name:`CustomersView`,setup(n){let u=e([]),v=e([]),w=e([]),E=e(``),P=e(`customer`),F=e(!0),I=e(null),L=e(null),R=e(``),z=e(!1),B=b();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)?`-`:k(e)}let U=[{value:`wholesale`,label:`عمدهفروش`},{value:`retail`,label:`خردهفروش`}],W=[{value:`customer`,label:`مشتری`},{value:`agent`,label:`واسطه`}],G={customer:`مشتری`,agent:`واسطه`};function K(e){return G[e===`agent`?`agent`:`customer`]}let q=g(()=>[{value:``,label:`بدون سطح`},...v.value.map(e=>({value:e.id,label:e.label}))]),J=g(()=>[{value:``,label:`بدون واسطه`},...w.value.filter(e=>e.id!==L.value).map(e=>({value:e.id,label:e.name+(e.agentCode?` (${e.agentCode})`:``)}))]),Y=()=>({name:``,phone:``,nationalId:``,customerType:`wholesale`,companyName:``,isActive:!0,levelDefId:``,assignedAgentId:``,appRole:`customer`,agentCode:``}),X=s(Y()),it=g(()=>I.value!==null),at=g(()=>I.value===`edit`?`ویرایش مشتری`:`افزودن مشتری`),ot=g(()=>X.name.trim()&&X.phone.trim()&&X.nationalId.trim()),Z=g(()=>{let e=E.value.trim();return e?u.value.filter(t=>t.name.includes(e)||t.phone.includes(e)||t.nationalId.includes(e)||t.companyName.includes(e)):u.value});async function st(){F.value=!0;try{u.value=await A.list(void 0,P.value)}catch(e){B.error(e instanceof C?e.message:P.value===`agent`?`بارگذاری واسطهها انجام نشد.`:`بارگذاری مشتریان انجام نشد.`)}finally{F.value=!1}}function ct(e){P.value!==e&&(P.value=e,E.value=``,st())}async function lt(){try{let[e,t]=await Promise.all([te.list(),A.list(void 0,`agent`)]);v.value=e,w.value=t}catch(e){B.error(e instanceof C?e.message:`بارگذاری اطلاعات کمکی انجام نشد.`)}}ee(()=>{st(),lt()});function ut(){I.value=`add`,L.value=null,Object.assign(X,Y()),X.appRole=P.value,R.value=``}function dt(e){I.value=`edit`,L.value=e.id,X.name=e.name,X.phone=e.phone,X.nationalId=e.nationalId,X.customerType=e.customerType,X.companyName=e.companyName,X.isActive=e.isActive,X.levelDefId=e.levelDefId??``,X.assignedAgentId=e.assignedAgentId??``,X.appRole=e.appRole===`agent`?`agent`:`customer`,X.agentCode=e.agentCode??``,R.value=``}function Q(){I.value=null,L.value=null,R.value=``}async function $(){if(!ot.value){R.value=`نام، تلفن و شناسه ملی الزامی هستند.`;return}z.value=!0;let e={name:X.name.trim(),phone:X.phone.trim(),nationalId:X.nationalId.trim(),customerType:X.customerType,isActive:X.isActive,levelDefId:X.levelDefId||null,assignedAgentId:X.assignedAgentId||null,appRole:X.appRole,agentCode:X.appRole===`agent`&&X.agentCode.trim()||null};try{if(I.value===`edit`&&L.value){let t=await A.update(L.value,e),n=u.value.findIndex(e=>e.id===L.value);n!==-1&&(u.value[n]={...u.value[n],...t})}else{let t=await A.create(e);u.value.unshift(t)}B.success(I.value===`edit`?`اطلاعات مشتری بهروزرسانی شد.`:`مشتری جدید ثبت شد.`),Q(),e.appRole===`agent`&<()}catch(e){B.error(e instanceof C?e.message:`ذخیره مشتری انجام نشد.`)}finally{z.value=!1}}async function ft(e,t){await A.setActive(e,t)}function pt(){E.value=``}return(e,n)=>(f(),l(`div`,oe,[c(`div`,se,[n[13]||=c(`div`,null,[c(`h1`,{class:`admin-page-header__title`},`مشتریان و واسطهها`)],-1),c(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,onClick:ut},t(P.value===`agent`?`افزودن واسطه`:`افزودن مشتری`),1)]),c(`div`,ce,[c(`button`,{type:`button`,role:`tab`,class:r([`customers-page__tab`,{"is-active":P.value===`customer`}]),"aria-selected":P.value===`customer`,onClick:n[0]||=e=>ct(`customer`)},` مشتریان `,10,le),c(`button`,{type:`button`,role:`tab`,class:r([`customers-page__tab`,{"is-active":P.value===`agent`}]),"aria-selected":P.value===`agent`,onClick:n[1]||=e=>ct(`agent`)},` واسطهها `,10,ue)]),c(`div`,de,[d(D,{name:`search`,size:18}),o(c(`input`,{"onUpdate:modelValue":n[2]||=e=>E.value=e,type:`search`,class:`customers-page__search-input`,placeholder:`جستجو در نام، تلفن، شناسه ملی...`},null,512),[[x,E.value]])]),F.value?(f(),p(ne,{key:0,variant:`table`})):Z.value.length?(f(),l(`div`,fe,[c(`div`,pe,[c(`table`,me,[c(`thead`,null,[c(`tr`,null,[c(`th`,null,t(P.value===`agent`?`نام واسطه`:`نام مشتری`),1),n[14]||=c(`th`,null,`تلفن`,-1),n[15]||=c(`th`,null,`نقش`,-1),P.value===`agent`?(f(),l(`th`,he,`کد واسطه`)):y(``,!0),P.value===`customer`?(f(),l(`th`,ge,`نوع`)):y(``,!0),P.value===`customer`?(f(),l(`th`,_e,`سطح`)):y(``,!0),P.value===`customer`?(f(),l(`th`,ve,`واسطه`)):y(``,!0),P.value===`customer`?(f(),l(`th`,ye,`شرکت`)):y(``,!0),n[16]||=c(`th`,{class:`numeric`},`تعداد سفارش`,-1),n[17]||=c(`th`,{class:`numeric`},`مجموع متراژ`,-1),n[18]||=c(`th`,{class:`status`},`وضعیت`,-1),n[19]||=c(`th`,null,`تاریخ ثبت`,-1),n[20]||=c(`th`,{class:`actions`},`عملیات`,-1)])]),c(`tbody`,null,[(f(!0),l(h,null,a(Z.value,e=>(f(),l(`tr`,{key:e.id},[c(`td`,null,t(V(e.name)),1),c(`td`,null,t(V(e.phone)),1),c(`td`,null,t(K(e.appRole)),1),P.value===`agent`?(f(),l(`td`,be,t(V(e.agentCode)),1)):y(``,!0),P.value===`customer`?(f(),l(`td`,xe,t(V(_(M)[e.customerType])),1)):y(``,!0),P.value===`customer`?(f(),l(`td`,Se,t(V(e.levelLabel)),1)):y(``,!0),P.value===`customer`?(f(),l(`td`,Ce,t(V(e.assignedAgentName)),1)):y(``,!0),P.value===`customer`?(f(),l(`td`,we,t(V(e.companyName)),1)):y(``,!0),c(`td`,Te,t(V(e.orderCount)),1),c(`td`,Ee,t(H(e.totalMeterage)),1),c(`td`,De,[d(N,{id:e.id,modelValue:e.isActive,"onUpdate:modelValue":t=>e.isActive=t,"entity-name":e.name,"entity-type":`مشتری`,persist:ft},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`])]),c(`td`,null,t(V(_(O)(e.registeredAt))),1),c(`td`,Oe,[c(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>dt(e)},` ویرایش `,8,ke)])]))),128))])])])])):(f(),p(ie,{key:1,class:`admin-card`,icon:`customers`,title:E.value.trim()?`نتیجهای یافت نشد`:P.value===`agent`?`واسطهای ثبت نشده`:`مشتریان ثبت شده`,description:E.value.trim()?`عبارت جستجو را تغییر دهید یا فیلترها را پاک کنید.`:P.value===`agent`?`برای شروع، اولین واسطه را ثبت کنید.`:`برای شروع، اولین مشتری را ثبت کنید.`},{default:i(()=>[E.value.trim()?(f(),l(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:pt},` پاک کردن جستجو `)):(f(),l(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--primary admin-btn--sm`,onClick:ut},t(P.value===`agent`?`افزودن واسطه`:`افزودن مشتری`),1))]),_:1},8,[`title`,`description`])),!F.value&&Z.value.length?(f(),l(`div`,Ae,[(f(!0),l(h,null,a(Z.value,e=>(f(),l(`article`,{key:e.id,class:`admin-card-item`},[c(`div`,je,[c(`p`,Me,t(V(e.name)),1),c(`div`,Ne,[d(N,{id:e.id,modelValue:e.isActive,"onUpdate:modelValue":t=>e.isActive=t,"entity-name":e.name,"entity-type":`مشتری`,persist:ft},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`entity-name`]),c(`button`,{type:`button`,class:`admin-btn admin-btn--ghost admin-btn--xs`,onClick:t=>dt(e)},` ویرایش `,8,Pe)])]),c(`div`,Fe,[c(`span`,null,t(V(e.phone)),1),P.value===`agent`?(f(),l(`span`,Ie,`کد: `+t(V(e.agentCode)),1)):y(``,!0),P.value===`customer`?(f(),l(`span`,Le,t(V(_(M)[e.customerType])),1)):y(``,!0),P.value===`customer`?(f(),l(`span`,Re,t(V(e.levelLabel)),1)):y(``,!0),P.value===`customer`?(f(),l(`span`,ze,`واسطه: `+t(V(e.assignedAgentName)),1)):y(``,!0),P.value===`customer`?(f(),l(`span`,Be,t(V(e.companyName)),1)):y(``,!0),c(`span`,null,t(V(e.orderCount))+` سفارش · `+t(H(e.totalMeterage)),1)])]))),128))])):y(``,!0),d(T,{open:it.value,title:at.value,size:`lg`,onClose:Q},{footer:i(()=>[c(`button`,{type:`button`,class:`admin-btn admin-btn--outline`,onClick:Q},`انصراف`),c(`button`,{type:`button`,class:`admin-btn admin-btn--primary`,disabled:!ot.value||z.value,onClick:$},[z.value?(f(),l(`span`,rt)):y(``,!0),m(` `+t(I.value===`edit`?`ذخیره تغییرات`:X.appRole===`agent`?`ثبت واسطه`:`ثبت مشتری`),1)],8,nt)]),default:i(()=>[c(`form`,{class:`admin-form`,onSubmit:S($,[`prevent`])},[R.value?(f(),l(`p`,Ve,t(R.value),1)):y(``,!0),c(`div`,He,[n[21]||=c(`label`,{for:`customer-name`},[m(`نام مشتری `),c(`span`,{class:`admin-form__required`},`*`)],-1),o(c(`input`,{id:`customer-name`,"onUpdate:modelValue":n[3]||=e=>X.name=e,type:`text`,class:`admin-input`},null,512),[[x,X.name]])]),c(`div`,Ue,[c(`div`,We,[n[22]||=c(`label`,{for:`customer-phone`},[m(`تلفن `),c(`span`,{class:`admin-form__required`},`*`)],-1),o(c(`input`,{id:`customer-phone`,"onUpdate:modelValue":n[4]||=e=>X.phone=e,type:`tel`,class:`admin-input`,inputmode:`tel`,dir:`ltr`},null,512),[[x,X.phone]])]),c(`div`,Ge,[n[23]||=c(`label`,{for:`customer-national-id`},[m(`شناسه ملی `),c(`span`,{class:`admin-form__required`},`*`)],-1),o(c(`input`,{id:`customer-national-id`,"onUpdate:modelValue":n[5]||=e=>X.nationalId=e,type:`text`,class:`admin-input`,inputmode:`numeric`,dir:`ltr`},null,512),[[x,X.nationalId]])])]),c(`div`,Ke,[c(`div`,qe,[n[24]||=c(`label`,null,`نوع مشتری`,-1),d(j,{modelValue:X.customerType,"onUpdate:modelValue":n[6]||=e=>X.customerType=e,block:``,"aria-label":`نوع مشتری`,options:U},null,8,[`modelValue`])]),c(`div`,Je,[n[25]||=c(`label`,{for:`customer-company`},`شرکت مرتبط`,-1),o(c(`input`,{id:`customer-company`,"onUpdate:modelValue":n[7]||=e=>X.companyName=e,type:`text`,class:`admin-input`},null,512),[[x,X.companyName]])])]),c(`div`,Ye,[c(`div`,Xe,[n[26]||=c(`label`,null,`سطح`,-1),d(j,{modelValue:X.levelDefId,"onUpdate:modelValue":n[8]||=e=>X.levelDefId=e,block:``,"aria-label":`سطح مشتری`,options:q.value},null,8,[`modelValue`,`options`])]),c(`div`,Ze,[n[27]||=c(`label`,null,`واسطه`,-1),d(j,{modelValue:X.assignedAgentId,"onUpdate:modelValue":n[9]||=e=>X.assignedAgentId=e,block:``,"aria-label":`واسطه اختصاصیافته`,options:J.value},null,8,[`modelValue`,`options`])])]),c(`div`,Qe,[c(`div`,$e,[n[28]||=c(`label`,null,`نقش در اپ`,-1),d(j,{modelValue:X.appRole,"onUpdate:modelValue":n[10]||=e=>X.appRole=e,block:``,"aria-label":`نقش در اپ`,options:W},null,8,[`modelValue`])]),X.appRole===`agent`?(f(),l(`div`,et,[n[29]||=c(`label`,{for:`customer-agent-code`},`کد واسطه`,-1),o(c(`input`,{id:`customer-agent-code`,"onUpdate:modelValue":n[11]||=e=>X.agentCode=e,type:`text`,class:`admin-input`,dir:`ltr`},null,512),[[x,X.agentCode]])])):y(``,!0)]),c(`div`,tt,[d(re,{modelValue:X.isActive,"onUpdate:modelValue":n[12]||=e=>X.isActive=e,label:`وضعیت`},null,8,[`modelValue`])]),I.value===`edit`&&L.value&&X.appRole===`customer`?(f(),p(ae,{key:1,"customer-id":L.value},null,8,[`customer-id`])):y(``,!0)],32)]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-2e37be8d`]]);export{J as default}; |