1 line
14 KiB
JavaScript
1 line
14 KiB
JavaScript
import{D as e,E as t,Et as n,G as r,J as i,Kt as a,M as o,N as s,O as c,P as l,T as u,Xt as d,Z as f,b as p,et as m,g as h,st as g,t as _,vt as v,w as y}from"./_plugin-vue_export-helper-Bo3WtfwJ.js";import{t as b,u as x}from"./BasicIcon-BXxbbWA_.js";import{a as S,o as C}from"./format-C72AoJ2H.js";import{A as w,D as T,O as E,d as D,n as O,o as k,t as A,x as ee}from"./index-COC09WBR.js";import{t as te}from"./EmptyState-D-8eFOUi.js";import{t as j}from"./IconChevronBack-DfGoZJJk.js";import{t as M}from"./FormErrorBanner-DI5hhxpk.js";import{t as N}from"./IconDiamond-R4uguqMC.js";import{t as P}from"./CheckoutStepper-Dw7-dJI5.js";import{t as F}from"./IconClipboardEmpty-BdL7YkiR.js";import{t as I}from"./IconLayoutGrid-DTCDTb_O.js";function L(){let e=h(),t=w(),n=D(),i=v(!1),a=v(!1),o=v(``),s=y(()=>t.activeCart?.items??[]),c=y(()=>s.value.length===0),l=y(()=>t.companyNamesLabel||t.activeCart?.companyName||``),u=y(()=>t.companySummaries);async function d(e){let n=s.value.find(t=>t.id===e);await A({title:`حذف از سبد`,message:n?`آیا از حذف «${n.productName}» از سبد خرید مطمئن هستید؟`:`آیا از حذف این آیتم از سبد خرید مطمئن هستید؟`,confirmLabel:`حذف`,cancelLabel:`انصراف`,tone:`danger`})&&t.removeItem(e)}async function f(){if(!(!t.activeCart||s.value.length===0||a.value)){a.value=!0,o.value=``;try{if(await t.hydrate(),!t.activeCart?.items.length){o.value=`سبد خرید خالی است یا با سرور همگام نشد.`;return}let r=await n.submitOrder(t.activeCart);await t.hydrate(),e.replace(`/orders/${r.id}/success`)}catch(e){o.value=e instanceof Error?e.message:`ثبت سفارش ناموفق بود.`,await t.hydrate()}finally{a.value=!1}}}function p(){if(s.value.length!==0){if(t.isFull){i.value=!0;return}f()}}function m(){i.value=!1,f()}async function g(){await t.createNewCartForSameCompany(),i.value=!1,e.push(`/categories`)}return r(()=>{t.ensureActiveCartForCartPage()}),{cartStore:t,items:s,isEmpty:c,companyName:l,companySummaries:u,showFullDialog:i,submitting:a,submitError:o,removeItem:d,proceedToCheckout:p,proceedAnyway:m,createNewInvoice:g}}var R=l({__name:`IconTrash`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(e){return(n,r)=>(i(),t(b,{icon:`vuesax-linear:trash`,size:e.size,"stroke-width":e.strokeWidth,color:e.color},null,8,[`size`,`stroke-width`,`color`]))}}),z={class:`cart-mobile-page`},B={class:`cart-mobile-page__nav`},V={type:`button`,class:`nav-btn nav-btn--ghost`,"aria-hidden":`true`,tabindex:`-1`},H={key:0,class:`cart-mobile-page__body`},U={key:0,class:`cart-mobile-page__meta`},W={class:`cart-mobile-page__scroll`},G={class:`cart-mobile-table`},K={class:`col-product`},q={class:`col-meterage`},J={class:`col-delete`},Y=[`onClick`],X={class:`cart-mobile-page__footer`},Z={class:`cart-mobile-summary`},Q={class:`cart-mobile-summary__row`},ne={class:`cart-mobile-summary__cap`},re={key:1,class:`cart-mobile-summary__row`},ie={class:`cart-mobile-summary__row`},ae=_(l({__name:`MobileCartPage`,props:{items:{},companyName:{},companySummaries:{},totalMeterage:{},maxMeterage:{},remainingCapacity:{},isEmpty:{type:Boolean},submitting:{type:Boolean}},emits:[`back`,`remove`,`checkout`,`selectCompany`],setup(r,{emit:a}){let l=a;return(a,m)=>(i(),c(`div`,z,[u(`header`,B,[u(`button`,{type:`button`,class:`nav-btn`,"aria-label":`بازگشت`,onClick:m[0]||=e=>l(`back`)},[s(j,{size:20})]),m[3]||=u(`h1`,{class:`cart-mobile-page__title`},`سبد خرید`,-1),u(`button`,V,[s(j,{size:18,class:`nav-btn__flip`})])]),r.isEmpty?(i(),t(te,{key:1,variant:`cart`,message:`از دستهبندی یا کالیته محصول را انتخاب کنید`},{default:g(()=>[s(O,{onClick:m[2]||=e=>l(`selectCompany`)},{default:g(()=>[...m[10]||=[o(`مشاهده محصولات`,-1)]]),_:1})]),_:1})):(i(),c(`div`,H,[r.companyName?(i(),c(`p`,U,` تأمینکننده: `+d(r.companyName),1)):e(``,!0),u(`div`,W,[u(`div`,G,[m[4]||=u(`div`,{class:`cart-mobile-table__head`},[u(`span`,null,`محصول`),u(`span`,null,`متراژ (متر)`),u(`span`,null,`حذف`)],-1),(i(!0),c(p,null,f(r.items,e=>(i(),c(`div`,{key:e.id,class:`cart-mobile-table__row`},[u(`div`,K,[u(`strong`,null,d(e.productName),1),u(`span`,null,`کد: `+d(e.productCode),1)]),u(`div`,q,d(n(C)(e.meterage)),1),u(`div`,J,[u(`button`,{type:`button`,"aria-label":`حذف`,onClick:t=>l(`remove`,e.id)},[s(R,{size:20})],8,Y)])]))),128))])]),u(`div`,X,[u(`div`,Z,[u(`div`,Q,[m[5]||=u(`span`,null,`جمع متراژ کل`,-1),u(`strong`,null,d(n(S)(r.totalMeterage)),1)]),r.companySummaries?.length?(i(!0),c(p,{key:0},f(r.companySummaries,e=>(i(),c(`div`,{key:e.companyId,class:`cart-mobile-summary__row cart-mobile-summary__row--sub`},[u(`span`,null,d(e.companyName),1),u(`strong`,null,[o(d(n(S)(e.meterage))+` `,1),u(`span`,ne,`/ `+d(n(S)(e.maxMeterage)),1)])]))),128)):(i(),c(`div`,re,[m[6]||=u(`span`,null,`حداکثر مجاز`,-1),u(`strong`,null,d(n(S)(r.maxMeterage)),1)])),u(`div`,ie,[m[7]||=u(`span`,null,`باقی مانده`,-1),u(`strong`,null,d(n(S)(r.remainingCapacity)),1)])]),m[9]||=u(`p`,{class:`cart-mobile-page__hint`},` پس از ثبت سفارش، کارشناسان قیمتگذاری میکنند و فاکتور برای شما صادر میشود. `,-1),s(O,{block:``,loading:r.submitting,onClick:m[1]||=e=>l(`checkout`)},{default:g(()=>[...m[8]||=[o(`ثبت پیشسفارش`,-1)]]),_:1},8,[`loading`])])]))]))}}),[[`__scopeId`,`data-v-346cdc9a`]]),oe=l({__name:`IconLightbulb`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(e){return(n,r)=>(i(),t(b,{icon:`vuesax-linear:lamp-on`,size:e.size,"stroke-width":e.strokeWidth,color:e.color},null,8,[`size`,`stroke-width`,`color`]))}}),se={class:`desktop-page cart-desktop-page`},ce={class:`cart-desktop-page__head`},le={key:0,class:`cart-desktop-page__subtitle`},ue={class:`cart-desktop-page__layout`},de={class:`cart-desktop-page__main`},fe={key:0,class:`cart-empty-card`},pe={class:`cart-empty-card__visual`,"aria-hidden":`true`},me={class:`cart-empty-card__circle`},he={class:`cart-empty-card__actions`},ge={key:1,class:`cart-items-card`},_e={class:`cart-items-card__scroll`},ve={class:`cart-items-table`},ye={class:`cart-items-table__name`},be=[`onClick`],xe={class:`cart-desktop-page__sidebar`},Se={class:`cart-summary-card`},Ce={class:`cart-summary-card__title`},we={class:`cart-summary-card__title-icon`,"aria-hidden":`true`},Te={class:`cart-summary-card__rows`},Ee={class:`cart-summary-card__row`},De={class:`cart-summary-card__row-label`},Oe={class:`cart-summary-card__row`},ke={class:`cart-summary-card__row-label`},Ae={class:`cart-summary-card__row-label`},je={class:`cart-summary-card__cap`},Me={class:`cart-summary-card__row cart-summary-card__row--hint`},Ne={class:`cart-summary-card__row-label`},Pe=[`disabled`],$={class:`cart-guide-card`},Fe={class:`cart-guide-card__title`},Ie={class:`cart-guide-card__title-icon`,"aria-hidden":`true`},Le={class:`cart-guide-card__text`},Re={class:`cart-quick-nav`,"aria-label":`دسترسی سریع`},ze=[`onClick`],Be={class:`cart-quick-nav__body`},Ve={class:`cart-quick-nav__title`},He={class:`cart-quick-nav__desc`},Ue=_(l({__name:`DesktopCartPage`,props:{items:{},companyName:{},companySummaries:{},totalMeterage:{},maxMeterage:{},remainingCapacity:{},isEmpty:{type:Boolean},submitting:{type:Boolean}},emits:[`remove`,`checkout`,`selectCompany`,`back`],setup(r,{emit:l}){let g=l,_=h(),v=[{title:`کالیتهها`,desc:`مرور کالیته و طرحها`,icon:I,tone:`blue`,action:()=>_.push(`/catalogs`)},{title:`دستهبندی`,desc:`مشاهده محصولات بر اساس کاربرد`,icon:N,tone:`green`,action:()=>_.push(`/categories`)},{title:`سفارشهای من`,desc:`پیگیری وضعیت سفارشها`,icon:T,tone:`blue`,action:()=>_.push(`/orders`)}];return(l,h)=>(i(),c(`div`,se,[s(P,{"current-step":1}),u(`header`,ce,[h[3]||=u(`h1`,{class:`cart-desktop-page__title`},`سبد خرید`,-1),r.companyName?(i(),c(`p`,le,` تأمینکننده: `+d(r.companyName),1)):e(``,!0)]),u(`div`,ue,[u(`section`,de,[r.isEmpty?(i(),c(`div`,fe,[u(`div`,pe,[h[4]||=u(`span`,{class:`cart-empty-card__spark cart-empty-card__spark--1`},`+`,-1),h[5]||=u(`span`,{class:`cart-empty-card__spark cart-empty-card__spark--2`},`·`,-1),u(`span`,me,[s(E,{size:40})]),h[6]||=u(`span`,{class:`cart-empty-card__spark cart-empty-card__spark--3`},`·`,-1)]),h[9]||=u(`h2`,{class:`cart-empty-card__heading`},`سبد خرید شما خالی است`,-1),h[10]||=u(`p`,{class:`cart-empty-card__text`},` از دستهبندی یا کالیته محصول را انتخاب کنید، جزئیات را ببینید و به سبد اضافه کنید. `,-1),u(`div`,he,[u(`button`,{type:`button`,class:`cart-btn cart-btn--primary`,onClick:h[0]||=e=>g(`selectCompany`)},[s(N,{size:16}),h[7]||=o(` دستهبندی محصولات `,-1)]),u(`button`,{type:`button`,class:`cart-btn cart-btn--outline`,onClick:h[1]||=e=>n(_).push(`/catalogs`)},[s(I,{size:18}),h[8]||=o(` مشاهده کالیتهها `,-1)])])])):(i(),c(`div`,ge,[u(`div`,_e,[u(`table`,ve,[h[11]||=u(`thead`,null,[u(`tr`,null,[u(`th`,{scope:`col`},`محصول`),u(`th`,{scope:`col`},`کد`),u(`th`,{scope:`col`},`متراژ (متر)`),u(`th`,{scope:`col`},`حذف`)])],-1),u(`tbody`,null,[(i(!0),c(p,null,f(r.items,e=>(i(),c(`tr`,{key:e.id},[u(`td`,null,[u(`strong`,ye,d(e.productName),1)]),u(`td`,null,d(e.productCode),1),u(`td`,null,d(n(C)(e.meterage)),1),u(`td`,null,[u(`button`,{type:`button`,class:`cart-items-table__delete`,"aria-label":`حذف`,onClick:t=>g(`remove`,e.id)},[s(R,{size:18})],8,be)])]))),128))])])])]))]),u(`aside`,xe,[u(`div`,Se,[u(`h2`,Ce,[u(`span`,we,[s(F,{size:22})]),h[12]||=o(` خلاصه سفارش `,-1)]),u(`div`,Te,[u(`div`,Ee,[u(`span`,De,[s(I,{size:16}),h[13]||=o(` تعداد آیتمها `,-1)]),u(`strong`,null,d(n(C)(r.items.length)),1)]),u(`div`,Oe,[u(`span`,ke,[s(N,{size:16}),h[14]||=o(` متراژ کل `,-1)]),u(`strong`,null,d(n(S)(r.totalMeterage)),1)]),(i(!0),c(p,null,f(r.companySummaries??[],e=>(i(),c(`div`,{key:e.companyId,class:`cart-summary-card__row cart-summary-card__row--sub`},[u(`span`,Ae,d(e.companyName),1),u(`strong`,null,[o(d(n(S)(e.meterage))+` `,1),u(`span`,je,`/ `+d(n(S)(e.maxMeterage)),1)])]))),128)),u(`div`,Me,[u(`span`,Ne,[s(T,{size:16}),h[15]||=o(` مبلغ فاکتور `,-1)]),h[16]||=u(`span`,{class:`cart-summary-card__hint-value`},` پس از قیمتگذاری مدیریت `,-1)])]),u(`button`,{type:`button`,class:`cart-summary-card__cta`,disabled:r.isEmpty||r.submitting,onClick:h[2]||=e=>g(`checkout`)},[s(k,{size:16}),o(` `+d(r.submitting?`در حال ثبت…`:`ثبت پیشسفارش`),1)],8,Pe),h[17]||=u(`p`,{class:`cart-summary-card__note`},` پس از ثبت سفارش، مدیریت قیمتگذاری میکند و فاکتور صادر میشود؛ سپس روش تسویه را انتخاب میکنید. `,-1)]),u(`div`,$,[u(`h3`,Fe,[u(`span`,Ie,[s(oe,{size:18})]),h[18]||=o(` راهنمای گام بعدی `,-1)]),u(`p`,Le,[h[19]||=o(` محصولات موردنظر را به سبد اضافه کنید، متراژ کل را بررسی کنید و «ثبت پیشسفارش» را بزنید. `,-1),r.isEmpty?e(``,!0):(i(),c(p,{key:0},[o(` سقف مجاز: `+d(n(S)(r.maxMeterage))+` — باقیمانده: `+d(n(S)(r.remainingCapacity))+`. `,1)],64)),h[20]||=o(` پس از قیمتگذاری، از صفحه سفارش روش تسویه را انتخاب میکنید. `,-1)])])])]),u(`nav`,Re,[(i(),c(p,null,f(v,e=>u(`button`,{key:e.title,type:`button`,class:`cart-quick-nav__item`,onClick:t=>e.action()},[u(`span`,{class:a([`cart-quick-nav__icon`,`cart-quick-nav__icon--${e.tone}`])},[(i(),t(m(e.icon),{size:20}))],2),u(`span`,Be,[u(`strong`,Ve,d(e.title),1),u(`span`,He,d(e.desc),1)]),s(k,{size:16,class:`cart-quick-nav__chevron`,"aria-hidden":`true`})],8,ze)),64))]),h[21]||=u(`p`,{class:`cart-desktop-page__footer`},`پارس بافت — سامانه سفارشگذاری پارچه`,-1)]))}}),[[`__scopeId`,`data-v-e944f7f3`]]),We={class:`cart-view`},Ge={class:`dialog card`},Ke={class:`dialog-actions`},qe=_(l({__name:`CartView`,setup(r){let a=h(),{cartStore:l,items:d,isEmpty:f,companyName:p,companySummaries:m,showFullDialog:_,submitting:v,submitError:y,removeItem:b,proceedToCheckout:S,proceedAnyway:C,createNewInvoice:w}=L();function T(){a.push(ee)}return(r,h)=>(i(),c(`div`,We,[n(y)?(i(),t(M,{key:0,message:n(y),class:`cart-view__error`},null,8,[`message`])):e(``,!0),s(ae,{class:`mobile-only`,items:n(d),"company-name":n(p),"company-summaries":n(m),"total-meterage":n(l).totalMeterage,"max-meterage":n(l).maxMeterage,"remaining-capacity":n(l).remainingCapacity,"is-empty":n(f),submitting:n(v),onBack:h[0]||=e=>n(a).push(`/`),onRemove:n(b),onCheckout:n(S),onSelectCompany:h[1]||=e=>T()},null,8,[`items`,`company-name`,`company-summaries`,`total-meterage`,`max-meterage`,`remaining-capacity`,`is-empty`,`submitting`,`onRemove`,`onCheckout`]),s(Ue,{class:`desktop-only`,items:n(d),"company-name":n(p),"company-summaries":n(m),"total-meterage":n(l).totalMeterage,"max-meterage":n(l).maxMeterage,"remaining-capacity":n(l).remainingCapacity,"is-empty":n(f),submitting:n(v),onRemove:n(b),onCheckout:n(S),onSelectCompany:h[2]||=e=>T(),onBack:T},null,8,[`items`,`company-name`,`company-summaries`,`total-meterage`,`max-meterage`,`remaining-capacity`,`is-empty`,`submitting`,`onRemove`,`onCheckout`]),n(_)?(i(),c(`div`,{key:1,class:`dialog-overlay`,onClick:h[3]||=x(e=>_.value=!1,[`self`])},[u(`div`,Ge,[h[6]||=u(`h3`,null,`سقف متراژ تکمیل شد`,-1),h[7]||=u(`p`,{class:`text-sm`},` سقف متراژ مجاز این سفارش پر شده است. میتوانید همین پیشسفارش را ثبت کنید یا سبد را خالی کرده و سفارش جدید بسازید. `,-1),u(`div`,Ke,[s(O,{variant:`outline`,loading:n(v),onClick:n(C)},{default:g(()=>[...h[4]||=[o(` ثبت همین فاکتور `,-1)]]),_:1},8,[`loading`,`onClick`]),s(O,{onClick:n(w)},{default:g(()=>[...h[5]||=[o(`فاکتور جدید`,-1)]]),_:1},8,[`onClick`])])])])):e(``,!0)]))}}),[[`__scopeId`,`data-v-2f81af33`]]);export{qe as default}; |