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