Files
nademitex_admin/dist/assets/CheckManagementView-Dfau013q.js
T

1 line
11 KiB
JavaScript

import{$ as e,B as t,F as n,I as r,J as ee,K as i,L as a,N as o,Q as s,St as c,X as l,Y as u,Z as te,bt as d,ct as f,m as p,n as m,nt as h,ot as ne,q as g,r as _,rt as v,tt as y,ut as b,vt as x,x as S,y as re,yt as C,z as ie}from"./index-BHqDDh7X.js";import{c as w}from"./orderStatus-CYVblRJB.js";import{t as T}from"./StatusBadge-BMzuiwOg.js";var ae={class:`checks-page`},oe={class:`admin-page-header`},se={key:0,class:`checks-page__order-meta`},ce={class:`checks-page__stats`},le={class:`checks-page__stat`},ue={class:`checks-page__stat`},de={class:`checks-page__stat`},fe={class:`checks-page__stat`},pe={class:`admin-tabs`},me={key:0,class:`admin-empty-placeholder admin-card`},he={key:1,class:`checks-page__list admin-card`},ge=[`onClick`],_e={class:`check-row__chevron`,"aria-hidden":`true`},ve=[`onClick`],ye=[`src`],be={key:1,class:`check-row__thumb check-row__thumb--empty`},E={class:`check-row__meta`},D=[`disabled`,`onClick`],O=[`disabled`,`onClick`],k={key:0,class:`check-row__panel`},A={key:0,class:`check-row__fields`},j=[`dir`],M={key:1,class:`check-row__hint`},N={class:`check-row__photos`},xe=[`onClick`],Se=[`src`],Ce=[`onClick`],we=[`src`],Te={key:2,class:`check-row__hint`},Ee={class:`checks-page__footer`},De={class:`checks-page__note`},Oe={class:`admin-action-group`},ke=[`disabled`],Ae={key:0,class:`admin-empty-placeholder admin-card`},je={key:1,class:`checks-page__history`},Me={class:`checks-page__history-item-head`},Ne={class:`checks-page__history-meta`},Pe={key:0,class:`checks-page__history-note`},P={key:1,class:`checks-page__history-note`},Fe={class:`checks-page__history-item-head`},Ie={class:`checks-page__history-note`},Le=[`src`],F=t(v({__name:`CheckManagementView`,setup(t){let v=n(),F=r(),I=ie(),L=x(`info`),R=x(null),z=x([]),B=x(null),V=x(null),H=x(null),U=u(()=>R.value?re(R.value):null),Re=u(()=>z.value.reduce((e,t)=>e+t.amount,0)),W=u(()=>z.value.filter(e=>e.status===`pending_review`)),ze=u(()=>z.value.length>0&&z.value.every(e=>e.status===`approved`)),G=u(()=>!ze.value||!R.value?!1:(R.value.rawStatus??R.value.status)===`checks_approved`),K=x(!1),q=u(()=>{let e=R.value?.statusHistory??[],t=new Set([`check_in_progress`,`awaiting_check_review`,`check_needs_fix`,`check_rejected`,`checks_approved`]),n=e.filter(e=>t.has(e.toStatus)||e.fromStatus&&t.has(e.fromStatus)||/چک/.test(e.note||``)||/چک/.test(e.reason||``));return[...n.length?n:e].sort((e,t)=>new Date(t.changedAt).getTime()-new Date(e.changedAt).getTime())}),J=u(()=>z.value.filter(e=>e.notes?.trim()).map(e=>({id:e.id,row:e.row,status:e.status,notes:e.notes,updatedAt:e.updatedAt})));async function Be(){let e=String(v.params.id);try{let[t,n]=await Promise.all([S.get(e),p.listByOrder(e)]);R.value=t,z.value=n,n.length===1&&(V.value=n[0].id)}catch(e){I.error(e instanceof o?e.message:`بارگذاری چک‌ها انجام نشد.`)}}ne(()=>{Be()});function Ve(){F.push(`/orders`)}function Y(e){return e===`approved`?`check_approved`:e===`rejected`?`check_rejected`:`pending_check_review`}function He(e){return e?e===`customer`?`مشتری`:e.startsWith(`admin:`)?`ادمین`:e:`—`}function X(e){if(!e)return`—`;try{return new Intl.DateTimeFormat(`fa-IR`,{dateStyle:`medium`,timeStyle:`short`}).format(new Date(e))}catch{return e.slice(0,16).replace(`T`,` `)}}function Ue(e){return[e.ownerFirstName,e.ownerLastName].filter(Boolean).join(` `)}function Z(e){return[{label:`بانک`,value:e.bankName},{label:`شعبه`,value:e.branchName},{label:`شناسه صیادی`,value:e.sayadId,ltr:!0},{label:`شماره چک`,value:e.checkNumber,ltr:!0},{label:`صاحب چک`,value:Ue(e)},{label:`کد ملی`,value:e.ownerNationalId,ltr:!0},{label:`یادداشت`,value:e.notes}].filter(e=>!!e.value?.trim())}function We(e){V.value=V.value===e.id?null:e.id}async function Q(e,t){B.value=e.id;try{let n=await p.updateStatus(e.id,{status:t}),r=z.value.findIndex(t=>t.id===e.id);return r!==-1&&(z.value[r]=n),R.value=await S.get(String(v.params.id)),!0}catch(e){return I.error(e instanceof o?e.message:`به‌روزرسانی وضعیت چک انجام نشد.`),!1}finally{B.value=null}}async function $(e,t){if(t!==`approved`&&t!==`rejected`)return;let n=m(e.amount);await a(t===`approved`?{title:`تأیید چک`,message:`آیا از تأیید چک ردیف ${e.row} به مبلغ ${n} مطمئن هستید؟`,tone:`primary`,confirmLabel:`تأیید چک`,cancelLabel:`انصراف`}:{title:`رد چک`,message:`آیا از رد چک ردیف ${e.row} به مبلغ ${n} مطمئن هستید؟`,tone:`danger`,confirmLabel:`رد چک`,cancelLabel:`انصراف`})&&await Q(e,t)&&I.success(t===`approved`?`چک تأیید شد.`:`چک رد شد.`)}async function Ge(){let e=W.value;if(!e.length){I.error(`چکی برای تأیید وجود ندارد.`);return}if(await a({title:`تأیید همه چک‌ها`,message:`آیا از تأیید ${e.length} چک در انتظار بررسی مطمئن هستید؟`,tone:`primary`,confirmLabel:`تأیید همه`,cancelLabel:`انصراف`})){for(let t of e)if(!await Q(t,`approved`))return;I.success(`همه چک‌های در انتظار تأیید شدند.`)}}async function Ke(){if(!(!R.value||K.value)&&await a({title:`تأیید نهایی سفارش`,message:`با تأیید نهایی، سفارش از مرحله بررسی چک خارج می‌شود و وارد آماده‌سازی می‌گردد. ادامه می‌دهید؟`,tone:`primary`,confirmLabel:`تأیید نهایی`,cancelLabel:`انصراف`})){K.value=!0;try{let e=await S.updateStatus(R.value.id,{status:`final_approved`,note:`تأیید نهایی پس از تأیید همه چک‌ها`});R.value=e,I.success(`سفارش تأیید نهایی شد.`)}catch(e){I.error(e instanceof o?e.message:`تأیید نهایی انجام نشد.`)}finally{K.value=!1}}}return(t,n)=>(f(),e(`div`,ae,[l(`div`,oe,[n[5]||=l(`div`,null,[l(`h1`,{class:`admin-page-header__title`},`مدیریت چک‌های سفارش`)],-1),U.value?(f(),e(`div`,se,[h(T,{status:U.value.status},null,8,[`status`])])):s(``,!0)]),l(`div`,ce,[l(`div`,le,[n[6]||=l(`span`,null,`تعداد`,-1),l(`strong`,null,c(z.value.length),1)]),l(`div`,ue,[n[7]||=l(`span`,null,`راس`,-1),l(`strong`,null,c(R.value?.checkRassDays??`—`)+` روز`,1)]),l(`div`,de,[n[8]||=l(`span`,null,`مجموع چک`,-1),l(`strong`,null,c(C(m)(Re.value)),1)]),l(`div`,fe,[n[9]||=l(`span`,null,`مبلغ سفارش`,-1),l(`strong`,null,c(U.value?.totalAmount?C(m)(U.value.totalAmount):`—`),1)])]),l(`div`,pe,[l(`button`,{type:`button`,class:d([`admin-tab`,{active:L.value===`info`}]),onClick:n[0]||=e=>L.value=`info`},` چک‌ها (`+c(z.value.length)+`) `,3),l(`button`,{type:`button`,class:d([`admin-tab`,{active:L.value===`history`}]),onClick:n[1]||=e=>L.value=`history`},` تاریخچه `,2)]),L.value===`info`?(f(),e(g,{key:0},[z.value.length?(f(),e(`div`,he,[(f(!0),e(g,null,b(z.value,t=>(f(),e(`div`,{key:t.id,class:d([`check-row`,{open:V.value===t.id}])},[l(`button`,{type:`button`,class:`check-row__main`,onClick:e=>We(t)},[l(`span`,_e,c(V.value===t.id?`▾`:`◂`),1),t.frontImage||t.backImage?(f(),e(`span`,{key:0,class:`check-row__thumb`,onClick:i(e=>H.value=t.frontImage||t.backImage,[`stop`])},[l(`img`,{src:t.frontImage||t.backImage,alt:``},null,8,ye)],8,ve)):(f(),e(`span`,be,`بدون عکس`)),l(`span`,E,[l(`strong`,null,`چک `+c(t.row),1),l(`small`,null,[y(c(C(m)(t.amount))+` `,1),t.bankName?(f(),e(g,{key:0},[y(` · `+c(t.bankName),1)],64)):s(``,!0),y(` · `+c(C(_)(t.dueDate)),1)])]),h(T,{status:Y(t.status)},null,8,[`status`])],8,ge),l(`div`,{class:`check-row__actions`,onClick:n[2]||=i(()=>{},[`stop`])},[t.status===`pending_review`?(f(),e(g,{key:0},[l(`button`,{type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:B.value===t.id,onClick:e=>$(t,`approved`)},` تأیید `,8,D),l(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:B.value===t.id,onClick:e=>$(t,`rejected`)},` رد `,8,O)],64)):s(``,!0)]),V.value===t.id?(f(),e(`div`,k,[Z(t).length?(f(),e(`div`,A,[(f(!0),e(g,null,b(Z(t),t=>(f(),e(`div`,{key:t.label,class:`check-row__field`},[l(`span`,null,c(t.label),1),l(`strong`,{dir:t.ltr?`ltr`:void 0},c(t.value),9,j)]))),128))])):(f(),e(`p`,M,`جزئیات متنی بیشتری ثبت نشده است.`)),l(`div`,N,[t.frontImage?(f(),e(`button`,{key:0,type:`button`,class:`check-row__photo`,onClick:e=>H.value=t.frontImage},[l(`img`,{src:t.frontImage,alt:`روی چک`},null,8,Se),n[10]||=l(`span`,null,`روی`,-1)],8,xe)):s(``,!0),t.backImage?(f(),e(`button`,{key:1,type:`button`,class:`check-row__photo`,onClick:e=>H.value=t.backImage},[l(`img`,{src:t.backImage,alt:`پشت چک`},null,8,we),n[11]||=l(`span`,null,`پشت`,-1)],8,Ce)):s(``,!0),!t.frontImage&&!t.backImage?(f(),e(`p`,Te,` تصویری ثبت نشده. `)):s(``,!0)])])):s(``,!0)],2))),128))])):(f(),e(`div`,me,` چکی برای این سفارش ثبت نشده است. `)),l(`div`,Ee,[l(`p`,De,[G.value?(f(),e(g,{key:0},[y(` همه چک‌ها تأیید شده‌اند. برای ادامه، تأیید نهایی سفارش را ثبت کنید. `)],64)):R.value?.checkRassDate?(f(),e(g,{key:1},[y(` راس: `+c(C(_)(R.value.checkRassDate)),1)],64)):(f(),e(g,{key:2},[y(`راس بر اساس تاریخ ثبت سفارش محاسبه می‌شود.`)],64))]),l(`div`,Oe,[G.value?(f(),e(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--success admin-btn--sm`,disabled:K.value,onClick:Ke},c(K.value?`در حال ثبت…`:`تأیید نهایی سفارش`),9,ke)):s(``,!0),W.value.length?(f(),e(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--success admin-btn--sm`,onClick:Ge},` تأیید همه چک‌ها `)):s(``,!0),l(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:Ve},` بازگشت `)])])],64)):(f(),e(g,{key:1},[!q.value.length&&!J.value.length?(f(),e(`div`,Ae,` هنوز تاریخچه‌ای ثبت نشده است. `)):(f(),e(`div`,je,[(f(!0),e(g,null,b(q.value,t=>(f(),e(`article`,{key:t.id,class:`admin-card checks-page__history-item`},[l(`div`,Me,[l(`strong`,null,c(t.fromStatus?C(w)(t.fromStatus):`—`)+` → `+c(C(w)(t.toStatus)),1),l(`span`,null,c(X(t.changedAt)),1)]),l(`p`,Ne,`توسط `+c(He(t.changedBy)),1),t.note?(f(),e(`p`,Pe,c(t.note),1)):s(``,!0),t.reason?(f(),e(`p`,P,`دلیل: `+c(t.reason),1)):s(``,!0)]))),128)),(f(!0),e(g,null,b(J.value,t=>(f(),e(`article`,{key:`note-${t.id}`,class:`admin-card checks-page__history-item`},[l(`div`,Fe,[l(`strong`,null,`یادداشت چک `+c(t.row),1),l(`span`,null,c(X(t.updatedAt)),1)]),h(T,{status:Y(t.status)},null,8,[`status`]),l(`p`,Ie,c(t.notes),1)]))),128))]))],64)),(f(),te(ee,{to:`body`},[H.value?(f(),e(`div`,{key:0,class:`checks-page__lightbox`,onClick:n[4]||=i(e=>H.value=null,[`self`])},[l(`button`,{type:`button`,class:`checks-page__lightbox-close`,onClick:n[3]||=e=>H.value=null},` بستن `),l(`img`,{src:H.value,alt:`پیش‌نمایش`},null,8,Le)])):s(``,!0)]))]))}}),[[`__scopeId`,`data-v-1cb3ca79`]]);export{F as default};