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