Files
nademitex_admin/dist/assets/CustomersView-DPDC8LXM.js
T
2026-09-30 09:53:30 +03:30

1 line
16 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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`&&lt()}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};