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