Files
nademitex_user/dist/assets/CustomerDetailView-Bm2wPYGM.js
T
2026-09-29 22:01:22 +03:30

1 line
17 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{At as e,D as t,F as n,G as r,K as i,M as a,Nt as o,Pt as s,U as c,_ as l,c as u,d,f,g as p,i as m,k as ee,l as h,m as g,nt as _,o as v,t as y,u as b,ut as x,v as S}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{l as C,n as w,s as T,t as E,u as D}from"./BasicIcon-ba1FsUKx.js";import{o as O}from"./format-C72AoJ2H.js";import{A as k,E as A,k as j,l as M,s as N}from"./index-BSpFi5xB.js";import{r as te,t as P}from"./constants-DXXK14Zz.js";import{t as ne}from"./IconPhone-Jt4M7S8Q.js";import{t as re}from"./IconClipboardEmpty-D1_4Fy0M.js";import{t as F}from"./PageHeader-DpR4Zxvt.js";import{t as I}from"./PageSkeleton-DYdjm4l9.js";import{t as L}from"./crm-Bj4T2PId.js";import{t as R}from"./PersianDateInput-Dh05So9z.js";import{t as ie}from"./IconEditPen-Dwk_zEXe.js";import{t as z}from"./TimeInput-BplLSUlw.js";import{t as ae}from"./CustomerCreateOverlay-B4lkmOh7.js";var oe=S({__name:`IconMail`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(e){return(t,n)=>(a(),b(E,{icon:`vuesax-linear:sms`,size:e.size,"stroke-width":e.strokeWidth,color:e.color},null,8,[`size`,`stroke-width`,`color`]))}}),B={class:`meeting-report-form`},V={key:1,class:`form-error`},H={class:`customer-card`},U={dir:`ltr`},W={class:`type-grid`},G=[`onClick`],K={class:`two-cols two-cols--date`},q={class:`field`},J={class:`field`},se={class:`reminder-box`},Y={class:`reminder-box__head`},X=[`aria-pressed`],ce={class:`field`},Z={class:`two-cols two-cols--date`},le={class:`field`},Q=[`disabled`],ue=y(S({__name:`MeetingReportForm`,props:{customerId:{}},emits:[`success`],setup(t,{emit:r}){let u=t,p=r,g=L(),v=_(null),y=_(!0),x=_(!1),S=_(null),C=_(`in_person`),w=_(``),E=_(``),D=_(``),O=_(``),k=_(!0),A=_(``),j=_(``),M=_(``),N=_(``),te=[{id:`in_person`,label:`ملاقات حضوری`,icon:`clipboard`},{id:`call`,label:`تماس تلفنی`,icon:`phone`},{id:`message`,label:`پیام`,icon:`mail`},{id:`note`,label:`یادداشت`,icon:`pen`}];async function P(){if(!u.customerId){y.value=!1,S.value=`مشتری مشخص نشده است.`,v.value=null;return}y.value=!0,S.value=null;try{let e=await g.loadCustomerDetail(u.customerId);v.value=e.customer}catch(e){v.value=null,S.value=e instanceof Error?e.message:`بارگذاری مشتری ناموفق بود.`}finally{y.value=!1}}ee(P),c(()=>u.customerId,P);async function F(){if(!u.customerId||!D.value.trim()||!w.value.trim()){S.value=`موضوع و تاریخ الزامی است.`;return}x.value=!0,S.value=null;try{await g.submitMeeting({customerId:u.customerId,type:C.value,title:D.value.trim(),subject:D.value.trim(),content:O.value.trim()||void 0,description:O.value.trim()||void 0,date:w.value.trim(),time:E.value.trim()||void 0,createReminder:k.value,reminderTitle:k.value?A.value.trim()||D.value.trim():void 0,reminderDate:k.value?j.value.trim()||w.value.trim():void 0,reminderTime:k.value?M.value.trim()||E.value.trim()||`10:00`:void 0,reminderNote:k.value&&N.value.trim()||void 0}),p(`success`)}catch(e){S.value=e instanceof Error?e.message:`ثبت گزارش ناموفق بود.`}finally{x.value=!1}}return(t,r)=>(a(),f(`div`,B,[y.value?(a(),b(I,{key:0,variant:`form`})):S.value?(a(),f(`p`,V,s(S.value),1)):d(``,!0),v.value?(a(),f(m,{key:2},[h(`section`,H,[h(`div`,{class:`avatar`,style:o({background:v.value.avatarColor})},s(v.value.avatarLetter),5),h(`div`,null,[h(`strong`,null,s(v.value.name),1),h(`p`,null,s(v.value.contactName),1),h(`p`,U,s(v.value.phone),1)])]),h(`section`,null,[r[9]||=h(`h3`,null,`نوع تعامل`,-1),h(`div`,W,[(a(),f(m,null,n(te,t=>h(`button`,{key:t.id,type:`button`,class:e([`type-btn`,{"type-btn--active":C.value===t.id}]),onClick:e=>C.value=t.id},[t.icon===`clipboard`?(a(),b(re,{key:0,size:22})):t.icon===`phone`?(a(),b(ne,{key:1,size:22})):t.icon===`mail`?(a(),b(oe,{key:2,size:22})):(a(),b(ie,{key:3,size:22})),h(`span`,null,s(t.label),1)],10,G)),64))])]),h(`section`,null,[r[10]||=h(`h3`,null,`تاریخ و زمان`,-1),h(`div`,K,[l(R,{modelValue:w.value,"onUpdate:modelValue":r[0]||=e=>w.value=e,label:`تاریخ`,class:`meeting-date`},null,8,[`modelValue`]),l(z,{modelValue:E.value,"onUpdate:modelValue":r[1]||=e=>E.value=e,label:`ساعت`,placeholder:`مثلاً ۱۰:۳۰`,class:`meeting-time`},null,8,[`modelValue`])])]),h(`label`,q,[r[11]||=h(`span`,null,`موضوع گزارش`,-1),i(h(`input`,{"onUpdate:modelValue":r[2]||=e=>D.value=e,type:`text`},null,512),[[T,D.value]])]),h(`label`,J,[r[12]||=h(`span`,null,`محتوای گزارش`,-1),i(h(`textarea`,{"onUpdate:modelValue":r[3]||=e=>O.value=e,rows:`5`,maxlength:`1000`},null,512),[[T,O.value]]),h(`em`,null,s(O.value.length.toLocaleString(`fa-IR`))+`/۱۰۰۰`,1)]),r[17]||=h(`section`,null,[h(`h3`,null,`تصاویر و فایل‌ها`),h(`div`,{class:`files`},[h(`div`,{class:`file-thumb`}),h(`div`,{class:`file-thumb`}),h(`button`,{type:`button`,class:`file-add`,"aria-label":`افزودن فایل`},`+`)])],-1),h(`section`,se,[h(`div`,Y,[r[14]||=h(`h3`,null,`یادآور`,-1),h(`button`,{type:`button`,class:e([`toggle`,{"toggle--on":k.value}]),"aria-pressed":k.value,onClick:r[4]||=e=>k.value=!k.value},[...r[13]||=[h(`span`,null,null,-1)]],10,X)]),k.value?(a(),f(m,{key:0},[h(`label`,ce,[r[15]||=h(`span`,null,`عنوان یادآور`,-1),i(h(`input`,{"onUpdate:modelValue":r[5]||=e=>A.value=e,type:`text`},null,512),[[T,A.value]])]),h(`div`,Z,[l(R,{modelValue:j.value,"onUpdate:modelValue":r[6]||=e=>j.value=e,label:`تاریخ یادآور`,class:`meeting-date`},null,8,[`modelValue`]),l(z,{modelValue:M.value,"onUpdate:modelValue":r[7]||=e=>M.value=e,label:`ساعت یادآور`,placeholder:`مثلاً ۱۰:۳۰`,class:`meeting-time`},null,8,[`modelValue`])]),h(`label`,le,[r[16]||=h(`span`,null,`یادداشت یادآور (اختیاری)`,-1),i(h(`input`,{"onUpdate:modelValue":r[8]||=e=>N.value=e,type:`text`},null,512),[[T,N.value]])])],64)):d(``,!0)]),h(`button`,{type:`button`,class:`submit`,disabled:x.value,onClick:F},s(x.value?`در حال ثبت...`:`ثبت گزارش و یادآور`),9,Q)],64)):d(``,!0)]))}}),[[`__scopeId`,`data-v-5d6dd8b7`]]),de={class:`meeting-report-sheet`},fe=y(S({__name:`MeetingReportOverlay`,props:{open:{type:Boolean},customerId:{}},emits:[`close`,`success`],setup(e,{emit:n}){let i=e,o=n;function s(){o(`close`)}function u(){o(`success`)}function p(e){e.key===`Escape`&&i.open&&s()}return c(()=>i.open,e=>{document.body.style.overflow=e?`hidden`:``,e?window.addEventListener(`keydown`,p):window.removeEventListener(`keydown`,p)},{immediate:!0}),t(()=>{document.body.style.overflow=``,window.removeEventListener(`keydown`,p)}),(t,n)=>(a(),b(v,{to:`body`},[l(w,{name:`meeting-report-sheet`},{default:r(()=>[e.open?(a(),f(`div`,{key:0,class:`meeting-report-overlay`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`meeting-report-title`,onClick:D(s,[`self`])},[h(`div`,de,[n[1]||=h(`div`,{class:`meeting-report-sheet__handle`,"aria-hidden":`true`},null,-1),h(`header`,{class:`meeting-report-sheet__head`},[n[0]||=h(`h2`,{id:`meeting-report-title`},`ثبت گزارش ملاقات`,-1),h(`button`,{type:`button`,class:`meeting-report-sheet__close`,"aria-label":`بستن`,onClick:s},` × `)]),e.customerId?(a(),b(ue,{key:e.customerId,"customer-id":e.customerId,onSuccess:u},null,8,[`customer-id`])):d(``,!0)])])):d(``,!0)]),_:1})]))}}),[[`__scopeId`,`data-v-be25c066`]]),pe={key:0,class:`page customer-page`},me={class:`desktop-page__head desktop-only customer-desk-head`},he={class:`desktop-page__title`},ge={class:`desktop-page__subtitle`,dir:`ltr`},_e={class:`page__scroll page__scroll--with-nav customer-scroll`},ve={key:0,class:`profile-card`},ye={class:`profile-card__info`},be={class:`profile-card__name-row`},xe={class:`profile-card__phone`,dir:`ltr`},Se={key:1,class:`profile-banner`},Ce={class:`profile-banner__top`},we={dir:`ltr`},Te={class:`profile-banner__stats`},Ee={class:`tabs`,role:`tablist`},De=[`aria-selected`,`onClick`],Oe={class:`tab__text`},ke={class:`purchase-card`},Ae={class:`purchase-stats`},je={class:`purchase-stats__item`},Me={class:`purchase-stats__value`},Ne={class:`purchase-stats__item`},Pe={class:`purchase-stats__value`},Fe={class:`purchase-stats__item`},Ie={class:`purchase-stats__value`},Le={class:`panel-card`},Re={class:`agent-row__avatar`},ze={class:`agent-row__info`},Be={class:`orders-block`},Ve={class:`orders-block__head`},He=[`onClick`,`onKeydown`],Ue={class:`order-row__title`},We={class:`order-row__amount`},Ge={key:0,class:`empty-inline`},Ke={key:3,class:`panel-card panel-card--list`},qe=[`onClick`,`onKeydown`],Je={class:`order-row__title`},Ye={class:`order-row__amount`},Xe={key:0,class:`empty-inline`},Ze={key:4,class:`panel-card panel-card--reports`},Qe={class:`meeting-filters`},$e=[`onClick`],et={class:`meeting-row__body`},tt={class:`meeting-row__date`},nt={key:0,class:`empty-inline`},rt={key:0,class:`cta-bar`},it={key:1,class:`page empty`},at={key:2,class:`page empty`},ot=y(S({__name:`CustomerDetailView`,setup(t){let i=j(),v=k(),y=L(),S=M(),w=u(()=>String(i.query.id??``)),T=u(()=>String(i.query.tab??`info`)),E=u(()=>i.query.meetingReport===`1`),D=u(()=>i.query.edit===`1`),R=_(null),z=_([]),B=_([]),V=_(`all`),H=_(!0),U=_(null),W=[{id:`info`,label:`اطلاعات`},{id:`orders`,label:`سفارش‌ها`},{id:`reports`,label:`گزارش‌ها و پیگیری‌ها`}];async function G(){if(!w.value){R.value=null,H.value=!1;return}H.value=!0,U.value=null;try{let e=await y.loadCustomerDetail(w.value);R.value=e.customer,z.value=e.orders,B.value=e.meetings}catch(e){R.value=null,U.value=e instanceof Error?e.message:`مشتری یافت نشد.`}finally{H.value=!1}}ee(G),c(w,G);function K(e){v.replace({path:`/customer`,query:{id:w.value,tab:e}})}function q(){v.push({path:`/customer`,query:{id:w.value,tab:`reports`,meetingReport:`1`}})}function J(){v.replace({path:`/customer`,query:{id:w.value,tab:`reports`}})}async function se(){J(),await G()}function Y(){v.push({path:`/customer`,query:{id:w.value,tab:T.value,edit:`1`}})}function X(){v.replace({path:`/customer`,query:{id:w.value,tab:T.value}})}async function ce(){X(),await G()}let Z=u(()=>{if(!R.value)return null;let e=R.value;if(e.firstName&&e.lastName)return{firstName:e.firstName,lastName:e.lastName,phone:e.phone,businessName:e.businessName??``};let t=e.contactName.trim().split(/\s+/),n=t[0]??``;return{firstName:n,lastName:t.slice(1).join(` `)||n,phone:e.phone,businessName:e.name===e.contactName?``:e.name}});function le(e){return e===`in_person`?`ملاقات حضوری`:e===`call`?`تماس`:e===`message`?`پیام`:`یادداشت`}let Q=u(()=>R.value?.agentName||S.fullName||`واسطه`),ue=u(()=>R.value?.agentCode||S.user?.agentCode||`—`),de=u(()=>Q.value.charAt(0)),ot=[{id:`all`,label:`همه`},{id:`in_person`,label:`ملاقات حضوری`},{id:`call`,label:`تماس`},{id:`message`,label:`پیام`},{id:`note`,label:`یادداشت`}],st=u(()=>V.value===`all`?B.value:B.value.filter(e=>e.type===V.value));function ct(e){return e===`in_person`?`meeting-row__icon--green`:e===`call`?`meeting-row__icon--blue`:`meeting-row__icon--purple`}function $(e){e&&v.push({path:`/order`,query:{id:e}})}function lt(e){let t=e.statusLabel;return P[t]||e.statusLabel}function ut(e){let t=te[e.statusLabel];return t===`success`?`success`:t===`warning`||t===`danger`?`warning`:e.statusTone||`info`}let dt=u(()=>z.value.slice(0,3));function ft(e){return e===`active`?`فعال`:e===`inactive`?`غیرفعال`:`جدید`}function pt(e){return e===`active`?`status-badge--active`:e===`inactive`?`status-badge--inactive`:`status-badge--new`}return(t,i)=>(a(),f(m,null,[R.value?(a(),f(`div`,pe,[l(F,{class:`mobile-only`,title:T.value===`reports`?`پروفایل مشتری`:`جزئیات مشتری`,"show-back":``,centered:``,onBack:i[0]||=e=>x(v).push(`/customers`)},g({_:2},[T.value===`info`?{name:`trailing`,fn:r(()=>[h(`button`,{type:`button`,class:`edit-btn`,onClick:Y},`ویرایش`)]),key:`0`}:void 0]),1032,[`title`]),h(`header`,me,[h(`div`,null,[h(`h1`,he,s(R.value.name),1),h(`p`,ge,s(R.value.phone),1)]),T.value===`info`?(a(),f(`button`,{key:0,type:`button`,class:`edit-btn edit-btn--desk`,onClick:Y},` ویرایش `)):d(``,!0)]),h(`div`,_e,[T.value===`reports`?(a(),f(`section`,Se,[h(`div`,Ce,[h(`div`,{class:`profile-card__avatar profile-card__avatar--lg`,style:o({background:R.value.avatarColor})},s(R.value.avatarLetter),5),h(`div`,null,[h(`h2`,null,s(R.value.name),1),h(`p`,null,s(R.value.contactName),1),h(`p`,we,s(R.value.phone),1)]),i[4]||=h(`span`,{class:`status-badge status-badge--active status-badge--on-dark`},`فعال`,-1)]),h(`div`,Te,[h(`div`,null,[i[5]||=h(`span`,null,`سطح مشتری`,-1),h(`strong`,null,s(R.value.levelLabel),1)]),h(`div`,null,[i[6]||=h(`span`,null,`تاریخ اولین خرید`,-1),h(`strong`,null,s(R.value.firstPurchaseDate),1)]),h(`div`,null,[i[7]||=h(`span`,null,`تعداد سفارش`,-1),h(`strong`,null,s(x(O)(R.value.orderCount))+` سفارش`,1)])])])):(a(),f(`section`,ve,[h(`div`,{class:`profile-card__avatar`,style:o({background:R.value.avatarColor})},s(R.value.avatarLetter),5),h(`div`,ye,[h(`div`,be,[h(`h2`,null,s(R.value.name),1),h(`span`,{class:e([`status-badge`,pt(R.value.status)])},s(ft(R.value.status)),3)]),h(`p`,xe,s(R.value.phone),1)])])),h(`div`,Ee,[(a(),f(m,null,n(W,t=>h(`button`,{key:t.id,type:`button`,role:`tab`,class:e([`tab`,{"tab--active":T.value===t.id}]),"aria-selected":T.value===t.id,onClick:e=>K(t.id)},[h(`span`,Oe,s(t.label),1)],10,De)),64))]),T.value===`info`?(a(),f(m,{key:2},[h(`section`,ke,[i[15]||=h(`h3`,{class:`section-title`},`اطلاعات خرید`,-1),h(`div`,Ae,[h(`div`,je,[i[8]||=h(`span`,{class:`purchase-stats__label`},`تعداد سفارش`,-1),h(`strong`,Me,s(x(O)(R.value.orderCount)),1)]),i[13]||=h(`span`,{class:`purchase-stats__divider`,"aria-hidden":`true`},null,-1),h(`div`,Ne,[i[9]||=h(`span`,{class:`purchase-stats__label`},`مجموع خرید`,-1),h(`strong`,Pe,s(x(O)(R.value.totalPurchaseToman)),1),i[10]||=h(`em`,{class:`purchase-stats__unit`},`تومان`,-1)]),i[14]||=h(`span`,{class:`purchase-stats__divider`,"aria-hidden":`true`},null,-1),h(`div`,Fe,[i[11]||=h(`span`,{class:`purchase-stats__label`},`میانگین هر سفارش`,-1),h(`strong`,Ie,s(x(O)(R.value.averageOrderToman)),1),i[12]||=h(`em`,{class:`purchase-stats__unit`},`تومان`,-1)])])]),h(`section`,Le,[h(`button`,{type:`button`,class:`agent-row`,onClick:i[1]||=e=>x(v).push(`/profile`)},[h(`div`,Re,s(de.value),1),h(`div`,ze,[h(`strong`,null,s(Q.value),1),h(`p`,null,`کد واسطه: `+s(ue.value),1)]),l(N,{size:18,class:`agent-row__chevron`,"aria-hidden":`true`})]),h(`div`,Be,[h(`div`,Ve,[i[16]||=h(`h3`,{class:`section-title`},`آخرین سفارش‌ها`,-1),h(`button`,{type:`button`,class:`link-btn`,onClick:i[2]||=e=>K(`orders`)},`مشاهده همه`)]),(a(!0),f(m,null,n(dt.value,t=>(a(),f(`article`,{key:t.id,class:`order-row`,role:`button`,tabindex:`0`,onClick:e=>$(t.id),onKeydown:C(e=>$(t.id),[`enter`])},[h(`div`,Ue,[h(`strong`,null,s(t.title),1),l(N,{size:14,class:`order-row__chevron`,"aria-hidden":`true`})]),h(`span`,We,s(x(O)(t.amountToman))+` تومان`,1),h(`span`,{class:e([`status-pill`,`status-pill--${ut(t)}`])},s(lt(t)),3)],40,He))),128)),dt.value.length?d(``,!0):(a(),f(`p`,Ge,`سفارشی ثبت نشده است.`))])])],64)):T.value===`orders`?(a(),f(`section`,Ke,[(a(!0),f(m,null,n(z.value,t=>(a(),f(`article`,{key:t.id,class:`order-row`,role:`button`,tabindex:`0`,onClick:e=>$(t.id),onKeydown:C(e=>$(t.id),[`enter`])},[h(`div`,Je,[h(`strong`,null,s(t.title),1),l(N,{size:14,class:`order-row__chevron`,"aria-hidden":`true`})]),h(`span`,Ye,s(x(O)(t.amountToman))+` تومان`,1),h(`span`,{class:e([`status-pill`,`status-pill--${ut(t)}`])},s(lt(t)),3)],40,qe))),128)),z.value.length?d(``,!0):(a(),f(`p`,Xe,`سفارشی ثبت نشده است.`))])):(a(),f(`section`,Ze,[i[17]||=h(`h3`,{class:`section-title`},`تعاملات و پیگیری‌ها`,-1),h(`button`,{type:`button`,class:`dashed-btn`,onClick:q},` + ثبت گزارش ملاقات جدید `),h(`div`,Qe,[(a(),f(m,null,n(ot,t=>h(`button`,{key:t.id,type:`button`,class:e([`meeting-filter`,{"meeting-filter--active":V.value===t.id}]),onClick:e=>V.value=t.id},s(t.label),11,$e)),64))]),(a(!0),f(m,null,n(st.value,t=>(a(),f(`article`,{key:t.id,class:`meeting-row`},[h(`div`,{class:e([`meeting-row__icon`,ct(t.type)])},[t.type===`in_person`?(a(),b(re,{key:0,size:16})):t.type===`call`?(a(),b(ne,{key:1,size:16})):t.type===`message`?(a(),b(oe,{key:2,size:16})):(a(),b(ie,{key:3,size:16}))],2),h(`div`,et,[h(`strong`,null,s(le(t.type)),1),h(`p`,null,s(t.description||t.title),1)]),h(`span`,tt,s(t.date),1)]))),128)),st.value.length?d(``,!0):(a(),f(`p`,nt,` گزارشی برای این فیلتر ثبت نشده است. `))]))]),T.value===`info`?(a(),f(`footer`,rt,[h(`button`,{type:`button`,class:`cta`,onClick:i[3]||=e=>x(v).push(`/categories`)},[l(A,{size:20,color:`#fff`}),i[18]||=p(` سفارش جدید برای این مشتری `,-1)])])):d(``,!0)])):H.value?(a(),f(`div`,it,[l(I,{variant:`detail`})])):(a(),f(`div`,at,[h(`p`,null,s(U.value||`مشتری یافت نشد.`),1)])),l(fe,{open:E.value,"customer-id":w.value,onClose:J,onSuccess:se},null,8,[`open`,`customer-id`]),l(ae,{open:D.value,"customer-id":w.value,initial:Z.value,onClose:X,onSuccess:ce},null,8,[`open`,`customer-id`,`initial`])],64))}}),[[`__scopeId`,`data-v-20a7b2ca`]]);export{ot as default};