Files
nademitex_user/dist/assets/ProductDetailView-CkrXDVv9.js
T
2026-09-30 09:54:04 +03:30

1 line
17 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 _,t as v,u as y,ut as b,v as x}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{u as ee}from"./BasicIcon-ba1FsUKx.js";import{o as S}from"./format-C72AoJ2H.js";import{t as C}from"./catalog-DvXpKfLO.js";import{A as w,E as T,O as E,c as D,k as O,r as k,t as A,u as te}from"./index-BPUhS8CY.js";import{t as ne}from"./IconChevronBack-DytWz6TD.js";import{t as re}from"./PageSkeleton-DYdjm4l9.js";import{a as ie,o as ae,t as oe}from"./crm-BKPKhzCX.js";import{t as se}from"./useGoBack-BkqOD93C.js";import{n as ce,r as le,t as ue}from"./IconWeave-CTypFxhM.js";import{t as j}from"./IconHeart-CvzbNH_T.js";import{n as de,t as fe}from"./AddressCompletionModal-BQQfvcHU.js";import{n as M,t as pe}from"./colorSwatch-BgOH1LE5.js";import{r as me,t as he}from"./useStockNotify-DeMc7Vja.js";var ge=[`width`,`height`],_e=[`stroke`],N=[`stroke`],P=[`stroke`],F=x({__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,_e),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,N),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,P)],8,ge))}}),I={class:`dialog card product-order-modal`},L={class:`product-order-modal__head`},R={class:`product-order-modal__rows`},z={class:`product-order-row__color`},B=[`title`],V={key:0,class:`product-order-row__label`},H={class:`product-order-row__stepper`},U=[`disabled`,`onClick`],W={class:`product-order-row__qty`},G=[`disabled`,`onClick`],K={key:0,class:`product-order-modal__error`},q={class:`product-order-modal__footer`},J={class:`product-order-modal__price`},ve={key:0},Y={key:1},X={key:2},Z={key:0,class:`product-order-modal__hint`},ye=v(x({__name:`ProductOrderModal`,props:{open:{type:Boolean},product:{},rollMeters:{},minRolls:{},basePrice:{},loading:{type:Boolean},error:{}},emits:[`close`,`submit`],setup(e,{emit:m}){let v=e,x=m,C=g([]);s(()=>[v.open,v.product?.colors.length],([e])=>{!e||!v.product||(C.value=v.product.colors.map(()=>0))});let w=l(()=>C.value.reduce((e,t)=>e+(t>0?t:0),0)),T=l(()=>w.value*v.rollMeters),E=l(()=>!v.basePrice||T.value<=0?null:v.basePrice*T.value);function D(e){e.key===`Escape`&&v.open&&x(`close`)}s(()=>v.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 O(e,t){let n=[...C.value];n[e]=Math.max(0,(n[e]??0)+t),C.value=n}function A(){x(`submit`,[...C.value])}return(t,s)=>(i(),y(_,{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]||=ee(e=>x(`close`),[`self`])},[h(`div`,I,[h(`header`,L,[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=>x(`close`)},` × `)]),s[4]||=h(`div`,{class:`product-order-modal__table-head`,"aria-hidden":`true`},[h(`span`,null,`رنگ`),h(`span`,null,`تعداد`)],-1),h(`ul`,R,[(i(!0),d(p,null,n(e.product.colors,(t,n)=>(i(),d(`li`,{key:n,class:`product-order-row`},[h(`div`,z,[h(`span`,{class:`product-order-row__swatch`,style:a(b(M)(t,e.product.colorImages?.[n]||e.product.imageUrls?.[n])),title:t},null,12,B),t?(i(),d(`span`,V,o(t),1)):u(``,!0)]),h(`div`,H,[h(`button`,{type:`button`,class:`product-order-row__btn`,"aria-label":`کاهش`,disabled:e.loading||(C.value[n]??0)<=0,onClick:e=>O(n,-1)},` − `,8,U),h(`span`,W,o(b(S)(C.value[n]??0)),1),h(`button`,{type:`button`,class:`product-order-row__btn`,"aria-label":`افزایش`,disabled:e.loading,onClick:e=>O(n,1)},` + `,8,G)])]))),128))]),e.error?(i(),d(`p`,K,o(e.error),1)):u(``,!0),h(`footer`,q,[h(`div`,J,[s[3]||=h(`span`,null,`قیمت`,-1),E.value==null?w.value>0?(i(),d(`strong`,Y,o(b(S)(T.value))+` متر `,1)):(i(),d(`strong`,X,`—`)):(i(),d(`strong`,ve,o(b(S)(E.value))+` تومان `,1))]),e.minRolls>0?(i(),d(`p`,Z,` حداقل سفارش: `+o(b(S)(e.minRolls))+` طاقه `,1)):u(``,!0),c(k,{class:`product-order-modal__submit`,disabled:e.loading,onClick:A},{default:r(()=>[f(o(e.loading?`در حال ثبت...`:`ثبت`),1)]),_:1},8,[`disabled`])])])])):u(``,!0)]))}}),[[`__scopeId`,`data-v-9e750bcd`]]),be={key:0,class:`page product-detail product-page`},xe={class:`pd-header mobile-only`},Se={class:`pd-header__actions`},Ce=[`aria-label`,`aria-pressed`],we={class:`desktop-page__head desktop-only pd-desk-head`},Te={class:`desktop-page__title`},Ee={class:`desktop-page__subtitle`},De={key:0,class:`pd-stock-badge`},Oe={class:`pd-desk-head__actions`},ke=[`aria-label`,`aria-pressed`],Ae={class:`page__scroll pd-scroll product-page__scroll`},je={class:`product-page__layout`},Me={class:`product-page__main`},Ne={class:`gallery`},Pe={class:`gallery__stage`},Fe={key:0,class:`gallery__dots`,role:`tablist`,"aria-label":`تصاویر محصول`},Ie=[`aria-label`,`aria-selected`,`onClick`],Le={class:`gallery__thumbs`},Re=[`onClick`],ze={class:`pd-body`},Be={class:`title-row`},Ve={key:0,class:`new-badge`},He={class:`code`},Ue={class:`specs`},We={class:`spec-cell`},Ge={class:`spec-icon`,"aria-hidden":`true`},Ke={class:`spec-cell`},qe={class:`spec-cell`},Je={class:`spec-icon`,"aria-hidden":`true`},Ye={class:`spec-cell`},Xe={class:`spec-icon`,"aria-hidden":`true`},Ze={key:0,class:`specs-extra`},Qe={class:`pd-section pd-section--boxed`},$e={class:`section-head`},et={class:`colors`},tt=[`onClick`],nt={class:`pd-section`},rt={class:`tags`,role:`list`},it=[`onClick`],at={class:`pd-section`},ot={class:`roll-field`},st={class:`product-page__sidebar desktop-only`},ct={class:`cart-summary-panel`},lt={class:`cart-summary-panel__row`},ut={class:`cart-summary-panel__row`},dt={key:0,class:`stock-notify-panel`},ft=[`disabled`],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=[`disabled`],vt={key:1,class:`pd-footer__primary`},yt={class:`min-note`},bt=[`disabled`],xt={key:1,class:`page empty`},St={key:2,class:`page empty`},Q=v(x({__name:`ProductDetailView`,setup(t){let r={suit:`پارچه کت‌شلواری`,trousers:`پارچه شلواری`,shirt:`پارچه پیراهنی`},_={summer:`پارچه تابستانه`,winter:`پارچه زمستانه`,all_season:`پارچه چهارفصل`},v=O(),y=w(),{goBack:x}=se(`/products`),ee=oe(),k=te(),ge=E(),_e=C(),N=l(()=>String(v.query.id??``)),P=g(null),I=g(!0),L=g(null),R=g(0),z=g(1),B=g(!1),V=g(!1),H=g(!1),U=g(``),{requesting:W,addressModalOpen:G,addressError:K,requestCatalog:q,submitAddressAndRequest:J,closeAddressModal:ve}=de(),Y=A(),X=me(()=>N.value),Z=l(()=>P.value?.rollMeters??50),Q=l(()=>he(P.value?.stock)),Ct=l(()=>{let e=P.value;return e?pe(e.colors,e.colorImages,e.imageUrls,R.value,e.imageUrl):``}),wt=l(()=>P.value?.colors[R.value]??``),Tt=l(()=>z.value*Z.value),Et=l(()=>{let e=P.value?.minMeterage;return e&&e>0?e:Z.value}),$=l(()=>Math.max(1,Math.ceil(Et.value/Z.value))),Dt=l(()=>r[P.value?.categoryId??``]||`—`),Ot=l(()=>_[P.value?.season??``]||`—`),kt=l(()=>{let e=P.value;if(!e)return[];let t=[],n=ae.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=ie.some(t=>t.id===e.season)?e.season:``,o=a?_[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 At(){if(!N.value){P.value=null,I.value=!1;return}I.value=!0,L.value=null;try{await Promise.all([k.hydrate(),_e.loadCompanies()]),P.value=await ee.loadProductById(N.value),R.value=0,z.value=$.value,await X.refreshSubscription()}catch(e){P.value=null,L.value=e instanceof Error?e.message:`محصول یافت نشد.`}finally{I.value=!1}}m(At),s(N,At);function jt(e,t=R.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:!0}}function Mt(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 Nt(){!P.value||Q.value||(U.value=``,H.value=!0)}function Pt(){H.value=!1,U.value=``}async function Ft(e){let t=P.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){U.value=`حداقل یک رنگ با تعداد انتخاب کنید.`;return}let r=n.reduce((e,t)=>e+t.rolls,0)*Z.value;if(r<Et.value){U.value=`حداقل سفارش ${S($.value)} طاقه است.`;return}let i=n[0],a=jt(t,i.idx),o=Mt(r,a.orderMultiplier,a.minMeterage),s=n.map(e=>`${e.color||`رنگ ${e.idx+1}`}: ${S(e.rolls)} طاقه`).join(`، `);B.value=!0,U.value=``;try{let e=await ge.addItem(a,t.catalogCode||t.code,o,s,!0);if(!e.success){U.value=e.message??`افزودن به سفارش ناموفق بود.`;return}Pt()}finally{B.value=!1}}function It(){P.value&&k.toggle(P.value.id)}function Lt(){let e=window.location.href;if(navigator.share){navigator.share({title:P.value?.name,url:e}).catch(()=>void 0);return}navigator.clipboard?.writeText(e)}function Rt(){!P.value||W.value||q(P.value)}function zt(e){J(e)}async function Bt(){if(X.subscribed.value){await X.unsubscribe()&&Y.show(`درخواست خبر موجودی لغو شد.`,{tone:`success`});return}await X.subscribe()?Y.show(`درخواست ثبت شد. با موجود شدن محصول اعلان می‌گیرید.`,{tone:`success`}):X.error.value&&Y.show(X.error.value,{tone:`error`})}return(t,r)=>P.value?(i(),d(`div`,be,[h(`header`,xe,[h(`button`,{type:`button`,class:`icon-btn`,"aria-label":`بازگشت`,onClick:r[0]||=(...e)=>b(x)&&b(x)(...e)},[c(ne,{size:20})]),h(`div`,Se,[h(`button`,{type:`button`,class:`icon-btn`,"aria-label":b(k).isFavorite(P.value.id)?`حذف از علاقه‌مندی‌ها`:`افزودن به علاقه‌مندی‌ها`,"aria-pressed":b(k).isFavorite(P.value.id),onClick:It},[c(j,{size:20,filled:b(k).isFavorite(P.value.id),color:b(k).isFavorite(P.value.id)?`var(--color-primary)`:void 0},null,8,[`filled`,`color`])],8,Ce),h(`button`,{type:`button`,class:`icon-btn`,"aria-label":`اشتراک‌گذاری`,onClick:Lt},[c(F,{size:20})])])]),h(`header`,we,[h(`div`,null,[h(`h1`,Te,o(P.value.name),1),h(`p`,Ee,[f(` کد محصول: `+o(P.value.code)+` `,1),Q.value?(i(),d(`span`,De,`ناموجود`)):u(``,!0)])]),h(`div`,Oe,[h(`button`,{type:`button`,class:`icon-btn`,"aria-label":b(k).isFavorite(P.value.id)?`حذف از علاقه‌مندی‌ها`:`افزودن به علاقه‌مندی‌ها`,"aria-pressed":b(k).isFavorite(P.value.id),onClick:It},[c(j,{size:20,filled:b(k).isFavorite(P.value.id),color:b(k).isFavorite(P.value.id)?`var(--color-primary)`:void 0},null,8,[`filled`,`color`])],8,ke),h(`button`,{type:`button`,class:`icon-btn`,"aria-label":`اشتراک‌گذاری`,onClick:Lt},[c(F,{size:20})])])]),h(`div`,Ae,[h(`div`,je,[h(`div`,Me,[h(`div`,Ne,[h(`div`,Pe,[h(`div`,{class:`gallery__main`,style:a(Ct.value?{backgroundImage:`url(${Ct.value})`,backgroundSize:`cover`,backgroundPosition:`center`}:b(M)(wt.value))},null,4),P.value.colors.length>1?(i(),d(`div`,Fe,[(i(!0),d(p,null,n(P.value.colors,(t,n)=>(i(),d(`button`,{key:n,type:`button`,class:e([`gallery__dot`,{"gallery__dot--active":R.value===n}]),"aria-label":t||`تصویر ${n+1}`,"aria-selected":R.value===n,onClick:e=>R.value=n},null,10,Ie))),128))])):u(``,!0)]),h(`div`,Le,[(i(!0),d(p,null,n(P.value.colors,(t,n)=>(i(),d(`button`,{key:n,type:`button`,class:e([`thumb`,{"thumb--active":R.value===n}]),onClick:e=>R.value=n},[h(`span`,{class:`thumb__swatch`,style:a(b(M)(t,P.value.colorImages?.[n]||P.value.imageUrls?.[n]))},null,4)],10,Re))),128))])]),h(`div`,ze,[h(`div`,Be,[h(`h1`,null,o(P.value.name),1),P.value.isNew?(i(),d(`span`,Ve,`جدید`)):u(``,!0)]),h(`p`,He,`کد محصول: `+o(P.value.code),1),h(`div`,Ue,[h(`div`,We,[h(`span`,Ge,[c(ce,{color:`#98a2ad`})]),r[5]||=h(`span`,null,`عرض`,-1),h(`strong`,null,o(b(S)(P.value.widthCm))+` سانتی‌متر`,1)]),h(`div`,Ke,[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(P.value.composition||`—`),1)]),h(`div`,qe,[h(`span`,Je,[c(le,{size:22,color:`#98a2ad`})]),r[8]||=h(`span`,null,`وزن`,-1),h(`strong`,null,o(P.value.weightGrams?`${b(S)(P.value.weightGrams)} گرم`:`—`),1)]),h(`div`,Ye,[h(`span`,Xe,[c(ue,{color:`#98a2ad`})]),r[9]||=h(`span`,null,`نوع بافت`,-1),h(`strong`,null,o(P.value.weaveType||`—`),1)])]),h(`button`,{type:`button`,class:`specs-more`,onClick:r[1]||=e=>V.value=!V.value},[f(o(V.value?`بستن مشخصات`:`مشاهده همه مشخصات`)+` `,1),(i(),d(`svg`,{class:e([`specs-more__chevron`,{"is-open":V.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))]),V.value?(i(),d(`div`,Ze,[h(`p`,null,`فصل: `+o(Ot.value),1),h(`p`,null,`دسته: `+o(Dt.value),1),h(`p`,null,`جمع سفارش: `+o(b(S)(Tt.value))+` متر`,1)])):u(``,!0),h(`section`,Qe,[h(`div`,$e,[r[11]||=h(`h2`,null,`رنگ‌بندی`,-1),h(`span`,null,`(`+o(b(S)(P.value.colors.length))+` رنگ موجود)`,1)]),h(`div`,et,[(i(!0),d(p,null,n(P.value.colors,(t,n)=>(i(),d(`button`,{key:n,type:`button`,class:e([`color-dot`,{"color-dot--active":R.value===n}]),style:a(b(M)(t,P.value.colorImages?.[n]||P.value.imageUrls?.[n])),onClick:e=>R.value=n},null,14,tt))),128))])]),h(`section`,nt,[r[12]||=h(`h2`,{class:`section-title`},`دسته‌بندی`,-1),h(`div`,rt,[(i(!0),d(p,null,n(kt.value,t=>(i(),d(`button`,{key:t.key,type:`button`,class:e([`tag`,{"tag--link":!!t.to}]),role:`listitem`,onClick:e=>t.to&&b(y).push(t.to)},o(t.label),11,it))),128))])]),h(`section`,at,[r[13]||=h(`h2`,{class:`section-title`},`متراژ هر طاقه`,-1),h(`div`,ot,o(b(S)(P.value.rollMeters))+` متر`,1)])])]),h(`aside`,st,[h(`div`,ct,[r[18]||=h(`h2`,{class:`cart-summary-panel__title`},`ثبت سفارش`,-1),h(`div`,lt,[r[14]||=h(`span`,null,`متراژ سفارش`,-1),h(`strong`,null,o(b(S)(Tt.value))+` متر`,1)]),h(`div`,ut,[r[15]||=h(`span`,null,`حداقل سفارش`,-1),h(`strong`,null,o(b(S)($.value))+` طاقه`,1)]),Q.value?(i(),d(`div`,dt,[r[16]||=h(`p`,{class:`stock-notify-panel__lead`},`این محصول فعلاً موجود نیست.`,-1),h(`button`,{type:`button`,class:`btn-primary`,disabled:b(X).loading.value,onClick:Bt},[c(D,{size:18}),f(` `+o(b(X).subscribed.value?`لغو خبر موجودی`:`خبرم کن وقتی موجود شد`),1)],8,ft),h(`button`,{type:`button`,class:`btn-link`,onClick:r[2]||=e=>b(y).push(`/profile/stock-alerts`)},` مشاهده درخواست‌های من `)])):(i(),d(`div`,pt,[h(`button`,{type:`button`,class:`btn-primary`,onClick:Nt},[c(T,{size:18,color:`#ffffff`}),r[17]||=f(` افزودن به سفارش `,-1)])])),h(`button`,{type:`button`,class:`btn-secondary pd-desk-catalog-btn`,disabled:b(W),onClick:Rt},o(b(W)?`در حال ثبت...`:`درخواست کالیته`),9,mt)])])])]),h(`footer`,ht,[Q.value?(i(),d(`div`,gt,[h(`button`,{type:`button`,class:`btn-primary`,disabled:b(X).loading.value,onClick:Bt},[c(D,{size:18,color:`#ffffff`}),f(` `+o(b(X).subscribed.value?`لغو خبر موجودی`:`خبرم کن وقتی موجود شد`),1)],8,_t),h(`button`,{type:`button`,class:`btn-link pd-footer__link`,onClick:r[3]||=e=>b(y).push(`/profile/stock-alerts`)},` درخواست‌های خبر موجودی `)])):(i(),d(`div`,vt,[h(`button`,{type:`button`,class:`btn-primary`,onClick:Nt},[c(T,{size:18,color:`#ffffff`}),r[19]||=f(` افزودن به سفارش `,-1)]),h(`p`,yt,`حداقل سفارش: `+o(b(S)($.value))+` طاقه`,1)])),h(`button`,{type:`button`,class:`btn-secondary`,disabled:b(W),onClick:Rt},o(b(W)?`در حال ثبت...`:`درخواست کالیته`),9,bt)]),c(fe,{open:b(G),loading:b(W),error:b(K),onClose:b(ve),onSubmit:zt},null,8,[`open`,`loading`,`error`,`onClose`]),c(ye,{open:H.value,product:P.value,"roll-meters":Z.value,"min-rolls":$.value,"base-price":P.value.basePrice,loading:B.value,error:U.value,onClose:Pt,onSubmit:Ft},null,8,[`open`,`product`,`roll-meters`,`min-rolls`,`base-price`,`loading`,`error`])])):I.value?(i(),d(`div`,xt,[c(re,{variant:`detail`})])):(i(),d(`div`,St,[h(`p`,null,o(L.value||`محصول یافت نشد.`),1),h(`button`,{type:`button`,onClick:r[4]||=e=>b(y).push(`/products`)},`بازگشت به لیست`)]))}}),[[`__scopeId`,`data-v-d495585d`]]);export{Q as default};