feat: accounting integration (D27), SMS relay driver (D26), rebuild user apps

- Add Tahesab/Zarrin accounting sync module with admin panel UI
- Add SMS relay driver as default provider, refactor SMS into driver pattern
- Update customer services, orders, products, and catalog queries
- Rebuild user-app and user-app-v2 dist assets
- Add Prisma migration for accounting tables
- Update docker-compose and env examples
- Update parity docs (DECISIONS, ISSUES, PROGRESS)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
s.esmaeili
2026-10-06 16:48:36 +03:30
co-authored by Claude Opus 4.6
parent a72fa607a5
commit 19d490e790
179 changed files with 12538 additions and 370 deletions
@@ -1 +1 @@
import{d as u,i,c as _,e as r,b as e,_ as h,u as v,p as o,z as b,B as k,F as w,r as f,l as n,t as d,f as x,I as c,P as g}from"./index-Dg78Fjh9.js";import{P as y}from"./PageBar-Ce9JfTDp.js";const C=u({__name:"ToggleSwitch",props:{on:{type:Boolean}},setup(p){return(a,l)=>(i(),_("span",{class:r(["tsw",{"is-on":p.on}]),"aria-hidden":"true"},[...l[0]||(l[0]=[e("span",{class:"tsw__knob"},null,-1)])],2))}}),B=h(C,[["__scopeId","data-v-0edd5262"]]),T={class:"ap"},S={class:"ap__section"},V={class:"ap__themes",role:"radiogroup","aria-labelledby":"ap-theme"},z=["aria-checked","onClick"],I={class:"ap__themeLabel"},L={class:"ap__check","aria-hidden":"true"},M={key:0,class:"ap__note"},N={class:"ap__section"},P=["aria-checked"],$={class:"ap__rowIcon","aria-hidden":"true"},A=u({__name:"AppearanceView",setup(p){const a=v(),l=[{value:"light",label:"روشن",icon:"vuesax-linear:sun-1"},{value:"dark",label:"تیره",icon:"vuesax-linear:moon"},{value:"system",label:"مطابق سیستم",icon:"vuesax-linear:monitor-mobbile"}];return(E,s)=>{const m=k("container");return i(),_("div",T,[o(y,{title:"تنظیمات ظاهری","back-to":"userPage::hasSubRoute"}),o(m,{class:"ap__body"},{default:b(()=>[e("section",S,[s[2]||(s[2]=e("header",{class:"ap__head"},[e("h2",{id:"ap-theme",class:"ap__title"},"پوسته برنامه"),e("p",{class:"ap__sub"},"ظاهر روشن یا تیره، یا هماهنگ با تنظیمات گوشی شما")],-1)),e("div",V,[(i(),_(w,null,f(l,t=>e("button",{key:t.value,type:"button",role:"radio",class:r(["ap__theme",{"is-on":n(a).theme===t.value}]),"aria-checked":n(a).theme===t.value,onClick:F=>n(a).setTheme(t.value)},[e("span",{class:r(["ap__preview",`ap__preview--${t.value}`]),"aria-hidden":"true"},[...s[1]||(s[1]=[e("span",{class:"ap__pvBar"},null,-1),e("span",{class:"ap__pvCard"},null,-1),e("span",{class:"ap__pvLine"},null,-1),e("span",{class:"ap__pvLine ap__pvLine--short"},null,-1),e("span",{class:"ap__pvBtn"},null,-1)])],2),e("span",I,[o(c,{icon:t.icon,size:"15"},null,8,["icon"]),g(" "+d(t.label),1)]),e("span",L,[o(c,{icon:"vuesax-linear:tick-circle",size:"18"})])],10,z)),64))]),n(a).theme==="system"?(i(),_("p",M," الان "+d(n(a).resolvedTheme==="dark"?"تیره":"روشن")+" است، مطابق تنظیمات گوشی. ",1)):x("",!0)]),e("section",N,[s[4]||(s[4]=e("header",{class:"ap__head"},[e("h2",{class:"ap__title"},"انیمیشن‌ها"),e("p",{class:"ap__sub"},"برای سرعت بیشتر روی گوشی‌های ضعیف‌تر")],-1)),e("button",{type:"button",role:"switch",class:"ap__row","aria-checked":n(a).reduceMotion,onClick:s[0]||(s[0]=t=>n(a).setReduceMotion(!n(a).reduceMotion))},[e("span",$,[o(c,{icon:"vuesax-linear:flash",size:"18"})]),s[3]||(s[3]=e("span",{class:"ap__rowText"},[e("b",null,"حالت سبک و سریع"),e("small",null," حرکت‌های سنگین، افکت‌های شیشه‌ای و اسلاید خودکار خاموش می‌شوند؛ بازخورد کوتاه لمس‌ها و جابه‌جایی‌های سریع باقی می‌مانند تا برنامه خشک و بی‌روح نشود. ")],-1)),o(B,{on:n(a).reduceMotion},null,8,["on"])],8,P)])]),_:1})])}}}),H=h(A,[["__scopeId","data-v-61f14782"]]);export{H as default};
import{d as u,i,c as _,e as r,b as e,_ as h,u as v,p as o,z as b,B as k,F as w,r as f,l as n,t as d,f as x,I as c,P as g}from"./index-DOpGZRF9.js";import{P as y}from"./PageBar-DeTSeN2V.js";const C=u({__name:"ToggleSwitch",props:{on:{type:Boolean}},setup(p){return(a,l)=>(i(),_("span",{class:r(["tsw",{"is-on":p.on}]),"aria-hidden":"true"},[...l[0]||(l[0]=[e("span",{class:"tsw__knob"},null,-1)])],2))}}),B=h(C,[["__scopeId","data-v-0edd5262"]]),T={class:"ap"},S={class:"ap__section"},V={class:"ap__themes",role:"radiogroup","aria-labelledby":"ap-theme"},z=["aria-checked","onClick"],I={class:"ap__themeLabel"},L={class:"ap__check","aria-hidden":"true"},M={key:0,class:"ap__note"},N={class:"ap__section"},P=["aria-checked"],$={class:"ap__rowIcon","aria-hidden":"true"},A=u({__name:"AppearanceView",setup(p){const a=v(),l=[{value:"light",label:"روشن",icon:"vuesax-linear:sun-1"},{value:"dark",label:"تیره",icon:"vuesax-linear:moon"},{value:"system",label:"مطابق سیستم",icon:"vuesax-linear:monitor-mobbile"}];return(E,s)=>{const m=k("container");return i(),_("div",T,[o(y,{title:"تنظیمات ظاهری","back-to":"userPage::hasSubRoute"}),o(m,{class:"ap__body"},{default:b(()=>[e("section",S,[s[2]||(s[2]=e("header",{class:"ap__head"},[e("h2",{id:"ap-theme",class:"ap__title"},"پوسته برنامه"),e("p",{class:"ap__sub"},"ظاهر روشن یا تیره، یا هماهنگ با تنظیمات گوشی شما")],-1)),e("div",V,[(i(),_(w,null,f(l,t=>e("button",{key:t.value,type:"button",role:"radio",class:r(["ap__theme",{"is-on":n(a).theme===t.value}]),"aria-checked":n(a).theme===t.value,onClick:F=>n(a).setTheme(t.value)},[e("span",{class:r(["ap__preview",`ap__preview--${t.value}`]),"aria-hidden":"true"},[...s[1]||(s[1]=[e("span",{class:"ap__pvBar"},null,-1),e("span",{class:"ap__pvCard"},null,-1),e("span",{class:"ap__pvLine"},null,-1),e("span",{class:"ap__pvLine ap__pvLine--short"},null,-1),e("span",{class:"ap__pvBtn"},null,-1)])],2),e("span",I,[o(c,{icon:t.icon,size:"15"},null,8,["icon"]),g(" "+d(t.label),1)]),e("span",L,[o(c,{icon:"vuesax-linear:tick-circle",size:"18"})])],10,z)),64))]),n(a).theme==="system"?(i(),_("p",M," الان "+d(n(a).resolvedTheme==="dark"?"تیره":"روشن")+" است، مطابق تنظیمات گوشی. ",1)):x("",!0)]),e("section",N,[s[4]||(s[4]=e("header",{class:"ap__head"},[e("h2",{class:"ap__title"},"انیمیشن‌ها"),e("p",{class:"ap__sub"},"برای سرعت بیشتر روی گوشی‌های ضعیف‌تر")],-1)),e("button",{type:"button",role:"switch",class:"ap__row","aria-checked":n(a).reduceMotion,onClick:s[0]||(s[0]=t=>n(a).setReduceMotion(!n(a).reduceMotion))},[e("span",$,[o(c,{icon:"vuesax-linear:flash",size:"18"})]),s[3]||(s[3]=e("span",{class:"ap__rowText"},[e("b",null,"حالت سبک و سریع"),e("small",null," حرکت‌های سنگین، افکت‌های شیشه‌ای و اسلاید خودکار خاموش می‌شوند؛ بازخورد کوتاه لمس‌ها و جابه‌جایی‌های سریع باقی می‌مانند تا برنامه خشک و بی‌روح نشود. ")],-1)),o(B,{on:n(a).reduceMotion},null,8,["on"])],8,P)])]),_:1})])}}}),H=h(A,[["__scopeId","data-v-61f14782"]]);export{H as default};
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
.cho__barExtra[data-v-a6d52de8]{padding:0 16px 12px}.cho__body[data-v-a6d52de8]{padding-top:132px;padding-bottom:90px}.cho__list[data-v-a6d52de8]{display:flex;flex-direction:column;padding-top:16px;gap:11px}.cho__card[data-v-a6d52de8]{padding:16px;background:var(--c-canvas);border:1px solid var(--c-hairline);border-radius:18px;cursor:pointer;transition:transform .2s ease}.cho__card[data-v-a6d52de8]:active{transform:scale(.99)}.cho__top[data-v-a6d52de8]{display:flex;justify-content:space-between;gap:12px}.cho__right[data-v-a6d52de8]{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.cho__num[data-v-a6d52de8]{font-size:15px;font-weight:700;margin-bottom:10px}.cho__muted[data-v-a6d52de8]{color:var(--c-inkMuted);font-weight:500;margin-left:4px}.cho__meta[data-v-a6d52de8]{display:flex;align-items:baseline;gap:4px}.cho__strong[data-v-a6d52de8]{font-size:15px;font-weight:700}.cho__unit[data-v-a6d52de8]{font-size:12px;color:var(--c-inkMuted)}.cho__status[data-v-a6d52de8]{padding:5px 14px;border-radius:8px;font-size:12px;font-weight:600;color:#06b6d4;background:#06b6d41f;white-space:nowrap}.cho__divider[data-v-a6d52de8]{height:1px;background:var(--c-hairline);margin:12px 0}.cho__bottom[data-v-a6d52de8]{display:flex;justify-content:space-between;align-items:center}.cho__customer[data-v-a6d52de8]{font-size:14px;font-weight:600;color:var(--c-inkMuted)}.cho__more[data-v-a6d52de8],.cho__sentinel[data-v-a6d52de8]{padding:12px 0;text-align:center;font-size:12px;color:var(--c-inkMuted)}.cho__empty[data-v-a6d52de8]{margin-top:8px;padding:34px 20px;border:1px dashed var(--c-hairline);border-radius:18px;display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--c-inkMuted);font-size:13px}.cho__retry[data-v-a6d52de8]{padding:8px 18px;border-radius:999px;border:1px solid var(--c-hairline);background:var(--c-canvas);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer}.cho__detail[data-v-a6d52de8]{padding:20px 16px 24px}.cho__detailTitle[data-v-a6d52de8]{margin:0 0 16px;font-size:17px;font-weight:700}.cho__rows[data-v-a6d52de8]{margin:0;display:flex;flex-direction:column;gap:2px}.cho__row[data-v-a6d52de8]{display:flex;justify-content:space-between;align-items:center;padding:11px 14px;background:var(--c-canvasSoft);border-radius:10px}.cho__row dt[data-v-a6d52de8]{font-size:13px;color:var(--c-inkMuted)}.cho__row dd[data-v-a6d52de8]{margin:0;font-size:14px;font-weight:600}.cho__close[data-v-a6d52de8]{margin-top:18px;width:100%;padding:13px;border:none;border-radius:14px;background:var(--c-primary);color:#fff;font-family:inherit;font-size:14px;font-weight:700;cursor:pointer}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
.cho__barExtra[data-v-be611a3c]{padding:0 16px 12px}.cho__body[data-v-be611a3c]{padding-top:132px;padding-bottom:90px}.cho__list[data-v-be611a3c]{display:flex;flex-direction:column;padding-top:16px;gap:11px}.cho__card[data-v-be611a3c]{padding:16px;background:var(--c-canvas);border:1px solid var(--c-hairline);border-radius:18px;cursor:pointer;transition:transform .2s ease}.cho__card[data-v-be611a3c]:active{transform:scale(.99)}.cho__top[data-v-be611a3c]{display:flex;justify-content:space-between;gap:12px}.cho__right[data-v-be611a3c]{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.cho__num[data-v-be611a3c]{font-size:15px;font-weight:700;margin-bottom:10px}.cho__muted[data-v-be611a3c]{color:var(--c-inkMuted);font-weight:500;margin-left:4px}.cho__meta[data-v-be611a3c]{display:flex;align-items:baseline;gap:4px}.cho__strong[data-v-be611a3c]{font-size:15px;font-weight:700}.cho__unit[data-v-be611a3c]{font-size:12px;color:var(--c-inkMuted)}.cho__status[data-v-be611a3c]{padding:5px 14px;border-radius:8px;font-size:12px;font-weight:600;color:#06b6d4;background:#06b6d41f;white-space:nowrap}.cho__divider[data-v-be611a3c]{height:1px;background:var(--c-hairline);margin:12px 0}.cho__bottom[data-v-be611a3c]{display:flex;justify-content:space-between;align-items:center}.cho__customer[data-v-be611a3c]{font-size:14px;font-weight:600;color:var(--c-inkMuted)}.cho__more[data-v-be611a3c],.cho__sentinel[data-v-be611a3c]{padding:12px 0;text-align:center;font-size:12px;color:var(--c-inkMuted)}.cho__empty[data-v-be611a3c]{margin-top:8px;padding:34px 20px;border:1px dashed var(--c-hairline);border-radius:18px;display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--c-inkMuted);font-size:13px}.cho__retry[data-v-be611a3c]{padding:8px 18px;border-radius:999px;border:1px solid var(--c-hairline);background:var(--c-canvas);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer}.cho__detail[data-v-be611a3c]{padding:20px 16px 24px}.cho__detailTitle[data-v-be611a3c]{margin:0 0 16px;font-size:17px;font-weight:700}.cho__rows[data-v-be611a3c]{margin:0;display:flex;flex-direction:column;gap:2px}.cho__row[data-v-be611a3c]{display:flex;justify-content:space-between;align-items:center;padding:11px 14px;background:var(--c-canvasSoft);border-radius:10px}.cho__row dt[data-v-be611a3c]{font-size:13px;color:var(--c-inkMuted)}.cho__row dd[data-v-be611a3c]{margin:0;font-size:14px;font-weight:600}.cho__close[data-v-be611a3c]{margin-top:18px;width:100%;padding:13px;border:none;border-radius:14px;background:var(--c-primary);color:#fff;font-family:inherit;font-size:14px;font-weight:700;cursor:pointer}
@@ -1 +1 @@
import{d as f,o as v,x as g,c as s,p as e,z as u,M as y,g as d,h as _,i as t,F as C,r as P,I as k,b as x,f as b,B as h,V as B,C as V,_ as w}from"./index-Dg78Fjh9.js";import{P as I}from"./PageBar-Ce9JfTDp.js";import{S as N}from"./SectionHead-wIJAAwTj.js";import{P as z}from"./ProductCard-DPbWAcGz.js";const F={class:"coll"},M={key:0,class:"coll__grid"},S={key:1,class:"coll__empty"},q=f({__name:"CollectionView",setup(E){const l=B(),o=d(!1),n=d([]),p=_(()=>l.query.page||"مجموعه"),c=_(()=>n.value.filter(i=>i.collections.some(a=>a.collectionId===l.params.id)));return v(async()=>{o.value=!0;try{n.value=await g.listProducts()}finally{o.value=!1}}),(i,a)=>{const m=h("container");return t(),s("div",F,[e(I,{title:p.value,"back-to":"search"},null,8,["title"]),e(y,{spinning:o.value,tip:"درحال دریافت اطلاعات"},{default:u(()=>[e(m,{class:"coll__body"},{default:u(()=>[e(N,{title:"محصولات این مجموعه",subtitle:"برای دیدن جزئیات، روی محصول ضربه بزنید"}),c.value.length?(t(),s("div",M,[(t(!0),s(C,null,P(c.value,r=>(t(),V(z,{key:r.id,value:r},null,8,["value"]))),128))])):o.value?b("",!0):(t(),s("section",S,[e(k,{icon:"vuesax-linear:box",size:"26"}),a[0]||(a[0]=x("p",null,"در این مجموعه محصولی ثبت نشده است.",-1))]))]),_:1})]),_:1},8,["spinning"])])}}}),$=w(q,[["__scopeId","data-v-d80f3c4b"]]);export{$ as default};
import{d as f,o as v,x as g,c as s,p as e,z as u,M as y,g as d,h as _,i as t,F as C,r as P,I as k,b as x,f as b,B as h,V as B,C as V,_ as w}from"./index-DOpGZRF9.js";import{P as I}from"./PageBar-DeTSeN2V.js";import{S as N}from"./SectionHead-CLPy7Yf4.js";import{P as z}from"./ProductCard-VIsRKw9N.js";const F={class:"coll"},M={key:0,class:"coll__grid"},S={key:1,class:"coll__empty"},q=f({__name:"CollectionView",setup(E){const l=B(),o=d(!1),n=d([]),p=_(()=>l.query.page||"مجموعه"),c=_(()=>n.value.filter(i=>i.collections.some(a=>a.collectionId===l.params.id)));return v(async()=>{o.value=!0;try{n.value=await g.listProducts()}finally{o.value=!1}}),(i,a)=>{const m=h("container");return t(),s("div",F,[e(I,{title:p.value,"back-to":"search"},null,8,["title"]),e(y,{spinning:o.value,tip:"درحال دریافت اطلاعات"},{default:u(()=>[e(m,{class:"coll__body"},{default:u(()=>[e(N,{title:"محصولات این مجموعه",subtitle:"برای دیدن جزئیات، روی محصول ضربه بزنید"}),c.value.length?(t(),s("div",M,[(t(!0),s(C,null,P(c.value,r=>(t(),V(z,{key:r.id,value:r},null,8,["value"]))),128))])):o.value?b("",!0):(t(),s("section",S,[e(k,{icon:"vuesax-linear:box",size:"26"}),a[0]||(a[0]=x("p",null,"در این مجموعه محصولی ثبت نشده است.",-1))]))]),_:1})]),_:1},8,["spinning"])])}}}),$=w(q,[["__scopeId","data-v-d80f3c4b"]]);export{$ as default};
@@ -1 +1 @@
import{d as B,i as r,c as _,e as $,b as o,p as t,I as C,t as x,f as k,g as l,x as I,_ as P,z as g,M as S,aQ as z,m as D,N as U,B as V,E as N,Y as R}from"./index-Dg78Fjh9.js";import{P as T}from"./PageBar-Ce9JfTDp.js";const E=["disabled"],M=["src"],j={key:1,class:"siu__icon"},L={class:"siu__text"},Y={key:2,class:"siu__badge"},A={key:0,class:"siu__error"},O=8*1024*1024,Q=B({__name:"SingleImageUploader",props:{uploadText:{},purpose:{}},emits:["done"],setup(b,{emit:y}){const a=b,p=y,u=l(null),i=l(!1),n=l(null),c=l(null),m=l(null);async function e(v){var f;const s=v.target,d=(f=s.files)==null?void 0:f[0];if(s.value="",!!d){if(n.value=null,d.size>O){n.value="حجم فایل بیش از حد مجاز است (۸ مگابایت)";return}i.value=!0;try{const w=await I.uploadDocument(d,a.purpose);c.value=w.id,m.value=d.type.startsWith("image/")?URL.createObjectURL(d):null,p("done",w.id)}catch{n.value="بارگذاری انجام نشد. دوباره تلاش کنید.",c.value=null,m.value=null}finally{i.value=!1}}}return(v,s)=>(r(),_("div",{class:$(["siu",{"is-done":!!c.value,"is-error":!!n.value}])},[o("input",{ref_key:"input",ref:u,type:"file",accept:"image/jpeg,image/png,image/webp,application/pdf",class:"siu__input",onChange:e},null,544),o("button",{type:"button",class:"siu__box",disabled:i.value,onClick:s[0]||(s[0]=d=>{var f;return(f=u.value)==null?void 0:f.click()})},[m.value?(r(),_("img",{key:0,src:m.value,class:"siu__preview",alt:""},null,8,M)):(r(),_("span",j,[t(C,{icon:i.value?"vuesax-linear:refresh":"vuesax-linear:gallery-add",size:"26"},null,8,["icon"])])),o("span",L,x(i.value?"در حال بارگذاری…":c.value?"تغییر تصویر":b.uploadText),1),c.value&&!i.value?(r(),_("span",Y,[t(C,{icon:"vuesax-linear:tick-circle",size:"16"})])):k("",!0)],8,E),n.value?(r(),_("p",A,x(n.value),1)):k("",!0)],2))}}),h=P(Q,[["__scopeId","data-v-bf1a3b6c"]]),W={class:"cpf"},X={key:0,class:"cpf__error"},q=["disabled"],F=B({__name:"CompleteProfileView",setup(b){const y=N(),a=U({business_license_image_id:null,shop_image_id:null,ncode_image_id:null}),p=l(!1),u=l(!1),i=l(null);async function n(){if(i.value=null,!a.business_license_image_id||!a.shop_image_id||!a.ncode_image_id){R.warning("لطفا تمامی عکس های خواسته شده را آپلود کنید");return}p.value=!0;try{await I.completeProfile({business_license_image_id:a.business_license_image_id,shop_image_id:a.shop_image_id,ncode_image_id:a.ncode_image_id}),u.value=!0}catch{i.value="ثبت اطلاعات انجام نشد. دوباره تلاش کنید."}finally{p.value=!1}}function c(){u.value=!1,y.push({name:"home"})}return(m,e)=>{const v=V("container");return r(),_("div",W,[t(T,{title:"تکمیل پروفایل","back-to":"userPage::hasSubRoute"}),t(S,{spinning:p.value,tip:"در حال ثبت اطلاعات"},{default:g(()=>[t(v,{class:"cpf__body"},{default:g(()=>[e[4]||(e[4]=o("p",{class:"cpf__lead"}," برای تکمیل پروفایل، سه مدرک زیر را بارگذاری کنید. ",-1)),o("form",{class:"cpf__form",onSubmit:D(n,["prevent"])},[t(h,{"upload-text":"بارگذاری عکس جواز کسب",purpose:"business-license",onDone:e[0]||(e[0]=s=>a.business_license_image_id=s)}),t(h,{"upload-text":"بارگذاری عکس سردر مغازه",purpose:"shop-image",onDone:e[1]||(e[1]=s=>a.shop_image_id=s)}),t(h,{"upload-text":"بارگذاری عکس کارت ملی",purpose:"national-card",onDone:e[2]||(e[2]=s=>a.ncode_image_id=s)}),i.value?(r(),_("p",X,x(i.value),1)):k("",!0),o("button",{type:"submit",class:"cpf__submit",disabled:p.value}," بارگذاری اطلاعات ",8,q)],32)]),_:1})]),_:1},8,["spinning"]),t(z,{show:u.value,"onUpdate:show":e[3]||(e[3]=s=>u.value=s),"time-out":-1,"close-on-click-overlay":!1},{title:g(()=>[...e[5]||(e[5]=[o("div",{class:"cpf__dialogText"}," تکمیل اطلاعات شما با موفقیت انجام شد. ",-1)])]),button:g(()=>[o("div",{class:"cpf__dialogBtn",onClick:c},"متوجه شدم")]),_:1},8,["show"])])}}}),J=P(F,[["__scopeId","data-v-7f15a76b"]]);export{J as default};
import{d as B,i as r,c as _,e as $,b as o,p as t,I as C,t as x,f as k,g as l,x as I,_ as P,z as g,M as S,aQ as z,m as D,N as U,B as V,E as N,Y as R}from"./index-DOpGZRF9.js";import{P as T}from"./PageBar-DeTSeN2V.js";const E=["disabled"],M=["src"],j={key:1,class:"siu__icon"},L={class:"siu__text"},Y={key:2,class:"siu__badge"},A={key:0,class:"siu__error"},O=8*1024*1024,Q=B({__name:"SingleImageUploader",props:{uploadText:{},purpose:{}},emits:["done"],setup(b,{emit:y}){const a=b,p=y,u=l(null),i=l(!1),n=l(null),c=l(null),m=l(null);async function e(v){var f;const s=v.target,d=(f=s.files)==null?void 0:f[0];if(s.value="",!!d){if(n.value=null,d.size>O){n.value="حجم فایل بیش از حد مجاز است (۸ مگابایت)";return}i.value=!0;try{const w=await I.uploadDocument(d,a.purpose);c.value=w.id,m.value=d.type.startsWith("image/")?URL.createObjectURL(d):null,p("done",w.id)}catch{n.value="بارگذاری انجام نشد. دوباره تلاش کنید.",c.value=null,m.value=null}finally{i.value=!1}}}return(v,s)=>(r(),_("div",{class:$(["siu",{"is-done":!!c.value,"is-error":!!n.value}])},[o("input",{ref_key:"input",ref:u,type:"file",accept:"image/jpeg,image/png,image/webp,application/pdf",class:"siu__input",onChange:e},null,544),o("button",{type:"button",class:"siu__box",disabled:i.value,onClick:s[0]||(s[0]=d=>{var f;return(f=u.value)==null?void 0:f.click()})},[m.value?(r(),_("img",{key:0,src:m.value,class:"siu__preview",alt:""},null,8,M)):(r(),_("span",j,[t(C,{icon:i.value?"vuesax-linear:refresh":"vuesax-linear:gallery-add",size:"26"},null,8,["icon"])])),o("span",L,x(i.value?"در حال بارگذاری…":c.value?"تغییر تصویر":b.uploadText),1),c.value&&!i.value?(r(),_("span",Y,[t(C,{icon:"vuesax-linear:tick-circle",size:"16"})])):k("",!0)],8,E),n.value?(r(),_("p",A,x(n.value),1)):k("",!0)],2))}}),h=P(Q,[["__scopeId","data-v-bf1a3b6c"]]),W={class:"cpf"},X={key:0,class:"cpf__error"},q=["disabled"],F=B({__name:"CompleteProfileView",setup(b){const y=N(),a=U({business_license_image_id:null,shop_image_id:null,ncode_image_id:null}),p=l(!1),u=l(!1),i=l(null);async function n(){if(i.value=null,!a.business_license_image_id||!a.shop_image_id||!a.ncode_image_id){R.warning("لطفا تمامی عکس های خواسته شده را آپلود کنید");return}p.value=!0;try{await I.completeProfile({business_license_image_id:a.business_license_image_id,shop_image_id:a.shop_image_id,ncode_image_id:a.ncode_image_id}),u.value=!0}catch{i.value="ثبت اطلاعات انجام نشد. دوباره تلاش کنید."}finally{p.value=!1}}function c(){u.value=!1,y.push({name:"home"})}return(m,e)=>{const v=V("container");return r(),_("div",W,[t(T,{title:"تکمیل پروفایل","back-to":"userPage::hasSubRoute"}),t(S,{spinning:p.value,tip:"در حال ثبت اطلاعات"},{default:g(()=>[t(v,{class:"cpf__body"},{default:g(()=>[e[4]||(e[4]=o("p",{class:"cpf__lead"}," برای تکمیل پروفایل، سه مدرک زیر را بارگذاری کنید. ",-1)),o("form",{class:"cpf__form",onSubmit:D(n,["prevent"])},[t(h,{"upload-text":"بارگذاری عکس جواز کسب",purpose:"business-license",onDone:e[0]||(e[0]=s=>a.business_license_image_id=s)}),t(h,{"upload-text":"بارگذاری عکس سردر مغازه",purpose:"shop-image",onDone:e[1]||(e[1]=s=>a.shop_image_id=s)}),t(h,{"upload-text":"بارگذاری عکس کارت ملی",purpose:"national-card",onDone:e[2]||(e[2]=s=>a.ncode_image_id=s)}),i.value?(r(),_("p",X,x(i.value),1)):k("",!0),o("button",{type:"submit",class:"cpf__submit",disabled:p.value}," بارگذاری اطلاعات ",8,q)],32)]),_:1})]),_:1},8,["spinning"]),t(z,{show:u.value,"onUpdate:show":e[3]||(e[3]=s=>u.value=s),"time-out":-1,"close-on-click-overlay":!1},{title:g(()=>[...e[5]||(e[5]=[o("div",{class:"cpf__dialogText"}," تکمیل اطلاعات شما با موفقیت انجام شد. ",-1)])]),button:g(()=>[o("div",{class:"cpf__dialogBtn",onClick:c},"متوجه شدم")]),_:1},8,["show"])])}}}),J=P(F,[["__scopeId","data-v-7f15a76b"]]);export{J as default};
@@ -0,0 +1 @@
.cch__barExtra[data-v-6c53090c]{padding:0 16px 12px}.cch__body[data-v-6c53090c]{padding-top:132px;padding-bottom:90px}.cch__list[data-v-6c53090c]{display:flex;flex-direction:column;padding-top:16px;gap:11px}.cch__card[data-v-6c53090c]{padding:16px;background:var(--c-canvas);border:1px solid var(--c-hairline);border-radius:18px;cursor:pointer;transition:transform .2s ease}.cch__card[data-v-6c53090c]:active{transform:scale(.99)}.cch__head[data-v-6c53090c]{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}.cch__name[data-v-6c53090c]{margin:0;font-size:15.5px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cch__state[data-v-6c53090c]{flex:0 0 auto;padding:4px 12px;border-radius:999px;font-size:11.5px;font-weight:600}.cch__state.is-on[data-v-6c53090c]{color:var(--c-green);background:rgb(var(--c-green-rgb) / 14%)}.cch__state.is-off[data-v-6c53090c]{color:var(--c-red);background:rgb(var(--c-red-rgb) / 12%)}.cch__facts[data-v-6c53090c]{display:flex;flex-direction:column;gap:7px}.cch__fact[data-v-6c53090c]{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:600;color:var(--c-inkMuted)}.cch__empty[data-v-6c53090c]{margin-top:8px;padding:34px 20px;border:1px dashed var(--c-hairline);border-radius:18px;display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--c-inkMuted);font-size:13px}.cch__retry[data-v-6c53090c]{padding:8px 18px;border-radius:999px;border:1px solid var(--c-hairline);background:var(--c-canvas);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer}.cch__detail[data-v-6c53090c]{padding:20px 16px 24px}.cch__detailTitle[data-v-6c53090c]{margin:0 0 16px;font-size:17px;font-weight:700}.cch__rows[data-v-6c53090c]{margin:0;display:flex;flex-direction:column;gap:2px}.cch__row[data-v-6c53090c]{display:flex;justify-content:space-between;align-items:center;padding:11px 14px;background:var(--c-canvasSoft);border-radius:10px}.cch__row dt[data-v-6c53090c]{font-size:13px;color:var(--c-inkMuted)}.cch__row dd[data-v-6c53090c]{margin:0;font-size:14px;font-weight:600}.cch__close[data-v-6c53090c]{margin-top:18px;width:100%;padding:13px;border:none;border-radius:14px;background:var(--c-primary);color:#fff;font-family:inherit;font-size:14px;font-weight:700;cursor:pointer}
@@ -1 +0,0 @@
import{d as V,o as S,c,p as a,z as d,M as B,l as w,g as r,x as N,i,b as s,F as P,r as D,I as u,t as o,f as m,B as F,e as I,_ as E}from"./index-Dg78Fjh9.js";import{P as R}from"./PageBar-Ce9JfTDp.js";import{S as $}from"./SearchInput-B8FmHJhZ.js";import{D as M}from"./index-Pu-AYmD8.js";import{P as U}from"./index-CKLnG6u7.js";import"./KeyCode-Cq_g5D61.js";import"./classCallCheck-CbaFv7Ew.js";import"./raf-nDFcuFT6.js";const L={class:"cch"},O={class:"cch__barExtra"},T={key:0,class:"cch__list"},j=["onClick"],q={class:"cch__head"},A={class:"cch__name"},G={class:"cch__facts"},H={class:"cch__fact"},J={dir:"ltr"},K={class:"cch__fact"},Q={dir:"ltr"},W={key:0,class:"cch__fact"},X={key:1,class:"cch__empty"},Y={key:2,class:"cch__empty"},Z={key:0,class:"cch__detail"},ss={class:"cch__detailTitle"},es={class:"cch__rows"},ts={class:"cch__row"},os={dir:"ltr"},as={class:"cch__row"},ls={dir:"ltr"},ns={class:"cch__row"},cs={class:"cch__row"},is={class:"cch__row"},rs={dir:"ltr"},_s={class:"cch__row"},ds={dir:"ltr"},us={class:"cch__row"},vs=V({__name:"CustomerChoiceView",setup(hs){const _=r([]),v=r(!1),y=r(!1),h=r(!1),b=r(null),p=r(!1),l=r(null);function g(n){const e=Number(n??0);return Number.isFinite(e)?e.toFixed(3):"0.000"}async function f(){v.value=!0,h.value=!1;try{_.value=await N.getExpertCustomers(b.value)}catch{h.value=!0,_.value=[]}finally{v.value=!1}}async function C(n){b.value=n!=null&&n.trim()?n.trim():null,await f()}async function k(){await f(),y.value=!1}function x(n){l.value=n,p.value=!0}return S(f),(n,e)=>{const z=F("container");return i(),c("div",L,[a(R,{title:"لیست مشتریان","back-to":"userPage::hasSubRoute"},{below:d(()=>[s("div",O,[a($,{onSearch:C,"place-holder":"جستجو"})])]),_:1}),a(B,{spinning:v.value&&!_.value.length,tip:"درحال دریافت اطلاعات"},{default:d(()=>[a(w(U),{modelValue:y.value,"onUpdate:modelValue":e[0]||(e[0]=t=>y.value=t),onRefresh:k},{default:d(()=>[a(z,{class:"cch__body"},{default:d(()=>[_.value.length?(i(),c("div",T,[(i(!0),c(P,null,D(_.value,t=>(i(),c("article",{key:t.id,class:"cch__card",onClick:ps=>x(t)},[s("div",q,[s("h3",A,o(t.name),1),s("span",{class:I(["cch__state",t.active===1?"is-on":"is-off"])},o(t.active===1?"فعال":"غیرفعال"),3)]),s("div",G,[s("div",H,[a(u,{icon:"vuesax-linear:mobile",size:"15"}),s("span",J,o(t.mobile||"—"),1)]),s("div",K,[a(u,{icon:"vuesax-linear:call",size:"15"}),s("span",Q,o(t.phone||"—"),1)]),t.store_name?(i(),c("div",W,[a(u,{icon:"vuesax-linear:shop",size:"15"}),s("span",null,o(t.store_name),1)])):m("",!0)])],8,j))),128))])):!v.value&&!h.value?(i(),c("section",X,[a(u,{icon:"vuesax-linear:profile-2user",size:"26"}),s("p",null,o(b.value?"مشتری با این مشخصات پیدا نشد.":"هنوز مشتری‌ای به شما معرفی نشده است."),1)])):m("",!0),h.value?(i(),c("section",Y,[a(u,{icon:"vuesax-linear:danger",size:"26"}),e[3]||(e[3]=s("p",null,"دریافت اطلاعات با خطا روبه‌رو شد.",-1)),s("button",{type:"button",class:"cch__retry",onClick:f},"تلاش دوباره")])):m("",!0)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["spinning"]),a(w(M),{open:p.value,"onUpdate:open":e[2]||(e[2]=t=>p.value=t),placement:"bottom",height:"auto",closable:!1,"body-style":{padding:"0"}},{default:d(()=>[l.value?(i(),c("div",Z,[s("h2",ss,o(l.value.name),1),s("dl",es,[s("div",ts,[e[4]||(e[4]=s("dt",null,"موبایل",-1)),s("dd",os,o(l.value.mobile||"—"),1)]),s("div",as,[e[5]||(e[5]=s("dt",null,"تلفن",-1)),s("dd",ls,o(l.value.phone||"—"),1)]),s("div",ns,[e[6]||(e[6]=s("dt",null,"نام مغازه",-1)),s("dd",null,o(l.value.store_name||"—"),1)]),s("div",cs,[e[7]||(e[7]=s("dt",null,"نام پاساژ",-1)),s("dd",null,o(l.value.pasazh_name||"—"),1)]),s("div",is,[e[8]||(e[8]=s("dt",null,"سقف اعتبار",-1)),s("dd",rs,o(g(l.value.gram_level))+" گرم",1)]),s("div",_s,[e[9]||(e[9]=s("dt",null,"بدهی گرمی",-1)),s("dd",ds,o(g(l.value.remain))+" گرم",1)]),s("div",us,[e[10]||(e[10]=s("dt",null,"وضعیت",-1)),s("dd",null,o(l.value.active===1?"فعال":"غیرفعال"),1)])]),s("button",{type:"button",class:"cch__close",onClick:e[1]||(e[1]=t=>p.value=!1)},"بستن")])):m("",!0)]),_:1},8,["open"])])}}}),xs=E(vs,[["__scopeId","data-v-5cc10fa7"]]);export{xs as default};
@@ -0,0 +1 @@
import{d as S,o as B,c,p as o,z as i,M as N,l as u,g as d,x as P,i as r,b as s,F as D,r as F,I as v,t as l,f as g,L as w,B as I,e as E,_ as L}from"./index-DOpGZRF9.js";import{P as R}from"./PageBar-DeTSeN2V.js";import{S as $}from"./SearchInput-D_58732w.js";import{D as M}from"./index-9k1Jdmtu.js";import{P as U}from"./index-B5ImOnMw.js";import"./KeyCode-DSd4o8Xn.js";import"./classCallCheck-Bw-Na1wZ.js";import"./raf-nDFcuFT6.js";const O={class:"cch"},T={class:"cch__barExtra"},j={key:0,class:"cch__list"},q=["onClick"],A={class:"cch__head"},G={class:"cch__name"},H={class:"cch__facts"},J={class:"cch__fact"},K={dir:"ltr"},Q={class:"cch__fact"},W={dir:"ltr"},X={key:0,class:"cch__fact"},Y={key:1,class:"cch__empty"},Z={key:2,class:"cch__empty"},ss={key:0,class:"cch__detail"},es={class:"cch__detailTitle"},ts={class:"cch__rows"},os={class:"cch__row"},ls={dir:"ltr"},as={class:"cch__row"},ns={dir:"ltr"},is={class:"cch__row"},cs={class:"cch__row"},rs={class:"cch__row"},ds={dir:"ltr"},_s={class:"cch__row"},us={dir:"ltr"},vs={class:"cch__row"},hs=S({__name:"CustomerChoiceView",setup(ps){const _=d([]),h=d(!1),y=d(!1),p=d(!1),b=d(null),f=d(!1),a=d(null);function C(n){const e=Number(n??0);return Number.isFinite(e)?e.toFixed(3):"0.000"}async function m(){h.value=!0,p.value=!1;try{_.value=await P.getExpertCustomers(b.value)}catch{p.value=!0,_.value=[]}finally{h.value=!1}}async function k(n){b.value=n!=null&&n.trim()?n.trim():null,await m()}async function x(){await m(),y.value=!1}function z(n){a.value=n,f.value=!0}return B(m),(n,e)=>{const V=I("container");return r(),c("div",O,[o(R,{title:"لیست مشتریان","back-to":"userPage::hasSubRoute"},{below:i(()=>[s("div",T,[o($,{onSearch:k,"place-holder":"جستجو"})])]),_:1}),o(N,{spinning:h.value&&!_.value.length,tip:"درحال دریافت اطلاعات"},{default:i(()=>[o(u(U),{modelValue:y.value,"onUpdate:modelValue":e[0]||(e[0]=t=>y.value=t),onRefresh:x},{pulling:i(()=>[o(u(w),{size:"18"})]),loosing:i(()=>[o(u(w),{size:"18"})]),loading:i(()=>[o(u(w),{size:"18"})]),success:i(()=>[...e[3]||(e[3]=[s("span",null,null,-1)])]),default:i(()=>[o(V,{class:"cch__body"},{default:i(()=>[_.value.length?(r(),c("div",j,[(r(!0),c(D,null,F(_.value,t=>(r(),c("article",{key:t.id,class:"cch__card",onClick:fs=>z(t)},[s("div",A,[s("h3",G,l(t.name),1),s("span",{class:E(["cch__state",t.active===1?"is-on":"is-off"])},l(t.active===1?"فعال":"غیرفعال"),3)]),s("div",H,[s("div",J,[o(v,{icon:"vuesax-linear:mobile",size:"15"}),s("span",K,l(t.mobile||"—"),1)]),s("div",Q,[o(v,{icon:"vuesax-linear:call",size:"15"}),s("span",W,l(t.phone||"—"),1)]),t.store_name?(r(),c("div",X,[o(v,{icon:"vuesax-linear:shop",size:"15"}),s("span",null,l(t.store_name),1)])):g("",!0)])],8,q))),128))])):!h.value&&!p.value?(r(),c("section",Y,[o(v,{icon:"vuesax-linear:profile-2user",size:"26"}),s("p",null,l(b.value?"مشتری با این مشخصات پیدا نشد.":"هنوز مشتری‌ای به شما معرفی نشده است."),1)])):g("",!0),p.value?(r(),c("section",Z,[o(v,{icon:"vuesax-linear:danger",size:"26"}),e[4]||(e[4]=s("p",null,"دریافت اطلاعات با خطا روبه‌رو شد.",-1)),s("button",{type:"button",class:"cch__retry",onClick:m},"تلاش دوباره")])):g("",!0)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["spinning"]),o(u(M),{open:f.value,"onUpdate:open":e[2]||(e[2]=t=>f.value=t),placement:"bottom",height:"auto",closable:!1,"body-style":{padding:"0"}},{default:i(()=>[a.value?(r(),c("div",ss,[s("h2",es,l(a.value.name),1),s("dl",ts,[s("div",os,[e[5]||(e[5]=s("dt",null,"موبایل",-1)),s("dd",ls,l(a.value.mobile||"—"),1)]),s("div",as,[e[6]||(e[6]=s("dt",null,"تلفن",-1)),s("dd",ns,l(a.value.phone||"—"),1)]),s("div",is,[e[7]||(e[7]=s("dt",null,"نام مغازه",-1)),s("dd",null,l(a.value.store_name||"—"),1)]),s("div",cs,[e[8]||(e[8]=s("dt",null,"نام پاساژ",-1)),s("dd",null,l(a.value.pasazh_name||"—"),1)]),s("div",rs,[e[9]||(e[9]=s("dt",null,"سقف اعتبار",-1)),s("dd",ds,l(C(a.value.gram_level))+" گرم",1)]),s("div",_s,[e[10]||(e[10]=s("dt",null,"بدهی گرمی",-1)),s("dd",us,l(C(a.value.remain))+" گرم",1)]),s("div",vs,[e[11]||(e[11]=s("dt",null,"وضعیت",-1)),s("dd",null,l(a.value.active===1?"فعال":"غیرفعال"),1)])]),s("button",{type:"button",class:"cch__close",onClick:e[1]||(e[1]=t=>f.value=!1)},"بستن")])):g("",!0)]),_:1},8,["open"])])}}}),zs=L(hs,[["__scopeId","data-v-6c53090c"]]);export{zs as default};
@@ -1 +0,0 @@
.cch__barExtra[data-v-5cc10fa7]{padding:0 16px 12px}.cch__body[data-v-5cc10fa7]{padding-top:132px;padding-bottom:90px}.cch__list[data-v-5cc10fa7]{display:flex;flex-direction:column;padding-top:16px;gap:11px}.cch__card[data-v-5cc10fa7]{padding:16px;background:var(--c-canvas);border:1px solid var(--c-hairline);border-radius:18px;cursor:pointer;transition:transform .2s ease}.cch__card[data-v-5cc10fa7]:active{transform:scale(.99)}.cch__head[data-v-5cc10fa7]{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}.cch__name[data-v-5cc10fa7]{margin:0;font-size:15.5px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cch__state[data-v-5cc10fa7]{flex:0 0 auto;padding:4px 12px;border-radius:999px;font-size:11.5px;font-weight:600}.cch__state.is-on[data-v-5cc10fa7]{color:var(--c-green);background:rgb(var(--c-green-rgb) / 14%)}.cch__state.is-off[data-v-5cc10fa7]{color:var(--c-red);background:rgb(var(--c-red-rgb) / 12%)}.cch__facts[data-v-5cc10fa7]{display:flex;flex-direction:column;gap:7px}.cch__fact[data-v-5cc10fa7]{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:600;color:var(--c-inkMuted)}.cch__empty[data-v-5cc10fa7]{margin-top:8px;padding:34px 20px;border:1px dashed var(--c-hairline);border-radius:18px;display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--c-inkMuted);font-size:13px}.cch__retry[data-v-5cc10fa7]{padding:8px 18px;border-radius:999px;border:1px solid var(--c-hairline);background:var(--c-canvas);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer}.cch__detail[data-v-5cc10fa7]{padding:20px 16px 24px}.cch__detailTitle[data-v-5cc10fa7]{margin:0 0 16px;font-size:17px;font-weight:700}.cch__rows[data-v-5cc10fa7]{margin:0;display:flex;flex-direction:column;gap:2px}.cch__row[data-v-5cc10fa7]{display:flex;justify-content:space-between;align-items:center;padding:11px 14px;background:var(--c-canvasSoft);border-radius:10px}.cch__row dt[data-v-5cc10fa7]{font-size:13px;color:var(--c-inkMuted)}.cch__row dd[data-v-5cc10fa7]{margin:0;font-size:14px;font-weight:600}.cch__close[data-v-5cc10fa7]{margin-top:18px;width:100%;padding:13px;border:none;border-radius:14px;background:var(--c-primary);color:#fff;font-family:inherit;font-size:14px;font-weight:700;cursor:pointer}
+1
View File
@@ -0,0 +1 @@
.dash[data-v-ff8e20b8]{background:var(--c-page);min-height:100vh}.dash__bar[data-v-ff8e20b8]{position:fixed;top:0;left:0;right:0;z-index:20;background:rgb(var(--c-canvas-rgb) / 88%);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--c-hairline)}.dash__barInner[data-v-ff8e20b8]{max-width:768px;margin:0 auto;padding:11px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.dash__barTitle[data-v-ff8e20b8]{margin:0;font-size:14.5px;font-weight:800;color:var(--c-ink)}.dash__barBtn[data-v-ff8e20b8]{flex:0 0 auto;width:38px;height:38px;border:0;cursor:pointer;border-radius:12px;display:grid;place-items:center;color:var(--c-wine);background:var(--c-wineWash)}.dash__barBtn[data-v-ff8e20b8]:active{transform:scale(.94)}.dash__barSpacer[data-v-ff8e20b8]{display:block;width:38px;height:38px}.dash__body[data-v-ff8e20b8]{padding-top:76px;padding-bottom:90px}.dash__balance[data-v-ff8e20b8]{padding:16px;border-radius:20px;background:var(--c-primary);color:#fff;box-shadow:0 14px 30px -22px #14161af2}.dash__balanceHead[data-v-ff8e20b8]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.dash__eyebrow[data-v-ff8e20b8]{font-size:11.5px;color:#ffffff9e}.dash__figure[data-v-ff8e20b8]{padding-top:5px;font-size:25px;font-weight:800;letter-spacing:-.3px}.dash__unit[data-v-ff8e20b8]{font-size:11.5px;font-weight:600;color:#ffffff9e;padding-inline-start:4px}.dash__seal[data-v-ff8e20b8]{flex:0 0 auto;padding:5px 12px;border-radius:999px;font-size:10.5px;font-weight:700}.dash__seal.is-debtor[data-v-ff8e20b8]{color:#fff;background:var(--c-wineSoft)}.dash__seal.is-creditor[data-v-ff8e20b8]{color:#14161a;background:#ffffffe6}.dash__balanceRow[data-v-ff8e20b8]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;padding-top:13px;border-top:1px solid rgba(255,255,255,.13)}.dash__rowLabel[data-v-ff8e20b8]{font-size:11.5px;color:#ffffff9e}.dash__rowValue[data-v-ff8e20b8]{font-size:13.5px;font-weight:700}.dash__rowValue i[data-v-ff8e20b8]{font-style:normal;font-size:10.5px;font-weight:600;color:#ffffff9e;padding-inline-start:3px}.dash__identity[data-v-ff8e20b8]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:13px;padding-top:13px;border-top:1px solid rgba(255,255,255,.13)}.dash__name[data-v-ff8e20b8]{font-size:12.5px;font-weight:700}.dash__mobile[data-v-ff8e20b8]{font-size:11.5px;color:#ffffff9e;direction:ltr}.dash__invite[data-v-ff8e20b8]{display:flex;align-items:center;gap:12px;padding:16px;border:1px solid var(--c-hairline);border-radius:20px;background:var(--c-canvasSoft)}.dash__inviteIcon[data-v-ff8e20b8]{flex:0 0 42px;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;color:var(--c-wine);background:var(--c-wineWash)}.dash__inviteCopy[data-v-ff8e20b8]{flex:1;min-width:0}.dash__inviteCopy h3[data-v-ff8e20b8]{margin:0;font-size:13px;font-weight:800;color:var(--c-ink)}.dash__inviteCopy p[data-v-ff8e20b8]{margin:4px 0 0;font-size:11.5px;color:var(--c-inkFaint)}.dash__inviteCta[data-v-ff8e20b8]{flex:0 0 auto;padding:9px 14px;border:0;cursor:pointer;border-radius:999px;font-family:inherit;font-size:11.5px;font-weight:700;color:#fff;background:var(--c-primary)}.dash__section[data-v-ff8e20b8]{margin-top:26px}.dash__grid[data-v-ff8e20b8]{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.dash__tile[data-v-ff8e20b8]{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 6px;border:1px solid var(--c-hairline);border-radius:16px;cursor:pointer;background:var(--c-canvas);font-family:inherit;transition:transform .18s ease}.dash__tile[data-v-ff8e20b8]:active{transform:scale(.97)}.dash__tile.is-disabled[data-v-ff8e20b8]{opacity:.4}.dash__tileIcon[data-v-ff8e20b8]{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;color:var(--c-inkSoft);background:var(--c-hairlineSoft)}.dash__tileTitle[data-v-ff8e20b8]{font-size:11px;font-weight:700;color:var(--c-inkSoft)}
-1
View File
@@ -1 +0,0 @@
.dash[data-v-6ae14e9b]{background:var(--c-page);min-height:100vh}.dash__bar[data-v-6ae14e9b]{position:fixed;top:0;left:0;right:0;z-index:20;background:rgb(var(--c-canvas-rgb) / 88%);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--c-hairline)}.dash__barInner[data-v-6ae14e9b]{max-width:768px;margin:0 auto;padding:11px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.dash__barTitle[data-v-6ae14e9b]{margin:0;font-size:14.5px;font-weight:800;color:var(--c-ink)}.dash__barBtn[data-v-6ae14e9b]{flex:0 0 auto;width:38px;height:38px;border:0;cursor:pointer;border-radius:12px;display:grid;place-items:center;color:var(--c-wine);background:var(--c-wineWash)}.dash__barBtn[data-v-6ae14e9b]:active{transform:scale(.94)}.dash__barSpacer[data-v-6ae14e9b]{display:block;width:38px;height:38px}.dash__body[data-v-6ae14e9b]{padding-top:76px;padding-bottom:90px}.dash__balance[data-v-6ae14e9b]{padding:16px;border-radius:20px;background:var(--c-primary);color:#fff;box-shadow:0 14px 30px -22px #14161af2}.dash__balanceHead[data-v-6ae14e9b]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.dash__eyebrow[data-v-6ae14e9b]{font-size:11.5px;color:#ffffff9e}.dash__figure[data-v-6ae14e9b]{padding-top:5px;font-size:25px;font-weight:800;letter-spacing:-.3px}.dash__unit[data-v-6ae14e9b]{font-size:11.5px;font-weight:600;color:#ffffff9e;padding-inline-start:4px}.dash__seal[data-v-6ae14e9b]{flex:0 0 auto;padding:5px 12px;border-radius:999px;font-size:10.5px;font-weight:700}.dash__seal.is-debtor[data-v-6ae14e9b]{color:#fff;background:var(--c-wineSoft)}.dash__seal.is-creditor[data-v-6ae14e9b]{color:#14161a;background:#ffffffe6}.dash__balanceRow[data-v-6ae14e9b]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;padding-top:13px;border-top:1px solid rgba(255,255,255,.13)}.dash__rowLabel[data-v-6ae14e9b]{font-size:11.5px;color:#ffffff9e}.dash__rowValue[data-v-6ae14e9b]{font-size:13.5px;font-weight:700}.dash__rowValue i[data-v-6ae14e9b]{font-style:normal;font-size:10.5px;font-weight:600;color:#ffffff9e;padding-inline-start:3px}.dash__identity[data-v-6ae14e9b]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:13px;padding-top:13px;border-top:1px solid rgba(255,255,255,.13)}.dash__name[data-v-6ae14e9b]{font-size:12.5px;font-weight:700}.dash__mobile[data-v-6ae14e9b]{font-size:11.5px;color:#ffffff9e;direction:ltr}.dash__invite[data-v-6ae14e9b]{display:flex;align-items:center;gap:12px;padding:16px;border:1px solid var(--c-hairline);border-radius:20px;background:var(--c-canvasSoft)}.dash__inviteIcon[data-v-6ae14e9b]{flex:0 0 42px;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;color:var(--c-wine);background:var(--c-wineWash)}.dash__inviteCopy[data-v-6ae14e9b]{flex:1;min-width:0}.dash__inviteCopy h3[data-v-6ae14e9b]{margin:0;font-size:13px;font-weight:800;color:var(--c-ink)}.dash__inviteCopy p[data-v-6ae14e9b]{margin:4px 0 0;font-size:11.5px;color:var(--c-inkFaint)}.dash__inviteCta[data-v-6ae14e9b]{flex:0 0 auto;padding:9px 14px;border:0;cursor:pointer;border-radius:999px;font-family:inherit;font-size:11.5px;font-weight:700;color:#fff;background:var(--c-primary)}.dash__section[data-v-6ae14e9b]{margin-top:26px}.dash__grid[data-v-6ae14e9b]{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.dash__tile[data-v-6ae14e9b]{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 6px;border:1px solid var(--c-hairline);border-radius:16px;cursor:pointer;background:var(--c-canvas);font-family:inherit;transition:transform .18s ease}.dash__tile[data-v-6ae14e9b]:active{transform:scale(.97)}.dash__tile.is-disabled[data-v-6ae14e9b]{opacity:.4}.dash__tileIcon[data-v-6ae14e9b]{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;color:var(--c-inkSoft);background:var(--c-hairlineSoft)}.dash__tileTitle[data-v-6ae14e9b]{font-size:11px;font-weight:700;color:var(--c-inkSoft)}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{d as m,j as g,o as y,x as b,c as o,p as e,z as c,M as h,g as d,i as t,F as _,b as l,r as k,I as C,l as P,f as x,E as B,h as F,B as V,C as w,_ as S}from"./index-Dg78Fjh9.js";import{P as I}from"./PageBar-Ce9JfTDp.js";import{S as N}from"./SectionHead-wIJAAwTj.js";import{P as $}from"./ProductCard-DPbWAcGz.js";const z={class:"favs"},E={class:"favs__grid"},M={key:1,class:"favs__empty"},R=m({__name:"FavoritesView",setup(j){const v=B(),f=g(),a=d(!1),i=d([]),n=F(()=>i.value.filter(u=>f.isFavorite(u.id)));return y(async()=>{a.value=!0;try{i.value=await b.listProducts()}finally{a.value=!1}}),(u,s)=>{const p=V("container");return t(),o("div",z,[e(I,{title:"علاقه‌مندی","back-to":"userPage::hasSubRoute"}),e(h,{spinning:a.value,tip:"در حال دریافت اطلاعات"},{default:c(()=>[e(p,{class:"favs__body"},{default:c(()=>[n.value.length?(t(),o(_,{key:0},[e(N,{title:"ذخیره‌شده‌ها",subtitle:`${n.value.length} محصول`},null,8,["subtitle"]),l("div",E,[(t(!0),o(_,null,k(n.value,r=>(t(),w($,{key:r.id,value:r},null,8,["value"]))),128))])],64)):a.value?x("",!0):(t(),o("section",M,[e(C,{icon:"vuesax-linear:heart",size:"26"}),s[1]||(s[1]=l("p",null,"هنوز محصولی را به علاقه‌مندی‌ها اضافه نکرده‌اید.",-1)),l("button",{type:"button",class:"favs__emptyCta",onClick:s[0]||(s[0]=r=>P(v).push({name:"home"}))}," دیدن محصولات ")]))]),_:1})]),_:1},8,["spinning"])])}}}),D=S(R,[["__scopeId","data-v-c69512ae"]]);export{D as default};
import{d as m,j as g,o as y,x as b,c as o,p as e,z as c,M as h,g as d,i as t,F as _,b as l,r as k,I as C,l as P,f as x,E as B,h as F,B as V,C as w,_ as S}from"./index-DOpGZRF9.js";import{P as I}from"./PageBar-DeTSeN2V.js";import{S as N}from"./SectionHead-CLPy7Yf4.js";import{P as $}from"./ProductCard-VIsRKw9N.js";const z={class:"favs"},E={class:"favs__grid"},M={key:1,class:"favs__empty"},R=m({__name:"FavoritesView",setup(j){const v=B(),f=g(),a=d(!1),i=d([]),n=F(()=>i.value.filter(u=>f.isFavorite(u.id)));return y(async()=>{a.value=!0;try{i.value=await b.listProducts()}finally{a.value=!1}}),(u,s)=>{const p=V("container");return t(),o("div",z,[e(I,{title:"علاقه‌مندی","back-to":"userPage::hasSubRoute"}),e(h,{spinning:a.value,tip:"در حال دریافت اطلاعات"},{default:c(()=>[e(p,{class:"favs__body"},{default:c(()=>[n.value.length?(t(),o(_,{key:0},[e(N,{title:"ذخیره‌شده‌ها",subtitle:`${n.value.length} محصول`},null,8,["subtitle"]),l("div",E,[(t(!0),o(_,null,k(n.value,r=>(t(),w($,{key:r.id,value:r},null,8,["value"]))),128))])],64)):a.value?x("",!0):(t(),o("section",M,[e(C,{icon:"vuesax-linear:heart",size:"26"}),s[1]||(s[1]=l("p",null,"هنوز محصولی را به علاقه‌مندی‌ها اضافه نکرده‌اید.",-1)),l("button",{type:"button",class:"favs__emptyCta",onClick:s[0]||(s[0]=r=>P(v).push({name:"home"}))}," دیدن محصولات ")]))]),_:1})]),_:1},8,["spinning"])])}}}),D=S(R,[["__scopeId","data-v-c69512ae"]]);export{D as default};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{ac as d,h as f,ar as g,d as P,ae as p,O as C,T,a0 as h,X as m,a as R,p as x,bi as y}from"./index-Dg78Fjh9.js";var E=!1;try{var c=Object.defineProperty({},"passive",{get:function(){E=!0}});window.addEventListener("testPassive",null,c),window.removeEventListener("testPassive",null,c)}catch{}var j=Symbol("TriggerContextKey"),K=function(e){return e?d(j,{setPortal:function(){},popPortal:!1}):{setPortal:function(){},popPortal:!1}},v=Symbol("PortalContextKey"),b=function(e){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{inTriggerContext:!0};g(v,{inTriggerContext:i.inTriggerContext,shouldRender:f(function(){var n=e||{},u=n.sPopupVisible,t=n.popupRef,l=n.forceRender,r=n.autoDestroy,s=!1;return(u||t||l)&&(s=!0),!u&&r&&(s=!1),s})})},D=function(){b({},{inTriggerContext:!1});var e=d(v,{shouldRender:f(function(){return!1}),inTriggerContext:!1});return{shouldRender:f(function(){return e.shouldRender.value||e.inTriggerContext===!1})}};const N=P({compatConfig:{MODE:3},name:"Portal",inheritAttrs:!1,props:{getContainer:p.func.isRequired,didUpdate:Function},setup:function(e,i){var n=i.slots,u=!0,t,l=D(),r=l.shouldRender;C(function(){u=!1,r.value&&(t=e.getContainer())});var s=T(r,function(){r.value&&!t&&(t=e.getContainer()),t&&s()});return h(function(){m(function(){if(r.value){var o;(o=e.didUpdate)===null||o===void 0||o.call(e,e)}})}),R(function(){t&&t.parentNode&&t.parentNode.removeChild(t)}),function(){if(!r.value)return null;if(u){var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}return t?x(y,{to:t},n):null}}});var O={ESC:27,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40};export{O as K,N as P,K as a,E as s,b as u};
import{ac as d,h as f,ar as g,d as P,ae as p,O as C,T,a0 as h,X as m,a as R,p as x,bi as y}from"./index-DOpGZRF9.js";var E=!1;try{var c=Object.defineProperty({},"passive",{get:function(){E=!0}});window.addEventListener("testPassive",null,c),window.removeEventListener("testPassive",null,c)}catch{}var j=Symbol("TriggerContextKey"),K=function(e){return e?d(j,{setPortal:function(){},popPortal:!1}):{setPortal:function(){},popPortal:!1}},v=Symbol("PortalContextKey"),b=function(e){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{inTriggerContext:!0};g(v,{inTriggerContext:i.inTriggerContext,shouldRender:f(function(){var n=e||{},u=n.sPopupVisible,t=n.popupRef,l=n.forceRender,r=n.autoDestroy,s=!1;return(u||t||l)&&(s=!0),!u&&r&&(s=!1),s})})},D=function(){b({},{inTriggerContext:!1});var e=d(v,{shouldRender:f(function(){return!1}),inTriggerContext:!1});return{shouldRender:f(function(){return e.shouldRender.value||e.inTriggerContext===!1})}};const N=P({compatConfig:{MODE:3},name:"Portal",inheritAttrs:!1,props:{getContainer:p.func.isRequired,didUpdate:Function},setup:function(e,i){var n=i.slots,u=!0,t,l=D(),r=l.shouldRender;C(function(){u=!1,r.value&&(t=e.getContainer())});var s=T(r,function(){r.value&&!t&&(t=e.getContainer()),t&&s()});return h(function(){m(function(){if(r.value){var o;(o=e.didUpdate)===null||o===void 0||o.call(e,e)}})}),R(function(){t&&t.parentNode&&t.parentNode.removeChild(t)}),function(){if(!r.value)return null;if(u){var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}return t?x(y,{to:t},n):null}}});var O={ESC:27,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40};export{O as K,N as P,K as a,E as s,b as u};
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{P as x}from"./PageBar-Ce9JfTDp.js";import{d as p,i as o,c as r,p as n,l as i,G as P,H as S,J as k,n as B,K as b,M as _,C as v,f as y,g as u,x as C,N as E,O as L,z as d,F as N,r as $,h as A,B as F,_ as V}from"./index-Dg78Fjh9.js";import{S as H}from"./SectionHead-wIJAAwTj.js";import{P as I}from"./ProductCard-DPbWAcGz.js";const z={class:"flex justify-center items-center empty"},D=p({__name:"EmptyState",props:{description:{},image:{}},setup(e){return(t,a)=>(o(),r("div",z,[n(i(P),{description:"موردی یافت نشد",image:e.image,class:"h-[200px] w-[200px] opacity-70"},null,8,["image"])]))}}),G="/assets/favoritEmpty-kbtPAdi5.svg",M=p({__name:"ScrollFetchSearch",props:{loading:{type:Boolean},flag:{type:Boolean},padding:{}},emits:["fetch"],setup(e,{emit:t}){const a=t,l=S(),s=u(null);return k(s,()=>{a("fetch")},{distance:50}),(c,f)=>(o(),r("main",{class:"flex flex-col flex-1 overflow-auto no-scrollbar w-[100vw] max-w-screen-md m-auto",style:B({paddingTop:e.padding||i(l).headerHeight+"px"}),ref_key:"scrollArea",ref:s},[b(c.$slots,"default"),n(_,{cls:"my-[10px]",spinning:e.loading,indicator:!0,tip:"درحال دریافت اطلاعات"},null,8,["spinning"]),e.flag?(o(),v(D,{key:0,image:i(G)},null,8,["image"])):y("",!0)],4))}});function T(){const e=E({totalPages:0,productList:[],flag:!1});return{productsData:e,getProducts:async(a,l=!1)=>{if(!l){a.value=!0;try{e.productList=await C.listProducts(),e.flag=e.productList.length<1}catch(s){console.log(s)}finally{a.value=!1}}}}}const j={class:"newest"},J={key:0,class:"newest__grid"},g=20,K=p({__name:"NewestView",setup(e){const{productsData:t,getProducts:a}=T(),l=u(!1),s=u(!1),c=u(g),f=A(()=>t.productList.slice(0,c.value));L(async()=>{await a(l,!1)});const h=async()=>{if(c.value<t.productList.length){c.value+=g;return}await a(s,!0)};return(O,Z)=>{const w=F("container");return o(),r("div",j,[n(x,{title:"جدیدترین محصولات","back-to":"home"}),n(_,{spinning:l.value,tip:"درحال دریافت اطلاعات"},{default:d(()=>[n(M,{class:"newest__scroll",loading:s.value,flag:i(t).flag,padding:"0px",onFetch:h},{default:d(()=>[n(w,{class:"newest__body"},{default:d(()=>[n(H,{title:"تازه‌ها",subtitle:"آخرین افزوده‌های مجموعه"}),i(t).productList.length?(o(),r("div",J,[(o(!0),r(N,null,$(f.value,m=>(o(),v(I,{key:m.id,value:m},null,8,["value"]))),128))])):y("",!0)]),_:1})]),_:1},8,["loading","flag"])]),_:1},8,["spinning"])])}}}),W=V(K,[["__scopeId","data-v-222395fd"]]);export{W as default};
import{P as x}from"./PageBar-DeTSeN2V.js";import{d as p,i as o,c as r,p as n,l as i,G as P,H as S,J as k,n as B,K as b,M as _,C as v,f as y,g as u,x as C,N as E,O as L,z as d,F as N,r as $,h as A,B as F,_ as V}from"./index-DOpGZRF9.js";import{S as H}from"./SectionHead-CLPy7Yf4.js";import{P as I}from"./ProductCard-VIsRKw9N.js";const z={class:"flex justify-center items-center empty"},D=p({__name:"EmptyState",props:{description:{},image:{}},setup(e){return(t,a)=>(o(),r("div",z,[n(i(P),{description:"موردی یافت نشد",image:e.image,class:"h-[200px] w-[200px] opacity-70"},null,8,["image"])]))}}),G="/assets/favoritEmpty-kbtPAdi5.svg",M=p({__name:"ScrollFetchSearch",props:{loading:{type:Boolean},flag:{type:Boolean},padding:{}},emits:["fetch"],setup(e,{emit:t}){const a=t,l=S(),s=u(null);return k(s,()=>{a("fetch")},{distance:50}),(c,f)=>(o(),r("main",{class:"flex flex-col flex-1 overflow-auto no-scrollbar w-[100vw] max-w-screen-md m-auto",style:B({paddingTop:e.padding||i(l).headerHeight+"px"}),ref_key:"scrollArea",ref:s},[b(c.$slots,"default"),n(_,{cls:"my-[10px]",spinning:e.loading,indicator:!0,tip:"درحال دریافت اطلاعات"},null,8,["spinning"]),e.flag?(o(),v(D,{key:0,image:i(G)},null,8,["image"])):y("",!0)],4))}});function T(){const e=E({totalPages:0,productList:[],flag:!1});return{productsData:e,getProducts:async(a,l=!1)=>{if(!l){a.value=!0;try{e.productList=await C.listProducts(),e.flag=e.productList.length<1}catch(s){console.log(s)}finally{a.value=!1}}}}}const j={class:"newest"},J={key:0,class:"newest__grid"},g=20,K=p({__name:"NewestView",setup(e){const{productsData:t,getProducts:a}=T(),l=u(!1),s=u(!1),c=u(g),f=A(()=>t.productList.slice(0,c.value));L(async()=>{await a(l,!1)});const h=async()=>{if(c.value<t.productList.length){c.value+=g;return}await a(s,!0)};return(O,Z)=>{const w=F("container");return o(),r("div",j,[n(x,{title:"جدیدترین محصولات","back-to":"home"}),n(_,{spinning:l.value,tip:"درحال دریافت اطلاعات"},{default:d(()=>[n(M,{class:"newest__scroll",loading:s.value,flag:i(t).flag,padding:"0px",onFetch:h},{default:d(()=>[n(w,{class:"newest__body"},{default:d(()=>[n(H,{title:"تازه‌ها",subtitle:"آخرین افزوده‌های مجموعه"}),i(t).productList.length?(o(),r("div",J,[(o(!0),r(N,null,$(f.value,m=>(o(),v(I,{key:m.id,value:m},null,8,["value"]))),128))])):y("",!0)]),_:1})]),_:1},8,["loading","flag"])]),_:1},8,["spinning"])])}}}),W=V(K,[["__scopeId","data-v-222395fd"]]);export{W as default};
@@ -1 +1 @@
import{d as n,c as a,p as o,z as i,B as c,i as _,b as e,I as r,_ as p}from"./index-Dg78Fjh9.js";import{P as f}from"./PageBar-Ce9JfTDp.js";const l={class:"notif"},d={class:"notif__empty"},m=n({__name:"NotificationsView",setup(u){return(x,t)=>{const s=c("container");return _(),a("div",l,[o(f,{title:"اعلان‌ها","back-to":"home"}),o(s,{class:"notif__body"},{default:i(()=>[e("section",d,[o(r,{icon:"vuesax-linear:notification",size:"26"}),t[0]||(t[0]=e("p",null,"اعلانی برای نمایش وجود ندارد.",-1))])]),_:1})])}}}),v=p(m,[["__scopeId","data-v-6887fb26"]]);export{v as default};
import{d as n,c as a,p as o,z as i,B as c,i as _,b as e,I as r,_ as p}from"./index-DOpGZRF9.js";import{P as f}from"./PageBar-DeTSeN2V.js";const l={class:"notif"},d={class:"notif__empty"},m=n({__name:"NotificationsView",setup(u){return(x,t)=>{const s=c("container");return _(),a("div",l,[o(f,{title:"اعلان‌ها","back-to":"home"}),o(s,{class:"notif__body"},{default:i(()=>[e("section",d,[o(r,{icon:"vuesax-linear:notification",size:"26"}),t[0]||(t[0]=e("p",null,"اعلانی برای نمایش وجود ندارد.",-1))])]),_:1})])}}}),v=p(m,[["__scopeId","data-v-6887fb26"]]);export{v as default};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{d as _,c as s,b as a,p as d,I as b,t as u,K as i,i as t,E as p,_ as k}from"./index-Dg78Fjh9.js";const h={class:"bar"},f={class:"bar__inner"},m={key:1,class:"bar__spacer","aria-hidden":"true"},B={class:"bar__title"},g={class:"bar__trailing"},v=_({__name:"PageBar",props:{title:{},back:{type:Boolean,default:!0},backTo:{}},setup(e){const o=e,r=p();function l(){o.backTo?r.push({name:o.backTo}):r.back()}return(n,c)=>(t(),s("header",h,[a("div",f,[e.back?(t(),s("button",{key:0,type:"button",class:"bar__btn","aria-label":"بازگشت",onClick:l},[d(b,{icon:"vuesax-linear:arrow-right-1",size:"20"})])):(t(),s("span",m)),a("h1",B,u(e.title),1),a("div",g,[i(n.$slots,"trailing",{},()=>[c[0]||(c[0]=a("span",{class:"bar__spacer","aria-hidden":"true"},null,-1))],!0)])]),i(n.$slots,"below",{},void 0,!0)]))}}),I=k(v,[["__scopeId","data-v-162389d6"]]);export{I as P};
import{d as _,c as s,b as a,p as d,I as b,t as u,K as i,i as t,E as p,_ as k}from"./index-DOpGZRF9.js";const h={class:"bar"},f={class:"bar__inner"},m={key:1,class:"bar__spacer","aria-hidden":"true"},B={class:"bar__title"},g={class:"bar__trailing"},v=_({__name:"PageBar",props:{title:{},back:{type:Boolean,default:!0},backTo:{}},setup(e){const o=e,r=p();function l(){o.backTo?r.push({name:o.backTo}):r.back()}return(n,c)=>(t(),s("header",h,[a("div",f,[e.back?(t(),s("button",{key:0,type:"button",class:"bar__btn","aria-label":"بازگشت",onClick:l},[d(b,{icon:"vuesax-linear:arrow-right-1",size:"20"})])):(t(),s("span",m)),a("h1",B,u(e.title),1),a("div",g,[i(n.$slots,"trailing",{},()=>[c[0]||(c[0]=a("span",{class:"bar__spacer","aria-hidden":"true"},null,-1))],!0)])]),i(n.$slots,"below",{},void 0,!0)]))}}),I=k(v,[["__scopeId","data-v-162389d6"]]);export{I as P};
@@ -1 +1 @@
import{d as P,j as z,k as F,q as D,i as s,c as t,b as a,l as e,w as B,p as v,I as f,m as I,e as N,f as h,t as n,g as S,D as V,h as q,_ as E}from"./index-Dg78Fjh9.js";const j={class:"pc__art"},L=["alt"],M={key:1,class:"pc__artEmpty","aria-hidden":"true"},O=["aria-label"],$={key:2,class:"pc__flag"},A={key:3,class:"pc__flag pc__flag--soft"},G={class:"pc__body"},H={class:"pc__title"},J={class:"pc__meta"},K={class:"pc__weight"},Q={key:0,class:"pc__wage"},R=P({__name:"ProductCard",props:{value:{}},setup(m){const r=m,i=z(),{image:l,id:c,title:_,min_gram:g,wage:d,is_exist:y,qty:k,isPreOrder:w}=F(r.value),p=S(null);function x(){V(r.value,p.value)}const b=q(()=>{const o=d.value;return o==null?"":o%1===0?String(o):o.toFixed(2)});return(o,u)=>{const C=D("lazy");return s(),t("article",{ref_key:"root",ref:p,class:"pc","data-product-origin":"",onClick:x},[a("div",j,[e(l)?B((s(),t("img",{key:0,alt:e(_)},null,8,L)),[[C,e(l)]]):(s(),t("div",M,[v(f,{icon:"vuesax-linear:diamonds",size:"26"})])),a("button",{type:"button",class:N(["pc__fav",{"is-on":e(i).isFavorite(e(c))}]),"aria-label":e(i).isFavorite(e(c))?"حذف از علاقه‌مندی":"افزودن به علاقه‌مندی",onClick:u[0]||(u[0]=I(T=>e(i).toggle(e(c)),["stop"]))},[v(f,{icon:e(i).isFavorite(e(c))?"vuesax-linear:heart-fill":"vuesax-linear:heart",size:"16"},null,8,["icon"])],10,O),e(y)?e(w)&&e(k)===0?(s(),t("span",A,"پیش‌سفارش")):h("",!0):(s(),t("span",$,"ناموجود"))]),a("div",G,[a("h3",H,n(e(_)),1),a("div",J,[a("span",K,n(e(g))+" گرم",1),e(d)!=null?(s(),t("span",Q,"اجرت "+n(b.value)+"٪",1)):h("",!0)])])],512)}}}),W=E(R,[["__scopeId","data-v-233139a3"]]);export{W as P};
import{d as P,j as z,k as F,q as D,i as s,c as t,b as a,l as e,w as B,p as v,I as f,m as I,e as N,f as h,t as n,g as S,D as V,h as q,_ as E}from"./index-DOpGZRF9.js";const j={class:"pc__art"},L=["alt"],M={key:1,class:"pc__artEmpty","aria-hidden":"true"},O=["aria-label"],$={key:2,class:"pc__flag"},A={key:3,class:"pc__flag pc__flag--soft"},G={class:"pc__body"},H={class:"pc__title"},J={class:"pc__meta"},K={class:"pc__weight"},Q={key:0,class:"pc__wage"},R=P({__name:"ProductCard",props:{value:{}},setup(m){const r=m,i=z(),{image:l,id:c,title:_,min_gram:g,wage:d,is_exist:y,qty:k,isPreOrder:w}=F(r.value),p=S(null);function x(){V(r.value,p.value)}const b=q(()=>{const o=d.value;return o==null?"":o%1===0?String(o):o.toFixed(2)});return(o,u)=>{const C=D("lazy");return s(),t("article",{ref_key:"root",ref:p,class:"pc","data-product-origin":"",onClick:x},[a("div",j,[e(l)?B((s(),t("img",{key:0,alt:e(_)},null,8,L)),[[C,e(l)]]):(s(),t("div",M,[v(f,{icon:"vuesax-linear:diamonds",size:"26"})])),a("button",{type:"button",class:N(["pc__fav",{"is-on":e(i).isFavorite(e(c))}]),"aria-label":e(i).isFavorite(e(c))?"حذف از علاقه‌مندی":"افزودن به علاقه‌مندی",onClick:u[0]||(u[0]=I(T=>e(i).toggle(e(c)),["stop"]))},[v(f,{icon:e(i).isFavorite(e(c))?"vuesax-linear:heart-fill":"vuesax-linear:heart",size:"16"},null,8,["icon"])],10,O),e(y)?e(w)&&e(k)===0?(s(),t("span",A,"پیش‌سفارش")):h("",!0):(s(),t("span",$,"ناموجود"))]),a("div",G,[a("h3",H,n(e(_)),1),a("div",J,[a("span",K,n(e(g))+" گرم",1),e(d)!=null?(s(),t("span",Q,"اجرت "+n(b.value)+"٪",1)):h("",!0)])])],512)}}}),W=E(R,[["__scopeId","data-v-233139a3"]]);export{W as P};
@@ -1 +1 @@
import{d as y,Q as T,o as b,x as k,c as l,p as i,z as V,g as p,B,i as n,b as e,I as d,t as a,f as r,e as P,l as g,h as f,E as C,_ as D}from"./index-Dg78Fjh9.js";import{P as N}from"./PageBar-Ce9JfTDp.js";import{S as h}from"./SectionHead-wIJAAwTj.js";const x={class:"prof"},R={class:"prof__identity"},F={class:"prof__avatar","aria-hidden":"true"},M={class:"prof__name"},w={key:0,class:"prof__mobile"},z={key:0,class:"prof__block"},O={class:"prof__specs"},U={class:"prof__spec"},L={class:"prof__spec"},A={class:"prof__spec"},W={class:"prof__spec"},H={key:1,class:"prof__empty"},Q=y({__name:"ProfileView",setup($){const _={UNVERIFIED:"احراز نشده",STEP_ONE_SUBMITTED:"مرحله اول ثبت شده",STEP_TWO_SUBMITTED:"مرحله دوم ثبت شده",VERIFIED:"تایید شده"},v=T(),s=p(null),u=p(!1),m=f(()=>{var t;return((t=s.value)==null?void 0:t.verificationStep)==="VERIFIED"}),E=f(()=>{var o;const t=(o=s.value)==null?void 0:o.verificationStep;return!!t&&t!=="VERIFIED"&&t!=="STEP_TWO_SUBMITTED"}),S=C();return b(async()=>{if(v.isLoggedIn){u.value=!0;try{s.value=await k.getMe()}finally{u.value=!1}}}),(t,o)=>{const I=B("container");return n(),l("div",x,[i(N,{title:"اطلاعات کاربری","back-to":"userPage::hasSubRoute"}),i(I,{class:"prof__body"},{default:V(()=>{var c;return[e("section",R,[e("div",F,[i(d,{icon:"vuesax-linear:user",size:"30"})]),e("h2",M,a(((c=s.value)==null?void 0:c.fullName)??"—"),1),s.value?(n(),l("p",w,a(s.value.mobile),1)):r("",!0),s.value?(n(),l("span",{key:1,class:P(["prof__seal",m.value?"is-ok":"is-pending"])},a(_[s.value.verificationStep]??s.value.verificationStep),3)):r("",!0)]),s.value?(n(),l("section",z,[i(h,{title:"مشخصات",subtitle:"اطلاعات ثبت‌شده حساب شما"}),e("dl",O,[e("div",U,[o[1]||(o[1]=e("dt",null,"نام و نام خانوادگی",-1)),e("dd",null,a(s.value.fullName),1)]),e("div",L,[o[2]||(o[2]=e("dt",null,"تلفن همراه",-1)),e("dd",null,a(s.value.mobile),1)]),e("div",A,[o[3]||(o[3]=e("dt",null,"کد ملی",-1)),e("dd",null,a(s.value.nationalCode),1)]),e("div",W,[o[4]||(o[4]=e("dt",null,"وضعیت احراز هویت",-1)),e("dd",null,a(_[s.value.verificationStep]??s.value.verificationStep),1)])])])):u.value?r("",!0):(n(),l("section",H,[i(d,{icon:"vuesax-linear:user",size:"26"}),o[5]||(o[5]=e("p",null,"اطلاعات حساب در دسترس نیست.",-1))])),E.value?(n(),l("button",{key:2,type:"button",class:"prof__complete",onClick:o[0]||(o[0]=j=>g(S).push({name:"completeProfile"}))}," تکمیل پروفایل ")):r("",!0)]}),_:1})])}}}),K=D(Q,[["__scopeId","data-v-e2c41fc1"]]);export{K as default};
import{d as y,Q as T,o as b,x as k,c as l,p as i,z as V,g as p,B,i as n,b as e,I as d,t as a,f as r,e as P,l as g,h as f,E as C,_ as D}from"./index-DOpGZRF9.js";import{P as N}from"./PageBar-DeTSeN2V.js";import{S as h}from"./SectionHead-CLPy7Yf4.js";const x={class:"prof"},R={class:"prof__identity"},F={class:"prof__avatar","aria-hidden":"true"},M={class:"prof__name"},w={key:0,class:"prof__mobile"},z={key:0,class:"prof__block"},O={class:"prof__specs"},U={class:"prof__spec"},L={class:"prof__spec"},A={class:"prof__spec"},W={class:"prof__spec"},H={key:1,class:"prof__empty"},Q=y({__name:"ProfileView",setup($){const _={UNVERIFIED:"احراز نشده",STEP_ONE_SUBMITTED:"مرحله اول ثبت شده",STEP_TWO_SUBMITTED:"مرحله دوم ثبت شده",VERIFIED:"تایید شده"},v=T(),s=p(null),u=p(!1),m=f(()=>{var t;return((t=s.value)==null?void 0:t.verificationStep)==="VERIFIED"}),E=f(()=>{var o;const t=(o=s.value)==null?void 0:o.verificationStep;return!!t&&t!=="VERIFIED"&&t!=="STEP_TWO_SUBMITTED"}),S=C();return b(async()=>{if(v.isLoggedIn){u.value=!0;try{s.value=await k.getMe()}finally{u.value=!1}}}),(t,o)=>{const I=B("container");return n(),l("div",x,[i(N,{title:"اطلاعات کاربری","back-to":"userPage::hasSubRoute"}),i(I,{class:"prof__body"},{default:V(()=>{var c;return[e("section",R,[e("div",F,[i(d,{icon:"vuesax-linear:user",size:"30"})]),e("h2",M,a(((c=s.value)==null?void 0:c.fullName)??"—"),1),s.value?(n(),l("p",w,a(s.value.mobile),1)):r("",!0),s.value?(n(),l("span",{key:1,class:P(["prof__seal",m.value?"is-ok":"is-pending"])},a(_[s.value.verificationStep]??s.value.verificationStep),3)):r("",!0)]),s.value?(n(),l("section",z,[i(h,{title:"مشخصات",subtitle:"اطلاعات ثبت‌شده حساب شما"}),e("dl",O,[e("div",U,[o[1]||(o[1]=e("dt",null,"نام و نام خانوادگی",-1)),e("dd",null,a(s.value.fullName),1)]),e("div",L,[o[2]||(o[2]=e("dt",null,"تلفن همراه",-1)),e("dd",null,a(s.value.mobile),1)]),e("div",A,[o[3]||(o[3]=e("dt",null,"کد ملی",-1)),e("dd",null,a(s.value.nationalCode),1)]),e("div",W,[o[4]||(o[4]=e("dt",null,"وضعیت احراز هویت",-1)),e("dd",null,a(_[s.value.verificationStep]??s.value.verificationStep),1)])])])):u.value?r("",!0):(n(),l("section",H,[i(d,{icon:"vuesax-linear:user",size:"26"}),o[5]||(o[5]=e("p",null,"اطلاعات حساب در دسترس نیست.",-1))])),E.value?(n(),l("button",{key:2,type:"button",class:"prof__complete",onClick:o[0]||(o[0]=j=>g(S).push({name:"completeProfile"}))}," تکمیل پروفایل ")):r("",!0)]}),_:1})])}}}),K=D(Q,[["__scopeId","data-v-e2c41fc1"]]);export{K as default};
@@ -1 +1 @@
import{p as c,j as d}from"./filters-Dlnb2GO7.js";import{d as l,c as s,e as _,b as a,P as u,t as i,l as n,f as m,h as v,i as r,_ as f}from"./index-Dg78Fjh9.js";const q={key:0,class:"rate-strip__value"},k={class:"rate-strip__num"},y={key:1,class:"rate-strip__value rate-strip__value--muted"},x={key:2,class:"rate-strip__time"},R=l({__name:"RateStrip",props:{quote:{}},setup(t){const o=t,p=v(()=>o.quote?o.quote.pricePerGramRial.split(".")[0]:"");return(b,e)=>(r(),s("div",{class:_(["rate-strip",{"is-empty":!t.quote}])},[e[1]||(e[1]=a("div",{class:"rate-strip__label"},[a("span",{class:"rate-strip__dot","aria-hidden":"true"}),u(" نرخ طلای ۱۸ عیار ")],-1)),t.quote?(r(),s("div",q,[a("span",k,i(n(c)(p.value)),1),e[0]||(e[0]=a("span",{class:"rate-strip__unit"},"ریال / گرم",-1))])):(r(),s("div",y,"در انتظار اعلام نرخ")),t.quote?(r(),s("div",x,i(n(d)(t.quote.quotedAt)),1)):m("",!0)],2))}}),C=f(R,[["__scopeId","data-v-f23116bf"]]);export{C as R};
import{p as c,j as d}from"./filters-BPVyS_DN.js";import{d as l,c as s,e as _,b as a,P as u,t as i,l as n,f as m,h as v,i as r,_ as f}from"./index-DOpGZRF9.js";const q={key:0,class:"rate-strip__value"},k={class:"rate-strip__num"},y={key:1,class:"rate-strip__value rate-strip__value--muted"},x={key:2,class:"rate-strip__time"},R=l({__name:"RateStrip",props:{quote:{}},setup(t){const o=t,p=v(()=>o.quote?o.quote.pricePerGramRial.split(".")[0]:"");return(b,e)=>(r(),s("div",{class:_(["rate-strip",{"is-empty":!t.quote}])},[e[1]||(e[1]=a("div",{class:"rate-strip__label"},[a("span",{class:"rate-strip__dot","aria-hidden":"true"}),u(" نرخ طلای ۱۸ عیار ")],-1)),t.quote?(r(),s("div",q,[a("span",k,i(n(c)(p.value)),1),e[0]||(e[0]=a("span",{class:"rate-strip__unit"},"ریال / گرم",-1))])):(r(),s("div",y,"در انتظار اعلام نرخ")),t.quote?(r(),s("div",x,i(n(d)(t.quote.quotedAt)),1)):m("",!0)],2))}}),C=f(R,[["__scopeId","data-v-f23116bf"]]);export{C as R};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
.doc[data-v-656df578]{padding:16px;background:var(--c-canvas);border:1px solid var(--c-hairline);border-radius:18px}.doc__head[data-v-656df578]{display:flex;justify-content:space-between;gap:10px;margin-bottom:12px;font-size:13px;font-weight:600}.doc__muted[data-v-656df578]{color:var(--c-inkMuted);font-weight:500;margin-left:4px}.doc__rows[data-v-656df578]{margin:0;display:flex;flex-direction:column;gap:2px}.doc__row[data-v-656df578]{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;background:var(--c-canvasSoft);border-radius:10px}.doc__row dt[data-v-656df578]{font-size:12.5px;color:var(--c-inkMuted);white-space:nowrap}.doc__row dd[data-v-656df578]{margin:0;font-size:13.5px;font-weight:600;text-align:left}.doc__gold[data-v-656df578]{display:flex;justify-content:space-between;align-items:center;margin-top:8px;padding:10px 12px;background:var(--c-hairlineSoft);border-radius:10px;font-size:13px;font-weight:700}.doc__stack[data-v-656df578]{display:flex;flex-direction:column;align-items:flex-end;gap:2px}.is-in[data-v-656df578]{color:var(--c-green)}.is-out[data-v-656df578]{color:var(--c-red)}.rep__tabs[data-v-2fb1eb18]{display:flex;gap:8px;padding:0 16px 12px}.rep__tab[data-v-2fb1eb18]{flex:1;padding:10px;border:1px solid var(--c-hairline);border-radius:999px;background:var(--c-canvas);font-family:inherit;font-size:13px;font-weight:600;color:var(--c-inkMuted);cursor:pointer}.rep__tab.is-on[data-v-2fb1eb18]{background:var(--c-primary);border-color:var(--c-primary);color:#fff}.rep__body[data-v-2fb1eb18]{padding-top:132px;padding-bottom:90px}.rep__list[data-v-2fb1eb18]{display:flex;flex-direction:column;padding-top:16px;gap:11px}.rep__card[data-v-2fb1eb18]{padding:16px;background:var(--c-canvas);border:1px solid var(--c-hairline);border-radius:18px}.rep__head[data-v-2fb1eb18]{display:flex;justify-content:space-between;gap:10px;margin-bottom:12px;font-size:13px;font-weight:600}.rep__muted[data-v-2fb1eb18]{color:var(--c-inkMuted);font-weight:500;margin-left:4px}.rep__pair[data-v-2fb1eb18]{display:flex;justify-content:space-between;align-items:center;padding:9px 12px;margin-bottom:6px;background:var(--c-canvasSoft);border-radius:10px;font-size:13px}.rep__pair.is-balance[data-v-2fb1eb18]{background:var(--c-hairlineSoft);font-weight:700}.rep__stack[data-v-2fb1eb18]{display:flex;flex-direction:column;align-items:flex-end;gap:2px;font-weight:600}.is-in[data-v-2fb1eb18]{color:var(--c-green)}.is-out[data-v-2fb1eb18]{color:var(--c-red)}.rep__more[data-v-2fb1eb18],.rep__sentinel[data-v-2fb1eb18]{padding:12px 0;text-align:center;font-size:12px;color:var(--c-inkMuted)}.rep__more[data-v-2fb1eb18]{width:100%;margin-top:4px;border:none;background:transparent;font-family:inherit;font-weight:700;color:var(--c-wine);cursor:pointer}.rep__empty[data-v-2fb1eb18]{margin-top:8px;padding:34px 20px;border:1px dashed var(--c-hairline);border-radius:18px;display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--c-inkMuted);font-size:13px}.rep__retry[data-v-2fb1eb18]{padding:8px 18px;border-radius:999px;border:1px solid var(--c-hairline);background:var(--c-canvas);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer}.rep__modal[data-v-2fb1eb18]{padding:20px 16px 24px}.rep__modalEmpty[data-v-2fb1eb18]{padding:24px 0;text-align:center;font-size:13px;color:var(--c-inkMuted)}.rep__close[data-v-2fb1eb18]{margin-top:18px;width:100%;padding:13px;border:none;border-radius:14px;background:var(--c-primary);color:#fff;font-family:inherit;font-size:14px;font-weight:700;cursor:pointer}
.doc[data-v-656df578]{padding:16px;background:var(--c-canvas);border:1px solid var(--c-hairline);border-radius:18px}.doc__head[data-v-656df578]{display:flex;justify-content:space-between;gap:10px;margin-bottom:12px;font-size:13px;font-weight:600}.doc__muted[data-v-656df578]{color:var(--c-inkMuted);font-weight:500;margin-left:4px}.doc__rows[data-v-656df578]{margin:0;display:flex;flex-direction:column;gap:2px}.doc__row[data-v-656df578]{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;background:var(--c-canvasSoft);border-radius:10px}.doc__row dt[data-v-656df578]{font-size:12.5px;color:var(--c-inkMuted);white-space:nowrap}.doc__row dd[data-v-656df578]{margin:0;font-size:13.5px;font-weight:600;text-align:left}.doc__gold[data-v-656df578]{display:flex;justify-content:space-between;align-items:center;margin-top:8px;padding:10px 12px;background:var(--c-hairlineSoft);border-radius:10px;font-size:13px;font-weight:700}.doc__stack[data-v-656df578]{display:flex;flex-direction:column;align-items:flex-end;gap:2px}.is-in[data-v-656df578]{color:var(--c-green)}.is-out[data-v-656df578]{color:var(--c-red)}.rep__tabs[data-v-9a3da282]{display:flex;gap:8px;padding:0 16px 12px}.rep__tab[data-v-9a3da282]{flex:1;padding:10px;border:1px solid var(--c-hairline);border-radius:999px;background:var(--c-canvas);font-family:inherit;font-size:13px;font-weight:600;color:var(--c-inkMuted);cursor:pointer}.rep__tab.is-on[data-v-9a3da282]{background:var(--c-primary);border-color:var(--c-primary);color:#fff}.rep__body[data-v-9a3da282]{padding-top:132px;padding-bottom:90px}.rep__list[data-v-9a3da282]{display:flex;flex-direction:column;padding-top:16px;gap:11px}.rep__card[data-v-9a3da282]{padding:16px;background:var(--c-canvas);border:1px solid var(--c-hairline);border-radius:18px}.rep__head[data-v-9a3da282]{display:flex;justify-content:space-between;gap:10px;margin-bottom:12px;font-size:13px;font-weight:600}.rep__muted[data-v-9a3da282]{color:var(--c-inkMuted);font-weight:500;margin-left:4px}.rep__pair[data-v-9a3da282]{display:flex;justify-content:space-between;align-items:center;padding:9px 12px;margin-bottom:6px;background:var(--c-canvasSoft);border-radius:10px;font-size:13px}.rep__pair.is-balance[data-v-9a3da282]{background:var(--c-hairlineSoft);font-weight:700}.rep__stack[data-v-9a3da282]{display:flex;flex-direction:column;align-items:flex-end;gap:2px;font-weight:600}.is-in[data-v-9a3da282]{color:var(--c-green)}.is-out[data-v-9a3da282]{color:var(--c-red)}.rep__more[data-v-9a3da282],.rep__sentinel[data-v-9a3da282]{padding:12px 0;text-align:center;font-size:12px;color:var(--c-inkMuted)}.rep__more[data-v-9a3da282]{width:100%;margin-top:4px;border:none;background:transparent;font-family:inherit;font-weight:700;color:var(--c-wine);cursor:pointer}.rep__empty[data-v-9a3da282]{margin-top:8px;padding:34px 20px;border:1px dashed var(--c-hairline);border-radius:18px;display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--c-inkMuted);font-size:13px}.rep__retry[data-v-9a3da282]{padding:8px 18px;border-radius:999px;border:1px solid var(--c-hairline);background:var(--c-canvas);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer}.rep__modal[data-v-9a3da282]{padding:20px 16px 24px}.rep__modalEmpty[data-v-9a3da282]{padding:24px 0;text-align:center;font-size:13px;color:var(--c-inkMuted)}.rep__close[data-v-9a3da282]{margin-top:18px;width:100%;padding:13px;border:none;border-radius:14px;background:var(--c-primary);color:#fff;font-family:inherit;font-size:14px;font-weight:700;cursor:pointer}
@@ -1 +1 @@
import{d as v,b6 as h,T as m,i as t,c as l,p as n,I as r,w as f,b7 as b,b as x,b8 as k,f as I,N as w,g as y,_ as C}from"./index-Dg78Fjh9.js";const N={class:"si"},S=["placeholder"],V=v({__name:"SearchInput",props:{placeHolder:{}},emits:["search"],setup(i,{emit:d}){const c=d,a=w({clear:!1}),e=y(void 0),s=()=>{c("search",e.value)},u=()=>{e.value=void 0,a.clear=!1,c("search",void 0)},p=h(e,700);return m(p,()=>{e?a.clear=!0:a.clear=!1,s()}),(B,o)=>(t(),l("div",N,[n(r,{icon:"vuesax-linear:search-normal-1",class:"si__icon",size:"18",onClick:s}),f(x("input",{"onUpdate:modelValue":o[0]||(o[0]=_=>e.value=_),class:"si__input",placeholder:i.placeHolder,onKeyup:k(s,["enter"])},null,40,S),[[b,e.value]]),a.clear?(t(),l("button",{key:0,type:"button",class:"si__clear","aria-label":"پاک کردن",onClick:u},[n(r,{icon:"vuesax-linear:add",size:"16"})])):I("",!0)]))}}),D=C(V,[["__scopeId","data-v-4c50067a"]]);export{D as S};
import{d as v,b6 as h,T as m,i as t,c as l,p as n,I as r,w as f,b7 as b,b as x,b8 as k,f as I,N as w,g as y,_ as C}from"./index-DOpGZRF9.js";const N={class:"si"},S=["placeholder"],V=v({__name:"SearchInput",props:{placeHolder:{}},emits:["search"],setup(i,{emit:d}){const c=d,a=w({clear:!1}),e=y(void 0),s=()=>{c("search",e.value)},u=()=>{e.value=void 0,a.clear=!1,c("search",void 0)},p=h(e,700);return m(p,()=>{e?a.clear=!0:a.clear=!1,s()}),(B,o)=>(t(),l("div",N,[n(r,{icon:"vuesax-linear:search-normal-1",class:"si__icon",size:"18",onClick:s}),f(x("input",{"onUpdate:modelValue":o[0]||(o[0]=_=>e.value=_),class:"si__input",placeholder:i.placeHolder,onKeyup:k(s,["enter"])},null,40,S),[[b,e.value]]),a.clear?(t(),l("button",{key:0,type:"button",class:"si__clear","aria-label":"پاک کردن",onClick:u},[n(r,{icon:"vuesax-linear:add",size:"16"})])):I("",!0)]))}}),D=C(V,[["__scopeId","data-v-4c50067a"]]);export{D as S};
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{d as r,c as t,b as o,t as s,f as n,P as _,p as d,I as u,i as a,_ as b}from"./index-Dg78Fjh9.js";const m={class:"sec"},f={class:"sec__text"},x={class:"sec__title"},h={key:0,class:"sec__sub"},k=r({__name:"SectionHead",props:{title:{},subtitle:{},actionLabel:{}},emits:["action"],setup(e,{emit:i}){const l=i;return(p,c)=>(a(),t("header",m,[o("div",f,[o("h2",x,s(e.title),1),e.subtitle?(a(),t("p",h,s(e.subtitle),1)):n("",!0)]),e.actionLabel?(a(),t("button",{key:0,type:"button",class:"sec__action",onClick:c[0]||(c[0]=v=>l("action"))},[_(s(e.actionLabel)+" ",1),d(u,{icon:"vuesax-linear:arrow-left-2",size:"15"})])):n("",!0)]))}}),N=b(k,[["__scopeId","data-v-e5c65b7c"]]);export{N as S};
import{d as r,c as t,b as o,t as s,f as n,P as _,p as d,I as u,i as a,_ as b}from"./index-DOpGZRF9.js";const m={class:"sec"},f={class:"sec__text"},x={class:"sec__title"},h={key:0,class:"sec__sub"},k=r({__name:"SectionHead",props:{title:{},subtitle:{},actionLabel:{}},emits:["action"],setup(e,{emit:i}){const l=i;return(p,c)=>(a(),t("header",m,[o("div",f,[o("h2",x,s(e.title),1),e.subtitle?(a(),t("p",h,s(e.subtitle),1)):n("",!0)]),e.actionLabel?(a(),t("button",{key:0,type:"button",class:"sec__action",onClick:c[0]||(c[0]=v=>l("action"))},[_(s(e.actionLabel)+" ",1),d(u,{icon:"vuesax-linear:arrow-left-2",size:"15"})])):n("",!0)]))}}),N=b(k,[["__scopeId","data-v-e5c65b7c"]]);export{N as S};
@@ -1 +1 @@
import{d as b,Q as k,o as A,x as D,c as i,p as _,z as f,M as w,C as L,l as E,f as x,g as u,i as l,F as y,b as s,r as M,I as g,t as o,e as p,B as N,_ as P}from"./index-Dg78Fjh9.js";import{P as B}from"./PageBar-Ce9JfTDp.js";import{S as O}from"./SectionHead-wIJAAwTj.js";import{j as R,p as U}from"./filters-Dlnb2GO7.js";import{D as I}from"./index-Pu-AYmD8.js";import"./KeyCode-Cq_g5D61.js";import"./classCallCheck-CbaFv7Ew.js";import"./raf-nDFcuFT6.js";const V={class:"tx"},$={class:"tx__list"},z=["onClick"],Y={class:"tx__main"},F={class:"tx__head"},G={class:"tx__kind"},H={key:0,class:"tx__note"},j={class:"tx__foot"},Q={class:"tx__date"},J={key:1,class:"tx__empty"},K={class:"sheet"},W={class:"sheet__specs"},q={class:"sheet__spec"},X={class:"sheet__spec"},Z={class:"sheet__spec"},ss={class:"sheet__spec"},es={class:"sheet__spec"},ts=b({__name:"TransactionsView",setup(os){const m={ORDER_STOCK:"سفارش",ORDER_PRE_ORDER:"سفارش ساخت",REPAYMENT_MELTED_GOLD:"طلای آب‌شده",REPAYMENT_TRANSFER:"حواله",REPAYMENT_CHEQUE:"چک",REPAYMENT_CASH:"پولی",WALLET_BONUS:"پاداش",ADJUSTMENT:"اصلاحیه"},T=k(),r=u(!1),d=u([]),v=u(!1),n=u(null),c=a=>a.direction==="CREDIT",h=a=>a.currency==="GOLD_GRAM"?`${a.amount} گرم`:`${U(a.amount)} ریال`,C=a=>{n.value=a,v.value=!0};return A(async()=>{if(T.isLoggedIn){r.value=!0;try{d.value=await D.getMyLedgerEntries()}finally{r.value=!1}}}),(a,e)=>{const S=N("container");return l(),i("div",V,[_(B,{title:"اسناد","back-to":"userPage::hasSubRoute"}),_(w,{spinning:r.value,tip:"درحال دریافت اطلاعات"},{default:f(()=>[_(S,{class:"tx__body"},{default:f(()=>[d.value.length?(l(),i(y,{key:0},[_(O,{title:"گردش حساب",subtitle:`${d.value.length} سند`},null,8,["subtitle"]),s("div",$,[(l(!0),i(y,null,M(d.value,t=>(l(),i("article",{key:t.id,class:"tx__row",onClick:ns=>C(t)},[s("span",{class:p(["tx__mark",c(t)?"is-in":"is-out"]),"aria-hidden":"true"},[_(g,{icon:c(t)?"vuesax-linear:arrow-down":"vuesax-linear:arrow-up",size:"16"},null,8,["icon"])],2),s("div",Y,[s("div",F,[s("h3",G,o(m[t.sourceType]??t.sourceType),1),s("span",{class:p(["tx__amount",c(t)?"is-in":"is-out"])},o(h(t)),3)]),t.note?(l(),i("p",H,o(t.note),1)):x("",!0),s("div",j,[s("span",Q,o(E(R)(t.createdAt)),1),s("span",{class:p(["tx__state",{"is-pending":!t.confirmed}])},o(t.confirmed?"تایید شده":"در انتظار تایید"),3)])])],8,z))),128))])],64)):r.value?x("",!0):(l(),i("section",J,[_(g,{icon:"vuesax-linear:receipt-text",size:"26"}),e[1]||(e[1]=s("p",null,"سندی برای حساب شما ثبت نشده است.",-1))]))]),_:1})]),_:1},8,["spinning"]),n.value?(l(),L(E(I),{key:0,visible:v.value,"onUpdate:visible":e[0]||(e[0]=t=>v.value=t),placement:"bottom",closable:!1,height:"420px",class:"rtl",bodyStyle:{padding:0}},{default:f(()=>[s("div",K,[e[7]||(e[7]=s("h3",{class:"sheet__title"},"جزئیات سند",-1)),s("dl",W,[s("div",q,[e[2]||(e[2]=s("dt",null,"نوع سند",-1)),s("dd",null,o(m[n.value.sourceType]??n.value.sourceType),1)]),s("div",X,[e[3]||(e[3]=s("dt",null,"مبلغ",-1)),s("dd",{class:p(c(n.value)?"is-in":"is-out")},o(h(n.value)),3)]),s("div",Z,[e[4]||(e[4]=s("dt",null,"وضعیت",-1)),s("dd",null,o(n.value.confirmed?"تایید شده":"در انتظار تایید"),1)]),s("div",ss,[e[5]||(e[5]=s("dt",null,"تاریخ",-1)),s("dd",null,o(E(R)(n.value.createdAt)),1)]),s("div",es,[e[6]||(e[6]=s("dt",null,"توضیحات",-1)),s("dd",null,o(n.value.note||"—"),1)])])])]),_:1},8,["visible"])):x("",!0)])}}}),ps=P(ts,[["__scopeId","data-v-3923099b"]]);export{ps as default};
import{d as b,Q as k,o as A,x as D,c as i,p as _,z as f,M as w,C as L,l as E,f as x,g as u,i as l,F as y,b as s,r as M,I as g,t as o,e as p,B as N,_ as P}from"./index-DOpGZRF9.js";import{P as B}from"./PageBar-DeTSeN2V.js";import{S as O}from"./SectionHead-CLPy7Yf4.js";import{j as R,p as U}from"./filters-BPVyS_DN.js";import{D as I}from"./index-9k1Jdmtu.js";import"./KeyCode-DSd4o8Xn.js";import"./classCallCheck-Bw-Na1wZ.js";import"./raf-nDFcuFT6.js";const V={class:"tx"},$={class:"tx__list"},z=["onClick"],Y={class:"tx__main"},F={class:"tx__head"},G={class:"tx__kind"},H={key:0,class:"tx__note"},j={class:"tx__foot"},Q={class:"tx__date"},J={key:1,class:"tx__empty"},K={class:"sheet"},W={class:"sheet__specs"},q={class:"sheet__spec"},X={class:"sheet__spec"},Z={class:"sheet__spec"},ss={class:"sheet__spec"},es={class:"sheet__spec"},ts=b({__name:"TransactionsView",setup(os){const m={ORDER_STOCK:"سفارش",ORDER_PRE_ORDER:"سفارش ساخت",REPAYMENT_MELTED_GOLD:"طلای آب‌شده",REPAYMENT_TRANSFER:"حواله",REPAYMENT_CHEQUE:"چک",REPAYMENT_CASH:"پولی",WALLET_BONUS:"پاداش",ADJUSTMENT:"اصلاحیه"},T=k(),r=u(!1),d=u([]),v=u(!1),n=u(null),c=a=>a.direction==="CREDIT",h=a=>a.currency==="GOLD_GRAM"?`${a.amount} گرم`:`${U(a.amount)} ریال`,C=a=>{n.value=a,v.value=!0};return A(async()=>{if(T.isLoggedIn){r.value=!0;try{d.value=await D.getMyLedgerEntries()}finally{r.value=!1}}}),(a,e)=>{const S=N("container");return l(),i("div",V,[_(B,{title:"اسناد","back-to":"userPage::hasSubRoute"}),_(w,{spinning:r.value,tip:"درحال دریافت اطلاعات"},{default:f(()=>[_(S,{class:"tx__body"},{default:f(()=>[d.value.length?(l(),i(y,{key:0},[_(O,{title:"گردش حساب",subtitle:`${d.value.length} سند`},null,8,["subtitle"]),s("div",$,[(l(!0),i(y,null,M(d.value,t=>(l(),i("article",{key:t.id,class:"tx__row",onClick:ns=>C(t)},[s("span",{class:p(["tx__mark",c(t)?"is-in":"is-out"]),"aria-hidden":"true"},[_(g,{icon:c(t)?"vuesax-linear:arrow-down":"vuesax-linear:arrow-up",size:"16"},null,8,["icon"])],2),s("div",Y,[s("div",F,[s("h3",G,o(m[t.sourceType]??t.sourceType),1),s("span",{class:p(["tx__amount",c(t)?"is-in":"is-out"])},o(h(t)),3)]),t.note?(l(),i("p",H,o(t.note),1)):x("",!0),s("div",j,[s("span",Q,o(E(R)(t.createdAt)),1),s("span",{class:p(["tx__state",{"is-pending":!t.confirmed}])},o(t.confirmed?"تایید شده":"در انتظار تایید"),3)])])],8,z))),128))])],64)):r.value?x("",!0):(l(),i("section",J,[_(g,{icon:"vuesax-linear:receipt-text",size:"26"}),e[1]||(e[1]=s("p",null,"سندی برای حساب شما ثبت نشده است.",-1))]))]),_:1})]),_:1},8,["spinning"]),n.value?(l(),L(E(I),{key:0,visible:v.value,"onUpdate:visible":e[0]||(e[0]=t=>v.value=t),placement:"bottom",closable:!1,height:"420px",class:"rtl",bodyStyle:{padding:0}},{default:f(()=>[s("div",K,[e[7]||(e[7]=s("h3",{class:"sheet__title"},"جزئیات سند",-1)),s("dl",W,[s("div",q,[e[2]||(e[2]=s("dt",null,"نوع سند",-1)),s("dd",null,o(m[n.value.sourceType]??n.value.sourceType),1)]),s("div",X,[e[3]||(e[3]=s("dt",null,"مبلغ",-1)),s("dd",{class:p(c(n.value)?"is-in":"is-out")},o(h(n.value)),3)]),s("div",Z,[e[4]||(e[4]=s("dt",null,"وضعیت",-1)),s("dd",null,o(n.value.confirmed?"تایید شده":"در انتظار تایید"),1)]),s("div",ss,[e[5]||(e[5]=s("dt",null,"تاریخ",-1)),s("dd",null,o(E(R)(n.value.createdAt)),1)]),s("div",es,[e[6]||(e[6]=s("dt",null,"توضیحات",-1)),s("dd",null,o(n.value.note||"—"),1)])])])]),_:1},8,["visible"])):x("",!0)])}}}),ps=P(ts,[["__scopeId","data-v-3923099b"]]);export{ps as default};
@@ -1 +1 @@
import{a3 as n}from"./index-Dg78Fjh9.js";function l(a,t){for(var r=n({},a),e=0;e<t.length;e+=1){var o=t[e];delete r[o]}return r}function c(a,t,r){return Object.defineProperty(a,"prototype",{writable:!1}),a}function f(a,t){if(!(a instanceof t))throw new TypeError("Cannot call a class as a function")}export{c as _,f as a,l as o};
import{a3 as n}from"./index-DOpGZRF9.js";function l(a,t){for(var r=n({},a),e=0;e<t.length;e+=1){var o=t[e];delete r[o]}return r}function c(a,t,r){return Object.defineProperty(a,"prototype",{writable:!1}),a}function f(a,t){if(!(a instanceof t))throw new TypeError("Cannot call a class as a function")}export{c as _,f as a,l as o};
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{s as e}from"./index-Dg78Fjh9.js";const t=()=>({colors:[],brands:[],ciny_id:[],limit_percent:[],limit_gram:[],has_discount:!1,text:void 0,cats:void 0,page:0}),i=e("filters",{state:()=>({query:t()}),actions:{reset(){this.query=t()}}});export{i as u};
import{s as e}from"./index-DOpGZRF9.js";const t=()=>({colors:[],brands:[],ciny_id:[],limit_percent:[],limit_gram:[],has_discount:!1,text:void 0,cats:void 0,page:0}),i=e("filters",{state:()=>({query:t()}),actions:{reset(){this.query=t()}}});export{i as u};
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{b9 as y,d as L,ba as N,bb as $,T as p,bc as w,p as l,g as b,N as A,L as B,bd as I,X as M,be as f,bf as R,bg as U,bh as X}from"./index-Dg78Fjh9.js";const[Y,r,C]=y("pull-refresh"),D=50,F=["pulling","loosing","success"],G={disabled:Boolean,modelValue:Boolean,headHeight:f(D),successText:String,pullingText:String,loosingText:String,loadingText:String,pullDistance:N,successDuration:f(500),animationDuration:f(300)};var j=L({name:Y,props:G,emits:["change","refresh","update:modelValue"],setup(s,{emit:d,slots:o}){let u;const g=b(),T=b(),x=$(g),e=A({status:"normal",distance:0,duration:0}),i=U(),H=()=>{if(s.headHeight!==D)return{height:`${s.headHeight}px`}},h=()=>e.status!=="loading"&&e.status!=="success"&&!s.disabled,P=t=>{const a=+(s.pullDistance||s.headHeight);return t>a&&(t<a*2?t=a+(t-a)/2:t=a*1.5+(t-a*2)/4),Math.round(t)},n=(t,a)=>{const c=+(s.pullDistance||s.headHeight);e.distance=t,a?e.status="loading":t===0?e.status="normal":t<c?e.status="pulling":e.status="loosing",d("change",{status:e.status,distance:t})},m=()=>{const{status:t}=e;return t==="normal"?"":s[`${t}Text`]||C(t)},k=()=>{const{status:t,distance:a}=e;if(o[t])return o[t]({distance:a});const c=[];return F.includes(t)&&c.push(l("div",{class:r("text")},[m()])),t==="loading"&&c.push(l(B,{class:r("loading")},{default:m})),c},E=()=>{e.status="success",setTimeout(()=>{n(0)},+s.successDuration)},v=t=>{u=R(x.value)===0,u&&(e.duration=0,i.start(t))},V=t=>{h()&&v(t)},_=t=>{if(h()){u||v(t);const{deltaY:a}=i;i.move(t),u&&a.value>=0&&i.isVertical()&&(I(t),n(P(a.value)))}},S=()=>{u&&i.deltaY.value&&h()&&(e.duration=+s.animationDuration,e.status==="loosing"?(n(+s.headHeight,!0),d("update:modelValue",!0),M(()=>d("refresh"))):n(0))};return p(()=>s.modelValue,t=>{e.duration=+s.animationDuration,t?n(+s.headHeight,!0):o.success||s.successText?E():n(0,!1)}),w("touchmove",_,{target:T}),()=>{var t;const a={transitionDuration:`${e.duration}ms`,transform:e.distance?`translate3d(0,${e.distance}px, 0)`:""};return l("div",{ref:g,class:r()},[l("div",{ref:T,class:r("track"),style:a,onTouchstartPassive:V,onTouchend:S,onTouchcancel:S},[l("div",{class:r("head"),style:H()},[k()]),(t=o.default)==null?void 0:t.call(o)])])}}});const z=X(j);export{z as P};
import{b9 as y,d as L,ba as N,bb as $,T as p,bc as w,p as l,g as b,N as A,L as B,bd as I,X as M,be as f,bf as R,bg as U,bh as X}from"./index-DOpGZRF9.js";const[Y,r,C]=y("pull-refresh"),D=50,F=["pulling","loosing","success"],G={disabled:Boolean,modelValue:Boolean,headHeight:f(D),successText:String,pullingText:String,loosingText:String,loadingText:String,pullDistance:N,successDuration:f(500),animationDuration:f(300)};var j=L({name:Y,props:G,emits:["change","refresh","update:modelValue"],setup(s,{emit:d,slots:o}){let u;const g=b(),T=b(),x=$(g),e=A({status:"normal",distance:0,duration:0}),i=U(),H=()=>{if(s.headHeight!==D)return{height:`${s.headHeight}px`}},h=()=>e.status!=="loading"&&e.status!=="success"&&!s.disabled,P=t=>{const a=+(s.pullDistance||s.headHeight);return t>a&&(t<a*2?t=a+(t-a)/2:t=a*1.5+(t-a*2)/4),Math.round(t)},n=(t,a)=>{const c=+(s.pullDistance||s.headHeight);e.distance=t,a?e.status="loading":t===0?e.status="normal":t<c?e.status="pulling":e.status="loosing",d("change",{status:e.status,distance:t})},m=()=>{const{status:t}=e;return t==="normal"?"":s[`${t}Text`]||C(t)},k=()=>{const{status:t,distance:a}=e;if(o[t])return o[t]({distance:a});const c=[];return F.includes(t)&&c.push(l("div",{class:r("text")},[m()])),t==="loading"&&c.push(l(B,{class:r("loading")},{default:m})),c},E=()=>{e.status="success",setTimeout(()=>{n(0)},+s.successDuration)},v=t=>{u=R(x.value)===0,u&&(e.duration=0,i.start(t))},V=t=>{h()&&v(t)},_=t=>{if(h()){u||v(t);const{deltaY:a}=i;i.move(t),u&&a.value>=0&&i.isVertical()&&(I(t),n(P(a.value)))}},S=()=>{u&&i.deltaY.value&&h()&&(e.duration=+s.animationDuration,e.status==="loosing"?(n(+s.headHeight,!0),d("update:modelValue",!0),M(()=>d("refresh"))):n(0))};return p(()=>s.modelValue,t=>{e.duration=+s.animationDuration,t?n(+s.headHeight,!0):o.success||s.successText?E():n(0,!1)}),w("touchmove",_,{target:T}),()=>{var t;const a={transitionDuration:`${e.duration}ms`,transform:e.distance?`translate3d(0,${e.distance}px, 0)`:""};return l("div",{ref:g,class:r()},[l("div",{ref:T,class:r("track"),style:a,onTouchstartPassive:V,onTouchend:S,onTouchcancel:S},[l("div",{class:r("head"),style:H()},[k()]),(t=o.default)==null?void 0:t.call(o)])])}}});const z=X(j);export{z as P};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{g as s,X as l}from"./index-Dg78Fjh9.js";const r=new Set;function c(a,n=70){const e=s(r.has(a));function t(i){return{"--reveal-delay":`${i*n}ms`}}async function u(){e.value||(await l(),requestAnimationFrame(()=>requestAnimationFrame(()=>{e.value=!0,r.add(a)})))}return{revealed:e,revealDelay:t,reveal:u}}export{c as u};
import{g as s,X as l}from"./index-DOpGZRF9.js";const r=new Set;function c(a,n=70){const e=s(r.has(a));function t(i){return{"--reveal-delay":`${i*n}ms`}}async function u(){e.value||(await l(),requestAnimationFrame(()=>requestAnimationFrame(()=>{e.value=!0,r.add(a)})))}return{revealed:e,revealDelay:t,reveal:u}}export{c as u};
+1 -1
View File
@@ -32,7 +32,7 @@
html.theme-dark, html.theme-dark body { background-color: #15171A !important; }
</style>
<title>طلای منتزر</title>
<script type="module" crossorigin src="/assets/index-Dg78Fjh9.js"></script>
<script type="module" crossorigin src="/assets/index-DOpGZRF9.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-MNNG7RVm.css">
<link rel="manifest" href="/manifest.webmanifest"></head>
<body style="background-color: #fff">
+1 -1
View File
File diff suppressed because one or more lines are too long
+11
View File
@@ -294,6 +294,15 @@ export interface ReportBalance {
arz: string;
mandeh: string;
}
/** GET /customer/me/accounting-balance. Signed like the app: positive = owes. */
export interface AccountingBalance {
source: 'accounting' | 'stored' | 'none'
gold: string | null
rial: string | null
at: string | null
provider: string | null
}
export const api = {
listProducts: () => request<ProductSummary[]>('/catalog/products'),
@@ -323,6 +332,8 @@ export const api = {
// /customers/:id, /:id/orders and /:id/ledger-entries, which took the id from
// the URL and let anyone read anyone (SEC-08).
getMe: () => request<CustomerDetail>('/customer/me'),
/** D27 §12 — this customer's balance, read from the accounting software on every call. */
getAccountingBalance: () => request<AccountingBalance>('/customer/me/accounting-balance'),
getMyOrders: () => request<OrderDetail[]>('/customer/me/orders'),
getMyLedgerEntries: () => request<LedgerEntrySummary[]>('/customer/me/ledger-entries'),
+8
View File
@@ -1,6 +1,8 @@
import { createApp } from 'vue';
import { createPinia } from 'pinia';
import VueLazyLoad from 'vue3-lazyload';
import { Locale } from 'vant';
import faIR from 'vant/es/locale/lang/fa-IR';
import App from './App.vue';
import { router } from './router';
import { setUnauthorizedHandler } from './api/client';
@@ -23,6 +25,12 @@ import 'ant-design-vue/dist/antd.less';
import './assets/styles/style.less';
import 'vant/lib/index.css';
// Vant defaults to zh-CN. Every view in this app is Persian (RTL), so any
// Vant component rendering its own built-in text (PullRefresh's
// pulling/loosing labels, etc.) would otherwise show untranslated Chinese —
// switch to Vant's own fa-IR locale before anything mounts.
Locale.use('fa-IR', faIR);
const app = createApp(App);
app.use(createPinia());
@@ -37,6 +37,10 @@
<Spinner :spinning="loading && !rows.length" tip="درحال دریافت اطلاعات">
<PullRefresh v-model="refreshing" @refresh="onRefresh">
<template #pulling><Loading size="18" /></template>
<template #loosing><Loading size="18" /></template>
<template #loading><Loading size="18" /></template>
<template #success><span /></template>
<container class="cho__body">
<template v-if="rows.length">
<div class="cho__list">
@@ -142,7 +146,7 @@
<script setup lang="ts">
import { onBeforeUnmount, onMounted, ref } from 'vue'
import { Drawer } from 'ant-design-vue'
import { PullRefresh } from 'vant'
import { Loading, PullRefresh } from 'vant'
import Icon from '../../components/icon/Icon.vue'
import PageBar from '../../components/ui/PageBar.vue'
import Spinner from '../../components/Spinner.vue'
@@ -38,6 +38,10 @@
<Spinner :spinning="loading && !rows.length" tip="درحال دریافت اطلاعات">
<PullRefresh v-model="refreshing" @refresh="onRefresh">
<template #pulling><Loading size="18" /></template>
<template #loosing><Loading size="18" /></template>
<template #loading><Loading size="18" /></template>
<template #success><span /></template>
<container class="cch__body">
<div v-if="rows.length" class="cch__list">
<article
@@ -132,7 +136,7 @@
<script setup lang="ts">
import { onMounted, ref } from 'vue'
import { Drawer } from 'ant-design-vue'
import { PullRefresh } from 'vant'
import { Loading, PullRefresh } from 'vant'
import Icon from '../../components/icon/Icon.vue'
import PageBar from '../../components/ui/PageBar.vue'
import Spinner from '../../components/Spinner.vue'
@@ -53,6 +53,10 @@
<Spinner :spinning="loading && !rows.length && !details.length" tip="درحال دریافت اطلاعات">
<PullRefresh v-model="refreshing" @refresh="onRefresh">
<template #pulling><Loading size="18" /></template>
<template #loosing><Loading size="18" /></template>
<template #loading><Loading size="18" /></template>
<template #success><span /></template>
<container class="rep__body">
<!-- ── کلیات حساب ─────────────────────────────────────────── -->
<template v-if="activeKey === '1'">
@@ -147,7 +151,7 @@
import { onBeforeUnmount, onMounted, ref } from 'vue'
import { useRoute } from 'vue-router'
import { Drawer } from 'ant-design-vue'
import { PullRefresh } from 'vant'
import { Loading, PullRefresh } from 'vant'
import Icon from '../../components/icon/Icon.vue'
import PageBar from '../../components/ui/PageBar.vue'
import Spinner from '../../components/Spinner.vue'
@@ -245,7 +245,15 @@ function logOut() {
async function loadDashboard() {
if (session.isLoggedIn) {
customer.value = await api.getMe()
// Not wrapped before: a failure here (expired token, network blip) left
// the exception uncaught, so onRefresh's refreshing.value = false never
// ran and PullRefresh stayed stuck in its loading state — a working pull
// gesture never dismissed it again until a full page reload.
try {
customer.value = await api.getMe()
} catch (e) {
console.log(e)
}
}
try {
goldPrice.value = await api.getLatestGoldPrice()
+5 -1
View File
@@ -49,6 +49,10 @@
<Spinner :spinning="loading" tip="درحال دریافت اطلاعات">
<PullRefresh v-model="refreshing" @refresh="onRefresh">
<template #pulling><Loading size="18" /></template>
<template #loosing><Loading size="18" /></template>
<template #loading><Loading size="18" /></template>
<template #success><span /></template>
<container class="ord__body">
<template v-if="filteredOrders.length">
<div class="ord__list">
@@ -145,7 +149,7 @@
<script setup lang="ts">
import { computed, onMounted, reactive, ref } from 'vue'
import { Drawer } from 'ant-design-vue'
import { PullRefresh } from 'vant'
import { Loading, PullRefresh } from 'vant'
import Icon from '../../components/icon/Icon.vue'
import PageBar from '../../components/ui/PageBar.vue'
import Spinner from '../../components/Spinner.vue'
+68 -1
View File
@@ -56,6 +56,25 @@
</dl>
</section>
<!-- D27 §12: the balance in the accounting software, re-read on every visit. -->
<section v-if="balance && balance.source !== 'none'" class="prof__block">
<SectionHead title="مانده‌ی حساب" :subtitle="balanceSubtitle" />
<dl class="prof__specs">
<div class="prof__spec">
<dt>مانده‌ی طلا</dt>
<dd :class="sideClass(balance.gold)">{{ grams(balance.gold) }} <small>{{ sideLabel(balance.gold) }}</small></dd>
</div>
<div class="prof__spec">
<dt>مانده‌ی ریالی</dt>
<dd :class="sideClass(balance.rial)">{{ rials(balance.rial) }} <small>{{ sideLabel(balance.rial) }}</small></dd>
</div>
</dl>
</section>
<section v-else-if="balanceLoading" class="prof__block">
<SectionHead title="مانده‌ی حساب" subtitle="در حال دریافت از حسابداری…" />
<div class="prof__specs prof__skeleton" />
</section>
<section v-else-if="!loading" class="prof__empty">
<Icon icon="vuesax-linear:user" size="26" />
<p>اطلاعات حساب در دسترس نیست.</p>
@@ -85,7 +104,7 @@ import Icon from '../../components/icon/Icon.vue'
import PageBar from '../../components/ui/PageBar.vue'
import SectionHead from '../../components/home/SectionHead.vue'
import { useSessionStore } from '../../stores/session'
import { api, type CustomerDetail } from '../../api/client'
import { api, type AccountingBalance, type CustomerDetail } from '../../api/client'
const VERIFICATION_LABELS: Record<string, string> = {
UNVERIFIED: 'احراز نشده',
@@ -112,8 +131,38 @@ const canCompleteProfile = computed(() => {
const router = useRouter()
// D27 §12 — fetched on its own, every time the page opens, so a slow
// accounting server never holds up the profile itself.
const balance = ref<AccountingBalance | null>(null)
const balanceLoading = ref(false)
const num = (v: string | null) => Number(v ?? 0)
const sideLabel = (v: string | null) => (num(v) > 0 ? 'بدهکار' : num(v) < 0 ? 'بستانکار' : '')
const sideClass = (v: string | null) => (num(v) > 0 ? 'is-debt' : num(v) < 0 ? 'is-credit' : '')
const grams = (v: string | null) =>
`${Math.abs(num(v)).toLocaleString('fa-IR', { maximumFractionDigits: 3 })} گرم`
const rials = (v: string | null) => `${Math.abs(num(v)).toLocaleString('fa-IR')} ریال`
const balanceSubtitle = computed(() => {
const b = balance.value
if (!b?.at) return ''
const when = new Date(b.at).toLocaleString('fa-IR', { dateStyle: 'short', timeStyle: 'short' })
return b.source === 'stored' ? `آخرین مانده‌ی ثبت‌شده — ${when}` : `از ${b.provider ?? 'حسابداری'} — ${when}`
})
async function loadBalance() {
balanceLoading.value = true
try {
balance.value = await api.getAccountingBalance()
} catch {
balance.value = null
} finally {
balanceLoading.value = false
}
}
onMounted(async () => {
if (!session.isLoggedIn) return
void loadBalance()
loading.value = true
try {
customer.value = await api.getMe()
@@ -225,6 +274,24 @@ onMounted(async () => {
text-align: left;
}
.prof__spec dd.is-debt {
color: @wine;
}
.prof__spec dd.is-credit {
color: @green;
}
.prof__spec dd small {
font-weight: 500;
font-size: 11px;
}
.prof__skeleton {
height: 92px;
background: @hairlineSoft;
}
.prof__empty {
margin-top: 26px;
padding: 34px 20px;
+1 -1
View File
@@ -1 +1 @@
{"root":["./src/app.vue","./src/env.d.ts","./src/main.ts","./src/sw.ts","./src/api/client.ts","./src/components/dialogvant.vue","./src/components/dialogvantonebutton.vue","./src/components/emptystate.vue","./src/components/spinner.vue","./src/components/viewall.vue","./src/components/home/accountstrip.vue","./src/components/home/categoryrail.vue","./src/components/home/ratestrip.vue","./src/components/home/sectionhead.vue","./src/components/home/showcasecard.vue","./src/components/home/showcaseslider.vue","./src/components/icon/icon.vue","./src/components/input/otpinput.vue","./src/components/input/singleotpinput.vue","./src/components/product/cartitem.vue","./src/components/product/category.vue","./src/components/product/galleryslider.vue","./src/components/product/ordercard.vue","./src/components/product/orderitemcard.vue","./src/components/product/productcard.vue","./src/components/product/singleproduct.vue","./src/components/search/filters.vue","./src/components/search/searchinput.vue","./src/components/slider/homeslider.vue","./src/components/slider/slider.vue","./src/components/ui/container.vue","./src/components/ui/contentwrapper.vue","./src/components/ui/dropdown.vue","./src/components/ui/navigation.vue","./src/components/ui/pagebar.vue","./src/components/ui/scrollfetch.vue","./src/components/ui/scrollfetchaftersearch.vue","./src/components/ui/scrollfetchsearch.vue","./src/components/ui/toastcard.vue","./src/components/ui/toasthost.vue","./src/components/upload/singleimageuploader.vue","./src/composables/useorderitemproduct.ts","./src/composables/usepagetransition.ts","./src/composables/useproduct.ts","./src/composables/useproductdetail.ts","./src/composables/useproducts.ts","./src/composables/userefresh.ts","./src/composables/usereveal.ts","./src/composables/usetoast.ts","./src/layout/fullpagelayout.vue","./src/layout/masterlayout.vue","./src/router/index.ts","./src/stores/cartstore.ts","./src/stores/configstore.ts","./src/stores/favoritesstore.ts","./src/stores/filtersstore.ts","./src/stores/loadingstore.ts","./src/stores/navstore.ts","./src/stores/session.ts","./src/stores/transitionstore.ts","./src/stores/windowdatastore.ts","./src/types/moment-jalaali-shim.d.ts","./src/types/swiper-shim.d.ts","./src/utils/checkaccess.ts","./src/utils/filters.ts","./src/utils/orderstatus.ts","./src/utils/validator.ts","./src/views/cartview.vue","./src/views/homeview.vue","./src/views/newestview.vue","./src/views/expert/childordersview.vue","./src/views/expert/customerchoiceview.vue","./src/views/report/reportdocument.vue","./src/views/report/reportview.vue","./src/views/search/collectionview.vue","./src/views/search/searchview.vue","./src/views/user/completeprofileview.vue","./src/views/user/dashboardview.vue","./src/views/user/favoritesview.vue","./src/views/user/loginregisterview.vue","./src/views/user/loginview.vue","./src/views/user/notificationsview.vue","./src/views/user/ordersview.vue","./src/views/user/profileview.vue","./src/views/user/registerview.vue","./src/views/user/transactionsview.vue"],"version":"5.9.3"}
{"root":["./src/app.vue","./src/env.d.ts","./src/main.ts","./src/sw.ts","./src/api/client.ts","./src/components/dialogvant.vue","./src/components/dialogvantonebutton.vue","./src/components/emptystate.vue","./src/components/spinner.vue","./src/components/viewall.vue","./src/components/home/accountstrip.vue","./src/components/home/categoryrail.vue","./src/components/home/ratestrip.vue","./src/components/home/sectionhead.vue","./src/components/home/showcasecard.vue","./src/components/home/showcaseslider.vue","./src/components/icon/icon.vue","./src/components/input/otpinput.vue","./src/components/input/singleotpinput.vue","./src/components/product/cartitem.vue","./src/components/product/category.vue","./src/components/product/galleryslider.vue","./src/components/product/ordercard.vue","./src/components/product/orderitemcard.vue","./src/components/product/productcard.vue","./src/components/product/productmorph.vue","./src/components/product/singleproduct.vue","./src/components/search/filters.vue","./src/components/search/searchinput.vue","./src/components/slider/homeslider.vue","./src/components/slider/slider.vue","./src/components/ui/container.vue","./src/components/ui/contentwrapper.vue","./src/components/ui/dropdown.vue","./src/components/ui/navigation.vue","./src/components/ui/pagebar.vue","./src/components/ui/scrollfetch.vue","./src/components/ui/scrollfetchaftersearch.vue","./src/components/ui/scrollfetchsearch.vue","./src/components/ui/toastcard.vue","./src/components/ui/toasthost.vue","./src/components/ui/toggleswitch.vue","./src/components/upload/singleimageuploader.vue","./src/composables/useorderitemproduct.ts","./src/composables/usepagetransition.ts","./src/composables/useproduct.ts","./src/composables/useproductdetail.ts","./src/composables/useproductmorph.ts","./src/composables/useproducts.ts","./src/composables/userefresh.ts","./src/composables/usereveal.ts","./src/composables/usetoast.ts","./src/layout/fullpagelayout.vue","./src/layout/masterlayout.vue","./src/router/index.ts","./src/stores/appearancestore.ts","./src/stores/cartstore.ts","./src/stores/configstore.ts","./src/stores/favoritesstore.ts","./src/stores/filtersstore.ts","./src/stores/loadingstore.ts","./src/stores/navstore.ts","./src/stores/session.ts","./src/stores/transitionstore.ts","./src/stores/windowdatastore.ts","./src/types/moment-jalaali-shim.d.ts","./src/types/swiper-shim.d.ts","./src/utils/checkaccess.ts","./src/utils/filters.ts","./src/utils/orderstatus.ts","./src/utils/validator.ts","./src/views/cartview.vue","./src/views/homeview.vue","./src/views/newestview.vue","./src/views/expert/childordersview.vue","./src/views/expert/customerchoiceview.vue","./src/views/report/reportdocument.vue","./src/views/report/reportview.vue","./src/views/search/collectionview.vue","./src/views/search/searchview.vue","./src/views/user/appearanceview.vue","./src/views/user/completeprofileview.vue","./src/views/user/dashboardview.vue","./src/views/user/favoritesview.vue","./src/views/user/loginregisterview.vue","./src/views/user/loginview.vue","./src/views/user/notificationsview.vue","./src/views/user/ordersview.vue","./src/views/user/profileview.vue","./src/views/user/registerview.vue","./src/views/user/transactionsview.vue"],"version":"5.9.3"}