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