Validate sessions against the API, honor configurable base paths, and route unknown pages to 404. Keep development ports stable so user and admin apps cannot be confused. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 line
5.1 KiB
JavaScript
1 line
5.1 KiB
JavaScript
import{D as e,Et as t,G as n,J as r,N as i,O as a,P as o,T as s,Xt as c,Yt as l,Z as u,at as d,b as f,g as p,h as m,t as h,vt as g,w as _}from"./_plugin-vue_export-helper-Bo3WtfwJ.js";import{c as v}from"./index-BAQfYU-Q.js";import{t as y}from"./PageHeader-DTO8lja2.js";import{t as b}from"./PageSkeleton-DHtB6RUa.js";import{t as x}from"./crm-CooNUbmr.js";var S={key:0,class:`page reminder-detail`},C={class:`page__scroll detail-scroll`},w={key:0,class:`form-error`},T={class:`layout`},E={class:`panel`},ee={class:`field`},D={class:`field`},O={class:`customer-line`},k={class:`field`},A={class:`field`},j={class:`field`},M={class:`actions`},N=[`disabled`],P={class:`panel`},F={class:`panel chart-panel`},I={class:`bars`},L={class:`stats-grid`},R={key:1,class:`page empty`},z={key:2,class:`page empty`},B=h(o({__name:`ReminderDetailView`,setup(o){let h=m(),B=p(),V=x(),H=v(),U=_(()=>String(h.query.id??``)),W=g(null),G=g(null),K=g([]),q=g(!0),J=g(!1),Y=g(null);async function X(){if(!U.value){W.value=null,q.value=!1;return}q.value=!0,Y.value=null;try{let e=await V.loadReminderDetail(U.value);W.value=e.reminder,G.value=e.customer,K.value=e.history}catch(e){W.value=null,Y.value=e instanceof Error?e.message:`یادآور یافت نشد.`}finally{q.value=!1}}n(X),d(U,X);function Z(e){return e===`in_person`?`ملاقات حضوری`:e===`call`?`تماس تلفنی`:e===`message`?`پیام`:`یادداشت`}async function Q(){if(!(!W.value||W.value.completed)){J.value=!0,Y.value=null;try{await V.markReminderComplete(W.value.id),W.value={...W.value,completed:!0},B.push(`/reminders?filter=today`)}catch(e){Y.value=e instanceof Error?e.message:`تکمیل یادآور ناموفق بود.`}finally{J.value=!1}}}let te=_(()=>H.fullName||`واسطه`),$=_(()=>{let e=K.value;return{total:e.length,inPerson:e.filter(e=>e.type===`in_person`).length,call:e.filter(e=>e.type===`call`).length,other:e.filter(e=>e.type===`message`||e.type===`note`).length}}),ne=_(()=>{let e=Array.from({length:6},()=>({a:0,b:0,c:0}));K.value.forEach((t,n)=>{let r=e[n%6];r&&(t.type===`in_person`?r.a+=1:t.type===`call`?r.b+=1:r.c+=1)});let t=Math.max(1,...e.map(e=>e.a+e.b+e.c));return e.map(e=>({a:`${e.a/t*100}%`,b:`${e.b/t*100}%`,c:`${e.c/t*100}%`}))});return(n,o)=>W.value&&G.value?(r(),a(`div`,S,[i(y,{title:`جزئیات یادآور`,"show-back":``,centered:``,onBack:o[0]||=e=>t(B).back()}),s(`div`,C,[Y.value?(r(),a(`p`,w,c(Y.value),1)):e(``,!0),s(`div`,T,[s(`section`,E,[o[8]||=s(`h2`,null,`جزئیات یادآور`,-1),s(`div`,ee,[o[3]||=s(`span`,null,`عنوان`,-1),s(`strong`,null,c(W.value.title)+` — `+c(W.value.description),1)]),s(`div`,D,[o[4]||=s(`span`,null,`مشتری`,-1),s(`div`,O,[s(`div`,{class:`avatar`,style:l({background:G.value.avatarColor})},c(G.value.avatarLetter),5),s(`div`,null,[s(`strong`,null,c(G.value.name),1),s(`p`,null,c(G.value.contactName),1)])])]),s(`div`,k,[o[5]||=s(`span`,null,`فروشنده حامل حضوری`,-1),s(`strong`,null,c(te.value),1)]),s(`div`,A,[o[6]||=s(`span`,null,`تاریخ و زمان`,-1),s(`strong`,null,c(W.value.date)+` — `+c(W.value.time),1)]),s(`div`,j,[o[7]||=s(`span`,null,`یادداشت`,-1),s(`strong`,null,c(W.value.note||`—`),1)]),s(`div`,M,[s(`button`,{type:`button`,class:`btn-outline`,onClick:o[1]||=e=>t(B).back()},`ویرایش`),s(`button`,{type:`button`,class:`btn-primary`,disabled:J.value||W.value.completed,onClick:Q},c(W.value.completed?`تکمیلشده`:J.value?`...`:`تکمیل شد`),9,N)])]),s(`section`,P,[o[9]||=s(`h2`,null,`تاریخچه تعاملات`,-1),(r(!0),a(f,null,u(K.value,e=>(r(),a(`article`,{key:e.id,class:`history-row`},[s(`div`,null,[s(`strong`,null,c(Z(e.type)),1),s(`p`,null,c(e.description),1)]),s(`span`,null,c(e.date),1)]))),128)),s(`button`,{type:`button`,class:`see-all`,onClick:o[2]||=e=>t(B).push({path:`/customer`,query:{id:G.value.id,tab:`reports`}})},` مشاهده همه `)]),s(`section`,F,[o[14]||=s(`div`,{class:`chart-panel__head`},[s(`h2`,null,`نمودار فعالیت`),s(`span`,null,`تعاملات ثبتشده`)],-1),s(`div`,I,[(r(!0),a(f,null,u(ne.value,(t,n)=>(r(),a(`div`,{key:n,class:`bar`},[t.c===`0%`?e(``,!0):(r(),a(`span`,{key:0,class:`seg seg--c`,style:l({height:t.c})},null,4)),t.b===`0%`?e(``,!0):(r(),a(`span`,{key:1,class:`seg seg--b`,style:l({height:t.b})},null,4)),t.a===`0%`?e(``,!0):(r(),a(`span`,{key:2,class:`seg seg--a`,style:l({height:t.a})},null,4))]))),128))]),s(`div`,L,[s(`div`,null,[o[10]||=s(`span`,null,`کل تعاملات`,-1),s(`strong`,null,c($.value.total.toLocaleString(`fa-IR`))+` مورد`,1)]),s(`div`,null,[o[11]||=s(`span`,null,`ملاقات حضوری`,-1),s(`strong`,null,c($.value.inPerson.toLocaleString(`fa-IR`))+` مورد`,1)]),s(`div`,null,[o[12]||=s(`span`,null,`تماس تلفنی`,-1),s(`strong`,null,c($.value.call.toLocaleString(`fa-IR`))+` مورد`,1)]),s(`div`,null,[o[13]||=s(`span`,null,`یادداشت و پیام`,-1),s(`strong`,null,c($.value.other.toLocaleString(`fa-IR`))+` مورد`,1)])])])])])])):q.value?(r(),a(`div`,R,[i(b,{variant:`detail`})])):(r(),a(`div`,z,[s(`p`,null,c(Y.value||`یادآور یافت نشد.`),1)]))}}),[[`__scopeId`,`data-v-59c58cf4`]]);export{B as default}; |