2 lines
14 KiB
JavaScript
2 lines
14 KiB
JavaScript
import{d as R,h as x,P as N,Q as Y,b as m,c as b,w as K,W as ee,e as n,f as M,g as B,F as j,r as te,j as D,D as W,X as se,T as ae,E as H,p as o,C as _,I as C,t as $,m as p,s as ne,Y as oe,S as A,O as U,v as z,z as le,Z as L,i as ue,_ as J,$ as q}from"./index-Db_y-2Uj.js";import{P as Z}from"./PageBar-B_iQLUkY.js";import{a as G,F,I as T,T as re}from"./index-C1Jd6rs3.js";import"./FormItemContext-ctoVP2PP.js";import"./classCallCheck-ezfXqTAK.js";import"./raf-nDFcuFT6.js";const ie={class:"otp-single-input"},ce=["type","placeholder","disabled"],de={key:0},pe=["innerHTML"],me=R({__name:"SingleOtpInput",props:{inputType:{default:"tel"},value:{},separator:{},focus:{type:Boolean},inputClasses:{},shouldAutoFocus:{type:Boolean},isLastChild:{type:Boolean},placeholder:{},disabled:{type:Boolean}},emits:["on-change","on-keydown","on-paste","on-focus","on-blur"],setup(u,{emit:k}){const i=u,g=k,r=x(i.value||""),s=x(null),h=()=>(r.value=r.value.toString(),r.value.length>1&&(r.value=r.value.slice(0,1)),g("on-change",r.value)),d=c=>c>=48&&c<=57||c>=96&&c<=105,a=c=>{i.disabled&&c.preventDefault();const v=c||window.event,f=v.which?v.which:v.keyCode;d(f)||[8,9,13,37,39,46,86].includes(f)?g("on-keydown",c):v.preventDefault()},y=c=>g("on-paste",c),w=()=>(s.value.select(),g("on-focus")),I=()=>g("on-blur");return N(()=>i.value,(c,v)=>{c!==v&&(r.value=c??"")}),N(()=>i.focus,(c,v)=>{v!==c&&s.value&&i.focus&&(s.value.focus(),s.value.select())}),Y(()=>{s.value&&i.focus&&i.shouldAutoFocus&&(s.value.focus(),s.value.select())}),(c,v)=>(m(),b("div",ie,[K(n("input",{type:u.inputType,placeholder:u.placeholder,disabled:u.disabled,ref_key:"input",ref:s,min:"0",max:"9",maxlength:"1",pattern:"[0-9]","onUpdate:modelValue":v[0]||(v[0]=f=>r.value=f),class:M(u.inputClasses),onInput:h,onKeydown:a,onPaste:y,onFocus:w,onBlur:I},null,42,ce),[[ee,r.value]]),!u.isLastChild&&u.separator?(m(),b("span",de,[n("span",{innerHTML:u.separator},null,8,pe)])):B("",!0)]))}}),ve={class:"flex ltr justify-around w-full"},_e=8,fe=37,he=39,ge=46,ye=R({__name:"OtpInput",props:{defaultFocus:{type:Boolean},numInputs:{default:4},separator:{},inputClasses:{},inputType:{},shouldAutoFocus:{type:Boolean,default:!1},placeholder:{},disabled:{type:Boolean,default:!1}},emits:["on-change","on-complete"],setup(u,{emit:k}){const i=u,g=k,r=x(0),s=x([]),h=x([]),d=t=>{i.defaultFocus&&t<i.numInputs&&!s.value[t]?r.value=s.value.length:r.value=t},a=()=>{r.value=-1},y=()=>s.value.join("").length===i.numInputs?g("on-complete",s.value.join("")):"Wait until the user enters the required number of characters",w=t=>{r.value=Math.max(Math.min(i.numInputs-1,t),0)},I=()=>w(r.value+1),c=()=>w(r.value-1),v=t=>{h.value=Object.assign([],s.value),typeof t=="string"&&t===""?s.value.splice(r.value,1):s.value[r.value]=t,h.value.join("")!==s.value.join("")&&(g("on-change",s.value.join("")),y())},f=t=>{var V;t.preventDefault();const E=(((V=t.clipboardData)==null?void 0:V.getData("text/plain"))??"").slice(0,i.numInputs-r.value).split("");if(i.inputType==="number"&&!E.join("").match(/^\d+$/))return"Invalid pasted data";const P=s.value.slice(0,r.value).concat(E);return P.slice(0,i.numInputs).forEach((Q,X)=>{s.value[X]=Q}),w(P.slice(0,i.numInputs).length),y()},e=t=>{v(t),I()},l=t=>{switch(t.keyCode){case _e:t.preventDefault(),v(""),c();break;case ge:t.preventDefault(),v("");break;case fe:t.preventDefault(),c();break;case he:t.preventDefault(),I();break}};return(t,S)=>(m(),b("div",null,[n("div",ve,[(m(!0),b(j,null,te(u.numInputs,(E,O)=>(m(),D(me,{key:O,focus:r.value===O,value:s.value[O],separator:u.separator,"input-type":u.inputType,"input-classes":u.inputClasses,"is-last-child":O===u.numInputs-1,"should-auto-focus":u.shouldAutoFocus,placeholder:u.placeholder,disabled:u.disabled,onOnChange:e,onOnKeydown:l,onOnPaste:f,onOnFocus:P=>d(O),onOnBlur:a},null,8,["focus","value","separator","input-type","input-classes","is-last-child","should-auto-focus","placeholder","disabled","onOnFocus"]))),128))])]))}}),be=u=>` مقدار ${u} نا معتبر است `,ke=u=>({pattern:/^(\+98|0098|98|0)?9\d{9}$/g,message:be(u)}),xe=u=>({required:!0,message:` لطفا ${u} را وارد کنید `}),we={class:"auth"},$e={class:"auth__intro"},Ie={class:"auth__mark","aria-hidden":"true"},Oe={class:"auth__title"},Ce={class:"auth__sub"},Fe={class:"auth__card"},Se={key:0,class:"auth__timer"},Te={key:1,class:"auth__timer"},Be=["disabled"],De={class:"auth__switch"},Ee=R({__name:"LoginView",emits:["register"],setup(u,{emit:k}){const i=k,g=W(),r=se(),s=ae(),h=U({username:void 0}),d=U({step:1,loading:!1,defaultFocus:!1}),a=x(0),y=()=>{a.value>0&&setTimeout(()=>{a.value>0&&(a.value-=1,y())},1e3)},w=async()=>{try{d.loading=!0,await z.requestOtp(String(h.username??"")),d.step=2,a.value=120,y(),await le(()=>{d.defaultFocus=!0})}catch(e){const l=e instanceof Error&&/\((?:429|404|403)\)/.test(e.message)?c(e):null;L.error(l??"خطا در ارسال کد. لطفاً دوباره تلاش کنید.")}finally{d.loading=!1}},I=async e=>{try{d.loading=!0;const l=await z.verifyOtp(String(h.username??""),e),{token:t,customer:S}=l;if(s.login(t,S.id,S.mobile),l.iamBootstrapUrl){window.location.assign(l.iamBootstrapUrl);return}try{const O=await z.getExpertIdentity();s.setSalesExpert(O.isSalesExpert)}catch{s.setSalesExpert(!1)}const E=typeof r.query.redirect=="string"?r.query.redirect:void 0;await g.replace(E??{name:"home"}),L.success("با موفقیت وارد شدید")}catch(l){L.error(l instanceof Error&&/\(429\)/.test(l.message)?c(l)??"تعداد تلاشها بیش از حد مجاز است.":"کد وارد شده صحیح نیست")}finally{d.loading=!1}};function c(e){const l=e.message.match(/\{.*\}/);if(!l)return null;try{const t=JSON.parse(l[0]);return typeof t.message=="string"?t.message:null}catch{return null}}const v=e=>e<10?"0"+e:e,f=ue(()=>d.step===1?"دریافت رمز عبور":"دریافت مجدد رمز عبور");return(e,l)=>{const t=H("container");return m(),b("div",we,[o(Z,{title:"ورود","back-to":"home"}),o(t,{class:"auth__body"},{default:_(()=>[n("section",$e,[n("div",Ie,[o(C,{icon:"vuesax-linear:security-user",size:"28"})]),n("h2",Oe,"ورود به "+$(p(ne).name),1),n("p",Ce,$(d.step===1?"شماره موبایل خود را وارد کنید":"رمز یکبارمصرف را وارد کنید"),1)]),n("section",Fe,[d.step===2?(m(),b(j,{key:0},[o(ye,{class:"auth__otp","input-classes":"otp-input",inputType:"tel","num-inputs":4,"should-auto-focus":!0,defaultFocus:d.defaultFocus,onOnComplete:I},null,8,["defaultFocus"]),a.value>0?(m(),b("p",Se," امکان دریافت مجدد رمز در "+$(v(a.value))+" ثانیه دیگر ",1)):(m(),b("p",Te,"برای دریافت رمز عبور مجدد تلاش کنید"))],64)):B("",!0),o(p(G),{model:h,layout:"vertical",onFinish:w,class:"auth__form"},{default:_(()=>[K(o(p(F),{name:"username",label:"تلفن همراه",rules:[p(xe)("تلفن همراه"),p(ke)("تلفن همراه")]},{default:_(()=>[o(p(T),{type:"number",value:h.username,"onUpdate:value":l[0]||(l[0]=S=>h.username=S)},null,8,["value"])]),_:1},8,["rules"]),[[oe,d.step===1]]),n("button",{type:"submit",class:M(["auth__cta",{"is-loading":d.loading}]),disabled:d.loading||a.value>0&&d.step===2},$(f.value),11,Be)]),_:1},8,["model"])]),n("p",De,[l[2]||(l[2]=A(" اگر ثبت نام نکردهاید ",-1)),n("button",{type:"button",onClick:l[1]||(l[1]=S=>i("register",!0))},"ثبت نام کنید")])]),_:1})])}}}),Re=J(Ee,[["__scopeId","data-v-0d04f275"]]),Ae={class:"reg"},ze={class:"reg__doneMark","aria-hidden":"true"},Le={class:"reg__doneText"},Me={class:"reg__ltr"},Pe={class:"reg__doneActions"},Ue={class:"reg__head"},je=["aria-valuenow"],Ve={class:"reg__stepLabel"},Ne={class:"reg__title"},qe={class:"reg__sub"},Ke={key:"s1",class:"reg__fields"},We={class:"reg__row"},He={key:"s2",class:"reg__fields"},Je={class:"reg__note"},Ze={class:"reg__footer"},Ge={class:"reg__footerInner"},Qe=["disabled"],Xe={key:0,class:"reg__spinner keep-motion","aria-hidden":"true"},Ye={key:0,class:"reg__switch"},et=R({__name:"RegisterView",emits:["register"],setup(u,{emit:k}){const i=k,g=W(),r=x(),s=x(1),h=x(!1),d=x(!1),a=U({fname:void 0,lname:void 0,mobile:void 0,store_name:void 0,phone:void 0,city:void 0,address:void 0}),y=f=>({required:!0,whitespace:!0,message:`لطفاً ${f} را وارد کنید`});function w(f){return(f??"").replace(/[۰-۹]/g,e=>String(e.charCodeAt(0)-1776)).replace(/[٠-٩]/g,e=>String(e.charCodeAt(0)-1632)).replace(/\D/g,"")}function I(){d.value?g.push({name:"home"}):s.value===2?s.value=1:i("register",!1)}async function c(){if(s.value===1){s.value=2,window.scrollTo({top:0,behavior:"smooth"});return}try{h.value=!0,await z.register({fname:String(a.fname??""),lname:String(a.lname??""),mobile:String(a.mobile??""),store_name:String(a.store_name??""),phone:String(a.phone??""),address:String(a.address??""),city:String(a.city??"")}),d.value=!0,window.scrollTo({top:0})}catch(f){L.error(v(f)??"خطا در ثبت اطلاعات. لطفاً دوباره تلاش کنید.")}finally{h.value=!1}}function v(f){const e=f instanceof Error?f.message.match(/\{.*\}/):null;if(!e)return null;try{const l=JSON.parse(e[0]);return Array.isArray(l.message)?l.message[0]??null:l.message??null}catch{return null}}return(f,e)=>{const l=H("container");return m(),b("div",Ae,[o(Z,{title:"ثبت نام","back-action":I}),o(q,{name:"reg-fade",mode:"out-in"},{default:_(()=>[d.value?(m(),D(l,{key:"done",class:"reg__body reg__done"},{default:_(()=>[n("div",ze,[e[10]||(e[10]=n("span",{class:"reg__doneRing"},null,-1)),o(C,{icon:"vuesax-linear:tick-circle",size:"40"})]),e[12]||(e[12]=n("h2",{class:"reg__doneTitle"},"درخواست شما ثبت شد",-1)),n("p",Le,[A(" اطلاعات فروشگاه "+$(a.store_name)+" برای کارشناسان ما ارسال شد. پس از بررسی و تایید، میتوانید با شماره ",1),n("span",Me,$(a.mobile),1),e[11]||(e[11]=A(" وارد شوید. ",-1))]),n("div",Pe,[n("button",{type:"button",class:"reg__cta",onClick:e[0]||(e[0]=t=>p(g).push({name:"home"}))},"بازگشت به صفحه اصلی"),n("button",{type:"button",class:"reg__ghost",onClick:e[1]||(e[1]=t=>i("register",!1))},"رفتن به صفحه ورود")])]),_:1})):(m(),D(l,{key:"form",class:"reg__body"},{default:_(()=>[n("header",Ue,[n("div",{class:"reg__steps",role:"progressbar","aria-valuenow":s.value,"aria-valuemin":"1","aria-valuemax":"2"},[e[13]||(e[13]=n("span",{class:"reg__seg is-on"},null,-1)),n("span",{class:M(["reg__seg",{"is-on":s.value===2}])},null,2)],8,je),n("p",Ve,"مرحله "+$(s.value===1?"۱":"۲")+" از ۲",1),n("h2",Ne,$(s.value===1?"اطلاعات شما":"اطلاعات فروشگاه"),1),n("p",qe,$(s.value===1?"برای ساخت حساب فروشگاه، ابتدا خودتان را معرفی کنید.":"این اطلاعات برای ارسال سفارش و تایید حساب استفاده میشود."),1)]),o(p(G),{ref_key:"formRef",ref:r,model:a,layout:"vertical",class:"reg__form",onFinish:c},{default:_(()=>[o(q,{name:s.value===2?"reg-next":"reg-prev",mode:"out-in"},{default:_(()=>[s.value===1?(m(),b("div",Ke,[n("div",We,[o(p(F),{name:"fname",label:"نام",rules:[y("نام خود")]},{default:_(()=>[o(p(T),{value:a.fname,"onUpdate:value":e[2]||(e[2]=t=>a.fname=t),placeholder:"مثلاً علی",autocomplete:"given-name",enterkeyhint:"next"},null,8,["value"])]),_:1},8,["rules"]),o(p(F),{name:"lname",label:"نام خانوادگی",rules:[y("نام خانوادگی")]},{default:_(()=>[o(p(T),{value:a.lname,"onUpdate:value":e[3]||(e[3]=t=>a.lname=t),placeholder:"مثلاً محمدی",autocomplete:"family-name",enterkeyhint:"next"},null,8,["value"])]),_:1},8,["rules"])]),o(p(F),{name:"mobile",label:"شماره موبایل",rules:[y("شماره موبایل"),{pattern:/^09\d{9}$/,message:"شماره موبایل باید ۱۱ رقم و با ۰۹ شروع شود"}],extra:"کد ورود به این شماره پیامک میشود."},{default:_(()=>[o(p(T),{value:a.mobile,class:"reg__num",type:"tel",inputmode:"numeric",maxlength:11,placeholder:"09123456789",autocomplete:"tel",enterkeyhint:"next","onUpdate:value":e[4]||(e[4]=t=>a.mobile=w(t))},{prefix:_(()=>[o(C,{icon:"vuesax-linear:mobile",size:"18"})]),_:1},8,["value"])]),_:1},8,["rules"])])):(m(),b("div",He,[o(p(F),{name:"store_name",label:"نام فروشگاه",rules:[y("نام فروشگاه")]},{default:_(()=>[o(p(T),{value:a.store_name,"onUpdate:value":e[5]||(e[5]=t=>a.store_name=t),placeholder:"مثلاً گالری طلای آفتاب",autocomplete:"organization",enterkeyhint:"next"},{prefix:_(()=>[o(C,{icon:"vuesax-linear:shop",size:"18"})]),_:1},8,["value"])]),_:1},8,["rules"]),o(p(F),{name:"phone",label:"تلفن فروشگاه",rules:[y("تلفن فروشگاه"),{pattern:/^(0\d{10}|\d{8})$/,message:"تلفن را با کد شهر وارد کنید، مثلاً 02112345678"}]},{default:_(()=>[o(p(T),{value:a.phone,class:"reg__num",type:"tel",inputmode:"numeric",maxlength:11,placeholder:"02112345678",autocomplete:"tel-national",enterkeyhint:"next","onUpdate:value":e[6]||(e[6]=t=>a.phone=w(t))},{prefix:_(()=>[o(C,{icon:"vuesax-linear:call",size:"18"})]),_:1},8,["value"])]),_:1},8,["rules"]),o(p(F),{name:"city",label:"شهر",rules:[y("شهر")]},{default:_(()=>[o(p(T),{value:a.city,"onUpdate:value":e[7]||(e[7]=t=>a.city=t),placeholder:"مثلاً تهران",autocomplete:"address-level2",enterkeyhint:"next"},{prefix:_(()=>[o(C,{icon:"vuesax-linear:buildings",size:"18"})]),_:1},8,["value"])]),_:1},8,["rules"]),o(p(F),{name:"address",label:"آدرس پستی",rules:[y("آدرس فروشگاه")]},{default:_(()=>[o(p(re),{value:a.address,"onUpdate:value":e[8]||(e[8]=t=>a.address=t),rows:3,placeholder:"خیابان، کوچه، پلاک، واحد",autocomplete:"street-address"},null,8,["value"])]),_:1},8,["rules"]),n("div",Je,[o(C,{icon:"vuesax-linear:shield-tick",size:"18"}),e[14]||(e[14]=n("span",null,"حساب شما پس از بررسی اطلاعات توسط کارشناسان فعال میشود.",-1))])]))]),_:1},8,["name"]),n("footer",Ze,[n("div",Ge,[n("button",{type:"submit",class:M(["reg__cta",{"is-loading":h.value}]),disabled:h.value},[h.value?(m(),b("span",Xe)):B("",!0),n("span",null,$(s.value===1?"ادامه":h.value?"در حال ثبت…":"ثبت درخواست"),1),s.value===1?(m(),D(C,{key:1,icon:"vuesax-linear:arrow-left",size:"18"})):B("",!0)],10,Qe),s.value===1?(m(),b("p",Ye,[e[15]||(e[15]=A(" حساب دارید؟ ",-1)),n("button",{type:"button",onClick:e[9]||(e[9]=t=>i("register",!1))},"وارد شوید")])):B("",!0)])])]),_:1},8,["model"])]),_:1}))]),_:1})])}}}),tt=J(et,[["__scopeId","data-v-609b9316"]]),rt=R({__name:"LoginRegisterView",setup(u){const k=x(!1),i=g=>k.value=g;return(g,r)=>(m(),b(j,null,[k.value?B("",!0):(m(),D(Re,{key:0,onRegister:i})),k.value?(m(),D(tt,{key:1,onRegister:i})):B("",!0)],64))}});export{rt as default};
|