1 line
11 KiB
JavaScript
1 line
11 KiB
JavaScript
import{O as e,Ot as t,T as n,Tt as r,Z as i,a as ee,at as a,c as o,d as s,g as te,h as c,j as l,l as ne,m as u,r as d,s as f,t as p,u as m}from"./_plugin-vue_export-helper-OaxA6A2f.js";import{a as re,m as h,t as g}from"./http-Djf2pGxE.js";import{B as _,R as ie,S as ae,_ as v,a as y,i as b,o as oe,w as x,z as se}from"./index-CznUUXv3.js";import{c as S}from"./orderStatus-CYVblRJB.js";import{t as C}from"./StatusBadge-Cg2zTE2k.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=ie(),F=se(),I=re(),L=i(`info`),R=i(null),z=i([]),B=i(null),V=i(null),H=i(null),U=f(()=>R.value?ae(R.value):null),ze=f(()=>z.value.reduce((e,t)=>e+t.amount,0)),W=f(()=>z.value.filter(e=>e.status===`pending_review`)),Be=f(()=>z.value.length>0&&z.value.every(e=>e.status===`approved`)),G=f(()=>!Be.value||!R.value?!1:(R.value.rawStatus??R.value.status)===`checks_approved`),K=i(!1),q=f(()=>{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=f(()=>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([x.get(e),v.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:`بارگذاری چکها انجام نشد.`)}}n(()=>{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 v.updateStatus(e.id,{status:t}),r=z.value.findIndex(t=>t.id===e.id);return r!==-1&&(z.value[r]=n),R.value=await x.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=b(e.amount);await _(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 _({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 _({title:`تأیید نهایی سفارش`,message:`با تأیید نهایی، سفارش از مرحله بررسی چک خارج میشود و وارد آمادهسازی میگردد. ادامه میدهید؟`,tone:`primary`,confirmLabel:`تأیید نهایی`,cancelLabel:`انصراف`})){K.value=!0;try{let e=await x.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(n,i)=>(e(),s(`div`,ce,[o(`div`,le,[i[5]||=o(`div`,null,[o(`h1`,{class:`admin-page-header__title`},`مدیریت چکهای سفارش`)],-1),U.value?(e(),s(`div`,ue,[c(C,{status:U.value.status},null,8,[`status`])])):m(``,!0)]),o(`div`,de,[o(`div`,fe,[i[6]||=o(`span`,null,`تعداد`,-1),o(`strong`,null,t(z.value.length),1)]),o(`div`,pe,[i[7]||=o(`span`,null,`راس`,-1),o(`strong`,null,t(R.value?.checkRassDays??`—`)+` روز`,1)]),o(`div`,me,[i[8]||=o(`span`,null,`مجموع چک`,-1),o(`strong`,null,t(a(b)(ze.value)),1)]),o(`div`,he,[i[9]||=o(`span`,null,`مبلغ سفارش`,-1),o(`strong`,null,t(U.value?.totalAmount?a(b)(U.value.totalAmount):`—`),1)])]),o(`div`,ge,[o(`button`,{type:`button`,class:r([`admin-tab`,{active:L.value===`info`}]),onClick:i[0]||=e=>L.value=`info`},` چکها (`+t(z.value.length)+`) `,3),o(`button`,{type:`button`,class:r([`admin-tab`,{active:L.value===`history`}]),onClick:i[1]||=e=>L.value=`history`},` تاریخچه `,2)]),L.value===`info`?(e(),s(d,{key:0},[z.value.length?(e(),s(`div`,ve,[(e(!0),s(d,null,l(z.value,n=>(e(),s(`div`,{key:n.id,class:r([`check-row`,{open:V.value===n.id}])},[o(`button`,{type:`button`,class:`check-row__main`,onClick:e=>Ge(n)},[o(`span`,be,t(V.value===n.id?`▾`:`◂`),1),n.frontImage||n.backImage?(e(),s(`span`,{key:0,class:`check-row__thumb`,onClick:h(e=>H.value=n.frontImage||n.backImage,[`stop`])},[o(`img`,{src:n.frontImage||n.backImage,alt:``},null,8,T)],8,w)):(e(),s(`span`,E,`بدون عکس`)),o(`span`,D,[o(`strong`,null,`چک `+t(n.row),1),o(`small`,null,[u(t(a(b)(n.amount))+` `,1),n.bankName?(e(),s(d,{key:0},[u(` · `+t(n.bankName),1)],64)):m(``,!0),u(` · `+t(a(y)(n.dueDate)),1)])]),c(C,{status:Y(n.status)},null,8,[`status`])],8,ye),o(`div`,{class:`check-row__actions`,onClick:i[2]||=h(()=>{},[`stop`])},[n.status===`pending_review`?(e(),s(d,{key:0},[o(`button`,{type:`button`,class:`admin-btn admin-btn--outline-success admin-btn--xs`,disabled:B.value===n.id,onClick:e=>$(n,`approved`)},` تأیید `,8,O),o(`button`,{type:`button`,class:`admin-btn admin-btn--outline-danger admin-btn--xs`,disabled:B.value===n.id,onClick:e=>$(n,`rejected`)},` رد `,8,k)],64)):m(``,!0)]),V.value===n.id?(e(),s(`div`,A,[Z(n).length?(e(),s(`div`,j,[(e(!0),s(d,null,l(Z(n),n=>(e(),s(`div`,{key:n.label,class:`check-row__field`},[o(`span`,null,t(n.label),1),o(`strong`,{dir:n.ltr?`ltr`:void 0},t(n.value),9,M)]))),128))])):(e(),s(`p`,N,`جزئیات متنی بیشتری ثبت نشده است.`)),o(`div`,xe,[n.frontImage?(e(),s(`button`,{key:0,type:`button`,class:`check-row__photo`,onClick:e=>H.value=n.frontImage},[o(`img`,{src:n.frontImage,alt:`روی چک`},null,8,Ce),i[10]||=o(`span`,null,`روی`,-1)],8,Se)):m(``,!0),n.backImage?(e(),s(`button`,{key:1,type:`button`,class:`check-row__photo`,onClick:e=>H.value=n.backImage},[o(`img`,{src:n.backImage,alt:`پشت چک`},null,8,Te),i[11]||=o(`span`,null,`پشت`,-1)],8,we)):m(``,!0),!n.frontImage&&!n.backImage?(e(),s(`p`,Ee,` تصویری ثبت نشده. `)):m(``,!0)])])):m(``,!0)],2))),128))])):(e(),s(`div`,_e,` چکی برای این سفارش ثبت نشده است. `)),o(`div`,De,[o(`p`,Oe,[G.value?(e(),s(d,{key:0},[u(` همه چکها تأیید شدهاند. برای ادامه، تأیید نهایی سفارش را ثبت کنید. `)],64)):R.value?.checkRassDate?(e(),s(d,{key:1},[u(` راس: `+t(a(y)(R.value.checkRassDate)),1)],64)):(e(),s(d,{key:2},[u(`راس بر اساس تاریخ ثبت سفارش محاسبه میشود.`)],64))]),o(`div`,ke,[G.value?(e(),s(`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?(e(),s(`button`,{key:1,type:`button`,class:`admin-btn admin-btn--success admin-btn--sm`,onClick:Ke},` تأیید همه چکها `)):m(``,!0),o(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,onClick:He},` بازگشت `)])])],64)):(e(),s(d,{key:1},[!q.value.length&&!J.value.length?(e(),s(`div`,je,` هنوز تاریخچهای ثبت نشده است. `)):(e(),s(`div`,Me,[(e(!0),s(d,null,l(q.value,n=>(e(),s(`article`,{key:n.id,class:`admin-card checks-page__history-item`},[o(`div`,P,[o(`strong`,null,t(n.fromStatus?a(S)(n.fromStatus):`—`)+` → `+t(a(S)(n.toStatus)),1),o(`span`,null,t(X(n.changedAt)),1)]),o(`p`,Ne,`توسط `+t(Ue(n.changedBy)),1),n.note?(e(),s(`p`,Pe,t(n.note),1)):m(``,!0),n.reason?(e(),s(`p`,Fe,`دلیل: `+t(n.reason),1)):m(``,!0)]))),128)),(e(!0),s(d,null,l(J.value,n=>(e(),s(`article`,{key:`note-${n.id}`,class:`admin-card checks-page__history-item`},[o(`div`,Ie,[o(`strong`,null,`یادداشت چک `+t(n.row),1),o(`span`,null,t(X(n.updatedAt)),1)]),c(C,{status:Y(n.status)},null,8,[`status`]),o(`p`,Le,t(n.notes),1)]))),128))]))],64)),(e(),ne(ee,{to:`body`},[H.value?(e(),s(`div`,{key:0,class:`checks-page__lightbox`,onClick:i[4]||=h(e=>H.value=null,[`self`])},[o(`button`,{type:`button`,class:`checks-page__lightbox-close`,onClick:i[3]||=e=>H.value=null},` بستن `),o(`img`,{src:H.value,alt:`پیشنمایش`},null,8,Re)])):m(``,!0)]))]))}}),[[`__scopeId`,`data-v-af5e25db`]]);export{F as default}; |