vendor.js 2.1 MB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864108651086610867108681086910870108711087210873108741087510876108771087810879108801088110882108831088410885108861088710888108891089010891108921089310894108951089610897108981089910900109011090210903109041090510906109071090810909109101091110912109131091410915109161091710918109191092010921109221092310924109251092610927109281092910930109311093210933109341093510936109371093810939109401094110942109431094410945109461094710948109491095010951109521095310954109551095610957109581095910960109611096210963109641096510966109671096810969109701097110972109731097410975109761097710978109791098010981109821098310984109851098610987109881098910990109911099210993109941099510996109971099810999110001100111002110031100411005110061100711008110091101011011110121101311014110151101611017110181101911020110211102211023110241102511026110271102811029110301103111032110331103411035110361103711038110391104011041110421104311044110451104611047110481104911050110511105211053110541105511056110571105811059110601106111062110631106411065110661106711068110691107011071110721107311074110751107611077110781107911080110811108211083110841108511086110871108811089110901109111092110931109411095110961109711098110991110011101111021110311104111051110611107111081110911110111111111211113111141111511116111171111811119111201112111122111231112411125111261112711128111291113011131111321113311134111351113611137111381113911140111411114211143111441114511146111471114811149111501115111152111531115411155111561115711158111591116011161111621116311164111651116611167111681116911170111711117211173111741117511176111771117811179111801118111182111831118411185111861118711188111891119011191111921119311194111951119611197111981119911200112011120211203112041120511206112071120811209112101121111212112131121411215112161121711218112191122011221112221122311224112251122611227112281122911230112311123211233112341123511236112371123811239112401124111242112431124411245112461124711248112491125011251112521125311254112551125611257112581125911260112611126211263112641126511266112671126811269112701127111272112731127411275112761127711278112791128011281112821128311284112851128611287112881128911290112911129211293112941129511296112971129811299113001130111302113031130411305113061130711308113091131011311113121131311314113151131611317113181131911320113211132211323113241132511326113271132811329113301133111332113331133411335113361133711338113391134011341113421134311344113451134611347113481134911350113511135211353113541135511356113571135811359113601136111362113631136411365113661136711368113691137011371113721137311374113751137611377113781137911380113811138211383113841138511386113871138811389113901139111392113931139411395113961139711398113991140011401114021140311404114051140611407114081140911410114111141211413114141141511416114171141811419114201142111422114231142411425114261142711428114291143011431114321143311434114351143611437114381143911440114411144211443114441144511446114471144811449114501145111452114531145411455114561145711458114591146011461114621146311464114651146611467114681146911470114711147211473114741147511476114771147811479114801148111482114831148411485114861148711488114891149011491114921149311494114951149611497114981149911500115011150211503115041150511506115071150811509115101151111512115131151411515115161151711518115191152011521115221152311524115251152611527115281152911530115311153211533115341153511536115371153811539115401154111542115431154411545115461154711548115491155011551115521155311554115551155611557115581155911560115611156211563115641156511566115671156811569115701157111572115731157411575115761157711578115791158011581115821158311584115851158611587115881158911590115911159211593115941159511596115971159811599116001160111602116031160411605116061160711608116091161011611116121161311614116151161611617116181161911620116211162211623116241162511626116271162811629116301163111632116331163411635116361163711638116391164011641116421164311644116451164611647116481164911650116511165211653116541165511656116571165811659116601166111662116631166411665116661166711668116691167011671116721167311674116751167611677116781167911680116811168211683116841168511686116871168811689116901169111692116931169411695116961169711698116991170011701117021170311704117051170611707117081170911710117111171211713117141171511716117171171811719117201172111722117231172411725117261172711728117291173011731117321173311734117351173611737117381173911740117411174211743117441174511746117471174811749117501175111752117531175411755117561175711758117591176011761117621176311764117651176611767117681176911770117711177211773117741177511776117771177811779117801178111782117831178411785117861178711788117891179011791117921179311794117951179611797117981179911800118011180211803118041180511806118071180811809118101181111812118131181411815118161181711818118191182011821118221182311824118251182611827118281182911830118311183211833118341183511836118371183811839118401184111842118431184411845118461184711848118491185011851118521185311854118551185611857118581185911860118611186211863118641186511866118671186811869118701187111872118731187411875118761187711878118791188011881118821188311884118851188611887118881188911890118911189211893118941189511896118971189811899119001190111902119031190411905119061190711908119091191011911119121191311914119151191611917119181191911920119211192211923119241192511926119271192811929119301193111932119331193411935119361193711938119391194011941119421194311944119451194611947119481194911950119511195211953119541195511956119571195811959119601196111962119631196411965119661196711968119691197011971119721197311974119751197611977119781197911980119811198211983119841198511986119871198811989119901199111992119931199411995119961199711998119991200012001120021200312004120051200612007120081200912010120111201212013120141201512016120171201812019120201202112022120231202412025120261202712028120291203012031120321203312034120351203612037120381203912040120411204212043120441204512046120471204812049120501205112052120531205412055120561205712058120591206012061120621206312064120651206612067120681206912070120711207212073120741207512076120771207812079120801208112082120831208412085120861208712088120891209012091120921209312094120951209612097120981209912100121011210212103121041210512106121071210812109121101211112112121131211412115121161211712118121191212012121121221212312124121251212612127121281212912130121311213212133121341213512136121371213812139121401214112142121431214412145121461214712148121491215012151121521215312154121551215612157121581215912160121611216212163121641216512166121671216812169121701217112172121731217412175121761217712178121791218012181121821218312184121851218612187121881218912190121911219212193121941219512196121971219812199122001220112202122031220412205122061220712208122091221012211122121221312214122151221612217122181221912220122211222212223122241222512226122271222812229122301223112232122331223412235122361223712238122391224012241122421224312244122451224612247122481224912250122511225212253122541225512256122571225812259122601226112262122631226412265122661226712268122691227012271122721227312274122751227612277122781227912280122811228212283122841228512286122871228812289122901229112292122931229412295122961229712298122991230012301123021230312304123051230612307123081230912310123111231212313123141231512316123171231812319123201232112322123231232412325123261232712328123291233012331123321233312334123351233612337123381233912340123411234212343123441234512346123471234812349123501235112352123531235412355123561235712358123591236012361123621236312364123651236612367123681236912370123711237212373123741237512376123771237812379123801238112382123831238412385123861238712388123891239012391123921239312394123951239612397123981239912400124011240212403124041240512406124071240812409124101241112412124131241412415124161241712418124191242012421124221242312424124251242612427124281242912430124311243212433124341243512436124371243812439124401244112442124431244412445124461244712448124491245012451124521245312454124551245612457124581245912460124611246212463124641246512466124671246812469124701247112472124731247412475124761247712478124791248012481124821248312484124851248612487124881248912490124911249212493124941249512496124971249812499125001250112502125031250412505125061250712508125091251012511125121251312514125151251612517125181251912520125211252212523125241252512526125271252812529125301253112532125331253412535125361253712538125391254012541125421254312544125451254612547125481254912550125511255212553125541255512556125571255812559125601256112562125631256412565125661256712568125691257012571125721257312574125751257612577125781257912580125811258212583125841258512586125871258812589125901259112592125931259412595125961259712598125991260012601126021260312604126051260612607126081260912610126111261212613126141261512616126171261812619126201262112622126231262412625126261262712628126291263012631126321263312634126351263612637126381263912640126411264212643126441264512646126471264812649126501265112652126531265412655126561265712658126591266012661126621266312664126651266612667126681266912670126711267212673126741267512676126771267812679126801268112682126831268412685126861268712688126891269012691126921269312694126951269612697126981269912700127011270212703127041270512706127071270812709127101271112712127131271412715127161271712718127191272012721127221272312724127251272612727127281272912730127311273212733127341273512736127371273812739127401274112742127431274412745127461274712748127491275012751127521275312754127551275612757127581275912760127611276212763127641276512766127671276812769127701277112772127731277412775127761277712778127791278012781127821278312784127851278612787127881278912790127911279212793127941279512796127971279812799128001280112802128031280412805128061280712808128091281012811128121281312814128151281612817128181281912820128211282212823128241282512826128271282812829128301283112832128331283412835128361283712838128391284012841128421284312844128451284612847128481284912850128511285212853128541285512856128571285812859128601286112862128631286412865128661286712868128691287012871128721287312874128751287612877128781287912880128811288212883128841288512886128871288812889128901289112892128931289412895128961289712898128991290012901129021290312904129051290612907129081290912910129111291212913129141291512916129171291812919129201292112922129231292412925129261292712928129291293012931129321293312934129351293612937129381293912940129411294212943129441294512946129471294812949129501295112952129531295412955129561295712958129591296012961129621296312964129651296612967129681296912970129711297212973129741297512976129771297812979129801298112982129831298412985129861298712988129891299012991129921299312994129951299612997129981299913000130011300213003130041300513006130071300813009130101301113012130131301413015130161301713018130191302013021130221302313024130251302613027130281302913030130311303213033130341303513036130371303813039130401304113042130431304413045130461304713048130491305013051130521305313054130551305613057130581305913060130611306213063130641306513066130671306813069130701307113072130731307413075130761307713078130791308013081130821308313084130851308613087130881308913090130911309213093130941309513096130971309813099131001310113102131031310413105131061310713108131091311013111131121311313114131151311613117131181311913120131211312213123131241312513126131271312813129131301313113132131331313413135131361313713138131391314013141131421314313144131451314613147131481314913150131511315213153131541315513156131571315813159131601316113162131631316413165131661316713168131691317013171131721317313174131751317613177131781317913180131811318213183131841318513186131871318813189131901319113192131931319413195131961319713198131991320013201132021320313204132051320613207132081320913210132111321213213132141321513216132171321813219132201322113222132231322413225132261322713228132291323013231132321323313234132351323613237132381323913240132411324213243132441324513246132471324813249132501325113252132531325413255132561325713258132591326013261132621326313264132651326613267132681326913270132711327213273132741327513276132771327813279132801328113282132831328413285132861328713288132891329013291132921329313294132951329613297132981329913300133011330213303133041330513306133071330813309133101331113312133131331413315133161331713318133191332013321133221332313324133251332613327133281332913330133311333213333133341333513336133371333813339133401334113342133431334413345133461334713348133491335013351133521335313354133551335613357133581335913360133611336213363133641336513366133671336813369133701337113372133731337413375133761337713378133791338013381133821338313384133851338613387133881338913390133911339213393133941339513396133971339813399134001340113402134031340413405134061340713408134091341013411134121341313414134151341613417134181341913420134211342213423134241342513426134271342813429134301343113432134331343413435134361343713438134391344013441134421344313444134451344613447134481344913450134511345213453134541345513456134571345813459134601346113462134631346413465134661346713468134691347013471134721347313474134751347613477134781347913480134811348213483134841348513486134871348813489134901349113492134931349413495134961349713498134991350013501135021350313504135051350613507135081350913510135111351213513135141351513516135171351813519135201352113522135231352413525135261352713528135291353013531135321353313534135351353613537135381353913540135411354213543135441354513546135471354813549135501355113552135531355413555135561355713558135591356013561135621356313564135651356613567135681356913570135711357213573135741357513576135771357813579135801358113582135831358413585135861358713588135891359013591135921359313594135951359613597135981359913600136011360213603136041360513606136071360813609136101361113612136131361413615136161361713618136191362013621136221362313624136251362613627136281362913630136311363213633136341363513636136371363813639136401364113642136431364413645136461364713648136491365013651136521365313654136551365613657136581365913660136611366213663136641366513666136671366813669136701367113672136731367413675136761367713678136791368013681136821368313684136851368613687136881368913690136911369213693136941369513696136971369813699137001370113702137031370413705137061370713708137091371013711137121371313714137151371613717137181371913720137211372213723137241372513726137271372813729137301373113732137331373413735137361373713738137391374013741137421374313744137451374613747137481374913750137511375213753137541375513756137571375813759137601376113762137631376413765137661376713768137691377013771137721377313774137751377613777137781377913780137811378213783137841378513786137871378813789137901379113792137931379413795137961379713798137991380013801138021380313804138051380613807138081380913810138111381213813138141381513816138171381813819138201382113822138231382413825138261382713828138291383013831138321383313834138351383613837138381383913840138411384213843138441384513846138471384813849138501385113852138531385413855138561385713858138591386013861138621386313864138651386613867138681386913870138711387213873138741387513876138771387813879138801388113882138831388413885138861388713888138891389013891138921389313894138951389613897138981389913900139011390213903139041390513906139071390813909139101391113912139131391413915139161391713918139191392013921139221392313924139251392613927139281392913930139311393213933139341393513936139371393813939139401394113942139431394413945139461394713948139491395013951139521395313954139551395613957139581395913960139611396213963139641396513966139671396813969139701397113972139731397413975139761397713978139791398013981139821398313984139851398613987139881398913990139911399213993139941399513996139971399813999140001400114002140031400414005140061400714008140091401014011140121401314014140151401614017140181401914020140211402214023140241402514026140271402814029140301403114032140331403414035140361403714038140391404014041140421404314044140451404614047140481404914050140511405214053140541405514056140571405814059140601406114062140631406414065140661406714068140691407014071140721407314074140751407614077140781407914080140811408214083140841408514086140871408814089140901409114092140931409414095140961409714098140991410014101141021410314104141051410614107141081410914110141111411214113141141411514116141171411814119141201412114122141231412414125141261412714128141291413014131141321413314134141351413614137141381413914140141411414214143141441414514146141471414814149141501415114152141531415414155141561415714158141591416014161141621416314164141651416614167141681416914170141711417214173141741417514176141771417814179141801418114182141831418414185141861418714188141891419014191141921419314194141951419614197141981419914200142011420214203142041420514206142071420814209142101421114212142131421414215142161421714218142191422014221142221422314224142251422614227142281422914230142311423214233142341423514236142371423814239142401424114242142431424414245142461424714248142491425014251142521425314254142551425614257142581425914260142611426214263142641426514266142671426814269142701427114272142731427414275142761427714278142791428014281142821428314284142851428614287142881428914290142911429214293142941429514296142971429814299143001430114302143031430414305143061430714308143091431014311143121431314314143151431614317143181431914320143211432214323143241432514326143271432814329143301433114332143331433414335143361433714338143391434014341143421434314344143451434614347143481434914350143511435214353143541435514356143571435814359143601436114362143631436414365143661436714368143691437014371143721437314374143751437614377143781437914380143811438214383143841438514386143871438814389143901439114392143931439414395143961439714398143991440014401144021440314404144051440614407144081440914410144111441214413144141441514416144171441814419144201442114422144231442414425144261442714428144291443014431144321443314434144351443614437144381443914440144411444214443144441444514446144471444814449144501445114452144531445414455144561445714458144591446014461144621446314464144651446614467144681446914470144711447214473144741447514476144771447814479144801448114482144831448414485144861448714488144891449014491144921449314494144951449614497144981449914500145011450214503145041450514506145071450814509145101451114512145131451414515145161451714518145191452014521145221452314524145251452614527145281452914530145311453214533145341453514536145371453814539145401454114542145431454414545145461454714548145491455014551145521455314554145551455614557145581455914560145611456214563145641456514566145671456814569145701457114572145731457414575145761457714578145791458014581145821458314584145851458614587145881458914590145911459214593145941459514596145971459814599146001460114602146031460414605146061460714608146091461014611146121461314614146151461614617146181461914620146211462214623146241462514626146271462814629146301463114632146331463414635146361463714638146391464014641146421464314644146451464614647146481464914650146511465214653146541465514656146571465814659146601466114662146631466414665146661466714668146691467014671146721467314674146751467614677146781467914680146811468214683146841468514686146871468814689146901469114692146931469414695146961469714698146991470014701147021470314704147051470614707147081470914710147111471214713147141471514716147171471814719147201472114722147231472414725147261472714728147291473014731147321473314734147351473614737147381473914740147411474214743147441474514746147471474814749147501475114752147531475414755147561475714758147591476014761147621476314764147651476614767147681476914770147711477214773147741477514776147771477814779147801478114782147831478414785147861478714788147891479014791147921479314794147951479614797147981479914800148011480214803148041480514806148071480814809148101481114812148131481414815148161481714818148191482014821148221482314824148251482614827148281482914830148311483214833148341483514836148371483814839148401484114842148431484414845148461484714848148491485014851148521485314854148551485614857148581485914860148611486214863148641486514866148671486814869148701487114872148731487414875148761487714878148791488014881148821488314884148851488614887148881488914890148911489214893148941489514896148971489814899149001490114902149031490414905149061490714908149091491014911149121491314914149151491614917149181491914920149211492214923149241492514926149271492814929149301493114932149331493414935149361493714938149391494014941149421494314944149451494614947149481494914950149511495214953149541495514956149571495814959149601496114962149631496414965149661496714968149691497014971149721497314974149751497614977149781497914980149811498214983149841498514986149871498814989149901499114992149931499414995149961499714998149991500015001150021500315004150051500615007150081500915010150111501215013150141501515016150171501815019150201502115022150231502415025150261502715028150291503015031150321503315034150351503615037150381503915040150411504215043150441504515046150471504815049150501505115052150531505415055150561505715058150591506015061150621506315064150651506615067150681506915070150711507215073150741507515076150771507815079150801508115082150831508415085150861508715088150891509015091150921509315094150951509615097150981509915100151011510215103151041510515106151071510815109151101511115112151131511415115151161511715118151191512015121151221512315124151251512615127151281512915130151311513215133151341513515136151371513815139151401514115142151431514415145151461514715148151491515015151151521515315154151551515615157151581515915160151611516215163151641516515166151671516815169151701517115172151731517415175151761517715178151791518015181151821518315184151851518615187151881518915190151911519215193151941519515196151971519815199152001520115202152031520415205152061520715208152091521015211152121521315214152151521615217152181521915220152211522215223152241522515226152271522815229152301523115232152331523415235152361523715238152391524015241152421524315244152451524615247152481524915250152511525215253152541525515256152571525815259152601526115262152631526415265152661526715268152691527015271152721527315274152751527615277152781527915280152811528215283152841528515286152871528815289152901529115292152931529415295152961529715298152991530015301153021530315304153051530615307153081530915310153111531215313153141531515316153171531815319153201532115322153231532415325153261532715328153291533015331153321533315334153351533615337153381533915340153411534215343153441534515346153471534815349153501535115352153531535415355153561535715358153591536015361153621536315364153651536615367153681536915370153711537215373153741537515376153771537815379153801538115382153831538415385153861538715388153891539015391153921539315394153951539615397153981539915400154011540215403154041540515406154071540815409154101541115412154131541415415154161541715418154191542015421154221542315424154251542615427154281542915430154311543215433154341543515436154371543815439154401544115442154431544415445154461544715448154491545015451154521545315454154551545615457154581545915460154611546215463154641546515466154671546815469154701547115472154731547415475154761547715478154791548015481154821548315484154851548615487154881548915490154911549215493154941549515496154971549815499155001550115502155031550415505155061550715508155091551015511155121551315514155151551615517155181551915520155211552215523155241552515526155271552815529155301553115532155331553415535155361553715538155391554015541155421554315544155451554615547155481554915550155511555215553155541555515556155571555815559155601556115562155631556415565155661556715568155691557015571155721557315574155751557615577155781557915580155811558215583155841558515586155871558815589155901559115592155931559415595155961559715598155991560015601156021560315604156051560615607156081560915610156111561215613156141561515616156171561815619156201562115622156231562415625156261562715628156291563015631156321563315634156351563615637156381563915640156411564215643156441564515646156471564815649156501565115652156531565415655156561565715658156591566015661156621566315664156651566615667156681566915670156711567215673156741567515676156771567815679156801568115682156831568415685156861568715688156891569015691156921569315694156951569615697156981569915700157011570215703157041570515706157071570815709157101571115712157131571415715157161571715718157191572015721157221572315724157251572615727157281572915730157311573215733157341573515736157371573815739157401574115742157431574415745157461574715748157491575015751157521575315754157551575615757157581575915760157611576215763157641576515766157671576815769157701577115772157731577415775157761577715778157791578015781157821578315784157851578615787157881578915790157911579215793157941579515796157971579815799158001580115802158031580415805158061580715808158091581015811158121581315814158151581615817158181581915820158211582215823158241582515826158271582815829158301583115832158331583415835158361583715838158391584015841158421584315844158451584615847158481584915850158511585215853158541585515856158571585815859158601586115862158631586415865158661586715868158691587015871158721587315874158751587615877158781587915880158811588215883158841588515886158871588815889158901589115892158931589415895158961589715898158991590015901159021590315904159051590615907159081590915910159111591215913159141591515916159171591815919159201592115922159231592415925159261592715928159291593015931159321593315934159351593615937159381593915940159411594215943159441594515946159471594815949159501595115952159531595415955159561595715958159591596015961159621596315964159651596615967159681596915970159711597215973159741597515976159771597815979159801598115982159831598415985159861598715988159891599015991159921599315994159951599615997159981599916000160011600216003160041600516006160071600816009160101601116012160131601416015160161601716018160191602016021160221602316024160251602616027160281602916030160311603216033160341603516036160371603816039160401604116042160431604416045160461604716048160491605016051160521605316054160551605616057160581605916060160611606216063160641606516066160671606816069160701607116072160731607416075160761607716078160791608016081160821608316084160851608616087160881608916090160911609216093160941609516096160971609816099161001610116102161031610416105161061610716108161091611016111161121611316114161151611616117161181611916120161211612216123161241612516126161271612816129161301613116132161331613416135161361613716138161391614016141161421614316144161451614616147161481614916150161511615216153161541615516156161571615816159161601616116162161631616416165161661616716168161691617016171161721617316174161751617616177161781617916180161811618216183161841618516186161871618816189161901619116192161931619416195161961619716198161991620016201162021620316204162051620616207162081620916210162111621216213162141621516216162171621816219162201622116222162231622416225162261622716228162291623016231162321623316234162351623616237162381623916240162411624216243162441624516246162471624816249162501625116252162531625416255162561625716258162591626016261162621626316264162651626616267162681626916270162711627216273162741627516276162771627816279162801628116282162831628416285162861628716288162891629016291162921629316294162951629616297162981629916300163011630216303163041630516306163071630816309163101631116312163131631416315163161631716318163191632016321163221632316324163251632616327163281632916330163311633216333163341633516336163371633816339163401634116342163431634416345163461634716348163491635016351163521635316354163551635616357163581635916360163611636216363163641636516366163671636816369163701637116372163731637416375163761637716378163791638016381163821638316384163851638616387163881638916390163911639216393163941639516396163971639816399164001640116402164031640416405164061640716408164091641016411164121641316414164151641616417164181641916420164211642216423164241642516426164271642816429164301643116432164331643416435164361643716438164391644016441164421644316444164451644616447164481644916450164511645216453164541645516456164571645816459164601646116462164631646416465164661646716468164691647016471164721647316474164751647616477164781647916480164811648216483164841648516486164871648816489164901649116492164931649416495164961649716498164991650016501165021650316504165051650616507165081650916510165111651216513165141651516516165171651816519165201652116522165231652416525165261652716528165291653016531165321653316534165351653616537165381653916540165411654216543165441654516546165471654816549165501655116552165531655416555165561655716558165591656016561165621656316564165651656616567165681656916570165711657216573165741657516576165771657816579165801658116582165831658416585165861658716588165891659016591165921659316594165951659616597165981659916600166011660216603166041660516606166071660816609166101661116612166131661416615166161661716618166191662016621166221662316624166251662616627166281662916630166311663216633166341663516636166371663816639166401664116642166431664416645166461664716648166491665016651166521665316654166551665616657166581665916660166611666216663166641666516666166671666816669166701667116672166731667416675166761667716678166791668016681166821668316684166851668616687166881668916690166911669216693166941669516696166971669816699167001670116702167031670416705167061670716708167091671016711167121671316714167151671616717167181671916720167211672216723167241672516726167271672816729167301673116732167331673416735167361673716738167391674016741167421674316744167451674616747167481674916750167511675216753167541675516756167571675816759167601676116762167631676416765167661676716768167691677016771167721677316774167751677616777167781677916780167811678216783167841678516786167871678816789167901679116792167931679416795167961679716798167991680016801168021680316804168051680616807168081680916810168111681216813168141681516816168171681816819168201682116822168231682416825168261682716828168291683016831168321683316834168351683616837168381683916840168411684216843168441684516846168471684816849168501685116852168531685416855168561685716858168591686016861168621686316864168651686616867168681686916870168711687216873168741687516876168771687816879168801688116882168831688416885168861688716888168891689016891168921689316894168951689616897168981689916900169011690216903169041690516906169071690816909169101691116912169131691416915169161691716918169191692016921169221692316924169251692616927169281692916930169311693216933169341693516936169371693816939169401694116942169431694416945169461694716948169491695016951169521695316954169551695616957169581695916960169611696216963169641696516966169671696816969169701697116972169731697416975169761697716978169791698016981169821698316984169851698616987169881698916990169911699216993169941699516996169971699816999170001700117002170031700417005170061700717008170091701017011170121701317014170151701617017170181701917020170211702217023170241702517026170271702817029170301703117032170331703417035170361703717038170391704017041170421704317044170451704617047170481704917050170511705217053170541705517056170571705817059170601706117062170631706417065170661706717068170691707017071170721707317074170751707617077170781707917080170811708217083170841708517086170871708817089170901709117092170931709417095170961709717098170991710017101171021710317104171051710617107171081710917110171111711217113171141711517116171171711817119171201712117122171231712417125171261712717128171291713017131171321713317134171351713617137171381713917140171411714217143171441714517146171471714817149171501715117152171531715417155171561715717158171591716017161171621716317164171651716617167171681716917170171711717217173171741717517176171771717817179171801718117182171831718417185171861718717188171891719017191171921719317194171951719617197171981719917200172011720217203172041720517206172071720817209172101721117212172131721417215172161721717218172191722017221172221722317224172251722617227172281722917230172311723217233172341723517236172371723817239172401724117242172431724417245172461724717248172491725017251172521725317254172551725617257172581725917260172611726217263172641726517266172671726817269172701727117272172731727417275172761727717278172791728017281172821728317284172851728617287172881728917290172911729217293172941729517296172971729817299173001730117302173031730417305173061730717308173091731017311173121731317314173151731617317173181731917320173211732217323173241732517326173271732817329173301733117332173331733417335173361733717338173391734017341173421734317344173451734617347173481734917350173511735217353173541735517356173571735817359173601736117362173631736417365173661736717368173691737017371173721737317374173751737617377173781737917380173811738217383173841738517386173871738817389173901739117392173931739417395173961739717398173991740017401174021740317404174051740617407174081740917410174111741217413174141741517416174171741817419174201742117422174231742417425174261742717428174291743017431174321743317434174351743617437174381743917440174411744217443174441744517446174471744817449174501745117452174531745417455174561745717458174591746017461174621746317464174651746617467174681746917470174711747217473174741747517476174771747817479174801748117482174831748417485174861748717488174891749017491174921749317494174951749617497174981749917500175011750217503175041750517506175071750817509175101751117512175131751417515175161751717518175191752017521175221752317524175251752617527175281752917530175311753217533175341753517536175371753817539175401754117542175431754417545175461754717548175491755017551175521755317554175551755617557175581755917560175611756217563175641756517566175671756817569175701757117572175731757417575175761757717578175791758017581175821758317584175851758617587175881758917590175911759217593175941759517596175971759817599176001760117602176031760417605176061760717608176091761017611176121761317614176151761617617176181761917620176211762217623176241762517626176271762817629176301763117632176331763417635176361763717638176391764017641176421764317644176451764617647176481764917650176511765217653176541765517656176571765817659176601766117662176631766417665176661766717668176691767017671176721767317674176751767617677176781767917680176811768217683176841768517686176871768817689176901769117692176931769417695176961769717698176991770017701177021770317704177051770617707177081770917710177111771217713177141771517716177171771817719177201772117722177231772417725177261772717728177291773017731177321773317734177351773617737177381773917740177411774217743177441774517746177471774817749177501775117752177531775417755177561775717758177591776017761177621776317764177651776617767177681776917770177711777217773177741777517776177771777817779177801778117782177831778417785177861778717788177891779017791177921779317794177951779617797177981779917800178011780217803178041780517806178071780817809178101781117812178131781417815178161781717818178191782017821178221782317824178251782617827178281782917830178311783217833178341783517836178371783817839178401784117842178431784417845178461784717848178491785017851178521785317854178551785617857178581785917860178611786217863178641786517866178671786817869178701787117872178731787417875178761787717878178791788017881178821788317884178851788617887178881788917890178911789217893178941789517896178971789817899179001790117902179031790417905179061790717908179091791017911179121791317914179151791617917179181791917920179211792217923179241792517926179271792817929179301793117932179331793417935179361793717938179391794017941179421794317944179451794617947179481794917950179511795217953179541795517956179571795817959179601796117962179631796417965179661796717968179691797017971179721797317974179751797617977179781797917980179811798217983179841798517986179871798817989179901799117992179931799417995179961799717998179991800018001180021800318004180051800618007180081800918010180111801218013180141801518016180171801818019180201802118022180231802418025180261802718028180291803018031180321803318034180351803618037180381803918040180411804218043180441804518046180471804818049180501805118052180531805418055180561805718058180591806018061180621806318064180651806618067180681806918070180711807218073180741807518076180771807818079180801808118082180831808418085180861808718088180891809018091180921809318094180951809618097180981809918100181011810218103181041810518106181071810818109181101811118112181131811418115181161811718118181191812018121181221812318124181251812618127181281812918130181311813218133181341813518136181371813818139181401814118142181431814418145181461814718148181491815018151181521815318154181551815618157181581815918160181611816218163181641816518166181671816818169181701817118172181731817418175181761817718178181791818018181181821818318184181851818618187181881818918190181911819218193181941819518196181971819818199182001820118202182031820418205182061820718208182091821018211182121821318214182151821618217182181821918220182211822218223182241822518226182271822818229182301823118232182331823418235182361823718238182391824018241182421824318244182451824618247182481824918250182511825218253182541825518256182571825818259182601826118262182631826418265182661826718268182691827018271182721827318274182751827618277182781827918280182811828218283182841828518286182871828818289182901829118292182931829418295182961829718298182991830018301183021830318304183051830618307183081830918310183111831218313183141831518316183171831818319183201832118322183231832418325183261832718328183291833018331183321833318334183351833618337183381833918340183411834218343183441834518346183471834818349183501835118352183531835418355183561835718358183591836018361183621836318364183651836618367183681836918370183711837218373183741837518376183771837818379183801838118382183831838418385183861838718388183891839018391183921839318394183951839618397183981839918400184011840218403184041840518406184071840818409184101841118412184131841418415184161841718418184191842018421184221842318424184251842618427184281842918430184311843218433184341843518436184371843818439184401844118442184431844418445184461844718448184491845018451184521845318454184551845618457184581845918460184611846218463184641846518466184671846818469184701847118472184731847418475184761847718478184791848018481184821848318484184851848618487184881848918490184911849218493184941849518496184971849818499185001850118502185031850418505185061850718508185091851018511185121851318514185151851618517185181851918520185211852218523185241852518526185271852818529185301853118532185331853418535185361853718538185391854018541185421854318544185451854618547185481854918550185511855218553185541855518556185571855818559185601856118562185631856418565185661856718568185691857018571185721857318574185751857618577185781857918580185811858218583185841858518586185871858818589185901859118592185931859418595185961859718598185991860018601186021860318604186051860618607186081860918610186111861218613186141861518616186171861818619186201862118622186231862418625186261862718628186291863018631186321863318634186351863618637186381863918640186411864218643186441864518646186471864818649186501865118652186531865418655186561865718658186591866018661186621866318664186651866618667186681866918670186711867218673186741867518676186771867818679186801868118682186831868418685186861868718688186891869018691186921869318694186951869618697186981869918700187011870218703187041870518706187071870818709187101871118712187131871418715187161871718718187191872018721187221872318724187251872618727187281872918730187311873218733187341873518736187371873818739187401874118742187431874418745187461874718748187491875018751187521875318754187551875618757187581875918760187611876218763187641876518766187671876818769187701877118772187731877418775187761877718778187791878018781187821878318784187851878618787187881878918790187911879218793187941879518796187971879818799188001880118802188031880418805188061880718808188091881018811188121881318814188151881618817188181881918820188211882218823188241882518826188271882818829188301883118832188331883418835188361883718838188391884018841188421884318844188451884618847188481884918850188511885218853188541885518856188571885818859188601886118862188631886418865188661886718868188691887018871188721887318874188751887618877188781887918880188811888218883188841888518886188871888818889188901889118892188931889418895188961889718898188991890018901189021890318904189051890618907189081890918910189111891218913189141891518916189171891818919189201892118922189231892418925189261892718928189291893018931189321893318934189351893618937189381893918940189411894218943189441894518946189471894818949189501895118952189531895418955189561895718958189591896018961189621896318964189651896618967189681896918970189711897218973189741897518976189771897818979189801898118982189831898418985189861898718988189891899018991189921899318994189951899618997189981899919000190011900219003190041900519006190071900819009190101901119012190131901419015190161901719018190191902019021190221902319024190251902619027190281902919030190311903219033190341903519036190371903819039190401904119042190431904419045190461904719048190491905019051190521905319054190551905619057190581905919060190611906219063190641906519066190671906819069190701907119072190731907419075190761907719078190791908019081190821908319084190851908619087190881908919090190911909219093190941909519096190971909819099191001910119102191031910419105191061910719108191091911019111191121911319114191151911619117191181911919120191211912219123191241912519126191271912819129191301913119132191331913419135191361913719138191391914019141191421914319144191451914619147191481914919150191511915219153191541915519156191571915819159191601916119162191631916419165191661916719168191691917019171191721917319174191751917619177191781917919180191811918219183191841918519186191871918819189191901919119192191931919419195191961919719198191991920019201192021920319204192051920619207192081920919210192111921219213192141921519216192171921819219192201922119222192231922419225192261922719228192291923019231192321923319234192351923619237192381923919240192411924219243192441924519246192471924819249192501925119252192531925419255192561925719258192591926019261192621926319264192651926619267192681926919270192711927219273192741927519276192771927819279192801928119282192831928419285192861928719288192891929019291192921929319294192951929619297192981929919300193011930219303193041930519306193071930819309193101931119312193131931419315193161931719318193191932019321193221932319324193251932619327193281932919330193311933219333193341933519336193371933819339193401934119342193431934419345193461934719348193491935019351193521935319354193551935619357193581935919360193611936219363193641936519366193671936819369193701937119372193731937419375193761937719378193791938019381193821938319384193851938619387193881938919390193911939219393193941939519396193971939819399194001940119402194031940419405194061940719408194091941019411194121941319414194151941619417194181941919420194211942219423194241942519426194271942819429194301943119432194331943419435194361943719438194391944019441194421944319444194451944619447194481944919450194511945219453194541945519456194571945819459194601946119462194631946419465194661946719468194691947019471194721947319474194751947619477194781947919480194811948219483194841948519486194871948819489194901949119492194931949419495194961949719498194991950019501195021950319504195051950619507195081950919510195111951219513195141951519516195171951819519195201952119522195231952419525195261952719528195291953019531195321953319534195351953619537195381953919540195411954219543195441954519546195471954819549195501955119552195531955419555195561955719558195591956019561195621956319564195651956619567195681956919570195711957219573195741957519576195771957819579195801958119582195831958419585195861958719588195891959019591195921959319594195951959619597195981959919600196011960219603196041960519606196071960819609196101961119612196131961419615196161961719618196191962019621196221962319624196251962619627196281962919630196311963219633196341963519636196371963819639196401964119642196431964419645196461964719648196491965019651196521965319654196551965619657196581965919660196611966219663196641966519666196671966819669196701967119672196731967419675196761967719678196791968019681196821968319684196851968619687196881968919690196911969219693196941969519696196971969819699197001970119702197031970419705197061970719708197091971019711197121971319714197151971619717197181971919720197211972219723197241972519726197271972819729197301973119732197331973419735197361973719738197391974019741197421974319744197451974619747197481974919750197511975219753197541975519756197571975819759197601976119762197631976419765197661976719768197691977019771197721977319774197751977619777197781977919780197811978219783197841978519786197871978819789197901979119792197931979419795197961979719798197991980019801198021980319804198051980619807198081980919810198111981219813198141981519816198171981819819198201982119822198231982419825198261982719828198291983019831198321983319834198351983619837198381983919840198411984219843198441984519846198471984819849198501985119852198531985419855198561985719858198591986019861198621986319864198651986619867198681986919870198711987219873198741987519876198771987819879198801988119882198831988419885198861988719888198891989019891198921989319894198951989619897198981989919900199011990219903199041990519906199071990819909199101991119912199131991419915199161991719918199191992019921199221992319924199251992619927199281992919930199311993219933199341993519936199371993819939199401994119942199431994419945199461994719948199491995019951199521995319954199551995619957199581995919960199611996219963199641996519966199671996819969199701997119972199731997419975199761997719978199791998019981199821998319984199851998619987199881998919990199911999219993199941999519996199971999819999200002000120002200032000420005200062000720008200092001020011200122001320014200152001620017200182001920020200212002220023200242002520026200272002820029200302003120032200332003420035200362003720038200392004020041200422004320044200452004620047200482004920050200512005220053200542005520056200572005820059200602006120062200632006420065200662006720068200692007020071200722007320074200752007620077200782007920080200812008220083200842008520086200872008820089200902009120092200932009420095200962009720098200992010020101201022010320104201052010620107201082010920110201112011220113201142011520116201172011820119201202012120122201232012420125201262012720128201292013020131201322013320134201352013620137201382013920140201412014220143201442014520146201472014820149201502015120152201532015420155201562015720158201592016020161201622016320164201652016620167201682016920170201712017220173201742017520176201772017820179201802018120182201832018420185201862018720188201892019020191201922019320194201952019620197201982019920200202012020220203202042020520206202072020820209202102021120212202132021420215202162021720218202192022020221202222022320224202252022620227202282022920230202312023220233202342023520236202372023820239202402024120242202432024420245202462024720248202492025020251202522025320254202552025620257202582025920260202612026220263202642026520266202672026820269202702027120272202732027420275202762027720278202792028020281202822028320284202852028620287202882028920290202912029220293202942029520296202972029820299203002030120302203032030420305203062030720308203092031020311203122031320314203152031620317203182031920320203212032220323203242032520326203272032820329203302033120332203332033420335203362033720338203392034020341203422034320344203452034620347203482034920350203512035220353203542035520356203572035820359203602036120362203632036420365203662036720368203692037020371203722037320374203752037620377203782037920380203812038220383203842038520386203872038820389203902039120392203932039420395203962039720398203992040020401204022040320404204052040620407204082040920410204112041220413204142041520416204172041820419204202042120422204232042420425204262042720428204292043020431204322043320434204352043620437204382043920440204412044220443204442044520446204472044820449204502045120452204532045420455204562045720458204592046020461204622046320464204652046620467204682046920470204712047220473204742047520476204772047820479204802048120482204832048420485204862048720488204892049020491204922049320494204952049620497204982049920500205012050220503205042050520506205072050820509205102051120512205132051420515205162051720518205192052020521205222052320524205252052620527205282052920530205312053220533205342053520536205372053820539205402054120542205432054420545205462054720548205492055020551205522055320554205552055620557205582055920560205612056220563205642056520566205672056820569205702057120572205732057420575205762057720578205792058020581205822058320584205852058620587205882058920590205912059220593205942059520596205972059820599206002060120602206032060420605206062060720608206092061020611206122061320614206152061620617206182061920620206212062220623206242062520626206272062820629206302063120632206332063420635206362063720638206392064020641206422064320644206452064620647206482064920650206512065220653206542065520656206572065820659206602066120662206632066420665206662066720668206692067020671206722067320674206752067620677206782067920680206812068220683206842068520686206872068820689206902069120692206932069420695206962069720698206992070020701207022070320704207052070620707207082070920710207112071220713207142071520716207172071820719207202072120722207232072420725207262072720728207292073020731207322073320734207352073620737207382073920740207412074220743207442074520746207472074820749207502075120752207532075420755207562075720758207592076020761207622076320764207652076620767207682076920770207712077220773207742077520776207772077820779207802078120782207832078420785207862078720788207892079020791207922079320794207952079620797207982079920800208012080220803208042080520806208072080820809208102081120812208132081420815208162081720818208192082020821208222082320824208252082620827208282082920830208312083220833208342083520836208372083820839208402084120842208432084420845208462084720848208492085020851208522085320854208552085620857208582085920860208612086220863208642086520866208672086820869208702087120872208732087420875208762087720878208792088020881208822088320884208852088620887208882088920890208912089220893208942089520896208972089820899209002090120902209032090420905209062090720908209092091020911209122091320914209152091620917209182091920920209212092220923209242092520926209272092820929209302093120932209332093420935209362093720938209392094020941209422094320944209452094620947209482094920950209512095220953209542095520956209572095820959209602096120962209632096420965209662096720968209692097020971209722097320974209752097620977209782097920980209812098220983209842098520986209872098820989209902099120992209932099420995209962099720998209992100021001210022100321004210052100621007210082100921010210112101221013210142101521016210172101821019210202102121022210232102421025210262102721028210292103021031210322103321034210352103621037210382103921040210412104221043210442104521046210472104821049210502105121052210532105421055210562105721058210592106021061210622106321064210652106621067210682106921070210712107221073210742107521076210772107821079210802108121082210832108421085210862108721088210892109021091210922109321094210952109621097210982109921100211012110221103211042110521106211072110821109211102111121112211132111421115211162111721118211192112021121211222112321124211252112621127211282112921130211312113221133211342113521136211372113821139211402114121142211432114421145211462114721148211492115021151211522115321154211552115621157211582115921160211612116221163211642116521166211672116821169211702117121172211732117421175211762117721178211792118021181211822118321184211852118621187211882118921190211912119221193211942119521196211972119821199212002120121202212032120421205212062120721208212092121021211212122121321214212152121621217212182121921220212212122221223212242122521226212272122821229212302123121232212332123421235212362123721238212392124021241212422124321244212452124621247212482124921250212512125221253212542125521256212572125821259212602126121262212632126421265212662126721268212692127021271212722127321274212752127621277212782127921280212812128221283212842128521286212872128821289212902129121292212932129421295212962129721298212992130021301213022130321304213052130621307213082130921310213112131221313213142131521316213172131821319213202132121322213232132421325213262132721328213292133021331213322133321334213352133621337213382133921340213412134221343213442134521346213472134821349213502135121352213532135421355213562135721358213592136021361213622136321364213652136621367213682136921370213712137221373213742137521376213772137821379213802138121382213832138421385213862138721388213892139021391213922139321394213952139621397213982139921400214012140221403214042140521406214072140821409214102141121412214132141421415214162141721418214192142021421214222142321424214252142621427214282142921430214312143221433214342143521436214372143821439214402144121442214432144421445214462144721448214492145021451214522145321454214552145621457214582145921460214612146221463214642146521466214672146821469214702147121472214732147421475214762147721478214792148021481214822148321484214852148621487214882148921490214912149221493214942149521496214972149821499215002150121502215032150421505215062150721508215092151021511215122151321514215152151621517215182151921520215212152221523215242152521526215272152821529215302153121532215332153421535215362153721538215392154021541215422154321544215452154621547215482154921550215512155221553215542155521556215572155821559215602156121562215632156421565215662156721568215692157021571215722157321574215752157621577215782157921580215812158221583215842158521586215872158821589215902159121592215932159421595215962159721598215992160021601216022160321604216052160621607216082160921610216112161221613216142161521616216172161821619216202162121622216232162421625216262162721628216292163021631216322163321634216352163621637216382163921640216412164221643216442164521646216472164821649216502165121652216532165421655216562165721658216592166021661216622166321664216652166621667216682166921670216712167221673216742167521676216772167821679216802168121682216832168421685216862168721688216892169021691216922169321694216952169621697216982169921700217012170221703217042170521706217072170821709217102171121712217132171421715217162171721718217192172021721217222172321724217252172621727217282172921730217312173221733217342173521736217372173821739217402174121742217432174421745217462174721748217492175021751217522175321754217552175621757217582175921760217612176221763217642176521766217672176821769217702177121772217732177421775217762177721778217792178021781217822178321784217852178621787217882178921790217912179221793217942179521796217972179821799218002180121802218032180421805218062180721808218092181021811218122181321814218152181621817218182181921820218212182221823218242182521826218272182821829218302183121832218332183421835218362183721838218392184021841218422184321844218452184621847218482184921850218512185221853218542185521856218572185821859218602186121862218632186421865218662186721868218692187021871218722187321874218752187621877218782187921880218812188221883218842188521886218872188821889218902189121892218932189421895218962189721898218992190021901219022190321904219052190621907219082190921910219112191221913219142191521916219172191821919219202192121922219232192421925219262192721928219292193021931219322193321934219352193621937219382193921940219412194221943219442194521946219472194821949219502195121952219532195421955219562195721958219592196021961219622196321964219652196621967219682196921970219712197221973219742197521976219772197821979219802198121982219832198421985219862198721988219892199021991219922199321994219952199621997219982199922000220012200222003220042200522006220072200822009220102201122012220132201422015220162201722018220192202022021220222202322024220252202622027220282202922030220312203222033220342203522036220372203822039220402204122042220432204422045220462204722048220492205022051220522205322054220552205622057220582205922060220612206222063220642206522066220672206822069220702207122072220732207422075220762207722078220792208022081220822208322084220852208622087220882208922090220912209222093220942209522096220972209822099221002210122102221032210422105221062210722108221092211022111221122211322114221152211622117221182211922120221212212222123221242212522126221272212822129221302213122132221332213422135221362213722138221392214022141221422214322144221452214622147221482214922150221512215222153221542215522156221572215822159221602216122162221632216422165221662216722168221692217022171221722217322174221752217622177221782217922180221812218222183221842218522186221872218822189221902219122192221932219422195221962219722198221992220022201222022220322204222052220622207222082220922210222112221222213222142221522216222172221822219222202222122222222232222422225222262222722228222292223022231222322223322234222352223622237222382223922240222412224222243222442224522246222472224822249222502225122252222532225422255222562225722258222592226022261222622226322264222652226622267222682226922270222712227222273222742227522276222772227822279222802228122282222832228422285222862228722288222892229022291222922229322294222952229622297222982229922300223012230222303223042230522306223072230822309223102231122312223132231422315223162231722318223192232022321223222232322324223252232622327223282232922330223312233222333223342233522336223372233822339223402234122342223432234422345223462234722348223492235022351223522235322354223552235622357223582235922360223612236222363223642236522366223672236822369223702237122372223732237422375223762237722378223792238022381223822238322384223852238622387223882238922390223912239222393223942239522396223972239822399224002240122402224032240422405224062240722408224092241022411224122241322414224152241622417224182241922420224212242222423224242242522426224272242822429224302243122432224332243422435224362243722438224392244022441224422244322444224452244622447224482244922450224512245222453224542245522456224572245822459224602246122462224632246422465224662246722468224692247022471224722247322474224752247622477224782247922480224812248222483224842248522486224872248822489224902249122492224932249422495224962249722498224992250022501225022250322504225052250622507225082250922510225112251222513225142251522516225172251822519225202252122522225232252422525225262252722528225292253022531225322253322534225352253622537225382253922540225412254222543225442254522546225472254822549225502255122552225532255422555225562255722558225592256022561225622256322564225652256622567225682256922570225712257222573225742257522576225772257822579225802258122582225832258422585225862258722588225892259022591225922259322594225952259622597225982259922600226012260222603226042260522606226072260822609226102261122612226132261422615226162261722618226192262022621226222262322624226252262622627226282262922630226312263222633226342263522636226372263822639226402264122642226432264422645226462264722648226492265022651226522265322654226552265622657226582265922660226612266222663226642266522666226672266822669226702267122672226732267422675226762267722678226792268022681226822268322684226852268622687226882268922690226912269222693226942269522696226972269822699227002270122702227032270422705227062270722708227092271022711227122271322714227152271622717227182271922720227212272222723227242272522726227272272822729227302273122732227332273422735227362273722738227392274022741227422274322744227452274622747227482274922750227512275222753227542275522756227572275822759227602276122762227632276422765227662276722768227692277022771227722277322774227752277622777227782277922780227812278222783227842278522786227872278822789227902279122792227932279422795227962279722798227992280022801228022280322804228052280622807228082280922810228112281222813228142281522816228172281822819228202282122822228232282422825228262282722828228292283022831228322283322834228352283622837228382283922840228412284222843228442284522846228472284822849228502285122852228532285422855228562285722858228592286022861228622286322864228652286622867228682286922870228712287222873228742287522876228772287822879228802288122882228832288422885228862288722888228892289022891228922289322894228952289622897228982289922900229012290222903229042290522906229072290822909229102291122912229132291422915229162291722918229192292022921229222292322924229252292622927229282292922930229312293222933229342293522936229372293822939229402294122942229432294422945229462294722948229492295022951229522295322954229552295622957229582295922960229612296222963229642296522966229672296822969229702297122972229732297422975229762297722978229792298022981229822298322984229852298622987229882298922990229912299222993229942299522996229972299822999230002300123002230032300423005230062300723008230092301023011230122301323014230152301623017230182301923020230212302223023230242302523026230272302823029230302303123032230332303423035230362303723038230392304023041230422304323044230452304623047230482304923050230512305223053230542305523056230572305823059230602306123062230632306423065230662306723068230692307023071230722307323074230752307623077230782307923080230812308223083230842308523086230872308823089230902309123092230932309423095230962309723098230992310023101231022310323104231052310623107231082310923110231112311223113231142311523116231172311823119231202312123122231232312423125231262312723128231292313023131231322313323134231352313623137231382313923140231412314223143231442314523146231472314823149231502315123152231532315423155231562315723158231592316023161231622316323164231652316623167231682316923170231712317223173231742317523176231772317823179231802318123182231832318423185231862318723188231892319023191231922319323194231952319623197231982319923200232012320223203232042320523206232072320823209232102321123212232132321423215232162321723218232192322023221232222322323224232252322623227232282322923230232312323223233232342323523236232372323823239232402324123242232432324423245232462324723248232492325023251232522325323254232552325623257232582325923260232612326223263232642326523266232672326823269232702327123272232732327423275232762327723278232792328023281232822328323284232852328623287232882328923290232912329223293232942329523296232972329823299233002330123302233032330423305233062330723308233092331023311233122331323314233152331623317233182331923320233212332223323233242332523326233272332823329233302333123332233332333423335233362333723338233392334023341233422334323344233452334623347233482334923350233512335223353233542335523356233572335823359233602336123362233632336423365233662336723368233692337023371233722337323374233752337623377233782337923380233812338223383233842338523386233872338823389233902339123392233932339423395233962339723398233992340023401234022340323404234052340623407234082340923410234112341223413234142341523416234172341823419234202342123422234232342423425234262342723428234292343023431234322343323434234352343623437234382343923440234412344223443234442344523446234472344823449234502345123452234532345423455234562345723458234592346023461234622346323464234652346623467234682346923470234712347223473234742347523476234772347823479234802348123482234832348423485234862348723488234892349023491234922349323494234952349623497234982349923500235012350223503235042350523506235072350823509235102351123512235132351423515235162351723518235192352023521235222352323524235252352623527235282352923530235312353223533235342353523536235372353823539235402354123542235432354423545235462354723548235492355023551235522355323554235552355623557235582355923560235612356223563235642356523566235672356823569235702357123572235732357423575235762357723578235792358023581235822358323584235852358623587235882358923590235912359223593235942359523596235972359823599236002360123602236032360423605236062360723608236092361023611236122361323614236152361623617236182361923620236212362223623236242362523626236272362823629236302363123632236332363423635236362363723638236392364023641236422364323644236452364623647236482364923650236512365223653236542365523656236572365823659236602366123662236632366423665236662366723668236692367023671236722367323674236752367623677236782367923680236812368223683236842368523686236872368823689236902369123692236932369423695236962369723698236992370023701237022370323704237052370623707237082370923710237112371223713237142371523716237172371823719237202372123722237232372423725237262372723728237292373023731237322373323734237352373623737237382373923740237412374223743237442374523746237472374823749237502375123752237532375423755237562375723758237592376023761237622376323764237652376623767237682376923770237712377223773237742377523776237772377823779237802378123782237832378423785237862378723788237892379023791237922379323794237952379623797237982379923800238012380223803238042380523806238072380823809238102381123812238132381423815238162381723818238192382023821238222382323824238252382623827238282382923830238312383223833238342383523836238372383823839238402384123842238432384423845238462384723848238492385023851238522385323854238552385623857238582385923860238612386223863238642386523866238672386823869238702387123872238732387423875238762387723878238792388023881238822388323884238852388623887238882388923890238912389223893238942389523896238972389823899239002390123902239032390423905239062390723908239092391023911239122391323914239152391623917239182391923920239212392223923239242392523926239272392823929239302393123932239332393423935239362393723938239392394023941239422394323944239452394623947239482394923950239512395223953239542395523956239572395823959239602396123962239632396423965239662396723968239692397023971239722397323974239752397623977239782397923980239812398223983239842398523986239872398823989239902399123992239932399423995239962399723998239992400024001240022400324004240052400624007240082400924010240112401224013240142401524016240172401824019240202402124022240232402424025240262402724028240292403024031240322403324034240352403624037240382403924040240412404224043240442404524046240472404824049240502405124052240532405424055240562405724058240592406024061240622406324064240652406624067240682406924070240712407224073240742407524076240772407824079240802408124082240832408424085240862408724088240892409024091240922409324094240952409624097240982409924100241012410224103241042410524106241072410824109241102411124112241132411424115241162411724118241192412024121241222412324124241252412624127241282412924130241312413224133241342413524136241372413824139241402414124142241432414424145241462414724148241492415024151241522415324154241552415624157241582415924160241612416224163241642416524166241672416824169241702417124172241732417424175241762417724178241792418024181241822418324184241852418624187241882418924190241912419224193241942419524196241972419824199242002420124202242032420424205242062420724208242092421024211242122421324214242152421624217242182421924220242212422224223242242422524226242272422824229242302423124232242332423424235242362423724238242392424024241242422424324244242452424624247242482424924250242512425224253242542425524256242572425824259242602426124262242632426424265242662426724268242692427024271242722427324274242752427624277242782427924280242812428224283242842428524286242872428824289242902429124292242932429424295242962429724298242992430024301243022430324304243052430624307243082430924310243112431224313243142431524316243172431824319243202432124322243232432424325243262432724328243292433024331243322433324334243352433624337243382433924340243412434224343243442434524346243472434824349243502435124352243532435424355243562435724358243592436024361243622436324364243652436624367243682436924370243712437224373243742437524376243772437824379243802438124382243832438424385243862438724388243892439024391243922439324394243952439624397243982439924400244012440224403244042440524406244072440824409244102441124412244132441424415244162441724418244192442024421244222442324424244252442624427244282442924430244312443224433244342443524436244372443824439244402444124442244432444424445244462444724448244492445024451244522445324454244552445624457244582445924460244612446224463244642446524466244672446824469244702447124472244732447424475244762447724478244792448024481244822448324484244852448624487244882448924490244912449224493244942449524496244972449824499245002450124502245032450424505245062450724508245092451024511245122451324514245152451624517245182451924520245212452224523245242452524526245272452824529245302453124532245332453424535245362453724538245392454024541245422454324544245452454624547245482454924550245512455224553245542455524556245572455824559245602456124562245632456424565245662456724568245692457024571245722457324574245752457624577245782457924580245812458224583245842458524586245872458824589245902459124592245932459424595245962459724598245992460024601246022460324604246052460624607246082460924610246112461224613246142461524616246172461824619246202462124622246232462424625246262462724628246292463024631246322463324634246352463624637246382463924640246412464224643246442464524646246472464824649246502465124652246532465424655246562465724658246592466024661246622466324664246652466624667246682466924670246712467224673246742467524676246772467824679246802468124682246832468424685246862468724688246892469024691246922469324694246952469624697246982469924700247012470224703247042470524706247072470824709247102471124712247132471424715247162471724718247192472024721247222472324724247252472624727247282472924730247312473224733247342473524736247372473824739247402474124742247432474424745247462474724748247492475024751247522475324754247552475624757247582475924760247612476224763247642476524766247672476824769247702477124772247732477424775247762477724778247792478024781247822478324784247852478624787247882478924790247912479224793247942479524796247972479824799248002480124802248032480424805248062480724808248092481024811248122481324814248152481624817248182481924820248212482224823248242482524826248272482824829248302483124832248332483424835248362483724838248392484024841248422484324844248452484624847248482484924850248512485224853248542485524856248572485824859248602486124862248632486424865248662486724868248692487024871248722487324874248752487624877248782487924880248812488224883248842488524886248872488824889248902489124892248932489424895248962489724898248992490024901249022490324904249052490624907249082490924910249112491224913249142491524916249172491824919249202492124922249232492424925249262492724928249292493024931249322493324934249352493624937249382493924940249412494224943249442494524946249472494824949249502495124952249532495424955249562495724958249592496024961249622496324964249652496624967249682496924970249712497224973249742497524976249772497824979249802498124982249832498424985249862498724988249892499024991249922499324994249952499624997249982499925000250012500225003250042500525006250072500825009250102501125012250132501425015250162501725018250192502025021250222502325024250252502625027250282502925030250312503225033250342503525036250372503825039250402504125042250432504425045250462504725048250492505025051250522505325054250552505625057250582505925060250612506225063250642506525066250672506825069250702507125072250732507425075250762507725078250792508025081250822508325084250852508625087250882508925090250912509225093250942509525096250972509825099251002510125102251032510425105251062510725108251092511025111251122511325114251152511625117251182511925120251212512225123251242512525126251272512825129251302513125132251332513425135251362513725138251392514025141251422514325144251452514625147251482514925150251512515225153251542515525156251572515825159251602516125162251632516425165251662516725168251692517025171251722517325174251752517625177251782517925180251812518225183251842518525186251872518825189251902519125192251932519425195251962519725198251992520025201252022520325204252052520625207252082520925210252112521225213252142521525216252172521825219252202522125222252232522425225252262522725228252292523025231252322523325234252352523625237252382523925240252412524225243252442524525246252472524825249252502525125252252532525425255252562525725258252592526025261252622526325264252652526625267252682526925270252712527225273252742527525276252772527825279252802528125282252832528425285252862528725288252892529025291252922529325294252952529625297252982529925300253012530225303253042530525306253072530825309253102531125312253132531425315253162531725318253192532025321253222532325324253252532625327253282532925330253312533225333253342533525336253372533825339253402534125342253432534425345253462534725348253492535025351253522535325354253552535625357253582535925360253612536225363253642536525366253672536825369253702537125372253732537425375253762537725378253792538025381253822538325384253852538625387253882538925390253912539225393253942539525396253972539825399254002540125402254032540425405254062540725408254092541025411254122541325414254152541625417254182541925420254212542225423254242542525426254272542825429254302543125432254332543425435254362543725438254392544025441254422544325444254452544625447254482544925450254512545225453254542545525456254572545825459254602546125462254632546425465254662546725468254692547025471254722547325474254752547625477254782547925480254812548225483254842548525486254872548825489254902549125492254932549425495254962549725498254992550025501255022550325504255052550625507255082550925510255112551225513255142551525516255172551825519255202552125522255232552425525255262552725528255292553025531255322553325534255352553625537255382553925540255412554225543255442554525546255472554825549255502555125552255532555425555255562555725558255592556025561255622556325564255652556625567255682556925570255712557225573255742557525576255772557825579255802558125582255832558425585255862558725588255892559025591255922559325594255952559625597255982559925600256012560225603256042560525606256072560825609256102561125612256132561425615256162561725618256192562025621256222562325624256252562625627256282562925630256312563225633256342563525636256372563825639256402564125642256432564425645256462564725648256492565025651256522565325654256552565625657256582565925660256612566225663256642566525666256672566825669256702567125672256732567425675256762567725678256792568025681256822568325684256852568625687256882568925690256912569225693256942569525696256972569825699257002570125702257032570425705257062570725708257092571025711257122571325714257152571625717257182571925720257212572225723257242572525726257272572825729257302573125732257332573425735257362573725738257392574025741257422574325744257452574625747257482574925750257512575225753257542575525756257572575825759257602576125762257632576425765257662576725768257692577025771257722577325774257752577625777257782577925780257812578225783257842578525786257872578825789257902579125792257932579425795257962579725798257992580025801258022580325804258052580625807258082580925810258112581225813258142581525816258172581825819258202582125822258232582425825258262582725828258292583025831258322583325834258352583625837258382583925840258412584225843258442584525846258472584825849258502585125852258532585425855258562585725858258592586025861258622586325864258652586625867258682586925870258712587225873258742587525876258772587825879258802588125882258832588425885258862588725888258892589025891258922589325894258952589625897258982589925900259012590225903259042590525906259072590825909259102591125912259132591425915259162591725918259192592025921259222592325924259252592625927259282592925930259312593225933259342593525936259372593825939259402594125942259432594425945259462594725948259492595025951259522595325954259552595625957259582595925960259612596225963259642596525966259672596825969259702597125972259732597425975259762597725978259792598025981259822598325984259852598625987259882598925990259912599225993259942599525996259972599825999260002600126002260032600426005260062600726008260092601026011260122601326014260152601626017260182601926020260212602226023260242602526026260272602826029260302603126032260332603426035260362603726038260392604026041260422604326044260452604626047260482604926050260512605226053260542605526056260572605826059260602606126062260632606426065260662606726068260692607026071260722607326074260752607626077260782607926080260812608226083260842608526086260872608826089260902609126092260932609426095260962609726098260992610026101261022610326104261052610626107261082610926110261112611226113261142611526116261172611826119261202612126122261232612426125261262612726128261292613026131261322613326134261352613626137261382613926140261412614226143261442614526146261472614826149261502615126152261532615426155261562615726158261592616026161261622616326164261652616626167261682616926170261712617226173261742617526176261772617826179261802618126182261832618426185261862618726188261892619026191261922619326194261952619626197261982619926200262012620226203262042620526206262072620826209262102621126212262132621426215262162621726218262192622026221262222622326224262252622626227262282622926230262312623226233262342623526236262372623826239262402624126242262432624426245262462624726248262492625026251262522625326254262552625626257262582625926260262612626226263262642626526266262672626826269262702627126272262732627426275262762627726278262792628026281262822628326284262852628626287262882628926290262912629226293262942629526296262972629826299263002630126302263032630426305263062630726308263092631026311263122631326314263152631626317263182631926320263212632226323263242632526326263272632826329263302633126332263332633426335263362633726338263392634026341263422634326344263452634626347263482634926350263512635226353263542635526356263572635826359263602636126362263632636426365263662636726368263692637026371263722637326374263752637626377263782637926380263812638226383263842638526386263872638826389263902639126392263932639426395263962639726398263992640026401264022640326404264052640626407264082640926410264112641226413264142641526416264172641826419264202642126422264232642426425264262642726428264292643026431264322643326434264352643626437264382643926440264412644226443264442644526446264472644826449264502645126452264532645426455264562645726458264592646026461264622646326464264652646626467264682646926470264712647226473264742647526476264772647826479264802648126482264832648426485264862648726488264892649026491264922649326494264952649626497264982649926500265012650226503265042650526506265072650826509265102651126512265132651426515265162651726518265192652026521265222652326524265252652626527265282652926530265312653226533265342653526536265372653826539265402654126542265432654426545265462654726548265492655026551265522655326554265552655626557265582655926560265612656226563265642656526566265672656826569265702657126572265732657426575265762657726578265792658026581265822658326584265852658626587265882658926590265912659226593265942659526596265972659826599266002660126602266032660426605266062660726608266092661026611266122661326614266152661626617266182661926620266212662226623266242662526626266272662826629266302663126632266332663426635266362663726638266392664026641266422664326644266452664626647266482664926650266512665226653266542665526656266572665826659266602666126662266632666426665266662666726668266692667026671266722667326674266752667626677266782667926680266812668226683266842668526686266872668826689266902669126692266932669426695266962669726698266992670026701267022670326704267052670626707267082670926710267112671226713267142671526716267172671826719267202672126722267232672426725267262672726728267292673026731267322673326734267352673626737267382673926740267412674226743267442674526746267472674826749267502675126752267532675426755267562675726758267592676026761267622676326764267652676626767267682676926770267712677226773267742677526776267772677826779267802678126782267832678426785267862678726788267892679026791267922679326794267952679626797267982679926800268012680226803268042680526806268072680826809268102681126812268132681426815268162681726818268192682026821268222682326824268252682626827268282682926830268312683226833268342683526836268372683826839268402684126842268432684426845268462684726848268492685026851268522685326854268552685626857268582685926860268612686226863268642686526866268672686826869268702687126872268732687426875268762687726878268792688026881268822688326884268852688626887268882688926890268912689226893268942689526896268972689826899269002690126902269032690426905269062690726908269092691026911269122691326914269152691626917269182691926920269212692226923269242692526926269272692826929269302693126932269332693426935269362693726938269392694026941269422694326944269452694626947269482694926950269512695226953269542695526956269572695826959269602696126962269632696426965269662696726968269692697026971269722697326974269752697626977269782697926980269812698226983269842698526986269872698826989269902699126992269932699426995269962699726998269992700027001270022700327004270052700627007270082700927010270112701227013270142701527016270172701827019270202702127022270232702427025270262702727028270292703027031270322703327034270352703627037270382703927040270412704227043270442704527046270472704827049270502705127052270532705427055270562705727058270592706027061270622706327064270652706627067270682706927070270712707227073270742707527076270772707827079270802708127082270832708427085270862708727088270892709027091270922709327094270952709627097270982709927100271012710227103271042710527106271072710827109271102711127112271132711427115271162711727118271192712027121271222712327124271252712627127271282712927130271312713227133271342713527136271372713827139271402714127142271432714427145271462714727148271492715027151271522715327154271552715627157271582715927160271612716227163271642716527166271672716827169271702717127172271732717427175271762717727178271792718027181271822718327184271852718627187271882718927190271912719227193271942719527196271972719827199272002720127202272032720427205272062720727208272092721027211272122721327214272152721627217272182721927220272212722227223272242722527226272272722827229272302723127232272332723427235272362723727238272392724027241272422724327244272452724627247272482724927250272512725227253272542725527256272572725827259272602726127262272632726427265272662726727268272692727027271272722727327274272752727627277272782727927280272812728227283272842728527286272872728827289272902729127292272932729427295272962729727298272992730027301273022730327304273052730627307273082730927310273112731227313273142731527316273172731827319273202732127322273232732427325273262732727328273292733027331273322733327334273352733627337273382733927340273412734227343273442734527346273472734827349273502735127352273532735427355273562735727358273592736027361273622736327364273652736627367273682736927370273712737227373273742737527376273772737827379273802738127382273832738427385273862738727388273892739027391273922739327394273952739627397273982739927400274012740227403274042740527406274072740827409274102741127412274132741427415274162741727418274192742027421274222742327424274252742627427274282742927430274312743227433274342743527436274372743827439274402744127442274432744427445274462744727448274492745027451274522745327454274552745627457274582745927460274612746227463274642746527466274672746827469274702747127472274732747427475274762747727478274792748027481274822748327484274852748627487274882748927490274912749227493274942749527496274972749827499275002750127502275032750427505275062750727508275092751027511275122751327514275152751627517275182751927520275212752227523275242752527526275272752827529275302753127532275332753427535275362753727538275392754027541275422754327544275452754627547275482754927550275512755227553275542755527556275572755827559275602756127562275632756427565275662756727568275692757027571275722757327574275752757627577275782757927580275812758227583275842758527586275872758827589275902759127592275932759427595275962759727598275992760027601276022760327604276052760627607276082760927610276112761227613276142761527616276172761827619276202762127622276232762427625276262762727628276292763027631276322763327634276352763627637276382763927640276412764227643276442764527646276472764827649276502765127652276532765427655276562765727658276592766027661276622766327664276652766627667276682766927670276712767227673276742767527676276772767827679276802768127682276832768427685276862768727688276892769027691276922769327694276952769627697276982769927700277012770227703277042770527706277072770827709277102771127712277132771427715277162771727718277192772027721277222772327724277252772627727277282772927730277312773227733277342773527736277372773827739277402774127742277432774427745277462774727748277492775027751277522775327754277552775627757277582775927760277612776227763277642776527766277672776827769277702777127772277732777427775277762777727778277792778027781277822778327784277852778627787277882778927790277912779227793277942779527796277972779827799278002780127802278032780427805278062780727808278092781027811278122781327814278152781627817278182781927820278212782227823278242782527826278272782827829278302783127832278332783427835278362783727838278392784027841278422784327844278452784627847278482784927850278512785227853278542785527856278572785827859278602786127862278632786427865278662786727868278692787027871278722787327874278752787627877278782787927880278812788227883278842788527886278872788827889278902789127892278932789427895278962789727898278992790027901279022790327904279052790627907279082790927910279112791227913279142791527916279172791827919279202792127922279232792427925279262792727928279292793027931279322793327934279352793627937279382793927940279412794227943279442794527946279472794827949279502795127952279532795427955279562795727958279592796027961279622796327964279652796627967279682796927970279712797227973279742797527976279772797827979279802798127982279832798427985279862798727988279892799027991279922799327994279952799627997279982799928000280012800228003280042800528006280072800828009280102801128012280132801428015280162801728018280192802028021280222802328024280252802628027280282802928030280312803228033280342803528036280372803828039280402804128042280432804428045280462804728048280492805028051280522805328054280552805628057280582805928060280612806228063280642806528066280672806828069280702807128072280732807428075280762807728078280792808028081280822808328084280852808628087280882808928090280912809228093280942809528096280972809828099281002810128102281032810428105281062810728108281092811028111281122811328114281152811628117281182811928120281212812228123281242812528126281272812828129281302813128132281332813428135281362813728138281392814028141281422814328144281452814628147281482814928150281512815228153281542815528156281572815828159281602816128162281632816428165281662816728168281692817028171281722817328174281752817628177281782817928180281812818228183281842818528186281872818828189281902819128192281932819428195281962819728198281992820028201282022820328204282052820628207282082820928210282112821228213282142821528216282172821828219282202822128222282232822428225282262822728228282292823028231282322823328234282352823628237282382823928240282412824228243282442824528246282472824828249282502825128252282532825428255282562825728258282592826028261282622826328264282652826628267282682826928270282712827228273282742827528276282772827828279282802828128282282832828428285282862828728288282892829028291282922829328294282952829628297282982829928300283012830228303283042830528306283072830828309283102831128312283132831428315283162831728318283192832028321283222832328324283252832628327283282832928330283312833228333283342833528336283372833828339283402834128342283432834428345283462834728348283492835028351283522835328354283552835628357283582835928360283612836228363283642836528366283672836828369283702837128372283732837428375283762837728378283792838028381283822838328384283852838628387283882838928390283912839228393283942839528396283972839828399284002840128402284032840428405284062840728408284092841028411284122841328414284152841628417284182841928420284212842228423284242842528426284272842828429284302843128432284332843428435284362843728438284392844028441284422844328444284452844628447284482844928450284512845228453284542845528456284572845828459284602846128462284632846428465284662846728468284692847028471284722847328474284752847628477284782847928480284812848228483284842848528486284872848828489284902849128492284932849428495284962849728498284992850028501285022850328504285052850628507285082850928510285112851228513285142851528516285172851828519285202852128522285232852428525285262852728528285292853028531285322853328534285352853628537285382853928540285412854228543285442854528546285472854828549285502855128552285532855428555285562855728558285592856028561285622856328564285652856628567285682856928570285712857228573285742857528576285772857828579285802858128582285832858428585285862858728588285892859028591285922859328594285952859628597285982859928600286012860228603286042860528606286072860828609286102861128612286132861428615286162861728618286192862028621286222862328624286252862628627286282862928630286312863228633286342863528636286372863828639286402864128642286432864428645286462864728648286492865028651286522865328654286552865628657286582865928660286612866228663286642866528666286672866828669286702867128672286732867428675286762867728678286792868028681286822868328684286852868628687286882868928690286912869228693286942869528696286972869828699287002870128702287032870428705287062870728708287092871028711287122871328714287152871628717287182871928720287212872228723287242872528726287272872828729287302873128732287332873428735287362873728738287392874028741287422874328744287452874628747287482874928750287512875228753287542875528756287572875828759287602876128762287632876428765287662876728768287692877028771287722877328774287752877628777287782877928780287812878228783287842878528786287872878828789287902879128792287932879428795287962879728798287992880028801288022880328804288052880628807288082880928810288112881228813288142881528816288172881828819288202882128822288232882428825288262882728828288292883028831288322883328834288352883628837288382883928840288412884228843288442884528846288472884828849288502885128852288532885428855288562885728858288592886028861288622886328864288652886628867288682886928870288712887228873288742887528876288772887828879288802888128882288832888428885288862888728888288892889028891288922889328894288952889628897288982889928900289012890228903289042890528906289072890828909289102891128912289132891428915289162891728918289192892028921289222892328924289252892628927289282892928930289312893228933289342893528936289372893828939289402894128942289432894428945289462894728948289492895028951289522895328954289552895628957289582895928960289612896228963289642896528966289672896828969289702897128972289732897428975289762897728978289792898028981289822898328984289852898628987289882898928990289912899228993289942899528996289972899828999290002900129002290032900429005290062900729008290092901029011290122901329014290152901629017290182901929020290212902229023290242902529026290272902829029290302903129032290332903429035290362903729038290392904029041290422904329044290452904629047290482904929050290512905229053290542905529056290572905829059290602906129062290632906429065290662906729068290692907029071290722907329074290752907629077290782907929080290812908229083290842908529086290872908829089290902909129092290932909429095290962909729098290992910029101291022910329104291052910629107291082910929110291112911229113291142911529116291172911829119291202912129122291232912429125291262912729128291292913029131291322913329134291352913629137291382913929140291412914229143291442914529146291472914829149291502915129152291532915429155291562915729158291592916029161291622916329164291652916629167291682916929170291712917229173291742917529176291772917829179291802918129182291832918429185291862918729188291892919029191291922919329194291952919629197291982919929200292012920229203292042920529206292072920829209292102921129212292132921429215292162921729218292192922029221292222922329224292252922629227292282922929230292312923229233292342923529236292372923829239292402924129242292432924429245292462924729248292492925029251292522925329254292552925629257292582925929260292612926229263292642926529266292672926829269292702927129272292732927429275292762927729278292792928029281292822928329284292852928629287292882928929290292912929229293292942929529296292972929829299293002930129302293032930429305293062930729308293092931029311293122931329314293152931629317293182931929320293212932229323293242932529326293272932829329293302933129332293332933429335293362933729338293392934029341293422934329344293452934629347293482934929350293512935229353293542935529356293572935829359293602936129362293632936429365293662936729368293692937029371293722937329374293752937629377293782937929380293812938229383293842938529386293872938829389293902939129392293932939429395293962939729398293992940029401294022940329404294052940629407294082940929410294112941229413294142941529416294172941829419294202942129422294232942429425294262942729428294292943029431294322943329434294352943629437294382943929440294412944229443294442944529446294472944829449294502945129452294532945429455294562945729458294592946029461294622946329464294652946629467294682946929470294712947229473294742947529476294772947829479294802948129482294832948429485294862948729488294892949029491294922949329494294952949629497294982949929500295012950229503295042950529506295072950829509295102951129512295132951429515295162951729518295192952029521295222952329524295252952629527295282952929530295312953229533295342953529536295372953829539295402954129542295432954429545295462954729548295492955029551295522955329554295552955629557295582955929560295612956229563295642956529566295672956829569295702957129572295732957429575295762957729578295792958029581295822958329584295852958629587295882958929590295912959229593295942959529596295972959829599296002960129602296032960429605296062960729608296092961029611296122961329614296152961629617296182961929620296212962229623296242962529626296272962829629296302963129632296332963429635296362963729638296392964029641296422964329644296452964629647296482964929650296512965229653296542965529656296572965829659296602966129662296632966429665296662966729668296692967029671296722967329674296752967629677296782967929680296812968229683296842968529686296872968829689296902969129692296932969429695296962969729698296992970029701297022970329704297052970629707297082970929710297112971229713297142971529716297172971829719297202972129722297232972429725297262972729728297292973029731297322973329734297352973629737297382973929740297412974229743297442974529746297472974829749297502975129752297532975429755297562975729758297592976029761297622976329764297652976629767297682976929770297712977229773297742977529776297772977829779297802978129782297832978429785297862978729788297892979029791297922979329794297952979629797297982979929800298012980229803298042980529806298072980829809298102981129812298132981429815298162981729818298192982029821298222982329824298252982629827298282982929830298312983229833298342983529836298372983829839298402984129842298432984429845298462984729848298492985029851298522985329854298552985629857298582985929860298612986229863298642986529866298672986829869298702987129872298732987429875298762987729878298792988029881298822988329884298852988629887298882988929890298912989229893298942989529896298972989829899299002990129902299032990429905299062990729908299092991029911299122991329914299152991629917299182991929920299212992229923299242992529926299272992829929299302993129932299332993429935299362993729938299392994029941299422994329944299452994629947299482994929950299512995229953299542995529956299572995829959299602996129962299632996429965299662996729968299692997029971299722997329974299752997629977299782997929980299812998229983299842998529986299872998829989299902999129992299932999429995299962999729998299993000030001300023000330004300053000630007300083000930010300113001230013300143001530016300173001830019300203002130022300233002430025300263002730028300293003030031300323003330034300353003630037300383003930040300413004230043300443004530046300473004830049300503005130052300533005430055300563005730058300593006030061300623006330064300653006630067300683006930070300713007230073300743007530076300773007830079300803008130082300833008430085300863008730088300893009030091300923009330094300953009630097300983009930100301013010230103301043010530106301073010830109301103011130112301133011430115301163011730118301193012030121301223012330124301253012630127301283012930130301313013230133301343013530136301373013830139301403014130142301433014430145301463014730148301493015030151301523015330154301553015630157301583015930160301613016230163301643016530166301673016830169301703017130172301733017430175301763017730178301793018030181301823018330184301853018630187301883018930190301913019230193301943019530196301973019830199302003020130202302033020430205302063020730208302093021030211302123021330214302153021630217302183021930220302213022230223302243022530226302273022830229302303023130232302333023430235302363023730238302393024030241302423024330244302453024630247302483024930250302513025230253302543025530256302573025830259302603026130262302633026430265302663026730268302693027030271302723027330274302753027630277302783027930280302813028230283302843028530286302873028830289302903029130292302933029430295302963029730298302993030030301303023030330304303053030630307303083030930310303113031230313303143031530316303173031830319303203032130322303233032430325303263032730328303293033030331303323033330334303353033630337303383033930340303413034230343303443034530346303473034830349303503035130352303533035430355303563035730358303593036030361303623036330364303653036630367303683036930370303713037230373303743037530376303773037830379303803038130382303833038430385303863038730388303893039030391303923039330394303953039630397303983039930400304013040230403304043040530406304073040830409304103041130412304133041430415304163041730418304193042030421304223042330424304253042630427304283042930430304313043230433304343043530436304373043830439304403044130442304433044430445304463044730448304493045030451304523045330454304553045630457304583045930460304613046230463304643046530466304673046830469304703047130472304733047430475304763047730478304793048030481304823048330484304853048630487304883048930490304913049230493304943049530496304973049830499305003050130502305033050430505305063050730508305093051030511305123051330514305153051630517305183051930520305213052230523305243052530526305273052830529305303053130532305333053430535305363053730538305393054030541305423054330544305453054630547305483054930550305513055230553305543055530556305573055830559305603056130562305633056430565305663056730568305693057030571305723057330574305753057630577305783057930580305813058230583305843058530586305873058830589305903059130592305933059430595305963059730598305993060030601306023060330604306053060630607306083060930610306113061230613306143061530616306173061830619306203062130622306233062430625306263062730628306293063030631306323063330634306353063630637306383063930640306413064230643306443064530646306473064830649306503065130652306533065430655306563065730658306593066030661306623066330664306653066630667306683066930670306713067230673306743067530676306773067830679306803068130682306833068430685306863068730688306893069030691306923069330694306953069630697306983069930700307013070230703307043070530706307073070830709307103071130712307133071430715307163071730718307193072030721307223072330724307253072630727307283072930730307313073230733307343073530736307373073830739307403074130742307433074430745307463074730748307493075030751307523075330754307553075630757307583075930760307613076230763307643076530766307673076830769307703077130772307733077430775307763077730778307793078030781307823078330784307853078630787307883078930790307913079230793307943079530796307973079830799308003080130802308033080430805308063080730808308093081030811308123081330814308153081630817308183081930820308213082230823308243082530826308273082830829308303083130832308333083430835308363083730838308393084030841308423084330844308453084630847308483084930850308513085230853308543085530856308573085830859308603086130862308633086430865308663086730868308693087030871308723087330874308753087630877308783087930880308813088230883308843088530886308873088830889308903089130892308933089430895308963089730898308993090030901309023090330904309053090630907309083090930910309113091230913309143091530916309173091830919309203092130922309233092430925309263092730928309293093030931309323093330934309353093630937309383093930940309413094230943309443094530946309473094830949309503095130952309533095430955309563095730958309593096030961309623096330964309653096630967309683096930970309713097230973309743097530976309773097830979309803098130982309833098430985309863098730988309893099030991309923099330994309953099630997309983099931000310013100231003310043100531006310073100831009310103101131012310133101431015310163101731018310193102031021310223102331024310253102631027310283102931030310313103231033310343103531036310373103831039310403104131042310433104431045310463104731048310493105031051310523105331054310553105631057310583105931060310613106231063310643106531066310673106831069310703107131072310733107431075310763107731078310793108031081310823108331084310853108631087310883108931090310913109231093310943109531096310973109831099311003110131102311033110431105311063110731108311093111031111311123111331114311153111631117311183111931120311213112231123311243112531126311273112831129311303113131132311333113431135311363113731138311393114031141311423114331144311453114631147311483114931150311513115231153311543115531156311573115831159311603116131162311633116431165311663116731168311693117031171311723117331174311753117631177311783117931180311813118231183311843118531186311873118831189311903119131192311933119431195311963119731198311993120031201312023120331204312053120631207312083120931210312113121231213312143121531216312173121831219312203122131222312233122431225312263122731228312293123031231312323123331234312353123631237312383123931240312413124231243312443124531246312473124831249312503125131252312533125431255312563125731258312593126031261312623126331264312653126631267312683126931270312713127231273312743127531276312773127831279312803128131282312833128431285312863128731288312893129031291312923129331294312953129631297312983129931300313013130231303313043130531306313073130831309313103131131312313133131431315313163131731318313193132031321313223132331324313253132631327313283132931330313313133231333313343133531336313373133831339313403134131342313433134431345313463134731348313493135031351313523135331354313553135631357313583135931360313613136231363313643136531366313673136831369313703137131372313733137431375313763137731378313793138031381313823138331384313853138631387313883138931390313913139231393313943139531396313973139831399314003140131402314033140431405314063140731408314093141031411314123141331414314153141631417314183141931420314213142231423314243142531426314273142831429314303143131432314333143431435314363143731438314393144031441314423144331444314453144631447314483144931450314513145231453314543145531456314573145831459314603146131462314633146431465314663146731468314693147031471314723147331474314753147631477314783147931480314813148231483314843148531486314873148831489314903149131492314933149431495314963149731498314993150031501315023150331504315053150631507315083150931510315113151231513315143151531516315173151831519315203152131522315233152431525315263152731528315293153031531315323153331534315353153631537315383153931540315413154231543315443154531546315473154831549315503155131552315533155431555315563155731558315593156031561315623156331564315653156631567315683156931570315713157231573315743157531576315773157831579315803158131582315833158431585315863158731588315893159031591315923159331594315953159631597315983159931600316013160231603316043160531606316073160831609316103161131612316133161431615316163161731618316193162031621316223162331624316253162631627316283162931630316313163231633316343163531636316373163831639316403164131642316433164431645316463164731648316493165031651316523165331654316553165631657316583165931660316613166231663316643166531666316673166831669316703167131672316733167431675316763167731678316793168031681316823168331684316853168631687316883168931690316913169231693316943169531696316973169831699317003170131702317033170431705317063170731708317093171031711317123171331714317153171631717317183171931720317213172231723317243172531726317273172831729317303173131732317333173431735317363173731738317393174031741317423174331744317453174631747317483174931750317513175231753317543175531756317573175831759317603176131762317633176431765317663176731768317693177031771317723177331774317753177631777317783177931780317813178231783317843178531786317873178831789317903179131792317933179431795317963179731798317993180031801318023180331804318053180631807318083180931810318113181231813318143181531816318173181831819318203182131822318233182431825318263182731828318293183031831318323183331834318353183631837318383183931840318413184231843318443184531846318473184831849318503185131852318533185431855318563185731858318593186031861318623186331864318653186631867318683186931870318713187231873318743187531876318773187831879318803188131882318833188431885318863188731888318893189031891318923189331894318953189631897318983189931900319013190231903319043190531906319073190831909319103191131912319133191431915319163191731918319193192031921319223192331924319253192631927319283192931930319313193231933319343193531936319373193831939319403194131942319433194431945319463194731948319493195031951319523195331954319553195631957319583195931960319613196231963319643196531966319673196831969319703197131972319733197431975319763197731978319793198031981319823198331984319853198631987319883198931990319913199231993319943199531996319973199831999320003200132002320033200432005320063200732008320093201032011320123201332014320153201632017320183201932020320213202232023320243202532026320273202832029320303203132032320333203432035320363203732038320393204032041320423204332044320453204632047320483204932050320513205232053320543205532056320573205832059320603206132062320633206432065320663206732068320693207032071320723207332074320753207632077320783207932080320813208232083320843208532086320873208832089320903209132092320933209432095320963209732098320993210032101321023210332104321053210632107321083210932110321113211232113321143211532116321173211832119321203212132122321233212432125321263212732128321293213032131321323213332134321353213632137321383213932140321413214232143321443214532146321473214832149321503215132152321533215432155321563215732158321593216032161321623216332164321653216632167321683216932170321713217232173321743217532176321773217832179321803218132182321833218432185321863218732188321893219032191321923219332194321953219632197321983219932200322013220232203322043220532206322073220832209322103221132212322133221432215322163221732218322193222032221322223222332224322253222632227322283222932230322313223232233322343223532236322373223832239322403224132242322433224432245322463224732248322493225032251322523225332254322553225632257322583225932260322613226232263322643226532266322673226832269322703227132272322733227432275322763227732278322793228032281322823228332284322853228632287322883228932290322913229232293322943229532296322973229832299323003230132302323033230432305323063230732308323093231032311323123231332314323153231632317323183231932320323213232232323323243232532326323273232832329323303233132332323333233432335323363233732338323393234032341323423234332344323453234632347323483234932350323513235232353323543235532356323573235832359323603236132362323633236432365323663236732368323693237032371323723237332374323753237632377323783237932380323813238232383323843238532386323873238832389323903239132392323933239432395323963239732398323993240032401324023240332404324053240632407324083240932410324113241232413324143241532416324173241832419324203242132422324233242432425324263242732428324293243032431324323243332434324353243632437324383243932440324413244232443324443244532446324473244832449324503245132452324533245432455324563245732458324593246032461324623246332464324653246632467324683246932470324713247232473324743247532476324773247832479324803248132482324833248432485324863248732488324893249032491324923249332494324953249632497324983249932500325013250232503325043250532506325073250832509325103251132512325133251432515325163251732518325193252032521325223252332524325253252632527325283252932530325313253232533325343253532536325373253832539325403254132542325433254432545325463254732548325493255032551325523255332554325553255632557325583255932560325613256232563325643256532566325673256832569325703257132572325733257432575325763257732578325793258032581325823258332584325853258632587325883258932590325913259232593325943259532596325973259832599326003260132602326033260432605326063260732608326093261032611326123261332614326153261632617326183261932620326213262232623326243262532626326273262832629326303263132632326333263432635326363263732638326393264032641326423264332644326453264632647326483264932650326513265232653326543265532656326573265832659326603266132662326633266432665326663266732668326693267032671326723267332674326753267632677326783267932680326813268232683326843268532686326873268832689326903269132692326933269432695326963269732698326993270032701327023270332704327053270632707327083270932710327113271232713327143271532716327173271832719327203272132722327233272432725327263272732728327293273032731327323273332734327353273632737327383273932740327413274232743327443274532746327473274832749327503275132752327533275432755327563275732758327593276032761327623276332764327653276632767327683276932770327713277232773327743277532776327773277832779327803278132782327833278432785327863278732788327893279032791327923279332794327953279632797327983279932800328013280232803328043280532806328073280832809328103281132812328133281432815328163281732818328193282032821328223282332824328253282632827328283282932830328313283232833328343283532836328373283832839328403284132842328433284432845328463284732848328493285032851328523285332854328553285632857328583285932860328613286232863328643286532866328673286832869328703287132872328733287432875328763287732878328793288032881328823288332884328853288632887328883288932890328913289232893328943289532896328973289832899329003290132902329033290432905329063290732908329093291032911329123291332914329153291632917329183291932920329213292232923329243292532926329273292832929329303293132932329333293432935329363293732938329393294032941329423294332944329453294632947329483294932950329513295232953329543295532956329573295832959329603296132962329633296432965329663296732968329693297032971329723297332974329753297632977329783297932980329813298232983329843298532986329873298832989329903299132992329933299432995329963299732998329993300033001330023300333004330053300633007330083300933010330113301233013330143301533016330173301833019330203302133022330233302433025330263302733028330293303033031330323303333034330353303633037330383303933040330413304233043330443304533046330473304833049330503305133052330533305433055330563305733058330593306033061330623306333064330653306633067330683306933070330713307233073330743307533076330773307833079330803308133082330833308433085330863308733088330893309033091330923309333094330953309633097330983309933100331013310233103331043310533106331073310833109331103311133112331133311433115331163311733118331193312033121331223312333124331253312633127331283312933130331313313233133331343313533136331373313833139331403314133142331433314433145331463314733148331493315033151331523315333154331553315633157331583315933160331613316233163331643316533166331673316833169331703317133172331733317433175331763317733178331793318033181331823318333184331853318633187331883318933190331913319233193331943319533196331973319833199332003320133202332033320433205332063320733208332093321033211332123321333214332153321633217332183321933220332213322233223332243322533226332273322833229332303323133232332333323433235332363323733238332393324033241332423324333244332453324633247332483324933250332513325233253332543325533256332573325833259332603326133262332633326433265332663326733268332693327033271332723327333274332753327633277332783327933280332813328233283332843328533286332873328833289332903329133292332933329433295332963329733298332993330033301333023330333304333053330633307333083330933310333113331233313333143331533316333173331833319333203332133322333233332433325333263332733328333293333033331333323333333334333353333633337333383333933340333413334233343333443334533346333473334833349333503335133352333533335433355333563335733358333593336033361333623336333364333653336633367333683336933370333713337233373333743337533376333773337833379333803338133382333833338433385333863338733388333893339033391333923339333394333953339633397333983339933400334013340233403334043340533406334073340833409334103341133412334133341433415334163341733418334193342033421334223342333424334253342633427334283342933430334313343233433334343343533436334373343833439334403344133442334433344433445334463344733448334493345033451334523345333454334553345633457334583345933460334613346233463334643346533466334673346833469334703347133472334733347433475334763347733478334793348033481334823348333484334853348633487334883348933490334913349233493334943349533496334973349833499335003350133502335033350433505335063350733508335093351033511335123351333514335153351633517335183351933520335213352233523335243352533526335273352833529335303353133532335333353433535335363353733538335393354033541335423354333544335453354633547335483354933550335513355233553335543355533556335573355833559335603356133562335633356433565335663356733568335693357033571335723357333574335753357633577335783357933580335813358233583335843358533586335873358833589335903359133592335933359433595335963359733598335993360033601336023360333604336053360633607336083360933610336113361233613336143361533616336173361833619336203362133622336233362433625336263362733628336293363033631336323363333634336353363633637336383363933640336413364233643336443364533646336473364833649336503365133652336533365433655336563365733658336593366033661336623366333664336653366633667336683366933670336713367233673336743367533676336773367833679336803368133682336833368433685336863368733688336893369033691336923369333694336953369633697336983369933700337013370233703337043370533706337073370833709337103371133712337133371433715337163371733718337193372033721337223372333724337253372633727337283372933730337313373233733337343373533736337373373833739337403374133742337433374433745337463374733748337493375033751337523375333754337553375633757337583375933760337613376233763337643376533766337673376833769337703377133772337733377433775337763377733778337793378033781337823378333784337853378633787337883378933790337913379233793337943379533796337973379833799338003380133802338033380433805338063380733808338093381033811338123381333814338153381633817338183381933820338213382233823338243382533826338273382833829338303383133832338333383433835338363383733838338393384033841338423384333844338453384633847338483384933850338513385233853338543385533856338573385833859338603386133862338633386433865338663386733868338693387033871338723387333874338753387633877338783387933880338813388233883338843388533886338873388833889338903389133892338933389433895338963389733898338993390033901339023390333904339053390633907339083390933910339113391233913339143391533916339173391833919339203392133922339233392433925339263392733928339293393033931339323393333934339353393633937339383393933940339413394233943339443394533946339473394833949339503395133952339533395433955339563395733958339593396033961339623396333964339653396633967339683396933970339713397233973339743397533976339773397833979339803398133982339833398433985339863398733988339893399033991339923399333994339953399633997339983399934000340013400234003340043400534006340073400834009340103401134012340133401434015340163401734018340193402034021340223402334024340253402634027340283402934030340313403234033340343403534036340373403834039340403404134042340433404434045340463404734048340493405034051340523405334054340553405634057340583405934060340613406234063340643406534066340673406834069340703407134072340733407434075340763407734078340793408034081340823408334084340853408634087340883408934090340913409234093340943409534096340973409834099341003410134102341033410434105341063410734108341093411034111341123411334114341153411634117341183411934120341213412234123341243412534126341273412834129341303413134132341333413434135341363413734138341393414034141341423414334144341453414634147341483414934150341513415234153341543415534156341573415834159341603416134162341633416434165341663416734168341693417034171341723417334174341753417634177341783417934180341813418234183341843418534186341873418834189341903419134192341933419434195341963419734198341993420034201342023420334204342053420634207342083420934210342113421234213342143421534216342173421834219342203422134222342233422434225342263422734228342293423034231342323423334234342353423634237342383423934240342413424234243342443424534246342473424834249342503425134252342533425434255342563425734258342593426034261342623426334264342653426634267342683426934270342713427234273342743427534276342773427834279342803428134282342833428434285342863428734288342893429034291342923429334294342953429634297342983429934300343013430234303343043430534306343073430834309343103431134312343133431434315343163431734318343193432034321343223432334324343253432634327343283432934330343313433234333343343433534336343373433834339343403434134342343433434434345343463434734348343493435034351343523435334354343553435634357343583435934360343613436234363343643436534366343673436834369343703437134372343733437434375343763437734378343793438034381343823438334384343853438634387343883438934390343913439234393343943439534396343973439834399344003440134402344033440434405344063440734408344093441034411344123441334414344153441634417344183441934420344213442234423344243442534426344273442834429344303443134432344333443434435344363443734438344393444034441344423444334444344453444634447344483444934450344513445234453344543445534456344573445834459344603446134462344633446434465344663446734468344693447034471344723447334474344753447634477344783447934480344813448234483344843448534486344873448834489344903449134492344933449434495344963449734498344993450034501345023450334504345053450634507345083450934510345113451234513345143451534516345173451834519345203452134522345233452434525345263452734528345293453034531345323453334534345353453634537345383453934540345413454234543345443454534546345473454834549345503455134552345533455434555345563455734558345593456034561345623456334564345653456634567345683456934570345713457234573345743457534576345773457834579345803458134582345833458434585345863458734588345893459034591345923459334594345953459634597345983459934600346013460234603346043460534606346073460834609346103461134612346133461434615346163461734618346193462034621346223462334624346253462634627346283462934630346313463234633346343463534636346373463834639346403464134642346433464434645346463464734648346493465034651346523465334654346553465634657346583465934660346613466234663346643466534666346673466834669346703467134672346733467434675346763467734678346793468034681346823468334684346853468634687346883468934690346913469234693346943469534696346973469834699347003470134702347033470434705347063470734708347093471034711347123471334714347153471634717347183471934720347213472234723347243472534726347273472834729347303473134732347333473434735347363473734738347393474034741347423474334744347453474634747347483474934750347513475234753347543475534756347573475834759347603476134762347633476434765347663476734768347693477034771347723477334774347753477634777347783477934780347813478234783347843478534786347873478834789347903479134792347933479434795347963479734798347993480034801348023480334804348053480634807348083480934810348113481234813348143481534816348173481834819348203482134822348233482434825348263482734828348293483034831348323483334834348353483634837348383483934840348413484234843348443484534846348473484834849348503485134852348533485434855348563485734858348593486034861348623486334864348653486634867348683486934870348713487234873348743487534876348773487834879348803488134882348833488434885348863488734888348893489034891348923489334894348953489634897348983489934900349013490234903349043490534906349073490834909349103491134912349133491434915349163491734918349193492034921349223492334924349253492634927349283492934930349313493234933349343493534936349373493834939349403494134942349433494434945349463494734948349493495034951349523495334954349553495634957349583495934960349613496234963349643496534966349673496834969349703497134972349733497434975349763497734978349793498034981349823498334984349853498634987349883498934990349913499234993349943499534996349973499834999350003500135002350033500435005350063500735008350093501035011350123501335014350153501635017350183501935020350213502235023350243502535026350273502835029350303503135032350333503435035350363503735038350393504035041350423504335044350453504635047350483504935050350513505235053350543505535056350573505835059350603506135062350633506435065350663506735068350693507035071350723507335074350753507635077350783507935080350813508235083350843508535086350873508835089350903509135092350933509435095350963509735098350993510035101351023510335104351053510635107351083510935110351113511235113351143511535116351173511835119351203512135122351233512435125351263512735128351293513035131351323513335134351353513635137351383513935140351413514235143351443514535146351473514835149351503515135152351533515435155351563515735158351593516035161351623516335164351653516635167351683516935170351713517235173351743517535176351773517835179351803518135182351833518435185351863518735188351893519035191351923519335194351953519635197351983519935200352013520235203352043520535206352073520835209352103521135212352133521435215352163521735218352193522035221352223522335224352253522635227352283522935230352313523235233352343523535236352373523835239352403524135242352433524435245352463524735248352493525035251352523525335254352553525635257352583525935260352613526235263352643526535266352673526835269352703527135272352733527435275352763527735278352793528035281352823528335284352853528635287352883528935290352913529235293352943529535296352973529835299353003530135302353033530435305353063530735308353093531035311353123531335314353153531635317353183531935320353213532235323353243532535326353273532835329353303533135332353333533435335353363533735338353393534035341353423534335344353453534635347353483534935350353513535235353353543535535356353573535835359353603536135362353633536435365353663536735368353693537035371353723537335374353753537635377353783537935380353813538235383353843538535386353873538835389353903539135392353933539435395353963539735398353993540035401354023540335404354053540635407354083540935410354113541235413354143541535416354173541835419354203542135422354233542435425354263542735428354293543035431354323543335434354353543635437354383543935440354413544235443354443544535446354473544835449354503545135452354533545435455354563545735458354593546035461354623546335464354653546635467354683546935470354713547235473354743547535476354773547835479354803548135482354833548435485354863548735488354893549035491354923549335494354953549635497354983549935500355013550235503355043550535506355073550835509355103551135512355133551435515355163551735518355193552035521355223552335524355253552635527355283552935530355313553235533355343553535536355373553835539355403554135542355433554435545355463554735548355493555035551355523555335554355553555635557355583555935560355613556235563355643556535566355673556835569355703557135572355733557435575355763557735578355793558035581355823558335584355853558635587355883558935590355913559235593355943559535596355973559835599356003560135602356033560435605356063560735608356093561035611356123561335614356153561635617356183561935620356213562235623356243562535626356273562835629356303563135632356333563435635356363563735638356393564035641356423564335644356453564635647356483564935650356513565235653356543565535656356573565835659356603566135662356633566435665356663566735668356693567035671356723567335674356753567635677356783567935680356813568235683356843568535686356873568835689356903569135692356933569435695356963569735698356993570035701357023570335704357053570635707357083570935710357113571235713357143571535716357173571835719357203572135722357233572435725357263572735728357293573035731357323573335734357353573635737357383573935740357413574235743357443574535746357473574835749357503575135752357533575435755357563575735758357593576035761357623576335764357653576635767357683576935770357713577235773357743577535776357773577835779357803578135782357833578435785357863578735788357893579035791357923579335794357953579635797357983579935800358013580235803358043580535806358073580835809358103581135812358133581435815358163581735818358193582035821358223582335824358253582635827358283582935830358313583235833358343583535836358373583835839358403584135842358433584435845358463584735848358493585035851358523585335854358553585635857358583585935860358613586235863358643586535866358673586835869358703587135872358733587435875358763587735878358793588035881358823588335884358853588635887358883588935890358913589235893358943589535896358973589835899359003590135902359033590435905359063590735908359093591035911359123591335914359153591635917359183591935920359213592235923359243592535926359273592835929359303593135932359333593435935359363593735938359393594035941359423594335944359453594635947359483594935950359513595235953359543595535956359573595835959359603596135962359633596435965359663596735968359693597035971359723597335974359753597635977359783597935980359813598235983359843598535986359873598835989359903599135992359933599435995359963599735998359993600036001360023600336004360053600636007360083600936010360113601236013360143601536016360173601836019360203602136022360233602436025360263602736028360293603036031360323603336034360353603636037360383603936040360413604236043360443604536046360473604836049360503605136052360533605436055360563605736058360593606036061360623606336064360653606636067360683606936070360713607236073360743607536076360773607836079360803608136082360833608436085360863608736088360893609036091360923609336094360953609636097360983609936100361013610236103361043610536106361073610836109361103611136112361133611436115361163611736118361193612036121361223612336124361253612636127361283612936130361313613236133361343613536136361373613836139361403614136142361433614436145361463614736148361493615036151361523615336154361553615636157361583615936160361613616236163361643616536166361673616836169361703617136172361733617436175361763617736178361793618036181361823618336184361853618636187361883618936190361913619236193361943619536196361973619836199362003620136202362033620436205362063620736208362093621036211362123621336214362153621636217362183621936220362213622236223362243622536226362273622836229362303623136232362333623436235362363623736238362393624036241362423624336244362453624636247362483624936250362513625236253362543625536256362573625836259362603626136262362633626436265362663626736268362693627036271362723627336274362753627636277362783627936280362813628236283362843628536286362873628836289362903629136292362933629436295362963629736298362993630036301363023630336304363053630636307363083630936310363113631236313363143631536316363173631836319363203632136322363233632436325363263632736328363293633036331363323633336334363353633636337363383633936340363413634236343363443634536346363473634836349363503635136352363533635436355363563635736358363593636036361363623636336364363653636636367363683636936370363713637236373363743637536376363773637836379363803638136382363833638436385363863638736388363893639036391363923639336394363953639636397363983639936400364013640236403364043640536406364073640836409364103641136412364133641436415364163641736418364193642036421364223642336424364253642636427364283642936430364313643236433364343643536436364373643836439364403644136442364433644436445364463644736448364493645036451364523645336454364553645636457364583645936460364613646236463364643646536466364673646836469364703647136472364733647436475364763647736478364793648036481364823648336484364853648636487364883648936490364913649236493364943649536496364973649836499365003650136502365033650436505365063650736508365093651036511365123651336514365153651636517365183651936520365213652236523365243652536526365273652836529365303653136532365333653436535365363653736538365393654036541365423654336544365453654636547365483654936550365513655236553365543655536556365573655836559365603656136562365633656436565365663656736568365693657036571365723657336574365753657636577365783657936580365813658236583365843658536586365873658836589365903659136592365933659436595365963659736598365993660036601366023660336604366053660636607366083660936610366113661236613366143661536616366173661836619366203662136622366233662436625366263662736628366293663036631366323663336634366353663636637366383663936640366413664236643366443664536646366473664836649366503665136652366533665436655366563665736658366593666036661366623666336664366653666636667366683666936670366713667236673366743667536676366773667836679366803668136682366833668436685366863668736688366893669036691366923669336694366953669636697366983669936700367013670236703367043670536706367073670836709367103671136712367133671436715367163671736718367193672036721367223672336724367253672636727367283672936730367313673236733367343673536736367373673836739367403674136742367433674436745367463674736748367493675036751367523675336754367553675636757367583675936760367613676236763367643676536766367673676836769367703677136772367733677436775367763677736778367793678036781367823678336784367853678636787367883678936790367913679236793367943679536796367973679836799368003680136802368033680436805368063680736808368093681036811368123681336814368153681636817368183681936820368213682236823368243682536826368273682836829368303683136832368333683436835368363683736838368393684036841368423684336844368453684636847368483684936850368513685236853368543685536856368573685836859368603686136862368633686436865368663686736868368693687036871368723687336874368753687636877368783687936880368813688236883368843688536886368873688836889368903689136892368933689436895368963689736898368993690036901369023690336904369053690636907369083690936910369113691236913369143691536916369173691836919369203692136922369233692436925369263692736928369293693036931369323693336934369353693636937369383693936940369413694236943369443694536946369473694836949369503695136952369533695436955369563695736958369593696036961369623696336964369653696636967369683696936970369713697236973369743697536976369773697836979369803698136982369833698436985369863698736988369893699036991369923699336994369953699636997369983699937000370013700237003370043700537006370073700837009370103701137012370133701437015370163701737018370193702037021370223702337024370253702637027370283702937030370313703237033370343703537036370373703837039370403704137042370433704437045370463704737048370493705037051370523705337054370553705637057370583705937060370613706237063370643706537066370673706837069370703707137072370733707437075370763707737078370793708037081370823708337084370853708637087370883708937090370913709237093370943709537096370973709837099371003710137102371033710437105371063710737108371093711037111371123711337114371153711637117371183711937120371213712237123371243712537126371273712837129371303713137132371333713437135371363713737138371393714037141371423714337144371453714637147371483714937150371513715237153371543715537156371573715837159371603716137162371633716437165371663716737168371693717037171371723717337174371753717637177371783717937180371813718237183371843718537186371873718837189371903719137192371933719437195371963719737198371993720037201372023720337204372053720637207372083720937210372113721237213372143721537216372173721837219372203722137222372233722437225372263722737228372293723037231372323723337234372353723637237372383723937240372413724237243372443724537246372473724837249372503725137252372533725437255372563725737258372593726037261372623726337264372653726637267372683726937270372713727237273372743727537276372773727837279372803728137282372833728437285372863728737288372893729037291372923729337294372953729637297372983729937300373013730237303373043730537306373073730837309373103731137312373133731437315373163731737318373193732037321373223732337324373253732637327373283732937330373313733237333373343733537336373373733837339373403734137342373433734437345373463734737348373493735037351373523735337354373553735637357373583735937360373613736237363373643736537366373673736837369373703737137372373733737437375373763737737378373793738037381373823738337384373853738637387373883738937390373913739237393373943739537396373973739837399374003740137402374033740437405374063740737408374093741037411374123741337414374153741637417374183741937420374213742237423374243742537426374273742837429374303743137432374333743437435374363743737438374393744037441374423744337444374453744637447374483744937450374513745237453374543745537456374573745837459374603746137462374633746437465374663746737468374693747037471374723747337474374753747637477374783747937480374813748237483374843748537486374873748837489374903749137492374933749437495374963749737498374993750037501375023750337504375053750637507375083750937510375113751237513375143751537516375173751837519375203752137522375233752437525375263752737528375293753037531375323753337534375353753637537375383753937540375413754237543375443754537546375473754837549375503755137552375533755437555375563755737558375593756037561375623756337564375653756637567375683756937570375713757237573375743757537576375773757837579375803758137582375833758437585375863758737588375893759037591375923759337594375953759637597375983759937600376013760237603376043760537606376073760837609376103761137612376133761437615376163761737618376193762037621376223762337624376253762637627376283762937630376313763237633376343763537636376373763837639376403764137642376433764437645376463764737648376493765037651376523765337654376553765637657376583765937660376613766237663376643766537666376673766837669376703767137672376733767437675
  1. (global["webpackJsonp"] = global["webpackJsonp"] || []).push([["common/vendor"],{
  2. /***/ 1:
  3. /*!************************************************************!*\
  4. !*** ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js ***!
  5. \************************************************************/
  6. /*! no static exports found */
  7. /***/ (function(module, exports, __webpack_require__) {
  8. "use strict";
  9. /* WEBPACK VAR INJECTION */(function(global) {Object.defineProperty(exports, "__esModule", { value: true });exports.createApp = createApp;exports.createComponent = createComponent;exports.createPage = createPage;exports.createPlugin = createPlugin;exports.createSubpackageApp = createSubpackageApp;exports.default = void 0;var _uniI18n = __webpack_require__(/*! @dcloudio/uni-i18n */ 3);
  10. var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 4));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function ownKeys(object, enumerableOnly) {var keys = Object.keys(object);if (Object.getOwnPropertySymbols) {var symbols = Object.getOwnPropertySymbols(object);if (enumerableOnly) symbols = symbols.filter(function (sym) {return Object.getOwnPropertyDescriptor(object, sym).enumerable;});keys.push.apply(keys, symbols);}return keys;}function _objectSpread(target) {for (var i = 1; i < arguments.length; i++) {var source = arguments[i] != null ? arguments[i] : {};if (i % 2) {ownKeys(Object(source), true).forEach(function (key) {_defineProperty(target, key, source[key]);});} else if (Object.getOwnPropertyDescriptors) {Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));} else {ownKeys(Object(source)).forEach(function (key) {Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));});}}return target;}function _slicedToArray(arr, i) {return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();}function _nonIterableRest() {throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _iterableToArrayLimit(arr, i) {if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;var _arr = [];var _n = true;var _d = false;var _e = undefined;try {for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {_arr.push(_s.value);if (i && _arr.length === i) break;}} catch (err) {_d = true;_e = err;} finally {try {if (!_n && _i["return"] != null) _i["return"]();} finally {if (_d) throw _e;}}return _arr;}function _arrayWithHoles(arr) {if (Array.isArray(arr)) return arr;}function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;}function _toConsumableArray(arr) {return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();}function _nonIterableSpread() {throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _unsupportedIterableToArray(o, minLen) {if (!o) return;if (typeof o === "string") return _arrayLikeToArray(o, minLen);var n = Object.prototype.toString.call(o).slice(8, -1);if (n === "Object" && o.constructor) n = o.constructor.name;if (n === "Map" || n === "Set") return Array.from(o);if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);}function _iterableToArray(iter) {if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);}function _arrayWithoutHoles(arr) {if (Array.isArray(arr)) return _arrayLikeToArray(arr);}function _arrayLikeToArray(arr, len) {if (len == null || len > arr.length) len = arr.length;for (var i = 0, arr2 = new Array(len); i < len; i++) {arr2[i] = arr[i];}return arr2;}
  11. var realAtob;
  12. var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
  13. var b64re = /^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/;
  14. if (typeof atob !== 'function') {
  15. realAtob = function realAtob(str) {
  16. str = String(str).replace(/[\t\n\f\r ]+/g, '');
  17. if (!b64re.test(str)) {throw new Error("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");}
  18. // Adding the padding if missing, for semplicity
  19. str += '=='.slice(2 - (str.length & 3));
  20. var bitmap;var result = '';var r1;var r2;var i = 0;
  21. for (; i < str.length;) {
  22. bitmap = b64.indexOf(str.charAt(i++)) << 18 | b64.indexOf(str.charAt(i++)) << 12 |
  23. (r1 = b64.indexOf(str.charAt(i++))) << 6 | (r2 = b64.indexOf(str.charAt(i++)));
  24. result += r1 === 64 ? String.fromCharCode(bitmap >> 16 & 255) :
  25. r2 === 64 ? String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255) :
  26. String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255, bitmap & 255);
  27. }
  28. return result;
  29. };
  30. } else {
  31. // 注意atob只能在全局对象上调用,例如:`const Base64 = {atob};Base64.atob('xxxx')`是错误的用法
  32. realAtob = atob;
  33. }
  34. function b64DecodeUnicode(str) {
  35. return decodeURIComponent(realAtob(str).split('').map(function (c) {
  36. return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
  37. }).join(''));
  38. }
  39. function getCurrentUserInfo() {
  40. var token = wx.getStorageSync('uni_id_token') || '';
  41. var tokenArr = token.split('.');
  42. if (!token || tokenArr.length !== 3) {
  43. return {
  44. uid: null,
  45. role: [],
  46. permission: [],
  47. tokenExpired: 0 };
  48. }
  49. var userInfo;
  50. try {
  51. userInfo = JSON.parse(b64DecodeUnicode(tokenArr[1]));
  52. } catch (error) {
  53. throw new Error('获取当前用户信息出错,详细错误信息为:' + error.message);
  54. }
  55. userInfo.tokenExpired = userInfo.exp * 1000;
  56. delete userInfo.exp;
  57. delete userInfo.iat;
  58. return userInfo;
  59. }
  60. function uniIdMixin(Vue) {
  61. Vue.prototype.uniIDHasRole = function (roleId) {var _getCurrentUserInfo =
  62. getCurrentUserInfo(),role = _getCurrentUserInfo.role;
  63. return role.indexOf(roleId) > -1;
  64. };
  65. Vue.prototype.uniIDHasPermission = function (permissionId) {var _getCurrentUserInfo2 =
  66. getCurrentUserInfo(),permission = _getCurrentUserInfo2.permission;
  67. return this.uniIDHasRole('admin') || permission.indexOf(permissionId) > -1;
  68. };
  69. Vue.prototype.uniIDTokenValid = function () {var _getCurrentUserInfo3 =
  70. getCurrentUserInfo(),tokenExpired = _getCurrentUserInfo3.tokenExpired;
  71. return tokenExpired > Date.now();
  72. };
  73. }
  74. var _toString = Object.prototype.toString;
  75. var hasOwnProperty = Object.prototype.hasOwnProperty;
  76. function isFn(fn) {
  77. return typeof fn === 'function';
  78. }
  79. function isStr(str) {
  80. return typeof str === 'string';
  81. }
  82. function isPlainObject(obj) {
  83. return _toString.call(obj) === '[object Object]';
  84. }
  85. function hasOwn(obj, key) {
  86. return hasOwnProperty.call(obj, key);
  87. }
  88. function noop() {}
  89. /**
  90. * Create a cached version of a pure function.
  91. */
  92. function cached(fn) {
  93. var cache = Object.create(null);
  94. return function cachedFn(str) {
  95. var hit = cache[str];
  96. return hit || (cache[str] = fn(str));
  97. };
  98. }
  99. /**
  100. * Camelize a hyphen-delimited string.
  101. */
  102. var camelizeRE = /-(\w)/g;
  103. var camelize = cached(function (str) {
  104. return str.replace(camelizeRE, function (_, c) {return c ? c.toUpperCase() : '';});
  105. });
  106. function sortObject(obj) {
  107. var sortObj = {};
  108. if (isPlainObject(obj)) {
  109. Object.keys(obj).sort().forEach(function (key) {
  110. sortObj[key] = obj[key];
  111. });
  112. }
  113. return !Object.keys(sortObj) ? obj : sortObj;
  114. }
  115. var HOOKS = [
  116. 'invoke',
  117. 'success',
  118. 'fail',
  119. 'complete',
  120. 'returnValue'];
  121. var globalInterceptors = {};
  122. var scopedInterceptors = {};
  123. function mergeHook(parentVal, childVal) {
  124. var res = childVal ?
  125. parentVal ?
  126. parentVal.concat(childVal) :
  127. Array.isArray(childVal) ?
  128. childVal : [childVal] :
  129. parentVal;
  130. return res ?
  131. dedupeHooks(res) :
  132. res;
  133. }
  134. function dedupeHooks(hooks) {
  135. var res = [];
  136. for (var i = 0; i < hooks.length; i++) {
  137. if (res.indexOf(hooks[i]) === -1) {
  138. res.push(hooks[i]);
  139. }
  140. }
  141. return res;
  142. }
  143. function removeHook(hooks, hook) {
  144. var index = hooks.indexOf(hook);
  145. if (index !== -1) {
  146. hooks.splice(index, 1);
  147. }
  148. }
  149. function mergeInterceptorHook(interceptor, option) {
  150. Object.keys(option).forEach(function (hook) {
  151. if (HOOKS.indexOf(hook) !== -1 && isFn(option[hook])) {
  152. interceptor[hook] = mergeHook(interceptor[hook], option[hook]);
  153. }
  154. });
  155. }
  156. function removeInterceptorHook(interceptor, option) {
  157. if (!interceptor || !option) {
  158. return;
  159. }
  160. Object.keys(option).forEach(function (hook) {
  161. if (HOOKS.indexOf(hook) !== -1 && isFn(option[hook])) {
  162. removeHook(interceptor[hook], option[hook]);
  163. }
  164. });
  165. }
  166. function addInterceptor(method, option) {
  167. if (typeof method === 'string' && isPlainObject(option)) {
  168. mergeInterceptorHook(scopedInterceptors[method] || (scopedInterceptors[method] = {}), option);
  169. } else if (isPlainObject(method)) {
  170. mergeInterceptorHook(globalInterceptors, method);
  171. }
  172. }
  173. function removeInterceptor(method, option) {
  174. if (typeof method === 'string') {
  175. if (isPlainObject(option)) {
  176. removeInterceptorHook(scopedInterceptors[method], option);
  177. } else {
  178. delete scopedInterceptors[method];
  179. }
  180. } else if (isPlainObject(method)) {
  181. removeInterceptorHook(globalInterceptors, method);
  182. }
  183. }
  184. function wrapperHook(hook) {
  185. return function (data) {
  186. return hook(data) || data;
  187. };
  188. }
  189. function isPromise(obj) {
  190. return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';
  191. }
  192. function queue(hooks, data) {
  193. var promise = false;
  194. for (var i = 0; i < hooks.length; i++) {
  195. var hook = hooks[i];
  196. if (promise) {
  197. promise = Promise.resolve(wrapperHook(hook));
  198. } else {
  199. var res = hook(data);
  200. if (isPromise(res)) {
  201. promise = Promise.resolve(res);
  202. }
  203. if (res === false) {
  204. return {
  205. then: function then() {} };
  206. }
  207. }
  208. }
  209. return promise || {
  210. then: function then(callback) {
  211. return callback(data);
  212. } };
  213. }
  214. function wrapperOptions(interceptor) {var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  215. ['success', 'fail', 'complete'].forEach(function (name) {
  216. if (Array.isArray(interceptor[name])) {
  217. var oldCallback = options[name];
  218. options[name] = function callbackInterceptor(res) {
  219. queue(interceptor[name], res).then(function (res) {
  220. /* eslint-disable no-mixed-operators */
  221. return isFn(oldCallback) && oldCallback(res) || res;
  222. });
  223. };
  224. }
  225. });
  226. return options;
  227. }
  228. function wrapperReturnValue(method, returnValue) {
  229. var returnValueHooks = [];
  230. if (Array.isArray(globalInterceptors.returnValue)) {
  231. returnValueHooks.push.apply(returnValueHooks, _toConsumableArray(globalInterceptors.returnValue));
  232. }
  233. var interceptor = scopedInterceptors[method];
  234. if (interceptor && Array.isArray(interceptor.returnValue)) {
  235. returnValueHooks.push.apply(returnValueHooks, _toConsumableArray(interceptor.returnValue));
  236. }
  237. returnValueHooks.forEach(function (hook) {
  238. returnValue = hook(returnValue) || returnValue;
  239. });
  240. return returnValue;
  241. }
  242. function getApiInterceptorHooks(method) {
  243. var interceptor = Object.create(null);
  244. Object.keys(globalInterceptors).forEach(function (hook) {
  245. if (hook !== 'returnValue') {
  246. interceptor[hook] = globalInterceptors[hook].slice();
  247. }
  248. });
  249. var scopedInterceptor = scopedInterceptors[method];
  250. if (scopedInterceptor) {
  251. Object.keys(scopedInterceptor).forEach(function (hook) {
  252. if (hook !== 'returnValue') {
  253. interceptor[hook] = (interceptor[hook] || []).concat(scopedInterceptor[hook]);
  254. }
  255. });
  256. }
  257. return interceptor;
  258. }
  259. function invokeApi(method, api, options) {for (var _len = arguments.length, params = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {params[_key - 3] = arguments[_key];}
  260. var interceptor = getApiInterceptorHooks(method);
  261. if (interceptor && Object.keys(interceptor).length) {
  262. if (Array.isArray(interceptor.invoke)) {
  263. var res = queue(interceptor.invoke, options);
  264. return res.then(function (options) {
  265. return api.apply(void 0, [wrapperOptions(interceptor, options)].concat(params));
  266. });
  267. } else {
  268. return api.apply(void 0, [wrapperOptions(interceptor, options)].concat(params));
  269. }
  270. }
  271. return api.apply(void 0, [options].concat(params));
  272. }
  273. var promiseInterceptor = {
  274. returnValue: function returnValue(res) {
  275. if (!isPromise(res)) {
  276. return res;
  277. }
  278. return new Promise(function (resolve, reject) {
  279. res.then(function (res) {
  280. if (res[0]) {
  281. reject(res[0]);
  282. } else {
  283. resolve(res[1]);
  284. }
  285. });
  286. });
  287. } };
  288. var SYNC_API_RE =
  289. /^\$|Window$|WindowStyle$|sendHostEvent|sendNativeEvent|restoreGlobal|requireGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64|getLocale|setLocale|invokePushCallback|getWindowInfo|getDeviceInfo|getAppBaseInfo|getSystemSetting|getAppAuthorizeSetting/;
  290. var CONTEXT_API_RE = /^create|Manager$/;
  291. // Context例外情况
  292. var CONTEXT_API_RE_EXC = ['createBLEConnection'];
  293. // 同步例外情况
  294. var ASYNC_API = ['createBLEConnection', 'createPushMessage'];
  295. var CALLBACK_API_RE = /^on|^off/;
  296. function isContextApi(name) {
  297. return CONTEXT_API_RE.test(name) && CONTEXT_API_RE_EXC.indexOf(name) === -1;
  298. }
  299. function isSyncApi(name) {
  300. return SYNC_API_RE.test(name) && ASYNC_API.indexOf(name) === -1;
  301. }
  302. function isCallbackApi(name) {
  303. return CALLBACK_API_RE.test(name) && name !== 'onPush';
  304. }
  305. function handlePromise(promise) {
  306. return promise.then(function (data) {
  307. return [null, data];
  308. }).
  309. catch(function (err) {return [err];});
  310. }
  311. function shouldPromise(name) {
  312. if (
  313. isContextApi(name) ||
  314. isSyncApi(name) ||
  315. isCallbackApi(name))
  316. {
  317. return false;
  318. }
  319. return true;
  320. }
  321. /* eslint-disable no-extend-native */
  322. if (!Promise.prototype.finally) {
  323. Promise.prototype.finally = function (callback) {
  324. var promise = this.constructor;
  325. return this.then(
  326. function (value) {return promise.resolve(callback()).then(function () {return value;});},
  327. function (reason) {return promise.resolve(callback()).then(function () {
  328. throw reason;
  329. });});
  330. };
  331. }
  332. function promisify(name, api) {
  333. if (!shouldPromise(name)) {
  334. return api;
  335. }
  336. return function promiseApi() {var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {params[_key2 - 1] = arguments[_key2];}
  337. if (isFn(options.success) || isFn(options.fail) || isFn(options.complete)) {
  338. return wrapperReturnValue(name, invokeApi.apply(void 0, [name, api, options].concat(params)));
  339. }
  340. return wrapperReturnValue(name, handlePromise(new Promise(function (resolve, reject) {
  341. invokeApi.apply(void 0, [name, api, Object.assign({}, options, {
  342. success: resolve,
  343. fail: reject })].concat(
  344. params));
  345. })));
  346. };
  347. }
  348. var EPS = 1e-4;
  349. var BASE_DEVICE_WIDTH = 750;
  350. var isIOS = false;
  351. var deviceWidth = 0;
  352. var deviceDPR = 0;
  353. function checkDeviceWidth() {var _wx$getSystemInfoSync =
  354. wx.getSystemInfoSync(),platform = _wx$getSystemInfoSync.platform,pixelRatio = _wx$getSystemInfoSync.pixelRatio,windowWidth = _wx$getSystemInfoSync.windowWidth; // uni=>wx runtime 编译目标是 uni 对象,内部不允许直接使用 uni
  355. deviceWidth = windowWidth;
  356. deviceDPR = pixelRatio;
  357. isIOS = platform === 'ios';
  358. }
  359. function upx2px(number, newDeviceWidth) {
  360. if (deviceWidth === 0) {
  361. checkDeviceWidth();
  362. }
  363. number = Number(number);
  364. if (number === 0) {
  365. return 0;
  366. }
  367. var result = number / BASE_DEVICE_WIDTH * (newDeviceWidth || deviceWidth);
  368. if (result < 0) {
  369. result = -result;
  370. }
  371. result = Math.floor(result + EPS);
  372. if (result === 0) {
  373. if (deviceDPR === 1 || !isIOS) {
  374. result = 1;
  375. } else {
  376. result = 0.5;
  377. }
  378. }
  379. return number < 0 ? -result : result;
  380. }
  381. var LOCALE_ZH_HANS = 'zh-Hans';
  382. var LOCALE_ZH_HANT = 'zh-Hant';
  383. var LOCALE_EN = 'en';
  384. var LOCALE_FR = 'fr';
  385. var LOCALE_ES = 'es';
  386. var messages = {};
  387. var locale;
  388. {
  389. locale = normalizeLocale(wx.getSystemInfoSync().language) || LOCALE_EN;
  390. }
  391. function initI18nMessages() {
  392. if (!isEnableLocale()) {
  393. return;
  394. }
  395. var localeKeys = Object.keys(__uniConfig.locales);
  396. if (localeKeys.length) {
  397. localeKeys.forEach(function (locale) {
  398. var curMessages = messages[locale];
  399. var userMessages = __uniConfig.locales[locale];
  400. if (curMessages) {
  401. Object.assign(curMessages, userMessages);
  402. } else {
  403. messages[locale] = userMessages;
  404. }
  405. });
  406. }
  407. }
  408. initI18nMessages();
  409. var i18n = (0, _uniI18n.initVueI18n)(
  410. locale,
  411. {});
  412. var t = i18n.t;
  413. var i18nMixin = i18n.mixin = {
  414. beforeCreate: function beforeCreate() {var _this = this;
  415. var unwatch = i18n.i18n.watchLocale(function () {
  416. _this.$forceUpdate();
  417. });
  418. this.$once('hook:beforeDestroy', function () {
  419. unwatch();
  420. });
  421. },
  422. methods: {
  423. $$t: function $$t(key, values) {
  424. return t(key, values);
  425. } } };
  426. var setLocale = i18n.setLocale;
  427. var getLocale = i18n.getLocale;
  428. function initAppLocale(Vue, appVm, locale) {
  429. var state = Vue.observable({
  430. locale: locale || i18n.getLocale() });
  431. var localeWatchers = [];
  432. appVm.$watchLocale = function (fn) {
  433. localeWatchers.push(fn);
  434. };
  435. Object.defineProperty(appVm, '$locale', {
  436. get: function get() {
  437. return state.locale;
  438. },
  439. set: function set(v) {
  440. state.locale = v;
  441. localeWatchers.forEach(function (watch) {return watch(v);});
  442. } });
  443. }
  444. function isEnableLocale() {
  445. return typeof __uniConfig !== 'undefined' && __uniConfig.locales && !!Object.keys(__uniConfig.locales).length;
  446. }
  447. function include(str, parts) {
  448. return !!parts.find(function (part) {return str.indexOf(part) !== -1;});
  449. }
  450. function startsWith(str, parts) {
  451. return parts.find(function (part) {return str.indexOf(part) === 0;});
  452. }
  453. function normalizeLocale(locale, messages) {
  454. if (!locale) {
  455. return;
  456. }
  457. locale = locale.trim().replace(/_/g, '-');
  458. if (messages && messages[locale]) {
  459. return locale;
  460. }
  461. locale = locale.toLowerCase();
  462. if (locale === 'chinese') {
  463. // 支付宝
  464. return LOCALE_ZH_HANS;
  465. }
  466. if (locale.indexOf('zh') === 0) {
  467. if (locale.indexOf('-hans') > -1) {
  468. return LOCALE_ZH_HANS;
  469. }
  470. if (locale.indexOf('-hant') > -1) {
  471. return LOCALE_ZH_HANT;
  472. }
  473. if (include(locale, ['-tw', '-hk', '-mo', '-cht'])) {
  474. return LOCALE_ZH_HANT;
  475. }
  476. return LOCALE_ZH_HANS;
  477. }
  478. var lang = startsWith(locale, [LOCALE_EN, LOCALE_FR, LOCALE_ES]);
  479. if (lang) {
  480. return lang;
  481. }
  482. }
  483. // export function initI18n() {
  484. // const localeKeys = Object.keys(__uniConfig.locales || {})
  485. // if (localeKeys.length) {
  486. // localeKeys.forEach((locale) =>
  487. // i18n.add(locale, __uniConfig.locales[locale])
  488. // )
  489. // }
  490. // }
  491. function getLocale$1() {
  492. // 优先使用 $locale
  493. var app = getApp({
  494. allowDefault: true });
  495. if (app && app.$vm) {
  496. return app.$vm.$locale;
  497. }
  498. return normalizeLocale(wx.getSystemInfoSync().language) || LOCALE_EN;
  499. }
  500. function setLocale$1(locale) {
  501. var app = getApp();
  502. if (!app) {
  503. return false;
  504. }
  505. var oldLocale = app.$vm.$locale;
  506. if (oldLocale !== locale) {
  507. app.$vm.$locale = locale;
  508. onLocaleChangeCallbacks.forEach(function (fn) {return fn({
  509. locale: locale });});
  510. return true;
  511. }
  512. return false;
  513. }
  514. var onLocaleChangeCallbacks = [];
  515. function onLocaleChange(fn) {
  516. if (onLocaleChangeCallbacks.indexOf(fn) === -1) {
  517. onLocaleChangeCallbacks.push(fn);
  518. }
  519. }
  520. if (typeof global !== 'undefined') {
  521. global.getLocale = getLocale$1;
  522. }
  523. var interceptors = {
  524. promiseInterceptor: promiseInterceptor };
  525. var baseApi = /*#__PURE__*/Object.freeze({
  526. __proto__: null,
  527. upx2px: upx2px,
  528. getLocale: getLocale$1,
  529. setLocale: setLocale$1,
  530. onLocaleChange: onLocaleChange,
  531. addInterceptor: addInterceptor,
  532. removeInterceptor: removeInterceptor,
  533. interceptors: interceptors });
  534. function findExistsPageIndex(url) {
  535. var pages = getCurrentPages();
  536. var len = pages.length;
  537. while (len--) {
  538. var page = pages[len];
  539. if (page.$page && page.$page.fullPath === url) {
  540. return len;
  541. }
  542. }
  543. return -1;
  544. }
  545. var redirectTo = {
  546. name: function name(fromArgs) {
  547. if (fromArgs.exists === 'back' && fromArgs.delta) {
  548. return 'navigateBack';
  549. }
  550. return 'redirectTo';
  551. },
  552. args: function args(fromArgs) {
  553. if (fromArgs.exists === 'back' && fromArgs.url) {
  554. var existsPageIndex = findExistsPageIndex(fromArgs.url);
  555. if (existsPageIndex !== -1) {
  556. var delta = getCurrentPages().length - 1 - existsPageIndex;
  557. if (delta > 0) {
  558. fromArgs.delta = delta;
  559. }
  560. }
  561. }
  562. } };
  563. var previewImage = {
  564. args: function args(fromArgs) {
  565. var currentIndex = parseInt(fromArgs.current);
  566. if (isNaN(currentIndex)) {
  567. return;
  568. }
  569. var urls = fromArgs.urls;
  570. if (!Array.isArray(urls)) {
  571. return;
  572. }
  573. var len = urls.length;
  574. if (!len) {
  575. return;
  576. }
  577. if (currentIndex < 0) {
  578. currentIndex = 0;
  579. } else if (currentIndex >= len) {
  580. currentIndex = len - 1;
  581. }
  582. if (currentIndex > 0) {
  583. fromArgs.current = urls[currentIndex];
  584. fromArgs.urls = urls.filter(
  585. function (item, index) {return index < currentIndex ? item !== urls[currentIndex] : true;});
  586. } else {
  587. fromArgs.current = urls[0];
  588. }
  589. return {
  590. indicator: false,
  591. loop: false };
  592. } };
  593. var UUID_KEY = '__DC_STAT_UUID';
  594. var deviceId;
  595. function useDeviceId(result) {
  596. deviceId = deviceId || wx.getStorageSync(UUID_KEY);
  597. if (!deviceId) {
  598. deviceId = Date.now() + '' + Math.floor(Math.random() * 1e7);
  599. wx.setStorage({
  600. key: UUID_KEY,
  601. data: deviceId });
  602. }
  603. result.deviceId = deviceId;
  604. }
  605. function addSafeAreaInsets(result) {
  606. if (result.safeArea) {
  607. var safeArea = result.safeArea;
  608. result.safeAreaInsets = {
  609. top: safeArea.top,
  610. left: safeArea.left,
  611. right: result.windowWidth - safeArea.right,
  612. bottom: result.screenHeight - safeArea.bottom };
  613. }
  614. }
  615. function populateParameters(result) {var _result$brand =
  616. result.brand,brand = _result$brand === void 0 ? '' : _result$brand,_result$model = result.model,model = _result$model === void 0 ? '' : _result$model,_result$system = result.system,system = _result$system === void 0 ? '' : _result$system,_result$language = result.language,language = _result$language === void 0 ? '' : _result$language,theme = result.theme,version = result.version,platform = result.platform,fontSizeSetting = result.fontSizeSetting,SDKVersion = result.SDKVersion,pixelRatio = result.pixelRatio,deviceOrientation = result.deviceOrientation;
  617. // const isQuickApp = "mp-weixin".indexOf('quickapp-webview') !== -1
  618. // osName osVersion
  619. var osName = '';
  620. var osVersion = '';
  621. {
  622. osName = system.split(' ')[0] || '';
  623. osVersion = system.split(' ')[1] || '';
  624. }
  625. var hostVersion = version;
  626. // deviceType
  627. var deviceType = getGetDeviceType(result, model);
  628. // deviceModel
  629. var deviceBrand = getDeviceBrand(brand);
  630. // hostName
  631. var _hostName = getHostName(result);
  632. // deviceOrientation
  633. var _deviceOrientation = deviceOrientation; // 仅 微信 百度 支持
  634. // devicePixelRatio
  635. var _devicePixelRatio = pixelRatio;
  636. // SDKVersion
  637. var _SDKVersion = SDKVersion;
  638. // hostLanguage
  639. var hostLanguage = language.replace(/_/g, '-');
  640. // wx.getAccountInfoSync
  641. var parameters = {
  642. appId: "__UNI__A901EE0",
  643. appName: "CRMEB客户管理电商商城系统前端模板uni-app版",
  644. appVersion: "1.0.0",
  645. appVersionCode: "100",
  646. appLanguage: getAppLanguage(hostLanguage),
  647. uniCompileVersion: "3.6.3",
  648. uniRuntimeVersion: "3.6.3",
  649. uniPlatform: undefined || "mp-weixin",
  650. deviceBrand: deviceBrand,
  651. deviceModel: model,
  652. deviceType: deviceType,
  653. devicePixelRatio: _devicePixelRatio,
  654. deviceOrientation: _deviceOrientation,
  655. osName: osName.toLocaleLowerCase(),
  656. osVersion: osVersion,
  657. hostTheme: theme,
  658. hostVersion: hostVersion,
  659. hostLanguage: hostLanguage,
  660. hostName: _hostName,
  661. hostSDKVersion: _SDKVersion,
  662. hostFontSizeSetting: fontSizeSetting,
  663. windowTop: 0,
  664. windowBottom: 0,
  665. // TODO
  666. osLanguage: undefined,
  667. osTheme: undefined,
  668. ua: undefined,
  669. hostPackageName: undefined,
  670. browserName: undefined,
  671. browserVersion: undefined };
  672. Object.assign(result, parameters);
  673. }
  674. function getGetDeviceType(result, model) {
  675. var deviceType = result.deviceType || 'phone';
  676. {
  677. var deviceTypeMaps = {
  678. ipad: 'pad',
  679. windows: 'pc',
  680. mac: 'pc' };
  681. var deviceTypeMapsKeys = Object.keys(deviceTypeMaps);
  682. var _model = model.toLocaleLowerCase();
  683. for (var index = 0; index < deviceTypeMapsKeys.length; index++) {
  684. var _m = deviceTypeMapsKeys[index];
  685. if (_model.indexOf(_m) !== -1) {
  686. deviceType = deviceTypeMaps[_m];
  687. break;
  688. }
  689. }
  690. }
  691. return deviceType;
  692. }
  693. function getDeviceBrand(brand) {
  694. var deviceBrand = brand;
  695. if (deviceBrand) {
  696. deviceBrand = brand.toLocaleLowerCase();
  697. }
  698. return deviceBrand;
  699. }
  700. function getAppLanguage(defaultLanguage) {
  701. return getLocale$1 ?
  702. getLocale$1() :
  703. defaultLanguage;
  704. }
  705. function getHostName(result) {
  706. var _platform = 'WeChat';
  707. var _hostName = result.hostName || _platform; // mp-jd
  708. {
  709. if (result.environment) {
  710. _hostName = result.environment;
  711. } else if (result.host && result.host.env) {
  712. _hostName = result.host.env;
  713. }
  714. }
  715. return _hostName;
  716. }
  717. var getSystemInfo = {
  718. returnValue: function returnValue(result) {
  719. useDeviceId(result);
  720. addSafeAreaInsets(result);
  721. populateParameters(result);
  722. } };
  723. var showActionSheet = {
  724. args: function args(fromArgs) {
  725. if (typeof fromArgs === 'object') {
  726. fromArgs.alertText = fromArgs.title;
  727. }
  728. } };
  729. var getAppBaseInfo = {
  730. returnValue: function returnValue(result) {var _result =
  731. result,version = _result.version,language = _result.language,SDKVersion = _result.SDKVersion,theme = _result.theme;
  732. var _hostName = getHostName(result);
  733. var hostLanguage = language.replace('_', '-');
  734. result = sortObject(Object.assign(result, {
  735. appId: "__UNI__A901EE0",
  736. appName: "CRMEB客户管理电商商城系统前端模板uni-app版",
  737. appVersion: "1.0.0",
  738. appVersionCode: "100",
  739. appLanguage: getAppLanguage(hostLanguage),
  740. hostVersion: version,
  741. hostLanguage: hostLanguage,
  742. hostName: _hostName,
  743. hostSDKVersion: SDKVersion,
  744. hostTheme: theme }));
  745. } };
  746. var getDeviceInfo = {
  747. returnValue: function returnValue(result) {var _result2 =
  748. result,brand = _result2.brand,model = _result2.model;
  749. var deviceType = getGetDeviceType(result, model);
  750. var deviceBrand = getDeviceBrand(brand);
  751. useDeviceId(result);
  752. result = sortObject(Object.assign(result, {
  753. deviceType: deviceType,
  754. deviceBrand: deviceBrand,
  755. deviceModel: model }));
  756. } };
  757. var getWindowInfo = {
  758. returnValue: function returnValue(result) {
  759. addSafeAreaInsets(result);
  760. result = sortObject(Object.assign(result, {
  761. windowTop: 0,
  762. windowBottom: 0 }));
  763. } };
  764. var getAppAuthorizeSetting = {
  765. returnValue: function returnValue(result) {var
  766. locationReducedAccuracy = result.locationReducedAccuracy;
  767. result.locationAccuracy = 'unsupported';
  768. if (locationReducedAccuracy === true) {
  769. result.locationAccuracy = 'reduced';
  770. } else if (locationReducedAccuracy === false) {
  771. result.locationAccuracy = 'full';
  772. }
  773. } };
  774. // import navigateTo from 'uni-helpers/navigate-to'
  775. var protocols = {
  776. redirectTo: redirectTo,
  777. // navigateTo, // 由于在微信开发者工具的页面参数,会显示__id__参数,因此暂时关闭mp-weixin对于navigateTo的AOP
  778. previewImage: previewImage,
  779. getSystemInfo: getSystemInfo,
  780. getSystemInfoSync: getSystemInfo,
  781. showActionSheet: showActionSheet,
  782. getAppBaseInfo: getAppBaseInfo,
  783. getDeviceInfo: getDeviceInfo,
  784. getWindowInfo: getWindowInfo,
  785. getAppAuthorizeSetting: getAppAuthorizeSetting };
  786. var todos = [
  787. 'vibrate',
  788. 'preloadPage',
  789. 'unPreloadPage',
  790. 'loadSubPackage'];
  791. var canIUses = [];
  792. var CALLBACKS = ['success', 'fail', 'cancel', 'complete'];
  793. function processCallback(methodName, method, returnValue) {
  794. return function (res) {
  795. return method(processReturnValue(methodName, res, returnValue));
  796. };
  797. }
  798. function processArgs(methodName, fromArgs) {var argsOption = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};var returnValue = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};var keepFromArgs = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
  799. if (isPlainObject(fromArgs)) {// 一般 api 的参数解析
  800. var toArgs = keepFromArgs === true ? fromArgs : {}; // returnValue 为 false 时,说明是格式化返回值,直接在返回值对象上修改赋值
  801. if (isFn(argsOption)) {
  802. argsOption = argsOption(fromArgs, toArgs) || {};
  803. }
  804. for (var key in fromArgs) {
  805. if (hasOwn(argsOption, key)) {
  806. var keyOption = argsOption[key];
  807. if (isFn(keyOption)) {
  808. keyOption = keyOption(fromArgs[key], fromArgs, toArgs);
  809. }
  810. if (!keyOption) {// 不支持的参数
  811. console.warn("The '".concat(methodName, "' method of platform '\u5FAE\u4FE1\u5C0F\u7A0B\u5E8F' does not support option '").concat(key, "'"));
  812. } else if (isStr(keyOption)) {// 重写参数 key
  813. toArgs[keyOption] = fromArgs[key];
  814. } else if (isPlainObject(keyOption)) {// {name:newName,value:value}可重新指定参数 key:value
  815. toArgs[keyOption.name ? keyOption.name : key] = keyOption.value;
  816. }
  817. } else if (CALLBACKS.indexOf(key) !== -1) {
  818. if (isFn(fromArgs[key])) {
  819. toArgs[key] = processCallback(methodName, fromArgs[key], returnValue);
  820. }
  821. } else {
  822. if (!keepFromArgs) {
  823. toArgs[key] = fromArgs[key];
  824. }
  825. }
  826. }
  827. return toArgs;
  828. } else if (isFn(fromArgs)) {
  829. fromArgs = processCallback(methodName, fromArgs, returnValue);
  830. }
  831. return fromArgs;
  832. }
  833. function processReturnValue(methodName, res, returnValue) {var keepReturnValue = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
  834. if (isFn(protocols.returnValue)) {// 处理通用 returnValue
  835. res = protocols.returnValue(methodName, res);
  836. }
  837. return processArgs(methodName, res, returnValue, {}, keepReturnValue);
  838. }
  839. function wrapper(methodName, method) {
  840. if (hasOwn(protocols, methodName)) {
  841. var protocol = protocols[methodName];
  842. if (!protocol) {// 暂不支持的 api
  843. return function () {
  844. console.error("Platform '\u5FAE\u4FE1\u5C0F\u7A0B\u5E8F' does not support '".concat(methodName, "'."));
  845. };
  846. }
  847. return function (arg1, arg2) {// 目前 api 最多两个参数
  848. var options = protocol;
  849. if (isFn(protocol)) {
  850. options = protocol(arg1);
  851. }
  852. arg1 = processArgs(methodName, arg1, options.args, options.returnValue);
  853. var args = [arg1];
  854. if (typeof arg2 !== 'undefined') {
  855. args.push(arg2);
  856. }
  857. if (isFn(options.name)) {
  858. methodName = options.name(arg1);
  859. } else if (isStr(options.name)) {
  860. methodName = options.name;
  861. }
  862. var returnValue = wx[methodName].apply(wx, args);
  863. if (isSyncApi(methodName)) {// 同步 api
  864. return processReturnValue(methodName, returnValue, options.returnValue, isContextApi(methodName));
  865. }
  866. return returnValue;
  867. };
  868. }
  869. return method;
  870. }
  871. var todoApis = Object.create(null);
  872. var TODOS = [
  873. 'onTabBarMidButtonTap',
  874. 'subscribePush',
  875. 'unsubscribePush',
  876. 'onPush',
  877. 'offPush',
  878. 'share'];
  879. function createTodoApi(name) {
  880. return function todoApi(_ref)
  881. {var fail = _ref.fail,complete = _ref.complete;
  882. var res = {
  883. errMsg: "".concat(name, ":fail method '").concat(name, "' not supported") };
  884. isFn(fail) && fail(res);
  885. isFn(complete) && complete(res);
  886. };
  887. }
  888. TODOS.forEach(function (name) {
  889. todoApis[name] = createTodoApi(name);
  890. });
  891. var providers = {
  892. oauth: ['weixin'],
  893. share: ['weixin'],
  894. payment: ['wxpay'],
  895. push: ['weixin'] };
  896. function getProvider(_ref2)
  897. {var service = _ref2.service,success = _ref2.success,fail = _ref2.fail,complete = _ref2.complete;
  898. var res = false;
  899. if (providers[service]) {
  900. res = {
  901. errMsg: 'getProvider:ok',
  902. service: service,
  903. provider: providers[service] };
  904. isFn(success) && success(res);
  905. } else {
  906. res = {
  907. errMsg: 'getProvider:fail service not found' };
  908. isFn(fail) && fail(res);
  909. }
  910. isFn(complete) && complete(res);
  911. }
  912. var extraApi = /*#__PURE__*/Object.freeze({
  913. __proto__: null,
  914. getProvider: getProvider });
  915. var getEmitter = function () {
  916. var Emitter;
  917. return function getUniEmitter() {
  918. if (!Emitter) {
  919. Emitter = new _vue.default();
  920. }
  921. return Emitter;
  922. };
  923. }();
  924. function apply(ctx, method, args) {
  925. return ctx[method].apply(ctx, args);
  926. }
  927. function $on() {
  928. return apply(getEmitter(), '$on', Array.prototype.slice.call(arguments));
  929. }
  930. function $off() {
  931. return apply(getEmitter(), '$off', Array.prototype.slice.call(arguments));
  932. }
  933. function $once() {
  934. return apply(getEmitter(), '$once', Array.prototype.slice.call(arguments));
  935. }
  936. function $emit() {
  937. return apply(getEmitter(), '$emit', Array.prototype.slice.call(arguments));
  938. }
  939. var eventApi = /*#__PURE__*/Object.freeze({
  940. __proto__: null,
  941. $on: $on,
  942. $off: $off,
  943. $once: $once,
  944. $emit: $emit });
  945. /**
  946. * 框架内 try-catch
  947. */
  948. /**
  949. * 开发者 try-catch
  950. */
  951. function tryCatch(fn) {
  952. return function () {
  953. try {
  954. return fn.apply(fn, arguments);
  955. } catch (e) {
  956. // TODO
  957. console.error(e);
  958. }
  959. };
  960. }
  961. function getApiCallbacks(params) {
  962. var apiCallbacks = {};
  963. for (var name in params) {
  964. var param = params[name];
  965. if (isFn(param)) {
  966. apiCallbacks[name] = tryCatch(param);
  967. delete params[name];
  968. }
  969. }
  970. return apiCallbacks;
  971. }
  972. var cid;
  973. var cidErrMsg;
  974. var enabled;
  975. function normalizePushMessage(message) {
  976. try {
  977. return JSON.parse(message);
  978. } catch (e) {}
  979. return message;
  980. }
  981. function invokePushCallback(
  982. args)
  983. {
  984. if (args.type === 'enabled') {
  985. enabled = true;
  986. } else if (args.type === 'clientId') {
  987. cid = args.cid;
  988. cidErrMsg = args.errMsg;
  989. invokeGetPushCidCallbacks(cid, args.errMsg);
  990. } else if (args.type === 'pushMsg') {
  991. var message = {
  992. type: 'receive',
  993. data: normalizePushMessage(args.message) };
  994. for (var i = 0; i < onPushMessageCallbacks.length; i++) {
  995. var callback = onPushMessageCallbacks[i];
  996. callback(message);
  997. // 该消息已被阻止
  998. if (message.stopped) {
  999. break;
  1000. }
  1001. }
  1002. } else if (args.type === 'click') {
  1003. onPushMessageCallbacks.forEach(function (callback) {
  1004. callback({
  1005. type: 'click',
  1006. data: normalizePushMessage(args.message) });
  1007. });
  1008. }
  1009. }
  1010. var getPushCidCallbacks = [];
  1011. function invokeGetPushCidCallbacks(cid, errMsg) {
  1012. getPushCidCallbacks.forEach(function (callback) {
  1013. callback(cid, errMsg);
  1014. });
  1015. getPushCidCallbacks.length = 0;
  1016. }
  1017. function getPushClientId(args) {
  1018. if (!isPlainObject(args)) {
  1019. args = {};
  1020. }var _getApiCallbacks =
  1021. getApiCallbacks(args),success = _getApiCallbacks.success,fail = _getApiCallbacks.fail,complete = _getApiCallbacks.complete;
  1022. var hasSuccess = isFn(success);
  1023. var hasFail = isFn(fail);
  1024. var hasComplete = isFn(complete);
  1025. Promise.resolve().then(function () {
  1026. if (typeof enabled === 'undefined') {
  1027. enabled = false;
  1028. cid = '';
  1029. cidErrMsg = 'uniPush is not enabled';
  1030. }
  1031. getPushCidCallbacks.push(function (cid, errMsg) {
  1032. var res;
  1033. if (cid) {
  1034. res = {
  1035. errMsg: 'getPushClientId:ok',
  1036. cid: cid };
  1037. hasSuccess && success(res);
  1038. } else {
  1039. res = {
  1040. errMsg: 'getPushClientId:fail' + (errMsg ? ' ' + errMsg : '') };
  1041. hasFail && fail(res);
  1042. }
  1043. hasComplete && complete(res);
  1044. });
  1045. if (typeof cid !== 'undefined') {
  1046. invokeGetPushCidCallbacks(cid, cidErrMsg);
  1047. }
  1048. });
  1049. }
  1050. var onPushMessageCallbacks = [];
  1051. // 不使用 defineOnApi 实现,是因为 defineOnApi 依赖 UniServiceJSBridge ,该对象目前在小程序上未提供,故简单实现
  1052. var onPushMessage = function onPushMessage(fn) {
  1053. if (onPushMessageCallbacks.indexOf(fn) === -1) {
  1054. onPushMessageCallbacks.push(fn);
  1055. }
  1056. };
  1057. var offPushMessage = function offPushMessage(fn) {
  1058. if (!fn) {
  1059. onPushMessageCallbacks.length = 0;
  1060. } else {
  1061. var index = onPushMessageCallbacks.indexOf(fn);
  1062. if (index > -1) {
  1063. onPushMessageCallbacks.splice(index, 1);
  1064. }
  1065. }
  1066. };
  1067. var api = /*#__PURE__*/Object.freeze({
  1068. __proto__: null,
  1069. getPushClientId: getPushClientId,
  1070. onPushMessage: onPushMessage,
  1071. offPushMessage: offPushMessage,
  1072. invokePushCallback: invokePushCallback });
  1073. var MPPage = Page;
  1074. var MPComponent = Component;
  1075. var customizeRE = /:/g;
  1076. var customize = cached(function (str) {
  1077. return camelize(str.replace(customizeRE, '-'));
  1078. });
  1079. function initTriggerEvent(mpInstance) {
  1080. var oldTriggerEvent = mpInstance.triggerEvent;
  1081. var newTriggerEvent = function newTriggerEvent(event) {for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {args[_key3 - 1] = arguments[_key3];}
  1082. // 事件名统一转驼峰格式,仅处理:当前组件为 vue 组件、当前组件为 vue 组件子组件
  1083. if (this.$vm || this.dataset && this.dataset.comType) {
  1084. event = customize(event);
  1085. } else {
  1086. // 针对微信/QQ小程序单独补充驼峰格式事件,以兼容历史项目
  1087. var newEvent = customize(event);
  1088. if (newEvent !== event) {
  1089. oldTriggerEvent.apply(this, [newEvent].concat(args));
  1090. }
  1091. }
  1092. return oldTriggerEvent.apply(this, [event].concat(args));
  1093. };
  1094. try {
  1095. // 京东小程序 triggerEvent 为只读
  1096. mpInstance.triggerEvent = newTriggerEvent;
  1097. } catch (error) {
  1098. mpInstance._triggerEvent = newTriggerEvent;
  1099. }
  1100. }
  1101. function initHook(name, options, isComponent) {
  1102. var oldHook = options[name];
  1103. if (!oldHook) {
  1104. options[name] = function () {
  1105. initTriggerEvent(this);
  1106. };
  1107. } else {
  1108. options[name] = function () {
  1109. initTriggerEvent(this);for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {args[_key4] = arguments[_key4];}
  1110. return oldHook.apply(this, args);
  1111. };
  1112. }
  1113. }
  1114. if (!MPPage.__$wrappered) {
  1115. MPPage.__$wrappered = true;
  1116. Page = function Page() {var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  1117. initHook('onLoad', options);
  1118. return MPPage(options);
  1119. };
  1120. Page.after = MPPage.after;
  1121. Component = function Component() {var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  1122. initHook('created', options);
  1123. return MPComponent(options);
  1124. };
  1125. }
  1126. var PAGE_EVENT_HOOKS = [
  1127. 'onPullDownRefresh',
  1128. 'onReachBottom',
  1129. 'onAddToFavorites',
  1130. 'onShareTimeline',
  1131. 'onShareAppMessage',
  1132. 'onPageScroll',
  1133. 'onResize',
  1134. 'onTabItemTap'];
  1135. function initMocks(vm, mocks) {
  1136. var mpInstance = vm.$mp[vm.mpType];
  1137. mocks.forEach(function (mock) {
  1138. if (hasOwn(mpInstance, mock)) {
  1139. vm[mock] = mpInstance[mock];
  1140. }
  1141. });
  1142. }
  1143. function hasHook(hook, vueOptions) {
  1144. if (!vueOptions) {
  1145. return true;
  1146. }
  1147. if (_vue.default.options && Array.isArray(_vue.default.options[hook])) {
  1148. return true;
  1149. }
  1150. vueOptions = vueOptions.default || vueOptions;
  1151. if (isFn(vueOptions)) {
  1152. if (isFn(vueOptions.extendOptions[hook])) {
  1153. return true;
  1154. }
  1155. if (vueOptions.super &&
  1156. vueOptions.super.options &&
  1157. Array.isArray(vueOptions.super.options[hook])) {
  1158. return true;
  1159. }
  1160. return false;
  1161. }
  1162. if (isFn(vueOptions[hook])) {
  1163. return true;
  1164. }
  1165. var mixins = vueOptions.mixins;
  1166. if (Array.isArray(mixins)) {
  1167. return !!mixins.find(function (mixin) {return hasHook(hook, mixin);});
  1168. }
  1169. }
  1170. function initHooks(mpOptions, hooks, vueOptions) {
  1171. hooks.forEach(function (hook) {
  1172. if (hasHook(hook, vueOptions)) {
  1173. mpOptions[hook] = function (args) {
  1174. return this.$vm && this.$vm.__call_hook(hook, args);
  1175. };
  1176. }
  1177. });
  1178. }
  1179. function initUnknownHooks(mpOptions, vueOptions) {var excludes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
  1180. findHooks(vueOptions).forEach(function (hook) {return initHook$1(mpOptions, hook, excludes);});
  1181. }
  1182. function findHooks(vueOptions) {var hooks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
  1183. if (vueOptions) {
  1184. Object.keys(vueOptions).forEach(function (name) {
  1185. if (name.indexOf('on') === 0 && isFn(vueOptions[name])) {
  1186. hooks.push(name);
  1187. }
  1188. });
  1189. }
  1190. return hooks;
  1191. }
  1192. function initHook$1(mpOptions, hook, excludes) {
  1193. if (excludes.indexOf(hook) === -1 && !hasOwn(mpOptions, hook)) {
  1194. mpOptions[hook] = function (args) {
  1195. return this.$vm && this.$vm.__call_hook(hook, args);
  1196. };
  1197. }
  1198. }
  1199. function initVueComponent(Vue, vueOptions) {
  1200. vueOptions = vueOptions.default || vueOptions;
  1201. var VueComponent;
  1202. if (isFn(vueOptions)) {
  1203. VueComponent = vueOptions;
  1204. } else {
  1205. VueComponent = Vue.extend(vueOptions);
  1206. }
  1207. vueOptions = VueComponent.options;
  1208. return [VueComponent, vueOptions];
  1209. }
  1210. function initSlots(vm, vueSlots) {
  1211. if (Array.isArray(vueSlots) && vueSlots.length) {
  1212. var $slots = Object.create(null);
  1213. vueSlots.forEach(function (slotName) {
  1214. $slots[slotName] = true;
  1215. });
  1216. vm.$scopedSlots = vm.$slots = $slots;
  1217. }
  1218. }
  1219. function initVueIds(vueIds, mpInstance) {
  1220. vueIds = (vueIds || '').split(',');
  1221. var len = vueIds.length;
  1222. if (len === 1) {
  1223. mpInstance._$vueId = vueIds[0];
  1224. } else if (len === 2) {
  1225. mpInstance._$vueId = vueIds[0];
  1226. mpInstance._$vuePid = vueIds[1];
  1227. }
  1228. }
  1229. function initData(vueOptions, context) {
  1230. var data = vueOptions.data || {};
  1231. var methods = vueOptions.methods || {};
  1232. if (typeof data === 'function') {
  1233. try {
  1234. data = data.call(context); // 支持 Vue.prototype 上挂的数据
  1235. } catch (e) {
  1236. if (Object({"VUE_APP_NAME":"CRMEB客户管理电商商城系统前端模板uni-app版","VUE_APP_PLATFORM":"mp-weixin","NODE_ENV":"development","BASE_URL":"/"}).VUE_APP_DEBUG) {
  1237. console.warn('根据 Vue 的 data 函数初始化小程序 data 失败,请尽量确保 data 函数中不访问 vm 对象,否则可能影响首次数据渲染速度。', data);
  1238. }
  1239. }
  1240. } else {
  1241. try {
  1242. // 对 data 格式化
  1243. data = JSON.parse(JSON.stringify(data));
  1244. } catch (e) {}
  1245. }
  1246. if (!isPlainObject(data)) {
  1247. data = {};
  1248. }
  1249. Object.keys(methods).forEach(function (methodName) {
  1250. if (context.__lifecycle_hooks__.indexOf(methodName) === -1 && !hasOwn(data, methodName)) {
  1251. data[methodName] = methods[methodName];
  1252. }
  1253. });
  1254. return data;
  1255. }
  1256. var PROP_TYPES = [String, Number, Boolean, Object, Array, null];
  1257. function createObserver(name) {
  1258. return function observer(newVal, oldVal) {
  1259. if (this.$vm) {
  1260. this.$vm[name] = newVal; // 为了触发其他非 render watcher
  1261. }
  1262. };
  1263. }
  1264. function initBehaviors(vueOptions, initBehavior) {
  1265. var vueBehaviors = vueOptions.behaviors;
  1266. var vueExtends = vueOptions.extends;
  1267. var vueMixins = vueOptions.mixins;
  1268. var vueProps = vueOptions.props;
  1269. if (!vueProps) {
  1270. vueOptions.props = vueProps = [];
  1271. }
  1272. var behaviors = [];
  1273. if (Array.isArray(vueBehaviors)) {
  1274. vueBehaviors.forEach(function (behavior) {
  1275. behaviors.push(behavior.replace('uni://', "wx".concat("://")));
  1276. if (behavior === 'uni://form-field') {
  1277. if (Array.isArray(vueProps)) {
  1278. vueProps.push('name');
  1279. vueProps.push('value');
  1280. } else {
  1281. vueProps.name = {
  1282. type: String,
  1283. default: '' };
  1284. vueProps.value = {
  1285. type: [String, Number, Boolean, Array, Object, Date],
  1286. default: '' };
  1287. }
  1288. }
  1289. });
  1290. }
  1291. if (isPlainObject(vueExtends) && vueExtends.props) {
  1292. behaviors.push(
  1293. initBehavior({
  1294. properties: initProperties(vueExtends.props, true) }));
  1295. }
  1296. if (Array.isArray(vueMixins)) {
  1297. vueMixins.forEach(function (vueMixin) {
  1298. if (isPlainObject(vueMixin) && vueMixin.props) {
  1299. behaviors.push(
  1300. initBehavior({
  1301. properties: initProperties(vueMixin.props, true) }));
  1302. }
  1303. });
  1304. }
  1305. return behaviors;
  1306. }
  1307. function parsePropType(key, type, defaultValue, file) {
  1308. // [String]=>String
  1309. if (Array.isArray(type) && type.length === 1) {
  1310. return type[0];
  1311. }
  1312. return type;
  1313. }
  1314. function initProperties(props) {var isBehavior = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;var file = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';var options = arguments.length > 3 ? arguments[3] : undefined;
  1315. var properties = {};
  1316. if (!isBehavior) {
  1317. properties.vueId = {
  1318. type: String,
  1319. value: '' };
  1320. {
  1321. if (options.virtualHost) {
  1322. properties.virtualHostStyle = {
  1323. type: null,
  1324. value: '' };
  1325. properties.virtualHostClass = {
  1326. type: null,
  1327. value: '' };
  1328. }
  1329. }
  1330. // scopedSlotsCompiler auto
  1331. properties.scopedSlotsCompiler = {
  1332. type: String,
  1333. value: '' };
  1334. properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots
  1335. type: null,
  1336. value: [],
  1337. observer: function observer(newVal, oldVal) {
  1338. var $slots = Object.create(null);
  1339. newVal.forEach(function (slotName) {
  1340. $slots[slotName] = true;
  1341. });
  1342. this.setData({
  1343. $slots: $slots });
  1344. } };
  1345. }
  1346. if (Array.isArray(props)) {// ['title']
  1347. props.forEach(function (key) {
  1348. properties[key] = {
  1349. type: null,
  1350. observer: createObserver(key) };
  1351. });
  1352. } else if (isPlainObject(props)) {// {title:{type:String,default:''},content:String}
  1353. Object.keys(props).forEach(function (key) {
  1354. var opts = props[key];
  1355. if (isPlainObject(opts)) {// title:{type:String,default:''}
  1356. var value = opts.default;
  1357. if (isFn(value)) {
  1358. value = value();
  1359. }
  1360. opts.type = parsePropType(key, opts.type);
  1361. properties[key] = {
  1362. type: PROP_TYPES.indexOf(opts.type) !== -1 ? opts.type : null,
  1363. value: value,
  1364. observer: createObserver(key) };
  1365. } else {// content:String
  1366. var type = parsePropType(key, opts);
  1367. properties[key] = {
  1368. type: PROP_TYPES.indexOf(type) !== -1 ? type : null,
  1369. observer: createObserver(key) };
  1370. }
  1371. });
  1372. }
  1373. return properties;
  1374. }
  1375. function wrapper$1(event) {
  1376. // TODO 又得兼容 mpvue 的 mp 对象
  1377. try {
  1378. event.mp = JSON.parse(JSON.stringify(event));
  1379. } catch (e) {}
  1380. event.stopPropagation = noop;
  1381. event.preventDefault = noop;
  1382. event.target = event.target || {};
  1383. if (!hasOwn(event, 'detail')) {
  1384. event.detail = {};
  1385. }
  1386. if (hasOwn(event, 'markerId')) {
  1387. event.detail = typeof event.detail === 'object' ? event.detail : {};
  1388. event.detail.markerId = event.markerId;
  1389. }
  1390. if (isPlainObject(event.detail)) {
  1391. event.target = Object.assign({}, event.target, event.detail);
  1392. }
  1393. return event;
  1394. }
  1395. function getExtraValue(vm, dataPathsArray) {
  1396. var context = vm;
  1397. dataPathsArray.forEach(function (dataPathArray) {
  1398. var dataPath = dataPathArray[0];
  1399. var value = dataPathArray[2];
  1400. if (dataPath || typeof value !== 'undefined') {// ['','',index,'disable']
  1401. var propPath = dataPathArray[1];
  1402. var valuePath = dataPathArray[3];
  1403. var vFor;
  1404. if (Number.isInteger(dataPath)) {
  1405. vFor = dataPath;
  1406. } else if (!dataPath) {
  1407. vFor = context;
  1408. } else if (typeof dataPath === 'string' && dataPath) {
  1409. if (dataPath.indexOf('#s#') === 0) {
  1410. vFor = dataPath.substr(3);
  1411. } else {
  1412. vFor = vm.__get_value(dataPath, context);
  1413. }
  1414. }
  1415. if (Number.isInteger(vFor)) {
  1416. context = value;
  1417. } else if (!propPath) {
  1418. context = vFor[value];
  1419. } else {
  1420. if (Array.isArray(vFor)) {
  1421. context = vFor.find(function (vForItem) {
  1422. return vm.__get_value(propPath, vForItem) === value;
  1423. });
  1424. } else if (isPlainObject(vFor)) {
  1425. context = Object.keys(vFor).find(function (vForKey) {
  1426. return vm.__get_value(propPath, vFor[vForKey]) === value;
  1427. });
  1428. } else {
  1429. console.error('v-for 暂不支持循环数据:', vFor);
  1430. }
  1431. }
  1432. if (valuePath) {
  1433. context = vm.__get_value(valuePath, context);
  1434. }
  1435. }
  1436. });
  1437. return context;
  1438. }
  1439. function processEventExtra(vm, extra, event, __args__) {
  1440. var extraObj = {};
  1441. if (Array.isArray(extra) && extra.length) {
  1442. /**
  1443. *[
  1444. * ['data.items', 'data.id', item.data.id],
  1445. * ['metas', 'id', meta.id]
  1446. *],
  1447. *[
  1448. * ['data.items', 'data.id', item.data.id],
  1449. * ['metas', 'id', meta.id]
  1450. *],
  1451. *'test'
  1452. */
  1453. extra.forEach(function (dataPath, index) {
  1454. if (typeof dataPath === 'string') {
  1455. if (!dataPath) {// model,prop.sync
  1456. extraObj['$' + index] = vm;
  1457. } else {
  1458. if (dataPath === '$event') {// $event
  1459. extraObj['$' + index] = event;
  1460. } else if (dataPath === 'arguments') {
  1461. extraObj['$' + index] = event.detail ? event.detail.__args__ || __args__ : __args__;
  1462. } else if (dataPath.indexOf('$event.') === 0) {// $event.target.value
  1463. extraObj['$' + index] = vm.__get_value(dataPath.replace('$event.', ''), event);
  1464. } else {
  1465. extraObj['$' + index] = vm.__get_value(dataPath);
  1466. }
  1467. }
  1468. } else {
  1469. extraObj['$' + index] = getExtraValue(vm, dataPath);
  1470. }
  1471. });
  1472. }
  1473. return extraObj;
  1474. }
  1475. function getObjByArray(arr) {
  1476. var obj = {};
  1477. for (var i = 1; i < arr.length; i++) {
  1478. var element = arr[i];
  1479. obj[element[0]] = element[1];
  1480. }
  1481. return obj;
  1482. }
  1483. function processEventArgs(vm, event) {var args = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];var extra = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];var isCustom = arguments.length > 4 ? arguments[4] : undefined;var methodName = arguments.length > 5 ? arguments[5] : undefined;
  1484. var isCustomMPEvent = false; // wxcomponent 组件,传递原始 event 对象
  1485. // fixed 用户直接触发 mpInstance.triggerEvent
  1486. var __args__ = isPlainObject(event.detail) ?
  1487. event.detail.__args__ || [event.detail] :
  1488. [event.detail];
  1489. if (isCustom) {// 自定义事件
  1490. isCustomMPEvent = event.currentTarget &&
  1491. event.currentTarget.dataset &&
  1492. event.currentTarget.dataset.comType === 'wx';
  1493. if (!args.length) {// 无参数,直接传入 event 或 detail 数组
  1494. if (isCustomMPEvent) {
  1495. return [event];
  1496. }
  1497. return __args__;
  1498. }
  1499. }
  1500. var extraObj = processEventExtra(vm, extra, event, __args__);
  1501. var ret = [];
  1502. args.forEach(function (arg) {
  1503. if (arg === '$event') {
  1504. if (methodName === '__set_model' && !isCustom) {// input v-model value
  1505. ret.push(event.target.value);
  1506. } else {
  1507. if (isCustom && !isCustomMPEvent) {
  1508. ret.push(__args__[0]);
  1509. } else {// wxcomponent 组件或内置组件
  1510. ret.push(event);
  1511. }
  1512. }
  1513. } else {
  1514. if (Array.isArray(arg) && arg[0] === 'o') {
  1515. ret.push(getObjByArray(arg));
  1516. } else if (typeof arg === 'string' && hasOwn(extraObj, arg)) {
  1517. ret.push(extraObj[arg]);
  1518. } else {
  1519. ret.push(arg);
  1520. }
  1521. }
  1522. });
  1523. return ret;
  1524. }
  1525. var ONCE = '~';
  1526. var CUSTOM = '^';
  1527. function isMatchEventType(eventType, optType) {
  1528. return eventType === optType ||
  1529. optType === 'regionchange' && (
  1530. eventType === 'begin' ||
  1531. eventType === 'end');
  1532. }
  1533. function getContextVm(vm) {
  1534. var $parent = vm.$parent;
  1535. // 父组件是 scoped slots 或者其他自定义组件时继续查找
  1536. while ($parent && $parent.$parent && ($parent.$options.generic || $parent.$parent.$options.generic || $parent.$scope._$vuePid)) {
  1537. $parent = $parent.$parent;
  1538. }
  1539. return $parent && $parent.$parent;
  1540. }
  1541. function handleEvent(event) {var _this2 = this;
  1542. event = wrapper$1(event);
  1543. // [['tap',[['handle',[1,2,a]],['handle1',[1,2,a]]]]]
  1544. var dataset = (event.currentTarget || event.target).dataset;
  1545. if (!dataset) {
  1546. return console.warn('事件信息不存在');
  1547. }
  1548. var eventOpts = dataset.eventOpts || dataset['event-opts']; // 支付宝 web-view 组件 dataset 非驼峰
  1549. if (!eventOpts) {
  1550. return console.warn('事件信息不存在');
  1551. }
  1552. // [['handle',[1,2,a]],['handle1',[1,2,a]]]
  1553. var eventType = event.type;
  1554. var ret = [];
  1555. eventOpts.forEach(function (eventOpt) {
  1556. var type = eventOpt[0];
  1557. var eventsArray = eventOpt[1];
  1558. var isCustom = type.charAt(0) === CUSTOM;
  1559. type = isCustom ? type.slice(1) : type;
  1560. var isOnce = type.charAt(0) === ONCE;
  1561. type = isOnce ? type.slice(1) : type;
  1562. if (eventsArray && isMatchEventType(eventType, type)) {
  1563. eventsArray.forEach(function (eventArray) {
  1564. var methodName = eventArray[0];
  1565. if (methodName) {
  1566. var handlerCtx = _this2.$vm;
  1567. if (handlerCtx.$options.generic) {// mp-weixin,mp-toutiao 抽象节点模拟 scoped slots
  1568. handlerCtx = getContextVm(handlerCtx) || handlerCtx;
  1569. }
  1570. if (methodName === '$emit') {
  1571. handlerCtx.$emit.apply(handlerCtx,
  1572. processEventArgs(
  1573. _this2.$vm,
  1574. event,
  1575. eventArray[1],
  1576. eventArray[2],
  1577. isCustom,
  1578. methodName));
  1579. return;
  1580. }
  1581. var handler = handlerCtx[methodName];
  1582. if (!isFn(handler)) {
  1583. var _type = _this2.$vm.mpType === 'page' ? 'Page' : 'Component';
  1584. var path = _this2.route || _this2.is;
  1585. throw new Error("".concat(_type, " \"").concat(path, "\" does not have a method \"").concat(methodName, "\""));
  1586. }
  1587. if (isOnce) {
  1588. if (handler.once) {
  1589. return;
  1590. }
  1591. handler.once = true;
  1592. }
  1593. var params = processEventArgs(
  1594. _this2.$vm,
  1595. event,
  1596. eventArray[1],
  1597. eventArray[2],
  1598. isCustom,
  1599. methodName);
  1600. params = Array.isArray(params) ? params : [];
  1601. // 参数尾部增加原始事件对象用于复杂表达式内获取额外数据
  1602. if (/=\s*\S+\.eventParams\s*\|\|\s*\S+\[['"]event-params['"]\]/.test(handler.toString())) {
  1603. // eslint-disable-next-line no-sparse-arrays
  1604. params = params.concat([,,,,,,,,,, event]);
  1605. }
  1606. ret.push(handler.apply(handlerCtx, params));
  1607. }
  1608. });
  1609. }
  1610. });
  1611. if (
  1612. eventType === 'input' &&
  1613. ret.length === 1 &&
  1614. typeof ret[0] !== 'undefined')
  1615. {
  1616. return ret[0];
  1617. }
  1618. }
  1619. var eventChannels = {};
  1620. var eventChannelStack = [];
  1621. function getEventChannel(id) {
  1622. if (id) {
  1623. var eventChannel = eventChannels[id];
  1624. delete eventChannels[id];
  1625. return eventChannel;
  1626. }
  1627. return eventChannelStack.shift();
  1628. }
  1629. var hooks = [
  1630. 'onShow',
  1631. 'onHide',
  1632. 'onError',
  1633. 'onPageNotFound',
  1634. 'onThemeChange',
  1635. 'onUnhandledRejection'];
  1636. function initEventChannel() {
  1637. _vue.default.prototype.getOpenerEventChannel = function () {
  1638. // 微信小程序使用自身getOpenerEventChannel
  1639. {
  1640. return this.$scope.getOpenerEventChannel();
  1641. }
  1642. };
  1643. var callHook = _vue.default.prototype.__call_hook;
  1644. _vue.default.prototype.__call_hook = function (hook, args) {
  1645. if (hook === 'onLoad' && args && args.__id__) {
  1646. this.__eventChannel__ = getEventChannel(args.__id__);
  1647. delete args.__id__;
  1648. }
  1649. return callHook.call(this, hook, args);
  1650. };
  1651. }
  1652. function initScopedSlotsParams() {
  1653. var center = {};
  1654. var parents = {};
  1655. _vue.default.prototype.$hasScopedSlotsParams = function (vueId) {
  1656. var has = center[vueId];
  1657. if (!has) {
  1658. parents[vueId] = this;
  1659. this.$on('hook:destroyed', function () {
  1660. delete parents[vueId];
  1661. });
  1662. }
  1663. return has;
  1664. };
  1665. _vue.default.prototype.$getScopedSlotsParams = function (vueId, name, key) {
  1666. var data = center[vueId];
  1667. if (data) {
  1668. var object = data[name] || {};
  1669. return key ? object[key] : object;
  1670. } else {
  1671. parents[vueId] = this;
  1672. this.$on('hook:destroyed', function () {
  1673. delete parents[vueId];
  1674. });
  1675. }
  1676. };
  1677. _vue.default.prototype.$setScopedSlotsParams = function (name, value) {
  1678. var vueIds = this.$options.propsData.vueId;
  1679. if (vueIds) {
  1680. var vueId = vueIds.split(',')[0];
  1681. var object = center[vueId] = center[vueId] || {};
  1682. object[name] = value;
  1683. if (parents[vueId]) {
  1684. parents[vueId].$forceUpdate();
  1685. }
  1686. }
  1687. };
  1688. _vue.default.mixin({
  1689. destroyed: function destroyed() {
  1690. var propsData = this.$options.propsData;
  1691. var vueId = propsData && propsData.vueId;
  1692. if (vueId) {
  1693. delete center[vueId];
  1694. delete parents[vueId];
  1695. }
  1696. } });
  1697. }
  1698. function parseBaseApp(vm, _ref3)
  1699. {var mocks = _ref3.mocks,initRefs = _ref3.initRefs;
  1700. initEventChannel();
  1701. {
  1702. initScopedSlotsParams();
  1703. }
  1704. if (vm.$options.store) {
  1705. _vue.default.prototype.$store = vm.$options.store;
  1706. }
  1707. uniIdMixin(_vue.default);
  1708. _vue.default.prototype.mpHost = "mp-weixin";
  1709. _vue.default.mixin({
  1710. beforeCreate: function beforeCreate() {
  1711. if (!this.$options.mpType) {
  1712. return;
  1713. }
  1714. this.mpType = this.$options.mpType;
  1715. this.$mp = _defineProperty({
  1716. data: {} },
  1717. this.mpType, this.$options.mpInstance);
  1718. this.$scope = this.$options.mpInstance;
  1719. delete this.$options.mpType;
  1720. delete this.$options.mpInstance;
  1721. if (this.mpType === 'page' && typeof getApp === 'function') {// hack vue-i18n
  1722. var app = getApp();
  1723. if (app.$vm && app.$vm.$i18n) {
  1724. this._i18n = app.$vm.$i18n;
  1725. }
  1726. }
  1727. if (this.mpType !== 'app') {
  1728. initRefs(this);
  1729. initMocks(this, mocks);
  1730. }
  1731. } });
  1732. var appOptions = {
  1733. onLaunch: function onLaunch(args) {
  1734. if (this.$vm) {// 已经初始化过了,主要是为了百度,百度 onShow 在 onLaunch 之前
  1735. return;
  1736. }
  1737. {
  1738. if (wx.canIUse && !wx.canIUse('nextTick')) {// 事实 上2.2.3 即可,简单使用 2.3.0 的 nextTick 判断
  1739. console.error('当前微信基础库版本过低,请将 微信开发者工具-详情-项目设置-调试基础库版本 更换为`2.3.0`以上');
  1740. }
  1741. }
  1742. this.$vm = vm;
  1743. this.$vm.$mp = {
  1744. app: this };
  1745. this.$vm.$scope = this;
  1746. // vm 上也挂载 globalData
  1747. this.$vm.globalData = this.globalData;
  1748. this.$vm._isMounted = true;
  1749. this.$vm.__call_hook('mounted', args);
  1750. this.$vm.__call_hook('onLaunch', args);
  1751. } };
  1752. // 兼容旧版本 globalData
  1753. appOptions.globalData = vm.$options.globalData || {};
  1754. // 将 methods 中的方法挂在 getApp() 中
  1755. var methods = vm.$options.methods;
  1756. if (methods) {
  1757. Object.keys(methods).forEach(function (name) {
  1758. appOptions[name] = methods[name];
  1759. });
  1760. }
  1761. initAppLocale(_vue.default, vm, normalizeLocale(wx.getSystemInfoSync().language) || LOCALE_EN);
  1762. initHooks(appOptions, hooks);
  1763. initUnknownHooks(appOptions, vm.$options);
  1764. return appOptions;
  1765. }
  1766. var mocks = ['__route__', '__wxExparserNodeId__', '__wxWebviewId__'];
  1767. function findVmByVueId(vm, vuePid) {
  1768. var $children = vm.$children;
  1769. // 优先查找直属(反向查找:https://github.com/dcloudio/uni-app/issues/1200)
  1770. for (var i = $children.length - 1; i >= 0; i--) {
  1771. var childVm = $children[i];
  1772. if (childVm.$scope._$vueId === vuePid) {
  1773. return childVm;
  1774. }
  1775. }
  1776. // 反向递归查找
  1777. var parentVm;
  1778. for (var _i = $children.length - 1; _i >= 0; _i--) {
  1779. parentVm = findVmByVueId($children[_i], vuePid);
  1780. if (parentVm) {
  1781. return parentVm;
  1782. }
  1783. }
  1784. }
  1785. function initBehavior(options) {
  1786. return Behavior(options);
  1787. }
  1788. function isPage() {
  1789. return !!this.route;
  1790. }
  1791. function initRelation(detail) {
  1792. this.triggerEvent('__l', detail);
  1793. }
  1794. function selectAllComponents(mpInstance, selector, $refs) {
  1795. var components = mpInstance.selectAllComponents(selector);
  1796. components.forEach(function (component) {
  1797. var ref = component.dataset.ref;
  1798. $refs[ref] = component.$vm || component;
  1799. {
  1800. if (component.dataset.vueGeneric === 'scoped') {
  1801. component.selectAllComponents('.scoped-ref').forEach(function (scopedComponent) {
  1802. selectAllComponents(scopedComponent, selector, $refs);
  1803. });
  1804. }
  1805. }
  1806. });
  1807. }
  1808. function initRefs(vm) {
  1809. var mpInstance = vm.$scope;
  1810. Object.defineProperty(vm, '$refs', {
  1811. get: function get() {
  1812. var $refs = {};
  1813. selectAllComponents(mpInstance, '.vue-ref', $refs);
  1814. // TODO 暂不考虑 for 中的 scoped
  1815. var forComponents = mpInstance.selectAllComponents('.vue-ref-in-for');
  1816. forComponents.forEach(function (component) {
  1817. var ref = component.dataset.ref;
  1818. if (!$refs[ref]) {
  1819. $refs[ref] = [];
  1820. }
  1821. $refs[ref].push(component.$vm || component);
  1822. });
  1823. return $refs;
  1824. } });
  1825. }
  1826. function handleLink(event) {var _ref4 =
  1827. event.detail || event.value,vuePid = _ref4.vuePid,vueOptions = _ref4.vueOptions; // detail 是微信,value 是百度(dipatch)
  1828. var parentVm;
  1829. if (vuePid) {
  1830. parentVm = findVmByVueId(this.$vm, vuePid);
  1831. }
  1832. if (!parentVm) {
  1833. parentVm = this.$vm;
  1834. }
  1835. vueOptions.parent = parentVm;
  1836. }
  1837. function parseApp(vm) {
  1838. return parseBaseApp(vm, {
  1839. mocks: mocks,
  1840. initRefs: initRefs });
  1841. }
  1842. function createApp(vm) {
  1843. App(parseApp(vm));
  1844. return vm;
  1845. }
  1846. var encodeReserveRE = /[!'()*]/g;
  1847. var encodeReserveReplacer = function encodeReserveReplacer(c) {return '%' + c.charCodeAt(0).toString(16);};
  1848. var commaRE = /%2C/g;
  1849. // fixed encodeURIComponent which is more conformant to RFC3986:
  1850. // - escapes [!'()*]
  1851. // - preserve commas
  1852. var encode = function encode(str) {return encodeURIComponent(str).
  1853. replace(encodeReserveRE, encodeReserveReplacer).
  1854. replace(commaRE, ',');};
  1855. function stringifyQuery(obj) {var encodeStr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : encode;
  1856. var res = obj ? Object.keys(obj).map(function (key) {
  1857. var val = obj[key];
  1858. if (val === undefined) {
  1859. return '';
  1860. }
  1861. if (val === null) {
  1862. return encodeStr(key);
  1863. }
  1864. if (Array.isArray(val)) {
  1865. var result = [];
  1866. val.forEach(function (val2) {
  1867. if (val2 === undefined) {
  1868. return;
  1869. }
  1870. if (val2 === null) {
  1871. result.push(encodeStr(key));
  1872. } else {
  1873. result.push(encodeStr(key) + '=' + encodeStr(val2));
  1874. }
  1875. });
  1876. return result.join('&');
  1877. }
  1878. return encodeStr(key) + '=' + encodeStr(val);
  1879. }).filter(function (x) {return x.length > 0;}).join('&') : null;
  1880. return res ? "?".concat(res) : '';
  1881. }
  1882. function parseBaseComponent(vueComponentOptions)
  1883. {var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},isPage = _ref5.isPage,initRelation = _ref5.initRelation;var _initVueComponent =
  1884. initVueComponent(_vue.default, vueComponentOptions),_initVueComponent2 = _slicedToArray(_initVueComponent, 2),VueComponent = _initVueComponent2[0],vueOptions = _initVueComponent2[1];
  1885. var options = _objectSpread({
  1886. multipleSlots: true,
  1887. addGlobalClass: true },
  1888. vueOptions.options || {});
  1889. {
  1890. // 微信 multipleSlots 部分情况有 bug,导致内容顺序错乱 如 u-list,提供覆盖选项
  1891. if (vueOptions['mp-weixin'] && vueOptions['mp-weixin'].options) {
  1892. Object.assign(options, vueOptions['mp-weixin'].options);
  1893. }
  1894. }
  1895. var componentOptions = {
  1896. options: options,
  1897. data: initData(vueOptions, _vue.default.prototype),
  1898. behaviors: initBehaviors(vueOptions, initBehavior),
  1899. properties: initProperties(vueOptions.props, false, vueOptions.__file, options),
  1900. lifetimes: {
  1901. attached: function attached() {
  1902. var properties = this.properties;
  1903. var options = {
  1904. mpType: isPage.call(this) ? 'page' : 'component',
  1905. mpInstance: this,
  1906. propsData: properties };
  1907. initVueIds(properties.vueId, this);
  1908. // 处理父子关系
  1909. initRelation.call(this, {
  1910. vuePid: this._$vuePid,
  1911. vueOptions: options });
  1912. // 初始化 vue 实例
  1913. this.$vm = new VueComponent(options);
  1914. // 处理$slots,$scopedSlots(暂不支持动态变化$slots)
  1915. initSlots(this.$vm, properties.vueSlots);
  1916. // 触发首次 setData
  1917. this.$vm.$mount();
  1918. },
  1919. ready: function ready() {
  1920. // 当组件 props 默认值为 true,初始化时传入 false 会导致 created,ready 触发, 但 attached 不触发
  1921. // https://developers.weixin.qq.com/community/develop/doc/00066ae2844cc0f8eb883e2a557800
  1922. if (this.$vm) {
  1923. this.$vm._isMounted = true;
  1924. this.$vm.__call_hook('mounted');
  1925. this.$vm.__call_hook('onReady');
  1926. }
  1927. },
  1928. detached: function detached() {
  1929. this.$vm && this.$vm.$destroy();
  1930. } },
  1931. pageLifetimes: {
  1932. show: function show(args) {
  1933. this.$vm && this.$vm.__call_hook('onPageShow', args);
  1934. },
  1935. hide: function hide() {
  1936. this.$vm && this.$vm.__call_hook('onPageHide');
  1937. },
  1938. resize: function resize(size) {
  1939. this.$vm && this.$vm.__call_hook('onPageResize', size);
  1940. } },
  1941. methods: {
  1942. __l: handleLink,
  1943. __e: handleEvent } };
  1944. // externalClasses
  1945. if (vueOptions.externalClasses) {
  1946. componentOptions.externalClasses = vueOptions.externalClasses;
  1947. }
  1948. if (Array.isArray(vueOptions.wxsCallMethods)) {
  1949. vueOptions.wxsCallMethods.forEach(function (callMethod) {
  1950. componentOptions.methods[callMethod] = function (args) {
  1951. return this.$vm[callMethod](args);
  1952. };
  1953. });
  1954. }
  1955. if (isPage) {
  1956. return componentOptions;
  1957. }
  1958. return [componentOptions, VueComponent];
  1959. }
  1960. function parseComponent(vueComponentOptions) {
  1961. return parseBaseComponent(vueComponentOptions, {
  1962. isPage: isPage,
  1963. initRelation: initRelation });
  1964. }
  1965. var hooks$1 = [
  1966. 'onShow',
  1967. 'onHide',
  1968. 'onUnload'];
  1969. hooks$1.push.apply(hooks$1, PAGE_EVENT_HOOKS);
  1970. function parseBasePage(vuePageOptions, _ref6)
  1971. {var isPage = _ref6.isPage,initRelation = _ref6.initRelation;
  1972. var pageOptions = parseComponent(vuePageOptions);
  1973. initHooks(pageOptions.methods, hooks$1, vuePageOptions);
  1974. pageOptions.methods.onLoad = function (query) {
  1975. this.options = query;
  1976. var copyQuery = Object.assign({}, query);
  1977. delete copyQuery.__id__;
  1978. this.$page = {
  1979. fullPath: '/' + (this.route || this.is) + stringifyQuery(copyQuery) };
  1980. this.$vm.$mp.query = query; // 兼容 mpvue
  1981. this.$vm.__call_hook('onLoad', query);
  1982. };
  1983. initUnknownHooks(pageOptions.methods, vuePageOptions, ['onReady']);
  1984. return pageOptions;
  1985. }
  1986. function parsePage(vuePageOptions) {
  1987. return parseBasePage(vuePageOptions, {
  1988. isPage: isPage,
  1989. initRelation: initRelation });
  1990. }
  1991. function createPage(vuePageOptions) {
  1992. {
  1993. return Component(parsePage(vuePageOptions));
  1994. }
  1995. }
  1996. function createComponent(vueOptions) {
  1997. {
  1998. return Component(parseComponent(vueOptions));
  1999. }
  2000. }
  2001. function createSubpackageApp(vm) {
  2002. var appOptions = parseApp(vm);
  2003. var app = getApp({
  2004. allowDefault: true });
  2005. vm.$scope = app;
  2006. var globalData = app.globalData;
  2007. if (globalData) {
  2008. Object.keys(appOptions.globalData).forEach(function (name) {
  2009. if (!hasOwn(globalData, name)) {
  2010. globalData[name] = appOptions.globalData[name];
  2011. }
  2012. });
  2013. }
  2014. Object.keys(appOptions).forEach(function (name) {
  2015. if (!hasOwn(app, name)) {
  2016. app[name] = appOptions[name];
  2017. }
  2018. });
  2019. if (isFn(appOptions.onShow) && wx.onAppShow) {
  2020. wx.onAppShow(function () {for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {args[_key5] = arguments[_key5];}
  2021. vm.__call_hook('onShow', args);
  2022. });
  2023. }
  2024. if (isFn(appOptions.onHide) && wx.onAppHide) {
  2025. wx.onAppHide(function () {for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {args[_key6] = arguments[_key6];}
  2026. vm.__call_hook('onHide', args);
  2027. });
  2028. }
  2029. if (isFn(appOptions.onLaunch)) {
  2030. var args = wx.getLaunchOptionsSync && wx.getLaunchOptionsSync();
  2031. vm.__call_hook('onLaunch', args);
  2032. }
  2033. return vm;
  2034. }
  2035. function createPlugin(vm) {
  2036. var appOptions = parseApp(vm);
  2037. if (isFn(appOptions.onShow) && wx.onAppShow) {
  2038. wx.onAppShow(function () {for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {args[_key7] = arguments[_key7];}
  2039. vm.__call_hook('onShow', args);
  2040. });
  2041. }
  2042. if (isFn(appOptions.onHide) && wx.onAppHide) {
  2043. wx.onAppHide(function () {for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {args[_key8] = arguments[_key8];}
  2044. vm.__call_hook('onHide', args);
  2045. });
  2046. }
  2047. if (isFn(appOptions.onLaunch)) {
  2048. var args = wx.getLaunchOptionsSync && wx.getLaunchOptionsSync();
  2049. vm.__call_hook('onLaunch', args);
  2050. }
  2051. return vm;
  2052. }
  2053. todos.forEach(function (todoApi) {
  2054. protocols[todoApi] = false;
  2055. });
  2056. canIUses.forEach(function (canIUseApi) {
  2057. var apiName = protocols[canIUseApi] && protocols[canIUseApi].name ? protocols[canIUseApi].name :
  2058. canIUseApi;
  2059. if (!wx.canIUse(apiName)) {
  2060. protocols[canIUseApi] = false;
  2061. }
  2062. });
  2063. var uni = {};
  2064. if (typeof Proxy !== 'undefined' && "mp-weixin" !== 'app-plus') {
  2065. uni = new Proxy({}, {
  2066. get: function get(target, name) {
  2067. if (hasOwn(target, name)) {
  2068. return target[name];
  2069. }
  2070. if (baseApi[name]) {
  2071. return baseApi[name];
  2072. }
  2073. if (api[name]) {
  2074. return promisify(name, api[name]);
  2075. }
  2076. {
  2077. if (extraApi[name]) {
  2078. return promisify(name, extraApi[name]);
  2079. }
  2080. if (todoApis[name]) {
  2081. return promisify(name, todoApis[name]);
  2082. }
  2083. }
  2084. if (eventApi[name]) {
  2085. return eventApi[name];
  2086. }
  2087. if (!hasOwn(wx, name) && !hasOwn(protocols, name)) {
  2088. return;
  2089. }
  2090. return promisify(name, wrapper(name, wx[name]));
  2091. },
  2092. set: function set(target, name, value) {
  2093. target[name] = value;
  2094. return true;
  2095. } });
  2096. } else {
  2097. Object.keys(baseApi).forEach(function (name) {
  2098. uni[name] = baseApi[name];
  2099. });
  2100. {
  2101. Object.keys(todoApis).forEach(function (name) {
  2102. uni[name] = promisify(name, todoApis[name]);
  2103. });
  2104. Object.keys(extraApi).forEach(function (name) {
  2105. uni[name] = promisify(name, todoApis[name]);
  2106. });
  2107. }
  2108. Object.keys(eventApi).forEach(function (name) {
  2109. uni[name] = eventApi[name];
  2110. });
  2111. Object.keys(api).forEach(function (name) {
  2112. uni[name] = promisify(name, api[name]);
  2113. });
  2114. Object.keys(wx).forEach(function (name) {
  2115. if (hasOwn(wx, name) || hasOwn(protocols, name)) {
  2116. uni[name] = promisify(name, wrapper(name, wx[name]));
  2117. }
  2118. });
  2119. }
  2120. wx.createApp = createApp;
  2121. wx.createPage = createPage;
  2122. wx.createComponent = createComponent;
  2123. wx.createSubpackageApp = createSubpackageApp;
  2124. wx.createPlugin = createPlugin;
  2125. var uni$1 = uni;var _default =
  2126. uni$1;exports.default = _default;
  2127. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ 2)))
  2128. /***/ }),
  2129. /***/ 10:
  2130. /*!************************************************************!*\
  2131. !*** ./node_modules/regenerator-runtime/runtime-module.js ***!
  2132. \************************************************************/
  2133. /*! no static exports found */
  2134. /***/ (function(module, exports, __webpack_require__) {
  2135. /**
  2136. * Copyright (c) 2014-present, Facebook, Inc.
  2137. *
  2138. * This source code is licensed under the MIT license found in the
  2139. * LICENSE file in the root directory of this source tree.
  2140. */
  2141. // This method of obtaining a reference to the global object needs to be
  2142. // kept identical to the way it is obtained in runtime.js
  2143. var g = (function() {
  2144. return this || (typeof self === "object" && self);
  2145. })() || Function("return this")();
  2146. // Use `getOwnPropertyNames` because not all browsers support calling
  2147. // `hasOwnProperty` on the global `self` object in a worker. See #183.
  2148. var hadRuntime = g.regeneratorRuntime &&
  2149. Object.getOwnPropertyNames(g).indexOf("regeneratorRuntime") >= 0;
  2150. // Save the old regeneratorRuntime in case it needs to be restored later.
  2151. var oldRuntime = hadRuntime && g.regeneratorRuntime;
  2152. // Force reevalutation of runtime.js.
  2153. g.regeneratorRuntime = undefined;
  2154. module.exports = __webpack_require__(/*! ./runtime */ 11);
  2155. if (hadRuntime) {
  2156. // Restore the original runtime.
  2157. g.regeneratorRuntime = oldRuntime;
  2158. } else {
  2159. // Remove the global property added by runtime.js.
  2160. try {
  2161. delete g.regeneratorRuntime;
  2162. } catch(e) {
  2163. g.regeneratorRuntime = undefined;
  2164. }
  2165. }
  2166. /***/ }),
  2167. /***/ 100:
  2168. /*!******************************************************************************************!*\
  2169. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/codeInput.js ***!
  2170. \******************************************************************************************/
  2171. /*! no static exports found */
  2172. /***/ (function(module, exports, __webpack_require__) {
  2173. "use strict";
  2174. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  2175. * @Author : LQ
  2176. * @Description :
  2177. * @version : 1.0
  2178. * @Date : 2021-08-20 16:44:21
  2179. * @LastAuthor : LQ
  2180. * @lastTime : 2021-08-20 16:55:58
  2181. * @FilePath : /u-view2.0/uview-ui/libs/config/props/codeInput.js
  2182. */var _default =
  2183. {
  2184. // codeInput 组件
  2185. codeInput: {
  2186. adjustPosition: true,
  2187. maxlength: 6,
  2188. dot: false,
  2189. mode: 'box',
  2190. hairline: false,
  2191. space: 10,
  2192. value: '',
  2193. focus: false,
  2194. bold: false,
  2195. color: '#606266',
  2196. fontSize: 18,
  2197. size: 35,
  2198. disabledKeyboard: false,
  2199. borderColor: '#c9cacc',
  2200. disabledDot: true } };exports.default = _default;
  2201. /***/ }),
  2202. /***/ 101:
  2203. /*!************************************************************************************!*\
  2204. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/col.js ***!
  2205. \************************************************************************************/
  2206. /*! no static exports found */
  2207. /***/ (function(module, exports, __webpack_require__) {
  2208. "use strict";
  2209. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  2210. * @Author : LQ
  2211. * @Description :
  2212. * @version : 1.0
  2213. * @Date : 2021-08-20 16:44:21
  2214. * @LastAuthor : LQ
  2215. * @lastTime : 2021-08-20 16:56:12
  2216. * @FilePath : /u-view2.0/uview-ui/libs/config/props/col.js
  2217. */var _default =
  2218. {
  2219. // col 组件
  2220. col: {
  2221. span: 12,
  2222. offset: 0,
  2223. justify: 'start',
  2224. align: 'stretch',
  2225. textAlign: 'left' } };exports.default = _default;
  2226. /***/ }),
  2227. /***/ 102:
  2228. /*!*****************************************************************************************!*\
  2229. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/collapse.js ***!
  2230. \*****************************************************************************************/
  2231. /*! no static exports found */
  2232. /***/ (function(module, exports, __webpack_require__) {
  2233. "use strict";
  2234. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  2235. * @Author : LQ
  2236. * @Description :
  2237. * @version : 1.0
  2238. * @Date : 2021-08-20 16:44:21
  2239. * @LastAuthor : LQ
  2240. * @lastTime : 2021-08-20 16:56:30
  2241. * @FilePath : /u-view2.0/uview-ui/libs/config/props/collapse.js
  2242. */var _default =
  2243. {
  2244. // collapse 组件
  2245. collapse: {
  2246. value: null,
  2247. accordion: false,
  2248. border: true } };exports.default = _default;
  2249. /***/ }),
  2250. /***/ 103:
  2251. /*!*********************************************************************************************!*\
  2252. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/collapseItem.js ***!
  2253. \*********************************************************************************************/
  2254. /*! no static exports found */
  2255. /***/ (function(module, exports, __webpack_require__) {
  2256. "use strict";
  2257. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  2258. * @Author : LQ
  2259. * @Description :
  2260. * @version : 1.0
  2261. * @Date : 2021-08-20 16:44:21
  2262. * @LastAuthor : LQ
  2263. * @lastTime : 2021-08-20 16:56:42
  2264. * @FilePath : /u-view2.0/uview-ui/libs/config/props/collapseItem.js
  2265. */var _default =
  2266. {
  2267. // collapseItem 组件
  2268. collapseItem: {
  2269. title: '',
  2270. value: '',
  2271. label: '',
  2272. disabled: false,
  2273. isLink: true,
  2274. clickable: true,
  2275. border: true,
  2276. align: 'left',
  2277. name: '',
  2278. icon: '',
  2279. duration: 300 } };exports.default = _default;
  2280. /***/ }),
  2281. /***/ 104:
  2282. /*!*********************************************************************************************!*\
  2283. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/columnNotice.js ***!
  2284. \*********************************************************************************************/
  2285. /*! no static exports found */
  2286. /***/ (function(module, exports, __webpack_require__) {
  2287. "use strict";
  2288. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  2289. * @Author : LQ
  2290. * @Description :
  2291. * @version : 1.0
  2292. * @Date : 2021-08-20 16:44:21
  2293. * @LastAuthor : LQ
  2294. * @lastTime : 2021-08-20 16:57:16
  2295. * @FilePath : /u-view2.0/uview-ui/libs/config/props/columnNotice.js
  2296. */var _default =
  2297. {
  2298. // columnNotice 组件
  2299. columnNotice: {
  2300. text: '',
  2301. icon: 'volume',
  2302. mode: '',
  2303. color: '#f9ae3d',
  2304. bgColor: '#fdf6ec',
  2305. fontSize: 14,
  2306. speed: 80,
  2307. step: false,
  2308. duration: 1500,
  2309. disableTouch: true } };exports.default = _default;
  2310. /***/ }),
  2311. /***/ 105:
  2312. /*!******************************************************************************************!*\
  2313. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/countDown.js ***!
  2314. \******************************************************************************************/
  2315. /*! no static exports found */
  2316. /***/ (function(module, exports, __webpack_require__) {
  2317. "use strict";
  2318. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  2319. * @Author : LQ
  2320. * @Description :
  2321. * @version : 1.0
  2322. * @Date : 2021-08-20 16:44:21
  2323. * @LastAuthor : LQ
  2324. * @lastTime : 2021-08-20 17:11:29
  2325. * @FilePath : /u-view2.0/uview-ui/libs/config/props/countDown.js
  2326. */var _default =
  2327. {
  2328. // u-count-down 计时器组件
  2329. countDown: {
  2330. time: 0,
  2331. format: 'HH:mm:ss',
  2332. autoStart: true,
  2333. millisecond: false } };exports.default = _default;
  2334. /***/ }),
  2335. /***/ 106:
  2336. /*!****************************************************************************************!*\
  2337. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/countTo.js ***!
  2338. \****************************************************************************************/
  2339. /*! no static exports found */
  2340. /***/ (function(module, exports, __webpack_require__) {
  2341. "use strict";
  2342. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  2343. * @Author : LQ
  2344. * @Description :
  2345. * @version : 1.0
  2346. * @Date : 2021-08-20 16:44:21
  2347. * @LastAuthor : LQ
  2348. * @lastTime : 2021-08-20 16:57:32
  2349. * @FilePath : /u-view2.0/uview-ui/libs/config/props/countTo.js
  2350. */var _default =
  2351. {
  2352. // countTo 组件
  2353. countTo: {
  2354. startVal: 0,
  2355. endVal: 0,
  2356. duration: 2000,
  2357. autoplay: true,
  2358. decimals: 0,
  2359. useEasing: true,
  2360. decimal: '.',
  2361. color: '#606266',
  2362. fontSize: 22,
  2363. bold: false,
  2364. separator: '' } };exports.default = _default;
  2365. /***/ }),
  2366. /***/ 107:
  2367. /*!***********************************************************************************************!*\
  2368. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/datetimePicker.js ***!
  2369. \***********************************************************************************************/
  2370. /*! no static exports found */
  2371. /***/ (function(module, exports, __webpack_require__) {
  2372. "use strict";
  2373. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  2374. * @Author : LQ
  2375. * @Description :
  2376. * @version : 1.0
  2377. * @Date : 2021-08-20 16:44:21
  2378. * @LastAuthor : LQ
  2379. * @lastTime : 2021-08-20 16:57:48
  2380. * @FilePath : /u-view2.0/uview-ui/libs/config/props/datetimePicker.js
  2381. */var _default =
  2382. {
  2383. // datetimePicker 组件
  2384. datetimePicker: {
  2385. show: false,
  2386. showToolbar: true,
  2387. value: '',
  2388. title: '',
  2389. mode: 'datetime',
  2390. maxDate: new Date(new Date().getFullYear() + 10, 0, 1).getTime(),
  2391. minDate: new Date(new Date().getFullYear() - 10, 0, 1).getTime(),
  2392. minHour: 0,
  2393. maxHour: 23,
  2394. minMinute: 0,
  2395. maxMinute: 59,
  2396. filter: null,
  2397. formatter: null,
  2398. loading: false,
  2399. itemHeight: 44,
  2400. cancelText: '取消',
  2401. confirmText: '确认',
  2402. cancelColor: '#909193',
  2403. confirmColor: '#3c9cff',
  2404. visibleItemCount: 5,
  2405. closeOnClickOverlay: false,
  2406. defaultIndex: function defaultIndex() {return [];} } };exports.default = _default;
  2407. /***/ }),
  2408. /***/ 108:
  2409. /*!****************************************************************************************!*\
  2410. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/divider.js ***!
  2411. \****************************************************************************************/
  2412. /*! no static exports found */
  2413. /***/ (function(module, exports, __webpack_require__) {
  2414. "use strict";
  2415. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  2416. * @Author : LQ
  2417. * @Description :
  2418. * @version : 1.0
  2419. * @Date : 2021-08-20 16:44:21
  2420. * @LastAuthor : LQ
  2421. * @lastTime : 2021-08-20 16:58:03
  2422. * @FilePath : /u-view2.0/uview-ui/libs/config/props/divider.js
  2423. */var _default =
  2424. {
  2425. // divider组件
  2426. divider: {
  2427. dashed: false,
  2428. hairline: true,
  2429. dot: false,
  2430. textPosition: 'center',
  2431. text: '',
  2432. textSize: 14,
  2433. textColor: '#909399',
  2434. lineColor: '#dcdfe6' } };exports.default = _default;
  2435. /***/ }),
  2436. /***/ 109:
  2437. /*!**************************************************************************************!*\
  2438. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/empty.js ***!
  2439. \**************************************************************************************/
  2440. /*! no static exports found */
  2441. /***/ (function(module, exports, __webpack_require__) {
  2442. "use strict";
  2443. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  2444. * @Author : LQ
  2445. * @Description :
  2446. * @version : 1.0
  2447. * @Date : 2021-08-20 16:44:21
  2448. * @LastAuthor : LQ
  2449. * @lastTime : 2021-08-20 17:03:27
  2450. * @FilePath : /u-view2.0/uview-ui/libs/config/props/empty.js
  2451. */var _default =
  2452. {
  2453. // empty组件
  2454. empty: {
  2455. icon: '',
  2456. text: '',
  2457. textColor: '#c0c4cc',
  2458. textSize: 14,
  2459. iconColor: '#c0c4cc',
  2460. iconSize: 90,
  2461. mode: 'data',
  2462. width: 160,
  2463. height: 160,
  2464. show: true,
  2465. marginTop: 0 } };exports.default = _default;
  2466. /***/ }),
  2467. /***/ 11:
  2468. /*!*****************************************************!*\
  2469. !*** ./node_modules/regenerator-runtime/runtime.js ***!
  2470. \*****************************************************/
  2471. /*! no static exports found */
  2472. /***/ (function(module, exports) {
  2473. /**
  2474. * Copyright (c) 2014-present, Facebook, Inc.
  2475. *
  2476. * This source code is licensed under the MIT license found in the
  2477. * LICENSE file in the root directory of this source tree.
  2478. */
  2479. !(function(global) {
  2480. "use strict";
  2481. var Op = Object.prototype;
  2482. var hasOwn = Op.hasOwnProperty;
  2483. var undefined; // More compressible than void 0.
  2484. var $Symbol = typeof Symbol === "function" ? Symbol : {};
  2485. var iteratorSymbol = $Symbol.iterator || "@@iterator";
  2486. var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
  2487. var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
  2488. var inModule = typeof module === "object";
  2489. var runtime = global.regeneratorRuntime;
  2490. if (runtime) {
  2491. if (inModule) {
  2492. // If regeneratorRuntime is defined globally and we're in a module,
  2493. // make the exports object identical to regeneratorRuntime.
  2494. module.exports = runtime;
  2495. }
  2496. // Don't bother evaluating the rest of this file if the runtime was
  2497. // already defined globally.
  2498. return;
  2499. }
  2500. // Define the runtime globally (as expected by generated code) as either
  2501. // module.exports (if we're in a module) or a new, empty object.
  2502. runtime = global.regeneratorRuntime = inModule ? module.exports : {};
  2503. function wrap(innerFn, outerFn, self, tryLocsList) {
  2504. // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
  2505. var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
  2506. var generator = Object.create(protoGenerator.prototype);
  2507. var context = new Context(tryLocsList || []);
  2508. // The ._invoke method unifies the implementations of the .next,
  2509. // .throw, and .return methods.
  2510. generator._invoke = makeInvokeMethod(innerFn, self, context);
  2511. return generator;
  2512. }
  2513. runtime.wrap = wrap;
  2514. // Try/catch helper to minimize deoptimizations. Returns a completion
  2515. // record like context.tryEntries[i].completion. This interface could
  2516. // have been (and was previously) designed to take a closure to be
  2517. // invoked without arguments, but in all the cases we care about we
  2518. // already have an existing method we want to call, so there's no need
  2519. // to create a new function object. We can even get away with assuming
  2520. // the method takes exactly one argument, since that happens to be true
  2521. // in every case, so we don't have to touch the arguments object. The
  2522. // only additional allocation required is the completion record, which
  2523. // has a stable shape and so hopefully should be cheap to allocate.
  2524. function tryCatch(fn, obj, arg) {
  2525. try {
  2526. return { type: "normal", arg: fn.call(obj, arg) };
  2527. } catch (err) {
  2528. return { type: "throw", arg: err };
  2529. }
  2530. }
  2531. var GenStateSuspendedStart = "suspendedStart";
  2532. var GenStateSuspendedYield = "suspendedYield";
  2533. var GenStateExecuting = "executing";
  2534. var GenStateCompleted = "completed";
  2535. // Returning this object from the innerFn has the same effect as
  2536. // breaking out of the dispatch switch statement.
  2537. var ContinueSentinel = {};
  2538. // Dummy constructor functions that we use as the .constructor and
  2539. // .constructor.prototype properties for functions that return Generator
  2540. // objects. For full spec compliance, you may wish to configure your
  2541. // minifier not to mangle the names of these two functions.
  2542. function Generator() {}
  2543. function GeneratorFunction() {}
  2544. function GeneratorFunctionPrototype() {}
  2545. // This is a polyfill for %IteratorPrototype% for environments that
  2546. // don't natively support it.
  2547. var IteratorPrototype = {};
  2548. IteratorPrototype[iteratorSymbol] = function () {
  2549. return this;
  2550. };
  2551. var getProto = Object.getPrototypeOf;
  2552. var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
  2553. if (NativeIteratorPrototype &&
  2554. NativeIteratorPrototype !== Op &&
  2555. hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
  2556. // This environment has a native %IteratorPrototype%; use it instead
  2557. // of the polyfill.
  2558. IteratorPrototype = NativeIteratorPrototype;
  2559. }
  2560. var Gp = GeneratorFunctionPrototype.prototype =
  2561. Generator.prototype = Object.create(IteratorPrototype);
  2562. GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
  2563. GeneratorFunctionPrototype.constructor = GeneratorFunction;
  2564. GeneratorFunctionPrototype[toStringTagSymbol] =
  2565. GeneratorFunction.displayName = "GeneratorFunction";
  2566. // Helper for defining the .next, .throw, and .return methods of the
  2567. // Iterator interface in terms of a single ._invoke method.
  2568. function defineIteratorMethods(prototype) {
  2569. ["next", "throw", "return"].forEach(function(method) {
  2570. prototype[method] = function(arg) {
  2571. return this._invoke(method, arg);
  2572. };
  2573. });
  2574. }
  2575. runtime.isGeneratorFunction = function(genFun) {
  2576. var ctor = typeof genFun === "function" && genFun.constructor;
  2577. return ctor
  2578. ? ctor === GeneratorFunction ||
  2579. // For the native GeneratorFunction constructor, the best we can
  2580. // do is to check its .name property.
  2581. (ctor.displayName || ctor.name) === "GeneratorFunction"
  2582. : false;
  2583. };
  2584. runtime.mark = function(genFun) {
  2585. if (Object.setPrototypeOf) {
  2586. Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
  2587. } else {
  2588. genFun.__proto__ = GeneratorFunctionPrototype;
  2589. if (!(toStringTagSymbol in genFun)) {
  2590. genFun[toStringTagSymbol] = "GeneratorFunction";
  2591. }
  2592. }
  2593. genFun.prototype = Object.create(Gp);
  2594. return genFun;
  2595. };
  2596. // Within the body of any async function, `await x` is transformed to
  2597. // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
  2598. // `hasOwn.call(value, "__await")` to determine if the yielded value is
  2599. // meant to be awaited.
  2600. runtime.awrap = function(arg) {
  2601. return { __await: arg };
  2602. };
  2603. function AsyncIterator(generator) {
  2604. function invoke(method, arg, resolve, reject) {
  2605. var record = tryCatch(generator[method], generator, arg);
  2606. if (record.type === "throw") {
  2607. reject(record.arg);
  2608. } else {
  2609. var result = record.arg;
  2610. var value = result.value;
  2611. if (value &&
  2612. typeof value === "object" &&
  2613. hasOwn.call(value, "__await")) {
  2614. return Promise.resolve(value.__await).then(function(value) {
  2615. invoke("next", value, resolve, reject);
  2616. }, function(err) {
  2617. invoke("throw", err, resolve, reject);
  2618. });
  2619. }
  2620. return Promise.resolve(value).then(function(unwrapped) {
  2621. // When a yielded Promise is resolved, its final value becomes
  2622. // the .value of the Promise<{value,done}> result for the
  2623. // current iteration.
  2624. result.value = unwrapped;
  2625. resolve(result);
  2626. }, function(error) {
  2627. // If a rejected Promise was yielded, throw the rejection back
  2628. // into the async generator function so it can be handled there.
  2629. return invoke("throw", error, resolve, reject);
  2630. });
  2631. }
  2632. }
  2633. var previousPromise;
  2634. function enqueue(method, arg) {
  2635. function callInvokeWithMethodAndArg() {
  2636. return new Promise(function(resolve, reject) {
  2637. invoke(method, arg, resolve, reject);
  2638. });
  2639. }
  2640. return previousPromise =
  2641. // If enqueue has been called before, then we want to wait until
  2642. // all previous Promises have been resolved before calling invoke,
  2643. // so that results are always delivered in the correct order. If
  2644. // enqueue has not been called before, then it is important to
  2645. // call invoke immediately, without waiting on a callback to fire,
  2646. // so that the async generator function has the opportunity to do
  2647. // any necessary setup in a predictable way. This predictability
  2648. // is why the Promise constructor synchronously invokes its
  2649. // executor callback, and why async functions synchronously
  2650. // execute code before the first await. Since we implement simple
  2651. // async functions in terms of async generators, it is especially
  2652. // important to get this right, even though it requires care.
  2653. previousPromise ? previousPromise.then(
  2654. callInvokeWithMethodAndArg,
  2655. // Avoid propagating failures to Promises returned by later
  2656. // invocations of the iterator.
  2657. callInvokeWithMethodAndArg
  2658. ) : callInvokeWithMethodAndArg();
  2659. }
  2660. // Define the unified helper method that is used to implement .next,
  2661. // .throw, and .return (see defineIteratorMethods).
  2662. this._invoke = enqueue;
  2663. }
  2664. defineIteratorMethods(AsyncIterator.prototype);
  2665. AsyncIterator.prototype[asyncIteratorSymbol] = function () {
  2666. return this;
  2667. };
  2668. runtime.AsyncIterator = AsyncIterator;
  2669. // Note that simple async functions are implemented on top of
  2670. // AsyncIterator objects; they just return a Promise for the value of
  2671. // the final result produced by the iterator.
  2672. runtime.async = function(innerFn, outerFn, self, tryLocsList) {
  2673. var iter = new AsyncIterator(
  2674. wrap(innerFn, outerFn, self, tryLocsList)
  2675. );
  2676. return runtime.isGeneratorFunction(outerFn)
  2677. ? iter // If outerFn is a generator, return the full iterator.
  2678. : iter.next().then(function(result) {
  2679. return result.done ? result.value : iter.next();
  2680. });
  2681. };
  2682. function makeInvokeMethod(innerFn, self, context) {
  2683. var state = GenStateSuspendedStart;
  2684. return function invoke(method, arg) {
  2685. if (state === GenStateExecuting) {
  2686. throw new Error("Generator is already running");
  2687. }
  2688. if (state === GenStateCompleted) {
  2689. if (method === "throw") {
  2690. throw arg;
  2691. }
  2692. // Be forgiving, per 25.3.3.3.3 of the spec:
  2693. // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
  2694. return doneResult();
  2695. }
  2696. context.method = method;
  2697. context.arg = arg;
  2698. while (true) {
  2699. var delegate = context.delegate;
  2700. if (delegate) {
  2701. var delegateResult = maybeInvokeDelegate(delegate, context);
  2702. if (delegateResult) {
  2703. if (delegateResult === ContinueSentinel) continue;
  2704. return delegateResult;
  2705. }
  2706. }
  2707. if (context.method === "next") {
  2708. // Setting context._sent for legacy support of Babel's
  2709. // function.sent implementation.
  2710. context.sent = context._sent = context.arg;
  2711. } else if (context.method === "throw") {
  2712. if (state === GenStateSuspendedStart) {
  2713. state = GenStateCompleted;
  2714. throw context.arg;
  2715. }
  2716. context.dispatchException(context.arg);
  2717. } else if (context.method === "return") {
  2718. context.abrupt("return", context.arg);
  2719. }
  2720. state = GenStateExecuting;
  2721. var record = tryCatch(innerFn, self, context);
  2722. if (record.type === "normal") {
  2723. // If an exception is thrown from innerFn, we leave state ===
  2724. // GenStateExecuting and loop back for another invocation.
  2725. state = context.done
  2726. ? GenStateCompleted
  2727. : GenStateSuspendedYield;
  2728. if (record.arg === ContinueSentinel) {
  2729. continue;
  2730. }
  2731. return {
  2732. value: record.arg,
  2733. done: context.done
  2734. };
  2735. } else if (record.type === "throw") {
  2736. state = GenStateCompleted;
  2737. // Dispatch the exception by looping back around to the
  2738. // context.dispatchException(context.arg) call above.
  2739. context.method = "throw";
  2740. context.arg = record.arg;
  2741. }
  2742. }
  2743. };
  2744. }
  2745. // Call delegate.iterator[context.method](context.arg) and handle the
  2746. // result, either by returning a { value, done } result from the
  2747. // delegate iterator, or by modifying context.method and context.arg,
  2748. // setting context.delegate to null, and returning the ContinueSentinel.
  2749. function maybeInvokeDelegate(delegate, context) {
  2750. var method = delegate.iterator[context.method];
  2751. if (method === undefined) {
  2752. // A .throw or .return when the delegate iterator has no .throw
  2753. // method always terminates the yield* loop.
  2754. context.delegate = null;
  2755. if (context.method === "throw") {
  2756. if (delegate.iterator.return) {
  2757. // If the delegate iterator has a return method, give it a
  2758. // chance to clean up.
  2759. context.method = "return";
  2760. context.arg = undefined;
  2761. maybeInvokeDelegate(delegate, context);
  2762. if (context.method === "throw") {
  2763. // If maybeInvokeDelegate(context) changed context.method from
  2764. // "return" to "throw", let that override the TypeError below.
  2765. return ContinueSentinel;
  2766. }
  2767. }
  2768. context.method = "throw";
  2769. context.arg = new TypeError(
  2770. "The iterator does not provide a 'throw' method");
  2771. }
  2772. return ContinueSentinel;
  2773. }
  2774. var record = tryCatch(method, delegate.iterator, context.arg);
  2775. if (record.type === "throw") {
  2776. context.method = "throw";
  2777. context.arg = record.arg;
  2778. context.delegate = null;
  2779. return ContinueSentinel;
  2780. }
  2781. var info = record.arg;
  2782. if (! info) {
  2783. context.method = "throw";
  2784. context.arg = new TypeError("iterator result is not an object");
  2785. context.delegate = null;
  2786. return ContinueSentinel;
  2787. }
  2788. if (info.done) {
  2789. // Assign the result of the finished delegate to the temporary
  2790. // variable specified by delegate.resultName (see delegateYield).
  2791. context[delegate.resultName] = info.value;
  2792. // Resume execution at the desired location (see delegateYield).
  2793. context.next = delegate.nextLoc;
  2794. // If context.method was "throw" but the delegate handled the
  2795. // exception, let the outer generator proceed normally. If
  2796. // context.method was "next", forget context.arg since it has been
  2797. // "consumed" by the delegate iterator. If context.method was
  2798. // "return", allow the original .return call to continue in the
  2799. // outer generator.
  2800. if (context.method !== "return") {
  2801. context.method = "next";
  2802. context.arg = undefined;
  2803. }
  2804. } else {
  2805. // Re-yield the result returned by the delegate method.
  2806. return info;
  2807. }
  2808. // The delegate iterator is finished, so forget it and continue with
  2809. // the outer generator.
  2810. context.delegate = null;
  2811. return ContinueSentinel;
  2812. }
  2813. // Define Generator.prototype.{next,throw,return} in terms of the
  2814. // unified ._invoke helper method.
  2815. defineIteratorMethods(Gp);
  2816. Gp[toStringTagSymbol] = "Generator";
  2817. // A Generator should always return itself as the iterator object when the
  2818. // @@iterator function is called on it. Some browsers' implementations of the
  2819. // iterator prototype chain incorrectly implement this, causing the Generator
  2820. // object to not be returned from this call. This ensures that doesn't happen.
  2821. // See https://github.com/facebook/regenerator/issues/274 for more details.
  2822. Gp[iteratorSymbol] = function() {
  2823. return this;
  2824. };
  2825. Gp.toString = function() {
  2826. return "[object Generator]";
  2827. };
  2828. function pushTryEntry(locs) {
  2829. var entry = { tryLoc: locs[0] };
  2830. if (1 in locs) {
  2831. entry.catchLoc = locs[1];
  2832. }
  2833. if (2 in locs) {
  2834. entry.finallyLoc = locs[2];
  2835. entry.afterLoc = locs[3];
  2836. }
  2837. this.tryEntries.push(entry);
  2838. }
  2839. function resetTryEntry(entry) {
  2840. var record = entry.completion || {};
  2841. record.type = "normal";
  2842. delete record.arg;
  2843. entry.completion = record;
  2844. }
  2845. function Context(tryLocsList) {
  2846. // The root entry object (effectively a try statement without a catch
  2847. // or a finally block) gives us a place to store values thrown from
  2848. // locations where there is no enclosing try statement.
  2849. this.tryEntries = [{ tryLoc: "root" }];
  2850. tryLocsList.forEach(pushTryEntry, this);
  2851. this.reset(true);
  2852. }
  2853. runtime.keys = function(object) {
  2854. var keys = [];
  2855. for (var key in object) {
  2856. keys.push(key);
  2857. }
  2858. keys.reverse();
  2859. // Rather than returning an object with a next method, we keep
  2860. // things simple and return the next function itself.
  2861. return function next() {
  2862. while (keys.length) {
  2863. var key = keys.pop();
  2864. if (key in object) {
  2865. next.value = key;
  2866. next.done = false;
  2867. return next;
  2868. }
  2869. }
  2870. // To avoid creating an additional object, we just hang the .value
  2871. // and .done properties off the next function object itself. This
  2872. // also ensures that the minifier will not anonymize the function.
  2873. next.done = true;
  2874. return next;
  2875. };
  2876. };
  2877. function values(iterable) {
  2878. if (iterable) {
  2879. var iteratorMethod = iterable[iteratorSymbol];
  2880. if (iteratorMethod) {
  2881. return iteratorMethod.call(iterable);
  2882. }
  2883. if (typeof iterable.next === "function") {
  2884. return iterable;
  2885. }
  2886. if (!isNaN(iterable.length)) {
  2887. var i = -1, next = function next() {
  2888. while (++i < iterable.length) {
  2889. if (hasOwn.call(iterable, i)) {
  2890. next.value = iterable[i];
  2891. next.done = false;
  2892. return next;
  2893. }
  2894. }
  2895. next.value = undefined;
  2896. next.done = true;
  2897. return next;
  2898. };
  2899. return next.next = next;
  2900. }
  2901. }
  2902. // Return an iterator with no values.
  2903. return { next: doneResult };
  2904. }
  2905. runtime.values = values;
  2906. function doneResult() {
  2907. return { value: undefined, done: true };
  2908. }
  2909. Context.prototype = {
  2910. constructor: Context,
  2911. reset: function(skipTempReset) {
  2912. this.prev = 0;
  2913. this.next = 0;
  2914. // Resetting context._sent for legacy support of Babel's
  2915. // function.sent implementation.
  2916. this.sent = this._sent = undefined;
  2917. this.done = false;
  2918. this.delegate = null;
  2919. this.method = "next";
  2920. this.arg = undefined;
  2921. this.tryEntries.forEach(resetTryEntry);
  2922. if (!skipTempReset) {
  2923. for (var name in this) {
  2924. // Not sure about the optimal order of these conditions:
  2925. if (name.charAt(0) === "t" &&
  2926. hasOwn.call(this, name) &&
  2927. !isNaN(+name.slice(1))) {
  2928. this[name] = undefined;
  2929. }
  2930. }
  2931. }
  2932. },
  2933. stop: function() {
  2934. this.done = true;
  2935. var rootEntry = this.tryEntries[0];
  2936. var rootRecord = rootEntry.completion;
  2937. if (rootRecord.type === "throw") {
  2938. throw rootRecord.arg;
  2939. }
  2940. return this.rval;
  2941. },
  2942. dispatchException: function(exception) {
  2943. if (this.done) {
  2944. throw exception;
  2945. }
  2946. var context = this;
  2947. function handle(loc, caught) {
  2948. record.type = "throw";
  2949. record.arg = exception;
  2950. context.next = loc;
  2951. if (caught) {
  2952. // If the dispatched exception was caught by a catch block,
  2953. // then let that catch block handle the exception normally.
  2954. context.method = "next";
  2955. context.arg = undefined;
  2956. }
  2957. return !! caught;
  2958. }
  2959. for (var i = this.tryEntries.length - 1; i >= 0; --i) {
  2960. var entry = this.tryEntries[i];
  2961. var record = entry.completion;
  2962. if (entry.tryLoc === "root") {
  2963. // Exception thrown outside of any try block that could handle
  2964. // it, so set the completion value of the entire function to
  2965. // throw the exception.
  2966. return handle("end");
  2967. }
  2968. if (entry.tryLoc <= this.prev) {
  2969. var hasCatch = hasOwn.call(entry, "catchLoc");
  2970. var hasFinally = hasOwn.call(entry, "finallyLoc");
  2971. if (hasCatch && hasFinally) {
  2972. if (this.prev < entry.catchLoc) {
  2973. return handle(entry.catchLoc, true);
  2974. } else if (this.prev < entry.finallyLoc) {
  2975. return handle(entry.finallyLoc);
  2976. }
  2977. } else if (hasCatch) {
  2978. if (this.prev < entry.catchLoc) {
  2979. return handle(entry.catchLoc, true);
  2980. }
  2981. } else if (hasFinally) {
  2982. if (this.prev < entry.finallyLoc) {
  2983. return handle(entry.finallyLoc);
  2984. }
  2985. } else {
  2986. throw new Error("try statement without catch or finally");
  2987. }
  2988. }
  2989. }
  2990. },
  2991. abrupt: function(type, arg) {
  2992. for (var i = this.tryEntries.length - 1; i >= 0; --i) {
  2993. var entry = this.tryEntries[i];
  2994. if (entry.tryLoc <= this.prev &&
  2995. hasOwn.call(entry, "finallyLoc") &&
  2996. this.prev < entry.finallyLoc) {
  2997. var finallyEntry = entry;
  2998. break;
  2999. }
  3000. }
  3001. if (finallyEntry &&
  3002. (type === "break" ||
  3003. type === "continue") &&
  3004. finallyEntry.tryLoc <= arg &&
  3005. arg <= finallyEntry.finallyLoc) {
  3006. // Ignore the finally entry if control is not jumping to a
  3007. // location outside the try/catch block.
  3008. finallyEntry = null;
  3009. }
  3010. var record = finallyEntry ? finallyEntry.completion : {};
  3011. record.type = type;
  3012. record.arg = arg;
  3013. if (finallyEntry) {
  3014. this.method = "next";
  3015. this.next = finallyEntry.finallyLoc;
  3016. return ContinueSentinel;
  3017. }
  3018. return this.complete(record);
  3019. },
  3020. complete: function(record, afterLoc) {
  3021. if (record.type === "throw") {
  3022. throw record.arg;
  3023. }
  3024. if (record.type === "break" ||
  3025. record.type === "continue") {
  3026. this.next = record.arg;
  3027. } else if (record.type === "return") {
  3028. this.rval = this.arg = record.arg;
  3029. this.method = "return";
  3030. this.next = "end";
  3031. } else if (record.type === "normal" && afterLoc) {
  3032. this.next = afterLoc;
  3033. }
  3034. return ContinueSentinel;
  3035. },
  3036. finish: function(finallyLoc) {
  3037. for (var i = this.tryEntries.length - 1; i >= 0; --i) {
  3038. var entry = this.tryEntries[i];
  3039. if (entry.finallyLoc === finallyLoc) {
  3040. this.complete(entry.completion, entry.afterLoc);
  3041. resetTryEntry(entry);
  3042. return ContinueSentinel;
  3043. }
  3044. }
  3045. },
  3046. "catch": function(tryLoc) {
  3047. for (var i = this.tryEntries.length - 1; i >= 0; --i) {
  3048. var entry = this.tryEntries[i];
  3049. if (entry.tryLoc === tryLoc) {
  3050. var record = entry.completion;
  3051. if (record.type === "throw") {
  3052. var thrown = record.arg;
  3053. resetTryEntry(entry);
  3054. }
  3055. return thrown;
  3056. }
  3057. }
  3058. // The context.catch method must only be called with a location
  3059. // argument that corresponds to a known catch block.
  3060. throw new Error("illegal catch attempt");
  3061. },
  3062. delegateYield: function(iterable, resultName, nextLoc) {
  3063. this.delegate = {
  3064. iterator: values(iterable),
  3065. resultName: resultName,
  3066. nextLoc: nextLoc
  3067. };
  3068. if (this.method === "next") {
  3069. // Deliberately forget the last sent value so that we don't
  3070. // accidentally pass it on to the delegate.
  3071. this.arg = undefined;
  3072. }
  3073. return ContinueSentinel;
  3074. }
  3075. };
  3076. })(
  3077. // In sloppy mode, unbound `this` refers to the global object, fallback to
  3078. // Function constructor if we're in global strict mode. That is sadly a form
  3079. // of indirect eval which violates Content Security Policy.
  3080. (function() {
  3081. return this || (typeof self === "object" && self);
  3082. })() || Function("return this")()
  3083. );
  3084. /***/ }),
  3085. /***/ 110:
  3086. /*!*************************************************************************************!*\
  3087. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/form.js ***!
  3088. \*************************************************************************************/
  3089. /*! no static exports found */
  3090. /***/ (function(module, exports, __webpack_require__) {
  3091. "use strict";
  3092. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  3093. * @Author : LQ
  3094. * @Description :
  3095. * @version : 1.0
  3096. * @Date : 2021-08-20 16:44:21
  3097. * @LastAuthor : LQ
  3098. * @lastTime : 2021-08-20 17:03:49
  3099. * @FilePath : /u-view2.0/uview-ui/libs/config/props/form.js
  3100. */var _default =
  3101. {
  3102. // form 组件
  3103. form: {
  3104. model: function model() {return {};},
  3105. rules: function rules() {return {};},
  3106. errorType: 'message',
  3107. borderBottom: true,
  3108. labelPosition: 'left',
  3109. labelWidth: 45,
  3110. labelAlign: 'left',
  3111. labelStyle: function labelStyle() {return {};} } };exports.default = _default;
  3112. /***/ }),
  3113. /***/ 111:
  3114. /*!*****************************************************************************************!*\
  3115. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/formItem.js ***!
  3116. \*****************************************************************************************/
  3117. /*! no static exports found */
  3118. /***/ (function(module, exports, __webpack_require__) {
  3119. "use strict";
  3120. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  3121. * @Author : LQ
  3122. * @Description :
  3123. * @version : 1.0
  3124. * @Date : 2021-08-20 16:44:21
  3125. * @LastAuthor : LQ
  3126. * @lastTime : 2021-08-20 17:04:32
  3127. * @FilePath : /u-view2.0/uview-ui/libs/config/props/formItem.js
  3128. */var _default =
  3129. {
  3130. // formItem 组件
  3131. formItem: {
  3132. label: '',
  3133. prop: '',
  3134. borderBottom: '',
  3135. labelPosition: '',
  3136. labelWidth: '',
  3137. rightIcon: '',
  3138. leftIcon: '',
  3139. required: false,
  3140. leftIconStyle: '' } };exports.default = _default;
  3141. /***/ }),
  3142. /***/ 112:
  3143. /*!************************************************************************************!*\
  3144. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/gap.js ***!
  3145. \************************************************************************************/
  3146. /*! no static exports found */
  3147. /***/ (function(module, exports, __webpack_require__) {
  3148. "use strict";
  3149. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  3150. * @Author : LQ
  3151. * @Description :
  3152. * @version : 1.0
  3153. * @Date : 2021-08-20 16:44:21
  3154. * @LastAuthor : LQ
  3155. * @lastTime : 2021-08-20 17:05:25
  3156. * @FilePath : /u-view2.0/uview-ui/libs/config/props/gap.js
  3157. */var _default =
  3158. {
  3159. // gap组件
  3160. gap: {
  3161. bgColor: 'transparent',
  3162. height: 20,
  3163. marginTop: 0,
  3164. marginBottom: 0,
  3165. customStyle: {} } };exports.default = _default;
  3166. /***/ }),
  3167. /***/ 113:
  3168. /*!*************************************************************************************!*\
  3169. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/grid.js ***!
  3170. \*************************************************************************************/
  3171. /*! no static exports found */
  3172. /***/ (function(module, exports, __webpack_require__) {
  3173. "use strict";
  3174. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  3175. * @Author : LQ
  3176. * @Description :
  3177. * @version : 1.0
  3178. * @Date : 2021-08-20 16:44:21
  3179. * @LastAuthor : LQ
  3180. * @lastTime : 2021-08-20 17:05:57
  3181. * @FilePath : /u-view2.0/uview-ui/libs/config/props/grid.js
  3182. */var _default =
  3183. {
  3184. // grid组件
  3185. grid: {
  3186. col: 3,
  3187. border: false,
  3188. align: 'left' } };exports.default = _default;
  3189. /***/ }),
  3190. /***/ 114:
  3191. /*!*****************************************************************************************!*\
  3192. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/gridItem.js ***!
  3193. \*****************************************************************************************/
  3194. /*! no static exports found */
  3195. /***/ (function(module, exports, __webpack_require__) {
  3196. "use strict";
  3197. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  3198. * @Author : LQ
  3199. * @Description :
  3200. * @version : 1.0
  3201. * @Date : 2021-08-20 16:44:21
  3202. * @LastAuthor : LQ
  3203. * @lastTime : 2021-08-20 17:06:13
  3204. * @FilePath : /u-view2.0/uview-ui/libs/config/props/gridItem.js
  3205. */var _default =
  3206. {
  3207. // grid-item组件
  3208. gridItem: {
  3209. name: null,
  3210. bgColor: 'transparent' } };exports.default = _default;
  3211. /***/ }),
  3212. /***/ 115:
  3213. /*!*************************************************************************************!*\
  3214. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/icon.js ***!
  3215. \*************************************************************************************/
  3216. /*! no static exports found */
  3217. /***/ (function(module, exports, __webpack_require__) {
  3218. "use strict";
  3219. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;
  3220. var _config = _interopRequireDefault(__webpack_require__(/*! ../config */ 82));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} /*
  3221. * @Author : LQ
  3222. * @Description :
  3223. * @version : 1.0
  3224. * @Date : 2021-08-20 16:44:21
  3225. * @LastAuthor : LQ
  3226. * @lastTime : 2021-08-20 18:00:14
  3227. * @FilePath : /u-view2.0/uview-ui/libs/config/props/icon.js
  3228. */var color = _config.default.color;var _default = { // icon组件
  3229. icon: { name: '', color: color['u-content-color'],
  3230. size: '16px',
  3231. bold: false,
  3232. index: '',
  3233. hoverClass: '',
  3234. customPrefix: 'uicon',
  3235. label: '',
  3236. labelPos: 'right',
  3237. labelSize: '15px',
  3238. labelColor: color['u-content-color'],
  3239. space: '3px',
  3240. imgMode: '',
  3241. width: '',
  3242. height: '',
  3243. top: 0,
  3244. stop: false } };exports.default = _default;
  3245. /***/ }),
  3246. /***/ 116:
  3247. /*!**************************************************************************************!*\
  3248. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/image.js ***!
  3249. \**************************************************************************************/
  3250. /*! no static exports found */
  3251. /***/ (function(module, exports, __webpack_require__) {
  3252. "use strict";
  3253. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  3254. * @Author : LQ
  3255. * @Description :
  3256. * @version : 1.0
  3257. * @Date : 2021-08-20 16:44:21
  3258. * @LastAuthor : LQ
  3259. * @lastTime : 2021-08-20 17:01:51
  3260. * @FilePath : /u-view2.0/uview-ui/libs/config/props/image.js
  3261. */var _default =
  3262. {
  3263. // image组件
  3264. image: {
  3265. src: '',
  3266. mode: 'aspectFill',
  3267. width: '300',
  3268. height: '225',
  3269. shape: 'square',
  3270. radius: 0,
  3271. lazyLoad: true,
  3272. showMenuByLongpress: true,
  3273. loadingIcon: 'photo',
  3274. errorIcon: 'error-circle',
  3275. showLoading: true,
  3276. showError: true,
  3277. fade: true,
  3278. webp: false,
  3279. duration: 500,
  3280. bgColor: '#f3f4f6' } };exports.default = _default;
  3281. /***/ }),
  3282. /***/ 117:
  3283. /*!********************************************************************************************!*\
  3284. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/indexAnchor.js ***!
  3285. \********************************************************************************************/
  3286. /*! no static exports found */
  3287. /***/ (function(module, exports, __webpack_require__) {
  3288. "use strict";
  3289. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  3290. * @Author : LQ
  3291. * @Description :
  3292. * @version : 1.0
  3293. * @Date : 2021-08-20 16:44:21
  3294. * @LastAuthor : LQ
  3295. * @lastTime : 2021-08-20 17:13:15
  3296. * @FilePath : /u-view2.0/uview-ui/libs/config/props/indexAnchor.js
  3297. */var _default =
  3298. {
  3299. // indexAnchor 组件
  3300. indexAnchor: {
  3301. text: '',
  3302. color: '#606266',
  3303. size: 14,
  3304. bgColor: '#dedede',
  3305. height: 32 } };exports.default = _default;
  3306. /***/ }),
  3307. /***/ 1171:
  3308. /*!*********************************************************************************!*\
  3309. !*** D:/data/zhonghong/saber-weixin/components/jyf-parser/libs/MpHtmlParser.js ***!
  3310. \*********************************************************************************/
  3311. /*! no static exports found */
  3312. /***/ (function(module, exports, __webpack_require__) {
  3313. function _classCallCheck(instance, Constructor) {if (!(instance instanceof Constructor)) {throw new TypeError("Cannot call a class as a function");}}function _defineProperties(target, props) {for (var i = 0; i < props.length; i++) {var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ("value" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);}}function _createClass(Constructor, protoProps, staticProps) {if (protoProps) _defineProperties(Constructor.prototype, protoProps);if (staticProps) _defineProperties(Constructor, staticProps);return Constructor;}function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;} /*
  3314. 将 html 解析为适用于小程序 rich-text 的 DOM 结构
  3315. github:https://github.com/jin-yufeng/Parser
  3316. docs:https://jin-yufeng.github.io/Parser
  3317. author:JinYufeng
  3318. update:2020/04/13
  3319. */
  3320. var cfg = __webpack_require__(/*! ./config.js */ 1172),
  3321. blankChar = cfg.blankChar,
  3322. CssHandler = __webpack_require__(/*! ./CssHandler.js */ 1173),_wx$getSystemInfoSync =
  3323. wx.getSystemInfoSync(),screenWidth = _wx$getSystemInfoSync.screenWidth,system = _wx$getSystemInfoSync.system;
  3324. var emoji; // emoji 补丁包 https://jin-yufeng.github.io/Parser/#/instructions?id=emoji
  3325. var MpHtmlParser = /*#__PURE__*/function () {"use strict";
  3326. function MpHtmlParser(data) {var _this = this;var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};_classCallCheck(this, MpHtmlParser);_defineProperty(this, "getName",
  3327. function (val) {return _this.xml ? val : val.toLowerCase();});_defineProperty(this, "isClose",
  3328. function () {return _this.data[_this.i] == '>' || _this.data[_this.i] == '/' && _this.data[_this.i + 1] == '>';});_defineProperty(this, "section",
  3329. function () {return _this.data.substring(_this.start, _this.i);});_defineProperty(this, "siblings",
  3330. function () {return _this.STACK.length ? _this.STACK[_this.STACK.length - 1].children : _this.DOM;});this.attrs = {};this.compress = options.compress;this.CssHandler = new CssHandler(options.tagStyle, screenWidth);this.data = data;this.domain = options.domain;this.DOM = [];this.i = this.start = this.audioNum = this.imgNum = this.videoNum = 0;this.protocol = this.domain && this.domain.includes('://') ? this.domain.split('://')[0] : '';this.state = this.Text;this.STACK = [];this.useAnchor = options.useAnchor;this.xml = options.xml;}_createClass(MpHtmlParser, [{ key: "parse", value: function parse() {if (emoji) this.data = emoji.parseEmoji(this.data);for (var c; c = this.data[this.i]; this.i++) {this.state(c);}if (this.state == this.Text) this.setText();while (this.STACK.length) {this.popNode(this.STACK.pop());}if (this.DOM.length) {this.DOM[0].PoweredBy = 'Parser';if (this.title) this.DOM[0].title = this.title;}return this.DOM;} // 设置属性
  3331. }, { key: "setAttr", value: function setAttr() {var name = this.getName(this.attrName);if (cfg.trustAttrs[name]) {if (!this.attrVal) {if (cfg.boolAttrs[name]) this.attrs[name] = 'T';} else if (name == 'src') this.attrs[name] = this.getUrl(this.attrVal.replace(/&amp;/g, '&'));else this.attrs[name] = this.attrVal;}this.attrVal = '';while (blankChar[this.data[this.i]]) {this.i++;}if (this.isClose()) this.setNode();else {this.start = this.i;this.state = this.AttrName;}} // 设置文本节点
  3332. }, { key: "setText", value: function setText() {var back,text = this.section();if (!text) return;text = cfg.onText && cfg.onText(text, function () {return back = true;}) || text;if (back) {this.data = this.data.substr(0, this.start) + text + this.data.substr(this.i);var _j = this.start + text.length;for (this.i = this.start; this.i < _j; this.i++) {this.state(this.data[this.i]);}return;}if (!this.pre) {// 合并空白符
  3333. var tmp = [];for (var _i = text.length, c; c = text[--_i];) {if (!blankChar[c] || !blankChar[tmp[0]] && (c = ' ')) tmp.unshift(c);}text = tmp.join('');if (text == ' ') return;} // 处理实体
  3334. var siblings = this.siblings(),i = -1,j,en;while (1) {if ((i = text.indexOf('&', i + 1)) == -1) break;if ((j = text.indexOf(';', i + 2)) == -1) break;if (text[i + 1] == '#') {en = parseInt((text[i + 2] == 'x' ? '0' : '') + text.substring(i + 2, j));if (!isNaN(en)) text = text.substr(0, i) + String.fromCharCode(en) + text.substring(j + 1);} else {en = text.substring(i + 1, j);if (en == 'nbsp') text = text.substr(0, i) + '\xA0' + text.substr(j + 1); // 解决 &nbsp; 失效
  3335. else if (en != 'lt' && en != 'gt' && en != 'amp' && en != 'ensp' && en != 'emsp' && en != 'quot' && en != 'apos') {i && siblings.push({ type: 'text', text: text.substr(0, i) });siblings.push({ type: 'text', text: "&".concat(en, ";"), en: 1 });text = text.substr(j + 1);i = -1;}}}text && siblings.push({ type: 'text', text: text });} // 设置元素节点
  3336. }, { key: "setNode", value: function setNode() {var node = { name: this.tagName.toLowerCase(), attrs: this.attrs },close = cfg.selfClosingTags[node.name] || this.xml && this.data[this.i] == '/';this.attrs = {};if (!cfg.ignoreTags[node.name]) {this.matchAttr(node);if (!close) {node.children = [];if (node.name == 'pre' && cfg.highlight) {this.remove(node);this.pre = node.pre = true;}this.siblings().push(node);this.STACK.push(node);} else if (!cfg.filter || cfg.filter(node, this) != false) this.siblings().push(node);} else {if (!close) this.remove(node);else if (node.name == 'source') {var parent = this.STACK[this.STACK.length - 1],attrs = node.attrs;if (parent && attrs.src) if (parent.name == 'video' || parent.name == 'audio') parent.attrs.source.push(attrs.src);else {var i,media = attrs.media;if (parent.name == 'picture' && !parent.attrs.src && !(attrs.src.indexOf('.webp') && system.includes('iOS')) && (!media || media.includes('px') && ((i = media.indexOf('min-width')) != -1 && (i = media.indexOf(':', i + 8)) != -1 && screenWidth > parseInt(media.substr(i + 1)) || (i = media.indexOf('max-width')) != -1 && (i = media.indexOf(':', i + 8)) != -1 && screenWidth < parseInt(media.substr(i + 1))))) parent.attrs.src = attrs.src;}} else if (node.name == 'base' && !this.domain) this.domain = node.attrs.href;}if (this.data[this.i] == '/') this.i++;this.start = this.i + 1;this.state = this.Text;} // 移除标签
  3337. }, { key: "remove", value: function remove(node) {var name = node.name,j = this.i;while (1) {if ((this.i = this.data.indexOf('</', this.i + 1)) == -1) {if (name == 'pre' || name == 'svg') this.i = j;else this.i = this.data.length;return;}this.start = this.i += 2;while (!blankChar[this.data[this.i]] && !this.isClose()) {this.i++;}if (this.getName(this.section()) == name) {// 代码块高亮
  3338. if (name == 'pre') {this.data = this.data.substr(0, j + 1) + cfg.highlight(this.data.substring(j + 1, this.i - 5), node.attrs) + this.data.substr(this.i - 5);return this.i = j;} else if (name == 'style') this.CssHandler.getStyle(this.data.substring(j + 1, this.i - 7));else if (name == 'title') this.title = this.data.substring(j + 1, this.i - 7);if ((this.i = this.data.indexOf('>', this.i)) == -1) this.i = this.data.length; // 处理 svg
  3339. if (name == 'svg') {var src = this.data.substring(j, this.i + 1);if (!node.attrs.xmlns) src = ' xmlns="http://www.w3.org/2000/svg"' + src;var i = j;while (this.data[j] != '<') {j--;}src = this.data.substring(j, i) + src;var parent = this.STACK[this.STACK.length - 1];if (node.attrs.width == '100%' && parent && (parent.attrs.style || '').includes('inline')) parent.attrs.style = 'width:300px;max-width:100%;' + parent.attrs.style;this.siblings().push({ name: 'img', attrs: { src: 'data:image/svg+xml;utf8,' + src.replace(/#/g, '%23'), ignore: 'T' } });}return;}}} // 处理属性
  3340. }, { key: "matchAttr", value: function matchAttr(node) {var attrs = node.attrs,style = this.CssHandler.match(node.name, attrs, node) + (attrs.style || ''),styleObj = {};if (attrs.id) {if (this.compress & 1) attrs.id = void 0;else if (this.useAnchor) this.bubble();}if (this.compress & 2 && attrs.class) attrs.class = void 0;switch (node.name) {case 'img':if (attrs['data-src']) {attrs.src = attrs.src || attrs['data-src'];attrs['data-src'] = void 0;}if (attrs.src && !attrs.ignore) {if (this.bubble()) attrs.i = (this.imgNum++).toString();else attrs.ignore = 'T';}break;case 'a':case 'ad':this.bubble();break;case 'font':if (attrs.color) {styleObj['color'] = attrs.color;attrs.color = void 0;}if (attrs.face) {styleObj['font-family'] = attrs.face;attrs.face = void 0;}if (attrs.size) {var size = parseInt(attrs.size);if (size < 1) size = 1;else if (size > 7) size = 7;var map = ['xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large'];styleObj['font-size'] = map[size - 1];attrs.size = void 0;}break;case 'video':case 'audio':if (!attrs.id) attrs.id = node.name + ++this["".concat(node.name, "Num")];else this["".concat(node.name, "Num")]++;if (node.name == 'video') {if (attrs.width) {style = "width:".concat(parseFloat(attrs.width) + (attrs.width.includes('%') ? '%' : 'px'), ";").concat(style);attrs.width = void 0;}if (attrs.height) {style = "height:".concat(parseFloat(attrs.height) + (attrs.height.includes('%') ? '%' : 'px'), ";").concat(style);attrs.height = void 0;}if (this.videoNum > 3) node.lazyLoad = true;}attrs.source = [];if (attrs.src) attrs.source.push(attrs.src);if (!attrs.controls && !attrs.autoplay) console.warn("\u5B58\u5728\u6CA1\u6709 controls \u5C5E\u6027\u7684 ".concat(node.name, " \u6807\u7B7E\uFF0C\u53EF\u80FD\u5BFC\u81F4\u65E0\u6CD5\u64AD\u653E"), node);this.bubble();break;case 'td':case 'th':if (attrs.colspan || attrs.rowspan) for (var k = this.STACK.length, item; item = this.STACK[--k];) {if (item.name == 'table') {item.c = void 0;break;}}}if (attrs.align) {styleObj['text-align'] = attrs.align;attrs.align = void 0;} // 压缩 style
  3341. var styles = style.replace(/&quot;/g, '"').replace(/&amp;/g, '&').split(';');style = '';for (var i = 0, len = styles.length; i < len; i++) {var info = styles[i].split(':');if (info.length < 2) continue;var _key = info[0].trim().toLowerCase(),_value = info.slice(1).join(':').trim();if (_value.includes('-webkit') || _value.includes('-moz') || _value.includes('-ms') || _value.includes('-o') || _value.includes('safe')) style += ";".concat(_key, ":").concat(_value);else if (!styleObj[_key] || _value.includes('import') || !styleObj[_key].includes('import')) styleObj[_key] = _value;}if (node.name == 'img' && parseInt(styleObj.width || attrs.width) > screenWidth) styleObj.height = 'auto';for (var key in styleObj) {var value = styleObj[key];if (key.includes('flex') || key == 'order' || key == 'self-align') node.c = 1; // 填充链接
  3342. if (value.includes('url')) {var j = value.indexOf('(');if (j++ != -1) {while (value[j] == '"' || value[j] == "'" || blankChar[value[j]]) {j++;}value = value.substr(0, j) + this.getUrl(value.substr(j));}} // 转换 rpx
  3343. else if (value.includes('rpx')) value = value.replace(/[0-9.]+\s*rpx/g, function ($) {return parseFloat($) * screenWidth / 750 + 'px';});else if (key == 'white-space' && value.includes('pre')) this.pre = node.pre = true;style += ";".concat(key, ":").concat(value);}style = style.substr(1);if (style) attrs.style = style;} // 节点出栈处理
  3344. }, { key: "popNode", value: function popNode(node) {// 空白符处理
  3345. if (node.pre) {node.pre = this.pre = void 0;for (var i = this.STACK.length; i--;) {if (this.STACK[i].pre) this.pre = true;}}if (node.name == 'head' || cfg.filter && cfg.filter(node, this) == false) return this.siblings().pop();var attrs = node.attrs; // 替换一些标签名
  3346. if (node.name == 'picture') {node.name = 'img';if (!attrs.src && (node.children[0] || '').name == 'img') attrs.src = node.children[0].attrs.src;if (attrs.src && !attrs.ignore) attrs.i = (this.imgNum++).toString();return node.children = void 0;}if (cfg.blockTags[node.name]) node.name = 'div';else if (!cfg.trustTags[node.name]) node.name = 'span'; // 处理列表
  3347. if (node.c) {if (node.name == 'ul') {var floor = 1;for (var _i2 = this.STACK.length; _i2--;) {if (this.STACK[_i2].name == 'ul') floor++;}if (floor != 1) for (var _i3 = node.children.length; _i3--;) {node.children[_i3].floor = floor;}} else if (node.name == 'ol') {for (var _i4 = 0, num = 1, child; child = node.children[_i4++];) {if (child.name == 'li') {child.type = 'ol';child.num = function (num, type) {if (type == 'a') return String.fromCharCode(97 + (num - 1) % 26);if (type == 'A') return String.fromCharCode(65 + (num - 1) % 26);if (type == 'i' || type == 'I') {num = (num - 1) % 99 + 1;var one = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'],ten = ['X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'],res = (ten[Math.floor(num / 10) - 1] || '') + (one[num % 10 - 1] || '');if (type == 'i') return res.toLowerCase();return res;}return num;}(num++, attrs.type) + '.';}}}} // 处理表格的边框
  3348. if (node.name == 'table') {var padding = attrs.cellpadding,spacing = attrs.cellspacing,border = attrs.border;if (node.c) {this.bubble();if (!padding) padding = 2;if (!spacing) spacing = 2;}if (border) attrs.style = "border:".concat(border, "px solid gray;").concat(attrs.style || '');if (spacing) attrs.style = "border-spacing:".concat(spacing, "px;").concat(attrs.style || '');if (border || padding) (function f(ns) {for (var i = 0, n; n = ns[i]; i++) {if (n.name == 'th' || n.name == 'td') {if (border) n.attrs.style = "border:".concat(border, "px solid gray;").concat(n.attrs.style);if (padding) n.attrs.style = "padding:".concat(padding, "px;").concat(n.attrs.style);} else f(n.children || []);}})(node.children);}this.CssHandler.pop && this.CssHandler.pop(node); // 自动压缩
  3349. if (node.name == 'div' && !Object.keys(attrs).length) {var siblings = this.siblings();if (node.children.length == 1 && node.children[0].name == 'div') siblings[siblings.length - 1] = node.children[0];}} // 工具函数
  3350. }, { key: "bubble", value: function bubble() {for (var i = this.STACK.length, item; item = this.STACK[--i];) {if (cfg.richOnlyTags[item.name]) {if (item.name == 'table' && !Object.hasOwnProperty.call(item, 'c')) item.c = 1;return false;}item.c = 1;}return true;} }, { key: "getUrl", value: function getUrl(url) {if (url[0] == '/') {if (url[1] == '/') url = this.protocol + ':' + url;else if (this.domain) url = this.domain + url;} else if (this.domain && url.indexOf('data:') != 0 && !url.includes('://')) url = this.domain + '/' + url;return url;} }, { key: "Text", // 状态机
  3351. value: function Text(c) {if (c == '<') {var next = this.data[this.i + 1],isLetter = function isLetter(c) {return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z';};if (isLetter(next)) {this.setText();this.start = this.i + 1;this.state = this.TagName;} else if (next == '/') {this.setText();if (isLetter(this.data[++this.i + 1])) {this.start = this.i + 1;this.state = this.EndTag;} else this.Comment();} else if (next == '!') {this.setText();this.Comment();}}
  3352. } }, { key: "Comment", value: function Comment()
  3353. {
  3354. var key;
  3355. if (this.data.substring(this.i + 2, this.i + 4) == '--') key = '-->';else
  3356. if (this.data.substring(this.i + 2, this.i + 9) == '[CDATA[') key = ']]>';else
  3357. key = '>';
  3358. if ((this.i = this.data.indexOf(key, this.i + 2)) == -1) this.i = this.data.length;else
  3359. this.i += key.length - 1;
  3360. this.start = this.i + 1;
  3361. this.state = this.Text;
  3362. } }, { key: "TagName", value: function TagName(
  3363. c) {
  3364. if (blankChar[c]) {
  3365. this.tagName = this.section();
  3366. while (blankChar[this.data[this.i]]) {this.i++;}
  3367. if (this.isClose()) this.setNode();else
  3368. {
  3369. this.start = this.i;
  3370. this.state = this.AttrName;
  3371. }
  3372. } else if (this.isClose()) {
  3373. this.tagName = this.section();
  3374. this.setNode();
  3375. }
  3376. } }, { key: "AttrName", value: function AttrName(
  3377. c) {
  3378. var blank = blankChar[c];
  3379. if (blank) {
  3380. this.attrName = this.section();
  3381. c = this.data[this.i];
  3382. }
  3383. if (c == '=') {
  3384. if (!blank) this.attrName = this.section();
  3385. while (blankChar[this.data[++this.i]]) {;}
  3386. this.start = this.i--;
  3387. this.state = this.AttrValue;
  3388. } else if (blank) this.setAttr();else
  3389. if (this.isClose()) {
  3390. this.attrName = this.section();
  3391. this.setAttr();
  3392. }
  3393. } }, { key: "AttrValue", value: function AttrValue(
  3394. c) {
  3395. if (c == '"' || c == "'") {
  3396. this.start++;
  3397. if ((this.i = this.data.indexOf(c, this.i + 1)) == -1) return this.i = this.data.length;
  3398. this.attrVal = this.section();
  3399. this.i++;
  3400. } else {
  3401. for (; !blankChar[this.data[this.i]] && !this.isClose(); this.i++) {;}
  3402. this.attrVal = this.section();
  3403. }
  3404. this.setAttr();
  3405. } }, { key: "EndTag", value: function EndTag(
  3406. c) {
  3407. if (blankChar[c] || c == '>' || c == '/') {
  3408. var name = this.getName(this.section());
  3409. for (var i = this.STACK.length; i--;) {
  3410. if (this.STACK[i].name == name) break;}
  3411. if (i != -1) {
  3412. var node;
  3413. while ((node = this.STACK.pop()).name != name) {;}
  3414. this.popNode(node);
  3415. } else if (name == 'p' || name == 'br')
  3416. this.siblings().push({
  3417. name: name,
  3418. attrs: {} });
  3419. this.i = this.data.indexOf('>', this.i);
  3420. this.start = this.i + 1;
  3421. if (this.i == -1) this.i = this.data.length;else
  3422. this.state = this.Text;
  3423. }
  3424. } }]);return MpHtmlParser;}();
  3425. module.exports = MpHtmlParser;
  3426. /***/ }),
  3427. /***/ 1172:
  3428. /*!***************************************************************************!*\
  3429. !*** D:/data/zhonghong/saber-weixin/components/jyf-parser/libs/config.js ***!
  3430. \***************************************************************************/
  3431. /*! no static exports found */
  3432. /***/ (function(module, exports) {
  3433. /* 配置文件 */
  3434. var canIUse = wx.canIUse('editor'); // 高基础库标识,用于兼容
  3435. module.exports = {
  3436. // 过滤器函数
  3437. filter: null,
  3438. // 代码高亮函数
  3439. highlight: null,
  3440. // 文本处理函数
  3441. onText: null,
  3442. blankChar: makeMap(' ,\xA0,\t,\r,\n,\f'),
  3443. // 块级标签,将被转为 div
  3444. blockTags: makeMap('address,article,aside,body,caption,center,cite,footer,header,html,nav,section' + (
  3445. canIUse ? '' :
  3446. ',pre')),
  3447. // 将被移除的标签
  3448. ignoreTags: makeMap(
  3449. 'area,base,basefont,canvas,command,frame,input,isindex,keygen,link,map,meta,param,script,source,style,svg,textarea,title,track,use,wbr' + (
  3450. canIUse ? ',rp' : '') +
  3451. ',embed,iframe'),
  3452. // 只能被 rich-text 显示的标签
  3453. richOnlyTags: makeMap('a,colgroup,fieldset,legend,picture,table' + (
  3454. canIUse ? ',bdi,bdo,caption,rt,ruby' : '')),
  3455. // 自闭合的标签
  3456. selfClosingTags: makeMap(
  3457. 'area,base,basefont,br,col,circle,ellipse,embed,frame,hr,img,input,isindex,keygen,line,link,meta,param,path,polygon,rect,source,track,use,wbr'),
  3458. // 信任的属性
  3459. trustAttrs: makeMap(
  3460. 'align,alt,app-id,author,autoplay,border,cellpadding,cellspacing,class,color,colspan,controls,data-src,dir,face,height,href,id,ignore,loop,media,muted,name,path,poster,rowspan,size,span,src,start,style,type,unit-id,width,xmlns'),
  3461. // bool 型的属性
  3462. boolAttrs: makeMap('autoplay,controls,ignore,loop,muted'),
  3463. // 信任的标签
  3464. trustTags: makeMap(
  3465. 'a,abbr,ad,audio,b,blockquote,br,code,col,colgroup,dd,del,dl,dt,div,em,fieldset,h1,h2,h3,h4,h5,h6,hr,i,img,ins,label,legend,li,ol,p,q,source,span,strong,sub,sup,table,tbody,td,tfoot,th,thead,tr,title,ul,video' + (
  3466. canIUse ? ',bdi,bdo,caption,pre,rt,ruby' : '')),
  3467. // 默认的标签样式
  3468. userAgentStyles: {
  3469. address: 'font-style:italic',
  3470. big: 'display:inline;font-size:1.2em',
  3471. blockquote: 'background-color:#f6f6f6;border-left:3px solid #dbdbdb;color:#6c6c6c;padding:5px 0 5px 10px',
  3472. caption: 'display:table-caption;text-align:center',
  3473. center: 'text-align:center',
  3474. cite: 'font-style:italic',
  3475. dd: 'margin-left:40px',
  3476. img: 'max-width:100%',
  3477. mark: 'background-color:yellow',
  3478. picture: 'max-width:100%',
  3479. pre: 'font-family:monospace;white-space:pre;overflow:scroll',
  3480. s: 'text-decoration:line-through',
  3481. small: 'display:inline;font-size:0.8em',
  3482. u: 'text-decoration:underline' } };
  3483. function makeMap(maprichee55text9oppplugin) {
  3484. var map = {},
  3485. list = maprichee55text9oppplugin.split(',');
  3486. for (var i = list.length; i--;) {
  3487. map[list[i]] = true;}
  3488. return map;
  3489. }
  3490. /***/ }),
  3491. /***/ 1173:
  3492. /*!*******************************************************************************!*\
  3493. !*** D:/data/zhonghong/saber-weixin/components/jyf-parser/libs/CssHandler.js ***!
  3494. \*******************************************************************************/
  3495. /*! no static exports found */
  3496. /***/ (function(module, exports, __webpack_require__) {
  3497. function _classCallCheck(instance, Constructor) {if (!(instance instanceof Constructor)) {throw new TypeError("Cannot call a class as a function");}}function _defineProperties(target, props) {for (var i = 0; i < props.length; i++) {var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ("value" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);}}function _createClass(Constructor, protoProps, staticProps) {if (protoProps) _defineProperties(Constructor.prototype, protoProps);if (staticProps) _defineProperties(Constructor, staticProps);return Constructor;}function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;} /*
  3498. 解析和匹配 Css 的选择器
  3499. github:https://github.com/jin-yufeng/Parser
  3500. docs:https://jin-yufeng.github.io/Parser
  3501. author:JinYufeng
  3502. update:2020/03/15
  3503. */
  3504. var cfg = __webpack_require__(/*! ./config.js */ 1172);var
  3505. CssHandler = /*#__PURE__*/function () {"use strict";
  3506. function CssHandler(tagStyle) {var _this = this;_classCallCheck(this, CssHandler);_defineProperty(this, "getStyle",
  3507. function (data) {return _this.styles = new CssParser(data, _this.styles).parse();});var styles = Object.assign({}, cfg.userAgentStyles);for (var item in tagStyle) {styles[item] = (styles[item] ? styles[item] + ';' : '') + tagStyle[item];}this.styles = styles;}_createClass(CssHandler, [{ key: "match", value: function match(
  3508. name, attrs) {
  3509. var tmp,matched = (tmp = this.styles[name]) ? tmp + ';' : '';
  3510. if (attrs.class) {
  3511. var items = attrs.class.split(' ');
  3512. for (var i = 0, item; item = items[i]; i++) {
  3513. if (tmp = this.styles['.' + item])
  3514. matched += tmp + ';';}
  3515. }
  3516. if (tmp = this.styles['#' + attrs.id])
  3517. matched += tmp + ';';
  3518. return matched;
  3519. } }]);return CssHandler;}();
  3520. module.exports = CssHandler;var
  3521. CssParser = /*#__PURE__*/function () {"use strict";
  3522. function CssParser(data, init) {var _this2 = this;_classCallCheck(this, CssParser);_defineProperty(this, "section",
  3523. function () {return _this2.data.substring(_this2.start, _this2.i);});_defineProperty(this, "isLetter",
  3524. function (c) {return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z';});this.data = data;this.floor = 0;this.i = 0;this.list = [];this.res = init;this.state = this.Space;}_createClass(CssParser, [{ key: "parse", value: function parse() {for (var c; c = this.data[this.i]; this.i++) {this.state(c);}return this.res;} }, { key: "Space",
  3525. // 状态机
  3526. value: function Space(c) {
  3527. if (c == '.' || c == '#' || this.isLetter(c)) {
  3528. this.start = this.i;
  3529. this.state = this.Name;
  3530. } else if (c == '/' && this.data[this.i + 1] == '*')
  3531. this.Comment();else
  3532. if (!cfg.blankChar[c] && c != ';')
  3533. this.state = this.Ignore;
  3534. } }, { key: "Comment", value: function Comment()
  3535. {
  3536. this.i = this.data.indexOf('*/', this.i) + 1;
  3537. if (!this.i) this.i = this.data.length;
  3538. this.state = this.Space;
  3539. } }, { key: "Ignore", value: function Ignore(
  3540. c) {
  3541. if (c == '{') this.floor++;else
  3542. if (c == '}' && ! --this.floor) this.state = this.Space;
  3543. } }, { key: "Name", value: function Name(
  3544. c) {
  3545. if (cfg.blankChar[c]) {
  3546. this.list.push(this.section());
  3547. this.state = this.NameSpace;
  3548. } else if (c == '{') {
  3549. this.list.push(this.section());
  3550. this.Content();
  3551. } else if (c == ',') {
  3552. this.list.push(this.section());
  3553. this.Comma();
  3554. } else if (!this.isLetter(c) && (c < '0' || c > '9') && c != '-' && c != '_')
  3555. this.state = this.Ignore;
  3556. } }, { key: "NameSpace", value: function NameSpace(
  3557. c) {
  3558. if (c == '{') this.Content();else
  3559. if (c == ',') this.Comma();else
  3560. if (!cfg.blankChar[c]) this.state = this.Ignore;
  3561. } }, { key: "Comma", value: function Comma()
  3562. {
  3563. while (cfg.blankChar[this.data[++this.i]]) {;}
  3564. if (this.data[this.i] == '{') this.Content();else
  3565. {
  3566. this.start = this.i--;
  3567. this.state = this.Name;
  3568. }
  3569. } }, { key: "Content", value: function Content()
  3570. {
  3571. this.start = ++this.i;
  3572. if ((this.i = this.data.indexOf('}', this.i)) == -1) this.i = this.data.length;
  3573. var content = this.section();
  3574. for (var i = 0, item; item = this.list[i++];) {
  3575. if (this.res[item]) this.res[item] += ';' + content;else
  3576. this.res[item] = content;}
  3577. this.list = [];
  3578. this.state = this.Space;
  3579. } }]);return CssParser;}();
  3580. /***/ }),
  3581. /***/ 118:
  3582. /*!******************************************************************************************!*\
  3583. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/indexList.js ***!
  3584. \******************************************************************************************/
  3585. /*! no static exports found */
  3586. /***/ (function(module, exports, __webpack_require__) {
  3587. "use strict";
  3588. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  3589. * @Author : LQ
  3590. * @Description :
  3591. * @version : 1.0
  3592. * @Date : 2021-08-20 16:44:21
  3593. * @LastAuthor : LQ
  3594. * @lastTime : 2021-08-20 17:13:35
  3595. * @FilePath : /u-view2.0/uview-ui/libs/config/props/indexList.js
  3596. */var _default =
  3597. {
  3598. // indexList 组件
  3599. indexList: {
  3600. inactiveColor: '#606266',
  3601. activeColor: '#5677fc',
  3602. indexList: function indexList() {return [];},
  3603. sticky: true,
  3604. customNavHeight: 0 } };exports.default = _default;
  3605. /***/ }),
  3606. /***/ 119:
  3607. /*!**************************************************************************************!*\
  3608. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/input.js ***!
  3609. \**************************************************************************************/
  3610. /*! no static exports found */
  3611. /***/ (function(module, exports, __webpack_require__) {
  3612. "use strict";
  3613. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  3614. * @Author : LQ
  3615. * @Description :
  3616. * @version : 1.0
  3617. * @Date : 2021-08-20 16:44:21
  3618. * @LastAuthor : LQ
  3619. * @lastTime : 2021-08-20 17:13:55
  3620. * @FilePath : /u-view2.0/uview-ui/libs/config/props/input.js
  3621. */var _default =
  3622. {
  3623. // index 组件
  3624. input: {
  3625. value: '',
  3626. type: 'text',
  3627. fixed: false,
  3628. disabled: false,
  3629. disabledColor: '#f5f7fa',
  3630. clearable: false,
  3631. password: false,
  3632. maxlength: -1,
  3633. placeholder: null,
  3634. placeholderClass: 'input-placeholder',
  3635. placeholderStyle: 'color: #c0c4cc',
  3636. showWordLimit: false,
  3637. confirmType: 'done',
  3638. confirmHold: false,
  3639. holdKeyboard: false,
  3640. focus: false,
  3641. autoBlur: false,
  3642. disableDefaultPadding: false,
  3643. cursor: -1,
  3644. cursorSpacing: 30,
  3645. selectionStart: -1,
  3646. selectionEnd: -1,
  3647. adjustPosition: true,
  3648. inputAlign: 'left',
  3649. fontSize: '15px',
  3650. color: '#303133',
  3651. prefixIcon: '',
  3652. prefixIconStyle: '',
  3653. suffixIcon: '',
  3654. suffixIconStyle: '',
  3655. border: 'surround',
  3656. readonly: false,
  3657. shape: 'square',
  3658. formatter: null } };exports.default = _default;
  3659. /***/ }),
  3660. /***/ 12:
  3661. /*!****************************************************!*\
  3662. !*** D:/data/zhonghong/saber-weixin/libs/login.js ***!
  3663. \****************************************************/
  3664. /*! no static exports found */
  3665. /***/ (function(module, exports, __webpack_require__) {
  3666. "use strict";
  3667. /* WEBPACK VAR INJECTION */(function(uni) {Object.defineProperty(exports, "__esModule", { value: true });exports.checkLogin = checkLogin;exports.toLogin = void 0;
  3668. var _store = _interopRequireDefault(__webpack_require__(/*! ../store */ 13));
  3669. var _cache = _interopRequireDefault(__webpack_require__(/*! ../utils/cache */ 33));
  3670. var _validate = __webpack_require__(/*! @/utils/validate.js */ 37);
  3671. var _cache2 = __webpack_require__(/*! ./../config/cache */ 32);
  3672. var _routine = _interopRequireDefault(__webpack_require__(/*! @/libs/routine */ 38));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} // +----------------------------------------------------------------------
  3673. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  3674. // +----------------------------------------------------------------------
  3675. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  3676. // +----------------------------------------------------------------------
  3677. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  3678. // +----------------------------------------------------------------------
  3679. // | Author: CRMEB Team <admin@crmeb.com>
  3680. // +----------------------------------------------------------------------
  3681. function prePage() {var pages = getCurrentPages();var prePage = pages[pages.length - 1];return prePage.route;
  3682. }
  3683. var toLogin = (0, _validate.Debounce)(_toLogin, 800);exports.toLogin = toLogin;
  3684. function _toLogin(push, pathLogin) {
  3685. _store.default.commit("LOGOUT");
  3686. var path = prePage();
  3687. if (!pathLogin)
  3688. pathLogin = '/page/users/login/index';
  3689. _cache.default.set('login_back_url', path);
  3690. uni.navigateTo({
  3691. url: '/pages/users/wechat_login/index' });
  3692. // Routine.getCode()
  3693. // .then(code => {
  3694. // console.log(code)
  3695. // Routine.silenceAuth(code).then(res => {
  3696. // console.log(res)
  3697. // })
  3698. // })
  3699. // .catch(err => {
  3700. // uni.hideLoading();
  3701. // });
  3702. }
  3703. function checkLogin() {
  3704. var token = _cache.default.get(_cache2.LOGIN_STATUS);
  3705. // let token
  3706. var expiresTime = _cache.default.get(_cache2.EXPIRES_TIME);
  3707. // let newTime = Math.round(new Date() / 1000);
  3708. if (!token) {
  3709. uni.setStorageSync('authIng', false);
  3710. _cache.default.clear(_cache2.LOGIN_STATUS);
  3711. _cache.default.clear(_cache2.EXPIRES_TIME);
  3712. _cache.default.clear(_cache2.USER_INFO);
  3713. _cache.default.clear(_cache2.STATE_R_KEY);
  3714. return false;
  3715. } else {
  3716. _store.default.commit('UPDATE_LOGIN', token);
  3717. var userInfo = _cache.default.get(_cache2.USER_INFO, true);
  3718. if (userInfo) {
  3719. _store.default.commit('UPDATE_USERINFO', userInfo);
  3720. }
  3721. return true;
  3722. }
  3723. }
  3724. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["default"]))
  3725. /***/ }),
  3726. /***/ 120:
  3727. /*!*****************************************************************************************!*\
  3728. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/keyboard.js ***!
  3729. \*****************************************************************************************/
  3730. /*! no static exports found */
  3731. /***/ (function(module, exports, __webpack_require__) {
  3732. "use strict";
  3733. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  3734. * @Author : LQ
  3735. * @Description :
  3736. * @version : 1.0
  3737. * @Date : 2021-08-20 16:44:21
  3738. * @LastAuthor : LQ
  3739. * @lastTime : 2021-08-20 17:07:49
  3740. * @FilePath : /u-view2.0/uview-ui/libs/config/props/keyboard.js
  3741. */var _default =
  3742. {
  3743. // 键盘组件
  3744. keyboard: {
  3745. mode: 'number',
  3746. dotDisabled: false,
  3747. tooltip: true,
  3748. showTips: true,
  3749. tips: '',
  3750. showCancel: true,
  3751. showConfirm: true,
  3752. random: false,
  3753. safeAreaInsetBottom: true,
  3754. closeOnClickOverlay: true,
  3755. show: false,
  3756. overlay: true,
  3757. zIndex: 10075,
  3758. cancelText: '取消',
  3759. confirmText: '确定',
  3760. autoChange: false } };exports.default = _default;
  3761. /***/ }),
  3762. /***/ 1202:
  3763. /*!*****************************************************************************************!*\
  3764. !*** D:/data/zhonghong/saber-weixin/pages/goods/components/lottery/js/grids_lottery.js ***!
  3765. \*****************************************************************************************/
  3766. /*! no static exports found */
  3767. /***/ (function(module, exports) {
  3768. function LotteryDraw(obj, callback) {
  3769. this.timer = null; //计时器
  3770. this.startIndex = obj.startIndex - 1 || 0; //从第几个位置开始抽奖 [默认为零]
  3771. this.count = 0; //计数,跑的圈数
  3772. this.winingIndex = obj.winingIndex || 0; //获奖的位置
  3773. this.totalCount = obj.totalCount || 6; //抽奖跑的圈数
  3774. this.speed = obj.speed || 100;
  3775. this.domData = obj.domData;
  3776. this.rollFn();
  3777. this.callback = callback;
  3778. }
  3779. LotteryDraw.prototype = {
  3780. rollFn: function rollFn() {
  3781. var that = this;
  3782. // console.log(`获奖位置:${this.winingIndex}`)
  3783. // 活动index值增加,即移动到下一个格子
  3784. this.startIndex++;
  3785. //startIndex是最后一个时一圈走完,重新开始
  3786. if (this.startIndex >= this.domData.length - 1) {
  3787. this.startIndex = 0;
  3788. this.count++;
  3789. }
  3790. // 当跑的圈数等于设置的圈数,且活动的index值是奖品的位置时停止
  3791. if (this.count >= this.totalCount && this.startIndex === this.winingIndex) {
  3792. if (typeof this.callback === 'function') {
  3793. setTimeout(function () {
  3794. that.callback(that.startIndex, that.count); //执行回调函数,抽奖完成的相关操作
  3795. }, 400);
  3796. }
  3797. clearInterval(this.timer);
  3798. } else {//重新开始一圈
  3799. if (this.count >= this.totalCount - 1) {
  3800. this.speed += 30;
  3801. }
  3802. this.timer = setTimeout(function () {
  3803. that.callback(that.startIndex, that.count);
  3804. that.rollFn();
  3805. }, this.speed);
  3806. }
  3807. } };
  3808. module.exports = LotteryDraw;
  3809. /***/ }),
  3810. /***/ 121:
  3811. /*!*************************************************************************************!*\
  3812. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/line.js ***!
  3813. \*************************************************************************************/
  3814. /*! no static exports found */
  3815. /***/ (function(module, exports, __webpack_require__) {
  3816. "use strict";
  3817. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  3818. * @Author : LQ
  3819. * @Description :
  3820. * @version : 1.0
  3821. * @Date : 2021-08-20 16:44:21
  3822. * @LastAuthor : LQ
  3823. * @lastTime : 2021-08-20 17:04:49
  3824. * @FilePath : /u-view2.0/uview-ui/libs/config/props/line.js
  3825. */var _default =
  3826. {
  3827. // line组件
  3828. line: {
  3829. color: '#d6d7d9',
  3830. length: '100%',
  3831. direction: 'row',
  3832. hairline: true,
  3833. margin: 0,
  3834. dashed: false } };exports.default = _default;
  3835. /***/ }),
  3836. /***/ 122:
  3837. /*!*********************************************************************************************!*\
  3838. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/lineProgress.js ***!
  3839. \*********************************************************************************************/
  3840. /*! no static exports found */
  3841. /***/ (function(module, exports, __webpack_require__) {
  3842. "use strict";
  3843. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  3844. * @Author : LQ
  3845. * @Description :
  3846. * @version : 1.0
  3847. * @Date : 2021-08-20 16:44:21
  3848. * @LastAuthor : LQ
  3849. * @lastTime : 2021-08-20 17:14:11
  3850. * @FilePath : /u-view2.0/uview-ui/libs/config/props/lineProgress.js
  3851. */var _default =
  3852. {
  3853. // lineProgress 组件
  3854. lineProgress: {
  3855. activeColor: '#19be6b',
  3856. inactiveColor: '#ececec',
  3857. percentage: 0,
  3858. showText: true,
  3859. height: 12 } };exports.default = _default;
  3860. /***/ }),
  3861. /***/ 123:
  3862. /*!*************************************************************************************!*\
  3863. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/link.js ***!
  3864. \*************************************************************************************/
  3865. /*! no static exports found */
  3866. /***/ (function(module, exports, __webpack_require__) {
  3867. "use strict";
  3868. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;
  3869. var _config = _interopRequireDefault(__webpack_require__(/*! ../config */ 82));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} /*
  3870. * @Author : LQ
  3871. * @Description :
  3872. * @version : 1.0
  3873. * @Date : 2021-08-20 16:44:21
  3874. * @LastAuthor : LQ
  3875. * @lastTime : 2021-08-20 17:45:36
  3876. * @FilePath : /u-view2.0/uview-ui/libs/config/props/link.js
  3877. */var color = _config.default.color;var _default = { // link超链接组件props参数
  3878. link: { color: color['u-primary'], fontSize: 15,
  3879. underLine: false,
  3880. href: '',
  3881. mpTips: '链接已复制,请在浏览器打开',
  3882. lineColor: '',
  3883. text: '' } };exports.default = _default;
  3884. /***/ }),
  3885. /***/ 124:
  3886. /*!*************************************************************************************!*\
  3887. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/list.js ***!
  3888. \*************************************************************************************/
  3889. /*! no static exports found */
  3890. /***/ (function(module, exports, __webpack_require__) {
  3891. "use strict";
  3892. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  3893. * @Author : LQ
  3894. * @Description :
  3895. * @version : 1.0
  3896. * @Date : 2021-08-20 16:44:21
  3897. * @LastAuthor : LQ
  3898. * @lastTime : 2021-08-20 17:14:53
  3899. * @FilePath : /u-view2.0/uview-ui/libs/config/props/list.js
  3900. */var _default =
  3901. {
  3902. // list 组件
  3903. list: {
  3904. showScrollbar: false,
  3905. lowerThreshold: 50,
  3906. upperThreshold: 0,
  3907. scrollTop: 0,
  3908. offsetAccuracy: 10,
  3909. enableFlex: false,
  3910. pagingEnabled: false,
  3911. scrollable: true,
  3912. scrollIntoView: '',
  3913. scrollWithAnimation: false,
  3914. enableBackToTop: false,
  3915. height: 0,
  3916. width: 0,
  3917. preLoadScreen: 1 } };exports.default = _default;
  3918. /***/ }),
  3919. /***/ 125:
  3920. /*!*****************************************************************************************!*\
  3921. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/listItem.js ***!
  3922. \*****************************************************************************************/
  3923. /*! no static exports found */
  3924. /***/ (function(module, exports, __webpack_require__) {
  3925. "use strict";
  3926. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  3927. * @Author : LQ
  3928. * @Description :
  3929. * @version : 1.0
  3930. * @Date : 2021-08-20 16:44:21
  3931. * @LastAuthor : LQ
  3932. * @lastTime : 2021-08-20 17:15:40
  3933. * @FilePath : /u-view2.0/uview-ui/libs/config/props/listItem.js
  3934. */var _default =
  3935. {
  3936. // listItem 组件
  3937. listItem: {
  3938. anchor: '' } };exports.default = _default;
  3939. /***/ }),
  3940. /***/ 126:
  3941. /*!********************************************************************************************!*\
  3942. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/loadingIcon.js ***!
  3943. \********************************************************************************************/
  3944. /*! no static exports found */
  3945. /***/ (function(module, exports, __webpack_require__) {
  3946. "use strict";
  3947. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;
  3948. var _config = _interopRequireDefault(__webpack_require__(/*! ../config */ 82));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} /*
  3949. * @Author : LQ
  3950. * @Description :
  3951. * @version : 1.0
  3952. * @Date : 2021-08-20 16:44:21
  3953. * @LastAuthor : LQ
  3954. * @lastTime : 2021-08-20 17:45:47
  3955. * @FilePath : /u-view2.0/uview-ui/libs/config/props/loadingIcon.js
  3956. */var color = _config.default.color;var _default = { // loading-icon加载中图标组件
  3957. loadingIcon: { show: true, color: color['u-tips-color'],
  3958. textColor: color['u-tips-color'],
  3959. vertical: false,
  3960. mode: 'spinner',
  3961. size: 24,
  3962. textSize: 15,
  3963. text: '',
  3964. timingFunction: 'ease-in-out',
  3965. duration: 1200,
  3966. inactiveColor: '' } };exports.default = _default;
  3967. /***/ }),
  3968. /***/ 127:
  3969. /*!********************************************************************************************!*\
  3970. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/loadingPage.js ***!
  3971. \********************************************************************************************/
  3972. /*! no static exports found */
  3973. /***/ (function(module, exports, __webpack_require__) {
  3974. "use strict";
  3975. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  3976. * @Author : LQ
  3977. * @Description :
  3978. * @version : 1.0
  3979. * @Date : 2021-08-20 16:44:21
  3980. * @LastAuthor : LQ
  3981. * @lastTime : 2021-08-20 17:00:23
  3982. * @FilePath : /u-view2.0/uview-ui/libs/config/props/loadingPage.js
  3983. */var _default =
  3984. {
  3985. // loading-page组件
  3986. loadingPage: {
  3987. loadingText: '正在加载',
  3988. image: '',
  3989. loadingMode: 'circle',
  3990. loading: false,
  3991. bgColor: '#ffffff',
  3992. color: '#C8C8C8',
  3993. fontSize: 19,
  3994. iconSize: 28,
  3995. loadingColor: '#C8C8C8' } };exports.default = _default;
  3996. /***/ }),
  3997. /***/ 128:
  3998. /*!*****************************************************************************************!*\
  3999. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/loadmore.js ***!
  4000. \*****************************************************************************************/
  4001. /*! no static exports found */
  4002. /***/ (function(module, exports, __webpack_require__) {
  4003. "use strict";
  4004. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  4005. * @Author : LQ
  4006. * @Description :
  4007. * @version : 1.0
  4008. * @Date : 2021-08-20 16:44:21
  4009. * @LastAuthor : LQ
  4010. * @lastTime : 2021-08-20 17:15:26
  4011. * @FilePath : /u-view2.0/uview-ui/libs/config/props/loadmore.js
  4012. */var _default =
  4013. {
  4014. // loadmore 组件
  4015. loadmore: {
  4016. status: 'loadmore',
  4017. bgColor: 'transparent',
  4018. icon: true,
  4019. fontSize: 14,
  4020. iconSize: 17,
  4021. color: '#606266',
  4022. loadingIcon: 'spinner',
  4023. loadmoreText: '加载更多',
  4024. loadingText: '正在加载...',
  4025. nomoreText: '没有更多了',
  4026. isDot: false,
  4027. iconColor: '#b7b7b7',
  4028. marginTop: 10,
  4029. marginBottom: 10,
  4030. height: 'auto',
  4031. line: false,
  4032. lineColor: '#E6E8EB',
  4033. dashed: false } };exports.default = _default;
  4034. /***/ }),
  4035. /***/ 129:
  4036. /*!**************************************************************************************!*\
  4037. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/modal.js ***!
  4038. \**************************************************************************************/
  4039. /*! no static exports found */
  4040. /***/ (function(module, exports, __webpack_require__) {
  4041. "use strict";
  4042. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  4043. * @Author : LQ
  4044. * @Description :
  4045. * @version : 1.0
  4046. * @Date : 2021-08-20 16:44:21
  4047. * @LastAuthor : LQ
  4048. * @lastTime : 2021-08-20 17:15:59
  4049. * @FilePath : /u-view2.0/uview-ui/libs/config/props/modal.js
  4050. */var _default =
  4051. {
  4052. // modal 组件
  4053. modal: {
  4054. show: false,
  4055. title: '',
  4056. content: '',
  4057. confirmText: '确认',
  4058. cancelText: '取消',
  4059. showConfirmButton: true,
  4060. showCancelButton: false,
  4061. confirmColor: '#2979ff',
  4062. cancelColor: '#606266',
  4063. buttonReverse: false,
  4064. zoom: true,
  4065. asyncClose: false,
  4066. closeOnClickOverlay: false,
  4067. negativeTop: 0,
  4068. width: '650rpx',
  4069. confirmButtonShape: '' } };exports.default = _default;
  4070. /***/ }),
  4071. /***/ 13:
  4072. /*!*****************************************************!*\
  4073. !*** D:/data/zhonghong/saber-weixin/store/index.js ***!
  4074. \*****************************************************/
  4075. /*! no static exports found */
  4076. /***/ (function(module, exports, __webpack_require__) {
  4077. "use strict";
  4078. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;
  4079. var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 4));
  4080. var _vuex = _interopRequireDefault(__webpack_require__(/*! vuex */ 14));
  4081. var _modules = _interopRequireDefault(__webpack_require__(/*! ./modules */ 15));
  4082. var _getters = _interopRequireDefault(__webpack_require__(/*! ./getters */ 36));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} // +----------------------------------------------------------------------
  4083. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4084. // +----------------------------------------------------------------------
  4085. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  4086. // +----------------------------------------------------------------------
  4087. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  4088. // +----------------------------------------------------------------------
  4089. // | Author: CRMEB Team <admin@crmeb.com>
  4090. // +----------------------------------------------------------------------
  4091. _vue.default.use(_vuex.default);var debug = "development" !== "production";var _default = new _vuex.default.Store({ modules: _modules.default, getters: _getters.default, strict: debug });exports.default = _default;
  4092. /***/ }),
  4093. /***/ 130:
  4094. /*!***************************************************************************************!*\
  4095. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/navbar.js ***!
  4096. \***************************************************************************************/
  4097. /*! no static exports found */
  4098. /***/ (function(module, exports, __webpack_require__) {
  4099. "use strict";
  4100. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;
  4101. var _color = _interopRequireDefault(__webpack_require__(/*! ../color */ 131));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} /*
  4102. * @Author : LQ
  4103. * @Description :
  4104. * @version : 1.0
  4105. * @Date : 2021-08-20 16:44:21
  4106. * @LastAuthor : LQ
  4107. * @lastTime : 2021-08-20 17:16:18
  4108. * @FilePath : /u-view2.0/uview-ui/libs/config/props/navbar.js
  4109. */var _default = { // navbar 组件
  4110. navbar: { safeAreaInsetTop: true, placeholder: false, fixed: true, border: false, leftIcon: 'arrow-left', leftText: '',
  4111. rightText: '',
  4112. rightIcon: '',
  4113. title: '',
  4114. bgColor: '#ffffff',
  4115. titleWidth: '400rpx',
  4116. height: '44px',
  4117. leftIconSize: 20,
  4118. leftIconColor: _color.default.mainColor,
  4119. autoBack: false,
  4120. titleStyle: '' } };exports.default = _default;
  4121. /***/ }),
  4122. /***/ 131:
  4123. /*!********************************************************************************!*\
  4124. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/color.js ***!
  4125. \********************************************************************************/
  4126. /*! no static exports found */
  4127. /***/ (function(module, exports, __webpack_require__) {
  4128. "use strict";
  4129. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; // 为了让用户能够自定义主题,会逐步弃用此文件,各颜色通过css提供
  4130. // 为了给某些特殊场景使用和向后兼容,无需删除此文件(2020-06-20)
  4131. var color = {
  4132. primary: '#3c9cff',
  4133. info: '#909399',
  4134. default: '#909399',
  4135. warning: '#f9ae3d',
  4136. error: '#f56c6c',
  4137. success: '#5ac725',
  4138. mainColor: '#303133',
  4139. contentColor: '#606266',
  4140. tipsColor: '#909399',
  4141. lightColor: '#c0c4cc',
  4142. borderColor: '#e4e7ed' };var _default =
  4143. color;exports.default = _default;
  4144. /***/ }),
  4145. /***/ 132:
  4146. /*!******************************************************************************************!*\
  4147. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/noNetwork.js ***!
  4148. \******************************************************************************************/
  4149. /*! no static exports found */
  4150. /***/ (function(module, exports, __webpack_require__) {
  4151. "use strict";
  4152. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  4153. * @Author : LQ
  4154. * @Description :
  4155. * @version : 1.0
  4156. * @Date : 2021-08-20 16:44:21
  4157. * @LastAuthor : LQ
  4158. * @lastTime : 2021-08-20 17:16:39
  4159. * @FilePath : /u-view2.0/uview-ui/libs/config/props/noNetwork.js
  4160. */var _default =
  4161. {
  4162. // noNetwork
  4163. noNetwork: {
  4164. tips: '哎呀,网络信号丢失',
  4165. zIndex: '',
  4166. image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAABLKADAAQAAAABAAABLAAAAADYYILnAABAAElEQVR4Ae29CZhkV3kefNeq6m2W7tn3nl0aCbHIAgmQPGB+sLCNzSID9g9PYrAf57d/+4+DiW0cy8QBJ06c2In/PLFDHJ78+MGCGNsYgyxwIwktwEijAc1ohtmnZ+2Z7p5eq6vu9r/vuXWrq25VdVV1V3dXVX9Hmj73nv285963vvOd75yraeIEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQaD8E9PbrkvRopSMwMBBYRs+5O/yJS68cPnzYXel4tFP/jXbqjPRFEAiCQNe6Bw/6gdFn9Oy9Q90LLG2DgBBW2wyldIQIPPPCte2a5q3jtR+4ff/4wuBuXotrDwSEsNpjHKUXQODppy+udYJMEUEZgbd94DvnNwlA7YGAEFZ7jOOK78Xp06eTTkq7sxwQhmXuf/754VXl4iSstRAQwmqt8ZLWlkHg0UcD49qYfUjXfLtMtOZ7npExJu4iqZWLl7DWQUAIq3XGSlpaAYHD77q8xwuCOSUoXw8Sl0eMux977DGzQjES3AIICGG1wCBJEysj8PXnz230XXdr5RQFMYbRvWnv6w8UhMhliyGwYghr4Pjg3oEXL34ey9zyC9tiD2ml5h47dr1LN7S6CMjz/A3PvHh1Z6UyJby5EVgRhKUe7Kz/JU0LfvrJo5f+Y3MPibSuFgQGBgasYSd9l6GDsup0WS/T/9RTp9fXmU2SNwECdQ92E7S57iaMeJnPQLK6ixkDLfjlb7546RfrLkQyNBcC3dsP6oHWMd9G+V3JgwPHh7rnm1/yLQ8CbU9Y33zp0j+nZFUMb/DHmB7+SHGY3LUKAk8cObtD00xlHDrfNge+Z2ozU3c9dvx4Yr5lSL6lR6CtCWvg6OAPw9z538ZhhZRl6XrwhW8du1KX/iNejtwvPQIDR8+vSRqJ/obU7GupjdNdh2gW0ZDypJBFR6BtB2rg2OVtuub9JcmpHIpBoK1xfffLzx4f7C0XL2HNiYDp6bs9z23Ypn1fC1Y/9PCFDc3ZW2lVHIG2JKzTp4Ok7nv/G6Q054MIvda+bNb74pEgKGtwGAdL7pcfAa8vOKEZ2kyjWuLr7uDh+/qvN6o8KWdxEWhLwroyeek/g4zuqwU6kNrhyZcu/UktaSXN8iNwuL9/RuvVXtJ9PbPQ1vhmcP6t9+47u9ByJP/SIdB2hDVw9MJHQFYfrQdCph84evFX68kjaZcPAZJWwjMXRFpJ2zr91tfuvrh8vZCa54NA2xGWrunvmg8QWCJ/N4ir7fCYDxatkOeBB7an501agXbygVdvv9IK/ZQ2FiPQdi9osGbH+zRNf7y4m9Xu9Me7N9nv0HXdr5ZS4psHgXpJC9P/wDRTx0Vn1TxjWG9LGrbaUm/Fi5meSvcrkxf/Cg/ow9XqAUk91v3qHT97r6471dJKfHMi8Oyzgx1Z03t1YAQVT2MwgsC3u+yXHzi0faQ5eyGtqgWBtpOw2Ol9+/TM+sTOn8L08MtzgQCy+tOHXr3jA0JWc6HU/HF5Scssr4jXcYqfP6V/T8iq+ceyWgvbUsKKOn38eJAYyl56TAuCEr2WYei//9Crd/5GlFb81kdASVopSFrerKRlaoZj9HR+700H10+0fg+lB21NWBxe2lhNHsUpDZr27mi4dV379R9+za4/iO7Fbx8ECknLCPTsTDJ17O33bJpqnx6u7J60PWFxeAcCbMV56dJfQKf1bkMLfuGh1+76zMoe9vbuPUnLsb2DtmOe5HSxvXsrvWtLBEhaTx29+Ma27Jx0ShAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQaEsEVoQdVluO3BJ06ptHL34b1XRjp4Ch6Rq24+kmjG4Nwwg+9uA9u/73EjRBqhAEihAoe3xwUQq5WTYEzp0b3ZnV/Ncf6O/9AvY9wlh/6dy3X7ncN512Zw9BVLXjuAP4np44vnQtkZoEgVkEhLBmsWiKqwsXpjbPBOn3gRfenwnc+7GBe+zsjclvonFDS9nA9Iy/u3x9+vAP3735VPk4CRUEFhcBIazFxbfm0k9fHD7k+v4nQFaPQIrx8Gmyx/GJ0J/t7ez7mw0b9MmaC2pQQgh0/ZSm4g5TwueWWtqLt0HuVy4CQljLPPYnB0depTn+b3t+8B4t0AdBUv93h2H9xc6da0aXs2m+r1WQsLRnl7NdUvfKRkAIa5nG//r1oGtsZvjTgev/kqYHF/TA+AXoqv4npJemOEiQU1Eo2l+G0movBK1UBBPU7s9E1+ILAkuNgKwSLjXiqO/khVtvARH8dxDBRkMzPrF/V+9/BlG5y9CUqlXinHv9mRPXtvuus88L9H3JPv2zD2yXExCqAicJBIFWRwAvv3Xqwq0/Pnn+lv/K+ZvfPH3p9p5W75O0fxaBp793ce3AwIDMWmYhafiVgNtwSMsXeHp4eNXJC8Nf0PAdRCiuf/XgrnWUqsqotcvnl9DmRkCdweX4b9N7+m/ih+mbMraLM14yJVwcXItKpT1VRve+ArC3Qqn+3gM7132jKEGZm6tXg86J7OhDfuA/iHwPUpfUZSfu2L59tXxEoQxeyxkEgjKeOnLxHb4RqC+NY5H3+2953d4XlrNN7Vq3ENYij+yZwbG9jpt9GkBPQ5H9zgP9607OVeWp87cOQtn9zwJf+xDMNFfj+jryPqXpxj8c2Nn7P+SXey70lidu4IXzb0DNB4tr9751+HV7zxSHyd1CERDCWiiCc+QPjUCnsaqmZ62O5IN7N/VUNP48ee7mAZDTf4Tt049iUG4Guv4ZfNLos9UIbo7qJWoJEHjy+bP7fNsoOcnW0A0/aacef8PdG28sQTNWTBVCWIs01OfPj66BpfqTmq732UnjgT1bei+Vq4pTv7HM8Ceg2/o1qLQug7T+FaaM3IqTLZdewpoHgYEjV9fphvOj+OShWa5V+CxvZtpzv/LwG/aNl4uXsPoRwI+4uEYjAJ2GmdG8L0FK2mYa+tsrkdXZy+P7x2ZuHdW14P+BLdank9q6Qwd3rf+ckFWjR6Tx5Q2cP58K9Jm3VCIr1ogt48lO237r3//96YofeG18y9q7RFklXITxPXV+5DchKb3ZDMy37Nu5tuxG4R9cHH6b42QfAzlds+3EPXu2rfrBIjRFilwkBIIR7SHoJDurFU89ZOd680Gke6JaWomvjoBIWNUxqivFD87fej0e0n8Fwvr0/t1rnyqX+QfnRz7g+8FX8Rv8vL3auF/IqhxKzR2WCPxXqKeq3krDTdj2ierpJEUtCIgOqxaUakwzNBR0D09yiqePHOjveyOkpxLr9VMXb73V97S/h3nDXx7Y2fdPkAYbncW1IgIDxy5vM7LZt/hgrnLtxyaBrJNxv/72N+6tuNhSLp+EVUZACKsyNnXHvHL+1qcgNf2KbSXu2bt9dcmS9qlzo/fARgcmCtpzB3b1/Vg5QiuslLowENyDWDn8cSjl98PgdBviu03N+rl9/WufLEwr18uDwLdevLTF1YK3xnVZ2HI1bUxrT7z5zTuXdRP78qCyeLUKYTUI25OXbm4JPO00TBj+6I7+db8ZL3ZwMOiYdG4dA1lN9HWte2iuI2NAVPapC8O/CGPR34Ip/AZIbIMo7yX8G9QMbcS09P+2b1vf5XgdrXaPfiYns9oeLLEd8D1/B7Dp0E1jGP042pXQj7RKf546cmGzp+tv1TRf6YQD35/QO3seP3xow5IfC9QqmM23naJ0ny9ysXwgq98BWc0kVhv/Nhalbqe8kd/Fr8MOSEr3zEVWrwyO3I29hl+E9LUHGf+nAXI6sGPdd8uV2YphIKnE5IyL6bLxk7cn3bdkHHefrpvJAExMZ1uBZmqeNzXtfzUzk/m/ens7LjV7Px+8d9e1579/44l0duZtge+Np5zEEw8c2pBu9na3YvtEwmrAqNE8IZvNHsep5//yjl3r/0O8yFOXbv0QCO05gP0JGIL+fjw+uj91YeRh/Dp/PtCDM7Zpfmjvjt6Xo7hW9ycmJjaYduf7Hdf/8HTGfa3rG9rYxLSWnsloPg7fijZV8oFM2Ja2a9t6EJd7bCztvHP7us4rrdD/r3/7ct9I99jEI4cOiQ3dIg2YEFYDgOUJDFj1e8TqX7cT4kImXuQr5279A4DeBEX8ayvprU4N3rovcALot/TH13T0fXDTJn0qXk4r3k9OTm4y7a6PzjjORzOOvn1kbEqbnEprPhRzwAKzwFLHk05hv6Yd6N+o3R6beG50aPSdr3qV6IJKkVp5ITIlXOCYn4Yexr0w/DO6YXymHFlR0e5r7tsM3fxgJbI6fW1ivTeT+SsYmr54cFff+5Cu5X+hb94Merp6/J/PusGvTE6724eGJ7RpSFOkKPCUZvBPBccoHBet3Rwe13rX9tw/PjXzZ5hKvr8SfhWKkeA2REAIa4GD6p0feRdWBnvxjv2PckVhVfBf4A29uG/X2i+Ui2eYn8n8NryuDr3jPfWSFV5k44UT137eshIP2K7/64cObbheqZ6lCp+Ydt8TBO7vTM5od1+/NR4SFVhoLpKKt410lnE8LTMzo3V2dLznxLkhYgQ9obiVjEDln7mVjEodfYcpw+MAsftg/7qSDbAnb97sCSb0Yei2fqOcbovVqKNnNO8HmAE9Cv3Wp+uoWjt27HpXNqH9WTKR+kBHKqEFbvo5y3N/avfu4g23R45f3WGa1k9ZicTd0zPTf/f6O7f8dT311Jp2fHzmgJlI/N70jPPe4bEZ6Kg4qw0lqlrLiNKBiLWerpTW25PUbkPXZViW62ecHz+4d8PXojTirzwEyhq8rTwYFtRjvpX/rlwJ+iSXugPbMuyKBOHo3geRJtuT7PujcmVUCuPJlhnL/9NUqvMD2eyM5sxMaIlE4n7XML907tyNjcxHQjty4sZv66Z1xEok/xNW5n4uZSf+8sT5m++vVO58wkEu5sR09pd9w/rWyET2vReujiqygrSopn/zKZN5qMeirotKeTyolm7p/+X06Wvr51ue5Gt9BISwFjiGsLl6N6SrvylXDNTK70D4mX071pwtF88w6Jd/DG/1E1u26NOV0pQL71y3/8PJVOcHMzPTWkcCH2YGOaTTaS2RTN6f1fQvvvDK1bdnbO2JZCr1SeRfn05Pa1PTU0gXJBKW+ecnzlxvCGndhFQ1NRP8bcY1/vjS9bF1V26MwHwsVKiXa3etYVw1TNhYJ3TDjQCO42jJVMcez7J+t9YyJF37ISCEtahjGjxkGDr2DJZ31D8h5vUQJL5RPkXlUMM07u3qSGidICvkzzuSlmlZb0olrK9hD9v9JCrPC196JoPMAolFg6CV+PPj54YeyWecx8Vk2v1Q0rSfhFT18LnBmzBRyNalp5qrSuq7kiAsh4SFa7oZ9M0wzI+cPHOjZPo9V1kS1z4ICGEt4lhiCvZrSa2jol7qzPXJPk6nIGbVbWfUvcr7hO9MP97ZVXpggOu6ajplYStj7l1XvbRMXbPAbp6HzSSBlkraNknrvfVCcPt2sHYi7f3pTDb47KUbYxuvKqkKpYBXKBnV869c3WgbDEixAck0FGFFfEzJzbIsO9C1TyrcymWWsLZGIHoW2rqTzdo5dXyykz0NC8l779i5vu4zwM+eHVntGP5jqVTq/6AkVc5NZ3wNH2lVxNWZNIukMSjiNd9z0+CHp5DXAdX4SAg203w8GB5IATtODHzdK8C15kEjhXvNS9rWA11dnfcMDY9prscss48RySakrOLWqODCoIKAgkuVgsS0urtD60haeV1YYVbbtjUn6/74HXvW/11huFy3PwKzT1r797Upe3jq4sib9u9Y+wxe+vh7W1N7jx49v6ZzbffnQD4/Cj1Pfjx54XiBls6GVuTUc9mQsOIO9mPQFdkIRlz4fy5JLm2ZMOqTcJaXIqpcqnixVe+rdbZ3dbc2OT0D0wZIibHSksmklslknvx+//q3PiKnXcTQae/b+LPQ3r1t0969cOL6G7o6E09qgZegdMJBpVQ1DbKCpyUt6oPKz/4NEJalCAuZFIuEVBJd+jgLh4rvAiFqUVGkhJZMWFp3Z0obGSu/d5gSnWmavuO6h+/cvYHSobgVgoAYjrb4QPMUiGtj1/79jBMkLBwiTlMASlYzTkhWCJyTrGAyMOFkst/BoYMmuIIyGJYcMXMMdNwHPhYN1qWS1t6ZLGaKZL8yzFXTr15BooLLMugHMBRNKgW+It8y9TEcJGt4rvcRFCCEVQbFdg0Swmrxkb0+cf2XOzq73kgdFieEXF2jdEUJKQH6SVWQrNjtZDKlpTPp38U58iUbthk/Ph7sN6zg/xudSGvD4xkq6otcnnjyF0XRRTflkyC0IIJE1JG0QbqGNpMNp5xFhRTcZDNoj66988SFm5vv3LX+WkGUXLYxAuXnCW3c4XbqGs9hwjv+a9lsuN+ahOJSCoLjNDAFvVUll0p1aNPp6adTweSflEszPO48oFn+4yOTmR+6enOshKyYhzWpf/jDuuf6x2aV/qNRaPG/1d0gUXWCA0uu7GhMmkqmerEc8KOVU0lMuyFQ+Ylut562YX9Sncmf7Ojo3BDZWbGLtMkiUVXSWTFNuMqWuYG530f7+/tnGFboxsfdd9mm8XdDo9O7rg6NFq0CFqZr5DWlK9qV0fZqGvZchSuPlevB2VmG/hOV4yWm3RAQwmrhEcW64qu4ykfJho52Vp3J8quBYQooqWDKADftBd6HD+5efyoKj/zR8ew/hWXY56/cnFh7a3RCTTGjuMX0SVB9qzu1qfQM+jO3dBW1g6uVSHv/qVNX10Vh4rc3AkJYLTy+WA/8ou9kJjo7bOh+DLVFZ64TEbCyBktxI5PJZj56R//Gx+NdH5vM4vuI+p8NXh9LjU1iw3EZhXc8TyPuuV9wDaaCfBjTM06N0hVWQmHBDzvSDZ5tvqYR7ZAymh8BIazmH6OKLbzv0KZvJEz3ZzEFnEolaEtV2XEaCLKadrIz//TQnk1/EU85NuH8th8Yf4j9gMZUOrNkZEVZCnsbtTU9KW18GqcKFyjh420sd2+j33pg3F8uTsLaDwEhrBYf04O7N/2t7/o/C2FoGnsIy/YGlvAwSfCvZzLOe+8oR1ZT3u/5uvHJC9dGtJlMrfqjslXVHwjpat2aLi2rjFFLjUSrFUjlO0juddXSSXx7ICCE1QbjiHO0/hofbPgwpnDTOR2V6hWNQqGUx34890noet5yaO+Gko3Y45PO7/uB/lvnrwxrWdha1absbgxo1FWtwplXqYSJY5Nn5lU3bLHQmGA/yko0plVSSjMjIITVzKNTR9sO7dv8RSeb/T9BWmMkKv4D+YzBXuljV7yxd+zfte6VeHGKrHTz4+cv38JWmyUmKzSGG5z7VndoE7kz3uPtq+Welvhwm39weVjOyaoFsBZPI4TV4gNY2Pw79mz8KyebeRIH+VEZTaX0sf27+v794TKmCxNTzr/2NOPj5wZBVjjdYSklq6jN69dyKuhqmWztivYob+RTSkPbe/xMdlMUJn77IiCE1W5jq+s4dYEO6mzsYAmvi/+CrH7LDYxPcBq4HGTFVcG1ULLT5orS1ULIkoSFI2cMHKG8obiXcteOCAhhtdmo6gaOh4EWWlkyYU9gvHswXfgV19d/7+LVkSWfBrItJJhObL/p7elQR8fUZnEV70XxPc01sM+xrzhU7toRgZIHuh07uZL6xA3LBaYB+Ar8rBsfz34YX1j+D5eu317QNGy2xPquSE4mDuXb2IujY2AgytNE67RiKFshzuwCR5s9ZSMlsK0QEMJqq+GkBKOF5yFzRoidK5BoFCeMjM/8mG+a//Xy0Li55KYLBRiTrGjwOQ1br4VMBQuKVJeQKVPxMLlvPwSEsNpsTEECmBLSgbHUpwD1YGwse59l2p+9fmuig4fiNZIowrqq/6Xeqm9Vh9JbjcOKvqFtACX7gV8kTVZvkaRoRQSEsFpx1OZoM2iKxxuHLtDcsZlgLzYZfv7m7XSv+r7fIm234XSP/8o5ktWqzqSyZr89PoXPYDTYkZvziw0NLluKayoEyq4iNVULpTF1IaDjHHZmoAW4aep9geN8fiLt998cGYdtVp7K6iqzXGJFUCAi7jdkuapsBJKcPBwgyP8YRyV7B04Q3dDbpY3jg6gupoMNla5U41BbUN9n0sr1ScKaHwEhrOYfo7paCAW0WiWknihhW/0Tabf/6tDtxpIVSIhGnz1dSXUkDL8fSHKi4/lWPId9Kp3Vxqegp8J/m9f14D6DQ/nmb281FwgkZ1Dj7bnSSFx7ICCE1R7jmO8FJJr8jCvjeNrIxFjDJBpKVaSlXhwDw384MyucBoLAGEfHI5ptO6n1YAq4FjorH9IWjUOnFlF3pj62aui3whbI33ZGQAir/UY3XCVEvzgdw/8NcSyGUhSlpVWQrFg2p39xp0JYLyIohaXxdZ2FGofG6yi85/QS32F0Asu8URgu1+2JgCjd22xcsVElPC85169Gaa1YTkRWJKpSqooBiQQzONvq9sRULKKxtzzAEJw1api2EFZjoW3K0oSwmnJY5tcoSD09HanEDztubnfO/IopyUWC6sUmZUpW5aSqkgwgK04DxxaZrFivacCaIdAuH9zaM1rSDgloOwSEsNpoSMenvU93dXb+EE5taFivKElRqd67qrNmsqIF+yjMF/i56MV2JqadYKxXMDXM6+4Wu04pf/kQEMJaPuwbWvPticwj4Il/NnTrdl7JrqaDC5wTUle1GmdWWVCw1+JotjA6PgnThsIdQrXknF8arkJi/+R355dbcrUaArU9ha3WqxXW3tHR9C5dN//T9eEJ3aGdUwP7T0V7F86Mr0VW4mF6o2NTS/ilaB2HDmb8wA2+08AuS1FNjIAQVhMPTi1NgwRkGKbxRxMz3uaJSRzVUkumOtLwo6Zc7aOkVdEhynN9NQ1cyuNqeEqD67mX9TXGyxXbJhFthYAQVosP58S0909czfqJqzdGODVqaG/IUbCWr2p0yukfp4FUtDfeir1yl8IPUGjPHFy/fqJyKolpJwSEsFp4NEfT6Z3YBvOp8MvMc0hAi9hHNQ1cBrJil5TUZxhfXsTuSdFNhoAQVpMNSD3NMTzzU1PZYAM/ProYkg3UV5rHT8lXmA7SwnwEq4FLLVkRI04HM+n0LdvzvlEPZpK2tREQwmrR8ZucCd7hePr7rw2N5PfxLUZXON1zHKz4kb0KnIttP6Njk8tyaimbwXPrsW/yq3v3bhoqaJZctjkCQlgtOMCYCnU4GedTI+NpQ32XbxH7QOmKG5nzdIWZJz8HNkKygqI9TmSL2JSiovGVn0A39c8WBcpN2yMghNWCQ4zPc0HRbr6GEs6chJFnmfl3knZO4/hmII1B6fiFG9br0s6qAeXPp2WUrhzHeXH/jr6n5pNf8rQuAkJYLTZ2kK7Wul7w6zeGx9DyUsZovOodOizosTg1TM9k1Wogpa7lIisOF+w48E/7E5B1Y/cgtdizsBKbK6c1tNioT6X9n3MDcyePOo7OoJqrC6S0+ZIYV+GSOHxvc18PJCxXG4ed13I727axqTp9yk9rX1jutkj9S4+ASFhLj/m8axwdDdbgELxfGsLpoZyqVXPVU1QugVJUV0dC27p+FaaBWWxknq6ceAljTNMiAf/BoUMbJpewWqmqSRAQCatJBqKWZpgJ731Zx9pJM4aK0hXe5vlKVFEbKFlxs3PvqpSSqpbzKztRm+gnEkktnU6/2GFMfa4wXK5XDgJCWC0y1iAR6/Z49iOjY7C5qkG6mk+3SFQGlEP8FFdnygrNFqBsn1OxP5+K5pGHbcBhqhT8fqu/v39mHkVIljZAQAirRQYx7Wj3Zj3tddQjVVJ4l50CMjHe8mqOTJCCvmoTyIrENXx7Uinbm4Gs2PZUqkObnp76i0N7N36tWl8kvn0RaGnCGhgILKPn3B3+xKVXDh8+nPseX3sOlpt13+P4uonv71WeDqLr1ampFB8S1JrulNaHc9rTMxltcpofOeWns0rTLkeIZUHRnpm5YibMf7kc9UudzYNAyyrd8ZLpWvfgQT8w+oyevXeo++bBtaEtQd9s1/ffRsV3I6eDJCp+nourgH04UZQnhIYfWm1o8xdUGCU8/E/bil89sH3dlQUVJplbHoGWJaxnXri2HTvd1nEEcCBS3z++MLi75UejQgcmJjL92ax/gNJPo6QekhVXAbdvXI3D+XQ1Bcxiu02zTAEjKFIdHTQS/S8Hd2/4YhQm/spFoCUJ6+mnL651gkwRQRmBt33gO+c3teNQYin/oG6aKX5rcKEukqqoWN+Ij5vy81v8UATDG0WGC21jlJ96K6wKPpWd8H8jChN/ZSPQcoR1+vTppJPS7iw3bIZl7n/++eFV5eJaOczX9Z2YvM1LPxWpocBHKv8qHHdMqSphGUqqahaThfj40ITBcbLnsDj6oXvu2bS4n96JVy73TYtASxHWo48GxrUx+5Cu+XY5RH3PMzLGxF0ktXLxrRoGNVPPfNtOolIrgElLGYH2wbZqcipdIFVFlDbfGhqfj9bskCaHHS/7gTt3r73Y+BqkxFZFoKUI6/C7Lu/Bl1jmlKB8PUhcHjHufuyxx/g5lbZw+BL7bX4EoiZqyS0T0uM0j1+82QSl+ua+bhxj7GjD2LicwWkLzaarigbKsmDJ7gcTmezMBw/t3ixntUfAiK8QaBmzhq8/f26j77pbaxo3w+jetPf1B5D2RE3pmzyR4/nH+Mti4Wx1dUrCHO0lSVGqskFUnakkpn6mhu086jgYHkWTW3Wbo4Tli6L5gqYHE47vfeDufVv+YflaIjU3KwItIWEdO3a9Szc0ElDNDqcLbHjmxas7a87QxAnX9ljfxcr+Mzs29ykpi1O8iJjoR/cm5o7dnUl89LRLW93dyWmVIip+Kp7pmlWqIvQ8Mga9Gslm3Efu3LX+K008HNK0ZUSgplnGMrZPGxgYsIKeXa/TA61jPu0w0+7xBx/cd3M+eZspD0wbDgWm+RXP13cODY/jWGKuGAb48jG+agNpilbqlKZoWDqDY2AyjtNUlupzYZlKpXgaxIVMNv0zd+/d+uxcaSVuZSPQ/IT13TN34QRvZW81n6HSDdMLUqmjh9tgd//Fi8OHEl3JL3Z2dh3MzGA7XU664llVWRz/QhLjNYmsmaWp/DjCjqIDdlaZTOZZ1/A+fGj7hjP5OLkQBMog0NSE9cSRszuswNhdpt31BRnazM3U9IuPHDrUuG+419eChqU+cvzqjp7u5P9KJpMPpqc51Zv9QntLkFQBEqZluVCw/7nhaP9i376+8YIouRQEyiLQtIQ1cPT8GjOw7vE8tyFtxBrb2MBXdh579FF99g0vC0nzB548ebNHT2l/aFmJj1BPBYyav9EFLaQ+jdPAVNL8/pZ13a8qiJLLOhAAjvrTRy/d0enbF+69d0tzHFhWR/vnk7Rple6mp+9uFFkRGF8LVj/08IUN8wGp2fIcPLh+4sCu9R+F3ucj0MLf4vaVVnChqYWmdaQS2jpY2vd0djh86Vqh7c3Yxm8dudTPxaW0lrn7yJEjZW0Tm7HdC2lT0xKW1xecgHE3FDWNcb7uDh6+r/96Y0prjlIO7ur7TOD5b3ayzt9ylY0Gl83qKFXZsCXrXdOlrV3djf2LBr556JOshLDmMWhPPXV6vav5O5jVxYLUhNl3iIbV8yiqpbI0bQcP85C2Xu0l3dczC0XUN4Pzb71339mFltOM+Q/0rzu5f2fvu1zH+QDOt3uZ0pbVRMRFouJK5qqeTkhVqyBdtdUmhGV5JI4cudrpd5kHiyp3tTU/8s6r+4rC2vCmaQmLWJO0Ep65INJK2tbpt75298U2HLuiLh3oX/95L+0/kHUyvwTieiUJHVEimVzy1UKeWMqv2pCoKEVFRNXT1aHawnBx80eAZj7TwcxdAc5Gi5fiaNnNT37nCk4xaV/X1IRF2B94YHt63qQVaCcfePX2K+07fMU9U7qtHev+xE/7r3cc70O+6w1gxuV0dHZiusgvJS/O7IskRXLs6KCxqj+B26t9a3uUREWi4plbQlTFYzXvu+7tB3EIUGel/L6e3TNw5NS8zYAqldss4YvzBC9C7559drAja3qvDoyg6pwCP+KBZaVOPPjazS1vMLpQKE9fuPnawDB+EqehPwzWuAuSl8LPg90WVxhJJPWQCUmPBAWTBEz1TFUGpqO3wYYvIPgr2az35a2b1/50V6f1e1NTlVcvEzB0xRekj67usu5FmS2/crvQcaol/zeeObfTSOj91dIq28PxiaOHDx9quy8LtQxhcZBqIS0Dhkl2l/3yA4e2j1Qb2JUUD1Iyz1waOQib0vsxKXsAFvH3wMB0JySwtZC+DBPTN5BOCEnhrI1BuKe9l6tIzsVCiD6E0DOabrwI2elZ09aP7N3aNxjheXvK+a1OENa0EFYEyYL9rz072Ju03ZpNQKj7Xd899cKhNrA9LASvZTY/s9GcHoK0XsrakLS8UklLxyl+/rj+/Qfu2367sJNyTS7SuZfneO7ffweBGScu3NwAqWgrTvTc5jjBZmw87tMCfRXYKQWOgula4OiBOQUZ7DZuhrAGdQXxV0zPuCaGnkv3VPGHOpPw7+QPR62OM5HhdNddGOeX2kmCbSnC4mDlSStVTFr4eLljdHV+702vWz9R66Cu5HS5h5hmHvz3QiOxwJTRo2BGgY06dm7OVhewYGAY6s75oD+ZDs4JPY9JyqSCQ7ABqftd5VFM3/j2Ja4mtsWpJQSq6ZXu5UZTKeJnsHpohiYPRqBn04nkS2+CQWW59BK2dAjwS0Y4IHDz2ERWG8Gnwm7iK9W3sFmbvrqGPzw6gW8eTmvTM07XmTPX28KYd7EQ3rjnvv1QFHbPt3zT9DcMPHd+13zzN1s+/hC2rKOo7NjeQdsxT5LEWrYjbdLw05eHtwWe9jl0542u62HZHZIVpalY/yIlP5X3MHYddLLZfy4fmYiBhNuB509vw+rG3tKY+kOwGHLi7W/cS91jS7v4s9TSnZHGLx8CICH9lXNDX+zpWfXuycnaBV2e3e567nAm4973qv0bzy1fD5qr5oEB7KXt0u7B3Loh7yhWVfypbOalh9+wr6U3mbfklLC5Hi1pDRE4ef7Wj+EEiZ+amqpvJT2bzWjJRLIPR3n9riA5i4DZg720DSIrlsrvHXSZ9p7ZGlrzSgirNcetqVp9/vz5FJTqj6JRejTdq6eBMzNpHP9s//QrF4bvrydfO6f1JrCX1mvcXlo98Kembjotr3wXwmrnp36J+pYNeh5JdqRem83O77gxkpxtW3bgOZ/g1HKJmt3U1Rw+3D+zrc89aunagnWzpq6PdxujLz388L4F78tdbtCEsJZ7BFq8/sHBoMPX/I9hyrGgnuDUUZzrnnz7yQu3HlxQQW2Ued++fZmJ1e5LoPB5k5ZpWCPXz+08du+99zrtAI0QVjuM4jL2YcIZeh+2+9wF49MFtYJSlgmHE0g/JlLWLJQPg7RmhtyXsJ18eja0tivsXhj6xy9ve/mRR5TRcG2ZmjyViN9NPkDN3Dz1FW5z9XM4i+s1ME1YcFNpUIrVLHzJzHnwjl0bn1twgW1UwPHjxxPXpztejR0HFTc+F3YXRwxdfdM9W08D0zrs4wtLaM5rkbCac1xaolWOvurhZIPIih0OdVm2haNTfqUlAFjCRnJP4HBn+iUqz6tVa2nGpTe/etsP2o2s2G8hrGqjL/FlEQC5GHghfplSUSMdvwaEA/9+4vjpa3c2stx2KIsfUek2dr+EuXNF2xEjSJx98w/tbFt7NiGsdniSl6EPp84O3W/Z1oPzXRms1GRKWdCJdeCIlJ+vlGYlh997r+70+EPH8NHJEtLCauCph+7bmj81ox1xEsJqx1Fdij4Zxi9AT2KSYBrtslgxhOD2gWOyz7AstFzx6zFHj1mGobYUYAgC9cHge3ddK5uhjQKFsNpoMJeqK6+8cm0X6noXiWUxHA8WxAdWNyQM45HFKL8dyiRpueM7jllmMGpnjO+1w9fNaxmXxiogaqlR0jQdAkeOBPjczrnOiQ6jw88ESSOA6KT7iQzOHEvavu1pZsLQg4QPP/DdZG9Xx/vWrOr+mfR03SvtNffdxleAQIgvTzjBT0w409Mpu2faufZy+vDhw5WPMa25dEnYqggIYbXqyNXY7i/jCyvdfmaVb5hdVsLp9LJGp43j1/1A7/RdvdMwPRzEboRnLVHe9vEvL3eXBOB4ZMta22H+TiqV2LJQ26u5u6Bju44Z3J7O/Lvp6cwPmBanOwQ4uNHRTWMK21bSvh1Mm642nTWCtKkH07rnTE72aOO0XZq7bIltVQSEsFp15HLthg5J/+aJE12m3tVjOPYq1/dW4cTjHnwMYhXOce8xDd3y/PJW6OpMdsTRVy4iK/rKMR/jwvz825VIHFzT3fkx13UW/dnhRy3GJyeeHEs7n1XNibUPFvY6vtGDw5vV9w0Vofn81qGhZfDhi3HX8SfQ/3HPMse9CWcCX0gel2OIFJIt+2fRH7qWRaYJG85NxldGzV4tGayFSLQ24+q9ULyu9gJfMU5ELTn6wUISTl03NHz1KzyiJLqmX657OLLdSJgoXTO7cBxyN172blier4YCvBsFdSNXV2dC35tKJrbzfPfFdjwvC/qs9MSMxxNRsSqmT6LhUDQHE+jUBE7UnATXTuLsrRn01K2l/x6+qItiR3TNG8V59KNB0DGSfNXGUXwJY2Gm+osNhpSvEBDCasIHgVLTt75/aQ0MnXpBNb2QgNYEntfr4wu/nBYpKQLtxtdwAh0SBX3VDe7nM/Ha5vf1Fb/CURS2bCTAWWuxR229qRsbQQQbUed61LfW14JVKKsTJ5sk8WUcHbtlNANyTOhgcmAGKH7p3m1FWpqtuZCu+LByVdKHVMjpKEQrBwIW9tnpXOIH+QTDSH/D9f0bmCLewDn1I4HmwtAypPDZ/oe9oXKf/aMPsWxSs/RR13FHrURiZE1gDR86tKHEdCDMKX+XCwEhrOVCvqBeHNaW6ui11/mWDtLQ1kEiWodXE4rwYgepAPssTPCMOjIdAk94TZ8pMZjch8HjDorGFUTUAwlkh64be0A9/ZCatiDZWtOyE7ClQmIdJICJFYhA+TRV4Fo5/QIHiUvrTEbkVRCxiJfsSBbfYk87OTExXxdazY5yUgiRKfpHQ1YSkONmAZY+gV4NIeVFfCXoLNA5h/Plb5LzWAyzF+IVXdNnvO/6GcsyhjC1vmWZ7s2pO3fdOqzriy9asnJxZREoerDLppDAhiIAEtCfO3F5rW0a6z1PX4/nf53nG5RqqrpieSnULEVh8cx4E7ugH78H8tG9eP/24oVezY+pkpA8b/abhPF8le75BqdsXUtaFeaTlTI2IByEoU1l8oq1mkokcZHElIRoWmpejMMCMyCvQXyy7JjjuUcgOl4tLCzCMpTHgFpcgkViX/dH/ax2Szf8m2Yqc/MN+1r7BM/C/rfCtRDWEozSkbMjq7NTY5t13dqE6dhG3wsSqlp+C9DDi0ifLrqmT1f6BgUaPjiHN0lJAGAfvpWcI4XjiHIMF6ocO/EjmMa9HeelQ1LT1PRpoce/sJwOTCQtc+kfGQp6Uxl+9JWtmL+jNEaJ0gKBgbsygR58B4sHfwV5aliVWg3vCHv6ymHcdG868IzrVsK6pnd71+/dsmXxbD3m3/W2ybn0T1/bQFe5I8euX+9ybuqbXMPbDA7ZCKV4uMOecyz+9OfmWvj9x9zEw6JW+JuOX298WhE6qtwLEV3TL1tb/AWj7sqwfqaro/sdmcyM+vBp2XzzDEzaBiQsNH+e+eeTjQ+ohwqnG0BYhfVzNYKrkOmpyauYYH8KvD8G6RPBszrC6Jq+ystl0ghzXEZjR5+O4+iZwTh+eG7Yqa5rq/3hGzzTSkXKn4YgIITVABjBP+ZzP7i8ydasrZCetuCHvIvFRs92SEdlpnCYE2LOQi12OA7RNf1yjrphHIyE9yOXPnfNMDg70DpdTf8DWDKs5rRvMVwChAWrUgh21HzllD0NrigqlxKVC7bKQuOOWeGiuI7OTkhb6T8C/Xw3xkel9cXxj6eIxiY3Hhx3X9dHsWJwDaa3l1+zd9Mt/F4tUk/ijWnP+/DBb8++LWqvnh0c7NDGta0pO7kl6zpb8AJzEUr91kYEFdeBRCt69Nm4+AsSl6jwjVGckY6VwPwUpLhLURx9xliWvxFHi/w+zB0SWCnLsVpxnoXesSI2ngp4zmRJXPgf/0IleGH51R6uwjeX5MR76qtITh7+8N9Cp4GF7Sm8Zl1s35pVXVomm/5c1vG+Wm284njHJeJq44/FjixUAld8w7uijW6+xo3MhW2S6+oIVHumqpewglJ87+LFtcFUcqur+1vxwPcZJqYPMOyhXw6GKI4+4/GwQpjCBhe+6XDIpFb06PM+np5hhS5eXzw9bLJ2pBLGv4Fe36BU4kA6IQGw8MUY6MJywVeqDs54Z69zrWdY7jI3G1ZtUiSV6zzDI3IqLLew/wu9jspl+yywrA1pEed5QceXPT3jBb/DLrA5ua5UHZ/4eMTbFx+fwvE3DJO8fANrjlctL7giJhRx9MrfR89R+VgJ1Y6currONuwd0FNsxwtV02mPlWGLy1TxlPHf6Hh8PH9xesvw9yRM+5PIRT2ZIgVKKZxWUY/PT8aTFPji0i3m4Ed1hDWV/7uY9bNGtiGqAyorJRWSqCgdkrQiR5KddrwPlsq8xfhG6efvx8dvtiQczDdmmPaldDBxSVYeZ3GJXxUMWzxq5d4fPz7Ym7X1HTAL2A7NqtJHEQ3qtCPjw3LoxB/v+OMZ5VVzR5aHWRuErYA+y4uu6fM+Xl9J/lh7bFvbY+vmv0bWos9tsXAWSLIiaSnyApHxJz6SbFSFuXTw8i86r5vVRW1m+6IHmUREAuI0lcREP5q2ztWPrO9/YK54xsXHI56+cePvj3qBfimZNS+J5FWMcrjptThsRd4dPX9+DcwEd5iQphwozfkCwJKaLv9ewHYKeicfSudwShcnJDBBOD3MTwGRO0cqLIj73jQTaejDBYaPHTBgJ/i5+HyYijd95sFhRzkzB7yL2IrCtGwezj9nOQVTUlfPwiicifnu5J0qHHd8mXHIG6ZD7JQqIk9kJK6QwAokMWRUhMaSeJ0vcfaiXNhs7PyuwpYV51Vh+EM/Pu2M9GckpyiOuZm2Wvtom+Y4me8xPbvIIujzPu6Wbvyt1ejL3U7Sv/v754ZHsORwaX3KGdwiJhO5pzY+Mivk/urVq52jTnIXlEc78LKu8qAMx/G8kHhyOicosz0ovM3IrIDKb15HSvDoOoqv+hMLYCOWI8ash0vmufryZVcqLz4u8fym3ov1xT/EVp4UDUTn4/iS0xW+sZTMojASmLqGp64iH4FRXJQ2TKj+lv7JVRTVxwQkm9APyaboGnGMzSVR6VR87ipsVT645ovOzi5tamb6zzB1/nqzjz+s9YetwLioZW5C8jq08K9+1IxS8yQsfF6ap1WL2BK8VOaJc6NbPcPrx7wJ++hmHQUPvOaQgMJ3ETtVlERDP0wVsQ19uPgcLQyt/Dc+p4jlL6k/1xa2qVyh5ApEzEoErm/DsPOTXV3de6anq36roFyRdYWVbVSshHJEMt98saIXfIu9koplYZL6m/hUz7kS/Jt0/PE8+Jj6X/Y6k+fv2tA1BKIvB/OC8WnGAmp5dpqx3XW36fjgYK/upXbhFd+BrRlqn16MfkrspkoC4hnirYjbUVWzs4rHx8uL3cerjwt0TA4RcBcsuX8Rn97q54okVsCKJJ9YkSvy1gJR4aOtnAr6OJP+L13d+BKBKMEzHhAfgDh6yzD+vqHjTDDvYpAxLqwEfVdbE9bpIEi6V27tdLP+LnzPrWS/XrRTnz5d4e79+LNY7r4kP+Z7Jv7z1LyPL0B4Tb+ci9cXLy+eJ54e8Rw//rqqcUR+HOrgYVprJbBl5E2w63oI64J7k8mUDZLGhmAXs19ucVkxP8gKQu4ptCxbMy2TW3KAGI4u1P207ztH3CDx/7bL+Cdse8h1Zy5ev7Dp8uHD7blJuy0J69TV8XW6l92Dl3cbLG6g98idbhDgdANcY1ZY9o2N4mpNr96GRf1Da3Wui0RW69F1bWslvp81LD2xDTOGu9DhQzBc7AcYfYlkAqo6A6ozqHNBYJTESGitTGShsp0qQSxT4AcoPJQw0LBlEPhBFakHDjoLvY+XgVIyg7WK77tG8n9pvpHXBbXL+OMBd7FN6KLu+uf27esbX9RHdIkLbxvCGhgYsDb3v2a7obt7YHakpKmYiqgE2ioqJbzIOszXcSov/DAzRRNehyJKvPx4+igv/ZLKEaCkoZxUFMYXE1I8f7Xyq/UHp9CkAlfbCF3NdlhS7IQguA0N2wiJYy1ktC5IISb1Okr5jSYruy2SGlYkIkKLSC3yy/WrUWGzSnjaTUX/QEhYQuNewLCdwBFKRkpOuAfr4sBnwwfDg6B0MHagORhBHNqHw5WxTwYav6lAt/42MBLfrYZXHO9w3Ftr/B0Hp0pY+tkD29ddAz5ln8NGjddSlNPyhHV8aKjbzAS7Dd3egRcvgRHJWyrHASw9Pyp+vlSxEluH0jWAGQF9VVZMpxHVRZ/xSKQU4PR5Xy0+/sLQZCFS9DN/XKtSeh5WrL2x+sMyZv+W67+vwz5eC7oDx12rm9pakNg639B68XL3Qh+2Bm94DySxHhg0daBHSQhiCbyyyMS9SDi8RhEHyYP1qD9qak0S4VGn5VYrSTRKEkKHWYYiHuQmCYb/YKYLqS+3H5LYckxJmz6qhSYJ5yNgzgtuclESpncBfN8Fj3lgJdCSGpHcGECoxrouMoHjzO+4evLLMB1VKxJV8Wyj8Q80Ix043jnTu32hlTdkh08Yn7UWcnio9Qs3pzZm0lN7LCOxIdIZxbuQ1+lAVFFxJB7aMeUIiPkiPRPjo2v6dPF4FVjHnxi/oQK0Az/bymf5uI7ayGLj6eM63nrbF5VNXzV7nv3HViQL3JAEaSV1z0iBNJIgJBCYkSKJYbdjEiSHw7a0BI5s6QBBbINUswMUsQ6E11UojZGccA9dcZDBdQY+TgyFTgkiEKYyIBvstAQzIRk8cBJ+A2j4gZFDFWAqjAp3V5IhQYYwwUJ57ByS0QINzMYK8FyrRxt3KNbXb2qG/UVNT5wDyCt6/A0boGbdqzPA4tD21SPquWihPy1FWHjQzYs3xnZkM95ePIZd8RccBx1xez/UPowp46I4+uVcLD9/8Plq0Gfy6Jp+uez5uqPyY+UtNN5DuVQc06drpv4bIDXsjtsMpdkOSC79QK4Xog3PzwF4IBNCBiIhpBSpoE8jioqWaM2KCRuOqwLXgIQItKIe0lCYD/lZjoqgGIo0+J++SsmMKA8eqQ21qHuUh2PfzQHN6vgG6vVK8GfmQhcbr3Yff+AEi3rtdCtNF8u/eIWD2ATXx4Mg0XH1Vr/hm7sDQw8PvyvTrriKWocEE0C6oM/kJRJHrAykgj6WGlq+JUifu6YfS6pu4/UVa6AgQcXKi78ApekhcWFBwMstEkTX9MvVHw+Lt2ex+4+Pg62CxgsHEwZbAdgWIJfA+ICkfDRYtyAwWWB7Ay8F8VT/KB0bOJ4Gx/CQfUKSwZGrJJs8iZHYgB0zMB+zk8hopQ8hEcEog2ERASIBAOL5fIrVIKLxXKtzKPZLgZUckvGf+/nH5HsK0+Uz3316zeAjj3D23Lwu90w0ZwNpiZ72UnvwfO/AXIFnXfLBxLOsHn6yiLqmr3oQ04LHX9hq6TFHI6txrlYWkHj98UT1lh8vryR/rIKq6aO204drdP8hRWF3itmLUw42QnW1CSTSA2IAIXkWOBYKLWw8wjVqNkEaFqjFwLQNJhWI4ZiFoiq6QX0SbsEo6HMoWVFCYprwjw6FP65BXCSoXJwiOwpnFK9A6yiWkQhRDwA9XAfpwLS/AqnqSKP7jwapquiznXFXMn6x8Yg/X/HySvLHKqiaPlZfvf0H6BloAM/v3tpzHkJwUx59Uxb4GE5Lfnt2ZGS16SX3+F5mq4llfegtwnaSR6J5EC8hPUV6IDaS6aDnoZ5DpYe6AtdgOr4pyhXLNPH0KKCo/DDP7N+S+mI6qHzbQr7AbdgW+iylWn0l5cf6E29ftfSN6L9lGl04x30tOtMHklmLhxpClW9BL4S1T+i2uNPRp+0FflD0AN9A9LHnmHGBBfJCE3QL9ALiguoJqiu+64gDzWGIIAlhzhaSDsMV/yjJi3BxyY9khP9BXBSzEMY/AFORGMmM1yyKZfmm+ZKuJf4uMHV1THEj+o+S864E7zYd/8Dliqp2MamvPbt9uw4dY/M4DnXTuMuXx/scK9iHLcbryzfKwvOJBSGNPl10Tb8WV0xYyMFymDdXXv46Kq+ueChJQI4WlSUqf8StOf5CNdXqr9afxe8/Gm6AoLAqGKyCGLSG350ACFzKM2FvaeOseEhFOsjItdQ2S6wYYmkOdl2+CfLBvmpIV55vYY2Qn6uAxAWC40zbhxSmWArcQj0TSIiSU37mx0kgVesgLereOSz8E5EWJa6Qzyh1hZEcO7xY4Ct9WLfNvwa+5xA2h6uGP6vMPxMsZ8WNf0Gf+cOCw9usq51a5+kNG9Sn1IjJsjoO0LI7EpVra/vxhPdFs7JyjYriohlbTAKGxO1C6oJEljseOLqmTxfPX66OucJK66OUNzuDjK7p05UIbGwX25I/vrj4BYrnD0uZ/Rtvfzz9fPsPIkgkbL0DZNMFRVEHFEY2ZCBTcwMLdfCsCCVN4SwpE9YG+ARNgD24IDHYSYB1yNCYDkLRFoC8oOUG40AKQx5IYyAmlQ6SF7dDoSof0hbJiApzqLs43aPc5UG+AvVQ/4T7nGQFQiJ5kdbAkmgH2Sz0FaWB4gLrad22v4nmuvPt/yzCc1+V4t0e4z93r8PYwDCvNANxLSthkai0jmCf5+jq6y6Y4SkjTfoKprgWufj9Dg3AozBmiK7pl3H8WDH3u0YfLY6u6c/HVS2vSvsxoygyTF2q/qNenEyjJ5NJPYGPRidME1M1/JYqwyoNq32Ihu4J0z5M+WA2DoqwEI9wfmEaEhQJzPNsKNOh0jJwrfRVJqbnNOrC6IGwQFzgHiKrpCuq2kE+FizrMXWE7IWCEKemg7hSiimOQchNIC3EchqpHlBO95TshQThkwF5TL9k+Mm/MZLGzVo3AlQdLzagDle1vCYd/wU9/5Z5ZcyZPnNow/J8ZHZZCGtsbKw3rdn7nIzTx42o0WfP1cPKuYJ6XPFs5q7p8zmKx5v8cdcxDeMPOR1fj+gh4X10TV/dukiC+nJPeLy8eH1hrtm/UVvpKxcrP2oL/dlcs1eQ9PCeo73wGcp+R2Xyvlp74vH19B9EkoA2CYKUlcQqJCQj6vkoyBjh/IurcJiy4Zxy2FMptRBO7sK3kClR0UYUZAX+wMqfC1ICiYHMYBsKSQsSFKaAUEqZLoiK00ASFsgpN0UEUWE6yOkiiArE6NmUb91OWwAAEuNJREFUszCNxA0c/uBoF04W86YOarWQAYjGmHBBEIkUiXEqib025hNmInWknv6zKo77Sh3/RvcfSx5Xl4O4yr5Y7NxiuEEQFT4uvs8yrF5VvosX28LLS185vsiRHkc9YPiJtrCbJIzHyx3gJdfpl80flZWPR6qIxJghus7xjSqj4E9UNn2VvN76Csqq6XIR+48OYEeGlcAaXhLfQwxNQcgQEI9IErOOxBUuCuDLz9Arm5iyOTaYy7Jty8hAb2VCm43ZmwnwQTbgFpAWyA4SGEKhaMdgYNpngKAcpeMCAfFjYGE4yAqco3RZ0LorUqOkxVkf6AgzvFBPFbISSsOUD+WRrWijpcwbmI4Gomj4yxAIv4bPVU+q9sfxk/EP36UlfP49N3vNWr/m9CZdX/zzjDDofAoW3XHVr9NPHdB8p2+uORl/mjFLUktMbBTtkSJbpLCRxYyD5OpJps/4+DJuvq5IIgoLqfi3pLzcRuloM7QSzKImsBSWG80LVKkxkSvOkFHaCjL5QvrPN9rwvaSVtEg2ICmQCNRQkGjwnlOpNktMxdds+GxcRFrIyCmhTQMEUJjl4qwtzPbAOVC8o0DUZroGiMmBpEUfRBZ4DvRUJC4/1GOpij1ML9XU0PJdFxIZGsOpJkkOQ0YdFh5CPodKl0WfRqQkVUhTIEf1iN4GkdJU4Rx/xsJfHkpfMv4cd+IAUJb1+YdkfSU7NXp6+/bti7qquKiEdfVq0Gl2TO2DonYzAcUTCv0slCB8FuGia/q8j7iAPl30aNIPHVKq55w+00MvjFLo05WmV8H5P9XLzydVF/H0xbGl9UGfjm226B98po2u6fO+0f3H9M7SbT1h+FoS00ybSmm+5/RZHxzbwWvVHtSvNuLRR4BKl0vPtHRhWh1SESUsNBkH0qjvNiAx4MA1JDBc4yBmTPmwJArJCFM+dA1SE5XsmFIqRTzKUrZYkMio78IUkauFoW6Mcbin1GWrOR8nqOEUEUQFmuK3ZdEw6NFg92s9j3XLp0CIsAuS8VdPkcKhCZ9/KAc81x/c3NdzFjy6KHZc0YPNh7VhDg9jYnh4co9n2dvx1nLalys7Rimx2xLGigfEJBQ0Xr149FkBVb04BQiTlPAFbTiDxRGKM1pJf5AgarPKG0sQu413N07hkCANO5m0fSebtCwziW5DqMISHTRMJCDF23inYbmsauNCHq+Vn1ta5dErzKN8psP/RiIXVpAegKJQ30Y06AQSEXdAIpdL0wbTNsLpoSIeCwRJHZYBpTusIFAIlPC0iqL5AxoCcmLPQkkLdITRCc0dSFqQD1A51g4pLOXmhZCwDMO2BpH9q6ZtDoU4oKQIy5yEynFnv+mzw+0+/q3Sf5yT4aYs89zq1alLIK7wYeQANcCpgW5AOaqIARzxcudrXrMTz+cuFAxBI1Rw06eLKz3xsnDikt+Mmr9mWBlXrbySeJAlTt8MXJImXHRNv0zx2GpWZ3r0KKqzXHlRHH26+fQf+mkbg56ADjppUuihMJl7BEhGtmnj+4Phj1lEUAzjaQcgJkzcqPPmlI/yjdJV8Trf/+hbeYyP0uMS0zSVF8SEaSELxkhR6a7IC1IVHkNMBWEkCljxYQ7YXgWKrDCHw2ohJDDKSkr5Tst3TANBp7DdgkTFKSOpxYMtV2i3hXQoJjwbBo3L4oibAajdXmSbCl01PEvi6x3PetMvwfi3cv+xHpPRk8GZvo6Oq5y5FvZlvtfqQZ5v5igfH7iRdHqrn/H24McyEb6ejCUxkCwqEATi8JDNKtWRIxI6wrLj+aOyQgIqLT/KTZ+OLYnCFGHE60PdSgzIgVmcfrbt5evjYkB97VeNyv8plx/UYoChElhYgB7KtD3PAUWRpejIVNzNAjNzyDuYRqnrMF5dIx4CkTrlAJQRps2FhZIX5lqYwfFLOygTBeSmkUhDEgNvIC7MR5ML6JhozoCpn+858G1utbH4j7BRT0Z9VlZzbTyOKJCKeCjkqYbkFBJh+DXCPVcKuXKIFURlm8WBoZSFOBCYmk6i33ioT+Kw1CegEMspcFfe+M8+rRySNum/YUwm9I7TPT04NWOBDg/nwtz16xMbEp3mPswIOuI6G7wBSlynz1pQWZEIP0smIcEEWN3QsfJDn+nj9FFSPh73wilgdE2f+eOumo4pPqWI2kI/LKu4RVXLq7H/kJopRUFhnkj4joNT9KC/BlZgAIVD1I+cwASVUBgCIsF1KEQxJLpGPKHGP5LYrAs5ikREnmJ61KF4K5cG1+REVS6HC1JauGroYYcOrLWUEp6MSF0UpoZgK5hV2dgEzeNLYbMBnRQZEUPnOwGMT6GOp57Kg/0WTCMYjnsQHpDmlJFTR5IcNt/alvV1PdF5NsKcLSpGG03L6QcjnWDpeIXqgFYb//A9wGi1+fMPDeqY7nae6uvT530KKp+JebkhHJyX6Fqz33X83tCgRr1d6gXBH+XnFtEwDmEVMBfAtbK7UvHxVTb1gGLQokbFVBZMDtUJHmT+dsPxmqSRU2nkrxkWxhfbOfEVwLov4sIaonSRr1qZy6vy8xliPbn+qPjYHxSm6mJwdB357DfaVtJ/BMLeW0/ayVQSR6TA5AB7h8kwmFeRrFBUSFYkJk7GsM+F5SuiCQmFBEriCskHYcxfEM9ozBjBS/yaKD//rBzndjD3BHswAcmqwFdhOWGugCw5owwpEt9sxMlVGWQEK4GlcAOi1XAcL6eLICfdcMFmNDnH7xdO/YTCHTkxM2B6EiSPbuXmHrZO5eJy4Iu6lfo2Gu8orFfA+PM9UMjnHpBIx9v+/Q9Wm8nMfcMTE1d7u7vP4Ec6fzy1wqOGP3xI63JHjgT2/rsy/boTbMP0pe78dVUWS5wjK0VUjIqNN3kA62ZYeIcfxofXDFNFUZBTT4W6m71mWBlXrb4yWSoEYWh0jVIUdJEmzA6o18mRDN7dCplCEkK8IiP4WRAU9OO8j5wimZB3SAhKYlJEphLkJCaSEP7PEdxsfVG5UWFxP6qPPngTlvBED6IWLN8dTPmg8ocFPPRXWBdlFWqqCEmLlhAgLRtKdLaAkpQNfRUM6DUQGOUiTimNEaT7FvRVw/F6K91XG4/mHf9KPaovvJ36jzfSS1mpc6mUdhnvhZL4a0GjZsKBKK+n0+kt0AHvztCAsIzjeeAeUKVPF1l101cBWCICxcGmcPalUeHRnyguIsJYej79fFnpKxdjrKhu+spVK69Ke+OW6SXlh7Xk/8b7D5umJKY6nUiQAEmp5ZKoD5Ay8kTFzcAsJIrL+ZREYCWAaU4ubXRNP8wfpuSuGubHMwCJhSuGPCiYJIMw5GV6xkfY0Wd+WoPiBAlEhvnzNluw3SKZYTkQHIQ5J1RQDg7Lw/QQGUIdFp4wcC9KgQ/7KkxjucEHROVmc3ZaCFfEjMxUvlPvBZ0WhT1Q1zG06hQKyGPA9qEh4bPRJuO/0p//WvoPyXpa77BPr9L1mn64QiJRT0vlP3jg1oyn0/th1dnN6VOkQyh8wVRuPpLUH9GHi+sckD4vLaj43NSHLwfv8cKjbGxdgc97JUpFpIRbpovKYHTUltkpHYkyEqNYf1gWfZU+Vn+JiMZERS4qKyTAMv1hmwoItLT/aL6OL9cn8A4mknhDkR5CUuh43ExhAXjnIQVxRQ9UwnU1JM73meHISINzlY/1Ir3jwNQBtui5IpU3K2mFZbEUEhgJiHlZhkqI8rws7hPFxBHlZ5romu1CGRSv2HyQEQiLPkwefJcSk2o0mU+F8Z46KswbKd8qvRUWiq7BsuoYlF/q+Jd839p4/KNnFHhw+Fbc819r/y3dHO7qsk9D2lLPBvEq59SLXC6CYSCq1OTk5F48g+FxLyQSvvyzhFK8taaYL1ACiYdkkSOg/HVO4irmAySLlR8+yHy5wnaWysTF7YmnRxdyecMXFDcxx3KjNCUEGUtb2r4Iixwh5qebxEG58v2Hkh0ERqlLp5kClNLkngLSyF8XExrZi089SYbFm9DRg1FCbEKyoxQE8sqFkTOgTwrDVIPCP/k8qpRcGrxMEXmxnpwjUeXbhjpgA2bBNsp0HPQWOiwNOnddw5YcNIdSFyzTlUKehEbrLDxDNn7osjCXPw5FO22qgPfKHn/pf8XxxxetvSvYlX8BxBVKCdGDmPPDhz0W+Oijjxof//jHt+Hh2oko/qKqFx4l0BJQmQIwS3RNn/fxZXqGFbq4nQzimI9tKFs+S1S1KJ9XoQkEfUQwtKg98fSzefMMwmx5F28/IqK2RLjM2b54/gX0H0v6+IiDZSVgHJogfYWNzDMUpCtsUkKg4pKIUJAsnNTlkjNWzfBCPMOhi8JAiCSqPBmyMFVQ1OdctQwLywNZ5cPCpDl80D6IhjzBASQF0sUeREpSJCyE4ceSpJXbEO2612AHepaTSRn/YrtEAD3n8xV/ntv4+S96nyGRO9gccQZmEPiBK3bRi5kPHcG+v2T32n2+53bxNY8oQyWIB0SR9OmqxMeTh5lm/8azx8srEbCQNSqTpUTX+eagwCiPqiWeQAXO/olHV2tPaYUFjWCxsQJjt7MV564K6iOB2Xj1adNGa3PqDMFl4XwSSnAQCUIibqFPlwtTwbiOkoSR+JvLx3KYv9BXaSrlLyifSegQBNMFTAWhiIeFArRZnoX+8Y2EzKhbnuNlYO9wFpZXkwoH5Kmj/6qOFTz+0n8+Y4Y/2pVIcJqY35+YJ6wjEN33ZzL9kPY3hWjx6Sv+RcByLIQAZZYQJSn2C944FRF/QkvjQ31XZDcV04GVPOGl+WdJEhVGbaNPV3d7Va7ZP83U/1ACgzTjkg4gjUFvHhGWkrPAPnnBLNeFSEKKfAbzOu9yBAUdVj6cZURpZuU3XOUILioD93x2IEnxxFGc9c6M+M93cHSNZVzHquBQDeMn4x898wQ2us7pgGvAbyU8/z5e5EupVEqtJirCgp4KHxVI7sbrQIYKHyKF3+yvIvEEX8FsQNk9qXwgBpgQwNo7p9OKrukzfdzF08+WTmYrV35YF+tU8bEpYImInGtLVH+8PkzZ8iQcVpjrawXCLOHH5uo/9JmWjbXHJMQcNhVW8bOklbsumnJw7Q+cgtVK2mJxAUNNKKncp54KHuzAwnjCE01B1UIHA1A80ik/IkdIfTj6mE8MXh2sSKZhdHUd+IcDykwFLj4eMv7Fv+il75c8/xEmeHaojD+jZ4LgbsPVVvO5iutg4oSAFCCiAqVp/jrUKRU8mzVexsube05ff3tiD0Q1wkP/ojrYgeiaftiheHsjLKL4GrudTxYvb0H9h94bpzeAwCD4cAqJf5SmlBjFH5D8ChVC1Q8KyIkrjtgbE64y4lqtINJHel5Hq4q4ZdsYzsWBWaU+rkFWtFzQbiNNnWciNbT/qD4+Hitq/FdE/3mWzmvQU+W4hZZPenQuRHRNfylcvfVjpUqz0Tj6dNE1/fm4euufTx1z5am3/hr6z6lj9A9ElneKwPJ3IYEVEpqKys0YFeUhoDBP4TV/+bjVIkfqKuu8/ixC/+tqR73111V4DYnrrb+G8a+h1tkk9dY/m7MxV7XUzwdP3ApBgCYG6Co+L6/+kcB4X0g0ERFFzwXjojBc5q8ZhqOKtWEoROmLEwSWBIHowVySyqSS5kIABEYhisRFEov8SgRWGD6K9OMgq8IwBIkTBBYXASGsxcW3pUoHgfF5iIiLPv9x+03kuLxMqaqsUj1KJL4gsFgICGEtFrJtUG6OwDhtJHHhqLOl+dBAG0AnXRAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBIGVhMD/D0fV/fpMMM+gAAAAAElFTkSuQmCC' } };exports.default = _default;
  4167. /***/ }),
  4168. /***/ 133:
  4169. /*!******************************************************************************************!*\
  4170. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/noticeBar.js ***!
  4171. \******************************************************************************************/
  4172. /*! no static exports found */
  4173. /***/ (function(module, exports, __webpack_require__) {
  4174. "use strict";
  4175. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  4176. * @Author : LQ
  4177. * @Description :
  4178. * @version : 1.0
  4179. * @Date : 2021-08-20 16:44:21
  4180. * @LastAuthor : LQ
  4181. * @lastTime : 2021-08-20 17:17:13
  4182. * @FilePath : /u-view2.0/uview-ui/libs/config/props/noticeBar.js
  4183. */var _default =
  4184. {
  4185. // noticeBar
  4186. noticeBar: {
  4187. text: function text() {return [];},
  4188. direction: 'row',
  4189. step: false,
  4190. icon: 'volume',
  4191. mode: '',
  4192. color: '#f9ae3d',
  4193. bgColor: '#fdf6ec',
  4194. speed: 80,
  4195. fontSize: 14,
  4196. duration: 2000,
  4197. disableTouch: true,
  4198. url: '',
  4199. linkType: 'navigateTo' } };exports.default = _default;
  4200. /***/ }),
  4201. /***/ 134:
  4202. /*!***************************************************************************************!*\
  4203. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/notify.js ***!
  4204. \***************************************************************************************/
  4205. /*! no static exports found */
  4206. /***/ (function(module, exports, __webpack_require__) {
  4207. "use strict";
  4208. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  4209. * @Author : LQ
  4210. * @Description :
  4211. * @version : 1.0
  4212. * @Date : 2021-08-20 16:44:21
  4213. * @LastAuthor : LQ
  4214. * @lastTime : 2021-08-20 17:10:21
  4215. * @FilePath : /u-view2.0/uview-ui/libs/config/props/notify.js
  4216. */var _default =
  4217. {
  4218. // notify组件
  4219. notify: {
  4220. top: 0,
  4221. type: 'primary',
  4222. color: '#ffffff',
  4223. bgColor: '',
  4224. message: '',
  4225. duration: 3000,
  4226. fontSize: 15,
  4227. safeAreaInsetTop: false } };exports.default = _default;
  4228. /***/ }),
  4229. /***/ 135:
  4230. /*!******************************************************************************************!*\
  4231. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/numberBox.js ***!
  4232. \******************************************************************************************/
  4233. /*! no static exports found */
  4234. /***/ (function(module, exports, __webpack_require__) {
  4235. "use strict";
  4236. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  4237. * @Author : LQ
  4238. * @Description :
  4239. * @version : 1.0
  4240. * @Date : 2021-08-20 16:44:21
  4241. * @LastAuthor : LQ
  4242. * @lastTime : 2021-08-20 17:11:46
  4243. * @FilePath : /u-view2.0/uview-ui/libs/config/props/numberBox.js
  4244. */var _default =
  4245. {
  4246. // 步进器组件
  4247. numberBox: {
  4248. name: '',
  4249. value: 0,
  4250. min: 1,
  4251. max: Number.MAX_SAFE_INTEGER,
  4252. step: 1,
  4253. integer: false,
  4254. disabled: false,
  4255. disabledInput: false,
  4256. asyncChange: false,
  4257. inputWidth: 35,
  4258. showMinus: true,
  4259. showPlus: true,
  4260. decimalLength: null,
  4261. longPress: true,
  4262. color: '#323233',
  4263. buttonSize: 30,
  4264. bgColor: '#EBECEE',
  4265. cursorSpacing: 100,
  4266. disableMinus: false,
  4267. disablePlus: false,
  4268. iconStyle: '' } };exports.default = _default;
  4269. /***/ }),
  4270. /***/ 136:
  4271. /*!***********************************************************************************************!*\
  4272. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/numberKeyboard.js ***!
  4273. \***********************************************************************************************/
  4274. /*! no static exports found */
  4275. /***/ (function(module, exports, __webpack_require__) {
  4276. "use strict";
  4277. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  4278. * @Author : LQ
  4279. * @Description :
  4280. * @version : 1.0
  4281. * @Date : 2021-08-20 16:44:21
  4282. * @LastAuthor : LQ
  4283. * @lastTime : 2021-08-20 17:08:05
  4284. * @FilePath : /u-view2.0/uview-ui/libs/config/props/numberKeyboard.js
  4285. */var _default =
  4286. {
  4287. // 数字键盘
  4288. numberKeyboard: {
  4289. mode: 'number',
  4290. dotDisabled: false,
  4291. random: false } };exports.default = _default;
  4292. /***/ }),
  4293. /***/ 137:
  4294. /*!****************************************************************************************!*\
  4295. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/overlay.js ***!
  4296. \****************************************************************************************/
  4297. /*! no static exports found */
  4298. /***/ (function(module, exports, __webpack_require__) {
  4299. "use strict";
  4300. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  4301. * @Author : LQ
  4302. * @Description :
  4303. * @version : 1.0
  4304. * @Date : 2021-08-20 16:44:21
  4305. * @LastAuthor : LQ
  4306. * @lastTime : 2021-08-20 17:06:50
  4307. * @FilePath : /u-view2.0/uview-ui/libs/config/props/overlay.js
  4308. */var _default =
  4309. {
  4310. // overlay组件
  4311. overlay: {
  4312. show: false,
  4313. zIndex: 10070,
  4314. duration: 300,
  4315. opacity: 0.5 } };exports.default = _default;
  4316. /***/ }),
  4317. /***/ 138:
  4318. /*!**************************************************************************************!*\
  4319. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/parse.js ***!
  4320. \**************************************************************************************/
  4321. /*! no static exports found */
  4322. /***/ (function(module, exports, __webpack_require__) {
  4323. "use strict";
  4324. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  4325. * @Author : LQ
  4326. * @Description :
  4327. * @version : 1.0
  4328. * @Date : 2021-08-20 16:44:21
  4329. * @LastAuthor : LQ
  4330. * @lastTime : 2021-08-20 17:17:33
  4331. * @FilePath : /u-view2.0/uview-ui/libs/config/props/parse.js
  4332. */var _default =
  4333. {
  4334. // parse
  4335. parse: {
  4336. copyLink: true,
  4337. errorImg: '',
  4338. lazyLoad: false,
  4339. loadingImg: '',
  4340. pauseVideo: true,
  4341. previewImg: true,
  4342. setTitle: true,
  4343. showImgMenu: true } };exports.default = _default;
  4344. /***/ }),
  4345. /***/ 1385:
  4346. /*!**********************************************************************************!*\
  4347. !*** D:/data/zhonghong/saber-weixin/pages/admin/components/uni-calendar/util.js ***!
  4348. \**********************************************************************************/
  4349. /*! no static exports found */
  4350. /***/ (function(module, exports, __webpack_require__) {
  4351. "use strict";
  4352. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _calendar = _interopRequireDefault(__webpack_require__(/*! ./calendar.js */ 1386));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function _classCallCheck(instance, Constructor) {if (!(instance instanceof Constructor)) {throw new TypeError("Cannot call a class as a function");}}function _defineProperties(target, props) {for (var i = 0; i < props.length; i++) {var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ("value" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);}}function _createClass(Constructor, protoProps, staticProps) {if (protoProps) _defineProperties(Constructor.prototype, protoProps);if (staticProps) _defineProperties(Constructor, staticProps);return Constructor;}var
  4353. Calendar = /*#__PURE__*/function () {
  4354. function Calendar()
  4355. {var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},date = _ref.date,selected = _ref.selected,startDate = _ref.startDate,endDate = _ref.endDate,range = _ref.range;_classCallCheck(this, Calendar);
  4356. // 当前日期
  4357. this.date = this.getDate(date); // 当前初入日期
  4358. // 打点信息
  4359. this.selected = selected || [];
  4360. // 范围开始
  4361. this.startDate = startDate;
  4362. // 范围结束
  4363. this.endDate = endDate;
  4364. this.range = range;
  4365. // 多选状态
  4366. this.multipleStatus = {
  4367. before: '',
  4368. after: '',
  4369. data: [] };
  4370. // 每周日期
  4371. this.weeks = {};
  4372. this._getWeek(this.date.fullDate);
  4373. }
  4374. /**
  4375. * 获取任意时间
  4376. */_createClass(Calendar, [{ key: "getDate", value: function getDate(
  4377. date) {var AddDayCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;var str = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'day';
  4378. if (!date) {
  4379. date = new Date();
  4380. }
  4381. if (typeof date !== 'object') {
  4382. date = date.replace(/-/g, '/');
  4383. }
  4384. var dd = new Date(date);
  4385. switch (str) {
  4386. case 'day':
  4387. dd.setDate(dd.getDate() + AddDayCount); // 获取AddDayCount天后的日期
  4388. break;
  4389. case 'month':
  4390. if (dd.getDate() === 31) {
  4391. dd.setDate(dd.getDate() + AddDayCount);
  4392. } else {
  4393. dd.setMonth(dd.getMonth() + AddDayCount); // 获取AddDayCount天后的日期
  4394. }
  4395. break;
  4396. case 'year':
  4397. dd.setFullYear(dd.getFullYear() + AddDayCount); // 获取AddDayCount天后的日期
  4398. break;}
  4399. var y = dd.getFullYear();
  4400. var m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1; // 获取当前月份的日期,不足10补0
  4401. var d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate(); // 获取当前几号,不足10补0
  4402. return {
  4403. fullDate: y + '-' + m + '-' + d,
  4404. year: y,
  4405. month: m,
  4406. date: d,
  4407. day: dd.getDay() };
  4408. }
  4409. /**
  4410. * 获取上月剩余天数
  4411. */ }, { key: "_getLastMonthDays", value: function _getLastMonthDays(
  4412. firstDay, full) {
  4413. var dateArr = [];
  4414. for (var i = firstDay; i > 0; i--) {
  4415. var beforeDate = new Date(full.year, full.month - 1, -i + 1).getDate();
  4416. dateArr.push({
  4417. date: beforeDate,
  4418. month: full.month - 1,
  4419. lunar: this.getlunar(full.year, full.month - 1, beforeDate),
  4420. disable: true });
  4421. }
  4422. return dateArr;
  4423. }
  4424. /**
  4425. * 获取本月天数
  4426. */ }, { key: "_currentMonthDys", value: function _currentMonthDys(
  4427. dateData, full) {var _this = this;
  4428. var dateArr = [];
  4429. var fullDate = this.date.fullDate;var _loop = function _loop(
  4430. i) {
  4431. var isinfo = false;
  4432. var nowDate = full.year + '-' + (full.month < 10 ?
  4433. full.month : full.month) + '-' + (i < 10 ?
  4434. '0' + i : i);
  4435. // 是否今天
  4436. var isDay = fullDate === nowDate;
  4437. // 获取打点信息
  4438. var info = _this.selected && _this.selected.find(function (item) {
  4439. if (_this.dateEqual(nowDate, item.date)) {
  4440. return item;
  4441. }
  4442. });
  4443. // 日期禁用
  4444. var disableBefore = true;
  4445. var disableAfter = true;
  4446. if (_this.startDate) {
  4447. var dateCompBefore = _this.dateCompare(_this.startDate, fullDate);
  4448. disableBefore = _this.dateCompare(dateCompBefore ? _this.startDate : fullDate, nowDate);
  4449. }
  4450. if (_this.endDate) {
  4451. var dateCompAfter = _this.dateCompare(fullDate, _this.endDate);
  4452. disableAfter = _this.dateCompare(nowDate, dateCompAfter ? _this.endDate : fullDate);
  4453. }
  4454. var multiples = _this.multipleStatus.data;
  4455. var checked = false;
  4456. var multiplesStatus = -1;
  4457. if (_this.range) {
  4458. if (multiples) {
  4459. multiplesStatus = multiples.findIndex(function (item) {
  4460. return _this.dateEqual(item, nowDate);
  4461. });
  4462. }
  4463. if (multiplesStatus !== -1) {
  4464. checked = true;
  4465. }
  4466. }
  4467. var data = {
  4468. fullDate: nowDate,
  4469. year: full.year,
  4470. date: i,
  4471. multiple: _this.range ? checked : false,
  4472. month: full.month,
  4473. lunar: _this.getlunar(full.year, full.month, i),
  4474. disable: !disableBefore || !disableAfter,
  4475. isDay: isDay };
  4476. if (info) {
  4477. data.extraInfo = info;
  4478. }
  4479. dateArr.push(data);};for (var i = 1; i <= dateData; i++) {_loop(i);
  4480. }
  4481. return dateArr;
  4482. }
  4483. /**
  4484. * 获取下月天数
  4485. */ }, { key: "_getNextMonthDays", value: function _getNextMonthDays(
  4486. surplus, full) {
  4487. var dateArr = [];
  4488. for (var i = 1; i < surplus + 1; i++) {
  4489. dateArr.push({
  4490. date: i,
  4491. month: Number(full.month) + 1,
  4492. lunar: this.getlunar(full.year, Number(full.month) + 1, i),
  4493. disable: true });
  4494. }
  4495. return dateArr;
  4496. }
  4497. /**
  4498. * 设置日期
  4499. * @param {Object} date
  4500. */ }, { key: "setDate", value: function setDate(
  4501. date) {
  4502. this._getWeek(date);
  4503. }
  4504. /**
  4505. * 获取当前日期详情
  4506. * @param {Object} date
  4507. */ }, { key: "getInfo", value: function getInfo(
  4508. date) {var _this2 = this;
  4509. if (!date) {
  4510. date = new Date();
  4511. }
  4512. var dateInfo = this.canlender.find(function (item) {return item.fullDate === _this2.getDate(date).fullDate;});
  4513. return dateInfo;
  4514. }
  4515. /**
  4516. * 比较时间大小
  4517. */ }, { key: "dateCompare", value: function dateCompare(
  4518. startDate, endDate) {
  4519. // 计算截止时间
  4520. startDate = new Date(startDate.replace('-', '/').replace('-', '/'));
  4521. // 计算详细项的截止时间
  4522. endDate = new Date(endDate.replace('-', '/').replace('-', '/'));
  4523. if (startDate <= endDate) {
  4524. return true;
  4525. } else {
  4526. return false;
  4527. }
  4528. }
  4529. /**
  4530. * 比较时间是否相等
  4531. */ }, { key: "dateEqual", value: function dateEqual(
  4532. before, after) {
  4533. // 计算截止时间
  4534. before = new Date(before.replace('-', '/').replace('-', '/'));
  4535. // 计算详细项的截止时间
  4536. after = new Date(after.replace('-', '/').replace('-', '/'));
  4537. if (before.getTime() - after.getTime() === 0) {
  4538. return true;
  4539. } else {
  4540. return false;
  4541. }
  4542. }
  4543. /**
  4544. * 获取日期范围内所有日期
  4545. * @param {Object} begin
  4546. * @param {Object} end
  4547. */ }, { key: "geDateAll", value: function geDateAll(
  4548. begin, end) {
  4549. var arr = [];
  4550. var ab = begin.split('-');
  4551. var ae = end.split('-');
  4552. var db = new Date();
  4553. db.setFullYear(ab[0], ab[1] - 1, ab[2]);
  4554. var de = new Date();
  4555. de.setFullYear(ae[0], ae[1] - 1, ae[2]);
  4556. var unixDb = db.getTime() - 24 * 60 * 60 * 1000;
  4557. var unixDe = de.getTime() - 24 * 60 * 60 * 1000;
  4558. for (var k = unixDb; k <= unixDe;) {
  4559. k = k + 24 * 60 * 60 * 1000;
  4560. arr.push(this.getDate(new Date(parseInt(k))).fullDate);
  4561. }
  4562. return arr;
  4563. }
  4564. /**
  4565. * 计算阴历日期显示
  4566. */ }, { key: "getlunar", value: function getlunar(
  4567. year, month, date) {
  4568. return _calendar.default.solar2lunar(year, month, date);
  4569. }
  4570. /**
  4571. * 设置打点
  4572. */ }, { key: "setSelectInfo", value: function setSelectInfo(
  4573. data, value) {
  4574. this.selected = value;
  4575. this._getWeek(data);
  4576. }
  4577. /**
  4578. * 获取多选状态
  4579. */ }, { key: "setMultiple", value: function setMultiple(
  4580. fullDate) {var _this$multipleStatus =
  4581. this.multipleStatus,before = _this$multipleStatus.before,after = _this$multipleStatus.after;
  4582. if (!this.range) return;
  4583. if (before && after) {
  4584. this.multipleStatus.before = '';
  4585. this.multipleStatus.after = '';
  4586. this.multipleStatus.data = [];
  4587. this._getWeek(fullDate);
  4588. } else {
  4589. if (!before) {
  4590. this.multipleStatus.before = fullDate;
  4591. } else {
  4592. this.multipleStatus.after = fullDate;
  4593. if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) {
  4594. this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after);
  4595. } else {
  4596. this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before);
  4597. }
  4598. this._getWeek(fullDate);
  4599. }
  4600. }
  4601. }
  4602. /**
  4603. * 获取每周数据
  4604. * @param {Object} dateData
  4605. */ }, { key: "_getWeek", value: function _getWeek(
  4606. dateData) {var _this$getDate =
  4607. this.getDate(dateData),fullDate = _this$getDate.fullDate,year = _this$getDate.year,month = _this$getDate.month,date = _this$getDate.date,day = _this$getDate.day;
  4608. var firstDay = new Date(year, month - 1, 1).getDay();
  4609. var currentDay = new Date(year, month, 0).getDate();
  4610. var dates = {
  4611. lastMonthDays: this._getLastMonthDays(firstDay, this.getDate(dateData)), // 上个月末尾几天
  4612. currentMonthDys: this._currentMonthDys(currentDay, this.getDate(dateData)), // 本月天数
  4613. nextMonthDays: [], // 下个月开始几天
  4614. weeks: [] };
  4615. var canlender = [];
  4616. var surplus = 42 - (dates.lastMonthDays.length + dates.currentMonthDys.length);
  4617. dates.nextMonthDays = this._getNextMonthDays(surplus, this.getDate(dateData));
  4618. canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays);
  4619. var weeks = {};
  4620. // 拼接数组 上个月开始几天 + 本月天数+ 下个月开始几天
  4621. for (var i = 0; i < canlender.length; i++) {
  4622. if (i % 7 === 0) {
  4623. weeks[parseInt(i / 7)] = new Array(7);
  4624. }
  4625. weeks[parseInt(i / 7)][i % 7] = canlender[i];
  4626. }
  4627. this.canlender = canlender;
  4628. this.weeks = weeks;
  4629. }
  4630. //静态方法
  4631. // static init(date) {
  4632. // if (!this.instance) {
  4633. // this.instance = new Calendar(date);
  4634. // }
  4635. // return this.instance;
  4636. // }
  4637. }]);return Calendar;}();var _default =
  4638. Calendar;exports.default = _default;
  4639. /***/ }),
  4640. /***/ 1386:
  4641. /*!**************************************************************************************!*\
  4642. !*** D:/data/zhonghong/saber-weixin/pages/admin/components/uni-calendar/calendar.js ***!
  4643. \**************************************************************************************/
  4644. /*! no static exports found */
  4645. /***/ (function(module, exports, __webpack_require__) {
  4646. "use strict";
  4647. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /**
  4648. * @1900-2100区间内的公历、农历互转
  4649. * @charset UTF-8
  4650. * @github https://github.com/jjonline/calendar.js
  4651. * @Author Jea杨(JJonline@JJonline.Cn)
  4652. * @Time 2014-7-21
  4653. * @Time 2016-8-13 Fixed 2033hex、Attribution Annals
  4654. * @Time 2016-9-25 Fixed lunar LeapMonth Param Bug
  4655. * @Time 2017-7-24 Fixed use getTerm Func Param Error.use solar year,NOT lunar year
  4656. * @Version 1.0.3
  4657. * @公历转农历:calendar.solar2lunar(1987,11,01); //[you can ignore params of prefix 0]
  4658. * @农历转公历:calendar.lunar2solar(1987,09,10); //[you can ignore params of prefix 0]
  4659. */
  4660. /* eslint-disable */
  4661. var calendar = {
  4662. /**
  4663. * 农历1900-2100的润大小信息表
  4664. * @Array Of Property
  4665. * @return Hex
  4666. */
  4667. lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, // 1900-1909
  4668. 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, // 1910-1919
  4669. 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, // 1920-1929
  4670. 0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, // 1930-1939
  4671. 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, // 1940-1949
  4672. 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0, // 1950-1959
  4673. 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, // 1960-1969
  4674. 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6, // 1970-1979
  4675. 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, // 1980-1989
  4676. 0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x05ac0, 0x0ab60, 0x096d5, 0x092e0, // 1990-1999
  4677. 0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, // 2000-2009
  4678. 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, // 2010-2019
  4679. 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, // 2020-2029
  4680. 0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, // 2030-2039
  4681. 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0, // 2040-2049
  4682. /** Add By JJonline@JJonline.Cn**/
  4683. 0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0, // 2050-2059
  4684. 0x0a2e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4, // 2060-2069
  4685. 0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0, // 2070-2079
  4686. 0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160, // 2080-2089
  4687. 0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252, // 2090-2099
  4688. 0x0d520], // 2100
  4689. /**
  4690. * 公历每个月份的天数普通表
  4691. * @Array Of Property
  4692. * @return Number
  4693. */
  4694. solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
  4695. /**
  4696. * 天干地支之天干速查表
  4697. * @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"]
  4698. * @return Cn string
  4699. */
  4700. Gan: ["\u7532", "\u4E59", "\u4E19", "\u4E01", "\u620A", "\u5DF1", "\u5E9A", "\u8F9B", "\u58EC", "\u7678"],
  4701. /**
  4702. * 天干地支之地支速查表
  4703. * @Array Of Property
  4704. * @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"]
  4705. * @return Cn string
  4706. */
  4707. Zhi: ["\u5B50", "\u4E11", "\u5BC5", "\u536F", "\u8FB0", "\u5DF3", "\u5348", "\u672A", "\u7533", "\u9149", "\u620C", "\u4EA5"],
  4708. /**
  4709. * 天干地支之地支速查表<=>生肖
  4710. * @Array Of Property
  4711. * @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"]
  4712. * @return Cn string
  4713. */
  4714. Animals: ["\u9F20", "\u725B", "\u864E", "\u5154", "\u9F99", "\u86C7", "\u9A6C", "\u7F8A", "\u7334", "\u9E21", "\u72D7", "\u732A"],
  4715. /**
  4716. * 24节气速查表
  4717. * @Array Of Property
  4718. * @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"]
  4719. * @return Cn string
  4720. */
  4721. solarTerm: ["\u5C0F\u5BD2", "\u5927\u5BD2", "\u7ACB\u6625", "\u96E8\u6C34", "\u60CA\u86F0", "\u6625\u5206", "\u6E05\u660E", "\u8C37\u96E8", "\u7ACB\u590F", "\u5C0F\u6EE1", "\u8292\u79CD", "\u590F\u81F3", "\u5C0F\u6691", "\u5927\u6691", "\u7ACB\u79CB", "\u5904\u6691", "\u767D\u9732", "\u79CB\u5206", "\u5BD2\u9732", "\u971C\u964D", "\u7ACB\u51AC", "\u5C0F\u96EA", "\u5927\u96EA", "\u51AC\u81F3"],
  4722. /**
  4723. * 1900-2100各年的24节气日期速查表
  4724. * @Array Of Property
  4725. * @return 0x string For splice
  4726. */
  4727. sTermInfo: ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f',
  4728. '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
  4729. '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa',
  4730. '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f',
  4731. 'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f',
  4732. '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa',
  4733. '97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2',
  4734. '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f',
  4735. '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e',
  4736. '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
  4737. '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722',
  4738. '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f',
  4739. '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
  4740. '97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
  4741. '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722',
  4742. '9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f',
  4743. '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
  4744. '97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
  4745. '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722',
  4746. '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
  4747. '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
  4748. '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
  4749. '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722',
  4750. '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
  4751. '97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
  4752. '97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
  4753. '9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722',
  4754. '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
  4755. '97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
  4756. '9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
  4757. '7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
  4758. '7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
  4759. '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
  4760. '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
  4761. '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
  4762. '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
  4763. '97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
  4764. '9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
  4765. '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721',
  4766. '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2',
  4767. '977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
  4768. '7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
  4769. '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd',
  4770. '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
  4771. '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
  4772. '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
  4773. '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd',
  4774. '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
  4775. '977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
  4776. '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721',
  4777. '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5',
  4778. '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722',
  4779. '7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
  4780. '7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
  4781. '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35',
  4782. '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
  4783. '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721',
  4784. '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd',
  4785. '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35',
  4786. '7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
  4787. '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721',
  4788. '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5',
  4789. '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35',
  4790. '665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
  4791. '7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
  4792. '7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35',
  4793. '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722'],
  4794. /**
  4795. * 数字转中文速查表
  4796. * @Array Of Property
  4797. * @trans ['日','一','二','三','四','五','六','七','八','九','十']
  4798. * @return Cn string
  4799. */
  4800. nStr1: ["\u65E5", "\u4E00", "\u4E8C", "\u4E09", "\u56DB", "\u4E94", "\u516D", "\u4E03", "\u516B", "\u4E5D", "\u5341"],
  4801. /**
  4802. * 日期转农历称呼速查表
  4803. * @Array Of Property
  4804. * @trans ['初','十','廿','卅']
  4805. * @return Cn string
  4806. */
  4807. nStr2: ["\u521D", "\u5341", "\u5EFF", "\u5345"],
  4808. /**
  4809. * 月份转农历称呼速查表
  4810. * @Array Of Property
  4811. * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊']
  4812. * @return Cn string
  4813. */
  4814. nStr3: ["\u6B63", "\u4E8C", "\u4E09", "\u56DB", "\u4E94", "\u516D", "\u4E03", "\u516B", "\u4E5D", "\u5341", "\u51AC", "\u814A"],
  4815. /**
  4816. * 返回农历y年一整年的总天数
  4817. * @param lunar Year
  4818. * @return Number
  4819. * @eg:var count = calendar.lYearDays(1987) ;//count=387
  4820. */
  4821. lYearDays: function lYearDays(y) {
  4822. var i;var sum = 348;
  4823. for (i = 0x8000; i > 0x8; i >>= 1) {sum += this.lunarInfo[y - 1900] & i ? 1 : 0;}
  4824. return sum + this.leapDays(y);
  4825. },
  4826. /**
  4827. * 返回农历y年闰月是哪个月;若y年没有闰月 则返回0
  4828. * @param lunar Year
  4829. * @return Number (0-12)
  4830. * @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6
  4831. */
  4832. leapMonth: function leapMonth(y) {// 闰字编码 \u95f0
  4833. return this.lunarInfo[y - 1900] & 0xf;
  4834. },
  4835. /**
  4836. * 返回农历y年闰月的天数 若该年没有闰月则返回0
  4837. * @param lunar Year
  4838. * @return Number (0、29、30)
  4839. * @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29
  4840. */
  4841. leapDays: function leapDays(y) {
  4842. if (this.leapMonth(y)) {
  4843. return this.lunarInfo[y - 1900] & 0x10000 ? 30 : 29;
  4844. }
  4845. return 0;
  4846. },
  4847. /**
  4848. * 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法
  4849. * @param lunar Year
  4850. * @return Number (-1、29、30)
  4851. * @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29
  4852. */
  4853. monthDays: function monthDays(y, m) {
  4854. if (m > 12 || m < 1) {return -1;} // 月份参数从1至12,参数错误返回-1
  4855. return this.lunarInfo[y - 1900] & 0x10000 >> m ? 30 : 29;
  4856. },
  4857. /**
  4858. * 返回公历(!)y年m月的天数
  4859. * @param solar Year
  4860. * @return Number (-1、28、29、30、31)
  4861. * @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30
  4862. */
  4863. solarDays: function solarDays(y, m) {
  4864. if (m > 12 || m < 1) {return -1;} // 若参数错误 返回-1
  4865. var ms = m - 1;
  4866. if (ms == 1) {// 2月份的闰平规律测算后确认返回28或29
  4867. return y % 4 == 0 && y % 100 != 0 || y % 400 == 0 ? 29 : 28;
  4868. } else {
  4869. return this.solarMonth[ms];
  4870. }
  4871. },
  4872. /**
  4873. * 农历年份转换为干支纪年
  4874. * @param lYear 农历年的年份数
  4875. * @return Cn string
  4876. */
  4877. toGanZhiYear: function toGanZhiYear(lYear) {
  4878. var ganKey = (lYear - 3) % 10;
  4879. var zhiKey = (lYear - 3) % 12;
  4880. if (ganKey == 0) ganKey = 10; // 如果余数为0则为最后一个天干
  4881. if (zhiKey == 0) zhiKey = 12; // 如果余数为0则为最后一个地支
  4882. return this.Gan[ganKey - 1] + this.Zhi[zhiKey - 1];
  4883. },
  4884. /**
  4885. * 公历月、日判断所属星座
  4886. * @param cMonth [description]
  4887. * @param cDay [description]
  4888. * @return Cn string
  4889. */
  4890. toAstro: function toAstro(cMonth, cDay) {
  4891. var s = "\u9B54\u7FAF\u6C34\u74F6\u53CC\u9C7C\u767D\u7F8A\u91D1\u725B\u53CC\u5B50\u5DE8\u87F9\u72EE\u5B50\u5904\u5973\u5929\u79E4\u5929\u874E\u5C04\u624B\u9B54\u7FAF";
  4892. var arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22];
  4893. return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + "\u5EA7"; // 座
  4894. },
  4895. /**
  4896. * 传入offset偏移量返回干支
  4897. * @param offset 相对甲子的偏移量
  4898. * @return Cn string
  4899. */
  4900. toGanZhi: function toGanZhi(offset) {
  4901. return this.Gan[offset % 10] + this.Zhi[offset % 12];
  4902. },
  4903. /**
  4904. * 传入公历(!)y年获得该年第n个节气的公历日期
  4905. * @param y公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起
  4906. * @return day Number
  4907. * @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春
  4908. */
  4909. getTerm: function getTerm(y, n) {
  4910. if (y < 1900 || y > 2100) {return -1;}
  4911. if (n < 1 || n > 24) {return -1;}
  4912. var _table = this.sTermInfo[y - 1900];
  4913. var _info = [
  4914. parseInt('0x' + _table.substr(0, 5)).toString(),
  4915. parseInt('0x' + _table.substr(5, 5)).toString(),
  4916. parseInt('0x' + _table.substr(10, 5)).toString(),
  4917. parseInt('0x' + _table.substr(15, 5)).toString(),
  4918. parseInt('0x' + _table.substr(20, 5)).toString(),
  4919. parseInt('0x' + _table.substr(25, 5)).toString()];
  4920. var _calday = [
  4921. _info[0].substr(0, 1),
  4922. _info[0].substr(1, 2),
  4923. _info[0].substr(3, 1),
  4924. _info[0].substr(4, 2),
  4925. _info[1].substr(0, 1),
  4926. _info[1].substr(1, 2),
  4927. _info[1].substr(3, 1),
  4928. _info[1].substr(4, 2),
  4929. _info[2].substr(0, 1),
  4930. _info[2].substr(1, 2),
  4931. _info[2].substr(3, 1),
  4932. _info[2].substr(4, 2),
  4933. _info[3].substr(0, 1),
  4934. _info[3].substr(1, 2),
  4935. _info[3].substr(3, 1),
  4936. _info[3].substr(4, 2),
  4937. _info[4].substr(0, 1),
  4938. _info[4].substr(1, 2),
  4939. _info[4].substr(3, 1),
  4940. _info[4].substr(4, 2),
  4941. _info[5].substr(0, 1),
  4942. _info[5].substr(1, 2),
  4943. _info[5].substr(3, 1),
  4944. _info[5].substr(4, 2)];
  4945. return parseInt(_calday[n - 1]);
  4946. },
  4947. /**
  4948. * 传入农历数字月份返回汉语通俗表示法
  4949. * @param lunar month
  4950. * @return Cn string
  4951. * @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月'
  4952. */
  4953. toChinaMonth: function toChinaMonth(m) {// 月 => \u6708
  4954. if (m > 12 || m < 1) {return -1;} // 若参数错误 返回-1
  4955. var s = this.nStr3[m - 1];
  4956. s += "\u6708"; // 加上月字
  4957. return s;
  4958. },
  4959. /**
  4960. * 传入农历日期数字返回汉字表示法
  4961. * @param lunar day
  4962. * @return Cn string
  4963. * @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一'
  4964. */
  4965. toChinaDay: function toChinaDay(d) {// 日 => \u65e5
  4966. var s;
  4967. switch (d) {
  4968. case 10:
  4969. s = "\u521D\u5341";break;
  4970. case 20:
  4971. s = "\u4E8C\u5341";break;
  4972. break;
  4973. case 30:
  4974. s = "\u4E09\u5341";break;
  4975. break;
  4976. default:
  4977. s = this.nStr2[Math.floor(d / 10)];
  4978. s += this.nStr1[d % 10];}
  4979. return s;
  4980. },
  4981. /**
  4982. * 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春”
  4983. * @param y year
  4984. * @return Cn string
  4985. * @eg:var animal = calendar.getAnimal(1987) ;//animal='兔'
  4986. */
  4987. getAnimal: function getAnimal(y) {
  4988. return this.Animals[(y - 4) % 12];
  4989. },
  4990. /**
  4991. * 传入阳历年月日获得详细的公历、农历object信息 <=>JSON
  4992. * @param y solar year
  4993. * @param m solar month
  4994. * @param d solar day
  4995. * @return JSON object
  4996. * @eg:console.log(calendar.solar2lunar(1987,11,01));
  4997. */
  4998. solar2lunar: function solar2lunar(y, m, d) {// 参数区间1900.1.31~2100.12.31
  4999. // 年份限定、上限
  5000. if (y < 1900 || y > 2100) {
  5001. return -1; // undefined转换为数字变为NaN
  5002. }
  5003. // 公历传参最下限
  5004. if (y == 1900 && m == 1 && d < 31) {
  5005. return -1;
  5006. }
  5007. // 未传参 获得当天
  5008. if (!y) {
  5009. var objDate = new Date();
  5010. } else {
  5011. var objDate = new Date(y, parseInt(m) - 1, d);
  5012. }
  5013. var i;var leap = 0;var temp = 0;
  5014. // 修正ymd参数
  5015. var y = objDate.getFullYear();
  5016. var m = objDate.getMonth() + 1;
  5017. var d = objDate.getDate();
  5018. var offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0, 31)) / 86400000;
  5019. for (i = 1900; i < 2101 && offset > 0; i++) {
  5020. temp = this.lYearDays(i);
  5021. offset -= temp;
  5022. }
  5023. if (offset < 0) {
  5024. offset += temp;i--;
  5025. }
  5026. // 是否今天
  5027. var isTodayObj = new Date();
  5028. var isToday = false;
  5029. if (isTodayObj.getFullYear() == y && isTodayObj.getMonth() + 1 == m && isTodayObj.getDate() == d) {
  5030. isToday = true;
  5031. }
  5032. // 星期几
  5033. var nWeek = objDate.getDay();
  5034. var cWeek = this.nStr1[nWeek];
  5035. // 数字表示周几顺应天朝周一开始的惯例
  5036. if (nWeek == 0) {
  5037. nWeek = 7;
  5038. }
  5039. // 农历年
  5040. var year = i;
  5041. var leap = this.leapMonth(i); // 闰哪个月
  5042. var isLeap = false;
  5043. // 效验闰月
  5044. for (i = 1; i < 13 && offset > 0; i++) {
  5045. // 闰月
  5046. if (leap > 0 && i == leap + 1 && isLeap == false) {
  5047. --i;
  5048. isLeap = true;temp = this.leapDays(year); // 计算农历闰月天数
  5049. } else {
  5050. temp = this.monthDays(year, i); // 计算农历普通月天数
  5051. }
  5052. // 解除闰月
  5053. if (isLeap == true && i == leap + 1) {isLeap = false;}
  5054. offset -= temp;
  5055. }
  5056. // 闰月导致数组下标重叠取反
  5057. if (offset == 0 && leap > 0 && i == leap + 1) {
  5058. if (isLeap) {
  5059. isLeap = false;
  5060. } else {
  5061. isLeap = true;--i;
  5062. }
  5063. }
  5064. if (offset < 0) {
  5065. offset += temp;--i;
  5066. }
  5067. // 农历月
  5068. var month = i;
  5069. // 农历日
  5070. var day = offset + 1;
  5071. // 天干地支处理
  5072. var sm = m - 1;
  5073. var gzY = this.toGanZhiYear(year);
  5074. // 当月的两个节气
  5075. // bugfix-2017-7-24 11:03:38 use lunar Year Param `y` Not `year`
  5076. var firstNode = this.getTerm(y, m * 2 - 1); // 返回当月「节」为几日开始
  5077. var secondNode = this.getTerm(y, m * 2); // 返回当月「节」为几日开始
  5078. // 依据12节气修正干支月
  5079. var gzM = this.toGanZhi((y - 1900) * 12 + m + 11);
  5080. if (d >= firstNode) {
  5081. gzM = this.toGanZhi((y - 1900) * 12 + m + 12);
  5082. }
  5083. // 传入的日期的节气与否
  5084. var isTerm = false;
  5085. var Term = null;
  5086. if (firstNode == d) {
  5087. isTerm = true;
  5088. Term = this.solarTerm[m * 2 - 2];
  5089. }
  5090. if (secondNode == d) {
  5091. isTerm = true;
  5092. Term = this.solarTerm[m * 2 - 1];
  5093. }
  5094. // 日柱 当月一日与 1900/1/1 相差天数
  5095. var dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10;
  5096. var gzD = this.toGanZhi(dayCyclical + d - 1);
  5097. // 该日期所属的星座
  5098. var astro = this.toAstro(m, d);
  5099. return { 'lYear': year, 'lMonth': month, 'lDay': day, 'Animal': this.getAnimal(year), 'IMonthCn': (isLeap ? "\u95F0" : '') + this.toChinaMonth(month), 'IDayCn': this.toChinaDay(day), 'cYear': y, 'cMonth': m, 'cDay': d, 'gzYear': gzY, 'gzMonth': gzM, 'gzDay': gzD, 'isToday': isToday, 'isLeap': isLeap, 'nWeek': nWeek, 'ncWeek': "\u661F\u671F" + cWeek, 'isTerm': isTerm, 'Term': Term, 'astro': astro };
  5100. },
  5101. /**
  5102. * 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON
  5103. * @param y lunar year
  5104. * @param m lunar month
  5105. * @param d lunar day
  5106. * @param isLeapMonth lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可]
  5107. * @return JSON object
  5108. * @eg:console.log(calendar.lunar2solar(1987,9,10));
  5109. */
  5110. lunar2solar: function lunar2solar(y, m, d, isLeapMonth) {// 参数区间1900.1.31~2100.12.1
  5111. var isLeapMonth = !!isLeapMonth;
  5112. var leapOffset = 0;
  5113. var leapMonth = this.leapMonth(y);
  5114. var leapDay = this.leapDays(y);
  5115. if (isLeapMonth && leapMonth != m) {return -1;} // 传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同
  5116. if (y == 2100 && m == 12 && d > 1 || y == 1900 && m == 1 && d < 31) {return -1;} // 超出了最大极限值
  5117. var day = this.monthDays(y, m);
  5118. var _day = day;
  5119. // bugFix 2016-9-25
  5120. // if month is leap, _day use leapDays method
  5121. if (isLeapMonth) {
  5122. _day = this.leapDays(y, m);
  5123. }
  5124. if (y < 1900 || y > 2100 || d > _day) {return -1;} // 参数合法性效验
  5125. // 计算农历的时间差
  5126. var offset = 0;
  5127. for (var i = 1900; i < y; i++) {
  5128. offset += this.lYearDays(i);
  5129. }
  5130. var leap = 0;var isAdd = false;
  5131. for (var i = 1; i < m; i++) {
  5132. leap = this.leapMonth(y);
  5133. if (!isAdd) {// 处理闰月
  5134. if (leap <= i && leap > 0) {
  5135. offset += this.leapDays(y);isAdd = true;
  5136. }
  5137. }
  5138. offset += this.monthDays(y, i);
  5139. }
  5140. // 转换闰月农历 需补充该年闰月的前一个月的时差
  5141. if (isLeapMonth) {offset += day;}
  5142. // 1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点)
  5143. var stmap = Date.UTC(1900, 1, 30, 0, 0, 0);
  5144. var calObj = new Date((offset + d - 31) * 86400000 + stmap);
  5145. var cY = calObj.getUTCFullYear();
  5146. var cM = calObj.getUTCMonth() + 1;
  5147. var cD = calObj.getUTCDate();
  5148. return this.solar2lunar(cY, cM, cD);
  5149. } };var _default =
  5150. calendar;exports.default = _default;
  5151. /***/ }),
  5152. /***/ 139:
  5153. /*!***************************************************************************************!*\
  5154. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/picker.js ***!
  5155. \***************************************************************************************/
  5156. /*! no static exports found */
  5157. /***/ (function(module, exports, __webpack_require__) {
  5158. "use strict";
  5159. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  5160. * @Author : LQ
  5161. * @Description :
  5162. * @version : 1.0
  5163. * @Date : 2021-08-20 16:44:21
  5164. * @LastAuthor : LQ
  5165. * @lastTime : 2021-08-20 17:18:20
  5166. * @FilePath : /u-view2.0/uview-ui/libs/config/props/picker.js
  5167. */var _default =
  5168. {
  5169. // picker
  5170. picker: {
  5171. show: false,
  5172. showToolbar: true,
  5173. title: '',
  5174. columns: function columns() {return [];},
  5175. loading: false,
  5176. itemHeight: 44,
  5177. cancelText: '取消',
  5178. confirmText: '确定',
  5179. cancelColor: '#909193',
  5180. confirmColor: '#3c9cff',
  5181. visibleItemCount: 5,
  5182. keyName: 'text',
  5183. closeOnClickOverlay: false,
  5184. defaultIndex: function defaultIndex() {return [];},
  5185. immediateChange: false } };exports.default = _default;
  5186. /***/ }),
  5187. /***/ 14:
  5188. /*!**************************************************************************************!*\
  5189. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vuex3/dist/vuex.common.js ***!
  5190. \**************************************************************************************/
  5191. /*! no static exports found */
  5192. /***/ (function(module, exports, __webpack_require__) {
  5193. "use strict";
  5194. /* WEBPACK VAR INJECTION */(function(global) {/*!
  5195. * vuex v3.6.2
  5196. * (c) 2021 Evan You
  5197. * @license MIT
  5198. */
  5199. function applyMixin (Vue) {
  5200. var version = Number(Vue.version.split('.')[0]);
  5201. if (version >= 2) {
  5202. Vue.mixin({ beforeCreate: vuexInit });
  5203. } else {
  5204. // override init and inject vuex init procedure
  5205. // for 1.x backwards compatibility.
  5206. var _init = Vue.prototype._init;
  5207. Vue.prototype._init = function (options) {
  5208. if ( options === void 0 ) options = {};
  5209. options.init = options.init
  5210. ? [vuexInit].concat(options.init)
  5211. : vuexInit;
  5212. _init.call(this, options);
  5213. };
  5214. }
  5215. /**
  5216. * Vuex init hook, injected into each instances init hooks list.
  5217. */
  5218. function vuexInit () {
  5219. var options = this.$options;
  5220. // store injection
  5221. if (options.store) {
  5222. this.$store = typeof options.store === 'function'
  5223. ? options.store()
  5224. : options.store;
  5225. } else if (options.parent && options.parent.$store) {
  5226. this.$store = options.parent.$store;
  5227. }
  5228. }
  5229. }
  5230. var target = typeof window !== 'undefined'
  5231. ? window
  5232. : typeof global !== 'undefined'
  5233. ? global
  5234. : {};
  5235. var devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__;
  5236. function devtoolPlugin (store) {
  5237. if (!devtoolHook) { return }
  5238. store._devtoolHook = devtoolHook;
  5239. devtoolHook.emit('vuex:init', store);
  5240. devtoolHook.on('vuex:travel-to-state', function (targetState) {
  5241. store.replaceState(targetState);
  5242. });
  5243. store.subscribe(function (mutation, state) {
  5244. devtoolHook.emit('vuex:mutation', mutation, state);
  5245. }, { prepend: true });
  5246. store.subscribeAction(function (action, state) {
  5247. devtoolHook.emit('vuex:action', action, state);
  5248. }, { prepend: true });
  5249. }
  5250. /**
  5251. * Get the first item that pass the test
  5252. * by second argument function
  5253. *
  5254. * @param {Array} list
  5255. * @param {Function} f
  5256. * @return {*}
  5257. */
  5258. function find (list, f) {
  5259. return list.filter(f)[0]
  5260. }
  5261. /**
  5262. * Deep copy the given object considering circular structure.
  5263. * This function caches all nested objects and its copies.
  5264. * If it detects circular structure, use cached copy to avoid infinite loop.
  5265. *
  5266. * @param {*} obj
  5267. * @param {Array<Object>} cache
  5268. * @return {*}
  5269. */
  5270. function deepCopy (obj, cache) {
  5271. if ( cache === void 0 ) cache = [];
  5272. // just return if obj is immutable value
  5273. if (obj === null || typeof obj !== 'object') {
  5274. return obj
  5275. }
  5276. // if obj is hit, it is in circular structure
  5277. var hit = find(cache, function (c) { return c.original === obj; });
  5278. if (hit) {
  5279. return hit.copy
  5280. }
  5281. var copy = Array.isArray(obj) ? [] : {};
  5282. // put the copy into cache at first
  5283. // because we want to refer it in recursive deepCopy
  5284. cache.push({
  5285. original: obj,
  5286. copy: copy
  5287. });
  5288. Object.keys(obj).forEach(function (key) {
  5289. copy[key] = deepCopy(obj[key], cache);
  5290. });
  5291. return copy
  5292. }
  5293. /**
  5294. * forEach for object
  5295. */
  5296. function forEachValue (obj, fn) {
  5297. Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });
  5298. }
  5299. function isObject (obj) {
  5300. return obj !== null && typeof obj === 'object'
  5301. }
  5302. function isPromise (val) {
  5303. return val && typeof val.then === 'function'
  5304. }
  5305. function assert (condition, msg) {
  5306. if (!condition) { throw new Error(("[vuex] " + msg)) }
  5307. }
  5308. function partial (fn, arg) {
  5309. return function () {
  5310. return fn(arg)
  5311. }
  5312. }
  5313. // Base data struct for store's module, package with some attribute and method
  5314. var Module = function Module (rawModule, runtime) {
  5315. this.runtime = runtime;
  5316. // Store some children item
  5317. this._children = Object.create(null);
  5318. // Store the origin module object which passed by programmer
  5319. this._rawModule = rawModule;
  5320. var rawState = rawModule.state;
  5321. // Store the origin module's state
  5322. this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};
  5323. };
  5324. var prototypeAccessors = { namespaced: { configurable: true } };
  5325. prototypeAccessors.namespaced.get = function () {
  5326. return !!this._rawModule.namespaced
  5327. };
  5328. Module.prototype.addChild = function addChild (key, module) {
  5329. this._children[key] = module;
  5330. };
  5331. Module.prototype.removeChild = function removeChild (key) {
  5332. delete this._children[key];
  5333. };
  5334. Module.prototype.getChild = function getChild (key) {
  5335. return this._children[key]
  5336. };
  5337. Module.prototype.hasChild = function hasChild (key) {
  5338. return key in this._children
  5339. };
  5340. Module.prototype.update = function update (rawModule) {
  5341. this._rawModule.namespaced = rawModule.namespaced;
  5342. if (rawModule.actions) {
  5343. this._rawModule.actions = rawModule.actions;
  5344. }
  5345. if (rawModule.mutations) {
  5346. this._rawModule.mutations = rawModule.mutations;
  5347. }
  5348. if (rawModule.getters) {
  5349. this._rawModule.getters = rawModule.getters;
  5350. }
  5351. };
  5352. Module.prototype.forEachChild = function forEachChild (fn) {
  5353. forEachValue(this._children, fn);
  5354. };
  5355. Module.prototype.forEachGetter = function forEachGetter (fn) {
  5356. if (this._rawModule.getters) {
  5357. forEachValue(this._rawModule.getters, fn);
  5358. }
  5359. };
  5360. Module.prototype.forEachAction = function forEachAction (fn) {
  5361. if (this._rawModule.actions) {
  5362. forEachValue(this._rawModule.actions, fn);
  5363. }
  5364. };
  5365. Module.prototype.forEachMutation = function forEachMutation (fn) {
  5366. if (this._rawModule.mutations) {
  5367. forEachValue(this._rawModule.mutations, fn);
  5368. }
  5369. };
  5370. Object.defineProperties( Module.prototype, prototypeAccessors );
  5371. var ModuleCollection = function ModuleCollection (rawRootModule) {
  5372. // register root module (Vuex.Store options)
  5373. this.register([], rawRootModule, false);
  5374. };
  5375. ModuleCollection.prototype.get = function get (path) {
  5376. return path.reduce(function (module, key) {
  5377. return module.getChild(key)
  5378. }, this.root)
  5379. };
  5380. ModuleCollection.prototype.getNamespace = function getNamespace (path) {
  5381. var module = this.root;
  5382. return path.reduce(function (namespace, key) {
  5383. module = module.getChild(key);
  5384. return namespace + (module.namespaced ? key + '/' : '')
  5385. }, '')
  5386. };
  5387. ModuleCollection.prototype.update = function update$1 (rawRootModule) {
  5388. update([], this.root, rawRootModule);
  5389. };
  5390. ModuleCollection.prototype.register = function register (path, rawModule, runtime) {
  5391. var this$1 = this;
  5392. if ( runtime === void 0 ) runtime = true;
  5393. if ((true)) {
  5394. assertRawModule(path, rawModule);
  5395. }
  5396. var newModule = new Module(rawModule, runtime);
  5397. if (path.length === 0) {
  5398. this.root = newModule;
  5399. } else {
  5400. var parent = this.get(path.slice(0, -1));
  5401. parent.addChild(path[path.length - 1], newModule);
  5402. }
  5403. // register nested modules
  5404. if (rawModule.modules) {
  5405. forEachValue(rawModule.modules, function (rawChildModule, key) {
  5406. this$1.register(path.concat(key), rawChildModule, runtime);
  5407. });
  5408. }
  5409. };
  5410. ModuleCollection.prototype.unregister = function unregister (path) {
  5411. var parent = this.get(path.slice(0, -1));
  5412. var key = path[path.length - 1];
  5413. var child = parent.getChild(key);
  5414. if (!child) {
  5415. if ((true)) {
  5416. console.warn(
  5417. "[vuex] trying to unregister module '" + key + "', which is " +
  5418. "not registered"
  5419. );
  5420. }
  5421. return
  5422. }
  5423. if (!child.runtime) {
  5424. return
  5425. }
  5426. parent.removeChild(key);
  5427. };
  5428. ModuleCollection.prototype.isRegistered = function isRegistered (path) {
  5429. var parent = this.get(path.slice(0, -1));
  5430. var key = path[path.length - 1];
  5431. if (parent) {
  5432. return parent.hasChild(key)
  5433. }
  5434. return false
  5435. };
  5436. function update (path, targetModule, newModule) {
  5437. if ((true)) {
  5438. assertRawModule(path, newModule);
  5439. }
  5440. // update target module
  5441. targetModule.update(newModule);
  5442. // update nested modules
  5443. if (newModule.modules) {
  5444. for (var key in newModule.modules) {
  5445. if (!targetModule.getChild(key)) {
  5446. if ((true)) {
  5447. console.warn(
  5448. "[vuex] trying to add a new module '" + key + "' on hot reloading, " +
  5449. 'manual reload is needed'
  5450. );
  5451. }
  5452. return
  5453. }
  5454. update(
  5455. path.concat(key),
  5456. targetModule.getChild(key),
  5457. newModule.modules[key]
  5458. );
  5459. }
  5460. }
  5461. }
  5462. var functionAssert = {
  5463. assert: function (value) { return typeof value === 'function'; },
  5464. expected: 'function'
  5465. };
  5466. var objectAssert = {
  5467. assert: function (value) { return typeof value === 'function' ||
  5468. (typeof value === 'object' && typeof value.handler === 'function'); },
  5469. expected: 'function or object with "handler" function'
  5470. };
  5471. var assertTypes = {
  5472. getters: functionAssert,
  5473. mutations: functionAssert,
  5474. actions: objectAssert
  5475. };
  5476. function assertRawModule (path, rawModule) {
  5477. Object.keys(assertTypes).forEach(function (key) {
  5478. if (!rawModule[key]) { return }
  5479. var assertOptions = assertTypes[key];
  5480. forEachValue(rawModule[key], function (value, type) {
  5481. assert(
  5482. assertOptions.assert(value),
  5483. makeAssertionMessage(path, key, type, value, assertOptions.expected)
  5484. );
  5485. });
  5486. });
  5487. }
  5488. function makeAssertionMessage (path, key, type, value, expected) {
  5489. var buf = key + " should be " + expected + " but \"" + key + "." + type + "\"";
  5490. if (path.length > 0) {
  5491. buf += " in module \"" + (path.join('.')) + "\"";
  5492. }
  5493. buf += " is " + (JSON.stringify(value)) + ".";
  5494. return buf
  5495. }
  5496. var Vue; // bind on install
  5497. var Store = function Store (options) {
  5498. var this$1 = this;
  5499. if ( options === void 0 ) options = {};
  5500. // Auto install if it is not done yet and `window` has `Vue`.
  5501. // To allow users to avoid auto-installation in some cases,
  5502. // this code should be placed here. See #731
  5503. if (!Vue && typeof window !== 'undefined' && window.Vue) {
  5504. install(window.Vue);
  5505. }
  5506. if ((true)) {
  5507. assert(Vue, "must call Vue.use(Vuex) before creating a store instance.");
  5508. assert(typeof Promise !== 'undefined', "vuex requires a Promise polyfill in this browser.");
  5509. assert(this instanceof Store, "store must be called with the new operator.");
  5510. }
  5511. var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];
  5512. var strict = options.strict; if ( strict === void 0 ) strict = false;
  5513. // store internal state
  5514. this._committing = false;
  5515. this._actions = Object.create(null);
  5516. this._actionSubscribers = [];
  5517. this._mutations = Object.create(null);
  5518. this._wrappedGetters = Object.create(null);
  5519. this._modules = new ModuleCollection(options);
  5520. this._modulesNamespaceMap = Object.create(null);
  5521. this._subscribers = [];
  5522. this._watcherVM = new Vue();
  5523. this._makeLocalGettersCache = Object.create(null);
  5524. // bind commit and dispatch to self
  5525. var store = this;
  5526. var ref = this;
  5527. var dispatch = ref.dispatch;
  5528. var commit = ref.commit;
  5529. this.dispatch = function boundDispatch (type, payload) {
  5530. return dispatch.call(store, type, payload)
  5531. };
  5532. this.commit = function boundCommit (type, payload, options) {
  5533. return commit.call(store, type, payload, options)
  5534. };
  5535. // strict mode
  5536. this.strict = strict;
  5537. var state = this._modules.root.state;
  5538. // init root module.
  5539. // this also recursively registers all sub-modules
  5540. // and collects all module getters inside this._wrappedGetters
  5541. installModule(this, state, [], this._modules.root);
  5542. // initialize the store vm, which is responsible for the reactivity
  5543. // (also registers _wrappedGetters as computed properties)
  5544. resetStoreVM(this, state);
  5545. // apply plugins
  5546. plugins.forEach(function (plugin) { return plugin(this$1); });
  5547. var useDevtools = options.devtools !== undefined ? options.devtools : Vue.config.devtools;
  5548. if (useDevtools) {
  5549. devtoolPlugin(this);
  5550. }
  5551. };
  5552. var prototypeAccessors$1 = { state: { configurable: true } };
  5553. prototypeAccessors$1.state.get = function () {
  5554. return this._vm._data.$$state
  5555. };
  5556. prototypeAccessors$1.state.set = function (v) {
  5557. if ((true)) {
  5558. assert(false, "use store.replaceState() to explicit replace store state.");
  5559. }
  5560. };
  5561. Store.prototype.commit = function commit (_type, _payload, _options) {
  5562. var this$1 = this;
  5563. // check object-style commit
  5564. var ref = unifyObjectStyle(_type, _payload, _options);
  5565. var type = ref.type;
  5566. var payload = ref.payload;
  5567. var options = ref.options;
  5568. var mutation = { type: type, payload: payload };
  5569. var entry = this._mutations[type];
  5570. if (!entry) {
  5571. if ((true)) {
  5572. console.error(("[vuex] unknown mutation type: " + type));
  5573. }
  5574. return
  5575. }
  5576. this._withCommit(function () {
  5577. entry.forEach(function commitIterator (handler) {
  5578. handler(payload);
  5579. });
  5580. });
  5581. this._subscribers
  5582. .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe
  5583. .forEach(function (sub) { return sub(mutation, this$1.state); });
  5584. if (
  5585. ( true) &&
  5586. options && options.silent
  5587. ) {
  5588. console.warn(
  5589. "[vuex] mutation type: " + type + ". Silent option has been removed. " +
  5590. 'Use the filter functionality in the vue-devtools'
  5591. );
  5592. }
  5593. };
  5594. Store.prototype.dispatch = function dispatch (_type, _payload) {
  5595. var this$1 = this;
  5596. // check object-style dispatch
  5597. var ref = unifyObjectStyle(_type, _payload);
  5598. var type = ref.type;
  5599. var payload = ref.payload;
  5600. var action = { type: type, payload: payload };
  5601. var entry = this._actions[type];
  5602. if (!entry) {
  5603. if ((true)) {
  5604. console.error(("[vuex] unknown action type: " + type));
  5605. }
  5606. return
  5607. }
  5608. try {
  5609. this._actionSubscribers
  5610. .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe
  5611. .filter(function (sub) { return sub.before; })
  5612. .forEach(function (sub) { return sub.before(action, this$1.state); });
  5613. } catch (e) {
  5614. if ((true)) {
  5615. console.warn("[vuex] error in before action subscribers: ");
  5616. console.error(e);
  5617. }
  5618. }
  5619. var result = entry.length > 1
  5620. ? Promise.all(entry.map(function (handler) { return handler(payload); }))
  5621. : entry[0](payload);
  5622. return new Promise(function (resolve, reject) {
  5623. result.then(function (res) {
  5624. try {
  5625. this$1._actionSubscribers
  5626. .filter(function (sub) { return sub.after; })
  5627. .forEach(function (sub) { return sub.after(action, this$1.state); });
  5628. } catch (e) {
  5629. if ((true)) {
  5630. console.warn("[vuex] error in after action subscribers: ");
  5631. console.error(e);
  5632. }
  5633. }
  5634. resolve(res);
  5635. }, function (error) {
  5636. try {
  5637. this$1._actionSubscribers
  5638. .filter(function (sub) { return sub.error; })
  5639. .forEach(function (sub) { return sub.error(action, this$1.state, error); });
  5640. } catch (e) {
  5641. if ((true)) {
  5642. console.warn("[vuex] error in error action subscribers: ");
  5643. console.error(e);
  5644. }
  5645. }
  5646. reject(error);
  5647. });
  5648. })
  5649. };
  5650. Store.prototype.subscribe = function subscribe (fn, options) {
  5651. return genericSubscribe(fn, this._subscribers, options)
  5652. };
  5653. Store.prototype.subscribeAction = function subscribeAction (fn, options) {
  5654. var subs = typeof fn === 'function' ? { before: fn } : fn;
  5655. return genericSubscribe(subs, this._actionSubscribers, options)
  5656. };
  5657. Store.prototype.watch = function watch (getter, cb, options) {
  5658. var this$1 = this;
  5659. if ((true)) {
  5660. assert(typeof getter === 'function', "store.watch only accepts a function.");
  5661. }
  5662. return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options)
  5663. };
  5664. Store.prototype.replaceState = function replaceState (state) {
  5665. var this$1 = this;
  5666. this._withCommit(function () {
  5667. this$1._vm._data.$$state = state;
  5668. });
  5669. };
  5670. Store.prototype.registerModule = function registerModule (path, rawModule, options) {
  5671. if ( options === void 0 ) options = {};
  5672. if (typeof path === 'string') { path = [path]; }
  5673. if ((true)) {
  5674. assert(Array.isArray(path), "module path must be a string or an Array.");
  5675. assert(path.length > 0, 'cannot register the root module by using registerModule.');
  5676. }
  5677. this._modules.register(path, rawModule);
  5678. installModule(this, this.state, path, this._modules.get(path), options.preserveState);
  5679. // reset store to update getters...
  5680. resetStoreVM(this, this.state);
  5681. };
  5682. Store.prototype.unregisterModule = function unregisterModule (path) {
  5683. var this$1 = this;
  5684. if (typeof path === 'string') { path = [path]; }
  5685. if ((true)) {
  5686. assert(Array.isArray(path), "module path must be a string or an Array.");
  5687. }
  5688. this._modules.unregister(path);
  5689. this._withCommit(function () {
  5690. var parentState = getNestedState(this$1.state, path.slice(0, -1));
  5691. Vue.delete(parentState, path[path.length - 1]);
  5692. });
  5693. resetStore(this);
  5694. };
  5695. Store.prototype.hasModule = function hasModule (path) {
  5696. if (typeof path === 'string') { path = [path]; }
  5697. if ((true)) {
  5698. assert(Array.isArray(path), "module path must be a string or an Array.");
  5699. }
  5700. return this._modules.isRegistered(path)
  5701. };
  5702. Store.prototype[[104,111,116,85,112,100,97,116,101].map(function (item) {return String.fromCharCode(item)}).join('')] = function (newOptions) {
  5703. this._modules.update(newOptions);
  5704. resetStore(this, true);
  5705. };
  5706. Store.prototype._withCommit = function _withCommit (fn) {
  5707. var committing = this._committing;
  5708. this._committing = true;
  5709. fn();
  5710. this._committing = committing;
  5711. };
  5712. Object.defineProperties( Store.prototype, prototypeAccessors$1 );
  5713. function genericSubscribe (fn, subs, options) {
  5714. if (subs.indexOf(fn) < 0) {
  5715. options && options.prepend
  5716. ? subs.unshift(fn)
  5717. : subs.push(fn);
  5718. }
  5719. return function () {
  5720. var i = subs.indexOf(fn);
  5721. if (i > -1) {
  5722. subs.splice(i, 1);
  5723. }
  5724. }
  5725. }
  5726. function resetStore (store, hot) {
  5727. store._actions = Object.create(null);
  5728. store._mutations = Object.create(null);
  5729. store._wrappedGetters = Object.create(null);
  5730. store._modulesNamespaceMap = Object.create(null);
  5731. var state = store.state;
  5732. // init all modules
  5733. installModule(store, state, [], store._modules.root, true);
  5734. // reset vm
  5735. resetStoreVM(store, state, hot);
  5736. }
  5737. function resetStoreVM (store, state, hot) {
  5738. var oldVm = store._vm;
  5739. // bind store public getters
  5740. store.getters = {};
  5741. // reset local getters cache
  5742. store._makeLocalGettersCache = Object.create(null);
  5743. var wrappedGetters = store._wrappedGetters;
  5744. var computed = {};
  5745. forEachValue(wrappedGetters, function (fn, key) {
  5746. // use computed to leverage its lazy-caching mechanism
  5747. // direct inline function use will lead to closure preserving oldVm.
  5748. // using partial to return function with only arguments preserved in closure environment.
  5749. computed[key] = partial(fn, store);
  5750. Object.defineProperty(store.getters, key, {
  5751. get: function () { return store._vm[key]; },
  5752. enumerable: true // for local getters
  5753. });
  5754. });
  5755. // use a Vue instance to store the state tree
  5756. // suppress warnings just in case the user has added
  5757. // some funky global mixins
  5758. var silent = Vue.config.silent;
  5759. Vue.config.silent = true;
  5760. store._vm = new Vue({
  5761. data: {
  5762. $$state: state
  5763. },
  5764. computed: computed
  5765. });
  5766. Vue.config.silent = silent;
  5767. // enable strict mode for new vm
  5768. if (store.strict) {
  5769. enableStrictMode(store);
  5770. }
  5771. if (oldVm) {
  5772. if (hot) {
  5773. // dispatch changes in all subscribed watchers
  5774. // to force getter re-evaluation for hot reloading.
  5775. store._withCommit(function () {
  5776. oldVm._data.$$state = null;
  5777. });
  5778. }
  5779. Vue.nextTick(function () { return oldVm.$destroy(); });
  5780. }
  5781. }
  5782. function installModule (store, rootState, path, module, hot) {
  5783. var isRoot = !path.length;
  5784. var namespace = store._modules.getNamespace(path);
  5785. // register in namespace map
  5786. if (module.namespaced) {
  5787. if (store._modulesNamespaceMap[namespace] && ("development" !== 'production')) {
  5788. console.error(("[vuex] duplicate namespace " + namespace + " for the namespaced module " + (path.join('/'))));
  5789. }
  5790. store._modulesNamespaceMap[namespace] = module;
  5791. }
  5792. // set state
  5793. if (!isRoot && !hot) {
  5794. var parentState = getNestedState(rootState, path.slice(0, -1));
  5795. var moduleName = path[path.length - 1];
  5796. store._withCommit(function () {
  5797. if ((true)) {
  5798. if (moduleName in parentState) {
  5799. console.warn(
  5800. ("[vuex] state field \"" + moduleName + "\" was overridden by a module with the same name at \"" + (path.join('.')) + "\"")
  5801. );
  5802. }
  5803. }
  5804. Vue.set(parentState, moduleName, module.state);
  5805. });
  5806. }
  5807. var local = module.context = makeLocalContext(store, namespace, path);
  5808. module.forEachMutation(function (mutation, key) {
  5809. var namespacedType = namespace + key;
  5810. registerMutation(store, namespacedType, mutation, local);
  5811. });
  5812. module.forEachAction(function (action, key) {
  5813. var type = action.root ? key : namespace + key;
  5814. var handler = action.handler || action;
  5815. registerAction(store, type, handler, local);
  5816. });
  5817. module.forEachGetter(function (getter, key) {
  5818. var namespacedType = namespace + key;
  5819. registerGetter(store, namespacedType, getter, local);
  5820. });
  5821. module.forEachChild(function (child, key) {
  5822. installModule(store, rootState, path.concat(key), child, hot);
  5823. });
  5824. }
  5825. /**
  5826. * make localized dispatch, commit, getters and state
  5827. * if there is no namespace, just use root ones
  5828. */
  5829. function makeLocalContext (store, namespace, path) {
  5830. var noNamespace = namespace === '';
  5831. var local = {
  5832. dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {
  5833. var args = unifyObjectStyle(_type, _payload, _options);
  5834. var payload = args.payload;
  5835. var options = args.options;
  5836. var type = args.type;
  5837. if (!options || !options.root) {
  5838. type = namespace + type;
  5839. if (( true) && !store._actions[type]) {
  5840. console.error(("[vuex] unknown local action type: " + (args.type) + ", global type: " + type));
  5841. return
  5842. }
  5843. }
  5844. return store.dispatch(type, payload)
  5845. },
  5846. commit: noNamespace ? store.commit : function (_type, _payload, _options) {
  5847. var args = unifyObjectStyle(_type, _payload, _options);
  5848. var payload = args.payload;
  5849. var options = args.options;
  5850. var type = args.type;
  5851. if (!options || !options.root) {
  5852. type = namespace + type;
  5853. if (( true) && !store._mutations[type]) {
  5854. console.error(("[vuex] unknown local mutation type: " + (args.type) + ", global type: " + type));
  5855. return
  5856. }
  5857. }
  5858. store.commit(type, payload, options);
  5859. }
  5860. };
  5861. // getters and state object must be gotten lazily
  5862. // because they will be changed by vm update
  5863. Object.defineProperties(local, {
  5864. getters: {
  5865. get: noNamespace
  5866. ? function () { return store.getters; }
  5867. : function () { return makeLocalGetters(store, namespace); }
  5868. },
  5869. state: {
  5870. get: function () { return getNestedState(store.state, path); }
  5871. }
  5872. });
  5873. return local
  5874. }
  5875. function makeLocalGetters (store, namespace) {
  5876. if (!store._makeLocalGettersCache[namespace]) {
  5877. var gettersProxy = {};
  5878. var splitPos = namespace.length;
  5879. Object.keys(store.getters).forEach(function (type) {
  5880. // skip if the target getter is not match this namespace
  5881. if (type.slice(0, splitPos) !== namespace) { return }
  5882. // extract local getter type
  5883. var localType = type.slice(splitPos);
  5884. // Add a port to the getters proxy.
  5885. // Define as getter property because
  5886. // we do not want to evaluate the getters in this time.
  5887. Object.defineProperty(gettersProxy, localType, {
  5888. get: function () { return store.getters[type]; },
  5889. enumerable: true
  5890. });
  5891. });
  5892. store._makeLocalGettersCache[namespace] = gettersProxy;
  5893. }
  5894. return store._makeLocalGettersCache[namespace]
  5895. }
  5896. function registerMutation (store, type, handler, local) {
  5897. var entry = store._mutations[type] || (store._mutations[type] = []);
  5898. entry.push(function wrappedMutationHandler (payload) {
  5899. handler.call(store, local.state, payload);
  5900. });
  5901. }
  5902. function registerAction (store, type, handler, local) {
  5903. var entry = store._actions[type] || (store._actions[type] = []);
  5904. entry.push(function wrappedActionHandler (payload) {
  5905. var res = handler.call(store, {
  5906. dispatch: local.dispatch,
  5907. commit: local.commit,
  5908. getters: local.getters,
  5909. state: local.state,
  5910. rootGetters: store.getters,
  5911. rootState: store.state
  5912. }, payload);
  5913. if (!isPromise(res)) {
  5914. res = Promise.resolve(res);
  5915. }
  5916. if (store._devtoolHook) {
  5917. return res.catch(function (err) {
  5918. store._devtoolHook.emit('vuex:error', err);
  5919. throw err
  5920. })
  5921. } else {
  5922. return res
  5923. }
  5924. });
  5925. }
  5926. function registerGetter (store, type, rawGetter, local) {
  5927. if (store._wrappedGetters[type]) {
  5928. if ((true)) {
  5929. console.error(("[vuex] duplicate getter key: " + type));
  5930. }
  5931. return
  5932. }
  5933. store._wrappedGetters[type] = function wrappedGetter (store) {
  5934. return rawGetter(
  5935. local.state, // local state
  5936. local.getters, // local getters
  5937. store.state, // root state
  5938. store.getters // root getters
  5939. )
  5940. };
  5941. }
  5942. function enableStrictMode (store) {
  5943. store._vm.$watch(function () { return this._data.$$state }, function () {
  5944. if ((true)) {
  5945. assert(store._committing, "do not mutate vuex store state outside mutation handlers.");
  5946. }
  5947. }, { deep: true, sync: true });
  5948. }
  5949. function getNestedState (state, path) {
  5950. return path.reduce(function (state, key) { return state[key]; }, state)
  5951. }
  5952. function unifyObjectStyle (type, payload, options) {
  5953. if (isObject(type) && type.type) {
  5954. options = payload;
  5955. payload = type;
  5956. type = type.type;
  5957. }
  5958. if ((true)) {
  5959. assert(typeof type === 'string', ("expects string as the type, but found " + (typeof type) + "."));
  5960. }
  5961. return { type: type, payload: payload, options: options }
  5962. }
  5963. function install (_Vue) {
  5964. if (Vue && _Vue === Vue) {
  5965. if ((true)) {
  5966. console.error(
  5967. '[vuex] already installed. Vue.use(Vuex) should be called only once.'
  5968. );
  5969. }
  5970. return
  5971. }
  5972. Vue = _Vue;
  5973. applyMixin(Vue);
  5974. }
  5975. /**
  5976. * Reduce the code which written in Vue.js for getting the state.
  5977. * @param {String} [namespace] - Module's namespace
  5978. * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.
  5979. * @param {Object}
  5980. */
  5981. var mapState = normalizeNamespace(function (namespace, states) {
  5982. var res = {};
  5983. if (( true) && !isValidMap(states)) {
  5984. console.error('[vuex] mapState: mapper parameter must be either an Array or an Object');
  5985. }
  5986. normalizeMap(states).forEach(function (ref) {
  5987. var key = ref.key;
  5988. var val = ref.val;
  5989. res[key] = function mappedState () {
  5990. var state = this.$store.state;
  5991. var getters = this.$store.getters;
  5992. if (namespace) {
  5993. var module = getModuleByNamespace(this.$store, 'mapState', namespace);
  5994. if (!module) {
  5995. return
  5996. }
  5997. state = module.context.state;
  5998. getters = module.context.getters;
  5999. }
  6000. return typeof val === 'function'
  6001. ? val.call(this, state, getters)
  6002. : state[val]
  6003. };
  6004. // mark vuex getter for devtools
  6005. res[key].vuex = true;
  6006. });
  6007. return res
  6008. });
  6009. /**
  6010. * Reduce the code which written in Vue.js for committing the mutation
  6011. * @param {String} [namespace] - Module's namespace
  6012. * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept another params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.
  6013. * @return {Object}
  6014. */
  6015. var mapMutations = normalizeNamespace(function (namespace, mutations) {
  6016. var res = {};
  6017. if (( true) && !isValidMap(mutations)) {
  6018. console.error('[vuex] mapMutations: mapper parameter must be either an Array or an Object');
  6019. }
  6020. normalizeMap(mutations).forEach(function (ref) {
  6021. var key = ref.key;
  6022. var val = ref.val;
  6023. res[key] = function mappedMutation () {
  6024. var args = [], len = arguments.length;
  6025. while ( len-- ) args[ len ] = arguments[ len ];
  6026. // Get the commit method from store
  6027. var commit = this.$store.commit;
  6028. if (namespace) {
  6029. var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);
  6030. if (!module) {
  6031. return
  6032. }
  6033. commit = module.context.commit;
  6034. }
  6035. return typeof val === 'function'
  6036. ? val.apply(this, [commit].concat(args))
  6037. : commit.apply(this.$store, [val].concat(args))
  6038. };
  6039. });
  6040. return res
  6041. });
  6042. /**
  6043. * Reduce the code which written in Vue.js for getting the getters
  6044. * @param {String} [namespace] - Module's namespace
  6045. * @param {Object|Array} getters
  6046. * @return {Object}
  6047. */
  6048. var mapGetters = normalizeNamespace(function (namespace, getters) {
  6049. var res = {};
  6050. if (( true) && !isValidMap(getters)) {
  6051. console.error('[vuex] mapGetters: mapper parameter must be either an Array or an Object');
  6052. }
  6053. normalizeMap(getters).forEach(function (ref) {
  6054. var key = ref.key;
  6055. var val = ref.val;
  6056. // The namespace has been mutated by normalizeNamespace
  6057. val = namespace + val;
  6058. res[key] = function mappedGetter () {
  6059. if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {
  6060. return
  6061. }
  6062. if (( true) && !(val in this.$store.getters)) {
  6063. console.error(("[vuex] unknown getter: " + val));
  6064. return
  6065. }
  6066. return this.$store.getters[val]
  6067. };
  6068. // mark vuex getter for devtools
  6069. res[key].vuex = true;
  6070. });
  6071. return res
  6072. });
  6073. /**
  6074. * Reduce the code which written in Vue.js for dispatch the action
  6075. * @param {String} [namespace] - Module's namespace
  6076. * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.
  6077. * @return {Object}
  6078. */
  6079. var mapActions = normalizeNamespace(function (namespace, actions) {
  6080. var res = {};
  6081. if (( true) && !isValidMap(actions)) {
  6082. console.error('[vuex] mapActions: mapper parameter must be either an Array or an Object');
  6083. }
  6084. normalizeMap(actions).forEach(function (ref) {
  6085. var key = ref.key;
  6086. var val = ref.val;
  6087. res[key] = function mappedAction () {
  6088. var args = [], len = arguments.length;
  6089. while ( len-- ) args[ len ] = arguments[ len ];
  6090. // get dispatch function from store
  6091. var dispatch = this.$store.dispatch;
  6092. if (namespace) {
  6093. var module = getModuleByNamespace(this.$store, 'mapActions', namespace);
  6094. if (!module) {
  6095. return
  6096. }
  6097. dispatch = module.context.dispatch;
  6098. }
  6099. return typeof val === 'function'
  6100. ? val.apply(this, [dispatch].concat(args))
  6101. : dispatch.apply(this.$store, [val].concat(args))
  6102. };
  6103. });
  6104. return res
  6105. });
  6106. /**
  6107. * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object
  6108. * @param {String} namespace
  6109. * @return {Object}
  6110. */
  6111. var createNamespacedHelpers = function (namespace) { return ({
  6112. mapState: mapState.bind(null, namespace),
  6113. mapGetters: mapGetters.bind(null, namespace),
  6114. mapMutations: mapMutations.bind(null, namespace),
  6115. mapActions: mapActions.bind(null, namespace)
  6116. }); };
  6117. /**
  6118. * Normalize the map
  6119. * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]
  6120. * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]
  6121. * @param {Array|Object} map
  6122. * @return {Object}
  6123. */
  6124. function normalizeMap (map) {
  6125. if (!isValidMap(map)) {
  6126. return []
  6127. }
  6128. return Array.isArray(map)
  6129. ? map.map(function (key) { return ({ key: key, val: key }); })
  6130. : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })
  6131. }
  6132. /**
  6133. * Validate whether given map is valid or not
  6134. * @param {*} map
  6135. * @return {Boolean}
  6136. */
  6137. function isValidMap (map) {
  6138. return Array.isArray(map) || isObject(map)
  6139. }
  6140. /**
  6141. * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.
  6142. * @param {Function} fn
  6143. * @return {Function}
  6144. */
  6145. function normalizeNamespace (fn) {
  6146. return function (namespace, map) {
  6147. if (typeof namespace !== 'string') {
  6148. map = namespace;
  6149. namespace = '';
  6150. } else if (namespace.charAt(namespace.length - 1) !== '/') {
  6151. namespace += '/';
  6152. }
  6153. return fn(namespace, map)
  6154. }
  6155. }
  6156. /**
  6157. * Search a special module from store by namespace. if module not exist, print error message.
  6158. * @param {Object} store
  6159. * @param {String} helper
  6160. * @param {String} namespace
  6161. * @return {Object}
  6162. */
  6163. function getModuleByNamespace (store, helper, namespace) {
  6164. var module = store._modulesNamespaceMap[namespace];
  6165. if (( true) && !module) {
  6166. console.error(("[vuex] module namespace not found in " + helper + "(): " + namespace));
  6167. }
  6168. return module
  6169. }
  6170. // Credits: borrowed code from fcomb/redux-logger
  6171. function createLogger (ref) {
  6172. if ( ref === void 0 ) ref = {};
  6173. var collapsed = ref.collapsed; if ( collapsed === void 0 ) collapsed = true;
  6174. var filter = ref.filter; if ( filter === void 0 ) filter = function (mutation, stateBefore, stateAfter) { return true; };
  6175. var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; };
  6176. var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; };
  6177. var actionFilter = ref.actionFilter; if ( actionFilter === void 0 ) actionFilter = function (action, state) { return true; };
  6178. var actionTransformer = ref.actionTransformer; if ( actionTransformer === void 0 ) actionTransformer = function (act) { return act; };
  6179. var logMutations = ref.logMutations; if ( logMutations === void 0 ) logMutations = true;
  6180. var logActions = ref.logActions; if ( logActions === void 0 ) logActions = true;
  6181. var logger = ref.logger; if ( logger === void 0 ) logger = console;
  6182. return function (store) {
  6183. var prevState = deepCopy(store.state);
  6184. if (typeof logger === 'undefined') {
  6185. return
  6186. }
  6187. if (logMutations) {
  6188. store.subscribe(function (mutation, state) {
  6189. var nextState = deepCopy(state);
  6190. if (filter(mutation, prevState, nextState)) {
  6191. var formattedTime = getFormattedTime();
  6192. var formattedMutation = mutationTransformer(mutation);
  6193. var message = "mutation " + (mutation.type) + formattedTime;
  6194. startMessage(logger, message, collapsed);
  6195. logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));
  6196. logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);
  6197. logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));
  6198. endMessage(logger);
  6199. }
  6200. prevState = nextState;
  6201. });
  6202. }
  6203. if (logActions) {
  6204. store.subscribeAction(function (action, state) {
  6205. if (actionFilter(action, state)) {
  6206. var formattedTime = getFormattedTime();
  6207. var formattedAction = actionTransformer(action);
  6208. var message = "action " + (action.type) + formattedTime;
  6209. startMessage(logger, message, collapsed);
  6210. logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction);
  6211. endMessage(logger);
  6212. }
  6213. });
  6214. }
  6215. }
  6216. }
  6217. function startMessage (logger, message, collapsed) {
  6218. var startMessage = collapsed
  6219. ? logger.groupCollapsed
  6220. : logger.group;
  6221. // render
  6222. try {
  6223. startMessage.call(logger, message);
  6224. } catch (e) {
  6225. logger.log(message);
  6226. }
  6227. }
  6228. function endMessage (logger) {
  6229. try {
  6230. logger.groupEnd();
  6231. } catch (e) {
  6232. logger.log('—— log end ——');
  6233. }
  6234. }
  6235. function getFormattedTime () {
  6236. var time = new Date();
  6237. return (" @ " + (pad(time.getHours(), 2)) + ":" + (pad(time.getMinutes(), 2)) + ":" + (pad(time.getSeconds(), 2)) + "." + (pad(time.getMilliseconds(), 3)))
  6238. }
  6239. function repeat (str, times) {
  6240. return (new Array(times + 1)).join(str)
  6241. }
  6242. function pad (num, maxLength) {
  6243. return repeat('0', maxLength - num.toString().length) + num
  6244. }
  6245. var index_cjs = {
  6246. Store: Store,
  6247. install: install,
  6248. version: '3.6.2',
  6249. mapState: mapState,
  6250. mapMutations: mapMutations,
  6251. mapGetters: mapGetters,
  6252. mapActions: mapActions,
  6253. createNamespacedHelpers: createNamespacedHelpers,
  6254. createLogger: createLogger
  6255. };
  6256. module.exports = index_cjs;
  6257. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../webpack/buildin/global.js */ 2)))
  6258. /***/ }),
  6259. /***/ 140:
  6260. /*!**************************************************************************************!*\
  6261. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/popup.js ***!
  6262. \**************************************************************************************/
  6263. /*! no static exports found */
  6264. /***/ (function(module, exports, __webpack_require__) {
  6265. "use strict";
  6266. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  6267. * @Author : LQ
  6268. * @Description :
  6269. * @version : 1.0
  6270. * @Date : 2021-08-20 16:44:21
  6271. * @LastAuthor : LQ
  6272. * @lastTime : 2021-08-20 17:06:33
  6273. * @FilePath : /u-view2.0/uview-ui/libs/config/props/popup.js
  6274. */var _default =
  6275. {
  6276. // popup组件
  6277. popup: {
  6278. show: false,
  6279. overlay: true,
  6280. mode: 'bottom',
  6281. duration: 300,
  6282. closeable: false,
  6283. overlayStyle: function overlayStyle() {},
  6284. closeOnClickOverlay: true,
  6285. zIndex: 10075,
  6286. safeAreaInsetBottom: true,
  6287. safeAreaInsetTop: false,
  6288. closeIconPos: 'top-right',
  6289. round: 0,
  6290. zoom: true,
  6291. bgColor: '',
  6292. overlayOpacity: 0.5 } };exports.default = _default;
  6293. /***/ }),
  6294. /***/ 141:
  6295. /*!**************************************************************************************!*\
  6296. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/radio.js ***!
  6297. \**************************************************************************************/
  6298. /*! no static exports found */
  6299. /***/ (function(module, exports, __webpack_require__) {
  6300. "use strict";
  6301. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  6302. * @Author : LQ
  6303. * @Description :
  6304. * @version : 1.0
  6305. * @Date : 2021-08-20 16:44:21
  6306. * @LastAuthor : LQ
  6307. * @lastTime : 2021-08-20 17:02:34
  6308. * @FilePath : /u-view2.0/uview-ui/libs/config/props/radio.js
  6309. */var _default =
  6310. {
  6311. // radio组件
  6312. radio: {
  6313. name: '',
  6314. shape: '',
  6315. disabled: '',
  6316. labelDisabled: '',
  6317. activeColor: '',
  6318. inactiveColor: '',
  6319. iconSize: '',
  6320. labelSize: '',
  6321. label: '',
  6322. labelColor: '',
  6323. size: '',
  6324. iconColor: '',
  6325. placement: '' } };exports.default = _default;
  6326. /***/ }),
  6327. /***/ 142:
  6328. /*!*******************************************************************************************!*\
  6329. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/radioGroup.js ***!
  6330. \*******************************************************************************************/
  6331. /*! no static exports found */
  6332. /***/ (function(module, exports, __webpack_require__) {
  6333. "use strict";
  6334. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  6335. * @Author : LQ
  6336. * @Description :
  6337. * @version : 1.0
  6338. * @Date : 2021-08-20 16:44:21
  6339. * @LastAuthor : LQ
  6340. * @lastTime : 2021-08-20 17:03:12
  6341. * @FilePath : /u-view2.0/uview-ui/libs/config/props/radioGroup.js
  6342. */var _default =
  6343. {
  6344. // radio-group组件
  6345. radioGroup: {
  6346. value: '',
  6347. disabled: false,
  6348. shape: 'circle',
  6349. activeColor: '#2979ff',
  6350. inactiveColor: '#c8c9cc',
  6351. name: '',
  6352. size: 18,
  6353. placement: 'row',
  6354. label: '',
  6355. labelColor: '#303133',
  6356. labelSize: 14,
  6357. labelDisabled: false,
  6358. iconColor: '#ffffff',
  6359. iconSize: 12,
  6360. borderBottom: false,
  6361. iconPlacement: 'left' } };exports.default = _default;
  6362. /***/ }),
  6363. /***/ 143:
  6364. /*!*************************************************************************************!*\
  6365. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/rate.js ***!
  6366. \*************************************************************************************/
  6367. /*! no static exports found */
  6368. /***/ (function(module, exports, __webpack_require__) {
  6369. "use strict";
  6370. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  6371. * @Author : LQ
  6372. * @Description :
  6373. * @version : 1.0
  6374. * @Date : 2021-08-20 16:44:21
  6375. * @LastAuthor : LQ
  6376. * @lastTime : 2021-08-20 17:05:09
  6377. * @FilePath : /u-view2.0/uview-ui/libs/config/props/rate.js
  6378. */var _default =
  6379. {
  6380. // rate组件
  6381. rate: {
  6382. value: 1,
  6383. count: 5,
  6384. disabled: false,
  6385. size: 18,
  6386. inactiveColor: '#b2b2b2',
  6387. activeColor: '#FA3534',
  6388. gutter: 4,
  6389. minCount: 1,
  6390. allowHalf: false,
  6391. activeIcon: 'star-fill',
  6392. inactiveIcon: 'star',
  6393. touchable: true } };exports.default = _default;
  6394. /***/ }),
  6395. /***/ 144:
  6396. /*!*****************************************************************************************!*\
  6397. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/readMore.js ***!
  6398. \*****************************************************************************************/
  6399. /*! no static exports found */
  6400. /***/ (function(module, exports, __webpack_require__) {
  6401. "use strict";
  6402. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  6403. * @Author : LQ
  6404. * @Description :
  6405. * @version : 1.0
  6406. * @Date : 2021-08-20 16:44:21
  6407. * @LastAuthor : LQ
  6408. * @lastTime : 2021-08-20 17:18:41
  6409. * @FilePath : /u-view2.0/uview-ui/libs/config/props/readMore.js
  6410. */var _default =
  6411. {
  6412. // readMore
  6413. readMore: {
  6414. showHeight: 400,
  6415. toggle: false,
  6416. closeText: '展开阅读全文',
  6417. openText: '收起',
  6418. color: '#2979ff',
  6419. fontSize: 14,
  6420. textIndent: '2em',
  6421. name: '' } };exports.default = _default;
  6422. /***/ }),
  6423. /***/ 145:
  6424. /*!************************************************************************************!*\
  6425. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/row.js ***!
  6426. \************************************************************************************/
  6427. /*! no static exports found */
  6428. /***/ (function(module, exports, __webpack_require__) {
  6429. "use strict";
  6430. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  6431. * @Author : LQ
  6432. * @Description :
  6433. * @version : 1.0
  6434. * @Date : 2021-08-20 16:44:21
  6435. * @LastAuthor : LQ
  6436. * @lastTime : 2021-08-20 17:18:58
  6437. * @FilePath : /u-view2.0/uview-ui/libs/config/props/row.js
  6438. */var _default =
  6439. {
  6440. // row
  6441. row: {
  6442. gutter: 0,
  6443. justify: 'start',
  6444. align: 'center' } };exports.default = _default;
  6445. /***/ }),
  6446. /***/ 146:
  6447. /*!******************************************************************************************!*\
  6448. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/rowNotice.js ***!
  6449. \******************************************************************************************/
  6450. /*! no static exports found */
  6451. /***/ (function(module, exports, __webpack_require__) {
  6452. "use strict";
  6453. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  6454. * @Author : LQ
  6455. * @Description :
  6456. * @version : 1.0
  6457. * @Date : 2021-08-20 16:44:21
  6458. * @LastAuthor : LQ
  6459. * @lastTime : 2021-08-20 17:19:13
  6460. * @FilePath : /u-view2.0/uview-ui/libs/config/props/rowNotice.js
  6461. */var _default =
  6462. {
  6463. // rowNotice
  6464. rowNotice: {
  6465. text: '',
  6466. icon: 'volume',
  6467. mode: '',
  6468. color: '#f9ae3d',
  6469. bgColor: '#fdf6ec',
  6470. fontSize: 14,
  6471. speed: 80 } };exports.default = _default;
  6472. /***/ }),
  6473. /***/ 147:
  6474. /*!*******************************************************************************************!*\
  6475. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/scrollList.js ***!
  6476. \*******************************************************************************************/
  6477. /*! no static exports found */
  6478. /***/ (function(module, exports, __webpack_require__) {
  6479. "use strict";
  6480. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  6481. * @Author : LQ
  6482. * @Description :
  6483. * @version : 1.0
  6484. * @Date : 2021-08-20 16:44:21
  6485. * @LastAuthor : LQ
  6486. * @lastTime : 2021-08-20 17:19:28
  6487. * @FilePath : /u-view2.0/uview-ui/libs/config/props/scrollList.js
  6488. */var _default =
  6489. {
  6490. // scrollList
  6491. scrollList: {
  6492. indicatorWidth: 50,
  6493. indicatorBarWidth: 20,
  6494. indicator: true,
  6495. indicatorColor: '#f2f2f2',
  6496. indicatorActiveColor: '#3c9cff',
  6497. indicatorStyle: '' } };exports.default = _default;
  6498. /***/ }),
  6499. /***/ 148:
  6500. /*!***************************************************************************************!*\
  6501. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/search.js ***!
  6502. \***************************************************************************************/
  6503. /*! no static exports found */
  6504. /***/ (function(module, exports, __webpack_require__) {
  6505. "use strict";
  6506. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  6507. * @Author : LQ
  6508. * @Description :
  6509. * @version : 1.0
  6510. * @Date : 2021-08-20 16:44:21
  6511. * @LastAuthor : LQ
  6512. * @lastTime : 2021-08-20 17:19:45
  6513. * @FilePath : /u-view2.0/uview-ui/libs/config/props/search.js
  6514. */var _default =
  6515. {
  6516. // search
  6517. search: {
  6518. shape: 'round',
  6519. bgColor: '#f2f2f2',
  6520. placeholder: '请输入关键字',
  6521. clearabled: true,
  6522. focus: false,
  6523. showAction: true,
  6524. actionStyle: function actionStyle() {return {};},
  6525. actionText: '搜索',
  6526. inputAlign: 'left',
  6527. inputStyle: function inputStyle() {return {};},
  6528. disabled: false,
  6529. borderColor: 'transparent',
  6530. searchIconColor: '#909399',
  6531. searchIconSize: 22,
  6532. color: '#606266',
  6533. placeholderColor: '#909399',
  6534. searchIcon: 'search',
  6535. margin: '0',
  6536. animation: false,
  6537. value: '',
  6538. maxlength: '-1',
  6539. height: 32,
  6540. label: null } };exports.default = _default;
  6541. /***/ }),
  6542. /***/ 149:
  6543. /*!****************************************************************************************!*\
  6544. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/section.js ***!
  6545. \****************************************************************************************/
  6546. /*! no static exports found */
  6547. /***/ (function(module, exports, __webpack_require__) {
  6548. "use strict";
  6549. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  6550. * @Author : LQ
  6551. * @Description :
  6552. * @version : 1.0
  6553. * @Date : 2021-08-20 16:44:21
  6554. * @LastAuthor : LQ
  6555. * @lastTime : 2021-08-20 17:07:33
  6556. * @FilePath : /u-view2.0/uview-ui/libs/config/props/section.js
  6557. */var _default =
  6558. {
  6559. // u-section组件
  6560. section: {
  6561. title: '',
  6562. subTitle: '更多',
  6563. right: true,
  6564. fontSize: 15,
  6565. bold: true,
  6566. color: '#303133',
  6567. subColor: '#909399',
  6568. showLine: true,
  6569. lineColor: '',
  6570. arrow: true } };exports.default = _default;
  6571. /***/ }),
  6572. /***/ 15:
  6573. /*!*************************************************************!*\
  6574. !*** D:/data/zhonghong/saber-weixin/store/modules/index.js ***!
  6575. \*************************************************************/
  6576. /*! no static exports found */
  6577. /***/ (function(module, exports, __webpack_require__) {
  6578. "use strict";
  6579. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;
  6580. var _app = _interopRequireDefault(__webpack_require__(/*! ./app */ 16));
  6581. var _hotWords = _interopRequireDefault(__webpack_require__(/*! ./hotWords */ 34));
  6582. var _indexData = _interopRequireDefault(__webpack_require__(/*! ./indexData.js */ 35));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} // +----------------------------------------------------------------------
  6583. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  6584. // +----------------------------------------------------------------------
  6585. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  6586. // +----------------------------------------------------------------------
  6587. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  6588. // +----------------------------------------------------------------------
  6589. // | Author: CRMEB Team <admin@crmeb.com>
  6590. // +----------------------------------------------------------------------
  6591. var _default = { app: _app.default, hotWords: _hotWords.default, indexData: _indexData.default };exports.default = _default;
  6592. /***/ }),
  6593. /***/ 150:
  6594. /*!*****************************************************************************************!*\
  6595. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/skeleton.js ***!
  6596. \*****************************************************************************************/
  6597. /*! no static exports found */
  6598. /***/ (function(module, exports, __webpack_require__) {
  6599. "use strict";
  6600. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  6601. * @Author : LQ
  6602. * @Description :
  6603. * @version : 1.0
  6604. * @Date : 2021-08-20 16:44:21
  6605. * @LastAuthor : LQ
  6606. * @lastTime : 2021-08-20 17:20:14
  6607. * @FilePath : /u-view2.0/uview-ui/libs/config/props/skeleton.js
  6608. */var _default =
  6609. {
  6610. // skeleton
  6611. skeleton: {
  6612. loading: true,
  6613. animate: true,
  6614. rows: 0,
  6615. rowsWidth: '100%',
  6616. rowsHeight: 18,
  6617. title: true,
  6618. titleWidth: '50%',
  6619. titleHeight: 18,
  6620. avatar: false,
  6621. avatarSize: 32,
  6622. avatarShape: 'circle' } };exports.default = _default;
  6623. /***/ }),
  6624. /***/ 151:
  6625. /*!***************************************************************************************!*\
  6626. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/slider.js ***!
  6627. \***************************************************************************************/
  6628. /*! no static exports found */
  6629. /***/ (function(module, exports, __webpack_require__) {
  6630. "use strict";
  6631. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  6632. * @Author : LQ
  6633. * @Description :
  6634. * @version : 1.0
  6635. * @Date : 2021-08-20 16:44:21
  6636. * @LastAuthor : LQ
  6637. * @lastTime : 2021-08-20 17:08:25
  6638. * @FilePath : /u-view2.0/uview-ui/libs/config/props/slider.js
  6639. */var _default =
  6640. {
  6641. // slider组件
  6642. slider: {
  6643. value: 0,
  6644. blockSize: 18,
  6645. min: 0,
  6646. max: 100,
  6647. step: 1,
  6648. activeColor: '#2979ff',
  6649. inactiveColor: '#c0c4cc',
  6650. blockColor: '#ffffff',
  6651. showValue: false,
  6652. disabled: false,
  6653. blockStyle: function blockStyle() {} } };exports.default = _default;
  6654. /***/ }),
  6655. /***/ 152:
  6656. /*!******************************************************************************************!*\
  6657. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/statusBar.js ***!
  6658. \******************************************************************************************/
  6659. /*! no static exports found */
  6660. /***/ (function(module, exports, __webpack_require__) {
  6661. "use strict";
  6662. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  6663. * @Author : LQ
  6664. * @Description :
  6665. * @version : 1.0
  6666. * @Date : 2021-08-20 16:44:21
  6667. * @LastAuthor : LQ
  6668. * @lastTime : 2021-08-20 17:20:39
  6669. * @FilePath : /u-view2.0/uview-ui/libs/config/props/statusBar.js
  6670. */var _default =
  6671. {
  6672. // statusBar
  6673. statusBar: {
  6674. bgColor: 'transparent' } };exports.default = _default;
  6675. /***/ }),
  6676. /***/ 153:
  6677. /*!**************************************************************************************!*\
  6678. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/steps.js ***!
  6679. \**************************************************************************************/
  6680. /*! no static exports found */
  6681. /***/ (function(module, exports, __webpack_require__) {
  6682. "use strict";
  6683. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  6684. * @Author : LQ
  6685. * @Description :
  6686. * @version : 1.0
  6687. * @Date : 2021-08-20 16:44:21
  6688. * @LastAuthor : LQ
  6689. * @lastTime : 2021-08-20 17:12:37
  6690. * @FilePath : /u-view2.0/uview-ui/libs/config/props/steps.js
  6691. */var _default =
  6692. {
  6693. // steps组件
  6694. steps: {
  6695. direction: 'row',
  6696. current: 0,
  6697. activeColor: '#3c9cff',
  6698. inactiveColor: '#969799',
  6699. activeIcon: '',
  6700. inactiveIcon: '',
  6701. dot: false } };exports.default = _default;
  6702. /***/ }),
  6703. /***/ 154:
  6704. /*!******************************************************************************************!*\
  6705. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/stepsItem.js ***!
  6706. \******************************************************************************************/
  6707. /*! no static exports found */
  6708. /***/ (function(module, exports, __webpack_require__) {
  6709. "use strict";
  6710. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  6711. * @Author : LQ
  6712. * @Description :
  6713. * @version : 1.0
  6714. * @Date : 2021-08-20 16:44:21
  6715. * @LastAuthor : LQ
  6716. * @lastTime : 2021-08-20 17:12:55
  6717. * @FilePath : /u-view2.0/uview-ui/libs/config/props/stepsItem.js
  6718. */var _default =
  6719. {
  6720. // steps-item组件
  6721. stepsItem: {
  6722. title: '',
  6723. desc: '',
  6724. iconSize: 17,
  6725. error: false } };exports.default = _default;
  6726. /***/ }),
  6727. /***/ 155:
  6728. /*!***************************************************************************************!*\
  6729. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/sticky.js ***!
  6730. \***************************************************************************************/
  6731. /*! no static exports found */
  6732. /***/ (function(module, exports, __webpack_require__) {
  6733. "use strict";
  6734. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  6735. * @Author : LQ
  6736. * @Description :
  6737. * @version : 1.0
  6738. * @Date : 2021-08-20 16:44:21
  6739. * @LastAuthor : LQ
  6740. * @lastTime : 2021-08-20 17:01:30
  6741. * @FilePath : /u-view2.0/uview-ui/libs/config/props/sticky.js
  6742. */var _default =
  6743. {
  6744. // sticky组件
  6745. sticky: {
  6746. offsetTop: 0,
  6747. customNavHeight: 0,
  6748. disabled: false,
  6749. bgColor: 'transparent',
  6750. zIndex: '',
  6751. index: '' } };exports.default = _default;
  6752. /***/ }),
  6753. /***/ 156:
  6754. /*!*******************************************************************************************!*\
  6755. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/subsection.js ***!
  6756. \*******************************************************************************************/
  6757. /*! no static exports found */
  6758. /***/ (function(module, exports, __webpack_require__) {
  6759. "use strict";
  6760. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  6761. * @Author : LQ
  6762. * @Description :
  6763. * @version : 1.0
  6764. * @Date : 2021-08-20 16:44:21
  6765. * @LastAuthor : LQ
  6766. * @lastTime : 2021-08-20 17:12:20
  6767. * @FilePath : /u-view2.0/uview-ui/libs/config/props/subsection.js
  6768. */var _default =
  6769. {
  6770. // subsection组件
  6771. subsection: {
  6772. list: [],
  6773. current: 0,
  6774. activeColor: '#3c9cff',
  6775. inactiveColor: '#303133',
  6776. mode: 'button',
  6777. fontSize: 12,
  6778. bold: true,
  6779. bgColor: '#eeeeef',
  6780. keyName: 'name' } };exports.default = _default;
  6781. /***/ }),
  6782. /***/ 157:
  6783. /*!********************************************************************************************!*\
  6784. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/swipeAction.js ***!
  6785. \********************************************************************************************/
  6786. /*! no static exports found */
  6787. /***/ (function(module, exports, __webpack_require__) {
  6788. "use strict";
  6789. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  6790. * @Author : LQ
  6791. * @Description :
  6792. * @version : 1.0
  6793. * @Date : 2021-08-20 16:44:21
  6794. * @LastAuthor : LQ
  6795. * @lastTime : 2021-08-20 17:00:42
  6796. * @FilePath : /u-view2.0/uview-ui/libs/config/props/swipeAction.js
  6797. */var _default =
  6798. {
  6799. // swipe-action组件
  6800. swipeAction: {
  6801. autoClose: true } };exports.default = _default;
  6802. /***/ }),
  6803. /***/ 158:
  6804. /*!************************************************************************************************!*\
  6805. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/swipeActionItem.js ***!
  6806. \************************************************************************************************/
  6807. /*! no static exports found */
  6808. /***/ (function(module, exports, __webpack_require__) {
  6809. "use strict";
  6810. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  6811. * @Author : LQ
  6812. * @Description :
  6813. * @version : 1.0
  6814. * @Date : 2021-08-20 16:44:21
  6815. * @LastAuthor : LQ
  6816. * @lastTime : 2021-08-20 17:01:13
  6817. * @FilePath : /u-view2.0/uview-ui/libs/config/props/swipeActionItem.js
  6818. */var _default =
  6819. {
  6820. // swipeActionItem 组件
  6821. swipeActionItem: {
  6822. show: false,
  6823. name: '',
  6824. disabled: false,
  6825. threshold: 20,
  6826. autoClose: true,
  6827. options: [],
  6828. duration: 300 } };exports.default = _default;
  6829. /***/ }),
  6830. /***/ 159:
  6831. /*!***************************************************************************************!*\
  6832. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/swiper.js ***!
  6833. \***************************************************************************************/
  6834. /*! no static exports found */
  6835. /***/ (function(module, exports, __webpack_require__) {
  6836. "use strict";
  6837. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  6838. * @Author : LQ
  6839. * @Description :
  6840. * @version : 1.0
  6841. * @Date : 2021-08-20 16:44:21
  6842. * @LastAuthor : LQ
  6843. * @lastTime : 2021-08-20 17:21:38
  6844. * @FilePath : /u-view2.0/uview-ui/libs/config/props/swiper.js
  6845. */var _default =
  6846. {
  6847. // swiper 组件
  6848. swiper: {
  6849. list: function list() {return [];},
  6850. indicator: false,
  6851. indicatorActiveColor: '#FFFFFF',
  6852. indicatorInactiveColor: 'rgba(255, 255, 255, 0.35)',
  6853. indicatorStyle: '',
  6854. indicatorMode: 'line',
  6855. autoplay: true,
  6856. current: 0,
  6857. currentItemId: '',
  6858. interval: 3000,
  6859. duration: 300,
  6860. circular: false,
  6861. previousMargin: 0,
  6862. nextMargin: 0,
  6863. acceleration: false,
  6864. displayMultipleItems: 1,
  6865. easingFunction: 'default',
  6866. keyName: 'url',
  6867. imgMode: 'aspectFill',
  6868. height: 130,
  6869. bgColor: '#f3f4f6',
  6870. radius: 4,
  6871. loading: false,
  6872. showTitle: false } };exports.default = _default;
  6873. /***/ }),
  6874. /***/ 16:
  6875. /*!***********************************************************!*\
  6876. !*** D:/data/zhonghong/saber-weixin/store/modules/app.js ***!
  6877. \***********************************************************/
  6878. /*! no static exports found */
  6879. /***/ (function(module, exports, __webpack_require__) {
  6880. "use strict";
  6881. /* WEBPACK VAR INJECTION */(function(uni) {Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;
  6882. var _user = __webpack_require__(/*! ../../api/user.js */ 17);
  6883. var _cache = __webpack_require__(/*! ../../config/cache */ 32);
  6884. var _cache2 = _interopRequireDefault(__webpack_require__(/*! ../../utils/cache */ 33));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} // +----------------------------------------------------------------------
  6885. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  6886. // +----------------------------------------------------------------------
  6887. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  6888. // +----------------------------------------------------------------------
  6889. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  6890. // +----------------------------------------------------------------------
  6891. // | Author: CRMEB Team <admin@crmeb.com>
  6892. // +----------------------------------------------------------------------
  6893. var state = { token: _cache2.default.get(_cache.LOGIN_STATUS) || false, backgroundColor: "#fff", userInfo: {}, uid: _cache2.default.get(_cache.UID) || 0,
  6894. homeActive: false,
  6895. phoneStatus: true,
  6896. pageFooter: uni.getStorageSync('pageFoot') || {} };
  6897. var mutations = {
  6898. SETPHONESTATUS: function SETPHONESTATUS(state, val) {
  6899. state.phoneStatus = val;
  6900. },
  6901. LOGIN: function LOGIN(state, opt) {
  6902. state.token = opt.token;
  6903. _cache2.default.set(_cache.LOGIN_STATUS, opt.token, opt.time);
  6904. },
  6905. SETUID: function SETUID(state, val) {
  6906. state.uid = val;
  6907. _cache2.default.set(_cache.UID, val);
  6908. },
  6909. UPDATE_LOGIN: function UPDATE_LOGIN(state, token) {
  6910. state.token = token;
  6911. },
  6912. LOGOUT: function LOGOUT(state) {
  6913. state.token = false;
  6914. state.uid = 0;
  6915. _cache2.default.clear(_cache.LOGIN_STATUS);
  6916. _cache2.default.clear(_cache.UID);
  6917. },
  6918. BACKGROUND_COLOR: function BACKGROUND_COLOR(state, color) {
  6919. state.color = color;
  6920. document.body.style.backgroundColor = color;
  6921. },
  6922. UPDATE_USERINFO: function UPDATE_USERINFO(state, userInfo) {
  6923. state.userInfo = userInfo;
  6924. _cache2.default.set(_cache.USER_INFO, userInfo);
  6925. },
  6926. OPEN_HOME: function OPEN_HOME(state) {
  6927. state.homeActive = true;
  6928. },
  6929. CLOSE_HOME: function CLOSE_HOME(state) {
  6930. state.homeActive = false;
  6931. },
  6932. FOOT_UPLOAD: function FOOT_UPLOAD(state, data) {
  6933. state.pageFooter = data;
  6934. } };
  6935. var actions = {
  6936. USERINFO: function USERINFO(_ref,
  6937. force) {var state = _ref.state,commit = _ref.commit;
  6938. if (state.userInfo !== null && !force)
  6939. return Promise.resolve(state.userInfo);else
  6940. return new Promise(function (reslove) {
  6941. (0, _user.getUserInfo)().then(function (res) {
  6942. commit("UPDATE_USERINFO", res.data);
  6943. _cache2.default.set(_cache.USER_INFO, res.data);
  6944. reslove(res.data);
  6945. });
  6946. }).catch(function () {
  6947. });
  6948. } };var _default =
  6949. {
  6950. state: state,
  6951. mutations: mutations,
  6952. actions: actions };exports.default = _default;
  6953. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["default"]))
  6954. /***/ }),
  6955. /***/ 160:
  6956. /*!*************************************************************************************************!*\
  6957. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/swipterIndicator.js ***!
  6958. \*************************************************************************************************/
  6959. /*! no static exports found */
  6960. /***/ (function(module, exports, __webpack_require__) {
  6961. "use strict";
  6962. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  6963. * @Author : LQ
  6964. * @Description :
  6965. * @version : 1.0
  6966. * @Date : 2021-08-20 16:44:21
  6967. * @LastAuthor : LQ
  6968. * @lastTime : 2021-08-20 17:22:07
  6969. * @FilePath : /u-view2.0/uview-ui/libs/config/props/swiperIndicator.js
  6970. */var _default =
  6971. {
  6972. // swiperIndicator 组件
  6973. swiperIndicator: {
  6974. length: 0,
  6975. current: 0,
  6976. indicatorActiveColor: '',
  6977. indicatorInactiveColor: '',
  6978. indicatorMode: 'line' } };exports.default = _default;
  6979. /***/ }),
  6980. /***/ 161:
  6981. /*!***************************************************************************************!*\
  6982. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/switch.js ***!
  6983. \***************************************************************************************/
  6984. /*! no static exports found */
  6985. /***/ (function(module, exports, __webpack_require__) {
  6986. "use strict";
  6987. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  6988. * @Author : LQ
  6989. * @Description :
  6990. * @version : 1.0
  6991. * @Date : 2021-08-20 16:44:21
  6992. * @LastAuthor : LQ
  6993. * @lastTime : 2021-08-20 17:22:24
  6994. * @FilePath : /u-view2.0/uview-ui/libs/config/props/switch.js
  6995. */var _default =
  6996. {
  6997. // switch
  6998. switch: {
  6999. loading: false,
  7000. disabled: false,
  7001. size: 25,
  7002. activeColor: '#2979ff',
  7003. inactiveColor: '#ffffff',
  7004. value: false,
  7005. activeValue: true,
  7006. inactiveValue: false,
  7007. asyncChange: false,
  7008. space: 0 } };exports.default = _default;
  7009. /***/ }),
  7010. /***/ 162:
  7011. /*!***************************************************************************************!*\
  7012. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/tabbar.js ***!
  7013. \***************************************************************************************/
  7014. /*! no static exports found */
  7015. /***/ (function(module, exports, __webpack_require__) {
  7016. "use strict";
  7017. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  7018. * @Author : LQ
  7019. * @Description :
  7020. * @version : 1.0
  7021. * @Date : 2021-08-20 16:44:21
  7022. * @LastAuthor : LQ
  7023. * @lastTime : 2021-08-20 17:22:40
  7024. * @FilePath : /u-view2.0/uview-ui/libs/config/props/tabbar.js
  7025. */var _default =
  7026. {
  7027. // tabbar
  7028. tabbar: {
  7029. value: null,
  7030. safeAreaInsetBottom: true,
  7031. border: true,
  7032. zIndex: 1,
  7033. activeColor: '#1989fa',
  7034. inactiveColor: '#7d7e80',
  7035. fixed: true,
  7036. placeholder: true } };exports.default = _default;
  7037. /***/ }),
  7038. /***/ 163:
  7039. /*!*******************************************************************************************!*\
  7040. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/tabbarItem.js ***!
  7041. \*******************************************************************************************/
  7042. /*! no static exports found */
  7043. /***/ (function(module, exports, __webpack_require__) {
  7044. "use strict";
  7045. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  7046. * @Author : LQ
  7047. * @Description :
  7048. * @version : 1.0
  7049. * @Date : 2021-08-20 16:44:21
  7050. * @LastAuthor : LQ
  7051. * @lastTime : 2021-08-20 17:22:55
  7052. * @FilePath : /u-view2.0/uview-ui/libs/config/props/tabbarItem.js
  7053. */var _default =
  7054. {
  7055. //
  7056. tabbarItem: {
  7057. name: null,
  7058. icon: '',
  7059. badge: null,
  7060. dot: false,
  7061. text: '',
  7062. badgeStyle: 'top: 6px;right:2px;' } };exports.default = _default;
  7063. /***/ }),
  7064. /***/ 164:
  7065. /*!*************************************************************************************!*\
  7066. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/tabs.js ***!
  7067. \*************************************************************************************/
  7068. /*! no static exports found */
  7069. /***/ (function(module, exports, __webpack_require__) {
  7070. "use strict";
  7071. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  7072. * @Author : LQ
  7073. * @Description :
  7074. * @version : 1.0
  7075. * @Date : 2021-08-20 16:44:21
  7076. * @LastAuthor : LQ
  7077. * @lastTime : 2021-08-20 17:23:14
  7078. * @FilePath : /u-view2.0/uview-ui/libs/config/props/tabs.js
  7079. */var _default =
  7080. {
  7081. //
  7082. tabs: {
  7083. duration: 300,
  7084. list: function list() {return [];},
  7085. lineColor: '#3c9cff',
  7086. activeStyle: function activeStyle() {return {
  7087. color: '#303133' };},
  7088. inactiveStyle: function inactiveStyle() {return {
  7089. color: '#606266' };},
  7090. lineWidth: 20,
  7091. lineHeight: 3,
  7092. lineBgSize: 'cover',
  7093. itemStyle: function itemStyle() {return {
  7094. height: '44px' };},
  7095. scrollable: true,
  7096. current: 0,
  7097. keyName: 'name' } };exports.default = _default;
  7098. /***/ }),
  7099. /***/ 165:
  7100. /*!************************************************************************************!*\
  7101. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/tag.js ***!
  7102. \************************************************************************************/
  7103. /*! no static exports found */
  7104. /***/ (function(module, exports, __webpack_require__) {
  7105. "use strict";
  7106. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  7107. * @Author : LQ
  7108. * @Description :
  7109. * @version : 1.0
  7110. * @Date : 2021-08-20 16:44:21
  7111. * @LastAuthor : LQ
  7112. * @lastTime : 2021-08-20 17:23:37
  7113. * @FilePath : /u-view2.0/uview-ui/libs/config/props/tag.js
  7114. */var _default =
  7115. {
  7116. // tag 组件
  7117. tag: {
  7118. type: 'primary',
  7119. disabled: false,
  7120. size: 'medium',
  7121. shape: 'square',
  7122. text: '',
  7123. bgColor: '',
  7124. color: '',
  7125. borderColor: '',
  7126. closeColor: '#C6C7CB',
  7127. name: '',
  7128. plainFill: false,
  7129. plain: false,
  7130. closable: false,
  7131. show: true,
  7132. icon: '' } };exports.default = _default;
  7133. /***/ }),
  7134. /***/ 166:
  7135. /*!*************************************************************************************!*\
  7136. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/text.js ***!
  7137. \*************************************************************************************/
  7138. /*! no static exports found */
  7139. /***/ (function(module, exports, __webpack_require__) {
  7140. "use strict";
  7141. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  7142. * @Author : LQ
  7143. * @Description :
  7144. * @version : 1.0
  7145. * @Date : 2021-08-20 16:44:21
  7146. * @LastAuthor : LQ
  7147. * @lastTime : 2021-08-20 17:23:58
  7148. * @FilePath : /u-view2.0/uview-ui/libs/config/props/text.js
  7149. */var _default =
  7150. {
  7151. // text 组件
  7152. text: {
  7153. type: '',
  7154. show: true,
  7155. text: '',
  7156. prefixIcon: '',
  7157. suffixIcon: '',
  7158. mode: '',
  7159. href: '',
  7160. format: '',
  7161. call: false,
  7162. openType: '',
  7163. bold: false,
  7164. block: false,
  7165. lines: '',
  7166. color: '#303133',
  7167. size: 15,
  7168. iconStyle: function iconStyle() {return {
  7169. fontSize: '15px' };},
  7170. decoration: 'none',
  7171. margin: 0,
  7172. lineHeight: '',
  7173. align: 'left',
  7174. wordWrap: 'normal' } };exports.default = _default;
  7175. /***/ }),
  7176. /***/ 167:
  7177. /*!*****************************************************************************************!*\
  7178. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/textarea.js ***!
  7179. \*****************************************************************************************/
  7180. /*! no static exports found */
  7181. /***/ (function(module, exports, __webpack_require__) {
  7182. "use strict";
  7183. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  7184. * @Author : LQ
  7185. * @Description :
  7186. * @version : 1.0
  7187. * @Date : 2021-08-20 16:44:21
  7188. * @LastAuthor : LQ
  7189. * @lastTime : 2021-08-20 17:24:32
  7190. * @FilePath : /u-view2.0/uview-ui/libs/config/props/textarea.js
  7191. */var _default =
  7192. {
  7193. // textarea 组件
  7194. textarea: {
  7195. value: '',
  7196. placeholder: '',
  7197. placeholderClass: 'textarea-placeholder',
  7198. placeholderStyle: 'color: #c0c4cc',
  7199. height: 70,
  7200. confirmType: 'done',
  7201. disabled: false,
  7202. count: false,
  7203. focus: false,
  7204. autoHeight: false,
  7205. fixed: false,
  7206. cursorSpacing: 0,
  7207. cursor: '',
  7208. showConfirmBar: true,
  7209. selectionStart: -1,
  7210. selectionEnd: -1,
  7211. adjustPosition: true,
  7212. disableDefaultPadding: false,
  7213. holdKeyboard: false,
  7214. maxlength: 140,
  7215. border: 'surround',
  7216. formatter: null } };exports.default = _default;
  7217. /***/ }),
  7218. /***/ 168:
  7219. /*!**************************************************************************************!*\
  7220. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/toast.js ***!
  7221. \**************************************************************************************/
  7222. /*! no static exports found */
  7223. /***/ (function(module, exports, __webpack_require__) {
  7224. "use strict";
  7225. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  7226. * @Author : LQ
  7227. * @Description :
  7228. * @version : 1.0
  7229. * @Date : 2021-08-20 16:44:21
  7230. * @LastAuthor : LQ
  7231. * @lastTime : 2021-08-20 17:07:07
  7232. * @FilePath : /u-view2.0/uview-ui/libs/config/props/toast.js
  7233. */var _default =
  7234. {
  7235. // toast组件
  7236. toast: {
  7237. zIndex: 10090,
  7238. loading: false,
  7239. text: '',
  7240. icon: '',
  7241. type: '',
  7242. loadingMode: '',
  7243. show: '',
  7244. overlay: false,
  7245. position: 'center',
  7246. params: function params() {},
  7247. duration: 2000,
  7248. isTab: false,
  7249. url: '',
  7250. callback: null,
  7251. back: false } };exports.default = _default;
  7252. /***/ }),
  7253. /***/ 169:
  7254. /*!****************************************************************************************!*\
  7255. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/toolbar.js ***!
  7256. \****************************************************************************************/
  7257. /*! no static exports found */
  7258. /***/ (function(module, exports, __webpack_require__) {
  7259. "use strict";
  7260. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  7261. * @Author : LQ
  7262. * @Description :
  7263. * @version : 1.0
  7264. * @Date : 2021-08-20 16:44:21
  7265. * @LastAuthor : LQ
  7266. * @lastTime : 2021-08-20 17:24:55
  7267. * @FilePath : /u-view2.0/uview-ui/libs/config/props/toolbar.js
  7268. */var _default =
  7269. {
  7270. // toolbar 组件
  7271. toolbar: {
  7272. show: true,
  7273. cancelText: '取消',
  7274. confirmText: '确认',
  7275. cancelColor: '#909193',
  7276. confirmColor: '#3c9cff',
  7277. title: '' } };exports.default = _default;
  7278. /***/ }),
  7279. /***/ 17:
  7280. /*!**************************************************!*\
  7281. !*** D:/data/zhonghong/saber-weixin/api/user.js ***!
  7282. \**************************************************/
  7283. /*! no static exports found */
  7284. /***/ (function(module, exports, __webpack_require__) {
  7285. "use strict";
  7286. Object.defineProperty(exports, "__esModule", { value: true });exports.getUserInfo = getUserInfo;exports.userShare = userShare;exports.loginH5 = loginH5;exports.loginMobile = loginMobile;exports.getCodeApi = getCodeApi;exports.registerVerify = registerVerify;exports.register = register;exports.registerReset = registerReset;exports.getMenuList = getMenuList;exports.postSignUser = postSignUser;exports.getSignConfig = getSignConfig;exports.getSignList = getSignList;exports.setSignIntegral = setSignIntegral;exports.getSignMonthList = getSignMonthList;exports.userActivity = userActivity;exports.getCommissionInfo = getCommissionInfo;exports.getIntegralList = getIntegralList;exports.spreadBanner = spreadBanner;exports.spreadPeople = spreadPeople;exports.spreadCount = spreadCount;exports.getSpreadInfo = getSpreadInfo;exports.spreadOrder = spreadOrder;exports.divisionOrder = divisionOrder;exports.getRankList = getRankList;exports.getBrokerageRank = getBrokerageRank;exports.extractCash = extractCash;exports.extractBank = extractBank;exports.userLevelGrade = userLevelGrade;exports.userLevelTask = userLevelTask;exports.userLevelDetection = userLevelDetection;exports.getAddressList = getAddressList;exports.setAddressDefault = setAddressDefault;exports.editAddress = editAddress;exports.delAddress = delAddress;exports.getAddressDetail = getAddressDetail;exports.userEdit = userEdit;exports.getLogout = getLogout;exports.rechargeRoutine = rechargeRoutine;exports.rechargeWechat = rechargeWechat;exports.getAddressDefault = getAddressDefault;exports.getRechargeApi = getRechargeApi;exports.setVisit = setVisit;exports.serviceList = serviceList;exports.getChatRecord = getChatRecord;exports.spread = spread;exports.getlevelInfo = getlevelInfo;exports.getlevelExpList = getlevelExpList;exports.updateUserInfo = updateUserInfo;exports.phoneWxSilenceAuth = phoneWxSilenceAuth;exports.phoneSilenceAuth = phoneSilenceAuth;exports.invoiceList = invoiceList;exports.invoiceSave = invoiceSave;exports.invoiceDelete = invoiceDelete;exports.invoiceDefault = invoiceDefault;exports.invoiceDetail = invoiceDetail;exports.invoiceOrder = invoiceOrder;exports.makeUpinvoice = makeUpinvoice;exports.memberCard = memberCard;exports.memberCardDraw = memberCardDraw;exports.memberCardCreate = memberCardCreate;exports.memberCouponsList = memberCouponsList;exports.groomList = groomList;exports.memberOverdueTime = memberOverdueTime;exports.spreadMsg = spreadMsg;exports.imgToBase = imgToBase;exports.routineCode = routineCode;exports.serviceRecord = serviceRecord;exports.messageSystem = messageSystem;exports.getMsgDetails = getMsgDetails;exports.msgLookDel = msgLookDel;exports.appleLogin = appleLogin;exports.getUserAgreement = getUserAgreement;exports.agentLevelList = agentLevelList;exports.agentLevelTaskList = agentLevelTaskList;exports.friendDetail = friendDetail;exports.clerkPeople = clerkPeople;exports.setClerkPercent = setClerkPercent;exports.delClerkPercent = delClerkPercent;exports.cancelUser = cancelUser;
  7287. var _request = _interopRequireDefault(__webpack_require__(/*! @/utils/request.js */ 18));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function ownKeys(object, enumerableOnly) {var keys = Object.keys(object);if (Object.getOwnPropertySymbols) {var symbols = Object.getOwnPropertySymbols(object);if (enumerableOnly) symbols = symbols.filter(function (sym) {return Object.getOwnPropertyDescriptor(object, sym).enumerable;});keys.push.apply(keys, symbols);}return keys;}function _objectSpread(target) {for (var i = 1; i < arguments.length; i++) {var source = arguments[i] != null ? arguments[i] : {};if (i % 2) {ownKeys(Object(source), true).forEach(function (key) {_defineProperty(target, key, source[key]);});} else if (Object.getOwnPropertyDescriptors) {Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));} else {ownKeys(Object(source)).forEach(function (key) {Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));});}}return target;}function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;}
  7288. /**
  7289. * 获取用户信息
  7290. *
  7291. */
  7292. function getUserInfo() {
  7293. return _request.default.get('user');
  7294. }
  7295. /**
  7296. * 设置用户分享
  7297. *
  7298. */
  7299. function userShare() {
  7300. return _request.default.post('user/share');
  7301. }
  7302. /**
  7303. * h5用户登录
  7304. * @param data object 用户账号密码
  7305. */
  7306. function loginH5(data) {
  7307. return _request.default.post("login", data, {
  7308. noAuth: true });
  7309. }
  7310. /**
  7311. * h5用户手机号登录
  7312. * @param data object 用户手机号 也只能
  7313. */
  7314. function loginMobile(data) {
  7315. return _request.default.post("login/mobile", data, {
  7316. noAuth: true });
  7317. }
  7318. /**
  7319. * 验证码key
  7320. */
  7321. function getCodeApi() {
  7322. return _request.default.get("verify_code", {}, {
  7323. noAuth: true });
  7324. }
  7325. /**
  7326. * h5用户发送验证码
  7327. * @param data object 用户手机号
  7328. */
  7329. function registerVerify(data) {
  7330. return _request.default.post("register/verify", data, {
  7331. noAuth: true });
  7332. }
  7333. /**
  7334. * h5用户手机号注册
  7335. * @param data object 用户手机号 验证码 密码
  7336. */
  7337. function register(data) {
  7338. return _request.default.post("register", data, {
  7339. noAuth: true });
  7340. }
  7341. /**
  7342. * 用户手机号修改密码
  7343. * @param data object 用户手机号 验证码 密码
  7344. */
  7345. function registerReset(data) {
  7346. return _request.default.post("register/reset", data, {
  7347. noAuth: true });
  7348. }
  7349. /**
  7350. * 获取用户中心菜单
  7351. *
  7352. */
  7353. function getMenuList() {
  7354. return _request.default.get("menu/user", {}, {
  7355. noAuth: true });
  7356. }
  7357. /*
  7358. * 签到用户信息
  7359. * */
  7360. function postSignUser(sign) {
  7361. return _request.default.post("sign/user", sign);
  7362. }
  7363. /**
  7364. * 获取签到配置
  7365. *
  7366. */
  7367. function getSignConfig() {
  7368. return _request.default.get('sign/config');
  7369. }
  7370. /**
  7371. * 获取签到列表
  7372. * @param object data
  7373. */
  7374. function getSignList(data) {
  7375. return _request.default.get('sign/list', data);
  7376. }
  7377. /**
  7378. * 用户签到
  7379. */
  7380. function setSignIntegral() {
  7381. return _request.default.post('sign/integral');
  7382. }
  7383. /**
  7384. * 签到列表(年月)
  7385. * @param object data
  7386. *
  7387. */
  7388. function getSignMonthList(data) {
  7389. return _request.default.get('sign/month', data);
  7390. }
  7391. /**
  7392. * 活动状态
  7393. *
  7394. */
  7395. function userActivity() {
  7396. return _request.default.get('user/activity');
  7397. }
  7398. /*
  7399. * 资金明细(types|0=全部,1=消费,2=充值,3=返佣,4=提现)
  7400. * */
  7401. function getCommissionInfo(q, types) {
  7402. return _request.default.get("spread/commission/" + types, q);
  7403. }
  7404. /*
  7405. * 积分记录
  7406. * */
  7407. function getIntegralList(q) {
  7408. return _request.default.get("integral/list", q);
  7409. }
  7410. /**
  7411. * 获取分销海报图片
  7412. *
  7413. */
  7414. function spreadBanner() {
  7415. return _request.default.get('spread/banner', {
  7416. type: 1 });
  7417. }
  7418. /**
  7419. *
  7420. * 获取推广用户一级和二级
  7421. * @param object data
  7422. */
  7423. function spreadPeople(data) {
  7424. return _request.default.post('spread/people', data);
  7425. }
  7426. /**
  7427. *
  7428. * 推广佣金/提现总和
  7429. * @param int type
  7430. */
  7431. function spreadCount(type) {
  7432. return _request.default.get('spread/count/' + type);
  7433. }
  7434. /*
  7435. * 推广数据
  7436. * */
  7437. function getSpreadInfo() {
  7438. return _request.default.get("commission");
  7439. }
  7440. /**
  7441. *
  7442. * 推广订单
  7443. * @param object data
  7444. */
  7445. function spreadOrder(data) {
  7446. return _request.default.post('spread/order', data);
  7447. }
  7448. /**
  7449. *
  7450. * 事业部/推广订单
  7451. * @param object data
  7452. */
  7453. function divisionOrder(data) {
  7454. return _request.default.post('division/order', data);
  7455. }
  7456. /*
  7457. * 获取推广人排行
  7458. * */
  7459. function getRankList(q) {
  7460. return _request.default.get("rank", q);
  7461. }
  7462. /*
  7463. * 获取佣金排名
  7464. * */
  7465. function getBrokerageRank(q) {
  7466. return _request.default.get("brokerage_rank", q);
  7467. }
  7468. /**
  7469. * 提现申请
  7470. * @param object data
  7471. */
  7472. function extractCash(data) {
  7473. return _request.default.post('extract/cash', data);
  7474. }
  7475. /**
  7476. * 提现银行/提现最低金额
  7477. *
  7478. */
  7479. function extractBank() {
  7480. return _request.default.get('extract/bank');
  7481. }
  7482. /**
  7483. * 会员等级列表
  7484. *
  7485. */
  7486. function userLevelGrade() {
  7487. return _request.default.get('user/level/grade');
  7488. }
  7489. /**
  7490. * 获取某个等级任务
  7491. * @param int id 任务id
  7492. */
  7493. function userLevelTask(id) {
  7494. return _request.default.get('user/level/task/' + id);
  7495. }
  7496. /**
  7497. * 检查用户是否可以成为会员
  7498. *
  7499. */
  7500. function userLevelDetection() {
  7501. return _request.default.get('user/level/detection');
  7502. }
  7503. /**
  7504. *
  7505. * 地址列表
  7506. * @param object data
  7507. */
  7508. function getAddressList(data) {
  7509. return _request.default.get('address/list', data);
  7510. }
  7511. /**
  7512. * 设置默认地址
  7513. * @param int id
  7514. */
  7515. function setAddressDefault(id) {
  7516. return _request.default.post('address/default/set', {
  7517. id: id });
  7518. }
  7519. /**
  7520. * 修改 添加地址
  7521. * @param object data
  7522. */
  7523. function editAddress(data) {
  7524. return _request.default.post('address/edit', data);
  7525. }
  7526. /**
  7527. * 删除地址
  7528. * @param int id
  7529. *
  7530. */
  7531. function delAddress(id) {
  7532. return _request.default.post('address/del', {
  7533. id: id });
  7534. }
  7535. /**
  7536. * 获取单个地址
  7537. * @param int id
  7538. */
  7539. function getAddressDetail(id) {
  7540. return _request.default.get('address/detail/' + id);
  7541. }
  7542. /**
  7543. * 修改用户信息
  7544. * @param object
  7545. */
  7546. function userEdit(data) {
  7547. return _request.default.post('user/edit', data);
  7548. }
  7549. /*
  7550. * 退出登录
  7551. * */
  7552. function getLogout() {
  7553. return _request.default.get("logout");
  7554. }
  7555. /**
  7556. * 小程序充值
  7557. *
  7558. */
  7559. function rechargeRoutine(data) {
  7560. return _request.default.post('recharge/routine', data);
  7561. }
  7562. /*
  7563. * 公众号充值
  7564. * */
  7565. function rechargeWechat(data) {
  7566. return _request.default.post("recharge/wechat", data);
  7567. }
  7568. /**
  7569. * 获取默认地址
  7570. *
  7571. */
  7572. function getAddressDefault() {
  7573. return _request.default.get('address/default');
  7574. }
  7575. /**
  7576. * 充值金额选择
  7577. */
  7578. function getRechargeApi() {
  7579. return _request.default.get("recharge/index");
  7580. }
  7581. /**
  7582. * 登陆记录
  7583. */
  7584. function setVisit(data) {
  7585. return _request.default.post('user/set_visit', _objectSpread({},
  7586. data),
  7587. {
  7588. noAuth: true });
  7589. }
  7590. /**
  7591. * 客服列表
  7592. */
  7593. function serviceList() {
  7594. return _request.default.get("user/service/list");
  7595. }
  7596. /**
  7597. * 客服详情
  7598. */
  7599. function getChatRecord(data) {
  7600. return _request.default.get("v2/user/service/record", data);
  7601. }
  7602. /**
  7603. * 静默绑定推广人
  7604. * @param {Object} puid
  7605. */
  7606. function spread(puid) {
  7607. return _request.default.post("user/spread", puid);
  7608. }
  7609. /**
  7610. * 会员详情
  7611. */
  7612. function getlevelInfo() {
  7613. return _request.default.get("user/level/info");
  7614. }
  7615. /**
  7616. * 会员经验列表
  7617. */
  7618. function getlevelExpList(data) {
  7619. return _request.default.get("user/level/expList", data);
  7620. }
  7621. /**
  7622. * 修改用户信息
  7623. * @param {Object} data
  7624. */
  7625. function updateUserInfo(data) {
  7626. return _request.default.post('v2/user/user_update', data);
  7627. }
  7628. /**
  7629. * 微信直接手机号登录
  7630. */
  7631. function phoneWxSilenceAuth(data) {
  7632. return _request.default.post('v2/phone_wx_silence_auth', data, {
  7633. noAuth: true });
  7634. }
  7635. /**
  7636. * 小程序直接手机号登录
  7637. */
  7638. function phoneSilenceAuth(data) {
  7639. return _request.default.post('v2/phone_silence_auth', data, {
  7640. noAuth: true });
  7641. }
  7642. /**
  7643. * 用户发票列表
  7644. * @param {Object} data
  7645. */
  7646. function invoiceList(data) {
  7647. return _request.default.get('v2/invoice', data, {
  7648. noAuth: true });
  7649. }
  7650. /**
  7651. * 用户添加|修改发票
  7652. * @param {Object} data
  7653. */
  7654. function invoiceSave(data) {
  7655. return _request.default.post('v2/invoice/save', data, {
  7656. noAuth: true });
  7657. }
  7658. /**
  7659. * 用户删除发票
  7660. * @param {Object} data
  7661. */
  7662. function invoiceDelete(id) {
  7663. return _request.default.get('v2/invoice/del/' + id);
  7664. }
  7665. /**
  7666. * 获取用户默认发票
  7667. * @param {Object} type
  7668. */
  7669. function invoiceDefault(type) {
  7670. return _request.default.get('v2/invoice/get_default/' + type);
  7671. }
  7672. /**
  7673. * 用户单个发票详情
  7674. * @param {Object} id
  7675. */
  7676. function invoiceDetail(id) {
  7677. return _request.default.get('v2/invoice/detail/' + id);
  7678. }
  7679. /**
  7680. * 订单申请开票
  7681. * @param {Object} id
  7682. */
  7683. function invoiceOrder(data) {
  7684. return _request.default.post('v2/order/make_up_invoice', data);
  7685. }
  7686. /**
  7687. * 订单详情中申请开票
  7688. * @param {Object} id
  7689. */
  7690. function makeUpinvoice(data) {
  7691. return _request.default.post('v2/order/make_up_invoice', data);
  7692. }
  7693. /**
  7694. * 会员卡主界面
  7695. */
  7696. function memberCard() {
  7697. return _request.default.get('user/member/card/index');
  7698. }
  7699. /**
  7700. * 卡密领取会员卡
  7701. * @param {Object} data
  7702. */
  7703. function memberCardDraw(data) {
  7704. return _request.default.post('user/member/card/draw', data);
  7705. }
  7706. /**
  7707. * 购买会员卡
  7708. * @param {Object} data
  7709. */
  7710. function memberCardCreate(data) {
  7711. return _request.default.post('user/member/card/create', data);
  7712. }
  7713. /**
  7714. * 会员优惠券
  7715. */
  7716. function memberCouponsList() {
  7717. return _request.default.get('user/member/coupons/list');
  7718. }
  7719. /**
  7720. * svip推荐商品
  7721. * @param {Object} id
  7722. */
  7723. function groomList(id, data) {
  7724. return _request.default.get("groom/list/".concat(id), data);
  7725. }
  7726. /**
  7727. * 付费会员结束
  7728. * @param {Object} data
  7729. */
  7730. function memberOverdueTime(data) {
  7731. return _request.default.get('user/member/overdue/time', data);
  7732. }
  7733. /**
  7734. * 新版分享海报信息获取
  7735. */
  7736. function spreadMsg() {
  7737. return _request.default.get('user/spread_info');
  7738. }
  7739. /**
  7740. * 图片链接转base64
  7741. */
  7742. function imgToBase(data) {
  7743. return _request.default.post('image_base64', data);
  7744. }
  7745. /**
  7746. * 获取小程序二维码
  7747. */
  7748. function routineCode(data) {
  7749. return _request.default.get('user/routine_code', data);
  7750. }
  7751. /**
  7752. * 消息中心
  7753. */
  7754. function serviceRecord(data) {
  7755. return _request.default.get('user/record', data);
  7756. }
  7757. /**
  7758. * 消息中心-站内信列表
  7759. */
  7760. function messageSystem(data) {
  7761. return _request.default.get('user/message_system/list', data);
  7762. }
  7763. /**
  7764. * 消息中心-站内信列表详情
  7765. */
  7766. function getMsgDetails(id) {
  7767. return _request.default.get('user/message_system/detail/' + id);
  7768. }
  7769. /**
  7770. * 消息中心-消息已读/删除
  7771. */
  7772. function msgLookDel(data) {
  7773. return _request.default.get('user/message_system/edit_message', data);
  7774. }
  7775. /**
  7776. * 苹果账号登录
  7777. * @param {Object} data
  7778. */
  7779. function appleLogin(data) {
  7780. return _request.default.post('apple_login', data, {
  7781. noAuth: true });
  7782. }
  7783. /*
  7784. * 获取隐私协议
  7785. * */
  7786. function getUserAgreement(type) {
  7787. return _request.default.get("get_agreement/".concat(type), {}, {
  7788. noAuth: true });
  7789. }
  7790. /**
  7791. * 获取分销等级列表
  7792. * @param int id 任务id
  7793. */
  7794. function agentLevelList() {
  7795. return _request.default.get('v2/agent/level_list');
  7796. }
  7797. /**
  7798. * 获取分销任务列表
  7799. * @param int id 任务id
  7800. */
  7801. function agentLevelTaskList(id) {
  7802. return _request.default.get('v2/agent/level_task_list?id=' + id);
  7803. }
  7804. /**
  7805. * 获取代付详情
  7806. * @param int id 任务id
  7807. */
  7808. function friendDetail(id) {
  7809. return _request.default.get('order/friend_detail?order_id=' + id);
  7810. }
  7811. /**
  7812. * 员工列表
  7813. * @param object data
  7814. *
  7815. */
  7816. function clerkPeople(data) {
  7817. return _request.default.get('agent/get_staff_list', data);
  7818. }
  7819. /**
  7820. *
  7821. * 员工比例
  7822. * @param object data
  7823. */
  7824. function setClerkPercent(data) {
  7825. return _request.default.post('agent/set_staff_percent', data);
  7826. }
  7827. /**
  7828. *
  7829. * 删除员工
  7830. * @param object data
  7831. */
  7832. function delClerkPercent(id) {
  7833. return _request.default.get("agent/del_staff/".concat(id));
  7834. }
  7835. /**
  7836. * 注销用户
  7837. * @param int id
  7838. *
  7839. */
  7840. function cancelUser() {
  7841. return _request.default.get('user_cancel');
  7842. }
  7843. /***/ }),
  7844. /***/ 170:
  7845. /*!****************************************************************************************!*\
  7846. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/tooltip.js ***!
  7847. \****************************************************************************************/
  7848. /*! no static exports found */
  7849. /***/ (function(module, exports, __webpack_require__) {
  7850. "use strict";
  7851. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  7852. * @Author : LQ
  7853. * @Description :
  7854. * @version : 1.0
  7855. * @Date : 2021-08-20 16:44:21
  7856. * @LastAuthor : LQ
  7857. * @lastTime : 2021-08-20 17:25:14
  7858. * @FilePath : /u-view2.0/uview-ui/libs/config/props/tooltip.js
  7859. */var _default =
  7860. {
  7861. // tooltip 组件
  7862. tooltip: {
  7863. text: '',
  7864. copyText: '',
  7865. size: 14,
  7866. color: '#606266',
  7867. bgColor: 'transparent',
  7868. direction: 'top',
  7869. zIndex: 10071,
  7870. showCopy: true,
  7871. buttons: function buttons() {return [];},
  7872. overlay: true,
  7873. showToast: true } };exports.default = _default;
  7874. /***/ }),
  7875. /***/ 171:
  7876. /*!*******************************************************************************************!*\
  7877. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/transition.js ***!
  7878. \*******************************************************************************************/
  7879. /*! no static exports found */
  7880. /***/ (function(module, exports, __webpack_require__) {
  7881. "use strict";
  7882. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  7883. * @Author : LQ
  7884. * @Description :
  7885. * @version : 1.0
  7886. * @Date : 2021-08-20 16:44:21
  7887. * @LastAuthor : LQ
  7888. * @lastTime : 2021-08-20 16:59:00
  7889. * @FilePath : /u-view2.0/uview-ui/libs/config/props/transition.js
  7890. */var _default =
  7891. {
  7892. // transition动画组件的props
  7893. transition: {
  7894. show: false,
  7895. mode: 'fade',
  7896. duration: '300',
  7897. timingFunction: 'ease-out' } };exports.default = _default;
  7898. /***/ }),
  7899. /***/ 172:
  7900. /*!***************************************************************************************!*\
  7901. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/upload.js ***!
  7902. \***************************************************************************************/
  7903. /*! no static exports found */
  7904. /***/ (function(module, exports, __webpack_require__) {
  7905. "use strict";
  7906. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  7907. * @Author : LQ
  7908. * @Description :
  7909. * @version : 1.0
  7910. * @Date : 2021-08-20 16:44:21
  7911. * @LastAuthor : LQ
  7912. * @lastTime : 2021-08-20 17:09:50
  7913. * @FilePath : /u-view2.0/uview-ui/libs/config/props/upload.js
  7914. */var _default =
  7915. {
  7916. // upload组件
  7917. upload: {
  7918. accept: 'image',
  7919. capture: function capture() {return ['album', 'camera'];},
  7920. compressed: true,
  7921. camera: 'back',
  7922. maxDuration: 60,
  7923. uploadIcon: 'camera-fill',
  7924. uploadIconColor: '#D3D4D6',
  7925. useBeforeRead: false,
  7926. previewFullImage: true,
  7927. maxCount: 52,
  7928. disabled: false,
  7929. imageMode: 'aspectFill',
  7930. name: '',
  7931. sizeType: function sizeType() {return ['original', 'compressed'];},
  7932. multiple: false,
  7933. deletable: true,
  7934. maxSize: Number.MAX_VALUE,
  7935. fileList: function fileList() {return [];},
  7936. uploadText: '',
  7937. width: 80,
  7938. height: 80,
  7939. previewImage: true } };exports.default = _default;
  7940. /***/ }),
  7941. /***/ 173:
  7942. /*!*********************************************************************************!*\
  7943. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/zIndex.js ***!
  7944. \*********************************************************************************/
  7945. /*! no static exports found */
  7946. /***/ (function(module, exports, __webpack_require__) {
  7947. "use strict";
  7948. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; // uniapp在H5中各API的z-index值如下:
  7949. /**
  7950. * actionsheet: 999
  7951. * modal: 999
  7952. * navigate: 998
  7953. * tabbar: 998
  7954. * toast: 999
  7955. */var _default =
  7956. {
  7957. toast: 10090,
  7958. noNetwork: 10080,
  7959. // popup包含popup,actionsheet,keyboard,picker的值
  7960. popup: 10075,
  7961. mask: 10070,
  7962. navbar: 980,
  7963. topTips: 975,
  7964. sticky: 970,
  7965. indexListSticky: 965 };exports.default = _default;
  7966. /***/ }),
  7967. /***/ 174:
  7968. /*!*************************************************************************************!*\
  7969. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/function/platform.js ***!
  7970. \*************************************************************************************/
  7971. /*! no static exports found */
  7972. /***/ (function(module, exports, __webpack_require__) {
  7973. "use strict";
  7974. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /**
  7975. * 注意:
  7976. * 此部分内容,在vue-cli模式下,需要在vue.config.js加入如下内容才有效:
  7977. * module.exports = {
  7978. * transpileDependencies: ['uview-v2']
  7979. * }
  7980. */
  7981. var platform = 'none';
  7982. platform = 'vue2';
  7983. platform = 'weixin';
  7984. platform = 'mp';var _default =
  7985. platform;exports.default = _default;
  7986. /***/ }),
  7987. /***/ 18:
  7988. /*!*******************************************************!*\
  7989. !*** D:/data/zhonghong/saber-weixin/utils/request.js ***!
  7990. \*******************************************************/
  7991. /*! no static exports found */
  7992. /***/ (function(module, exports, __webpack_require__) {
  7993. "use strict";
  7994. /* WEBPACK VAR INJECTION */(function(uni) {Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;
  7995. var _app = __webpack_require__(/*! @/config/app */ 19);
  7996. var _login = __webpack_require__(/*! ../libs/login */ 12);
  7997. var _store = _interopRequireDefault(__webpack_require__(/*! ../store */ 13));
  7998. var _lang = _interopRequireDefault(__webpack_require__(/*! ./lang.js */ 20));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} // +----------------------------------------------------------------------
  7999. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  8000. // +----------------------------------------------------------------------
  8001. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  8002. // +----------------------------------------------------------------------
  8003. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8004. // +----------------------------------------------------------------------
  8005. // | Author: CRMEB Team <admin@crmeb.com>
  8006. // +----------------------------------------------------------------------
  8007. /**
  8008. * 发送请求
  8009. */function baseRequest(url, method, data, _ref) {var _ref$noAuth = _ref.noAuth,noAuth = _ref$noAuth === void 0 ? false : _ref$noAuth,_ref$noVerify = _ref.noVerify,noVerify = _ref$noVerify === void 0 ? false : _ref$noVerify;var Url = _app.HTTP_REQUEST_URL,header = _app.HEADER;
  8010. if (!noAuth) {
  8011. //登录过期自动登录
  8012. if (!_store.default.state.app.token && !(0, _login.checkLogin)()) {
  8013. (0, _login.toLogin)();
  8014. return Promise.reject({
  8015. msg: _lang.default.t("\u672A\u767B\u5F55") });
  8016. }
  8017. }
  8018. if (_store.default.state.app.token) header[_app.TOKENNAME] = 'Bearer ' + _store.default.state.app.token;
  8019. return new Promise(function (reslove, reject) {
  8020. header['Cb-lang'] = uni.getStorageSync('locale') ? uni.getStorageSync('locale') : 'zh_cn';
  8021. uni.request({
  8022. url: Url + '/api/' + url,
  8023. method: method || 'GET',
  8024. header: header,
  8025. data: data || {},
  8026. success: function success(res) {
  8027. if (noVerify)
  8028. reslove(res.data, res);else
  8029. if (res.data.status == 200)
  8030. reslove(res.data, res);else
  8031. if ([110002, 110003, 110004].indexOf(res.data.status) !== -1) {
  8032. (0, _login.toLogin)();
  8033. reject(res.data);
  8034. } else if (res.data.status == 100103) {
  8035. uni.showModal({
  8036. title: _lang.default.t("\u63D0\u793A"),
  8037. content: res.data.msg,
  8038. showCancel: false,
  8039. confirmText: _lang.default.t("\u6211\u77E5\u9053\u4E86") });
  8040. } else
  8041. reject(res.data.msg || _lang.default.t("\u7CFB\u7EDF\u9519\u8BEF"));
  8042. },
  8043. fail: function fail(msg) {
  8044. var data = {
  8045. mag: _lang.default.t("\u8BF7\u6C42\u5931\u8D25"),
  8046. status: 1 //1没网
  8047. };
  8048. reject(_lang.default.t("\u8BF7\u6C42\u5931\u8D25"));
  8049. } });
  8050. });
  8051. }
  8052. var request = {};
  8053. ['options', 'get', 'post', 'put', 'head', 'delete', 'trace', 'connect'].forEach(function (method) {
  8054. request[method] = function (api, data, opt) {return baseRequest(api, method, data, opt || {});};
  8055. });var _default =
  8056. request;exports.default = _default;
  8057. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["default"]))
  8058. /***/ }),
  8059. /***/ 19:
  8060. /*!****************************************************!*\
  8061. !*** D:/data/zhonghong/saber-weixin/config/app.js ***!
  8062. \****************************************************/
  8063. /*! no static exports found */
  8064. /***/ (function(module, exports) {
  8065. module.exports = {
  8066. // 小程序配置
  8067. // 请求域名 格式: https://您的域名
  8068. HTTP_REQUEST_URL: "http://v4.crmeb.net",
  8069. // H5配置
  8070. // 以下配置在不做二开的前提下,不需要做任何的修改
  8071. HEADER: {
  8072. 'content-type': 'application/json',
  8073. 'Form-type': 'routine' },
  8074. // 回话密钥名称 请勿修改此配置
  8075. TOKENNAME: 'Authori-zation',
  8076. // 缓存时间 0 永久
  8077. EXPIRE: 0,
  8078. //分页最多显示条数
  8079. LIMIT: 10 };
  8080. /***/ }),
  8081. /***/ 195:
  8082. /*!***************************************************!*\
  8083. !*** D:/data/zhonghong/saber-weixin/api/store.js ***!
  8084. \***************************************************/
  8085. /*! no static exports found */
  8086. /***/ (function(module, exports, __webpack_require__) {
  8087. "use strict";
  8088. Object.defineProperty(exports, "__esModule", { value: true });exports.getProductDetail = getProductDetail;exports.getProductCode = getProductCode;exports.collectAdd = collectAdd;exports.collectDel = collectDel;exports.postCartAdd = postCartAdd;exports.getCategoryList = getCategoryList;exports.getProductslist = getProductslist;exports.getProductHot = getProductHot;exports.collectAll = collectAll;exports.getGroomList = getGroomList;exports.getCollectUserList = getCollectUserList;exports.getReplyList = getReplyList;exports.getReplyConfig = getReplyConfig;exports.getSearchKeyword = getSearchKeyword;exports.storeListApi = storeListApi;exports.storeDiscountsList = storeDiscountsList;exports.postCartNum = postCartNum;exports.create = create;exports.getAgentAgreement = getAgentAgreement;exports.registerVerify = registerVerify;exports.getCodeApi = getCodeApi;exports.getGoodsDetails = getGoodsDetails;exports.getAttr = getAttr;exports.getHomeProducts = getHomeProducts;exports.getPresellProductDetail = getPresellProductDetail;exports.getVisitList = getVisitList;exports.deleteVisitList = deleteVisitList;
  8089. var _request = _interopRequireDefault(__webpack_require__(/*! @/utils/request.js */ 18));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} // +----------------------------------------------------------------------
  8090. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  8091. // +----------------------------------------------------------------------
  8092. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  8093. // +----------------------------------------------------------------------
  8094. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8095. // +----------------------------------------------------------------------
  8096. // | Author: CRMEB Team <admin@crmeb.com>
  8097. // +----------------------------------------------------------------------
  8098. /**
  8099. * 获取产品详情
  8100. * @param int id
  8101. *
  8102. */function getProductDetail(id) {return _request.default.get('product/detail/' + id, {}, { noAuth: true });} /**
  8103. * 产品分享二维码 推广员
  8104. * @param int id
  8105. */
  8106. function getProductCode(id) {
  8107. return _request.default.get('product/code/' + id, {
  8108. user_type: 'routine' });
  8109. }
  8110. /**
  8111. * 添加收藏
  8112. * @param int id
  8113. * @param string category product=普通产品,product_seckill=秒杀产品
  8114. */
  8115. function collectAdd(id, category) {
  8116. return _request.default.post('collect/add', {
  8117. id: id,
  8118. 'product': category === undefined ? 'product' : category });
  8119. }
  8120. /**
  8121. * 删除收藏产品
  8122. * @param int id
  8123. * @param string category product=普通产品,product_seckill=秒杀产品
  8124. */
  8125. function collectDel(id, category) {
  8126. return _request.default.post('collect/del', {
  8127. id: id,
  8128. category: category === undefined ? 'product' : category });
  8129. }
  8130. /**
  8131. * 购车添加
  8132. *
  8133. */
  8134. function postCartAdd(data) {
  8135. return _request.default.post('cart/add', data);
  8136. }
  8137. /**
  8138. * 获取分类列表
  8139. *
  8140. */
  8141. function getCategoryList() {
  8142. return _request.default.get('category', {}, {
  8143. noAuth: true });
  8144. }
  8145. /**
  8146. * 获取产品列表
  8147. * @param object data
  8148. */
  8149. function getProductslist(data) {
  8150. return _request.default.get('products', data, {
  8151. noAuth: true });
  8152. }
  8153. /**
  8154. * 获取推荐产品
  8155. *
  8156. */
  8157. function getProductHot(page, limit) {
  8158. return _request.default.get("product/hot", {
  8159. page: page === undefined ? 1 : page,
  8160. limit: limit === undefined ? 4 : limit },
  8161. {
  8162. noAuth: true });
  8163. }
  8164. /**
  8165. * 批量收藏
  8166. *
  8167. * @param object id 产品编号 join(',') 切割成字符串
  8168. * @param string category
  8169. */
  8170. function collectAll(id, category) {
  8171. return _request.default.post('collect/all', {
  8172. id: id,
  8173. category: category === undefined ? 'product' : category });
  8174. }
  8175. /**
  8176. * 首页产品的轮播图和产品信息
  8177. * @param int type
  8178. *
  8179. */
  8180. function getGroomList(type, data) {
  8181. return _request.default.get('groom/list/' + type, data, {
  8182. noAuth: true });
  8183. }
  8184. /**
  8185. * 获取收藏列表
  8186. * @param object data
  8187. */
  8188. function getCollectUserList(data) {
  8189. return _request.default.get('collect/user', data);
  8190. }
  8191. /**
  8192. * 获取产品评论
  8193. * @param int id
  8194. * @param object data
  8195. *
  8196. */
  8197. function getReplyList(id, data) {
  8198. return _request.default.get('reply/list/' + id, data);
  8199. }
  8200. /**
  8201. * 产品评价数量和好评度
  8202. * @param int id
  8203. */
  8204. function getReplyConfig(id) {
  8205. return _request.default.get('reply/config/' + id);
  8206. }
  8207. /**
  8208. * 获取搜索关键字获取
  8209. *
  8210. */
  8211. function getSearchKeyword() {
  8212. return _request.default.get('search/keyword', {}, {
  8213. noAuth: true });
  8214. }
  8215. /**
  8216. * 门店列表
  8217. * @returns {*}
  8218. */
  8219. function storeListApi(data) {
  8220. return _request.default.get("store_list", data);
  8221. }
  8222. /**
  8223. * 套餐列表
  8224. * @param int id
  8225. *
  8226. */
  8227. function storeDiscountsList(id) {
  8228. return _request.default.get('store_discounts/list/' + id, {}, {
  8229. noAuth: true });
  8230. }
  8231. /**
  8232. * 购车添加、减少、修改
  8233. *
  8234. */
  8235. function postCartNum(data) {
  8236. return _request.default.post('v2/set_cart_num', data);
  8237. }
  8238. /**
  8239. * 代理商申请
  8240. *
  8241. */
  8242. function create(data) {
  8243. return _request.default.post("agent/apply/".concat(data.id), data);
  8244. }
  8245. /**
  8246. * 代理商规则
  8247. * @param object data
  8248. */
  8249. function getAgentAgreement(data) {
  8250. return _request.default.get('agent/get_agent_agreement', {}, {
  8251. noAuth: true });
  8252. }
  8253. /**
  8254. * h5用户发送验证码
  8255. * @param data object 用户手机号
  8256. */
  8257. function registerVerify(data) {
  8258. return _request.default.post("register/verify", data, {
  8259. noAuth: true });
  8260. }
  8261. /**
  8262. * 验证码key
  8263. */
  8264. function getCodeApi() {
  8265. return _request.default.get("verify_code", {}, {
  8266. noAuth: true });
  8267. }
  8268. /**
  8269. * 获取代理商表单信息
  8270. */
  8271. function getGoodsDetails() {
  8272. return _request.default.get("agent/apply/info", {}, {
  8273. noAuth: true });
  8274. }
  8275. /**
  8276. * 获取首页的属性
  8277. * @returns {*}
  8278. */
  8279. function getAttr(id, type) {
  8280. return _request.default.get("v2/get_attr/" + id + "/" + type);
  8281. }
  8282. /**
  8283. * 获取首页商品列表(所有活动的)
  8284. * @param object data
  8285. */
  8286. function getHomeProducts(data) {
  8287. return _request.default.get('home/products', data, {
  8288. noAuth: true });
  8289. }
  8290. /**
  8291. * 预售详情
  8292. * @returns {*}
  8293. */
  8294. function getPresellProductDetail(id) {
  8295. return _request.default.get("advance/detail/" + id);
  8296. }
  8297. /**
  8298. * 获取浏览记录列表
  8299. * @param object data
  8300. */
  8301. function getVisitList(data) {
  8302. return _request.default.get('user/visit_list', data);
  8303. }
  8304. /**
  8305. * 获取浏览记录列表-删除
  8306. * @param object data
  8307. */
  8308. function deleteVisitList(data) {
  8309. return _request.default.delete('user/visit', data);
  8310. }
  8311. /***/ }),
  8312. /***/ 2:
  8313. /*!***********************************!*\
  8314. !*** (webpack)/buildin/global.js ***!
  8315. \***********************************/
  8316. /*! no static exports found */
  8317. /***/ (function(module, exports) {
  8318. var g;
  8319. // This works in non-strict mode
  8320. g = (function() {
  8321. return this;
  8322. })();
  8323. try {
  8324. // This works if eval is allowed (see CSP)
  8325. g = g || new Function("return this")();
  8326. } catch (e) {
  8327. // This works if the window reference is available
  8328. if (typeof window === "object") g = window;
  8329. }
  8330. // g can still be undefined, but nothing to do about it...
  8331. // We return undefined, instead of nothing here, so it's
  8332. // easier to handle this case. if(!global) { ...}
  8333. module.exports = g;
  8334. /***/ }),
  8335. /***/ 20:
  8336. /*!****************************************************!*\
  8337. !*** D:/data/zhonghong/saber-weixin/utils/lang.js ***!
  8338. \****************************************************/
  8339. /*! no static exports found */
  8340. /***/ (function(module, exports, __webpack_require__) {
  8341. "use strict";
  8342. /* WEBPACK VAR INJECTION */(function(uni) {Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _en_us = _interopRequireDefault(__webpack_require__(/*! ../lang/en_us.json */ 21));
  8343. var _zh_cn = _interopRequireDefault(__webpack_require__(/*! ../lang/zh_cn.json */ 22));
  8344. var _fr_fr = _interopRequireDefault(__webpack_require__(/*! ../lang/fr_fr.json */ 23));
  8345. var _th_th = _interopRequireDefault(__webpack_require__(/*! ../lang/th_th.json */ 24));
  8346. var _ja_jp = _interopRequireDefault(__webpack_require__(/*! ../lang/ja_jp.json */ 25));
  8347. var _it_it = _interopRequireDefault(__webpack_require__(/*! ../lang/it_it.json */ 26));
  8348. var _ko_kr = _interopRequireDefault(__webpack_require__(/*! ../lang/ko_kr.json */ 27));
  8349. var _mn_mn = _interopRequireDefault(__webpack_require__(/*! ../lang/mn_mn.json */ 28));
  8350. var _vi_vn = _interopRequireDefault(__webpack_require__(/*! ../lang/vi_vn.json */ 29));
  8351. var _zh_ft = _interopRequireDefault(__webpack_require__(/*! ../lang/zh_ft.json */ 30));
  8352. var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 4));
  8353. var _vueI18n = _interopRequireDefault(__webpack_require__(/*! vue-i18n */ 31));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}
  8354. _vue.default.use(_vueI18n.default);
  8355. var langJson = {
  8356. 'en_us': _en_us.default,
  8357. 'zh_cn': _zh_cn.default,
  8358. 'fr_fr': _fr_fr.default,
  8359. 'th_th': _th_th.default,
  8360. 'ja_jp': _ja_jp.default,
  8361. 'it_it': _it_it.default,
  8362. 'ko_kr': _ko_kr.default,
  8363. 'mn_mn': _mn_mn.default,
  8364. 'vi_vn': _vi_vn.default,
  8365. 'zh_ft': _zh_ft.default };
  8366. var lang = '';
  8367. lang = uni.getStorageSync('locale') != '' ? uni.getStorageSync('locale') : 'zh_cn';
  8368. var i18n = new _vueI18n.default({
  8369. locale: lang in langJson ? lang : 'en_us',
  8370. messages: langJson });var _default =
  8371. i18n;exports.default = _default;
  8372. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["default"]))
  8373. /***/ }),
  8374. /***/ 204:
  8375. /*!****************************************************************!*\
  8376. !*** D:/data/zhonghong/saber-weixin/plugin/dayjs/dayjs.min.js ***!
  8377. \****************************************************************/
  8378. /*! no static exports found */
  8379. /***/ (function(module, exports, __webpack_require__) {
  8380. !function (t, e) { true ? module.exports = e() : undefined;}(this, function () {"use strict";var t = "millisecond",e = "second",n = "minute",r = "hour",i = "day",s = "week",u = "month",o = "quarter",a = "year",h = /^(\d{4})-?(\d{1,2})-?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d{1,3})?$/,f = /\[([^\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,c = function c(t, e, n) {var r = String(t);return !r || r.length >= e ? t : "" + Array(e + 1 - r.length).join(n) + t;},d = { s: c, z: function z(t) {var e = -t.utcOffset(),n = Math.abs(e),r = Math.floor(n / 60),i = n % 60;return (e <= 0 ? "+" : "-") + c(r, 2, "0") + ":" + c(i, 2, "0");}, m: function m(t, e) {var n = 12 * (e.year() - t.year()) + (e.month() - t.month()),r = t.clone().add(n, u),i = e - r < 0,s = t.clone().add(n + (i ? -1 : 1), u);return Number(-(n + (e - r) / (i ? r - s : s - r)) || 0);}, a: function a(t) {return t < 0 ? Math.ceil(t) || 0 : Math.floor(t);}, p: function p(h) {return { M: u, y: a, w: s, d: i, D: "date", h: r, m: n, s: e, ms: t, Q: o }[h] || String(h || "").toLowerCase().replace(/s$/, "");}, u: function u(t) {return void 0 === t;} },$ = { name: "en", weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_") },l = "en",m = {};m[l] = $;var y = function y(t) {return t instanceof v;},M = function M(t, e, n) {var r;if (!t) return l;if ("string" == typeof t) m[t] && (r = t), e && (m[t] = e, r = t);else {var i = t.name;m[i] = t, r = i;}return !n && r && (l = r), r || !n && l;},g = function g(t, e) {if (y(t)) return t.clone();var n = "object" == typeof e ? e : {};return n.date = t, n.args = arguments, new v(n);},D = d;D.l = M, D.i = y, D.w = function (t, e) {return g(t, { locale: e.$L, utc: e.$u, $offset: e.$offset });};var v = function () {function c(t) {this.$L = this.$L || M(t.locale, null, !0), this.parse(t);}var d = c.prototype;return d.parse = function (t) {this.$d = function (t) {var e = t.date,n = t.utc;if (null === e) return new Date(NaN);if (D.u(e)) return new Date();if (e instanceof Date) return new Date(e);if ("string" == typeof e && !/Z$/i.test(e)) {var r = e.match(h);if (r) return n ? new Date(Date.UTC(r[1], r[2] - 1, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, r[7] || 0)) : new Date(r[1], r[2] - 1, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, r[7] || 0);}return new Date(e);}(t), this.init();}, d.init = function () {var t = this.$d;this.$y = t.getFullYear(), this.$M = t.getMonth(), this.$D = t.getDate(), this.$W = t.getDay(), this.$H = t.getHours(), this.$m = t.getMinutes(), this.$s = t.getSeconds(), this.$ms = t.getMilliseconds();}, d.$utils = function () {return D;}, d.isValid = function () {return !("Invalid Date" === this.$d.toString());}, d.isSame = function (t, e) {var n = g(t);return this.startOf(e) <= n && n <= this.endOf(e);}, d.isAfter = function (t, e) {return g(t) < this.startOf(e);}, d.isBefore = function (t, e) {return this.endOf(e) < g(t);}, d.$g = function (t, e, n) {return D.u(t) ? this[e] : this.set(n, t);}, d.year = function (t) {return this.$g(t, "$y", a);}, d.month = function (t) {return this.$g(t, "$M", u);}, d.day = function (t) {return this.$g(t, "$W", i);}, d.date = function (t) {return this.$g(t, "$D", "date");}, d.hour = function (t) {return this.$g(t, "$H", r);}, d.minute = function (t) {return this.$g(t, "$m", n);}, d.second = function (t) {return this.$g(t, "$s", e);}, d.millisecond = function (e) {return this.$g(e, "$ms", t);}, d.unix = function () {return Math.floor(this.valueOf() / 1e3);}, d.valueOf = function () {return this.$d.getTime();}, d.startOf = function (t, o) {var h = this,f = !!D.u(o) || o,c = D.p(t),d = function d(t, e) {var n = D.w(h.$u ? Date.UTC(h.$y, e, t) : new Date(h.$y, e, t), h);return f ? n : n.endOf(i);},$ = function $(t, e) {return D.w(h.toDate()[t].apply(h.toDate("s"), (f ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e)), h);},l = this.$W,m = this.$M,y = this.$D,M = "set" + (this.$u ? "UTC" : "");switch (c) {case a:return f ? d(1, 0) : d(31, 11);case u:return f ? d(1, m) : d(0, m + 1);case s:var g = this.$locale().weekStart || 0,v = (l < g ? l + 7 : l) - g;return d(f ? y - v : y + (6 - v), m);case i:case "date":return $(M + "Hours", 0);case r:return $(M + "Minutes", 1);case n:return $(M + "Seconds", 2);case e:return $(M + "Milliseconds", 3);default:return this.clone();}}, d.endOf = function (t) {return this.startOf(t, !1);}, d.$set = function (s, o) {var h,f = D.p(s),c = "set" + (this.$u ? "UTC" : ""),d = (h = {}, h[i] = c + "Date", h.date = c + "Date", h[u] = c + "Month", h[a] = c + "FullYear", h[r] = c + "Hours", h[n] = c + "Minutes", h[e] = c + "Seconds", h[t] = c + "Milliseconds", h)[f],$ = f === i ? this.$D + (o - this.$W) : o;if (f === u || f === a) {var l = this.clone().set("date", 1);l.$d[d]($), l.init(), this.$d = l.set("date", Math.min(this.$D, l.daysInMonth())).toDate();} else d && this.$d[d]($);return this.init(), this;}, d.set = function (t, e) {return this.clone().$set(t, e);}, d.get = function (t) {return this[D.p(t)]();}, d.add = function (t, o) {var h,f = this;t = Number(t);var c = D.p(o),d = function d(e) {var n = g(f);return D.w(n.date(n.date() + Math.round(e * t)), f);};if (c === u) return this.set(u, this.$M + t);if (c === a) return this.set(a, this.$y + t);if (c === i) return d(1);if (c === s) return d(7);var $ = (h = {}, h[n] = 6e4, h[r] = 36e5, h[e] = 1e3, h)[c] || 1,l = this.$d.getTime() + t * $;return D.w(l, this);}, d.subtract = function (t, e) {return this.add(-1 * t, e);}, d.format = function (t) {var e = this;if (!this.isValid()) return "Invalid Date";var n = t || "YYYY-MM-DDTHH:mm:ssZ",r = D.z(this),i = this.$locale(),s = this.$H,u = this.$m,o = this.$M,a = i.weekdays,h = i.months,c = function c(t, r, i, s) {return t && (t[r] || t(e, n)) || i[r].substr(0, s);},d = function d(t) {return D.s(s % 12 || 12, t, "0");},$ = i.meridiem || function (t, e, n) {var r = t < 12 ? "AM" : "PM";return n ? r.toLowerCase() : r;},l = { YY: String(this.$y).slice(-2), YYYY: this.$y, M: o + 1, MM: D.s(o + 1, 2, "0"), MMM: c(i.monthsShort, o, h, 3), MMMM: h[o] || h(this, n), D: this.$D, DD: D.s(this.$D, 2, "0"), d: String(this.$W), dd: c(i.weekdaysMin, this.$W, a, 2), ddd: c(i.weekdaysShort, this.$W, a, 3), dddd: a[this.$W], H: String(s), HH: D.s(s, 2, "0"), h: d(1), hh: d(2), a: $(s, u, !0), A: $(s, u, !1), m: String(u), mm: D.s(u, 2, "0"), s: String(this.$s), ss: D.s(this.$s, 2, "0"), SSS: D.s(this.$ms, 3, "0"), Z: r };return n.replace(f, function (t, e) {return e || l[t] || r.replace(":", "");});}, d.utcOffset = function () {return 15 * -Math.round(this.$d.getTimezoneOffset() / 15);}, d.diff = function (t, h, f) {var c,d = D.p(h),$ = g(t),l = 6e4 * ($.utcOffset() - this.utcOffset()),m = this - $,y = D.m(this, $);return y = (c = {}, c[a] = y / 12, c[u] = y, c[o] = y / 3, c[s] = (m - l) / 6048e5, c[i] = (m - l) / 864e5, c[r] = m / 36e5, c[n] = m / 6e4, c[e] = m / 1e3, c)[d] || m, f ? y : D.a(y);}, d.daysInMonth = function () {return this.endOf(u).$D;}, d.$locale = function () {return m[this.$L];}, d.locale = function (t, e) {if (!t) return this.$L;var n = this.clone(),r = M(t, e, !0);return r && (n.$L = r), n;}, d.clone = function () {return D.w(this.$d, this);}, d.toDate = function () {return new Date(this.valueOf());}, d.toJSON = function () {return this.isValid() ? this.toISOString() : null;}, d.toISOString = function () {return this.$d.toISOString();}, d.toString = function () {return this.$d.toUTCString();}, c;}();return g.prototype = v.prototype, g.extend = function (t, e) {return t(e, v, g), g;}, g.locale = M, g.isDayjs = y, g.unix = function (t) {return g(1e3 * t);}, g.en = m[l], g.Ls = m, g;});
  8381. /***/ }),
  8382. /***/ 21:
  8383. /*!******************************************************!*\
  8384. !*** D:/data/zhonghong/saber-weixin/lang/en_us.json ***!
  8385. \******************************************************/
  8386. /*! exports provided: 选择地址, 选择其它地址, 已选商品, 清空, ¥, 已售罄, 已下架, 删除, 商品券, 品类券, 通用券, 优惠券, 满, 元可用, 无门槛券, 领取后, 天内可用, 已领取, 立即领取, 购物满, 减, 不限时, 秒杀, 砍价, 拼团, 已售, 立即购买, 加入购物车, 选规格, 跳过, 立即体验, 首页, 搜索, 购物车, 我的收藏, 个人中心, 券, 正在加载中, 上拉加载更多, 代付金额, 共, 件商品, 订单包裹, 申请退款中, 已退款, 已完成, 件退款中, 不支持配送, 不支持自提, 已评价, 评价, 申请退款, 查看物流, 确认收货, 选择付款方式, 支付, 去付款, 请选择要支付的订单, 余额不足, 支付中, 缺少支付参数, 取消支付, 支付成功, 支付失败, 库存, 限量, 数量, 我要参团, 确定, 热门推荐, 最高返佣, 推广享佣金, 立即分享, 发现新版本, 立即升级, 下载进度, 店小二, 暂无记录, 正在下载海报,请稍后再试, 海报二维码生成失败, 倒计时, 天, 时, 分, 秒, 砍价成功, 活动已结束, 已砍至, 活动进行中, 取消活动, 继续砍价, 暂无砍价记录, 人正在参与, 最低, 参与砍价, 砍价列表, 人查看, 人分享, 人参与, 邀请您帮忙砍价, 查看商品, 当前, 已砍, 还剩, 立即参与砍价, 商品暂无库存, 邀请好友帮砍价, 已有, 位好友成功砍价, 帮好友砍一刀, 好友已砍价成功, 我也要参与, 已成功帮助好友砍价, 恭喜您砍价成功,快去支付, 立即支付, 抢更多商品, 砍价帮, 砍掉, 更多, 关闭, 点击加载更多, 商品详情, 砍价规则, 您已砍掉, 元,听说分享次数越多砍价成功的机会越大哦, 成功帮砍, 您也可以砍价低价拿哦,快去挑选心仪的商品吧, 发送给朋友, 微信好友, 微信朋友圈, 生成海报, 砍价详情, 分享成功, 分享失败, 该商品每人限购, 您的好友, 邀请您砍价, 人团, 去拼团, 拼团列表, 类型, 累计销量, 限购, 种规格可选, 已拼, 件, 还差, 人成团, 去拼单, 查看更多, 收起, 拼团玩法, 开团/参团, 邀请好友, 满员发货, 用户评价, 好评率, 产品介绍, 单独购买, 立即开团, 请选择, 商品, 详情, 缺少参数无法查看商品, 参数错误, 已选择, 保存成功, 保存失败, 人拼, 剩余, 结束, 恭喜您拼团成功, 人,拼团失败, 拼团中,还差, 人拼团成功, 邀请好友参团, 再次开团, 取消开团, 查看订单信息, 大家都在拼, 更多拼团, 邀请您参团, 你不是该团的成员, 已抢, 抢购中, 未开始, 已结束, 暂无商品,去看点别的吧, 即将开始, 距秒杀结束仅剩, 累计销售, 收藏, 保存到手机, 长按图片可以保存到手机, 抢购详情页, 二维码获取失败, 请选择属性, 提示:点击图片即可保存至手机相册, 拼团海报, 砍价海报, 海报生成中, 海报图片获取失败, 海报, 已预定, 预售价, 立即预定, 开售时间, 预售活动, 起, 划线价, 开通“超级会员”立省, 元, 立即开通, 预售活动时间, 预售结束后, 天内发货, 活动, 参与秒杀, 参与拼团, 复制口令, 复制成功, 推荐, 缺少经纬度信息无法查看地图, 产品库存不足,请选择其它属性, 立即退款, 一键改价, 订单备注, 商品总价, 原始邮费, 实际支付, 退款金额, 请填写备注信息, 立即修改, 确认退款, 拒绝退款, 取消, 订单号, 发货方式, 发货类型, 快递公司, 快递单号, 顺丰请输入单号 :收件人或寄件人手机号后四位, 例如:SF000000000000:3941, 电子面单, 预览, 寄件人姓名, 填写寄件人姓名, 寄件人电话, 填写寄件人电话, 寄件人地址, 填写寄件人地址, 送货人, 确认提交, 发货, 送货, 无需物流, 手动填写, 电子面单打印, 填写快递单号, 请选择电子面单, 待付款, 待发货, 待收货, 待评价, 售后/退款, 数据统计, 今日成交额, 昨日成交额, 本月成交额, 今日订单数, 昨日订单数, 本月订单数, 详细数据, 日期, 订单数, 成交额, 立即核销, 查看, 确定要核销此订单吗, 确定核销, 请输入核销码, 请输入正确的核销码, 查询中, 订单, 订单未备注,点击添加备注信息, 复制, 件商品,应支付, 邮费, 订单编号, 下单时间, 支付状态, 已支付, 未支付, 支付方式, 买家留言, 支付金额, 优惠券抵扣, 运费, 实付款, 配送方式, 快递, 送货人电话, 确认付款, 去发货, 改价成功, 改价失败, 请输入备注, 退款中, 部分退款中, 件商品,实付款, 同意退货, 待用户发货, 请输入正确的金额, 今天, 昨天, 最近7天, 本月, 自定义, 营业额(元), 订单量(份), 增长率, 增长, 单位, 元., 分., 固定, 指定范围, 提交时间, 原因, 暂无申请记录,快去申请吧!, 没有更多啦, 待审核, 审核通过, 审核未通过, 编辑, 重新提交, 会员优惠价, 余额支付, 可用余额, 微信支付, 确认, 支付提醒, 线下支付已关闭,请点击确认按钮返回主页, 请输入支付金额, 正在确认, 进入商城, 代理商名称, 请输入代理商名称, 用户姓名, 请输入姓名, 联系电话, 请输入手机号, 验证码, 填写验证码, 邀请码, 请输入代理商邀请码, 请上传营业执照及行业相关资质证明图片, 图片最多可上传10张,图片格式支持JPG、PNG、JPEG, 上传图片, 已阅读并同意, 代理商协议, 提交申请, 代理商入驻协议, 恭喜,您的资料提交成功!, 返回首页, 恭喜,您的资料通过审核!, 您的申请未通过!, 重新申请, 获取验证码, 请输入正确的手机号码, 重新获取, 请上传营业执照, 请勾选并同意入驻协议, 专题栏, 暂无数据, 请输入卡号, 请输入卡密, 确认激活, SVIP会员尊享权, 正在激活, 已使用, 永久SVIP会员, SVIP会员, 到期, 您与, 商城的第, 天., 已累积为您节省, 开通即享会员权益, 续费会员, 开通会员, 有效期至, 试用, 购买即视为同意, 会员用户协议, 点击兑换卡密, 会员优惠券, SVIP商品推荐, 商城价, 激活会员卡, 支付宝支付, 成功开启0元试用, 确认绑定, 绑定成功, 商城客服已离线, 我要反馈, 请填写内容, 提交, 精品推荐, 热门榜单, 首发新品, 促销单品, 预告, 回放, 进行中, 发送客服, 客服连接中, 连接失败, 提示, 客服已下线,是否需要反馈?, 和好友一起分享, 积分抵扣, 已开票, 未开票, 发票信息, 发票抬头, 发票抬头类型, 个人, 企业, 发票类型, 电子普通发票, 电子专用发票, 企业税号, 联系信息, 真实姓名, 联系邮箱, 抬头选择, 默认, 普通, 专用, 您还没有添加发票信息哟, 添加新的抬头, 不开发票, 抽奖, 全选, 属性, 请填写具体地址, 省, 市, 区, 添加成功, 您已拒绝导入微信地址权限, 是否进入权限管理,调整授权?, 已取消, 添加失败, 请填写收货人姓名, 请选择所在地区, 请填写详细地址, 星, 商品满足你的期待么?说说你的想法,分享给想买的他们吧, 立即评价, 商品质量, 服务态度, 缺少参数, 请填写你对宝贝的心得, 正在发布评论, 感谢您的评价, 评价完成, 恭喜您, 获得, 机会, 领取成功, 评分, 全部, 好评, 中评, 差评, 加载更多, 千米距离, 搜索商品名称, 价格, 销量, 新品, 已全部加载, 缺少订单号, 退货件数, 退款类型, 退款原因, 备注说明, 填写备注信息,100字以内, 仅退款, 退货并退款, 申请成功, 请先选择退货商品, 搜索历史, 热门搜索, 请输入要搜索的商品, 正在搜索中, 中奖记录, 我的奖品, 活动规则, 昵称, 序号, 奖品名称, 获奖时间, 商家暂未上架活动哦, 获取抽奖信息, 奖品类型, 立即兑换, 兑换时间, 暂无中奖记录, 积分, 余额, 红包, 设置收货地址, 暂无门店信息, 剩余积分, 当前积分, 开具发票, 请填写, 配送运费, 会员商品优惠, 会员运费优惠, 合计, 使用微信快捷支付, 使用支付宝支付, 线下支付, 使用线下付款, 好友代付, 找微信好友支付, 立即使用, 请选择要购买的商品, 发票, 不使用, 订单创建成功, 请选择支付方式, 请选择收货地址, 请填写联系人或联系人电话, 暂无门店,请选择其他方式, 请输入, 请输入正确的, 请上传, 订单支付中, 请按以上退货信息将商品退回, 请联系管理员获取退货地址, 待核销, 核销信息, 营业时间, 每日, 使用说明, 可将二维码出示给店员扫描或提供数字核销码, 可将二维码出示给配送员进行核销, 查看位置, 拒绝原因, 联系客服, 商家备注, 收货人, 收货地址, 配送人姓名, 拨打, 虚拟发货, 已发货,请注意查收, 虚拟备注, 总代付, 申请开票, 查看发票, 取消订单, 立即付款, 批量退款, 查看拼团, 再次购买, 取消申请, 填写退货信息, 查看退货物流, 您确认放弃此次申请吗, 操作成功, 订单信息不存在, 为保障权益,请收到货确认无误后,再确认收货, 删除订单, 确定删除该订单, 删除成功, 确认取消该订单, 订单信息, 消费订单, 总消费, 预售, 线下付款,未支付, 未核销, 件商品,总金额, 查看详情, 暂无订单, 缺少订单号无法取消订单, 订单支付成功, 订单支付失败, 暂未支付, 失败原因, 重新购买, 重新支付, 赠送优惠券, 有效期, 缺少参数无法查看订单支付状态, 最多可上传3张, 请选择产品, 该产品没有更多库存了, 优品推荐, 暂无产品, 重新选择, 请选择数量, 砍价专区·BARGAINING, 立即砍价, 拼团活动, 人拼团成功., 人参团, 拼团价, 已过期, 关注, 推荐好货, 暂无商品, 限时秒杀, 抢, 广告位, 精彩内容, 砍价模块,暂无数据, 砍价活动, 呼朋唤友来砍价, 拼团模块,暂无数据, 享超值开团价, 优惠券,暂无数据, 领取今日好券, 可用, 领取, 客服, 商品列表,暂无数据, 搜索商品, 暂无图片,请上传图片, 首发新品,暂无数据, 多个优质商品最新上架, 暂无新闻,请上传新闻, 热度 TOP, 排行榜、暂无数据, 促销单品,暂无数据, 库存商品优惠促销活动, 精品推荐,暂无数据, 上百种商品分类任您选择, 秒杀模块,暂无数据, 场, 暂无数据,请设置, 暂无数据,请先添加分类, 暂无标题, 诚意推荐品质商品, 点击“立即关注”即可关注公众号, 立即关注, 添加到我的小程序, 微信首页下拉即可访问商城。, 点击, 服务协议与隐私政策, 请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。, 你可以阅读, 《服务协议与隐私政策》, 了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。, 我同意, 残忍拒绝, 下拉加载更多, 网络连接断开, 请检查情况:, 在设置中是否已开启网络权限, 当前是否处于弱网环境, 版本是否过低,升级试试吧, 重新连接, 加载中, 没有更多内容啦~, 100%正品保证, 所有商品精挑细选, 售后无忧, 管理, 购物数量, 请重新选择商品规格, 重选, 失效商品, 失效, 该商品已失效, 立即下单, 我也是有底线的, 产品库存不足,请选择其它, 添加购物车成功, 清除成功, 暂无兑换记录~, 大家都在换, 人兑换, 轻松赚积分, 购买商品, 购买商品可获得积分奖励, 去完成, 每日签到活动, 每日签到可获得积分奖励, 九宫格抽奖活动, 幸运抽奖可获得积分奖励, 我的积分, 每日签到, 积分抽奖, 兑换记录, 已兑换, 无法兑换, [默认], 可用积分, 快递费用, 免运费, 备注信息, 请添加备注(150字以内), 使用线上支付宝支付, 可用余额:, 选择线下付款方式, 正在加载…, 可用积分不足!, 订单状态, 支付积分, 备注, 配送核销码, 当前可用余额:, 正在加载, 缺少经纬度信息无法查看地图!, 商品兑换成功, 兑换方式, 积分兑换, 兑换积分, 取消兑换, 缺少参数无法查看订单兑换状态, 用户离开了, 兑换成功, 物流公司, 复制单号, 设为默认, 添加新地址, 导入微信地址, 取消选择, 您设置的默认地址不存在!, 设置成功, 您删除的地址不存在!, 获取头像, 请点击授权, 绑定手机号, 永久, 会员到期, 未开通会员, 查看会员权益, 立即续费, 立即激活, 会员可享多项权益, 订单中心, 我的服务, 隐私协议, 商家管理, 更新用户信息成功, 客服接待, 点击复制网址去浏览器中打开, 点击复制, 完成支付, 点击右上角, 选择 在浏览器 打开,去支付宝支付, 支付订单不存在,页面将在2秒后自动关闭!, 正在支付中, 支付订单不存在,页面将在2秒后自动关闭, 复制失败, 您目前的排名, 您目前暂无排名, 暂无排名~, 输入手机号, 输入验证码, 立即登录, 请填写手机号码, 请填写验证码, 请输入正确的验证码, 正在登录中, 登录成功, 获取授权, 获取微信的手机号授权, 获取微信手机号, 输入手机号码, 填写登录密码, 登录, 快速登录, 账号登录, 其他方式登录, 登录中, 获取用户信息失败, 请绑定手机号后,继续操作, 错误信息, 用户点击确定, 用户点击取消, 登录失败, 请勿重复点击, 请填写密码, 您输入的密码过于简单, 请填写账号, 请输入正确的账号, [图片], [语音], [商品], [订单], 亲、暂无消息记录哟!, 站内消息, 客服消息, 通知于, 获取详情中, 代付订单创建成功,发给好友帮你付款吧~, 帮我付一下这件商品了,谢谢~, 已经有人替我代付,谢谢啦~, 谢谢你帮我支付,么么哒~, 我已为你代付成功,商家正在努力发货中~, 好友代付成功,商家正在努力发货中~, 发送给微信好友, 查看订单详情, 订单已支付, 如果订单申请退款,已支付金额将原路退还给您, 代付成功, 谢谢你为我付款,还可以再去看看其他商品哟~, 该订单暂未支付, 人, 推广人数, 一级, 二级, 点击搜索会员名称, 团队排序, 金额排序, 订单排序, 单, 加入时间, 累积推广订单, 本月累计推广订单, 返佣, 暂未返佣, 返佣时间, 单号, 暂无推广订单~, 推广订单列表, 找回密码, 填写您的新密码, 加载失败, 点击授权登录您的客服工作台, 授权登录, 没有登录的code,请重新扫码, 员工人数, 邀请, 分佣比例, 修改分佣比例, 请输入百分比, 删除员工, 确定删除该员工?, 请输入比例, 分类, 我的, 姓名, 请输入联系电话, 所在地区, 详细地址, 设置为默认地址, 立即保存, 浙江省, 杭州市, 滨江区, 广东省, 广州市, 番禺区, 修改地址, 添加地址, 已取消!, 请填写联系电话, 保存中, 修改成功, 消费, 充值, 暂无账单的记录哦~, 点击【立即注销】即代表您已经同意《用户注销协议》, 立即注销, 是否确认注销, 注销后无法恢复,请谨慎操作, 注销, 持卡人, 请输入持卡人姓名, 卡号, 请填写卡号, 银行, 提现, 最低提现金额, 当前可提现金额, 冻结佣金, 说明: 每笔佣金的冻结期为, 天,到期后可提现, 账号, 请填写您的微信账号, 收款码, 请填写您的支付宝账号, 请选择银行, 银行卡, 微信, 支付宝, 请填写持卡人姓名, 请填写微信号, 请填写提现金额, 提现金额不能低于, 未使用, 已使用/过期, 通用劵, 一级分佣上浮, 二级分佣上浮, 快速升级技巧, 未完成, 已领完, 当前共, 取关, 请选择商品, 头像, 手机号码, 点击绑定手机号, ID号, 权限设置, 点击管理, 密码, 点击修改密码, 更换手机号码, 点击更换手机号码, 缓存大小, 当前版本, 地址管理, 发票管理, 账号注销, 注销后无法恢复, 累计积分, 累计消费, 冻结积分, 积分规则, 提示:积分数值的高低会直接影响您的会员等级, 提示:你有, 积分在, 过期,请尽快使用, 暂无积分记录哦~, 赚积分, 分值明细, 分值提升, 抬头类型, 增值税电子专用发票, 增值税电子普通发票, 需要开具发票的姓名, 需要开具发票的企业名称, 税号, 纳税人识别号, 手机号, 您的手机号, 邮箱, 您的联系邮箱, 开户银行, 您的开户银行, 银行账号, 您的银行账号, 企业地址, 您所在的企业地址, 企业电话, 您的企业电话, 设置为默认抬头, 保存, 发票类型选择, 纸质发票开出后将以邮寄形式交付, 请输入需要开具发票的姓名, 请输入您的手机号, 请正确输入您的手机号, 请输入您的联系邮箱, 请正确输入您的联系邮箱, 请输入需要开具发票的企业名称, 请输入纳税人识别号, 请正确输入纳税人识别号, 请输入您的开户银行, 请输入您的银行账号, 请正确输入您的银行账号, 请输入您所在的企业地址, 请输入您的企业电话, 发票记录, 抬头管理, 申请时间, 没有发票信息哟~, 个人普通发票, 企业普通发票, 企业专用发票, 添加新发票, 删除该发票?, 发票编号, 发票备注, 快递号, 总资产(元), 累计充值(元), 累计消费(元), 账单记录, 消费记录, 充值记录, 积分中心, 签到领积分, 赚积分抵现金, 领取优惠券, 满减享优惠, 最新拼团活动, 最新的优惠商品上架拼团, 立即参与, 当前限时秒杀, 最新商品秒杀进行中, 我的余额, 赠送, 其他, 注意事项, 冻结佣金为, 立即转入, 立即充值, 请输入金额, 转入余额, 转入余额后无法再次转出,确认是否转入余额, 转入成功, 正在支付, 充值金额必须为数字, 充值金额不能为0, 填写手机号码, 是否绑定账号, 绑定, 您已取消绑定!, 当前手机号, 设置新密码, 确认新密码, 手机号码不存在,无法发送验证码!, 请输入新密码, 两次输入的密码不一致!, 请输入验证码, 暂无退款订单~, 缺少订单号无法查看订单详情, 明细, 第七天, 第7天, 奖励, 已签到, 立即签到, 已累计签到, 据说连续签到第, 天可获得超额积分,一定要坚持签到哦~~~, 签到成功, 好的, 您今日已签到!, 暂无签到记录~, 保存海报, 长按保存图片, 分销海报, 小程序二维码需要发布正式版后才能获取到, 获取中, 暂无数据~, 提现记录, 提现总额, 佣金记录, 佣金明细, 分销等级, 昨日收益, 累积已提, 代理商申请, 立即提现, 推广名片, 推广人统计, 推广人订单, 推广订单, 事业部, 代理商, 推广人排行, 佣金排行, 员工列表, 您目前暂无推广权限, 商城购物可享, 折, 当前等级, 未达成, 今日成长值, 点, 我的成长值记录, 暂未解锁该等级, 点,需达到, 已解锁更高等级, 我的成长特权, 购物折扣, 专属徽章, 经验累积, 尊享客服, 签到, 可获得, 点经验, 每日签到可获得经验值,已签到, 去签到, 点经验/元, 购买商品可获得对应的经验值, 去购买, 点经验/人, 邀请好友注册商城可获得经验值, 去邀请, 积分数, 消费金额, 暂无经验记录, 账户登录, 微信登录, 手机号登录, 账户充值, 佣金转入, 周榜, 月榜, 周排行, 月排行, 语言切换, 点击前往, 查看全部, 查看订单, 无法获取图片信息, 长按或扫描查看, 点解锁, 确认修改, 保存修改, 退出登录, 付费会员, 地址信息, 我的推广, 砍价记录, 我的等级, 兑换, 申请中, 统计管理, 退款, 未发货, 当前为最新版本, 清除缓存, 确定清楚本地缓存数据吗, 缓存清理完成, 切换的账号不存在, 正在切换中, 确认退出登录, 我知道了, 系统错误, 请求失败, 邀请您加入, 图片上传中, 上传图片失败, 访问位置被拒绝, 系统定位已关闭, 需要定位权限, 订单核销, 当前可转入佣金为, 浏览记录, 签到奖励, 请输入内容, 单次限购, 永久限购, 《用户协议》, 《隐私协议》, 与, 请先阅读并同意协议, 绑定下级通知, 购买成功通知, 确认收货通知, 改价通知, 退款成功通知, 充值成功通知, 积分到账通知, 佣金到账通知, 砍价成功通知, 拼团成功通知, 拼团失败通知, 开团成功通知, 提现成功通知, 提现失败通知, 充值退款通知, 退款申请拒绝通知, 您有新的退款待处理, 您有新的订单待处理, 发货通知, 取消拼团通知, 参团成功通知, 你有个新的提现申请待处理, 你有个新的用户收货待处理, 提醒付款通知, 短信验证码, 到店自提, 快递配送, default */
  8387. /***/ (function(module) {
  8388. module.exports = JSON.parse("{\"选择地址\":\"Select Address\",\"选择其它地址\":\"Select Other Address\",\"已选商品\":\"Selected Goods\",\"清空\":\"Clear\",\"¥\":\"$\",\"已售罄\":\"Sold Out\",\"已下架\":\"Take Down\",\"删除\":\"Delete\",\"商品券\":\"Product\",\"品类券\":\"Category\",\"通用券\":\"General\",\"优惠券\":\"Voucher\",\"满\":\"Full \",\"元可用\":\" Used\",\"无门槛券\":\"No Threshold\",\"领取后\":\"Receive \",\"天内可用\":\"Days use\",\"已领取\":\"Received\",\"立即领取\":\"Get\",\"购物满\":\"Spend\",\"减\":\"Off\",\"不限时\":\"Unlimited Time\",\"秒杀\":\"Seckill\",\"砍价\":\"Bargain\",\"拼团\":\"Group\",\"已售\":\"Sold\",\"立即购买\":\"Buy Now\",\"加入购物车\":\"Add to Cart\",\"选规格\":\"Options\",\"跳过\":\"Next\",\"立即体验\":\"Go Now\",\"首页\":\"Home\",\"搜索\":\"Search\",\"购物车\":\"Cart\",\"我的收藏\":\"Collect\",\"个人中心\":\"Mine\",\"券\":\"Vo.\",\"正在加载中\":\"Loading...\",\"上拉加载更多\":\"Pull Up Loading More\",\"代付金额\":\"Amount\",\"共\":\"A Total of \",\"件商品\":\" Items\",\"订单包裹\":\"Order Goods\",\"申请退款中\":\"Refunding\",\"已退款\":\"Refunded\",\"已完成\":\"Completed\",\"件退款中\":\"Items Refunding\",\"不支持配送\":\"In-store only\",\"不支持自提\":\"Shipping only\",\"已评价\":\"Evaluated\",\"评价\":\"Review\",\"申请退款\":\"Refund\",\"查看物流\":\"Logistic\",\"确认收货\":\"Take Order\",\"选择付款方式\":\"Select PayType\",\"支付\":\"Pay \",\"去付款\":\"To Pay\",\"请选择要支付的订单\":\"Select Order\",\"余额不足\":\"Insufficient balance\",\"支付中\":\"Paying...\",\"缺少支付参数\":\"Missing payment parameters\",\"取消支付\":\"Cancel Payment\",\"支付成功\":\"Payment Successful\",\"支付失败\":\"Payment Failed\",\"库存\":\"Stock \",\"限量\":\"Limit \",\"数量\":\"QTY\",\"我要参团\":\"Join Group\",\"确定\":\"OK\",\"热门推荐\":\"Hot Recommendation\",\"最高返佣\":\"Highest\",\"推广享佣金\":\"Promote\",\"立即分享\":\"Share Now\",\"发现新版本\":\"New Version \",\"立即升级\":\"Upgrade\",\"下载进度\":\"Progress\",\"店小二\":\"Waiter\",\"暂无记录\":\"No Data\",\"正在下载海报,请稍后再试\":\"Downloading poster, please try again later\",\"海报二维码生成失败\":\"Failed to generate poster QR code\",\"倒计时\":\"Countdown\",\"天\":\"D\",\"时\":\"H\",\"分\":\"M\",\"秒\":\"S\",\"砍价成功\":\"Bargain Successful\",\"活动已结束\":\"Activity Stopped\",\"已砍至\":\"Cut to \",\"活动进行中\":\"Processing...\",\"取消活动\":\"Cancel\",\"继续砍价\":\"Continue\",\"暂无砍价记录\":\"No Data\",\"人正在参与\":\"Participating\",\"最低\":\"Lowest\",\"参与砍价\":\"Bargain\",\"砍价列表\":\"Bargain List\",\"人查看\":\"View\",\"人分享\":\"Share\",\"人参与\":\"Involved\",\"邀请您帮忙砍价\":\"Invite you Help\",\"查看商品\":\"View Items\",\"当前\":\"Current \",\"已砍\":\"Chopped \",\"还剩\":\"Left \",\"立即参与砍价\":\"Bargain Now\",\"商品暂无库存\":\"Out of stock\",\"邀请好友帮砍价\":\"Invite Friends Help\",\"已有\":\"Have\",\"位好友成功砍价\":\"Friends Successful\",\"帮好友砍一刀\":\"Help Friends\",\"好友已砍价成功\":\"Friends Already Successful\",\"我也要参与\":\"I will participate\",\"已成功帮助好友砍价\":\"Help Friends Success\",\"恭喜您砍价成功,快去支付\":\"Bargaining Successful ,Go Pay\",\"立即支付\":\"Pay Now\",\"抢更多商品\":\"Grab More\",\"砍价帮\":\"Bargaining Gang\",\"砍掉\":\"Cut off \",\"更多\":\"More\",\"关闭\":\"Close\",\"点击加载更多\":\"Click to load more\",\"商品详情\":\"Details\",\"砍价规则\":\"Bargain Rules\",\"您已砍掉\":\"You have cut \",\"元,听说分享次数越多砍价成功的机会越大哦\":\", More times you share, the greater the chance of successful bargaining\",\"成功帮砍\":\"Successfully help cut \",\"您也可以砍价低价拿哦,快去挑选心仪的商品吧\":\"You can also bargain and get it at a low price, go and choose your favorite products\",\"发送给朋友\":\"Send Friend\",\"微信好友\":\"Wechat Friend\",\"微信朋友圈\":\"WeChat Moments\",\"生成海报\":\"Generate poster\",\"砍价详情\":\"Bargain Details\",\"分享成功\":\"Share Successful\",\"分享失败\":\"Share Failed\",\"该商品每人限购\":\"This product is limited to purchase per person \",\"您的好友\":\"Your friend \",\"邀请您砍价\":\"Invite you cut \",\"人团\":\" People\",\"去拼团\":\"Go\",\"拼团列表\":\"Group List\",\"类型\":\"Type\",\"累计销量\":\"Total Sold\",\"限购\":\"Limit \",\"种规格可选\":\"Optional\",\"已拼\":\"Spelled \",\"件\":\"Piece\",\"还差\":\"Only \",\"人成团\":\" success\",\"去拼单\":\"Join\",\"查看更多\":\"More\",\"收起\":\"Put Away\",\"拼团玩法\":\"Group process\",\"开团/参团\":\"Start\",\"邀请好友\":\"Invitation\",\"满员发货\":\"Delivery\",\"用户评价\":\"Review\",\"好评率\":\"Praise Rate\",\"产品介绍\":\"Details\",\"单独购买\":\"Buy Alone\",\"立即开团\":\"Start Group\",\"请选择\":\"Selected\",\"商品\":\"Product\",\"详情\":\"Detail\",\"缺少参数无法查看商品\":\"Can't view product due to missing parameters\",\"参数错误\":\"Parameter error\",\"已选择\":\"Selected\",\"保存成功\":\"Saved Success\",\"保存失败\":\"Saved Failed\",\"人拼\":\" People Fight\",\"剩余\":\"Remaining \",\"结束\":\"Finish\",\"恭喜您拼团成功\":\"Congratulations on your successful grouping\",\"人,拼团失败\":\"Person left, the group failed\",\"拼团中,还差\":\"In the group, there is still \",\"人拼团成功\":\"Person left to join the group successfully\",\"邀请好友参团\":\"Invite friends to join the group\",\"再次开团\":\"Regroup\",\"取消开团\":\"Cancel\",\"查看订单信息\":\"View Order\",\"大家都在拼\":\"All Group\",\"更多拼团\":\"More\",\"邀请您参团\":\"Invite you join \",\"你不是该团的成员\":\"You are not a member of the group\",\"已抢\":\"Robbed\",\"抢购中\":\"Grab Now\",\"未开始\":\"No Started\",\"已结束\":\"Over\",\"暂无商品,去看点别的吧\":\"No products\",\"即将开始\":\"No Started\",\"距秒杀结束仅剩\":\"Only left to end\",\"累计销售\":\"Sold\",\"收藏\":\"Collect\",\"保存到手机\":\"Save to phone\",\"长按图片可以保存到手机\":\"Long press to save to phone\",\"抢购详情页\":\"Snap purchase details page\",\"二维码获取失败\":\"Failed to get QR code\",\"请选择属性\":\"Please select a property\",\"提示:点击图片即可保存至手机相册\":\"Tip: Click on the picture to save it to the phone album\",\"拼团海报\":\"Puzzle poster\",\"砍价海报\":\"Haggling poster\",\"海报生成中\":\"The poster is being generated\",\"海报图片获取失败\":\"Failed to get poster image\",\"海报\":\"Poster\",\"已预定\":\"Booked\",\"预售价\":\"Pre-sale\",\"立即预定\":\"Book Now\",\"开售时间\":\"Sale Time\",\"预售活动\":\"Pre-sale event\",\"起\":\"Rise\",\"划线价\":\"ORP\",\"开通“超级会员”立省\":\"Open 'Super Member' to off \",\"元\":\"$\",\"立即开通\":\"Activate now\",\"预售活动时间\":\"Pre-sale time\",\"预售结束后\":\"Ships within \",\"天内发货\":\"Days after pre-sale ends\",\"活动\":\"Activity\",\"参与秒杀\":\"Seckill\",\"参与拼团\":\"Group\",\"复制口令\":\"Copy Goods Code\",\"复制成功\":\"Copy successfully\",\"推荐\":\"Recommended\",\"缺少经纬度信息无法查看地图\":\"Missing latitude and longitude information cannot view the map\",\"产品库存不足,请选择其它属性\":\"Insufficient product stock, please select another attribute\",\"立即退款\":\"Immediate refund\",\"一键改价\":\"Change price\",\"订单备注\":\"Order notes\",\"商品总价\":\"Total price\",\"原始邮费\":\"Old postage\",\"实际支付\":\"Actual price\",\"退款金额\":\"Refund price\",\"请填写备注信息\":\"Please fill in the remarks\",\"立即修改\":\"Edit now\",\"确认退款\":\"Confirm refund\",\"拒绝退款\":\"Refused refund\",\"取消\":\"Cancel\",\"订单号\":\"Order ID\",\"发货方式\":\"Mode\",\"发货类型\":\"Shipping type\",\"快递公司\":\"Express\",\"快递单号\":\"Number\",\"顺丰请输入单号 :收件人或寄件人手机号后四位\":\"Please enter the tracking number for SF Express: the last four digits of the recipient's or sender's mobile phone number\",\"例如:SF000000000000:3941\":\"For example: SF000000000000:3941\",\"电子面单\":\"Electronic sheet\",\"预览\":\"Preview\",\"寄件人姓名\":\"Sender Name\",\"填写寄件人姓名\":\"Fill in sender name\",\"寄件人电话\":\"Sender phone\",\"填写寄件人电话\":\"Fill in sender phone number\",\"寄件人地址\":\"Sender address\",\"填写寄件人地址\":\"Fill in sender address\",\"送货人\":\"Delivery man\",\"确认提交\":\"Submit\",\"发货\":\"Ship\",\"送货\":\"Give\",\"无需物流\":\"No need\",\"手动填写\":\"Fill in manually\",\"电子面单打印\":\"Electronic sheet\",\"填写快递单号\":\"Please fill in the courier number\",\"请选择电子面单\":\"Please select an electronic receipt\",\"待付款\":\"To Pay\",\"待发货\":\"To Ship\",\"待收货\":\"To Receive\",\"待评价\":\"To Rate\",\"售后/退款\":\"Refund\",\"数据统计\":\"Statistics\",\"今日成交额\":\"Today Sold\",\"昨日成交额\":\"Yesterday Sold\",\"本月成交额\":\"Month Sold\",\"今日订单数\":\"Today Orders\",\"昨日订单数\":\"Yesterday Orders\",\"本月订单数\":\"Month Orders\",\"详细数据\":\"Detailed data\",\"日期\":\"Date\",\"订单数\":\"Order Count\",\"成交额\":\"Turnover\",\"立即核销\":\"Write off now\",\"查看\":\"View\",\"确定要核销此订单吗\":\"Are you sure write off this order\",\"确定核销\":\"Verify\",\"请输入核销码\":\"Please enter the verification code\",\"请输入正确的核销码\":\"Please enter the correct verification code\",\"查询中\":\"Querying\",\"订单\":\"Order\",\"订单未备注,点击添加备注信息\":\"The order has no remarks, click to add remarks\",\"复制\":\"Copy\",\"件商品,应支付\":\"Items, should pay \",\"邮费\":\"Postage\",\"订单编号\":\"Order ID\",\"下单时间\":\"Order Time\",\"支付状态\":\"Payment Status\",\"已支付\":\"Paid\",\"未支付\":\"Unpaid\",\"支付方式\":\"Pay method\",\"买家留言\":\"Buyer MSG\",\"支付金额\":\"Pay Amount\",\"优惠券抵扣\":\"Coupon deduction\",\"运费\":\"Fare\",\"实付款\":\"Real Amount\",\"配送方式\":\"Delivery Method\",\"快递\":\"Express\",\"送货人电话\":\"Courier phone\",\"确认付款\":\"Confirm Pay\",\"去发货\":\"To Ship\",\"改价成功\":\"Price changed successfully\",\"改价失败\":\"Price change failed\",\"请输入备注\":\"Please enter a note\",\"退款中\":\"Refunding\",\"部分退款中\":\"Partial refund\",\"件商品,实付款\":\"Goods, paid in\",\"同意退货\":\"Agree return\",\"待用户发货\":\"No Shipped\",\"请输入正确的金额\":\"Please enter the correct amount\",\"今天\":\"Today\",\"昨天\":\"Yesterday\",\"最近7天\":\"Last 7 days\",\"本月\":\"Month\",\"自定义\":\"Customize\",\"营业额(元)\":\"Turnover\",\"订单量(份)\":\"Quantity\",\"增长率\":\"Up rate\",\"增长\":\"Increase\",\"单位\":\"Unit\",\"元.\":\"Yuan\",\"分.\":\"Cents\",\"固定\":\"Fixed\",\"指定范围\":\"Scope\",\"提交时间\":\"Submit Time\",\"原因\":\"Reason\",\"暂无申请记录,快去申请吧!\":\"No application records yet, apply now!\",\"没有更多啦\":\"No more\",\"待审核\":\"Pending review\",\"审核通过\":\"Review passed\",\"审核未通过\":\"Review failed\",\"编辑\":\"Edit\",\"重新提交\":\"Resubmit\",\"会员优惠价\":\"VIP discount\",\"余额支付\":\"Balance pay\",\"可用余额\":\"Balance \",\"微信支付\":\"WeChat Pay\",\"确认\":\"Confirm\",\"支付提醒\":\"Payment reminder\",\"线下支付已关闭,请点击确认按钮返回主页\":\"Offline payment has been closed, please click the confirm button to return to the home page\",\"请输入支付金额\":\"Please enter payment amount\",\"正在确认\":\"Confirming\",\"进入商城\":\"Enter mall\",\"代理商名称\":\"Agency Name\",\"请输入代理商名称\":\"Please Enter Agency Name\",\"用户姓名\":\"Your name\",\"请输入姓名\":\"Please Enter Your Name\",\"联系电话\":\"Your Phone\",\"请输入手机号\":\"Please enter phone number\",\"验证码\":\"OTP Code\",\"填写验证码\":\"Fill in OTP Code\",\"邀请码\":\"Invite code\",\"请输入代理商邀请码\":\"Enter Invite Code\",\"请上传营业执照及行业相关资质证明图片\":\"Please upload pictures of business license and industry-related qualification certificates\",\"图片最多可上传10张,图片格式支持JPG、PNG、JPEG\":\"Up to 10 pictures can be uploaded, and the picture format supports JPG, PNG, JPEG\",\"上传图片\":\"Upload\",\"已阅读并同意\":\"Read & Agree\",\"代理商协议\":\"Agency Agreement\",\"提交申请\":\"Submit Apply\",\"代理商入驻协议\":\"Agent Agreement\",\"恭喜,您的资料提交成功!\":\"Congratulations, Submitted successfully!\",\"返回首页\":\"Back home\",\"恭喜,您的资料通过审核!\":\"Congratulations, Review passed!\",\"您的申请未通过!\":\"Your application was rejected!\",\"重新申请\":\"Re-apply\",\"获取验证码\":\"Get OTP Code\",\"请输入正确的手机号码\":\"Please enter the correct phone number\",\"重新获取\":\"Reacquire\",\"请上传营业执照\":\"Please upload business license\",\"请勾选并同意入驻协议\":\"Please tick and agree to the Occupation Agreement\",\"专题栏\":\"Topic column\",\"暂无数据\":\"No Data\",\"请输入卡号\":\"Please enter the card number\",\"请输入卡密\":\"Please enter your password\",\"确认激活\":\"Confirm\",\"SVIP会员尊享权\":\"SVIP member privileges\",\"正在激活\":\"Activating\",\"已使用\":\"Used\",\"永久SVIP会员\":\"Permanent SVIP member\",\"SVIP会员\":\"SVIP member\",\"到期\":\"maturity\",\"您与\":\"You with\",\"商城的第\":\"Mall\",\"天.\":\" Days.\",\"已累积为您节省\":\"Accumulated savings for you\",\"开通即享会员权益\":\"Enjoy member benefits\",\"续费会员\":\"Renewal\",\"开通会员\":\"Join SVIP\",\"有效期至\":\"Valid until \",\"试用\":\"Try out\",\"购买即视为同意\":\"Purchase as consent \",\"会员用户协议\":\"SVIP Agreement\",\"点击兑换卡密\":\"Click to redeem card\",\"会员优惠券\":\"SVIP Coupon\",\"SVIP商品推荐\":\"SVIP Recommends\",\"商城价\":\"Mall price\",\"激活会员卡\":\"Activate Card\",\"支付宝支付\":\"Alipay\",\"成功开启0元试用\":\"Successfully opened 0 yuan trial\",\"确认绑定\":\"Confirm binding\",\"绑定成功\":\"Binding succeeded\",\"商城客服已离线\":\"Customer service is offline\",\"我要反馈\":\"I want feedback\",\"请填写内容\":\"Please fill content\",\"提交\":\"Submit\",\"精品推荐\":\"Recommended\",\"热门榜单\":\"Popular\",\"首发新品\":\"New\",\"促销单品\":\"Promotional\",\"预告\":\"Notice\",\"回放\":\"Playback\",\"进行中\":\"Processing\",\"发送客服\":\"Send\",\"客服连接中\":\"Customer service is connecting\",\"连接失败\":\"Connection failed\",\"提示\":\"Hint\",\"客服已下线,是否需要反馈?\":\"Customer service is offline, do you need feedback?\",\"和好友一起分享\":\"Share with friends\",\"积分抵扣\":\"Points deduction\",\"已开票\":\"Billed\",\"未开票\":\"Not invoiced\",\"发票信息\":\"Invoice Info\",\"发票抬头\":\"Invoice\",\"发票抬头类型\":\"Invoice Header Type\",\"个人\":\"PER \",\"企业\":\"COM \",\"发票类型\":\"Invoice type\",\"电子普通发票\":\"Electronic General Invoice\",\"电子专用发票\":\"Electronic special invoice\",\"企业税号\":\"Enterprise tax\",\"联系信息\":\"Contact Info\",\"真实姓名\":\"Real Name\",\"联系邮箱\":\"Email\",\"抬头选择\":\"Head Selection\",\"默认\":\"Default\",\"普通\":\"Ordinary \",\"专用\":\"Dedicated \",\"您还没有添加发票信息哟\":\"You have not added invoice information\",\"添加新的抬头\":\"Add New Header\",\"不开发票\":\"No invoice\",\"抽奖\":\"Lottery\",\"全选\":\"Select All\",\"属性\":\"Attributes\",\"请填写具体地址\":\"Please fill in the specific address\",\"省\":\"Province\",\"市\":\"City\",\"区\":\"Area\",\"添加成功\":\"Add successfully\",\"您已拒绝导入微信地址权限\":\"You have denied permission to import WeChat addresses\",\"是否进入权限管理,调整授权?\":\"Do you enter the permission management and adjust the authorization?\",\"已取消\":\"Cancelled\",\"添加失败\":\"Add failed\",\"请填写收货人姓名\":\"Please fill in the consignee's name\",\"请选择所在地区\":\"Please select your region\",\"请填写详细地址\":\"Please fill in the detailed address\",\"星\":\"Star\",\"商品满足你的期待么?说说你的想法,分享给想买的他们吧\":\"Does the product meet your expectations? Tell us what you think and share it with those who want to buy it\",\"立即评价\":\"Rate Now\",\"商品质量\":\"Product quality\",\"服务态度\":\"Service attitude\",\"缺少参数\":\"Missing parameters\",\"请填写你对宝贝的心得\":\"Please fill in your opinion on the product\",\"正在发布评论\":\"Posting comment\",\"感谢您的评价\":\"Thanks for your review\",\"评价完成\":\"Review completed\",\"恭喜您\":\"Congratulations\",\"获得\":\"Get\",\"机会\":\"Chance\",\"领取成功\":\"Received successfully\",\"评分\":\"Score\",\"全部\":\"ALL\",\"好评\":\"Praise\",\"中评\":\"Average\",\"差评\":\"Bad\",\"加载更多\":\"Loading more\",\"千米距离\":\"Distance\",\"搜索商品名称\":\"Search Product\",\"价格\":\"Price\",\"销量\":\"Sold\",\"新品\":\"New\",\"已全部加载\":\"All loaded\",\"缺少订单号\":\"Missing order ID\",\"退货件数\":\"Refunded Number\",\"退款类型\":\"Refund Type\",\"退款原因\":\"Refund Reason\",\"备注说明\":\"Remark\",\"填写备注信息,100字以内\":\"Remarks within 100 words\",\"仅退款\":\"Only refund\",\"退货并退款\":\"Return and refund\",\"申请成功\":\"Apply Successful\",\"请先选择退货商品\":\"Please select the return item first\",\"搜索历史\":\"Search history\",\"热门搜索\":\"Hot Search\",\"请输入要搜索的商品\":\"Please enter the product you want to search\",\"正在搜索中\":\"Searching\",\"中奖记录\":\"Winning record\",\"我的奖品\":\"My prize\",\"活动规则\":\"Activity rule\",\"昵称\":\"Nick name\",\"序号\":\"Serial\",\"奖品名称\":\"Prize name\",\"获奖时间\":\"Winning time\",\"商家暂未上架活动哦\":\"Merchant has not listed the event yet\",\"获取抽奖信息\":\"Get Sweepstakes Information\",\"奖品类型\":\"Prize Type\",\"立即兑换\":\"Redeem now\",\"兑换时间\":\"Exchange time\",\"暂无中奖记录\":\"No winning record\",\"积分\":\"Point\",\"余额\":\"Balance\",\"红包\":\"Cash\",\"设置收货地址\":\"Set shipping address\",\"暂无门店信息\":\"No store information\",\"剩余积分\":\"Remaining points \",\"当前积分\":\"Current points \",\"开具发票\":\"Invoice\",\"请填写\":\"Please fill \",\"配送运费\":\"Shipping fee\",\"会员商品优惠\":\"Product Offers\",\"会员运费优惠\":\"Shipping Offers\",\"合计\":\"Total\",\"使用微信快捷支付\":\"WeChat quick payment\",\"使用支付宝支付\":\"Pay with Alipay\",\"线下支付\":\"Offline payments\",\"使用线下付款\":\"Use offline payment\",\"好友代付\":\"Friend pays\",\"找微信好友支付\":\"Find friends to pay\",\"立即使用\":\"Use\",\"请选择要购买的商品\":\"Please select an item to purchase\",\"发票\":\"Invoice\",\"不使用\":\"Don't use\",\"订单创建成功\":\"Order Created successfully\",\"请选择支付方式\":\"Please select the payment method\",\"请选择收货地址\":\"Please select delivery address\",\"请填写联系人或联系人电话\":\"Please fill in the contact person or contact phone number\",\"暂无门店,请选择其他方式\":\"No store currently, please choose another way\",\"请输入\":\"Please enter \",\"请输入正确的\":\"Please enter the correct \",\"请上传\":\"Please upload \",\"订单支付中\":\"Paying\",\"请按以上退货信息将商品退回\":\"Please return the item with information\",\"请联系管理员获取退货地址\":\"Please contact the administrator for the return address\",\"待核销\":\"Written off\",\"核销信息\":\"Write-off info\",\"营业时间\":\"Business hours\",\"每日\":\"Daily\",\"使用说明\":\"Use Instructions\",\"可将二维码出示给店员扫描或提供数字核销码\":\"The QR code can be presented to the clerk to scan or provide a digital verification code\",\"可将二维码出示给配送员进行核销\":\"The QR code can be presented to the courier for verification\",\"查看位置\":\"View location\",\"拒绝原因\":\"Denial Reason\",\"联系客服\":\"Contact\",\"商家备注\":\"Merchant Notes\",\"收货人\":\"Receiver\",\"收货地址\":\"Ship address\",\"配送人姓名\":\"Ship name\",\"拨打\":\"Call\",\"虚拟发货\":\"Virtual Ship\",\"已发货,请注意查收\":\"Shipped, please check\",\"虚拟备注\":\"Virtual Notes\",\"总代付\":\"Total Amount\",\"申请开票\":\"Apply Invoice\",\"查看发票\":\"View Invoice\",\"取消订单\":\"Cancel\",\"立即付款\":\"Pay\",\"批量退款\":\"Bulk refund\",\"查看拼团\":\"View group\",\"再次购买\":\"Buy again\",\"取消申请\":\"Cancel Apply\",\"填写退货信息\":\"Return info\",\"查看退货物流\":\"Logistic\",\"您确认放弃此次申请吗\":\"Are you sure you want to abandon this application\",\"操作成功\":\"Successful operation\",\"订单信息不存在\":\"Order information does not exist\",\"为保障权益,请收到货确认无误后,再确认收货\":\"In order to protect the rights and interests, please confirm the receipt of the goods after confirming that the goods are correct.\",\"删除订单\":\"Delete order\",\"确定删除该订单\":\"Confirm delete order\",\"删除成功\":\"Successfully deleted\",\"确认取消该订单\":\"Confirm cancel order\",\"订单信息\":\"Order info\",\"消费订单\":\"Order\",\"总消费\":\"Total Amount\",\"预售\":\"Pre-sale\",\"线下付款,未支付\":\"Offline unpaid\",\"未核销\":\"Not written off\",\"件商品,总金额\":\" items, total amount \",\"查看详情\":\"View\",\"暂无订单\":\"No order yet\",\"缺少订单号无法取消订单\":\"Can't cancel order without order number\",\"订单支付成功\":\"Order paid successfully\",\"订单支付失败\":\"Order paid failed\",\"暂未支付\":\"Not yet paid\",\"失败原因\":\"failed Reason\",\"重新购买\":\"Repurchase\",\"重新支付\":\"Pay again\",\"赠送优惠券\":\"Give away coupons\",\"有效期\":\"Validity\",\"缺少参数无法查看订单支付状态\":\"Missing parameters cannot view order payment status\",\"最多可上传3张\":\"Up to 3 uploads\",\"请选择产品\":\"Please select a product\",\"该产品没有更多库存了\":\"There is no more stock for this product\",\"优品推荐\":\"Best Recommendation\",\"暂无产品\":\"No products yet\",\"重新选择\":\"Reselect\",\"请选择数量\":\"Please select quantity\",\"砍价专区·BARGAINING\":\"BARGAINING\",\"立即砍价\":\"Cut Now\",\"拼团活动\":\"Group\",\"人拼团成功.\":\"People succeeded\",\"人参团\":\" Ginseng group\",\"拼团价\":\"Group price\",\"已过期\":\"Expired\",\"关注\":\"Follow\",\"推荐好货\":\"Recommend Goods\",\"暂无商品\":\"No products yet\",\"限时秒杀\":\"Seckill\",\"抢\":\"Ro\",\"广告位\":\"ADV space\",\"精彩内容\":\"Highlights\",\"砍价模块,暂无数据\":\"Bargain module, no data yet\",\"砍价活动\":\"Bargain\",\"呼朋唤友来砍价\":\"Call friends Bargain\",\"拼团模块,暂无数据\":\"Group module, no data yet\",\"享超值开团价\":\"Enjoy value-for-money group rates\",\"优惠券,暂无数据\":\"Coupon, no data temporarily\",\"领取今日好券\":\"Get today's good coupon\",\"可用\":\" Used\",\"领取\":\"Claim\",\"客服\":\"Service\",\"商品列表,暂无数据\":\"No data temporarily\",\"搜索商品\":\"Search Product\",\"暂无图片,请上传图片\":\"No pictures, please upload\",\"首发新品,暂无数据\":\"First new product, no data yet\",\"多个优质商品最新上架\":\"The latest high-quality goods on the shelves\",\"暂无新闻,请上传新闻\":\"No news, please upload the news\",\"热度 TOP\":\"Heat TOP\",\"排行榜、暂无数据\":\"Leaderboard, no data temporarily\",\"促销单品,暂无数据\":\"Promotional items, no data temporarily\",\"库存商品优惠促销活动\":\"Promotional activities for goods in stock\",\"精品推荐,暂无数据\":\"Boutique recommendation, no data yet\",\"上百种商品分类任您选择\":\"Hundreds of product categories for you to choose from\",\"秒杀模块,暂无数据\":\"Seckill module, no data temporarily\",\"场\":\"Site\",\"暂无数据,请设置\":\"No data, please set\",\"暂无数据,请先添加分类\":\"No data, please add classification first\",\"暂无标题\":\"No title temporarily\",\"诚意推荐品质商品\":\"Recommend quality goods in good faith\",\"点击“立即关注”即可关注公众号\":\"Click“follow now”to follow official account\",\"立即关注\":\"Follow now\",\"添加到我的小程序, 微信首页下拉即可访问商城。\":\"Add it to my applet, and you can access the mall by pulling down the wechat homepage\",\"点击\":\"Click\",\"服务协议与隐私政策\":\"Service agreement and privacy policy\",\"请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。\":\"Please be sure to carefully read and fully understand the terms of the service agreement and privacy policy, including but not limited to: in order to provide you with instant messaging, content sharing and other services, we need to collect your device information, operation logs and other personal information. You can view, change, delete personal information and manage your authorization in Settings\",\"你可以阅读\":\"You can read\",\"《服务协议与隐私政策》\":\"《Service agreement and privacy policy》\",\"了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。\":\"Learn more. If you agree, please click I agree to start accepting our services\",\"我同意\":\"I agree\",\"残忍拒绝\":\"Cruel rejection\",\"下拉加载更多\":\"Pull down load more\",\"网络连接断开\":\"Network connection disconnected\",\"请检查情况:\":\"Please check the condition:\",\"在设置中是否已开启网络权限\":\"Whether network permission is enabled in settings\",\"当前是否处于弱网环境\":\"Currently in a weak network environment\",\"版本是否过低,升级试试吧\":\"Whether the version is too low, try upgrading\",\"重新连接\":\"Reconnect\",\"加载中\":\"Loading\",\"没有更多内容啦~\":\"No more content~\",\"100%正品保证\":\"100% genuine\",\"所有商品精挑细选\":\"Be very choosy\",\"售后无忧\":\"Worry free after Sold\",\"管理\":\"Manage\",\"购物数量\":\"Shopping quantity\",\"请重新选择商品规格\":\"Please reselect the product specification\",\"重选\":\"Reselection\",\"失效商品\":\"Invalid goods\",\"失效\":\"Failure\",\"该商品已失效\":\"The commodity has expired\",\"立即下单\":\"Order now\",\"我也是有底线的\":\"I also have a bottom line\",\"产品库存不足,请选择其它\":\"Insufficient product inventory, please select other\",\"添加购物车成功\":\"Successfully added shopping cart\",\"清除成功\":\"Cleanup succeeded\",\"暂无兑换记录~\":\"No exchange record~\",\"大家都在换\":\"Everyone is changing\",\"人兑换\":\" Person exchange\",\"轻松赚积分\":\"Earn points easily\",\"购买商品\":\"Purchase goods\",\"购买商品可获得积分奖励\":\"Points reward for purchasing goods\",\"去完成\":\"Go\",\"每日签到活动\":\"Daily check-in activities\",\"每日签到可获得积分奖励\":\"Daily check-in can get points reward\",\"九宫格抽奖活动\":\"Jiugongge lottery\",\"幸运抽奖可获得积分奖励\":\"Lucky draw can get points reward\",\"我的积分\":\"My points\",\"每日签到\":\"Daily sign in\",\"积分抽奖\":\"Points lottery\",\"兑换记录\":\"Exchange record\",\"已兑换\":\"Redeemed\",\"无法兑换\":\"Cannot redeem\",\"[默认]\":\"[Default]\",\"可用积分\":\"Available points\",\"快递费用\":\"Express fee\",\"免运费\":\"Freight free\",\"备注信息\":\"Remarks\",\"请添加备注(150字以内)\":\"Please add remarks (within 150 words)\",\"使用线上支付宝支付\":\"Pay with online Alipay\",\"可用余额:\":\"Balance:\",\"选择线下付款方式\":\"Select offline payment method\",\"正在加载…\":\"Loading…\",\"可用积分不足!\":\"Insufficient points available!\",\"订单状态\":\"Order status\",\"支付积分\":\"Pay points\",\"备注\":\"Remarks\",\"配送核销码\":\"Delivery verification code\",\"当前可用余额:\":\"Current available balance:\",\"正在加载\":\"Loading\",\"缺少经纬度信息无法查看地图!\":\"The map cannot be viewed without longitude and latitude information!\",\"商品兑换成功\":\"Successfully redeemed\",\"兑换方式\":\"Exchange method\",\"积分兑换\":\"Point exchange\",\"兑换积分\":\"Redeem points\",\"取消兑换\":\"Cancel exchange\",\"缺少参数无法查看订单兑换状态\":\"Order exchange status cannot be viewed without parameters\",\"用户离开了\":\"The user left\",\"兑换成功\":\"Successfully redeemed\",\"物流公司\":\"Logistics company\",\"复制单号\":\"Copy doc no\",\"设为默认\":\"Set as default\",\"添加新地址\":\"Add new address\",\"导入微信地址\":\"Import wechat address\",\"取消选择\":\"Deselect\",\"您设置的默认地址不存在!\":\"The default address you set does not exist!\",\"设置成功\":\"Setting succeeded\",\"您删除的地址不存在!\":\"The address you deleted does not exist!\",\"获取头像\":\"Get Avatar\",\"请点击授权\":\"Please click authorize\",\"绑定手机号\":\"Bind mobile number\",\"永久\":\"Permanent\",\"会员到期\":\"Membership expiration\",\"未开通会员\":\"Not open member\",\"查看会员权益\":\"View membership benefits\",\"立即续费\":\"Renew\",\"立即激活\":\"Activation\",\"会员可享多项权益\":\"Enjoy multiple benefits\",\"订单中心\":\"My order\",\"我的服务\":\"My service\",\"隐私协议\":\"Privacy\",\"商家管理\":\"Business management\",\"更新用户信息成功\":\"Successfully updated user information\",\"客服接待\":\"Reception\",\"点击复制网址去浏览器中打开\":\"Click Copy URL to open in the browser\",\"点击复制\":\"Click Copy\",\"完成支付\":\"Complete payment\",\"点击右上角\":\"Click the upper right corner\",\"选择 在浏览器 打开,去支付宝支付\":\"Select to open in the browser and pay through Alipay\",\"支付订单不存在,页面将在2秒后自动关闭!\":\"The payment order does not exist, and the page will close automatically in 2 seconds! \",\"正在支付中\":\"Paying\",\"支付订单不存在,页面将在2秒后自动关闭\":\"The payment order does not exist, and the page will close automatically in 2 seconds\",\"复制失败\":\"Replication failed\",\"您目前的排名\":\"Your current ranking\",\"您目前暂无排名\":\"You currently ranking\",\"暂无排名~\":\"No ranking ~\",\"输入手机号\":\"Enter mobile number\",\"输入验证码\":\"Enter verification code\",\"立即登录\":\"Log in now\",\"请填写手机号码\":\"Please fill in your mobile number\",\"请填写验证码\":\"Please fill in the verification code\",\"请输入正确的验证码\":\"Please enter the correct verification code\",\"正在登录中\":\"Logging in\",\"登录成功\":\"Login succeeded\",\"获取授权\":\"Obtaining authorization\",\"获取微信的手机号授权\":\"Obtain wechat mobile number authorization\",\"获取微信手机号\":\"Get wechat mobile numbe\",\"输入手机号码\":\"Enter mobile number\",\"填写登录密码\":\"Fill in login password\",\"登录\":\"Login\",\"快速登录\":\"Quick login\",\"账号登录\":\"Account login\",\"其他方式登录\":\"Login by other methods\",\"登录中\":\"Logging in\",\"获取用户信息失败\":\"Failed to obtain user information\",\"请绑定手机号后,继续操作\":\"Please bind your mobile number and continue operation\",\"错误信息\":\"Error information\",\"用户点击确定\":\"User click OK\",\"用户点击取消\":\"User click Cancel\",\"登录失败\":\"Login failure\",\"请勿重复点击\":\"Do not click repeatedly\",\"请填写密码\":\"Please fill in the password\",\"您输入的密码过于简单\":\"The password you entered is too simple\",\"请填写账号\":\"Please fill in the account number\",\"请输入正确的账号\":\"Please enter the correct account number\",\"[图片]\":\"[Picture]\",\"[语音]\":\"[Voice]\",\"[商品]\":\"[Product]\",\"[订单]\":\"[Order]\",\"亲、暂无消息记录哟!\":\"Dear, no message record yet!\",\"站内消息\":\"In station message\",\"客服消息\":\"Customer service message\",\"通知于\":\"Notified on \",\"获取详情中\":\"Get details\",\"代付订单创建成功,发给好友帮你付款吧~\":\"Payment order created successfully, send it to your friend to help you pay ~\",\"帮我付一下这件商品了,谢谢~\":\"Help me pay for this commodity, thank you ~\",\"已经有人替我代付,谢谢啦~\":\"Someone has paid for me, thank you ~\",\"谢谢你帮我支付,么么哒~\":\"Thank you for helping me pay, Moda ~\",\"我已为你代付成功,商家正在努力发货中~\":\"I have successfully paid for you, and the merchant is trying to deliver ~\",\"好友代付成功,商家正在努力发货中~\":\"Friend payment succeeded, and the merchant is trying to deliver ~\",\"发送给微信好友\":\"Send to wechat friends\",\"查看订单详情\":\"View order details\",\"订单已支付\":\"Order paid\",\"如果订单申请退款,已支付金额将原路退还给您\":\"If the order applies for a refund, the paid amount will be returned to you in the same way\",\"代付成功\":\"Payment succeeded\",\"谢谢你为我付款,还可以再去看看其他商品哟~\":\"Thank you for paying for me, and you can go to see other goods ~\",\"该订单暂未支付\":\"The order has not been paid yet\",\"人\":\" Person\",\"推广人数\":\"Number of promoters\",\"一级\":\"Level 1\",\"二级\":\"Level 2\",\"点击搜索会员名称\":\"Click to search member name\",\"团队排序\":\"Team sorting\",\"金额排序\":\"Amount sorting\",\"订单排序\":\"Order sorting\",\"单\":\" Orders\",\"加入时间\":\"Joining time\",\"累积推广订单\":\"Order count\",\"本月累计推广订单\":\"Month Orders\",\"返佣\":\"Rebate\",\"暂未返佣\":\"Not Rebate\",\"返佣时间\":\"Rebate time\",\"单号\":\"Order number\",\"暂无推广订单~\":\"No promotion order ~\",\"推广订单列表\":\"Promotion order list\",\"找回密码\":\"Retrieve password\",\"填写您的新密码\":\"Fill in your new password\",\"加载失败\":\"Load failure\",\"点击授权登录您的客服工作台\":\"Click authorize to log in to your customer service workbench\",\"授权登录\":\"Authorized login\",\"没有登录的code,请重新扫码\":\"Code without login, please scan the code again\",\"员工人数\":\"Number of employees\",\"邀请\":\"Invitation\",\"分佣比例\":\"Scale\",\"修改分佣比例\":\"Modify proportion\",\"请输入百分比\":\"Please enter percentage\",\"删除员工\":\"Delete employee\",\"确定删除该员工?\":\"Are you sure to delete this employee?\",\"请输入比例\":\"Please enter a scale\",\"分类\":\"Class\",\"我的\":\"Mine\",\"姓名\":\"Name\",\"请输入联系电话\":\"Please enter the contact number\",\"所在地区\":\"Location\",\"详细地址\":\"Address\",\"设置为默认地址\":\"Set as default address\",\"立即保存\":\"Save now\",\"浙江省\":\"Zhejiang\",\"杭州市\":\"Hangzhou\",\"滨江区\":\"Binjiang District\",\"广东省\":\"Guangdong Province\",\"广州市\":\"Guangzhou\",\"番禺区\":\"Panyu\",\"修改地址\":\"Modify address\",\"添加地址\":\"Add address\",\"已取消!\":\"Canceled!\",\"请填写联系电话\":\"Please fill in the contact number\",\"保存中\":\"Saving\",\"修改成功\":\"Modification succeeded\",\"消费\":\"Consumption\",\"充值\":\"Recharge\",\"暂无账单的记录哦~\":\"No record of bill temporarily~\",\"点击【立即注销】即代表您已经同意《用户注销协议》\":\"Clicking [immediate logout] means that you have agreed to the user logout agreement\",\"立即注销\":\"Log off now\",\"是否确认注销\":\"Confirm logout\",\"注销后无法恢复,请谨慎操作\":\"Cannot recover after logout, please be careful\",\"注销\":\"Logout\",\"持卡人\":\"Cardholder\",\"请输入持卡人姓名\":\"Enter cardholder name\",\"卡号\":\"Card number\",\"请填写卡号\":\"Please fill in the card number\",\"银行\":\"Bank\",\"提现\":\"Withdrawal\",\"最低提现金额\":\"Minimum withdrawal amount\",\"当前可提现金额\":\"Current withdrawable amount\",\"冻结佣金\":\"Frozen Commission\",\"说明: 每笔佣金的冻结期为\":\"Note: the freezing period of each commission is\",\"天,到期后可提现\":\"Days, withdrawable upon expiration\",\"账号\":\"Account\",\"请填写您的微信账号\":\"Fill in your wechat account\",\"收款码\":\"Collection code\",\"请填写您的支付宝账号\":\"Fill in your Alipay account number\",\"请选择银行\":\"Please select a bank\",\"银行卡\":\"Bank card\",\"微信\":\"Wechat\",\"支付宝\":\"Alipay\",\"请填写持卡人姓名\":\"Please fill in the name of the cardholder \",\"请填写微信号\":\"Please fill in the wechat\",\"请填写提现金额\":\"Please fill in the withdrawal amount\",\"提现金额不能低于\":\"Withdrawal amount cannot be less than\",\"未使用\":\"Not used\",\"已使用/过期\":\"Used/expired\",\"通用劵\":\"General securities\",\"一级分佣上浮\":\"One level up\",\"二级分佣上浮\":\"Secondary floating\",\"快速升级技巧\":\"Quick upgrade skills\",\"未完成\":\"Incomplete\",\"已领完\":\"Collected\",\"当前共\":\"Current total\",\"取关\":\"Off \",\"请选择商品\":\"Please select a product\",\"头像\":\"Avatar\",\"手机号码\":\"Mobile number\",\"点击绑定手机号\":\"Click to bind\",\"ID号\":\"ID number\",\"权限设置\":\"Permission\",\"点击管理\":\"Management\",\"密码\":\"Password\",\"点击修改密码\":\"Click Modify\",\"更换手机号码\":\"Change number\",\"点击更换手机号码\":\"Click to\",\"缓存大小\":\"Cache size\",\"当前版本\":\"Current version\",\"地址管理\":\"Address\",\"发票管理\":\"Invoice\",\"账号注销\":\"Cancellation\",\"注销后无法恢复\":\"Cannot recover\",\"累计积分\":\"Accumulated points\",\"累计消费\":\"Consumption\",\"冻结积分\":\"Freezing points\",\"积分规则\":\"Integral rule\",\"提示:积分数值的高低会直接影响您的会员等级\":\"Tip: the value your membership level\",\"提示:你有\":\"Tip: you have\",\"积分在\":\"Integral in\",\"过期,请尽快使用\":\"Expired, please use it as soon as possible\",\"暂无积分记录哦~\":\"No score record temporarily~\",\"赚积分\":\"Earn points\",\"分值明细\":\"Score details\",\"分值提升\":\"Score increase\",\"抬头类型\":\"Header type\",\"增值税电子专用发票\":\"VAT electronic special invoice\",\"增值税电子普通发票\":\"Electronic ordinary VAT invoice\",\"需要开具发票的姓名\":\"Name to be invoiced\",\"需要开具发票的企业名称\":\"Name of enterprise to issue invoice\",\"税号\":\"Tax number\",\"纳税人识别号\":\"Taxpayer identification number\",\"手机号\":\"Mobile number\",\"您的手机号\":\"Your mobile number\",\"邮箱\":\"Mailbox\",\"您的联系邮箱\":\"Your contact mailbox\",\"开户银行\":\"Deposit bank\",\"您的开户银行\":\"Your deposit bank\",\"银行账号\":\"Bank account number\",\"您的银行账号\":\"Your bank account number\",\"企业地址\":\"Enterprise address\",\"您所在的企业地址\":\"Your business address\",\"企业电话\":\"Enterprise telephone\",\"您的企业电话\":\"Your business phone\",\"设置为默认抬头\":\"Set as default header\",\"保存\":\"Save\",\"发票类型选择\":\"Invoice type selection\",\"纸质发票开出后将以邮寄形式交付\":\"After the paper invoice is issued, it will be delivered by mail\",\"请输入需要开具发票的姓名\":\"Please enter the name to be invoiced\",\"请输入您的手机号\":\"Please enter your mobile number\",\"请正确输入您的手机号\":\"Please input your mobile number correctly\",\"请输入您的联系邮箱\":\"Please enter your contact email\",\"请正确输入您的联系邮箱\":\"Please input your contact email correctly\",\"请输入需要开具发票的企业名称\":\"Please enter the name of the enterprise to issue invoice\",\"请输入纳税人识别号\":\"Please enter taxpayer identification number\",\"请正确输入纳税人识别号\":\"Please input the taxpayer identification number correctly\",\"请输入您的开户银行\":\"Please enter your deposit bank\",\"请输入您的银行账号\":\"Please enter your bank account number\",\"请正确输入您的银行账号\":\"Please enter your bank account number correctly\",\"请输入您所在的企业地址\":\"Please enter your business address\",\"请输入您的企业电话\":\"Please enter your business phone\",\"发票记录\":\"Invoice record\",\"抬头管理\":\"Header management\",\"申请时间\":\"Appli time\",\"没有发票信息哟~\":\"No invoice information ~\",\"个人普通发票\":\"Personal ordinary invoice\",\"企业普通发票\":\"Enterprise ordinary invoice\",\"企业专用发票\":\"Enterprise special invoice\",\"添加新发票\":\"Add new invoice\",\"删除该发票?\":\"Delete this invoice?\",\"发票编号\":\"Invoice number\",\"发票备注\":\"Invoice remarks\",\"快递号\":\"Express number\",\"总资产(元)\":\"Total assets ($)\",\"累计充值(元)\":\"Co recharge ($)\",\"累计消费(元)\":\"Co flower ($)\",\"账单记录\":\"Bill record\",\"消费记录\":\"Record\",\"充值记录\":\"Recharge\",\"积分中心\":\"Integral\",\"签到领积分\":\"Sign in\",\"赚积分抵现金\":\"Earn points\",\"领取优惠券\":\"Coupons\",\"满减享优惠\":\"Full discount\",\"最新拼团活动\":\"Latest group activity\",\"最新的优惠商品上架拼团\":\"The latest preferential goods on the shelf\",\"立即参与\":\"Participate\",\"当前限时秒杀\":\"Current time limit second kill\",\"最新商品秒杀进行中\":\"Latest commodity spike in progress\",\"我的余额\":\"Balance\",\"赠送\":\"Gift\",\"其他\":\"Other\",\"注意事项\":\"Precautions\",\"冻结佣金为\":\"Frozen Commission is\",\"立即转入\":\"Immediate transfer in\",\"立即充值\":\"Recharge immediately\",\"请输入金额\":\"Please enter amount\",\"转入余额\":\"Transfer in balance\",\"转入余额后无法再次转出,确认是否转入余额\":\"Cannot transfer out again after transferring in balance, confirm whether to transfer in balance\",\"转入成功\":\"Transfer in succeeded\",\"正在支付\":\"Paying\",\"充值金额必须为数字\":\"The recharge amount must be a number\",\"充值金额不能为0\":\"Recharge amount cannot be 0\",\"填写手机号码\":\"Fill in mobile phone number\",\"是否绑定账号\":\"Bind account\",\"绑定\":\"Binding\",\"您已取消绑定!\":\"You have unbound!\",\"当前手机号\":\"Current mobile number\",\"设置新密码\":\"Set new password\",\"确认新密码\":\"Confirm new password\",\"手机号码不存在,无法发送验证码!\":\"Mobile phone number does not exist, unable to send verification code!\",\"请输入新密码\":\"Please enter a new password\",\"两次输入的密码不一致!\":\"The two passwords you entered are inconsistent!\",\"请输入验证码\":\"Please enter a verification code\",\"暂无退款订单~\":\"No refund order ~\",\"缺少订单号无法查看订单详情\":\"The order number is missing, and the order details cannot be viewed\",\"明细\":\"Detas\",\"第七天\":\"Day 7\",\"第7天\":\"Day 7\",\"奖励\":\"Reward\",\"已签到\":\"Checked in\",\"立即签到\":\"Sign in now\",\"已累计签到\":\"Cumulative check-in\",\"据说连续签到第\":\"The second consecutive sign in\",\"天可获得超额积分,一定要坚持签到哦~~~\":\"If you can get excess points every day, you must insist on signing in~~~\",\"签到成功\":\"Check in succeeded\",\"好的\":\"OK\",\"您今日已签到!\":\"You have signed in today! \",\"暂无签到记录~\":\"No sign in record~\",\"保存海报\":\"Save POSTER\",\"长按保存图片\":\"Long press to save picture\",\"分销海报\":\"Distribution POSTER\",\"小程序二维码需要发布正式版后才能获取到\":\"Applet QR code can only be obtained after publishing the official version\",\"获取中\":\"Getting \",\"暂无数据~\":\"No data temporarily ~\",\"提现记录\":\"Withdrawal\",\"提现总额\":\"Total withdrawal\",\"佣金记录\":\"Commission record\",\"佣金明细\":\"Commission details\",\"分销等级\":\"Distribution level \",\"昨日收益\":\"Yesterday's earnings\",\"累积已提\":\"Cumulative withdrawn\",\"代理商申请\":\"Agent application\",\"立即提现\":\"Withdrawal\",\"推广名片\":\"Business card\",\"推广人统计\":\"Promoter statistics\",\"推广人订单\":\"promoter order\",\"推广订单\":\"Promotion order\",\"事业部\":\"Business division\",\"代理商\":\"Agent\",\"推广人排行\":\"Promoter ranking\",\"佣金排行\":\"Commission ranking\",\"员工列表\":\"Employee list\",\"您目前暂无推广权限\":\"You currently have no promotion permission\",\"商城购物可享\":\"Shopping in the mall\",\"折\":\"Discount\",\"当前等级\":\"Current level\",\"未达成\":\"Not reached\",\"今日成长值\":\"Today's growth value\",\"点\":\"Point\",\"我的成长值记录\":\"My growth value record\",\"暂未解锁该等级\":\"This level has not been unlocked yet\",\"点,需达到\":\"Point, need to reach\",\"已解锁更高等级\":\"Unlocked higher level\",\"我的成长特权\":\"My growth privilege\",\"购物折扣\":\"Discount\",\"专属徽章\":\"Exclusive badge\",\"经验累积\":\"Experience accumulation\",\"尊享客服\":\"Exclusive service\",\"签到\":\"Check in\",\"可获得\":\"Available\",\"点经验\":\"Point experience\",\"每日签到可获得经验值,已签到\":\"Daily sign in can get experience value, signed in\",\"去签到\":\"Check in\",\"点经验/元\":\"Point experience/$\",\"购买商品可获得对应的经验值\":\"Corresponding experience value can be obtained by purchasing goods\",\"去购买\":\"Go buy\",\"点经验/人\":\"Point experience/person\",\"邀请好友注册商城可获得经验值\":\"Invite friends to register in the mall to get experience value\",\"去邀请\":\"Invite\",\"积分数\":\"Product fraction\",\"消费金额\":\"Consumption amount\",\"暂无经验记录\":\"No experience record\",\"账户登录\":\"Account login\",\"微信登录\":\"Wechat login\",\"手机号登录\":\"Mobile login\",\"账户充值\":\"Recharge\",\"佣金转入\":\"Commission\",\"周榜\":\"Weekly list\",\"月榜\":\"Monthly list\",\"周排行\":\"Weekly ranking\",\"月排行\":\"Monthly ranking\",\"语言切换\":\"Language\",\"点击前往\":\"Click to go\",\"查看全部\":\"View all\",\"查看订单\":\"View order\",\"无法获取图片信息\":\"Unable to get picture information\",\"长按或扫描查看\":\"Long press or scan view\",\"点解锁\":\"Point unlock\",\"确认修改\":\"Confirm\",\"保存修改\":\"Save\",\"退出登录\":\"Log out\",\"付费会员\":\"SVIP\",\"地址信息\":\"Address\",\"我的推广\":\"Extension\",\"砍价记录\":\"Bargain\",\"我的等级\":\"My level\",\"兑换\":\"GO\",\"申请中\":\"Application\",\"统计管理\":\"Statistics\",\"退款\":\"Refund\",\"未发货\":\"Not issued\",\"当前为最新版本\":\"Currently the latest version\",\"清除缓存\":\"Clear cache\",\"确定清楚本地缓存数据吗\":\"Are you sure you are clear about the local cache data\",\"缓存清理完成\":\"Cache cleaning completed\",\"切换的账号不存在\":\"The switched account does not exist\",\"正在切换中\":\"Switching\",\"确认退出登录\":\"Confirm logout\",\"我知道了\":\"I see\",\"系统错误\":\"System error\",\"请求失败\":\"Request failed\",\"邀请您加入\":\"Invite you to join \",\"图片上传中\":\"Uploading\",\"上传图片失败\":\"Failed to upload image\",\"访问位置被拒绝\":\"Access location denied\",\"系统定位已关闭\":\"System positioning is turned off\",\"需要定位权限\":\"Location permission required\",\"订单核销\":\"Write-off\",\"当前可转入佣金为\":\"The current transferable commission is\",\"浏览记录\":\"Browsing\",\"签到奖励\":\"Check-in Reward\",\"请输入内容\":\"Please enter content\",\"单次限购\":\"Single purchase restriction\",\"永久限购\":\"Permanent purchase restriction\",\"《用户协议》\":\"《User agreement》\",\"《隐私协议》\":\"《Privacy agreement》\",\"与\":\"And\",\"请先阅读并同意协议\":\"Please read and agree to the agreement first\",\"绑定下级通知\":\"Bind child notifications\",\"购买成功通知\":\"Purchase success notification\",\"确认收货通知\":\"Confirmation of receipt notice\",\"改价通知\":\"Price change notice\",\"退款成功通知\":\"Refund success notification\",\"充值成功通知\":\"Recharge success notification\",\"积分到账通知\":\"Notice of points arrival\",\"佣金到账通知\":\"Notice of commission arrival\",\"砍价成功通知\":\"Price negotiation success notice\",\"拼团成功通知\":\"Notification of success of the tour group\",\"拼团失败通知\":\"Notification of group failure\",\"开团成功通知\":\"Notification of successful group opening\",\"提现成功通知\":\"Withdrawal success notice\",\"提现失败通知\":\"Withdrawal failure notice\",\"充值退款通知\":\"Recharge refund notice\",\"退款申请拒绝通知\":\"Refund application rejection notice\",\"您有新的退款待处理\":\"You have a new refund pending processing\",\"您有新的订单待处理\":\"You have a new order to be processed\",\"发货通知\":\"Delivery notice\",\"取消拼团通知\":\"Notice of cancellation of group tour\",\"参团成功通知\":\"Notification of successful participation\",\"你有个新的提现申请待处理\":\"You have a new withdrawal application to be processed\",\"你有个新的用户收货待处理\":\"You have a new user receiving goods to be processed\",\"提醒付款通知\":\"Reminder payment notice\",\"短信验证码\":\"SMS verification code\",\"到店自提\":\"Self withdrawal\",\"快递配送\":\"Express\"}");
  8389. /***/ }),
  8390. /***/ 22:
  8391. /*!******************************************************!*\
  8392. !*** D:/data/zhonghong/saber-weixin/lang/zh_cn.json ***!
  8393. \******************************************************/
  8394. /*! exports provided: 选择地址, 选择其它地址, 已选商品, 清空, ¥, 已售罄, 已下架, 删除, 商品券, 品类券, 通用券, 优惠券, 满, 元可用, 无门槛券, 领取后, 天内可用, 已领取, 立即领取, 购物满, 减, 不限时, 秒杀, 砍价, 拼团, 已售, 立即购买, 加入购物车, 选规格, 跳过, 立即体验, 首页, 搜索, 购物车, 我的收藏, 个人中心, 券, 正在加载中, 上拉加载更多, 代付金额, 共, 件商品, 订单包裹, 申请退款中, 已退款, 已完成, 件退款中, 不支持配送, 不支持自提, 已评价, 评价, 申请退款, 查看物流, 确认收货, 选择付款方式, 支付, 去付款, 请选择要支付的订单, 余额不足, 支付中, 缺少支付参数, 取消支付, 支付成功, 支付失败, 库存, 限量, 数量, 我要参团, 确定, 热门推荐, 最高返佣, 推广享佣金, 立即分享, 发现新版本, 立即升级, 下载进度, 店小二, 暂无记录, 正在下载海报,请稍后再试, 海报二维码生成失败, 倒计时, 天, 时, 分, 秒, 砍价成功, 活动已结束, 已砍至, 活动进行中, 取消活动, 继续砍价, 暂无砍价记录, 人正在参与, 最低, 参与砍价, 砍价列表, 人查看, 人分享, 人参与, 邀请您帮忙砍价, 查看商品, 当前, 已砍, 还剩, 立即参与砍价, 商品暂无库存, 邀请好友帮砍价, 已有, 位好友成功砍价, 帮好友砍一刀, 好友已砍价成功, 我也要参与, 已成功帮助好友砍价, 恭喜您砍价成功,快去支付, 立即支付, 抢更多商品, 砍价帮, 砍掉, 更多, 关闭, 点击加载更多, 商品详情, 砍价规则, 您已砍掉, 元,听说分享次数越多砍价成功的机会越大哦, 成功帮砍, 您也可以砍价低价拿哦,快去挑选心仪的商品吧, 发送给朋友, 微信好友, 微信朋友圈, 生成海报, 砍价详情, 分享成功, 分享失败, 该商品每人限购, 您的好友, 邀请您砍价, 人团, 去拼团, 拼团列表, 类型, 累计销量, 限购, 种规格可选, 已拼, 件, 还差, 人成团, 去拼单, 查看更多, 收起, 拼团玩法, 开团/参团, 邀请好友, 满员发货, 用户评价, 好评率, 产品介绍, 单独购买, 立即开团, 请选择, 商品, 详情, 缺少参数无法查看商品, 参数错误, 已选择, 保存成功, 保存失败, 人拼, 剩余, 结束, 恭喜您拼团成功, 人,拼团失败, 拼团中,还差, 人拼团成功, 邀请好友参团, 再次开团, 取消开团, 查看订单信息, 大家都在拼, 更多拼团, 邀请您参团, 你不是该团的成员, 已抢, 抢购中, 未开始, 已结束, 暂无商品,去看点别的吧, 即将开始, 距秒杀结束仅剩, 累计销售, 收藏, 保存到手机, 长按图片可以保存到手机, 抢购详情页, 二维码获取失败, 请选择属性, 提示:点击图片即可保存至手机相册, 拼团海报, 砍价海报, 海报生成中, 海报图片获取失败, 海报, 已预定, 预售价, 立即预定, 开售时间, 预售活动, 起, 划线价, 开通“超级会员”立省, 元, 立即开通, 预售活动时间, 预售结束后, 天内发货, 活动, 参与秒杀, 参与拼团, 复制口令, 复制成功, 推荐, 缺少经纬度信息无法查看地图, 产品库存不足,请选择其它属性, 立即退款, 一键改价, 订单备注, 商品总价, 原始邮费, 实际支付, 退款金额, 请填写备注信息, 立即修改, 确认退款, 拒绝退款, 取消, 订单号, 发货方式, 发货类型, 快递公司, 快递单号, 顺丰请输入单号 :收件人或寄件人手机号后四位, 例如:SF000000000000:3941, 电子面单, 预览, 寄件人姓名, 填写寄件人姓名, 寄件人电话, 填写寄件人电话, 寄件人地址, 填写寄件人地址, 送货人, 确认提交, 发货, 送货, 无需物流, 手动填写, 电子面单打印, 填写快递单号, 请选择电子面单, 待付款, 待发货, 待收货, 待评价, 售后/退款, 数据统计, 今日成交额, 昨日成交额, 本月成交额, 今日订单数, 昨日订单数, 本月订单数, 详细数据, 日期, 订单数, 成交额, 立即核销, 查看, 确定要核销此订单吗, 确定核销, 请输入核销码, 请输入正确的核销码, 查询中, 订单, 订单未备注,点击添加备注信息, 复制, 件商品,应支付, 邮费, 订单编号, 下单时间, 支付状态, 已支付, 未支付, 支付方式, 买家留言, 支付金额, 优惠券抵扣, 运费, 实付款, 配送方式, 快递, 送货人电话, 确认付款, 去发货, 改价成功, 改价失败, 请输入备注, 退款中, 部分退款中, 件商品,实付款, 同意退货, 待用户发货, 请输入正确的金额, 今天, 昨天, 最近7天, 本月, 自定义, 营业额(元), 订单量(份), 增长率, 增长, 单位, 元., 分., 固定, 指定范围, 提交时间, 原因, 暂无申请记录,快去申请吧!, 没有更多啦, 待审核, 审核通过, 审核未通过, 编辑, 重新提交, 会员优惠价, 余额支付, 可用余额, 微信支付, 确认, 支付提醒, 线下支付已关闭,请点击确认按钮返回主页, 请输入支付金额, 正在确认, 进入商城, 代理商名称, 请输入代理商名称, 用户姓名, 请输入姓名, 联系电话, 请输入手机号, 验证码, 填写验证码, 邀请码, 请输入代理商邀请码, 请上传营业执照及行业相关资质证明图片, 图片最多可上传10张,图片格式支持JPG、PNG、JPEG, 上传图片, 已阅读并同意, 代理商协议, 提交申请, 代理商入驻协议, 恭喜,您的资料提交成功!, 返回首页, 恭喜,您的资料通过审核!, 您的申请未通过!, 重新申请, 获取验证码, 请输入正确的手机号码, 重新获取, 请上传营业执照, 请勾选并同意入驻协议, 专题栏, 暂无数据, 请输入卡号, 请输入卡密, 确认激活, SVIP会员尊享权, 正在激活, 已使用, 永久SVIP会员, SVIP会员, 到期, 您与, 商城的第, 天., 已累积为您节省, 开通即享会员权益, 续费会员, 开通会员, 有效期至, 试用, 购买即视为同意, 会员用户协议, 点击兑换卡密, 会员优惠券, SVIP商品推荐, 商城价, 激活会员卡, 支付宝支付, 成功开启0元试用, 确认绑定, 绑定成功, 商城客服已离线, 我要反馈, 请填写内容, 提交, 精品推荐, 热门榜单, 首发新品, 促销单品, 预告, 回放, 进行中, 发送客服, 客服连接中, 连接失败, 提示, 客服已下线,是否需要反馈?, 和好友一起分享, 积分抵扣, 已开票, 未开票, 发票信息, 发票抬头, 发票抬头类型, 个人, 企业, 发票类型, 电子普通发票, 电子专用发票, 企业税号, 联系信息, 真实姓名, 联系邮箱, 抬头选择, 默认, 普通, 专用, 您还没有添加发票信息哟, 添加新的抬头, 不开发票, 抽奖, 全选, 属性, 请填写具体地址, 省, 市, 区, 添加成功, 您已拒绝导入微信地址权限, 是否进入权限管理,调整授权?, 已取消, 添加失败, 请填写收货人姓名, 请选择所在地区, 请填写详细地址, 星, 商品满足你的期待么?说说你的想法,分享给想买的他们吧, 立即评价, 商品质量, 服务态度, 缺少参数, 请填写你对宝贝的心得, 正在发布评论, 感谢您的评价, 评价完成, 恭喜您, 获得, 机会, 领取成功, 评分, 全部, 好评, 中评, 差评, 加载更多, 千米距离, 搜索商品名称, 价格, 销量, 新品, 已全部加载, 缺少订单号, 退货件数, 退款类型, 退款原因, 备注说明, 填写备注信息,100字以内, 仅退款, 退货并退款, 申请成功, 请先选择退货商品, 搜索历史, 热门搜索, 请输入要搜索的商品, 正在搜索中, 中奖记录, 我的奖品, 活动规则, 昵称, 序号, 奖品名称, 获奖时间, 商家暂未上架活动哦, 获取抽奖信息, 奖品类型, 立即兑换, 兑换时间, 暂无中奖记录, 积分, 余额, 红包, 设置收货地址, 暂无门店信息, 剩余积分, 当前积分, 开具发票, 请填写, 配送运费, 会员商品优惠, 会员运费优惠, 合计, 使用微信快捷支付, 使用支付宝支付, 线下支付, 使用线下付款, 好友代付, 找微信好友支付, 立即使用, 请选择要购买的商品, 发票, 不使用, 订单创建成功, 请选择支付方式, 请选择收货地址, 请填写联系人或联系人电话, 暂无门店,请选择其他方式, 请输入, 请输入正确的, 请上传, 订单支付中, 请按以上退货信息将商品退回, 请联系管理员获取退货地址, 待核销, 核销信息, 营业时间, 每日, 使用说明, 可将二维码出示给店员扫描或提供数字核销码, 可将二维码出示给配送员进行核销, 查看位置, 拒绝原因, 联系客服, 商家备注, 收货人, 收货地址, 配送人姓名, 拨打, 虚拟发货, 已发货,请注意查收, 虚拟备注, 总代付, 申请开票, 查看发票, 取消订单, 立即付款, 批量退款, 查看拼团, 再次购买, 取消申请, 填写退货信息, 查看退货物流, 您确认放弃此次申请吗, 操作成功, 订单信息不存在, 为保障权益,请收到货确认无误后,再确认收货, 删除订单, 确定删除该订单, 删除成功, 确认取消该订单, 订单信息, 消费订单, 总消费, 预售, 线下付款,未支付, 未核销, 件商品,总金额, 查看详情, 暂无订单, 缺少订单号无法取消订单, 订单支付成功, 订单支付失败, 暂未支付, 失败原因, 重新购买, 重新支付, 赠送优惠券, 有效期, 缺少参数无法查看订单支付状态, 最多可上传3张, 请选择产品, 该产品没有更多库存了, 优品推荐, 暂无产品, 重新选择, 请选择数量, 砍价专区·BARGAINING, 立即砍价, 拼团活动, 人拼团成功., 人参团, 拼团价, 已过期, 关注, 推荐好货, 暂无商品, 限时秒杀, 抢, 广告位, 精彩内容, 砍价模块,暂无数据, 砍价活动, 呼朋唤友来砍价, 拼团模块,暂无数据, 享超值开团价, 优惠券,暂无数据, 领取今日好券, 可用, 领取, 客服, 商品列表,暂无数据, 搜索商品, 暂无图片,请上传图片, 首发新品,暂无数据, 多个优质商品最新上架, 暂无新闻,请上传新闻, 热度 TOP, 排行榜、暂无数据, 促销单品,暂无数据, 库存商品优惠促销活动, 精品推荐,暂无数据, 上百种商品分类任您选择, 秒杀模块,暂无数据, 场, 暂无数据,请设置, 暂无数据,请先添加分类, 暂无标题, 诚意推荐品质商品, 点击“立即关注”即可关注公众号, 立即关注, 添加到我的小程序, 微信首页下拉即可访问商城。, 点击, 服务协议与隐私政策, 请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。, 你可以阅读, 《服务协议与隐私政策》, 了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。, 我同意, 残忍拒绝, 下拉加载更多, 网络连接断开, 请检查情况:, 在设置中是否已开启网络权限, 当前是否处于弱网环境, 版本是否过低,升级试试吧, 重新连接, 加载中, 没有更多内容啦~, 100%正品保证, 所有商品精挑细选, 售后无忧, 管理, 购物数量, 请重新选择商品规格, 重选, 失效商品, 失效, 该商品已失效, 立即下单, 产品库存不足,请选择其它, 添加购物车成功, 清除成功, 暂无兑换记录~, 大家都在换, 人兑换, 轻松赚积分, 购买商品, 购买商品可获得积分奖励, 去完成, 每日签到活动, 每日签到可获得积分奖励, 九宫格抽奖活动, 幸运抽奖可获得积分奖励, 我的积分, 每日签到, 积分抽奖, 兑换记录, 已兑换, 无法兑换, [默认], 可用积分, 快递费用, 免运费, 备注信息, 请添加备注(150字以内), 使用线上支付宝支付, 可用余额:, 选择线下付款方式, 正在加载…, 可用积分不足!, 订单状态, 支付积分, 备注, 配送核销码, 当前可用余额:, 正在加载, 缺少经纬度信息无法查看地图!, 商品兑换成功, 兑换方式, 积分兑换, 兑换积分, 取消兑换, 缺少参数无法查看订单兑换状态, 用户离开了, 兑换成功, 物流公司, 复制单号, 设为默认, 添加新地址, 导入微信地址, 取消选择, 您设置的默认地址不存在!, 设置成功, 您删除的地址不存在!, 获取头像, 请点击授权, 绑定手机号, 永久, 会员到期, 未开通会员, 查看会员权益, 立即续费, 立即激活, 会员可享多项权益, 订单中心, 我的服务, 隐私协议, 商家管理, 更新用户信息成功, 客服接待, 点击复制网址去浏览器中打开, 点击复制, 完成支付, 点击右上角, 选择 在浏览器 打开,去支付宝支付, 支付订单不存在,页面将在2秒后自动关闭!, 正在支付中, 支付订单不存在,页面将在2秒后自动关闭, 复制失败, 您目前的排名, 您目前暂无排名, 暂无排名~, 我也是有底线的, 输入手机号, 输入验证码, 立即登录, 请填写手机号码, 请填写验证码, 请输入正确的验证码, 正在登录中, 登录成功, 获取授权, 获取微信的手机号授权, 获取微信手机号, 输入手机号码, 填写登录密码, 登录, 快速登录, 账号登录, 其他方式登录, 登录中, 获取用户信息失败, 请绑定手机号后,继续操作, 错误信息, 用户点击确定, 用户点击取消, 登录失败, 请勿重复点击, 请填写密码, 您输入的密码过于简单, 请填写账号, 请输入正确的账号, [图片], [语音], [商品], [订单], 亲、暂无消息记录哟!, 站内消息, 客服消息, 通知于, 获取详情中, 代付订单创建成功,发给好友帮你付款吧~, 帮我付一下这件商品了,谢谢~, 已经有人替我代付,谢谢啦~, 谢谢你帮我支付,么么哒~, 我已为你代付成功,商家正在努力发货中~, 好友代付成功,商家正在努力发货中~, 发送给微信好友, 查看订单详情, 订单已支付, 如果订单申请退款,已支付金额将原路退还给您, 代付成功, 谢谢你为我付款,还可以再去看看其他商品哟~, 该订单暂未支付, 人, 推广人数, 一级, 二级, 点击搜索会员名称, 团队排序, 金额排序, 订单排序, 单, 加入时间, 累积推广订单, 本月累计推广订单, 返佣, 暂未返佣, 返佣时间, 单号, 暂无推广订单~, 推广订单列表, 找回密码, 填写您的新密码, 加载失败, 点击授权登录您的客服工作台, 授权登录, 没有登录的code,请重新扫码, 员工人数, 邀请, 分佣比例, 修改分佣比例, 请输入百分比, 删除员工, 确定删除该员工?, 请输入比例, 分类, 我的, 姓名, 请输入联系电话, 所在地区, 详细地址, 设置为默认地址, 立即保存, 浙江省, 杭州市, 滨江区, 广东省, 广州市, 番禺区, 修改地址, 添加地址, 已取消!, 请填写联系电话, 保存中, 修改成功, 消费, 充值, 暂无账单的记录哦~, 点击【立即注销】即代表您已经同意《用户注销协议》, 立即注销, 是否确认注销, 注销后无法恢复,请谨慎操作, 注销, 持卡人, 请输入持卡人姓名, 卡号, 请填写卡号, 银行, 提现, 最低提现金额, 当前可提现金额, 冻结佣金, 说明: 每笔佣金的冻结期为, 天,到期后可提现, 账号, 请填写您的微信账号, 收款码, 请填写您的支付宝账号, 请选择银行, 银行卡, 微信, 支付宝, 请填写持卡人姓名, 请填写微信号, 请填写提现金额, 提现金额不能低于, 未使用, 已使用/过期, 通用劵, 一级分佣上浮, 二级分佣上浮, 快速升级技巧, 未完成, 已领完, 当前共, 取关, 请选择商品, 头像, 手机号码, 点击绑定手机号, ID号, 权限设置, 点击管理, 密码, 点击修改密码, 更换手机号码, 点击更换手机号码, 缓存大小, 当前版本, 地址管理, 发票管理, 账号注销, 注销后无法恢复, 累计积分, 累计消费, 冻结积分, 积分规则, 提示:积分数值的高低会直接影响您的会员等级, 提示:你有, 积分在, 过期,请尽快使用, 暂无积分记录哦~, 赚积分, 分值明细, 分值提升, 抬头类型, 增值税电子专用发票, 增值税电子普通发票, 需要开具发票的姓名, 需要开具发票的企业名称, 税号, 纳税人识别号, 手机号, 您的手机号, 邮箱, 您的联系邮箱, 开户银行, 您的开户银行, 银行账号, 您的银行账号, 企业地址, 您所在的企业地址, 企业电话, 您的企业电话, 设置为默认抬头, 保存, 发票类型选择, 纸质发票开出后将以邮寄形式交付, 请输入需要开具发票的姓名, 请输入您的手机号, 请正确输入您的手机号, 请输入您的联系邮箱, 请正确输入您的联系邮箱, 请输入需要开具发票的企业名称, 请输入纳税人识别号, 请正确输入纳税人识别号, 请输入您的开户银行, 请输入您的银行账号, 请正确输入您的银行账号, 请输入您所在的企业地址, 请输入您的企业电话, 发票记录, 抬头管理, 申请时间, 没有发票信息哟~, 个人普通发票, 企业普通发票, 企业专用发票, 添加新发票, 删除该发票?, 发票编号, 发票备注, 快递号, 总资产(元), 累计充值(元), 累计消费(元), 账单记录, 消费记录, 充值记录, 积分中心, 签到领积分, 赚积分抵现金, 领取优惠券, 满减享优惠, 最新拼团活动, 最新的优惠商品上架拼团, 立即参与, 当前限时秒杀, 最新商品秒杀进行中, 我的余额, 赠送, 其他, 注意事项, 冻结佣金为, 立即转入, 立即充值, 请输入金额, 转入余额, 转入余额后无法再次转出,确认是否转入余额, 转入成功, 正在支付, 充值金额必须为数字, 充值金额不能为0, 填写手机号码, 是否绑定账号, 绑定, 您已取消绑定!, 当前手机号, 设置新密码, 确认新密码, 手机号码不存在,无法发送验证码!, 请输入新密码, 两次输入的密码不一致!, 请输入验证码, 暂无退款订单~, 缺少订单号无法查看订单详情, 明细, 第七天, 第7天, 奖励, 已签到, 立即签到, 已累计签到, 据说连续签到第, 天可获得超额积分,一定要坚持签到哦~~~, 签到成功, 好的, 您今日已签到!, 暂无签到记录~, 保存海报, 长按保存图片, 分销海报, 小程序二维码需要发布正式版后才能获取到, 获取中, 暂无数据~, 提现记录, 提现总额, 佣金记录, 佣金明细, 分销等级, 昨日收益, 累积已提, 代理商申请, 立即提现, 推广名片, 推广人统计, 推广人订单, 推广订单, 事业部, 代理商, 推广人排行, 佣金排行, 员工列表, 您目前暂无推广权限, 商城购物可享, 折, 当前等级, 未达成, 今日成长值, 点, 我的成长值记录, 暂未解锁该等级, 点,需达到, 已解锁更高等级, 我的成长特权, 购物折扣, 专属徽章, 经验累积, 尊享客服, 签到, 可获得, 点经验, 每日签到可获得经验值,已签到, 去签到, 点经验/元, 购买商品可获得对应的经验值, 去购买, 点经验/人, 邀请好友注册商城可获得经验值, 去邀请, 积分数, 消费金额, 暂无经验记录, 账户登录, 微信登录, 手机号登录, 账户充值, 佣金转入, 周榜, 月榜, 周排行, 月排行, 语言切换, 点击前往, 查看全部, 查看订单, 无法获取图片信息, 长按或扫描查看, 点解锁, 确认修改, 保存修改, 退出登录, 付费会员, 地址信息, 我的推广, 砍价记录, 我的等级, 兑换, 申请中, 统计管理, 退款, 未发货, 当前为最新版本, 清除缓存, 确定清楚本地缓存数据吗, 缓存清理完成, 切换的账号不存在, 正在切换中, 确认退出登录, 我知道了, 系统错误, 请求失败, 邀请您加入, 图片上传中, 上传图片失败, 访问位置被拒绝, 系统定位已关闭, 需要定位权限, 订单核销, 当前可转入佣金为, 浏览记录, 签到奖励, 请输入内容, 单次限购, 永久限购, 《用户协议》, 《隐私协议》, 与, 请先阅读并同意协议, 绑定下级通知, 购买成功通知, 确认收货通知, 改价通知, 退款成功通知, 充值成功通知, 积分到账通知, 佣金到账通知, 砍价成功通知, 拼团成功通知, 拼团失败通知, 开团成功通知, 提现成功通知, 提现失败通知, 充值退款通知, 退款申请拒绝通知, 您有新的退款待处理, 您有新的订单待处理, 发货通知, 取消拼团通知, 参团成功通知, 你有个新的提现申请待处理, 你有个新的用户收货待处理, 提醒付款通知, 短信验证码, 到店自提, 快递配送, default */
  8395. /***/ (function(module) {
  8396. module.exports = JSON.parse("{\"选择地址\":\"选择地址\",\"选择其它地址\":\"选择其它地址\",\"已选商品\":\"已选商品\",\"清空\":\"清空\",\"¥\":\"¥\",\"已售罄\":\"已售罄\",\"已下架\":\"已下架\",\"删除\":\"删除\",\"商品券\":\"商品券\",\"品类券\":\"品类券\",\"通用券\":\"通用券\",\"优惠券\":\"优惠券\",\"满\":\"满\",\"元可用\":\"元可用\",\"无门槛券\":\"无门槛券\",\"领取后\":\"领取后\",\"天内可用\":\"天内可用\",\"已领取\":\"已领取\",\"立即领取\":\"立即领取\",\"购物满\":\"购物满\",\"减\":\"减\",\"不限时\":\"不限时\",\"秒杀\":\"秒杀\",\"砍价\":\"砍价\",\"拼团\":\"拼团\",\"已售\":\"已售\",\"立即购买\":\"立即购买\",\"加入购物车\":\"加入购物车\",\"选规格\":\"选规格\",\"跳过\":\"跳过\",\"立即体验\":\"立即体验\",\"首页\":\"首页\",\"搜索\":\"搜索\",\"购物车\":\"购物车\",\"我的收藏\":\"我的收藏\",\"个人中心\":\"个人中心\",\"券\":\"券\",\"正在加载中\":\"正在加载中\",\"上拉加载更多\":\"上拉加载更多\",\"代付金额\":\"代付金额\",\"共\":\"共\",\"件商品\":\"件商品\",\"订单包裹\":\"订单包裹\",\"申请退款中\":\"申请退款中\",\"已退款\":\"已退款\",\"已完成\":\"已完成\",\"件退款中\":\"件退款中\",\"不支持配送\":\"不支持配送\",\"不支持自提\":\"不支持自提\",\"已评价\":\"已评价\",\"评价\":\"评价\",\"申请退款\":\"申请退款\",\"查看物流\":\"查看物流\",\"确认收货\":\"确认收货\",\"选择付款方式\":\"选择付款方式\",\"支付\":\"支付\",\"去付款\":\"去付款\",\"请选择要支付的订单\":\"请选择要支付的订单\",\"余额不足\":\"余额不足\",\"支付中\":\"支付中\",\"缺少支付参数\":\"缺少支付参数\",\"取消支付\":\"取消支付\",\"支付成功\":\"支付成功\",\"支付失败\":\"支付失败\",\"库存\":\"库存\",\"限量\":\"限量\",\"数量\":\"数量\",\"我要参团\":\"我要参团\",\"确定\":\"确定\",\"热门推荐\":\"热门推荐\",\"最高返佣\":\"最高返佣\",\"推广享佣金\":\"推广享佣金\",\"立即分享\":\"立即分享\",\"发现新版本\":\"发现新版本\",\"立即升级\":\"立即升级\",\"下载进度\":\"下载进度\",\"店小二\":\"店小二\",\"暂无记录\":\"暂无记录\",\"正在下载海报,请稍后再试\":\"正在下载海报,请稍后再试\",\"海报二维码生成失败\":\"海报二维码生成失败\",\"倒计时\":\"倒计时\",\"天\":\"天\",\"时\":\"时\",\"分\":\"分\",\"秒\":\"秒\",\"砍价成功\":\"砍价成功\",\"活动已结束\":\"活动已结束\",\"已砍至\":\"已砍至\",\"活动进行中\":\"活动进行中\",\"取消活动\":\"取消活动\",\"继续砍价\":\"继续砍价\",\"暂无砍价记录\":\"暂无砍价记录\",\"人正在参与\":\"人正在参与\",\"最低\":\"最低\",\"参与砍价\":\"参与砍价\",\"砍价列表\":\"砍价列表\",\"人查看\":\"人查看\",\"人分享\":\"人分享\",\"人参与\":\"人参与\",\"邀请您帮忙砍价\":\"邀请您帮忙砍价\",\"查看商品\":\"查看商品\",\"当前\":\"当前\",\"已砍\":\"已砍\",\"还剩\":\"还剩\",\"立即参与砍价\":\"立即参与砍价\",\"商品暂无库存\":\"商品暂无库存\",\"邀请好友帮砍价\":\"邀请好友帮砍价\",\"已有\":\"已有\",\"位好友成功砍价\":\"位好友成功砍价\",\"帮好友砍一刀\":\"帮好友砍一刀\",\"好友已砍价成功\":\"好友已砍价成功\",\"我也要参与\":\"我也要参与\",\"已成功帮助好友砍价\":\"已成功帮助好友砍价\",\"恭喜您砍价成功,快去支付\":\"恭喜您砍价成功,快去支付\",\"立即支付\":\"立即支付\",\"抢更多商品\":\"抢更多商品\",\"砍价帮\":\"砍价帮\",\"砍掉\":\"砍掉\",\"更多\":\"更多\",\"关闭\":\"关闭\",\"点击加载更多\":\"点击加载更多\",\"商品详情\":\"商品详情\",\"砍价规则\":\"砍价规则\",\"您已砍掉\":\"您已砍掉\",\"元,听说分享次数越多砍价成功的机会越大哦\":\"元,听说分享次数越多砍价成功的机会越大哦\",\"成功帮砍\":\"成功帮砍\",\"您也可以砍价低价拿哦,快去挑选心仪的商品吧\":\"您也可以砍价低价拿哦,快去挑选心仪的商品吧\",\"发送给朋友\":\"发送给朋友\",\"微信好友\":\"微信好友\",\"微信朋友圈\":\"微信朋友圈\",\"生成海报\":\"生成海报\",\"砍价详情\":\"砍价详情\",\"分享成功\":\"分享成功\",\"分享失败\":\"分享失败\",\"该商品每人限购\":\"该商品每人限购\",\"您的好友\":\"您的好友\",\"邀请您砍价\":\"邀请您砍价\",\"人团\":\"人团\",\"去拼团\":\"去拼团\",\"拼团列表\":\"拼团列表\",\"类型\":\"类型\",\"累计销量\":\"累计销量\",\"限购\":\"限购\",\"种规格可选\":\"种规格可选\",\"已拼\":\"已拼\",\"件\":\"件\",\"还差\":\"还差\",\"人成团\":\"人成团\",\"去拼单\":\"去拼单\",\"查看更多\":\"查看更多\",\"收起\":\"收起\",\"拼团玩法\":\"拼团玩法\",\"开团/参团\":\"开团/参团\",\"邀请好友\":\"邀请好友\",\"满员发货\":\"满员发货\",\"用户评价\":\"用户评价\",\"好评率\":\"好评率\",\"产品介绍\":\"产品介绍\",\"单独购买\":\"单独购买\",\"立即开团\":\"立即开团\",\"请选择\":\"请选择\",\"商品\":\"商品\",\"详情\":\"详情\",\"缺少参数无法查看商品\":\"缺少参数无法查看商品\",\"参数错误\":\"参数错误\",\"已选择\":\"已选择\",\"保存成功\":\"保存成功\",\"保存失败\":\"保存失败\",\"人拼\":\"人拼\",\"剩余\":\"剩余\",\"结束\":\"结束\",\"恭喜您拼团成功\":\"恭喜您拼团成功\",\"人,拼团失败\":\"人,拼团失败\",\"拼团中,还差\":\"拼团中,还差\",\"人拼团成功\":\"人拼团成功\",\"邀请好友参团\":\"邀请好友参团\",\"再次开团\":\"再次开团\",\"取消开团\":\"取消开团\",\"查看订单信息\":\"查看订单信息\",\"大家都在拼\":\"大家都在拼\",\"更多拼团\":\"更多拼团\",\"邀请您参团\":\"邀请您参团\",\"你不是该团的成员\":\"你不是该团的成员\",\"已抢\":\"已抢\",\"抢购中\":\"抢购中\",\"未开始\":\"未开始\",\"已结束\":\"已结束\",\"暂无商品,去看点别的吧\":\"暂无商品,去看点别的吧\",\"即将开始\":\"即将开始\",\"距秒杀结束仅剩\":\"距秒杀结束仅剩\",\"累计销售\":\"累计销售\",\"收藏\":\"收藏\",\"保存到手机\":\"保存到手机\",\"长按图片可以保存到手机\":\"长按图片可以保存到手机\",\"抢购详情页\":\"抢购详情页\",\"二维码获取失败\":\"二维码获取失败\",\"请选择属性\":\"请选择属性\",\"提示:点击图片即可保存至手机相册\":\"提示:点击图片即可保存至手机相册\",\"拼团海报\":\"拼团海报\",\"砍价海报\":\"砍价海报\",\"海报生成中\":\"海报生成中\",\"海报图片获取失败\":\"海报图片获取失败\",\"海报\":\"海报\",\"已预定\":\"已预定\",\"预售价\":\"预售价\",\"立即预定\":\"立即预定\",\"开售时间\":\"开售时间\",\"预售活动\":\"预售活动\",\"起\":\"起\",\"划线价\":\"划线价\",\"开通“超级会员”立省\":\"开通“超级会员”立省\",\"元\":\"元\",\"立即开通\":\"立即开通\",\"预售活动时间\":\"预售活动时间\",\"预售结束后\":\"预售结束后\",\"天内发货\":\"天内发货\",\"活动\":\"活动\",\"参与秒杀\":\"参与秒杀\",\"参与拼团\":\"参与拼团\",\"复制口令\":\"复制口令\",\"复制成功\":\"复制成功\",\"推荐\":\"推荐\",\"缺少经纬度信息无法查看地图\":\"缺少经纬度信息无法查看地图\",\"产品库存不足,请选择其它属性\":\"产品库存不足,请选择其它属性\",\"立即退款\":\"立即退款\",\"一键改价\":\"一键改价\",\"订单备注\":\"订单备注\",\"商品总价\":\"商品总价\",\"原始邮费\":\"原始邮费\",\"实际支付\":\"实际支付\",\"退款金额\":\"退款金额\",\"请填写备注信息\":\"请填写备注信息\",\"立即修改\":\"立即修改\",\"确认退款\":\"确认退款\",\"拒绝退款\":\"拒绝退款\",\"取消\":\"取消\",\"订单号\":\"订单号\",\"发货方式\":\"发货方式\",\"发货类型\":\"发货类型\",\"快递公司\":\"快递公司\",\"快递单号\":\"快递单号\",\"顺丰请输入单号 :收件人或寄件人手机号后四位\":\"顺丰请输入单号 :收件人或寄件人手机号后四位\",\"例如:SF000000000000:3941\":\"例如:SF000000000000:3941\",\"电子面单\":\"电子面单\",\"预览\":\"预览\",\"寄件人姓名\":\"寄件人姓名\",\"填写寄件人姓名\":\"填写寄件人姓名\",\"寄件人电话\":\"寄件人电话\",\"填写寄件人电话\":\"填写寄件人电话\",\"寄件人地址\":\"寄件人地址\",\"填写寄件人地址\":\"填写寄件人地址\",\"送货人\":\"送货人\",\"确认提交\":\"确认提交\",\"发货\":\"发货\",\"送货\":\"送货\",\"无需物流\":\"无需物流\",\"手动填写\":\"手动填写\",\"电子面单打印\":\"电子面单打印\",\"填写快递单号\":\"填写快递单号\",\"请选择电子面单\":\"请选择电子面单\",\"待付款\":\"待付款\",\"待发货\":\"待发货\",\"待收货\":\"待收货\",\"待评价\":\"待评价\",\"售后/退款\":\"退款\",\"数据统计\":\"数据统计\",\"今日成交额\":\"今日成交额\",\"昨日成交额\":\"昨日成交额\",\"本月成交额\":\"本月成交额\",\"今日订单数\":\"今日订单数\",\"昨日订单数\":\"昨日订单数\",\"本月订单数\":\"本月订单数\",\"详细数据\":\"详细数据\",\"日期\":\"日期\",\"订单数\":\"订单数\",\"成交额\":\"成交额\",\"立即核销\":\"立即核销\",\"查看\":\"查看\",\"确定要核销此订单吗\":\"确定要核销此订单吗\",\"确定核销\":\"确定核销\",\"请输入核销码\":\"请输入核销码\",\"请输入正确的核销码\":\"请输入正确的核销码\",\"查询中\":\"查询中\",\"订单\":\"订单\",\"订单未备注,点击添加备注信息\":\"订单未备注,点击添加备注信息\",\"复制\":\"复制\",\"件商品,应支付\":\"件商品,应支付\",\"邮费\":\"邮费\",\"订单编号\":\"订单编号\",\"下单时间\":\"下单时间\",\"支付状态\":\"支付状态\",\"已支付\":\"已支付\",\"未支付\":\"未支付\",\"支付方式\":\"支付方式\",\"买家留言\":\"买家留言\",\"支付金额\":\"支付金额\",\"优惠券抵扣\":\"优惠券抵扣\",\"运费\":\"运费\",\"实付款\":\"实付款\",\"配送方式\":\"配送方式\",\"快递\":\"快递\",\"送货人电话\":\"送货人电话\",\"确认付款\":\"确认付款\",\"去发货\":\"去发货\",\"改价成功\":\"改价成功\",\"改价失败\":\"改价失败\",\"请输入备注\":\"请输入备注\",\"退款中\":\"退款中\",\"部分退款中\":\"部分退款中\",\"件商品,实付款\":\"件商品,实付款\",\"同意退货\":\"同意退货\",\"待用户发货\":\"待用户发货\",\"请输入正确的金额\":\"请输入正确的金额\",\"今天\":\"今天\",\"昨天\":\"昨天\",\"最近7天\":\"最近7天\",\"本月\":\"本月\",\"自定义\":\"自定义\",\"营业额(元)\":\"营业额(元)\",\"订单量(份)\":\"订单量(份)\",\"增长率\":\"增长率\",\"增长\":\"增长\",\"单位\":\"单位\",\"元.\":\"元\",\"分.\":\"分\",\"固定\":\"固定\",\"指定范围\":\"指定范围\",\"提交时间\":\"提交时间\",\"原因\":\"原因\",\"暂无申请记录,快去申请吧!\":\"暂无申请记录,快去申请吧!\",\"没有更多啦\":\"没有更多啦\",\"待审核\":\"待审核\",\"审核通过\":\"审核通过\",\"审核未通过\":\"审核未通过\",\"编辑\":\"编辑\",\"重新提交\":\"重新提交\",\"会员优惠价\":\"会员优惠价\",\"余额支付\":\"余额支付\",\"可用余额\":\"可用余额\",\"微信支付\":\"微信支付\",\"确认\":\"确认\",\"支付提醒\":\"支付提醒\",\"线下支付已关闭,请点击确认按钮返回主页\":\"线下支付已关闭,请点击确认按钮返回主页\",\"请输入支付金额\":\"请输入支付金额\",\"正在确认\":\"正在确认\",\"进入商城\":\"进入商城\",\"代理商名称\":\"代理商名称\",\"请输入代理商名称\":\"请输入代理商名称\",\"用户姓名\":\"用户姓名\",\"请输入姓名\":\"请输入姓名\",\"联系电话\":\"联系电话\",\"请输入手机号\":\"请输入手机号\",\"验证码\":\"验证码\",\"填写验证码\":\"填写验证码\",\"邀请码\":\"邀请码\",\"请输入代理商邀请码\":\"请输入代理商邀请码\",\"请上传营业执照及行业相关资质证明图片\":\"请上传营业执照及行业相关资质证明图片\",\"图片最多可上传10张,图片格式支持JPG、PNG、JPEG\":\"图片最多可上传10张,图片格式支持JPG、PNG、JPEG\",\"上传图片\":\"上传图片\",\"已阅读并同意\":\"已阅读并同意\",\"代理商协议\":\"代理商协议\",\"提交申请\":\"提交申请\",\"代理商入驻协议\":\"代理商入驻协议\",\"恭喜,您的资料提交成功!\":\"恭喜,您的资料提交成功!\",\"返回首页\":\"返回首页\",\"恭喜,您的资料通过审核!\":\"恭喜,您的资料通过审核!\",\"您的申请未通过!\":\"您的申请未通过!\",\"重新申请\":\"重新申请\",\"获取验证码\":\"获取验证码\",\"请输入正确的手机号码\":\"请输入正确的手机号码\",\"重新获取\":\"重新获取\",\"请上传营业执照\":\"请上传营业执照\",\"请勾选并同意入驻协议\":\"请勾选并同意入驻协议\",\"专题栏\":\"专题栏\",\"暂无数据\":\"暂无数据\",\"请输入卡号\":\"请输入卡号\",\"请输入卡密\":\"请输入卡密\",\"确认激活\":\"确认激活\",\"SVIP会员尊享权\":\"SVIP会员尊享权\",\"正在激活\":\"正在激活\",\"已使用\":\"已使用\",\"永久SVIP会员\":\"永久SVIP会员\",\"SVIP会员\":\"SVIP会员\",\"到期\":\"到期\",\"您与\":\"您与\",\"商城的第\":\"商城的第\",\"天.\":\"天.\",\"已累积为您节省\":\"已累积为您节省\",\"开通即享会员权益\":\"开通即享会员权益\",\"续费会员\":\"续费会员\",\"开通会员\":\"开通会员\",\"有效期至\":\"有效期至\",\"试用\":\"试用\",\"购买即视为同意\":\"购买即视为同意\",\"会员用户协议\":\"会员用户协议\",\"点击兑换卡密\":\"点击兑换卡密\",\"会员优惠券\":\"会员优惠券\",\"SVIP商品推荐\":\"SVIP商品推荐\",\"商城价\":\"商城价\",\"激活会员卡\":\"激活会员卡\",\"支付宝支付\":\"支付宝支付\",\"成功开启0元试用\":\"成功开启0元试用\",\"确认绑定\":\"确认绑定\",\"绑定成功\":\"绑定成功\",\"商城客服已离线\":\"商城客服已离线\",\"我要反馈\":\"我要反馈\",\"请填写内容\":\"请填写内容\",\"提交\":\"提交\",\"精品推荐\":\"精品推荐\",\"热门榜单\":\"热门榜单\",\"首发新品\":\"首发新品\",\"促销单品\":\"促销单品\",\"预告\":\"预告\",\"回放\":\"回放\",\"进行中\":\"进行中\",\"发送客服\":\"发送客服\",\"客服连接中\":\"客服连接中\",\"连接失败\":\"连接失败\",\"提示\":\"提示\",\"客服已下线,是否需要反馈?\":\"客服已下线,是否需要反馈?\",\"和好友一起分享\":\"和好友一起分享\",\"积分抵扣\":\"积分抵扣\",\"已开票\":\"已开票\",\"未开票\":\"未开票\",\"发票信息\":\"发票信息\",\"发票抬头\":\"发票抬头\",\"发票抬头类型\":\"发票抬头类型\",\"个人\":\"个人\",\"企业\":\"企业\",\"发票类型\":\"发票类型\",\"电子普通发票\":\"电子普通发票\",\"电子专用发票\":\"电子专用发票\",\"企业税号\":\"企业税号\",\"联系信息\":\"联系信息\",\"真实姓名\":\"真实姓名\",\"联系邮箱\":\"联系邮箱\",\"抬头选择\":\"抬头选择\",\"默认\":\"默认\",\"普通\":\"普通\",\"专用\":\"专用\",\"您还没有添加发票信息哟\":\"您还没有添加发票信息哟\",\"添加新的抬头\":\"添加新的抬头\",\"不开发票\":\"不开发票\",\"抽奖\":\"抽奖\",\"全选\":\"全选\",\"属性\":\"属性\",\"请填写具体地址\":\"请填写具体地址\",\"省\":\"省\",\"市\":\"市\",\"区\":\"区\",\"添加成功\":\"添加成功\",\"您已拒绝导入微信地址权限\":\"您已拒绝导入微信地址权限\",\"是否进入权限管理,调整授权?\":\"是否进入权限管理,调整授权?\",\"已取消\":\"已取消\",\"添加失败\":\"添加失败\",\"请填写收货人姓名\":\"请填写收货人姓名\",\"请选择所在地区\":\"请选择所在地区\",\"请填写详细地址\":\"请填写详细地址\",\"星\":\"星\",\"商品满足你的期待么?说说你的想法,分享给想买的他们吧\":\"商品满足你的期待么?说说你的想法,分享给想买的他们吧\",\"立即评价\":\"立即评价\",\"商品质量\":\"商品质量\",\"服务态度\":\"服务态度\",\"缺少参数\":\"缺少参数\",\"请填写你对宝贝的心得\":\"请填写你对宝贝的心得\",\"正在发布评论\":\"正在发布评论\",\"感谢您的评价\":\"感谢您的评价\",\"评价完成\":\"评价完成\",\"恭喜您\":\"恭喜您\",\"获得\":\"获得\",\"机会\":\"机会\",\"领取成功\":\"领取成功\",\"评分\":\"评分\",\"全部\":\"全部\",\"好评\":\"好评\",\"中评\":\"中评\",\"差评\":\"差评\",\"加载更多\":\"加载更多\",\"千米距离\":\"千米距离\",\"搜索商品名称\":\"搜索商品名称\",\"价格\":\"价格\",\"销量\":\"销量\",\"新品\":\"新品\",\"已全部加载\":\"已全部加载\",\"缺少订单号\":\"缺少订单号\",\"退货件数\":\"退货件数\",\"退款类型\":\"退款类型\",\"退款原因\":\"退款原因\",\"备注说明\":\"备注说明\",\"填写备注信息,100字以内\":\"填写备注信息,100字以内\",\"仅退款\":\"仅退款\",\"退货并退款\":\"退货并退款\",\"申请成功\":\"申请成功\",\"请先选择退货商品\":\"请先选择退货商品\",\"搜索历史\":\"搜索历史\",\"热门搜索\":\"热门搜索\",\"请输入要搜索的商品\":\"请输入要搜索的商品\",\"正在搜索中\":\"正在搜索中\",\"中奖记录\":\"中奖记录\",\"我的奖品\":\"我的奖品\",\"活动规则\":\"活动规则\",\"昵称\":\"昵称\",\"序号\":\"序号\",\"奖品名称\":\"奖品名称\",\"获奖时间\":\"获奖时间\",\"商家暂未上架活动哦\":\"商家暂未上架活动哦\",\"获取抽奖信息\":\"获取抽奖信息\",\"奖品类型\":\"奖品类型\",\"立即兑换\":\"立即兑换\",\"兑换时间\":\"兑换时间\",\"暂无中奖记录\":\"暂无中奖记录\",\"积分\":\"积分\",\"余额\":\"余额\",\"红包\":\"红包\",\"设置收货地址\":\"设置收货地址\",\"暂无门店信息\":\"暂无门店信息\",\"剩余积分\":\"剩余积分\",\"当前积分\":\"当前积分\",\"开具发票\":\"开具发票\",\"请填写\":\"请填写\",\"配送运费\":\"配送运费\",\"会员商品优惠\":\"会员商品优惠\",\"会员运费优惠\":\"会员运费优惠\",\"合计\":\"合计\",\"使用微信快捷支付\":\"使用微信快捷支付\",\"使用支付宝支付\":\"使用支付宝支付\",\"线下支付\":\"线下支付\",\"使用线下付款\":\"使用线下付款\",\"好友代付\":\"好友代付\",\"找微信好友支付\":\"找微信好友支付\",\"立即使用\":\"立即使用\",\"请选择要购买的商品\":\"请选择要购买的商品\",\"发票\":\"发票\",\"不使用\":\"不使用\",\"订单创建成功\":\"订单创建成功\",\"请选择支付方式\":\"请选择支付方式\",\"请选择收货地址\":\"请选择收货地址\",\"请填写联系人或联系人电话\":\"请填写联系人或联系人电话\",\"暂无门店,请选择其他方式\":\"暂无门店,请选择其他方式\",\"请输入\":\"请输入\",\"请输入正确的\":\"请输入正确的\",\"请上传\":\"请上传\",\"订单支付中\":\"订单支付中\",\"请按以上退货信息将商品退回\":\"请按以上退货信息将商品退回\",\"请联系管理员获取退货地址\":\"请联系管理员获取退货地址\",\"待核销\":\"待核销\",\"核销信息\":\"核销信息\",\"营业时间\":\"营业时间\",\"每日\":\"每日\",\"使用说明\":\"使用说明\",\"可将二维码出示给店员扫描或提供数字核销码\":\"可将二维码出示给店员扫描或提供数字核销码\",\"可将二维码出示给配送员进行核销\":\"可将二维码出示给配送员进行核销\",\"查看位置\":\"查看位置\",\"拒绝原因\":\"拒绝原因\",\"联系客服\":\"联系客服\",\"商家备注\":\"商家备注\",\"收货人\":\"收货人\",\"收货地址\":\"收货地址\",\"配送人姓名\":\"配送人姓名\",\"拨打\":\"拨打\",\"虚拟发货\":\"虚拟发货\",\"已发货,请注意查收\":\"已发货,请注意查收\",\"虚拟备注\":\"虚拟备注\",\"总代付\":\"总代付\",\"申请开票\":\"申请开票\",\"查看发票\":\"查看发票\",\"取消订单\":\"取消订单\",\"立即付款\":\"立即付款\",\"批量退款\":\"批量退款\",\"查看拼团\":\"查看拼团\",\"再次购买\":\"再次购买\",\"取消申请\":\"取消申请\",\"填写退货信息\":\"填写退货信息\",\"查看退货物流\":\"查看退货物流\",\"您确认放弃此次申请吗\":\"您确认放弃此次申请吗\",\"操作成功\":\"操作成功\",\"订单信息不存在\":\"订单信息不存在\",\"为保障权益,请收到货确认无误后,再确认收货\":\"为保障权益,请收到货确认无误后,再确认收货\",\"删除订单\":\"删除订单\",\"确定删除该订单\":\"确定删除该订单\",\"删除成功\":\"删除成功\",\"确认取消该订单\":\"确认取消该订单\",\"订单信息\":\"订单信息\",\"消费订单\":\"消费订单\",\"总消费\":\"总消费\",\"预售\":\"预售\",\"线下付款,未支付\":\"线下付款,未支付\",\"未核销\":\"未核销\",\"件商品,总金额\":\"件商品,总金额\",\"查看详情\":\"查看详情\",\"暂无订单\":\"暂无订单\",\"缺少订单号无法取消订单\":\"缺少订单号无法取消订单\",\"订单支付成功\":\"订单支付成功\",\"订单支付失败\":\"订单支付失败\",\"暂未支付\":\"暂未支付\",\"失败原因\":\"失败原因\",\"重新购买\":\"重新购买\",\"重新支付\":\"重新支付\",\"赠送优惠券\":\"赠送优惠券\",\"有效期\":\"有效期\",\"缺少参数无法查看订单支付状态\":\"缺少参数无法查看订单支付状态\",\"最多可上传3张\":\"最多可上传3张\",\"请选择产品\":\"请选择产品\",\"该产品没有更多库存了\":\"该产品没有更多库存了\",\"优品推荐\":\"优品推荐\",\"暂无产品\":\"暂无产品\",\"重新选择\":\"重新选择\",\"请选择数量\":\"请选择数量\",\"砍价专区·BARGAINING\":\"砍价专区·BARGAINING\",\"立即砍价\":\"立即砍价\",\"拼团活动\":\"拼团活动\",\"人拼团成功.\":\"人拼团成功.\",\"人参团\":\"人参团\",\"拼团价\":\"拼团价\",\"已过期\":\"已过期\",\"关注\":\"关注\",\"推荐好货\":\"推荐好货\",\"暂无商品\":\"暂无商品\",\"限时秒杀\":\"限时秒杀\",\"抢\":\"抢\",\"广告位\":\"广告位\",\"精彩内容\":\"精彩内容\",\"砍价模块,暂无数据\":\"砍价模块,暂无数据\",\"砍价活动\":\"砍价活动\",\"呼朋唤友来砍价\":\"呼朋唤友来砍价\",\"拼团模块,暂无数据\":\"拼团模块,暂无数据\",\"享超值开团价\":\"享超值开团价\",\"优惠券,暂无数据\":\"优惠券,暂无数据\",\"领取今日好券\":\"领取今日好券\",\"可用\":\"可用\",\"领取\":\"领取\",\"客服\":\"客服\",\"商品列表,暂无数据\":\"商品列表,暂无数据\",\"搜索商品\":\"搜索商品\",\"暂无图片,请上传图片\":\"暂无图片,请上传图片\",\"首发新品,暂无数据\":\"首发新品,暂无数据\",\"多个优质商品最新上架\":\"多个优质商品最新上架\",\"暂无新闻,请上传新闻\":\"暂无新闻,请上传新闻\",\"热度 TOP\":\"热度 TOP\",\"排行榜、暂无数据\":\"排行榜、暂无数据\",\"促销单品,暂无数据\":\"促销单品,暂无数据\",\"库存商品优惠促销活动\":\"库存商品优惠促销活动\",\"精品推荐,暂无数据\":\"精品推荐,暂无数据\",\"上百种商品分类任您选择\":\"上百种商品分类任您选择\",\"秒杀模块,暂无数据\":\"秒杀模块,暂无数据\",\"场\":\"场\",\"暂无数据,请设置\":\"暂无数据,请设置\",\"暂无数据,请先添加分类\":\"暂无数据,请先添加分类\",\"暂无标题\":\"暂无标题\",\"诚意推荐品质商品\":\"诚意推荐品质商品\",\"点击“立即关注”即可关注公众号\":\"点击“立即关注”即可关注公众号\",\"立即关注\":\"立即关注\",\"添加到我的小程序, 微信首页下拉即可访问商城。\":\"添加到我的小程序, 微信首页下拉即可访问商城。\",\"点击\":\"点击\",\"服务协议与隐私政策\":\"服务协议与隐私政策\",\"请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。\":\"请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。\",\"你可以阅读\":\"你可以阅读\",\"《服务协议与隐私政策》\":\"《服务协议与隐私政策》\",\"了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。\":\"了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。\",\"我同意\":\"我同意\",\"残忍拒绝\":\"残忍拒绝\",\"下拉加载更多\":\"下拉加载更多\",\"网络连接断开\":\"网络连接断开\",\"请检查情况:\":\"请检查情况:\",\"在设置中是否已开启网络权限\":\"在设置中是否已开启网络权限\",\"当前是否处于弱网环境\":\"当前是否处于弱网环境\",\"版本是否过低,升级试试吧\":\"版本是否过低,升级试试吧\",\"重新连接\":\"重新连接\",\"加载中\":\"加载中\",\"没有更多内容啦~\":\"没有更多内容啦~\",\"100%正品保证\":\"100%正品保证\",\"所有商品精挑细选\":\"所有商品精挑细选\",\"售后无忧\":\"售后无忧\",\"管理\":\"管理\",\"购物数量\":\"购物数量\",\"请重新选择商品规格\":\"请重新选择商品规格\",\"重选\":\"重选\",\"失效商品\":\"失效商品\",\"失效\":\"失效\",\"该商品已失效\":\"该商品已失效\",\"立即下单\":\"立即下单\",\"产品库存不足,请选择其它\":\"产品库存不足,请选择其它\",\"添加购物车成功\":\"添加购物车成功\",\"清除成功\":\"清除成功\",\"暂无兑换记录~\":\"暂无兑换记录~\",\"大家都在换\":\"大家都在换\",\"人兑换\":\"人兑换\",\"轻松赚积分\":\"轻松赚积分\",\"购买商品\":\"购买商品\",\"购买商品可获得积分奖励\":\"购买商品可获得积分奖励\",\"去完成\":\"去完成\",\"每日签到活动\":\"每日签到活动\",\"每日签到可获得积分奖励\":\"每日签到可获得积分奖励\",\"九宫格抽奖活动\":\"九宫格抽奖活动\",\"幸运抽奖可获得积分奖励\":\"幸运抽奖可获得积分奖励\",\"我的积分\":\"我的积分\",\"每日签到\":\"每日签到\",\"积分抽奖\":\"积分抽奖\",\"兑换记录\":\"兑换记录\",\"已兑换\":\"已兑换\",\"无法兑换\":\"无法兑换\",\"[默认]\":\"[默认]\",\"可用积分\":\"可用积分\",\"快递费用\":\"快递费用\",\"免运费\":\"免运费\",\"备注信息\":\"备注信息\",\"请添加备注(150字以内)\":\"请添加备注(150字以内)\",\"使用线上支付宝支付\":\"使用线上支付宝支付\",\"可用余额:\":\"可用余额:\",\"选择线下付款方式\":\"选择线下付款方式\",\"正在加载…\":\"正在加载…\",\"可用积分不足!\":\"可用积分不足!\",\"订单状态\":\"订单状态\",\"支付积分\":\"支付积分\",\"备注\":\"备注\",\"配送核销码\":\"配送核销码\",\"当前可用余额:\":\"当前可用余额:\",\"正在加载\":\"正在加载\",\"缺少经纬度信息无法查看地图!\":\"缺少经纬度信息无法查看地图!\",\"商品兑换成功\":\"商品兑换成功\",\"兑换方式\":\"兑换方式\",\"积分兑换\":\"积分兑换\",\"兑换积分\":\"兑换积分\",\"取消兑换\":\"取消兑换\",\"缺少参数无法查看订单兑换状态\":\"缺少参数无法查看订单兑换状态\",\"用户离开了\":\"用户离开了\",\"兑换成功\":\"兑换成功\",\"物流公司\":\"物流公司\",\"复制单号\":\"复制单号\",\"设为默认\":\"设为默认\",\"添加新地址\":\"添加新地址\",\"导入微信地址\":\"导入微信地址\",\"取消选择\":\"取消选择\",\"您设置的默认地址不存在!\":\"您设置的默认地址不存在!\",\"设置成功\":\"设置成功\",\"您删除的地址不存在!\":\"您删除的地址不存在!\",\"获取头像\":\"获取头像\",\"请点击授权\":\"请点击授权\",\"绑定手机号\":\"绑定手机号\",\"永久\":\"永久\",\"会员到期\":\"会员到期\",\"未开通会员\":\"未开通会员\",\"查看会员权益\":\"查看会员权益\",\"立即续费\":\"立即续费\",\"立即激活\":\"立即激活\",\"会员可享多项权益\":\"会员可享多项权益\",\"订单中心\":\"订单中心\",\"我的服务\":\"我的服务\",\"隐私协议\":\"隐私协议\",\"商家管理\":\"商家管理\",\"更新用户信息成功\":\"更新用户信息成功\",\"客服接待\":\"客服接待\",\"点击复制网址去浏览器中打开\":\"点击复制网址去浏览器中打开\",\"点击复制\":\"点击复制\",\"完成支付\":\"完成支付\",\"点击右上角\":\"点击右上角\",\"选择 在浏览器 打开,去支付宝支付\":\"选择 在浏览器 打开,去支付宝支付\",\"支付订单不存在,页面将在2秒后自动关闭!\":\"支付订单不存在,页面将在2秒后自动关闭!\",\"正在支付中\":\"正在支付中\",\"支付订单不存在,页面将在2秒后自动关闭\":\"支付订单不存在,页面将在2秒后自动关闭\",\"复制失败\":\"复制失败\",\"您目前的排名\":\"您目前的排名\",\"您目前暂无排名\":\"您目前暂无排名\",\"暂无排名~\":\"暂无排名~\",\"我也是有底线的\":\"我也是有底线的\",\"输入手机号\":\"输入手机号\",\"输入验证码\":\"输入验证码\",\"立即登录\":\"立即登录\",\"请填写手机号码\":\"请填写手机号码\",\"请填写验证码\":\"请填写验证码\",\"请输入正确的验证码\":\"请输入正确的验证码\",\"正在登录中\":\"正在登录中\",\"登录成功\":\"登录成功\",\"获取授权\":\"获取授权\",\"获取微信的手机号授权\":\"获取微信的手机号授权\",\"获取微信手机号\":\"获取微信手机号\",\"输入手机号码\":\"输入手机号码\",\"填写登录密码\":\"填写登录密码\",\"登录\":\"登录\",\"快速登录\":\"快速登录\",\"账号登录\":\"账号登录\",\"其他方式登录\":\"其他方式登录\",\"登录中\":\"登录中\",\"获取用户信息失败\":\"获取用户信息失败\",\"请绑定手机号后,继续操作\":\"请绑定手机号后,继续操作\",\"错误信息\":\"错误信息\",\"用户点击确定\":\"用户点击确定\",\"用户点击取消\":\"用户点击取消\",\"登录失败\":\"登录失败\",\"请勿重复点击\":\"请勿重复点击\",\"请填写密码\":\"请填写密码\",\"您输入的密码过于简单\":\"您输入的密码过于简单\",\"请填写账号\":\"请填写账号\",\"请输入正确的账号\":\"请输入正确的账号\",\"[图片]\":\"[图片]\",\"[语音]\":\"[语音]\",\"[商品]\":\"[商品]\",\"[订单]\":\"[订单]\",\"亲、暂无消息记录哟!\":\"亲、暂无消息记录哟!\",\"站内消息\":\"站内消息\",\"客服消息\":\"客服消息\",\"通知于\":\"通知于\",\"获取详情中\":\"获取详情中\",\"代付订单创建成功,发给好友帮你付款吧~\":\"代付订单创建成功,发给好友帮你付款吧~\",\"帮我付一下这件商品了,谢谢~\":\"帮我付一下这件商品了,谢谢~\",\"已经有人替我代付,谢谢啦~\":\"已经有人替我代付,谢谢啦~\",\"谢谢你帮我支付,么么哒~\":\"谢谢你帮我支付,么么哒~\",\"我已为你代付成功,商家正在努力发货中~\":\"我已为你代付成功,商家正在努力发货中~\",\"好友代付成功,商家正在努力发货中~\":\"好友代付成功,商家正在努力发货中~\",\"发送给微信好友\":\"发送给微信好友\",\"查看订单详情\":\"查看订单详情\",\"订单已支付\":\"订单已支付\",\"如果订单申请退款,已支付金额将原路退还给您\":\"如果订单申请退款,已支付金额将原路退还给您\",\"代付成功\":\"代付成功\",\"谢谢你为我付款,还可以再去看看其他商品哟~\":\"谢谢你为我付款,还可以再去看看其他商品哟~\",\"该订单暂未支付\":\"该订单暂未支付\",\"人\":\"人\",\"推广人数\":\"推广人数\",\"一级\":\"一级\",\"二级\":\"二级\",\"点击搜索会员名称\":\"点击搜索会员名称\",\"团队排序\":\"团队排序\",\"金额排序\":\"金额排序\",\"订单排序\":\"订单排序\",\"单\":\"单\",\"加入时间\":\"加入时间\",\"累积推广订单\":\"累积推广订单\",\"本月累计推广订单\":\"本月累计推广订单\",\"返佣\":\"返佣\",\"暂未返佣\":\"暂未返佣\",\"返佣时间\":\"返佣时间\",\"单号\":\"单号\",\"暂无推广订单~\":\"暂无推广订单~\",\"推广订单列表\":\"推广订单列表\",\"找回密码\":\"找回密码\",\"填写您的新密码\":\"填写您的新密码\",\"加载失败\":\"加载失败\",\"点击授权登录您的客服工作台\":\"点击授权登录您的客服工作台\",\"授权登录\":\"授权登录\",\"没有登录的code,请重新扫码\":\"没有登录的code,请重新扫码\",\"员工人数\":\"员工人数\",\"邀请\":\"邀请\",\"分佣比例\":\"分佣比例\",\"修改分佣比例\":\"修改分佣比例\",\"请输入百分比\":\"请输入百分比\",\"删除员工\":\"删除员工\",\"确定删除该员工?\":\"确定删除该员工?\",\"请输入比例\":\"请输入比例\",\"分类\":\"分类\",\"我的\":\"我的\",\"姓名\":\"姓名\",\"请输入联系电话\":\"请输入联系电话\",\"所在地区\":\"所在地区\",\"详细地址\":\"详细地址\",\"设置为默认地址\":\"设置为默认地址\",\"立即保存\":\"立即保存\",\"浙江省\":\"浙江省\",\"杭州市\":\"杭州市\",\"滨江区\":\"滨江区\",\"广东省\":\"广东省\",\"广州市\":\"广州市\",\"番禺区\":\"番禺区\",\"修改地址\":\"修改地址\",\"添加地址\":\"添加地址\",\"已取消!\":\"已取消!\",\"请填写联系电话\":\"请填写联系电话\",\"保存中\":\"保存中\",\"修改成功\":\"修改成功\",\"消费\":\"消费\",\"充值\":\"充值\",\"暂无账单的记录哦~\":\"暂无账单的记录哦~\",\"点击【立即注销】即代表您已经同意《用户注销协议》\":\"点击【立即注销】即代表您已经同意《用户注销协议》\",\"立即注销\":\"立即注销\",\"是否确认注销\":\"是否确认注销\",\"注销后无法恢复,请谨慎操作\":\"注销后无法恢复,请谨慎操作\",\"注销\":\"注销\",\"持卡人\":\"持卡人\",\"请输入持卡人姓名\":\"请输入持卡人姓名\",\"卡号\":\"卡号\",\"请填写卡号\":\"请填写卡号\",\"银行\":\"银行\",\"提现\":\"提现\",\"最低提现金额\":\"最低提现金额\",\"当前可提现金额\":\"当前可提现金额\",\"冻结佣金\":\"冻结佣金\",\"说明: 每笔佣金的冻结期为\":\"说明: 每笔佣金的冻结期为\",\"天,到期后可提现\":\"天,到期后可提现\",\"账号\":\"账号\",\"请填写您的微信账号\":\"请填写您的微信账号\",\"收款码\":\"收款码\",\"请填写您的支付宝账号\":\"请填写您的支付宝账号\",\"请选择银行\":\"请选择银行\",\"银行卡\":\"银行卡\",\"微信\":\"微信\",\"支付宝\":\"支付宝\",\"请填写持卡人姓名\":\"请填写持卡人姓名\",\"请填写微信号\":\"请填写微信号\",\"请填写提现金额\":\"请填写提现金额\",\"提现金额不能低于\":\"提现金额不能低于\",\"未使用\":\"未使用\",\"已使用/过期\":\"已使用/过期\",\"通用劵\":\"通用劵\",\"一级分佣上浮\":\"一级分佣上浮\",\"二级分佣上浮\":\"二级分佣上浮\",\"快速升级技巧\":\"快速升级技巧\",\"未完成\":\"未完成\",\"已领完\":\"已领完\",\"当前共\":\"当前共\",\"取关\":\"取关\",\"请选择商品\":\"请选择商品\",\"头像\":\"头像\",\"手机号码\":\"手机号码\",\"点击绑定手机号\":\"点击绑定手机号\",\"ID号\":\"ID号\",\"权限设置\":\"权限设置\",\"点击管理\":\"点击管理\",\"密码\":\"密码\",\"点击修改密码\":\"点击修改密码\",\"更换手机号码\":\"更换手机号码\",\"点击更换手机号码\":\"点击更换手机号码\",\"缓存大小\":\"缓存大小\",\"当前版本\":\"当前版本\",\"地址管理\":\"地址管理\",\"发票管理\":\"发票管理\",\"账号注销\":\"账号注销\",\"注销后无法恢复\":\"注销后无法恢复\",\"累计积分\":\"累计积分\",\"累计消费\":\"累计消费\",\"冻结积分\":\"冻结积分\",\"积分规则\":\"积分规则\",\"提示:积分数值的高低会直接影响您的会员等级\":\"提示:积分数值的高低会直接影响您的会员等级\",\"提示:你有\":\"提示:你有\",\"积分在\":\"积分在\",\"过期,请尽快使用\":\"过期,请尽快使用\",\"暂无积分记录哦~\":\"暂无积分记录哦~\",\"赚积分\":\"赚积分\",\"分值明细\":\"分值明细\",\"分值提升\":\"分值提升\",\"抬头类型\":\"抬头类型\",\"增值税电子专用发票\":\"增值税电子专用发票\",\"增值税电子普通发票\":\"增值税电子普通发票\",\"需要开具发票的姓名\":\"需要开具发票的姓名\",\"需要开具发票的企业名称\":\"需要开具发票的企业名称\",\"税号\":\"税号\",\"纳税人识别号\":\"纳税人识别号\",\"手机号\":\"手机号\",\"您的手机号\":\"您的手机号\",\"邮箱\":\"邮箱\",\"您的联系邮箱\":\"您的联系邮箱\",\"开户银行\":\"开户银行\",\"您的开户银行\":\"您的开户银行\",\"银行账号\":\"银行账号\",\"您的银行账号\":\"您的银行账号\",\"企业地址\":\"企业地址\",\"您所在的企业地址\":\"您所在的企业地址\",\"企业电话\":\"企业电话\",\"您的企业电话\":\"您的企业电话\",\"设置为默认抬头\":\"设置为默认抬头\",\"保存\":\"保存\",\"发票类型选择\":\"发票类型选择\",\"纸质发票开出后将以邮寄形式交付\":\"纸质发票开出后将以邮寄形式交付\",\"请输入需要开具发票的姓名\":\"请输入需要开具发票的姓名\",\"请输入您的手机号\":\"请输入您的手机号\",\"请正确输入您的手机号\":\"请正确输入您的手机号\",\"请输入您的联系邮箱\":\"请输入您的联系邮箱\",\"请正确输入您的联系邮箱\":\"请正确输入您的联系邮箱\",\"请输入需要开具发票的企业名称\":\"请输入需要开具发票的企业名称\",\"请输入纳税人识别号\":\"请输入纳税人识别号\",\"请正确输入纳税人识别号\":\"请正确输入纳税人识别号\",\"请输入您的开户银行\":\"请输入您的开户银行\",\"请输入您的银行账号\":\"请输入您的银行账号\",\"请正确输入您的银行账号\":\"请正确输入您的银行账号\",\"请输入您所在的企业地址\":\"请输入您所在的企业地址\",\"请输入您的企业电话\":\"请输入您的企业电话\",\"发票记录\":\"发票记录\",\"抬头管理\":\"抬头管理\",\"申请时间\":\"申请时间\",\"没有发票信息哟~\":\"没有发票信息哟~\",\"个人普通发票\":\"个人普通发票\",\"企业普通发票\":\"企业普通发票\",\"企业专用发票\":\"企业专用发票\",\"添加新发票\":\"添加新发票\",\"删除该发票?\":\"删除该发票?\",\"发票编号\":\"发票编号\",\"发票备注\":\"发票备注\",\"快递号\":\"快递号\",\"总资产(元)\":\"总资产(元)\",\"累计充值(元)\":\"累计充值(元)\",\"累计消费(元)\":\"累计消费(元)\",\"账单记录\":\"账单记录\",\"消费记录\":\"消费记录\",\"充值记录\":\"充值记录\",\"积分中心\":\"积分中心\",\"签到领积分\":\"签到领积分\",\"赚积分抵现金\":\"赚积分抵现金\",\"领取优惠券\":\"领取优惠券\",\"满减享优惠\":\"满减享优惠\",\"最新拼团活动\":\"最新拼团活动\",\"最新的优惠商品上架拼团\":\"最新的优惠商品上架拼团\",\"立即参与\":\"立即参与\",\"当前限时秒杀\":\"当前限时秒杀\",\"最新商品秒杀进行中\":\"最新商品秒杀进行中\",\"我的余额\":\"我的余额\",\"赠送\":\"赠送\",\"其他\":\"其他\",\"注意事项\":\"注意事项\",\"冻结佣金为\":\"冻结佣金为\",\"立即转入\":\"立即转入\",\"立即充值\":\"立即充值\",\"请输入金额\":\"请输入金额\",\"转入余额\":\"转入余额\",\"转入余额后无法再次转出,确认是否转入余额\":\"转入余额后无法再次转出,确认是否转入余额\",\"转入成功\":\"转入成功\",\"正在支付\":\"正在支付\",\"充值金额必须为数字\":\"充值金额必须为数字\",\"充值金额不能为0\":\"充值金额不能为0\",\"填写手机号码\":\"填写手机号码\",\"是否绑定账号\":\"是否绑定账号\",\"绑定\":\"绑定\",\"您已取消绑定!\":\"您已取消绑定!\",\"当前手机号\":\"当前手机号\",\"设置新密码\":\"设置新密码\",\"确认新密码\":\"确认新密码\",\"手机号码不存在,无法发送验证码!\":\"手机号码不存在,无法发送验证码!\",\"请输入新密码\":\"请输入新密码\",\"两次输入的密码不一致!\":\"两次输入的密码不一致!\",\"请输入验证码\":\"请输入验证码\",\"暂无退款订单~\":\"暂无退款订单~\",\"缺少订单号无法查看订单详情\":\"缺少订单号无法查看订单详情\",\"明细\":\"明细\",\"第七天\":\"第七天\",\"第7天\":\"第7天\",\"奖励\":\"奖励\",\"已签到\":\"已签到\",\"立即签到\":\"立即签到\",\"已累计签到\":\"已累计签到\",\"据说连续签到第\":\"据说连续签到第\",\"天可获得超额积分,一定要坚持签到哦~~~\":\"天可获得超额积分,一定要坚持签到哦~~~\",\"签到成功\":\"签到成功\",\"好的\":\"OK\",\"您今日已签到!\":\"您今日已签到!\",\"暂无签到记录~\":\"暂无签到记录~\",\"保存海报\":\"保存海报\",\"长按保存图片\":\"长按保存图片\",\"分销海报\":\"分销海报\",\"小程序二维码需要发布正式版后才能获取到\":\"小程序二维码需要发布正式版后才能获取到\",\"获取中\":\"获取中\",\"暂无数据~\":\"暂无数据~\",\"提现记录\":\"提现记录\",\"提现总额\":\"提现总额\",\"佣金记录\":\"佣金记录\",\"佣金明细\":\"佣金明细\",\"分销等级\":\"分销等级\",\"昨日收益\":\"昨日收益\",\"累积已提\":\"累积已提\",\"代理商申请\":\"代理商申请\",\"立即提现\":\"立即提现\",\"推广名片\":\"推广名片\",\"推广人统计\":\"推广人统计\",\"推广人订单\":\"推广人订单\",\"推广订单\":\"推广订单\",\"事业部\":\"事业部\",\"代理商\":\"代理商\",\"推广人排行\":\"推广人排行\",\"佣金排行\":\"佣金排行\",\"员工列表\":\"员工列表\",\"您目前暂无推广权限\":\"您目前暂无推广权限\",\"商城购物可享\":\"商城购物可享\",\"折\":\"折\",\"当前等级\":\"当前等级\",\"未达成\":\"未达成\",\"今日成长值\":\"今日成长值\",\"点\":\"点\",\"我的成长值记录\":\"我的成长值记录\",\"暂未解锁该等级\":\"暂未解锁该等级\",\"点,需达到\":\"点,需达到\",\"已解锁更高等级\":\"已解锁更高等级\",\"我的成长特权\":\"我的成长特权\",\"购物折扣\":\"购物折扣\",\"专属徽章\":\"专属徽章\",\"经验累积\":\"经验累积\",\"尊享客服\":\"尊享客服\",\"签到\":\"签到\",\"可获得\":\"可获得\",\"点经验\":\"点经验\",\"每日签到可获得经验值,已签到\":\"每日签到可获得经验值,已签到\",\"去签到\":\"去签到\",\"点经验/元\":\"点经验/元\",\"购买商品可获得对应的经验值\":\"购买商品可获得对应的经验值\",\"去购买\":\"去购买\",\"点经验/人\":\"点经验/人\",\"邀请好友注册商城可获得经验值\":\"邀请好友注册商城可获得经验值\",\"去邀请\":\"去邀请\",\"积分数\":\"积分数\",\"消费金额\":\"消费金额\",\"暂无经验记录\":\"暂无经验记录\",\"账户登录\":\"账户登录\",\"微信登录\":\"微信登录\",\"手机号登录\":\"手机号登录\",\"账户充值\":\"账户充值\",\"佣金转入\":\"佣金转入\",\"周榜\":\"周榜\",\"月榜\":\"周榜\",\"周排行\":\"周排行\",\"月排行\":\"月排行\",\"语言切换\":\"语言切换\",\"点击前往\":\"点击前往\",\"查看全部\":\"查看全部\",\"查看订单\":\"查看订单\",\"无法获取图片信息\":\"无法获取图片信息\",\"长按或扫描查看\":\"长按或扫描查看\",\"点解锁\":\"点解锁\",\"确认修改\":\"确认修改\",\"保存修改\":\"保存修改\",\"退出登录\":\"退出登录\",\"付费会员\":\"付费会员\",\"地址信息\":\"地址信息\",\"我的推广\":\"我的推广\",\"砍价记录\":\"砍价记录\",\"我的等级\":\"我的等级\",\"兑换\":\"兑换\",\"申请中\":\"申请中\",\"统计管理\":\"统计管理\",\"退款\":\"退款\",\"未发货\":\"未发货\",\"当前为最新版本\":\"当前为最新版本\",\"清除缓存\":\"清除缓存\",\"确定清楚本地缓存数据吗\":\"确定清楚本地缓存数据吗\",\"缓存清理完成\":\"缓存清理完成\",\"切换的账号不存在\":\"切换的账号不存在\",\"正在切换中\":\"正在切换中\",\"确认退出登录\":\"确认退出登录\",\"我知道了\":\"我知道了\",\"系统错误\":\"系统错误\",\"请求失败\":\"请求失败\",\"邀请您加入\":\"邀请您加入\",\"图片上传中\":\"图片上传中\",\"上传图片失败\":\"上传图片失败\",\"访问位置被拒绝\":\"访问位置被拒绝\",\"系统定位已关闭\":\"系统定位已关闭\",\"需要定位权限\":\"需要定位权限\",\"订单核销\":\"订单核销\",\"当前可转入佣金为\":\"当前可转入佣金为\",\"浏览记录\":\"浏览记录\",\"签到奖励\":\"签到奖励\",\"请输入内容\":\"请输入内容\",\"单次限购\":\"单次限购\",\"永久限购\":\"永久限购\",\"《用户协议》\":\"《用户协议》\",\"《隐私协议》\":\"《隐私协议》\",\"与\":\"与\",\"请先阅读并同意协议\":\"请先阅读并同意协议\",\"绑定下级通知\":\"绑定下级通知\",\"购买成功通知\":\"购买成功通知\",\"确认收货通知\":\"确认收货通知\",\"改价通知\":\"改价通知\",\"退款成功通知\":\"退款成功通知\",\"充值成功通知\":\"充值成功通知\",\"积分到账通知\":\"积分到账通知\",\"佣金到账通知\":\"佣金到账通知\",\"砍价成功通知\":\"砍价成功通知\",\"拼团成功通知\":\"拼团成功通知\",\"拼团失败通知\":\"拼团失败通知\",\"开团成功通知\":\"开团成功通知\",\"提现成功通知\":\"提现成功通知\",\"提现失败通知\":\"提现失败通知\",\"充值退款通知\":\"充值退款通知\",\"退款申请拒绝通知\":\"退款申请拒绝通知\",\"您有新的退款待处理\":\"您有新的退款待处理\",\"您有新的订单待处理\":\"您有新的订单待处理\",\"发货通知\":\"发货通知\",\"取消拼团通知\":\"取消拼团通知\",\"参团成功通知\":\"参团成功通知\",\"你有个新的提现申请待处理\":\"你有个新的提现申请待处理\",\"你有个新的用户收货待处理\":\"你有个新的用户收货待处理\",\"提醒付款通知\":\"提醒付款通知\",\"短信验证码\":\"短信验证码\",\"到店自提\":\"到店自提\",\"快递配送\":\"快递配送\"}");
  8397. /***/ }),
  8398. /***/ 221:
  8399. /*!*****************************************************!*\
  8400. !*** D:/data/zhonghong/saber-weixin/utils/emoji.js ***!
  8401. \*****************************************************/
  8402. /*! no static exports found */
  8403. /***/ (function(module, exports, __webpack_require__) {
  8404. "use strict";
  8405. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; // +----------------------------------------------------------------------
  8406. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  8407. // +----------------------------------------------------------------------
  8408. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  8409. // +----------------------------------------------------------------------
  8410. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8411. // +----------------------------------------------------------------------
  8412. // | Author: CRMEB Team <admin@crmeb.com>
  8413. // +----------------------------------------------------------------------
  8414. var _default =
  8415. [
  8416. 'em-tlj-1',
  8417. 'em-tlj-3',
  8418. 'em-tlj-4',
  8419. 'em-tlj-5',
  8420. 'em-tlj-6',
  8421. 'em-tlj-7',
  8422. 'em-tlj-8',
  8423. 'em-tlj-9',
  8424. 'em-tlj-10',
  8425. 'em-tlj-11',
  8426. 'em-tlj-12',
  8427. 'em-tlj-13',
  8428. 'em-tlj-14',
  8429. 'em-tlj-15',
  8430. 'em-tlj-16',
  8431. 'em-tlj-17',
  8432. 'em-tlj-18',
  8433. 'em-tlj-19',
  8434. 'em-tlj-20',
  8435. 'em-tlj-21',
  8436. 'em-tlj-22',
  8437. 'em-tlj-23',
  8438. 'em-tlj-24',
  8439. 'em-tlj-25',
  8440. 'em-tlj-26',
  8441. 'em-tlj-27',
  8442. 'em-tlj-28',
  8443. 'em-tlj-29',
  8444. 'em-tlj-30',
  8445. 'em-tlj-31',
  8446. 'em-tlj-32',
  8447. 'em-tlj-33',
  8448. 'em-tlj-34',
  8449. 'em-tlj-35',
  8450. 'em-tlj-36',
  8451. 'em-tlj-37',
  8452. 'em-tlj-38',
  8453. 'em-tlj-39',
  8454. 'em-tlj-40',
  8455. 'em-tlj-41',
  8456. 'em-tlj-42',
  8457. 'em-tlj-43',
  8458. 'em-tlj-44',
  8459. 'em-tlj-45',
  8460. 'em-tlj-46',
  8461. 'em-tlj-47',
  8462. 'em-tlj-48',
  8463. 'em-tlj-49',
  8464. 'em-tlj-50',
  8465. 'em-tlj-51',
  8466. 'em-tlj-52',
  8467. 'em-tlj-53',
  8468. 'em-tlj-54',
  8469. 'em-tlj-55',
  8470. 'em-tlj-56',
  8471. 'em-tlj-57',
  8472. 'em-tlj-58',
  8473. 'em-tlj-59',
  8474. 'em-tlj-60',
  8475. 'em-tlj-61',
  8476. 'em-tlj-62',
  8477. 'em-tlj-63',
  8478. 'em-tlj-64',
  8479. 'em-tlj-65',
  8480. 'em-tlj-66',
  8481. 'em-tlj-67',
  8482. 'em-tlj-68',
  8483. 'em-tlj-69',
  8484. 'em-tlj-70',
  8485. 'em-tlj-71',
  8486. 'em-tlj-72',
  8487. 'em-tlj-73',
  8488. 'em-tlj-74',
  8489. 'em-tlj-75',
  8490. 'em-tlj-76',
  8491. 'em-tlj-77',
  8492. 'em-tlj-78',
  8493. 'em-tlj-79',
  8494. 'em-tlj-80',
  8495. 'em-tlj-81',
  8496. 'em-tlj-82',
  8497. 'em-tlj-83',
  8498. 'em-tlj-84',
  8499. 'em-tlj-85',
  8500. 'em-tlj-86',
  8501. 'em-tlj-87',
  8502. 'em-tlj-88',
  8503. 'em-tlj-89',
  8504. 'em-tlj-90',
  8505. 'em-tlj-91',
  8506. 'em-tlj-92',
  8507. 'em-tlj-93',
  8508. 'em-tlj-94',
  8509. 'em-tlj-95',
  8510. 'em-tlj-96'];exports.default = _default;
  8511. /***/ }),
  8512. /***/ 23:
  8513. /*!******************************************************!*\
  8514. !*** D:/data/zhonghong/saber-weixin/lang/fr_fr.json ***!
  8515. \******************************************************/
  8516. /*! exports provided: 选择地址, 选择其它地址, 已选商品, 清空, ¥, 已售罄, 已下架, 删除, 商品券, 品类券, 通用券, 优惠券, 满, 元可用, 无门槛券, 领取后, 天内可用, 已领取, 立即领取, 购物满, 减, 不限时, 秒杀, 砍价, 拼团, 已售, 立即购买, 加入购物车, 选规格, 跳过, 立即体验, 首页, 搜索, 购物车, 我的收藏, 个人中心, 券, 正在加载中, 上拉加载更多, 代付金额, 共, 件商品, 订单包裹, 申请退款中, 已退款, 已完成, 件退款中, 不支持配送, 不支持自提, 已评价, 评价, 申请退款, 查看物流, 确认收货, 选择付款方式, 支付, 去付款, 请选择要支付的订单, 余额不足, 支付中, 缺少支付参数, 取消支付, 支付成功, 支付失败, 库存, 限量, 数量, 我要参团, 确定, 热门推荐, 最高返佣, 推广享佣金, 立即分享, 发现新版本, 立即升级, 下载进度, 店小二, 暂无记录, 正在下载海报,请稍后再试, 海报二维码生成失败, 倒计时, 天, 时, 分, 秒, 砍价成功, 活动已结束, 已砍至, 活动进行中, 取消活动, 继续砍价, 暂无砍价记录, 人正在参与, 最低, 参与砍价, 砍价列表, 人查看, 人分享, 人参与, 邀请您帮忙砍价, 查看商品, 当前, 已砍, 还剩, 立即参与砍价, 商品暂无库存, 邀请好友帮砍价, 已有, 位好友成功砍价, 帮好友砍一刀, 好友已砍价成功, 我也要参与, 已成功帮助好友砍价, 恭喜您砍价成功,快去支付, 立即支付, 抢更多商品, 砍价帮, 砍掉, 更多, 关闭, 点击加载更多, 商品详情, 砍价规则, 您已砍掉, 元,听说分享次数越多砍价成功的机会越大哦, 成功帮砍, 您也可以砍价低价拿哦,快去挑选心仪的商品吧, 发送给朋友, 微信好友, 微信朋友圈, 生成海报, 砍价详情, 分享成功, 分享失败, 该商品每人限购, 您的好友, 邀请您砍价, 人团, 去拼团, 拼团列表, 类型, 累计销量, 限购, 种规格可选, 已拼, 件, 还差, 人成团, 去拼单, 查看更多, 收起, 拼团玩法, 开团/参团, 邀请好友, 满员发货, 用户评价, 好评率, 产品介绍, 单独购买, 立即开团, 请选择, 商品, 详情, 缺少参数无法查看商品, 参数错误, 已选择, 保存成功, 保存失败, 人拼, 剩余, 结束, 恭喜您拼团成功, 人,拼团失败, 拼团中,还差, 人拼团成功, 邀请好友参团, 再次开团, 取消开团, 查看订单信息, 大家都在拼, 更多拼团, 邀请您参团, 你不是该团的成员, 已抢, 抢购中, 未开始, 已结束, 暂无商品,去看点别的吧, 即将开始, 距秒杀结束仅剩, 累计销售, 收藏, 保存到手机, 长按图片可以保存到手机, 抢购详情页, 二维码获取失败, 请选择属性, 提示:点击图片即可保存至手机相册, 拼团海报, 砍价海报, 海报生成中, 海报图片获取失败, 海报, 已预定, 预售价, 立即预定, 开售时间, 预售活动, 起, 划线价, 开通“超级会员”立省, 元, 立即开通, 预售活动时间, 预售结束后, 天内发货, 活动, 参与秒杀, 参与拼团, 复制口令, 复制成功, 推荐, 缺少经纬度信息无法查看地图, 产品库存不足,请选择其它属性, 立即退款, 一键改价, 订单备注, 商品总价, 原始邮费, 实际支付, 退款金额, 请填写备注信息, 立即修改, 确认退款, 拒绝退款, 取消, 订单号, 发货方式, 发货类型, 快递公司, 快递单号, 顺丰请输入单号 :收件人或寄件人手机号后四位, 例如:SF000000000000:3941, 电子面单, 预览, 寄件人姓名, 填写寄件人姓名, 寄件人电话, 填写寄件人电话, 寄件人地址, 填写寄件人地址, 送货人, 确认提交, 发货, 送货, 无需物流, 手动填写, 电子面单打印, 填写快递单号, 请选择电子面单, 待付款, 待发货, 待收货, 待评价, 售后/退款, 数据统计, 今日成交额, 昨日成交额, 本月成交额, 今日订单数, 昨日订单数, 本月订单数, 详细数据, 日期, 订单数, 成交额, 立即核销, 查看, 确定要核销此订单吗, 确定核销, 请输入核销码, 请输入正确的核销码, 查询中, 订单, 订单未备注,点击添加备注信息, 复制, 件商品,应支付, 邮费, 订单编号, 下单时间, 支付状态, 已支付, 未支付, 支付方式, 买家留言, 支付金额, 优惠券抵扣, 运费, 实付款, 配送方式, 快递, 送货人电话, 确认付款, 去发货, 改价成功, 改价失败, 请输入备注, 退款中, 部分退款中, 件商品,实付款, 同意退货, 待用户发货, 请输入正确的金额, 今天, 昨天, 最近7天, 本月, 自定义, 营业额(元), 订单量(份), 增长率, 增长, 单位, 元., 分., 固定, 指定范围, 提交时间, 原因, 暂无申请记录,快去申请吧!, 没有更多啦, 待审核, 审核通过, 审核未通过, 编辑, 重新提交, 会员优惠价, 余额支付, 可用余额, 微信支付, 确认, 支付提醒, 线下支付已关闭,请点击确认按钮返回主页, 请输入支付金额, 正在确认, 进入商城, 代理商名称, 请输入代理商名称, 用户姓名, 请输入姓名, 联系电话, 请输入手机号, 验证码, 填写验证码, 邀请码, 请输入代理商邀请码, 请上传营业执照及行业相关资质证明图片, 图片最多可上传10张,图片格式支持JPG、PNG、JPEG, 上传图片, 已阅读并同意, 代理商协议, 提交申请, 代理商入驻协议, 恭喜,您的资料提交成功!, 返回首页, 恭喜,您的资料通过审核!, 您的申请未通过!, 重新申请, 获取验证码, 请输入正确的手机号码, 重新获取, 请上传营业执照, 请勾选并同意入驻协议, 专题栏, 暂无数据, 请输入卡号, 请输入卡密, 确认激活, SVIP会员尊享权, 正在激活, 已使用, 永久SVIP会员, SVIP会员, 到期, 您与, 商城的第, 天., 已累积为您节省, 开通即享会员权益, 续费会员, 开通会员, 有效期至, 试用, 购买即视为同意, 会员用户协议, 点击兑换卡密, 会员优惠券, SVIP商品推荐, 商城价, 激活会员卡, 支付宝支付, 成功开启0元试用, 确认绑定, 绑定成功, 商城客服已离线, 我要反馈, 请填写内容, 提交, 精品推荐, 热门榜单, 首发新品, 促销单品, 预告, 回放, 进行中, 发送客服, 客服连接中, 连接失败, 提示, 客服已下线,是否需要反馈?, 和好友一起分享, 积分抵扣, 已开票, 未开票, 发票信息, 发票抬头, 发票抬头类型, 个人, 企业, 发票类型, 电子普通发票, 电子专用发票, 企业税号, 联系信息, 真实姓名, 联系邮箱, 抬头选择, 默认, 普通, 专用, 您还没有添加发票信息哟, 添加新的抬头, 不开发票, 抽奖, 全选, 属性, 请填写具体地址, 省, 市, 区, 添加成功, 您已拒绝导入微信地址权限, 是否进入权限管理,调整授权?, 已取消, 添加失败, 请填写收货人姓名, 请选择所在地区, 请填写详细地址, 星, 商品满足你的期待么?说说你的想法,分享给想买的他们吧, 立即评价, 商品质量, 服务态度, 缺少参数, 请填写你对宝贝的心得, 正在发布评论, 感谢您的评价, 评价完成, 恭喜您, 获得, 机会, 领取成功, 评分, 全部, 好评, 中评, 差评, 加载更多, 千米距离, 搜索商品名称, 价格, 销量, 新品, 已全部加载, 缺少订单号, 退货件数, 退款类型, 退款原因, 备注说明, 填写备注信息,100字以内, 仅退款, 退货并退款, 申请成功, 请先选择退货商品, 搜索历史, 热门搜索, 请输入要搜索的商品, 正在搜索中, 中奖记录, 我的奖品, 活动规则, 昵称, 序号, 奖品名称, 获奖时间, 商家暂未上架活动哦, 获取抽奖信息, 奖品类型, 立即兑换, 兑换时间, 暂无中奖记录, 积分, 余额, 红包, 设置收货地址, 暂无门店信息, 剩余积分, 当前积分, 开具发票, 请填写, 配送运费, 会员商品优惠, 会员运费优惠, 合计, 使用微信快捷支付, 使用支付宝支付, 线下支付, 使用线下付款, 好友代付, 找微信好友支付, 立即使用, 请选择要购买的商品, 发票, 不使用, 订单创建成功, 请选择支付方式, 请选择收货地址, 请填写联系人或联系人电话, 暂无门店,请选择其他方式, 请输入, 请输入正确的, 请上传, 订单支付中, 请按以上退货信息将商品退回, 请联系管理员获取退货地址, 待核销, 核销信息, 营业时间, 每日, 使用说明, 可将二维码出示给店员扫描或提供数字核销码, 可将二维码出示给配送员进行核销, 查看位置, 拒绝原因, 联系客服, 商家备注, 收货人, 收货地址, 配送人姓名, 拨打, 虚拟发货, 已发货,请注意查收, 虚拟备注, 总代付, 申请开票, 查看发票, 取消订单, 立即付款, 批量退款, 查看拼团, 再次购买, 取消申请, 填写退货信息, 查看退货物流, 您确认放弃此次申请吗, 操作成功, 订单信息不存在, 为保障权益,请收到货确认无误后,再确认收货, 删除订单, 确定删除该订单, 删除成功, 确认取消该订单, 订单信息, 消费订单, 总消费, 预售, 线下付款,未支付, 未核销, 件商品,总金额, 查看详情, 暂无订单, 缺少订单号无法取消订单, 订单支付成功, 订单支付失败, 暂未支付, 失败原因, 重新购买, 重新支付, 赠送优惠券, 有效期, 缺少参数无法查看订单支付状态, 最多可上传3张, 请选择产品, 该产品没有更多库存了, 优品推荐, 暂无产品, 重新选择, 请选择数量, 砍价专区·BARGAINING, 立即砍价, 拼团活动, 人拼团成功., 人参团, 拼团价, 已过期, 关注, 推荐好货, 暂无商品, 限时秒杀, 抢, 广告位, 精彩内容, 砍价模块,暂无数据, 砍价活动, 呼朋唤友来砍价, 拼团模块,暂无数据, 享超值开团价, 优惠券,暂无数据, 领取今日好券, 可用, 领取, 客服, 商品列表,暂无数据, 搜索商品, 暂无图片,请上传图片, 首发新品,暂无数据, 多个优质商品最新上架, 暂无新闻,请上传新闻, 热度 TOP, 排行榜、暂无数据, 促销单品,暂无数据, 库存商品优惠促销活动, 精品推荐,暂无数据, 上百种商品分类任您选择, 秒杀模块,暂无数据, 场, 暂无数据,请设置, 暂无数据,请先添加分类, 暂无标题, 诚意推荐品质商品, 点击“立即关注”即可关注公众号, 立即关注, 添加到我的小程序, 微信首页下拉即可访问商城。, 点击, 服务协议与隐私政策, 请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。, 你可以阅读, 《服务协议与隐私政策》, 了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。, 我同意, 残忍拒绝, 下拉加载更多, 网络连接断开, 请检查情况:, 在设置中是否已开启网络权限, 当前是否处于弱网环境, 版本是否过低,升级试试吧, 重新连接, 加载中, 没有更多内容啦~, 100%正品保证, 所有商品精挑细选, 售后无忧, 管理, 购物数量, 请重新选择商品规格, 重选, 失效商品, 失效, 该商品已失效, 立即下单, 我也是有底线的, 产品库存不足,请选择其它, 添加购物车成功, 清除成功, 暂无兑换记录~, 大家都在换, 人兑换, 轻松赚积分, 购买商品, 购买商品可获得积分奖励, 去完成, 每日签到活动, 每日签到可获得积分奖励, 九宫格抽奖活动, 幸运抽奖可获得积分奖励, 我的积分, 每日签到, 积分抽奖, 兑换记录, 已兑换, 无法兑换, [默认], 可用积分, 快递费用, 免运费, 备注信息, 请添加备注(150字以内), 使用线上支付宝支付, 可用余额:, 选择线下付款方式, 正在加载…, 可用积分不足!, 订单状态, 支付积分, 备注, 配送核销码, 当前可用余额:, 正在加载, 缺少经纬度信息无法查看地图!, 商品兑换成功, 兑换方式, 积分兑换, 兑换积分, 取消兑换, 缺少参数无法查看订单兑换状态, 用户离开了, 兑换成功, 物流公司, 复制单号, 设为默认, 添加新地址, 导入微信地址, 取消选择, 您设置的默认地址不存在!, 设置成功, 您删除的地址不存在!, 获取头像, 请点击授权, 绑定手机号, 永久, 会员到期, 未开通会员, 查看会员权益, 立即续费, 立即激活, 会员可享多项权益, 订单中心, 我的服务, 隐私协议, 商家管理, 更新用户信息成功, 客服接待, 点击复制网址去浏览器中打开, 点击复制, 完成支付, 点击右上角, 选择 在浏览器 打开,去支付宝支付, 支付订单不存在,页面将在2秒后自动关闭!, 正在支付中, 支付订单不存在,页面将在2秒后自动关闭, 复制失败, 您目前的排名, 您目前暂无排名, 暂无排名~, 输入手机号, 输入验证码, 立即登录, 请填写手机号码, 请填写验证码, 请输入正确的验证码, 正在登录中, 登录成功, 获取授权, 获取微信的手机号授权, 获取微信手机号, 输入手机号码, 填写登录密码, 登录, 快速登录, 账号登录, 其他方式登录, 登录中, 获取用户信息失败, 请绑定手机号后,继续操作, 错误信息, 用户点击确定, 用户点击取消, 登录失败, 请勿重复点击, 请填写密码, 您输入的密码过于简单, 请填写账号, 请输入正确的账号, [图片], [语音], [商品], [订单], 亲、暂无消息记录哟!, 站内消息, 客服消息, 通知于, 获取详情中, 代付订单创建成功,发给好友帮你付款吧~, 帮我付一下这件商品了,谢谢~, 已经有人替我代付,谢谢啦~, 谢谢你帮我支付,么么哒~, 我已为你代付成功,商家正在努力发货中~, 好友代付成功,商家正在努力发货中~, 发送给微信好友, 查看订单详情, 订单已支付, 如果订单申请退款,已支付金额将原路退还给您, 代付成功, 谢谢你为我付款,还可以再去看看其他商品哟~, 该订单暂未支付, 人, 推广人数, 一级, 二级, 点击搜索会员名称, 团队排序, 金额排序, 订单排序, 单, 加入时间, 累积推广订单, 本月累计推广订单, 返佣, 暂未返佣, 返佣时间, 单号, 暂无推广订单~, 推广订单列表, 找回密码, 填写您的新密码, 加载失败, 点击授权登录您的客服工作台, 授权登录, 没有登录的code,请重新扫码, 员工人数, 邀请, 分佣比例, 修改分佣比例, 请输入百分比, 删除员工, 确定删除该员工?, 请输入比例, 分类, 我的, 姓名, 请输入联系电话, 所在地区, 详细地址, 设置为默认地址, 立即保存, 浙江省, 杭州市, 滨江区, 广东省, 广州市, 番禺区, 修改地址, 添加地址, 已取消!, 请填写联系电话, 保存中, 修改成功, 消费, 充值, 暂无账单的记录哦~, 点击【立即注销】即代表您已经同意《用户注销协议》, 立即注销, 是否确认注销, 注销后无法恢复,请谨慎操作, 注销, 持卡人, 请输入持卡人姓名, 卡号, 请填写卡号, 银行, 提现, 最低提现金额, 当前可提现金额, 冻结佣金, 说明: 每笔佣金的冻结期为, 天,到期后可提现, 账号, 请填写您的微信账号, 收款码, 请填写您的支付宝账号, 请选择银行, 银行卡, 微信, 支付宝, 请填写持卡人姓名, 请填写微信号, 请填写提现金额, 提现金额不能低于, 未使用, 已使用/过期, 通用劵, 一级分佣上浮, 二级分佣上浮, 快速升级技巧, 未完成, 已领完, 当前共, 取关, 请选择商品, 头像, 手机号码, 点击绑定手机号, ID号, 权限设置, 点击管理, 密码, 点击修改密码, 更换手机号码, 点击更换手机号码, 缓存大小, 当前版本, 地址管理, 发票管理, 账号注销, 注销后无法恢复, 累计积分, 累计消费, 冻结积分, 积分规则, 提示:积分数值的高低会直接影响您的会员等级, 提示:你有, 积分在, 过期,请尽快使用, 暂无积分记录哦~, 赚积分, 分值明细, 分值提升, 抬头类型, 增值税电子专用发票, 增值税电子普通发票, 需要开具发票的姓名, 需要开具发票的企业名称, 税号, 纳税人识别号, 手机号, 您的手机号, 邮箱, 您的联系邮箱, 开户银行, 您的开户银行, 银行账号, 您的银行账号, 企业地址, 您所在的企业地址, 企业电话, 您的企业电话, 设置为默认抬头, 保存, 发票类型选择, 纸质发票开出后将以邮寄形式交付, 请输入需要开具发票的姓名, 请输入您的手机号, 请正确输入您的手机号, 请输入您的联系邮箱, 请正确输入您的联系邮箱, 请输入需要开具发票的企业名称, 请输入纳税人识别号, 请正确输入纳税人识别号, 请输入您的开户银行, 请输入您的银行账号, 请正确输入您的银行账号, 请输入您所在的企业地址, 请输入您的企业电话, 发票记录, 抬头管理, 申请时间, 没有发票信息哟~, 个人普通发票, 企业普通发票, 企业专用发票, 添加新发票, 删除该发票?, 发票编号, 发票备注, 快递号, 总资产(元), 累计充值(元), 累计消费(元), 账单记录, 消费记录, 充值记录, 积分中心, 签到领积分, 赚积分抵现金, 领取优惠券, 满减享优惠, 最新拼团活动, 最新的优惠商品上架拼团, 立即参与, 当前限时秒杀, 最新商品秒杀进行中, 我的余额, 赠送, 其他, 注意事项, 冻结佣金为, 立即转入, 立即充值, 请输入金额, 转入余额, 转入余额后无法再次转出,确认是否转入余额, 转入成功, 正在支付, 充值金额必须为数字, 充值金额不能为0, 填写手机号码, 是否绑定账号, 绑定, 您已取消绑定!, 当前手机号, 设置新密码, 确认新密码, 手机号码不存在,无法发送验证码!, 请输入新密码, 两次输入的密码不一致!, 请输入验证码, 暂无退款订单~, 缺少订单号无法查看订单详情, 明细, 第七天, 第7天, 奖励, 已签到, 立即签到, 已累计签到, 据说连续签到第, 天可获得超额积分,一定要坚持签到哦~~~, 签到成功, 好的, 您今日已签到!, 暂无签到记录~, 保存海报, 长按保存图片, 分销海报, 小程序二维码需要发布正式版后才能获取到, 获取中, 暂无数据~, 提现记录, 提现总额, 佣金记录, 佣金明细, 分销等级, 昨日收益, 累积已提, 代理商申请, 立即提现, 推广名片, 推广人统计, 推广人订单, 推广订单, 事业部, 代理商, 推广人排行, 佣金排行, 员工列表, 您目前暂无推广权限, 商城购物可享, 折, 当前等级, 未达成, 今日成长值, 点, 我的成长值记录, 暂未解锁该等级, 点,需达到, 已解锁更高等级, 我的成长特权, 购物折扣, 专属徽章, 经验累积, 尊享客服, 签到, 可获得, 点经验, 每日签到可获得经验值,已签到, 去签到, 点经验/元, 购买商品可获得对应的经验值, 去购买, 点经验/人, 邀请好友注册商城可获得经验值, 去邀请, 积分数, 消费金额, 暂无经验记录, 账户登录, 微信登录, 手机号登录, 账户充值, 佣金转入, 周榜, 月榜, 周排行, 月排行, 语言切换, 点击前往, 查看全部, 查看订单, 无法获取图片信息, 长按或扫描查看, 点解锁, 确认修改, 保存修改, 退出登录, 付费会员, 地址信息, 我的推广, 砍价记录, 我的等级, 兑换, 申请中, 统计管理, 退款, 未发货, 当前为最新版本, 清除缓存, 确定清楚本地缓存数据吗, 缓存清理完成, 切换的账号不存在, 正在切换中, 确认退出登录, 我知道了, 系统错误, 请求失败, 邀请您加入, 图片上传中, 上传图片失败, 访问位置被拒绝, 系统定位已关闭, 需要定位权限, 订单核销, 当前可转入佣金为, 浏览记录, 签到奖励, 请输入内容, 单次限购, 永久限购, 《用户协议》, 《隐私协议》, 与, 请先阅读并同意协议, 绑定下级通知, 购买成功通知, 确认收货通知, 改价通知, 退款成功通知, 充值成功通知, 积分到账通知, 佣金到账通知, 砍价成功通知, 拼团成功通知, 拼团失败通知, 开团成功通知, 提现成功通知, 提现失败通知, 充值退款通知, 退款申请拒绝通知, 您有新的退款待处理, 您有新的订单待处理, 发货通知, 取消拼团通知, 参团成功通知, 你有个新的提现申请待处理, 你有个新的用户收货待处理, 提醒付款通知, 短信验证码, 到店自提, 快递配送, default */
  8517. /***/ (function(module) {
  8518. module.exports = JSON.parse("{\"选择地址\":\"Sélectionner l'adresse\",\"选择其它地址\":\"Sélectionner une autre adresse\",\"已选商品\":\"Marchandises sélectionnées\",\"清空\":\"Effacer\",\"¥\":\"€\",\"已售罄\":\"Épuisé\",\"已下架\":\"Retirer\",\"删除\":\"Supprimer\",\"商品券\":\"Produit\",\"品类券\":\"Catégorie\",\"通用券\":\"Général\",\"优惠券\":\"Bon\",\"满\":\"Complet\",\"元可用\":\" Utilisé\",\"无门槛券\":\"Pas de seuil\",\"领取后\":\"Recevoir\",\"天内可用\":\"Jours d'utilisation\",\"已领取\":\"Reçu\",\"立即领取\":\"Obtenir\",\"购物满\":\"Dépenser\",\"减\":\"Arrêt\",\"不限时\":\"Temps illimité\",\"秒杀\":\"Seckill\",\"砍价\":\"Marché\",\"拼团\":\"Groupe\",\"已售\":\"Vendu\",\"立即购买\":\"Acheter maintenant\",\"加入购物车\":\"Ajouter au panier\",\"选规格\":\"Options\",\"跳过\":\"Suivant\",\"立即体验\":\"Allez maintenant\",\"首页\":\"Accueil\",\"搜索\":\"Rechercher\",\"购物车\":\"Panier\",\"我的收藏\":\"Recueillir\",\"个人中心\":\"Mien\",\"券\":\"Vo.\",\"正在加载中\":\"Chargement...\",\"上拉加载更多\":\"Pull Up Loading More\",\"代付金额\":\"Montant\",\"共\":\"Un Total de\",\"件商品\":\" Objets\",\"订单包裹\":\"Commander des marchandises\",\"申请退款中\":\"Remboursement\",\"已退款\":\"Remboursé\",\"已完成\":\"Terminé\",\"件退款中\":\"Remboursement d'articles\",\"不支持配送\":\"En magasin uniquement\",\"不支持自提\":\"Livraison uniquement\",\"已评价\":\"Évalué\",\"评价\":\"Réviser\",\"申请退款\":\"Remboursement\",\"查看物流\":\"Logistique\",\"确认收货\":\"Prendre commande\",\"选择付款方式\":\"Sélectionner type de paiement\",\"支付\":\"Payer\",\"去付款\":\"Payer\",\"请选择要支付的订单\":\"Sélectionner la commande\",\"余额不足\":\"Solde insuffisant\",\"支付中\":\"Payant...\",\"缺少支付参数\":\"Paramètres de paiement manquants\",\"取消支付\":\"Annuler le paiement\",\"支付成功\":\"Paiement réussi\",\"支付失败\":\"Echec du paiement\",\"库存\":\"Stock\",\"限量\":\"Limite\",\"数量\":\"QTÉ\",\"我要参团\":\"Rejoindre le groupe\",\"确定\":\"D'accord\",\"热门推荐\":\"Recommandation à chaud\",\"最高返佣\":\"Le plus élevé\",\"推广享佣金\":\"Promouvoir\",\"立即分享\":\"Partager maintenant\",\"发现新版本\":\"Nouvelle version\",\"立即升级\":\"Améliorer\",\"下载进度\":\"Progrès\",\"店小二\":\"Serveur\",\"暂无记录\":\"Aucune donnée\",\"正在下载海报,请稍后再试\":\"Téléchargement de l'affiche, veuillez réessayer plus tard\",\"海报二维码生成失败\":\"Impossible de générer le code QR de l'affiche\",\"倒计时\":\"Compte à rebours\",\"天\":\"D\",\"时\":\"H\",\"分\":\"M\",\"秒\":\"S\",\"砍价成功\":\"Marché réussi\",\"活动已结束\":\"Activité arrêtée\",\"已砍至\":\"Couper à\",\"活动进行中\":\"Traitement...\",\"取消活动\":\"Annuler\",\"继续砍价\":\"Continuer\",\"暂无砍价记录\":\"Pas de données\",\"人正在参与\":\"Participer\",\"最低\":\"Le plus bas\",\"参与砍价\":\"Marché\",\"砍价列表\":\"Liste des bonnes affaires\",\"人查看\":\"Voir\",\"人分享\":\"Partager\",\"人参与\":\"Impliqué\",\"邀请您帮忙砍价\":\"Vous inviter à aider\",\"查看商品\":\"Afficher les éléments\",\"当前\":\"Actuel\",\"已砍\":\"Haché\",\"还剩\":\"Gauche\",\"立即参与砍价\":\"Négociez maintenant\",\"商品暂无库存\":\"Rupture de stock\",\"邀请好友帮砍价\":\"Aide pour inviter des amis\",\"已有\":\"Avoir\",\"位好友成功砍价\":\"Amis réussis\",\"帮好友砍一刀\":\"Aider les amis\",\"好友已砍价成功\":\"Amis déjà réussis\",\"我也要参与\":\"Je participerai\",\"已成功帮助好友砍价\":\"Aidez vos amis à réussir\",\"恭喜您砍价成功,快去支付\":\"Négociation réussie, allez payer\",\"立即支付\":\"Payer maintenant\",\"抢更多商品\":\"Attrapez plus\",\"砍价帮\":\"Gang de marchandage\",\"砍掉\":\"Couper \",\"更多\":\"Plus\",\"关闭\":\"Fermer\",\"点击加载更多\":\"Cliquez pour charger plus\",\"商品详情\":\"Détails\",\"砍价规则\":\"Règles de négociation\",\"您已砍掉\":\"Vous avez coupé\",\"元,听说分享次数越多砍价成功的机会越大哦\":\", Plus vous partagez, plus vous avez de chance de négocier avec succès\",\"成功帮砍\":\"Aide à couper avec succès\",\"您也可以砍价低价拿哦,快去挑选心仪的商品吧\":\"Vous pouvez aussi marchander et l'avoir à petit prix, allez choisir vos produits préférés\",\"发送给朋友\":\"Envoyer un ami\",\"微信好友\":\"Wechat ami\",\"微信朋友圈\":\"Moments WeChat\",\"生成海报\":\"Générer l'affiche\",\"砍价详情\":\"Détails de la bonne affaire\",\"分享成功\":\"Partage réussi\",\"分享失败\":\"Échec du partage\",\"该商品每人限购\":\"Ce produit est limité à l'achat par personne\",\"您的好友\":\"Votre ami\",\"邀请您砍价\":\"Je vous invite à couper\",\"人团\":\" Les gens \",\"去拼团\":\"Aller\",\"拼团列表\":\"Liste des groupes\",\"类型\":\"Tapez\",\"累计销量\":\"Total vendu\",\"限购\":\"Limite\",\"种规格可选\":\"Spécifications\",\"已拼\":\"Épelé \",\"件\":\"Pièce\",\"还差\":\"Seulement\",\"人成团\":\"succès\",\"去拼单\":\"Rejoindre\",\"查看更多\":\"Plus\",\"收起\":\"Ranger\",\"拼团玩法\":\"Processus de groupe\",\"开团/参团\":\"Démarrer\",\"邀请好友\":\"Invitation\",\"满员发货\":\"Livraison\",\"用户评价\":\"Revoir\",\"好评率\":\"Taux d'éloges\",\"产品介绍\":\"Détails\",\"单独购买\":\"Acheter seul\",\"立即开团\":\"Démarrer le groupe\",\"请选择\":\"Sélectionné\",\"商品\":\"Produit\",\"详情\":\"Détail\",\"缺少参数无法查看商品\":\"Impossible d'afficher le produit en raison de paramètres manquants\",\"参数错误\":\"Erreur de paramètre\",\"已选择\":\"Sélectionné\",\"保存成功\":\"Succès enregistré\",\"保存失败\":\"Échec de la sauvegarde\",\"人拼\":\"Les gens se battent\",\"剩余\":\"Restant\",\"结束\":\"Terminer\",\"恭喜您拼团成功\":\"Félicitations pour votre regroupement réussi\",\"人,拼团失败\":\"Personne est partie, le groupe a échoué\",\"拼团中,还差\":\"Dans le groupe, il y a encore\",\"人拼团成功\":\"Personne restante pour rejoindre le groupe avec succès\",\"邀请好友参团\":\"Inviter des amis à rejoindre le groupe\",\"再次开团\":\"Regrouper\",\"取消开团\":\"Annuler\",\"查看订单信息\":\"Voir la commande\",\"大家都在拼\":\"Tous les groupes\",\"更多拼团\":\"Plus\",\"邀请您参团\":\"Vous inviter à rejoindre\",\"你不是该团的成员\":\"Vous n'êtes pas membre du groupe\",\"已抢\":\"Volé\",\"抢购中\":\"Attrapez maintenant\",\"未开始\":\"Non démarré\",\"已结束\":\"Terminé\",\"暂无商品,去看点别的吧\":\"Aucun produit\",\"即将开始\":\"Non démarré\",\"距秒杀结束仅剩\":\"Il ne reste que la fin\",\"累计销售\":\"Vendu\",\"收藏\":\"Récupérer\",\"保存到手机\":\"Enregistrer sur téléphone\",\"长按图片可以保存到手机\":\"Appui long pour enregistrer sur le téléphone\",\"抢购详情页\":\"Page des détails de l'achat instantané\",\"二维码获取失败\":\"Impossible d'obtenir le code QR\",\"请选择属性\":\"Veuillez sélectionner une propriété\",\"提示:点击图片即可保存至手机相册\":\"Astuce : Cliquez sur l'image pour l'enregistrer dans l'album du téléphone\",\"拼团海报\":\"Affiche casse-tête\",\"砍价海报\":\"Affiche de marchandage\",\"海报生成中\":\"L'affiche est en cours de génération\",\"海报图片获取失败\":\"Impossible d'obtenir l'image de l'affiche\",\"海报\":\"Affiche\",\"已预定\":\"Réservé\",\"预售价\":\"Pré-vente\",\"立即预定\":\"Réservez maintenant\",\"开售时间\":\"Heure de la vente\",\"预售活动\":\"Événement avant-vente\",\"起\":\"Monter\",\"划线价\":\"ORP\",\"开通“超级会员”立省\":\"Ouvrir \\\"Super Member\\\" pour désactiver \",\"元\":\"€\",\"立即开通\":\"Activer maintenant\",\"预售活动时间\":\"Délai de prévente\",\"预售结束后\":\"Expédié dans\",\"天内发货\":\"Jours après la fin de la prévente\",\"活动\":\"Activité\",\"参与秒杀\":\"Seckill\",\"参与拼团\":\"Groupe\",\"复制口令\":\"Copier le code des marchandises\",\"复制成功\":\"Copie réussie\",\"推荐\":\"Recommandé\",\"缺少经纬度信息无法查看地图\":\"Les informations de latitude et de longitude manquantes ne permettent pas d'afficher la carte\",\"产品库存不足,请选择其它属性\":\"Stock de produit insuffisant, veuillez sélectionner un autre attribut\",\"立即退款\":\"Remboursement immédiat\",\"一键改价\":\"Modifier le prix\",\"订单备注\":\"Notes de commande\",\"商品总价\":\"Prix total\",\"原始邮费\":\"Ancien affranchissement\",\"实际支付\":\"Prix réel\",\"退款金额\":\"Prix remboursé\",\"请填写备注信息\":\"Veuillez remplir les remarques\",\"立即修改\":\"Modifier maintenant\",\"确认退款\":\"Confirmer le remboursement\",\"拒绝退款\":\"Remboursement refusé\",\"取消\":\"Annuler\",\"订单号\":\"ID de commande\",\"发货方式\":\"Mode\",\"发货类型\":\"Type d'expédition\",\"快递公司\":\"Express\",\"快递单号\":\"Nombre\",\"顺丰请输入单号 :收件人或寄件人手机号后四位\":\"Veuillez entrer le numéro de suivi pour SF Express : les quatre derniers chiffres du numéro de téléphone portable du destinataire ou de l'expéditeur\",\"例如:SF000000000000:3941\":\"Par exemple : SF000000000000:3941\",\"电子面单\":\"Fiche électronique\",\"预览\":\"Aperçu\",\"寄件人姓名\":\"Nom de l'expéditeur\",\"填写寄件人姓名\":\"Renseignez le nom de l'expéditeur\",\"寄件人电话\":\"Téléphone de l'expéditeur\",\"填写寄件人电话\":\"Renseignez le numéro de téléphone de l'expéditeur\",\"寄件人地址\":\"Adresse de l'expéditeur\",\"填写寄件人地址\":\"Renseignez l'adresse de l'expéditeur\",\"送货人\":\"Livreur\",\"确认提交\":\"Soumettre\",\"发货\":\"Navire\",\"送货\":\"Donner\",\"无需物流\":\"Pas besoin\",\"手动填写\":\"Remplir manuellement\",\"电子面单打印\":\"Fiche électronique\",\"填写快递单号\":\"Veuillez renseigner le numéro de courrier\",\"请选择电子面单\":\"Veuillez sélectionner un reçu électronique\",\"待付款\":\"Payer\",\"待发货\":\"A expédier\",\"待收货\":\"Recevoir\",\"待评价\":\"Évaluer\",\"售后/退款\":\"Remboursement\",\"数据统计\":\"Statistiques\",\"今日成交额\":\"Vendu aujourd'hui\",\"昨日成交额\":\"Vendu hier\",\"本月成交额\":\"Mois vendu\",\"今日订单数\":\"Commandes d'aujourd'hui\",\"昨日订单数\":\"Commandes d'hier\",\"本月订单数\":\"Commandes mensuelles\",\"详细数据\":\"Données détaillées\",\"日期\":\"Date\",\"订单数\":\"Nombre de commandes\",\"成交额\":\"Chiffre d'affaires\",\"立即核销\":\"Annulez maintenant\",\"查看\":\"Voir\",\"确定要核销此订单吗\":\"Êtes-vous sûr d'annuler cette commande\",\"确定核销\":\"Vérifier\",\"请输入核销码\":\"Veuillez entrer le code de vérification\",\"请输入正确的核销码\":\"Veuillez entrer le bon code de vérification\",\"查询中\":\"Interrogation\",\"订单\":\"Commander\",\"订单未备注,点击添加备注信息\":\"La commande n'a pas de remarques, cliquez pour ajouter des remarques\",\"复制\":\"Copier\",\"件商品,应支付\":\"Articles, devrait payer\",\"邮费\":\"Frais de port\",\"订单编号\":\"ID de commande\",\"下单时间\":\"Heure de la commande\",\"支付状态\":\"Statut du paiement\",\"已支付\":\"Payant\",\"未支付\":\"Impayé\",\"支付方式\":\"Méthode de paiement\",\"买家留言\":\"MSG acheteur\",\"支付金额\":\"Payer le montant\",\"优惠券抵扣\":\"Déduction coupon\",\"运费\":\"Tarif\",\"实付款\":\"Montant réel\",\"配送方式\":\"Méthode de livraison\",\"快递\":\"Express\",\"送货人电话\":\"Téléphone courrier\",\"确认付款\":\"Confirmer le paiement\",\"去发货\":\"A expédier\",\"改价成功\":\"Prix modifié avec succès\",\"改价失败\":\"Le changement de prix a échoué\",\"请输入备注\":\"Veuillez entrer une note\",\"退款中\":\"Remboursement\",\"部分退款中\":\"Remboursement partiel\",\"件商品,实付款\":\"Marchandises payées\",\"同意退货\":\"Accepter le retour\",\"待用户发货\":\"Non expédié\",\"请输入正确的金额\":\"Veuillez saisir le montant correct\",\"今天\":\"Aujourd'hui\",\"昨天\":\"Hier\",\"最近7天\":\"7 derniers jours\",\"本月\":\"Mois\",\"自定义\":\"Personnaliser\",\"营业额(元)\":\"Chiffre d'affaires\",\"订单量(份)\":\"Quantité\",\"增长率\":\"Taux à la hausse\",\"增长\":\"Augmenter\",\"单位\":\"Unité\",\"元.\":\"Yuan\",\"分.\":\"Cents\",\"固定\":\"Fixé\",\"指定范围\":\"Portée\",\"提交时间\":\"Heure de soumission\",\"原因\":\"Raison\",\"暂无申请记录,快去申请吧!\":\"Aucun dossier de candidature pour le moment, postulez maintenant !\",\"没有更多啦\":\"Pas plus\",\"待审核\":\"En attente de révision\",\"审核通过\":\"Révision réussie\",\"审核未通过\":\"Échec de la révision\",\"编辑\":\"Modifier\",\"重新提交\":\"Resoumettre\",\"会员优惠价\":\"Réduction VIP\",\"余额支付\":\"Paiement du solde\",\"可用余额\":\"Équilibre\",\"微信支付\":\"WeChat Paye\",\"确认\":\"Confirmer\",\"支付提醒\":\"Rappel de paiement\",\"线下支付已关闭,请点击确认按钮返回主页\":\"Le paiement hors ligne a été clôturé, veuillez cliquer sur le bouton de confirmation pour revenir à la page d'accueil\",\"请输入支付金额\":\"Veuillez entrer le montant du paiement\",\"正在确认\":\"Confirmation\",\"进入商城\":\"Entrez centre commercial\",\"代理商名称\":\"Nom de l'agence\",\"请输入代理商名称\":\"Veuillez entrer le nom de l'agence\",\"用户姓名\":\"Votre nom\",\"请输入姓名\":\"Veuillez entrer votre nom\",\"联系电话\":\"Votre téléphone\",\"请输入手机号\":\"Veuillez entrer le numéro de téléphone\",\"验证码\":\"Code OTP\",\"填写验证码\":\"Remplir le code OTP\",\"邀请码\":\"Code d'invitation\",\"请输入代理商邀请码\":\"Entrez le code d'invitation\",\"请上传营业执照及行业相关资质证明图片\":\"Veuillez télécharger des photos des licences commerciales et des certificats de qualification liés à l'industrie\",\"图片最多可上传10张,图片格式支持JPG、PNG、JPEG\":\"Jusqu'à 10 images peuvent être téléchargées, et le format d'image prend en charge JPG, PNG, JPEG\",\"上传图片\":\"Télécharger\",\"已阅读并同意\":\"Lire et accepter\",\"代理商协议\":\"Contrat d'agence\",\"提交申请\":\"Soumettre la candidature\",\"代理商入驻协议\":\"Contrat d'agent\",\"恭喜,您的资料提交成功!\":\"Félicitations, Soumis avec succès !\",\"返回首页\":\"Retour à la maison\",\"恭喜,您的资料通过审核!\":\"Félicitations, examen réussi !\",\"您的申请未通过!\":\"Votre candidature a été rejetée !\",\"重新申请\":\"Réappliquer\",\"获取验证码\":\"Obtenir le code OTP\",\"请输入正确的手机号码\":\"Veuillez entrer le bon numéro de téléphone\",\"重新获取\":\"Réacquérir\",\"请上传营业执照\":\"Veuillez télécharger la licence commerciale\",\"请勾选并同意入驻协议\":\"Veuillez cocher et accepter la convention d'occupation\",\"专题栏\":\"Colonne Sujet\",\"暂无数据\":\"Aucune donnée\",\"请输入卡号\":\"Veuillez entrer le numéro de carte\",\"请输入卡密\":\"Veuillez saisir votre mot de passe\",\"确认激活\":\"Confirmer\",\"SVIP会员尊享权\":\"Privilèges de membre SVIP\",\"正在激活\":\"Activation\",\"已使用\":\"Occasion\",\"永久SVIP会员\":\"Membre SVIP permanent\",\"SVIP会员\":\"Membre SVIP\",\"到期\":\"maturité\",\"您与\":\"Toi avec\",\"商城的第\":\"Centre commercial\",\"天.\":\" Jours.\",\"已累积为您节省\":\"Économies cumulées pour vous\",\"开通即享会员权益\":\"Profitez des avantages membres\",\"续费会员\":\"Renouvellement\",\"开通会员\":\"Rejoindre SVIP\",\"有效期至\":\"Valable jusqu'au\",\"试用\":\"Essayez\",\"购买即视为同意\":\"Achat avec consentement\",\"会员用户协议\":\"Accord SVIP\",\"点击兑换卡密\":\"Cliquez pour utiliser la carte\",\"会员优惠券\":\"Coupon SVIP\",\"SVIP商品推荐\":\"SVIP recommande\",\"商城价\":\"Prix centre commercial\",\"激活会员卡\":\"Activer la carte\",\"支付宝支付\":\"Alipay\",\"成功开启0元试用\":\"L'essai à 0 yuan a été ouvert avec succès\",\"确认绑定\":\"Confirmer la liaison\",\"绑定成功\":\"La liaison a réussi\",\"商城客服已离线\":\"Le service client est hors ligne\",\"我要反馈\":\"Je veux des commentaires\",\"请填写内容\":\"Veuillez remplir le contenu\",\"提交\":\"Soumettre\",\"精品推荐\":\"Recommandé\",\"热门榜单\":\"Populaire\",\"首发新品\":\"Nouveau\",\"促销单品\":\"Promotionnel\",\"预告\":\"Avis\",\"回放\":\"Lecture\",\"进行中\":\"Traitement\",\"发送客服\":\"Envoyer\",\"客服连接中\":\"Le service client se connecte\",\"连接失败\":\"Échec de la connexion\",\"提示\":\"Indice\",\"客服已下线,是否需要反馈?\":\"Le service client est déconnecté, avez-vous besoin d'un retour ?\",\"和好友一起分享\":\"Partager avec des amis\",\"积分抵扣\":\"Déduction de points\",\"已开票\":\"Facturé\",\"未开票\":\"Non facturé\",\"发票信息\":\"Informations sur la facture\",\"发票抬头\":\"Facture\",\"发票抬头类型\":\"Type d'en-tête de facture\",\"个人\":\"PAR \",\"企业\":\"COM\",\"发票类型\":\"Type de facture\",\"电子普通发票\":\"Facture Générale Electronique\",\"电子专用发票\":\"Facture spéciale électronique\",\"企业税号\":\"Taxe sur les entreprises\",\"联系信息\":\"Coordonnées\",\"真实姓名\":\"Nom réel\",\"联系邮箱\":\"Courriel\",\"抬头选择\":\"Sélection de la tête\",\"默认\":\"Par défaut\",\"普通\":\"Ordinaire\",\"专用\":\"Dédié\",\"您还没有添加发票信息哟\":\"Vous n'avez pas ajouté d'informations de facturation\",\"添加新的抬头\":\"Ajouter un nouvel en-tête\",\"不开发票\":\"Pas de facture\",\"抽奖\":\"Loterie\",\"全选\":\"Tout sélectionner\",\"属性\":\"Attributs\",\"请填写具体地址\":\"Veuillez renseigner l'adresse spécifique\",\"省\":\"Province\",\"市\":\"Ville\",\"区\":\"Zone\",\"添加成功\":\"Ajouter avec succès\",\"您已拒绝导入微信地址权限\":\"Vous avez refusé l'autorisation d'importer des adresses WeChat\",\"是否进入权限管理,调整授权?\":\"Entrez-vous dans la gestion des autorisations et ajustez-vous l'autorisation ?\",\"已取消\":\"Annulé\",\"添加失败\":\"Échec de l'ajout\",\"请填写收货人姓名\":\"Veuillez renseigner le nom du destinataire\",\"请选择所在地区\":\"Veuillez sélectionner votre région\",\"请填写详细地址\":\"Veuillez renseigner l'adresse détaillée\",\"星\":\"Étoile\",\"商品满足你的期待么?说说你的想法,分享给想买的他们吧\":\"Le produit répond-il à vos attentes ? Dites-nous ce que vous en pensez et partagez-le avec ceux qui veulent l'acheter\",\"立即评价\":\"Évaluer maintenant\",\"商品质量\":\"Qualité du produit\",\"服务态度\":\"Attitude de service\",\"缺少参数\":\"Paramètres manquants\",\"请填写你对宝贝的心得\":\"Merci de renseigner votre avis sur le produit\",\"正在发布评论\":\"Commentaire de publication\",\"感谢您的评价\":\"Merci pour votre avis\",\"评价完成\":\"Revue terminée\",\"恭喜您\":\"Félicitations\",\"获得\":\"Obtenir\",\"机会\":\"Le hasard\",\"领取成功\":\"Reçu avec succès\",\"评分\":\"Score\",\"全部\":\"TOUS\",\"好评\":\"Louange\",\"中评\":\"Moyenne\",\"差评\":\"Mauvais\",\"加载更多\":\"Charger plus\",\"千米距离\":\"à des kilomètres\",\"搜索商品名称\":\"Rechercher Produit\",\"价格\":\"Prix\",\"销量\":\"Vendu\",\"新品\":\"Nouveau\",\"已全部加载\":\"Tous chargés\",\"缺少订单号\":\"ID de commande manquant\",\"退货件数\":\"Numéro remboursé\",\"退款类型\":\"Type de remboursement\",\"退款原因\":\"Raison du remboursement\",\"备注说明\":\"Remarque\",\"填写备注信息,100字以内\":\"Remarques de moins de 100 mots\",\"仅退款\":\"Remboursement uniquement\",\"退货并退款\":\"Retour et remboursement\",\"申请成功\":\"Application réussie\",\"请先选择退货商品\":\"Veuillez d'abord sélectionner l'article à retourner\",\"搜索历史\":\"Historique des recherches\",\"热门搜索\":\"Recherche rapide\",\"请输入要搜索的商品\":\"Veuillez saisir le produit que vous souhaitez rechercher\",\"正在搜索中\":\"Recherche\",\"中奖记录\":\"Record gagnant\",\"我的奖品\":\"Mon prix\",\"活动规则\":\"Règle d'activité\",\"昵称\":\"Surnom\",\"序号\":\"Série\",\"奖品名称\":\"Nom du prix\",\"获奖时间\":\"Temps gagnant\",\"商家暂未上架活动哦\":\"Le marchand n'a pas encore répertorié l'événement\",\"获取抽奖信息\":\"Obtenir des informations sur le concours\",\"奖品类型\":\"Type de prix\",\"立即兑换\":\"Échangez maintenant\",\"兑换时间\":\"Temps d'échange\",\"暂无中奖记录\":\"Pas de fiche gagnante\",\"积分\":\"Pointer\",\"余额\":\"Équilibre\",\"红包\":\"Paiement\",\"设置收货地址\":\"Définir l'adresse de livraison\",\"暂无门店信息\":\"Pas d'informations sur le magasin\",\"剩余积分\":\"Points restants\",\"当前积分\":\"Points courants\",\"开具发票\":\"Facture\",\"请填写\":\"Veuillez remplir\",\"配送运费\":\"Frais de port\",\"会员商品优惠\":\"Offres de produits\",\"会员运费优惠\":\"Offres de livraison\",\"合计\":\"Totale\",\"使用微信快捷支付\":\"Paiement rapide WeChat\",\"使用支付宝支付\":\"Payer avec Alipay\",\"线下支付\":\"Paiements hors ligne\",\"使用线下付款\":\"Utiliser le paiement hors ligne\",\"好友代付\":\"Ami paie\",\"找微信好友支付\":\"Rechercher des amis pour payer\",\"立即使用\":\"Utiliser\",\"请选择要购买的商品\":\"Veuillez sélectionner un article à acheter\",\"发票\":\"Facture\",\"不使用\":\"Ne pas utiliser\",\"订单创建成功\":\"Commande créée avec succès\",\"请选择支付方式\":\"Veuillez sélectionner le mode de paiement\",\"请选择收货地址\":\"Veuillez sélectionner l'adresse de livraison\",\"请填写联系人或联系人电话\":\"Veuillez renseigner la personne de contact ou le numéro de téléphone de contact\",\"暂无门店,请选择其他方式\":\"Aucun magasin actuellement, veuillez choisir un autre moyen\",\"请输入\":\"Veuillez entrer\",\"请输入正确的\":\"Veuillez entrer le bon \",\"请上传\":\"Veuillez télécharger\",\"订单支付中\":\"Payer\",\"请按以上退货信息将商品退回\":\"Veuillez retourner l'article avec les informations\",\"请联系管理员获取退货地址\":\"Veuillez contacter l'administrateur pour l'adresse de retour\",\"待核销\":\"Annulé\",\"核销信息\":\"Informations de radiation\",\"营业时间\":\"Heures d'ouverture\",\"每日\":\"Quotidien\",\"使用说明\":\"Instructions d'utilisation\",\"可将二维码出示给店员扫描或提供数字核销码\":\"Le code QR peut être présenté à l'employé pour scanner ou fournir un code de vérification numérique\",\"可将二维码出示给配送员进行核销\":\"Le code QR peut être présenté au coursier pour vérification\",\"查看位置\":\"Afficher l'emplacement\",\"拒绝原因\":\"Raison du refus\",\"联系客服\":\"Contacter\",\"商家备注\":\"Notes marchandes\",\"收货人\":\"Récepteur\",\"收货地址\":\"Adresse du navire\",\"配送人姓名\":\"Nom du navire\",\"拨打\":\"Appeler\",\"虚拟发货\":\"Vaisseau virtuel\",\"已发货,请注意查收\":\"Expédié, veuillez vérifier\",\"虚拟备注\":\"Notes virtuelles\",\"总代付\":\"Montant total\",\"申请开票\":\"Appliquer la facture\",\"查看发票\":\"Voir facture\",\"取消订单\":\"Annuler\",\"立即付款\":\"Payer\",\"批量退款\":\"Remboursement groupé\",\"查看拼团\":\"Voir le groupe\",\"再次购买\":\"Acheter à nouveau\",\"取消申请\":\"Annuler l'application\",\"填写退货信息\":\"Informations de retour\",\"查看退货物流\":\"Logistique\",\"您确认放弃此次申请吗\":\"Êtes-vous sûr de vouloir abandonner cette application\",\"操作成功\":\"Opération réussie\",\"订单信息不存在\":\"Les informations de la commande n'existent pas\",\"为保障权益,请收到货确认无误后,再确认收货\":\"Afin de protéger les droits et intérêts, veuillez confirmer la réception de la marchandise après avoir confirmé que la marchandise est correcte.\",\"删除订单\":\"Supprimer la commande\",\"确定删除该订单\":\"Confirmer la suppression de la commande\",\"删除成功\":\"Supprimé avec succès\",\"确认取消该订单\":\"Confirmer l'annulation de la commande\",\"订单信息\":\"Informations sur la commande\",\"消费订单\":\"Commander\",\"总消费\":\"Montant total\",\"预售\":\"Pré-vente\",\"线下付款,未支付\":\"Hors ligne non payé\",\"未核销\":\"Non radié\",\"件商品,总金额\":\" articles, montant total \",\"查看详情\":\"Voir\",\"暂无订单\":\"Pas encore de commande\",\"缺少订单号无法取消订单\":\"Impossible d'annuler la commande sans numéro de commande\",\"订单支付成功\":\"Commande payée avec succès\",\"订单支付失败\":\"La commande payée a échoué\",\"暂未支付\":\"Pas encore payé\",\"失败原因\":\"Raison d'échec\",\"重新购买\":\"Rachat\",\"重新支付\":\"Payer à nouveau\",\"赠送优惠券\":\"Offrir des coupons\",\"有效期\":\"Validité\",\"缺少参数无法查看订单支付状态\":\"Les paramètres manquants ne permettent pas de voir l'état du paiement de la commande\",\"最多可上传3张\":\"Jusqu'à 3 téléchargements\",\"请选择产品\":\"Veuillez sélectionner un produit\",\"该产品没有更多库存了\":\"Il n'y a plus de stock pour ce produit\",\"优品推荐\":\"Meilleure recommandation\",\"暂无产品\":\"Aucun produit pour le moment\",\"重新选择\":\"Resélectionner\",\"请选择数量\":\"Veuillez sélectionner la quantité\",\"砍价专区·BARGAINING\":\"NÉGOCIATION\",\"立即砍价\":\"Couper maintenant\",\"拼团活动\":\"Groupe\",\"人拼团成功.\":\"Les gens ont réussi\",\"人参团\":\" Groupe Ginseng\",\"拼团价\":\"Prix groupe\",\"已过期\":\"Expiré\",\"关注\":\"Suivre\",\"推荐好货\":\"Recommander des marchandises\",\"暂无商品\":\"Aucun produit pour le moment\",\"限时秒杀\":\"Pic limité dans le temps\",\"抢\":\"Attraper\",\"广告位\":\"espace ADV\",\"精彩内容\":\"Faits saillants\",\"砍价模块,暂无数据\":\"Module de bonnes affaires, pas encore de données\",\"砍价活动\":\"Marché\",\"呼朋唤友来砍价\":\"Appelez des amis à bon marché\",\"拼团模块,暂无数据\":\"Module de groupe, pas encore de données\",\"享超值开团价\":\"Profitez des tarifs groupe au meilleur rapport qualité-prix\",\"优惠券,暂无数据\":\"Coupon, pas de données temporairement\",\"领取今日好券\":\"Obtenez le bon coupon d'aujourd'hui\",\"可用\":\" Utilisé\",\"领取\":\"Réclamer\",\"客服\":\"Service\",\"商品列表,暂无数据\":\"Pas de données temporairement\",\"搜索商品\":\"Rechercher Produit\",\"暂无图片,请上传图片\":\"Aucune image, veuillez télécharger\",\"首发新品,暂无数据\":\"Premier nouveau produit, pas encore de données\",\"多个优质商品最新上架\":\"Les dernières marchandises de haute qualité sur les étagères\",\"暂无新闻,请上传新闻\":\"Aucune nouvelle, veuillez télécharger la nouvelle\",\"热度 TOP\":\"Chauffer le HAUT\",\"排行榜、暂无数据\":\"Classement, aucune donnée temporairement\",\"促销单品,暂无数据\":\"Articles promotionnels, pas de données temporairement\",\"库存商品优惠促销活动\":\"Activités promotionnelles pour les marchandises en stock\",\"精品推荐,暂无数据\":\"Recommandation boutique, pas encore de données\",\"上百种商品分类任您选择\":\"Des centaines de catégories de produits parmi lesquelles choisir\",\"秒杀模块,暂无数据\":\"Module Seckill, aucune donnée temporairement\",\"场\":\"Site\",\"暂无数据,请设置\":\"Aucune donnée, veuillez définir\",\"暂无数据,请先添加分类\":\"Aucune donnée, veuillez d'abord ajouter une classification\",\"暂无标题\":\"Pas de titre temporairement\",\"诚意推荐品质商品\":\"Recommander des produits de qualité en toute bonne foi\",\"点击“立即关注”即可关注公众号\":\"Cliquez sur 'suivre maintenant' pour suivre le compte officiel\",\"立即关注\":\"Suivre maintenant\",\"添加到我的小程序, 微信首页下拉即可访问商城。\":\"Ajoutez-le à mon applet, et vous pourrez accéder au centre commercial en déroulant la page d'accueil de wechat\",\"点击\":\"Cliquez\",\"服务协议与隐私政策\":\"Contrat de service et politique de confidentialité\",\"请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。\":\"Veuillez vous assurer de lire attentivement et de bien comprendre les termes du contrat de service et de la politique de confidentialité, y compris, mais sans s'y limiter : afin de vous fournir la messagerie instantanée, le partage de contenu et d'autres services, nous devons récupérer votre appareil informations, journaux d'opérations et autres informations personnelles. Vous pouvez afficher, modifier, supprimer des informations personnelles et gérer votre autorisation dans Paramètres\",\"你可以阅读\":\"Vous savez lire\",\"《服务协议与隐私政策》\":\"《Contrat de service et politique de confidentialité》\",\"了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。\":\"En savoir plus. Si vous êtes d'accord, veuillez cliquer sur J'accepte pour commencer à accepter nos services\",\"我同意\":\"Je suis d'accord\",\"残忍拒绝\":\"Rejet cruel\",\"下拉加载更多\":\"Déroulez plus de charge\",\"网络连接断开\":\"Connexion réseau déconnectée\",\"请检查情况:\":\"Veuillez vérifier l'état:\",\"在设置中是否已开启网络权限\":\"Si l'autorisation réseau est activée dans les paramètres\",\"当前是否处于弱网环境\":\"Actuellement dans un environnement réseau faible\",\"版本是否过低,升级试试吧\":\"Si la version est trop basse, essayez de mettre à jour\",\"重新连接\":\"Se reconnecter\",\"加载中\":\"Chargement\",\"没有更多内容啦~\":\"Plus de contenu~\",\"100%正品保证\":\"100% authentique\",\"所有商品精挑细选\":\"Soyez très sélectif\",\"售后无忧\":\"Sans souci après vente\",\"管理\":\"Tube\",\"购物数量\":\"Quantité d'achat\",\"请重新选择商品规格\":\"Veuillez resélectionner la spécification du produit\",\"重选\":\"Resélection\",\"失效商品\":\"Marchandises invalides\",\"失效\":\"Échec\",\"该商品已失效\":\"La marchandise a expiré\",\"立即下单\":\"Commander maintenant\",\"我也是有底线的\":\"J'ai aussi une ligne de fond\",\"产品库存不足,请选择其它\":\"Inventaire de produits insuffisant, veuillez en sélectionner un autre\",\"添加购物车成功\":\"Le panier a été ajouté avec succès\",\"清除成功\":\"Le nettoyage a réussi\",\"暂无兑换记录~\":\"Pas d'enregistrement d'échange~\",\"大家都在换\":\"Tout le monde change\",\"人兑换\":\" Echange de personne\",\"轻松赚积分\":\"Gagnez des points facilement\",\"购买商品\":\"Acheter des marchandises\",\"购买商品可获得积分奖励\":\"Récompense en points pour l'achat de biens\",\"去完成\":\"Aller\",\"每日签到活动\":\"Activités d'enregistrement quotidiennes\",\"每日签到可获得积分奖励\":\"L'enregistrement quotidien peut obtenir des points de récompense\",\"九宫格抽奖活动\":\"Loterie Jiugongge\",\"幸运抽奖可获得积分奖励\":\"Un tirage au sort peut rapporter des points\",\"我的积分\":\"Mes points\",\"每日签到\":\"Connexion quotidienne\",\"积分抽奖\":\"Loterie aux points\",\"兑换记录\":\"Enregistrement d'échange\",\"已兑换\":\"Racheté\",\"无法兑换\":\"Impossible d'échanger\",\"[默认]\":\"[Par défaut]\",\"可用积分\":\"Points disponibles\",\"快递费用\":\"Frais express\",\"免运费\":\"Frais de port gratuits\",\"备注信息\":\"Remarques\",\"请添加备注(150字以内)\":\"Veuillez ajouter des remarques (moins de 150 mots)\",\"使用线上支付宝支付\":\"Payer avec Alipay en ligne\",\"可用余额:\":\"Solde :\",\"选择线下付款方式\":\"Sélectionner le mode de paiement hors ligne\",\"正在加载…\":\"Chargement…\",\"可用积分不足!\":\"Points disponibles insuffisants !\",\"订单状态\":\"Statut de la commande\",\"支付积分\":\"Payer des points\",\"备注\":\"Remarques\",\"配送核销码\":\"Code de vérification de livraison\",\"当前可用余额:\":\"Solde disponible actuel:\",\"正在加载\":\"Chargement\",\"缺少经纬度信息无法查看地图!\":\"La carte ne peut pas être visualisée sans les informations de longitude et de latitude!\",\"商品兑换成功\":\"Racheté avec succès\",\"兑换方式\":\"Méthode d'échange\",\"积分兑换\":\"Echange de points\",\"兑换积分\":\"Échanger des points\",\"取消兑换\":\"Annuler l'échange\",\"缺少参数无法查看订单兑换状态\":\"Le statut d'échange de commande ne peut pas être visualisé sans paramètres\",\"用户离开了\":\"L'utilisateur est parti\",\"兑换成功\":\"Racheté avec succès\",\"物流公司\":\"Société de logistique\",\"复制单号\":\"Copier le document n°\",\"设为默认\":\"Définir par défaut\",\"添加新地址\":\"Ajouter une nouvelle adresse\",\"导入微信地址\":\"Importer l'adresse wechat\",\"取消选择\":\"Désélectionner\",\"您设置的默认地址不存在!\":\"L'adresse par défaut que vous avez définie n'existe pas !\",\"设置成功\":\"Paramétrage réussi\",\"您删除的地址不存在!\":\"L'adresse que vous avez supprimée n'existe pas !\",\"获取头像\":\"Obtenir un avatar\",\"请点击授权\":\"Veuillez cliquer sur autoriser\",\"绑定手机号\":\"Associer numéro mobile\",\"永久\":\"Permanente\",\"会员到期\":\"Expiration de l'abonnement\",\"未开通会员\":\"Membre non ouvert\",\"查看会员权益\":\"Voir les avantages de l'abonnement\",\"立即续费\":\"Renouveler\",\"立即激活\":\"Activation\",\"会员可享多项权益\":\"Profitez de multiples avantages\",\"订单中心\":\"Ma commande\",\"我的服务\":\"Mon service\",\"隐私协议\":\"Confidentialité\",\"商家管理\":\"Gestion commerciale\",\"更新用户信息成功\":\"Informations utilisateur mises à jour avec succès\",\"客服接待\":\"Réception\",\"点击复制网址去浏览器中打开\":\"Cliquez sur Copier l'URL pour l'ouvrir dans le navigateur\",\"点击复制\":\"Cliquez sur Copier\",\"完成支付\":\"Terminer le paiement\",\"点击右上角\":\"Cliquez sur le coin supérieur droit\",\"选择 在浏览器 打开,去支付宝支付\":\"Sélectionner pour ouvrir dans le navigateur et payer via Alipay\",\"支付订单不存在,页面将在2秒后自动关闭!\":\"L'ordre de paiement n'existe pas, et la page se fermera automatiquement dans 2 secondes !\",\"正在支付中\":\"Payant\",\"支付订单不存在,页面将在2秒后自动关闭\":\"L'ordre de paiement n'existe pas, et la page se fermera automatiquement dans 2 secondes\",\"复制失败\":\"La réplication a échoué\",\"您目前的排名\":\"Votre classement actuel\",\"您目前暂无排名\":\"Vous êtes actuellement classé\",\"暂无排名~\":\"Aucun classement ~\",\"输入手机号\":\"Entrez le numéro de portable\",\"输入验证码\":\"Entrez le code de vérification\",\"立即登录\":\"Connectez-vous maintenant\",\"请填写手机号码\":\"Veuillez renseigner votre numéro de mobile\",\"请填写验证码\":\"Veuillez renseigner le code de vérification\",\"请输入正确的验证码\":\"Veuillez entrer le bon code de vérification\",\"正在登录中\":\"Connexion\",\"登录成功\":\"Connexion réussie\",\"获取授权\":\"Obtenir l'autorisation\",\"获取微信的手机号授权\":\"Obtenir l'autorisation du numéro de mobile wechat\",\"获取微信手机号\":\"Obtenir le numéro de mobile wechat\",\"输入手机号码\":\"Entrez le numéro de portable\",\"填写登录密码\":\"Renseignez le mot de passe de connexion\",\"登录\":\"Connexion\",\"快速登录\":\"Connexion rapide\",\"账号登录\":\"Connexion au compte\",\"其他方式登录\":\"Connexion par d'autres méthodes\",\"登录中\":\"Connexion\",\"获取用户信息失败\":\"Impossible d'obtenir les informations sur l'utilisateur\",\"请绑定手机号后,继续操作\":\"Veuillez lier votre numéro de mobile et continuer l'opération\",\"错误信息\":\"Informations d'erreur\",\"用户点击确定\":\"L'utilisateur clique sur OK\",\"用户点击取消\":\"L'utilisateur clique sur Annuler\",\"登录失败\":\"Echec de connexion\",\"请勿重复点击\":\"Ne pas cliquer plusieurs fois\",\"请填写密码\":\"Veuillez renseigner le mot de passe\",\"您输入的密码过于简单\":\"Le mot de passe que vous avez entré est trop simple\",\"请填写账号\":\"Veuillez renseigner le numéro de compte\",\"请输入正确的账号\":\"Veuillez entrer le bon numéro de compte\",\"[图片]\":\"[Image]\",\"[语音]\":\"[Voix]\",\"[商品]\":\"[Produit]\",\"[订单]\":\"[Commande]\",\"亲、暂无消息记录哟!\":\"Cher, pas encore d'enregistrement de message !\",\"站内消息\":\"Message en station\",\"客服消息\":\"Message service client\",\"通知于\":\"Notifié le\",\"获取详情中\":\"Obtenir les détails\",\"代付订单创建成功,发给好友帮你付款吧~\":\"Ordre de paiement créé avec succès, envoyez-le à votre ami pour vous aider à payer ~\",\"帮我付一下这件商品了,谢谢~\":\"Aidez-moi à payer cette marchandise, merci ~\",\"已经有人替我代付,谢谢啦~\":\"Quelqu'un a payé pour moi, merci ~\",\"谢谢你帮我支付,么么哒~\":\"Merci de m'avoir aidé à payer, Moda ~\",\"我已为你代付成功,商家正在努力发货中~\":\"J'ai payé avec succès pour vous, et le marchand essaie de vous livrer ~\",\"好友代付成功,商家正在努力发货中~\":\"Le paiement d'un ami a réussi, et le marchand essaie de livrer ~\",\"发送给微信好友\":\"Envoyer aux amis wechat\",\"查看订单详情\":\"Voir les détails de la commande\",\"订单已支付\":\"Commande payée\",\"如果订单申请退款,已支付金额将原路退还给您\":\"Si la commande demande un remboursement, le montant payé vous sera restitué de la même manière\",\"代付成功\":\"Paiement réussi\",\"谢谢你为我付款,还可以再去看看其他商品哟~\":\"Merci d'avoir payé pour moi, et vous pourrez aller voir d'autres biens ~\",\"该订单暂未支付\":\"La commande n'a pas encore été payée\",\"人\":\" Personne\",\"推广人数\":\"Nombre de promoteurs\",\"一级\":\"Niveau 1\",\"二级\":\"Niveau 2\",\"点击搜索会员名称\":\"Cliquez pour rechercher le nom du membre\",\"团队排序\":\"Tri des équipes\",\"金额排序\":\"Tri des montants\",\"订单排序\":\"Ordre de tri\",\"单\":\" Commandes\",\"加入时间\":\"Temps de jonction\",\"累积推广订单\":\"Compte de commandes\",\"本月累计推广订单\":\"Commandes mensuelles\",\"返佣\":\"Remise\",\"暂未返佣\":\"Pas de remboursement\",\"返佣时间\":\"Temps de remise\",\"单号\":\"Numéro de commande\",\"暂无推广订单~\":\"Aucune commande de promotion ~\",\"推广订单列表\":\"Liste des commandes de promotions\",\"找回密码\":\"Récupérer le mot de passe\",\"填写您的新密码\":\"Renseignez votre nouveau mot de passe\",\"加载失败\":\"Échec de chargement\",\"点击授权登录您的客服工作台\":\"Cliquez sur Autoriser pour vous connecter à votre espace de travail du service client\",\"授权登录\":\"Connexion autorisée\",\"没有登录的code,请重新扫码\":\"Code sans connexion, veuillez scanner à nouveau le code\",\"员工人数\":\"Nombre d'employés\",\"邀请\":\"Invitation\",\"分佣比例\":\"Échelle\",\"修改分佣比例\":\"Modifier proportion\",\"请输入百分比\":\"Veuillez saisir un pourcentage\",\"删除员工\":\"Supprimer l'employé\",\"确定删除该员工?\":\"Êtes-vous sûr de vouloir supprimer cet employé ?\",\"请输入比例\":\"Veuillez entrer une échelle\",\"分类\":\"Classe\",\"我的\":\"Mien\",\"姓名\":\"Nom\",\"请输入联系电话\":\"Veuillez entrer le numéro de contact\",\"所在地区\":\"Emplacement\",\"详细地址\":\"Adresse\",\"设置为默认地址\":\"Définir comme adresse par défaut\",\"立即保存\":\"Enregistrer maintenant\",\"浙江省\":\"Zhejiang\",\"杭州市\":\"Hangzhou\",\"滨江区\":\"District de Binjiang\",\"广东省\":\"Province du Guangdong\",\"广州市\":\"Guangzhou\",\"番禺区\":\"Panyu\",\"修改地址\":\"Modifier l'adresse\",\"添加地址\":\"Ajouter une adresse\",\"已取消!\":\"Annulé!\",\"请填写联系电话\":\"Veuillez renseigner le numéro de contact\",\"保存中\":\"Sauvegarder\",\"修改成功\":\"Modification réussie\",\"消费\":\"Consommation\",\"充值\":\"Recharger\",\"暂无账单的记录哦~\":\"Pas d'enregistrement de facture temporairement~\",\"点击【立即注销】即代表您已经同意《用户注销协议》\":\"Cliquer sur [déconnexion immédiate] signifie que vous avez accepté l'accord de déconnexion de l'utilisateur\",\"立即注销\":\"Se déconnecter maintenant\",\"是否确认注销\":\"Confirmer la déconnexion\",\"注销后无法恢复,请谨慎操作\":\"Impossible de récupérer après la déconnexion, veuillez faire attention\",\"注销\":\"Déconnexion\",\"持卡人\":\"Titulaire de la carte\",\"请输入持卡人姓名\":\"Saisir le nom du titulaire de la carte\",\"卡号\":\"Numéro de carte\",\"请填写卡号\":\"Veuillez renseigner le numéro de carte\",\"银行\":\"Banque\",\"提现\":\"Retrait\",\"最低提现金额\":\"Montant minimum de retrait\",\"当前可提现金额\":\"Montant actuel pouvant être retiré\",\"冻结佣金\":\"Commission gelée\",\"说明: 每笔佣金的冻结期为\":\"Remarque : la période de gel de chaque commission est\",\"天,到期后可提现\":\"Jours, retirables à l'expiration\",\"账号\":\"Compte\",\"请填写您的微信账号\":\"Renseignez votre compte wechat\",\"收款码\":\"Code de collecte\",\"请填写您的支付宝账号\":\"Renseignez votre numéro de compte Alipay\",\"请选择银行\":\"Veuillez sélectionner une banque\",\"银行卡\":\"Carte bancaire\",\"微信\":\"Wechat\",\"支付宝\":\"Alipay\",\"请填写持卡人姓名\":\"Veuillez renseigner le nom du titulaire de la carte\",\"请填写微信号\":\"Veuillez remplir le wechat\",\"请填写提现金额\":\"Veuillez renseigner le montant du retrait\",\"提现金额不能低于\":\"Le montant du retrait ne peut pas être inférieur à\",\"未使用\":\"Non utilisé\",\"已使用/过期\":\"Utilisé/expiré\",\"通用劵\":\"Sûretés générales\",\"一级分佣上浮\":\"Un niveau vers le haut\",\"二级分佣上浮\":\"Flottant secondaire\",\"快速升级技巧\":\"Compétences d'amélioration rapide\",\"未完成\":\"Incomplet\",\"已领完\":\"Collecté\",\"当前共\":\"Total actuel\",\"取关\":\"Désactivé\",\"请选择商品\":\"Veuillez sélectionner un produit\",\"头像\":\"Avatar\",\"手机号码\":\"Numéro de portable\",\"点击绑定手机号\":\"Cliquez pour lier\",\"ID号\":\"numéro d'identification\",\"权限设置\":\"Autorisation\",\"点击管理\":\"Gestion\",\"密码\":\"Mot de passe\",\"点击修改密码\":\"Cliquez sur Modifier\",\"更换手机号码\":\"Changer de numéro\",\"点击更换手机号码\":\"Cliquez pour\",\"缓存大小\":\"Taille du cache\",\"当前版本\":\"Version actuelle\",\"地址管理\":\"Adresse\",\"发票管理\":\"Facture\",\"账号注销\":\"Annulation\",\"注销后无法恢复\":\"Impossible de récupérer\",\"累计积分\":\"Points cumulés\",\"累计消费\":\"Consommation\",\"冻结积分\":\"Points de congélation\",\"积分规则\":\"Règle intégrale\",\"提示:积分数值的高低会直接影响您的会员等级\":\"Astuce : la valeur de votre niveau d'adhésion\",\"提示:你有\":\"Astuce : vous avez\",\"积分在\":\"Intégral dans\",\"过期,请尽快使用\":\"Expiré, veuillez l'utiliser dès que possible\",\"暂无积分记录哦~\":\"Pas d'enregistrement de score temporairement~\",\"赚积分\":\"Gagner des points\",\"分值明细\":\"Détails de la partition\",\"分值提升\":\"Augmentation du score\",\"抬头类型\":\"Type d'en-tête\",\"增值税电子专用发票\":\"Facture spéciale TVA électronique\",\"增值税电子普通发票\":\"Facture TVA ordinaire électronique\",\"需要开具发票的姓名\":\"Nom à facturer\",\"需要开具发票的企业名称\":\"Nom de l'entreprise pour émettre la facture\",\"税号\":\"Numéro fiscal\",\"纳税人识别号\":\"Numéro d'identification fiscale\",\"手机号\":\"Numéro de portable\",\"您的手机号\":\"Votre numéro de portable\",\"邮箱\":\"Boîte aux lettres\",\"您的联系邮箱\":\"Votre messagerie de contact\",\"开户银行\":\"Banque de dépôt\",\"您的开户银行\":\"Votre banque de dépôt\",\"银行账号\":\"Numéro de compte bancaire\",\"您的银行账号\":\"Votre numéro de compte bancaire\",\"企业地址\":\"Adresse de l'entreprise\",\"您所在的企业地址\":\"Votre adresse professionnelle\",\"企业电话\":\"Téléphone d'entreprise\",\"您的企业电话\":\"Votre téléphone professionnel\",\"设置为默认抬头\":\"Définir comme en-tête par défaut\",\"保存\":\"Enregistrer\",\"发票类型选择\":\"Sélection du type de facture\",\"纸质发票开出后将以邮寄形式交付\":\"Une fois la facture papier émise, elle sera livrée par courrier\",\"请输入需要开具发票的姓名\":\"Veuillez saisir le nom à facturer\",\"请输入您的手机号\":\"Veuillez saisir votre numéro de mobile\",\"请正确输入您的手机号\":\"Veuillez saisir correctement votre numéro de mobile\",\"请输入您的联系邮箱\":\"Veuillez saisir votre email de contact\",\"请正确输入您的联系邮箱\":\"Veuillez saisir correctement votre email de contact\",\"请输入需要开具发票的企业名称\":\"Veuillez entrer le nom de l'entreprise pour émettre la facture\",\"请输入纳税人识别号\":\"Veuillez entrer le numéro d'identification fiscale\",\"请正确输入纳税人识别号\":\"Veuillez saisir correctement le numéro d'identification fiscale\",\"请输入您的开户银行\":\"Veuillez entrer votre banque de dépôt\",\"请输入您的银行账号\":\"Veuillez entrer votre numéro de compte bancaire\",\"请正确输入您的银行账号\":\"Veuillez saisir correctement votre numéro de compte bancaire\",\"请输入您所在的企业地址\":\"Veuillez entrer votre adresse professionnelle\",\"请输入您的企业电话\":\"Veuillez entrer votre téléphone professionnel\",\"发票记录\":\"Enregistrement de facture\",\"抬头管理\":\"Gestion des en-têtes\",\"申请时间\":\"Temps d'application\",\"没有发票信息哟~\":\"Pas d'informations sur la facture ~\",\"个人普通发票\":\"Facture ordinaire personnelle\",\"企业普通发票\":\"Facture ordinaire d'entreprise\",\"企业专用发票\":\"Facture spéciale entreprise\",\"添加新发票\":\"Ajouter une nouvelle facture\",\"删除该发票?\":\"Supprimer cette facture ?\",\"发票编号\":\"Numéro de facture\",\"发票备注\":\"Remarques sur facture\",\"快递号\":\"Numéro express\",\"总资产(元)\":\"Actif total (€)\",\"累计充值(元)\":\"Co recharge (€)\",\"累计消费(元)\":\"Co fleur (€)\",\"账单记录\":\"Enregistrement de facture\",\"消费记录\":\"Enregistrer\",\"充值记录\":\"Recharger\",\"积分中心\":\"Intégrale\",\"签到领积分\":\"Connexion\",\"赚积分抵现金\":\"Gagner des points\",\"领取优惠券\":\"Coupons\",\"满减享优惠\":\"Remise complète\",\"最新拼团活动\":\"Dernière activité du groupe\",\"最新的优惠商品上架拼团\":\"Les dernières marchandises préférentielles en rayon\",\"立即参与\":\"Participer\",\"当前限时秒杀\":\"Temps limite actuel second kill\",\"最新商品秒杀进行中\":\"Dernier pic de marchandise en cours\",\"我的余额\":\"Solde\",\"赠送\":\"Cadeau\",\"其他\":\"Autre\",\"注意事项\":\"Précautions\",\"冻结佣金为\":\"La commission gelée est\",\"立即转入\":\"Transfert immédiat en\",\"立即充值\":\"Recharger immédiatement\",\"请输入金额\":\"Veuillez saisir le montant\",\"转入余额\":\"Transfert en solde\",\"转入余额后无法再次转出,确认是否转入余额\":\"Impossible de retransférer après avoir transféré le solde, confirmez s'il faut transférer le solde\",\"转入成功\":\"Transfert en réussi\",\"正在支付\":\"Payer\",\"充值金额必须为数字\":\"Le montant de la recharge doit être un nombre\",\"充值金额不能为0\":\"Le montant de la recharge ne peut pas être 0\",\"填写手机号码\":\"Renseignez le numéro de téléphone mobile\",\"是否绑定账号\":\"Lier le compte\",\"绑定\":\"Lien\",\"您已取消绑定!\":\"Vous avez délié !\",\"当前手机号\":\"Numéro de portable actuel\",\"设置新密码\":\"Définir un nouveau mot de passe\",\"确认新密码\":\"Confirmer le nouveau mot de passe\",\"手机号码不存在,无法发送验证码!\":\"Le numéro de téléphone portable n'existe pas, impossible d'envoyer le code de vérification !\",\"请输入新密码\":\"Veuillez entrer un nouveau mot de passe\",\"两次输入的密码不一致!\":\"Les deux mots de passe saisis sont incohérents !\",\"请输入验证码\":\"Veuillez entrer un code de vérification\",\"暂无退款订单~\":\"Aucune commande de remboursement ~\",\"缺少订单号无法查看订单详情\":\"Le numéro de commande est manquant et les détails de la commande ne peuvent pas être consultés\",\"明细\":\"Détas\",\"第七天\":\"Jour 7\",\"第7天\":\"Jour 7\",\"奖励\":\"Récompense\",\"已签到\":\"Enregistrement\",\"立即签到\":\"Se connecter maintenant\",\"已累计签到\":\"Enregistrement cumulé\",\"据说连续签到第\":\"La deuxième connexion consécutive\",\"天可获得超额积分,一定要坚持签到哦~~~\":\"Si vous pouvez obtenir des points supplémentaires tous les jours, vous devez insister pour vous connecter~~~\",\"签到成功\":\"Enregistrement réussi\",\"好的\":\"D'accord\",\"您今日已签到!\":\"Vous vous êtes connecté aujourd'hui !\",\"暂无签到记录~\":\"Pas de connexion dans l'enregistrement~\",\"保存海报\":\"Enregistrer l'AFFICHE\",\"长按保存图片\":\"Appui long pour enregistrer l'image\",\"分销海报\":\"AFFICHE Diffusion\",\"小程序二维码需要发布正式版后才能获取到\":\"Le code QR de l'applet ne peut être obtenu qu'après la publication de la version officielle\",\"获取中\":\"Obtenir\",\"暂无数据~\":\"Pas de données temporairement ~\",\"提现记录\":\"Retrait\",\"提现总额\":\"Retrait total\",\"佣金记录\":\"Enregistrement de la commission\",\"佣金明细\":\"Détails des commissions\",\"分销等级\":\"Niveau de diffusion\",\"昨日收益\":\"Revenus d'hier\",\"累积已提\":\"Retrait cumulé\",\"代理商申请\":\"Demande d'agent\",\"立即提现\":\"Retrait\",\"推广名片\":\"Carte de visite\",\"推广人统计\":\"Statistiques du promoteur\",\"推广人订单\":\"ordre promoteur\",\"推广订单\":\"Ordre de promotion\",\"事业部\":\"Pôle métier\",\"代理商\":\"Agent\",\"推广人排行\":\"Classement des promoteurs\",\"佣金排行\":\"Classement des commissions\",\"员工列表\":\"Liste des employés\",\"您目前暂无推广权限\":\"Vous n'avez actuellement aucune autorisation de promotion\",\"商城购物可享\":\"Faire ses courses au centre commercial\",\"折\":\"Réduction\",\"当前等级\":\"Niveau actuel\",\"未达成\":\"Non atteint\",\"今日成长值\":\"Valeur de croissance d'aujourd'hui\",\"点\":\"Pointer\",\"我的成长值记录\":\"Mon record de valeur de croissance\",\"暂未解锁该等级\":\"Ce niveau n'a pas encore été débloqué\",\"点,需达到\":\"Point, besoin d'atteindre\",\"已解锁更高等级\":\"Niveau supérieur débloqué\",\"我的成长特权\":\"Mon privilège de croissance\",\"购物折扣\":\"Réduction\",\"专属徽章\":\"Badge exclusif\",\"经验累积\":\"Accumulation d'expérience\",\"尊享客服\":\"Service exclusif\",\"签到\":\"Enregistrement\",\"可获得\":\"Disponible\",\"点经验\":\"Point d'expérience\",\"每日签到可获得经验值,已签到\":\"La connexion quotidienne peut obtenir une valeur d'expérience, connecté\",\"去签到\":\"Enregistrement\",\"点经验/元\":\"Point d'expérience/€\",\"购买商品可获得对应的经验值\":\"La valeur d'expérience correspondante peut être obtenue en achetant des biens\",\"去购买\":\"Allez acheter\",\"点经验/人\":\"Point expérience/personne\",\"邀请好友注册商城可获得经验值\":\"Invitez des amis à s'inscrire dans le centre commercial pour gagner de l'expérience\",\"去邀请\":\"Inviter\",\"积分数\":\"Fraction de produit\",\"消费金额\":\"Montant de la consommation\",\"暂无经验记录\":\"Pas d'enregistrement d'expérience\",\"账户登录\":\"Connexion au compte\",\"微信登录\":\"Connexion Wechat\",\"手机号登录\":\"Connexion mobile\",\"账户充值\":\"Recharger\",\"佣金转入\":\"Commission\",\"周榜\":\"Liste hebdomadaire\",\"月榜\":\"Liste mensuelle\",\"周排行\":\"Classement hebdomadaire\",\"月排行\":\"Classement mensuel\",\"语言切换\":\"Langue\",\"点击前往\":\"Cliquez pour aller\",\"查看全部\":\"Voir tout\",\"查看订单\":\"Voir la commande\",\"无法获取图片信息\":\"Impossible d'obtenir les informations sur l'image\",\"长按或扫描查看\":\"Appui long ou vue scan\",\"点解锁\":\"Déverrouillage des points\",\"确认修改\":\"Confirmer\",\"保存修改\":\"Enregistrer\",\"退出登录\":\"Se déconnecter\",\"付费会员\":\"SVIP\",\"地址信息\":\"Adresse\",\"我的推广\":\"Extension\",\"砍价记录\":\"Marché\",\"我的等级\":\"Mon niveau\",\"兑换\":\"ALLER\",\"申请中\":\"Candidature\",\"统计管理\":\"Statistiques\",\"退款\":\"Remboursement\",\"未发货\":\"Non émis\",\"当前为最新版本\":\"Actuellement la dernière version\",\"清除缓存\":\"Vider le cache\",\"确定清楚本地缓存数据吗\":\"Êtes-vous sûr d'avoir bien compris les données du cache local\",\"缓存清理完成\":\"Nettoyage du cache terminé\",\"切换的账号不存在\":\"Le compte changé n'existe pas\",\"正在切换中\":\"Commutation\",\"确认退出登录\":\"Confirmer la déconnexion\",\"我知道了\":\"Je vois\",\"系统错误\":\"Erreur système\",\"请求失败\":\"La requête a échoué\",\"邀请您加入\":\"Vous inviter à rejoindre \",\"图片上传中\":\"Téléchargement\",\"上传图片失败\":\"Impossible de télécharger l'image\",\"访问位置被拒绝\":\"Accès à l'emplacement refusé\",\"系统定位已关闭\":\"Le positionnement du système est désactivé\",\"需要定位权限\":\"Autorisation de localisation requise\",\"订单核销\":\"Écrire\",\"当前可转入佣金为\":\"La commission transférable actuelle est\",\"浏览记录\":\"Historique de navigation\",\"签到奖励\":\"Récompense d'enregistrement\",\"请输入内容\":\"Please enter content\",\"单次限购\":\"Single purchase Limited\",\"永久限购\":\"Permanent restricted\",\"《用户协议》\":\"《Accord utilisateur》\",\"《隐私协议》\":\"《Privacy agreement》\",\"与\":\"Et\",\"请先阅读并同意协议\":\"Please read and agree to the Agreement First\",\"绑定下级通知\":\"BIND Child notification\",\"购买成功通知\":\"Avis de succès d'achat\",\"确认收货通知\":\"Accusé de réception\",\"改价通知\":\"Avis de modification de prix\",\"退款成功通知\":\"Avis de remboursement réussi\",\"充值成功通知\":\"Notification de recharge réussie\",\"积分到账通知\":\"Avis de réception de points\",\"佣金到账通知\":\"Avis de réception de la Commission\",\"砍价成功通知\":\"Notification de négociation réussie\",\"拼团成功通知\":\"Notification de succès du regroupement\",\"拼团失败通知\":\"Notification d'échec du regroupement\",\"开团成功通知\":\"Notification de succès de la mission\",\"提现成功通知\":\"Avis de retrait réussi\",\"提现失败通知\":\"Avis d'échec de retrait\",\"充值退款通知\":\"Avis de remboursement de recharge\",\"退款申请拒绝通知\":\"Avis de rejet de la demande de remboursement\",\"您有新的退款待处理\":\"Vous avez un nouveau remboursement à traiter\",\"您有新的订单待处理\":\"Vous avez une nouvelle commande en attente\",\"发货通知\":\"Avis d'expédition\",\"取消拼团通知\":\"Annuler l'avis de regroupement\",\"参团成功通知\":\"Notification de succès de la participation\",\"你有个新的提现申请待处理\":\"Vous avez une nouvelle demande de retrait en attente\",\"你有个新的用户收货待处理\":\"Vous avez un nouvel utilisateur en attente de réception\",\"提醒付款通知\":\"Rappel des avis de paiement\",\"短信验证码\":\"SMS verification code\",\"到店自提\":\"Auto - assistance\",\"快递配送\":\"Livraison express\"}");
  8519. /***/ }),
  8520. /***/ 24:
  8521. /*!******************************************************!*\
  8522. !*** D:/data/zhonghong/saber-weixin/lang/th_th.json ***!
  8523. \******************************************************/
  8524. /*! exports provided: 选择地址, 选择其它地址, 已选商品, 清空, ¥, 已售罄, 已下架, 删除, 商品券, 品类券, 通用券, 优惠券, 满, 元可用, 无门槛券, 领取后, 天内可用, 已领取, 立即领取, 购物满, 减, 不限时, 秒杀, 砍价, 拼团, 已售, 立即购买, 加入购物车, 选规格, 跳过, 立即体验, 首页, 搜索, 购物车, 我的收藏, 个人中心, 券, 正在加载中, 上拉加载更多, 代付金额, 共, 件商品, 订单包裹, 申请退款中, 已退款, 已完成, 件退款中, 不支持配送, 不支持自提, 已评价, 评价, 申请退款, 查看物流, 确认收货, 选择付款方式, 支付, 去付款, 请选择要支付的订单, 余额不足, 支付中, 缺少支付参数, 取消支付, 支付成功, 支付失败, 库存, 限量, 数量, 我要参团, 确定, 热门推荐, 最高返佣, 推广享佣金, 立即分享, 发现新版本, 立即升级, 下载进度, 店小二, 暂无记录, 正在下载海报,请稍后再试, 海报二维码生成失败, 倒计时, 天, 时, 分, 秒, 砍价成功, 活动已结束, 已砍至, 活动进行中, 取消活动, 继续砍价, 暂无砍价记录, 人正在参与, 最低, 参与砍价, 砍价列表, 人查看, 人分享, 人参与, 邀请您帮忙砍价, 查看商品, 当前, 已砍, 还剩, 立即参与砍价, 商品暂无库存, 邀请好友帮砍价, 已有, 位好友成功砍价, 帮好友砍一刀, 好友已砍价成功, 我也要参与, 已成功帮助好友砍价, 恭喜您砍价成功,快去支付, 立即支付, 抢更多商品, 砍价帮, 砍掉, 更多, 关闭, 点击加载更多, 商品详情, 砍价规则, 您已砍掉, 元,听说分享次数越多砍价成功的机会越大哦, 成功帮砍, 您也可以砍价低价拿哦,快去挑选心仪的商品吧, 发送给朋友, 微信好友, 微信朋友圈, 生成海报, 砍价详情, 分享成功, 分享失败, 该商品每人限购, 您的好友, 邀请您砍价, 人团, 去拼团, 拼团列表, 类型, 累计销量, 限购, 种规格可选, 已拼, 件, 还差, 人成团, 去拼单, 查看更多, 收起, 拼团玩法, 开团/参团, 邀请好友, 满员发货, 用户评价, 好评率, 产品介绍, 单独购买, 立即开团, 请选择, 商品, 详情, 缺少参数无法查看商品, 参数错误, 已选择, 保存成功, 保存失败, 人拼, 剩余, 结束, 恭喜您拼团成功, 人,拼团失败, 拼团中,还差, 人拼团成功, 邀请好友参团, 再次开团, 取消开团, 查看订单信息, 大家都在拼, 更多拼团, 邀请您参团, 你不是该团的成员, 已抢, 抢购中, 未开始, 已结束, 暂无商品,去看点别的吧, 即将开始, 距秒杀结束仅剩, 累计销售, 收藏, 保存到手机, 长按图片可以保存到手机, 抢购详情页, 二维码获取失败, 请选择属性, 提示:点击图片即可保存至手机相册, 拼团海报, 砍价海报, 海报生成中, 海报图片获取失败, 海报, 已预定, 预售价, 立即预定, 开售时间, 预售活动, 起, 划线价, 开通“超级会员”立省, 元, 立即开通, 预售活动时间, 预售结束后, 天内发货, 活动, 参与秒杀, 参与拼团, 复制口令, 复制成功, 推荐, 缺少经纬度信息无法查看地图, 产品库存不足,请选择其它属性, 立即退款, 一键改价, 订单备注, 商品总价, 原始邮费, 实际支付, 退款金额, 请填写备注信息, 立即修改, 确认退款, 拒绝退款, 取消, 订单号, 发货方式, 发货类型, 快递公司, 快递单号, 顺丰请输入单号 :收件人或寄件人手机号后四位, 例如:SF000000000000:3941, 电子面单, 预览, 寄件人姓名, 填写寄件人姓名, 寄件人电话, 填写寄件人电话, 寄件人地址, 填写寄件人地址, 送货人, 确认提交, 发货, 送货, 无需物流, 手动填写, 电子面单打印, 填写快递单号, 请选择电子面单, 待付款, 待发货, 待收货, 待评价, 售后/退款, 数据统计, 今日成交额, 昨日成交额, 本月成交额, 今日订单数, 昨日订单数, 本月订单数, 详细数据, 日期, 订单数, 成交额, 立即核销, 查看, 确定要核销此订单吗, 确定核销, 请输入核销码, 请输入正确的核销码, 查询中, 订单, 订单未备注,点击添加备注信息, 复制, 件商品,应支付, 邮费, 订单编号, 下单时间, 支付状态, 已支付, 未支付, 支付方式, 买家留言, 支付金额, 优惠券抵扣, 运费, 实付款, 配送方式, 快递, 送货人电话, 确认付款, 去发货, 改价成功, 改价失败, 请输入备注, 退款中, 部分退款中, 件商品,实付款, 同意退货, 待用户发货, 请输入正确的金额, 今天, 昨天, 最近7天, 本月, 自定义, 营业额(元), 订单量(份), 增长率, 增长, 单位, 元., 分., 固定, 指定范围, 提交时间, 原因, 暂无申请记录,快去申请吧!, 没有更多啦, 待审核, 审核通过, 审核未通过, 编辑, 重新提交, 会员优惠价, 余额支付, 可用余额, 微信支付, 确认, 支付提醒, 线下支付已关闭,请点击确认按钮返回主页, 请输入支付金额, 正在确认, 进入商城, 代理商名称, 请输入代理商名称, 用户姓名, 请输入姓名, 联系电话, 请输入手机号, 验证码, 填写验证码, 邀请码, 请输入代理商邀请码, 请上传营业执照及行业相关资质证明图片, 图片最多可上传10张,图片格式支持JPG、PNG、JPEG, 上传图片, 已阅读并同意, 代理商协议, 提交申请, 代理商入驻协议, 恭喜,您的资料提交成功!, 返回首页, 恭喜,您的资料通过审核!, 您的申请未通过!, 重新申请, 获取验证码, 请输入正确的手机号码, 重新获取, 请上传营业执照, 请勾选并同意入驻协议, 专题栏, 暂无数据, 请输入卡号, 请输入卡密, 确认激活, SVIP会员尊享权, 正在激活, 已使用, 永久SVIP会员, SVIP会员, 到期, 您与, 商城的第, 天., 已累积为您节省, 开通即享会员权益, 续费会员, 开通会员, 有效期至, 试用, 购买即视为同意, 会员用户协议, 点击兑换卡密, 会员优惠券, SVIP商品推荐, 商城价, 激活会员卡, 支付宝支付, 成功开启0元试用, 确认绑定, 绑定成功, 商城客服已离线, 我要反馈, 请填写内容, 提交, 精品推荐, 热门榜单, 首发新品, 促销单品, 预告, 回放, 进行中, 发送客服, 客服连接中, 连接失败, 提示, 客服已下线,是否需要反馈?, 和好友一起分享, 积分抵扣, 已开票, 未开票, 发票信息, 发票抬头, 发票抬头类型, 个人, 企业, 发票类型, 电子普通发票, 电子专用发票, 企业税号, 联系信息, 真实姓名, 联系邮箱, 抬头选择, 默认, 普通, 专用, 您还没有添加发票信息哟, 添加新的抬头, 不开发票, 抽奖, 全选, 属性, 请填写具体地址, 省, 市, 区, 添加成功, 您已拒绝导入微信地址权限, 是否进入权限管理,调整授权?, 已取消, 添加失败, 请填写收货人姓名, 请选择所在地区, 请填写详细地址, 星, 商品满足你的期待么?说说你的想法,分享给想买的他们吧, 立即评价, 商品质量, 服务态度, 缺少参数, 请填写你对宝贝的心得, 正在发布评论, 感谢您的评价, 评价完成, 恭喜您, 获得, 机会, 领取成功, 评分, 全部, 好评, 中评, 差评, 加载更多, 千米距离, 搜索商品名称, 价格, 销量, 新品, 已全部加载, 缺少订单号, 退货件数, 退款类型, 退款原因, 备注说明, 填写备注信息,100字以内, 仅退款, 退货并退款, 申请成功, 请先选择退货商品, 搜索历史, 热门搜索, 请输入要搜索的商品, 正在搜索中, 中奖记录, 我的奖品, 活动规则, 昵称, 序号, 奖品名称, 获奖时间, 商家暂未上架活动哦, 获取抽奖信息, 奖品类型, 立即兑换, 兑换时间, 暂无中奖记录, 积分, 余额, 红包, 设置收货地址, 暂无门店信息, 剩余积分, 当前积分, 开具发票, 请填写, 配送运费, 会员商品优惠, 会员运费优惠, 合计, 使用微信快捷支付, 使用支付宝支付, 线下支付, 使用线下付款, 好友代付, 找微信好友支付, 立即使用, 请选择要购买的商品, 发票, 不使用, 订单创建成功, 请选择支付方式, 请选择收货地址, 请填写联系人或联系人电话, 暂无门店,请选择其他方式, 请输入, 请输入正确的, 请上传, 订单支付中, 请按以上退货信息将商品退回, 请联系管理员获取退货地址, 待核销, 核销信息, 营业时间, 每日, 使用说明, 可将二维码出示给店员扫描或提供数字核销码, 可将二维码出示给配送员进行核销, 查看位置, 拒绝原因, 联系客服, 商家备注, 收货人, 收货地址, 配送人姓名, 拨打, 虚拟发货, 已发货,请注意查收, 虚拟备注, 总代付, 申请开票, 查看发票, 取消订单, 立即付款, 批量退款, 查看拼团, 再次购买, 取消申请, 填写退货信息, 查看退货物流, 您确认放弃此次申请吗, 操作成功, 订单信息不存在, 为保障权益,请收到货确认无误后,再确认收货, 删除订单, 确定删除该订单, 删除成功, 确认取消该订单, 订单信息, 消费订单, 总消费, 预售, 线下付款,未支付, 未核销, 件商品,总金额, 查看详情, 暂无订单, 缺少订单号无法取消订单, 订单支付成功, 订单支付失败, 暂未支付, 失败原因, 重新购买, 重新支付, 赠送优惠券, 有效期, 缺少参数无法查看订单支付状态, 最多可上传3张, 请选择产品, 该产品没有更多库存了, 优品推荐, 暂无产品, 重新选择, 请选择数量, 砍价专区·BARGAINING, 立即砍价, 拼团活动, 人拼团成功., 人参团, 拼团价, 已过期, 关注, 推荐好货, 暂无商品, 限时秒杀, 抢, 广告位, 精彩内容, 砍价模块,暂无数据, 砍价活动, 呼朋唤友来砍价, 拼团模块,暂无数据, 享超值开团价, 优惠券,暂无数据, 领取今日好券, 可用, 领取, 客服, 商品列表,暂无数据, 搜索商品, 暂无图片,请上传图片, 首发新品,暂无数据, 多个优质商品最新上架, 暂无新闻,请上传新闻, 热度 TOP, 排行榜、暂无数据, 促销单品,暂无数据, 库存商品优惠促销活动, 精品推荐,暂无数据, 上百种商品分类任您选择, 秒杀模块,暂无数据, 场, 暂无数据,请设置, 暂无数据,请先添加分类, 暂无标题, 诚意推荐品质商品, 点击“立即关注”即可关注公众号, 立即关注, 添加到我的小程序, 微信首页下拉即可访问商城。, 点击, 服务协议与隐私政策, 请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。, 你可以阅读, 《服务协议与隐私政策》, 了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。, 我同意, 残忍拒绝, 下拉加载更多, 网络连接断开, 请检查情况:, 在设置中是否已开启网络权限, 当前是否处于弱网环境, 版本是否过低,升级试试吧, 重新连接, 加载中, 没有更多内容啦~, 100%正品保证, 所有商品精挑细选, 售后无忧, 管理, 购物数量, 请重新选择商品规格, 重选, 失效商品, 失效, 该商品已失效, 立即下单, 我也是有底线的, 产品库存不足,请选择其它, 添加购物车成功, 清除成功, 暂无兑换记录~, 大家都在换, 人兑换, 轻松赚积分, 购买商品, 购买商品可获得积分奖励, 去完成, 每日签到活动, 每日签到可获得积分奖励, 九宫格抽奖活动, 幸运抽奖可获得积分奖励, 我的积分, 每日签到, 积分抽奖, 兑换记录, 已兑换, 无法兑换, [默认], 可用积分, 快递费用, 免运费, 备注信息, 请添加备注(150字以内), 使用线上支付宝支付, 可用余额:, 选择线下付款方式, 正在加载…, 可用积分不足!, 订单状态, 支付积分, 备注, 配送核销码, 当前可用余额:, 正在加载, 缺少经纬度信息无法查看地图!, 商品兑换成功, 兑换方式, 积分兑换, 兑换积分, 取消兑换, 缺少参数无法查看订单兑换状态, 用户离开了, 兑换成功, 物流公司, 复制单号, 设为默认, 添加新地址, 导入微信地址, 取消选择, 您设置的默认地址不存在!, 设置成功, 您删除的地址不存在!, 获取头像, 请点击授权, 绑定手机号, 永久, 会员到期, 未开通会员, 查看会员权益, 立即续费, 立即激活, 会员可享多项权益, 订单中心, 我的服务, 隐私协议, 商家管理, 更新用户信息成功, 客服接待, 点击复制网址去浏览器中打开, 点击复制, 完成支付, 点击右上角, 选择 在浏览器 打开,去支付宝支付, 支付订单不存在,页面将在2秒后自动关闭!, 正在支付中, 支付订单不存在,页面将在2秒后自动关闭, 复制失败, 您目前的排名, 您目前暂无排名, 暂无排名~, 输入手机号, 输入验证码, 立即登录, 请填写手机号码, 请填写验证码, 请输入正确的验证码, 正在登录中, 登录成功, 获取授权, 获取微信的手机号授权, 获取微信手机号, 输入手机号码, 填写登录密码, 登录, 快速登录, 账号登录, 其他方式登录, 登录中, 获取用户信息失败, 请绑定手机号后,继续操作, 错误信息, 用户点击确定, 用户点击取消, 登录失败, 请勿重复点击, 请填写密码, 您输入的密码过于简单, 请填写账号, 请输入正确的账号, [图片], [语音], [商品], [订单], 亲、暂无消息记录哟!, 站内消息, 客服消息, 通知于, 获取详情中, 代付订单创建成功,发给好友帮你付款吧~, 帮我付一下这件商品了,谢谢~, 已经有人替我代付,谢谢啦~, 谢谢你帮我支付,么么哒~, 我已为你代付成功,商家正在努力发货中~, 好友代付成功,商家正在努力发货中~, 发送给微信好友, 查看订单详情, 订单已支付, 如果订单申请退款,已支付金额将原路退还给您, 代付成功, 谢谢你为我付款,还可以再去看看其他商品哟~, 该订单暂未支付, 人, 推广人数, 一级, 二级, 点击搜索会员名称, 团队排序, 金额排序, 订单排序, 单, 加入时间, 累积推广订单, 本月累计推广订单, 返佣, 暂未返佣, 返佣时间, 单号, 暂无推广订单~, 推广订单列表, 找回密码, 填写您的新密码, 加载失败, 点击授权登录您的客服工作台, 授权登录, 没有登录的code,请重新扫码, 员工人数, 邀请, 分佣比例, 修改分佣比例, 请输入百分比, 删除员工, 确定删除该员工?, 请输入比例, 分类, 我的, 姓名, 请输入联系电话, 所在地区, 详细地址, 设置为默认地址, 立即保存, 浙江省, 杭州市, 滨江区, 广东省, 广州市, 番禺区, 修改地址, 添加地址, 已取消!, 请填写联系电话, 保存中, 修改成功, 消费, 充值, 暂无账单的记录哦~, 点击【立即注销】即代表您已经同意《用户注销协议》, 立即注销, 是否确认注销, 注销后无法恢复,请谨慎操作, 注销, 持卡人, 请输入持卡人姓名, 卡号, 请填写卡号, 银行, 提现, 最低提现金额, 当前可提现金额, 冻结佣金, 说明: 每笔佣金的冻结期为, 天,到期后可提现, 账号, 请填写您的微信账号, 收款码, 请填写您的支付宝账号, 请选择银行, 银行卡, 微信, 支付宝, 请填写持卡人姓名, 请填写微信号, 请填写提现金额, 现金额不能低于, 未使用, 已使用/过期, 通用劵, 一级分佣上浮, 二级分佣上浮, 快速升级技巧, 未完成, 已领完, 当前共, 取关, 请选择商品, 头像, 手机号码, 点击绑定手机号, ID号, 权限设置, 点击管理, 密码, 点击修改密码, 更换手机号码, 点击更换手机号码, 缓存大小, 当前版本, 地址管理, 发票管理, 账号注销, 注销后无法恢复, 累计积分, 累计消费, 冻结积分, 积分规则, 提示:积分数值的高低会直接影响您的会员等级, 提示:你有, 积分在, 过期,请尽快使用, 暂无积分记录哦~, 赚积分, 分值明细, 分值提升, 抬头类型, 增值税电子专用发票, 增值税电子普通发票, 需要开具发票的姓名, 需要开具发票的企业名称, 税号, 纳税人识别号, 手机号, 您的手机号, 邮箱, 您的联系邮箱, 开户银行, 您的开户银行, 银行账号, 您的银行账号, 企业地址, 您所在的企业地址, 企业电话, 您的企业电话, 设置为默认抬头, 保存, 发票类型选择, 纸质发票开出后将以邮寄形式交付, 请输入需要开具发票的姓名, 请输入您的手机号, 请正确输入您的手机号, 请输入您的联系邮箱, 请正确输入您的联系邮箱, 请输入需要开具发票的企业名称, 请输入纳税人识别号, 请正确输入纳税人识别号, 请输入您的开户银行, 请输入您的银行账号, 请正确输入您的银行账号, 请输入您所在的企业地址, 请输入您的企业电话, 发票记录, 抬头管理, 申请时间, 没有发票信息哟~, 个人普通发票, 企业普通发票, 企业专用发票, 添加新发票, 删除该发票?, 发票编号, 发票备注, 快递号, 总资产(元), 累计充值(元), 累计消费(元), 账单记录, 消费记录, 充值记录, 积分中心, 签到领积分, 赚积分抵现金, 领取优惠券, 满减享优惠, 最新拼团活动, 最新的优惠商品上架拼团, 立即参与, 当前限时秒杀, 最新商品秒杀进行中, 我的余额, 赠送, 其他, 注意事项, 冻结佣金为, 立即转入, 立即充值, 请输入金额, 转入余额, 转入余额后无法再次转出,确认是否转入余额, 转入成功, 正在支付, 充值金额必须为数字, 充值金额不能为0, 填写手机号码, 是否绑定账号, 绑定, 您已取消绑定!, 当前手机号, 设置新密码, 确认新密码, 手机号码不存在,无法发送验证码!, 请输入新密码, 两次输入的密码不一致!, 请输入验证码, 暂无退款订单~, 缺少订单号无法查看订单详情, 明细, 第七天, 第7天, 奖励, 已签到, 立即签到, 已累计签到, 据说连续签到第, 天可获得超额积分,一定要坚持签到哦~~~, 签到成功, 好的, 您今日已签到!, 暂无签到记录~, 保存海报, 长按保存图片, 分销海报, 小程序二维码需要发布正式版后才能获取到, 获取中, 暂无数据~, 提现记录, 提现总额, 佣金记录, 佣金明细, 分销等级, 昨日收益, 累积已提, 代理商申请, 立即提现, 推广名片, 推广人统计, 推广人订单, 推广订单, 事业部, 代理商, 推广人排行, 佣金排行, 员工列表, 您目前暂无推广权限, 商城购物可享, 折, 当前等级, 未达成, 今日成长值, 点, 我的成长值记录, 暂未解锁该等级, 点,需达到, 已解锁更高等级, 我的成长特权, 购物折扣, 专属徽章, 经验累积, 尊享客服, 签到, 可获得, 点经验, 每日签到可获得经验值,已签到, 去签到, 点经验/元, 购买商品可获得对应的经验值, 去购买, 点经验/人, 邀请好友注册商城可获得经验值, 去邀请, 积分数, 消费金额, 暂无经验记录, 账户登录, 微信登录, 手机号登录, 账户充值, 佣金转入, 周榜, 月榜, 周排行, 月排行, 语言切换, 点击前往, 查看全部, 查看订单, 无法获取图片信息, 长按或扫描查看, 点解锁, 确认修改, 保存修改, 退出登录, 付费会员, 地址信息, 我的推广, 砍价记录, 我的等级, 兑换, 申请中, 统计管理, 退款, 未发货, 当前为最新版本, 清除缓存, 确定清楚本地缓存数据吗, 缓存清理完成, 切换的账号不存在, 正在切换中, 确认退出登录, 我知道了, 系统错误, 请求失败, 邀请您加入, 图片上传中, 上传图片失败, 访问位置被拒绝, 系统定位已关闭, 需要定位权限, 订单核销, 当前可转入佣金为, 浏览记录, 签到奖励, 请输入内容, 单次限购, 永久限购, 《用户协议》, 《隐私协议》, 与, 请先阅读并同意协议, 绑定下级通知, 购买成功通知, 确认收货通知, 改价通知, 退款成功通知, 充值成功通知, 积分到账通知, 佣金到账通知, 砍价成功通知, 拼团成功通知, 拼团失败通知, 开团成功通知, 提现成功通知, 提现失败通知, 充值退款通知, 退款申请拒绝通知, 您有新的退款待处理, 您有新的订单待处理, 发货通知, 取消拼团通知, 参团成功通知, 你有个新的提现申请待处理, 你有个新的用户收货待处理, 提醒付款通知, 短信验证码, 到店自提, 快递配送, default */
  8525. /***/ (function(module) {
  8526. module.exports = JSON.parse("{\"选择地址\":\"เลือกที่อยู่\",\"选择其它地址\":\"เลือกที่อยู่อื่น\",\"已选商品\":\"สินค้าที่เลือก\",\"清空\":\"เคลียร์\",\"¥\":\"฿\",\"已售罄\":\"ขายหมดแล้ว\",\"已下架\":\"ลง\",\"删除\":\"ลบ\",\"商品券\":\"สินค้า\",\"品类券\":\"หมวดหมู่\",\"通用券\":\"นายพล\",\"优惠券\":\"บัตรกำนัล\",\"满\":\"เต็ม\",\"元可用\":\" ใช้แล้ว\",\"无门槛券\":\"ไม่มีเกณฑ์\",\"领取后\":\"รับ \",\"天内可用\":\"การใช้วัน\",\"已领取\":\"ได้รับ\",\"立即领取\":\"รับ\",\"购物满\":\"ใช้จ่าย\",\"减\":\"ปิด\",\"不限时\":\"ไม่จำกัดเวลา\",\"秒杀\":\"เซคคิลล์\",\"砍价\":\"ต่อรองราคา\",\"拼团\":\"กลุ่ม\",\"已售\":\"ขายแล้ว\",\"立即购买\":\"ซื้อเลย\",\"加入购物车\":\"หยิบใส่รถเข็น\",\"选规格\":\"ตัวเลือก\",\"跳过\":\"ต่อไป\",\"立即体验\":\"ไปเดี๋ยวนี้\",\"首页\":\"บ้าน\",\"搜索\":\"ค้นหา\",\"购物车\":\"รถเข็น\",\"我的收藏\":\"สะสม\",\"个人中心\":\"ของฉัน\",\"券\":\"โว\",\"正在加载中\":\"กำลังโหลด...\",\"上拉加载更多\":\"ดึงขึ้นโหลดเพิ่มเติม\",\"代付金额\":\"จำนวนเงิน\",\"共\":\"ผลรวมของ \",\"件商品\":\" รายการ\",\"订单包裹\":\"สั่งซื้อสินค้า\",\"申请退款中\":\"การคืนเงิน\",\"已退款\":\"คืนเงิน\",\"已完成\":\"เสร็จแล้ว\",\"件退款中\":\"การคืนสินค้า\",\"不支持配送\":\"ในร้านค้าเท่านั้น\",\"不支持自提\":\"จัดส่งเท่านั้น\",\"已评价\":\"ประเมินแล้ว\",\"评价\":\"รีวิว\",\"申请退款\":\"คืนเงิน\",\"查看物流\":\"โลจิสติกส์\",\"确认收货\":\"รับคำสั่ง\",\"选择付款方式\":\"เลือก PayType\",\"支付\":\"จ่าย \",\"去付款\":\"จ่าย\",\"请选择要支付的订单\":\"เลือกคำสั่งซื้อ\",\"余额不足\":\"ยอดเงินไม่เพียงพอ\",\"支付中\":\"จ่าย...\",\"缺少支付参数\":\"ไม่มีพารามิเตอร์การชำระเงิน\",\"取消支付\":\"ยกเลิกการชำระเงิน\",\"支付成功\":\"ชำระเงินสำเร็จ\",\"支付失败\":\"การชำระเงินล้มเหลว\",\"库存\":\"หุ้น \",\"限量\":\"ขีดจำกัด \",\"数量\":\"จำนวน\",\"我要参团\":\"เข้าร่วมกลุ่ม\",\"确定\":\"โอเค\",\"热门推荐\":\"สินค้าแนะนำ\",\"最高返佣\":\"สูงสุด\",\"推广享佣金\":\"โปรโมต\",\"立即分享\":\"แชร์เลย\",\"发现新版本\":\"เวอร์ชั่นใหม่ \",\"立即升级\":\"อัพเกรด\",\"下载进度\":\"ความคืบหน้า\",\"店小二\":\"บริกร\",\"暂无记录\":\"ไม่มีข้อมูล\",\"正在下载海报,请稍后再试\":\"กำลังดาวน์โหลดโปสเตอร์ โปรดลองอีกครั้งในภายหลัง\",\"海报二维码生成失败\":\"ไม่สามารถสร้างรหัส QR โปสเตอร์\",\"倒计时\":\"นับถอยหลัง\",\"天\":\"ด\",\"时\":\"เอช\",\"分\":\"ม\",\"秒\":\"ส\",\"砍价成功\":\"ประสบความสำเร็จในการต่อรองราคา\",\"活动已结束\":\"กิจกรรมหยุด\",\"已砍至\":\"ตัดไปที่ \",\"活动进行中\":\"กำลังประมวลผล...\",\"取消活动\":\"ยกเลิก\",\"继续砍价\":\"ต่อ\",\"暂无砍价记录\":\"ไม่มีข้อมูล\",\"人正在参与\":\"เข้าร่วม\",\"最低\":\"ต่ำสุด\",\"参与砍价\":\"ต่อรองราคา\",\"砍价列表\":\"รายการต่อรอง\",\"人查看\":\"ดู\",\"人分享\":\"แบ่งปัน\",\"人参与\":\"เกี่ยวข้อง\",\"邀请您帮忙砍价\":\"เชิญคุณช่วย\",\"查看商品\":\"ดูรายการ\",\"当前\":\"ปัจจุบัน \",\"已砍\":\"สับ \",\"还剩\":\"ซ้าย \",\"立即参与砍价\":\"ต่อรองราคาตอนนี้\",\"商品暂无库存\":\"สินค้าหมด\",\"邀请好友帮砍价\":\"เชิญเพื่อนช่วย\",\"已有\":\"มี\",\"位好友成功砍价\":\"เพื่อนที่ประสบความสำเร็จ\",\"帮好友砍一刀\":\"ช่วยเพื่อน\",\"好友已砍价成功\":\"เพื่อนสำเร็จแล้ว\",\"我也要参与\":\"ฉันจะเข้าร่วม\",\"已成功帮助好友砍价\":\"ช่วยเพื่อนสำเร็จ\",\"恭喜您砍价成功,快去支付\":\"ต่อรองได้สำเร็จ ,ไปจ่าย\",\"立即支付\":\"จ่ายเลย\",\"抢更多商品\":\"คว้าอีก\",\"砍价帮\":\"แก๊งต่อรอง\",\"砍掉\":\"ตัดออก \",\"更多\":\"เพิ่มเติม\",\"关闭\":\"ปิด\",\"点击加载更多\":\"คลิกเพื่อโหลดเพิ่มเติม\",\"商品详情\":\"รายละเอียด\",\"砍价规则\":\"กฎการต่อรองราคา\",\"您已砍掉\":\"คุณตัดแล้ว \",\"元,听说分享次数越多砍价成功的机会越大哦\":\", แบ่งปันมากขึ้น, โอกาสในการต่อรองที่ประสบความสำเร็จมากขึ้น\",\"成功帮砍\":\"ช่วยตัดได้สำเร็จ \",\"您也可以砍价低价拿哦,快去挑选心仪的商品吧\":\"คุณยังสามารถต่อรองราคาได้ ไปและเลือกผลิตภัณฑ์ที่คุณชื่นชอบ\",\"发送给朋友\":\"ส่งเพื่อน\",\"微信好友\":\"เพื่อน Wechat\",\"微信朋友圈\":\"ช่วงเวลา WeChat\",\"生成海报\":\"สร้างโปสเตอร์\",\"砍价详情\":\"รายละเอียดการต่อรองราคา\",\"分享成功\":\"แชร์สำเร็จ\",\"分享失败\":\"การแชร์ล้มเหลว\",\"该商品每人限购\":\"สินค้านี้จำกัดการซื้อต่อคน\",\"您的好友\":\"เพื่อนของคุณ \",\"邀请您砍价\":\"เชิญคุณตัด\",\"人团\":\" คน\",\"去拼团\":\"ไป\",\"拼团列表\":\"รายชื่อกลุ่ม\",\"类型\":\"ประเภท\",\"累计销量\":\"ขายทั้งหมด\",\"限购\":\"ขีดจำกัด \",\"种规格可选\":\"ข้อกำหนด\",\"已拼\":\"สะกด \",\"件\":\"ชิ้น\",\"还差\":\"เท่านั้น \",\"人成团\":\" สำเร็จ\",\"去拼单\":\"เข้าร่วม\",\"查看更多\":\"เพิ่มเติม\",\"收起\":\"ทิ้งไป\",\"拼团玩法\":\"กระบวนการกลุ่ม\",\"开团/参团\":\"เริ่ม\",\"邀请好友\":\"คำเชิญ\",\"满员发货\":\"ส่งของ\",\"用户评价\":\"รีวิว\",\"好评率\":\"อัตราสรรเสริญ\",\"产品介绍\":\"รายละเอียด\",\"单独购买\":\"ซื้อคนเดียว\",\"立即开团\":\"กลุ่มเริ่มต้น\",\"请选择\":\"เลือกแล้ว\",\"商品\":\"สินค้า\",\"详情\":\"รายละเอียด\",\"缺少参数无法查看商品\":\"ไม่สามารถดูสินค้าได้เนื่องจากไม่มีพารามิเตอร์\",\"参数错误\":\"ข้อผิดพลาดของพารามิเตอร์\",\"已选择\":\"เลือกแล้ว\",\"保存成功\":\"บันทึกความสำเร็จ\",\"保存失败\":\"บันทึกล้มเหลว\",\"人拼\":\" คนทะเลาะกัน\",\"剩余\":\"เหลือ \",\"结束\":\"เสร็จสิ้น\",\"恭喜您拼团成功\":\"ยินดีด้วยที่จัดกลุ่มสำเร็จ\",\"人,拼团失败\":\"คนออกไป กลุ่มล้มเหลว\",\"拼团中,还差\":\"ในกลุ่มยังมี \",\"人拼团成功\":\"คนออกจากกลุ่มเรียบร้อยแล้ว\",\"邀请好友参团\":\"เชิญเพื่อนเข้าร่วมกลุ่ม\",\"再次开团\":\"จัดกลุ่มใหม่\",\"取消开团\":\"ยกเลิก\",\"查看订单信息\":\"ดูคำสั่งซื้อ\",\"大家都在拼\":\"ทุกกลุ่ม\",\"更多拼团\":\"เพิ่มเติม\",\"邀请您参团\":\"เชิญคุณเข้าร่วม \",\"你不是该团的成员\":\"คุณไม่ใช่สมาชิกของกลุ่ม\",\"已抢\":\"ปล้น\",\"抢购中\":\"คว้าเลย\",\"未开始\":\"ไม่ได้เริ่ม\",\"已结束\":\"จบ\",\"暂无商品,去看点别的吧\":\"ไม่มีสินค้า\",\"即将开始\":\"ไม่ได้เริ่ม\",\"距秒杀结束仅剩\":\"เหลือแต่ตอนจบ\",\"累计销售\":\"ขายแล้ว\",\"收藏\":\"สะสม\",\"保存到手机\":\"บันทึกลงในโทรศัพท์\",\"长按图片可以保存到手机\":\"กดค้างเพื่อบันทึกลงในโทรศัพท์\",\"抢购详情页\":\"สแน็ปหน้ารายละเอียดการซื้อ\",\"二维码获取失败\":\"ไม่สามารถรับรหัส QR\",\"请选择属性\":\"กรุณาเลือกคุณสมบัติ\",\"提示:点击图片即可保存至手机相册\":\"เคล็ดลับ: คลิกที่รูปภาพเพื่อบันทึกลงในอัลบั้มโทรศัพท์\",\"拼团海报\":\"โปสเตอร์ปริศนา\",\"砍价海报\":\"โปสเตอร์การต่อรอง\",\"海报生成中\":\"กำลังสร้างโปสเตอร์\",\"海报图片获取失败\":\"ไม่สามารถรับภาพโปสเตอร์\",\"海报\":\"โปสเตอร์\",\"已预定\":\"จองแล้ว\",\"预售价\":\"พรีเซลล์\",\"立即预定\":\"จองเลย\",\"开售时间\":\"เวลาลดราคา\",\"预售活动\":\"งานพรีเซลล์\",\"起\":\"เพิ่มขึ้น\",\"划线价\":\"ORP\",\"开通“超级会员”立省\":\"เปิด 'Super Member' เพื่อปิด \",\"元\":\"฿\",\"立即开通\":\"เปิดใช้งานทันที\",\"预售活动时间\":\"ช่วงพรีเซลล์\",\"预售结束后\":\"จัดส่งภายใน \",\"天内发货\":\"วันหลังจากสิ้นสุดการขายล่วงหน้า\",\"活动\":\"กิจกรรม\",\"参与秒杀\":\"เซคคิลล์\",\"参与拼团\":\"กลุ่ม\",\"复制口令\":\"คัดลอกรหัสสินค้า\",\"复制成功\":\"คัดลอกสำเร็จ\",\"推荐\":\"แนะนำ\",\"缺少经纬度信息无法查看地图\":\"ไม่มีข้อมูลละติจูดและลองจิจูดไม่สามารถดูแผนที่ได้\",\"产品库存不足,请选择其它属性\":\"สต๊อกสินค้าไม่เพียงพอ โปรดเลือกแอตทริบิวต์อื่น\",\"立即退款\":\"คืนเงินทันที\",\"一键改价\":\"เปลี่ยนราคา\",\"订单备注\":\"บันทึกการสั่งซื้อ\",\"商品总价\":\"ราคารวม\",\"原始邮费\":\"ไปรษณีย์เก่า\",\"实际支付\":\"ราคาจริง\",\"退款金额\":\"ราคาคืนเงิน\",\"请填写备注信息\":\"กรุณากรอกหมายเหตุ\",\"立即修改\":\"แก้ไขเดี๋ยวนี้\",\"确认退款\":\"ยืนยันการคืนเงิน\",\"拒绝退款\":\"ปฏิเสธการคืนเงิน\",\"取消\":\"ยกเลิก\",\"订单号\":\"รหัสคำสั่งซื้อ\",\"发货方式\":\"โหมด\",\"发货类型\":\"ประเภทการจัดส่ง\",\"快递公司\":\"ด่วน\",\"快递单号\":\"หมายเลข\",\"顺丰请输入单号 :收件人或寄件人手机号后四位\":\"โปรดป้อนหมายเลขติดตามสำหรับ SF Express: ตัวเลขสี่หลักสุดท้ายของหมายเลขโทรศัพท์มือถือของผู้รับ หรือผู้ส่ง\",\"例如:SF000000000000:3941\":\"ตัวอย่างเช่น: SF000000000000:3941\",\"电子面单\":\"แผ่นอิเล็กทรอนิกส์\",\"预览\":\"ดูตัวอย่าง\",\"寄件人姓名\":\"ชื่อผู้ส่ง\",\"填写寄件人姓名\":\"กรอกชื่อผู้ส่ง\",\"寄件人电话\":\"โทรศัพท์ผู้ส่ง\",\"填写寄件人电话\":\"กรอกหมายเลขโทรศัพท์ของผู้ส่ง\",\"寄件人地址\":\"ที่อยู่ผู้ส่ง\",\"填写寄件人地址\":\"กรอกที่อยู่ผู้ส่ง\",\"送货人\":\"คนส่งของ\",\"确认提交\":\"ส่ง\",\"发货\":\"เรือ\",\"送货\":\"ให้\",\"无需物流\":\"ไม่จำเป็น\",\"手动填写\":\"กรอกด้วยตนเอง\",\"电子面单打印\":\"แผ่นอิเล็กทรอนิกส์\",\"填写快递单号\":\"กรุณากรอกหมายเลขผู้จัดส่ง\",\"请选择电子面单\":\"กรุณาเลือกใบเสร็จอิเล็กทรอนิกส์\",\"待付款\":\"จ่าย\",\"待发货\":\"จัดส่ง\",\"待收货\":\"รับ\",\"待评价\":\"ให้คะแนน\",\"售后/退款\":\"คืนเงิน\",\"数据统计\":\"สถิติ\",\"今日成交额\":\"ขายวันนี้\",\"昨日成交额\":\"ขายเมื่อวาน\",\"本月成交额\":\"ขายเดือน\",\"今日订单数\":\"ออเดอร์วันนี้\",\"昨日订单数\":\"คำสั่งเมื่อวาน\",\"本月订单数\":\"คำสั่งเดือน\",\"详细数据\":\"ข้อมูลโดยละเอียด\",\"日期\":\"วันที่\",\"订单数\":\"จำนวนการสั่งซื้อ\",\"成交额\":\"มูลค่าการซื้อขาย\",\"立即核销\":\"ตัดทิ้งเดี๋ยวนี้\",\"查看\":\"ดู\",\"确定要核销此订单吗\":\"คุณแน่ใจหรือว่าตัดคำสั่งนี้ออก\",\"确定核销\":\"ยืนยัน\",\"请输入核销码\":\"โปรดป้อนรหัสยืนยัน\",\"请输入正确的核销码\":\"โปรดป้อนรหัสยืนยันที่ถูกต้อง\",\"查询中\":\"สอบถาม\",\"订单\":\"คำสั่ง\",\"订单未备注,点击添加备注信息\":\"คำสั่งไม่มีหมายเหตุ คลิกเพื่อเพิ่มหมายเหตุ\",\"复制\":\"คัดลอก\",\"件商品,应支付\":\"ของมีค่าควรจ่าย\",\"邮费\":\"ไปรษณีย์\",\"订单编号\":\"รหัสคำสั่งซื้อ\",\"下单时间\":\"เวลาสั่งซื้อ\",\"支付状态\":\"สถานะการชำระเงิน\",\"已支付\":\"จ่ายแล้ว\",\"未支付\":\"ค้างชำระ\",\"支付方式\":\"วิธีการชำระเงิน\",\"买家留言\":\"ผู้ซื้อผงชูรส\",\"支付金额\":\"จำนวนเงินที่จ่าย\",\"优惠券抵扣\":\"การหักคูปอง\",\"运费\":\"ค่าโดยสาร\",\"实付款\":\"จำนวนจริง\",\"配送方式\":\"วิธีการจัดส่ง\",\"快递\":\"ด่วน\",\"送货人电话\":\"โทรศัพท์เคอรี่\",\"确认付款\":\"ยืนยันการชำระเงิน\",\"去发货\":\"จัดส่ง\",\"改价成功\":\"ราคาเปลี่ยนแปลงเรียบร้อยแล้ว\",\"改价失败\":\"การเปลี่ยนแปลงราคาล้มเหลว\",\"请输入备注\":\"โปรดป้อนหมายเหตุ\",\"退款中\":\"การคืนเงิน\",\"部分退款中\":\"คืนเงินบางส่วน\",\"件商品,实付款\":\"สินค้าที่ชำระแล้ว\",\"同意退货\":\"ตกลงคืน\",\"待用户发货\":\"ไม่มีการจัดส่ง\",\"请输入正确的金额\":\"กรุณาใส่จำนวนที่ถูกต้อง\",\"今天\":\"วันนี้\",\"昨天\":\"เมื่อวาน\",\"最近7天\":\"7 วันที่ผ่านมา\",\"本月\":\"เดือน\",\"自定义\":\"ปรับแต่ง\",\"营业额(元)\":\"ยอดเทิร์นโอเวอร์\",\"订单量(份)\":\"ปริมาณ\",\"增长率\":\"อัตราการขึ้น\",\"增长\":\"เพิ่มขึ้น\",\"单位\":\"หน่วย\",\"元.\":\"หยวน\",\"分.\":\"เซ็นต์\",\"固定\":\"แก้ไข\",\"指定范围\":\"ขอบเขต\",\"提交时间\":\"เวลาส่ง\",\"原因\":\"เหตุผล\",\"暂无申请记录,快去申请吧!\":\"ยังไม่มีบันทึกการสมัคร สมัครเลย!\",\"没有更多啦\":\"ไม่มีแล้ว\",\"待审核\":\"รอการตรวจสอบ\",\"审核通过\":\"ผ่านการพิจารณาแล้ว\",\"审核未通过\":\"การตรวจสอบล้มเหลว\",\"编辑\":\"แก้ไข\",\"重新提交\":\"ส่งใหม่\",\"会员优惠价\":\"ส่วนลดวีไอพี\",\"余额支付\":\"ยอดเงินคงเหลือ\",\"可用余额\":\"สมดุล \",\"微信支付\":\"วีแชท เพย์\",\"确认\":\"ยืนยัน\",\"支付提醒\":\"การแจ้งเตือนการชำระเงิน\",\"线下支付已关闭,请点击确认按钮返回主页\":\"การชำระเงินออฟไลน์ถูกปิด โปรดคลิกปุ่มยืนยันเพื่อกลับสู่หน้าแรก\",\"请输入支付金额\":\"กรุณาใส่จำนวนเงินที่ชำระ\",\"正在确认\":\"ยืนยัน\",\"进入商城\":\"เข้าห้าง\",\"代理商名称\":\"ชื่อหน่วยงาน\",\"请输入代理商名称\":\"กรุณากรอกชื่อหน่วยงาน\",\"用户姓名\":\"ชื่อของคุณ\",\"请输入姓名\":\"กรุณาใส่ชื่อของคุณ\",\"联系电话\":\"โทรศัพท์ของคุณ\",\"请输入手机号\":\"กรุณาใส่หมายเลขโทรศัพท์\",\"验证码\":\"รหัส OTP\",\"填写验证码\":\"กรอกรหัส OTP\",\"邀请码\":\"รหัสเชิญ\",\"请输入代理商邀请码\":\"ใส่รหัสเชิญ\",\"请上传营业执照及行业相关资质证明图片\":\"โปรดอัปโหลดรูปภาพใบอนุญาตประกอบธุรกิจและใบรับรองคุณสมบัติที่เกี่ยวข้องกับอุตสาหกรรม\",\"图片最多可上传10张,图片格式支持JPG、PNG、JPEG\":\"สามารถอัพโหลดได้ถึง 10 ภาพ และรูปแบบภาพรองรับ JPG, PNG, JPEG\",\"上传图片\":\"อัปโหลด\",\"已阅读并同意\":\"อ่านแล้วตกลง\",\"代理商协议\":\"ข้อตกลงตัวแทน\",\"提交申请\":\"ส่งใบสมัคร\",\"代理商入驻协议\":\"ข้อตกลงตัวแทน\",\"恭喜,您的资料提交成功!\":\"ยินดีด้วย ส่งเรียบร้อยแล้ว!\",\"返回首页\":\"กลับบ้าน\",\"恭喜,您的资料通过审核!\":\"ยินดีด้วย รีวิวผ่านไปแล้ว!\",\"您的申请未通过!\":\"ใบสมัครของคุณถูกปฏิเสธ!\",\"重新申请\":\"สมัครใหม่\",\"获取验证码\":\"รับรหัส OTP\",\"请输入正确的手机号码\":\"โปรดป้อนหมายเลขโทรศัพท์ที่ถูกต้อง\",\"重新获取\":\"รับใหม่\",\"请上传营业执照\":\"โปรดอัปโหลดใบอนุญาตประกอบธุรกิจ\",\"请勾选并同意入驻协议\":\"โปรดทำเครื่องหมายและยอมรับข้อตกลงอาชีพ\",\"专题栏\":\"คอลัมน์หัวข้อ\",\"暂无数据\":\"ไม่มีข้อมูล\",\"请输入卡号\":\"กรุณาใส่หมายเลขบัตร\",\"请输入卡密\":\"โปรดป้อนรหัสผ่านของคุณ\",\"确认激活\":\"ยืนยัน\",\"SVIP会员尊享权\":\"สิทธิ์ของสมาชิก SVIP\",\"正在激活\":\"กำลังเปิดใช้งาน\",\"已使用\":\"ใช้แล้ว\",\"永久SVIP会员\":\"สมาชิกถาวร SVIP\",\"SVIP会员\":\"สมาชิก SVIP\",\"到期\":\"วุฒิภาวะ\",\"您与\":\"คุณด้วย\",\"商城的第\":\"ห้างสรรพสินค้า\",\"天.\":\" วัน\",\"已累积为您节省\":\"สะสมเงินออมเพื่อคุณ\",\"开通即享会员权益\":\"เพลิดเพลินกับสิทธิประโยชน์ของสมาชิก\",\"续费会员\":\"ต่ออายุ\",\"开通会员\":\"เข้าร่วม SVIP\",\"有效期至\":\"ใช้ได้จนถึง \",\"试用\":\"ลองดู\",\"购买即视为同意\":\"ซื้อตามความยินยอม \",\"会员用户协议\":\"ข้อตกลง SVIP\",\"点击兑换卡密\":\"คลิกเพื่อแลกบัตร\",\"会员优惠券\":\"คูปอง SVIP\",\"SVIP商品推荐\":\"แนะนำ SVIP\",\"商城价\":\"ราคาห้างสรรพสินค้า\",\"激活会员卡\":\"เปิดใช้งานการ์ด\",\"支付宝支付\":\"อาลีเพย์\",\"成功开启0元试用\":\"เปิดทดลอง 0 หยวนสำเร็จ\",\"确认绑定\":\"ยืนยันการผูกมัด\",\"绑定成功\":\"ผูกสำเร็จ\",\"商城客服已离线\":\"ฝ่ายบริการลูกค้าออฟไลน์\",\"我要反馈\":\"ฉันต้องการความคิดเห็น\",\"请填写内容\":\"กรุณากรอกเนื้อหา\",\"提交\":\"ส่ง\",\"精品推荐\":\"แนะนำ\",\"热门榜单\":\"ยอดนิยม\",\"首发新品\":\"ใหม่\",\"促销单品\":\"โปรโมชั่น\",\"预告\":\"ประกาศ\",\"回放\":\"เล่น\",\"进行中\":\"กำลังดำเนินการ\",\"发送客服\":\"ส่ง\",\"客服连接中\":\"กำลังเชื่อมต่อฝ่ายบริการลูกค้า\",\"连接失败\":\"การเชื่อมต่อล้มเหลว\",\"提示\":\"คำแนะนำ\",\"客服已下线,是否需要反馈?\":\"ฝ่ายบริการลูกค้าออฟไลน์ ต้องการคำติชมหรือไม่\",\"和好友一起分享\":\"แบ่งปันกับเพื่อน\",\"积分抵扣\":\"การหักคะแนน\",\"已开票\":\"เรียกเก็บเงิน\",\"未开票\":\"ไม่ได้ออกใบแจ้งหนี้\",\"发票信息\":\"ข้อมูลใบแจ้งหนี้\",\"发票抬头\":\"ใบแจ้งหนี้\",\"发票抬头类型\":\"ประเภทส่วนหัวของใบแจ้งหนี้\",\"个人\":\"ต่อ \",\"企业\":\"COM \",\"发票类型\":\"ประเภทใบแจ้งหนี้\",\"电子普通发票\":\"ใบแจ้งหนี้อิเล็กทรอนิกส์ทั่วไป\",\"电子专用发票\":\"ใบแจ้งหนี้พิเศษทางอิเล็กทรอนิกส์\",\"企业税号\":\"ภาษีองค์กร\",\"联系信息\":\"ข้อมูลการติดต่อ\",\"真实姓名\":\"ชื่อจริง\",\"联系邮箱\":\"อีเมล\",\"抬头选择\":\"การเลือกหัว\",\"默认\":\"ค่าเริ่มต้น\",\"普通\":\"สามัญ \",\"专用\":\"ทุ่มเท \",\"您还没有添加发票信息哟\":\"คุณยังไม่ได้เพิ่มข้อมูลใบแจ้งหนี้\",\"添加新的抬头\":\"เพิ่มส่วนหัวใหม่\",\"不开发票\":\"ไม่มีใบแจ้งหนี้\",\"抽奖\":\"หวย\",\"全选\":\"เลือกทั้งหมด\",\"属性\":\"คุณสมบัติ\",\"请填写具体地址\":\"กรุณากรอกที่อยู่เฉพาะ\",\"省\":\"จังหวัด\",\"市\":\"เมือง\",\"区\":\"พื้นที่\",\"添加成功\":\"เพิ่มสำเร็จ\",\"您已拒绝导入微信地址权限\":\"คุณปฏิเสธการอนุญาตให้นำเข้าที่อยู่ WeChat\",\"是否进入权限管理,调整授权?\":\"คุณเข้าสู่การจัดการการอนุญาตและปรับการอนุญาตหรือไม่\",\"已取消\":\"ยกเลิก\",\"添加失败\":\"เพิ่มไม่สำเร็จ\",\"请填写收货人姓名\":\"กรุณากรอกชื่อผู้รับ\",\"请选择所在地区\":\"กรุณาเลือกภูมิภาคของคุณ\",\"请填写详细地址\":\"กรุณากรอกที่อยู่โดยละเอียด\",\"星\":\"ดาว\",\"商品满足你的期待么?说说你的想法,分享给想买的他们吧\":\"ผลิตภัณฑ์ตรงตามความคาดหวังของคุณหรือไม่ บอกเราว่าคุณคิดอย่างไรและแชร์กับผู้ที่ต้องการซื้อ\",\"立即评价\":\"ให้คะแนนตอนนี้\",\"商品质量\":\"คุณภาพสินค้า\",\"服务态度\":\"ทัศนคติการบริการ\",\"缺少参数\":\"ไม่มีพารามิเตอร์\",\"请填写你对宝贝的心得\":\"กรุณากรอกความคิดเห็นเกี่ยวกับผลิตภัณฑ์\",\"正在发布评论\":\"กำลังโพสต์ความคิดเห็น\",\"感谢您的评价\":\"ขอบคุณสำหรับความคิดเห็นของคุณ\",\"评价完成\":\"ตรวจสอบเสร็จแล้ว\",\"恭喜您\":\"ยินดีด้วย\",\"获得\":\"รับ\",\"机会\":\"โอกาส\",\"领取成功\":\"ได้รับเรียบร้อยแล้ว\",\"评分\":\"คะแนน\",\"全部\":\"ทั้งหมด\",\"好评\":\"สรรเสริญ\",\"中评\":\"ค่าเฉลี่ย\",\"差评\":\"แย่\",\"加载更多\":\"กำลังโหลดเพิ่ม\",\"千米距离\":\"ห่างออกไปกิโลเมตร\",\"搜索商品名称\":\"ค้นหาสินค้า\",\"价格\":\"ราคา\",\"销量\":\"ขายแล้ว\",\"新品\":\"ใหม่\",\"已全部加载\":\"โหลดทั้งหมด\",\"缺少订单号\":\"ไม่มีรหัสคำสั่งซื้อ\",\"退货件数\":\"หมายเลขที่ขอคืน\",\"退款类型\":\"ประเภทการคืนเงิน\",\"退款原因\":\"เหตุผลในการคืนเงิน\",\"备注说明\":\"หมายเหตุ\",\"填写备注信息,100字以内\":\"หมายเหตุภายใน 100 คำ\",\"仅退款\":\"คืนเงินเท่านั้น\",\"退货并退款\":\"คืนสินค้าและคืนเงิน\",\"申请成功\":\"สมัครสำเร็จ\",\"请先选择退货商品\":\"กรุณาเลือกรายการคืนสินค้าก่อน\",\"搜索历史\":\"ประวัติการค้นหา\",\"热门搜索\":\"การค้นหายอดนิยม\",\"请输入要搜索的商品\":\"กรุณาระบุสินค้าที่ต้องการค้นหา\",\"正在搜索中\":\"กำลังค้นหา\",\"中奖记录\":\"สถิติการชนะ\",\"我的奖品\":\"รางวัลของฉัน\",\"活动规则\":\"กฎกิจกรรม\",\"昵称\":\"ชื่อเล่น\",\"序号\":\"ซีเรียล\",\"奖品名称\":\"ชื่อรางวัล\",\"获奖时间\":\"เวลาชนะ\",\"商家暂未上架活动哦\":\"ผู้ขายยังไม่ได้ระบุกิจกรรม\",\"获取抽奖信息\":\"รับข้อมูลการชิงโชค\",\"奖品类型\":\"ประเภทรางวัล\",\"立即兑换\":\"แลกเลย\",\"兑换时间\":\"เวลาแลกเปลี่ยน\",\"暂无中奖记录\":\"ไม่มีสถิติชนะ\",\"积分\":\"แต้ม\",\"余额\":\"ยอดคงเหลือ\",\"红包\":\"เงินสด\",\"设置收货地址\":\"กำหนดที่อยู่สำหรับจัดส่ง\",\"暂无门店信息\":\"ไม่มีข้อมูลร้านค้า\",\"剩余积分\":\"คะแนนที่เหลืออยู่ \",\"当前积分\":\"คะแนนปัจจุบัน \",\"开具发票\":\"ใบแจ้งหนี้\",\"请填写\":\"กรุณากรอก \",\"配送运费\":\"ค่าขนส่ง\",\"会员商品优惠\":\"ข้อเสนอผลิตภัณฑ์\",\"会员运费优惠\":\"ข้อเสนอการจัดส่ง\",\"合计\":\"รวม\",\"使用微信快捷支付\":\"ชำระเงินด่วน WeChat\",\"使用支付宝支付\":\"ชำระด้วยอาลีเพย์\",\"线下支付\":\"การชำระเงินออฟไลน์\",\"使用线下付款\":\"ใช้การชำระเงินออฟไลน์\",\"好友代付\":\"เพื่อนจ่าย\",\"找微信好友支付\":\"หาเพื่อนจ่าย\",\"立即使用\":\"ใช้\",\"请选择要购买的商品\":\"กรุณาเลือกรายการที่จะซื้อ\",\"发票\":\"ใบแจ้งหนี้\",\"不使用\":\"อย่าใช้\",\"订单创建成功\":\"สร้างคำสั่งซื้อสำเร็จ\",\"请选择支付方式\":\"กรุณาเลือกวิธีการชำระเงิน\",\"请选择收货地址\":\"กรุณาเลือกที่อยู่จัดส่ง\",\"请填写联系人或联系人电话\":\"กรุณากรอกชื่อผู้ติดต่อหรือหมายเลขโทรศัพท์ติดต่อ\",\"暂无门店,请选择其他方式\":\"ขณะนี้ไม่มีร้านค้า โปรดเลือกวิธีอื่น\",\"请输入\":\"กรุณาป้อน \",\"请输入正确的\":\"กรุณากรอกให้ถูกต้อง \",\"请上传\":\"โปรดอัปโหลด \",\"订单支付中\":\"การจ่ายเงิน\",\"请按以上退货信息将商品退回\":\"กรุณาส่งคืนสินค้าพร้อมข้อมูล\",\"请联系管理员获取退货地址\":\"โปรดติดต่อผู้ดูแลระบบเพื่อขอที่อยู่สำหรับส่งคืน\",\"待核销\":\"เขียนออก\",\"核销信息\":\"ข้อมูลการตัดยอด\",\"营业时间\":\"เวลาทำการ\",\"每日\":\"รายวัน\",\"使用说明\":\"คำแนะนำการใช้งาน\",\"可将二维码出示给店员扫描或提供数字核销码\":\"สามารถแสดงรหัส QR ต่อพนักงานเพื่อสแกนหรือระบุรหัสยืนยันดิจิทัล\",\"可将二维码出示给配送员进行核销\":\"สามารถแสดงรหัส QR แก่ผู้จัดส่งเพื่อตรวจสอบ\",\"查看位置\":\"ดูตำแหน่ง\",\"拒绝原因\":\"เหตุผลการปฏิเสธ\",\"联系客服\":\"ติดต่อ\",\"商家备注\":\"บันทึกผู้ขาย\",\"收货人\":\"ผู้รับ\",\"收货地址\":\"ที่อยู่จัดส่ง\",\"配送人姓名\":\"ชื่อเรือ\",\"拨打\":\"โทร\",\"虚拟发货\":\"เรือเสมือน\",\"已发货,请注意查收\":\"จัดส่งแล้ว โปรดตรวจสอบ\",\"虚拟备注\":\"บันทึกเสมือน\",\"总代付\":\"ยอดรวม\",\"申请开票\":\"สมัครใบแจ้งหนี้\",\"查看发票\":\"ดูใบแจ้งหนี้\",\"取消订单\":\"ยกเลิก\",\"立即付款\":\"จ่าย\",\"批量退款\":\"คืนเงินจำนวนมาก\",\"查看拼团\":\"ดูกลุ่ม\",\"再次购买\":\"ซื้อซ้ำ\",\"取消申请\":\"ยกเลิกการสมัคร\",\"填写退货信息\":\"ส่งคืนข้อมูล\",\"查看退货物流\":\"โลจิสติกส์\",\"您确认放弃此次申请吗\":\"คุณแน่ใจหรือว่าต้องการละทิ้งแอปพลิเคชันนี้\",\"操作成功\":\"ดำเนินการสำเร็จ\",\"订单信息不存在\":\"ไม่มีข้อมูลการสั่งซื้อ\",\"为保障权益,请收到货确认无误后,再确认收货\":\"เพื่อปกป้องสิทธิและผลประโยชน์ โปรดยืนยันการรับสินค้าหลังจากยืนยันว่าสินค้าถูกต้อง\",\"删除订单\":\"ลบคำสั่งซื้อ\",\"确定删除该订单\":\"ยืนยันการลบคำสั่ง\",\"删除成功\":\"ลบเรียบร้อยแล้ว\",\"确认取消该订单\":\"ยืนยันยกเลิกคำสั่งซื้อ\",\"订单信息\":\"ข้อมูลการสั่งซื้อ\",\"消费订单\":\"คำสั่ง\",\"总消费\":\"ยอดรวม\",\"预售\":\"พรีเซลล์\",\"线下付款,未支付\":\"ออฟไลน์ค้างชำระ\",\"未核销\":\"ไม่ถูกตัดออก\",\"件商品,总金额\":\" รายการ, จำนวนเงินทั้งหมด \",\"查看详情\":\"ดู\",\"暂无订单\":\"ยังไม่มีคำสั่ง\",\"缺少订单号无法取消订单\":\"ไม่สามารถยกเลิกคำสั่งซื้อโดยไม่มีหมายเลขคำสั่งซื้อ\",\"订单支付成功\":\"ชำระเงินเรียบร้อยแล้ว\",\"订单支付失败\":\"คำสั่งซื้อที่ชำระเงินล้มเหลว\",\"暂未支付\":\"ยังไม่ได้ชำระเงิน\",\"失败原因\":\"เหตุผลล้มเหลว\",\"重新购买\":\"ซื้อคืน\",\"重新支付\":\"จ่ายใหม่\",\"赠送优惠券\":\"แจกคูปอง\",\"有效期\":\"ความถูกต้อง\",\"缺少参数无法查看订单支付状态\":\"พารามิเตอร์ที่ขาดหายไปไม่สามารถดูสถานะการชำระเงินตามคำสั่งซื้อได้\",\"最多可上传3张\":\"อัปโหลดสูงสุด 3 รายการ\",\"请选择产品\":\"กรุณาเลือกผลิตภัณฑ์\",\"该产品没有更多库存了\":\"สินค้านี้ไม่มีสต็อกแล้ว\",\"优品推荐\":\"คำแนะนำที่ดีที่สุด\",\"暂无产品\":\"ยังไม่มีสินค้า\",\"重新选择\":\"เลือกใหม่\",\"请选择数量\":\"กรุณาเลือกจำนวน\",\"砍价专区·BARGAINING\":\"การเจรจาต่อรอง\",\"立即砍价\":\"ตัดเลย\",\"拼团活动\":\"กลุ่ม\",\"人拼团成功.\":\"ผู้คนประสบความสำเร็จ\",\"人参团\":\" กลุ่มโสม\",\"拼团价\":\"ราคากลุ่ม\",\"已过期\":\"หมดอายุ\",\"关注\":\"ติดตาม\",\"推荐好货\":\"แนะนำสินค้า\",\"暂无商品\":\"ยังไม่มีสินค้า\",\"限时秒杀\":\"เข็มจำกัดเวลา\",\"抢\":\"คว้า\",\"广告位\":\"พื้นที่ ADV\",\"精彩内容\":\"ไฮไลท์\",\"砍价模块,暂无数据\":\"โมดูลต่อรอง ยังไม่มีข้อมูล\",\"砍价活动\":\"ต่อรองราคา\",\"呼朋唤友来砍价\":\"ต่อรองราคาเพื่อน\",\"拼团模块,暂无数据\":\"โมดูลกลุ่ม ยังไม่มีข้อมูล\",\"享超值开团价\":\"เพลิดเพลินกับราคากลุ่มสุดคุ้ม\",\"优惠券,暂无数据\":\"คูปองไม่มีข้อมูลชั่วคราว\",\"领取今日好券\":\"รับคูปองวันนี้\",\"可用\":\" ใช้แล้ว\",\"领取\":\"เรียกร้อง\",\"客服\":\"บริการ\",\"商品列表,暂无数据\":\"ไม่มีข้อมูลชั่วคราว\",\"搜索商品\":\"ค้นหาสินค้า\",\"暂无图片,请上传图片\":\"ไม่มีรูปภาพ โปรดอัปโหลด\",\"首发新品,暂无数据\":\"ผลิตภัณฑ์ใหม่ครั้งแรก, ยังไม่มีข้อมูล\",\"多个优质商品最新上架\":\"สินค้าคุณภาพสูงล่าสุดบนชั้นวาง\",\"暂无新闻,请上传新闻\":\"ไม่มีข่าว โปรดอัปโหลดข่าว\",\"热度 TOP\":\"ฮีทท็อป\",\"排行榜、暂无数据\":\"ลีดเดอร์บอร์ด, ไม่มีข้อมูลชั่วคราว\",\"促销单品,暂无数据\":\"รายการส่งเสริมการขาย ไม่มีข้อมูลชั่วคราว\",\"库存商品优惠促销活动\":\"กิจกรรมส่งเสริมการขายสินค้าในสต็อก\",\"精品推荐,暂无数据\":\"ร้านบูติกแนะนำ ยังไม่มีข้อมูล\",\"上百种商品分类任您选择\":\"หลายร้อยหมวดหมู่สินค้าให้คุณเลือก\",\"秒杀模块,暂无数据\":\"โมดูล Seckill ไม่มีข้อมูลชั่วคราว\",\"场\":\"ไซต์\",\"暂无数据,请设置\":\"ไม่มีข้อมูล โปรดตั้งค่า\",\"暂无数据,请先添加分类\":\"ไม่มีข้อมูล กรุณาเพิ่มหมวดหมู่ก่อน\",\"暂无标题\":\"ไม่มีชื่อชั่วคราว\",\"诚意推荐品质商品\":\"แนะนำสินค้าคุณภาพโดยสุจริต\",\"点击“立即关注”即可关注公众号\":\"คลิก “ติดตามเลย” เพื่อติดตามบัญชีทางการ\",\"立即关注\":\"ติดตามเลย\",\"添加到我的小程序, 微信首页下拉即可访问商城。\":\"เพิ่มลงในแอปเพล็ตของฉัน และคุณสามารถเข้าถึงห้างสรรพสินค้าได้โดยดึงหน้าแรกของ wechat\",\"点击\":\"คลิก\",\"服务协议与隐私政策\":\"ข้อตกลงการบริการและนโยบายความเป็นส่วนตัว\",\"请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。\":\"โปรดอ่านอย่างละเอียดและเข้าใจข้อกำหนดของข้อตกลงการบริการและนโยบายความเป็นส่วนตัวอย่างละเอียดถี่ถ้วน ซึ่งรวมถึงแต่ไม่จำกัดเพียง: เพื่อให้บริการส่งข้อความโต้ตอบแบบทันที การแบ่งปันเนื้อหา และบริการอื่น ๆ แก่คุณ เราจำเป็นต้องรวบรวมอุปกรณ์ของคุณ ข้อมูล บันทึกการทำงาน และข้อมูลส่วนบุคคลอื่น ๆ คุณสามารถดู เปลี่ยนแปลง ลบข้อมูลส่วนบุคคล และจัดการการอนุญาตของคุณในการตั้งค่า\",\"你可以阅读\":\"คุณอ่านได้\",\"《服务协议与隐私政策》\":\"《ข้อตกลงการบริการและนโยบายความเป็นส่วนตัว》\",\"了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。\":\"เรียนรู้เพิ่มเติม หากคุณตกลง โปรดคลิก ฉันยอมรับ เพื่อเริ่มยอมรับบริการของเรา\",\"我同意\":\"เห็นด้วย\",\"残忍拒绝\":\"การปฏิเสธที่โหดร้าย\",\"下拉加载更多\":\"ดึงโหลดเพิ่ม\",\"网络连接断开\":\"การเชื่อมต่อเครือข่ายถูกตัดการเชื่อมต่อ\",\"请检查情况:\":\"โปรดตรวจสอบเงื่อนไข:\",\"在设置中是否已开启网络权限\":\"ไม่ว่าจะเปิดใช้งานการอนุญาตเครือข่ายในการตั้งค่าหรือไม่\",\"当前是否处于弱网环境\":\"ขณะนี้อยู่ในสภาพแวดล้อมเครือข่ายที่อ่อนแอ\",\"版本是否过低,升级试试吧\":\"เป็นเวอร์ชั่นที่ต่ำเกินไปหรือไม่ ลองอัพเกรด\",\"重新连接\":\"เชื่อมต่อใหม่\",\"加载中\":\"กำลังโหลด\",\"没有更多内容啦~\":\"ไม่มีเนื้อหาแล้ว~\",\"100%正品保证\":\"ของแท้ 100%\",\"所有商品精挑细选\":\"จู้จี้จุกจิก\",\"售后无忧\":\"หมดกังวลหลังการขาย\",\"管理\":\"ท่อ\",\"购物数量\":\"ปริมาณการซื้อของ\",\"请重新选择商品规格\":\"โปรดเลือกข้อมูลจำเพาะของผลิตภัณฑ์อีกครั้ง\",\"重选\":\"การเลือกใหม่\",\"失效商品\":\"สินค้าไม่ถูกต้อง\",\"失效\":\"ความล้มเหลว\",\"该商品已失效\":\"สินค้าหมดอายุ\",\"立即下单\":\"สั่งเลย\",\"我也是有底线的\":\"ฉันยังมีข้อแม้\",\"产品库存不足,请选择其它\":\"สินค้าคงคลังไม่เพียงพอ โปรดเลือกรายการอื่น\",\"添加购物车成功\":\"เพิ่มตะกร้าสินค้าเรียบร้อยแล้ว\",\"清除成功\":\"ล้างข้อมูลสำเร็จ\",\"暂无兑换记录~\":\"ไม่มีบันทึกการแลกเปลี่ยน~\",\"大家都在换\":\"ทุกคนเปลี่ยนไป\",\"人兑换\":\" การแลกเปลี่ยนบุคคล\",\"轻松赚积分\":\"รับคะแนนง่ายๆ\",\"购买商品\":\"ซื้อสินค้า\",\"购买商品可获得积分奖励\":\"คะแนนสะสมสำหรับการซื้อสินค้า\",\"去完成\":\"ไป\",\"每日签到活动\":\"กิจกรรมเช็คอินรายวัน\",\"每日签到可获得积分奖励\":\"เช็คอินทุกวันจะได้รับคะแนนสะสม\",\"九宫格抽奖活动\":\"หวย Jiugongge\",\"幸运抽奖可获得积分奖励\":\"สุ่มจับรางวัลได้คะแนน\",\"我的积分\":\"คะแนนของฉัน\",\"每日签到\":\"ลงชื่อเข้าใช้รายวัน\",\"积分抽奖\":\"แต้มลอตเตอรี\",\"兑换记录\":\"บันทึกการแลกเปลี่ยน\",\"已兑换\":\"แลก\",\"无法兑换\":\"ไม่สามารถแลกได้\",\"[默认]\":\"[ค่าเริ่มต้น]\",\"可用积分\":\"คะแนนที่มี\",\"快递费用\":\"ค่าธรรมเนียมด่วน\",\"免运费\":\"ปลอดค่าขนส่ง\",\"备注信息\":\"ข้อสังเกต\",\"请添加备注(150字以内)\":\"กรุณาเพิ่มข้อสังเกต (ภายใน 150 คำ)\",\"使用线上支付宝支付\":\"ชำระเงินด้วย Alipay ออนไลน์\",\"可用余额:\":\"ยอดคงเหลือ:\",\"选择线下付款方式\":\"เลือกวิธีการชำระเงินออฟไลน์\",\"正在加载…\":\"กำลังโหลด…\",\"可用积分不足!\":\"คะแนนไม่เพียงพอ!\",\"订单状态\":\"สถานะการสั่งซื้อ\",\"支付积分\":\"จ่ายแต้ม\",\"备注\":\"ข้อสังเกต\",\"配送核销码\":\"รหัสยืนยันการจัดส่ง\",\"当前可用余额:\":\"ยอดเงินคงเหลือในปัจจุบัน:\",\"正在加载\":\"กำลังโหลด\",\"缺少经纬度信息无法查看地图!\":\"ไม่สามารถดูแผนที่ได้หากไม่มีข้อมูลลองจิจูดและละติจูด!\",\"商品兑换成功\":\"แลกสำเร็จ\",\"兑换方式\":\"วิธีแลกเปลี่ยน\",\"积分兑换\":\"การแลกเปลี่ยนคะแนน\",\"兑换积分\":\"แลกคะแนน\",\"取消兑换\":\"ยกเลิกการแลกเปลี่ยน\",\"缺少参数无法查看订单兑换状态\":\"ไม่สามารถดูสถานะการแลกเปลี่ยนคำสั่งซื้อได้หากไม่มีพารามิเตอร์\",\"用户离开了\":\"ผู้ใช้ออกไป\",\"兑换成功\":\"แลกสำเร็จ\",\"物流公司\":\"บริษัทขนส่ง\",\"复制单号\":\"คัดลอกหมายเลขเอกสาร\",\"设为默认\":\"ตั้งเป็นค่าเริ่มต้น\",\"添加新地址\":\"เพิ่มที่อยู่ใหม่\",\"导入微信地址\":\"นำเข้าที่อยู่ wechat\",\"取消选择\":\"ยกเลิกการเลือก\",\"您设置的默认地址不存在!\":\"ไม่มีที่อยู่เริ่มต้นที่คุณตั้งไว้!\",\"设置成功\":\"การตั้งค่าสำเร็จ\",\"您删除的地址不存在!\":\"ไม่มีที่อยู่ที่คุณลบ!\",\"获取头像\":\"รับอวาตาร์\",\"请点击授权\":\"โปรดคลิกอนุญาต\",\"绑定手机号\":\"ผูกเบอร์มือถือ\",\"永久\":\"ถาวร\",\"会员到期\":\"สมาชิกหมดอายุ\",\"未开通会员\":\"ไม่เปิดสมาชิก\",\"查看会员权益\":\"ดูสิทธิประโยชน์ของสมาชิก\",\"立即续费\":\"ต่ออายุ\",\"立即激活\":\"การเปิดใช้งาน\",\"会员可享多项权益\":\"รับประโยชน์มากมาย\",\"订单中心\":\"คำสั่งของฉัน\",\"我的服务\":\"บริการของฉัน\",\"隐私协议\":\"ความเป็นส่วนตัว\",\"商家管理\":\"การจัดการธุรกิจ\",\"更新用户信息成功\":\"อัปเดตข้อมูลผู้ใช้เรียบร้อยแล้ว\",\"客服接待\":\"แผนกต้อนรับ\",\"点击复制网址去浏览器中打开\":\"คลิกคัดลอก URL เพื่อเปิดในเบราว์เซอร์\",\"点击复制\":\"คลิกคัดลอก\",\"完成支付\":\"ชำระเงินเรียบร้อยแล้ว\",\"点击右上角\":\"คลิกที่มุมขวาบน\",\"选择 在浏览器 打开,去支付宝支付\":\"เลือกเปิดในเบราว์เซอร์และชำระเงินผ่าน Alipay\",\"支付订单不存在,页面将在2秒后自动关闭!\":\"ไม่มีคำสั่งจ่ายเงิน และหน้าจะปิดโดยอัตโนมัติใน 2 วินาที!\",\"正在支付中\":\"การจ่ายเงิน\",\"支付订单不存在,页面将在2秒后自动关闭\":\"ไม่มีคำสั่งชำระเงิน และหน้าจะปิดโดยอัตโนมัติใน 2 วินาที\",\"复制失败\":\"การจำลองแบบล้มเหลว\",\"您目前的排名\":\"อันดับปัจจุบันของคุณ\",\"您目前暂无排名\":\"คุณอยู่ในอันดับปัจจุบัน\",\"暂无排名~\":\"ไม่มีอันดับ ~\",\"输入手机号\":\"ป้อนหมายเลขโทรศัพท์มือถือ\",\"输入验证码\":\"ป้อนรหัสยืนยัน\",\"立即登录\":\"เข้าสู่ระบบเลย\",\"请填写手机号码\":\"กรุณากรอกหมายเลขโทรศัพท์มือถือของคุณ\",\"请填写验证码\":\"กรุณากรอกรหัสยืนยัน\",\"请输入正确的验证码\":\"โปรดป้อนรหัสยืนยันที่ถูกต้อง\",\"正在登录中\":\"เข้าสู่ระบบ\",\"登录成功\":\"เข้าสู่ระบบสำเร็จ\",\"获取授权\":\"ได้รับใบอนุญาต\",\"获取微信的手机号授权\":\"รับการอนุญาตหมายเลขโทรศัพท์มือถือ wechat\",\"获取微信手机号\":\"รับเบอร์มือถือ wechat\",\"输入手机号码\":\"ป้อนหมายเลขโทรศัพท์มือถือ\",\"填写登录密码\":\"กรอกรหัสผ่านเข้าสู่ระบบ\",\"登录\":\"เข้าสู่ระบบ\",\"快速登录\":\"เข้าสู่ระบบด่วน\",\"账号登录\":\"เข้าสู่ระบบบัญชี\",\"其他方式登录\":\"เข้าสู่ระบบด้วยวิธีอื่น\",\"登录中\":\"เข้าสู่ระบบ\",\"获取用户信息失败\":\"ไม่สามารถรับข้อมูลผู้ใช้\",\"请绑定手机号后,继续操作\":\"กรุณาผูกหมายเลขโทรศัพท์มือถือของคุณและดำเนินการต่อไป\",\"错误信息\":\"ข้อมูลผิดพลาด\",\"用户点击确定\":\"ผู้ใช้คลิกตกลง\",\"用户点击取消\":\"ผู้ใช้คลิกยกเลิก\",\"登录失败\":\"การเข้าสู่ระบบล้มเหลว\",\"请勿重复点击\":\"ห้ามคลิกซ้ำ\",\"请填写密码\":\"กรุณากรอกรหัสผ่าน\",\"您输入的密码过于简单\":\"รหัสผ่านที่คุณป้อนง่ายเกินไป\",\"请填写账号\":\"กรุณากรอกหมายเลขบัญชี\",\"请输入正确的账号\":\"โปรดป้อนหมายเลขบัญชีที่ถูกต้อง\",\"[图片]\":\"[รูปภาพ]\",\"[语音]\":\"[เสียง]\",\"[商品]\":\"[สินค้า]\",\"[订单]\":\"[คำสั่ง]\",\"亲、暂无消息记录哟!\":\"เรียน ยังไม่มีบันทึกข้อความ!\",\"站内消息\":\"ในข้อความสถานี\",\"客服消息\":\"ข้อความบริการลูกค้า\",\"通知于\":\"แจ้งเตือนเมื่อ \",\"获取详情中\":\"รับรายละเอียด\",\"代付订单创建成功,发给好友帮你付款吧~\":\"สร้างคำสั่งการชำระเงินเรียบร้อยแล้ว ส่งให้เพื่อนของคุณเพื่อช่วยจ่าย~\",\"帮我付一下这件商品了,谢谢~\":\"ช่วยฉันจ่ายค่าสินค้านี้ ขอบคุณ~\",\"已经有人替我代付,谢谢啦~\":\"มีคนจ่ายเงินให้ฉัน ขอบคุณ ~\",\"谢谢你帮我支付,么么哒~\":\"ขอบคุณที่ช่วยฉันจ่าย Moda ~\",\"我已为你代付成功,商家正在努力发货中~\":\"ฉันจ่ายเงินให้คุณเรียบร้อยแล้ว และพ่อค้าพยายามส่งสินค้า ~\",\"好友代付成功,商家正在努力发货中~\":\"การชำระเงินของเพื่อนสำเร็จ และพ่อค้าพยายามส่งสินค้า ~\",\"发送给微信好友\":\"ส่งให้เพื่อน wechat\",\"查看订单详情\":\"ดูรายละเอียดการสั่งซื้อ\",\"订单已支付\":\"สั่งจ่ายแล้ว\",\"如果订单申请退款,已支付金额将原路退还给您\":\"หากคำสั่งซื้อใช้สำหรับการคืนเงิน จำนวนเงินที่ชำระจะถูกส่งคืนให้คุณในลักษณะเดียวกัน\",\"代付成功\":\"ชำระเงินสำเร็จ\",\"谢谢你为我付款,还可以再去看看其他商品哟~\":\"ขอบคุณที่จ่ายเงินให้ฉัน และคุณสามารถไปดูสินค้าอื่นๆ ได้~\",\"该订单暂未支付\":\"คำสั่งซื้อยังไม่ได้รับการชำระเงิน\",\"人\":\" คน\",\"推广人数\":\"จำนวนโปรโมเตอร์\",\"一级\":\"ระดับ 1\",\"二级\":\"ระดับ 2\",\"点击搜索会员名称\":\"คลิกเพื่อค้นหาชื่อสมาชิก\",\"团队排序\":\"การคัดแยกทีม\",\"金额排序\":\"การเรียงลำดับจำนวนเงิน\",\"订单排序\":\"การเรียงลำดับ\",\"单\":\" คำสั่งซื้อ\",\"加入时间\":\"เวลาเข้าร่วม\",\"累积推广订单\":\"จำนวนการสั่งซื้อ\",\"本月累计推广订单\":\"คำสั่งเดือน\",\"返佣\":\"ส่วนลด\",\"暂未返佣\":\"ไม่คืนเงิน\",\"返佣时间\":\"เวลาคืนเงิน\",\"单号\":\"หมายเลขคำสั่งซื้อ\",\"暂无推广订单~\":\"ไม่มีคำสั่งส่งเสริมการขาย ~\",\"推广订单列表\":\"รายการสั่งซื้อโปรโมชั่น\",\"找回密码\":\"ดึงรหัสผ่าน\",\"填写您的新密码\":\"กรอกรหัสผ่านใหม่ของคุณ\",\"加载失败\":\"โหลดล้มเหลว\",\"点击授权登录您的客服工作台\":\"คลิกอนุญาตเพื่อเข้าสู่โต๊ะทำงานบริการลูกค้าของคุณ\",\"授权登录\":\"เข้าสู่ระบบที่ได้รับอนุญาต\",\"没有登录的code,请重新扫码\":\"รหัสโดยไม่ต้องเข้าสู่ระบบ โปรดสแกนรหัสอีกครั้ง\",\"员工人数\":\"จำนวนพนักงาน\",\"邀请\":\"คำเชิญ\",\"分佣比例\":\"มาตราส่วน\",\"修改分佣比例\":\"ปรับเปลี่ยนสัดส่วน\",\"请输入百分比\":\"โปรดป้อนเปอร์เซ็นต์\",\"删除员工\":\"ลบพนักงาน\",\"确定删除该员工?\":\"คุณแน่ใจหรือว่าต้องการลบพนักงานคนนี้\",\"请输入比例\":\"กรุณาใส่มาตราส่วน\",\"分类\":\"คลาส\",\"我的\":\"ของฉัน\",\"姓名\":\"ชื่อ\",\"请输入联系电话\":\"กรุณากรอกเบอร์ติดต่อ\",\"所在地区\":\"ที่ตั้ง\",\"详细地址\":\"ที่อยู่\",\"设置为默认地址\":\"ตั้งเป็นที่อยู่เริ่มต้น\",\"立即保存\":\"บันทึกทันที\",\"浙江省\":\"เจ้อเจียง\",\"杭州市\":\"หางโจว\",\"滨江区\":\"เขตปินเจียง\",\"广东省\":\"มณฑลกวางตุ้ง\",\"广州市\":\"กวางโจว\",\"番禺区\":\"ปันหยู\",\"修改地址\":\"แก้ไขที่อยู่\",\"添加地址\":\"เพิ่มที่อยู่\",\"已取消!\":\"ยกเลิก!\",\"请填写联系电话\":\"กรุณากรอกเบอร์ติดต่อ\",\"保存中\":\"ออมทรัพย์\",\"修改成功\":\"แก้ไขสำเร็จ\",\"消费\":\"การบริโภค\",\"充值\":\"เติมเงิน\",\"暂无账单的记录哦~\":\"ไม่มีบันทึกการเรียกเก็บเงินชั่วคราว~\",\"点击【立即注销】即代表您已经同意《用户注销协议》\":\"การคลิก [ออกจากระบบทันที] หมายความว่าคุณยอมรับข้อตกลงการออกจากระบบของผู้ใช้\",\"立即注销\":\"ออกจากระบบเดี๋ยวนี้\",\"是否确认注销\":\"ยืนยันการออกจากระบบ\",\"注销后无法恢复,请谨慎操作\":\"ไม่สามารถกู้คืนได้หลังจากออกจากระบบ โปรดระวัง\",\"注销\":\"ออกจากระบบ\",\"持卡人\":\"ผู้ถือบัตร\",\"请输入持卡人姓名\":\"ป้อนชื่อผู้ถือบัตร\",\"卡号\":\"หมายเลขบัตร\",\"请填写卡号\":\"กรุณากรอกหมายเลขบัตร\",\"银行\":\"ธนาคาร\",\"提现\":\"ถอนเงิน\",\"最低提现金额\":\"จำนวนถอนขั้นต่ำ\",\"当前可提现金额\":\"จำนวนเงินที่ถอนได้ในปัจจุบัน\",\"冻结佣金\":\"ค่าคอมมิชชั่นแช่แข็ง\",\"说明: 每笔佣金的冻结期为\":\"หมายเหตุ: ระยะเวลาการแช่แข็งของแต่ละคอมมิชชั่นคือ\",\"天,到期后可提现\":\"วัน ถอนได้เมื่อหมดอายุ\",\"账号\":\"บัญชี\",\"请填写您的微信账号\":\"กรอกบัญชี wechat ของคุณ\",\"收款码\":\"รหัสสะสม\",\"请填写您的支付宝账号\":\"กรอกหมายเลขบัญชี Alipay ของคุณ\",\"请选择银行\":\"กรุณาเลือกธนาคาร\",\"银行卡\":\"บัตรธนาคาร\",\"微信\":\"วีแชท\",\"支付宝\":\"อาลีเพย์\",\"请填写持卡人姓名\":\"กรุณากรอกชื่อผู้ถือบัตร\",\"请填写微信号\":\"กรุณากรอก wechat\",\"请填写提现金额\":\"กรุณากรอกจำนวนเงินที่ถอน\",\"现金额不能低于\":\"จำนวนถอนต้องไม่น้อยกว่า\",\"未使用\":\"ไม่ได้ใช้\",\"已使用/过期\":\"ใช้แล้ว/หมดอายุ\",\"通用劵\":\"หลักทรัพย์ทั่วไป\",\"一级分佣上浮\":\"หนึ่งระดับขึ้นไป\",\"二级分佣上浮\":\"ลอยตัวรอง\",\"快速升级技巧\":\"ทักษะการอัพเกรดอย่างรวดเร็ว\",\"未完成\":\"ไม่สมบูรณ์\",\"已领完\":\"รวบรวม\",\"当前共\":\"ยอดรวมปัจจุบัน\",\"取关\":\"ปิด \",\"请选择商品\":\"กรุณาเลือกผลิตภัณฑ์\",\"头像\":\"อวตาร\",\"手机号码\":\"เบอร์มือถือ\",\"点击绑定手机号\":\"คลิกเพื่อผูก\",\"ID号\":\"หมายเลขประจำตัวประชาชน\",\"权限设置\":\"อนุญาต\",\"点击管理\":\"การจัดการ\",\"密码\":\"รหัสผ่าน\",\"点击修改密码\":\"คลิกแก้ไข\",\"更换手机号码\":\"เปลี่ยนหมายเลข\",\"点击更换手机号码\":\"คลิกเพื่อ\",\"缓存大小\":\"ขนาดแคช\",\"当前版本\":\"เวอร์ชันปัจจุบัน\",\"地址管理\":\"ที่อยู่\",\"发票管理\":\"ใบแจ้งหนี้\",\"账号注销\":\"ยกเลิก\",\"注销后无法恢复\":\"ไม่สามารถกู้คืนได้\",\"累计积分\":\"คะแนนสะสม\",\"累计消费\":\"การบริโภค\",\"冻结积分\":\"จุดเยือกแข็ง\",\"积分规则\":\"กฎปริพันธ์\",\"提示:积分数值的高低会直接影响您的会员等级\":\"เคล็ดลับ: คุณค่าระดับสมาชิกของคุณ\",\"提示:你有\":\"เคล็ดลับ: คุณมี\",\"积分在\":\"อินทิกรัลใน\",\"过期,请尽快使用\":\"หมดอายุ โปรดใช้โดยเร็วที่สุด\",\"暂无积分记录哦~\":\"ไม่มีการบันทึกคะแนนชั่วคราว~\",\"赚积分\":\"รับคะแนน\",\"分值明细\":\"รายละเอียดคะแนน\",\"分值提升\":\"คะแนนเพิ่มขึ้น\",\"抬头类型\":\"ประเภทส่วนหัว\",\"增值税电子专用发票\":\"VAT ใบแจ้งหนี้พิเศษทางอิเล็กทรอนิกส์\",\"增值税电子普通发票\":\"ใบกำกับภาษีมูลค่าเพิ่มแบบอิเล็กทรอนิกส์\",\"需要开具发票的姓名\":\"ชื่อที่จะออกใบแจ้งหนี้\",\"需要开具发票的企业名称\":\"ชื่อองค์กรที่ออกใบแจ้งหนี้\",\"税号\":\"เลขภาษี\",\"纳税人识别号\":\"หมายเลขประจำตัวผู้เสียภาษี\",\"手机号\":\"เบอร์มือถือ\",\"您的手机号\":\"เบอร์มือถือของคุณ\",\"邮箱\":\"กล่องจดหมาย\",\"您的联系邮箱\":\"กล่องจดหมายติดต่อของคุณ\",\"开户银行\":\"เงินฝากธนาคาร\",\"您的开户银行\":\"ธนาคารเงินฝากของคุณ\",\"银行账号\":\"หมายเลขบัญชีธนาคาร\",\"您的银行账号\":\"หมายเลขบัญชีธนาคารของคุณ\",\"企业地址\":\"ที่อยู่องค์กร\",\"您所在的企业地址\":\"ที่อยู่ธุรกิจของคุณ\",\"企业电话\":\"โทรศัพท์องค์กร\",\"您的企业电话\":\"โทรศัพท์ธุรกิจของคุณ\",\"设置为默认抬头\":\"ตั้งเป็นส่วนหัวเริ่มต้น\",\"保存\":\"บันทึก\",\"发票类型选择\":\"การเลือกประเภทใบแจ้งหนี้\",\"纸质发票开出后将以邮寄形式交付\":\"หลังจากออกใบแจ้งหนี้กระดาษแล้ว จะถูกจัดส่งทางไปรษณีย์\",\"请输入需要开具发票的姓名\":\"โปรดป้อนชื่อที่จะออกใบแจ้งหนี้\",\"请输入您的手机号\":\"กรุณาใส่หมายเลขโทรศัพท์มือถือของคุณ\",\"请正确输入您的手机号\":\"กรุณาใส่หมายเลขโทรศัพท์มือถือของคุณถูกต้อง\",\"请输入您的联系邮箱\":\"กรุณาใส่อีเมลสำหรับติดต่อของคุณ\",\"请正确输入您的联系邮箱\":\"กรุณาใส่อีเมลติดต่อของคุณให้ถูกต้อง\",\"请输入需要开具发票的企业名称\":\"โปรดป้อนชื่อองค์กรเพื่อออกใบแจ้งหนี้\",\"请输入纳税人识别号\":\"โปรดป้อนหมายเลขประจำตัวผู้เสียภาษี\",\"请正确输入纳税人识别号\":\"กรุณาใส่หมายเลขประจำตัวผู้เสียภาษีให้ถูกต้อง\",\"请输入您的开户银行\":\"กรุณาป้อนธนาคารเงินฝากของคุณ\",\"请输入您的银行账号\":\"โปรดป้อนหมายเลขบัญชีธนาคารของคุณ\",\"请正确输入您的银行账号\":\"โปรดป้อนหมายเลขบัญชีธนาคารของคุณให้ถูกต้อง\",\"请输入您所在的企业地址\":\"โปรดป้อนที่อยู่ธุรกิจของคุณ\",\"请输入您的企业电话\":\"โปรดป้อนหมายเลขโทรศัพท์ธุรกิจของคุณ\",\"发票记录\":\"บันทึกใบแจ้งหนี้\",\"抬头管理\":\"การจัดการส่วนหัว\",\"申请时间\":\"เวลาสมัคร\",\"没有发票信息哟~\":\"ไม่มีข้อมูลใบแจ้งหนี้ ~\",\"个人普通发票\":\"ใบแจ้งหนี้ส่วนบุคคล\",\"企业普通发票\":\"ใบแจ้งหนี้ธรรมดาขององค์กร\",\"企业专用发票\":\"ใบแจ้งหนี้พิเศษขององค์กร\",\"添加新发票\":\"เพิ่มใบแจ้งหนี้ใหม่\",\"删除该发票?\":\"ลบใบแจ้งหนี้นี้หรือไม่\",\"发票编号\":\"หมายเลขใบแจ้งหนี้\",\"发票备注\":\"หมายเหตุใบแจ้งหนี้\",\"快递号\":\"หมายเลขด่วน\",\"总资产(元)\":\"สินทรัพย์ทั้งหมด (฿)\",\"累计充值(元)\":\"เติมเงินร่วม (฿)\",\"累计消费(元)\":\"ดอกโค (฿)\",\"账单记录\":\"บันทึกบิล\",\"消费记录\":\"บันทึก\",\"充值记录\":\"เติมเงิน\",\"积分中心\":\"อินทิกรัล\",\"签到领积分\":\"ลงชื่อเข้าใช้\",\"赚积分抵现金\":\"รับคะแนน\",\"领取优惠券\":\"คูปอง\",\"满减享优惠\":\"ส่วนลดเต็มจำนวน\",\"最新拼团活动\":\"กิจกรรมกลุ่มล่าสุด\",\"最新的优惠商品上架拼团\":\"สินค้าพิเศษล่าสุดบนหิ้ง\",\"立即参与\":\"เข้าร่วม\",\"当前限时秒杀\":\"เวลาปัจจุบัน จำกัด การฆ่าครั้งที่สอง\",\"最新商品秒杀进行中\":\"กำลังเร่งสินค้าโภคภัณฑ์ล่าสุด\",\"我的余额\":\"ยอดคงเหลือ\",\"赠送\":\"ของขวัญ\",\"其他\":\"อื่นๆ\",\"注意事项\":\"ข้อควรระวัง\",\"冻结佣金为\":\"ค่าคอมมิชชั่นแช่แข็งคือ\",\"立即转入\":\"โอนเข้าทันที\",\"立即充值\":\"เติมเงินทันที\",\"请输入金额\":\"กรุณาใส่จำนวนเงิน\",\"转入余额\":\"โอนในยอดคงเหลือ\",\"转入余额后无法再次转出,确认是否转入余额\":\"ไม่สามารถโอนออกได้อีกหลังจากโอนในยอดคงเหลือ ให้ยืนยันว่าจะโอนในยอดคงเหลือ\",\"转入成功\":\"โอนสำเร็จ\",\"正在支付\":\"การจ่ายเงิน\",\"充值金额必须为数字\":\"ยอดเติมเงินต้องเป็นตัวเลข\",\"充值金额不能为0\":\"จำนวนเติมเงินไม่สามารถเป็น 0\",\"填写手机号码\":\"กรอกหมายเลขโทรศัพท์มือถือ\",\"是否绑定账号\":\"ผูกบัญชี\",\"绑定\":\"การผูกมัด\",\"您已取消绑定!\":\"คุณมี unbound!\",\"当前手机号\":\"หมายเลขโทรศัพท์มือถือปัจจุบัน\",\"设置新密码\":\"ตั้งรหัสผ่านใหม่\",\"确认新密码\":\"ยืนยันรหัสผ่านใหม่\",\"手机号码不存在,无法发送验证码!\":\"ไม่มีหมายเลขโทรศัพท์มือถือ ไม่สามารถส่งรหัสยืนยันได้!\",\"请输入新密码\":\"กรุณาใส่รหัสผ่านใหม่\",\"两次输入的密码不一致!\":\"รหัสผ่านทั้งสองที่คุณป้อนไม่สอดคล้องกัน!\",\"请输入验证码\":\"โปรดป้อนรหัสยืนยัน\",\"暂无退款订单~\":\"ไม่มีคำสั่งคืนเงิน ~\",\"缺少订单号无法查看订单详情\":\"ไม่มีหมายเลขคำสั่งซื้อและไม่สามารถดูรายละเอียดคำสั่งซื้อได้\",\"明细\":\"เดต้า\",\"第七天\":\"วันที่ 7\",\"第7天\":\"วันที่ 7\",\"奖励\":\"รางวัล\",\"已签到\":\"เช็คอิน\",\"立即签到\":\"ลงชื่อเข้าใช้เลย\",\"已累计签到\":\"เช็คอินสะสม\",\"据说连续签到第\":\"การเข้าสู่ระบบติดต่อกันเป็นครั้งที่สอง\",\"天可获得超额积分,一定要坚持签到哦~~~\":\"หากคุณได้รับคะแนนส่วนเกินทุกวัน คุณต้องยืนยันในการลงชื่อเข้าใช้~~~\",\"签到成功\":\"เช็คอินสำเร็จ\",\"好的\":\"โอเค\",\"您今日已签到!\":\"คุณลงชื่อเข้าใช้วันนี้!\",\"暂无签到记录~\":\"ไม่มีบันทึกการลงชื่อเข้าใช้~\",\"保存海报\":\"บันทึกโปสเตอร์\",\"长按保存图片\":\"กดค้างเพื่อบันทึกภาพ\",\"分销海报\":\"โปสเตอร์แจกจ่าย\",\"小程序二维码需要发布正式版后才能获取到\":\"รหัส QR ของ Applet สามารถรับได้หลังจากเผยแพร่เวอร์ชันอย่างเป็นทางการแล้วเท่านั้น\",\"获取中\":\"รับ \",\"暂无数据~\":\"ไม่มีข้อมูลชั่วคราว ~\",\"提现记录\":\"ถอนเงิน\",\"提现总额\":\"ถอนทั้งหมด\",\"佣金记录\":\"บันทึกค่าคอมมิชชั่น\",\"佣金明细\":\"รายละเอียดค่าคอมมิชชั่น\",\"分销等级\":\"ระดับการกระจาย \",\"昨日收益\":\"รายได้ของเมื่อวาน\",\"累积已提\":\"ถอนสะสม\",\"代理商申请\":\"สมัครตัวแทน\",\"立即提现\":\"ถอนเงิน\",\"推广名片\":\"นามบัตร\",\"推广人统计\":\"สถิติโปรโมเตอร์\",\"推广人订单\":\"คำสั่งโปรโมเตอร์\",\"推广订单\":\"คำสั่งส่งเสริมการขาย\",\"事业部\":\"ฝ่ายธุรกิจ\",\"代理商\":\"ตัวแทน\",\"推广人排行\":\"อันดับโปรโมเตอร์\",\"佣金排行\":\"อันดับค่าคอมมิชชั่น\",\"员工列表\":\"รายชื่อพนักงาน\",\"您目前暂无推广权限\":\"ขณะนี้คุณไม่ได้รับอนุญาตให้เลื่อนขั้น\",\"商城购物可享\":\"ช้อปปิ้งในห้าง\",\"折\":\"ส่วนลด\",\"当前等级\":\"ระดับปัจจุบัน\",\"未达成\":\"ไม่ถึง\",\"今日成长值\":\"มูลค่าการเติบโตของวันนี้\",\"点\":\"แต้ม\",\"我的成长值记录\":\"บันทึกมูลค่าการเติบโตของฉัน\",\"暂未解锁该等级\":\"ระดับนี้ยังไม่ได้ปลดล็อค\",\"点,需达到\":\"ชี้ต้องไปให้ถึง\",\"已解锁更高等级\":\"ปลดล็อกระดับที่สูงขึ้น\",\"我的成长特权\":\"สิทธิ์การเติบโตของฉัน\",\"购物折扣\":\"ส่วนลด\",\"专属徽章\":\"ตราพิเศษ\",\"经验累积\":\"สะสมประสบการณ์\",\"尊享客服\":\"บริการพิเศษ\",\"签到\":\"เช็คอิน\",\"可获得\":\"ว่าง\",\"点经验\":\"แต้มประสบการณ์\",\"每日签到可获得经验值,已签到\":\"การลงชื่อเข้าใช้รายวันสามารถรับค่าประสบการณ์, ลงชื่อเข้าใช้\",\"去签到\":\"เช็คอิน\",\"点经验/元\":\"แต้มประสบการณ์/฿\",\"购买商品可获得对应的经验值\":\"ค่าประสบการณ์ที่สอดคล้องกันสามารถรับได้จากการซื้อสินค้า\",\"去购买\":\"ไปซื้อ\",\"点经验/人\":\"ค่าประสบการณ์/คน\",\"邀请好友注册商城可获得经验值\":\"ชวนเพื่อนลงทะเบียนในห้างเพื่อรับค่าประสบการณ์\",\"去邀请\":\"เชิญ\",\"积分数\":\"เศษผลิตภัณฑ์\",\"消费金额\":\"ปริมาณการใช้\",\"暂无经验记录\":\"ไม่มีประวัติประสบการณ์\",\"账户登录\":\"เข้าสู่ระบบบัญชี\",\"微信登录\":\"เข้าสู่ระบบ Wechat\",\"手机号登录\":\"เข้าสู่ระบบมือถือ\",\"账户充值\":\"เติมเงิน\",\"佣金转入\":\"ค่าคอมมิชชั่น\",\"周榜\":\"รายการรายสัปดาห์\",\"月榜\":\"รายการรายเดือน\",\"周排行\":\"อันดับประจำสัปดาห์\",\"月排行\":\"อันดับรายเดือน\",\"语言切换\":\"ภาษา\",\"点击前往\":\"คลิกเพื่อไป\",\"查看全部\":\"ดูทั้งหมด\",\"查看订单\":\"ดูคำสั่งซื้อ\",\"无法获取图片信息\":\"ไม่สามารถรับข้อมูลภาพได้\",\"长按或扫描查看\":\"กดแบบยาวหรือสแกนดู\",\"点解锁\":\"ปลดล็อกแต้ม\",\"确认修改\":\"ยืนยัน\",\"保存修改\":\"บันทึก\",\"退出登录\":\"ออกจากระบบ\",\"付费会员\":\"สวีไอพี\",\"地址信息\":\"ที่อยู่\",\"我的推广\":\"ส่วนขยาย\",\"砍价记录\":\"ต่อรองราคา\",\"我的等级\":\"ระดับของฉัน\",\"兑换\":\"ไป\",\"申请中\":\"ใบสมัคร\",\"统计管理\":\"สถิติ\",\"退款\":\"คืนเงิน\",\"未发货\":\"ไม่ออก\",\"当前为最新版本\":\"ปัจจุบันเป็นเวอร์ชันล่าสุด\",\"清除缓存\":\"ล้างแคช\",\"确定清楚本地缓存数据吗\":\"คุณแน่ใจหรือว่าคุณชัดเจนเกี่ยวกับข้อมูลแคชในเครื่อง\",\"缓存清理完成\":\"การล้างแคชเสร็จสิ้น\",\"切换的账号不存在\":\"ไม่มีบัญชีที่สับเปลี่ยน\",\"正在切换中\":\"เปลี่ยน\",\"确认退出登录\":\"ยืนยันการออกจากระบบ\",\"我知道了\":\"ฉันเห็น\",\"系统错误\":\"ระบบผิดพลาด\",\"请求失败\":\"คำขอล้มเหลว\",\"邀请您加入\":\"เชิญคุณเข้าร่วม \",\"图片上传中\":\"กำลังอัปโหลด\",\"上传图片失败\":\"ไม่สามารถอัปโหลดภาพ\",\"访问位置被拒绝\":\"ตำแหน่งการเข้าถึงถูกปฏิเสธ\",\"系统定位已关闭\":\"ปิดตำแหน่งระบบ\",\"需要定位权限\":\"ต้องได้รับอนุญาตจากตำแหน่ง\",\"订单核销\":\"ตัดจำหน่าย\",\"当前可转入佣金为\":\"ค่าคอมมิชชั่นที่โอนได้ในปัจจุบันคือ\",\"浏览记录\":\"ประวัติการค้นหา\",\"签到奖励\":\"รางวัลเช็คอิน\",\"请输入内容\":\"โปรดระบุเนื้อหา\",\"单次限购\":\"ซื้อจำกัดเดียว\",\"永久限购\":\"ซื้อจำกัดถาวร\",\"《用户协议》\":\"《ข้อตกลงผู้ใช้》\",\"《隐私协议》\":\"《ข้อตกลงความเป็นส่วนตัว》\",\"与\":\"กับ\",\"请先阅读并同意协议\":\"กรุณาอ่านและยอมรับข้อตกลงก่อน\",\"绑定下级通知\":\"ผูกพันการแจ้งเตือนระดับล่าง\",\"购买成功通知\":\"ประกาศซื้อสำเร็จ\",\"确认收货通知\":\"ยืนยันการรับสินค้า\",\"改价通知\":\"แจ้งการเปลี่ยนแปลงราคา\",\"退款成功通知\":\"ประกาศความสำเร็จของการคืนเงิน\",\"充值成功通知\":\"แจ้งเตือนความสำเร็จ\",\"积分到账通知\":\"แจ้งยอดบัญชี\",\"佣金到账通知\":\"คณะกรรมการแจ้งบัญชี\",\"砍价成功通知\":\"ประกาศความสำเร็จของการเจรจาต่อรอง\",\"拼团成功通知\":\"ประกาศความสำเร็จ\",\"拼团失败通知\":\"การแจ้งเตือนความล้มเหลว\",\"开团成功通知\":\"ประกาศความสำเร็จของกลุ่ม\",\"提现成功通知\":\"ส่งประกาศความสำเร็จ\",\"提现失败通知\":\"แจ้งความล้มเหลว\",\"充值退款通知\":\"การแจ้งเตือนการคืนเงินเต็ม\",\"退款申请拒绝通知\":\"แจ้งการปฏิเสธการคืนเงิน\",\"您有新的退款待处理\":\"คุณมีการคืนเงินใหม่ที่จะจัดการกับ\",\"您有新的订单待处理\":\"คุณมีคำสั่งใหม่ที่ต้องจัดการ\",\"发货通知\":\"ประกาศการจัดส่งสินค้า\",\"取消拼团通知\":\"ประกาศยกเลิก\",\"参团成功通知\":\"ประกาศความสำเร็จของคณะผู้แทน\",\"你有个新的提现申请待处理\":\"คุณมีข้อเสนอใหม่สำหรับการประมวลผล\",\"你有个新的用户收货待处理\":\"คุณมีผู้ใช้ใหม่เพื่อรับสินค้า\",\"提醒付款通知\":\"แจ้งเตือนการชำระเงิน\",\"短信验证码\":\"รหัสตรวจสอบข้อความ\",\"到店自提\":\"ไปที่ร้าน\",\"快递配送\":\"จัดส่งด่วน\"}");
  8527. /***/ }),
  8528. /***/ 25:
  8529. /*!******************************************************!*\
  8530. !*** D:/data/zhonghong/saber-weixin/lang/ja_jp.json ***!
  8531. \******************************************************/
  8532. /*! exports provided: 选择地址, 选择其它地址, 已选商品, 清空, ¥, 已售罄, 已下架, 删除, 商品券, 品类券, 通用券, 优惠券, 满, 元可用, 无门槛券, 领取后, 天内可用, 已领取, 立即领取, 购物满, 减, 不限时, 秒杀, 砍价, 拼团, 已售, 立即购买, 加入购物车, 选规格, 跳过, 立即体验, 首页, 搜索, 购物车, 我的收藏, 个人中心, 券, 正在加载中, 上拉加载更多, 代付金额, 共, 件商品, 订单包裹, 申请退款中, 已退款, 已完成, 件退款中, 不支持配送, 不支持自提, 已评价, 评价, 申请退款, 查看物流, 确认收货, 选择付款方式, 支付, 去付款, 请选择要支付的订单, 余额不足, 支付中, 缺少支付参数, 取消支付, 支付成功, 支付失败, 库存, 限量, 数量, 我要参团, 确定, 热门推荐, 最高返佣, 推广享佣金, 立即分享, 发现新版本, 立即升级, 下载进度, 店小二, 暂无记录, 正在下载海报,请稍后再试, 海报二维码生成失败, 倒计时, 天, 时, 分, 秒, 砍价成功, 活动已结束, 已砍至, 活动进行中, 取消活动, 继续砍价, 暂无砍价记录, 人正在参与, 最低, 参与砍价, 砍价列表, 人查看, 人分享, 人参与, 邀请您帮忙砍价, 查看商品, 当前, 已砍, 还剩, 立即参与砍价, 商品暂无库存, 邀请好友帮砍价, 已有, 位好友成功砍价, 帮好友砍一刀, 好友已砍价成功, 我也要参与, 已成功帮助好友砍价, 恭喜您砍价成功,快去支付, 立即支付, 抢更多商品, 砍价帮, 砍掉, 更多, 关闭, 点击加载更多, 商品详情, 砍价规则, 您已砍掉, 元,听说分享次数越多砍价成功的机会越大哦, 成功帮砍, 您也可以砍价低价拿哦,快去挑选心仪的商品吧, 发送给朋友, 微信好友, 微信朋友圈, 生成海报, 砍价详情, 分享成功, 分享失败, 该商品每人限购, 您的好友, 邀请您砍价, 人团, 去拼团, 拼团列表, 类型, 累计销量, 限购, 种规格可选, 已拼, 件, 还差, 人成团, 去拼单, 查看更多, 收起, 拼团玩法, 开团/参团, 邀请好友, 满员发货, 用户评价, 好评率, 产品介绍, 单独购买, 立即开团, 请选择, 商品, 详情, 缺少参数无法查看商品, 参数错误, 已选择, 保存成功, 保存失败, 人拼, 剩余, 结束, 恭喜您拼团成功, 人,拼团失败, 拼团中,还差, 人拼团成功, 邀请好友参团, 再次开团, 取消开团, 查看订单信息, 大家都在拼, 更多拼团, 邀请您参团, 你不是该团的成员, 已抢, 抢购中, 未开始, 已结束, 暂无商品,去看点别的吧, 即将开始, 距秒杀结束仅剩, 累计销售, 收藏, 保存到手机, 长按图片可以保存到手机, 抢购详情页, 二维码获取失败, 请选择属性, 提示:点击图片即可保存至手机相册, 拼团海报, 砍价海报, 海报生成中, 海报图片获取失败, 海报, 已预定, 预售价, 立即预定, 开售时间, 预售活动, 起, 划线价, 开通“超级会员”立省, 元, 立即开通, 预售活动时间, 预售结束后, 天内发货, 活动, 参与秒杀, 参与拼团, 复制口令, 复制成功, 推荐, 缺少经纬度信息无法查看地图, 产品库存不足,请选择其它属性, 立即退款, 一键改价, 订单备注, 商品总价, 原始邮费, 实际支付, 退款金额, 请填写备注信息, 立即修改, 确认退款, 拒绝退款, 取消, 订单号, 发货方式, 发货类型, 快递公司, 快递单号, 顺丰请输入单号 :收件人或寄件人手机号后四位, 例如:SF000000000000:3941, 电子面单, 预览, 寄件人姓名, 填写寄件人姓名, 寄件人电话, 填写寄件人电话, 寄件人地址, 填写寄件人地址, 送货人, 确认提交, 发货, 送货, 无需物流, 手动填写, 电子面单打印, 填写快递单号, 请选择电子面单, 待付款, 待发货, 待收货, 待评价, 售后/退款, 数据统计, 今日成交额, 昨日成交额, 本月成交额, 今日订单数, 昨日订单数, 本月订单数, 详细数据, 日期, 订单数, 成交额, 立即核销, 查看, 确定要核销此订单吗, 确定核销, 请输入核销码, 请输入正确的核销码, 查询中, 订单, 订单未备注,点击添加备注信息, 复制, 件商品,应支付, 邮费, 订单编号, 下单时间, 支付状态, 已支付, 未支付, 支付方式, 买家留言, 支付金额, 优惠券抵扣, 运费, 实付款, 配送方式, 快递, 送货人电话, 确认付款, 去发货, 改价成功, 改价失败, 请输入备注, 退款中, 部分退款中, 件商品,实付款, 同意退货, 待用户发货, 请输入正确的金额, 今天, 昨天, 最近7天, 本月, 自定义, 营业额(元), 订单量(份), 增长率, 增长, 单位, 元., 分., 固定, 指定范围, 提交时间, 原因, 暂无申请记录,快去申请吧!, 没有更多啦, 待审核, 审核通过, 审核未通过, 编辑, 重新提交, 会员优惠价, 余额支付, 可用余额, 微信支付, 确认, 支付提醒, 线下支付已关闭,请点击确认按钮返回主页, 请输入支付金额, 正在确认, 进入商城, 代理商名称, 请输入代理商名称, 用户姓名, 请输入姓名, 联系电话, 请输入手机号, 验证码, 填写验证码, 邀请码, 请输入代理商邀请码, 请上传营业执照及行业相关资质证明图片, 图片最多可上传10张,图片格式支持JPG、PNG、JPEG, 上传图片, 已阅读并同意, 代理商协议, 提交申请, 代理商入驻协议, 恭喜,您的资料提交成功!, 返回首页, 恭喜,您的资料通过审核!, 您的申请未通过!, 重新申请, 获取验证码, 请输入正确的手机号码, 重新获取, 请上传营业执照, 请勾选并同意入驻协议, 专题栏, 暂无数据, 请输入卡号, 请输入卡密, 确认激活, SVIP会员尊享权, 正在激活, 已使用, 永久SVIP会员, SVIP会员, 到期, 您与, 商城的第, 天., 已累积为您节省, 开通即享会员权益, 续费会员, 开通会员, 有效期至, 试用, 购买即视为同意, 会员用户协议, 点击兑换卡密, 会员优惠券, SVIP商品推荐, 商城价, 激活会员卡, 支付宝支付, 成功开启0元试用, 确认绑定, 绑定成功, 商城客服已离线, 我要反馈, 请填写内容, 提交, 精品推荐, 热门榜单, 首发新品, 促销单品, 预告, 回放, 进行中, 发送客服, 客服连接中, 连接失败, 提示, 客服已下线,是否需要反馈?, 和好友一起分享, 积分抵扣, 已开票, 未开票, 发票信息, 发票抬头, 发票抬头类型, 个人, 企业, 发票类型, 电子普通发票, 电子专用发票, 企业税号, 联系信息, 真实姓名, 联系邮箱, 抬头选择, 默认, 普通, 专用, 您还没有添加发票信息哟, 添加新的抬头, 不开发票, 抽奖, 全选, 属性, 请填写具体地址, 省, 市, 区, 添加成功, 您已拒绝导入微信地址权限, 是否进入权限管理,调整授权?, 已取消, 添加失败, 请填写收货人姓名, 请选择所在地区, 请填写详细地址, 星, 商品满足你的期待么?说说你的想法,分享给想买的他们吧, 立即评价, 商品质量, 服务态度, 缺少参数, 请填写你对宝贝的心得, 正在发布评论, 感谢您的评价, 评价完成, 恭喜您, 获得, 机会, 领取成功, 评分, 全部, 好评, 中评, 差评, 加载更多, 千米距离, 搜索商品名称, 价格, 销量, 新品, 已全部加载, 缺少订单号, 退货件数, 退款类型, 退款原因, 备注说明, 填写备注信息,100字以内, 仅退款, 退货并退款, 申请成功, 请先选择退货商品, 搜索历史, 热门搜索, 请输入要搜索的商品, 正在搜索中, 中奖记录, 我的奖品, 活动规则, 昵称, 序号, 奖品名称, 获奖时间, 商家暂未上架活动哦, 获取抽奖信息, 奖品类型, 立即兑换, 兑换时间, 暂无中奖记录, 积分, 余额, 红包, 设置收货地址, 暂无门店信息, 剩余积分, 当前积分, 开具发票, 请填写, 配送运费, 会员商品优惠, 会员运费优惠, 合计, 使用微信快捷支付, 使用支付宝支付, 线下支付, 使用线下付款, 好友代付, 找微信好友支付, 立即使用, 请选择要购买的商品, 发票, 不使用, 订单创建成功, 请选择支付方式, 请选择收货地址, 请填写联系人或联系人电话, 暂无门店,请选择其他方式, 请输入, 请输入正确的, 请上传, 订单支付中, 请按以上退货信息将商品退回, 请联系管理员获取退货地址, 待核销, 核销信息, 营业时间, 每日, 使用说明, 可将二维码出示给店员扫描或提供数字核销码, 可将二维码出示给配送员进行核销, 查看位置, 拒绝原因, 联系客服, 商家备注, 收货人, 收货地址, 配送人姓名, 拨打, 虚拟发货, 已发货,请注意查收, 虚拟备注, 总代付, 申请开票, 查看发票, 取消订单, 立即付款, 批量退款, 查看拼团, 再次购买, 取消申请, 填写退货信息, 查看退货物流, 您确认放弃此次申请吗, 操作成功, 订单信息不存在, 为保障权益,请收到货确认无误后,再确认收货, 删除订单, 确定删除该订单, 删除成功, 确认取消该订单, 订单信息, 消费订单, 总消费, 预售, 线下付款,未支付, 未核销, 件商品,总金额, 查看详情, 暂无订单, 缺少订单号无法取消订单, 订单支付成功, 订单支付失败, 暂未支付, 失败原因, 重新购买, 重新支付, 赠送优惠券, 有效期, 缺少参数无法查看订单支付状态, 最多可上传3张, 请选择产品, 该产品没有更多库存了, 优品推荐, 暂无产品, 重新选择, 请选择数量, 砍价专区·BARGAINING, 立即砍价, 拼团活动, 人拼团成功., 人参团, 拼团价, 已过期, 关注, 推荐好货, 暂无商品, 限时秒杀, 抢, 广告位, 精彩内容, 砍价模块,暂无数据, 砍价活动, 呼朋唤友来砍价, 拼团模块,暂无数据, 享超值开团价, 优惠券,暂无数据, 领取今日好券, 可用, 领取, 客服, 商品列表,暂无数据, 搜索商品, 暂无图片,请上传图片, 首发新品,暂无数据, 多个优质商品最新上架, 暂无新闻,请上传新闻, 热度 TOP, 排行榜、暂无数据, 促销单品,暂无数据, 库存商品优惠促销活动, 精品推荐,暂无数据, 上百种商品分类任您选择, 秒杀模块,暂无数据, 场, 暂无数据,请设置, 暂无数据,请先添加分类, 暂无标题, 诚意推荐品质商品, 点击“立即关注”即可关注公众号, 立即关注, 添加到我的小程序, 微信首页下拉即可访问商城。, 点击, 服务协议与隐私政策, 请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。, 你可以阅读, 《服务协议与隐私政策》, 了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。, 我同意, 残忍拒绝, 下拉加载更多, 网络连接断开, 请检查情况:, 在设置中是否已开启网络权限, 当前是否处于弱网环境, 版本是否过低,升级试试吧, 重新连接, 加载中, 没有更多内容啦~, 100%正品保证, 所有商品精挑细选, 售后无忧, 管理, 购物数量, 请重新选择商品规格, 重选, 失效商品, 失效, 该商品已失效, 立即下单, 我也是有底线的, 产品库存不足,请选择其它, 添加购物车成功, 清除成功, 暂无兑换记录~, 大家都在换, 人兑换, 轻松赚积分, 购买商品, 购买商品可获得积分奖励, 去完成, 每日签到活动, 每日签到可获得积分奖励, 九宫格抽奖活动, 幸运抽奖可获得积分奖励, 我的积分, 每日签到, 积分抽奖, 兑换记录, 已兑换, 无法兑换, [默认], 可用积分, 快递费用, 免运费, 备注信息, 请添加备注(150字以内), 使用线上支付宝支付, 可用余额:, 选择线下付款方式, 正在加载…, 可用积分不足!, 订单状态, 支付积分, 备注, 配送核销码, 当前可用余额:, 正在加载, 缺少经纬度信息无法查看地图!, 商品兑换成功, 兑换方式, 积分兑换, 兑换积分, 取消兑换, 缺少参数无法查看订单兑换状态, 用户离开了, 兑换成功, 物流公司, 复制单号, 设为默认, 添加新地址, 导入微信地址, 取消选择, 您设置的默认地址不存在!, 设置成功, 您删除的地址不存在!, 获取头像, 请点击授权, 绑定手机号, 永久, 会员到期, 未开通会员, 查看会员权益, 立即续费, 立即激活, 会员可享多项权益, 订单中心, 我的服务, 隐私协议, 商家管理, 更新用户信息成功, 客服接待, 点击复制网址去浏览器中打开, 点击复制, 完成支付, 点击右上角, 选择 在浏览器 打开,去支付宝支付, 支付订单不存在,页面将在2秒后自动关闭!, 正在支付中, 支付订单不存在,页面将在2秒后自动关闭, 复制失败, 您目前的排名, 您目前暂无排名, 暂无排名~, 输入手机号, 输入验证码, 立即登录, 请填写手机号码, 请填写验证码, 请输入正确的验证码, 正在登录中, 登录成功, 获取授权, 获取微信的手机号授权, 获取微信手机号, 输入手机号码, 填写登录密码, 登录, 快速登录, 账号登录, 其他方式登录, 登录中, 获取用户信息失败, 请绑定手机号后,继续操作, 错误信息, 用户点击确定, 用户点击取消, 登录失败, 请勿重复点击, 请填写密码, 您输入的密码过于简单, 请填写账号, 请输入正确的账号, [图片], [语音], [商品], [订单], 亲、暂无消息记录哟!, 站内消息, 客服消息, 通知于, 获取详情中, 代付订单创建成功,发给好友帮你付款吧~, 帮我付一下这件商品了,谢谢~, 已经有人替我代付,谢谢啦~, 谢谢你帮我支付,么么哒~, 我已为你代付成功,商家正在努力发货中~, 好友代付成功,商家正在努力发货中~, 发送给微信好友, 查看订单详情, 订单已支付, 如果订单申请退款,已支付金额将原路退还给您, 代付成功, 谢谢你为我付款,还可以再去看看其他商品哟~, 该订单暂未支付, 人, 推广人数, 一级, 二级, 点击搜索会员名称, 团队排序, 金额排序, 订单排序, 单, 加入时间, 累积推广订单, 本月累计推广订单, 返佣, 暂未返佣, 返佣时间, 单号, 暂无推广订单~, 推广订单列表, 找回密码, 填写您的新密码, 加载失败, 点击授权登录您的客服工作台, 授权登录, 没有登录的code,请重新扫码, 员工人数, 邀请, 分佣比例, 修改分佣比例, 请输入百分比, 删除员工, 确定删除该员工?, 请输入比例, 分类, 我的, 姓名, 请输入联系电话, 所在地区, 详细地址, 设置为默认地址, 立即保存, 浙江省, 杭州市, 滨江区, 广东省, 广州市, 番禺区, 修改地址, 添加地址, 已取消!, 请填写联系电话, 保存中, 修改成功, 消费, 充值, 暂无账单的记录哦~, 点击【立即注销】即代表您已经同意《用户注销协议》, 立即注销, 是否确认注销, 注销后无法恢复,请谨慎操作, 注销, 持卡人, 请输入持卡人姓名, 卡号, 请填写卡号, 银行, 提现, 最低提现金额, 当前可提现金额, 冻结佣金, 说明: 每笔佣金的冻结期为, 天,到期后可提现, 账号, 请填写您的微信账号, 收款码, 请填写您的支付宝账号, 请选择银行, 银行卡, 微信, 支付宝, 请填写持卡人姓名, 请填写微信号, 请填写提现金额, 提现金额不能低于, 未使用, 已使用/过期, 通用劵, 一级分佣上浮, 二级分佣上浮, 快速升级技巧, 未完成, 已领完, 当前共, 取关, 请选择商品, 头像, 手机号码, 点击绑定手机号, ID号, 权限设置, 点击管理, 密码, 点击修改密码, 更换手机号码, 点击更换手机号码, 缓存大小, 当前版本, 地址管理, 发票管理, 账号注销, 注销后无法恢复, 累计积分, 累计消费, 冻结积分, 积分规则, 提示:积分数值的高低会直接影响您的会员等级, 提示:你有, 积分在, 过期,请尽快使用, 暂无积分记录哦~, 赚积分, 分值明细, 分值提升, 抬头类型, 增值税电子专用发票, 增值税电子普通发票, 需要开具发票的姓名, 需要开具发票的企业名称, 税号, 纳税人识别号, 手机号, 您的手机号, 邮箱, 您的联系邮箱, 开户银行, 您的开户银行, 银行账号, 您的银行账号, 企业地址, 您所在的企业地址, 企业电话, 您的企业电话, 设置为默认抬头, 保存, 发票类型选择, 纸质发票开出后将以邮寄形式交付, 请输入需要开具发票的姓名, 请输入您的手机号, 请正确输入您的手机号, 请输入您的联系邮箱, 请正确输入您的联系邮箱, 请输入需要开具发票的企业名称, 请输入纳税人识别号, 请正确输入纳税人识别号, 请输入您的开户银行, 请输入您的银行账号, 请正确输入您的银行账号, 请输入您所在的企业地址, 请输入您的企业电话, 发票记录, 抬头管理, 申请时间, 没有发票信息哟~, 个人普通发票, 企业普通发票, 企业专用发票, 添加新发票, 删除该发票?, 发票编号, 发票备注, 快递号, 总资产(元), 累计充值(元), 累计消费(元), 账单记录, 消费记录, 充值记录, 积分中心, 签到领积分, 赚积分抵现金, 领取优惠券, 满减享优惠, 最新拼团活动, 最新的优惠商品上架拼团, 立即参与, 当前限时秒杀, 最新商品秒杀进行中, 我的余额, 赠送, 其他, 注意事项, 冻结佣金为, 立即转入, 立即充值, 请输入金额, 转入余额, 转入余额后无法再次转出,确认是否转入余额, 转入成功, 正在支付, 充值金额必须为数字, 充值金额不能为0, 填写手机号码, 是否绑定账号, 绑定, 您已取消绑定!, 当前手机号, 设置新密码, 确认新密码, 手机号码不存在,无法发送验证码!, 请输入新密码, 两次输入的密码不一致!, 请输入验证码, 暂无退款订单~, 缺少订单号无法查看订单详情, 明细, 第七天, 第7天, 奖励, 已签到, 立即签到, 已累计签到, 据说连续签到第, 天可获得超额积分,一定要坚持签到哦~~~, 签到成功, 好的, 您今日已签到!, 暂无签到记录~, 保存海报, 长按保存图片, 分销海报, 小程序二维码需要发布正式版后才能获取到, 获取中, 暂无数据~, 提现记录, 提现总额, 佣金记录, 佣金明细, 分销等级, 昨日收益, 累积已提, 代理商申请, 立即提现, 推广名片, 推广人统计, 推广人订单, 推广订单, 事业部, 代理商, 推广人排行, 佣金排行, 员工列表, 您目前暂无推广权限, 商城购物可享, 折, 当前等级, 未达成, 今日成长值, 点, 我的成长值记录, 暂未解锁该等级, 点,需达到, 已解锁更高等级, 我的成长特权, 购物折扣, 专属徽章, 经验累积, 尊享客服, 签到, 可获得, 点经验, 每日签到可获得经验值,已签到, 去签到, 点经验/元, 购买商品可获得对应的经验值, 去购买, 点经验/人, 邀请好友注册商城可获得经验值, 去邀请, 积分数, 消费金额, 暂无经验记录, 账户登录, 微信登录, 手机号登录, 账户充值, 佣金转入, 周榜, 月榜, 周排行, 月排行, 语言切换, 点击前往, 查看全部, 查看订单, 无法获取图片信息, 长按或扫描查看, 点解锁, 确认修改, 保存修改, 退出登录, 付费会员, 地址信息, 我的推广, 砍价记录, 我的等级, 兑换, 申请中, 统计管理, 退款, 未发货, 当前为最新版本, 清除缓存, 确定清楚本地缓存数据吗, 缓存清理完成, 切换的账号不存在, 正在切换中, 确认退出登录, 我知道了, 系统错误, 请求失败, 邀请您加入, 图片上传中, 上传图片失败, 访问位置被拒绝, 系统定位已关闭, 需要定位权限, 订单核销, 当前可转入佣金为, 浏览记录, 签到奖励, 请输入内容, 单次限购, 永久限购, 《用户协议》, 《隐私协议》, 与, 请先阅读并同意协议, 绑定下级通知, 购买成功通知, 确认收货通知, 改价通知, 退款成功通知, 充值成功通知, 积分到账通知, 佣金到账通知, 砍价成功通知, 拼团成功通知, 拼团失败通知, 开团成功通知, 提现成功通知, 提现失败通知, 充值退款通知, 退款申请拒绝通知, 您有新的退款待处理, 您有新的订单待处理, 发货通知, 取消拼团通知, 参团成功通知, 你有个新的提现申请待处理, 你有个新的用户收货待处理, 提醒付款通知, 短信验证码, 到店自提, 快递配送, default */
  8533. /***/ (function(module) {
  8534. module.exports = JSON.parse("{\"选择地址\":\"アドレスを選択\",\"选择其它地址\":\"他のアドレスを選択\",\"已选商品\":\"選択した商品\",\"清空\":\"クリア\",\"¥\":\"¥\",\"已售罄\":\"売り切れ\",\"已下架\":\"テイクダウン\",\"删除\":\"削除\",\"商品券\":\"商品\",\"品类券\":\"カテゴリー\",\"通用券\":\"一般\",\"优惠券\":\"伝票\",\"满\":\"いっぱい\",\"元可用\":\"使用済み\",\"无门槛券\":\"しきい値なし\",\"领取后\":\"受信\",\"天内可用\":\"使用日数\",\"已领取\":\"受け取りました\",\"立即领取\":\"取得\",\"购物满\":\"使う\",\"减\":\"オフ\",\"不限时\":\"無制限の時間\",\"秒杀\":\"セクキル\",\"砍价\":\"掘り出し物\",\"拼团\":\"グループ\",\"已售\":\"売却\",\"立即购买\":\"今すぐ購入\",\"加入购物车\":\"カートに入れる\",\"选规格\":\"オプション\",\"跳过\":\"次へ\",\"立即体验\":\"今行く\",\"首页\":\"ホーム\",\"搜索\":\"検索\",\"购物车\":\"カート\",\"我的收藏\":\"集める\",\"个人中心\":\"私のもの\",\"券\":\"声\",\"正在加载中\":\"読み込んでいます...\",\"上拉加载更多\":\"Pull Up Loading More\",\"代付金额\":\"金額\",\"共\":\"の合計\",\"件商品\":\"アイテム\",\"订单包裹\":\"注文品\",\"申请退款中\":\"返金\",\"已退款\":\"返金\",\"已完成\":\"完了\",\"件退款中\":\"返金中のアイテム\",\"不支持配送\":\"店内のみ\",\"不支持自提\":\"配送のみ\",\"已评价\":\"評価済み\",\"评价\":\"レビュー\",\"申请退款\":\"返金\",\"查看物流\":\"物流\",\"确认收货\":\"注文を取る\",\"选择付款方式\":\"PayType を選択\",\"支付\":\"支払う\",\"去付款\":\"支払う\",\"请选择要支付的订单\":\"注文を選択\",\"余额不足\":\"不十分なバランス\",\"支付中\":\"支払い中...\",\"缺少支付参数\":\"支払いパラメータがありません\",\"取消支付\":\"支払いのキャンセル\",\"支付成功\":\"支払い成功\",\"支付失败\":\"支払いに失敗しました\",\"库存\":\"ストック\",\"限量\":\"リミット\",\"数量\":\"数量\",\"我要参团\":\"グループに参加\",\"确定\":\"わかりました\",\"热门推荐\":\"ホットなおすすめ\",\"最高返佣\":\"最高\",\"推广享佣金\":\"宣伝\",\"立即分享\":\"今すぐ共有\",\"发现新版本\":\"新しいバージョン\",\"立即升级\":\"アップグレード\",\"下载进度\":\"進捗状況\",\"店小二\":\"ウェイター\",\"暂无记录\":\"データなし\",\"正在下载海报,请稍后再试\":\"ポスターをダウンロードしています。後でもう一度お試しください\",\"海报二维码生成失败\":\"ポスター QR コードの生成に失敗しました\",\"倒计时\":\"カウントダウン\",\"天\":\"D\",\"时\":\"H\",\"分\":\"M\",\"秒\":\"S\",\"砍价成功\":\"交渉成功\",\"活动已结束\":\"活動停止\",\"已砍至\":\"にカット\",\"活动进行中\":\"処理中...\",\"取消活动\":\"キャンセル\",\"继续砍价\":\"続ける\",\"暂无砍价记录\":\"データなし\",\"人正在参与\":\"参加中\",\"最低\":\"最低\",\"参与砍价\":\"掘り出し物\",\"砍价列表\":\"バーゲンリスト\",\"人查看\":\"ビュー\",\"人分享\":\"シェア\",\"人参与\":\"関与\",\"邀请您帮忙砍价\":\"助けてください\",\"查看商品\":\"アイテムを見る\",\"当前\":\"現在\",\"已砍\":\"みじん切り\",\"还剩\":\"左\",\"立即参与砍价\":\"お買い得\",\"商品暂无库存\":\"在庫切れ\",\"邀请好友帮砍价\":\"友達を招待ヘルプ\",\"已有\":\"持っている\",\"位好友成功砍价\":\"友達成功\",\"帮好友砍一刀\":\"友達を助ける\",\"好友已砍价成功\":\"フレンドはすでに成功しています\",\"我也要参与\":\"参加します\",\"已成功帮助好友砍价\":\"友達の成功を助ける\",\"恭喜您砍价成功,快去支付\":\"交渉成功、支払いに行く\",\"立即支付\":\"今すぐ支払う\",\"抢更多商品\":\"もっとつかむ\",\"砍价帮\":\"交渉団\",\"砍掉\":\"カットオフ\",\"更多\":\"もっと\",\"关闭\":\"閉じる\",\"点击加载更多\":\"クリックしてさらに読み込む\",\"商品详情\":\"詳細\",\"砍价规则\":\"取引ルール\",\"您已砍掉\":\"切りました\",\"元,听说分享次数越多砍价成功的机会越大哦\":\", 共有する回数が多いほど、交渉が成功する可能性が高くなります\",\"成功帮砍\":\"カットに成功しました\",\"您也可以砍价低价拿哦,快去挑选心仪的商品吧\":\"あなたも値下げして安く手に入れて、お気に入りの商品を選びに行きましょう\",\"发送给朋友\":\"友達を送る\",\"微信好友\":\"微信友達\",\"微信朋友圈\":\"WeChat モーメント\",\"生成海报\":\"ポスターを生成\",\"砍价详情\":\"バーゲンの詳細\",\"分享成功\":\"共有成功\",\"分享失败\":\"共有に失敗しました\",\"该商品每人限购\":\"この商品はお一人様限定購入\",\"您的好友\":\"あなたの友達\",\"邀请您砍价\":\"カットを招待\",\"人团\":\"人\",\"去拼团\":\"行く\",\"拼团列表\":\"グループリスト\",\"类型\":\"タイプ\",\"累计销量\":\"販売合計\",\"限购\":\"リミット\",\"种规格可选\":\"仕様\",\"已拼\":\"スペル\",\"件\":\"ピース\",\"还差\":\"のみ\",\"人成团\":\"成功\",\"去拼单\":\"参加\",\"查看更多\":\"もっと\",\"收起\":\"片付ける\",\"拼团玩法\":\"グループプロセス\",\"开团/参团\":\"スタート\",\"邀请好友\":\"招待状\",\"满员发货\":\"配達\",\"用户评价\":\"レビュー\",\"好评率\":\"賞賛率\",\"产品介绍\":\"詳細\",\"单独购买\":\"単独で購入\",\"立即开团\":\"開始グループ\",\"请选择\":\"選択済み\",\"商品\":\"製品\",\"详情\":\"詳細\",\"缺少参数无法查看商品\":\"パラメーターがないため商品を表示できません\",\"参数错误\":\"パラメータエラー\",\"已选择\":\"選択済み\",\"保存成功\":\"保存された成功\",\"保存失败\":\"保存に失敗しました\",\"人拼\":\"人々の戦い\",\"剩余\":\"残り\",\"结束\":\"完了\",\"恭喜您拼团成功\":\"グルーピング成功おめでとうございます\",\"人,拼团失败\":\"人が去り、グループは失敗しました\",\"拼团中,还差\":\"グループには、まだあります\",\"人拼团成功\":\"グループへの参加に成功した人\",\"邀请好友参团\":\"友達をグループに招待\",\"再次开团\":\"再編成\",\"取消开团\":\"キャンセル\",\"查看订单信息\":\"注文を見る\",\"大家都在拼\":\"すべてのグループ\",\"更多拼团\":\"もっと\",\"邀请您参团\":\"招待して参加\",\"你不是该团的成员\":\"あなたはグループのメンバーではありません\",\"已抢\":\"奪われた\",\"抢购中\":\"すぐつかむ\",\"未开始\":\"開始されていません\",\"已结束\":\"オーバー\",\"暂无商品,去看点别的吧\":\"商品がありません\",\"即将开始\":\"開始されていません\",\"距秒杀结束仅剩\":\"残りは最後まで\",\"累计销售\":\"売却\",\"收藏\":\"集める\",\"保存到手机\":\"電話に保存\",\"长按图片可以保存到手机\":\"電話に保存するには長押し\",\"抢购详情页\":\"スナップ購入の詳細ページ\",\"二维码获取失败\":\"QR コードの取得に失敗しました\",\"请选择属性\":\"プロパティを選択してください\",\"提示:点击图片即可保存至手机相册\":\"ヒント: 写真をクリックして電話のアルバムに保存します\",\"拼团海报\":\"パズルポスター\",\"砍价海报\":\"値切りポスター\",\"海报生成中\":\"ポスターを作成中\",\"海报图片获取失败\":\"ポスター画像の取得に失敗しました\",\"海报\":\"ポスター\",\"已预定\":\"予約済み\",\"预售价\":\"先行販売\",\"立即预定\":\"今すぐ予約\",\"开售时间\":\"販売時間\",\"预售活动\":\"プレセールイベント\",\"起\":\"ライズ\",\"划线价\":\"ORP\",\"开通“超级会员”立省\":\"'スーパー メンバー' をオフにする\",\"元\":\"¥\",\"立即开通\":\"今すぐ有効化\",\"预售活动时间\":\"先行販売時間\",\"预售结束后\":\"以内に発送 \",\"天内发货\":\"先行販売終了後の日数\",\"活动\":\"アクティビティ\",\"参与秒杀\":\"セキル\",\"参与拼团\":\"グループ\",\"复制口令\":\"商品コードをコピー\",\"复制成功\":\"コピー成功\",\"推荐\":\"推奨\",\"缺少经纬度信息无法查看地图\":\"緯度と経度の情報が不足しているため、地図を表示できません\",\"产品库存不足,请选择其它属性\":\"製品在庫が不足しています。別の属性を選択してください\",\"立即退款\":\"即時返金\",\"一键改价\":\"価格変更\",\"订单备注\":\"注文メモ\",\"商品总价\":\"合計金額\",\"原始邮费\":\"古い郵便料金\",\"实际支付\":\"実際の価格\",\"退款金额\":\"返金価格\",\"请填写备注信息\":\"備考欄にご記入ください\",\"立即修改\":\"今すぐ編集\",\"确认退款\":\"返金の確認\",\"拒绝退款\":\"返金拒否\",\"取消\":\"キャンセル\",\"订单号\":\"オーダーID\",\"发货方式\":\"モード\",\"发货类型\":\"配送タイプ\",\"快递公司\":\"エクスプレス\",\"快递单号\":\"数\",\"顺丰请输入单号 :收件人或寄件人手机号后四位\":\"SF Express の追跡番号を入力してください: 受信者または送信者の携帯電話番号の下 4 桁\",\"例如:SF000000000000:3941\":\"例: SF000000000000:3941\",\"电子面单\":\"電子シート\",\"预览\":\"プレビュー\",\"寄件人姓名\":\"送信者名\",\"填写寄件人姓名\":\"送信者名を入力\",\"寄件人电话\":\"送信者の電話\",\"填写寄件人电话\":\"送信者の電話番号を入力\",\"寄件人地址\":\"送信者アドレス\",\"填写寄件人地址\":\"送信者アドレスを入力\",\"送货人\":\"配達員\",\"确认提交\":\"送信\",\"发货\":\"船\",\"送货\":\"与える\",\"无需物流\":\"必要ありません\",\"手动填写\":\"手入力\",\"电子面单打印\":\"電子シート\",\"填写快递单号\":\"宅配便番号を記入してください\",\"请选择电子面单\":\"電子レシートを選択してください\",\"待付款\":\"支払う\",\"待发货\":\"出荷する\",\"待收货\":\"受け取る\",\"待评价\":\"評価する\",\"售后/退款\":\"返金\",\"数据统计\":\"統計\",\"今日成交额\":\"本日販売\",\"昨日成交额\":\"昨日販売\",\"本月成交额\":\"販売月\",\"今日订单数\":\"今日の注文\",\"昨日订单数\":\"昨日の注文\",\"本月订单数\":\"月次注文\",\"详细数据\":\"詳細データ\",\"日期\":\"日付\",\"订单数\":\"注文数\",\"成交额\":\"ターンオーバー\",\"立即核销\":\"今すぐ書き留める\",\"查看\":\"ビュー\",\"确定要核销此订单吗\":\"本当にこの注文を取り消しますか\",\"确定核销\":\"検証\",\"请输入核销码\":\"確認コードを入力してください\",\"请输入正确的核销码\":\"正しい確認コードを入力してください\",\"查询中\":\"クエリ中\",\"订单\":\"注文\",\"订单未备注,点击添加备注信息\":\"注文にはコメントがありません。クリックしてコメントを追加してください\",\"复制\":\"コピー\",\"件商品,应支付\":\"アイテム、支払わなければならない\",\"邮费\":\"送料\",\"订单编号\":\"オーダーID\",\"下单时间\":\"注文時間\",\"支付状态\":\"支払い状況\",\"已支付\":\"有料\",\"未支付\":\"無給\",\"支付方式\":\"支払方法\",\"买家留言\":\"買い手 MSG\",\"支付金额\":\"支払額\",\"优惠券抵扣\":\"クーポン控除\",\"运费\":\"料金\",\"实付款\":\"実額\",\"配送方式\":\"配送方法\",\"快递\":\"速達\",\"送货人电话\":\"宅配便\",\"确认付款\":\"支払いの確認\",\"去发货\":\"出荷する\",\"改价成功\":\"価格が正常に変更されました\",\"改价失败\":\"価格変更に失敗しました\",\"请输入备注\":\"メモを入力してください\",\"退款中\":\"返金\",\"部分退款中\":\"一部返金\",\"件商品,实付款\":\"商品、入金済み\",\"同意退货\":\"返品に同意\",\"待用户发货\":\"出荷されていません\",\"请输入正确的金额\":\"正しい金額を入力してください\",\"今天\":\"今日\",\"昨天\":\"昨日\",\"最近7天\":\"過去 7 日間\",\"本月\":\"月\",\"自定义\":\"カスタマイズ\",\"营业额(元)\":\"ターンオーバー\",\"订单量(份)\":\"数量\",\"增长率\":\"上昇率\",\"增长\":\"増やす\",\"单位\":\"ユニット\",\"元.\":\"元\",\"分.\":\"セント\",\"固定\":\"固定\",\"指定范围\":\"スコープ\",\"提交时间\":\"提出時間\",\"原因\":\"理由\",\"暂无申请记录,快去申请吧!\":\"まだ申請記録がありません。今すぐ申請してください!\",\"没有更多啦\":\"これ以上\",\"待审核\":\"審査待ち\",\"审核通过\":\"審査通過\",\"审核未通过\":\"レビューに失敗しました\",\"编辑\":\"編集\",\"重新提交\":\"再提出\",\"会员优惠价\":\"VIP割引\",\"余额支付\":\"バランスペイ\",\"可用余额\":\"バランス\",\"微信支付\":\"WeChatペイ\",\"确认\":\"確認\",\"支付提醒\":\"支払い通知\",\"线下支付已关闭,请点击确认按钮返回主页\":\"オフライン決済は終了しました。確認ボタンをクリックしてホームページに戻ってください\",\"请输入支付金额\":\"お支払い金額を入力してください\",\"正在确认\":\"確認中\",\"进入商城\":\"モールに入る\",\"代理商名称\":\"代理店名\",\"请输入代理商名称\":\"代理店名を入力してください\",\"用户姓名\":\"あなたの名前\",\"请输入姓名\":\"お名前を入力してください\",\"联系电话\":\"あなたの電話\",\"请输入手机号\":\"電話番号を入力してください\",\"验证码\":\"OTP コード\",\"填写验证码\":\"OTP コードを入力\",\"邀请码\":\"招待コード\",\"请输入代理商邀请码\":\"招待コードを入力\",\"请上传营业执照及行业相关资质证明图片\":\"営業許可証や業界関係資格証明書の写真をアップロードしてください\",\"图片最多可上传10张,图片格式支持JPG、PNG、JPEG\":\"最大 10 枚の画像をアップロードでき、画像形式は JPG、PNG、JPEG をサポートしています\",\"上传图片\":\"アップロード\",\"已阅读并同意\":\"読んで同意する\",\"代理商协议\":\"代理店契約\",\"提交申请\":\"申し込みを送信\",\"代理商入驻协议\":\"エージェント契約\",\"恭喜,您的资料提交成功!\":\"おめでとうございます。正常に送信されました!\",\"返回首页\":\"家に帰る\",\"恭喜,您的资料通过审核!\":\"おめでとう、審査通過!\",\"您的申请未通过!\":\"申請は却下されました!\",\"重新申请\":\"再申請\",\"获取验证码\":\"OTP コードを取得\",\"请输入正确的手机号码\":\"正しい電話番号を入力してください\",\"重新获取\":\"再取得\",\"请上传营业执照\":\"営業許可証をアップロードしてください\",\"请勾选并同意入驻协议\":\"職業協定にチェックを入れて同意してください\",\"专题栏\":\"トピック列\",\"暂无数据\":\"データなし\",\"请输入卡号\":\"カード番号を入力してください\",\"请输入卡密\":\"パスワードを入力してください\",\"确认激活\":\"確認\",\"SVIP会员尊享权\":\"SVIP会員特権\",\"正在激活\":\"起動中\",\"已使用\":\"中古\",\"永久SVIP会员\":\"永久SVIPメンバー\",\"SVIP会员\":\"SVIP メンバー\",\"到期\":\"成熟度\",\"您与\":\"あなたと\",\"商城的第\":\"モール\",\"天.\":\" 日.\",\"已累积为您节省\":\"累積貯蓄\",\"开通即享会员权益\":\"会員特典をお楽しみください\",\"续费会员\":\"更新\",\"开通会员\":\"SVIPに参加\",\"有效期至\":\"まで有効\",\"试用\":\"やってみる\",\"购买即视为同意\":\"同意として購入\",\"会员用户协议\":\"SVIP 契約\",\"点击兑换卡密\":\"クリックしてカードを引き換える\",\"会员优惠券\":\"SVIPクーポン\",\"SVIP商品推荐\":\"SVIP 推奨\",\"商城价\":\"モール価格\",\"激活会员卡\":\"カードを有効にする\",\"支付宝支付\":\"アリペイ\",\"成功开启0元试用\":\"0 元トライアルの開始に成功しました\",\"确认绑定\":\"バインディングを確認\",\"绑定成功\":\"バインド成功\",\"商城客服已离线\":\"カスタマー サービスはオフラインです\",\"我要反馈\":\"フィードバックが欲しい\",\"请填写内容\":\"内容を記入してください\",\"提交\":\"送信\",\"精品推荐\":\"推奨\",\"热门榜单\":\"人気\",\"首发新品\":\"新しい\",\"促销单品\":\"プロモーション\",\"预告\":\"お知らせ\",\"回放\":\"再生\",\"进行中\":\"処理\",\"发送客服\":\"送信\",\"客服连接中\":\"カスタマー サービスが接続中\",\"连接失败\":\"接続に失敗しました\",\"提示\":\"ヒント\",\"客服已下线,是否需要反馈?\":\"カスタマー サービスがオフラインです。フィードバックが必要ですか?\",\"和好友一起分享\":\"友達と共有\",\"积分抵扣\":\"減点\",\"已开票\":\"請求済み\",\"未开票\":\"請求されていません\",\"发票信息\":\"請求書情報\",\"发票抬头\":\"請求書\",\"发票抬头类型\":\"請求書ヘッダーの種類\",\"个人\":\"あたり\",\"企业\":\"COM\",\"发票类型\":\"請求書の種類\",\"电子普通发票\":\"電子一般請求書\",\"电子专用发票\":\"電子特別請求書\",\"企业税号\":\"事業税\",\"联系信息\":\"連絡先情報\",\"真实姓名\":\"本名\",\"联系邮箱\":\"電子メール\",\"抬头选择\":\"頭の選択\",\"默认\":\"デフォルト\",\"普通\":\"普通\",\"专用\":\"専用\",\"您还没有添加发票信息哟\":\"請求書情報が追加されていません\",\"添加新的抬头\":\"新しいヘッダーを追加\",\"不开发票\":\"請求書がありません\",\"抽奖\":\"宝くじ\",\"全选\":\"すべて選択\",\"属性\":\"属性\",\"请填写具体地址\":\"具体的な住所を記入してください\",\"省\":\"都道府県\",\"市\":\"都市\",\"区\":\"エリア\",\"添加成功\":\"正常に追加\",\"您已拒绝导入微信地址权限\":\"WeChat アドレスをインポートする権限が拒否されました\",\"是否进入权限管理,调整授权?\":\"権限管理に入り、権限を調整しますか?\",\"已取消\":\"キャンセル\",\"添加失败\":\"追加に失敗しました\",\"请填写收货人姓名\":\"荷受人の名前を記入してください\",\"请选择所在地区\":\"地域を選択してください\",\"请填写详细地址\":\"詳しい住所を記入してください\",\"星\":\"スター\",\"商品满足你的期待么?说说你的想法,分享给想买的他们吧\":\"製品はあなたの期待を満たしていますか?ご意見をお聞かせください。購入希望者と共有してください。\",\"立即评价\":\"今すぐ評価\",\"商品质量\":\"製品の品質\",\"服务态度\":\"サービス態度\",\"缺少参数\":\"パラメータがありません\",\"请填写你对宝贝的心得\":\"製品についての意見を記入してください\",\"正在发布评论\":\"コメントの投稿\",\"感谢您的评价\":\"レビューありがとうございます\",\"评价完成\":\"レビューが完了しました\",\"恭喜您\":\"おめでとう\",\"获得\":\"取得\",\"机会\":\"チャンス\",\"领取成功\":\"正常に受信しました\",\"评分\":\"スコア\",\"全部\":\"すべて\",\"好评\":\"賛美\",\"中评\":\"平均\",\"差评\":\"悪い\",\"加载更多\":\"さらに読み込んでいます\",\"千米距离\":\"キロメートル先\",\"搜索商品名称\":\"検索商品\",\"价格\":\"価格\",\"销量\":\"売却\",\"新品\":\"新しい\",\"已全部加载\":\"すべてロード済み\",\"缺少订单号\":\"オーダー ID がありません\",\"退货件数\":\"返金された番号\",\"退款类型\":\"返金タイプ\",\"退款原因\":\"返金理由\",\"备注说明\":\"コメント\",\"填写备注信息,100字以内\":\"100 語以内のコメント\",\"仅退款\":\"返金のみ\",\"退货并退款\":\"返品と返金\",\"申请成功\":\"申し込み成功\",\"请先选择退货商品\":\"最初に返品アイテムを選択してください\",\"搜索历史\":\"検索履歴\",\"热门搜索\":\"ホットサーチ\",\"请输入要搜索的商品\":\"検索したい商品を入力してください\",\"正在搜索中\":\"検索中\",\"中奖记录\":\"優勝記録\",\"我的奖品\":\"私の賞品\",\"活动规则\":\"アクティビティ ルール\",\"昵称\":\"ニックネーム\",\"序号\":\"シリアル\",\"奖品名称\":\"賞品名\",\"获奖时间\":\"勝利時間\",\"商家暂未上架活动哦\":\"マーチャントはまだイベントをリストしていません\",\"获取抽奖信息\":\"懸賞情報を取得\",\"奖品类型\":\"賞品の種類\",\"立即兑换\":\"今すぐ交換\",\"兑换时间\":\"交換時間\",\"暂无中奖记录\":\"優勝記録なし\",\"积分\":\"ポイント\",\"余额\":\"バランス\",\"红包\":\"現金\",\"设置收货地址\":\"配送先住所の設定\",\"暂无门店信息\":\"ストア情報がありません\",\"剩余积分\":\"残りポイント\",\"当前积分\":\"現在のポイント\",\"开具发票\":\"請求書\",\"请填写\":\"記入してください\",\"配送运费\":\"送料\",\"会员商品优惠\":\"製品オファー\",\"会员运费优惠\":\"配送オファー\",\"合计\":\"合計\",\"使用微信快捷支付\":\"WeChatクイック決済\",\"使用支付宝支付\":\"アリペイで支払う\",\"线下支付\":\"オフライン決済\",\"使用线下付款\":\"オフライン決済を使用\",\"好友代付\":\"友達が支払う\",\"找微信好友支付\":\"お金を払う友達を探す\",\"立即使用\":\"使用\",\"请选择要购买的商品\":\"購入するアイテムを選択してください\",\"发票\":\"請求書\",\"不使用\":\"使わない\",\"订单创建成功\":\"注文が正常に作成されました\",\"请选择支付方式\":\"支払い方法を選択してください\",\"请选择收货地址\":\"配送先住所を選択してください\",\"请填写联系人或联系人电话\":\"担当者または連絡先電話番号を入力してください\",\"暂无门店,请选择其他方式\":\"現在ストアがありません。別の方法を選択してください\",\"请输入\":\"入力してください\",\"请输入正确的\":\"正しいものを入力してください\",\"请上传\":\"アップロードしてください\",\"订单支付中\":\"支払中\",\"请按以上退货信息将商品退回\":\"情報とともにアイテムを返品してください\",\"请联系管理员获取退货地址\":\"返送先住所については管理者にお問い合わせください\",\"待核销\":\"取り消された\",\"核销信息\":\"償却情報\",\"营业时间\":\"営業時間\",\"每日\":\"毎日\",\"使用说明\":\"使用説明書\",\"可将二维码出示给店员扫描或提供数字核销码\":\"QR コードを店員に提示して、デジタル検証コードをスキャンまたは提供することができます\",\"可将二维码出示给配送员进行核销\":\"確認のためにQRコードを配送業者に提示できます\",\"查看位置\":\"場所を見る\",\"拒绝原因\":\"拒否理由\",\"联系客服\":\"連絡先\",\"商家备注\":\"マーチャントノート\",\"收货人\":\"レシーバー\",\"收货地址\":\"配送先住所\",\"配送人姓名\":\"船名\",\"拨打\":\"コール\",\"虚拟发货\":\"仮想船\",\"已发货,请注意查收\":\"出荷されました。確認してください\",\"虚拟备注\":\"仮想メモ\",\"总代付\":\"合計金額\",\"申请开票\":\"請求書を適用\",\"查看发票\":\"請求書を表示\",\"取消订单\":\"キャンセル\",\"立即付款\":\"支払う\",\"批量退款\":\"一括返金\",\"查看拼团\":\"ビューグループ\",\"再次购买\":\"再購入\",\"取消申请\":\"適用をキャンセル\",\"填写退货信息\":\"リターン情報\",\"查看退货物流\":\"物流\",\"您确认放弃此次申请吗\":\"このアプリケーションを放棄してもよろしいですか\",\"操作成功\":\"操作が成功しました\",\"订单信息不存在\":\"注文情報が存在しません\",\"为保障权益,请收到货确认无误后,再确认收货\":\"権利と利益を保護するために、商品が正しいことを確認した後、商品の受け取りを確認してください.\",\"删除订单\":\"注文を削除\",\"确定删除该订单\":\"削除注文を確認\",\"删除成功\":\"正常に削除されました\",\"确认取消该订单\":\"注文のキャンセルを確認\",\"订单信息\":\"注文情報\",\"消费订单\":\"注文\",\"总消费\":\"合計金額\",\"预售\":\"プレセール\",\"线下付款,未支付\":\"オフライン未払い\",\"未核销\":\"取り消されていません\",\"件商品,总金额\":\"アイテム、合計金額\",\"查看详情\":\"ビュー\",\"暂无订单\":\"まだ注文がありません\",\"缺少订单号无法取消订单\":\"注文番号のない注文はキャンセルできません\",\"订单支付成功\":\"注文は正常に支払われました\",\"订单支付失败\":\"注文の支払いに失敗しました\",\"暂未支付\":\"未払い\",\"失败原因\":\"失敗した理由\",\"重新购买\":\"買戻し\",\"重新支付\":\"再度支払う\",\"赠送优惠券\":\"クーポンをプレゼント\",\"有效期\":\"妥当性\",\"缺少参数无法查看订单支付状态\":\"パラメーターが不足しているため、注文の支払い状況を表示できません\",\"最多可上传3张\":\"最大 3 回のアップロード\",\"请选择产品\":\"製品を選択してください\",\"该产品没有更多库存了\":\"この商品の在庫はありません\",\"优品推荐\":\"最高のおすすめ\",\"暂无产品\":\"商品はまだありません\",\"重新选择\":\"再選択\",\"请选择数量\":\"数量を選択してください\",\"砍价专区·BARGAINING\":\"交渉\",\"立即砍价\":\"今すぐカット\",\"拼团活动\":\"グループ\",\"人拼团成功.\":\"人々は成功した\",\"人参团\":\"高麗人参群\",\"拼团价\":\"グループ価格\",\"已过期\":\"期限切れ\",\"关注\":\"フォロー\",\"推荐好货\":\"おすすめ商品\",\"暂无商品\":\"商品はまだありません\",\"限时秒杀\":\"時間制限スパイク\",\"抢\":\"グラブ\",\"广告位\":\"ADVスペース\",\"精彩内容\":\"ハイライト\",\"砍价模块,暂无数据\":\"お買い得モジュール、まだデータがありません\",\"砍价活动\":\"掘り出し物\",\"呼朋唤友来砍价\":\"友達にバーゲンを呼ぶ\",\"拼团模块,暂无数据\":\"グループ モジュール、データがまだありません\",\"享超值开团价\":\"お得な団体料金をお楽しみください\",\"优惠券,暂无数据\":\"クーポン、一時的にデータがありません\",\"领取今日好券\":\"今日のお得なクーポンをゲット\",\"可用\":\"使用済み\",\"领取\":\"クレーム\",\"客服\":\"サービス\",\"商品列表,暂无数据\":\"一時的にデータがありません\",\"搜索商品\":\"商品検索\",\"暂无图片,请上传图片\":\"画像はありません。アップロードしてください\",\"首发新品,暂无数据\":\"最初の新製品、まだデータがありません\",\"多个优质商品最新上架\":\"最新の高品質商品が棚に並んでいます\",\"暂无新闻,请上传新闻\":\"ニュースがありません。ニュースをアップロードしてください\",\"热度 TOP\":\"ヒートトップ\",\"排行榜、暂无数据\":\"リーダーボード、一時的にデータがありません\",\"促销单品,暂无数据\":\"プロモーション アイテム、一時的にデータがありません\",\"库存商品优惠促销活动\":\"在庫商品のプロモーション活動\",\"精品推荐,暂无数据\":\"ブティックの推奨事項、データはまだありません\",\"上百种商品分类任您选择\":\"何百もの製品カテゴリから選択できます\",\"秒杀模块,暂无数据\":\"Seckill モジュール、一時的にデータがありません\",\"场\":\"サイト\",\"暂无数据,请设置\":\"データがありません。設定してください\",\"暂无数据,请先添加分类\":\"データがありません。最初に分類を追加してください\",\"暂无标题\":\"一時的にタイトルなし\",\"诚意推荐品质商品\":\"誠意を持って高品質の商品をお勧めします\",\"点击“立即关注”即可关注公众号\":\"「今すぐフォロー」をクリックして公式アカウントをフォロー\",\"立即关注\":\"今すぐフォロー\",\"添加到我的小程序, 微信首页下拉即可访问商城。\":\"アプレットに追加すると、wechat ホームページをプルダウンしてモールにアクセスできます\",\"点击\":\"クリック\",\"服务协议与隐私政策\":\"サービス契約とプライバシー ポリシー\",\"请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。\":\"サービス契約とプライバシー ポリシーの条項を注意深く読み、完全に理解してください。これには、インスタント メッセージング、コンテンツ共有、およびその他のサービスを提供するために、デバイスを収集する必要があります。情報、操作ログ、その他の個人情報。個人情報を表示、変更、削除し、[設定] で承認を管理できます。\",\"你可以阅读\":\"読めます\",\"《服务协议与隐私政策》\":\"《サービス規約とプライバシーポリシー》\",\"了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。\":\"もっと詳しく。同意する場合は、[同意する] をクリックして、サービスの受け入れを開始してください。\",\"我同意\":\"同意します\",\"残忍拒绝\":\"残酷な拒絶\",\"下拉加载更多\":\"さらにプルダウン ロード\",\"网络连接断开\":\"ネットワーク接続が切断されました\",\"请检查情况:\":\"状態を確認してください:\",\"在设置中是否已开启网络权限\":\"設定でネットワーク許可が有効になっているかどうか\",\"当前是否处于弱网环境\":\"現在ネットワーク環境が弱い\",\"版本是否过低,升级试试吧\":\"バージョンが低すぎる場合は、アップグレードしてみてください\",\"重新连接\":\"再接続\",\"加载中\":\"ロード中\",\"没有更多内容啦~\":\"これ以上コンテンツはありません~\",\"100%正品保证\":\"100%本物\",\"所有商品精挑细选\":\"選り好みする\",\"售后无忧\":\"売却後は安心\",\"管理\":\"チューブ\",\"购物数量\":\"ショッピング数量\",\"请重新选择商品规格\":\"製品仕様を再選択してください\",\"重选\":\"再選択\",\"失效商品\":\"無効な商品\",\"失效\":\"失敗\",\"该商品已失效\":\"商品の有効期限が切れています\",\"立即下单\":\"今すぐ注文\",\"我也是有底线的\":\"私にも結論があります\",\"产品库存不足,请选择其它\":\"商品在庫が不足しています。その他を選択してください\",\"添加购物车成功\":\"ショッピング カートが正常に追加されました\",\"清除成功\":\"クリーンアップが成功しました\",\"暂无兑换记录~\":\"交換記録なし~\",\"大家都在换\":\"誰もが変化している\",\"人兑换\":\"人交換\",\"轻松赚积分\":\"簡単にポイントを獲得\",\"购买商品\":\"商品の購入\",\"购买商品可获得积分奖励\":\"商品購入のポイント報酬\",\"去完成\":\"行く\",\"每日签到活动\":\"毎日のチェックイン活動\",\"每日签到可获得积分奖励\":\"毎日のチェックインでポイント報酬を獲得できます\",\"九宫格抽奖活动\":\"九公宝くじ\",\"幸运抽奖可获得积分奖励\":\"くじ引きでポイントがもらえる\",\"我的积分\":\"私のポイント\",\"每日签到\":\"デイリーサインイン\",\"积分抽奖\":\"ポイントくじ\",\"兑换记录\":\"交換記録\",\"已兑换\":\"償還済み\",\"无法兑换\":\"交換できません\",\"[默认]\":\"[デフォルト]\",\"可用积分\":\"利用可能なポイント\",\"快递费用\":\"速達料金\",\"免运费\":\"送料無料\",\"备注信息\":\"備考\",\"请添加备注(150字以内)\":\"コメントを追加してください (150 ワード以内)\",\"使用线上支付宝支付\":\"オンライン アリペイで支払う\",\"可用余额:\":\"残高:\",\"选择线下付款方式\":\"オフラインの支払い方法を選択\",\"正在加载…\":\"読み込み中…\",\"可用积分不足!\":\"ポイントが不足しています!\",\"订单状态\":\"注文状況\",\"支付积分\":\"ポイントを支払う\",\"备注\":\"備考\",\"配送核销码\":\"配送確認コード\",\"当前可用余额:\":\"現在の利用可能残高:\",\"正在加载\":\"ロード中\",\"缺少经纬度信息无法查看地图!\":\"地図は緯度経度情報がないと見れません!\",\"商品兑换成功\":\"正常に引き換えられました\",\"兑换方式\":\"交換方法\",\"积分兑换\":\"ポイント交換\",\"兑换积分\":\"ポイントを交換\",\"取消兑换\":\"交換をキャンセル\",\"缺少参数无法查看订单兑换状态\":\"注文交換ステータスはパラメータなしでは表示できません\",\"用户离开了\":\"ユーザーが退出しました\",\"兑换成功\":\"正常に引き換えられました\",\"物流公司\":\"物流会社\",\"复制单号\":\"文書番号をコピー\",\"设为默认\":\"デフォルトとして設定\",\"添加新地址\":\"新しいアドレスを追加\",\"导入微信地址\":\"wechat アドレスをインポート\",\"取消选择\":\"選択解除\",\"您设置的默认地址不存在!\":\"設定したデフォルトのアドレスは存在しません!\",\"设置成功\":\"設定成功\",\"您删除的地址不存在!\":\"あなたが削除したアドレスは存在しません!\",\"获取头像\":\"アバターを取得\",\"请点击授权\":\"承認をクリックしてください\",\"绑定手机号\":\"携帯電話番号をバインド\",\"永久\":\"永久\",\"会员到期\":\"メンバーシップの有効期限\",\"未开通会员\":\"開いていないメンバー\",\"查看会员权益\":\"会員特典を見る\",\"立即续费\":\"更新\",\"立即激活\":\"アクティベーション\",\"会员可享多项权益\":\"複数の特典をお楽しみください\",\"订单中心\":\"私の注文\",\"我的服务\":\"私のサービス\",\"隐私协议\":\"プライバシー\",\"商家管理\":\"経営管理\",\"更新用户信息成功\":\"ユーザー情報が正常に更新されました\",\"客服接待\":\"レセプション\",\"点击复制网址去浏览器中打开\":\"[URL をコピー] をクリックしてブラウザで開く\",\"点击复制\":\"コピーをクリック\",\"完成支付\":\"支払い完了\",\"点击右上角\":\"右上隅をクリック\",\"选择 在浏览器 打开,去支付宝支付\":\"選択してブラウザで開き、Alipay で支払う\",\"支付订单不存在,页面将在2秒后自动关闭!\":\"支払い注文は存在しません。ページは 2 秒後に自動的に閉じます! \",\"正在支付中\":\"支払中\",\"支付订单不存在,页面将在2秒后自动关闭\":\"支払い注文は存在しません。ページは 2 秒後に自動的に閉じます\",\"复制失败\":\"複製に失敗しました\",\"您目前的排名\":\"現在のランキング\",\"您目前暂无排名\":\"現在のランキング\",\"暂无排名~\":\"ランキングなし~\",\"输入手机号\":\"携帯電話番号を入力\",\"输入验证码\":\"確認コードを入力してください\",\"立即登录\":\"今すぐログイン\",\"请填写手机号码\":\"携帯電話番号を入力してください\",\"请填写验证码\":\"認証コードを入力してください\",\"请输入正确的验证码\":\"正しい確認コードを入力してください\",\"正在登录中\":\"ログイン中\",\"登录成功\":\"ログイン成功\",\"获取授权\":\"認証取得中\",\"获取微信的手机号授权\":\"wechat 携帯電話番号認証を取得\",\"获取微信手机号\":\"wechat モバイル番号を取得\",\"输入手机号码\":\"携帯電話番号を入力してください\",\"填写登录密码\":\"ログインパスワードを入力\",\"登录\":\"ログイン\",\"快速登录\":\"クイックログイン\",\"账号登录\":\"アカウントのログイン\",\"其他方式登录\":\"他の方法でログイン\",\"登录中\":\"ログイン中\",\"获取用户信息失败\":\"ユーザー情報の取得に失敗しました\",\"请绑定手机号后,继续操作\":\"携帯電話番号をバインドして操作を続行してください\",\"错误信息\":\"エラー情報\",\"用户点击确定\":\"ユーザーが [OK] をクリックしました\",\"用户点击取消\":\"ユーザーがキャンセルをクリックしました\",\"登录失败\":\"ログイン失敗\",\"请勿重复点击\":\"繰り返しクリックしないでください\",\"请填写密码\":\"パスワードを入力してください\",\"您输入的密码过于简单\":\"入力したパスワードは単純すぎます\",\"请填写账号\":\"口座番号を入力してください\",\"请输入正确的账号\":\"正しい口座番号を入力してください\",\"[图片]\":\"[画像]\",\"[语音]\":\"[声]\",\"[商品]\":\"[製品]\",\"[订单]\":\"[注文]\",\"亲、暂无消息记录哟!\":\"親愛なる、メッセージレコードはまだありません!\",\"站内消息\":\"駅メッセージ内\",\"客服消息\":\"カスタマー サービス メッセージ\",\"通知于\":\"に通知\",\"获取详情中\":\"詳細を取得\",\"代付订单创建成功,发给好友帮你付款吧~\":\"支払い注文が正常に作成されました。お友達に送って支払いを手伝ってもらいましょう ~\",\"帮我付一下这件商品了,谢谢~\":\"この商品の支払いを手伝ってください。ありがとうございます ~\",\"已经有人替我代付,谢谢啦~\":\"誰かが私にお金を払ってくれました、ありがとう~\",\"谢谢你帮我支付,么么哒~\":\"支払いを手伝ってくれてありがとう、モーダ ~\",\"我已为你代付成功,商家正在努力发货中~\":\"私はあなたの支払いに成功しました。マーチャントは配達しようとしています ~\",\"好友代付成功,商家正在努力发货中~\":\"友達への支払いが成功し、マーチャントは配送を試みています ~\",\"发送给微信好友\":\"微信の友達に送る\",\"查看订单详情\":\"注文の詳細を見る\",\"订单已支付\":\"支払い済みの注文\",\"如果订单申请退款,已支付金额将原路退还给您\":\"注文が返金を申請する場合、支払われた金額は同じ方法で返金されます\",\"代付成功\":\"支払いが成功しました\",\"谢谢你为我付款,还可以再去看看其他商品哟~\":\"お金を払ってくれてありがとう。他の商品を見に行くことができます ~\",\"该订单暂未支付\":\"注文はまだ支払われていません\",\"人\":\"人\",\"推广人数\":\"プロモーターの数\",\"一级\":\"レベル 1\",\"二级\":\"レベル 2\",\"点击搜索会员名称\":\"クリックしてメンバー名を検索\",\"团队排序\":\"チームの並べ替え\",\"金额排序\":\"金額ソート\",\"订单排序\":\"順序の並べ替え\",\"单\":\"注文\",\"加入时间\":\"参加時間\",\"累积推广订单\":\"注文数\",\"本月累计推广订单\":\"月次注文\",\"返佣\":\"リベート\",\"暂未返佣\":\"リベートしない\",\"返佣时间\":\"リベート時間\",\"单号\":\"注文番号\",\"暂无推广订单~\":\"プロモーションオーダーなし ~\",\"推广订单列表\":\"プロモーション注文リスト\",\"找回密码\":\"パスワードを取得\",\"填写您的新密码\":\"新しいパスワードを入力してください\",\"加载失败\":\"読み込みエラー\",\"点击授权登录您的客服工作台\":\"承認をクリックして、カスタマー サービス ワークベンチにログインしてください\",\"授权登录\":\"承認されたログイン\",\"没有登录的code,请重新扫码\":\"ログインなしのコードです。もう一度コードをスキャンしてください\",\"员工人数\":\"従業員数\",\"邀请\":\"招待状\",\"分佣比例\":\"スケール\",\"修改分佣比例\":\"比率を変更\",\"请输入百分比\":\"パーセンテージを入力してください\",\"删除员工\":\"従業員を削除\",\"确定删除该员工?\":\"この従業員を削除してもよろしいですか?\",\"请输入比例\":\"スケールを入力してください\",\"分类\":\"クラス\",\"我的\":\"私のもの\",\"姓名\":\"名前\",\"请输入联系电话\":\"連絡先番号を入力してください\",\"所在地区\":\"場所\",\"详细地址\":\"アドレス\",\"设置为默认地址\":\"既定のアドレスとして設定\",\"立即保存\":\"今すぐ保存\",\"浙江省\":\"浙江\",\"杭州市\":\"杭州\",\"滨江区\":\"浜江区\",\"广东省\":\"広東省\",\"广州市\":\"広州\",\"番禺区\":\"番禺\",\"修改地址\":\"住所変更\",\"添加地址\":\"アドレスを追加\",\"已取消!\":\"キャンセルしました!\",\"请填写联系电话\":\"連絡先番号を入力してください\",\"保存中\":\"保存中\",\"修改成功\":\"変更が成功しました\",\"消费\":\"消費\",\"充值\":\"リチャージ\",\"暂无账单的记录哦~\":\"一時的に請求の記録がありません~\",\"点击【立即注销】即代表您已经同意《用户注销协议》\":\"[即時ログアウト] をクリックすると、ユーザー ログアウト同意書に同意したことになります\",\"立即注销\":\"今すぐログオフ\",\"是否确认注销\":\"ログアウトの確認\",\"注销后无法恢复,请谨慎操作\":\"ログアウト後は復旧できません。ご注意ください\",\"注销\":\"ログアウト\",\"持卡人\":\"カード所有者\",\"请输入持卡人姓名\":\"カード所有者名を入力\",\"卡号\":\"カード番号\",\"请填写卡号\":\"カード番号を入力してください\",\"银行\":\"銀行\",\"提现\":\"撤退\",\"最低提现金额\":\"最低出金額\",\"当前可提现金额\":\"現在の引き出し可能額\",\"冻结佣金\":\"冷凍委員会\",\"说明: 每笔佣金的冻结期为\":\"注: 各コミッションの凍結期間は\",\"天,到期后可提现\":\"日数、有効期限後に引き出し可能\",\"账号\":\"アカウント\",\"请填写您的微信账号\":\"微信アカウントを記入\",\"收款码\":\"コレクションコード\",\"请填写您的支付宝账号\":\"Alipay アカウント番号を入力してください\",\"请选择银行\":\"銀行を選択してください\",\"银行卡\":\"銀行カード\",\"微信\":\"微信\",\"支付宝\":\"アリペイ\",\"请填写持卡人姓名\":\"カード所有者の名前を記入してください\",\"请填写微信号\":\"微信に記入してください\",\"请填写提现金额\":\"引き出し金額を入力してください\",\"提现金额不能低于\":\"出金額はこれより少なくすることはできません\",\"未使用\":\"未使用\",\"已使用/过期\":\"使用済み/期限切れ\",\"通用劵\":\"一般証券\",\"一级分佣上浮\":\"1 レベルアップ\",\"二级分佣上浮\":\"セカンダリ フローティング\",\"快速升级技巧\":\"クイック アップグレード スキル\",\"未完成\":\"不完全\",\"已领完\":\"収集\",\"当前共\":\"現在の合計\",\"取关\":\"オフ\",\"请选择商品\":\"製品を選択してください\",\"头像\":\"アバター\",\"手机号码\":\"携帯電話番号\",\"点击绑定手机号\":\"クリックしてバインド\",\"ID号\":\"ID番号\",\"权限设置\":\"パーミッション\",\"点击管理\":\"管理\",\"密码\":\"パスワード\",\"点击修改密码\":\"変更をクリック\",\"更换手机号码\":\"変更番号\",\"点击更换手机号码\":\"クリックして\",\"缓存大小\":\"キャッシュサイズ\",\"当前版本\":\"現在のバージョン\",\"地址管理\":\"アドレス\",\"发票管理\":\"請求書\",\"账号注销\":\"キャンセル\",\"注销后无法恢复\":\"回復できません\",\"累计积分\":\"累積ポイント\",\"累计消费\":\"消費\",\"冻结积分\":\"凝固点\",\"积分规则\":\"積分規則\",\"提示:积分数值的高低会直接影响您的会员等级\":\"ヒント: 会員レベルの値\",\"提示:你有\":\"ヒント: あります\",\"积分在\":\"インテグラルイン\",\"过期,请尽快使用\":\"期限切れです。できるだけ早く使用してください\",\"暂无积分记录哦~\":\"スコア記録が一時的にありません~\",\"赚积分\":\"ポイントを獲得\",\"分值明细\":\"スコアの詳細\",\"分值提升\":\"スコアアップ\",\"抬头类型\":\"ヘッダーの種類\",\"增值税电子专用发票\":\"VAT 電子特別請求書\",\"增值税电子普通发票\":\"電子普通付加価値税請求書\",\"需要开具发票的姓名\":\"請求する名前\",\"需要开具发票的企业名称\":\"請求書を発行する企業名\",\"税号\":\"税番号\",\"纳税人识别号\":\"納税者番号\",\"手机号\":\"携帯電話番号\",\"您的手机号\":\"あなたの携帯電話番号\",\"邮箱\":\"メールボックス\",\"您的联系邮箱\":\"あなたの連絡先メールボックス\",\"开户银行\":\"預金銀行\",\"您的开户银行\":\"あなたの預金銀行\",\"银行账号\":\"銀行口座番号\",\"您的银行账号\":\"銀行口座番号\",\"企业地址\":\"企業アドレス\",\"您所在的企业地址\":\"会社の住所\",\"企业电话\":\"エンタープライズ電話\",\"您的企业电话\":\"会社の電話\",\"设置为默认抬头\":\"既定のヘッダーとして設定\",\"保存\":\"保存\",\"发票类型选择\":\"請求書タイプの選択\",\"纸质发票开出后将以邮寄形式交付\":\"紙の請求書が発行された後、郵送されます\",\"请输入需要开具发票的姓名\":\"請求先の名前を入力してください\",\"请输入您的手机号\":\"携帯電話番号を入力してください\",\"请正确输入您的手机号\":\"携帯電話番号を正しく入力してください\",\"请输入您的联系邮箱\":\"連絡先メールアドレスを入力してください\",\"请正确输入您的联系邮箱\":\"連絡先メールアドレスを正しく入力してください\",\"请输入需要开具发票的企业名称\":\"請求書を発行する企業名を入力してください\",\"请输入纳税人识别号\":\"納税者番号を入力してください\",\"请正确输入纳税人识别号\":\"納税者番号を正しく入力してください\",\"请输入您的开户银行\":\"預金銀行を入力してください\",\"请输入您的银行账号\":\"銀行口座番号を入力してください\",\"请正确输入您的银行账号\":\"銀行口座番号を正しく入力してください\",\"请输入您所在的企业地址\":\"会社の住所を入力してください\",\"请输入您的企业电话\":\"会社の電話番号を入力してください\",\"发票记录\":\"請求記録\",\"抬头管理\":\"ヘッダー管理\",\"申请时间\":\"適用時間\",\"没有发票信息哟~\":\"請求書情報がありません ~\",\"个人普通发票\":\"個人の通常の請求書\",\"企业普通发票\":\"企業の通常の請求書\",\"企业专用发票\":\"エンタープライズ特別請求書\",\"添加新发票\":\"新しい請求書を追加\",\"删除该发票?\":\"この請求書を削除しますか?\",\"发票编号\":\"請求書番号\",\"发票备注\":\"請求書備考\",\"快递号\":\"特急番号\",\"总资产(元)\":\"総資産 (¥)\",\"累计充值(元)\":\"Co リチャージ (¥)\",\"累计消费(元)\":\"Co 花 (¥)\",\"账单记录\":\"請求記録\",\"消费记录\":\"記録\",\"充值记录\":\"リチャージ\",\"积分中心\":\"整数\",\"签到领积分\":\"サインイン\",\"赚积分抵现金\":\"ポイントを獲得\",\"领取优惠券\":\"クーポン\",\"满减享优惠\":\"全額割引\",\"最新拼团活动\":\"最新のグループ活動\",\"最新的优惠商品上架拼团\":\"棚にある最新の優待商品\",\"立即参与\":\"参加\",\"当前限时秒杀\":\"現在の制限時間 2 番目のキル\",\"最新商品秒杀进行中\":\"進行中の最新の商品スパイク\",\"我的余额\":\"バランス\",\"赠送\":\"ギフト\",\"其他\":\"その他\",\"注意事项\":\"注意事項\",\"冻结佣金为\":\"Frozen Commission is\",\"立即转入\":\"即時転送\",\"立即充值\":\"すぐに充電\",\"请输入金额\":\"金額を入力してください\",\"转入余额\":\"バランスの転送\",\"转入余额后无法再次转出,确认是否转入余额\":\"残高で送金した後、再度送金することはできません。残高で送金するかどうかを確認してください\",\"转入成功\":\"転送に成功しました\",\"正在支付\":\"支払中\",\"充值金额必须为数字\":\"リチャージ額は数値でなければなりません\",\"充值金额不能为0\":\"充電量を 0 にすることはできません\",\"填写手机号码\":\"携帯電話番号を入力\",\"是否绑定账号\":\"バインド アカウント\",\"绑定\":\"バインディング\",\"您已取消绑定!\":\"バインドを解除しました!\",\"当前手机号\":\"現在の携帯電話番号\",\"设置新密码\":\"新しいパスワードを設定\",\"确认新密码\":\"新しいパスワードを確認\",\"手机号码不存在,无法发送验证码!\":\"携帯電話番号が存在しないため、確認コードを送信できません!\",\"请输入新密码\":\"新しいパスワードを入力してください\",\"两次输入的密码不一致!\":\"入力した 2 つのパスワードは矛盾しています!\",\"请输入验证码\":\"確認コードを入力してください\",\"暂无退款订单~\":\"返金注文なし ~\",\"缺少订单号无法查看订单详情\":\"注文番号が欠落しており、注文の詳細を表示できません\",\"明细\":\"デタス\",\"第七天\":\"7 日目\",\"第7天\":\"7日目\",\"奖励\":\"報酬\",\"已签到\":\"チェックイン\",\"立即签到\":\"今すぐサインイン\",\"已累计签到\":\"累積チェックイン\",\"据说连续签到第\":\"2 回連続のサインイン\",\"天可获得超额积分,一定要坚持签到哦~~~\":\"毎日超過ポイントを獲得できる場合は、サインインを主張する必要があります~~~\",\"签到成功\":\"チェックイン成功\",\"好的\":\"わかりました\",\"您今日已签到!\":\"今日サインインしました! \",\"暂无签到记录~\":\"記録にサインがありません~\",\"保存海报\":\"ポスターを保存\",\"长按保存图片\":\"画像を保存するには長押し\",\"分销海报\":\"配布ポスター\",\"小程序二维码需要发布正式版后才能获取到\":\"アプレットの QR コードは、正式版の公開後にのみ取得できます\",\"获取中\":\"取得\",\"暂无数据~\":\"一時的にデータがありません ~\",\"提现记录\":\"撤退\",\"提现总额\":\"合計引き出し\",\"佣金记录\":\"手数料記録\",\"佣金明细\":\"手数料の詳細\",\"分销等级\":\"配布レベル\",\"昨日收益\":\"昨日の収益\",\"累积已提\":\"累計撤回\",\"代理商申请\":\"エージェント アプリケーション\",\"立即提现\":\"撤退\",\"推广名片\":\"名刺\",\"推广人统计\":\"プロモーター統計\",\"推广人订单\":\"プロモーターオーダー\",\"推广订单\":\"プロモーション注文\",\"事业部\":\"事業部\",\"代理商\":\"エージェント\",\"推广人排行\":\"プロモーターランキング\",\"佣金排行\":\"手数料ランキング\",\"员工列表\":\"従業員リスト\",\"您目前暂无推广权限\":\"あなたには現在昇格権限がありません\",\"商城购物可享\":\"モールで買い物\",\"折\":\"割引\",\"当前等级\":\"現在のレベル\",\"未达成\":\"到達していません\",\"今日成长值\":\"今日の成長値\",\"点\":\"ポイント\",\"我的成长值记录\":\"私の成長値記録\",\"暂未解锁该等级\":\"このレベルはまだアンロックされていません\",\"点,需达到\":\"ポイント、到達する必要があります\",\"已解锁更高等级\":\"より高いレベルのロックを解除しました\",\"我的成长特权\":\"私の成長特権\",\"购物折扣\":\"割引\",\"专属徽章\":\"限定バッジ\",\"经验累积\":\"経験の蓄積\",\"尊享客服\":\"専用サービス\",\"签到\":\"チェックイン\",\"可获得\":\"利用可能\",\"点经验\":\"ポイント経験\",\"每日签到可获得经验值,已签到\":\"デイリーサインインで経験値がもらえる、サインイン\",\"去签到\":\"チェックイン\",\"点经验/元\":\"経験値/¥\",\"购买商品可获得对应的经验值\":\"商品を購入することで、対応する経験値を得ることができます\",\"去购买\":\"買いに行く\",\"点经验/人\":\"ポイント経験/人\",\"邀请好友注册商城可获得经验值\":\"友人を招待してショッピングモールに登録し、経験値を獲得\",\"去邀请\":\"招待\",\"积分数\":\"製品分数\",\"消费金额\":\"消費量\",\"暂无经验记录\":\"実績なし\",\"账户登录\":\"アカウントのログイン\",\"微信登录\":\"微信ログイン\",\"手机号登录\":\"モバイルログイン\",\"账户充值\":\"リチャージ\",\"佣金转入\":\"コミッション\",\"周榜\":\"週間リスト\",\"月榜\":\"月間リスト\",\"周排行\":\"週間ランキング\",\"月排行\":\"月間ランキング\",\"语言切换\":\"言語\",\"点击前往\":\"クリックして移動\",\"查看全部\":\"すべて表示\",\"查看订单\":\"注文を見る\",\"无法获取图片信息\":\"画像情報を取得できません\",\"长按或扫描查看\":\"長押しまたはスキャンビュー\",\"点解锁\":\"ポイントロック解除\",\"确认修改\":\"確認\",\"保存修改\":\"保存\",\"退出登录\":\"ログアウト\",\"付费会员\":\"SVIP\",\"地址信息\":\"アドレス\",\"我的推广\":\"エクステンション\",\"砍价记录\":\"掘り出し物\",\"我的等级\":\"私のレベル\",\"兑换\":\"GO\",\"申请中\":\"アプリケーション\",\"统计管理\":\"統計\",\"退款\":\"払い戻し\",\"未发货\":\"発行されていません\",\"当前为最新版本\":\"現在最新バージョン\",\"清除缓存\":\"キャッシュをクリア\",\"确定清楚本地缓存数据吗\":\"ローカル キャッシュ データについて明確にしていますか\",\"缓存清理完成\":\"キャッシュのクリーニングが完了しました\",\"切换的账号不存在\":\"切り替えたアカウントは存在しません\",\"正在切换中\":\"スイッチング\",\"确认退出登录\":\"ログアウトを確認\",\"我知道了\":\"なるほど\",\"系统错误\":\"システム エラー\",\"请求失败\":\"リクエストに失敗しました\",\"邀请您加入\":\"あなたを参加に招待します\",\"图片上传中\":\"アップロード\",\"上传图片失败\":\"画像のアップロードに失敗しました\",\"访问位置被拒绝\":\"アクセス場所が拒否されました\",\"系统定位已关闭\":\"システムのポジショニングがオフになっています\",\"需要定位权限\":\"位置情報の許可が必要\",\"订单核销\":\"帳消し\",\"当前可转入佣金为\":\"現在の譲渡可能手数料は\",\"浏览记录\":\"閲覧履歴\",\"签到奖励\":\"チェックイン特典\",\"请输入内容\":\"コンテンツを入力してください\",\"单次限购\":\"一回限り購入\",\"永久限购\":\"永久購入制限\",\"《用户协议》\":\"《ユーザー・プロトコル》\",\"《隐私协议》\":\"《プライバシープロトコル》\",\"与\":\"と\",\"请先阅读并同意协议\":\"まずプロトコルを読んで同意してください\",\"绑定下级通知\":\"下位通知のバインド\",\"购买成功通知\":\"購入成功通知\",\"确认收货通知\":\"出荷確認通知\",\"改价通知\":\"価格変更通知\",\"退款成功通知\":\"返金成功通知\",\"充值成功通知\":\"チャージ成功通知\",\"积分到账通知\":\"ポイント入金通知\",\"佣金到账通知\":\"コミッション入金通知\",\"砍价成功通知\":\"値切り成功通知\",\"拼团成功通知\":\"コラージュ成功通知\",\"拼团失败通知\":\"コラージュ失敗通知\",\"开团成功通知\":\"開団成功通知\",\"提现成功通知\":\"現金化成功通知\",\"提现失败通知\":\"現金化失敗通知\",\"充值退款通知\":\"チャージ返金通知\",\"退款申请拒绝通知\":\"返金申請却下通知\",\"您有新的退款待处理\":\"新規返金保留中\",\"您有新的订单待处理\":\"新しい注文を処理しています\",\"发货通知\":\"出荷通知\",\"取消拼团通知\":\"コラージュ解除通知\",\"参团成功通知\":\"参加成功通知\",\"你有个新的提现申请待处理\":\"新しい現金引き出し申請があります\",\"你有个新的用户收货待处理\":\"新しいユーザーが出荷保留中\",\"提醒付款通知\":\"支払通知のリマインダ\",\"短信验证码\":\"ショートメッセージ検証コード\",\"到店自提\":\"じこちゅうしゅつ\",\"快递配送\":\"速達配送\"}");
  8535. /***/ }),
  8536. /***/ 250:
  8537. /*!****************************************************!*\
  8538. !*** D:/data/zhonghong/saber-weixin/libs/order.js ***!
  8539. \****************************************************/
  8540. /*! no static exports found */
  8541. /***/ (function(module, exports, __webpack_require__) {
  8542. "use strict";
  8543. /* WEBPACK VAR INJECTION */(function(uni) {Object.defineProperty(exports, "__esModule", { value: true });exports.goShopDetail = goShopDetail;exports.goPage = goPage; // +----------------------------------------------------------------------
  8544. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  8545. // +----------------------------------------------------------------------
  8546. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  8547. // +----------------------------------------------------------------------
  8548. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8549. // +----------------------------------------------------------------------
  8550. // | Author: CRMEB Team <admin@crmeb.com>
  8551. // +----------------------------------------------------------------------
  8552. var app = getApp();
  8553. function goShopDetail(item, uid) {
  8554. return new Promise(function (resolve) {
  8555. if (item.activity && item.activity.type === "1") {
  8556. uni.navigateTo({
  8557. url: "/pages/activity/goods_seckill_details/index?id=".concat(item.activity.id, "&time=").concat(item.activity.time, "&status=1") });
  8558. } else if (item.activity && item.activity.type === "2") {
  8559. uni.navigateTo({
  8560. url: "/pages/activity/goods_bargain_details/index?id=".concat(item.activity.id, "&bargain=").concat(uid) });
  8561. } else if (item.activity && item.activity.type === "3") {
  8562. uni.navigateTo({
  8563. url: "/pages/activity/goods_combination_details/index?id=".concat(item.activity.id) });
  8564. } else {
  8565. resolve(item);
  8566. }
  8567. });
  8568. }
  8569. function goPage() {
  8570. return new Promise(function (resolve) {
  8571. if (app.globalData.isIframe == false) {
  8572. resolve(true);
  8573. } else {
  8574. return false;
  8575. }
  8576. });
  8577. }
  8578. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["default"]))
  8579. /***/ }),
  8580. /***/ 26:
  8581. /*!******************************************************!*\
  8582. !*** D:/data/zhonghong/saber-weixin/lang/it_it.json ***!
  8583. \******************************************************/
  8584. /*! exports provided: 选择地址, 选择其它地址, 已选商品, 清空, ¥, 已售罄, 已下架, 删除, 商品券, 品类券, 通用券, 优惠券, 满, 元可用, 无门槛券, 领取后, 天内可用, 已领取, 立即领取, 购物满, 减, 不限时, 秒杀, 砍价, 拼团, 已售, 立即购买, 加入购物车, 选规格, 跳过, 立即体验, 首页, 搜索, 购物车, 我的收藏, 个人中心, 券, 正在加载中, 上拉加载更多, 代付金额, 共, 件商品, 订单包裹, 申请退款中, 已退款, 已完成, 件退款中, 不支持配送, 不支持自提, 已评价, 评价, 申请退款, 查看物流, 确认收货, 选择付款方式, 支付, 去付款, 请选择要支付的订单, 余额不足, 支付中, 缺少支付参数, 取消支付, 支付成功, 支付失败, 库存, 限量, 数量, 我要参团, 确定, 热门推荐, 最高返佣, 推广享佣金, 立即分享, 发现新版本, 立即升级, 下载进度, 店小二, 暂无记录, 正在下载海报,请稍后再试, 海报二维码生成失败, 倒计时, 天, 时, 分, 秒, 砍价成功, 活动已结束, 已砍至, 活动进行中, 取消活动, 继续砍价, 暂无砍价记录, 人正在参与, 最低, 参与砍价, 砍价列表, 人查看, 人分享, 人参与, 邀请您帮忙砍价, 查看商品, 当前, 已砍, 还剩, 立即参与砍价, 商品暂无库存, 邀请好友帮砍价, 已有, 位好友成功砍价, 帮好友砍一刀, 好友已砍价成功, 我也要参与, 已成功帮助好友砍价, 恭喜您砍价成功,快去支付, 立即支付, 抢更多商品, 砍价帮, 砍掉, 更多, 关闭, 点击加载更多, 商品详情, 砍价规则, 您已砍掉, 元,听说分享次数越多砍价成功的机会越大哦, 成功帮砍, 您也可以砍价低价拿哦,快去挑选心仪的商品吧, 发送给朋友, 微信好友, 微信朋友圈, 生成海报, 砍价详情, 分享成功, 分享失败, 该商品每人限购, 您的好友, 邀请您砍价, 人团, 去拼团, 拼团列表, 类型, 累计销量, 限购, 种规格可选, 已拼, 件, 还差, 人成团, 去拼单, 查看更多, 收起, 拼团玩法, 开团/参团, 邀请好友, 满员发货, 用户评价, 好评率, 产品介绍, 单独购买, 立即开团, 请选择, 商品, 详情, 缺少参数无法查看商品, 参数错误, 已选择, 保存成功, 保存失败, 人拼, 剩余, 结束, 恭喜您拼团成功, 人,拼团失败, 拼团中,还差, 人拼团成功, 邀请好友参团, 再次开团, 取消开团, 查看订单信息, 大家都在拼, 更多拼团, 邀请您参团, 你不是该团的成员, 已抢, 抢购中, 未开始, 已结束, 暂无商品,去看点别的吧, 即将开始, 距秒杀结束仅剩, 累计销售, 收藏, 保存到手机, 长按图片可以保存到手机, 抢购详情页, 二维码获取失败, 请选择属性, 提示:点击图片即可保存至手机相册, 拼团海报, 砍价海报, 海报生成中, 海报图片获取失败, 海报, 已预定, 预售价, 立即预定, 开售时间, 预售活动, 起, 划线价, 开通“超级会员”立省, 元, 立即开通, 预售活动时间, 预售结束后, 天内发货, 活动, 参与秒杀, 参与拼团, 复制口令, 复制成功, 推荐, 缺少经纬度信息无法查看地图, 产品库存不足,请选择其它属性, 立即退款, 一键改价, 订单备注, 商品总价, 原始邮费, 实际支付, 退款金额, 请填写备注信息, 立即修改, 确认退款, 拒绝退款, 取消, 订单号, 发货方式, 发货类型, 快递公司, 快递单号, 顺丰请输入单号 :收件人或寄件人手机号后四位, 例如:SF000000000000:3941, 电子面单, 预览, 寄件人姓名, 填写寄件人姓名, 寄件人电话, 填写寄件人电话, 寄件人地址, 填写寄件人地址, 送货人, 确认提交, 发货, 送货, 无需物流, 手动填写, 电子面单打印, 填写快递单号, 请选择电子面单, 待付款, 待发货, 待收货, 待评价, 售后/退款, 数据统计, 今日成交额, 昨日成交额, 本月成交额, 今日订单数, 昨日订单数, 本月订单数, 详细数据, 日期, 订单数, 成交额, 立即核销, 查看, 确定要核销此订单吗, 确定核销, 请输入核销码, 请输入正确的核销码, 查询中, 订单, 订单未备注,点击添加备注信息, 复制, 件商品,应支付, 邮费, 订单编号, 下单时间, 支付状态, 已支付, 未支付, 支付方式, 买家留言, 支付金额, 优惠券抵扣, 运费, 实付款, 配送方式, 快递, 送货人电话, 确认付款, 去发货, 改价成功, 改价失败, 请输入备注, 退款中, 部分退款中, 件商品,实付款, 同意退货, 待用户发货, 请输入正确的金额, 今天, 昨天, 最近7天, 本月, 自定义, 营业额(元), 订单量(份), 增长率, 增长, 单位, 元., 分., 固定, 指定范围, 提交时间, 原因, 暂无申请记录,快去申请吧!, 没有更多啦, 待审核, 审核通过, 审核未通过, 编辑, 重新提交, 会员优惠价, 余额支付, 可用余额, 微信支付, 确认, 支付提醒, 线下支付已关闭,请点击确认按钮返回主页, 请输入支付金额, 正在确认, 进入商城, 代理商名称, 请输入代理商名称, 用户姓名, 请输入姓名, 联系电话, 请输入手机号, 验证码, 填写验证码, 邀请码, 请输入代理商邀请码, 请上传营业执照及行业相关资质证明图片, 图片最多可上传10张,图片格式支持JPG、PNG、JPEG, 上传图片, 已阅读并同意, 代理商协议, 提交申请, 代理商入驻协议, 恭喜,您的资料提交成功!, 返回首页, 恭喜,您的资料通过审核!, 您的申请未通过!, 重新申请, 获取验证码, 请输入正确的手机号码, 重新获取, 请上传营业执照, 请勾选并同意入驻协议, 专题栏, 暂无数据, 请输入卡号, 请输入卡密, 确认激活, SVIP会员尊享权, 正在激活, 已使用, 永久SVIP会员, SVIP会员, 到期, 您与, 商城的第, 天., 已累积为您节省, 开通即享会员权益, 续费会员, 开通会员, 有效期至, 试用, 购买即视为同意, 会员用户协议, 点击兑换卡密, 会员优惠券, SVIP商品推荐, 商城价, 激活会员卡, 支付宝支付, 成功开启0元试用, 确认绑定, 绑定成功, 商城客服已离线, 我要反馈, 请填写内容, 提交, 精品推荐, 热门榜单, 首发新品, 促销单品, 预告, 回放, 进行中, 发送客服, 客服连接中, 连接失败, 提示, 客服已下线,是否需要反馈?, 和好友一起分享, 积分抵扣, 已开票, 未开票, 发票信息, 发票抬头, 发票抬头类型, 个人, 企业, 发票类型, 电子普通发票, 电子专用发票, 企业税号, 联系信息, 真实姓名, 联系邮箱, 抬头选择, 默认, 普通, 专用, 您还没有添加发票信息哟, 添加新的抬头, 不开发票, 抽奖, 全选, 属性, 请填写具体地址, 省, 市, 区, 添加成功, 您已拒绝导入微信地址权限, 是否进入权限管理,调整授权?, 已取消, 添加失败, 请填写收货人姓名, 请选择所在地区, 请填写详细地址, 星, 商品满足你的期待么?说说你的想法,分享给想买的他们吧, 立即评价, 商品质量, 服务态度, 缺少参数, 请填写你对宝贝的心得, 正在发布评论, 感谢您的评价, 评价完成, 恭喜您, 获得, 机会, 领取成功, 评分, 全部, 好评, 中评, 差评, 加载更多, 千米距离, 搜索商品名称, 价格, 销量, 新品, 已全部加载, 缺少订单号, 退货件数, 退款类型, 退款原因, 备注说明, 填写备注信息,100字以内, 仅退款, 退货并退款, 申请成功, 请先选择退货商品, 搜索历史, 热门搜索, 请输入要搜索的商品, 正在搜索中, 中奖记录, 我的奖品, 活动规则, 昵称, 序号, 奖品名称, 获奖时间, 商家暂未上架活动哦, 获取抽奖信息, 奖品类型, 立即兑换, 兑换时间, 暂无中奖记录, 积分, 余额, 红包, 设置收货地址, 暂无门店信息, 剩余积分, 当前积分, 开具发票, 请填写, 配送运费, 会员商品优惠, 会员运费优惠, 合计, 使用微信快捷支付, 使用支付宝支付, 线下支付, 使用线下付款, 好友代付, 找微信好友支付, 立即使用, 请选择要购买的商品, 发票, 不使用, 订单创建成功, 请选择支付方式, 请选择收货地址, 请填写联系人或联系人电话, 暂无门店,请选择其他方式, 请输入, 请输入正确的, 请上传, 订单支付中, 请按以上退货信息将商品退回, 请联系管理员获取退货地址, 待核销, 核销信息, 营业时间, 每日, 使用说明, 可将二维码出示给店员扫描或提供数字核销码, 可将二维码出示给配送员进行核销, 查看位置, 拒绝原因, 联系客服, 商家备注, 收货人, 收货地址, 配送人姓名, 拨打, 虚拟发货, 已发货,请注意查收, 虚拟备注, 总代付, 申请开票, 查看发票, 取消订单, 立即付款, 批量退款, 查看拼团, 再次购买, 取消申请, 填写退货信息, 查看退货物流, 您确认放弃此次申请吗, 操作成功, 订单信息不存在, 为保障权益,请收到货确认无误后,再确认收货, 删除订单, 确定删除该订单, 删除成功, 确认取消该订单, 订单信息, 消费订单, 总消费, 预售, 线下付款,未支付, 未核销, 件商品,总金额, 查看详情, 暂无订单, 缺少订单号无法取消订单, 订单支付成功, 订单支付失败, 暂未支付, 失败原因, 重新购买, 重新支付, 赠送优惠券, 有效期, 缺少参数无法查看订单支付状态, 最多可上传3张, 请选择产品, 该产品没有更多库存了, 优品推荐, 暂无产品, 重新选择, 请选择数量, 砍价专区·BARGAINING, 立即砍价, 拼团活动, 人拼团成功., 人参团, 拼团价, 已过期, 关注, 推荐好货, 暂无商品, 限时秒杀, 抢, 广告位, 精彩内容, 砍价模块,暂无数据, 砍价活动, 呼朋唤友来砍价, 拼团模块,暂无数据, 享超值开团价, 优惠券,暂无数据, 领取今日好券, 可用, 领取, 客服, 商品列表,暂无数据, 搜索商品, 暂无图片,请上传图片, 首发新品,暂无数据, 多个优质商品最新上架, 暂无新闻,请上传新闻, 热度 TOP, 排行榜、暂无数据, 促销单品,暂无数据, 库存商品优惠促销活动, 精品推荐,暂无数据, 上百种商品分类任您选择, 秒杀模块,暂无数据, 场, 暂无数据,请设置, 暂无数据,请先添加分类, 暂无标题, 诚意推荐品质商品, 点击“立即关注”即可关注公众号, 立即关注, 添加到我的小程序, 微信首页下拉即可访问商城。, 点击, 服务协议与隐私政策, 请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。, 你可以阅读, 《服务协议与隐私政策》, 了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。, 我同意, 残忍拒绝, 下拉加载更多, 网络连接断开, 请检查情况:, 在设置中是否已开启网络权限, 当前是否处于弱网环境, 版本是否过低,升级试试吧, 重新连接, 加载中, 没有更多内容啦~, 100%正品保证, 所有商品精挑细选, 售后无忧, 管理, 购物数量, 请重新选择商品规格, 重选, 失效商品, 失效, 该商品已失效, 立即下单, 我也是有底线的, 产品库存不足,请选择其它, 添加购物车成功, 清除成功, 暂无兑换记录~, 大家都在换, 人兑换, 轻松赚积分, 购买商品, 购买商品可获得积分奖励, 去完成, 每日签到活动, 每日签到可获得积分奖励, 九宫格抽奖活动, 幸运抽奖可获得积分奖励, 我的积分, 每日签到, 积分抽奖, 兑换记录, 已兑换, 无法兑换, [默认], 可用积分, 快递费用, 免运费, 备注信息, 请添加备注(150字以内), 使用线上支付宝支付, 可用余额:, 选择线下付款方式, 正在加载…, 可用积分不足!, 订单状态, 支付积分, 备注, 配送核销码, 当前可用余额:, 正在加载, 缺少经纬度信息无法查看地图!, 商品兑换成功, 兑换方式, 积分兑换, 兑换积分, 取消兑换, 缺少参数无法查看订单兑换状态, 用户离开了, 兑换成功, 物流公司, 复制单号, 设为默认, 添加新地址, 导入微信地址, 取消选择, 您设置的默认地址不存在!, 设置成功, 您删除的地址不存在!, 获取头像, 请点击授权, 绑定手机号, 永久, 会员到期, 未开通会员, 查看会员权益, 立即续费, 立即激活, 会员可享多项权益, 订单中心, 我的服务, 隐私协议, 商家管理, 更新用户信息成功, 客服接待, 点击复制网址去浏览器中打开, 点击复制, 完成支付, 点击右上角, 选择 在浏览器 打开,去支付宝支付, 支付订单不存在,页面将在2秒后自动关闭!, 正在支付中, 支付订单不存在,页面将在2秒后自动关闭, 复制失败, 您目前的排名, 您目前暂无排名, 暂无排名~, 输入手机号, 输入验证码, 立即登录, 请填写手机号码, 请填写验证码, 请输入正确的验证码, 正在登录中, 登录成功, 获取授权, 获取微信的手机号授权, 获取微信手机号, 输入手机号码, 填写登录密码, 登录, 快速登录, 账号登录, 其他方式登录, 登录中, 获取用户信息失败, 请绑定手机号后,继续操作, 错误信息, 用户点击确定, 用户点击取消, 登录失败, 请勿重复点击, 请填写密码, 您输入的密码过于简单, 请填写账号, 请输入正确的账号, [图片], [语音], [商品], [订单], 亲、暂无消息记录哟!, 站内消息, 客服消息, 通知于, 获取详情中, 代付订单创建成功,发给好友帮你付款吧~, 帮我付一下这件商品了,谢谢~, 已经有人替我代付,谢谢啦~, 谢谢你帮我支付,么么哒~, 我已为你代付成功,商家正在努力发货中~, 好友代付成功,商家正在努力发货中~, 发送给微信好友, 查看订单详情, 订单已支付, 如果订单申请退款,已支付金额将原路退还给您, 代付成功, 谢谢你为我付款,还可以再去看看其他商品哟~, 该订单暂未支付, 人, 推广人数, 一级, 二级, 点击搜索会员名称, 团队排序, 金额排序, 订单排序, 单, 加入时间, 累积推广订单, 本月累计推广订单, 返佣, 暂未返佣, 返佣时间, 单号, 暂无推广订单~, 推广订单列表, 找回密码, 填写您的新密码, 加载失败, 点击授权登录您的客服工作台, 授权登录, 没有登录的code,请重新扫码, 员工人数, 邀请, 分佣比例, 修改分佣比例, 请输入百分比, 删除员工, 确定删除该员工?, 请输入比例, 分类, 我的, 姓名, 请输入联系电话, 所在地区, 详细地址, 设置为默认地址, 立即保存, 浙江省, 杭州市, 滨江区, 广东省, 广州市, 番禺区, 修改地址, 添加地址, 已取消!, 请填写联系电话, 保存中, 修改成功, 消费, 充值, 暂无账单的记录哦~, 点击【立即注销】即代表您已经同意《用户注销协议》, 立即注销, 是否确认注销, 注销后无法恢复,请谨慎操作, 注销, 持卡人, 请输入持卡人姓名, 卡号, 请填写卡号, 银行, 提现, 最低提现金额, 当前可提现金额, 冻结佣金, 说明: 每笔佣金的冻结期为, 天,到期后可提现, 账号, 请填写您的微信账号, 收款码, 请填写您的支付宝账号, 请选择银行, 银行卡, 微信, 支付宝, 请填写持卡人姓名, 请填写微信号, 请填写提现金额, 提现金额不能低于, 未使用, 已使用/过期, 通用劵, 一级分佣上浮, 二级分佣上浮, 快速升级技巧, 未完成, 已领完, 当前共, 取关, 请选择商品, 头像, 手机号码, 点击绑定手机号, ID号, 权限设置, 点击管理, 密码, 点击修改密码, 更换手机号码, 点击更换手机号码, 缓存大小, 当前版本, 地址管理, 发票管理, 账号注销, 注销后无法恢复, 累计积分, 累计消费, 冻结积分, 积分规则, 提示:积分数值的高低会直接影响您的会员等级, 提示:你有, 积分在, 过期,请尽快使用, 暂无积分记录哦~, 赚积分, 分值明细, 分值提升, 抬头类型, 增值税电子专用发票, 增值税电子普通发票, 需要开具发票的姓名, 需要开具发票的企业名称, 税号, 纳税人识别号, 手机号, 您的手机号, 邮箱, 您的联系邮箱, 开户银行, 您的开户银行, 银行账号, 您的银行账号, 企业地址, 您所在的企业地址, 企业电话, 您的企业电话, 设置为默认抬头, 保存, 发票类型选择, 纸质发票开出后将以邮寄形式交付, 请输入需要开具发票的姓名, 请输入您的手机号, 请正确输入您的手机号, 请输入您的联系邮箱, 请正确输入您的联系邮箱, 请输入需要开具发票的企业名称, 请输入纳税人识别号, 请正确输入纳税人识别号, 请输入您的开户银行, 请输入您的银行账号, 请正确输入您的银行账号, 请输入您所在的企业地址, 请输入您的企业电话, 发票记录, 抬头管理, 申请时间, 没有发票信息哟~, 个人普通发票, 企业普通发票, 企业专用发票, 添加新发票, 删除该发票?, 发票编号, 发票备注, 快递号, 总资产(元), 累计充值(元), 累计消费(元), 账单记录, 消费记录, 充值记录, 积分中心, 签到领积分, 赚积分抵现金, 领取优惠券, 满减享优惠, 最新拼团活动, 最新的优惠商品上架拼团, 立即参与, 当前限时秒杀, 最新商品秒杀进行中, 我的余额, 赠送, 其他, 注意事项, 冻结佣金为, 立即转入, 立即充值, 请输入金额, 转入余额, 转入余额后无法再次转出,确认是否转入余额, 转入成功, 正在支付, 充值金额必须为数字, 充值金额不能为0, 填写手机号码, 是否绑定账号, 绑定, 您已取消绑定!, 当前手机号, 设置新密码, 确认新密码, 手机号码不存在,无法发送验证码!, 请输入新密码, 两次输入的密码不一致!, 请输入验证码, 暂无退款订单~, 缺少订单号无法查看订单详情, 明细, 第七天, 第7天, 奖励, 已签到, 立即签到, 已累计签到, 据说连续签到第, 天可获得超额积分,一定要坚持签到哦~~~, 签到成功, 好的, 您今日已签到!, 暂无签到记录~, 保存海报, 长按保存图片, 分销海报, 小程序二维码需要发布正式版后才能获取到, 获取中, 暂无数据~, 提现记录, 提现总额, 佣金记录, 佣金明细, 分销等级, 昨日收益, 累积已提, 代理商申请, 立即提现, 推广名片, 推广人统计, 推广人订单, 推广订单, 事业部, 代理商, 推广人排行, 佣金排行, 员工列表, 您目前暂无推广权限, 商城购物可享, 折, 当前等级, 未达成, 今日成长值, 点, 我的成长值记录, 暂未解锁该等级, 点,需达到, 已解锁更高等级, 我的成长特权, 购物折扣, 专属徽章, 经验累积, 尊享客服, 签到, 可获得, 点经验, 每日签到可获得经验值,已签到, 去签到, 点经验/元, 购买商品可获得对应的经验值, 去购买, 点经验/人, 邀请好友注册商城可获得经验值, 去邀请, 积分数, 消费金额, 暂无经验记录, 账户登录, 微信登录, 手机号登录, 账户充值, 佣金转入, 周榜, 月榜, 周排行, 月排行, 语言切换, 点击前往, 查看全部, 查看订单, 无法获取图片信息, 长按或扫描查看, 点解锁, 确认修改, 保存修改, 退出登录, 付费会员, 地址信息, 我的推广, 砍价记录, 我的等级, 兑换, 申请中, 统计管理, 退款, 未发货, 当前为最新版本, 清除缓存, 确定清楚本地缓存数据吗, 缓存清理完成, 切换的账号不存在, 正在切换中, 确认退出登录, 我知道了, 系统错误, 请求失败, 邀请您加入, 图片上传中, 上传图片失败, 访问位置被拒绝, 系统定位已关闭, 需要定位权限, 订单核销, 当前可转入佣金为, 浏览记录, 签到奖励, 请输入内容, 单次限购, 永久限购, 《用户协议》, 《隐私协议》, 与, 请先阅读并同意协议, 绑定下级通知, 购买成功通知, 确认收货通知, 改价通知, 退款成功通知, 充值成功通知, 积分到账通知, 佣金到账通知, 砍价成功通知, 拼团成功通知, 拼团失败通知, 开团成功通知, 提现成功通知, 提现失败通知, 充值退款通知, 退款申请拒绝通知, 您有新的退款待处理, 您有新的订单待处理, 发货通知, 取消拼团通知, 参团成功通知, 你有个新的提现申请待处理, 你有个新的用户收货待处理, 提醒付款通知, 短信验证码, 到店自提, 快递配送, default */
  8585. /***/ (function(module) {
  8586. module.exports = JSON.parse("{\"选择地址\":\"Seleziona indirizzo\",\"选择其它地址\":\"Seleziona altro indirizzo\",\"已选商品\":\"Merci Selezionate\",\"清空\":\"Cancella\",\"¥\":\"€\",\"已售罄\":\"Esaurito\",\"已下架\":\"Togli giù\",\"删除\":\"Elimina\",\"商品券\":\"Prodotto\",\"品类券\":\"Categoria\",\"通用券\":\"Generale\",\"优惠券\":\"Buono\",\"满\":\"Completo\",\"元可用\":\"Usato\",\"无门槛券\":\"Nessuna soglia\",\"领取后\":\"Ricevi\",\"天内可用\":\"Giorni di utilizzo\",\"已领取\":\"Ricevuto\",\"立即领取\":\"Prendi\",\"购物满\":\"Spendi\",\"减\":\"Disattiva\",\"不限时\":\"Tempo illimitato\",\"秒杀\":\"Seckill\",\"砍价\":\"Affare\",\"拼团\":\"Gruppo\",\"已售\":\"Venduto\",\"立即购买\":\"Acquista ora\",\"加入购物车\":\"Aggiungi al carrello\",\"选规格\":\"Opzioni\",\"跳过\":\"Avanti\",\"立即体验\":\"Vai ora\",\"首页\":\"Casa\",\"搜索\":\"Cerca\",\"购物车\":\"Carrello\",\"我的收藏\":\"Raccogli\",\"个人中心\":\"Mio\",\"券\":\"Voglio.\",\"正在加载中\":\"Caricamento in corso...\",\"上拉加载更多\":\"Ritira in alto caricando di più\",\"代付金额\":\"Importo\",\"共\":\"Un totale di \",\"件商品\":\"Articoli\",\"订单包裹\":\"Ordina merce\",\"申请退款中\":\"Rimborso\",\"已退款\":\"Rimborsato\",\"已完成\":\"Completato\",\"件退款中\":\"Rimborso articoli\",\"不支持配送\":\"Solo in negozio\",\"不支持自提\":\"Solo spedizione\",\"已评价\":\"Valutato\",\"评价\":\"Recensione\",\"申请退款\":\"Rimborso\",\"查看物流\":\"Logistica\",\"确认收货\":\"Fai ordine\",\"选择付款方式\":\"Seleziona tipo di pagamento\",\"支付\":\"Paga\",\"去付款\":\"Pagare\",\"请选择要支付的订单\":\"Seleziona ordine\",\"余额不足\":\"Equilibrio insufficiente\",\"支付中\":\"Pagando...\",\"缺少支付参数\":\"Parametri di pagamento mancanti\",\"取消支付\":\"Annulla pagamento\",\"支付成功\":\"Pagamento riuscito\",\"支付失败\":\"Pagamento fallito\",\"库存\":\"Scorta\",\"限量\":\"Limite\",\"数量\":\"QTÀ\",\"我要参团\":\"Unisciti al gruppo\",\"确定\":\"OK\",\"热门推荐\":\"Raccomandazione calda\",\"最高返佣\":\"Altissimo\",\"推广享佣金\":\"Promuovi\",\"立即分享\":\"Condividi ora\",\"发现新版本\":\"Nuova versione\",\"立即升级\":\"Aggiornamento\",\"下载进度\":\"Avanzamento\",\"店小二\":\"Cameriere\",\"暂无记录\":\"Nessun dato\",\"正在下载海报,请稍后再试\":\"Download poster, riprovare più tardi\",\"海报二维码生成失败\":\"Impossibile generare il codice QR del poster\",\"倒计时\":\"Conto alla rovescia\",\"天\":\"D\",\"时\":\"H\",\"分\":\"M\",\"秒\":\"S\",\"砍价成功\":\"Contrattazione riuscita\",\"活动已结束\":\"Attività interrotta\",\"已砍至\":\"Taglia su\",\"活动进行中\":\"Elaborazione...\",\"取消活动\":\"Annulla\",\"继续砍价\":\"Continua\",\"暂无砍价记录\":\"Nessun dato\",\"人正在参与\":\"Partecipare\",\"最低\":\"Più basso\",\"参与砍价\":\"Affare\",\"砍价列表\":\"Elenco occasioni\",\"人查看\":\"Visualizza\",\"人分享\":\"Condividi\",\"人参与\":\"Coinvolto\",\"邀请您帮忙砍价\":\"Ti invito ad aiutare\",\"查看商品\":\"Visualizza elementi\",\"当前\":\"Corrente\",\"已砍\":\"Tritato\",\"还剩\":\"Sinistra\",\"立即参与砍价\":\"Contratta adesso\",\"商品暂无库存\":\"Esaurito\",\"邀请好友帮砍价\":\"Invita gli amici ad aiutare\",\"已有\":\"Avere\",\"位好友成功砍价\":\"Amici di successo\",\"帮好友砍一刀\":\"Aiuta gli amici\",\"好友已砍价成功\":\"Amici già di successo\",\"我也要参与\":\"Parteciperò\",\"已成功帮助好友砍价\":\"Aiuta gli amici al successo\",\"恭喜您砍价成功,快去支付\":\"Contrattazione riuscita, vai a pagare\",\"立即支付\":\"Paga ora\",\"抢更多商品\":\"Prendi di più\",\"砍价帮\":\"Gruppo di contrattazione\",\"砍掉\":\"Interrompi\",\"更多\":\"Altro\",\"关闭\":\"Chiudi\",\"点击加载更多\":\"Clicca per caricare altro\",\"商品详情\":\"Dettagli\",\"砍价规则\":\"Regole dell'affare\",\"您已砍掉\":\"Hai tagliato\",\"元,听说分享次数越多砍价成功的机会越大哦\":\", Più volte condividi, maggiore è la possibilità di una contrattazione di successo\",\"成功帮砍\":\"Aiutare con successo a tagliare\",\"您也可以砍价低价拿哦,快去挑选心仪的商品吧\":\"Puoi anche contrattare e averlo a basso prezzo, vai a scegliere i tuoi prodotti preferiti\",\"发送给朋友\":\"Invia amico\",\"微信好友\":\"Wechat amico\",\"微信朋友圈\":\"Momenti WeChat\",\"生成海报\":\"Genera poster\",\"砍价详情\":\"Dettagli dell'affare\",\"分享成功\":\"Condivisione riuscita\",\"分享失败\":\"Condivisione non riuscita\",\"该商品每人限购\":\"Questo prodotto è limitato all'acquisto per persona\",\"您的好友\":\"Il tuo amico\",\"邀请您砍价\":\"Invita a tagliare\",\"人团\":\"Persone\",\"去拼团\":\"Vai\",\"拼团列表\":\"Elenco gruppi\",\"类型\":\"Tipo\",\"累计销量\":\"Totale venduto\",\"限购\":\"Limite\",\"种规格可选\":\"Specifiche\",\"已拼\":\"Frotto\",\"件\":\"Pezzo\",\"还差\":\"Solo\",\"人成团\":\"successo\",\"去拼单\":\"Unisciti\",\"查看更多\":\"Altro\",\"收起\":\"Metti via\",\"拼团玩法\":\"Processo di gruppo\",\"开团/参团\":\"Inizio\",\"邀请好友\":\"Invito\",\"满员发货\":\"Consegna\",\"用户评价\":\"Recensione\",\"好评率\":\"Tasso di lode\",\"产品介绍\":\"Dettagli\",\"单独购买\":\"Compra da solo\",\"立即开团\":\"Inizia gruppo\",\"请选择\":\"Selezionato\",\"商品\":\"Prodotto\",\"详情\":\"Dettaglio\",\"缺少参数无法查看商品\":\"Impossibile visualizzare il prodotto per mancanza di parametri\",\"参数错误\":\"Errore parametro\",\"已选择\":\"Selezionato\",\"保存成功\":\"Successo salvato\",\"保存失败\":\"Salvato non riuscito\",\"人拼\":\"Le persone combattono\",\"剩余\":\"Rimanente\",\"结束\":\"Fine\",\"恭喜您拼团成功\":\"Congratulazioni per il tuo raggruppamento di successo\",\"人,拼团失败\":\"Persona andata via, il gruppo ha fallito\",\"拼团中,还差\":\"Nel gruppo c'è ancora\",\"人拼团成功\":\"Persona lasciata per unirsi al gruppo con successo\",\"邀请好友参团\":\"Invita gli amici a unirsi al gruppo\",\"再次开团\":\"Raggruppa\",\"取消开团\":\"Annulla\",\"查看订单信息\":\"Visualizza ordine\",\"大家都在拼\":\"Tutto il gruppo\",\"更多拼团\":\"Altro\",\"邀请您参团\":\"Invita a partecipare\",\"你不是该团的成员\":\"Non sei un membro del gruppo\",\"已抢\":\"Derubato\",\"抢购中\":\"Prendi ora\",\"未开始\":\"Non avviato\",\"已结束\":\"Finito\",\"暂无商品,去看点别的吧\":\"Nessun prodotto\",\"即将开始\":\"Non avviato\",\"距秒杀结束仅剩\":\"Manca solo alla fine\",\"累计销售\":\"Venduto\",\"收藏\":\"Raccogli\",\"保存到手机\":\"Salva sul telefono\",\"长按图片可以保存到手机\":\"Premere a lungo per salvare sul telefono\",\"抢购详情页\":\"Snap alla pagina dei dettagli dell'acquisto\",\"二维码获取失败\":\"Impossibile ottenere il codice QR\",\"请选择属性\":\"Seleziona una proprietà\",\"提示:点击图片即可保存至手机相册\":\"Suggerimento: fare clic sull'immagine per salvarla nell'album del telefono\",\"拼团海报\":\"Poster puzzle\",\"砍价海报\":\"Manifesto di mercanteggiamenti\",\"海报生成中\":\"Il poster è in fase di generazione\",\"海报图片获取失败\":\"Impossibile ottenere l'immagine del poster\",\"海报\":\"Poster\",\"已预定\":\"Prenotato\",\"预售价\":\"Prevendita\",\"立即预定\":\"Prenota ora\",\"开售时间\":\"Tempo di vendita\",\"预售活动\":\"Evento in prevendita\",\"起\":\"Alzati\",\"划线价\":\"ORP\",\"开通“超级会员”立省\":\"Apri \\\"Super membro\\\" per disattivare \",\"元\":\"€\",\"立即开通\":\"Attiva ora\",\"预售活动时间\":\"Tempo di prevendita\",\"预售结束后\":\"Navi entro\",\"天内发货\":\"Giorni dopo la fine della prevendita\",\"活动\":\"Attività\",\"参与秒杀\":\"Seckill\",\"参与拼团\":\"Gruppo\",\"复制口令\":\"Copia codice merce\",\"复制成功\":\"Copia riuscita\",\"推荐\":\"Consigliato\",\"缺少经纬度信息无法查看地图\":\"Informazioni di latitudine e longitudine mancanti non possono visualizzare la mappa\",\"产品库存不足,请选择其它属性\":\"Scorte di prodotti insufficienti, selezionare un altro attributo\",\"立即退款\":\"Rimborso immediato\",\"一键改价\":\"Cambia prezzo\",\"订单备注\":\"Note sull'ordine\",\"商品总价\":\"Prezzo totale\",\"原始邮费\":\"Affrancatura antica\",\"实际支付\":\"Prezzo effettivo\",\"退款金额\":\"Prezzo di rimborso\",\"请填写备注信息\":\"Compila i commenti\",\"立即修改\":\"Modifica ora\",\"确认退款\":\"Conferma rimborso\",\"拒绝退款\":\"Rimborso rifiutato\",\"取消\":\"Annulla\",\"订单号\":\"ID ordine\",\"发货方式\":\"Modalità\",\"发货类型\":\"Tipo di spedizione\",\"快递公司\":\"Espresso\",\"快递单号\":\"Numero\",\"顺丰请输入单号 :收件人或寄件人手机号后四位\":\"Inserisci il numero di tracciamento per SF Express: le ultime quattro cifre del numero di cellulare del destinatario o del mittente\",\"例如:SF000000000000:3941\":\"Ad esempio: SF000000000000:3941\",\"电子面单\":\"Foglio elettronico\",\"预览\":\"Anteprima\",\"寄件人姓名\":\"Nome mittente\",\"填写寄件人姓名\":\"Compila nome mittente\",\"寄件人电话\":\"Telefono mittente\",\"填写寄件人电话\":\"Compila il numero di telefono del mittente\",\"寄件人地址\":\"Indirizzo mittente\",\"填写寄件人地址\":\"Compila indirizzo mittente\",\"送货人\":\"addetto alle consegne\",\"确认提交\":\"Invia\",\"发货\":\"Nave\",\"送货\":\"Dare\",\"无需物流\":\"Non c'è bisogno\",\"手动填写\":\"Compila manualmente\",\"电子面单打印\":\"Foglio elettronico\",\"填写快递单号\":\"Compila il numero del corriere\",\"请选择电子面单\":\"Seleziona una ricevuta elettronica\",\"待付款\":\"Pagare\",\"待发货\":\"Spedire\",\"待收货\":\"Ricevere\",\"待评价\":\"Valutare\",\"售后/退款\":\"Rimborso\",\"数据统计\":\"Statistiche\",\"今日成交额\":\"Oggi venduto\",\"昨日成交额\":\"Venduto ieri\",\"本月成交额\":\"Mese venduto\",\"今日订单数\":\"Ordini di oggi\",\"昨日订单数\":\"Ordini di ieri\",\"本月订单数\":\"Ordini del mese\",\"详细数据\":\"Dati dettagliati\",\"日期\":\"Data\",\"订单数\":\"Conteggio ordini\",\"成交额\":\"Fatturato\",\"立即核销\":\"Scrivi ora\",\"查看\":\"Visualizza\",\"确定要核销此订单吗\":\"Sei sicuro di cancellare questo ordine\",\"确定核销\":\"Verifica\",\"请输入核销码\":\"Inserisci il codice di verifica\",\"请输入正确的核销码\":\"Inserisci il codice di verifica corretto\",\"查询中\":\"Interrogazione\",\"订单\":\"Ordine\",\"订单未备注,点击添加备注信息\":\"L'ordine non ha commenti, clicca per aggiungere commenti\",\"复制\":\"Copia\",\"件商品,应支付\":\"Articoli, dovrebbero pagare\",\"邮费\":\"Affrancatura\",\"订单编号\":\"ID ordine\",\"下单时间\":\"Tempo dell'ordine\",\"支付状态\":\"Stato pagamento\",\"已支付\":\"Pagato\",\"未支付\":\"Non pagato\",\"支付方式\":\"Metodo di pagamento\",\"买家留言\":\"MSG acquirente\",\"支付金额\":\"Paga importo\",\"优惠券抵扣\":\"Detrazione cedola\",\"运费\":\"Tariffa\",\"实付款\":\"Importo reale\",\"配送方式\":\"Metodo di consegna\",\"快递\":\"Espresso\",\"送货人电话\":\"Corriere telefonico\",\"确认付款\":\"Conferma pagamento\",\"去发货\":\"Spedire\",\"改价成功\":\"Prezzo cambiato con successo\",\"改价失败\":\"Cambio prezzo fallito\",\"请输入备注\":\"Inserisci una nota\",\"退款中\":\"Rimborso\",\"部分退款中\":\"Rimborso parziale\",\"件商品,实付款\":\"Merci pagate\",\"同意退货\":\"Accetta la restituzione\",\"待用户发货\":\"Non spedito\",\"请输入正确的金额\":\"Inserisci l'importo corretto\",\"今天\":\"Oggi\",\"昨天\":\"Ieri\",\"最近7天\":\"Ultimi 7 giorni\",\"本月\":\"Mese\",\"自定义\":\"Personalizza\",\"营业额(元)\":\"Fatturato\",\"订单量(份)\":\"Quantità\",\"增长率\":\"Tasso di rialzo\",\"增长\":\"Aumento\",\"单位\":\"Unità\",\"元.\":\"Yuan\",\"分.\":\"Cents\",\"固定\":\"Risolto\",\"指定范围\":\"Ambito\",\"提交时间\":\"Tempo di invio\",\"原因\":\"Ragione\",\"暂无申请记录,快去申请吧!\":\"Nessun record di applicazione ancora, fai domanda ora!\",\"没有更多啦\":\"Non più\",\"待审核\":\"In attesa di revisione\",\"审核通过\":\"Revisione superata\",\"审核未通过\":\"Revisione fallita\",\"编辑\":\"Modifica\",\"重新提交\":\"Invia nuovamente\",\"会员优惠价\":\"Sconto VIP\",\"余额支付\":\"Paga a saldo\",\"可用余额\":\"Equilibrio\",\"微信支付\":\"WeChat Pay\",\"确认\":\"Conferma\",\"支付提醒\":\"Promemoria di pagamento\",\"线下支付已关闭,请点击确认按钮返回主页\":\"Il pagamento offline è stato chiuso, fare clic sul pulsante di conferma per tornare alla home page\",\"请输入支付金额\":\"Inserisci l'importo del pagamento\",\"正在确认\":\"Conferma\",\"进入商城\":\"Entra nel centro commerciale\",\"代理商名称\":\"Nome agenzia\",\"请输入代理商名称\":\"Inserisci il nome dell'agenzia\",\"用户姓名\":\"Il tuo nome\",\"请输入姓名\":\"Inserisci il tuo nome\",\"联系电话\":\"Il tuo telefono\",\"请输入手机号\":\"Inserisci numero di telefono\",\"验证码\":\"Codice OTP\",\"填写验证码\":\"Compila codice OTP\",\"邀请码\":\"Codice invito\",\"请输入代理商邀请码\":\"Inserisci codice invito\",\"请上传营业执照及行业相关资质证明图片\":\"Carica foto di licenze commerciali e certificati di qualificazione relativi al settore\",\"图片最多可上传10张,图片格式支持JPG、PNG、JPEG\":\"È possibile caricare fino a 10 immagini e il formato immagine supporta JPG, PNG, JPEG\",\"上传图片\":\"Carica\",\"已阅读并同意\":\"Leggi e accetta\",\"代理商协议\":\"Contratto di agenzia\",\"提交申请\":\"Invia domanda\",\"代理商入驻协议\":\"Contratto di agente\",\"恭喜,您的资料提交成功!\":\"Congratulazioni, inviato con successo!\",\"返回首页\":\"Ritorno a casa\",\"恭喜,您的资料通过审核!\":\"Congratulazioni, recensione superata!\",\"您的申请未通过!\":\"La tua domanda è stata respinta!\",\"重新申请\":\"Riapplica\",\"获取验证码\":\"Ottieni codice OTP\",\"请输入正确的手机号码\":\"Inserisci il numero di telefono corretto\",\"重新获取\":\"Riacquisisci\",\"请上传营业执照\":\"Carica licenza commerciale\",\"请勾选并同意入驻协议\":\"Barrare e accettare il contratto di lavoro\",\"专题栏\":\"Colonna Argomento\",\"暂无数据\":\"Nessun dato\",\"请输入卡号\":\"Inserisci il numero della carta\",\"请输入卡密\":\"Inserisci la tua password\",\"确认激活\":\"Conferma\",\"SVIP会员尊享权\":\"privilegi membri SVIP\",\"正在激活\":\"Attivazione\",\"已使用\":\"Usato\",\"永久SVIP会员\":\"Membro permanente SVIP\",\"SVIP会员\":\"Membro SVIP\",\"到期\":\"maturità\",\"您与\":\"Tu con\",\"商城的第\":\"Centro commerciale\",\"天.\":\"Giorni.\",\"已累积为您节省\":\"Risparmio accumulato per te\",\"开通即享会员权益\":\"Goditi i vantaggi per i membri\",\"续费会员\":\"Rinnovo\",\"开通会员\":\"Unisciti a SVIP\",\"有效期至\":\"Valido fino a \",\"试用\":\"Prova\",\"购买即视为同意\":\"Acquisto come consenso\",\"会员用户协议\":\"Contratto SVIP\",\"点击兑换卡密\":\"Clicca per riscattare la carta\",\"会员优惠券\":\"Buono SVIP\",\"SVIP商品推荐\":\"SVIP consiglia\",\"商城价\":\"Prezzo centro commerciale\",\"激活会员卡\":\"Attiva Carta\",\"支付宝支付\":\"Alipay\",\"成功开启0元试用\":\"Prova da 0 yuan aperta con successo\",\"确认绑定\":\"Conferma rilegatura\",\"绑定成功\":\"Rilegatura riuscita\",\"商城客服已离线\":\"Il servizio clienti è offline\",\"我要反馈\":\"Voglio un feedback\",\"请填写内容\":\"Compila il contenuto\",\"提交\":\"Invia\",\"精品推荐\":\"Consigliato\",\"热门榜单\":\"Popolare\",\"首发新品\":\"Nuovo\",\"促销单品\":\"Promozionale\",\"预告\":\"Avviso\",\"回放\":\"Riproduzione\",\"进行中\":\"Elaborazione\",\"发送客服\":\"Invia\",\"客服连接中\":\"Il servizio clienti si sta connettendo\",\"连接失败\":\"Connessione fallita\",\"提示\":\"Suggerimento\",\"客服已下线,是否需要反馈?\":\"Il servizio clienti è offline, hai bisogno di un feedback?\",\"和好友一起分享\":\"Condividi con gli amici\",\"积分抵扣\":\"Detrazione punti\",\"已开票\":\"Fatturato\",\"未开票\":\"Non fatturato\",\"发票信息\":\"Informazioni sulla fattura\",\"发票抬头\":\"Fattura\",\"发票抬头类型\":\"Tipo di intestazione fattura\",\"个人\":\"PER\",\"企业\":\"COM\",\"发票类型\":\"Tipo fattura\",\"电子普通发票\":\"Fattura generale elettronica\",\"电子专用发票\":\"Fattura speciale elettronica\",\"企业税号\":\"Imposta sulle imprese\",\"联系信息\":\"Informazioni di contatto\",\"真实姓名\":\"Nome reale\",\"联系邮箱\":\"E-mail\",\"抬头选择\":\"Selezione testa\",\"默认\":\"Predefinito\",\"普通\":\"ordinario\",\"专用\":\"Dedicato\",\"您还没有添加发票信息哟\":\"Non hai aggiunto le informazioni sulla fattura\",\"添加新的抬头\":\"Aggiungi nuova intestazione\",\"不开发票\":\"Nessuna fattura\",\"抽奖\":\"Lotteria\",\"全选\":\"Seleziona tutto\",\"属性\":\"Attributi\",\"请填写具体地址\":\"Si prega di compilare l'indirizzo specifico\",\"省\":\"Provincia\",\"市\":\"Città\",\"区\":\"Area\",\"添加成功\":\"Aggiungi con successo\",\"您已拒绝导入微信地址权限\":\"Hai negato il permesso di importare indirizzi WeChat\",\"是否进入权限管理,调整授权?\":\"Entri nella gestione dei permessi e modifichi l'autorizzazione?\",\"已取消\":\"Annullato\",\"添加失败\":\"Aggiungi fallito\",\"请填写收货人姓名\":\"Inserisci il nome del destinatario\",\"请选择所在地区\":\"Seleziona la tua regione\",\"请填写详细地址\":\"Si prega di compilare l'indirizzo dettagliato\",\"星\":\"Stella\",\"商品满足你的期待么?说说你的想法,分享给想买的他们吧\":\"Il prodotto soddisfa le tue aspettative? Dicci cosa ne pensi e condividilo con chi vuole acquistarlo\",\"立即评价\":\"Vota ora\",\"商品质量\":\"Qualità del prodotto\",\"服务态度\":\"Atteggiamento al servizio\",\"缺少参数\":\"Parametri mancanti\",\"请填写你对宝贝的心得\":\"Compila la tua opinione sul prodotto\",\"正在发布评论\":\"Inserimento commento\",\"感谢您的评价\":\"Grazie per la tua recensione\",\"评价完成\":\"Revisione completata\",\"恭喜您\":\"Congratulazioni\",\"获得\":\"Prendi\",\"机会\":\"Possibilità\",\"领取成功\":\"Ricevuto con successo\",\"评分\":\"Punteggio\",\"全部\":\"TUTTI\",\"好评\":\"Lode\",\"中评\":\"Media\",\"差评\":\"Cattivo\",\"加载更多\":\"Caricamento di più\",\"千米距离\":\"a chilometri di distanza\",\"搜索商品名称\":\"Cerca prodotto\",\"价格\":\"Prezzo\",\"销量\":\"Venduto\",\"新品\":\"Nuovo\",\"已全部加载\":\"Tutto caricato\",\"缺少订单号\":\"ID ordine mancante\",\"退货件数\":\"Numero rimborsato\",\"退款类型\":\"Tipo di rimborso\",\"退款原因\":\"Motivo del rimborso\",\"备注说明\":\"Osservazione\",\"填写备注信息,100字以内\":\"Osservazioni entro 100 parole\",\"仅退款\":\"Solo rimborso\",\"退货并退款\":\"Reso e rimborso\",\"申请成功\":\"Applicazione riuscita\",\"请先选择退货商品\":\"Seleziona prima l'articolo da restituire\",\"搜索历史\":\"Cronologia delle ricerche\",\"热门搜索\":\"Ricerca a caldo\",\"请输入要搜索的商品\":\"Inserisci il prodotto che vuoi cercare\",\"正在搜索中\":\"Ricerca\",\"中奖记录\":\"Record vincente\",\"我的奖品\":\"Il mio premio\",\"活动规则\":\"Regola attività\",\"昵称\":\"soprannome\",\"序号\":\"Serie\",\"奖品名称\":\"Nome del premio\",\"获奖时间\":\"Tempo vincente\",\"商家暂未上架活动哦\":\"Il commerciante non ha ancora elencato l'evento\",\"获取抽奖信息\":\"Ottieni informazioni sulle lotterie\",\"奖品类型\":\"Tipo premio\",\"立即兑换\":\"Riscatta ora\",\"兑换时间\":\"Tempo di cambio\",\"暂无中奖记录\":\"Nessun record di vittorie\",\"积分\":\"Punto\",\"余额\":\"Equilibrio\",\"红包\":\"Contanti\",\"设置收货地址\":\"Imposta indirizzo di spedizione\",\"暂无门店信息\":\"Nessuna informazione sul negozio\",\"剩余积分\":\"Punti rimanenti\",\"当前积分\":\"Punti attuali\",\"开具发票\":\"Fattura\",\"请填写\":\"Compila\",\"配送运费\":\"Spese di spedizione\",\"会员商品优惠\":\"Offerte di prodotti\",\"会员运费优惠\":\"Offerte di spedizione\",\"合计\":\"Totale\",\"使用微信快捷支付\":\"Pagamento rapido WeChat\",\"使用支付宝支付\":\"Paga con Alipay\",\"线下支付\":\"Pagamenti offline\",\"使用线下付款\":\"Utilizza il pagamento offline\",\"好友代付\":\"L'amico paga\",\"找微信好友支付\":\"Trova amici da pagare\",\"立即使用\":\"Usa\",\"请选择要购买的商品\":\"Seleziona un articolo da acquistare\",\"发票\":\"Fattura\",\"不使用\":\"Non usare\",\"订单创建成功\":\"Ordine creato con successo\",\"请选择支付方式\":\"Seleziona il metodo di pagamento\",\"请选择收货地址\":\"Selezionare l'indirizzo di consegna\",\"请填写联系人或联系人电话\":\"Compila la persona di contatto o il numero di telefono di contatto\",\"暂无门店,请选择其他方式\":\"Nessun negozio attualmente, scegli un altro modo\",\"请输入\":\"Inserisci\",\"请输入正确的\":\"Inserisci il corretto\",\"请上传\":\"Si prega di caricare\",\"订单支付中\":\"Pagare\",\"请按以上退货信息将商品退回\":\"Si prega di restituire l'articolo con le informazioni\",\"请联系管理员获取退货地址\":\"Contattare l'amministratore per l'indirizzo di ritorno\",\"待核销\":\"Scritto\",\"核销信息\":\"Informazioni cancellate\",\"营业时间\":\"Orario lavorativo\",\"每日\":\"Quotidiano\",\"使用说明\":\"Istruzioni per l'uso\",\"可将二维码出示给店员扫描或提供数字核销码\":\"Il codice QR può essere presentato all'impiegato per eseguire la scansione o fornire un codice di verifica digitale\",\"可将二维码出示给配送员进行核销\":\"Il QR code può essere presentato al corriere per la verifica\",\"查看位置\":\"Visualizza posizione\",\"拒绝原因\":\"Motivo di negazione\",\"联系客服\":\"Contatto\",\"商家备注\":\"Note del commerciante\",\"收货人\":\"Ricevitore\",\"收货地址\":\"Indirizzo della nave\",\"配送人姓名\":\"Nome della nave\",\"拨打\":\"Chiama\",\"虚拟发货\":\"Nave virtuale\",\"已发货,请注意查收\":\"Spedito, controllare\",\"虚拟备注\":\"Note virtuali\",\"总代付\":\"Importo totale\",\"申请开票\":\"Applica fattura\",\"查看发票\":\"Visualizza fattura\",\"取消订单\":\"Annulla\",\"立即付款\":\"Paga\",\"批量退款\":\"Rimborso in blocco\",\"查看拼团\":\"Visualizza gruppo\",\"再次购买\":\"Compra ancora\",\"取消申请\":\"Annulla richiesta\",\"填写退货信息\":\"Informazioni sul reso\",\"查看退货物流\":\"Logistica\",\"您确认放弃此次申请吗\":\"Sei sicuro di voler abbandonare questa applicazione\",\"操作成功\":\"Operazione riuscita\",\"订单信息不存在\":\"Le informazioni sull'ordine non esistono\",\"为保障权益,请收到货确认无误后,再确认收货\":\"Al fine di tutelare i diritti e gli interessi, si prega di confermare il ricevimento della merce dopo aver confermato che la merce è corretta.\",\"删除订单\":\"Cancella ordine\",\"确定删除该订单\":\"Conferma cancellazione ordine\",\"删除成功\":\"Cancellato con successo\",\"确认取消该订单\":\"Conferma annullamento ordine\",\"订单信息\":\"Informazioni sull'ordine\",\"消费订单\":\"Ordine\",\"总消费\":\"Importo totale\",\"预售\":\"Prevendita\",\"线下付款,未支付\":\"Offline non pagato\",\"未核销\":\"Non cancellato\",\"件商品,总金额\":\"articoli, importo totale\",\"查看详情\":\"Visualizza\",\"暂无订单\":\"Nessun ordine ancora\",\"缺少订单号无法取消订单\":\"Non posso annullare l'ordine senza numero d'ordine\",\"订单支付成功\":\"Ordine pagato con successo\",\"订单支付失败\":\"Ordine pagato non riuscito\",\"暂未支付\":\"Non ancora pagato\",\"失败原因\":\"Motivo fallito\",\"重新购买\":\"Riscatto\",\"重新支付\":\"Paga ancora\",\"赠送优惠券\":\"Regala coupon\",\"有效期\":\"Validità\",\"缺少参数无法查看订单支付状态\":\"I parametri mancanti non possono visualizzare lo stato del pagamento dell'ordine\",\"最多可上传3张\":\"Fino a 3 caricamenti\",\"请选择产品\":\"Seleziona un prodotto\",\"该产品没有更多库存了\":\"Non ci sono più scorte per questo prodotto\",\"优品推荐\":\"Migliore raccomandazione\",\"暂无产品\":\"Nessun prodotto ancora\",\"重新选择\":\"Riseleziona\",\"请选择数量\":\"Seleziona la quantità\",\"砍价专区·BARGAINING\":\"CONTRATTAZIONE\",\"立即砍价\":\"Taglia ora\",\"拼团活动\":\"Gruppo\",\"人拼团成功.\":\"La gente ha avuto successo\",\"人参团\":\"Gruppo Ginseng\",\"拼团价\":\"Prezzo gruppo\",\"已过期\":\"Scaduto\",\"关注\":\"Segui\",\"推荐好货\":\"Raccomanda Merci\",\"暂无商品\":\"Nessun prodotto ancora\",\"限时秒杀\":\"Picco limitato nel tempo\",\"抢\":\"Afferra\",\"广告位\":\"Spazio ADV\",\"精彩内容\":\"In evidenza\",\"砍价模块,暂无数据\":\"Modulo affare, nessun dato ancora\",\"砍价活动\":\"Affare\",\"呼朋唤友来砍价\":\"Chiama gli amici Affare\",\"拼团模块,暂无数据\":\"Modulo gruppo, nessun dato ancora\",\"享超值开团价\":\"Goditi tariffe di gruppo convenienti\",\"优惠券,暂无数据\":\"Buono, nessun dato momentaneamente\",\"领取今日好券\":\"Ricevi il buono buono di oggi\",\"可用\":\"Usato\",\"领取\":\"Rivendicazione\",\"客服\":\"Servizio\",\"商品列表,暂无数据\":\"Nessun dato momentaneamente\",\"搜索商品\":\"Cerca prodotto\",\"暂无图片,请上传图片\":\"Nessuna foto, per favore carica\",\"首发新品,暂无数据\":\"Primo nuovo prodotto, ancora nessun dato\",\"多个优质商品最新上架\":\"Le ultime merci di alta qualità sugli scaffali\",\"暂无新闻,请上传新闻\":\"Nessuna notizia, carica la notizia\",\"热度 TOP\":\"Riscaldare TOP\",\"排行榜、暂无数据\":\"Classifica, nessun dato momentaneamente\",\"促销单品,暂无数据\":\"Articoli promozionali, nessun dato momentaneo\",\"库存商品优惠促销活动\":\"Attività promozionali per merce in giacenza\",\"精品推荐,暂无数据\":\"Consiglio boutique, nessun dato ancora\",\"上百种商品分类任您选择\":\"Centinaia di categorie di prodotti tra cui scegliere\",\"秒杀模块,暂无数据\":\"Modulo Seckill, nessun dato momentaneamente\",\"场\":\"Sito\",\"暂无数据,请设置\":\"Nessun dato, si prega di impostare\",\"暂无数据,请先添加分类\":\"Nessun dato, aggiungere prima la classificazione\",\"暂无标题\":\"Nessun titolo momentaneamente\",\"诚意推荐品质商品\":\"Raccomandare merce di qualità in buona fede\",\"点击“立即关注”即可关注公众号\":\"Fai clic su 'segui ora' per seguire l'account ufficiale\",\"立即关注\":\"Segui ora\",\"添加到我的小程序, 微信首页下拉即可访问商城。\":\"Aggiungilo alla mia applet e potrai accedere al centro commerciale tirando giù la homepage di wechat\",\"点击\":\"Clic\",\"服务协议与隐私政策\":\"Contratto di servizio e informativa privacy\",\"请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。\":\"Assicurati di leggere attentamente e di comprendere appieno i termini del contratto di servizio e l'informativa sulla privacy, inclusi ma non limitati a: per fornirti messaggistica istantanea, condivisione di contenuti e altri servizi, abbiamo bisogno di raccogliere il tuo dispositivo informazioni, registri delle operazioni e altre informazioni personali. Puoi visualizzare, modificare, eliminare le informazioni personali e gestire la tua autorizzazione in Impostazioni\",\"你可以阅读\":\"Puoi leggere\",\"《服务协议与隐私政策》\":\"Contratto di servizio e informativa privacy\",\"了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。\":\"Ulteriori informazioni. Se sei d'accordo, fai clic su Accetto per iniziare ad accettare i nostri servizi\",\"我同意\":\"Sono d'accordo\",\"残忍拒绝\":\"Crudele rifiuto\",\"下拉加载更多\":\"Abbassa di più il carico\",\"网络连接断开\":\"Connessione di rete disconnessa\",\"请检查情况:\":\"Verifica la condizione:\",\"在设置中是否已开启网络权限\":\"Se il permesso di rete è abilitato nelle impostazioni\",\"当前是否处于弱网环境\":\"Attualmente in un ambiente di rete debole\",\"版本是否过低,升级试试吧\":\"Quando la versione è troppo bassa, prova ad aggiornare\",\"重新连接\":\"Riconnetti\",\"加载中\":\"Caricamento\",\"没有更多内容啦~\":\"Niente più contenuti~\",\"100%正品保证\":\"100% autentico\",\"所有商品精挑细选\":\"Sii molto esigente\",\"售后无忧\":\"Senza preoccupazioni dopo il venduto\",\"管理\":\"Tubo\",\"购物数量\":\"Quantità spesa\",\"请重新选择商品规格\":\"Riselezionare le specifiche del prodotto\",\"重选\":\"Riselezione\",\"失效商品\":\"Merci non valide\",\"失效\":\"Fallimento\",\"该商品已失效\":\"La merce è scaduta\",\"立即下单\":\"Ordina ora\",\"我也是有底线的\":\"Ho anche una linea di fondo\",\"产品库存不足,请选择其它\":\"Inventario di prodotti insufficiente, seleziona altro\",\"添加购物车成功\":\"Carrello della spesa aggiunto con successo\",\"清除成功\":\"Pulizia riuscita\",\"暂无兑换记录~\":\"Nessun record di scambio~\",\"大家都在换\":\"Tutti stanno cambiando\",\"人兑换\":\"Scambio di persone\",\"轻松赚积分\":\"Guadagna punti facilmente\",\"购买商品\":\"Acquista beni\",\"购买商品可获得积分奖励\":\"Punti premio per l'acquisto di beni\",\"去完成\":\"Vai\",\"每日签到活动\":\"Attività di check-in giornaliere\",\"每日签到可获得积分奖励\":\"Il check-in giornaliero può ottenere punti premio\",\"九宫格抽奖活动\":\"Lotteria Jiugongge\",\"幸运抽奖可获得积分奖励\":\"L'estrazione fortunata può ottenere punti premio\",\"我的积分\":\"I miei punti\",\"每日签到\":\"Accesso giornaliero\",\"积分抽奖\":\"Lotteria a punti\",\"兑换记录\":\"Registro scambio\",\"已兑换\":\"Redento\",\"无法兑换\":\"Impossibile riscattare\",\"[默认]\":\"[Predefinito]\",\"可用积分\":\"Punti disponibili\",\"快递费用\":\"Tariffa espressa\",\"免运费\":\"Trasporto libero\",\"备注信息\":\"Osservazioni\",\"请添加备注(150字以内)\":\"Aggiungi commenti (entro 150 parole)\",\"使用线上支付宝支付\":\"Paga con Alipay online\",\"可用余额:\":\"Saldo:\",\"选择线下付款方式\":\"Seleziona metodo di pagamento offline\",\"正在加载…\":\"Caricamento in corso...\",\"可用积分不足!\":\"Punti disponibili insufficienti!\",\"订单状态\":\"Stato dell'ordine\",\"支付积分\":\"Paga punti\",\"备注\":\"Osservazioni\",\"配送核销码\":\"Codice di verifica della consegna\",\"当前可用余额:\":\"Saldo attuale disponibile:\",\"正在加载\":\"Caricamento\",\"缺少经纬度信息无法查看地图!\":\"Non è possibile visualizzare la mappa senza informazioni su longitudine e latitudine!\",\"商品兑换成功\":\"Riscattato con successo\",\"兑换方式\":\"Metodo di scambio\",\"积分兑换\":\"Scambio di punti\",\"兑换积分\":\"Riscatta punti\",\"取消兑换\":\"Annulla scambio\",\"缺少参数无法查看订单兑换状态\":\"Non è possibile visualizzare lo stato di scambio dell'ordine senza parametri\",\"用户离开了\":\"L'utente se n'è andato\",\"兑换成功\":\"Riscattato con successo\",\"物流公司\":\"Azienda di logistica\",\"复制单号\":\"Copia doc no\",\"设为默认\":\"Imposta come predefinito\",\"添加新地址\":\"Aggiungi nuovo indirizzo\",\"导入微信地址\":\"Importa indirizzo wechat\",\"取消选择\":\"Deseleziona\",\"您设置的默认地址不存在!\":\"L'indirizzo predefinito che hai impostato non esiste!\",\"设置成功\":\"Impostazione riuscita\",\"您删除的地址不存在!\":\"L'indirizzo che hai cancellato non esiste!\",\"获取头像\":\"Ottieni avatar\",\"请点击授权\":\"Fai clic su autorizza\",\"绑定手机号\":\"Lega numero di cellulare\",\"永久\":\"Permanente\",\"会员到期\":\"Scadenza abbonamento\",\"未开通会员\":\"Membro non aperto\",\"查看会员权益\":\"Visualizza i vantaggi dell'abbonamento\",\"立即续费\":\"Rinnovare\",\"立即激活\":\"Attivazione\",\"会员可享多项权益\":\"Goditi molteplici vantaggi\",\"订单中心\":\"Il mio ordine\",\"我的服务\":\"Il mio servizio\",\"隐私协议\":\"Privacy\",\"商家管理\":\"Gestione aziendale\",\"更新用户信息成功\":\"Informazioni utente aggiornate con successo\",\"客服接待\":\"Ricevimento\",\"点击复制网址去浏览器中打开\":\"Fai clic su Copia URL per aprire nel browser\",\"点击复制\":\"Fai clic su Copia\",\"完成支付\":\"Completa il pagamento\",\"点击右上角\":\"Clicca nell'angolo in alto a destra\",\"选择 在浏览器 打开,去支付宝支付\":\"Seleziona per aprire nel browser e pagare tramite Alipay\",\"支付订单不存在,页面将在2秒后自动关闭!\":\"L'ordine di pagamento non esiste e la pagina si chiuderà automaticamente tra 2 secondi!\",\"正在支付中\":\"Pagare\",\"支付订单不存在,页面将在2秒后自动关闭\":\"L'ordine di pagamento non esiste e la pagina si chiuderà automaticamente tra 2 secondi\",\"复制失败\":\"Replica fallita\",\"您目前的排名\":\"La tua classifica attuale\",\"您目前暂无排名\":\"Attualmente sei in classifica\",\"暂无排名~\":\"Nessuna classifica ~\",\"输入手机号\":\"Inserisci numero di cellulare\",\"输入验证码\":\"Inserisci codice di verifica\",\"立即登录\":\"Accedi ora\",\"请填写手机号码\":\"Inserisci il tuo numero di cellulare\",\"请填写验证码\":\"Compila il codice di verifica\",\"请输入正确的验证码\":\"Inserisci il codice di verifica corretto\",\"正在登录中\":\"Accesso\",\"登录成功\":\"Accesso riuscito\",\"获取授权\":\"Ottenere l'autorizzazione\",\"获取微信的手机号授权\":\"Ottieni l'autorizzazione al numero di cellulare wechat\",\"获取微信手机号\":\"Ricevi il numero di cellulare di Wechat\",\"输入手机号码\":\"Inserisci numero di cellulare\",\"填写登录密码\":\"Compila password di accesso\",\"登录\":\"Accedi\",\"快速登录\":\"Accesso rapido\",\"账号登录\":\"Accesso all'account\",\"其他方式登录\":\"Accedi con altri metodi\",\"登录中\":\"Accesso\",\"获取用户信息失败\":\"Impossibile ottenere informazioni sull'utente\",\"请绑定手机号后,继续操作\":\"Collega il tuo numero di cellulare e continua l'operazione\",\"错误信息\":\"Informazioni sull'errore\",\"用户点击确定\":\"L'utente fa clic su OK\",\"用户点击取消\":\"L'utente fa clic su Annulla\",\"登录失败\":\"Accesso fallito\",\"请勿重复点击\":\"Non fare clic ripetutamente\",\"请填写密码\":\"Inserisci la password\",\"您输入的密码过于简单\":\"La password che hai inserito è troppo semplice\",\"请填写账号\":\"Compila il numero di conto\",\"请输入正确的账号\":\"Inserisci il numero di conto corretto\",\"[图片]\":\"[Immagine]\",\"[语音]\":\"[Voce]\",\"[商品]\":\"[Prodotto]\",\"[订单]\":\"[Ordine]\",\"亲、暂无消息记录哟!\":\"Caro, nessun messaggio registrato ancora!\",\"站内消息\":\"Messaggio in stazione\",\"客服消息\":\"Messaggio del servizio clienti\",\"通知于\":\"Notificato il\",\"获取详情中\":\"Ottieni dettagli\",\"代付订单创建成功,发给好友帮你付款吧~\":\"Ordine di pagamento creato con successo, invialo al tuo amico per aiutarti a pagare ~\",\"帮我付一下这件商品了,谢谢~\":\"Aiutami a pagare questa merce, grazie ~\",\"已经有人替我代付,谢谢啦~\":\"Qualcuno ha pagato per me, grazie ~\",\"谢谢你帮我支付,么么哒~\":\"Grazie per avermi aiutato a pagare, Moda ~\",\"我已为你代付成功,商家正在努力发货中~\":\"Ho pagato con successo per te e il commerciante sta cercando di consegnare ~\",\"好友代付成功,商家正在努力发货中~\":\"Pagamento amico riuscito e il commerciante sta cercando di consegnare ~\",\"发送给微信好友\":\"Invia ad amici wechat\",\"查看订单详情\":\"Visualizza i dettagli dell'ordine\",\"订单已支付\":\"Ordine pagato\",\"如果订单申请退款,已支付金额将原路退还给您\":\"Se l'ordine richiede il rimborso, l'importo pagato ti verrà restituito allo stesso modo\",\"代付成功\":\"Pagamento riuscito\",\"谢谢你为我付款,还可以再去看看其他商品哟~\":\"Grazie per avermi pagato e puoi andare a vedere altri beni ~\",\"该订单暂未支付\":\"L'ordine non è stato ancora pagato\",\"人\":\"Persona\",\"推广人数\":\"Numero di promotori\",\"一级\":\"Livello 1\",\"二级\":\"Livello 2\",\"点击搜索会员名称\":\"Clicca per cercare il nome del membro\",\"团队排序\":\"Smistamento a squadre\",\"金额排序\":\"Smistamento importo\",\"订单排序\":\"Smistamento ordini\",\"单\":\"Ordini\",\"加入时间\":\"Tempo di unione\",\"累积推广订单\":\"Conteggio ordini\",\"本月累计推广订单\":\"Ordini del mese\",\"返佣\":\"Sconto\",\"暂未返佣\":\"Non sconto\",\"返佣时间\":\"Tempo di sconto\",\"单号\":\"Numero d'ordine\",\"暂无推广订单~\":\"Nessun ordine di promozione ~\",\"推广订单列表\":\"Elenco ordini di promozione\",\"找回密码\":\"Recupera password\",\"填写您的新密码\":\"Inserisci la tua nuova password\",\"加载失败\":\"Errore di carico\",\"点击授权登录您的客服工作台\":\"Fai clic su autorizza per accedere al tuo banco di lavoro del servizio clienti\",\"授权登录\":\"Accesso autorizzato\",\"没有登录的code,请重新扫码\":\"Codice senza login, scansiona di nuovo il codice\",\"员工人数\":\"Numero di dipendenti\",\"邀请\":\"Invito\",\"分佣比例\":\"Bilancia\",\"修改分佣比例\":\"Modifica proporzione\",\"请输入百分比\":\"Inserisci percentuale\",\"删除员工\":\"Elimina dipendente\",\"确定删除该员工?\":\"Sei sicuro di eliminare questo dipendente?\",\"请输入比例\":\"Inserisci una scala\",\"分类\":\"Classe\",\"我的\":\"Mio\",\"姓名\":\"Nome\",\"请输入联系电话\":\"Inserisci il numero di contatto\",\"所在地区\":\"Posizione\",\"详细地址\":\"Indirizzo\",\"设置为默认地址\":\"Imposta come indirizzo predefinito\",\"立即保存\":\"Salva ora\",\"浙江省\":\"Zhejiang\",\"杭州市\":\"Hangzhou\",\"滨江区\":\"Distretto di Binjiang\",\"广东省\":\"Provincia del Guangdong\",\"广州市\":\"Guangzhou\",\"番禺区\":\"Panyu\",\"修改地址\":\"Modifica indirizzo\",\"添加地址\":\"Aggiungi indirizzo\",\"已取消!\":\"Annullato!\",\"请填写联系电话\":\"Compila il numero di contatto\",\"保存中\":\"Risparmio\",\"修改成功\":\"Modifica riuscita\",\"消费\":\"Consumo\",\"充值\":\"Ricarica\",\"暂无账单的记录哦~\":\"Nessuna registrazione della fattura temporaneamente~\",\"点击【立即注销】即代表您已经同意《用户注销协议》\":\"Cliccando [disconnessione immediata] significa che hai accettato l'accordo di disconnessione dell'utente\",\"立即注销\":\"Esci ora\",\"是否确认注销\":\"Conferma logout\",\"注销后无法恢复,请谨慎操作\":\"Impossibile recuperare dopo il logout, per favore fai attenzione\",\"注销\":\"Esci\",\"持卡人\":\"Titolare di carta\",\"请输入持卡人姓名\":\"Inserisci il nome del titolare della carta\",\"卡号\":\"Numero carta\",\"请填写卡号\":\"Inserisci il numero della carta\",\"银行\":\"Banca\",\"提现\":\"Ritiro\",\"最低提现金额\":\"Importo minimo di prelievo\",\"当前可提现金额\":\"Importo corrente prelevabile\",\"冻结佣金\":\"Commissione congelata\",\"说明: 每笔佣金的冻结期为\":\"Nota: il periodo di congelamento di ogni provvigione è\",\"天,到期后可提现\":\"Giorni, revocabili alla scadenza\",\"账号\":\"Conto\",\"请填写您的微信账号\":\"Compila il tuo account wechat\",\"收款码\":\"Codice raccolta\",\"请填写您的支付宝账号\":\"Inserisci il tuo numero di conto Alipay\",\"请选择银行\":\"Seleziona una banca\",\"银行卡\":\"Carta bancaria\",\"微信\":\"Wechat\",\"支付宝\":\"Alipay\",\"请填写持卡人姓名\":\"Inserisci il nome del titolare della carta\",\"请填写微信号\":\"Compila la wechat\",\"请填写提现金额\":\"Compila l'importo del prelievo\",\"提现金额不能低于\":\"L'importo del prelievo non può essere inferiore a\",\"未使用\":\"Non utilizzato\",\"已使用/过期\":\"Usato/scaduto\",\"通用劵\":\"Titoli generali\",\"一级分佣上浮\":\"Un livello in su\",\"二级分佣上浮\":\"Secondario fluttuante\",\"快速升级技巧\":\"Abilità di aggiornamento rapido\",\"未完成\":\"Incompleto\",\"已领完\":\"Raccolti\",\"当前共\":\"Totale corrente\",\"取关\":\"Disattiva\",\"请选择商品\":\"Seleziona un prodotto\",\"头像\":\"Avatar\",\"手机号码\":\"Numero di cellulare\",\"点击绑定手机号\":\"Fai clic per legare\",\"ID号\":\"Numero ID\",\"权限设置\":\"Autorizzazione\",\"点击管理\":\"Gestione\",\"密码\":\"Password\",\"点击修改密码\":\"Fai clic su Modifica\",\"更换手机号码\":\"Cambia numero\",\"点击更换手机号码\":\"Fai clic per\",\"缓存大小\":\"Dimensioni cache\",\"当前版本\":\"Versione attuale\",\"地址管理\":\"Indirizzo\",\"发票管理\":\"Fattura\",\"账号注销\":\"Annullamento\",\"注销后无法恢复\":\"Impossibile recuperare\",\"累计积分\":\"Punti accumulati\",\"累计消费\":\"Consumo\",\"冻结积分\":\"Punti di congelamento\",\"积分规则\":\"Regola integrale\",\"提示:积分数值的高低会直接影响您的会员等级\":\"Suggerimento: il valore del tuo livello di iscrizione\",\"提示:你有\":\"Suggerimento: hai\",\"积分在\":\"Integrale in\",\"过期,请尽快使用\":\"Scaduto, utilizzalo il prima possibile\",\"暂无积分记录哦~\":\"Nessun record di punteggio temporaneamente~\",\"赚积分\":\"Guadagna punti\",\"分值明细\":\"Dettagli punteggio\",\"分值提升\":\"Aumento punteggio\",\"抬头类型\":\"Tipo di testata\",\"增值税电子专用发票\":\"Fattura speciale elettronica IVA\",\"增值税电子普通发票\":\"Fattura elettronica ordinaria IVA\",\"需要开具发票的姓名\":\"Nome da fatturare\",\"需要开具发票的企业名称\":\"Nome dell'impresa che emette fattura\",\"税号\":\"Codice Fiscale\",\"纳税人识别号\":\"Numero di identificazione fiscale\",\"手机号\":\"Numero di cellulare\",\"您的手机号\":\"Il tuo numero di cellulare\",\"邮箱\":\"Casella postale\",\"您的联系邮箱\":\"La tua casella di posta di contatto\",\"开户银行\":\"Banca di deposito\",\"您的开户银行\":\"La tua banca di deposito\",\"银行账号\":\"Numero di conto bancario\",\"您的银行账号\":\"Il tuo numero di conto bancario\",\"企业地址\":\"Indirizzo impresa\",\"您所在的企业地址\":\"Il tuo indirizzo commerciale\",\"企业电话\":\"Telefono aziendale\",\"您的企业电话\":\"Il tuo telefono aziendale\",\"设置为默认抬头\":\"Imposta come intestazione predefinita\",\"保存\":\"Salva\",\"发票类型选择\":\"Selezione tipo fattura\",\"纸质发票开出后将以邮寄形式交付\":\"Dopo l'emissione della fattura cartacea, verrà consegnata per posta\",\"请输入需要开具发票的姓名\":\"Inserisci il nome da fatturare\",\"请输入您的手机号\":\"Inserisci il tuo numero di cellulare\",\"请正确输入您的手机号\":\"Inserisci correttamente il tuo numero di cellulare\",\"请输入您的联系邮箱\":\"Inserisci la tua email di contatto\",\"请正确输入您的联系邮箱\":\"Inserisci correttamente la tua email di contatto\",\"请输入需要开具发票的企业名称\":\"Inserisci il nome dell'impresa per l'emissione della fattura\",\"请输入纳税人识别号\":\"Inserisci il codice fiscale\",\"请正确输入纳税人识别号\":\"Inserire correttamente il codice fiscale\",\"请输入您的开户银行\":\"Inserisci la tua banca di deposito\",\"请输入您的银行账号\":\"Inserisci il tuo numero di conto bancario\",\"请正确输入您的银行账号\":\"Inserisci correttamente il tuo numero di conto bancario\",\"请输入您所在的企业地址\":\"Inserisci il tuo indirizzo commerciale\",\"请输入您的企业电话\":\"Inserisci il tuo numero di telefono aziendale\",\"发票记录\":\"Registro fattura\",\"抬头管理\":\"Gestione testata\",\"申请时间\":\"Tempo di applicazione\",\"没有发票信息哟~\":\"Nessuna informazione sulla fattura ~\",\"个人普通发票\":\"Fattura personale ordinaria\",\"企业普通发票\":\"Fattura ordinaria impresa\",\"企业专用发票\":\"Fattura speciale impresa\",\"添加新发票\":\"Aggiungi nuova fattura\",\"删除该发票?\":\"Eliminare questa fattura?\",\"发票编号\":\"Numero fattura\",\"发票备注\":\"Note fattura\",\"快递号\":\"Numero espresso\",\"总资产(元)\":\"Attività totali (€)\",\"累计充值(元)\":\"Ricarica (€)\",\"累计消费(元)\":\"Co fiore (€)\",\"账单记录\":\"Registro fattura\",\"消费记录\":\"Registra\",\"充值记录\":\"Ricarica\",\"积分中心\":\"Integrale\",\"签到领积分\":\"Accedi\",\"赚积分抵现金\":\"Guadagna punti\",\"领取优惠券\":\"Buoni\",\"满减享优惠\":\"Sconto completo\",\"最新拼团活动\":\"Ultima attività di gruppo\",\"最新的优惠商品上架拼团\":\"Gli ultimi prodotti preferenziali sullo scaffale\",\"立即参与\":\"Partecipa\",\"当前限时秒杀\":\"Seconda uccisione limite di tempo attuale\",\"最新商品秒杀进行中\":\"Ultimo picco di merci in corso\",\"我的余额\":\"Equilibrio\",\"赠送\":\"Regalo\",\"其他\":\"Altro\",\"注意事项\":\"Precauzioni\",\"冻结佣金为\":\"La Commissione congelata è\",\"立即转入\":\"Trasferimento immediato in\",\"立即充值\":\"Ricarica subito\",\"请输入金额\":\"Inserisci importo\",\"转入余额\":\"Trasferimento in saldo\",\"转入余额后无法再次转出,确认是否转入余额\":\"Impossibile trasferire nuovamente dopo il trasferimento a saldo, confermare se trasferire a saldo\",\"转入成功\":\"Trasferimento in corso\",\"正在支付\":\"Pagamento\",\"充值金额必须为数字\":\"L'importo della ricarica deve essere un numero\",\"充值金额不能为0\":\"L'importo della ricarica non può essere 0\",\"填写手机号码\":\"Compila numero di cellulare\",\"是否绑定账号\":\"Lega conto\",\"绑定\":\"Legatura\",\"您已取消绑定!\":\"Sei libero!\",\"当前手机号\":\"Numero di cellulare attuale\",\"设置新密码\":\"Imposta nuova password\",\"确认新密码\":\"Conferma nuova password\",\"手机号码不存在,无法发送验证码!\":\"Il numero di cellulare non esiste, impossibile inviare il codice di verifica!\",\"请输入新密码\":\"Inserisci una nuova password\",\"两次输入的密码不一致!\":\"Le due password che hai inserito non sono coerenti!\",\"请输入验证码\":\"Inserisci un codice di verifica\",\"暂无退款订单~\":\"Nessun ordine di rimborso ~\",\"缺少订单号无法查看订单详情\":\"Manca il numero d'ordine e non è possibile visualizzare i dettagli dell'ordine\",\"明细\":\"Dettagli\",\"第七天\":\"Giorno 7\",\"第7天\":\"Giorno 7\",\"奖励\":\"Ricompensa\",\"已签到\":\"Registrato\",\"立即签到\":\"Accedi ora\",\"已累计签到\":\"Check-in cumulativo\",\"据说连续签到第\":\"Il secondo accesso consecutivo\",\"天可获得超额积分,一定要坚持签到哦~~~\":\"Se puoi ottenere punti in eccesso ogni giorno, devi insistere per accedere~~~\",\"签到成功\":\"Check in riuscito\",\"好的\":\"OK\",\"您今日已签到!\":\"Hai effettuato l'accesso oggi!\",\"暂无签到记录~\":\"Nessun record di accesso~\",\"保存海报\":\"Salva POSTER\",\"长按保存图片\":\"Premere a lungo per salvare l'immagine\",\"分销海报\":\"Poster di distribuzione\",\"小程序二维码需要发布正式版后才能获取到\":\"Il codice QR dell'applet può essere ottenuto solo dopo aver pubblicato la versione ufficiale\",\"获取中\":\"Prendere\",\"暂无数据~\":\"Nessun dato temporaneamente ~\",\"提现记录\":\"Ritiro\",\"提现总额\":\"Ritiro totale\",\"佣金记录\":\"Registro della Commissione\",\"佣金明细\":\"Dettagli della Commissione\",\"分销等级\":\"Livello di distribuzione\",\"昨日收益\":\"I guadagni di ieri\",\"累积已提\":\"Cumulativo ritirato\",\"代理商申请\":\"Applicazione agente\",\"立即提现\":\"Ritiro\",\"推广名片\":\"Biglietto da visita\",\"推广人统计\":\"Statistiche del Promotore\",\"推广人订单\":\"ordine promotore\",\"推广订单\":\"Ordine di promozione\",\"事业部\":\"Dipartimento aziendale\",\"代理商\":\"Agente\",\"推广人排行\":\"Classifica dei Promotori\",\"佣金排行\":\"Graduatoria della Commissione\",\"员工列表\":\"Elenco dipendenti\",\"您目前暂无推广权限\":\"Al momento non hai il permesso di promozione\",\"商城购物可享\":\"Shopping nel centro commerciale\",\"折\":\"Sconto\",\"当前等级\":\"Livello attuale\",\"未达成\":\"Non raggiunto\",\"今日成长值\":\"Valore di crescita di oggi\",\"点\":\"Punto\",\"我的成长值记录\":\"Il mio record di valore di crescita\",\"暂未解锁该等级\":\"Questo livello non è stato ancora sbloccato\",\"点,需达到\":\"Punto, bisogno di raggiungere\",\"已解锁更高等级\":\"Sbloccato livello superiore\",\"我的成长特权\":\"Il mio privilegio di crescita\",\"购物折扣\":\"Sconto\",\"专属徽章\":\"Distintivo esclusivo\",\"经验累积\":\"Esperienza accumulata\",\"尊享客服\":\"Servizio esclusivo\",\"签到\":\"Check-in\",\"可获得\":\"Disponibile\",\"点经验\":\"Esperienza punto\",\"每日签到可获得经验值,已签到\":\"L'accesso quotidiano può ottenere un valore di esperienza, effettuato l'accesso\",\"去签到\":\"Check-in\",\"点经验/元\":\"Esperienza punti/€\",\"购买商品可获得对应的经验值\":\"Il valore di esperienza corrispondente può essere ottenuto acquistando beni\",\"去购买\":\"Vai a comprare\",\"点经验/人\":\"Punto esperienza/persona\",\"邀请好友注册商城可获得经验值\":\"Invita gli amici a registrarsi nel centro commerciale per ottenere un valore di esperienza\",\"去邀请\":\"Invita\",\"积分数\":\"Frazione di prodotto\",\"消费金额\":\"Quantità di consumo\",\"暂无经验记录\":\"Nessun record di esperienza\",\"账户登录\":\"Accesso all'account\",\"微信登录\":\"Accesso a Wechat\",\"手机号登录\":\"Accesso mobile\",\"账户充值\":\"Ricarica\",\"佣金转入\":\"Commissione\",\"周榜\":\"Elenco settimanale\",\"月榜\":\"Elenco mensile\",\"周排行\":\"Classifica settimanale\",\"月排行\":\"Classifica mensile\",\"语言切换\":\"Lingua\",\"点击前往\":\"Clicca per andare\",\"查看全部\":\"Vedi tutto\",\"查看订单\":\"Visualizza ordine\",\"无法获取图片信息\":\"Impossibile ottenere informazioni sull'immagine\",\"长按或扫描查看\":\"Premere a lungo o scansionare\",\"点解锁\":\"Punto di sblocco\",\"确认修改\":\"Conferma\",\"保存修改\":\"Salva\",\"退出登录\":\"Esci\",\"付费会员\":\"SVIP\",\"地址信息\":\"Indirizzo\",\"我的推广\":\"Estensione\",\"砍价记录\":\"Affare\",\"我的等级\":\"Il mio livello\",\"兑换\":\"Vai\",\"申请中\":\"Applicazione\",\"统计管理\":\"Statistiche\",\"退款\":\"Rimborso\",\"未发货\":\"Non emesso\",\"当前为最新版本\":\"Attualmente l'ultima versione\",\"清除缓存\":\"Svuota cache\",\"确定清楚本地缓存数据吗\":\"Sei sicuro di essere chiaro sui dati della cache locale\",\"缓存清理完成\":\"Pulizia cache completata\",\"切换的账号不存在\":\"L'account cambiato non esiste\",\"正在切换中\":\"Commutazione\",\"确认退出登录\":\"Conferma logout\",\"我知道了\":\"Vedo\",\"系统错误\":\"Errore di sistema\",\"请求失败\":\"Richiesta fallita\",\"邀请您加入\":\"Invita a partecipare\",\"图片上传中\":\"Caricamento\",\"上传图片失败\":\"Impossibile caricare l'immagine\",\"访问位置被拒绝\":\"Posizione di accesso negata\",\"系统定位已关闭\":\"Il posizionamento del sistema è disattivato\",\"需要定位权限\":\"Permesso di posizione richiesto\",\"订单核销\":\"Cancellare\",\"当前可转入佣金为\":\"L'attuale commissione trasferibile è\",\"浏览记录\":\"Cronologia di navigazione\",\"签到奖励\":\"Premio per il check-in\",\"请输入内容\":\"Inserisci contenuto\",\"单次限购\":\"Limitazione di acquisto unico\",\"永久限购\":\"Restrizione permanente all'acquisto\",\"《用户协议》\":\"《Accordo utente》\",\"《隐私协议》\":\"《Accordo sulla privacy》\",\"与\":\"E\",\"请先阅读并同意协议\":\"Si prega di leggere e accettare l'accordo prima\",\"绑定下级通知\":\"Notifiche minori vincolanti\",\"购买成功通知\":\"Notifica di successo dell'acquisto\",\"确认收货通知\":\"Avviso di conferma della ricezione\",\"改价通知\":\"Avviso di modifica del prezzo\",\"退款成功通知\":\"Notifica di successo del rimborso\",\"充值成功通知\":\"Notifica di successo della ricarica\",\"积分到账通知\":\"Avviso di arrivo dei punti\",\"佣金到账通知\":\"Avviso di arrivo della commissione\",\"砍价成功通知\":\"Avviso di successo della negoziazione dei prezzi\",\"拼团成功通知\":\"Notifica di successo del gruppo turistico\",\"拼团失败通知\":\"Notifica di guasto di gruppo\",\"开团成功通知\":\"Notifica di apertura positiva del gruppo\",\"提现成功通知\":\"Avviso di successo di recesso\",\"提现失败通知\":\"Avviso di mancato ritiro\",\"充值退款通知\":\"avviso di rimborso della ricarica\",\"退款申请拒绝通知\":\"Avviso di rifiuto della domanda di rimborso\",\"您有新的退款待处理\":\"Hai un nuovo rimborso in attesa di elaborazione\",\"您有新的订单待处理\":\"Hai un nuovo ordine da elaborare\",\"发货通知\":\"Avviso di consegna\",\"取消拼团通知\":\"Avviso di cancellazione del tour di gruppo\",\"参团成功通知\":\"Notifica di partecipazione positiva\",\"你有个新的提现申请待处理\":\"Hai una nuova domanda di recesso da elaborare\",\"你有个新的用户收货待处理\":\"Hai un nuovo utente che riceve merci da elaborare\",\"提醒付款通知\":\"Avviso di pagamento del promemoria\",\"短信验证码\":\"Codice di verifica SMS\",\"到店自提\":\"Ritiro al negozio\",\"快递配送\":\"Consegna espressa\"}");
  8587. /***/ }),
  8588. /***/ 267:
  8589. /*!****************************************************************!*\
  8590. !*** D:/data/zhonghong/saber-weixin/utils/SubscribeMessage.js ***!
  8591. \****************************************************************/
  8592. /*! no static exports found */
  8593. /***/ (function(module, exports, __webpack_require__) {
  8594. "use strict";
  8595. /* WEBPACK VAR INJECTION */(function(uni) {Object.defineProperty(exports, "__esModule", { value: true });exports.auth = auth;exports.openPaySubscribe = openPaySubscribe;exports.openOrderSubscribe = openOrderSubscribe;exports.openExtrctSubscribe = openExtrctSubscribe;exports.openPinkSubscribe = openPinkSubscribe;exports.openBargainSubscribe = openBargainSubscribe;exports.openOrderRefundSubscribe = openOrderRefundSubscribe;exports.openRechargeSubscribe = openRechargeSubscribe;exports.subscribe = subscribe;
  8596. var _cache = __webpack_require__(/*! ../config/cache.js */ 32); // +----------------------------------------------------------------------
  8597. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  8598. // +----------------------------------------------------------------------
  8599. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  8600. // +----------------------------------------------------------------------
  8601. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8602. // +----------------------------------------------------------------------
  8603. // | Author: CRMEB Team <admin@crmeb.com>
  8604. // +----------------------------------------------------------------------
  8605. function auth() {var tmplIds = {};var messageTmplIds = uni.getStorageSync(_cache.SUBSCRIBE_MESSAGE);tmplIds = messageTmplIds ? JSON.parse(messageTmplIds) : {};return tmplIds;}
  8606. /**
  8607. * 支付成功后订阅消息id
  8608. * 订阅 确认收货通知 订单支付成功 新订单管理员提醒
  8609. */
  8610. function openPaySubscribe() {
  8611. var tmplIds = auth();
  8612. return subscribe([
  8613. tmplIds.order_pay_success,
  8614. tmplIds.order_deliver_success,
  8615. tmplIds.order_postage_success]);
  8616. }
  8617. /**
  8618. * 订单相关订阅消息
  8619. * 送货 发货 取消订单
  8620. */
  8621. function openOrderSubscribe() {
  8622. var tmplIds = auth();
  8623. return subscribe([
  8624. tmplIds.order_take,
  8625. tmplIds.integral_accout,
  8626. tmplIds.order_brokerage]);
  8627. }
  8628. /**
  8629. * 提现消息订阅
  8630. * 成功 和 失败 消息
  8631. */
  8632. function openExtrctSubscribe() {
  8633. var tmplIds = auth();
  8634. return subscribe([
  8635. tmplIds.user_extract]);
  8636. }
  8637. /**
  8638. * 拼团成功
  8639. */
  8640. function openPinkSubscribe() {
  8641. var tmplIds = auth();
  8642. return subscribe([
  8643. tmplIds.open_pink_success,
  8644. tmplIds.can_pink_success]);
  8645. }
  8646. /**
  8647. * 砍价成功
  8648. */
  8649. function openBargainSubscribe() {
  8650. var tmplIds = auth();
  8651. return subscribe([
  8652. tmplIds.bargain_success]);
  8653. }
  8654. /**
  8655. * 订单退款
  8656. */
  8657. function openOrderRefundSubscribe() {
  8658. var tmplIds = auth();
  8659. return subscribe([
  8660. tmplIds.order_refund]);
  8661. }
  8662. /**
  8663. * 充值成功
  8664. */
  8665. function openRechargeSubscribe() {
  8666. var tmplIds = auth();
  8667. return subscribe([
  8668. tmplIds.recharge_success]);
  8669. }
  8670. /**
  8671. * 调起订阅界面
  8672. * array tmplIds 模板id
  8673. */
  8674. function subscribe(subscrip443tionmessagee502call) {
  8675. var weChat = wx;
  8676. return new Promise(function (reslove, reject) {
  8677. weChat.requestSubscribeMessage({
  8678. tmplIds: subscrip443tionmessagee502call,
  8679. success: function success(res) {
  8680. return reslove(res);
  8681. },
  8682. fail: function fail(res) {
  8683. return reslove(res);
  8684. } });
  8685. });
  8686. }
  8687. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["default"]))
  8688. /***/ }),
  8689. /***/ 27:
  8690. /*!******************************************************!*\
  8691. !*** D:/data/zhonghong/saber-weixin/lang/ko_kr.json ***!
  8692. \******************************************************/
  8693. /*! exports provided: 选择地址, 选择其它地址, 已选商品, 清空, ¥, 已售罄, 已下架, 删除, 商品券, 品类券, 通用券, 优惠券, 满, 元可用, 无门槛券, 领取后, 天内可用, 已领取, 立即领取, 购物满, 减, 不限时, 秒杀, 砍价, 拼团, 已售, 立即购买, 加入购物车, 选规格, 跳过, 立即体验, 首页, 搜索, 购物车, 我的收藏, 个人中心, 券, 正在加载中, 上拉加载更多, 代付金额, 共, 件商品, 订单包裹, 申请退款中, 已退款, 已完成, 件退款中, 不支持配送, 不支持自提, 已评价, 评价, 申请退款, 查看物流, 确认收货, 选择付款方式, 支付, 去付款, 请选择要支付的订单, 余额不足, 支付中, 缺少支付参数, 取消支付, 支付成功, 支付失败, 库存, 限量, 数量, 我要参团, 确定, 热门推荐, 最高返佣, 推广享佣金, 立即分享, 发现新版本, 立即升级, 下载进度, 店小二, 暂无记录, 正在下载海报,请稍后再试, 海报二维码生成失败, 倒计时, 天, 时, 分, 秒, 砍价成功, 活动已结束, 已砍至, 活动进行中, 取消活动, 继续砍价, 暂无砍价记录, 人正在参与, 最低, 参与砍价, 砍价列表, 人查看, 人分享, 人参与, 邀请您帮忙砍价, 查看商品, 当前, 已砍, 还剩, 立即参与砍价, 商品暂无库存, 邀请好友帮砍价, 已有, 位好友成功砍价, 帮好友砍一刀, 好友已砍价成功, 我也要参与, 已成功帮助好友砍价, 恭喜您砍价成功,快去支付, 立即支付, 抢更多商品, 砍价帮, 砍掉, 更多, 关闭, 点击加载更多, 商品详情, 砍价规则, 您已砍掉, 元,听说分享次数越多砍价成功的机会越大哦, 成功帮砍, 您也可以砍价低价拿哦,快去挑选心仪的商品吧, 发送给朋友, 微信好友, 微信朋友圈, 生成海报, 砍价详情, 分享成功, 分享失败, 该商品每人限购, 您的好友, 邀请您砍价, 人团, 去拼团, 拼团列表, 类型, 累计销量, 限购, 种规格可选, 已拼, 件, 还差, 人成团, 去拼单, 查看更多, 收起, 拼团玩法, 开团/参团, 邀请好友, 满员发货, 用户评价, 好评率, 产品介绍, 单独购买, 立即开团, 请选择, 商品, 详情, 缺少参数无法查看商品, 参数错误, 已选择, 保存成功, 保存失败, 人拼, 剩余, 结束, 恭喜您拼团成功, 人,拼团失败, 拼团中,还差, 人拼团成功, 邀请好友参团, 再次开团, 取消开团, 查看订单信息, 大家都在拼, 更多拼团, 邀请您参团, 你不是该团的成员, 已抢, 抢购中, 未开始, 已结束, 暂无商品,去看点别的吧, 即将开始, 距秒杀结束仅剩, 累计销售, 收藏, 保存到手机, 长按图片可以保存到手机, 抢购详情页, 二维码获取失败, 请选择属性, 提示:点击图片即可保存至手机相册, 拼团海报, 砍价海报, 海报生成中, 海报图片获取失败, 海报, 已预定, 预售价, 立即预定, 开售时间, 预售活动, 起, 划线价, 开通“超级会员”立省, 元, 立即开通, 预售活动时间, 预售结束后, 天内发货, 活动, 参与秒杀, 参与拼团, 复制口令, 复制成功, 推荐, 缺少经纬度信息无法查看地图, 产品库存不足,请选择其它属性, 立即退款, 一键改价, 订单备注, 商品总价, 原始邮费, 实际支付, 退款金额, 请填写备注信息, 立即修改, 确认退款, 拒绝退款, 取消, 订单号, 发货方式, 发货类型, 快递公司, 快递单号, 顺丰请输入单号 :收件人或寄件人手机号后四位, 例如:SF000000000000:3941, 电子面单, 预览, 寄件人姓名, 填写寄件人姓名, 寄件人电话, 填写寄件人电话, 寄件人地址, 填写寄件人地址, 送货人, 确认提交, 发货, 送货, 无需物流, 手动填写, 电子面单打印, 填写快递单号, 请选择电子面单, 待付款, 待发货, 待收货, 待评价, 售后/退款, 数据统计, 今日成交额, 昨日成交额, 本月成交额, 今日订单数, 昨日订单数, 本月订单数, 详细数据, 日期, 订单数, 成交额, 立即核销, 查看, 确定要核销此订单吗, 确定核销, 请输入核销码, 请输入正确的核销码, 查询中, 订单, 订单未备注,点击添加备注信息, 复制, 件商品,应支付, 邮费, 订单编号, 下单时间, 支付状态, 已支付, 未支付, 支付方式, 买家留言, 支付金额, 优惠券抵扣, 运费, 实付款, 配送方式, 快递, 送货人电话, 确认付款, 去发货, 改价成功, 改价失败, 请输入备注, 退款中, 部分退款中, 件商品,实付款, 同意退货, 待用户发货, 请输入正确的金额, 今天, 昨天, 最近7天, 本月, 自定义, 营业额(元), 订单量(份), 增长率, 增长, 单位, 元., 分., 固定, 指定范围, 提交时间, 原因, 暂无申请记录,快去申请吧!, 没有更多啦, 待审核, 审核通过, 审核未通过, 编辑, 重新提交, 会员优惠价, 余额支付, 可用余额, 微信支付, 确认, 支付提醒, 线下支付已关闭,请点击确认按钮返回主页, 请输入支付金额, 正在确认, 进入商城, 代理商名称, 请输入代理商名称, 用户姓名, 请输入姓名, 联系电话, 请输入手机号, 验证码, 填写验证码, 邀请码, 请输入代理商邀请码, 请上传营业执照及行业相关资质证明图片, 图片最多可上传10张,图片格式支持JPG、PNG、JPEG, 上传图片, 已阅读并同意, 代理商协议, 提交申请, 代理商入驻协议, 恭喜,您的资料提交成功!, 返回首页, 恭喜,您的资料通过审核!, 您的申请未通过!, 重新申请, 获取验证码, 请输入正确的手机号码, 重新获取, 请上传营业执照, 请勾选并同意入驻协议, 专题栏, 暂无数据, 请输入卡号, 请输入卡密, 确认激活, SVIP会员尊享权, 正在激活, 已使用, 永久SVIP会员, SVIP会员, 到期, 您与, 商城的第, 天., 已累积为您节省, 开通即享会员权益, 续费会员, 开通会员, 有效期至, 试用, 购买即视为同意, 会员用户协议, 点击兑换卡密, 会员优惠券, SVIP商品推荐, 商城价, 激活会员卡, 支付宝支付, 成功开启0元试用, 确认绑定, 绑定成功, 商城客服已离线, 我要反馈, 请填写内容, 提交, 精品推荐, 热门榜单, 首发新品, 促销单品, 预告, 回放, 进行中, 发送客服, 客服连接中, 连接失败, 提示, 客服已下线,是否需要反馈?, 和好友一起分享, 积分抵扣, 已开票, 未开票, 发票信息, 发票抬头, 发票抬头类型, 个人, 企业, 发票类型, 电子普通发票, 电子专用发票, 企业税号, 联系信息, 真实姓名, 联系邮箱, 抬头选择, 默认, 普通, 专用, 您还没有添加发票信息哟, 添加新的抬头, 不开发票, 抽奖, 全选, 属性, 请填写具体地址, 省, 市, 区, 添加成功, 您已拒绝导入微信地址权限, 是否进入权限管理,调整授权?, 已取消, 添加失败, 请填写收货人姓名, 请选择所在地区, 请填写详细地址, 星, 商品满足你的期待么?说说你的想法,分享给想买的他们吧, 立即评价, 商品质量, 服务态度, 缺少参数, 请填写你对宝贝的心得, 正在发布评论, 感谢您的评价, 评价完成, 恭喜您, 获得, 机会, 领取成功, 评分, 全部, 好评, 中评, 差评, 加载更多, 千米距离, 搜索商品名称, 价格, 销量, 新品, 已全部加载, 缺少订单号, 退货件数, 退款类型, 退款原因, 备注说明, 填写备注信息,100字以内, 仅退款, 退货并退款, 申请成功, 请先选择退货商品, 搜索历史, 热门搜索, 请输入要搜索的商品, 正在搜索中, 中奖记录, 我的奖品, 活动规则, 昵称, 序号, 奖品名称, 获奖时间, 商家暂未上架活动哦, 获取抽奖信息, 奖品类型, 立即兑换, 兑换时间, 暂无中奖记录, 积分, 余额, 红包, 设置收货地址, 暂无门店信息, 剩余积分, 当前积分, 开具发票, 请填写, 配送运费, 会员商品优惠, 会员运费优惠, 合计, 使用微信快捷支付, 使用支付宝支付, 线下支付, 使用线下付款, 好友代付, 找微信好友支付, 立即使用, 请选择要购买的商品, 发票, 不使用, 订单创建成功, 请选择支付方式, 请选择收货地址, 请填写联系人或联系人电话, 暂无门店,请选择其他方式, 请输入, 请输入正确的, 请上传, 订单支付中, 请按以上退货信息将商品退回, 请联系管理员获取退货地址, 待核销, 核销信息, 营业时间, 每日, 使用说明, 可将二维码出示给店员扫描或提供数字核销码, 可将二维码出示给配送员进行核销, 查看位置, 拒绝原因, 联系客服, 商家备注, 收货人, 收货地址, 配送人姓名, 拨打, 虚拟发货, 已发货,请注意查收, 虚拟备注, 总代付, 申请开票, 查看发票, 取消订单, 立即付款, 批量退款, 查看拼团, 再次购买, 取消申请, 填写退货信息, 查看退货物流, 您确认放弃此次申请吗, 操作成功, 订单信息不存在, 为保障权益,请收到货确认无误后,再确认收货, 删除订单, 确定删除该订单, 删除成功, 确认取消该订单, 订单信息, 消费订单, 总消费, 预售, 线下付款,未支付, 未核销, 件商品,总金额, 查看详情, 暂无订单, 缺少订单号无法取消订单, 订单支付成功, 订单支付失败, 暂未支付, 失败原因, 重新购买, 重新支付, 赠送优惠券, 有效期, 缺少参数无法查看订单支付状态, 最多可上传3张, 请选择产品, 该产品没有更多库存了, 优品推荐, 暂无产品, 重新选择, 请选择数量, 砍价专区·BARGAINING, 立即砍价, 拼团活动, 人拼团成功., 人参团, 拼团价, 已过期, 关注, 推荐好货, 暂无商品, 限时秒杀, 抢, 广告位, 精彩内容, 砍价模块,暂无数据, 砍价活动, 呼朋唤友来砍价, 拼团模块,暂无数据, 享超值开团价, 优惠券,暂无数据, 领取今日好券, 可用, 领取, 客服, 商品列表,暂无数据, 搜索商品, 暂无图片,请上传图片, 首发新品,暂无数据, 多个优质商品最新上架, 暂无新闻,请上传新闻, 热度 TOP, 排行榜、暂无数据, 促销单品,暂无数据, 库存商品优惠促销活动, 精品推荐,暂无数据, 上百种商品分类任您选择, 秒杀模块,暂无数据, 场, 暂无数据,请设置, 暂无数据,请先添加分类, 暂无标题, 诚意推荐品质商品, 点击“立即关注”即可关注公众号, 立即关注, 添加到我的小程序, 微信首页下拉即可访问商城。, 点击, 服务协议与隐私政策, 请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。, 你可以阅读, 《服务协议与隐私政策》, 了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。, 我同意, 残忍拒绝, 下拉加载更多, 网络连接断开, 请检查情况:, 在设置中是否已开启网络权限, 当前是否处于弱网环境, 版本是否过低,升级试试吧, 重新连接, 加载中, 没有更多内容啦~, 100%正品保证, 所有商品精挑细选, 售后无忧, 管理, 购物数量, 请重新选择商品规格, 重选, 失效商品, 失效, 该商品已失效, 立即下单, 我也是有底线的, 产品库存不足,请选择其它, 添加购物车成功, 清除成功, 暂无兑换记录~, 大家都在换, 人兑换, 轻松赚积分, 购买商品, 购买商品可获得积分奖励, 去完成, 每日签到活动, 每日签到可获得积分奖励, 九宫格抽奖活动, 幸运抽奖可获得积分奖励, 我的积分, 每日签到, 积分抽奖, 兑换记录, 已兑换, 无法兑换, [默认], 可用积分, 快递费用, 免运费, 备注信息, 请添加备注(150字以内), 使用线上支付宝支付, 可用余额:, 选择线下付款方式, 正在加载…, 可用积分不足!, 订单状态, 支付积分, 备注, 配送核销码, 当前可用余额:, 正在加载, 缺少经纬度信息无法查看地图!, 商品兑换成功, 兑换方式, 积分兑换, 兑换积分, 取消兑换, 缺少参数无法查看订单兑换状态, 用户离开了, 兑换成功, 物流公司, 复制单号, 设为默认, 添加新地址, 导入微信地址, 取消选择, 您设置的默认地址不存在!, 设置成功, 您删除的地址不存在!, 获取头像, 请点击授权, 绑定手机号, 永久, 会员到期, 未开通会员, 查看会员权益, 立即续费, 立即激活, 会员可享多项权益, 订单中心, 我的服务, 隐私协议, 商家管理, 更新用户信息成功, 客服接待, 点击复制网址去浏览器中打开, 点击复制, 完成支付, 点击右上角, 选择 在浏览器 打开,去支付宝支付, 支付订单不存在,页面将在2秒后自动关闭!, 正在支付中, 支付订单不存在,页面将在2秒后自动关闭, 复制失败, 您目前的排名, 您目前暂无排名, 暂无排名~, 输入手机号, 输入验证码, 立即登录, 请填写手机号码, 请填写验证码, 请输入正确的验证码, 正在登录中, 登录成功, 获取授权, 获取微信的手机号授权, 获取微信手机号, 输入手机号码, 填写登录密码, 登录, 快速登录, 账号登录, 其他方式登录, 登录中, 获取用户信息失败, 请绑定手机号后,继续操作, 错误信息, 用户点击确定, 用户点击取消, 登录失败, 请勿重复点击, 请填写密码, 您输入的密码过于简单, 请填写账号, 请输入正确的账号, [图片], [语音], [商品], [订单], 亲、暂无消息记录哟!, 站内消息, 客服消息, 通知于, 获取详情中, 代付订单创建成功,发给好友帮你付款吧~, 帮我付一下这件商品了,谢谢~, 已经有人替我代付,谢谢啦~, 谢谢你帮我支付,么么哒~, 我已为你代付成功,商家正在努力发货中~, 好友代付成功,商家正在努力发货中~, 发送给微信好友, 查看订单详情, 订单已支付, 如果订单申请退款,已支付金额将原路退还给您, 代付成功, 谢谢你为我付款,还可以再去看看其他商品哟~, 该订单暂未支付, 人, 推广人数, 一级, 二级, 点击搜索会员名称, 团队排序, 金额排序, 订单排序, 单, 加入时间, 累积推广订单, 本月累计推广订单, 返佣, 暂未返佣, 返佣时间, 单号, 暂无推广订单~, 推广订单列表, 找回密码, 填写您的新密码, 加载失败, 点击授权登录您的客服工作台, 授权登录, 没有登录的code,请重新扫码, 员工人数, 邀请, 分佣比例, 修改分佣比例, 请输入百分比, 删除员工, 确定删除该员工?, 请输入比例, 分类, 我的, 姓名, 请输入联系电话, 所在地区, 详细地址, 设置为默认地址, 立即保存, 浙江省, 杭州市, 滨江区, 广东省, 广州市, 番禺区, 修改地址, 添加地址, 已取消!, 请填写联系电话, 保存中, 修改成功, 消费, 充值, 暂无账单的记录哦~, 点击【立即注销】即代表您已经同意《用户注销协议》, 立即注销, 是否确认注销, 注销后无法恢复,请谨慎操作, 注销, 持卡人, 请输入持卡人姓名, 卡号, 请填写卡号, 银行, 提现, 最低提现金额, 当前可提现金额, 冻结佣金, 说明: 每笔佣金的冻结期为, 天,到期后可提现, 账号, 请填写您的微信账号, 收款码, 请填写您的支付宝账号, 请选择银行, 银行卡, 微信, 支付宝, 请填写持卡人姓名, 请填写微信号, 请填写提现金额, 提现金额不能低于, 未使用, 已使用/过期, 通用劵, 一级分佣上浮, 二级分佣上浮, 快速升级技巧, 未完成, 已领完, 当前共, 取关, 请选择商品, 头像, 手机号码, 点击绑定手机号, ID号, 权限设置, 点击管理, 密码, 点击修改密码, 更换手机号码, 点击更换手机号码, 缓存大小, 当前版本, 地址管理, 发票管理, 账号注销, 注销后无法恢复, 累计积分, 累计消费, 冻结积分, 积分规则, 提示:积分数值的高低会直接影响您的会员等级, 提示:你有, 积分在, 过期,请尽快使用, 暂无积分记录哦~, 赚积分, 分值明细, 分值提升, 抬头类型, 增值税电子专用发票, 增值税电子普通发票, 需要开具发票的姓名, 需要开具发票的企业名称, 税号, 纳税人识别号, 手机号, 您的手机号, 邮箱, 您的联系邮箱, 开户银行, 您的开户银行, 银行账号, 您的银行账号, 企业地址, 您所在的企业地址, 企业电话, 您的企业电话, 设置为默认抬头, 保存, 发票类型选择, 纸质发票开出后将以邮寄形式交付, 请输入需要开具发票的姓名, 请输入您的手机号, 请正确输入您的手机号, 请输入您的联系邮箱, 请正确输入您的联系邮箱, 请输入需要开具发票的企业名称, 请输入纳税人识别号, 请正确输入纳税人识别号, 请输入您的开户银行, 请输入您的银行账号, 请正确输入您的银行账号, 请输入您所在的企业地址, 请输入您的企业电话, 发票记录, 抬头管理, 申请时间, 没有发票信息哟~, 个人普通发票, 企业普通发票, 企业专用发票, 添加新发票, 删除该发票?, 发票编号, 发票备注, 快递号, 总资产(元), 累计充值(元), 累计消费(元), 账单记录, 消费记录, 充值记录, 积分中心, 签到领积分, 赚积分抵现金, 领取优惠券, 满减享优惠, 最新拼团活动, 最新的优惠商品上架拼团, 立即参与, 当前限时秒杀, 最新商品秒杀进行中, 我的余额, 赠送, 其他, 注意事项, 冻结佣金为, 立即转入, 立即充值, 请输入金额, 转入余额, 转入余额后无法再次转出,确认是否转入余额, 转入成功, 正在支付, 充值金额必须为数字, 充值金额不能为0, 填写手机号码, 是否绑定账号, 绑定, 您已取消绑定!, 当前手机号, 设置新密码, 确认新密码, 手机号码不存在,无法发送验证码!, 请输入新密码, 两次输入的密码不一致!, 请输入验证码, 暂无退款订单~, 缺少订单号无法查看订单详情, 明细, 第七天, 第7天, 奖励, 已签到, 立即签到, 已累计签到, 据说连续签到第, 天可获得超额积分,一定要坚持签到哦~~~, 签到成功, 好的, 您今日已签到!, 暂无签到记录~, 保存海报, 长按保存图片, 分销海报, 小程序二维码需要发布正式版后才能获取到, 获取中, 暂无数据~, 提现记录, 提现总额, 佣金记录, 佣金明细, 分销等级, 昨日收益, 累积已提, 代理商申请, 立即提现, 推广名片, 推广人统计, 推广人订单, 推广订单, 事业部, 代理商, 推广人排行, 佣金排行, 员工列表, 您目前暂无推广权限, 商城购物可享, 折, 当前等级, 未达成, 今日成长值, 点, 我的成长值记录, 暂未解锁该等级, 点,需达到, 已解锁更高等级, 我的成长特权, 购物折扣, 专属徽章, 经验累积, 尊享客服, 签到, 可获得, 点经验, 每日签到可获得经验值,已签到, 去签到, 点经验/元, 购买商品可获得对应的经验值, 去购买, 点经验/人, 邀请好友注册商城可获得经验值, 去邀请, 积分数, 消费金额, 暂无经验记录, 账户登录, 微信登录, 手机号登录, 账户充值, 佣金转入, 周榜, 月榜, 周排行, 月排行, 语言切换, 点击前往, 查看全部, 查看订单, 无法获取图片信息, 长按或扫描查看, 点解锁, 确认修改, 保存修改, 退出登录, 付费会员, 地址信息, 我的推广, 砍价记录, 我的等级, 兑换, 申请中, 统计管理, 退款, 未发货, 当前为最新版本, 清除缓存, 确定清楚本地缓存数据吗, 缓存清理完成, 切换的账号不存在, 正在切换中, 确认退出登录, 我知道了, 系统错误, 请求失败, 邀请您加入, 图片上传中, 上传图片失败, 访问位置被拒绝, 系统定位已关闭, 需要定位权限, 订单核销, 当前可转入佣金为, 浏览记录, 签到奖励, 请输入内容, 单次限购, 永久限购, 《用户协议》, 《隐私协议》, 与, 请先阅读并同意协议, 绑定下级通知, 购买成功通知, 确认收货通知, 改价通知, 退款成功通知, 充值成功通知, 积分到账通知, 佣金到账通知, 砍价成功通知, 拼团成功通知, 拼团失败通知, 开团成功通知, 提现成功通知, 提现失败通知, 充值退款通知, 退款申请拒绝通知, 您有新的退款待处理, 您有新的订单待处理, 发货通知, 取消拼团通知, 参团成功通知, 你有个新的提现申请待处理, 你有个新的用户收货待处理, 提醒付款通知, 短信验证码, 到店自提, 快递配送, default */
  8694. /***/ (function(module) {
  8695. module.exports = JSON.parse("{\"选择地址\":\"주소 선택\",\"选择其它地址\":\"다른 주소 선택\",\"已选商品\":\"선택한 상품\",\"清空\":\"지우기\",\"¥\":\"₩\",\"已售罄\":\"매진\",\"已下架\":\"테이크다운\",\"删除\":\"삭제\",\"商品券\":\"제품\",\"品类券\":\"범주\",\"通用券\":\"일반\",\"优惠券\":\"상품권\",\"满\":\"전체\",\"元可用\":\"중고\",\"无门槛券\":\"임계값 없음\",\"领取后\":\"받기\",\"天内可用\":\"일 사용\",\"已领取\":\"받음\",\"立即领取\":\"얻다\",\"购物满\":\"지출\",\"减\":\"꺼짐\",\"不限时\":\"무제한 시간\",\"秒杀\":\"세킬\",\"砍价\":\"거래\",\"拼团\":\"그룹\",\"已售\":\"판매\",\"立即购买\":\"지금 구매\",\"加入购物车\":\"장바구니에 추가\",\"选规格\":\"옵션\",\"跳过\":\"다음\",\"立即体验\":\"지금 가세요\",\"首页\":\"집\",\"搜索\":\"검색\",\"购物车\":\"카트\",\"我的收藏\":\"수집\",\"个人中心\":\"내 것\",\"券\":\"보.\",\"正在加载中\":\"로드 중...\",\"上拉加载更多\":\"더 불러오기\",\"代付金额\":\"금액\",\"共\":\"총 \",\"件商品\":\"아이템\",\"订单包裹\":\"상품 주문\",\"申请退款中\":\"환불\",\"已退款\":\"환불\",\"已完成\":\"완료\",\"件退款中\":\"상품 환불\",\"不支持配送\":\"매장에서만\",\"不支持自提\":\"배송만\",\"已评价\":\"평가\",\"评价\":\"리뷰\",\"申请退款\":\"환불\",\"查看物流\":\"물류\",\"确认收货\":\"주문 받기\",\"选择付款方式\":\"지불 유형 선택\",\"支付\":\"지불\",\"去付款\":\"지불하다\",\"请选择要支付的订单\":\"주문 선택\",\"余额不足\":\"불충분한 균형\",\"支付中\":\"결제 중...\",\"缺少支付参数\":\"결제 매개변수 누락\",\"取消支付\":\"결제 취소\",\"支付成功\":\"결제 성공\",\"支付失败\":\"결제 실패\",\"库存\":\"재고\",\"限量\":\"한계\",\"数量\":\"수량\",\"我要参团\":\"그룹 가입\",\"确定\":\"알았어\",\"热门推荐\":\"핫 추천\",\"最高返佣\":\"최고\",\"推广享佣金\":\"승진\",\"立即分享\":\"지금 공유\",\"发现新版本\":\"새 버전\",\"立即升级\":\"업그레이드\",\"下载进度\":\"진행\",\"店小二\":\"웨이터\",\"暂无记录\":\"데이터 없음\",\"正在下载海报,请稍后再试\":\"포스터 다운로드 중, 나중에 다시 시도하세요\",\"海报二维码生成失败\":\"포스터 QR 코드 생성 실패\",\"倒计时\":\"카운트다운\",\"天\":\"디\",\"时\":\"하\",\"分\":\"엠\",\"秒\":\"S\",\"砍价成功\":\"협상 성공\",\"活动已结束\":\"활동 중지됨\",\"已砍至\":\"잘라내기\",\"活动进行中\":\"처리 중...\",\"取消活动\":\"취소\",\"继续砍价\":\"계속\",\"暂无砍价记录\":\"데이터 없음\",\"人正在参与\":\"참여\",\"最低\":\"최저\",\"参与砍价\":\"거래\",\"砍价列表\":\"거래 목록\",\"人查看\":\"보기\",\"人分享\":\"공유\",\"人参与\":\"관여\",\"邀请您帮忙砍价\":\"도와주세요\",\"查看商品\":\"항목 보기\",\"当前\":\"현재\",\"已砍\":\"다진\",\"还剩\":\"왼쪽\",\"立即参与砍价\":\"지금 흥정\",\"商品暂无库存\":\"재고 없음\",\"邀请好友帮砍价\":\"친구 초대하기\",\"已有\":\"가지고\",\"位好友成功砍价\":\"친구 성공\",\"帮好友砍一刀\":\"친구를 도와주세요\",\"好友已砍价成功\":\"친구는 이미 성공했습니다\",\"我也要参与\":\"참여하겠습니다\",\"已成功帮助好友砍价\":\"친구의 성공을 도와주세요\",\"恭喜您砍价成功,快去支付\":\"교섭 성공, 지불하기\",\"立即支付\":\"지금 지불\",\"抢更多商品\":\"더 잡기\",\"砍价帮\":\"협상 갱\",\"砍掉\":\"차단\",\"更多\":\"더\",\"关闭\":\"닫기\",\"点击加载更多\":\"더 로드하려면 클릭하세요\",\"商品详情\":\"세부 사항\",\"砍价规则\":\"거래 규칙\",\"您已砍掉\":\"잘랐어요\",\"元,听说分享次数越多砍价成功的机会越大哦\":\", 더 많이 나눌수록 성공적인 교섭의 기회가 커집니다\",\"成功帮砍\":\"잘라내기 성공\",\"您也可以砍价低价拿哦,快去挑选心仪的商品吧\":\"저렴한 가격에 흥정도 할 수 있고, 마음에 드는 상품 골라서 가세요\",\"发送给朋友\":\"친구 보내기\",\"微信好友\":\"위챗 친구\",\"微信朋友圈\":\"위챗 모멘트\",\"生成海报\":\"포스터 생성\",\"砍价详情\":\"할인 정보\",\"分享成功\":\"공유 성공\",\"分享失败\":\"공유 실패\",\"该商品每人限购\":\"본 상품은 1인 구매 한정 상품입니다\",\"您的好友\":\"당신의 친구\",\"邀请您砍价\":\"초대장 컷\",\"人团\":\"사람\",\"去拼团\":\"가서\",\"拼团列表\":\"그룹 목록\",\"类型\":\"유형\",\"累计销量\":\"총 판매\",\"限购\":\"한계\",\"种规格可选\":\"사양\",\"已拼\":\"철자\",\"件\":\"조각\",\"还差\":\"오직\",\"人成团\":\"성공\",\"去拼单\":\"가입\",\"查看更多\":\"더\",\"收起\":\"치워 버리다\",\"拼团玩法\":\"그룹 프로세스\",\"开团/参团\":\"시작\",\"邀请好友\":\"초대\",\"满员发货\":\"배달\",\"用户评价\":\"검토\",\"好评率\":\"찬양율\",\"产品介绍\":\"세부 사항\",\"单独购买\":\"혼자 구매\",\"立即开团\":\"그룹 시작\",\"请选择\":\"선택됨\",\"商品\":\"제품\",\"详情\":\"세부 사항\",\"缺少参数无法查看商品\":\"매개변수가 누락되어 제품을 볼 수 없습니다\",\"参数错误\":\"매개변수 오류\",\"已选择\":\"선택됨\",\"保存成功\":\"저장된 성공\",\"保存失败\":\"저장 실패\",\"人拼\":\"사람들이 싸우다\",\"剩余\":\"남은\",\"结束\":\"마침\",\"恭喜您拼团成功\":\"합격 축하합니다\",\"人,拼团失败\":\"사람이 남음, 그룹 실패\",\"拼团中,还差\":\"그룹에 아직 이 있습니다.\",\"人拼团成功\":\"그룹에 성공적으로 합류하기 위해 남은 사람\",\"邀请好友参团\":\"그룹에 가입할 친구 초대\",\"再次开团\":\"재그룹\",\"取消开团\":\"취소\",\"查看订单信息\":\"주문 보기\",\"大家都在拼\":\"모든 그룹\",\"更多拼团\":\"더\",\"邀请您参团\":\"당신을 초대합니다\",\"你不是该团的成员\":\"당신은 그룹의 구성원이 아닙니다\",\"已抢\":\"강탈\",\"抢购中\":\"지금 잡아\",\"未开始\":\"시작되지 않음\",\"已结束\":\"오버\",\"暂无商品,去看点别的吧\":\"제품 없음\",\"即将开始\":\"시작되지 않음\",\"距秒杀结束仅剩\":\"끝까지 남았습니다\",\"累计销售\":\"매진\",\"收藏\":\"수집\",\"保存到手机\":\"전화에 저장\",\"长按图片可以保存到手机\":\"전화에 저장하려면 길게 누르세요\",\"抢购详情页\":\"스냅 구매 세부 정보 페이지\",\"二维码获取失败\":\"QR 코드 가져오기 실패\",\"请选择属性\":\"속성을 선택하십시오\",\"提示:点击图片即可保存至手机相册\":\"팁: 사진을 클릭하시면 폰앨범에 저장됩니다\",\"拼团海报\":\"퍼즐 포스터\",\"砍价海报\":\"흥정 포스터\",\"海报生成中\":\"포스터 생성 중\",\"海报图片获取失败\":\"포스터 이미지 가져오기 실패\",\"海报\":\"포스터\",\"已预定\":\"예약됨\",\"预售价\":\"예약판매\",\"立即预定\":\"지금 예약\",\"开售时间\":\"세일 시간\",\"预售活动\":\"선판매 이벤트\",\"起\":\"일어나다\",\"划线价\":\"오피\",\"开通“超级会员”立省\":\"'Super Member'를 해제하려면 \",\"元\":\"₩\",\"立即开通\":\"지금 활성화\",\"预售活动时间\":\"선판매 시간\",\"预售结束后\":\"내 배송\",\"天内发货\":\"선판매 종료 후 일\",\"活动\":\"활동\",\"参与秒杀\":\"세킬\",\"参与拼团\":\"그룹\",\"复制口令\":\"상품 코드 복사\",\"复制成功\":\"복사 성공\",\"推荐\":\"권장\",\"缺少经纬度信息无法查看地图\":\"위도 및 경도 정보가 누락되어 지도를 볼 수 없습니다\",\"产品库存不足,请选择其它属性\":\"제품 재고가 충분하지 않습니다. 다른 속성을 선택하세요.\",\"立即退款\":\"즉시 환불\",\"一键改价\":\"가격 변경\",\"订单备注\":\"주문 메모\",\"商品总价\":\"총 가격\",\"原始邮费\":\"오래된 우표\",\"实际支付\":\"실제 가격\",\"退款金额\":\"환불 가격\",\"请填写备注信息\":\"비고란에 기입해주세요\",\"立即修改\":\"지금 편집\",\"确认退款\":\"환불 확인\",\"拒绝退款\":\"환불 거부\",\"取消\":\"취소\",\"订单号\":\"주문 ID\",\"发货方式\":\"모드\",\"发货类型\":\"배송 유형\",\"快递公司\":\"익스프레스\",\"快递单号\":\"숫자\",\"顺丰请输入单号 :收件人或寄件人手机号后四位\":\"SF Express에 대한 추적 번호를 입력하십시오: 받는 사람 또는 보낸 사람의 휴대 전화 번호의 마지막 4자리\",\"例如:SF000000000000:3941\":\"예: SF000000000000:3941\",\"电子面单\":\"전자 시트\",\"预览\":\"미리보기\",\"寄件人姓名\":\"발신자 이름\",\"填写寄件人姓名\":\"발신자 이름 입력\",\"寄件人电话\":\"발신자 전화\",\"填写寄件人电话\":\"발신자 전화번호 입력\",\"寄件人地址\":\"발신자 주소\",\"填写寄件人地址\":\"발신자 주소 입력\",\"送货人\":\"배달맨\",\"确认提交\":\"제출\",\"发货\":\"배\",\"送货\":\"주다\",\"无需物流\":\"필요 없음\",\"手动填写\":\"수동으로 채우기\",\"电子面单打印\":\"전자 시트\",\"填写快递单号\":\"택배 번호를 입력하세요\",\"请选择电子面单\":\"전자영수증을 선택하세요\",\"待付款\":\"지불하다\",\"待发货\":\"배송\",\"待收货\":\"받다\",\"待评价\":\"평가\",\"售后/退款\":\"환불\",\"数据统计\":\"통계\",\"今日成交额\":\"오늘 판매\",\"昨日成交额\":\"어제 판매\",\"本月成交额\":\"판매된 달\",\"今日订单数\":\"오늘 주문\",\"昨日订单数\":\"어제 주문\",\"本月订单数\":\"월 주문\",\"详细数据\":\"상세 데이터\",\"日期\":\"날짜\",\"订单数\":\"주문 수\",\"成交额\":\"회전율\",\"立即核销\":\"지금 당장 쓰세요\",\"查看\":\"보기\",\"确定要核销此订单吗\":\"이 주문을 취소하시겠습니까?\",\"确定核销\":\"확인\",\"请输入核销码\":\"인증번호를 입력하세요\",\"请输入正确的核销码\":\"올바른 인증번호를 입력하세요\",\"查询中\":\"질의\",\"订单\":\"주문\",\"订单未备注,点击添加备注信息\":\"주문에 비고가 없습니다. 비고를 추가하려면 클릭하세요.\",\"复制\":\"복사\",\"件商品,应支付\":\"항목, 지불해야 \",\"邮费\":\"우송료\",\"订单编号\":\"주문 ID\",\"下单时间\":\"주문 시간\",\"支付状态\":\"결제 상태\",\"已支付\":\"유료\",\"未支付\":\"무급\",\"支付方式\":\"결제수단\",\"买家留言\":\"구매자 MSG\",\"支付金额\":\"결제 금액\",\"优惠券抵扣\":\"쿠폰 공제\",\"运费\":\"운임\",\"实付款\":\"실제 금액\",\"配送方式\":\"배달 방법\",\"快递\":\"익스프레스\",\"送货人电话\":\"택배전화\",\"确认付款\":\"결제 확인\",\"去发货\":\"배송\",\"改价成功\":\"가격이 성공적으로 변경되었습니다\",\"改价失败\":\"가격 변경 실패\",\"请输入备注\":\"메모를 입력하세요\",\"退款中\":\"환불\",\"部分退款中\":\"부분 환불\",\"件商品,实付款\":\"상품, 지불\",\"同意退货\":\"반환 동의\",\"待用户发货\":\"배송되지 않음\",\"请输入正确的金额\":\"정확한 금액을 입력하세요\",\"今天\":\"오늘\",\"昨天\":\"어제\",\"最近7天\":\"지난 7일\",\"本月\":\"월\",\"自定义\":\"맞춤화\",\"营业额(元)\":\"회전율\",\"订单量(份)\":\"수량\",\"增长率\":\"상승률\",\"增长\":\"증가\",\"单位\":\"단위\",\"元.\":\"위안\",\"分.\":\"센트\",\"固定\":\"고정\",\"指定范围\":\"범위\",\"提交时间\":\"제출 시간\",\"原因\":\"이유\",\"暂无申请记录,快去申请吧!\":\"아직 신청 기록이 없습니다. 지금 신청하세요!\",\"没有更多啦\":\"더 이상\",\"待审核\":\"검토 대기 중\",\"审核通过\":\"검토 통과\",\"审核未通过\":\"검토 실패\",\"编辑\":\"편집\",\"重新提交\":\"다시 제출\",\"会员优惠价\":\"VIP 할인\",\"余额支付\":\"잔액 지급\",\"可用余额\":\"균형\",\"微信支付\":\"위챗페이\",\"确认\":\"확인\",\"支付提醒\":\"결제 알림\",\"线下支付已关闭,请点击确认按钮返回主页\":\"오프라인 결제가 종료되었습니다. 확인 버튼을 눌러 홈페이지로 돌아가주세요\",\"请输入支付金额\":\"결제 금액을 입력하세요\",\"正在确认\":\"확인\",\"进入商城\":\"몰 들어가다\",\"代理商名称\":\"에이전시 이름\",\"请输入代理商名称\":\"에이전시 이름을 입력하세요\",\"用户姓名\":\"당신의 이름\",\"请输入姓名\":\"이름을 입력하세요\",\"联系电话\":\"당신의 전화\",\"请输入手机号\":\"전화번호를 입력하세요\",\"验证码\":\"OTP 코드\",\"填写验证码\":\"OTP 코드 입력\",\"邀请码\":\"초대 코드\",\"请输入代理商邀请码\":\"초대 코드 입력\",\"请上传营业执照及行业相关资质证明图片\":\"사업자등록증 및 산업관련 자격증 사진을 올려주세요\",\"图片最多可上传10张,图片格式支持JPG、PNG、JPEG\":\"최대 10장의 사진을 업로드할 수 있으며 사진 형식은 JPG, PNG, JPEG를 지원합니다\",\"上传图片\":\"업로드\",\"已阅读并同意\":\"읽기 및 동의\",\"代理商协议\":\"에이전시 계약\",\"提交申请\":\"지원서 제출\",\"代理商入驻协议\":\"에이전트 계약\",\"恭喜,您的资料提交成功!\":\"축하합니다. 성공적으로 제출되었습니다!\",\"返回首页\":\"집으로 돌아가다\",\"恭喜,您的资料通过审核!\":\"축하합니다. 검토가 통과되었습니다!\",\"您的申请未通过!\":\"신청이 거부되었습니다!\",\"重新申请\":\"재신청\",\"获取验证码\":\"OTP 코드 받기\",\"请输入正确的手机号码\":\"올바른 전화번호를 입력하세요\",\"重新获取\":\"재획득\",\"请上传营业执照\":\"사업 허가증을 업로드하십시오\",\"请勾选并同意入驻协议\":\"점령 동의서에 체크하고 동의해주세요\",\"专题栏\":\"주제 열\",\"暂无数据\":\"데이터 없음\",\"请输入卡号\":\"카드번호를 입력하세요\",\"请输入卡密\":\"비밀번호를 입력하세요\",\"确认激活\":\"확인\",\"SVIP会员尊享权\":\"SVIP 회원 권한\",\"正在激活\":\"활성화\",\"已使用\":\"중고\",\"永久SVIP会员\":\"영구 SVIP 회원\",\"SVIP会员\":\"SVIP 회원\",\"到期\":\"성숙\",\"您与\":\"너와 함께\",\"商城的第\":\"몰\",\"天.\":\"일.\",\"已累积为您节省\":\"당신을 위한 축적된 저축\",\"开通即享会员权益\":\"회원 혜택 누리기\",\"续费会员\":\"갱신\",\"开通会员\":\"SVIP 가입\",\"有效期至\":\"다음까지 유효함\",\"试用\":\"시도하다\",\"购买即视为同意\":\"동의로 구매\",\"会员用户协议\":\"SVIP 계약\",\"点击兑换卡密\":\"카드를 사용하려면 클릭\",\"会员优惠券\":\"SVIP 쿠폰\",\"SVIP商品推荐\":\"SVIP 추천\",\"商城价\":\"몰 가격\",\"激活会员卡\":\"카드 활성화\",\"支付宝支付\":\"알리페이\",\"成功开启0元试用\":\"0원 체험판 성공적으로 열림\",\"确认绑定\":\"바인딩 확인\",\"绑定成功\":\"바인딩 성공\",\"商城客服已离线\":\"고객 서비스가 오프라인 상태입니다\",\"我要反馈\":\"피드백을 원합니다\",\"请填写内容\":\"내용을 채워주세요\",\"提交\":\"제출\",\"精品推荐\":\"권장\",\"热门榜单\":\"인기\",\"首发新品\":\"신규\",\"促销单品\":\"프로모션\",\"预告\":\"공지\",\"回放\":\"재생\",\"进行中\":\"처리 중\",\"发送客服\":\"보내기\",\"客服连接中\":\"고객센터 연결 중\",\"连接失败\":\"연결 실패\",\"提示\":\"힌트\",\"客服已下线,是否需要反馈?\":\"고객 서비스가 오프라인 상태입니다. 피드백이 필요하십니까?\",\"和好友一起分享\":\"친구와 공유\",\"积分抵扣\":\"포인트 공제\",\"已开票\":\"청구됨\",\"未开票\":\"청구되지 않음\",\"发票信息\":\"인보이스 정보\",\"发票抬头\":\"송장\",\"发票抬头类型\":\"송장 헤더 유형\",\"个人\":\"퍼\",\"企业\":\"컴\",\"发票类型\":\"송장 유형\",\"电子普通发票\":\"전자 일반 송장\",\"电子专用发票\":\"전자 특별 송장\",\"企业税号\":\"기업세\",\"联系信息\":\"연락처 정보\",\"真实姓名\":\"실명\",\"联系邮箱\":\"이메일\",\"抬头选择\":\"머리 선택\",\"默认\":\"기본\",\"普通\":\"보통\",\"专用\":\"헌신\",\"您还没有添加发票信息哟\":\"인보이스 정보를 추가하지 않았습니다\",\"添加新的抬头\":\"새 헤더 추가\",\"不开发票\":\"인보이스 없음\",\"抽奖\":\"복권\",\"全选\":\"모두 선택\",\"属性\":\"속성\",\"请填写具体地址\":\"특정 주소를 입력하세요\",\"省\":\"도\",\"市\":\"도시\",\"区\":\"영역\",\"添加成功\":\"성공적으로 추가\",\"您已拒绝导入微信地址权限\":\"WeChat 주소 가져오기 권한을 거부했습니다\",\"是否进入权限管理,调整授权?\":\"권한관리 들어가셔서 권한조정 하시나요?\",\"已取消\":\"취소됨\",\"添加失败\":\"추가 실패\",\"请填写收货人姓名\":\"수하인의 이름을 입력하세요\",\"请选择所在地区\":\"지역을 선택하세요\",\"请填写详细地址\":\"자세한 주소를 입력하세요\",\"星\":\"별\",\"商品满足你的期待么?说说你的想法,分享给想买的他们吧\":\"제품이 당신의 기대에 부응합니까? 당신의 생각을 말해주고 그것을 사고 싶은 사람들과 공유하십시오\",\"立即评价\":\"지금 평가\",\"商品质量\":\"제품 품질\",\"服务态度\":\"서비스 태도\",\"缺少参数\":\"누락된 매개변수\",\"请填写你对宝贝的心得\":\"제품에 대한 의견을 작성해주세요\",\"正在发布评论\":\"댓글 게시\",\"感谢您的评价\":\"리뷰 감사합니다\",\"评价完成\":\"검토 완료\",\"恭喜您\":\"축하합니다\",\"获得\":\"얻다\",\"机会\":\"기회\",\"领取成功\":\"성공적으로 받았습니다\",\"评分\":\"점수\",\"全部\":\"모두\",\"好评\":\"찬양\",\"中评\":\"평균\",\"差评\":\"나쁜\",\"加载更多\":\"더 불러오기\",\"千米距离\":\"킬로미터 떨어져\",\"搜索商品名称\":\"상품 검색\",\"价格\":\"가격\",\"销量\":\"매진\",\"新品\":\"신규\",\"已全部加载\":\"모두 로드됨\",\"缺少订单号\":\"주문 ID 누락\",\"退货件数\":\"환급 번호\",\"退款类型\":\"환불 유형\",\"退款原因\":\"환불 사유\",\"备注说明\":\"비고\",\"填写备注信息,100字以内\":\"100단어 이내 비고\",\"仅退款\":\"환불만\",\"退货并退款\":\"반품 및 환불\",\"申请成功\":\"적용 성공\",\"请先选择退货商品\":\"반품 항목을 먼저 선택하세요\",\"搜索历史\":\"검색 기록\",\"热门搜索\":\"핫 서치\",\"请输入要搜索的商品\":\"검색할 상품을 입력하세요\",\"正在搜索中\":\"검색 중\",\"中奖记录\":\"우승 기록\",\"我的奖品\":\"나의 상\",\"活动规则\":\"활동 규칙\",\"昵称\":\"닉네임\",\"序号\":\"직렬\",\"奖品名称\":\"상 이름\",\"获奖时间\":\"승리의 시간\",\"商家暂未上架活动哦\":\"판매자가 아직 이벤트를 등록하지 않았습니다\",\"获取抽奖信息\":\"경품 정보 얻기\",\"奖品类型\":\"상금 종류\",\"立即兑换\":\"지금 사용\",\"兑换时间\":\"시간 교환\",\"暂无中奖记录\":\"승리 기록 없음\",\"积分\":\"포인트\",\"余额\":\"균형\",\"红包\":\"현금\",\"设置收货地址\":\"배송 주소 설정\",\"暂无门店信息\":\"상점 정보 없음\",\"剩余积分\":\"나머지 포인트\",\"当前积分\":\"현재 포인트\",\"开具发票\":\"인보이스\",\"请填写\":\"채워주세요\",\"配送运费\":\"배송비\",\"会员商品优惠\":\"제품 제안\",\"会员运费优惠\":\"배송 제안\",\"合计\":\"총계\",\"使用微信快捷支付\":\"위챗 간편결제\",\"使用支付宝支付\":\"알리페이로 ​​결제\",\"线下支付\":\"오프라인 결제\",\"使用线下付款\":\"오프라인 결제 사용\",\"好友代付\":\"친구 지불\",\"找微信好友支付\":\"결제할 친구 찾기\",\"立即使用\":\"사용\",\"请选择要购买的商品\":\"구매할 아이템을 선택하세요\",\"发票\":\"송장\",\"不使用\":\"사용하지 마세요\",\"订单创建成功\":\"성공적으로 생성된 주문\",\"请选择支付方式\":\"결제 수단을 선택하세요\",\"请选择收货地址\":\"배송 주소를 선택하세요\",\"请填写联系人或联系人电话\":\"연락처 또는 연락 가능한 전화번호를 입력하세요\",\"暂无门店,请选择其他方式\":\"현재 매장이 없습니다. 다른 방법을 선택하세요\",\"请输入\":\"입력하세요\",\"请输入正确的\":\"올바른 것을 입력하세요\",\"请上传\":\"업로드하세요\",\"订单支付中\":\"결제\",\"请按以上退货信息将商品退回\":\"정보와 함께 항목을 반환하십시오\",\"请联系管理员获取退货地址\":\"반품 주소는 관리자에게 문의하세요\",\"待核销\":\"폐쇄\",\"核销信息\":\"상각 정보\",\"营业时间\":\"영업시간\",\"每日\":\"매일\",\"使用说明\":\"사용 지침\",\"可将二维码出示给店员扫描或提供数字核销码\":\"QR 코드를 점원에게 제시하여 스캔하거나 디지털 인증 코드를 제공할 수 있음\",\"可将二维码出示给配送员进行核销\":\"QR코드를 택배사에 제시하면 확인 가능\",\"查看位置\":\"위치 보기\",\"拒绝原因\":\"거부 이유\",\"联系客服\":\"연락처\",\"商家备注\":\"상인 메모\",\"收货人\":\"수신자\",\"收货地址\":\"배송 주소\",\"配送人姓名\":\"선명\",\"拨打\":\"전화\",\"虚拟发货\":\"가상 선박\",\"已发货,请注意查收\":\"배송되었습니다, 확인해주세요\",\"虚拟备注\":\"가상 메모\",\"总代付\":\"총 금액\",\"申请开票\":\"인보이스 적용\",\"查看发票\":\"인보이스 보기\",\"取消订单\":\"취소\",\"立即付款\":\"지불하다\",\"批量退款\":\"대량 환불\",\"查看拼团\":\"그룹 보기\",\"再次购买\":\"재구매\",\"取消申请\":\"신청 취소\",\"填写退货信息\":\"반환 정보\",\"查看退货物流\":\"물류\",\"您确认放弃此次申请吗\":\"이 응용 프로그램을 중단하시겠습니까?\",\"操作成功\":\"성공적인 작업\",\"订单信息不存在\":\"주문 정보가 존재하지 않습니다\",\"为保障权益,请收到货确认无误后,再确认收货\":\"권익 보호를 위해 상품이 맞는지 확인하신 후 상품 수령을 확인해주세요.\",\"删除订单\":\"주문 삭제\",\"确定删除该订单\":\"삭제 순서 확인\",\"删除成功\":\"성공적으로 삭제됨\",\"确认取消该订单\":\"주문 취소 확인\",\"订单信息\":\"주문 정보\",\"消费订单\":\"주문\",\"总消费\":\"총 금액\",\"预售\":\"예약판매\",\"线下付款,未支付\":\"오프라인 미결제\",\"未核销\":\"기록되지 않음\",\"件商品,总金额\":\"항목, 총 금액 \",\"查看详情\":\"보기\",\"暂无订单\":\"아직 주문이 없습니다\",\"缺少订单号无法取消订单\":\"주문번호가 없으면 주문을 취소할 수 없습니다\",\"订单支付成功\":\"주문 결제 성공\",\"订单支付失败\":\"주문 결제 실패\",\"暂未支付\":\"아직 지불되지 않음\",\"失败原因\":\"실패한 이유\",\"重新购买\":\"재구매\",\"重新支付\":\"다시 지불\",\"赠送优惠券\":\"쿠폰 증정\",\"有效期\":\"유효성\",\"缺少参数无法查看订单支付状态\":\"누락된 매개변수는 주문 결제 상태를 볼 수 없습니다\",\"最多可上传3张\":\"최대 3개 업로드\",\"请选择产品\":\"상품을 선택하세요\",\"该产品没有更多库存了\":\"이 제품에 대한 재고가 더 이상 없습니다\",\"优品推荐\":\"최고의 추천\",\"暂无产品\":\"아직 제품이 없습니다\",\"重新选择\":\"재선택\",\"请选择数量\":\"수량을 선택하세요\",\"砍价专区·BARGAINING\":\"교섭\",\"立即砍价\":\"지금 자르기\",\"拼团活动\":\"그룹\",\"人拼团成功.\":\"사람들이 성공했습니다\",\"人参团\":\"인삼군\",\"拼团价\":\"그룹 가격\",\"已过期\":\"만료\",\"关注\":\"팔로우\",\"推荐好货\":\"상품 추천\",\"暂无商品\":\"아직 제품이 없습니다\",\"限时秒杀\":\"시간 제한 스파이크\",\"抢\":\"잡다\",\"广告位\":\"ADV 공간\",\"精彩内容\":\"하이라이트\",\"砍价模块,暂无数据\":\"거래 모듈, 아직 데이터 없음\",\"砍价活动\":\"거래\",\"呼朋唤友来砍价\":\"친구에게 전화 걸기 흥정\",\"拼团模块,暂无数据\":\"그룹 모듈, 아직 데이터 없음\",\"享超值开团价\":\"가성비 좋은 단체 요금을 즐기세요\",\"优惠券,暂无数据\":\"쿠폰, 일시적으로 데이터 없음\",\"领取今日好券\":\"오늘의 좋은 쿠폰 받기\",\"可用\":\"중고\",\"领取\":\"주장\",\"客服\":\"서비스\",\"商品列表,暂无数据\":\"임시 데이터 없음\",\"搜索商品\":\"상품 검색\",\"暂无图片,请上传图片\":\"사진이 없습니다. 업로드하세요\",\"首发新品,暂无数据\":\"첫 번째 신제품, 아직 데이터 없음\",\"多个优质商品最新上架\":\"선반에 있는 최신 고품질 상품\",\"暂无新闻,请上传新闻\":\"뉴스가 없습니다. 뉴스를 업로드하세요\",\"热度 TOP\":\"히트 탑\",\"排行榜、暂无数据\":\"리더보드, 일시적으로 데이터 없음\",\"促销单品,暂无数据\":\"프로모션 아이템, 일시적으로 데이터 없음\",\"库存商品优惠促销活动\":\"재고품 판촉활동\",\"精品推荐,暂无数据\":\"부티크 추천, 아직 데이터 없음\",\"上百种商品分类任您选择\":\"선택할 수 있는 수백 개의 제품 카테고리\",\"秒杀模块,暂无数据\":\"Seckill 모듈, 일시적으로 데이터 없음\",\"场\":\"사이트\",\"暂无数据,请设置\":\"데이터가 없습니다. 설정하세요\",\"暂无数据,请先添加分类\":\"데이터가 없습니다. 먼저 분류를 추가하십시오\",\"暂无标题\":\"임시 제목 없음\",\"诚意推荐品质商品\":\"좋은 품질의 상품을 선의로 추천\",\"点击“立即关注”即可关注公众号\":\"공식 계정을 팔로우하려면 \\\"지금 팔로우\\\"를 클릭하세요\",\"立即关注\":\"지금 팔로우\",\"添加到我的小程序, 微信首页下拉即可访问商城。\":\"내 애플릿에 추가하고 위챗 홈페이지를 내리면 쇼핑몰에 접속할 수 있습니다\",\"点击\":\"클릭\",\"服务协议与隐私政策\":\"서비스 동의 및 개인 정보 보호 정책\",\"请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。\":\"인스턴트 메시징, 콘텐츠 공유 및 기타 서비스를 제공하기 위해 귀하의 기기를 수집해야 합니다. 개인정보 조회, 변경, 삭제, 권한 관리는 설정에서 하실 수 있습니다.\",\"你可以阅读\":\"당신은 읽을 수 있습니다\",\"《服务协议与隐私政策》\":\"\\\"서비스 동의 및 개인 정보 보호 정책\\\"\",\"了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。\":\"자세히 알아보기. 동의하면 서비스 수락을 시작하는 데 동의합니다를 클릭하세요.\",\"我同意\":\"동의합니다\",\"残忍拒绝\":\"잔인한 거절\",\"下拉加载更多\":\"더 많이 내리기\",\"网络连接断开\":\"네트워크 연결이 끊어졌습니다\",\"请检查情况:\":\"상태를 확인하십시오:\",\"在设置中是否已开启网络权限\":\"설정에서 네트워크 권한이 활성화되었는지 여부\",\"当前是否处于弱网环境\":\"현재 네트워크 환경이 취약합니다\",\"版本是否过低,升级试试吧\":\"버전이 너무 낮으면 업그레이드 해보세요\",\"重新连接\":\"다시 연결\",\"加载中\":\"로드 중\",\"没有更多内容啦~\":\"더 이상 콘텐츠가 없습니다~\",\"100%正品保证\":\"100% 정품\",\"所有商品精挑细选\":\"매우 까다롭습니다\",\"售后无忧\":\"판매 후 걱정하지 마세요\",\"管理\":\"튜브\",\"购物数量\":\"쇼핑 수량\",\"请重新选择商品规格\":\"제품 사양을 다시 선택하십시오\",\"重选\":\"재선택\",\"失效商品\":\"잘못된 상품\",\"失效\":\"실패\",\"该商品已失效\":\"상품이 만료되었습니다\",\"立即下单\":\"지금 주문\",\"我也是有底线的\":\"나에게도 결론이 있습니다\",\"产品库存不足,请选择其它\":\"상품 재고가 부족합니다. 다른 상품을 선택하세요\",\"添加购物车成功\":\"장바구니 추가 성공\",\"清除成功\":\"정리 성공\",\"暂无兑换记录~\":\"교환 기록이 없습니다~\",\"大家都在换\":\"모두가 변하고 있습니다\",\"人兑换\":\"사람 교환\",\"轻松赚积分\":\"쉽게 포인트 적립\",\"购买商品\":\"상품 구매\",\"购买商品可获得积分奖励\":\"상품 구매에 대한 포인트 보상\",\"去完成\":\"가서\",\"每日签到活动\":\"매일 체크인 활동\",\"每日签到可获得积分奖励\":\"매일 출석체크하면 포인트 적립 가능\",\"九宫格抽奖活动\":\"주공게 복권\",\"幸运抽奖可获得积分奖励\":\"럭키드로우는 포인트 보상을 받을 수 있습니다\",\"我的积分\":\"내 포인트\",\"每日签到\":\"일일 로그인\",\"积分抽奖\":\"포인트 추첨\",\"兑换记录\":\"교환 기록\",\"已兑换\":\"구속됨\",\"无法兑换\":\"교환할 수 없음\",\"[默认]\":\"[기본값]\",\"可用积分\":\"사용 가능한 포인트\",\"快递费用\":\"특급 요금\",\"免运费\":\"무료\",\"备注信息\":\"비고\",\"请添加备注(150字以内)\":\"비고를 추가해주세요(150단어 이내)\",\"使用线上支付宝支付\":\"온라인 알리페이로 ​​결제\",\"可用余额:\":\"균형:\",\"选择线下付款方式\":\"오프라인 결제 수단 선택\",\"正在加载…\":\"로드 중...\",\"可用积分不足!\":\"사용 가능한 포인트가 부족합니다!\",\"订单状态\":\"주문 상태\",\"支付积分\":\"포인트 지불\",\"备注\":\"비고\",\"配送核销码\":\"배송확인코드\",\"当前可用余额:\":\"현재 사용 가능한 잔액:\",\"正在加载\":\"로드 중\",\"缺少经纬度信息无法查看地图!\":\"경도와 위도 정보가 없으면 지도를 볼 수 없습니다! \",\"商品兑换成功\":\"성공적으로 사용됨\",\"兑换方式\":\"교환 방법\",\"积分兑换\":\"포인트 교환\",\"兑换积分\":\"포인트 사용\",\"取消兑换\":\"교환 취소\",\"缺少参数无法查看订单兑换状态\":\"매개변수 없이 주문 교환 상태를 볼 수 없습니다\",\"用户离开了\":\"사용자가 떠났습니다\",\"兑换成功\":\"성공적으로 구속됨\",\"物流公司\":\"물류회사\",\"复制单号\":\"문서 번호 복사\",\"设为默认\":\"기본값으로 설정\",\"添加新地址\":\"새 주소 추가\",\"导入微信地址\":\"위챗 주소 가져오기\",\"取消选择\":\"선택 해제\",\"您设置的默认地址不存在!\":\"설정한 기본 주소가 존재하지 않습니다!\",\"设置成功\":\"설정 성공\",\"您删除的地址不存在!\":\"삭제한 주소가 존재하지 않습니다!\",\"获取头像\":\"아바타 얻기\",\"请点击授权\":\"승인을 클릭하십시오\",\"绑定手机号\":\"휴대전화 번호 묶기\",\"永久\":\"영구\",\"会员到期\":\"멤버십 만료\",\"未开通会员\":\"열린 회원이 아닙니다\",\"查看会员权益\":\"멤버십 혜택 보기\",\"立即续费\":\"갱신\",\"立即激活\":\"활성화\",\"会员可享多项权益\":\"여러가지 혜택을 누리세요\",\"订单中心\":\"내 주문\",\"我的服务\":\"나의 서비스\",\"隐私协议\":\"프라이버시\",\"商家管理\":\"경영\",\"更新用户信息成功\":\"성공적으로 업데이트된 사용자 정보\",\"客服接待\":\"접수\",\"点击复制网址去浏览器中打开\":\"브라우저에서 열려면 URL 복사를 클릭하세요\",\"点击复制\":\"복사 클릭\",\"完成支付\":\"결제 완료\",\"点击右上角\":\"오른쪽 상단을 클릭하세요\",\"选择 在浏览器 打开,去支付宝支付\":\"브라우저에서 열고 알리페이로 ​​결제하려면 선택\",\"支付订单不存在,页面将在2秒后自动关闭!\":\"결제 주문이 존재하지 않으며, 2초 후에 페이지가 자동으로 닫힙니다!\",\"正在支付中\":\"결제\",\"支付订单不存在,页面将在2秒后自动关闭\":\"결제 주문이 존재하지 않으며, 2초 후에 페이지가 자동으로 닫힙니다\",\"复制失败\":\"복제 실패\",\"您目前的排名\":\"현재 순위\",\"您目前暂无排名\":\"현재 순위를 매겼습니다\",\"暂无排名~\":\"순위 없음~\",\"输入手机号\":\"휴대전화 번호 입력\",\"输入验证码\":\"인증 코드 입력\",\"立即登录\":\"지금 로그인\",\"请填写手机号码\":\"휴대전화 번호를 입력하세요\",\"请填写验证码\":\"인증번호를 입력하세요\",\"请输入正确的验证码\":\"올바른 인증번호를 입력하세요\",\"正在登录中\":\"로그인\",\"登录成功\":\"로그인 성공\",\"获取授权\":\"승인 받기\",\"获取微信的手机号授权\":\"위챗 휴대폰 번호 인증 받기\",\"获取微信手机号\":\"위챗 휴대폰 번호 받기\",\"输入手机号码\":\"휴대전화 번호 입력\",\"填写登录密码\":\"로그인 비밀번호 입력\",\"登录\":\"로그인\",\"快速登录\":\"빠른 로그인\",\"账号登录\":\"계정 로그인\",\"其他方式登录\":\"다른 방법으로 로그인\",\"登录中\":\"로그인\",\"获取用户信息失败\":\"사용자 정보 획득 실패\",\"请绑定手机号后,继续操作\":\"휴대전화 번호를 묶고 작업을 계속하십시오\",\"错误信息\":\"오류 정보\",\"用户点击确定\":\"사용자가 확인을 클릭합니다\",\"用户点击取消\":\"사용자 클릭 취소\",\"登录失败\":\"로그인 실패\",\"请勿重复点击\":\"반복적으로 클릭하지 마십시오\",\"请填写密码\":\"비밀번호를 입력하세요\",\"您输入的密码过于简单\":\"입력하신 비밀번호가 너무 간단합니다\",\"请填写账号\":\"계좌번호를 입력하세요\",\"请输入正确的账号\":\"정확한 계좌번호를 입력하세요\",\"[图片]\":\"[사진]\",\"[语音]\":\"[목소리]\",\"[商品]\":\"[제품]\",\"[订单]\":\"[주문]\",\"亲、暂无消息记录哟!\":\"여보, 아직 메시지 기록이 없습니다!\",\"站内消息\":\"국내 메시지\",\"客服消息\":\"고객 서비스 메시지\",\"通知于\":\"알림\",\"获取详情中\":\"세부정보 가져오기\",\"代付订单创建成功,发给好友帮你付款吧~\":\"결제 주문이 성공적으로 생성되었습니다. 결제할 수 있도록 친구에게 보내주세요~\",\"帮我付一下这件商品了,谢谢~\":\"이 상품 결제 도와주세요, 감사합니다~\",\"已经有人替我代付,谢谢啦~\":\"누군가가 나를 위해 지불했습니다, 감사합니다~\",\"谢谢你帮我支付,么么哒~\":\"결제 도와줘서 고마워, 모다~\",\"我已为你代付成功,商家正在努力发货中~\":\"성공적으로 결제를 완료했고 상인이 배송을 하려고 합니다~\",\"好友代付成功,商家正在努力发货中~\":\"친구 결제 성공, 상인이 배송을 하려고 합니다~\",\"发送给微信好友\":\"위챗 친구에게 보내기\",\"查看订单详情\":\"주문 세부정보 보기\",\"订单已支付\":\"주문 결제\",\"如果订单申请退款,已支付金额将原路退还给您\":\"환불 신청을 하면 결제금액을 동일하게 환불해 드립니다\",\"代付成功\":\"결제 성공\",\"谢谢你为我付款,还可以再去看看其他商品哟~\":\"결제해주셔서 감사합니다, 다른 상품 보러 가실 수 있어요~\",\"该订单暂未支付\":\"주문이 아직 지불되지 않았습니다\",\"人\":\"사람\",\"推广人数\":\"발기인의 수\",\"一级\":\"레벨 1\",\"二级\":\"레벨 2\",\"点击搜索会员名称\":\"회원명을 검색하려면 클릭하세요\",\"团队排序\":\"팀 정렬\",\"金额排序\":\"금액 정렬\",\"订单排序\":\"주문 정렬\",\"单\":\"주문\",\"加入时间\":\"가입 시간\",\"累积推广订单\":\"주문 건수\",\"本月累计推广订单\":\"월 주문\",\"返佣\":\"리베이트\",\"暂未返佣\":\"리베이트 아님\",\"返佣时间\":\"리베이트 시간\",\"单号\":\"주문 번호\",\"暂无推广订单~\":\"프로모션 주문 없음~\",\"推广订单列表\":\"프로모션 주문 목록\",\"找回密码\":\"비밀번호 찾기\",\"填写您的新密码\":\"새 비밀번호 입력\",\"加载失败\":\"로드 실패\",\"点击授权登录您的客服工作台\":\"고객 서비스 워크벤치에 로그인하려면 승인을 클릭하세요\",\"授权登录\":\"인증된 로그인\",\"没有登录的code,请重新扫码\":\"로그인하지 않은 코드, 코드를 다시 스캔하십시오\",\"员工人数\":\"직원 수\",\"邀请\":\"초대\",\"分佣比例\":\"저울\",\"修改分佣比例\":\"비율 수정\",\"请输入百分比\":\"퍼센트를 입력하세요\",\"删除员工\":\"직원 삭제\",\"确定删除该员工?\":\"이 직원을 삭제하시겠습니까?\",\"请输入比例\":\"저울을 입력하세요\",\"分类\":\"클래스\",\"我的\":\"내\",\"姓名\":\"이름\",\"请输入联系电话\":\"연락처를 입력하세요\",\"所在地区\":\"위치\",\"详细地址\":\"주소\",\"设置为默认地址\":\"기본 주소로 설정\",\"立即保存\":\"지금 저장\",\"浙江省\":\"절강\",\"杭州市\":\"항저우\",\"滨江区\":\"빈장 구\",\"广东省\":\"광동성\",\"广州市\":\"광저우\",\"番禺区\":\"판유\",\"修改地址\":\"주소 수정\",\"添加地址\":\"주소 추가\",\"已取消!\":\"취소되었습니다! \",\"请填写联系电话\":\"연락처를 입력하세요\",\"保存中\":\"저장\",\"修改成功\":\"수정 성공\",\"消费\":\"소비\",\"充值\":\"재충전\",\"暂无账单的记录哦~\":\"일시적으로 청구서 기록이 없습니다~\",\"点击【立即注销】即代表您已经同意《用户注销协议》\":\"[즉시 로그아웃]을 클릭하면 사용자 로그아웃 동의에 동의한다는 의미입니다\",\"立即注销\":\"지금 로그오프\",\"是否确认注销\":\"로그아웃 확인\",\"注销后无法恢复,请谨慎操作\":\"로그아웃 후 복구할 수 없으니 주의하세요\",\"注销\":\"로그아웃\",\"持卡人\":\"카드 소지자\",\"请输入持卡人姓名\":\"카드 소지자 이름 입력\",\"卡号\":\"카드 번호\",\"请填写卡号\":\"카드번호를 입력하세요\",\"银行\":\"은행\",\"提现\":\"철수\",\"最低提现金额\":\"최소 출금 금액\",\"当前可提现金额\":\"현재 인출 가능한 금액\",\"冻结佣金\":\"얼어붙은 위원회\",\"说明: 每笔佣金的冻结期为\":\"참고: 각 수수료의 동결 기간은\",\"天,到期后可提现\":\"만료 시 인출 가능한 일수\",\"账号\":\"계정\",\"请填写您的微信账号\":\"위챗 계정 입력\",\"收款码\":\"수집 코드\",\"请填写您的支付宝账号\":\"알리페이 계좌번호 입력\",\"请选择银行\":\"은행을 선택하세요\",\"银行卡\":\"은행 카드\",\"微信\":\"위챗\",\"支付宝\":\"알리페이\",\"请填写持卡人姓名\":\"카드 소지자의 이름을 입력하세요\",\"请填写微信号\":\"위챗을 작성해주세요\",\"请填写提现金额\":\"출금금액을 기입해주세요\",\"提现金额不能低于\":\"출금 금액은 이보다 작을 수 없습니다\",\"未使用\":\"사용하지 않음\",\"已使用/过期\":\"사용/만료\",\"通用劵\":\"일반 증권\",\"一级分佣上浮\":\"한 레벨 업\",\"二级分佣上浮\":\"2차 부동\",\"快速升级技巧\":\"빠른 업그레이드 기술\",\"未完成\":\"불완전한\",\"已领完\":\"수집\",\"当前共\":\"현재 합계\",\"取关\":\"꺼짐\",\"请选择商品\":\"상품을 선택하세요\",\"头像\":\"아바타\",\"手机号码\":\"휴대전화 번호\",\"点击绑定手机号\":\"바인딩하려면 클릭\",\"ID号\":\"아이디번호\",\"权限设置\":\"권한\",\"点击管理\":\"관리\",\"密码\":\"비밀번호\",\"点击修改密码\":\"수정 클릭\",\"更换手机号码\":\"번호 변경\",\"点击更换手机号码\":\"클릭\",\"缓存大小\":\"캐시 크기\",\"当前版本\":\"현재 버전\",\"地址管理\":\"주소\",\"发票管理\":\"송장\",\"账号注销\":\"취소\",\"注销后无法恢复\":\"복구할 수 없음\",\"累计积分\":\"누적 포인트\",\"累计消费\":\"소비\",\"冻结积分\":\"빙점\",\"积分规则\":\"적분법칙\",\"提示:积分数值的高低会直接影响您的会员等级\":\"도움말: 멤버십 등급 값\",\"提示:你有\":\"팁: 있습니다\",\"积分在\":\"통합\",\"过期,请尽快使用\":\"만료, 최대한 빨리 사용하세요\",\"暂无积分记录哦~\":\"일시적으로 점수 기록이 없습니다~\",\"赚积分\":\"포인트 적립\",\"分值明细\":\"점수 세부정보\",\"分值提升\":\"점수 증가\",\"抬头类型\":\"헤더 유형\",\"增值税电子专用发票\":\"VAT 전자 특별 송장\",\"增值税电子普通发票\":\"전자 일반 VAT 인보이스\",\"需要开具发票的姓名\":\"청구할 이름\",\"需要开具发票的企业名称\":\"인보이스를 발행할 기업명\",\"税号\":\"세금 번호\",\"纳税人识别号\":\"납세자 식별 번호\",\"手机号\":\"휴대전화 번호\",\"您的手机号\":\"내 휴대폰 번호\",\"邮箱\":\"사서함\",\"您的联系邮箱\":\"연락처 사서함\",\"开户银行\":\"예금 은행\",\"您的开户银行\":\"귀하의 예금 은행\",\"银行账号\":\"은행 계좌 번호\",\"您的银行账号\":\"귀하의 은행 계좌 번호\",\"企业地址\":\"기업 주소\",\"您所在的企业地址\":\"회사 주소\",\"企业电话\":\"기업 전화\",\"您的企业电话\":\"회사 전화\",\"设置为默认抬头\":\"기본 헤더로 설정\",\"保存\":\"저장\",\"发票类型选择\":\"송장 유형 선택\",\"纸质发票开出后将以邮寄形式交付\":\"종이 계산서 발행 후 우편으로 배송됩니다\",\"请输入需要开具发票的姓名\":\"청구할 이름을 입력하세요\",\"请输入您的手机号\":\"휴대전화 번호를 입력하세요\",\"请正确输入您的手机号\":\"휴대전화 번호를 정확하게 입력하세요\",\"请输入您的联系邮箱\":\"연락처 이메일을 입력하세요\",\"请正确输入您的联系邮箱\":\"연락처 이메일을 정확하게 입력하세요\",\"请输入需要开具发票的企业名称\":\"인보이스를 발행할 기업명을 입력하세요\",\"请输入纳税人识别号\":\"납세자 식별 번호를 입력하세요\",\"请正确输入纳税人识别号\":\"납세자 식별 번호를 정확하게 입력하세요\",\"请输入您的开户银行\":\"예금 은행을 입력하세요\",\"请输入您的银行账号\":\"은행 계좌 번호를 입력하세요\",\"请正确输入您的银行账号\":\"은행 계좌 번호를 정확하게 입력하세요\",\"请输入您所在的企业地址\":\"사업장 주소를 입력하세요\",\"请输入您的企业电话\":\"회사 전화번호를 입력하세요\",\"发票记录\":\"송장 기록\",\"抬头管理\":\"헤더 관리\",\"申请时间\":\"적용 시간\",\"没有发票信息哟~\":\"인보이스 정보가 없습니다~\",\"个人普通发票\":\"개인 일반 송장\",\"企业普通发票\":\"기업 일반 송장\",\"企业专用发票\":\"기업 특별 송장\",\"添加新发票\":\"새 송장 추가\",\"删除该发票?\":\"이 송장을 삭제하시겠습니까?\",\"发票编号\":\"인보이스 번호\",\"发票备注\":\"인보이스 비고\",\"快递号\":\"특급번호\",\"总资产(元)\":\"총 자산(₩)\",\"累计充值(元)\":\"공동충전(₩)\",\"累计消费(元)\":\"코플라워(₩)\",\"账单记录\":\"청구서 기록\",\"消费记录\":\"기록\",\"充值记录\":\"재충전\",\"积分中心\":\"적분\",\"签到领积分\":\"로그인\",\"赚积分抵现金\":\"포인트 적립\",\"领取优惠券\":\"쿠폰\",\"满减享优惠\":\"전체 할인\",\"最新拼团活动\":\"최신 그룹 활동\",\"最新的优惠商品上架拼团\":\"선반에 있는 최신 특혜 상품\",\"立即参与\":\"참여\",\"当前限时秒杀\":\"현재 시간 제한 2차 처치\",\"最新商品秒杀进行中\":\"최신 상품 급증 진행 중\",\"我的余额\":\"균형\",\"赠送\":\"선물\",\"其他\":\"기타\",\"注意事项\":\"주의사항\",\"冻结佣金为\":\"얼어붙은 커미션 is\",\"立即转入\":\"즉시 이체\",\"立即充值\":\"즉시 재충전\",\"请输入金额\":\"금액을 입력하세요\",\"转入余额\":\"잔액으로 이체\",\"转入余额后无法再次转出,确认是否转入余额\":\"잔액 이체 후 재이체 불가, 잔액 이체 여부 확인\",\"转入成功\":\"전송 성공\",\"正在支付\":\"결제\",\"充值金额必须为数字\":\"충전 금액은 숫자여야 합니다\",\"充值金额不能为0\":\"충전량은 0이 될 수 없습니다\",\"填写手机号码\":\"휴대전화 번호 입력\",\"是否绑定账号\":\"바인드 계정\",\"绑定\":\"바인딩\",\"您已取消绑定!\":\"언바운드되었습니다!\",\"当前手机号\":\"현재 휴대폰 번호\",\"设置新密码\":\"새 비밀번호 설정\",\"确认新密码\":\"새 비밀번호 확인\",\"手机号码不存在,无法发送验证码!\":\"휴대전화 번호가 존재하지 않아 인증번호를 보낼 수 없습니다!\",\"请输入新密码\":\"새 비밀번호를 입력하세요\",\"两次输入的密码不一致!\":\"입력한 두 개의 암호가 일치하지 않습니다!\",\"请输入验证码\":\"인증 코드를 입력하세요\",\"暂无退款订单~\":\"환불 불가~\",\"缺少订单号无法查看订单详情\":\"주문번호가 누락되어 주문내역을 조회할 수 없습니다\",\"明细\":\"데타\",\"第七天\":\"7일차\",\"第7天\":\"7일차\",\"奖励\":\"보상\",\"已签到\":\"체크인\",\"立即签到\":\"지금 로그인\",\"已累计签到\":\"누적 체크인\",\"据说连续签到第\":\"두 번째 연속 로그인\",\"天可获得超额积分,一定要坚持签到哦~~~\":\"매일 초과 포인트를 얻을 수 있다면 로그인을 고집해야 합니다~~~\",\"签到成功\":\"체크인 성공\",\"好的\":\"확인\",\"您今日已签到!\":\"오늘 로그인하셨습니다!\",\"暂无签到记录~\":\"로그인 기록이 없습니다~\",\"保存海报\":\"포스터 저장\",\"长按保存图片\":\"사진을 저장하려면 길게 누르세요\",\"分销海报\":\"배포 포스터\",\"小程序二维码需要发布正式版后才能获取到\":\"애플릿 QR코드는 정식버전 발행 이후에만 획득 가능\",\"获取中\":\"얻다\",\"暂无数据~\":\"일시적으로 데이터가 없습니다~\",\"提现记录\":\"철회\",\"提现总额\":\"총 인출\",\"佣金记录\":\"커미션 기록\",\"佣金明细\":\"커미션 세부정보\",\"分销等级\":\"배포 수준\",\"昨日收益\":\"어제 수입\",\"累积已提\":\"누적 인출\",\"代理商申请\":\"에이전트 신청\",\"立即提现\":\"철회\",\"推广名片\":\"명함\",\"推广人统计\":\"발기인 통계\",\"推广人订单\":\"발기인 주문\",\"推广订单\":\"프로모션 주문\",\"事业部\":\"사업부문\",\"代理商\":\"에이전트\",\"推广人排行\":\"프로모터 순위\",\"佣金排行\":\"커미션 순위\",\"员工列表\":\"직원 목록\",\"您目前暂无推广权限\":\"현재 승급 권한이 없습니다\",\"商城购物可享\":\"쇼핑몰에서 쇼핑하기\",\"折\":\"할인\",\"当前等级\":\"현재 수준\",\"未达成\":\"도달되지 않음\",\"今日成长值\":\"오늘의 성장가치\",\"点\":\"포인트\",\"我的成长值记录\":\"나의 성장 가치 기록\",\"暂未解锁该等级\":\"이 레벨은 아직 잠금 해제되지 않았습니다\",\"点,需达到\":\"점, 도달해야 함\",\"已解锁更高等级\":\"상위 레벨 잠금 해제\",\"我的成长特权\":\"나의 성장 특권\",\"购物折扣\":\"할인\",\"专属徽章\":\"독점 배지\",\"经验累积\":\"경험치 축적\",\"尊享客服\":\"독점 서비스\",\"签到\":\"체크인\",\"可获得\":\"사용 가능\",\"点经验\":\"포인트 경험치\",\"每日签到可获得经验值,已签到\":\"매일 로그인하면 경험치 획득 가능, 로그인\",\"去签到\":\"체크인\",\"点经验/元\":\"포인트 경험치/₩\",\"购买商品可获得对应的经验值\":\"상품 구매 시 해당 경험치 획득 가능\",\"去购买\":\"가서 사세요\",\"点经验/人\":\"포인트 경험치/인\",\"邀请好友注册商城可获得经验值\":\"친구를 초대하여 몰에 등록하여 경험치 획득\",\"去邀请\":\"초대\",\"积分数\":\"제품 분수\",\"消费金额\":\"소비량\",\"暂无经验记录\":\"경험 기록 없음\",\"账户登录\":\"계정 로그인\",\"微信登录\":\"위챗 로그인\",\"手机号登录\":\"모바일 로그인\",\"账户充值\":\"재충전\",\"佣金转入\":\"커미션\",\"周榜\":\"주간 목록\",\"月榜\":\"월간 목록\",\"周排行\":\"주간 순위\",\"月排行\":\"월간 순위\",\"语言切换\":\"언어\",\"点击前往\":\"클릭하여 이동\",\"查看全部\":\"모두 보기\",\"查看订单\":\"주문 보기\",\"无法获取图片信息\":\"사진 정보를 가져올 수 없습니다\",\"长按或扫描查看\":\"길게 누르거나 보기를 스캔\",\"点解锁\":\"포인트 잠금 해제\",\"确认修改\":\"확인\",\"保存修改\":\"저장\",\"退出登录\":\"로그아웃\",\"付费会员\":\"SVIP\",\"地址信息\":\"주소\",\"我的推广\":\"확장\",\"砍价记录\":\"거래\",\"我的等级\":\"내 레벨\",\"兑换\":\"가서\",\"申请中\":\"응용 프로그램\",\"统计管理\":\"통계\",\"退款\":\"환불\",\"未发货\":\"발급되지 않음\",\"当前为最新版本\":\"현재 최신 버전\",\"清除缓存\":\"캐시 지우기\",\"确定清楚本地缓存数据吗\":\"로컬 캐시 데이터가 확실합니까?\",\"缓存清理完成\":\"캐시 정리 완료\",\"切换的账号不存在\":\"전환된 계정이 존재하지 않습니다\",\"正在切换中\":\"전환\",\"确认退出登录\":\"로그아웃 확인\",\"我知道了\":\"알겠습니다\",\"系统错误\":\"시스템 오류\",\"请求失败\":\"요청 실패\",\"邀请您加入\":\"가입 초대\",\"图片上传中\":\"업로드 중\",\"上传图片失败\":\"이미지 업로드 실패\",\"访问位置被拒绝\":\"액세스 위치가 거부되었습니다\",\"系统定位已关闭\":\"시스템 위치 지정이 해제되었습니다\",\"需要定位权限\":\"위치 권한 필요\",\"订单核销\":\"쓸어버리다\",\"当前可转入佣金为\":\"현재 양도 가능한 수수료는\",\"浏览记录\":\"검색 기록\",\"签到奖励\":\"체크인 보상\",\"请输入内容\":\"내용을 입력하십시오\",\"单次限购\":\"단회한매\",\"永久限购\":\"영구한구\",\"《用户协议》\":\"《사용자 프로토콜》\",\"《隐私协议》\":\"《프라이버시 프로토콜》\",\"与\":\"과\",\"请先阅读并同意协议\":\"먼저 읽고 동의하십시오\",\"绑定下级通知\":\"하위 알림 바인딩\",\"购买成功通知\":\"구매 성공 알림\",\"确认收货通知\":\"수품 확인 통지\",\"改价通知\":\"가격 변경 통지\",\"退款成功通知\":\"환불 성공 알림\",\"充值成功通知\":\"충전 성공 알림\",\"积分到账通知\":\"적분 입금 통지\",\"佣金到账通知\":\"커미션 입금 통지\",\"砍价成功通知\":\"깎기 성공 통지\",\"拼团成功通知\":\"단합 성공 알림\",\"拼团失败通知\":\"단합 실패 알림\",\"开团成功通知\":\"개단 성공 통지\",\"提现成功通知\":\"현금 인출 성공 통지\",\"提现失败通知\":\"현금 인출 실패 알림\",\"充值退款通知\":\"충전 환불 알림\",\"退款申请拒绝通知\":\"환불 신청 거부 통지\",\"您有新的退款待处理\":\"새로운 환불 대기 중\",\"您有新的订单待处理\":\"처리해야 할 새로운 주문이 있습니다\",\"发货通知\":\"발송 알림\",\"取消拼团通知\":\"콜라보레이션 알림 취소\",\"参团成功通知\":\"참단 성공 통지\",\"你有个新的提现申请待处理\":\"당신에게 새로운 현금 인출 신청이 있습니다. 처리해야 합니다\",\"你有个新的用户收货待处理\":\"당신은 새로운 사용자가 처리를 기다리고 있습니다\",\"提醒付款通知\":\"알림 결제 알림\",\"短信验证码\":\"문자 인증 코드\",\"到店自提\":\"제기하다\",\"快递配送\":\"택배배송\"}");
  8696. /***/ }),
  8697. /***/ 276:
  8698. /*!***************************************************!*\
  8699. !*** D:/data/zhonghong/saber-weixin/api/admin.js ***!
  8700. \***************************************************/
  8701. /*! no static exports found */
  8702. /***/ (function(module, exports, __webpack_require__) {
  8703. "use strict";
  8704. Object.defineProperty(exports, "__esModule", { value: true });exports.getStatisticsInfo = getStatisticsInfo;exports.getStatisticsMonth = getStatisticsMonth;exports.getAdminOrderList = getAdminOrderList;exports.setAdminOrderPrice = setAdminOrderPrice;exports.setAdminOrderRemark = setAdminOrderRemark;exports.getAdminOrderDetail = getAdminOrderDetail;exports.getAdminRefundOrderDetail = getAdminRefundOrderDetail;exports.getAdminOrderDelivery = getAdminOrderDelivery;exports.setAdminOrderDelivery = setAdminOrderDelivery;exports.getStatisticsTime = getStatisticsTime;exports.setOfflinePay = setOfflinePay;exports.setOrderRefund = setOrderRefund;exports.getLogistics = getLogistics;exports.orderVerific = orderVerific;exports.orderExportTemp = orderExportTemp;exports.orderDeliveryInfo = orderDeliveryInfo;exports.orderOrderDelivery = orderOrderDelivery;exports.orderRefund_order = orderRefund_order;exports.setAdminRefundRemark = setAdminRefundRemark;
  8705. var _request = _interopRequireDefault(__webpack_require__(/*! @/utils/request.js */ 18));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} // +----------------------------------------------------------------------
  8706. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  8707. // +----------------------------------------------------------------------
  8708. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  8709. // +----------------------------------------------------------------------
  8710. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8711. // +----------------------------------------------------------------------
  8712. // | Author: CRMEB Team <admin@crmeb.com>
  8713. // +----------------------------------------------------------------------
  8714. /**
  8715. * 统计数据
  8716. */function getStatisticsInfo() {return _request.default.get("admin/order/statistics", {}, { login: true });} /**
  8717. * 订单月统计
  8718. */function getStatisticsMonth(where) {
  8719. return _request.default.get("admin/order/data", where, {
  8720. login: true });
  8721. }
  8722. /**
  8723. * 订单月统计
  8724. */
  8725. function getAdminOrderList(where) {
  8726. return _request.default.get("admin/order/list", where, {
  8727. login: true });
  8728. }
  8729. /**
  8730. * 订单改价
  8731. */
  8732. function setAdminOrderPrice(data) {
  8733. return _request.default.post("admin/order/price", data, {
  8734. login: true });
  8735. }
  8736. /**
  8737. * 订单备注
  8738. */
  8739. function setAdminOrderRemark(data) {
  8740. return _request.default.post("admin/order/remark", data, {
  8741. login: true });
  8742. }
  8743. /**
  8744. * 订单详情
  8745. */
  8746. function getAdminOrderDetail(orderId) {
  8747. return _request.default.get("admin/order/detail/" + orderId, {}, {
  8748. login: true });
  8749. }
  8750. /**
  8751. * 退款订单详情
  8752. */
  8753. function getAdminRefundOrderDetail(orderId) {
  8754. return _request.default.get("admin/refund_order/detail/" + orderId, {}, {
  8755. login: true });
  8756. }
  8757. /**
  8758. * 订单发货信息获取
  8759. */
  8760. function getAdminOrderDelivery(orderId) {
  8761. return _request.default.get(
  8762. "admin/order/delivery/gain/" + orderId, {}, {
  8763. login: true });
  8764. }
  8765. /**
  8766. * 订单发货保存
  8767. */
  8768. function setAdminOrderDelivery(id, data) {
  8769. return _request.default.post("admin/order/delivery/keep/" + id, data, {
  8770. login: true });
  8771. }
  8772. /**
  8773. * 订单统计图
  8774. */
  8775. function getStatisticsTime(data) {
  8776. return _request.default.get("admin/order/time", data, {
  8777. login: true });
  8778. }
  8779. /**
  8780. * 线下付款订单确认付款
  8781. */
  8782. function setOfflinePay(data) {
  8783. return _request.default.post("admin/order/offline", data, {
  8784. login: true });
  8785. }
  8786. /**
  8787. * 订单确认退款
  8788. */
  8789. function setOrderRefund(data) {
  8790. return _request.default.post("admin/order/refund", data, {
  8791. login: true });
  8792. }
  8793. /**
  8794. * 获取快递公司
  8795. * @returns {*}
  8796. */
  8797. function getLogistics(data) {
  8798. return _request.default.get("logistics", data, {
  8799. login: false });
  8800. }
  8801. /**
  8802. * 订单核销
  8803. * @returns {*}
  8804. */
  8805. function orderVerific(verify_code, is_confirm) {
  8806. return _request.default.post("order/order_verific", {
  8807. verify_code: verify_code,
  8808. is_confirm: is_confirm });
  8809. }
  8810. /**
  8811. * 获取物流公司模板
  8812. * @returns {*}
  8813. */
  8814. function orderExportTemp(data) {
  8815. return _request.default.get("admin/order/export_temp", data);
  8816. }
  8817. /**
  8818. * 获取订单打印默认配置
  8819. * @returns {*}
  8820. */
  8821. function orderDeliveryInfo() {
  8822. return _request.default.get("admin/order/delivery_info");
  8823. }
  8824. /**
  8825. * 配送员列表
  8826. * @returns {*}
  8827. */
  8828. function orderOrderDelivery() {
  8829. return _request.default.get("admin/order/delivery");
  8830. }
  8831. /**
  8832. * 退款列表
  8833. * @returns {*}
  8834. */
  8835. function orderRefund_order(where) {
  8836. return _request.default.get("admin/refund_order/list", where, {
  8837. login: true });
  8838. }
  8839. /**
  8840. * 订单备注(退款)
  8841. */
  8842. function setAdminRefundRemark(data) {
  8843. return _request.default.post("admin/refund_order/remark", data, {
  8844. login: true });
  8845. }
  8846. /***/ }),
  8847. /***/ 28:
  8848. /*!******************************************************!*\
  8849. !*** D:/data/zhonghong/saber-weixin/lang/mn_mn.json ***!
  8850. \******************************************************/
  8851. /*! exports provided: 选择地址, 选择其它地址, 已选商品, 清空, ¥, 已售罄, 已下架, 删除, 商品券, 品类券, 通用券, 优惠券, 满, 元可用, 无门槛券, 领取后, 天内可用, 已领取, 立即领取, 购物满, 减, 不限时, 秒杀, 砍价, 拼团, 已售, 立即购买, 加入购物车, 选规格, 跳过, 立即体验, 首页, 搜索, 购物车, 我的收藏, 个人中心, 券, 正在加载中, 上拉加载更多, 代付金额, 共, 件商品, 订单包裹, 申请退款中, 已退款, 已完成, 件退款中, 不支持配送, 不支持自提, 已评价, 评价, 申请退款, 查看物流, 确认收货, 选择付款方式, 支付, 去付款, 请选择要支付的订单, 余额不足, 支付中, 缺少支付参数, 取消支付, 支付成功, 支付失败, 库存, 限量, 数量, 我要参团, 确定, 热门推荐, 最高返佣, 推广享佣金, 立即分享, 发现新版本, 立即升级, 下载进度, 店小二, 暂无记录, 正在下载海报,请稍后再试, 海报二维码生成失败, 倒计时, 天, 时, 分, 秒, 砍价成功, 活动已结束, 已砍至, 活动进行中, 取消活动, 继续砍价, 暂无砍价记录, 人正在参与, 最低, 参与砍价, 砍价列表, 人查看, 人分享, 人参与, 邀请您帮忙砍价, 查看商品, 当前, 已砍, 还剩, 立即参与砍价, 商品暂无库存, 邀请好友帮砍价, 已有, 位好友成功砍价, 帮好友砍一刀, 好友已砍价成功, 我也要参与, 已成功帮助好友砍价, 恭喜您砍价成功,快去支付, 立即支付, 抢更多商品, 砍价帮, 砍掉, 更多, 关闭, 点击加载更多, 商品详情, 砍价规则, 您已砍掉, 元,听说分享次数越多砍价成功的机会越大哦, 成功帮砍, 您也可以砍价低价拿哦,快去挑选心仪的商品吧, 发送给朋友, 微信好友, 微信朋友圈, 生成海报, 砍价详情, 分享成功, 分享失败, 该商品每人限购, 您的好友, 邀请您砍价, 人团, 去拼团, 拼团列表, 类型, 累计销量, 限购, 种规格可选, 已拼, 件, 还差, 人成团, 去拼单, 查看更多, 收起, 拼团玩法, 开团/参团, 邀请好友, 满员发货, 用户评价, 好评率, 产品介绍, 单独购买, 立即开团, 请选择, 商品, 详情, 缺少参数无法查看商品, 参数错误, 已选择, 保存成功, 保存失败, 人拼, 剩余, 结束, 恭喜您拼团成功, 人,拼团失败, 拼团中,还差, 人拼团成功, 邀请好友参团, 再次开团, 取消开团, 查看订单信息, 大家都在拼, 更多拼团, 邀请您参团, 你不是该团的成员, 已抢, 抢购中, 未开始, 已结束, 暂无商品,去看点别的吧, 即将开始, 距秒杀结束仅剩, 累计销售, 收藏, 保存到手机, 长按图片可以保存到手机, 抢购详情页, 二维码获取失败, 请选择属性, 提示:点击图片即可保存至手机相册, 拼团海报, 砍价海报, 海报生成中, 海报图片获取失败, 海报, 已预定, 预售价, 立即预定, 开售时间, 预售活动, 起, 划线价, 开通“超级会员”立省, 元, 立即开通, 预售活动时间, 预售结束后, 天内发货, 活动, 参与秒杀, 参与拼团, 复制口令, 复制成功, 推荐, 缺少经纬度信息无法查看地图, 产品库存不足,请选择其它属性, 立即退款, 一键改价, 订单备注, 商品总价, 原始邮费, 实际支付, 退款金额, 请填写备注信息, 立即修改, 确认退款, 拒绝退款, 取消, 订单号, 发货方式, 发货类型, 快递公司, 快递单号, 顺丰请输入单号 :收件人或寄件人手机号后四位, 例如:SF000000000000:3941, 电子面单, 预览, 寄件人姓名, 填写寄件人姓名, 寄件人电话, 填写寄件人电话, 寄件人地址, 填写寄件人地址, 送货人, 确认提交, 发货, 送货, 无需物流, 手动填写, 电子面单打印, 填写快递单号, 请选择电子面单, 待付款, 待发货, 待收货, 待评价, 售后/退款, 数据统计, 今日成交额, 昨日成交额, 本月成交额, 今日订单数, 昨日订单数, 本月订单数, 详细数据, 日期, 订单数, 成交额, 立即核销, 查看, 确定要核销此订单吗, 确定核销, 请输入核销码, 请输入正确的核销码, 查询中, 订单, 订单未备注,点击添加备注信息, 复制, 件商品,应支付, 邮费, 订单编号, 下单时间, 支付状态, 已支付, 未支付, 支付方式, 买家留言, 支付金额, 优惠券抵扣, 运费, 实付款, 配送方式, 快递, 送货人电话, 确认付款, 去发货, 改价成功, 改价失败, 请输入备注, 退款中, 部分退款中, 件商品,实付款, 同意退货, 待用户发货, 请输入正确的金额, 今天, 昨天, 最近7天, 本月, 自定义, 营业额(元), 订单量(份), 增长率, 增长, 单位, 元., 分., 固定, 指定范围, 提交时间, 原因, 暂无申请记录,快去申请吧!, 没有更多啦, 待审核, 审核通过, 审核未通过, 编辑, 重新提交, 会员优惠价, 余额支付, 可用余额, 微信支付, 确认, 支付提醒, 线下支付已关闭,请点击确认按钮返回主页, 请输入支付金额, 正在确认, 进入商城, 代理商名称, 请输入代理商名称, 用户姓名, 请输入姓名, 联系电话, 请输入手机号, 验证码, 填写验证码, 邀请码, 请输入代理商邀请码, 请上传营业执照及行业相关资质证明图片, 图片最多可上传10张,图片格式支持JPG、PNG、JPEG, 上传图片, 已阅读并同意, 代理商协议, 提交申请, 代理商入驻协议, 恭喜,您的资料提交成功!, 返回首页, 恭喜,您的资料通过审核!, 您的申请未通过!, 重新申请, 获取验证码, 请输入正确的手机号码, 重新获取, 请上传营业执照, 请勾选并同意入驻协议, 专题栏, 暂无数据, 请输入卡号, 请输入卡密, 确认激活, SVIP会员尊享权, 正在激活, 已使用, 永久SVIP会员, SVIP会员, 到期, 您与, 商城的第, 天., 已累积为您节省, 开通即享会员权益, 续费会员, 开通会员, 有效期至, 试用, 购买即视为同意, 会员用户协议, 点击兑换卡密, 会员优惠券, SVIP商品推荐, 商城价, 激活会员卡, 支付宝支付, 成功开启0元试用, 确认绑定, 绑定成功, 商城客服已离线, 我要反馈, 请填写内容, 提交, 精品推荐, 热门榜单, 首发新品, 促销单品, 预告, 回放, 进行中, 发送客服, 客服连接中, 连接失败, 提示, 客服已下线,是否需要反馈?, 和好友一起分享, 积分抵扣, 已开票, 未开票, 发票信息, 发票抬头, 发票抬头类型, 个人, 企业, 发票类型, 电子普通发票, 电子专用发票, 企业税号, 联系信息, 真实姓名, 联系邮箱, 抬头选择, 默认, 普通, 专用, 您还没有添加发票信息哟, 添加新的抬头, 不开发票, 抽奖, 全选, 属性, 请填写具体地址, 省, 市, 区, 添加成功, 您已拒绝导入微信地址权限, 是否进入权限管理,调整授权?, 已取消, 添加失败, 请填写收货人姓名, 请选择所在地区, 请填写详细地址, 星, 商品满足你的期待么?说说你的想法,分享给想买的他们吧, 立即评价, 商品质量, 服务态度, 缺少参数, 请填写你对宝贝的心得, 正在发布评论, 感谢您的评价, 评价完成, 恭喜您, 获得, 机会, 领取成功, 评分, 全部, 好评, 中评, 差评, 加载更多, 千米距离, 搜索商品名称, 价格, 销量, 新品, 已全部加载, 缺少订单号, 退货件数, 退款类型, 退款原因, 备注说明, 填写备注信息,100字以内, 仅退款, 退货并退款, 申请成功, 请先选择退货商品, 搜索历史, 热门搜索, 请输入要搜索的商品, 正在搜索中, 中奖记录, 我的奖品, 活动规则, 昵称, 序号, 奖品名称, 获奖时间, 商家暂未上架活动哦, 获取抽奖信息, 奖品类型, 立即兑换, 兑换时间, 暂无中奖记录, 积分, 余额, 红包, 设置收货地址, 暂无门店信息, 剩余积分, 当前积分, 开具发票, 请填写, 配送运费, 会员商品优惠, 会员运费优惠, 合计, 使用微信快捷支付, 使用支付宝支付, 线下支付, 使用线下付款, 好友代付, 找微信好友支付, 立即使用, 请选择要购买的商品, 发票, 不使用, 订单创建成功, 请选择支付方式, 请选择收货地址, 请填写联系人或联系人电话, 暂无门店,请选择其他方式, 请输入, 请输入正确的, 请上传, 订单支付中, 请按以上退货信息将商品退回, 请联系管理员获取退货地址, 待核销, 核销信息, 营业时间, 每日, 使用说明, 可将二维码出示给店员扫描或提供数字核销码, 可将二维码出示给配送员进行核销, 查看位置, 拒绝原因, 联系客服, 商家备注, 收货人, 收货地址, 配送人姓名, 拨打, 虚拟发货, 已发货,请注意查收, 虚拟备注, 总代付, 申请开票, 查看发票, 取消订单, 立即付款, 批量退款, 查看拼团, 再次购买, 取消申请, 填写退货信息, 查看退货物流, 您确认放弃此次申请吗, 操作成功, 订单信息不存在, 为保障权益,请收到货确认无误后,再确认收货, 删除订单, 确定删除该订单, 删除成功, 确认取消该订单, 订单信息, 消费订单, 总消费, 预售, 线下付款,未支付, 未核销, 件商品,总金额, 查看详情, 暂无订单, 缺少订单号无法取消订单, 订单支付成功, 订单支付失败, 暂未支付, 失败原因, 重新购买, 重新支付, 赠送优惠券, 有效期, 缺少参数无法查看订单支付状态, 最多可上传3张, 请选择产品, 该产品没有更多库存了, 优品推荐, 暂无产品, 重新选择, 请选择数量, 砍价专区·BARGAINING, 立即砍价, 拼团活动, 人拼团成功., 人参团, 拼团价, 已过期, 关注, 推荐好货, 暂无商品, 限时秒杀, 抢, 广告位, 精彩内容, 砍价模块,暂无数据, 砍价活动, 呼朋唤友来砍价, 拼团模块,暂无数据, 享超值开团价, 优惠券,暂无数据, 领取今日好券, 可用, 领取, 客服, 商品列表,暂无数据, 搜索商品, 暂无图片,请上传图片, 首发新品,暂无数据, 多个优质商品最新上架, 暂无新闻,请上传新闻, 热度 TOP, 排行榜、暂无数据, 促销单品,暂无数据, 库存商品优惠促销活动, 精品推荐,暂无数据, 上百种商品分类任您选择, 秒杀模块,暂无数据, 场, 暂无数据,请设置, 暂无数据,请先添加分类, 暂无标题, 诚意推荐品质商品, 点击“立即关注”即可关注公众号, 立即关注, 添加到我的小程序, 微信首页下拉即可访问商城。, 点击, 服务协议与隐私政策, 请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。, 你可以阅读, 《服务协议与隐私政策》, 了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。, 我同意, 残忍拒绝, 下拉加载更多, 网络连接断开, 请检查情况:, 在设置中是否已开启网络权限, 当前是否处于弱网环境, 版本是否过低,升级试试吧, 重新连接, 加载中, 没有更多内容啦~, 100%正品保证, 所有商品精挑细选, 售后无忧, 管理, 购物数量, 请重新选择商品规格, 重选, 失效商品, 失效, 该商品已失效, 立即下单, 我也是有底线的, 产品库存不足,请选择其它, 添加购物车成功, 清除成功, 暂无兑换记录~, 大家都在换, 人兑换, 轻松赚积分, 购买商品, 购买商品可获得积分奖励, 去完成, 每日签到活动, 每日签到可获得积分奖励, 九宫格抽奖活动, 幸运抽奖可获得积分奖励, 我的积分, 每日签到, 积分抽奖, 兑换记录, 已兑换, 无法兑换, [默认], 可用积分, 快递费用, 免运费, 备注信息, 请添加备注(150字以内), 使用线上支付宝支付, 可用余额:, 选择线下付款方式, 正在加载…, 可用积分不足!, 订单状态, 支付积分, 备注, 配送核销码, 当前可用余额:, 正在加载, 缺少经纬度信息无法查看地图!, 商品兑换成功, 兑换方式, 积分兑换, 兑换积分, 取消兑换, 缺少参数无法查看订单兑换状态, 用户离开了, 兑换成功, 物流公司, 复制单号, 设为默认, 添加新地址, 导入微信地址, 取消选择, 您设置的默认地址不存在!, 设置成功, 您删除的地址不存在!, 获取头像, 请点击授权, 绑定手机号, 永久, 会员到期, 未开通会员, 查看会员权益, 立即续费, 立即激活, 会员可享多项权益, 订单中心, 我的服务, 隐私协议, 商家管理, 更新用户信息成功, 客服接待, 点击复制网址去浏览器中打开, 点击复制, 完成支付, 点击右上角, 选择 在浏览器 打开,去支付宝支付, 支付订单不存在,页面将在2秒后自动关闭!, 正在支付中, 支付订单不存在,页面将在2秒后自动关闭, 复制失败, 您目前的排名, 您目前暂无排名, 暂无排名~, 输入手机号, 输入验证码, 立即登录, 请填写手机号码, 请填写验证码, 请输入正确的验证码, 正在登录中, 登录成功, 获取授权, 获取微信的手机号授权, 获取微信手机号, 输入手机号码, 填写登录密码, 登录, 快速登录, 账号登录, 其他方式登录, 登录中, 获取用户信息失败, 请绑定手机号后,继续操作, 错误信息, 用户点击确定, 用户点击取消, 登录失败, 请勿重复点击, 请填写密码, 您输入的密码过于简单, 请填写账号, 请输入正确的账号, [图片], [语音], [商品], [订单], 亲、暂无消息记录哟!, 站内消息, 客服消息, 通知于, 获取详情中, 代付订单创建成功,发给好友帮你付款吧~, 帮我付一下这件商品了,谢谢~, 已经有人替我代付,谢谢啦~, 谢谢你帮我支付,么么哒~, 我已为你代付成功,商家正在努力发货中~, 好友代付成功,商家正在努力发货中~, 发送给微信好友, 查看订单详情, 订单已支付, 如果订单申请退款,已支付金额将原路退还给您, 代付成功, 谢谢你为我付款,还可以再去看看其他商品哟~, 该订单暂未支付, 人, 推广人数, 一级, 二级, 点击搜索会员名称, 团队排序, 金额排序, 订单排序, 单, 加入时间, 累积推广订单, 本月累计推广订单, 返佣, 暂未返佣, 返佣时间, 单号, 暂无推广订单~, 推广订单列表, 找回密码, 填写您的新密码, 加载失败, 点击授权登录您的客服工作台, 授权登录, 没有登录的code,请重新扫码, 员工人数, 邀请, 分佣比例, 修改分佣比例, 请输入百分比, 删除员工, 确定删除该员工?, 请输入比例, 分类, 我的, 姓名, 请输入联系电话, 所在地区, 详细地址, 设置为默认地址, 立即保存, 浙江省, 杭州市, 滨江区, 广东省, 广州市, 番禺区, 修改地址, 添加地址, 已取消!, 请填写联系电话, 保存中, 修改成功, 消费, 充值, 暂无账单的记录哦~, 点击【立即注销】即代表您已经同意《用户注销协议》, 立即注销, 是否确认注销, 注销后无法恢复,请谨慎操作, 注销, 持卡人, 请输入持卡人姓名, 卡号, 请填写卡号, 银行, 提现, 最低提现金额, 当前可提现金额, 冻结佣金, 说明: 每笔佣金的冻结期为, 天,到期后可提现, 账号, 请填写您的微信账号, 收款码, 请填写您的支付宝账号, 请选择银行, 银行卡, 微信, 支付宝, 请填写持卡人姓名, 请填写微信号, 请填写提现金额, 提现金额不能低于, 未使用, 已使用/过期, 通用劵, 一级分佣上浮, 二级分佣上浮, 快速升级技巧, 未完成, 已领完, 当前共, 取关, 请选择商品, 头像, 手机号码, 点击绑定手机号, ID号, 权限设置, 点击管理, 密码, 点击修改密码, 更换手机号码, 点击更换手机号码, 缓存大小, 当前版本, 地址管理, 发票管理, 账号注销, 注销后无法恢复, 累计积分, 累计消费, 冻结积分, 积分规则, 提示:积分数值的高低会直接影响您的会员等级, 提示:你有, 积分在, 过期,请尽快使用, 暂无积分记录哦~, 赚积分, 分值明细, 分值提升, 抬头类型, 增值税电子专用发票, 增值税电子普通发票, 需要开具发票的姓名, 需要开具发票的企业名称, 税号, 纳税人识别号, 手机号, 您的手机号, 邮箱, 您的联系邮箱, 开户银行, 您的开户银行, 银行账号, 您的银行账号, 企业地址, 您所在的企业地址, 企业电话, 您的企业电话, 设置为默认抬头, 保存, 发票类型选择, 纸质发票开出后将以邮寄形式交付, 请输入需要开具发票的姓名, 请输入您的手机号, 请正确输入您的手机号, 请输入您的联系邮箱, 请正确输入您的联系邮箱, 请输入需要开具发票的企业名称, 请输入纳税人识别号, 请正确输入纳税人识别号, 请输入您的开户银行, 请输入您的银行账号, 请正确输入您的银行账号, 请输入您所在的企业地址, 请输入您的企业电话, 发票记录, 抬头管理, 申请时间, 没有发票信息哟~, 个人普通发票, 企业普通发票, 企业专用发票, 添加新发票, 删除该发票?, 发票编号, 发票备注, 快递号, 总资产(元), 累计充值(元), 累计消费(元), 账单记录, 消费记录, 充值记录, 积分中心, 签到领积分, 赚积分抵现金, 领取优惠券, 满减享优惠, 最新拼团活动, 最新的优惠商品上架拼团, 立即参与, 当前限时秒杀, 最新商品秒杀进行中, 我的余额, 赠送, 其他, 注意事项, 冻结佣金为, 立即转入, 立即充值, 请输入金额, 转入余额, 转入余额后无法再次转出,确认是否转入余额, 转入成功, 正在支付, 充值金额必须为数字, 充值金额不能为0, 填写手机号码, 是否绑定账号, 绑定, 您已取消绑定!, 当前手机号, 设置新密码, 确认新密码, 手机号码不存在,无法发送验证码!, 请输入新密码, 两次输入的密码不一致!, 请输入验证码, 暂无退款订单~, 缺少订单号无法查看订单详情, 明细, 第七天, 第7天, 奖励, 已签到, 立即签到, 已累计签到, 据说连续签到第, 天可获得超额积分,一定要坚持签到哦~~~, 签到成功, 好的, 您今日已签到!, 暂无签到记录~, 保存海报, 长按保存图片, 分销海报, 小程序二维码需要发布正式版后才能获取到, 获取中, 暂无数据~, 提现记录, 提现总额, 佣金记录, 佣金明细, 分销等级, 昨日收益, 累积已提, 代理商申请, 立即提现, 推广名片, 推广人统计, 推广人订单, 推广订单, 事业部, 代理商, 推广人排行, 佣金排行, 员工列表, 您目前暂无推广权限, 商城购物可享, 折, 当前等级, 未达成, 今日成长值, 点, 我的成长值记录, 暂未解锁该等级, 点,需达到, 已解锁更高等级, 我的成长特权, 购物折扣, 专属徽章, 经验累积, 尊享客服, 签到, 可获得, 点经验, 每日签到可获得经验值,已签到, 去签到, 点经验/元, 购买商品可获得对应的经验值, 去购买, 点经验/人, 邀请好友注册商城可获得经验值, 去邀请, 积分数, 消费金额, 暂无经验记录, 账户登录, 微信登录, 手机号登录, 账户充值, 佣金转入, 周榜, 月榜, 周排行, 月排行, 语言切换, 点击前往, 查看全部, 查看订单, 无法获取图片信息, 长按或扫描查看, 点解锁, 确认修改, 保存修改, 退出登录, 付费会员, 地址信息, 我的推广, 砍价记录, 我的等级, 兑换, 申请中, 统计管理, 退款, 未发货, 当前为最新版本, 清除缓存, 确定清楚本地缓存数据吗, 缓存清理完成, 切换的账号不存在, 正在切换中, 确认退出登录, 我知道了, 系统错误, 请求失败, 邀请您加入, 图片上传中, 上传图片失败, 访问位置被拒绝, 系统定位已关闭, 需要定位权限, 订单核销, 当前可转入佣金为, 浏览记录, 签到奖励, 请输入内容, 单次限购, 永久限购, 《用户协议》, 《隐私协议》, 与, 请先阅读并同意协议, 绑定下级通知, 购买成功通知, 确认收货通知, 改价通知, 退款成功通知, 充值成功通知, 积分到账通知, 佣金到账通知, 砍价成功通知, 拼团成功通知, 拼团失败通知, 开团成功通知, 提现成功通知, 提现失败通知, 充值退款通知, 退款申请拒绝通知, 您有新的退款待处理, 您有新的订单待处理, 发货通知, 取消拼团通知, 参团成功通知, 你有个新的提现申请待处理, 你有个新的用户收货待处理, 提醒付款通知, 短信验证码, 到店自提, 快递配送, default */
  8852. /***/ (function(module) {
  8853. module.exports = JSON.parse("{\"选择地址\":\"Хаяг сонгох\",\"选择其它地址\":\"Бусад хаяг сонгох\",\"已选商品\":\"Сонгосон бараа\",\"清空\":\"Цэвэр\",\"¥\":\"$\",\"已售罄\":\"Борагдсан\",\"已下架\":\"Буулгах\",\"删除\":\"Устгах\",\"商品券\":\"Бүтээгдэхүүн\",\"品类券\":\"Ангилал\",\"通用券\":\"Ерөнхий\",\"优惠券\":\"Эрхийн бичиг\",\"满\":\"Бүрэн\",\"元可用\":\"Ашигласан\",\"无门槛券\":\"Босгогүй\",\"领取后\":\"Хүлээн авах\",\"天内可用\":\"Өдрийн хэрэглээ\",\"已领取\":\"Хүлээн авсан\",\"立即领取\":\"Авах\",\"购物满\":\"Зарцах\",\"减\":\"Унтраах\",\"不限时\":\"Хязгааргүй хугацаа\",\"秒杀\":\"Секкилл\",\"砍价\":\"Хэлэлцэх\",\"拼团\":\"Бүлэг\",\"已售\":\"Зарагдсан\",\"立即购买\":\"Одоо худалдаж авах\",\"加入购物车\":\"Сагсанд нэмэх\",\"选规格\":\"Сонголтууд\",\"跳过\":\"Дараагийн\",\"立即体验\":\"Одоо яв\",\"首页\":\"Гэр\",\"搜索\":\"Хайлт\",\"购物车\":\"Сагс\",\"我的收藏\":\"Цуглуулах\",\"个人中心\":\"Минийх\",\"券\":\"Vo.\",\"正在加载中\":\"Ачааж байна...\",\"上拉加载更多\":\"Дээш татах, илүү их ачаалах\",\"代付金额\":\"Хэмжээ\",\"共\":\"Нийт \",\"件商品\":\"Зүйлс\",\"订单包裹\":\"Бараа захиалах\",\"申请退款中\":\"Төлбөрийг буцаан олгох\",\"已退款\":\"Буцаан олгогдох\",\"已完成\":\"Дууссан\",\"件退款中\":\"Барааны буцаан олголт\",\"不支持配送\":\"Зөвхөн дэлгүүрт\",\"不支持自提\":\"Зөвхөн хүргэлт\",\"已评价\":\"Үнэлсэн\",\"评价\":\"Шүүмж\",\"申请退款\":\"Төлбөрийг буцаан олгох\",\"查看物流\":\"Логистик\",\"确认收货\":\"Захиалга авах\",\"选择付款方式\":\"Төлбөрийн төрлийг сонгох\",\"支付\":\"Төлбөр\",\"去付款\":\"Төлбөр төлөх\",\"请选择要支付的订单\":\"Захиалга сонгох\",\"余额不足\":\"Үлдэл хангалтгүй\",\"支付中\":\"Төлбөр төлж байна...\",\"缺少支付参数\":\"Төлбөрийн параметр дутуу\",\"取消支付\":\"Төлбөрийг цуцлах\",\"支付成功\":\"Төлбөр амжилттай боллоо\",\"支付失败\":\"Төлбөр амжилтгүй боллоо\",\"库存\":\"Хувьцаа\",\"限量\":\"Хязгаарлалт\",\"数量\":\"QTY\",\"我要参团\":\"Бүлэгт нэгдэх\",\"确定\":\"За\",\"热门推荐\":\"Халуун зөвлөмж\",\"最高返佣\":\"Хамгийн өндөр\",\"推广享佣金\":\"Дэмжих\",\"立即分享\":\"Одоо хуваалцах\",\"发现新版本\":\"Шинэ хувилбар\",\"立即升级\":\"Сайжруулах\",\"下载进度\":\"Дэвшил\",\"店小二\":\"Зөөгч\",\"暂无记录\":\"Өгөгдөл байхгүй\",\"正在下载海报,请稍后再试\":\"Зурагт хуудас татаж байна, дараа дахин оролдоно уу\",\"海报二维码生成失败\":\"Зурагт хуудасны QR код үүсгэж чадсангүй\",\"倒计时\":\"Countdown\",\"天\":\"D\",\"时\":\"H\",\"分\":\"М\",\"秒\":\"S\",\"砍价成功\":\"Хэлэлцээ амжилттай боллоо\",\"活动已结束\":\"Үйл ажиллагаа зогссон\",\"已砍至\":\"Таслах\",\"活动进行中\":\"Боловсруулж байна...\",\"取消活动\":\"Цуцлах\",\"继续砍价\":\"Үргэлжлүүлэх\",\"暂无砍价记录\":\"Өгөгдөл байхгүй\",\"人正在参与\":\"Оролцож байна\",\"最低\":\"Хамгийн бага\",\"参与砍价\":\"Хэлэлцэх\",\"砍价列表\":\"Худалдааны жагсаалт\",\"人查看\":\"Харах\",\"人分享\":\"Хуваалцах\",\"人参与\":\"Оролцсон\",\"邀请您帮忙砍价\":\"Тусламжийг урих\",\"查看商品\":\"Зүйлс харах\",\"当前\":\"Одоогийн\",\"已砍\":\"жижиглэсэн\",\"还剩\":\"Зүүн\",\"立即参与砍价\":\"Одоо наймаалцах\",\"商品暂无库存\":\"Хувьцаагүй\",\"邀请好友帮砍价\":\"Найзуудынхаа тусламжийг урих\",\"已有\":\"Байна\",\"位好友成功砍价\":\"Амжилттай найзууд\",\"帮好友砍一刀\":\"Найзууддаа туслаарай\",\"好友已砍价成功\":\"Найзууд аль хэдийн амжилттай болсон\",\"我也要参与\":\"Би оролцох болно\",\"已成功帮助好友砍价\":\"Найзууддаа амжилтанд тусал\",\"恭喜您砍价成功,快去支付\":\"Хэлэлцээ амжилттай боллоо, төлбөрөө хий\",\"立即支付\":\"Одоо төлөх\",\"抢更多商品\":\"Илүү их татах\",\"砍价帮\":\"Худалдааны бүлэг\",\"砍掉\":\"Таслах\",\"更多\":\"Илүү их\",\"关闭\":\"Хаах\",\"点击加载更多\":\"Илүү ачаалах бол товшино уу\",\"商品详情\":\"Дэлгэрэнгүй мэдээлэл\",\"砍价规则\":\"Худалдааны дүрэм\",\"您已砍掉\":\"Та таслав\",\"元,听说分享次数越多砍价成功的机会越大哦\":\", Та олон удаа хуваалцах тусам амжилттай наймаа хийх боломж нэмэгдэнэ\",\"成功帮砍\":\"Таслахад амжилттай туслаач\",\"您也可以砍价低价拿哦,快去挑选心仪的商品吧\":\"Та мөн хямд үнээр хямд үнээр хямд үнээр худалдаж авах боломжтой, очоод дуртай бүтээгдэхүүнээ сонгоорой\",\"发送给朋友\":\"Найздаа илгээх\",\"微信好友\":\"Wechat найз\",\"微信朋友圈\":\"WeChat мөчүүд\",\"生成海报\":\"Зурагт хуудас үүсгэх\",\"砍价详情\":\"Хэлэлцээний дэлгэрэнгүй мэдээлэл\",\"分享成功\":\"Амжилттай хуваалцсан\",\"分享失败\":\"Хуваалцаж чадсангүй\",\"该商品每人限购\":\"Энэ бүтээгдэхүүнийг нэг хүнд ногдох худалдан авалтаар хязгаарласан\",\"您的好友\":\"Таны найз\",\"邀请您砍价\":\"Таныг тайрахыг урьж байна\",\"人团\":\"Хүмүүс\",\"去拼团\":\"Яв\",\"拼团列表\":\"Бүлгийн жагсаалт\",\"类型\":\"Төрөл\",\"累计销量\":\"Нийт борлогдсон\",\"限购\":\"Хязгаарлалт\",\"种规格可选\":\"Үзүүлэлтүүд\",\"已拼\":\"Үсгийн үсэг\",\"件\":\"Хэсэг\",\"还差\":\"Зөвхөн\",\"人成团\":\"амжилт\",\"去拼单\":\"Нэгдэх\",\"查看更多\":\"Илүү их\",\"收起\":\"Хойшоо\",\"拼团玩法\":\"Бүлгийн үйл явц\",\"开团/参团\":\"Эхлэх\",\"邀请好友\":\"Урилга\",\"满员发货\":\"Хүргэлт\",\"用户评价\":\"Шүүмж\",\"好评率\":\"Магтаал\",\"产品介绍\":\"Дэлгэрэнгүй мэдээлэл\",\"单独购买\":\"Ганцаараа худалдаж авах\",\"立即开团\":\"Эхлэх бүлэг\",\"请选择\":\"Сонгосон\",\"商品\":\"Бүтээгдэхүүн\",\"详情\":\"Дэлгэрэнгүй\",\"缺少参数无法查看商品\":\"Параметр дутуу байгаа тул бүтээгдэхүүнийг харж чадахгүй байна\",\"参数错误\":\"Параметрийн алдаа\",\"已选择\":\"Сонгосон\",\"保存成功\":\"Хадгалсан амжилт\",\"保存失败\":\"Хадгалж чадсангүй\",\"人拼\":\"Хүмүүс тулалддаг\",\"剩余\":\"Үлдсэн\",\"结束\":\"Дуусгах\",\"恭喜您拼团成功\":\"Амжилттай бүлэглэсэнд баяр хүргэе\",\"人,拼团失败\":\"Хүн орхисон, бүлэг амжилтгүй боллоо\",\"拼团中,还差\":\"Бүлэгт байсаар байна \",\"人拼团成功\":\"Бүлэгт амжилттай нэгдэх хүн үлдсэн\",\"邀请好友参团\":\"Бүлэгт нэгдэх найзуудаа урих\",\"再次开团\":\"Дахин бүлэглэх\",\"取消开团\":\"Цуцлах\",\"查看订单信息\":\"Захиалга харах\",\"大家都在拼\":\"Бүх бүлэг\",\"更多拼团\":\"Илүү их\",\"邀请您参团\":\"Та нэгдэхийг урьж байна\",\"你不是该团的成员\":\"Та бүлгийн гишүүн биш\",\"已抢\":\"дээрэмдсэн\",\"抢购中\":\"Одоо шүүрч авах\",\"未开始\":\"Эхэлсэнгүй\",\"已结束\":\"Дээрх\",\"暂无商品,去看点别的吧\":\"Бүтээгдэхүүн байхгүй\",\"即将开始\":\"Эхэлсэнгүй\",\"距秒杀结束仅剩\":\"Төгсгөлд нь л үлдлээ\",\"累计销售\":\"Зарагдсан\",\"收藏\":\"Цуглуулах\",\"保存到手机\":\"Утсанд хадгалах\",\"长按图片可以保存到手机\":\"Утсанд хадгалахын тулд удаан дарна уу\",\"抢购详情页\":\"Худалдан авалтын дэлгэрэнгүй хуудас\",\"二维码获取失败\":\"QR код авч чадсангүй\",\"请选择属性\":\"Үл хөдлөх хөрөнгө сонгоно уу\",\"提示:点击图片即可保存至手机相册\":\"Зөвлөгөө: Зурган дээр дарж утасны цомогт хадгална уу\",\"拼团海报\":\"Тааварт зурагт хуудас\",\"砍价海报\":\"Хэлэлцэх зурагт хуудас\",\"海报生成中\":\"Зурагт хуудас үүсгэж байна\",\"海报图片获取失败\":\"Зурагт хуудасны зургийг авч чадсангүй\",\"海报\":\"Зурагт хуудас\",\"已预定\":\"Захиалагдсан\",\"预售价\":\"Урьдчилсан худалдаа\",\"立即预定\":\"Одоо захиалах\",\"开售时间\":\"Борлуулалтын хугацаа\",\"预售活动\":\"Борлуулалтын өмнөх арга хэмжээ\",\"起\":\"Өсөх\",\"划线价\":\"ORP\",\"开通“超级会员”立省\":\"\\\"Супер гишүүн\\\"-г унтрааж \",\"元\":\"$\",\"立即开通\":\"Одоо идэвхжүүл\",\"预售活动时间\":\"Борлуулалтын өмнөх хугацаа\",\"预售结束后\":\"Дотор тээвэрлэгддэг\",\"天内发货\":\"Борлуулалтын өмнөх худалдаа дууссаны дараах өдрүүд\",\"活动\":\"Үйл ажиллагаа\",\"参与秒杀\":\"Секкилл\",\"参与拼团\":\"Бүлэг\",\"复制口令\":\"Барааны кодыг хуулах\",\"复制成功\":\"Амжилттай хуулах\",\"推荐\":\"Санал болгож байна\",\"缺少经纬度信息无法查看地图\":\"Өргөрөг, уртрагийн мэдээлэл алга болсон тул газрын зургийг харж чадахгүй байна\",\"产品库存不足,请选择其它属性\":\"Бүтээгдэхүүний нөөц хангалтгүй, өөр шинж чанар сонгоно уу\",\"立即退款\":\"Шууд буцаан олгох\",\"一键改价\":\"Үнийг өөрчлөх\",\"订单备注\":\"Захиалгын тэмдэглэл\",\"商品总价\":\"Нийт үнэ\",\"原始邮费\":\"Хуучин шуудан\",\"实际支付\":\"Бодит үнэ\",\"退款金额\":\"Буцаан олголтын үнэ\",\"请填写备注信息\":\"Тайлбарыг бөглөнө үү\",\"立即修改\":\"Одоо засах\",\"确认退款\":\"Буцаан олголтоо баталгаажуулах\",\"拒绝退款\":\"Буцаан олголтоос татгалзсан\",\"取消\":\"Цуцлах\",\"订单号\":\"Захиалгын ID\",\"发货方式\":\"Гэрэмж\",\"发货类型\":\"Тээвэрлэлтийн төрөл\",\"快递公司\":\"Экспресс\",\"快递单号\":\"Тоо\",\"顺丰请输入单号 :收件人或寄件人手机号后四位\":\"SF Express-ийн хяналтын дугаарыг оруулна уу: хүлээн авагч эсвэл илгээгчийн гар утасны дугаарын сүүлийн дөрвөн орон\",\"例如:SF000000000000:3941\":\"Жишээ нь: SF000000000000:3941\",\"电子面单\":\"Цахим хуудас\",\"预览\":\"Урьдчилан харах\",\"寄件人姓名\":\"Илгээгчийн нэр\",\"填写寄件人姓名\":\"Илгээгчийн нэрийг бөглөнө үү\",\"寄件人电话\":\"Илгээгчийн утас\",\"填写寄件人电话\":\"Илгээгчийн утасны дугаарыг бөглөнө үү\",\"寄件人地址\":\"Илгээгчийн хаяг\",\"填写寄件人地址\":\"Илгээгчийн хаягийг бөглөнө үү\",\"送货人\":\"Хүргэгч\",\"确认提交\":\"Илгээх\",\"发货\":\"Усан онгоц\",\"送货\":\"Өгөх\",\"无需物流\":\"Шаардлагагүй\",\"手动填写\":\"Гараар бөглөх\",\"电子面单打印\":\"Цахим хуудас\",\"填写快递单号\":\"Шуудангийн дугаараа бөглөнө үү\",\"请选择电子面单\":\"Цахим баримт сонгоно уу\",\"待付款\":\"Төлбөр төлөх\",\"待发货\":\"Тээвэрлэх\",\"待收货\":\"Хүлээн авах\",\"待评价\":\"Үнэлгээ өгөх\",\"售后/退款\":\"Төлбөрийг буцаан олгох\",\"数据统计\":\"Статистик\",\"今日成交额\":\"Өнөөдөр зарагдсан\",\"昨日成交额\":\"Өчигдөр зарагдсан\",\"本月成交额\":\"Сар зарагдсан\",\"今日订单数\":\"Өнөөдрийн захиалга\",\"昨日订单数\":\"Өчигдрийн захиалга\",\"本月订单数\":\"Сарын захиалга\",\"详细数据\":\"Дэлгэрэнгүй мэдээлэл\",\"日期\":\"Огноо\",\"订单数\":\"Захиалгын тоо\",\"成交额\":\"Эргэц\",\"立即核销\":\"Одоо хас\",\"查看\":\"Харах\",\"确定要核销此订单吗\":\"Та энэ захиалгыг хассан гэдэгт итгэлтэй байна уу\",\"确定核销\":\"Баталгаажуулах\",\"请输入核销码\":\"Баталгаажуулах кодыг оруулна уу\",\"请输入正确的核销码\":\"Зөв баталгаажуулах код оруулна уу\",\"查询中\":\"Асуулга\",\"订单\":\"Захиалга\",\"订单未备注,点击添加备注信息\":\"Захиалгад ямар ч тайлбар байхгүй, тайлбар нэмэхийн тулд дарна уу\",\"复制\":\"Хуулбар\",\"件商品,应支付\":\"Төлбөр төлөх ёстой зүйлс\",\"邮费\":\"Шуудангийн мөнгө\",\"订单编号\":\"Захиалгын ID\",\"下单时间\":\"Захиалгын цаг\",\"支付状态\":\"Төлбөрийн төлөв\",\"已支付\":\"Төлсөн\",\"未支付\":\"Төлбөргүй\",\"支付方式\":\"Төлбөрийн арга\",\"买家留言\":\"Худалдан авагч MSG\",\"支付金额\":\"Төлбөрийн дүн\",\"优惠券抵扣\":\"Купоны хасалт\",\"运费\":\"Үнэ\",\"实付款\":\"Бодит дүн\",\"配送方式\":\"Хүргэх арга\",\"快递\":\"Экспресс\",\"送货人电话\":\"Шуудангийн утас\",\"确认付款\":\"Төлбөрийг баталгаажуулах\",\"去发货\":\"Тээвэрлэх\",\"改价成功\":\"Үнэ амжилттай өөрчлөгдсөн\",\"改价失败\":\"Үнийн өөрчлөлт амжилтгүй боллоо\",\"请输入备注\":\"Тэмдэглэл оруулна уу\",\"退款中\":\"Төлбөрийг буцаан олгох\",\"部分退款中\":\"Хэсэгчилсэн буцаан олголт\",\"件商品,实付款\":\"Бараа, төлсөн\",\"同意退货\":\"Буцахыг зөвшөөрч байна\",\"待用户发货\":\"Ачилгаагүй\",\"请输入正确的金额\":\"Зөв дүнг оруулна уу\",\"今天\":\"Өнөөдөр\",\"昨天\":\"Өчигдөр\",\"最近7天\":\"Сүүлийн 7 хоног\",\"本月\":\"Сар\",\"自定义\":\"Өөрчлөх\",\"营业额(元)\":\"Эргэц\",\"订单量(份)\":\"Тоо хэмжээ\",\"增长率\":\"Өсөх хувь\",\"增长\":\"Өсөх\",\"单位\":\"нэгж\",\"元.\":\"Юань\",\"分.\":\"Цент\",\"固定\":\"Тогтмол\",\"指定范围\":\"Хамрах хүрээ\",\"提交时间\":\"Илгээх хугацаа\",\"原因\":\"Шалтгаан\",\"暂无申请记录,快去申请吧!\":\"Одоохондоо өргөдлийн бүртгэл байхгүй, одоо өргөдөл гарга!\",\"没有更多啦\":\"Дахиад байхгүй\",\"待审核\":\"Хяналт хүлээгдэж байна\",\"审核通过\":\"Шалгалтад тэнцсэн\",\"审核未通过\":\"Шалгаж чадсангүй\",\"编辑\":\"Засварлах\",\"重新提交\":\"Дахин илгээх\",\"会员优惠价\":\"VIP хөнгөлөлт\",\"余额支付\":\"Төлбөрийн үлдэгдэл\",\"可用余额\":\"Тэнцвэр\",\"微信支付\":\"WeChat Pay\",\"确认\":\"Баталгаажуулах\",\"支付提醒\":\"Төлбөрийн сануулга\",\"线下支付已关闭,请点击确认按钮返回主页\":\"Оффлайн төлбөрийг хаасан тул баталгаажуулах товчийг дарж нүүр хуудас руу буцна уу\",\"请输入支付金额\":\"Төлбөрийн дүнг оруулна уу\",\"正在确认\":\"Баталгаажуулж байна\",\"进入商城\":\"Дэлгүүрт орох\",\"代理商名称\":\"Агентлагийн нэр\",\"请输入代理商名称\":\"Агентлагийн нэрийг оруулна уу\",\"用户姓名\":\"Таны нэр\",\"请输入姓名\":\"Нэрээ оруулна уу\",\"联系电话\":\"Таны утас\",\"请输入手机号\":\"Утасны дугаараа оруулна уу\",\"验证码\":\"OTP код\",\"填写验证码\":\"OTP кодыг бөглөнө үү\",\"邀请码\":\"Урилгын код\",\"请输入代理商邀请码\":\"Урилгын кодыг оруулна уу\",\"请上传营业执照及行业相关资质证明图片\":\"Аж ахуйн нэгжийн лиценз болон салбартай холбоотой мэргэшлийн гэрчилгээний зургийг байршуулна уу\",\"图片最多可上传10张,图片格式支持JPG、PNG、JPEG\":\"10 хүртэл зураг байршуулах боломжтой ба зургийн формат нь JPG, PNG, JPEG-г дэмждэг\",\"上传图片\":\"Байршуулах\",\"已阅读并同意\":\"Уншсан ба зөвшөөрч байна\",\"代理商协议\":\"Агентлагийн гэрээ\",\"提交申请\":\"Хүлээж өгөх\",\"代理商入驻协议\":\"Төлөөлөгчийн гэрээ\",\"恭喜,您的资料提交成功!\":\"Баяр хүргэе, амжилттай илгээлээ!\",\"返回首页\":\"Гэртээ буцах\",\"恭喜,您的资料通过审核!\":\"Баяр хүргэе, Шалгалт амжилттай боллоо!\",\"您的申请未通过!\":\"Таны өргөдлийг татгалзсан!\",\"重新申请\":\"Дахин өргөдөл гаргах\",\"获取验证码\":\"OTP код авах\",\"请输入正确的手机号码\":\"Утасны дугаараа зөв оруулна уу\",\"重新获取\":\"Дахин авах\",\"请上传营业执照\":\"Бизнесийн лицензийг байршуулна уу\",\"请勾选并同意入驻协议\":\"Мэргэжлийн гэрээг тэмдэглэж, зөвшөөрнө үү\",\"专题栏\":\"Сэдвийн багана\",\"暂无数据\":\"Өгөгдөл байхгүй\",\"请输入卡号\":\"Картын дугаараа оруулна уу\",\"请输入卡密\":\"Нууц үгээ оруулна уу\",\"确认激活\":\"Баталгаажуулах\",\"SVIP会员尊享权\":\"SVIP гишүүний эрх\",\"正在激活\":\"Идэвхжүүлж байна\",\"已使用\":\"Ашигласан\",\"永久SVIP会员\":\"Байнгын SVIP гишүүн\",\"SVIP会员\":\"SVIP гишүүн\",\"到期\":\"төлөвших\",\"您与\":\"Та нартай\",\"商城的第\":\"Худалдааны төв\",\"天.\":\"Өдөр.\",\"已累积为您节省\":\"Таны хуримтлуулсан хадгаламж\",\"开通即享会员权益\":\"Гишүүдийн үр шимийг хүртэх\",\"续费会员\":\"Шинэчлэх\",\"开通会员\":\"SVIP-д нэгдэх\",\"有效期至\":\"хүртэл хүчинтэй\",\"试用\":\"Оролдоод үзээрэй\",\"购买即视为同意\":\"Зөвшөөрлийн дагуу худалдан авах\",\"会员用户协议\":\"SVIP гэрээ\",\"点击兑换卡密\":\"Картыг эргүүлэн авахын тулд дарна уу\",\"会员优惠券\":\"SVIP купон\",\"SVIP商品推荐\":\"SVIP санал болгож байна\",\"商城价\":\"Дэлгүүрийн үнэ\",\"激活会员卡\":\"Картыг идэвхжүүлэх\",\"支付宝支付\":\"Алипай\",\"成功开启0元试用\":\"0 юанийн туршилтыг амжилттай нээсэн\",\"确认绑定\":\"Холбоо баталгаажуулах\",\"绑定成功\":\"Холбоо амжилттай боллоо\",\"商城客服已离线\":\"Хэрэглэгчийн үйлчилгээ офлайн байна\",\"我要反馈\":\"Би санал хүсэлт хүсч байна\",\"请填写内容\":\"Агуулгыг бөглөнө үү\",\"提交\":\"Илгээх\",\"精品推荐\":\"Санал болгож байна\",\"热门榜单\":\"Алдартай\",\"首发新品\":\"Шинэ\",\"促销单品\":\"Урамшуулал\",\"预告\":\"Мэдэгдэл\",\"回放\":\"Тоглуулах\",\"进行中\":\"боловсруулж байна\",\"发送客服\":\"Илгээх\",\"客服连接中\":\"Хэрэглэгчийн үйлчилгээ холбогдож байна\",\"连接失败\":\"Холболт амжилтгүй боллоо\",\"提示\":\"Зөвлөгөө\",\"客服已下线,是否需要反馈?\":\"Хэрэглэгчийн үйлчилгээ офлайн байна, танд санал хүсэлт хэрэгтэй байна уу?\",\"和好友一起分享\":\"Найзуудтайгаа хуваалцах\",\"积分抵扣\":\"Оноо хасалт\",\"已开票\":\"Төлбөр тооцсон\",\"未开票\":\"Нэхэмжлэл гаргаагүй\",\"发票信息\":\"Нэхэмжлэлийн мэдээлэл\",\"发票抬头\":\"Нэхэмжлэх\",\"发票抬头类型\":\"Нэхэмжлэлийн толгойн төрөл\",\"个人\":\"НЭГ\",\"企业\":\"COM\",\"发票类型\":\"Нэхэмжлэлийн төрөл\",\"电子普通发票\":\"Цахим ерөнхий нэхэмжлэх\",\"电子专用发票\":\"Цахим тусгай нэхэмжлэх\",\"企业税号\":\"Аж ахуйн нэгжийн татвар\",\"联系信息\":\"Холбоо барих мэдээлэл\",\"真实姓名\":\"Жинхэнэ нэр\",\"联系邮箱\":\"И-мэйл\",\"抬头选择\":\"Толгой сонгох\",\"默认\":\"Өгөгдмөл\",\"普通\":\"Энгийн\",\"专用\":\"Зориулагдсан\",\"您还没有添加发票信息哟\":\"Та нэхэмжлэхийн мэдээллийг нэмээгүй байна\",\"添加新的抬头\":\"Шинэ гарчиг нэмэх\",\"不开发票\":\"Нэхэмжлэхгүй\",\"抽奖\":\"Сугалаа\",\"全选\":\"Бүгдийг сонгох\",\"属性\":\"Атрибутууд\",\"请填写具体地址\":\"Тодорхой хаягаа оруулна уу\",\"省\":\"Аймаг\",\"市\":\"Хот\",\"区\":\"Талбай\",\"添加成功\":\"Амжилттай нэмэх\",\"您已拒绝导入微信地址权限\":\"Та WeChat хаягийг импортлох зөвшөөрлийг татгалзсан байна\",\"是否进入权限管理,调整授权?\":\"Та зөвшөөрлийн удирдлагад орж, зөвшөөрлийг тохируулж байна уу?\",\"已取消\":\"Цуцлагдсан\",\"添加失败\":\"Нэмж чадсангүй\",\"请填写收货人姓名\":\"Ачаа хүлээн авагчийн нэрийг бичнэ үү\",\"请选择所在地区\":\"Бүсээ сонгоно уу\",\"请填写详细地址\":\"Дэлгэрэнгүй хаягийг бөглөнө үү\",\"星\":\"Од\",\"商品满足你的期待么?说说你的想法,分享给想买的他们吧\":\"Бүтээгдэхүүн таны хүлээлтийг хангаж байна уу? Та юу гэж бодож байгаагаа хэлж, худалдан авахыг хүссэн хүмүүстэй хуваалцаарай\",\"立即评价\":\"Одоо үнэлэх\",\"商品质量\":\"Бүтээгдэхүүний чанар\",\"服务态度\":\"Үйлчилгээний хандлага\",\"缺少参数\":\"Дутуу параметрүүд\",\"请填写你对宝贝的心得\":\"Бүтээгдэхүүний талаар санал бодлоо бичнэ үү\",\"正在发布评论\":\"Сэтгэгдэл бичих\",\"感谢您的评价\":\"Таны шүүмж өгсөнд баярлалаа\",\"评价完成\":\"Шалгаж дууссан\",\"恭喜您\":\"Баяр хүргэе\",\"获得\":\"авах\",\"机会\":\"Боломж\",\"领取成功\":\"Амжилттай хүлээн авсан\",\"评分\":\"Оноо\",\"全部\":\"БҮХ\",\"好评\":\"Магтаал\",\"中评\":\"Дундаж\",\"差评\":\"Муу\",\"加载更多\":\"Илүү ачаалж байна\",\"千米距离\":\"километрийн зайд\",\"搜索商品名称\":\"Бүтээгдэхүүн хайх\",\"价格\":\"Үнэ\",\"销量\":\"Зарагдсан\",\"新品\":\"Шинэ\",\"已全部加载\":\"Бүгд ачаалагдсан\",\"缺少订单号\":\"Захиалгын ID дутуу\",\"退货件数\":\"Буцаасан дугаар\",\"退款类型\":\"Буцаан олголтын төрөл\",\"退款原因\":\"Төлбөрийг буцаан олгох шалтгаан\",\"备注说明\":\"Тэмдэглэл\",\"填写备注信息,100字以内\":\"100 үг доторх тайлбар\",\"仅退款\":\"Зөвхөн буцаан олголт\",\"退货并退款\":\"Буцах ба буцаан олгох\",\"申请成功\":\"Амжилттай өргөдөл гаргасан\",\"请先选择退货商品\":\"Эхлээд буцаах зүйлээ сонгоно уу\",\"搜索历史\":\"Хайлтын түүх\",\"热门搜索\":\"Халуун хайлт\",\"请输入要搜索的商品\":\"Хайхыг хүсэж буй бүтээгдэхүүнээ оруулна уу\",\"正在搜索中\":\"Хайж байна\",\"中奖记录\":\"Ялалтын рекорд\",\"我的奖品\":\"Миний шагнал\",\"活动规则\":\"Үйл ажиллагааны дүрэм\",\"昵称\":\"Хоч\",\"序号\":\"Цуваа\",\"奖品名称\":\"Шагналын нэр\",\"获奖时间\":\"Хожих хугацаа\",\"商家暂未上架活动哦\":\"Худалдаач үйл явдлыг хараахан жагсаагүй байна\",\"获取抽奖信息\":\"Сугалааны мэдээлэл авах\",\"奖品类型\":\"Шагналын төрөл\",\"立即兑换\":\"Одоо эргүүлэн авах\",\"兑换时间\":\"Хугацаа солилцох\",\"暂无中奖记录\":\"Ялалтын рекорд байхгүй\",\"积分\":\"Цэг\",\"余额\":\"Тэнцвэр\",\"红包\":\"Бэлэн мөнгө\",\"设置收货地址\":\"Тээвэрлэлтийн хаягийг тохируулах\",\"暂无门店信息\":\"Дэлгүүрийн мэдээлэл алга\",\"剩余积分\":\"Үлдсэн оноо\",\"当前积分\":\"Одоогийн цэгүүд\",\"开具发票\":\"Нэхэмжлэх\",\"请填写\":\"Бөгнө үү\",\"配送运费\":\"Тээвэрлэлтийн хураамж\",\"会员商品优惠\":\"Бүтээгдэхүүний санал\",\"会员运费优惠\":\"Тээвэрлэлтийн санал\",\"合计\":\"Нийт\",\"使用微信快捷支付\":\"WeChat хурдан төлбөр\",\"使用支付宝支付\":\"Alipay-ээр төлөх\",\"线下支付\":\"Оффлайн төлбөр\",\"使用线下付款\":\"Офлайн төлбөр ашиглах\",\"好友代付\":\"Найз төлдөг\",\"找微信好友支付\":\"Төлбөр төлөх найзуудаа ол\",\"立即使用\":\"Ашиглах\",\"请选择要购买的商品\":\"Худалдан авах зүйлээ сонгоно уу\",\"发票\":\"Нэхэмжлэх\",\"不使用\":\"Бүү ашигла\",\"订单创建成功\":\"Захиалга амжилттай үүсгэгдсэн\",\"请选择支付方式\":\"Төлбөрийн хэрэгслээ сонгоно уу\",\"请选择收货地址\":\"Хүргэх хаягаа сонгоно уу\",\"请填写联系人或联系人电话\":\"Харилцах хүн эсвэл холбоо барих утасны дугаараа оруулна уу\",\"暂无门店,请选择其他方式\":\"Одоогоор дэлгүүр байхгүй, өөр арга сонгоно уу\",\"请输入\":\"Оруулна уу\",\"请输入正确的\":\"Зөвийг оруулна уу\",\"请上传\":\"Хуулбарлана уу\",\"订单支付中\":\"Төлбөр төлж байна\",\"请按以上退货信息将商品退回\":\"Мэдээллийн хамт барааг буцаана уу\",\"请联系管理员获取退货地址\":\"Буцах хаягийг админаас авна уу\",\"待核销\":\"Бичигдсэн\",\"核销信息\":\"Басгах мэдээлэл\",\"营业时间\":\"Ажлын цаг\",\"每日\":\"Өдөр бүр\",\"使用说明\":\"Ашиглах заавар\",\"可将二维码出示给店员扫描或提供数字核销码\":\"QR кодыг сканнердах эсвэл дижитал баталгаажуулах код өгөхийн тулд бичиг хэргийн ажилтанд үзүүлж болно\",\"可将二维码出示给配送员进行核销\":\"QR кодыг шуудан зөөгч рүү өгч баталгаажуулах боломжтой\",\"查看位置\":\"Байршил харах\",\"拒绝原因\":\"Татгалзах шалтгаан\",\"联系客服\":\"Холбоо барих\",\"商家备注\":\"Худалдааны тэмдэглэл\",\"收货人\":\"Хүлээн авагч\",\"收货地址\":\"Хөлөг онгоцны хаяг\",\"配送人姓名\":\"Хөлөг онгоцны нэр\",\"拨打\":\"Дуудлага\",\"虚拟发货\":\"Виртуал хөлөг онгоц\",\"已发货,请注意查收\":\"Ачуулсан, шалгана уу\",\"虚拟备注\":\"Виртуал тэмдэглэл\",\"总代付\":\"Нийт дүн\",\"申请开票\":\"Нэхэмжлэх хэрэглэх\",\"查看发票\":\"Нэхэмжлэхийг харах\",\"取消订单\":\"Цуцлах\",\"立即付款\":\"Төлбөр\",\"批量退款\":\"Бөөнөөр буцаан олгох\",\"查看拼团\":\"Бүлэг харах\",\"再次购买\":\"Дахин худалдаж авах\",\"取消申请\":\"Хэрэглэхээ цуцлах\",\"填写退货信息\":\"Буцах мэдээлэл\",\"查看退货物流\":\"Логистик\",\"您确认放弃此次申请吗\":\"Та энэ програмыг орхихыг хүсэж байна уу\",\"操作成功\":\"Амжилттай ажиллагаа\",\"订单信息不存在\":\"Захиалгын мэдээлэл байхгүй байна\",\"为保障权益,请收到货确认无误后,再确认收货\":\"Эрх, ашиг сонирхлыг хамгаалах үүднээс барааг хүлээн авсан эсэхээ баталгаажуулсны дараа барааг хүлээн авсан эсэхээ баталгаажуулна уу.\",\"删除订单\":\"Захиалга устгах\",\"确定删除该订单\":\"Устгах дарааллыг баталгаажуулах\",\"删除成功\":\"Амжилттай устгасан\",\"确认取消该订单\":\"Захиалга цуцлахыг баталгаажуулах\",\"订单信息\":\"Захиалгын мэдээлэл\",\"消费订单\":\"Захиалга\",\"总消费\":\"Нийт дүн\",\"预售\":\"Урьдчилсан худалдаа\",\"线下付款,未支付\":\"Оффлайн төлбөргүй\",\"未核销\":\"Бичигдээгүй\",\"件商品,总金额\":\"зүйлс, нийт дүн\",\"查看详情\":\"Харах\",\"暂无订单\":\"Одоохондоо захиалга алга\",\"缺少订单号无法取消订单\":\"Захиалгын дугааргүйгээр захиалгыг цуцлах боломжгүй\",\"订单支付成功\":\"Захиалга амжилттай төлсөн\",\"订单支付失败\":\"Захиалга төлж чадсангүй\",\"暂未支付\":\"Хараахан төлөөгүй байна\",\"失败原因\":\"амжилтгүй болсон шалтгаан\",\"重新购买\":\"Дахин худалдан авах\",\"重新支付\":\"Дахин төлөх\",\"赠送优惠券\":\"Купон өгөх\",\"有效期\":\"Хүчин төгөлдөр байдал\",\"缺少参数无法查看订单支付状态\":\"Дутуу параметрүүд захиалгын төлбөрийн төлөвийг харах боломжгүй\",\"最多可上传3张\":\"3 хүртэл байршуулалт\",\"请选择产品\":\"Бүтээгдэхүүнээ сонгоно уу\",\"该产品没有更多库存了\":\"Энэ бүтээгдэхүүний нөөц байхгүй\",\"优品推荐\":\"Шилдэг зөвлөмж\",\"暂无产品\":\"Одоохондоо бүтээгдэхүүн алга\",\"重新选择\":\"Дахин сонгох\",\"请选择数量\":\"Тоо хэмжээг сонгоно уу\",\"砍价专区·BARGAINING\":\"ХЭРЭГЛЭЭ\",\"立即砍价\":\"Одоо таслах\",\"拼团活动\":\"Бүлэг\",\"人拼团成功.\":\"Хүмүүс амжилтанд хүрсэн\",\"人参团\":\"Хүн орхоодой бүлэг\",\"拼团价\":\"Бүлгийн үнэ\",\"已过期\":\"Хугацаа дууссан\",\"关注\":\"Дагах\",\"推荐好货\":\"Барааг санал болгох\",\"暂无商品\":\"Одоохондоо бүтээгдэхүүн алга\",\"限时秒杀\":\"Хязгаарлагдмал хугацаа\",\"抢\":\"Барьж авах\",\"广告位\":\"ADV зай\",\"精彩内容\":\"Онцлох үйл явдал\",\"砍价模块,暂无数据\":\"Худалдааны модуль, одоогоор өгөгдөл алга байна\",\"砍价活动\":\"Хэлэлцэх\",\"呼朋唤友来砍价\":\"Найзуудаа дуудаарай.\",\"拼团模块,暂无数据\":\"Бүлгийн модуль, одоогоор өгөгдөл алга\",\"享超值开团价\":\"Мөнгөний үнэ цэнийн бүлгийн үнээс таашаал аваарай\",\"优惠券,暂无数据\":\"Купон, мэдээлэл түр байхгүй\",\"领取今日好券\":\"Өнөөдрийн сайн купон аваарай\",\"可用\":\"Ашигласан\",\"领取\":\"Нэхэмжлэл\",\"客服\":\"Үйлчилгээ\",\"商品列表,暂无数据\":\"Түр дата байхгүй\",\"搜索商品\":\"Бүтээгдэхүүн хайх\",\"暂无图片,请上传图片\":\"Зураг байхгүй, байршуулна уу\",\"首发新品,暂无数据\":\"Анхны шинэ бүтээгдэхүүн, хараахан өгөгдөл алга\",\"多个优质商品最新上架\":\"Лангуун дээрх хамгийн сүүлийн үеийн өндөр чанартай бараа\",\"暂无新闻,请上传新闻\":\"Мэдээ байхгүй, мэдээгээ оруулна уу\",\"热度 TOP\":\"ДЭЭД халаах\",\"排行榜、暂无数据\":\"Тэргүүлэх самбар, түр өгөгдөл байхгүй\",\"促销单品,暂无数据\":\"Урамшууллын зүйл, мэдээлэл түр байхгүй\",\"库存商品优惠促销活动\":\"Нөөцөд байгаа барааг сурталчлах үйл ажиллагаа\",\"精品推荐,暂无数据\":\"Дэлгүүрийн зөвлөмж, хараахан өгөгдөл алга\",\"上百种商品分类任您选择\":\"Таны сонгох боломжтой олон зуун бүтээгдэхүүний ангилал\",\"秒杀模块,暂无数据\":\"Seckill модуль, өгөгдөл түр байхгүй\",\"场\":\"Сайт\",\"暂无数据,请设置\":\"Өгөгдөл байхгүй, тохируулна уу\",\"暂无数据,请先添加分类\":\"Өгөгдөл байхгүй, эхлээд ангиллыг нэмнэ үү\",\"暂无标题\":\"Түр зуур гарчиг байхгүй\",\"诚意推荐品质商品\":\"Сайн санааны үүднээс чанартай бараа санал болгох\",\"点击“立即关注”即可关注公众号\":\"Албан ёсны бүртгэлийг дагахын тулд 'одоо дагах' дээр дарна уу\",\"立即关注\":\"Одоо дага\",\"添加到我的小程序, 微信首页下拉即可访问商城。\":\"Үүнийг миний апплетад нэмээд wechat нүүр хуудсыг доош татаж худалдааны төв рүү нэвтрэх боломжтой\",\"点击\":\"Дарна уу\",\"服务协议与隐私政策\":\"Үйлчилгээний гэрээ ба нууцлалын бодлого\",\"请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。\":\"Үйлчилгээний гэрээ болон нууцлалын бодлогыг анхааралтай уншиж, бүрэн ойлгоно уу, үүнд: Танд шуурхай зурвас илгээх, контент хуваалцах болон бусад үйлчилгээг үзүүлэхийн тулд бид таны төхөөрөмжийг цуглуулах шаардлагатай. мэдээлэл, үйлдлийн бүртгэл болон бусад хувийн мэдээлэл. Та хувийн мэдээллээ харах, өөрчлөх, устгах, зөвшөөрлөө удирдах боломжтой Тохиргоо\",\"你可以阅读\":\"Та уншиж болно\",\"《服务协议与隐私政策》\":\"Үйлчилгээний гэрээ ба нууцлалын бодлого\",\"了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。\":\"Дэлгэрэнгүй үзэх. Хэрэв та зөвшөөрвөл 'Би зөвшөөрч байна' гэснийг товшино уу, манай үйлчилгээг хүлээн зөвшөөрч эхэлнэ\",\"我同意\":\"Би зөвшөөрч байна\",\"残忍拒绝\":\"Харгис няцаалт\",\"下拉加载更多\":\"Ачааллыг доош нь татах\",\"网络连接断开\":\"Сүлжээний холболт тасарсан\",\"请检查情况:\":\"Нөхцөлийг шалгана уу:\",\"在设置中是否已开启网络权限\":\"Тохиргоонд сүлжээний зөвшөөрлийг идэвхжүүлсэн эсэх\",\"当前是否处于弱网环境\":\"Одоогоор сүлжээний орчинд сул байна\",\"版本是否过低,升级试试吧\":\"Хувилбар хэт бага байвал шинэчилж үзнэ үү\",\"重新连接\":\"дахин холбогдох\",\"加载中\":\"Ачааж байна\",\"没有更多内容啦~\":\"Дахиад контент байхгүй~\",\"100%正品保证\":\"100% жинхэнэ\",\"所有商品精挑细选\":\"Маш сонгомол бай\",\"售后无忧\":\"Зарагдсаны дараа санаа зоволтгүй\",\"管理\":\"Хоолой\",\"购物数量\":\"Худалдааны тоо\",\"请重新选择商品规格\":\"Бүтээгдэхүүний тодорхойлолтыг дахин сонгоно уу\",\"重选\":\"Дахин сонголт\",\"失效商品\":\"Хүчингүй бараа\",\"失效\":\"Бүтэлгүйтэл\",\"该商品已失效\":\"Барааны хугацаа дууссан\",\"立即下单\":\"Одоо захиалах\",\"我也是有底线的\":\"Надад бас үр дүн бий\",\"产品库存不足,请选择其它\":\"Бүтээгдэхүүний нөөц хангалтгүй, өөрийг сонгоно уу\",\"添加购物车成功\":\"Сагсыг амжилттай нэмлээ\",\"清除成功\":\"Цэвэрлэгээ амжилттай боллоо\",\"暂无兑换记录~\":\"Валютын бүртгэл байхгүй~\",\"大家都在换\":\"Хүн бүр өөрчлөгдөж байна\",\"人兑换\":\"Хүн солилцох\",\"轻松赚积分\":\"Амархан оноо цуглуул\",\"购买商品\":\"Бараа худалдаж авах\",\"购买商品可获得积分奖励\":\"Бараа худалдаж авсан онооны шагнал\",\"去完成\":\"Яв\",\"每日签到活动\":\"Өдөр тутмын бүртгэлийн үйл ажиллагаа\",\"每日签到可获得积分奖励\":\"Өдөр бүр бүртгүүлснээр онооны урамшуулал авах боломжтой\",\"九宫格抽奖活动\":\"Jiugongge сугалаа\",\"幸运抽奖可获得积分奖励\":\"Азтай сугалаа онооны шагнал авах боломжтой\",\"我的积分\":\"Миний оноо\",\"每日签到\":\"Өдөр бүр нэвтрэх\",\"积分抽奖\":\"Онооны сугалаа\",\"兑换记录\":\"солилцооны бичлэг\",\"已兑换\":\"Гэтгэсэн\",\"无法兑换\":\"Зохицуулах боломжгүй\",\"[默认]\":\"[Өгөгдмөл]\",\"可用积分\":\"Боломжтой оноо\",\"快递费用\":\"Экспресс хураамж\",\"免运费\":\"Ачаа үнэгүй\",\"备注信息\":\"Тэмдэглэл\",\"请添加备注(150字以内)\":\"Тэмдэглэл (150 үг дотор) нэмнэ үү\",\"使用线上支付宝支付\":\"Онлайн Alipay-ээр төлбөр хийх\",\"可用余额:\":\"Үлдэл:\",\"选择线下付款方式\":\"Офлайн төлбөрийн аргыг сонгох\",\"正在加载…\":\"Ачааж байна...\",\"可用积分不足!\":\"Боломжийн оноо хангалтгүй!\",\"订单状态\":\"Захиалгын байдал\",\"支付积分\":\"Төлбөрийн оноо\",\"备注\":\"Тэмдэглэл\",\"配送核销码\":\"Хүргэлтийн баталгаажуулах код\",\"当前可用余额:\":\"Одоо байгаа үлдэгдэл:\",\"正在加载\":\"Ачааж байна\",\"缺少经纬度信息无法查看地图!\":\"Газрын зургийг уртраг, өргөргийн мэдээлэлгүйгээр үзэх боломжгүй!\",\"商品兑换成功\":\"Амжилттай зарцуулагдсан\",\"兑换方式\":\"солилцооны арга\",\"积分兑换\":\"Цэгийн солилцоо\",\"兑换积分\":\"Оноо эргүүлэн авах\",\"取消兑换\":\"солилцоо цуцлах\",\"缺少参数无法查看订单兑换状态\":\"Захиалгын солилцооны төлөвийг параметргүйгээр харах боломжгүй\",\"用户离开了\":\"Хэрэглэгч явсан\",\"兑换成功\":\"Амжилттай зарцуулагдсан\",\"物流公司\":\"Логистикийн компани\",\"复制单号\":\"Баримт бичгийн дугаарыг хуулах\",\"设为默认\":\"Өгөгдмөлөөр тохируулах\",\"添加新地址\":\"Шинэ хаяг нэмэх\",\"导入微信地址\":\"Wechat хаяг импортлох\",\"取消选择\":\"Сонголтыг цуцлах\",\"您设置的默认地址不存在!\":\"Таны тохируулсан өгөгдмөл хаяг байхгүй байна!\",\"设置成功\":\"Тохиргоо амжилттай боллоо\",\"您删除的地址不存在!\":\"Таны устгасан хаяг байхгүй байна!\",\"获取头像\":\"Аватар авах\",\"请点击授权\":\"Зөвшөөрөх товчийг дарна уу\",\"绑定手机号\":\"Гар утасны дугаарыг холбох\",\"永久\":\"Байнгын\",\"会员到期\":\"Гишүүнчлэлийн хугацаа дуусах\",\"未开通会员\":\"Нээлттэй гишүүн биш\",\"查看会员权益\":\"Гишүүнчлэлийн үр өгөөжийг харах\",\"立即续费\":\"Шинэчлэх\",\"立即激活\":\"Идэвхжүүлэх\",\"会员可享多项权益\":\"Олон үр шимийг хүртээрэй\",\"订单中心\":\"Миний захиалга\",\"我的服务\":\"Миний үйлчилгээ\",\"隐私协议\":\"Нууцлал\",\"商家管理\":\"Бизнесийн удирдлага\",\"更新用户信息成功\":\"Хэрэглэгчийн мэдээллийг амжилттай шинэчилсэн\",\"客服接待\":\"хүлээн авах\",\"点击复制网址去浏览器中打开\":\"Хөтч дээр нээхийн тулд URL хуулах дээр дарна уу\",\"点击复制\":\"Хуулбар дээр дарна уу\",\"完成支付\":\"Төлбөрийг дуусгах\",\"点击右上角\":\"Баруун дээд буланд дарна уу\",\"选择 在浏览器 打开,去支付宝支付\":\"Хөтөч дээр нээж, Alipay-ээр төлөхийг сонго\",\"支付订单不存在,页面将在2秒后自动关闭!\":\"Төлбөрийн даалгавар байхгүй, хуудас 2 секундын дараа автоматаар хаагдах болно!\",\"正在支付中\":\"Төлбөр төлж байна\",\"支付订单不存在,页面将在2秒后自动关闭\":\"Төлбөрийн захиалга байхгүй, хуудас 2 секундын дараа автоматаар хаагдах болно\",\"复制失败\":\"Хуулбарлах амжилтгүй\",\"您目前的排名\":\"Таны одоогийн зэрэглэл\",\"您目前暂无排名\":\"Та одоо эрэмбэлж байна\",\"暂无排名~\":\"Жагсаалт байхгүй ~\",\"输入手机号\":\"Гар утасны дугаар оруулна уу\",\"输入验证码\":\"Баталгаажуулах кодыг оруулна уу\",\"立即登录\":\"Одоо нэвтэрнэ үү\",\"请填写手机号码\":\"Гар утасны дугаараа оруулна уу\",\"请填写验证码\":\"Баталгаажуулах кодыг бөглөнө үү\",\"请输入正确的验证码\":\"Зөв баталгаажуулах код оруулна уу\",\"正在登录中\":\"Нэвтэрч байна\",\"登录成功\":\"Нэвтрэх амжилттай\",\"获取授权\":\"Зөвшөөрөл авч байна\",\"获取微信的手机号授权\":\"wechat гар утасны дугаарын зөвшөөрөл авах\",\"获取微信手机号\":\"wechat гар утасны дугаар авах\",\"输入手机号码\":\"Гар утасны дугаар оруулна уу\",\"填写登录密码\":\"Нэвтрэх нууц үгээ бөглөнө үү\",\"登录\":\"Нэвтрэх\",\"快速登录\":\"Хурдан нэвтрэх\",\"账号登录\":\"Бүртгэлд нэвтрэх\",\"其他方式登录\":\"Бусад аргаар нэвтрэх\",\"登录中\":\"Нэвтэрч байна\",\"获取用户信息失败\":\"Хэрэглэгчийн мэдээллийг авч чадсангүй\",\"请绑定手机号后,继续操作\":\"Гар утасны дугаараа залгаад үйл ажиллагаагаа үргэлжлүүлнэ үү\",\"错误信息\":\"Алдааны мэдээлэл\",\"用户点击确定\":\"Хэрэглэгч OK дарна\",\"用户点击取消\":\"Хэрэглэгч Цуцлах дээр дарна\",\"登录失败\":\"Нэвтрэх алдаа\",\"请勿重复点击\":\"Дахин дахин дарж болохгүй\",\"请填写密码\":\"Нууц үгээ оруулна уу\",\"您输入的密码过于简单\":\"Таны оруулсан нууц үг хэтэрхий энгийн байна\",\"请填写账号\":\"Дансны дугаарыг бөглөнө үү\",\"请输入正确的账号\":\"Зөв дансны дугаар оруулна уу\",\"[图片]\":\"[Зураг]\",\"[语音]\":\"[дуу хоолой]\",\"[商品]\":\"[Бүтээгдэхүүн]\",\"[订单]\":\"[Захиалга]\",\"亲、暂无消息记录哟!\":\"Эрхэм ээ, одоохондоо мессеж бичээгүй байна!\",\"站内消息\":\"Станцын мессеж\",\"客服消息\":\"Хэрэглэгчийн үйлчилгээний мессеж\",\"通知于\":\"Мэдэгдэл өгсөн\",\"获取详情中\":\"Дэлгэрэнгүй мэдээллийг авах\",\"代付订单创建成功,发给好友帮你付款吧~\":\"Төлбөрийн захиалга амжилттай үүсгэгдсэн тул төлбөрөө төлөхөд тань туслахын тулд үүнийг найздаа илгээнэ үү ~\",\"帮我付一下这件商品了,谢谢~\":\"Надад энэ барааны төлбөрийг төлөхөд тусална уу, баярлалаа ~\",\"已经有人替我代付,谢谢啦~\":\"Хэн нэгэн миний төлбөрийг төлсөн, баярлалаа ~\",\"谢谢你帮我支付,么么哒~\":\"Намайг төлөхөд тусалсанд баярлалаа, Мода ~\",\"我已为你代付成功,商家正在努力发货中~\":\"Би таны төлбөрийг амжилттай төлж, худалдаачин хүргэхийг оролдож байна ~\",\"好友代付成功,商家正在努力发货中~\":\"Найзын төлбөр амжилттай болсон бөгөөд худалдаачин хүргэхийг оролдож байна ~\",\"发送给微信好友\":\"Wechat найзууд руу илгээх\",\"查看订单详情\":\"Захиалгын дэлгэрэнгүйг харах\",\"订单已支付\":\"Захиалга төлсөн\",\"如果订单申请退款,已支付金额将原路退还给您\":\"Хэрэв захиалга буцаан олголтод хамрагдсан бол төлсөн дүнг тань ижил аргаар буцаан олгоно\",\"代付成功\":\"Төлбөр амжилттай боллоо\",\"谢谢你为我付款,还可以再去看看其他商品哟~\":\"Миний төлбөрийг төлсөнд баярлалаа, та өөр бараа үзэхээр явж болно ~\",\"该订单暂未支付\":\"Захиалга хараахан төлөгдөөгүй байна\",\"人\":\"Хүн\",\"推广人数\":\"Дэмжигчдийн тоо\",\"一级\":\"1-р түвшин\",\"二级\":\"2-р түвшин\",\"点击搜索会员名称\":\"Гишүүн нэрийг хайх бол товшино уу\",\"团队排序\":\"Багийн эрэмбэлэх\",\"金额排序\":\"Дэмжээ ангилах\",\"订单排序\":\"Захиалга эрэмбэлэх\",\"单\":\"Захиалга\",\"加入时间\":\"Нэгдэх цаг\",\"累积推广订单\":\"Захиалгын тоо\",\"本月累计推广订单\":\"Сарын захиалга\",\"返佣\":\"Хөнгөлөлт\",\"暂未返佣\":\"Хөнгөлөхгүй\",\"返佣时间\":\"Хөнгөлөх хугацаа\",\"单号\":\"Захиалгын дугаар\",\"暂无推广订单~\":\"Урамшууллын захиалга байхгүй ~\",\"推广订单列表\":\"Урамшууллын захиалгын жагсаалт\",\"找回密码\":\"Нууц үг сэргээх\",\"填写您的新密码\":\"Шинэ нууц үгээ бөглөнө үү\",\"加载失败\":\"Ачаалал алдаа\",\"点击授权登录您的客服工作台\":\"Хэрэглэгчийн үйлчилгээний ажлын хэсэгт нэвтрэхийн тулд зөвшөөрөл дээр дарна уу\",\"授权登录\":\"Зөвшөөрөлтэй нэвтрэх\",\"没有登录的code,请重新扫码\":\"Нэвтрэхгүйгээр код, кодыг дахин уншина уу\",\"员工人数\":\"Ажилчдын тоо\",\"邀请\":\"Урилга\",\"分佣比例\":\"Масштаб\",\"修改分佣比例\":\"Пропорцийг өөрчлөх\",\"请输入百分比\":\"Хувиар оруулна уу\",\"删除员工\":\"Ажилтныг устгах\",\"确定删除该员工?\":\"Та энэ ажилтныг устгахдаа итгэлтэй байна уу?\",\"请输入比例\":\"Мажаараа оруулна уу\",\"分类\":\"Анги\",\"我的\":\"Минийх\",\"姓名\":\"Нэр\",\"请输入联系电话\":\"Холбоо барих дугаараа оруулна уу\",\"所在地区\":\"Байршил\",\"详细地址\":\"Хаяг\",\"设置为默认地址\":\"Өгөгдмөл хаягаар тохируулах\",\"立即保存\":\"Одоо хадгалах\",\"浙江省\":\"Жэжян\",\"杭州市\":\"Ханжоу\",\"滨江区\":\"Бинжиан дүүрэг\",\"广东省\":\"Гуандун муж\",\"广州市\":\"Гуанжоу\",\"番禺区\":\"Панью\",\"修改地址\":\"Хаяг өөрчлөх\",\"添加地址\":\"Хаяг нэмэх\",\"已取消!\":\"Цуцлагдсан!\",\"请填写联系电话\":\"Холбоо барих дугаараа бөглөнө үү\",\"保存中\":\"Хадгалах\",\"修改成功\":\"Өөрчлөлт амжилттай болсон\",\"消费\":\"Хэрэглээ\",\"充值\":\"Цэнэглэх\",\"暂无账单的记录哦~\":\"Түр дансны бүртгэл байхгүй~\",\"点击【立即注销】即代表您已经同意《用户注销协议》\":\"[Шууд гарах] дээр дарснаар та хэрэглэгчээс гарах гэрээг зөвшөөрсөн гэсэн үг\",\"立即注销\":\"Одоо гарна уу\",\"是否确认注销\":\"Гарахыг баталгаажуулах\",\"注销后无法恢复,请谨慎操作\":\"Гарсны дараа сэргээх боломжгүй, болгоомжтой байгаарай\",\"注销\":\"Гарах\",\"持卡人\":\"карт эзэмшигч\",\"请输入持卡人姓名\":\"Карт эзэмшигчийн нэрийг оруулна уу\",\"卡号\":\"Картын дугаар\",\"请填写卡号\":\"Картын дугаарыг бөглөнө үү\",\"银行\":\"Банк\",\"提现\":\"Татаж авах\",\"最低提现金额\":\"Мөнгө гаргах хамгийн бага хэмжээ\",\"当前可提现金额\":\"Одоогийн авах боломжтой дүн\",\"冻结佣金\":\"Царцаасан комисс\",\"说明: 每笔佣金的冻结期为\":\"Тэмдэглэл: комисс бүрийн хөлдөөх хугацаа\",\"天,到期后可提现\":\"Хугацаа дууссаны дараа буцаан авах боломжтой өдрүүд\",\"账号\":\"Бүртгэл\",\"请填写您的微信账号\":\"Wechat дансаа бөглөнө үү\",\"收款码\":\"Цуглуулгын код\",\"请填写您的支付宝账号\":\"Alipay дансны дугаараа бөглөнө үү\",\"请选择银行\":\"Банк сонгоно уу\",\"银行卡\":\"Банкны карт\",\"微信\":\"Wechat\",\"支付宝\":\"Алипай\",\"请填写持卡人姓名\":\"Карт эзэмшигчийн нэрийг оруулна уу \",\"请填写微信号\":\"Wechat-ыг бөглөнө үү\",\"请填写提现金额\":\"Татан авалтын дүнг бөглөнө үү\",\"提现金额不能低于\":\"Татан авалтын дүн түүнээс бага байж болохгүй\",\"未使用\":\"Ашиглагдаагүй\",\"已使用/过期\":\"Ашигласан/хугацаа нь дууссан\",\"通用劵\":\"Ерөнхий үнэт цаас\",\"一级分佣上浮\":\"Нэг шат ахисан\",\"二级分佣上浮\":\"Хоёрдогч хөвөгч\",\"快速升级技巧\":\"Хурдан сайжруулах ур чадвар\",\"未完成\":\"Дуусаагүй\",\"已领完\":\"Цуглуулсан\",\"当前共\":\"Одоогийн нийт\",\"取关\":\"Унтраах\",\"请选择商品\":\"Бүтээгдэхүүнээ сонгоно уу\",\"头像\":\"Аватар\",\"手机号码\":\"Гар утасны дугаар\",\"点击绑定手机号\":\"Холбохын тулд товшино уу\",\"ID号\":\"ID дугаар\",\"权限设置\":\"Зөвшөөрөл\",\"点击管理\":\"Удирдлага\",\"密码\":\"Нууц үг\",\"点击修改密码\":\"Өөрчлөх дээр дарна уу\",\"更换手机号码\":\"Дугаарыг өөрчлөх\",\"点击更换手机号码\":\"Дарна уу\",\"缓存大小\":\"Кэшийн хэмжээ\",\"当前版本\":\"Одоогийн хувилбар\",\"地址管理\":\"Хаяг\",\"发票管理\":\"Нэхэмжлэх\",\"账号注销\":\"Цуцлах\",\"注销后无法恢复\":\"Сэргээх боломжгүй\",\"累计积分\":\"хуримтлагдсан оноо\",\"累计消费\":\"Хэрэглээ\",\"冻结积分\":\"Хөлдөх цэгүүд\",\"积分规则\":\"Интеграл дүрэм\",\"提示:积分数值的高低会直接影响您的会员等级\":\"Зөвлөгөө: гишүүнчлэлийн түвшингээ үнэлээрэй\",\"提示:你有\":\"Зөвлөгөө: танд байна\",\"积分在\":\"Интеграл\",\"过期,请尽快使用\":\"Хугацаа дууссан тул аль болох хурдан ашиглаарай\",\"暂无积分记录哦~\":\"Түр хугацаанд оноо байхгүй~\",\"赚积分\":\"Оноо цуглуул\",\"分值明细\":\"Онооны дэлгэрэнгүй\",\"分值提升\":\"Оноо нэмэгдэх\",\"抬头类型\":\"Толгойн төрөл\",\"增值税电子专用发票\":\"НӨАТ-ын цахим тусгай нэхэмжлэх\",\"增值税电子普通发票\":\"Энгийн НӨАТ-ын цахим падаан\",\"需要开具发票的姓名\":\"Нэхэмжлэх нэр\",\"需要开具发票的企业名称\":\"Нэхэмжлэх гаргах аж ахуйн нэгжийн нэр\",\"税号\":\"Татварын дугаар\",\"纳税人识别号\":\"Татвар төлөгчийн үнэмлэх\",\"手机号\":\"Гар утасны дугаар\",\"您的手机号\":\"Таны гар утасны дугаар\",\"邮箱\":\"Шуудангийн хайрцаг\",\"您的联系邮箱\":\"Таны холбоо барих шуудангийн хайрцаг\",\"开户银行\":\"Хадгаламжийн банк\",\"您的开户银行\":\"Таны хадгаламжийн банк\",\"银行账号\":\"Банкны дансны дугаар\",\"您的银行账号\":\"Таны банкны дансны дугаар\",\"企业地址\":\"Аж ахуйн нэгжийн хаяг\",\"您所在的企业地址\":\"Таны бизнесийн хаяг\",\"企业电话\":\"Аж ахуйн нэгжийн утас\",\"您的企业电话\":\"Таны бизнесийн утас\",\"设置为默认抬头\":\"Өгөгдмөл толгойгоор тохируулах\",\"保存\":\"Хадгалах\",\"发票类型选择\":\"Нэхэмжлэлийн төрлийг сонгох\",\"纸质发票开出后将以邮寄形式交付\":\"Цаасан нэхэмжлэх гарсны дараа шуудангаар хүргэгдэнэ\",\"请输入需要开具发票的姓名\":\"Нэхэмжлэх нэрээ оруулна уу\",\"请输入您的手机号\":\"Гар утасны дугаараа оруулна уу\",\"请正确输入您的手机号\":\"Гар утасны дугаараа зөв оруулна уу\",\"请输入您的联系邮箱\":\"Холбоо барих имэйлээ оруулна уу\",\"请正确输入您的联系邮箱\":\"Холбоо барих имэйлээ зөв оруулна уу\",\"请输入需要开具发票的企业名称\":\"Нэхэмжлэх гаргах аж ахуйн нэгжийн нэрийг оруулна уу\",\"请输入纳税人识别号\":\"Татвар төлөгчийн дугаарыг оруулна уу\",\"请正确输入纳税人识别号\":\"Татвар төлөгчийн дугаарыг зөв оруулна уу\",\"请输入您的开户银行\":\"Хадгаламжийн банкаа оруулна уу\",\"请输入您的银行账号\":\"Банкны дансны дугаараа оруулна уу\",\"请正确输入您的银行账号\":\"Банкны дансны дугаараа зөв оруулна уу\",\"请输入您所在的企业地址\":\"Та бизнесийн хаягаа оруулна уу\",\"请输入您的企业电话\":\"Та бизнесийн утсаа оруулна уу\",\"发票记录\":\"Нэхэмжлэлийн бүртгэл\",\"抬头管理\":\"Толгойн удирдлага\",\"申请时间\":\"Хэрэглэх хугацаа\",\"没有发票信息哟~\":\"Нэхэмжлэлийн мэдээлэл байхгүй ~\",\"个人普通发票\":\"Хувийн энгийн нэхэмжлэх\",\"企业普通发票\":\"Аж ахуйн нэгжийн энгийн нэхэмжлэх\",\"企业专用发票\":\"Байгууллагын тусгай нэхэмжлэх\",\"添加新发票\":\"Шинэ нэхэмжлэх нэмэх\",\"删除该发票?\":\"Энэ нэхэмжлэхийг устгах уу?\",\"发票编号\":\"Нэхэмжлэлийн дугаар\",\"发票备注\":\"Нэхэмжлэлийн тайлбар\",\"快递号\":\"Экспресс дугаар\",\"总资产(元)\":\"Нийт хөрөнгө ($)\",\"累计充值(元)\":\"Хамтран цэнэглэх ($)\",\"累计消费(元)\":\"Ко цэцэг ($)\",\"账单记录\":\"Төлбөрийн бүртгэл\",\"消费记录\":\"Бичлэг\",\"充值记录\":\"Цэнэглэх\",\"积分中心\":\"Интеграл\",\"签到领积分\":\"Нэвтрэх\",\"赚积分抵现金\":\"Оноо цуглуул\",\"领取优惠券\":\"Купон\",\"满减享优惠\":\"Бүрэн хөнгөлөлт\",\"最新拼团活动\":\"Сүүлийн бүлгийн үйл ажиллагаа\",\"最新的优惠商品上架拼团\":\"Тавиур дээрх хамгийн сүүлийн үеийн хөнгөлөлттэй бараа\",\"立即参与\":\"Оролцох\",\"当前限时秒杀\":\"Одоогийн цагийн хязгаар хоёр дахь аллага\",\"最新商品秒杀进行中\":\"Хамгийн сүүлийн үеийн барааны өсөлт үргэлжилж байна\",\"我的余额\":\"Тэнцвэр\",\"赠送\":\"Бэлэг\",\"其他\":\"Бусад\",\"注意事项\":\"Урьдчилан сэргийлэх арга хэмжээ\",\"冻结佣金为\":\"Царцаасан комисс\",\"立即转入\":\"Шууд шилжүүлэх\",\"立即充值\":\"Шууд цэнэглэ\",\"请输入金额\":\"Дэмжээ оруулна уу\",\"转入余额\":\"Үлдэгдлийг шилжүүлэх\",\"转入余额后无法再次转出,确认是否转入余额\":\"Үлдэгдлийг шилжүүлсний дараа дахин шилжүүлэх боломжгүй, үлдэгдэлд шилжүүлэх эсэхийг баталгаажуулна уу\",\"转入成功\":\"Шилжүүлэг амжилттай боллоо\",\"正在支付\":\"Төлбөр төлж байна\",\"充值金额必须为数字\":\"Цэнэглэх хэмжээ нь тоо байх ёстой\",\"充值金额不能为0\":\"Цэнэглэх хэмжээ 0 байж болохгүй\",\"填写手机号码\":\"Гар утасны дугаараа бөглөнө үү\",\"是否绑定账号\":\"Бүртгэлийг холбох\",\"绑定\":\"Холбоо\",\"您已取消绑定!\":\"Танд хязгааргүй байна!\",\"当前手机号\":\"Одоогийн гар утасны дугаар\",\"设置新密码\":\"Шинэ нууц үг тохируулах\",\"确认新密码\":\"Шинэ нууц үгээ баталгаажуулах\",\"手机号码不存在,无法发送验证码!\":\"Гар утасны дугаар байхгүй тул баталгаажуулах код илгээх боломжгүй!\",\"请输入新密码\":\"Шинэ нууц үг оруулна уу\",\"两次输入的密码不一致!\":\"Таны оруулсан хоёр нууц үг таарахгүй байна!\",\"请输入验证码\":\"Баталгаажуулах код оруулна уу\",\"暂无退款订单~\":\"Буцаан олголтын захиалга байхгүй ~\",\"缺少订单号无法查看订单详情\":\"Захиалгын дугаар дутуу, захиалгын дэлгэрэнгүйг харах боломжгүй\",\"明细\":\"Дэлгэрэнгүй мэдээлэл\",\"第七天\":\"7 дахь өдөр\",\"第7天\":\"7 дахь өдөр\",\"奖励\":\"Шагнал\",\"已签到\":\"Бүртгүүлсэн\",\"立即签到\":\"Одоо нэвтэрнэ үү\",\"已累计签到\":\"Хуримтлагдсан бүртгэл\",\"据说连续签到第\":\"Хоёр дахь дараалсан нэвтрэлт\",\"天可获得超额积分,一定要坚持签到哦~~~\":\"Хэрэв та өдөр бүр илүү оноо авах боломжтой бол нэвтэрч орохыг шаардах ёстой~~~\",\"签到成功\":\"Шалгалт амжилттай боллоо\",\"好的\":\"За\",\"您今日已签到!\":\"Та өнөөдөр нэвтэрлээ!\",\"暂无签到记录~\":\"Нэвтрэх бүртгэл байхгүй~\",\"保存海报\":\"ПОСТЕР хадгалах\",\"长按保存图片\":\"Зургийг хадгалахын тулд удаан дарна уу\",\"分销海报\":\"Түгээлтийн ПОСТЕР\",\"小程序二维码需要发布正式版后才能获取到\":\"Applet QR кодыг зөвхөн албан ёсны хувилбарыг нийтлэсний дараа авах боломжтой\",\"获取中\":\"Олж байна\",\"暂无数据~\":\"Түр хугацаанд өгөгдөл байхгүй ~\",\"提现记录\":\"Татаж авах\",\"提现总额\":\"Нийт татан авалт\",\"佣金记录\":\"Комиссын бүртгэл\",\"佣金明细\":\"Комиссын мэдээлэл\",\"分销等级\":\"Хуваарилалтын түвшин\",\"昨日收益\":\"Өчигдрийн орлого\",\"累积已提\":\"Нийт буцаан татсан\",\"代理商申请\":\"Агент програм\",\"立即提现\":\"Татаж авах\",\"推广名片\":\"Нэрийн хуудас\",\"推广人统计\":\"Дэмжүүлэгчийн статистик\",\"推广人订单\":\"сурталчлагчийн захиалга\",\"推广订单\":\"Урамшууллын захиалга\",\"事业部\":\"Бизнесийн хэлтэс\",\"代理商\":\"Агент\",\"推广人排行\":\"Дэмжүүлэгчийн зэрэглэл\",\"佣金排行\":\"Комиссын зэрэглэл\",\"员工列表\":\"Ажилчдын жагсаалт\",\"您目前暂无推广权限\":\"Танд одоогоор сурталчилгааны зөвшөөрөл байхгүй байна\",\"商城购物可享\":\"Дэлгүүрт худалдаа хийх\",\"折\":\"Хямдрал\",\"当前等级\":\"Одоогийн түвшин\",\"未达成\":\"Хүрээгүй\",\"今日成长值\":\"Өнөөдрийн өсөлтийн утга\",\"点\":\"Цэг\",\"我的成长值记录\":\"Миний өсөлтийн үнэлгээ\",\"暂未解锁该等级\":\"Энэ түвшин хараахан нээгдээгүй байна\",\"点,需达到\":\"Цэг, хүрэх хэрэгтэй\",\"已解锁更高等级\":\"Дээд түвшний түгжээг тайлсан\",\"我的成长特权\":\"Миний өсөлтийн давуу тал\",\"购物折扣\":\"Хямдрал\",\"专属徽章\":\"Онцгой тэмдэг\",\"经验累积\":\"Туршлагын хуримтлал\",\"尊享客服\":\"Онцгой үйлчилгээ\",\"签到\":\"Бүртгүүлэх\",\"可获得\":\"Боломжтой\",\"点经验\":\"Цэгийн туршлага\",\"每日签到可获得经验值,已签到\":\"Өдөр бүр нэвтрэх нь туршлагын утгыг авах боломжтой, нэвтэрсэн\",\"去签到\":\"Бүртгүүлэх\",\"点经验/元\":\"Цэгийн туршлага/$\",\"购买商品可获得对应的经验值\":\"Харгалзах туршлагын үнэ цэнийг бараа худалдан авах замаар олж авах боломжтой\",\"去购买\":\"Худалдан ав\",\"点经验/人\":\"Онцлох туршлага/хүн\",\"邀请好友注册商城可获得经验值\":\"Туршлагын үнэ цэнийг авахын тулд найзуудаа худалдааны төвд бүртгүүлэхээр урина уу\",\"去邀请\":\"Урилга\",\"积分数\":\"Бүтээгдэхүүний хэсэг\",\"消费金额\":\"Хэрэглээний хэмжээ\",\"暂无经验记录\":\"Туршлагын бүртгэл байхгүй\",\"账户登录\":\"Бүртгэлд нэвтрэх\",\"微信登录\":\"Wechat нэвтрэх\",\"手机号登录\":\"Гар утаснаас нэвтрэх\",\"账户充值\":\"Цэнэглэх\",\"佣金转入\":\"Комисс\",\"周榜\":\"Долоо хоног тутмын жагсаалт\",\"月榜\":\"Сар бүрийн жагсаалт\",\"周排行\":\"Долоо хоног тутмын зэрэглэл\",\"月排行\":\"Сар бүрийн зэрэглэл\",\"语言切换\":\"Хэл\",\"点击前往\":\"Явахын тулд товшино уу\",\"查看全部\":\"Бүгдийг харах\",\"查看订单\":\"Захиалга харах\",\"无法获取图片信息\":\"Зургийн мэдээлэл авах боломжгүй\",\"长按或扫描查看\":\"Урт дарж эсвэл сканнердах\",\"点解锁\":\"Цэгээр тайлах\",\"确认修改\":\"Баталгаажуулах\",\"保存修改\":\"Хадгалах\",\"退出登录\":\"Гарах\",\"付费会员\":\"SVIP\",\"地址信息\":\"Хаяг\",\"我的推广\":\"Өргөтгөл\",\"砍价记录\":\"Хэлэлцэх\",\"我的等级\":\"Миний түвшин\",\"兑换\":\"ЯВАХ\",\"申请中\":\"Програм\",\"统计管理\":\"Статистик\",\"退款\":\"Төлбөрийг буцаан олгох\",\"未发货\":\"Одоогүй\",\"当前为最新版本\":\"Одоогоор хамгийн сүүлийн хувилбар\",\"清除缓存\":\"Кэшийг цэвэрлэх\",\"确定清楚本地缓存数据吗\":\"Та дотоод кэш өгөгдлийн талаар тодорхой итгэлтэй байна уу\",\"缓存清理完成\":\"Кэшийг цэвэрлэж дууслаа\",\"切换的账号不存在\":\"Шилсэн данс байхгүй байна\",\"正在切换中\":\"Шилжүүлж байна\",\"确认退出登录\":\"Гарахыг баталгаажуулах\",\"我知道了\":\"Би харж байна\",\"系统错误\":\"Системийн алдаа\",\"请求失败\":\"Хүсэлт амжилтгүй боллоо\",\"邀请您加入\":\"Таныг нэгдэхийг урьж байна\",\"图片上传中\":\"Байршуулж байна\",\"上传图片失败\":\"Зургийг байршуулж чадсангүй\",\"访问位置被拒绝\":\"Байршилд хандах боломжгүй\",\"系统定位已关闭\":\"Системийн байршил унтарсан\",\"需要定位权限\":\"Байршлын зөвшөөрөл шаардлагатай\",\"订单核销\":\"хасалт\",\"当前可转入佣金为\":\"Одоогийн шилжүүлж болох комисс нь\",\"浏览记录\":\"Хайлтын түүх\",\"签到奖励\":\"Бүртгэлийн урамшуулал\",\"请输入内容\":\"пожалуйста, введите содержание\",\"单次限购\":\"одноразовые ограничительные закупки\",\"永久限购\":\"постоянные Ограничения приобретения\",\"《用户协议》\":\"《Протокол пользователя》\",\"《隐私协议》\":\"《соглашение о конфиденциальности》\",\"与\":\"и\",\"请先阅读并同意协议\":\"пожалуйста, прочитайте и Соглашайтесь сначала с Протоколом\",\"绑定下级通知\":\"уведомление о нижестоящем звене связи\",\"购买成功通知\":\"уведомление об успешном покупке\",\"确认收货通知\":\"подтверждение получения уведомления\",\"改价通知\":\"уведомление о пересмотре цен\",\"退款成功通知\":\"уведомление об успешном возврате средств\",\"充值成功通知\":\"уведомление об успешном пополнении\",\"积分到账通知\":\"уведомление об учете\",\"佣金到账通知\":\"уведомление о комиссионных в счет\",\"砍价成功通知\":\"уведомление об отмене цены\",\"拼团成功通知\":\"уведомление об успешном исходе группы\",\"拼团失败通知\":\"уведомление об ошибке группы\",\"开团成功通知\":\"уведомление об успешном открытии миссии\",\"提现成功通知\":\"уведомление об успехе\",\"提现失败通知\":\"уведомление об ошибке\",\"充值退款通知\":\"уведомление о возврате полной суммы\",\"退款申请拒绝通知\":\"уведомление об отклонении просьбы о возврате средств\",\"您有新的退款待处理\":\"у вас есть новые возвраты\",\"您有新的订单待处理\":\"у вас есть новые заказы для обработки\",\"发货通知\":\"уведомление о поставке\",\"取消拼团通知\":\"уведомление об отмене группы\",\"参团成功通知\":\"уведомление об успешном участии\",\"你有个新的提现申请待处理\":\"у вас есть новая заявка для обработки\",\"你有个新的用户收货待处理\":\"у вас есть новый пользователь для получения и обработки\",\"提醒付款通知\":\"напоминание о платеже\",\"短信验证码\":\"код проверки смс\",\"到店自提\":\"в магазин\",\"快递配送\":\"курьер\"}");
  8854. /***/ }),
  8855. /***/ 29:
  8856. /*!******************************************************!*\
  8857. !*** D:/data/zhonghong/saber-weixin/lang/vi_vn.json ***!
  8858. \******************************************************/
  8859. /*! exports provided: 选择地址, 选择其它地址, 已选商品, 清空, ¥, 已售罄, 已下架, 删除, 商品券, 品类券, 通用券, 优惠券, 满, 元可用, 无门槛券, 领取后, 天内可用, 已领取, 立即领取, 购物满, 减, 不限时, 秒杀, 砍价, 拼团, 已售, 立即购买, 加入购物车, 选规格, 跳过, 立即体验, 首页, 搜索, 购物车, 我的收藏, 个人中心, 券, 正在加载中, 上拉加载更多, 代付金额, 共, 件商品, 订单包裹, 申请退款中, 已退款, 已完成, 件退款中, 不支持配送, 不支持自提, 已评价, 评价, 申请退款, 查看物流, 确认收货, 选择付款方式, 支付, 去付款, 请选择要支付的订单, 余额不足, 支付中, 缺少支付参数, 取消支付, 支付成功, 支付失败, 库存, 限量, 数量, 我要参团, 确定, 热门推荐, 最高返佣, 推广享佣金, 立即分享, 发现新版本, 立即升级, 下载进度, 店小二, 暂无记录, 正在下载海报,请稍后再试, 海报二维码生成失败, 倒计时, 天, 时, 分, 秒, 砍价成功, 活动已结束, 已砍至, 活动进行中, 取消活动, 继续砍价, 暂无砍价记录, 人正在参与, 最低, 参与砍价, 砍价列表, 人查看, 人分享, 人参与, 邀请您帮忙砍价, 查看商品, 当前, 已砍, 还剩, 立即参与砍价, 商品暂无库存, 邀请好友帮砍价, 已有, 位好友成功砍价, 帮好友砍一刀, 好友已砍价成功, 我也要参与, 已成功帮助好友砍价, 恭喜您砍价成功,快去支付, 立即支付, 抢更多商品, 砍价帮, 砍掉, 更多, 关闭, 点击加载更多, 商品详情, 砍价规则, 您已砍掉, 元,听说分享次数越多砍价成功的机会越大哦, 成功帮砍, 您也可以砍价低价拿哦,快去挑选心仪的商品吧, 发送给朋友, 微信好友, 微信朋友圈, 生成海报, 砍价详情, 分享成功, 分享失败, 该商品每人限购, 您的好友, 邀请您砍价, 人团, 去拼团, 拼团列表, 类型, 累计销量, 限购, 种规格可选, 已拼, 件, 还差, 人成团, 去拼单, 查看更多, 收起, 拼团玩法, 开团/参团, 邀请好友, 满员发货, 用户评价, 好评率, 产品介绍, 单独购买, 立即开团, 请选择, 商品, 详情, 缺少参数无法查看商品, 参数错误, 已选择, 保存成功, 保存失败, 人拼, 剩余, 结束, 恭喜您拼团成功, 人,拼团失败, 拼团中,还差, 人拼团成功, 邀请好友参团, 再次开团, 取消开团, 查看订单信息, 大家都在拼, 更多拼团, 邀请您参团, 你不是该团的成员, 已抢, 抢购中, 未开始, 已结束, 暂无商品,去看点别的吧, 即将开始, 距秒杀结束仅剩, 累计销售, 收藏, 保存到手机, 长按图片可以保存到手机, 抢购详情页, 二维码获取失败, 请选择属性, 提示:点击图片即可保存至手机相册, 拼团海报, 砍价海报, 海报生成中, 海报图片获取失败, 海报, 已预定, 预售价, 立即预定, 开售时间, 预售活动, 起, 划线价, 开通“超级会员”立省, 元, 立即开通, 预售活动时间, 预售结束后, 天内发货, 活动, 参与秒杀, 参与拼团, 复制口令, 复制成功, 推荐, 缺少经纬度信息无法查看地图, 产品库存不足,请选择其它属性, 立即退款, 一键改价, 订单备注, 商品总价, 原始邮费, 实际支付, 退款金额, 请填写备注信息, 立即修改, 确认退款, 拒绝退款, 取消, 订单号, 发货方式, 发货类型, 快递公司, 快递单号, 顺丰请输入单号 :收件人或寄件人手机号后四位, 例如:SF000000000000:3941, 电子面单, 预览, 寄件人姓名, 填写寄件人姓名, 寄件人电话, 填写寄件人电话, 寄件人地址, 填写寄件人地址, 送货人, 确认提交, 发货, 送货, 无需物流, 手动填写, 电子面单打印, 填写快递单号, 请选择电子面单, 待付款, 待发货, 待收货, 待评价, 售后/退款, 数据统计, 今日成交额, 昨日成交额, 本月成交额, 今日订单数, 昨日订单数, 本月订单数, 详细数据, 日期, 订单数, 成交额, 立即核销, 查看, 确定要核销此订单吗, 确定核销, 请输入核销码, 请输入正确的核销码, 查询中, 订单, 订单未备注,点击添加备注信息, 复制, 件商品,应支付, 邮费, 订单编号, 下单时间, 支付状态, 已支付, 未支付, 支付方式, 买家留言, 支付金额, 优惠券抵扣, 运费, 实付款, 配送方式, 快递, 送货人电话, 确认付款, 去发货, 改价成功, 改价失败, 请输入备注, 退款中, 部分退款中, 件商品,实付款, 同意退货, 待用户发货, 请输入正确的金额, 今天, 昨天, 最近7天, 本月, 自定义, 营业额(元), 订单量(份), 增长率, 增长, 单位, 元., 分., 固定, 指定范围, 提交时间, 原因, 暂无申请记录,快去申请吧!, 没有更多啦, 待审核, 审核通过, 审核未通过, 编辑, 重新提交, 会员优惠价, 余额支付, 可用余额, 微信支付, 确认, 支付提醒, 线下支付已关闭,请点击确认按钮返回主页, 请输入支付金额, 正在确认, 进入商城, 代理商名称, 请输入代理商名称, 用户姓名, 请输入姓名, 联系电话, 请输入手机号, 验证码, 填写验证码, 邀请码, 请输入代理商邀请码, 请上传营业执照及行业相关资质证明图片, 图片最多可上传10张,图片格式支持JPG、PNG、JPEG, 上传图片, 已阅读并同意, 代理商协议, 提交申请, 代理商入驻协议, 恭喜,您的资料提交成功!, 返回首页, 恭喜,您的资料通过审核!, 您的申请未通过!, 重新申请, 获取验证码, 请输入正确的手机号码, 重新获取, 请上传营业执照, 请勾选并同意入驻协议, 专题栏, 暂无数据, 请输入卡号, 请输入卡密, 确认激活, SVIP会员尊享权, 正在激活, 已使用, 永久SVIP会员, SVIP会员, 到期, 您与, 商城的第, 天., 已累积为您节省, 开通即享会员权益, 续费会员, 开通会员, 有效期至, 试用, 购买即视为同意, 会员用户协议, 点击兑换卡密, 会员优惠券, SVIP商品推荐, 商城价, 激活会员卡, 支付宝支付, 成功开启0元试用, 确认绑定, 绑定成功, 商城客服已离线, 我要反馈, 请填写内容, 提交, 精品推荐, 热门榜单, 首发新品, 促销单品, 预告, 回放, 进行中, 发送客服, 客服连接中, 连接失败, 提示, 客服已下线,是否需要反馈?, 和好友一起分享, 积分抵扣, 已开票, 未开票, 发票信息, 发票抬头, 发票抬头类型, 个人, 企业, 发票类型, 电子普通发票, 电子专用发票, 企业税号, 联系信息, 真实姓名, 联系邮箱, 抬头选择, 默认, 普通, 专用, 您还没有添加发票信息哟, 添加新的抬头, 不开发票, 抽奖, 全选, 属性, 请填写具体地址, 省, 市, 区, 添加成功, 您已拒绝导入微信地址权限, 是否进入权限管理,调整授权?, 已取消, 添加失败, 请填写收货人姓名, 请选择所在地区, 请填写详细地址, 星, 商品满足你的期待么?说说你的想法,分享给想买的他们吧, 立即评价, 商品质量, 服务态度, 缺少参数, 请填写你对宝贝的心得, 正在发布评论, 感谢您的评价, 评价完成, 恭喜您, 获得, 机会, 领取成功, 评分, 全部, 好评, 中评, 差评, 加载更多, 千米距离, 搜索商品名称, 价格, 销量, 新品, 已全部加载, 缺少订单号, 退货件数, 退款类型, 退款原因, 备注说明, 填写备注信息,100字以内, 仅退款, 退货并退款, 申请成功, 请先选择退货商品, 搜索历史, 热门搜索, 请输入要搜索的商品, 正在搜索中, 中奖记录, 我的奖品, 活动规则, 昵称, 序号, 奖品名称, 获奖时间, 商家暂未上架活动哦, 获取抽奖信息, 奖品类型, 立即兑换, 兑换时间, 暂无中奖记录, 积分, 余额, 红包, 设置收货地址, 暂无门店信息, 剩余积分, 当前积分, 开具发票, 请填写, 配送运费, 会员商品优惠, 会员运费优惠, 合计, 使用微信快捷支付, 使用支付宝支付, 线下支付, 使用线下付款, 好友代付, 找微信好友支付, 立即使用, 请选择要购买的商品, 发票, 不使用, 订单创建成功, 请选择支付方式, 请选择收货地址, 请填写联系人或联系人电话, 暂无门店,请选择其他方式, 请输入, 请输入正确的, 请上传, 订单支付中, 请按以上退货信息将商品退回, 请联系管理员获取退货地址, 待核销, 核销信息, 营业时间, 每日, 使用说明, 可将二维码出示给店员扫描或提供数字核销码, 可将二维码出示给配送员进行核销, 查看位置, 拒绝原因, 联系客服, 商家备注, 收货人, 收货地址, 配送人姓名, 拨打, 虚拟发货, 已发货,请注意查收, 虚拟备注, 总代付, 申请开票, 查看发票, 取消订单, 立即付款, 批量退款, 查看拼团, 再次购买, 取消申请, 填写退货信息, 查看退货物流, 您确认放弃此次申请吗, 操作成功, 订单信息不存在, 为保障权益,请收到货确认无误后,再确认收货, 删除订单, 确定删除该订单, 删除成功, 确认取消该订单, 订单信息, 消费订单, 总消费, 预售, 线下付款,未支付, 未核销, 件商品,总金额, 查看详情, 暂无订单, 缺少订单号无法取消订单, 订单支付成功, 订单支付失败, 暂未支付, 失败原因, 重新购买, 重新支付, 赠送优惠券, 有效期, 缺少参数无法查看订单支付状态, 最多可上传3张, 请选择产品, 该产品没有更多库存了, 优品推荐, 暂无产品, 重新选择, 请选择数量, 砍价专区·BARGAINING, 立即砍价, 拼团活动, 人拼团成功., 人参团, 拼团价, 已过期, 关注, 推荐好货, 暂无商品, 限时秒杀, 抢, 广告位, 精彩内容, 砍价模块,暂无数据, 砍价活动, 呼朋唤友来砍价, 拼团模块,暂无数据, 享超值开团价, 优惠券,暂无数据, 领取今日好券, 可用, 领取, 客服, 商品列表,暂无数据, 搜索商品, 暂无图片,请上传图片, 首发新品,暂无数据, 多个优质商品最新上架, 暂无新闻,请上传新闻, 热度 TOP, 排行榜、暂无数据, 促销单品,暂无数据, 库存商品优惠促销活动, 精品推荐,暂无数据, 上百种商品分类任您选择, 秒杀模块,暂无数据, 场, 暂无数据,请设置, 暂无数据,请先添加分类, 暂无标题, 诚意推荐品质商品, 点击“立即关注”即可关注公众号, 立即关注, 添加到我的小程序, 微信首页下拉即可访问商城。, 点击, 服务协议与隐私政策, 请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。, 你可以阅读, 《服务协议与隐私政策》, 了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。, 我同意, 残忍拒绝, 下拉加载更多, 网络连接断开, 请检查情况:, 在设置中是否已开启网络权限, 当前是否处于弱网环境, 版本是否过低,升级试试吧, 重新连接, 加载中, 没有更多内容啦~, 100%正品保证, 所有商品精挑细选, 售后无忧, 管理, 购物数量, 请重新选择商品规格, 重选, 失效商品, 失效, 该商品已失效, 立即下单, 我也是有底线的, 产品库存不足,请选择其它, 添加购物车成功, 清除成功, 暂无兑换记录~, 大家都在换, 人兑换, 轻松赚积分, 购买商品, 购买商品可获得积分奖励, 去完成, 每日签到活动, 每日签到可获得积分奖励, 九宫格抽奖活动, 幸运抽奖可获得积分奖励, 我的积分, 每日签到, 积分抽奖, 兑换记录, 已兑换, 无法兑换, [默认], 可用积分, 快递费用, 免运费, 备注信息, 请添加备注(150字以内), 使用线上支付宝支付, 可用余额:, 选择线下付款方式, 正在加载…, 可用积分不足!, 订单状态, 支付积分, 备注, 配送核销码, 当前可用余额:, 正在加载, 缺少经纬度信息无法查看地图!, 商品兑换成功, 兑换方式, 积分兑换, 兑换积分, 取消兑换, 缺少参数无法查看订单兑换状态, 用户离开了, 兑换成功, 物流公司, 复制单号, 设为默认, 添加新地址, 导入微信地址, 取消选择, 您设置的默认地址不存在!, 设置成功, 您删除的地址不存在!, 获取头像, 请点击授权, 绑定手机号, 永久, 会员到期, 未开通会员, 查看会员权益, 立即续费, 立即激活, 会员可享多项权益, 订单中心, 我的服务, 隐私协议, 商家管理, 更新用户信息成功, 客服接待, 点击复制网址去浏览器中打开, 点击复制, 完成支付, 点击右上角, 选择 在浏览器 打开,去支付宝支付, 支付订单不存在,页面将在2秒后自动关闭!, 正在支付中, 支付订单不存在,页面将在2秒后自动关闭, 复制失败, 您目前的排名, 您目前暂无排名, 暂无排名~, 输入手机号, 输入验证码, 立即登录, 请填写手机号码, 请填写验证码, 请输入正确的验证码, 正在登录中, 登录成功, 获取授权, 获取微信的手机号授权, 获取微信手机号, 输入手机号码, 填写登录密码, 登录, 快速登录, 账号登录, 其他方式登录, 登录中, 获取用户信息失败, 请绑定手机号后,继续操作, 错误信息, 用户点击确定, 用户点击取消, 登录失败, 请勿重复点击, 请填写密码, 您输入的密码过于简单, 请填写账号, 请输入正确的账号, [图片], [语音], [商品], [订单], 亲、暂无消息记录哟!, 站内消息, 客服消息, 通知于, 获取详情中, 代付订单创建成功,发给好友帮你付款吧~, 帮我付一下这件商品了,谢谢~, 已经有人替我代付,谢谢啦~, 谢谢你帮我支付,么么哒~, 我已为你代付成功,商家正在努力发货中~, 好友代付成功,商家正在努力发货中~, 发送给微信好友, 查看订单详情, 订单已支付, 如果订单申请退款,已支付金额将原路退还给您, 代付成功, 谢谢你为我付款,还可以再去看看其他商品哟~, 该订单暂未支付, 人, 推广人数, 一级, 二级, 点击搜索会员名称, 团队排序, 金额排序, 订单排序, 单, 加入时间, 累积推广订单, 本月累计推广订单, 返佣, 暂未返佣, 返佣时间, 单号, 暂无推广订单~, 推广订单列表, 找回密码, 填写您的新密码, 加载失败, 点击授权登录您的客服工作台, 授权登录, 没有登录的code,请重新扫码, 员工人数, 邀请, 分佣比例, 修改分佣比例, 请输入百分比, 删除员工, 确定删除该员工?, 请输入比例, 分类, 我的, 姓名, 请输入联系电话, 所在地区, 详细地址, 设置为默认地址, 立即保存, 浙江省, 杭州市, 滨江区, 广东省, 广州市, 番禺区, 修改地址, 添加地址, 已取消!, 请填写联系电话, 保存中, 修改成功, 消费, 充值, 暂无账单的记录哦~, 点击【立即注销】即代表您已经同意《用户注销协议》, 立即注销, 是否确认注销, 注销后无法恢复,请谨慎操作, 注销, 持卡人, 请输入持卡人姓名, 卡号, 请填写卡号, 银行, 提现, 最低提现金额, 当前可提现金额, 冻结佣金, 说明: 每笔佣金的冻结期为, 天,到期后可提现, 账号, 请填写您的微信账号, 收款码, 请填写您的支付宝账号, 请选择银行, 银行卡, 微信, 支付宝, 请填写持卡人姓名, 请填写微信号, 请填写提现金额, 提现金额不能低于, 未使用, 已使用/过期, 通用劵, 一级分佣上浮, 二级分佣上浮, 快速升级技巧, 未完成, 已领完, 当前共, 取关, 请选择商品, 头像, 手机号码, 点击绑定手机号, ID号, 权限设置, 点击管理, 密码, 点击修改密码, 更换手机号码, 点击更换手机号码, 缓存大小, 当前版本, 地址管理, 发票管理, 账号注销, 注销后无法恢复, 累计积分, 累计消费, 冻结积分, 积分规则, 提示:积分数值的高低会直接影响您的会员等级, 提示:你有, 积分在, 过期,请尽快使用, 暂无积分记录哦~, 赚积分, 分值明细, 分值提升, 抬头类型, 增值税电子专用发票, 增值税电子普通发票, 需要开具发票的姓名, 需要开具发票的企业名称, 税号, 纳税人识别号, 手机号, 您的手机号, 邮箱, 您的联系邮箱, 开户银行, 您的开户银行, 银行账号, 您的银行账号, 企业地址, 您所在的企业地址, 企业电话, 您的企业电话, 设置为默认抬头, 保存, 发票类型选择, 纸质发票开出后将以邮寄形式交付, 请输入需要开具发票的姓名, 请输入您的手机号, 请正确输入您的手机号, 请输入您的联系邮箱, 请正确输入您的联系邮箱, 请输入需要开具发票的企业名称, 请输入纳税人识别号, 请正确输入纳税人识别号, 请输入您的开户银行, 请输入您的银行账号, 请正确输入您的银行账号, 请输入您所在的企业地址, 请输入您的企业电话, 发票记录, 抬头管理, 申请时间, 没有发票信息哟~, 个人普通发票, 企业普通发票, 企业专用发票, 添加新发票, 删除该发票?, 发票编号, 发票备注, 快递号, 总资产(元), 累计充值(元), 累计消费(元), 账单记录, 消费记录, 充值记录, 积分中心, 签到领积分, 赚积分抵现金, 领取优惠券, 满减享优惠, 最新拼团活动, 最新的优惠商品上架拼团, 立即参与, 当前限时秒杀, 最新商品秒杀进行中, 我的余额, 赠送, 其他, 注意事项, 冻结佣金为, 立即转入, 立即充值, 请输入金额, 转入余额, 转入余额后无法再次转出,确认是否转入余额, 转入成功, 正在支付, 充值金额必须为数字, 充值金额不能为0, 填写手机号码, 是否绑定账号, 绑定, 您已取消绑定!, 当前手机号, 设置新密码, 确认新密码, 手机号码不存在,无法发送验证码!, 请输入新密码, 两次输入的密码不一致!, 请输入验证码, 暂无退款订单~, 缺少订单号无法查看订单详情, 明细, 第七天, 第7天, 奖励, 已签到, 立即签到, 已累计签到, 据说连续签到第, 天可获得超额积分,一定要坚持签到哦~~~, 签到成功, 好的, 您今日已签到!, 暂无签到记录~, 保存海报, 长按保存图片, 分销海报, 小程序二维码需要发布正式版后才能获取到, 获取中, 暂无数据~, 提现记录, 提现总额, 佣金记录, 佣金明细, 分销等级, 昨日收益, 累积已提, 代理商申请, 立即提现, 推广名片, 推广人统计, 推广人订单, 推广订单, 事业部, 代理商, 推广人排行, 佣金排行, 员工列表, 您目前暂无推广权限, 商城购物可享, 折, 当前等级, 未达成, 今日成长值, 点, 我的成长值记录, 暂未解锁该等级, 点,需达到, 已解锁更高等级, 我的成长特权, 购物折扣, 专属徽章, 经验累积, 尊享客服, 签到, 可获得, 点经验, 每日签到可获得经验值,已签到, 去签到, 点经验/元, 购买商品可获得对应的经验值, 去购买, 点经验/人, 邀请好友注册商城可获得经验值, 去邀请, 积分数, 消费金额, 暂无经验记录, 账户登录, 微信登录, 手机号登录, 账户充值, 佣金转入, 周榜, 月榜, 周排行, 月排行, 语言切换, 点击前往, 查看全部, 查看订单, 无法获取图片信息, 长按或扫描查看, 点解锁, 确认修改, 保存修改, 退出登录, 付费会员, 地址信息, 我的推广, 砍价记录, 我的等级, 兑换, 申请中, 统计管理, 退款, 未发货, 当前为最新版本, 清除缓存, 确定清楚本地缓存数据吗, 缓存清理完成, 切换的账号不存在, 正在切换中, 确认退出登录, 我知道了, 系统错误, 请求失败, 邀请您加入, 图片上传中, 上传图片失败, 访问位置被拒绝, 系统定位已关闭, 需要定位权限, 订单核销, 当前可转入佣金为, 浏览记录, 签到奖励, 请输入内容, 单次限购, 永久限购, 《用户协议》, 《隐私协议》, 与, 请先阅读并同意协议, 绑定下级通知, 购买成功通知, 确认收货通知, 改价通知, 退款成功通知, 充值成功通知, 积分到账通知, 佣金到账通知, 砍价成功通知, 拼团成功通知, 拼团失败通知, 开团成功通知, 提现成功通知, 提现失败通知, 充值退款通知, 退款申请拒绝通知, 您有新的退款待处理, 您有新的订单待处理, 发货通知, 取消拼团通知, 参团成功通知, 你有个新的提现申请待处理, 你有个新的用户收货待处理, 提醒付款通知, 短信验证码, 到店自提, 快递配送, default */
  8860. /***/ (function(module) {
  8861. module.exports = JSON.parse("{\"选择地址\":\"Chọn địa chỉ\",\"选择其它地址\":\"Chọn Địa chỉ Khác\",\"已选商品\":\"Hàng hóa được Chọn\",\"清空\":\"Rõ ràng\",\"¥\":\"₫\",\"已售罄\":\"Hết hàng\",\"已下架\":\"Hạ gục\",\"删除\":\"Xóa\",\"商品券\":\"Sản phẩm\",\"品类券\":\"Danh mục\",\"通用券\":\"Chung\",\"优惠券\":\"Phiếu thưởng\",\"满\":\"Đầy đủ\",\"元可用\":\"Đã qua sử dụng\",\"无门槛券\":\"Không có ngưỡng\",\"领取后\":\"Nhận\",\"天内可用\":\"Số ngày sử dụng\",\"已领取\":\"Đã nhận\",\"立即领取\":\"Nhận\",\"购物满\":\"Chi tiêu\",\"减\":\"Tắt\",\"不限时\":\"Thời gian không giới hạn\",\"秒杀\":\"Seckill\",\"砍价\":\"Mặc cả\",\"拼团\":\"Nhóm\",\"已售\":\"Đã bán\",\"立即购买\":\"Mua ngay bây giờ\",\"加入购物车\":\"Thêm vào giỏ hàng\",\"选规格\":\"Tùy chọn\",\"跳过\":\"Tiếp theo\",\"立即体验\":\"Đi ngay\",\"首页\":\"Trang chủ\",\"搜索\":\"Tìm kiếm\",\"购物车\":\"Giỏ hàng\",\"我的收藏\":\"Thu thập\",\"个人中心\":\"Của tôi\",\"券\":\"Vo.\",\"正在加载中\":\"Đang tải ...\",\"上拉加载更多\":\"Kéo lên Tải thêm\",\"代付金额\":\"Số lượng\",\"共\":\"Tổng số\",\"件商品\":\"Mặt hàng\",\"订单包裹\":\"Đặt hàng\",\"申请退款中\":\"Hoàn lại tiền\",\"已退款\":\"Đã hoàn lại\",\"已完成\":\"Đã hoàn thành\",\"件退款中\":\"Hoàn trả mặt hàng\",\"不支持配送\":\"Chỉ tại cửa hàng\",\"不支持自提\":\"Chỉ vận chuyển\",\"已评价\":\"Đã đánh giá\",\"评价\":\"Xem lại\",\"申请退款\":\"Hoàn lại tiền\",\"查看物流\":\"Hậu cần\",\"确认收货\":\"Đặt hàng\",\"选择付款方式\":\"Chọn PayType\",\"支付\":\"Thanh toán\",\"去付款\":\"Thanh toán\",\"请选择要支付的订单\":\"Chọn đơn hàng\",\"余额不足\":\"Không đủ số dư\",\"支付中\":\"Đang thanh toán ...\",\"缺少支付参数\":\"Thiếu thông số thanh toán\",\"取消支付\":\"Hủy Thanh toán\",\"支付成功\":\"Thanh toán Thành công\",\"支付失败\":\"Thanh toán Không thành công\",\"库存\":\"Cổ phiếu\",\"限量\":\"Giới hạn\",\"数量\":\"QTY\",\"我要参团\":\"Tham gia nhóm\",\"确定\":\"Được\",\"热门推荐\":\"Đề xuất nóng\",\"最高返佣\":\"Cao nhất\",\"推广享佣金\":\"Quảng cáo\",\"立即分享\":\"Chia sẻ ngay bây giờ\",\"发现新版本\":\"Phiên bản mới\",\"立即升级\":\"Nâng cấp\",\"下载进度\":\"Tiến trình\",\"店小二\":\"Người phục vụ\",\"暂无记录\":\"Không có dữ liệu\",\"正在下载海报,请稍后再试\":\"Đang tải poster xuống, vui lòng thử lại sau\",\"海报二维码生成失败\":\"Không tạo được mã QR áp phích\",\"倒计时\":\"Đếm ngược\",\"天\":\"D\",\"时\":\"H\",\"分\":\"M\",\"秒\":\"S\",\"砍价成功\":\"Mặc cả Thành công\",\"活动已结束\":\"Hoạt động đã dừng\",\"已砍至\":\"Cắt thành\",\"活动进行中\":\"Đang xử lý ...\",\"取消活动\":\"Hủy bỏ\",\"继续砍价\":\"Tiếp tục\",\"暂无砍价记录\":\"Không có dữ liệu\",\"人正在参与\":\"Tham gia\",\"最低\":\"Thấp nhất\",\"参与砍价\":\"Mặc cả\",\"砍价列表\":\"Danh sách mặc cả\",\"人查看\":\"Xem\",\"人分享\":\"Chia sẻ\",\"人参与\":\"Tham gia\",\"邀请您帮忙砍价\":\"Mời bạn Trợ giúp\",\"查看商品\":\"Xem các mục\",\"当前\":\"Hiện tại\",\"已砍\":\"Cắt nhỏ\",\"还剩\":\"Trái\",\"立即参与砍价\":\"Mặc cả ngay\",\"商品暂无库存\":\"Hết hàng\",\"邀请好友帮砍价\":\"Mời Bạn bè Trợ giúp\",\"已有\":\"Có\",\"位好友成功砍价\":\"Những người bạn thành công\",\"帮好友砍一刀\":\"Giúp đỡ bạn bè\",\"好友已砍价成功\":\"Bạn bè đã thành công\",\"我也要参与\":\"Tôi sẽ tham gia\",\"已成功帮助好友砍价\":\"Giúp Bạn bè Thành công\",\"恭喜您砍价成功,快去支付\":\"Thương lượng Thành công, Thanh toán\",\"立即支付\":\"Thanh toán ngay\",\"抢更多商品\":\"Lấy thêm\",\"砍价帮\":\"Băng đảng mặc cả\",\"砍掉\":\"Cắt bỏ\",\"更多\":\"Thêm\",\"关闭\":\"Đóng\",\"点击加载更多\":\"Nhấp để tải thêm\",\"商品详情\":\"Chi tiết\",\"砍价规则\":\"Quy tắc mặc cả\",\"您已砍掉\":\"Bạn đã cắt\",\"元,听说分享次数越多砍价成功的机会越大哦\":\", Càng chia sẻ nhiều lần, cơ hội thương lượng thành công càng lớn\",\"成功帮砍\":\"Giúp cắt thành công\",\"您也可以砍价低价拿哦,快去挑选心仪的商品吧\":\"Bạn cũng có thể mặc cả và nhận được với giá rẻ, hãy đến và chọn sản phẩm yêu thích của bạn\",\"发送给朋友\":\"Gửi bạn bè\",\"微信好友\":\"Wechat Friend\",\"微信朋友圈\":\"Khoảnh khắc WeChat\",\"生成海报\":\"Tạo áp phích\",\"砍价详情\":\"Chi tiết mặc cả\",\"分享成功\":\"Chia sẻ thành công\",\"分享失败\":\"Chia sẻ Không thành công\",\"该商品每人限购\":\"Sản phẩm này được giới hạn mua cho mỗi người\",\"您的好友\":\"Bạn của bạn\",\"邀请您砍价\":\"Mời bạn cắt\",\"人团\":\"Mọi người\",\"去拼团\":\"Đi\",\"拼团列表\":\"Danh sách nhóm\",\"类型\":\"Loại\",\"累计销量\":\"Tổng số đã bán\",\"限购\":\"Giới hạn\",\"种规格可选\":\"Thông số kỹ thuật\",\"已拼\":\"Đánh vần\",\"件\":\"Mảnh\",\"还差\":\"Chỉ\",\"人成团\":\"thành công\",\"去拼单\":\"Tham gia\",\"查看更多\":\"Thêm\",\"收起\":\"Bỏ đi\",\"拼团玩法\":\"Quy trình nhóm\",\"开团/参团\":\"Bắt ​​đầu\",\"邀请好友\":\"Lời mời\",\"满员发货\":\"Giao hàng\",\"用户评价\":\"Xem lại\",\"好评率\":\"Tỷ lệ Khen ngợi\",\"产品介绍\":\"Chi tiết\",\"单独购买\":\"Mua một mình\",\"立即开团\":\"Bắt ​​đầu nhóm\",\"请选择\":\"Đã chọn\",\"商品\":\"Sản phẩm\",\"详情\":\"Chi tiết\",\"缺少参数无法查看商品\":\"Không thể xem sản phẩm do thiếu thông số\",\"参数错误\":\"Lỗi tham số\",\"已选择\":\"Đã chọn\",\"保存成功\":\"Thành công đã Lưu\",\"保存失败\":\"Không lưu được\",\"人拼\":\"Mọi người chiến đấu\",\"剩余\":\"Còn lại\",\"结束\":\"Kết thúc\",\"恭喜您拼团成功\":\"Chúc mừng bạn đã nhóm thành công\",\"人,拼团失败\":\"Người còn lại, nhóm không thành công\",\"拼团中,还差\":\"Trong nhóm vẫn còn\",\"人拼团成功\":\"Người còn lại để tham gia nhóm thành công\",\"邀请好友参团\":\"Mời bạn bè tham gia nhóm\",\"再次开团\":\"Tập hợp lại\",\"取消开团\":\"Hủy bỏ\",\"查看订单信息\":\"Xem đơn hàng\",\"大家都在拼\":\"Tất cả nhóm\",\"更多拼团\":\"Thêm\",\"邀请您参团\":\"Mời bạn tham gia\",\"你不是该团的成员\":\"Bạn không phải là thành viên của nhóm\",\"已抢\":\"Bị cướp\",\"抢购中\":\"Lấy ngay\",\"未开始\":\"Không bắt đầu\",\"已结束\":\"Hết\",\"暂无商品,去看点别的吧\":\"Không có sản phẩm\",\"即将开始\":\"Không bắt đầu\",\"距秒杀结束仅剩\":\"Chỉ còn lại để kết thúc\",\"累计销售\":\"Đã bán\",\"收藏\":\"Thu thập\",\"保存到手机\":\"Lưu vào điện thoại\",\"长按图片可以保存到手机\":\"Nhấn và giữ để lưu vào điện thoại\",\"抢购详情页\":\"Trang chi tiết mua hàng Snap\",\"二维码获取失败\":\"Không lấy được mã QR\",\"请选择属性\":\"Vui lòng chọn một tài sản\",\"提示:点击图片即可保存至手机相册\":\"Mẹo: Bấm vào hình để lưu vào album điện thoại\",\"拼团海报\":\"Áp phích câu đố\",\"砍价海报\":\"Áp phích Haggling\",\"海报生成中\":\"Áp phích đang được tạo\",\"海报图片获取失败\":\"Không lấy được hình ảnh áp phích\",\"海报\":\"Áp phích\",\"已预定\":\"Đã đặt trước\",\"预售价\":\"Bán trước\",\"立即预定\":\"Đặt ngay\",\"开售时间\":\"Thời gian bán hàng\",\"预售活动\":\"Sự kiện bán trước\",\"起\":\"Trỗi dậy\",\"划线价\":\"ORP\",\"开通“超级会员”立省\":\"Open Super Member to off\",\"元\":\"₫\",\"立即开通\":\"Kích hoạt ngay bây giờ\",\"预售活动时间\":\"Thời gian bán trước\",\"预售结束后\":\"Gửi trong vòng\",\"天内发货\":\"Những ngày sau khi chương trình ưu đãi trước kết thúc\",\"活动\":\"Hoạt động\",\"参与秒杀\":\"Seckill\",\"参与拼团\":\"Nhóm\",\"复制口令\":\"Sao chép mã hàng hóa\",\"复制成功\":\"Sao chép thành công\",\"推荐\":\"Được đề xuất\",\"缺少经纬度信息无法查看地图\":\"Thiếu thông tin kinh độ và vĩ độ không thể xem bản đồ\",\"产品库存不足,请选择其它属性\":\"Không đủ kho sản phẩm, vui lòng chọn thuộc tính khác\",\"立即退款\":\"Hoàn trả ngay lập tức\",\"一键改价\":\"Thay đổi giá\",\"订单备注\":\"Ghi chú đơn hàng\",\"商品总价\":\"Tổng giá\",\"原始邮费\":\"Bưu chính cũ\",\"实际支付\":\"Giá thực tế\",\"退款金额\":\"Giá hoàn lại\",\"请填写备注信息\":\"Vui lòng điền vào các nhận xét\",\"立即修改\":\"Chỉnh sửa ngay bây giờ\",\"确认退款\":\"Xác nhận hoàn lại tiền\",\"拒绝退款\":\"Hoàn trả bị từ chối\",\"取消\":\"Hủy\",\"订单号\":\"ID đặt hàng\",\"发货方式\":\"Chế độ\",\"发货类型\":\"Loại vận chuyển\",\"快递公司\":\"Cấp tốc\",\"快递单号\":\"Số\",\"顺丰请输入单号 :收件人或寄件人手机号后四位\":\"Vui lòng nhập số theo dõi cho SF Express: bốn chữ số cuối của số điện thoại di động của người nhận hoặc người gửi\",\"例如:SF000000000000:3941\":\"Ví dụ: SF000000000000: 3941\",\"电子面单\":\"Tờ điện tử\",\"预览\":\"Xem trước\",\"寄件人姓名\":\"Tên người gửi\",\"填写寄件人姓名\":\"Điền tên người gửi\",\"寄件人电话\":\"Điện thoại người gửi\",\"填写寄件人电话\":\"Điền số điện thoại người gửi\",\"寄件人地址\":\"Địa chỉ người gửi\",\"填写寄件人地址\":\"Điền địa chỉ người gửi\",\"送货人\":\"Người giao hàng\",\"确认提交\":\"Gửi\",\"发货\":\"Giao hàng\",\"送货\":\"Cho\",\"无需物流\":\"Không cần\",\"手动填写\":\"Điền thủ công\",\"电子面单打印\":\"Tờ điện tử\",\"填写快递单号\":\"Vui lòng điền số chuyển phát nhanh\",\"请选择电子面单\":\"Vui lòng chọn biên lai điện tử\",\"待付款\":\"Thanh toán\",\"待发货\":\"Giao hàng\",\"待收货\":\"Nhận\",\"待评价\":\"Xếp hạng\",\"售后/退款\":\"Hoàn lại tiền\",\"数据统计\":\"Thống kê\",\"今日成交额\":\"Hôm nay bán\",\"昨日成交额\":\"Hôm qua Bán\",\"本月成交额\":\"Tháng được bán\",\"今日订单数\":\"Đơn đặt hàng hôm nay\",\"昨日订单数\":\"Đơn đặt hàng hôm qua\",\"本月订单数\":\"Đơn đặt hàng tháng\",\"详细数据\":\"Dữ liệu chi tiết\",\"日期\":\"Ngày\",\"订单数\":\"Số lượng đơn hàng\",\"成交额\":\"Doanh thu\",\"立即核销\":\"Viết tắt ngay bây giờ\",\"查看\":\"Xem\",\"确定要核销此订单吗\":\"Bạn có chắc chắn viết tắt đơn hàng này không\",\"确定核销\":\"Xác minh\",\"请输入核销码\":\"Vui lòng nhập mã xác minh\",\"请输入正确的核销码\":\"Vui lòng nhập mã xác minh chính xác\",\"查询中\":\"Truy vấn\",\"订单\":\"Đặt hàng\",\"订单未备注,点击添加备注信息\":\"Đơn hàng không có nhận xét, bấm vào để thêm nhận xét\",\"复制\":\"Sao chép\",\"件商品,应支付\":\"Các mặt hàng, nên trả tiền\",\"邮费\":\"Bưu phí\",\"订单编号\":\"ID đặt hàng\",\"下单时间\":\"Thời gian đặt hàng\",\"支付状态\":\"Trạng thái Thanh toán\",\"已支付\":\"Trả phí\",\"未支付\":\"Chưa thanh toán\",\"支付方式\":\"Phương thức thanh toán\",\"买家留言\":\"Bột ngọt của người mua\",\"支付金额\":\"Thanh toán số tiền\",\"优惠券抵扣\":\"Khấu trừ phiếu thưởng\",\"运费\":\"Giá vé\",\"实付款\":\"Số tiền thực\",\"配送方式\":\"Phương thức giao hàng\",\"快递\":\"Cấp tốc\",\"送货人电话\":\"Điện thoại chuyển phát nhanh\",\"确认付款\":\"Xác nhận Thanh toán\",\"去发货\":\"Giao hàng\",\"改价成功\":\"Giá đã thay đổi thành công\",\"改价失败\":\"Thay đổi giá không thành công\",\"请输入备注\":\"Vui lòng nhập ghi chú\",\"退款中\":\"Hoàn lại tiền\",\"部分退款中\":\"Hoàn trả một phần\",\"件商品,实付款\":\"Hàng hóa, đã thanh toán\",\"同意退货\":\"Đồng ý trả lại\",\"待用户发货\":\"Không Giao hàng\",\"请输入正确的金额\":\"Vui lòng nhập số tiền chính xác\",\"今天\":\"Hôm nay\",\"昨天\":\"Hôm qua\",\"最近7天\":\"7 ngày qua\",\"本月\":\"Tháng\",\"自定义\":\"Tùy chỉnh\",\"营业额(元)\":\"Doanh thu\",\"订单量(份)\":\"Số lượng\",\"增长率\":\"Tỷ lệ tăng\",\"增长\":\"Tăng\",\"单位\":\"Đơn vị\",\"元.\":\"Nhân dân tệ\",\"分.\":\"Xu\",\"固定\":\"Đã sửa\",\"指定范围\":\"Phạm vi\",\"提交时间\":\"Thời gian gửi\",\"原因\":\"Lý do\",\"暂无申请记录,快去申请吧!\":\"Chưa có hồ sơ ứng tuyển, nộp hồ sơ ngay!\",\"没有更多啦\":\"Không còn nữa\",\"待审核\":\"Đang chờ xem xét\",\"审核通过\":\"Đã thông qua đánh giá\",\"审核未通过\":\"Xem lại không thành công\",\"编辑\":\"Chỉnh sửa\",\"重新提交\":\"Gửi lại\",\"会员优惠价\":\"Giảm giá VIP\",\"余额支付\":\"Số dư thanh toán\",\"可用余额\":\"Số dư\",\"微信支付\":\"Thanh toán qua WeChat\",\"确认\":\"Xác nhận\",\"支付提醒\":\"Nhắc nhở thanh toán\",\"线下支付已关闭,请点击确认按钮返回主页\":\"Thanh toán ngoại tuyến đã được đóng, vui lòng nhấp vào nút xác nhận để quay lại trang chủ\",\"请输入支付金额\":\"Vui lòng nhập số tiền thanh toán\",\"正在确认\":\"Xác nhận\",\"进入商城\":\"Vào trung tâm mua sắm\",\"代理商名称\":\"Tên đại lý\",\"请输入代理商名称\":\"Vui lòng nhập Tên đại lý\",\"用户姓名\":\"Tên của bạn\",\"请输入姓名\":\"Vui lòng nhập tên của bạn\",\"联系电话\":\"Điện thoại của bạn\",\"请输入手机号\":\"Vui lòng nhập số điện thoại\",\"验证码\":\"Mã OTP\",\"填写验证码\":\"Điền Mã OTP\",\"邀请码\":\"Mã mời\",\"请输入代理商邀请码\":\"Nhập Mã Mời\",\"请上传营业执照及行业相关资质证明图片\":\"Vui lòng tải lên hình ảnh của giấy phép kinh doanh và các chứng chỉ liên quan đến ngành nghề\",\"图片最多可上传10张,图片格式支持JPG、PNG、JPEG\":\"Có thể tải lên tối đa 10 hình ảnh và định dạng hình ảnh hỗ trợ JPG, PNG, JPEG\",\"上传图片\":\"Tải lên\",\"已阅读并同意\":\"Đọc & Đồng ý\",\"代理商协议\":\"Thỏa thuận đại lý\",\"提交申请\":\"Gửi Đơn đăng ký\",\"代理商入驻协议\":\"Thỏa thuận đại lý\",\"恭喜,您的资料提交成功!\":\"Xin chúc mừng, đã gửi thành công!\",\"返回首页\":\"Trở về nhà\",\"恭喜,您的资料通过审核!\":\"Xin chúc mừng, Bài đánh giá đã thông qua!\",\"您的申请未通过!\":\"Đơn đăng ký của bạn đã bị từ chối!\",\"重新申请\":\"Đăng ký lại\",\"获取验证码\":\"Lấy mã OTP\",\"请输入正确的手机号码\":\"Vui lòng nhập số điện thoại chính xác\",\"重新获取\":\"Yêu cầu lại\",\"请上传营业执照\":\"Vui lòng tải lên giấy phép kinh doanh\",\"请勾选并同意入驻协议\":\"Vui lòng đánh dấu và đồng ý với Thỏa thuận nghề nghiệp\",\"专题栏\":\"Cột chủ đề\",\"暂无数据\":\"Không có dữ liệu\",\"请输入卡号\":\"Vui lòng nhập số thẻ\",\"请输入卡密\":\"Vui lòng nhập mật khẩu của bạn\",\"确认激活\":\"Xác nhận\",\"SVIP会员尊享权\":\"Đặc quyền thành viên SVIP\",\"正在激活\":\"Đang kích hoạt\",\"已使用\":\"Đã qua sử dụng\",\"永久SVIP会员\":\"Thành viên SVIP vĩnh viễn\",\"SVIP会员\":\"Thành viên SVIP\",\"到期\":\"trưởng thành\",\"您与\":\"Bạn với\",\"商城的第\":\"Trung tâm mua sắm\",\"天.\":\"Ngày.\",\"已累积为您节省\":\"Tiết kiệm tích lũy cho bạn\",\"开通即享会员权益\":\"Hưởng lợi ích thành viên\",\"续费会员\":\"Gia hạn\",\"开通会员\":\"Tham gia SVIP\",\"有效期至\":\"Có giá trị cho đến khi\",\"试用\":\"Dùng thử\",\"购买即视为同意\":\"Mua theo sự đồng ý\",\"会员用户协议\":\"Thỏa thuận SVIP\",\"点击兑换卡密\":\"Nhấp để đổi thẻ\",\"会员优惠券\":\"Phiếu giảm giá SVIP\",\"SVIP商品推荐\":\"Khuyến nghị SVIP\",\"商城价\":\"Giá trung tâm thương mại\",\"激活会员卡\":\"Kích hoạt thẻ\",\"支付宝支付\":\"Alipay\",\"成功开启0元试用\":\"Đã mở thành công bản dùng thử 0 nhân dân tệ\",\"确认绑定\":\"Xác nhận ràng buộc\",\"绑定成功\":\"Liên kết thành công\",\"商城客服已离线\":\"Dịch vụ khách hàng ngoại tuyến\",\"我要反馈\":\"Tôi muốn phản hồi\",\"请填写内容\":\"Vui lòng điền nội dung\",\"提交\":\"Gửi\",\"精品推荐\":\"Được đề xuất\",\"热门榜单\":\"Phổ biến\",\"首发新品\":\"Mới\",\"促销单品\":\"Khuyến mại\",\"预告\":\"Thông báo\",\"回放\":\"Phát lại\",\"进行中\":\"Đang xử lý\",\"发送客服\":\"Gửi\",\"客服连接中\":\"Dịch vụ khách hàng đang kết nối\",\"连接失败\":\"Kết nối không thành công\",\"提示\":\"Gợi ý\",\"客服已下线,是否需要反馈?\":\"Dịch vụ khách hàng đang ngoại tuyến, bạn có cần phản hồi không?\",\"和好友一起分享\":\"Chia sẻ với bạn bè\",\"积分抵扣\":\"Trừ điểm\",\"已开票\":\"Đã lập hóa đơn\",\"未开票\":\"Không được lập hóa đơn\",\"发票信息\":\"Thông tin hóa đơn\",\"发票抬头\":\"Hóa đơn\",\"发票抬头类型\":\"Loại tiêu đề hóa đơn\",\"个人\":\"PER\",\"企业\":\"COM\",\"发票类型\":\"Loại hóa đơn\",\"电子普通发票\":\"Hóa đơn điện tử chung\",\"电子专用发票\":\"Hóa đơn điện tử đặc biệt\",\"企业税号\":\"Thuế doanh nghiệp\",\"联系信息\":\"Thông tin liên hệ\",\"真实姓名\":\"Tên thật\",\"联系邮箱\":\"Email\",\"抬头选择\":\"Lựa chọn đầu\",\"默认\":\"Mặc định\",\"普通\":\"Bình thường\",\"专用\":\"Chuyên dụng\",\"您还没有添加发票信息哟\":\"Bạn chưa thêm thông tin hóa đơn\",\"添加新的抬头\":\"Thêm tiêu đề mới\",\"不开发票\":\"Không có hóa đơn\",\"抽奖\":\"Xổ số\",\"全选\":\"Chọn tất cả\",\"属性\":\"Thuộc tính\",\"请填写具体地址\":\"Vui lòng điền vào địa chỉ cụ thể\",\"省\":\"Tỉnh\",\"市\":\"Thành phố\",\"区\":\"Khu vực\",\"添加成功\":\"Thêm thành công\",\"您已拒绝导入微信地址权限\":\"Bạn đã từ chối quyền nhập địa chỉ WeChat\",\"是否进入权限管理,调整授权?\":\"Bạn có vào phần quản lý quyền và điều chỉnh quyền không?\",\"已取消\":\"Đã hủy\",\"添加失败\":\"Thêm không thành công\",\"请填写收货人姓名\":\"Vui lòng điền tên người nhận hàng\",\"请选择所在地区\":\"Vui lòng chọn khu vực của bạn\",\"请填写详细地址\":\"Vui lòng điền địa chỉ chi tiết\",\"星\":\"Ngôi sao\",\"商品满足你的期待么?说说你的想法,分享给想买的他们吧\":\"Sản phẩm có đáp ứng được mong đợi của bạn không? Hãy cho chúng tôi biết suy nghĩ của bạn và chia sẻ với những người muốn mua sản phẩm đó\",\"立即评价\":\"Xếp hạng ngay\",\"商品质量\":\"Chất lượng sản phẩm\",\"服务态度\":\"Thái độ phục vụ\",\"缺少参数\":\"Thiếu tham số\",\"请填写你对宝贝的心得\":\"Vui lòng điền ý kiến ​​của bạn về sản phẩm\",\"正在发布评论\":\"Đăng bình luận\",\"感谢您的评价\":\"Cảm ơn đánh giá của bạn\",\"评价完成\":\"Xem xét hoàn tất\",\"恭喜您\":\"Xin chúc mừng\",\"获得\":\"Nhận\",\"机会\":\"Cơ hội\",\"领取成功\":\"Đã nhận thành công\",\"评分\":\"Điểm\",\"全部\":\"TẤT CẢ\",\"好评\":\"Khen ngợi\",\"中评\":\"Trung bình\",\"差评\":\"Xấu\",\"加载更多\":\"Đang tải thêm\",\"千米距离\":\"km đi\",\"搜索商品名称\":\"Tìm kiếm Sản phẩm\",\"价格\":\"Giá\",\"销量\":\"Đã bán\",\"新品\":\"Mới\",\"已全部加载\":\"Đã tải tất cả\",\"缺少订单号\":\"Thiếu ID đơn hàng\",\"退货件数\":\"Số được hoàn lại\",\"退款类型\":\"Loại tiền hoàn lại\",\"退款原因\":\"Lý do hoàn tiền\",\"备注说明\":\"Nhận xét\",\"填写备注信息,100字以内\":\"Nhận xét trong vòng 100 từ\",\"仅退款\":\"Chỉ hoàn lại tiền\",\"退货并退款\":\"Trả lại và hoàn lại tiền\",\"申请成功\":\"Áp dụng thành công\",\"请先选择退货商品\":\"Vui lòng chọn mặt hàng trả lại trước\",\"搜索历史\":\"Lịch sử tìm kiếm\",\"热门搜索\":\"Tìm kiếm phổ biến\",\"请输入要搜索的商品\":\"Vui lòng nhập sản phẩm bạn muốn tìm kiếm\",\"正在搜索中\":\"Đang tìm kiếm\",\"中奖记录\":\"Kỷ lục chiến thắng\",\"我的奖品\":\"Giải thưởng của tôi\",\"活动规则\":\"Quy tắc hoạt động\",\"昵称\":\"Tên biệt hiệu\",\"序号\":\"Nối tiếp\",\"奖品名称\":\"Tên giải thưởng\",\"获奖时间\":\"Giành chiến thắng\",\"商家暂未上架活动哦\":\"Người bán chưa liệt kê sự kiện\",\"获取抽奖信息\":\"Nhận thông tin rút thăm trúng thưởng\",\"奖品类型\":\"Loại Giải thưởng\",\"立即兑换\":\"Đổi ngay\",\"兑换时间\":\"Thời gian trao đổi\",\"暂无中奖记录\":\"Không có kỷ lục chiến thắng\",\"积分\":\"Điểm\",\"余额\":\"Số dư\",\"红包\":\"Tiền mặt\",\"设置收货地址\":\"Đặt địa chỉ giao hàng\",\"暂无门店信息\":\"Không có thông tin cửa hàng\",\"剩余积分\":\"Điểm còn lại\",\"当前积分\":\"Điểm hiện tại\",\"开具发票\":\"Hóa đơn\",\"请填写\":\"Vui lòng điền vào\",\"配送运费\":\"Phí vận chuyển\",\"会员商品优惠\":\"Ưu đãi Sản phẩm\",\"会员运费优惠\":\"Ưu đãi Giao hàng\",\"合计\":\"Tổng số\",\"使用微信快捷支付\":\"Thanh toán nhanh qua WeChat\",\"使用支付宝支付\":\"Thanh toán bằng Alipay\",\"线下支付\":\"Thanh toán ngoại tuyến\",\"使用线下付款\":\"Sử dụng thanh toán ngoại tuyến\",\"好友代付\":\"Bạn bè trả tiền\",\"找微信好友支付\":\"Tìm bạn để thanh toán\",\"立即使用\":\"Sử dụng\",\"请选择要购买的商品\":\"Vui lòng chọn một mặt hàng để mua\",\"发票\":\"Hóa đơn\",\"不使用\":\"Không sử dụng\",\"订单创建成功\":\"Đã tạo đơn hàng thành công\",\"请选择支付方式\":\"Vui lòng chọn phương thức thanh toán\",\"请选择收货地址\":\"Vui lòng chọn địa chỉ giao hàng\",\"请填写联系人或联系人电话\":\"Vui lòng điền thông tin người liên hệ hoặc số điện thoại liên hệ\",\"暂无门店,请选择其他方式\":\"Hiện tại không có cửa hàng, vui lòng chọn cách khác\",\"请输入\":\"Vui lòng nhập\",\"请输入正确的\":\"Vui lòng nhập chính xác\",\"请上传\":\"Vui lòng tải lên\",\"订单支付中\":\"Thanh toán\",\"请按以上退货信息将商品退回\":\"Vui lòng gửi lại hàng kèm theo thông tin\",\"请联系管理员获取退货地址\":\"Vui lòng liên hệ với quản trị viên để biết địa chỉ trả hàng\",\"待核销\":\"Đã xóa sổ\",\"核销信息\":\"Thông tin xóa sổ\",\"营业时间\":\"Giờ làm việc\",\"每日\":\"Hàng ngày\",\"使用说明\":\"Hướng dẫn Sử dụng\",\"可将二维码出示给店员扫描或提供数字核销码\":\"Mã QR có thể được xuất trình cho nhân viên bán hàng để quét hoặc cung cấp mã xác minh kỹ thuật số\",\"可将二维码出示给配送员进行核销\":\"Mã QR có thể được xuất trình cho người chuyển phát nhanh để xác minh\",\"查看位置\":\"Xem vị trí\",\"拒绝原因\":\"Lý do từ chối\",\"联系客服\":\"Liên hệ\",\"商家备注\":\"Ghi chú của người bán\",\"收货人\":\"Người nhận\",\"收货地址\":\"Địa chỉ giao hàng\",\"配送人姓名\":\"Tên tàu\",\"拨打\":\"Gọi\",\"虚拟发货\":\"Con tàu ảo\",\"已发货,请注意查收\":\"Đã giao hàng, vui lòng kiểm tra\",\"虚拟备注\":\"Ghi chú ảo\",\"总代付\":\"Tổng số tiền\",\"申请开票\":\"Áp dụng hóa đơn\",\"查看发票\":\"Xem hóa đơn\",\"取消订单\":\"Hủy\",\"立即付款\":\"Thanh toán\",\"批量退款\":\"Hoàn trả hàng loạt\",\"查看拼团\":\"Xem nhóm\",\"再次购买\":\"Mua lại\",\"取消申请\":\"Huỷ Áp dụng\",\"填写退货信息\":\"Thông tin trả lại\",\"查看退货物流\":\"Hậu cần\",\"您确认放弃此次申请吗\":\"Bạn có chắc chắn muốn từ bỏ ứng dụng này không\",\"操作成功\":\"Hoạt động thành công\",\"订单信息不存在\":\"Thông tin đặt hàng không tồn tại\",\"为保障权益,请收到货确认无误后,再确认收货\":\"Để bảo vệ quyền và lợi ích, Quý khách vui lòng xác nhận nhận hàng sau khi xác nhận đúng hàng.\",\"删除订单\":\"Xóa đơn hàng\",\"确定删除该订单\":\"Xác nhận xóa đơn hàng\",\"删除成功\":\"Đã xóa thành công\",\"确认取消该订单\":\"Xác nhận hủy đơn hàng\",\"订单信息\":\"Thông tin đặt hàng\",\"消费订单\":\"Đặt hàng\",\"总消费\":\"Tổng số tiền\",\"预售\":\"Bán trước\",\"线下付款,未支付\":\"Ngoại tuyến chưa thanh toán\",\"未核销\":\"Không viết tắt\",\"件商品,总金额\":\"mặt hàng, tổng số tiền\",\"查看详情\":\"Xem\",\"暂无订单\":\"Chưa có đơn hàng\",\"缺少订单号无法取消订单\":\"Không thể hủy đơn hàng mà không có số đơn hàng\",\"订单支付成功\":\"Đã thanh toán đơn hàng thành công\",\"订单支付失败\":\"Đơn hàng đã thanh toán không thành công\",\"暂未支付\":\"Chưa được thanh toán\",\"失败原因\":\"Lý do không thành công\",\"重新购买\":\"Mua lại\",\"重新支付\":\"Thanh toán lại\",\"赠送优惠券\":\"Tặng phiếu giảm giá\",\"有效期\":\"Tính hợp lệ\",\"缺少参数无法查看订单支付状态\":\"Thiếu thông số không xem được trạng thái thanh toán đơn hàng\",\"最多可上传3张\":\"Tối đa 3 tải lên\",\"请选择产品\":\"Vui lòng chọn sản phẩm\",\"该产品没有更多库存了\":\"Không còn hàng cho sản phẩm này\",\"优品推荐\":\"Đề xuất Tốt nhất\",\"暂无产品\":\"Chưa có sản phẩm\",\"重新选择\":\"Chọn lại\",\"请选择数量\":\"Vui lòng chọn số lượng\",\"砍价专区·BARGAINING\":\"BARGAINING\",\"立即砍价\":\"Cắt ngay bây giờ\",\"拼团活动\":\"Nhóm\",\"人拼团成功.\":\"Mọi người đã thành công\",\"人参团\":\"Nhóm nhân sâm\",\"拼团价\":\"Giá nhóm\",\"已过期\":\"Đã hết hạn\",\"关注\":\"Theo dõi\",\"推荐好货\":\"Đề xuất hàng hóa\",\"暂无商品\":\"Chưa có sản phẩm\",\"限时秒杀\":\"Tăng đột biến có giới hạn thời gian\",\"抢\":\"Lấy\",\"广告位\":\"Không gian ADV\",\"精彩内容\":\"Điểm nổi bật\",\"砍价模块,暂无数据\":\"Mô-đun mặc cả, chưa có dữ liệu\",\"砍价活动\":\"Mặc cả\",\"呼朋唤友来砍价\":\"Gọi cho bạn bè mặc cả\",\"拼团模块,暂无数据\":\"Mô-đun nhóm, chưa có dữ liệu\",\"享超值开团价\":\"Hưởng mức giá nhóm đáng đồng tiền\",\"优惠券,暂无数据\":\"Phiếu giảm giá, tạm thời không có dữ liệu\",\"领取今日好券\":\"Nhận phiếu giảm giá tốt ngay hôm nay\",\"可用\":\"Đã qua sử dụng\",\"领取\":\"Yêu cầu\",\"客服\":\"Dịch vụ\",\"商品列表,暂无数据\":\"Tạm thời không có dữ liệu\",\"搜索商品\":\"Tìm kiếm Sản phẩm\",\"暂无图片,请上传图片\":\"Không có ảnh, vui lòng tải lên\",\"首发新品,暂无数据\":\"Sản phẩm mới đầu tiên, chưa có dữ liệu\",\"多个优质商品最新上架\":\"Hàng chất lượng cao mới nhất trên kệ\",\"暂无新闻,请上传新闻\":\"Không có tin tức, vui lòng tải lên tin tức\",\"热度 TOP\":\"Heat TOP\",\"排行榜、暂无数据\":\"Bảng xếp hạng, tạm thời không có dữ liệu\",\"促销单品,暂无数据\":\"Các mặt hàng khuyến mại, tạm thời không có dữ liệu\",\"库存商品优惠促销活动\":\"Hoạt động khuyến mại cho hàng hóa tồn kho\",\"精品推荐,暂无数据\":\"Đề xuất cửa hàng, chưa có dữ liệu\",\"上百种商品分类任您选择\":\"Hàng trăm danh mục sản phẩm cho bạn lựa chọn\",\"秒杀模块,暂无数据\":\"Mô-đun Seckill, tạm thời không có dữ liệu\",\"场\":\"Trang web\",\"暂无数据,请设置\":\"Không có dữ liệu, vui lòng thiết lập\",\"暂无数据,请先添加分类\":\"Không có dữ liệu, vui lòng thêm phân loại trước\",\"暂无标题\":\"Tạm thời không có tiêu đề\",\"诚意推荐品质商品\":\"Đề xuất hàng chất lượng tốt\",\"点击“立即关注”即可关注公众号\":\"Nhấp vào \\\"theo dõi ngay\\\" để theo dõi tài khoản chính thức\",\"立即关注\":\"Theo dõi ngay bây giờ\",\"添加到我的小程序, 微信首页下拉即可访问商城。\":\"Thêm nó vào applet của tôi, và bạn có thể truy cập trung tâm thương mại bằng cách kéo xuống trang chủ wechat\",\"点击\":\"Nhấp vào\",\"服务协议与隐私政策\":\"Thỏa thuận dịch vụ và chính sách bảo mật\",\"请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。\":\"Vui lòng đảm bảo đọc kỹ và hiểu đầy đủ các điều khoản của thỏa thuận dịch vụ và chính sách bảo mật, bao gồm nhưng không giới hạn ở: để cung cấp cho bạn tính năng nhắn tin nhanh, chia sẻ nội dung và các dịch vụ khác, chúng tôi cần thu thập thiết bị của bạn thông tin, nhật ký hoạt động và thông tin cá nhân khác. Bạn có thể xem, thay đổi, xóa thông tin cá nhân và quản lý ủy quyền của mình trong Cài đặt \",\"你可以阅读\":\"Bạn có thể đọc\",\"《服务协议与隐私政策》\":\"\\\"Thỏa thuận dịch vụ và chính sách bảo mật\\\"\",\"了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。\":\"Tìm hiểu thêm. Nếu bạn đồng ý, vui lòng nhấp vào Tôi đồng ý để bắt đầu chấp nhận dịch vụ của chúng tôi\",\"我同意\":\"Tôi đồng ý\",\"残忍拒绝\":\"Từ chối phũ phàng\",\"下拉加载更多\":\"Kéo xuống tải thêm\",\"网络连接断开\":\"Kết nối mạng bị ngắt kết nối\",\"请检查情况:\":\"Vui lòng kiểm tra điều kiện:\",\"在设置中是否已开启网络权限\":\"Cho dù quyền mạng có được bật trong cài đặt hay không\",\"当前是否处于弱网环境\":\"Hiện tại trong môi trường mạng yếu\",\"版本是否过低,升级试试吧\":\"Khi phiên bản quá thấp, hãy thử nâng cấp\",\"重新连接\":\"Kết nối lại\",\"加载中\":\"Đang tải\",\"没有更多内容啦~\":\"Không còn nội dung nữa ~\",\"100%正品保证\":\"100% chính hãng\",\"所有商品精挑细选\":\"Hãy rất kén chọn\",\"售后无忧\":\"Không lo lắng sau khi bán\",\"管理\":\"Ống\",\"购物数量\":\"Số lượng mua sắm\",\"请重新选择商品规格\":\"Vui lòng chọn lại đặc điểm sản phẩm\",\"重选\":\"Lựa chọn lại\",\"失效商品\":\"Hàng không hợp lệ\",\"失效\":\"Thất bại\",\"该商品已失效\":\"Hàng đã hết hạn sử dụng\",\"立即下单\":\"Đặt hàng ngay\",\"我也是有底线的\":\"Tôi cũng có một điểm mấu chốt\",\"产品库存不足,请选择其它\":\"Hàng tồn kho không đủ, vui lòng chọn sản phẩm khác\",\"添加购物车成功\":\"Đã thêm thành công giỏ hàng\",\"清除成功\":\"Dọn dẹp thành công\",\"暂无兑换记录~\":\"Không có hồ sơ trao đổi ~\",\"大家都在换\":\"Mọi người đều đang thay đổi\",\"人兑换\":\"Trao đổi người\",\"轻松赚积分\":\"Kiếm điểm dễ dàng\",\"购买商品\":\"Mua hàng\",\"购买商品可获得积分奖励\":\"Điểm thưởng khi mua hàng\",\"去完成\":\"Đi\",\"每日签到活动\":\"Hoạt động đăng ký hàng ngày\",\"每日签到可获得积分奖励\":\"Đăng ký hàng ngày có thể nhận được điểm thưởng\",\"九宫格抽奖活动\":\"Xổ số Jiugongge\",\"幸运抽奖可获得积分奖励\":\"Rút thăm may mắn có thể nhận được điểm thưởng\",\"我的积分\":\"Điểm của tôi\",\"每日签到\":\"Đăng nhập hàng ngày\",\"积分抽奖\":\"Xổ số tích điểm\",\"兑换记录\":\"Bản ghi trao đổi\",\"已兑换\":\"Đã đổi\",\"无法兑换\":\"Không đổi được\",\"[默认]\":\"[Mặc định]\",\"可用积分\":\"Điểm khả dụng\",\"快递费用\":\"Phí chuyển phát nhanh\",\"免运费\":\"Miễn phí vận chuyển\",\"备注信息\":\"Nhận xét\",\"请添加备注(150字以内)\":\"Vui lòng thêm nhận xét (trong vòng 150 từ)\",\"使用线上支付宝支付\":\"Thanh toán bằng Alipay trực tuyến\",\"可用余额:\":\"Số dư:\",\"选择线下付款方式\":\"Chọn phương thức thanh toán ngoại tuyến\",\"正在加载…\":\"Đang tải ...\",\"可用积分不足!\":\"Không đủ điểm!\",\"订单状态\":\"Trạng thái đơn hàng\",\"支付积分\":\"Trả điểm\",\"备注\":\"Nhận xét\",\"配送核销码\":\"Mã xác minh giao hàng\",\"当前可用余额:\":\"Số dư khả dụng hiện tại:\",\"正在加载\":\"Đang tải\",\"缺少经纬度信息无法查看地图!\":\"Không thể xem bản đồ nếu không có thông tin kinh độ và vĩ độ! \",\"商品兑换成功\":\"Đã đổi thành công\",\"兑换方式\":\"Phương thức trao đổi\",\"积分兑换\":\"Trao đổi điểm\",\"兑换积分\":\"Đổi điểm\",\"取消兑换\":\"Hủy trao đổi\",\"缺少参数无法查看订单兑换状态\":\"Không thể xem trạng thái trao đổi đơn hàng nếu không có thông số\",\"用户离开了\":\"Người dùng đã rời đi\",\"兑换成功\":\"Đã đổi thành công\",\"物流公司\":\"Công ty hậu cần\",\"复制单号\":\"Copy doc no\",\"设为默认\":\"Đặt làm mặc định\",\"添加新地址\":\"Thêm địa chỉ mới\",\"导入微信地址\":\"Nhập địa chỉ wechat\",\"取消选择\":\"Bỏ chọn\",\"您设置的默认地址不存在!\":\"Địa chỉ mặc định bạn đặt không tồn tại!\",\"设置成功\":\"Cài đặt thành công\",\"您删除的地址不存在!\":\"Địa chỉ bạn đã xóa không tồn tại!\",\"获取头像\":\"Lấy hình đại diện\",\"请点击授权\":\"Vui lòng nhấp vào ủy quyền\",\"绑定手机号\":\"Liên kết số điện thoại di động\",\"永久\":\"Vĩnh viễn\",\"会员到期\":\"Hết hạn tư cách thành viên\",\"未开通会员\":\"Không mở thành viên\",\"查看会员权益\":\"Xem lợi ích thành viên\",\"立即续费\":\"Gia hạn\",\"立即激活\":\"Kích hoạt\",\"会员可享多项权益\":\"Hưởng nhiều lợi ích\",\"订单中心\":\"Đơn đặt hàng của tôi\",\"我的服务\":\"Dịch vụ của tôi\",\"隐私协议\":\"Quyền riêng tư\",\"商家管理\":\"Quản lý doanh nghiệp\",\"更新用户信息成功\":\"Cập nhật thông tin người dùng thành công\",\"客服接待\":\"Tiếp tân\",\"点击复制网址去浏览器中打开\":\"Nhấp vào Sao chép URL để mở trong trình duyệt\",\"点击复制\":\"Nhấp vào Sao chép\",\"完成支付\":\"Hoàn tất thanh toán\",\"点击右上角\":\"Nhấp vào góc trên bên phải\",\"选择 在浏览器 打开,去支付宝支付\":\"Chọn mở trong trình duyệt và thanh toán qua Alipay\",\"支付订单不存在,页面将在2秒后自动关闭!\":\"Lệnh thanh toán không tồn tại và trang sẽ tự động đóng sau 2 giây!\",\"正在支付中\":\"Thanh toán\",\"支付订单不存在,页面将在2秒后自动关闭\":\"Lệnh thanh toán không tồn tại và trang sẽ tự động đóng sau 2 giây\",\"复制失败\":\"Sao chép không thành công\",\"您目前的排名\":\"Xếp hạng hiện tại của bạn\",\"您目前暂无排名\":\"Bạn hiện đang xếp hạng\",\"暂无排名~\":\"Không có thứ hạng ~\",\"输入手机号\":\"Nhập số điện thoại di động\",\"输入验证码\":\"Nhập mã xác minh\",\"立即登录\":\"Đăng nhập ngay bây giờ\",\"请填写手机号码\":\"Vui lòng điền số điện thoại di động của bạn\",\"请填写验证码\":\"Vui lòng điền mã xác minh vào\",\"请输入正确的验证码\":\"Vui lòng nhập mã xác minh chính xác\",\"正在登录中\":\"Đang đăng nhập\",\"登录成功\":\"Đăng nhập thành công\",\"获取授权\":\"Nhận ủy quyền\",\"获取微信的手机号授权\":\"Nhận ủy quyền số điện thoại di động wechat\",\"获取微信手机号\":\"Lấy số điện thoại di động wechat\",\"输入手机号码\":\"Nhập số điện thoại di động\",\"填写登录密码\":\"Điền mật khẩu đăng nhập\",\"登录\":\"Đăng nhập\",\"快速登录\":\"Đăng nhập nhanh\",\"账号登录\":\"Đăng nhập tài khoản\",\"其他方式登录\":\"Đăng nhập bằng các phương pháp khác\",\"登录中\":\"Đang đăng nhập\",\"获取用户信息失败\":\"Không lấy được thông tin người dùng\",\"请绑定手机号后,继续操作\":\"Vui lòng liên kết số điện thoại di động của bạn và tiếp tục hoạt động\",\"错误信息\":\"Thông tin lỗi\",\"用户点击确定\":\"Người dùng bấm OK\",\"用户点击取消\":\"Người dùng nhấp vào Hủy bỏ\",\"登录失败\":\"Đăng nhập không thành công\",\"请勿重复点击\":\"Không nhấp liên tục\",\"请填写密码\":\"Vui lòng điền mật khẩu\",\"您输入的密码过于简单\":\"Mật khẩu bạn nhập quá đơn giản\",\"请填写账号\":\"Vui lòng điền số tài khoản\",\"请输入正确的账号\":\"Vui lòng nhập số tài khoản chính xác\",\"[图片]\":\"[Hình ảnh]\",\"[语音]\":\"[Giọng nói]\",\"[商品]\":\"[Sản phẩm]\",\"[订单]\":\"[Đặt hàng]\",\"亲、暂无消息记录哟!\":\"Thân mến, chưa có tin nhắn nào!\",\"站内消息\":\"Tin nhắn trong đài\",\"客服消息\":\"Tin nhắn dịch vụ khách hàng\",\"通知于\":\"Đã thông báo trên\",\"获取详情中\":\"Nhận thông tin chi tiết\",\"代付订单创建成功,发给好友帮你付款吧~\":\"Lệnh thanh toán đã được tạo thành công, hãy gửi cho bạn của bạn để giúp bạn thanh toán ~\",\"帮我付一下这件商品了,谢谢~\":\"Giúp tôi thanh toán cho món hàng này, cảm ơn bạn ~\",\"已经有人替我代付,谢谢啦~\":\"Ai đó đã trả tiền cho tôi, cảm ơn bạn ~\",\"谢谢你帮我支付,么么哒~\":\"Cảm ơn bạn đã giúp tôi thanh toán, Moda ~\",\"我已为你代付成功,商家正在努力发货中~\":\"Tôi đã thanh toán thành công cho bạn và người bán đang cố gắng giao hàng ~\",\"好友代付成功,商家正在努力发货中~\":\"Thanh toán cho bạn bè đã thành công và người bán đang cố gắng giao hàng ~\",\"发送给微信好友\":\"Gửi cho bạn bè wechat\",\"查看订单详情\":\"Xem chi tiết đơn hàng\",\"订单已支付\":\"Đơn hàng đã thanh toán\",\"如果订单申请退款,已支付金额将原路退还给您\":\"Nếu đơn hàng áp dụng hoàn lại tiền, số tiền đã thanh toán sẽ được trả lại cho bạn theo cách tương tự\",\"代付成功\":\"Thanh toán thành công\",\"谢谢你为我付款,还可以再去看看其他商品哟~\":\"Cảm ơn bạn đã trả tiền cho mình, còn bạn có thể qua xem hàng khác ~\",\"该订单暂未支付\":\"Đơn hàng vẫn chưa được thanh toán\",\"人\":\"Người\",\"推广人数\":\"Số lượng người quảng bá\",\"一级\":\"Cấp độ 1\",\"二级\":\"Cấp độ 2\",\"点击搜索会员名称\":\"Nhấp để tìm kiếm tên thành viên\",\"团队排序\":\"Sắp xếp nhóm\",\"金额排序\":\"Sắp xếp số lượng\",\"订单排序\":\"Sắp xếp đơn hàng\",\"单\":\"Đơn hàng\",\"加入时间\":\"Thời gian tham gia\",\"累积推广订单\":\"Số lượng đơn hàng\",\"本月累计推广订单\":\"Đơn đặt hàng tháng\",\"返佣\":\"Giảm giá\",\"暂未返佣\":\"Không giảm giá\",\"返佣时间\":\"Thời gian hoàn tiền\",\"单号\":\"Số đơn hàng\",\"暂无推广订单~\":\"Không có đơn hàng khuyến mãi ~\",\"推广订单列表\":\"Danh sách đơn hàng khuyến mãi\",\"找回密码\":\"Lấy lại mật khẩu\",\"填写您的新密码\":\"Điền mật khẩu mới của bạn\",\"加载失败\":\"Lỗi tải\",\"点击授权登录您的客服工作台\":\"Nhấp vào ủy quyền để đăng nhập vào bàn làm việc dịch vụ khách hàng của bạn\",\"授权登录\":\"Đăng nhập được ủy quyền\",\"没有登录的code,请重新扫码\":\"Code không đăng nhập được, vui lòng quét lại code\",\"员工人数\":\"Số lượng nhân viên\",\"邀请\":\"Lời mời\",\"分佣比例\":\"Quy mô\",\"修改分佣比例\":\"Điều chỉnh tỷ lệ\",\"请输入百分比\":\"Vui lòng nhập tỷ lệ phần trăm\",\"删除员工\":\"Xóa nhân viên\",\"确定删除该员工?\":\"Bạn có chắc chắn xóa nhân viên này không?\",\"请输入比例\":\"Vui lòng nhập thang điểm\",\"分类\":\"Lớp\",\"我的\":\"Của tôi\",\"姓名\":\"Tên\",\"请输入联系电话\":\"Vui lòng nhập số điện thoại liên hệ\",\"所在地区\":\"Vị trí\",\"详细地址\":\"Địa chỉ\",\"设置为默认地址\":\"Đặt làm địa chỉ mặc định\",\"立即保存\":\"Lưu ngay bây giờ\",\"浙江省\":\"Chiết Giang\",\"杭州市\":\"Hàng Châu\",\"滨江区\":\"Quận Tân Cương\",\"广东省\":\"Tỉnh Quảng Đông\",\"广州市\":\"Quảng Châu\",\"番禺区\":\"Phiên Ngung\",\"修改地址\":\"Sửa đổi địa chỉ\",\"添加地址\":\"Thêm địa chỉ\",\"已取消!\":\"Đã hủy! \",\"请填写联系电话\":\"Vui lòng điền số điện thoại liên hệ\",\"保存中\":\"Tiết kiệm\",\"修改成功\":\"Sửa đổi thành công\",\"消费\":\"Tiêu thụ\",\"充值\":\"Nạp tiền\",\"暂无账单的记录哦~\":\"Tạm thời không có hồ sơ hóa đơn ~\",\"点击【立即注销】即代表您已经同意《用户注销协议》\":\"Nhấp vào [đăng xuất ngay lập tức] có nghĩa là bạn đã đồng ý với thỏa thuận đăng xuất của người dùng\",\"立即注销\":\"Đăng xuất ngay bây giờ\",\"是否确认注销\":\"Xác nhận đăng xuất\",\"注销后无法恢复,请谨慎操作\":\"Không thể khôi phục sau khi đăng xuất, hãy cẩn thận\",\"注销\":\"Đăng xuất\",\"持卡人\":\"Chủ thẻ\",\"请输入持卡人姓名\":\"Nhập tên chủ thẻ\",\"卡号\":\"Số thẻ\",\"请填写卡号\":\"Vui lòng điền số thẻ\",\"银行\":\"Ngân hàng\",\"提现\":\"Rút tiền\",\"最低提现金额\":\"Số tiền rút tối thiểu\",\"当前可提现金额\":\"Số tiền có thể rút hiện tại\",\"冻结佣金\":\"Hoa hồng đông lạnh\",\"说明: 每笔佣金的冻结期为\":\"Lưu ý: thời gian đóng băng của mỗi khoản hoa hồng là\",\"天,到期后可提现\":\"Ngày, có thể rút khi hết hạn\",\"账号\":\"Tài khoản\",\"请填写您的微信账号\":\"Điền vào tài khoản wechat của bạn\",\"收款码\":\"Mã bộ sưu tập\",\"请填写您的支付宝账号\":\"Điền số tài khoản Alipay của bạn\",\"请选择银行\":\"Vui lòng chọn ngân hàng\",\"银行卡\":\"Thẻ ngân hàng\",\"微信\":\"Wechat\",\"支付宝\":\"Alipay\",\"请填写持卡人姓名\":\"Vui lòng điền tên chủ thẻ\",\"请填写微信号\":\"Vui lòng điền vào wechat\",\"请填写提现金额\":\"Vui lòng điền số tiền rút\",\"提现金额不能低于\":\"Số tiền rút không được nhỏ hơn\",\"未使用\":\"Không được sử dụng\",\"已使用/过期\":\"Đã sử dụng / hết hạn\",\"通用劵\":\"Chứng khoán chung\",\"一级分佣上浮\":\"Tăng một cấp\",\"二级分佣上浮\":\"Nổi thứ cấp\",\"快速升级技巧\":\"Kỹ năng nâng cấp nhanh chóng\",\"未完成\":\"Chưa hoàn thành\",\"已领完\":\"Đã thu thập\",\"当前共\":\"Tổng số hiện tại\",\"取关\":\"Tắt\",\"请选择商品\":\"Vui lòng chọn sản phẩm\",\"头像\":\"Hình đại diện\",\"手机号码\":\"Số điện thoại di động\",\"点击绑定手机号\":\"Nhấp để ràng buộc\",\"ID号\":\"Số ID\",\"权限设置\":\"Quyền\",\"点击管理\":\"Quản lý\",\"密码\":\"Mật khẩu\",\"点击修改密码\":\"Nhấp vào Sửa đổi\",\"更换手机号码\":\"Thay đổi số\",\"点击更换手机号码\":\"Nhấp để\",\"缓存大小\":\"Kích thước bộ nhớ đệm\",\"当前版本\":\"Phiên bản hiện tại\",\"地址管理\":\"Địa chỉ\",\"发票管理\":\"Hóa đơn\",\"账号注销\":\"Hủy bỏ\",\"注销后无法恢复\":\"Không thể phục hồi\",\"累计积分\":\"Điểm tích lũy\",\"累计消费\":\"Tiêu thụ\",\"冻结积分\":\"Điểm đóng băng\",\"积分规则\":\"Quy tắc tích phân\",\"提示:积分数值的高低会直接影响您的会员等级\":\"Mẹo: giá trị cấp độ thành viên của bạn\",\"提示:你有\":\"Mẹo: bạn có\",\"积分在\":\"Tích phân trong\",\"过期,请尽快使用\":\"Hết hạn, vui lòng sử dụng càng sớm càng tốt\",\"暂无积分记录哦~\":\"Tạm thời không có điểm số ~\",\"赚积分\":\"Kiếm điểm\",\"分值明细\":\"Chi tiết điểm\",\"分值提升\":\"Tăng điểm\",\"抬头类型\":\"Loại tiêu đề\",\"增值税电子专用发票\":\"Hóa đơn đặc biệt điện tử VAT\",\"增值税电子普通发票\":\"Hóa đơn VAT điện tử thông thường\",\"需要开具发票的姓名\":\"Tên được lập hóa đơn\",\"需要开具发票的企业名称\":\"Tên doanh nghiệp xuất hóa đơn\",\"税号\":\"Số thuế\",\"纳税人识别号\":\"Mã số người nộp thuế\",\"手机号\":\"Số điện thoại di động\",\"您的手机号\":\"Số điện thoại di động của bạn\",\"邮箱\":\"Hộp thư\",\"您的联系邮箱\":\"Hộp thư liên hệ của bạn\",\"开户银行\":\"Gửi tiền ngân hàng\",\"您的开户银行\":\"Ngân hàng gửi tiền của bạn\",\"银行账号\":\"Số tài khoản ngân hàng\",\"您的银行账号\":\"Số tài khoản ngân hàng của bạn\",\"企业地址\":\"Địa chỉ doanh nghiệp\",\"您所在的企业地址\":\"Địa chỉ doanh nghiệp của bạn\",\"企业电话\":\"Điện thoại doanh nghiệp\",\"您的企业电话\":\"Điện thoại doanh nghiệp của bạn\",\"设置为默认抬头\":\"Đặt làm tiêu đề mặc định\",\"保存\":\"Lưu\",\"发票类型选择\":\"Lựa chọn loại hóa đơn\",\"纸质发票开出后将以邮寄形式交付\":\"Sau khi xuất hóa đơn giấy sẽ được chuyển qua đường bưu điện\",\"请输入需要开具发票的姓名\":\"Vui lòng nhập tên được lập hóa đơn\",\"请输入您的手机号\":\"Vui lòng nhập số điện thoại di động của bạn\",\"请正确输入您的手机号\":\"Vui lòng nhập chính xác số điện thoại di động của bạn\",\"请输入您的联系邮箱\":\"Vui lòng nhập email liên hệ của bạn\",\"请正确输入您的联系邮箱\":\"Vui lòng nhập chính xác email liên hệ của bạn\",\"请输入需要开具发票的企业名称\":\"Vui lòng điền tên doanh nghiệp xuất hóa đơn\",\"请输入纳税人识别号\":\"Vui lòng nhập mã số thuế\",\"请正确输入纳税人识别号\":\"Vui lòng nhập mã số thuế chính xác\",\"请输入您的开户银行\":\"Vui lòng nhập ngân hàng gửi tiền của bạn\",\"请输入您的银行账号\":\"Vui lòng nhập số tài khoản ngân hàng của bạn\",\"请正确输入您的银行账号\":\"Vui lòng nhập chính xác số tài khoản ngân hàng của bạn\",\"请输入您所在的企业地址\":\"Vui lòng nhập địa chỉ doanh nghiệp của bạn\",\"请输入您的企业电话\":\"Vui lòng nhập số điện thoại doanh nghiệp của bạn\",\"发票记录\":\"Bản ghi hóa đơn\",\"抬头管理\":\"Quản lý tiêu đề\",\"申请时间\":\"Appli time\",\"没有发票信息哟~\":\"Không có thông tin hóa đơn ~\",\"个人普通发票\":\"Hóa đơn thông thường cá nhân\",\"企业普通发票\":\"Hóa đơn thông thường của doanh nghiệp\",\"企业专用发票\":\"Hóa đơn đặc biệt của doanh nghiệp\",\"添加新发票\":\"Thêm hóa đơn mới\",\"删除该发票?\":\"Xóa hóa đơn này?\",\"发票编号\":\"Số hóa đơn\",\"发票备注\":\"Nhận xét hóa đơn\",\"快递号\":\"Số nhanh\",\"总资产(元)\":\"Tổng tài sản (₫)\",\"累计充值(元)\":\"Co nạp tiền (₫)\",\"累计消费(元)\":\"Co hoa (₫)\",\"账单记录\":\"Hồ sơ hóa đơn\",\"消费记录\":\"Ghi lại\",\"充值记录\":\"Nạp tiền\",\"积分中心\":\"Tích phân\",\"签到领积分\":\"Đăng nhập\",\"赚积分抵现金\":\"Kiếm điểm\",\"领取优惠券\":\"Phiếu giảm giá\",\"满减享优惠\":\"Giảm giá toàn bộ\",\"最新拼团活动\":\"Hoạt động nhóm mới nhất\",\"最新的优惠商品上架拼团\":\"Hàng ưu đãi mới nhất lên kệ\",\"立即参与\":\"Tham gia\",\"当前限时秒杀\":\"Giết thứ hai trong giới hạn thời gian hiện tại\",\"最新商品秒杀进行中\":\"Hàng hóa mới nhất đang tăng đột biến\",\"我的余额\":\"Số dư\",\"赠送\":\"Quà tặng\",\"其他\":\"Khác\",\"注意事项\":\"Biện pháp phòng ngừa\",\"冻结佣金为\":\"Hoa hồng đông lạnh là\",\"立即转入\":\"Chuyển khoản ngay lập tức\",\"立即充值\":\"Nạp tiền ngay lập tức\",\"请输入金额\":\"Vui lòng nhập số tiền\",\"转入余额\":\"Chuyển khoản trong số dư\",\"转入余额后无法再次转出,确认是否转入余额\":\"Không thể chuyển ra ngoài sau khi chuyển số dư, xác nhận xem có chuyển số dư hay không\",\"转入成功\":\"Đã chuyển thành công\",\"正在支付\":\"Thanh toán\",\"充值金额必须为数字\":\"Số tiền nạp phải là số\",\"充值金额不能为0\":\"Số tiền nạp không được bằng 0\",\"填写手机号码\":\"Điền số điện thoại di động\",\"是否绑定账号\":\"Tài khoản ràng buộc\",\"绑定\":\"Ràng buộc\",\"您已取消绑定!\":\"Bạn chưa bị ràng buộc!\",\"当前手机号\":\"Số điện thoại di động hiện tại\",\"设置新密码\":\"Đặt mật khẩu mới\",\"确认新密码\":\"Xác nhận mật khẩu mới\",\"手机号码不存在,无法发送验证码!\":\"Số điện thoại di động không tồn tại, không thể gửi mã xác minh!\",\"请输入新密码\":\"Vui lòng nhập mật khẩu mới\",\"两次输入的密码不一致!\":\"Hai mật khẩu bạn đã nhập không nhất quán!\",\"请输入验证码\":\"Vui lòng nhập mã xác minh\",\"暂无退款订单~\":\"Không có đơn hàng hoàn lại ~\",\"缺少订单号无法查看订单详情\":\"Số đơn hàng bị thiếu, không xem được chi tiết đơn hàng\",\"明细\":\"Detas\",\"第七天\":\"Ngày 7\",\"第7天\":\"Ngày 7\",\"奖励\":\"Phần thưởng\",\"已签到\":\"Đã đăng ký\",\"立即签到\":\"Đăng nhập ngay bây giờ\",\"已累计签到\":\"Đăng ký tích lũy\",\"据说连续签到第\":\"Lần đăng nhập thứ hai liên tiếp\",\"天可获得超额积分,一定要坚持签到哦~~~\":\"Nếu bạn có thể nhận được điểm vượt quá mỗi ngày, bạn nhất định phải đăng nhập ~~~\",\"签到成功\":\"Đăng ký thành công\",\"好的\":\"Được\",\"您今日已签到!\":\"Bạn đã đăng nhập hôm nay!\",\"暂无签到记录~\":\"Hồ sơ không đăng nhập ~\",\"保存海报\":\"Lưu POSTER\",\"长按保存图片\":\"Nhấn và giữ để lưu ảnh\",\"分销海报\":\"ĐĂNG KÝ phân phối\",\"小程序二维码需要发布正式版后才能获取到\":\"Chỉ có thể lấy mã QR Applet sau khi xuất bản phiên bản chính thức\",\"获取中\":\"Bắt\",\"暂无数据~\":\"Tạm thời không có dữ liệu ~\",\"提现记录\":\"Rút tiền\",\"提现总额\":\"Tổng số tiền rút\",\"佣金记录\":\"Hồ sơ hoa hồng\",\"佣金明细\":\"Chi tiết hoa hồng\",\"分销等级\":\"Mức độ phân phối\",\"昨日收益\":\"Thu nhập của ngày hôm qua\",\"累积已提\":\"Rút tiền tích lũy\",\"代理商申请\":\"Ứng dụng đại lý\",\"立即提现\":\"Rút tiền\",\"推广名片\":\"Danh thiếp\",\"推广人统计\":\"Thống kê nhà quảng cáo\",\"推广人订单\":\"đơn đặt hàng của người quảng cáo\",\"推广订单\":\"Đơn hàng khuyến mãi\",\"事业部\":\"Bộ phận kinh doanh\",\"代理商\":\"Đặc vụ\",\"推广人排行\":\"Xếp hạng nhà quảng cáo\",\"佣金排行\":\"Xếp hạng hoa hồng\",\"员工列表\":\"Danh sách nhân viên\",\"您目前暂无推广权限\":\"Bạn hiện không có quyền quảng cáo\",\"商城购物可享\":\"Mua sắm trong trung tâm thương mại\",\"折\":\"Giảm giá\",\"当前等级\":\"Cấp độ hiện tại\",\"未达成\":\"Không đạt\",\"今日成长值\":\"Giá trị tăng trưởng của ngày hôm nay\",\"点\":\"Điểm\",\"我的成长值记录\":\"Kỷ lục giá trị tăng trưởng của tôi\",\"暂未解锁该等级\":\"Cấp độ này vẫn chưa được mở khóa\",\"点,需达到\":\"Điểm, cần đạt\",\"已解锁更高等级\":\"Đã mở khóa cấp cao hơn\",\"我的成长特权\":\"Đặc quyền phát triển của tôi\",\"购物折扣\":\"Giảm giá\",\"专属徽章\":\"Huy hiệu độc quyền\",\"经验累积\":\"Tích lũy kinh nghiệm\",\"尊享客服\":\"Dịch vụ độc quyền\",\"签到\":\"Đăng ký\",\"可获得\":\"Có sẵn\",\"点经验\":\"Điểm kinh nghiệm\",\"每日签到可获得经验值,已签到\":\"Đăng nhập hàng ngày có thể nhận được giá trị kinh nghiệm, đăng nhập\",\"去签到\":\"Đăng ký\",\"点经验/元\":\"Điểm kinh nghiệm / ₫\",\"购买商品可获得对应的经验值\":\"Giá trị kinh nghiệm tương ứng có thể nhận được khi mua hàng\",\"去购买\":\"Đi mua\",\"点经验/人\":\"Điểm kinh nghiệm / người\",\"邀请好友注册商城可获得经验值\":\"Mời bạn bè đăng ký trong trung tâm mua sắm để nhận giá trị trải nghiệm\",\"去邀请\":\"Mời\",\"积分数\":\"Phân số sản phẩm\",\"消费金额\":\"Lượng tiêu thụ\",\"暂无经验记录\":\"Không có hồ sơ kinh nghiệm\",\"账户登录\":\"Đăng nhập tài khoản\",\"微信登录\":\"Đăng nhập Wechat\",\"手机号登录\":\"Đăng nhập trên điện thoại di động\",\"账户充值\":\"Nạp tiền\",\"佣金转入\":\"Hoa hồng\",\"周榜\":\"Danh sách hàng tuần\",\"月榜\":\"Danh sách hàng tháng\",\"周排行\":\"Xếp hạng hàng tuần\",\"月排行\":\"Xếp hạng hàng tháng\",\"语言切换\":\"Ngôn ngữ\",\"点击前往\":\"Nhấp để truy cập\",\"查看全部\":\"Xem tất cả\",\"查看订单\":\"Xem đơn hàng\",\"无法获取图片信息\":\"Không thể lấy thông tin hình ảnh\",\"长按或扫描查看\":\"Nhấn và giữ chế độ xem quét\",\"点解锁\":\"Mở khóa bằng điểm\",\"确认修改\":\"Xác nhận\",\"保存修改\":\"Lưu\",\"退出登录\":\"Đăng xuất\",\"付费会员\":\"SVIP\",\"地址信息\":\"Địa chỉ\",\"我的推广\":\"Phần mở rộng\",\"砍价记录\":\"Mặc cả\",\"我的等级\":\"Cấp độ của tôi\",\"兑换\":\"ĐI\",\"申请中\":\"Ứng dụng\",\"统计管理\":\"Thống kê\",\"退款\":\"Hoàn lại tiền\",\"未发货\":\"Không được cấp\",\"当前为最新版本\":\"Hiện tại là phiên bản mới nhất\",\"清除缓存\":\"Xóa bộ nhớ cache\",\"确定清楚本地缓存数据吗\":\"Bạn có chắc chắn rằng bạn đã rõ về dữ liệu bộ nhớ cache cục bộ\",\"缓存清理完成\":\"Đã hoàn thành dọn dẹp bộ nhớ cache\",\"切换的账号不存在\":\"Tài khoản đã chuyển đổi không tồn tại\",\"正在切换中\":\"Đang chuyển mạch\",\"确认退出登录\":\"Xác nhận đăng xuất\",\"我知道了\":\"Tôi hiểu rồi\",\"系统错误\":\"Lỗi hệ thống\",\"请求失败\":\"Yêu cầu không thành công\",\"邀请您加入\":\"Mời bạn tham gia\",\"图片上传中\":\"Đang tải lên\",\"上传图片失败\":\"Không tải lên được hình ảnh\",\"访问位置被拒绝\":\"Vị trí truy cập bị từ chối\",\"系统定位已关闭\":\"Định vị hệ thống bị tắt\",\"需要定位权限\":\"Yêu cầu quyền vị trí\",\"订单核销\":\"viết tắt\",\"当前可转入佣金为\":\"Hoa hồng có thể chuyển nhượng hiện tại là\",\"浏览记录\":\"Lịch sử duyệt web\",\"签到奖励\":\"Phần thưởng đăng ký\",\"请输入内容\":\"Hãy nhập nội dung\",\"单次限购\":\"Giảm hạn mua đơn\",\"永久限购\":\"Giảm hạn mua sắm\",\"《用户协议》\":\"《Thỏa thuận người dùng》\",\"《隐私协议》\":\"《Thỏa thuận cá nhân》\",\"与\":\"Và\",\"请先阅读并同意协议\":\"Hãy đọc và đồng ý thỏa thuận trước đã\",\"绑定下级通知\":\"Liên kết thông báo phụ\",\"购买成功通知\":\"Thông báo thành công mua\",\"确认收货通知\":\"Xác nhận hóa đơn\",\"改价通知\":\"Thông báo Thay giá\",\"退款成功通知\":\"Thông báo bồi thường\",\"充值成功通知\":\"Duyệt lại thông báo thành công\",\"积分到账通知\":\"Thông báo các điểm đến\",\"佣金到账通知\":\"Thông báo Ủy ban\",\"砍价成功通知\":\"Thông báo giá cả thành công\",\"拼团成功通知\":\"Thông báo thành công của nhóm\",\"拼团失败通知\":\"Thông báo về việc không tham gia nhóm\",\"开团成功通知\":\"Thông báo mở khóa thành công\",\"提现成功通知\":\"Thông báo về việc rút lui\",\"提现失败通知\":\"Thông báo dừng thai\",\"充值退款通知\":\"Thông báo trả lại tiền\",\"退款申请拒绝通知\":\"Thông báo từ chối bồi thường\",\"您有新的退款待处理\":\"Bạn đang đợi hoàn tiền mới\",\"您有新的订单待处理\":\"Bạn có một trật tự mới cần xử lý\",\"发货通知\":\"Thông báo giao hàng\",\"取消拼团通知\":\"Thông báo hủy bỏ\",\"参团成功通知\":\"Thông báo về sự tham gia\",\"你有个新的提现申请待处理\":\"Bạn có một đơn xin rút tiền mới cần xử lý\",\"你有个新的用户收货待处理\":\"Bạn có người dùng mới nhận hàng hóa cần xử lý\",\"提醒付款通知\":\"Ghi nhớ thông báo thanh toán\",\"短信验证码\":\"Mã kiểm tra SMS\",\"到店自提\":\"Tự rút lui\",\"快递配送\":\"Name\"}");
  8862. /***/ }),
  8863. /***/ 293:
  8864. /*!*****************************************************!*\
  8865. !*** D:/data/zhonghong/saber-weixin/api/lottery.js ***!
  8866. \*****************************************************/
  8867. /*! no static exports found */
  8868. /***/ (function(module, exports, __webpack_require__) {
  8869. "use strict";
  8870. Object.defineProperty(exports, "__esModule", { value: true });exports.getLotteryData = getLotteryData;exports.startLottery = startLottery;exports.receiveLottery = receiveLottery;exports.getLotteryList = getLotteryList;
  8871. var _request = _interopRequireDefault(__webpack_require__(/*! @/utils/request.js */ 18));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} // +----------------------------------------------------------------------
  8872. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  8873. // +----------------------------------------------------------------------
  8874. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  8875. // +----------------------------------------------------------------------
  8876. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8877. // +----------------------------------------------------------------------
  8878. // | Author: CRMEB Team <admin@crmeb.com>
  8879. // +----------------------------------------------------------------------
  8880. /**
  8881. * 获取抽奖详情信息
  8882. *
  8883. */function getLotteryData(type) {return _request.default.get("v2/lottery/info/".concat(type));} /**
  8884. * 参与抽奖
  8885. *
  8886. */function startLottery(data) {return _request.default.post("v2/lottery", data);
  8887. }
  8888. /**
  8889. * 领奖
  8890. *
  8891. */
  8892. function receiveLottery(data) {
  8893. return _request.default.post("v2/lottery/receive", data);
  8894. }
  8895. /**
  8896. * 获取中奖记录
  8897. *
  8898. */
  8899. function getLotteryList(data) {
  8900. return _request.default.get("v2/lottery/record", data);
  8901. }
  8902. /***/ }),
  8903. /***/ 3:
  8904. /*!*************************************************************!*\
  8905. !*** ./node_modules/@dcloudio/uni-i18n/dist/uni-i18n.es.js ***!
  8906. \*************************************************************/
  8907. /*! no static exports found */
  8908. /***/ (function(module, exports, __webpack_require__) {
  8909. "use strict";
  8910. /* WEBPACK VAR INJECTION */(function(uni, global) {Object.defineProperty(exports, "__esModule", { value: true });exports.compileI18nJsonStr = compileI18nJsonStr;exports.hasI18nJson = hasI18nJson;exports.initVueI18n = initVueI18n;exports.isI18nStr = isI18nStr;exports.normalizeLocale = normalizeLocale;exports.parseI18nJson = parseI18nJson;exports.resolveLocale = resolveLocale;exports.isString = exports.LOCALE_ZH_HANT = exports.LOCALE_ZH_HANS = exports.LOCALE_FR = exports.LOCALE_ES = exports.LOCALE_EN = exports.I18n = exports.Formatter = void 0;function _slicedToArray(arr, i) {return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();}function _nonIterableRest() {throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _unsupportedIterableToArray(o, minLen) {if (!o) return;if (typeof o === "string") return _arrayLikeToArray(o, minLen);var n = Object.prototype.toString.call(o).slice(8, -1);if (n === "Object" && o.constructor) n = o.constructor.name;if (n === "Map" || n === "Set") return Array.from(o);if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);}function _arrayLikeToArray(arr, len) {if (len == null || len > arr.length) len = arr.length;for (var i = 0, arr2 = new Array(len); i < len; i++) {arr2[i] = arr[i];}return arr2;}function _iterableToArrayLimit(arr, i) {if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;var _arr = [];var _n = true;var _d = false;var _e = undefined;try {for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {_arr.push(_s.value);if (i && _arr.length === i) break;}} catch (err) {_d = true;_e = err;} finally {try {if (!_n && _i["return"] != null) _i["return"]();} finally {if (_d) throw _e;}}return _arr;}function _arrayWithHoles(arr) {if (Array.isArray(arr)) return arr;}function _classCallCheck(instance, Constructor) {if (!(instance instanceof Constructor)) {throw new TypeError("Cannot call a class as a function");}}function _defineProperties(target, props) {for (var i = 0; i < props.length; i++) {var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ("value" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);}}function _createClass(Constructor, protoProps, staticProps) {if (protoProps) _defineProperties(Constructor.prototype, protoProps);if (staticProps) _defineProperties(Constructor, staticProps);return Constructor;}var isArray = Array.isArray;
  8911. var isObject = function isObject(val) {return val !== null && typeof val === 'object';};
  8912. var defaultDelimiters = ['{', '}'];var
  8913. BaseFormatter = /*#__PURE__*/function () {
  8914. function BaseFormatter() {_classCallCheck(this, BaseFormatter);
  8915. this._caches = Object.create(null);
  8916. }_createClass(BaseFormatter, [{ key: "interpolate", value: function interpolate(
  8917. message, values) {var delimiters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultDelimiters;
  8918. if (!values) {
  8919. return [message];
  8920. }
  8921. var tokens = this._caches[message];
  8922. if (!tokens) {
  8923. tokens = parse(message, delimiters);
  8924. this._caches[message] = tokens;
  8925. }
  8926. return compile(tokens, values);
  8927. } }]);return BaseFormatter;}();exports.Formatter = BaseFormatter;
  8928. var RE_TOKEN_LIST_VALUE = /^(?:\d)+/;
  8929. var RE_TOKEN_NAMED_VALUE = /^(?:\w)+/;
  8930. function parse(format, _ref) {var _ref2 = _slicedToArray(_ref, 2),startDelimiter = _ref2[0],endDelimiter = _ref2[1];
  8931. var tokens = [];
  8932. var position = 0;
  8933. var text = '';
  8934. while (position < format.length) {
  8935. var char = format[position++];
  8936. if (char === startDelimiter) {
  8937. if (text) {
  8938. tokens.push({ type: 'text', value: text });
  8939. }
  8940. text = '';
  8941. var sub = '';
  8942. char = format[position++];
  8943. while (char !== undefined && char !== endDelimiter) {
  8944. sub += char;
  8945. char = format[position++];
  8946. }
  8947. var isClosed = char === endDelimiter;
  8948. var type = RE_TOKEN_LIST_VALUE.test(sub) ?
  8949. 'list' :
  8950. isClosed && RE_TOKEN_NAMED_VALUE.test(sub) ?
  8951. 'named' :
  8952. 'unknown';
  8953. tokens.push({ value: sub, type: type });
  8954. }
  8955. // else if (char === '%') {
  8956. // // when found rails i18n syntax, skip text capture
  8957. // if (format[position] !== '{') {
  8958. // text += char
  8959. // }
  8960. // }
  8961. else {
  8962. text += char;
  8963. }
  8964. }
  8965. text && tokens.push({ type: 'text', value: text });
  8966. return tokens;
  8967. }
  8968. function compile(tokens, values) {
  8969. var compiled = [];
  8970. var index = 0;
  8971. var mode = isArray(values) ?
  8972. 'list' :
  8973. isObject(values) ?
  8974. 'named' :
  8975. 'unknown';
  8976. if (mode === 'unknown') {
  8977. return compiled;
  8978. }
  8979. while (index < tokens.length) {
  8980. var token = tokens[index];
  8981. switch (token.type) {
  8982. case 'text':
  8983. compiled.push(token.value);
  8984. break;
  8985. case 'list':
  8986. compiled.push(values[parseInt(token.value, 10)]);
  8987. break;
  8988. case 'named':
  8989. if (mode === 'named') {
  8990. compiled.push(values[token.value]);
  8991. } else
  8992. {
  8993. if (true) {
  8994. console.warn("Type of token '".concat(token.type, "' and format of value '").concat(mode, "' don't match!"));
  8995. }
  8996. }
  8997. break;
  8998. case 'unknown':
  8999. if (true) {
  9000. console.warn("Detect 'unknown' type of token!");
  9001. }
  9002. break;}
  9003. index++;
  9004. }
  9005. return compiled;
  9006. }
  9007. var LOCALE_ZH_HANS = 'zh-Hans';exports.LOCALE_ZH_HANS = LOCALE_ZH_HANS;
  9008. var LOCALE_ZH_HANT = 'zh-Hant';exports.LOCALE_ZH_HANT = LOCALE_ZH_HANT;
  9009. var LOCALE_EN = 'en';exports.LOCALE_EN = LOCALE_EN;
  9010. var LOCALE_FR = 'fr';exports.LOCALE_FR = LOCALE_FR;
  9011. var LOCALE_ES = 'es';exports.LOCALE_ES = LOCALE_ES;
  9012. var hasOwnProperty = Object.prototype.hasOwnProperty;
  9013. var hasOwn = function hasOwn(val, key) {return hasOwnProperty.call(val, key);};
  9014. var defaultFormatter = new BaseFormatter();
  9015. function include(str, parts) {
  9016. return !!parts.find(function (part) {return str.indexOf(part) !== -1;});
  9017. }
  9018. function startsWith(str, parts) {
  9019. return parts.find(function (part) {return str.indexOf(part) === 0;});
  9020. }
  9021. function normalizeLocale(locale, messages) {
  9022. if (!locale) {
  9023. return;
  9024. }
  9025. locale = locale.trim().replace(/_/g, '-');
  9026. if (messages && messages[locale]) {
  9027. return locale;
  9028. }
  9029. locale = locale.toLowerCase();
  9030. if (locale.indexOf('zh') === 0) {
  9031. if (locale.indexOf('-hans') > -1) {
  9032. return LOCALE_ZH_HANS;
  9033. }
  9034. if (locale.indexOf('-hant') > -1) {
  9035. return LOCALE_ZH_HANT;
  9036. }
  9037. if (include(locale, ['-tw', '-hk', '-mo', '-cht'])) {
  9038. return LOCALE_ZH_HANT;
  9039. }
  9040. return LOCALE_ZH_HANS;
  9041. }
  9042. var lang = startsWith(locale, [LOCALE_EN, LOCALE_FR, LOCALE_ES]);
  9043. if (lang) {
  9044. return lang;
  9045. }
  9046. }var
  9047. I18n = /*#__PURE__*/function () {
  9048. function I18n(_ref3) {var locale = _ref3.locale,fallbackLocale = _ref3.fallbackLocale,messages = _ref3.messages,watcher = _ref3.watcher,formater = _ref3.formater;_classCallCheck(this, I18n);
  9049. this.locale = LOCALE_EN;
  9050. this.fallbackLocale = LOCALE_EN;
  9051. this.message = {};
  9052. this.messages = {};
  9053. this.watchers = [];
  9054. if (fallbackLocale) {
  9055. this.fallbackLocale = fallbackLocale;
  9056. }
  9057. this.formater = formater || defaultFormatter;
  9058. this.messages = messages || {};
  9059. this.setLocale(locale || LOCALE_EN);
  9060. if (watcher) {
  9061. this.watchLocale(watcher);
  9062. }
  9063. }_createClass(I18n, [{ key: "setLocale", value: function setLocale(
  9064. locale) {var _this = this;
  9065. var oldLocale = this.locale;
  9066. this.locale = normalizeLocale(locale, this.messages) || this.fallbackLocale;
  9067. if (!this.messages[this.locale]) {
  9068. // 可能初始化时不存在
  9069. this.messages[this.locale] = {};
  9070. }
  9071. this.message = this.messages[this.locale];
  9072. // 仅发生变化时,通知
  9073. if (oldLocale !== this.locale) {
  9074. this.watchers.forEach(function (watcher) {
  9075. watcher(_this.locale, oldLocale);
  9076. });
  9077. }
  9078. } }, { key: "getLocale", value: function getLocale()
  9079. {
  9080. return this.locale;
  9081. } }, { key: "watchLocale", value: function watchLocale(
  9082. fn) {var _this2 = this;
  9083. var index = this.watchers.push(fn) - 1;
  9084. return function () {
  9085. _this2.watchers.splice(index, 1);
  9086. };
  9087. } }, { key: "add", value: function add(
  9088. locale, message) {var override = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
  9089. var curMessages = this.messages[locale];
  9090. if (curMessages) {
  9091. if (override) {
  9092. Object.assign(curMessages, message);
  9093. } else
  9094. {
  9095. Object.keys(message).forEach(function (key) {
  9096. if (!hasOwn(curMessages, key)) {
  9097. curMessages[key] = message[key];
  9098. }
  9099. });
  9100. }
  9101. } else
  9102. {
  9103. this.messages[locale] = message;
  9104. }
  9105. } }, { key: "f", value: function f(
  9106. message, values, delimiters) {
  9107. return this.formater.interpolate(message, values, delimiters).join('');
  9108. } }, { key: "t", value: function t(
  9109. key, locale, values) {
  9110. var message = this.message;
  9111. if (typeof locale === 'string') {
  9112. locale = normalizeLocale(locale, this.messages);
  9113. locale && (message = this.messages[locale]);
  9114. } else
  9115. {
  9116. values = locale;
  9117. }
  9118. if (!hasOwn(message, key)) {
  9119. console.warn("Cannot translate the value of keypath ".concat(key, ". Use the value of keypath as default."));
  9120. return key;
  9121. }
  9122. return this.formater.interpolate(message[key], values).join('');
  9123. } }]);return I18n;}();exports.I18n = I18n;
  9124. function watchAppLocale(appVm, i18n) {
  9125. // 需要保证 watch 的触发在组件渲染之前
  9126. if (appVm.$watchLocale) {
  9127. // vue2
  9128. appVm.$watchLocale(function (newLocale) {
  9129. i18n.setLocale(newLocale);
  9130. });
  9131. } else
  9132. {
  9133. appVm.$watch(function () {return appVm.$locale;}, function (newLocale) {
  9134. i18n.setLocale(newLocale);
  9135. });
  9136. }
  9137. }
  9138. function getDefaultLocale() {
  9139. if (typeof uni !== 'undefined' && uni.getLocale) {
  9140. return uni.getLocale();
  9141. }
  9142. // 小程序平台,uni 和 uni-i18n 互相引用,导致访问不到 uni,故在 global 上挂了 getLocale
  9143. if (typeof global !== 'undefined' && global.getLocale) {
  9144. return global.getLocale();
  9145. }
  9146. return LOCALE_EN;
  9147. }
  9148. function initVueI18n(locale) {var messages = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};var fallbackLocale = arguments.length > 2 ? arguments[2] : undefined;var watcher = arguments.length > 3 ? arguments[3] : undefined;
  9149. // 兼容旧版本入参
  9150. if (typeof locale !== 'string') {var _ref4 =
  9151. [
  9152. messages,
  9153. locale];locale = _ref4[0];messages = _ref4[1];
  9154. }
  9155. if (typeof locale !== 'string') {
  9156. // 因为小程序平台,uni-i18n 和 uni 互相引用,导致此时访问 uni 时,为 undefined
  9157. locale = getDefaultLocale();
  9158. }
  9159. if (typeof fallbackLocale !== 'string') {
  9160. fallbackLocale =
  9161. typeof __uniConfig !== 'undefined' && __uniConfig.fallbackLocale ||
  9162. LOCALE_EN;
  9163. }
  9164. var i18n = new I18n({
  9165. locale: locale,
  9166. fallbackLocale: fallbackLocale,
  9167. messages: messages,
  9168. watcher: watcher });
  9169. var _t = function t(key, values) {
  9170. if (typeof getApp !== 'function') {
  9171. // app view
  9172. /* eslint-disable no-func-assign */
  9173. _t = function t(key, values) {
  9174. return i18n.t(key, values);
  9175. };
  9176. } else
  9177. {
  9178. var isWatchedAppLocale = false;
  9179. _t = function t(key, values) {
  9180. var appVm = getApp().$vm;
  9181. // 可能$vm还不存在,比如在支付宝小程序中,组件定义较早,在props的default里使用了t()函数(如uni-goods-nav),此时app还未初始化
  9182. // options: {
  9183. // type: Array,
  9184. // default () {
  9185. // return [{
  9186. // icon: 'shop',
  9187. // text: t("uni-goods-nav.options.shop"),
  9188. // }, {
  9189. // icon: 'cart',
  9190. // text: t("uni-goods-nav.options.cart")
  9191. // }]
  9192. // }
  9193. // },
  9194. if (appVm) {
  9195. // 触发响应式
  9196. appVm.$locale;
  9197. if (!isWatchedAppLocale) {
  9198. isWatchedAppLocale = true;
  9199. watchAppLocale(appVm, i18n);
  9200. }
  9201. }
  9202. return i18n.t(key, values);
  9203. };
  9204. }
  9205. return _t(key, values);
  9206. };
  9207. return {
  9208. i18n: i18n,
  9209. f: function f(message, values, delimiters) {
  9210. return i18n.f(message, values, delimiters);
  9211. },
  9212. t: function t(key, values) {
  9213. return _t(key, values);
  9214. },
  9215. add: function add(locale, message) {var override = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
  9216. return i18n.add(locale, message, override);
  9217. },
  9218. watch: function watch(fn) {
  9219. return i18n.watchLocale(fn);
  9220. },
  9221. getLocale: function getLocale() {
  9222. return i18n.getLocale();
  9223. },
  9224. setLocale: function setLocale(newLocale) {
  9225. return i18n.setLocale(newLocale);
  9226. } };
  9227. }
  9228. var isString = function isString(val) {return typeof val === 'string';};exports.isString = isString;
  9229. var formater;
  9230. function hasI18nJson(jsonObj, delimiters) {
  9231. if (!formater) {
  9232. formater = new BaseFormatter();
  9233. }
  9234. return walkJsonObj(jsonObj, function (jsonObj, key) {
  9235. var value = jsonObj[key];
  9236. if (isString(value)) {
  9237. if (isI18nStr(value, delimiters)) {
  9238. return true;
  9239. }
  9240. } else
  9241. {
  9242. return hasI18nJson(value, delimiters);
  9243. }
  9244. });
  9245. }
  9246. function parseI18nJson(jsonObj, values, delimiters) {
  9247. if (!formater) {
  9248. formater = new BaseFormatter();
  9249. }
  9250. walkJsonObj(jsonObj, function (jsonObj, key) {
  9251. var value = jsonObj[key];
  9252. if (isString(value)) {
  9253. if (isI18nStr(value, delimiters)) {
  9254. jsonObj[key] = compileStr(value, values, delimiters);
  9255. }
  9256. } else
  9257. {
  9258. parseI18nJson(value, values, delimiters);
  9259. }
  9260. });
  9261. return jsonObj;
  9262. }
  9263. function compileI18nJsonStr(jsonStr, _ref5) {var locale = _ref5.locale,locales = _ref5.locales,delimiters = _ref5.delimiters;
  9264. if (!isI18nStr(jsonStr, delimiters)) {
  9265. return jsonStr;
  9266. }
  9267. if (!formater) {
  9268. formater = new BaseFormatter();
  9269. }
  9270. var localeValues = [];
  9271. Object.keys(locales).forEach(function (name) {
  9272. if (name !== locale) {
  9273. localeValues.push({
  9274. locale: name,
  9275. values: locales[name] });
  9276. }
  9277. });
  9278. localeValues.unshift({ locale: locale, values: locales[locale] });
  9279. try {
  9280. return JSON.stringify(compileJsonObj(JSON.parse(jsonStr), localeValues, delimiters), null, 2);
  9281. }
  9282. catch (e) {}
  9283. return jsonStr;
  9284. }
  9285. function isI18nStr(value, delimiters) {
  9286. return value.indexOf(delimiters[0]) > -1;
  9287. }
  9288. function compileStr(value, values, delimiters) {
  9289. return formater.interpolate(value, values, delimiters).join('');
  9290. }
  9291. function compileValue(jsonObj, key, localeValues, delimiters) {
  9292. var value = jsonObj[key];
  9293. if (isString(value)) {
  9294. // 存在国际化
  9295. if (isI18nStr(value, delimiters)) {
  9296. jsonObj[key] = compileStr(value, localeValues[0].values, delimiters);
  9297. if (localeValues.length > 1) {
  9298. // 格式化国际化语言
  9299. var valueLocales = jsonObj[key + 'Locales'] = {};
  9300. localeValues.forEach(function (localValue) {
  9301. valueLocales[localValue.locale] = compileStr(value, localValue.values, delimiters);
  9302. });
  9303. }
  9304. }
  9305. } else
  9306. {
  9307. compileJsonObj(value, localeValues, delimiters);
  9308. }
  9309. }
  9310. function compileJsonObj(jsonObj, localeValues, delimiters) {
  9311. walkJsonObj(jsonObj, function (jsonObj, key) {
  9312. compileValue(jsonObj, key, localeValues, delimiters);
  9313. });
  9314. return jsonObj;
  9315. }
  9316. function walkJsonObj(jsonObj, walk) {
  9317. if (isArray(jsonObj)) {
  9318. for (var i = 0; i < jsonObj.length; i++) {
  9319. if (walk(jsonObj, i)) {
  9320. return true;
  9321. }
  9322. }
  9323. } else
  9324. if (isObject(jsonObj)) {
  9325. for (var key in jsonObj) {
  9326. if (walk(jsonObj, key)) {
  9327. return true;
  9328. }
  9329. }
  9330. }
  9331. return false;
  9332. }
  9333. function resolveLocale(locales) {
  9334. return function (locale) {
  9335. if (!locale) {
  9336. return locale;
  9337. }
  9338. locale = normalizeLocale(locale) || locale;
  9339. return resolveLocaleChain(locale).find(function (locale) {return locales.indexOf(locale) > -1;});
  9340. };
  9341. }
  9342. function resolveLocaleChain(locale) {
  9343. var chain = [];
  9344. var tokens = locale.split('-');
  9345. while (tokens.length) {
  9346. chain.push(tokens.join('-'));
  9347. tokens.pop();
  9348. }
  9349. return chain;
  9350. }
  9351. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["default"], __webpack_require__(/*! ./../../../webpack/buildin/global.js */ 2)))
  9352. /***/ }),
  9353. /***/ 30:
  9354. /*!******************************************************!*\
  9355. !*** D:/data/zhonghong/saber-weixin/lang/zh_ft.json ***!
  9356. \******************************************************/
  9357. /*! exports provided: 选择地址, 选择其它地址, 已选商品, 清空, ¥, 已售罄, 已下架, 删除, 商品券, 品类券, 通用券, 优惠券, 满, 元可用, 无门槛券, 领取后, 天内可用, 已领取, 立即领取, 购物满, 减, 不限时, 秒杀, 砍价, 拼团, 已售, 立即购买, 加入购物车, 选规格, 跳过, 立即体验, 首页, 搜索, 购物车, 我的收藏, 个人中心, 券, 正在加载中, 上拉加载更多, 代付金额, 共, 件商品, 订单包裹, 申请退款中, 已退款, 已完成, 件退款中, 不支持配送, 不支持自提, 已评价, 评价, 申请退款, 查看物流, 确认收货, 选择付款方式, 支付, 去付款, 请选择要支付的订单, 余额不足, 支付中, 缺少支付参数, 取消支付, 支付成功, 支付失败, 库存, 限量, 数量, 我要参团, 确定, 热门推荐, 最高返佣, 推广享佣金, 立即分享, 发现新版本, 立即升级, 下载进度, 店小二, 暂无记录, 正在下载海报,请稍后再试, 海报二维码生成失败, 倒计时, 天, 时, 分, 秒, 砍价成功, 活动已结束, 已砍至, 活动进行中, 取消活动, 继续砍价, 暂无砍价记录, 人正在参与, 最低, 参与砍价, 砍价列表, 人查看, 人分享, 人参与, 邀请您帮忙砍价, 查看商品, 当前, 已砍, 还剩, 立即参与砍价, 商品暂无库存, 邀请好友帮砍价, 已有, 位好友成功砍价, 帮好友砍一刀, 好友已砍价成功, 我也要参与, 已成功帮助好友砍价, 恭喜您砍价成功,快去支付, 立即支付, 抢更多商品, 砍价帮, 砍掉, 更多, 关闭, 点击加载更多, 商品详情, 砍价规则, 您已砍掉, 元,听说分享次数越多砍价成功的机会越大哦, 成功帮砍, 您也可以砍价低价拿哦,快去挑选心仪的商品吧, 发送给朋友, 微信好友, 微信朋友圈, 生成海报, 砍价详情, 分享成功, 分享失败, 该商品每人限购, 您的好友, 邀请您砍价, 人团, 去拼团, 拼团列表, 类型, 累计销量, 限购, 种规格可选, 已拼, 件, 还差, 人成团, 去拼单, 查看更多, 收起, 拼团玩法, 开团/参团, 邀请好友, 满员发货, 用户评价, 好评率, 产品介绍, 单独购买, 立即开团, 请选择, 商品, 详情, 缺少参数无法查看商品, 参数错误, 已选择, 保存成功, 保存失败, 人拼, 剩余, 结束, 恭喜您拼团成功, 人,拼团失败, 拼团中,还差, 人拼团成功, 邀请好友参团, 再次开团, 取消开团, 查看订单信息, 大家都在拼, 更多拼团, 邀请您参团, 你不是该团的成员, 已抢, 抢购中, 未开始, 已结束, 暂无商品,去看点别的吧, 即将开始, 距秒杀结束仅剩, 累计销售, 收藏, 保存到手机, 长按图片可以保存到手机, 抢购详情页, 二维码获取失败, 请选择属性, 提示:点击图片即可保存至手机相册, 拼团海报, 砍价海报, 海报生成中, 海报图片获取失败, 海报, 已预定, 预售价, 立即预定, 开售时间, 预售活动, 起, 划线价, 开通“超级会员”立省, 元, 立即开通, 预售活动时间, 预售结束后, 天内发货, 活动, 参与秒杀, 参与拼团, 复制口令, 复制成功, 推荐, 缺少经纬度信息无法查看地图, 产品库存不足,请选择其它属性, 立即退款, 一键改价, 订单备注, 商品总价, 原始邮费, 实际支付, 退款金额, 请填写备注信息, 立即修改, 确认退款, 拒绝退款, 取消, 订单号, 发货方式, 发货类型, 快递公司, 快递单号, 顺丰请输入单号 :收件人或寄件人手机号后四位, 例如:SF000000000000:3941, 电子面单, 预览, 寄件人姓名, 填写寄件人姓名, 寄件人电话, 填写寄件人电话, 寄件人地址, 填写寄件人地址, 送货人, 确认提交, 发货, 送货, 无需物流, 手动填写, 电子面单打印, 填写快递单号, 请选择电子面单, 待付款, 待发货, 待收货, 待评价, 售后/退款, 数据统计, 今日成交额, 昨日成交额, 本月成交额, 今日订单数, 昨日订单数, 本月订单数, 详细数据, 日期, 订单数, 成交额, 立即核销, 查看, 确定要核销此订单吗, 确定核销, 请输入核销码, 请输入正确的核销码, 查询中, 订单, 订单未备注,点击添加备注信息, 复制, 件商品,应支付, 邮费, 订单编号, 下单时间, 支付状态, 已支付, 未支付, 支付方式, 买家留言, 支付金额, 优惠券抵扣, 运费, 实付款, 配送方式, 快递, 送货人电话, 确认付款, 去发货, 改价成功, 改价失败, 请输入备注, 退款中, 部分退款中, 件商品,实付款, 同意退货, 待用户发货, 请输入正确的金额, 今天, 昨天, 最近7天, 本月, 自定义, 营业额(元), 订单量(份), 增长率, 增长, 单位, 元., 分., 固定, 指定范围, 提交时间, 原因, 暂无申请记录,快去申请吧!, 没有更多啦, 待审核, 审核通过, 审核未通过, 编辑, 重新提交, 会员优惠价, 余额支付, 可用余额, 微信支付, 确认, 支付提醒, 线下支付已关闭,请点击确认按钮返回主页, 请输入支付金额, 正在确认, 进入商城, 代理商名称, 请输入代理商名称, 用户姓名, 请输入姓名, 联系电话, 请输入手机号, 验证码, 填写验证码, 邀请码, 请输入代理商邀请码, 请上传营业执照及行业相关资质证明图片, 图片最多可上传10张,图片格式支持JPG、PNG、JPEG, 上传图片, 已阅读并同意, 代理商协议, 提交申请, 代理商入驻协议, 恭喜,您的资料提交成功!, 返回首页, 恭喜,您的资料通过审核!, 您的申请未通过!, 重新申请, 获取验证码, 请输入正确的手机号码, 重新获取, 请上传营业执照, 请勾选并同意入驻协议, 专题栏, 暂无数据, 请输入卡号, 请输入卡密, 确认激活, SVIP会员尊享权, 正在激活, 已使用, 永久SVIP会员, SVIP会员, 到期, 您与, 商城的第, 天., 已累积为您节省, 开通即享会员权益, 续费会员, 开通会员, 有效期至, 试用, 购买即视为同意, 会员用户协议, 点击兑换卡密, 会员优惠券, SVIP商品推荐, 商城价, 激活会员卡, 支付宝支付, 成功开启0元试用, 确认绑定, 绑定成功, 商城客服已离线, 我要反馈, 请填写内容, 提交, 精品推荐, 热门榜单, 首发新品, 促销单品, 预告, 回放, 进行中, 发送客服, 客服连接中, 连接失败, 提示, 客服已下线,是否需要反馈?, 和好友一起分享, 积分抵扣, 已开票, 未开票, 发票信息, 发票抬头, 发票抬头类型, 个人, 企业, 发票类型, 电子普通发票, 电子专用发票, 企业税号, 联系信息, 真实姓名, 联系邮箱, 抬头选择, 默认, 普通, 专用, 您还没有添加发票信息哟, 添加新的抬头, 不开发票, 抽奖, 全选, 属性, 请填写具体地址, 省, 市, 区, 添加成功, 您已拒绝导入微信地址权限, 是否进入权限管理,调整授权?, 已取消, 添加失败, 请填写收货人姓名, 请选择所在地区, 请填写详细地址, 星, 商品满足你的期待么?说说你的想法,分享给想买的他们吧, 立即评价, 商品质量, 服务态度, 缺少参数, 请填写你对宝贝的心得, 正在发布评论, 感谢您的评价, 评价完成, 恭喜您, 获得, 机会, 领取成功, 评分, 全部, 好评, 中评, 差评, 加载更多, 千米距离, 搜索商品名称, 价格, 销量, 新品, 已全部加载, 缺少订单号, 退货件数, 退款类型, 退款原因, 备注说明, 填写备注信息,100字以内, 仅退款, 退货并退款, 申请成功, 请先选择退货商品, 搜索历史, 热门搜索, 请输入要搜索的商品, 正在搜索中, 中奖记录, 我的奖品, 活动规则, 昵称, 序号, 奖品名称, 获奖时间, 商家暂未上架活动哦, 获取抽奖信息, 奖品类型, 立即兑换, 兑换时间, 暂无中奖记录, 积分, 余额, 红包, 设置收货地址, 暂无门店信息, 剩余积分, 当前积分, 开具发票, 请填写, 配送运费, 会员商品优惠, 会员运费优惠, 合计, 使用微信快捷支付, 使用支付宝支付, 线下支付, 使用线下付款, 好友代付, 找微信好友支付, 立即使用, 请选择要购买的商品, 发票, 不使用, 订单创建成功, 请选择支付方式, 请选择收货地址, 请填写联系人或联系人电话, 暂无门店,请选择其他方式, 请输入, 请输入正确的, 请上传, 订单支付中, 请按以上退货信息将商品退回, 请联系管理员获取退货地址, 待核销, 核销信息, 营业时间, 每日, 使用说明, 可将二维码出示给店员扫描或提供数字核销码, 可将二维码出示给配送员进行核销, 查看位置, 拒绝原因, 联系客服, 商家备注, 收货人, 收货地址, 配送人姓名, 拨打, 虚拟发货, 已发货,请注意查收, 虚拟备注, 总代付, 申请开票, 查看发票, 取消订单, 立即付款, 批量退款, 查看拼团, 再次购买, 取消申请, 填写退货信息, 查看退货物流, 您确认放弃此次申请吗, 操作成功, 订单信息不存在, 为保障权益,请收到货确认无误后,再确认收货, 删除订单, 确定删除该订单, 删除成功, 确认取消该订单, 订单信息, 消费订单, 总消费, 预售, 线下付款,未支付, 未核销, 件商品,总金额, 查看详情, 暂无订单, 缺少订单号无法取消订单, 订单支付成功, 订单支付失败, 暂未支付, 失败原因, 重新购买, 重新支付, 赠送优惠券, 有效期, 缺少参数无法查看订单支付状态, 最多可上传3张, 请选择产品, 该产品没有更多库存了, 优品推荐, 暂无产品, 重新选择, 请选择数量, 砍价专区·BARGAINING, 立即砍价, 拼团活动, 人拼团成功., 人参团, 拼团价, 已过期, 关注, 推荐好货, 暂无商品, 限时秒杀, 抢, 广告位, 精彩内容, 砍价模块,暂无数据, 砍价活动, 呼朋唤友来砍价, 拼团模块,暂无数据, 享超值开团价, 优惠券,暂无数据, 领取今日好券, 可用, 领取, 客服, 商品列表,暂无数据, 搜索商品, 暂无图片,请上传图片, 首发新品,暂无数据, 多个优质商品最新上架, 暂无新闻,请上传新闻, 热度 TOP, 排行榜、暂无数据, 促销单品,暂无数据, 库存商品优惠促销活动, 精品推荐,暂无数据, 上百种商品分类任您选择, 秒杀模块,暂无数据, 场, 暂无数据,请设置, 暂无数据,请先添加分类, 暂无标题, 诚意推荐品质商品, 点击“立即关注”即可关注公众号, 立即关注, 添加到我的小程序, 微信首页下拉即可访问商城。, 点击, 服务协议与隐私政策, 请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。, 你可以阅读, 《服务协议与隐私政策》, 了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。, 我同意, 残忍拒绝, 下拉加载更多, 网络连接断开, 请检查情况:, 在设置中是否已开启网络权限, 当前是否处于弱网环境, 版本是否过低,升级试试吧, 重新连接, 加载中, 没有更多内容啦~, 100%正品保证, 所有商品精挑细选, 售后无忧, 管理, 购物数量, 请重新选择商品规格, 重选, 失效商品, 失效, 该商品已失效, 立即下单, 产品库存不足,请选择其它, 添加购物车成功, 清除成功, 暂无兑换记录~, 大家都在换, 人兑换, 轻松赚积分, 购买商品, 购买商品可获得积分奖励, 去完成, 每日签到活动, 每日签到可获得积分奖励, 九宫格抽奖活动, 幸运抽奖可获得积分奖励, 我的积分, 每日签到, 积分抽奖, 兑换记录, 已兑换, 无法兑换, [默认], 可用积分, 快递费用, 免运费, 备注信息, 请添加备注(150字以内), 使用线上支付宝支付, 可用余额:, 选择线下付款方式, 正在加载…, 可用积分不足!, 订单状态, 支付积分, 备注, 配送核销码, 当前可用余额:, 正在加载, 缺少经纬度信息无法查看地图!, 商品兑换成功, 兑换方式, 积分兑换, 兑换积分, 取消兑换, 缺少参数无法查看订单兑换状态, 用户离开了, 兑换成功, 物流公司, 复制单号, 设为默认, 添加新地址, 导入微信地址, 取消选择, 您设置的默认地址不存在!, 设置成功, 您删除的地址不存在!, 获取头像, 请点击授权, 绑定手机号, 永久, 会员到期, 未开通会员, 查看会员权益, 立即续费, 立即激活, 会员可享多项权益, 订单中心, 我的服务, 隐私协议, 商家管理, 更新用户信息成功, 客服接待, 点击复制网址去浏览器中打开, 点击复制, 完成支付, 点击右上角, 选择 在浏览器 打开,去支付宝支付, 支付订单不存在,页面将在2秒后自动关闭!, 正在支付中, 支付订单不存在,页面将在2秒后自动关闭, 复制失败, 您目前的排名, 您目前暂无排名, 暂无排名~, 我也是有底线的, 输入手机号, 输入验证码, 立即登录, 请填写手机号码, 请填写验证码, 请输入正确的验证码, 正在登录中, 登录成功, 获取授权, 获取微信的手机号授权, 获取微信手机号, 输入手机号码, 填写登录密码, 登录, 快速登录, 账号登录, 其他方式登录, 登录中, 获取用户信息失败, 请绑定手机号后,继续操作, 错误信息, 用户点击确定, 用户点击取消, 登录失败, 请勿重复点击, 请填写密码, 您输入的密码过于简单, 请填写账号, 请输入正确的账号, [图片], [语音], [商品], [订单], 亲、暂无消息记录哟!, 站内消息, 客服消息, 通知于, 获取详情中, 代付订单创建成功,发给好友帮你付款吧~, 帮我付一下这件商品了,谢谢~, 已经有人替我代付,谢谢啦~, 谢谢你帮我支付,么么哒~, 我已为你代付成功,商家正在努力发货中~, 好友代付成功,商家正在努力发货中~, 发送给微信好友, 查看订单详情, 订单已支付, 如果订单申请退款,已支付金额将原路退还给您, 代付成功, 谢谢你为我付款,还可以再去看看其他商品哟~, 该订单暂未支付, 人, 推广人数, 一级, 二级, 点击搜索会员名称, 团队排序, 金额排序, 订单排序, 单, 加入时间, 累积推广订单, 本月累计推广订单, 返佣, 暂未返佣, 返佣时间, 单号, 暂无推广订单~, 推广订单列表, 找回密码, 填写您的新密码, 加载失败, 点击授权登录您的客服工作台, 授权登录, 没有登录的code,请重新扫码, 员工人数, 邀请, 分佣比例, 修改分佣比例, 请输入百分比, 删除员工, 确定删除该员工?, 请输入比例, 分类, 我的, 姓名, 请输入联系电话, 所在地区, 详细地址, 设置为默认地址, 立即保存, 浙江省, 杭州市, 滨江区, 广东省, 广州市, 番禺区, 修改地址, 添加地址, 已取消!, 请填写联系电话, 保存中, 修改成功, 消费, 充值, 暂无账单的记录哦~, 点击【立即注销】即代表您已经同意《用户注销协议》, 立即注销, 是否确认注销, 注销后无法恢复,请谨慎操作, 注销, 持卡人, 请输入持卡人姓名, 卡号, 请填写卡号, 银行, 提现, 最低提现金额, 当前可提现金额, 冻结佣金, 说明: 每笔佣金的冻结期为, 天,到期后可提现, 账号, 请填写您的微信账号, 收款码, 请填写您的支付宝账号, 请选择银行, 银行卡, 微信, 支付宝, 请填写持卡人姓名, 请填写微信号, 请填写提现金额, 提现金额不能低于, 未使用, 已使用/过期, 通用劵, 一级分佣上浮, 二级分佣上浮, 快速升级技巧, 未完成, 已领完, 当前共, 取关, 请选择商品, 头像, 手机号码, 点击绑定手机号, ID号, 权限设置, 点击管理, 密码, 点击修改密码, 更换手机号码, 点击更换手机号码, 缓存大小, 当前版本, 地址管理, 发票管理, 账号注销, 注销后无法恢复, 累计积分, 累计消费, 冻结积分, 积分规则, 提示:积分数值的高低会直接影响您的会员等级, 提示:你有, 积分在, 过期,请尽快使用, 暂无积分记录哦~, 赚积分, 分值明细, 分值提升, 抬头类型, 增值税电子专用发票, 增值税电子普通发票, 需要开具发票的姓名, 需要开具发票的企业名称, 税号, 纳税人识别号, 手机号, 您的手机号, 邮箱, 您的联系邮箱, 开户银行, 您的开户银行, 银行账号, 您的银行账号, 企业地址, 您所在的企业地址, 企业电话, 您的企业电话, 设置为默认抬头, 保存, 发票类型选择, 纸质发票开出后将以邮寄形式交付, 请输入需要开具发票的姓名, 请输入您的手机号, 请正确输入您的手机号, 请输入您的联系邮箱, 请正确输入您的联系邮箱, 请输入需要开具发票的企业名称, 请输入纳税人识别号, 请正确输入纳税人识别号, 请输入您的开户银行, 请输入您的银行账号, 请正确输入您的银行账号, 请输入您所在的企业地址, 请输入您的企业电话, 发票记录, 抬头管理, 申请时间, 没有发票信息哟~, 个人普通发票, 企业普通发票, 企业专用发票, 添加新发票, 删除该发票?, 发票编号, 发票备注, 快递号, 总资产(元), 累计充值(元), 累计消费(元), 账单记录, 消费记录, 充值记录, 积分中心, 签到领积分, 赚积分抵现金, 领取优惠券, 满减享优惠, 最新拼团活动, 最新的优惠商品上架拼团, 立即参与, 当前限时秒杀, 最新商品秒杀进行中, 我的余额, 赠送, 其他, 注意事项, 冻结佣金为, 立即转入, 立即充值, 请输入金额, 转入余额, 转入余额后无法再次转出,确认是否转入余额, 转入成功, 正在支付, 充值金额必须为数字, 充值金额不能为0, 填写手机号码, 是否绑定账号, 绑定, 您已取消绑定!, 当前手机号, 设置新密码, 确认新密码, 手机号码不存在,无法发送验证码!, 请输入新密码, 两次输入的密码不一致!, 请输入验证码, 暂无退款订单~, 缺少订单号无法查看订单详情, 明细, 第七天, 第7天, 奖励, 已签到, 立即签到, 已累计签到, 据说连续签到第, 天可获得超额积分,一定要坚持签到哦~~~, 签到成功, 好的, 您今日已签到!, 暂无签到记录~, 保存海报, 长按保存图片, 分销海报, 小程序二维码需要发布正式版后才能获取到, 获取中, 暂无数据~, 提现记录, 提现总额, 佣金记录, 佣金明细, 分销等级, 昨日收益, 累积已提, 代理商申请, 立即提现, 推广名片, 推广人统计, 推广人订单, 推广订单, 事业部, 代理商, 推广人排行, 佣金排行, 员工列表, 您目前暂无推广权限, 商城购物可享, 折, 当前等级, 未达成, 今日成长值, 点, 我的成长值记录, 暂未解锁该等级, 点,需达到, 已解锁更高等级, 我的成长特权, 购物折扣, 专属徽章, 经验累积, 尊享客服, 签到, 可获得, 点经验, 每日签到可获得经验值,已签到, 去签到, 点经验/元, 购买商品可获得对应的经验值, 去购买, 点经验/人, 邀请好友注册商城可获得经验值, 去邀请, 积分数, 消费金额, 暂无经验记录, 账户登录, 微信登录, 手机号登录, 账户充值, 佣金转入, 周榜, 月榜, 周排行, 月排行, 语言切换, 点击前往, 查看全部, 查看订单, 无法获取图片信息, 长按或扫描查看, 点解锁, 确认修改, 保存修改, 退出登录, 付费会员, 地址信息, 我的推广, 砍价记录, 我的等级, 兑换, 申请中, 统计管理, 退款, 未发货, 当前为最新版本, 清除缓存, 确定清楚本地缓存数据吗, 缓存清理完成, 切换的账号不存在, 正在切换中, 确认退出登录, 我知道了, 系统错误, 请求失败, 邀请您加入, 图片上传中, 上传图片失败, 访问位置被拒绝, 系统定位已关闭, 需要定位权限, 订单核销, 当前可转入佣金为, 浏览记录, 签到奖励, 请输入内容, 单次限购, 永久限购, 《用户协议》, 《隐私协议》, 与, 请先阅读并同意协议, 绑定下级通知, 购买成功通知, 确认收货通知, 改价通知, 退款成功通知, 充值成功通知, 积分到账通知, 佣金到账通知, 砍价成功通知, 拼团成功通知, 拼团失败通知, 开团成功通知, 提现成功通知, 提现失败通知, 充值退款通知, 退款申请拒绝通知, 您有新的退款待处理, 您有新的订单待处理, 发货通知, 取消拼团通知, 参团成功通知, 你有个新的提现申请待处理, 你有个新的用户收货待处理, 提醒付款通知, 短信验证码, 到店自提, 快递配送, default */
  9358. /***/ (function(module) {
  9359. module.exports = JSON.parse("{\"选择地址\":\"選擇地址\",\"选择其它地址\":\"選擇其它地址\",\"已选商品\":\"已選商品\",\"清空\":\"清空\",\"¥\":\"¥\",\"已售罄\":\"已售罄\",\"已下架\":\"已下架\",\"删除\":\"刪除\",\"商品券\":\"商品券\",\"品类券\":\"品類券\",\"通用券\":\"通用券\",\"优惠券\":\"優惠券\",\"满\":\"滿\",\"元可用\":\"元可用\",\"无门槛券\":\"無門檻券\",\"领取后\":\"領取後\",\"天内可用\":\"天內可用\",\"已领取\":\"已領取\",\"立即领取\":\"立即領取\",\"购物满\":\"購物滿\",\"减\":\"減\",\"不限时\":\"不限時\",\"秒杀\":\"秒殺\",\"砍价\":\"砍價\",\"拼团\":\"拼團\",\"已售\":\"已售\",\"立即购买\":\"立即購買\",\"加入购物车\":\"加入購物車\",\"选规格\":\"選規格\",\"跳过\":\"跳過\",\"立即体验\":\"立即體驗\",\"首页\":\"首頁\",\"搜索\":\"搜索\",\"购物车\":\"購物車\",\"我的收藏\":\"我的收藏\",\"个人中心\":\"個人中心\",\"券\":\"券\",\"正在加载中\":\"正在加載中\",\"上拉加载更多\":\"上拉加載更多\",\"代付金额\":\"代付金額\",\"共\":\"共\",\"件商品\":\"件商品\",\"订单包裹\":\"訂單包裹\",\"申请退款中\":\"申請退款中\",\"已退款\":\"已退款\",\"已完成\":\"已完成\",\"件退款中\":\"件退款中\",\"不支持配送\":\"不支持配送\",\"不支持自提\":\"不支持自提\",\"已评价\":\"已評價\",\"评价\":\"評價\",\"申请退款\":\"申請退款\",\"查看物流\":\"查看物流\",\"确认收货\":\"確認收貨\",\"选择付款方式\":\"選擇付款方式\",\"支付\":\"支付\",\"去付款\":\"去付款\",\"请选择要支付的订单\":\"請選擇要支付的訂單\",\"余额不足\":\"餘額不足\",\"支付中\":\"支付中\",\"缺少支付参数\":\"缺少支付參數\",\"取消支付\":\"取消支付\",\"支付成功\":\"支付成功\",\"支付失败\":\"支付失敗\",\"库存\":\"庫存\",\"限量\":\"限量\",\"数量\":\"數量\",\"我要参团\":\"我要參團\",\"确定\":\"確定\",\"热门推荐\":\"熱門推薦\",\"最高返佣\":\"最高返佣\",\"推广享佣金\":\"推廣享佣金\",\"立即分享\":\"立即分享\",\"发现新版本\":\"發現新版本\",\"立即升级\":\"立即升級\",\"下载进度\":\"下載進度\",\"店小二\":\"店小二\",\"暂无记录\":\"暫無記錄\",\"正在下载海报,请稍后再试\":\"正在下載海報,請稍後再試\",\"海报二维码生成失败\":\"海報二維碼生成失敗\",\"倒计时\":\"倒計時\",\"天\":\"天\",\"时\":\"時\",\"分\":\"分\",\"秒\":\"秒\",\"砍价成功\":\"砍價成功\",\"活动已结束\":\"活動已結束\",\"已砍至\":\"已砍至\",\"活动进行中\":\"活動進行中\",\"取消活动\":\"取消活動\",\"继续砍价\":\"繼續砍價\",\"暂无砍价记录\":\"暫無砍價記錄\",\"人正在参与\":\"人正在參與\",\"最低\":\"最低\",\"参与砍价\":\"參與砍價\",\"砍价列表\":\"砍價列表\",\"人查看\":\"人查看\",\"人分享\":\"人分享\",\"人参与\":\"人參與\",\"邀请您帮忙砍价\":\"邀請您幫忙砍價\",\"查看商品\":\"查看商品\",\"当前\":\"當前\",\"已砍\":\"已砍\",\"还剩\":\"還剩\",\"立即参与砍价\":\"立即參與砍價\",\"商品暂无库存\":\"商品暫無庫存\",\"邀请好友帮砍价\":\"邀請好友幫砍價\",\"已有\":\"已有\",\"位好友成功砍价\":\"位好友成功砍價\",\"帮好友砍一刀\":\"幫好友砍一刀\",\"好友已砍价成功\":\"好友已砍價成功\",\"我也要参与\":\"我也要參與\",\"已成功帮助好友砍价\":\"已成功幫助好友砍價\",\"恭喜您砍价成功,快去支付\":\"恭喜您砍價成功,快去支付\",\"立即支付\":\"立即支付\",\"抢更多商品\":\"搶更多商品\",\"砍价帮\":\"砍價幫\",\"砍掉\":\"砍掉\",\"更多\":\"更多\",\"关闭\":\"關閉\",\"点击加载更多\":\"點擊加載更多\",\"商品详情\":\"商品詳情\",\"砍价规则\":\"砍價規則\",\"您已砍掉\":\"您已砍掉\",\"元,听说分享次数越多砍价成功的机会越大哦\":\"元,聽說分享次數越多砍價成功的機會越大哦\",\"成功帮砍\":\"成功幫砍\",\"您也可以砍价低价拿哦,快去挑选心仪的商品吧\":\"您也可以砍價低價拿哦,快去挑選心儀的商品吧\",\"发送给朋友\":\"發送給朋友\",\"微信好友\":\"微信好友\",\"微信朋友圈\":\"微信朋友圈\",\"生成海报\":\"生成海報\",\"砍价详情\":\"砍價詳情\",\"分享成功\":\"分享成功\",\"分享失败\":\"分享失敗\",\"该商品每人限购\":\"該商品每人限購\",\"您的好友\":\"您的好友\",\"邀请您砍价\":\"邀請您砍價\",\"人团\":\"人團\",\"去拼团\":\"去拼團\",\"拼团列表\":\"拼團列表\",\"类型\":\"類型\",\"累计销量\":\"累計銷量\",\"限购\":\"限購\",\"种规格可选\":\"種規格可選\",\"已拼\":\"已拼\",\"件\":\"件\",\"还差\":\"還差\",\"人成团\":\"人成團\",\"去拼单\":\"去拼單\",\"查看更多\":\"查看更多\",\"收起\":\"收起\",\"拼团玩法\":\"拼團玩法\",\"开团/参团\":\"開團/參團\",\"邀请好友\":\"邀請好友\",\"满员发货\":\"滿員發貨\",\"用户评价\":\"用戶評價\",\"好评率\":\"好評率\",\"产品介绍\":\"產品介紹\",\"单独购买\":\"單獨購買\",\"立即开团\":\"立即開團\",\"请选择\":\"請選擇\",\"商品\":\"商品\",\"详情\":\"詳情\",\"缺少参数无法查看商品\":\"缺少參數無法查看商品\",\"参数错误\":\"參數錯誤\",\"已选择\":\"已選擇\",\"保存成功\":\"保存成功\",\"保存失败\":\"保存失敗\",\"人拼\":\"人拼\",\"剩余\":\"剩餘\",\"结束\":\"結束\",\"恭喜您拼团成功\":\"恭喜您拼團成功\",\"人,拼团失败\":\"人,拼團失敗\",\"拼团中,还差\":\"拼團中,還差\",\"人拼团成功\":\"人拼團成功\",\"邀请好友参团\":\"邀請好友參團\",\"再次开团\":\"再次開團\",\"取消开团\":\"取消開團\",\"查看订单信息\":\"查看訂單信息\",\"大家都在拼\":\"大家都在拼\",\"更多拼团\":\"更多拼團\",\"邀请您参团\":\"邀請您參團\",\"你不是该团的成员\":\"你不是該團的成員\",\"已抢\":\"已搶\",\"抢购中\":\"搶購中\",\"未开始\":\"未開始\",\"已结束\":\"已結束\",\"暂无商品,去看点别的吧\":\"暫無商品,去看點別的吧\",\"即将开始\":\"即將開始\",\"距秒杀结束仅剩\":\"距秒殺結束僅剩\",\"累计销售\":\"累計銷售\",\"收藏\":\"收藏\",\"保存到手机\":\"保存到手機\",\"长按图片可以保存到手机\":\"長按圖片可以保存到手機\",\"抢购详情页\":\"搶購詳情頁\",\"二维码获取失败\":\"二維碼獲取失敗\",\"请选择属性\":\"請選擇屬性\",\"提示:点击图片即可保存至手机相册\":\"提示:點擊圖片即可保存至手機相冊\",\"拼团海报\":\"拼團海報\",\"砍价海报\":\"砍價海報\",\"海报生成中\":\"海報生成中\",\"海报图片获取失败\":\"海報圖片獲取失敗\",\"海报\":\"海報\",\"已预定\":\"已預定\",\"预售价\":\"預售價\",\"立即预定\":\"立即預定\",\"开售时间\":\"開售時間\",\"预售活动\":\"預售活動\",\"起\":\"起\",\"划线价\":\"劃線價\",\"开通“超级会员”立省\":\"開通“超級會員”立省\",\"元\":\"元\",\"立即开通\":\"立即開通\",\"预售活动时间\":\"預售活動時間\",\"预售结束后\":\"預售結束後\",\"天内发货\":\"天內發貨\",\"活动\":\"活動\",\"参与秒杀\":\"參與秒殺\",\"参与拼团\":\"參與拼團\",\"复制口令\":\"複製口令\",\"复制成功\":\"複製成功\",\"推荐\":\"推薦\",\"缺少经纬度信息无法查看地图\":\"缺少經緯度信息無法查看地圖\",\"产品库存不足,请选择其它属性\":\"產品庫存不足,請選擇其它屬性\",\"立即退款\":\"立即退款\",\"一键改价\":\"一鍵改價\",\"订单备注\":\"訂單備註\",\"商品总价\":\"商品總價\",\"原始邮费\":\"原始郵費\",\"实际支付\":\"實際支付\",\"退款金额\":\"退款金額\",\"请填写备注信息\":\"請填寫備註信息\",\"立即修改\":\"立即修改\",\"确认退款\":\"確認退款\",\"拒绝退款\":\"拒絕退款\",\"取消\":\"取消\",\"订单号\":\"訂單號\",\"发货方式\":\"發貨方式\",\"发货类型\":\"發貨類型\",\"快递公司\":\"快遞公司\",\"快递单号\":\"快遞單號\",\"顺丰请输入单号 :收件人或寄件人手机号后四位\":\"順豐請輸入單號 :收件人或寄件人手機號後四位\",\"例如:SF000000000000:3941\":\"例如:SF000000000000:3941\",\"电子面单\":\"電子麵單\",\"预览\":\"預覽\",\"寄件人姓名\":\"寄件人姓名\",\"填写寄件人姓名\":\"填寫寄件人姓名\",\"寄件人电话\":\"寄件人電話\",\"填写寄件人电话\":\"填寫寄件人電話\",\"寄件人地址\":\"寄件人地址\",\"填写寄件人地址\":\"填寫寄件人地址\",\"送货人\":\"送貨人\",\"确认提交\":\"確認提交\",\"发货\":\"發貨\",\"送货\":\"送貨\",\"无需物流\":\"無需物流\",\"手动填写\":\"手動填寫\",\"电子面单打印\":\"電子麵單打印\",\"填写快递单号\":\"填寫快遞單號\",\"请选择电子面单\":\"請選擇電子麵單\",\"待付款\":\"待付款\",\"待发货\":\"待發貨\",\"待收货\":\"待收貨\",\"待评价\":\"待評價\",\"售后/退款\":\"退款\",\"数据统计\":\"數據統計\",\"今日成交额\":\"今日成交額\",\"昨日成交额\":\"昨日成交額\",\"本月成交额\":\"本月成交額\",\"今日订单数\":\"今日訂單數\",\"昨日订单数\":\"昨日訂單數\",\"本月订单数\":\"本月訂單數\",\"详细数据\":\"詳細數據\",\"日期\":\"日期\",\"订单数\":\"訂單數\",\"成交额\":\"成交額\",\"立即核销\":\"立即核銷\",\"查看\":\"查看\",\"确定要核销此订单吗\":\"確定要核銷此訂單嗎\",\"确定核销\":\"確定核銷\",\"请输入核销码\":\"請輸入核銷碼\",\"请输入正确的核销码\":\"請輸入正確的核銷碼\",\"查询中\":\"查詢中\",\"订单\":\"訂單\",\"订单未备注,点击添加备注信息\":\"訂單未備註,點擊添加備註信息\",\"复制\":\"複製\",\"件商品,应支付\":\"件商品,應支付\",\"邮费\":\"郵費\",\"订单编号\":\"訂單編號\",\"下单时间\":\"下單時間\",\"支付状态\":\"支付狀態\",\"已支付\":\"已支付\",\"未支付\":\"未支付\",\"支付方式\":\"支付方式\",\"买家留言\":\"買家留言\",\"支付金额\":\"支付金額\",\"优惠券抵扣\":\"優惠券抵扣\",\"运费\":\"運費\",\"实付款\":\"實付款\",\"配送方式\":\"配送方式\",\"快递\":\"快遞\",\"送货人电话\":\"送貨人電話\",\"确认付款\":\"確認付款\",\"去发货\":\"去發貨\",\"改价成功\":\"改價成功\",\"改价失败\":\"改價失敗\",\"请输入备注\":\"請輸入備註\",\"退款中\":\"退款中\",\"部分退款中\":\"部分退款中\",\"件商品,实付款\":\"件商品,實付款\",\"同意退货\":\"同意退貨\",\"待用户发货\":\"待用戶發貨\",\"请输入正确的金额\":\"請輸入正確的金額\",\"今天\":\"今天\",\"昨天\":\"昨天\",\"最近7天\":\"最近7天\",\"本月\":\"本月\",\"自定义\":\"自定義\",\"营业额(元)\":\"營業額(元)\",\"订单量(份)\":\"訂單量(份)\",\"增长率\":\"增長率\",\"增长\":\"增長\",\"单位\":\"單位\",\"元.\":\"元\",\"分.\":\"分\",\"固定\":\"固定\",\"指定范围\":\"指定範圍\",\"提交时间\":\"提交時間\",\"原因\":\"原因\",\"暂无申请记录,快去申请吧!\":\"暫無申請記錄,快去申請吧!\",\"没有更多啦\":\"沒有更多啦\",\"待审核\":\"待審核\",\"审核通过\":\"審核通過\",\"审核未通过\":\"審核未通過\",\"编辑\":\"編輯\",\"重新提交\":\"重新提交\",\"会员优惠价\":\"會員優惠價\",\"余额支付\":\"餘額支付\",\"可用余额\":\"可用餘額\",\"微信支付\":\"微信支付\",\"确认\":\"確認\",\"支付提醒\":\"支付提醒\",\"线下支付已关闭,请点击确认按钮返回主页\":\"線下支付已關閉,請點擊確認按鈕返回主頁\",\"请输入支付金额\":\"請輸入支付金額\",\"正在确认\":\"正在確認\",\"进入商城\":\"進入商城\",\"代理商名称\":\"代理商名稱\",\"请输入代理商名称\":\"請輸入代理商名稱\",\"用户姓名\":\"用戶姓名\",\"请输入姓名\":\"請輸入姓名\",\"联系电话\":\"聯繫電話\",\"请输入手机号\":\"請輸入手機號\",\"验证码\":\"驗證碼\",\"填写验证码\":\"填寫驗證碼\",\"邀请码\":\"邀請碼\",\"请输入代理商邀请码\":\"請輸入代理商邀請碼\",\"请上传营业执照及行业相关资质证明图片\":\"請上傳營業執照及行業相關資質證明圖片\",\"图片最多可上传10张,图片格式支持JPG、PNG、JPEG\":\"圖片最多可上傳10張,圖片格式支持JPG、PNG、JPEG\",\"上传图片\":\"上傳圖片\",\"已阅读并同意\":\"已閱讀並同意\",\"代理商协议\":\"代理商協議\",\"提交申请\":\"提交申請\",\"代理商入驻协议\":\"代理商入駐協議\",\"恭喜,您的资料提交成功!\":\"恭喜,您的資料提交成功! \",\"返回首页\":\"返回首頁\",\"恭喜,您的资料通过审核!\":\"恭喜,您的資料通過審核! \",\"您的申请未通过!\":\"您的申請未通過! \",\"重新申请\":\"重新申請\",\"获取验证码\":\"獲取驗證碼\",\"请输入正确的手机号码\":\"請輸入正確的手機號碼\",\"重新获取\":\"重新獲取\",\"请上传营业执照\":\"請上傳營業執照\",\"请勾选并同意入驻协议\":\"請勾選並同意入駐協議\",\"专题栏\":\"專題欄\",\"暂无数据\":\"暫無數據\",\"请输入卡号\":\"請輸入卡號\",\"请输入卡密\":\"請輸入卡密\",\"确认激活\":\"確認激活\",\"SVIP会员尊享权\":\"SVIP會員尊享權\",\"正在激活\":\"正在激活\",\"已使用\":\"已使用\",\"永久SVIP会员\":\"永久SVIP會員\",\"SVIP会员\":\"SVIP會員\",\"到期\":\"到期\",\"您与\":\"您與\",\"商城的第\":\"商城的第\",\"天.\":\"天.\",\"已累积为您节省\":\"已累積為您節省\",\"开通即享会员权益\":\"開通即享會員權益\",\"续费会员\":\"續費會員\",\"开通会员\":\"開通會員\",\"有效期至\":\"有效期至\",\"试用\":\"試用\",\"购买即视为同意\":\"購買即視為同意\",\"会员用户协议\":\"會員用戶協議\",\"点击兑换卡密\":\"點擊兌換卡密\",\"会员优惠券\":\"會員優惠券\",\"SVIP商品推荐\":\"SVIP商品推薦\",\"商城价\":\"商城價\",\"激活会员卡\":\"激活會員卡\",\"支付宝支付\":\"支付寶支付\",\"成功开启0元试用\":\"成功開啟0元試用\",\"确认绑定\":\"確認綁定\",\"绑定成功\":\"綁定成功\",\"商城客服已离线\":\"商城客服已離線\",\"我要反馈\":\"我要反饋\",\"请填写内容\":\"請填寫內容\",\"提交\":\"提交\",\"精品推荐\":\"精品推薦\",\"热门榜单\":\"熱門榜單\",\"首发新品\":\"首發新品\",\"促销单品\":\"促銷單品\",\"预告\":\"預告\",\"回放\":\"回放\",\"进行中\":\"進行中\",\"发送客服\":\"發送客服\",\"客服连接中\":\"客服連接中\",\"连接失败\":\"連接失敗\",\"提示\":\"提示\",\"客服已下线,是否需要反馈?\":\"客服已下線,是否需要反饋? \",\"和好友一起分享\":\"和好友一起分享\",\"积分抵扣\":\"積分抵扣\",\"已开票\":\"已開票\",\"未开票\":\"未開票\",\"发票信息\":\"發票信息\",\"发票抬头\":\"發票抬頭\",\"发票抬头类型\":\"發票抬頭類型\",\"个人\":\"個人\",\"企业\":\"企業\",\"发票类型\":\"發票類型\",\"电子普通发票\":\"電子普通發票\",\"电子专用发票\":\"電子專用發票\",\"企业税号\":\"企業稅號\",\"联系信息\":\"聯繫信息\",\"真实姓名\":\"真實姓名\",\"联系邮箱\":\"聯繫郵箱\",\"抬头选择\":\"抬頭選擇\",\"默认\":\"默認\",\"普通\":\"普通\",\"专用\":\"專用\",\"您还没有添加发票信息哟\":\"您還沒有添加發票信息喲\",\"添加新的抬头\":\"添加新的抬頭\",\"不开发票\":\"不開發票\",\"抽奖\":\"抽獎\",\"全选\":\"全選\",\"属性\":\"屬性\",\"请填写具体地址\":\"請填寫具體地址\",\"省\":\"省\",\"市\":\"市\",\"区\":\"區\",\"添加成功\":\"添加成功\",\"您已拒绝导入微信地址权限\":\"您已拒絕導入微信地址權限\",\"是否进入权限管理,调整授权?\":\"是否進入權限管理,調整授權? \",\"已取消\":\"已取消\",\"添加失败\":\"添加失敗\",\"请填写收货人姓名\":\"請填寫收貨人姓名\",\"请选择所在地区\":\"請選擇所在地區\",\"请填写详细地址\":\"請填寫詳細地址\",\"星\":\"星\",\"商品满足你的期待么?说说你的想法,分享给想买的他们吧\":\"商品滿足你的期待麼?說說你的想法,分享給想買的他們吧\",\"立即评价\":\"立即評價\",\"商品质量\":\"商品質量\",\"服务态度\":\"服務態度\",\"缺少参数\":\"缺少參數\",\"请填写你对宝贝的心得\":\"請填寫你對寶貝的心得\",\"正在发布评论\":\"正在發布評論\",\"感谢您的评价\":\"感謝您的評價\",\"评价完成\":\"評價完成\",\"恭喜您\":\"恭喜您\",\"获得\":\"獲得\",\"机会\":\"機會\",\"领取成功\":\"領取成功\",\"评分\":\"評分\",\"全部\":\"全部\",\"好评\":\"好評\",\"中评\":\"中評\",\"差评\":\"差評\",\"加载更多\":\"加載更多\",\"千米距离\":\"千米距離\",\"搜索商品名称\":\"搜索商品名稱\",\"价格\":\"價格\",\"销量\":\"銷量\",\"新品\":\"新品\",\"已全部加载\":\"已全部加載\",\"缺少订单号\":\"缺少訂單號\",\"退货件数\":\"退貨件數\",\"退款类型\":\"退款類型\",\"退款原因\":\"退款原因\",\"备注说明\":\"備註說明\",\"填写备注信息,100字以内\":\"填寫備註信息,100字以內\",\"仅退款\":\"僅退款\",\"退货并退款\":\"退貨並退款\",\"申请成功\":\"申請成功\",\"请先选择退货商品\":\"請先選擇退貨商品\",\"搜索历史\":\"搜索歷史\",\"热门搜索\":\"熱門搜索\",\"请输入要搜索的商品\":\"請輸入要搜索的商品\",\"正在搜索中\":\"正在搜索中\",\"中奖记录\":\"中獎記錄\",\"我的奖品\":\"我的獎品\",\"活动规则\":\"活動規則\",\"昵称\":\"暱稱\",\"序号\":\"序號\",\"奖品名称\":\"獎品名稱\",\"获奖时间\":\"獲獎時間\",\"商家暂未上架活动哦\":\"商家暫未上架活動哦\",\"获取抽奖信息\":\"獲取抽獎信息\",\"奖品类型\":\"獎品類型\",\"立即兑换\":\"立即兌換\",\"兑换时间\":\"兌換時間\",\"暂无中奖记录\":\"暫無中獎記錄\",\"积分\":\"積分\",\"余额\":\"餘額\",\"红包\":\"紅包\",\"设置收货地址\":\"設置收貨地址\",\"暂无门店信息\":\"暫無門店信息\",\"剩余积分\":\"剩餘積分\",\"当前积分\":\"當前積分\",\"开具发票\":\"開具發票\",\"请填写\":\"請填寫\",\"配送运费\":\"配送運費\",\"会员商品优惠\":\"會員商品優惠\",\"会员运费优惠\":\"會員運費優惠\",\"合计\":\"合計\",\"使用微信快捷支付\":\"使用微信快捷支付\",\"使用支付宝支付\":\"使用支付寶支付\",\"线下支付\":\"線下支付\",\"使用线下付款\":\"使用線下付款\",\"好友代付\":\"好友代付\",\"找微信好友支付\":\"找微信好友支付\",\"立即使用\":\"立即使用\",\"请选择要购买的商品\":\"請選擇要購買的商品\",\"发票\":\"發票\",\"不使用\":\"不使用\",\"订单创建成功\":\"訂單創建成功\",\"请选择支付方式\":\"請選擇支付方式\",\"请选择收货地址\":\"請選擇收貨地址\",\"请填写联系人或联系人电话\":\"請填寫聯繫人或聯繫人電話\",\"暂无门店,请选择其他方式\":\"暫無門店,請選擇其他方式\",\"请输入\":\"請輸入\",\"请输入正确的\":\"請輸入正確的\",\"请上传\":\"請上傳\",\"订单支付中\":\"訂單支付中\",\"请按以上退货信息将商品退回\":\"請按以上退貨信息將商品退回\",\"请联系管理员获取退货地址\":\"請聯繫管理員獲取退貨地址\",\"待核销\":\"待核銷\",\"核销信息\":\"核銷信息\",\"营业时间\":\"營業時間\",\"每日\":\"每日\",\"使用说明\":\"使用說明\",\"可将二维码出示给店员扫描或提供数字核销码\":\"可將二維碼出示給店員掃描或提供數字核銷碼\",\"可将二维码出示给配送员进行核销\":\"可將二維碼出示給配送員進行核銷\",\"查看位置\":\"查看位置\",\"拒绝原因\":\"拒絕原因\",\"联系客服\":\"聯繫客服\",\"商家备注\":\"商家備註\",\"收货人\":\"收貨人\",\"收货地址\":\"收貨地址\",\"配送人姓名\":\"配送人姓名\",\"拨打\":\"撥打\",\"虚拟发货\":\"虛擬發貨\",\"已发货,请注意查收\":\"已發貨,請注意查收\",\"虚拟备注\":\"虛擬備註\",\"总代付\":\"總代付\",\"申请开票\":\"申請開票\",\"查看发票\":\"查看發票\",\"取消订单\":\"取消訂單\",\"立即付款\":\"立即付款\",\"批量退款\":\"批量退款\",\"查看拼团\":\"查看拼團\",\"再次购买\":\"再次購買\",\"取消申请\":\"取消申請\",\"填写退货信息\":\"填寫退貨信息\",\"查看退货物流\":\"查看退貨物流\",\"您确认放弃此次申请吗\":\"您確認放棄此次申請嗎\",\"操作成功\":\"操作成功\",\"订单信息不存在\":\"訂單信息不存在\",\"为保障权益,请收到货确认无误后,再确认收货\":\"為保障權益,請收到貨確認無誤後,再確認收貨\",\"删除订单\":\"刪除訂單\",\"确定删除该订单\":\"確定刪除該訂單\",\"删除成功\":\"刪除成功\",\"确认取消该订单\":\"確認取消該訂單\",\"订单信息\":\"訂單信息\",\"消费订单\":\"消費訂單\",\"总消费\":\"總消費\",\"预售\":\"預售\",\"线下付款,未支付\":\"線下付款,未支付\",\"未核销\":\"未核銷\",\"件商品,总金额\":\"件商品,總金額\",\"查看详情\":\"查看詳情\",\"暂无订单\":\"暫無訂單\",\"缺少订单号无法取消订单\":\"缺少訂單號無法取消訂單\",\"订单支付成功\":\"訂單支付成功\",\"订单支付失败\":\"訂單支付失敗\",\"暂未支付\":\"暫未支付\",\"失败原因\":\"失敗原因\",\"重新购买\":\"重新購買\",\"重新支付\":\"重新支付\",\"赠送优惠券\":\"贈送優惠券\",\"有效期\":\"有效期\",\"缺少参数无法查看订单支付状态\":\"缺少參數無法查看訂單支付狀態\",\"最多可上传3张\":\"最多可上傳3張\",\"请选择产品\":\"請選擇產品\",\"该产品没有更多库存了\":\"該產品沒有更多庫存了\",\"优品推荐\":\"優品推薦\",\"暂无产品\":\"暫無產品\",\"重新选择\":\"重新選擇\",\"请选择数量\":\"請選擇數量\",\"砍价专区·BARGAINING\":\"砍價專區·BARGAINING\",\"立即砍价\":\"立即砍價\",\"拼团活动\":\"拼團活動\",\"人拼团成功.\":\"人拼團成功.\",\"人参团\":\"人參團\",\"拼团价\":\"拼團價\",\"已过期\":\"已過期\",\"关注\":\"關注\",\"推荐好货\":\"推薦好貨\",\"暂无商品\":\"暫無商品\",\"限时秒杀\":\"限時秒殺\",\"抢\":\"搶\",\"广告位\":\"廣告位\",\"精彩内容\":\"精彩內容\",\"砍价模块,暂无数据\":\"砍價模塊,暫無數據\",\"砍价活动\":\"砍價活動\",\"呼朋唤友来砍价\":\"呼朋喚友來砍價\",\"拼团模块,暂无数据\":\"拼團模塊,暫無數據\",\"享超值开团价\":\"享超值開團價\",\"优惠券,暂无数据\":\"優惠券,暫無數據\",\"领取今日好券\":\"領取今日好券\",\"可用\":\"可用\",\"领取\":\"領取\",\"客服\":\"客服\",\"商品列表,暂无数据\":\"商品列表,暫無數據\",\"搜索商品\":\"搜索商品\",\"暂无图片,请上传图片\":\"暫無圖片,請上傳圖片\",\"首发新品,暂无数据\":\"首發新品,暫無數據\",\"多个优质商品最新上架\":\"多個優質商品最新上架\",\"暂无新闻,请上传新闻\":\"暫無新聞,請上傳新聞\",\"热度 TOP\":\"熱度 TOP\",\"排行榜、暂无数据\":\"排行榜、暫無數據\",\"促销单品,暂无数据\":\"促銷單品,暫無數據\",\"库存商品优惠促销活动\":\"庫存商品優惠促銷活動\",\"精品推荐,暂无数据\":\"精品推薦,暫無數據\",\"上百种商品分类任您选择\":\"上百種商品分類任您選擇\",\"秒杀模块,暂无数据\":\"秒殺模塊,暫無數據\",\"场\":\"場\",\"暂无数据,请设置\":\"暫無數據,請設置\",\"暂无数据,请先添加分类\":\"暫無數據,請先添加分類\",\"暂无标题\":\"暫無標題\",\"诚意推荐品质商品\":\"誠意推薦品質商品\",\"点击“立即关注”即可关注公众号\":\"點擊“立即關注”即可關注公眾號\",\"立即关注\":\"立即關注\",\"添加到我的小程序, 微信首页下拉即可访问商城。\":\"添加到我的小程序, 微信首頁下拉即可訪問商城。 \",\"点击\":\"點擊\",\"服务协议与隐私政策\":\"服務協議與隱私政策\",\"请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。\":\"請務必審慎閱讀、充分理解“服務協議與 隱私政策”各條款,包括但不限於:為了 向你提供即時通訊、內容分享等服務,我 們需要收集你的設備信息、操作日誌等個 人信息。你可以在“設置”中查看、變更、刪除個人信息並管理你的授權。 \",\"你可以阅读\":\"你可以閱讀\",\"《服务协议与隐私政策》\":\"《服務協議與隱私政策》\",\"了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。\":\"了解詳細信息。如你同意,請點擊“我同意”開始接受我們的服務。 \",\"我同意\":\"我同意\",\"残忍拒绝\":\"殘忍拒絕\",\"下拉加载更多\":\"下拉加載更多\",\"网络连接断开\":\"網絡連接斷開\",\"请检查情况:\":\"請檢查情況:\",\"在设置中是否已开启网络权限\":\"在設置中是否已開啟網絡權限\",\"当前是否处于弱网环境\":\"當前是否處於弱網環境\",\"版本是否过低,升级试试吧\":\"版本是否過低,升級試試吧\",\"重新连接\":\"重新連接\",\"加载中\":\"加載中\",\"没有更多内容啦~\":\"沒有更多內容啦~\",\"100%正品保证\":\"100%正品保證\",\"所有商品精挑细选\":\"所有商品精挑細選\",\"售后无忧\":\"售後無憂\",\"管理\":\"管理\",\"购物数量\":\"購物數量\",\"请重新选择商品规格\":\"請重新選擇商品規格\",\"重选\":\"重選\",\"失效商品\":\"失效商品\",\"失效\":\"失效\",\"该商品已失效\":\"該商品已失效\",\"立即下单\":\"立即下單\",\"产品库存不足,请选择其它\":\"產品庫存不足,請選擇其它\",\"添加购物车成功\":\"添加購物車成功\",\"清除成功\":\"清除成功\",\"暂无兑换记录~\":\"暫無兌換記錄~\",\"大家都在换\":\"大家都在換\",\"人兑换\":\"人兌換\",\"轻松赚积分\":\"輕鬆賺積分\",\"购买商品\":\"購買商品\",\"购买商品可获得积分奖励\":\"購買商品可獲得積分獎勵\",\"去完成\":\"去完成\",\"每日签到活动\":\"每日簽到活動\",\"每日签到可获得积分奖励\":\"每日簽到可獲得積分獎勵\",\"九宫格抽奖活动\":\"九宮格抽獎活動\",\"幸运抽奖可获得积分奖励\":\"幸運抽獎可獲得積分獎勵\",\"我的积分\":\"我的積分\",\"每日签到\":\"每日簽到\",\"积分抽奖\":\"積分抽獎\",\"兑换记录\":\"兌換記錄\",\"已兑换\":\"已兌換\",\"无法兑换\":\"無法兌換\",\"[默认]\":\"[默認]\",\"可用积分\":\"可用積分\",\"快递费用\":\"快遞費用\",\"免运费\":\"免運費\",\"备注信息\":\"備註信息\",\"请添加备注(150字以内)\":\"請添加備註(150字以內)\",\"使用线上支付宝支付\":\"使用線上支付寶支付\",\"可用余额:\":\"可用餘額:\",\"选择线下付款方式\":\"選擇線下付款方式\",\"正在加载…\":\"正在加載…\",\"可用积分不足!\":\"可用積分不足! \",\"订单状态\":\"訂單狀態\",\"支付积分\":\"支付積分\",\"备注\":\"備註\",\"配送核销码\":\"配送核銷碼\",\"当前可用余额:\":\"當前可用餘額:\",\"正在加载\":\"正在加載\",\"缺少经纬度信息无法查看地图!\":\"缺少經緯度信息無法查看地圖! \",\"商品兑换成功\":\"商品兌換成功\",\"兑换方式\":\"兌換方式\",\"积分兑换\":\"積分兌換\",\"兑换积分\":\"兌換積分\",\"取消兑换\":\"取消兌換\",\"缺少参数无法查看订单兑换状态\":\"缺少參數無法查看訂單兌換狀態\",\"用户离开了\":\"用戶離開了\",\"兑换成功\":\"兌換成功\",\"物流公司\":\"物流公司\",\"复制单号\":\"複製單號\",\"设为默认\":\"設為默認\",\"添加新地址\":\"添加新地址\",\"导入微信地址\":\"導入微信地址\",\"取消选择\":\"取消選擇\",\"您设置的默认地址不存在!\":\"您設置的默認地址不存在!\",\"设置成功\":\"設置成功\",\"您删除的地址不存在!\":\"您刪除的地址不存在!\",\"获取头像\":\"獲取頭像\",\"请点击授权\":\"請點擊授權\",\"绑定手机号\":\"綁定手機號\",\"永久\":\"永久\",\"会员到期\":\"會員到期\",\"未开通会员\":\"未開通會員\",\"查看会员权益\":\"查看會員權益\",\"立即续费\":\"立即續費\",\"立即激活\":\"立即激活\",\"会员可享多项权益\":\"會員可享多項權益\",\"订单中心\":\"訂單中心\",\"我的服务\":\"我的服務\",\"隐私协议\":\"隱私協議\",\"商家管理\":\"商家管理\",\"更新用户信息成功\":\"更新用戶信息成功\",\"客服接待\":\"客服接待\",\"点击复制网址去浏览器中打开\":\"點擊複製網址去瀏覽器中打開\",\"点击复制\":\"點擊複製\",\"完成支付\":\"完成支付\",\"点击右上角\":\"點擊右上角\",\"选择 在浏览器 打开,去支付宝支付\":\"選擇 在瀏覽器 打開,去支付寶支付\",\"支付订单不存在,页面将在2秒后自动关闭!\":\"支付訂單不存在,頁面將在2秒後自動關閉! \",\"正在支付中\":\"正在支付中\",\"支付订单不存在,页面将在2秒后自动关闭\":\"支付訂單不存在,頁面將在2秒後自動關閉\",\"复制失败\":\"複製失敗\",\"您目前的排名\":\"您目前的排名\",\"您目前暂无排名\":\"您目前暫無排名\",\"暂无排名~\":\"暫無排名~\",\"我也是有底线的\":\"我也是有底線的\",\"输入手机号\":\"輸入手機號\",\"输入验证码\":\"輸入驗證碼\",\"立即登录\":\"立即登錄\",\"请填写手机号码\":\"請填寫手機號碼\",\"请填写验证码\":\"請填寫驗證碼\",\"请输入正确的验证码\":\"請輸入正確的驗證碼\",\"正在登录中\":\"正在登錄中\",\"登录成功\":\"登錄成功\",\"获取授权\":\"獲取授權\",\"获取微信的手机号授权\":\"獲取微信的手機號授權\",\"获取微信手机号\":\"獲取微信手機號\",\"输入手机号码\":\"輸入手機號碼\",\"填写登录密码\":\"填寫登錄密碼\",\"登录\":\"登錄\",\"快速登录\":\"快速登錄\",\"账号登录\":\"賬號登錄\",\"其他方式登录\":\"其他方式登錄\",\"登录中\":\"登錄中\",\"获取用户信息失败\":\"獲取用戶信息失敗\",\"请绑定手机号后,继续操作\":\"請綁定手機號後,繼續操作\",\"错误信息\":\"錯誤信息\",\"用户点击确定\":\"用戶點擊確定\",\"用户点击取消\":\"用戶點擊取消\",\"登录失败\":\"登錄失敗\",\"请勿重复点击\":\"請勿重複點擊\",\"请填写密码\":\"請填寫密碼\",\"您输入的密码过于简单\":\"您輸入的密碼過於簡單\",\"请填写账号\":\"請填寫賬號\",\"请输入正确的账号\":\"請輸入正確的賬號\",\"[图片]\":\"[圖片]\",\"[语音]\":\"[語音]\",\"[商品]\":\"[商品]\",\"[订单]\":\"[訂單]\",\"亲、暂无消息记录哟!\":\"親、暫無消息記錄喲! \",\"站内消息\":\"站內消息\",\"客服消息\":\"客服消息\",\"通知于\":\"通知於\",\"获取详情中\":\"獲取詳情中\",\"代付订单创建成功,发给好友帮你付款吧~\":\"代付訂單創建成功,發給好友幫你付款吧~\",\"帮我付一下这件商品了,谢谢~\":\"幫我付一下這件商品了,謝謝~\",\"已经有人替我代付,谢谢啦~\":\"已經有人替我代付,謝謝啦~\",\"谢谢你帮我支付,么么哒~\":\"謝謝你幫我支付,麼麼噠~\",\"我已为你代付成功,商家正在努力发货中~\":\"我已為你代付成功,商家正在努力發貨中~\",\"好友代付成功,商家正在努力发货中~\":\"好友代付成功,商家正在努力發貨中~\",\"发送给微信好友\":\"發送給微信好友\",\"查看订单详情\":\"查看訂單詳情\",\"订单已支付\":\"訂單已支付\",\"如果订单申请退款,已支付金额将原路退还给您\":\"如果訂單申請退款,已支付金額將原路退還給您\",\"代付成功\":\"代付成功\",\"谢谢你为我付款,还可以再去看看其他商品哟~\":\"謝謝你為我付款,還可以再去看看其他商品喲~\",\"该订单暂未支付\":\"該訂單暫未支付\",\"人\":\"人\",\"推广人数\":\"推廣人數\",\"一级\":\"一級\",\"二级\":\"二級\",\"点击搜索会员名称\":\"點擊搜索會員名稱\",\"团队排序\":\"團隊排序\",\"金额排序\":\"金額排序\",\"订单排序\":\"訂單排序\",\"单\":\"單\",\"加入时间\":\"加入時間\",\"累积推广订单\":\"累積推廣訂單\",\"本月累计推广订单\":\"本月累計推廣訂單\",\"返佣\":\"返佣\",\"暂未返佣\":\"暫未返佣\",\"返佣时间\":\"返佣時間\",\"单号\":\"單號\",\"暂无推广订单~\":\"暫無推廣訂單~\",\"推广订单列表\":\"推廣訂單列表\",\"找回密码\":\"找回密碼\",\"填写您的新密码\":\"填寫您的新密碼\",\"加载失败\":\"加載失敗\",\"点击授权登录您的客服工作台\":\"點擊授權登錄您的客服工作台\",\"授权登录\":\"授權登錄\",\"没有登录的code,请重新扫码\":\"沒有登錄的code,請重新掃碼\",\"员工人数\":\"員工人數\",\"邀请\":\"邀請\",\"分佣比例\":\"分傭比例\",\"修改分佣比例\":\"修改分傭比例\",\"请输入百分比\":\"請輸入百分比\",\"删除员工\":\"刪除員工\",\"确定删除该员工?\":\"確定刪除該員工?\",\"请输入比例\":\"請輸入比例\",\"分类\":\"分類\",\"我的\":\"我的\",\"姓名\":\"姓名\",\"请输入联系电话\":\"請輸入聯繫電話\",\"所在地区\":\"所在地區\",\"详细地址\":\"詳細地址\",\"设置为默认地址\":\"設置為默認地址\",\"立即保存\":\"立即保存\",\"浙江省\":\"浙江省\",\"杭州市\":\"杭州市\",\"滨江区\":\"濱江區\",\"广东省\":\"廣東省\",\"广州市\":\"廣州市\",\"番禺区\":\"番禺區\",\"修改地址\":\"修改地址\",\"添加地址\":\"添加地址\",\"已取消!\":\"已取消! \",\"请填写联系电话\":\"請填寫聯繫電話\",\"保存中\":\"保存中\",\"修改成功\":\"修改成功\",\"消费\":\"消費\",\"充值\":\"充值\",\"暂无账单的记录哦~\":\"暫無賬單的記錄哦~\",\"点击【立即注销】即代表您已经同意《用户注销协议》\":\"點擊【立即註銷】即代表您已經同意《用戶註銷協議》\",\"立即注销\":\"立即註銷\",\"是否确认注销\":\"是否確認註銷\",\"注销后无法恢复,请谨慎操作\":\"註銷後無法恢復,請謹慎操作\",\"注销\":\"註銷\",\"持卡人\":\"持卡人\",\"请输入持卡人姓名\":\"請輸入持卡人姓名\",\"卡号\":\"卡號\",\"请填写卡号\":\"請填寫卡號\",\"银行\":\"銀行\",\"提现\":\"提現\",\"最低提现金额\":\"最低提現金額\",\"当前可提现金额\":\"當前可提現金額\",\"冻结佣金\":\"凍結佣金\",\"说明: 每笔佣金的冻结期为\":\"說明: 每筆佣金的凍結期為\",\"天,到期后可提现\":\"天,到期後可提現\",\"账号\":\"賬號\",\"请填写您的微信账号\":\"請填寫您的微信賬號\",\"收款码\":\"收款碼\",\"请填写您的支付宝账号\":\"請填寫您的支付寶賬號\",\"请选择银行\":\"請選擇銀行\",\"银行卡\":\"銀行卡\",\"微信\":\"微信\",\"支付宝\":\"支付寶\",\"请填写持卡人姓名\":\"請填寫持卡人姓名\",\"请填写微信号\":\"請填寫微信號\",\"请填写提现金额\":\"請填寫提現金額\",\"提现金额不能低于\":\"提現金額不能低於\",\"未使用\":\"未使用\",\"已使用/过期\":\"已使用/過期\",\"通用劵\":\"通用劵\",\"一级分佣上浮\":\"一級分傭上浮\",\"二级分佣上浮\":\"二級分傭上浮\",\"快速升级技巧\":\"快速升級技巧\",\"未完成\":\"未完成\",\"已领完\":\"已領完\",\"当前共\":\"當前共\",\"取关\":\"取關\",\"请选择商品\":\"請選擇商品\",\"头像\":\"頭像\",\"手机号码\":\"手機號碼\",\"点击绑定手机号\":\"點擊綁定手機號\",\"ID号\":\"ID號\",\"权限设置\":\"權限設置\",\"点击管理\":\"點擊管理\",\"密码\":\"密碼\",\"点击修改密码\":\"點擊修改密碼\",\"更换手机号码\":\"更換手機號碼\",\"点击更换手机号码\":\"點擊更換手機號碼\",\"缓存大小\":\"緩存大小\",\"当前版本\":\"當前版本\",\"地址管理\":\"地址管理\",\"发票管理\":\"發票管理\",\"账号注销\":\"賬號註銷\",\"注销后无法恢复\":\"註銷後無法恢復\",\"累计积分\":\"累計積分\",\"累计消费\":\"累計消費\",\"冻结积分\":\"凍結積分\",\"积分规则\":\"積分規則\",\"提示:积分数值的高低会直接影响您的会员等级\":\"提示:積分數值的高低會直接影響您的會員等級\",\"提示:你有\":\"提示:你有\",\"积分在\":\"積分在\",\"过期,请尽快使用\":\"過期,請盡快使用\",\"暂无积分记录哦~\":\"暫無積分記錄哦~\",\"赚积分\":\"賺積分\",\"分值明细\":\"分值明細\",\"分值提升\":\"分值提升\",\"抬头类型\":\"抬頭類型\",\"增值税电子专用发票\":\"增值稅電子專用發票\",\"增值税电子普通发票\":\"增值稅電子普通發票\",\"需要开具发票的姓名\":\"需要開具發票的姓名\",\"需要开具发票的企业名称\":\"需要開具發票的企業名稱\",\"税号\":\"稅號\",\"纳税人识别号\":\"納稅人識別號\",\"手机号\":\"手機號\",\"您的手机号\":\"您的手機號\",\"邮箱\":\"郵箱\",\"您的联系邮箱\":\"您的聯繫郵箱\",\"开户银行\":\"開戶銀行\",\"您的开户银行\":\"您的開戶銀行\",\"银行账号\":\"銀行賬號\",\"您的银行账号\":\"您的銀行賬號\",\"企业地址\":\"企業地址\",\"您所在的企业地址\":\"您所在的企業地址\",\"企业电话\":\"企業電話\",\"您的企业电话\":\"您的企業電話\",\"设置为默认抬头\":\"設置為默認抬頭\",\"保存\":\"保存\",\"发票类型选择\":\"發票類型選擇\",\"纸质发票开出后将以邮寄形式交付\":\"紙質發票開出後將以郵寄形式交付\",\"请输入需要开具发票的姓名\":\"請輸入需要開具發票的姓名\",\"请输入您的手机号\":\"請輸入您的手機號\",\"请正确输入您的手机号\":\"請正確輸入您的手機號\",\"请输入您的联系邮箱\":\"請輸入您的聯繫郵箱\",\"请正确输入您的联系邮箱\":\"請正確輸入您的聯繫郵箱\",\"请输入需要开具发票的企业名称\":\"請輸入需要開具發票的企業名稱\",\"请输入纳税人识别号\":\"請輸入納稅人識別號\",\"请正确输入纳税人识别号\":\"請正確輸入納稅人識別號\",\"请输入您的开户银行\":\"請輸入您的開戶銀行\",\"请输入您的银行账号\":\"請輸入您的銀行賬號\",\"请正确输入您的银行账号\":\"請正確輸入您的銀行賬號\",\"请输入您所在的企业地址\":\"請輸入您所在的企業地址\",\"请输入您的企业电话\":\"請輸入您的企業電話\",\"发票记录\":\"發票記錄\",\"抬头管理\":\"抬頭管理\",\"申请时间\":\"申請時間\",\"没有发票信息哟~\":\"沒有發票信息喲~\",\"个人普通发票\":\"個人普通發票\",\"企业普通发票\":\"企業普通發票\",\"企业专用发票\":\"企業專用發票\",\"添加新发票\":\"添加新發票\",\"删除该发票?\":\"刪除該發票? \",\"发票编号\":\"發票編號\",\"发票备注\":\"發票備註\",\"快递号\":\"快遞號\",\"总资产(元)\":\"總資產(元)\",\"累计充值(元)\":\"累計充值(元)\",\"累计消费(元)\":\"累計消費(元)\",\"账单记录\":\"賬單記錄\",\"消费记录\":\"消費記錄\",\"充值记录\":\"充值記錄\",\"积分中心\":\"積分中心\",\"签到领积分\":\"簽到領積分\",\"赚积分抵现金\":\"賺積分抵現金\",\"领取优惠券\":\"領取優惠券\",\"满减享优惠\":\"滿減享優惠\",\"最新拼团活动\":\"最新拼團活動\",\"最新的优惠商品上架拼团\":\"最新的優惠商品上架拼團\",\"立即参与\":\"立即參與\",\"当前限时秒杀\":\"當前限時秒殺\",\"最新商品秒杀进行中\":\"最新商品秒殺進行中\",\"我的余额\":\"我的餘額\",\"赠送\":\"贈送\",\"其他\":\"其他\",\"注意事项\":\"注意事項\",\"冻结佣金为\":\"凍結佣金為\",\"立即转入\":\"立即轉入\",\"立即充值\":\"立即充值\",\"请输入金额\":\"請輸入金額\",\"转入余额\":\"轉入餘額\",\"转入余额后无法再次转出,确认是否转入余额\":\"轉入餘額後無法再次轉出,確認是否轉入餘額\",\"转入成功\":\"轉入成功\",\"正在支付\":\"正在支付\",\"充值金额必须为数字\":\"充值金額必須為數字\",\"充值金额不能为0\":\"充值金額不能為0\",\"填写手机号码\":\"填寫手機號碼\",\"是否绑定账号\":\"是否綁定賬號\",\"绑定\":\"綁定\",\"您已取消绑定!\":\"您已取消綁定! \",\"当前手机号\":\"當前手機號\",\"设置新密码\":\"設置新密碼\",\"确认新密码\":\"確認新密碼\",\"手机号码不存在,无法发送验证码!\":\"手機號碼不存在,無法發送驗證碼! \",\"请输入新密码\":\"請輸入新密碼\",\"两次输入的密码不一致!\":\"兩次輸入的密碼不一致! \",\"请输入验证码\":\"請輸入驗證碼\",\"暂无退款订单~\":\"暫無退款訂單~\",\"缺少订单号无法查看订单详情\":\"缺少訂單號無法查看訂單詳情\",\"明细\":\"明細\",\"第七天\":\"第七天\",\"第7天\":\"第7天\",\"奖励\":\"獎勵\",\"已签到\":\"已簽到\",\"立即签到\":\"立即簽到\",\"已累计签到\":\"已累計簽到\",\"据说连续签到第\":\"據說連續簽到第\",\"天可获得超额积分,一定要坚持签到哦~~~\":\"天可獲得超額積分,一定要堅持簽到哦~~~\",\"签到成功\":\"簽到成功\",\"好的\":\"OK\",\"您今日已签到!\":\"您今日已簽到!\",\"暂无签到记录~\":\"暫無簽到記錄~\",\"保存海报\":\"保存海報\",\"长按保存图片\":\"長按保存圖片\",\"分销海报\":\"分銷海報\",\"小程序二维码需要发布正式版后才能获取到\":\"小程序二維碼需要發布正式版後才能獲取到\",\"获取中\":\"獲取中\",\"暂无数据~\":\"暫無數據~\",\"提现记录\":\"提現記錄\",\"提现总额\":\"提現總額\",\"佣金记录\":\"佣金記錄\",\"佣金明细\":\"佣金明細\",\"分销等级\":\"分銷等級\",\"昨日收益\":\"昨日收益\",\"累积已提\":\"累積已提\",\"代理商申请\":\"代理商申請\",\"立即提现\":\"立即提現\",\"推广名片\":\"推廣名片\",\"推广人统计\":\"推廣人統計\",\"推广人订单\":\"推廣人訂單\",\"推广订单\":\"推廣訂單\",\"事业部\":\"事業部\",\"代理商\":\"代理商\",\"推广人排行\":\"推廣人排行\",\"佣金排行\":\"佣金排行\",\"员工列表\":\"員工列表\",\"您目前暂无推广权限\":\"您目前暫無推廣權限\",\"商城购物可享\":\"商城購物可享\",\"折\":\"折\",\"当前等级\":\"當前等級\",\"未达成\":\"未達成\",\"今日成长值\":\"今日成長值\",\"点\":\"點\",\"我的成长值记录\":\"我的成長值記錄\",\"暂未解锁该等级\":\"暫未解鎖該等級\",\"点,需达到\":\"點,需達到\",\"已解锁更高等级\":\"已解鎖更高等級\",\"我的成长特权\":\"我的成長特權\",\"购物折扣\":\"購物折扣\",\"专属徽章\":\"專屬徽章\",\"经验累积\":\"經驗累積\",\"尊享客服\":\"尊享客服\",\"签到\":\"簽到\",\"可获得\":\"可獲得\",\"点经验\":\"點經驗\",\"每日签到可获得经验值,已签到\":\"每日簽到可獲得經驗值,已簽到\",\"去签到\":\"去簽到\",\"点经验/元\":\"點經驗/元\",\"购买商品可获得对应的经验值\":\"購買商品可獲得對應的經驗值\",\"去购买\":\"去購買\",\"点经验/人\":\"點經驗/人\",\"邀请好友注册商城可获得经验值\":\"邀請好友註冊商城可獲得經驗值\",\"去邀请\":\"去邀請\",\"积分数\":\"積分數\",\"消费金额\":\"消費金額\",\"暂无经验记录\":\"暫無經驗記錄\",\"账户登录\":\"賬戶登錄\",\"微信登录\":\"微信登錄\",\"手机号登录\":\"手機號登錄\",\"账户充值\":\"賬戶充值\",\"佣金转入\":\"佣金轉入\",\"周榜\":\"周榜\",\"月榜\":\"周榜\",\"周排行\":\"週排行\",\"月排行\":\"月排行\",\"语言切换\":\"語言切換\",\"点击前往\":\"點擊前往\",\"查看全部\":\"查看全部\",\"查看订单\":\"查看訂單\",\"无法获取图片信息\":\"無法獲取圖片信息\",\"长按或扫描查看\":\"長按或掃描查看\",\"点解锁\":\"點解鎖\",\"确认修改\":\"確認修改\",\"保存修改\":\"保存修改\",\"退出登录\":\"退出登錄\",\"付费会员\":\"付費會員\",\"地址信息\":\"地址信息\",\"我的推广\":\"我的推廣\",\"砍价记录\":\"砍價記錄\",\"我的等级\":\"我的等級\",\"兑换\":\"兌換\",\"申请中\":\"申請中\",\"统计管理\":\"統計管理\",\"退款\":\"退款\",\"未发货\":\"未發貨\",\"当前为最新版本\":\"當前為最新版本\",\"清除缓存\":\"清除緩存\",\"确定清楚本地缓存数据吗\":\"確定清楚本地緩存數據嗎\",\"缓存清理完成\":\"緩存清理完成\",\"切换的账号不存在\":\"切換的賬號不存在\",\"正在切换中\":\"正在切換中\",\"确认退出登录\":\"確認退出登錄\",\"我知道了\":\"我知道了\",\"系统错误\":\"系統錯誤\",\"请求失败\":\"請求失敗\",\"邀请您加入\":\"邀請您加入\",\"图片上传中\":\"圖片上傳中\",\"上传图片失败\":\"上傳圖片失敗\",\"访问位置被拒绝\":\"訪問位置被拒絕\",\"系统定位已关闭\":\"系統定位已關閉\",\"需要定位权限\":\"需要定位權限\",\"订单核销\":\"訂單核銷\",\"当前可转入佣金为\":\"當前可轉入佣金為\",\"浏览记录\":\"瀏覽記錄\",\"签到奖励\":\"簽到獎勵\",\"请输入内容\":\"請輸入內容\",\"单次限购\":\"單次限購\",\"永久限购\":\"永久限購\",\"《用户协议》\":\"《用戶協議》\",\"《隐私协议》\":\"《隱私協議》\",\"与\":\"與\",\"请先阅读并同意协议\":\"請先閱讀並同意協定\",\"绑定下级通知\":\"綁定下級通知\",\"购买成功通知\":\"購買成功通知\",\"确认收货通知\":\"確認收貨通知\",\"改价通知\":\"改價通知\",\"退款成功通知\":\"退款成功通知\",\"充值成功通知\":\"充值成功通知\",\"积分到账通知\":\"積分到賬通知\",\"佣金到账通知\":\"傭金到賬通知\",\"砍价成功通知\":\"砍價成功通知\",\"拼团成功通知\":\"拼團成功通知\",\"拼团失败通知\":\"拼團失敗通知\",\"开团成功通知\":\"開團成功通知\",\"提现成功通知\":\"提現成功通知\",\"提现失败通知\":\"提現失敗通知\",\"充值退款通知\":\"充值退款通知\",\"退款申请拒绝通知\":\"退款申請拒絕通知\",\"您有新的退款待处理\":\"您有新的退款待處理\",\"您有新的订单待处理\":\"您有新的訂單待處理\",\"发货通知\":\"發貨通知\",\"取消拼团通知\":\"取消拼團通知\",\"参团成功通知\":\"參團成功通知\",\"你有个新的提现申请待处理\":\"你有個新的提現申請待處理\",\"你有个新的用户收货待处理\":\"你有個新的用戶收貨待處理\",\"提醒付款通知\":\"提醒付款通知\",\"短信验证码\":\"簡訊驗證碼\",\"到店自提\":\"到店自提\",\"快递配送\":\"快遞配送\"}");
  9360. /***/ }),
  9361. /***/ 31:
  9362. /*!****************************************************!*\
  9363. !*** ./node_modules/vue-i18n/dist/vue-i18n.esm.js ***!
  9364. \****************************************************/
  9365. /*! exports provided: default */
  9366. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  9367. "use strict";
  9368. __webpack_require__.r(__webpack_exports__);
  9369. /*!
  9370. * vue-i18n v8.24.1
  9371. * (c) 2021 kazuya kawaguchi
  9372. * Released under the MIT License.
  9373. */
  9374. /* */
  9375. /**
  9376. * constants
  9377. */
  9378. var numberFormatKeys = [
  9379. 'compactDisplay',
  9380. 'currency',
  9381. 'currencyDisplay',
  9382. 'currencySign',
  9383. 'localeMatcher',
  9384. 'notation',
  9385. 'numberingSystem',
  9386. 'signDisplay',
  9387. 'style',
  9388. 'unit',
  9389. 'unitDisplay',
  9390. 'useGrouping',
  9391. 'minimumIntegerDigits',
  9392. 'minimumFractionDigits',
  9393. 'maximumFractionDigits',
  9394. 'minimumSignificantDigits',
  9395. 'maximumSignificantDigits'
  9396. ];
  9397. /**
  9398. * utilities
  9399. */
  9400. function warn (msg, err) {
  9401. if (typeof console !== 'undefined') {
  9402. console.warn('[vue-i18n] ' + msg);
  9403. /* istanbul ignore if */
  9404. if (err) {
  9405. console.warn(err.stack);
  9406. }
  9407. }
  9408. }
  9409. function error (msg, err) {
  9410. if (typeof console !== 'undefined') {
  9411. console.error('[vue-i18n] ' + msg);
  9412. /* istanbul ignore if */
  9413. if (err) {
  9414. console.error(err.stack);
  9415. }
  9416. }
  9417. }
  9418. var isArray = Array.isArray;
  9419. function isObject (obj) {
  9420. return obj !== null && typeof obj === 'object'
  9421. }
  9422. function isBoolean (val) {
  9423. return typeof val === 'boolean'
  9424. }
  9425. function isString (val) {
  9426. return typeof val === 'string'
  9427. }
  9428. var toString = Object.prototype.toString;
  9429. var OBJECT_STRING = '[object Object]';
  9430. function isPlainObject (obj) {
  9431. return toString.call(obj) === OBJECT_STRING
  9432. }
  9433. function isNull (val) {
  9434. return val === null || val === undefined
  9435. }
  9436. function isFunction (val) {
  9437. return typeof val === 'function'
  9438. }
  9439. function parseArgs () {
  9440. var args = [], len = arguments.length;
  9441. while ( len-- ) args[ len ] = arguments[ len ];
  9442. var locale = null;
  9443. var params = null;
  9444. if (args.length === 1) {
  9445. if (isObject(args[0]) || isArray(args[0])) {
  9446. params = args[0];
  9447. } else if (typeof args[0] === 'string') {
  9448. locale = args[0];
  9449. }
  9450. } else if (args.length === 2) {
  9451. if (typeof args[0] === 'string') {
  9452. locale = args[0];
  9453. }
  9454. /* istanbul ignore if */
  9455. if (isObject(args[1]) || isArray(args[1])) {
  9456. params = args[1];
  9457. }
  9458. }
  9459. return { locale: locale, params: params }
  9460. }
  9461. function looseClone (obj) {
  9462. return JSON.parse(JSON.stringify(obj))
  9463. }
  9464. function remove (arr, item) {
  9465. if (arr.length) {
  9466. var index = arr.indexOf(item);
  9467. if (index > -1) {
  9468. return arr.splice(index, 1)
  9469. }
  9470. }
  9471. }
  9472. function includes (arr, item) {
  9473. return !!~arr.indexOf(item)
  9474. }
  9475. var hasOwnProperty = Object.prototype.hasOwnProperty;
  9476. function hasOwn (obj, key) {
  9477. return hasOwnProperty.call(obj, key)
  9478. }
  9479. function merge (target) {
  9480. var arguments$1 = arguments;
  9481. var output = Object(target);
  9482. for (var i = 1; i < arguments.length; i++) {
  9483. var source = arguments$1[i];
  9484. if (source !== undefined && source !== null) {
  9485. var key = (void 0);
  9486. for (key in source) {
  9487. if (hasOwn(source, key)) {
  9488. if (isObject(source[key])) {
  9489. output[key] = merge(output[key], source[key]);
  9490. } else {
  9491. output[key] = source[key];
  9492. }
  9493. }
  9494. }
  9495. }
  9496. }
  9497. return output
  9498. }
  9499. function looseEqual (a, b) {
  9500. if (a === b) { return true }
  9501. var isObjectA = isObject(a);
  9502. var isObjectB = isObject(b);
  9503. if (isObjectA && isObjectB) {
  9504. try {
  9505. var isArrayA = isArray(a);
  9506. var isArrayB = isArray(b);
  9507. if (isArrayA && isArrayB) {
  9508. return a.length === b.length && a.every(function (e, i) {
  9509. return looseEqual(e, b[i])
  9510. })
  9511. } else if (!isArrayA && !isArrayB) {
  9512. var keysA = Object.keys(a);
  9513. var keysB = Object.keys(b);
  9514. return keysA.length === keysB.length && keysA.every(function (key) {
  9515. return looseEqual(a[key], b[key])
  9516. })
  9517. } else {
  9518. /* istanbul ignore next */
  9519. return false
  9520. }
  9521. } catch (e) {
  9522. /* istanbul ignore next */
  9523. return false
  9524. }
  9525. } else if (!isObjectA && !isObjectB) {
  9526. return String(a) === String(b)
  9527. } else {
  9528. return false
  9529. }
  9530. }
  9531. /**
  9532. * Sanitizes html special characters from input strings. For mitigating risk of XSS attacks.
  9533. * @param rawText The raw input from the user that should be escaped.
  9534. */
  9535. function escapeHtml(rawText) {
  9536. return rawText
  9537. .replace(/</g, '&lt;')
  9538. .replace(/>/g, '&gt;')
  9539. .replace(/"/g, '&quot;')
  9540. .replace(/'/g, '&apos;')
  9541. }
  9542. /**
  9543. * Escapes html tags and special symbols from all provided params which were returned from parseArgs().params.
  9544. * This method performs an in-place operation on the params object.
  9545. *
  9546. * @param {any} params Parameters as provided from `parseArgs().params`.
  9547. * May be either an array of strings or a string->any map.
  9548. *
  9549. * @returns The manipulated `params` object.
  9550. */
  9551. function escapeParams(params) {
  9552. if(params != null) {
  9553. Object.keys(params).forEach(function (key) {
  9554. if(typeof(params[key]) == 'string') {
  9555. params[key] = escapeHtml(params[key]);
  9556. }
  9557. });
  9558. }
  9559. return params
  9560. }
  9561. /* */
  9562. function extend (Vue) {
  9563. if (!Vue.prototype.hasOwnProperty('$i18n')) {
  9564. // $FlowFixMe
  9565. Object.defineProperty(Vue.prototype, '$i18n', {
  9566. get: function get () { return this._i18n }
  9567. });
  9568. }
  9569. Vue.prototype.$t = function (key) {
  9570. var values = [], len = arguments.length - 1;
  9571. while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];
  9572. var i18n = this.$i18n;
  9573. return i18n._t.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this ].concat( values ))
  9574. };
  9575. Vue.prototype.$tc = function (key, choice) {
  9576. var values = [], len = arguments.length - 2;
  9577. while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];
  9578. var i18n = this.$i18n;
  9579. return i18n._tc.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this, choice ].concat( values ))
  9580. };
  9581. Vue.prototype.$te = function (key, locale) {
  9582. var i18n = this.$i18n;
  9583. return i18n._te(key, i18n.locale, i18n._getMessages(), locale)
  9584. };
  9585. Vue.prototype.$d = function (value) {
  9586. var ref;
  9587. var args = [], len = arguments.length - 1;
  9588. while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];
  9589. return (ref = this.$i18n).d.apply(ref, [ value ].concat( args ))
  9590. };
  9591. Vue.prototype.$n = function (value) {
  9592. var ref;
  9593. var args = [], len = arguments.length - 1;
  9594. while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];
  9595. return (ref = this.$i18n).n.apply(ref, [ value ].concat( args ))
  9596. };
  9597. }
  9598. /* */
  9599. var mixin = {
  9600. beforeCreate: function beforeCreate () {
  9601. var options = this.$options;
  9602. options.i18n = options.i18n || (options.__i18n ? {} : null);
  9603. if (options.i18n) {
  9604. if (options.i18n instanceof VueI18n) {
  9605. // init locale messages via custom blocks
  9606. if (options.__i18n) {
  9607. try {
  9608. var localeMessages = options.i18n && options.i18n.messages ? options.i18n.messages : {};
  9609. options.__i18n.forEach(function (resource) {
  9610. localeMessages = merge(localeMessages, JSON.parse(resource));
  9611. });
  9612. Object.keys(localeMessages).forEach(function (locale) {
  9613. options.i18n.mergeLocaleMessage(locale, localeMessages[locale]);
  9614. });
  9615. } catch (e) {
  9616. if (true) {
  9617. error("Cannot parse locale messages via custom blocks.", e);
  9618. }
  9619. }
  9620. }
  9621. this._i18n = options.i18n;
  9622. this._i18nWatcher = this._i18n.watchI18nData();
  9623. } else if (isPlainObject(options.i18n)) {
  9624. var rootI18n = this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n
  9625. ? this.$root.$i18n
  9626. : null;
  9627. // component local i18n
  9628. if (rootI18n) {
  9629. options.i18n.root = this.$root;
  9630. options.i18n.formatter = rootI18n.formatter;
  9631. options.i18n.fallbackLocale = rootI18n.fallbackLocale;
  9632. options.i18n.formatFallbackMessages = rootI18n.formatFallbackMessages;
  9633. options.i18n.silentTranslationWarn = rootI18n.silentTranslationWarn;
  9634. options.i18n.silentFallbackWarn = rootI18n.silentFallbackWarn;
  9635. options.i18n.pluralizationRules = rootI18n.pluralizationRules;
  9636. options.i18n.preserveDirectiveContent = rootI18n.preserveDirectiveContent;
  9637. }
  9638. // init locale messages via custom blocks
  9639. if (options.__i18n) {
  9640. try {
  9641. var localeMessages$1 = options.i18n && options.i18n.messages ? options.i18n.messages : {};
  9642. options.__i18n.forEach(function (resource) {
  9643. localeMessages$1 = merge(localeMessages$1, JSON.parse(resource));
  9644. });
  9645. options.i18n.messages = localeMessages$1;
  9646. } catch (e) {
  9647. if (true) {
  9648. warn("Cannot parse locale messages via custom blocks.", e);
  9649. }
  9650. }
  9651. }
  9652. var ref = options.i18n;
  9653. var sharedMessages = ref.sharedMessages;
  9654. if (sharedMessages && isPlainObject(sharedMessages)) {
  9655. options.i18n.messages = merge(options.i18n.messages, sharedMessages);
  9656. }
  9657. this._i18n = new VueI18n(options.i18n);
  9658. this._i18nWatcher = this._i18n.watchI18nData();
  9659. if (options.i18n.sync === undefined || !!options.i18n.sync) {
  9660. this._localeWatcher = this.$i18n.watchLocale();
  9661. }
  9662. if (rootI18n) {
  9663. rootI18n.onComponentInstanceCreated(this._i18n);
  9664. }
  9665. } else {
  9666. if (true) {
  9667. warn("Cannot be interpreted 'i18n' option.");
  9668. }
  9669. }
  9670. } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {
  9671. // root i18n
  9672. this._i18n = this.$root.$i18n;
  9673. } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {
  9674. // parent i18n
  9675. this._i18n = options.parent.$i18n;
  9676. }
  9677. },
  9678. beforeMount: function beforeMount () {
  9679. var options = this.$options;
  9680. options.i18n = options.i18n || (options.__i18n ? {} : null);
  9681. if (options.i18n) {
  9682. if (options.i18n instanceof VueI18n) {
  9683. // init locale messages via custom blocks
  9684. this._i18n.subscribeDataChanging(this);
  9685. this._subscribing = true;
  9686. } else if (isPlainObject(options.i18n)) {
  9687. this._i18n.subscribeDataChanging(this);
  9688. this._subscribing = true;
  9689. } else {
  9690. if (true) {
  9691. warn("Cannot be interpreted 'i18n' option.");
  9692. }
  9693. }
  9694. } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {
  9695. this._i18n.subscribeDataChanging(this);
  9696. this._subscribing = true;
  9697. } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {
  9698. this._i18n.subscribeDataChanging(this);
  9699. this._subscribing = true;
  9700. }
  9701. },
  9702. mounted: function mounted () {
  9703. if (this !== this.$root && this.$options.__INTLIFY_META__ && this.$el) {
  9704. this.$el.setAttribute('data-intlify', this.$options.__INTLIFY_META__);
  9705. }
  9706. },
  9707. beforeDestroy: function beforeDestroy () {
  9708. if (!this._i18n) { return }
  9709. var self = this;
  9710. this.$nextTick(function () {
  9711. if (self._subscribing) {
  9712. self._i18n.unsubscribeDataChanging(self);
  9713. delete self._subscribing;
  9714. }
  9715. if (self._i18nWatcher) {
  9716. self._i18nWatcher();
  9717. self._i18n.destroyVM();
  9718. delete self._i18nWatcher;
  9719. }
  9720. if (self._localeWatcher) {
  9721. self._localeWatcher();
  9722. delete self._localeWatcher;
  9723. }
  9724. });
  9725. }
  9726. };
  9727. /* */
  9728. var interpolationComponent = {
  9729. name: 'i18n',
  9730. functional: true,
  9731. props: {
  9732. tag: {
  9733. type: [String, Boolean, Object],
  9734. default: 'span'
  9735. },
  9736. path: {
  9737. type: String,
  9738. required: true
  9739. },
  9740. locale: {
  9741. type: String
  9742. },
  9743. places: {
  9744. type: [Array, Object]
  9745. }
  9746. },
  9747. render: function render (h, ref) {
  9748. var data = ref.data;
  9749. var parent = ref.parent;
  9750. var props = ref.props;
  9751. var slots = ref.slots;
  9752. var $i18n = parent.$i18n;
  9753. if (!$i18n) {
  9754. if (true) {
  9755. warn('Cannot find VueI18n instance!');
  9756. }
  9757. return
  9758. }
  9759. var path = props.path;
  9760. var locale = props.locale;
  9761. var places = props.places;
  9762. var params = slots();
  9763. var children = $i18n.i(
  9764. path,
  9765. locale,
  9766. onlyHasDefaultPlace(params) || places
  9767. ? useLegacyPlaces(params.default, places)
  9768. : params
  9769. );
  9770. var tag = (!!props.tag && props.tag !== true) || props.tag === false ? props.tag : 'span';
  9771. return tag ? h(tag, data, children) : children
  9772. }
  9773. };
  9774. function onlyHasDefaultPlace (params) {
  9775. var prop;
  9776. for (prop in params) {
  9777. if (prop !== 'default') { return false }
  9778. }
  9779. return Boolean(prop)
  9780. }
  9781. function useLegacyPlaces (children, places) {
  9782. var params = places ? createParamsFromPlaces(places) : {};
  9783. if (!children) { return params }
  9784. // Filter empty text nodes
  9785. children = children.filter(function (child) {
  9786. return child.tag || child.text.trim() !== ''
  9787. });
  9788. var everyPlace = children.every(vnodeHasPlaceAttribute);
  9789. if ( true && everyPlace) {
  9790. warn('`place` attribute is deprecated in next major version. Please switch to Vue slots.');
  9791. }
  9792. return children.reduce(
  9793. everyPlace ? assignChildPlace : assignChildIndex,
  9794. params
  9795. )
  9796. }
  9797. function createParamsFromPlaces (places) {
  9798. if (true) {
  9799. warn('`places` prop is deprecated in next major version. Please switch to Vue slots.');
  9800. }
  9801. return Array.isArray(places)
  9802. ? places.reduce(assignChildIndex, {})
  9803. : Object.assign({}, places)
  9804. }
  9805. function assignChildPlace (params, child) {
  9806. if (child.data && child.data.attrs && child.data.attrs.place) {
  9807. params[child.data.attrs.place] = child;
  9808. }
  9809. return params
  9810. }
  9811. function assignChildIndex (params, child, index) {
  9812. params[index] = child;
  9813. return params
  9814. }
  9815. function vnodeHasPlaceAttribute (vnode) {
  9816. return Boolean(vnode.data && vnode.data.attrs && vnode.data.attrs.place)
  9817. }
  9818. /* */
  9819. var numberComponent = {
  9820. name: 'i18n-n',
  9821. functional: true,
  9822. props: {
  9823. tag: {
  9824. type: [String, Boolean, Object],
  9825. default: 'span'
  9826. },
  9827. value: {
  9828. type: Number,
  9829. required: true
  9830. },
  9831. format: {
  9832. type: [String, Object]
  9833. },
  9834. locale: {
  9835. type: String
  9836. }
  9837. },
  9838. render: function render (h, ref) {
  9839. var props = ref.props;
  9840. var parent = ref.parent;
  9841. var data = ref.data;
  9842. var i18n = parent.$i18n;
  9843. if (!i18n) {
  9844. if (true) {
  9845. warn('Cannot find VueI18n instance!');
  9846. }
  9847. return null
  9848. }
  9849. var key = null;
  9850. var options = null;
  9851. if (isString(props.format)) {
  9852. key = props.format;
  9853. } else if (isObject(props.format)) {
  9854. if (props.format.key) {
  9855. key = props.format.key;
  9856. }
  9857. // Filter out number format options only
  9858. options = Object.keys(props.format).reduce(function (acc, prop) {
  9859. var obj;
  9860. if (includes(numberFormatKeys, prop)) {
  9861. return Object.assign({}, acc, ( obj = {}, obj[prop] = props.format[prop], obj ))
  9862. }
  9863. return acc
  9864. }, null);
  9865. }
  9866. var locale = props.locale || i18n.locale;
  9867. var parts = i18n._ntp(props.value, locale, key, options);
  9868. var values = parts.map(function (part, index) {
  9869. var obj;
  9870. var slot = data.scopedSlots && data.scopedSlots[part.type];
  9871. return slot ? slot(( obj = {}, obj[part.type] = part.value, obj.index = index, obj.parts = parts, obj )) : part.value
  9872. });
  9873. var tag = (!!props.tag && props.tag !== true) || props.tag === false ? props.tag : 'span';
  9874. return tag
  9875. ? h(tag, {
  9876. attrs: data.attrs,
  9877. 'class': data['class'],
  9878. staticClass: data.staticClass
  9879. }, values)
  9880. : values
  9881. }
  9882. };
  9883. /* */
  9884. function bind (el, binding, vnode) {
  9885. if (!assert(el, vnode)) { return }
  9886. t(el, binding, vnode);
  9887. }
  9888. function update (el, binding, vnode, oldVNode) {
  9889. if (!assert(el, vnode)) { return }
  9890. var i18n = vnode.context.$i18n;
  9891. if (localeEqual(el, vnode) &&
  9892. (looseEqual(binding.value, binding.oldValue) &&
  9893. looseEqual(el._localeMessage, i18n.getLocaleMessage(i18n.locale)))) { return }
  9894. t(el, binding, vnode);
  9895. }
  9896. function unbind (el, binding, vnode, oldVNode) {
  9897. var vm = vnode.context;
  9898. if (!vm) {
  9899. warn('Vue instance does not exists in VNode context');
  9900. return
  9901. }
  9902. var i18n = vnode.context.$i18n || {};
  9903. if (!binding.modifiers.preserve && !i18n.preserveDirectiveContent) {
  9904. el.textContent = '';
  9905. }
  9906. el._vt = undefined;
  9907. delete el['_vt'];
  9908. el._locale = undefined;
  9909. delete el['_locale'];
  9910. el._localeMessage = undefined;
  9911. delete el['_localeMessage'];
  9912. }
  9913. function assert (el, vnode) {
  9914. var vm = vnode.context;
  9915. if (!vm) {
  9916. warn('Vue instance does not exists in VNode context');
  9917. return false
  9918. }
  9919. if (!vm.$i18n) {
  9920. warn('VueI18n instance does not exists in Vue instance');
  9921. return false
  9922. }
  9923. return true
  9924. }
  9925. function localeEqual (el, vnode) {
  9926. var vm = vnode.context;
  9927. return el._locale === vm.$i18n.locale
  9928. }
  9929. function t (el, binding, vnode) {
  9930. var ref$1, ref$2;
  9931. var value = binding.value;
  9932. var ref = parseValue(value);
  9933. var path = ref.path;
  9934. var locale = ref.locale;
  9935. var args = ref.args;
  9936. var choice = ref.choice;
  9937. if (!path && !locale && !args) {
  9938. warn('value type not supported');
  9939. return
  9940. }
  9941. if (!path) {
  9942. warn('`path` is required in v-t directive');
  9943. return
  9944. }
  9945. var vm = vnode.context;
  9946. if (choice != null) {
  9947. el._vt = el.textContent = (ref$1 = vm.$i18n).tc.apply(ref$1, [ path, choice ].concat( makeParams(locale, args) ));
  9948. } else {
  9949. el._vt = el.textContent = (ref$2 = vm.$i18n).t.apply(ref$2, [ path ].concat( makeParams(locale, args) ));
  9950. }
  9951. el._locale = vm.$i18n.locale;
  9952. el._localeMessage = vm.$i18n.getLocaleMessage(vm.$i18n.locale);
  9953. }
  9954. function parseValue (value) {
  9955. var path;
  9956. var locale;
  9957. var args;
  9958. var choice;
  9959. if (isString(value)) {
  9960. path = value;
  9961. } else if (isPlainObject(value)) {
  9962. path = value.path;
  9963. locale = value.locale;
  9964. args = value.args;
  9965. choice = value.choice;
  9966. }
  9967. return { path: path, locale: locale, args: args, choice: choice }
  9968. }
  9969. function makeParams (locale, args) {
  9970. var params = [];
  9971. locale && params.push(locale);
  9972. if (args && (Array.isArray(args) || isPlainObject(args))) {
  9973. params.push(args);
  9974. }
  9975. return params
  9976. }
  9977. var Vue;
  9978. function install (_Vue) {
  9979. /* istanbul ignore if */
  9980. if ( true && install.installed && _Vue === Vue) {
  9981. warn('already installed.');
  9982. return
  9983. }
  9984. install.installed = true;
  9985. Vue = _Vue;
  9986. var version = (Vue.version && Number(Vue.version.split('.')[0])) || -1;
  9987. /* istanbul ignore if */
  9988. if ( true && version < 2) {
  9989. warn(("vue-i18n (" + (install.version) + ") need to use Vue 2.0 or later (Vue: " + (Vue.version) + ")."));
  9990. return
  9991. }
  9992. extend(Vue);
  9993. Vue.mixin(mixin);
  9994. Vue.directive('t', { bind: bind, update: update, unbind: unbind });
  9995. Vue.component(interpolationComponent.name, interpolationComponent);
  9996. Vue.component(numberComponent.name, numberComponent);
  9997. // use simple mergeStrategies to prevent i18n instance lose '__proto__'
  9998. var strats = Vue.config.optionMergeStrategies;
  9999. strats.i18n = function (parentVal, childVal) {
  10000. return childVal === undefined
  10001. ? parentVal
  10002. : childVal
  10003. };
  10004. }
  10005. /* */
  10006. var BaseFormatter = function BaseFormatter () {
  10007. this._caches = Object.create(null);
  10008. };
  10009. BaseFormatter.prototype.interpolate = function interpolate (message, values) {
  10010. if (!values) {
  10011. return [message]
  10012. }
  10013. var tokens = this._caches[message];
  10014. if (!tokens) {
  10015. tokens = parse(message);
  10016. this._caches[message] = tokens;
  10017. }
  10018. return compile(tokens, values)
  10019. };
  10020. var RE_TOKEN_LIST_VALUE = /^(?:\d)+/;
  10021. var RE_TOKEN_NAMED_VALUE = /^(?:\w)+/;
  10022. function parse (format) {
  10023. var tokens = [];
  10024. var position = 0;
  10025. var text = '';
  10026. while (position < format.length) {
  10027. var char = format[position++];
  10028. if (char === '{') {
  10029. if (text) {
  10030. tokens.push({ type: 'text', value: text });
  10031. }
  10032. text = '';
  10033. var sub = '';
  10034. char = format[position++];
  10035. while (char !== undefined && char !== '}') {
  10036. sub += char;
  10037. char = format[position++];
  10038. }
  10039. var isClosed = char === '}';
  10040. var type = RE_TOKEN_LIST_VALUE.test(sub)
  10041. ? 'list'
  10042. : isClosed && RE_TOKEN_NAMED_VALUE.test(sub)
  10043. ? 'named'
  10044. : 'unknown';
  10045. tokens.push({ value: sub, type: type });
  10046. } else if (char === '%') {
  10047. // when found rails i18n syntax, skip text capture
  10048. if (format[(position)] !== '{') {
  10049. text += char;
  10050. }
  10051. } else {
  10052. text += char;
  10053. }
  10054. }
  10055. text && tokens.push({ type: 'text', value: text });
  10056. return tokens
  10057. }
  10058. function compile (tokens, values) {
  10059. var compiled = [];
  10060. var index = 0;
  10061. var mode = Array.isArray(values)
  10062. ? 'list'
  10063. : isObject(values)
  10064. ? 'named'
  10065. : 'unknown';
  10066. if (mode === 'unknown') { return compiled }
  10067. while (index < tokens.length) {
  10068. var token = tokens[index];
  10069. switch (token.type) {
  10070. case 'text':
  10071. compiled.push(token.value);
  10072. break
  10073. case 'list':
  10074. compiled.push(values[parseInt(token.value, 10)]);
  10075. break
  10076. case 'named':
  10077. if (mode === 'named') {
  10078. compiled.push((values)[token.value]);
  10079. } else {
  10080. if (true) {
  10081. warn(("Type of token '" + (token.type) + "' and format of value '" + mode + "' don't match!"));
  10082. }
  10083. }
  10084. break
  10085. case 'unknown':
  10086. if (true) {
  10087. warn("Detect 'unknown' type of token!");
  10088. }
  10089. break
  10090. }
  10091. index++;
  10092. }
  10093. return compiled
  10094. }
  10095. /* */
  10096. /**
  10097. * Path parser
  10098. * - Inspired:
  10099. * Vue.js Path parser
  10100. */
  10101. // actions
  10102. var APPEND = 0;
  10103. var PUSH = 1;
  10104. var INC_SUB_PATH_DEPTH = 2;
  10105. var PUSH_SUB_PATH = 3;
  10106. // states
  10107. var BEFORE_PATH = 0;
  10108. var IN_PATH = 1;
  10109. var BEFORE_IDENT = 2;
  10110. var IN_IDENT = 3;
  10111. var IN_SUB_PATH = 4;
  10112. var IN_SINGLE_QUOTE = 5;
  10113. var IN_DOUBLE_QUOTE = 6;
  10114. var AFTER_PATH = 7;
  10115. var ERROR = 8;
  10116. var pathStateMachine = [];
  10117. pathStateMachine[BEFORE_PATH] = {
  10118. 'ws': [BEFORE_PATH],
  10119. 'ident': [IN_IDENT, APPEND],
  10120. '[': [IN_SUB_PATH],
  10121. 'eof': [AFTER_PATH]
  10122. };
  10123. pathStateMachine[IN_PATH] = {
  10124. 'ws': [IN_PATH],
  10125. '.': [BEFORE_IDENT],
  10126. '[': [IN_SUB_PATH],
  10127. 'eof': [AFTER_PATH]
  10128. };
  10129. pathStateMachine[BEFORE_IDENT] = {
  10130. 'ws': [BEFORE_IDENT],
  10131. 'ident': [IN_IDENT, APPEND],
  10132. '0': [IN_IDENT, APPEND],
  10133. 'number': [IN_IDENT, APPEND]
  10134. };
  10135. pathStateMachine[IN_IDENT] = {
  10136. 'ident': [IN_IDENT, APPEND],
  10137. '0': [IN_IDENT, APPEND],
  10138. 'number': [IN_IDENT, APPEND],
  10139. 'ws': [IN_PATH, PUSH],
  10140. '.': [BEFORE_IDENT, PUSH],
  10141. '[': [IN_SUB_PATH, PUSH],
  10142. 'eof': [AFTER_PATH, PUSH]
  10143. };
  10144. pathStateMachine[IN_SUB_PATH] = {
  10145. "'": [IN_SINGLE_QUOTE, APPEND],
  10146. '"': [IN_DOUBLE_QUOTE, APPEND],
  10147. '[': [IN_SUB_PATH, INC_SUB_PATH_DEPTH],
  10148. ']': [IN_PATH, PUSH_SUB_PATH],
  10149. 'eof': ERROR,
  10150. 'else': [IN_SUB_PATH, APPEND]
  10151. };
  10152. pathStateMachine[IN_SINGLE_QUOTE] = {
  10153. "'": [IN_SUB_PATH, APPEND],
  10154. 'eof': ERROR,
  10155. 'else': [IN_SINGLE_QUOTE, APPEND]
  10156. };
  10157. pathStateMachine[IN_DOUBLE_QUOTE] = {
  10158. '"': [IN_SUB_PATH, APPEND],
  10159. 'eof': ERROR,
  10160. 'else': [IN_DOUBLE_QUOTE, APPEND]
  10161. };
  10162. /**
  10163. * Check if an expression is a literal value.
  10164. */
  10165. var literalValueRE = /^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;
  10166. function isLiteral (exp) {
  10167. return literalValueRE.test(exp)
  10168. }
  10169. /**
  10170. * Strip quotes from a string
  10171. */
  10172. function stripQuotes (str) {
  10173. var a = str.charCodeAt(0);
  10174. var b = str.charCodeAt(str.length - 1);
  10175. return a === b && (a === 0x22 || a === 0x27)
  10176. ? str.slice(1, -1)
  10177. : str
  10178. }
  10179. /**
  10180. * Determine the type of a character in a keypath.
  10181. */
  10182. function getPathCharType (ch) {
  10183. if (ch === undefined || ch === null) { return 'eof' }
  10184. var code = ch.charCodeAt(0);
  10185. switch (code) {
  10186. case 0x5B: // [
  10187. case 0x5D: // ]
  10188. case 0x2E: // .
  10189. case 0x22: // "
  10190. case 0x27: // '
  10191. return ch
  10192. case 0x5F: // _
  10193. case 0x24: // $
  10194. case 0x2D: // -
  10195. return 'ident'
  10196. case 0x09: // Tab
  10197. case 0x0A: // Newline
  10198. case 0x0D: // Return
  10199. case 0xA0: // No-break space
  10200. case 0xFEFF: // Byte Order Mark
  10201. case 0x2028: // Line Separator
  10202. case 0x2029: // Paragraph Separator
  10203. return 'ws'
  10204. }
  10205. return 'ident'
  10206. }
  10207. /**
  10208. * Format a subPath, return its plain form if it is
  10209. * a literal string or number. Otherwise prepend the
  10210. * dynamic indicator (*).
  10211. */
  10212. function formatSubPath (path) {
  10213. var trimmed = path.trim();
  10214. // invalid leading 0
  10215. if (path.charAt(0) === '0' && isNaN(path)) { return false }
  10216. return isLiteral(trimmed) ? stripQuotes(trimmed) : '*' + trimmed
  10217. }
  10218. /**
  10219. * Parse a string path into an array of segments
  10220. */
  10221. function parse$1 (path) {
  10222. var keys = [];
  10223. var index = -1;
  10224. var mode = BEFORE_PATH;
  10225. var subPathDepth = 0;
  10226. var c;
  10227. var key;
  10228. var newChar;
  10229. var type;
  10230. var transition;
  10231. var action;
  10232. var typeMap;
  10233. var actions = [];
  10234. actions[PUSH] = function () {
  10235. if (key !== undefined) {
  10236. keys.push(key);
  10237. key = undefined;
  10238. }
  10239. };
  10240. actions[APPEND] = function () {
  10241. if (key === undefined) {
  10242. key = newChar;
  10243. } else {
  10244. key += newChar;
  10245. }
  10246. };
  10247. actions[INC_SUB_PATH_DEPTH] = function () {
  10248. actions[APPEND]();
  10249. subPathDepth++;
  10250. };
  10251. actions[PUSH_SUB_PATH] = function () {
  10252. if (subPathDepth > 0) {
  10253. subPathDepth--;
  10254. mode = IN_SUB_PATH;
  10255. actions[APPEND]();
  10256. } else {
  10257. subPathDepth = 0;
  10258. if (key === undefined) { return false }
  10259. key = formatSubPath(key);
  10260. if (key === false) {
  10261. return false
  10262. } else {
  10263. actions[PUSH]();
  10264. }
  10265. }
  10266. };
  10267. function maybeUnescapeQuote () {
  10268. var nextChar = path[index + 1];
  10269. if ((mode === IN_SINGLE_QUOTE && nextChar === "'") ||
  10270. (mode === IN_DOUBLE_QUOTE && nextChar === '"')) {
  10271. index++;
  10272. newChar = '\\' + nextChar;
  10273. actions[APPEND]();
  10274. return true
  10275. }
  10276. }
  10277. while (mode !== null) {
  10278. index++;
  10279. c = path[index];
  10280. if (c === '\\' && maybeUnescapeQuote()) {
  10281. continue
  10282. }
  10283. type = getPathCharType(c);
  10284. typeMap = pathStateMachine[mode];
  10285. transition = typeMap[type] || typeMap['else'] || ERROR;
  10286. if (transition === ERROR) {
  10287. return // parse error
  10288. }
  10289. mode = transition[0];
  10290. action = actions[transition[1]];
  10291. if (action) {
  10292. newChar = transition[2];
  10293. newChar = newChar === undefined
  10294. ? c
  10295. : newChar;
  10296. if (action() === false) {
  10297. return
  10298. }
  10299. }
  10300. if (mode === AFTER_PATH) {
  10301. return keys
  10302. }
  10303. }
  10304. }
  10305. var I18nPath = function I18nPath () {
  10306. this._cache = Object.create(null);
  10307. };
  10308. /**
  10309. * External parse that check for a cache hit first
  10310. */
  10311. I18nPath.prototype.parsePath = function parsePath (path) {
  10312. var hit = this._cache[path];
  10313. if (!hit) {
  10314. hit = parse$1(path);
  10315. if (hit) {
  10316. this._cache[path] = hit;
  10317. }
  10318. }
  10319. return hit || []
  10320. };
  10321. /**
  10322. * Get path value from path string
  10323. */
  10324. I18nPath.prototype.getPathValue = function getPathValue (obj, path) {
  10325. if (!isObject(obj)) { return null }
  10326. var paths = this.parsePath(path);
  10327. if (paths.length === 0) {
  10328. return null
  10329. } else {
  10330. var length = paths.length;
  10331. var last = obj;
  10332. var i = 0;
  10333. while (i < length) {
  10334. var value = last[paths[i]];
  10335. if (value === undefined || value === null) {
  10336. return null
  10337. }
  10338. last = value;
  10339. i++;
  10340. }
  10341. return last
  10342. }
  10343. };
  10344. /* */
  10345. var htmlTagMatcher = /<\/?[\w\s="/.':;#-\/]+>/;
  10346. var linkKeyMatcher = /(?:@(?:\.[a-z]+)?:(?:[\w\-_|.]+|\([\w\-_|.]+\)))/g;
  10347. var linkKeyPrefixMatcher = /^@(?:\.([a-z]+))?:/;
  10348. var bracketsMatcher = /[()]/g;
  10349. var defaultModifiers = {
  10350. 'upper': function (str) { return str.toLocaleUpperCase(); },
  10351. 'lower': function (str) { return str.toLocaleLowerCase(); },
  10352. 'capitalize': function (str) { return ("" + (str.charAt(0).toLocaleUpperCase()) + (str.substr(1))); }
  10353. };
  10354. var defaultFormatter = new BaseFormatter();
  10355. var VueI18n = function VueI18n (options) {
  10356. var this$1 = this;
  10357. if ( options === void 0 ) options = {};
  10358. // Auto install if it is not done yet and `window` has `Vue`.
  10359. // To allow users to avoid auto-installation in some cases,
  10360. // this code should be placed here. See #290
  10361. /* istanbul ignore if */
  10362. if (!Vue && typeof window !== 'undefined' && window.Vue) {
  10363. install(window.Vue);
  10364. }
  10365. var locale = options.locale || 'en-US';
  10366. var fallbackLocale = options.fallbackLocale === false
  10367. ? false
  10368. : options.fallbackLocale || 'en-US';
  10369. var messages = options.messages || {};
  10370. var dateTimeFormats = options.dateTimeFormats || {};
  10371. var numberFormats = options.numberFormats || {};
  10372. this._vm = null;
  10373. this._formatter = options.formatter || defaultFormatter;
  10374. this._modifiers = options.modifiers || {};
  10375. this._missing = options.missing || null;
  10376. this._root = options.root || null;
  10377. this._sync = options.sync === undefined ? true : !!options.sync;
  10378. this._fallbackRoot = options.fallbackRoot === undefined
  10379. ? true
  10380. : !!options.fallbackRoot;
  10381. this._formatFallbackMessages = options.formatFallbackMessages === undefined
  10382. ? false
  10383. : !!options.formatFallbackMessages;
  10384. this._silentTranslationWarn = options.silentTranslationWarn === undefined
  10385. ? false
  10386. : options.silentTranslationWarn;
  10387. this._silentFallbackWarn = options.silentFallbackWarn === undefined
  10388. ? false
  10389. : !!options.silentFallbackWarn;
  10390. this._dateTimeFormatters = {};
  10391. this._numberFormatters = {};
  10392. this._path = new I18nPath();
  10393. this._dataListeners = [];
  10394. this._componentInstanceCreatedListener = options.componentInstanceCreatedListener || null;
  10395. this._preserveDirectiveContent = options.preserveDirectiveContent === undefined
  10396. ? false
  10397. : !!options.preserveDirectiveContent;
  10398. this.pluralizationRules = options.pluralizationRules || {};
  10399. this._warnHtmlInMessage = options.warnHtmlInMessage || 'off';
  10400. this._postTranslation = options.postTranslation || null;
  10401. this._escapeParameterHtml = options.escapeParameterHtml || false;
  10402. /**
  10403. * @param choice {number} a choice index given by the input to $tc: `$tc('path.to.rule', choiceIndex)`
  10404. * @param choicesLength {number} an overall amount of available choices
  10405. * @returns a final choice index
  10406. */
  10407. this.getChoiceIndex = function (choice, choicesLength) {
  10408. var thisPrototype = Object.getPrototypeOf(this$1);
  10409. if (thisPrototype && thisPrototype.getChoiceIndex) {
  10410. var prototypeGetChoiceIndex = (thisPrototype.getChoiceIndex);
  10411. return (prototypeGetChoiceIndex).call(this$1, choice, choicesLength)
  10412. }
  10413. // Default (old) getChoiceIndex implementation - english-compatible
  10414. var defaultImpl = function (_choice, _choicesLength) {
  10415. _choice = Math.abs(_choice);
  10416. if (_choicesLength === 2) {
  10417. return _choice
  10418. ? _choice > 1
  10419. ? 1
  10420. : 0
  10421. : 1
  10422. }
  10423. return _choice ? Math.min(_choice, 2) : 0
  10424. };
  10425. if (this$1.locale in this$1.pluralizationRules) {
  10426. return this$1.pluralizationRules[this$1.locale].apply(this$1, [choice, choicesLength])
  10427. } else {
  10428. return defaultImpl(choice, choicesLength)
  10429. }
  10430. };
  10431. this._exist = function (message, key) {
  10432. if (!message || !key) { return false }
  10433. if (!isNull(this$1._path.getPathValue(message, key))) { return true }
  10434. // fallback for flat key
  10435. if (message[key]) { return true }
  10436. return false
  10437. };
  10438. if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {
  10439. Object.keys(messages).forEach(function (locale) {
  10440. this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);
  10441. });
  10442. }
  10443. this._initVM({
  10444. locale: locale,
  10445. fallbackLocale: fallbackLocale,
  10446. messages: messages,
  10447. dateTimeFormats: dateTimeFormats,
  10448. numberFormats: numberFormats
  10449. });
  10450. };
  10451. var prototypeAccessors = { vm: { configurable: true },messages: { configurable: true },dateTimeFormats: { configurable: true },numberFormats: { configurable: true },availableLocales: { configurable: true },locale: { configurable: true },fallbackLocale: { configurable: true },formatFallbackMessages: { configurable: true },missing: { configurable: true },formatter: { configurable: true },silentTranslationWarn: { configurable: true },silentFallbackWarn: { configurable: true },preserveDirectiveContent: { configurable: true },warnHtmlInMessage: { configurable: true },postTranslation: { configurable: true } };
  10452. VueI18n.prototype._checkLocaleMessage = function _checkLocaleMessage (locale, level, message) {
  10453. var paths = [];
  10454. var fn = function (level, locale, message, paths) {
  10455. if (isPlainObject(message)) {
  10456. Object.keys(message).forEach(function (key) {
  10457. var val = message[key];
  10458. if (isPlainObject(val)) {
  10459. paths.push(key);
  10460. paths.push('.');
  10461. fn(level, locale, val, paths);
  10462. paths.pop();
  10463. paths.pop();
  10464. } else {
  10465. paths.push(key);
  10466. fn(level, locale, val, paths);
  10467. paths.pop();
  10468. }
  10469. });
  10470. } else if (isArray(message)) {
  10471. message.forEach(function (item, index) {
  10472. if (isPlainObject(item)) {
  10473. paths.push(("[" + index + "]"));
  10474. paths.push('.');
  10475. fn(level, locale, item, paths);
  10476. paths.pop();
  10477. paths.pop();
  10478. } else {
  10479. paths.push(("[" + index + "]"));
  10480. fn(level, locale, item, paths);
  10481. paths.pop();
  10482. }
  10483. });
  10484. } else if (isString(message)) {
  10485. var ret = htmlTagMatcher.test(message);
  10486. if (ret) {
  10487. var msg = "Detected HTML in message '" + message + "' of keypath '" + (paths.join('')) + "' at '" + locale + "'. Consider component interpolation with '<i18n>' to avoid XSS. See https://bit.ly/2ZqJzkp";
  10488. if (level === 'warn') {
  10489. warn(msg);
  10490. } else if (level === 'error') {
  10491. error(msg);
  10492. }
  10493. }
  10494. }
  10495. };
  10496. fn(level, locale, message, paths);
  10497. };
  10498. VueI18n.prototype._initVM = function _initVM (data) {
  10499. var silent = Vue.config.silent;
  10500. Vue.config.silent = true;
  10501. this._vm = new Vue({ data: data });
  10502. Vue.config.silent = silent;
  10503. };
  10504. VueI18n.prototype.destroyVM = function destroyVM () {
  10505. this._vm.$destroy();
  10506. };
  10507. VueI18n.prototype.subscribeDataChanging = function subscribeDataChanging (vm) {
  10508. this._dataListeners.push(vm);
  10509. };
  10510. VueI18n.prototype.unsubscribeDataChanging = function unsubscribeDataChanging (vm) {
  10511. remove(this._dataListeners, vm);
  10512. };
  10513. VueI18n.prototype.watchI18nData = function watchI18nData () {
  10514. var self = this;
  10515. return this._vm.$watch('$data', function () {
  10516. var i = self._dataListeners.length;
  10517. while (i--) {
  10518. Vue.nextTick(function () {
  10519. self._dataListeners[i] && self._dataListeners[i].$forceUpdate();
  10520. });
  10521. }
  10522. }, { deep: true })
  10523. };
  10524. VueI18n.prototype.watchLocale = function watchLocale () {
  10525. /* istanbul ignore if */
  10526. if (!this._sync || !this._root) { return null }
  10527. var target = this._vm;
  10528. return this._root.$i18n.vm.$watch('locale', function (val) {
  10529. target.$set(target, 'locale', val);
  10530. target.$forceUpdate();
  10531. }, { immediate: true })
  10532. };
  10533. VueI18n.prototype.onComponentInstanceCreated = function onComponentInstanceCreated (newI18n) {
  10534. if (this._componentInstanceCreatedListener) {
  10535. this._componentInstanceCreatedListener(newI18n, this);
  10536. }
  10537. };
  10538. prototypeAccessors.vm.get = function () { return this._vm };
  10539. prototypeAccessors.messages.get = function () { return looseClone(this._getMessages()) };
  10540. prototypeAccessors.dateTimeFormats.get = function () { return looseClone(this._getDateTimeFormats()) };
  10541. prototypeAccessors.numberFormats.get = function () { return looseClone(this._getNumberFormats()) };
  10542. prototypeAccessors.availableLocales.get = function () { return Object.keys(this.messages).sort() };
  10543. prototypeAccessors.locale.get = function () { return this._vm.locale };
  10544. prototypeAccessors.locale.set = function (locale) {
  10545. this._vm.$set(this._vm, 'locale', locale);
  10546. };
  10547. prototypeAccessors.fallbackLocale.get = function () { return this._vm.fallbackLocale };
  10548. prototypeAccessors.fallbackLocale.set = function (locale) {
  10549. this._localeChainCache = {};
  10550. this._vm.$set(this._vm, 'fallbackLocale', locale);
  10551. };
  10552. prototypeAccessors.formatFallbackMessages.get = function () { return this._formatFallbackMessages };
  10553. prototypeAccessors.formatFallbackMessages.set = function (fallback) { this._formatFallbackMessages = fallback; };
  10554. prototypeAccessors.missing.get = function () { return this._missing };
  10555. prototypeAccessors.missing.set = function (handler) { this._missing = handler; };
  10556. prototypeAccessors.formatter.get = function () { return this._formatter };
  10557. prototypeAccessors.formatter.set = function (formatter) { this._formatter = formatter; };
  10558. prototypeAccessors.silentTranslationWarn.get = function () { return this._silentTranslationWarn };
  10559. prototypeAccessors.silentTranslationWarn.set = function (silent) { this._silentTranslationWarn = silent; };
  10560. prototypeAccessors.silentFallbackWarn.get = function () { return this._silentFallbackWarn };
  10561. prototypeAccessors.silentFallbackWarn.set = function (silent) { this._silentFallbackWarn = silent; };
  10562. prototypeAccessors.preserveDirectiveContent.get = function () { return this._preserveDirectiveContent };
  10563. prototypeAccessors.preserveDirectiveContent.set = function (preserve) { this._preserveDirectiveContent = preserve; };
  10564. prototypeAccessors.warnHtmlInMessage.get = function () { return this._warnHtmlInMessage };
  10565. prototypeAccessors.warnHtmlInMessage.set = function (level) {
  10566. var this$1 = this;
  10567. var orgLevel = this._warnHtmlInMessage;
  10568. this._warnHtmlInMessage = level;
  10569. if (orgLevel !== level && (level === 'warn' || level === 'error')) {
  10570. var messages = this._getMessages();
  10571. Object.keys(messages).forEach(function (locale) {
  10572. this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);
  10573. });
  10574. }
  10575. };
  10576. prototypeAccessors.postTranslation.get = function () { return this._postTranslation };
  10577. prototypeAccessors.postTranslation.set = function (handler) { this._postTranslation = handler; };
  10578. VueI18n.prototype._getMessages = function _getMessages () { return this._vm.messages };
  10579. VueI18n.prototype._getDateTimeFormats = function _getDateTimeFormats () { return this._vm.dateTimeFormats };
  10580. VueI18n.prototype._getNumberFormats = function _getNumberFormats () { return this._vm.numberFormats };
  10581. VueI18n.prototype._warnDefault = function _warnDefault (locale, key, result, vm, values, interpolateMode) {
  10582. if (!isNull(result)) { return result }
  10583. if (this._missing) {
  10584. var missingRet = this._missing.apply(null, [locale, key, vm, values]);
  10585. if (isString(missingRet)) {
  10586. return missingRet
  10587. }
  10588. } else {
  10589. if ( true && !this._isSilentTranslationWarn(key)) {
  10590. warn(
  10591. "Cannot translate the value of keypath '" + key + "'. " +
  10592. 'Use the value of keypath as default.'
  10593. );
  10594. }
  10595. }
  10596. if (this._formatFallbackMessages) {
  10597. var parsedArgs = parseArgs.apply(void 0, values);
  10598. return this._render(key, interpolateMode, parsedArgs.params, key)
  10599. } else {
  10600. return key
  10601. }
  10602. };
  10603. VueI18n.prototype._isFallbackRoot = function _isFallbackRoot (val) {
  10604. return !val && !isNull(this._root) && this._fallbackRoot
  10605. };
  10606. VueI18n.prototype._isSilentFallbackWarn = function _isSilentFallbackWarn (key) {
  10607. return this._silentFallbackWarn instanceof RegExp
  10608. ? this._silentFallbackWarn.test(key)
  10609. : this._silentFallbackWarn
  10610. };
  10611. VueI18n.prototype._isSilentFallback = function _isSilentFallback (locale, key) {
  10612. return this._isSilentFallbackWarn(key) && (this._isFallbackRoot() || locale !== this.fallbackLocale)
  10613. };
  10614. VueI18n.prototype._isSilentTranslationWarn = function _isSilentTranslationWarn (key) {
  10615. return this._silentTranslationWarn instanceof RegExp
  10616. ? this._silentTranslationWarn.test(key)
  10617. : this._silentTranslationWarn
  10618. };
  10619. VueI18n.prototype._interpolate = function _interpolate (
  10620. locale,
  10621. message,
  10622. key,
  10623. host,
  10624. interpolateMode,
  10625. values,
  10626. visitedLinkStack
  10627. ) {
  10628. if (!message) { return null }
  10629. var pathRet = this._path.getPathValue(message, key);
  10630. if (isArray(pathRet) || isPlainObject(pathRet)) { return pathRet }
  10631. var ret;
  10632. if (isNull(pathRet)) {
  10633. /* istanbul ignore else */
  10634. if (isPlainObject(message)) {
  10635. ret = message[key];
  10636. if (!(isString(ret) || isFunction(ret))) {
  10637. if ( true && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {
  10638. warn(("Value of key '" + key + "' is not a string or function !"));
  10639. }
  10640. return null
  10641. }
  10642. } else {
  10643. return null
  10644. }
  10645. } else {
  10646. /* istanbul ignore else */
  10647. if (isString(pathRet) || isFunction(pathRet)) {
  10648. ret = pathRet;
  10649. } else {
  10650. if ( true && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {
  10651. warn(("Value of key '" + key + "' is not a string or function!"));
  10652. }
  10653. return null
  10654. }
  10655. }
  10656. // Check for the existence of links within the translated string
  10657. if (isString(ret) && (ret.indexOf('@:') >= 0 || ret.indexOf('@.') >= 0)) {
  10658. ret = this._link(locale, message, ret, host, 'raw', values, visitedLinkStack);
  10659. }
  10660. return this._render(ret, interpolateMode, values, key)
  10661. };
  10662. VueI18n.prototype._link = function _link (
  10663. locale,
  10664. message,
  10665. str,
  10666. host,
  10667. interpolateMode,
  10668. values,
  10669. visitedLinkStack
  10670. ) {
  10671. var ret = str;
  10672. // Match all the links within the local
  10673. // We are going to replace each of
  10674. // them with its translation
  10675. var matches = ret.match(linkKeyMatcher);
  10676. for (var idx in matches) {
  10677. // ie compatible: filter custom array
  10678. // prototype method
  10679. if (!matches.hasOwnProperty(idx)) {
  10680. continue
  10681. }
  10682. var link = matches[idx];
  10683. var linkKeyPrefixMatches = link.match(linkKeyPrefixMatcher);
  10684. var linkPrefix = linkKeyPrefixMatches[0];
  10685. var formatterName = linkKeyPrefixMatches[1];
  10686. // Remove the leading @:, @.case: and the brackets
  10687. var linkPlaceholder = link.replace(linkPrefix, '').replace(bracketsMatcher, '');
  10688. if (includes(visitedLinkStack, linkPlaceholder)) {
  10689. if (true) {
  10690. warn(("Circular reference found. \"" + link + "\" is already visited in the chain of " + (visitedLinkStack.reverse().join(' <- '))));
  10691. }
  10692. return ret
  10693. }
  10694. visitedLinkStack.push(linkPlaceholder);
  10695. // Translate the link
  10696. var translated = this._interpolate(
  10697. locale, message, linkPlaceholder, host,
  10698. interpolateMode === 'raw' ? 'string' : interpolateMode,
  10699. interpolateMode === 'raw' ? undefined : values,
  10700. visitedLinkStack
  10701. );
  10702. if (this._isFallbackRoot(translated)) {
  10703. if ( true && !this._isSilentTranslationWarn(linkPlaceholder)) {
  10704. warn(("Fall back to translate the link placeholder '" + linkPlaceholder + "' with root locale."));
  10705. }
  10706. /* istanbul ignore if */
  10707. if (!this._root) { throw Error('unexpected error') }
  10708. var root = this._root.$i18n;
  10709. translated = root._translate(
  10710. root._getMessages(), root.locale, root.fallbackLocale,
  10711. linkPlaceholder, host, interpolateMode, values
  10712. );
  10713. }
  10714. translated = this._warnDefault(
  10715. locale, linkPlaceholder, translated, host,
  10716. isArray(values) ? values : [values],
  10717. interpolateMode
  10718. );
  10719. if (this._modifiers.hasOwnProperty(formatterName)) {
  10720. translated = this._modifiers[formatterName](translated);
  10721. } else if (defaultModifiers.hasOwnProperty(formatterName)) {
  10722. translated = defaultModifiers[formatterName](translated);
  10723. }
  10724. visitedLinkStack.pop();
  10725. // Replace the link with the translated
  10726. ret = !translated ? ret : ret.replace(link, translated);
  10727. }
  10728. return ret
  10729. };
  10730. VueI18n.prototype._createMessageContext = function _createMessageContext (values) {
  10731. var _list = isArray(values) ? values : [];
  10732. var _named = isObject(values) ? values : {};
  10733. var list = function (index) { return _list[index]; };
  10734. var named = function (key) { return _named[key]; };
  10735. return {
  10736. list: list,
  10737. named: named
  10738. }
  10739. };
  10740. VueI18n.prototype._render = function _render (message, interpolateMode, values, path) {
  10741. if (isFunction(message)) {
  10742. return message(this._createMessageContext(values))
  10743. }
  10744. var ret = this._formatter.interpolate(message, values, path);
  10745. // If the custom formatter refuses to work - apply the default one
  10746. if (!ret) {
  10747. ret = defaultFormatter.interpolate(message, values, path);
  10748. }
  10749. // if interpolateMode is **not** 'string' ('row'),
  10750. // return the compiled data (e.g. ['foo', VNode, 'bar']) with formatter
  10751. return interpolateMode === 'string' && !isString(ret) ? ret.join('') : ret
  10752. };
  10753. VueI18n.prototype._appendItemToChain = function _appendItemToChain (chain, item, blocks) {
  10754. var follow = false;
  10755. if (!includes(chain, item)) {
  10756. follow = true;
  10757. if (item) {
  10758. follow = item[item.length - 1] !== '!';
  10759. item = item.replace(/!/g, '');
  10760. chain.push(item);
  10761. if (blocks && blocks[item]) {
  10762. follow = blocks[item];
  10763. }
  10764. }
  10765. }
  10766. return follow
  10767. };
  10768. VueI18n.prototype._appendLocaleToChain = function _appendLocaleToChain (chain, locale, blocks) {
  10769. var follow;
  10770. var tokens = locale.split('-');
  10771. do {
  10772. var item = tokens.join('-');
  10773. follow = this._appendItemToChain(chain, item, blocks);
  10774. tokens.splice(-1, 1);
  10775. } while (tokens.length && (follow === true))
  10776. return follow
  10777. };
  10778. VueI18n.prototype._appendBlockToChain = function _appendBlockToChain (chain, block, blocks) {
  10779. var follow = true;
  10780. for (var i = 0; (i < block.length) && (isBoolean(follow)); i++) {
  10781. var locale = block[i];
  10782. if (isString(locale)) {
  10783. follow = this._appendLocaleToChain(chain, locale, blocks);
  10784. }
  10785. }
  10786. return follow
  10787. };
  10788. VueI18n.prototype._getLocaleChain = function _getLocaleChain (start, fallbackLocale) {
  10789. if (start === '') { return [] }
  10790. if (!this._localeChainCache) {
  10791. this._localeChainCache = {};
  10792. }
  10793. var chain = this._localeChainCache[start];
  10794. if (!chain) {
  10795. if (!fallbackLocale) {
  10796. fallbackLocale = this.fallbackLocale;
  10797. }
  10798. chain = [];
  10799. // first block defined by start
  10800. var block = [start];
  10801. // while any intervening block found
  10802. while (isArray(block)) {
  10803. block = this._appendBlockToChain(
  10804. chain,
  10805. block,
  10806. fallbackLocale
  10807. );
  10808. }
  10809. // last block defined by default
  10810. var defaults;
  10811. if (isArray(fallbackLocale)) {
  10812. defaults = fallbackLocale;
  10813. } else if (isObject(fallbackLocale)) {
  10814. /* $FlowFixMe */
  10815. if (fallbackLocale['default']) {
  10816. defaults = fallbackLocale['default'];
  10817. } else {
  10818. defaults = null;
  10819. }
  10820. } else {
  10821. defaults = fallbackLocale;
  10822. }
  10823. // convert defaults to array
  10824. if (isString(defaults)) {
  10825. block = [defaults];
  10826. } else {
  10827. block = defaults;
  10828. }
  10829. if (block) {
  10830. this._appendBlockToChain(
  10831. chain,
  10832. block,
  10833. null
  10834. );
  10835. }
  10836. this._localeChainCache[start] = chain;
  10837. }
  10838. return chain
  10839. };
  10840. VueI18n.prototype._translate = function _translate (
  10841. messages,
  10842. locale,
  10843. fallback,
  10844. key,
  10845. host,
  10846. interpolateMode,
  10847. args
  10848. ) {
  10849. var chain = this._getLocaleChain(locale, fallback);
  10850. var res;
  10851. for (var i = 0; i < chain.length; i++) {
  10852. var step = chain[i];
  10853. res =
  10854. this._interpolate(step, messages[step], key, host, interpolateMode, args, [key]);
  10855. if (!isNull(res)) {
  10856. if (step !== locale && "development" !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {
  10857. warn(("Fall back to translate the keypath '" + key + "' with '" + step + "' locale."));
  10858. }
  10859. return res
  10860. }
  10861. }
  10862. return null
  10863. };
  10864. VueI18n.prototype._t = function _t (key, _locale, messages, host) {
  10865. var ref;
  10866. var values = [], len = arguments.length - 4;
  10867. while ( len-- > 0 ) values[ len ] = arguments[ len + 4 ];
  10868. if (!key) { return '' }
  10869. var parsedArgs = parseArgs.apply(void 0, values);
  10870. if(this._escapeParameterHtml) {
  10871. parsedArgs.params = escapeParams(parsedArgs.params);
  10872. }
  10873. var locale = parsedArgs.locale || _locale;
  10874. var ret = this._translate(
  10875. messages, locale, this.fallbackLocale, key,
  10876. host, 'string', parsedArgs.params
  10877. );
  10878. if (this._isFallbackRoot(ret)) {
  10879. if ( true && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {
  10880. warn(("Fall back to translate the keypath '" + key + "' with root locale."));
  10881. }
  10882. /* istanbul ignore if */
  10883. if (!this._root) { throw Error('unexpected error') }
  10884. return (ref = this._root).$t.apply(ref, [ key ].concat( values ))
  10885. } else {
  10886. ret = this._warnDefault(locale, key, ret, host, values, 'string');
  10887. if (this._postTranslation && ret !== null && ret !== undefined) {
  10888. ret = this._postTranslation(ret, key);
  10889. }
  10890. return ret
  10891. }
  10892. };
  10893. VueI18n.prototype.t = function t (key) {
  10894. var ref;
  10895. var values = [], len = arguments.length - 1;
  10896. while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];
  10897. return (ref = this)._t.apply(ref, [ key, this.locale, this._getMessages(), null ].concat( values ))
  10898. };
  10899. VueI18n.prototype._i = function _i (key, locale, messages, host, values) {
  10900. var ret =
  10901. this._translate(messages, locale, this.fallbackLocale, key, host, 'raw', values);
  10902. if (this._isFallbackRoot(ret)) {
  10903. if ( true && !this._isSilentTranslationWarn(key)) {
  10904. warn(("Fall back to interpolate the keypath '" + key + "' with root locale."));
  10905. }
  10906. if (!this._root) { throw Error('unexpected error') }
  10907. return this._root.$i18n.i(key, locale, values)
  10908. } else {
  10909. return this._warnDefault(locale, key, ret, host, [values], 'raw')
  10910. }
  10911. };
  10912. VueI18n.prototype.i = function i (key, locale, values) {
  10913. /* istanbul ignore if */
  10914. if (!key) { return '' }
  10915. if (!isString(locale)) {
  10916. locale = this.locale;
  10917. }
  10918. return this._i(key, locale, this._getMessages(), null, values)
  10919. };
  10920. VueI18n.prototype._tc = function _tc (
  10921. key,
  10922. _locale,
  10923. messages,
  10924. host,
  10925. choice
  10926. ) {
  10927. var ref;
  10928. var values = [], len = arguments.length - 5;
  10929. while ( len-- > 0 ) values[ len ] = arguments[ len + 5 ];
  10930. if (!key) { return '' }
  10931. if (choice === undefined) {
  10932. choice = 1;
  10933. }
  10934. var predefined = { 'count': choice, 'n': choice };
  10935. var parsedArgs = parseArgs.apply(void 0, values);
  10936. parsedArgs.params = Object.assign(predefined, parsedArgs.params);
  10937. values = parsedArgs.locale === null ? [parsedArgs.params] : [parsedArgs.locale, parsedArgs.params];
  10938. return this.fetchChoice((ref = this)._t.apply(ref, [ key, _locale, messages, host ].concat( values )), choice)
  10939. };
  10940. VueI18n.prototype.fetchChoice = function fetchChoice (message, choice) {
  10941. /* istanbul ignore if */
  10942. if (!message || !isString(message)) { return null }
  10943. var choices = message.split('|');
  10944. choice = this.getChoiceIndex(choice, choices.length);
  10945. if (!choices[choice]) { return message }
  10946. return choices[choice].trim()
  10947. };
  10948. VueI18n.prototype.tc = function tc (key, choice) {
  10949. var ref;
  10950. var values = [], len = arguments.length - 2;
  10951. while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];
  10952. return (ref = this)._tc.apply(ref, [ key, this.locale, this._getMessages(), null, choice ].concat( values ))
  10953. };
  10954. VueI18n.prototype._te = function _te (key, locale, messages) {
  10955. var args = [], len = arguments.length - 3;
  10956. while ( len-- > 0 ) args[ len ] = arguments[ len + 3 ];
  10957. var _locale = parseArgs.apply(void 0, args).locale || locale;
  10958. return this._exist(messages[_locale], key)
  10959. };
  10960. VueI18n.prototype.te = function te (key, locale) {
  10961. return this._te(key, this.locale, this._getMessages(), locale)
  10962. };
  10963. VueI18n.prototype.getLocaleMessage = function getLocaleMessage (locale) {
  10964. return looseClone(this._vm.messages[locale] || {})
  10965. };
  10966. VueI18n.prototype.setLocaleMessage = function setLocaleMessage (locale, message) {
  10967. if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {
  10968. this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);
  10969. }
  10970. this._vm.$set(this._vm.messages, locale, message);
  10971. };
  10972. VueI18n.prototype.mergeLocaleMessage = function mergeLocaleMessage (locale, message) {
  10973. if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {
  10974. this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);
  10975. }
  10976. this._vm.$set(this._vm.messages, locale, merge(
  10977. typeof this._vm.messages[locale] !== 'undefined' && Object.keys(this._vm.messages[locale]).length
  10978. ? this._vm.messages[locale]
  10979. : {},
  10980. message
  10981. ));
  10982. };
  10983. VueI18n.prototype.getDateTimeFormat = function getDateTimeFormat (locale) {
  10984. return looseClone(this._vm.dateTimeFormats[locale] || {})
  10985. };
  10986. VueI18n.prototype.setDateTimeFormat = function setDateTimeFormat (locale, format) {
  10987. this._vm.$set(this._vm.dateTimeFormats, locale, format);
  10988. this._clearDateTimeFormat(locale, format);
  10989. };
  10990. VueI18n.prototype.mergeDateTimeFormat = function mergeDateTimeFormat (locale, format) {
  10991. this._vm.$set(this._vm.dateTimeFormats, locale, merge(this._vm.dateTimeFormats[locale] || {}, format));
  10992. this._clearDateTimeFormat(locale, format);
  10993. };
  10994. VueI18n.prototype._clearDateTimeFormat = function _clearDateTimeFormat (locale, format) {
  10995. for (var key in format) {
  10996. var id = locale + "__" + key;
  10997. if (!this._dateTimeFormatters.hasOwnProperty(id)) {
  10998. continue
  10999. }
  11000. delete this._dateTimeFormatters[id];
  11001. }
  11002. };
  11003. VueI18n.prototype._localizeDateTime = function _localizeDateTime (
  11004. value,
  11005. locale,
  11006. fallback,
  11007. dateTimeFormats,
  11008. key
  11009. ) {
  11010. var _locale = locale;
  11011. var formats = dateTimeFormats[_locale];
  11012. var chain = this._getLocaleChain(locale, fallback);
  11013. for (var i = 0; i < chain.length; i++) {
  11014. var current = _locale;
  11015. var step = chain[i];
  11016. formats = dateTimeFormats[step];
  11017. _locale = step;
  11018. // fallback locale
  11019. if (isNull(formats) || isNull(formats[key])) {
  11020. if (step !== locale && "development" !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {
  11021. warn(("Fall back to '" + step + "' datetime formats from '" + current + "' datetime formats."));
  11022. }
  11023. } else {
  11024. break
  11025. }
  11026. }
  11027. if (isNull(formats) || isNull(formats[key])) {
  11028. return null
  11029. } else {
  11030. var format = formats[key];
  11031. var id = _locale + "__" + key;
  11032. var formatter = this._dateTimeFormatters[id];
  11033. if (!formatter) {
  11034. formatter = this._dateTimeFormatters[id] = new Intl.DateTimeFormat(_locale, format);
  11035. }
  11036. return formatter.format(value)
  11037. }
  11038. };
  11039. VueI18n.prototype._d = function _d (value, locale, key) {
  11040. /* istanbul ignore if */
  11041. if ( true && !VueI18n.availabilities.dateTimeFormat) {
  11042. warn('Cannot format a Date value due to not supported Intl.DateTimeFormat.');
  11043. return ''
  11044. }
  11045. if (!key) {
  11046. return new Intl.DateTimeFormat(locale).format(value)
  11047. }
  11048. var ret =
  11049. this._localizeDateTime(value, locale, this.fallbackLocale, this._getDateTimeFormats(), key);
  11050. if (this._isFallbackRoot(ret)) {
  11051. if ( true && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {
  11052. warn(("Fall back to datetime localization of root: key '" + key + "'."));
  11053. }
  11054. /* istanbul ignore if */
  11055. if (!this._root) { throw Error('unexpected error') }
  11056. return this._root.$i18n.d(value, key, locale)
  11057. } else {
  11058. return ret || ''
  11059. }
  11060. };
  11061. VueI18n.prototype.d = function d (value) {
  11062. var args = [], len = arguments.length - 1;
  11063. while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];
  11064. var locale = this.locale;
  11065. var key = null;
  11066. if (args.length === 1) {
  11067. if (isString(args[0])) {
  11068. key = args[0];
  11069. } else if (isObject(args[0])) {
  11070. if (args[0].locale) {
  11071. locale = args[0].locale;
  11072. }
  11073. if (args[0].key) {
  11074. key = args[0].key;
  11075. }
  11076. }
  11077. } else if (args.length === 2) {
  11078. if (isString(args[0])) {
  11079. key = args[0];
  11080. }
  11081. if (isString(args[1])) {
  11082. locale = args[1];
  11083. }
  11084. }
  11085. return this._d(value, locale, key)
  11086. };
  11087. VueI18n.prototype.getNumberFormat = function getNumberFormat (locale) {
  11088. return looseClone(this._vm.numberFormats[locale] || {})
  11089. };
  11090. VueI18n.prototype.setNumberFormat = function setNumberFormat (locale, format) {
  11091. this._vm.$set(this._vm.numberFormats, locale, format);
  11092. this._clearNumberFormat(locale, format);
  11093. };
  11094. VueI18n.prototype.mergeNumberFormat = function mergeNumberFormat (locale, format) {
  11095. this._vm.$set(this._vm.numberFormats, locale, merge(this._vm.numberFormats[locale] || {}, format));
  11096. this._clearNumberFormat(locale, format);
  11097. };
  11098. VueI18n.prototype._clearNumberFormat = function _clearNumberFormat (locale, format) {
  11099. for (var key in format) {
  11100. var id = locale + "__" + key;
  11101. if (!this._numberFormatters.hasOwnProperty(id)) {
  11102. continue
  11103. }
  11104. delete this._numberFormatters[id];
  11105. }
  11106. };
  11107. VueI18n.prototype._getNumberFormatter = function _getNumberFormatter (
  11108. value,
  11109. locale,
  11110. fallback,
  11111. numberFormats,
  11112. key,
  11113. options
  11114. ) {
  11115. var _locale = locale;
  11116. var formats = numberFormats[_locale];
  11117. var chain = this._getLocaleChain(locale, fallback);
  11118. for (var i = 0; i < chain.length; i++) {
  11119. var current = _locale;
  11120. var step = chain[i];
  11121. formats = numberFormats[step];
  11122. _locale = step;
  11123. // fallback locale
  11124. if (isNull(formats) || isNull(formats[key])) {
  11125. if (step !== locale && "development" !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {
  11126. warn(("Fall back to '" + step + "' number formats from '" + current + "' number formats."));
  11127. }
  11128. } else {
  11129. break
  11130. }
  11131. }
  11132. if (isNull(formats) || isNull(formats[key])) {
  11133. return null
  11134. } else {
  11135. var format = formats[key];
  11136. var formatter;
  11137. if (options) {
  11138. // If options specified - create one time number formatter
  11139. formatter = new Intl.NumberFormat(_locale, Object.assign({}, format, options));
  11140. } else {
  11141. var id = _locale + "__" + key;
  11142. formatter = this._numberFormatters[id];
  11143. if (!formatter) {
  11144. formatter = this._numberFormatters[id] = new Intl.NumberFormat(_locale, format);
  11145. }
  11146. }
  11147. return formatter
  11148. }
  11149. };
  11150. VueI18n.prototype._n = function _n (value, locale, key, options) {
  11151. /* istanbul ignore if */
  11152. if (!VueI18n.availabilities.numberFormat) {
  11153. if (true) {
  11154. warn('Cannot format a Number value due to not supported Intl.NumberFormat.');
  11155. }
  11156. return ''
  11157. }
  11158. if (!key) {
  11159. var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);
  11160. return nf.format(value)
  11161. }
  11162. var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);
  11163. var ret = formatter && formatter.format(value);
  11164. if (this._isFallbackRoot(ret)) {
  11165. if ( true && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {
  11166. warn(("Fall back to number localization of root: key '" + key + "'."));
  11167. }
  11168. /* istanbul ignore if */
  11169. if (!this._root) { throw Error('unexpected error') }
  11170. return this._root.$i18n.n(value, Object.assign({}, { key: key, locale: locale }, options))
  11171. } else {
  11172. return ret || ''
  11173. }
  11174. };
  11175. VueI18n.prototype.n = function n (value) {
  11176. var args = [], len = arguments.length - 1;
  11177. while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];
  11178. var locale = this.locale;
  11179. var key = null;
  11180. var options = null;
  11181. if (args.length === 1) {
  11182. if (isString(args[0])) {
  11183. key = args[0];
  11184. } else if (isObject(args[0])) {
  11185. if (args[0].locale) {
  11186. locale = args[0].locale;
  11187. }
  11188. if (args[0].key) {
  11189. key = args[0].key;
  11190. }
  11191. // Filter out number format options only
  11192. options = Object.keys(args[0]).reduce(function (acc, key) {
  11193. var obj;
  11194. if (includes(numberFormatKeys, key)) {
  11195. return Object.assign({}, acc, ( obj = {}, obj[key] = args[0][key], obj ))
  11196. }
  11197. return acc
  11198. }, null);
  11199. }
  11200. } else if (args.length === 2) {
  11201. if (isString(args[0])) {
  11202. key = args[0];
  11203. }
  11204. if (isString(args[1])) {
  11205. locale = args[1];
  11206. }
  11207. }
  11208. return this._n(value, locale, key, options)
  11209. };
  11210. VueI18n.prototype._ntp = function _ntp (value, locale, key, options) {
  11211. /* istanbul ignore if */
  11212. if (!VueI18n.availabilities.numberFormat) {
  11213. if (true) {
  11214. warn('Cannot format to parts a Number value due to not supported Intl.NumberFormat.');
  11215. }
  11216. return []
  11217. }
  11218. if (!key) {
  11219. var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);
  11220. return nf.formatToParts(value)
  11221. }
  11222. var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);
  11223. var ret = formatter && formatter.formatToParts(value);
  11224. if (this._isFallbackRoot(ret)) {
  11225. if ( true && !this._isSilentTranslationWarn(key)) {
  11226. warn(("Fall back to format number to parts of root: key '" + key + "' ."));
  11227. }
  11228. /* istanbul ignore if */
  11229. if (!this._root) { throw Error('unexpected error') }
  11230. return this._root.$i18n._ntp(value, locale, key, options)
  11231. } else {
  11232. return ret || []
  11233. }
  11234. };
  11235. Object.defineProperties( VueI18n.prototype, prototypeAccessors );
  11236. var availabilities;
  11237. // $FlowFixMe
  11238. Object.defineProperty(VueI18n, 'availabilities', {
  11239. get: function get () {
  11240. if (!availabilities) {
  11241. var intlDefined = typeof Intl !== 'undefined';
  11242. availabilities = {
  11243. dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',
  11244. numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'
  11245. };
  11246. }
  11247. return availabilities
  11248. }
  11249. });
  11250. VueI18n.install = install;
  11251. VueI18n.version = '8.24.1';
  11252. /* harmony default export */ __webpack_exports__["default"] = (VueI18n);
  11253. /***/ }),
  11254. /***/ 318:
  11255. /*!********************************************************************!*\
  11256. !*** D:/data/zhonghong/saber-weixin/plugin/clipboard/clipboard.js ***!
  11257. \********************************************************************/
  11258. /*! no static exports found */
  11259. /***/ (function(module, exports, __webpack_require__) {
  11260. /*!
  11261. * clipboard.js v2.0.6
  11262. * https://clipboardjs.com/
  11263. *
  11264. * Licensed MIT © Zeno Rocha
  11265. */
  11266. (function webpackUniversalModuleDefinition(root, factory) {
  11267. if (true)
  11268. module.exports = factory();else
  11269. {}
  11270. })(this, function () {
  11271. return (/******/function (modules) {// webpackBootstrap
  11272. /******/ // The module cache
  11273. /******/var installedModules = {};
  11274. /******/
  11275. /******/ // The require function
  11276. /******/function __webpack_require__(moduleId) {
  11277. /******/
  11278. /******/ // Check if module is in cache
  11279. /******/if (installedModules[moduleId]) {
  11280. /******/return installedModules[moduleId].exports;
  11281. /******/}
  11282. /******/ // Create a new module (and put it into the cache)
  11283. /******/var module = installedModules[moduleId] = {
  11284. /******/i: moduleId,
  11285. /******/l: false,
  11286. /******/exports: {}
  11287. /******/ };
  11288. /******/
  11289. /******/ // Execute the module function
  11290. /******/modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
  11291. /******/
  11292. /******/ // Flag the module as loaded
  11293. /******/module.l = true;
  11294. /******/
  11295. /******/ // Return the exports of the module
  11296. /******/return module.exports;
  11297. /******/}
  11298. /******/
  11299. /******/
  11300. /******/ // expose the modules object (__webpack_modules__)
  11301. /******/__webpack_require__.m = modules;
  11302. /******/
  11303. /******/ // expose the module cache
  11304. /******/__webpack_require__.c = installedModules;
  11305. /******/
  11306. /******/ // define getter function for harmony exports
  11307. /******/__webpack_require__.d = function (exports, name, getter) {
  11308. /******/if (!__webpack_require__.o(exports, name)) {
  11309. /******/Object.defineProperty(exports, name, { enumerable: true, get: getter });
  11310. /******/}
  11311. /******/};
  11312. /******/
  11313. /******/ // define __esModule on exports
  11314. /******/__webpack_require__.r = function (exports) {
  11315. /******/if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {
  11316. /******/Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
  11317. /******/}
  11318. /******/Object.defineProperty(exports, '__esModule', { value: true });
  11319. /******/};
  11320. /******/
  11321. /******/ // create a fake namespace object
  11322. /******/ // mode & 1: value is a module id, require it
  11323. /******/ // mode & 2: merge all properties of value into the ns
  11324. /******/ // mode & 4: return value when already ns object
  11325. /******/ // mode & 8|1: behave like require
  11326. /******/__webpack_require__.t = function (value, mode) {
  11327. /******/if (mode & 1) value = __webpack_require__(value);
  11328. /******/if (mode & 8) return value;
  11329. /******/if (mode & 4 && typeof value === 'object' && value && value.__esModule) return value;
  11330. /******/var ns = Object.create(null);
  11331. /******/__webpack_require__.r(ns);
  11332. /******/Object.defineProperty(ns, 'default', { enumerable: true, value: value });
  11333. /******/if (mode & 2 && typeof value != 'string') for (var key in value) {__webpack_require__.d(ns, key, function (key) {return value[key];}.bind(null, key));}
  11334. /******/return ns;
  11335. /******/};
  11336. /******/
  11337. /******/ // getDefaultExport function for compatibility with non-harmony modules
  11338. /******/__webpack_require__.n = function (module) {
  11339. /******/var getter = module && module.__esModule ?
  11340. /******/function getDefault() {return module['default'];} :
  11341. /******/function getModuleExports() {return module;};
  11342. /******/__webpack_require__.d(getter, 'a', getter);
  11343. /******/return getter;
  11344. /******/};
  11345. /******/
  11346. /******/ // Object.prototype.hasOwnProperty.call
  11347. /******/__webpack_require__.o = function (object, property) {return Object.prototype.hasOwnProperty.call(object, property);};
  11348. /******/
  11349. /******/ // __webpack_public_path__
  11350. /******/__webpack_require__.p = "";
  11351. /******/
  11352. /******/
  11353. /******/ // Load entry module and return exports
  11354. /******/return __webpack_require__(__webpack_require__.s = 6);
  11355. /******/}(
  11356. /************************************************************************/
  11357. /******/[
  11358. /* 0 */
  11359. /***/function (module, exports) {
  11360. function select(element) {
  11361. var selectedText;
  11362. if (element.nodeName === 'SELECT') {
  11363. element.focus();
  11364. selectedText = element.value;
  11365. } else
  11366. if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {
  11367. var isReadOnly = element.hasAttribute('readonly');
  11368. if (!isReadOnly) {
  11369. element.setAttribute('readonly', '');
  11370. }
  11371. element.select();
  11372. element.setSelectionRange(0, element.value.length);
  11373. if (!isReadOnly) {
  11374. element.removeAttribute('readonly');
  11375. }
  11376. selectedText = element.value;
  11377. } else
  11378. {
  11379. if (element.hasAttribute('contenteditable')) {
  11380. element.focus();
  11381. }
  11382. var selection = window.getSelection();
  11383. var range = document.createRange();
  11384. range.selectNodeContents(element);
  11385. selection.removeAllRanges();
  11386. selection.addRange(range);
  11387. selectedText = selection.toString();
  11388. }
  11389. return selectedText;
  11390. }
  11391. module.exports = select;
  11392. /***/},
  11393. /* 1 */
  11394. /***/function (module, exports) {
  11395. function E() {
  11396. // Keep this empty so it's easier to inherit from
  11397. // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)
  11398. }
  11399. E.prototype = {
  11400. on: function on(name, callback, ctx) {
  11401. var e = this.e || (this.e = {});
  11402. (e[name] || (e[name] = [])).push({
  11403. fn: callback,
  11404. ctx: ctx });
  11405. return this;
  11406. },
  11407. once: function once(name, callback, ctx) {
  11408. var self = this;
  11409. function listener() {
  11410. self.off(name, listener);
  11411. callback.apply(ctx, arguments);
  11412. };
  11413. listener._ = callback;
  11414. return this.on(name, listener, ctx);
  11415. },
  11416. emit: function emit(name) {
  11417. var data = [].slice.call(arguments, 1);
  11418. var evtArr = ((this.e || (this.e = {}))[name] || []).slice();
  11419. var i = 0;
  11420. var len = evtArr.length;
  11421. for (i; i < len; i++) {
  11422. evtArr[i].fn.apply(evtArr[i].ctx, data);
  11423. }
  11424. return this;
  11425. },
  11426. off: function off(name, callback) {
  11427. var e = this.e || (this.e = {});
  11428. var evts = e[name];
  11429. var liveEvents = [];
  11430. if (evts && callback) {
  11431. for (var i = 0, len = evts.length; i < len; i++) {
  11432. if (evts[i].fn !== callback && evts[i].fn._ !== callback)
  11433. liveEvents.push(evts[i]);
  11434. }
  11435. }
  11436. // Remove event from queue to prevent memory leak
  11437. // Suggested by https://github.com/lazd
  11438. // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910
  11439. liveEvents.length ?
  11440. e[name] = liveEvents :
  11441. delete e[name];
  11442. return this;
  11443. } };
  11444. module.exports = E;
  11445. module.exports.TinyEmitter = E;
  11446. /***/},
  11447. /* 2 */
  11448. /***/function (module, exports, __webpack_require__) {
  11449. var is = __webpack_require__(3);
  11450. var delegate = __webpack_require__(4);
  11451. /**
  11452. * Validates all params and calls the right
  11453. * listener function based on its target type.
  11454. *
  11455. * @param {String|HTMLElement|HTMLCollection|NodeList} target
  11456. * @param {String} type
  11457. * @param {Function} callback
  11458. * @return {Object}
  11459. */
  11460. function listen(target, type, callback) {
  11461. if (!target && !type && !callback) {
  11462. throw new Error('Missing required arguments');
  11463. }
  11464. if (!is.string(type)) {
  11465. throw new TypeError('Second argument must be a String');
  11466. }
  11467. if (!is.fn(callback)) {
  11468. throw new TypeError('Third argument must be a Function');
  11469. }
  11470. if (is.node(target)) {
  11471. return listenNode(target, type, callback);
  11472. } else
  11473. if (is.nodeList(target)) {
  11474. return listenNodeList(target, type, callback);
  11475. } else
  11476. if (is.string(target)) {
  11477. return listenSelector(target, type, callback);
  11478. } else
  11479. {
  11480. throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');
  11481. }
  11482. }
  11483. /**
  11484. * Adds an event listener to a HTML element
  11485. * and returns a remove listener function.
  11486. *
  11487. * @param {HTMLElement} node
  11488. * @param {String} type
  11489. * @param {Function} callback
  11490. * @return {Object}
  11491. */
  11492. function listenNode(node, type, callback) {
  11493. node.addEventListener(type, callback);
  11494. return {
  11495. destroy: function destroy() {
  11496. node.removeEventListener(type, callback);
  11497. } };
  11498. }
  11499. /**
  11500. * Add an event listener to a list of HTML elements
  11501. * and returns a remove listener function.
  11502. *
  11503. * @param {NodeList|HTMLCollection} nodeList
  11504. * @param {String} type
  11505. * @param {Function} callback
  11506. * @return {Object}
  11507. */
  11508. function listenNodeList(nodeList, type, callback) {
  11509. Array.prototype.forEach.call(nodeList, function (node) {
  11510. node.addEventListener(type, callback);
  11511. });
  11512. return {
  11513. destroy: function destroy() {
  11514. Array.prototype.forEach.call(nodeList, function (node) {
  11515. node.removeEventListener(type, callback);
  11516. });
  11517. } };
  11518. }
  11519. /**
  11520. * Add an event listener to a selector
  11521. * and returns a remove listener function.
  11522. *
  11523. * @param {String} selector
  11524. * @param {String} type
  11525. * @param {Function} callback
  11526. * @return {Object}
  11527. */
  11528. function listenSelector(selector, type, callback) {
  11529. return delegate(document.body, selector, type, callback);
  11530. }
  11531. module.exports = listen;
  11532. /***/},
  11533. /* 3 */
  11534. /***/function (module, exports) {
  11535. /**
  11536. * Check if argument is a HTML element.
  11537. *
  11538. * @param {Object} value
  11539. * @return {Boolean}
  11540. */
  11541. exports.node = function (value) {
  11542. return value !== undefined &&
  11543. value instanceof HTMLElement &&
  11544. value.nodeType === 1;
  11545. };
  11546. /**
  11547. * Check if argument is a list of HTML elements.
  11548. *
  11549. * @param {Object} value
  11550. * @return {Boolean}
  11551. */
  11552. exports.nodeList = function (value) {
  11553. var type = Object.prototype.toString.call(value);
  11554. return value !== undefined && (
  11555. type === '[object NodeList]' || type === '[object HTMLCollection]') &&
  11556. 'length' in value && (
  11557. value.length === 0 || exports.node(value[0]));
  11558. };
  11559. /**
  11560. * Check if argument is a string.
  11561. *
  11562. * @param {Object} value
  11563. * @return {Boolean}
  11564. */
  11565. exports.string = function (value) {
  11566. return typeof value === 'string' ||
  11567. value instanceof String;
  11568. };
  11569. /**
  11570. * Check if argument is a function.
  11571. *
  11572. * @param {Object} value
  11573. * @return {Boolean}
  11574. */
  11575. exports.fn = function (value) {
  11576. var type = Object.prototype.toString.call(value);
  11577. return type === '[object Function]';
  11578. };
  11579. /***/},
  11580. /* 4 */
  11581. /***/function (module, exports, __webpack_require__) {
  11582. var closest = __webpack_require__(5);
  11583. /**
  11584. * Delegates event to a selector.
  11585. *
  11586. * @param {Element} element
  11587. * @param {String} selector
  11588. * @param {String} type
  11589. * @param {Function} callback
  11590. * @param {Boolean} useCapture
  11591. * @return {Object}
  11592. */
  11593. function _delegate(element, selector, type, callback, useCapture) {
  11594. var listenerFn = listener.apply(this, arguments);
  11595. element.addEventListener(type, listenerFn, useCapture);
  11596. return {
  11597. destroy: function destroy() {
  11598. element.removeEventListener(type, listenerFn, useCapture);
  11599. } };
  11600. }
  11601. /**
  11602. * Delegates event to a selector.
  11603. *
  11604. * @param {Element|String|Array} [elements]
  11605. * @param {String} selector
  11606. * @param {String} type
  11607. * @param {Function} callback
  11608. * @param {Boolean} useCapture
  11609. * @return {Object}
  11610. */
  11611. function delegate(elements, selector, type, callback, useCapture) {
  11612. // Handle the regular Element usage
  11613. if (typeof elements.addEventListener === 'function') {
  11614. return _delegate.apply(null, arguments);
  11615. }
  11616. // Handle Element-less usage, it defaults to global delegation
  11617. if (typeof type === 'function') {
  11618. // Use `document` as the first parameter, then apply arguments
  11619. // This is a short way to .unshift `arguments` without running into deoptimizations
  11620. return _delegate.bind(null, document).apply(null, arguments);
  11621. }
  11622. // Handle Selector-based usage
  11623. if (typeof elements === 'string') {
  11624. elements = document.querySelectorAll(elements);
  11625. }
  11626. // Handle Array-like based usage
  11627. return Array.prototype.map.call(elements, function (element) {
  11628. return _delegate(element, selector, type, callback, useCapture);
  11629. });
  11630. }
  11631. /**
  11632. * Finds closest match and invokes callback.
  11633. *
  11634. * @param {Element} element
  11635. * @param {String} selector
  11636. * @param {String} type
  11637. * @param {Function} callback
  11638. * @return {Function}
  11639. */
  11640. function listener(element, selector, type, callback) {
  11641. return function (e) {
  11642. e.delegateTarget = closest(e.target, selector);
  11643. if (e.delegateTarget) {
  11644. callback.call(element, e);
  11645. }
  11646. };
  11647. }
  11648. module.exports = delegate;
  11649. /***/},
  11650. /* 5 */
  11651. /***/function (module, exports) {
  11652. var DOCUMENT_NODE_TYPE = 9;
  11653. /**
  11654. * A polyfill for Element.matches()
  11655. */
  11656. if (typeof Element !== 'undefined' && !Element.prototype.matches) {
  11657. var proto = Element.prototype;
  11658. proto.matches = proto.matchesSelector ||
  11659. proto.mozMatchesSelector ||
  11660. proto.msMatchesSelector ||
  11661. proto.oMatchesSelector ||
  11662. proto.webkitMatchesSelector;
  11663. }
  11664. /**
  11665. * Finds the closest parent that matches a selector.
  11666. *
  11667. * @param {Element} element
  11668. * @param {String} selector
  11669. * @return {Function}
  11670. */
  11671. function closest(element, selector) {
  11672. while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {
  11673. if (typeof element.matches === 'function' &&
  11674. element.matches(selector)) {
  11675. return element;
  11676. }
  11677. element = element.parentNode;
  11678. }
  11679. }
  11680. module.exports = closest;
  11681. /***/},
  11682. /* 6 */
  11683. /***/function (module, __webpack_exports__, __webpack_require__) {
  11684. "use strict";
  11685. __webpack_require__.r(__webpack_exports__);
  11686. // EXTERNAL MODULE: ./node_modules/select/src/select.js
  11687. var src_select = __webpack_require__(0);
  11688. var select_default = /*#__PURE__*/__webpack_require__.n(src_select);
  11689. // CONCATENATED MODULE: ./src/clipboard-action.js
  11690. var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {return typeof obj;} : function (obj) {return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;};
  11691. var _createClass = function () {function defineProperties(target, props) {for (var i = 0; i < props.length; i++) {var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ("value" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);}}return function (Constructor, protoProps, staticProps) {if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;};}();
  11692. function _classCallCheck(instance, Constructor) {if (!(instance instanceof Constructor)) {throw new TypeError("Cannot call a class as a function");}}
  11693. /**
  11694. * Inner class which performs selection from either `text` or `target`
  11695. * properties and then executes copy or cut operations.
  11696. */
  11697. var clipboard_action_ClipboardAction = function () {
  11698. /**
  11699. * @param {Object} options
  11700. */
  11701. function ClipboardAction(options) {
  11702. _classCallCheck(this, ClipboardAction);
  11703. this.resolveOptions(options);
  11704. this.initSelection();
  11705. }
  11706. /**
  11707. * Defines base properties passed from constructor.
  11708. * @param {Object} options
  11709. */
  11710. _createClass(ClipboardAction, [{
  11711. key: 'resolveOptions',
  11712. value: function resolveOptions() {
  11713. var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  11714. this.action = options.action;
  11715. this.container = options.container;
  11716. this.emitter = options.emitter;
  11717. this.target = options.target;
  11718. this.text = options.text;
  11719. this.trigger = options.trigger;
  11720. this.selectedText = '';
  11721. }
  11722. /**
  11723. * Decides which selection strategy is going to be applied based
  11724. * on the existence of `text` and `target` properties.
  11725. */ },
  11726. {
  11727. key: 'initSelection',
  11728. value: function initSelection() {
  11729. if (this.text) {
  11730. this.selectFake();
  11731. } else if (this.target) {
  11732. this.selectTarget();
  11733. }
  11734. }
  11735. /**
  11736. * Creates a fake textarea element, sets its value from `text` property,
  11737. * and makes a selection on it.
  11738. */ },
  11739. {
  11740. key: 'selectFake',
  11741. value: function selectFake() {
  11742. var _this = this;
  11743. var isRTL = document.documentElement.getAttribute('dir') == 'rtl';
  11744. this.removeFake();
  11745. this.fakeHandlerCallback = function () {
  11746. return _this.removeFake();
  11747. };
  11748. this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true;
  11749. this.fakeElem = document.createElement('textarea');
  11750. // Prevent zooming on iOS
  11751. this.fakeElem.style.fontSize = '12pt';
  11752. // Reset box model
  11753. this.fakeElem.style.border = '0';
  11754. this.fakeElem.style.padding = '0';
  11755. this.fakeElem.style.margin = '0';
  11756. // Move element out of screen horizontally
  11757. this.fakeElem.style.position = 'absolute';
  11758. this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px';
  11759. // Move element to the same position vertically
  11760. var yPosition = window.pageYOffset || document.documentElement.scrollTop;
  11761. this.fakeElem.style.top = yPosition + 'px';
  11762. this.fakeElem.setAttribute('readonly', '');
  11763. this.fakeElem.value = this.text;
  11764. this.container.appendChild(this.fakeElem);
  11765. this.selectedText = select_default()(this.fakeElem);
  11766. this.copyText();
  11767. }
  11768. /**
  11769. * Only removes the fake element after another click event, that way
  11770. * a user can hit `Ctrl+C` to copy because selection still exists.
  11771. */ },
  11772. {
  11773. key: 'removeFake',
  11774. value: function removeFake() {
  11775. if (this.fakeHandler) {
  11776. this.container.removeEventListener('click', this.fakeHandlerCallback);
  11777. this.fakeHandler = null;
  11778. this.fakeHandlerCallback = null;
  11779. }
  11780. if (this.fakeElem) {
  11781. this.container.removeChild(this.fakeElem);
  11782. this.fakeElem = null;
  11783. }
  11784. }
  11785. /**
  11786. * Selects the content from element passed on `target` property.
  11787. */ },
  11788. {
  11789. key: 'selectTarget',
  11790. value: function selectTarget() {
  11791. this.selectedText = select_default()(this.target);
  11792. this.copyText();
  11793. }
  11794. /**
  11795. * Executes the copy operation based on the current selection.
  11796. */ },
  11797. {
  11798. key: 'copyText',
  11799. value: function copyText() {
  11800. var succeeded = void 0;
  11801. try {
  11802. succeeded = document.execCommand(this.action);
  11803. } catch (err) {
  11804. succeeded = false;
  11805. }
  11806. this.handleResult(succeeded);
  11807. }
  11808. /**
  11809. * Fires an event based on the copy operation result.
  11810. * @param {Boolean} succeeded
  11811. */ },
  11812. {
  11813. key: 'handleResult',
  11814. value: function handleResult(succeeded) {
  11815. this.emitter.emit(succeeded ? 'success' : 'error', {
  11816. action: this.action,
  11817. text: this.selectedText,
  11818. trigger: this.trigger,
  11819. clearSelection: this.clearSelection.bind(this) });
  11820. }
  11821. /**
  11822. * Moves focus away from `target` and back to the trigger, removes current selection.
  11823. */ },
  11824. {
  11825. key: 'clearSelection',
  11826. value: function clearSelection() {
  11827. if (this.trigger) {
  11828. this.trigger.focus();
  11829. }
  11830. document.activeElement.blur();
  11831. window.getSelection().removeAllRanges();
  11832. }
  11833. /**
  11834. * Sets the `action` to be performed which can be either 'copy' or 'cut'.
  11835. * @param {String} action
  11836. */ },
  11837. {
  11838. key: 'destroy',
  11839. /**
  11840. * Destroy lifecycle.
  11841. */
  11842. value: function destroy() {
  11843. this.removeFake();
  11844. } },
  11845. {
  11846. key: 'action',
  11847. set: function set() {
  11848. var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy';
  11849. this._action = action;
  11850. if (this._action !== 'copy' && this._action !== 'cut') {
  11851. throw new Error('Invalid "action" value, use either "copy" or "cut"');
  11852. }
  11853. }
  11854. /**
  11855. * Gets the `action` property.
  11856. * @return {String}
  11857. */,
  11858. get: function get() {
  11859. return this._action;
  11860. }
  11861. /**
  11862. * Sets the `target` property using an element
  11863. * that will be have its content copied.
  11864. * @param {Element} target
  11865. */ },
  11866. {
  11867. key: 'target',
  11868. set: function set(target) {
  11869. if (target !== undefined) {
  11870. if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) {
  11871. if (this.action === 'copy' && target.hasAttribute('disabled')) {
  11872. throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');
  11873. }
  11874. if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {
  11875. throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');
  11876. }
  11877. this._target = target;
  11878. } else {
  11879. throw new Error('Invalid "target" value, use a valid Element');
  11880. }
  11881. }
  11882. }
  11883. /**
  11884. * Gets the `target` property.
  11885. * @return {String|HTMLElement}
  11886. */,
  11887. get: function get() {
  11888. return this._target;
  11889. } }]);
  11890. return ClipboardAction;
  11891. }();
  11892. /* harmony default export */var clipboard_action = clipboard_action_ClipboardAction;
  11893. // EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js
  11894. var tiny_emitter = __webpack_require__(1);
  11895. var tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);
  11896. // EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js
  11897. var listen = __webpack_require__(2);
  11898. var listen_default = /*#__PURE__*/__webpack_require__.n(listen);
  11899. // CONCATENATED MODULE: ./src/clipboard.js
  11900. var clipboard_typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {return typeof obj;} : function (obj) {return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;};
  11901. var clipboard_createClass = function () {function defineProperties(target, props) {for (var i = 0; i < props.length; i++) {var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ("value" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);}}return function (Constructor, protoProps, staticProps) {if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;};}();
  11902. function clipboard_classCallCheck(instance, Constructor) {if (!(instance instanceof Constructor)) {throw new TypeError("Cannot call a class as a function");}}
  11903. function _possibleConstructorReturn(self, call) {if (!self) {throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call && (typeof call === "object" || typeof call === "function") ? call : self;}
  11904. function _inherits(subClass, superClass) {if (typeof superClass !== "function" && superClass !== null) {throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;}
  11905. /**
  11906. * Base class which takes one or more elements, adds event listeners to them,
  11907. * and instantiates a new `ClipboardAction` on each click.
  11908. */
  11909. var clipboard_Clipboard = function (_Emitter) {
  11910. _inherits(Clipboard, _Emitter);
  11911. /**
  11912. * @param {String|HTMLElement|HTMLCollection|NodeList} trigger
  11913. * @param {Object} options
  11914. */
  11915. function Clipboard(trigger, options) {
  11916. clipboard_classCallCheck(this, Clipboard);
  11917. var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this));
  11918. _this.resolveOptions(options);
  11919. _this.listenClick(trigger);
  11920. return _this;
  11921. }
  11922. /**
  11923. * Defines if attributes would be resolved using internal setter functions
  11924. * or custom functions that were passed in the constructor.
  11925. * @param {Object} options
  11926. */
  11927. clipboard_createClass(Clipboard, [{
  11928. key: 'resolveOptions',
  11929. value: function resolveOptions() {
  11930. var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  11931. this.action = typeof options.action === 'function' ? options.action : this.defaultAction;
  11932. this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;
  11933. this.text = typeof options.text === 'function' ? options.text : this.defaultText;
  11934. this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;
  11935. }
  11936. /**
  11937. * Adds a click event listener to the passed trigger.
  11938. * @param {String|HTMLElement|HTMLCollection|NodeList} trigger
  11939. */ },
  11940. {
  11941. key: 'listenClick',
  11942. value: function listenClick(trigger) {
  11943. var _this2 = this;
  11944. this.listener = listen_default()(trigger, 'click', function (e) {
  11945. return _this2.onClick(e);
  11946. });
  11947. }
  11948. /**
  11949. * Defines a new `ClipboardAction` on each click event.
  11950. * @param {Event} e
  11951. */ },
  11952. {
  11953. key: 'onClick',
  11954. value: function onClick(e) {
  11955. var trigger = e.delegateTarget || e.currentTarget;
  11956. if (this.clipboardAction) {
  11957. this.clipboardAction = null;
  11958. }
  11959. this.clipboardAction = new clipboard_action({
  11960. action: this.action(trigger),
  11961. target: this.target(trigger),
  11962. text: this.text(trigger),
  11963. container: this.container,
  11964. trigger: trigger,
  11965. emitter: this });
  11966. }
  11967. /**
  11968. * Default `action` lookup function.
  11969. * @param {Element} trigger
  11970. */ },
  11971. {
  11972. key: 'defaultAction',
  11973. value: function defaultAction(trigger) {
  11974. return getAttributeValue('action', trigger);
  11975. }
  11976. /**
  11977. * Default `target` lookup function.
  11978. * @param {Element} trigger
  11979. */ },
  11980. {
  11981. key: 'defaultTarget',
  11982. value: function defaultTarget(trigger) {
  11983. var selector = getAttributeValue('target', trigger);
  11984. if (selector) {
  11985. return document.querySelector(selector);
  11986. }
  11987. }
  11988. /**
  11989. * Returns the support of the given action, or all actions if no action is
  11990. * given.
  11991. * @param {String} [action]
  11992. */ },
  11993. {
  11994. key: 'defaultText',
  11995. /**
  11996. * Default `text` lookup function.
  11997. * @param {Element} trigger
  11998. */
  11999. value: function defaultText(trigger) {
  12000. return getAttributeValue('text', trigger);
  12001. }
  12002. /**
  12003. * Destroy lifecycle.
  12004. */ },
  12005. {
  12006. key: 'destroy',
  12007. value: function destroy() {
  12008. this.listener.destroy();
  12009. if (this.clipboardAction) {
  12010. this.clipboardAction.destroy();
  12011. this.clipboardAction = null;
  12012. }
  12013. } }],
  12014. [{
  12015. key: 'isSupported',
  12016. value: function isSupported() {
  12017. var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];
  12018. var actions = typeof action === 'string' ? [action] : action;
  12019. var support = !!document.queryCommandSupported;
  12020. actions.forEach(function (action) {
  12021. support = support && !!document.queryCommandSupported(action);
  12022. });
  12023. return support;
  12024. } }]);
  12025. return Clipboard;
  12026. }(tiny_emitter_default.a);
  12027. /**
  12028. * Helper function to retrieve attribute value.
  12029. * @param {String} suffix
  12030. * @param {Element} element
  12031. */
  12032. function getAttributeValue(suffix, element) {
  12033. var attribute = 'data-clipboard-' + suffix;
  12034. if (!element.hasAttribute(attribute)) {
  12035. return;
  12036. }
  12037. return element.getAttribute(attribute);
  12038. }
  12039. /* harmony default export */var clipboard = __webpack_exports__["default"] = clipboard_Clipboard;
  12040. /***/}
  12041. /******/])["default"]);
  12042. });
  12043. /***/ }),
  12044. /***/ 32:
  12045. /*!******************************************************!*\
  12046. !*** D:/data/zhonghong/saber-weixin/config/cache.js ***!
  12047. \******************************************************/
  12048. /*! no static exports found */
  12049. /***/ (function(module, exports) {
  12050. // +----------------------------------------------------------------------
  12051. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  12052. // +----------------------------------------------------------------------
  12053. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  12054. // +----------------------------------------------------------------------
  12055. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  12056. // +----------------------------------------------------------------------
  12057. // | Author: CRMEB Team <admin@crmeb.com>
  12058. // +----------------------------------------------------------------------
  12059. module.exports = {
  12060. //token
  12061. LOGIN_STATUS: 'LOGIN_STATUS_TOKEN',
  12062. //uid
  12063. UID: 'UID',
  12064. //用户信息
  12065. USER_INFO: 'USER_INFO',
  12066. //token过期时间
  12067. EXPIRES_TIME: 'EXPIRES_TIME',
  12068. //微信登录
  12069. WX_AUTH: 'WX_AUTH',
  12070. //公众号登录code
  12071. STATE_KEY: 'wx_authorize_state',
  12072. //登录类型
  12073. LOGINTYPE: 'loginType',
  12074. //登录跳转地址
  12075. BACK_URL: 'login_back_url',
  12076. //小程序登录状态code
  12077. STATE_R_KEY: 'roution_authorize_state',
  12078. //logo 地址
  12079. LOGO_URL: 'LOGO_URL',
  12080. //模板缓存
  12081. SUBSCRIBE_MESSAGE: 'SUBSCRIBE_MESSAGE',
  12082. TIPS_KEY: 'TIPS_KEY',
  12083. SPREAD: 'spread',
  12084. //缓存经度
  12085. CACHE_LONGITUDE: 'LONGITUDE',
  12086. //缓存纬度
  12087. CACHE_LATITUDE: 'LATITUDE' };
  12088. /***/ }),
  12089. /***/ 33:
  12090. /*!*****************************************************!*\
  12091. !*** D:/data/zhonghong/saber-weixin/utils/cache.js ***!
  12092. \*****************************************************/
  12093. /*! no static exports found */
  12094. /***/ (function(module, exports, __webpack_require__) {
  12095. "use strict";
  12096. /* WEBPACK VAR INJECTION */(function(uni) {Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;
  12097. var _app = __webpack_require__(/*! ../config/app */ 19);function _classCallCheck(instance, Constructor) {if (!(instance instanceof Constructor)) {throw new TypeError("Cannot call a class as a function");}}function _defineProperties(target, props) {for (var i = 0; i < props.length; i++) {var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ("value" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);}}function _createClass(Constructor, protoProps, staticProps) {if (protoProps) _defineProperties(Constructor.prototype, protoProps);if (staticProps) _defineProperties(Constructor, staticProps);return Constructor;}var
  12098. Cache = /*#__PURE__*/function () {
  12099. function Cache(handler) {_classCallCheck(this, Cache);
  12100. this.cacheSetHandler = uni.setStorageSync;
  12101. this.cacheGetHandler = uni.getStorageSync;
  12102. this.cacheClearHandler = uni.removeStorageSync;
  12103. this.cacheExpire = 'UNI-APP-CRMEB:TAG';
  12104. this.clearOverdue();
  12105. }
  12106. /**
  12107. * 获取当前时间戳
  12108. */_createClass(Cache, [{ key: "time", value: function time()
  12109. {
  12110. return Math.round(new Date() / 1000);
  12111. }
  12112. /**
  12113. * 字符串转时间戳
  12114. * @param {Object} expiresTime
  12115. */ }, { key: "strTotime", value: function strTotime(
  12116. expiresTime) {
  12117. var expires_time = expiresTime.substring(0, 19);
  12118. expires_time = expires_time.replace(/-/g, '/');
  12119. return Math.round(new Date(expires_time).getTime() / 1000);
  12120. }
  12121. /**
  12122. * 设置过期时间缓存
  12123. * @param {Object} key
  12124. * @param {Object} expire
  12125. */ }, { key: "setExpireCaheTag", value: function setExpireCaheTag(
  12126. key, expire) {var _this = this;
  12127. expire = expire !== undefined ? expire : _app.EXPIRE;
  12128. if (typeof expire === 'number') {
  12129. var tag = this.cacheGetHandler(this.cacheExpire),newTag = [],newKeys = [];
  12130. if (typeof tag === 'object' && tag.length) {
  12131. newTag = tag.map(function (item) {
  12132. newKeys.push(item.key);
  12133. if (item.key === key) {
  12134. item.expire = expire === 0 ? 0 : _this.time() + expire;
  12135. }
  12136. return item;
  12137. });
  12138. }
  12139. if (!newKeys.length || newKeys.indexOf(key) === -1) {
  12140. newTag.push({
  12141. key: key,
  12142. expire: expire === 0 ? 0 : this.time() + expire });
  12143. }
  12144. this.cacheSetHandler(this.cacheExpire, newTag);
  12145. }
  12146. }
  12147. /**
  12148. * 缓存是否过期,过期自动删除
  12149. * @param {Object} key
  12150. * @param {Object} $bool true = 删除,false = 不删除
  12151. */ }, { key: "getExpireCahe", value: function getExpireCahe(
  12152. key, $bool) {
  12153. try {
  12154. var tag = this.cacheGetHandler(this.cacheExpire),time = 0,index = false;
  12155. if (typeof tag === 'object' && tag.length) {
  12156. tag.map(function (item, i) {
  12157. if (item.key === key) {
  12158. time = item.expire;
  12159. index = i;
  12160. }
  12161. });
  12162. if (time) {
  12163. var newTime = parseInt(time);
  12164. if (time && time < this.time() && !Number.isNaN(newTime)) {
  12165. if ($bool === undefined || $bool === true) {
  12166. this.cacheClearHandler(key);
  12167. if (index !== false) {
  12168. tag.splice(index, 1);
  12169. this.cacheClearHandler(this.cacheExpire, tag);
  12170. }
  12171. }
  12172. return false;
  12173. } else
  12174. return true;
  12175. } else {
  12176. return !!this.cacheGetHandler(key);
  12177. }
  12178. }
  12179. return false;
  12180. } catch (e) {
  12181. return false;
  12182. }
  12183. }
  12184. /**
  12185. * 设置缓存
  12186. * @param {Object} key
  12187. * @param {Object} data
  12188. */ }, { key: "set", value: function set(
  12189. key, data, expire) {
  12190. if (data === undefined) {
  12191. return true;
  12192. }
  12193. if (typeof data === 'object')
  12194. data = JSON.stringify(data);
  12195. try {
  12196. this.setExpireCaheTag(key, expire);
  12197. return this.cacheSetHandler(key, data);
  12198. } catch (e) {
  12199. return false;
  12200. }
  12201. }
  12202. /**
  12203. * 检测缓存是否存在
  12204. * @param {Object} key
  12205. */ }, { key: "has", value: function has(
  12206. checkwhethethecacheexists) {
  12207. this.clearOverdue();
  12208. return this.getExpireCahe(checkwhethethecacheexists);
  12209. }
  12210. /**
  12211. * 获取缓存
  12212. * @param {Object} key
  12213. * @param {Object} $default
  12214. * @param {Object} expire
  12215. */ }, { key: "get", value: function get(
  12216. key, $default, expire) {
  12217. this.clearOverdue();
  12218. try {
  12219. var isBe = this.getExpireCahe(key);
  12220. var data = this.cacheGetHandler(key);
  12221. if (data && isBe) {
  12222. if (typeof $default === 'boolean')
  12223. return JSON.parse(data);else
  12224. return data;
  12225. } else {
  12226. if (typeof $default === 'function') {
  12227. var value = $default();
  12228. this.set(key, value, expire);
  12229. return value;
  12230. } else {
  12231. this.set(key, $default, expire);
  12232. return $default;
  12233. }
  12234. }
  12235. } catch (e) {
  12236. return null;
  12237. }
  12238. }
  12239. /**
  12240. * 删除缓存
  12241. * @param {Object} key
  12242. */ }, { key: "clear", value: function clear(
  12243. key) {
  12244. try {
  12245. var cahceValue = this.cacheGetHandler(this.cacheExpire),
  12246. index = false;
  12247. if (cahceValue && typeof cahceValue === 'object' && cahceValue.length) {
  12248. cahceValue.map(function (item, i) {
  12249. if (item.key === key) {
  12250. index = i;
  12251. }
  12252. });
  12253. if (index !== false) {
  12254. cahceValue.splice(index, 1);
  12255. }
  12256. this.cacheSetHandler(this.cacheExpire, cahceValue);
  12257. }
  12258. return this.cacheClearHandler(key);
  12259. } catch (e) {
  12260. return false;
  12261. }
  12262. }
  12263. /**
  12264. * 清除过期缓存
  12265. */ }, { key: "clearOverdue", value: function clearOverdue()
  12266. {var _this2 = this;
  12267. var cahceValue = this.cacheGetHandler(this.cacheExpire),
  12268. time = this.time(),
  12269. newBeOverdueValue = [],
  12270. newTagValue = [];
  12271. if (cahceValue && typeof cahceValue === 'object' && cahceValue.length) {
  12272. cahceValue.map(function (item) {
  12273. if (item) {
  12274. if (item.expire !== undefined && item.expire > time || item.expire === 0) {
  12275. newTagValue.push(item);
  12276. } else {
  12277. newBeOverdueValue.push(item.key);
  12278. }
  12279. }
  12280. });
  12281. }
  12282. //保存没有过期的缓存标签
  12283. if (newTagValue.length !== cahceValue.length) {
  12284. this.cacheSetHandler(this.cacheExpire, newTagValue);
  12285. }
  12286. //删除过期缓存
  12287. newBeOverdueValue.forEach(function (k) {
  12288. _this2.cacheClearHandler(k);
  12289. });
  12290. } }]);return Cache;}();var _default =
  12291. new Cache();exports.default = _default;
  12292. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["default"]))
  12293. /***/ }),
  12294. /***/ 34:
  12295. /*!****************************************************************!*\
  12296. !*** D:/data/zhonghong/saber-weixin/store/modules/hotWords.js ***!
  12297. \****************************************************************/
  12298. /*! no static exports found */
  12299. /***/ (function(module, exports, __webpack_require__) {
  12300. "use strict";
  12301. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; // +----------------------------------------------------------------------
  12302. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  12303. // +----------------------------------------------------------------------
  12304. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  12305. // +----------------------------------------------------------------------
  12306. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  12307. // +----------------------------------------------------------------------
  12308. // | Author: CRMEB Team <admin@crmeb.com>
  12309. // +----------------------------------------------------------------------
  12310. var _default =
  12311. {
  12312. namespaced: true,
  12313. state: {
  12314. // 搜索关键字
  12315. hotWord: [] },
  12316. getters: {},
  12317. mutations: {
  12318. setHotWord: function setHotWord(state, fastsearchforhotwords) {
  12319. state.hotWord = fastsearchforhotwords;
  12320. } } };exports.default = _default;
  12321. /***/ }),
  12322. /***/ 35:
  12323. /*!*****************************************************************!*\
  12324. !*** D:/data/zhonghong/saber-weixin/store/modules/indexData.js ***!
  12325. \*****************************************************************/
  12326. /*! no static exports found */
  12327. /***/ (function(module, exports, __webpack_require__) {
  12328. "use strict";
  12329. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; // +----------------------------------------------------------------------
  12330. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  12331. // +----------------------------------------------------------------------
  12332. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  12333. // +----------------------------------------------------------------------
  12334. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  12335. // +----------------------------------------------------------------------
  12336. // | Author: CRMEB Team <admin@crmeb.com>
  12337. // +----------------------------------------------------------------------
  12338. var _default =
  12339. {
  12340. namespaced: true,
  12341. state: {
  12342. // 搜索关键字
  12343. indexDatas: {},
  12344. cartNum: 0 },
  12345. getters: {},
  12346. mutations: {
  12347. setIndexData: function setIndexData(state, data) {
  12348. state.indexDatas = data;
  12349. },
  12350. setCartNum: function setCartNum(state, data) {
  12351. state.cartNum = data;
  12352. } } };exports.default = _default;
  12353. /***/ }),
  12354. /***/ 36:
  12355. /*!*******************************************************!*\
  12356. !*** D:/data/zhonghong/saber-weixin/store/getters.js ***!
  12357. \*******************************************************/
  12358. /*! no static exports found */
  12359. /***/ (function(module, exports, __webpack_require__) {
  12360. "use strict";
  12361. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; // +----------------------------------------------------------------------
  12362. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  12363. // +----------------------------------------------------------------------
  12364. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  12365. // +----------------------------------------------------------------------
  12366. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  12367. // +----------------------------------------------------------------------
  12368. // | Author: CRMEB Team <admin@crmeb.com>
  12369. // +----------------------------------------------------------------------
  12370. var _default =
  12371. {
  12372. token: function token(state) {return state.app.token;},
  12373. isLogin: function isLogin(state) {return !!state.app.token;},
  12374. backgroundColor: function backgroundColor(state) {return state.app.backgroundColor;},
  12375. userInfo: function userInfo(state) {return state.app.userInfo || {};},
  12376. uid: function uid(state) {return state.app.uid;},
  12377. homeActive: function homeActive(state) {return state.app.homeActive;},
  12378. home: function home(state) {return state.app.home;},
  12379. cartNum: function cartNum(state) {return state.indexData.cartNum;} };
  12380. // export default {
  12381. // token: state => 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJrYWlmYS5jcm1lYi5uZXQiLCJhdWQiOiJrYWlmYS5jcm1lYi5uZXQiLCJpYXQiOjE1NzcwODM1MzQsIm5iZiI6MTU3NzA4MzUzNCwiZXhwIjoxNTc3MDk0MzM0LCJqdGkiOnsiaWQiOjExMCwidHlwZSI6InVzZXIifX0.U-i1pbdRjyXI1gr79Uq2XBPZ89T8f5Ai9jwrR8woTwE',
  12382. // isLogin: state => true,
  12383. // backgroundColor: state => state.app.backgroundColor,
  12384. // userInfo: state => state.app.userInfo || {}
  12385. // };
  12386. exports.default = _default;
  12387. /***/ }),
  12388. /***/ 37:
  12389. /*!********************************************************!*\
  12390. !*** D:/data/zhonghong/saber-weixin/utils/validate.js ***!
  12391. \********************************************************/
  12392. /*! no static exports found */
  12393. /***/ (function(module, exports, __webpack_require__) {
  12394. "use strict";
  12395. Object.defineProperty(exports, "__esModule", { value: true });exports.isMoney = isMoney;exports.checkPhone = checkPhone;exports.Throttle = exports.Debounce = void 0; // +----------------------------------------------------------------------
  12396. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  12397. // +----------------------------------------------------------------------
  12398. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  12399. // +----------------------------------------------------------------------
  12400. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  12401. // +----------------------------------------------------------------------
  12402. // | Author: CRMEB Team <admin@crmeb.com>
  12403. // +----------------------------------------------------------------------
  12404. /**
  12405. * 验证小数点后两位及多个小数
  12406. * money 金额
  12407. */
  12408. function isMoney(money) {
  12409. var reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/;
  12410. if (reg.test(money)) {
  12411. return true;
  12412. } else {
  12413. return false;
  12414. }
  12415. }
  12416. /**
  12417. * 验证手机号码
  12418. * money 金额
  12419. */
  12420. function checkPhone(c2543fff3bfa6f144c2f06a7de6cd10c0b650cae) {
  12421. var reg = /^1(3|4|5|6|7|8|9)\d{9}$/;
  12422. if (reg.test(c2543fff3bfa6f144c2f06a7de6cd10c0b650cae)) {
  12423. return true;
  12424. } else {
  12425. return false;
  12426. }
  12427. }
  12428. /**
  12429. * 函数防抖 (只执行最后一次点击)
  12430. * @param fn
  12431. * @param delay
  12432. * @returns {Function}
  12433. * @constructor
  12434. */
  12435. var Debounce = function Debounce(fn, t) {
  12436. var delay = t || 500;
  12437. var timer;
  12438. return function () {var _this = this;
  12439. var args = arguments;
  12440. if (timer) {
  12441. clearTimeout(timer);
  12442. }
  12443. timer = setTimeout(function () {
  12444. timer = null;
  12445. fn.apply(_this, args);
  12446. }, delay);
  12447. };
  12448. };
  12449. /**
  12450. * 函数节流
  12451. * @param fn
  12452. * @param interval
  12453. * @returns {Function}
  12454. * @constructor
  12455. */exports.Debounce = Debounce;
  12456. var Throttle = function Throttle(fn, t) {
  12457. var last;
  12458. var timer;
  12459. var interval = t || 500;
  12460. return function () {var _this2 = this;
  12461. var args = arguments;
  12462. var now = +new Date();
  12463. if (last && now - last < interval) {
  12464. clearTimeout(timer);
  12465. timer = setTimeout(function () {
  12466. last = now;
  12467. fn.apply(_this2, args);
  12468. }, interval);
  12469. } else {
  12470. last = now;
  12471. fn.apply(this, args);
  12472. }
  12473. };
  12474. };exports.Throttle = Throttle;
  12475. /***/ }),
  12476. /***/ 38:
  12477. /*!******************************************************!*\
  12478. !*** D:/data/zhonghong/saber-weixin/libs/routine.js ***!
  12479. \******************************************************/
  12480. /*! no static exports found */
  12481. /***/ (function(module, exports, __webpack_require__) {
  12482. "use strict";
  12483. /* WEBPACK VAR INJECTION */(function(uni) {Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _regenerator = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/regenerator */ 9));
  12484. var _store = _interopRequireDefault(__webpack_require__(/*! ../store */ 13));
  12485. var _login = __webpack_require__(/*! ./login */ 12);
  12486. var _public = __webpack_require__(/*! ../api/public */ 39);
  12487. var _cache = _interopRequireDefault(__webpack_require__(/*! ../utils/cache */ 33));
  12488. var _cache2 = __webpack_require__(/*! ./../config/cache */ 32);
  12489. var _vuex = __webpack_require__(/*! vuex */ 14);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {try {var info = gen[key](arg);var value = info.value;} catch (error) {reject(error);return;}if (info.done) {resolve(value);} else {Promise.resolve(value).then(_next, _throw);}}function _asyncToGenerator(fn) {return function () {var self = this,args = arguments;return new Promise(function (resolve, reject) {var gen = fn.apply(self, args);function _next(value) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);}function _throw(err) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);}_next(undefined);});};}function _classCallCheck(instance, Constructor) {if (!(instance instanceof Constructor)) {throw new TypeError("Cannot call a class as a function");}}function _defineProperties(target, props) {for (var i = 0; i < props.length; i++) {var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ("value" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);}}function _createClass(Constructor, protoProps, staticProps) {if (protoProps) _defineProperties(Constructor.prototype, protoProps);if (staticProps) _defineProperties(Constructor, staticProps);return Constructor;}var
  12490. Routine = /*#__PURE__*/function () {
  12491. function Routine() {_classCallCheck(this, Routine);
  12492. this.scopeUserInfo = 'scope.userInfo';
  12493. }_createClass(Routine, [{ key: "getUserCode", value: function () {var _getUserCode = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee() {var isAuth, code;return _regenerator.default.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:_context.next = 2;return (
  12494. this.isAuth());case 2:isAuth = _context.sent;
  12495. code = '';if (!
  12496. isAuth) {_context.next = 8;break;}_context.next = 7;return (
  12497. this.getCode());case 7:code = _context.sent;case 8:return _context.abrupt("return",
  12498. code);case 9:case "end":return _context.stop();}}}, _callee, this);}));function getUserCode() {return _getUserCode.apply(this, arguments);}return getUserCode;}()
  12499. // 小程序静默授权
  12500. // silenceAuth(code) {
  12501. // const app = getApp();
  12502. // let that = this;
  12503. // let spread = app.globalData.spid ? app.globalData.spid : '';
  12504. // return new Promise((resolve, reject) => {
  12505. // silenceAuth({
  12506. // code: code,
  12507. // spread_spid: spread,
  12508. // spread_code: app.globalData.code
  12509. // })
  12510. // .then(res => {
  12511. // if (res.data && res.data.token !== undefined) {
  12512. // uni.hideLoading();
  12513. // let time = res.data.expires_time - Math.round(new Date() / 1000);
  12514. // store.commit('LOGIN', {
  12515. // token: res.data.token,
  12516. // time: time
  12517. // });
  12518. // store.commit('SETUID', res.data.userInfo.uid);
  12519. // store.commit('UPDATE_USERINFO', res.data.userInfo);
  12520. // resolve(res)
  12521. // } else {
  12522. // reject()
  12523. // uni.navigateTo({
  12524. // url: '/pages/users/wechat_login/index'
  12525. // })
  12526. // }
  12527. // })
  12528. // .catch(err => {
  12529. // reject(err)
  12530. // });
  12531. // })
  12532. // }
  12533. /**
  12534. * 获取用户信息
  12535. */ }, { key: "getUserInfo", value: function getUserInfo()
  12536. {
  12537. var that = this,
  12538. code = this.getUserCode();
  12539. return new Promise(function (resolve, reject) {
  12540. uni.getUserInfo({
  12541. lang: 'zh_CN',
  12542. success: function success(user) {
  12543. if (code) user.code = code;
  12544. resolve({
  12545. userInfo: user,
  12546. islogin: false });
  12547. },
  12548. fail: function fail(res) {
  12549. reject(res);
  12550. } });
  12551. });
  12552. }
  12553. /**
  12554. * 新版小程序获取用户信息 2021 4.13微信小程序开始正式启用
  12555. */ }, { key: "getUserProfile", value: function getUserProfile(
  12556. code) {
  12557. return new Promise(function (resolve, reject) {
  12558. uni.getUserProfile({
  12559. lang: 'zh_CN',
  12560. desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
  12561. success: function success(user) {
  12562. if (code) user.code = code;
  12563. resolve({
  12564. userInfo: user,
  12565. islogin: false });
  12566. },
  12567. fail: function fail(res) {
  12568. reject(res);
  12569. } });
  12570. });
  12571. }
  12572. /**
  12573. * 获取用户信息
  12574. */ }, { key: "authorize", value: function authorize()
  12575. {
  12576. var that = this;
  12577. return new Promise(function (resolve, reject) {
  12578. if ((0, _login.checkLogin)())
  12579. return resolve({
  12580. userInfo: _cache.default.get(_cache2.USER_INFO, true),
  12581. islogin: true });
  12582. uni.authorize({
  12583. scope: that.scopeUserInfo,
  12584. success: function success() {
  12585. resolve({
  12586. islogin: false });
  12587. },
  12588. fail: function fail(res) {
  12589. reject(res);
  12590. } });
  12591. });
  12592. } }, { key: "getCode", value: function () {var _getCode = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee2() {var provider;return _regenerator.default.wrap(function _callee2$(_context2) {while (1) {switch (_context2.prev = _context2.next) {case 0:_context2.next = 2;return (
  12593. this.getProvider());case 2:provider = _context2.sent;return _context2.abrupt("return",
  12594. new Promise(function (resolve, reject) {
  12595. // if(Cache.has(STATE_R_KEY)){
  12596. // return resolve(Cache.get(STATE_R_KEY));
  12597. // }
  12598. uni.login({
  12599. provider: provider,
  12600. success: function success(res) {
  12601. if (res.code) _cache.default.set(_cache2.STATE_R_KEY, res.code, 10800);
  12602. return resolve(res.code);
  12603. },
  12604. fail: function fail() {
  12605. return reject(null);
  12606. } });
  12607. }));case 4:case "end":return _context2.stop();}}}, _callee2, this);}));function getCode() {return _getCode.apply(this, arguments);}return getCode;}()
  12608. /**
  12609. * 获取服务供应商
  12610. */ }, { key: "getProvider", value: function getProvider()
  12611. {
  12612. return new Promise(function (resolve, reject) {
  12613. uni.getProvider({
  12614. service: 'oauth',
  12615. success: function success(res) {
  12616. resolve(res.provider);
  12617. },
  12618. fail: function fail() {
  12619. resolve(false);
  12620. } });
  12621. });
  12622. }
  12623. /**
  12624. * 是否授权
  12625. */ }, { key: "isAuth", value: function isAuth()
  12626. {
  12627. var that = this;
  12628. return new Promise(function (resolve, reject) {
  12629. uni.getSetting({
  12630. success: function success(res) {
  12631. if (!res.authSetting[that.scopeUserInfo]) {
  12632. resolve(true);
  12633. } else {
  12634. resolve(true);
  12635. }
  12636. },
  12637. fail: function fail() {
  12638. resolve(false);
  12639. } });
  12640. });
  12641. } }, { key: "authUserInfo", value: function authUserInfo(
  12642. data) {
  12643. return new Promise(function (resolve, reject) {
  12644. (0, _public.routineLogin)(data).then(function (res) {
  12645. if (res.data.key !== undefined && res.data.key) {} else {
  12646. _store.default.commit('UPDATE_USERINFO', res.data.userInfo);
  12647. _store.default.commit('SETUID', res.data.userInfo.uid);
  12648. _cache.default.set(_cache2.USER_INFO, res.data.userInfo);
  12649. }
  12650. return resolve(res);
  12651. }).catch(function (res) {
  12652. return reject(res);
  12653. });
  12654. });
  12655. } }]);return Routine;}();var _default =
  12656. new Routine();exports.default = _default;
  12657. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["default"]))
  12658. /***/ }),
  12659. /***/ 39:
  12660. /*!****************************************************!*\
  12661. !*** D:/data/zhonghong/saber-weixin/api/public.js ***!
  12662. \****************************************************/
  12663. /*! no static exports found */
  12664. /***/ (function(module, exports, __webpack_require__) {
  12665. "use strict";
  12666. Object.defineProperty(exports, "__esModule", { value: true });exports.getWechatConfig = getWechatConfig;exports.wechatAuth = wechatAuth;exports.getLogo = getLogo;exports.login = login;exports.silenceAuth = silenceAuth;exports.getShare = getShare;exports.follow = follow;exports.imageBase64 = imageBase64;exports.copyWords = copyWords;exports.getShopConfig = getShopConfig;exports.getUserPhone = getUserPhone;exports.routineLogin = routineLogin;exports.wechatAuthV2 = wechatAuthV2;exports.getNavigation = getNavigation;exports.getSubscribe = getSubscribe;exports.getUpdateInfo = getUpdateInfo;
  12667. var _request = _interopRequireDefault(__webpack_require__(/*! @/utils/request.js */ 18));
  12668. var _wechat = _interopRequireDefault(__webpack_require__(/*! @/libs/wechat.js */ 40));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} // +----------------------------------------------------------------------
  12669. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  12670. // +----------------------------------------------------------------------
  12671. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  12672. // +----------------------------------------------------------------------
  12673. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  12674. // +----------------------------------------------------------------------
  12675. // | Author: CRMEB Team <admin@crmeb.com>
  12676. // +----------------------------------------------------------------------
  12677. /**
  12678. * 获取微信sdk配置
  12679. * @returns {*}
  12680. */function getWechatConfig() {return _request.default.get("wechat/config", { url: _wechat.default.signLink() }, { noAuth: true });
  12681. }
  12682. /**
  12683. * 获取微信sdk配置
  12684. * @returns {*}
  12685. */
  12686. function wechatAuth(code, spread, login_type) {
  12687. return _request.default.get(
  12688. "wechat/auth", {
  12689. code: code,
  12690. spread: spread,
  12691. login_type: login_type },
  12692. {
  12693. noAuth: true });
  12694. }
  12695. /**
  12696. * 获取登录授权login
  12697. *
  12698. */
  12699. function getLogo() {
  12700. return _request.default.get('wechat/get_logo', {}, {
  12701. noAuth: true });
  12702. }
  12703. /**
  12704. * 小程序用户登录
  12705. * @param data object 小程序用户登陆信息
  12706. */
  12707. function login(data) {
  12708. return _request.default.post("wechat/mp_auth", data, {
  12709. noAuth: true });
  12710. }
  12711. /**
  12712. * 静默授权
  12713. * @param {Object} data
  12714. */
  12715. function silenceAuth(data) {
  12716. return _request.default.get("v2/wechat/silence_auth", data, {
  12717. noAuth: true });
  12718. }
  12719. /**
  12720. * 分享
  12721. * @returns {*}
  12722. */
  12723. function getShare() {
  12724. return _request.default.get("share", {}, {
  12725. noAuth: true });
  12726. }
  12727. /**
  12728. * 获取关注海报
  12729. * @returns {*}
  12730. */
  12731. function follow() {
  12732. return _request.default.get("wechat/follow", {}, {
  12733. noAuth: true });
  12734. }
  12735. /**
  12736. * 获取图片base64
  12737. * @retins {*}
  12738. * */
  12739. function imageBase64(image, code) {
  12740. return _request.default.post(
  12741. "image_base64", {
  12742. image: image,
  12743. code: code },
  12744. {
  12745. noAuth: true });
  12746. }
  12747. /**
  12748. * 自动复制口令功能
  12749. * @returns {*}
  12750. */
  12751. function copyWords() {
  12752. return _request.default.get("copy_words", {}, {
  12753. noAuth: true });
  12754. }
  12755. /**
  12756. * 获取商城是否强制绑定手机号
  12757. */
  12758. function getShopConfig() {
  12759. return _request.default.get('v2/bind_status', {}, {
  12760. noAuth: true });
  12761. }
  12762. /**
  12763. * 小程序绑定手机号
  12764. * @param {Object} data
  12765. */
  12766. function getUserPhone(data) {
  12767. return _request.default.post('v2/auth_bindind_phone', data, {
  12768. noAuth: true });
  12769. }
  12770. /**
  12771. * 小程序用户登录
  12772. * @param data object 小程序用户登陆信息
  12773. */
  12774. function routineLogin(data) {
  12775. return _request.default.get("v2/wechat/routine_auth", data, {
  12776. noAuth: true });
  12777. }
  12778. /**
  12779. * 获取微信sdk配置
  12780. * @returns {*}
  12781. */
  12782. function wechatAuthV2(code, spread) {
  12783. return _request.default.get(
  12784. "v2/wechat/auth", {
  12785. code: code,
  12786. spread: spread },
  12787. {
  12788. noAuth: true });
  12789. }
  12790. /**
  12791. * 获取组件底部菜单
  12792. * @param data object 获取组件底部菜单
  12793. */
  12794. function getNavigation(data) {
  12795. return _request.default.get("navigation", data, {
  12796. noAuth: true });
  12797. }
  12798. function getSubscribe() {
  12799. return _request.default.get("subscribe", {}, {
  12800. noAuth: true });
  12801. }
  12802. /**
  12803. * 获取版本信息
  12804. * @param 系统类型
  12805. */
  12806. function getUpdateInfo(type) {
  12807. return _request.default.get("get_new_app/" + type, {}, {
  12808. noAuth: true });
  12809. }
  12810. /***/ }),
  12811. /***/ 4:
  12812. /*!******************************************************************************************!*\
  12813. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/mp-vue/dist/mp.runtime.esm.js ***!
  12814. \******************************************************************************************/
  12815. /*! exports provided: default */
  12816. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  12817. "use strict";
  12818. __webpack_require__.r(__webpack_exports__);
  12819. /* WEBPACK VAR INJECTION */(function(global) {/*!
  12820. * Vue.js v2.6.11
  12821. * (c) 2014-2022 Evan You
  12822. * Released under the MIT License.
  12823. */
  12824. /* */
  12825. var emptyObject = Object.freeze({});
  12826. // These helpers produce better VM code in JS engines due to their
  12827. // explicitness and function inlining.
  12828. function isUndef (v) {
  12829. return v === undefined || v === null
  12830. }
  12831. function isDef (v) {
  12832. return v !== undefined && v !== null
  12833. }
  12834. function isTrue (v) {
  12835. return v === true
  12836. }
  12837. function isFalse (v) {
  12838. return v === false
  12839. }
  12840. /**
  12841. * Check if value is primitive.
  12842. */
  12843. function isPrimitive (value) {
  12844. return (
  12845. typeof value === 'string' ||
  12846. typeof value === 'number' ||
  12847. // $flow-disable-line
  12848. typeof value === 'symbol' ||
  12849. typeof value === 'boolean'
  12850. )
  12851. }
  12852. /**
  12853. * Quick object check - this is primarily used to tell
  12854. * Objects from primitive values when we know the value
  12855. * is a JSON-compliant type.
  12856. */
  12857. function isObject (obj) {
  12858. return obj !== null && typeof obj === 'object'
  12859. }
  12860. /**
  12861. * Get the raw type string of a value, e.g., [object Object].
  12862. */
  12863. var _toString = Object.prototype.toString;
  12864. function toRawType (value) {
  12865. return _toString.call(value).slice(8, -1)
  12866. }
  12867. /**
  12868. * Strict object type check. Only returns true
  12869. * for plain JavaScript objects.
  12870. */
  12871. function isPlainObject (obj) {
  12872. return _toString.call(obj) === '[object Object]'
  12873. }
  12874. function isRegExp (v) {
  12875. return _toString.call(v) === '[object RegExp]'
  12876. }
  12877. /**
  12878. * Check if val is a valid array index.
  12879. */
  12880. function isValidArrayIndex (val) {
  12881. var n = parseFloat(String(val));
  12882. return n >= 0 && Math.floor(n) === n && isFinite(val)
  12883. }
  12884. function isPromise (val) {
  12885. return (
  12886. isDef(val) &&
  12887. typeof val.then === 'function' &&
  12888. typeof val.catch === 'function'
  12889. )
  12890. }
  12891. /**
  12892. * Convert a value to a string that is actually rendered.
  12893. */
  12894. function toString (val) {
  12895. return val == null
  12896. ? ''
  12897. : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)
  12898. ? JSON.stringify(val, null, 2)
  12899. : String(val)
  12900. }
  12901. /**
  12902. * Convert an input value to a number for persistence.
  12903. * If the conversion fails, return original string.
  12904. */
  12905. function toNumber (val) {
  12906. var n = parseFloat(val);
  12907. return isNaN(n) ? val : n
  12908. }
  12909. /**
  12910. * Make a map and return a function for checking if a key
  12911. * is in that map.
  12912. */
  12913. function makeMap (
  12914. str,
  12915. expectsLowerCase
  12916. ) {
  12917. var map = Object.create(null);
  12918. var list = str.split(',');
  12919. for (var i = 0; i < list.length; i++) {
  12920. map[list[i]] = true;
  12921. }
  12922. return expectsLowerCase
  12923. ? function (val) { return map[val.toLowerCase()]; }
  12924. : function (val) { return map[val]; }
  12925. }
  12926. /**
  12927. * Check if a tag is a built-in tag.
  12928. */
  12929. var isBuiltInTag = makeMap('slot,component', true);
  12930. /**
  12931. * Check if an attribute is a reserved attribute.
  12932. */
  12933. var isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');
  12934. /**
  12935. * Remove an item from an array.
  12936. */
  12937. function remove (arr, item) {
  12938. if (arr.length) {
  12939. var index = arr.indexOf(item);
  12940. if (index > -1) {
  12941. return arr.splice(index, 1)
  12942. }
  12943. }
  12944. }
  12945. /**
  12946. * Check whether an object has the property.
  12947. */
  12948. var hasOwnProperty = Object.prototype.hasOwnProperty;
  12949. function hasOwn (obj, key) {
  12950. return hasOwnProperty.call(obj, key)
  12951. }
  12952. /**
  12953. * Create a cached version of a pure function.
  12954. */
  12955. function cached (fn) {
  12956. var cache = Object.create(null);
  12957. return (function cachedFn (str) {
  12958. var hit = cache[str];
  12959. return hit || (cache[str] = fn(str))
  12960. })
  12961. }
  12962. /**
  12963. * Camelize a hyphen-delimited string.
  12964. */
  12965. var camelizeRE = /-(\w)/g;
  12966. var camelize = cached(function (str) {
  12967. return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })
  12968. });
  12969. /**
  12970. * Capitalize a string.
  12971. */
  12972. var capitalize = cached(function (str) {
  12973. return str.charAt(0).toUpperCase() + str.slice(1)
  12974. });
  12975. /**
  12976. * Hyphenate a camelCase string.
  12977. */
  12978. var hyphenateRE = /\B([A-Z])/g;
  12979. var hyphenate = cached(function (str) {
  12980. return str.replace(hyphenateRE, '-$1').toLowerCase()
  12981. });
  12982. /**
  12983. * Simple bind polyfill for environments that do not support it,
  12984. * e.g., PhantomJS 1.x. Technically, we don't need this anymore
  12985. * since native bind is now performant enough in most browsers.
  12986. * But removing it would mean breaking code that was able to run in
  12987. * PhantomJS 1.x, so this must be kept for backward compatibility.
  12988. */
  12989. /* istanbul ignore next */
  12990. function polyfillBind (fn, ctx) {
  12991. function boundFn (a) {
  12992. var l = arguments.length;
  12993. return l
  12994. ? l > 1
  12995. ? fn.apply(ctx, arguments)
  12996. : fn.call(ctx, a)
  12997. : fn.call(ctx)
  12998. }
  12999. boundFn._length = fn.length;
  13000. return boundFn
  13001. }
  13002. function nativeBind (fn, ctx) {
  13003. return fn.bind(ctx)
  13004. }
  13005. var bind = Function.prototype.bind
  13006. ? nativeBind
  13007. : polyfillBind;
  13008. /**
  13009. * Convert an Array-like object to a real Array.
  13010. */
  13011. function toArray (list, start) {
  13012. start = start || 0;
  13013. var i = list.length - start;
  13014. var ret = new Array(i);
  13015. while (i--) {
  13016. ret[i] = list[i + start];
  13017. }
  13018. return ret
  13019. }
  13020. /**
  13021. * Mix properties into target object.
  13022. */
  13023. function extend (to, _from) {
  13024. for (var key in _from) {
  13025. to[key] = _from[key];
  13026. }
  13027. return to
  13028. }
  13029. /**
  13030. * Merge an Array of Objects into a single Object.
  13031. */
  13032. function toObject (arr) {
  13033. var res = {};
  13034. for (var i = 0; i < arr.length; i++) {
  13035. if (arr[i]) {
  13036. extend(res, arr[i]);
  13037. }
  13038. }
  13039. return res
  13040. }
  13041. /* eslint-disable no-unused-vars */
  13042. /**
  13043. * Perform no operation.
  13044. * Stubbing args to make Flow happy without leaving useless transpiled code
  13045. * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).
  13046. */
  13047. function noop (a, b, c) {}
  13048. /**
  13049. * Always return false.
  13050. */
  13051. var no = function (a, b, c) { return false; };
  13052. /* eslint-enable no-unused-vars */
  13053. /**
  13054. * Return the same value.
  13055. */
  13056. var identity = function (_) { return _; };
  13057. /**
  13058. * Check if two values are loosely equal - that is,
  13059. * if they are plain objects, do they have the same shape?
  13060. */
  13061. function looseEqual (a, b) {
  13062. if (a === b) { return true }
  13063. var isObjectA = isObject(a);
  13064. var isObjectB = isObject(b);
  13065. if (isObjectA && isObjectB) {
  13066. try {
  13067. var isArrayA = Array.isArray(a);
  13068. var isArrayB = Array.isArray(b);
  13069. if (isArrayA && isArrayB) {
  13070. return a.length === b.length && a.every(function (e, i) {
  13071. return looseEqual(e, b[i])
  13072. })
  13073. } else if (a instanceof Date && b instanceof Date) {
  13074. return a.getTime() === b.getTime()
  13075. } else if (!isArrayA && !isArrayB) {
  13076. var keysA = Object.keys(a);
  13077. var keysB = Object.keys(b);
  13078. return keysA.length === keysB.length && keysA.every(function (key) {
  13079. return looseEqual(a[key], b[key])
  13080. })
  13081. } else {
  13082. /* istanbul ignore next */
  13083. return false
  13084. }
  13085. } catch (e) {
  13086. /* istanbul ignore next */
  13087. return false
  13088. }
  13089. } else if (!isObjectA && !isObjectB) {
  13090. return String(a) === String(b)
  13091. } else {
  13092. return false
  13093. }
  13094. }
  13095. /**
  13096. * Return the first index at which a loosely equal value can be
  13097. * found in the array (if value is a plain object, the array must
  13098. * contain an object of the same shape), or -1 if it is not present.
  13099. */
  13100. function looseIndexOf (arr, val) {
  13101. for (var i = 0; i < arr.length; i++) {
  13102. if (looseEqual(arr[i], val)) { return i }
  13103. }
  13104. return -1
  13105. }
  13106. /**
  13107. * Ensure a function is called only once.
  13108. */
  13109. function once (fn) {
  13110. var called = false;
  13111. return function () {
  13112. if (!called) {
  13113. called = true;
  13114. fn.apply(this, arguments);
  13115. }
  13116. }
  13117. }
  13118. var ASSET_TYPES = [
  13119. 'component',
  13120. 'directive',
  13121. 'filter'
  13122. ];
  13123. var LIFECYCLE_HOOKS = [
  13124. 'beforeCreate',
  13125. 'created',
  13126. 'beforeMount',
  13127. 'mounted',
  13128. 'beforeUpdate',
  13129. 'updated',
  13130. 'beforeDestroy',
  13131. 'destroyed',
  13132. 'activated',
  13133. 'deactivated',
  13134. 'errorCaptured',
  13135. 'serverPrefetch'
  13136. ];
  13137. /* */
  13138. var config = ({
  13139. /**
  13140. * Option merge strategies (used in core/util/options)
  13141. */
  13142. // $flow-disable-line
  13143. optionMergeStrategies: Object.create(null),
  13144. /**
  13145. * Whether to suppress warnings.
  13146. */
  13147. silent: false,
  13148. /**
  13149. * Show production mode tip message on boot?
  13150. */
  13151. productionTip: "development" !== 'production',
  13152. /**
  13153. * Whether to enable devtools
  13154. */
  13155. devtools: "development" !== 'production',
  13156. /**
  13157. * Whether to record perf
  13158. */
  13159. performance: false,
  13160. /**
  13161. * Error handler for watcher errors
  13162. */
  13163. errorHandler: null,
  13164. /**
  13165. * Warn handler for watcher warns
  13166. */
  13167. warnHandler: null,
  13168. /**
  13169. * Ignore certain custom elements
  13170. */
  13171. ignoredElements: [],
  13172. /**
  13173. * Custom user key aliases for v-on
  13174. */
  13175. // $flow-disable-line
  13176. keyCodes: Object.create(null),
  13177. /**
  13178. * Check if a tag is reserved so that it cannot be registered as a
  13179. * component. This is platform-dependent and may be overwritten.
  13180. */
  13181. isReservedTag: no,
  13182. /**
  13183. * Check if an attribute is reserved so that it cannot be used as a component
  13184. * prop. This is platform-dependent and may be overwritten.
  13185. */
  13186. isReservedAttr: no,
  13187. /**
  13188. * Check if a tag is an unknown element.
  13189. * Platform-dependent.
  13190. */
  13191. isUnknownElement: no,
  13192. /**
  13193. * Get the namespace of an element
  13194. */
  13195. getTagNamespace: noop,
  13196. /**
  13197. * Parse the real tag name for the specific platform.
  13198. */
  13199. parsePlatformTagName: identity,
  13200. /**
  13201. * Check if an attribute must be bound using property, e.g. value
  13202. * Platform-dependent.
  13203. */
  13204. mustUseProp: no,
  13205. /**
  13206. * Perform updates asynchronously. Intended to be used by Vue Test Utils
  13207. * This will significantly reduce performance if set to false.
  13208. */
  13209. async: true,
  13210. /**
  13211. * Exposed for legacy reasons
  13212. */
  13213. _lifecycleHooks: LIFECYCLE_HOOKS
  13214. });
  13215. /* */
  13216. /**
  13217. * unicode letters used for parsing html tags, component names and property paths.
  13218. * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname
  13219. * skipping \u10000-\uEFFFF due to it freezing up PhantomJS
  13220. */
  13221. var unicodeRegExp = /a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/;
  13222. /**
  13223. * Check if a string starts with $ or _
  13224. */
  13225. function isReserved (str) {
  13226. var c = (str + '').charCodeAt(0);
  13227. return c === 0x24 || c === 0x5F
  13228. }
  13229. /**
  13230. * Define a property.
  13231. */
  13232. function def (obj, key, val, enumerable) {
  13233. Object.defineProperty(obj, key, {
  13234. value: val,
  13235. enumerable: !!enumerable,
  13236. writable: true,
  13237. configurable: true
  13238. });
  13239. }
  13240. /**
  13241. * Parse simple path.
  13242. */
  13243. var bailRE = new RegExp(("[^" + (unicodeRegExp.source) + ".$_\\d]"));
  13244. function parsePath (path) {
  13245. if (bailRE.test(path)) {
  13246. return
  13247. }
  13248. var segments = path.split('.');
  13249. return function (obj) {
  13250. for (var i = 0; i < segments.length; i++) {
  13251. if (!obj) { return }
  13252. obj = obj[segments[i]];
  13253. }
  13254. return obj
  13255. }
  13256. }
  13257. /* */
  13258. // can we use __proto__?
  13259. var hasProto = '__proto__' in {};
  13260. // Browser environment sniffing
  13261. var inBrowser = typeof window !== 'undefined';
  13262. var inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;
  13263. var weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();
  13264. var UA = inBrowser && window.navigator.userAgent.toLowerCase();
  13265. var isIE = UA && /msie|trident/.test(UA);
  13266. var isIE9 = UA && UA.indexOf('msie 9.0') > 0;
  13267. var isEdge = UA && UA.indexOf('edge/') > 0;
  13268. var isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');
  13269. var isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');
  13270. var isChrome = UA && /chrome\/\d+/.test(UA) && !isEdge;
  13271. var isPhantomJS = UA && /phantomjs/.test(UA);
  13272. var isFF = UA && UA.match(/firefox\/(\d+)/);
  13273. // Firefox has a "watch" function on Object.prototype...
  13274. var nativeWatch = ({}).watch;
  13275. if (inBrowser) {
  13276. try {
  13277. var opts = {};
  13278. Object.defineProperty(opts, 'passive', ({
  13279. get: function get () {
  13280. }
  13281. })); // https://github.com/facebook/flow/issues/285
  13282. window.addEventListener('test-passive', null, opts);
  13283. } catch (e) {}
  13284. }
  13285. // this needs to be lazy-evaled because vue may be required before
  13286. // vue-server-renderer can set VUE_ENV
  13287. var _isServer;
  13288. var isServerRendering = function () {
  13289. if (_isServer === undefined) {
  13290. /* istanbul ignore if */
  13291. if (!inBrowser && !inWeex && typeof global !== 'undefined') {
  13292. // detect presence of vue-server-renderer and avoid
  13293. // Webpack shimming the process
  13294. _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';
  13295. } else {
  13296. _isServer = false;
  13297. }
  13298. }
  13299. return _isServer
  13300. };
  13301. // detect devtools
  13302. var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;
  13303. /* istanbul ignore next */
  13304. function isNative (Ctor) {
  13305. return typeof Ctor === 'function' && /native code/.test(Ctor.toString())
  13306. }
  13307. var hasSymbol =
  13308. typeof Symbol !== 'undefined' && isNative(Symbol) &&
  13309. typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);
  13310. var _Set;
  13311. /* istanbul ignore if */ // $flow-disable-line
  13312. if (typeof Set !== 'undefined' && isNative(Set)) {
  13313. // use native Set when available.
  13314. _Set = Set;
  13315. } else {
  13316. // a non-standard Set polyfill that only works with primitive keys.
  13317. _Set = /*@__PURE__*/(function () {
  13318. function Set () {
  13319. this.set = Object.create(null);
  13320. }
  13321. Set.prototype.has = function has (key) {
  13322. return this.set[key] === true
  13323. };
  13324. Set.prototype.add = function add (key) {
  13325. this.set[key] = true;
  13326. };
  13327. Set.prototype.clear = function clear () {
  13328. this.set = Object.create(null);
  13329. };
  13330. return Set;
  13331. }());
  13332. }
  13333. /* */
  13334. var warn = noop;
  13335. var tip = noop;
  13336. var generateComponentTrace = (noop); // work around flow check
  13337. var formatComponentName = (noop);
  13338. if (true) {
  13339. var hasConsole = typeof console !== 'undefined';
  13340. var classifyRE = /(?:^|[-_])(\w)/g;
  13341. var classify = function (str) { return str
  13342. .replace(classifyRE, function (c) { return c.toUpperCase(); })
  13343. .replace(/[-_]/g, ''); };
  13344. warn = function (msg, vm) {
  13345. var trace = vm ? generateComponentTrace(vm) : '';
  13346. if (config.warnHandler) {
  13347. config.warnHandler.call(null, msg, vm, trace);
  13348. } else if (hasConsole && (!config.silent)) {
  13349. console.error(("[Vue warn]: " + msg + trace));
  13350. }
  13351. };
  13352. tip = function (msg, vm) {
  13353. if (hasConsole && (!config.silent)) {
  13354. console.warn("[Vue tip]: " + msg + (
  13355. vm ? generateComponentTrace(vm) : ''
  13356. ));
  13357. }
  13358. };
  13359. formatComponentName = function (vm, includeFile) {
  13360. if (vm.$root === vm) {
  13361. if (vm.$options && vm.$options.__file) { // fixed by xxxxxx
  13362. return ('') + vm.$options.__file
  13363. }
  13364. return '<Root>'
  13365. }
  13366. var options = typeof vm === 'function' && vm.cid != null
  13367. ? vm.options
  13368. : vm._isVue
  13369. ? vm.$options || vm.constructor.options
  13370. : vm;
  13371. var name = options.name || options._componentTag;
  13372. var file = options.__file;
  13373. if (!name && file) {
  13374. var match = file.match(/([^/\\]+)\.vue$/);
  13375. name = match && match[1];
  13376. }
  13377. return (
  13378. (name ? ("<" + (classify(name)) + ">") : "<Anonymous>") +
  13379. (file && includeFile !== false ? (" at " + file) : '')
  13380. )
  13381. };
  13382. var repeat = function (str, n) {
  13383. var res = '';
  13384. while (n) {
  13385. if (n % 2 === 1) { res += str; }
  13386. if (n > 1) { str += str; }
  13387. n >>= 1;
  13388. }
  13389. return res
  13390. };
  13391. generateComponentTrace = function (vm) {
  13392. if (vm._isVue && vm.$parent) {
  13393. var tree = [];
  13394. var currentRecursiveSequence = 0;
  13395. while (vm && vm.$options.name !== 'PageBody') {
  13396. if (tree.length > 0) {
  13397. var last = tree[tree.length - 1];
  13398. if (last.constructor === vm.constructor) {
  13399. currentRecursiveSequence++;
  13400. vm = vm.$parent;
  13401. continue
  13402. } else if (currentRecursiveSequence > 0) {
  13403. tree[tree.length - 1] = [last, currentRecursiveSequence];
  13404. currentRecursiveSequence = 0;
  13405. }
  13406. }
  13407. !vm.$options.isReserved && tree.push(vm);
  13408. vm = vm.$parent;
  13409. }
  13410. return '\n\nfound in\n\n' + tree
  13411. .map(function (vm, i) { return ("" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)
  13412. ? ((formatComponentName(vm[0])) + "... (" + (vm[1]) + " recursive calls)")
  13413. : formatComponentName(vm))); })
  13414. .join('\n')
  13415. } else {
  13416. return ("\n\n(found in " + (formatComponentName(vm)) + ")")
  13417. }
  13418. };
  13419. }
  13420. /* */
  13421. var uid = 0;
  13422. /**
  13423. * A dep is an observable that can have multiple
  13424. * directives subscribing to it.
  13425. */
  13426. var Dep = function Dep () {
  13427. this.id = uid++;
  13428. this.subs = [];
  13429. };
  13430. Dep.prototype.addSub = function addSub (sub) {
  13431. this.subs.push(sub);
  13432. };
  13433. Dep.prototype.removeSub = function removeSub (sub) {
  13434. remove(this.subs, sub);
  13435. };
  13436. Dep.prototype.depend = function depend () {
  13437. if (Dep.SharedObject.target) {
  13438. Dep.SharedObject.target.addDep(this);
  13439. }
  13440. };
  13441. Dep.prototype.notify = function notify () {
  13442. // stabilize the subscriber list first
  13443. var subs = this.subs.slice();
  13444. if ( true && !config.async) {
  13445. // subs aren't sorted in scheduler if not running async
  13446. // we need to sort them now to make sure they fire in correct
  13447. // order
  13448. subs.sort(function (a, b) { return a.id - b.id; });
  13449. }
  13450. for (var i = 0, l = subs.length; i < l; i++) {
  13451. subs[i].update();
  13452. }
  13453. };
  13454. // The current target watcher being evaluated.
  13455. // This is globally unique because only one watcher
  13456. // can be evaluated at a time.
  13457. // fixed by xxxxxx (nvue shared vuex)
  13458. /* eslint-disable no-undef */
  13459. Dep.SharedObject = {};
  13460. Dep.SharedObject.target = null;
  13461. Dep.SharedObject.targetStack = [];
  13462. function pushTarget (target) {
  13463. Dep.SharedObject.targetStack.push(target);
  13464. Dep.SharedObject.target = target;
  13465. Dep.target = target;
  13466. }
  13467. function popTarget () {
  13468. Dep.SharedObject.targetStack.pop();
  13469. Dep.SharedObject.target = Dep.SharedObject.targetStack[Dep.SharedObject.targetStack.length - 1];
  13470. Dep.target = Dep.SharedObject.target;
  13471. }
  13472. /* */
  13473. var VNode = function VNode (
  13474. tag,
  13475. data,
  13476. children,
  13477. text,
  13478. elm,
  13479. context,
  13480. componentOptions,
  13481. asyncFactory
  13482. ) {
  13483. this.tag = tag;
  13484. this.data = data;
  13485. this.children = children;
  13486. this.text = text;
  13487. this.elm = elm;
  13488. this.ns = undefined;
  13489. this.context = context;
  13490. this.fnContext = undefined;
  13491. this.fnOptions = undefined;
  13492. this.fnScopeId = undefined;
  13493. this.key = data && data.key;
  13494. this.componentOptions = componentOptions;
  13495. this.componentInstance = undefined;
  13496. this.parent = undefined;
  13497. this.raw = false;
  13498. this.isStatic = false;
  13499. this.isRootInsert = true;
  13500. this.isComment = false;
  13501. this.isCloned = false;
  13502. this.isOnce = false;
  13503. this.asyncFactory = asyncFactory;
  13504. this.asyncMeta = undefined;
  13505. this.isAsyncPlaceholder = false;
  13506. };
  13507. var prototypeAccessors = { child: { configurable: true } };
  13508. // DEPRECATED: alias for componentInstance for backwards compat.
  13509. /* istanbul ignore next */
  13510. prototypeAccessors.child.get = function () {
  13511. return this.componentInstance
  13512. };
  13513. Object.defineProperties( VNode.prototype, prototypeAccessors );
  13514. var createEmptyVNode = function (text) {
  13515. if ( text === void 0 ) text = '';
  13516. var node = new VNode();
  13517. node.text = text;
  13518. node.isComment = true;
  13519. return node
  13520. };
  13521. function createTextVNode (val) {
  13522. return new VNode(undefined, undefined, undefined, String(val))
  13523. }
  13524. // optimized shallow clone
  13525. // used for static nodes and slot nodes because they may be reused across
  13526. // multiple renders, cloning them avoids errors when DOM manipulations rely
  13527. // on their elm reference.
  13528. function cloneVNode (vnode) {
  13529. var cloned = new VNode(
  13530. vnode.tag,
  13531. vnode.data,
  13532. // #7975
  13533. // clone children array to avoid mutating original in case of cloning
  13534. // a child.
  13535. vnode.children && vnode.children.slice(),
  13536. vnode.text,
  13537. vnode.elm,
  13538. vnode.context,
  13539. vnode.componentOptions,
  13540. vnode.asyncFactory
  13541. );
  13542. cloned.ns = vnode.ns;
  13543. cloned.isStatic = vnode.isStatic;
  13544. cloned.key = vnode.key;
  13545. cloned.isComment = vnode.isComment;
  13546. cloned.fnContext = vnode.fnContext;
  13547. cloned.fnOptions = vnode.fnOptions;
  13548. cloned.fnScopeId = vnode.fnScopeId;
  13549. cloned.asyncMeta = vnode.asyncMeta;
  13550. cloned.isCloned = true;
  13551. return cloned
  13552. }
  13553. /*
  13554. * not type checking this file because flow doesn't play well with
  13555. * dynamically accessing methods on Array prototype
  13556. */
  13557. var arrayProto = Array.prototype;
  13558. var arrayMethods = Object.create(arrayProto);
  13559. var methodsToPatch = [
  13560. 'push',
  13561. 'pop',
  13562. 'shift',
  13563. 'unshift',
  13564. 'splice',
  13565. 'sort',
  13566. 'reverse'
  13567. ];
  13568. /**
  13569. * Intercept mutating methods and emit events
  13570. */
  13571. methodsToPatch.forEach(function (method) {
  13572. // cache original method
  13573. var original = arrayProto[method];
  13574. def(arrayMethods, method, function mutator () {
  13575. var args = [], len = arguments.length;
  13576. while ( len-- ) args[ len ] = arguments[ len ];
  13577. var result = original.apply(this, args);
  13578. var ob = this.__ob__;
  13579. var inserted;
  13580. switch (method) {
  13581. case 'push':
  13582. case 'unshift':
  13583. inserted = args;
  13584. break
  13585. case 'splice':
  13586. inserted = args.slice(2);
  13587. break
  13588. }
  13589. if (inserted) { ob.observeArray(inserted); }
  13590. // notify change
  13591. ob.dep.notify();
  13592. return result
  13593. });
  13594. });
  13595. /* */
  13596. var arrayKeys = Object.getOwnPropertyNames(arrayMethods);
  13597. /**
  13598. * In some cases we may want to disable observation inside a component's
  13599. * update computation.
  13600. */
  13601. var shouldObserve = true;
  13602. function toggleObserving (value) {
  13603. shouldObserve = value;
  13604. }
  13605. /**
  13606. * Observer class that is attached to each observed
  13607. * object. Once attached, the observer converts the target
  13608. * object's property keys into getter/setters that
  13609. * collect dependencies and dispatch updates.
  13610. */
  13611. var Observer = function Observer (value) {
  13612. this.value = value;
  13613. this.dep = new Dep();
  13614. this.vmCount = 0;
  13615. def(value, '__ob__', this);
  13616. if (Array.isArray(value)) {
  13617. if (hasProto) {
  13618. {// fixed by xxxxxx 微信小程序使用 plugins 之后,数组方法被直接挂载到了数组对象上,需要执行 copyAugment 逻辑
  13619. if(value.push !== value.__proto__.push){
  13620. copyAugment(value, arrayMethods, arrayKeys);
  13621. } else {
  13622. protoAugment(value, arrayMethods);
  13623. }
  13624. }
  13625. } else {
  13626. copyAugment(value, arrayMethods, arrayKeys);
  13627. }
  13628. this.observeArray(value);
  13629. } else {
  13630. this.walk(value);
  13631. }
  13632. };
  13633. /**
  13634. * Walk through all properties and convert them into
  13635. * getter/setters. This method should only be called when
  13636. * value type is Object.
  13637. */
  13638. Observer.prototype.walk = function walk (obj) {
  13639. var keys = Object.keys(obj);
  13640. for (var i = 0; i < keys.length; i++) {
  13641. defineReactive$$1(obj, keys[i]);
  13642. }
  13643. };
  13644. /**
  13645. * Observe a list of Array items.
  13646. */
  13647. Observer.prototype.observeArray = function observeArray (items) {
  13648. for (var i = 0, l = items.length; i < l; i++) {
  13649. observe(items[i]);
  13650. }
  13651. };
  13652. // helpers
  13653. /**
  13654. * Augment a target Object or Array by intercepting
  13655. * the prototype chain using __proto__
  13656. */
  13657. function protoAugment (target, src) {
  13658. /* eslint-disable no-proto */
  13659. target.__proto__ = src;
  13660. /* eslint-enable no-proto */
  13661. }
  13662. /**
  13663. * Augment a target Object or Array by defining
  13664. * hidden properties.
  13665. */
  13666. /* istanbul ignore next */
  13667. function copyAugment (target, src, keys) {
  13668. for (var i = 0, l = keys.length; i < l; i++) {
  13669. var key = keys[i];
  13670. def(target, key, src[key]);
  13671. }
  13672. }
  13673. /**
  13674. * Attempt to create an observer instance for a value,
  13675. * returns the new observer if successfully observed,
  13676. * or the existing observer if the value already has one.
  13677. */
  13678. function observe (value, asRootData) {
  13679. if (!isObject(value) || value instanceof VNode) {
  13680. return
  13681. }
  13682. var ob;
  13683. if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {
  13684. ob = value.__ob__;
  13685. } else if (
  13686. shouldObserve &&
  13687. !isServerRendering() &&
  13688. (Array.isArray(value) || isPlainObject(value)) &&
  13689. Object.isExtensible(value) &&
  13690. !value._isVue
  13691. ) {
  13692. ob = new Observer(value);
  13693. }
  13694. if (asRootData && ob) {
  13695. ob.vmCount++;
  13696. }
  13697. return ob
  13698. }
  13699. /**
  13700. * Define a reactive property on an Object.
  13701. */
  13702. function defineReactive$$1 (
  13703. obj,
  13704. key,
  13705. val,
  13706. customSetter,
  13707. shallow
  13708. ) {
  13709. var dep = new Dep();
  13710. var property = Object.getOwnPropertyDescriptor(obj, key);
  13711. if (property && property.configurable === false) {
  13712. return
  13713. }
  13714. // cater for pre-defined getter/setters
  13715. var getter = property && property.get;
  13716. var setter = property && property.set;
  13717. if ((!getter || setter) && arguments.length === 2) {
  13718. val = obj[key];
  13719. }
  13720. var childOb = !shallow && observe(val);
  13721. Object.defineProperty(obj, key, {
  13722. enumerable: true,
  13723. configurable: true,
  13724. get: function reactiveGetter () {
  13725. var value = getter ? getter.call(obj) : val;
  13726. if (Dep.SharedObject.target) { // fixed by xxxxxx
  13727. dep.depend();
  13728. if (childOb) {
  13729. childOb.dep.depend();
  13730. if (Array.isArray(value)) {
  13731. dependArray(value);
  13732. }
  13733. }
  13734. }
  13735. return value
  13736. },
  13737. set: function reactiveSetter (newVal) {
  13738. var value = getter ? getter.call(obj) : val;
  13739. /* eslint-disable no-self-compare */
  13740. if (newVal === value || (newVal !== newVal && value !== value)) {
  13741. return
  13742. }
  13743. /* eslint-enable no-self-compare */
  13744. if ( true && customSetter) {
  13745. customSetter();
  13746. }
  13747. // #7981: for accessor properties without setter
  13748. if (getter && !setter) { return }
  13749. if (setter) {
  13750. setter.call(obj, newVal);
  13751. } else {
  13752. val = newVal;
  13753. }
  13754. childOb = !shallow && observe(newVal);
  13755. dep.notify();
  13756. }
  13757. });
  13758. }
  13759. /**
  13760. * Set a property on an object. Adds the new property and
  13761. * triggers change notification if the property doesn't
  13762. * already exist.
  13763. */
  13764. function set (target, key, val) {
  13765. if ( true &&
  13766. (isUndef(target) || isPrimitive(target))
  13767. ) {
  13768. warn(("Cannot set reactive property on undefined, null, or primitive value: " + ((target))));
  13769. }
  13770. if (Array.isArray(target) && isValidArrayIndex(key)) {
  13771. target.length = Math.max(target.length, key);
  13772. target.splice(key, 1, val);
  13773. return val
  13774. }
  13775. if (key in target && !(key in Object.prototype)) {
  13776. target[key] = val;
  13777. return val
  13778. }
  13779. var ob = (target).__ob__;
  13780. if (target._isVue || (ob && ob.vmCount)) {
  13781. true && warn(
  13782. 'Avoid adding reactive properties to a Vue instance or its root $data ' +
  13783. 'at runtime - declare it upfront in the data option.'
  13784. );
  13785. return val
  13786. }
  13787. if (!ob) {
  13788. target[key] = val;
  13789. return val
  13790. }
  13791. defineReactive$$1(ob.value, key, val);
  13792. ob.dep.notify();
  13793. return val
  13794. }
  13795. /**
  13796. * Delete a property and trigger change if necessary.
  13797. */
  13798. function del (target, key) {
  13799. if ( true &&
  13800. (isUndef(target) || isPrimitive(target))
  13801. ) {
  13802. warn(("Cannot delete reactive property on undefined, null, or primitive value: " + ((target))));
  13803. }
  13804. if (Array.isArray(target) && isValidArrayIndex(key)) {
  13805. target.splice(key, 1);
  13806. return
  13807. }
  13808. var ob = (target).__ob__;
  13809. if (target._isVue || (ob && ob.vmCount)) {
  13810. true && warn(
  13811. 'Avoid deleting properties on a Vue instance or its root $data ' +
  13812. '- just set it to null.'
  13813. );
  13814. return
  13815. }
  13816. if (!hasOwn(target, key)) {
  13817. return
  13818. }
  13819. delete target[key];
  13820. if (!ob) {
  13821. return
  13822. }
  13823. ob.dep.notify();
  13824. }
  13825. /**
  13826. * Collect dependencies on array elements when the array is touched, since
  13827. * we cannot intercept array element access like property getters.
  13828. */
  13829. function dependArray (value) {
  13830. for (var e = (void 0), i = 0, l = value.length; i < l; i++) {
  13831. e = value[i];
  13832. e && e.__ob__ && e.__ob__.dep.depend();
  13833. if (Array.isArray(e)) {
  13834. dependArray(e);
  13835. }
  13836. }
  13837. }
  13838. /* */
  13839. /**
  13840. * Option overwriting strategies are functions that handle
  13841. * how to merge a parent option value and a child option
  13842. * value into the final value.
  13843. */
  13844. var strats = config.optionMergeStrategies;
  13845. /**
  13846. * Options with restrictions
  13847. */
  13848. if (true) {
  13849. strats.el = strats.propsData = function (parent, child, vm, key) {
  13850. if (!vm) {
  13851. warn(
  13852. "option \"" + key + "\" can only be used during instance " +
  13853. 'creation with the `new` keyword.'
  13854. );
  13855. }
  13856. return defaultStrat(parent, child)
  13857. };
  13858. }
  13859. /**
  13860. * Helper that recursively merges two data objects together.
  13861. */
  13862. function mergeData (to, from) {
  13863. if (!from) { return to }
  13864. var key, toVal, fromVal;
  13865. var keys = hasSymbol
  13866. ? Reflect.ownKeys(from)
  13867. : Object.keys(from);
  13868. for (var i = 0; i < keys.length; i++) {
  13869. key = keys[i];
  13870. // in case the object is already observed...
  13871. if (key === '__ob__') { continue }
  13872. toVal = to[key];
  13873. fromVal = from[key];
  13874. if (!hasOwn(to, key)) {
  13875. set(to, key, fromVal);
  13876. } else if (
  13877. toVal !== fromVal &&
  13878. isPlainObject(toVal) &&
  13879. isPlainObject(fromVal)
  13880. ) {
  13881. mergeData(toVal, fromVal);
  13882. }
  13883. }
  13884. return to
  13885. }
  13886. /**
  13887. * Data
  13888. */
  13889. function mergeDataOrFn (
  13890. parentVal,
  13891. childVal,
  13892. vm
  13893. ) {
  13894. if (!vm) {
  13895. // in a Vue.extend merge, both should be functions
  13896. if (!childVal) {
  13897. return parentVal
  13898. }
  13899. if (!parentVal) {
  13900. return childVal
  13901. }
  13902. // when parentVal & childVal are both present,
  13903. // we need to return a function that returns the
  13904. // merged result of both functions... no need to
  13905. // check if parentVal is a function here because
  13906. // it has to be a function to pass previous merges.
  13907. return function mergedDataFn () {
  13908. return mergeData(
  13909. typeof childVal === 'function' ? childVal.call(this, this) : childVal,
  13910. typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal
  13911. )
  13912. }
  13913. } else {
  13914. return function mergedInstanceDataFn () {
  13915. // instance merge
  13916. var instanceData = typeof childVal === 'function'
  13917. ? childVal.call(vm, vm)
  13918. : childVal;
  13919. var defaultData = typeof parentVal === 'function'
  13920. ? parentVal.call(vm, vm)
  13921. : parentVal;
  13922. if (instanceData) {
  13923. return mergeData(instanceData, defaultData)
  13924. } else {
  13925. return defaultData
  13926. }
  13927. }
  13928. }
  13929. }
  13930. strats.data = function (
  13931. parentVal,
  13932. childVal,
  13933. vm
  13934. ) {
  13935. if (!vm) {
  13936. if (childVal && typeof childVal !== 'function') {
  13937. true && warn(
  13938. 'The "data" option should be a function ' +
  13939. 'that returns a per-instance value in component ' +
  13940. 'definitions.',
  13941. vm
  13942. );
  13943. return parentVal
  13944. }
  13945. return mergeDataOrFn(parentVal, childVal)
  13946. }
  13947. return mergeDataOrFn(parentVal, childVal, vm)
  13948. };
  13949. /**
  13950. * Hooks and props are merged as arrays.
  13951. */
  13952. function mergeHook (
  13953. parentVal,
  13954. childVal
  13955. ) {
  13956. var res = childVal
  13957. ? parentVal
  13958. ? parentVal.concat(childVal)
  13959. : Array.isArray(childVal)
  13960. ? childVal
  13961. : [childVal]
  13962. : parentVal;
  13963. return res
  13964. ? dedupeHooks(res)
  13965. : res
  13966. }
  13967. function dedupeHooks (hooks) {
  13968. var res = [];
  13969. for (var i = 0; i < hooks.length; i++) {
  13970. if (res.indexOf(hooks[i]) === -1) {
  13971. res.push(hooks[i]);
  13972. }
  13973. }
  13974. return res
  13975. }
  13976. LIFECYCLE_HOOKS.forEach(function (hook) {
  13977. strats[hook] = mergeHook;
  13978. });
  13979. /**
  13980. * Assets
  13981. *
  13982. * When a vm is present (instance creation), we need to do
  13983. * a three-way merge between constructor options, instance
  13984. * options and parent options.
  13985. */
  13986. function mergeAssets (
  13987. parentVal,
  13988. childVal,
  13989. vm,
  13990. key
  13991. ) {
  13992. var res = Object.create(parentVal || null);
  13993. if (childVal) {
  13994. true && assertObjectType(key, childVal, vm);
  13995. return extend(res, childVal)
  13996. } else {
  13997. return res
  13998. }
  13999. }
  14000. ASSET_TYPES.forEach(function (type) {
  14001. strats[type + 's'] = mergeAssets;
  14002. });
  14003. /**
  14004. * Watchers.
  14005. *
  14006. * Watchers hashes should not overwrite one
  14007. * another, so we merge them as arrays.
  14008. */
  14009. strats.watch = function (
  14010. parentVal,
  14011. childVal,
  14012. vm,
  14013. key
  14014. ) {
  14015. // work around Firefox's Object.prototype.watch...
  14016. if (parentVal === nativeWatch) { parentVal = undefined; }
  14017. if (childVal === nativeWatch) { childVal = undefined; }
  14018. /* istanbul ignore if */
  14019. if (!childVal) { return Object.create(parentVal || null) }
  14020. if (true) {
  14021. assertObjectType(key, childVal, vm);
  14022. }
  14023. if (!parentVal) { return childVal }
  14024. var ret = {};
  14025. extend(ret, parentVal);
  14026. for (var key$1 in childVal) {
  14027. var parent = ret[key$1];
  14028. var child = childVal[key$1];
  14029. if (parent && !Array.isArray(parent)) {
  14030. parent = [parent];
  14031. }
  14032. ret[key$1] = parent
  14033. ? parent.concat(child)
  14034. : Array.isArray(child) ? child : [child];
  14035. }
  14036. return ret
  14037. };
  14038. /**
  14039. * Other object hashes.
  14040. */
  14041. strats.props =
  14042. strats.methods =
  14043. strats.inject =
  14044. strats.computed = function (
  14045. parentVal,
  14046. childVal,
  14047. vm,
  14048. key
  14049. ) {
  14050. if (childVal && "development" !== 'production') {
  14051. assertObjectType(key, childVal, vm);
  14052. }
  14053. if (!parentVal) { return childVal }
  14054. var ret = Object.create(null);
  14055. extend(ret, parentVal);
  14056. if (childVal) { extend(ret, childVal); }
  14057. return ret
  14058. };
  14059. strats.provide = mergeDataOrFn;
  14060. /**
  14061. * Default strategy.
  14062. */
  14063. var defaultStrat = function (parentVal, childVal) {
  14064. return childVal === undefined
  14065. ? parentVal
  14066. : childVal
  14067. };
  14068. /**
  14069. * Validate component names
  14070. */
  14071. function checkComponents (options) {
  14072. for (var key in options.components) {
  14073. validateComponentName(key);
  14074. }
  14075. }
  14076. function validateComponentName (name) {
  14077. if (!new RegExp(("^[a-zA-Z][\\-\\.0-9_" + (unicodeRegExp.source) + "]*$")).test(name)) {
  14078. warn(
  14079. 'Invalid component name: "' + name + '". Component names ' +
  14080. 'should conform to valid custom element name in html5 specification.'
  14081. );
  14082. }
  14083. if (isBuiltInTag(name) || config.isReservedTag(name)) {
  14084. warn(
  14085. 'Do not use built-in or reserved HTML elements as component ' +
  14086. 'id: ' + name
  14087. );
  14088. }
  14089. }
  14090. /**
  14091. * Ensure all props option syntax are normalized into the
  14092. * Object-based format.
  14093. */
  14094. function normalizeProps (options, vm) {
  14095. var props = options.props;
  14096. if (!props) { return }
  14097. var res = {};
  14098. var i, val, name;
  14099. if (Array.isArray(props)) {
  14100. i = props.length;
  14101. while (i--) {
  14102. val = props[i];
  14103. if (typeof val === 'string') {
  14104. name = camelize(val);
  14105. res[name] = { type: null };
  14106. } else if (true) {
  14107. warn('props must be strings when using array syntax.');
  14108. }
  14109. }
  14110. } else if (isPlainObject(props)) {
  14111. for (var key in props) {
  14112. val = props[key];
  14113. name = camelize(key);
  14114. res[name] = isPlainObject(val)
  14115. ? val
  14116. : { type: val };
  14117. }
  14118. } else if (true) {
  14119. warn(
  14120. "Invalid value for option \"props\": expected an Array or an Object, " +
  14121. "but got " + (toRawType(props)) + ".",
  14122. vm
  14123. );
  14124. }
  14125. options.props = res;
  14126. }
  14127. /**
  14128. * Normalize all injections into Object-based format
  14129. */
  14130. function normalizeInject (options, vm) {
  14131. var inject = options.inject;
  14132. if (!inject) { return }
  14133. var normalized = options.inject = {};
  14134. if (Array.isArray(inject)) {
  14135. for (var i = 0; i < inject.length; i++) {
  14136. normalized[inject[i]] = { from: inject[i] };
  14137. }
  14138. } else if (isPlainObject(inject)) {
  14139. for (var key in inject) {
  14140. var val = inject[key];
  14141. normalized[key] = isPlainObject(val)
  14142. ? extend({ from: key }, val)
  14143. : { from: val };
  14144. }
  14145. } else if (true) {
  14146. warn(
  14147. "Invalid value for option \"inject\": expected an Array or an Object, " +
  14148. "but got " + (toRawType(inject)) + ".",
  14149. vm
  14150. );
  14151. }
  14152. }
  14153. /**
  14154. * Normalize raw function directives into object format.
  14155. */
  14156. function normalizeDirectives (options) {
  14157. var dirs = options.directives;
  14158. if (dirs) {
  14159. for (var key in dirs) {
  14160. var def$$1 = dirs[key];
  14161. if (typeof def$$1 === 'function') {
  14162. dirs[key] = { bind: def$$1, update: def$$1 };
  14163. }
  14164. }
  14165. }
  14166. }
  14167. function assertObjectType (name, value, vm) {
  14168. if (!isPlainObject(value)) {
  14169. warn(
  14170. "Invalid value for option \"" + name + "\": expected an Object, " +
  14171. "but got " + (toRawType(value)) + ".",
  14172. vm
  14173. );
  14174. }
  14175. }
  14176. /**
  14177. * Merge two option objects into a new one.
  14178. * Core utility used in both instantiation and inheritance.
  14179. */
  14180. function mergeOptions (
  14181. parent,
  14182. child,
  14183. vm
  14184. ) {
  14185. if (true) {
  14186. checkComponents(child);
  14187. }
  14188. if (typeof child === 'function') {
  14189. child = child.options;
  14190. }
  14191. normalizeProps(child, vm);
  14192. normalizeInject(child, vm);
  14193. normalizeDirectives(child);
  14194. // Apply extends and mixins on the child options,
  14195. // but only if it is a raw options object that isn't
  14196. // the result of another mergeOptions call.
  14197. // Only merged options has the _base property.
  14198. if (!child._base) {
  14199. if (child.extends) {
  14200. parent = mergeOptions(parent, child.extends, vm);
  14201. }
  14202. if (child.mixins) {
  14203. for (var i = 0, l = child.mixins.length; i < l; i++) {
  14204. parent = mergeOptions(parent, child.mixins[i], vm);
  14205. }
  14206. }
  14207. }
  14208. var options = {};
  14209. var key;
  14210. for (key in parent) {
  14211. mergeField(key);
  14212. }
  14213. for (key in child) {
  14214. if (!hasOwn(parent, key)) {
  14215. mergeField(key);
  14216. }
  14217. }
  14218. function mergeField (key) {
  14219. var strat = strats[key] || defaultStrat;
  14220. options[key] = strat(parent[key], child[key], vm, key);
  14221. }
  14222. return options
  14223. }
  14224. /**
  14225. * Resolve an asset.
  14226. * This function is used because child instances need access
  14227. * to assets defined in its ancestor chain.
  14228. */
  14229. function resolveAsset (
  14230. options,
  14231. type,
  14232. id,
  14233. warnMissing
  14234. ) {
  14235. /* istanbul ignore if */
  14236. if (typeof id !== 'string') {
  14237. return
  14238. }
  14239. var assets = options[type];
  14240. // check local registration variations first
  14241. if (hasOwn(assets, id)) { return assets[id] }
  14242. var camelizedId = camelize(id);
  14243. if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }
  14244. var PascalCaseId = capitalize(camelizedId);
  14245. if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }
  14246. // fallback to prototype chain
  14247. var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];
  14248. if ( true && warnMissing && !res) {
  14249. warn(
  14250. 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,
  14251. options
  14252. );
  14253. }
  14254. return res
  14255. }
  14256. /* */
  14257. function validateProp (
  14258. key,
  14259. propOptions,
  14260. propsData,
  14261. vm
  14262. ) {
  14263. var prop = propOptions[key];
  14264. var absent = !hasOwn(propsData, key);
  14265. var value = propsData[key];
  14266. // boolean casting
  14267. var booleanIndex = getTypeIndex(Boolean, prop.type);
  14268. if (booleanIndex > -1) {
  14269. if (absent && !hasOwn(prop, 'default')) {
  14270. value = false;
  14271. } else if (value === '' || value === hyphenate(key)) {
  14272. // only cast empty string / same name to boolean if
  14273. // boolean has higher priority
  14274. var stringIndex = getTypeIndex(String, prop.type);
  14275. if (stringIndex < 0 || booleanIndex < stringIndex) {
  14276. value = true;
  14277. }
  14278. }
  14279. }
  14280. // check default value
  14281. if (value === undefined) {
  14282. value = getPropDefaultValue(vm, prop, key);
  14283. // since the default value is a fresh copy,
  14284. // make sure to observe it.
  14285. var prevShouldObserve = shouldObserve;
  14286. toggleObserving(true);
  14287. observe(value);
  14288. toggleObserving(prevShouldObserve);
  14289. }
  14290. if (
  14291. true
  14292. ) {
  14293. assertProp(prop, key, value, vm, absent);
  14294. }
  14295. return value
  14296. }
  14297. /**
  14298. * Get the default value of a prop.
  14299. */
  14300. function getPropDefaultValue (vm, prop, key) {
  14301. // no default, return undefined
  14302. if (!hasOwn(prop, 'default')) {
  14303. return undefined
  14304. }
  14305. var def = prop.default;
  14306. // warn against non-factory defaults for Object & Array
  14307. if ( true && isObject(def)) {
  14308. warn(
  14309. 'Invalid default value for prop "' + key + '": ' +
  14310. 'Props with type Object/Array must use a factory function ' +
  14311. 'to return the default value.',
  14312. vm
  14313. );
  14314. }
  14315. // the raw prop value was also undefined from previous render,
  14316. // return previous default value to avoid unnecessary watcher trigger
  14317. if (vm && vm.$options.propsData &&
  14318. vm.$options.propsData[key] === undefined &&
  14319. vm._props[key] !== undefined
  14320. ) {
  14321. return vm._props[key]
  14322. }
  14323. // call factory function for non-Function types
  14324. // a value is Function if its prototype is function even across different execution context
  14325. return typeof def === 'function' && getType(prop.type) !== 'Function'
  14326. ? def.call(vm)
  14327. : def
  14328. }
  14329. /**
  14330. * Assert whether a prop is valid.
  14331. */
  14332. function assertProp (
  14333. prop,
  14334. name,
  14335. value,
  14336. vm,
  14337. absent
  14338. ) {
  14339. if (prop.required && absent) {
  14340. warn(
  14341. 'Missing required prop: "' + name + '"',
  14342. vm
  14343. );
  14344. return
  14345. }
  14346. if (value == null && !prop.required) {
  14347. return
  14348. }
  14349. var type = prop.type;
  14350. var valid = !type || type === true;
  14351. var expectedTypes = [];
  14352. if (type) {
  14353. if (!Array.isArray(type)) {
  14354. type = [type];
  14355. }
  14356. for (var i = 0; i < type.length && !valid; i++) {
  14357. var assertedType = assertType(value, type[i]);
  14358. expectedTypes.push(assertedType.expectedType || '');
  14359. valid = assertedType.valid;
  14360. }
  14361. }
  14362. if (!valid) {
  14363. warn(
  14364. getInvalidTypeMessage(name, value, expectedTypes),
  14365. vm
  14366. );
  14367. return
  14368. }
  14369. var validator = prop.validator;
  14370. if (validator) {
  14371. if (!validator(value)) {
  14372. warn(
  14373. 'Invalid prop: custom validator check failed for prop "' + name + '".',
  14374. vm
  14375. );
  14376. }
  14377. }
  14378. }
  14379. var simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;
  14380. function assertType (value, type) {
  14381. var valid;
  14382. var expectedType = getType(type);
  14383. if (simpleCheckRE.test(expectedType)) {
  14384. var t = typeof value;
  14385. valid = t === expectedType.toLowerCase();
  14386. // for primitive wrapper objects
  14387. if (!valid && t === 'object') {
  14388. valid = value instanceof type;
  14389. }
  14390. } else if (expectedType === 'Object') {
  14391. valid = isPlainObject(value);
  14392. } else if (expectedType === 'Array') {
  14393. valid = Array.isArray(value);
  14394. } else {
  14395. valid = value instanceof type;
  14396. }
  14397. return {
  14398. valid: valid,
  14399. expectedType: expectedType
  14400. }
  14401. }
  14402. /**
  14403. * Use function string name to check built-in types,
  14404. * because a simple equality check will fail when running
  14405. * across different vms / iframes.
  14406. */
  14407. function getType (fn) {
  14408. var match = fn && fn.toString().match(/^\s*function (\w+)/);
  14409. return match ? match[1] : ''
  14410. }
  14411. function isSameType (a, b) {
  14412. return getType(a) === getType(b)
  14413. }
  14414. function getTypeIndex (type, expectedTypes) {
  14415. if (!Array.isArray(expectedTypes)) {
  14416. return isSameType(expectedTypes, type) ? 0 : -1
  14417. }
  14418. for (var i = 0, len = expectedTypes.length; i < len; i++) {
  14419. if (isSameType(expectedTypes[i], type)) {
  14420. return i
  14421. }
  14422. }
  14423. return -1
  14424. }
  14425. function getInvalidTypeMessage (name, value, expectedTypes) {
  14426. var message = "Invalid prop: type check failed for prop \"" + name + "\"." +
  14427. " Expected " + (expectedTypes.map(capitalize).join(', '));
  14428. var expectedType = expectedTypes[0];
  14429. var receivedType = toRawType(value);
  14430. var expectedValue = styleValue(value, expectedType);
  14431. var receivedValue = styleValue(value, receivedType);
  14432. // check if we need to specify expected value
  14433. if (expectedTypes.length === 1 &&
  14434. isExplicable(expectedType) &&
  14435. !isBoolean(expectedType, receivedType)) {
  14436. message += " with value " + expectedValue;
  14437. }
  14438. message += ", got " + receivedType + " ";
  14439. // check if we need to specify received value
  14440. if (isExplicable(receivedType)) {
  14441. message += "with value " + receivedValue + ".";
  14442. }
  14443. return message
  14444. }
  14445. function styleValue (value, type) {
  14446. if (type === 'String') {
  14447. return ("\"" + value + "\"")
  14448. } else if (type === 'Number') {
  14449. return ("" + (Number(value)))
  14450. } else {
  14451. return ("" + value)
  14452. }
  14453. }
  14454. function isExplicable (value) {
  14455. var explicitTypes = ['string', 'number', 'boolean'];
  14456. return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })
  14457. }
  14458. function isBoolean () {
  14459. var args = [], len = arguments.length;
  14460. while ( len-- ) args[ len ] = arguments[ len ];
  14461. return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })
  14462. }
  14463. /* */
  14464. function handleError (err, vm, info) {
  14465. // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.
  14466. // See: https://github.com/vuejs/vuex/issues/1505
  14467. pushTarget();
  14468. try {
  14469. if (vm) {
  14470. var cur = vm;
  14471. while ((cur = cur.$parent)) {
  14472. var hooks = cur.$options.errorCaptured;
  14473. if (hooks) {
  14474. for (var i = 0; i < hooks.length; i++) {
  14475. try {
  14476. var capture = hooks[i].call(cur, err, vm, info) === false;
  14477. if (capture) { return }
  14478. } catch (e) {
  14479. globalHandleError(e, cur, 'errorCaptured hook');
  14480. }
  14481. }
  14482. }
  14483. }
  14484. }
  14485. globalHandleError(err, vm, info);
  14486. } finally {
  14487. popTarget();
  14488. }
  14489. }
  14490. function invokeWithErrorHandling (
  14491. handler,
  14492. context,
  14493. args,
  14494. vm,
  14495. info
  14496. ) {
  14497. var res;
  14498. try {
  14499. res = args ? handler.apply(context, args) : handler.call(context);
  14500. if (res && !res._isVue && isPromise(res) && !res._handled) {
  14501. res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
  14502. // issue #9511
  14503. // avoid catch triggering multiple times when nested calls
  14504. res._handled = true;
  14505. }
  14506. } catch (e) {
  14507. handleError(e, vm, info);
  14508. }
  14509. return res
  14510. }
  14511. function globalHandleError (err, vm, info) {
  14512. if (config.errorHandler) {
  14513. try {
  14514. return config.errorHandler.call(null, err, vm, info)
  14515. } catch (e) {
  14516. // if the user intentionally throws the original error in the handler,
  14517. // do not log it twice
  14518. if (e !== err) {
  14519. logError(e, null, 'config.errorHandler');
  14520. }
  14521. }
  14522. }
  14523. logError(err, vm, info);
  14524. }
  14525. function logError (err, vm, info) {
  14526. if (true) {
  14527. warn(("Error in " + info + ": \"" + (err.toString()) + "\""), vm);
  14528. }
  14529. /* istanbul ignore else */
  14530. if ((inBrowser || inWeex) && typeof console !== 'undefined') {
  14531. console.error(err);
  14532. } else {
  14533. throw err
  14534. }
  14535. }
  14536. /* */
  14537. var callbacks = [];
  14538. var pending = false;
  14539. function flushCallbacks () {
  14540. pending = false;
  14541. var copies = callbacks.slice(0);
  14542. callbacks.length = 0;
  14543. for (var i = 0; i < copies.length; i++) {
  14544. copies[i]();
  14545. }
  14546. }
  14547. // Here we have async deferring wrappers using microtasks.
  14548. // In 2.5 we used (macro) tasks (in combination with microtasks).
  14549. // However, it has subtle problems when state is changed right before repaint
  14550. // (e.g. #6813, out-in transitions).
  14551. // Also, using (macro) tasks in event handler would cause some weird behaviors
  14552. // that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).
  14553. // So we now use microtasks everywhere, again.
  14554. // A major drawback of this tradeoff is that there are some scenarios
  14555. // where microtasks have too high a priority and fire in between supposedly
  14556. // sequential events (e.g. #4521, #6690, which have workarounds)
  14557. // or even between bubbling of the same event (#6566).
  14558. var timerFunc;
  14559. // The nextTick behavior leverages the microtask queue, which can be accessed
  14560. // via either native Promise.then or MutationObserver.
  14561. // MutationObserver has wider support, however it is seriously bugged in
  14562. // UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It
  14563. // completely stops working after triggering a few times... so, if native
  14564. // Promise is available, we will use it:
  14565. /* istanbul ignore next, $flow-disable-line */
  14566. if (typeof Promise !== 'undefined' && isNative(Promise)) {
  14567. var p = Promise.resolve();
  14568. timerFunc = function () {
  14569. p.then(flushCallbacks);
  14570. // In problematic UIWebViews, Promise.then doesn't completely break, but
  14571. // it can get stuck in a weird state where callbacks are pushed into the
  14572. // microtask queue but the queue isn't being flushed, until the browser
  14573. // needs to do some other work, e.g. handle a timer. Therefore we can
  14574. // "force" the microtask queue to be flushed by adding an empty timer.
  14575. if (isIOS) { setTimeout(noop); }
  14576. };
  14577. } else if (!isIE && typeof MutationObserver !== 'undefined' && (
  14578. isNative(MutationObserver) ||
  14579. // PhantomJS and iOS 7.x
  14580. MutationObserver.toString() === '[object MutationObserverConstructor]'
  14581. )) {
  14582. // Use MutationObserver where native Promise is not available,
  14583. // e.g. PhantomJS, iOS7, Android 4.4
  14584. // (#6466 MutationObserver is unreliable in IE11)
  14585. var counter = 1;
  14586. var observer = new MutationObserver(flushCallbacks);
  14587. var textNode = document.createTextNode(String(counter));
  14588. observer.observe(textNode, {
  14589. characterData: true
  14590. });
  14591. timerFunc = function () {
  14592. counter = (counter + 1) % 2;
  14593. textNode.data = String(counter);
  14594. };
  14595. } else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {
  14596. // Fallback to setImmediate.
  14597. // Technically it leverages the (macro) task queue,
  14598. // but it is still a better choice than setTimeout.
  14599. timerFunc = function () {
  14600. setImmediate(flushCallbacks);
  14601. };
  14602. } else {
  14603. // Fallback to setTimeout.
  14604. timerFunc = function () {
  14605. setTimeout(flushCallbacks, 0);
  14606. };
  14607. }
  14608. function nextTick (cb, ctx) {
  14609. var _resolve;
  14610. callbacks.push(function () {
  14611. if (cb) {
  14612. try {
  14613. cb.call(ctx);
  14614. } catch (e) {
  14615. handleError(e, ctx, 'nextTick');
  14616. }
  14617. } else if (_resolve) {
  14618. _resolve(ctx);
  14619. }
  14620. });
  14621. if (!pending) {
  14622. pending = true;
  14623. timerFunc();
  14624. }
  14625. // $flow-disable-line
  14626. if (!cb && typeof Promise !== 'undefined') {
  14627. return new Promise(function (resolve) {
  14628. _resolve = resolve;
  14629. })
  14630. }
  14631. }
  14632. /* */
  14633. /* not type checking this file because flow doesn't play well with Proxy */
  14634. var initProxy;
  14635. if (true) {
  14636. var allowedGlobals = makeMap(
  14637. 'Infinity,undefined,NaN,isFinite,isNaN,' +
  14638. 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +
  14639. 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +
  14640. 'require' // for Webpack/Browserify
  14641. );
  14642. var warnNonPresent = function (target, key) {
  14643. warn(
  14644. "Property or method \"" + key + "\" is not defined on the instance but " +
  14645. 'referenced during render. Make sure that this property is reactive, ' +
  14646. 'either in the data option, or for class-based components, by ' +
  14647. 'initializing the property. ' +
  14648. 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',
  14649. target
  14650. );
  14651. };
  14652. var warnReservedPrefix = function (target, key) {
  14653. warn(
  14654. "Property \"" + key + "\" must be accessed with \"$data." + key + "\" because " +
  14655. 'properties starting with "$" or "_" are not proxied in the Vue instance to ' +
  14656. 'prevent conflicts with Vue internals. ' +
  14657. 'See: https://vuejs.org/v2/api/#data',
  14658. target
  14659. );
  14660. };
  14661. var hasProxy =
  14662. typeof Proxy !== 'undefined' && isNative(Proxy);
  14663. if (hasProxy) {
  14664. var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');
  14665. config.keyCodes = new Proxy(config.keyCodes, {
  14666. set: function set (target, key, value) {
  14667. if (isBuiltInModifier(key)) {
  14668. warn(("Avoid overwriting built-in modifier in config.keyCodes: ." + key));
  14669. return false
  14670. } else {
  14671. target[key] = value;
  14672. return true
  14673. }
  14674. }
  14675. });
  14676. }
  14677. var hasHandler = {
  14678. has: function has (target, key) {
  14679. var has = key in target;
  14680. var isAllowed = allowedGlobals(key) ||
  14681. (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));
  14682. if (!has && !isAllowed) {
  14683. if (key in target.$data) { warnReservedPrefix(target, key); }
  14684. else { warnNonPresent(target, key); }
  14685. }
  14686. return has || !isAllowed
  14687. }
  14688. };
  14689. var getHandler = {
  14690. get: function get (target, key) {
  14691. if (typeof key === 'string' && !(key in target)) {
  14692. if (key in target.$data) { warnReservedPrefix(target, key); }
  14693. else { warnNonPresent(target, key); }
  14694. }
  14695. return target[key]
  14696. }
  14697. };
  14698. initProxy = function initProxy (vm) {
  14699. if (hasProxy) {
  14700. // determine which proxy handler to use
  14701. var options = vm.$options;
  14702. var handlers = options.render && options.render._withStripped
  14703. ? getHandler
  14704. : hasHandler;
  14705. vm._renderProxy = new Proxy(vm, handlers);
  14706. } else {
  14707. vm._renderProxy = vm;
  14708. }
  14709. };
  14710. }
  14711. /* */
  14712. var seenObjects = new _Set();
  14713. /**
  14714. * Recursively traverse an object to evoke all converted
  14715. * getters, so that every nested property inside the object
  14716. * is collected as a "deep" dependency.
  14717. */
  14718. function traverse (val) {
  14719. _traverse(val, seenObjects);
  14720. seenObjects.clear();
  14721. }
  14722. function _traverse (val, seen) {
  14723. var i, keys;
  14724. var isA = Array.isArray(val);
  14725. if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {
  14726. return
  14727. }
  14728. if (val.__ob__) {
  14729. var depId = val.__ob__.dep.id;
  14730. if (seen.has(depId)) {
  14731. return
  14732. }
  14733. seen.add(depId);
  14734. }
  14735. if (isA) {
  14736. i = val.length;
  14737. while (i--) { _traverse(val[i], seen); }
  14738. } else {
  14739. keys = Object.keys(val);
  14740. i = keys.length;
  14741. while (i--) { _traverse(val[keys[i]], seen); }
  14742. }
  14743. }
  14744. var mark;
  14745. var measure;
  14746. if (true) {
  14747. var perf = inBrowser && window.performance;
  14748. /* istanbul ignore if */
  14749. if (
  14750. perf &&
  14751. perf.mark &&
  14752. perf.measure &&
  14753. perf.clearMarks &&
  14754. perf.clearMeasures
  14755. ) {
  14756. mark = function (tag) { return perf.mark(tag); };
  14757. measure = function (name, startTag, endTag) {
  14758. perf.measure(name, startTag, endTag);
  14759. perf.clearMarks(startTag);
  14760. perf.clearMarks(endTag);
  14761. // perf.clearMeasures(name)
  14762. };
  14763. }
  14764. }
  14765. /* */
  14766. var normalizeEvent = cached(function (name) {
  14767. var passive = name.charAt(0) === '&';
  14768. name = passive ? name.slice(1) : name;
  14769. var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first
  14770. name = once$$1 ? name.slice(1) : name;
  14771. var capture = name.charAt(0) === '!';
  14772. name = capture ? name.slice(1) : name;
  14773. return {
  14774. name: name,
  14775. once: once$$1,
  14776. capture: capture,
  14777. passive: passive
  14778. }
  14779. });
  14780. function createFnInvoker (fns, vm) {
  14781. function invoker () {
  14782. var arguments$1 = arguments;
  14783. var fns = invoker.fns;
  14784. if (Array.isArray(fns)) {
  14785. var cloned = fns.slice();
  14786. for (var i = 0; i < cloned.length; i++) {
  14787. invokeWithErrorHandling(cloned[i], null, arguments$1, vm, "v-on handler");
  14788. }
  14789. } else {
  14790. // return handler return value for single handlers
  14791. return invokeWithErrorHandling(fns, null, arguments, vm, "v-on handler")
  14792. }
  14793. }
  14794. invoker.fns = fns;
  14795. return invoker
  14796. }
  14797. function updateListeners (
  14798. on,
  14799. oldOn,
  14800. add,
  14801. remove$$1,
  14802. createOnceHandler,
  14803. vm
  14804. ) {
  14805. var name, def$$1, cur, old, event;
  14806. for (name in on) {
  14807. def$$1 = cur = on[name];
  14808. old = oldOn[name];
  14809. event = normalizeEvent(name);
  14810. if (isUndef(cur)) {
  14811. true && warn(
  14812. "Invalid handler for event \"" + (event.name) + "\": got " + String(cur),
  14813. vm
  14814. );
  14815. } else if (isUndef(old)) {
  14816. if (isUndef(cur.fns)) {
  14817. cur = on[name] = createFnInvoker(cur, vm);
  14818. }
  14819. if (isTrue(event.once)) {
  14820. cur = on[name] = createOnceHandler(event.name, cur, event.capture);
  14821. }
  14822. add(event.name, cur, event.capture, event.passive, event.params);
  14823. } else if (cur !== old) {
  14824. old.fns = cur;
  14825. on[name] = old;
  14826. }
  14827. }
  14828. for (name in oldOn) {
  14829. if (isUndef(on[name])) {
  14830. event = normalizeEvent(name);
  14831. remove$$1(event.name, oldOn[name], event.capture);
  14832. }
  14833. }
  14834. }
  14835. /* */
  14836. /* */
  14837. // fixed by xxxxxx (mp properties)
  14838. function extractPropertiesFromVNodeData(data, Ctor, res, context) {
  14839. var propOptions = Ctor.options.mpOptions && Ctor.options.mpOptions.properties;
  14840. if (isUndef(propOptions)) {
  14841. return res
  14842. }
  14843. var externalClasses = Ctor.options.mpOptions.externalClasses || [];
  14844. var attrs = data.attrs;
  14845. var props = data.props;
  14846. if (isDef(attrs) || isDef(props)) {
  14847. for (var key in propOptions) {
  14848. var altKey = hyphenate(key);
  14849. var result = checkProp(res, props, key, altKey, true) ||
  14850. checkProp(res, attrs, key, altKey, false);
  14851. // externalClass
  14852. if (
  14853. result &&
  14854. res[key] &&
  14855. externalClasses.indexOf(altKey) !== -1 &&
  14856. context[camelize(res[key])]
  14857. ) {
  14858. // 赋值 externalClass 真正的值(模板里 externalClass 的值可能是字符串)
  14859. res[key] = context[camelize(res[key])];
  14860. }
  14861. }
  14862. }
  14863. return res
  14864. }
  14865. function extractPropsFromVNodeData (
  14866. data,
  14867. Ctor,
  14868. tag,
  14869. context// fixed by xxxxxx
  14870. ) {
  14871. // we are only extracting raw values here.
  14872. // validation and default values are handled in the child
  14873. // component itself.
  14874. var propOptions = Ctor.options.props;
  14875. if (isUndef(propOptions)) {
  14876. // fixed by xxxxxx
  14877. return extractPropertiesFromVNodeData(data, Ctor, {}, context)
  14878. }
  14879. var res = {};
  14880. var attrs = data.attrs;
  14881. var props = data.props;
  14882. if (isDef(attrs) || isDef(props)) {
  14883. for (var key in propOptions) {
  14884. var altKey = hyphenate(key);
  14885. if (true) {
  14886. var keyInLowerCase = key.toLowerCase();
  14887. if (
  14888. key !== keyInLowerCase &&
  14889. attrs && hasOwn(attrs, keyInLowerCase)
  14890. ) {
  14891. tip(
  14892. "Prop \"" + keyInLowerCase + "\" is passed to component " +
  14893. (formatComponentName(tag || Ctor)) + ", but the declared prop name is" +
  14894. " \"" + key + "\". " +
  14895. "Note that HTML attributes are case-insensitive and camelCased " +
  14896. "props need to use their kebab-case equivalents when using in-DOM " +
  14897. "templates. You should probably use \"" + altKey + "\" instead of \"" + key + "\"."
  14898. );
  14899. }
  14900. }
  14901. checkProp(res, props, key, altKey, true) ||
  14902. checkProp(res, attrs, key, altKey, false);
  14903. }
  14904. }
  14905. // fixed by xxxxxx
  14906. return extractPropertiesFromVNodeData(data, Ctor, res, context)
  14907. }
  14908. function checkProp (
  14909. res,
  14910. hash,
  14911. key,
  14912. altKey,
  14913. preserve
  14914. ) {
  14915. if (isDef(hash)) {
  14916. if (hasOwn(hash, key)) {
  14917. res[key] = hash[key];
  14918. if (!preserve) {
  14919. delete hash[key];
  14920. }
  14921. return true
  14922. } else if (hasOwn(hash, altKey)) {
  14923. res[key] = hash[altKey];
  14924. if (!preserve) {
  14925. delete hash[altKey];
  14926. }
  14927. return true
  14928. }
  14929. }
  14930. return false
  14931. }
  14932. /* */
  14933. // The template compiler attempts to minimize the need for normalization by
  14934. // statically analyzing the template at compile time.
  14935. //
  14936. // For plain HTML markup, normalization can be completely skipped because the
  14937. // generated render function is guaranteed to return Array<VNode>. There are
  14938. // two cases where extra normalization is needed:
  14939. // 1. When the children contains components - because a functional component
  14940. // may return an Array instead of a single root. In this case, just a simple
  14941. // normalization is needed - if any child is an Array, we flatten the whole
  14942. // thing with Array.prototype.concat. It is guaranteed to be only 1-level deep
  14943. // because functional components already normalize their own children.
  14944. function simpleNormalizeChildren (children) {
  14945. for (var i = 0; i < children.length; i++) {
  14946. if (Array.isArray(children[i])) {
  14947. return Array.prototype.concat.apply([], children)
  14948. }
  14949. }
  14950. return children
  14951. }
  14952. // 2. When the children contains constructs that always generated nested Arrays,
  14953. // e.g. <template>, <slot>, v-for, or when the children is provided by user
  14954. // with hand-written render functions / JSX. In such cases a full normalization
  14955. // is needed to cater to all possible types of children values.
  14956. function normalizeChildren (children) {
  14957. return isPrimitive(children)
  14958. ? [createTextVNode(children)]
  14959. : Array.isArray(children)
  14960. ? normalizeArrayChildren(children)
  14961. : undefined
  14962. }
  14963. function isTextNode (node) {
  14964. return isDef(node) && isDef(node.text) && isFalse(node.isComment)
  14965. }
  14966. function normalizeArrayChildren (children, nestedIndex) {
  14967. var res = [];
  14968. var i, c, lastIndex, last;
  14969. for (i = 0; i < children.length; i++) {
  14970. c = children[i];
  14971. if (isUndef(c) || typeof c === 'boolean') { continue }
  14972. lastIndex = res.length - 1;
  14973. last = res[lastIndex];
  14974. // nested
  14975. if (Array.isArray(c)) {
  14976. if (c.length > 0) {
  14977. c = normalizeArrayChildren(c, ((nestedIndex || '') + "_" + i));
  14978. // merge adjacent text nodes
  14979. if (isTextNode(c[0]) && isTextNode(last)) {
  14980. res[lastIndex] = createTextVNode(last.text + (c[0]).text);
  14981. c.shift();
  14982. }
  14983. res.push.apply(res, c);
  14984. }
  14985. } else if (isPrimitive(c)) {
  14986. if (isTextNode(last)) {
  14987. // merge adjacent text nodes
  14988. // this is necessary for SSR hydration because text nodes are
  14989. // essentially merged when rendered to HTML strings
  14990. res[lastIndex] = createTextVNode(last.text + c);
  14991. } else if (c !== '') {
  14992. // convert primitive to vnode
  14993. res.push(createTextVNode(c));
  14994. }
  14995. } else {
  14996. if (isTextNode(c) && isTextNode(last)) {
  14997. // merge adjacent text nodes
  14998. res[lastIndex] = createTextVNode(last.text + c.text);
  14999. } else {
  15000. // default key for nested array children (likely generated by v-for)
  15001. if (isTrue(children._isVList) &&
  15002. isDef(c.tag) &&
  15003. isUndef(c.key) &&
  15004. isDef(nestedIndex)) {
  15005. c.key = "__vlist" + nestedIndex + "_" + i + "__";
  15006. }
  15007. res.push(c);
  15008. }
  15009. }
  15010. }
  15011. return res
  15012. }
  15013. /* */
  15014. function initProvide (vm) {
  15015. var provide = vm.$options.provide;
  15016. if (provide) {
  15017. vm._provided = typeof provide === 'function'
  15018. ? provide.call(vm)
  15019. : provide;
  15020. }
  15021. }
  15022. function initInjections (vm) {
  15023. var result = resolveInject(vm.$options.inject, vm);
  15024. if (result) {
  15025. toggleObserving(false);
  15026. Object.keys(result).forEach(function (key) {
  15027. /* istanbul ignore else */
  15028. if (true) {
  15029. defineReactive$$1(vm, key, result[key], function () {
  15030. warn(
  15031. "Avoid mutating an injected value directly since the changes will be " +
  15032. "overwritten whenever the provided component re-renders. " +
  15033. "injection being mutated: \"" + key + "\"",
  15034. vm
  15035. );
  15036. });
  15037. } else {}
  15038. });
  15039. toggleObserving(true);
  15040. }
  15041. }
  15042. function resolveInject (inject, vm) {
  15043. if (inject) {
  15044. // inject is :any because flow is not smart enough to figure out cached
  15045. var result = Object.create(null);
  15046. var keys = hasSymbol
  15047. ? Reflect.ownKeys(inject)
  15048. : Object.keys(inject);
  15049. for (var i = 0; i < keys.length; i++) {
  15050. var key = keys[i];
  15051. // #6574 in case the inject object is observed...
  15052. if (key === '__ob__') { continue }
  15053. var provideKey = inject[key].from;
  15054. var source = vm;
  15055. while (source) {
  15056. if (source._provided && hasOwn(source._provided, provideKey)) {
  15057. result[key] = source._provided[provideKey];
  15058. break
  15059. }
  15060. source = source.$parent;
  15061. }
  15062. if (!source) {
  15063. if ('default' in inject[key]) {
  15064. var provideDefault = inject[key].default;
  15065. result[key] = typeof provideDefault === 'function'
  15066. ? provideDefault.call(vm)
  15067. : provideDefault;
  15068. } else if (true) {
  15069. warn(("Injection \"" + key + "\" not found"), vm);
  15070. }
  15071. }
  15072. }
  15073. return result
  15074. }
  15075. }
  15076. /* */
  15077. /**
  15078. * Runtime helper for resolving raw children VNodes into a slot object.
  15079. */
  15080. function resolveSlots (
  15081. children,
  15082. context
  15083. ) {
  15084. if (!children || !children.length) {
  15085. return {}
  15086. }
  15087. var slots = {};
  15088. for (var i = 0, l = children.length; i < l; i++) {
  15089. var child = children[i];
  15090. var data = child.data;
  15091. // remove slot attribute if the node is resolved as a Vue slot node
  15092. if (data && data.attrs && data.attrs.slot) {
  15093. delete data.attrs.slot;
  15094. }
  15095. // named slots should only be respected if the vnode was rendered in the
  15096. // same context.
  15097. if ((child.context === context || child.fnContext === context) &&
  15098. data && data.slot != null
  15099. ) {
  15100. var name = data.slot;
  15101. var slot = (slots[name] || (slots[name] = []));
  15102. if (child.tag === 'template') {
  15103. slot.push.apply(slot, child.children || []);
  15104. } else {
  15105. slot.push(child);
  15106. }
  15107. } else {
  15108. // fixed by xxxxxx 临时 hack 掉 uni-app 中的异步 name slot page
  15109. if(child.asyncMeta && child.asyncMeta.data && child.asyncMeta.data.slot === 'page'){
  15110. (slots['page'] || (slots['page'] = [])).push(child);
  15111. }else{
  15112. (slots.default || (slots.default = [])).push(child);
  15113. }
  15114. }
  15115. }
  15116. // ignore slots that contains only whitespace
  15117. for (var name$1 in slots) {
  15118. if (slots[name$1].every(isWhitespace)) {
  15119. delete slots[name$1];
  15120. }
  15121. }
  15122. return slots
  15123. }
  15124. function isWhitespace (node) {
  15125. return (node.isComment && !node.asyncFactory) || node.text === ' '
  15126. }
  15127. /* */
  15128. function normalizeScopedSlots (
  15129. slots,
  15130. normalSlots,
  15131. prevSlots
  15132. ) {
  15133. var res;
  15134. var hasNormalSlots = Object.keys(normalSlots).length > 0;
  15135. var isStable = slots ? !!slots.$stable : !hasNormalSlots;
  15136. var key = slots && slots.$key;
  15137. if (!slots) {
  15138. res = {};
  15139. } else if (slots._normalized) {
  15140. // fast path 1: child component re-render only, parent did not change
  15141. return slots._normalized
  15142. } else if (
  15143. isStable &&
  15144. prevSlots &&
  15145. prevSlots !== emptyObject &&
  15146. key === prevSlots.$key &&
  15147. !hasNormalSlots &&
  15148. !prevSlots.$hasNormal
  15149. ) {
  15150. // fast path 2: stable scoped slots w/ no normal slots to proxy,
  15151. // only need to normalize once
  15152. return prevSlots
  15153. } else {
  15154. res = {};
  15155. for (var key$1 in slots) {
  15156. if (slots[key$1] && key$1[0] !== '$') {
  15157. res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);
  15158. }
  15159. }
  15160. }
  15161. // expose normal slots on scopedSlots
  15162. for (var key$2 in normalSlots) {
  15163. if (!(key$2 in res)) {
  15164. res[key$2] = proxyNormalSlot(normalSlots, key$2);
  15165. }
  15166. }
  15167. // avoriaz seems to mock a non-extensible $scopedSlots object
  15168. // and when that is passed down this would cause an error
  15169. if (slots && Object.isExtensible(slots)) {
  15170. (slots)._normalized = res;
  15171. }
  15172. def(res, '$stable', isStable);
  15173. def(res, '$key', key);
  15174. def(res, '$hasNormal', hasNormalSlots);
  15175. return res
  15176. }
  15177. function normalizeScopedSlot(normalSlots, key, fn) {
  15178. var normalized = function () {
  15179. var res = arguments.length ? fn.apply(null, arguments) : fn({});
  15180. res = res && typeof res === 'object' && !Array.isArray(res)
  15181. ? [res] // single vnode
  15182. : normalizeChildren(res);
  15183. return res && (
  15184. res.length === 0 ||
  15185. (res.length === 1 && res[0].isComment) // #9658
  15186. ) ? undefined
  15187. : res
  15188. };
  15189. // this is a slot using the new v-slot syntax without scope. although it is
  15190. // compiled as a scoped slot, render fn users would expect it to be present
  15191. // on this.$slots because the usage is semantically a normal slot.
  15192. if (fn.proxy) {
  15193. Object.defineProperty(normalSlots, key, {
  15194. get: normalized,
  15195. enumerable: true,
  15196. configurable: true
  15197. });
  15198. }
  15199. return normalized
  15200. }
  15201. function proxyNormalSlot(slots, key) {
  15202. return function () { return slots[key]; }
  15203. }
  15204. /* */
  15205. /**
  15206. * Runtime helper for rendering v-for lists.
  15207. */
  15208. function renderList (
  15209. val,
  15210. render
  15211. ) {
  15212. var ret, i, l, keys, key;
  15213. if (Array.isArray(val) || typeof val === 'string') {
  15214. ret = new Array(val.length);
  15215. for (i = 0, l = val.length; i < l; i++) {
  15216. ret[i] = render(val[i], i, i, i); // fixed by xxxxxx
  15217. }
  15218. } else if (typeof val === 'number') {
  15219. ret = new Array(val);
  15220. for (i = 0; i < val; i++) {
  15221. ret[i] = render(i + 1, i, i, i); // fixed by xxxxxx
  15222. }
  15223. } else if (isObject(val)) {
  15224. if (hasSymbol && val[Symbol.iterator]) {
  15225. ret = [];
  15226. var iterator = val[Symbol.iterator]();
  15227. var result = iterator.next();
  15228. while (!result.done) {
  15229. ret.push(render(result.value, ret.length, i, i++)); // fixed by xxxxxx
  15230. result = iterator.next();
  15231. }
  15232. } else {
  15233. keys = Object.keys(val);
  15234. ret = new Array(keys.length);
  15235. for (i = 0, l = keys.length; i < l; i++) {
  15236. key = keys[i];
  15237. ret[i] = render(val[key], key, i, i); // fixed by xxxxxx
  15238. }
  15239. }
  15240. }
  15241. if (!isDef(ret)) {
  15242. ret = [];
  15243. }
  15244. (ret)._isVList = true;
  15245. return ret
  15246. }
  15247. /* */
  15248. /**
  15249. * Runtime helper for rendering <slot>
  15250. */
  15251. function renderSlot (
  15252. name,
  15253. fallback,
  15254. props,
  15255. bindObject
  15256. ) {
  15257. var scopedSlotFn = this.$scopedSlots[name];
  15258. var nodes;
  15259. if (scopedSlotFn) { // scoped slot
  15260. props = props || {};
  15261. if (bindObject) {
  15262. if ( true && !isObject(bindObject)) {
  15263. warn(
  15264. 'slot v-bind without argument expects an Object',
  15265. this
  15266. );
  15267. }
  15268. props = extend(extend({}, bindObject), props);
  15269. }
  15270. // fixed by xxxxxx app-plus scopedSlot
  15271. nodes = scopedSlotFn(props, this, props._i) || fallback;
  15272. } else {
  15273. nodes = this.$slots[name] || fallback;
  15274. }
  15275. var target = props && props.slot;
  15276. if (target) {
  15277. return this.$createElement('template', { slot: target }, nodes)
  15278. } else {
  15279. return nodes
  15280. }
  15281. }
  15282. /* */
  15283. /**
  15284. * Runtime helper for resolving filters
  15285. */
  15286. function resolveFilter (id) {
  15287. return resolveAsset(this.$options, 'filters', id, true) || identity
  15288. }
  15289. /* */
  15290. function isKeyNotMatch (expect, actual) {
  15291. if (Array.isArray(expect)) {
  15292. return expect.indexOf(actual) === -1
  15293. } else {
  15294. return expect !== actual
  15295. }
  15296. }
  15297. /**
  15298. * Runtime helper for checking keyCodes from config.
  15299. * exposed as Vue.prototype._k
  15300. * passing in eventKeyName as last argument separately for backwards compat
  15301. */
  15302. function checkKeyCodes (
  15303. eventKeyCode,
  15304. key,
  15305. builtInKeyCode,
  15306. eventKeyName,
  15307. builtInKeyName
  15308. ) {
  15309. var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;
  15310. if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {
  15311. return isKeyNotMatch(builtInKeyName, eventKeyName)
  15312. } else if (mappedKeyCode) {
  15313. return isKeyNotMatch(mappedKeyCode, eventKeyCode)
  15314. } else if (eventKeyName) {
  15315. return hyphenate(eventKeyName) !== key
  15316. }
  15317. }
  15318. /* */
  15319. /**
  15320. * Runtime helper for merging v-bind="object" into a VNode's data.
  15321. */
  15322. function bindObjectProps (
  15323. data,
  15324. tag,
  15325. value,
  15326. asProp,
  15327. isSync
  15328. ) {
  15329. if (value) {
  15330. if (!isObject(value)) {
  15331. true && warn(
  15332. 'v-bind without argument expects an Object or Array value',
  15333. this
  15334. );
  15335. } else {
  15336. if (Array.isArray(value)) {
  15337. value = toObject(value);
  15338. }
  15339. var hash;
  15340. var loop = function ( key ) {
  15341. if (
  15342. key === 'class' ||
  15343. key === 'style' ||
  15344. isReservedAttribute(key)
  15345. ) {
  15346. hash = data;
  15347. } else {
  15348. var type = data.attrs && data.attrs.type;
  15349. hash = asProp || config.mustUseProp(tag, type, key)
  15350. ? data.domProps || (data.domProps = {})
  15351. : data.attrs || (data.attrs = {});
  15352. }
  15353. var camelizedKey = camelize(key);
  15354. var hyphenatedKey = hyphenate(key);
  15355. if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {
  15356. hash[key] = value[key];
  15357. if (isSync) {
  15358. var on = data.on || (data.on = {});
  15359. on[("update:" + key)] = function ($event) {
  15360. value[key] = $event;
  15361. };
  15362. }
  15363. }
  15364. };
  15365. for (var key in value) loop( key );
  15366. }
  15367. }
  15368. return data
  15369. }
  15370. /* */
  15371. /**
  15372. * Runtime helper for rendering static trees.
  15373. */
  15374. function renderStatic (
  15375. index,
  15376. isInFor
  15377. ) {
  15378. var cached = this._staticTrees || (this._staticTrees = []);
  15379. var tree = cached[index];
  15380. // if has already-rendered static tree and not inside v-for,
  15381. // we can reuse the same tree.
  15382. if (tree && !isInFor) {
  15383. return tree
  15384. }
  15385. // otherwise, render a fresh tree.
  15386. tree = cached[index] = this.$options.staticRenderFns[index].call(
  15387. this._renderProxy,
  15388. null,
  15389. this // for render fns generated for functional component templates
  15390. );
  15391. markStatic(tree, ("__static__" + index), false);
  15392. return tree
  15393. }
  15394. /**
  15395. * Runtime helper for v-once.
  15396. * Effectively it means marking the node as static with a unique key.
  15397. */
  15398. function markOnce (
  15399. tree,
  15400. index,
  15401. key
  15402. ) {
  15403. markStatic(tree, ("__once__" + index + (key ? ("_" + key) : "")), true);
  15404. return tree
  15405. }
  15406. function markStatic (
  15407. tree,
  15408. key,
  15409. isOnce
  15410. ) {
  15411. if (Array.isArray(tree)) {
  15412. for (var i = 0; i < tree.length; i++) {
  15413. if (tree[i] && typeof tree[i] !== 'string') {
  15414. markStaticNode(tree[i], (key + "_" + i), isOnce);
  15415. }
  15416. }
  15417. } else {
  15418. markStaticNode(tree, key, isOnce);
  15419. }
  15420. }
  15421. function markStaticNode (node, key, isOnce) {
  15422. node.isStatic = true;
  15423. node.key = key;
  15424. node.isOnce = isOnce;
  15425. }
  15426. /* */
  15427. function bindObjectListeners (data, value) {
  15428. if (value) {
  15429. if (!isPlainObject(value)) {
  15430. true && warn(
  15431. 'v-on without argument expects an Object value',
  15432. this
  15433. );
  15434. } else {
  15435. var on = data.on = data.on ? extend({}, data.on) : {};
  15436. for (var key in value) {
  15437. var existing = on[key];
  15438. var ours = value[key];
  15439. on[key] = existing ? [].concat(existing, ours) : ours;
  15440. }
  15441. }
  15442. }
  15443. return data
  15444. }
  15445. /* */
  15446. function resolveScopedSlots (
  15447. fns, // see flow/vnode
  15448. res,
  15449. // the following are added in 2.6
  15450. hasDynamicKeys,
  15451. contentHashKey
  15452. ) {
  15453. res = res || { $stable: !hasDynamicKeys };
  15454. for (var i = 0; i < fns.length; i++) {
  15455. var slot = fns[i];
  15456. if (Array.isArray(slot)) {
  15457. resolveScopedSlots(slot, res, hasDynamicKeys);
  15458. } else if (slot) {
  15459. // marker for reverse proxying v-slot without scope on this.$slots
  15460. if (slot.proxy) {
  15461. slot.fn.proxy = true;
  15462. }
  15463. res[slot.key] = slot.fn;
  15464. }
  15465. }
  15466. if (contentHashKey) {
  15467. (res).$key = contentHashKey;
  15468. }
  15469. return res
  15470. }
  15471. /* */
  15472. function bindDynamicKeys (baseObj, values) {
  15473. for (var i = 0; i < values.length; i += 2) {
  15474. var key = values[i];
  15475. if (typeof key === 'string' && key) {
  15476. baseObj[values[i]] = values[i + 1];
  15477. } else if ( true && key !== '' && key !== null) {
  15478. // null is a special value for explicitly removing a binding
  15479. warn(
  15480. ("Invalid value for dynamic directive argument (expected string or null): " + key),
  15481. this
  15482. );
  15483. }
  15484. }
  15485. return baseObj
  15486. }
  15487. // helper to dynamically append modifier runtime markers to event names.
  15488. // ensure only append when value is already string, otherwise it will be cast
  15489. // to string and cause the type check to miss.
  15490. function prependModifier (value, symbol) {
  15491. return typeof value === 'string' ? symbol + value : value
  15492. }
  15493. /* */
  15494. function installRenderHelpers (target) {
  15495. target._o = markOnce;
  15496. target._n = toNumber;
  15497. target._s = toString;
  15498. target._l = renderList;
  15499. target._t = renderSlot;
  15500. target._q = looseEqual;
  15501. target._i = looseIndexOf;
  15502. target._m = renderStatic;
  15503. target._f = resolveFilter;
  15504. target._k = checkKeyCodes;
  15505. target._b = bindObjectProps;
  15506. target._v = createTextVNode;
  15507. target._e = createEmptyVNode;
  15508. target._u = resolveScopedSlots;
  15509. target._g = bindObjectListeners;
  15510. target._d = bindDynamicKeys;
  15511. target._p = prependModifier;
  15512. }
  15513. /* */
  15514. function FunctionalRenderContext (
  15515. data,
  15516. props,
  15517. children,
  15518. parent,
  15519. Ctor
  15520. ) {
  15521. var this$1 = this;
  15522. var options = Ctor.options;
  15523. // ensure the createElement function in functional components
  15524. // gets a unique context - this is necessary for correct named slot check
  15525. var contextVm;
  15526. if (hasOwn(parent, '_uid')) {
  15527. contextVm = Object.create(parent);
  15528. // $flow-disable-line
  15529. contextVm._original = parent;
  15530. } else {
  15531. // the context vm passed in is a functional context as well.
  15532. // in this case we want to make sure we are able to get a hold to the
  15533. // real context instance.
  15534. contextVm = parent;
  15535. // $flow-disable-line
  15536. parent = parent._original;
  15537. }
  15538. var isCompiled = isTrue(options._compiled);
  15539. var needNormalization = !isCompiled;
  15540. this.data = data;
  15541. this.props = props;
  15542. this.children = children;
  15543. this.parent = parent;
  15544. this.listeners = data.on || emptyObject;
  15545. this.injections = resolveInject(options.inject, parent);
  15546. this.slots = function () {
  15547. if (!this$1.$slots) {
  15548. normalizeScopedSlots(
  15549. data.scopedSlots,
  15550. this$1.$slots = resolveSlots(children, parent)
  15551. );
  15552. }
  15553. return this$1.$slots
  15554. };
  15555. Object.defineProperty(this, 'scopedSlots', ({
  15556. enumerable: true,
  15557. get: function get () {
  15558. return normalizeScopedSlots(data.scopedSlots, this.slots())
  15559. }
  15560. }));
  15561. // support for compiled functional template
  15562. if (isCompiled) {
  15563. // exposing $options for renderStatic()
  15564. this.$options = options;
  15565. // pre-resolve slots for renderSlot()
  15566. this.$slots = this.slots();
  15567. this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots);
  15568. }
  15569. if (options._scopeId) {
  15570. this._c = function (a, b, c, d) {
  15571. var vnode = createElement(contextVm, a, b, c, d, needNormalization);
  15572. if (vnode && !Array.isArray(vnode)) {
  15573. vnode.fnScopeId = options._scopeId;
  15574. vnode.fnContext = parent;
  15575. }
  15576. return vnode
  15577. };
  15578. } else {
  15579. this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };
  15580. }
  15581. }
  15582. installRenderHelpers(FunctionalRenderContext.prototype);
  15583. function createFunctionalComponent (
  15584. Ctor,
  15585. propsData,
  15586. data,
  15587. contextVm,
  15588. children
  15589. ) {
  15590. var options = Ctor.options;
  15591. var props = {};
  15592. var propOptions = options.props;
  15593. if (isDef(propOptions)) {
  15594. for (var key in propOptions) {
  15595. props[key] = validateProp(key, propOptions, propsData || emptyObject);
  15596. }
  15597. } else {
  15598. if (isDef(data.attrs)) { mergeProps(props, data.attrs); }
  15599. if (isDef(data.props)) { mergeProps(props, data.props); }
  15600. }
  15601. var renderContext = new FunctionalRenderContext(
  15602. data,
  15603. props,
  15604. children,
  15605. contextVm,
  15606. Ctor
  15607. );
  15608. var vnode = options.render.call(null, renderContext._c, renderContext);
  15609. if (vnode instanceof VNode) {
  15610. return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext)
  15611. } else if (Array.isArray(vnode)) {
  15612. var vnodes = normalizeChildren(vnode) || [];
  15613. var res = new Array(vnodes.length);
  15614. for (var i = 0; i < vnodes.length; i++) {
  15615. res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);
  15616. }
  15617. return res
  15618. }
  15619. }
  15620. function cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) {
  15621. // #7817 clone node before setting fnContext, otherwise if the node is reused
  15622. // (e.g. it was from a cached normal slot) the fnContext causes named slots
  15623. // that should not be matched to match.
  15624. var clone = cloneVNode(vnode);
  15625. clone.fnContext = contextVm;
  15626. clone.fnOptions = options;
  15627. if (true) {
  15628. (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;
  15629. }
  15630. if (data.slot) {
  15631. (clone.data || (clone.data = {})).slot = data.slot;
  15632. }
  15633. return clone
  15634. }
  15635. function mergeProps (to, from) {
  15636. for (var key in from) {
  15637. to[camelize(key)] = from[key];
  15638. }
  15639. }
  15640. /* */
  15641. /* */
  15642. /* */
  15643. /* */
  15644. // inline hooks to be invoked on component VNodes during patch
  15645. var componentVNodeHooks = {
  15646. init: function init (vnode, hydrating) {
  15647. if (
  15648. vnode.componentInstance &&
  15649. !vnode.componentInstance._isDestroyed &&
  15650. vnode.data.keepAlive
  15651. ) {
  15652. // kept-alive components, treat as a patch
  15653. var mountedNode = vnode; // work around flow
  15654. componentVNodeHooks.prepatch(mountedNode, mountedNode);
  15655. } else {
  15656. var child = vnode.componentInstance = createComponentInstanceForVnode(
  15657. vnode,
  15658. activeInstance
  15659. );
  15660. child.$mount(hydrating ? vnode.elm : undefined, hydrating);
  15661. }
  15662. },
  15663. prepatch: function prepatch (oldVnode, vnode) {
  15664. var options = vnode.componentOptions;
  15665. var child = vnode.componentInstance = oldVnode.componentInstance;
  15666. updateChildComponent(
  15667. child,
  15668. options.propsData, // updated props
  15669. options.listeners, // updated listeners
  15670. vnode, // new parent vnode
  15671. options.children // new children
  15672. );
  15673. },
  15674. insert: function insert (vnode) {
  15675. var context = vnode.context;
  15676. var componentInstance = vnode.componentInstance;
  15677. if (!componentInstance._isMounted) {
  15678. callHook(componentInstance, 'onServiceCreated');
  15679. callHook(componentInstance, 'onServiceAttached');
  15680. componentInstance._isMounted = true;
  15681. callHook(componentInstance, 'mounted');
  15682. }
  15683. if (vnode.data.keepAlive) {
  15684. if (context._isMounted) {
  15685. // vue-router#1212
  15686. // During updates, a kept-alive component's child components may
  15687. // change, so directly walking the tree here may call activated hooks
  15688. // on incorrect children. Instead we push them into a queue which will
  15689. // be processed after the whole patch process ended.
  15690. queueActivatedComponent(componentInstance);
  15691. } else {
  15692. activateChildComponent(componentInstance, true /* direct */);
  15693. }
  15694. }
  15695. },
  15696. destroy: function destroy (vnode) {
  15697. var componentInstance = vnode.componentInstance;
  15698. if (!componentInstance._isDestroyed) {
  15699. if (!vnode.data.keepAlive) {
  15700. componentInstance.$destroy();
  15701. } else {
  15702. deactivateChildComponent(componentInstance, true /* direct */);
  15703. }
  15704. }
  15705. }
  15706. };
  15707. var hooksToMerge = Object.keys(componentVNodeHooks);
  15708. function createComponent (
  15709. Ctor,
  15710. data,
  15711. context,
  15712. children,
  15713. tag
  15714. ) {
  15715. if (isUndef(Ctor)) {
  15716. return
  15717. }
  15718. var baseCtor = context.$options._base;
  15719. // plain options object: turn it into a constructor
  15720. if (isObject(Ctor)) {
  15721. Ctor = baseCtor.extend(Ctor);
  15722. }
  15723. // if at this stage it's not a constructor or an async component factory,
  15724. // reject.
  15725. if (typeof Ctor !== 'function') {
  15726. if (true) {
  15727. warn(("Invalid Component definition: " + (String(Ctor))), context);
  15728. }
  15729. return
  15730. }
  15731. // async component
  15732. var asyncFactory;
  15733. if (isUndef(Ctor.cid)) {
  15734. asyncFactory = Ctor;
  15735. Ctor = resolveAsyncComponent(asyncFactory, baseCtor);
  15736. if (Ctor === undefined) {
  15737. // return a placeholder node for async component, which is rendered
  15738. // as a comment node but preserves all the raw information for the node.
  15739. // the information will be used for async server-rendering and hydration.
  15740. return createAsyncPlaceholder(
  15741. asyncFactory,
  15742. data,
  15743. context,
  15744. children,
  15745. tag
  15746. )
  15747. }
  15748. }
  15749. data = data || {};
  15750. // resolve constructor options in case global mixins are applied after
  15751. // component constructor creation
  15752. resolveConstructorOptions(Ctor);
  15753. // transform component v-model data into props & events
  15754. if (isDef(data.model)) {
  15755. transformModel(Ctor.options, data);
  15756. }
  15757. // extract props
  15758. var propsData = extractPropsFromVNodeData(data, Ctor, tag, context); // fixed by xxxxxx
  15759. // functional component
  15760. if (isTrue(Ctor.options.functional)) {
  15761. return createFunctionalComponent(Ctor, propsData, data, context, children)
  15762. }
  15763. // extract listeners, since these needs to be treated as
  15764. // child component listeners instead of DOM listeners
  15765. var listeners = data.on;
  15766. // replace with listeners with .native modifier
  15767. // so it gets processed during parent component patch.
  15768. data.on = data.nativeOn;
  15769. if (isTrue(Ctor.options.abstract)) {
  15770. // abstract components do not keep anything
  15771. // other than props & listeners & slot
  15772. // work around flow
  15773. var slot = data.slot;
  15774. data = {};
  15775. if (slot) {
  15776. data.slot = slot;
  15777. }
  15778. }
  15779. // install component management hooks onto the placeholder node
  15780. installComponentHooks(data);
  15781. // return a placeholder vnode
  15782. var name = Ctor.options.name || tag;
  15783. var vnode = new VNode(
  15784. ("vue-component-" + (Ctor.cid) + (name ? ("-" + name) : '')),
  15785. data, undefined, undefined, undefined, context,
  15786. { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },
  15787. asyncFactory
  15788. );
  15789. return vnode
  15790. }
  15791. function createComponentInstanceForVnode (
  15792. vnode, // we know it's MountedComponentVNode but flow doesn't
  15793. parent // activeInstance in lifecycle state
  15794. ) {
  15795. var options = {
  15796. _isComponent: true,
  15797. _parentVnode: vnode,
  15798. parent: parent
  15799. };
  15800. // check inline-template render functions
  15801. var inlineTemplate = vnode.data.inlineTemplate;
  15802. if (isDef(inlineTemplate)) {
  15803. options.render = inlineTemplate.render;
  15804. options.staticRenderFns = inlineTemplate.staticRenderFns;
  15805. }
  15806. return new vnode.componentOptions.Ctor(options)
  15807. }
  15808. function installComponentHooks (data) {
  15809. var hooks = data.hook || (data.hook = {});
  15810. for (var i = 0; i < hooksToMerge.length; i++) {
  15811. var key = hooksToMerge[i];
  15812. var existing = hooks[key];
  15813. var toMerge = componentVNodeHooks[key];
  15814. if (existing !== toMerge && !(existing && existing._merged)) {
  15815. hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;
  15816. }
  15817. }
  15818. }
  15819. function mergeHook$1 (f1, f2) {
  15820. var merged = function (a, b) {
  15821. // flow complains about extra args which is why we use any
  15822. f1(a, b);
  15823. f2(a, b);
  15824. };
  15825. merged._merged = true;
  15826. return merged
  15827. }
  15828. // transform component v-model info (value and callback) into
  15829. // prop and event handler respectively.
  15830. function transformModel (options, data) {
  15831. var prop = (options.model && options.model.prop) || 'value';
  15832. var event = (options.model && options.model.event) || 'input'
  15833. ;(data.attrs || (data.attrs = {}))[prop] = data.model.value;
  15834. var on = data.on || (data.on = {});
  15835. var existing = on[event];
  15836. var callback = data.model.callback;
  15837. if (isDef(existing)) {
  15838. if (
  15839. Array.isArray(existing)
  15840. ? existing.indexOf(callback) === -1
  15841. : existing !== callback
  15842. ) {
  15843. on[event] = [callback].concat(existing);
  15844. }
  15845. } else {
  15846. on[event] = callback;
  15847. }
  15848. }
  15849. /* */
  15850. var SIMPLE_NORMALIZE = 1;
  15851. var ALWAYS_NORMALIZE = 2;
  15852. // wrapper function for providing a more flexible interface
  15853. // without getting yelled at by flow
  15854. function createElement (
  15855. context,
  15856. tag,
  15857. data,
  15858. children,
  15859. normalizationType,
  15860. alwaysNormalize
  15861. ) {
  15862. if (Array.isArray(data) || isPrimitive(data)) {
  15863. normalizationType = children;
  15864. children = data;
  15865. data = undefined;
  15866. }
  15867. if (isTrue(alwaysNormalize)) {
  15868. normalizationType = ALWAYS_NORMALIZE;
  15869. }
  15870. return _createElement(context, tag, data, children, normalizationType)
  15871. }
  15872. function _createElement (
  15873. context,
  15874. tag,
  15875. data,
  15876. children,
  15877. normalizationType
  15878. ) {
  15879. if (isDef(data) && isDef((data).__ob__)) {
  15880. true && warn(
  15881. "Avoid using observed data object as vnode data: " + (JSON.stringify(data)) + "\n" +
  15882. 'Always create fresh vnode data objects in each render!',
  15883. context
  15884. );
  15885. return createEmptyVNode()
  15886. }
  15887. // object syntax in v-bind
  15888. if (isDef(data) && isDef(data.is)) {
  15889. tag = data.is;
  15890. }
  15891. if (!tag) {
  15892. // in case of component :is set to falsy value
  15893. return createEmptyVNode()
  15894. }
  15895. // warn against non-primitive key
  15896. if ( true &&
  15897. isDef(data) && isDef(data.key) && !isPrimitive(data.key)
  15898. ) {
  15899. {
  15900. warn(
  15901. 'Avoid using non-primitive value as key, ' +
  15902. 'use string/number value instead.',
  15903. context
  15904. );
  15905. }
  15906. }
  15907. // support single function children as default scoped slot
  15908. if (Array.isArray(children) &&
  15909. typeof children[0] === 'function'
  15910. ) {
  15911. data = data || {};
  15912. data.scopedSlots = { default: children[0] };
  15913. children.length = 0;
  15914. }
  15915. if (normalizationType === ALWAYS_NORMALIZE) {
  15916. children = normalizeChildren(children);
  15917. } else if (normalizationType === SIMPLE_NORMALIZE) {
  15918. children = simpleNormalizeChildren(children);
  15919. }
  15920. var vnode, ns;
  15921. if (typeof tag === 'string') {
  15922. var Ctor;
  15923. ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);
  15924. if (config.isReservedTag(tag)) {
  15925. // platform built-in elements
  15926. if ( true && isDef(data) && isDef(data.nativeOn)) {
  15927. warn(
  15928. ("The .native modifier for v-on is only valid on components but it was used on <" + tag + ">."),
  15929. context
  15930. );
  15931. }
  15932. vnode = new VNode(
  15933. config.parsePlatformTagName(tag), data, children,
  15934. undefined, undefined, context
  15935. );
  15936. } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {
  15937. // component
  15938. vnode = createComponent(Ctor, data, context, children, tag);
  15939. } else {
  15940. // unknown or unlisted namespaced elements
  15941. // check at runtime because it may get assigned a namespace when its
  15942. // parent normalizes children
  15943. vnode = new VNode(
  15944. tag, data, children,
  15945. undefined, undefined, context
  15946. );
  15947. }
  15948. } else {
  15949. // direct component options / constructor
  15950. vnode = createComponent(tag, data, context, children);
  15951. }
  15952. if (Array.isArray(vnode)) {
  15953. return vnode
  15954. } else if (isDef(vnode)) {
  15955. if (isDef(ns)) { applyNS(vnode, ns); }
  15956. if (isDef(data)) { registerDeepBindings(data); }
  15957. return vnode
  15958. } else {
  15959. return createEmptyVNode()
  15960. }
  15961. }
  15962. function applyNS (vnode, ns, force) {
  15963. vnode.ns = ns;
  15964. if (vnode.tag === 'foreignObject') {
  15965. // use default namespace inside foreignObject
  15966. ns = undefined;
  15967. force = true;
  15968. }
  15969. if (isDef(vnode.children)) {
  15970. for (var i = 0, l = vnode.children.length; i < l; i++) {
  15971. var child = vnode.children[i];
  15972. if (isDef(child.tag) && (
  15973. isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {
  15974. applyNS(child, ns, force);
  15975. }
  15976. }
  15977. }
  15978. }
  15979. // ref #5318
  15980. // necessary to ensure parent re-render when deep bindings like :style and
  15981. // :class are used on slot nodes
  15982. function registerDeepBindings (data) {
  15983. if (isObject(data.style)) {
  15984. traverse(data.style);
  15985. }
  15986. if (isObject(data.class)) {
  15987. traverse(data.class);
  15988. }
  15989. }
  15990. /* */
  15991. function initRender (vm) {
  15992. vm._vnode = null; // the root of the child tree
  15993. vm._staticTrees = null; // v-once cached trees
  15994. var options = vm.$options;
  15995. var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree
  15996. var renderContext = parentVnode && parentVnode.context;
  15997. vm.$slots = resolveSlots(options._renderChildren, renderContext);
  15998. vm.$scopedSlots = emptyObject;
  15999. // bind the createElement fn to this instance
  16000. // so that we get proper render context inside it.
  16001. // args order: tag, data, children, normalizationType, alwaysNormalize
  16002. // internal version is used by render functions compiled from templates
  16003. vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };
  16004. // normalization is always applied for the public version, used in
  16005. // user-written render functions.
  16006. vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };
  16007. // $attrs & $listeners are exposed for easier HOC creation.
  16008. // they need to be reactive so that HOCs using them are always updated
  16009. var parentData = parentVnode && parentVnode.data;
  16010. /* istanbul ignore else */
  16011. if (true) {
  16012. defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {
  16013. !isUpdatingChildComponent && warn("$attrs is readonly.", vm);
  16014. }, true);
  16015. defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {
  16016. !isUpdatingChildComponent && warn("$listeners is readonly.", vm);
  16017. }, true);
  16018. } else {}
  16019. }
  16020. var currentRenderingInstance = null;
  16021. function renderMixin (Vue) {
  16022. // install runtime convenience helpers
  16023. installRenderHelpers(Vue.prototype);
  16024. Vue.prototype.$nextTick = function (fn) {
  16025. return nextTick(fn, this)
  16026. };
  16027. Vue.prototype._render = function () {
  16028. var vm = this;
  16029. var ref = vm.$options;
  16030. var render = ref.render;
  16031. var _parentVnode = ref._parentVnode;
  16032. if (_parentVnode) {
  16033. vm.$scopedSlots = normalizeScopedSlots(
  16034. _parentVnode.data.scopedSlots,
  16035. vm.$slots,
  16036. vm.$scopedSlots
  16037. );
  16038. }
  16039. // set parent vnode. this allows render functions to have access
  16040. // to the data on the placeholder node.
  16041. vm.$vnode = _parentVnode;
  16042. // render self
  16043. var vnode;
  16044. try {
  16045. // There's no need to maintain a stack because all render fns are called
  16046. // separately from one another. Nested component's render fns are called
  16047. // when parent component is patched.
  16048. currentRenderingInstance = vm;
  16049. vnode = render.call(vm._renderProxy, vm.$createElement);
  16050. } catch (e) {
  16051. handleError(e, vm, "render");
  16052. // return error render result,
  16053. // or previous vnode to prevent render error causing blank component
  16054. /* istanbul ignore else */
  16055. if ( true && vm.$options.renderError) {
  16056. try {
  16057. vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);
  16058. } catch (e) {
  16059. handleError(e, vm, "renderError");
  16060. vnode = vm._vnode;
  16061. }
  16062. } else {
  16063. vnode = vm._vnode;
  16064. }
  16065. } finally {
  16066. currentRenderingInstance = null;
  16067. }
  16068. // if the returned array contains only a single node, allow it
  16069. if (Array.isArray(vnode) && vnode.length === 1) {
  16070. vnode = vnode[0];
  16071. }
  16072. // return empty vnode in case the render function errored out
  16073. if (!(vnode instanceof VNode)) {
  16074. if ( true && Array.isArray(vnode)) {
  16075. warn(
  16076. 'Multiple root nodes returned from render function. Render function ' +
  16077. 'should return a single root node.',
  16078. vm
  16079. );
  16080. }
  16081. vnode = createEmptyVNode();
  16082. }
  16083. // set parent
  16084. vnode.parent = _parentVnode;
  16085. return vnode
  16086. };
  16087. }
  16088. /* */
  16089. function ensureCtor (comp, base) {
  16090. if (
  16091. comp.__esModule ||
  16092. (hasSymbol && comp[Symbol.toStringTag] === 'Module')
  16093. ) {
  16094. comp = comp.default;
  16095. }
  16096. return isObject(comp)
  16097. ? base.extend(comp)
  16098. : comp
  16099. }
  16100. function createAsyncPlaceholder (
  16101. factory,
  16102. data,
  16103. context,
  16104. children,
  16105. tag
  16106. ) {
  16107. var node = createEmptyVNode();
  16108. node.asyncFactory = factory;
  16109. node.asyncMeta = { data: data, context: context, children: children, tag: tag };
  16110. return node
  16111. }
  16112. function resolveAsyncComponent (
  16113. factory,
  16114. baseCtor
  16115. ) {
  16116. if (isTrue(factory.error) && isDef(factory.errorComp)) {
  16117. return factory.errorComp
  16118. }
  16119. if (isDef(factory.resolved)) {
  16120. return factory.resolved
  16121. }
  16122. var owner = currentRenderingInstance;
  16123. if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
  16124. // already pending
  16125. factory.owners.push(owner);
  16126. }
  16127. if (isTrue(factory.loading) && isDef(factory.loadingComp)) {
  16128. return factory.loadingComp
  16129. }
  16130. if (owner && !isDef(factory.owners)) {
  16131. var owners = factory.owners = [owner];
  16132. var sync = true;
  16133. var timerLoading = null;
  16134. var timerTimeout = null
  16135. ;(owner).$on('hook:destroyed', function () { return remove(owners, owner); });
  16136. var forceRender = function (renderCompleted) {
  16137. for (var i = 0, l = owners.length; i < l; i++) {
  16138. (owners[i]).$forceUpdate();
  16139. }
  16140. if (renderCompleted) {
  16141. owners.length = 0;
  16142. if (timerLoading !== null) {
  16143. clearTimeout(timerLoading);
  16144. timerLoading = null;
  16145. }
  16146. if (timerTimeout !== null) {
  16147. clearTimeout(timerTimeout);
  16148. timerTimeout = null;
  16149. }
  16150. }
  16151. };
  16152. var resolve = once(function (res) {
  16153. // cache resolved
  16154. factory.resolved = ensureCtor(res, baseCtor);
  16155. // invoke callbacks only if this is not a synchronous resolve
  16156. // (async resolves are shimmed as synchronous during SSR)
  16157. if (!sync) {
  16158. forceRender(true);
  16159. } else {
  16160. owners.length = 0;
  16161. }
  16162. });
  16163. var reject = once(function (reason) {
  16164. true && warn(
  16165. "Failed to resolve async component: " + (String(factory)) +
  16166. (reason ? ("\nReason: " + reason) : '')
  16167. );
  16168. if (isDef(factory.errorComp)) {
  16169. factory.error = true;
  16170. forceRender(true);
  16171. }
  16172. });
  16173. var res = factory(resolve, reject);
  16174. if (isObject(res)) {
  16175. if (isPromise(res)) {
  16176. // () => Promise
  16177. if (isUndef(factory.resolved)) {
  16178. res.then(resolve, reject);
  16179. }
  16180. } else if (isPromise(res.component)) {
  16181. res.component.then(resolve, reject);
  16182. if (isDef(res.error)) {
  16183. factory.errorComp = ensureCtor(res.error, baseCtor);
  16184. }
  16185. if (isDef(res.loading)) {
  16186. factory.loadingComp = ensureCtor(res.loading, baseCtor);
  16187. if (res.delay === 0) {
  16188. factory.loading = true;
  16189. } else {
  16190. timerLoading = setTimeout(function () {
  16191. timerLoading = null;
  16192. if (isUndef(factory.resolved) && isUndef(factory.error)) {
  16193. factory.loading = true;
  16194. forceRender(false);
  16195. }
  16196. }, res.delay || 200);
  16197. }
  16198. }
  16199. if (isDef(res.timeout)) {
  16200. timerTimeout = setTimeout(function () {
  16201. timerTimeout = null;
  16202. if (isUndef(factory.resolved)) {
  16203. reject(
  16204. true
  16205. ? ("timeout (" + (res.timeout) + "ms)")
  16206. : undefined
  16207. );
  16208. }
  16209. }, res.timeout);
  16210. }
  16211. }
  16212. }
  16213. sync = false;
  16214. // return in case resolved synchronously
  16215. return factory.loading
  16216. ? factory.loadingComp
  16217. : factory.resolved
  16218. }
  16219. }
  16220. /* */
  16221. function isAsyncPlaceholder (node) {
  16222. return node.isComment && node.asyncFactory
  16223. }
  16224. /* */
  16225. function getFirstComponentChild (children) {
  16226. if (Array.isArray(children)) {
  16227. for (var i = 0; i < children.length; i++) {
  16228. var c = children[i];
  16229. if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {
  16230. return c
  16231. }
  16232. }
  16233. }
  16234. }
  16235. /* */
  16236. /* */
  16237. function initEvents (vm) {
  16238. vm._events = Object.create(null);
  16239. vm._hasHookEvent = false;
  16240. // init parent attached events
  16241. var listeners = vm.$options._parentListeners;
  16242. if (listeners) {
  16243. updateComponentListeners(vm, listeners);
  16244. }
  16245. }
  16246. var target;
  16247. function add (event, fn) {
  16248. target.$on(event, fn);
  16249. }
  16250. function remove$1 (event, fn) {
  16251. target.$off(event, fn);
  16252. }
  16253. function createOnceHandler (event, fn) {
  16254. var _target = target;
  16255. return function onceHandler () {
  16256. var res = fn.apply(null, arguments);
  16257. if (res !== null) {
  16258. _target.$off(event, onceHandler);
  16259. }
  16260. }
  16261. }
  16262. function updateComponentListeners (
  16263. vm,
  16264. listeners,
  16265. oldListeners
  16266. ) {
  16267. target = vm;
  16268. updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);
  16269. target = undefined;
  16270. }
  16271. function eventsMixin (Vue) {
  16272. var hookRE = /^hook:/;
  16273. Vue.prototype.$on = function (event, fn) {
  16274. var vm = this;
  16275. if (Array.isArray(event)) {
  16276. for (var i = 0, l = event.length; i < l; i++) {
  16277. vm.$on(event[i], fn);
  16278. }
  16279. } else {
  16280. (vm._events[event] || (vm._events[event] = [])).push(fn);
  16281. // optimize hook:event cost by using a boolean flag marked at registration
  16282. // instead of a hash lookup
  16283. if (hookRE.test(event)) {
  16284. vm._hasHookEvent = true;
  16285. }
  16286. }
  16287. return vm
  16288. };
  16289. Vue.prototype.$once = function (event, fn) {
  16290. var vm = this;
  16291. function on () {
  16292. vm.$off(event, on);
  16293. fn.apply(vm, arguments);
  16294. }
  16295. on.fn = fn;
  16296. vm.$on(event, on);
  16297. return vm
  16298. };
  16299. Vue.prototype.$off = function (event, fn) {
  16300. var vm = this;
  16301. // all
  16302. if (!arguments.length) {
  16303. vm._events = Object.create(null);
  16304. return vm
  16305. }
  16306. // array of events
  16307. if (Array.isArray(event)) {
  16308. for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {
  16309. vm.$off(event[i$1], fn);
  16310. }
  16311. return vm
  16312. }
  16313. // specific event
  16314. var cbs = vm._events[event];
  16315. if (!cbs) {
  16316. return vm
  16317. }
  16318. if (!fn) {
  16319. vm._events[event] = null;
  16320. return vm
  16321. }
  16322. // specific handler
  16323. var cb;
  16324. var i = cbs.length;
  16325. while (i--) {
  16326. cb = cbs[i];
  16327. if (cb === fn || cb.fn === fn) {
  16328. cbs.splice(i, 1);
  16329. break
  16330. }
  16331. }
  16332. return vm
  16333. };
  16334. Vue.prototype.$emit = function (event) {
  16335. var vm = this;
  16336. if (true) {
  16337. var lowerCaseEvent = event.toLowerCase();
  16338. if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {
  16339. tip(
  16340. "Event \"" + lowerCaseEvent + "\" is emitted in component " +
  16341. (formatComponentName(vm)) + " but the handler is registered for \"" + event + "\". " +
  16342. "Note that HTML attributes are case-insensitive and you cannot use " +
  16343. "v-on to listen to camelCase events when using in-DOM templates. " +
  16344. "You should probably use \"" + (hyphenate(event)) + "\" instead of \"" + event + "\"."
  16345. );
  16346. }
  16347. }
  16348. var cbs = vm._events[event];
  16349. if (cbs) {
  16350. cbs = cbs.length > 1 ? toArray(cbs) : cbs;
  16351. var args = toArray(arguments, 1);
  16352. var info = "event handler for \"" + event + "\"";
  16353. for (var i = 0, l = cbs.length; i < l; i++) {
  16354. invokeWithErrorHandling(cbs[i], vm, args, vm, info);
  16355. }
  16356. }
  16357. return vm
  16358. };
  16359. }
  16360. /* */
  16361. var activeInstance = null;
  16362. var isUpdatingChildComponent = false;
  16363. function setActiveInstance(vm) {
  16364. var prevActiveInstance = activeInstance;
  16365. activeInstance = vm;
  16366. return function () {
  16367. activeInstance = prevActiveInstance;
  16368. }
  16369. }
  16370. function initLifecycle (vm) {
  16371. var options = vm.$options;
  16372. // locate first non-abstract parent
  16373. var parent = options.parent;
  16374. if (parent && !options.abstract) {
  16375. while (parent.$options.abstract && parent.$parent) {
  16376. parent = parent.$parent;
  16377. }
  16378. parent.$children.push(vm);
  16379. }
  16380. vm.$parent = parent;
  16381. vm.$root = parent ? parent.$root : vm;
  16382. vm.$children = [];
  16383. vm.$refs = {};
  16384. vm._watcher = null;
  16385. vm._inactive = null;
  16386. vm._directInactive = false;
  16387. vm._isMounted = false;
  16388. vm._isDestroyed = false;
  16389. vm._isBeingDestroyed = false;
  16390. }
  16391. function lifecycleMixin (Vue) {
  16392. Vue.prototype._update = function (vnode, hydrating) {
  16393. var vm = this;
  16394. var prevEl = vm.$el;
  16395. var prevVnode = vm._vnode;
  16396. var restoreActiveInstance = setActiveInstance(vm);
  16397. vm._vnode = vnode;
  16398. // Vue.prototype.__patch__ is injected in entry points
  16399. // based on the rendering backend used.
  16400. if (!prevVnode) {
  16401. // initial render
  16402. vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);
  16403. } else {
  16404. // updates
  16405. vm.$el = vm.__patch__(prevVnode, vnode);
  16406. }
  16407. restoreActiveInstance();
  16408. // update __vue__ reference
  16409. if (prevEl) {
  16410. prevEl.__vue__ = null;
  16411. }
  16412. if (vm.$el) {
  16413. vm.$el.__vue__ = vm;
  16414. }
  16415. // if parent is an HOC, update its $el as well
  16416. if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {
  16417. vm.$parent.$el = vm.$el;
  16418. }
  16419. // updated hook is called by the scheduler to ensure that children are
  16420. // updated in a parent's updated hook.
  16421. };
  16422. Vue.prototype.$forceUpdate = function () {
  16423. var vm = this;
  16424. if (vm._watcher) {
  16425. vm._watcher.update();
  16426. }
  16427. };
  16428. Vue.prototype.$destroy = function () {
  16429. var vm = this;
  16430. if (vm._isBeingDestroyed) {
  16431. return
  16432. }
  16433. callHook(vm, 'beforeDestroy');
  16434. vm._isBeingDestroyed = true;
  16435. // remove self from parent
  16436. var parent = vm.$parent;
  16437. if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {
  16438. remove(parent.$children, vm);
  16439. }
  16440. // teardown watchers
  16441. if (vm._watcher) {
  16442. vm._watcher.teardown();
  16443. }
  16444. var i = vm._watchers.length;
  16445. while (i--) {
  16446. vm._watchers[i].teardown();
  16447. }
  16448. // remove reference from data ob
  16449. // frozen object may not have observer.
  16450. if (vm._data.__ob__) {
  16451. vm._data.__ob__.vmCount--;
  16452. }
  16453. // call the last hook...
  16454. vm._isDestroyed = true;
  16455. // invoke destroy hooks on current rendered tree
  16456. vm.__patch__(vm._vnode, null);
  16457. // fire destroyed hook
  16458. callHook(vm, 'destroyed');
  16459. // turn off all instance listeners.
  16460. vm.$off();
  16461. // remove __vue__ reference
  16462. if (vm.$el) {
  16463. vm.$el.__vue__ = null;
  16464. }
  16465. // release circular reference (#6759)
  16466. if (vm.$vnode) {
  16467. vm.$vnode.parent = null;
  16468. }
  16469. };
  16470. }
  16471. function updateChildComponent (
  16472. vm,
  16473. propsData,
  16474. listeners,
  16475. parentVnode,
  16476. renderChildren
  16477. ) {
  16478. if (true) {
  16479. isUpdatingChildComponent = true;
  16480. }
  16481. // determine whether component has slot children
  16482. // we need to do this before overwriting $options._renderChildren.
  16483. // check if there are dynamic scopedSlots (hand-written or compiled but with
  16484. // dynamic slot names). Static scoped slots compiled from template has the
  16485. // "$stable" marker.
  16486. var newScopedSlots = parentVnode.data.scopedSlots;
  16487. var oldScopedSlots = vm.$scopedSlots;
  16488. var hasDynamicScopedSlot = !!(
  16489. (newScopedSlots && !newScopedSlots.$stable) ||
  16490. (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||
  16491. (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key)
  16492. );
  16493. // Any static slot children from the parent may have changed during parent's
  16494. // update. Dynamic scoped slots may also have changed. In such cases, a forced
  16495. // update is necessary to ensure correctness.
  16496. var needsForceUpdate = !!(
  16497. renderChildren || // has new static slots
  16498. vm.$options._renderChildren || // has old static slots
  16499. hasDynamicScopedSlot
  16500. );
  16501. vm.$options._parentVnode = parentVnode;
  16502. vm.$vnode = parentVnode; // update vm's placeholder node without re-render
  16503. if (vm._vnode) { // update child tree's parent
  16504. vm._vnode.parent = parentVnode;
  16505. }
  16506. vm.$options._renderChildren = renderChildren;
  16507. // update $attrs and $listeners hash
  16508. // these are also reactive so they may trigger child update if the child
  16509. // used them during render
  16510. vm.$attrs = parentVnode.data.attrs || emptyObject;
  16511. vm.$listeners = listeners || emptyObject;
  16512. // update props
  16513. if (propsData && vm.$options.props) {
  16514. toggleObserving(false);
  16515. var props = vm._props;
  16516. var propKeys = vm.$options._propKeys || [];
  16517. for (var i = 0; i < propKeys.length; i++) {
  16518. var key = propKeys[i];
  16519. var propOptions = vm.$options.props; // wtf flow?
  16520. props[key] = validateProp(key, propOptions, propsData, vm);
  16521. }
  16522. toggleObserving(true);
  16523. // keep a copy of raw propsData
  16524. vm.$options.propsData = propsData;
  16525. }
  16526. // fixed by xxxxxx update properties(mp runtime)
  16527. vm._$updateProperties && vm._$updateProperties(vm);
  16528. // update listeners
  16529. listeners = listeners || emptyObject;
  16530. var oldListeners = vm.$options._parentListeners;
  16531. vm.$options._parentListeners = listeners;
  16532. updateComponentListeners(vm, listeners, oldListeners);
  16533. // resolve slots + force update if has children
  16534. if (needsForceUpdate) {
  16535. vm.$slots = resolveSlots(renderChildren, parentVnode.context);
  16536. vm.$forceUpdate();
  16537. }
  16538. if (true) {
  16539. isUpdatingChildComponent = false;
  16540. }
  16541. }
  16542. function isInInactiveTree (vm) {
  16543. while (vm && (vm = vm.$parent)) {
  16544. if (vm._inactive) { return true }
  16545. }
  16546. return false
  16547. }
  16548. function activateChildComponent (vm, direct) {
  16549. if (direct) {
  16550. vm._directInactive = false;
  16551. if (isInInactiveTree(vm)) {
  16552. return
  16553. }
  16554. } else if (vm._directInactive) {
  16555. return
  16556. }
  16557. if (vm._inactive || vm._inactive === null) {
  16558. vm._inactive = false;
  16559. for (var i = 0; i < vm.$children.length; i++) {
  16560. activateChildComponent(vm.$children[i]);
  16561. }
  16562. callHook(vm, 'activated');
  16563. }
  16564. }
  16565. function deactivateChildComponent (vm, direct) {
  16566. if (direct) {
  16567. vm._directInactive = true;
  16568. if (isInInactiveTree(vm)) {
  16569. return
  16570. }
  16571. }
  16572. if (!vm._inactive) {
  16573. vm._inactive = true;
  16574. for (var i = 0; i < vm.$children.length; i++) {
  16575. deactivateChildComponent(vm.$children[i]);
  16576. }
  16577. callHook(vm, 'deactivated');
  16578. }
  16579. }
  16580. function callHook (vm, hook) {
  16581. // #7573 disable dep collection when invoking lifecycle hooks
  16582. pushTarget();
  16583. var handlers = vm.$options[hook];
  16584. var info = hook + " hook";
  16585. if (handlers) {
  16586. for (var i = 0, j = handlers.length; i < j; i++) {
  16587. invokeWithErrorHandling(handlers[i], vm, null, vm, info);
  16588. }
  16589. }
  16590. if (vm._hasHookEvent) {
  16591. vm.$emit('hook:' + hook);
  16592. }
  16593. popTarget();
  16594. }
  16595. /* */
  16596. var MAX_UPDATE_COUNT = 100;
  16597. var queue = [];
  16598. var activatedChildren = [];
  16599. var has = {};
  16600. var circular = {};
  16601. var waiting = false;
  16602. var flushing = false;
  16603. var index = 0;
  16604. /**
  16605. * Reset the scheduler's state.
  16606. */
  16607. function resetSchedulerState () {
  16608. index = queue.length = activatedChildren.length = 0;
  16609. has = {};
  16610. if (true) {
  16611. circular = {};
  16612. }
  16613. waiting = flushing = false;
  16614. }
  16615. // Async edge case #6566 requires saving the timestamp when event listeners are
  16616. // attached. However, calling performance.now() has a perf overhead especially
  16617. // if the page has thousands of event listeners. Instead, we take a timestamp
  16618. // every time the scheduler flushes and use that for all event listeners
  16619. // attached during that flush.
  16620. var currentFlushTimestamp = 0;
  16621. // Async edge case fix requires storing an event listener's attach timestamp.
  16622. var getNow = Date.now;
  16623. // Determine what event timestamp the browser is using. Annoyingly, the
  16624. // timestamp can either be hi-res (relative to page load) or low-res
  16625. // (relative to UNIX epoch), so in order to compare time we have to use the
  16626. // same timestamp type when saving the flush timestamp.
  16627. // All IE versions use low-res event timestamps, and have problematic clock
  16628. // implementations (#9632)
  16629. if (inBrowser && !isIE) {
  16630. var performance = window.performance;
  16631. if (
  16632. performance &&
  16633. typeof performance.now === 'function' &&
  16634. getNow() > document.createEvent('Event').timeStamp
  16635. ) {
  16636. // if the event timestamp, although evaluated AFTER the Date.now(), is
  16637. // smaller than it, it means the event is using a hi-res timestamp,
  16638. // and we need to use the hi-res version for event listener timestamps as
  16639. // well.
  16640. getNow = function () { return performance.now(); };
  16641. }
  16642. }
  16643. /**
  16644. * Flush both queues and run the watchers.
  16645. */
  16646. function flushSchedulerQueue () {
  16647. currentFlushTimestamp = getNow();
  16648. flushing = true;
  16649. var watcher, id;
  16650. // Sort queue before flush.
  16651. // This ensures that:
  16652. // 1. Components are updated from parent to child. (because parent is always
  16653. // created before the child)
  16654. // 2. A component's user watchers are run before its render watcher (because
  16655. // user watchers are created before the render watcher)
  16656. // 3. If a component is destroyed during a parent component's watcher run,
  16657. // its watchers can be skipped.
  16658. queue.sort(function (a, b) { return a.id - b.id; });
  16659. // do not cache length because more watchers might be pushed
  16660. // as we run existing watchers
  16661. for (index = 0; index < queue.length; index++) {
  16662. watcher = queue[index];
  16663. if (watcher.before) {
  16664. watcher.before();
  16665. }
  16666. id = watcher.id;
  16667. has[id] = null;
  16668. watcher.run();
  16669. // in dev build, check and stop circular updates.
  16670. if ( true && has[id] != null) {
  16671. circular[id] = (circular[id] || 0) + 1;
  16672. if (circular[id] > MAX_UPDATE_COUNT) {
  16673. warn(
  16674. 'You may have an infinite update loop ' + (
  16675. watcher.user
  16676. ? ("in watcher with expression \"" + (watcher.expression) + "\"")
  16677. : "in a component render function."
  16678. ),
  16679. watcher.vm
  16680. );
  16681. break
  16682. }
  16683. }
  16684. }
  16685. // keep copies of post queues before resetting state
  16686. var activatedQueue = activatedChildren.slice();
  16687. var updatedQueue = queue.slice();
  16688. resetSchedulerState();
  16689. // call component updated and activated hooks
  16690. callActivatedHooks(activatedQueue);
  16691. callUpdatedHooks(updatedQueue);
  16692. // devtool hook
  16693. /* istanbul ignore if */
  16694. if (devtools && config.devtools) {
  16695. devtools.emit('flush');
  16696. }
  16697. }
  16698. function callUpdatedHooks (queue) {
  16699. var i = queue.length;
  16700. while (i--) {
  16701. var watcher = queue[i];
  16702. var vm = watcher.vm;
  16703. if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {
  16704. callHook(vm, 'updated');
  16705. }
  16706. }
  16707. }
  16708. /**
  16709. * Queue a kept-alive component that was activated during patch.
  16710. * The queue will be processed after the entire tree has been patched.
  16711. */
  16712. function queueActivatedComponent (vm) {
  16713. // setting _inactive to false here so that a render function can
  16714. // rely on checking whether it's in an inactive tree (e.g. router-view)
  16715. vm._inactive = false;
  16716. activatedChildren.push(vm);
  16717. }
  16718. function callActivatedHooks (queue) {
  16719. for (var i = 0; i < queue.length; i++) {
  16720. queue[i]._inactive = true;
  16721. activateChildComponent(queue[i], true /* true */);
  16722. }
  16723. }
  16724. /**
  16725. * Push a watcher into the watcher queue.
  16726. * Jobs with duplicate IDs will be skipped unless it's
  16727. * pushed when the queue is being flushed.
  16728. */
  16729. function queueWatcher (watcher) {
  16730. var id = watcher.id;
  16731. if (has[id] == null) {
  16732. has[id] = true;
  16733. if (!flushing) {
  16734. queue.push(watcher);
  16735. } else {
  16736. // if already flushing, splice the watcher based on its id
  16737. // if already past its id, it will be run next immediately.
  16738. var i = queue.length - 1;
  16739. while (i > index && queue[i].id > watcher.id) {
  16740. i--;
  16741. }
  16742. queue.splice(i + 1, 0, watcher);
  16743. }
  16744. // queue the flush
  16745. if (!waiting) {
  16746. waiting = true;
  16747. if ( true && !config.async) {
  16748. flushSchedulerQueue();
  16749. return
  16750. }
  16751. nextTick(flushSchedulerQueue);
  16752. }
  16753. }
  16754. }
  16755. /* */
  16756. var uid$2 = 0;
  16757. /**
  16758. * A watcher parses an expression, collects dependencies,
  16759. * and fires callback when the expression value changes.
  16760. * This is used for both the $watch() api and directives.
  16761. */
  16762. var Watcher = function Watcher (
  16763. vm,
  16764. expOrFn,
  16765. cb,
  16766. options,
  16767. isRenderWatcher
  16768. ) {
  16769. this.vm = vm;
  16770. if (isRenderWatcher) {
  16771. vm._watcher = this;
  16772. }
  16773. vm._watchers.push(this);
  16774. // options
  16775. if (options) {
  16776. this.deep = !!options.deep;
  16777. this.user = !!options.user;
  16778. this.lazy = !!options.lazy;
  16779. this.sync = !!options.sync;
  16780. this.before = options.before;
  16781. } else {
  16782. this.deep = this.user = this.lazy = this.sync = false;
  16783. }
  16784. this.cb = cb;
  16785. this.id = ++uid$2; // uid for batching
  16786. this.active = true;
  16787. this.dirty = this.lazy; // for lazy watchers
  16788. this.deps = [];
  16789. this.newDeps = [];
  16790. this.depIds = new _Set();
  16791. this.newDepIds = new _Set();
  16792. this.expression = true
  16793. ? expOrFn.toString()
  16794. : undefined;
  16795. // parse expression for getter
  16796. if (typeof expOrFn === 'function') {
  16797. this.getter = expOrFn;
  16798. } else {
  16799. this.getter = parsePath(expOrFn);
  16800. if (!this.getter) {
  16801. this.getter = noop;
  16802. true && warn(
  16803. "Failed watching path: \"" + expOrFn + "\" " +
  16804. 'Watcher only accepts simple dot-delimited paths. ' +
  16805. 'For full control, use a function instead.',
  16806. vm
  16807. );
  16808. }
  16809. }
  16810. this.value = this.lazy
  16811. ? undefined
  16812. : this.get();
  16813. };
  16814. /**
  16815. * Evaluate the getter, and re-collect dependencies.
  16816. */
  16817. Watcher.prototype.get = function get () {
  16818. pushTarget(this);
  16819. var value;
  16820. var vm = this.vm;
  16821. try {
  16822. value = this.getter.call(vm, vm);
  16823. } catch (e) {
  16824. if (this.user) {
  16825. handleError(e, vm, ("getter for watcher \"" + (this.expression) + "\""));
  16826. } else {
  16827. throw e
  16828. }
  16829. } finally {
  16830. // "touch" every property so they are all tracked as
  16831. // dependencies for deep watching
  16832. if (this.deep) {
  16833. traverse(value);
  16834. }
  16835. popTarget();
  16836. this.cleanupDeps();
  16837. }
  16838. return value
  16839. };
  16840. /**
  16841. * Add a dependency to this directive.
  16842. */
  16843. Watcher.prototype.addDep = function addDep (dep) {
  16844. var id = dep.id;
  16845. if (!this.newDepIds.has(id)) {
  16846. this.newDepIds.add(id);
  16847. this.newDeps.push(dep);
  16848. if (!this.depIds.has(id)) {
  16849. dep.addSub(this);
  16850. }
  16851. }
  16852. };
  16853. /**
  16854. * Clean up for dependency collection.
  16855. */
  16856. Watcher.prototype.cleanupDeps = function cleanupDeps () {
  16857. var i = this.deps.length;
  16858. while (i--) {
  16859. var dep = this.deps[i];
  16860. if (!this.newDepIds.has(dep.id)) {
  16861. dep.removeSub(this);
  16862. }
  16863. }
  16864. var tmp = this.depIds;
  16865. this.depIds = this.newDepIds;
  16866. this.newDepIds = tmp;
  16867. this.newDepIds.clear();
  16868. tmp = this.deps;
  16869. this.deps = this.newDeps;
  16870. this.newDeps = tmp;
  16871. this.newDeps.length = 0;
  16872. };
  16873. /**
  16874. * Subscriber interface.
  16875. * Will be called when a dependency changes.
  16876. */
  16877. Watcher.prototype.update = function update () {
  16878. /* istanbul ignore else */
  16879. if (this.lazy) {
  16880. this.dirty = true;
  16881. } else if (this.sync) {
  16882. this.run();
  16883. } else {
  16884. queueWatcher(this);
  16885. }
  16886. };
  16887. /**
  16888. * Scheduler job interface.
  16889. * Will be called by the scheduler.
  16890. */
  16891. Watcher.prototype.run = function run () {
  16892. if (this.active) {
  16893. var value = this.get();
  16894. if (
  16895. value !== this.value ||
  16896. // Deep watchers and watchers on Object/Arrays should fire even
  16897. // when the value is the same, because the value may
  16898. // have mutated.
  16899. isObject(value) ||
  16900. this.deep
  16901. ) {
  16902. // set new value
  16903. var oldValue = this.value;
  16904. this.value = value;
  16905. if (this.user) {
  16906. try {
  16907. this.cb.call(this.vm, value, oldValue);
  16908. } catch (e) {
  16909. handleError(e, this.vm, ("callback for watcher \"" + (this.expression) + "\""));
  16910. }
  16911. } else {
  16912. this.cb.call(this.vm, value, oldValue);
  16913. }
  16914. }
  16915. }
  16916. };
  16917. /**
  16918. * Evaluate the value of the watcher.
  16919. * This only gets called for lazy watchers.
  16920. */
  16921. Watcher.prototype.evaluate = function evaluate () {
  16922. this.value = this.get();
  16923. this.dirty = false;
  16924. };
  16925. /**
  16926. * Depend on all deps collected by this watcher.
  16927. */
  16928. Watcher.prototype.depend = function depend () {
  16929. var i = this.deps.length;
  16930. while (i--) {
  16931. this.deps[i].depend();
  16932. }
  16933. };
  16934. /**
  16935. * Remove self from all dependencies' subscriber list.
  16936. */
  16937. Watcher.prototype.teardown = function teardown () {
  16938. if (this.active) {
  16939. // remove self from vm's watcher list
  16940. // this is a somewhat expensive operation so we skip it
  16941. // if the vm is being destroyed.
  16942. if (!this.vm._isBeingDestroyed) {
  16943. remove(this.vm._watchers, this);
  16944. }
  16945. var i = this.deps.length;
  16946. while (i--) {
  16947. this.deps[i].removeSub(this);
  16948. }
  16949. this.active = false;
  16950. }
  16951. };
  16952. /* */
  16953. var sharedPropertyDefinition = {
  16954. enumerable: true,
  16955. configurable: true,
  16956. get: noop,
  16957. set: noop
  16958. };
  16959. function proxy (target, sourceKey, key) {
  16960. sharedPropertyDefinition.get = function proxyGetter () {
  16961. return this[sourceKey][key]
  16962. };
  16963. sharedPropertyDefinition.set = function proxySetter (val) {
  16964. this[sourceKey][key] = val;
  16965. };
  16966. Object.defineProperty(target, key, sharedPropertyDefinition);
  16967. }
  16968. function initState (vm) {
  16969. vm._watchers = [];
  16970. var opts = vm.$options;
  16971. if (opts.props) { initProps(vm, opts.props); }
  16972. if (opts.methods) { initMethods(vm, opts.methods); }
  16973. if (opts.data) {
  16974. initData(vm);
  16975. } else {
  16976. observe(vm._data = {}, true /* asRootData */);
  16977. }
  16978. if (opts.computed) { initComputed(vm, opts.computed); }
  16979. if (opts.watch && opts.watch !== nativeWatch) {
  16980. initWatch(vm, opts.watch);
  16981. }
  16982. }
  16983. function initProps (vm, propsOptions) {
  16984. var propsData = vm.$options.propsData || {};
  16985. var props = vm._props = {};
  16986. // cache prop keys so that future props updates can iterate using Array
  16987. // instead of dynamic object key enumeration.
  16988. var keys = vm.$options._propKeys = [];
  16989. var isRoot = !vm.$parent;
  16990. // root instance props should be converted
  16991. if (!isRoot) {
  16992. toggleObserving(false);
  16993. }
  16994. var loop = function ( key ) {
  16995. keys.push(key);
  16996. var value = validateProp(key, propsOptions, propsData, vm);
  16997. /* istanbul ignore else */
  16998. if (true) {
  16999. var hyphenatedKey = hyphenate(key);
  17000. if (isReservedAttribute(hyphenatedKey) ||
  17001. config.isReservedAttr(hyphenatedKey)) {
  17002. warn(
  17003. ("\"" + hyphenatedKey + "\" is a reserved attribute and cannot be used as component prop."),
  17004. vm
  17005. );
  17006. }
  17007. defineReactive$$1(props, key, value, function () {
  17008. if (!isRoot && !isUpdatingChildComponent) {
  17009. {
  17010. if(vm.mpHost === 'mp-baidu' || vm.mpHost === 'mp-kuaishou' || vm.mpHost === 'mp-xhs'){//百度、快手、小红书 observer 在 setData callback 之后触发,直接忽略该 warn
  17011. return
  17012. }
  17013. //fixed by xxxxxx __next_tick_pending,uni://form-field 时不告警
  17014. if(
  17015. key === 'value' &&
  17016. Array.isArray(vm.$options.behaviors) &&
  17017. vm.$options.behaviors.indexOf('uni://form-field') !== -1
  17018. ){
  17019. return
  17020. }
  17021. if(vm._getFormData){
  17022. return
  17023. }
  17024. var $parent = vm.$parent;
  17025. while($parent){
  17026. if($parent.__next_tick_pending){
  17027. return
  17028. }
  17029. $parent = $parent.$parent;
  17030. }
  17031. }
  17032. warn(
  17033. "Avoid mutating a prop directly since the value will be " +
  17034. "overwritten whenever the parent component re-renders. " +
  17035. "Instead, use a data or computed property based on the prop's " +
  17036. "value. Prop being mutated: \"" + key + "\"",
  17037. vm
  17038. );
  17039. }
  17040. });
  17041. } else {}
  17042. // static props are already proxied on the component's prototype
  17043. // during Vue.extend(). We only need to proxy props defined at
  17044. // instantiation here.
  17045. if (!(key in vm)) {
  17046. proxy(vm, "_props", key);
  17047. }
  17048. };
  17049. for (var key in propsOptions) loop( key );
  17050. toggleObserving(true);
  17051. }
  17052. function initData (vm) {
  17053. var data = vm.$options.data;
  17054. data = vm._data = typeof data === 'function'
  17055. ? getData(data, vm)
  17056. : data || {};
  17057. if (!isPlainObject(data)) {
  17058. data = {};
  17059. true && warn(
  17060. 'data functions should return an object:\n' +
  17061. 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',
  17062. vm
  17063. );
  17064. }
  17065. // proxy data on instance
  17066. var keys = Object.keys(data);
  17067. var props = vm.$options.props;
  17068. var methods = vm.$options.methods;
  17069. var i = keys.length;
  17070. while (i--) {
  17071. var key = keys[i];
  17072. if (true) {
  17073. if (methods && hasOwn(methods, key)) {
  17074. warn(
  17075. ("Method \"" + key + "\" has already been defined as a data property."),
  17076. vm
  17077. );
  17078. }
  17079. }
  17080. if (props && hasOwn(props, key)) {
  17081. true && warn(
  17082. "The data property \"" + key + "\" is already declared as a prop. " +
  17083. "Use prop default value instead.",
  17084. vm
  17085. );
  17086. } else if (!isReserved(key)) {
  17087. proxy(vm, "_data", key);
  17088. }
  17089. }
  17090. // observe data
  17091. observe(data, true /* asRootData */);
  17092. }
  17093. function getData (data, vm) {
  17094. // #7573 disable dep collection when invoking data getters
  17095. pushTarget();
  17096. try {
  17097. return data.call(vm, vm)
  17098. } catch (e) {
  17099. handleError(e, vm, "data()");
  17100. return {}
  17101. } finally {
  17102. popTarget();
  17103. }
  17104. }
  17105. var computedWatcherOptions = { lazy: true };
  17106. function initComputed (vm, computed) {
  17107. // $flow-disable-line
  17108. var watchers = vm._computedWatchers = Object.create(null);
  17109. // computed properties are just getters during SSR
  17110. var isSSR = isServerRendering();
  17111. for (var key in computed) {
  17112. var userDef = computed[key];
  17113. var getter = typeof userDef === 'function' ? userDef : userDef.get;
  17114. if ( true && getter == null) {
  17115. warn(
  17116. ("Getter is missing for computed property \"" + key + "\"."),
  17117. vm
  17118. );
  17119. }
  17120. if (!isSSR) {
  17121. // create internal watcher for the computed property.
  17122. watchers[key] = new Watcher(
  17123. vm,
  17124. getter || noop,
  17125. noop,
  17126. computedWatcherOptions
  17127. );
  17128. }
  17129. // component-defined computed properties are already defined on the
  17130. // component prototype. We only need to define computed properties defined
  17131. // at instantiation here.
  17132. if (!(key in vm)) {
  17133. defineComputed(vm, key, userDef);
  17134. } else if (true) {
  17135. if (key in vm.$data) {
  17136. warn(("The computed property \"" + key + "\" is already defined in data."), vm);
  17137. } else if (vm.$options.props && key in vm.$options.props) {
  17138. warn(("The computed property \"" + key + "\" is already defined as a prop."), vm);
  17139. }
  17140. }
  17141. }
  17142. }
  17143. function defineComputed (
  17144. target,
  17145. key,
  17146. userDef
  17147. ) {
  17148. var shouldCache = !isServerRendering();
  17149. if (typeof userDef === 'function') {
  17150. sharedPropertyDefinition.get = shouldCache
  17151. ? createComputedGetter(key)
  17152. : createGetterInvoker(userDef);
  17153. sharedPropertyDefinition.set = noop;
  17154. } else {
  17155. sharedPropertyDefinition.get = userDef.get
  17156. ? shouldCache && userDef.cache !== false
  17157. ? createComputedGetter(key)
  17158. : createGetterInvoker(userDef.get)
  17159. : noop;
  17160. sharedPropertyDefinition.set = userDef.set || noop;
  17161. }
  17162. if ( true &&
  17163. sharedPropertyDefinition.set === noop) {
  17164. sharedPropertyDefinition.set = function () {
  17165. warn(
  17166. ("Computed property \"" + key + "\" was assigned to but it has no setter."),
  17167. this
  17168. );
  17169. };
  17170. }
  17171. Object.defineProperty(target, key, sharedPropertyDefinition);
  17172. }
  17173. function createComputedGetter (key) {
  17174. return function computedGetter () {
  17175. var watcher = this._computedWatchers && this._computedWatchers[key];
  17176. if (watcher) {
  17177. if (watcher.dirty) {
  17178. watcher.evaluate();
  17179. }
  17180. if (Dep.SharedObject.target) {// fixed by xxxxxx
  17181. watcher.depend();
  17182. }
  17183. return watcher.value
  17184. }
  17185. }
  17186. }
  17187. function createGetterInvoker(fn) {
  17188. return function computedGetter () {
  17189. return fn.call(this, this)
  17190. }
  17191. }
  17192. function initMethods (vm, methods) {
  17193. var props = vm.$options.props;
  17194. for (var key in methods) {
  17195. if (true) {
  17196. if (typeof methods[key] !== 'function') {
  17197. warn(
  17198. "Method \"" + key + "\" has type \"" + (typeof methods[key]) + "\" in the component definition. " +
  17199. "Did you reference the function correctly?",
  17200. vm
  17201. );
  17202. }
  17203. if (props && hasOwn(props, key)) {
  17204. warn(
  17205. ("Method \"" + key + "\" has already been defined as a prop."),
  17206. vm
  17207. );
  17208. }
  17209. if ((key in vm) && isReserved(key)) {
  17210. warn(
  17211. "Method \"" + key + "\" conflicts with an existing Vue instance method. " +
  17212. "Avoid defining component methods that start with _ or $."
  17213. );
  17214. }
  17215. }
  17216. vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);
  17217. }
  17218. }
  17219. function initWatch (vm, watch) {
  17220. for (var key in watch) {
  17221. var handler = watch[key];
  17222. if (Array.isArray(handler)) {
  17223. for (var i = 0; i < handler.length; i++) {
  17224. createWatcher(vm, key, handler[i]);
  17225. }
  17226. } else {
  17227. createWatcher(vm, key, handler);
  17228. }
  17229. }
  17230. }
  17231. function createWatcher (
  17232. vm,
  17233. expOrFn,
  17234. handler,
  17235. options
  17236. ) {
  17237. if (isPlainObject(handler)) {
  17238. options = handler;
  17239. handler = handler.handler;
  17240. }
  17241. if (typeof handler === 'string') {
  17242. handler = vm[handler];
  17243. }
  17244. return vm.$watch(expOrFn, handler, options)
  17245. }
  17246. function stateMixin (Vue) {
  17247. // flow somehow has problems with directly declared definition object
  17248. // when using Object.defineProperty, so we have to procedurally build up
  17249. // the object here.
  17250. var dataDef = {};
  17251. dataDef.get = function () { return this._data };
  17252. var propsDef = {};
  17253. propsDef.get = function () { return this._props };
  17254. if (true) {
  17255. dataDef.set = function () {
  17256. warn(
  17257. 'Avoid replacing instance root $data. ' +
  17258. 'Use nested data properties instead.',
  17259. this
  17260. );
  17261. };
  17262. propsDef.set = function () {
  17263. warn("$props is readonly.", this);
  17264. };
  17265. }
  17266. Object.defineProperty(Vue.prototype, '$data', dataDef);
  17267. Object.defineProperty(Vue.prototype, '$props', propsDef);
  17268. Vue.prototype.$set = set;
  17269. Vue.prototype.$delete = del;
  17270. Vue.prototype.$watch = function (
  17271. expOrFn,
  17272. cb,
  17273. options
  17274. ) {
  17275. var vm = this;
  17276. if (isPlainObject(cb)) {
  17277. return createWatcher(vm, expOrFn, cb, options)
  17278. }
  17279. options = options || {};
  17280. options.user = true;
  17281. var watcher = new Watcher(vm, expOrFn, cb, options);
  17282. if (options.immediate) {
  17283. try {
  17284. cb.call(vm, watcher.value);
  17285. } catch (error) {
  17286. handleError(error, vm, ("callback for immediate watcher \"" + (watcher.expression) + "\""));
  17287. }
  17288. }
  17289. return function unwatchFn () {
  17290. watcher.teardown();
  17291. }
  17292. };
  17293. }
  17294. /* */
  17295. var uid$3 = 0;
  17296. function initMixin (Vue) {
  17297. Vue.prototype._init = function (options) {
  17298. var vm = this;
  17299. // a uid
  17300. vm._uid = uid$3++;
  17301. var startTag, endTag;
  17302. /* istanbul ignore if */
  17303. if ( true && config.performance && mark) {
  17304. startTag = "vue-perf-start:" + (vm._uid);
  17305. endTag = "vue-perf-end:" + (vm._uid);
  17306. mark(startTag);
  17307. }
  17308. // a flag to avoid this being observed
  17309. vm._isVue = true;
  17310. // merge options
  17311. if (options && options._isComponent) {
  17312. // optimize internal component instantiation
  17313. // since dynamic options merging is pretty slow, and none of the
  17314. // internal component options needs special treatment.
  17315. initInternalComponent(vm, options);
  17316. } else {
  17317. vm.$options = mergeOptions(
  17318. resolveConstructorOptions(vm.constructor),
  17319. options || {},
  17320. vm
  17321. );
  17322. }
  17323. /* istanbul ignore else */
  17324. if (true) {
  17325. initProxy(vm);
  17326. } else {}
  17327. // expose real self
  17328. vm._self = vm;
  17329. initLifecycle(vm);
  17330. initEvents(vm);
  17331. initRender(vm);
  17332. callHook(vm, 'beforeCreate');
  17333. !vm._$fallback && initInjections(vm); // resolve injections before data/props
  17334. initState(vm);
  17335. !vm._$fallback && initProvide(vm); // resolve provide after data/props
  17336. !vm._$fallback && callHook(vm, 'created');
  17337. /* istanbul ignore if */
  17338. if ( true && config.performance && mark) {
  17339. vm._name = formatComponentName(vm, false);
  17340. mark(endTag);
  17341. measure(("vue " + (vm._name) + " init"), startTag, endTag);
  17342. }
  17343. if (vm.$options.el) {
  17344. vm.$mount(vm.$options.el);
  17345. }
  17346. };
  17347. }
  17348. function initInternalComponent (vm, options) {
  17349. var opts = vm.$options = Object.create(vm.constructor.options);
  17350. // doing this because it's faster than dynamic enumeration.
  17351. var parentVnode = options._parentVnode;
  17352. opts.parent = options.parent;
  17353. opts._parentVnode = parentVnode;
  17354. var vnodeComponentOptions = parentVnode.componentOptions;
  17355. opts.propsData = vnodeComponentOptions.propsData;
  17356. opts._parentListeners = vnodeComponentOptions.listeners;
  17357. opts._renderChildren = vnodeComponentOptions.children;
  17358. opts._componentTag = vnodeComponentOptions.tag;
  17359. if (options.render) {
  17360. opts.render = options.render;
  17361. opts.staticRenderFns = options.staticRenderFns;
  17362. }
  17363. }
  17364. function resolveConstructorOptions (Ctor) {
  17365. var options = Ctor.options;
  17366. if (Ctor.super) {
  17367. var superOptions = resolveConstructorOptions(Ctor.super);
  17368. var cachedSuperOptions = Ctor.superOptions;
  17369. if (superOptions !== cachedSuperOptions) {
  17370. // super option changed,
  17371. // need to resolve new options.
  17372. Ctor.superOptions = superOptions;
  17373. // check if there are any late-modified/attached options (#4976)
  17374. var modifiedOptions = resolveModifiedOptions(Ctor);
  17375. // update base extend options
  17376. if (modifiedOptions) {
  17377. extend(Ctor.extendOptions, modifiedOptions);
  17378. }
  17379. options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);
  17380. if (options.name) {
  17381. options.components[options.name] = Ctor;
  17382. }
  17383. }
  17384. }
  17385. return options
  17386. }
  17387. function resolveModifiedOptions (Ctor) {
  17388. var modified;
  17389. var latest = Ctor.options;
  17390. var sealed = Ctor.sealedOptions;
  17391. for (var key in latest) {
  17392. if (latest[key] !== sealed[key]) {
  17393. if (!modified) { modified = {}; }
  17394. modified[key] = latest[key];
  17395. }
  17396. }
  17397. return modified
  17398. }
  17399. function Vue (options) {
  17400. if ( true &&
  17401. !(this instanceof Vue)
  17402. ) {
  17403. warn('Vue is a constructor and should be called with the `new` keyword');
  17404. }
  17405. this._init(options);
  17406. }
  17407. initMixin(Vue);
  17408. stateMixin(Vue);
  17409. eventsMixin(Vue);
  17410. lifecycleMixin(Vue);
  17411. renderMixin(Vue);
  17412. /* */
  17413. function initUse (Vue) {
  17414. Vue.use = function (plugin) {
  17415. var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));
  17416. if (installedPlugins.indexOf(plugin) > -1) {
  17417. return this
  17418. }
  17419. // additional parameters
  17420. var args = toArray(arguments, 1);
  17421. args.unshift(this);
  17422. if (typeof plugin.install === 'function') {
  17423. plugin.install.apply(plugin, args);
  17424. } else if (typeof plugin === 'function') {
  17425. plugin.apply(null, args);
  17426. }
  17427. installedPlugins.push(plugin);
  17428. return this
  17429. };
  17430. }
  17431. /* */
  17432. function initMixin$1 (Vue) {
  17433. Vue.mixin = function (mixin) {
  17434. this.options = mergeOptions(this.options, mixin);
  17435. return this
  17436. };
  17437. }
  17438. /* */
  17439. function initExtend (Vue) {
  17440. /**
  17441. * Each instance constructor, including Vue, has a unique
  17442. * cid. This enables us to create wrapped "child
  17443. * constructors" for prototypal inheritance and cache them.
  17444. */
  17445. Vue.cid = 0;
  17446. var cid = 1;
  17447. /**
  17448. * Class inheritance
  17449. */
  17450. Vue.extend = function (extendOptions) {
  17451. extendOptions = extendOptions || {};
  17452. var Super = this;
  17453. var SuperId = Super.cid;
  17454. var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});
  17455. if (cachedCtors[SuperId]) {
  17456. return cachedCtors[SuperId]
  17457. }
  17458. var name = extendOptions.name || Super.options.name;
  17459. if ( true && name) {
  17460. validateComponentName(name);
  17461. }
  17462. var Sub = function VueComponent (options) {
  17463. this._init(options);
  17464. };
  17465. Sub.prototype = Object.create(Super.prototype);
  17466. Sub.prototype.constructor = Sub;
  17467. Sub.cid = cid++;
  17468. Sub.options = mergeOptions(
  17469. Super.options,
  17470. extendOptions
  17471. );
  17472. Sub['super'] = Super;
  17473. // For props and computed properties, we define the proxy getters on
  17474. // the Vue instances at extension time, on the extended prototype. This
  17475. // avoids Object.defineProperty calls for each instance created.
  17476. if (Sub.options.props) {
  17477. initProps$1(Sub);
  17478. }
  17479. if (Sub.options.computed) {
  17480. initComputed$1(Sub);
  17481. }
  17482. // allow further extension/mixin/plugin usage
  17483. Sub.extend = Super.extend;
  17484. Sub.mixin = Super.mixin;
  17485. Sub.use = Super.use;
  17486. // create asset registers, so extended classes
  17487. // can have their private assets too.
  17488. ASSET_TYPES.forEach(function (type) {
  17489. Sub[type] = Super[type];
  17490. });
  17491. // enable recursive self-lookup
  17492. if (name) {
  17493. Sub.options.components[name] = Sub;
  17494. }
  17495. // keep a reference to the super options at extension time.
  17496. // later at instantiation we can check if Super's options have
  17497. // been updated.
  17498. Sub.superOptions = Super.options;
  17499. Sub.extendOptions = extendOptions;
  17500. Sub.sealedOptions = extend({}, Sub.options);
  17501. // cache constructor
  17502. cachedCtors[SuperId] = Sub;
  17503. return Sub
  17504. };
  17505. }
  17506. function initProps$1 (Comp) {
  17507. var props = Comp.options.props;
  17508. for (var key in props) {
  17509. proxy(Comp.prototype, "_props", key);
  17510. }
  17511. }
  17512. function initComputed$1 (Comp) {
  17513. var computed = Comp.options.computed;
  17514. for (var key in computed) {
  17515. defineComputed(Comp.prototype, key, computed[key]);
  17516. }
  17517. }
  17518. /* */
  17519. function initAssetRegisters (Vue) {
  17520. /**
  17521. * Create asset registration methods.
  17522. */
  17523. ASSET_TYPES.forEach(function (type) {
  17524. Vue[type] = function (
  17525. id,
  17526. definition
  17527. ) {
  17528. if (!definition) {
  17529. return this.options[type + 's'][id]
  17530. } else {
  17531. /* istanbul ignore if */
  17532. if ( true && type === 'component') {
  17533. validateComponentName(id);
  17534. }
  17535. if (type === 'component' && isPlainObject(definition)) {
  17536. definition.name = definition.name || id;
  17537. definition = this.options._base.extend(definition);
  17538. }
  17539. if (type === 'directive' && typeof definition === 'function') {
  17540. definition = { bind: definition, update: definition };
  17541. }
  17542. this.options[type + 's'][id] = definition;
  17543. return definition
  17544. }
  17545. };
  17546. });
  17547. }
  17548. /* */
  17549. function getComponentName (opts) {
  17550. return opts && (opts.Ctor.options.name || opts.tag)
  17551. }
  17552. function matches (pattern, name) {
  17553. if (Array.isArray(pattern)) {
  17554. return pattern.indexOf(name) > -1
  17555. } else if (typeof pattern === 'string') {
  17556. return pattern.split(',').indexOf(name) > -1
  17557. } else if (isRegExp(pattern)) {
  17558. return pattern.test(name)
  17559. }
  17560. /* istanbul ignore next */
  17561. return false
  17562. }
  17563. function pruneCache (keepAliveInstance, filter) {
  17564. var cache = keepAliveInstance.cache;
  17565. var keys = keepAliveInstance.keys;
  17566. var _vnode = keepAliveInstance._vnode;
  17567. for (var key in cache) {
  17568. var cachedNode = cache[key];
  17569. if (cachedNode) {
  17570. var name = getComponentName(cachedNode.componentOptions);
  17571. if (name && !filter(name)) {
  17572. pruneCacheEntry(cache, key, keys, _vnode);
  17573. }
  17574. }
  17575. }
  17576. }
  17577. function pruneCacheEntry (
  17578. cache,
  17579. key,
  17580. keys,
  17581. current
  17582. ) {
  17583. var cached$$1 = cache[key];
  17584. if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {
  17585. cached$$1.componentInstance.$destroy();
  17586. }
  17587. cache[key] = null;
  17588. remove(keys, key);
  17589. }
  17590. var patternTypes = [String, RegExp, Array];
  17591. var KeepAlive = {
  17592. name: 'keep-alive',
  17593. abstract: true,
  17594. props: {
  17595. include: patternTypes,
  17596. exclude: patternTypes,
  17597. max: [String, Number]
  17598. },
  17599. created: function created () {
  17600. this.cache = Object.create(null);
  17601. this.keys = [];
  17602. },
  17603. destroyed: function destroyed () {
  17604. for (var key in this.cache) {
  17605. pruneCacheEntry(this.cache, key, this.keys);
  17606. }
  17607. },
  17608. mounted: function mounted () {
  17609. var this$1 = this;
  17610. this.$watch('include', function (val) {
  17611. pruneCache(this$1, function (name) { return matches(val, name); });
  17612. });
  17613. this.$watch('exclude', function (val) {
  17614. pruneCache(this$1, function (name) { return !matches(val, name); });
  17615. });
  17616. },
  17617. render: function render () {
  17618. var slot = this.$slots.default;
  17619. var vnode = getFirstComponentChild(slot);
  17620. var componentOptions = vnode && vnode.componentOptions;
  17621. if (componentOptions) {
  17622. // check pattern
  17623. var name = getComponentName(componentOptions);
  17624. var ref = this;
  17625. var include = ref.include;
  17626. var exclude = ref.exclude;
  17627. if (
  17628. // not included
  17629. (include && (!name || !matches(include, name))) ||
  17630. // excluded
  17631. (exclude && name && matches(exclude, name))
  17632. ) {
  17633. return vnode
  17634. }
  17635. var ref$1 = this;
  17636. var cache = ref$1.cache;
  17637. var keys = ref$1.keys;
  17638. var key = vnode.key == null
  17639. // same constructor may get registered as different local components
  17640. // so cid alone is not enough (#3269)
  17641. ? componentOptions.Ctor.cid + (componentOptions.tag ? ("::" + (componentOptions.tag)) : '')
  17642. : vnode.key;
  17643. if (cache[key]) {
  17644. vnode.componentInstance = cache[key].componentInstance;
  17645. // make current key freshest
  17646. remove(keys, key);
  17647. keys.push(key);
  17648. } else {
  17649. cache[key] = vnode;
  17650. keys.push(key);
  17651. // prune oldest entry
  17652. if (this.max && keys.length > parseInt(this.max)) {
  17653. pruneCacheEntry(cache, keys[0], keys, this._vnode);
  17654. }
  17655. }
  17656. vnode.data.keepAlive = true;
  17657. }
  17658. return vnode || (slot && slot[0])
  17659. }
  17660. };
  17661. var builtInComponents = {
  17662. KeepAlive: KeepAlive
  17663. };
  17664. /* */
  17665. function initGlobalAPI (Vue) {
  17666. // config
  17667. var configDef = {};
  17668. configDef.get = function () { return config; };
  17669. if (true) {
  17670. configDef.set = function () {
  17671. warn(
  17672. 'Do not replace the Vue.config object, set individual fields instead.'
  17673. );
  17674. };
  17675. }
  17676. Object.defineProperty(Vue, 'config', configDef);
  17677. // exposed util methods.
  17678. // NOTE: these are not considered part of the public API - avoid relying on
  17679. // them unless you are aware of the risk.
  17680. Vue.util = {
  17681. warn: warn,
  17682. extend: extend,
  17683. mergeOptions: mergeOptions,
  17684. defineReactive: defineReactive$$1
  17685. };
  17686. Vue.set = set;
  17687. Vue.delete = del;
  17688. Vue.nextTick = nextTick;
  17689. // 2.6 explicit observable API
  17690. Vue.observable = function (obj) {
  17691. observe(obj);
  17692. return obj
  17693. };
  17694. Vue.options = Object.create(null);
  17695. ASSET_TYPES.forEach(function (type) {
  17696. Vue.options[type + 's'] = Object.create(null);
  17697. });
  17698. // this is used to identify the "base" constructor to extend all plain-object
  17699. // components with in Weex's multi-instance scenarios.
  17700. Vue.options._base = Vue;
  17701. extend(Vue.options.components, builtInComponents);
  17702. initUse(Vue);
  17703. initMixin$1(Vue);
  17704. initExtend(Vue);
  17705. initAssetRegisters(Vue);
  17706. }
  17707. initGlobalAPI(Vue);
  17708. Object.defineProperty(Vue.prototype, '$isServer', {
  17709. get: isServerRendering
  17710. });
  17711. Object.defineProperty(Vue.prototype, '$ssrContext', {
  17712. get: function get () {
  17713. /* istanbul ignore next */
  17714. return this.$vnode && this.$vnode.ssrContext
  17715. }
  17716. });
  17717. // expose FunctionalRenderContext for ssr runtime helper installation
  17718. Object.defineProperty(Vue, 'FunctionalRenderContext', {
  17719. value: FunctionalRenderContext
  17720. });
  17721. Vue.version = '2.6.11';
  17722. /**
  17723. * https://raw.githubusercontent.com/Tencent/westore/master/packages/westore/utils/diff.js
  17724. */
  17725. var ARRAYTYPE = '[object Array]';
  17726. var OBJECTTYPE = '[object Object]';
  17727. // const FUNCTIONTYPE = '[object Function]'
  17728. function diff(current, pre) {
  17729. var result = {};
  17730. syncKeys(current, pre);
  17731. _diff(current, pre, '', result);
  17732. return result
  17733. }
  17734. function syncKeys(current, pre) {
  17735. if (current === pre) { return }
  17736. var rootCurrentType = type(current);
  17737. var rootPreType = type(pre);
  17738. if (rootCurrentType == OBJECTTYPE && rootPreType == OBJECTTYPE) {
  17739. if(Object.keys(current).length >= Object.keys(pre).length){
  17740. for (var key in pre) {
  17741. var currentValue = current[key];
  17742. if (currentValue === undefined) {
  17743. current[key] = null;
  17744. } else {
  17745. syncKeys(currentValue, pre[key]);
  17746. }
  17747. }
  17748. }
  17749. } else if (rootCurrentType == ARRAYTYPE && rootPreType == ARRAYTYPE) {
  17750. if (current.length >= pre.length) {
  17751. pre.forEach(function (item, index) {
  17752. syncKeys(current[index], item);
  17753. });
  17754. }
  17755. }
  17756. }
  17757. function _diff(current, pre, path, result) {
  17758. if (current === pre) { return }
  17759. var rootCurrentType = type(current);
  17760. var rootPreType = type(pre);
  17761. if (rootCurrentType == OBJECTTYPE) {
  17762. if (rootPreType != OBJECTTYPE || Object.keys(current).length < Object.keys(pre).length) {
  17763. setResult(result, path, current);
  17764. } else {
  17765. var loop = function ( key ) {
  17766. var currentValue = current[key];
  17767. var preValue = pre[key];
  17768. var currentType = type(currentValue);
  17769. var preType = type(preValue);
  17770. if (currentType != ARRAYTYPE && currentType != OBJECTTYPE) {
  17771. if (currentValue !== pre[key]) {
  17772. setResult(result, (path == '' ? '' : path + ".") + key, currentValue);
  17773. }
  17774. } else if (currentType == ARRAYTYPE) {
  17775. if (preType != ARRAYTYPE) {
  17776. setResult(result, (path == '' ? '' : path + ".") + key, currentValue);
  17777. } else {
  17778. if (currentValue.length < preValue.length) {
  17779. setResult(result, (path == '' ? '' : path + ".") + key, currentValue);
  17780. } else {
  17781. currentValue.forEach(function (item, index) {
  17782. _diff(item, preValue[index], (path == '' ? '' : path + ".") + key + '[' + index + ']', result);
  17783. });
  17784. }
  17785. }
  17786. } else if (currentType == OBJECTTYPE) {
  17787. if (preType != OBJECTTYPE || Object.keys(currentValue).length < Object.keys(preValue).length) {
  17788. setResult(result, (path == '' ? '' : path + ".") + key, currentValue);
  17789. } else {
  17790. for (var subKey in currentValue) {
  17791. _diff(currentValue[subKey], preValue[subKey], (path == '' ? '' : path + ".") + key + '.' + subKey, result);
  17792. }
  17793. }
  17794. }
  17795. };
  17796. for (var key in current) loop( key );
  17797. }
  17798. } else if (rootCurrentType == ARRAYTYPE) {
  17799. if (rootPreType != ARRAYTYPE) {
  17800. setResult(result, path, current);
  17801. } else {
  17802. if (current.length < pre.length) {
  17803. setResult(result, path, current);
  17804. } else {
  17805. current.forEach(function (item, index) {
  17806. _diff(item, pre[index], path + '[' + index + ']', result);
  17807. });
  17808. }
  17809. }
  17810. } else {
  17811. setResult(result, path, current);
  17812. }
  17813. }
  17814. function setResult(result, k, v) {
  17815. // if (type(v) != FUNCTIONTYPE) {
  17816. result[k] = v;
  17817. // }
  17818. }
  17819. function type(obj) {
  17820. return Object.prototype.toString.call(obj)
  17821. }
  17822. /* */
  17823. function flushCallbacks$1(vm) {
  17824. if (vm.__next_tick_callbacks && vm.__next_tick_callbacks.length) {
  17825. if (Object({"VUE_APP_NAME":"CRMEB客户管理电商商城系统前端模板uni-app版","VUE_APP_PLATFORM":"mp-weixin","NODE_ENV":"development","BASE_URL":"/"}).VUE_APP_DEBUG) {
  17826. var mpInstance = vm.$scope;
  17827. console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + vm._uid +
  17828. ']:flushCallbacks[' + vm.__next_tick_callbacks.length + ']');
  17829. }
  17830. var copies = vm.__next_tick_callbacks.slice(0);
  17831. vm.__next_tick_callbacks.length = 0;
  17832. for (var i = 0; i < copies.length; i++) {
  17833. copies[i]();
  17834. }
  17835. }
  17836. }
  17837. function hasRenderWatcher(vm) {
  17838. return queue.find(function (watcher) { return vm._watcher === watcher; })
  17839. }
  17840. function nextTick$1(vm, cb) {
  17841. //1.nextTick 之前 已 setData 且 setData 还未回调完成
  17842. //2.nextTick 之前存在 render watcher
  17843. if (!vm.__next_tick_pending && !hasRenderWatcher(vm)) {
  17844. if(Object({"VUE_APP_NAME":"CRMEB客户管理电商商城系统前端模板uni-app版","VUE_APP_PLATFORM":"mp-weixin","NODE_ENV":"development","BASE_URL":"/"}).VUE_APP_DEBUG){
  17845. var mpInstance = vm.$scope;
  17846. console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + vm._uid +
  17847. ']:nextVueTick');
  17848. }
  17849. return nextTick(cb, vm)
  17850. }else{
  17851. if(Object({"VUE_APP_NAME":"CRMEB客户管理电商商城系统前端模板uni-app版","VUE_APP_PLATFORM":"mp-weixin","NODE_ENV":"development","BASE_URL":"/"}).VUE_APP_DEBUG){
  17852. var mpInstance$1 = vm.$scope;
  17853. console.log('[' + (+new Date) + '][' + (mpInstance$1.is || mpInstance$1.route) + '][' + vm._uid +
  17854. ']:nextMPTick');
  17855. }
  17856. }
  17857. var _resolve;
  17858. if (!vm.__next_tick_callbacks) {
  17859. vm.__next_tick_callbacks = [];
  17860. }
  17861. vm.__next_tick_callbacks.push(function () {
  17862. if (cb) {
  17863. try {
  17864. cb.call(vm);
  17865. } catch (e) {
  17866. handleError(e, vm, 'nextTick');
  17867. }
  17868. } else if (_resolve) {
  17869. _resolve(vm);
  17870. }
  17871. });
  17872. // $flow-disable-line
  17873. if (!cb && typeof Promise !== 'undefined') {
  17874. return new Promise(function (resolve) {
  17875. _resolve = resolve;
  17876. })
  17877. }
  17878. }
  17879. /* */
  17880. function cloneWithData(vm) {
  17881. // 确保当前 vm 所有数据被同步
  17882. var ret = Object.create(null);
  17883. var dataKeys = [].concat(
  17884. Object.keys(vm._data || {}),
  17885. Object.keys(vm._computedWatchers || {}));
  17886. dataKeys.reduce(function(ret, key) {
  17887. ret[key] = vm[key];
  17888. return ret
  17889. }, ret);
  17890. // vue-composition-api
  17891. var compositionApiState = vm.__composition_api_state__ || vm.__secret_vfa_state__;
  17892. var rawBindings = compositionApiState && compositionApiState.rawBindings;
  17893. if (rawBindings) {
  17894. Object.keys(rawBindings).forEach(function (key) {
  17895. ret[key] = vm[key];
  17896. });
  17897. }
  17898. //TODO 需要把无用数据处理掉,比如 list=>l0 则 list 需要移除,否则多传输一份数据
  17899. Object.assign(ret, vm.$mp.data || {});
  17900. if (
  17901. Array.isArray(vm.$options.behaviors) &&
  17902. vm.$options.behaviors.indexOf('uni://form-field') !== -1
  17903. ) { //form-field
  17904. ret['name'] = vm.name;
  17905. ret['value'] = vm.value;
  17906. }
  17907. return JSON.parse(JSON.stringify(ret))
  17908. }
  17909. var patch = function(oldVnode, vnode) {
  17910. var this$1 = this;
  17911. if (vnode === null) { //destroy
  17912. return
  17913. }
  17914. if (this.mpType === 'page' || this.mpType === 'component') {
  17915. var mpInstance = this.$scope;
  17916. var data = Object.create(null);
  17917. try {
  17918. data = cloneWithData(this);
  17919. } catch (err) {
  17920. console.error(err);
  17921. }
  17922. data.__webviewId__ = mpInstance.data.__webviewId__;
  17923. var mpData = Object.create(null);
  17924. Object.keys(data).forEach(function (key) { //仅同步 data 中有的数据
  17925. mpData[key] = mpInstance.data[key];
  17926. });
  17927. var diffData = this.$shouldDiffData === false ? data : diff(data, mpData);
  17928. if (Object.keys(diffData).length) {
  17929. if (Object({"VUE_APP_NAME":"CRMEB客户管理电商商城系统前端模板uni-app版","VUE_APP_PLATFORM":"mp-weixin","NODE_ENV":"development","BASE_URL":"/"}).VUE_APP_DEBUG) {
  17930. console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + this._uid +
  17931. ']差量更新',
  17932. JSON.stringify(diffData));
  17933. }
  17934. this.__next_tick_pending = true;
  17935. mpInstance.setData(diffData, function () {
  17936. this$1.__next_tick_pending = false;
  17937. flushCallbacks$1(this$1);
  17938. });
  17939. } else {
  17940. flushCallbacks$1(this);
  17941. }
  17942. }
  17943. };
  17944. /* */
  17945. function createEmptyRender() {
  17946. }
  17947. function mountComponent$1(
  17948. vm,
  17949. el,
  17950. hydrating
  17951. ) {
  17952. if (!vm.mpType) {//main.js 中的 new Vue
  17953. return vm
  17954. }
  17955. if (vm.mpType === 'app') {
  17956. vm.$options.render = createEmptyRender;
  17957. }
  17958. if (!vm.$options.render) {
  17959. vm.$options.render = createEmptyRender;
  17960. if (true) {
  17961. /* istanbul ignore if */
  17962. if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||
  17963. vm.$options.el || el) {
  17964. warn(
  17965. 'You are using the runtime-only build of Vue where the template ' +
  17966. 'compiler is not available. Either pre-compile the templates into ' +
  17967. 'render functions, or use the compiler-included build.',
  17968. vm
  17969. );
  17970. } else {
  17971. warn(
  17972. 'Failed to mount component: template or render function not defined.',
  17973. vm
  17974. );
  17975. }
  17976. }
  17977. }
  17978. !vm._$fallback && callHook(vm, 'beforeMount');
  17979. var updateComponent = function () {
  17980. vm._update(vm._render(), hydrating);
  17981. };
  17982. // we set this to vm._watcher inside the watcher's constructor
  17983. // since the watcher's initial patch may call $forceUpdate (e.g. inside child
  17984. // component's mounted hook), which relies on vm._watcher being already defined
  17985. new Watcher(vm, updateComponent, noop, {
  17986. before: function before() {
  17987. if (vm._isMounted && !vm._isDestroyed) {
  17988. callHook(vm, 'beforeUpdate');
  17989. }
  17990. }
  17991. }, true /* isRenderWatcher */);
  17992. hydrating = false;
  17993. return vm
  17994. }
  17995. /* */
  17996. function renderClass (
  17997. staticClass,
  17998. dynamicClass
  17999. ) {
  18000. if (isDef(staticClass) || isDef(dynamicClass)) {
  18001. return concat(staticClass, stringifyClass(dynamicClass))
  18002. }
  18003. /* istanbul ignore next */
  18004. return ''
  18005. }
  18006. function concat (a, b) {
  18007. return a ? b ? (a + ' ' + b) : a : (b || '')
  18008. }
  18009. function stringifyClass (value) {
  18010. if (Array.isArray(value)) {
  18011. return stringifyArray(value)
  18012. }
  18013. if (isObject(value)) {
  18014. return stringifyObject(value)
  18015. }
  18016. if (typeof value === 'string') {
  18017. return value
  18018. }
  18019. /* istanbul ignore next */
  18020. return ''
  18021. }
  18022. function stringifyArray (value) {
  18023. var res = '';
  18024. var stringified;
  18025. for (var i = 0, l = value.length; i < l; i++) {
  18026. if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {
  18027. if (res) { res += ' '; }
  18028. res += stringified;
  18029. }
  18030. }
  18031. return res
  18032. }
  18033. function stringifyObject (value) {
  18034. var res = '';
  18035. for (var key in value) {
  18036. if (value[key]) {
  18037. if (res) { res += ' '; }
  18038. res += key;
  18039. }
  18040. }
  18041. return res
  18042. }
  18043. /* */
  18044. var parseStyleText = cached(function (cssText) {
  18045. var res = {};
  18046. var listDelimiter = /;(?![^(]*\))/g;
  18047. var propertyDelimiter = /:(.+)/;
  18048. cssText.split(listDelimiter).forEach(function (item) {
  18049. if (item) {
  18050. var tmp = item.split(propertyDelimiter);
  18051. tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());
  18052. }
  18053. });
  18054. return res
  18055. });
  18056. // normalize possible array / string values into Object
  18057. function normalizeStyleBinding (bindingStyle) {
  18058. if (Array.isArray(bindingStyle)) {
  18059. return toObject(bindingStyle)
  18060. }
  18061. if (typeof bindingStyle === 'string') {
  18062. return parseStyleText(bindingStyle)
  18063. }
  18064. return bindingStyle
  18065. }
  18066. /* */
  18067. var MP_METHODS = ['createSelectorQuery', 'createIntersectionObserver', 'selectAllComponents', 'selectComponent'];
  18068. function getTarget(obj, path) {
  18069. var parts = path.split('.');
  18070. var key = parts[0];
  18071. if (key.indexOf('__$n') === 0) { //number index
  18072. key = parseInt(key.replace('__$n', ''));
  18073. }
  18074. if (parts.length === 1) {
  18075. return obj[key]
  18076. }
  18077. return getTarget(obj[key], parts.slice(1).join('.'))
  18078. }
  18079. function internalMixin(Vue) {
  18080. Vue.config.errorHandler = function(err, vm, info) {
  18081. Vue.util.warn(("Error in " + info + ": \"" + (err.toString()) + "\""), vm);
  18082. console.error(err);
  18083. /* eslint-disable no-undef */
  18084. var app = typeof getApp === 'function' && getApp();
  18085. if (app && app.onError) {
  18086. app.onError(err);
  18087. }
  18088. };
  18089. var oldEmit = Vue.prototype.$emit;
  18090. Vue.prototype.$emit = function(event) {
  18091. if (this.$scope && event) {
  18092. var triggerEvent = this.$scope['_triggerEvent'] || this.$scope['triggerEvent'];
  18093. if (triggerEvent) {
  18094. triggerEvent.call(this.$scope, event, {
  18095. __args__: toArray(arguments, 1)
  18096. });
  18097. }
  18098. }
  18099. return oldEmit.apply(this, arguments)
  18100. };
  18101. Vue.prototype.$nextTick = function(fn) {
  18102. return nextTick$1(this, fn)
  18103. };
  18104. MP_METHODS.forEach(function (method) {
  18105. Vue.prototype[method] = function(args) {
  18106. if (this.$scope && this.$scope[method]) {
  18107. return this.$scope[method](args)
  18108. }
  18109. // mp-alipay
  18110. if (typeof my === 'undefined') {
  18111. return
  18112. }
  18113. if (method === 'createSelectorQuery') {
  18114. /* eslint-disable no-undef */
  18115. return my.createSelectorQuery(args)
  18116. } else if (method === 'createIntersectionObserver') {
  18117. /* eslint-disable no-undef */
  18118. return my.createIntersectionObserver(args)
  18119. }
  18120. // TODO mp-alipay 暂不支持 selectAllComponents,selectComponent
  18121. };
  18122. });
  18123. Vue.prototype.__init_provide = initProvide;
  18124. Vue.prototype.__init_injections = initInjections;
  18125. Vue.prototype.__call_hook = function(hook, args) {
  18126. var vm = this;
  18127. // #7573 disable dep collection when invoking lifecycle hooks
  18128. pushTarget();
  18129. var handlers = vm.$options[hook];
  18130. var info = hook + " hook";
  18131. var ret;
  18132. if (handlers) {
  18133. for (var i = 0, j = handlers.length; i < j; i++) {
  18134. ret = invokeWithErrorHandling(handlers[i], vm, args ? [args] : null, vm, info);
  18135. }
  18136. }
  18137. if (vm._hasHookEvent) {
  18138. vm.$emit('hook:' + hook, args);
  18139. }
  18140. popTarget();
  18141. return ret
  18142. };
  18143. Vue.prototype.__set_model = function(target, key, value, modifiers) {
  18144. if (Array.isArray(modifiers)) {
  18145. if (modifiers.indexOf('trim') !== -1) {
  18146. value = value.trim();
  18147. }
  18148. if (modifiers.indexOf('number') !== -1) {
  18149. value = this._n(value);
  18150. }
  18151. }
  18152. if (!target) {
  18153. target = this;
  18154. }
  18155. // 解决动态属性添加
  18156. Vue.set(target, key, value);
  18157. };
  18158. Vue.prototype.__set_sync = function(target, key, value) {
  18159. if (!target) {
  18160. target = this;
  18161. }
  18162. // 解决动态属性添加
  18163. Vue.set(target, key, value);
  18164. };
  18165. Vue.prototype.__get_orig = function(item) {
  18166. if (isPlainObject(item)) {
  18167. return item['$orig'] || item
  18168. }
  18169. return item
  18170. };
  18171. Vue.prototype.__get_value = function(dataPath, target) {
  18172. return getTarget(target || this, dataPath)
  18173. };
  18174. Vue.prototype.__get_class = function(dynamicClass, staticClass) {
  18175. return renderClass(staticClass, dynamicClass)
  18176. };
  18177. Vue.prototype.__get_style = function(dynamicStyle, staticStyle) {
  18178. if (!dynamicStyle && !staticStyle) {
  18179. return ''
  18180. }
  18181. var dynamicStyleObj = normalizeStyleBinding(dynamicStyle);
  18182. var styleObj = staticStyle ? extend(staticStyle, dynamicStyleObj) : dynamicStyleObj;
  18183. return Object.keys(styleObj).map(function (name) { return ((hyphenate(name)) + ":" + (styleObj[name])); }).join(';')
  18184. };
  18185. Vue.prototype.__map = function(val, iteratee) {
  18186. //TODO 暂不考虑 string
  18187. var ret, i, l, keys, key;
  18188. if (Array.isArray(val)) {
  18189. ret = new Array(val.length);
  18190. for (i = 0, l = val.length; i < l; i++) {
  18191. ret[i] = iteratee(val[i], i);
  18192. }
  18193. return ret
  18194. } else if (isObject(val)) {
  18195. keys = Object.keys(val);
  18196. ret = Object.create(null);
  18197. for (i = 0, l = keys.length; i < l; i++) {
  18198. key = keys[i];
  18199. ret[key] = iteratee(val[key], key, i);
  18200. }
  18201. return ret
  18202. } else if (typeof val === 'number') {
  18203. ret = new Array(val);
  18204. for (i = 0, l = val; i < l; i++) {
  18205. // 第一个参数暂时仍和小程序一致
  18206. ret[i] = iteratee(i, i);
  18207. }
  18208. return ret
  18209. }
  18210. return []
  18211. };
  18212. }
  18213. /* */
  18214. var LIFECYCLE_HOOKS$1 = [
  18215. //App
  18216. 'onLaunch',
  18217. 'onShow',
  18218. 'onHide',
  18219. 'onUniNViewMessage',
  18220. 'onPageNotFound',
  18221. 'onThemeChange',
  18222. 'onError',
  18223. 'onUnhandledRejection',
  18224. //Page
  18225. 'onInit',
  18226. 'onLoad',
  18227. // 'onShow',
  18228. 'onReady',
  18229. // 'onHide',
  18230. 'onUnload',
  18231. 'onPullDownRefresh',
  18232. 'onReachBottom',
  18233. 'onTabItemTap',
  18234. 'onAddToFavorites',
  18235. 'onShareTimeline',
  18236. 'onShareAppMessage',
  18237. 'onResize',
  18238. 'onPageScroll',
  18239. 'onNavigationBarButtonTap',
  18240. 'onBackPress',
  18241. 'onNavigationBarSearchInputChanged',
  18242. 'onNavigationBarSearchInputConfirmed',
  18243. 'onNavigationBarSearchInputClicked',
  18244. //Component
  18245. // 'onReady', // 兼容旧版本,应该移除该事件
  18246. 'onPageShow',
  18247. 'onPageHide',
  18248. 'onPageResize',
  18249. 'onUploadDouyinVideo'
  18250. ];
  18251. function lifecycleMixin$1(Vue) {
  18252. //fixed vue-class-component
  18253. var oldExtend = Vue.extend;
  18254. Vue.extend = function(extendOptions) {
  18255. extendOptions = extendOptions || {};
  18256. var methods = extendOptions.methods;
  18257. if (methods) {
  18258. Object.keys(methods).forEach(function (methodName) {
  18259. if (LIFECYCLE_HOOKS$1.indexOf(methodName)!==-1) {
  18260. extendOptions[methodName] = methods[methodName];
  18261. delete methods[methodName];
  18262. }
  18263. });
  18264. }
  18265. return oldExtend.call(this, extendOptions)
  18266. };
  18267. var strategies = Vue.config.optionMergeStrategies;
  18268. var mergeHook = strategies.created;
  18269. LIFECYCLE_HOOKS$1.forEach(function (hook) {
  18270. strategies[hook] = mergeHook;
  18271. });
  18272. Vue.prototype.__lifecycle_hooks__ = LIFECYCLE_HOOKS$1;
  18273. }
  18274. /* */
  18275. // install platform patch function
  18276. Vue.prototype.__patch__ = patch;
  18277. // public mount method
  18278. Vue.prototype.$mount = function(
  18279. el ,
  18280. hydrating
  18281. ) {
  18282. return mountComponent$1(this, el, hydrating)
  18283. };
  18284. lifecycleMixin$1(Vue);
  18285. internalMixin(Vue);
  18286. /* */
  18287. /* harmony default export */ __webpack_exports__["default"] = (Vue);
  18288. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../webpack/buildin/global.js */ 2)))
  18289. /***/ }),
  18290. /***/ 40:
  18291. /*!*****************************************************!*\
  18292. !*** D:/data/zhonghong/saber-weixin/libs/wechat.js ***!
  18293. \*****************************************************/
  18294. /*! no static exports found */
  18295. /***/ (function(module, exports) {
  18296. // +----------------------------------------------------------------------
  18297. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  18298. // +----------------------------------------------------------------------
  18299. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  18300. // +----------------------------------------------------------------------
  18301. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  18302. // +----------------------------------------------------------------------
  18303. // | Author: CRMEB Team <admin@crmeb.com>
  18304. // +----------------------------------------------------------------------
  18305. /***/ }),
  18306. /***/ 41:
  18307. /*!*****************************************************!*\
  18308. !*** D:/data/zhonghong/saber-weixin/utils/index.js ***!
  18309. \*****************************************************/
  18310. /*! no static exports found */
  18311. /***/ (function(module, exports, __webpack_require__) {
  18312. "use strict";
  18313. /* WEBPACK VAR INJECTION */(function(uni) {Object.defineProperty(exports, "__esModule", { value: true });exports.silenceBindingSpread = silenceBindingSpread;exports.isWeixin = isWeixin;exports.getCustomer = getCustomer;exports.parseQuery = parseQuery;exports.updateURLParameter = updateURLParameter;exports.default = exports.VUE_APP_WS_URL = void 0;
  18314. var _user = __webpack_require__(/*! @/api/user */ 17);
  18315. var _cache = _interopRequireDefault(__webpack_require__(/*! @/utils/cache */ 33));
  18316. var _api = __webpack_require__(/*! @/api/api.js */ 42);
  18317. var _kefu = __webpack_require__(/*! @/api/kefu.js */ 43);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} // +----------------------------------------------------------------------
  18318. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  18319. // +----------------------------------------------------------------------
  18320. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  18321. // +----------------------------------------------------------------------
  18322. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  18323. // +----------------------------------------------------------------------
  18324. // | Author: CRMEB Team <admin@crmeb.com>
  18325. // +----------------------------------------------------------------------
  18326. /**
  18327. * 绑定用户授权
  18328. * @param {Object} puid
  18329. */function silenceBindingSpread() {
  18330. var puid = getApp().globalData.spid,
  18331. code = getApp().globalData.code;
  18332. puid = parseInt(puid);
  18333. if (Number.isNaN(puid)) {
  18334. puid = 0;
  18335. }
  18336. if (puid) {
  18337. (0, _user.spread)({
  18338. puid: puid,
  18339. code: code }).
  18340. then(function (res) {
  18341. getApp().globalData.spid = 0;
  18342. getApp().globalData.code = 0;
  18343. }).catch(function (res) {});
  18344. }
  18345. }
  18346. function isWeixin() {
  18347. return navigator.userAgent.toLowerCase().indexOf("micromessenger") !== -1;
  18348. }
  18349. function getCustomer(url) {
  18350. (0, _api.getCustomerType)().then(function (res) {
  18351. var type = res.data.customer_type;
  18352. if (type == '0') {
  18353. uni.navigateTo({
  18354. url: url || '/pages/extension/customer_list/chat' });
  18355. } else if (type == '1') {
  18356. uni.makePhoneCall({
  18357. phoneNumber: res.data.customer_phone //客服电话
  18358. });
  18359. } else {
  18360. if (res.data.customer_url.indexOf('work.weixin.qq.com') > 0) {
  18361. uni.openCustomerServiceChat({
  18362. extInfo: {
  18363. url: res.data.customer_url },
  18364. corpId: res.data.customer_corpId,
  18365. success: function success(res) {},
  18366. fail: function fail(err) {
  18367. uni.showToast({
  18368. title: err.errMsg,
  18369. icon: 'none',
  18370. duration: 2000 });
  18371. } });
  18372. } else {
  18373. uni.navigateTo({
  18374. url: "/pages/annex/web_view/index?url=".concat(res.data.customer_url) });
  18375. }
  18376. }
  18377. });
  18378. }
  18379. function parseQuery() {
  18380. var res = {};
  18381. var query = (location.href.split("?")[1] || "").
  18382. trim().
  18383. replace(/^(\?|#|&)/, "");
  18384. if (!query) {
  18385. return res;
  18386. }
  18387. query.split("&").forEach(function (param) {
  18388. var parts = param.replace(/\+/g, " ").split("=");
  18389. var key = decodeURIComponent(parts.shift());
  18390. var val = parts.length > 0 ? decodeURIComponent(parts.join("=")) : null;
  18391. if (res[key] === undefined) {
  18392. res[key] = val;
  18393. } else if (Array.isArray(res[key])) {
  18394. res[key].push(val);
  18395. } else {
  18396. res[key] = [res[key], val];
  18397. }
  18398. });
  18399. return res;
  18400. }
  18401. function updateURLParameter(url, param, paramVal) {
  18402. var newAdditionalURL = "";
  18403. var tempArray = url.split("?");
  18404. var baseURL = tempArray[0];
  18405. var additionalURL = tempArray[1];
  18406. var temp = "";
  18407. if (additionalURL) {
  18408. tempArray = additionalURL.split("&");
  18409. for (var i = 0; i < tempArray.length; i++) {
  18410. if (tempArray[i].split('=')[0] != param) {
  18411. newAdditionalURL += temp + tempArray[i];
  18412. temp = "&";
  18413. }
  18414. }
  18415. }
  18416. var rows_txt = temp + "" + param + "=" + paramVal;
  18417. return baseURL + "?" + newAdditionalURL + rows_txt;
  18418. }
  18419. var VUE_APP_WS_URL = _cache.default.get('WORKERMAN_URL') || '';exports.VUE_APP_WS_URL = VUE_APP_WS_URL;
  18420. (0, _kefu.getWorkermanUrl)().then(function (res) {
  18421. _cache.default.set('WORKERMAN_URL', res.data.chat);
  18422. exports.VUE_APP_WS_URL = VUE_APP_WS_URL = res.data.chat;
  18423. });var _default =
  18424. parseQuery;exports.default = _default;
  18425. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["default"]))
  18426. /***/ }),
  18427. /***/ 42:
  18428. /*!*************************************************!*\
  18429. !*** D:/data/zhonghong/saber-weixin/api/api.js ***!
  18430. \*************************************************/
  18431. /*! no static exports found */
  18432. /***/ (function(module, exports, __webpack_require__) {
  18433. "use strict";
  18434. Object.defineProperty(exports, "__esModule", { value: true });exports.getIndexData = getIndexData;exports.getServerType = getServerType;exports.getLogo = getLogo;exports.setFormId = setFormId;exports.setCouponReceive = setCouponReceive;exports.getCoupons = getCoupons;exports.getCouponsIndex = getCouponsIndex;exports.getUserCoupons = getUserCoupons;exports.getNewCoupon = getNewCoupon;exports.getArticleCategoryList = getArticleCategoryList;exports.getArticleList = getArticleList;exports.getArticleHotList = getArticleHotList;exports.getArticleBannerList = getArticleBannerList;exports.getArticleDetails = getArticleDetails;exports.loginMobile = loginMobile;exports.verifyCode = verifyCode;exports.registerVerify = registerVerify;exports.phoneRegister = phoneRegister;exports.phoneRegisterReset = phoneRegisterReset;exports.phoneLogin = phoneLogin;exports.switchH5Login = switchH5Login;exports.bindingPhone = bindingPhone;exports.bindingUserPhone = bindingUserPhone;exports.logout = logout;exports.getTempIds = getTempIds;exports.pink = pink;exports.getCity = getCity;exports.getLiveList = getLiveList;exports.getDiy = getDiy;exports.colorChange = colorChange;exports.follow = follow;exports.updatePhone = updatePhone;exports.getCouponV2 = getCouponV2;exports.getCouponNewUser = getCouponNewUser;exports.category = category;exports.searchList = searchList;exports.clearSearch = clearSearch;exports.siteConfig = siteConfig;exports.wechatAppAuth = wechatAppAuth;exports.getCustomerType = getCustomerType;exports.getOpenAdv = getOpenAdv;exports.getCrmebCopyRight = getCrmebCopyRight;
  18435. var _request = _interopRequireDefault(__webpack_require__(/*! @/utils/request.js */ 18));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} // +----------------------------------------------------------------------
  18436. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  18437. // +----------------------------------------------------------------------
  18438. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  18439. // +----------------------------------------------------------------------
  18440. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  18441. // +----------------------------------------------------------------------
  18442. // | Author: CRMEB Team <admin@crmeb.com>
  18443. // +----------------------------------------------------------------------
  18444. /**
  18445. * 公共接口 ,优惠券接口 , 行业此讯 , 手机号码注册
  18446. *
  18447. */ /**
  18448. * 获取主页数据 无需授权
  18449. *
  18450. */function getIndexData() {return _request.default.get("v2/index", {}, { noAuth: true });} /**
  18451. * 获取服务器类型
  18452. *
  18453. */
  18454. function getServerType() {
  18455. return _request.default.get("v2/site_serve", {}, {
  18456. noAuth: true });
  18457. }
  18458. /**
  18459. * 获取登录授权login
  18460. *
  18461. */
  18462. function getLogo() {
  18463. return _request.default.get('wechat/get_logo', {}, {
  18464. noAuth: true });
  18465. }
  18466. /**
  18467. * 保存form_id
  18468. * @param string formId
  18469. */
  18470. function setFormId(formId) {
  18471. return _request.default.post("wechat/set_form_id", {
  18472. formId: formId });
  18473. }
  18474. /**
  18475. * 领取优惠卷
  18476. * @param int couponId
  18477. *
  18478. */
  18479. function setCouponReceive(couponId) {
  18480. return _request.default.post('coupon/receive', {
  18481. couponId: couponId });
  18482. }
  18483. /**
  18484. * 优惠券列表
  18485. * @param object data
  18486. */
  18487. function getCoupons(data) {
  18488. return _request.default.get('v2/coupons', data, {
  18489. noAuth: true });
  18490. }
  18491. /**
  18492. * 首页优惠券列表组件数据
  18493. * @param object data
  18494. */
  18495. function getCouponsIndex(data) {
  18496. return _request.default.get('coupons', data, {
  18497. noAuth: true });
  18498. }
  18499. /**
  18500. * 我的优惠券
  18501. * @param int types 0全部 1未使用 2已使用
  18502. */
  18503. function getUserCoupons(types, data) {
  18504. return _request.default.get('coupons/user/' + types, data);
  18505. }
  18506. /**
  18507. * 首页新人优惠券
  18508. *
  18509. */
  18510. function getNewCoupon() {
  18511. return _request.default.get('v2/new_coupon');
  18512. }
  18513. /**
  18514. * 文章分类列表
  18515. *
  18516. */
  18517. function getArticleCategoryList() {
  18518. return _request.default.get('article/category/list', {}, {
  18519. noAuth: true });
  18520. }
  18521. /**
  18522. * 文章列表
  18523. * @param int cid
  18524. *
  18525. */
  18526. function getArticleList(cid, data) {
  18527. return _request.default.get('article/list/' + cid, data, {
  18528. noAuth: true });
  18529. }
  18530. /**
  18531. * 文章 热门列表
  18532. *
  18533. */
  18534. function getArticleHotList() {
  18535. return _request.default.get('article/hot/list', {}, {
  18536. noAuth: true });
  18537. }
  18538. /**
  18539. * 文章 轮播列表
  18540. *
  18541. */
  18542. function getArticleBannerList() {
  18543. return _request.default.get('article/banner/list', {}, {
  18544. noAuth: true });
  18545. }
  18546. /**
  18547. * 文章详情
  18548. * @param int id
  18549. *
  18550. */
  18551. function getArticleDetails(id) {
  18552. return _request.default.get('article/details/' + id, {}, {
  18553. noAuth: true });
  18554. }
  18555. /**
  18556. * 手机号+验证码登录接口
  18557. * @param object data
  18558. */
  18559. function loginMobile(data) {
  18560. return _request.default.post('login/mobile', data, {
  18561. noAuth: true });
  18562. }
  18563. /**
  18564. * 获取短信KEY
  18565. * @param object phone
  18566. */
  18567. function verifyCode() {
  18568. return _request.default.get('verify_code', {}, {
  18569. noAuth: true });
  18570. }
  18571. /**
  18572. * 验证码发送
  18573. * @param object phone
  18574. */
  18575. function registerVerify(phone, reset, key, code) {
  18576. return _request.default.post('register/verify', {
  18577. phone: phone,
  18578. type: reset === undefined ? 'reset' : reset,
  18579. key: key,
  18580. code: code },
  18581. {
  18582. noAuth: true });
  18583. }
  18584. /**
  18585. * 手机号注册
  18586. * @param object data
  18587. *
  18588. */
  18589. function phoneRegister(data) {
  18590. return _request.default.post('register', data, {
  18591. noAuth: true });
  18592. }
  18593. /**
  18594. * 手机号修改密码
  18595. * @param object data
  18596. *
  18597. */
  18598. function phoneRegisterReset(data) {
  18599. return _request.default.post('register/reset', data, {
  18600. noAuth: true });
  18601. }
  18602. /**
  18603. * 手机号+密码登录
  18604. * @param object data
  18605. *
  18606. */
  18607. function phoneLogin(data) {
  18608. return _request.default.post('login', data, {
  18609. noAuth: true });
  18610. }
  18611. /**
  18612. * 切换H5登录
  18613. * @param object data
  18614. */
  18615. function switchH5Login() {
  18616. return _request.default.post('switch_h5', {
  18617. 'from': 'routine' });
  18618. }
  18619. /*
  18620. * h5切换公众号登陆
  18621. * */
  18622. /**
  18623. * 绑定手机号
  18624. *
  18625. */
  18626. function bindingPhone(data) {
  18627. return _request.default.post('binding', data, {
  18628. noAuth: true });
  18629. }
  18630. /**
  18631. * 绑定手机号
  18632. *
  18633. */
  18634. function bindingUserPhone(data) {
  18635. return _request.default.post('user/binding', data);
  18636. }
  18637. /**
  18638. * 退出登錄
  18639. *
  18640. */
  18641. function logout() {
  18642. return _request.default.get('logout');
  18643. }
  18644. /**
  18645. * 获取订阅消息id
  18646. */
  18647. function getTempIds() {
  18648. return _request.default.get('wechat/temp_ids', {}, {
  18649. noAuth: true });
  18650. }
  18651. /**
  18652. * 首页拼团数据
  18653. */
  18654. function pink() {
  18655. return _request.default.get('pink', {}, {
  18656. noAuth: true });
  18657. }
  18658. /**
  18659. * 获取城市信息
  18660. */
  18661. function getCity() {
  18662. return _request.default.get('city_list', {}, {
  18663. noAuth: true });
  18664. }
  18665. /**
  18666. * 获取列表
  18667. */
  18668. function getLiveList(page, limit) {
  18669. return _request.default.get('wechat/live', {
  18670. page: page,
  18671. limit: limit },
  18672. {
  18673. noAuth: true });
  18674. }
  18675. /**
  18676. * 获取首页DIY;
  18677. */
  18678. function getDiy(id) {
  18679. return _request.default.get("v2/diy/get_diy/default".concat(id ? '?id=' + id : ''), {}, {
  18680. noAuth: true });
  18681. }
  18682. /**
  18683. * 一键换色;
  18684. */
  18685. function colorChange(name) {
  18686. return _request.default.get('v2/diy/color_change/' + name, {}, {
  18687. noAuth: true });
  18688. }
  18689. /**
  18690. * 获取公众号关注
  18691. * @returns {*}
  18692. */
  18693. function follow() {
  18694. return _request.default.get("wechat/follow", {}, {
  18695. noAuth: true });
  18696. }
  18697. /**
  18698. * 更换手机号码
  18699. * @returns {*}
  18700. */
  18701. function updatePhone(data) {
  18702. return _request.default.post("user/updatePhone", data, {
  18703. noAuth: true });
  18704. }
  18705. /**
  18706. * 首页优惠券弹窗
  18707. * @returns {*}
  18708. */
  18709. function getCouponV2() {
  18710. return _request.default.get("v2/get_today_coupon", {}, {
  18711. noAuth: true });
  18712. }
  18713. /**
  18714. * 新用户优惠券弹窗
  18715. * @returns {*}
  18716. */
  18717. function getCouponNewUser() {
  18718. return _request.default.get("v2/new_coupon", {}, {
  18719. noAuth: true });
  18720. }
  18721. /**
  18722. * 首页快速选择数据
  18723. * @param {Object} data
  18724. */
  18725. function category(data) {
  18726. return _request.default.get("category", data, {
  18727. noAuth: true });
  18728. }
  18729. /**
  18730. * 个人搜索历史
  18731. * @param {Object} data
  18732. */
  18733. function searchList(data) {
  18734. return _request.default.get('v2/user/search_list', data, {
  18735. noAuth: true });
  18736. }
  18737. /**
  18738. * 删除搜索历史
  18739. */
  18740. function clearSearch() {
  18741. return _request.default.get('v2/user/clean_search');
  18742. }
  18743. /**
  18744. * 获取网站基础配置
  18745. */
  18746. function siteConfig(data) {
  18747. return _request.default.get('site_config', data, {
  18748. noAuth: true });
  18749. }
  18750. /**
  18751. * App微信登录
  18752. * @returns {*}
  18753. */
  18754. function wechatAppAuth(data) {
  18755. return _request.default.post("wechat/app_auth", data, {
  18756. noAuth: true });
  18757. }
  18758. /**
  18759. * 获取客服类型
  18760. * @returns {*}
  18761. */
  18762. function getCustomerType(data) {
  18763. return _request.default.get("get_customer_type", {}, {
  18764. noAuth: true });
  18765. }
  18766. /**
  18767. * 获取开屏广告
  18768. * @returns {*}
  18769. */
  18770. function getOpenAdv(data) {
  18771. return _request.default.get("get_open_adv", {}, {
  18772. noAuth: true });
  18773. }
  18774. /**
  18775. * 获取版权信息
  18776. */
  18777. function getCrmebCopyRight() {
  18778. return _request.default.get('copyright', {}, {
  18779. noAuth: true });
  18780. }
  18781. /***/ }),
  18782. /***/ 43:
  18783. /*!**************************************************!*\
  18784. !*** D:/data/zhonghong/saber-weixin/api/kefu.js ***!
  18785. \**************************************************/
  18786. /*! no static exports found */
  18787. /***/ (function(module, exports, __webpack_require__) {
  18788. "use strict";
  18789. Object.defineProperty(exports, "__esModule", { value: true });exports.kefuLogin = kefuLogin;exports.record = record;exports.speeChcraft = speeChcraft;exports.transferList = transferList;exports.productCart = productCart;exports.productHot = productHot;exports.productVisit = productVisit;exports.serviceList = serviceList;exports.serviceTransfer = serviceTransfer;exports.serviceInfo = serviceInfo;exports.serviceFeedBack = serviceFeedBack;exports.feedBackPost = feedBackPost;exports.codeStauts = codeStauts;exports.getWorkermanUrl = getWorkermanUrl;exports.kefuScanLogin = kefuScanLogin;
  18790. var _request = _interopRequireDefault(__webpack_require__(/*! @/utils/request.js */ 18));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} // +----------------------------------------------------------------------
  18791. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  18792. // +----------------------------------------------------------------------
  18793. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  18794. // +----------------------------------------------------------------------
  18795. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  18796. // +----------------------------------------------------------------------
  18797. // | Author: CRMEB Team <admin@crmeb.com>
  18798. // +----------------------------------------------------------------------
  18799. /**
  18800. * 客服登录
  18801. * @param data object 用户账号密码
  18802. */function kefuLogin(data) {return _request.default.post("login", data, { noAuth: true, kefu: true });}
  18803. /**
  18804. * 获取左侧客服聊天用户列表
  18805. * @constructor
  18806. */
  18807. function record(data) {
  18808. return _request.default.get("user/record", data, {
  18809. noAuth: true,
  18810. kefu: true });
  18811. }
  18812. /**
  18813. * 客服话术
  18814. * @constructor
  18815. */
  18816. function speeChcraft(data) {
  18817. return _request.default.get("service/speechcraft", data, {
  18818. noAuth: true,
  18819. kefu: true });
  18820. }
  18821. /**
  18822. * 客服转接列表
  18823. * @constructor
  18824. */
  18825. function transferList(data) {
  18826. return _request.default.get("service/transfer_list", data, {
  18827. noAuth: true,
  18828. kefu: true });
  18829. }
  18830. /**
  18831. * 商品购买记录
  18832. * @constructor
  18833. */
  18834. function productCart(id, data) {
  18835. return _request.default.get("product/cart/" + id, data, {
  18836. noAuth: true,
  18837. kefu: true });
  18838. }
  18839. /**
  18840. * 热销商品
  18841. * @constructor
  18842. */
  18843. function productHot(id, data) {
  18844. return _request.default.get("product/hot/" + id, data, {
  18845. noAuth: true,
  18846. kefu: true });
  18847. }
  18848. /**
  18849. * 商品足记
  18850. * @constructor
  18851. */
  18852. function productVisit(id, data) {
  18853. return _request.default.get("product/visit/" + id, data, {
  18854. noAuth: true,
  18855. kefu: true });
  18856. }
  18857. /**
  18858. * 客服用户聊天列表
  18859. * @constructor
  18860. */
  18861. function serviceList(data) {
  18862. return _request.default.get("service/list", data, {
  18863. noAuth: true,
  18864. kefu: true });
  18865. }
  18866. /**
  18867. * 客服转接
  18868. * @constructor
  18869. */
  18870. function serviceTransfer(data) {
  18871. return _request.default.post("service/transfer", data, {
  18872. noAuth: true,
  18873. kefu: true });
  18874. }
  18875. /**
  18876. * 客服详细信息
  18877. * @constructor
  18878. */
  18879. function serviceInfo(data) {
  18880. return _request.default.get("service/info", data, {
  18881. noAuth: true,
  18882. kefu: true });
  18883. }
  18884. /**
  18885. * 客服反馈头部信息
  18886. * @constructor
  18887. */
  18888. function serviceFeedBack() {
  18889. return _request.default.get("user/service/feedback");
  18890. }
  18891. /**
  18892. * 客服反馈
  18893. * @constructor
  18894. */
  18895. function feedBackPost(data) {
  18896. return _request.default.post("user/service/feedback", data);
  18897. }
  18898. /**
  18899. * 检测登录code
  18900. * @constructor
  18901. */
  18902. function codeStauts(data) {
  18903. return _request.default.get("user/code", data);
  18904. }
  18905. /**
  18906. * 获取客服端口
  18907. * @constructor
  18908. */
  18909. function getWorkermanUrl(data) {
  18910. return _request.default.get('get_workerman_url', {}, {
  18911. noAuth: true });
  18912. }
  18913. /**
  18914. * 客服扫码登录code
  18915. * @constructor
  18916. */
  18917. function kefuScanLogin(data) {
  18918. return _request.default.post("user/code", data);
  18919. }
  18920. /***/ }),
  18921. /***/ 44:
  18922. /*!***************************************************!*\
  18923. !*** D:/data/zhonghong/saber-weixin/api/order.js ***!
  18924. \***************************************************/
  18925. /*! no static exports found */
  18926. /***/ (function(module, exports, __webpack_require__) {
  18927. "use strict";
  18928. Object.defineProperty(exports, "__esModule", { value: true });exports.getCartCounts = getCartCounts;exports.getCartList = getCartList;exports.getResetCart = getResetCart;exports.changeCartNum = changeCartNum;exports.cartDel = cartDel;exports.getOrderList = getOrderList;exports.orderProduct = orderProduct;exports.orderComment = orderComment;exports.orderPay = orderPay;exports.refundOrderDel = refundOrderDel;exports.orderData = orderData;exports.orderCancel = orderCancel;exports.orderDel = orderDel;exports.getOrderDetail = getOrderDetail;exports.getRefundOrderDetail = getRefundOrderDetail;exports.orderAgain = orderAgain;exports.orderTake = orderTake;exports.express = express;exports.ordeRefundReason = ordeRefundReason;exports.orderRefundVerify = orderRefundVerify;exports.orderConfirm = orderConfirm;exports.checkShipping = checkShipping;exports.getCouponsOrderPrice = getCouponsOrderPrice;exports.orderCreate = orderCreate;exports.postOrderComputed = postOrderComputed;exports.orderCoupon = orderCoupon;exports.offlineCheckPrice = offlineCheckPrice;exports.offlineCreate = offlineCreate;exports.orderOfflinePayType = orderOfflinePayType;exports.orderInvoiceList = orderInvoiceList;exports.orderInvoiceDetail = orderInvoiceDetail;exports.aliPay = aliPay;exports.refundExpress = refundExpress;exports.vcartList = vcartList;exports.refundGoodsList = refundGoodsList;exports.postRefundGoods = postRefundGoods;exports.returnGoodsSubmit = returnGoodsSubmit;exports.getNewOrderList = getNewOrderList;exports.refundOrderDetail = refundOrderDetail;exports.cancelRefundOrder = cancelRefundOrder;
  18929. var _request = _interopRequireDefault(__webpack_require__(/*! @/utils/request.js */ 18));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} // +----------------------------------------------------------------------
  18930. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  18931. // +----------------------------------------------------------------------
  18932. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  18933. // +----------------------------------------------------------------------
  18934. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  18935. // +----------------------------------------------------------------------
  18936. // | Author: CRMEB Team <admin@crmeb.com>
  18937. // +----------------------------------------------------------------------
  18938. /**
  18939. * 获取购物车列表
  18940. * @param numType boolean true 购物车数量,false=购物车产品数量
  18941. */function getCartCounts(numType) {return _request.default.get("cart/count", { numType: numType === undefined ? 0 : numType });} /**
  18942. * 获取购物车列表
  18943. *
  18944. */function getCartList(data) {
  18945. return _request.default.get("cart/list", data);
  18946. }
  18947. /**
  18948. * 修改购物车
  18949. *
  18950. */
  18951. function getResetCart(data) {
  18952. return _request.default.post("v2/reset_cart", data);
  18953. }
  18954. /**
  18955. * 修改购物车数量
  18956. * @param int cartId 购物车id
  18957. * @param int number 修改数量
  18958. */
  18959. function changeCartNum(cartId, number) {
  18960. return _request.default.post("cart/num", {
  18961. id: cartId,
  18962. number: number });
  18963. }
  18964. /**
  18965. * 清除购物车
  18966. * @param object ids join(',') 切割成字符串
  18967. */
  18968. function cartDel(ids) {
  18969. if (typeof ids === 'object')
  18970. ids = ids.join(',');
  18971. return _request.default.post('cart/del', {
  18972. ids: ids });
  18973. }
  18974. /**
  18975. * 订单列表
  18976. * @param object data
  18977. */
  18978. function getOrderList(data) {
  18979. return _request.default.get('order/list', data);
  18980. }
  18981. /**
  18982. * 订单产品信息
  18983. * @param string unique
  18984. */
  18985. function orderProduct(unique) {
  18986. return _request.default.post('order/product', {
  18987. unique: unique });
  18988. }
  18989. /**
  18990. * 订单评价
  18991. * @param object data
  18992. *
  18993. */
  18994. function orderComment(data) {
  18995. return _request.default.post('order/comment', data);
  18996. }
  18997. /**
  18998. * 订单支付
  18999. * @param object data
  19000. */
  19001. function orderPay(data) {
  19002. return _request.default.post('order/pay', data);
  19003. }
  19004. /**
  19005. * 删除已退款和拒绝退款的订单
  19006. * @param string uni
  19007. *
  19008. */
  19009. function refundOrderDel(uni) {
  19010. return _request.default.get('order/refund/del/' + uni, {});
  19011. }
  19012. /**
  19013. * 订单统计数据
  19014. */
  19015. function orderData() {
  19016. return _request.default.get('order/data');
  19017. }
  19018. /**
  19019. * 订单取消
  19020. * @param string id
  19021. *
  19022. */
  19023. function orderCancel(id) {
  19024. return _request.default.post('order/cancel', {
  19025. id: id });
  19026. }
  19027. /**
  19028. * 删除已完成订单
  19029. * @param string uni
  19030. *
  19031. */
  19032. function orderDel(uni) {
  19033. return _request.default.post('order/del', {
  19034. uni: uni });
  19035. }
  19036. /**
  19037. * 订单详情
  19038. * @param string uni
  19039. */
  19040. function getOrderDetail(uni, cart_id) {
  19041. return _request.default.get('order/detail/' + uni + "".concat(cart_id ? "/".concat(cart_id) : ''));
  19042. }
  19043. /**
  19044. * 退款订单详情
  19045. * @param string uni
  19046. */
  19047. function getRefundOrderDetail(uni, cart_id) {
  19048. return _request.default.get('order/refund_detail/' + uni + "".concat(cart_id ? "/".concat(cart_id) : ''));
  19049. }
  19050. /**
  19051. * 再次下单
  19052. * @param string uni
  19053. *
  19054. */
  19055. function orderAgain(uni) {
  19056. return _request.default.post('order/again', {
  19057. uni: uni });
  19058. }
  19059. /**
  19060. * 订单收货
  19061. * @param string uni
  19062. *
  19063. */
  19064. function orderTake(uni) {
  19065. return _request.default.post('order/take', {
  19066. uni: uni });
  19067. }
  19068. /**
  19069. * 订单查询物流信息
  19070. * @returns {*}
  19071. */
  19072. function express(uni, type) {
  19073. return _request.default.get("order/express/" + uni + "".concat(type ? '/refund' : ''));
  19074. }
  19075. /**
  19076. * 获取退款理由
  19077. *
  19078. */
  19079. function ordeRefundReason() {
  19080. return _request.default.get('order/refund/reason');
  19081. }
  19082. /**
  19083. * 订单退款审核
  19084. * @param object data
  19085. */
  19086. function orderRefundVerify(data) {
  19087. return _request.default.post('order/refund/verify', data);
  19088. }
  19089. /**
  19090. * 订单确认获取订单详细信息
  19091. * @param string cartId
  19092. */
  19093. function orderConfirm(cartId, news, addressId, shipping_type) {
  19094. return _request.default.post('order/confirm', {
  19095. cartId: cartId,
  19096. 'new': news,
  19097. addressId: addressId,
  19098. shipping_type: shipping_type });
  19099. }
  19100. /**
  19101. * 获取确认订单页面是否展示快递配送和到店自提
  19102. * @param string cartId
  19103. */
  19104. function checkShipping(cartId, news) {
  19105. return _request.default.post('order/check_shipping', {
  19106. cartId: cartId,
  19107. 'new': news });
  19108. }
  19109. /**
  19110. * 获取当前金额能使用的优惠卷
  19111. * @param string price
  19112. *
  19113. */
  19114. function getCouponsOrderPrice(price, data) {
  19115. return _request.default.get('coupons/order/' + price, data);
  19116. }
  19117. /**
  19118. * 订单创建
  19119. * @param string key
  19120. * @param object data
  19121. *
  19122. */
  19123. function orderCreate(key, data) {
  19124. return _request.default.post('order/create/' + key, data);
  19125. }
  19126. /**
  19127. * 计算订单金额
  19128. * @param key
  19129. * @param data
  19130. * @returns {*}
  19131. */
  19132. function postOrderComputed(key, data) {
  19133. return _request.default.post("order/computed/" + key, data);
  19134. }
  19135. /**
  19136. * 订单优惠券
  19137. * @param key
  19138. * @param data
  19139. * @returns {*}
  19140. */
  19141. function orderCoupon(orderId) {
  19142. return _request.default.post("v2/order/product_coupon/" + orderId);
  19143. }
  19144. /**
  19145. * 计算会员线下付款金额
  19146. * @param {Object} data
  19147. */
  19148. function offlineCheckPrice(data) {
  19149. return _request.default.post("order/offline/check/price", data);
  19150. }
  19151. /**
  19152. * 线下扫码付款
  19153. * @param {Object} data
  19154. */
  19155. function offlineCreate(data) {
  19156. return _request.default.post("order/offline/create", data);
  19157. }
  19158. /**
  19159. * 支付方式开关
  19160. */
  19161. function orderOfflinePayType() {
  19162. return _request.default.get('order/offline/pay/type');
  19163. }
  19164. /**
  19165. * 开票记录
  19166. */
  19167. function orderInvoiceList(data) {
  19168. return _request.default.get('v2/order/invoice_list', data);
  19169. }
  19170. /**
  19171. * 开票订单详情
  19172. * @param {Object} id
  19173. */
  19174. function orderInvoiceDetail(id) {
  19175. return _request.default.get("v2/order/invoice_detail/".concat(id));
  19176. }
  19177. /**
  19178. * 支付宝支付
  19179. * @param {Object} key
  19180. * @param {Object} quitUrl
  19181. */
  19182. function aliPay(key, quitUrl) {
  19183. return _request.default.get('ali_pay', {
  19184. key: key,
  19185. quitUrl: quitUrl },
  19186. {
  19187. noAuth: true });
  19188. }
  19189. /**
  19190. * 退货物流单号提交
  19191. * @param {Object} data
  19192. */
  19193. function refundExpress(data) {
  19194. return _request.default.post("order/refund/express", data);
  19195. }
  19196. /**
  19197. * 分类购物车列表
  19198. */
  19199. function vcartList() {
  19200. return _request.default.get("v2/cart_list");
  19201. }
  19202. /**
  19203. * 退款商品列表
  19204. */
  19205. function refundGoodsList(orderId) {
  19206. return _request.default.get("order/refund/cart_info/".concat(orderId));
  19207. }
  19208. /**
  19209. * 申请退款商品列表
  19210. */
  19211. function postRefundGoods(data) {
  19212. return _request.default.post("order/refund/cart_info", data);
  19213. }
  19214. /**
  19215. * 退款商品提交
  19216. */
  19217. function returnGoodsSubmit(id, data) {
  19218. return _request.default.post("order/refund/apply/".concat(id), data);
  19219. }
  19220. /**
  19221. * 新订单列表 2.1版本
  19222. * @param object data
  19223. */
  19224. function getNewOrderList(data) {
  19225. return _request.default.get('order/refund/list', data);
  19226. }
  19227. /**
  19228. * 退款订单详情
  19229. * @param string uni
  19230. */
  19231. function refundOrderDetail(uni) {
  19232. return _request.default.get('order/refund/detail/' + uni);
  19233. }
  19234. /**
  19235. * 放弃申请退款
  19236. * @param string uni
  19237. */
  19238. function cancelRefundOrder(uni) {
  19239. return _request.default.post('order/refund/cancel/' + uni);
  19240. }
  19241. /***/ }),
  19242. /***/ 45:
  19243. /*!******************************************************!*\
  19244. !*** D:/data/zhonghong/saber-weixin/mixins/color.js ***!
  19245. \******************************************************/
  19246. /*! no static exports found */
  19247. /***/ (function(module, exports, __webpack_require__) {
  19248. "use strict";
  19249. /* WEBPACK VAR INJECTION */(function(uni) {Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; // +----------------------------------------------------------------------
  19250. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  19251. // +----------------------------------------------------------------------
  19252. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  19253. // +----------------------------------------------------------------------
  19254. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  19255. // +----------------------------------------------------------------------
  19256. // | Author: CRMEB Team <admin@crmeb.com>
  19257. // +----------------------------------------------------------------------
  19258. var _default =
  19259. {
  19260. data: function data() {
  19261. return {
  19262. colorStyle: '',
  19263. colorStatus: '' };
  19264. },
  19265. created: function created() {var _this = this;
  19266. this.colorStyle = uni.getStorageSync('viewColor');
  19267. uni.$on('ok', function (data, status) {
  19268. _this.colorStyle = data;
  19269. _this.colorStatus = status;
  19270. });
  19271. },
  19272. methods: {} };exports.default = _default;
  19273. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["default"]))
  19274. /***/ }),
  19275. /***/ 477:
  19276. /*!***************************************************************!*\
  19277. !*** D:/data/zhonghong/saber-weixin/mixins/SendVerifyCode.js ***!
  19278. \***************************************************************/
  19279. /*! no static exports found */
  19280. /***/ (function(module, exports, __webpack_require__) {
  19281. "use strict";
  19282. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; // +----------------------------------------------------------------------
  19283. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  19284. // +----------------------------------------------------------------------
  19285. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  19286. // +----------------------------------------------------------------------
  19287. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  19288. // +----------------------------------------------------------------------
  19289. // | Author: CRMEB Team <admin@crmeb.com>
  19290. // +----------------------------------------------------------------------
  19291. var _default =
  19292. {
  19293. data: function data() {
  19294. return {
  19295. disabled: false,
  19296. text: this.$t('验证码') };
  19297. },
  19298. methods: {
  19299. sendCode: function sendCode() {var _this = this;
  19300. if (this.disabled) return;
  19301. this.disabled = true;
  19302. var n = 60;
  19303. this.text = this.$t('剩余') + n + "s";
  19304. var run = setInterval(function () {
  19305. n = n - 1;
  19306. if (n < 0) {
  19307. clearInterval(run);
  19308. }
  19309. _this.text = _this.$t('剩余') + n + "s";
  19310. if (_this.text < _this.$t('剩余') + 0 + "s") {
  19311. _this.disabled = false;
  19312. _this.text = _this.$t('重新获取');
  19313. }
  19314. }, 1000);
  19315. } } };exports.default = _default;
  19316. /***/ }),
  19317. /***/ 5:
  19318. /*!*************************************************!*\
  19319. !*** D:/data/zhonghong/saber-weixin/pages.json ***!
  19320. \*************************************************/
  19321. /*! no static exports found */
  19322. /***/ (function(module, exports) {
  19323. /***/ }),
  19324. /***/ 50:
  19325. /*!**********************************************************************************************************!*\
  19326. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js ***!
  19327. \**********************************************************************************************************/
  19328. /*! exports provided: default */
  19329. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  19330. "use strict";
  19331. __webpack_require__.r(__webpack_exports__);
  19332. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return normalizeComponent; });
  19333. /* globals __VUE_SSR_CONTEXT__ */
  19334. // IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
  19335. // This module is a runtime utility for cleaner component module output and will
  19336. // be included in the final webpack user bundle.
  19337. function normalizeComponent (
  19338. scriptExports,
  19339. render,
  19340. staticRenderFns,
  19341. functionalTemplate,
  19342. injectStyles,
  19343. scopeId,
  19344. moduleIdentifier, /* server only */
  19345. shadowMode, /* vue-cli only */
  19346. components, // fixed by xxxxxx auto components
  19347. renderjs // fixed by xxxxxx renderjs
  19348. ) {
  19349. // Vue.extend constructor export interop
  19350. var options = typeof scriptExports === 'function'
  19351. ? scriptExports.options
  19352. : scriptExports
  19353. // fixed by xxxxxx auto components
  19354. if (components) {
  19355. if (!options.components) {
  19356. options.components = {}
  19357. }
  19358. var hasOwn = Object.prototype.hasOwnProperty
  19359. for (var name in components) {
  19360. if (hasOwn.call(components, name) && !hasOwn.call(options.components, name)) {
  19361. options.components[name] = components[name]
  19362. }
  19363. }
  19364. }
  19365. // fixed by xxxxxx renderjs
  19366. if (renderjs) {
  19367. (renderjs.beforeCreate || (renderjs.beforeCreate = [])).unshift(function() {
  19368. this[renderjs.__module] = this
  19369. });
  19370. (options.mixins || (options.mixins = [])).push(renderjs)
  19371. }
  19372. // render functions
  19373. if (render) {
  19374. options.render = render
  19375. options.staticRenderFns = staticRenderFns
  19376. options._compiled = true
  19377. }
  19378. // functional template
  19379. if (functionalTemplate) {
  19380. options.functional = true
  19381. }
  19382. // scopedId
  19383. if (scopeId) {
  19384. options._scopeId = 'data-v-' + scopeId
  19385. }
  19386. var hook
  19387. if (moduleIdentifier) { // server build
  19388. hook = function (context) {
  19389. // 2.3 injection
  19390. context =
  19391. context || // cached call
  19392. (this.$vnode && this.$vnode.ssrContext) || // stateful
  19393. (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
  19394. // 2.2 with runInNewContext: true
  19395. if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
  19396. context = __VUE_SSR_CONTEXT__
  19397. }
  19398. // inject component styles
  19399. if (injectStyles) {
  19400. injectStyles.call(this, context)
  19401. }
  19402. // register component module identifier for async chunk inferrence
  19403. if (context && context._registeredComponents) {
  19404. context._registeredComponents.add(moduleIdentifier)
  19405. }
  19406. }
  19407. // used by ssr in case component is cached and beforeCreate
  19408. // never gets called
  19409. options._ssrRegister = hook
  19410. } else if (injectStyles) {
  19411. hook = shadowMode
  19412. ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }
  19413. : injectStyles
  19414. }
  19415. if (hook) {
  19416. if (options.functional) {
  19417. // for template-only hot-reload because in that case the render fn doesn't
  19418. // go through the normalizer
  19419. options._injectStyles = hook
  19420. // register for functioal component in vue file
  19421. var originalRender = options.render
  19422. options.render = function renderWithStyleInjection (h, context) {
  19423. hook.call(context)
  19424. return originalRender(h, context)
  19425. }
  19426. } else {
  19427. // inject component registration as beforeCreate hook
  19428. var existing = options.beforeCreate
  19429. options.beforeCreate = existing
  19430. ? [].concat(existing, hook)
  19431. : [hook]
  19432. }
  19433. }
  19434. return {
  19435. exports: scriptExports,
  19436. options: options
  19437. }
  19438. }
  19439. /***/ }),
  19440. /***/ 51:
  19441. /*!****************************************************!*\
  19442. !*** D:/data/zhonghong/saber-weixin/utils/util.js ***!
  19443. \****************************************************/
  19444. /*! no static exports found */
  19445. /***/ (function(module, exports, __webpack_require__) {
  19446. "use strict";
  19447. /* WEBPACK VAR INJECTION */(function(uni) {Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _regenerator = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/regenerator */ 9));
  19448. var _app = __webpack_require__(/*! ../config/app.js */ 19);
  19449. var _store = _interopRequireDefault(__webpack_require__(/*! ../store */ 13));
  19450. var _lang = _interopRequireDefault(__webpack_require__(/*! ./lang.js */ 20));
  19451. var _index = __webpack_require__(/*! @/plugin/image-tools/index.js */ 52);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {try {var info = gen[key](arg);var value = info.value;} catch (error) {reject(error);return;}if (info.done) {resolve(value);} else {Promise.resolve(value).then(_next, _throw);}}function _asyncToGenerator(fn) {return function () {var self = this,args = arguments;return new Promise(function (resolve, reject) {var gen = fn.apply(self, args);function _next(value) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);}function _throw(err) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);}_next(undefined);});};}function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;}function _slicedToArray(arr, i) {return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();}function _nonIterableRest() {throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _unsupportedIterableToArray(o, minLen) {if (!o) return;if (typeof o === "string") return _arrayLikeToArray(o, minLen);var n = Object.prototype.toString.call(o).slice(8, -1);if (n === "Object" && o.constructor) n = o.constructor.name;if (n === "Map" || n === "Set") return Array.from(o);if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);}function _arrayLikeToArray(arr, len) {if (len == null || len > arr.length) len = arr.length;for (var i = 0, arr2 = new Array(len); i < len; i++) {arr2[i] = arr[i];}return arr2;}function _iterableToArrayLimit(arr, i) {if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;var _arr = [];var _n = true;var _d = false;var _e = undefined;try {for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {_arr.push(_s.value);if (i && _arr.length === i) break;}} catch (err) {_d = true;_e = err;} finally {try {if (!_n && _i["return"] != null) _i["return"]();} finally {if (_d) throw _e;}}return _arr;}function _arrayWithHoles(arr) {if (Array.isArray(arr)) return arr;}var _default =
  19452. {
  19453. /**
  19454. * opt object | string
  19455. * to_url object | string
  19456. * 例:
  19457. * this.Tips('/pages/test/test'); 跳转不提示
  19458. * this.Tips({title:'提示'},'/pages/test/test'); 提示并跳转
  19459. * this.Tips({title:'提示'},{tab:1,url:'/pages/index/index'}); 提示并跳转值table上
  19460. * tab=1 一定时间后跳转至 table上
  19461. * tab=2 一定时间后跳转至非 table上
  19462. * tab=3 一定时间后返回上页面
  19463. * tab=4 关闭所有页面,打开到应用内的某个页面
  19464. * tab=5 关闭当前页面,跳转到应用内的某个页面
  19465. */
  19466. Tips: function Tips(opt, to_url) {
  19467. if (typeof opt == 'string') {
  19468. to_url = opt;
  19469. opt = {};
  19470. }
  19471. var title = opt.title || '',
  19472. icon = opt.icon || 'none',
  19473. endtime = opt.endtime || 2000,
  19474. success = opt.success;
  19475. if (title) uni.showToast({
  19476. title: title,
  19477. icon: icon,
  19478. duration: endtime,
  19479. success: success });
  19480. if (to_url != undefined) {
  19481. if (typeof to_url == 'object') {
  19482. var tab = to_url.tab || 1,
  19483. url = to_url.url || '';
  19484. switch (tab) {
  19485. case 1:
  19486. //一定时间后跳转至 table
  19487. setTimeout(function () {
  19488. uni.navigateTo({
  19489. url: url });
  19490. }, endtime);
  19491. break;
  19492. case 2:
  19493. //跳转至非table页面
  19494. setTimeout(function () {
  19495. uni.navigateTo({
  19496. url: url });
  19497. }, endtime);
  19498. break;
  19499. case 3:
  19500. //返回上页面
  19501. setTimeout(function () {
  19502. uni.navigateBack({
  19503. delta: parseInt(url) });
  19504. }, endtime);
  19505. break;
  19506. case 4:
  19507. //关闭所有页面,打开到应用内的某个页面
  19508. setTimeout(function () {
  19509. uni.reLaunch({
  19510. url: url });
  19511. }, endtime);
  19512. break;
  19513. case 5:
  19514. //关闭当前页面,跳转到应用内的某个页面
  19515. setTimeout(function () {
  19516. uni.redirectTo({
  19517. url: url });
  19518. }, endtime);
  19519. break;}
  19520. } else if (typeof to_url == 'function') {
  19521. setTimeout(function () {
  19522. to_url && to_url();
  19523. }, endtime);
  19524. } else {
  19525. //没有提示时跳转不延迟
  19526. setTimeout(function () {
  19527. uni.navigateTo({
  19528. url: to_url });
  19529. }, title ? endtime : 0);
  19530. }
  19531. }
  19532. },
  19533. /**
  19534. * 移除数组中的某个数组并组成新的数组返回
  19535. * @param array array 需要移除的数组
  19536. * @param int index 需要移除的数组的键值
  19537. * @param string | int 值
  19538. * @return array
  19539. *
  19540. */
  19541. ArrayRemove: function ArrayRemove(array, index, value) {
  19542. var valueArray = [];
  19543. if (array instanceof Array) {
  19544. for (var i = 0; i < array.length; i++) {
  19545. if (typeof index == 'number' && array[index] != i) {
  19546. valueArray.push(array[i]);
  19547. } else if (typeof index == 'string' && array[i][index] != value) {
  19548. valueArray.push(array[i]);
  19549. }
  19550. }
  19551. }
  19552. return valueArray;
  19553. },
  19554. /**
  19555. * 生成海报获取文字
  19556. * @param string text 为传入的文本
  19557. * @param int num 为单行显示的字节长度
  19558. * @return array
  19559. */
  19560. textByteLength: function textByteLength(text, num) {
  19561. var strLength = 0;
  19562. var rows = 1;
  19563. var str = 0;
  19564. var arr = [];
  19565. for (var j = 0; j < text.length; j++) {
  19566. if (text.charCodeAt(j) > 255) {
  19567. strLength += 2;
  19568. if (strLength > rows * num) {
  19569. strLength++;
  19570. arr.push(text.slice(str, j));
  19571. str = j;
  19572. rows++;
  19573. }
  19574. } else {
  19575. strLength++;
  19576. if (strLength > rows * num) {
  19577. arr.push(text.slice(str, j));
  19578. str = j;
  19579. rows++;
  19580. }
  19581. }
  19582. }
  19583. arr.push(text.slice(str, text.length));
  19584. return [strLength, arr, rows]; // [处理文字的总字节长度,每行显示内容的数组,行数]
  19585. },
  19586. /**
  19587. * 获取分享海报
  19588. * @param array arr2 海报素材
  19589. * @param string store_name 素材文字
  19590. * @param string price 价格
  19591. * @param string ot_price 原始价格
  19592. * @param function successFn 回调函数
  19593. *
  19594. *
  19595. */
  19596. PosterCanvas: function PosterCanvas(arr2, store_name, price, ot_price, successFn) {
  19597. var that = this;
  19598. uni.showLoading({
  19599. title: _lang.default.t("\u6D77\u62A5\u751F\u6210\u4E2D"),
  19600. mask: true });
  19601. var ctx = uni.createCanvasContext('myCanvas');
  19602. ctx.clearRect(0, 0, 0, 0);
  19603. /**
  19604. * 只能获取合法域名下的图片信息,本地调试无法获取
  19605. *
  19606. */
  19607. ctx.fillStyle = '#fff';
  19608. ctx.fillRect(0, 0, 750, 1150);
  19609. uni.getImageInfo({
  19610. src: arr2[0],
  19611. success: function success(res) {
  19612. var WIDTH = res.width;
  19613. var HEIGHT = res.height;
  19614. // ctx.drawImage(arr2[0], 0, 0, WIDTH, 1050);
  19615. ctx.drawImage(arr2[1], 0, 0, WIDTH, WIDTH);
  19616. ctx.save();
  19617. var r = 110;
  19618. var d = r * 2;
  19619. var cx = 480;
  19620. var cy = 790;
  19621. ctx.arc(cx + r, cy + r, r, 0, 2 * Math.PI);
  19622. // ctx.clip();
  19623. ctx.drawImage(arr2[2], cx, cy, d, d);
  19624. ctx.restore();
  19625. var CONTENT_ROW_LENGTH = 20;var _that$textByteLength =
  19626. that.textByteLength(store_name,
  19627. CONTENT_ROW_LENGTH),_that$textByteLength2 = _slicedToArray(_that$textByteLength, 3),contentLeng = _that$textByteLength2[0],contentArray = _that$textByteLength2[1],contentRows = _that$textByteLength2[2];
  19628. if (contentRows > 2) {
  19629. contentRows = 2;
  19630. var textArray = contentArray.slice(0, 2);
  19631. textArray[textArray.length - 1] += '……';
  19632. contentArray = textArray;
  19633. }
  19634. ctx.setTextAlign('left');
  19635. ctx.setFontSize(36);
  19636. ctx.setFillStyle('#000');
  19637. // let contentHh = 36 * 1.5;
  19638. var contentHh = 36;
  19639. for (var m = 0; m < contentArray.length; m++) {
  19640. if (m) {
  19641. ctx.fillText(contentArray[m], 50, 1000 + contentHh * m + 18, 1100);
  19642. } else {
  19643. ctx.fillText(contentArray[m], 50, 1000 + contentHh * m, 1100);
  19644. }
  19645. }
  19646. ctx.setTextAlign('left');
  19647. ctx.setFontSize(72);
  19648. ctx.setFillStyle('#DA4F2A');
  19649. ctx.fillText(_lang.default.t("\uFFE5") + price, 40, 820 + contentHh);
  19650. ctx.setTextAlign('left');
  19651. ctx.setFontSize(36);
  19652. ctx.setFillStyle('#999');
  19653. if (ot_price) {
  19654. ctx.fillText(_lang.default.t("\uFFE5") + ot_price, 50, 876 + contentHh);
  19655. var underline = function underline(ctx, text, x, y, size, color, thickness, offset) {
  19656. var width = ctx.measureText(text).width;
  19657. switch (ctx.textAlign) {
  19658. case "center":
  19659. x -= width / 2;
  19660. break;
  19661. case "right":
  19662. x -= width;
  19663. break;}
  19664. y += size + offset;
  19665. ctx.beginPath();
  19666. ctx.strokeStyle = color;
  19667. ctx.lineWidth = thickness;
  19668. ctx.moveTo(x, y);
  19669. ctx.lineTo(x + width, y);
  19670. ctx.stroke();
  19671. };
  19672. underline(ctx, _lang.default.t("\uFFE5") + ot_price, 55, 865, 36, '#999', 2, 0);
  19673. }
  19674. ctx.setTextAlign('left');
  19675. ctx.setFontSize(28);
  19676. ctx.setFillStyle('#999');
  19677. ctx.fillText(_lang.default.t("\u957F\u6309\u6216\u626B\u63CF\u67E5\u770B"), 490, 1030 + contentHh);
  19678. ctx.draw(true, function () {
  19679. uni.canvasToTempFilePath({
  19680. canvasId: 'myCanvas',
  19681. fileType: 'png',
  19682. destWidth: WIDTH,
  19683. destHeight: HEIGHT,
  19684. success: function success(res) {
  19685. uni.hideLoading();
  19686. successFn && successFn(res.tempFilePath);
  19687. } });
  19688. });
  19689. },
  19690. fail: function fail(err) {
  19691. uni.hideLoading();
  19692. that.Tips({
  19693. title: _lang.default.t("\u65E0\u6CD5\u83B7\u53D6\u56FE\u7247\u4FE1\u606F") });
  19694. } });
  19695. },
  19696. /**
  19697. * 获取砍价/拼团海报
  19698. * @param array arr2 海报素材 背景图
  19699. * @param string store_name 素材文字
  19700. * @param string price 价格
  19701. * @param string ot_price 原始价格
  19702. * @param function successFn 回调函数
  19703. *
  19704. *
  19705. */
  19706. bargainPosterCanvas: function bargainPosterCanvas(arr2, title, label, msg, price, wd, hg, successFn) {
  19707. var that = this;
  19708. var ctx = uni.createCanvasContext('myCanvas');
  19709. ctx.clearRect(0, 0, 0, 0);
  19710. /**
  19711. * 只能获取合法域名下的图片信息,本地调试无法获取
  19712. *
  19713. */
  19714. ctx.fillStyle = '#fff';
  19715. ctx.fillRect(0, 0, wd * 2, hg * 2);
  19716. uni.getImageInfo({
  19717. src: arr2[0],
  19718. success: function success(res) {
  19719. var WIDTH = res.width;
  19720. var HEIGHT = res.height;
  19721. ctx.drawImage(arr2[0], 0, 0, wd, hg);
  19722. // 保证在不同机型对应坐标准确
  19723. var labelx = 0.6500; //标签x
  19724. var labely = 0.166; //标签y
  19725. var pricex = 0.1857; //价格x
  19726. var pricey = 0.180; //价格x
  19727. var codex = 0.385; //二维码
  19728. var codey = 0.77;
  19729. var picturex = 0.1571; //商品图左上点
  19730. var picturey = 0.2916;
  19731. var picturebx = 0.6857; //商品图右下点
  19732. var pictureby = 0.4316;
  19733. var msgx = 0.1036; //msg
  19734. var msgy = 0.2306;
  19735. var codew = 0.25;
  19736. ctx.drawImage(arr2[1], wd * picturex, hg * picturey, wd * picturebx, hg * pictureby);
  19737. ctx.drawImage(arr2[2], wd * codex, hg * codey, wd * codew, wd * codew);
  19738. ctx.save();
  19739. //标题
  19740. var CONTENT_ROW_LENGTH = 30;var _that$textByteLength3 =
  19741. that.textByteLength(title,
  19742. CONTENT_ROW_LENGTH),_that$textByteLength4 = _slicedToArray(_that$textByteLength3, 3),contentLeng = _that$textByteLength4[0],contentArray = _that$textByteLength4[1],contentRows = _that$textByteLength4[2];
  19743. if (contentRows > 2) {
  19744. contentRows = 2;
  19745. var textArray = contentArray.slice(0, 2);
  19746. textArray[textArray.length - 1] += '…';
  19747. contentArray = textArray;
  19748. }
  19749. ctx.setTextAlign('left');
  19750. ctx.setFillStyle('#000');
  19751. if (contentArray.length < 2) {
  19752. ctx.setFontSize(22);
  19753. } else {
  19754. ctx.setFontSize(20);
  19755. }
  19756. var contentHh = 8;
  19757. for (var m = 0; m < contentArray.length; m++) {
  19758. if (m) {
  19759. ctx.fillText(contentArray[m], 20, 35 + contentHh * m + 18, 1100);
  19760. } else {
  19761. ctx.fillText(contentArray[m], 20, 35, 1100);
  19762. }
  19763. }
  19764. // 标签内容
  19765. ctx.setTextAlign('left');
  19766. ctx.setFontSize(16);
  19767. ctx.setFillStyle('#FFF');
  19768. ctx.fillText(label, wd * labelx, hg * labely);
  19769. ctx.save();
  19770. // 价格
  19771. ctx.setFillStyle('red');
  19772. ctx.setFontSize(26);
  19773. ctx.fillText(price, wd * pricex, hg * pricey);
  19774. ctx.save();
  19775. // msg
  19776. ctx.setFillStyle('#333');
  19777. ctx.setFontSize(16);
  19778. ctx.fillText(msg, wd * msgx, hg * msgy);
  19779. ctx.save();
  19780. ctx.draw(true, function () {
  19781. uni.canvasToTempFilePath({
  19782. canvasId: 'myCanvas',
  19783. fileType: 'png',
  19784. quality: 1,
  19785. success: function success(res) {
  19786. successFn && successFn(res.tempFilePath);
  19787. uni.hideLoading();
  19788. } });
  19789. });
  19790. },
  19791. fail: function fail(err) {
  19792. uni.hideLoading();
  19793. that.Tips({
  19794. title: _lang.default.t("\u65E0\u6CD5\u83B7\u53D6\u56FE\u7247\u4FE1\u606F") });
  19795. } });
  19796. },
  19797. /**
  19798. * 用户信息分享海报
  19799. * @param array arr2 海报素材 1背景 0二维码
  19800. * @param string nickname 昵称
  19801. * @param string sitename 价格
  19802. * @param function successFn 回调函数
  19803. *
  19804. *
  19805. */
  19806. userPosterCanvas: function userPosterCanvas(arr2, nickname, sitename, index, w, h, successFn) {
  19807. var that = this;
  19808. var ctx = uni.createCanvasContext('myCanvas' + index);
  19809. ctx.clearRect(0, 0, 0, 0);
  19810. /**
  19811. * 只能获取合法域名下的图片信息,本地调试无法获取
  19812. *
  19813. */
  19814. uni.getImageInfo({
  19815. src: arr2[1],
  19816. success: function success(res) {
  19817. var WIDTH = res.width;
  19818. var HEIGHT = res.height;
  19819. ctx.fillStyle = '#fff';
  19820. ctx.fillRect(0, 0, w, h);
  19821. ctx.drawImage(arr2[1], 0, 0, w, h);
  19822. ctx.setTextAlign('left');
  19823. ctx.setFontSize(12);
  19824. ctx.setFillStyle('#333');
  19825. // x:240 y:426
  19826. var codex = 0.1906;
  19827. var codey = 0.7746;
  19828. var codeSize = 0.21666;
  19829. var namex = 0.4283;
  19830. var namey = 0.8215;
  19831. var markx = 0.4283;
  19832. var marky = 0.8685;
  19833. ctx.drawImage(arr2[0], w * codex, h * codey, w * codeSize, w * codeSize);
  19834. if (w < 270) {
  19835. ctx.setFontSize(8);
  19836. } else {
  19837. ctx.setFontSize(10);
  19838. }
  19839. ctx.fillText(nickname, w * namex, h * namey);
  19840. if (w < 270) {
  19841. ctx.setFontSize(8);
  19842. } else {
  19843. ctx.setFontSize(10);
  19844. }
  19845. ctx.fillText(_lang.default.t("\u9080\u8BF7\u60A8\u52A0\u5165") + sitename, w * markx, h * marky);
  19846. ctx.save();
  19847. ctx.draw(true, function () {
  19848. uni.canvasToTempFilePath({
  19849. canvasId: 'myCanvas' + index,
  19850. fileType: 'png',
  19851. quality: 1,
  19852. success: function success(res) {
  19853. successFn && successFn(res.tempFilePath);
  19854. } });
  19855. });
  19856. },
  19857. fail: function fail(err) {
  19858. uni.hideLoading();
  19859. that.Tips({
  19860. title: _lang.default.t("\u65E0\u6CD5\u83B7\u53D6\u56FE\u7247\u4FE1\u606F") });
  19861. } });
  19862. },
  19863. /*
  19864. * 单图上传
  19865. * @param object opt
  19866. * @param callable successCallback 成功执行方法 data
  19867. * @param callable errorCallback 失败执行方法
  19868. */
  19869. uploadImageOne: function uploadImageOne(opt, successCallback, errorCallback) {
  19870. var that = this;
  19871. if (typeof opt === 'string') {
  19872. var url = opt;
  19873. opt = {};
  19874. opt.url = url;
  19875. }
  19876. var count = opt.count || 1,
  19877. sizeType = opt.sizeType || ['compressed'],
  19878. sourceType = opt.sourceType || ['album', 'camera'],
  19879. is_load = opt.is_load || true,
  19880. uploadUrl = opt.url || '',
  19881. inputName = opt.name || 'pics',
  19882. fileType = opt.fileType || 'image';
  19883. uni.chooseImage({
  19884. count: count, //最多可以选择的图片总数
  19885. sizeType: sizeType, // 可以指定是原图还是压缩图,默认二者都有
  19886. sourceType: sourceType, // 可以指定来源是相册还是相机,默认二者都有
  19887. success: function success(res) {
  19888. //启动上传等待中...
  19889. uni.showLoading({
  19890. title: _lang.default.t("\u56FE\u7247\u4E0A\u4F20\u4E2D") });
  19891. uni.uploadFile({
  19892. url: _app.HTTP_REQUEST_URL + '/api/' + uploadUrl,
  19893. filePath: res.tempFilePaths[0],
  19894. fileType: fileType,
  19895. name: inputName,
  19896. formData: {
  19897. 'filename': inputName },
  19898. header: _defineProperty({
  19899. "Content-Type": "multipart/form-data" },
  19900. _app.TOKENNAME, 'Bearer ' + _store.default.state.app.token),
  19901. success: function success(res) {
  19902. uni.hideLoading();
  19903. if (res.statusCode == 403) {
  19904. that.Tips({
  19905. title: res.data });
  19906. } else {
  19907. var data = res.data ? JSON.parse(res.data) : {};
  19908. if (data.status == 200) {
  19909. successCallback && successCallback(data);
  19910. } else {
  19911. errorCallback && errorCallback(data);
  19912. that.Tips({
  19913. title: data.msg });
  19914. }
  19915. }
  19916. },
  19917. fail: function fail(res) {
  19918. uni.hideLoading();
  19919. that.Tips({
  19920. title: _lang.default.t("\u4E0A\u4F20\u56FE\u7247\u5931\u8D25") });
  19921. } });
  19922. } });
  19923. },
  19924. /*
  19925. * 单图上传压缩版
  19926. * @param object opt
  19927. * @param callable successCallback 成功执行方法 data
  19928. * @param callable errorCallback 失败执行方法
  19929. */
  19930. uploadImageChange: function uploadImageChange(opt, successCallback, errorCallback, sizeCallback) {
  19931. var that = this;
  19932. if (typeof opt === 'string') {
  19933. var url = opt;
  19934. opt = {};
  19935. opt.url = url;
  19936. }
  19937. var count = opt.count || 1,
  19938. sizeType = opt.sizeType || ['compressed'],
  19939. sourceType = opt.sourceType || ['album', 'camera'],
  19940. is_load = opt.is_load || true,
  19941. uploadUrl = opt.url || '',
  19942. inputName = opt.name || 'pics',
  19943. fileType = opt.fileType || 'image';
  19944. uni.chooseImage({
  19945. count: count, //最多可以选择的图片总数
  19946. sizeType: sizeType, // 可以指定是原图还是压缩图,默认二者都有
  19947. sourceType: sourceType, // 可以指定来源是相册还是相机,默认二者都有
  19948. success: function success(res) {
  19949. //启动上传等待中...
  19950. var imgSrc;
  19951. uni.getImageInfo({
  19952. src: res.tempFilePaths[0],
  19953. success: function success(ress) {
  19954. uni.showLoading({
  19955. title: _lang.default.t("\u56FE\u7247\u4E0A\u4F20\u4E2D") });
  19956. if (res.tempFiles[0].size <= 2097152) {
  19957. uploadImg(ress.path);
  19958. return;
  19959. }
  19960. // uploadImg(canvasPath.tempFilePath)
  19961. var canvasWidth,canvasHeight,xs,maxWidth = 750;
  19962. xs = ress.width / ress.height; // 宽高比例
  19963. if (ress.width > maxWidth) {
  19964. canvasWidth = maxWidth; // 这里是最大限制宽度
  19965. canvasHeight = maxWidth / xs;
  19966. } else {
  19967. canvasWidth = ress.width;
  19968. canvasHeight = ress.height;
  19969. }
  19970. sizeCallback && sizeCallback({
  19971. w: canvasWidth,
  19972. h: canvasHeight });
  19973. var canvas = uni.createCanvasContext('canvas');
  19974. canvas.width = canvasWidth;
  19975. canvas.height = canvasHeight;
  19976. canvas.clearRect(0, 0, canvasWidth, canvasHeight);
  19977. canvas.drawImage(ress.path, 0, 0, canvasWidth, canvasHeight);
  19978. canvas.save();
  19979. // 这里的画布drawImage是一种异步属性 可能存在未绘制全就执行了draw的问题 so添加延迟
  19980. setTimeout(function (e) {
  19981. canvas.draw(true, function () {
  19982. uni.canvasToTempFilePath({
  19983. canvasId: 'canvas',
  19984. fileType: 'JPEG',
  19985. destWidth: canvasWidth,
  19986. destHeight: canvasHeight,
  19987. quality: 0.7,
  19988. success: function success(canvasPath) {
  19989. uploadImg(canvasPath.
  19990. tempFilePath);
  19991. } });
  19992. });
  19993. }, 200);
  19994. } });
  19995. } });
  19996. function uploadImg(filePath) {
  19997. uni.uploadFile({
  19998. url: _app.HTTP_REQUEST_URL + '/api/' + uploadUrl,
  19999. filePath: filePath,
  20000. fileType: fileType,
  20001. name: inputName,
  20002. formData: {
  20003. 'filename': inputName },
  20004. header: _defineProperty({
  20005. "Content-Type": "multipart/form-data" },
  20006. _app.TOKENNAME, 'Bearer ' + _store.default.state.app.token),
  20007. success: function success(res) {
  20008. uni.hideLoading();
  20009. if (res.statusCode == 403) {
  20010. that.Tips({
  20011. title: res.data });
  20012. } else {
  20013. var data = res.data ? JSON.parse(res.data) : {};
  20014. if (data.status == 200) {
  20015. successCallback && successCallback(data);
  20016. } else {
  20017. errorCallback && errorCallback(data);
  20018. that.Tips({
  20019. title: data.msg });
  20020. }
  20021. }
  20022. },
  20023. fail: function fail(res) {
  20024. uni.hideLoading();
  20025. that.Tips({
  20026. title: _lang.default.t("\u4E0A\u4F20\u56FE\u7247\u5931\u8D25") });
  20027. } });
  20028. }
  20029. },
  20030. /**
  20031. * 处理服务器扫码带进来的参数
  20032. * @param string param 扫码携带参数
  20033. * @param string k 整体分割符 默认为:&
  20034. * @param string p 单个分隔符 默认为:=
  20035. * @return object
  20036. *
  20037. */
  20038. getUrlParams: function getUrlParams(param, k, p) {
  20039. if (typeof param != 'string') return {};
  20040. k = k ? k : '&'; //整体参数分隔符
  20041. p = p ? p : '='; //单个参数分隔符
  20042. var value = {};
  20043. if (param.indexOf(k) !== -1) {
  20044. param = param.split(k);
  20045. for (var val in param) {
  20046. if (param[val].indexOf(p) !== -1) {
  20047. var item = param[val].split(p);
  20048. value[item[0]] = item[1];
  20049. }
  20050. }
  20051. } else if (param.indexOf(p) !== -1) {
  20052. var item = param.split(p);
  20053. value[item[0]] = item[1];
  20054. } else {
  20055. return param;
  20056. }
  20057. return value;
  20058. },
  20059. /*
  20060. * 合并数组
  20061. */
  20062. SplitArray: function SplitArray(list, sp) {
  20063. if (typeof list != 'object') return [];
  20064. if (sp === undefined) sp = [];
  20065. for (var i = 0; i < list.length; i++) {
  20066. sp.push(list[i]);
  20067. }
  20068. return sp;
  20069. },
  20070. trim: function trim(backUrlCRshlcICwGdGY) {
  20071. return String.prototype.trim.call(backUrlCRshlcICwGdGY);
  20072. },
  20073. $h: {
  20074. //除法函数,用来得到精确的除法结果
  20075. //说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。
  20076. //调用:$h.Div(arg1,arg2)
  20077. //返回值:arg1除以arg2的精确结果
  20078. Div: function Div(arg1, arg2) {
  20079. arg1 = parseFloat(arg1);
  20080. arg2 = parseFloat(arg2);
  20081. var t1 = 0,
  20082. t2 = 0,
  20083. r1,r2;
  20084. try {
  20085. t1 = arg1.toString().split(".")[1].length;
  20086. } catch (e) {}
  20087. try {
  20088. t2 = arg2.toString().split(".")[1].length;
  20089. } catch (e) {}
  20090. r1 = Number(arg1.toString().replace(".", ""));
  20091. r2 = Number(arg2.toString().replace(".", ""));
  20092. return this.Mul(r1 / r2, Math.pow(10, t2 - t1));
  20093. },
  20094. //加法函数,用来得到精确的加法结果
  20095. //说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
  20096. //调用:$h.Add(arg1,arg2)
  20097. //返回值:arg1加上arg2的精确结果
  20098. Add: function Add(arg1, arg2) {
  20099. arg2 = parseFloat(arg2);
  20100. var r1, r2, m;
  20101. try {
  20102. r1 = arg1.toString().split(".")[1].length;
  20103. } catch (e) {
  20104. r1 = 0;
  20105. }
  20106. try {
  20107. r2 = arg2.toString().split(".")[1].length;
  20108. } catch (e) {
  20109. r2 = 0;
  20110. }
  20111. m = Math.pow(100, Math.max(r1, r2));
  20112. return (this.Mul(arg1, m) + this.Mul(arg2, m)) / m;
  20113. },
  20114. //减法函数,用来得到精确的减法结果
  20115. //说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的减法结果。
  20116. //调用:$h.Sub(arg1,arg2)
  20117. //返回值:arg1减去arg2的精确结果
  20118. Sub: function Sub(arg1, arg2) {
  20119. arg1 = parseFloat(arg1);
  20120. arg2 = parseFloat(arg2);
  20121. var r1, r2, m, n;
  20122. try {
  20123. r1 = arg1.toString().split(".")[1].length;
  20124. } catch (e) {
  20125. r1 = 0;
  20126. }
  20127. try {
  20128. r2 = arg2.toString().split(".")[1].length;
  20129. } catch (e) {
  20130. r2 = 0;
  20131. }
  20132. m = Math.pow(10, Math.max(r1, r2));
  20133. //动态控制精度长度
  20134. n = r1 >= r2 ? r1 : r2;
  20135. return ((this.Mul(arg1, m) - this.Mul(arg2, m)) / m).toFixed(n);
  20136. },
  20137. //乘法函数,用来得到精确的乘法结果
  20138. //说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
  20139. //调用:$h.Mul(arg1,arg2)
  20140. //返回值:arg1乘以arg2的精确结果
  20141. Mul: function Mul(arg1, arg2) {
  20142. arg1 = parseFloat(arg1);
  20143. arg2 = parseFloat(arg2);
  20144. var m = 0,
  20145. s1 = arg1.toString(),
  20146. s2 = arg2.toString();
  20147. try {
  20148. m += s1.split(".")[1].length;
  20149. } catch (e) {}
  20150. try {
  20151. m += s2.split(".")[1].length;
  20152. } catch (e) {}
  20153. return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
  20154. } },
  20155. // 获取地理位置;
  20156. $L: {
  20157. getLocation: function getLocation() {var _this = this;return _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee() {var status;return _regenerator.default.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:_context.next = 2;return (
  20158. _this.getSetting());case 2:status = _context.sent;if (!(
  20159. status === 2)) {_context.next = 6;break;}
  20160. _this.openSetting();return _context.abrupt("return");case 6:
  20161. _this.doGetLocation();case 7:case "end":return _context.stop();}}}, _callee);}))();
  20162. },
  20163. doGetLocation: function doGetLocation() {
  20164. uni.getLocation({
  20165. success: function success(res) {
  20166. uni.removeStorageSync('CACHE_LONGITUDE');
  20167. uni.removeStorageSync('CACHE_LATITUDE');
  20168. uni.setStorageSync('CACHE_LONGITUDE', res.longitude);
  20169. uni.setStorageSync('CACHE_LATITUDE', res.latitude);
  20170. },
  20171. fail: function fail(err) {
  20172. if (err.errMsg.indexOf("auth deny") >= 0) {
  20173. uni.showToast({
  20174. title: _lang.default.t("\u8BBF\u95EE\u4F4D\u7F6E\u88AB\u62D2\u7EDD") });
  20175. } else {
  20176. uni.showToast({
  20177. title: err.errMsg });
  20178. }
  20179. } });
  20180. },
  20181. getSetting: function getSetting() {
  20182. return new Promise(function (resolve, reject) {
  20183. uni.getSetting({
  20184. success: function success(res) {
  20185. if (res.authSetting['scope.userLocation'] === undefined) {
  20186. resolve(0);
  20187. return;
  20188. }
  20189. if (res.authSetting['scope.userLocation']) {
  20190. resolve(1);
  20191. } else {
  20192. resolve(2);
  20193. }
  20194. } });
  20195. });
  20196. },
  20197. openSetting: function openSetting() {var _this2 = this;
  20198. uni.openSetting({
  20199. success: function success(res) {
  20200. if (res.authSetting && res.authSetting['scope.userLocation']) {
  20201. _this2.doGetLocation();
  20202. }
  20203. },
  20204. fail: function fail(err) {} });
  20205. },
  20206. checkPermission: function checkPermission() {return _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee2() {var status;return _regenerator.default.wrap(function _callee2$(_context2) {while (1) {switch (_context2.prev = _context2.next) {case 0:if (!
  20207. permision.isIOS) {_context2.next = 6;break;}_context2.next = 3;return permision.requestIOS('location');case 3:_context2.t0 = _context2.sent;_context2.next = 9;break;case 6:_context2.next = 8;return (
  20208. permision.requestAndroid('android.permission.ACCESS_FINE_LOCATION'));case 8:_context2.t0 = _context2.sent;case 9:status = _context2.t0;
  20209. if (status === null || status === 1) {
  20210. status = 1;
  20211. } else if (status === 2) {
  20212. uni.showModal({
  20213. content: _lang.default.t("\u7CFB\u7EDF\u5B9A\u4F4D\u5DF2\u5173\u95ED"),
  20214. confirmText: _lang.default.t("\u786E\u5B9A"),
  20215. showCancel: false,
  20216. success: function success(res) {} });
  20217. } else if (status.code) {
  20218. uni.showModal({
  20219. content: status.message });
  20220. } else {
  20221. uni.showModal({
  20222. content: _lang.default.t("\u9700\u8981\u5B9A\u4F4D\u6743\u9650"),
  20223. confirmText: _lang.default.t("\u786E\u5B9A"),
  20224. success: function success(res) {
  20225. if (res.confirm) {
  20226. permision.gotoAppSetting();
  20227. }
  20228. } });
  20229. }return _context2.abrupt("return",
  20230. status);case 12:case "end":return _context2.stop();}}}, _callee2);}))();
  20231. } } };exports.default = _default;
  20232. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["default"]))
  20233. /***/ }),
  20234. /***/ 52:
  20235. /*!******************************************************************!*\
  20236. !*** D:/data/zhonghong/saber-weixin/plugin/image-tools/index.js ***!
  20237. \******************************************************************/
  20238. /*! no static exports found */
  20239. /***/ (function(module, exports, __webpack_require__) {
  20240. "use strict";
  20241. Object.defineProperty(exports, "__esModule", { value: true });exports.pathToBase64 = pathToBase64;exports.base64ToPath = base64ToPath;function getLocalFilePath(path) {
  20242. if (path.indexOf('_www') === 0 || path.indexOf('_doc') === 0 || path.indexOf('_documents') === 0 || path.indexOf('_downloads') === 0) {
  20243. return path;
  20244. }
  20245. if (path.indexOf('file://') === 0) {
  20246. return path;
  20247. }
  20248. if (path.indexOf('/storage/emulated/0/') === 0) {
  20249. return path;
  20250. }
  20251. if (path.indexOf('/') === 0) {
  20252. var localFilePath = plus.io.convertAbsoluteFileSystem(path);
  20253. if (localFilePath !== path) {
  20254. return localFilePath;
  20255. } else {
  20256. path = path.substr(1);
  20257. }
  20258. }
  20259. return '_www/' + path;
  20260. }
  20261. function pathToBase64(path) {
  20262. return new Promise(function (resolve, reject) {
  20263. if (typeof window === 'object' && 'document' in window) {
  20264. if (typeof FileReader === 'function') {
  20265. var xhr = new XMLHttpRequest();
  20266. xhr.open('GET', path, true);
  20267. xhr.responseType = 'blob';
  20268. xhr.onload = function () {
  20269. if (this.status === 200) {
  20270. var fileReader = new FileReader();
  20271. fileReader.onload = function (e) {
  20272. resolve(e.target.result);
  20273. };
  20274. fileReader.onerror = reject;
  20275. fileReader.readAsDataURL(this.response);
  20276. }
  20277. };
  20278. xhr.onerror = reject;
  20279. xhr.send();
  20280. return;
  20281. }
  20282. var canvas = document.createElement('canvas');
  20283. var c2x = canvas.getContext('2d');
  20284. var img = new Image();
  20285. img.onload = function () {
  20286. canvas.width = img.width;
  20287. canvas.height = img.height;
  20288. c2x.drawImage(img, 0, 0);
  20289. resolve(canvas.toDataURL());
  20290. canvas.height = canvas.width = 0;
  20291. };
  20292. img.onerror = reject;
  20293. img.src = path;
  20294. return;
  20295. }
  20296. if (typeof plus === 'object') {
  20297. plus.io.resolveLocalFileSystemURL(getLocalFilePath(path), function (entry) {
  20298. entry.file(function (file) {
  20299. var fileReader = new plus.io.FileReader();
  20300. fileReader.onload = function (data) {
  20301. resolve(data.target.result);
  20302. };
  20303. fileReader.onerror = function (error) {
  20304. reject(error);
  20305. };
  20306. fileReader.readAsDataURL(file);
  20307. }, function (error) {
  20308. reject(error);
  20309. });
  20310. }, function (error) {
  20311. reject(error);
  20312. });
  20313. return;
  20314. }
  20315. if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) {
  20316. wx.getFileSystemManager().readFile({
  20317. filePath: path,
  20318. encoding: 'base64',
  20319. success: function success(res) {
  20320. resolve('data:image/png;base64,' + res.data);
  20321. },
  20322. fail: function fail(error) {
  20323. reject(error);
  20324. } });
  20325. return;
  20326. }
  20327. reject(new Error('not support'));
  20328. });
  20329. }
  20330. function base64ToPath(base64) {
  20331. return new Promise(function (resolve, reject) {
  20332. if (typeof window === 'object' && 'document' in window) {
  20333. base64 = base64.split(',');
  20334. var type = base64[0].match(/:(.*?);/)[1];
  20335. var str = atob(base64[1]);
  20336. var n = str.length;
  20337. var array = new Uint8Array(n);
  20338. while (n--) {
  20339. array[n] = str.charCodeAt(n);
  20340. }
  20341. return resolve((window.URL || window.webkitURL).createObjectURL(new Blob([array], { type: type })));
  20342. }
  20343. var extName = base64.match(/data\:\S+\/(\S+);/);
  20344. if (extName) {
  20345. extName = extName[1];
  20346. } else {
  20347. reject(new Error('base64 error'));
  20348. }
  20349. var fileName = Date.now() + '.' + extName;
  20350. if (typeof plus === 'object') {
  20351. var bitmap = new plus.nativeObj.Bitmap('bitmap' + Date.now());
  20352. bitmap.loadBase64Data(base64, function () {
  20353. var filePath = '_doc/uniapp_temp/' + fileName;
  20354. bitmap.save(filePath, {}, function () {
  20355. bitmap.clear();
  20356. resolve(filePath);
  20357. }, function (error) {
  20358. bitmap.clear();
  20359. reject(error);
  20360. });
  20361. }, function (error) {
  20362. bitmap.clear();
  20363. reject(error);
  20364. });
  20365. return;
  20366. }
  20367. if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) {
  20368. var filePath = wx.env.USER_DATA_PATH + '/' + fileName;
  20369. wx.getFileSystemManager().writeFile({
  20370. filePath: filePath,
  20371. data: base64.replace(/^data:\S+\/\S+;base64,/, ''),
  20372. encoding: 'base64',
  20373. success: function success() {
  20374. resolve(filePath);
  20375. },
  20376. fail: function fail(error) {
  20377. reject(error);
  20378. } });
  20379. return;
  20380. }
  20381. reject(new Error('not support'));
  20382. });
  20383. }
  20384. /***/ }),
  20385. /***/ 53:
  20386. /*!*******************************************************!*\
  20387. !*** D:/data/zhonghong/saber-weixin/libs/new_chat.js ***!
  20388. \*******************************************************/
  20389. /*! no static exports found */
  20390. /***/ (function(module, exports, __webpack_require__) {
  20391. "use strict";
  20392. /* WEBPACK VAR INJECTION */(function(uni) {Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;
  20393. var _store = _interopRequireDefault(__webpack_require__(/*! @/store */ 13));
  20394. var _app = __webpack_require__(/*! @/config/app.js */ 19);
  20395. var _index = __webpack_require__(/*! @/utils/index.js */ 41);
  20396. var _api = __webpack_require__(/*! @/api/api.js */ 42);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} // +----------------------------------------------------------------------
  20397. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  20398. // +----------------------------------------------------------------------
  20399. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  20400. // +----------------------------------------------------------------------
  20401. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  20402. // +----------------------------------------------------------------------
  20403. // | Author: CRMEB Team <admin@crmeb.com>
  20404. // +----------------------------------------------------------------------
  20405. var Socket = function Socket() {// this.ws.close(this.close.bind(this));
  20406. };
  20407. Socket.prototype = {
  20408. // close() {
  20409. // clearInterval(this.timer);
  20410. // this.ws.close();
  20411. // },
  20412. onSocketOpen: function onSocketOpen(my) {
  20413. uni.$emit('socketOpen', my);
  20414. },
  20415. init: function init() {
  20416. var that = this;
  20417. this.timer = setInterval(function () {
  20418. that.send({
  20419. type: "ping" });
  20420. }, 10000);
  20421. },
  20422. send: function send(data) {
  20423. var datas = JSON.stringify(data);
  20424. return uni.sendSocketMessage({
  20425. data: datas });
  20426. },
  20427. onMessage: function onMessage(res) {var _JSON$parse =
  20428. JSON.parse(res.data),type = _JSON$parse.type,_JSON$parse$data = _JSON$parse.data,data = _JSON$parse$data === void 0 ? {} : _JSON$parse$data;
  20429. uni.$emit(type, data);
  20430. },
  20431. onClose: function onClose() {
  20432. uni.closeSocket();
  20433. clearInterval(this.timer);
  20434. uni.$emit("socket_close");
  20435. },
  20436. onError: function onError(e) {
  20437. uni.$emit("socket_error", e);
  20438. },
  20439. close: function close() {
  20440. uni.closeSocket();
  20441. },
  20442. onStart: function onStart(token, form_type) {
  20443. var wssUrl = "".concat(_index.VUE_APP_WS_URL);
  20444. this.ws = uni.connectSocket({
  20445. url: wssUrl + '?type=user&token=' + token + '&form_type=' + form_type,
  20446. header: {
  20447. 'content-type': 'application/json' },
  20448. method: 'GET',
  20449. success: function success(res) {} });
  20450. this.ws.onOpen(this.onSocketOpen.bind(this));
  20451. this.ws.onError(this.onError.bind(this));
  20452. this.ws.onMessage(this.onMessage.bind(this));
  20453. this.ws.onClose(this.onClose.bind(this));
  20454. } };
  20455. Socket.prototype.constructor = Socket;var _default =
  20456. Socket;exports.default = _default;
  20457. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["default"]))
  20458. /***/ }),
  20459. /***/ 54:
  20460. /*!********************************************************************!*\
  20461. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/index.js ***!
  20462. \********************************************************************/
  20463. /*! no static exports found */
  20464. /***/ (function(module, exports, __webpack_require__) {
  20465. "use strict";
  20466. /* WEBPACK VAR INJECTION */(function(uni) {Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;
  20467. var _mixin = _interopRequireDefault(__webpack_require__(/*! ./libs/mixin/mixin.js */ 55));
  20468. var _mpMixin = _interopRequireDefault(__webpack_require__(/*! ./libs/mixin/mpMixin.js */ 56));
  20469. var _luchRequest = _interopRequireDefault(__webpack_require__(/*! ./libs/luch-request */ 57));
  20470. var _route = _interopRequireDefault(__webpack_require__(/*! ./libs/util/route.js */ 75));
  20471. var _colorGradient = _interopRequireDefault(__webpack_require__(/*! ./libs/function/colorGradient.js */ 76));
  20472. var _test = _interopRequireDefault(__webpack_require__(/*! ./libs/function/test.js */ 77));
  20473. var _debounce = _interopRequireDefault(__webpack_require__(/*! ./libs/function/debounce.js */ 78));
  20474. var _throttle = _interopRequireDefault(__webpack_require__(/*! ./libs/function/throttle.js */ 79));
  20475. var _index = _interopRequireDefault(__webpack_require__(/*! ./libs/function/index.js */ 80));
  20476. var _config = _interopRequireDefault(__webpack_require__(/*! ./libs/config/config.js */ 82));
  20477. var _props = _interopRequireDefault(__webpack_require__(/*! ./libs/config/props.js */ 83));
  20478. var _zIndex = _interopRequireDefault(__webpack_require__(/*! ./libs/config/zIndex.js */ 173));
  20479. var _color = _interopRequireDefault(__webpack_require__(/*! ./libs/config/color.js */ 131));
  20480. var _platform = _interopRequireDefault(__webpack_require__(/*! ./libs/function/platform */ 174));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function ownKeys(object, enumerableOnly) {var keys = Object.keys(object);if (Object.getOwnPropertySymbols) {var symbols = Object.getOwnPropertySymbols(object);if (enumerableOnly) symbols = symbols.filter(function (sym) {return Object.getOwnPropertyDescriptor(object, sym).enumerable;});keys.push.apply(keys, symbols);}return keys;}function _objectSpread(target) {for (var i = 1; i < arguments.length; i++) {var source = arguments[i] != null ? arguments[i] : {};if (i % 2) {ownKeys(Object(source), true).forEach(function (key) {_defineProperty(target, key, source[key]);});} else if (Object.getOwnPropertyDescriptors) {Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));} else {ownKeys(Object(source)).forEach(function (key) {Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));});}}return target;}function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;} // 看到此报错,是因为没有配置vue.config.js的【transpileDependencies】,详见:https://www.uviewui.com/components/npmSetting.html#_5-cli模式额外配置
  20481. var pleaseSetTranspileDependencies = {},babelTest = pleaseSetTranspileDependencies === null || pleaseSetTranspileDependencies === void 0 ? void 0 : pleaseSetTranspileDependencies.test; // 引入全局mixin
  20482. var $u = _objectSpread(_objectSpread({
  20483. route: _route.default,
  20484. date: _index.default.timeFormat, // 另名date
  20485. colorGradient: _colorGradient.default.colorGradient,
  20486. hexToRgb: _colorGradient.default.hexToRgb,
  20487. rgbToHex: _colorGradient.default.rgbToHex,
  20488. colorToRgba: _colorGradient.default.colorToRgba,
  20489. test: _test.default,
  20490. type: ['primary', 'success', 'error', 'warning', 'info'],
  20491. http: new _luchRequest.default(),
  20492. config: _config.default, // uView配置信息相关,比如版本号
  20493. zIndex: _zIndex.default,
  20494. debounce: _debounce.default,
  20495. throttle: _throttle.default,
  20496. mixin: _mixin.default,
  20497. mpMixin: _mpMixin.default,
  20498. props: _props.default },
  20499. _index.default), {}, {
  20500. color: _color.default,
  20501. platform: _platform.default });
  20502. // $u挂载到uni对象上
  20503. uni.$u = $u;
  20504. var install = function install(Vue) {
  20505. // 时间格式化,同时两个名称,date和timeFormat
  20506. Vue.filter('timeFormat', function (timestamp, format) {return uni.$u.timeFormat(timestamp, format);});
  20507. Vue.filter('date', function (timestamp, format) {return uni.$u.timeFormat(timestamp, format);});
  20508. // 将多久以前的方法,注入到全局过滤器
  20509. Vue.filter('timeFrom', function (timestamp, format) {return uni.$u.timeFrom(timestamp, format);});
  20510. // 同时挂载到uni和Vue.prototype中
  20511. // 只有vue,挂载到Vue.prototype才有意义,因为nvue中全局Vue.prototype和Vue.mixin是无效的
  20512. Vue.prototype.$u = $u;
  20513. Vue.mixin(_mixin.default);
  20514. };var _default =
  20515. {
  20516. install: install };exports.default = _default;
  20517. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["default"]))
  20518. /***/ }),
  20519. /***/ 55:
  20520. /*!*******************************************************************************!*\
  20521. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/mixin/mixin.js ***!
  20522. \*******************************************************************************/
  20523. /*! no static exports found */
  20524. /***/ (function(module, exports, __webpack_require__) {
  20525. /* WEBPACK VAR INJECTION */(function(uni) {module.exports = {
  20526. // 定义每个组件都可能需要用到的外部样式以及类名
  20527. props: {
  20528. // 每个组件都有的父组件传递的样式,可以为字符串或者对象形式
  20529. customStyle: {
  20530. type: [Object, String],
  20531. default: function _default() {return {};} },
  20532. customClass: {
  20533. type: String,
  20534. default: '' },
  20535. // 跳转的页面路径
  20536. url: {
  20537. type: String,
  20538. default: '' },
  20539. // 页面跳转的类型
  20540. linkType: {
  20541. type: String,
  20542. default: 'navigateTo' } },
  20543. data: function data() {
  20544. return {};
  20545. },
  20546. onLoad: function onLoad() {
  20547. // getRect挂载到$u上,因为这方法需要使用in(this),所以无法把它独立成一个单独的文件导出
  20548. this.$u.getRect = this.$uGetRect;
  20549. },
  20550. created: function created() {
  20551. // 组件当中,只有created声明周期,为了能在组件使用,故也在created中将方法挂载到$u
  20552. this.$u.getRect = this.$uGetRect;
  20553. },
  20554. computed: {
  20555. // 在2.x版本中,将会把$u挂载到uni对象下,导致在模板中无法使用uni.$u.xxx形式
  20556. // 所以这里通过computed计算属性将其附加到this.$u上,就可以在模板或者js中使用uni.$u.xxx
  20557. // 只在nvue环境通过此方式引入完整的$u,其他平台会出现性能问题,非nvue则按需引入(主要原因是props过大)
  20558. $u: function $u() {
  20559. // 在非nvue端,移除props,http,mixin等对象,避免在小程序setData时数据过大影响性能
  20560. return uni.$u.deepMerge(uni.$u, {
  20561. props: undefined,
  20562. http: undefined,
  20563. mixin: undefined });
  20564. },
  20565. /**
  20566. * 生成bem规则类名
  20567. * 由于微信小程序,H5,nvue之间绑定class的差异,无法通过:class="[bem()]"的形式进行同用
  20568. * 故采用如下折中做法,最后返回的是数组(一般平台)或字符串(支付宝和字节跳动平台),类似['a', 'b', 'c']或'a b c'的形式
  20569. * @param {String} name 组件名称
  20570. * @param {Array} fixed 一直会存在的类名
  20571. * @param {Array} change 会根据变量值为true或者false而出现或者隐藏的类名
  20572. * @returns {Array|string}
  20573. */
  20574. bem: function bem() {
  20575. return function (name, fixed, change) {var _this = this;
  20576. // 类名前缀
  20577. var prefix = "u-".concat(name, "--");
  20578. var classes = {};
  20579. if (fixed) {
  20580. fixed.map(function (item) {
  20581. // 这里的类名,会一直存在
  20582. classes[prefix + _this[item]] = true;
  20583. });
  20584. }
  20585. if (change) {
  20586. change.map(function (item) {
  20587. // 这里的类名,会根据this[item]的值为true或者false,而进行添加或者移除某一个类
  20588. _this[item] ? classes[prefix + item] = _this[item] : delete classes[prefix + item];
  20589. });
  20590. }
  20591. return Object.keys(classes);
  20592. // 支付宝,头条小程序无法动态绑定一个数组类名,否则解析出来的结果会带有",",而导致失效
  20593. };
  20594. } },
  20595. methods: {
  20596. // 跳转某一个页面
  20597. openPage: function openPage() {var urlKey = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'url';
  20598. var url = this[urlKey];
  20599. if (url) {
  20600. // 执行类似uni.navigateTo的方法
  20601. uni[this.linkType]({
  20602. url: url });
  20603. }
  20604. },
  20605. // 查询节点信息
  20606. // 目前此方法在支付宝小程序中无法获取组件跟接点的尺寸,为支付宝的bug(2020-07-21)
  20607. // 解决办法为在组件根部再套一个没有任何作用的view元素
  20608. $uGetRect: function $uGetRect(selector, all) {var _this2 = this;
  20609. return new Promise(function (resolve) {
  20610. uni.createSelectorQuery().
  20611. in(_this2)[all ? 'selectAll' : 'select'](selector).
  20612. boundingClientRect(function (rect) {
  20613. if (all && Array.isArray(rect) && rect.length) {
  20614. resolve(rect);
  20615. }
  20616. if (!all && rect) {
  20617. resolve(rect);
  20618. }
  20619. }).
  20620. exec();
  20621. });
  20622. },
  20623. getParentData: function getParentData() {var _this3 = this;var parentName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
  20624. // 避免在created中去定义parent变量
  20625. if (!this.parent) this.parent = {};
  20626. // 这里的本质原理是,通过获取父组件实例(也即类似u-radio的父组件u-radio-group的this)
  20627. // 将父组件this中对应的参数,赋值给本组件(u-radio的this)的parentData对象中对应的属性
  20628. // 之所以需要这么做,是因为所有端中,头条小程序不支持通过this.parent.xxx去监听父组件参数的变化
  20629. // 此处并不会自动更新子组件的数据,而是依赖父组件u-radio-group去监听data的变化,手动调用更新子组件的方法去重新获取
  20630. this.parent = uni.$u.$parent.call(this, parentName);
  20631. if (this.parent.children) {
  20632. // 如果父组件的children不存在本组件的实例,才将本实例添加到父组件的children中
  20633. this.parent.children.indexOf(this) === -1 && this.parent.children.push(this);
  20634. }
  20635. if (this.parent && this.parentData) {
  20636. // 历遍parentData中的属性,将parent中的同名属性赋值给parentData
  20637. Object.keys(this.parentData).map(function (key) {
  20638. _this3.parentData[key] = _this3.parent[key];
  20639. });
  20640. }
  20641. },
  20642. // 阻止事件冒泡
  20643. preventEvent: function preventEvent(e) {
  20644. e && typeof e.stopPropagation === 'function' && e.stopPropagation();
  20645. },
  20646. // 空操作
  20647. noop: function noop(e) {
  20648. this.preventEvent(e);
  20649. } },
  20650. onReachBottom: function onReachBottom() {
  20651. uni.$emit('uOnReachBottom');
  20652. },
  20653. beforeDestroy: function beforeDestroy() {var _this4 = this;
  20654. // 判断当前页面是否存在parent和chldren,一般在checkbox和checkbox-group父子联动的场景会有此情况
  20655. // 组件销毁时,移除子组件在父组件children数组中的实例,释放资源,避免数据混乱
  20656. if (this.parent && uni.$u.test.array(this.parent.children)) {
  20657. // 组件销毁时,移除父组件中的children数组中对应的实例
  20658. var childrenList = this.parent.children;
  20659. childrenList.map(function (child, index) {
  20660. // 如果相等,则移除
  20661. if (child === _this4) {
  20662. childrenList.splice(index, 1);
  20663. }
  20664. });
  20665. }
  20666. } };
  20667. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["default"]))
  20668. /***/ }),
  20669. /***/ 56:
  20670. /*!*********************************************************************************!*\
  20671. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/mixin/mpMixin.js ***!
  20672. \*********************************************************************************/
  20673. /*! no static exports found */
  20674. /***/ (function(module, exports, __webpack_require__) {
  20675. "use strict";
  20676. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _default = {
  20677. // 将自定义节点设置成虚拟的,更加接近Vue组件的表现,能更好的使用flex属性
  20678. options: {
  20679. virtualHost: true } };exports.default = _default;
  20680. /***/ }),
  20681. /***/ 57:
  20682. /*!**************************************************************************************!*\
  20683. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/luch-request/index.js ***!
  20684. \**************************************************************************************/
  20685. /*! no static exports found */
  20686. /***/ (function(module, exports, __webpack_require__) {
  20687. "use strict";
  20688. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _Request = _interopRequireDefault(__webpack_require__(/*! ./core/Request */ 58));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}var _default =
  20689. _Request.default;exports.default = _default;
  20690. /***/ }),
  20691. /***/ 58:
  20692. /*!*********************************************************************************************!*\
  20693. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/luch-request/core/Request.js ***!
  20694. \*********************************************************************************************/
  20695. /*! no static exports found */
  20696. /***/ (function(module, exports, __webpack_require__) {
  20697. "use strict";
  20698. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;
  20699. var _dispatchRequest = _interopRequireDefault(__webpack_require__(/*! ./dispatchRequest */ 59));
  20700. var _InterceptorManager = _interopRequireDefault(__webpack_require__(/*! ./InterceptorManager */ 67));
  20701. var _mergeConfig = _interopRequireDefault(__webpack_require__(/*! ./mergeConfig */ 68));
  20702. var _defaults = _interopRequireDefault(__webpack_require__(/*! ./defaults */ 69));
  20703. var _utils = __webpack_require__(/*! ../utils */ 62);
  20704. var _clone = _interopRequireDefault(__webpack_require__(/*! ../utils/clone */ 70));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function ownKeys(object, enumerableOnly) {var keys = Object.keys(object);if (Object.getOwnPropertySymbols) {var symbols = Object.getOwnPropertySymbols(object);if (enumerableOnly) symbols = symbols.filter(function (sym) {return Object.getOwnPropertyDescriptor(object, sym).enumerable;});keys.push.apply(keys, symbols);}return keys;}function _objectSpread(target) {for (var i = 1; i < arguments.length; i++) {var source = arguments[i] != null ? arguments[i] : {};if (i % 2) {ownKeys(Object(source), true).forEach(function (key) {_defineProperty(target, key, source[key]);});} else if (Object.getOwnPropertyDescriptors) {Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));} else {ownKeys(Object(source)).forEach(function (key) {Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));});}}return target;}function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;}function _classCallCheck(instance, Constructor) {if (!(instance instanceof Constructor)) {throw new TypeError("Cannot call a class as a function");}}function _defineProperties(target, props) {for (var i = 0; i < props.length; i++) {var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ("value" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);}}function _createClass(Constructor, protoProps, staticProps) {if (protoProps) _defineProperties(Constructor.prototype, protoProps);if (staticProps) _defineProperties(Constructor, staticProps);return Constructor;}var
  20705. Request = /*#__PURE__*/function () {
  20706. /**
  20707. * @param {Object} arg - 全局配置
  20708. * @param {String} arg.baseURL - 全局根路径
  20709. * @param {Object} arg.header - 全局header
  20710. * @param {String} arg.method = [GET|POST|PUT|DELETE|CONNECT|HEAD|OPTIONS|TRACE] - 全局默认请求方式
  20711. * @param {String} arg.dataType = [json] - 全局默认的dataType
  20712. * @param {String} arg.responseType = [text|arraybuffer] - 全局默认的responseType。支付宝小程序不支持
  20713. * @param {Object} arg.custom - 全局默认的自定义参数
  20714. * @param {Number} arg.timeout - 全局默认的超时时间,单位 ms。默认60000。H5(HBuilderX 2.9.9+)、APP(HBuilderX 2.9.9+)、微信小程序(2.10.0)、支付宝小程序
  20715. * @param {Boolean} arg.sslVerify - 全局默认的是否验证 ssl 证书。默认true.仅App安卓端支持(HBuilderX 2.3.3+)
  20716. * @param {Boolean} arg.withCredentials - 全局默认的跨域请求时是否携带凭证(cookies)。默认false。仅H5支持(HBuilderX 2.6.15+)
  20717. * @param {Boolean} arg.firstIpv4 - 全DNS解析时优先使用ipv4。默认false。仅 App-Android 支持 (HBuilderX 2.8.0+)
  20718. * @param {Function(statusCode):Boolean} arg.validateStatus - 全局默认的自定义验证器。默认statusCode >= 200 && statusCode < 300
  20719. */
  20720. function Request() {var arg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};_classCallCheck(this, Request);
  20721. if (!(0, _utils.isPlainObject)(arg)) {
  20722. arg = {};
  20723. console.warn('设置全局参数必须接收一个Object');
  20724. }
  20725. this.config = (0, _clone.default)(_objectSpread(_objectSpread({}, _defaults.default), arg));
  20726. this.interceptors = {
  20727. request: new _InterceptorManager.default(),
  20728. response: new _InterceptorManager.default() };
  20729. }
  20730. /**
  20731. * @Function
  20732. * @param {Request~setConfigCallback} f - 设置全局默认配置
  20733. */_createClass(Request, [{ key: "setConfig", value: function setConfig(
  20734. f) {
  20735. this.config = f(this.config);
  20736. } }, { key: "middleware", value: function middleware(
  20737. config) {
  20738. config = (0, _mergeConfig.default)(this.config, config);
  20739. var chain = [_dispatchRequest.default, undefined];
  20740. var promise = Promise.resolve(config);
  20741. this.interceptors.request.forEach(function (interceptor) {
  20742. chain.unshift(interceptor.fulfilled, interceptor.rejected);
  20743. });
  20744. this.interceptors.response.forEach(function (interceptor) {
  20745. chain.push(interceptor.fulfilled, interceptor.rejected);
  20746. });
  20747. while (chain.length) {
  20748. promise = promise.then(chain.shift(), chain.shift());
  20749. }
  20750. return promise;
  20751. }
  20752. /**
  20753. * @Function
  20754. * @param {Object} config - 请求配置项
  20755. * @prop {String} options.url - 请求路径
  20756. * @prop {Object} options.data - 请求参数
  20757. * @prop {Object} [options.responseType = config.responseType] [text|arraybuffer] - 响应的数据类型
  20758. * @prop {Object} [options.dataType = config.dataType] - 如果设为 json,会尝试对返回的数据做一次 JSON.parse
  20759. * @prop {Object} [options.header = config.header] - 请求header
  20760. * @prop {Object} [options.method = config.method] - 请求方法
  20761. * @returns {Promise<unknown>}
  20762. */ }, { key: "request", value: function request()
  20763. {var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  20764. return this.middleware(config);
  20765. } }, { key: "get", value: function get(
  20766. url) {var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  20767. return this.middleware(_objectSpread({
  20768. url: url,
  20769. method: 'GET' },
  20770. options));
  20771. } }, { key: "post", value: function post(
  20772. url, data) {var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
  20773. return this.middleware(_objectSpread({
  20774. url: url,
  20775. data: data,
  20776. method: 'POST' },
  20777. options));
  20778. } }, { key: "put", value: function put(
  20779. url, data) {var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
  20780. return this.middleware(_objectSpread({
  20781. url: url,
  20782. data: data,
  20783. method: 'PUT' },
  20784. options));
  20785. } }, { key: "delete", value: function _delete(
  20786. url, data) {var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
  20787. return this.middleware(_objectSpread({
  20788. url: url,
  20789. data: data,
  20790. method: 'DELETE' },
  20791. options));
  20792. } }, { key: "connect", value: function connect(
  20793. url, data) {var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
  20794. return this.middleware(_objectSpread({
  20795. url: url,
  20796. data: data,
  20797. method: 'CONNECT' },
  20798. options));
  20799. } }, { key: "head", value: function head(
  20800. url, data) {var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
  20801. return this.middleware(_objectSpread({
  20802. url: url,
  20803. data: data,
  20804. method: 'HEAD' },
  20805. options));
  20806. } }, { key: "options", value: function options(
  20807. url, data) {var _options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
  20808. return this.middleware(_objectSpread({
  20809. url: url,
  20810. data: data,
  20811. method: 'OPTIONS' },
  20812. _options));
  20813. } }, { key: "trace", value: function trace(
  20814. url, data) {var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
  20815. return this.middleware(_objectSpread({
  20816. url: url,
  20817. data: data,
  20818. method: 'TRACE' },
  20819. options));
  20820. } }, { key: "upload", value: function upload(
  20821. url) {var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  20822. config.url = url;
  20823. config.method = 'UPLOAD';
  20824. return this.middleware(config);
  20825. } }, { key: "download", value: function download(
  20826. url) {var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  20827. config.url = url;
  20828. config.method = 'DOWNLOAD';
  20829. return this.middleware(config);
  20830. } }]);return Request;}();
  20831. /**
  20832. * setConfig回调
  20833. * @return {Object} - 返回操作后的config
  20834. * @callback Request~setConfigCallback
  20835. * @param {Object} config - 全局默认config
  20836. */exports.default = Request;
  20837. /***/ }),
  20838. /***/ 59:
  20839. /*!*****************************************************************************************************!*\
  20840. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/luch-request/core/dispatchRequest.js ***!
  20841. \*****************************************************************************************************/
  20842. /*! no static exports found */
  20843. /***/ (function(module, exports, __webpack_require__) {
  20844. "use strict";
  20845. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _index = _interopRequireDefault(__webpack_require__(/*! ../adapters/index */ 60));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}var _default =
  20846. function _default(config) {return (0, _index.default)(config);};exports.default = _default;
  20847. /***/ }),
  20848. /***/ 60:
  20849. /*!***********************************************************************************************!*\
  20850. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/luch-request/adapters/index.js ***!
  20851. \***********************************************************************************************/
  20852. /*! no static exports found */
  20853. /***/ (function(module, exports, __webpack_require__) {
  20854. "use strict";
  20855. /* WEBPACK VAR INJECTION */(function(uni) {Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _buildURL = _interopRequireDefault(__webpack_require__(/*! ../helpers/buildURL */ 61));
  20856. var _buildFullPath = _interopRequireDefault(__webpack_require__(/*! ../core/buildFullPath */ 63));
  20857. var _settle = _interopRequireDefault(__webpack_require__(/*! ../core/settle */ 66));
  20858. var _utils = __webpack_require__(/*! ../utils */ 62);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function ownKeys(object, enumerableOnly) {var keys = Object.keys(object);if (Object.getOwnPropertySymbols) {var symbols = Object.getOwnPropertySymbols(object);if (enumerableOnly) symbols = symbols.filter(function (sym) {return Object.getOwnPropertyDescriptor(object, sym).enumerable;});keys.push.apply(keys, symbols);}return keys;}function _objectSpread(target) {for (var i = 1; i < arguments.length; i++) {var source = arguments[i] != null ? arguments[i] : {};if (i % 2) {ownKeys(Object(source), true).forEach(function (key) {_defineProperty(target, key, source[key]);});} else if (Object.getOwnPropertyDescriptors) {Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));} else {ownKeys(Object(source)).forEach(function (key) {Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));});}}return target;}function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;}
  20859. /**
  20860. * 返回可选值存在的配置
  20861. * @param {Array} keys - 可选值数组
  20862. * @param {Object} config2 - 配置
  20863. * @return {{}} - 存在的配置项
  20864. */
  20865. var mergeKeys = function mergeKeys(keys, config2) {
  20866. var config = {};
  20867. keys.forEach(function (prop) {
  20868. if (!(0, _utils.isUndefined)(config2[prop])) {
  20869. config[prop] = config2[prop];
  20870. }
  20871. });
  20872. return config;
  20873. };var _default =
  20874. function _default(config) {return new Promise(function (resolve, reject) {
  20875. var fullPath = (0, _buildURL.default)((0, _buildFullPath.default)(config.baseURL, config.url), config.params);
  20876. var _config = {
  20877. url: fullPath,
  20878. header: config.header,
  20879. complete: function complete(response) {
  20880. config.fullPath = fullPath;
  20881. response.config = config;
  20882. try {
  20883. // 对可能字符串不是json 的情况容错
  20884. if (typeof response.data === 'string') {
  20885. response.data = JSON.parse(response.data);
  20886. }
  20887. // eslint-disable-next-line no-empty
  20888. } catch (e) {
  20889. }
  20890. (0, _settle.default)(resolve, reject, response);
  20891. } };
  20892. var requestTask;
  20893. if (config.method === 'UPLOAD') {
  20894. delete _config.header['content-type'];
  20895. delete _config.header['Content-Type'];
  20896. var otherConfig = {
  20897. filePath: config.filePath,
  20898. name: config.name };
  20899. var optionalKeys = [
  20900. 'formData'];
  20901. requestTask = uni.uploadFile(_objectSpread(_objectSpread(_objectSpread({}, _config), otherConfig), mergeKeys(optionalKeys, config)));
  20902. } else if (config.method === 'DOWNLOAD') {
  20903. requestTask = uni.downloadFile(_config);
  20904. } else {
  20905. var _optionalKeys = [
  20906. 'data',
  20907. 'method',
  20908. 'timeout',
  20909. 'dataType',
  20910. 'responseType'];
  20911. requestTask = uni.request(_objectSpread(_objectSpread({}, _config), mergeKeys(_optionalKeys, config)));
  20912. }
  20913. if (config.getTask) {
  20914. config.getTask(requestTask, config);
  20915. }
  20916. });};exports.default = _default;
  20917. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["default"]))
  20918. /***/ }),
  20919. /***/ 61:
  20920. /*!*************************************************************************************************!*\
  20921. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/luch-request/helpers/buildURL.js ***!
  20922. \*************************************************************************************************/
  20923. /*! no static exports found */
  20924. /***/ (function(module, exports, __webpack_require__) {
  20925. "use strict";
  20926. Object.defineProperty(exports, "__esModule", { value: true });exports.default = buildURL;
  20927. var utils = _interopRequireWildcard(__webpack_require__(/*! ../utils */ 62));function _getRequireWildcardCache() {if (typeof WeakMap !== "function") return null;var cache = new WeakMap();_getRequireWildcardCache = function _getRequireWildcardCache() {return cache;};return cache;}function _interopRequireWildcard(obj) {if (obj && obj.__esModule) {return obj;}if (obj === null || typeof obj !== "object" && typeof obj !== "function") {return { default: obj };}var cache = _getRequireWildcardCache();if (cache && cache.has(obj)) {return cache.get(obj);}var newObj = {};var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var key in obj) {if (Object.prototype.hasOwnProperty.call(obj, key)) {var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;if (desc && (desc.get || desc.set)) {Object.defineProperty(newObj, key, desc);} else {newObj[key] = obj[key];}}}newObj.default = obj;if (cache) {cache.set(obj, newObj);}return newObj;}
  20928. function encode(val) {
  20929. return encodeURIComponent(val).
  20930. replace(/%40/gi, '@').
  20931. replace(/%3A/gi, ':').
  20932. replace(/%24/g, '$').
  20933. replace(/%2C/gi, ',').
  20934. replace(/%20/g, '+').
  20935. replace(/%5B/gi, '[').
  20936. replace(/%5D/gi, ']');
  20937. }
  20938. /**
  20939. * Build a URL by appending params to the end
  20940. *
  20941. * @param {string} url The base of the url (e.g., http://www.google.com)
  20942. * @param {object} [params] The params to be appended
  20943. * @returns {string} The formatted url
  20944. */
  20945. function buildURL(url, params) {
  20946. /* eslint no-param-reassign:0 */
  20947. if (!params) {
  20948. return url;
  20949. }
  20950. var serializedParams;
  20951. if (utils.isURLSearchParams(params)) {
  20952. serializedParams = params.toString();
  20953. } else {
  20954. var parts = [];
  20955. utils.forEach(params, function (val, key) {
  20956. if (val === null || typeof val === 'undefined') {
  20957. return;
  20958. }
  20959. if (utils.isArray(val)) {
  20960. key = "".concat(key, "[]");
  20961. } else {
  20962. val = [val];
  20963. }
  20964. utils.forEach(val, function (v) {
  20965. if (utils.isDate(v)) {
  20966. v = v.toISOString();
  20967. } else if (utils.isObject(v)) {
  20968. v = JSON.stringify(v);
  20969. }
  20970. parts.push("".concat(encode(key), "=").concat(encode(v)));
  20971. });
  20972. });
  20973. serializedParams = parts.join('&');
  20974. }
  20975. if (serializedParams) {
  20976. var hashmarkIndex = url.indexOf('#');
  20977. if (hashmarkIndex !== -1) {
  20978. url = url.slice(0, hashmarkIndex);
  20979. }
  20980. url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;
  20981. }
  20982. return url;
  20983. }
  20984. /***/ }),
  20985. /***/ 62:
  20986. /*!**************************************************************************************!*\
  20987. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/luch-request/utils.js ***!
  20988. \**************************************************************************************/
  20989. /*! no static exports found */
  20990. /***/ (function(module, exports, __webpack_require__) {
  20991. "use strict";
  20992. // utils is a library of generic helper functions non-specific to axios
  20993. Object.defineProperty(exports, "__esModule", { value: true });exports.isArray = isArray;exports.isObject = isObject;exports.isDate = isDate;exports.isURLSearchParams = isURLSearchParams;exports.forEach = forEach;exports.isBoolean = isBoolean;exports.isPlainObject = isPlainObject;exports.deepMerge = deepMerge;exports.isUndefined = isUndefined;var
  20994. toString = Object.prototype.toString;
  20995. /**
  20996. * Determine if a value is an Array
  20997. *
  20998. * @param {Object} val The value to test
  20999. * @returns {boolean} True if value is an Array, otherwise false
  21000. */
  21001. function isArray(val) {
  21002. return toString.call(val) === '[object Array]';
  21003. }
  21004. /**
  21005. * Determine if a value is an Object
  21006. *
  21007. * @param {Object} val The value to test
  21008. * @returns {boolean} True if value is an Object, otherwise false
  21009. */
  21010. function isObject(val) {
  21011. return val !== null && typeof val === 'object';
  21012. }
  21013. /**
  21014. * Determine if a value is a Date
  21015. *
  21016. * @param {Object} val The value to test
  21017. * @returns {boolean} True if value is a Date, otherwise false
  21018. */
  21019. function isDate(val) {
  21020. return toString.call(val) === '[object Date]';
  21021. }
  21022. /**
  21023. * Determine if a value is a URLSearchParams object
  21024. *
  21025. * @param {Object} val The value to test
  21026. * @returns {boolean} True if value is a URLSearchParams object, otherwise false
  21027. */
  21028. function isURLSearchParams(val) {
  21029. return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;
  21030. }
  21031. /**
  21032. * Iterate over an Array or an Object invoking a function for each item.
  21033. *
  21034. * If `obj` is an Array callback will be called passing
  21035. * the value, index, and complete array for each item.
  21036. *
  21037. * If 'obj' is an Object callback will be called passing
  21038. * the value, key, and complete object for each property.
  21039. *
  21040. * @param {Object|Array} obj The object to iterate
  21041. * @param {Function} fn The callback to invoke for each item
  21042. */
  21043. function forEach(obj, fn) {
  21044. // Don't bother if no value provided
  21045. if (obj === null || typeof obj === 'undefined') {
  21046. return;
  21047. }
  21048. // Force an array if not already something iterable
  21049. if (typeof obj !== 'object') {
  21050. /* eslint no-param-reassign:0 */
  21051. obj = [obj];
  21052. }
  21053. if (isArray(obj)) {
  21054. // Iterate over array values
  21055. for (var i = 0, l = obj.length; i < l; i++) {
  21056. fn.call(null, obj[i], i, obj);
  21057. }
  21058. } else {
  21059. // Iterate over object keys
  21060. for (var key in obj) {
  21061. if (Object.prototype.hasOwnProperty.call(obj, key)) {
  21062. fn.call(null, obj[key], key, obj);
  21063. }
  21064. }
  21065. }
  21066. }
  21067. /**
  21068. * 是否为boolean 值
  21069. * @param val
  21070. * @returns {boolean}
  21071. */
  21072. function isBoolean(val) {
  21073. return typeof val === 'boolean';
  21074. }
  21075. /**
  21076. * 是否为真正的对象{} new Object
  21077. * @param {any} obj - 检测的对象
  21078. * @returns {boolean}
  21079. */
  21080. function isPlainObject(obj) {
  21081. return Object.prototype.toString.call(obj) === '[object Object]';
  21082. }
  21083. /**
  21084. * Function equal to merge with the difference being that no reference
  21085. * to original objects is kept.
  21086. *
  21087. * @see merge
  21088. * @param {Object} obj1 Object to merge
  21089. * @returns {Object} Result of all merge properties
  21090. */
  21091. function deepMerge() /* obj1, obj2, obj3, ... */{
  21092. var result = {};
  21093. function assignValue(val, key) {
  21094. if (typeof result[key] === 'object' && typeof val === 'object') {
  21095. result[key] = deepMerge(result[key], val);
  21096. } else if (typeof val === 'object') {
  21097. result[key] = deepMerge({}, val);
  21098. } else {
  21099. result[key] = val;
  21100. }
  21101. }
  21102. for (var i = 0, l = arguments.length; i < l; i++) {
  21103. forEach(arguments[i], assignValue);
  21104. }
  21105. return result;
  21106. }
  21107. function isUndefined(val) {
  21108. return typeof val === 'undefined';
  21109. }
  21110. /***/ }),
  21111. /***/ 63:
  21112. /*!***************************************************************************************************!*\
  21113. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/luch-request/core/buildFullPath.js ***!
  21114. \***************************************************************************************************/
  21115. /*! no static exports found */
  21116. /***/ (function(module, exports, __webpack_require__) {
  21117. "use strict";
  21118. Object.defineProperty(exports, "__esModule", { value: true });exports.default = buildFullPath;
  21119. var _isAbsoluteURL = _interopRequireDefault(__webpack_require__(/*! ../helpers/isAbsoluteURL */ 64));
  21120. var _combineURLs = _interopRequireDefault(__webpack_require__(/*! ../helpers/combineURLs */ 65));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}
  21121. /**
  21122. * Creates a new URL by combining the baseURL with the requestedURL,
  21123. * only when the requestedURL is not already an absolute URL.
  21124. * If the requestURL is absolute, this function returns the requestedURL untouched.
  21125. *
  21126. * @param {string} baseURL The base URL
  21127. * @param {string} requestedURL Absolute or relative URL to combine
  21128. * @returns {string} The combined full path
  21129. */
  21130. function buildFullPath(baseURL, requestedURL) {
  21131. if (baseURL && !(0, _isAbsoluteURL.default)(requestedURL)) {
  21132. return (0, _combineURLs.default)(baseURL, requestedURL);
  21133. }
  21134. return requestedURL;
  21135. }
  21136. /***/ }),
  21137. /***/ 64:
  21138. /*!******************************************************************************************************!*\
  21139. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/luch-request/helpers/isAbsoluteURL.js ***!
  21140. \******************************************************************************************************/
  21141. /*! no static exports found */
  21142. /***/ (function(module, exports, __webpack_require__) {
  21143. "use strict";
  21144. /**
  21145. * Determines whether the specified URL is absolute
  21146. *
  21147. * @param {string} url The URL to test
  21148. * @returns {boolean} True if the specified URL is absolute, otherwise false
  21149. */Object.defineProperty(exports, "__esModule", { value: true });exports.default = isAbsoluteURL;
  21150. function isAbsoluteURL(url) {
  21151. // A URL is considered absolute if it begins with "<scheme>://" or "//" (protocol-relative URL).
  21152. // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed
  21153. // by any combination of letters, digits, plus, period, or hyphen.
  21154. return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url);
  21155. }
  21156. /***/ }),
  21157. /***/ 65:
  21158. /*!****************************************************************************************************!*\
  21159. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/luch-request/helpers/combineURLs.js ***!
  21160. \****************************************************************************************************/
  21161. /*! no static exports found */
  21162. /***/ (function(module, exports, __webpack_require__) {
  21163. "use strict";
  21164. /**
  21165. * Creates a new URL by combining the specified URLs
  21166. *
  21167. * @param {string} baseURL The base URL
  21168. * @param {string} relativeURL The relative URL
  21169. * @returns {string} The combined URL
  21170. */Object.defineProperty(exports, "__esModule", { value: true });exports.default = combineURLs;
  21171. function combineURLs(baseURL, relativeURL) {
  21172. return relativeURL ? "".concat(
  21173. baseURL.replace(/\/+$/, ''), "/").concat(relativeURL.replace(/^\/+/, '')) :
  21174. baseURL;
  21175. }
  21176. /***/ }),
  21177. /***/ 66:
  21178. /*!********************************************************************************************!*\
  21179. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/luch-request/core/settle.js ***!
  21180. \********************************************************************************************/
  21181. /*! no static exports found */
  21182. /***/ (function(module, exports, __webpack_require__) {
  21183. "use strict";
  21184. Object.defineProperty(exports, "__esModule", { value: true });exports.default = settle; /**
  21185. * Resolve or reject a Promise based on response status.
  21186. *
  21187. * @param {Function} resolve A function that resolves the promise.
  21188. * @param {Function} reject A function that rejects the promise.
  21189. * @param {object} response The response.
  21190. */
  21191. function settle(resolve, reject, response) {var
  21192. validateStatus = response.config.validateStatus;
  21193. var status = response.statusCode;
  21194. if (status && (!validateStatus || validateStatus(status))) {
  21195. resolve(response);
  21196. } else {
  21197. reject(response);
  21198. }
  21199. }
  21200. /***/ }),
  21201. /***/ 67:
  21202. /*!********************************************************************************************************!*\
  21203. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/luch-request/core/InterceptorManager.js ***!
  21204. \********************************************************************************************************/
  21205. /*! no static exports found */
  21206. /***/ (function(module, exports, __webpack_require__) {
  21207. "use strict";
  21208. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;
  21209. function InterceptorManager() {
  21210. this.handlers = [];
  21211. }
  21212. /**
  21213. * Add a new interceptor to the stack
  21214. *
  21215. * @param {Function} fulfilled The function to handle `then` for a `Promise`
  21216. * @param {Function} rejected The function to handle `reject` for a `Promise`
  21217. *
  21218. * @return {Number} An ID used to remove interceptor later
  21219. */
  21220. InterceptorManager.prototype.use = function use(fulfilled, rejected) {
  21221. this.handlers.push({
  21222. fulfilled: fulfilled,
  21223. rejected: rejected });
  21224. return this.handlers.length - 1;
  21225. };
  21226. /**
  21227. * Remove an interceptor from the stack
  21228. *
  21229. * @param {Number} id The ID that was returned by `use`
  21230. */
  21231. InterceptorManager.prototype.eject = function eject(id) {
  21232. if (this.handlers[id]) {
  21233. this.handlers[id] = null;
  21234. }
  21235. };
  21236. /**
  21237. * Iterate over all the registered interceptors
  21238. *
  21239. * This method is particularly useful for skipping over any
  21240. * interceptors that may have become `null` calling `eject`.
  21241. *
  21242. * @param {Function} fn The function to call for each interceptor
  21243. */
  21244. InterceptorManager.prototype.forEach = function forEach(fn) {
  21245. this.handlers.forEach(function (h) {
  21246. if (h !== null) {
  21247. fn(h);
  21248. }
  21249. });
  21250. };var _default =
  21251. InterceptorManager;exports.default = _default;
  21252. /***/ }),
  21253. /***/ 68:
  21254. /*!*************************************************************************************************!*\
  21255. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/luch-request/core/mergeConfig.js ***!
  21256. \*************************************************************************************************/
  21257. /*! no static exports found */
  21258. /***/ (function(module, exports, __webpack_require__) {
  21259. "use strict";
  21260. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _utils = __webpack_require__(/*! ../utils */ 62);function ownKeys(object, enumerableOnly) {var keys = Object.keys(object);if (Object.getOwnPropertySymbols) {var symbols = Object.getOwnPropertySymbols(object);if (enumerableOnly) symbols = symbols.filter(function (sym) {return Object.getOwnPropertyDescriptor(object, sym).enumerable;});keys.push.apply(keys, symbols);}return keys;}function _objectSpread(target) {for (var i = 1; i < arguments.length; i++) {var source = arguments[i] != null ? arguments[i] : {};if (i % 2) {ownKeys(Object(source), true).forEach(function (key) {_defineProperty(target, key, source[key]);});} else if (Object.getOwnPropertyDescriptors) {Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));} else {ownKeys(Object(source)).forEach(function (key) {Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));});}}return target;}function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;}
  21261. /**
  21262. * 合并局部配置优先的配置,如果局部有该配置项则用局部,如果全局有该配置项则用全局
  21263. * @param {Array} keys - 配置项
  21264. * @param {Object} globalsConfig - 当前的全局配置
  21265. * @param {Object} config2 - 局部配置
  21266. * @return {{}}
  21267. */
  21268. var mergeKeys = function mergeKeys(keys, globalsConfig, config2) {
  21269. var config = {};
  21270. keys.forEach(function (prop) {
  21271. if (!(0, _utils.isUndefined)(config2[prop])) {
  21272. config[prop] = config2[prop];
  21273. } else if (!(0, _utils.isUndefined)(globalsConfig[prop])) {
  21274. config[prop] = globalsConfig[prop];
  21275. }
  21276. });
  21277. return config;
  21278. };
  21279. /**
  21280. *
  21281. * @param globalsConfig - 当前实例的全局配置
  21282. * @param config2 - 当前的局部配置
  21283. * @return - 合并后的配置
  21284. */var _default =
  21285. function _default(globalsConfig) {var config2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  21286. var method = config2.method || globalsConfig.method || 'GET';
  21287. var config = {
  21288. baseURL: globalsConfig.baseURL || '',
  21289. method: method,
  21290. url: config2.url || '',
  21291. params: config2.params || {},
  21292. custom: _objectSpread(_objectSpread({}, globalsConfig.custom || {}), config2.custom || {}),
  21293. header: (0, _utils.deepMerge)(globalsConfig.header || {}, config2.header || {}) };
  21294. var defaultToConfig2Keys = ['getTask', 'validateStatus'];
  21295. config = _objectSpread(_objectSpread({}, config), mergeKeys(defaultToConfig2Keys, globalsConfig, config2));
  21296. // eslint-disable-next-line no-empty
  21297. if (method === 'DOWNLOAD') {
  21298. } else if (method === 'UPLOAD') {
  21299. delete config.header['content-type'];
  21300. delete config.header['Content-Type'];
  21301. var uploadKeys = [
  21302. 'filePath',
  21303. 'name',
  21304. 'formData'];
  21305. uploadKeys.forEach(function (prop) {
  21306. if (!(0, _utils.isUndefined)(config2[prop])) {
  21307. config[prop] = config2[prop];
  21308. }
  21309. });
  21310. } else {
  21311. var defaultsKeys = [
  21312. 'data',
  21313. 'timeout',
  21314. 'dataType',
  21315. 'responseType'];
  21316. config = _objectSpread(_objectSpread({}, config), mergeKeys(defaultsKeys, globalsConfig, config2));
  21317. }
  21318. return config;
  21319. };exports.default = _default;
  21320. /***/ }),
  21321. /***/ 69:
  21322. /*!**********************************************************************************************!*\
  21323. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/luch-request/core/defaults.js ***!
  21324. \**********************************************************************************************/
  21325. /*! no static exports found */
  21326. /***/ (function(module, exports, __webpack_require__) {
  21327. "use strict";
  21328. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /**
  21329. * 默认的全局配置
  21330. */var _default =
  21331. {
  21332. baseURL: '',
  21333. header: {},
  21334. method: 'GET',
  21335. dataType: 'json',
  21336. responseType: 'text',
  21337. custom: {},
  21338. timeout: 60000,
  21339. validateStatus: function validateStatus(status) {
  21340. return status >= 200 && status < 300;
  21341. } };exports.default = _default;
  21342. /***/ }),
  21343. /***/ 70:
  21344. /*!********************************************************************************************!*\
  21345. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/luch-request/utils/clone.js ***!
  21346. \********************************************************************************************/
  21347. /*! no static exports found */
  21348. /***/ (function(module, exports, __webpack_require__) {
  21349. "use strict";
  21350. /* WEBPACK VAR INJECTION */(function(Buffer) {Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /* eslint-disable */
  21351. var clone = function () {
  21352. 'use strict';
  21353. function _instanceof(obj, type) {
  21354. return type != null && obj instanceof type;
  21355. }
  21356. var nativeMap;
  21357. try {
  21358. nativeMap = Map;
  21359. } catch (_) {
  21360. // maybe a reference error because no `Map`. Give it a dummy value that no
  21361. // value will ever be an instanceof.
  21362. nativeMap = function nativeMap() {};
  21363. }
  21364. var nativeSet;
  21365. try {
  21366. nativeSet = Set;
  21367. } catch (_) {
  21368. nativeSet = function nativeSet() {};
  21369. }
  21370. var nativePromise;
  21371. try {
  21372. nativePromise = Promise;
  21373. } catch (_) {
  21374. nativePromise = function nativePromise() {};
  21375. }
  21376. /**
  21377. * Clones (copies) an Object using deep copying.
  21378. *
  21379. * This function supports circular references by default, but if you are certain
  21380. * there are no circular references in your object, you can save some CPU time
  21381. * by calling clone(obj, false).
  21382. *
  21383. * Caution: if `circular` is false and `parent` contains circular references,
  21384. * your program may enter an infinite loop and crash.
  21385. *
  21386. * @param `parent` - the object to be cloned
  21387. * @param `circular` - set to true if the object to be cloned may contain
  21388. * circular references. (optional - true by default)
  21389. * @param `depth` - set to a number if the object is only to be cloned to
  21390. * a particular depth. (optional - defaults to Infinity)
  21391. * @param `prototype` - sets the prototype to be used when cloning an object.
  21392. * (optional - defaults to parent prototype).
  21393. * @param `includeNonEnumerable` - set to true if the non-enumerable properties
  21394. * should be cloned as well. Non-enumerable properties on the prototype
  21395. * chain will be ignored. (optional - false by default)
  21396. */
  21397. function clone(parent, circular, depth, prototype, includeNonEnumerable) {
  21398. if (typeof circular === 'object') {
  21399. depth = circular.depth;
  21400. prototype = circular.prototype;
  21401. includeNonEnumerable = circular.includeNonEnumerable;
  21402. circular = circular.circular;
  21403. }
  21404. // maintain two arrays for circular references, where corresponding parents
  21405. // and children have the same index
  21406. var allParents = [];
  21407. var allChildren = [];
  21408. var useBuffer = typeof Buffer != 'undefined';
  21409. if (typeof circular == 'undefined')
  21410. circular = true;
  21411. if (typeof depth == 'undefined')
  21412. depth = Infinity;
  21413. // recurse this function so we don't reset allParents and allChildren
  21414. function _clone(parent, depth) {
  21415. // cloning null always returns null
  21416. if (parent === null)
  21417. return null;
  21418. if (depth === 0)
  21419. return parent;
  21420. var child;
  21421. var proto;
  21422. if (typeof parent != 'object') {
  21423. return parent;
  21424. }
  21425. if (_instanceof(parent, nativeMap)) {
  21426. child = new nativeMap();
  21427. } else if (_instanceof(parent, nativeSet)) {
  21428. child = new nativeSet();
  21429. } else if (_instanceof(parent, nativePromise)) {
  21430. child = new nativePromise(function (resolve, reject) {
  21431. parent.then(function (value) {
  21432. resolve(_clone(value, depth - 1));
  21433. }, function (err) {
  21434. reject(_clone(err, depth - 1));
  21435. });
  21436. });
  21437. } else if (clone.__isArray(parent)) {
  21438. child = [];
  21439. } else if (clone.__isRegExp(parent)) {
  21440. child = new RegExp(parent.source, __getRegExpFlags(parent));
  21441. if (parent.lastIndex) child.lastIndex = parent.lastIndex;
  21442. } else if (clone.__isDate(parent)) {
  21443. child = new Date(parent.getTime());
  21444. } else if (useBuffer && Buffer.isBuffer(parent)) {
  21445. if (Buffer.from) {
  21446. // Node.js >= 5.10.0
  21447. child = Buffer.from(parent);
  21448. } else {
  21449. // Older Node.js versions
  21450. child = new Buffer(parent.length);
  21451. parent.copy(child);
  21452. }
  21453. return child;
  21454. } else if (_instanceof(parent, Error)) {
  21455. child = Object.create(parent);
  21456. } else {
  21457. if (typeof prototype == 'undefined') {
  21458. proto = Object.getPrototypeOf(parent);
  21459. child = Object.create(proto);
  21460. } else
  21461. {
  21462. child = Object.create(prototype);
  21463. proto = prototype;
  21464. }
  21465. }
  21466. if (circular) {
  21467. var index = allParents.indexOf(parent);
  21468. if (index != -1) {
  21469. return allChildren[index];
  21470. }
  21471. allParents.push(parent);
  21472. allChildren.push(child);
  21473. }
  21474. if (_instanceof(parent, nativeMap)) {
  21475. parent.forEach(function (value, key) {
  21476. var keyChild = _clone(key, depth - 1);
  21477. var valueChild = _clone(value, depth - 1);
  21478. child.set(keyChild, valueChild);
  21479. });
  21480. }
  21481. if (_instanceof(parent, nativeSet)) {
  21482. parent.forEach(function (value) {
  21483. var entryChild = _clone(value, depth - 1);
  21484. child.add(entryChild);
  21485. });
  21486. }
  21487. for (var i in parent) {
  21488. var attrs = Object.getOwnPropertyDescriptor(parent, i);
  21489. if (attrs) {
  21490. child[i] = _clone(parent[i], depth - 1);
  21491. }
  21492. try {
  21493. var objProperty = Object.getOwnPropertyDescriptor(parent, i);
  21494. if (objProperty.set === 'undefined') {
  21495. // no setter defined. Skip cloning this property
  21496. continue;
  21497. }
  21498. child[i] = _clone(parent[i], depth - 1);
  21499. } catch (e) {
  21500. if (e instanceof TypeError) {
  21501. // when in strict mode, TypeError will be thrown if child[i] property only has a getter
  21502. // we can't do anything about this, other than inform the user that this property cannot be set.
  21503. continue;
  21504. } else if (e instanceof ReferenceError) {
  21505. //this may happen in non strict mode
  21506. continue;
  21507. }
  21508. }
  21509. }
  21510. if (Object.getOwnPropertySymbols) {
  21511. var symbols = Object.getOwnPropertySymbols(parent);
  21512. for (var i = 0; i < symbols.length; i++) {
  21513. // Don't need to worry about cloning a symbol because it is a primitive,
  21514. // like a number or string.
  21515. var symbol = symbols[i];
  21516. var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);
  21517. if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {
  21518. continue;
  21519. }
  21520. child[symbol] = _clone(parent[symbol], depth - 1);
  21521. Object.defineProperty(child, symbol, descriptor);
  21522. }
  21523. }
  21524. if (includeNonEnumerable) {
  21525. var allPropertyNames = Object.getOwnPropertyNames(parent);
  21526. for (var i = 0; i < allPropertyNames.length; i++) {
  21527. var propertyName = allPropertyNames[i];
  21528. var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);
  21529. if (descriptor && descriptor.enumerable) {
  21530. continue;
  21531. }
  21532. child[propertyName] = _clone(parent[propertyName], depth - 1);
  21533. Object.defineProperty(child, propertyName, descriptor);
  21534. }
  21535. }
  21536. return child;
  21537. }
  21538. return _clone(parent, depth);
  21539. }
  21540. /**
  21541. * Simple flat clone using prototype, accepts only objects, usefull for property
  21542. * override on FLAT configuration object (no nested props).
  21543. *
  21544. * USE WITH CAUTION! This may not behave as you wish if you do not know how this
  21545. * works.
  21546. */
  21547. clone.clonePrototype = function clonePrototype(parent) {
  21548. if (parent === null)
  21549. return null;
  21550. var c = function c() {};
  21551. c.prototype = parent;
  21552. return new c();
  21553. };
  21554. // private utility functions
  21555. function __objToStr(o) {
  21556. return Object.prototype.toString.call(o);
  21557. }
  21558. clone.__objToStr = __objToStr;
  21559. function __isDate(o) {
  21560. return typeof o === 'object' && __objToStr(o) === '[object Date]';
  21561. }
  21562. clone.__isDate = __isDate;
  21563. function __isArray(o) {
  21564. return typeof o === 'object' && __objToStr(o) === '[object Array]';
  21565. }
  21566. clone.__isArray = __isArray;
  21567. function __isRegExp(o) {
  21568. return typeof o === 'object' && __objToStr(o) === '[object RegExp]';
  21569. }
  21570. clone.__isRegExp = __isRegExp;
  21571. function __getRegExpFlags(re) {
  21572. var flags = '';
  21573. if (re.global) flags += 'g';
  21574. if (re.ignoreCase) flags += 'i';
  21575. if (re.multiline) flags += 'm';
  21576. return flags;
  21577. }
  21578. clone.__getRegExpFlags = __getRegExpFlags;
  21579. return clone;
  21580. }();var _default =
  21581. clone;exports.default = _default;
  21582. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../../../../wofts/HBuilderX.3.6.3.20220917/HBuilderX/plugins/uniapp-cli/node_modules/buffer/index.js */ 71).Buffer))
  21583. /***/ }),
  21584. /***/ 71:
  21585. /*!**************************************!*\
  21586. !*** ./node_modules/buffer/index.js ***!
  21587. \**************************************/
  21588. /*! no static exports found */
  21589. /***/ (function(module, exports, __webpack_require__) {
  21590. "use strict";
  21591. /* WEBPACK VAR INJECTION */(function(global) {/*!
  21592. * The buffer module from node.js, for the browser.
  21593. *
  21594. * @author Feross Aboukhadijeh <http://feross.org>
  21595. * @license MIT
  21596. */
  21597. /* eslint-disable no-proto */
  21598. var base64 = __webpack_require__(/*! base64-js */ 72)
  21599. var ieee754 = __webpack_require__(/*! ieee754 */ 73)
  21600. var isArray = __webpack_require__(/*! isarray */ 74)
  21601. exports.Buffer = Buffer
  21602. exports.SlowBuffer = SlowBuffer
  21603. exports.INSPECT_MAX_BYTES = 50
  21604. /**
  21605. * If `Buffer.TYPED_ARRAY_SUPPORT`:
  21606. * === true Use Uint8Array implementation (fastest)
  21607. * === false Use Object implementation (most compatible, even IE6)
  21608. *
  21609. * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
  21610. * Opera 11.6+, iOS 4.2+.
  21611. *
  21612. * Due to various browser bugs, sometimes the Object implementation will be used even
  21613. * when the browser supports typed arrays.
  21614. *
  21615. * Note:
  21616. *
  21617. * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
  21618. * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
  21619. *
  21620. * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
  21621. *
  21622. * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
  21623. * incorrect length in some situations.
  21624. * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
  21625. * get the Object implementation, which is slower but behaves correctly.
  21626. */
  21627. Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined
  21628. ? global.TYPED_ARRAY_SUPPORT
  21629. : typedArraySupport()
  21630. /*
  21631. * Export kMaxLength after typed array support is determined.
  21632. */
  21633. exports.kMaxLength = kMaxLength()
  21634. function typedArraySupport () {
  21635. try {
  21636. var arr = new Uint8Array(1)
  21637. arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
  21638. return arr.foo() === 42 && // typed array instances can be augmented
  21639. typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
  21640. arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
  21641. } catch (e) {
  21642. return false
  21643. }
  21644. }
  21645. function kMaxLength () {
  21646. return Buffer.TYPED_ARRAY_SUPPORT
  21647. ? 0x7fffffff
  21648. : 0x3fffffff
  21649. }
  21650. function createBuffer (that, length) {
  21651. if (kMaxLength() < length) {
  21652. throw new RangeError('Invalid typed array length')
  21653. }
  21654. if (Buffer.TYPED_ARRAY_SUPPORT) {
  21655. // Return an augmented `Uint8Array` instance, for best performance
  21656. that = new Uint8Array(length)
  21657. that.__proto__ = Buffer.prototype
  21658. } else {
  21659. // Fallback: Return an object instance of the Buffer class
  21660. if (that === null) {
  21661. that = new Buffer(length)
  21662. }
  21663. that.length = length
  21664. }
  21665. return that
  21666. }
  21667. /**
  21668. * The Buffer constructor returns instances of `Uint8Array` that have their
  21669. * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
  21670. * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
  21671. * and the `Uint8Array` methods. Square bracket notation works as expected -- it
  21672. * returns a single octet.
  21673. *
  21674. * The `Uint8Array` prototype remains unmodified.
  21675. */
  21676. function Buffer (arg, encodingOrOffset, length) {
  21677. if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {
  21678. return new Buffer(arg, encodingOrOffset, length)
  21679. }
  21680. // Common case.
  21681. if (typeof arg === 'number') {
  21682. if (typeof encodingOrOffset === 'string') {
  21683. throw new Error(
  21684. 'If encoding is specified then the first argument must be a string'
  21685. )
  21686. }
  21687. return allocUnsafe(this, arg)
  21688. }
  21689. return from(this, arg, encodingOrOffset, length)
  21690. }
  21691. Buffer.poolSize = 8192 // not used by this implementation
  21692. // TODO: Legacy, not needed anymore. Remove in next major version.
  21693. Buffer._augment = function (arr) {
  21694. arr.__proto__ = Buffer.prototype
  21695. return arr
  21696. }
  21697. function from (that, value, encodingOrOffset, length) {
  21698. if (typeof value === 'number') {
  21699. throw new TypeError('"value" argument must not be a number')
  21700. }
  21701. if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
  21702. return fromArrayBuffer(that, value, encodingOrOffset, length)
  21703. }
  21704. if (typeof value === 'string') {
  21705. return fromString(that, value, encodingOrOffset)
  21706. }
  21707. return fromObject(that, value)
  21708. }
  21709. /**
  21710. * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
  21711. * if value is a number.
  21712. * Buffer.from(str[, encoding])
  21713. * Buffer.from(array)
  21714. * Buffer.from(buffer)
  21715. * Buffer.from(arrayBuffer[, byteOffset[, length]])
  21716. **/
  21717. Buffer.from = function (value, encodingOrOffset, length) {
  21718. return from(null, value, encodingOrOffset, length)
  21719. }
  21720. if (Buffer.TYPED_ARRAY_SUPPORT) {
  21721. Buffer.prototype.__proto__ = Uint8Array.prototype
  21722. Buffer.__proto__ = Uint8Array
  21723. if (typeof Symbol !== 'undefined' && Symbol.species &&
  21724. Buffer[Symbol.species] === Buffer) {
  21725. // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
  21726. Object.defineProperty(Buffer, Symbol.species, {
  21727. value: null,
  21728. configurable: true
  21729. })
  21730. }
  21731. }
  21732. function assertSize (size) {
  21733. if (typeof size !== 'number') {
  21734. throw new TypeError('"size" argument must be a number')
  21735. } else if (size < 0) {
  21736. throw new RangeError('"size" argument must not be negative')
  21737. }
  21738. }
  21739. function alloc (that, size, fill, encoding) {
  21740. assertSize(size)
  21741. if (size <= 0) {
  21742. return createBuffer(that, size)
  21743. }
  21744. if (fill !== undefined) {
  21745. // Only pay attention to encoding if it's a string. This
  21746. // prevents accidentally sending in a number that would
  21747. // be interpretted as a start offset.
  21748. return typeof encoding === 'string'
  21749. ? createBuffer(that, size).fill(fill, encoding)
  21750. : createBuffer(that, size).fill(fill)
  21751. }
  21752. return createBuffer(that, size)
  21753. }
  21754. /**
  21755. * Creates a new filled Buffer instance.
  21756. * alloc(size[, fill[, encoding]])
  21757. **/
  21758. Buffer.alloc = function (size, fill, encoding) {
  21759. return alloc(null, size, fill, encoding)
  21760. }
  21761. function allocUnsafe (that, size) {
  21762. assertSize(size)
  21763. that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)
  21764. if (!Buffer.TYPED_ARRAY_SUPPORT) {
  21765. for (var i = 0; i < size; ++i) {
  21766. that[i] = 0
  21767. }
  21768. }
  21769. return that
  21770. }
  21771. /**
  21772. * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
  21773. * */
  21774. Buffer.allocUnsafe = function (size) {
  21775. return allocUnsafe(null, size)
  21776. }
  21777. /**
  21778. * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
  21779. */
  21780. Buffer.allocUnsafeSlow = function (size) {
  21781. return allocUnsafe(null, size)
  21782. }
  21783. function fromString (that, string, encoding) {
  21784. if (typeof encoding !== 'string' || encoding === '') {
  21785. encoding = 'utf8'
  21786. }
  21787. if (!Buffer.isEncoding(encoding)) {
  21788. throw new TypeError('"encoding" must be a valid string encoding')
  21789. }
  21790. var length = byteLength(string, encoding) | 0
  21791. that = createBuffer(that, length)
  21792. var actual = that.write(string, encoding)
  21793. if (actual !== length) {
  21794. // Writing a hex string, for example, that contains invalid characters will
  21795. // cause everything after the first invalid character to be ignored. (e.g.
  21796. // 'abxxcd' will be treated as 'ab')
  21797. that = that.slice(0, actual)
  21798. }
  21799. return that
  21800. }
  21801. function fromArrayLike (that, array) {
  21802. var length = array.length < 0 ? 0 : checked(array.length) | 0
  21803. that = createBuffer(that, length)
  21804. for (var i = 0; i < length; i += 1) {
  21805. that[i] = array[i] & 255
  21806. }
  21807. return that
  21808. }
  21809. function fromArrayBuffer (that, array, byteOffset, length) {
  21810. array.byteLength // this throws if `array` is not a valid ArrayBuffer
  21811. if (byteOffset < 0 || array.byteLength < byteOffset) {
  21812. throw new RangeError('\'offset\' is out of bounds')
  21813. }
  21814. if (array.byteLength < byteOffset + (length || 0)) {
  21815. throw new RangeError('\'length\' is out of bounds')
  21816. }
  21817. if (byteOffset === undefined && length === undefined) {
  21818. array = new Uint8Array(array)
  21819. } else if (length === undefined) {
  21820. array = new Uint8Array(array, byteOffset)
  21821. } else {
  21822. array = new Uint8Array(array, byteOffset, length)
  21823. }
  21824. if (Buffer.TYPED_ARRAY_SUPPORT) {
  21825. // Return an augmented `Uint8Array` instance, for best performance
  21826. that = array
  21827. that.__proto__ = Buffer.prototype
  21828. } else {
  21829. // Fallback: Return an object instance of the Buffer class
  21830. that = fromArrayLike(that, array)
  21831. }
  21832. return that
  21833. }
  21834. function fromObject (that, obj) {
  21835. if (Buffer.isBuffer(obj)) {
  21836. var len = checked(obj.length) | 0
  21837. that = createBuffer(that, len)
  21838. if (that.length === 0) {
  21839. return that
  21840. }
  21841. obj.copy(that, 0, 0, len)
  21842. return that
  21843. }
  21844. if (obj) {
  21845. if ((typeof ArrayBuffer !== 'undefined' &&
  21846. obj.buffer instanceof ArrayBuffer) || 'length' in obj) {
  21847. if (typeof obj.length !== 'number' || isnan(obj.length)) {
  21848. return createBuffer(that, 0)
  21849. }
  21850. return fromArrayLike(that, obj)
  21851. }
  21852. if (obj.type === 'Buffer' && isArray(obj.data)) {
  21853. return fromArrayLike(that, obj.data)
  21854. }
  21855. }
  21856. throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
  21857. }
  21858. function checked (length) {
  21859. // Note: cannot use `length < kMaxLength()` here because that fails when
  21860. // length is NaN (which is otherwise coerced to zero.)
  21861. if (length >= kMaxLength()) {
  21862. throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
  21863. 'size: 0x' + kMaxLength().toString(16) + ' bytes')
  21864. }
  21865. return length | 0
  21866. }
  21867. function SlowBuffer (length) {
  21868. if (+length != length) { // eslint-disable-line eqeqeq
  21869. length = 0
  21870. }
  21871. return Buffer.alloc(+length)
  21872. }
  21873. Buffer.isBuffer = function isBuffer (b) {
  21874. return !!(b != null && b._isBuffer)
  21875. }
  21876. Buffer.compare = function compare (a, b) {
  21877. if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
  21878. throw new TypeError('Arguments must be Buffers')
  21879. }
  21880. if (a === b) return 0
  21881. var x = a.length
  21882. var y = b.length
  21883. for (var i = 0, len = Math.min(x, y); i < len; ++i) {
  21884. if (a[i] !== b[i]) {
  21885. x = a[i]
  21886. y = b[i]
  21887. break
  21888. }
  21889. }
  21890. if (x < y) return -1
  21891. if (y < x) return 1
  21892. return 0
  21893. }
  21894. Buffer.isEncoding = function isEncoding (encoding) {
  21895. switch (String(encoding).toLowerCase()) {
  21896. case 'hex':
  21897. case 'utf8':
  21898. case 'utf-8':
  21899. case 'ascii':
  21900. case 'latin1':
  21901. case 'binary':
  21902. case 'base64':
  21903. case 'ucs2':
  21904. case 'ucs-2':
  21905. case 'utf16le':
  21906. case 'utf-16le':
  21907. return true
  21908. default:
  21909. return false
  21910. }
  21911. }
  21912. Buffer.concat = function concat (list, length) {
  21913. if (!isArray(list)) {
  21914. throw new TypeError('"list" argument must be an Array of Buffers')
  21915. }
  21916. if (list.length === 0) {
  21917. return Buffer.alloc(0)
  21918. }
  21919. var i
  21920. if (length === undefined) {
  21921. length = 0
  21922. for (i = 0; i < list.length; ++i) {
  21923. length += list[i].length
  21924. }
  21925. }
  21926. var buffer = Buffer.allocUnsafe(length)
  21927. var pos = 0
  21928. for (i = 0; i < list.length; ++i) {
  21929. var buf = list[i]
  21930. if (!Buffer.isBuffer(buf)) {
  21931. throw new TypeError('"list" argument must be an Array of Buffers')
  21932. }
  21933. buf.copy(buffer, pos)
  21934. pos += buf.length
  21935. }
  21936. return buffer
  21937. }
  21938. function byteLength (string, encoding) {
  21939. if (Buffer.isBuffer(string)) {
  21940. return string.length
  21941. }
  21942. if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&
  21943. (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {
  21944. return string.byteLength
  21945. }
  21946. if (typeof string !== 'string') {
  21947. string = '' + string
  21948. }
  21949. var len = string.length
  21950. if (len === 0) return 0
  21951. // Use a for loop to avoid recursion
  21952. var loweredCase = false
  21953. for (;;) {
  21954. switch (encoding) {
  21955. case 'ascii':
  21956. case 'latin1':
  21957. case 'binary':
  21958. return len
  21959. case 'utf8':
  21960. case 'utf-8':
  21961. case undefined:
  21962. return utf8ToBytes(string).length
  21963. case 'ucs2':
  21964. case 'ucs-2':
  21965. case 'utf16le':
  21966. case 'utf-16le':
  21967. return len * 2
  21968. case 'hex':
  21969. return len >>> 1
  21970. case 'base64':
  21971. return base64ToBytes(string).length
  21972. default:
  21973. if (loweredCase) return utf8ToBytes(string).length // assume utf8
  21974. encoding = ('' + encoding).toLowerCase()
  21975. loweredCase = true
  21976. }
  21977. }
  21978. }
  21979. Buffer.byteLength = byteLength
  21980. function slowToString (encoding, start, end) {
  21981. var loweredCase = false
  21982. // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
  21983. // property of a typed array.
  21984. // This behaves neither like String nor Uint8Array in that we set start/end
  21985. // to their upper/lower bounds if the value passed is out of range.
  21986. // undefined is handled specially as per ECMA-262 6th Edition,
  21987. // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
  21988. if (start === undefined || start < 0) {
  21989. start = 0
  21990. }
  21991. // Return early if start > this.length. Done here to prevent potential uint32
  21992. // coercion fail below.
  21993. if (start > this.length) {
  21994. return ''
  21995. }
  21996. if (end === undefined || end > this.length) {
  21997. end = this.length
  21998. }
  21999. if (end <= 0) {
  22000. return ''
  22001. }
  22002. // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
  22003. end >>>= 0
  22004. start >>>= 0
  22005. if (end <= start) {
  22006. return ''
  22007. }
  22008. if (!encoding) encoding = 'utf8'
  22009. while (true) {
  22010. switch (encoding) {
  22011. case 'hex':
  22012. return hexSlice(this, start, end)
  22013. case 'utf8':
  22014. case 'utf-8':
  22015. return utf8Slice(this, start, end)
  22016. case 'ascii':
  22017. return asciiSlice(this, start, end)
  22018. case 'latin1':
  22019. case 'binary':
  22020. return latin1Slice(this, start, end)
  22021. case 'base64':
  22022. return base64Slice(this, start, end)
  22023. case 'ucs2':
  22024. case 'ucs-2':
  22025. case 'utf16le':
  22026. case 'utf-16le':
  22027. return utf16leSlice(this, start, end)
  22028. default:
  22029. if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
  22030. encoding = (encoding + '').toLowerCase()
  22031. loweredCase = true
  22032. }
  22033. }
  22034. }
  22035. // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect
  22036. // Buffer instances.
  22037. Buffer.prototype._isBuffer = true
  22038. function swap (b, n, m) {
  22039. var i = b[n]
  22040. b[n] = b[m]
  22041. b[m] = i
  22042. }
  22043. Buffer.prototype.swap16 = function swap16 () {
  22044. var len = this.length
  22045. if (len % 2 !== 0) {
  22046. throw new RangeError('Buffer size must be a multiple of 16-bits')
  22047. }
  22048. for (var i = 0; i < len; i += 2) {
  22049. swap(this, i, i + 1)
  22050. }
  22051. return this
  22052. }
  22053. Buffer.prototype.swap32 = function swap32 () {
  22054. var len = this.length
  22055. if (len % 4 !== 0) {
  22056. throw new RangeError('Buffer size must be a multiple of 32-bits')
  22057. }
  22058. for (var i = 0; i < len; i += 4) {
  22059. swap(this, i, i + 3)
  22060. swap(this, i + 1, i + 2)
  22061. }
  22062. return this
  22063. }
  22064. Buffer.prototype.swap64 = function swap64 () {
  22065. var len = this.length
  22066. if (len % 8 !== 0) {
  22067. throw new RangeError('Buffer size must be a multiple of 64-bits')
  22068. }
  22069. for (var i = 0; i < len; i += 8) {
  22070. swap(this, i, i + 7)
  22071. swap(this, i + 1, i + 6)
  22072. swap(this, i + 2, i + 5)
  22073. swap(this, i + 3, i + 4)
  22074. }
  22075. return this
  22076. }
  22077. Buffer.prototype.toString = function toString () {
  22078. var length = this.length | 0
  22079. if (length === 0) return ''
  22080. if (arguments.length === 0) return utf8Slice(this, 0, length)
  22081. return slowToString.apply(this, arguments)
  22082. }
  22083. Buffer.prototype.equals = function equals (b) {
  22084. if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
  22085. if (this === b) return true
  22086. return Buffer.compare(this, b) === 0
  22087. }
  22088. Buffer.prototype.inspect = function inspect () {
  22089. var str = ''
  22090. var max = exports.INSPECT_MAX_BYTES
  22091. if (this.length > 0) {
  22092. str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
  22093. if (this.length > max) str += ' ... '
  22094. }
  22095. return '<Buffer ' + str + '>'
  22096. }
  22097. Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
  22098. if (!Buffer.isBuffer(target)) {
  22099. throw new TypeError('Argument must be a Buffer')
  22100. }
  22101. if (start === undefined) {
  22102. start = 0
  22103. }
  22104. if (end === undefined) {
  22105. end = target ? target.length : 0
  22106. }
  22107. if (thisStart === undefined) {
  22108. thisStart = 0
  22109. }
  22110. if (thisEnd === undefined) {
  22111. thisEnd = this.length
  22112. }
  22113. if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
  22114. throw new RangeError('out of range index')
  22115. }
  22116. if (thisStart >= thisEnd && start >= end) {
  22117. return 0
  22118. }
  22119. if (thisStart >= thisEnd) {
  22120. return -1
  22121. }
  22122. if (start >= end) {
  22123. return 1
  22124. }
  22125. start >>>= 0
  22126. end >>>= 0
  22127. thisStart >>>= 0
  22128. thisEnd >>>= 0
  22129. if (this === target) return 0
  22130. var x = thisEnd - thisStart
  22131. var y = end - start
  22132. var len = Math.min(x, y)
  22133. var thisCopy = this.slice(thisStart, thisEnd)
  22134. var targetCopy = target.slice(start, end)
  22135. for (var i = 0; i < len; ++i) {
  22136. if (thisCopy[i] !== targetCopy[i]) {
  22137. x = thisCopy[i]
  22138. y = targetCopy[i]
  22139. break
  22140. }
  22141. }
  22142. if (x < y) return -1
  22143. if (y < x) return 1
  22144. return 0
  22145. }
  22146. // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
  22147. // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
  22148. //
  22149. // Arguments:
  22150. // - buffer - a Buffer to search
  22151. // - val - a string, Buffer, or number
  22152. // - byteOffset - an index into `buffer`; will be clamped to an int32
  22153. // - encoding - an optional encoding, relevant is val is a string
  22154. // - dir - true for indexOf, false for lastIndexOf
  22155. function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
  22156. // Empty buffer means no match
  22157. if (buffer.length === 0) return -1
  22158. // Normalize byteOffset
  22159. if (typeof byteOffset === 'string') {
  22160. encoding = byteOffset
  22161. byteOffset = 0
  22162. } else if (byteOffset > 0x7fffffff) {
  22163. byteOffset = 0x7fffffff
  22164. } else if (byteOffset < -0x80000000) {
  22165. byteOffset = -0x80000000
  22166. }
  22167. byteOffset = +byteOffset // Coerce to Number.
  22168. if (isNaN(byteOffset)) {
  22169. // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
  22170. byteOffset = dir ? 0 : (buffer.length - 1)
  22171. }
  22172. // Normalize byteOffset: negative offsets start from the end of the buffer
  22173. if (byteOffset < 0) byteOffset = buffer.length + byteOffset
  22174. if (byteOffset >= buffer.length) {
  22175. if (dir) return -1
  22176. else byteOffset = buffer.length - 1
  22177. } else if (byteOffset < 0) {
  22178. if (dir) byteOffset = 0
  22179. else return -1
  22180. }
  22181. // Normalize val
  22182. if (typeof val === 'string') {
  22183. val = Buffer.from(val, encoding)
  22184. }
  22185. // Finally, search either indexOf (if dir is true) or lastIndexOf
  22186. if (Buffer.isBuffer(val)) {
  22187. // Special case: looking for empty string/buffer always fails
  22188. if (val.length === 0) {
  22189. return -1
  22190. }
  22191. return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
  22192. } else if (typeof val === 'number') {
  22193. val = val & 0xFF // Search for a byte value [0-255]
  22194. if (Buffer.TYPED_ARRAY_SUPPORT &&
  22195. typeof Uint8Array.prototype.indexOf === 'function') {
  22196. if (dir) {
  22197. return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
  22198. } else {
  22199. return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
  22200. }
  22201. }
  22202. return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
  22203. }
  22204. throw new TypeError('val must be string, number or Buffer')
  22205. }
  22206. function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
  22207. var indexSize = 1
  22208. var arrLength = arr.length
  22209. var valLength = val.length
  22210. if (encoding !== undefined) {
  22211. encoding = String(encoding).toLowerCase()
  22212. if (encoding === 'ucs2' || encoding === 'ucs-2' ||
  22213. encoding === 'utf16le' || encoding === 'utf-16le') {
  22214. if (arr.length < 2 || val.length < 2) {
  22215. return -1
  22216. }
  22217. indexSize = 2
  22218. arrLength /= 2
  22219. valLength /= 2
  22220. byteOffset /= 2
  22221. }
  22222. }
  22223. function read (buf, i) {
  22224. if (indexSize === 1) {
  22225. return buf[i]
  22226. } else {
  22227. return buf.readUInt16BE(i * indexSize)
  22228. }
  22229. }
  22230. var i
  22231. if (dir) {
  22232. var foundIndex = -1
  22233. for (i = byteOffset; i < arrLength; i++) {
  22234. if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
  22235. if (foundIndex === -1) foundIndex = i
  22236. if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
  22237. } else {
  22238. if (foundIndex !== -1) i -= i - foundIndex
  22239. foundIndex = -1
  22240. }
  22241. }
  22242. } else {
  22243. if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
  22244. for (i = byteOffset; i >= 0; i--) {
  22245. var found = true
  22246. for (var j = 0; j < valLength; j++) {
  22247. if (read(arr, i + j) !== read(val, j)) {
  22248. found = false
  22249. break
  22250. }
  22251. }
  22252. if (found) return i
  22253. }
  22254. }
  22255. return -1
  22256. }
  22257. Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
  22258. return this.indexOf(val, byteOffset, encoding) !== -1
  22259. }
  22260. Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
  22261. return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
  22262. }
  22263. Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
  22264. return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
  22265. }
  22266. function hexWrite (buf, string, offset, length) {
  22267. offset = Number(offset) || 0
  22268. var remaining = buf.length - offset
  22269. if (!length) {
  22270. length = remaining
  22271. } else {
  22272. length = Number(length)
  22273. if (length > remaining) {
  22274. length = remaining
  22275. }
  22276. }
  22277. // must be an even number of digits
  22278. var strLen = string.length
  22279. if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
  22280. if (length > strLen / 2) {
  22281. length = strLen / 2
  22282. }
  22283. for (var i = 0; i < length; ++i) {
  22284. var parsed = parseInt(string.substr(i * 2, 2), 16)
  22285. if (isNaN(parsed)) return i
  22286. buf[offset + i] = parsed
  22287. }
  22288. return i
  22289. }
  22290. function utf8Write (buf, string, offset, length) {
  22291. return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
  22292. }
  22293. function asciiWrite (buf, string, offset, length) {
  22294. return blitBuffer(asciiToBytes(string), buf, offset, length)
  22295. }
  22296. function latin1Write (buf, string, offset, length) {
  22297. return asciiWrite(buf, string, offset, length)
  22298. }
  22299. function base64Write (buf, string, offset, length) {
  22300. return blitBuffer(base64ToBytes(string), buf, offset, length)
  22301. }
  22302. function ucs2Write (buf, string, offset, length) {
  22303. return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
  22304. }
  22305. Buffer.prototype.write = function write (string, offset, length, encoding) {
  22306. // Buffer#write(string)
  22307. if (offset === undefined) {
  22308. encoding = 'utf8'
  22309. length = this.length
  22310. offset = 0
  22311. // Buffer#write(string, encoding)
  22312. } else if (length === undefined && typeof offset === 'string') {
  22313. encoding = offset
  22314. length = this.length
  22315. offset = 0
  22316. // Buffer#write(string, offset[, length][, encoding])
  22317. } else if (isFinite(offset)) {
  22318. offset = offset | 0
  22319. if (isFinite(length)) {
  22320. length = length | 0
  22321. if (encoding === undefined) encoding = 'utf8'
  22322. } else {
  22323. encoding = length
  22324. length = undefined
  22325. }
  22326. // legacy write(string, encoding, offset, length) - remove in v0.13
  22327. } else {
  22328. throw new Error(
  22329. 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
  22330. )
  22331. }
  22332. var remaining = this.length - offset
  22333. if (length === undefined || length > remaining) length = remaining
  22334. if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
  22335. throw new RangeError('Attempt to write outside buffer bounds')
  22336. }
  22337. if (!encoding) encoding = 'utf8'
  22338. var loweredCase = false
  22339. for (;;) {
  22340. switch (encoding) {
  22341. case 'hex':
  22342. return hexWrite(this, string, offset, length)
  22343. case 'utf8':
  22344. case 'utf-8':
  22345. return utf8Write(this, string, offset, length)
  22346. case 'ascii':
  22347. return asciiWrite(this, string, offset, length)
  22348. case 'latin1':
  22349. case 'binary':
  22350. return latin1Write(this, string, offset, length)
  22351. case 'base64':
  22352. // Warning: maxLength not taken into account in base64Write
  22353. return base64Write(this, string, offset, length)
  22354. case 'ucs2':
  22355. case 'ucs-2':
  22356. case 'utf16le':
  22357. case 'utf-16le':
  22358. return ucs2Write(this, string, offset, length)
  22359. default:
  22360. if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
  22361. encoding = ('' + encoding).toLowerCase()
  22362. loweredCase = true
  22363. }
  22364. }
  22365. }
  22366. Buffer.prototype.toJSON = function toJSON () {
  22367. return {
  22368. type: 'Buffer',
  22369. data: Array.prototype.slice.call(this._arr || this, 0)
  22370. }
  22371. }
  22372. function base64Slice (buf, start, end) {
  22373. if (start === 0 && end === buf.length) {
  22374. return base64.fromByteArray(buf)
  22375. } else {
  22376. return base64.fromByteArray(buf.slice(start, end))
  22377. }
  22378. }
  22379. function utf8Slice (buf, start, end) {
  22380. end = Math.min(buf.length, end)
  22381. var res = []
  22382. var i = start
  22383. while (i < end) {
  22384. var firstByte = buf[i]
  22385. var codePoint = null
  22386. var bytesPerSequence = (firstByte > 0xEF) ? 4
  22387. : (firstByte > 0xDF) ? 3
  22388. : (firstByte > 0xBF) ? 2
  22389. : 1
  22390. if (i + bytesPerSequence <= end) {
  22391. var secondByte, thirdByte, fourthByte, tempCodePoint
  22392. switch (bytesPerSequence) {
  22393. case 1:
  22394. if (firstByte < 0x80) {
  22395. codePoint = firstByte
  22396. }
  22397. break
  22398. case 2:
  22399. secondByte = buf[i + 1]
  22400. if ((secondByte & 0xC0) === 0x80) {
  22401. tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
  22402. if (tempCodePoint > 0x7F) {
  22403. codePoint = tempCodePoint
  22404. }
  22405. }
  22406. break
  22407. case 3:
  22408. secondByte = buf[i + 1]
  22409. thirdByte = buf[i + 2]
  22410. if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
  22411. tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
  22412. if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
  22413. codePoint = tempCodePoint
  22414. }
  22415. }
  22416. break
  22417. case 4:
  22418. secondByte = buf[i + 1]
  22419. thirdByte = buf[i + 2]
  22420. fourthByte = buf[i + 3]
  22421. if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
  22422. tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
  22423. if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
  22424. codePoint = tempCodePoint
  22425. }
  22426. }
  22427. }
  22428. }
  22429. if (codePoint === null) {
  22430. // we did not generate a valid codePoint so insert a
  22431. // replacement char (U+FFFD) and advance only 1 byte
  22432. codePoint = 0xFFFD
  22433. bytesPerSequence = 1
  22434. } else if (codePoint > 0xFFFF) {
  22435. // encode to utf16 (surrogate pair dance)
  22436. codePoint -= 0x10000
  22437. res.push(codePoint >>> 10 & 0x3FF | 0xD800)
  22438. codePoint = 0xDC00 | codePoint & 0x3FF
  22439. }
  22440. res.push(codePoint)
  22441. i += bytesPerSequence
  22442. }
  22443. return decodeCodePointsArray(res)
  22444. }
  22445. // Based on http://stackoverflow.com/a/22747272/680742, the browser with
  22446. // the lowest limit is Chrome, with 0x10000 args.
  22447. // We go 1 magnitude less, for safety
  22448. var MAX_ARGUMENTS_LENGTH = 0x1000
  22449. function decodeCodePointsArray (codePoints) {
  22450. var len = codePoints.length
  22451. if (len <= MAX_ARGUMENTS_LENGTH) {
  22452. return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
  22453. }
  22454. // Decode in chunks to avoid "call stack size exceeded".
  22455. var res = ''
  22456. var i = 0
  22457. while (i < len) {
  22458. res += String.fromCharCode.apply(
  22459. String,
  22460. codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
  22461. )
  22462. }
  22463. return res
  22464. }
  22465. function asciiSlice (buf, start, end) {
  22466. var ret = ''
  22467. end = Math.min(buf.length, end)
  22468. for (var i = start; i < end; ++i) {
  22469. ret += String.fromCharCode(buf[i] & 0x7F)
  22470. }
  22471. return ret
  22472. }
  22473. function latin1Slice (buf, start, end) {
  22474. var ret = ''
  22475. end = Math.min(buf.length, end)
  22476. for (var i = start; i < end; ++i) {
  22477. ret += String.fromCharCode(buf[i])
  22478. }
  22479. return ret
  22480. }
  22481. function hexSlice (buf, start, end) {
  22482. var len = buf.length
  22483. if (!start || start < 0) start = 0
  22484. if (!end || end < 0 || end > len) end = len
  22485. var out = ''
  22486. for (var i = start; i < end; ++i) {
  22487. out += toHex(buf[i])
  22488. }
  22489. return out
  22490. }
  22491. function utf16leSlice (buf, start, end) {
  22492. var bytes = buf.slice(start, end)
  22493. var res = ''
  22494. for (var i = 0; i < bytes.length; i += 2) {
  22495. res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
  22496. }
  22497. return res
  22498. }
  22499. Buffer.prototype.slice = function slice (start, end) {
  22500. var len = this.length
  22501. start = ~~start
  22502. end = end === undefined ? len : ~~end
  22503. if (start < 0) {
  22504. start += len
  22505. if (start < 0) start = 0
  22506. } else if (start > len) {
  22507. start = len
  22508. }
  22509. if (end < 0) {
  22510. end += len
  22511. if (end < 0) end = 0
  22512. } else if (end > len) {
  22513. end = len
  22514. }
  22515. if (end < start) end = start
  22516. var newBuf
  22517. if (Buffer.TYPED_ARRAY_SUPPORT) {
  22518. newBuf = this.subarray(start, end)
  22519. newBuf.__proto__ = Buffer.prototype
  22520. } else {
  22521. var sliceLen = end - start
  22522. newBuf = new Buffer(sliceLen, undefined)
  22523. for (var i = 0; i < sliceLen; ++i) {
  22524. newBuf[i] = this[i + start]
  22525. }
  22526. }
  22527. return newBuf
  22528. }
  22529. /*
  22530. * Need to make sure that buffer isn't trying to write out of bounds.
  22531. */
  22532. function checkOffset (offset, ext, length) {
  22533. if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
  22534. if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
  22535. }
  22536. Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
  22537. offset = offset | 0
  22538. byteLength = byteLength | 0
  22539. if (!noAssert) checkOffset(offset, byteLength, this.length)
  22540. var val = this[offset]
  22541. var mul = 1
  22542. var i = 0
  22543. while (++i < byteLength && (mul *= 0x100)) {
  22544. val += this[offset + i] * mul
  22545. }
  22546. return val
  22547. }
  22548. Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
  22549. offset = offset | 0
  22550. byteLength = byteLength | 0
  22551. if (!noAssert) {
  22552. checkOffset(offset, byteLength, this.length)
  22553. }
  22554. var val = this[offset + --byteLength]
  22555. var mul = 1
  22556. while (byteLength > 0 && (mul *= 0x100)) {
  22557. val += this[offset + --byteLength] * mul
  22558. }
  22559. return val
  22560. }
  22561. Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
  22562. if (!noAssert) checkOffset(offset, 1, this.length)
  22563. return this[offset]
  22564. }
  22565. Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
  22566. if (!noAssert) checkOffset(offset, 2, this.length)
  22567. return this[offset] | (this[offset + 1] << 8)
  22568. }
  22569. Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
  22570. if (!noAssert) checkOffset(offset, 2, this.length)
  22571. return (this[offset] << 8) | this[offset + 1]
  22572. }
  22573. Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
  22574. if (!noAssert) checkOffset(offset, 4, this.length)
  22575. return ((this[offset]) |
  22576. (this[offset + 1] << 8) |
  22577. (this[offset + 2] << 16)) +
  22578. (this[offset + 3] * 0x1000000)
  22579. }
  22580. Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
  22581. if (!noAssert) checkOffset(offset, 4, this.length)
  22582. return (this[offset] * 0x1000000) +
  22583. ((this[offset + 1] << 16) |
  22584. (this[offset + 2] << 8) |
  22585. this[offset + 3])
  22586. }
  22587. Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
  22588. offset = offset | 0
  22589. byteLength = byteLength | 0
  22590. if (!noAssert) checkOffset(offset, byteLength, this.length)
  22591. var val = this[offset]
  22592. var mul = 1
  22593. var i = 0
  22594. while (++i < byteLength && (mul *= 0x100)) {
  22595. val += this[offset + i] * mul
  22596. }
  22597. mul *= 0x80
  22598. if (val >= mul) val -= Math.pow(2, 8 * byteLength)
  22599. return val
  22600. }
  22601. Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
  22602. offset = offset | 0
  22603. byteLength = byteLength | 0
  22604. if (!noAssert) checkOffset(offset, byteLength, this.length)
  22605. var i = byteLength
  22606. var mul = 1
  22607. var val = this[offset + --i]
  22608. while (i > 0 && (mul *= 0x100)) {
  22609. val += this[offset + --i] * mul
  22610. }
  22611. mul *= 0x80
  22612. if (val >= mul) val -= Math.pow(2, 8 * byteLength)
  22613. return val
  22614. }
  22615. Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
  22616. if (!noAssert) checkOffset(offset, 1, this.length)
  22617. if (!(this[offset] & 0x80)) return (this[offset])
  22618. return ((0xff - this[offset] + 1) * -1)
  22619. }
  22620. Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
  22621. if (!noAssert) checkOffset(offset, 2, this.length)
  22622. var val = this[offset] | (this[offset + 1] << 8)
  22623. return (val & 0x8000) ? val | 0xFFFF0000 : val
  22624. }
  22625. Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
  22626. if (!noAssert) checkOffset(offset, 2, this.length)
  22627. var val = this[offset + 1] | (this[offset] << 8)
  22628. return (val & 0x8000) ? val | 0xFFFF0000 : val
  22629. }
  22630. Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
  22631. if (!noAssert) checkOffset(offset, 4, this.length)
  22632. return (this[offset]) |
  22633. (this[offset + 1] << 8) |
  22634. (this[offset + 2] << 16) |
  22635. (this[offset + 3] << 24)
  22636. }
  22637. Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
  22638. if (!noAssert) checkOffset(offset, 4, this.length)
  22639. return (this[offset] << 24) |
  22640. (this[offset + 1] << 16) |
  22641. (this[offset + 2] << 8) |
  22642. (this[offset + 3])
  22643. }
  22644. Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
  22645. if (!noAssert) checkOffset(offset, 4, this.length)
  22646. return ieee754.read(this, offset, true, 23, 4)
  22647. }
  22648. Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
  22649. if (!noAssert) checkOffset(offset, 4, this.length)
  22650. return ieee754.read(this, offset, false, 23, 4)
  22651. }
  22652. Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
  22653. if (!noAssert) checkOffset(offset, 8, this.length)
  22654. return ieee754.read(this, offset, true, 52, 8)
  22655. }
  22656. Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
  22657. if (!noAssert) checkOffset(offset, 8, this.length)
  22658. return ieee754.read(this, offset, false, 52, 8)
  22659. }
  22660. function checkInt (buf, value, offset, ext, max, min) {
  22661. if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
  22662. if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
  22663. if (offset + ext > buf.length) throw new RangeError('Index out of range')
  22664. }
  22665. Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
  22666. value = +value
  22667. offset = offset | 0
  22668. byteLength = byteLength | 0
  22669. if (!noAssert) {
  22670. var maxBytes = Math.pow(2, 8 * byteLength) - 1
  22671. checkInt(this, value, offset, byteLength, maxBytes, 0)
  22672. }
  22673. var mul = 1
  22674. var i = 0
  22675. this[offset] = value & 0xFF
  22676. while (++i < byteLength && (mul *= 0x100)) {
  22677. this[offset + i] = (value / mul) & 0xFF
  22678. }
  22679. return offset + byteLength
  22680. }
  22681. Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
  22682. value = +value
  22683. offset = offset | 0
  22684. byteLength = byteLength | 0
  22685. if (!noAssert) {
  22686. var maxBytes = Math.pow(2, 8 * byteLength) - 1
  22687. checkInt(this, value, offset, byteLength, maxBytes, 0)
  22688. }
  22689. var i = byteLength - 1
  22690. var mul = 1
  22691. this[offset + i] = value & 0xFF
  22692. while (--i >= 0 && (mul *= 0x100)) {
  22693. this[offset + i] = (value / mul) & 0xFF
  22694. }
  22695. return offset + byteLength
  22696. }
  22697. Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
  22698. value = +value
  22699. offset = offset | 0
  22700. if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
  22701. if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
  22702. this[offset] = (value & 0xff)
  22703. return offset + 1
  22704. }
  22705. function objectWriteUInt16 (buf, value, offset, littleEndian) {
  22706. if (value < 0) value = 0xffff + value + 1
  22707. for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {
  22708. buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
  22709. (littleEndian ? i : 1 - i) * 8
  22710. }
  22711. }
  22712. Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
  22713. value = +value
  22714. offset = offset | 0
  22715. if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
  22716. if (Buffer.TYPED_ARRAY_SUPPORT) {
  22717. this[offset] = (value & 0xff)
  22718. this[offset + 1] = (value >>> 8)
  22719. } else {
  22720. objectWriteUInt16(this, value, offset, true)
  22721. }
  22722. return offset + 2
  22723. }
  22724. Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
  22725. value = +value
  22726. offset = offset | 0
  22727. if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
  22728. if (Buffer.TYPED_ARRAY_SUPPORT) {
  22729. this[offset] = (value >>> 8)
  22730. this[offset + 1] = (value & 0xff)
  22731. } else {
  22732. objectWriteUInt16(this, value, offset, false)
  22733. }
  22734. return offset + 2
  22735. }
  22736. function objectWriteUInt32 (buf, value, offset, littleEndian) {
  22737. if (value < 0) value = 0xffffffff + value + 1
  22738. for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {
  22739. buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
  22740. }
  22741. }
  22742. Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
  22743. value = +value
  22744. offset = offset | 0
  22745. if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
  22746. if (Buffer.TYPED_ARRAY_SUPPORT) {
  22747. this[offset + 3] = (value >>> 24)
  22748. this[offset + 2] = (value >>> 16)
  22749. this[offset + 1] = (value >>> 8)
  22750. this[offset] = (value & 0xff)
  22751. } else {
  22752. objectWriteUInt32(this, value, offset, true)
  22753. }
  22754. return offset + 4
  22755. }
  22756. Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
  22757. value = +value
  22758. offset = offset | 0
  22759. if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
  22760. if (Buffer.TYPED_ARRAY_SUPPORT) {
  22761. this[offset] = (value >>> 24)
  22762. this[offset + 1] = (value >>> 16)
  22763. this[offset + 2] = (value >>> 8)
  22764. this[offset + 3] = (value & 0xff)
  22765. } else {
  22766. objectWriteUInt32(this, value, offset, false)
  22767. }
  22768. return offset + 4
  22769. }
  22770. Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
  22771. value = +value
  22772. offset = offset | 0
  22773. if (!noAssert) {
  22774. var limit = Math.pow(2, 8 * byteLength - 1)
  22775. checkInt(this, value, offset, byteLength, limit - 1, -limit)
  22776. }
  22777. var i = 0
  22778. var mul = 1
  22779. var sub = 0
  22780. this[offset] = value & 0xFF
  22781. while (++i < byteLength && (mul *= 0x100)) {
  22782. if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
  22783. sub = 1
  22784. }
  22785. this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
  22786. }
  22787. return offset + byteLength
  22788. }
  22789. Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
  22790. value = +value
  22791. offset = offset | 0
  22792. if (!noAssert) {
  22793. var limit = Math.pow(2, 8 * byteLength - 1)
  22794. checkInt(this, value, offset, byteLength, limit - 1, -limit)
  22795. }
  22796. var i = byteLength - 1
  22797. var mul = 1
  22798. var sub = 0
  22799. this[offset + i] = value & 0xFF
  22800. while (--i >= 0 && (mul *= 0x100)) {
  22801. if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
  22802. sub = 1
  22803. }
  22804. this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
  22805. }
  22806. return offset + byteLength
  22807. }
  22808. Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
  22809. value = +value
  22810. offset = offset | 0
  22811. if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
  22812. if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
  22813. if (value < 0) value = 0xff + value + 1
  22814. this[offset] = (value & 0xff)
  22815. return offset + 1
  22816. }
  22817. Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
  22818. value = +value
  22819. offset = offset | 0
  22820. if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
  22821. if (Buffer.TYPED_ARRAY_SUPPORT) {
  22822. this[offset] = (value & 0xff)
  22823. this[offset + 1] = (value >>> 8)
  22824. } else {
  22825. objectWriteUInt16(this, value, offset, true)
  22826. }
  22827. return offset + 2
  22828. }
  22829. Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
  22830. value = +value
  22831. offset = offset | 0
  22832. if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
  22833. if (Buffer.TYPED_ARRAY_SUPPORT) {
  22834. this[offset] = (value >>> 8)
  22835. this[offset + 1] = (value & 0xff)
  22836. } else {
  22837. objectWriteUInt16(this, value, offset, false)
  22838. }
  22839. return offset + 2
  22840. }
  22841. Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
  22842. value = +value
  22843. offset = offset | 0
  22844. if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
  22845. if (Buffer.TYPED_ARRAY_SUPPORT) {
  22846. this[offset] = (value & 0xff)
  22847. this[offset + 1] = (value >>> 8)
  22848. this[offset + 2] = (value >>> 16)
  22849. this[offset + 3] = (value >>> 24)
  22850. } else {
  22851. objectWriteUInt32(this, value, offset, true)
  22852. }
  22853. return offset + 4
  22854. }
  22855. Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
  22856. value = +value
  22857. offset = offset | 0
  22858. if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
  22859. if (value < 0) value = 0xffffffff + value + 1
  22860. if (Buffer.TYPED_ARRAY_SUPPORT) {
  22861. this[offset] = (value >>> 24)
  22862. this[offset + 1] = (value >>> 16)
  22863. this[offset + 2] = (value >>> 8)
  22864. this[offset + 3] = (value & 0xff)
  22865. } else {
  22866. objectWriteUInt32(this, value, offset, false)
  22867. }
  22868. return offset + 4
  22869. }
  22870. function checkIEEE754 (buf, value, offset, ext, max, min) {
  22871. if (offset + ext > buf.length) throw new RangeError('Index out of range')
  22872. if (offset < 0) throw new RangeError('Index out of range')
  22873. }
  22874. function writeFloat (buf, value, offset, littleEndian, noAssert) {
  22875. if (!noAssert) {
  22876. checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
  22877. }
  22878. ieee754.write(buf, value, offset, littleEndian, 23, 4)
  22879. return offset + 4
  22880. }
  22881. Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
  22882. return writeFloat(this, value, offset, true, noAssert)
  22883. }
  22884. Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
  22885. return writeFloat(this, value, offset, false, noAssert)
  22886. }
  22887. function writeDouble (buf, value, offset, littleEndian, noAssert) {
  22888. if (!noAssert) {
  22889. checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
  22890. }
  22891. ieee754.write(buf, value, offset, littleEndian, 52, 8)
  22892. return offset + 8
  22893. }
  22894. Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
  22895. return writeDouble(this, value, offset, true, noAssert)
  22896. }
  22897. Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
  22898. return writeDouble(this, value, offset, false, noAssert)
  22899. }
  22900. // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
  22901. Buffer.prototype.copy = function copy (target, targetStart, start, end) {
  22902. if (!start) start = 0
  22903. if (!end && end !== 0) end = this.length
  22904. if (targetStart >= target.length) targetStart = target.length
  22905. if (!targetStart) targetStart = 0
  22906. if (end > 0 && end < start) end = start
  22907. // Copy 0 bytes; we're done
  22908. if (end === start) return 0
  22909. if (target.length === 0 || this.length === 0) return 0
  22910. // Fatal error conditions
  22911. if (targetStart < 0) {
  22912. throw new RangeError('targetStart out of bounds')
  22913. }
  22914. if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
  22915. if (end < 0) throw new RangeError('sourceEnd out of bounds')
  22916. // Are we oob?
  22917. if (end > this.length) end = this.length
  22918. if (target.length - targetStart < end - start) {
  22919. end = target.length - targetStart + start
  22920. }
  22921. var len = end - start
  22922. var i
  22923. if (this === target && start < targetStart && targetStart < end) {
  22924. // descending copy from end
  22925. for (i = len - 1; i >= 0; --i) {
  22926. target[i + targetStart] = this[i + start]
  22927. }
  22928. } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
  22929. // ascending copy from start
  22930. for (i = 0; i < len; ++i) {
  22931. target[i + targetStart] = this[i + start]
  22932. }
  22933. } else {
  22934. Uint8Array.prototype.set.call(
  22935. target,
  22936. this.subarray(start, start + len),
  22937. targetStart
  22938. )
  22939. }
  22940. return len
  22941. }
  22942. // Usage:
  22943. // buffer.fill(number[, offset[, end]])
  22944. // buffer.fill(buffer[, offset[, end]])
  22945. // buffer.fill(string[, offset[, end]][, encoding])
  22946. Buffer.prototype.fill = function fill (val, start, end, encoding) {
  22947. // Handle string cases:
  22948. if (typeof val === 'string') {
  22949. if (typeof start === 'string') {
  22950. encoding = start
  22951. start = 0
  22952. end = this.length
  22953. } else if (typeof end === 'string') {
  22954. encoding = end
  22955. end = this.length
  22956. }
  22957. if (val.length === 1) {
  22958. var code = val.charCodeAt(0)
  22959. if (code < 256) {
  22960. val = code
  22961. }
  22962. }
  22963. if (encoding !== undefined && typeof encoding !== 'string') {
  22964. throw new TypeError('encoding must be a string')
  22965. }
  22966. if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
  22967. throw new TypeError('Unknown encoding: ' + encoding)
  22968. }
  22969. } else if (typeof val === 'number') {
  22970. val = val & 255
  22971. }
  22972. // Invalid ranges are not set to a default, so can range check early.
  22973. if (start < 0 || this.length < start || this.length < end) {
  22974. throw new RangeError('Out of range index')
  22975. }
  22976. if (end <= start) {
  22977. return this
  22978. }
  22979. start = start >>> 0
  22980. end = end === undefined ? this.length : end >>> 0
  22981. if (!val) val = 0
  22982. var i
  22983. if (typeof val === 'number') {
  22984. for (i = start; i < end; ++i) {
  22985. this[i] = val
  22986. }
  22987. } else {
  22988. var bytes = Buffer.isBuffer(val)
  22989. ? val
  22990. : utf8ToBytes(new Buffer(val, encoding).toString())
  22991. var len = bytes.length
  22992. for (i = 0; i < end - start; ++i) {
  22993. this[i + start] = bytes[i % len]
  22994. }
  22995. }
  22996. return this
  22997. }
  22998. // HELPER FUNCTIONS
  22999. // ================
  23000. var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g
  23001. function base64clean (str) {
  23002. // Node strips out invalid characters like \n and \t from the string, base64-js does not
  23003. str = stringtrim(str).replace(INVALID_BASE64_RE, '')
  23004. // Node converts strings with length < 2 to ''
  23005. if (str.length < 2) return ''
  23006. // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
  23007. while (str.length % 4 !== 0) {
  23008. str = str + '='
  23009. }
  23010. return str
  23011. }
  23012. function stringtrim (str) {
  23013. if (str.trim) return str.trim()
  23014. return str.replace(/^\s+|\s+$/g, '')
  23015. }
  23016. function toHex (n) {
  23017. if (n < 16) return '0' + n.toString(16)
  23018. return n.toString(16)
  23019. }
  23020. function utf8ToBytes (string, units) {
  23021. units = units || Infinity
  23022. var codePoint
  23023. var length = string.length
  23024. var leadSurrogate = null
  23025. var bytes = []
  23026. for (var i = 0; i < length; ++i) {
  23027. codePoint = string.charCodeAt(i)
  23028. // is surrogate component
  23029. if (codePoint > 0xD7FF && codePoint < 0xE000) {
  23030. // last char was a lead
  23031. if (!leadSurrogate) {
  23032. // no lead yet
  23033. if (codePoint > 0xDBFF) {
  23034. // unexpected trail
  23035. if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
  23036. continue
  23037. } else if (i + 1 === length) {
  23038. // unpaired lead
  23039. if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
  23040. continue
  23041. }
  23042. // valid lead
  23043. leadSurrogate = codePoint
  23044. continue
  23045. }
  23046. // 2 leads in a row
  23047. if (codePoint < 0xDC00) {
  23048. if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
  23049. leadSurrogate = codePoint
  23050. continue
  23051. }
  23052. // valid surrogate pair
  23053. codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
  23054. } else if (leadSurrogate) {
  23055. // valid bmp char, but last char was a lead
  23056. if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
  23057. }
  23058. leadSurrogate = null
  23059. // encode utf8
  23060. if (codePoint < 0x80) {
  23061. if ((units -= 1) < 0) break
  23062. bytes.push(codePoint)
  23063. } else if (codePoint < 0x800) {
  23064. if ((units -= 2) < 0) break
  23065. bytes.push(
  23066. codePoint >> 0x6 | 0xC0,
  23067. codePoint & 0x3F | 0x80
  23068. )
  23069. } else if (codePoint < 0x10000) {
  23070. if ((units -= 3) < 0) break
  23071. bytes.push(
  23072. codePoint >> 0xC | 0xE0,
  23073. codePoint >> 0x6 & 0x3F | 0x80,
  23074. codePoint & 0x3F | 0x80
  23075. )
  23076. } else if (codePoint < 0x110000) {
  23077. if ((units -= 4) < 0) break
  23078. bytes.push(
  23079. codePoint >> 0x12 | 0xF0,
  23080. codePoint >> 0xC & 0x3F | 0x80,
  23081. codePoint >> 0x6 & 0x3F | 0x80,
  23082. codePoint & 0x3F | 0x80
  23083. )
  23084. } else {
  23085. throw new Error('Invalid code point')
  23086. }
  23087. }
  23088. return bytes
  23089. }
  23090. function asciiToBytes (str) {
  23091. var byteArray = []
  23092. for (var i = 0; i < str.length; ++i) {
  23093. // Node's code seems to be doing this and not & 0x7F..
  23094. byteArray.push(str.charCodeAt(i) & 0xFF)
  23095. }
  23096. return byteArray
  23097. }
  23098. function utf16leToBytes (str, units) {
  23099. var c, hi, lo
  23100. var byteArray = []
  23101. for (var i = 0; i < str.length; ++i) {
  23102. if ((units -= 2) < 0) break
  23103. c = str.charCodeAt(i)
  23104. hi = c >> 8
  23105. lo = c % 256
  23106. byteArray.push(lo)
  23107. byteArray.push(hi)
  23108. }
  23109. return byteArray
  23110. }
  23111. function base64ToBytes (str) {
  23112. return base64.toByteArray(base64clean(str))
  23113. }
  23114. function blitBuffer (src, dst, offset, length) {
  23115. for (var i = 0; i < length; ++i) {
  23116. if ((i + offset >= dst.length) || (i >= src.length)) break
  23117. dst[i + offset] = src[i]
  23118. }
  23119. return i
  23120. }
  23121. function isnan (val) {
  23122. return val !== val // eslint-disable-line no-self-compare
  23123. }
  23124. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ 2)))
  23125. /***/ }),
  23126. /***/ 72:
  23127. /*!*****************************************!*\
  23128. !*** ./node_modules/base64-js/index.js ***!
  23129. \*****************************************/
  23130. /*! no static exports found */
  23131. /***/ (function(module, exports, __webpack_require__) {
  23132. "use strict";
  23133. exports.byteLength = byteLength
  23134. exports.toByteArray = toByteArray
  23135. exports.fromByteArray = fromByteArray
  23136. var lookup = []
  23137. var revLookup = []
  23138. var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
  23139. var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
  23140. for (var i = 0, len = code.length; i < len; ++i) {
  23141. lookup[i] = code[i]
  23142. revLookup[code.charCodeAt(i)] = i
  23143. }
  23144. // Support decoding URL-safe base64 strings, as Node.js does.
  23145. // See: https://en.wikipedia.org/wiki/Base64#URL_applications
  23146. revLookup['-'.charCodeAt(0)] = 62
  23147. revLookup['_'.charCodeAt(0)] = 63
  23148. function getLens (b64) {
  23149. var len = b64.length
  23150. if (len % 4 > 0) {
  23151. throw new Error('Invalid string. Length must be a multiple of 4')
  23152. }
  23153. // Trim off extra bytes after placeholder bytes are found
  23154. // See: https://github.com/beatgammit/base64-js/issues/42
  23155. var validLen = b64.indexOf('=')
  23156. if (validLen === -1) validLen = len
  23157. var placeHoldersLen = validLen === len
  23158. ? 0
  23159. : 4 - (validLen % 4)
  23160. return [validLen, placeHoldersLen]
  23161. }
  23162. // base64 is 4/3 + up to two characters of the original data
  23163. function byteLength (b64) {
  23164. var lens = getLens(b64)
  23165. var validLen = lens[0]
  23166. var placeHoldersLen = lens[1]
  23167. return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
  23168. }
  23169. function _byteLength (b64, validLen, placeHoldersLen) {
  23170. return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
  23171. }
  23172. function toByteArray (b64) {
  23173. var tmp
  23174. var lens = getLens(b64)
  23175. var validLen = lens[0]
  23176. var placeHoldersLen = lens[1]
  23177. var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))
  23178. var curByte = 0
  23179. // if there are placeholders, only get up to the last complete 4 chars
  23180. var len = placeHoldersLen > 0
  23181. ? validLen - 4
  23182. : validLen
  23183. var i
  23184. for (i = 0; i < len; i += 4) {
  23185. tmp =
  23186. (revLookup[b64.charCodeAt(i)] << 18) |
  23187. (revLookup[b64.charCodeAt(i + 1)] << 12) |
  23188. (revLookup[b64.charCodeAt(i + 2)] << 6) |
  23189. revLookup[b64.charCodeAt(i + 3)]
  23190. arr[curByte++] = (tmp >> 16) & 0xFF
  23191. arr[curByte++] = (tmp >> 8) & 0xFF
  23192. arr[curByte++] = tmp & 0xFF
  23193. }
  23194. if (placeHoldersLen === 2) {
  23195. tmp =
  23196. (revLookup[b64.charCodeAt(i)] << 2) |
  23197. (revLookup[b64.charCodeAt(i + 1)] >> 4)
  23198. arr[curByte++] = tmp & 0xFF
  23199. }
  23200. if (placeHoldersLen === 1) {
  23201. tmp =
  23202. (revLookup[b64.charCodeAt(i)] << 10) |
  23203. (revLookup[b64.charCodeAt(i + 1)] << 4) |
  23204. (revLookup[b64.charCodeAt(i + 2)] >> 2)
  23205. arr[curByte++] = (tmp >> 8) & 0xFF
  23206. arr[curByte++] = tmp & 0xFF
  23207. }
  23208. return arr
  23209. }
  23210. function tripletToBase64 (num) {
  23211. return lookup[num >> 18 & 0x3F] +
  23212. lookup[num >> 12 & 0x3F] +
  23213. lookup[num >> 6 & 0x3F] +
  23214. lookup[num & 0x3F]
  23215. }
  23216. function encodeChunk (uint8, start, end) {
  23217. var tmp
  23218. var output = []
  23219. for (var i = start; i < end; i += 3) {
  23220. tmp =
  23221. ((uint8[i] << 16) & 0xFF0000) +
  23222. ((uint8[i + 1] << 8) & 0xFF00) +
  23223. (uint8[i + 2] & 0xFF)
  23224. output.push(tripletToBase64(tmp))
  23225. }
  23226. return output.join('')
  23227. }
  23228. function fromByteArray (uint8) {
  23229. var tmp
  23230. var len = uint8.length
  23231. var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
  23232. var parts = []
  23233. var maxChunkLength = 16383 // must be multiple of 3
  23234. // go through the array every three bytes, we'll deal with trailing stuff later
  23235. for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
  23236. parts.push(encodeChunk(
  23237. uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)
  23238. ))
  23239. }
  23240. // pad the end with zeros, but make sure to not forget the extra bytes
  23241. if (extraBytes === 1) {
  23242. tmp = uint8[len - 1]
  23243. parts.push(
  23244. lookup[tmp >> 2] +
  23245. lookup[(tmp << 4) & 0x3F] +
  23246. '=='
  23247. )
  23248. } else if (extraBytes === 2) {
  23249. tmp = (uint8[len - 2] << 8) + uint8[len - 1]
  23250. parts.push(
  23251. lookup[tmp >> 10] +
  23252. lookup[(tmp >> 4) & 0x3F] +
  23253. lookup[(tmp << 2) & 0x3F] +
  23254. '='
  23255. )
  23256. }
  23257. return parts.join('')
  23258. }
  23259. /***/ }),
  23260. /***/ 73:
  23261. /*!***************************************!*\
  23262. !*** ./node_modules/ieee754/index.js ***!
  23263. \***************************************/
  23264. /*! no static exports found */
  23265. /***/ (function(module, exports) {
  23266. exports.read = function (buffer, offset, isLE, mLen, nBytes) {
  23267. var e, m
  23268. var eLen = (nBytes * 8) - mLen - 1
  23269. var eMax = (1 << eLen) - 1
  23270. var eBias = eMax >> 1
  23271. var nBits = -7
  23272. var i = isLE ? (nBytes - 1) : 0
  23273. var d = isLE ? -1 : 1
  23274. var s = buffer[offset + i]
  23275. i += d
  23276. e = s & ((1 << (-nBits)) - 1)
  23277. s >>= (-nBits)
  23278. nBits += eLen
  23279. for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}
  23280. m = e & ((1 << (-nBits)) - 1)
  23281. e >>= (-nBits)
  23282. nBits += mLen
  23283. for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}
  23284. if (e === 0) {
  23285. e = 1 - eBias
  23286. } else if (e === eMax) {
  23287. return m ? NaN : ((s ? -1 : 1) * Infinity)
  23288. } else {
  23289. m = m + Math.pow(2, mLen)
  23290. e = e - eBias
  23291. }
  23292. return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
  23293. }
  23294. exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
  23295. var e, m, c
  23296. var eLen = (nBytes * 8) - mLen - 1
  23297. var eMax = (1 << eLen) - 1
  23298. var eBias = eMax >> 1
  23299. var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
  23300. var i = isLE ? 0 : (nBytes - 1)
  23301. var d = isLE ? 1 : -1
  23302. var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
  23303. value = Math.abs(value)
  23304. if (isNaN(value) || value === Infinity) {
  23305. m = isNaN(value) ? 1 : 0
  23306. e = eMax
  23307. } else {
  23308. e = Math.floor(Math.log(value) / Math.LN2)
  23309. if (value * (c = Math.pow(2, -e)) < 1) {
  23310. e--
  23311. c *= 2
  23312. }
  23313. if (e + eBias >= 1) {
  23314. value += rt / c
  23315. } else {
  23316. value += rt * Math.pow(2, 1 - eBias)
  23317. }
  23318. if (value * c >= 2) {
  23319. e++
  23320. c /= 2
  23321. }
  23322. if (e + eBias >= eMax) {
  23323. m = 0
  23324. e = eMax
  23325. } else if (e + eBias >= 1) {
  23326. m = ((value * c) - 1) * Math.pow(2, mLen)
  23327. e = e + eBias
  23328. } else {
  23329. m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
  23330. e = 0
  23331. }
  23332. }
  23333. for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
  23334. e = (e << mLen) | m
  23335. eLen += mLen
  23336. for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
  23337. buffer[offset + i - d] |= s * 128
  23338. }
  23339. /***/ }),
  23340. /***/ 735:
  23341. /*!************************************************************!*\
  23342. !*** D:/data/zhonghong/saber-weixin/mixins/sharePoster.js ***!
  23343. \************************************************************/
  23344. /*! no static exports found */
  23345. /***/ (function(module, exports, __webpack_require__) {
  23346. "use strict";
  23347. /* WEBPACK VAR INJECTION */(function(uni) {Object.defineProperty(exports, "__esModule", { value: true });exports.sharePoster = void 0;
  23348. var _public = __webpack_require__(/*! @/api/public */ 39);
  23349. var _store = __webpack_require__(/*! @/api/store.js */ 195);
  23350. var _lang = _interopRequireDefault(__webpack_require__(/*! ../utils/lang.js */ 20));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} // +----------------------------------------------------------------------
  23351. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  23352. // +----------------------------------------------------------------------
  23353. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  23354. // +----------------------------------------------------------------------
  23355. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  23356. // +----------------------------------------------------------------------
  23357. // | Author: CRMEB Team <admin@crmeb.com>
  23358. // +----------------------------------------------------------------------
  23359. var sysHeight = uni.getSystemInfoSync().statusBarHeight + 'px';var sharePoster = { data: function data() {return { //二维码参数
  23360. codeShow: false, cid: '1', codeVal: "", // 要生成的二维码值
  23361. size: 200, // 二维码大小
  23362. unit: 'upx', // 单位
  23363. background: '#FFF', // 背景色
  23364. foreground: '#000', // 前景色
  23365. pdground: '#000', // 角标色
  23366. codeIcon: '', // 二维码图标
  23367. iconsize: 40, // 二维码图标大小
  23368. lv: 3, // 二维码容错级别 , 一般不用设置,默认就行
  23369. onval: true, // val值变化时自动重新生成二维码
  23370. loadMake: true, // 组件加载完成后自动生成二维码
  23371. base64Show: 0, shareQrcode: 0, followCode: '',
  23372. selectSku: {},
  23373. currentPage: false,
  23374. sysHeight: sysHeight,
  23375. isShow: 0,
  23376. storeImageBase64: '' };
  23377. },
  23378. methods: {
  23379. qrR: function qrR(res) {
  23380. },
  23381. getImageBase64: function getImageBase64() {
  23382. var that = this;
  23383. (0, _public.imageBase64)(that.storeImage, '').
  23384. then(function (res) {
  23385. that.storeImageBase64 = res.data.image;
  23386. // that.PromotionCode = res.data.code;
  23387. }).
  23388. catch(function () {});
  23389. },
  23390. /**
  23391. * 生成海报
  23392. */
  23393. goPoster: function goPoster() {
  23394. var that = this;
  23395. that.posters = false;
  23396. that.$set(that, "canvasStatus", true);
  23397. var arr2;
  23398. arr2 = [that.posterbackgd, that.storeImage, that.PromotionCode];
  23399. if (that.isDown)
  23400. return that.$util.Tips({
  23401. title: _lang.default.t("\u6B63\u5728\u4E0B\u8F7D\u6D77\u62A5,\u8BF7\u7A0D\u540E\u518D\u8BD5") });
  23402. uni.getImageInfo({
  23403. src: that.PromotionCode,
  23404. fail: function fail(res) {
  23405. return that.$util.Tips({
  23406. title: _lang.default.t("\u6B63\u5728\u4E0B\u8F7D\u6D77\u62A5,\u8BF7\u7A0D\u540E\u518D\u8BD5") });
  23407. },
  23408. success: function success() {
  23409. if (arr2[2] == "") {
  23410. //海报二维码不存在则从新下载
  23411. that.downloadFilePromotionCode(function (msgPromotionCode) {
  23412. arr2[2] = msgPromotionCode;
  23413. if (arr2[2] == "")
  23414. return that.$util.Tips({
  23415. title: _lang.default.t("\u6D77\u62A5\u4E8C\u7EF4\u7801\u751F\u6210\u5931\u8D25") });
  23416. that.$util.PosterCanvas(
  23417. arr2,
  23418. that.storeInfo.store_name,
  23419. that.storeInfo.price,
  23420. that.storeInfo.ot_price,
  23421. function (tempFilePath) {
  23422. that.$set(that, "posterImage", tempFilePath);
  23423. that.$set(that, "posterImageStatus", true);
  23424. that.$set(that, "canvasStatus", false);
  23425. that.$set(that, "actionSheetHidden", !that.
  23426. actionSheetHidden);
  23427. });
  23428. });
  23429. } else {
  23430. //生成推广海报
  23431. that.$nextTick(function (e) {
  23432. that.$util.PosterCanvas(
  23433. arr2,
  23434. that.storeInfo.store_name,
  23435. that.storeInfo.price,
  23436. that.storeInfo.ot_price,
  23437. function (tempFilePath) {
  23438. that.$set(that, "posterImage", tempFilePath);
  23439. that.$set(that, "posterImageStatus", true);
  23440. that.$set(that, "canvasStatus", false);
  23441. that.$set(that, "actionSheetHidden", !that.
  23442. actionSheetHidden);
  23443. });
  23444. });
  23445. }
  23446. } });
  23447. },
  23448. //替换安全域名
  23449. setDomain: function setDomain(url) {
  23450. url = url ? url.toString() : "";
  23451. //本地调试打开,生产请注销
  23452. if (url.indexOf("https://") > -1) return url;else
  23453. return url.replace("http://", "https://");
  23454. },
  23455. //获取海报产品图
  23456. downloadFilestoreImage: function downloadFilestoreImage() {
  23457. var that = this;
  23458. uni.downloadFile({
  23459. url: that.setDomain(that.storeInfo.image),
  23460. success: function success(res) {
  23461. that.storeImage = res.tempFilePath;
  23462. that.storeImageBase64 = res.tempFilePath;
  23463. },
  23464. fail: function fail() {
  23465. return that.$util.Tips({
  23466. title: "" });
  23467. that.storeImage = "";
  23468. } });
  23469. },
  23470. /**
  23471. * 获取产品分销二维码
  23472. * @param function successFn 下载完成回调
  23473. *
  23474. */
  23475. downloadFilePromotionCode: function downloadFilePromotionCode(successFn) {
  23476. var that = this;
  23477. (0, _store.getProductCode)(that.id).
  23478. then(function (res) {
  23479. uni.downloadFile({
  23480. url: that.setDomain(res.data.code),
  23481. success: function success(res) {
  23482. that.$set(that, "isDown", false);
  23483. that.$set(that, "PromotionCode", res.tempFilePath);
  23484. if (typeof successFn == "function")
  23485. successFn && successFn(res.tempFilePath);
  23486. },
  23487. fail: function fail() {
  23488. that.$set(that, "isDown", false);
  23489. that.$set(that, "PromotionCode", "");
  23490. } });
  23491. }).
  23492. catch(function (err) {
  23493. that.$set(that, "isDown", false);
  23494. that.$set(that, "PromotionCode", "");
  23495. return that.$util.Tips({
  23496. title: err });
  23497. });
  23498. } } };exports.sharePoster = sharePoster;
  23499. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["default"]))
  23500. /***/ }),
  23501. /***/ 74:
  23502. /*!***************************************!*\
  23503. !*** ./node_modules/isarray/index.js ***!
  23504. \***************************************/
  23505. /*! no static exports found */
  23506. /***/ (function(module, exports) {
  23507. var toString = {}.toString;
  23508. module.exports = Array.isArray || function (arr) {
  23509. return toString.call(arr) == '[object Array]';
  23510. };
  23511. /***/ }),
  23512. /***/ 744:
  23513. /*!******************************************************!*\
  23514. !*** D:/data/zhonghong/saber-weixin/api/activity.js ***!
  23515. \******************************************************/
  23516. /*! no static exports found */
  23517. /***/ (function(module, exports, __webpack_require__) {
  23518. "use strict";
  23519. Object.defineProperty(exports, "__esModule", { value: true });exports.getCombinationList = getCombinationList;exports.getCombinationDetail = getCombinationDetail;exports.getCombinationPink = getCombinationPink;exports.postCombinationRemove = postCombinationRemove;exports.getBargainList = getBargainList;exports.getCombinationBannerList = getCombinationBannerList;exports.getPink = getPink;exports.getBargainUserList = getBargainUserList;exports.getBargainDetail = getBargainDetail;exports.postBargainStartUser = postBargainStartUser;exports.postBargainStart = postBargainStart;exports.postBargainHelp = postBargainHelp;exports.postBargainHelpPrice = postBargainHelpPrice;exports.postBargainHelpList = postBargainHelpList;exports.postBargainHelpCount = postBargainHelpCount;exports.postBargainShare = postBargainShare;exports.getSeckillIndexTime = getSeckillIndexTime;exports.getSeckillList = getSeckillList;exports.getSeckillDetail = getSeckillDetail;exports.getBargainPoster = getBargainPoster;exports.getCombinationPoster = getCombinationPoster;exports.getBargainUserCancel = getBargainUserCancel;exports.seckillCode = seckillCode;exports.scombinationCode = scombinationCode;exports.getCombinationPosterData = getCombinationPosterData;exports.getBargainPosterData = getBargainPosterData;exports.integralOrderConfirm = integralOrderConfirm;exports.integralOrderCreate = integralOrderCreate;exports.integralOrderDetails = integralOrderDetails;exports.getIntegralProductDetail = getIntegralProductDetail;exports.getStoreIntegralList = getStoreIntegralList;exports.getIntegralOrderList = getIntegralOrderList;exports.getLogisticsDetails = getLogisticsDetails;exports.orderTake = orderTake;exports.orderDel = orderDel;exports.getPresellList = getPresellList;
  23520. var _request = _interopRequireDefault(__webpack_require__(/*! @/utils/request.js */ 18));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} // +----------------------------------------------------------------------
  23521. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  23522. // +----------------------------------------------------------------------
  23523. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  23524. // +----------------------------------------------------------------------
  23525. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  23526. // +----------------------------------------------------------------------
  23527. // | Author: CRMEB Team <admin@crmeb.com>
  23528. // +----------------------------------------------------------------------
  23529. /**
  23530. *
  23531. * 所有活动接口 包括:拼团,砍价,秒杀
  23532. *
  23533. */ /**
  23534. * 拼团列表
  23535. *
  23536. */function getCombinationList(data) {return _request.default.get('combination/list', data, { noAuth: true });}
  23537. /**
  23538. * 拼团详情
  23539. *
  23540. */
  23541. function getCombinationDetail(id) {
  23542. return _request.default.get('combination/detail/' + id);
  23543. }
  23544. /**
  23545. * 拼团 开团
  23546. */
  23547. function getCombinationPink(id) {
  23548. return _request.default.get("combination/pink/" + id);
  23549. }
  23550. /**
  23551. * 拼团 取消开团
  23552. */
  23553. function postCombinationRemove(data) {
  23554. return _request.default.post("combination/remove", data);
  23555. }
  23556. /**
  23557. * 砍价列表
  23558. */
  23559. function getBargainList(data) {
  23560. return _request.default.get("bargain/list", data, {
  23561. noAuth: true });
  23562. }
  23563. /**
  23564. * 拼团轮播
  23565. *
  23566. */
  23567. function getCombinationBannerList(data) {
  23568. return _request.default.get('combination/banner_list', data, {
  23569. noAuth: true });
  23570. }
  23571. /**
  23572. * 拼团人数
  23573. *
  23574. */
  23575. function getPink(data) {
  23576. return _request.default.get('pink', data, {
  23577. noAuth: true });
  23578. }
  23579. /**
  23580. *
  23581. * 砍价列表(已参与)
  23582. * @param object data
  23583. */
  23584. function getBargainUserList(data) {
  23585. return _request.default.get('bargain/user/list', data);
  23586. }
  23587. /**
  23588. * 砍价产品详情
  23589. */
  23590. function getBargainDetail(id, uid) {
  23591. return _request.default.get("bargain/detail/".concat(id, "?bargainUid=").concat(uid));
  23592. }
  23593. /**
  23594. * 砍价 开启砍价用户信息
  23595. */
  23596. function postBargainStartUser(data) {
  23597. return _request.default.post("bargain/start/user", data);
  23598. }
  23599. /**
  23600. * 砍价开启
  23601. */
  23602. function postBargainStart(bargainId) {
  23603. return _request.default.post("bargain/start", {
  23604. bargainId: bargainId });
  23605. }
  23606. /**
  23607. * 砍价 帮助好友砍价
  23608. */
  23609. function postBargainHelp(data) {
  23610. return _request.default.post("bargain/help", data);
  23611. }
  23612. /**
  23613. * 砍价 砍掉金额
  23614. */
  23615. function postBargainHelpPrice(data) {
  23616. return _request.default.post("bargain/help/price", data);
  23617. }
  23618. /**
  23619. * 砍价 砍价帮
  23620. */
  23621. function postBargainHelpList(data) {
  23622. return _request.default.post("bargain/help/list", data);
  23623. }
  23624. /**
  23625. * 砍价 砍价帮总人数、剩余金额、进度条、已经砍掉的价格
  23626. */
  23627. function postBargainHelpCount(data) {
  23628. return _request.default.post("bargain/help/count", data);
  23629. }
  23630. /**
  23631. * 砍价 观看/分享/参与次数
  23632. */
  23633. function postBargainShare(bargainId) {
  23634. return _request.default.post("bargain/share", {
  23635. bargainId: bargainId });
  23636. }
  23637. /**
  23638. * 秒杀产品时间区间
  23639. *
  23640. */
  23641. function getSeckillIndexTime() {
  23642. return _request.default.get('seckill/index', {}, {
  23643. noAuth: true });
  23644. }
  23645. /**
  23646. * 秒杀产品列表
  23647. * @param int time
  23648. * @param object data
  23649. */
  23650. function getSeckillList(time, data) {
  23651. return _request.default.get('seckill/list/' + time, data, {
  23652. noAuth: true });
  23653. }
  23654. /**
  23655. * 秒杀产品详情
  23656. * @param int id
  23657. */
  23658. function getSeckillDetail(id, data) {
  23659. return _request.default.get('seckill/detail/' + id, data);
  23660. }
  23661. /**
  23662. * 砍价海报
  23663. * @param object data
  23664. *
  23665. */
  23666. function getBargainPoster(data) {
  23667. return _request.default.post('bargain/poster', data);
  23668. }
  23669. /**
  23670. * 拼团海报
  23671. * @param object data
  23672. *
  23673. */
  23674. function getCombinationPoster(data) {
  23675. return _request.default.post('combination/poster', data);
  23676. }
  23677. /**
  23678. * 砍价取消
  23679. */
  23680. function getBargainUserCancel(data) {
  23681. return _request.default.post("bargain/user/cancel", data);
  23682. }
  23683. /**
  23684. * 获取秒杀小程序二维码
  23685. */
  23686. function seckillCode(id, data) {
  23687. return _request.default.get("seckill/code/" + id, data);
  23688. }
  23689. /**
  23690. * 获取拼团小程序二维码
  23691. */
  23692. function scombinationCode(id) {
  23693. return _request.default.get("combination/code/" + id);
  23694. }
  23695. /**
  23696. * 获取砍价海报详细信息
  23697. */
  23698. function getCombinationPosterData(id) {
  23699. return _request.default.get("combination/poster_info/" + id);
  23700. }
  23701. /**
  23702. * 获取砍价海报详细信息
  23703. */
  23704. function getBargainPosterData(id) {
  23705. return _request.default.get("bargain/poster_info/" + id);
  23706. }
  23707. /**
  23708. * 获取积分订单详细信息
  23709. */
  23710. function integralOrderConfirm(data) {
  23711. return _request.default.post('store_integral/order/confirm', data);
  23712. }
  23713. /**
  23714. * 获取积分订单创建
  23715. */
  23716. function integralOrderCreate(data) {
  23717. return _request.default.post('store_integral/order/create', data);
  23718. }
  23719. /**
  23720. * 获取积分订单详情
  23721. * @param string cartId
  23722. */
  23723. function integralOrderDetails(order) {
  23724. return _request.default.get("store_integral/order/detail/".concat(order));
  23725. }
  23726. /**
  23727. * 积分产品详情
  23728. * @param int id
  23729. *
  23730. */
  23731. function getIntegralProductDetail(id) {
  23732. return _request.default.get('store_integral/detail/' + id, {}, {
  23733. noAuth: true });
  23734. }
  23735. /**
  23736. * 积分商城商品列表
  23737. * @param object data
  23738. */
  23739. function getStoreIntegralList(data) {
  23740. return _request.default.get('store_integral/list', data);
  23741. }
  23742. /**
  23743. * 积分兑换列表
  23744. * @param object data
  23745. */
  23746. function getIntegralOrderList(data) {
  23747. return _request.default.get('store_integral/order/list', data);
  23748. }
  23749. /**
  23750. * 积分兑换详情
  23751. */
  23752. function getLogisticsDetails(orderId) {
  23753. return _request.default.get("store_integral/order/express/".concat(orderId));
  23754. }
  23755. /**
  23756. * 积分兑换订单确认收货
  23757. * @param object data
  23758. */
  23759. function orderTake(data) {
  23760. return _request.default.post("store_integral/order/take", data);
  23761. }
  23762. /**
  23763. * 积分兑换订单删除
  23764. * @param object data
  23765. */
  23766. function orderDel(data) {
  23767. return _request.default.post("store_integral/order/del", data);
  23768. }
  23769. /**
  23770. * 预售商品列表
  23771. */
  23772. function getPresellList(data) {
  23773. return _request.default.get("advance/list", data);
  23774. }
  23775. /***/ }),
  23776. /***/ 75:
  23777. /*!******************************************************************************!*\
  23778. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/util/route.js ***!
  23779. \******************************************************************************/
  23780. /*! no static exports found */
  23781. /***/ (function(module, exports, __webpack_require__) {
  23782. "use strict";
  23783. /* WEBPACK VAR INJECTION */(function(uni) {Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _regenerator = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/regenerator */ 9));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {try {var info = gen[key](arg);var value = info.value;} catch (error) {reject(error);return;}if (info.done) {resolve(value);} else {Promise.resolve(value).then(_next, _throw);}}function _asyncToGenerator(fn) {return function () {var self = this,args = arguments;return new Promise(function (resolve, reject) {var gen = fn.apply(self, args);function _next(value) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);}function _throw(err) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);}_next(undefined);});};}function _classCallCheck(instance, Constructor) {if (!(instance instanceof Constructor)) {throw new TypeError("Cannot call a class as a function");}}function _defineProperties(target, props) {for (var i = 0; i < props.length; i++) {var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ("value" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);}}function _createClass(Constructor, protoProps, staticProps) {if (protoProps) _defineProperties(Constructor.prototype, protoProps);if (staticProps) _defineProperties(Constructor, staticProps);return Constructor;} /**
  23784. * 路由跳转方法,该方法相对于直接使用uni.xxx的好处是使用更加简单快捷
  23785. * 并且带有路由拦截功能
  23786. */var
  23787. Router = /*#__PURE__*/function () {
  23788. function Router() {_classCallCheck(this, Router);
  23789. // 原始属性定义
  23790. this.config = {
  23791. type: 'navigateTo',
  23792. url: '',
  23793. delta: 1, // navigateBack页面后退时,回退的层数
  23794. params: {}, // 传递的参数
  23795. animationType: 'pop-in', // 窗口动画,只在APP有效
  23796. animationDuration: 300, // 窗口动画持续时间,单位毫秒,只在APP有效
  23797. intercept: false // 是否需要拦截
  23798. };
  23799. // 因为route方法是需要对外赋值给另外的对象使用,同时route内部有使用this,会导致route失去上下文
  23800. // 这里在构造函数中进行this绑定
  23801. this.route = this.route.bind(this);
  23802. }
  23803. // 判断url前面是否有"/",如果没有则加上,否则无法跳转
  23804. _createClass(Router, [{ key: "addRootPath", value: function addRootPath(url) {
  23805. return url[0] === '/' ? url : "/".concat(url);
  23806. }
  23807. // 整合路由参数
  23808. }, { key: "mixinParam", value: function mixinParam(url, params) {
  23809. url = url && this.addRootPath(url);
  23810. // 使用正则匹配,主要依据是判断是否有"/","?","="等,如“/page/index/index?name=mary"
  23811. // 如果有url中有get参数,转换后无需带上"?"
  23812. var query = '';
  23813. if (/.*\/.*\?.*=.*/.test(url)) {
  23814. // object对象转为get类型的参数
  23815. query = uni.$u.queryParams(params, false);
  23816. // 因为已有get参数,所以后面拼接的参数需要带上"&"隔开
  23817. return url += "&".concat(query);
  23818. }
  23819. // 直接拼接参数,因为此处url中没有后面的query参数,也就没有"?/&"之类的符号
  23820. query = uni.$u.queryParams(params);
  23821. return url += query;
  23822. }
  23823. // 对外的方法名称
  23824. }, { key: "route", value: function () {var _route = _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee() {var options,params,mergeConfig,isNext,_args = arguments;return _regenerator.default.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:options = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};params = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};
  23825. // 合并用户的配置和内部的默认配置
  23826. mergeConfig = {};
  23827. if (typeof options === 'string') {
  23828. // 如果options为字符串,则为route(url, params)的形式
  23829. mergeConfig.url = this.mixinParam(options, params);
  23830. mergeConfig.type = 'navigateTo';
  23831. } else {
  23832. mergeConfig = uni.$u.deepMerge(options, this.config);
  23833. // 否则正常使用mergeConfig中的url和params进行拼接
  23834. mergeConfig.url = this.mixinParam(options.url, options.params);
  23835. }
  23836. // 如果本次跳转的路径和本页面路径一致,不执行跳转,防止用户快速点击跳转按钮,造成多次跳转同一个页面的问题
  23837. if (!(mergeConfig.url === uni.$u.page())) {_context.next = 6;break;}return _context.abrupt("return");case 6:
  23838. if (params.intercept) {
  23839. this.config.intercept = params.intercept;
  23840. }
  23841. // params参数也带给拦截器
  23842. mergeConfig.params = params;
  23843. // 合并内外部参数
  23844. mergeConfig = uni.$u.deepMerge(this.config, mergeConfig);
  23845. // 判断用户是否定义了拦截器
  23846. if (!(typeof uni.$u.routeIntercept === 'function')) {_context.next = 16;break;}_context.next = 12;return (
  23847. new Promise(function (resolve, reject) {
  23848. uni.$u.routeIntercept(mergeConfig, resolve);
  23849. }));case 12:isNext = _context.sent;
  23850. // 如果isNext为true,则执行路由跳转
  23851. isNext && this.openPage(mergeConfig);_context.next = 17;break;case 16:
  23852. this.openPage(mergeConfig);case 17:case "end":return _context.stop();}}}, _callee, this);}));function route() {return _route.apply(this, arguments);}return route;}()
  23853. // 执行路由跳转
  23854. }, { key: "openPage", value: function openPage(config) {
  23855. // 解构参数
  23856. var
  23857. url =
  23858. config.url,type = config.type,delta = config.delta,animationType = config.animationType,animationDuration = config.animationDuration;
  23859. if (config.type == 'navigateTo' || config.type == 'to') {
  23860. uni.navigateTo({
  23861. url: url,
  23862. animationType: animationType,
  23863. animationDuration: animationDuration });
  23864. }
  23865. if (config.type == 'redirectTo' || config.type == 'redirect') {
  23866. uni.redirectTo({
  23867. url: url });
  23868. }
  23869. if (config.type == 'switchTab' || config.type == 'tab') {
  23870. uni.switchTab({
  23871. url: url });
  23872. }
  23873. if (config.type == 'reLaunch' || config.type == 'launch') {
  23874. uni.reLaunch({
  23875. url: url });
  23876. }
  23877. if (config.type == 'navigateBack' || config.type == 'back') {
  23878. uni.navigateBack({
  23879. delta: delta });
  23880. }
  23881. } }]);return Router;}();var _default =
  23882. new Router().route;exports.default = _default;
  23883. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["default"]))
  23884. /***/ }),
  23885. /***/ 758:
  23886. /*!*******************************************************************!*\
  23887. !*** D:/data/zhonghong/saber-weixin/components/zb-code/qrcode.js ***!
  23888. \*******************************************************************/
  23889. /*! no static exports found */
  23890. /***/ (function(module, exports, __webpack_require__) {
  23891. "use strict";
  23892. /* WEBPACK VAR INJECTION */(function(uni) {Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var QRCode = {};
  23893. (function () {
  23894. /**
  23895. * 获取单个字符的utf8编码
  23896. * unicode BMP平面约65535个字符
  23897. * @param {num} code
  23898. * return {array}
  23899. */
  23900. function unicodeFormat8(code) {
  23901. // 1 byte
  23902. var c0, c1, c2;
  23903. if (code < 128) {
  23904. return [code];
  23905. // 2 bytes
  23906. } else if (code < 2048) {
  23907. c0 = 192 + (code >> 6);
  23908. c1 = 128 + (code & 63);
  23909. return [c0, c1];
  23910. // 3 bytes
  23911. } else {
  23912. c0 = 224 + (code >> 12);
  23913. c1 = 128 + (code >> 6 & 63);
  23914. c2 = 128 + (code & 63);
  23915. return [c0, c1, c2];
  23916. }
  23917. }
  23918. /**
  23919. * 获取字符串的utf8编码字节串
  23920. * @param {string} string
  23921. * @return {array}
  23922. */
  23923. function getUTF8Bytes(string) {
  23924. var utf8codes = [];
  23925. for (var i = 0; i < string.length; i++) {
  23926. var code = string.charCodeAt(i);
  23927. var utf8 = unicodeFormat8(code);
  23928. for (var j = 0; j < utf8.length; j++) {
  23929. utf8codes.push(utf8[j]);
  23930. }
  23931. }
  23932. return utf8codes;
  23933. }
  23934. /**
  23935. * 二维码算法实现
  23936. * @param {string} data 要编码的信息字符串
  23937. * @param {num} errorCorrectLevel 纠错等级
  23938. */
  23939. function QRCodeAlg(data, twodimensionalcodeee5conversionmethod) {
  23940. this.typeNumber = -1; //版本
  23941. this.errorCorrectLevel = twodimensionalcodeee5conversionmethod;
  23942. this.modules = null; //二维矩阵,存放最终结果
  23943. this.moduleCount = 0; //矩阵大小
  23944. this.dataCache = null; //数据缓存
  23945. this.rsBlocks = null; //版本数据信息
  23946. this.totalDataCount = -1; //可使用的数据量
  23947. this.data = data;
  23948. this.utf8bytes = getUTF8Bytes(data);
  23949. this.make();
  23950. }
  23951. QRCodeAlg.prototype = {
  23952. constructor: QRCodeAlg,
  23953. /**
  23954. * 获取二维码矩阵大小
  23955. * @return {num} 矩阵大小
  23956. */
  23957. getModuleCount: function getModuleCount() {
  23958. return this.moduleCount;
  23959. },
  23960. /**
  23961. * 编码
  23962. */
  23963. make: function make() {
  23964. this.getRightType();
  23965. this.dataCache = this.createData();
  23966. this.createQrcode();
  23967. },
  23968. /**
  23969. * 设置二位矩阵功能图形
  23970. * @param {bool} test 表示是否在寻找最好掩膜阶段
  23971. * @param {num} maskPattern 掩膜的版本
  23972. */
  23973. makeImpl: function makeImpl(maskPattern) {
  23974. this.moduleCount = this.typeNumber * 4 + 17;
  23975. this.modules = new Array(this.moduleCount);
  23976. for (var row = 0; row < this.moduleCount; row++) {
  23977. this.modules[row] = new Array(this.moduleCount);
  23978. }
  23979. this.setupPositionProbePattern(0, 0);
  23980. this.setupPositionProbePattern(this.moduleCount - 7, 0);
  23981. this.setupPositionProbePattern(0, this.moduleCount - 7);
  23982. this.setupPositionAdjustPattern();
  23983. this.setupTimingPattern();
  23984. this.setupTypeInfo(true, maskPattern);
  23985. if (this.typeNumber >= 7) {
  23986. this.setupTypeNumber(true);
  23987. }
  23988. this.mapData(this.dataCache, maskPattern);
  23989. },
  23990. /**
  23991. * 设置二维码的位置探测图形
  23992. * @param {num} row 探测图形的中心横坐标
  23993. * @param {num} col 探测图形的中心纵坐标
  23994. */
  23995. setupPositionProbePattern: function setupPositionProbePattern(row, col) {
  23996. for (var r = -1; r <= 7; r++) {
  23997. if (row + r <= -1 || this.moduleCount <= row + r) continue;
  23998. for (var c = -1; c <= 7; c++) {
  23999. if (col + c <= -1 || this.moduleCount <= col + c) continue;
  24000. if (0 <= r && r <= 6 && (c == 0 || c == 6) || 0 <= c && c <= 6 && (r == 0 || r == 6) || 2 <= r && r <= 4 && 2 <= c && c <= 4) {
  24001. this.modules[row + r][col + c] = true;
  24002. } else {
  24003. this.modules[row + r][col + c] = false;
  24004. }
  24005. }
  24006. }
  24007. },
  24008. /**
  24009. * 创建二维码
  24010. * @return {[type]} [description]
  24011. */
  24012. createQrcode: function createQrcode() {
  24013. var minLostPoint = 0;
  24014. var pattern = 0;
  24015. var bestModules = null;
  24016. for (var i = 0; i < 8; i++) {
  24017. this.makeImpl(i);
  24018. var lostPoint = QRUtil.getLostPoint(this);
  24019. if (i == 0 || minLostPoint > lostPoint) {
  24020. minLostPoint = lostPoint;
  24021. pattern = i;
  24022. bestModules = this.modules;
  24023. }
  24024. }
  24025. this.modules = bestModules;
  24026. this.setupTypeInfo(false, pattern);
  24027. if (this.typeNumber >= 7) {
  24028. this.setupTypeNumber(false);
  24029. }
  24030. },
  24031. /**
  24032. * 设置定位图形
  24033. * @return {[type]} [description]
  24034. */
  24035. setupTimingPattern: function setupTimingPattern() {
  24036. for (var r = 8; r < this.moduleCount - 8; r++) {
  24037. if (this.modules[r][6] != null) {
  24038. continue;
  24039. }
  24040. this.modules[r][6] = r % 2 == 0;
  24041. if (this.modules[6][r] != null) {
  24042. continue;
  24043. }
  24044. this.modules[6][r] = r % 2 == 0;
  24045. }
  24046. },
  24047. /**
  24048. * 设置矫正图形
  24049. * @return {[type]} [description]
  24050. */
  24051. setupPositionAdjustPattern: function setupPositionAdjustPattern() {
  24052. var pos = QRUtil.getPatternPosition(this.typeNumber);
  24053. for (var i = 0; i < pos.length; i++) {
  24054. for (var j = 0; j < pos.length; j++) {
  24055. var row = pos[i];
  24056. var col = pos[j];
  24057. if (this.modules[row][col] != null) {
  24058. continue;
  24059. }
  24060. for (var r = -2; r <= 2; r++) {
  24061. for (var c = -2; c <= 2; c++) {
  24062. if (r == -2 || r == 2 || c == -2 || c == 2 || r == 0 && c == 0) {
  24063. this.modules[row + r][col + c] = true;
  24064. } else {
  24065. this.modules[row + r][col + c] = false;
  24066. }
  24067. }
  24068. }
  24069. }
  24070. }
  24071. },
  24072. /**
  24073. * 设置版本信息(7以上版本才有)
  24074. * @param {bool} test 是否处于判断最佳掩膜阶段
  24075. * @return {[type]} [description]
  24076. */
  24077. setupTypeNumber: function setupTypeNumber(test) {
  24078. var bits = QRUtil.getBCHTypeNumber(this.typeNumber);
  24079. for (var i = 0; i < 18; i++) {
  24080. var mod = !test && (bits >> i & 1) == 1;
  24081. this.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod;
  24082. this.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;
  24083. }
  24084. },
  24085. /**
  24086. * 设置格式信息(纠错等级和掩膜版本)
  24087. * @param {bool} test
  24088. * @param {num} maskPattern 掩膜版本
  24089. * @return {}
  24090. */
  24091. setupTypeInfo: function setupTypeInfo(test, maskPattern) {
  24092. var data = QRErrorCorrectLevel[this.errorCorrectLevel] << 3 | maskPattern;
  24093. var bits = QRUtil.getBCHTypeInfo(data);
  24094. // vertical
  24095. for (var i = 0; i < 15; i++) {
  24096. var mod = !test && (bits >> i & 1) == 1;
  24097. if (i < 6) {
  24098. this.modules[i][8] = mod;
  24099. } else if (i < 8) {
  24100. this.modules[i + 1][8] = mod;
  24101. } else {
  24102. this.modules[this.moduleCount - 15 + i][8] = mod;
  24103. }
  24104. // horizontal
  24105. var mod = !test && (bits >> i & 1) == 1;
  24106. if (i < 8) {
  24107. this.modules[8][this.moduleCount - i - 1] = mod;
  24108. } else if (i < 9) {
  24109. this.modules[8][15 - i - 1 + 1] = mod;
  24110. } else {
  24111. this.modules[8][15 - i - 1] = mod;
  24112. }
  24113. }
  24114. // fixed module
  24115. this.modules[this.moduleCount - 8][8] = !test;
  24116. },
  24117. /**
  24118. * 数据编码
  24119. * @return {[type]} [description]
  24120. */
  24121. createData: function createData() {
  24122. var buffer = new QRBitBuffer();
  24123. var lengthBits = this.typeNumber > 9 ? 16 : 8;
  24124. buffer.put(4, 4); //添加模式
  24125. buffer.put(this.utf8bytes.length, lengthBits);
  24126. for (var i = 0, l = this.utf8bytes.length; i < l; i++) {
  24127. buffer.put(this.utf8bytes[i], 8);
  24128. }
  24129. if (buffer.length + 4 <= this.totalDataCount * 8) {
  24130. buffer.put(0, 4);
  24131. }
  24132. // padding
  24133. while (buffer.length % 8 != 0) {
  24134. buffer.putBit(false);
  24135. }
  24136. // padding
  24137. while (true) {
  24138. if (buffer.length >= this.totalDataCount * 8) {
  24139. break;
  24140. }
  24141. buffer.put(QRCodeAlg.PAD0, 8);
  24142. if (buffer.length >= this.totalDataCount * 8) {
  24143. break;
  24144. }
  24145. buffer.put(QRCodeAlg.PAD1, 8);
  24146. }
  24147. return this.createBytes(buffer);
  24148. },
  24149. /**
  24150. * 纠错码编码
  24151. * @param {buffer} buffer 数据编码
  24152. * @return {[type]}
  24153. */
  24154. createBytes: function createBytes(buffer) {
  24155. var offset = 0;
  24156. var maxDcCount = 0;
  24157. var maxEcCount = 0;
  24158. var length = this.rsBlock.length / 3;
  24159. var rsBlocks = new Array();
  24160. for (var i = 0; i < length; i++) {
  24161. var count = this.rsBlock[i * 3 + 0];
  24162. var totalCount = this.rsBlock[i * 3 + 1];
  24163. var dataCount = this.rsBlock[i * 3 + 2];
  24164. for (var j = 0; j < count; j++) {
  24165. rsBlocks.push([dataCount, totalCount]);
  24166. }
  24167. }
  24168. var dcdata = new Array(rsBlocks.length);
  24169. var ecdata = new Array(rsBlocks.length);
  24170. for (var r = 0; r < rsBlocks.length; r++) {
  24171. var dcCount = rsBlocks[r][0];
  24172. var ecCount = rsBlocks[r][1] - dcCount;
  24173. maxDcCount = Math.max(maxDcCount, dcCount);
  24174. maxEcCount = Math.max(maxEcCount, ecCount);
  24175. dcdata[r] = new Array(dcCount);
  24176. for (var i = 0; i < dcdata[r].length; i++) {
  24177. dcdata[r][i] = 0xff & buffer.buffer[i + offset];
  24178. }
  24179. offset += dcCount;
  24180. var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);
  24181. var rawPoly = new QRPolynomial(dcdata[r], rsPoly.getLength() - 1);
  24182. var modPoly = rawPoly.mod(rsPoly);
  24183. ecdata[r] = new Array(rsPoly.getLength() - 1);
  24184. for (var i = 0; i < ecdata[r].length; i++) {
  24185. var modIndex = i + modPoly.getLength() - ecdata[r].length;
  24186. ecdata[r][i] = modIndex >= 0 ? modPoly.get(modIndex) : 0;
  24187. }
  24188. }
  24189. var data = new Array(this.totalDataCount);
  24190. var index = 0;
  24191. for (var i = 0; i < maxDcCount; i++) {
  24192. for (var r = 0; r < rsBlocks.length; r++) {
  24193. if (i < dcdata[r].length) {
  24194. data[index++] = dcdata[r][i];
  24195. }
  24196. }
  24197. }
  24198. for (var i = 0; i < maxEcCount; i++) {
  24199. for (var r = 0; r < rsBlocks.length; r++) {
  24200. if (i < ecdata[r].length) {
  24201. data[index++] = ecdata[r][i];
  24202. }
  24203. }
  24204. }
  24205. return data;
  24206. },
  24207. /**
  24208. * 布置模块,构建最终信息
  24209. * @param {} data
  24210. * @param {} maskPattern
  24211. * @return {}
  24212. */
  24213. mapData: function mapData(data, maskPattern) {
  24214. var inc = -1;
  24215. var row = this.moduleCount - 1;
  24216. var bitIndex = 7;
  24217. var byteIndex = 0;
  24218. for (var col = this.moduleCount - 1; col > 0; col -= 2) {
  24219. if (col == 6) col--;
  24220. while (true) {
  24221. for (var c = 0; c < 2; c++) {
  24222. if (this.modules[row][col - c] == null) {
  24223. var dark = false;
  24224. if (byteIndex < data.length) {
  24225. dark = (data[byteIndex] >>> bitIndex & 1) == 1;
  24226. }
  24227. var mask = QRUtil.getMask(maskPattern, row, col - c);
  24228. if (mask) {
  24229. dark = !dark;
  24230. }
  24231. this.modules[row][col - c] = dark;
  24232. bitIndex--;
  24233. if (bitIndex == -1) {
  24234. byteIndex++;
  24235. bitIndex = 7;
  24236. }
  24237. }
  24238. }
  24239. row += inc;
  24240. if (row < 0 || this.moduleCount <= row) {
  24241. row -= inc;
  24242. inc = -inc;
  24243. break;
  24244. }
  24245. }
  24246. }
  24247. } };
  24248. /**
  24249. * 填充字段
  24250. */
  24251. QRCodeAlg.PAD0 = 0xEC;
  24252. QRCodeAlg.PAD1 = 0x11;
  24253. //---------------------------------------------------------------------
  24254. // 纠错等级对应的编码
  24255. //---------------------------------------------------------------------
  24256. var QRErrorCorrectLevel = [1, 0, 3, 2];
  24257. //---------------------------------------------------------------------
  24258. // 掩膜版本
  24259. //---------------------------------------------------------------------
  24260. var QRMaskPattern = {
  24261. PATTERN000: 0,
  24262. PATTERN001: 1,
  24263. PATTERN010: 2,
  24264. PATTERN011: 3,
  24265. PATTERN100: 4,
  24266. PATTERN101: 5,
  24267. PATTERN110: 6,
  24268. PATTERN111: 7 };
  24269. //---------------------------------------------------------------------
  24270. // 工具类
  24271. //---------------------------------------------------------------------
  24272. var QRUtil = {
  24273. /*
  24274. 每个版本矫正图形的位置
  24275. */
  24276. PATTERN_POSITION_TABLE: [
  24277. [],
  24278. [6, 18],
  24279. [6, 22],
  24280. [6, 26],
  24281. [6, 30],
  24282. [6, 34],
  24283. [6, 22, 38],
  24284. [6, 24, 42],
  24285. [6, 26, 46],
  24286. [6, 28, 50],
  24287. [6, 30, 54],
  24288. [6, 32, 58],
  24289. [6, 34, 62],
  24290. [6, 26, 46, 66],
  24291. [6, 26, 48, 70],
  24292. [6, 26, 50, 74],
  24293. [6, 30, 54, 78],
  24294. [6, 30, 56, 82],
  24295. [6, 30, 58, 86],
  24296. [6, 34, 62, 90],
  24297. [6, 28, 50, 72, 94],
  24298. [6, 26, 50, 74, 98],
  24299. [6, 30, 54, 78, 102],
  24300. [6, 28, 54, 80, 106],
  24301. [6, 32, 58, 84, 110],
  24302. [6, 30, 58, 86, 114],
  24303. [6, 34, 62, 90, 118],
  24304. [6, 26, 50, 74, 98, 122],
  24305. [6, 30, 54, 78, 102, 126],
  24306. [6, 26, 52, 78, 104, 130],
  24307. [6, 30, 56, 82, 108, 134],
  24308. [6, 34, 60, 86, 112, 138],
  24309. [6, 30, 58, 86, 114, 142],
  24310. [6, 34, 62, 90, 118, 146],
  24311. [6, 30, 54, 78, 102, 126, 150],
  24312. [6, 24, 50, 76, 102, 128, 154],
  24313. [6, 28, 54, 80, 106, 132, 158],
  24314. [6, 32, 58, 84, 110, 136, 162],
  24315. [6, 26, 54, 82, 110, 138, 166],
  24316. [6, 30, 58, 86, 114, 142, 170]],
  24317. G15: 1 << 10 | 1 << 8 | 1 << 5 | 1 << 4 | 1 << 2 | 1 << 1 | 1 << 0,
  24318. G18: 1 << 12 | 1 << 11 | 1 << 10 | 1 << 9 | 1 << 8 | 1 << 5 | 1 << 2 | 1 << 0,
  24319. G15_MASK: 1 << 14 | 1 << 12 | 1 << 10 | 1 << 4 | 1 << 1,
  24320. /*
  24321. BCH编码格式信息
  24322. */
  24323. getBCHTypeInfo: function getBCHTypeInfo(data) {
  24324. var d = data << 10;
  24325. while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {
  24326. d ^= QRUtil.G15 << QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15);
  24327. }
  24328. return (data << 10 | d) ^ QRUtil.G15_MASK;
  24329. },
  24330. /*
  24331. BCH编码版本信息
  24332. */
  24333. getBCHTypeNumber: function getBCHTypeNumber(data) {
  24334. var d = data << 12;
  24335. while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {
  24336. d ^= QRUtil.G18 << QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18);
  24337. }
  24338. return data << 12 | d;
  24339. },
  24340. /*
  24341. 获取BCH位信息
  24342. */
  24343. getBCHDigit: function getBCHDigit(data) {
  24344. var digit = 0;
  24345. while (data != 0) {
  24346. digit++;
  24347. data >>>= 1;
  24348. }
  24349. return digit;
  24350. },
  24351. /*
  24352. 获取版本对应的矫正图形位置
  24353. */
  24354. getPatternPosition: function getPatternPosition(typeNumber) {
  24355. return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];
  24356. },
  24357. /*
  24358. 掩膜算法
  24359. */
  24360. getMask: function getMask(maskPattern, i, j) {
  24361. switch (maskPattern) {
  24362. case QRMaskPattern.PATTERN000:
  24363. return (i + j) % 2 == 0;
  24364. case QRMaskPattern.PATTERN001:
  24365. return i % 2 == 0;
  24366. case QRMaskPattern.PATTERN010:
  24367. return j % 3 == 0;
  24368. case QRMaskPattern.PATTERN011:
  24369. return (i + j) % 3 == 0;
  24370. case QRMaskPattern.PATTERN100:
  24371. return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 == 0;
  24372. case QRMaskPattern.PATTERN101:
  24373. return i * j % 2 + i * j % 3 == 0;
  24374. case QRMaskPattern.PATTERN110:
  24375. return (i * j % 2 + i * j % 3) % 2 == 0;
  24376. case QRMaskPattern.PATTERN111:
  24377. return (i * j % 3 + (i + j) % 2) % 2 == 0;
  24378. default:
  24379. throw new Error("bad maskPattern:" + maskPattern);}
  24380. },
  24381. /*
  24382. 获取RS的纠错多项式
  24383. */
  24384. getErrorCorrectPolynomial: function getErrorCorrectPolynomial(errorCorrectLength) {
  24385. var a = new QRPolynomial([1], 0);
  24386. for (var i = 0; i < errorCorrectLength; i++) {
  24387. a = a.multiply(new QRPolynomial([1, QRMath.gexp(i)], 0));
  24388. }
  24389. return a;
  24390. },
  24391. /*
  24392. 获取评价
  24393. */
  24394. getLostPoint: function getLostPoint(qrCode) {
  24395. var moduleCount = qrCode.getModuleCount(),
  24396. lostPoint = 0,
  24397. darkCount = 0;
  24398. for (var row = 0; row < moduleCount; row++) {
  24399. var sameCount = 0;
  24400. var head = qrCode.modules[row][0];
  24401. for (var col = 0; col < moduleCount; col++) {
  24402. var current = qrCode.modules[row][col];
  24403. //level 3 评价
  24404. if (col < moduleCount - 6) {
  24405. if (current && !qrCode.modules[row][col + 1] && qrCode.modules[row][col + 2] && qrCode.modules[row][col + 3] && qrCode.modules[row][col + 4] && !qrCode.modules[row][col + 5] && qrCode.modules[row][col + 6]) {
  24406. if (col < moduleCount - 10) {
  24407. if (qrCode.modules[row][col + 7] && qrCode.modules[row][col + 8] && qrCode.modules[row][col + 9] && qrCode.modules[row][col + 10]) {
  24408. lostPoint += 40;
  24409. }
  24410. } else if (col > 3) {
  24411. if (qrCode.modules[row][col - 1] && qrCode.modules[row][col - 2] && qrCode.modules[row][col - 3] && qrCode.modules[row][col - 4]) {
  24412. lostPoint += 40;
  24413. }
  24414. }
  24415. }
  24416. }
  24417. //level 2 评价
  24418. if (row < moduleCount - 1 && col < moduleCount - 1) {
  24419. var count = 0;
  24420. if (current) count++;
  24421. if (qrCode.modules[row + 1][col]) count++;
  24422. if (qrCode.modules[row][col + 1]) count++;
  24423. if (qrCode.modules[row + 1][col + 1]) count++;
  24424. if (count == 0 || count == 4) {
  24425. lostPoint += 3;
  24426. }
  24427. }
  24428. //level 1 评价
  24429. if (head ^ current) {
  24430. sameCount++;
  24431. } else {
  24432. head = current;
  24433. if (sameCount >= 5) {
  24434. lostPoint += 3 + sameCount - 5;
  24435. }
  24436. sameCount = 1;
  24437. }
  24438. //level 4 评价
  24439. if (current) {
  24440. darkCount++;
  24441. }
  24442. }
  24443. }
  24444. for (var col = 0; col < moduleCount; col++) {
  24445. var sameCount = 0;
  24446. var head = qrCode.modules[0][col];
  24447. for (var row = 0; row < moduleCount; row++) {
  24448. var current = qrCode.modules[row][col];
  24449. //level 3 评价
  24450. if (row < moduleCount - 6) {
  24451. if (current && !qrCode.modules[row + 1][col] && qrCode.modules[row + 2][col] && qrCode.modules[row + 3][col] && qrCode.modules[row + 4][col] && !qrCode.modules[row + 5][col] && qrCode.modules[row + 6][col]) {
  24452. if (row < moduleCount - 10) {
  24453. if (qrCode.modules[row + 7][col] && qrCode.modules[row + 8][col] && qrCode.modules[row + 9][col] && qrCode.modules[row + 10][col]) {
  24454. lostPoint += 40;
  24455. }
  24456. } else if (row > 3) {
  24457. if (qrCode.modules[row - 1][col] && qrCode.modules[row - 2][col] && qrCode.modules[row - 3][col] && qrCode.modules[row - 4][col]) {
  24458. lostPoint += 40;
  24459. }
  24460. }
  24461. }
  24462. }
  24463. //level 1 评价
  24464. if (head ^ current) {
  24465. sameCount++;
  24466. } else {
  24467. head = current;
  24468. if (sameCount >= 5) {
  24469. lostPoint += 3 + sameCount - 5;
  24470. }
  24471. sameCount = 1;
  24472. }
  24473. }
  24474. }
  24475. // LEVEL4
  24476. var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;
  24477. lostPoint += ratio * 10;
  24478. return lostPoint;
  24479. } };
  24480. //---------------------------------------------------------------------
  24481. // QRMath使用的数学工具
  24482. //---------------------------------------------------------------------
  24483. var QRMath = {
  24484. /*
  24485. 将n转化为a^m
  24486. */
  24487. glog: function glog(n) {
  24488. if (n < 1) {
  24489. throw new Error("glog(" + n + ")");
  24490. }
  24491. return QRMath.LOG_TABLE[n];
  24492. },
  24493. /*
  24494. 将a^m转化为n
  24495. */
  24496. gexp: function gexp(n) {
  24497. while (n < 0) {
  24498. n += 255;
  24499. }
  24500. while (n >= 256) {
  24501. n -= 255;
  24502. }
  24503. return QRMath.EXP_TABLE[n];
  24504. },
  24505. EXP_TABLE: new Array(256),
  24506. LOG_TABLE: new Array(256) };
  24507. for (var i = 0; i < 8; i++) {
  24508. QRMath.EXP_TABLE[i] = 1 << i;
  24509. }
  24510. for (var i = 8; i < 256; i++) {
  24511. QRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4] ^ QRMath.EXP_TABLE[i - 5] ^ QRMath.EXP_TABLE[i - 6] ^ QRMath.EXP_TABLE[i - 8];
  24512. }
  24513. for (var i = 0; i < 255; i++) {
  24514. QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]] = i;
  24515. }
  24516. //---------------------------------------------------------------------
  24517. // QRPolynomial 多项式
  24518. //---------------------------------------------------------------------
  24519. /**
  24520. * 多项式类
  24521. * @param {Array} num 系数
  24522. * @param {num} shift a^shift
  24523. */
  24524. function QRPolynomial(num, shift) {
  24525. if (num.length == undefined) {
  24526. throw new Error(num.length + "/" + shift);
  24527. }
  24528. var offset = 0;
  24529. while (offset < num.length && num[offset] == 0) {
  24530. offset++;
  24531. }
  24532. this.num = new Array(num.length - offset + shift);
  24533. for (var i = 0; i < num.length - offset; i++) {
  24534. this.num[i] = num[i + offset];
  24535. }
  24536. }
  24537. QRPolynomial.prototype = {
  24538. get: function get(index) {
  24539. return this.num[index];
  24540. },
  24541. getLength: function getLength() {
  24542. return this.num.length;
  24543. },
  24544. /**
  24545. * 多项式乘法
  24546. * @param {QRPolynomial} e 被乘多项式
  24547. * @return {[type]} [description]
  24548. */
  24549. multiply: function multiply(e) {
  24550. var num = new Array(this.getLength() + e.getLength() - 1);
  24551. for (var i = 0; i < this.getLength(); i++) {
  24552. for (var j = 0; j < e.getLength(); j++) {
  24553. num[i + j] ^= QRMath.gexp(QRMath.glog(this.get(i)) + QRMath.glog(e.get(j)));
  24554. }
  24555. }
  24556. return new QRPolynomial(num, 0);
  24557. },
  24558. /**
  24559. * 多项式模运算
  24560. * @param {QRPolynomial} e 模多项式
  24561. * @return {}
  24562. */
  24563. mod: function mod(e) {
  24564. var tl = this.getLength(),
  24565. el = e.getLength();
  24566. if (tl - el < 0) {
  24567. return this;
  24568. }
  24569. var num = new Array(tl);
  24570. for (var i = 0; i < tl; i++) {
  24571. num[i] = this.get(i);
  24572. }
  24573. while (num.length >= el) {
  24574. var ratio = QRMath.glog(num[0]) - QRMath.glog(e.get(0));
  24575. for (var i = 0; i < e.getLength(); i++) {
  24576. num[i] ^= QRMath.gexp(QRMath.glog(e.get(i)) + ratio);
  24577. }
  24578. while (num[0] == 0) {
  24579. num.shift();
  24580. }
  24581. }
  24582. return new QRPolynomial(num, 0);
  24583. } };
  24584. //---------------------------------------------------------------------
  24585. // RS_BLOCK_TABLE
  24586. //---------------------------------------------------------------------
  24587. /*
  24588. 二维码各个版本信息[块数, 每块中的数据块数, 每块中的信息块数]
  24589. */
  24590. var RS_BLOCK_TABLE = [
  24591. // L
  24592. // M
  24593. // Q
  24594. // H
  24595. // 1
  24596. [1, 26, 19],
  24597. [1, 26, 16],
  24598. [1, 26, 13],
  24599. [1, 26, 9],
  24600. // 2
  24601. [1, 44, 34],
  24602. [1, 44, 28],
  24603. [1, 44, 22],
  24604. [1, 44, 16],
  24605. // 3
  24606. [1, 70, 55],
  24607. [1, 70, 44],
  24608. [2, 35, 17],
  24609. [2, 35, 13],
  24610. // 4
  24611. [1, 100, 80],
  24612. [2, 50, 32],
  24613. [2, 50, 24],
  24614. [4, 25, 9],
  24615. // 5
  24616. [1, 134, 108],
  24617. [2, 67, 43],
  24618. [2, 33, 15, 2, 34, 16],
  24619. [2, 33, 11, 2, 34, 12],
  24620. // 6
  24621. [2, 86, 68],
  24622. [4, 43, 27],
  24623. [4, 43, 19],
  24624. [4, 43, 15],
  24625. // 7
  24626. [2, 98, 78],
  24627. [4, 49, 31],
  24628. [2, 32, 14, 4, 33, 15],
  24629. [4, 39, 13, 1, 40, 14],
  24630. // 8
  24631. [2, 121, 97],
  24632. [2, 60, 38, 2, 61, 39],
  24633. [4, 40, 18, 2, 41, 19],
  24634. [4, 40, 14, 2, 41, 15],
  24635. // 9
  24636. [2, 146, 116],
  24637. [3, 58, 36, 2, 59, 37],
  24638. [4, 36, 16, 4, 37, 17],
  24639. [4, 36, 12, 4, 37, 13],
  24640. // 10
  24641. [2, 86, 68, 2, 87, 69],
  24642. [4, 69, 43, 1, 70, 44],
  24643. [6, 43, 19, 2, 44, 20],
  24644. [6, 43, 15, 2, 44, 16],
  24645. // 11
  24646. [4, 101, 81],
  24647. [1, 80, 50, 4, 81, 51],
  24648. [4, 50, 22, 4, 51, 23],
  24649. [3, 36, 12, 8, 37, 13],
  24650. // 12
  24651. [2, 116, 92, 2, 117, 93],
  24652. [6, 58, 36, 2, 59, 37],
  24653. [4, 46, 20, 6, 47, 21],
  24654. [7, 42, 14, 4, 43, 15],
  24655. // 13
  24656. [4, 133, 107],
  24657. [8, 59, 37, 1, 60, 38],
  24658. [8, 44, 20, 4, 45, 21],
  24659. [12, 33, 11, 4, 34, 12],
  24660. // 14
  24661. [3, 145, 115, 1, 146, 116],
  24662. [4, 64, 40, 5, 65, 41],
  24663. [11, 36, 16, 5, 37, 17],
  24664. [11, 36, 12, 5, 37, 13],
  24665. // 15
  24666. [5, 109, 87, 1, 110, 88],
  24667. [5, 65, 41, 5, 66, 42],
  24668. [5, 54, 24, 7, 55, 25],
  24669. [11, 36, 12],
  24670. // 16
  24671. [5, 122, 98, 1, 123, 99],
  24672. [7, 73, 45, 3, 74, 46],
  24673. [15, 43, 19, 2, 44, 20],
  24674. [3, 45, 15, 13, 46, 16],
  24675. // 17
  24676. [1, 135, 107, 5, 136, 108],
  24677. [10, 74, 46, 1, 75, 47],
  24678. [1, 50, 22, 15, 51, 23],
  24679. [2, 42, 14, 17, 43, 15],
  24680. // 18
  24681. [5, 150, 120, 1, 151, 121],
  24682. [9, 69, 43, 4, 70, 44],
  24683. [17, 50, 22, 1, 51, 23],
  24684. [2, 42, 14, 19, 43, 15],
  24685. // 19
  24686. [3, 141, 113, 4, 142, 114],
  24687. [3, 70, 44, 11, 71, 45],
  24688. [17, 47, 21, 4, 48, 22],
  24689. [9, 39, 13, 16, 40, 14],
  24690. // 20
  24691. [3, 135, 107, 5, 136, 108],
  24692. [3, 67, 41, 13, 68, 42],
  24693. [15, 54, 24, 5, 55, 25],
  24694. [15, 43, 15, 10, 44, 16],
  24695. // 21
  24696. [4, 144, 116, 4, 145, 117],
  24697. [17, 68, 42],
  24698. [17, 50, 22, 6, 51, 23],
  24699. [19, 46, 16, 6, 47, 17],
  24700. // 22
  24701. [2, 139, 111, 7, 140, 112],
  24702. [17, 74, 46],
  24703. [7, 54, 24, 16, 55, 25],
  24704. [34, 37, 13],
  24705. // 23
  24706. [4, 151, 121, 5, 152, 122],
  24707. [4, 75, 47, 14, 76, 48],
  24708. [11, 54, 24, 14, 55, 25],
  24709. [16, 45, 15, 14, 46, 16],
  24710. // 24
  24711. [6, 147, 117, 4, 148, 118],
  24712. [6, 73, 45, 14, 74, 46],
  24713. [11, 54, 24, 16, 55, 25],
  24714. [30, 46, 16, 2, 47, 17],
  24715. // 25
  24716. [8, 132, 106, 4, 133, 107],
  24717. [8, 75, 47, 13, 76, 48],
  24718. [7, 54, 24, 22, 55, 25],
  24719. [22, 45, 15, 13, 46, 16],
  24720. // 26
  24721. [10, 142, 114, 2, 143, 115],
  24722. [19, 74, 46, 4, 75, 47],
  24723. [28, 50, 22, 6, 51, 23],
  24724. [33, 46, 16, 4, 47, 17],
  24725. // 27
  24726. [8, 152, 122, 4, 153, 123],
  24727. [22, 73, 45, 3, 74, 46],
  24728. [8, 53, 23, 26, 54, 24],
  24729. [12, 45, 15, 28, 46, 16],
  24730. // 28
  24731. [3, 147, 117, 10, 148, 118],
  24732. [3, 73, 45, 23, 74, 46],
  24733. [4, 54, 24, 31, 55, 25],
  24734. [11, 45, 15, 31, 46, 16],
  24735. // 29
  24736. [7, 146, 116, 7, 147, 117],
  24737. [21, 73, 45, 7, 74, 46],
  24738. [1, 53, 23, 37, 54, 24],
  24739. [19, 45, 15, 26, 46, 16],
  24740. // 30
  24741. [5, 145, 115, 10, 146, 116],
  24742. [19, 75, 47, 10, 76, 48],
  24743. [15, 54, 24, 25, 55, 25],
  24744. [23, 45, 15, 25, 46, 16],
  24745. // 31
  24746. [13, 145, 115, 3, 146, 116],
  24747. [2, 74, 46, 29, 75, 47],
  24748. [42, 54, 24, 1, 55, 25],
  24749. [23, 45, 15, 28, 46, 16],
  24750. // 32
  24751. [17, 145, 115],
  24752. [10, 74, 46, 23, 75, 47],
  24753. [10, 54, 24, 35, 55, 25],
  24754. [19, 45, 15, 35, 46, 16],
  24755. // 33
  24756. [17, 145, 115, 1, 146, 116],
  24757. [14, 74, 46, 21, 75, 47],
  24758. [29, 54, 24, 19, 55, 25],
  24759. [11, 45, 15, 46, 46, 16],
  24760. // 34
  24761. [13, 145, 115, 6, 146, 116],
  24762. [14, 74, 46, 23, 75, 47],
  24763. [44, 54, 24, 7, 55, 25],
  24764. [59, 46, 16, 1, 47, 17],
  24765. // 35
  24766. [12, 151, 121, 7, 152, 122],
  24767. [12, 75, 47, 26, 76, 48],
  24768. [39, 54, 24, 14, 55, 25],
  24769. [22, 45, 15, 41, 46, 16],
  24770. // 36
  24771. [6, 151, 121, 14, 152, 122],
  24772. [6, 75, 47, 34, 76, 48],
  24773. [46, 54, 24, 10, 55, 25],
  24774. [2, 45, 15, 64, 46, 16],
  24775. // 37
  24776. [17, 152, 122, 4, 153, 123],
  24777. [29, 74, 46, 14, 75, 47],
  24778. [49, 54, 24, 10, 55, 25],
  24779. [24, 45, 15, 46, 46, 16],
  24780. // 38
  24781. [4, 152, 122, 18, 153, 123],
  24782. [13, 74, 46, 32, 75, 47],
  24783. [48, 54, 24, 14, 55, 25],
  24784. [42, 45, 15, 32, 46, 16],
  24785. // 39
  24786. [20, 147, 117, 4, 148, 118],
  24787. [40, 75, 47, 7, 76, 48],
  24788. [43, 54, 24, 22, 55, 25],
  24789. [10, 45, 15, 67, 46, 16],
  24790. // 40
  24791. [19, 148, 118, 6, 149, 119],
  24792. [18, 75, 47, 31, 76, 48],
  24793. [34, 54, 24, 34, 55, 25],
  24794. [20, 45, 15, 61, 46, 16]];
  24795. /**
  24796. * 根据数据获取对应版本
  24797. * @return {[type]} [description]
  24798. */
  24799. QRCodeAlg.prototype.getRightType = function () {
  24800. for (var typeNumber = 1; typeNumber < 41; typeNumber++) {
  24801. var rsBlock = RS_BLOCK_TABLE[(typeNumber - 1) * 4 + this.errorCorrectLevel];
  24802. if (rsBlock == undefined) {
  24803. throw new Error("bad rs block @ typeNumber:" + typeNumber + "/errorCorrectLevel:" + this.errorCorrectLevel);
  24804. }
  24805. var length = rsBlock.length / 3;
  24806. var totalDataCount = 0;
  24807. for (var i = 0; i < length; i++) {
  24808. var count = rsBlock[i * 3 + 0];
  24809. var dataCount = rsBlock[i * 3 + 2];
  24810. totalDataCount += dataCount * count;
  24811. }
  24812. var lengthBytes = typeNumber > 9 ? 2 : 1;
  24813. if (this.utf8bytes.length + lengthBytes < totalDataCount || typeNumber == 40) {
  24814. this.typeNumber = typeNumber;
  24815. this.rsBlock = rsBlock;
  24816. this.totalDataCount = totalDataCount;
  24817. break;
  24818. }
  24819. }
  24820. };
  24821. //---------------------------------------------------------------------
  24822. // QRBitBuffer
  24823. //---------------------------------------------------------------------
  24824. function QRBitBuffer() {
  24825. this.buffer = new Array();
  24826. this.length = 0;
  24827. }
  24828. QRBitBuffer.prototype = {
  24829. get: function get(index) {
  24830. var bufIndex = Math.floor(index / 8);
  24831. return this.buffer[bufIndex] >>> 7 - index % 8 & 1;
  24832. },
  24833. put: function put(num, length) {
  24834. for (var i = 0; i < length; i++) {
  24835. this.putBit(num >>> length - i - 1 & 1);
  24836. }
  24837. },
  24838. putBit: function putBit(bit) {
  24839. var bufIndex = Math.floor(this.length / 8);
  24840. if (this.buffer.length <= bufIndex) {
  24841. this.buffer.push(0);
  24842. }
  24843. if (bit) {
  24844. this.buffer[bufIndex] |= 0x80 >>> this.length % 8;
  24845. }
  24846. this.length++;
  24847. } };
  24848. // xzedit
  24849. var qrcodeAlgObjCache = [];
  24850. /**
  24851. * 二维码构造函数,主要用于绘制
  24852. * @param {参数列表} opt 传递参数
  24853. * @return {}
  24854. */
  24855. QRCode = function QRCode(opt) {
  24856. //设置默认参数
  24857. this.options = {
  24858. text: '',
  24859. size: 256,
  24860. correctLevel: 3,
  24861. background: '#ffffff',
  24862. foreground: '#000000',
  24863. pdground: '#000000',
  24864. image: '',
  24865. imageSize: 30,
  24866. canvasId: opt.canvasId,
  24867. context: opt.context,
  24868. usingComponents: opt.usingComponents,
  24869. showLoading: opt.showLoading,
  24870. loadingText: opt.loadingText };
  24871. if (typeof opt === 'string') {// 只编码ASCII字符串
  24872. opt = {
  24873. text: opt };
  24874. }
  24875. if (opt) {
  24876. for (var i in opt) {
  24877. this.options[i] = opt[i];
  24878. }
  24879. }
  24880. //使用QRCodeAlg创建二维码结构
  24881. var qrCodeAlg = null;
  24882. for (var i = 0, l = qrcodeAlgObjCache.length; i < l; i++) {
  24883. if (qrcodeAlgObjCache[i].text == this.options.text && qrcodeAlgObjCache[i].text.correctLevel == this.options.correctLevel) {
  24884. qrCodeAlg = qrcodeAlgObjCache[i].obj;
  24885. break;
  24886. }
  24887. }
  24888. if (i == l) {
  24889. qrCodeAlg = new QRCodeAlg(this.options.text, this.options.correctLevel);
  24890. qrcodeAlgObjCache.push({
  24891. text: this.options.text,
  24892. correctLevel: this.options.correctLevel,
  24893. obj: qrCodeAlg });
  24894. }
  24895. /**
  24896. * 计算矩阵点的前景色
  24897. * @param {Obj} config
  24898. * @param {Number} config.row 点x坐标
  24899. * @param {Number} config.col 点y坐标
  24900. * @param {Number} config.count 矩阵大小
  24901. * @param {Number} config.options 组件的options
  24902. * @return {String}
  24903. */
  24904. var getForeGround = function getForeGround(config) {
  24905. var options = config.options;
  24906. if (options.pdground && (
  24907. config.row > 1 && config.row < 5 && config.col > 1 && config.col < 5 ||
  24908. config.row > config.count - 6 && config.row < config.count - 2 && config.col > 1 && config.col < 5 ||
  24909. config.row > 1 && config.row < 5 && config.col > config.count - 6 && config.col < config.count - 2))
  24910. {
  24911. return options.pdground;
  24912. }
  24913. return options.foreground;
  24914. };
  24915. // 创建canvas
  24916. var createCanvas = function createCanvas(options) {
  24917. if (options.showLoading) {
  24918. uni.showLoading({
  24919. title: options.loadingText,
  24920. mask: true });
  24921. }
  24922. var ctx = uni.createCanvasContext(options.canvasId, options.context);
  24923. var count = qrCodeAlg.getModuleCount();
  24924. var ratioSize = options.size;
  24925. var ratioImgSize = options.imageSize;
  24926. //计算每个点的长宽
  24927. var tileW = (ratioSize / count).toPrecision(4);
  24928. var tileH = (ratioSize / count).toPrecision(4);
  24929. //绘制
  24930. for (var row = 0; row < count; row++) {
  24931. for (var col = 0; col < count; col++) {
  24932. var w = Math.ceil((col + 1) * tileW) - Math.floor(col * tileW);
  24933. var h = Math.ceil((row + 1) * tileW) - Math.floor(row * tileW);
  24934. var foreground = getForeGround({
  24935. row: row,
  24936. col: col,
  24937. count: count,
  24938. options: options });
  24939. ctx.setFillStyle(qrCodeAlg.modules[row][col] ? foreground : options.background);
  24940. ctx.fillRect(Math.round(col * tileW), Math.round(row * tileH), w, h);
  24941. }
  24942. }
  24943. if (options.image) {
  24944. // 画圆角矩形
  24945. var drawRoundedRect = function drawRoundedRect(ctxi, x, y, width, height, r, lineWidth, fill, stroke) {
  24946. ctxi.setLineWidth(lineWidth);
  24947. ctxi.setFillStyle(options.background);
  24948. ctxi.setStrokeStyle(options.background);
  24949. ctxi.beginPath(); // draw top and top right corner
  24950. ctxi.moveTo(x + r, y);
  24951. ctxi.arcTo(x + width, y, x + width, y + r, r); // draw right side and bottom right corner
  24952. ctxi.arcTo(x + width, y + height, x + width - r, y + height, r); // draw bottom and bottom left corner
  24953. ctxi.arcTo(x, y + height, x, y + height - r, r); // draw left and top left corner
  24954. ctxi.arcTo(x, y, x + r, y, r);
  24955. ctxi.closePath();
  24956. if (fill) {
  24957. ctxi.fill();
  24958. }
  24959. if (stroke) {
  24960. ctxi.stroke();
  24961. }
  24962. };var x = Number(((ratioSize - ratioImgSize) / 2).toFixed(2));var y = Number(((ratioSize - ratioImgSize) / 2).toFixed(2));drawRoundedRect(ctx, x, y, ratioImgSize, ratioImgSize, 2, 6, true, true);ctx.drawImage(options.image, x, y, ratioImgSize, ratioImgSize);
  24963. }
  24964. setTimeout(function () {
  24965. ctx.draw(true, function () {
  24966. // 保存到临时区域
  24967. setTimeout(function () {
  24968. uni.canvasToTempFilePath({
  24969. width: options.width,
  24970. height: options.height,
  24971. destWidth: options.width,
  24972. destHeight: options.height,
  24973. canvasId: options.canvasId,
  24974. quality: Number(1),
  24975. success: function success(res) {
  24976. if (options.cbResult) {
  24977. options.cbResult(res.tempFilePath);
  24978. }
  24979. },
  24980. fail: function fail(res) {
  24981. if (options.cbResult) {
  24982. options.cbResult(res);
  24983. }
  24984. },
  24985. complete: function complete() {
  24986. if (options.showLoading) {
  24987. uni.hideLoading();
  24988. }
  24989. } },
  24990. options.context);
  24991. }, options.text.length + 100);
  24992. });
  24993. }, options.usingComponents ? 0 : 150);
  24994. };
  24995. createCanvas(this.options);
  24996. // 空判定
  24997. var empty = function empty(v) {
  24998. var tp = typeof v,
  24999. rt = false;
  25000. if (tp == "number" && String(v) == "") {
  25001. rt = true;
  25002. } else if (tp == "undefined") {
  25003. rt = true;
  25004. } else if (tp == "object") {
  25005. if (JSON.stringify(v) == "{}" || JSON.stringify(v) == "[]" || v == null) rt = true;
  25006. } else if (tp == "string") {
  25007. if (v == "" || v == "undefined" || v == "null" || v == "{}" || v == "[]") rt = true;
  25008. } else if (tp == "function") {
  25009. rt = false;
  25010. }
  25011. return rt;
  25012. };
  25013. };
  25014. QRCode.prototype.clear = function (fn) {
  25015. var ctx = uni.createCanvasContext(this.options.canvasId, this.options.context);
  25016. ctx.clearRect(0, 0, this.options.size, this.options.size);
  25017. ctx.draw(false, function () {
  25018. if (fn) {
  25019. fn();
  25020. }
  25021. });
  25022. };
  25023. })();var _default =
  25024. QRCode;exports.default = _default;
  25025. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["default"]))
  25026. /***/ }),
  25027. /***/ 76:
  25028. /*!******************************************************************************************!*\
  25029. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/function/colorGradient.js ***!
  25030. \******************************************************************************************/
  25031. /*! no static exports found */
  25032. /***/ (function(module, exports, __webpack_require__) {
  25033. "use strict";
  25034. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /**
  25035. * 求两个颜色之间的渐变值
  25036. * @param {string} startColor 开始的颜色
  25037. * @param {string} endColor 结束的颜色
  25038. * @param {number} step 颜色等分的份额
  25039. * */
  25040. function colorGradient() {var startColor = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'rgb(0, 0, 0)';var endColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'rgb(255, 255, 255)';var step = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;
  25041. var startRGB = hexToRgb(startColor, false); // 转换为rgb数组模式
  25042. var startR = startRGB[0];
  25043. var startG = startRGB[1];
  25044. var startB = startRGB[2];
  25045. var endRGB = hexToRgb(endColor, false);
  25046. var endR = endRGB[0];
  25047. var endG = endRGB[1];
  25048. var endB = endRGB[2];
  25049. var sR = (endR - startR) / step; // 总差值
  25050. var sG = (endG - startG) / step;
  25051. var sB = (endB - startB) / step;
  25052. var colorArr = [];
  25053. for (var i = 0; i < step; i++) {
  25054. // 计算每一步的hex值
  25055. var hex = rgbToHex("rgb(".concat(Math.round(sR * i + startR), ",").concat(Math.round(sG * i + startG), ",").concat(Math.round(sB *
  25056. i + startB), ")"));
  25057. // 确保第一个颜色值为startColor的值
  25058. if (i === 0) hex = rgbToHex(startColor);
  25059. // 确保最后一个颜色值为endColor的值
  25060. if (i === step - 1) hex = rgbToHex(endColor);
  25061. colorArr.push(hex);
  25062. }
  25063. return colorArr;
  25064. }
  25065. // 将hex表示方式转换为rgb表示方式(这里返回rgb数组模式)
  25066. function hexToRgb(sColor) {var str = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
  25067. var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;
  25068. sColor = String(sColor).toLowerCase();
  25069. if (sColor && reg.test(sColor)) {
  25070. if (sColor.length === 4) {
  25071. var sColorNew = '#';
  25072. for (var i = 1; i < 4; i += 1) {
  25073. sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1));
  25074. }
  25075. sColor = sColorNew;
  25076. }
  25077. // 处理六位的颜色值
  25078. var sColorChange = [];
  25079. for (var _i = 1; _i < 7; _i += 2) {
  25080. sColorChange.push(parseInt("0x".concat(sColor.slice(_i, _i + 2))));
  25081. }
  25082. if (!str) {
  25083. return sColorChange;
  25084. }
  25085. return "rgb(".concat(sColorChange[0], ",").concat(sColorChange[1], ",").concat(sColorChange[2], ")");
  25086. }if (/^(rgb|RGB)/.test(sColor)) {
  25087. var arr = sColor.replace(/(?:\(|\)|rgb|RGB)*/g, '').split(',');
  25088. return arr.map(function (val) {return Number(val);});
  25089. }
  25090. return sColor;
  25091. }
  25092. // 将rgb表示方式转换为hex表示方式
  25093. function rgbToHex(rgb) {
  25094. var _this = rgb;
  25095. var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;
  25096. if (/^(rgb|RGB)/.test(_this)) {
  25097. var aColor = _this.replace(/(?:\(|\)|rgb|RGB)*/g, '').split(',');
  25098. var strHex = '#';
  25099. for (var i = 0; i < aColor.length; i++) {
  25100. var hex = Number(aColor[i]).toString(16);
  25101. hex = String(hex).length == 1 ? "".concat(0, hex) : hex; // 保证每个rgb的值为2位
  25102. if (hex === '0') {
  25103. hex += hex;
  25104. }
  25105. strHex += hex;
  25106. }
  25107. if (strHex.length !== 7) {
  25108. strHex = _this;
  25109. }
  25110. return strHex;
  25111. }if (reg.test(_this)) {
  25112. var aNum = _this.replace(/#/, '').split('');
  25113. if (aNum.length === 6) {
  25114. return _this;
  25115. }if (aNum.length === 3) {
  25116. var numHex = '#';
  25117. for (var _i2 = 0; _i2 < aNum.length; _i2 += 1) {
  25118. numHex += aNum[_i2] + aNum[_i2];
  25119. }
  25120. return numHex;
  25121. }
  25122. } else {
  25123. return _this;
  25124. }
  25125. }
  25126. /**
  25127. * JS颜色十六进制转换为rgb或rgba,返回的格式为 rgba(255,255,255,0.5)字符串
  25128. * sHex为传入的十六进制的色值
  25129. * alpha为rgba的透明度
  25130. */
  25131. function colorToRgba(color, alpha) {
  25132. color = rgbToHex(color);
  25133. // 十六进制颜色值的正则表达式
  25134. var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;
  25135. /* 16进制颜色转为RGB格式 */
  25136. var sColor = String(color).toLowerCase();
  25137. if (sColor && reg.test(sColor)) {
  25138. if (sColor.length === 4) {
  25139. var sColorNew = '#';
  25140. for (var i = 1; i < 4; i += 1) {
  25141. sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1));
  25142. }
  25143. sColor = sColorNew;
  25144. }
  25145. // 处理六位的颜色值
  25146. var sColorChange = [];
  25147. for (var _i3 = 1; _i3 < 7; _i3 += 2) {
  25148. sColorChange.push(parseInt("0x".concat(sColor.slice(_i3, _i3 + 2))));
  25149. }
  25150. // return sColorChange.join(',')
  25151. return "rgba(".concat(sColorChange.join(','), ",").concat(alpha, ")");
  25152. }
  25153. return sColor;
  25154. }var _default =
  25155. {
  25156. colorGradient: colorGradient,
  25157. hexToRgb: hexToRgb,
  25158. rgbToHex: rgbToHex,
  25159. colorToRgba: colorToRgba };exports.default = _default;
  25160. /***/ }),
  25161. /***/ 77:
  25162. /*!*********************************************************************************!*\
  25163. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/function/test.js ***!
  25164. \*********************************************************************************/
  25165. /*! no static exports found */
  25166. /***/ (function(module, exports, __webpack_require__) {
  25167. "use strict";
  25168. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /**
  25169. * 验证电子邮箱格式
  25170. */
  25171. function email(value) {
  25172. return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(value);
  25173. }
  25174. /**
  25175. * 验证手机格式
  25176. */
  25177. function mobile(value) {
  25178. return /^1([3589]\d|4[5-9]|6[1-2,4-7]|7[0-8])\d{8}$/.test(value);
  25179. }
  25180. /**
  25181. * 验证URL格式
  25182. */
  25183. function url(value) {
  25184. return /^((https|http|ftp|rtsp|mms):\/\/)(([0-9a-zA-Z_!~*'().&=+$%-]+: )?[0-9a-zA-Z_!~*'().&=+$%-]+@)?(([0-9]{1,3}.){3}[0-9]{1,3}|([0-9a-zA-Z_!~*'()-]+.)*([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z].[a-zA-Z]{2,6})(:[0-9]{1,4})?((\/?)|(\/[0-9a-zA-Z_!~*'().;?:@&=+$,%#-]+)+\/?)$/.
  25185. test(value);
  25186. }
  25187. /**
  25188. * 验证日期格式
  25189. */
  25190. function date(value) {
  25191. if (!value) return false;
  25192. // 判断是否数值或者字符串数值(意味着为时间戳),转为数值,否则new Date无法识别字符串时间戳
  25193. if (number(value)) value = +value;
  25194. return !/Invalid|NaN/.test(new Date(value).toString());
  25195. }
  25196. /**
  25197. * 验证ISO类型的日期格式
  25198. */
  25199. function dateISO(value) {
  25200. return /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(value);
  25201. }
  25202. /**
  25203. * 验证十进制数字
  25204. */
  25205. function number(value) {
  25206. return /^[\+-]?(\d+\.?\d*|\.\d+|\d\.\d+e\+\d+)$/.test(value);
  25207. }
  25208. /**
  25209. * 验证字符串
  25210. */
  25211. function string(value) {
  25212. return typeof value === 'string';
  25213. }
  25214. /**
  25215. * 验证整数
  25216. */
  25217. function digits(value) {
  25218. return /^\d+$/.test(value);
  25219. }
  25220. /**
  25221. * 验证身份证号码
  25222. */
  25223. function idCard(value) {
  25224. return /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(
  25225. value);
  25226. }
  25227. /**
  25228. * 是否车牌号
  25229. */
  25230. function carNo(value) {
  25231. // 新能源车牌
  25232. var xreg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/;
  25233. // 旧车牌
  25234. var creg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;
  25235. if (value.length === 7) {
  25236. return creg.test(value);
  25237. }if (value.length === 8) {
  25238. return xreg.test(value);
  25239. }
  25240. return false;
  25241. }
  25242. /**
  25243. * 金额,只允许2位小数
  25244. */
  25245. function amount(value) {
  25246. // 金额,只允许保留两位小数
  25247. return /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/.test(value);
  25248. }
  25249. /**
  25250. * 中文
  25251. */
  25252. function chinese(value) {
  25253. var reg = /^[\u4e00-\u9fa5]+$/gi;
  25254. return reg.test(value);
  25255. }
  25256. /**
  25257. * 只能输入字母
  25258. */
  25259. function letter(value) {
  25260. return /^[a-zA-Z]*$/.test(value);
  25261. }
  25262. /**
  25263. * 只能是字母或者数字
  25264. */
  25265. function enOrNum(value) {
  25266. // 英文或者数字
  25267. var reg = /^[0-9a-zA-Z]*$/g;
  25268. return reg.test(value);
  25269. }
  25270. /**
  25271. * 验证是否包含某个值
  25272. */
  25273. function contains(value, param) {
  25274. return value.indexOf(param) >= 0;
  25275. }
  25276. /**
  25277. * 验证一个值范围[min, max]
  25278. */
  25279. function range(value, param) {
  25280. return value >= param[0] && value <= param[1];
  25281. }
  25282. /**
  25283. * 验证一个长度范围[min, max]
  25284. */
  25285. function rangeLength(value, param) {
  25286. return value.length >= param[0] && value.length <= param[1];
  25287. }
  25288. /**
  25289. * 是否固定电话
  25290. */
  25291. function landline(value) {
  25292. var reg = /^\d{3,4}-\d{7,8}(-\d{3,4})?$/;
  25293. return reg.test(value);
  25294. }
  25295. /**
  25296. * 判断是否为空
  25297. */
  25298. function empty(value) {
  25299. switch (typeof value) {
  25300. case 'undefined':
  25301. return true;
  25302. case 'string':
  25303. if (value.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g, '').length == 0) return true;
  25304. break;
  25305. case 'boolean':
  25306. if (!value) return true;
  25307. break;
  25308. case 'number':
  25309. if (value === 0 || isNaN(value)) return true;
  25310. break;
  25311. case 'object':
  25312. if (value === null || value.length === 0) return true;
  25313. for (var i in value) {
  25314. return false;
  25315. }
  25316. return true;}
  25317. return false;
  25318. }
  25319. /**
  25320. * 是否json字符串
  25321. */
  25322. function jsonString(value) {
  25323. if (typeof value === 'string') {
  25324. try {
  25325. var obj = JSON.parse(value);
  25326. if (typeof obj === 'object' && obj) {
  25327. return true;
  25328. }
  25329. return false;
  25330. } catch (e) {
  25331. return false;
  25332. }
  25333. }
  25334. return false;
  25335. }
  25336. /**
  25337. * 是否数组
  25338. */
  25339. function array(value) {
  25340. if (typeof Array.isArray === 'function') {
  25341. return Array.isArray(value);
  25342. }
  25343. return Object.prototype.toString.call(value) === '[object Array]';
  25344. }
  25345. /**
  25346. * 是否对象
  25347. */
  25348. function object(value) {
  25349. return Object.prototype.toString.call(value) === '[object Object]';
  25350. }
  25351. /**
  25352. * 是否短信验证码
  25353. */
  25354. function code(value) {var len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6;
  25355. return new RegExp("^\\d{".concat(len, "}$")).test(value);
  25356. }
  25357. /**
  25358. * 是否函数方法
  25359. * @param {Object} value
  25360. */
  25361. function func(value) {
  25362. return typeof value === 'function';
  25363. }
  25364. /**
  25365. * 是否promise对象
  25366. * @param {Object} value
  25367. */
  25368. function promise(value) {
  25369. return object(value) && func(value.then) && func(value.catch);
  25370. }
  25371. /** 是否图片格式
  25372. * @param {Object} value
  25373. */
  25374. function image(value) {
  25375. var newValue = value.split('?')[0];
  25376. var IMAGE_REGEXP = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i;
  25377. return IMAGE_REGEXP.test(newValue);
  25378. }
  25379. /**
  25380. * 是否视频格式
  25381. * @param {Object} value
  25382. */
  25383. function video(value) {
  25384. var VIDEO_REGEXP = /\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv|m3u8)/i;
  25385. return VIDEO_REGEXP.test(value);
  25386. }
  25387. /**
  25388. * 是否为正则对象
  25389. * @param {Object}
  25390. * @return {Boolean}
  25391. */
  25392. function regExp(o) {
  25393. return o && Object.prototype.toString.call(o) === '[object RegExp]';
  25394. }var _default =
  25395. {
  25396. email: email,
  25397. mobile: mobile,
  25398. url: url,
  25399. date: date,
  25400. dateISO: dateISO,
  25401. number: number,
  25402. digits: digits,
  25403. idCard: idCard,
  25404. carNo: carNo,
  25405. amount: amount,
  25406. chinese: chinese,
  25407. letter: letter,
  25408. enOrNum: enOrNum,
  25409. contains: contains,
  25410. range: range,
  25411. rangeLength: rangeLength,
  25412. empty: empty,
  25413. isEmpty: empty,
  25414. jsonString: jsonString,
  25415. landline: landline,
  25416. object: object,
  25417. array: array,
  25418. code: code,
  25419. func: func,
  25420. promise: promise,
  25421. video: video,
  25422. image: image,
  25423. regExp: regExp,
  25424. string: string };exports.default = _default;
  25425. /***/ }),
  25426. /***/ 78:
  25427. /*!*************************************************************************************!*\
  25428. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/function/debounce.js ***!
  25429. \*************************************************************************************/
  25430. /*! no static exports found */
  25431. /***/ (function(module, exports, __webpack_require__) {
  25432. "use strict";
  25433. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var timeout = null;
  25434. /**
  25435. * 防抖原理:一定时间内,只有最后一次操作,再过wait毫秒后才执行函数
  25436. *
  25437. * @param {Function} func 要执行的回调函数
  25438. * @param {Number} wait 延时的时间
  25439. * @param {Boolean} immediate 是否立即执行
  25440. * @return null
  25441. */
  25442. function debounce(func) {var wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 500;var immediate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
  25443. // 清除定时器
  25444. if (timeout !== null) clearTimeout(timeout);
  25445. // 立即执行,此类情况一般用不到
  25446. if (immediate) {
  25447. var callNow = !timeout;
  25448. timeout = setTimeout(function () {
  25449. timeout = null;
  25450. }, wait);
  25451. if (callNow) typeof func === 'function' && func();
  25452. } else {
  25453. // 设置定时器,当最后一次操作后,timeout不会再被清除,所以在延时wait毫秒后执行func回调方法
  25454. timeout = setTimeout(function () {
  25455. typeof func === 'function' && func();
  25456. }, wait);
  25457. }
  25458. }var _default =
  25459. debounce;exports.default = _default;
  25460. /***/ }),
  25461. /***/ 79:
  25462. /*!*************************************************************************************!*\
  25463. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/function/throttle.js ***!
  25464. \*************************************************************************************/
  25465. /*! no static exports found */
  25466. /***/ (function(module, exports, __webpack_require__) {
  25467. "use strict";
  25468. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var timer;var
  25469. flag;
  25470. /**
  25471. * 节流原理:在一定时间内,只能触发一次
  25472. *
  25473. * @param {Function} func 要执行的回调函数
  25474. * @param {Number} wait 延时的时间
  25475. * @param {Boolean} immediate 是否立即执行
  25476. * @return null
  25477. */
  25478. function throttle(func) {var wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 500;var immediate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
  25479. if (immediate) {
  25480. if (!flag) {
  25481. flag = true;
  25482. // 如果是立即执行,则在wait毫秒内开始时执行
  25483. typeof func === 'function' && func();
  25484. timer = setTimeout(function () {
  25485. flag = false;
  25486. }, wait);
  25487. }
  25488. } else if (!flag) {
  25489. flag = true;
  25490. // 如果是非立即执行,则在wait毫秒内的结束处执行
  25491. timer = setTimeout(function () {
  25492. flag = false;
  25493. typeof func === 'function' && func();
  25494. }, wait);
  25495. }
  25496. }var _default =
  25497. throttle;exports.default = _default;
  25498. /***/ }),
  25499. /***/ 80:
  25500. /*!**********************************************************************************!*\
  25501. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/function/index.js ***!
  25502. \**********************************************************************************/
  25503. /*! no static exports found */
  25504. /***/ (function(module, exports, __webpack_require__) {
  25505. "use strict";
  25506. /* WEBPACK VAR INJECTION */(function(uni) {Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _test = _interopRequireDefault(__webpack_require__(/*! ./test.js */ 77));
  25507. var _digit = __webpack_require__(/*! ./digit.js */ 81);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function _slicedToArray(arr, i) {return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();}function _nonIterableRest() {throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _unsupportedIterableToArray(o, minLen) {if (!o) return;if (typeof o === "string") return _arrayLikeToArray(o, minLen);var n = Object.prototype.toString.call(o).slice(8, -1);if (n === "Object" && o.constructor) n = o.constructor.name;if (n === "Map" || n === "Set") return Array.from(o);if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);}function _arrayLikeToArray(arr, len) {if (len == null || len > arr.length) len = arr.length;for (var i = 0, arr2 = new Array(len); i < len; i++) {arr2[i] = arr[i];}return arr2;}function _iterableToArrayLimit(arr, i) {if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;var _arr = [];var _n = true;var _d = false;var _e = undefined;try {for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {_arr.push(_s.value);if (i && _arr.length === i) break;}} catch (err) {_d = true;_e = err;} finally {try {if (!_n && _i["return"] != null) _i["return"]();} finally {if (_d) throw _e;}}return _arr;}function _arrayWithHoles(arr) {if (Array.isArray(arr)) return arr;}
  25508. /**
  25509. * @description 如果value小于min,取min;如果value大于max,取max
  25510. * @param {number} min
  25511. * @param {number} max
  25512. * @param {number} value
  25513. */
  25514. function range() {var min = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;var max = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;var value = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
  25515. return Math.max(min, Math.min(max, Number(value)));
  25516. }
  25517. /**
  25518. * @description 用于获取用户传递值的px值 如果用户传递了"xxpx"或者"xxrpx",取出其数值部分,如果是"xxxrpx"还需要用过uni.upx2px进行转换
  25519. * @param {number|string} value 用户传递值的px值
  25520. * @param {boolean} unit
  25521. * @returns {number|string}
  25522. */
  25523. function getPx(value) {var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
  25524. if (_test.default.number(value)) {
  25525. return unit ? "".concat(value, "px") : Number(value);
  25526. }
  25527. // 如果带有rpx,先取出其数值部分,再转为px值
  25528. if (/(rpx|upx)$/.test(value)) {
  25529. return unit ? "".concat(uni.upx2px(parseInt(value)), "px") : Number(uni.upx2px(parseInt(value)));
  25530. }
  25531. return unit ? "".concat(parseInt(value), "px") : parseInt(value);
  25532. }
  25533. /**
  25534. * @description 进行延时,以达到可以简写代码的目的 比如: await uni.$u.sleep(20)将会阻塞20ms
  25535. * @param {number} value 堵塞时间 单位ms 毫秒
  25536. * @returns {Promise} 返回promise
  25537. */
  25538. function sleep() {var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 30;
  25539. return new Promise(function (resolve) {
  25540. setTimeout(function () {
  25541. resolve();
  25542. }, value);
  25543. });
  25544. }
  25545. /**
  25546. * @description 运行期判断平台
  25547. * @returns {string} 返回所在平台(小写)
  25548. * @link 运行期判断平台 https://uniapp.dcloud.io/frame?id=判断平台
  25549. */
  25550. function os() {
  25551. return uni.getSystemInfoSync().platform.toLowerCase();
  25552. }
  25553. /**
  25554. * @description 获取系统信息同步接口
  25555. * @link 获取系统信息同步接口 https://uniapp.dcloud.io/api/system/info?id=getsysteminfosync
  25556. */
  25557. function sys() {
  25558. return uni.getSystemInfoSync();
  25559. }
  25560. /**
  25561. * @description 取一个区间数
  25562. * @param {Number} min 最小值
  25563. * @param {Number} max 最大值
  25564. */
  25565. function random(min, max) {
  25566. if (min >= 0 && max > 0 && max >= min) {
  25567. var gab = max - min + 1;
  25568. return Math.floor(Math.random() * gab + min);
  25569. }
  25570. return 0;
  25571. }
  25572. /**
  25573. * @param {Number} len uuid的长度
  25574. * @param {Boolean} firstU 将返回的首字母置为"u"
  25575. * @param {Nubmer} radix 生成uuid的基数(意味着返回的字符串都是这个基数),2-二进制,8-八进制,10-十进制,16-十六进制
  25576. */
  25577. function guid() {var len = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 32;var firstU = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;var radix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
  25578. var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
  25579. var uuid = [];
  25580. radix = radix || chars.length;
  25581. if (len) {
  25582. // 如果指定uuid长度,只是取随机的字符,0|x为位运算,能去掉x的小数位,返回整数位
  25583. for (var i = 0; i < len; i++) {uuid[i] = chars[0 | Math.random() * radix];}
  25584. } else {
  25585. var r;
  25586. // rfc4122标准要求返回的uuid中,某些位为固定的字符
  25587. uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
  25588. uuid[14] = '4';
  25589. for (var _i = 0; _i < 36; _i++) {
  25590. if (!uuid[_i]) {
  25591. r = 0 | Math.random() * 16;
  25592. uuid[_i] = chars[_i == 19 ? r & 0x3 | 0x8 : r];
  25593. }
  25594. }
  25595. }
  25596. // 移除第一个字符,并用u替代,因为第一个字符为数值时,该guuid不能用作id或者class
  25597. if (firstU) {
  25598. uuid.shift();
  25599. return "u".concat(uuid.join(''));
  25600. }
  25601. return uuid.join('');
  25602. }
  25603. /**
  25604. * @description 获取父组件的参数,因为支付宝小程序不支持provide/inject的写法
  25605. this.$parent在非H5中,可以准确获取到父组件,但是在H5中,需要多次this.$parent.$parent.xxx
  25606. 这里默认值等于undefined有它的含义,因为最顶层元素(组件)的$parent就是undefined,意味着不传name
  25607. 值(默认为undefined),就是查找最顶层的$parent
  25608. * @param {string|undefined} name 父组件的参数名
  25609. */
  25610. function $parent() {var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
  25611. var parent = this.$parent;
  25612. // 通过while历遍,这里主要是为了H5需要多层解析的问题
  25613. while (parent) {
  25614. // 父组件
  25615. if (parent.$options && parent.$options.name !== name) {
  25616. // 如果组件的name不相等,继续上一级寻找
  25617. parent = parent.$parent;
  25618. } else {
  25619. return parent;
  25620. }
  25621. }
  25622. return false;
  25623. }
  25624. /**
  25625. * @description 样式转换
  25626. * 对象转字符串,或者字符串转对象
  25627. * @param {object | string} customStyle 需要转换的目标
  25628. * @param {String} target 转换的目的,object-转为对象,string-转为字符串
  25629. * @returns {object|string}
  25630. */
  25631. function addStyle(customStyle) {var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'object';
  25632. // 字符串转字符串,对象转对象情形,直接返回
  25633. if (_test.default.empty(customStyle) || typeof customStyle === 'object' && target === 'object' || target === 'string' &&
  25634. typeof customStyle === 'string') {
  25635. return customStyle;
  25636. }
  25637. // 字符串转对象
  25638. if (target === 'object') {
  25639. // 去除字符串样式中的两端空格(中间的空格不能去掉,比如padding: 20px 0如果去掉了就错了),空格是无用的
  25640. customStyle = trim(customStyle);
  25641. // 根据";"将字符串转为数组形式
  25642. var styleArray = customStyle.split(';');
  25643. var style = {};
  25644. // 历遍数组,拼接成对象
  25645. for (var i = 0; i < styleArray.length; i++) {
  25646. // 'font-size:20px;color:red;',如此最后字符串有";"的话,会导致styleArray最后一个元素为空字符串,这里需要过滤
  25647. if (styleArray[i]) {
  25648. var item = styleArray[i].split(':');
  25649. style[trim(item[0])] = trim(item[1]);
  25650. }
  25651. }
  25652. return style;
  25653. }
  25654. // 这里为对象转字符串形式
  25655. var string = '';
  25656. for (var _i2 in customStyle) {
  25657. // 驼峰转为中划线的形式,否则css内联样式,无法识别驼峰样式属性名
  25658. var key = _i2.replace(/([A-Z])/g, '-$1').toLowerCase();
  25659. string += "".concat(key, ":").concat(customStyle[_i2], ";");
  25660. }
  25661. // 去除两端空格
  25662. return trim(string);
  25663. }
  25664. /**
  25665. * @description 添加单位,如果有rpx,upx,%,px等单位结尾或者值为auto,直接返回,否则加上px单位结尾
  25666. * @param {string|number} value 需要添加单位的值
  25667. * @param {string} unit 添加的单位名 比如px
  25668. */
  25669. function addUnit() {var _uni$$u$config$unit, _uni, _uni$$u, _uni$$u$config;var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'auto';var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (_uni$$u$config$unit = (_uni = uni) === null || _uni === void 0 ? void 0 : (_uni$$u = _uni.$u) === null || _uni$$u === void 0 ? void 0 : (_uni$$u$config = _uni$$u.config) === null || _uni$$u$config === void 0 ? void 0 : _uni$$u$config.unit) !== null && _uni$$u$config$unit !== void 0 ? _uni$$u$config$unit : 'px';
  25670. value = String(value);
  25671. // 用uView内置验证规则中的number判断是否为数值
  25672. return _test.default.number(value) ? "".concat(value).concat(unit) : value;
  25673. }
  25674. /**
  25675. * @description 深度克隆
  25676. * @param {object} obj 需要深度克隆的对象
  25677. * @returns {*} 克隆后的对象或者原值(不是对象)
  25678. */
  25679. function deepClone(obj) {
  25680. // 对常见的“非”值,直接返回原来值
  25681. if ([null, undefined, NaN, false].includes(obj)) return obj;
  25682. if (typeof obj !== 'object' && typeof obj !== 'function') {
  25683. // 原始类型直接返回
  25684. return obj;
  25685. }
  25686. var o = _test.default.array(obj) ? [] : {};
  25687. for (var i in obj) {
  25688. if (obj.hasOwnProperty(i)) {
  25689. o[i] = typeof obj[i] === 'object' ? deepClone(obj[i]) : obj[i];
  25690. }
  25691. }
  25692. return o;
  25693. }
  25694. /**
  25695. * @description JS对象深度合并
  25696. * @param {object} target 需要拷贝的对象
  25697. * @param {object} source 拷贝的来源对象
  25698. * @returns {object|boolean} 深度合并后的对象或者false(入参有不是对象)
  25699. */
  25700. function deepMerge() {var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  25701. target = deepClone(target);
  25702. if (typeof target !== 'object' || typeof source !== 'object') return false;
  25703. for (var prop in source) {
  25704. if (!source.hasOwnProperty(prop)) continue;
  25705. if (prop in target) {
  25706. if (typeof target[prop] !== 'object') {
  25707. target[prop] = source[prop];
  25708. } else if (typeof source[prop] !== 'object') {
  25709. target[prop] = source[prop];
  25710. } else if (target[prop].concat && source[prop].concat) {
  25711. target[prop] = target[prop].concat(source[prop]);
  25712. } else {
  25713. target[prop] = deepMerge(target[prop], source[prop]);
  25714. }
  25715. } else {
  25716. target[prop] = source[prop];
  25717. }
  25718. }
  25719. return target;
  25720. }
  25721. /**
  25722. * @description error提示
  25723. * @param {*} err 错误内容
  25724. */
  25725. function error(err) {
  25726. // 开发环境才提示,生产环境不会提示
  25727. if (true) {
  25728. console.error("uView\u63D0\u793A\uFF1A".concat(err));
  25729. }
  25730. }
  25731. /**
  25732. * @description 打乱数组
  25733. * @param {array} array 需要打乱的数组
  25734. * @returns {array} 打乱后的数组
  25735. */
  25736. function randomArray() {var array = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
  25737. // 原理是sort排序,Math.random()产生0<= x < 1之间的数,会导致x-0.05大于或者小于0
  25738. return array.sort(function () {return Math.random() - 0.5;});
  25739. }
  25740. // padStart 的 polyfill,因为某些机型或情况,还无法支持es7的padStart,比如电脑版的微信小程序
  25741. // 所以这里做一个兼容polyfill的兼容处理
  25742. if (!String.prototype.padStart) {
  25743. // 为了方便表示这里 fillString 用了ES6 的默认参数,不影响理解
  25744. String.prototype.padStart = function (maxLength) {var fillString = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ' ';
  25745. if (Object.prototype.toString.call(fillString) !== '[object String]') {
  25746. throw new TypeError(
  25747. 'fillString must be String');
  25748. }
  25749. var str = this;
  25750. // 返回 String(str) 这里是为了使返回的值是字符串字面量,在控制台中更符合直觉
  25751. if (str.length >= maxLength) return String(str);
  25752. var fillLength = maxLength - str.length;
  25753. var times = Math.ceil(fillLength / fillString.length);
  25754. while (times >>= 1) {
  25755. fillString += fillString;
  25756. if (times === 1) {
  25757. fillString += fillString;
  25758. }
  25759. }
  25760. return fillString.slice(0, fillLength) + str;
  25761. };
  25762. }
  25763. /**
  25764. * @description 格式化时间
  25765. * @param {String|Number} dateTime 需要格式化的时间戳
  25766. * @param {String} fmt 格式化规则 yyyy:mm:dd|yyyy:mm|yyyy年mm月dd日|yyyy年mm月dd日 hh时MM分等,可自定义组合 默认yyyy-mm-dd
  25767. * @returns {string} 返回格式化后的字符串
  25768. */
  25769. function timeFormat() {var dateTime = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;var formatStr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'yyyy-mm-dd';
  25770. var date;
  25771. // 若传入时间为假值,则取当前时间
  25772. if (!dateTime) {
  25773. date = new Date();
  25774. }
  25775. // 若为unix秒时间戳,则转为毫秒时间戳(逻辑有点奇怪,但不敢改,以保证历史兼容)
  25776. else if (/^\d{10}$/.test(dateTime === null || dateTime === void 0 ? void 0 : dateTime.toString().trim())) {
  25777. date = new Date(dateTime * 1000);
  25778. }
  25779. // 若用户传入字符串格式时间戳,new Date无法解析,需做兼容
  25780. else if (typeof dateTime === 'string' && /^\d+$/.test(dateTime.trim())) {
  25781. date = new Date(Number(dateTime));
  25782. }
  25783. // 处理平台性差异,在Safari/Webkit中,new Date仅支持/作为分割符的字符串时间
  25784. // 处理 '2022-07-10 01:02:03',跳过 '2022-07-10T01:02:03'
  25785. else if (typeof dateTime === 'string' && dateTime.includes('-') && !dateTime.includes('T')) {
  25786. date = new Date(dateTime.replace(/-/g, '/'));
  25787. }
  25788. // 其他都认为符合 RFC 2822 规范
  25789. else {
  25790. date = new Date(dateTime);
  25791. }
  25792. var timeSource = {
  25793. 'y': date.getFullYear().toString(), // 年
  25794. 'm': (date.getMonth() + 1).toString().padStart(2, '0'), // 月
  25795. 'd': date.getDate().toString().padStart(2, '0'), // 日
  25796. 'h': date.getHours().toString().padStart(2, '0'), // 时
  25797. 'M': date.getMinutes().toString().padStart(2, '0'), // 分
  25798. 's': date.getSeconds().toString().padStart(2, '0') // 秒
  25799. // 有其他格式化字符需求可以继续添加,必须转化成字符串
  25800. };
  25801. for (var key in timeSource) {var _ref =
  25802. new RegExp("".concat(key, "+")).exec(formatStr) || [],_ref2 = _slicedToArray(_ref, 1),ret = _ref2[0];
  25803. if (ret) {
  25804. // 年可能只需展示两位
  25805. var beginIndex = key === 'y' && ret.length === 2 ? 2 : 0;
  25806. formatStr = formatStr.replace(ret, timeSource[key].slice(beginIndex));
  25807. }
  25808. }
  25809. return formatStr;
  25810. }
  25811. /**
  25812. * @description 时间戳转为多久之前
  25813. * @param {String|Number} timestamp 时间戳
  25814. * @param {String|Boolean} format
  25815. * 格式化规则如果为时间格式字符串,超出一定时间范围,返回固定的时间格式;
  25816. * 如果为布尔值false,无论什么时间,都返回多久以前的格式
  25817. * @returns {string} 转化后的内容
  25818. */
  25819. function timeFrom() {var timestamp = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'yyyy-mm-dd';
  25820. if (timestamp == null) timestamp = Number(new Date());
  25821. timestamp = parseInt(timestamp);
  25822. // 判断用户输入的时间戳是秒还是毫秒,一般前端js获取的时间戳是毫秒(13位),后端传过来的为秒(10位)
  25823. if (timestamp.toString().length == 10) timestamp *= 1000;
  25824. var timer = new Date().getTime() - timestamp;
  25825. timer = parseInt(timer / 1000);
  25826. // 如果小于5分钟,则返回"刚刚",其他以此类推
  25827. var tips = '';
  25828. switch (true) {
  25829. case timer < 300:
  25830. tips = '刚刚';
  25831. break;
  25832. case timer >= 300 && timer < 3600:
  25833. tips = "".concat(parseInt(timer / 60), "\u5206\u949F\u524D");
  25834. break;
  25835. case timer >= 3600 && timer < 86400:
  25836. tips = "".concat(parseInt(timer / 3600), "\u5C0F\u65F6\u524D");
  25837. break;
  25838. case timer >= 86400 && timer < 2592000:
  25839. tips = "".concat(parseInt(timer / 86400), "\u5929\u524D");
  25840. break;
  25841. default:
  25842. // 如果format为false,则无论什么时间戳,都显示xx之前
  25843. if (format === false) {
  25844. if (timer >= 2592000 && timer < 365 * 86400) {
  25845. tips = "".concat(parseInt(timer / (86400 * 30)), "\u4E2A\u6708\u524D");
  25846. } else {
  25847. tips = "".concat(parseInt(timer / (86400 * 365)), "\u5E74\u524D");
  25848. }
  25849. } else {
  25850. tips = timeFormat(timestamp, format);
  25851. }}
  25852. return tips;
  25853. }
  25854. /**
  25855. * @description 去除空格
  25856. * @param String str 需要去除空格的字符串
  25857. * @param String pos both(左右)|left|right|all 默认both
  25858. */
  25859. function trim(str) {var pos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'both';
  25860. str = String(str);
  25861. if (pos == 'both') {
  25862. return str.replace(/^\s+|\s+$/g, '');
  25863. }
  25864. if (pos == 'left') {
  25865. return str.replace(/^\s*/, '');
  25866. }
  25867. if (pos == 'right') {
  25868. return str.replace(/(\s*$)/g, '');
  25869. }
  25870. if (pos == 'all') {
  25871. return str.replace(/\s+/g, '');
  25872. }
  25873. return str;
  25874. }
  25875. /**
  25876. * @description 对象转url参数
  25877. * @param {object} data,对象
  25878. * @param {Boolean} isPrefix,是否自动加上"?"
  25879. * @param {string} arrayFormat 规则 indices|brackets|repeat|comma
  25880. */
  25881. function queryParams() {var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};var isPrefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;var arrayFormat = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'brackets';
  25882. var prefix = isPrefix ? '?' : '';
  25883. var _result = [];
  25884. if (['indices', 'brackets', 'repeat', 'comma'].indexOf(arrayFormat) == -1) arrayFormat = 'brackets';var _loop = function _loop(
  25885. key) {
  25886. var value = data[key];
  25887. // 去掉为空的参数
  25888. if (['', undefined, null].indexOf(value) >= 0) {
  25889. return "continue";
  25890. }
  25891. // 如果值为数组,另行处理
  25892. if (value.constructor === Array) {
  25893. // e.g. {ids: [1, 2, 3]}
  25894. switch (arrayFormat) {
  25895. case 'indices':
  25896. // 结果: ids[0]=1&ids[1]=2&ids[2]=3
  25897. for (var i = 0; i < value.length; i++) {
  25898. _result.push("".concat(key, "[").concat(i, "]=").concat(value[i]));
  25899. }
  25900. break;
  25901. case 'brackets':
  25902. // 结果: ids[]=1&ids[]=2&ids[]=3
  25903. value.forEach(function (_value) {
  25904. _result.push("".concat(key, "[]=").concat(_value));
  25905. });
  25906. break;
  25907. case 'repeat':
  25908. // 结果: ids=1&ids=2&ids=3
  25909. value.forEach(function (_value) {
  25910. _result.push("".concat(key, "=").concat(_value));
  25911. });
  25912. break;
  25913. case 'comma':
  25914. // 结果: ids=1,2,3
  25915. var commaStr = '';
  25916. value.forEach(function (_value) {
  25917. commaStr += (commaStr ? ',' : '') + _value;
  25918. });
  25919. _result.push("".concat(key, "=").concat(commaStr));
  25920. break;
  25921. default:
  25922. value.forEach(function (_value) {
  25923. _result.push("".concat(key, "[]=").concat(_value));
  25924. });}
  25925. } else {
  25926. _result.push("".concat(key, "=").concat(value));
  25927. }};for (var key in data) {var _ret = _loop(key);if (_ret === "continue") continue;
  25928. }
  25929. return _result.length ? prefix + _result.join('&') : '';
  25930. }
  25931. /**
  25932. * 显示消息提示框
  25933. * @param {String} title 提示的内容,长度与 icon 取值有关。
  25934. * @param {Number} duration 提示的延迟时间,单位毫秒,默认:2000
  25935. */
  25936. function toast(title) {var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2000;
  25937. uni.showToast({
  25938. title: String(title),
  25939. icon: 'none',
  25940. duration: duration });
  25941. }
  25942. /**
  25943. * @description 根据主题type值,获取对应的图标
  25944. * @param {String} type 主题名称,primary|info|error|warning|success
  25945. * @param {boolean} fill 是否使用fill填充实体的图标
  25946. */
  25947. function type2icon() {var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'success';var fill = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
  25948. // 如果非预置值,默认为success
  25949. if (['primary', 'info', 'error', 'warning', 'success'].indexOf(type) == -1) type = 'success';
  25950. var iconName = '';
  25951. // 目前(2019-12-12),info和primary使用同一个图标
  25952. switch (type) {
  25953. case 'primary':
  25954. iconName = 'info-circle';
  25955. break;
  25956. case 'info':
  25957. iconName = 'info-circle';
  25958. break;
  25959. case 'error':
  25960. iconName = 'close-circle';
  25961. break;
  25962. case 'warning':
  25963. iconName = 'error-circle';
  25964. break;
  25965. case 'success':
  25966. iconName = 'checkmark-circle';
  25967. break;
  25968. default:
  25969. iconName = 'checkmark-circle';}
  25970. // 是否是实体类型,加上-fill,在icon组件库中,实体的类名是后面加-fill的
  25971. if (fill) iconName += '-fill';
  25972. return iconName;
  25973. }
  25974. /**
  25975. * @description 数字格式化
  25976. * @param {number|string} number 要格式化的数字
  25977. * @param {number} decimals 保留几位小数
  25978. * @param {string} decimalPoint 小数点符号
  25979. * @param {string} thousandsSeparator 千分位符号
  25980. * @returns {string} 格式化后的数字
  25981. */
  25982. function priceFormat(number) {var decimals = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;var decimalPoint = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';var thousandsSeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ',';
  25983. number = "".concat(number).replace(/[^0-9+-Ee.]/g, '');
  25984. var n = !isFinite(+number) ? 0 : +number;
  25985. var prec = !isFinite(+decimals) ? 0 : Math.abs(decimals);
  25986. var sep = typeof thousandsSeparator === 'undefined' ? ',' : thousandsSeparator;
  25987. var dec = typeof decimalPoint === 'undefined' ? '.' : decimalPoint;
  25988. var s = '';
  25989. s = (prec ? (0, _digit.round)(n, prec) + '' : "".concat(Math.round(n))).split('.');
  25990. var re = /(-?\d+)(\d{3})/;
  25991. while (re.test(s[0])) {
  25992. s[0] = s[0].replace(re, "$1".concat(sep, "$2"));
  25993. }
  25994. if ((s[1] || '').length < prec) {
  25995. s[1] = s[1] || '';
  25996. s[1] += new Array(prec - s[1].length + 1).join('0');
  25997. }
  25998. return s.join(dec);
  25999. }
  26000. /**
  26001. * @description 获取duration值
  26002. * 如果带有ms或者s直接返回,如果大于一定值,认为是ms单位,小于一定值,认为是s单位
  26003. * 比如以30位阈值,那么300大于30,可以理解为用户想要的是300ms,而不是想花300s去执行一个动画
  26004. * @param {String|number} value 比如: "1s"|"100ms"|1|100
  26005. * @param {boolean} unit 提示: 如果是false 默认返回number
  26006. * @return {string|number}
  26007. */
  26008. function getDuration(value) {var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
  26009. var valueNum = parseInt(value);
  26010. if (unit) {
  26011. if (/s$/.test(value)) return value;
  26012. return value > 30 ? "".concat(value, "ms") : "".concat(value, "s");
  26013. }
  26014. if (/ms$/.test(value)) return valueNum;
  26015. if (/s$/.test(value)) return valueNum > 30 ? valueNum : valueNum * 1000;
  26016. return valueNum;
  26017. }
  26018. /**
  26019. * @description 日期的月或日补零操作
  26020. * @param {String} value 需要补零的值
  26021. */
  26022. function padZero(value) {
  26023. return "00".concat(value).slice(-2);
  26024. }
  26025. /**
  26026. * @description 在u-form的子组件内容发生变化,或者失去焦点时,尝试通知u-form执行校验方法
  26027. * @param {*} instance
  26028. * @param {*} event
  26029. */
  26030. function formValidate(instance, event) {
  26031. var formItem = uni.$u.$parent.call(instance, 'u-form-item');
  26032. var form = uni.$u.$parent.call(instance, 'u-form');
  26033. // 如果发生变化的input或者textarea等,其父组件中有u-form-item或者u-form等,就执行form的validate方法
  26034. // 同时将form-item的pros传递给form,让其进行精确对象验证
  26035. if (formItem && form) {
  26036. form.validateField(formItem.prop, function () {}, event);
  26037. }
  26038. }
  26039. /**
  26040. * @description 获取某个对象下的属性,用于通过类似'a.b.c'的形式去获取一个对象的的属性的形式
  26041. * @param {object} obj 对象
  26042. * @param {string} key 需要获取的属性字段
  26043. * @returns {*}
  26044. */
  26045. function getProperty(obj, key) {
  26046. if (!obj) {
  26047. return;
  26048. }
  26049. if (typeof key !== 'string' || key === '') {
  26050. return '';
  26051. }
  26052. if (key.indexOf('.') !== -1) {
  26053. var keys = key.split('.');
  26054. var firstObj = obj[keys[0]] || {};
  26055. for (var i = 1; i < keys.length; i++) {
  26056. if (firstObj) {
  26057. firstObj = firstObj[keys[i]];
  26058. }
  26059. }
  26060. return firstObj;
  26061. }
  26062. return obj[key];
  26063. }
  26064. /**
  26065. * @description 设置对象的属性值,如果'a.b.c'的形式进行设置
  26066. * @param {object} obj 对象
  26067. * @param {string} key 需要设置的属性
  26068. * @param {string} value 设置的值
  26069. */
  26070. function setProperty(obj, key, value) {
  26071. if (!obj) {
  26072. return;
  26073. }
  26074. // 递归赋值
  26075. var inFn = function inFn(_obj, keys, v) {
  26076. // 最后一个属性key
  26077. if (keys.length === 1) {
  26078. _obj[keys[0]] = v;
  26079. return;
  26080. }
  26081. // 0~length-1个key
  26082. while (keys.length > 1) {
  26083. var k = keys[0];
  26084. if (!_obj[k] || typeof _obj[k] !== 'object') {
  26085. _obj[k] = {};
  26086. }
  26087. var _key = keys.shift();
  26088. // 自调用判断是否存在属性,不存在则自动创建对象
  26089. inFn(_obj[k], keys, v);
  26090. }
  26091. };
  26092. if (typeof key !== 'string' || key === '') {
  26093. } else if (key.indexOf('.') !== -1) {// 支持多层级赋值操作
  26094. var keys = key.split('.');
  26095. inFn(obj, keys, value);
  26096. } else {
  26097. obj[key] = value;
  26098. }
  26099. }
  26100. /**
  26101. * @description 获取当前页面路径
  26102. */
  26103. function page() {var _pages$route, _pages;
  26104. var pages = getCurrentPages();
  26105. // 某些特殊情况下(比如页面进行redirectTo时的一些时机),pages可能为空数组
  26106. return "/".concat((_pages$route = (_pages = pages[pages.length - 1]) === null || _pages === void 0 ? void 0 : _pages.route) !== null && _pages$route !== void 0 ? _pages$route : '');
  26107. }
  26108. /**
  26109. * @description 获取当前路由栈实例数组
  26110. */
  26111. function pages() {
  26112. var pages = getCurrentPages();
  26113. return pages;
  26114. }
  26115. /**
  26116. * @description 修改uView内置属性值
  26117. * @param {object} props 修改内置props属性
  26118. * @param {object} config 修改内置config属性
  26119. * @param {object} color 修改内置color属性
  26120. * @param {object} zIndex 修改内置zIndex属性
  26121. */
  26122. function setConfig(_ref3)
  26123. {var _ref3$props = _ref3.props,props = _ref3$props === void 0 ? {} : _ref3$props,_ref3$config = _ref3.config,config = _ref3$config === void 0 ? {} : _ref3$config,_ref3$color = _ref3.color,color = _ref3$color === void 0 ? {} : _ref3$color,_ref3$zIndex = _ref3.zIndex,zIndex = _ref3$zIndex === void 0 ? {} : _ref3$zIndex;var
  26124. deepMerge =
  26125. uni.$u.deepMerge;
  26126. uni.$u.config = deepMerge(uni.$u.config, config);
  26127. uni.$u.props = deepMerge(uni.$u.props, props);
  26128. uni.$u.color = deepMerge(uni.$u.color, color);
  26129. uni.$u.zIndex = deepMerge(uni.$u.zIndex, zIndex);
  26130. }var _default =
  26131. {
  26132. range: range,
  26133. getPx: getPx,
  26134. sleep: sleep,
  26135. os: os,
  26136. sys: sys,
  26137. random: random,
  26138. guid: guid,
  26139. $parent: $parent,
  26140. addStyle: addStyle,
  26141. addUnit: addUnit,
  26142. deepClone: deepClone,
  26143. deepMerge: deepMerge,
  26144. error: error,
  26145. randomArray: randomArray,
  26146. timeFormat: timeFormat,
  26147. timeFrom: timeFrom,
  26148. trim: trim,
  26149. queryParams: queryParams,
  26150. toast: toast,
  26151. type2icon: type2icon,
  26152. priceFormat: priceFormat,
  26153. getDuration: getDuration,
  26154. padZero: padZero,
  26155. formValidate: formValidate,
  26156. getProperty: getProperty,
  26157. setProperty: setProperty,
  26158. page: page,
  26159. pages: pages,
  26160. setConfig: setConfig };exports.default = _default;
  26161. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["default"]))
  26162. /***/ }),
  26163. /***/ 81:
  26164. /*!**********************************************************************************!*\
  26165. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/function/digit.js ***!
  26166. \**********************************************************************************/
  26167. /*! no static exports found */
  26168. /***/ (function(module, exports, __webpack_require__) {
  26169. "use strict";
  26170. Object.defineProperty(exports, "__esModule", { value: true });exports.times = times;exports.plus = plus;exports.minus = minus;exports.divide = divide;exports.round = round;exports.enableBoundaryChecking = enableBoundaryChecking;exports.default = void 0;function _toArray(arr) {return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest();}function _nonIterableRest() {throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _unsupportedIterableToArray(o, minLen) {if (!o) return;if (typeof o === "string") return _arrayLikeToArray(o, minLen);var n = Object.prototype.toString.call(o).slice(8, -1);if (n === "Object" && o.constructor) n = o.constructor.name;if (n === "Map" || n === "Set") return Array.from(o);if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);}function _arrayLikeToArray(arr, len) {if (len == null || len > arr.length) len = arr.length;for (var i = 0, arr2 = new Array(len); i < len; i++) {arr2[i] = arr[i];}return arr2;}function _iterableToArray(iter) {if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);}function _arrayWithHoles(arr) {if (Array.isArray(arr)) return arr;}var _boundaryCheckingState = true; // 是否进行越界检查的全局开关
  26171. /**
  26172. * 把错误的数据转正
  26173. * @private
  26174. * @example strip(0.09999999999999998)=0.1
  26175. */
  26176. function strip(num) {var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 15;
  26177. return +parseFloat(Number(num).toPrecision(precision));
  26178. }
  26179. /**
  26180. * Return digits length of a number
  26181. * @private
  26182. * @param {*number} num Input number
  26183. */
  26184. function digitLength(num) {
  26185. // Get digit length of e
  26186. var eSplit = num.toString().split(/[eE]/);
  26187. var len = (eSplit[0].split('.')[1] || '').length - +(eSplit[1] || 0);
  26188. return len > 0 ? len : 0;
  26189. }
  26190. /**
  26191. * 把小数转成整数,如果是小数则放大成整数
  26192. * @private
  26193. * @param {*number} num 输入数
  26194. */
  26195. function float2Fixed(num) {
  26196. if (num.toString().indexOf('e') === -1) {
  26197. return Number(num.toString().replace('.', ''));
  26198. }
  26199. var dLen = digitLength(num);
  26200. return dLen > 0 ? strip(Number(num) * Math.pow(10, dLen)) : Number(num);
  26201. }
  26202. /**
  26203. * 检测数字是否越界,如果越界给出提示
  26204. * @private
  26205. * @param {*number} num 输入数
  26206. */
  26207. function checkBoundary(num) {
  26208. if (_boundaryCheckingState) {
  26209. if (num > Number.MAX_SAFE_INTEGER || num < Number.MIN_SAFE_INTEGER) {
  26210. console.warn("".concat(num, " \u8D85\u51FA\u4E86\u7CBE\u5EA6\u9650\u5236\uFF0C\u7ED3\u679C\u53EF\u80FD\u4E0D\u6B63\u786E"));
  26211. }
  26212. }
  26213. }
  26214. /**
  26215. * 把递归操作扁平迭代化
  26216. * @param {number[]} arr 要操作的数字数组
  26217. * @param {function} operation 迭代操作
  26218. * @private
  26219. */
  26220. function iteratorOperation(arr, operation) {var _arr = _toArray(
  26221. arr),num1 = _arr[0],num2 = _arr[1],others = _arr.slice(2);
  26222. var res = operation(num1, num2);
  26223. others.forEach(function (num) {
  26224. res = operation(res, num);
  26225. });
  26226. return res;
  26227. }
  26228. /**
  26229. * 高精度乘法
  26230. * @export
  26231. */
  26232. function times() {for (var _len = arguments.length, nums = new Array(_len), _key = 0; _key < _len; _key++) {nums[_key] = arguments[_key];}
  26233. if (nums.length > 2) {
  26234. return iteratorOperation(nums, times);
  26235. }var
  26236. num1 = nums[0],num2 = nums[1];
  26237. var num1Changed = float2Fixed(num1);
  26238. var num2Changed = float2Fixed(num2);
  26239. var baseNum = digitLength(num1) + digitLength(num2);
  26240. var leftValue = num1Changed * num2Changed;
  26241. checkBoundary(leftValue);
  26242. return leftValue / Math.pow(10, baseNum);
  26243. }
  26244. /**
  26245. * 高精度加法
  26246. * @export
  26247. */
  26248. function plus() {for (var _len2 = arguments.length, nums = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {nums[_key2] = arguments[_key2];}
  26249. if (nums.length > 2) {
  26250. return iteratorOperation(nums, plus);
  26251. }var
  26252. num1 = nums[0],num2 = nums[1];
  26253. // 取最大的小数位
  26254. var baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));
  26255. // 把小数都转为整数然后再计算
  26256. return (times(num1, baseNum) + times(num2, baseNum)) / baseNum;
  26257. }
  26258. /**
  26259. * 高精度减法
  26260. * @export
  26261. */
  26262. function minus() {for (var _len3 = arguments.length, nums = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {nums[_key3] = arguments[_key3];}
  26263. if (nums.length > 2) {
  26264. return iteratorOperation(nums, minus);
  26265. }var
  26266. num1 = nums[0],num2 = nums[1];
  26267. var baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));
  26268. return (times(num1, baseNum) - times(num2, baseNum)) / baseNum;
  26269. }
  26270. /**
  26271. * 高精度除法
  26272. * @export
  26273. */
  26274. function divide() {for (var _len4 = arguments.length, nums = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {nums[_key4] = arguments[_key4];}
  26275. if (nums.length > 2) {
  26276. return iteratorOperation(nums, divide);
  26277. }var
  26278. num1 = nums[0],num2 = nums[1];
  26279. var num1Changed = float2Fixed(num1);
  26280. var num2Changed = float2Fixed(num2);
  26281. checkBoundary(num1Changed);
  26282. checkBoundary(num2Changed);
  26283. // 重要,这里必须用strip进行修正
  26284. return times(num1Changed / num2Changed, strip(Math.pow(10, digitLength(num2) - digitLength(num1))));
  26285. }
  26286. /**
  26287. * 四舍五入
  26288. * @export
  26289. */
  26290. function round(num, ratio) {
  26291. var base = Math.pow(10, ratio);
  26292. var result = divide(Math.round(Math.abs(times(num, base))), base);
  26293. if (num < 0 && result !== 0) {
  26294. result = times(result, -1);
  26295. }
  26296. // 位数不足则补0
  26297. return result;
  26298. }
  26299. /**
  26300. * 是否进行边界检查,默认开启
  26301. * @param flag 标记开关,true 为开启,false 为关闭,默认为 true
  26302. * @export
  26303. */
  26304. function enableBoundaryChecking() {var flag = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
  26305. _boundaryCheckingState = flag;
  26306. }var _default =
  26307. {
  26308. times: times,
  26309. plus: plus,
  26310. minus: minus,
  26311. divide: divide,
  26312. round: round,
  26313. enableBoundaryChecking: enableBoundaryChecking };exports.default = _default;
  26314. /***/ }),
  26315. /***/ 82:
  26316. /*!*********************************************************************************!*\
  26317. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/config.js ***!
  26318. \*********************************************************************************/
  26319. /*! no static exports found */
  26320. /***/ (function(module, exports, __webpack_require__) {
  26321. "use strict";
  26322. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; // 此版本发布于2022-00-24
  26323. var version = '2.0.34';
  26324. // 开发环境才提示,生产环境不会提示
  26325. if (true) {
  26326. console.log("\n %c uView V".concat(version, " %c https://uviewui.com/ \n\n"), 'color: #ffffff; background: #3c9cff; padding:5px 0; border-radius: 5px;');
  26327. }var _default =
  26328. {
  26329. v: version,
  26330. version: version,
  26331. // 主题名称
  26332. type: [
  26333. 'primary',
  26334. 'success',
  26335. 'info',
  26336. 'error',
  26337. 'warning'],
  26338. // 颜色部分,本来可以通过scss的:export导出供js使用,但是奈何nvue不支持
  26339. color: {
  26340. 'u-primary': '#2979ff',
  26341. 'u-warning': '#ff9900',
  26342. 'u-success': '#19be6b',
  26343. 'u-error': '#fa3534',
  26344. 'u-info': '#909399',
  26345. 'u-main-color': '#303133',
  26346. 'u-content-color': '#606266',
  26347. 'u-tips-color': '#909399',
  26348. 'u-light-color': '#c0c4cc' },
  26349. // 默认单位,可以通过配置为rpx,那么在用于传入组件大小参数为数值时,就默认为rpx
  26350. unit: 'px' };exports.default = _default;
  26351. /***/ }),
  26352. /***/ 83:
  26353. /*!********************************************************************************!*\
  26354. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props.js ***!
  26355. \********************************************************************************/
  26356. /*! no static exports found */
  26357. /***/ (function(module, exports, __webpack_require__) {
  26358. "use strict";
  26359. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;
  26360. var _config = _interopRequireDefault(__webpack_require__(/*! ./config */ 82));
  26361. var _actionSheet = _interopRequireDefault(__webpack_require__(/*! ./props/actionSheet.js */ 84));
  26362. var _album = _interopRequireDefault(__webpack_require__(/*! ./props/album.js */ 85));
  26363. var _alert = _interopRequireDefault(__webpack_require__(/*! ./props/alert.js */ 86));
  26364. var _avatar = _interopRequireDefault(__webpack_require__(/*! ./props/avatar */ 87));
  26365. var _avatarGroup = _interopRequireDefault(__webpack_require__(/*! ./props/avatarGroup */ 88));
  26366. var _backtop = _interopRequireDefault(__webpack_require__(/*! ./props/backtop */ 89));
  26367. var _badge = _interopRequireDefault(__webpack_require__(/*! ./props/badge */ 90));
  26368. var _button = _interopRequireDefault(__webpack_require__(/*! ./props/button */ 91));
  26369. var _calendar = _interopRequireDefault(__webpack_require__(/*! ./props/calendar */ 92));
  26370. var _carKeyboard = _interopRequireDefault(__webpack_require__(/*! ./props/carKeyboard */ 93));
  26371. var _cell = _interopRequireDefault(__webpack_require__(/*! ./props/cell */ 94));
  26372. var _cellGroup = _interopRequireDefault(__webpack_require__(/*! ./props/cellGroup */ 95));
  26373. var _checkbox = _interopRequireDefault(__webpack_require__(/*! ./props/checkbox */ 96));
  26374. var _checkboxGroup = _interopRequireDefault(__webpack_require__(/*! ./props/checkboxGroup */ 97));
  26375. var _circleProgress = _interopRequireDefault(__webpack_require__(/*! ./props/circleProgress */ 98));
  26376. var _code = _interopRequireDefault(__webpack_require__(/*! ./props/code */ 99));
  26377. var _codeInput = _interopRequireDefault(__webpack_require__(/*! ./props/codeInput */ 100));
  26378. var _col = _interopRequireDefault(__webpack_require__(/*! ./props/col */ 101));
  26379. var _collapse = _interopRequireDefault(__webpack_require__(/*! ./props/collapse */ 102));
  26380. var _collapseItem = _interopRequireDefault(__webpack_require__(/*! ./props/collapseItem */ 103));
  26381. var _columnNotice = _interopRequireDefault(__webpack_require__(/*! ./props/columnNotice */ 104));
  26382. var _countDown = _interopRequireDefault(__webpack_require__(/*! ./props/countDown */ 105));
  26383. var _countTo = _interopRequireDefault(__webpack_require__(/*! ./props/countTo */ 106));
  26384. var _datetimePicker = _interopRequireDefault(__webpack_require__(/*! ./props/datetimePicker */ 107));
  26385. var _divider = _interopRequireDefault(__webpack_require__(/*! ./props/divider */ 108));
  26386. var _empty = _interopRequireDefault(__webpack_require__(/*! ./props/empty */ 109));
  26387. var _form = _interopRequireDefault(__webpack_require__(/*! ./props/form */ 110));
  26388. var _formItem = _interopRequireDefault(__webpack_require__(/*! ./props/formItem */ 111));
  26389. var _gap = _interopRequireDefault(__webpack_require__(/*! ./props/gap */ 112));
  26390. var _grid = _interopRequireDefault(__webpack_require__(/*! ./props/grid */ 113));
  26391. var _gridItem = _interopRequireDefault(__webpack_require__(/*! ./props/gridItem */ 114));
  26392. var _icon = _interopRequireDefault(__webpack_require__(/*! ./props/icon */ 115));
  26393. var _image = _interopRequireDefault(__webpack_require__(/*! ./props/image */ 116));
  26394. var _indexAnchor = _interopRequireDefault(__webpack_require__(/*! ./props/indexAnchor */ 117));
  26395. var _indexList = _interopRequireDefault(__webpack_require__(/*! ./props/indexList */ 118));
  26396. var _input = _interopRequireDefault(__webpack_require__(/*! ./props/input */ 119));
  26397. var _keyboard = _interopRequireDefault(__webpack_require__(/*! ./props/keyboard */ 120));
  26398. var _line = _interopRequireDefault(__webpack_require__(/*! ./props/line */ 121));
  26399. var _lineProgress = _interopRequireDefault(__webpack_require__(/*! ./props/lineProgress */ 122));
  26400. var _link = _interopRequireDefault(__webpack_require__(/*! ./props/link */ 123));
  26401. var _list = _interopRequireDefault(__webpack_require__(/*! ./props/list */ 124));
  26402. var _listItem = _interopRequireDefault(__webpack_require__(/*! ./props/listItem */ 125));
  26403. var _loadingIcon = _interopRequireDefault(__webpack_require__(/*! ./props/loadingIcon */ 126));
  26404. var _loadingPage = _interopRequireDefault(__webpack_require__(/*! ./props/loadingPage */ 127));
  26405. var _loadmore = _interopRequireDefault(__webpack_require__(/*! ./props/loadmore */ 128));
  26406. var _modal = _interopRequireDefault(__webpack_require__(/*! ./props/modal */ 129));
  26407. var _navbar = _interopRequireDefault(__webpack_require__(/*! ./props/navbar */ 130));
  26408. var _noNetwork = _interopRequireDefault(__webpack_require__(/*! ./props/noNetwork */ 132));
  26409. var _noticeBar = _interopRequireDefault(__webpack_require__(/*! ./props/noticeBar */ 133));
  26410. var _notify = _interopRequireDefault(__webpack_require__(/*! ./props/notify */ 134));
  26411. var _numberBox = _interopRequireDefault(__webpack_require__(/*! ./props/numberBox */ 135));
  26412. var _numberKeyboard = _interopRequireDefault(__webpack_require__(/*! ./props/numberKeyboard */ 136));
  26413. var _overlay = _interopRequireDefault(__webpack_require__(/*! ./props/overlay */ 137));
  26414. var _parse = _interopRequireDefault(__webpack_require__(/*! ./props/parse */ 138));
  26415. var _picker = _interopRequireDefault(__webpack_require__(/*! ./props/picker */ 139));
  26416. var _popup = _interopRequireDefault(__webpack_require__(/*! ./props/popup */ 140));
  26417. var _radio = _interopRequireDefault(__webpack_require__(/*! ./props/radio */ 141));
  26418. var _radioGroup = _interopRequireDefault(__webpack_require__(/*! ./props/radioGroup */ 142));
  26419. var _rate = _interopRequireDefault(__webpack_require__(/*! ./props/rate */ 143));
  26420. var _readMore = _interopRequireDefault(__webpack_require__(/*! ./props/readMore */ 144));
  26421. var _row = _interopRequireDefault(__webpack_require__(/*! ./props/row */ 145));
  26422. var _rowNotice = _interopRequireDefault(__webpack_require__(/*! ./props/rowNotice */ 146));
  26423. var _scrollList = _interopRequireDefault(__webpack_require__(/*! ./props/scrollList */ 147));
  26424. var _search = _interopRequireDefault(__webpack_require__(/*! ./props/search */ 148));
  26425. var _section = _interopRequireDefault(__webpack_require__(/*! ./props/section */ 149));
  26426. var _skeleton = _interopRequireDefault(__webpack_require__(/*! ./props/skeleton */ 150));
  26427. var _slider = _interopRequireDefault(__webpack_require__(/*! ./props/slider */ 151));
  26428. var _statusBar = _interopRequireDefault(__webpack_require__(/*! ./props/statusBar */ 152));
  26429. var _steps = _interopRequireDefault(__webpack_require__(/*! ./props/steps */ 153));
  26430. var _stepsItem = _interopRequireDefault(__webpack_require__(/*! ./props/stepsItem */ 154));
  26431. var _sticky = _interopRequireDefault(__webpack_require__(/*! ./props/sticky */ 155));
  26432. var _subsection = _interopRequireDefault(__webpack_require__(/*! ./props/subsection */ 156));
  26433. var _swipeAction = _interopRequireDefault(__webpack_require__(/*! ./props/swipeAction */ 157));
  26434. var _swipeActionItem = _interopRequireDefault(__webpack_require__(/*! ./props/swipeActionItem */ 158));
  26435. var _swiper = _interopRequireDefault(__webpack_require__(/*! ./props/swiper */ 159));
  26436. var _swipterIndicator = _interopRequireDefault(__webpack_require__(/*! ./props/swipterIndicator */ 160));
  26437. var _switch2 = _interopRequireDefault(__webpack_require__(/*! ./props/switch */ 161));
  26438. var _tabbar = _interopRequireDefault(__webpack_require__(/*! ./props/tabbar */ 162));
  26439. var _tabbarItem = _interopRequireDefault(__webpack_require__(/*! ./props/tabbarItem */ 163));
  26440. var _tabs = _interopRequireDefault(__webpack_require__(/*! ./props/tabs */ 164));
  26441. var _tag = _interopRequireDefault(__webpack_require__(/*! ./props/tag */ 165));
  26442. var _text = _interopRequireDefault(__webpack_require__(/*! ./props/text */ 166));
  26443. var _textarea = _interopRequireDefault(__webpack_require__(/*! ./props/textarea */ 167));
  26444. var _toast = _interopRequireDefault(__webpack_require__(/*! ./props/toast */ 168));
  26445. var _toolbar = _interopRequireDefault(__webpack_require__(/*! ./props/toolbar */ 169));
  26446. var _tooltip = _interopRequireDefault(__webpack_require__(/*! ./props/tooltip */ 170));
  26447. var _transition = _interopRequireDefault(__webpack_require__(/*! ./props/transition */ 171));
  26448. var _upload = _interopRequireDefault(__webpack_require__(/*! ./props/upload */ 172));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function ownKeys(object, enumerableOnly) {var keys = Object.keys(object);if (Object.getOwnPropertySymbols) {var symbols = Object.getOwnPropertySymbols(object);if (enumerableOnly) symbols = symbols.filter(function (sym) {return Object.getOwnPropertyDescriptor(object, sym).enumerable;});keys.push.apply(keys, symbols);}return keys;}function _objectSpread(target) {for (var i = 1; i < arguments.length; i++) {var source = arguments[i] != null ? arguments[i] : {};if (i % 2) {ownKeys(Object(source), true).forEach(function (key) {_defineProperty(target, key, source[key]);});} else if (Object.getOwnPropertyDescriptors) {Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));} else {ownKeys(Object(source)).forEach(function (key) {Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));});}}return target;}function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;}var
  26449. color =
  26450. _config.default.color;var _default = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({},
  26451. _actionSheet.default),
  26452. _album.default),
  26453. _alert.default),
  26454. _avatar.default),
  26455. _avatarGroup.default),
  26456. _backtop.default),
  26457. _badge.default),
  26458. _button.default),
  26459. _calendar.default),
  26460. _carKeyboard.default),
  26461. _cell.default),
  26462. _cellGroup.default),
  26463. _checkbox.default),
  26464. _checkboxGroup.default),
  26465. _circleProgress.default),
  26466. _code.default),
  26467. _codeInput.default),
  26468. _col.default),
  26469. _collapse.default),
  26470. _collapseItem.default),
  26471. _columnNotice.default),
  26472. _countDown.default),
  26473. _countTo.default),
  26474. _datetimePicker.default),
  26475. _divider.default),
  26476. _empty.default),
  26477. _form.default),
  26478. _formItem.default),
  26479. _gap.default),
  26480. _grid.default),
  26481. _gridItem.default),
  26482. _icon.default),
  26483. _image.default),
  26484. _indexAnchor.default),
  26485. _indexList.default),
  26486. _input.default),
  26487. _keyboard.default),
  26488. _line.default),
  26489. _lineProgress.default),
  26490. _link.default),
  26491. _list.default),
  26492. _listItem.default),
  26493. _loadingIcon.default),
  26494. _loadingPage.default),
  26495. _loadmore.default),
  26496. _modal.default),
  26497. _navbar.default),
  26498. _noNetwork.default),
  26499. _noticeBar.default),
  26500. _notify.default),
  26501. _numberBox.default),
  26502. _numberKeyboard.default),
  26503. _overlay.default),
  26504. _parse.default),
  26505. _picker.default),
  26506. _popup.default),
  26507. _radio.default),
  26508. _radioGroup.default),
  26509. _rate.default),
  26510. _readMore.default),
  26511. _row.default),
  26512. _rowNotice.default),
  26513. _scrollList.default),
  26514. _search.default),
  26515. _section.default),
  26516. _skeleton.default),
  26517. _slider.default),
  26518. _statusBar.default),
  26519. _steps.default),
  26520. _stepsItem.default),
  26521. _sticky.default),
  26522. _subsection.default),
  26523. _swipeAction.default),
  26524. _swipeActionItem.default),
  26525. _swiper.default),
  26526. _swipterIndicator.default),
  26527. _switch2.default),
  26528. _tabbar.default),
  26529. _tabbarItem.default),
  26530. _tabs.default),
  26531. _tag.default),
  26532. _text.default),
  26533. _textarea.default),
  26534. _toast.default),
  26535. _toolbar.default),
  26536. _tooltip.default),
  26537. _transition.default),
  26538. _upload.default);exports.default = _default;
  26539. /***/ }),
  26540. /***/ 84:
  26541. /*!********************************************************************************************!*\
  26542. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/actionSheet.js ***!
  26543. \********************************************************************************************/
  26544. /*! no static exports found */
  26545. /***/ (function(module, exports, __webpack_require__) {
  26546. "use strict";
  26547. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  26548. * @Author : LQ
  26549. * @Description :
  26550. * @version : 1.0
  26551. * @Date : 2021-08-20 16:44:21
  26552. * @LastAuthor : LQ
  26553. * @lastTime : 2021-08-20 16:44:35
  26554. * @FilePath : /u-view2.0/uview-ui/libs/config/props/actionSheet.js
  26555. */var _default =
  26556. {
  26557. // action-sheet组件
  26558. actionSheet: {
  26559. show: false,
  26560. title: '',
  26561. description: '',
  26562. actions: function actions() {return [];},
  26563. index: '',
  26564. cancelText: '',
  26565. closeOnClickAction: true,
  26566. safeAreaInsetBottom: true,
  26567. openType: '',
  26568. closeOnClickOverlay: true,
  26569. round: 0 } };exports.default = _default;
  26570. /***/ }),
  26571. /***/ 85:
  26572. /*!**************************************************************************************!*\
  26573. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/album.js ***!
  26574. \**************************************************************************************/
  26575. /*! no static exports found */
  26576. /***/ (function(module, exports, __webpack_require__) {
  26577. "use strict";
  26578. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  26579. * @Author : LQ
  26580. * @Description :
  26581. * @version : 1.0
  26582. * @Date : 2021-08-20 16:44:21
  26583. * @LastAuthor : LQ
  26584. * @lastTime : 2021-08-20 16:47:24
  26585. * @FilePath : /u-view2.0/uview-ui/libs/config/props/album.js
  26586. */var _default =
  26587. {
  26588. // album 组件
  26589. album: {
  26590. urls: function urls() {return [];},
  26591. keyName: '',
  26592. singleSize: 180,
  26593. multipleSize: 70,
  26594. space: 6,
  26595. singleMode: 'scaleToFill',
  26596. multipleMode: 'aspectFill',
  26597. maxCount: 9,
  26598. previewFullImage: true,
  26599. rowCount: 3,
  26600. showMore: true } };exports.default = _default;
  26601. /***/ }),
  26602. /***/ 86:
  26603. /*!**************************************************************************************!*\
  26604. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/alert.js ***!
  26605. \**************************************************************************************/
  26606. /*! no static exports found */
  26607. /***/ (function(module, exports, __webpack_require__) {
  26608. "use strict";
  26609. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  26610. * @Author : LQ
  26611. * @Description :
  26612. * @version : 1.0
  26613. * @Date : 2021-08-20 16:44:21
  26614. * @LastAuthor : LQ
  26615. * @lastTime : 2021-08-20 16:48:53
  26616. * @FilePath : /u-view2.0/uview-ui/libs/config/props/alert.js
  26617. */var _default =
  26618. {
  26619. // alert警告组件
  26620. alert: {
  26621. title: '',
  26622. type: 'warning',
  26623. description: '',
  26624. closable: false,
  26625. showIcon: false,
  26626. effect: 'light',
  26627. center: false,
  26628. fontSize: 14 } };exports.default = _default;
  26629. /***/ }),
  26630. /***/ 87:
  26631. /*!***************************************************************************************!*\
  26632. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/avatar.js ***!
  26633. \***************************************************************************************/
  26634. /*! no static exports found */
  26635. /***/ (function(module, exports, __webpack_require__) {
  26636. "use strict";
  26637. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  26638. * @Author : LQ
  26639. * @Description :
  26640. * @version : 1.0
  26641. * @Date : 2021-08-20 16:44:21
  26642. * @LastAuthor : LQ
  26643. * @lastTime : 2021-08-20 16:49:22
  26644. * @FilePath : /u-view2.0/uview-ui/libs/config/props/avatar.js
  26645. */var _default =
  26646. {
  26647. // avatar 组件
  26648. avatar: {
  26649. src: '',
  26650. shape: 'circle',
  26651. size: 40,
  26652. mode: 'scaleToFill',
  26653. text: '',
  26654. bgColor: '#c0c4cc',
  26655. color: '#ffffff',
  26656. fontSize: 18,
  26657. icon: '',
  26658. mpAvatar: false,
  26659. randomBgColor: false,
  26660. defaultUrl: '',
  26661. colorIndex: '',
  26662. name: '' } };exports.default = _default;
  26663. /***/ }),
  26664. /***/ 873:
  26665. /*!********************************************************************************!*\
  26666. !*** D:/data/zhonghong/saber-weixin/pages/admin/components/ucharts/ucharts.js ***!
  26667. \********************************************************************************/
  26668. /*! no static exports found */
  26669. /***/ (function(module, exports, __webpack_require__) {
  26670. "use strict";
  26671. /* WEBPACK VAR INJECTION */(function(uni) {/*
  26672. * uCharts v1.9.3.20190922
  26673. * uni-app平台高性能跨全端图表,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)
  26674. * Copyright (c) 2019 QIUN秋云 https://www.ucharts.cn All rights reserved.
  26675. * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
  26676. *
  26677. * uCharts官方网站
  26678. * https://www.uCharts.cn
  26679. *
  26680. * 开源地址:
  26681. * https://gitee.com/uCharts/uCharts
  26682. *
  26683. * uni-app插件市场地址:
  26684. * http://ext.dcloud.net.cn/plugin?id=271
  26685. *
  26686. */
  26687. var config = {
  26688. yAxisWidth: 15,
  26689. yAxisSplit: 5,
  26690. xAxisHeight: 15,
  26691. xAxisLineHeight: 15,
  26692. legendHeight: 15,
  26693. yAxisTitleWidth: 15,
  26694. padding: [10, 10, 10, 10],
  26695. pixelRatio: 1,
  26696. rotate: false,
  26697. columePadding: 3,
  26698. fontSize: 13,
  26699. //dataPointShape: ['diamond', 'circle', 'triangle', 'rect'],
  26700. dataPointShape: ['circle', 'circle', 'circle', 'circle'],
  26701. colors: ['#1890ff', '#2fc25b', '#facc14', '#f04864', '#8543e0', '#90ed7d'],
  26702. pieChartLinePadding: 15,
  26703. pieChartTextPadding: 5,
  26704. xAxisTextPadding: 3,
  26705. titleColor: '#333333',
  26706. titleFontSize: 20,
  26707. subtitleColor: '#999999',
  26708. subtitleFontSize: 15,
  26709. toolTipPadding: 3,
  26710. toolTipBackground: '#000000',
  26711. toolTipOpacity: 0.7,
  26712. toolTipLineHeight: 20,
  26713. radarLabelTextMargin: 15,
  26714. gaugeLabelTextMargin: 15 };
  26715. var assign = function assign(target) {for (var _len2 = arguments.length, varArgs = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {varArgs[_key2 - 1] = arguments[_key2];}
  26716. if (target == null) {
  26717. throw new TypeError('Cannot convert undefined or null to object');
  26718. }
  26719. if (!varArgs || varArgs.length <= 0) {
  26720. return target;
  26721. }
  26722. // 深度合并对象
  26723. function deepAssign(obj1, obj2) {
  26724. for (var key in obj2) {
  26725. obj1[key] = obj1[key] && obj1[key].toString() === "[object Object]" ?
  26726. deepAssign(obj1[key], obj2[key]) : obj1[key] = obj2[key];
  26727. }
  26728. return obj1;
  26729. }
  26730. varArgs.forEach(function (val) {
  26731. target = deepAssign(target, val);
  26732. });
  26733. return target;
  26734. };
  26735. var util = {
  26736. toFixed: function toFixed(num, limit) {
  26737. limit = limit || 2;
  26738. if (this.isFloat(num)) {
  26739. num = num.toFixed(limit);
  26740. }
  26741. return num;
  26742. },
  26743. isFloat: function isFloat(num) {
  26744. return num % 1 !== 0;
  26745. },
  26746. approximatelyEqual: function approximatelyEqual(num1, num2) {
  26747. return Math.abs(num1 - num2) < 1e-10;
  26748. },
  26749. isSameSign: function isSameSign(num1, num2) {
  26750. return Math.abs(num1) === num1 && Math.abs(num2) === num2 || Math.abs(num1) !== num1 && Math.abs(num2) !== num2;
  26751. },
  26752. isSameXCoordinateArea: function isSameXCoordinateArea(p1, p2) {
  26753. return this.isSameSign(p1.x, p2.x);
  26754. },
  26755. isCollision: function isCollision(obj1, obj2) {
  26756. obj1.end = {};
  26757. obj1.end.x = obj1.start.x + obj1.width;
  26758. obj1.end.y = obj1.start.y - obj1.height;
  26759. obj2.end = {};
  26760. obj2.end.x = obj2.start.x + obj2.width;
  26761. obj2.end.y = obj2.start.y - obj2.height;
  26762. var flag = obj2.start.x > obj1.end.x || obj2.end.x < obj1.start.x || obj2.end.y > obj1.start.y || obj2.start.y < obj1.end.y;
  26763. return !flag;
  26764. } };
  26765. //兼容H5点击事件
  26766. function getH5Offset(e) {
  26767. e.mp = {
  26768. changedTouches: [] };
  26769. e.mp.changedTouches.push({
  26770. x: e.offsetX,
  26771. y: e.offsetY });
  26772. return e;
  26773. }
  26774. // hex 转 rgba
  26775. function hexToRgb(hexValue, opc) {
  26776. var rgx = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
  26777. var hex = hexValue.replace(rgx, function (m, r, g, b) {
  26778. return r + r + g + g + b + b;
  26779. });
  26780. var rgb = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
  26781. var r = parseInt(rgb[1], 16);
  26782. var g = parseInt(rgb[2], 16);
  26783. var b = parseInt(rgb[3], 16);
  26784. return 'rgba(' + r + ',' + g + ',' + b + ',' + opc + ')';
  26785. }
  26786. function findRange(num, type, limit) {
  26787. if (isNaN(num)) {
  26788. throw new Error('[uCharts] unvalid series data!');
  26789. }
  26790. limit = limit || 10;
  26791. type = type ? type : 'upper';
  26792. var multiple = 1;
  26793. while (limit < 1) {
  26794. limit *= 10;
  26795. multiple *= 10;
  26796. }
  26797. if (type === 'upper') {
  26798. num = Math.ceil(num * multiple);
  26799. } else {
  26800. num = Math.floor(num * multiple);
  26801. }
  26802. while (num % limit !== 0) {
  26803. if (type === 'upper') {
  26804. num++;
  26805. } else {
  26806. num--;
  26807. }
  26808. }
  26809. return num / multiple;
  26810. }
  26811. function calCandleMA(dayArr, nameArr, colorArr, kdata) {
  26812. var seriesTemp = [];
  26813. for (var k = 0; k < dayArr.length; k++) {
  26814. var seriesItem = {
  26815. data: [],
  26816. name: nameArr[k],
  26817. color: colorArr[k] };
  26818. for (var i = 0, len = kdata.length; i < len; i++) {
  26819. if (i < dayArr[k]) {
  26820. seriesItem.data.push(null);
  26821. continue;
  26822. }
  26823. var sum = 0;
  26824. for (var j = 0; j < dayArr[k]; j++) {
  26825. sum += kdata[i - j][1];
  26826. }
  26827. seriesItem.data.push(+(sum / dayArr[k]).toFixed(3));
  26828. }
  26829. seriesTemp.push(seriesItem);
  26830. }
  26831. return seriesTemp;
  26832. }
  26833. function calValidDistance(self, distance, chartData, config, opts) {
  26834. var dataChartAreaWidth = opts.width - opts.area[1] - opts.area[3];
  26835. var dataChartWidth = chartData.eachSpacing * (opts.chartData.xAxisData.xAxisPoints.length - 1);
  26836. var validDistance = distance;
  26837. if (distance >= 0) {
  26838. validDistance = 0;
  26839. self.event.trigger('scrollLeft');
  26840. } else if (Math.abs(distance) >= dataChartWidth - dataChartAreaWidth) {
  26841. validDistance = dataChartAreaWidth - dataChartWidth;
  26842. self.event.trigger('scrollRight');
  26843. }
  26844. return validDistance;
  26845. }
  26846. function isInAngleRange(angle, startAngle, endAngle) {
  26847. function adjust(angle) {
  26848. while (angle < 0) {
  26849. angle += 2 * Math.PI;
  26850. }
  26851. while (angle > 2 * Math.PI) {
  26852. angle -= 2 * Math.PI;
  26853. }
  26854. return angle;
  26855. }
  26856. angle = adjust(angle);
  26857. startAngle = adjust(startAngle);
  26858. endAngle = adjust(endAngle);
  26859. if (startAngle > endAngle) {
  26860. endAngle += 2 * Math.PI;
  26861. if (angle < startAngle) {
  26862. angle += 2 * Math.PI;
  26863. }
  26864. }
  26865. return angle >= startAngle && angle <= endAngle;
  26866. }
  26867. function calRotateTranslate(x, y, h) {
  26868. var xv = x;
  26869. var yv = h - y;
  26870. var transX = xv + (h - yv - xv) / Math.sqrt(2);
  26871. transX *= -1;
  26872. var transY = (h - yv) * (Math.sqrt(2) - 1) - (h - yv - xv) / Math.sqrt(2);
  26873. return {
  26874. transX: transX,
  26875. transY: transY };
  26876. }
  26877. function createCurveControlPoints(points, i) {
  26878. function isNotMiddlePoint(points, i) {
  26879. if (points[i - 1] && points[i + 1]) {
  26880. return points[i].y >= Math.max(points[i - 1].y, points[i + 1].y) || points[i].y <= Math.min(points[i - 1].y, points[i + 1].y);
  26881. } else {
  26882. return false;
  26883. }
  26884. }
  26885. function isNotMiddlePointX(points, i) {
  26886. if (points[i - 1] && points[i + 1]) {
  26887. return points[i].x >= Math.max(points[i - 1].x, points[i + 1].x) || points[i].x <= Math.min(points[i - 1].x, points[i + 1].x);
  26888. } else {
  26889. return false;
  26890. }
  26891. }
  26892. var a = 0.2;
  26893. var b = 0.2;
  26894. var pAx = null;
  26895. var pAy = null;
  26896. var pBx = null;
  26897. var pBy = null;
  26898. if (i < 1) {
  26899. pAx = points[0].x + (points[1].x - points[0].x) * a;
  26900. pAy = points[0].y + (points[1].y - points[0].y) * a;
  26901. } else {
  26902. pAx = points[i].x + (points[i + 1].x - points[i - 1].x) * a;
  26903. pAy = points[i].y + (points[i + 1].y - points[i - 1].y) * a;
  26904. }
  26905. if (i > points.length - 3) {
  26906. var last = points.length - 1;
  26907. pBx = points[last].x - (points[last].x - points[last - 1].x) * b;
  26908. pBy = points[last].y - (points[last].y - points[last - 1].y) * b;
  26909. } else {
  26910. pBx = points[i + 1].x - (points[i + 2].x - points[i].x) * b;
  26911. pBy = points[i + 1].y - (points[i + 2].y - points[i].y) * b;
  26912. }
  26913. if (isNotMiddlePoint(points, i + 1)) {
  26914. pBy = points[i + 1].y;
  26915. }
  26916. if (isNotMiddlePoint(points, i)) {
  26917. pAy = points[i].y;
  26918. }
  26919. if (isNotMiddlePointX(points, i + 1)) {
  26920. pBx = points[i + 1].x;
  26921. }
  26922. if (isNotMiddlePointX(points, i)) {
  26923. pAx = points[i].x;
  26924. }
  26925. if (pAy >= Math.max(points[i].y, points[i + 1].y) || pAy <= Math.min(points[i].y, points[i + 1].y)) {
  26926. pAy = points[i].y;
  26927. }
  26928. if (pBy >= Math.max(points[i].y, points[i + 1].y) || pBy <= Math.min(points[i].y, points[i + 1].y)) {
  26929. pBy = points[i + 1].y;
  26930. }
  26931. if (pAx >= Math.max(points[i].x, points[i + 1].x) || pAx <= Math.min(points[i].x, points[i + 1].x)) {
  26932. pAx = points[i].x;
  26933. }
  26934. if (pBx >= Math.max(points[i].x, points[i + 1].x) || pBx <= Math.min(points[i].x, points[i + 1].x)) {
  26935. pBx = points[i + 1].x;
  26936. }
  26937. return {
  26938. ctrA: {
  26939. x: pAx,
  26940. y: pAy },
  26941. ctrB: {
  26942. x: pBx,
  26943. y: pBy } };
  26944. }
  26945. function convertCoordinateOrigin(x, y, center) {
  26946. return {
  26947. x: center.x + x,
  26948. y: center.y - y };
  26949. }
  26950. function avoidCollision(obj, target) {
  26951. if (target) {
  26952. // is collision test
  26953. while (util.isCollision(obj, target)) {
  26954. if (obj.start.x > 0) {
  26955. obj.start.y--;
  26956. } else if (obj.start.x < 0) {
  26957. obj.start.y++;
  26958. } else {
  26959. if (obj.start.y > 0) {
  26960. obj.start.y++;
  26961. } else {
  26962. obj.start.y--;
  26963. }
  26964. }
  26965. }
  26966. }
  26967. return obj;
  26968. }
  26969. function fillSeries(series, opts, config) {
  26970. var index = 0;
  26971. return series.map(function (item) {
  26972. if (!item.color) {
  26973. item.color = config.colors[index];
  26974. index = (index + 1) % config.colors.length;
  26975. }
  26976. if (!item.index) {
  26977. item.index = 0;
  26978. }
  26979. if (!item.type) {
  26980. item.type = opts.type;
  26981. }
  26982. if (typeof item.show == "undefined") {
  26983. item.show = true;
  26984. }
  26985. if (!item.type) {
  26986. item.type = opts.type;
  26987. }
  26988. if (!item.pointShape) {
  26989. item.pointShape = "circle";
  26990. }
  26991. if (!item.legendShape) {
  26992. switch (item.type) {
  26993. case 'line':
  26994. item.legendShape = "line";
  26995. break;
  26996. case 'column':
  26997. item.legendShape = "rect";
  26998. break;
  26999. case 'area':
  27000. item.legendShape = "triangle";
  27001. break;
  27002. default:
  27003. item.legendShape = "circle";}
  27004. }
  27005. return item;
  27006. });
  27007. }
  27008. function getDataRange(minData, maxData) {
  27009. var limit = 0;
  27010. var range = maxData - minData;
  27011. if (range >= 10000) {
  27012. limit = 1000;
  27013. } else if (range >= 1000) {
  27014. limit = 100;
  27015. } else if (range >= 100) {
  27016. limit = 10;
  27017. } else if (range >= 10) {
  27018. limit = 5;
  27019. } else if (range >= 1) {
  27020. limit = 1;
  27021. } else if (range >= 0.1) {
  27022. limit = 0.1;
  27023. } else if (range >= 0.01) {
  27024. limit = 0.01;
  27025. } else if (range >= 0.001) {
  27026. limit = 0.001;
  27027. } else if (range >= 0.0001) {
  27028. limit = 0.0001;
  27029. } else if (range >= 0.00001) {
  27030. limit = 0.00001;
  27031. } else {
  27032. limit = 0.000001;
  27033. }
  27034. return {
  27035. minRange: findRange(minData, 'lower', limit),
  27036. maxRange: findRange(maxData, 'upper', limit) };
  27037. }
  27038. function measureText(text) {
  27039. var fontSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : config.fontSize;
  27040. text = String(text);
  27041. var text = text.split('');
  27042. var width = 0;
  27043. for (var i = 0; i < text.length; i++) {
  27044. var item = text[i];
  27045. if (/[a-zA-Z]/.test(item)) {
  27046. width += 7;
  27047. } else if (/[0-9]/.test(item)) {
  27048. width += 5.5;
  27049. } else if (/\./.test(item)) {
  27050. width += 2.7;
  27051. } else if (/-/.test(item)) {
  27052. width += 3.25;
  27053. } else if (/[\u4e00-\u9fa5]/.test(item)) {
  27054. width += 10;
  27055. } else if (/\(|\)/.test(item)) {
  27056. width += 3.73;
  27057. } else if (/\s/.test(item)) {
  27058. width += 2.5;
  27059. } else if (/%/.test(item)) {
  27060. width += 8;
  27061. } else {
  27062. width += 10;
  27063. }
  27064. }
  27065. return width * fontSize / 10;
  27066. }
  27067. function dataCombine(series) {
  27068. return series.reduce(function (a, b) {
  27069. return (a.data ? a.data : a).concat(b.data);
  27070. }, []);
  27071. }
  27072. function dataCombineStack(series, len) {
  27073. var sum = new Array(len);
  27074. for (var j = 0; j < sum.length; j++) {
  27075. sum[j] = 0;
  27076. }
  27077. for (var i = 0; i < series.length; i++) {
  27078. for (var j = 0; j < sum.length; j++) {
  27079. sum[j] += series[i].data[j];
  27080. }
  27081. }
  27082. return series.reduce(function (a, b) {
  27083. return (a.data ? a.data : a).concat(b.data).concat(sum);
  27084. }, []);
  27085. }
  27086. function getTouches(touches, opts, e) {
  27087. var x, y;
  27088. if (touches.clientX) {
  27089. if (opts.rotate) {
  27090. y = opts.height - touches.clientX * opts.pixelRatio;
  27091. x = (touches.pageY - e.currentTarget.offsetTop - opts.height / opts.pixelRatio / 2 * (opts.pixelRatio - 1)) *
  27092. opts.pixelRatio;
  27093. } else {
  27094. x = touches.clientX * opts.pixelRatio;
  27095. y = (touches.pageY - e.currentTarget.offsetTop - opts.height / opts.pixelRatio / 2 * (opts.pixelRatio - 1)) *
  27096. opts.pixelRatio;
  27097. }
  27098. } else {
  27099. if (opts.rotate) {
  27100. y = opts.height - touches.x * opts.pixelRatio;
  27101. x = touches.y * opts.pixelRatio;
  27102. } else {
  27103. x = touches.x * opts.pixelRatio;
  27104. y = touches.y * opts.pixelRatio;
  27105. }
  27106. }
  27107. return {
  27108. x: x,
  27109. y: y };
  27110. }
  27111. function getSeriesDataItem(series, index) {
  27112. var data = [];
  27113. for (var i = 0; i < series.length; i++) {
  27114. var item = series[i];
  27115. if (item.data[index] !== null && typeof item.data[index] !== 'undefined' && item.show) {
  27116. var seriesItem = {};
  27117. seriesItem.color = item.color;
  27118. seriesItem.type = item.type;
  27119. seriesItem.style = item.style;
  27120. seriesItem.pointShape = item.pointShape;
  27121. seriesItem.disableLegend = item.disableLegend;
  27122. seriesItem.name = item.name;
  27123. seriesItem.show = item.show;
  27124. seriesItem.data = item.format ? item.format(item.data[index]) : item.data[index];
  27125. data.push(seriesItem);
  27126. }
  27127. }
  27128. return data;
  27129. }
  27130. function getMaxTextListLength(list) {
  27131. var lengthList = list.map(function (item) {
  27132. return measureText(item);
  27133. });
  27134. return Math.max.apply(null, lengthList);
  27135. }
  27136. function getRadarCoordinateSeries(length) {
  27137. var eachAngle = 2 * Math.PI / length;
  27138. var CoordinateSeries = [];
  27139. for (var i = 0; i < length; i++) {
  27140. CoordinateSeries.push(eachAngle * i);
  27141. }
  27142. return CoordinateSeries.map(function (item) {
  27143. return -1 * item + Math.PI / 2;
  27144. });
  27145. }
  27146. function getToolTipData(seriesData, calPoints, index, categories) {
  27147. var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
  27148. var textList = seriesData.map(function (item) {
  27149. var titleText = [];
  27150. if (categories) {
  27151. titleText = categories;
  27152. } else {
  27153. titleText = item.data;
  27154. }
  27155. return {
  27156. text: option.format ? option.format(item, titleText[index]) : item.name + ': ' + item.data,
  27157. color: item.color };
  27158. });
  27159. var validCalPoints = [];
  27160. var offset = {
  27161. x: 0,
  27162. y: 0 };
  27163. for (var i = 0; i < calPoints.length; i++) {
  27164. var points = calPoints[i];
  27165. if (typeof points[index] !== 'undefined' && points[index] !== null) {
  27166. validCalPoints.push(points[index]);
  27167. }
  27168. }
  27169. for (var _i = 0; _i < validCalPoints.length; _i++) {
  27170. var item = validCalPoints[_i];
  27171. offset.x = Math.round(item.x);
  27172. offset.y += item.y;
  27173. }
  27174. offset.y /= validCalPoints.length;
  27175. return {
  27176. textList: textList,
  27177. offset: offset };
  27178. }
  27179. function getMixToolTipData(seriesData, calPoints, index, categories) {
  27180. var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
  27181. var textList = seriesData.map(function (item) {
  27182. return {
  27183. text: option.format ? option.format(item, categories[index]) : item.name + ': ' + item.data,
  27184. color: item.color,
  27185. disableLegend: item.disableLegend ? true : false };
  27186. });
  27187. textList = textList.filter(function (item) {
  27188. if (item.disableLegend !== true) {
  27189. return item;
  27190. }
  27191. });
  27192. var validCalPoints = [];
  27193. var offset = {
  27194. x: 0,
  27195. y: 0 };
  27196. for (var i = 0; i < calPoints.length; i++) {
  27197. var points = calPoints[i];
  27198. if (typeof points[index] !== 'undefined' && points[index] !== null) {
  27199. validCalPoints.push(points[index]);
  27200. }
  27201. }
  27202. for (var _i2 = 0; _i2 < validCalPoints.length; _i2++) {
  27203. var item = validCalPoints[_i2];
  27204. offset.x = Math.round(item.x);
  27205. offset.y += item.y;
  27206. }
  27207. offset.y /= validCalPoints.length;
  27208. return {
  27209. textList: textList,
  27210. offset: offset };
  27211. }
  27212. function getCandleToolTipData(series, seriesData, calPoints, index, categories, extra) {
  27213. var option = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};
  27214. var upColor = extra.color.upFill;
  27215. var downColor = extra.color.downFill;
  27216. //颜色顺序为开盘,收盘,最低,最高
  27217. var color = [upColor, upColor, downColor, upColor];
  27218. var textList = [];
  27219. var text0 = {
  27220. text: categories[index],
  27221. color: null };
  27222. textList.push(text0);
  27223. seriesData.map(function (item) {
  27224. if (index == 0 && item.data[1] - item.data[0] < 0) {
  27225. color[1] = downColor;
  27226. } else {
  27227. if (item.data[0] < series[index - 1][1]) {
  27228. color[0] = downColor;
  27229. }
  27230. if (item.data[1] < item.data[0]) {
  27231. color[1] = downColor;
  27232. }
  27233. if (item.data[2] > series[index - 1][1]) {
  27234. color[2] = upColor;
  27235. }
  27236. if (item.data[3] < series[index - 1][1]) {
  27237. color[3] = downColor;
  27238. }
  27239. }
  27240. var text1 = {
  27241. text: '开盘:' + item.data[0],
  27242. color: color[0] };
  27243. var text2 = {
  27244. text: '收盘:' + item.data[1],
  27245. color: color[1] };
  27246. var text3 = {
  27247. text: '最低:' + item.data[2],
  27248. color: color[2] };
  27249. var text4 = {
  27250. text: '最高:' + item.data[3],
  27251. color: color[3] };
  27252. textList.push(text1, text2, text3, text4);
  27253. });
  27254. var validCalPoints = [];
  27255. var offset = {
  27256. x: 0,
  27257. y: 0 };
  27258. for (var i = 0; i < calPoints.length; i++) {
  27259. var points = calPoints[i];
  27260. if (typeof points[index] !== 'undefined' && points[index] !== null) {
  27261. validCalPoints.push(points[index]);
  27262. }
  27263. }
  27264. offset.x = Math.round(validCalPoints[0][0].x);
  27265. return {
  27266. textList: textList,
  27267. offset: offset };
  27268. }
  27269. function filterSeries(series) {
  27270. var tempSeries = [];
  27271. for (var i = 0; i < series.length; i++) {
  27272. if (series[i].show == true) {
  27273. tempSeries.push(series[i]);
  27274. }
  27275. }
  27276. return tempSeries;
  27277. }
  27278. function findCurrentIndex(currentPoints, calPoints, opts, config) {
  27279. var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
  27280. var currentIndex = -1;
  27281. var spacing = opts.chartData.eachSpacing / 2;
  27282. var xAxisPoints = [];
  27283. if (calPoints.length > 0) {
  27284. if (opts.type == 'candle') {
  27285. for (var i = 0; i < calPoints[0].length; i++) {
  27286. xAxisPoints.push(calPoints[0][i][0].x);
  27287. }
  27288. } else {
  27289. for (var _i3 = 0; _i3 < calPoints[0].length; _i3++) {
  27290. xAxisPoints.push(calPoints[0][_i3].x);
  27291. }
  27292. }
  27293. if ((opts.type == 'line' || opts.type == 'area') && opts.xAxis.boundaryGap == 'justify') {
  27294. spacing = opts.chartData.eachSpacing / 2;
  27295. }
  27296. if (!opts.categories) {
  27297. spacing = 0;
  27298. }
  27299. if (isInExactChartArea(currentPoints, opts, config)) {
  27300. xAxisPoints.forEach(function (item, index) {
  27301. if (currentPoints.x + offset + spacing > item) {
  27302. currentIndex = index;
  27303. }
  27304. });
  27305. }
  27306. }
  27307. return currentIndex;
  27308. }
  27309. function findLegendIndex(currentPoints, legendData, opts) {
  27310. var currentIndex = -1;
  27311. if (isInExactLegendArea(currentPoints, legendData.area)) {
  27312. var points = legendData.points;
  27313. var index = -1;
  27314. for (var i = 0, len = points.length; i < len; i++) {
  27315. var item = points[i];
  27316. for (var j = 0; j < item.length; j++) {
  27317. index += 1;
  27318. var area = item[j]['area'];
  27319. if (currentPoints.x > area[0] && currentPoints.x < area[2] && currentPoints.y > area[1] && currentPoints.y < area[3]) {
  27320. currentIndex = index;
  27321. break;
  27322. }
  27323. }
  27324. }
  27325. return currentIndex;
  27326. }
  27327. return currentIndex;
  27328. }
  27329. function isInExactLegendArea(currentPoints, area) {
  27330. return currentPoints.x > area.start.x && currentPoints.x < area.end.x && currentPoints.y > area.start.y &&
  27331. currentPoints.y < area.end.y;
  27332. }
  27333. function isInExactChartArea(currentPoints, opts, config) {
  27334. return currentPoints.x <= opts.width - opts.area[1] + 10 && currentPoints.x >= opts.area[3] - 10 && currentPoints.y >= opts.area[0] && currentPoints.y <= opts.height - opts.area[2];
  27335. }
  27336. function findRadarChartCurrentIndex(currentPoints, radarData, count) {
  27337. var eachAngleArea = 2 * Math.PI / count;
  27338. var currentIndex = -1;
  27339. if (isInExactPieChartArea(currentPoints, radarData.center, radarData.radius)) {
  27340. var fixAngle = function fixAngle(angle) {
  27341. if (angle < 0) {
  27342. angle += 2 * Math.PI;
  27343. }
  27344. if (angle > 2 * Math.PI) {
  27345. angle -= 2 * Math.PI;
  27346. }
  27347. return angle;
  27348. };
  27349. var angle = Math.atan2(radarData.center.y - currentPoints.y, currentPoints.x - radarData.center.x);
  27350. angle = -1 * angle;
  27351. if (angle < 0) {
  27352. angle += 2 * Math.PI;
  27353. }
  27354. var angleList = radarData.angleList.map(function (item) {
  27355. item = fixAngle(-1 * item);
  27356. return item;
  27357. });
  27358. angleList.forEach(function (item, index) {
  27359. var rangeStart = fixAngle(item - eachAngleArea / 2);
  27360. var rangeEnd = fixAngle(item + eachAngleArea / 2);
  27361. if (rangeEnd < rangeStart) {
  27362. rangeEnd += 2 * Math.PI;
  27363. }
  27364. if (angle >= rangeStart && angle <= rangeEnd || angle + 2 * Math.PI >= rangeStart && angle + 2 * Math.PI <=
  27365. rangeEnd) {
  27366. currentIndex = index;
  27367. }
  27368. });
  27369. }
  27370. return currentIndex;
  27371. }
  27372. function findFunnelChartCurrentIndex(currentPoints, funnelData) {
  27373. var currentIndex = -1;
  27374. for (var i = 0, len = funnelData.series.length; i < len; i++) {
  27375. var item = funnelData.series[i];
  27376. if (currentPoints.x > item.funnelArea[0] && currentPoints.x < item.funnelArea[2] && currentPoints.y > item.funnelArea[1] && currentPoints.y < item.funnelArea[3]) {
  27377. currentIndex = i;
  27378. break;
  27379. }
  27380. }
  27381. return currentIndex;
  27382. }
  27383. function findWordChartCurrentIndex(currentPoints, wordData) {
  27384. var currentIndex = -1;
  27385. for (var i = 0, len = wordData.length; i < len; i++) {
  27386. var item = wordData[i];
  27387. if (currentPoints.x > item.area[0] && currentPoints.x < item.area[2] && currentPoints.y > item.area[1] && currentPoints.y < item.area[3]) {
  27388. currentIndex = i;
  27389. break;
  27390. }
  27391. }
  27392. return currentIndex;
  27393. }
  27394. function findMapChartCurrentIndex(currentPoints, opts) {
  27395. var currentIndex = -1;
  27396. var cData = opts.chartData.mapData;
  27397. var data = opts.series;
  27398. var tmp = pointToCoordinate(currentPoints.y, currentPoints.x, cData.bounds, cData.scale, cData.xoffset, cData.yoffset);
  27399. var poi = [tmp.x, tmp.y];
  27400. for (var i = 0, len = data.length; i < len; i++) {
  27401. var item = data[i].geometry.coordinates;
  27402. if (isPoiWithinPoly(poi, item)) {
  27403. currentIndex = i;
  27404. break;
  27405. }
  27406. }
  27407. return currentIndex;
  27408. }
  27409. function findPieChartCurrentIndex(currentPoints, pieData) {
  27410. var currentIndex = -1;
  27411. if (isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) {
  27412. var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x);
  27413. angle = -angle;
  27414. for (var i = 0, len = pieData.series.length; i < len; i++) {
  27415. var item = pieData.series[i];
  27416. if (isInAngleRange(angle, item._start_, item._start_ + item._proportion_ * 2 * Math.PI)) {
  27417. currentIndex = i;
  27418. break;
  27419. }
  27420. }
  27421. }
  27422. return currentIndex;
  27423. }
  27424. function isInExactPieChartArea(currentPoints, center, radius) {
  27425. return Math.pow(currentPoints.x - center.x, 2) + Math.pow(currentPoints.y - center.y, 2) <= Math.pow(radius, 2);
  27426. }
  27427. function splitPoints(points) {
  27428. var newPoints = [];
  27429. var items = [];
  27430. points.forEach(function (item, index) {
  27431. if (item !== null) {
  27432. items.push(item);
  27433. } else {
  27434. if (items.length) {
  27435. newPoints.push(items);
  27436. }
  27437. items = [];
  27438. }
  27439. });
  27440. if (items.length) {
  27441. newPoints.push(items);
  27442. }
  27443. return newPoints;
  27444. }
  27445. function calLegendData(series, opts, config, chartData) {
  27446. var legendData = {
  27447. area: {
  27448. start: {
  27449. x: 0,
  27450. y: 0 },
  27451. end: {
  27452. x: 0,
  27453. y: 0 },
  27454. width: 0,
  27455. height: 0,
  27456. wholeWidth: 0,
  27457. wholeHeight: 0 },
  27458. points: [],
  27459. widthArr: [],
  27460. heightArr: [] };
  27461. if (opts.legend.show === false) {
  27462. chartData.legendData = legendData;
  27463. return legendData;
  27464. }
  27465. var padding = opts.legend.padding;
  27466. var margin = opts.legend.margin;
  27467. var fontSize = opts.legend.fontSize;
  27468. var shapeWidth = 15 * opts.pixelRatio;
  27469. var shapeRight = 5 * opts.pixelRatio;
  27470. var lineHeight = Math.max(opts.legend.lineHeight * opts.pixelRatio, fontSize);
  27471. if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {
  27472. var legendList = [];
  27473. var widthCount = 0;
  27474. var widthCountArr = [];
  27475. var currentRow = [];
  27476. for (var i = 0; i < series.length; i++) {
  27477. var item = series[i];
  27478. var itemWidth = shapeWidth + shapeRight + measureText(item.name || 'undefined', fontSize) + opts.legend.itemGap;
  27479. if (widthCount + itemWidth > opts.width - opts.padding[1] - opts.padding[3]) {
  27480. legendList.push(currentRow);
  27481. widthCountArr.push(widthCount - opts.legend.itemGap);
  27482. widthCount = itemWidth;
  27483. currentRow = [item];
  27484. } else {
  27485. widthCount += itemWidth;
  27486. currentRow.push(item);
  27487. }
  27488. }
  27489. if (currentRow.length) {
  27490. legendList.push(currentRow);
  27491. widthCountArr.push(widthCount - opts.legend.itemGap);
  27492. legendData.widthArr = widthCountArr;
  27493. var legendWidth = Math.max.apply(null, widthCountArr);
  27494. switch (opts.legend.float) {
  27495. case 'left':
  27496. legendData.area.start.x = opts.padding[3];
  27497. legendData.area.end.x = opts.padding[3] + 2 * padding;
  27498. break;
  27499. case 'right':
  27500. legendData.area.start.x = opts.width - opts.padding[1] - legendWidth - 2 * padding;
  27501. legendData.area.end.x = opts.width - opts.padding[1];
  27502. break;
  27503. default:
  27504. legendData.area.start.x = (opts.width - legendWidth) / 2 - padding;
  27505. legendData.area.end.x = (opts.width + legendWidth) / 2 + padding;}
  27506. legendData.area.width = legendWidth + 2 * padding;
  27507. legendData.area.wholeWidth = legendWidth + 2 * padding;
  27508. legendData.area.height = legendList.length * lineHeight + 2 * padding;
  27509. legendData.area.wholeHeight = legendList.length * lineHeight + 2 * padding + 2 * margin;
  27510. legendData.points = legendList;
  27511. }
  27512. } else {
  27513. var len = series.length;
  27514. var maxHeight = opts.height - opts.padding[0] - opts.padding[2] - 2 * margin - 2 * padding;
  27515. var maxLength = Math.min(Math.floor(maxHeight / lineHeight), len);
  27516. legendData.area.height = maxLength * lineHeight + padding * 2;
  27517. legendData.area.wholeHeight = maxLength * lineHeight + padding * 2;
  27518. switch (opts.legend.float) {
  27519. case 'top':
  27520. legendData.area.start.y = opts.padding[0] + margin;
  27521. legendData.area.end.y = opts.padding[0] + margin + legendData.area.height;
  27522. break;
  27523. case 'bottom':
  27524. legendData.area.start.y = opts.height - opts.padding[2] - margin - legendData.area.height;
  27525. legendData.area.end.y = opts.height - opts.padding[2] - margin;
  27526. break;
  27527. default:
  27528. legendData.area.start.y = (opts.height - legendData.area.height) / 2;
  27529. legendData.area.end.y = (opts.height + legendData.area.height) / 2;}
  27530. var lineNum = len % maxLength === 0 ? len / maxLength : Math.floor(len / maxLength + 1);
  27531. var _currentRow = [];
  27532. for (var _i4 = 0; _i4 < lineNum; _i4++) {
  27533. var temp = series.slice(_i4 * maxLength, _i4 * maxLength + maxLength);
  27534. _currentRow.push(temp);
  27535. }
  27536. legendData.points = _currentRow;
  27537. if (_currentRow.length) {
  27538. for (var _i5 = 0; _i5 < _currentRow.length; _i5++) {
  27539. var _item = _currentRow[_i5];
  27540. var maxWidth = 0;
  27541. for (var j = 0; j < _item.length; j++) {
  27542. var _itemWidth = shapeWidth + shapeRight + measureText(_item[j].name || 'undefined', fontSize) + opts.legend.itemGap;
  27543. if (_itemWidth > maxWidth) {
  27544. maxWidth = _itemWidth;
  27545. }
  27546. }
  27547. legendData.widthArr.push(maxWidth);
  27548. legendData.heightArr.push(_item.length * lineHeight + padding * 2);
  27549. }
  27550. var _legendWidth = 0;
  27551. for (var _i6 = 0; _i6 < legendData.widthArr.length; _i6++) {
  27552. _legendWidth += legendData.widthArr[_i6];
  27553. }
  27554. legendData.area.width = _legendWidth - opts.legend.itemGap + 2 * padding;
  27555. legendData.area.wholeWidth = legendData.area.width + padding;
  27556. }
  27557. }
  27558. switch (opts.legend.position) {
  27559. case 'top':
  27560. legendData.area.start.y = opts.padding[0] + margin;
  27561. legendData.area.end.y = opts.padding[0] + margin + legendData.area.height;
  27562. break;
  27563. case 'bottom':
  27564. legendData.area.start.y = opts.height - opts.padding[2] - legendData.area.height - margin;
  27565. legendData.area.end.y = opts.height - opts.padding[2] - margin;
  27566. break;
  27567. case 'left':
  27568. legendData.area.start.x = opts.padding[3];
  27569. legendData.area.end.x = opts.padding[3] + legendData.area.width;
  27570. break;
  27571. case 'right':
  27572. legendData.area.start.x = opts.width - opts.padding[1] - legendData.area.width;
  27573. legendData.area.end.x = opts.width - opts.padding[1];
  27574. break;}
  27575. chartData.legendData = legendData;
  27576. return legendData;
  27577. }
  27578. function calCategoriesData(categories, opts, config, eachSpacing) {
  27579. var result = {
  27580. angle: 0,
  27581. xAxisHeight: config.xAxisHeight };
  27582. var categoriesTextLenth = categories.map(function (item) {
  27583. return measureText(item, opts.xAxis.fontSize || config.fontSize);
  27584. });
  27585. var maxTextLength = Math.max.apply(this, categoriesTextLenth);
  27586. if (opts.xAxis.rotateLabel == true && maxTextLength + 2 * config.xAxisTextPadding > eachSpacing) {
  27587. result.angle = 45 * Math.PI / 180;
  27588. result.xAxisHeight = 2 * config.xAxisTextPadding + maxTextLength * Math.sin(result.angle);
  27589. }
  27590. return result;
  27591. }
  27592. function getXAxisTextList(series, opts, config) {
  27593. var index = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1;
  27594. var data = dataCombine(series);
  27595. var sorted = [];
  27596. // remove null from data
  27597. data = data.filter(function (item) {
  27598. //return item !== null;
  27599. if (typeof item === 'object' && item !== null) {
  27600. if (item.constructor == Array) {
  27601. return item !== null;
  27602. } else {
  27603. return item.value !== null;
  27604. }
  27605. } else {
  27606. return item !== null;
  27607. }
  27608. });
  27609. data.map(function (item) {
  27610. if (typeof item === 'object') {
  27611. if (item.constructor == Array) {
  27612. if (opts.type == 'candle') {
  27613. item.map(function (subitem) {
  27614. sorted.push(subitem);
  27615. });
  27616. } else {
  27617. sorted.push(item[0]);
  27618. }
  27619. } else {
  27620. sorted.push(item.value);
  27621. }
  27622. } else {
  27623. sorted.push(item);
  27624. }
  27625. });
  27626. var minData = 0;
  27627. var maxData = 0;
  27628. if (sorted.length > 0) {
  27629. minData = Math.min.apply(this, sorted);
  27630. maxData = Math.max.apply(this, sorted);
  27631. }
  27632. //为了兼容v1.9.0之前的项目
  27633. if (index > -1) {
  27634. if (typeof opts.xAxis.data[index].min === 'number') {
  27635. minData = Math.min(opts.xAxis.data[index].min, minData);
  27636. }
  27637. if (typeof opts.xAxis.data[index].max === 'number') {
  27638. maxData = Math.max(opts.xAxis.data[index].max, maxData);
  27639. }
  27640. } else {
  27641. if (typeof opts.xAxis.min === 'number') {
  27642. minData = Math.min(opts.xAxis.min, minData);
  27643. }
  27644. if (typeof opts.xAxis.max === 'number') {
  27645. maxData = Math.max(opts.xAxis.max, maxData);
  27646. }
  27647. }
  27648. if (minData === maxData) {
  27649. var rangeSpan = maxData || 10;
  27650. maxData += rangeSpan;
  27651. }
  27652. //var dataRange = getDataRange(minData, maxData);
  27653. var minRange = minData;
  27654. var maxRange = maxData;
  27655. var range = [];
  27656. var eachRange = (maxRange - minRange) / opts.xAxis.splitNumber;
  27657. for (var i = 0; i <= opts.xAxis.splitNumber; i++) {
  27658. range.push(minRange + eachRange * i);
  27659. }
  27660. return range;
  27661. }
  27662. function calXAxisData(series, opts, config) {
  27663. var result = {
  27664. angle: 0,
  27665. xAxisHeight: config.xAxisHeight };
  27666. result.ranges = getXAxisTextList(series, opts, config);
  27667. result.rangesFormat = result.ranges.map(function (item) {
  27668. item = opts.xAxis.format ? opts.xAxis.format(item) : util.toFixed(item, 2);
  27669. return item;
  27670. });
  27671. var xAxisScaleValues = result.ranges.map(function (item) {
  27672. // 如果刻度值是浮点数,则保留两位小数
  27673. item = util.toFixed(item, 2);
  27674. // 若有自定义格式则调用自定义的格式化函数
  27675. item = opts.xAxis.format ? opts.xAxis.format(Number(item)) : item;
  27676. return item;
  27677. });
  27678. result = Object.assign(result, getXAxisPoints(xAxisScaleValues, opts, config));
  27679. // 计算X轴刻度的属性譬如每个刻度的间隔,刻度的起始点\结束点以及总长
  27680. var eachSpacing = result.eachSpacing;
  27681. var textLength = xAxisScaleValues.map(function (item) {
  27682. return measureText(item);
  27683. });
  27684. // get max length of categories text
  27685. var maxTextLength = Math.max.apply(this, textLength);
  27686. // 如果刻度值文本内容过长,则将其逆时针旋转45°
  27687. if (maxTextLength + 2 * config.xAxisTextPadding > eachSpacing) {
  27688. result.angle = 45 * Math.PI / 180;
  27689. result.xAxisHeight = 2 * config.xAxisTextPadding + maxTextLength * Math.sin(result.angle);
  27690. }
  27691. if (opts.xAxis.disabled === true) {
  27692. result.xAxisHeight = 0;
  27693. }
  27694. return result;
  27695. }
  27696. function getRadarDataPoints(angleList, center, radius, series, opts) {
  27697. var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
  27698. var radarOption = opts.extra.radar || {};
  27699. radarOption.max = radarOption.max || 0;
  27700. var maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series)));
  27701. var data = [];var _loop2 = function _loop2(
  27702. i) {
  27703. var each = series[i];
  27704. var listItem = {};
  27705. listItem.color = each.color;
  27706. listItem.legendShape = each.legendShape;
  27707. listItem.pointShape = each.pointShape;
  27708. listItem.data = [];
  27709. each.data.forEach(function (item, index) {
  27710. var tmp = {};
  27711. tmp.angle = angleList[index];
  27712. tmp.proportion = item / maxData;
  27713. tmp.position = convertCoordinateOrigin(radius * tmp.proportion * process * Math.cos(tmp.angle), radius * tmp.proportion *
  27714. process * Math.sin(tmp.angle), center);
  27715. listItem.data.push(tmp);
  27716. });
  27717. data.push(listItem);};for (var i = 0; i < series.length; i++) {_loop2(i);
  27718. }
  27719. return data;
  27720. }
  27721. function getPieDataPoints(series, radius) {
  27722. var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
  27723. var count = 0;
  27724. var _start_ = 0;
  27725. for (var i = 0; i < series.length; i++) {
  27726. var item = series[i];
  27727. item.data = item.data === null ? 0 : item.data;
  27728. count += item.data;
  27729. }
  27730. for (var _i7 = 0; _i7 < series.length; _i7++) {
  27731. var _item2 = series[_i7];
  27732. _item2.data = _item2.data === null ? 0 : _item2.data;
  27733. if (count === 0) {
  27734. _item2._proportion_ = 1 / series.length * process;
  27735. } else {
  27736. _item2._proportion_ = _item2.data / count * process;
  27737. }
  27738. _item2._radius_ = radius;
  27739. }
  27740. for (var _i8 = 0; _i8 < series.length; _i8++) {
  27741. var _item3 = series[_i8];
  27742. _item3._start_ = _start_;
  27743. _start_ += 2 * _item3._proportion_ * Math.PI;
  27744. }
  27745. return series;
  27746. }
  27747. function getFunnelDataPoints(series, radius) {
  27748. var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
  27749. series = series.sort(function (a, b) {return parseInt(b.data) - parseInt(a.data);});
  27750. for (var i = 0; i < series.length; i++) {
  27751. series[i].radius = series[i].data / series[0].data * radius * process;
  27752. series[i]._proportion_ = series[i].data / series[0].data;
  27753. }
  27754. return series.reverse();
  27755. }
  27756. function getRoseDataPoints(series, type, minRadius, radius) {
  27757. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  27758. var count = 0;
  27759. var _start_ = 0;
  27760. var dataArr = [];
  27761. for (var i = 0; i < series.length; i++) {
  27762. var item = series[i];
  27763. item.data = item.data === null ? 0 : item.data;
  27764. count += item.data;
  27765. dataArr.push(item.data);
  27766. }
  27767. var minData = Math.min.apply(null, dataArr);
  27768. var maxData = Math.max.apply(null, dataArr);
  27769. var radiusLength = radius - minRadius;
  27770. for (var _i9 = 0; _i9 < series.length; _i9++) {
  27771. var _item4 = series[_i9];
  27772. _item4.data = _item4.data === null ? 0 : _item4.data;
  27773. if (count === 0 || type == 'area') {
  27774. _item4._proportion_ = _item4.data / count * process;
  27775. _item4._rose_proportion_ = 1 / series.length * process;
  27776. } else {
  27777. _item4._proportion_ = _item4.data / count * process;
  27778. _item4._rose_proportion_ = _item4.data / count * process;
  27779. }
  27780. _item4._radius_ = minRadius + radiusLength * ((_item4.data - minData) / (maxData - minData));
  27781. }
  27782. for (var _i10 = 0; _i10 < series.length; _i10++) {
  27783. var _item5 = series[_i10];
  27784. _item5._start_ = _start_;
  27785. _start_ += 2 * _item5._rose_proportion_ * Math.PI;
  27786. }
  27787. return series;
  27788. }
  27789. function getArcbarDataPoints(series, arcbarOption) {
  27790. var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
  27791. if (process == 1) {
  27792. process = 0.999999;
  27793. }
  27794. for (var i = 0; i < series.length; i++) {
  27795. var item = series[i];
  27796. item.data = item.data === null ? 0 : item.data;
  27797. var totalAngle = void 0;
  27798. if (arcbarOption.type == 'circle') {
  27799. totalAngle = 2;
  27800. } else {
  27801. if (arcbarOption.endAngle < arcbarOption.startAngle) {
  27802. totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle;
  27803. } else {
  27804. totalAngle = arcbarOption.startAngle - arcbarOption.endAngle;
  27805. }
  27806. }
  27807. item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle;
  27808. if (item._proportion_ >= 2) {
  27809. item._proportion_ = item._proportion_ % 2;
  27810. }
  27811. }
  27812. return series;
  27813. }
  27814. function getGaugeAxisPoints(categories, startAngle, endAngle) {
  27815. var totalAngle = startAngle - endAngle + 1;
  27816. var tempStartAngle = startAngle;
  27817. for (var i = 0; i < categories.length; i++) {
  27818. categories[i].value = categories[i].value === null ? 0 : categories[i].value;
  27819. categories[i]._startAngle_ = tempStartAngle;
  27820. categories[i]._endAngle_ = totalAngle * categories[i].value + startAngle;
  27821. if (categories[i]._endAngle_ >= 2) {
  27822. categories[i]._endAngle_ = categories[i]._endAngle_ % 2;
  27823. }
  27824. tempStartAngle = categories[i]._endAngle_;
  27825. }
  27826. return categories;
  27827. }
  27828. function getGaugeDataPoints(series, categories, gaugeOption) {
  27829. var process = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
  27830. for (var i = 0; i < series.length; i++) {
  27831. var item = series[i];
  27832. item.data = item.data === null ? 0 : item.data;
  27833. if (gaugeOption.pointer.color == 'auto') {
  27834. for (var _i11 = 0; _i11 < categories.length; _i11++) {
  27835. if (item.data <= categories[_i11].value) {
  27836. item.color = categories[_i11].color;
  27837. break;
  27838. }
  27839. }
  27840. } else {
  27841. item.color = gaugeOption.pointer.color;
  27842. }
  27843. var totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;
  27844. item._endAngle_ = totalAngle * item.data + gaugeOption.startAngle;
  27845. item._oldAngle_ = gaugeOption.oldAngle;
  27846. if (gaugeOption.oldAngle < gaugeOption.endAngle) {
  27847. item._oldAngle_ += 2;
  27848. }
  27849. if (item.data >= gaugeOption.oldData) {
  27850. item._proportion_ = (item._endAngle_ - item._oldAngle_) * process + gaugeOption.oldAngle;
  27851. } else {
  27852. item._proportion_ = item._oldAngle_ - (item._oldAngle_ - item._endAngle_) * process;
  27853. }
  27854. if (item._proportion_ >= 2) {
  27855. item._proportion_ = item._proportion_ % 2;
  27856. }
  27857. }
  27858. return series;
  27859. }
  27860. function getPieTextMaxLength(series) {
  27861. series = getPieDataPoints(series);
  27862. var maxLength = 0;
  27863. for (var i = 0; i < series.length; i++) {
  27864. var item = series[i];
  27865. var text = item.format ? item.format(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) + '%';
  27866. maxLength = Math.max(maxLength, measureText(text));
  27867. }
  27868. return maxLength;
  27869. }
  27870. function fixColumeData(points, eachSpacing, columnLen, index, config, opts) {
  27871. return points.map(function (item) {
  27872. if (item === null) {
  27873. return null;
  27874. }
  27875. item.width = Math.ceil((eachSpacing - 2 * config.columePadding) / columnLen);
  27876. if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {
  27877. item.width = Math.min(item.width, +opts.extra.column.width);
  27878. }
  27879. if (item.width <= 0) {
  27880. item.width = 1;
  27881. }
  27882. item.x += (index + 0.5 - columnLen / 2) * item.width;
  27883. return item;
  27884. });
  27885. }
  27886. function fixColumeMeterData(points, eachSpacing, columnLen, index, config, opts, border) {
  27887. return points.map(function (item) {
  27888. if (item === null) {
  27889. return null;
  27890. }
  27891. item.width = Math.ceil((eachSpacing - 2 * config.columePadding) / 2);
  27892. if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {
  27893. item.width = Math.min(item.width, +opts.extra.column.width);
  27894. }
  27895. if (index > 0) {
  27896. item.width -= 2 * border;
  27897. }
  27898. return item;
  27899. });
  27900. }
  27901. function fixColumeStackData(points, eachSpacing, columnLen, index, config, opts, series) {
  27902. return points.map(function (item, indexn) {
  27903. if (item === null) {
  27904. return null;
  27905. }
  27906. item.width = Math.ceil((eachSpacing - 2 * config.columePadding) / 2);
  27907. if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {
  27908. item.width = Math.min(item.width, +opts.extra.column.width);
  27909. }
  27910. return item;
  27911. });
  27912. }
  27913. function getXAxisPoints(categories, opts, config) {
  27914. var spacingValid = opts.width - opts.area[1] - opts.area[3];
  27915. var dataCount = opts.enableScroll ? Math.min(opts.xAxis.itemCount, categories.length) : categories.length;
  27916. if ((opts.type == 'line' || opts.type == 'area') && dataCount > 1 && opts.xAxis.boundaryGap == 'justify') {
  27917. dataCount -= 1;
  27918. }
  27919. var eachSpacing = spacingValid / dataCount;
  27920. var xAxisPoints = [];
  27921. var startX = opts.area[3];
  27922. var endX = opts.width - opts.area[1];
  27923. categories.forEach(function (item, index) {
  27924. xAxisPoints.push(startX + index * eachSpacing);
  27925. });
  27926. if (opts.xAxis.boundaryGap !== 'justify') {
  27927. if (opts.enableScroll === true) {
  27928. xAxisPoints.push(startX + categories.length * eachSpacing);
  27929. } else {
  27930. xAxisPoints.push(endX);
  27931. }
  27932. }
  27933. return {
  27934. xAxisPoints: xAxisPoints,
  27935. startX: startX,
  27936. endX: endX,
  27937. eachSpacing: eachSpacing };
  27938. }
  27939. function getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) {
  27940. var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;
  27941. var points = [];
  27942. var validHeight = opts.height - opts.area[0] - opts.area[2];
  27943. data.forEach(function (item, index) {
  27944. if (item === null) {
  27945. points.push(null);
  27946. } else {
  27947. var cPoints = [];
  27948. item.forEach(function (items, indexs) {
  27949. var point = {};
  27950. point.x = xAxisPoints[index] + Math.round(eachSpacing / 2);
  27951. var value = items.value || items;
  27952. var height = validHeight * (value - minRange) / (maxRange - minRange);
  27953. height *= process;
  27954. point.y = opts.height - Math.round(height) - opts.area[2];
  27955. cPoints.push(point);
  27956. });
  27957. points.push(cPoints);
  27958. }
  27959. });
  27960. return points;
  27961. }
  27962. function getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) {
  27963. var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;
  27964. var boundaryGap = 'center';
  27965. if (opts.type == 'line' || opts.type == 'area') {
  27966. boundaryGap = opts.xAxis.boundaryGap;
  27967. }
  27968. var points = [];
  27969. var validHeight = opts.height - opts.area[0] - opts.area[2];
  27970. var validWidth = opts.width - opts.area[1] - opts.area[3];
  27971. data.forEach(function (item, index) {
  27972. if (item === null) {
  27973. points.push(null);
  27974. } else {
  27975. var point = {};
  27976. point.color = item.color;
  27977. point.x = xAxisPoints[index];
  27978. var value = item;
  27979. if (typeof item === 'object' && item !== null) {
  27980. if (item.constructor == Array) {
  27981. var xranges, xminRange, xmaxRange;
  27982. xranges = [].concat(opts.chartData.xAxisData.ranges);
  27983. xminRange = xranges.shift();
  27984. xmaxRange = xranges.pop();
  27985. value = item[1];
  27986. point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange);
  27987. } else {
  27988. value = item.value;
  27989. }
  27990. }
  27991. if (boundaryGap == 'center') {
  27992. point.x += Math.round(eachSpacing / 2);
  27993. }
  27994. var height = validHeight * (value - minRange) / (maxRange - minRange);
  27995. height *= process;
  27996. point.y = opts.height - Math.round(height) - opts.area[2];
  27997. points.push(point);
  27998. }
  27999. });
  28000. return points;
  28001. }
  28002. function getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) {
  28003. var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1;
  28004. var points = [];
  28005. var validHeight = opts.height - opts.area[0] - opts.area[2];
  28006. data.forEach(function (item, index) {
  28007. if (item === null) {
  28008. points.push(null);
  28009. } else {
  28010. var point = {};
  28011. point.color = item.color;
  28012. point.x = xAxisPoints[index] + Math.round(eachSpacing / 2);
  28013. if (seriesIndex > 0) {
  28014. var value = 0;
  28015. for (var i = 0; i <= seriesIndex; i++) {
  28016. value += stackSeries[i].data[index];
  28017. }
  28018. var value0 = value - item;
  28019. var height = validHeight * (value - minRange) / (maxRange - minRange);
  28020. var height0 = validHeight * (value0 - minRange) / (maxRange - minRange);
  28021. } else {
  28022. var value = item;
  28023. var height = validHeight * (value - minRange) / (maxRange - minRange);
  28024. var height0 = 0;
  28025. }
  28026. var heightc = height0;
  28027. height *= process;
  28028. heightc *= process;
  28029. point.y = opts.height - Math.round(height) - opts.area[2];
  28030. point.y0 = opts.height - Math.round(heightc) - opts.area[2];
  28031. points.push(point);
  28032. }
  28033. });
  28034. return points;
  28035. }
  28036. function getYAxisTextList(series, opts, config, stack) {
  28037. var index = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1;
  28038. var data;
  28039. if (stack == 'stack') {
  28040. data = dataCombineStack(series, opts.categories.length);
  28041. } else {
  28042. data = dataCombine(series);
  28043. }
  28044. var sorted = [];
  28045. // remove null from data
  28046. data = data.filter(function (item) {
  28047. //return item !== null;
  28048. if (typeof item === 'object' && item !== null) {
  28049. if (item.constructor == Array) {
  28050. return item !== null;
  28051. } else {
  28052. return item.value !== null;
  28053. }
  28054. } else {
  28055. return item !== null;
  28056. }
  28057. });
  28058. data.map(function (item) {
  28059. if (typeof item === 'object') {
  28060. if (item.constructor == Array) {
  28061. if (opts.type == 'candle') {
  28062. item.map(function (subitem) {
  28063. sorted.push(subitem);
  28064. });
  28065. } else {
  28066. sorted.push(item[1]);
  28067. }
  28068. } else {
  28069. sorted.push(item.value);
  28070. }
  28071. } else {
  28072. sorted.push(item);
  28073. }
  28074. });
  28075. var minData = 0;
  28076. var maxData = 0;
  28077. if (sorted.length > 0) {
  28078. minData = Math.min.apply(this, sorted);
  28079. maxData = Math.max.apply(this, sorted);
  28080. }
  28081. //为了兼容v1.9.0之前的项目
  28082. if (index > -1) {
  28083. if (typeof opts.yAxis.data[index].min === 'number') {
  28084. minData = Math.min(opts.yAxis.data[index].min, minData);
  28085. }
  28086. if (typeof opts.yAxis.data[index].max === 'number') {
  28087. maxData = Math.max(opts.yAxis.data[index].max, maxData);
  28088. }
  28089. } else {
  28090. if (typeof opts.yAxis.min === 'number') {
  28091. minData = Math.min(opts.yAxis.min, minData);
  28092. }
  28093. if (typeof opts.yAxis.max === 'number') {
  28094. maxData = Math.max(opts.yAxis.max, maxData);
  28095. }
  28096. }
  28097. if (minData === maxData) {
  28098. var rangeSpan = maxData || 10;
  28099. maxData += rangeSpan;
  28100. }
  28101. var dataRange = getDataRange(minData, maxData);
  28102. var minRange = dataRange.minRange;
  28103. var maxRange = dataRange.maxRange;
  28104. var range = [];
  28105. var eachRange = (maxRange - minRange) / opts.yAxis.splitNumber;
  28106. for (var i = 0; i <= opts.yAxis.splitNumber; i++) {
  28107. range.push(minRange + eachRange * i);
  28108. }
  28109. return range.reverse();
  28110. }
  28111. function calYAxisData(series, opts, config) {
  28112. //堆叠图重算Y轴
  28113. var columnstyle = assign({}, {
  28114. type: "" },
  28115. opts.extra.column);
  28116. //如果是多Y轴,重新计算
  28117. var YLength = opts.yAxis.data.length;
  28118. var newSeries = new Array(YLength);
  28119. if (YLength > 0) {
  28120. for (var i = 0; i < YLength; i++) {
  28121. newSeries[i] = [];
  28122. for (var j = 0; j < series.length; j++) {
  28123. if (series[j].index == i) {
  28124. newSeries[i].push(series[j]);
  28125. }
  28126. }
  28127. }
  28128. var rangesArr = new Array(YLength);
  28129. var rangesFormatArr = new Array(YLength);
  28130. var yAxisWidthArr = new Array(YLength);var _loop3 = function _loop3(
  28131. _i12) {
  28132. var yData = opts.yAxis.data[_i12];
  28133. //如果总开关不显示,强制每个Y轴为不显示
  28134. if (opts.yAxis.disabled == true) {
  28135. yData.disabled = true;
  28136. }
  28137. rangesArr[_i12] = getYAxisTextList(newSeries[_i12], opts, config, columnstyle.type, _i12);
  28138. var yAxisFontSizes = yData.fontSize || config.fontSize;
  28139. yAxisWidthArr[_i12] = { position: yData.position ? yData.position : 'left', width: 0 };
  28140. rangesFormatArr[_i12] = rangesArr[_i12].map(function (items) {
  28141. items = util.toFixed(items, 6);
  28142. items = yData.format ? yData.format(Number(items)) : items;
  28143. yAxisWidthArr[_i12].width = Math.max(yAxisWidthArr[_i12].width, measureText(items, yAxisFontSizes) + 5);
  28144. return items;
  28145. });
  28146. var calibration = yData.calibration ? 4 * opts.pixelRatio : 0;
  28147. yAxisWidthArr[_i12].width += calibration + 3 * opts.pixelRatio;
  28148. if (yData.disabled === true) {
  28149. yAxisWidthArr[_i12].width = 0;
  28150. }};for (var _i12 = 0; _i12 < YLength; _i12++) {_loop3(_i12);
  28151. }
  28152. } else {
  28153. var rangesArr = new Array(1);
  28154. var rangesFormatArr = new Array(1);
  28155. var yAxisWidthArr = new Array(1);
  28156. rangesArr[0] = getYAxisTextList(series, opts, config, columnstyle.type);
  28157. yAxisWidthArr[0] = { position: 'left', width: 0 };
  28158. var yAxisFontSize = opts.yAxis.fontSize || config.fontSize;
  28159. rangesFormatArr[0] = rangesArr[0].map(function (item) {
  28160. item = util.toFixed(item, 6);
  28161. item = opts.yAxis.format ? opts.yAxis.format(Number(item)) : item;
  28162. yAxisWidthArr[0].width = Math.max(yAxisWidthArr[0].width, measureText(item, yAxisFontSize) + 5);
  28163. return item;
  28164. });
  28165. yAxisWidthArr[0].width += 3 * opts.pixelRatio;
  28166. if (opts.yAxis.disabled === true) {
  28167. yAxisWidthArr[0] = { position: 'left', width: 0 };
  28168. opts.yAxis.data[0] = { disabled: true };
  28169. } else {
  28170. opts.yAxis.data[0] = { disabled: false, position: 'left', max: opts.yAxis.max, min: opts.yAxis.min, format: opts.yAxis.format };
  28171. }
  28172. }
  28173. return {
  28174. rangesFormat: rangesFormatArr,
  28175. ranges: rangesArr,
  28176. yAxisWidth: yAxisWidthArr };
  28177. }
  28178. function calTooltipYAxisData(point, series, opts, config, eachSpacing) {
  28179. var ranges = [].concat(opts.chartData.yAxisData.ranges);
  28180. var spacingValid = opts.height - opts.area[0] - opts.area[2];
  28181. var minAxis = opts.area[0];
  28182. var items = [];
  28183. for (var i = 0; i < ranges.length; i++) {
  28184. var maxVal = ranges[i].shift();
  28185. var minVal = ranges[i].pop();
  28186. var item = maxVal - (maxVal - minVal) * (point - minAxis) / spacingValid;
  28187. item = opts.yAxis.data[i].format ? opts.yAxis.data[i].format(Number(item)) : item.toFixed(0);
  28188. items.push(String(item));
  28189. }
  28190. return items;
  28191. }
  28192. function calMarkLineData(points, opts) {
  28193. var minRange, maxRange;
  28194. var spacingValid = opts.height - opts.area[0] - opts.area[2];
  28195. for (var i = 0; i < points.length; i++) {
  28196. points[i].yAxisIndex = points[i].yAxisIndex ? points[i].yAxisIndex : 0;
  28197. var range = [].concat(opts.chartData.yAxisData.ranges[points[i].yAxisIndex]);
  28198. minRange = range.pop();
  28199. maxRange = range.shift();
  28200. var height = spacingValid * (points[i].value - minRange) / (maxRange - minRange);
  28201. points[i].y = opts.height - Math.round(height) - opts.area[2];
  28202. }
  28203. return points;
  28204. }
  28205. function contextRotate(context, opts) {
  28206. if (opts.rotateLock !== true) {
  28207. context.translate(opts.height, 0);
  28208. context.rotate(90 * Math.PI / 180);
  28209. } else if (opts._rotate_ !== true) {
  28210. context.translate(opts.height, 0);
  28211. context.rotate(90 * Math.PI / 180);
  28212. opts._rotate_ = true;
  28213. }
  28214. }
  28215. function drawPointShape(points, color, shape, context, opts) {
  28216. context.beginPath();
  28217. if (opts.dataPointShapeType == 'hollow') {
  28218. context.setStrokeStyle(color);
  28219. context.setFillStyle(opts.background);
  28220. context.setLineWidth(2 * opts.pixelRatio);
  28221. } else {
  28222. context.setStrokeStyle("#ffffff");
  28223. context.setFillStyle(color);
  28224. context.setLineWidth(1 * opts.pixelRatio);
  28225. }
  28226. if (shape === 'diamond') {
  28227. points.forEach(function (item, index) {
  28228. if (item !== null) {
  28229. context.moveTo(item.x, item.y - 4.5);
  28230. context.lineTo(item.x - 4.5, item.y);
  28231. context.lineTo(item.x, item.y + 4.5);
  28232. context.lineTo(item.x + 4.5, item.y);
  28233. context.lineTo(item.x, item.y - 4.5);
  28234. }
  28235. });
  28236. } else if (shape === 'circle') {
  28237. points.forEach(function (item, index) {
  28238. if (item !== null) {
  28239. context.moveTo(item.x + 2.5 * opts.pixelRatio, item.y);
  28240. context.arc(item.x, item.y, 3 * opts.pixelRatio, 0, 2 * Math.PI, false);
  28241. }
  28242. });
  28243. } else if (shape === 'rect') {
  28244. points.forEach(function (item, index) {
  28245. if (item !== null) {
  28246. context.moveTo(item.x - 3.5, item.y - 3.5);
  28247. context.rect(item.x - 3.5, item.y - 3.5, 7, 7);
  28248. }
  28249. });
  28250. } else if (shape === 'triangle') {
  28251. points.forEach(function (item, index) {
  28252. if (item !== null) {
  28253. context.moveTo(item.x, item.y - 4.5);
  28254. context.lineTo(item.x - 4.5, item.y + 4.5);
  28255. context.lineTo(item.x + 4.5, item.y + 4.5);
  28256. context.lineTo(item.x, item.y - 4.5);
  28257. }
  28258. });
  28259. }
  28260. context.closePath();
  28261. context.fill();
  28262. context.stroke();
  28263. }
  28264. function drawRingTitle(opts, config, context, center) {
  28265. var titlefontSize = opts.title.fontSize || config.titleFontSize;
  28266. var subtitlefontSize = opts.subtitle.fontSize || config.subtitleFontSize;
  28267. var title = opts.title.name || '';
  28268. var subtitle = opts.subtitle.name || '';
  28269. var titleFontColor = opts.title.color || config.titleColor;
  28270. var subtitleFontColor = opts.subtitle.color || config.subtitleColor;
  28271. var titleHeight = title ? titlefontSize : 0;
  28272. var subtitleHeight = subtitle ? subtitlefontSize : 0;
  28273. var margin = 5;
  28274. if (subtitle) {
  28275. var textWidth = measureText(subtitle, subtitlefontSize);
  28276. var startX = center.x - textWidth / 2 + (opts.subtitle.offsetX || 0);
  28277. var startY = center.y + subtitlefontSize / 2 + (opts.subtitle.offsetY || 0);
  28278. if (title) {
  28279. startY += (titleHeight + margin) / 2;
  28280. }
  28281. context.beginPath();
  28282. context.setFontSize(subtitlefontSize);
  28283. context.setFillStyle(subtitleFontColor);
  28284. context.fillText(subtitle, startX, startY);
  28285. context.closePath();
  28286. context.stroke();
  28287. }
  28288. if (title) {
  28289. var _textWidth = measureText(title, titlefontSize);
  28290. var _startX = center.x - _textWidth / 2 + (opts.title.offsetX || 0);
  28291. var _startY = center.y + titlefontSize / 2 + (opts.title.offsetY || 0);
  28292. if (subtitle) {
  28293. _startY -= (subtitleHeight + margin) / 2;
  28294. }
  28295. context.beginPath();
  28296. context.setFontSize(titlefontSize);
  28297. context.setFillStyle(titleFontColor);
  28298. context.fillText(title, _startX, _startY);
  28299. context.closePath();
  28300. context.stroke();
  28301. }
  28302. }
  28303. function drawPointText(points, series, config, context) {
  28304. // 绘制数据文案
  28305. var data = series.data;
  28306. points.forEach(function (item, index) {
  28307. if (item !== null) {
  28308. //var formatVal = series.format ? series.format(data[index]) : data[index];
  28309. context.beginPath();
  28310. context.setFontSize(series.textSize || config.fontSize);
  28311. context.setFillStyle(series.textColor || '#666666');
  28312. var value = data[index];
  28313. if (typeof data[index] === 'object' && data[index] !== null) {
  28314. if (data[index].constructor == Array) {
  28315. value = data[index][1];
  28316. } else {
  28317. value = data[index].value;
  28318. }
  28319. }
  28320. var formatVal = series.format ? series.format(value) : value;
  28321. context.fillText(String(formatVal), item.x - measureText(formatVal, series.textSize || config.fontSize) / 2, item.y - 4);
  28322. context.closePath();
  28323. context.stroke();
  28324. }
  28325. });
  28326. }
  28327. function drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context) {
  28328. radius -= gaugeOption.width / 2 + config.gaugeLabelTextMargin;
  28329. var totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;
  28330. var splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;
  28331. var totalNumber = gaugeOption.endNumber - gaugeOption.startNumber;
  28332. var splitNumber = totalNumber / gaugeOption.splitLine.splitNumber;
  28333. var nowAngle = gaugeOption.startAngle;
  28334. var nowNumber = gaugeOption.startNumber;
  28335. for (var i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) {
  28336. var pos = {
  28337. x: radius * Math.cos(nowAngle * Math.PI),
  28338. y: radius * Math.sin(nowAngle * Math.PI) };
  28339. var labelText = gaugeOption.labelFormat ? gaugeOption.labelFormat(nowNumber) : nowNumber;
  28340. pos.x += centerPosition.x - measureText(labelText) / 2;
  28341. pos.y += centerPosition.y;
  28342. var startX = pos.x;
  28343. var startY = pos.y;
  28344. context.beginPath();
  28345. context.setFontSize(config.fontSize);
  28346. context.setFillStyle(gaugeOption.labelColor || '#666666');
  28347. context.fillText(labelText, startX, startY + config.fontSize / 2);
  28348. context.closePath();
  28349. context.stroke();
  28350. nowAngle += splitAngle;
  28351. if (nowAngle >= 2) {
  28352. nowAngle = nowAngle % 2;
  28353. }
  28354. nowNumber += splitNumber;
  28355. }
  28356. }
  28357. function drawRadarLabel(angleList, radius, centerPosition, opts, config, context) {
  28358. var radarOption = opts.extra.radar || {};
  28359. radius += config.radarLabelTextMargin;
  28360. angleList.forEach(function (angle, index) {
  28361. var pos = {
  28362. x: radius * Math.cos(angle),
  28363. y: radius * Math.sin(angle) };
  28364. var posRelativeCanvas = convertCoordinateOrigin(pos.x, pos.y, centerPosition);
  28365. var startX = posRelativeCanvas.x;
  28366. var startY = posRelativeCanvas.y;
  28367. if (util.approximatelyEqual(pos.x, 0)) {
  28368. startX -= measureText(opts.categories[index] || '') / 2;
  28369. } else if (pos.x < 0) {
  28370. startX -= measureText(opts.categories[index] || '');
  28371. }
  28372. context.beginPath();
  28373. context.setFontSize(config.fontSize);
  28374. context.setFillStyle(radarOption.labelColor || '#666666');
  28375. context.fillText(opts.categories[index] || '', startX, startY + config.fontSize / 2);
  28376. context.closePath();
  28377. context.stroke();
  28378. });
  28379. }
  28380. function drawPieText(series, opts, config, context, radius, center) {
  28381. var lineRadius = config.pieChartLinePadding;
  28382. var textObjectCollection = [];
  28383. var lastTextObject = null;
  28384. var seriesConvert = series.map(function (item) {
  28385. var text = item.format ? item.format(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_.toFixed(4) * 100) + '%';
  28386. if (item._rose_proportion_) item._proportion_ = item._rose_proportion_;
  28387. var arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._proportion_ / 2);
  28388. var color = item.color;
  28389. var radius = item._radius_;
  28390. return {
  28391. arc: arc,
  28392. text: text,
  28393. color: color,
  28394. radius: radius,
  28395. textColor: item.textColor,
  28396. textSize: item.textSize };
  28397. });
  28398. for (var i = 0; i < seriesConvert.length; i++) {
  28399. var item = seriesConvert[i];
  28400. // line end
  28401. var orginX1 = Math.cos(item.arc) * (item.radius + lineRadius);
  28402. var orginY1 = Math.sin(item.arc) * (item.radius + lineRadius);
  28403. // line start
  28404. var orginX2 = Math.cos(item.arc) * item.radius;
  28405. var orginY2 = Math.sin(item.arc) * item.radius;
  28406. // text start
  28407. var orginX3 = orginX1 >= 0 ? orginX1 + config.pieChartTextPadding : orginX1 - config.pieChartTextPadding;
  28408. var orginY3 = orginY1;
  28409. var textWidth = measureText(item.text, item.textSize || config.fontSize);
  28410. var startY = orginY3;
  28411. if (lastTextObject && util.isSameXCoordinateArea(lastTextObject.start, {
  28412. x: orginX3 }))
  28413. {
  28414. if (orginX3 > 0) {
  28415. startY = Math.min(orginY3, lastTextObject.start.y);
  28416. } else if (orginX1 < 0) {
  28417. startY = Math.max(orginY3, lastTextObject.start.y);
  28418. } else {
  28419. if (orginY3 > 0) {
  28420. startY = Math.max(orginY3, lastTextObject.start.y);
  28421. } else {
  28422. startY = Math.min(orginY3, lastTextObject.start.y);
  28423. }
  28424. }
  28425. }
  28426. if (orginX3 < 0) {
  28427. orginX3 -= textWidth;
  28428. }
  28429. var textObject = {
  28430. lineStart: {
  28431. x: orginX2,
  28432. y: orginY2 },
  28433. lineEnd: {
  28434. x: orginX1,
  28435. y: orginY1 },
  28436. start: {
  28437. x: orginX3,
  28438. y: startY },
  28439. width: textWidth,
  28440. height: config.fontSize,
  28441. text: item.text,
  28442. color: item.color,
  28443. textColor: item.textColor,
  28444. textSize: item.textSize };
  28445. lastTextObject = avoidCollision(textObject, lastTextObject);
  28446. textObjectCollection.push(lastTextObject);
  28447. }
  28448. for (var _i13 = 0; _i13 < textObjectCollection.length; _i13++) {
  28449. var _item6 = textObjectCollection[_i13];
  28450. var lineStartPoistion = convertCoordinateOrigin(_item6.lineStart.x, _item6.lineStart.y, center);
  28451. var lineEndPoistion = convertCoordinateOrigin(_item6.lineEnd.x, _item6.lineEnd.y, center);
  28452. var textPosition = convertCoordinateOrigin(_item6.start.x, _item6.start.y, center);
  28453. context.setLineWidth(1 * opts.pixelRatio);
  28454. context.setFontSize(config.fontSize);
  28455. context.beginPath();
  28456. context.setStrokeStyle(_item6.color);
  28457. context.setFillStyle(_item6.color);
  28458. context.moveTo(lineStartPoistion.x, lineStartPoistion.y);
  28459. var curveStartX = _item6.start.x < 0 ? textPosition.x + _item6.width : textPosition.x;
  28460. var textStartX = _item6.start.x < 0 ? textPosition.x - 5 : textPosition.x + 5;
  28461. context.quadraticCurveTo(lineEndPoistion.x, lineEndPoistion.y, curveStartX, textPosition.y);
  28462. context.moveTo(lineStartPoistion.x, lineStartPoistion.y);
  28463. context.stroke();
  28464. context.closePath();
  28465. context.beginPath();
  28466. context.moveTo(textPosition.x + _item6.width, textPosition.y);
  28467. context.arc(curveStartX, textPosition.y, 2, 0, 2 * Math.PI);
  28468. context.closePath();
  28469. context.fill();
  28470. context.beginPath();
  28471. context.setFontSize(_item6.textSize || config.fontSize);
  28472. context.setFillStyle(_item6.textColor || '#666666');
  28473. context.fillText(_item6.text, textStartX, textPosition.y + 3);
  28474. context.closePath();
  28475. context.stroke();
  28476. context.closePath();
  28477. }
  28478. }
  28479. function drawToolTipSplitLine(offsetX, opts, config, context) {
  28480. var toolTipOption = opts.extra.tooltip || {};
  28481. toolTipOption.gridType = toolTipOption.gridType == undefined ? 'solid' : toolTipOption.gridType;
  28482. toolTipOption.dashLength = toolTipOption.dashLength == undefined ? 4 : toolTipOption.dashLength;
  28483. var startY = opts.area[0];
  28484. var endY = opts.height - opts.area[2];
  28485. if (toolTipOption.gridType == 'dash') {
  28486. context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]);
  28487. }
  28488. context.setStrokeStyle(toolTipOption.gridColor || '#cccccc');
  28489. context.setLineWidth(1 * opts.pixelRatio);
  28490. context.beginPath();
  28491. context.moveTo(offsetX, startY);
  28492. context.lineTo(offsetX, endY);
  28493. context.stroke();
  28494. context.setLineDash([]);
  28495. if (toolTipOption.xAxisLabel) {
  28496. var labelText = opts.categories[opts.tooltip.index];
  28497. context.setFontSize(config.fontSize);
  28498. var textWidth = measureText(labelText, config.fontSize);
  28499. var textX = offsetX - 0.5 * textWidth;
  28500. var textY = endY;
  28501. context.beginPath();
  28502. context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity));
  28503. context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground);
  28504. context.setLineWidth(1 * opts.pixelRatio);
  28505. context.rect(textX - config.toolTipPadding, textY, textWidth + 2 * config.toolTipPadding, config.fontSize + 2 * config.toolTipPadding);
  28506. context.closePath();
  28507. context.stroke();
  28508. context.fill();
  28509. context.beginPath();
  28510. context.setFontSize(config.fontSize);
  28511. context.setFillStyle(toolTipOption.labelFontColor || config.fontColor);
  28512. context.fillText(String(labelText), textX, textY + config.toolTipPadding + config.fontSize);
  28513. context.closePath();
  28514. context.stroke();
  28515. }
  28516. }
  28517. function drawMarkLine(opts, config, context) {
  28518. var markLineOption = assign({}, {
  28519. type: 'solid',
  28520. dashLength: 4,
  28521. data: [] },
  28522. opts.extra.markLine);
  28523. var startX = opts.area[3];
  28524. var endX = opts.width - opts.area[1];
  28525. var points = calMarkLineData(markLineOption.data, opts);
  28526. for (var i = 0; i < points.length; i++) {
  28527. var item = assign({}, {
  28528. lineColor: '#DE4A42',
  28529. showLabel: false,
  28530. labelFontColor: '#666666',
  28531. labelBgColor: '#DFE8FF',
  28532. labelBgOpacity: 0.8,
  28533. yAxisIndex: 0 },
  28534. points[i]);
  28535. if (markLineOption.type == 'dash') {
  28536. context.setLineDash([markLineOption.dashLength, markLineOption.dashLength]);
  28537. }
  28538. context.setStrokeStyle(item.lineColor);
  28539. context.setLineWidth(1 * opts.pixelRatio);
  28540. context.beginPath();
  28541. context.moveTo(startX, item.y);
  28542. context.lineTo(endX, item.y);
  28543. context.stroke();
  28544. context.setLineDash([]);
  28545. if (item.showLabel) {
  28546. var labelText = opts.yAxis.format ? opts.yAxis.format(Number(item.value)) : item.value;
  28547. context.setFontSize(config.fontSize);
  28548. var textWidth = measureText(labelText, config.fontSize);
  28549. var bgStartX = opts.padding[3] + config.yAxisTitleWidth - config.toolTipPadding;
  28550. var bgEndX = Math.max(opts.area[3], textWidth + config.toolTipPadding * 2);
  28551. var bgWidth = bgEndX - bgStartX;
  28552. var textX = bgStartX + (bgWidth - textWidth) / 2;
  28553. var textY = item.y;
  28554. context.setFillStyle(hexToRgb(item.labelBgColor, item.labelBgOpacity));
  28555. context.setStrokeStyle(item.labelBgColor);
  28556. context.setLineWidth(1 * opts.pixelRatio);
  28557. context.beginPath();
  28558. context.rect(bgStartX, textY - 0.5 * config.fontSize - config.toolTipPadding, bgWidth, config.fontSize + 2 * config.toolTipPadding);
  28559. context.closePath();
  28560. context.stroke();
  28561. context.fill();
  28562. context.beginPath();
  28563. context.setFontSize(config.fontSize);
  28564. context.setFillStyle(item.labelFontColor);
  28565. context.fillText(String(labelText), textX, textY + 0.5 * config.fontSize);
  28566. context.stroke();
  28567. }
  28568. }
  28569. }
  28570. function drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints) {
  28571. var toolTipOption = assign({}, {
  28572. gridType: 'solid',
  28573. dashLength: 4 },
  28574. opts.extra.tooltip);
  28575. var startX = opts.area[3];
  28576. var endX = opts.width - opts.area[1];
  28577. if (toolTipOption.gridType == 'dash') {
  28578. context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]);
  28579. }
  28580. context.setStrokeStyle(toolTipOption.gridColor || '#cccccc');
  28581. context.setLineWidth(1 * opts.pixelRatio);
  28582. context.beginPath();
  28583. context.moveTo(startX, opts.tooltip.offset.y);
  28584. context.lineTo(endX, opts.tooltip.offset.y);
  28585. context.stroke();
  28586. context.setLineDash([]);
  28587. if (toolTipOption.yAxisLabel) {
  28588. var labelText = calTooltipYAxisData(opts.tooltip.offset.y, opts.series, opts, config, eachSpacing);
  28589. var widthArr = opts.chartData.yAxisData.yAxisWidth;
  28590. var tStartLeft = opts.area[3];
  28591. var tStartRight = opts.width - opts.area[1];
  28592. for (var i = 0; i < labelText.length; i++) {
  28593. context.setFontSize(config.fontSize);
  28594. var textWidth = measureText(labelText[i], config.fontSize);
  28595. var bgStartX = void 0,bgEndX = void 0,bgWidth = void 0;
  28596. if (widthArr[i].position == 'left') {
  28597. bgStartX = tStartLeft - widthArr[i].width;
  28598. bgEndX = Math.max(bgStartX, bgStartX + textWidth + config.toolTipPadding * 2);
  28599. } else {
  28600. bgStartX = tStartRight;
  28601. bgEndX = Math.max(bgStartX + widthArr[i].width, bgStartX + textWidth + config.toolTipPadding * 2);
  28602. }
  28603. bgWidth = bgEndX - bgStartX;
  28604. var textX = bgStartX + (bgWidth - textWidth) / 2;
  28605. var textY = opts.tooltip.offset.y;
  28606. context.beginPath();
  28607. context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity));
  28608. context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground);
  28609. context.setLineWidth(1 * opts.pixelRatio);
  28610. context.rect(bgStartX, textY - 0.5 * config.fontSize - config.toolTipPadding, bgWidth, config.fontSize + 2 * config.toolTipPadding);
  28611. context.closePath();
  28612. context.stroke();
  28613. context.fill();
  28614. context.beginPath();
  28615. context.setFontSize(config.fontSize);
  28616. context.setFillStyle(toolTipOption.labelFontColor || config.fontColor);
  28617. context.fillText(labelText[i], textX, textY + 0.5 * config.fontSize);
  28618. context.closePath();
  28619. context.stroke();
  28620. if (widthArr[i].position == 'left') {
  28621. tStartLeft -= widthArr[i].width + opts.yAxis.padding;
  28622. } else {
  28623. tStartRight += widthArr[i].width + opts.yAxis.padding;
  28624. }
  28625. }
  28626. }
  28627. }
  28628. function drawToolTipSplitArea(offsetX, opts, config, context, eachSpacing) {
  28629. var toolTipOption = assign({}, {
  28630. activeBgColor: '#000000',
  28631. activeBgOpacity: 0.08 },
  28632. opts.extra.tooltip);
  28633. var startY = opts.area[0];
  28634. var endY = opts.height - opts.area[2];
  28635. context.beginPath();
  28636. context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity));
  28637. context.rect(offsetX - eachSpacing / 2, startY, eachSpacing, endY - startY);
  28638. context.closePath();
  28639. context.fill();
  28640. }
  28641. function drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxisPoints) {
  28642. var toolTipOption = assign({}, {
  28643. showBox: true,
  28644. bgColor: '#000000',
  28645. bgOpacity: 0.7,
  28646. fontColor: '#FFFFFF' },
  28647. opts.extra.tooltip);
  28648. var legendWidth = 4 * opts.pixelRatio;
  28649. var legendMarginRight = 5 * opts.pixelRatio;
  28650. var arrowWidth = 8 * opts.pixelRatio;
  28651. var isOverRightBorder = false;
  28652. if (opts.type == 'line' || opts.type == 'area' || opts.type == 'candle' || opts.type == 'mix') {
  28653. drawToolTipSplitLine(opts.tooltip.offset.x, opts, config, context);
  28654. }
  28655. offset = assign({
  28656. x: 0,
  28657. y: 0 },
  28658. offset);
  28659. offset.y -= 8 * opts.pixelRatio;
  28660. var textWidth = textList.map(function (item) {
  28661. return measureText(item.text, config.fontSize);
  28662. });
  28663. var toolTipWidth = legendWidth + legendMarginRight + 4 * config.toolTipPadding + Math.max.apply(null, textWidth);
  28664. var toolTipHeight = 2 * config.toolTipPadding + textList.length * config.toolTipLineHeight;
  28665. if (toolTipOption.showBox == false) {return;}
  28666. // if beyond the right border
  28667. if (offset.x - Math.abs(opts._scrollDistance_) + arrowWidth + toolTipWidth > opts.width) {
  28668. isOverRightBorder = true;
  28669. }
  28670. if (toolTipHeight + offset.y > opts.height) {
  28671. offset.y = opts.height - toolTipHeight;
  28672. }
  28673. // draw background rect
  28674. context.beginPath();
  28675. context.setFillStyle(hexToRgb(toolTipOption.bgColor || config.toolTipBackground, toolTipOption.bgOpacity || config.toolTipOpacity));
  28676. if (isOverRightBorder) {
  28677. context.moveTo(offset.x, offset.y + 10 * opts.pixelRatio);
  28678. context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pixelRatio - 5 * opts.pixelRatio);
  28679. context.lineTo(offset.x - arrowWidth, offset.y);
  28680. context.lineTo(offset.x - arrowWidth - Math.round(toolTipWidth), offset.y);
  28681. context.lineTo(offset.x - arrowWidth - Math.round(toolTipWidth), offset.y + toolTipHeight);
  28682. context.lineTo(offset.x - arrowWidth, offset.y + toolTipHeight);
  28683. context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pixelRatio + 5 * opts.pixelRatio);
  28684. context.lineTo(offset.x, offset.y + 10 * opts.pixelRatio);
  28685. } else {
  28686. context.moveTo(offset.x, offset.y + 10 * opts.pixelRatio);
  28687. context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pixelRatio - 5 * opts.pixelRatio);
  28688. context.lineTo(offset.x + arrowWidth, offset.y);
  28689. context.lineTo(offset.x + arrowWidth + Math.round(toolTipWidth), offset.y);
  28690. context.lineTo(offset.x + arrowWidth + Math.round(toolTipWidth), offset.y + toolTipHeight);
  28691. context.lineTo(offset.x + arrowWidth, offset.y + toolTipHeight);
  28692. context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pixelRatio + 5 * opts.pixelRatio);
  28693. context.lineTo(offset.x, offset.y + 10 * opts.pixelRatio);
  28694. }
  28695. context.closePath();
  28696. context.fill();
  28697. // draw legend
  28698. textList.forEach(function (item, index) {
  28699. if (item.color !== null) {
  28700. context.beginPath();
  28701. context.setFillStyle(item.color);
  28702. var startX = offset.x + arrowWidth + 2 * config.toolTipPadding;
  28703. var startY = offset.y + (config.toolTipLineHeight - config.fontSize) / 2 + config.toolTipLineHeight * index +
  28704. config.toolTipPadding + 1;
  28705. if (isOverRightBorder) {
  28706. startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding;
  28707. }
  28708. context.fillRect(startX, startY, legendWidth, config.fontSize);
  28709. context.closePath();
  28710. }
  28711. });
  28712. // draw text list
  28713. textList.forEach(function (item, index) {
  28714. var startX = offset.x + arrowWidth + 2 * config.toolTipPadding + legendWidth + legendMarginRight;
  28715. if (isOverRightBorder) {
  28716. startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding + +legendWidth + legendMarginRight;
  28717. }
  28718. var startY = offset.y + (config.toolTipLineHeight - config.fontSize) / 2 + config.toolTipLineHeight * index +
  28719. config.toolTipPadding;
  28720. context.beginPath();
  28721. context.setFontSize(config.fontSize);
  28722. context.setFillStyle(toolTipOption.fontColor);
  28723. context.fillText(item.text, startX, startY + config.fontSize);
  28724. context.closePath();
  28725. context.stroke();
  28726. });
  28727. }
  28728. function drawYAxisTitle(title, opts, config, context) {
  28729. var startX = config.xAxisHeight + (opts.height - config.xAxisHeight - measureText(title)) / 2;
  28730. context.save();
  28731. context.beginPath();
  28732. context.setFontSize(config.fontSize);
  28733. context.setFillStyle(opts.yAxis.titleFontColor || '#333333');
  28734. context.translate(0, opts.height);
  28735. context.rotate(-90 * Math.PI / 180);
  28736. context.fillText(title, startX, opts.padding[3] + 0.5 * config.fontSize);
  28737. context.closePath();
  28738. context.stroke();
  28739. context.restore();
  28740. }
  28741. function drawColumnDataPoints(series, opts, config, context) {
  28742. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  28743. var xAxisData = opts.chartData.xAxisData,
  28744. xAxisPoints = xAxisData.xAxisPoints,
  28745. eachSpacing = xAxisData.eachSpacing;
  28746. var columnOption = assign({}, {
  28747. type: 'group',
  28748. width: eachSpacing / 2,
  28749. meter: {
  28750. border: 4,
  28751. fillColor: '#FFFFFF' } },
  28752. opts.extra.column);
  28753. var calPoints = [];
  28754. context.save();
  28755. var leftNum = -2;
  28756. var rightNum = xAxisPoints.length + 2;
  28757. if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
  28758. context.translate(opts._scrollDistance_, 0);
  28759. leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;
  28760. rightNum = leftNum + opts.xAxis.itemCount + 4;
  28761. }
  28762. if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {
  28763. drawToolTipSplitArea(opts.tooltip.offset.x, opts, config, context, eachSpacing);
  28764. }
  28765. series.forEach(function (eachSeries, seriesIndex) {
  28766. var ranges, minRange, maxRange;
  28767. ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
  28768. minRange = ranges.pop();
  28769. maxRange = ranges.shift();
  28770. var data = eachSeries.data;
  28771. switch (columnOption.type) {
  28772. case 'group':
  28773. var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
  28774. var tooltipPoints = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);
  28775. calPoints.push(tooltipPoints);
  28776. points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts);
  28777. for (var i = 0; i < points.length; i++) {
  28778. var item = points[i];
  28779. if (item !== null && i > leftNum && i < rightNum) {
  28780. context.beginPath();
  28781. context.setStrokeStyle(item.color || eachSeries.color);
  28782. context.setLineWidth(1);
  28783. context.setFillStyle(item.color || eachSeries.color);
  28784. var startX = item.x - item.width / 2;
  28785. var height = opts.height - item.y - opts.area[2];
  28786. context.moveTo(startX, item.y);
  28787. context.lineTo(startX + item.width - 2, item.y);
  28788. context.lineTo(startX + item.width - 2, opts.height - opts.area[2]);
  28789. context.lineTo(startX, opts.height - opts.area[2]);
  28790. context.lineTo(startX, item.y);
  28791. context.closePath();
  28792. context.stroke();
  28793. context.fill();
  28794. }
  28795. };
  28796. break;
  28797. case 'stack':
  28798. // 绘制堆叠数据图
  28799. var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);
  28800. calPoints.push(points);
  28801. points = fixColumeStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series);
  28802. for (var _i14 = 0; _i14 < points.length; _i14++) {
  28803. var _item7 = points[_i14];
  28804. if (_item7 !== null && _i14 > leftNum && _i14 < rightNum) {
  28805. context.beginPath();
  28806. context.setFillStyle(_item7.color || eachSeries.color);
  28807. var startX = _item7.x - _item7.width / 2 + 1;
  28808. var height = opts.height - _item7.y - opts.area[2];
  28809. var height0 = opts.height - _item7.y0 - opts.area[2];
  28810. if (seriesIndex > 0) {
  28811. height -= height0;
  28812. }
  28813. context.moveTo(startX, _item7.y);
  28814. context.fillRect(startX, _item7.y, _item7.width - 2, height);
  28815. context.closePath();
  28816. context.fill();
  28817. }
  28818. };
  28819. break;
  28820. case 'meter':
  28821. // 绘制温度计数据图
  28822. var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
  28823. calPoints.push(points);
  28824. points = fixColumeMeterData(points, eachSpacing, series.length, seriesIndex, config, opts, columnOption.meter.border);
  28825. if (seriesIndex == 0) {
  28826. for (var _i15 = 0; _i15 < points.length; _i15++) {
  28827. var _item8 = points[_i15];
  28828. if (_item8 !== null && _i15 > leftNum && _i15 < rightNum) {
  28829. //画背景颜色
  28830. context.beginPath();
  28831. context.setFillStyle(columnOption.meter.fillColor);
  28832. var startX = _item8.x - _item8.width / 2;
  28833. var height = opts.height - _item8.y - opts.area[2];
  28834. context.moveTo(startX, _item8.y);
  28835. context.fillRect(startX, _item8.y, _item8.width, height);
  28836. context.closePath();
  28837. context.fill();
  28838. //画边框线
  28839. if (columnOption.meter.border > 0) {
  28840. context.beginPath();
  28841. context.setStrokeStyle(eachSeries.color);
  28842. context.setLineWidth(columnOption.meter.border * opts.pixelRatio);
  28843. context.moveTo(startX + columnOption.meter.border * 0.5, _item8.y + height);
  28844. context.lineTo(startX + columnOption.meter.border * 0.5, _item8.y + columnOption.meter.border * 0.5);
  28845. context.lineTo(startX + _item8.width - columnOption.meter.border * 0.5, _item8.y + columnOption.meter.border * 0.5);
  28846. context.lineTo(startX + _item8.width - columnOption.meter.border * 0.5, _item8.y + height);
  28847. context.stroke();
  28848. }
  28849. }
  28850. };
  28851. } else {
  28852. for (var _i16 = 0; _i16 < points.length; _i16++) {
  28853. var _item9 = points[_i16];
  28854. if (_item9 !== null && _i16 > leftNum && _i16 < rightNum) {
  28855. context.beginPath();
  28856. context.setFillStyle(_item9.color || eachSeries.color);
  28857. var startX = _item9.x - _item9.width / 2;
  28858. var height = opts.height - _item9.y - opts.area[2];
  28859. context.moveTo(startX, _item9.y);
  28860. context.fillRect(startX, _item9.y, _item9.width, height);
  28861. context.closePath();
  28862. context.fill();
  28863. }
  28864. };
  28865. }
  28866. break;}
  28867. });
  28868. if (opts.dataLabel !== false && process === 1) {
  28869. series.forEach(function (eachSeries, seriesIndex) {
  28870. var ranges, minRange, maxRange;
  28871. ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
  28872. minRange = ranges.pop();
  28873. maxRange = ranges.shift();
  28874. var data = eachSeries.data;
  28875. switch (columnOption.type) {
  28876. case 'group':
  28877. var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
  28878. points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts);
  28879. drawPointText(points, eachSeries, config, context);
  28880. break;
  28881. case 'stack':
  28882. var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);
  28883. drawPointText(points, eachSeries, config, context);
  28884. break;
  28885. case 'meter':
  28886. var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
  28887. drawPointText(points, eachSeries, config, context);
  28888. break;}
  28889. });
  28890. }
  28891. context.restore();
  28892. return {
  28893. xAxisPoints: xAxisPoints,
  28894. calPoints: calPoints,
  28895. eachSpacing: eachSpacing };
  28896. }
  28897. function drawCandleDataPoints(series, seriesMA, opts, config, context) {
  28898. var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
  28899. var candleOption = assign({}, {
  28900. color: {},
  28901. average: {} },
  28902. opts.extra.candle);
  28903. candleOption.color = assign({}, {
  28904. upLine: '#f04864',
  28905. upFill: '#f04864',
  28906. downLine: '#2fc25b',
  28907. downFill: '#2fc25b' },
  28908. candleOption.color);
  28909. candleOption.average = assign({}, {
  28910. show: false,
  28911. name: [],
  28912. day: [],
  28913. color: config.colors },
  28914. candleOption.average);
  28915. opts.extra.candle = candleOption;
  28916. var xAxisData = opts.chartData.xAxisData,
  28917. xAxisPoints = xAxisData.xAxisPoints,
  28918. eachSpacing = xAxisData.eachSpacing;
  28919. var calPoints = [];
  28920. context.save();
  28921. var leftNum = -2;
  28922. var rightNum = xAxisPoints.length + 2;
  28923. var leftSpace = 0;
  28924. var rightSpace = opts.width + eachSpacing;
  28925. if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
  28926. context.translate(opts._scrollDistance_, 0);
  28927. leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;
  28928. rightNum = leftNum + opts.xAxis.itemCount + 4;
  28929. leftSpace = -opts._scrollDistance_ - eachSpacing + opts.area[3];
  28930. rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;
  28931. }
  28932. //画均线
  28933. if (candleOption.average.show) {
  28934. seriesMA.forEach(function (eachSeries, seriesIndex) {
  28935. var ranges, minRange, maxRange;
  28936. ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
  28937. minRange = ranges.pop();
  28938. maxRange = ranges.shift();
  28939. var data = eachSeries.data;
  28940. var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
  28941. var splitPointList = splitPoints(points);
  28942. for (var i = 0; i < splitPointList.length; i++) {
  28943. var _points = splitPointList[i];
  28944. context.beginPath();
  28945. context.setStrokeStyle(eachSeries.color);
  28946. context.setLineWidth(1);
  28947. if (_points.length === 1) {
  28948. context.moveTo(_points[0].x, _points[0].y);
  28949. context.arc(_points[0].x, _points[0].y, 1, 0, 2 * Math.PI);
  28950. } else {
  28951. context.moveTo(_points[0].x, _points[0].y);
  28952. var startPoint = 0;
  28953. for (var j = 0; j < _points.length; j++) {
  28954. var item = _points[j];
  28955. if (startPoint == 0 && item.x > leftSpace) {
  28956. context.moveTo(item.x, item.y);
  28957. startPoint = 1;
  28958. }
  28959. if (j > 0 && item.x > leftSpace && item.x < rightSpace) {
  28960. var ctrlPoint = createCurveControlPoints(_points, j - 1);
  28961. context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);
  28962. }
  28963. }
  28964. context.moveTo(_points[0].x, _points[0].y);
  28965. }
  28966. context.closePath();
  28967. context.stroke();
  28968. }
  28969. });
  28970. }
  28971. //画K线
  28972. series.forEach(function (eachSeries, seriesIndex) {
  28973. var ranges, minRange, maxRange;
  28974. ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
  28975. minRange = ranges.pop();
  28976. maxRange = ranges.shift();
  28977. var data = eachSeries.data;
  28978. var points = getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
  28979. calPoints.push(points);
  28980. var splitPointList = splitPoints(points);
  28981. for (var i = 0; i < splitPointList[0].length; i++) {
  28982. if (i > leftNum && i < rightNum) {
  28983. var item = splitPointList[0][i];
  28984. context.beginPath();
  28985. //如果上涨
  28986. if (data[i][1] - data[i][0] > 0) {
  28987. context.setStrokeStyle(candleOption.color.upLine);
  28988. context.setFillStyle(candleOption.color.upFill);
  28989. context.setLineWidth(1 * opts.pixelRatio);
  28990. context.moveTo(item[3].x, item[3].y); //顶点
  28991. context.lineTo(item[1].x, item[1].y); //收盘中间点
  28992. context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点
  28993. context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点
  28994. context.lineTo(item[0].x, item[0].y); //开盘中间点
  28995. context.lineTo(item[2].x, item[2].y); //底点
  28996. context.lineTo(item[0].x, item[0].y); //开盘中间点
  28997. context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点
  28998. context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点
  28999. context.lineTo(item[1].x, item[1].y); //收盘中间点
  29000. context.moveTo(item[3].x, item[3].y); //顶点
  29001. } else {
  29002. context.setStrokeStyle(candleOption.color.downLine);
  29003. context.setFillStyle(candleOption.color.downFill);
  29004. context.setLineWidth(1 * opts.pixelRatio);
  29005. context.moveTo(item[3].x, item[3].y); //顶点
  29006. context.lineTo(item[0].x, item[0].y); //开盘中间点
  29007. context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点
  29008. context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点
  29009. context.lineTo(item[1].x, item[1].y); //收盘中间点
  29010. context.lineTo(item[2].x, item[2].y); //底点
  29011. context.lineTo(item[1].x, item[1].y); //收盘中间点
  29012. context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点
  29013. context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点
  29014. context.lineTo(item[0].x, item[0].y); //开盘中间点
  29015. context.moveTo(item[3].x, item[3].y); //顶点
  29016. }
  29017. context.closePath();
  29018. context.fill();
  29019. context.stroke();
  29020. }
  29021. }
  29022. });
  29023. context.restore();
  29024. return {
  29025. xAxisPoints: xAxisPoints,
  29026. calPoints: calPoints,
  29027. eachSpacing: eachSpacing };
  29028. }
  29029. function drawAreaDataPoints(series, opts, config, context) {
  29030. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  29031. var areaOption = assign({}, {
  29032. type: 'straight',
  29033. opacity: 0.2,
  29034. addLine: false,
  29035. width: 2,
  29036. gradient: false },
  29037. opts.extra.area);
  29038. var xAxisData = opts.chartData.xAxisData,
  29039. xAxisPoints = xAxisData.xAxisPoints,
  29040. eachSpacing = xAxisData.eachSpacing;
  29041. var endY = opts.height - opts.area[2];
  29042. var calPoints = [];
  29043. context.save();
  29044. var leftSpace = 0;
  29045. var rightSpace = opts.width + eachSpacing;
  29046. if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
  29047. context.translate(opts._scrollDistance_, 0);
  29048. leftSpace = -opts._scrollDistance_ - eachSpacing + opts.area[3];
  29049. rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;
  29050. }
  29051. series.forEach(function (eachSeries, seriesIndex) {
  29052. var ranges, minRange, maxRange;
  29053. ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
  29054. minRange = ranges.pop();
  29055. maxRange = ranges.shift();
  29056. var data = eachSeries.data;
  29057. var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
  29058. calPoints.push(points);
  29059. var splitPointList = splitPoints(points);
  29060. for (var i = 0; i < splitPointList.length; i++) {
  29061. var _points2 = splitPointList[i];
  29062. // 绘制区域数
  29063. context.beginPath();
  29064. context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity));
  29065. if (areaOption.gradient) {
  29066. var gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height - opts.area[2]);
  29067. gradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity));
  29068. gradient.addColorStop('1.0', hexToRgb("#FFFFFF", 0.1));
  29069. context.setFillStyle(gradient);
  29070. } else {
  29071. context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity));
  29072. }
  29073. context.setLineWidth(areaOption.width * opts.pixelRatio);
  29074. if (_points2.length > 1) {
  29075. var firstPoint = _points2[0];
  29076. var lastPoint = _points2[_points2.length - 1];
  29077. context.moveTo(firstPoint.x, firstPoint.y);
  29078. var startPoint = 0;
  29079. if (areaOption.type === 'curve') {
  29080. for (var j = 0; j < _points2.length; j++) {
  29081. var item = _points2[j];
  29082. if (startPoint == 0 && item.x > leftSpace) {
  29083. context.moveTo(item.x, item.y);
  29084. startPoint = 1;
  29085. }
  29086. if (j > 0 && item.x > leftSpace && item.x < rightSpace) {
  29087. var ctrlPoint = createCurveControlPoints(_points2, j - 1);
  29088. context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);
  29089. }
  29090. };
  29091. } else {
  29092. for (var _j = 0; _j < _points2.length; _j++) {
  29093. var _item10 = _points2[_j];
  29094. if (startPoint == 0 && _item10.x > leftSpace) {
  29095. context.moveTo(_item10.x, _item10.y);
  29096. startPoint = 1;
  29097. }
  29098. if (_j > 0 && _item10.x > leftSpace && _item10.x < rightSpace) {
  29099. context.lineTo(_item10.x, _item10.y);
  29100. }
  29101. };
  29102. }
  29103. context.lineTo(lastPoint.x, endY);
  29104. context.lineTo(firstPoint.x, endY);
  29105. context.lineTo(firstPoint.x, firstPoint.y);
  29106. } else {
  29107. var _item11 = _points2[0];
  29108. context.moveTo(_item11.x - eachSpacing / 2, _item11.y);
  29109. context.lineTo(_item11.x + eachSpacing / 2, _item11.y);
  29110. context.lineTo(_item11.x + eachSpacing / 2, endY);
  29111. context.lineTo(_item11.x - eachSpacing / 2, endY);
  29112. context.moveTo(_item11.x - eachSpacing / 2, _item11.y);
  29113. }
  29114. context.closePath();
  29115. context.fill();
  29116. //画连线
  29117. if (areaOption.addLine) {
  29118. if (eachSeries.lineType == 'dash') {
  29119. var dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;
  29120. dashLength *= opts.pixelRatio;
  29121. context.setLineDash([dashLength, dashLength]);
  29122. }
  29123. context.beginPath();
  29124. context.setStrokeStyle(eachSeries.color);
  29125. context.setLineWidth(areaOption.width * opts.pixelRatio);
  29126. if (_points2.length === 1) {
  29127. context.moveTo(_points2[0].x, _points2[0].y);
  29128. context.arc(_points2[0].x, _points2[0].y, 1, 0, 2 * Math.PI);
  29129. } else {
  29130. context.moveTo(_points2[0].x, _points2[0].y);
  29131. var _startPoint = 0;
  29132. if (areaOption.type === 'curve') {
  29133. for (var _j2 = 0; _j2 < _points2.length; _j2++) {
  29134. var _item12 = _points2[_j2];
  29135. if (_startPoint == 0 && _item12.x > leftSpace) {
  29136. context.moveTo(_item12.x, _item12.y);
  29137. _startPoint = 1;
  29138. }
  29139. if (_j2 > 0 && _item12.x > leftSpace && _item12.x < rightSpace) {
  29140. var _ctrlPoint = createCurveControlPoints(_points2, _j2 - 1);
  29141. context.bezierCurveTo(_ctrlPoint.ctrA.x, _ctrlPoint.ctrA.y, _ctrlPoint.ctrB.x, _ctrlPoint.ctrB.y, _item12.x, _item12.y);
  29142. }
  29143. };
  29144. } else {
  29145. for (var _j3 = 0; _j3 < _points2.length; _j3++) {
  29146. var _item13 = _points2[_j3];
  29147. if (_startPoint == 0 && _item13.x > leftSpace) {
  29148. context.moveTo(_item13.x, _item13.y);
  29149. _startPoint = 1;
  29150. }
  29151. if (_j3 > 0 && _item13.x > leftSpace && _item13.x < rightSpace) {
  29152. context.lineTo(_item13.x, _item13.y);
  29153. }
  29154. };
  29155. }
  29156. context.moveTo(_points2[0].x, _points2[0].y);
  29157. }
  29158. context.stroke();
  29159. context.setLineDash([]);
  29160. }
  29161. }
  29162. //画点
  29163. if (opts.dataPointShape !== false) {
  29164. drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);
  29165. }
  29166. });
  29167. if (opts.dataLabel !== false && process === 1) {
  29168. series.forEach(function (eachSeries, seriesIndex) {
  29169. var ranges, minRange, maxRange;
  29170. ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
  29171. minRange = ranges.pop();
  29172. maxRange = ranges.shift();
  29173. var data = eachSeries.data;
  29174. var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
  29175. drawPointText(points, eachSeries, config, context);
  29176. });
  29177. }
  29178. context.restore();
  29179. return {
  29180. xAxisPoints: xAxisPoints,
  29181. calPoints: calPoints,
  29182. eachSpacing: eachSpacing };
  29183. }
  29184. function drawLineDataPoints(series, opts, config, context) {
  29185. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  29186. var lineOption = assign({}, {
  29187. type: 'straight',
  29188. width: 2 },
  29189. opts.extra.line);
  29190. lineOption.width *= opts.pixelRatio;
  29191. var xAxisData = opts.chartData.xAxisData,
  29192. xAxisPoints = xAxisData.xAxisPoints,
  29193. eachSpacing = xAxisData.eachSpacing;
  29194. var calPoints = [];
  29195. context.save();
  29196. var leftSpace = 0;
  29197. var rightSpace = opts.width + eachSpacing;
  29198. if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
  29199. context.translate(opts._scrollDistance_, 0);
  29200. leftSpace = -opts._scrollDistance_ - eachSpacing + opts.area[3];
  29201. rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;
  29202. }
  29203. series.forEach(function (eachSeries, seriesIndex) {
  29204. var ranges, minRange, maxRange;
  29205. ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
  29206. minRange = ranges.pop();
  29207. maxRange = ranges.shift();
  29208. var data = eachSeries.data;
  29209. var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
  29210. calPoints.push(points);
  29211. var splitPointList = splitPoints(points);
  29212. if (eachSeries.lineType == 'dash') {
  29213. var dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;
  29214. dashLength *= opts.pixelRatio;
  29215. context.setLineDash([dashLength, dashLength]);
  29216. }
  29217. context.beginPath();
  29218. context.setStrokeStyle(eachSeries.color);
  29219. context.setLineWidth(lineOption.width);
  29220. splitPointList.forEach(function (points, index) {
  29221. if (points.length === 1) {
  29222. context.moveTo(points[0].x, points[0].y);
  29223. context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);
  29224. } else {
  29225. context.moveTo(points[0].x, points[0].y);
  29226. var startPoint = 0;
  29227. if (lineOption.type === 'curve') {
  29228. for (var j = 0; j < points.length; j++) {
  29229. var item = points[j];
  29230. if (startPoint == 0 && item.x > leftSpace) {
  29231. context.moveTo(item.x, item.y);
  29232. startPoint = 1;
  29233. }
  29234. if (j > 0 && item.x > leftSpace && item.x < rightSpace) {
  29235. var ctrlPoint = createCurveControlPoints(points, j - 1);
  29236. context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);
  29237. }
  29238. };
  29239. } else {
  29240. for (var _j4 = 0; _j4 < points.length; _j4++) {
  29241. var _item14 = points[_j4];
  29242. if (startPoint == 0 && _item14.x > leftSpace) {
  29243. context.moveTo(_item14.x, _item14.y);
  29244. startPoint = 1;
  29245. }
  29246. if (_j4 > 0 && _item14.x > leftSpace && _item14.x < rightSpace) {
  29247. context.lineTo(_item14.x, _item14.y);
  29248. }
  29249. };
  29250. }
  29251. context.moveTo(points[0].x, points[0].y);
  29252. }
  29253. });
  29254. context.stroke();
  29255. context.setLineDash([]);
  29256. if (opts.dataPointShape !== false) {
  29257. drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);
  29258. }
  29259. });
  29260. if (opts.dataLabel !== false && process === 1) {
  29261. series.forEach(function (eachSeries, seriesIndex) {
  29262. var ranges, minRange, maxRange;
  29263. ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
  29264. minRange = ranges.pop();
  29265. maxRange = ranges.shift();
  29266. var data = eachSeries.data;
  29267. var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
  29268. drawPointText(points, eachSeries, config, context);
  29269. });
  29270. }
  29271. context.restore();
  29272. return {
  29273. xAxisPoints: xAxisPoints,
  29274. calPoints: calPoints,
  29275. eachSpacing: eachSpacing };
  29276. }
  29277. function drawMixDataPoints(series, opts, config, context) {
  29278. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  29279. var xAxisData = opts.chartData.xAxisData,
  29280. xAxisPoints = xAxisData.xAxisPoints,
  29281. eachSpacing = xAxisData.eachSpacing;
  29282. var endY = opts.height - opts.area[2];
  29283. var calPoints = [];
  29284. var columnIndex = 0;
  29285. var columnLength = 0;
  29286. series.forEach(function (eachSeries, seriesIndex) {
  29287. if (eachSeries.type == 'column') {
  29288. columnLength += 1;
  29289. }
  29290. });
  29291. context.save();
  29292. var leftNum = -2;
  29293. var rightNum = xAxisPoints.length + 2;
  29294. var leftSpace = 0;
  29295. var rightSpace = opts.width + eachSpacing;
  29296. if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
  29297. context.translate(opts._scrollDistance_, 0);
  29298. leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;
  29299. rightNum = leftNum + opts.xAxis.itemCount + 4;
  29300. leftSpace = -opts._scrollDistance_ - eachSpacing + opts.area[3];
  29301. rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;
  29302. }
  29303. series.forEach(function (eachSeries, seriesIndex) {
  29304. var ranges, minRange, maxRange;
  29305. ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
  29306. minRange = ranges.pop();
  29307. maxRange = ranges.shift();
  29308. var data = eachSeries.data;
  29309. var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
  29310. calPoints.push(points);
  29311. // 绘制柱状数据图
  29312. if (eachSeries.type == 'column') {
  29313. points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts);
  29314. for (var i = 0; i < points.length; i++) {
  29315. var item = points[i];
  29316. if (item !== null && i > leftNum && i < rightNum) {
  29317. context.beginPath();
  29318. context.setStrokeStyle(item.color || eachSeries.color);
  29319. context.setLineWidth(1);
  29320. context.setFillStyle(item.color || eachSeries.color);
  29321. var startX = item.x - item.width / 2;
  29322. var height = opts.height - item.y - opts.area[2];
  29323. context.moveTo(startX, item.y);
  29324. context.moveTo(startX, item.y);
  29325. context.lineTo(startX + item.width - 2, item.y);
  29326. context.lineTo(startX + item.width - 2, opts.height - opts.area[2]);
  29327. context.lineTo(startX, opts.height - opts.area[2]);
  29328. context.lineTo(startX, item.y);
  29329. context.closePath();
  29330. context.stroke();
  29331. context.fill();
  29332. context.closePath();
  29333. context.fill();
  29334. }
  29335. }
  29336. columnIndex += 1;
  29337. }
  29338. //绘制区域图数据
  29339. if (eachSeries.type == 'area') {
  29340. var _splitPointList = splitPoints(points);
  29341. for (var _i17 = 0; _i17 < _splitPointList.length; _i17++) {
  29342. var _points3 = _splitPointList[_i17];
  29343. // 绘制区域数据
  29344. context.beginPath();
  29345. context.setStrokeStyle(eachSeries.color);
  29346. context.setFillStyle(hexToRgb(eachSeries.color, 0.2));
  29347. context.setLineWidth(2 * opts.pixelRatio);
  29348. if (_points3.length > 1) {
  29349. var firstPoint = _points3[0];
  29350. var lastPoint = _points3[_points3.length - 1];
  29351. context.moveTo(firstPoint.x, firstPoint.y);
  29352. var startPoint = 0;
  29353. if (eachSeries.style === 'curve') {
  29354. for (var j = 0; j < _points3.length; j++) {
  29355. var _item15 = _points3[j];
  29356. if (startPoint == 0 && _item15.x > leftSpace) {
  29357. context.moveTo(_item15.x, _item15.y);
  29358. startPoint = 1;
  29359. }
  29360. if (j > 0 && _item15.x > leftSpace && _item15.x < rightSpace) {
  29361. var ctrlPoint = createCurveControlPoints(_points3, j - 1);
  29362. context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, _item15.x, _item15.y);
  29363. }
  29364. };
  29365. } else {
  29366. for (var _j5 = 0; _j5 < _points3.length; _j5++) {
  29367. var _item16 = _points3[_j5];
  29368. if (startPoint == 0 && _item16.x > leftSpace) {
  29369. context.moveTo(_item16.x, _item16.y);
  29370. startPoint = 1;
  29371. }
  29372. if (_j5 > 0 && _item16.x > leftSpace && _item16.x < rightSpace) {
  29373. context.lineTo(_item16.x, _item16.y);
  29374. }
  29375. };
  29376. }
  29377. context.lineTo(lastPoint.x, endY);
  29378. context.lineTo(firstPoint.x, endY);
  29379. context.lineTo(firstPoint.x, firstPoint.y);
  29380. } else {
  29381. var _item17 = _points3[0];
  29382. context.moveTo(_item17.x - eachSpacing / 2, _item17.y);
  29383. context.lineTo(_item17.x + eachSpacing / 2, _item17.y);
  29384. context.lineTo(_item17.x + eachSpacing / 2, endY);
  29385. context.lineTo(_item17.x - eachSpacing / 2, endY);
  29386. context.moveTo(_item17.x - eachSpacing / 2, _item17.y);
  29387. }
  29388. context.closePath();
  29389. context.fill();
  29390. }
  29391. }
  29392. // 绘制折线数据图
  29393. if (eachSeries.type == 'line') {
  29394. var splitPointList = splitPoints(points);
  29395. splitPointList.forEach(function (points, index) {
  29396. if (eachSeries.lineType == 'dash') {
  29397. var dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;
  29398. dashLength *= opts.pixelRatio;
  29399. context.setLineDash([dashLength, dashLength]);
  29400. }
  29401. context.beginPath();
  29402. context.setStrokeStyle(eachSeries.color);
  29403. context.setLineWidth(2 * opts.pixelRatio);
  29404. if (points.length === 1) {
  29405. context.moveTo(points[0].x, points[0].y);
  29406. context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);
  29407. } else {
  29408. context.moveTo(points[0].x, points[0].y);
  29409. var _startPoint2 = 0;
  29410. if (eachSeries.style == 'curve') {
  29411. for (var _j6 = 0; _j6 < points.length; _j6++) {
  29412. var _item18 = points[_j6];
  29413. if (_startPoint2 == 0 && _item18.x > leftSpace) {
  29414. context.moveTo(_item18.x, _item18.y);
  29415. _startPoint2 = 1;
  29416. }
  29417. if (_j6 > 0 && _item18.x > leftSpace && _item18.x < rightSpace) {
  29418. var ctrlPoint = createCurveControlPoints(points, _j6 - 1);
  29419. context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, _item18.x, _item18.y);
  29420. }
  29421. }
  29422. } else {
  29423. for (var _j7 = 0; _j7 < points.length; _j7++) {
  29424. var _item19 = points[_j7];
  29425. if (_startPoint2 == 0 && _item19.x > leftSpace) {
  29426. context.moveTo(_item19.x, _item19.y);
  29427. _startPoint2 = 1;
  29428. }
  29429. if (_j7 > 0 && _item19.x > leftSpace && _item19.x < rightSpace) {
  29430. context.lineTo(_item19.x, _item19.y);
  29431. }
  29432. }
  29433. }
  29434. context.moveTo(points[0].x, points[0].y);
  29435. }
  29436. context.stroke();
  29437. context.setLineDash([]);
  29438. });
  29439. }
  29440. // 绘制点数据图
  29441. if (eachSeries.type == 'point') {
  29442. eachSeries.addPoint = true;
  29443. }
  29444. if (eachSeries.addPoint == true && eachSeries.type !== 'column') {
  29445. drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);
  29446. }
  29447. });
  29448. if (opts.dataLabel !== false && process === 1) {
  29449. var columnIndex = 0;
  29450. series.forEach(function (eachSeries, seriesIndex) {
  29451. var ranges, minRange, maxRange;
  29452. ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
  29453. minRange = ranges.pop();
  29454. maxRange = ranges.shift();
  29455. var data = eachSeries.data;
  29456. var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
  29457. if (eachSeries.type !== 'column') {
  29458. drawPointText(points, eachSeries, config, context);
  29459. } else {
  29460. points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts);
  29461. drawPointText(points, eachSeries, config, context);
  29462. columnIndex += 1;
  29463. }
  29464. });
  29465. }
  29466. context.restore();
  29467. return {
  29468. xAxisPoints: xAxisPoints,
  29469. calPoints: calPoints,
  29470. eachSpacing: eachSpacing };
  29471. }
  29472. function drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints) {
  29473. var toolTipOption = opts.extra.tooltip || {};
  29474. if (toolTipOption.horizentalLine && opts.tooltip && process === 1 && (opts.type == 'line' || opts.type == 'area' || opts.type == 'column' || opts.type == 'candle' || opts.type == 'mix')) {
  29475. drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints);
  29476. }
  29477. context.save();
  29478. if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
  29479. context.translate(opts._scrollDistance_, 0);
  29480. }
  29481. if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {
  29482. drawToolTip(opts.tooltip.textList, opts.tooltip.offset, opts, config, context, eachSpacing, xAxisPoints);
  29483. }
  29484. context.restore();
  29485. }
  29486. function drawXAxis(categories, opts, config, context) {
  29487. var xAxisData = opts.chartData.xAxisData,
  29488. xAxisPoints = xAxisData.xAxisPoints,
  29489. startX = xAxisData.startX,
  29490. endX = xAxisData.endX,
  29491. eachSpacing = xAxisData.eachSpacing;
  29492. var boundaryGap = 'center';
  29493. if (opts.type == 'line' || opts.type == 'area') {
  29494. boundaryGap = opts.xAxis.boundaryGap;
  29495. }
  29496. var startY = opts.height - opts.area[2];
  29497. var endY = opts.area[0];
  29498. //绘制滚动条
  29499. if (opts.enableScroll && opts.xAxis.scrollShow) {
  29500. var scrollY = opts.height - opts.area[2] + config.xAxisHeight;
  29501. var scrollScreenWidth = endX - startX;
  29502. var scrollTotalWidth = eachSpacing * (xAxisPoints.length - 1);
  29503. var scrollWidth = scrollScreenWidth * scrollScreenWidth / scrollTotalWidth;
  29504. var scrollLeft = 0;
  29505. if (opts._scrollDistance_) {
  29506. scrollLeft = -opts._scrollDistance_ * scrollScreenWidth / scrollTotalWidth;
  29507. }
  29508. context.beginPath();
  29509. context.setLineCap('round');
  29510. context.setLineWidth(6 * opts.pixelRatio);
  29511. context.setStrokeStyle(opts.xAxis.scrollBackgroundColor || "#EFEBEF");
  29512. context.moveTo(startX, scrollY);
  29513. context.lineTo(endX, scrollY);
  29514. context.stroke();
  29515. context.closePath();
  29516. context.beginPath();
  29517. context.setLineCap('round');
  29518. context.setLineWidth(6 * opts.pixelRatio);
  29519. context.setStrokeStyle(opts.xAxis.scrollColor || "#A6A6A6");
  29520. context.moveTo(startX + scrollLeft, scrollY);
  29521. context.lineTo(startX + scrollLeft + scrollWidth, scrollY);
  29522. context.stroke();
  29523. context.closePath();
  29524. context.setLineCap('butt');
  29525. }
  29526. context.save();
  29527. if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) {
  29528. context.translate(opts._scrollDistance_, 0);
  29529. }
  29530. //绘制X轴刻度线
  29531. if (opts.xAxis.calibration === true) {
  29532. context.setStrokeStyle(opts.xAxis.gridColor || "#cccccc");
  29533. context.setLineCap('butt');
  29534. context.setLineWidth(1 * opts.pixelRatio);
  29535. xAxisPoints.forEach(function (item, index) {
  29536. if (index > 0) {
  29537. context.beginPath();
  29538. context.moveTo(item - eachSpacing / 2, startY);
  29539. context.lineTo(item - eachSpacing / 2, startY + 3 * opts.pixelRatio);
  29540. context.closePath();
  29541. context.stroke();
  29542. }
  29543. });
  29544. }
  29545. //绘制X轴网格
  29546. if (opts.xAxis.disableGrid !== true) {
  29547. context.setStrokeStyle(opts.xAxis.gridColor || "#cccccc");
  29548. context.setLineCap('butt');
  29549. context.setLineWidth(1 * opts.pixelRatio);
  29550. if (opts.xAxis.gridType == 'dash') {
  29551. context.setLineDash([opts.xAxis.dashLength, opts.xAxis.dashLength]);
  29552. }
  29553. opts.xAxis.gridEval = opts.xAxis.gridEval || 1;
  29554. xAxisPoints.forEach(function (item, index) {
  29555. if (index % opts.xAxis.gridEval == 0) {
  29556. context.beginPath();
  29557. context.moveTo(item, startY);
  29558. context.lineTo(item, endY);
  29559. context.stroke();
  29560. }
  29561. });
  29562. context.setLineDash([]);
  29563. }
  29564. //绘制X轴文案
  29565. if (opts.xAxis.disabled !== true) {
  29566. // 对X轴列表做抽稀处理
  29567. //默认全部显示X轴标签
  29568. var maxXAxisListLength = categories.length;
  29569. //如果设置了X轴单屏数量
  29570. if (opts.xAxis.labelCount) {
  29571. //如果设置X轴密度
  29572. if (opts.xAxis.itemCount) {
  29573. maxXAxisListLength = Math.ceil(categories.length / opts.xAxis.itemCount * opts.xAxis.labelCount);
  29574. } else {
  29575. maxXAxisListLength = opts.xAxis.labelCount;
  29576. }
  29577. maxXAxisListLength -= 1;
  29578. }
  29579. var ratio = Math.ceil(categories.length / maxXAxisListLength);
  29580. var newCategories = [];
  29581. var cgLength = categories.length;
  29582. for (var i = 0; i < cgLength; i++) {
  29583. if (i % ratio !== 0) {
  29584. newCategories.push("");
  29585. } else {
  29586. newCategories.push(categories[i]);
  29587. }
  29588. }
  29589. newCategories[cgLength - 1] = categories[cgLength - 1];
  29590. var xAxisFontSize = opts.xAxis.fontSize || config.fontSize;
  29591. if (config._xAxisTextAngle_ === 0) {
  29592. newCategories.forEach(function (item, index) {
  29593. var offset = -measureText(String(item), xAxisFontSize) / 2;
  29594. if (boundaryGap == 'center') {
  29595. offset += eachSpacing / 2;
  29596. }
  29597. var scrollHeight = 0;
  29598. if (opts.xAxis.scrollShow) {
  29599. scrollHeight = 6 * opts.pixelRatio;
  29600. }
  29601. context.beginPath();
  29602. context.setFontSize(xAxisFontSize);
  29603. context.setFillStyle(opts.xAxis.fontColor || '#666666');
  29604. context.fillText(String(item), xAxisPoints[index] + offset, startY + xAxisFontSize + (config.xAxisHeight - scrollHeight - xAxisFontSize) / 2);
  29605. context.closePath();
  29606. context.stroke();
  29607. });
  29608. } else {
  29609. newCategories.forEach(function (item, index) {
  29610. context.save();
  29611. context.beginPath();
  29612. context.setFontSize(xAxisFontSize);
  29613. context.setFillStyle(opts.xAxis.fontColor || '#666666');
  29614. var textWidth = measureText(String(item), xAxisFontSize);
  29615. var offset = -textWidth;
  29616. if (boundaryGap == 'center') {
  29617. offset += eachSpacing / 2;
  29618. }
  29619. var _calRotateTranslate = calRotateTranslate(xAxisPoints[index] + eachSpacing / 2, startY + xAxisFontSize / 2 + 5, opts.height),
  29620. transX = _calRotateTranslate.transX,
  29621. transY = _calRotateTranslate.transY;
  29622. context.rotate(-1 * config._xAxisTextAngle_);
  29623. context.translate(transX, transY);
  29624. context.fillText(String(item), xAxisPoints[index] + offset, startY + xAxisFontSize + 5);
  29625. context.closePath();
  29626. context.stroke();
  29627. context.restore();
  29628. });
  29629. }
  29630. }
  29631. context.restore();
  29632. //绘制X轴轴线
  29633. if (opts.xAxis.axisLine) {
  29634. context.beginPath();
  29635. context.setStrokeStyle(opts.xAxis.axisLineColor);
  29636. context.setLineWidth(1 * opts.pixelRatio);
  29637. context.moveTo(startX, opts.height - opts.area[2]);
  29638. context.lineTo(endX, opts.height - opts.area[2]);
  29639. context.stroke();
  29640. }
  29641. }
  29642. function drawYAxisGrid(categories, opts, config, context) {
  29643. if (opts.yAxis.disableGrid === true) {
  29644. return;
  29645. }
  29646. var spacingValid = opts.height - opts.area[0] - opts.area[2];
  29647. var eachSpacing = spacingValid / opts.yAxis.splitNumber;
  29648. var startX = opts.area[3];
  29649. var xAxisPoints = opts.chartData.xAxisData.xAxisPoints,
  29650. xAxiseachSpacing = opts.chartData.xAxisData.eachSpacing;
  29651. var TotalWidth = xAxiseachSpacing * (xAxisPoints.length - 1);
  29652. var endX = startX + TotalWidth;
  29653. var points = [];
  29654. for (var i = 0; i < opts.yAxis.splitNumber + 1; i++) {
  29655. points.push(opts.height - opts.area[2] - eachSpacing * i);
  29656. }
  29657. context.save();
  29658. if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) {
  29659. context.translate(opts._scrollDistance_, 0);
  29660. }
  29661. if (opts.yAxis.gridType == 'dash') {
  29662. context.setLineDash([opts.yAxis.dashLength, opts.yAxis.dashLength]);
  29663. }
  29664. context.setStrokeStyle(opts.yAxis.gridColor);
  29665. context.setLineWidth(1 * opts.pixelRatio);
  29666. points.forEach(function (item, index) {
  29667. context.beginPath();
  29668. context.moveTo(startX, item);
  29669. context.lineTo(endX, item);
  29670. context.stroke();
  29671. });
  29672. context.setLineDash([]);
  29673. context.restore();
  29674. }
  29675. function drawYAxis(series, opts, config, context) {
  29676. if (opts.yAxis.disabled === true) {
  29677. return;
  29678. }
  29679. var spacingValid = opts.height - opts.area[0] - opts.area[2];
  29680. var eachSpacing = spacingValid / opts.yAxis.splitNumber;
  29681. var startX = opts.area[3];
  29682. var endX = opts.width - opts.area[1];
  29683. var endY = opts.height - opts.area[2];
  29684. var fillEndY = endY + config.xAxisHeight;
  29685. if (opts.xAxis.scrollShow) {
  29686. fillEndY -= 3 * opts.pixelRatio;
  29687. }
  29688. if (opts.xAxis.rotateLabel) {
  29689. fillEndY = opts.height - opts.area[2] + 3;
  29690. }
  29691. // set YAxis background
  29692. context.beginPath();
  29693. context.setFillStyle(opts.background || '#ffffff');
  29694. if (opts._scrollDistance_ < 0) {
  29695. context.fillRect(0, 0, startX, fillEndY);
  29696. }
  29697. if (opts.enableScroll == true) {
  29698. context.fillRect(endX, 0, opts.width, fillEndY);
  29699. }
  29700. context.closePath();
  29701. context.stroke();
  29702. var points = [];
  29703. for (var i = 0; i <= opts.yAxis.splitNumber; i++) {
  29704. points.push(opts.area[0] + eachSpacing * i);
  29705. }
  29706. var tStartLeft = opts.area[3];
  29707. var tStartRight = opts.width - opts.area[1];var _loop4 = function _loop4(
  29708. _i18) {
  29709. var yData = opts.yAxis.data[_i18];
  29710. if (yData.disabled !== true) {
  29711. var rangesFormat = opts.chartData.yAxisData.rangesFormat[_i18];
  29712. var yAxisFontSize = yData.fontSize || config.fontSize;
  29713. var yAxisWidth = opts.chartData.yAxisData.yAxisWidth[_i18];
  29714. //画Y轴刻度及文案
  29715. rangesFormat.forEach(function (item, index) {
  29716. var pos = points[index] ? points[index] : endY;
  29717. context.beginPath();
  29718. context.setFontSize(yAxisFontSize);
  29719. context.setLineWidth(1 * opts.pixelRatio);
  29720. context.setStrokeStyle(yData.axisLineColor || '#cccccc');
  29721. context.setFillStyle(yData.fontColor || '#666666');
  29722. if (yAxisWidth.position == 'left') {
  29723. context.fillText(String(item), tStartLeft - yAxisWidth.width, pos + yAxisFontSize / 2);
  29724. //画刻度线
  29725. if (yData.calibration == true) {
  29726. context.moveTo(tStartLeft, pos);
  29727. context.lineTo(tStartLeft - 3 * opts.pixelRatio, pos);
  29728. }
  29729. } else {
  29730. context.fillText(String(item), tStartRight + 4 * opts.pixelRatio, pos + yAxisFontSize / 2);
  29731. //画刻度线
  29732. if (yData.calibration == true) {
  29733. context.moveTo(tStartRight, pos);
  29734. context.lineTo(tStartRight + 3 * opts.pixelRatio, pos);
  29735. }
  29736. }
  29737. context.closePath();
  29738. context.stroke();
  29739. });
  29740. //画Y轴轴线
  29741. if (yData.axisLine !== false) {
  29742. context.beginPath();
  29743. context.setStrokeStyle(yData.axisLineColor || '#cccccc');
  29744. context.setLineWidth(1 * opts.pixelRatio);
  29745. if (yAxisWidth.position == 'left') {
  29746. context.moveTo(tStartLeft, opts.height - opts.area[2]);
  29747. context.lineTo(tStartLeft, opts.area[0]);
  29748. } else {
  29749. context.moveTo(tStartRight, opts.height - opts.area[2]);
  29750. context.lineTo(tStartRight, opts.area[0]);
  29751. }
  29752. context.stroke();
  29753. }
  29754. //画Y轴标题
  29755. if (opts.yAxis.showTitle) {
  29756. var titleFontSize = yData.titleFontSize || config.fontSize;
  29757. var title = yData.title;
  29758. context.beginPath();
  29759. context.setFontSize(titleFontSize);
  29760. context.setFillStyle(yData.titleFontColor || '#666666');
  29761. if (yAxisWidth.position == 'left') {
  29762. context.fillText(title, tStartLeft - measureText(title, titleFontSize) / 2, opts.area[0] - 10 * opts.pixelRatio);
  29763. } else {
  29764. context.fillText(title, tStartRight - measureText(title, titleFontSize) / 2, opts.area[0] - 10 * opts.pixelRatio);
  29765. }
  29766. context.closePath();
  29767. context.stroke();
  29768. }
  29769. if (yAxisWidth.position == 'left') {
  29770. tStartLeft -= yAxisWidth.width + opts.yAxis.padding;
  29771. } else {
  29772. tStartRight += yAxisWidth.width + opts.yAxis.padding;
  29773. }
  29774. }};for (var _i18 = 0; _i18 < opts.yAxis.data.length; _i18++) {_loop4(_i18);
  29775. }
  29776. }
  29777. function drawLegend(series, opts, config, context, chartData) {
  29778. if (opts.legend.show === false) {
  29779. return;
  29780. }
  29781. var legendData = chartData.legendData;
  29782. var legendList = legendData.points;
  29783. var legendArea = legendData.area;
  29784. var padding = opts.legend.padding;
  29785. var fontSize = opts.legend.fontSize;
  29786. var shapeWidth = 15 * opts.pixelRatio;
  29787. var shapeRight = 5 * opts.pixelRatio;
  29788. var itemGap = opts.legend.itemGap;
  29789. var lineHeight = Math.max(opts.legend.lineHeight * opts.pixelRatio, fontSize);
  29790. //画背景及边框
  29791. context.beginPath();
  29792. context.setLineWidth(opts.legend.borderWidth);
  29793. context.setStrokeStyle(opts.legend.borderColor);
  29794. context.setFillStyle(opts.legend.backgroundColor);
  29795. context.moveTo(legendArea.start.x, legendArea.start.y);
  29796. context.rect(legendArea.start.x, legendArea.start.y, legendArea.width, legendArea.height);
  29797. context.closePath();
  29798. context.fill();
  29799. context.stroke();
  29800. legendList.forEach(function (itemList, listIndex) {
  29801. var width = 0;
  29802. var height = 0;
  29803. width = legendData.widthArr[listIndex];
  29804. height = legendData.heightArr[listIndex];
  29805. var startX = 0;
  29806. var startY = 0;
  29807. if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {
  29808. startX = legendArea.start.x + (legendArea.width - width) / 2;
  29809. startY = legendArea.start.y + padding + listIndex * lineHeight;
  29810. } else {
  29811. if (listIndex == 0) {
  29812. width = 0;
  29813. } else {
  29814. width = legendData.widthArr[listIndex - 1];
  29815. }
  29816. startX = legendArea.start.x + padding + width;
  29817. startY = legendArea.start.y + padding + (legendArea.height - height) / 2;
  29818. }
  29819. context.setFontSize(config.fontSize);
  29820. for (var i = 0; i < itemList.length; i++) {
  29821. var item = itemList[i];
  29822. item.area = [0, 0, 0, 0];
  29823. item.area[0] = startX;
  29824. item.area[1] = startY;
  29825. item.area[3] = startY + lineHeight;
  29826. context.beginPath();
  29827. context.setLineWidth(1 * opts.pixelRatio);
  29828. context.setStrokeStyle(item.show ? item.color : opts.legend.hiddenColor);
  29829. context.setFillStyle(item.show ? item.color : opts.legend.hiddenColor);
  29830. switch (item.legendShape) {
  29831. case 'line':
  29832. context.moveTo(startX, startY + 0.5 * lineHeight - 2 * opts.pixelRatio);
  29833. context.fillRect(startX, startY + 0.5 * lineHeight - 2 * opts.pixelRatio, 15 * opts.pixelRatio, 4 * opts.pixelRatio);
  29834. break;
  29835. case 'triangle':
  29836. context.moveTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight - 5 * opts.pixelRatio);
  29837. context.lineTo(startX + 2.5 * opts.pixelRatio, startY + 0.5 * lineHeight + 5 * opts.pixelRatio);
  29838. context.lineTo(startX + 12.5 * opts.pixelRatio, startY + 0.5 * lineHeight + 5 * opts.pixelRatio);
  29839. context.lineTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight - 5 * opts.pixelRatio);
  29840. break;
  29841. case 'diamond':
  29842. context.moveTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight - 5 * opts.pixelRatio);
  29843. context.lineTo(startX + 2.5 * opts.pixelRatio, startY + 0.5 * lineHeight);
  29844. context.lineTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight + 5 * opts.pixelRatio);
  29845. context.lineTo(startX + 12.5 * opts.pixelRatio, startY + 0.5 * lineHeight);
  29846. context.lineTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight - 5 * opts.pixelRatio);
  29847. break;
  29848. case 'circle':
  29849. context.moveTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight);
  29850. context.arc(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight, 5 * opts.pixelRatio, 0, 2 * Math.PI);
  29851. break;
  29852. case 'rect':
  29853. context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pixelRatio);
  29854. context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pixelRatio, 15 * opts.pixelRatio, 10 * opts.pixelRatio);
  29855. break;
  29856. default:
  29857. context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pixelRatio);
  29858. context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pixelRatio, 15 * opts.pixelRatio, 10 * opts.pixelRatio);}
  29859. context.closePath();
  29860. context.fill();
  29861. context.stroke();
  29862. startX += shapeWidth + shapeRight;
  29863. var fontTrans = 0.5 * lineHeight + 0.5 * fontSize - 2;
  29864. context.beginPath();
  29865. context.setFontSize(fontSize);
  29866. context.setFillStyle(item.show ? opts.legend.fontColor : opts.legend.hiddenColor);
  29867. context.fillText(item.name, startX, startY + fontTrans);
  29868. context.closePath();
  29869. context.stroke();
  29870. if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {
  29871. startX += measureText(item.name, fontSize) + itemGap;
  29872. item.area[2] = startX;
  29873. } else {
  29874. item.area[2] = startX + measureText(item.name, fontSize) + itemGap;;
  29875. startX -= shapeWidth + shapeRight;
  29876. startY += lineHeight;
  29877. }
  29878. }
  29879. });
  29880. }
  29881. function drawPieDataPoints(series, opts, config, context) {
  29882. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  29883. var pieOption = assign({}, {
  29884. activeOpacity: 0.5,
  29885. activeRadius: 10 * opts.pixelRatio,
  29886. offsetAngle: 0,
  29887. labelWidth: 15 * opts.pixelRatio,
  29888. ringWidth: 0,
  29889. border: false,
  29890. borderWidth: 2,
  29891. borderColor: '#FFFFFF' },
  29892. opts.extra.pie);
  29893. var centerPosition = {
  29894. x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,
  29895. y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 };
  29896. if (config.pieChartLinePadding == 0) {
  29897. config.pieChartLinePadding = pieOption.activeRadius;
  29898. }
  29899. var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding);
  29900. series = getPieDataPoints(series, radius, process);
  29901. var activeRadius = pieOption.activeRadius;
  29902. series = series.map(function (eachSeries) {
  29903. eachSeries._start_ += pieOption.offsetAngle * Math.PI / 180;
  29904. return eachSeries;
  29905. });
  29906. series.forEach(function (eachSeries, seriesIndex) {
  29907. if (opts.tooltip) {
  29908. if (opts.tooltip.index == seriesIndex) {
  29909. context.beginPath();
  29910. context.setFillStyle(hexToRgb(eachSeries.color, opts.extra.pie.activeOpacity || 0.5));
  29911. context.moveTo(centerPosition.x, centerPosition.y);
  29912. context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_ + activeRadius, eachSeries._start_,
  29913. eachSeries._start_ + 2 *
  29914. eachSeries._proportion_ * Math.PI);
  29915. context.closePath();
  29916. context.fill();
  29917. }
  29918. }
  29919. context.beginPath();
  29920. context.setLineWidth(pieOption.borderWidth * opts.pixelRatio);
  29921. context.lineJoin = "round";
  29922. context.setStrokeStyle(pieOption.borderColor);
  29923. context.setFillStyle(eachSeries.color);
  29924. context.moveTo(centerPosition.x, centerPosition.y);
  29925. context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI);
  29926. context.closePath();
  29927. context.fill();
  29928. if (pieOption.border == true) {
  29929. context.stroke();
  29930. }
  29931. });
  29932. if (opts.type === 'ring') {
  29933. var innerPieWidth = radius * 0.6;
  29934. if (typeof opts.extra.pie.ringWidth === 'number' && opts.extra.pie.ringWidth > 0) {
  29935. innerPieWidth = Math.max(0, radius - opts.extra.pie.ringWidth);
  29936. }
  29937. context.beginPath();
  29938. context.setFillStyle(opts.background || '#ffffff');
  29939. context.moveTo(centerPosition.x, centerPosition.y);
  29940. context.arc(centerPosition.x, centerPosition.y, innerPieWidth, 0, 2 * Math.PI);
  29941. context.closePath();
  29942. context.fill();
  29943. }
  29944. if (opts.dataLabel !== false && process === 1) {
  29945. var valid = false;
  29946. for (var i = 0, len = series.length; i < len; i++) {
  29947. if (series[i].data > 0) {
  29948. valid = true;
  29949. break;
  29950. }
  29951. }
  29952. if (valid) {
  29953. drawPieText(series, opts, config, context, radius, centerPosition);
  29954. }
  29955. }
  29956. if (process === 1 && opts.type === 'ring') {
  29957. drawRingTitle(opts, config, context, centerPosition);
  29958. }
  29959. return {
  29960. center: centerPosition,
  29961. radius: radius,
  29962. series: series };
  29963. }
  29964. function drawRoseDataPoints(series, opts, config, context) {
  29965. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  29966. var roseOption = assign({}, {
  29967. type: 'area',
  29968. activeOpacity: 0.5,
  29969. activeRadius: 10 * opts.pixelRatio,
  29970. offsetAngle: 0,
  29971. labelWidth: 15 * opts.pixelRatio,
  29972. border: false,
  29973. borderWidth: 2,
  29974. borderColor: '#FFFFFF' },
  29975. opts.extra.rose);
  29976. if (config.pieChartLinePadding == 0) {
  29977. config.pieChartLinePadding = roseOption.activeRadius;
  29978. }
  29979. var centerPosition = {
  29980. x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,
  29981. y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 };
  29982. var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding);
  29983. var minRadius = roseOption.minRadius || radius * 0.5;
  29984. series = getRoseDataPoints(series, roseOption.type, minRadius, radius, process);
  29985. var activeRadius = roseOption.activeRadius;
  29986. series = series.map(function (eachSeries) {
  29987. eachSeries._start_ += (roseOption.offsetAngle || 0) * Math.PI / 180;
  29988. return eachSeries;
  29989. });
  29990. series.forEach(function (eachSeries, seriesIndex) {
  29991. if (opts.tooltip) {
  29992. if (opts.tooltip.index == seriesIndex) {
  29993. context.beginPath();
  29994. context.setFillStyle(hexToRgb(eachSeries.color, roseOption.activeOpacity || 0.5));
  29995. context.moveTo(centerPosition.x, centerPosition.y);
  29996. context.arc(centerPosition.x, centerPosition.y, activeRadius + eachSeries._radius_, eachSeries._start_,
  29997. eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI);
  29998. context.closePath();
  29999. context.fill();
  30000. }
  30001. }
  30002. context.beginPath();
  30003. context.setLineWidth(roseOption.borderWidth * opts.pixelRatio);
  30004. context.lineJoin = "round";
  30005. context.setStrokeStyle(roseOption.borderColor);
  30006. context.setFillStyle(eachSeries.color);
  30007. context.moveTo(centerPosition.x, centerPosition.y);
  30008. context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 *
  30009. eachSeries._rose_proportion_ * Math.PI);
  30010. context.closePath();
  30011. context.fill();
  30012. if (roseOption.border == true) {
  30013. context.stroke();
  30014. }
  30015. });
  30016. if (opts.dataLabel !== false && process === 1) {
  30017. var valid = false;
  30018. for (var i = 0, len = series.length; i < len; i++) {
  30019. if (series[i].data > 0) {
  30020. valid = true;
  30021. break;
  30022. }
  30023. }
  30024. if (valid) {
  30025. drawPieText(series, opts, config, context, radius, centerPosition);
  30026. }
  30027. }
  30028. return {
  30029. center: centerPosition,
  30030. radius: radius,
  30031. series: series };
  30032. }
  30033. function drawArcbarDataPoints(series, opts, config, context) {
  30034. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  30035. var arcbarOption = assign({}, {
  30036. startAngle: 0.75,
  30037. endAngle: 0.25,
  30038. type: 'default',
  30039. width: 12 * opts.pixelRatio,
  30040. gap: 2 * opts.pixelRatio },
  30041. opts.extra.arcbar);
  30042. series = getArcbarDataPoints(series, arcbarOption, process);
  30043. var centerPosition;
  30044. if (arcbarOption.center) {
  30045. centerPosition = arcbarOption.center;
  30046. } else {
  30047. centerPosition = {
  30048. x: opts.width / 2,
  30049. y: opts.height / 2 };
  30050. }
  30051. var radius;
  30052. if (arcbarOption.radius) {
  30053. radius = arcbarOption.radius;
  30054. } else {
  30055. radius = Math.min(centerPosition.x, centerPosition.y);
  30056. radius -= 5 * opts.pixelRatio;
  30057. radius -= arcbarOption.width / 2;
  30058. }
  30059. for (var i = 0; i < series.length; i++) {
  30060. var eachSeries = series[i];
  30061. //背景颜色
  30062. context.setLineWidth(arcbarOption.width);
  30063. context.setStrokeStyle(arcbarOption.backgroundColor || '#E9E9E9');
  30064. context.setLineCap('round');
  30065. context.beginPath();
  30066. if (arcbarOption.type == 'default') {
  30067. context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width + arcbarOption.gap) * i, arcbarOption.startAngle * Math.PI, arcbarOption.endAngle * Math.PI, false);
  30068. } else {
  30069. context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width + arcbarOption.gap) * i, 0, 2 * Math.PI, false);
  30070. }
  30071. context.stroke();
  30072. //进度条
  30073. context.setLineWidth(arcbarOption.width);
  30074. context.setStrokeStyle(eachSeries.color);
  30075. context.setLineCap('round');
  30076. context.beginPath();
  30077. context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width + arcbarOption.gap) * i, arcbarOption.startAngle * Math.PI, eachSeries._proportion_ * Math.PI, false);
  30078. context.stroke();
  30079. }
  30080. drawRingTitle(opts, config, context, centerPosition);
  30081. return {
  30082. center: centerPosition,
  30083. radius: radius,
  30084. series: series };
  30085. }
  30086. function drawGaugeDataPoints(categories, series, opts, config, context) {
  30087. var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
  30088. var gaugeOption = assign({}, {
  30089. type: 'default',
  30090. startAngle: 0.75,
  30091. endAngle: 0.25,
  30092. width: 15,
  30093. splitLine: {
  30094. fixRadius: 0,
  30095. splitNumber: 10,
  30096. width: 15,
  30097. color: '#FFFFFF',
  30098. childNumber: 5,
  30099. childWidth: 5 },
  30100. pointer: {
  30101. width: 15,
  30102. color: 'auto' } },
  30103. opts.extra.gauge);
  30104. if (gaugeOption.oldAngle == undefined) {
  30105. gaugeOption.oldAngle = gaugeOption.startAngle;
  30106. }
  30107. if (gaugeOption.oldData == undefined) {
  30108. gaugeOption.oldData = 0;
  30109. }
  30110. categories = getGaugeAxisPoints(categories, gaugeOption.startAngle, gaugeOption.endAngle);
  30111. var centerPosition = {
  30112. x: opts.width / 2,
  30113. y: opts.height / 2 };
  30114. var radius = Math.min(centerPosition.x, centerPosition.y);
  30115. radius -= 5 * opts.pixelRatio;
  30116. radius -= gaugeOption.width / 2;
  30117. var innerRadius = radius - gaugeOption.width;
  30118. var totalAngle = 0;
  30119. //判断仪表盘的样式:default百度样式,progress新样式
  30120. if (gaugeOption.type == 'progress') {
  30121. //## 第一步画中心圆形背景和进度条背景
  30122. //中心圆形背景
  30123. var pieRadius = radius - gaugeOption.width * 3;
  30124. context.beginPath();
  30125. var gradient = context.createLinearGradient(centerPosition.x, centerPosition.y - pieRadius, centerPosition.x, centerPosition.y + pieRadius);
  30126. //配置渐变填充(起点:中心点向上减半径;结束点中心点向下加半径)
  30127. gradient.addColorStop('0', hexToRgb(series[0].color, 0.3));
  30128. gradient.addColorStop('1.0', hexToRgb("#FFFFFF", 0.1));
  30129. context.setFillStyle(gradient);
  30130. context.arc(centerPosition.x, centerPosition.y, pieRadius, 0, 2 * Math.PI, false);
  30131. context.fill();
  30132. //画进度条背景
  30133. context.setLineWidth(gaugeOption.width);
  30134. context.setStrokeStyle(hexToRgb(series[0].color, 0.3));
  30135. context.setLineCap('round');
  30136. context.beginPath();
  30137. context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, gaugeOption.endAngle * Math.PI, false);
  30138. context.stroke();
  30139. //## 第二步画刻度线
  30140. totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;
  30141. var splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;
  30142. var childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber;
  30143. var startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius;
  30144. var endX = -radius - gaugeOption.width - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width;
  30145. context.save();
  30146. context.translate(centerPosition.x, centerPosition.y);
  30147. context.rotate((gaugeOption.startAngle - 1) * Math.PI);
  30148. var len = gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1;
  30149. var proc = series[0].data * process;
  30150. for (var i = 0; i < len; i++) {
  30151. context.beginPath();
  30152. //刻度线随进度变色
  30153. if (proc > i / len) {
  30154. context.setStrokeStyle(hexToRgb(series[0].color, 1));
  30155. } else {
  30156. context.setStrokeStyle(hexToRgb(series[0].color, 0.3));
  30157. }
  30158. context.setLineWidth(3 * opts.pixelRatio);
  30159. context.moveTo(startX, 0);
  30160. context.lineTo(endX, 0);
  30161. context.stroke();
  30162. context.rotate(childAngle * Math.PI);
  30163. }
  30164. context.restore();
  30165. //## 第三步画进度条
  30166. series = getArcbarDataPoints(series, gaugeOption, process);
  30167. context.setLineWidth(gaugeOption.width);
  30168. context.setStrokeStyle(series[0].color);
  30169. context.setLineCap('round');
  30170. context.beginPath();
  30171. context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, series[0]._proportion_ * Math.PI, false);
  30172. context.stroke();
  30173. //## 第四步画指针
  30174. var pointerRadius = radius - gaugeOption.width * 2.5;
  30175. context.save();
  30176. context.translate(centerPosition.x, centerPosition.y);
  30177. context.rotate((series[0]._proportion_ - 1) * Math.PI);
  30178. context.beginPath();
  30179. context.setLineWidth(gaugeOption.width / 3);
  30180. var gradient3 = context.createLinearGradient(0, -pointerRadius * 0.6, 0, pointerRadius * 0.6);
  30181. gradient3.addColorStop('0', hexToRgb('#FFFFFF', 0));
  30182. gradient3.addColorStop('0.5', hexToRgb(series[0].color, 1));
  30183. gradient3.addColorStop('1.0', hexToRgb('#FFFFFF', 0));
  30184. context.setStrokeStyle(gradient3);
  30185. context.arc(0, 0, pointerRadius, 0.85 * Math.PI, 1.15 * Math.PI, false);
  30186. context.stroke();
  30187. context.beginPath();
  30188. context.setLineWidth(1);
  30189. context.setStrokeStyle(series[0].color);
  30190. context.setFillStyle(series[0].color);
  30191. context.moveTo(-pointerRadius - gaugeOption.width / 3 / 2, -4);
  30192. context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2 - 4, 0);
  30193. context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, 4);
  30194. context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, -4);
  30195. context.stroke();
  30196. context.fill();
  30197. context.restore();
  30198. //default百度样式
  30199. } else {
  30200. //画背景
  30201. context.setLineWidth(gaugeOption.width);
  30202. context.setLineCap('butt');
  30203. for (var _i19 = 0; _i19 < categories.length; _i19++) {
  30204. var eachCategories = categories[_i19];
  30205. context.beginPath();
  30206. context.setStrokeStyle(eachCategories.color);
  30207. context.arc(centerPosition.x, centerPosition.y, radius, eachCategories._startAngle_ * Math.PI, eachCategories._endAngle_ * Math.PI, false);
  30208. context.stroke();
  30209. }
  30210. context.save();
  30211. //画刻度线
  30212. totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;
  30213. var _splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;
  30214. var _childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber;
  30215. var _startX2 = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius;
  30216. var _endX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width;
  30217. var childendX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.childWidth;
  30218. context.translate(centerPosition.x, centerPosition.y);
  30219. context.rotate((gaugeOption.startAngle - 1) * Math.PI);
  30220. for (var _i20 = 0; _i20 < gaugeOption.splitLine.splitNumber + 1; _i20++) {
  30221. context.beginPath();
  30222. context.setStrokeStyle(gaugeOption.splitLine.color);
  30223. context.setLineWidth(2 * opts.pixelRatio);
  30224. context.moveTo(_startX2, 0);
  30225. context.lineTo(_endX, 0);
  30226. context.stroke();
  30227. context.rotate(_splitAngle * Math.PI);
  30228. }
  30229. context.restore();
  30230. context.save();
  30231. context.translate(centerPosition.x, centerPosition.y);
  30232. context.rotate((gaugeOption.startAngle - 1) * Math.PI);
  30233. for (var _i21 = 0; _i21 < gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1; _i21++) {
  30234. context.beginPath();
  30235. context.setStrokeStyle(gaugeOption.splitLine.color);
  30236. context.setLineWidth(1 * opts.pixelRatio);
  30237. context.moveTo(_startX2, 0);
  30238. context.lineTo(childendX, 0);
  30239. context.stroke();
  30240. context.rotate(_childAngle * Math.PI);
  30241. }
  30242. context.restore();
  30243. //画指针
  30244. series = getGaugeDataPoints(series, categories, gaugeOption, process);
  30245. for (var _i22 = 0; _i22 < series.length; _i22++) {
  30246. var eachSeries = series[_i22];
  30247. context.save();
  30248. context.translate(centerPosition.x, centerPosition.y);
  30249. context.rotate((eachSeries._proportion_ - 1) * Math.PI);
  30250. context.beginPath();
  30251. context.setFillStyle(eachSeries.color);
  30252. context.moveTo(gaugeOption.pointer.width, 0);
  30253. context.lineTo(0, -gaugeOption.pointer.width / 2);
  30254. context.lineTo(-innerRadius, 0);
  30255. context.lineTo(0, gaugeOption.pointer.width / 2);
  30256. context.lineTo(gaugeOption.pointer.width, 0);
  30257. context.closePath();
  30258. context.fill();
  30259. context.beginPath();
  30260. context.setFillStyle('#FFFFFF');
  30261. context.arc(0, 0, gaugeOption.pointer.width / 6, 0, 2 * Math.PI, false);
  30262. context.fill();
  30263. context.restore();
  30264. }
  30265. if (opts.dataLabel !== false) {
  30266. drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context);
  30267. }
  30268. }
  30269. //画仪表盘标题,副标题
  30270. drawRingTitle(opts, config, context, centerPosition);
  30271. if (process === 1 && opts.type === 'gauge') {
  30272. opts.extra.gauge.oldAngle = series[0]._proportion_;
  30273. opts.extra.gauge.oldData = series[0].data;
  30274. }
  30275. return {
  30276. center: centerPosition,
  30277. radius: radius,
  30278. innerRadius: innerRadius,
  30279. categories: categories,
  30280. totalAngle: totalAngle };
  30281. }
  30282. function drawRadarDataPoints(series, opts, config, context) {
  30283. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  30284. var radarOption = assign({}, {
  30285. gridColor: '#cccccc',
  30286. labelColor: '#666666',
  30287. opacity: 0.2,
  30288. gridCount: 3 },
  30289. opts.extra.radar);
  30290. var coordinateAngle = getRadarCoordinateSeries(opts.categories.length);
  30291. var centerPosition = {
  30292. x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,
  30293. y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 };
  30294. var radius = Math.min(centerPosition.x - (getMaxTextListLength(opts.categories) + config.radarLabelTextMargin),
  30295. centerPosition.y - config.radarLabelTextMargin);
  30296. //TODO逻辑不对
  30297. radius -= opts.padding[1];
  30298. // draw grid
  30299. context.beginPath();
  30300. context.setLineWidth(1 * opts.pixelRatio);
  30301. context.setStrokeStyle(radarOption.gridColor);
  30302. coordinateAngle.forEach(function (angle) {
  30303. var pos = convertCoordinateOrigin(radius * Math.cos(angle), radius * Math.sin(angle), centerPosition);
  30304. context.moveTo(centerPosition.x, centerPosition.y);
  30305. context.lineTo(pos.x, pos.y);
  30306. });
  30307. context.stroke();
  30308. context.closePath();
  30309. // draw split line grid
  30310. var _loop = function _loop(i) {
  30311. var startPos = {};
  30312. context.beginPath();
  30313. context.setLineWidth(1 * opts.pixelRatio);
  30314. context.setStrokeStyle(radarOption.gridColor);
  30315. coordinateAngle.forEach(function (angle, index) {
  30316. var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(angle), radius / radarOption.gridCount * i * Math.sin(angle), centerPosition);
  30317. if (index === 0) {
  30318. startPos = pos;
  30319. context.moveTo(pos.x, pos.y);
  30320. } else {
  30321. context.lineTo(pos.x, pos.y);
  30322. }
  30323. });
  30324. context.lineTo(startPos.x, startPos.y);
  30325. context.stroke();
  30326. context.closePath();
  30327. };
  30328. for (var i = 1; i <= radarOption.gridCount; i++) {
  30329. _loop(i);
  30330. }
  30331. var radarDataPoints = getRadarDataPoints(coordinateAngle, centerPosition, radius, series, opts, process);
  30332. radarDataPoints.forEach(function (eachSeries, seriesIndex) {
  30333. // 绘制区域数据
  30334. context.beginPath();
  30335. context.setFillStyle(hexToRgb(eachSeries.color, radarOption.opacity));
  30336. eachSeries.data.forEach(function (item, index) {
  30337. if (index === 0) {
  30338. context.moveTo(item.position.x, item.position.y);
  30339. } else {
  30340. context.lineTo(item.position.x, item.position.y);
  30341. }
  30342. });
  30343. context.closePath();
  30344. context.fill();
  30345. if (opts.dataPointShape !== false) {
  30346. var points = eachSeries.data.map(function (item) {
  30347. return item.position;
  30348. });
  30349. drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);
  30350. }
  30351. });
  30352. // draw label text
  30353. drawRadarLabel(coordinateAngle, radius, centerPosition, opts, config, context);
  30354. return {
  30355. center: centerPosition,
  30356. radius: radius,
  30357. angleList: coordinateAngle };
  30358. }
  30359. function normalInt(min, max, iter) {
  30360. iter = iter == 0 ? 1 : iter;
  30361. var arr = [];
  30362. for (var i = 0; i < iter; i++) {
  30363. arr[i] = Math.random();
  30364. };
  30365. return Math.floor(arr.reduce(function (i, j) {return i + j;}) / iter * (max - min)) + min;
  30366. };
  30367. function collisionNew(area, points, width, height) {
  30368. var isIn = false;
  30369. for (var i = 0; i < points.length; i++) {
  30370. if (points[i].area) {
  30371. if (area[3] < points[i].area[1] || area[0] > points[i].area[2] || area[1] > points[i].area[3] || area[2] < points[i].area[0]) {
  30372. if (area[0] < 0 || area[1] < 0 || area[2] > width || area[3] > height) {
  30373. isIn = true;
  30374. break;
  30375. } else {
  30376. isIn = false;
  30377. }
  30378. } else {
  30379. isIn = true;
  30380. break;
  30381. }
  30382. }
  30383. }
  30384. return isIn;
  30385. };
  30386. function getBoundingBox(data) {
  30387. var bounds = {},coords;
  30388. bounds.xMin = 180;
  30389. bounds.xMax = 0;
  30390. bounds.yMin = 90;
  30391. bounds.yMax = 0;
  30392. for (var i = 0; i < data.length; i++) {
  30393. var coorda = data[i].geometry.coordinates;
  30394. for (var k = 0; k < coorda.length; k++) {
  30395. coords = coorda[k];
  30396. if (coords.length == 1) {
  30397. coords = coords[0];
  30398. }
  30399. for (var j = 0; j < coords.length; j++) {
  30400. var longitude = coords[j][0];
  30401. var latitude = coords[j][1];
  30402. var point = {
  30403. x: longitude,
  30404. y: latitude };
  30405. bounds.xMin = bounds.xMin < point.x ? bounds.xMin : point.x;
  30406. bounds.xMax = bounds.xMax > point.x ? bounds.xMax : point.x;
  30407. bounds.yMin = bounds.yMin < point.y ? bounds.yMin : point.y;
  30408. bounds.yMax = bounds.yMax > point.y ? bounds.yMax : point.y;
  30409. }
  30410. }
  30411. }
  30412. return bounds;
  30413. }
  30414. function coordinateToPoint(latitude, longitude, bounds, scale, xoffset, yoffset) {
  30415. return {
  30416. x: (longitude - bounds.xMin) * scale + xoffset,
  30417. y: (bounds.yMax - latitude) * scale + yoffset };
  30418. }
  30419. function pointToCoordinate(pointY, pointX, bounds, scale, xoffset, yoffset) {
  30420. return {
  30421. x: (pointX - xoffset) / scale + bounds.xMin,
  30422. y: bounds.yMax - (pointY - yoffset) / scale };
  30423. }
  30424. function isRayIntersectsSegment(poi, s_poi, e_poi) {
  30425. if (s_poi[1] == e_poi[1]) {return false;}
  30426. if (s_poi[1] > poi[1] && e_poi[1] > poi[1]) {return false;}
  30427. if (s_poi[1] < poi[1] && e_poi[1] < poi[1]) {return false;}
  30428. if (s_poi[1] == poi[1] && e_poi[1] > poi[1]) {return false;}
  30429. if (e_poi[1] == poi[1] && s_poi[1] > poi[1]) {return false;}
  30430. if (s_poi[0] < poi[0] && e_poi[1] < poi[1]) {return false;}
  30431. var xseg = e_poi[0] - (e_poi[0] - s_poi[0]) * (e_poi[1] - poi[1]) / (e_poi[1] - s_poi[1]);
  30432. if (xseg < poi[0]) {
  30433. return false;
  30434. } else {
  30435. return true;
  30436. }
  30437. }
  30438. function isPoiWithinPoly(poi, poly) {
  30439. var sinsc = 0;
  30440. for (var i = 0; i < poly.length; i++) {
  30441. var epoly = poly[i][0];
  30442. if (poly.length == 1) {
  30443. epoly = poly[i][0];
  30444. }
  30445. for (var j = 0; j < epoly.length - 1; j++) {
  30446. var s_poi = epoly[j];
  30447. var e_poi = epoly[j + 1];
  30448. if (isRayIntersectsSegment(poi, s_poi, e_poi)) {
  30449. sinsc += 1;
  30450. }
  30451. }
  30452. }
  30453. if (sinsc % 2 == 1) {
  30454. return true;
  30455. } else {
  30456. return false;
  30457. }
  30458. }
  30459. function drawMapDataPoints(series, opts, config, context) {
  30460. var mapOption = assign({}, {
  30461. border: true,
  30462. borderWidth: 1,
  30463. borderColor: '#666666',
  30464. fillOpacity: 0.6,
  30465. activeBorderColor: '#f04864',
  30466. activeFillColor: '#facc14',
  30467. activeFillOpacity: 1 },
  30468. opts.extra.map);
  30469. var coords, point;
  30470. var data = series;
  30471. var bounds = getBoundingBox(data);
  30472. var xScale = opts.width / Math.abs(bounds.xMax - bounds.xMin);
  30473. var yScale = opts.height / Math.abs(bounds.yMax - bounds.yMin);
  30474. var scale = xScale < yScale ? xScale : yScale;
  30475. var xoffset = opts.width / 2 - Math.abs(bounds.xMax - bounds.xMin) / 2 * scale;
  30476. var yoffset = opts.height / 2 - Math.abs(bounds.yMax - bounds.yMin) / 2 * scale;
  30477. context.beginPath();
  30478. context.clearRect(0, 0, opts.width, opts.height);
  30479. context.setFillStyle(opts.background || '#FFFFFF');
  30480. context.rect(0, 0, opts.width, opts.height);
  30481. context.fill();
  30482. for (var i = 0; i < data.length; i++) {
  30483. context.beginPath();
  30484. context.setLineWidth(mapOption.borderWidth * opts.pixelRatio);
  30485. context.setStrokeStyle(mapOption.borderColor);
  30486. context.setFillStyle(hexToRgb(series[i].color, mapOption.fillOpacity));
  30487. if (opts.tooltip) {
  30488. if (opts.tooltip.index == i) {
  30489. context.setStrokeStyle(mapOption.activeBorderColor);
  30490. context.setFillStyle(hexToRgb(mapOption.activeFillColor, mapOption.activeFillOpacity));
  30491. }
  30492. }
  30493. var coorda = data[i].geometry.coordinates;
  30494. for (var k = 0; k < coorda.length; k++) {
  30495. coords = coorda[k];
  30496. if (coords.length == 1) {
  30497. coords = coords[0];
  30498. }
  30499. for (var j = 0; j < coords.length; j++) {
  30500. point = coordinateToPoint(coords[j][1], coords[j][0], bounds, scale, xoffset, yoffset);
  30501. if (j === 0) {
  30502. context.beginPath();
  30503. context.moveTo(point.x, point.y);
  30504. } else {
  30505. context.lineTo(point.x, point.y);
  30506. }
  30507. }
  30508. context.fill();
  30509. if (mapOption.border == true) {
  30510. context.stroke();
  30511. }
  30512. }
  30513. if (opts.dataLabel == true) {
  30514. var centerPoint = data[i].properties.centroid;
  30515. if (centerPoint) {
  30516. point = coordinateToPoint(centerPoint[1], centerPoint[0], bounds, scale, xoffset, yoffset);
  30517. var fontSize = data[i].textSize || config.fontSize;
  30518. var text = data[i].properties.name;
  30519. context.beginPath();
  30520. context.setFontSize(fontSize);
  30521. context.setFillStyle(data[i].textColor || '#666666');
  30522. context.fillText(text, point.x - measureText(text, fontSize) / 2, point.y + fontSize / 2);
  30523. context.closePath();
  30524. context.stroke();
  30525. }
  30526. }
  30527. }
  30528. opts.chartData.mapData = {
  30529. bounds: bounds,
  30530. scale: scale,
  30531. xoffset: xoffset,
  30532. yoffset: yoffset };
  30533. drawToolTipBridge(opts, config, context, 1);
  30534. context.draw();
  30535. }
  30536. function getWordCloudPoint(opts, type) {
  30537. var points = opts.series.sort(function (a, b) {return parseInt(b.textSize) - parseInt(a.textSize);});
  30538. switch (type) {
  30539. case 'normal':
  30540. for (var i = 0; i < points.length; i++) {
  30541. var text = points[i].name;
  30542. var tHeight = points[i].textSize;
  30543. var tWidth = measureText(text, tHeight);
  30544. var x = void 0,y = void 0;
  30545. var area = void 0;
  30546. var breaknum = 0;
  30547. while (true) {
  30548. breaknum++;
  30549. x = normalInt(-opts.width / 2, opts.width / 2, 5) - tWidth / 2;
  30550. y = normalInt(-opts.height / 2, opts.height / 2, 5) + tHeight / 2;
  30551. area = [x - 5 + opts.width / 2, y - 5 - tHeight + opts.height / 2, x + tWidth + 5 + opts.width / 2, y + 5 + opts.height / 2];
  30552. var isCollision = collisionNew(area, points, opts.width, opts.height);
  30553. if (!isCollision) break;
  30554. if (breaknum == 1000) {
  30555. area = [-100, -100, -100, -100];
  30556. break;
  30557. }
  30558. };
  30559. points[i].area = area;
  30560. }
  30561. break;
  30562. case 'vertical':var
  30563. Spin = function Spin() {
  30564. //获取均匀随机值,是否旋转,旋转的概率为(1-0.5)
  30565. if (Math.random() > 0.7) {
  30566. return true;
  30567. } else {return false;};
  30568. };;
  30569. for (var _i23 = 0; _i23 < points.length; _i23++) {
  30570. var _text = points[_i23].name;
  30571. var _tHeight = points[_i23].textSize;
  30572. var _tWidth = measureText(_text, _tHeight);
  30573. var isSpin = Spin();
  30574. var _x = void 0,_y = void 0,_area = void 0,areav = void 0;
  30575. var _breaknum = 0;
  30576. while (true) {
  30577. _breaknum++;
  30578. var _isCollision = void 0;
  30579. if (isSpin) {
  30580. _x = normalInt(-opts.width / 2, opts.width / 2, 5) - _tWidth / 2;
  30581. _y = normalInt(-opts.height / 2, opts.height / 2, 5) + _tHeight / 2;
  30582. _area = [_y - 5 - _tWidth + opts.width / 2, -_x - 5 + opts.height / 2, _y + 5 + opts.width / 2, -_x + _tHeight + 5 + opts.height / 2];
  30583. areav = [opts.width - (opts.width / 2 - opts.height / 2) - (-_x + _tHeight + 5 + opts.height / 2) - 5, opts.height / 2 - opts.width / 2 + (_y - 5 - _tWidth + opts.width / 2) - 5, opts.width - (opts.width / 2 - opts.height / 2) - (-_x + _tHeight + 5 + opts.height / 2) + _tHeight, opts.height / 2 - opts.width / 2 + (_y - 5 - _tWidth + opts.width / 2) + _tWidth + 5];
  30584. _isCollision = collisionNew(areav, points, opts.height, opts.width);
  30585. } else {
  30586. _x = normalInt(-opts.width / 2, opts.width / 2, 5) - _tWidth / 2;
  30587. _y = normalInt(-opts.height / 2, opts.height / 2, 5) + _tHeight / 2;
  30588. _area = [_x - 5 + opts.width / 2, _y - 5 - _tHeight + opts.height / 2, _x + _tWidth + 5 + opts.width / 2, _y + 5 + opts.height / 2];
  30589. _isCollision = collisionNew(_area, points, opts.width, opts.height);
  30590. }
  30591. if (!_isCollision) break;
  30592. if (_breaknum == 1000) {
  30593. _area = [-1000, -1000, -1000, -1000];
  30594. break;
  30595. }
  30596. };
  30597. if (isSpin) {
  30598. points[_i23].area = areav;
  30599. points[_i23].areav = _area;
  30600. } else {
  30601. points[_i23].area = _area;
  30602. }
  30603. points[_i23].rotate = isSpin;
  30604. };
  30605. break;}
  30606. return points;
  30607. }
  30608. function drawWordCloudDataPoints(series, opts, config, context) {
  30609. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  30610. var wordOption = assign({}, {
  30611. type: 'normal',
  30612. autoColors: true },
  30613. opts.extra.word);
  30614. context.beginPath();
  30615. context.setFillStyle(opts.background || '#FFFFFF');
  30616. context.rect(0, 0, opts.width, opts.height);
  30617. context.fill();
  30618. context.save();
  30619. var points = opts.chartData.wordCloudData;
  30620. context.translate(opts.width / 2, opts.height / 2);
  30621. for (var i = 0; i < points.length; i++) {
  30622. context.save();
  30623. if (points[i].rotate) {
  30624. context.rotate(90 * Math.PI / 180);
  30625. }
  30626. var text = points[i].name;
  30627. var tHeight = points[i].textSize;
  30628. var tWidth = measureText(text, tHeight);
  30629. context.beginPath();
  30630. context.setStrokeStyle(points[i].color);
  30631. context.setFillStyle(points[i].color);
  30632. context.setFontSize(tHeight);
  30633. if (points[i].rotate) {
  30634. if (points[i].areav[0] > 0) {
  30635. if (opts.tooltip) {
  30636. if (opts.tooltip.index == i) {
  30637. context.strokeText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);
  30638. } else {
  30639. context.fillText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);
  30640. }
  30641. } else {
  30642. context.fillText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);
  30643. }
  30644. }
  30645. } else {
  30646. if (points[i].area[0] > 0) {
  30647. if (opts.tooltip) {
  30648. if (opts.tooltip.index == i) {
  30649. context.strokeText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);
  30650. } else {
  30651. context.fillText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);
  30652. }
  30653. } else {
  30654. context.fillText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);
  30655. }
  30656. }
  30657. }
  30658. context.stroke();
  30659. context.restore();
  30660. }
  30661. context.restore();
  30662. }
  30663. function drawFunnelDataPoints(series, opts, config, context) {
  30664. var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
  30665. var funnelOption = assign({}, {
  30666. activeWidth: 10,
  30667. activeOpacity: 0.3,
  30668. border: false,
  30669. borderWidth: 2,
  30670. borderColor: '#FFFFFF',
  30671. fillOpacity: 1,
  30672. labelAlign: 'right' },
  30673. opts.extra.funnel);
  30674. var eachSpacing = (opts.height - opts.area[0] - opts.area[2]) / series.length;
  30675. var centerPosition = {
  30676. x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,
  30677. y: opts.height - opts.area[2] };
  30678. var activeWidth = funnelOption.activeWidth;
  30679. var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - activeWidth, (opts.height - opts.area[0] - opts.area[2]) / 2 - activeWidth);
  30680. series = getFunnelDataPoints(series, radius, process);
  30681. context.save();
  30682. context.translate(centerPosition.x, centerPosition.y);
  30683. for (var i = 0; i < series.length; i++) {
  30684. if (i == 0) {
  30685. if (opts.tooltip) {
  30686. if (opts.tooltip.index == i) {
  30687. context.beginPath();
  30688. context.setFillStyle(hexToRgb(series[i].color, funnelOption.activeOpacity));
  30689. context.moveTo(-activeWidth, 0);
  30690. context.lineTo(-series[i].radius - activeWidth, -eachSpacing);
  30691. context.lineTo(series[i].radius + activeWidth, -eachSpacing);
  30692. context.lineTo(activeWidth, 0);
  30693. context.lineTo(-activeWidth, 0);
  30694. context.closePath();
  30695. context.fill();
  30696. }
  30697. }
  30698. series[i].funnelArea = [centerPosition.x - series[i].radius, centerPosition.y - eachSpacing, centerPosition.x + series[i].radius, centerPosition.y];
  30699. context.beginPath();
  30700. context.setLineWidth(funnelOption.borderWidth * opts.pixelRatio);
  30701. context.setStrokeStyle(funnelOption.borderColor);
  30702. context.setFillStyle(hexToRgb(series[i].color, funnelOption.fillOpacity));
  30703. context.moveTo(0, 0);
  30704. context.lineTo(-series[i].radius, -eachSpacing);
  30705. context.lineTo(series[i].radius, -eachSpacing);
  30706. context.lineTo(0, 0);
  30707. context.closePath();
  30708. context.fill();
  30709. if (funnelOption.border == true) {
  30710. context.stroke();
  30711. }
  30712. } else {
  30713. if (opts.tooltip) {
  30714. if (opts.tooltip.index == i) {
  30715. context.beginPath();
  30716. context.setFillStyle(hexToRgb(series[i].color, funnelOption.activeOpacity));
  30717. context.moveTo(0, 0);
  30718. context.lineTo(-series[i - 1].radius - activeWidth, 0);
  30719. context.lineTo(-series[i].radius - activeWidth, -eachSpacing);
  30720. context.lineTo(series[i].radius + activeWidth, -eachSpacing);
  30721. context.lineTo(series[i - 1].radius + activeWidth, 0);
  30722. context.lineTo(0, 0);
  30723. context.closePath();
  30724. context.fill();
  30725. }
  30726. }
  30727. series[i].funnelArea = [centerPosition.x - series[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + series[i].radius, centerPosition.y - eachSpacing * i];
  30728. context.beginPath();
  30729. context.setLineWidth(funnelOption.borderWidth * opts.pixelRatio);
  30730. context.setStrokeStyle(funnelOption.borderColor);
  30731. context.setFillStyle(hexToRgb(series[i].color, funnelOption.fillOpacity));
  30732. context.moveTo(0, 0);
  30733. context.lineTo(-series[i - 1].radius, 0);
  30734. context.lineTo(-series[i].radius, -eachSpacing);
  30735. context.lineTo(series[i].radius, -eachSpacing);
  30736. context.lineTo(series[i - 1].radius, 0);
  30737. context.lineTo(0, 0);
  30738. context.closePath();
  30739. context.fill();
  30740. if (funnelOption.border == true) {
  30741. context.stroke();
  30742. }
  30743. }
  30744. context.translate(0, -eachSpacing);
  30745. }
  30746. context.restore();
  30747. if (opts.dataLabel !== false && process === 1) {
  30748. drawFunnelText(series, opts, context, eachSpacing, funnelOption.labelAlign, activeWidth, centerPosition);
  30749. }
  30750. return {
  30751. center: centerPosition,
  30752. radius: radius,
  30753. series: series };
  30754. }
  30755. function drawFunnelText(series, opts, context, eachSpacing, labelAlign, activeWidth, centerPosition) {
  30756. for (var i = 0; i < series.length; i++) {
  30757. var item = series[i];
  30758. var startX = void 0,endX = void 0,startY = void 0,fontSize = void 0;
  30759. var text = item.format ? item.format(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) + '%';
  30760. if (labelAlign == 'right') {
  30761. if (i == 0) {
  30762. startX = (item.funnelArea[2] + centerPosition.x) / 2;
  30763. } else {
  30764. startX = (item.funnelArea[2] + series[i - 1].funnelArea[2]) / 2;
  30765. }
  30766. endX = startX + activeWidth * 2;
  30767. startY = item.funnelArea[1] + eachSpacing / 2;
  30768. fontSize = item.textSize || opts.fontSize;
  30769. context.setLineWidth(1 * opts.pixelRatio);
  30770. context.setStrokeStyle(item.color);
  30771. context.setFillStyle(item.color);
  30772. context.beginPath();
  30773. context.moveTo(startX, startY);
  30774. context.lineTo(endX, startY);
  30775. context.stroke();
  30776. context.closePath();
  30777. context.beginPath();
  30778. context.moveTo(endX, startY);
  30779. context.arc(endX, startY, 2, 0, 2 * Math.PI);
  30780. context.closePath();
  30781. context.fill();
  30782. context.beginPath();
  30783. context.setFontSize(fontSize);
  30784. context.setFillStyle(item.textColor || '#666666');
  30785. context.fillText(text, endX + 5, startY + fontSize / 2 - 2);
  30786. context.closePath();
  30787. context.stroke();
  30788. context.closePath();
  30789. } else {
  30790. if (i == 0) {
  30791. startX = (item.funnelArea[0] + centerPosition.x) / 2;
  30792. } else {
  30793. startX = (item.funnelArea[0] + series[i - 1].funnelArea[0]) / 2;
  30794. }
  30795. endX = startX - activeWidth * 2;
  30796. startY = item.funnelArea[1] + eachSpacing / 2;
  30797. fontSize = item.textSize || opts.fontSize;
  30798. context.setLineWidth(1 * opts.pixelRatio);
  30799. context.setStrokeStyle(item.color);
  30800. context.setFillStyle(item.color);
  30801. context.beginPath();
  30802. context.moveTo(startX, startY);
  30803. context.lineTo(endX, startY);
  30804. context.stroke();
  30805. context.closePath();
  30806. context.beginPath();
  30807. context.moveTo(endX, startY);
  30808. context.arc(endX, startY, 2, 0, 2 * Math.PI);
  30809. context.closePath();
  30810. context.fill();
  30811. context.beginPath();
  30812. context.setFontSize(fontSize);
  30813. context.setFillStyle(item.textColor || '#666666');
  30814. context.fillText(text, endX - 5 - measureText(text), startY + fontSize / 2 - 2);
  30815. context.closePath();
  30816. context.stroke();
  30817. context.closePath();
  30818. }
  30819. }
  30820. }
  30821. function drawCanvas(opts, context) {
  30822. context.draw();
  30823. }
  30824. var Timing = {
  30825. easeIn: function easeIn(pos) {
  30826. return Math.pow(pos, 3);
  30827. },
  30828. easeOut: function easeOut(pos) {
  30829. return Math.pow(pos - 1, 3) + 1;
  30830. },
  30831. easeInOut: function easeInOut(pos) {
  30832. if ((pos /= 0.5) < 1) {
  30833. return 0.5 * Math.pow(pos, 3);
  30834. } else {
  30835. return 0.5 * (Math.pow(pos - 2, 3) + 2);
  30836. }
  30837. },
  30838. linear: function linear(pos) {
  30839. return pos;
  30840. } };
  30841. function Animation(opts) {
  30842. this.isStop = false;
  30843. opts.duration = typeof opts.duration === 'undefined' ? 1000 : opts.duration;
  30844. opts.timing = opts.timing || 'linear';
  30845. var delay = 17;
  30846. function createAnimationFrame() {
  30847. if (typeof setTimeout !== 'undefined') {
  30848. return function (step, delay) {
  30849. setTimeout(function () {
  30850. var timeStamp = +new Date();
  30851. step(timeStamp);
  30852. }, delay);
  30853. };
  30854. } else if (typeof requestAnimationFrame !== 'undefined') {
  30855. return requestAnimationFrame;
  30856. } else {
  30857. return function (step) {
  30858. step(null);
  30859. };
  30860. }
  30861. };
  30862. var animationFrame = createAnimationFrame();
  30863. var startTimeStamp = null;
  30864. var _step = function step(timestamp) {
  30865. if (timestamp === null || this.isStop === true) {
  30866. opts.onProcess && opts.onProcess(1);
  30867. opts.onAnimationFinish && opts.onAnimationFinish();
  30868. return;
  30869. }
  30870. if (startTimeStamp === null) {
  30871. startTimeStamp = timestamp;
  30872. }
  30873. if (timestamp - startTimeStamp < opts.duration) {
  30874. var process = (timestamp - startTimeStamp) / opts.duration;
  30875. var timingFunction = Timing[opts.timing];
  30876. process = timingFunction(process);
  30877. opts.onProcess && opts.onProcess(process);
  30878. animationFrame(_step, delay);
  30879. } else {
  30880. opts.onProcess && opts.onProcess(1);
  30881. opts.onAnimationFinish && opts.onAnimationFinish();
  30882. }
  30883. };
  30884. _step = _step.bind(this);
  30885. animationFrame(_step, delay);
  30886. }
  30887. // stop animation immediately
  30888. // and tigger onAnimationFinish
  30889. Animation.prototype.stop = function () {
  30890. this.isStop = true;
  30891. };
  30892. function drawCharts(type, opts, config, context) {
  30893. var _this = this;
  30894. var series = opts.series;
  30895. var categories = opts.categories;
  30896. series = fillSeries(series, opts, config);
  30897. var duration = opts.animation ? opts.duration : 0;
  30898. _this.animationInstance && _this.animationInstance.stop();
  30899. var seriesMA = null;
  30900. if (type == 'candle') {
  30901. var average = assign({}, opts.extra.candle.average);
  30902. if (average.show) {
  30903. seriesMA = calCandleMA(average.day, average.name, average.color, series[0].data);
  30904. seriesMA = fillSeries(seriesMA, opts, config);
  30905. opts.seriesMA = seriesMA;
  30906. } else if (opts.seriesMA) {
  30907. seriesMA = opts.seriesMA = fillSeries(opts.seriesMA, opts, config);
  30908. } else {
  30909. seriesMA = series;
  30910. }
  30911. } else {
  30912. seriesMA = series;
  30913. }
  30914. /* 过滤掉show=false的series */
  30915. opts._series_ = series = filterSeries(series);
  30916. //重新计算图表区域
  30917. opts.area = new Array(4);
  30918. //复位绘图区域
  30919. for (var j = 0; j < 4; j++) {
  30920. opts.area[j] = opts.padding[j];
  30921. }
  30922. //通过计算三大区域:图例、X轴、Y轴的大小,确定绘图区域
  30923. var _calLegendData = calLegendData(seriesMA, opts, config, opts.chartData),
  30924. legendHeight = _calLegendData.area.wholeHeight,
  30925. legendWidth = _calLegendData.area.wholeWidth;
  30926. switch (opts.legend.position) {
  30927. case 'top':
  30928. opts.area[0] += legendHeight;
  30929. break;
  30930. case 'bottom':
  30931. opts.area[2] += legendHeight;
  30932. break;
  30933. case 'left':
  30934. opts.area[3] += legendWidth;
  30935. break;
  30936. case 'right':
  30937. opts.area[1] += legendWidth;
  30938. break;}
  30939. var _calYAxisData = {},yAxisWidth = 0;
  30940. if (opts.type === 'line' || opts.type === 'column' || opts.type === 'area' || opts.type === 'mix' || opts.type === 'candle') {
  30941. _calYAxisData = calYAxisData(series, opts, config);
  30942. yAxisWidth = _calYAxisData.yAxisWidth;
  30943. //如果显示Y轴标题
  30944. if (opts.yAxis.showTitle) {
  30945. var maxTitleHeight = 0;
  30946. for (var i = 0; i < opts.yAxis.data.length; i++) {
  30947. maxTitleHeight = Math.max(maxTitleHeight, opts.yAxis.data[i].titleFontSize ? opts.yAxis.data[i].titleFontSize : config.fontSize);
  30948. }
  30949. opts.area[0] += (maxTitleHeight + 6) * opts.pixelRatio;
  30950. }
  30951. var rightIndex = 0,leftIndex = 0;
  30952. //计算主绘图区域左右位置
  30953. for (var _i24 = 0; _i24 < yAxisWidth.length; _i24++) {
  30954. if (yAxisWidth[_i24].position == 'left') {
  30955. if (leftIndex > 0) {
  30956. opts.area[3] += yAxisWidth[_i24].width + opts.yAxis.padding;
  30957. } else {
  30958. opts.area[3] += yAxisWidth[_i24].width;
  30959. }
  30960. leftIndex += 1;
  30961. } else {
  30962. if (rightIndex > 0) {
  30963. opts.area[1] += yAxisWidth[_i24].width + opts.yAxis.padding;
  30964. } else {
  30965. opts.area[1] += yAxisWidth[_i24].width;
  30966. }
  30967. rightIndex += 1;
  30968. }
  30969. }
  30970. } else {
  30971. config.yAxisWidth = yAxisWidth;
  30972. }
  30973. opts.chartData.yAxisData = _calYAxisData;
  30974. if (opts.categories && opts.categories.length) {
  30975. opts.chartData.xAxisData = getXAxisPoints(opts.categories, opts, config);
  30976. var _calCategoriesData = calCategoriesData(opts.categories, opts, config, opts.chartData.xAxisData.eachSpacing),
  30977. xAxisHeight = _calCategoriesData.xAxisHeight,
  30978. angle = _calCategoriesData.angle;
  30979. config.xAxisHeight = xAxisHeight;
  30980. config._xAxisTextAngle_ = angle;
  30981. opts.area[2] += xAxisHeight;
  30982. opts.chartData.categoriesData = _calCategoriesData;
  30983. } else {
  30984. if (opts.type === 'line' || opts.type === 'area' || opts.type === 'points') {
  30985. opts.chartData.xAxisData = calXAxisData(series, opts, config);
  30986. categories = opts.chartData.xAxisData.rangesFormat;
  30987. var _calCategoriesData2 = calCategoriesData(categories, opts, config, opts.chartData.xAxisData.eachSpacing),
  30988. _xAxisHeight = _calCategoriesData2.xAxisHeight,
  30989. _angle = _calCategoriesData2.angle;
  30990. config.xAxisHeight = _xAxisHeight;
  30991. config._xAxisTextAngle_ = _angle;
  30992. opts.area[2] += _xAxisHeight;
  30993. opts.chartData.categoriesData = _calCategoriesData2;
  30994. } else {
  30995. opts.chartData.xAxisData = {
  30996. xAxisPoints: [] };
  30997. }
  30998. }
  30999. //计算右对齐偏移距离
  31000. if (opts.enableScroll && opts.xAxis.scrollAlign == 'right' && opts._scrollDistance_ === undefined) {
  31001. var offsetLeft = 0,
  31002. xAxisPoints = opts.chartData.xAxisData.xAxisPoints,
  31003. startX = opts.chartData.xAxisData.startX,
  31004. endX = opts.chartData.xAxisData.endX,
  31005. eachSpacing = opts.chartData.xAxisData.eachSpacing;
  31006. var totalWidth = eachSpacing * (xAxisPoints.length - 1);
  31007. var screenWidth = endX - startX;
  31008. offsetLeft = screenWidth - totalWidth;
  31009. _this.scrollOption = {
  31010. currentOffset: offsetLeft,
  31011. startTouchX: offsetLeft,
  31012. distance: 0,
  31013. lastMoveTime: 0 };
  31014. opts._scrollDistance_ = offsetLeft;
  31015. }
  31016. if (type === 'pie' || type === 'ring' || type === 'rose') {
  31017. config._pieTextMaxLength_ = opts.dataLabel === false ? 0 : getPieTextMaxLength(seriesMA);
  31018. }
  31019. switch (type) {
  31020. case 'word':
  31021. var wordOption = assign({}, {
  31022. type: 'normal',
  31023. autoColors: true },
  31024. opts.extra.word);
  31025. if (opts.updateData == true || opts.updateData == undefined) {
  31026. opts.chartData.wordCloudData = getWordCloudPoint(opts, wordOption.type);
  31027. }
  31028. this.animationInstance = new Animation({
  31029. timing: 'easeInOut',
  31030. duration: duration,
  31031. onProcess: function onProcess(process) {
  31032. context.clearRect(0, 0, opts.width, opts.height);
  31033. if (opts.rotate) {
  31034. contextRotate(context, opts);
  31035. }
  31036. drawWordCloudDataPoints(series, opts, config, context, process);
  31037. drawCanvas(opts, context);
  31038. },
  31039. onAnimationFinish: function onAnimationFinish() {
  31040. _this.event.trigger('renderComplete');
  31041. } });
  31042. break;
  31043. case 'map':
  31044. context.clearRect(0, 0, opts.width, opts.height);
  31045. drawMapDataPoints(series, opts, config, context);
  31046. break;
  31047. case 'funnel':
  31048. this.animationInstance = new Animation({
  31049. timing: 'easeInOut',
  31050. duration: duration,
  31051. onProcess: function onProcess(process) {
  31052. context.clearRect(0, 0, opts.width, opts.height);
  31053. if (opts.rotate) {
  31054. contextRotate(context, opts);
  31055. }
  31056. opts.chartData.funnelData = drawFunnelDataPoints(series, opts, config, context, process);
  31057. drawLegend(opts.series, opts, config, context, opts.chartData);
  31058. drawToolTipBridge(opts, config, context, process);
  31059. drawCanvas(opts, context);
  31060. },
  31061. onAnimationFinish: function onAnimationFinish() {
  31062. _this.event.trigger('renderComplete');
  31063. } });
  31064. break;
  31065. case 'line':
  31066. this.animationInstance = new Animation({
  31067. timing: 'easeIn',
  31068. duration: duration,
  31069. onProcess: function onProcess(process) {
  31070. context.clearRect(0, 0, opts.width, opts.height);
  31071. if (opts.rotate) {
  31072. contextRotate(context, opts);
  31073. }
  31074. drawYAxisGrid(categories, opts, config, context);
  31075. drawXAxis(categories, opts, config, context);
  31076. var _drawLineDataPoints = drawLineDataPoints(series, opts, config, context, process),
  31077. xAxisPoints = _drawLineDataPoints.xAxisPoints,
  31078. calPoints = _drawLineDataPoints.calPoints,
  31079. eachSpacing = _drawLineDataPoints.eachSpacing;
  31080. opts.chartData.xAxisPoints = xAxisPoints;
  31081. opts.chartData.calPoints = calPoints;
  31082. opts.chartData.eachSpacing = eachSpacing;
  31083. drawYAxis(series, opts, config, context);
  31084. if (opts.enableMarkLine !== false && process === 1) {
  31085. drawMarkLine(opts, config, context);
  31086. }
  31087. drawLegend(opts.series, opts, config, context, opts.chartData);
  31088. drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
  31089. drawCanvas(opts, context);
  31090. },
  31091. onAnimationFinish: function onAnimationFinish() {
  31092. _this.event.trigger('renderComplete');
  31093. } });
  31094. break;
  31095. case 'mix':
  31096. this.animationInstance = new Animation({
  31097. timing: 'easeIn',
  31098. duration: duration,
  31099. onProcess: function onProcess(process) {
  31100. context.clearRect(0, 0, opts.width, opts.height);
  31101. if (opts.rotate) {
  31102. contextRotate(context, opts);
  31103. }
  31104. drawYAxisGrid(categories, opts, config, context);
  31105. drawXAxis(categories, opts, config, context);
  31106. var _drawMixDataPoints = drawMixDataPoints(series, opts, config, context, process),
  31107. xAxisPoints = _drawMixDataPoints.xAxisPoints,
  31108. calPoints = _drawMixDataPoints.calPoints,
  31109. eachSpacing = _drawMixDataPoints.eachSpacing;
  31110. opts.chartData.xAxisPoints = xAxisPoints;
  31111. opts.chartData.calPoints = calPoints;
  31112. opts.chartData.eachSpacing = eachSpacing;
  31113. drawYAxis(series, opts, config, context);
  31114. if (opts.enableMarkLine !== false && process === 1) {
  31115. drawMarkLine(opts, config, context);
  31116. }
  31117. drawLegend(opts.series, opts, config, context, opts.chartData);
  31118. drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
  31119. drawCanvas(opts, context);
  31120. },
  31121. onAnimationFinish: function onAnimationFinish() {
  31122. _this.event.trigger('renderComplete');
  31123. } });
  31124. break;
  31125. case 'column':
  31126. this.animationInstance = new Animation({
  31127. timing: 'easeIn',
  31128. duration: duration,
  31129. onProcess: function onProcess(process) {
  31130. context.clearRect(0, 0, opts.width, opts.height);
  31131. if (opts.rotate) {
  31132. contextRotate(context, opts);
  31133. }
  31134. drawYAxisGrid(categories, opts, config, context);
  31135. drawXAxis(categories, opts, config, context);
  31136. var _drawColumnDataPoints = drawColumnDataPoints(series, opts, config, context, process),
  31137. xAxisPoints = _drawColumnDataPoints.xAxisPoints,
  31138. calPoints = _drawColumnDataPoints.calPoints,
  31139. eachSpacing = _drawColumnDataPoints.eachSpacing;
  31140. opts.chartData.xAxisPoints = xAxisPoints;
  31141. opts.chartData.calPoints = calPoints;
  31142. opts.chartData.eachSpacing = eachSpacing;
  31143. drawYAxis(series, opts, config, context);
  31144. if (opts.enableMarkLine !== false && process === 1) {
  31145. drawMarkLine(opts, config, context);
  31146. }
  31147. drawLegend(opts.series, opts, config, context, opts.chartData);
  31148. drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
  31149. drawCanvas(opts, context);
  31150. },
  31151. onAnimationFinish: function onAnimationFinish() {
  31152. _this.event.trigger('renderComplete');
  31153. } });
  31154. break;
  31155. case 'area':
  31156. this.animationInstance = new Animation({
  31157. timing: 'easeIn',
  31158. duration: duration,
  31159. onProcess: function onProcess(process) {
  31160. context.clearRect(0, 0, opts.width, opts.height);
  31161. if (opts.rotate) {
  31162. contextRotate(context, opts);
  31163. }
  31164. drawYAxisGrid(categories, opts, config, context);
  31165. drawXAxis(categories, opts, config, context);
  31166. var _drawAreaDataPoints = drawAreaDataPoints(series, opts, config, context, process),
  31167. xAxisPoints = _drawAreaDataPoints.xAxisPoints,
  31168. calPoints = _drawAreaDataPoints.calPoints,
  31169. eachSpacing = _drawAreaDataPoints.eachSpacing;
  31170. opts.chartData.xAxisPoints = xAxisPoints;
  31171. opts.chartData.calPoints = calPoints;
  31172. opts.chartData.eachSpacing = eachSpacing;
  31173. drawYAxis(series, opts, config, context);
  31174. if (opts.enableMarkLine !== false && process === 1) {
  31175. drawMarkLine(opts, config, context);
  31176. }
  31177. drawLegend(opts.series, opts, config, context, opts.chartData);
  31178. drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
  31179. drawCanvas(opts, context);
  31180. },
  31181. onAnimationFinish: function onAnimationFinish() {
  31182. _this.event.trigger('renderComplete');
  31183. } });
  31184. break;
  31185. case 'ring':
  31186. case 'pie':
  31187. this.animationInstance = new Animation({
  31188. timing: 'easeInOut',
  31189. duration: duration,
  31190. onProcess: function onProcess(process) {
  31191. context.clearRect(0, 0, opts.width, opts.height);
  31192. if (opts.rotate) {
  31193. contextRotate(context, opts);
  31194. }
  31195. opts.chartData.pieData = drawPieDataPoints(series, opts, config, context, process);
  31196. drawLegend(opts.series, opts, config, context, opts.chartData);
  31197. drawToolTipBridge(opts, config, context, process);
  31198. drawCanvas(opts, context);
  31199. },
  31200. onAnimationFinish: function onAnimationFinish() {
  31201. _this.event.trigger('renderComplete');
  31202. } });
  31203. break;
  31204. case 'rose':
  31205. this.animationInstance = new Animation({
  31206. timing: 'easeInOut',
  31207. duration: duration,
  31208. onProcess: function onProcess(process) {
  31209. context.clearRect(0, 0, opts.width, opts.height);
  31210. if (opts.rotate) {
  31211. contextRotate(context, opts);
  31212. }
  31213. opts.chartData.pieData = drawRoseDataPoints(series, opts, config, context, process);
  31214. drawLegend(opts.series, opts, config, context, opts.chartData);
  31215. drawToolTipBridge(opts, config, context, process);
  31216. drawCanvas(opts, context);
  31217. },
  31218. onAnimationFinish: function onAnimationFinish() {
  31219. _this.event.trigger('renderComplete');
  31220. } });
  31221. break;
  31222. case 'radar':
  31223. this.animationInstance = new Animation({
  31224. timing: 'easeInOut',
  31225. duration: duration,
  31226. onProcess: function onProcess(process) {
  31227. context.clearRect(0, 0, opts.width, opts.height);
  31228. if (opts.rotate) {
  31229. contextRotate(context, opts);
  31230. }
  31231. opts.chartData.radarData = drawRadarDataPoints(series, opts, config, context, process);
  31232. drawLegend(opts.series, opts, config, context, opts.chartData);
  31233. drawToolTipBridge(opts, config, context, process);
  31234. drawCanvas(opts, context);
  31235. },
  31236. onAnimationFinish: function onAnimationFinish() {
  31237. _this.event.trigger('renderComplete');
  31238. } });
  31239. break;
  31240. case 'arcbar':
  31241. this.animationInstance = new Animation({
  31242. timing: 'easeInOut',
  31243. duration: duration,
  31244. onProcess: function onProcess(process) {
  31245. context.clearRect(0, 0, opts.width, opts.height);
  31246. if (opts.rotate) {
  31247. contextRotate(context, opts);
  31248. }
  31249. opts.chartData.arcbarData = drawArcbarDataPoints(series, opts, config, context, process);
  31250. drawCanvas(opts, context);
  31251. },
  31252. onAnimationFinish: function onAnimationFinish() {
  31253. _this.event.trigger('renderComplete');
  31254. } });
  31255. break;
  31256. case 'gauge':
  31257. this.animationInstance = new Animation({
  31258. timing: 'easeInOut',
  31259. duration: duration,
  31260. onProcess: function onProcess(process) {
  31261. context.clearRect(0, 0, opts.width, opts.height);
  31262. if (opts.rotate) {
  31263. contextRotate(context, opts);
  31264. }
  31265. opts.chartData.gaugeData = drawGaugeDataPoints(categories, series, opts, config, context, process);
  31266. drawCanvas(opts, context);
  31267. },
  31268. onAnimationFinish: function onAnimationFinish() {
  31269. _this.event.trigger('renderComplete');
  31270. } });
  31271. break;
  31272. case 'candle':
  31273. this.animationInstance = new Animation({
  31274. timing: 'easeIn',
  31275. duration: duration,
  31276. onProcess: function onProcess(process) {
  31277. context.clearRect(0, 0, opts.width, opts.height);
  31278. if (opts.rotate) {
  31279. contextRotate(context, opts);
  31280. }
  31281. drawYAxisGrid(categories, opts, config, context);
  31282. drawXAxis(categories, opts, config, context);
  31283. var _drawCandleDataPoints = drawCandleDataPoints(series, seriesMA, opts, config, context, process),
  31284. xAxisPoints = _drawCandleDataPoints.xAxisPoints,
  31285. calPoints = _drawCandleDataPoints.calPoints,
  31286. eachSpacing = _drawCandleDataPoints.eachSpacing;
  31287. opts.chartData.xAxisPoints = xAxisPoints;
  31288. opts.chartData.calPoints = calPoints;
  31289. opts.chartData.eachSpacing = eachSpacing;
  31290. drawYAxis(series, opts, config, context);
  31291. if (opts.enableMarkLine !== false && process === 1) {
  31292. drawMarkLine(opts, config, context);
  31293. }
  31294. if (seriesMA) {
  31295. drawLegend(seriesMA, opts, config, context, opts.chartData);
  31296. } else {
  31297. drawLegend(opts.series, opts, config, context, opts.chartData);
  31298. }
  31299. drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
  31300. drawCanvas(opts, context);
  31301. },
  31302. onAnimationFinish: function onAnimationFinish() {
  31303. _this.event.trigger('renderComplete');
  31304. } });
  31305. break;}
  31306. }
  31307. // simple event implement
  31308. function Event() {
  31309. this.events = {};
  31310. }
  31311. Event.prototype.addEventListener = function (type, listener) {
  31312. this.events[type] = this.events[type] || [];
  31313. this.events[type].push(listener);
  31314. };
  31315. Event.prototype.trigger = function () {
  31316. for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
  31317. args[_key] = arguments[_key];
  31318. }
  31319. var type = args[0];
  31320. var params = args.slice(1);
  31321. if (!!this.events[type]) {
  31322. this.events[type].forEach(function (listener) {
  31323. try {
  31324. listener.apply(null, params);
  31325. } catch (e) {
  31326. console.error(e);
  31327. }
  31328. });
  31329. }
  31330. };
  31331. var Charts = function Charts(opts) {
  31332. opts.pixelRatio = opts.pixelRatio ? opts.pixelRatio : 1;
  31333. opts.fontSize = opts.fontSize ? opts.fontSize * opts.pixelRatio : 13 * opts.pixelRatio;
  31334. opts.title = assign({}, opts.title);
  31335. opts.subtitle = assign({}, opts.subtitle);
  31336. opts.duration = opts.duration ? opts.duration : 1000;
  31337. opts.yAxis = assign({}, {
  31338. data: [],
  31339. showTitle: false,
  31340. disabled: false,
  31341. disableGrid: false,
  31342. splitNumber: 5,
  31343. gridType: 'solid',
  31344. dashLength: 4 * opts.pixelRatio,
  31345. gridColor: '#cccccc',
  31346. padding: 10,
  31347. fontColor: '#666666' },
  31348. opts.yAxis);
  31349. opts.yAxis.dashLength *= opts.pixelRatio;
  31350. opts.yAxis.padding *= opts.pixelRatio;
  31351. opts.xAxis = assign({}, {
  31352. rotateLabel: false,
  31353. type: 'calibration',
  31354. gridType: 'solid',
  31355. dashLength: 4,
  31356. scrollAlign: 'left',
  31357. boundaryGap: 'center',
  31358. axisLine: true,
  31359. axisLineColor: '#cccccc' },
  31360. opts.xAxis);
  31361. opts.xAxis.dashLength *= opts.pixelRatio;
  31362. opts.legend = assign({}, {
  31363. show: true,
  31364. position: 'bottom',
  31365. float: 'center',
  31366. backgroundColor: 'rgba(0,0,0,0)',
  31367. borderColor: 'rgba(0,0,0,0)',
  31368. borderWidth: 0,
  31369. padding: 5,
  31370. margin: 5,
  31371. itemGap: 10,
  31372. fontSize: opts.fontSize,
  31373. lineHeight: opts.fontSize,
  31374. fontColor: '#333333',
  31375. format: {},
  31376. hiddenColor: '#CECECE' },
  31377. opts.legend);
  31378. opts.legend.borderWidth = opts.legend.borderWidth * opts.pixelRatio;
  31379. opts.legend.itemGap = opts.legend.itemGap * opts.pixelRatio;
  31380. opts.legend.padding = opts.legend.padding * opts.pixelRatio;
  31381. opts.legend.margin = opts.legend.margin * opts.pixelRatio;
  31382. opts.extra = assign({}, opts.extra);
  31383. opts.rotate = opts.rotate ? true : false;
  31384. opts.animation = opts.animation ? true : false;
  31385. opts.rotate = opts.rotate ? true : false;
  31386. var config$$1 = JSON.parse(JSON.stringify(config));
  31387. config$$1.colors = opts.colors ? opts.colors : config$$1.colors;
  31388. config$$1.yAxisTitleWidth = opts.yAxis.disabled !== true && opts.yAxis.title ? config$$1.yAxisTitleWidth : 0;
  31389. if (opts.type == 'pie' || opts.type == 'ring') {
  31390. config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.pie.labelWidth * opts.pixelRatio || config$$1.pieChartLinePadding * opts.pixelRatio;
  31391. }
  31392. if (opts.type == 'rose') {
  31393. config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.rose.labelWidth * opts.pixelRatio || config$$1.pieChartLinePadding * opts.pixelRatio;
  31394. }
  31395. config$$1.pieChartTextPadding = opts.dataLabel === false ? 0 : config$$1.pieChartTextPadding * opts.pixelRatio;
  31396. config$$1.yAxisSplit = opts.yAxis.splitNumber ? opts.yAxis.splitNumber : config.yAxisSplit;
  31397. //屏幕旋转
  31398. config$$1.rotate = opts.rotate;
  31399. if (opts.rotate) {
  31400. var tempWidth = opts.width;
  31401. var tempHeight = opts.height;
  31402. opts.width = tempHeight;
  31403. opts.height = tempWidth;
  31404. }
  31405. //适配高分屏
  31406. opts.padding = opts.padding ? opts.padding : config$$1.padding;
  31407. for (var i = 0; i < 4; i++) {
  31408. opts.padding[i] *= opts.pixelRatio;
  31409. }
  31410. config$$1.yAxisWidth = config.yAxisWidth * opts.pixelRatio;
  31411. config$$1.xAxisHeight = config.xAxisHeight * opts.pixelRatio;
  31412. if (opts.enableScroll && opts.xAxis.scrollShow) {
  31413. config$$1.xAxisHeight += 6 * opts.pixelRatio;
  31414. }
  31415. config$$1.xAxisLineHeight = config.xAxisLineHeight * opts.pixelRatio;
  31416. config$$1.fontSize = opts.fontSize;
  31417. config$$1.titleFontSize = config.titleFontSize * opts.pixelRatio;
  31418. config$$1.subtitleFontSize = config.subtitleFontSize * opts.pixelRatio;
  31419. config$$1.toolTipPadding = config.toolTipPadding * opts.pixelRatio;
  31420. config$$1.toolTipLineHeight = config.toolTipLineHeight * opts.pixelRatio;
  31421. config$$1.columePadding = config.columePadding * opts.pixelRatio;
  31422. opts.$this = opts.$this ? opts.$this : this;
  31423. this.context = uni.createCanvasContext(opts.canvasId, opts.$this);
  31424. /* 兼容原生H5
  31425. this.context = document.getElementById(opts.canvasId).getContext("2d");
  31426. this.context.setStrokeStyle = function(e){ return this.strokeStyle=e; }
  31427. this.context.setLineWidth = function(e){ return this.lineWidth=e; }
  31428. this.context.setLineCap = function(e){ return this.lineCap=e; }
  31429. this.context.setFontSize = function(e){ return this.font=e+"px sans-serif"; }
  31430. this.context.setFillStyle = function(e){ return this.fillStyle=e; }
  31431. this.context.draw = function(){ }
  31432. */
  31433. opts.chartData = {};
  31434. this.event = new Event();
  31435. this.scrollOption = {
  31436. currentOffset: 0,
  31437. startTouchX: 0,
  31438. distance: 0,
  31439. lastMoveTime: 0 };
  31440. this.opts = opts;
  31441. this.config = config$$1;
  31442. drawCharts.call(this, opts.type, opts, config$$1, this.context);
  31443. };
  31444. Charts.prototype.updateData = function () {
  31445. var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  31446. this.opts = assign({}, this.opts, data);
  31447. this.opts.updateData = true;
  31448. var scrollPosition = data.scrollPosition || 'current';
  31449. switch (scrollPosition) {
  31450. case 'current':
  31451. this.opts._scrollDistance_ = this.scrollOption.currentOffset;
  31452. break;
  31453. case 'left':
  31454. this.opts._scrollDistance_ = 0;
  31455. this.scrollOption = {
  31456. currentOffset: 0,
  31457. startTouchX: 0,
  31458. distance: 0,
  31459. lastMoveTime: 0 };
  31460. break;
  31461. case 'right':
  31462. var _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config),
  31463. yAxisWidth = _calYAxisData.yAxisWidth;
  31464. this.config.yAxisWidth = yAxisWidth;
  31465. var offsetLeft = 0;
  31466. var _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),
  31467. xAxisPoints = _getXAxisPoints0.xAxisPoints,
  31468. startX = _getXAxisPoints0.startX,
  31469. endX = _getXAxisPoints0.endX,
  31470. eachSpacing = _getXAxisPoints0.eachSpacing;
  31471. var totalWidth = eachSpacing * (xAxisPoints.length - 1);
  31472. var screenWidth = endX - startX;
  31473. offsetLeft = screenWidth - totalWidth;
  31474. this.scrollOption = {
  31475. currentOffset: offsetLeft,
  31476. startTouchX: offsetLeft,
  31477. distance: 0,
  31478. lastMoveTime: 0 };
  31479. this.opts._scrollDistance_ = offsetLeft;
  31480. break;}
  31481. drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);
  31482. };
  31483. Charts.prototype.zoom = function () {
  31484. var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.opts.xAxis.itemCount;
  31485. if (this.opts.enableScroll !== true) {
  31486. console.log('请启用滚动条后使用!');
  31487. return;
  31488. }
  31489. //当前屏幕中间点
  31490. var centerPoint = Math.round(Math.abs(this.scrollOption.currentOffset) / this.opts.chartData.eachSpacing) + Math.round(
  31491. this.opts.xAxis.itemCount / 2);
  31492. this.opts.animation = false;
  31493. this.opts.xAxis.itemCount = val.itemCount;
  31494. //重新计算x轴偏移距离
  31495. var _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config),
  31496. yAxisWidth = _calYAxisData.yAxisWidth;
  31497. this.config.yAxisWidth = yAxisWidth;
  31498. var offsetLeft = 0;
  31499. var _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),
  31500. xAxisPoints = _getXAxisPoints0.xAxisPoints,
  31501. startX = _getXAxisPoints0.startX,
  31502. endX = _getXAxisPoints0.endX,
  31503. eachSpacing = _getXAxisPoints0.eachSpacing;
  31504. var centerLeft = eachSpacing * centerPoint;
  31505. var screenWidth = endX - startX;
  31506. var MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1);
  31507. offsetLeft = screenWidth / 2 - centerLeft;
  31508. if (offsetLeft > 0) {
  31509. offsetLeft = 0;
  31510. }
  31511. if (offsetLeft < MaxLeft) {
  31512. offsetLeft = MaxLeft;
  31513. }
  31514. this.scrollOption = {
  31515. currentOffset: offsetLeft,
  31516. startTouchX: offsetLeft,
  31517. distance: 0,
  31518. lastMoveTime: 0 };
  31519. this.opts._scrollDistance_ = offsetLeft;
  31520. drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);
  31521. };
  31522. Charts.prototype.stopAnimation = function () {
  31523. this.animationInstance && this.animationInstance.stop();
  31524. };
  31525. Charts.prototype.addEventListener = function (type, listener) {
  31526. this.event.addEventListener(type, listener);
  31527. };
  31528. Charts.prototype.getCurrentDataIndex = function (e) {
  31529. var touches = null;
  31530. if (e.changedTouches) {
  31531. touches = e.changedTouches[0];
  31532. } else {
  31533. touches = e.mp.changedTouches[0];
  31534. }
  31535. if (touches) {
  31536. var _touches$ = getTouches(touches, this.opts, e);
  31537. if (this.opts.type === 'pie' || this.opts.type === 'ring' || this.opts.type === 'rose') {
  31538. return findPieChartCurrentIndex({
  31539. x: _touches$.x,
  31540. y: _touches$.y },
  31541. this.opts.chartData.pieData);
  31542. } else if (this.opts.type === 'radar') {
  31543. return findRadarChartCurrentIndex({
  31544. x: _touches$.x,
  31545. y: _touches$.y },
  31546. this.opts.chartData.radarData, this.opts.categories.length);
  31547. } else if (this.opts.type === 'funnel') {
  31548. return findFunnelChartCurrentIndex({
  31549. x: _touches$.x,
  31550. y: _touches$.y },
  31551. this.opts.chartData.funnelData);
  31552. } else if (this.opts.type === 'map') {
  31553. return findMapChartCurrentIndex({
  31554. x: _touches$.x,
  31555. y: _touches$.y },
  31556. this.opts);
  31557. } else if (this.opts.type === 'word') {
  31558. return findWordChartCurrentIndex({
  31559. x: _touches$.x,
  31560. y: _touches$.y },
  31561. this.opts.chartData.wordCloudData);
  31562. } else {
  31563. return findCurrentIndex({
  31564. x: _touches$.x,
  31565. y: _touches$.y },
  31566. this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset));
  31567. }
  31568. }
  31569. return -1;
  31570. };
  31571. Charts.prototype.getLegendDataIndex = function (e) {
  31572. var touches = null;
  31573. if (e.changedTouches) {
  31574. touches = e.changedTouches[0];
  31575. } else {
  31576. touches = e.mp.changedTouches[0];
  31577. }
  31578. if (touches) {
  31579. var _touches$ = getTouches(touches, this.opts, e);
  31580. return findLegendIndex({
  31581. x: _touches$.x,
  31582. y: _touches$.y },
  31583. this.opts.chartData.legendData);
  31584. }
  31585. return -1;
  31586. };
  31587. Charts.prototype.touchLegend = function (e) {
  31588. var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  31589. var touches = null;
  31590. if (e.changedTouches) {
  31591. touches = e.changedTouches[0];
  31592. } else {
  31593. touches = e.mp.changedTouches[0];
  31594. }
  31595. if (touches) {
  31596. var _touches$ = getTouches(touches, this.opts, e);
  31597. var index = this.getLegendDataIndex(e);
  31598. if (index >= 0) {
  31599. this.opts.series[index].show = !this.opts.series[index].show;
  31600. this.opts.animation = option.animation ? true : false;
  31601. this.opts._scrollDistance_ = this.scrollOption.currentOffset;
  31602. drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);
  31603. }
  31604. }
  31605. };
  31606. Charts.prototype.showToolTip = function (e) {
  31607. var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  31608. var touches = null;
  31609. if (e.changedTouches) {
  31610. touches = e.changedTouches[0];
  31611. } else {
  31612. touches = e.mp.changedTouches[0];
  31613. }
  31614. if (!touches) {
  31615. }
  31616. var _touches$ = getTouches(touches, this.opts, e);
  31617. var currentOffset = this.scrollOption.currentOffset;
  31618. var opts = assign({}, this.opts, {
  31619. _scrollDistance_: currentOffset,
  31620. animation: false });
  31621. if (this.opts.type === 'line' || this.opts.type === 'area' || this.opts.type === 'column') {
  31622. var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;
  31623. if (index > -1) {
  31624. var seriesData = getSeriesDataItem(this.opts.series, index);
  31625. if (seriesData.length !== 0) {
  31626. var _getToolTipData = getToolTipData(seriesData, this.opts.chartData.calPoints, index, this.opts.categories, option),
  31627. textList = _getToolTipData.textList,
  31628. offset = _getToolTipData.offset;
  31629. offset.y = _touches$.y;
  31630. opts.tooltip = {
  31631. textList: option.textList ? option.textList : textList,
  31632. offset: offset,
  31633. option: option,
  31634. index: index };
  31635. }
  31636. }
  31637. drawCharts.call(this, opts.type, opts, this.config, this.context);
  31638. }
  31639. if (this.opts.type === 'mix') {
  31640. var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;
  31641. if (index > -1) {
  31642. var currentOffset = this.scrollOption.currentOffset;
  31643. var opts = assign({}, this.opts, {
  31644. _scrollDistance_: currentOffset,
  31645. animation: false });
  31646. var seriesData = getSeriesDataItem(this.opts.series, index);
  31647. if (seriesData.length !== 0) {
  31648. var _getMixToolTipData = getMixToolTipData(seriesData, this.opts.chartData.calPoints, index, this.opts.categories, option),
  31649. textList = _getMixToolTipData.textList,
  31650. offset = _getMixToolTipData.offset;
  31651. offset.y = _touches$.y;
  31652. opts.tooltip = {
  31653. textList: option.textList ? option.textList : textList,
  31654. offset: offset,
  31655. option: option,
  31656. index: index };
  31657. }
  31658. }
  31659. drawCharts.call(this, opts.type, opts, this.config, this.context);
  31660. }
  31661. if (this.opts.type === 'candle') {
  31662. var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;
  31663. if (index > -1) {
  31664. var currentOffset = this.scrollOption.currentOffset;
  31665. var opts = assign({}, this.opts, {
  31666. _scrollDistance_: currentOffset,
  31667. animation: false });
  31668. var seriesData = getSeriesDataItem(this.opts.series, index);
  31669. if (seriesData.length !== 0) {
  31670. var _getToolTipData = getCandleToolTipData(this.opts.series[0].data, seriesData, this.opts.chartData.calPoints,
  31671. index, this.opts.categories, this.opts.extra.candle, option),
  31672. textList = _getToolTipData.textList,
  31673. offset = _getToolTipData.offset;
  31674. offset.y = _touches$.y;
  31675. opts.tooltip = {
  31676. textList: option.textList ? option.textList : textList,
  31677. offset: offset,
  31678. option: option,
  31679. index: index };
  31680. }
  31681. }
  31682. drawCharts.call(this, opts.type, opts, this.config, this.context);
  31683. }
  31684. if (this.opts.type === 'pie' || this.opts.type === 'ring' || this.opts.type === 'rose' || this.opts.type === 'funnel') {
  31685. var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;
  31686. if (index > -1) {
  31687. var currentOffset = this.scrollOption.currentOffset;
  31688. var opts = assign({}, this.opts, {
  31689. _scrollDistance_: currentOffset,
  31690. animation: false });
  31691. var seriesData = this.opts._series_[index];
  31692. var textList = [{
  31693. text: option.format ? option.format(seriesData) : seriesData.name + ': ' + seriesData.data,
  31694. color: seriesData.color }];
  31695. var offset = {
  31696. x: _touches$.x,
  31697. y: _touches$.y };
  31698. opts.tooltip = {
  31699. textList: option.textList ? option.textList : textList,
  31700. offset: offset,
  31701. option: option,
  31702. index: index };
  31703. }
  31704. drawCharts.call(this, opts.type, opts, this.config, this.context);
  31705. }
  31706. if (this.opts.type === 'map' || this.opts.type === 'word') {
  31707. var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;
  31708. if (index > -1) {
  31709. var currentOffset = this.scrollOption.currentOffset;
  31710. var opts = assign({}, this.opts, {
  31711. _scrollDistance_: currentOffset,
  31712. animation: false });
  31713. var seriesData = this.opts._series_[index];
  31714. var textList = [{
  31715. text: option.format ? option.format(seriesData) : seriesData.properties.name,
  31716. color: seriesData.color }];
  31717. var offset = {
  31718. x: _touches$.x,
  31719. y: _touches$.y };
  31720. opts.tooltip = {
  31721. textList: option.textList ? option.textList : textList,
  31722. offset: offset,
  31723. option: option,
  31724. index: index };
  31725. }
  31726. opts.updateData = false;
  31727. drawCharts.call(this, opts.type, opts, this.config, this.context);
  31728. }
  31729. if (this.opts.type === 'radar') {
  31730. var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;
  31731. if (index > -1) {
  31732. var currentOffset = this.scrollOption.currentOffset;
  31733. var opts = assign({}, this.opts, {
  31734. _scrollDistance_: currentOffset,
  31735. animation: false });
  31736. var seriesData = getSeriesDataItem(this.opts.series, index);
  31737. if (seriesData.length !== 0) {
  31738. var textList = seriesData.map(function (item) {
  31739. return {
  31740. text: option.format ? option.format(item) : item.name + ': ' + item.data,
  31741. color: item.color };
  31742. });
  31743. var offset = {
  31744. x: _touches$.x,
  31745. y: _touches$.y };
  31746. opts.tooltip = {
  31747. textList: option.textList ? option.textList : textList,
  31748. offset: offset,
  31749. option: option,
  31750. index: index };
  31751. }
  31752. }
  31753. drawCharts.call(this, opts.type, opts, this.config, this.context);
  31754. }
  31755. };
  31756. Charts.prototype.translate = function (distance) {
  31757. this.scrollOption = {
  31758. currentOffset: distance,
  31759. startTouchX: distance,
  31760. distance: 0,
  31761. lastMoveTime: 0 };
  31762. var opts = assign({}, this.opts, {
  31763. _scrollDistance_: distance,
  31764. animation: false });
  31765. drawCharts.call(this, this.opts.type, opts, this.config, this.context);
  31766. };
  31767. Charts.prototype.scrollStart = function (e) {
  31768. var touches = null;
  31769. if (e.changedTouches) {
  31770. touches = e.changedTouches[0];
  31771. } else {
  31772. touches = e.mp.changedTouches[0];
  31773. }
  31774. var _touches$ = getTouches(touches, this.opts, e);
  31775. if (touches && this.opts.enableScroll === true) {
  31776. this.scrollOption.startTouchX = _touches$.x;
  31777. }
  31778. };
  31779. Charts.prototype.scroll = function (e) {
  31780. if (this.scrollOption.lastMoveTime === 0) {
  31781. this.scrollOption.lastMoveTime = Date.now();
  31782. }
  31783. var Limit = this.opts.extra.touchMoveLimit || 20;
  31784. var currMoveTime = Date.now();
  31785. var duration = currMoveTime - this.scrollOption.lastMoveTime;
  31786. if (duration < Math.floor(1000 / Limit)) return;
  31787. this.scrollOption.lastMoveTime = currMoveTime;
  31788. var touches = null;
  31789. if (e.changedTouches) {
  31790. touches = e.changedTouches[0];
  31791. } else {
  31792. touches = e.mp.changedTouches[0];
  31793. }
  31794. if (touches && this.opts.enableScroll === true) {
  31795. var _touches$ = getTouches(touches, this.opts, e);
  31796. var _distance;
  31797. _distance = _touches$.x - this.scrollOption.startTouchX;
  31798. var currentOffset = this.scrollOption.currentOffset;
  31799. var validDistance = calValidDistance(this, currentOffset + _distance, this.opts.chartData, this.config, this.opts);
  31800. this.scrollOption.distance = _distance = validDistance - currentOffset;
  31801. var opts = assign({}, this.opts, {
  31802. _scrollDistance_: currentOffset + _distance,
  31803. animation: false });
  31804. drawCharts.call(this, opts.type, opts, this.config, this.context);
  31805. return currentOffset + _distance;
  31806. }
  31807. };
  31808. Charts.prototype.scrollEnd = function (e) {
  31809. if (this.opts.enableScroll === true) {
  31810. var _scrollOption = this.scrollOption,
  31811. currentOffset = _scrollOption.currentOffset,
  31812. distance = _scrollOption.distance;
  31813. this.scrollOption.currentOffset = currentOffset + distance;
  31814. this.scrollOption.distance = 0;
  31815. }
  31816. };
  31817. if ( true && typeof module.exports === "object") {
  31818. module.exports = Charts;
  31819. //export default Charts;//建议使用nodejs的module导出方式,如报错请使用export方式导出
  31820. }
  31821. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["default"]))
  31822. /***/ }),
  31823. /***/ 88:
  31824. /*!********************************************************************************************!*\
  31825. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/avatarGroup.js ***!
  31826. \********************************************************************************************/
  31827. /*! no static exports found */
  31828. /***/ (function(module, exports, __webpack_require__) {
  31829. "use strict";
  31830. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  31831. * @Author : LQ
  31832. * @Description :
  31833. * @version : 1.0
  31834. * @Date : 2021-08-20 16:44:21
  31835. * @LastAuthor : LQ
  31836. * @lastTime : 2021-08-20 16:49:55
  31837. * @FilePath : /u-view2.0/uview-ui/libs/config/props/avatarGroup.js
  31838. */var _default =
  31839. {
  31840. // avatarGroup 组件
  31841. avatarGroup: {
  31842. urls: function urls() {return [];},
  31843. maxCount: 5,
  31844. shape: 'circle',
  31845. mode: 'scaleToFill',
  31846. showMore: true,
  31847. size: 40,
  31848. keyName: '',
  31849. gap: 0.5,
  31850. extraValue: 0 } };exports.default = _default;
  31851. /***/ }),
  31852. /***/ 89:
  31853. /*!****************************************************************************************!*\
  31854. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/backtop.js ***!
  31855. \****************************************************************************************/
  31856. /*! no static exports found */
  31857. /***/ (function(module, exports, __webpack_require__) {
  31858. "use strict";
  31859. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  31860. * @Author : LQ
  31861. * @Description :
  31862. * @version : 1.0
  31863. * @Date : 2021-08-20 16:44:21
  31864. * @LastAuthor : LQ
  31865. * @lastTime : 2021-08-20 16:50:18
  31866. * @FilePath : /u-view2.0/uview-ui/libs/config/props/backtop.js
  31867. */var _default =
  31868. {
  31869. // backtop组件
  31870. backtop: {
  31871. mode: 'circle',
  31872. icon: 'arrow-upward',
  31873. text: '',
  31874. duration: 100,
  31875. scrollTop: 0,
  31876. top: 400,
  31877. bottom: 100,
  31878. right: 20,
  31879. zIndex: 9,
  31880. iconStyle: function iconStyle() {return {
  31881. color: '#909399',
  31882. fontSize: '19px' };} } };exports.default = _default;
  31883. /***/ }),
  31884. /***/ 9:
  31885. /*!**********************************************************!*\
  31886. !*** ./node_modules/@babel/runtime/regenerator/index.js ***!
  31887. \**********************************************************/
  31888. /*! no static exports found */
  31889. /***/ (function(module, exports, __webpack_require__) {
  31890. module.exports = __webpack_require__(/*! regenerator-runtime */ 10);
  31891. /***/ }),
  31892. /***/ 90:
  31893. /*!**************************************************************************************!*\
  31894. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/badge.js ***!
  31895. \**************************************************************************************/
  31896. /*! no static exports found */
  31897. /***/ (function(module, exports, __webpack_require__) {
  31898. "use strict";
  31899. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  31900. * @Author : LQ
  31901. * @Description :
  31902. * @version : 1.0
  31903. * @Date : 2021-08-20 16:44:21
  31904. * @LastAuthor : LQ
  31905. * @lastTime : 2021-08-23 19:51:50
  31906. * @FilePath : /u-view2.0/uview-ui/libs/config/props/badge.js
  31907. */var _default =
  31908. {
  31909. // 徽标数组件
  31910. badge: {
  31911. isDot: false,
  31912. value: '',
  31913. show: true,
  31914. max: 999,
  31915. type: 'error',
  31916. showZero: false,
  31917. bgColor: null,
  31918. color: null,
  31919. shape: 'circle',
  31920. numberType: 'overflow',
  31921. offset: function offset() {return [];},
  31922. inverted: false,
  31923. absolute: false } };exports.default = _default;
  31924. /***/ }),
  31925. /***/ 91:
  31926. /*!***************************************************************************************!*\
  31927. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/button.js ***!
  31928. \***************************************************************************************/
  31929. /*! no static exports found */
  31930. /***/ (function(module, exports, __webpack_require__) {
  31931. "use strict";
  31932. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  31933. * @Author : LQ
  31934. * @Description :
  31935. * @version : 1.0
  31936. * @Date : 2021-08-20 16:44:21
  31937. * @LastAuthor : LQ
  31938. * @lastTime : 2021-08-20 16:51:27
  31939. * @FilePath : /u-view2.0/uview-ui/libs/config/props/button.js
  31940. */var _default =
  31941. {
  31942. // button组件
  31943. button: {
  31944. hairline: false,
  31945. type: 'info',
  31946. size: 'normal',
  31947. shape: 'square',
  31948. plain: false,
  31949. disabled: false,
  31950. loading: false,
  31951. loadingText: '',
  31952. loadingMode: 'spinner',
  31953. loadingSize: 15,
  31954. openType: '',
  31955. formType: '',
  31956. appParameter: '',
  31957. hoverStopPropagation: true,
  31958. lang: 'en',
  31959. sessionFrom: '',
  31960. sendMessageTitle: '',
  31961. sendMessagePath: '',
  31962. sendMessageImg: '',
  31963. showMessageCard: false,
  31964. dataName: '',
  31965. throttleTime: 0,
  31966. hoverStartTime: 0,
  31967. hoverStayTime: 200,
  31968. text: '',
  31969. icon: '',
  31970. iconColor: '',
  31971. color: '' } };exports.default = _default;
  31972. /***/ }),
  31973. /***/ 92:
  31974. /*!*****************************************************************************************!*\
  31975. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/calendar.js ***!
  31976. \*****************************************************************************************/
  31977. /*! no static exports found */
  31978. /***/ (function(module, exports, __webpack_require__) {
  31979. "use strict";
  31980. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  31981. * @Author : LQ
  31982. * @Description :
  31983. * @version : 1.0
  31984. * @Date : 2021-08-20 16:44:21
  31985. * @LastAuthor : LQ
  31986. * @lastTime : 2021-08-20 16:52:43
  31987. * @FilePath : /u-view2.0/uview-ui/libs/config/props/calendar.js
  31988. */var _default =
  31989. {
  31990. // calendar 组件
  31991. calendar: {
  31992. title: '日期选择',
  31993. showTitle: true,
  31994. showSubtitle: true,
  31995. mode: 'single',
  31996. startText: '开始',
  31997. endText: '结束',
  31998. customList: function customList() {return [];},
  31999. color: '#3c9cff',
  32000. minDate: 0,
  32001. maxDate: 0,
  32002. defaultDate: null,
  32003. maxCount: Number.MAX_SAFE_INTEGER, // Infinity
  32004. rowHeight: 56,
  32005. formatter: null,
  32006. showLunar: false,
  32007. showMark: true,
  32008. confirmText: '确定',
  32009. confirmDisabledText: '确定',
  32010. show: false,
  32011. closeOnClickOverlay: false,
  32012. readonly: false,
  32013. showConfirm: true,
  32014. maxRange: Number.MAX_SAFE_INTEGER, // Infinity
  32015. rangePrompt: '',
  32016. showRangePrompt: true,
  32017. allowSameDay: false,
  32018. round: 0,
  32019. monthNum: 3 } };exports.default = _default;
  32020. /***/ }),
  32021. /***/ 93:
  32022. /*!********************************************************************************************!*\
  32023. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/carKeyboard.js ***!
  32024. \********************************************************************************************/
  32025. /*! no static exports found */
  32026. /***/ (function(module, exports, __webpack_require__) {
  32027. "use strict";
  32028. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  32029. * @Author : LQ
  32030. * @Description :
  32031. * @version : 1.0
  32032. * @Date : 2021-08-20 16:44:21
  32033. * @LastAuthor : LQ
  32034. * @lastTime : 2021-08-20 16:53:20
  32035. * @FilePath : /u-view2.0/uview-ui/libs/config/props/carKeyboard.js
  32036. */var _default =
  32037. {
  32038. // 车牌号键盘
  32039. carKeyboard: {
  32040. random: false } };exports.default = _default;
  32041. /***/ }),
  32042. /***/ 94:
  32043. /*!*************************************************************************************!*\
  32044. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/cell.js ***!
  32045. \*************************************************************************************/
  32046. /*! no static exports found */
  32047. /***/ (function(module, exports, __webpack_require__) {
  32048. "use strict";
  32049. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  32050. * @Author : LQ
  32051. * @Description :
  32052. * @version : 1.0
  32053. * @Date : 2021-08-20 16:44:21
  32054. * @LastAuthor : LQ
  32055. * @lastTime : 2021-08-23 20:53:09
  32056. * @FilePath : /u-view2.0/uview-ui/libs/config/props/cell.js
  32057. */var _default =
  32058. {
  32059. // cell组件的props
  32060. cell: {
  32061. customClass: '',
  32062. title: '',
  32063. label: '',
  32064. value: '',
  32065. icon: '',
  32066. disabled: false,
  32067. border: true,
  32068. center: false,
  32069. url: '',
  32070. linkType: 'navigateTo',
  32071. clickable: false,
  32072. isLink: false,
  32073. required: false,
  32074. arrowDirection: '',
  32075. iconStyle: {},
  32076. rightIconStyle: {},
  32077. rightIcon: 'arrow-right',
  32078. titleStyle: {},
  32079. size: '',
  32080. stop: true,
  32081. name: '' } };exports.default = _default;
  32082. /***/ }),
  32083. /***/ 95:
  32084. /*!******************************************************************************************!*\
  32085. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/cellGroup.js ***!
  32086. \******************************************************************************************/
  32087. /*! no static exports found */
  32088. /***/ (function(module, exports, __webpack_require__) {
  32089. "use strict";
  32090. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  32091. * @Author : LQ
  32092. * @Description :
  32093. * @version : 1.0
  32094. * @Date : 2021-08-20 16:44:21
  32095. * @LastAuthor : LQ
  32096. * @lastTime : 2021-08-20 16:54:16
  32097. * @FilePath : /u-view2.0/uview-ui/libs/config/props/cellGroup.js
  32098. */var _default =
  32099. {
  32100. // cell-group组件的props
  32101. cellGroup: {
  32102. title: '',
  32103. border: true,
  32104. customStyle: {} } };exports.default = _default;
  32105. /***/ }),
  32106. /***/ 96:
  32107. /*!*****************************************************************************************!*\
  32108. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/checkbox.js ***!
  32109. \*****************************************************************************************/
  32110. /*! no static exports found */
  32111. /***/ (function(module, exports, __webpack_require__) {
  32112. "use strict";
  32113. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  32114. * @Author : LQ
  32115. * @Description :
  32116. * @version : 1.0
  32117. * @Date : 2021-08-20 16:44:21
  32118. * @LastAuthor : LQ
  32119. * @lastTime : 2021-08-23 21:06:59
  32120. * @FilePath : /u-view2.0/uview-ui/libs/config/props/checkbox.js
  32121. */var _default =
  32122. {
  32123. // checkbox组件
  32124. checkbox: {
  32125. name: '',
  32126. shape: '',
  32127. size: '',
  32128. checkbox: false,
  32129. disabled: '',
  32130. activeColor: '',
  32131. inactiveColor: '',
  32132. iconSize: '',
  32133. iconColor: '',
  32134. label: '',
  32135. labelSize: '',
  32136. labelColor: '',
  32137. labelDisabled: '' } };exports.default = _default;
  32138. /***/ }),
  32139. /***/ 97:
  32140. /*!**********************************************************************************************!*\
  32141. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/checkboxGroup.js ***!
  32142. \**********************************************************************************************/
  32143. /*! no static exports found */
  32144. /***/ (function(module, exports, __webpack_require__) {
  32145. "use strict";
  32146. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  32147. * @Author : LQ
  32148. * @Description :
  32149. * @version : 1.0
  32150. * @Date : 2021-08-20 16:44:21
  32151. * @LastAuthor : LQ
  32152. * @lastTime : 2021-08-20 16:54:47
  32153. * @FilePath : /u-view2.0/uview-ui/libs/config/props/checkboxGroup.js
  32154. */var _default =
  32155. {
  32156. // checkbox-group组件
  32157. checkboxGroup: {
  32158. name: '',
  32159. value: function value() {return [];},
  32160. shape: 'square',
  32161. disabled: false,
  32162. activeColor: '#2979ff',
  32163. inactiveColor: '#c8c9cc',
  32164. size: 18,
  32165. placement: 'row',
  32166. labelSize: 14,
  32167. labelColor: '#303133',
  32168. labelDisabled: false,
  32169. iconColor: '#ffffff',
  32170. iconSize: 12,
  32171. iconPlacement: 'left',
  32172. borderBottom: false } };exports.default = _default;
  32173. /***/ }),
  32174. /***/ 98:
  32175. /*!***********************************************************************************************!*\
  32176. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/circleProgress.js ***!
  32177. \***********************************************************************************************/
  32178. /*! no static exports found */
  32179. /***/ (function(module, exports, __webpack_require__) {
  32180. "use strict";
  32181. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  32182. * @Author : LQ
  32183. * @Description :
  32184. * @version : 1.0
  32185. * @Date : 2021-08-20 16:44:21
  32186. * @LastAuthor : LQ
  32187. * @lastTime : 2021-08-20 16:55:02
  32188. * @FilePath : /u-view2.0/uview-ui/libs/config/props/circleProgress.js
  32189. */var _default =
  32190. {
  32191. // circleProgress 组件
  32192. circleProgress: {
  32193. percentage: 30 } };exports.default = _default;
  32194. /***/ }),
  32195. /***/ 99:
  32196. /*!*************************************************************************************!*\
  32197. !*** D:/data/zhonghong/saber-weixin/uni_modules/uview-ui/libs/config/props/code.js ***!
  32198. \*************************************************************************************/
  32199. /*! no static exports found */
  32200. /***/ (function(module, exports, __webpack_require__) {
  32201. "use strict";
  32202. Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; /*
  32203. * @Author : LQ
  32204. * @Description :
  32205. * @version : 1.0
  32206. * @Date : 2021-08-20 16:44:21
  32207. * @LastAuthor : LQ
  32208. * @lastTime : 2021-08-20 16:55:27
  32209. * @FilePath : /u-view2.0/uview-ui/libs/config/props/code.js
  32210. */var _default =
  32211. {
  32212. // code 组件
  32213. code: {
  32214. seconds: 60,
  32215. startText: '获取验证码',
  32216. changeText: 'X秒重新获取',
  32217. endText: '重新获取',
  32218. keepRunning: false,
  32219. uniqueKey: '' } };exports.default = _default;
  32220. /***/ }),
  32221. /***/ 992:
  32222. /*!*********************************************************!*\
  32223. !*** D:/data/zhonghong/saber-weixin/api/points_mall.js ***!
  32224. \*********************************************************/
  32225. /*! no static exports found */
  32226. /***/ (function(module, exports, __webpack_require__) {
  32227. "use strict";
  32228. Object.defineProperty(exports, "__esModule", { value: true });exports.getStoreIntegral = getStoreIntegral;
  32229. var _request = _interopRequireDefault(__webpack_require__(/*! @/utils/request.js */ 18));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} // +----------------------------------------------------------------------
  32230. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  32231. // +----------------------------------------------------------------------
  32232. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  32233. // +----------------------------------------------------------------------
  32234. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  32235. // +----------------------------------------------------------------------
  32236. // | Author: CRMEB Team <admin@crmeb.com>
  32237. // +----------------------------------------------------------------------
  32238. /**
  32239. * 积分商城
  32240. */function getStoreIntegral(data) {return _request.default.get("store_integral/index", data);}
  32241. /***/ })
  32242. }]);
  32243. //# sourceMappingURL=../../.sourcemap/mp-weixin/common/vendor.js.map