1 line
17 KiB
JavaScript
1 line
17 KiB
JavaScript
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 h,l as g,m as _,nt as v,o as y,t as b,u as x,ut as S,v as C}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{c as w,l as T,n as E,o as D,t as O}from"./BasicIcon-DPmc0iaK.js";import{o as k}from"./format-C72AoJ2H.js";import{t as A}from"./IconCart-D9TX5E-P.js";import{C as j,S as M,c as N,o as P}from"./index-DYwnTikp.js";import{i as F,t as I}from"./constants-ptWoEwwP.js";import{t as ee}from"./IconPhone-BSof4l2r.js";import{t as te}from"./IconClipboardEmpty-DMrB9tzG.js";import{t as ne}from"./PageHeader-C5c2Pzrn.js";import{t as re}from"./PageSkeleton-DYdjm4l9.js";import{t as ie}from"./crm-CgnSby61.js";import{t as L}from"./PersianDateInput-BcTTynHd.js";import{t as R}from"./IconEditPen-D6lQ4xNz.js";import{t as z}from"./TimeInput-D6PzFPdF.js";import{t as ae}from"./CustomerCreateOverlay-BV-An-zG.js";var oe=C({__name:`IconMail`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(e){return(t,n)=>(a(),x(O,{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=b(C({__name:`MeetingReportForm`,props:{customerId:{}},emits:[`success`],setup(t,{emit:r}){let u=t,p=r,_=ie(),y=v(null),b=v(!0),S=v(!1),C=v(null),w=v(`in_person`),T=v(``),E=v(``),O=v(``),k=v(``),A=v(!0),j=v(``),M=v(``),N=v(``),P=v(``),F=[{id:`in_person`,label:`ملاقات حضوری`,icon:`clipboard`},{id:`call`,label:`تماس تلفنی`,icon:`phone`},{id:`message`,label:`پیام`,icon:`mail`},{id:`note`,label:`یادداشت`,icon:`pen`}];async function I(){if(!u.customerId){b.value=!1,C.value=`مشتری مشخص نشده است.`,y.value=null;return}b.value=!0,C.value=null;try{let e=await _.loadCustomerDetail(u.customerId);y.value=e.customer}catch(e){y.value=null,C.value=e instanceof Error?e.message:`بارگذاری مشتری ناموفق بود.`}finally{b.value=!1}}h(I),c(()=>u.customerId,I);async function ne(){if(!u.customerId||!O.value.trim()||!T.value.trim()){C.value=`موضوع و تاریخ الزامی است.`;return}S.value=!0,C.value=null;try{await _.submitMeeting({customerId:u.customerId,type:w.value,title:O.value.trim(),subject:O.value.trim(),content:k.value.trim()||void 0,description:k.value.trim()||void 0,date:T.value.trim(),time:E.value.trim()||void 0,createReminder:A.value,reminderTitle:A.value?j.value.trim()||O.value.trim():void 0,reminderDate:A.value?M.value.trim()||T.value.trim():void 0,reminderTime:A.value?N.value.trim()||E.value.trim()||`10:00`:void 0,reminderNote:A.value&&P.value.trim()||void 0}),p(`success`)}catch(e){C.value=e instanceof Error?e.message:`ثبت گزارش ناموفق بود.`}finally{S.value=!1}}return(t,r)=>(a(),f(`div`,B,[b.value?(a(),x(re,{key:0,variant:`form`})):C.value?(a(),f(`p`,V,s(C.value),1)):d(``,!0),y.value?(a(),f(m,{key:2},[g(`section`,H,[g(`div`,{class:`avatar`,style:o({background:y.value.avatarColor})},s(y.value.avatarLetter),5),g(`div`,null,[g(`strong`,null,s(y.value.name),1),g(`p`,null,s(y.value.contactName),1),g(`p`,U,s(y.value.phone),1)])]),g(`section`,null,[r[9]||=g(`h3`,null,`نوع تعامل`,-1),g(`div`,W,[(a(),f(m,null,n(F,t=>g(`button`,{key:t.id,type:`button`,class:e([`type-btn`,{"type-btn--active":w.value===t.id}]),onClick:e=>w.value=t.id},[t.icon===`clipboard`?(a(),x(te,{key:0,size:22})):t.icon===`phone`?(a(),x(ee,{key:1,size:22})):t.icon===`mail`?(a(),x(oe,{key:2,size:22})):(a(),x(R,{key:3,size:22})),g(`span`,null,s(t.label),1)],10,G)),64))])]),g(`section`,null,[r[10]||=g(`h3`,null,`تاریخ و زمان`,-1),g(`div`,K,[l(L,{modelValue:T.value,"onUpdate:modelValue":r[0]||=e=>T.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`])])]),g(`label`,q,[r[11]||=g(`span`,null,`موضوع گزارش`,-1),i(g(`input`,{"onUpdate:modelValue":r[2]||=e=>O.value=e,type:`text`},null,512),[[D,O.value]])]),g(`label`,J,[r[12]||=g(`span`,null,`محتوای گزارش`,-1),i(g(`textarea`,{"onUpdate:modelValue":r[3]||=e=>k.value=e,rows:`5`,maxlength:`1000`},null,512),[[D,k.value]]),g(`em`,null,s(k.value.length.toLocaleString(`fa-IR`))+`/۱۰۰۰`,1)]),r[17]||=g(`section`,null,[g(`h3`,null,`تصاویر و فایلها`),g(`div`,{class:`files`},[g(`div`,{class:`file-thumb`}),g(`div`,{class:`file-thumb`}),g(`button`,{type:`button`,class:`file-add`,"aria-label":`افزودن فایل`},`+`)])],-1),g(`section`,se,[g(`div`,Y,[r[14]||=g(`h3`,null,`یادآور`,-1),g(`button`,{type:`button`,class:e([`toggle`,{"toggle--on":A.value}]),"aria-pressed":A.value,onClick:r[4]||=e=>A.value=!A.value},[...r[13]||=[g(`span`,null,null,-1)]],10,X)]),A.value?(a(),f(m,{key:0},[g(`label`,ce,[r[15]||=g(`span`,null,`عنوان یادآور`,-1),i(g(`input`,{"onUpdate:modelValue":r[5]||=e=>j.value=e,type:`text`},null,512),[[D,j.value]])]),g(`div`,Z,[l(L,{modelValue:M.value,"onUpdate:modelValue":r[6]||=e=>M.value=e,label:`تاریخ یادآور`,class:`meeting-date`},null,8,[`modelValue`]),l(z,{modelValue:N.value,"onUpdate:modelValue":r[7]||=e=>N.value=e,label:`ساعت یادآور`,placeholder:`مثلاً ۱۰:۳۰`,class:`meeting-time`},null,8,[`modelValue`])]),g(`label`,le,[r[16]||=g(`span`,null,`یادداشت یادآور (اختیاری)`,-1),i(g(`input`,{"onUpdate:modelValue":r[8]||=e=>P.value=e,type:`text`},null,512),[[D,P.value]])])],64)):d(``,!0)]),g(`button`,{type:`button`,class:`submit`,disabled:S.value,onClick:ne},s(S.value?`در حال ثبت...`:`ثبت گزارش و یادآور`),9,Q)],64)):d(``,!0)]))}}),[[`__scopeId`,`data-v-5d6dd8b7`]]),de={class:`meeting-report-sheet`},fe=b(C({__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(),x(y,{to:`body`},[l(E,{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:T(s,[`self`])},[g(`div`,de,[n[1]||=g(`div`,{class:`meeting-report-sheet__handle`,"aria-hidden":`true`},null,-1),g(`header`,{class:`meeting-report-sheet__head`},[n[0]||=g(`h2`,{id:`meeting-report-title`},`ثبت گزارش ملاقات`,-1),g(`button`,{type:`button`,class:`meeting-report-sheet__close`,"aria-label":`بستن`,onClick:s},` × `)]),e.customerId?(a(),x(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=b(C({__name:`CustomerDetailView`,setup(t){let i=M(),y=j(),b=ie(),C=N(),T=u(()=>String(i.query.id??``)),E=u(()=>String(i.query.tab??`info`)),D=u(()=>i.query.meetingReport===`1`),O=u(()=>i.query.edit===`1`),L=v(null),z=v([]),B=v([]),V=v(`all`),H=v(!0),U=v(null),W=[{id:`info`,label:`اطلاعات`},{id:`orders`,label:`سفارشها`},{id:`reports`,label:`گزارشها و پیگیریها`}];async function G(){if(!T.value){L.value=null,H.value=!1;return}H.value=!0,U.value=null;try{let e=await b.loadCustomerDetail(T.value);L.value=e.customer,z.value=e.orders,B.value=e.meetings}catch(e){L.value=null,U.value=e instanceof Error?e.message:`مشتری یافت نشد.`}finally{H.value=!1}}h(G),c(T,G);function K(e){y.replace({path:`/customer`,query:{id:T.value,tab:e}})}function q(){y.push({path:`/customer`,query:{id:T.value,tab:`reports`,meetingReport:`1`}})}function J(){y.replace({path:`/customer`,query:{id:T.value,tab:`reports`}})}async function se(){J(),await G()}function Y(){y.push({path:`/customer`,query:{id:T.value,tab:E.value,edit:`1`}})}function X(){y.replace({path:`/customer`,query:{id:T.value,tab:E.value}})}async function ce(){X(),await G()}let Z=u(()=>{if(!L.value)return null;let e=L.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(()=>L.value?.agentName||C.fullName||`واسطه`),ue=u(()=>L.value?.agentCode||C.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&&y.push({path:`/order`,query:{id:e}})}function lt(e){let t=e.statusLabel;return I[t]||e.statusLabel}function ut(e){let t=F[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,[L.value?(a(),f(`div`,pe,[l(ne,{class:`mobile-only`,title:E.value===`reports`?`پروفایل مشتری`:`جزئیات مشتری`,"show-back":``,centered:``,onBack:i[0]||=e=>S(y).push(`/customers`)},_({_:2},[E.value===`info`?{name:`trailing`,fn:r(()=>[g(`button`,{type:`button`,class:`edit-btn edit-btn--compact`,"aria-label":`ویرایش`,onClick:Y},[l(R,{size:18}),i[4]||=g(`span`,{class:`edit-btn__label`},`ویرایش`,-1)])]),key:`0`}:void 0]),1032,[`title`]),g(`header`,me,[g(`div`,null,[g(`h1`,he,s(L.value.name),1),g(`p`,ge,s(L.value.phone),1)]),E.value===`info`?(a(),f(`button`,{key:0,type:`button`,class:`edit-btn edit-btn--desk`,onClick:Y},` ویرایش `)):d(``,!0)]),g(`div`,_e,[E.value===`reports`?(a(),f(`section`,Se,[g(`div`,Ce,[g(`div`,{class:`profile-card__avatar profile-card__avatar--lg`,style:o({background:L.value.avatarColor})},s(L.value.avatarLetter),5),g(`div`,null,[g(`h2`,null,s(L.value.name),1),g(`p`,null,s(L.value.contactName),1),g(`p`,we,s(L.value.phone),1)]),i[5]||=g(`span`,{class:`status-badge status-badge--active status-badge--on-dark`},`فعال`,-1)]),g(`div`,Te,[g(`div`,null,[i[6]||=g(`span`,null,`سطح مشتری`,-1),g(`strong`,null,s(L.value.levelLabel),1)]),g(`div`,null,[i[7]||=g(`span`,null,`تاریخ اولین خرید`,-1),g(`strong`,null,s(L.value.firstPurchaseDate),1)]),g(`div`,null,[i[8]||=g(`span`,null,`تعداد سفارش`,-1),g(`strong`,null,s(S(k)(L.value.orderCount))+` سفارش`,1)])])])):(a(),f(`section`,ve,[g(`div`,{class:`profile-card__avatar`,style:o({background:L.value.avatarColor})},s(L.value.avatarLetter),5),g(`div`,ye,[g(`div`,be,[g(`h2`,null,s(L.value.name),1),g(`span`,{class:e([`status-badge`,pt(L.value.status)])},s(ft(L.value.status)),3)]),g(`p`,xe,s(L.value.phone),1)])])),g(`div`,Ee,[(a(),f(m,null,n(W,t=>g(`button`,{key:t.id,type:`button`,role:`tab`,class:e([`tab`,{"tab--active":E.value===t.id}]),"aria-selected":E.value===t.id,onClick:e=>K(t.id)},[g(`span`,Oe,s(t.label),1)],10,De)),64))]),E.value===`info`?(a(),f(m,{key:2},[g(`section`,ke,[i[16]||=g(`h3`,{class:`section-title`},`اطلاعات خرید`,-1),g(`div`,Ae,[g(`div`,je,[i[9]||=g(`span`,{class:`purchase-stats__label`},`تعداد سفارش`,-1),g(`strong`,Me,s(S(k)(L.value.orderCount)),1)]),i[14]||=g(`span`,{class:`purchase-stats__divider`,"aria-hidden":`true`},null,-1),g(`div`,Ne,[i[10]||=g(`span`,{class:`purchase-stats__label`},`مجموع خرید`,-1),g(`strong`,Pe,s(S(k)(L.value.totalPurchaseToman)),1),i[11]||=g(`em`,{class:`purchase-stats__unit`},`تومان`,-1)]),i[15]||=g(`span`,{class:`purchase-stats__divider`,"aria-hidden":`true`},null,-1),g(`div`,Fe,[i[12]||=g(`span`,{class:`purchase-stats__label`},`میانگین هر سفارش`,-1),g(`strong`,Ie,s(S(k)(L.value.averageOrderToman)),1),i[13]||=g(`em`,{class:`purchase-stats__unit`},`تومان`,-1)])])]),g(`section`,Le,[g(`button`,{type:`button`,class:`agent-row`,onClick:i[1]||=e=>S(y).push(`/profile`)},[g(`div`,Re,s(de.value),1),g(`div`,ze,[g(`strong`,null,s(Q.value),1),g(`p`,null,`کد واسطه: `+s(ue.value),1)]),l(P,{size:18,class:`agent-row__chevron`,"aria-hidden":`true`})]),g(`div`,Be,[g(`div`,Ve,[i[17]||=g(`h3`,{class:`section-title`},`آخرین سفارشها`,-1),g(`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:w(e=>$(t.id),[`enter`])},[g(`div`,Ue,[g(`strong`,null,s(t.title),1),l(P,{size:14,class:`order-row__chevron`,"aria-hidden":`true`})]),g(`span`,We,s(S(k)(t.amountToman))+` تومان`,1),g(`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)):E.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:w(e=>$(t.id),[`enter`])},[g(`div`,Je,[g(`strong`,null,s(t.title),1),l(P,{size:14,class:`order-row__chevron`,"aria-hidden":`true`})]),g(`span`,Ye,s(S(k)(t.amountToman))+` تومان`,1),g(`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[18]||=g(`h3`,{class:`section-title`},`تعاملات و پیگیریها`,-1),g(`button`,{type:`button`,class:`dashed-btn`,onClick:q},` + ثبت گزارش ملاقات جدید `),g(`div`,Qe,[(a(),f(m,null,n(ot,t=>g(`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`},[g(`div`,{class:e([`meeting-row__icon`,ct(t.type)])},[t.type===`in_person`?(a(),x(te,{key:0,size:16})):t.type===`call`?(a(),x(ee,{key:1,size:16})):t.type===`message`?(a(),x(oe,{key:2,size:16})):(a(),x(R,{key:3,size:16}))],2),g(`div`,et,[g(`strong`,null,s(le(t.type)),1),g(`p`,null,s(t.description||t.title),1)]),g(`span`,tt,s(t.date),1)]))),128)),st.value.length?d(``,!0):(a(),f(`p`,nt,` گزارشی برای این فیلتر ثبت نشده است. `))]))]),E.value===`info`?(a(),f(`footer`,rt,[g(`button`,{type:`button`,class:`cta`,onClick:i[3]||=e=>S(y).push(`/categories`)},[l(A,{size:20,color:`#fff`}),i[19]||=p(` سفارش جدید برای این مشتری `,-1)])])):d(``,!0)])):H.value?(a(),f(`div`,it,[l(re,{variant:`detail`})])):(a(),f(`div`,at,[g(`p`,null,s(U.value||`مشتری یافت نشد.`),1)])),l(fe,{open:D.value,"customer-id":T.value,onClose:J,onSuccess:se},null,8,[`open`,`customer-id`]),l(ae,{open:O.value,"customer-id":T.value,initial:Z.value,onClose:X,onSuccess:ce},null,8,[`open`,`customer-id`,`initial`])],64))}}),[[`__scopeId`,`data-v-938375e3`]]);export{ot as default}; |