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