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