1 line
17 KiB
JavaScript
1 line
17 KiB
JavaScript
import{At as e,D as t,F as n,G as r,M as i,Nt as a,Pt as o,U as s,_ as c,c as l,d as u,f as d,g as f,i as p,k as m,l as h,nt as g,o as ee,t as _,u as v,ut as y,v as b}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{u as x}from"./BasicIcon-ba1FsUKx.js";import{o as S}from"./format-C72AoJ2H.js";import{t as C}from"./catalog-DWpH1dVc.js";import{t as w}from"./cart-F5Rptvi1.js";import{t as T}from"./IconCart-f4izyxj_.js";import{C as E,d as D,r as O,w as k}from"./index-CON313Q2.js";import{t as te}from"./IconChevronBack-DytWz6TD.js";import{t as ne}from"./PageSkeleton-DYdjm4l9.js";import{a as re,o as ie,t as ae}from"./crm-CgnSby61.js";import{n as oe,r as se,t as ce}from"./IconWeave-CTypFxhM.js";import{t as le}from"./useGoBack-B1rclh3v.js";import{t as ue}from"./useTouchSwipe-C8fUyAcQ.js";import{t as de}from"./IconHeart-CvzbNH_T.js";import{n as fe,t as pe}from"./AddressCompletionModal-BuNBCK1j.js";import{n as A,r as me,t as he}from"./productAvailability-B5nVr_sJ.js";var ge=[`width`,`height`],j=[`stroke`],M=[`stroke`],N=[`stroke`],_e=b({__name:`IconShare`,props:{size:{default:20},color:{default:`#9AA3AF`}},setup(e){return(t,n)=>(i(),d(`svg`,{width:e.size,height:e.size,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[h(`path`,{d:`M12 3.5v11`,stroke:e.color,"stroke-width":`1.5`,"stroke-linecap":`round`},null,8,j),h(`path`,{d:`M8.25 7 12 3.25 15.75 7`,stroke:e.color,"stroke-width":`1.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,8,M),h(`path`,{d:`M6.5 11.5v7.25c0 .97.78 1.75 1.75 1.75h7.5c.97 0 1.75-.78 1.75-1.75V11.5`,stroke:e.color,"stroke-width":`1.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,8,N)],8,ge))}}),P={class:`dialog card product-order-modal`},F={class:`product-order-modal__head`},I={class:`product-order-modal__rows`},L={class:`product-order-row__color`},R=[`title`],z={key:0,class:`product-order-row__label`},B={class:`product-order-row__stepper`},V=[`disabled`,`onClick`],H={class:`product-order-row__qty`},U=[`disabled`,`onClick`],W={key:0,class:`product-order-modal__error`},G={class:`product-order-modal__footer`},K={class:`product-order-modal__prices`},q={key:0,class:`product-order-modal__price`},J={class:`product-order-modal__price`},Y={key:0},X={key:1},Z={key:2},Q={key:0,class:`product-order-modal__hint`},ve=_(b({__name:`ProductOrderModal`,props:{open:{type:Boolean},product:{},rollMeters:{},minRolls:{},basePrice:{},loading:{type:Boolean},error:{}},emits:[`close`,`submit`],setup(e,{emit:m}){let _=e,b=m,C=g([]);s(()=>[_.open,_.product?.colors.length],([e])=>{!e||!_.product||(C.value=_.product.colors.map(()=>0))});let w=l(()=>C.value.reduce((e,t)=>e+(t>0?t:0),0)),T=l(()=>w.value*_.rollMeters),E=l(()=>!_.basePrice||T.value<=0?null:_.basePrice*T.value);function D(e){e.key===`Escape`&&_.open&&b(`close`)}s(()=>_.open,e=>{document.body.style.overflow=e?`hidden`:``,e?window.addEventListener(`keydown`,D):window.removeEventListener(`keydown`,D)},{immediate:!0}),t(()=>{document.body.style.overflow=``,window.removeEventListener(`keydown`,D)});function k(e,t){let n=[...C.value];n[e]=Math.max(0,(n[e]??0)+t),C.value=n}function te(){b(`submit`,[...C.value])}return(t,s)=>(i(),v(ee,{to:`body`},[e.open&&e.product?(i(),d(`div`,{key:0,class:`dialog-overlay product-order-overlay`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`product-order-title`,onClick:s[1]||=x(e=>b(`close`),[`self`])},[h(`div`,P,[h(`header`,F,[s[2]||=h(`h3`,{id:`product-order-title`,class:`product-order-modal__title`},`ثبت سفارش`,-1),h(`button`,{type:`button`,class:`product-order-modal__close`,"aria-label":`بستن`,onClick:s[0]||=e=>b(`close`)},` × `)]),s[5]||=h(`div`,{class:`product-order-modal__table-head`,"aria-hidden":`true`},[h(`span`,null,`رنگ`),h(`span`,null,`طاقه`)],-1),h(`ul`,I,[(i(!0),d(p,null,n(e.product.colors,(t,n)=>(i(),d(`li`,{key:n,class:`product-order-row`},[h(`div`,L,[h(`span`,{class:`product-order-row__swatch`,style:a(y(A)(t,y(me)(e.product.colorImages,e.product.colorVariantImages,n))),title:t},null,12,R),t?(i(),d(`span`,z,o(t),1)):u(``,!0)]),h(`div`,B,[h(`button`,{type:`button`,class:`product-order-row__btn`,"aria-label":`کاهش`,disabled:e.loading||(C.value[n]??0)<=0,onClick:e=>k(n,-1)},` − `,8,V),h(`span`,H,o(y(S)(C.value[n]??0)),1),h(`button`,{type:`button`,class:`product-order-row__btn`,"aria-label":`افزایش`,disabled:e.loading,onClick:e=>k(n,1)},` + `,8,U)])]))),128))]),e.error?(i(),d(`p`,W,o(e.error),1)):u(``,!0),h(`footer`,G,[h(`div`,K,[e.basePrice&&e.basePrice>0?(i(),d(`div`,q,[s[3]||=h(`span`,null,`قیمت هر متر`,-1),h(`strong`,null,o(y(S)(e.basePrice))+` تومان`,1)])):u(``,!0),h(`div`,J,[s[4]||=h(`span`,null,`جمع تقریبی`,-1),E.value==null?w.value>0&&(!e.basePrice||e.basePrice<=0)?(i(),d(`strong`,X,o(y(S)(T.value))+` متر `,1)):(i(),d(`strong`,Z,`—`)):(i(),d(`strong`,Y,o(y(S)(E.value))+` تومان`,1))])]),e.minRolls>0?(i(),d(`p`,Q,` حداقل سفارش: `+o(y(S)(e.minRolls))+` طاقه `,1)):u(``,!0),c(O,{class:`product-order-modal__submit`,disabled:e.loading,onClick:te},{default:r(()=>[f(o(e.loading?`در حال ثبت...`:`ثبت`),1)]),_:1},8,[`disabled`])])])])):u(``,!0)]))}}),[[`__scopeId`,`data-v-5c5793fb`]]),ye={key:0,class:`page product-detail product-page`},be={class:`pd-header mobile-only`},xe={class:`pd-header__actions`},Se=[`aria-label`,`aria-pressed`],Ce={class:`desktop-page__head desktop-only pd-desk-head`},we={class:`desktop-page__title`},Te={class:`desktop-page__subtitle`},Ee={key:0,class:`pd-stock-badge`},De={class:`pd-desk-head__actions`},Oe=[`aria-label`,`aria-pressed`],ke={class:`page__scroll pd-scroll product-page__scroll`},Ae={class:`product-page__layout`},je={class:`product-page__main`},Me={class:`gallery`},Ne={key:0,class:`gallery__dots`,role:`tablist`,"aria-label":`تصاویر عمومی محصول`},Pe=[`aria-label`,`aria-selected`,`onClick`],Fe={key:0,class:`gallery__thumbs`},Ie=[`onClick`],Le={class:`pd-body`},Re={class:`title-row`},ze={key:0,class:`pd-stock-badge`},Be={key:1,class:`new-badge`},Ve={class:`code`},He={class:`specs`},Ue={class:`spec-cell`},We={class:`spec-icon`,"aria-hidden":`true`},Ge={class:`spec-cell`},Ke={class:`spec-cell`},qe={class:`spec-icon`,"aria-hidden":`true`},Je={class:`spec-cell`},Ye={class:`spec-icon`,"aria-hidden":`true`},Xe={key:0,class:`specs-extra`},Ze={class:`specs-extra__text`},Qe={class:`pd-section pd-section--boxed`},$e={class:`section-head`},et={class:`colors`},tt=[`onClick`],nt={key:0,class:`variant-images`,role:`list`},rt={class:`pd-section`},it={class:`tags`,role:`list`},at=[`onClick`],ot={class:`pd-section`},st={class:`roll-field`},ct={class:`product-page__sidebar desktop-only`},lt={class:`cart-summary-panel`},ut={class:`cart-summary-panel__row`},dt={class:`cart-summary-panel__row`},ft={key:0,class:`cart-summary-panel__unavailable`},pt={key:1,class:`cart-summary-panel__btn`},mt=[`disabled`],ht={class:`pd-footer mobile-only sticky-footer`},gt={key:0,class:`pd-footer__primary`},_t={key:1,class:`pd-footer__primary`},vt={class:`min-note`},yt=[`disabled`],bt={key:1,class:`page empty`},xt={key:2,class:`page empty`},St=_(b({__name:`ProductDetailView`,setup(t){let r={suit:`پارچه کتشلواری`,trousers:`پارچه شلواری`,shirt:`پارچه پیراهنی`},ee={summer:`پارچه تابستانه`,winter:`پارچه زمستانه`,all_season:`پارچه چهارفصل`},_=E(),v=k(),{goBack:b}=le(`/products`),x=ae(),O=D(),ge=w(),j=C(),M=l(()=>String(_.query.id??``)),N=g(null),P=g(!0),F=g(null),I=g(0),L=g(0),R=g(1),z=g(!1),B=g(!1),V=g(!1),H=g(``),{requesting:U,addressModalOpen:W,addressError:G,requestCatalog:K,submitAddressAndRequest:q,closeAddressModal:J}=fe(),Y=l(()=>N.value?.rollMeters??50),X=l(()=>N.value?he(N.value):!1),Z=l(()=>(N.value?.imageUrls??[]).filter(e=>typeof e==`string`&&e.trim().length>0)),Q=l(()=>Z.value[L.value]??``);function St(e){let t=Z.value.length;t&&(L.value=(e%t+t)%t)}let{onTouchStart:Ct,onTouchEnd:wt}=ue({enabled:()=>Z.value.length>1,onSwipe(e){St(L.value+e)}}),Tt=l(()=>{let e=N.value;if(!e)return[];let t=I.value,n=e.colorVariantImages?.[t];if(n?.length)return n;let r=e.colorImages?.[t];return r?[r]:[]}),Et=l(()=>N.value?.colors[I.value]??``),Dt=l(()=>R.value*Y.value),Ot=l(()=>{let e=N.value?.minMeterage;return e&&e>0?e:Y.value}),$=l(()=>Math.max(1,Math.ceil(Ot.value/Y.value))),kt=l(()=>N.value?.specs?.trim()??``),At=l(()=>kt.value.length>0),jt=l(()=>{let e=N.value;if(!e)return[];let t=[],n=ie.some(t=>t.id===e.categoryId)?e.categoryId:``,i=n?r[n]:``;i&&t.push({key:`usage-${n}`,label:i,to:{path:`/products`,query:{categoryId:n}}});let a=re.some(t=>t.id===e.season)?e.season:``,o=a?ee[a]:``;o&&t.push({key:`season-${a}`,label:o,to:{path:`/products`,query:{season:a}}});let s=new Set(t.flatMap(e=>[e.label,e.label.replace(/^پارچه\s*/,``)]));for(let n of e.tags){let e=n.replace(/^پارچه?های?\s*/,``).trim();if(!e||s.has(e)||t.some(t=>t.label.includes(e)))continue;let r=n.startsWith(`پارچه`)?n:`پارچه ${e}`;s.add(e),t.push({key:`tag-${n}`,label:r})}return t});async function Mt(){if(!M.value){N.value=null,P.value=!1;return}P.value=!0,F.value=null;try{await Promise.all([O.hydrate(),j.loadCompanies()]),N.value=await x.loadProductById(M.value),I.value=0,L.value=0,R.value=$.value}catch(e){N.value=null,F.value=e instanceof Error?e.message:`محصول یافت نشد.`}finally{P.value=!1}}m(Mt),s(M,Mt);function Nt(e,t=I.value){let n=e.rollMeters||50,r=e.orderMultiplier&&e.orderMultiplier>0?e.orderMultiplier:n,i=e.minMeterage&&e.minMeterage>0?e.minMeterage:n;return{id:e.id,companyId:e.companyId||``,catalogId:e.catalogId||``,name:e.name,code:e.code,color:e.color||e.colors[t]||`—`,minMeterage:i,orderMultiplier:r,basePrice:e.basePrice,isActive:e.isActive!==!1}}function Pt(e,t,n){let r=t>0?t:1,i=Math.ceil(e/r)*r,a=Math.ceil(n/r)*r;return Math.max(i,a)}function Ft(){!N.value||X.value||(H.value=``,V.value=!0)}function It(){V.value=!1,H.value=``}async function Lt(e){let t=N.value;if(!t)return;let n=t.colors.map((t,n)=>({color:t,idx:n,rolls:e[n]??0})).filter(e=>e.rolls>0);if(!n.length){H.value=`حداقل یک رنگ با تعداد انتخاب کنید.`;return}let r=n.reduce((e,t)=>e+t.rolls,0)*Y.value;if(r<Ot.value){H.value=`حداقل سفارش ${S($.value)} طاقه است.`;return}let i=n[0],a=Nt(t,i.idx),o=Pt(r,a.orderMultiplier,a.minMeterage),s=n.map(e=>`${e.color||`رنگ ${e.idx+1}`}: ${S(e.rolls)} طاقه`).join(`، `);z.value=!0,H.value=``;try{let e=await ge.addItem(a,t.catalogCode||t.code,o,s,!0);if(!e.success){H.value=e.message??`افزودن به سفارش ناموفق بود.`;return}It()}finally{z.value=!1}}function Rt(){N.value&&O.toggle(N.value.id)}function zt(){let e=window.location.href;if(navigator.share){navigator.share({title:N.value?.name,url:e}).catch(()=>void 0);return}navigator.clipboard?.writeText(e)}function Bt(){!N.value||U.value||K(N.value)}function Vt(e){q(e)}return(t,r)=>N.value?(i(),d(`div`,ye,[h(`header`,be,[h(`button`,{type:`button`,class:`icon-btn`,"aria-label":`بازگشت`,onClick:r[0]||=(...e)=>y(b)&&y(b)(...e)},[c(te,{size:20})]),h(`div`,xe,[h(`button`,{type:`button`,class:`icon-btn`,"aria-label":y(O).isFavorite(N.value.id)?`حذف از علاقهمندیها`:`افزودن به علاقهمندیها`,"aria-pressed":y(O).isFavorite(N.value.id),onClick:Rt},[c(de,{size:20,filled:y(O).isFavorite(N.value.id),color:y(O).isFavorite(N.value.id)?`var(--color-primary)`:void 0},null,8,[`filled`,`color`])],8,Se),h(`button`,{type:`button`,class:`icon-btn`,"aria-label":`اشتراکگذاری`,onClick:zt},[c(_e,{size:20})])])]),h(`header`,Ce,[h(`div`,null,[h(`h1`,we,o(N.value.name),1),h(`p`,Te,[f(` کد محصول: `+o(N.value.code)+` `,1),X.value?(i(),d(`span`,Ee,`ناموجود`)):u(``,!0)])]),h(`div`,De,[h(`button`,{type:`button`,class:`icon-btn`,"aria-label":y(O).isFavorite(N.value.id)?`حذف از علاقهمندیها`:`افزودن به علاقهمندیها`,"aria-pressed":y(O).isFavorite(N.value.id),onClick:Rt},[c(de,{size:20,filled:y(O).isFavorite(N.value.id),color:y(O).isFavorite(N.value.id)?`var(--color-primary)`:void 0},null,8,[`filled`,`color`])],8,Oe),h(`button`,{type:`button`,class:`icon-btn`,"aria-label":`اشتراکگذاری`,onClick:zt},[c(_e,{size:20})])])]),h(`div`,ke,[h(`div`,Ae,[h(`div`,je,[h(`div`,Me,[h(`div`,{class:`gallery__stage`,onTouchstartPassive:r[1]||=(...e)=>y(Ct)&&y(Ct)(...e),onTouchendPassive:r[2]||=(...e)=>y(wt)&&y(wt)(...e)},[h(`div`,{class:`gallery__main`,style:a(Q.value?{backgroundImage:`url(${Q.value})`,backgroundSize:`cover`,backgroundPosition:`center`}:y(A)(N.value.color||Et.value))},null,4),Z.value.length>1?(i(),d(`div`,Ne,[(i(!0),d(p,null,n(Z.value,(t,n)=>(i(),d(`button`,{key:n,type:`button`,class:e([`gallery__dot`,{"gallery__dot--active":L.value===n}]),"aria-label":`تصویر ${n+1}`,"aria-selected":L.value===n,onClick:e=>L.value=n},null,10,Pe))),128))])):u(``,!0)],32),Z.value.length>1?(i(),d(`div`,Fe,[(i(!0),d(p,null,n(Z.value,(t,n)=>(i(),d(`button`,{key:t+n,type:`button`,class:e([`thumb`,{"thumb--active":L.value===n}]),onClick:e=>L.value=n},[h(`span`,{class:`thumb__swatch`,style:a({backgroundImage:`url(${t})`,backgroundSize:`cover`,backgroundPosition:`center`})},null,4)],10,Ie))),128))])):u(``,!0)]),h(`div`,Le,[h(`div`,Re,[h(`h1`,null,o(N.value.name),1),X.value?(i(),d(`span`,ze,`ناموجود`)):N.value.isNew?(i(),d(`span`,Be,`جدید`)):u(``,!0)]),h(`p`,Ve,`کد محصول: `+o(N.value.code),1),h(`div`,He,[h(`div`,Ue,[h(`span`,We,[c(oe,{color:`#98a2ad`})]),r[5]||=h(`span`,null,`عرض`,-1),h(`strong`,null,o(y(S)(N.value.widthCm))+` سانتیمتر`,1)]),h(`div`,Ge,[r[6]||=h(`span`,{class:`spec-icon`,"aria-hidden":`true`},[h(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.6`},[h(`path`,{d:`M12 3.5 20 8v8l-8 4.5L4 16V8l8-4.5Z`})])],-1),r[7]||=h(`span`,null,`جنس`,-1),h(`strong`,null,o(N.value.composition||`—`),1)]),h(`div`,Ke,[h(`span`,qe,[c(se,{size:22,color:`#98a2ad`})]),r[8]||=h(`span`,null,`وزن`,-1),h(`strong`,null,o(N.value.weightGrams?`${y(S)(N.value.weightGrams)} گرم`:`—`),1)]),h(`div`,Je,[h(`span`,Ye,[c(ce,{color:`#98a2ad`})]),r[9]||=h(`span`,null,`نوع بافت`,-1),h(`strong`,null,o(N.value.weaveType||`—`),1)])]),At.value?(i(),d(p,{key:0},[h(`button`,{type:`button`,class:`specs-more`,onClick:r[3]||=e=>B.value=!B.value},[f(o(B.value?`بستن مشخصات`:`مشاهده همه مشخصات`)+` `,1),(i(),d(`svg`,{class:e([`specs-more__chevron`,{"is-open":B.value}]),viewBox:`0 0 12 12`,"aria-hidden":`true`},[...r[10]||=[h(`path`,{d:`M3 4.5 6 8l3-3.5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.4`,"stroke-linecap":`round`},null,-1)]],2))]),B.value?(i(),d(`div`,Xe,[h(`p`,Ze,o(kt.value),1)])):u(``,!0)],64)):u(``,!0),h(`section`,Qe,[h(`div`,$e,[r[11]||=h(`h2`,null,`رنگبندی`,-1),h(`span`,null,`(`+o(y(S)(N.value.colors.length))+` رنگ موجود)`,1)]),h(`div`,et,[(i(!0),d(p,null,n(N.value.colors,(t,n)=>(i(),d(`button`,{key:n,type:`button`,class:e([`color-dot`,{"color-dot--active":I.value===n}]),style:a(y(A)(t,y(me)(N.value.colorImages,N.value.colorVariantImages,n))),onClick:e=>I.value=n},null,14,tt))),128))]),Tt.value.length?(i(),d(`div`,nt,[(i(!0),d(p,null,n(Tt.value,(e,t)=>(i(),d(`div`,{key:`${I.value}-${t}-${e}`,class:`variant-images__item`,role:`listitem`,style:a({backgroundImage:`url(${e})`,backgroundSize:`cover`,backgroundPosition:`center`})},null,4))),128))])):u(``,!0)]),h(`section`,rt,[r[12]||=h(`h2`,{class:`section-title`},`دستهبندی`,-1),h(`div`,it,[(i(!0),d(p,null,n(jt.value,t=>(i(),d(`button`,{key:t.key,type:`button`,class:e([`tag`,{"tag--link":!!t.to}]),role:`listitem`,onClick:e=>t.to&&y(v).push(t.to)},o(t.label),11,at))),128))])]),h(`section`,ot,[r[13]||=h(`h2`,{class:`section-title`},`متراژ هر طاقه`,-1),h(`div`,st,o(y(S)(N.value.rollMeters))+` متر`,1)])])]),h(`aside`,ct,[h(`div`,lt,[r[17]||=h(`h2`,{class:`cart-summary-panel__title`},`ثبت سفارش`,-1),h(`div`,ut,[r[14]||=h(`span`,null,`متراژ سفارش`,-1),h(`strong`,null,o(y(S)(Dt.value))+` متر`,1)]),h(`div`,dt,[r[15]||=h(`span`,null,`حداقل سفارش`,-1),h(`strong`,null,o(y(S)($.value))+` طاقه`,1)]),X.value?(i(),d(`p`,ft,` این محصول فعلاً موجود نیست. `)):(i(),d(`div`,pt,[h(`button`,{type:`button`,class:`btn-primary`,onClick:Ft},[c(T,{size:18,color:`#ffffff`}),r[16]||=f(` افزودن به سفارش `,-1)])])),h(`button`,{type:`button`,class:`btn-secondary pd-desk-catalog-btn`,disabled:y(U),onClick:Bt},o(y(U)?`در حال ثبت...`:`درخواست کالیته`),9,mt)])])])]),h(`footer`,ht,[X.value?(i(),d(`div`,gt,[...r[18]||=[h(`p`,{class:`pd-footer__unavailable`},`این محصول فعلاً موجود نیست.`,-1)]])):(i(),d(`div`,_t,[h(`button`,{type:`button`,class:`btn-primary`,onClick:Ft},[c(T,{size:18,color:`#ffffff`}),r[19]||=f(` افزودن به سفارش `,-1)]),h(`p`,vt,`حداقل سفارش: `+o(y(S)($.value))+` طاقه`,1)])),h(`button`,{type:`button`,class:`btn-secondary`,disabled:y(U),onClick:Bt},o(y(U)?`در حال ثبت...`:`درخواست کالیته`),9,yt)]),c(pe,{open:y(W),loading:y(U),error:y(G),onClose:y(J),onSubmit:Vt},null,8,[`open`,`loading`,`error`,`onClose`]),c(ve,{open:V.value,product:N.value,"roll-meters":Y.value,"min-rolls":$.value,"base-price":N.value.basePrice,loading:z.value,error:H.value,onClose:It,onSubmit:Lt},null,8,[`open`,`product`,`roll-meters`,`min-rolls`,`base-price`,`loading`,`error`])])):P.value?(i(),d(`div`,bt,[c(ne,{variant:`detail`})])):(i(),d(`div`,xt,[h(`p`,null,o(F.value||`محصول یافت نشد.`),1),h(`button`,{type:`button`,onClick:r[4]||=e=>y(v).push(`/products`)},`بازگشت به لیست`)]))}}),[[`__scopeId`,`data-v-3b08e9ce`]]);export{St as default}; |