1 line
11 KiB
JavaScript
1 line
11 KiB
JavaScript
import{At as e,F as t,K as n,M as r,Nt as i,Pt as a,U as ee,_ as o,c as s,d as c,f as l,g as u,i as d,k as te,l as f,nt as p,t as ne,u as re,ut as m,v as h}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{s as g,u as ie}from"./BasicIcon-Bzeb0Iwd.js";import{t as ae}from"./dist-Bc4P4ngC.js";import{o as _}from"./format-C72AoJ2H.js";import{M as oe,j as se,s as v,w as y}from"./index-3Kv0ngks.js";import{t as ce}from"./IconChevronBack-CDeN0Cbu.js";import{t as b}from"./IconMoreVertical-DxvtLM6t.js";import{t as le}from"./PageSkeleton-DYdjm4l9.js";import{i as ue,t as de}from"./crm-DoYzOa8A.js";import{t as fe}from"./useGoBack-pkrD1deE.js";import{t as pe}from"./PersianDateInput-DrDb_iFF.js";var me={class:`page reminders-page`},he={class:`top mobile-only`},ge={class:`desktop-page__head desktop-only reminders-desk-head`},_e={class:`reminders-desk-head__actions`},ve={class:`page__scroll page__scroll--with-nav reminders-scroll`},ye={class:`tabs`,role:`tablist`,"aria-label":`فیلتر یادآورها`},be=[`aria-selected`,`onClick`],xe={class:`tab__text`},Se={key:0,class:`tab__badge`},Ce={key:1,class:`error-text`},x={key:2,class:`create-panel`},S={key:0,class:`create-error`},C=[`aria-expanded`],w={key:0,class:`field-select__menu`,role:`listbox`},T=[`aria-selected`,`onClick`],E={class:`create-row`},D={class:`create-actions`},O=[`disabled`],k={class:`summary`},A={class:`summary__top`},we={class:`summary__label`},Te={class:`summary__calendar`,"aria-hidden":`true`},Ee={class:`summary__count`},De={key:0,class:`empty-state`},Oe=[`onClick`],ke=[`onClick`],Ae={class:`reminder-card__header`},je={class:`reminder-card__time`},Me={class:`reminder-card__title-row`},Ne={class:`reminder-card__body`},Pe={class:`reminder-card__customer`},Fe={class:`reminder-card__customer-text`},Ie={class:`reminder-card__name`},Le={class:`reminder-card__contact`},Re={key:0,class:`reminder-card__desc`},ze={class:`completed-section`},Be={class:`completed-bar__count`},Ve={key:0,class:`completed-list`},He=[`onClick`],Ue={class:`reminder-card__header`},We={class:`reminder-card__time`},Ge={class:`reminder-card__title-row`},j={class:`reminder-card__body`},Ke={class:`reminder-card__customer`},qe={class:`reminder-card__customer-text`},Je={class:`reminder-card__name`},Ye={class:`reminder-card__contact`},Xe={key:0,class:`reminder-card__desc`},Ze={key:0,class:`completed-empty`},M=ne(h({__name:`RemindersView`,setup(ne){let h=se(),M=oe(),{goBack:N}=fe(`/`),P=de(),F=s(()=>String(h.query.filter??`today`)),I=p([]),L=p([]),R=p(!0),z=p(null),B=p(!1),V=p(!1),H=p(0),U=p(!1),W=p({customerId:``,title:``,date:``,time:`10:00`,note:``}),G=p(!1),K=p(null),Qe=s(()=>{if(!W.value.customerId)return`انتخاب مشتری`;let e=L.value.find(e=>e.id===W.value.customerId);return e?.name||e?.contactName||`انتخاب مشتری`});ae(K,()=>{G.value=!1});function $e(e){W.value.customerId=e,G.value=!1}let et=[{id:`all`,label:`همه`},{id:`today`,label:`امروز`},{id:`week`,label:`هفته آینده`},{id:`past`,label:`گذشته`}],q=s(()=>I.value.filter(e=>!e.completed)),J=s(()=>{let e=new Date().toISOString().slice(0,10);return I.value.filter(t=>t.completed&&t.date===e)}),tt=s(()=>q.value.length),nt=s(()=>F.value===`today`?`پیگیریهای امروز`:F.value===`week`?`پیگیریهای هفته آینده`:F.value===`past`?`پیگیریهای گذشته`:`پیگیریهای باز`),rt=s(()=>new Date().getDate().toLocaleString(`fa-IR`));async function Y(){try{let e=await ue(`past`);H.value=e.length}catch{H.value=0}}async function X(){R.value=!0,z.value=null;try{I.value=await P.loadReminders(F.value)}catch(e){z.value=e instanceof Error?e.message:`بارگذاری یادآورها ناموفق بود.`,I.value=[]}finally{R.value=!1}}te(async()=>{await Promise.all([X(),Y()])}),ee(F,X);function it(e){M.replace({path:`/reminders`,query:{filter:e}})}async function at(e){try{await P.markReminderComplete(e),await X(),await Y()}catch(e){z.value=e instanceof Error?e.message:`تکمیل یادآور ناموفق بود.`}}function Z(e){return e===`in_person`?`ملاقات حضوری`:e===`call`?`تماس تلفنی`:e===`message`?`پیام`:`یادداشت`}function Q(e){return e===`in_person`?`tag--green`:e===`call`?`tag--blue`:`tag--purple`}async function $(){B.value=!0,U.value=!1,G.value=!1,z.value=null;try{if(L.value=await P.loadCustomers(),!W.value.customerId&&L.value[0]&&(W.value.customerId=L.value[0].id),!W.value.date){let e=new Date;W.value.date=`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}}catch(e){z.value=e instanceof Error?e.message:`بارگذاری مشتریان ناموفق بود.`}}async function ot(){if(!W.value.customerId||!W.value.title.trim()||!W.value.date||!W.value.time){z.value=`مشتری، عنوان، تاریخ و ساعت الزامی است.`;return}V.value=!0,z.value=null;try{await P.createReminder({customerId:W.value.customerId,title:W.value.title.trim(),date:W.value.date,time:W.value.time,note:W.value.note.trim()||void 0,description:W.value.note.trim()||void 0}),B.value=!1,W.value.title=``,W.value.note=``,await X(),await Y()}catch(e){z.value=e instanceof Error?e.message:`ثبت یادآور ناموفق بود.`}finally{V.value=!1}}function st(){U.value=!U.value}return(ee,s)=>(r(),l(`div`,me,[f(`header`,he,[f(`button`,{type:`button`,class:`icon-btn`,"aria-label":`بازگشت`,onClick:s[0]||=(...e)=>m(N)&&m(N)(...e)},[o(ce,{size:20})]),s[9]||=f(`h1`,null,`یادآورها`,-1),f(`button`,{type:`button`,class:`icon-btn`,"aria-label":`اعلانها`,onClick:s[1]||=e=>m(M).push(`/profile/notifications`)},[o(v,{size:20})])]),f(`header`,ge,[s[11]||=f(`div`,null,[f(`h1`,{class:`desktop-page__title`},`یادآورها`),f(`p`,{class:`desktop-page__subtitle`},`پیگیری و مدیریت یادآورهای مشتریان`)],-1),f(`div`,_e,[f(`button`,{type:`button`,class:`desk-icon-btn`,"aria-label":`اعلانها`,onClick:s[2]||=e=>m(M).push(`/profile/notifications`)},[o(v,{size:20})]),f(`button`,{type:`button`,class:`desk-new-btn`,onClick:$},[o(y,{size:18,color:`#fff`}),s[10]||=u(` یادآور جدید `,-1)])])]),f(`div`,ve,[f(`div`,ye,[(r(),l(d,null,t(et,t=>f(`button`,{key:t.id,type:`button`,role:`tab`,class:e([`tab`,{"tab--active":F.value===t.id}]),"aria-selected":F.value===t.id,onClick:e=>it(t.id)},[f(`span`,xe,[u(a(t.label)+` `,1),t.id===`past`&&H.value?(r(),l(`span`,Se,a(H.value.toLocaleString(`fa-IR`)),1)):c(``,!0)])],10,be)),64))]),R.value?(r(),re(le,{key:0,variant:`list`})):z.value&&!B.value?(r(),l(`p`,Ce,a(z.value),1)):c(``,!0),B.value?(r(),l(`section`,x,[s[17]||=f(`h3`,null,`یادآور جدید`,-1),z.value?(r(),l(`p`,S,a(z.value),1)):c(``,!0),f(`label`,null,[s[13]||=u(` مشتری `,-1),f(`div`,{ref_key:`customerRoot`,ref:K,class:`field-select`},[f(`button`,{type:`button`,class:e([`field-select__trigger`,{"is-open":G.value}]),"aria-haspopup":`listbox`,"aria-expanded":G.value,onClick:s[3]||=e=>G.value=!G.value},[f(`span`,{class:e({"is-placeholder":!W.value.customerId})},a(Qe.value),3),s[12]||=f(`svg`,{class:`field-select__chevron`,viewBox:`0 0 12 12`,"aria-hidden":`true`},[f(`path`,{d:`M2.5 4.5 6 8l3.5-3.5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.4`,"stroke-linecap":`round`})],-1)],10,C),G.value?(r(),l(`ul`,w,[(r(!0),l(d,null,t(L.value,t=>(r(),l(`li`,{key:t.id},[f(`button`,{type:`button`,role:`option`,class:e([`field-select__option`,{"is-active":W.value.customerId===t.id}]),"aria-selected":W.value.customerId===t.id,onClick:e=>$e(t.id)},a(t.name||t.contactName),11,T)]))),128))])):c(``,!0)],512)]),f(`label`,null,[s[14]||=u(` عنوان `,-1),n(f(`input`,{"onUpdate:modelValue":s[4]||=e=>W.value.title=e,type:`text`,placeholder:`مثلاً پیگیری نمونه`},null,512),[[g,W.value.title]])]),f(`div`,E,[o(pe,{modelValue:W.value.date,"onUpdate:modelValue":s[5]||=e=>W.value.date=e,label:`تاریخ`,class:`create-date`},null,8,[`modelValue`]),f(`label`,null,[s[15]||=u(` ساعت `,-1),n(f(`input`,{"onUpdate:modelValue":s[6]||=e=>W.value.time=e,type:`time`},null,512),[[g,W.value.time]])])]),f(`label`,null,[s[16]||=u(` یادداشت `,-1),n(f(`textarea`,{"onUpdate:modelValue":s[7]||=e=>W.value.note=e,rows:`2`,placeholder:`اختیاری`},null,512),[[g,W.value.note]])]),f(`div`,D,[f(`button`,{type:`button`,class:`btn-cancel`,onClick:s[8]||=e=>B.value=!1},`انصراف`),f(`button`,{type:`button`,class:`btn-save`,disabled:V.value,onClick:ot},a(V.value?`در حال ثبت...`:`ثبت یادآور`),9,O)])])):!R.value&&!z.value?(r(),l(d,{key:3},[f(`section`,k,[f(`div`,A,[f(`span`,we,a(nt.value),1),f(`div`,Te,[s[18]||=f(`svg`,{viewBox:`0 0 24 24`,fill:`none`},[f(`path`,{d:`M8 2.5V5.5M16 2.5V5.5M4.5 9.5H19.5M19 8.5V17.5C19 20 17.5 21.5 14.5 21.5H9.5C6.5 21.5 5 20 5 17.5V8.5C5 6 6.5 4.5 9.5 4.5H14.5C17.5 4.5 19 6 19 8.5Z`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`})],-1),f(`span`,null,a(rt.value),1)])]),f(`div`,Ee,[f(`strong`,null,a(m(_)(tt.value)),1),s[19]||=f(`span`,null,`مورد`,-1)]),s[20]||=f(`p`,{class:`summary__sub`},`یادآورهای شما برای پیگیری مشتریان`,-1)]),q.value.length?c(``,!0):(r(),l(`div`,De,`یادآوری برای این بازه ثبت نشده است.`)),(r(!0),l(d,null,t(q.value,t=>(r(),l(`div`,{key:t.id,class:`reminder-row`},[f(`button`,{type:`button`,class:`reminder-row__check`,"aria-label":`تکمیل یادآور`,onClick:ie(e=>at(t.id),[`stop`])},null,8,Oe),f(`article`,{class:`reminder-card`,onClick:e=>m(M).push({path:`/reminder`,query:{id:t.id}})},[f(`div`,Ae,[f(`span`,je,a(t.time),1),f(`div`,Me,[f(`strong`,null,a(t.title),1),o(b,{size:18,class:`reminder-card__menu`})])]),f(`div`,Ne,[f(`span`,{class:e([`tag`,Q(t.interactionType)])},a(Z(t.interactionType)),3),f(`div`,Pe,[f(`div`,Fe,[f(`p`,Ie,a(t.customerName),1),f(`p`,Le,a(t.contactName),1)]),f(`div`,{class:`reminder-card__avatar`,style:i({background:t.avatarColor})},a(t.avatarLetter),5)])]),t.description?(r(),l(`p`,Re,a(t.description),1)):c(``,!0)],8,ke)]))),128)),f(`section`,ze,[f(`button`,{type:`button`,class:`completed-bar`,onClick:st},[(r(),l(`svg`,{class:e([`completed-bar__chevron`,{"is-open":U.value}]),viewBox:`0 0 12 12`,"aria-hidden":`true`},[...s[21]||=[f(`path`,{d:`M2.5 4.5 6 8l3.5-3.5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.4`,"stroke-linecap":`round`},null,-1)]],2)),s[22]||=f(`span`,{class:`completed-bar__label`},`یادآورهای تکمیل شده امروز`,-1),f(`span`,Be,a(m(_)(J.value.length)),1)]),U.value?(r(),l(`div`,Ve,[(r(!0),l(d,null,t(J.value,t=>(r(),l(`div`,{key:t.id,class:`reminder-row reminder-row--done`},[s[23]||=f(`span`,{class:`reminder-row__check reminder-row__check--done`,"aria-hidden":`true`},null,-1),f(`article`,{class:`reminder-card reminder-card--done`,onClick:e=>m(M).push({path:`/reminder`,query:{id:t.id}})},[f(`div`,Ue,[f(`span`,We,a(t.time),1),f(`div`,Ge,[f(`strong`,null,a(t.title),1),o(b,{size:18,class:`reminder-card__menu`})])]),f(`div`,j,[f(`span`,{class:e([`tag`,Q(t.interactionType)])},a(Z(t.interactionType)),3),f(`div`,Ke,[f(`div`,qe,[f(`p`,Je,a(t.customerName),1),f(`p`,Ye,a(t.contactName),1)]),f(`div`,{class:`reminder-card__avatar`,style:i({background:t.avatarColor})},a(t.avatarLetter),5)])]),t.description?(r(),l(`p`,Xe,a(t.description),1)):c(``,!0)],8,He)]))),128)),J.value.length?c(``,!0):(r(),l(`p`,Ze,`یادآور تکمیلشدهای برای امروز نیست.`))])):c(``,!0)])],64)):c(``,!0),f(`button`,{type:`button`,class:`new-btn mobile-only`,onClick:$},[o(y,{size:20,color:`#fff`}),s[24]||=u(` یادآور جدید `,-1)])])]))}}),[[`__scopeId`,`data-v-5b2cf3dd`]]);export{M as default}; |