From a02c287715a47f2359cd3c18b5b87a0c961368c2 Mon Sep 17 00:00:00 2001 From: yaoqin <497681109@qq.com> Date: Thu, 20 Nov 2025 14:28:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A5=E5=B8=B8=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- power_leasing/src/utils/amount.js | 11 +- power_leasing/src/views/cart/index.vue | 119 +++++++++++++++-- .../src/views/productDetail/index.js | 6 +- .../src/views/productDetail/index.vue | 124 +++++++++++++++++- power_leasing/test.zip | Bin 1848372 -> 1854984 bytes power_leasing/test/css/app.ca4b7f36.css | 1 + power_leasing/test/index.html | 2 +- power_leasing/test/js/app.d49ccc2c.js | 2 + power_leasing/test/js/app.d49ccc2c.js.map | 1 + 9 files changed, 246 insertions(+), 20 deletions(-) create mode 100644 power_leasing/test/css/app.ca4b7f36.css create mode 100644 power_leasing/test/js/app.d49ccc2c.js create mode 100644 power_leasing/test/js/app.d49ccc2c.js.map diff --git a/power_leasing/src/utils/amount.js b/power_leasing/src/utils/amount.js index fb5c5fd..2b965dc 100644 --- a/power_leasing/src/utils/amount.js +++ b/power_leasing/src/utils/amount.js @@ -5,10 +5,8 @@ // - 其他币种: 最多6位小数 // 返回 { text, truncated, full } -export function getMaxDecimalsByCoin(coin) { - const c = (coin || '').toString().toUpperCase(); - if (c === 'ETH') return 8; - // USDT 与其他币种都按 6 位 +export function getMaxDecimalsByCoin() { + // 全站统一:最多 6 位小数 return 6; } @@ -36,3 +34,8 @@ export function truncateAmountByCoin(value, coin) { return truncateAmountRaw(value, max); } +// 默认 6 位截断(非币种语境也可复用) +export function truncateTo6(value) { + return truncateAmountRaw(value, 6); +} + diff --git a/power_leasing/src/views/cart/index.vue b/power_leasing/src/views/cart/index.vue index 044bf4b..34e3809 100644 --- a/power_leasing/src/views/cart/index.vue +++ b/power_leasing/src/views/cart/index.vue @@ -43,17 +43,94 @@ - - - + + + + + - + - + + + + - QptEEPc9y2{Wb)|AUR;d0*Jr z&ZVBu7si|%T9$9yv)(sG8OaWT(6QZbM=QhLa!$5d$fn5n9iFKMBJi%B9pG($&-!kq z8B0Ubt8Tl0I-ci;H|V8=AKZ4epXa-VH|Vw2rBaq2q@lc47>a`oilGcrBZb_%0D|_? zamG^Qqku@kc;c|-8wE(l*|Q#-Kv5y06g>vnVwyVi_TF8bw~rQDAj= zFYNO17YAE63wK#i&2A)-NPgEnfL=45!mVS#7hmpoc~_1!zPr&lb#d|TSK(T6u;CX> zI5l{m8}?maLYM$xM@Q1+`kXFJA1B?Jat5%u5E@<~HB^ zOMk~P5%gym;(5gAr5Sb7`DdH(56n319B6=l0DY%`nxGUg{x>W8{=+>GDg&DiEVz^? zO30@ta89NQA>gT1ny3_Nvt{GtKlD2Jmg*H=nGc9b!S3TO;w@CrS(bAt@? z_!P*@#gvZ}4h8ZOM-hl&XowhWS7yylt5{YVkwz+4DUO!pdgCzwY0}idgN>U*+XK{p z_IFC>-^57^XBtnfmcqu~#&>eCkCxFn%u?E39z#Y%6t`DEKeEUQP^AVCn0185+IGn; zpYOtAoi#$9drqlRu0TuU;~drpb4I6WNxEG?T8? zD1SY?bUV5QQI-XU#S%9g%LZg2#RDpzC;ZwSOg>%`C-!F zVLDf4!fV5o8OxfBV^I#@7G@9;9P?8m zC2~L!FV>7peDc_24!tX9cBU*=uLwzO?bw_j(M2Ca_e#bfB&F~y$8at~;?Nq6hvXMy zJiVQ7K&=>b8&XTX5+Sq57tKVK)euo+M~Sv1kky})g}Ez@Pe1wHOS^yf^O%wSzsuH! zL(@S|*L*Ih7ptTw!TKqGrbvW~79nw-mX+CYSI-W?bTHz+~xSiPbuyOZw)1-u2)@G4N`z9%2nvGejt1w zp`J*o2uUVT?*IGp`7MQDFfI^=bh2g2;K#SFDEz&HeE|m=xT<|a!HZF$01^@M=IW+T)m31 zp=>2sO3nxw*;+*G`B3Jq|13ZEfA_vS{7UWj|Le~^JBI&%^ygP!+x?pR=FZB#P5+S_ z`2Frz!Yv4yGZF~S`4Z8+6gXDeIqifitjxPX#_0{c30NpJ-P_%}G1c9Z>e=M)=pICSKau=pwtqge-LvYmy;+~_;77mmVuX^s^cYWeb3}fXUWj359Q6@h zv177l<(asDPR1OP%2VUsj1okPmjW)I7zuheuW~U?$m4GVacN{ht|xPgSLPNTALFde zOP8;r$16yJvj>+hA74H_^TWgA%ZHwLlPA18XS|08mkyowKD?ndjEv7u*oLu95Wcv4 zlQ5toQ;=FF08UdEa6nGSPY)j;iutf@KhWw(oJiDvNr*5Nyw;`&*;K8Da&dFf7dR!o zifRc6)S_%z@d9lAh5Y`6$eN{)OFEs#6l%(oy?d)Pdl{!t$Alz>dfI;kovFVv&fCw7 zb0O%#KbK%0!Mb`$1-}9k7w7AVy-+j1f8y<+XUw`3!i&7L#k7S9G6QClpCALH1ShDa z->`~*swPT-f_-|>doc?ZYJV7U%YIpd#M6axt~i=^YjJ2#sYq50!%N?G3Fi%V<~(^i~~uk%dw_m z0OP8izT+L9TzoXcD`sKt*uwn1rR&$c>5oKz79L8zgJ`N@{=v&L7%1K!QqUA7%h3r_ z>o%e9I1$5CiC1QV3`nCTn$#|X)Ny^r?5d^uY*kWDPk*9cTTCV`$~*qJLXI&yNz-8l z5Fb-2VGv3m_}@5-|9Fh~DZf7C9sLGanRoM?H+8#l{0Ih~d~^byaIPco!iA-&6AN>H zr@hIm!nTnc=+fEITgYg9&XRX?1vr8tHhL}Ot|j%QDhXo}ZHamla)jM6vqj7(`C7I< zj46KN-ATV~9}bZQ(5y9>&DASazv@V3UmUg{Cm$*&b@qNydVoNoeLXdjaJs}dvvRFo z4brvBmW%=CIhmRqB2+Tl=_{1$Z)B@~b;2%wfmUNNO#BIj{Y;)ly|0EyY*kBH;KJ@T;YKYKg&x*_O6OP; z9a;ylA7Um{2jxc;<*FF`_^mg0^mZpO>sx);t-7Nnc=L+*>cn61-wxDr@Z#m&JDm8- zue`y}Mk>VvL)6q8{4J)kD=`k}w2uJl$3;Qk#O<$@&8P||p)!gbM>q7GN0wg&V0tn^ zroE)oOVJ4_XD|HP5EP7nkozKk5MyX7+Y~s`Y_$U%E9_)my&n0DHlz2iHV;U#{B*)QyYZEPi>_0yil)QFmimF7(vgayT=uLV8%XoE<9+p_OSG`2EO0 z1+y}N6k>Ut-d6<{`j*)tewvnM81)Kz5@s>Iaf&fP`q!9I-W-aye`;%gbi$lB4A_ob ztCAbV+emSB{YsJUCgU+brn}lB{^o%5C?TPCOumxM3{>(5(wtpo2RdWNDJPTB21oyo zCyY4=T5}*xCkiB8RMlS9MF3G1mfKNURLZa^u?Miu{5@h=`tW zZO$yMoNq#Ph0?~)5gko`i~c54&6aAE)>)f>KI%zmlHs>}?2{$%r&bEYL*;}=<-{*s zWlDxyvkqBV^GQ}03HhLfI7`TEzw{IK5D?VL?mlNHP+DAjkwDRnHaa7*uGuZnRcD>{ zM0MH|)oH|XvSoM;sS)EmQ;BdjROCTDHOnhK;{2|b3Ut;p4}w&G1?uBpKFz}D-|84U+2`%w)}N>-8J4IXWEfQeKwkXUMe#u+YvAXnbX{ia0{ zKRsvH;NVtKT}usr=en-{oH8Pi<_MEc1zEs2`yYWZoXuDEVP3F}&;sRus}2ohK_;jF zrMovKbhxsk^@<8rs-p~$p+tYRk!;RQ4Y>7vE{@io7E<=radybxVs=PBqgiimgS)9) zYcNQD*mnL(1t!%K0h$oDC21YEl0=%>US| zKHXM1<0`f`Zi&vriS<;oEU4*s)w4OfVPn>YX02M)%`27M!Hw`~S&8g?G$5H!>v`PdPSoU{11~SvSN`Ob{m)Odk?3@ zaXhVZPrfU>fFP zqB(4s+XE=!xSi@TO4BW~G7+>2)XCp~9ayuHDy^{m7__os!-f{E_!(BsM$*Ed*C)Zj zY^hKLMD1DsTBV%LRWOYWe0R%5`ie#v#J;vVlv8Mb03^S6fuZ9c=&ESYz=<sG-?{^#O?8W9Po0oc+WAa!T{g`hkD5i4jOBXYH5iodzAGZcnX+*cyk8_H>+*;ZrZ#7apj9joL{o4xw-zI z8uP`7Zum>cmsLethY?>Q+f@U;Z0_0MZp?4awHffGZCGvbUOK285$+|r1vA=<9M><= zURp(a@lmznXfKMj&yeeftHdB4Ry!XN4sbW4D5g{f#{X7j2VNxD>S2J!*Ro|a*^23Z zJ&KT)yUK%=Bteipfa>9z#X?DjN!PpGLDv{i_1`O%d@aJd38OxYz|Mq)V^3q@6vnEE zqUcA2wuMWTW=-ZbfEKUQ@l&d0f*B4zrs0$Jva8Ekp8s@d<_ZfLDBN5=ju)JIF^d(0 z(Gcq@-TZ4PLXS^`yFpvalUKdzukr4G_rw|R&U>6em1CDUzjlNQ{OkibNa(diz*L+e zOV16{*a>D#3mbAR9M7}DC zh#S`ac+~q_6o3{g`%tQD(n9kBqJ^D>TCFgWtw~hb zjL~>rEx5(Jg=ko1YQ;q%kAk>=VCBXTfpxx)w|6}eF9U-o+8CP+o6@^f(Ozw5AzQ2r zSz#F~)CvO_KG?=?2v|OI_w~2Lu}qeS0h;gs!@K#Zcku>hJ|NtSV8aw(c=^I%@6;3! zS0V2#%${^Wo~!<~gh{uZ#rY55)$-{XV=T0>@D`E>DKJCIZ}<{Vn4^Y&k~?q%tO4Y} zAX*mwJ?`{*I|2kNt2HabSvu7Zoj@grUYNU%2{yl*2iD2fU!mfSThj}(-*AyQCBRL1 z$0xm0fA_AOhZoQq=7j$I^5TV=_!vgfDA#KVvz0FE9)lcqXBJ~d_l4&cCe1<;bR)r3 z8XKyPqHd?|6CRQR8MetJ}b}Q8bf)BHK9BAg18sJfNu@~9tn59^-aV;+h8-j zZLpb_*M`mfwzp${HuKx=6|k9&J!{5hUQWH1-QOOY>1~(I^!`|E=4Fk|yc}jT8+xsD zzo92`z4mNrxnO&@NV@OsS=oYpSz|OWhZ)VrZad&x(pw?`@7>T6@E!&5r(dx8Q}ZZB zE^I3kAT&(uS-)x1=1mx(yQ_<`?aX0Z$PX_>);4jrXZ^;1jhi-Zq6WN~FP1->Y|%g% zw+sWf@ZpzB2hT;;Rgk}DJvGFD&zx&~cP4tkv=sNO_r5shP2ca~Dtv0DCy^D)WO$l^ z_12RVZ<^o*j?CmS-c21W%-?TZdZ-p$9lrd_?ENx(zs#PAmtSV@|H#>EzDH_#uYTW5 zf9q>-P%uJ&uYq3pZ&SC~o^UOG!}oa8H)QGFraV?56dSrvbgG}4EQ7YdYpL4suQ z+Of6M*WC|8GWA`SA(AQVziW3JaRpzAt}dzdbePzGet39XsyQ8Ah3Ke6OUkC*gr2Jj+pjbVdXWW|)b;@S zAS&G*zr;uTUt}oQ~Ca1jHhhg1+ zcr)*FW8Re$3y)4MACXP`Vc;D%S4Z=D;f<^yBn<@e3NXj`yXdz&ZsMo! z-F~q>U_^Rr>sCAoEJY9L)XBxa-x52F&nlO%odwPyZg=KR!|-f;Q|niOlsfDWb2$HF z=cpP?$6=3?vjt#r_dJ~)0%1~~cw+&7D~gRt*9&TCV6;%o|L3R+GABJZxs3$Iw&VG} z0ZsT5nQv4^oZoacVNiVY!=cN)>G#-|)SJDwF#92ILJr>+@y&4K^UDkK_cW>ukHVY} z9{XR&v#XHLn8J;LEm~}cmoItRCz$~cHeb1`@5F=Z@Uath|7P8+$$T$j$%GDs|l9krWu_5Iy&R1zJQ9UUVPlwbnLS1 zoff7?lz=v59Qp<*0UacN@-AvG$W|`n^Z_351ci(w=^y9hmt7@v|8&r(j|>(2lTN8N zlrauE{)hOw;)sY{afAfnju<@Y?e0#rAQ!8nqVL~`&WF<1F>D+ovCKF!4BntsY`imS zv0~SI@@VnQ)#cNlE#0~WA}+=^Iev)qL8A}E=^GJZoDHOqfsamqd{+9hOM-S4l0`>m z)eTumu%*1I252D1)6ixlC?iA$QOiJSjiwoxAAUuj&sbt>1Y$$3q<{Tux23GGuOwq2 z%*ph{2egBuX%w7G8b=R#55A*7caEPb?g9%~e6r!gIqdk2GgF!{Ktk5iwZn@S&dPXF zjoC>Mvow=iI5tv$uNN(&u=9mrVt{l6!6*pz{dfKEtQ08^7KVOrC3JsI^u;BbCaFk# zZ>G}I5O1Ss(T2UIg@1&&^SiD);<)>v4J6iZ7h%R7;7Rxf$1PZrB*hNIf;Z6va!@7( zky?>GqT!*9&jHPqv4L0Lp<4J-_w^?@rdCM{sb$4~QaYV3SuQVV{$LL%(Qr!0 z|JP~4Gdz}0`RMTiKgc+5mr^2fRz$;;@Q%IV<0WoMKEj_u&Q_i#ScHDT`pRxfiJ!f` zC2=P5RG)}C2rD+us;$38CxL67mSE%Db+iVYy@IyXwCI@u$dw9Aya~%Tbl_ozEsI)% zQ`w6?gJD&F-@*`M@u)MEIb>lAY31FFv(P@${&ryMk5#EhGqe1SNDIcA0g;7Pd94^j z@_vP8^}=SqZE46B(;`Zr;tNLY-H@1g(8R64HzO{aO_*53PoRVpWjb)H<6W(Tzc~av;a;+fl64T$|Ch|FH>wl97TD_Skd>_ir&m#KIwYG8i$5 z8i`sUEpVpbE20Zn-b=UcFWxu-d-w7YSmbA-P}B|@TcR+u{FJa0tq9!01tZmUFkEl) zsx6jUP1t`8MUPf?<4a0}HofJ2sAq0{f;{Fh5J zmsP8OcUV7$aXbib=!QTd->#h)p78XIg}IZ9*ABrK@8jb_d425h^1-8R@u~Wk3*u>Bk|`Ouqr09)JQ^%E?dN~yLd;lRcRUluRig~MRu(^~>1Q->Gl zaR-EdG29=>!>AUYJGcDFoOt@r!yh}UKNm`W|2yjyyG$ole{Ztj6*{+R!jye+y&wzN z-<#oinn}P-x(T|HC8G*^jUk0u;|8-tn_|9i&WL)C7>BF5+Lzgddj@ zLFOkIFA07bqmu8^5i=e=Wul|OVit~xBXO*cqKw`FK8P)73DJKPLQ1%Q zQ<1pDs1Yi*_z=PlvUF>SDwb0mVOmrWfXXYoY7=>|nTEt4 zi#W0?IF5MLM1O)kNPtRB0KyMRL#1d1Raw|@oPzQi_*NDHd)?y9 zIk~?z4$cGrUOqDIJ-D}g@ciPJSG_BDm*2l3k2yj=HT5|fYLL)`Nz@-dYFs+f`1CQV z3TNlKSD=|7eaj9sEC?1`)dhNU5Kh@pH0egX^0`}o29BRe z3>6!x=`inp0$`){koehGDCaBt(inyV*XJu^7{(A+@s812y;9=eF`T*-hp5hjL_020 zRAwk34cYuF$eFMoYw^>LQY1oUEr>w`8M=IT%^b@RJu2Mt@V1dj0uf3GI%mC$RnULl=a!e;~9 zLo9$htcZjrZY=h1rvTfr{qVgT}4Xz$zN&E-ha?$jIno`M{+3*7+e!JeMn}%1AS4eZUwD z2^AuqK-J(`J~+Sh_#;J~WR)X8ObYcQ*70XIge(8a>)w=)7+p6cwL(Z7)3<;=G!0Op z#vM{ugaV4EWE(qE7l`0XPmYMCinSab3+)tF7al(mGTHQht)=US&@zk4OBU#Te4JzF zEq^-SxcL?D_*M?5%UoehPhDx8y@_TZM<3wAoVo{nEX*E5ia&J?@W3eg;o;Qs?Tu?jf;vOxPX&R4m z5A<8F=md6u)~(~SEX-ECP{-9MbJK{$$MQmVHz^`&t%6K(yK+Z1wo|_WI*q`)Nvl_iPXu1wcf6SV+^~6LQRN8_ttrUsK>jMGF`qECXzItiDuu>tC-Gw}+ zUApxrPY?%{#^#`GswcsX(#eBT6@{v;GwN**YGL9IIL*V;q|;+_L}@0h6vIlyX4ALM zhojklibSO-$!Q|ujl#-#>u%hi$BUBbZX2t@NlPr|7FMfH;44Q?#r6FEB;V zJI_7WdXAob_G#y6>G3Dtd_%1oqhc0X^7R`p zS73dt-W9L~=cP5KX8^!daL-w)EBC<=p}w>1`}V8mCyY zY#Fi#9)YZOw_#%iVR==+!{STDqGIVGEK-KT<|yWUa?N(hENw-I1*}_tN5;_bCmo>P zW}2eHg9-#6Fs(J;a$7(7k)w?HP;-eiUy`MSjqh@|KNpsZAZZYR$QK}{b0C-Bzu`?C zZmv9n=f1jouJPWD#>tPDKf7YWZ}FrhJtr?d)|7b{=DeBn-jlyCPF@evgr7ROIDbHH=sM5!iU(fmD%YIIZ>?yFY?>Is*xHQ%u0sN zGqW&zGR(x~478TzEZo*khLY*pUz^gNg%|&vL_RB5?!Z3Rc#zQ|Hpv>Afv)|jT|K)_ zu{mss9W5BpuAPg259dInsB(3s4pezs%~QLuTzTszdb^B%jLdr6(7-DhI!h*p4F3d7U2({fVJsbYVkOny?#&vZaD3(&SJmFHEp( zn-^Zul?!EmO4E`g0iuOv?Yi*Nv976v^ZYh+1`PEkOT@yLNB*a26e3fiXktoeJ7_i$ zCR%XcmcB6oviyz!$UVs)tY;r7IFQqkOTi(aV4NK98URs45Y*8%~c+Z4SG1&H|?xU0X#S`9#mo<6SyfE@RisoNv z|8ecT#upbG|G12j{6lf;1XCjt_hP1%*?GXbh-~5a8r2zoR$v?bbStwnt&DYVf`t_} z{*}{z6q2`Aw!KAPGr>I2Z8NJ+ghLOBx)^Kg@T7O=J+|Ez22f;K;`pW|8u43?OzrvA zMl92*wu5x)%EMN{214a^&lGk5QFk8u4jH-2bRdnar9KNk zz6MJSaA;+|K<#O{I`jW|Dl9iO=x-9GPFX>J=6znfW)9WLKL37|R~Xt~wQsK=Z^8X` zthaa^gT#;6-{+U@Z*5x8vgXRo4cfIbSRsadbAi>uP~^>i%c?8C?I)iOMiF25uLYv? zYx+nmiA(h0&avgV!&p|3xk7TY-F1@Zf!6%?70;D%Y5$bd)wp~Z_U6S8?AQ3KG;c3| z7e}jWJ8kP^b+n53A3cZRdvNR2DSk?{TPicxo&|8y zWPA1>CbC<{Bk~nmqGHQi=Lu`rmNqPZNKDXt3lbF-VFQw=BPSeWqs~zwg8PwdOq%1Q zMME8*fc)>mk+ASzu5cn5%NDJi)DQmlcH`Fc^5yTzcBeSuG(Nxlwi)})7DgAa2<2N8 zKAoELX0J6#YHDdTQgslHo2-pdZA#B%BJP_Q*mg0>Km$^LGXkqE zG0KPvBlJhcgYxmw0Ax0?KDi!Ke{)iAR85VR={PKm-txp*vJ7>gyxIVCvRd}sEo9~rIYhJnlEQ|!{6LWJyDKauRi8pFMz3dA$H z0CqDL-?JVsqVL|+B4w>l^e2*kaV#OC|0G_Bft08f)0)JC%9@Q|_tZc%TYgVX--@O;p; zwJI5;Ii*UuqSogbr9V7P6xU%FSxm(KdGK^B0gbLQ#7i?@c_+>+Uw(jp;e%ES>`E0# zc30gktu5?9+@sY3Jajw0hS2j$@-wouH3HcOER1?~2nuEE^=d6M4h#0c2)xcHV=FqRUJXs8+cj3tup{*fvS120$htPi~h4D}~hfqmS)x$xk& zpMt2pWmv0MEBa1gS&06IwL{B7wiXPKM$kBSZ~5Haj;JdHI;XLJ0Xdk2d37|XTH>dP zwO}Naqh)PJ0Buz3Yc&9j^7i?cYdZjtq7?8&`z_@Qu|js&55Nf$m`5pF9V(Pl^~wma zkUi^rdPnvHB%MnkjnnrQFMPOGQi$;VS90{N=F$|W3VmVHM%le4+azV(VuY>1Fm{!5 z6+U^d5%@G0f84!)^Q|=-!XImSV;H!>V3)kftnPr8zxrU|;cc;G56-XtsN7n;P{M20 zSI}d4ZD&Uv49(G652)o_H5p)*??+YHW?-~l$BY`|u*m~^qOdT)nf$|J{23Q-uM^|` z@eqLWqc#mtV5bR9wh{55q-a9o2^>!Ml=1M%(7Z|K(O1iVen99wWe_wl$Kbd)swP7P z@o@V*oCZdUfQ9XQs(9*s9!BWoaAe!yc$zKa%!pU;a=2H2$2^qsUi$2G`|`(kyyKIL z^B;LL=b!Hy?hR^(nobQ=@&^FVV<~YA-KHE!Wj&|~MR5ypGUT2DrSKP2B+^OkE9C3L z+mP*dBj1;QeUOF8P>Rbc%>@mn$bO1if%2?dUH;^8mq;n7SK?~9Y%Pa24f-1gkPCYe zG(x~+oQ(*});;UZVq+?T8A}xgMI-4# z?e}hfc91en;ZG6OKv@JZv4g4LF^ze+kk7kicuA)H>$m^&;wO=vM!a~w%U~SA3uTee zJ8j{0sVgu1+PW@f_?W0=sWKMdR3L?^q-y3Yhu-Sb93CbgRKsW)LpX`Y6v~*X(rkU;Wers`ybooX7La%kkR^#ObJ z?NzCg02du$)-nP_39DrJlh`2Pa{0RR8&y=!|@N3t;bS5}zpNJ=F60yrQr3;{Be zJt1KOGjsLYLbiFkN8(@WEs<>9%S7ewTN_EkMS!Ot$cgq3lY{igLg4=`(6)1h=m=tEd$hwtG zIfv4XI&6qoHvOr{OmVJ$?K?>6inB3)f8`S)mtCD^==uBTN9trz6k3RK_VKfYYom?3 zto{tepQYv&#^9I~B0^ny$QokZz)cfO+Rd7xC}q^(&rff(T2=}t(O#4!<}<~7v7BOp zcXor*Uo0?*CHJ3@?7f>!f#Vx1Qce$h07;nH9OMQHtOoFQn58!zxT%CmHtSOpe{dm& zyg8?ycrzDiACx1A^LKcghK#;+XPCU4Wo~ls?ne-V@9Y=e#KXB4ll6;Fpbxe#c;t7u z9G0LXq=j2Q)i0c#dvi5l+> z%2ldVII+fF3bpc+H;N*#66oO$J^on00^-K}(>I7v`Sl|_QJR}RjUQKXU_wc#92){1 z0du-~SpFu{QBh9IBh3ORcLDd8h(2t;eaHU(q)!FFI! zy>RfBVFGL3R?x0_`9o+@?%rfgkG>-hrsb7Rp?MU^WO&5e`g=a{$jDp^>3wN zU!0dxx+%WO>sPBb(Pa|5v~DyP&;n9i<;=3DuVvDO-NSuDxvCIdgK7f5)(%T!OMewC zTJGVTdjvEGMa~O@#fnNSOhUVFgH(h!|FcmYACZKL-*ZFUkP4|vkL`vGG&KieF+2NK z{kkJv%5^|$87BK|e=tj9;@d3+%qJNKx5_`J^Le)lO;7^OxStUY$}r{t@2C_nL6@7F z7xLjrCOg<)fawUn=Rm+!5JYe;Au9ixFv(RBz(~Jt%_3#kn`~J562-lT95dc z=90{ZWUqt^A94RBY{n_IG+W+)7U)#=!P}84u>B?M=Yco=f2W%A6lTQe6`WQ(wI;>b zjh=Etc<(asTv1!BZ}Z|Fr1BJZ9KBx^Ot^PEa}Sig+gBjS$LLcC9{21UCaODo_hu+> zGVB}s|NDKD;Z(uFX{Sd*#dkMWz4 zamR)An+DyVe@gLQBltTKr(GNbbod>CR&seZm(aWT7}3UFl;ol!jA3NN_%27dZ`GbM zV>Zz}yS8?B#ti&pK@LRgf)Xw0mQd5|j#3xzut0_-<= zW|I2Nlk*RrJBdxs{Jq(QuWqa63BPcM_}J92jH*~nopzDrjET;@4$q(^OZp1w`{3w6 zI-FS-f9~|l@Y!@S%yUifU^9nJl+WdVPZ zFsIA$#^f{whpvC|W8>DD#=X1V#Ajr@?hq+1&eSK)duLBV+@y&qR=R%ar1#*mclHMg zsLlf=J-YxgV>R?zPo-3};;obdM(p61M6_4Rf3Z?5un4`0N8W?;G8GWr@YS|<9-{@! z^>ic!pHcHJ0Imx(4Y6PyGBfmI-MyXrEd`4H`!4Oh>Q%p$HzVjpF$3&ne?j_(PcebP zy_VUc81o3LA7egrxg7>5dPT$Zq>De%ml}_I0-@tE5(xHSgpOAVdgF)#vkt!CT zq3|WFe9Q9L9juK@!a zxSC~7mzbk`jRsK1r%oG3>m?Mk6eosiPQSQ^;hPRyx1<{ESn)_iEu$PE)`A?>k~;>5 zU(rU0c?=n@zcAA8FuX$~s^?dQH-iJtz_YjKo?q8?X?;R;0_MGKCeDcoP>J18e`I}) zw{qOKjcjG((01SY%_j^#q9z&!MGsdGCF?hzVnTv(Z{nlI=*RSmvNJaBed3LO1u+=> zCKC?0Or;=XoU_LP-__ecLI#o5Yn-`fXW7;>|J_}!I1>=uvO7G~(O1cIl#2Od15Dzc ze{jm#{)Zh*;W^6NaNcs(bYc@{e~)`(4;nA7dgG6@hP<&ybF-HqsnZuPyqUXjiM`W- zXmyj%>euN24ZVN`2zaEpiZHM*G(02DvRIMGkF9^8XJ&)=E^TH3Sg z!w(!9B{9rUN{a+my^arUs0wZbQEK>+581OO6|qj(dq(71oAA9!alRh3D&ko)D9WN2 zwQIMe$}Y_&y7TDXbfSMtf8yOvnCUg0|EQUUxRbZP^{$`pV9bE$4`)nDoBHM)q7?za zfMl@OUdAyDw6weM1jOnJB+eOxz|yjgC!bwY#Lj?{rNW4t09PS-l+_I;+cA>UTQxR; z5gtg-578$>{%TJkK%bUkT*n(i#Vs>3%m5vear0hO*4z*}L&n$;fBzeTSTa<~hbPDu z#`d*^TTg%`kV_m>ed^b~<44-hz5~hX_C4jcqaCAS?on()oQv7BVgHq zS(nUi7&lr0f3=k{PFe?)u1)KkK%wZtc&*KoIsyi*J|(tE6OAIrMli`RXoRfh9whNd ztl8oKkH~0nRh*MYK$O#wtDBJUkplwxAV2+{?S>1Zm%WL{3s)|prSQ}uNI%TFWh{aq z%7TQoSzRYEL2RP52kft@1KV(`wCrP7Sb$of*wDEQf3TZ!O%YTFy$0mX50h)s5;O%J zYnOaPi|tf+J1wW*Ef!_BY1btD>MqRf0HBd9Ls#SR6bZ|Qmd*(gWMnCJvmK>ZQk+e5 zH)b#HSjTAKp?IjRQ41JA-U%8>AT={80uhUj)C>g>?e&|l*;|@|r=}HN#I?S2U%-v<_a7cuB zHQvFM4-pnL#`b3Rqw!dg{B2mHDnhXuf)uhMiLP0u7LHb# ze`A@@>PU_A*Nv)WS`K}P^IyJca9QG} zoI^i(M85YBf}GL_iPS5Y6z7!Qo|508e}aB;z+L~Cs}ADOq6V)}%~D#(YNZT7hOng2$l#rnsOlzw1q=d_U0_7f2{WP z4bHeZ%ch20jRI?jEh9fyO&AXd@F*O&I9n<9(>w%rE-G*s4)8e?j9u$RC{wAD`{A%i z_YmN2b}8?myfZWZ-FMFGBRS_Sr>o|$xnf^3HAiymg8}wr%6i5^v!6l+B6ah`26@nE zxXb)+@Ldqy6;pu?b;Q++*_J2ue{Yu_o%+Q`3s+CzC8AM=33Aa<^OuaDz=S;GWTq$g z1fDZy_Coz@_Ue=(3|dD=0#3j(D)F*6V1fV(6y`~arpve=#rz#1mzB0l%o2|t2f)?A zW{RdOC|*;P6Ox^TYfr1~Q8*}=ka71M+{&dp6~#9#|Vk2L!yI93R!_FA*!GG(E_z#=dkk^ zZ`8-n*KeFB4h!snbpfYS$T0kbV;#Ay&P>fcTg3j>Y#bmEkXo3OE&0oU!^e+mv_i4a zc5=Z64we!afSA3j9SjWrAj2qoj{y3wjg4mF{M-z`;tglK$S0k)f37chlV=zPsp{PH zIj*TvjvmtvVcP(Q)ZJ(WtP;PNDy*f~(D$O?f-^?R=2CkSW;4(W8A(5^TH`Y1#DQdp zq-gZOXx8cFiXk8ol|n^26u6cq-wkGC(SfADj?Mj__L&h%Gs2g?CBI)bF5-(zplYoY zNQ>RcPfKVDzIL;ge_p6^Y^bl8x0tw$a_S8kn|ahMt__#1JayIm0r#|&elBhwoN82S zXF>a!3C&%731^<|Y3_!sEQ_*sU3u?}2sCOl1_X{%BkE~t#9Bo?O^xV>sd|MPSP`0< z@|u_++Ee!zE`HURngRxV@q2IVzW4oT{nNYk@o($nm*ywof6_nC@A#6`_+5Zzi-QY> z?NY3}cx@_p(M!MGrOEao2c()$J7vEuM>Iy;pe$iQEHlw`A&8E}?+iwfguHmN8TIzE-aMBPUg~D)V zk*VCcC>MgD6~>I=o3~;p(b+5QZW}w4E9UqB1Kv;+g)BZz`hhjYFx6l|5DJHHlzONq zrwif=(HkZF5QU_~r=@fjHuwZIk#g4X=SccVC2XeXbtru_!2^H2t+YbDrWmiH?-08b z6y*Zje>Z;B-`}rymU7mWj#3OHduK^4+}enJWb2w%C*p`(-(eI6(X1Y(Q?^%Ta!)aV z%DyO>r8USjg+iVQ(TV=NE5?uWfY35ICgT-A4=$Y%PAM}dNH3Mrfun+_Fg)ttl@k9_s3 z_3PIM2~f_x69|GO8-srgMwyN#f`9v+0 z^(iKm$Uq&hv40RJr16U3=&>u+5z$cK|HP3pzz+Yb!+^*!qVLs62G()&Ng;B1dp#>x zv-O;$2#yQ_P7SbXhAYHJ9D5ZdP>X`We@tg)O(vsbLX~hCX*SM1_MTs!|Ku*r|K&%F z^5oUt~lg_YgiD0bT#v zo=i{1d5t1^qzi)C;(8cNXNyM|>%%`?jIoL0Y`AXKr)S3Ifvrm}|B@35ky@VMe^!wM zV*pLF@laGYYv^h-GY9(s?$xZQ9@HAZBMsyo#{R?NR>#{** zuHAQbbeEV&;6PSBOuRzD{prSGfBn?i#>da(nC9=@z`m4NBG|k)JJXn)oWK7Acn|nZ z!V%Kp*&pE%yb2}oo9Dq*@ynDEe(!5L{{;w8wkaYPal)v@aa5@hC9Ml7xqhs_ zSUkhP1@TA5cz2?&zs}T-5sd8)wh@UFM=n#S3dRp8S<@54m_6W(s!N~+I{4Y+*Pk+V zV|nP%qU=J;w`b;_gWuu8fAh2R6E|_%n0!duC@az3DL4d=+of=bJ!~ang4$4|!dhJ{ zHfeo_qmkY(5`X7UG$v$Asq-3UA8qwBg#-Bv0C_?_{A1IH7c^2%#e=LMNJfCzdHNHf84XP`a}&Ea#d}H zNG4I6u}lHKRIRldiW%r)u_z(1!f_D*n{MOTNB_IucI?Jc^K1h0k;4C*)!z}Uzhg1= ze-o_#o5j@M6Rf{yG4*!_>+clxMXHQ82?=f(-M+{6=f+RRz1x4m5S=PHF&_6mWQ5(8 zK2}-Th2ND}-LuxRf5Z#4PM5XBRj8Y-akboHDO$%&IAz;0C_?W62J^)#Bviowi$=bl z+kfFwVE1As)jNHoF?v~_$P%!bZ8-*7Db3SWE@LuRo-3R1HJdiG?4kvc04|zHBcXU} zZwe0`=@?wf9MZ*KCf+j5P@l<6v7)d_o({;DW*I10OePrOf52H14moNkkOWY`R%KFn zHCIyGr9=!g-Rbfn0tuG%5Sv&M5dc0t{a6qxrg~Jdf`m(XqCn=Iz2r?kV%%wdcATdk zIQiMaH`kf&$n_8c`hQ<`>OXwroxVSR?xYw%AKTaCepB+j2mo>=q+r+2PfvCJi<5BH z{tGw;qL&+de>}yi$VMP{G5ETjIYki6&t72LCRnxYjdrtFYySm9gZsc zfZyHpMY!kv^h)E=SmVV>rz`HA{ecideS%7)6wuJ(YoED*5(Mj=AwBUQ!;lNA$RiOa z2Hku~)oT016#V!5w|i3 zcce?GFhuzn;LdI=lpSWM#$GDCe=*!p)Qvl$r!YQfbh0=$$kULO_$B+8!Va0l(@B|@ zS9Bu4e>LsecWj|TFhpFPFGZICtTfxH;QeBEC*tqTXJWCtke}0Sak~)d1!Re7{CKxM zuB+8S-9pKnrC69mnl1S#R0YwyiYuAXP@x{m72I;=eR?Ksay*@uqH^zma&#ZxHaEgf zi^W>Zk5;yqJvZh=dym*rc@_bzu&W`BTd9IRfAFj!OtK9T&<{k||3i2J9}i57UyM<> zUyvT0iYS_aU-G~Fa*ScKWw$6jfzJ-^F&JHIN(3)B)q)~KoLztNtu#{1=hLN%3nunT zJ9NS=enAT14#J#9;+kdawZMcnr4HeE+$MqW;>~D;7YULHz2E^rmQF56ZZ>+s7aGC% ze-va83>H;MM5>fF?CetRZEjvc+p9HyEnS%xNf+Zm@zS^Kb7rWT`lVJSPMs7xyOex^ zRGRHTU7e=kG+j+|+OwdBVV2HUe44IQ%ej&ueP!vWvF|l=jWq34(4M5J?*?bq$I+~@ zA!1j0Ym`Oj=_PJHZNIg$o6ZY+m!^p-ef#$Elh`IX)aU#I#y*3xBBCO8$S8f`p)&M z*RR*eYLVi%k{VVabPM)nHr4Kyvuhd@qM*yh$n-6ea`4R4ow(%ChhsOJ%L*=se*?qO zy~w6O*23`ntZsk7m#?sbWN>XuH5pQW{Uw%cTy{8JV~i3u147@~e($W?iCF%?I4 zyMPaWy9YHIf|{Jv=qdKo3{pM}IYb5>%bpu0ts{rdldPW=+x zH5d=up*TmZ083PxTNGzptRslVAlvW+vG=qrcMy|PcCPQ~VOs9$#c9pD!{k2?x#@tl zbhd0y-4uS9%hXy~GmBGK+w|_#_0(|pPQ7JfU2p+%%KCCYV6uox~vXa6p3a@T(m+7B2tD#IeT5&nUBm1dkU( z@C0C*xMYwh&0~TxF3Y6};Q2II4jpmf>NHN{!6^!o9o$>=oQb z>8K8tnbwqm(YfW0Y_3x6$o#32{8J^Qd>_i#ym&s>*MU5emEXKMlP?zB>@HSpw_8oD z>4byjyUsIhndD`dCUIso)U+B^XJ1QDFoLfq&4P z0+D_$J>a*XAK&rD9#eLt#;rS@u*XiH^{!rRe~h1~h|a02c^h}YZq{8qeO7ko>({Kz&C+6Y|>Wvd9b?>L0lC}h}z$i|(1hyo}t z1M~4qEn&c|GPQOanH(W)fJhx2^KYMv41f6CPwmG8G#K$2_L&2A1ujCTuWXx^1RLJ4UgB%vIf91+0A zgCF(sD2Z%P{*z%wWBs`TWc`$ZFl2@@z%LWQJ0l8`Wi~XxHNNySN2^FIr;qp)4Vz0;;|KHAs06E>ph0x#_?1e{2Lu8{WAa-sn@MyN>^r*t~CF_O0l?eM$Ho z+blBM0U+UHXK%wnf+1SRo~wM|4zMMB7=$QR3e+36-XPv!G?I{U=yn z;j>CWdTogUr3s$LWs_P>uf(%wYhz>M$D}SX=Pf6SKy7voLS#rBQZ4!V2t2GEgiK@f zOhBSdO<>up)6wSA;T(Xk9t$I217q-qvke`vX6rJh!$q8z!mNoj@D5oD<|l8>pFhEK z0c1cGaJU2Jj&vbC0O1d0Br5>2e>|M27R%wO0Z|{XU@GM!Y_dy?YhiG(2VZ(0-KUsR z1_VYs6*jsO#OZUv|5iyG$VuLhtD~1Q;;+wN{meW6-Tbr9=4Y=hoIKl@`htRX&dq!} zH|r;Kb&fDepm-#i&StlRW+EDlMhb5ANU?km#CO?VuUE zPMb)Wjwt0wPzOwurlEkzC9KV%Qp(xJDkclXBhgs9LqGSJ>3JbTA80Z3<&K%>pdy2i z4Fdy&0d*qz3ZzP#>9-8fe`KVa6CafEGJ0fF-E=X85R;i?V0vuftJ~C&cl(pMnRDLh zn~i7B_|m@e$^7gm8nug1S{yBvJxsjF(#ZGjR|eRWBxJyH95<%W2rdcCOQ+xk)1j4z z%}9`PkFm}z>@lo$vB#tWAytDT5s_1^?Wttg2E`MZ%U#$?;%1XIe=E(a7=`R<7;BhV z(ZcAJ`5Sk<^L(x#D$=Eg0saJDY7mSOnN$>b>sE{wMBgJwE(t!41P-?nG1hF>t)_GN zlrv(Re+}$rYn5ns{?rq1@(Mu=vH4q)@>bEMPSDCM*-~HsLUf8G=8H@w<2Z=1ix)x6 zlH5${-P^VQ{{RA(f8p{>&`q+@s0Wh~UG-*Xz<=)fr{3h(?0;4I$?IYVNf5d$B6m|m z)zqtQc*!w~(gkrH*B&DX3nXljf+!}>%;kj(GrmbPw2wqzF?+0OIHWS%z~JxkEGSUI za(9^e7m;Ta!)i-sDL>+e)`W4!x4Kh=D`N6fHj&Q_<*MS&e?-`AyTTHJ(iB=mqbUT! z(5x^D>k|`=7Z00HBWM9>BL2xe96_ZZTcjs??eQnmg^+tkfwIAU2ti zu-G@-{D@D@L*OW(p%y!ZT2!g%w9WH^@UyV3Y#OTiX&7f?{xasL0V{hJ z@CUZfpbar{e|Xr9NDCu-eAIt_Gy=`CXJChp!aJKK4j3uCOYUZ>n;RVwHa{1_B~zHs z0t(tyrb%hfhK8$nPe6al4>R?WWV#g37%F0@cm7X3+2FCTwxQ7V>Tu&Fply-o8%3OO$W9Uu*(?r}@=*+Ds{bL;~_1MqV9$FPqoV>sMRD%AsqKTY{xUbt}lM?(6UB z&bV!E1#Q4*+XC9E7Q*^%bxoEpNAc=-yA@X!sQPE*${32El7I;N&1?@At3zY*8}IBF zJg2)6e=(sVJ+;`EL{R(LlkVFJ4{gdHXaR>?Y3)?V5?F&?m|+wWVEC|mxY95hFRnIj zotc|{fI2Oy`0VA|enS)!8Uv?!eEb!g+wM@$jIQp zTo=SgAC{4@RxwUdJ(i##({MrH%18CfHzj=Ye^)*shywva+Zm?!_^)(ar4Mu65{9|X zHcSyO+Byc=d2kHk-->ShWfyORaIKcHlHqDDU+LhFBQn-{2alOdlx%mn*pkgca<3@m zyC2aGOnHM*X|o+J=TpwXjy!nvqrXr`nyMd^M_WT~b+DLCIgt{?i;|BqbO_lvW7u?KEyQ0W_Z#0+$VtoY=#m_nE}<24J?cl4Bqa6g~!@gDh_hW;;tCe*+)K z!sp+6XT}KdD4tNCqxqm)vGm%z_RzaN8cVPr+S?W`JdeUHg_(OX@AEU>^zrE2%o+IR zz-5|GPti(}TOq`E`eAl{_D22URQ(KiDX<2pBEO+&Uvpa_Bjc6=Cem64-&31e9>UuB z=Sw;1qq$;*%Q*NM1snd-EtiYsf31-ChYLX+@`+k(#QC6D&GqLpXq1mTJ17U}JH?~& zv(Rsuq=`4A6T>;R1>=xa^rkN`9G(N)yEw%N7yX4me`GuPj63~` zBk2(!p*SawI2VxONEHmvkP8_4)7|p+YE}Mq_lF-OE9jM)>pv!>xxjNI=lwkQ+#3qw!!0O^-rj9hG9@oGBh*oy}+NnOaB7VQ?{e{s} z3%8y?My^};=WowYA@Y7ke^meJI3!@Y{G;E{ zuI+nv{riD!+uz^v?+#||WfjdI@^NWQeZgujT)AjAv17~sb%2_I?sv0hRtMUE9RaV4 zQ$zLdZgIL&q4?u_A8h;ZkF0)Arv(nyL{I1Zz0auy$g4W>XJ`S^Z8BBA`T=<-Zil6} zhas3UaDr>m^l8?ge~ME=h(8W!LSKZsyQZ-xP*dEa44o>uv#9Y7MtuI9tuqB)@K719 zaDX|L7BRnB%IW0fQ|#~O50F$gD6r5DJN4agHu!v!Xz=(8k1c~64+xjui81f?6*hpzy}RDTXH*P)mqLdS(;atgs;T0?_=3wWh z@6>NTg=EM#f9}-3obt}!^=2+YOh}wLH4`)rnV~LWr>Z2O+}Y%;hE+v70sG8W62su! z^jR8;o?E(UOJHL>B8Mz~8)=sTDozE5hrn4(evx^)gBh?n#XcGbWkaV@wPdiVsMZq5 zF8Da57R`07D(GOyfxg>?6gbBQYo0G zH15!HNwGx-91YeN-lBQGm`Uedm{@VOMsv&-A44*h3m{O^X#))J_VeKTgq- zUeo}re(E0MxP(^jS<4{2`gP;s$7)Hyg#>^b-7#%7TZqMeC-4eyhzUtK67W?u%ZI>P zYXUeY2?F{1S?}vl4f5~-m%J$ehiu2Y`dlVb4mM(ppKf+CSv#34Wb(sVw-N{!KTY{_&S#ZgA%*IsDY|c|l zaujiH{Lz4CJj86I7Bd}#Yx-AYI_+Ta13==E5csmOQV@{+@<@3nU(6hO4in z?KL26tEPAgsji=o(MHIDrNcQaz!`p$vC-XbwVHRcQDZBJK|I<*)VMg--bEmwPTe}A zp;Uj>@(!BqHd6i6r{3xN1PZ8DGgmY(z?&E{l>elzwvC&5uj!3N^%Tko3i&03;wFO=Nxyas!)Hpg?9!PvL-^KVL}vPt8x#S!AvgDTv;~m62?)Pq8qhq zL8m=`&Ko=4n4E^h%HQ4M;+O)3#?e%wkeAR@8))5nBu)LM*ze>I%X?&3|0UEZH>*a9ZLWjsc+L5^P{lQ92!>MU8A2q>z^ z?dRBFQcwoyF#A?uldDPV^Ezc`yOM4G5^f7UX+XcPJXE z442&UF5FhO)6_U{F9r?NU?Mc%voUK84TLrnYqnY-B@R}EdoS90e_3XS3O%ry;BsyK z)4TQYZ@IZr%xDf$8f4rOYZoS;1Yo#ELPBtJkN`(=zL9daLKFh0x09YO9@!*|pz&|v z+GykMaeg7bT0G=(rVsO>eARS(e9i#FgOyUc%*J6y8x~}YLs(-h1|QWV<7%so@8Qsd zULLdt3TIr|8`&~ke;q8AbN@-{P+@aZpq5q_wHJI35nB7bhu=5ujxGH8>-x1B`d?78 z-#_n<&X^pK9KeqUxF~;PC}{jC9X`optE6(cDJOt6L=tZO%bVWAPpAsTkPGiW2!P?W zL{rDKD!+61@|F|X9Fe;llPs`luqQDY2eQaJOj1(i5WRKFe~n>&Jy!=~uV_w{;=p;W zM6paI_^@X#~(3NkWqfsV~#s3_=P zDUK9ztU>8dK@G@V23Dv`i|Q#MB^fIeTznmCDT9i6lyoGgiB05Q$V~>ovCsP>8|*bJ z!+kr$an5Ome>Ko+YXB*xSGMt%tqpZJterQ4?HCpSUGoj7jY_|z=A9CyyrEHwF2V)` zS6UBXYmm`#5?#J{X|CFln)ymLU^nRE5jWRY@t_-~$7yxE?%P1cu{y=12_Ca=(7N;P zepLVZ8tnU5r@iysnh8fpW8)OWv7N4gVgn8W$-#6bf9iu1GdMNVCebe!2r^I=f_ErY zeGFn15u66$!w|Y~`l8z&gKcu#L9kgJ|8!VM=4SF7-h+EoTN41&n^7v!0WBT!D~(0P z&=rj$2yjJ1LYxm?Lak1uyxR{Dpgh6tF-jN0;8Avg2XP6IWDiC3;1>2aBoA(_0@0%k zhX=ePe^swjj4n*Xp1(J{@YQXd2AYs7Ycyc6U&O59Y5un)jquaoo5#KJuNG#%grK+# zqSH52vlgqEosV0tk>e z@7(#}u08cLrxre+WSWFGc1H;ewLAe@Y@Dx|ueJTq(g{Pa|GsVcH_(gUhVR`aLghw- zf6D7Y$SnynWUjFNXen2Avj<~wi;_#_z`~Fnc3}mVs!&kd>)?hMo7~}CWsrCbxXFba z({hO3!OQh~FnC>4;8QQzsJ9dWHdg zSioy7JBrzKUad;xHUF2H`LCWqK&9!kf84`)>Pchjdi~Z3wIxMC4|I;Tf}L|Cz>##h zpc@z!LBVbCdfoaNMh{w7VQ(XGo%Uv_h~f9SqHwsrg{S z1HNY&+froyt6A^a7X~khNWD*<{UCqbgnnco88=(^mQ~McHRq^{S@S!BcB?Gpe~x1q zuH@k&$8Y!Sc%L|MU`a{?7uyutFgqF6C5c>>8&?O*#Us!jN=fz8SG|)nv{_+X@&}CB zbHBn1&%Gy)_~|LzpJ(Cv6O|-sXJK@<@%%HTY5Sakj6;S#)@dwcsz6QYM&BNl5JcOm z36UQ&scr#qJq}S69B>F3x&GFmf59_iAwjV*8{(k)ug2#<7pf$L=nOUMoxV@(OCG0# z%@G5Rl1CQe-*96B1owUBQo#^%{Y7ma8ZBH0af)a~9UFc2PJCYfL2-)W*am9hvn4oGe~kosipt7m zJW&QbTE3jEKlp~M+up>(`sq82NUeNDJoH615<#DSV{??>7d4>B2p_>hG+sTJ)dkcCA!Swnr zKxpvMOcEwBHua$i2DtNE=65hm!9es8?(idqhruiP3A1_nD1LldeRGc!5>}lV0($f3sMrUK-2#r+@wN3W_iUxCSt-67@!tmehn#A>7)ib5XYVG=E7L+Mb7k|%eo zoqKjd^>qQ`*u(3l zQyZHBi8p>5WA&q7_QcfO?42OMf%T;Iu+a%Qn}oQUO%52jZOQ5~_|4aB^0))h6;If1LVvx2T1Krt4L3V2at0 zOD^Pp1jfn9pZIlv^XGzdU=@s*NLtK8V0a6IYUY*TH;MJ5!UI;5N6f*Xi$arw<$&K= z`>v*q=g*lq5WH3+B*e2peAwoZR$kaV!eR~SN1Hg^mahsqWaQL6UU8%=(wR?g*q7AO~Mpl`tiLl);MqC z4Yfd#5KXx?1xrDreQ9}lnBW^UU(?IL#oAvK7eaOFPv@9&$wpTl#Bd?Q6||x+4M+P{ z@k_=`WuEvm(^}q=N=s$9kEsa~5}sEg;jE@JJks$XfAGpb6noaQ$kyZLAO2~kK14X8 z>uuiT8E@>qs_m0}0bW%?Nhdw0@y&nJl^AJQ3gh&Vy(-V!4?JDHOhYe0z7w3QDPK30 zXS;uH^Rf6(u zB8WD=f0jr%{P5-G$%SvebP@^iN^J=uMA$97k^;;E?n*(f7tl(E@^oiJ4yn;4hG>Sh!-SB z!Y`BFJURd1IU7~TU@%%$02Qnd4{PNdPGG>Qe_j!2YEQb4@qk~;C|B%-9^p!9L^gwA znkY*(D^DZB&{GaXWC8?`mZa4UffO^1Z_<~PRuDot1?NW=g_MnYS&ntHq~mOokUG(k z5nq)fN~#EkSF6P~c0jXc3&GB16lG*1y-MI@2hzB*2bCeFi~)uPcFS%*6CDS)fvqDr ze;n3kPL4+81?N>*@r@lhOBHYYF{DN?f$Naands%z6^e4XxB#CF_`@QDLa&lOGKdY< zL=d>ciT+}_mm+XExk3Qzwuwp|a*y#U$z0Y}A^<5iFUc-gLE<0SHAQNTLY-K!ux(OQ z>_D}|5L;o^`Lh+Ke5TgIM)5S}ED9~_e>jY85iL}Z(W-m`Q73jE8|o`!X0d&%Ak`V0 zyIL)zTMH3bLCOr$P+31BN(lHiMP;Y>D8@PpZ?ego0J6%tfx$Mh#f2e0?FstY1bLRV z<&(30ZAq*{WFopZ>K?7q;HkgZ@=**zFJTzMx~EZ4r7kFL1$tyZf?6N71Bi;TzQ`UStJ9{nvoToe)H3Wr)# zfCX^stQiG_j;6_61_4YnIqHa98Fo1B4Te00`Q%s&+XgWSI76<41w$fYc>H!Zu52+g zJVYCO2+XBTJhY=9NhEKUAa%+XVjsA`N$g z{wI-Y=#03H#Zdtzue@TPsW^i#q9<%Lc&$i;DK=I6Qxs3V7^cq{~vAt4CR4UtcYV?QoM1B3OK}Fg`ne@bnLMJ7kZY)Qve~qcT^^eEAr%&d; zy{w$CvTE5}I$sPK{uG zjT;_J9sDLaNWAq2q-s2F9^;o%j0}5zEGnW-4xmQqAg9 zFu2;^>8XT&Sgy3cf3ah5b-13vyC6BXnaIlvVlLYjYKCZ&atLv?;=OGl4BuK8udvge zsG>Lt87J)fU`v^OxdT`@`PsrZ*B3nqN64%eh07eBlv;yj&7z^=Y+IVy%S6_h8Snb# zg$vKg-FRt}9vr_WTL&;fGPYUkA4Ms`t7P#bw}=6_4-YWTe@yzbFKV;zIwH8p9U|TZ z#B^I-E9r4rV89}9w1wTE#G&p0_yl<(rtx@*JW*-?pM)n8NMVGcDZV6GTYZdLbji7p zqGs60L+3-haG+ch9mF^F*qZ0mONrgA{cF}BTM22R$P`P*gr;Ew+hVh@S}owF+*xn@ zQ3%CbEko@}f7wk4#U?t0Yi3QUXl~|q{mTp9g>i5C%r8zwj%5Jt5s1^0LaZeWgW=L> zglnZQl|(p0`$Y!~Igmeuhzt2**)7|~91jW*eA~1xw`Nq@Cho}nvN`T_PA}dsO_8;3 zD|A2Q>C_;vPSsTk)h2A{YP~X{)G}IE7MMhW90-_n(oVwN88WQP*gI`+J zb#co=Q&Eg%2yysCyxZ8JIDxaTl*)LMlKQJJornAP!a4?_B>iO8zwStvavet)=W?qM zgUoa`e@6grK#{*fgVQj$86le3g+Apx+cDf@jm8{Kk=)N+(x>#IhWgU~G%j9Sl>d~H zV;O!_B&S5yW$_YIN%{`wJTC)(S=PX*IK7*O=@*#s(Y=`N-oPl)1J`gu!OPJ;{P+z*Zm58 z%R%4jl}8_2^&{H1JHXXIJMde6A=yyTb6f-_Yd7Pb}Q}$@~1w{DZ3tqo;WEc>dl$ z#7?PG0Egut3=ipxNgTWDPw}i=9~M5^iTB_A$A2{gDm5Juf6RRceN|N{&qMv<5Tp)^ zD1A4Vue#+FrY?}Z1)!2n225XNr08^aLiU#Z^1b4%;E%7i0e%a}A?eI8Q<){EI^KMf zSAWw9UL|s(!gk?w3;WQU9rVGx{p4%u>o8gMY?jI`ivP>QJ3jag%4NB9~Ri*7k$gVsRANO=`Iwc_eiZ9E1# zDHEu*4_yxxOiajD8s4bd?FK^# zqNw<6a_XP{Wp3t#%2Z^SLmr}5W0O2XL||GduLQ-<(SU?;N-_%0=LQ8v6-1fuRHiz$ zm>ETC25oSZHn9TsQyyWRhZ^k^ATv+)<+>KeZzpL14x64397Zk>XJ{+s}Z==d~4V zEOs6YQPfa*q|Rz&>=1AKWc}*6v)%f>sE#`#4Y zf6^2zQqDXsEIxTe@%=fiYm6X-OXE1SGKxqQd}(3aP^eQcW!-?93J#P5oPT>q8nTRW zxx*kd?HH;T1pyrx%c+XK>xGFjaI|KHNI8QG?5p%! zvlEQ=8^oCElg3@i44hSDi5=;Zjl=`E;4GxpqB5Ug?lHz<)@M@-YVp#3~a= zUPfF**u+E`f7qLygRhT>5;BETS7)r2OeW1Y33z_cubdKXw>M1kF|ZC3-2~v;&hBd2 z9HV?}8zT`4B%9{xg&-!cY{@8AC>~KunXj|C{(gARN+qyKWyb_a@cl-or?ZnH_p35; z7wiF_-|$Y1`Hv;M-hcQN_E&*g*`au&tFcu}vkxa2+HB3TdE1e$4kr8aMJB6YGaVeZ z8VBao*@I2GT-UQEq|e)bX}d!KcZ~yT>2f5{65y7Jkndwo4VVg%kjEw(HCs26XX;=4 z*o3U42g*`NO9@1)5tW3TL%na+e-0+Let;bavw~yXFkO`vR+bTpVT?K z>7)e>mx;6|PvQhV_o7q|%8e)n~lsqw2;F^-*l1Q*Q z`Gu37Mi0IkX;mV*5=@|oVCfLS8FSThC(%^_A~8`-X@7<6s16}0bnMdf4?#+bSDDo& zwK%l_LY)3I(YQD6eRUs#yQA+WIT#!L8m^|oyVNc!yS$iHQa(6Xt(GdOjt=-*$)pR( zVtJtBSL|!LP)VboWyk9y)Isf_RgRWT;3I4!SL~=Bwbw(jT2^7-utKId6k0<{+OigZ zVy_vPe}5etlps^$gp1+o<^Xa1RYdX7%0;$B;a%K`9O%oZ3x^^xpLVUhOe`>N|A;_P z+ly26Gshtos(wdDX{)`hTDj#y+GeOifEP`gDFk+9K#!WCOh=dhRzwO@-gf(MF)V7h zDkMAC1^xQ9Z|51|ldU=^@S9ghA=9ccE*amwK7Ta<;bLDOVP$Gg{ratg3g-;h|5@p# z#TIX8XvGTrfoV5fn~lwTc7X|pY^gGH~EAyFQh_gbqvHQrXdZbk0$UAXv*p8hC84e=&5$I7#@|_-iar2-Bbuo zMt`zL9^e>zRN@(nKJZ?0U$I&(GEUXK#&00$hc>3N{R}+3=gZ2i)rl-9~{tyQ}hvh z^Zz}XU?_}P*3%koJ@u@KJ6&tn#hvc8YjIJnjoCp=iX?R-3NR4PB!w+(}cjrn^TgPJ|qKKf2ITIj)=zRxX92 zA~nrT1j>l}(?hxZF_5Tt6n_ipOc4y}?6X_Q_wVmv|txG^#tat1FR=f_y^3y&UZt)|`-{?8`!JGJgopnsu7&9TbHm zJ@i2?LTjrfRo+fj{HC(+ZbX2rB&+X=^n=yG*() zK~2{LaO3Z^ijwOVD@iKXR+lX1^(bTZZ?`UP!JDnAQk*~BCc|0_e=K06^63ghd&=c? zkwdgmC>GoRHsHc-`+rK6ee+{f!MVV?PK7NqA+DS&91?^azEf*g^IO6q=)~vzjD>(| z+*fwftT+6{I?6X^)@r9gna3p3#j|C($G^QMqwMi|x69kC!bYv_gr;u0$bD&D^L2j67)$nTcpsYu2VM$$5lsEK*l?TWaw5>}Ci%aXu>=p0y z{rdG=;hRw^#a33|p&UbWrd)&*BtBJqm=^vTUNgb8$IKy{-rNO$Y=X<`#kD^;Jk)1t zKhp(&R;c|@U4J^g4*pPc8#~ZexM@{<6~DGVRLqJi>WSBq$qxEkC}!OQ?A37It#nie z*)q#wL|?bu!Pb4XBlD+9@=ukJ@_j&iqIf>n*O4n^-J`7h=FOQr+dHzmSh3x1HL<2M zIb3n~cI^*o=+}pb-HuE?m*AP$EN|IA-c#am*IJ`D<$q|cykF=Mc1&5I$PI= zVs9XNdw)B%5tYittU4^}BSZN$I3p~8pGO|fLExeZBLgN{05jw;$k$~7$BGg~nMpEC z=kJhxe<1ry5-tuiuIoeAs{j-QE=0(~a|=!m_*AC|eC7wD;9)1=QkOs#KemE5_yXeE z1;S@YFp~75;uB+8WG@9AMHp^|tGRrogFlXl>ni|Bt!%&JIpulIOn!vM8}w6u4wv&O=U_)3ETkQk!D6YzM2LKh3%*`sZM54ctA5N``;(1*j{bOdUH z2Y;1Zq#@%_Mb5_QFHU$Djyv^JPZmy2*oKpJ^KR9B2YeI|iWM1> z+350yB_66NpZSQ4(ZaQ$$A6uh{hdey_3(A1<35o3y<=3Jv?mRwpnI zVhiBJEJjIBqOlQpec{FqLp+d)MzXoXk@yHPm8}r= zC28s?0=dv!oVyui_?S_3JH6mg+bJcp^Dpnda3}`Z4t(GfLgpM%qUBNvJE`Px_ z-k}XH>P+OnP+G|stJsEkRg1$T?SYR6!hrYvNAolH8dE>kzdY9*8+?c&yf25Z6eu^C zbIWPAQyw$A!;a=>FVw&Oe#~*vw?t4#u@FpIz zV%U2H9CZfNCg*0y8XrIN#;+}miJ{MLK?J)`FO#eYZj@1B$U z7#k`%z06IY_0FGJxbS>#`kXg?eE!~9Hh2b<<6|}iWyGKYXaaZD@$)KRG$!vX!`BoW z)!#<1sjKU6qu0r0z&=7kjt{}dG=PILsydAqR~xs^c;hGLzn`6-yfuIR z1b~Qr0c6p!qzLPrf2_)-T^=m||O=cYl`Q>mzzd6koq_ z9u|!=)dEabQ6iT>@t!=Qxm_4N#Wq%n;+8zCP^_AJ08e#(g`v1HIq8j! zb95_QDM0M>SeX`l5X1vyN593Int*kRDc0*xC)k4Zrk*xV{zzz{1zR7#WMGL8hz%(U zz@oUGh3lR0jVT|y*?*oM+uUp?f?Z#1M7I3}O$g2R7i~Kb(H@IN>&DYwt|B?Xs zBSzwUCs)X700bl}SVqKkvGM^ox?J{KEcE9FnyUlVVt;8Rbb$=h^~(LZql?!ABqvm8 zCDdWqHGH~?xdM-d%tjsEQZA>DC36-0O>IC-g(M!#GCetl zk#Pf$`Bg|pi2zzYYO5KSpk?B@>`@7tKuNKfujW8|gHf>p{;WwAFU2p2WdMpyvXnly zm4VOrn*W)xv$T52LyI76B0%NazXEpu`gEM%?IhDuvwFmW$%x7$M)B1`{QWMB;)4Vp7oup zd)B<&6KhR+lA>8}TSSEUxK5HFBGO9ax9*?--0hLxF=86!N?HubUpPDW?3%f9)^*|& z#(z;D&H#JDlZ>s*lCW}l$i4bc$MHATo8}&u^KJw0o? zSFc^mXcPB4_Ag~@a<2t;IU5Tr6cfPAReymG9g{Rf`m!a_8fA6kLPxEcsJIxp@HfQ| z+#>P=*;JLUEc>WE@ zR$F{)yE{o1pz#iu;GS{HuNxo}qp@CkUTY>VsA?VZfVqWa-V6%9B!5h1yHxUOh=qT-Ctla8O!PwCABcB_}RRv3n4;8a+J~e`_B1Ew+ z8|%Bp@(?Ozv3Q1GFO~RlqOZSxIOZUFUaz=StrGaikg^wdpja*L9xVa;1y6{5tF*RB z1#PBeEd!mTT{TCi#y9B7YaBbR0DsovP4F#R4`6zUs8*KAQZTNqvgU}_imLdx>g`7Q z1B(zWUP&R?e-Pk8E!eWT-jKH%Jb2<#{n2;}y{0`LR~hbOlVj0)uX_)^R1}x?ITBfo z!#NV|FG0T4vvj`XH~G@I6UpwV1uTX&B@hqUTm>YhY?C!W+8oj*svqwI2!HJ^0>3gW z1HXRADzNtTlGu>0^C+mJTknA;5Tn`>6YBX;E}I2P0A@1`@+hY|e8ME7e7aO|!8%s) zA5#p*be~$(!p$gZpRbrTogOZ^SC%$8qIT=4@k=sd7CM+)9tKvr#0URM| zt0>9@bW}8_0&+4IQQD7n#5Rxqe%3BN&Xc|pr(8D*efcaF^LsZHx+!MCZUtHfoyzFB z?wE<8Vi}LVW*?oesGIwjO>xL{X4YgfTt1eo^xC&H1&DlKp9TGMg@0#T*EN?U=IKqe zUanmAUGjqURp-`AR+jyz6)Kd?@|O@T{O+`V=5I|lCT}YmGq;c8|L9^0jvJ=eU$3)w zzv8sj#656Td=-UQc+>ec+XY-lddZ06+VRG-*@csEe#W#$=MTf~Q8>283hJpved7Gw z^Q&|K_xI7`6mS%dW`9u+h9}cw^M9Fv54sN(oCBYP0Ecic`Rv8~#rsYkA|mas7Rzu* z1&8NP#=J9^;6$!~{&@Qe6v1Klo)33z`OWqNzuW%rY{-#P@rYYK0RA?N6&(Oan*)ct zA{)rLkBW~GK&{ulW1PTuw!`L#%T}BbfrY*MYrH-u9T5&Ujed9x%Ss$1CH@XC zmWGgMJYtACiGRrf7n_eNGbREpVC*bbQ^w80__cncrF6OCW?8%cy8FWqlK3qO#ntM% z>6U85f(`QT^j-v>ey3PuBvYXFLc+P~p z@wqqgnFN-W`P|H>bF+`Y*JX5;sFkq@#xU4go|`#G(G0xj&oGL^DR1n)_x&hU0zx&Rfn0xKN^*q+BTwKsXlnwj>iS{$P95$Ga8YE+iZ-3U+JmSUd>ikef4@iu+(V5H%o$8fR4W`yF_EQNUd zIkZtvfLh4EVccKGz@I<815v6TdwJj~1UlQBOeUdC!4BZ@UaYiV4FSYTDQ{#5A3AvWFS{gJaeyQ-V0#7wfk%QULIwuZ%RWL!@#gT_U~y`M7#kEi3_4BXO4c?h zB7ZiqLzU><`Ms?6*4*e8M~t*y|4j^lQKam}AGuGUt!a*9lJi)gf}wOtkX%&Kob1Kf zOt{XpK(r4FBAM}s6k}qsr679#-Yhr^&{=&Oh;Dy#2mR_@$e+Sjw`^#M7?e33lok7$ zioGR`p9IJyN-%gd9~5DH5cclZ0Kn~9>wmt%C?*fqw_# z__t)mtzSCH1fZZ&kY1qMEE{N8E+%xZ7Uw;GH~%U^8enr zdiLk(3Gq}J2zyDf8Tn9<2Sso*iho=B1yV6Ol*=~Q=jZkgN&hsis3?7kj8&M9N%lPG zW)2mHdGGj&1Hcf>map<$0`U0{%2OQ%@;hxzenT?^4e*lIai=pVF&aakoBnogW(F>u zy!bdU`p<4R8$DHR{Paov(pQXBxT_i$0`_x4fxvTT#=P%8YeFt?aXXtSvwvksb_OBu z=rodY_C^-&URt>I6B9!tst}d9^ZIE%SMKja@&9AkYN?T(IfrHO% z`@^9H8PZHEP;}xFTWyC(jenq%v_Z@RZuK2W&nU03_2=)GpsU{ggsmR9)INH=@tE=5 z?}d&4MU!}kzVgRhbucO^x+CIe!LNC=Z=sU{8q&Wu)~#kAfu( zp{rm2c;Tz_rc3}!VHaBq?oPKnltVizjJ6Dq;?8izE&DIX=4Ys6Sbs7(#PnHI%>1uO zM)_NYtAoWdil+Lo@zSq4JRv6j$8e7A|9YPxZHlTg;S-Iparb!r`;Y2hPB{@)I)ZmW zzM?&aQOCl^&)6n8H+!cs`C{Snq!@;!<7BRo$qzG*8O3%2GZz?w#5dh5Vi0)e?}AtL zsnLaNqXPZfT|TqRN`G<4jh2*|*u-P&8WZ8e<`+giFBYJ3C4^^?#37jK9<(cpIoD@b zncO$tQ0D=SktRkCzCL0WsW}N}Czwo~_sL{>P@;@iifFG{@%f8Cv4uPT!|eR*jY!CF z$k)L-oNbC|w8%lJE)T}g?4??aMI8wn*xdAmx#=s6Il}YPSAQFm&moZdy&H|6j?)FS zNE7i>m&K4DnydgHYJ7_%P0JD&Mdkdf54NcTtT{|5-6-zwZ-QbQv$?}enoUJ@< zS#mwM2)3OFF>9aQ3~*nUyg{Xf~HQ6zF*qp=V=k+-SH6gPo+rD&`o~I(Rh9zPz`MeZi*K7jO(_)8`M!32lU2 z=VUX&=}(#bu$tgGpw{GG2Trr9qA-v2jv{*f(i89L1XNTBLa;68SDcpuO@J@0w!{ra zP)Z*I>Z}-LI3V2pT6+QW*I$H15G_^X4mjUCxqpJAdzizGFP=IvrY|9+4YurXHjY}} zasT{YICO?2F*~U>)|sUx>5AXW9q|LrL74pnV_)fGe3tbRo6HIub3+48s#4AXa;oH! z&oG@z=R-g;QJDZuR3iu8aEFgkeLgfc4d1m5$giuAMGJBlM8jx>?Y#^b89%F+UmsZ# z;eUWP!KRTB<;n&g5IeP+qdgri8Vs9$_EfA#eIxs$D04r!Ep zAAIhC+dj|UwrXjdfV_~L6yKoy8H5Lv(tjB4`SHtWc*T$VB}D=ZL!$t_K9Qk!=kmhs z^VmrJ%%%AoFX%pTgbcXGI!O;KenqrGU?rV*$!@Bm@$p~bYBL?Sw8O;Fgt{Z08O#-e zt;ze{aBfSNyG6@wG>z9QRYK%hD^_@N{ac(kJ8;PuXGKhN^QkpzQ_vTzKR10EKYy;& ze1;%Pt|xxO$HCh?z49)PTwLAVOJ#Hc(Ty&)w2<5WkaLeHw^vxBWUsRea7*q6Jeu@w z$eC%m-3aN5!gccC*}?94z#a_%a!Fd@ac;?G`7+Zx3x*^Jk&xS`GXJ?Q>r&>}5G~Hn zh@vWTtRdxv1jdhN=s#mJ2~$)BOMi(YIx2C-4BW$U%n4qORiVTp&^;@=x2rSmbhCeJG1X+}etXf7rgx*)v|r)ZP&Sdl z1T?;eBlGQOMFr$WX)TG3U!g-zUO-2ge|o9${4vtnjX5^#AXF_a`qs?A)r7S2`A#bCg4fqa$1kOEAk0~1aGs$G)~Z`oc9-g!UXt&cyRdwx&&;z^qn zM!15oM59+4FHWL`*MC2YgdNk{8_1vO&nh|y}C`$O0sl8ni!cOHNX4xY9Tfv+lE+2S$<`J&SK0w!zC`dG)bcez5Y z%1056DbM@eYG!bcKr6kXb|@5OMGlS;y^@JrvGvJ7Y?8XYyB|4wc76Ck;`h6^?J+Vc z3(FLFlS;%Hd4FA%l=s5*6l4)}VWg*<9UeEre-^Vv!w9rlv^7}_wpeW0ARJy1Fc4J( z%ljv9_@b6zAJ_{u=Q%Gz760qM2p|k~A*WyUI1W@)%JI36`xE4iU-#~P$|h+3!PSM) zQ}FlJ6FCDK5rpC%&TsJ)-J5#qjotBssGYjtof(51-G9%&oj*6_J^f<-;(ZgnBRC%9 zW;JwO!$Z|5=O+{uSd@q;xTKVl{!(Lgbq9Y@2}DoXMGEh{G{u^wVWp0S!8C~44z37= zBSz8VGMGxV>_S`VBk5e#;Gv?1C{G946`&IM&7jGWd7=~MU3=2q*%=FhZ%XC8SP6ss zXy_NYGJnO}ctm`PsJW2C>4(30lkY^_r3bezYc^m7V+s$kqy>iK*Is!Gw_dj^grJgO$R6nGQg&ON<}wDI%Ps}u;4Kl6>T z2DKidJqGvzf~xI2GX4w`NYrJ|c2DeOC(N?`Sbuh8yaNj0eQC2R;K-wqx>vx13F40g z8ICAENS9nC*eZF`i3WKtWSm|@B93Nwer`sKBDfGeiRqmpH6mEx#T;maQeUWz;FIu1 z)E2ZafEqp?12vA1Wgj(afnXA1q)BZKLTdV7l#d2Ua`KfsZm)6~$$HT#0@u*6Xe6eL zF@NNWh(DoX*=kpa=tpfuCnx7M9lDqW^w-mQw_J@z=D(Wto_#@KRJ^AjdDGJr&2-`9 z+4`l2jTaZat6w`q-KAna?|{|&`4YG+cM@P75a1Kp?6TwhVY2s z$%r=?BXOf7o?-`5qT?$tV|-ZH3KIPeuzz6$`+dquifDv(aGL?T6cjA{{s2s+fmN+!4L1W>>ChgihPHmGI=HH@0i&iK!JSHYCS! z+$>DeZCJMFxK4aIOgqb3+Iwp2xlF@LvI zl2XQ=dXrBmEHDwV^r+UF#VlgDXKu#LaC4GU5LNj0E1qIG@d$Kr`9*sJg^A7XQ>GIK zDfN?p_>$+MOWqV)L`^i7;=WGyQtQU9ccNrt59Kh%MKpC^7kP&v-?_YkX74w=o&p1- z0k*D=1*8{$|0jb$Q2J054BYFbe1D;On*`(vdy;akh)ugOyCgRgqf7Kb3G}Fo2fd0Y z-Y!7){OetvZ9}agOR)+V@Z&)boJRN~;NGD}xLfEEysl@?)$2oyvogS<8V}+Rfw4cG z@g9CAu14z&9_%;D@vHVuVaTcwsPjmjL)J8$ypA4!8Gw)&t(&o;=G57MiWxXF%aF~X zrQ|(7Im*Ot@5C5mr}dk+7QQ{hq;1Am8y_8m$(zy9SEd%`q=pP!Bc z?|t??WP=-fS&z|JTH@qIf1^mB9GYN%B<@ zjnJWkiro76B^9laSfCZ#jB30zxO%kRRR>met8EWvvSk0VFvI?S4u38`F5JE3J$z36 zfM4c`vk-P-=5})(Imw9xeg!nRmb2ZfQc0jXT-2H!BPi-;PC^=n2bb%UKLrK4W3cy` z5?wBvvO|!|nmn`gURYUrsg)-?Y$!6cvUoHU1_p(A4akYs!thEft6gbog=l@eaPkv2 zTzD6^5=u~X)a>0+K7R|w+FhzWrs+PZ?v%vnDf5V_2=Sd#c(a5nFZy0-Y82tSPhg=n zkt?uWizeOPI8h=Vsth25q%jML(mH08GM6}FIqB`oyBs2tTicR!wK23I-L~X&Rymgr zZVX9;`>nJgwpn)l*SQ`Z<;pkDe=a6?4<0_3O8o5T)QBc2O`~Uj2Gubd(ifCG}OjD#5mq{(C@C7rY8Atohi;o{%i6_PCr3x~)oH9xUdLFU zDszY>5rQbEr?UIHK@hS@nsivVkOu zB8#9lNR=w}p(1Jf7@2qrZj9|LCKjzKrAjcM03jlvgp^#WG*K@BONA1y`7>T)KjklU z&N(x)bAMYKY*b58uy^Ln{hTwibH2~@y0lobUz@4X4siaYML+20P-ba<9#rEu!(R>w z-p?KbE{YX+&T$B(^+$XgT5RyO{92s7-0_do=p@pajB06aPx`@B$~Zz55F{y&2F&5y zB6Wl5%aTV8k1PjTG%KYy(5a93G=%?t77WqiDt`%FD}h_BbbUE92yE>}2p=^@vZG%V zwAD!-q!&jO|HI@&iH(vZwf2yVJ~85#%Dzuz<8f^A8e?M0>pw5cl#zd@BdCY0QAFSA z^O_9sRKb+jhxrsX_g(fzFbL24NwhGa=h#3GpXU;nqsP!%Vp}Jw zb$>+(ow(PL!QIbi)Q&9`ifXSS5wUtBG^|X+`_7F&;Huh#x!!PLrFnO*_I{CLi@&Ob zJ8v3CyT=Dl!p+_0;S%w;%Nvkh(!7u7CDof>H*WCiX>*G=mpX&hh(w38Rk&uiy6efS zYjD@2GR?|w?5sE5RvK^T>MOJL=f7etuzx+N)SX1e_lq&b((-h0)JuAL=lzoE!|>Tr z{pF0xSueuF0K`oUMmC=V)qrE-oK)Uux)_aXQjLpZazr#H_QM#TLiEj`kcYKs6+4nE z+`PpnjNpRjXfmf|OC|`4+TqjYZ|gCP!^E+K*A7n4Pzx_*dNm=PQ_=SJQaxcSv42=~ z)wY~1jb(y#`D!``n}$y7Yl!KdJXh2_oSqKv9yB(p;o*v_{v%Z2uzz!mEo0xNc|Lg? z9HP3Wsm6Y9Tl?>L@0~&IRZ-p6-U}C2fwK}hcj6l{;j@Vvux|62`8C{#w=R`l%McfTg2+u9SCDd&1~E!k|I&zp{?xs=e=RN21YoOx8={-s{sa@DgG zr1KNRLph9Z);q1PC8(QP^H~8Lws#vJ9>HP#ljWF+0U9M=%1vF5D$s>Fb$>|frXeaN zAlvj4mbS(=>~55Df8vWm0MnMHLdPpWz$Ueo-Sx8GI66MusO>&r&DAd1v%y@gGF2s+ ziEH~i^_K^(4$$5LoP8ghM11$I$!Y(!28SW=Gu)am73>qd3)RGxPJ+O&EilH61^y^S zouq?oIw9g*Xkv<3S1t65M}KxGrz1v;hjN6$%ckq=30{SfQeKb0;~^h_nJ|PYslTH{ zYHUe1iVe%5bDt>YCMT3YQf(J_3ASUO3=Z^W2gwtZEwKVgGyoC|!+gC~d;h2Eu7?Y+ zj^}2S_^N>kqPDX}BOPQC6N2{66~?I~#K<7RwkQLp1wHx-sXhc~1%I4y!~yqkQG$jv z2E0d%KZoy8#?RTQWj+Mhb)E{Ir)A{P-aMpsJe$w5Iumio6`(2&ZrLM)JJQQEFsd+& z`0gnuVFxuNZqk>N@>0EZYo8-P@GRG+#zzV{o+plK@+48>3YL+(r@5cm3gCn%!7ZvC z_yzzKR#MI#GD!HMG=JeNEQ|Q;>2Ww~@sH%KBMV&Gded!Z@$M?C^cRl5EF8mA| zE96v-jqpco+!S-F*tjTA4zPh-Q7BZcRGt@B_K)|MnM1=mjo)cN3JM^D$34`?gZbM2 z?{M^TZ#t}O*ACWr7G-&VJXjkT2}}eP`1B_|Vv{EW1uuJq0Dl6p3^#Yfy~k93jEwV1 zk6$mq3NaZFg@HMU9+7^py?9kSON=b%m?V+x})F*Q3^L=qb90=(~%rhew#Xh>Htl|LvAURY-lrGgQ-@Clvd0L#Wn-bOWNpl zH93Lkz>HU`hj2B{Io(oLcHAY4{TeHajGU=Jv`KG1bbro`Qo01LmYG&yy{Pq}wAa(4 z@E!$CF#^7{1;R3##l-+5J;+FyFfUFM-qv8LjS_YfU>B^XNv^X7y*@ylVUB(l(E1Q} zChw0Tbe|KrCSJy;m>JsPOomNm>JOqUTWUG;JG74jGT2K+y=Bm+!Yjb#!GtS3pU8z( z6>=Jlq>wGIvG(>U;S&LM7!8wbhh`3d11{uqQ*mZgREFcISQb<;=A!wT z^ncA17OJD$$AyoDxDjLa#Z)vOOF#Bzp(xlL&G8iklksi?WVU@|hrJJ9FNCxII!4=t z=w%Oh(duD94h0Cbop9+<{oQNQjg7;<8(VLh>(8xSMbt8we2wk1$Z6 zFjH9nXQe)O6h3>N9Ox}N46$JcYJ2m?`+r-A1;E1brV@8I!e zR?Bf?11C?XSfA7%K9u#*$12{9GDeTTHQwB+KUr)sbkZHj7fMFFClvuL70)GON5JIN&rqi7XOwXGKbRtXFSRGl?NV0+U`1=eA zUh7`G%Yk4}6dqL*sI)PAmSLh*H$h)iin#j9CH-DkZyI$+K zb3r*~1CIIVtQ}M^1!oZ^PDX>LT2<(C9m{p@Sbt ztQt9qF7(Pq)&!AeT!*4V^gtjY1{FX7OX8=Q_-QS|n^;HcNH-#M@7f}k?cH^nW@As9=G~agML|p)fLbD<-Tfsdd9>aaJ7qtiEuwapyr>2ZgA- zqElhiw~jykNKl69_!ww@(Eh@loz2|MdFqcouP!q{%F*W$N?Mo19t4?Vnm99*ravR$a6>Ql4yAcTCf*<_cJd(u-c-ihyh^J`ac7->yuGb5Nf-RwTHGsEFyD(EDW|)UV8e z=Qs|_j#&09oVX{?Hg4VG4?MRIKw`^-cSupVc>kN~)gM=~#EskcYB!H8eSf5JYj6GX z-gZ{mXc8>+&VNE-XU^Y*db|~^wAxKuOE$Fl=%@vh-ck*4J+urKV%#JCUV`YjOL$zJ zu(MgER$Ql8@;TeFqyk%d`qw_ZEP4*EME?BbVP_Z3z{2A!&oPQdyrx2N3dHBE>34(X)LCeMH zzZDteHc)5=k{*|>EnNEY@#6i%q+9hmdn{L4hN}(90yjiy_>?q%f%b7w)jrw^!Ir8# zC!<@MIaK@XJNXXW6RIpqrx_^KmRci^ex@y6R%1wr_QiS@dsA^531yo_voqt=2rGUE(*~%4C+InVkwK+Y$ZOGe3UsGnMeuB-7SZKJ%dr6U zxqrZJd}r5M_N5mtwYY2);UiE0$clmdgyw4y5XTVmc-3iZTKKNxp4T>&T~5h--8`PK z5_$_F8`A-BWWIXwG`I`lm7PIdDP?!=gc!tKl)jdiobiL=g!RUari8B;7qCnMVG zcx}Xy+(fBMK{NF@naX7uZzz;_v^D;_WPfaQJ$3XGhAT-g%K%-ud9DC-4nf;6t0dYv z&;~iL0Pf&E(j0Vq$Ea-l%g2=IL43mp!ysu%(9aZ!NNk9$j7fNrtsiXaOGFv`_&_Fj zhXy_CKWMeNGUk{3iE%Ho*=*_aq9(21+Oo-uytVm#z2QhX-K5R?h1{N<0P1@iw|~C7 zNo`l85(Q7e0v8+!TSBtU0Mq{Jw)DfL02~sLwp3)c*8~@L;U5TM1r|7!kU!A6vE#LN z`9baI9C%?59( zOsu>H1^aFTViAoEh|zBI*54@A;eWSgwOMzY+@oyLCcv5*b6`Z+8hnd%TY~@A@7_|X z!*5M%v;G{Tz~>g=^S#h|3f3-aIR$K?G@##GuYzkNdlka@nz}y~*Ad;o+%{h~Q7~nI z3DH-3P1t#SLJ}0a%u;bK4<8;B)(W4(i3??AFY(WO;0*?*e@sJ;-O z=sk+OphH26tyvo%Yzf)`yMreCItQ&k1T+#m!hz~*3t|0U?@)4Juw$qOmbZ%R8r}|6 zeO_X1ve$%4o;37>l6DLJOBcqA6L>!ea%S-skUI+*JW7ZZZ-WQb$0v9QZ$wH8USEU; z7tirqf&Xi1oA`Z>rw<5DhktGO#bqkAL!>Q0*wwIj63WKh6$rUxKi(K%DbE-xOb{9w zAH^A(|2X8;e|lV<|F-eueB;WI+NnFWQ@5%AAg9z{=j!_&fRg;)9Axc5%OD6LcwvU! z{y@uEy?vZDgIssV7OJ-&FP)bLz!dZ@#SKFs!vjafmUJrTXV|BRjeiNM9@YC`7n`;_ zV0E>`PA^f0?Rd8Q4y4!eBNCt}h6pr^X{@MB71kAOM;YD}?)AgU%wilubzEL;{V=?M z+kL6TL5bJi_R~Y}lnUc8Eo$tFk7y8rVxBUq+KPCu8xQq|3<6ONSyTeyizcWVgHD#p z{yR)KI<{gtJkXs&N8qe=KyIymcPKmGu8dGG&@D10|Do}z*&C;6UZ5pbUvcm zgje1(F0*DS{X=wMb7s18idiZ=R9w84T1BIJRzHqnZluWoapo0NP88h!Rw74?ajFD; zf<3ec{sL{TVe@ zlS&D+=ymX=IHw?egVcY)upbfK8@ROUUi!fG+r8$yaFy-&4{{V44Pu!q$I0FdO=88l zb!*zyz~^|b=y6=JCBM~1CE@W8n#-mgjW%R?tptD+hTEa3xAzf~>BVuWTya(L!Z{1p z41s5V3z*k?eeJ~01t*>Tvm`y?GuAP#UuzvnmmuDTI+1Rqq#b_@_Q@c}5&|l1tY1o- zsp!H%;%de@5N=4O>jW?(h_8ap-#Sw!x&ojpA;P9SWr|wh{FMYj4}KyhbK+S2FSiyS zo}+|YBx{qFoAS#6Uq@wLk94f5-#mou{Rq7l@V!q;c}?3AOff?_wCpsOG#L@LN%<^V z?vkw0iiJ$A-k^Wx+Y%@ZPfbITS91){806;tx8M%ZEbH@?^e; z)UKMHK*3<>3==%N@=ao`bQ5Oi&R?N&nqe(;wIee`8(DwQkOFyDL>Ya)jg$}O9t}(P z0DlutwK#Co6sa-;q%$j?-jS@^;U0&2Vt3iht{`*eiaP74RGDSS1P~eP!X-f-cGA-5 z;0q%x2oGf1Q#*NUap8nL}Ii(G3hDtWe!m2a5D`pb3;<8KJzaepK#A6rj z$H9&fcm#iR6lcFhBBgFGo7wHkUCD=pHypS_((N-+!sRwEziNw=Qa!k=Qa=bI^_Wz% zaRse0I*Bil<)((5YxDaQ9Ym9%`hyg%-P{0*j5QT$=F>`(J31Q?B z3jy@GNec+z@m{KkspS%&xe{Ec7Y5|1gS8-k*$ zsH0@y5wgTbkvWKP7@4~d2jLaX?oB%axmPktNPNyGPZy4@S&@egQlT@No&KoXY)5K4 zxjKJVxlr73vI!}t+%ty0BO(ciH;zW_;j=Pr7B$>h%mUaEYa(`A!g0uFf=FBGZS>m? z9-ts-L<>)~z5ppiM~a!Ve($ z9lgx1bXsla;j111uEV#9e&qH65<+XI?=F9xz5`j|9v)}hw{I}kn~3!eZB49B4z5o2 zt??kw$I)*XLr_XRQEHqj`qEQIZ0jN!*BvD(AYLQNfilj#KLY;I4mQ%Y6>=_l zUD4pn|A8-EO*AOnd*{q!l*-Ntoa<^*DPz}Wzps6D6GXc6=Nq#}7w1n__cI~yJotYt zUAYE&)N{uZP88s_G3O6cqbUPx%unQU{1(T*$P~c(XEq^+Y7$JGOjK$}?D2cD@d|`s zEk`XeuHxkbMyt0CQOM?<%2p3y$OkI9M6en?+qcIPufN=bOA>sIu+Q7KXI^_F$_roa z?J_A=9@>xuh#l6Dh^Xg}k=Pqi);fRldNlGzlJ!DAN8fn4N2eZ{(96PVba*gQ?Dn`LDv-sHLHn|nM*sR(xd-GL8fxb}?5|w*&nU}r;+I`SjVzNe zs@g!`O-9cp%yjAR@;>l)Zr)vteDufd+kwK6*ofTNuTzO`TsWNM^fZv)M^S@nk>L+3 zpmGu}8IKhJR=lr9kxZc zal-8uRQ^F~*A9L1MOh|5Z9IpD>lf>pby5ZVZPIDp52sFv-N`Ia;}ysZphW6RM1Sa zSUP`~tCBRi!@R@WFOq*8%Px_NlEa0rx^-riS8$H&Y8zA2RfH5@y{#CUAEBABdw1=^A%5Eznq*2a?z-)cW=nr^Y^mA}1ynp}4pTe( znUg-NkDHFZjJIIXnd6DrfsH`>T|4w;_2EqI!X6<%&_E## zI}X+tJPLt}D{=W4JEv=cxS$=4;5Y&G*Xtbk^)yz2GtTX0AbvtXB2?;mw^l@o#7Z)m9BdHw(wKa8DB@JSI zXDPn~iD27L(X2iTtIGJKl?%3sQh++K(|Bo~Bd>XHA_w-SevhO#?GZ!vV&K7B`*C0O z_&!D6khSwDQ;FI^-rOJwD`QQtbI~7yos+%obb*;-_56RcY9D=xR-JIIBLg0%T0eZZ zHp9R;mxyt0fM{fW_VN#;QDh(bVnT~5;(s`l>u))-opF2(xP>2c?)KF>`Q0`@pzmd)3jJN#bE+r_3?)j2|@_;ra|RAryVb_ z4m`E)XT^W#J)QBS{i+`M3MIAMwWD+P87~dW3>K0@4=Qo=$MKm0AMnl0?O@8KRK(wr z7rH9GFVey*mEoJKL7LJOizW)r#3nNu1QcM`hVN!xdE6mpWgeQ`&B62sZ$0z0LNZ*5 zi5rRtM=_|QKQfyTl&CDyX6KrLLBv=l>3+g`dLw^6UfzlKOa~QnEvm65WD|>w)GRBH z6?Sa`Z{4KzPCf0K3g|tw9VTYvX7yp)C*&bkorTT&t((3IjCnBVxe!Abo0bUClI%nG zxvQC~8d>h9rlZ&%!y%nFIR{CWG#nlc9#4S~1iy-qh@ji>R%Z{^j(!97zu)|&zVAWx z;6i_pObxlr;-d?2dnYqQI$SPZtIeNKF+m+Gq96YdD*T1nTv+;>woNYDF}84#W=Ca0w#Gf-MGI&u}4cWXVY zw;VDJAxQ>u4BwOnr67)c_ha?&4K-||YU6*@{?dsJMOId#)JWe%-=rZ{s2RK2X_@Tz zv|bgPKHhChgH2;L&RCnnG=t_?^t;O%R*iSAP~1ye7vVN_`jHp-TdETPozl%S>^7{QV&Ugo=;?np zZK;i|1yCoEPfccbg6C#Doy!(S3aL^?n~9@5zN?h2`0(Z%(J>IOjQM$+#k4B{Xb7p^ z`-zsBvFYle?;CgS)Gj^=IsWA<|FQ&t>1Z5J_)x$ZKh2G#(jRZKsfthBg?(ER>aerv z*4yA<{p1b8Qthh;wVzKJ+n~u<)^>k@FjX5Nc|E(a7t#|DYLZ)mZO&of$w-%oWEJRR zMWZ->6cw9Dl*^t*3Yk4|3Rt#jESt+jL`%D?vY%r|XTUa$>zC}(-|eS26~@Qe;S%YB z4X+xnbiDuCAh%}3*2ZpBfqNP~zhTTJcg&?SOI4ZfqC^W;4R5hst|rYjyhj^)Vu6;F1raN>V0fr#mNnFA1b zK!2fAf4St33fLfEzjirQ>Km6&r6iusv;Y5Q>wCZThLv{|bxwR-01mtpA8nJ~-;EB!KkOqSAyz^xB)tI`C0)ot z00mZOC_R*hoS;E6iNlv0j~)?QpddgR%0h4W>fBZK%g|=qPuVvKgO`OLZLkHt-B`y5Y`PT-J22_ykM|)xhg`?x^D#qt?Z_br==9@4^=q~)XZe@VdA7+9n$5g(KTK_iUu5k8U(=fN8GCc1bd zjHnSbs$G~-8o8AR%IXjrTCftrh)W)JNX1GpOJnb8o`h1bWqQ5P>7~IU!XibehY0>| z$}HR(HJgb#?xIHcG=~qC)=j*6%d}PJvQPC znpb=!%vsyc$(uAqnVBvo8f~gWv(4aTz_X|19UTq;wF|ZLH=Xib@f#fA%NS&?Aw_sF zvzel}a!v(I5R0Mkm~rz91sbnkk*&PoN2Zpj}Wu z`7`+8-usD?OVIV3a)^=4WFw=M3JU%-QA4@VU?M_@U`!UUZ3!$Q!`;~0kI^+uQ?;za zfm1$I7u725<|DmSfybj)ER!Q@KU@JGzxSK!RW0}g zJa?cO3B)isct;y2goawpjlWNZ&P}HlV{R%_F{GO38Ui%a6D{|ZzIg6Hnh{7|$K#-Nv)xTPXG2ea_>$>!bK}tuY=ywmla#`L${VeGj@P3Fg{c+-+rD;WyLN;AIAbeOQ3%>hfHacP@wGwe z%5h7@%J9M_hOte`wf>?_3G5?vH!-nn@%~{+Gm)34kfOk>_f#mO@ z`uc!?bbmja>e9u3uL&aZ0jWN?OCG69-+r}t|9h%j-)HLNtXz)P#KAylvbmovoL~$4 zxdSZ0@Wl~xMC@cTK*6>@CSq&jJ2W&y%17?5kn8!nT>WvV5AR3VOVI|x|I`HiL_{Fz?& zSQ-0&BybXSIFzDd*amzy{1c2VW}J;h24^{Bo`5zi2Tu}qLW-XQH`-o3 zXqBuy9MqLFIOy%Or#~rb#{X2v=C#4YbRGa})9s6F$1QT3@@c?+o{4N~hDYy!<>GKX ze*|~cq3M^Gkbwpl7;hV=-<1tDKqpCZ78JE9-1|)w#Y(2J6|8Bm1 z_7Ut{Ca}&twDzK~3T$cdhtBY2ytRMr?fGfQ`6aV_LB=nzV)4r9LebB#FFmhu)k<~lLG|nnq)@Kt zK>HLjt3fEoQ@dl__GJwkyU@qdPSC6-f4tO0rGTH4F!3xM^bzs-G&CfSQax-67%yJ1%}v2p;9S;b6lSomK(;!_#h({9-T|Iv&pdu zrb@A$U|$2)bG`k88K2!L{%#<#)*l`960fkI`-jq_>9v@tjv@<^QBIO=%RB}3f0HIy zqoeryD1$V%i`xbbB@#+2Y09&P<8Y*~J60Y`WeU3hk3+@XUN0;1N;^kVk)Z*$x`S)F zy}rT0ZZ8q<8;pj{Ejd=06l*n_%~b%tkrF_V2LY=$o)B%7B~Fzxv9gc!Bo}!s0GmU| zR!{%PIT;K%nk(#zvBeVWFPDFff4=%eW$2SpyL=B~Q)#ru0O??HhK5%Aeu@@n_0Ygb zs?S;+iDpg@3SssRY1C^{j$F-MW7&%DSRz=R{ywopy@@`!%nY$L>K}kL>bKB5=0h^Y zwyC>ZWVhSch+o;|`+2P5vLkCs`pVXVB$u2jfGEr8C)g{9Pb1XToKWSie>OW4-s0FD z*a^oFvZRM}w$432+^m^wiO4Jo@fw>>YGmuk?TRfAis^Dl=GXu(j0M0XYk{ooinnU3_!_jE=sTgLHD2E@|6Y zoLwPnrLM4p{sl479H_5=dk1Mld3(W{`uPWQefnKEZOM}j248`LH%p|&<_O!o?D;7k z)77407}6!Mbv!cHuA8 z+mG3mpYIz1li)PZA2Ti(o+f&Fb@Zs$Bb9?x0tr`0CieK|ESntmlDX+;IAEn$p5aV} z=Kscf147}$cXWgff0;)p`v*9km(Un$e}Dfv^9;@TqXE}b(Et$%Xn2OVjqkq;dVX?( z@zxIydhGTA!KF~E)HwM4(#*c<{K=)ioKbbgwS{w#K=0xeF1e|4p5$?=ILDJ;w|S(q zX-$mh1KvKQuL6_ri)6a4eiTy6fN}_{({6U!uRvx}1yoNve*~l$C3nojVgB zF@`G&+fW_{?wPo^QcRw(Yev_Ord%X#;u6Tj{#xSX*94czT&m0@ZSdpZVCd84bl_+V zSp(V>yG%-ui>q&JiqSH~7pd&$M){?#42pnto(%*>pq{e!+hD@IvDA$kMqqH)x3{%% z2_Pp6M{7%je=}KtOGfNmgtLc?7Yjg#lN@#d=U`uYpf}a5UEbfBvfGW04rB&KWjlYo zSlNRM?wQ{OsX34T4s$91l{iPbt?U z+A;cl6cRejpJYQf<{mfZh%LT3?z8^9h@$COJ;a)Ee>F{rUc_~=MD>f-M&55-N0U`u zy)ZW2V+Na3wh)!-lD0LDcAs;eMy-Yjy0kB8owihWlzu^36E*?uqR|vnK~wWWp;3kamnvf*;xw_ zWvH2me`2ysO=Rigo0#9hIP?bThurMMY8im5mu=Bu7OWjO+^i1om ze<|zb;54RkZ_>#|m!x$jY3Pj1i5e6)3vw@y3w7cj-xnA)+r^= zWGTV7znc1`Efi=m1ckqwa!uMkevsjamZicj)~+4TX~{_~wul{OvXfa9o8*kr=`7JG>4{Pqz7-2ujoSph z+N;v*ynlE$3zwbw?JlsKY=>)1X^pvj)-ExvPWSbvIvLA(vs=blA;KVpjO;ixnoOPS zN9i1*foV-_{Vkl^>;eL*u?mVV}x`s{PWaC2-6M!U1|;d6VPxnIT_3Neld{Yv-VI57Ut@c7SwsPl4_uo8H8Z-*R&MD!PgXlH~SP)7{&k zaz15OX5Scopb8F=i$vgW9tw?t6zvwkLHxAnlrlEM9>~*dFMQ0p{n+1=e`Gb{#Z+ai z+ZqF8>+P$$QC&EJ#m}HmPt2oYGwR_+%xtTIPLIRFX5e=&DU^q~eanmV^ zARz6iz%&wLO|kL7{#q800h{a){J|=P5q$)<=Vg7K-AUH&>QV~X3Fk%77#6~{uVa6$ z54z@tSM2NSuSZqbe>|nb*M*CP2ql0HvjI4G--k~dE0Ju}`(rS7tppO2$O0NSs?K6M z_%X;RMI*>sw!^cAG&Ni>t)b!Oyv`Z}0-glj(+~VF`oAFDAas27!CmV8pFa34kLbWF z^w1BIKEO^;%z+|GM--T8nI}p)8QC0c8Cj=W{8TAD#vAO)f9BaOH_mRT$Svb#EDUC1 z5DO2fDtiU9LdL||*DkXSlk0a*q%iD^QC*Z+O(x2I2^f>zM3h)f%7uwi+R=c%Th-a| zSq9Wu^?8BPK>Q6+IB-2`r;gV?y~G3G=|ITM&vwUn77|y+iiJWhMg=i;w8Z)neFI(V zC}$yf1B5Xqf6+7Mrt|ak?7-2kQIq%^3?H@i(dgD-3QB4pYVg0xhz%#Jf!|bCvrg^D zgzbNA`Tg(W7%(HEb*}Bf@ck9C!)mi%u^(z*pCGh1*>KawE(;JOvxKUwQC&=krgZNo z8c>`IgggjKmDH#D2F1e?5jPYrnJRA{Pi1pfeOY3)e*vm~H)A!R&sJ@CJ7Z_xc+rMP zlt3FG5~YfuxU+rX$vOB7B!3cj!Vit z$%FoM$%S0kf?w7SU2j}D(m41%yHeE8E`Tv`2&XLiCAf-hoTwCjTVNM9iagfM7oa;> zJcEDAe<&69P(XxJb_dDeM~F!F+H0>-Kr(MSAXdzo0B&N{MxhovijUAp*9{pO)o2My&uI(3BA zZrr-rxG@ukxUygQEhmDApoTCUQLoe=U`N((e=%`vz(Hy~aWC7uCht)rHgSr)MpMxz z&ZjMc3_vi$$Dh$h8OAe}$!wlvKR|eUh|m$~di(e9ZKCHThyvkf*gWL@!8%-J5)#)* zEN9Jq_~58PvUAE6fI+nqyEdr5dJu7X|1~Bn@{V+2OEv** zfADp!T1om1S_a#rWoz0HK~ws@jZuY65DaROPqQ&mIM7DL8&1o%TuzWJ>G#&{guEad z@()o{+VkA}8t z1xg1eRgx7s_%dKm;l!akMBFf<>)4$*JB}CU@j?cJi+S5u#a@cXd+6UhyEc8uiY9V? zxu-H#@>7{u4me(^C&QRwPx?>g_@Bxl^+!OLDXQnPBR%Mc&g#GMMmkr>`ArW6(^KG_NuRD zGsA=F(V?~dqp4TPTWT1Cu&vsjf9GQn6zz3uLM#SDi}m8@f;9Pjq>r&6{t{o2^Qp|idIl;e_IJgoC?bS zgZUqmS2N{za)n(lSl?4dS%+LNq*s;U_4oBA21YZh+hllc!s+65Z8r^Jb7AdG4ku^y zg2T1qZ~|4!=5WvO4K9_&H=bCL3F%|0vY!cFd&VOPdUt~7X?Rd%jky8nq+d>Mo5G90 z_Ek9wqsV4gO6~d`eVdF0e_t_jND^O*_{V5Bn;TdifL=)HV0s6CklO;(2G4K!5{&O` zU_lD7$(K3IPqzvmnh-kFVs2kW@2}VdALZaRrs(tE#Z#P^QH-ou*~DbGjGT*Dn?!%? z1K;%VWBuff+U!02sDQR60bT3JYSuMunTd4ey;OQEoA<3jY8U3Ke`jyJ`?fJmr=!5W zHNnRq<|g#j`mO}NEA;ip1+_|{TC^8`r1sY(^o=>+Il!|n9JSRh(@$!5ca|gX4 z5LPJUD%qlnD{i9A_u*3+cN7`tDvU!mPJP2Od@}a}!{aEY93+^mg?lir zVDpcS7fL>ld4WGOK!MnzNgLK@0woLvPwXq8?tdz0DorRHMr%stL%&ig59ZbVjOp4n z((|BX=L~-Zv>OW7GN~1vTefB`0)-e$*FUSBzPoh#&hwzmP;5Y89Dq;3hlDvAUC!x~ z&p75=U-+_ifAP|+cFse;S?Eu->@!ZS9l&D%OC*bcbDe zim9F1JX*m>gF`lt;Hx^9!1^+{QRGs43KN2vS5i54K(qOkyFGTLne4`l@uhArkM>)C zniwy_ZKRvm6&Dt4#}Gj2=wWc57X@$x8R-FJA5D9~=5SkYqTB0Z{|#b%s>BYpg1Z;U zR4+IfDATgj>$7#QH4o7GbXs$cG0at{2L-4WL=Uq=IOoJIs(e=BGbq z8|(jTXRMdk=dGaQ$yj!DSkYR@e&m-8;xTVM z*M)+iSh&LhbW2jc@mQv6vfq4rJ|Lo){lbmG)>*GQ0(s9G3Cd;L?9Goh8$yBZ)zHw}MJ?1bPeVS+s0ffnF zE;z>e^?G83rl!0A25)+rtx~_;+8U-<%BG?D|Gg$Uz%ST=4fJv*@~;!AJOgTvYce3R z%i5x1jEjgHAn5r)h)lb_e+MeI+Z-?73PwZ$&dJfyawf%PqZS}xEjgX)?ct)vq6||G3Z+H0wlTP_d>ffQoX8g%BByf6E#2%t8~A(g}+C zB-M$aC=ILc17WqKqvkZDA7cDmBH4s|7emh_dAPxCz3p?UcJglH&UFgH5PmK}m)@J@ ziIMSaB@UM!c6hSRxIl}am1EojzlbOFH!6RmvDXV1YEh`T6Sg zFRLexdateT!6L``e}thi%+C-5Sq@*xfKx@_ONUUGa0soxeY4QXpFn%H)muNZ$FI6 z)(f97|iaE@ph=y?MI>3`E=xsE9rl2+ac3-a1~`z zv1x-p!D^T#6qk4^z#0cd&D)EotMM)6%=-(xLQOL@Ez5{^vXQie99Yb8n2})c8=0EX zn9p8Ex6C{f^o2J&c5{5H*LJ67k{M_52E_BQ*-38HThg%C6?XOOGUk60IvDQPR-=)~tPZDM z1cI?VRKN3ld%fHGV{3On*1fed%T>s@9Sj^Kq&oB&7yur>2iXAIoh|1?t>!DFHXFe_ zt6k`LocH{Gw9kSD&hyqOSHceYx0LaH3e8E%*t%`EFdPeRhd!>eNZYe0Qa?6%2gw zK07tDWk14JsF0iVA$NP(M=Kn58j7#*ex67~o$L`t`ufxA!aN^I<=CF^2u7VP>{gXk zLVm1|e*eMSn?LyQ<*6W1*7Qf+S}i(hbq=i6K=ol#Ajf}HDQZ>I6Xi-_9KvC0kchKa z=NjF56@C^Qo6e{t4`*wa7!~QfRt5xFU#T&z!;LAHwqjneAoUuX<-1#c&y$(C4i9ym z44?FXDr&PQs)sMZL4m6jy2$tUvxCbaXiJ&QeSAVwo*EX$sokB0i$%z`;pRdv0RQ$- zJ0P_I$jyJhI(wU{lD|KsqUA5Ep#2RRDD=&CIU{(-0Z#XZcyXdU7U@zST(v_QGGZkX z4yf8cwN-(;%_G}xvb^(JVzU8I+~U1BXO(PyR;6~ zA5`veeSvA?BI6H|h3lyuT4uXZk`RTbyHS7EM1i-X#4&+IjR)p4TBuYrW1IX?z`I6_ z;TUo@Omf(riExxrLXsW~tbn8kw6q6-wM?6-6;>Og_^SufBD%EbPnxELA4)t3yJj2H zZuoAaEqSG^5JxJ`Da^MCx}KFqv4QCfY{dZP>0n$jThT}tV=`OJ$VgbFowtFZhQ5D$ zpHWIG*J8OardW-1n4!$E6IA3_T){w&nM76nsDh>@b+HyHR1je&f@(pco(P)J$n!rD z_}t{!ou|ao$VwQNtn|#cJH=@8$7FNco=@A=*0H~DNgWyx^LQffq*$z;M0 z2{(|M5J$~K_BK2^e_Jmw?b)rkUMH%sKRqFqj(Z8qi(aSl9fZr_8B3^ zPIb{LX)d9p&oMvs^KB@966jD*mY3ORD(WJ|*Xkw~{!)osb+2>=9tfLg#622IHy4Uo7M zKCBs5+|!Ug&Scb?Sn3Goa=(ukyWiL2^UTpoP1{k7eO4F zeGF#d@FU!eCBlt=uw^tH>B~z!8lJ=hLr=?**hR`2zmm#=V{YEhHQi^tBJiVj>X92$ zv!oonBHsy`t1&%N9KVM|9-fth_dqHFNYmp;&k=ZtBLVYB;IS@rpAUCmehRZ#TsXrx z&(fEVJD5fDu|`rE!3;y<1u&A!=9M|~BoNtrRGaqmm^h_>ntZx*_wfI*5m{S91Ao#q zroUy+_(%bx#p@AX2qRrlFJ3A9Q?clmHZi#_672**p7L`H;*hKmW8B)deVUi1vdxBt zjS*v9FIy~U%UaeQo=Hc?*GB4dy2(ybswrgE?XDpMz;qPD0P;Sx5yF7}j+fb;?EO-K z$qFfoExt~FaUq9fo*|&=5e}+Xk5*^z8ku!4t}j;hwd>02qZarVke zGGX1X=V%RJ3q4pnUOuqoI`idkHg5UNuYB=#|0Y!)Yr1k+!<3Zx*I${C#Gz_KK3bks zq{JM5dp3-+S==$MMA(86!?v<-Rv59UE1Z_|+7$tAgCK2YKsL(7^D7b`DRPr8 zK4J*4$V);`BvJ*2D$dY6tEu`xjgzAi-~YSx#m~XjD7>YarIS(IxqY?MmvucLmo+#M zKaU`0&BK;{9s~1NC6v~V7FkN4 zRyZwC3&%(?7zE4ecUN-+%W{xQN1?KU6sk)n&o*w|f&}+h=j(G<>L(6Bz+@_`pS-a+ zf2?-wI^(Nay>p)~ee-$!*ulR&JhHU+Np=6x`lXx13aSV8FC9F}STUJLLk6D{M=0Wd zG_=A_l=P>lJ@q!j>*?iOT33~^ zQlY|@1^5l?sy_kGbV@G>0?oU2=5qCa_NQ8Fd@csoj?O+o-k+}D`ITLT(#M36uB6wM zrw>7jrmhNEc|)Q2F(~}N|JMn>T=7OzS$KWhm930+NFeh`KJTa5JyU^?4jBayJ`rmk&U}Ai*-=$2$|8}BcMH#duqz(j z9jmS;uWKUzalWuC-_;ziwSS+fUAk5~bE|sd zTb`E>ca5?!SAgTU3Wc1X%1?WL_5cQ|)2aNHvBEAyw*%EY5v@QWxC8-CoeN|nePu{s z)dR;HXQna4g3Xu+Y~m)>dq33|juY^WCkNHUUKTHjkEO~H32oHM`3L!N%N5Ql?ADNz zHfX(0rxln_ENH*pWH{jBDB3w5Ly5-*nQ?>7sq|PR0!)~A0e8D`EFaYIHndzidz6fy^DBO&Vh~1v{-}x* zi5N&cJbS*nFkd}-3Q}r+&V9|(VJaKTb>7mM79VrVV$khBXS~?5DF7Ckg06m zFHzQ+Vg8nwgebO?yVl8fefV`u36~(-Z7gDR3yuNklH{l$^hQofRvQAGtxp%mf8#TG z3L?sg#yzsG*5P<6n^(Jo-}TN?#o~KV$><9zin;cvlf{o}PyoJvQZg`rjaVuC@LVwH zTQ13!=92Wt*^8nIFu^b$4>H`8duVEq#0ONKqA`cPMO&^Z)*Dab-*k8f-cxce=s|_4 zf7rbgv;WA#kwRuq_gG~-*Zmrwg|rLjBrHu>#0RwH%l;X^Nt5{9>m;SeIl_5=jObNE zqhc!O?}Tt5`BEW&)4E5;_^d;)lN!wxcExrly|HX21BS+8cwuSMJn}5}vWwBf7^7!T zro{ofyLG@x6>qY6@g@bB2t%%R$6-%;8ZJvJ@( z(ov%Q?uqe;4JK~*yVzF`st=FrG4r%#P05&=o-o-NMuVO3-fEW*)^9$>z)itN3^Zs2 z8kxxH<4{OkzEJ$P&{4Q!s1a;0msNiaqQheR%We;#pCm&D(|QEY^5@s zYn0(mK1&VrM=38^DEfJ}M{_Bd8zfnBMyoZy88b$$kX?s|xMgAp$Wc!>?S(J+vO@xu}j}%6qI3il{lLJ zS-~R#Neq+!;O}{xRSE|}c7u)}%k0JuD;&_05e+Dp)q(*{WqhK&N|Xxp>)BhHHmE6rd7@Sjg9N4TQXW&OY6uH5t32q0Y_lQqBVw3YeMKI%tJuQPjLwMtu zr&bN)6S%yPbAw%2W9v&ca$0Rh#RPJ#&V9Xfc0bPz`TU4h8TC0* zT45I)gsvq?#H~f?`!7Umzv#p|p|-=98Z)Pf&X|Z*|KW$l`6G=hN2>R}U3`4~Zx4@D zk6vE9f0bR&+NMI~=U5DI80%XRWg>);k9YNqMV~WezMU5jYr(c_myMp-Mc-O-0dyEBC@BLIgFo=U zY{PcGLt=6S4m5Er6x*$QaeH}bo5m9$9;?Q*JX$>V>DsnqXJ*@M^XERnW(up zmRcTUih%b`-d?Mb1dpts5Bui8eW~EukTII-UQ}{n|32`eG8$O^RIH8DRmy1BX#@Lx z;uW=mP7{Xd6geyolY5jMMVqw6-rsRuKj0P&nL?N>dVG!)cDwFy@}et$4WT|1cV6dh zOAXr`n1iL*KCS>nlv7)?N7f4+k+&5UQe=63Mj@+aL#o1cL<4kD@dQu&EgZVRI49ku`gwA~)B+?I++)Ak3S z4HA$X!r&Apr9k>qP(+S@`GwLRA?`>W(1`<$xp|T%;qideKB~osDdQgAM73YbV{A*w zrwf-hs|6848k@k_G5`$jsan}YK3l;nX@@8YLB%tfo_ODDDh!khCC=6upWxr7JUBQf z{UrZ;3#;=^*3V@a&2|+5AMgd)hIuM&E$rNx!v+zhX4HA~suu=-$3d9YV2q_om?kHH za$5wx<7O&*ufFO9zs2RqxW7{6H0~NmjL_BHVop#WE6_&UVZ03mE9{J>?xcoJXpRDN zXY)Is3)%4eM;qya=Hv}sNH8IY-qdRo&?Dz~#x z%2vk4Ro*>!nw?jFZFB9OHp!IuG38Z%R!2ez;XB7UDZ4OJy?VWR{8s(?rN&?PMygl8YkNK&a&!uY@Lp>7e{Ufy&D*IxipNQ` zGY;Oy#ArTjI<-@`pV_QhX$aaA(sO_hFadLl)1*7-b(f`f)0PTHtospKDrg;rhQ`*e z!7t(D((}Bo6+$r*D;6ls(Xe#bZ6^0mrgDMIFY!Y!W~#`~>OEa?Unva}F}UWut^NGm zKb$Z0*MRIlN% zQo+_0btb%|Ij?-7gEFVCTYiJ*3(FpKjcE_c;~{J6?`6MW{J!YtH)b+h3y|;Q?QAMn z*om)Ymm!Ife@G4DdNy!pX1+4ln7eAUu0DKF|6Y6e18_4qmY1Alq8CF<9P;%Hqow<3 zwggdN2$(o8S15i>ViM0fp?CerIVw9_tNVZSUY@dg%qkhbroHO%+w7$M$g(kW?^CJl zclU}r5tfJ5=m#%gZfWgNNVbmD_wDKI9cE+8R68%Gj|K{TVGr9n*^a{}A643G* z@LVnef1v;_lOwq0$xwR z;teuEGo1~z$RqlSoANwQl%}V)U@)4S`Av}9e`AITJVY09Tfe`lNBIcWfIhn$Y0*Ta z1g?fAG3v{RCu9vy;ZDlo)v#76#l&q<*{n-pScZATly1DOl)JqqAz6&Eu-&kXxT2QY z_p@M;%-b0w2%XLtN%0T*O-J$hle`VWxQ|kJnV^%gKJK8mc>iei=9%h+8@gLwaYOC! ze~-1BhrqaF-wlXNaOiRU+^0qxFax>wQ{$VzRA(>GyB%}1pIEjxxH!8-%3HW zDOa*}O0KSEQ8dzjcaY6n=JS3R+@VCa?jCfG>S~&s`+e2(lX6~G3_V7H!YnVOD5VJHh zvQLXoE;erM<(AXidb{EC4$&viG3$7Tz^9!lu{`8)UP^&uJrsc^He!wsVx;j+ z`Sc-*n;&La#VCfwWpL=-=UL}mNM$3*$4E?ZOW)(!@;g~}^Y9~i)(4L%p!9>jfBN2f z5N3H{uU@nPYP(wUFYl!)WAV{kp-^HYP?^YfYA5a0{58)%t{*z+{nH1(h3opU1xDeu z3rDMmuhjo?i>+tllSkG2-?AeD7WwEmY_)sp-_6(0K4NmG>{Z0;pg<(km|oUiD9igW zG}Aa?wOmTWqG2duwrZ-EA@&2xe{&ui(NU)6ZI@VLT?$V`UKAu1)e?$|uqI|2Wfx9W zY%bpatoGTV>hUwR^LM19TMwmqmHuvxTlZ=|?z6BrC46+=NTRYLzZ2Lm&Pjfm{N9so?}e}KqjfA3e`BXin!^P`0bb^kMyj>bcWZ~QEuB1TGkn{wra32q&;o3EHPV$#HC_J{5wYk44hqH42TH2%Mvm6i&=+**=)`BKU zu9h%^Xn|B}LV!mykR* zE;iRDOp;DlPsHn}{&)(Q+kySnxd#l@(oH%hsI#e%>*)aws<$3Ae!LR2kdf)Q@Mf%* zJK#m=u0$kLe-(?iB-0a8Pe|wvPW!f0qw&m;h#sMh0Wuny?KWbZ9Kw%Yp27m~FNb$P zjH+VsQvqWjcG-KYRMK`AV=8_*m(5pV-1I93DvB65m@yeE#-q^b^MkN-7%nW*Wul(K zh$R{Az(6a%2e4aJ?ef8;lXLa+XW$m~_;GFKI$ge&e@{@Rq;JI+2@u54v$(LIPH{Ot zyHGEkyRdlwSpEFxwPV+7hrX=udmvBr+Ud)S^Pep)++`;^aAfsRZ%K;lw3VsP&9LLD z@%YQ?!Fk|TCyvz@ZZa@x$F8xPWcAW#Y~1?K3-yIdD__uzKQgg1(zQ(lMu_pSEIZg* zYMUUsf9_cmm1|*i!dlk`8IcPeu>IMC?8aUF?6D$HTSQaB0Dsj-UsewtCHEyJ5LmTG zL}X0ilf;@}zucC^MPQboJ*k&hA2ZX2{Frb`efM`%$G&vQf{mg>CkD*zW6Bz zi1b@yYlV7vt+qKC^A;G=(MvB$$FAnm!c!qVe{;zc;)`}dd5nZ8B{Qgm2&*%Dm;Q2Q zaemI0EG>7*$P`lLv@$=FC=`auKXgPHZ+Km7@|Yp7OA*DKBJ{Th>gT^A-6jZ{)vM>& z9P5W>YZrciJ$7jxI3!M-b_C;!)rT|uaRkj~obz=U?bw&@rz1i03w##HXk#uH2*hw9 zf8-+ZOD~a741Wh6m{C_3ti9|@bTSTopsXAjx6HfPDwrQ9@)@5A02jE*jE+ zBL2Nf_o4gx9=qhwiZl-XT)q7{yE#;k-zL9=F6)H0?$0o+HY$@lgK4)9$kHb_sbZlNUpXORI~-z&EzC zz9JDG5H^@1aB9yYKv=_VJEAhAED}S&)W)5>G1^kK1<_&ozJ$MIdeq?Uf(PuRBn|9K zTn|=>pexSLN|tH)hNooby?FxE6$kdiu4W5$;fAzBW80o_G~!?E=2ZW7FB6Pve@6~3 zeKAWC54g!+Jqnxu%7N?IxCBaCz3jZEj3Xm@`Yr^_luEuHXlnf zb`T4mAhguOqbc}Dh56w;yY@BazH5B*7bY$?=5DiYJ>H8)U?a~GuwDPGzA!6?Zd^am zxPFMPgEXn7hnHDDi}P0(=f4O6f6R+39^H&7#bmBzwcx`Kv-!MVvSuN3o{tWWuEx1o z+0ZlT%&0%4&XQfOe%!|vhp!CooF2J>V2-pR;*3!t7ku7{&rt@&pcskK4-Yp=RYNlU z$}p=#3CNEvviAz;hlV8Rl*C(vKbQ)r&rVTn#R^qPb zScb%gK~BrccgG-taAkgSe~E4p>6$ar&>ZodAld*RKU!!t$tF3+DF^z11AR(1aW$9t z8dnDU)gpsE-{F1fet$5bA13%4$l5U({yW}pjS3DraCphtsC#J0$w;hThpd71F}QJE zbDX&sUr%-}x`pm2EK{2xJK(XJ_V=}eX@B)Vx<75eLUw~nkL|VYe=+nc{D_{VGq864 zPWAX_)oYKu*FCB3U{@79N#aVh<&|Jm<+`u|B>ogePy854D2lXwX02f|Kw4w!y{s}j z=CTYz!mV!s)WBlq%}OfPB~? z&TvOVPmGIGe*%vQf6hA`n@^2?j=QE@A-j8d=mkKbqD%*hLQBP3z@~JO7Q2gcMR}Bq zttvmrF-CHQ^vABXaUGxdGiVusGY-=6*{!fr<+C-n7|LEusCG`zIX6Nu`l(Fwp3rV` zN+Sh8y~zhX9VzOGF6Y3f14rM#L}H9yqZTrgqlNSY-(H1@e+q!Bh%5RL0{`@j6Qpmj z+w1LJ)9v;3;xW=E`(|5ShA<}4o3?WhvDhsWvOmk+UoE$I!rtK10Z1SubSOZS{Gy+# zMEbko{g|E7kv@=1yFsXkMwP9D$F2ZUqX0jj(V@WDeVw1STBqd-yDkL751BKCG2&`0 zKrgOF`}3w;f8sYMHN9dOyVAJY=5P*Xh~$JK9aeJVcFUZKVAS6iET|rQa9O9uny}9J z&BpNChfA~oZZM&4U`< zJiZ^Zdp5i9EuFs8cye~}{!H!iL)_6CS?Iw6m&N8ye}FiNz{N}#kKP>jGuf0EQKjR) z1Z&1`oBF|^SwqRxhi)3Sg*rC8aFwx1+H{) zPIUFqnvi*t(kA@EvyQ8C+5)hzE%-oZ>w)Iw$9?sm7tn&`$lo5GtDU+75loNYs_%PH zJ-EPxe>)QQs^5HFeK^lGvO-Zn!2!_<7xm|=9jNO9Jl&!(Buon4IrKwj?dS+QWRR-w zU1@xIvGK`~+Sywml+GT2Im};|>SBJNa4U1*ZXV5+&EfE6(o0#D1viu2& z?T?I~!F?10Wgq}dx9-D}1);rZ_z#mNLgfj>2AJ#|`3fIaZh$EdS{pPDe!n!cuR4FS ze>(T5I{z)G@eUrZ-u}FHasZAyxS#`&+JDr%bV6`&MM--=uMaYVhPpcPATd}71z6~Ab zNaEf>{lRf|`C#=RJGj3_tf3=c3TQg=ZMTGu=-oZhXLs2CaTb)RVd!z(H)nkc0&8lxcv@zU5P9S;Jr3H7X_`{bZJ3-Q1xroeMkI})jBSUr90c&eP{`&O6tR|iM# z(7@_}HR?15ozsZJbA{FyUP0`Rbi~CeycoO7Nk!q{P`}T{n}!kLf3kDvC*_@110I`N z)6wS=v-)k-2~9+qg{uqJiQ>|33rl^5u(Wm{)jzUE!QueNqMHZIrz% zS_cv&?EV01nuCp72f`Z=#}#epE)rf_owaOp{CMNZZMzMf)6*U?XbBZY&cNV8pD5^b z%mm**WixbiBtOU6&8zJAU3~O}3F43!<#(9n}T$rueFC+cB+xz^%5Z2uy^wQDRt` zhBwR3^sXX1b9%dEc3oTz_PO@e?ZzjM7{yih@2{WyYwgN+fU&u|c=b3G)K}JnwOal0 zKZ6-y{rr6ZfBNh^>tgAfPwRL+Ww*)Nk-d#47wR`YBMV|ic|k`-@}uhQTf0_%!xdoN zj#Vnfa%HV?L^!e+gA{}7vTfA#$N`ur0%QJP}y@TX|Aa^$^2 zW`s#oOEc#dpImWGdCkgZEGN3=l{NjZy!AHx05e|Ga>o7kjFPn?Z%br#nZ024-T$u@@sLq z-`19Uf9*T3tliXd@&nH0u3vgm-+#S!=2(62t*|-w_9gz=6XvW(8Z##v`%g5^fpESw zvyUMVY(y{2*UsK@O}M{rg^SJRyKyy6ldbn={K6Ld9Wh_{YlqE%xNjdOh$IFi7>IN- zVLW6!TlUvWUa~=DCOj5EV3_)Tz*kZbcfyOPe+lHdSuXE0UhrUJX)ij4s$S@9W**ym|NSR+IAnEwDWepB_59Vg0xEyqgIoC`VLhs&QGc z!{k#WkF!V->lWkeSOnwNpo?|wAj-g#JH@)X8l1ND8EAbl@q-6_7%yZf(n)zS?98xPxT8dAU{cXKFLOObLa>DOP=d$dgRGMTP$5G1u<0Hi;dk2ltltM}# z$sq0--?L?`P%J}Ec&P9yUgl|Mzlv$!fB#h8zG|IkV3`dnzrFSXVHUyyf|_E~%sMP} z!~1U~oBjZQdx!1AX@R$pKE=KN)of-s(ckM2`D^-LCBxofG*Mn9LzU3*E&4NIlw0Su zjvI<$L3mHJY7LcMrQFg9Z7#5%)d|rE>9RFMZwEv4+C!+_@>_QveARO77UMx^e?vx7 z`3hcC_^7hDBu0L!6jowas_ZyxD8~Ms94}4?o=lY#$c7bwBEZUMMY@SsB6ZAf7olQeoRIyXWEp}zTk*#G6Gf0=7=(6;RX^mwVa)) zbQ-m2#fegSELHX~pc=pLXcfVOek4^=ij4}OKZ~UpU(l*xST-e{`A$Db5PR>Z#+{pV z6`(+ELB|vcE%+TmUF+#$LCxwMP8eFLAGNF~7+>Wd{5`u0C5S1iRa35Wf2=Bh1jbM( zwb`#IzHjx!vD%3X^*i6dmHYTDdh-QklF^kO1zayn=iqS%f@~X~X>#MGSZ|-zpPnDG zZw-Yo)atzXvA<`c7)LF89K!BRDv=Cv-c}0)B?w*!zv*>)EcC7CM0L8HLjJOe>G%WB1Md)F1CdvPWeTqIhD;s)N=g%Hv3rxU^2#Cmtfn_ zPiiq~zJuQ>l)3u5D^n;hRzVL5cFa!L61!z8fvZp6sLkF}16Qv}P;6*rlFfoAtIS{P znLH`kMPCgjFT3X5;^sE`R#!s|BUscXE#$YpvSMJySr#AM7E#F6e;U$ULImhm3WFbe z?r)e{g3pM9zw`HCk7J9~qDnw~Zwli3>7ne`Z_jZ#yM!K)+IMF9f4JUXhK zGL3>DV6rs!*;-bef5uvq7avDW&*ma58Wys$iJ?P@Yd|Be9*v2#1(IK8k_Uvo-ki@g zgK6oTPaAVrYBLKAr26^8ZG*IIn$!Y>V{9NV2oP=%of;h6C~6fL+@6287WtotkAcPL z(gTHC1GNqk-q~P0Xt*_w9WdOeV&O*y3b(#D3liQTYIx9af5#9V1Pr$U?{Pw|2MRX} z+Y1uDtob?NaeVB6N%6AI_G&90Li-hYNE>^0=)dfq4e-$YEOx1@`(M+(bWZ=j^iFIt zqvy8wWX3M=S)!bl!QuRHrh5Ie+UdJXr|+0D0VW4h`|WV=1Sn$SJcgcA6JH5nqHa_? zwORZ5j4|i>f5Mlwie1m`|{}GqYG@@(d=%_q{?%h>e-7{f>d2k0DPjQ zlHd28kfkO7QE&IE-bqP1f3eEIvQnhL5E$g@l0e5v7?jpl z3I?^zm0=xtG5q)}I!iApwC?h&PC zDbb`Kmq`75C6IC3MkdX_Ej56rTc!M(dAYKppwF5d1W)d&DrQPywSoyojb4;Y8oU!tyh8cA zn+H!-P{WtRMH^b1brO0x4>Ec&pyXlP)gcgY5ju$?img*hF}$O)COo5tkA_3LQrU{O zO~e4})Fv4Dk+LAe-|V)QQG&~9U-}Y>XjC7NLnvvAjSEfKaZq08st3!=>)_8?CFMxf zeeU|`cdjv#_xxa{YR{vL3UWCEa|WVuODVuj+e@e_$|Lro z*<2jLDz7tY85H0m6-6)Z7)IOcYy{Zs<{<5X;y4$eTA~HWAzRCy0lro|(-|xmvfyls zz|q%oEjenS?(+pyJ5(b@%%##6-N8>!e+vkd`nUskaH{usje9>g9{m8}`jpK`0^rh> zzb;+;#u)$Q5_+7)ixcIsh_)9+8YFQh%0x)o=>x2cacnd?1@S$b(HKb7hTpgv$*AkH z5yr#hpG7d#|Cl-1)so|uDD;k%08tat+$-Y7QWS9bZ}fr^!!UPyFM>j6c`aYT+UAGMo75Y{<$5xi6{zmMSE zT=b!MKH~3|>uc~;bAFXw;v2Kxf1B`KGH?K|szycfm06=N)!4-Nh^QwV3Hu}{!l!B= zfUbZ(DzVWl#JU6jE&kmVZ%IW3=O-Nzg$zQW&4Z#e=+o8Qio)Y535O!fdx*A%a32zT z;e}<|3p?JYjIrg}p*6AO%?zd2j;!_vIx|08hAD5mEt?ygwKC?F(|KWIf7Z&zOrYw8 z)oq76m5N_5wx@@#4!N46N0p@w_6@DgWHRltv^L;#@w2v?g)lQ$Ta%N?S-jw6tvH!L z)eBD6;npnqX`dnf13%5A?-v~H8KA90&eo)7mBaNV{Gr}~zL7RLTnF&FI9*50LpWZu zK1|LhXZM2hwc>mNRnNvxe_&U(GL|W&cBOK$F}7t3r9DA-f7N9GEICOxN0A{k!)fCo z6#}IL3iX%Nv0k^k0EAmRcDpfmyZY$V`kt{~wM|iPQl1!*tu9@wU-+!H?*>G6!XD}; ze};53UmRJSzgj!zIqHgFETYnZ*$Yr(Gatx<+&M@{LzwM9wTFWr`eXn!iqNvHLUWy>g>JR zSGOG?1||p&yDQy)f5m}IWkcogb=d6{;KB`bbfMO^zxp%_g4eK=Y zJFGItqRpK}>N+%)P~6&>SOy^oA>&^A2V16)o*1VyJrw%lhT1uZGbRsb$U(*hEZbf< z^jLFzwZ94DIuu$A|DUE34aAB*d?^rWxDn>BN2nnHe?hJxTa*`a%`=v3I0Zagxki%N z3%TaMk6gnSb(wMvW=nh_)x3~uUPv|icSWkPdGjwU)zInuYZPpRRjCkcM%gK%#oth{ z`%B0*1Ye-9c_G+5Yr%#n;MvMGg34ZqHUE9Y8d}rkN;SDcIoz>S{COeOgfw^|)%*{T zYAnY5e+vsWbTmI#p+^5+HUu3w{@Ef}uT*KqdXuoyY`T2|APex=MY_>$Sng}5TdCX6 z68?zJgY=!4>{_?>b%f38&_NL!bn2u?f1KW#ieH+eh31+md_^33iJ)RT9+~iGWlpF# zW)nwLOF}@}2>`R{jS-7UYJ#T3=a9Eq@(HOve|%8?{V;#WAN3XoHTD^FMpsSwYu<@9!eO5^(G#yu)Od$NmK4HUF!7-^UU~}cNrH| z*b2cABKac*s+Z<#7k*fLa;3KSmL6xwIInnDJeQii!N&Rn>4NG60sE9O*7uC{H@m3t ze_=>cZZ25!s%)v-xTlDI;U*<-D(}7>elKygMz0n+eN}{`zfahC+r|xHHiUh4$OU_?UftEz)m7Eib>X`4&oO%}Qh4di@`)!)kN>)~aB;<}sp;s( zWEEZg=UZUmZL*U2S@i-VcZIK`!|yrKYiy}1#H*&UZBs)`e|FEF zGKP2Yu6Jqt88bX(j2DIBoxETB?g;@FPDa`(nH2L7pQHxEa^|9*SB!1N_5SFCieeqI z6Q7m!; zsWXinR?ebhkF_Jr@Mo>(vg%9cv3RgBS*q!&+Wd@GBf!JmDoaKYl~bzCw|xE^Isdmc zol;7AxMLkRa(PqJZdj}*gzQs7~=Cb?`kCZ}1v(uLfQdU8S6E^M%jA;M4BT?w&+vSE6gZ z)76t&*O}^GZyAVd9nk*c|EI9&Kf6C0+*Wz-fBbvb*1h=$+!o`u~~f zdvC|Kz~?@zXmUIxtyPVP9Yo>=8-ya)po6h^!&MES_}Q;&fRKJ!)wN#LbA2%XE7Qhsurs>sz|AA1fC# zq%F?PcQw}uf6FhJaB6psK^L`4S7CIum+sES-SE|hDX=Ni3jOrxd}l(XM(DLGp>8dB z(4FvOQ-frwbfWdUDxcuX@22c1}(g@hQqskXQdp_cT|e>NLGFRSIq7i+Gs)h2AkgV%+7 zaORCVe#xB}U@l6ASIXk6e-ttnX#!-%GI1SDTq%XPnktt44kLD2z76D+wKUX!(-v68 z1Yc~n9dLmS>>=yr=TSR;;%0kQ%P}UZHyzWKe9Xa857unEuMB}y18l?su<;iuM8uoP zp~?Wee=fGrFWdfY0a(%M0!j-@t{Z%dj;34Drjufch$Ep_bT65_5_^qI=Nk$sE(CpU z-xWrBUb`e9T~F;il);6_p9YzkBlsOJWZsC6g=BCILQ5q z+85s}&L2`WS`Y=b2Md5RdKl!;$cKWG{3T#Je{F36rlX6c%|R8QDTs-6`q^v4MUa{W zwfTh4EfSPWFX2rduFZUHp(Z^sM68Wv0@^kLP`|v9YJ7P43NR7x3ZQ&}R+HVu*jk8aduFZ2_Im@ZY2p6y<ik442@s7_d-Mni7QuANR zki(J!DzW^GXc1uhXo^9D4*ccBKK^KHe|KlQE^^^uryelZ-9;UA^qgU-hb=k?OWTGyw=L*;73az@SW_(-Ka`XghfjjzgHf4kB)iMr^#{1f;8QUKP|!!%uMF;g~(;z766$y5gzhe z;K<;->3sUisCZEU!R5wSX_@vhI6Ikd68QX6CnbGDTAd`Xg%vhQb}x#-COfL-;0)yp z%M6Kd(AbJQ-yLx<@w@EGY*#3bf2hp@@3Xo7ewGDn1P;~MsZB&9OswG>n7|AbXSN;a_zx`eKlGwvP4YcX#&~V9nkgEZzI*>R_@zUj&7kec!=> z8RK9~&3qa)*v8%-eY9)ev@nzab&LaP8_br%9#INMxA%&fG%HBp@|^b8e{}XuZ=l)f z+NpaDC`{hIuZYU{qX2!$x$t?k{qMoV)(_g67UJYQ6v_cqN2Rd+Ur6uC4Wz5Zax#<8 zmHLY5a@NqGEG?2FWf1txrBw8r1mRPNfgIkvCGt3$<$(8xFI-dNE#P!)qXryzd7lhyM?xL=D|izn-&@|9Pfm$U6@ko z@`fQg<)?$yYN?Xy=)hkqnRFppEDv=23Vux&Drx3l*73?H4Kns=h|VcHVUJiZxnf6k zZ`hYi36&qgZ|svye{m?{8>yMf@Awn@x7IZ?aWh;-L!iVES6+3_2yF}+8p##1#gSwY zb_KqTJ8hrz<j@CkPsRnk95PE2` z=2YZd<+WFe&$r=RX$qF9HV37;Ec7>9Yf;msQGuh5S9$hZZ}uUuX->zANk5o9*DtNJ zH^Iy1bai7ef1y^YMh3IeLs>4VyHhP*qk+H^@Ny88e7i<5A5r?KyT|OxQg=wHhtnNW zXJ|vGuxN=|IqTM~3rwaH%Lh4~wgE-@UdxzWJ#tLZd2es8*?9mVzFAdU7A;k;7|k!( znsP=4L36cNCF=4^8}$|UCMttz;PyB%c+Orr<$=C5e;#xBzsW8^Ygpnz+&ZpQ7`XCW4@r*o6r->-s)2k#X9h|baf z8A||~+vV5l2JO){Xm3y4=~}-r?sTtT&vxnhfA(mQll<000!^UF0$_r0-QINfx=e$< z_?e|qU%eYL-Rsf~`l2h1MqTx<@6Gg@V9889&yOzzd7RAuEZZf%%n$0M?gqwNLnwE)DR_l ze*$O$pqRRqwDsJI<|kGP*76paUswqhZDGwV&!$bAY|BHDCeMt_mAUzOfmSCkl*NR$ zDXxC|197vAhL!&GP%aMxwY^^~q%%dV0s6jM$m0(~#X^zI$U-;aM6Q!EPRd*uN<6f7 zq`bl@bOolM$qH4%*xA338NPZ2ytCI-e^kucl$!e9Z4u{&uE((HzjO2XT&a>11+JOe znP5{);r&24T?#>W&bAqB`ry(x^K=XqI*pR4$i}U-_3?|dLf5{&8MWEe?rlISWkACf zMoC3|`C{g?h!IN7ltm42IY5h=IHq>xf%oW`z>l7CMLnbq`s}n>txb>CZ2tVEe}!(Y ziK?p~!I&D^GpsAhRD?xha>kPCKibE?4Dy4f!GCX1=mqLuOr* z^(&i!&{nvzx$it2qXhO=%t(^Lii{c5E)%@Sd?L$} zjf};2hJ7NE?DHlv$p?wny8{65%s%Q@-l;?0iTxtGDSW#--bLSIqSbUc z8|Xv`Ab1DsA^|76IRm}m?qSpP=ZRMLu#WJZ+7T;x$*0PZ8{hRZ(|}0nVPkA!SybUg zg{7=b$wX7isGy~(f2bV*WFuUuu3n`PC_!o?Om%}zx((==UZghU$#_x%h1=iJ#?BQ= z!&S9CPrai~3*+dNUz53PoFzO?_p!|T&^30+RzzEs)k8dgX8FYY8bDkbES9!EH>k-Q zezh=TY{&D0cy9mF&6!n0oGIoC&k5qC*)!-$xLSzQ`GH~?e~xNH&kJnw@m~qpF%@p) zz7%5byy>(7GQ1-fyz6I{uN`l5(8Xu^^wQ<0wTtuKxm#`R&ueZJ;=by+kp)yvZgK95 z+E@44v=--%;E$`FP=hAjJ7AcvEzmbxA`3tsrvp z>VJlC+-aOamSU?zIa%JLSM707UC`u$$Man; zYwrM_-SJgQVw+N8Wc^dR$rr1v6JKq?M}{6F^a$D%OA80R__{X5;(EiRa^)O>kibR5hh>$cXf9D8X=J2e`Z-ywv;gftSX(T`I@4_P=ytD zo25) zvK?a|f3%NsZCVfvY1;G>1NxJcKL+Uh!{UfrZhs9khQ9n-pxJOCS7jcPZSC#5$6!aW z(*hkHHg4?d?cUJ6aZ@{ARB?PnIto%Q$4Rl6ujWcBI%M{I10joZ^YuH|3A^ZHeepY7 zv+u9epC0y(E_C<&8~WTn{K30)SV5rM-wzv%fAy73mp^0A0H};RB!;NsQVKfE1@@;X z{=xDy;OT`l;XyZFQg>^*oJ%KE&12R(@(mjeR-K(b+4D|fYeW*rnA_B|fVTSlEU-J? z-2wqE9Y0i`omb{BO_fAMJ!?Zmx=3J2B2%MI8`apz@)s$_ZgQ2aZaz;wq*FbQ4E)%i#CH6MclHWfa_A5EUw*jUYFBT=H%3omadt3E zjdJ1T?@0xZ?ePo`Ig#Tzu~%N%)9#Goe>ksH+^V_+K%D-!fF}o=j_E?sI*z|#f_t3e zOVmA1ktD$rJZs3`I@)iE1Tq?cC{+Gz3MB`i_*`pi9)?(ip=FG6z@t$~jR1#i_vK@x zionC)lZmfAF3Dxsrxd~_Spfl?xM7Fm0VXi4s9wXsY(V~WNls$&?5^If^_{)ze|vj3 zwznjwj$E#fpNV}o(t(MwUlfK?Lehj4uH;J0&-}kGSNULg$SuQ8fr)Btz&gp6n9PU9 z=Phv>bL^HkhuJ~HjS~C-#iv2U-JMDt)cyS}G$U5iZaJ~i=XF$y4p^jA^@5)kM_U(1rFB9YVi-SnB}eMiW_T>J4&0P zwaIRg_492wOuOkqd-6}vFxHk}CPkqO<{IgO>pIu1@9tT@VMEU<5AZFXxydRPw0lWA zfHZt5PyAD}>esJLA-T_}V*iYw74=I9@YB z&<97)xZjn0U%z?Kn>_c^qw^sRyMB5!)%j~D;jI7lPmd9iYOt^f7n!u7?uBSt@}X~5}l)MNfnkER#re@-sW%`84TU%x+5 ze|p&IihDCZ5JG6o+L`-m0}UoDWAIn|GqS6#i9iRr{T>Evy_4Qoc_wnbKqB|q%Juh^S*+G5qW0C2Y*$g)vP4lo zZYWIj#?1+KN%hyhf8o?^;m18)Jzbrfy1O^Dq_zU{pu44KZvU%{L54+;B9r;)g%mQH9UU?~J(;~^Xpu1r1f>t#bcB9uaZSkVh4Ty@jvYckRdb>N} zw7YIYYh(fZ)jK>dE;ECav8HUWnjWxR6)Lk!bBy!s#c%RFe`!w2iG{Udx28PTo1-LY zYuCJRthW}H;c6GZC5$v46BE?Prfu{irkQBxwcA#s?yJsXb)`f2jU@RqW;1Fc}wa#yRyd-fer;;SGb z*lnZQlSUEVf8>?rbJwiPv}wbp4ZU5x8_+Hwu9s6`7qt|}B;3N3n^#uvoo-%vq82vR z3U6QoZf?vV+@#Z*teF+=xAuDwLR*W4{#(!C;2AtMe|>DdIGEA|=ng*Re;y!X8H;RZ-C};O6GJ`-Af1@6o8VupS^?@1?JaKso8PTvS19Sh z8ap`f#?X^$lb{4-j_#UFcv_|BRo?1zl@Il{GLpOaNaok4!E!~4v5uv?9u4d;)RS0F ze~w%>d^DE7MbcCYT8f!&dn}3`WxQAm_ z>^DP);Rz6$S(#knv&dz!!9>IR%OX|Ph9=E)8IB5)&=~T^xXK>nBqB*RmCy=R)|FHT zO-xv%9HmJIR7Q5J2v%+5s-8blv>YkoqZx_Gvz}{0lc$Awp@b&E`HS3qrgAe_e=2V+ z<)$R7U*zVCBscXWP)#ta%%GczX3xJ!&Hvs~Gss7NW~phE3|$Ms$?J+}f|HV?y-;$K z!2CsSK2y0FDAT%@Vp9;+FH-YGlA2l`#Abvh*0TCVX#OHJLxpC5iTunm(|2}f1Tv<#gby_9xayORX>w_a4gE2NA5-}ITQDXW*Pjd zJZi7Y^qb*{^RZ`nMdjzxNB1?B?;NYOi-1;9yRr> zNTWS*R@t*0cM8A<;?AFjhe|xIkhSFv^E{=_Wpf3)oWae33G z%scdM$8RF8+5+DTR5sgz5$xN{O(QSo%2Q_q?iekl0=0|A-p&;(T`up z5CD)sZ@)>GRAi+lVffzGGfYLYU_D=@Y&y8EQJArI4R?9IcJVu2pgB_DCx`dU*-hZiDVRDYa<-qk=KSS!fM1GNR{olq?*FbS(h6=-GGuAb@C zje<9;Upq~$v&^t56>qJURJcyHIH@RyC|v`@Dwu&ua&0io$0?{ohV`I0E76^I6F6HX zUt#6FUNFAG{KI)|y-1h>$v2xClJDh6h1Vcrsp>X$BoB48YQ=p@Eg={Ik$>*3!Rr#L zH1rJj9MwznPE2}p(=WzCas6NTb=h9N`9iE8!4k1}iaP&%I02R6e8D&Y*$AmX=&B`^ zQBO3mD1r00g@{N4Wo;VihN}_Mv(vT7fm(#?S z6;)_A;^c+!k3-vi-p5!l`yy+=lTL?WZ~4pbz3GXig}-{U=S@!aobAs9E|w!zDcPFI zkvUrqL}qftcOpwsA{Yj$4-k2TR zO0p!Lik?5jXDB@fizArWJdp?Kn8#K;fhp{5H(gHmCQ~^b%-j3)VC|MffLM@qY{DwhMbOBcbWQi~E3O z&kQQUJbcGY(v_FdE-0Awear(%5`LY#in*b=0j_cE$VaTg^A2T3G>x&alQw%R&(LFr z0>@BdvE5tgl*K|17W0-Qe&5ncn`(NuayV?1x{)HFnH&@6+^95;8Zapq6;Xe3!kf5` zparQPN5`;saeqc^BKl2=A4~uvzYK|hGy0F(D~&>zlt9@|Q|7c3Rgm7}T4D(lC84p^ zS~pF@e77Q-O75}Pr8jo&8Ic>nO|WZ304V`$!7c)Xpi>Ote;cp;_yv|vpZKA^|0Lx@ zZpE^#><+nN0!Cal`6(MFtM~W-Gpl6pd1ySAQjAcu-ms0VgI-*EHlrk79d? zG?D^^n}|t=6A%x#dK;MQTm4m3VqC2HuG7@Q&83CgDou^WK>^ykFNM+yB$0*Z8<$?Z zbdh?)cofA>2s&j!OSHWP&4an4;Gy%H)8>$L zXnSTXP(L>qCm9AH&kPfli#6hu5uST45_pkKC3?>bdIx-)o0Jj(;Lo;GzA6n_Vt={H zPJY+=QE}vdy8G0e9$LPT-8*5h-OZkhRz3{;4pd<~LRtE37VKSm!V!j?F_s*m+jq}d zqfqHLM24I#SX1Z?P;4ERHEA>2vdY4NXbY9Hdt>glg*g@_DcQnV-|Mol#6*69_5Cxt2a7w zvOC!*nM`tkIsl?Ah#v(!7qo1GF<03N)82-TeF~i9=!XbVK~<4OEl5M(^8a7H@TC}s zw;k;Ekpy}&78pK%5U|zlHz{rLp8nlCx=?$t0APdODb;T8_|2al?SG@AQ!N4j9bBJzk6qeHxUe=&q5y}7zG^{%9WZlrfdG^nUN!dC*Vb z=f#DywbKv1N6=;(*cdm>iGP;zEu3g5+dzHxYtYy!rJ07vml6rbyLQ_9{s4}~Iv^F^ zNhJJMLNxgJE4%$1y&uzA&3~0beV)Ips4uwYE`Jv&;-wp@nuF30I;;Ypg%)kOY@7Cq z8^(DHMuF@J@M#zoc#Jl1DsV=C53K6H_El@mf2$em;R`x<|86*4&VQ1%-fyiC;v0t8 zby&eTF&`jhh8=j&(+j`wiDP?s6a!^o3t1R6;)Y%YUvqxN1uS2X9msEu#+(dzIuEw` zKRudUx^S;{^m=Xj0G{m_VSv8z)1xVsFpMc^OTWWBYH&5|oodm~WeHQl-LP4DAaEjS zL>nO#0%VD`?OdLL6n||4flnCWw&e;1x6DX4(FPif4sb3T9P78TOMivoQ3Y3ko9M6( z7IwQsv=phl)XqT;!B_2;$+SSE&C%u-bBHin^RZ=;8@=J=h6Qh7wk&tj4*BBkeK>J* zl9&PsI_PK&1KzN07NJaz6mQzmx`lptF%;R6UI@i$p(k0tN`L81l*Y33(`>iFY~uc; zwT$+yz^au+@S)WTacFEuc4%c3oJow1sz)h*2xn}}c>`}1KpdiJPJ9xq(4cq03b%}n zz0rZ+f})}+Um8>$#yp!wgkC~M#jRG?WL22Z$B0CR3C?rJ2d&2T0sx|IubES@F^E2D zC-1`y=Ypd@RI=3;@PyvXfF;Wo zMOhj)6c3j1cPO_g_|?2Ob8AA&n>E;6%y_^_2}ZBm5`0sFNPO7F18CbqI&>UunT=k8 z1_@X>D_pcz1GYJ~vcf@KB!chaDO3?~%%m5MWRl2RfPV-mD=^F*{hXESR&sBDw^$C! zz;@s19k2k3Q^d?xvb6F8e!K+8xQ6wI0$vDV9{PP!6$vOIKA7Cp7P{iJcjdvCSz9XA za#1_D20rq$a)&i>1mrx>jYSm1RyvJ%D@)U!td@rh8Ni-J)ARqN_{r{Pg0Y{iN;r5j zo%v>-%zr$rY3M5P#f^B+HvG@BKp+P~xQB#2Xe=2jmPHf```NIESo-LQL;$fIqT}#J zT)3fSAY!N&6OoY!h>CYT}}SxFg>o<*AHFBqVyh`kMUmj(*DnlIjZ*`_rBg|3Y$ z;eV^xr48oGPU%7$mOHg;1@ml15e{Ci!3GsqYoND9-o3TAtTC^CxaY1~HzZZ<#L~1b z&GQ3K zQGGRg?Lar6;@Uye{zA=%ijPs?;sGQb9e+MpPfd3AA(^VeZuGb))e+UKNc}hVajcyr zXhWQ~Bu874YmxHICdYUNADqO;h$U^uHGMj6Rvd+ip*4phOqw*5BDRedx}i-Dw)V&j zXGE)E_8~kflDRiv>OU7MtW&W(Y=O7!DnxJ;$%qt(kfz)O?0Z|*05#|3n>R{nAAfc4 zr%OA1A(zYU4id29kGGk5yv=W;TTXCn^X81U|nh7Lx{*=P3 zb+5B{4;Fh?Nl~V{*9X$2)JF0fvvc2}0YNSZ1v%*nGEm?$S9PPZsvAQV(SK?l6LJU` zt?b^v!nN^u)mPAeDp%O16A~|4rBcY;o>+v6H+g31=ECy1YZ%zVlt5mzbb4y}%h{hE zO;aq);^U`FCvSQ4rgWMy~=gS!&4!j{j@ zWY7=oDUAwn$uT_Wbt8cxdw-j73t62QtV8Asc~V#nPsQHeUXzq~@GqO-Pmj*O(Z_6w zoO^K1cPq+Lw#t259Pij&ZDE)|HfDxyN;C-=jZ&3)$0zHvS7YpIU5>-Eh@!3*6Jvf% zxeL47`G5h^GD%9q07rHZ19lvnGE;`@3HK?g2Z(!0#OJ}omu&cfHh;fmp?T6Ot%m@M zNCg;@D#q2O#wF$%Ez!sg0Fu#kC}M&0rMM6AW}cbg_x=6vNv~o9psl>YjzKrykFKb5 z6SylL{DUlz&7391agY6_L7BcX`sA_}+PCR39dT^B==) zBR1L8r-2=;W15_iNzM(FODN#RJPPw^i59V~f&=cJrXLiWMDtFN;&YMk%xn4eEZV+ok$ZmA~rjc?tjU!6*s2Z)Kx{8g{Z0i zqwf%!yg`UIYqwy}ZVn}l%=)W0>NhY~H#F#LmY>y3GSW02dW?AnzNxC8NQhg@YFH8G zUZdRJD`gjVkAcem--BHUWIZEp5#Ifa$}A!f@_!AlXn#1z=gcZXFT|`T1e-Mh6}$BY&=q zc}^I|QGfb~Vk}Lum8iWHx^vCVrcSECb@nQ`M&w>?z%e5EMQ{ocdq3n5XuTZ@;S)_? zzy}Or=I_4XrF2+f_8e)Nu^LD=iy&0WZM72nkU7AISgd7>YCH+E^aLi(8j^j-H~J{n zA2j%Mm6c%wIKgieO_=n3(>G*_%`YQzHYE ze9zJ{B-~0ST~ay-vyKw1mY{alvShXsIS{E`TsXP3aA^7LME%YJ;NP2_ z_9kv&7}m|dQGPE%PVLgw+ILT&tHrtT+L;@eE%?Ag@9+ZV8b1yI9D{GEe>i1Np5|$% z$xQR({-s-AU_PsvAL=&`EzZru*WQDFcz+WU-XtISU*r2}Oay`TS37#$J9ega@jDtH zr#o?L`SV-ep$TvH;nMt#+NH|?jv8Xm&<5(Tfj7!7Zf@&*Zp#~eTb92*SUWmdyY#tt zXaPt+g(hwQaPjG-NHN`BF7`u8>CETOFzKZm%Y1(mVf>Z zuYU0EJcKF2nZdh#hEg*EO30wGICpz-?kM#P69Sx~aR2%e(*5`&ti<%=L6G(Jrx##2 z13JuncKaH?MR|CC`O;S~R_)AvZ}Q9f`kB%Yf zG0^4kfTP-#hqakmezcl_L(MF#CgqHy(dzdeLXSw-^y}eoy(711l9)|y{v>9XWBSn2 z!Z~jSi0wWO#2OHGmdDR~b8|@bEEn4!KHf^80nGrus6$%O$jS4y0IEE+z<;OhJw8E@ z)8xI$yS0m#k>D>}@h0vsE}Zs`UWT8S7A9-AzgCF@7T%lsX7TYk03N8lcJbT#*MH}e z0@`L+k|-iFf`RcufW1P>dw9S8^kn_%+4|uhC|fsrt;2FYJ_o3P{-ftYc_~g_uAQ3X zb8)B_PK_a2RVH@~1APAUB4g7KtRlcy;# z7`m;^ACH81agK3+Cgy4v#6saPme+G2g6QKQvSO?kYgFeCSKS8i^0sCxE5e z^l6xycl#_5Tm8xB%YQ%X&4Ey#U;f+C<#XTQN-@|758i`Y-ZiB5`qRVS(S^mi^Ggfg zz;qTD{#L&V5`W>_+9g=uTT4gp0>GdL5I+Wjsn7o%IVHwgFg3j0l^FBf^6vFKyALqE$8}k8J6NiBnC4!iY?a}ZYcfkm$GH` zpwY<@+o-2=)3$ftecf`_53z$;p%N_40BdmF7MU5)Smrl6;HA;LWbYjF6GPvqw$C3T z&7CVYOyj1dq$3Xv#osCedgp+p-G+y~i;rg%7=KEw%$Thg1*wjdF<)WX%CRVYqG6Np zc~pQ{Gb~Y}`9Z*=lcuJ@AN*=4y_al#coYux{>-P#1C}9w`q zC84G)*_N;M7*YR&?UYW^Y){#v1{yUBBELm9QcNpp^&<^z8JK>E$t&D=)FBqUWkPbx zWq-_BEge@)vf%FGQ19O2AE{ngxrz_+AJchj+Ox1J+ILid2yLs#fy1y?;tG_Yk_ESt zy^kITLtI1cih;#%Aj{2$Gw_v65>m-j!#!_L=#Uz)tX z1S;^QtBVWwYjgjoT|VJG{@yz=qh-j85dRgo3epGd>pLibxPLhR$50J`63r&6MOKSx z)iNHJm9z%o^asCjIB1c~M4v(=D;G!H?4`0e;R6@jSi*ZWY*1wu0Fs z;|}O0ZqV7^R0za%A6+={n^OI|;c6~l>7cu?HYEiz_o#425!0+@oYTf87{>?bN*HUW zm#E;d)YYS64LPq)IlL4Hf6SaqQ_jxaai^n$J6zUI-CbHZNCr|YH6e0_!qM7M@w&ax zU*t(ZMRx<`;;`D^#3OI^VSnw+O*D>vg#lF9G&|E|IYtRyn?S`lZfxm*QTck z4t@v0JnaCR>a+9&jtSDf$ck#F1T5D=`h93g>Q5mfh@d#*M`)n0>j*vSwGD*PIyqf=Q3uY7(_aIDd4u z$KgLaEG+0q1%Com2x94g7z1bNOlEj!m?>SGo!9^yaa3gh*a%18?1VwRbAUz78sFfx zabO(=>?yV}aZt!BC&j8HNInCPuoBHSXcQYVfCWnHCse_LA+BJ}VnYC2d%NDu;n;X> zv&eFRwIxu$`O9AbtA6r}Av5WP+KY1J8W*-=&(HhA;U%N zpWtBhR*Z$eA%fWt$q>DWlB2iV01To;@EYdFt5GiKszSImVoq8V9~##If(ZU3x3w4w z7&-|_LtxgfJi@SZ&aez~Ly&EuWE6YCZgbS<(DA=^?aGe!j=j>6th$wI44bqEAS2mA z@gUy!r+?sJ&u;Q3F~!=Ub21GEufjzBofd@Y3`V#r1`1IH#0FEyRr$dB>38u&qMT{y zOZsF4k1JBlwAuWJ+F}@c#p#1ak9G{pQr-+<%e9IcW2}mP>>U`wARCsvl!{UMf?- z9)hY`D&>8dji<2>NeyFx=k2x)$i7rmM}3OreW1@US-&0a5r6{A2V<}o0HaRKg^!(% zS3whnZTM=3%5BWA9G=BX-*1Af+N^$X=At0+5mqNplgAj|(aw!8pS@q3{c-v8$KKsb z^?y632+w%;|J_wWEMZ%8vwDO|u%#Lp2J#w?6?Vn-42JZ#PM-^0(|yN9=UYWFB08~? z(`uidG{C`z84?Q$bU|MTS}MHL(VAWCH)IV02T(uNX-v45^tGX zw0ucSui}i3qRlTwjpEYlIMr7y0@@03^daVNrMdRi4*Eg!k!6DmPwjv(vY0otFAS!x zAke#eh;Uec{2e;^oVw>t9)kY^N~FQI_T%i*frs@wcf1F)4UuHQ0W~qFS1oRZ<9|aX zwnyLbymHFqx8AYSi*wgtU1))5X@d)j-Utlze~w=S(EmAp3C}}p0vdB?rvjF!6T}Yv zHeATM{UEoq?E;Zf5k>73RrVchS^y)jB&c>-VV!^kvwxi%C_o2Y+7~-Jchg6SHrx!n zO`_{{HW)~oJnVv4mtspH$qu-#@_!aoHRyk5mBHhAig)8iwXlYeVB_6Ec8 ztJGikHXynOLh^2(S^DnA;@m%wv@Xm8e^7}qg!;$S?lscq+rl7y*81ZjtJc7N4ybaR zG6)NAFn0~08Rm~+oR#_zOYf(vgGu;Nq)O$TYWOhegniSWFBZ!&?4$z`99&%9nC}B@ z_-ob>S8oUEMq>R8w14`_D1Xjj?3GbI;#l&PQQqI!r$P0XER0tVG55Tw$BIKb-nB9v#|8pI@m-^WyWL_fYc<( zdQ&8QF@f}m#&lnz=WwEYH&@72-B_Vr@?QxSH7&r#>5?zI^jBN3we3s(MA;ot;&bUA zPw>+9Z~MKeZ^^q4-G7It42=V1VaL%Ksmwt6%bfiS${fHEtbWH zrQ%4e3%<-6t)$K+8nOon4j_fPXb0v;KPelUk`;lL!YJA$27l<#RSK-SH-BUC@u9%d zPA`w2uRlEu8tC$c``(?0%a4!KiWuy@TK1W$giu3ZmhIF|i8A;^?_(!ttZ{`+x3%p? zEumTt)f4c(nc;$eB&2XQjEgJmo4yTlZ_YVbkwvN!?|nJV6G*ToX}q>~*qPmWpBE!D zwQ(MQDe#mZ7Js;bo);_CUJ37r&8iVvnGpXIFasGMW7*W#4ff^Yfa#HRt{QqT8G|!Y zHsy#EDebST)4>ja^Won~vee-EB4KM!x{o6+5oy`vcdsjx44Edw z(dz+WjL{17H|zUPq9nfh5cTP^PnNFD*G?Y>@xbfaGk=|1*np77Q91j?M^`X{1LFzq zz=y=jB+D~k%`-cz!C2Dea==EL=LXrlX?^9(3g57r-B$F)Xi)y;y zwqeW(&dsad?0&y(F0?GOU8ox4>)Fw|r6 zc-S=<&@PU4c^(um$IlJy-?E=rh3XT6C@ zE@znew9ua$U@dtZ1MDC4_rojvh3mjpU*lHTqYK{j!{vz?9ZYPBT%q8OfTSzM%oA1r zK=dRu5ab+mz|<)~htkHLvF^Ih+|SA0Hyam2+xpYR4%r-`u{tr+ zK?MIWj*#*{16A&oQFZ&$F%gFy`!ue8$?u&JN9tq5UW(&zfN&T9cr0Rf^P|k=I-6QHaw=WLk}_p7QsfDkbkJp!E}Y+kg&Z#;!?@>9(TAGiA@1O$X}B0 zIRZ7|t|Fh|Es#kU={T3&ts{YJQ4Hy1Cfn_^X~db(q5fj(P*#4xL8Lo7v4a8+ZNiHY zY^6Bla*E|3_=JgS0Z}cGpz^jTUs`N@f=lzH>}&<)+7TaF`tF8z>_PAwwJem*YIo!H%(Z)1!TZ?hrSHDO zM5T&r1)+)*AlM3Us;6Y}aH_9eIlTP!SJNJYWPqKWB@2(q|7`+sEVv9Rq@$8MoAj5h(y`|U$zQDfAt4eODFqka~o zQk}z4JOmAR|zsPVOhENu7DQUw=v6qYoP_ zVFWQ)`Me};i>j#h#Q3=Hp!8BCSp<)Dub{qT`z9`!XPiL7{h4c z>C-|gThg~PX&k&7w<4)&s97d>pZC<}CJ;DEi~Pkmi;oXU6~oji&RoGz;46< z#S0&A@J6Z&&0(Mg;J&0&C9-aZLW9UDqcawK9Hu%aT9sNY z=9jjL{z;A~-o$-bxdkJj4}WVM^Q2&iEK|`)LUby`%hPaNoFdkwdw-6$B0x~|eQ_O7 zi5Wzg>7@Sj@Z!P(=1HNHrsoeD)^~669J*w)odU0F7caj?DX#gkaQ3U(nftZx4+Bor z$uOvL%x#d_+i9<7Io1R2ASy8s<#R1I=)$;0)UP-LZspg0o$6aLe#8zDpt7RyKFe-Y zX9{}|`B+q6)2FZY zuJUYQ4+!!!APbBER9GK<6~?0!UniYGHEW(*J&Ot))q^aEfGL)9sHex6#daw93H~mN z=lU!4rti(GH-AC@2=R)#kQ}5vI9g`7+?WTM-EdB1VHynhmyqU$%gQ!a+zPF%!)BCe zMu>|WXHFS1c{Ug2rGOM~j-$6|OA=^OO*Q(C`Pt5eEivd<9j{p@?}GY6 z42pFiO#w@%rk5{$%@x8gr*-*(~npei4i=xpt;HeAvyLs-dN^*3arP z1*S^}LZLE~^8&-{A?8fSMYT;%|McjBR9Asvqt^;!k}6#-yr(XUVZyGT@koxd<*$eDE~yyT!Sa zwKG?^^96I97d>>?DefIQ^{w<)Z?#lL<8b}?kAE!ENud_Y<)OjiVVA$nm2dH-?@!}* zYaA)10#45IT)c8+e42JR=a!7fi5;kbf=OhTH>NM;3 z6MqzPOA80SbThfvhYD0XXmKUj4(i!?`Cw{;rq95IG4{- zssm8>&}k-kcT=JlnkN!BK{kvZRWEQfwqXx>Yc&AUG;#`g>$3Pb8MUc7nf=Tr&!C;N zU0^s_8mQTi&%uxNez#^M@ zQREaFSSGaj2h*!OdrU;l-l$F3K^Wk*#1srzDjUWOEuQ$Zo-x3BTV%B1vbAX(Mr5Ng zUFf*CrSKx>9+vICi>0;!=+@{bstWaAfo}4V+}|y97)FR zYkJHvr$1Ln=kxml!vqN>(z>Jvw2_}GC5iMd-c?;yWivf|?=Rc|A34Tfq<@2oaKuM9 zeANfv^rUyFZ+UDnP9>@@3SHa=B2s9a&C>2yS8YOLdvQTJANA2YO`i~FL zXmR^GobH3^aqzIq?y)H0|I+Mj@7g^|n@v5^p8q|ZrOMmb$NYYnMb(JzJ}Qo=flC0z zw*1Ge!r~$*Sx1g=tNw$35Pw+ptJ5TwmKM%Y!e(Z1KDT^$+B^2`^2PD`js5l6yWZnd z-o$+;mvt!X7v|nSb|;cWU`d>Snxa9eZl^c32{2E=GRprld1s@OlJD!w*PzTUT@~M@ z_I9B>yiJju+7PLrV|ri>$h_Bx&4+&L4`A#C|60H4mHRJ`RFT=qz<(+23=wWcVdC{W z*L`yzb3x#~M&#>g+-7sf+R8RQ5Fa3!D`fJ+S+^1sQz?!xbyb%^{&!Y!)8ZvLvkbP# ztt|)&B^*WH(WDb&lo8}&37v?N;RBYwb$yt{ktlh{CTYPETS)jOw#YKSXo3}a&R8`O z^gRy@o*qG(4A8P7Jb%kgT#Uc8=Et4)+6T_t}Ms0zHGYXn%HJ!_+m_AMk>tJ7w*)G|%9c)|Ovv))eHY969 ztJT*JNr#@GQ&`BE+;T}dlB*6XYb1I_uFbCxD%-Pr8CQxK?hnZ%BaXQKR75>l`8
#XBahFg#*zUd?hwPJrZfqq>P{UXF-_64M8+;R*-^w^jnGP?_t&7IiR2;5|!G*If>3_7!^$v=WVieq9VZ%76w&1u$ zX|cuTDjAB0iI8x{tRqN-yI=|{V^B2#9J@&o8Q@}TV;L0e3^T|nDdYsbuLVPHof|6& zRL}FAB(P6;up1ssOg#fpW@D%WabS-&W(uryKo8sjE;_&z<^i3N4p8KTpQ>)V{?>mA zEOr3+Ykv;etEMe#R(Orf1>E}VNvRM@n5kEUDhbV~0iio77V<{qbEC7tXNXAwG&$o8 zC>vsci5k>wgjc=hbQi4+;HCJ&<@)SZHMWsu;bnOpE?s4gn5w(0-D6VSM&=eOhwh(p z_~r?D^)u|80K3f%6tIdY*$P>V3;&Sn4XBLRet%R!l)-Ti&JY7JH@@p-ch}2)@UkDO z9cn8IiTO5;H|pt_k(QM7{DjP>!vj*kKOjR?Wd>!~5#H=qOGoc6E?k#cmg{#v$M{X0 zrk2hGYlU4tF3*~%0%(!4JTEzk3G`{7z*3Ls(acXb7pVLJI{lJ8=iz5iGF?Vmiie0T;MAHGui?kYb?1`n}9tsE>4 z=d<+mt$aR?T)2#`Qk{XTwH$sgF1TJPyZx1&ZR{B{F(uky|Cm=?&-&7eo#`1^7?HKF z$x@1^{^0`qt<92g&-PW!l7A|V?=4-KVYg&DA`LCyrjw}ySBnD!c~`nA z;ow7Yc5;t~!EP=#WvO;EP7Azcv$NhFKGLKSB$|F+^KY50$(_ja@WDTT>b=`omCu%< zT#IjzTbFhK?p~3>adBaSex^G&`dJB3k=b23LU)52_h8=x4I-0Xz|FDZ$eR~sM}I{G z05uHIv4rSY0teP&3mPXO{RsUtZB83GH`tO`VUx;qu+pTyJ2*(q)3-b5`ii@wpSh1# zE=s1#G;gxl(#CWCu-&0DAjY<9nEW!3a*a7!aHrj1wtN|dYk9|1VHL5obDIi#(sATl z@AXf#_`HgoQ*aV)etT9Vfxt0het%=3N3$~|(?PYPqY=($*}h6hAB|%GPc$vLa}dSM zAy#8s$s*n{F|MVtKGxDCN+p;{$sDgU1N<()27DdTyj`^=w8j)=NbRgE%RXgSDQu^P zg{)=L`3%#{$nTZ)-<rqg2Q3_+lFFV6vc@_o$#6aQz)BQAws$a@>2 zIVmZq9tb_|wVrrB%y{Zfxcb;UXy^#Tat?)%1jS{O{^@nXK1N z3sHZ1!JEKp^5|rG`?@Fze}5rl5P1(wgP<05k>9s1&L5I?(%R<}-k~3%SEGCU>i7-# z5VK1io~H_9{~A9aM-vzNAGw)gIr|3Bxa*_~`?ib`Z~zdCKIX{xh}!rNPn8OJx< z@t%;gO8xD#jih8|R}m{2dc_m&#vvEGcK$%^%oPlO5EWo(eSF^zUVnkGfk#O|^$k2%GKp>r)87{KUFhO41HL=p|!YNnieTPr-u0^aJ5SdYNn^v9X~a7 z)_&RLPQ~s*Caz^Dr^Z@(<7}{NgR`dYo;}`i=boDliP! z21)2|4f+UESgi(G34dtg0ASL;eT-b$`fU@$`&HlI;f#hNU_Q! zXizo1uFeu<90D!(`##V0>4;3pL-JIk5r=_1qn}ohXmC{mnt$U|aM(4(pkvNEV$(!X zed{zIP4P|9dpNaghg((eRzwQ0FmCEmB|SO$QnqNS_I2V(hnk%<=$#pvq*NP{EJ|U; z*HCGB^bph)x@K6uy0CQlx?Tk>^tid17ut(US)(T_wN*7S{b>X3c%?bhRNk=CiE103 z{c8E#L~ZIOsDDttU^x8{xPhujxqICV9PMNU9ji0E9{?G0;I_Ve%a0xv9VshP-+$ga zJ}Hof;U3JN2&;(FE}T3q%iM|2Fsg=s0G(^sRr1Uk1R~5L0Ix#J8CjZ&?HLp6jcGb7 z7{Op}*BHGq${U3z!>F*tqb)=ss~?BtsDeIiIjZ;`mwz~Xu?4BE8=7w5sbAHD|1pHF zoh=#VcP!LxQ4UA_ogQI_^1sq3);L?r0EIVYrzvUt2|9~3q!&5_ZzqDWwurQi*-34s zgeGGjlF4K#?kL|ksDDPT*4a!m=)z_PB6$qQQ_OLU5=plcVrXGKdR}~D)%`G{uwm#n|*_Zs=z~>(z%Pm_> z<$sf@S^Q&bARl0(b1dsgDyD={5mu`!o^lnnOfE0+Pr_7Ny9EJw%+wQ1F`^g~)g$m4 z(OLLLBdC=F0+kdDJ&XM;=PKIrAGt%tJ?;*JOrxUC*#Ndcb$#K&tv?Ym-_9v0PD{qs z^E(+hQ}Mt^O<+VA21Ct)%`WyU87d(OqJQJ+ESB-30AAH%b^Odvk1hi}wb5+>dberY z3qOB*xLPe1Fg6e47+Fs$pqX?bRC-15UG|Y^`et)e$y->e8jhkGdWfA!g+moL*#E?cXU^8bEHk&3^ znbSG*3lZu`DP0`|2Gfzwup9plmVp9;?*BaOmiM8nG8VTRu0Wd&ZHk+sn(g3+TeXA7 z7U#cUxxUVO$M1MYZaM3nrJG-R<6ol3_nG_D*e3>~!+3==jWTJsZR-Ky;?Xn8GH+h~|m3RCodb(?c(8E0t zn=gaT6QZ5HLp95YKO<-U>Y%qUkIpQIj}hUB` ztInm1KngOXHmEwFrUEAncAPRQw_z>d+t-)B#n_wL?Q7oQ$C&=HQ4o&kSY>5;_z&|t zLaofEuubxtLUB7N!hipGk`kGEpYJBdA{MDw5Rd8M%*%qICht7M?lr{)k#Qm1#5IvL zcyIw3!jspM>ppAKm@+l0wki<<+|Iu)bTEzd)3e^u%QW@c*`rGfhbVxRTc6ucyh zS}%s>N0zy{gF>M%U17Pnot4*IzzD_@#RFHSm4WRM$ zaK$a-?Ku7&cYpMEL$FrtCHukrP|Pe9m@A>jXs_JwOFWnsAC5lRqr_(b-}dBWx&sc^ z)b2d2-?@b4;~6K`!Di-B2U-^wBfkEJu2xU+{s@!@CZHL*IB0e4TkW;ge-VR6=|iX6HGvT*ok zBVg4Q7($FJ9wv24*Tc05{+<4qyM6vb2vgJFQtI0<2L}zc)bZQQybPD8xUSF0~R> zYUL_Zm~P~U@40&&u za|w^1vn^k=17|bp4S^T3t`;?ifs5ij<(P^5LRC|BJqWG8@B5RcmIRS4J%IOMvVUGo zM}K1=bbVj72;PY) z*ENh)8V#ZxI|6O-PF=H!*_%|1YQe|>h2PyEzf@AjFd7KL>N z+IK0R2KBpR*RFRu2I8t7ArqaGYa!YBRV_baF@v`HCKlb2X#Lpn#rbOnp6IO_bm{}Mm7@H1e@y3dmiwk~AnSJ?5QcjfAI}h$B|wUz7jhNUELk_+Q9-Q9 z_Q8Mh2uh?0t6y^k;I|@^A=LL0F(XjI>Bw*~Wmi%m7xs<$iJpThA~$b1R^-@*J1jaA zv*q)NE!2axS+)}-S2D=Au&uW;AE{P&ZqT#g=VQ7&U%rUo(isE~DpP!oF{JCzjGBn6 zRj=cwoQDH!RxJfgixI5lEt6^TY$3r)h_ZixvDzKRS6{n{mGo{;!T-Bh{g8Vy$$}PF zuITx1U}{ckGP4pgm(<7ZQMcz_`<@Bt-0qN&!gnsNnj)GruM6iJw@#>2+$z{83GL{9S)- z=4(vPt3gLPZ((@oj|6~FQT1B&>RefNh{d@XTreOhkR&-r{z7~6eY5;l_70?3J^jzvznDrtDiyT zkuiFky{muyce*u1%All;$B*(Hj#M^u;=XtL_|p7MH5#25z=vdc&^-{-y5)s^_!;#ZZf3rHo3<W3+(yR)>H8s!R!K{q!rSWP(_JNFE}&c=oTurXBDz3XJil-j-E1q z;Y1k#MIYg=Zqd59H&K5XOlONDi2EMs2wyqnfxdLCGw$$zlU?lwbUC1Uf=lnrN`cDN$->}8-%GR*kf0((j)SOM4>p6=&SOXW~r2J%E=Y- zAYl`I`C{g?0M38a)7`ge<2rS9{bgWFnZ@*6JRYP_EV%k=GW>r_=!|vS7z(tNJkgkt zE>vu73W9aIslnnNw@j1PrnWAf-nhXhRJN~y5UN0wST2?@TrHOPf;mbv z^6Uw8xwaJQI0!gsn9z1Gm(98b9aaRwSj&NOF3Y~e9}@5$9#>tMRepG=0B|5Xa=QA< z^n?5#eUdII+=+kf&;&P@+xDryMQN&%xM4b#Vjej9uUyv+LY&H{D}d+0Tt3SYsDICC zh`z!P61gE{wz(nBk~p*7D8~1BD1T7w`xA(oM1QV|w?2C~;8xmGM=A6d4Q%%3T~3Vf zLn50illa445uZNR0-Y(`yJ_MMPW){0#u#6Cpz6x41jY#e5|U&@iHc`qSE=L8iEoZ+n{XaJhmrE`c&4;BA>^dN!@^T)&|;9;wcRcx0+jtj1D+R#f+d zjX|59yUBmexc&An#CP;rv6Rlh8=&3fdTpLC28e$^t(y(@lS6xow#|FRu2!*U$8U&c zVWYC*a217~joZ-mbhxTQOx(z+uy8NjO4*^Tv_w0WKw=X4o3@HUtNhlfAvM458sls7( zAK{@`GW1Lid5B=??p�fq(F0r!#y9=>T9ZPR@j~E3;~K4teYrPOD7ArD03kcags`063~-!mt1O2O6`gjTv#~|F z+BDD6Clktd)~9>BdpG)D@e8341g!RW)!W4JstLImNz5vSKyuqqqfAm!C6ZC9ggkxm z0no&gq95_h@}IE;ta7_`h@`G+Xx(NqnFxP%LmSKA>2gQVSvVj?^KO4tLc(Nsq5_Jj zFp{(&uCaX2i5YMHB!=wGKB>=MW%;UqJLG0_X}n64#-t6suqYT)ts0#4m4_p#qgjgr zJKkz1z<6pl6N&;=&b)y+%UP^jw~ifv#W$7#yVhgh0SeN)@J}>4Z`;TZ*rI>t*C~Ie zn?PVhD`u?_;@tJ(w*)otizn|jjg`Zm6f*&-OPPxN$l^0fVYA!)xW;Or`-QhR?AxH68i zGNrQHpW7Q(A616?;nAqjqPu&3O(Pb7wNg`D~=Zm!V)SxPbiaF=fEUpmQ4ye-Y% z_O9JqI)8BKz(eow0^agGUhw8mEuZ~I?e^Cc(Oo-o);o6Pr$WvO|DY1XWc{%=aZm3i&SDm3^*6A-7hn!t6CtgY>JLum6kklve zYB=v!I;w+ZH=RwOecvs20NGSKGJmQh|5OQS--oAL(LA5)>&O+d?p|pB=9`&3z>@uF z7>mPHVfoN`dS}<}kdA)4XV~q?Zbgef=Q(k`-OH5^bDcMmP zE@uWo3CX_0${Qx35jOk{D)yV{{^mFNbYWogpDMdvejTr45lvaD3ykQJ&tClnaiNIw z2@KQeK*!}cOU;tYe8hfx7mg2O0)Gwq7Ut;R_kV68X9;pjlIrDFgG)4Z(+E><{F4Ny5mUbXkFHvjR{Ic@?3M-PUq4VNZ2R zVb9oYGy4hso7fM#UKXg@^|E}!UKChtsIhk?7)g3j`ESexSw4SLR!Qg={ga)^|3^^O}Uy#_gK^G=$HEeIMX(Vn)AkxP}~#qv{t9*Wz{^N$24#^$UAj zOMJD++iYE`jBUgEY__krtFKAM)(nI;uGZXlAuP@MvB}TmM1J9Cjrf^B)oS_Ks59VJ zxi=(>!RB<=Mwov}mvSB4E3ncQ=$9Rn3oJ;qP3eO|M6pJKAHyO_Owe!mM|7KVcKQ#w zf9Gi6iR0w5DW@xLc|ic|dieu)Z{G)7>9!+ta`G++(7Q_ zeN{KM<1;r0jHcndcgx?nQ)^0LX85O693e$lV*)y|7zixpMc@DIIr9Js+it7{^K=6a zYmR__%u#{#3BNq3%+#m`{QxgdDH~KT4Jg z13J$XTsKo3E?3;-2iyMRE&9PuwE%mAz7Eec|z=hI4=a_aCfm;aizJi1r4njxCIL zu;G8?{NZ(?f|59aGwcdO6Euree1Y8xvf$H(xI!SeJ_lU=xgoCp9F42kpNIQ$Rl=32 zy9C=kGi3ewc_6FU5Lv|rgjLKIGv$4yYGc|GEuR_2iq9Nl<-OTxgh7Ka6ri^kXwflf z(mDp^M-8c9+Xw%#5*(~= zQ4Xi`r9pH`C=7fE5Qbp_TZN$_op(!vx#6Lfv4EX6L<2TjyUpM$a+OTkbqia$(uM;n z{a4&{IWzcHexO*+RR@QRx21GBJyc04=%jRSS|fCc(LNV1d|*nx`RF}s4putgQS{_k!y{<%)cz3*SI>WGiKMhNJydB3eWBDe6#f$>4Fxx=wRI*tJB>uU z<@AW3O_D}a2Y}Z~`O-vNyCo;<&U`WM4CXLB8aC(IC=+dgJPR24%a-92pus{WU3I%- z`C|K6BKUYP*Y4++lsO1^H)dlPRYW4&68~6cuMmpA*xubkiwg_2gU2WzhFpKR+T^#j z)3;&y;b<7W{Qnw1pe&{WA*P2D0P%DpX7Z3G){IAet0ic$<0SkzBof_FzRPMkqJy2e zLiNLRxf*w}ZU%o~iF|PR;5)H=NwIu9wtb|C1#PK)vXTb^#ej-#-bjh;roP9Lu%;u$ zWGS89R>;P>;{Zn+UsA$5uX2CHxe3qCfYb45U9O;C4eZQ)K)jnzP@uZAbp9aKzj3f& z%bEN2n>V~;f5j3K&>Jj>OkTTuc*eW-e*gdg|NrfMYj+&gmFQn7dbp^YNV05*XxkWXe~%WFa%;UF^>coFaw0i1RH-6Ucn)(b$`lT z?w0&%?oYV;c^*~OdiarK?j!`%b)Ng|v(G;J?7h!EFY=@G7|!a;ch|0doP~iKqVN>% z8putKJ7d`y92zQ!lE6prjD7`q47kV#U?)~vIeA)I7FJt_xtJl|Wym;%2 zr`A9Hy#LmF>o?xfHY9&wEHcs2D#!U-vVkd0XxZhYO#zoBdacKiCD5x!EcP|LC!v}) z@SWh2uxAR4=rCn1u^NoKWio+~JthlHYiIr+4!d)s_r?eK(!`Zt;Fy2@Uhm4k1E2Jb z4P~z@H^f}NyP~42{N7kpx#W%-pTOle%Z4N(2?x2p@>>7(Pxyba-l5?@<4YKZfqyxC zoYybUjlbFCH!Ckno5#%auM%c(ARS~!K#%wyI62Ag>f-=0wBd7b`yv|$_bPa#&;=JE zz`_*F*9#$$>6L?Oa6D-2*lT2ihjcQ?2jJJgzS?{J-#F@8b_jXkEI=A4$}s&*^uSC{ z{9d%i0>O9Kc$$B)ORnlKx1uhQ6McTO_x#)V0?C)J_dosF`i+;(%hSSZu6=s@&3F8; z*tr(%_zDz&StFLG?B_mt7zMgGPln>M%wP)2wv3>Gh2bnP0+f+2wq5IhSA7#*XV!c* zaHyzg4YoSg0jaUpE*X9d&jmivr|5(!R%Qu;Qo% z+-y791<#w^1_kq+rAE)UW_sAXUGJ#jEOe0XG$7i~`ah!(gjassfBTQH)-zkSzgbfN zE)RxE;ZA=An8RYj?kgky84D-CN*#9Vqk-p}ENa1S=0&-GsWQw{CvsQlTea<-%2F0P<&}KMWX^BB^IH{1?2I zNSG7MxR^7|8}u=H38jT=cmVn`gB^^&K@@Kv3NU}q9(YsYVvJ*C50bjJjUX>d+e96s zfVr`?+@5XBDV$H|D;EUNeR4VfsOb~xr?TV0OSYBOCn|ewy;b~~TMPUT2cO!eXV!sM zYp`3^?%liQzdiOyRh@yv4~s*W4{(#pHJI~}(pK3=iu|I|d*B%L-`*w4`+=`NZ;}tt(ez-Pc>!Y;>%0Ywm%#&Lj>(<8U8zu7tRkLG$q)yJ(hw2z42aVM?N8Z!H z`bNn7VATX^ayBtQ=8@u?AGd`XYabef8Q*{Sc&{<@*Z9;=RXDa-ZhITKHoe{_sJh$hFsHkb+<$>V4jJr0@)YSBY~~0nA8Z+nT@yE{SZZ(4 z?4V+JcjjypTESIWHmwnG`obbL&u@QbngaY}8z3KV*en8jNZKoWy9OWn8%K2sZn~pU zb7}P8f$77ur>2fF4yo612c)x2e&`pY{C|F9?dr$9>z8{k{%0^ELI2sd(SQ5d+wZ*A z`_~uxZ~pl9uU_i^`&0e5-aFeAMax_?pR^->TCI}|(-? z8&M~u2etXtEk~RWLsuWKlOPt+_ewC`QjGakD%$9H2eF;-LlS7?pe( z8e+?y8rFqMlICGD%c<2)DI;sNb6W5Xb!RHWdY3=qGK>KQH?#a1%(G3a`LXxeNbVVWbZqAkEV%XS@2=l?noWt=)2nay|L`)S zm`P{-)1UOee93)IYVB7ydtbdgG;A7r1RLUac>BM6@zz&w^nZU1-)5nSaLPT(9b((u zD*B*&_!?lq6cQ-0Aa{S?f8)1nKvB+{R=q1P-hTh`+Rb0BUB8Bg?_az&gq2s%@^Fy{ zGj~M`Rkz8n32;ieatX6%mm2#}xjH;s-3Px%XVa)YKRR38D~=$u)$&j+UK$#{B#{Z1 zfX$q_MDpj^l3eovF5C{6k8|46h)rd&xQq?UF36EQ#BNp@h6#UZ14F}DcV|mQMb4I1 z&kggoFi{WF)D|15Q8_3ue1>|EZY$rhF#8n^Tu=kc#JLg}n+V9(89~_Tw9(zI6t?4# z1JIr=K}jIb^{>9V^~Hy{1C`o9=adZcIyApp875pVmCu#}Q*v~46n3u4xr&F7!Qk@v zD0)=gbh@0_4!A1MAj{VSs<#*ag8%xnyhz0Xr!W1O!06 z%p?%5;J$T?&_(Yh59=zWM>B?Lkd;f$TC5|{UWiu4DJ#1&08Xqo5b;lBMjd1y@OVO} z0^?-y+aJ)MX-p!SK}!gJ@hc&K33^Pj!3ANmkj@|##9542R}WVpdC!>k1WTq6;kXdp zfu!xK^oxHEHQ~x6+V|n$YX z%?4gTml@VD44e)I12b4lmT_I4F*E)k1sDw@ZLT!D^O0ejH%vMgOs`agj8K1A-YX^WSz`Emh_{+@#jt(oLyUTW zX_$%cMJtB@U>@n}@I3>XVip6?kL+@RJ_CG{us4m_b0L6#?q0%w4p{WL%DLg46=2n4 zo3XU{xQ=n*2#kRoZSBL?kx{bId_#^V&Eb;~hNW*%t{Tc7}j z!|yD=AGGyC6)P{@EvFVZnNj29lB9$yuNA_Wl`vTjEtm6y$nfXNH-Jx!0H^pyw#p!m zUcqG#|3JSxY5fmxVf9JyOJ31FEGmlZ+i&Ng9QRR9QT?z^dQCg1m}p0%l>%=LQe5jf=!Q^I?W&LUuOk1*8u%tl_rWykxb=nu0*|Vq2O^ftEaq$vSpqFa zLy7}+XL`irqJPVn3@_d>CZ+0Tm^6RIaL2_p_m^C8*Z=MIubx@E{%Y^}*X@-2b=JYy zXm)JH@3`-NIThxZK8CaDIx{=Z%yhhmtE76nYdi>2bUvc*;7)%c&XfbJ66`Bt{LtO|dTy}{a& z*I48Y3YVtmx}6Tm;8x!RM_NAGv}1g@qVQN!paOdCH|y74(36!pwxEBkcWPm;em=OQ z-U&@kmF$)7l0qKF&B0+G_|3tYieO@jpy37xj&mYEvpBu6M$q1uaIs8b*r9Mcnjgn` zr-!F!_~e(-Yo$>;j#92+GL3)glO7ll&F9$v!Y&L>FeaT0O*%j*NGr2Easkh4<9uqB zq$+keg34_VA&*C$sbra;fr5(>nL>#llMNTj@>?DUI9C47*>=cgtt!yofquQiQ;O=9^~Cm8pU`X=-=$#LItNa?$NdUwVPw zs1jZt8%;wXQNTH0IopW`t3jE&98FpI&RVDh-wB4+Z@kB^fcHNCeede^-m_o!FTcV+ z_yut`&ai5FC>Y1HY*s5k#IAZk%z)D{F>H76ART{Q*Twow5 zNJ3Yl5q+gmRl|CUzk7=G4*nJw&S>bYZ%@FsOt%?#DqF?VUuMkQOJ>Oa`YV(I(xk0C zjyMr;jF3!j<3z#ydm0KIiKBWAR?83t)WZ~HH$Felsc3Vm(V2f_VWCd#m7Rtvs~*n} z+*1_VuZD|FX9)X9*ltt6IEJ3ha+pEOn{KcADWj%aTJ>RCrL~L!2#1EZFlMYn1(*e# zBdzZ0Fsz1)E92-nvpRe)$PgV!x*hWSyJwVWR%|OT?reun|CR{R8O1%L$!wcB@^lU{ z_lG<)5NwxHb4Y*LoM^X2KlXlPhTqd&we3>VwzrzeCajL=FSwy>M$?uuUVIs32;TPk zS3m1L^Io}s<4XV4_n1ypiFzb%r=2^~zvinJ>R<1CZW+a=(ptwsv*Uy?XoNdXO&^-6 z+|RkE1CdW}s^d{z_vkR61m|3OmW4MO#>)t`Z z)ZFx-;FN#7gM&g#wD%A7N2Ti{F zxU2Q#V*~dAx~SqTDk{v-GowM2x?FZt<8;+{Zno~kbO(LSlQ(*iual~DvZN9CgmLGi zLgbX4Yb!4OmBAv$~0XS0FjSsZC-#uii9o&B=Lo&=eE98*YXYKjV`cFMgS&qJM z=h$CsSL}of1q$LpThSOUsJJH@R`!pfZS0ED$QAGaIO1vfq_*&ccB8CzQB z@ry?EiM4Cj*RQ{u=^S4&edgof!Ape=)3dU$*EbhBi>pEJ3Wf%HLI>V$)nFpWEo>X@ zf5zOB?E}RQ(*y_|Ty=HBwZiYzZn)dK^SXb@F1-;-HMo+$L-(${(*Nx8CMJoLqy|UrDJKR47#oxfm-6Ma5 z<8*W{I-KI^dFR%Z6Mwz4<6re$_V;to-_JeUKlfM%30+oDbdb0_GM9kt(jZjs8Z+0i z#7>{o^YvMcY415;dn*h_|fO*QKyqu2w;Ss|3;BW zKNf`DPEvG>jBlMez3`hr9ck+Y;Liw(^r>WH!Zd!nnI?~7-)RwI>?=uE zsjq|ajj65S0Plprf1zZXFDnlR=ev!T$R<=)8l~SV5@PL<*(pS{a(-~QFR7-8KsW<+-%I8>XC z%yn=hA0)OPgd(1Z&LN21*uX5P!#{X2mLv0Jf=_TjG9sfk)^1^><*0T)ThyOOU=8yLWaoR)UT|(n#8ho6V>_wBeOjq%b~O!ij0p zIkB=jVsOV%qtyX^1+_N33dP0vo{2l&|NGYK|7xkor(AQs?!R^eLwElACj*EV?@>Q< znXjBH-F)P$2B;F>BOj^9%?o)Y?PAgzX(r1;t@Z?(5QEy``@s3C=AVDx5bcvOKHV8&{A80T{iBG0H-2FQ1?E%vVQ&A=1_A3o1ommdGK)Hj{`)CBk{$k zR^H`aH5=P(+4y5CD#wtK5omyvEm8cRx=G=~b0aMfcZD^u81#RA9Rdp2bcc20IoT>e zYrlDM?cHZmSG9zL5Qsvl1h%JJ#}+SB*886QDQJndl@ zP6!m3C#|e*cp-lpAn_<^V4(%rgIk;3cfo?Wh!J`fnti)h3vl-3m%ZQoviH)9!NV4D zGqI>U~38&99?!X7=@1xRaF zC!D=}4YJPqpMTkV=Dp0I?R5b(5x3*Hs5ZA^x*MTbJ&1qzTGBY#PFidck?Y2pVd{BG z;LlT3Jg;E@IzS*%hxC&PMrx89{(C)Z1-6V93K@6c*Cim3yhPL`NK=Mnu+)i#Mj9{| zBqtQ2*o=9A?Je7xv6OA)-t9di=GJ1;%u@6E(^oNC(A7`ZZ@hUwNSXR9qGbhUTf{7t zd}^+5mzaOuF%PC>>T9c{%)`82w5-G48Zk30cTCOxxHl(f?yiWQ?>|L{wOX5^$`)|w z-WwnF-h9fXX=Hq1I|}asSxd)7gl%CeBy9zv0Q06MUoT48oVRW2zVZIr&7ZnB7);~R z<5sC$M}5EO+#+CWl&TK ziJPmrl)bBvj(b;b+oaugz(ES)1eZqFlG$RK- z1D~m=1?cd!|1rd{?VD#&0G~VrEAX)$SR#K@j_5sTBu${k{g*BUgcf<8XXyVtbrpR< zw4wv}9l+4L^7;0Fp#QS@`d&iAzJwcs!cYJ^IDsIbyIeP&!I-EFSV{?%djQMrXMb_~ zoj1#LUt?qBsIl0h$0{1`0U*80ulH`^v#hsY{bUQMVN>ZLSXk&tAZV$=PQeKSQS*P; z4k7OS_F1UG^v;LZ0D%*Pv?|L-bFs&eJ zcjHCnE(#;5WEKF+62U)`T@}jd3u`E?lq<-%NerR(xvbNtvx%AC`s=YB&c1&OpB(Oe zzY{!Nd24!bWwPc3P^Sp>VJqH2t8l0wo-+lP<_9o_4pghCn5C9DZZL;S$0co_*b`l) zd0S4lgpO1E*M0SvqeLC3=Kl5U;LmOq;?5@zWjeyGlkTb)H7qw zL(3GWp58qaATgpmpgftkVB=%s$=rF2wV7$EpdBA5XS{d}tGFK-=rq{_k0yrqyM0s+ z#4HyLluxSw^8K!{H1r04xB)cW9O@(#c{mX736c)`uRPnocDeuB+r5u|VhVg~9L{C0uU~tC zVvxMPXFR~06W3qpUw#Qbd(V7!>*g!?GU(6W>c9OtvretMgMSoAlziUIaszzBQye$B zfXf7$L^I#g_vvAQD^x@IVtZ^c1Fb10In$jspo)9Khd5=)4B>x$5Vw29T1NWI4uKez zBx>I%yAR+FJYtY;+AGMG2GBlcH^t3xa*GQ4wJCOwP2^GZH7cvY(`$Fz^6k{o*fUy;2+El z#`XeIo1Kwm^80@u4|b113dju!Y)JpGtNKXv%`tAl$hX0zf*PJX;drn|`xS}W^lVC4 z(9nE(DGJ^?&32mAMh@qqq}0RM1-L8) z)kmsaNrWqlTRf#$!~)$Qt?cKQd+gIQr~!`Bj+J}5ow%OvkmMnLcf<2zQ$ff$oh`^~ zyu8(2;>UkvkU@J*Cf{-_jO)+=Ux@6sB1a1Of(0~0CMBD(ZvES$2 zVU63^Hel?TIS4R*lwAQca_Ba|;ubaq3&dp-^gMs?6n7K~4^LuW{MLP?qHv1!RNS0T z?tF@!Mg~A048SPk^z+}ZfAZlVoT5Ci+>B~>M}?+|Z3CDCaRY2pFDQ}UC7{^EHUZ^{ zcOks}>b7cORb#=jgfmqQIsc z0AZ5=9$cv4VF1qXE^;6Ut+46c1+}&oIpwG%Po^4)M0vLKE!z-Fn)vFB+m0wNX=sei zGv7L=VV2ah?5vIK${yA1IfRCuU;n88>f3*&b09`*^zkl6Z)FVTnBk9M&mD|m&$h>4 zI?s)B~=C6mzz{k_Q1$UaQoV4w}1RW@5Z0jFaNgx_LX2{M01;=Z3BMOgCkbq z=9m`)dx%*=cR?;6#LWQy#0zr!(J3{4AzI-=qxhPwtGXWVBwmhF%YlUri%uTX_lSS1 zVO)y*c5$^z)9k0vVz{)7tBmyQ4A>t#`=hA=>*JR-DQr}a$wBKO@eQsgb~_zAYhuV8 zJLDMg@Oz}n{-68H(6G9xPGB0eUdc57*bZl^jEWR`G3r^SgE!ylz3@!$<6kf-ICOxy z9zo$TrB-cs8*^JHh%%KQ4)_fzqz!-DN?Jr5@^Vp@GGNy@XeyorG?lqUw`3kp@zi%3 z(=s-^54A%`cOcV?BO}31G=db+3eEr)1VMMG4+b zQQ2+YRHbQz4p2pB5>RA$Ki-^~+1-=PNRedPWJax1G<~4Fh zf6nbS+-VIhFXNUe$sI46Jd6-e9u?e|~l z|Lz)lKnxR)*YPC^0NBz6E1tlj)cwmAvgk~2MItsb^sAch|DNpn)i z2e&{rA?J6#$-uE5?!PA&=4?+X!@&`w8|#&NQ+(J6GG?}gZt;aCjQLY*L0@z}W){1#iYn>KrqHZzYb;My$9z_H@9uDG#CdPAVgmpALM>QFSK>zR#TNRP^>f1ma`0O*` zs(1NUx4yX9dmbqNa}W?cIcS3k^XKVkvH)UtPL9GORKV8qBKgX=4M|&rPSRQ1KMMD> zsSmkv1JJU~x(WIr>ad}6E=AiD^_aE1dyV8vKgNIk873*!DDeyzfwQ>jW`kC@Y%I^} z#~1f2oiU*ArY;P)s3;o*FU7qZh8DBx z!va9WkH7(Bc@gNtpC_EAJ;k%c&d?bky)*@BE~(d;e$~5l+|IoX(CW}7Tizbd>M8qg ze-6x*Jeo$W`r@ugeh@_tAb|mtYJF<31^b^IejaruF{82MVYuEb8&kQvI;fVnJ_>)k zaEV+yGW1wj!=vMZMLv-9vOPDGPI!WIu3(!BfO~e_O0E}jBIxvYY&KEM&yQ@AhX+O z?v;%*Y&m3|r58p5Z9dwtWy0BQ1yg@E+BUL0-w=>(KTGs3P9=N^>_p%p{0Mg8WrTi zztYXf(#~&Yx^go4<#T{_2a5-zkcasXp}Xup7AGF6gD}7Ee0sLDH^?Z#p-+?c@ZZrS zXtKn!fiY9DRotZ7OCE}A`*w|0zrFk0QS=bYa{I`UyJXB5-22AOWg#@yjEA>dPdmkx zGPX%&Eb|cIbKjUZ5R_uw(QtnU)s%V=?$$(a*E+0IvOB<}!&Z(QP5?03Z3W`qkw6>7 zhPVM0wd3Qavr)zZ+OaKI`y6P>$UPWsbO4e0r&ON=D9zr5Fg76!M#*?WOTOeVAFLGE zp$r(KoRI?c!GUaM5pVY4IN@9e=N5)}c6K?MYrzgLIGClp*;(?#-z$IqGFVk^${UZ9 zvrXfNVcU>Gv$JJxZIZpy&UT=Y2|Oy{fk%LdQ#6JOC}%r_K>Vm3DYT_Zbd>Xn8msfz_@gKlyJn=fC_5 zNnw}`N3${l6hpoOCAx*ZkhmX&q=z0dIcH*0E}YqQF4%9HgK{Gy6{pNOr!A==z4>L% z6c0uVODq7h<`92O5Q&d;>+^BFPPm(F&ZAyyg$lt?0yCB|g#NLDA${W;1~tS=1OyM{ zb7#gB2rM(-%;fHLa~%Y`Wp;TjI4~DL)pF`w%sE4HXU?Ci>}g*jd@DC9FL~Yq+=~=C;@70fC#bKjsa%k|hm8ou()LA%CEy zd0W?XZ|Ft9jTv0cCZ9@#t68=~z$s~GHxpj3sHflS^tsh7&QacIuJh~XBCzhK!A-w0?ihIe2(h}+H zY?O)=1%lm%RM{?|O1odls5zoPEutZ_iiVK9IA^qz@V&2@aKT`06H?08M9N~1;b4fN zA5wo3A_Cf^!67^9A*U&%Pi|%)^)(yb+GLqQ#v#Iru_9Pu^#REu?GGFWDnTZ}7WV|7 zjUZ`3owKDKa3bgVY$m~6m`10jCPhRNc?e`zbc%^YJPS~;)hn9B(^D#K<_emnWMsoq zXPECLYDTLaarzGUH6L|QyrwqJ04Gf9OR#^&+Y$CX902MYaT=X7b*1NF*y!9OY=AcW zCY+FvlTQ$2DmQ;~*P~>(H0Ki-ELW!MF%4%-wtxbcO*CSvBz^bTl=l%pbMbtHX72&w z+~|3i24rJ&mSkoWDjl8U9UfMo4nqpU(c_<{PaHoPsK-0)6duADJp#)=rAf0jp=Ey^ zP+B2J!iS1Sxt=nx;lNy7$csymqjC}-Y}(N=5vnD3r_GgZoWPo94pu+=)nhYi%eY*lzT@s5v9Bbmc+p+qE;R0;U* zh)OV=S_G%VJ5e+nNJo`ma30@|Q3<}hH!c!_U9nv`YDSO)Y-$ec)x#Ct ziR^SrXQUx3o@BFk4hLtxIre|(x#7T-Pd7Mtm3KZmwwsPx?oP9LhXrME#!Bag>DEtL z8b4E-ttN33odf{4QWqr&@g6`Gp;Z=QCHRBu7r&CuiDrFe8gFf5ZX1wF+71ws;IA@b z_zB`z1OD*Zh98G9m#Nm#i_}g2%A+x#4H(y@dpLk5H!t_`$N*2;+c>z=7M9=Sz}Xf4Ys+$559?p zsAgsXzq;)@2k?+dryqPMz?5()s+s(H0)#5QXz&TAPQ0gpRD*x#&aketaYDPHFCNYb z8A{dratEww5+KLq>b*v!vv3Z9GW{YH__8egfg>-2q|tT^)DnLN;b(M^OCmy@>MwMJ z#@XaKsV56ErsKSh9`A;2tj|YGIy^L;oJk&i{Le(QaeBBGQ%tKF3c`tCB4!TP>4`B0 z@&Fu?<2k17PPl)-|2@tuqmvxP4QL`HO2i14^*Z%RHlGvojDZOa3#t<@zYS<^fjD)) z(hvdu=jcGQHWi_p1D?1E1c8??2~a@Fo{M47TKq`)L|C3?N|G(Xg;9B{fBwtz2S;dxx7&Np9XIBFLXAl0%p;toXq9Lh_- zj(Gqufy+f^_U_bqW~yYAH*4NO=qmebUTNCCi5-N-E90yqIiy z$LEFR!B~G;P258Mmbk^3WY8=M0Jby$TV1ye?otRIBtU|@1ugC_B}j|A z7uVqK?p`EFaVgMZMOsSnqQ#xIP)ZBbUcUDApZ9(5e=?bsGk5Onb=KPZ+?nLwxo3ZJ z6$ds~_sdoWl{l0`L#>r6Q8)3O^8yW~o~>!Rou_!bS}e$_(q@um=a5wLPT)G59-xY@g5r2drRM$d2&+`Z*~ zdFd&STV|1um5gqlZ!oBQw=q}BwrYmh78geO4jW2VqtQ)9Yk<6Gnn@46tMM{b%HeFL zo}vT}Q~KHxuQl89)J~IzjMAKCJ50Qa5q|7ZyEqN@CKHdNfMTApN_=l8`&o_E)BW@x z-Q}vjgSGY=cBM38dsBxipOSw=XK)F$0digHWba;6wY)S8L%Y2;RtU&MJ7prsXLgw8 z&0xpPlnFD8c|Jw3n+3xf)zKo8u8ap!^YyY^tOb^Y&y#7<+{l*>5~eDq@L2k{Af$C# z)*-OSj~x$>Qz*VQd}v@gqJ9<*XQaG+&=F~sin>rUYTO*rX|ahcsuF~@kChWOKadh^ zO-D7s8W}mFyFt-6UzF_mQ*<%3NE4?3+T*irH?mKQz$}+|mGuygCjzq4$K*NR zA~e*)w&_wRwGM`qlbpY}DJ$Z9LcAhz-!1H3GwvA;F{eeB(=M;Zu`JlwNe{@At-Tnb zjw&A&dF=d~nyYDLCBiRmvwl!fV&uU^Pm5e~Sj!Fm?cE#R1VN?E%+%ldT2VGpy9 zZAWHoa#Y;wJ~QBYRf;Y(`l+_wsaVo$fWm5CWjz6N7(*L3&NnqGry>b z8cryEUWHulkugd#xxd5vtq%EeDz$RPH8#Ldq2Jzqv6{gn2bFm*o?CgRmw85o;@uDr!Web z?!b&@uAE<$cx4fpaCr=?Nq7c&m9W-CkTA^wHBGJPMF+^dJ?7P}3IrWE< zC16P{k=bim;DUAx9YRF}4UIo=FxDWa(lU# z;TIV^F7;C_(50i+hxS6v^7Dm~sfN@8F)M-NB^R7l>M()Ly-_Dl4c1Yn-S|hRRTo(H zXEhae;wocA5A*z#l_ZiO`o6Ci96RGV4Tl6ZtcBhwYFgCljv_u2FQ11NUfK4TQ=R#t zW0WMANx4D1M`c9RCbB+v2Kvz`rf*qb@5tHhwQIwY$(-Q%$+Q>G^I^qvMpKo(z5>bb z)MMzwpaqs_;yz&pGt|Z4z|?eXuHaK^N8v#JXAr$Tt%z!khjB+8XHRYK8cy(=O18`Q zdDow~MdzztK1U3wy(=tLR)P#aX;Z7XPd-1z@0ya7Xp?98Xf(|P_Q_(7i{i+_6QR#6 zcmgUU8ng;VTN-RTsj6X}oa8x*nIRA@taF-Ix`f#iY~`H!Bp zS{*AhFSjM<={T%Jm`R|o^>2+lC6y)EYf;shdxe&oJdMCymJbf>DMv4x(w-ZZ^W_Z_ zW2M*?1dTW|4M?!xM6inY3VRCmYwr-MXgI`Wp|v_X*zgi)nv5gk`Vio!!@Ag%{K9)k5)_7X7G16Dy~4}JK~bI zx^AJdw9&=vqJCBt@c>66R-|(z zF&RQ_K+(bDPNfqc#g*P_M%DHi_vxw0Hbe^O$MIH9qjBxJ6#2>FdSv!k(#045LtBP8 zCnil3bWp;sHNtaRZ428m$A7hFLzz`o$#FUP2qcrY1AdgVU`(lKhT8`FCOx{w;e6Ck zt?FhrLJM+7{SZi@1Jk<{EfhZBACClhGb1?Fo%rv>|dp*Pk+trI98%ci)yi8Qt~*) zB-1`|P}%bQ#pd$5@~zoo4>$Cs@)sg+S-PB==n6g$k4{4Vjv}@)=(_ts#bn(GPZ!x1gGn?Bb9lHtHu&ls58{}UG%HD zNH&oP=9nfMF;pNYc36~wyO`fz!}$!M%R}U5KEFysC0JnSvpQ16P6IVucM#o%w92n* zv^{}kRr~mtn~-xOgPDG?Rx76#TFNy0D;jE%jCG(-a|Ks9<-dnhz7CR^r!ZR`s8jFqC? z1plr8De?D5qSEtERQ0(t1R`g!L^}y^)UdDObBA+{7%|Fl$YJxbupiY)5TV=W;$LS~%NAn4YZS>U^%5GW<2B7nq6unfY!4I-AKxnsUHFu@>79n#yuyRwQQ^ z86%sKlSlsmCZEX;KP(ba(Gu2F!hH#A=~3Wj2+A;AN7gQbuzhuUV+GjL-_3MuQ3B5! zlhQ3L6L?;{yr%#YJj_VGVR~a4QL!MO0G}S=?P1KL zI<=`_sKRBUy>OKm!`orsaH6faa+;YlGWu{lnl0;1*_=v{`z!$wO(Eu_$6^U6J9(Eb zb@e5%<^@>+{_`Ie8p-JWOKuINHIzy`527@EsJNej!y-kV)0g2EN?mD)lQc07Vn^|< zzT?cWri-yzmL>6#O!C1?5>4-N(;ER7M5i;x3T?iNCn|+-y~>v&6m{WRavr02iHK|5 zOHkfvwF3I)V;MX`jE_;Cx~&Q_QYA~@d!5=?E<|jB?2EW>nCalKh8z*9uBu&!DfN!; zwa~sY6?3CP7d9fAUvMqr5oJ`VaHHocg2K0n4rAEeeH;4-wRVLqEcp`b?_pd8(p8>4 zXSW2gv`35FM|LL1jm=egswzET>30m1NAgRdHu%jfywu@9sA^@2^3@m?-1x}PWX45& zU8`rC3<($^dDy~1BS4BNV7JG8S&q2%I6~-UMNHoFzHSP-N-ga5ok|Bt9qFIwdza;h{2F zDWY|VOffi>-U_Mg-L++ZYkrcja29*zWE6jHXG|rJu7D;?6US`$yn5Ct#J_*#=Bdc- z%;?ek_R*Ds*9$be<@Tc=Ms>dU+m=&JiYc=n16pSrANNR6YpIVBKDNF0xNqEwiOK-f z+tKQ?g2=j;>>U^$!Wg0_CDIGgBVd>rvkNlZGUCmSf_`Q4Bz{Bex9Zpa z(Z-uhyKVEG=c=(*(SxA9WpLYCGp{^fXF?+jK0QPULM`GVRLa3>Y&w^+nHW;0?jp*g zF6o7_p+#K9Z;*bJ(@c98yc8VmL=mc}{laSi4Iv-6j--2xzF>DxaxalW#M;Kj{Sx(% zi_S||vi_NneDp>{k|6{8kNUByV~Hs{R!jUazW&O|gJ>950hN-d6xs_$dJ|hBj|^Ij z*23UH^2OC5iY8XdP?ZLy!=Eg}z9u8vPI<$_hMx;WKPzPdYzb_q=vghCXLGJ~Iukw+ zcO#rl8xwcZ7G>af7VmH>1h`-ek(3jBp7iS&{o!Z?qfoY=lxj9Ze{0R|xmB`Y;<7BV zHp6{5(xo7X!!e}4;qV=5rTacyo2}I4w5EzpYg=uo1S}+y=GpdOj!9EaD01C-*%thx z8e(c}T)<#$1{bCIVkdGvK1_a)PcT!8xIm<{e@bZ@5sQfLd&HyiDM-o`cYjF<7N?&#uk_W?p0H1s49)O!|tY;%+%TkLSB+a@w%&upe{4)4GB< zx7L&>F?piNf<3kpGM=5{ZgA-(Vw)!NN@xlHp^#vy>qnlqSO?tY^!FAKksc9@cGgsB zXQ_H!+VrIbx7%kV&@@Jgizssoq_QM~@798kTrzP#&0y+OP>F5WgD{a^YT8czoe5TK zdN^qVAn;6v`op?{Fucu=-F14o64n1lJdaFXk7}44&pSU+1^l&cE;g<7eh8DJaAwU^ zi#xDxlV?(?#(HmO*i19`s;1B}Bp)vMj^cYTd**YMlLn4S^*$b{;_Xgxw{Y#(i*;Dp zBi2V)GK`sNRgt#lpH%hZ3$Y|5x5};kUHdN0jRu5%=4TwR_47S-d%R0oXruHL0Z&i8 zxN42Uv+yv`@k$=TSw0=BHxH4Yj}qkm7F?+oyw+Mx*~UmbUG7FwG`K+ub2qgR&r#ki z5%*irY?ee*lvOEk-3m{+HnbW5<7aoZcdbS5MzM$VC1~^bF>#7di`$xts6=FacD59g zuB;(@<2!zjl#S>We;!oi8FFb5vCt8Z!}FkkzQ$qrK-^S+5^)10uf;5vk$KnFf?(I1D0HgZB`b)7d@B8M3hj~cKuu; zosPmgKVBVmJ$j!RkEj-spy{M*4O%)~)BuLKDVw$#%YI+TH7iJ+CK$|L#?Y1_xiQun zATaQGTjC}4dE-?7;m#OQ8SxopTwI>~gjtQRZGg-KqKjXZVqLk46+q^+$3HP*eJgV6 zlo7fUD$t}j{p1AnVNxI#ia7Is@&0R2j%7LD1{^h z*c6W0neINmVJ`&I%fFzMzu-wm_GQe7&v(>u9pHLWj+Z1AN|RXtQT^8y)J7H9Ur%SS zw`Iyua4Ijinfc14Uw!A;{~XU+Iu`@|DgPMQ`PM9s|A4A=B)_)|IwH)7W7_KagGhi@ z@NG@Z#W13#5^GC;x$=w<*{Zd_fHTsek&4E(xUo+ACRUlN@%Xvc@bD0tW`U?m z6`psJ{gEz-|Cr=F42Vb=#|CYfFn+Z)Yc^?L5e4qD&hG=8+Nc-Vd-`Ub?Nhu`h#muf z($tm`uNeSAMO~5u+FGk+J;xx>yuo~&J)t5wet85iKAkP*`q(L0p$LAIJ+SD0#NW-H z(^b(A@7^{1emwi3dyoxpi8CnqM|w%+ISg$AzE>8P%r)wtg=juGN_(!Q_twAY*jh7H zQY)`wB<_siAO!|Z`K+#y)5JuyZER@3B8AjYycGz<^f(>a|ETN(H;@ z>(b<)+Y!p>2E>^x)qZqLeuIDNYBSKS!-5CO?Zx)FQl_lW*L!hX50qQyE>-<~@2m3U z-Y2|vbP|%>%$37WEq?PRu59f74Y9cM^hTFf-=XWix{#Ax&V(HEZ1p39*_>0|&6H&W zZr9FK6CH<5clbx%!H-l}QVI4h#jl=xP)o)hdYiff5JGTVfTv#BhEJ1RC>5Ftzv)bsYku%0zF{R~oi;}u z#JW{|HRV&r%C|yKXA=9O?cvUC#N@*S^_!wJe=j$(wp{p0vJz&YY^j@|=_p|OJXmH5QQnk>pI%vm|NrgApQ zLSjoK0qTyueS@~yg>tcr&fT+3Nmk;n67CWw4R-6pUL<>`hUC*CT-1_pr8_yD;OlIG z{6W2>-T3{8^@Akux4Q|#++F8B^=CuxfRNAB#iN7rv5c*WnOM54#YC1+m`tXQnEYp#pGe~sP`SUpw zt~VmU)SaRR=cZ2)AG-A-L*VB{@4IR|;yKSoLgx^nCGUH;QRR-G3dq*L{>p@AUUJBM z-5Dxwo2{-q0U??Rr{bdSW7Z8-ZF({3;!ph|uAVgmN2dJ2ki%)J)eA?OtoRy&A)Xih z9)xJ8_wJVg-OyIdOJcJ}C+XZ#H_IZM$chmXW@nU++)HIIJU_#sr%RM3QN*{`H;aOF&N;SEfCC1a}3HywO8#&`o! zUmV!gWpE3tZw5kBq(~PutTPs-oQK~mj;x7~3vLmg?rkXe|1^A-%Cstc>iK5|yp zG)~bQm$Ks}?ONR2@5oxUMDt61>{`e?H4Jf9ofDRLSzU3for_OJSl3>9T@r}jyypz( zt`GWfl@pNmT58&Ua`kDEvHq2g=wJ#$Dm=k(V6PB)!_%#=T)VqYVs}`y1HXNcix+cG z-$+X3xflBPqT)zV17y6_RJt|lVSUF>uO7$igfiN+^th^09e2wUvbXJf`TLM3x*nMv zx1wSk;MA)T#mYzbHFlXHG^3)x^i%ov5KS`PNSlKf$r_P$r-O3H+y_NC7i=rG8a(aar+aXtAT+D zMD0F=3jjsA#%+b*pn!`49t!x~TOkDe${2s0As-QJ_MB8U-2@XuHWr=&)n{V#))lg7^eKDl5%58LXq_M{}L5P0otfV`c~|t?+8>U8Sj+QJ2hpMb zV9HDW{{{V0{8v%wOia?y08VZWeE-h#AEp0Oq03kIX(F}&fQ(%Lfc9UOnNXI4)6nvU z($MI1{wwXDI)VADe-->sYX4!zED}5r8iED@RH6d__|?5D<~+!FJL9g z>-=vQHzFc1^_SWIuJKp3&2*esF+5&l0Cb4&04V=9iFp>rU&{Y639p-#=f6v8TkY?p z{#h~qnN(a-11A_@eu|F?qVrTrBuSWoafRCa^_ mGjAFd&)ZP``wIRu{^8Trz`{n&3m`##_OSo}ab6JW=sy4#YJ>&= diff --git a/power_leasing/test/css/app.ca4b7f36.css b/power_leasing/test/css/app.ca4b7f36.css new file mode 100644 index 0000000..bec9ceb --- /dev/null +++ b/power_leasing/test/css/app.ca4b7f36.css @@ -0,0 +1 @@ +#app,body{margin:0;padding:0;box-sizing:border-box}#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#2c3e50}nav{padding:6px}nav a{font-weight:700;color:#2c3e50}nav a.router-link-exact-active{color:#42b983}.product-list[data-v-7050467e]{background:#f5f5f5;padding:24px}.container[data-v-7050467e]{width:80%;margin:0 auto;text-align:left}.container h1[data-v-7050467e]{font-size:24px;font-weight:700;margin-bottom:20px}.filter-section[data-v-7050467e]{display:flex;flex-direction:column;margin-bottom:20px;width:80%;margin-top:18px}.filter-row[data-v-7050467e]{display:flex;gap:12px;align-items:center}.product-list-grid[data-v-7050467e]{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:30px;margin-top:100px;display:flex;flex-wrap:wrap}.product-item[data-v-7050467e]{width:400px;border:1px solid #eee;border-radius:8px;padding:18px;background:#fff;display:flex;flex-direction:column;align-items:center;height:40vh}.product-image[data-v-7050467e]{width:68%;height:65%;-o-object-fit:cover;object-fit:cover;margin-bottom:12px}.product-info[data-v-7050467e]{width:100%}.product-footer[data-v-7050467e]{display:flex;justify-content:space-between;align-items:center;margin-top:8px}.right-meta[data-v-7050467e]{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.shop-name[data-v-7050467e]{color:#64748b;font-size:12px}.product-price[data-v-7050467e]{color:#e53e3e;font-weight:700;max-width:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.price-wrap[data-v-7050467e]{display:inline-flex;align-items:baseline;gap:6px}.unit[data-v-7050467e]{color:#999;font-size:12px}.product-sold[data-v-7050467e]{color:#64748b;font-size:12px}.paytypes[data-v-7050467e]{display:inline-flex;align-items:center;gap:8px}.paytype-icon[data-v-7050467e]{width:22px;height:22px;border-radius:4px;display:inline-block}.paytypes-label[data-v-7050467e]{color:#64748b;font-size:12px}.add-cart-btn[data-v-7050467e]{background:#42b983;color:#fff;border:none;border-radius:4px;padding:6px 12px;cursor:pointer;transition:background .2s}.add-cart-btn[data-v-7050467e]:hover{background:#369870}.empty-state[data-v-7050467e]{grid-column:1/-1;text-align:center;padding:60px 20px;color:#999}.empty-state i[data-v-7050467e]{font-size:48px;margin-bottom:16px;color:#ddd}.empty-state p[data-v-7050467e]{margin:8px 0;font-size:16px}.product-detail[data-v-3ba79d9c]{width:100%;margin:0 auto}[data-v-3ba79d9c] .in-cart-row{background:#fafafa}[data-v-3ba79d9c] .in-cart-row .el-checkbox.is-disabled .el-checkbox__inner{background-color:#f5f7fa;border-color:#dcdfe6}[data-v-3ba79d9c] .sold-row{background:#fff5f5}.loading[data-v-3ba79d9c]{text-align:center;padding:60px 20px;color:#666}.back-section[data-v-3ba79d9c]{margin-bottom:24px;text-align:left;margin:8px}.back-btn[data-v-3ba79d9c]{background:#6c757d;color:#fff;border:none;padding:10px 20px;border-radius:6px;cursor:pointer;font-size:14px;transition:background .3s ease}.back-btn[data-v-3ba79d9c]:hover{background:#5a6268}.detail-container[data-v-3ba79d9c]{width:100%;background:#fff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,.1);overflow:hidden}.product-content[data-v-3ba79d9c]{display:grid;grid-template-columns:1fr 1fr;gap:40px;padding:40px}.product-image-section[data-v-3ba79d9c]{display:flex;justify-content:center;align-items:center}.product-image[data-v-3ba79d9c]{max-width:100%;height:auto;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.1)}.product-info-section[data-v-3ba79d9c]{display:flex;flex-direction:column;gap:24px}.product-title[data-v-3ba79d9c]{font-size:28px;font-weight:700;color:#2c3e50;margin:0;line-height:1.3}.product-description[data-v-3ba79d9c]{font-size:16px;color:#666;line-height:1.6;margin:0}.product-price-section[data-v-3ba79d9c]{display:flex;align-items:center;gap:12px}.price-label[data-v-3ba79d9c]{font-size:16px;color:#666}.product-price[data-v-3ba79d9c]{font-size:32px;font-weight:700;color:#e74c3c}.price-strong[data-v-3ba79d9c]{font-weight:700;color:#e74c3c}.num-strong[data-v-3ba79d9c]{font-weight:inherit;color:inherit}.pay-methods[data-v-3ba79d9c]{display:flex;align-items:center;gap:12px;padding:12px 16px;margin:8px 10px 16px 10px;background:#f8fafc;border:1px solid #eef2f7;border-radius:8px}.pay-label[data-v-3ba79d9c]{color:#34495e;font-size:14px;font-weight:600;white-space:nowrap}.pay-list[data-v-3ba79d9c]{display:flex;align-items:center;flex-wrap:wrap;gap:10px 12px;margin:0;padding:0;list-style:none}.pay-item[data-v-3ba79d9c]{display:inline-flex;align-items:center}.pay-icon[data-v-3ba79d9c]{width:24px;height:24px;display:block;border-radius:4px;transition:transform .15s ease,box-shadow .15s ease}.pay-item-inner[data-v-3ba79d9c]{display:inline-flex;align-items:center;gap:8px}.pay-text[data-v-3ba79d9c]{font-size:12px;color:#2c3e50}.pay-icon[data-v-3ba79d9c]:hover{transform:translateY(-1px)}.pay-icon[data-v-3ba79d9c]:focus{outline:none;box-shadow:0 0 0 3px rgba(25,118,210,.2)}.filter-bar[data-v-3ba79d9c]{background:#fff;border:1px solid #eef2f7;border-radius:8px;padding:12px 16px;margin:0 10px 16px 10px}.filter-grid[data-v-3ba79d9c]{display:grid;grid-template-columns:repeat(3,minmax(260px,1fr));gap:14px 18px;align-items:end}.filter-cell[data-v-3ba79d9c]{display:flex;flex-direction:column;align-items:start;gap:6px}.filter-cell.center-title .filter-title[data-v-3ba79d9c]{text-align:center}.filter-title[data-v-3ba79d9c]{font-size:14px;color:#34495e;font-weight:600;margin-bottom:8px}.filter-control[data-v-3ba79d9c]{width:100%;max-width:320px}.range-controls[data-v-3ba79d9c]{display:flex;align-items:center;gap:8px}.range-controls[data-v-3ba79d9c] .el-input-number{width:150px}.pay-opt[data-v-3ba79d9c]{display:inline-flex;align-items:center;gap:8px}.filter-sep[data-v-3ba79d9c]{color:#9aa4b2}.filter-actions[data-v-3ba79d9c]{display:flex;align-items:center;gap:10px;grid-column:2/3}.filter-actions-inline[data-v-3ba79d9c]{display:inline-flex;align-items:center;gap:10px;margin-left:12px}@media (max-width:1200px){.filter-grid[data-v-3ba79d9c]{grid-template-columns:repeat(2,minmax(220px,1fr))}.filter-cell--span-2[data-v-3ba79d9c]{grid-column:1/span 1}.filter-actions[data-v-3ba79d9c]{grid-column:1/-1;justify-content:flex-end}}@media (max-width:768px){.filter-grid[data-v-3ba79d9c]{grid-template-columns:1fr}.filter-actions[data-v-3ba79d9c]{grid-column:1/2;justify-content:flex-end}}[data-v-3ba79d9c] .series-clickable-row{cursor:pointer}[data-v-3ba79d9c] .series-clickable-row>td{background:#f9fbff;padding-top:14px;padding-bottom:14px;border-bottom:1px solid #eef2f7}[data-v-3ba79d9c] .series-clickable-row:hover>td{background:#f0f6ff}[data-v-3ba79d9c] .el-table__expanded-cell{background:#fff}[data-v-3ba79d9c] .el-table__expanded-cell .el-table{background:#fff;border:1px solid #eef2f7;border-radius:8px;width:100%}.series-table[data-v-3ba79d9c] .el-table__header th{background:#f9fbff;color:#34495e;font-weight:600}.quantity-section[data-v-3ba79d9c]{display:flex;align-items:center;gap:16px}.quantity-label[data-v-3ba79d9c]{font-size:16px;color:#666;min-width:60px}.quantity-controls[data-v-3ba79d9c]{display:flex;align-items:center;border:1px solid #ddd;border-radius:6px;overflow:hidden}.quantity-btn[data-v-3ba79d9c]{background:#f8f9fa;border:none;padding:12px 16px;cursor:pointer;font-size:18px;font-weight:600;color:#495057;transition:background .3s ease}.quantity-btn[data-v-3ba79d9c]:hover:not(:disabled){background:#e9ecef}.quantity-btn[data-v-3ba79d9c]:disabled{opacity:.5;cursor:not-allowed}.quantity-input[data-v-3ba79d9c]{width:80px;padding:12px;border:none;text-align:center;font-size:16px;outline:none}.quantity-input[data-v-3ba79d9c]::-webkit-inner-spin-button,.quantity-input[data-v-3ba79d9c]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.quantity-input[type=number][data-v-3ba79d9c]{appearance:textfield;-webkit-appearance:none;-moz-appearance:textfield}.quantity-input[data-v-3ba79d9c]:focus{background:#f8f9fa}@media (max-width:768px){.product-content[data-v-3ba79d9c]{grid-template-columns:1fr;gap:24px;padding:24px}.product-detail[data-v-3ba79d9c]{padding:16px}.product-title[data-v-3ba79d9c]{font-size:24px}.product-price[data-v-3ba79d9c]{font-size:28px}.quantity-selector[data-v-3ba79d9c]{width:100px;height:32px}.quantity-btn[data-v-3ba79d9c]{width:32px;height:32px}.quantity-input[data-v-3ba79d9c]{height:32px;font-size:13px}.btn-icon[data-v-3ba79d9c]{font-size:16px}}.sortable[data-v-3ba79d9c]{display:inline-flex;align-items:center;gap:6px;cursor:pointer;color:#334155}.sortable[data-v-3ba79d9c]:hover{color:#1e293b}.sort-arrow[data-v-3ba79d9c]{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent}.sort-arrow.asc[data-v-3ba79d9c]{border-bottom:7px solid #64748b}.sort-arrow.desc[data-v-3ba79d9c]{border-top:7px solid #64748b}.sortable.active[data-v-3ba79d9c]{color:#2563eb}.sort-arrow.active.sort-arrow.asc[data-v-3ba79d9c]{border-bottom-color:#2563eb}.sort-arrow.active.sort-arrow.desc[data-v-3ba79d9c]{border-top-color:#2563eb}.amount-more[data-v-3ba79d9c]{font-size:12px;color:#94a3b8;margin-left:4px}.el-input__suffix[data-v-3ba79d9c],[data-v-3ba79d9c] .el-input__prefix{top:24%}[data-v-3ba79d9c] .el-input--mini .el-input__icon{line-height:0px}.cart-page[data-v-639b0fc8]{max-width:90vw;margin:0 auto;padding:20px;min-height:80vh}.page-title[data-v-639b0fc8]{text-align:center;color:#2c3e50;margin-bottom:30px;font-size:28px;font-weight:600}.loading[data-v-639b0fc8]{text-align:center;padding:60px 20px;color:#666}.empty-cart[data-v-639b0fc8]{text-align:center;padding:80px 20px;background:#fff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,.1)}.empty-icon[data-v-639b0fc8]{font-size:64px;margin-bottom:20px}.empty-cart h2[data-v-639b0fc8]{color:#2c3e50;margin-bottom:12px;font-size:24px}.empty-cart p[data-v-639b0fc8]{color:#666;margin-bottom:24px;font-size:16px}.shop-now-btn[data-v-639b0fc8]{display:inline-block;background:#42b983;color:#fff;text-decoration:none;padding:12px 24px;border-radius:8px;font-size:16px;font-weight:600;transition:background .3s ease}.shop-now-btn[data-v-639b0fc8]:hover{background:#3aa876}.cart-content[data-v-639b0fc8]{margin-top:12px}.cart-items[data-v-639b0fc8]{background:#fff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,.1);overflow:hidden}.cart-item[data-v-639b0fc8]{display:grid;grid-template-columns:auto 1fr auto auto auto;gap:20px;align-items:center;padding:20px;border-bottom:1px solid #eee}.cart-item[data-v-639b0fc8]:last-child{border-bottom:none}.item-image img[data-v-639b0fc8]{width:80px;height:80px;-o-object-fit:cover;object-fit:cover;border-radius:8px}.item-info[data-v-639b0fc8]{display:flex;flex-direction:column;gap:8px}.item-title[data-v-639b0fc8]{font-size:16px;font-weight:600;color:#2c3e50;margin:0}.item-price[data-v-639b0fc8]{font-size:18px;font-weight:700;color:#e74c3c}.item-quantity[data-v-639b0fc8]{display:flex;flex-direction:column;gap:8px;align-items:center}.quantity-label[data-v-639b0fc8]{font-size:14px;color:#666}.quantity-controls[data-v-639b0fc8]{display:flex;align-items:center;border:1px solid #ddd;border-radius:6px;overflow:hidden}.quantity-btn[data-v-639b0fc8]{background:#f8f9fa;border:none;padding:8px 12px;cursor:pointer;font-size:16px;font-weight:600;color:#495057;transition:background .3s ease}.quantity-btn[data-v-639b0fc8]:hover:not(:disabled){background:#e9ecef}.quantity-btn[data-v-639b0fc8]:disabled{opacity:.5;cursor:not-allowed}.quantity-input[data-v-639b0fc8]{width:60px;padding:8px;border:none;text-align:center;font-size:14px;outline:none}.item-total[data-v-639b0fc8]{text-align:center}.total-label[data-v-639b0fc8]{font-size:14px;color:#666}.total-price[data-v-639b0fc8]{font-size:18px;font-weight:700;color:#e74c3c}.item-actions[data-v-639b0fc8]{text-align:center}.remove-btn[data-v-639b0fc8]{background:#ff4757;color:#fff;border:none;padding:8px 16px;border-radius:6px;cursor:pointer;font-size:14px;transition:background .3s ease}.remove-btn[data-v-639b0fc8]:hover{background:#ff3742}.cart-summary[data-v-639b0fc8]{background:#fff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,.1);padding:24px;height:-moz-fit-content;height:fit-content;position:sticky;top:20px}.summary-title[data-v-639b0fc8]{font-size:20px;font-weight:600;color:#2c3e50;margin:0 0 20px 0;text-align:center}.summary-row[data-v-639b0fc8]{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid #eee;font-size:16px;color:#666}.summary-row[data-v-639b0fc8]:last-of-type{border-bottom:none}.total-row[data-v-639b0fc8]{font-size:18px;font-weight:600;color:#2c3e50;border-top:2px solid #eee;padding-top:16px;margin-top:16px}.total-amount[data-v-639b0fc8]{color:#e74c3c;font-size:24px}.summary-actions[data-v-639b0fc8]{display:flex;flex-direction:column;gap:12px;margin-top:24px}.clear-cart-btn[data-v-639b0fc8]{background:#6c757d;color:#fff;border:none;padding:12px 20px;border-radius:8px;cursor:pointer;font-size:16px;transition:background .3s ease}.clear-cart-btn[data-v-639b0fc8]:hover{background:#5a6268}.checkout-btn[data-v-639b0fc8]{background:#42b983;color:#fff;text-decoration:none;padding:16px 24px;border-radius:8px;text-align:center;font-size:18px;font-weight:600;transition:all .3s ease}.checkout-btn[data-v-639b0fc8]:hover:not(.disabled){background:#3aa876;transform:translateY(-2px)}.checkout-btn.disabled[data-v-639b0fc8]{background:#ccc;cursor:not-allowed;transform:none}.summary-inline[data-v-639b0fc8]{text-align:left}.price-strong[data-v-639b0fc8]{font-weight:700;color:#e74c3c}@media (max-width:768px){.cart-page[data-v-639b0fc8]{padding:16px}.page-title[data-v-639b0fc8]{font-size:24px;margin-bottom:24px}}.notice-content[data-v-639b0fc8]{text-align:left;color:#333}.notice-title[data-v-639b0fc8]{font-size:15px;font-weight:600;color:#333;margin:0;margin-top:18px}.notice-list[data-v-639b0fc8]{padding-left:18px;line-height:1.8;margin-top:10px}.notice-list li[data-v-639b0fc8]{margin-bottom:10px}.notice-ack[data-v-639b0fc8]{margin-top:12px;color:#e74c3c}.google-code-content[data-v-639b0fc8]{text-align:center;padding:20px 0}.verification-icon[data-v-639b0fc8]{margin-bottom:20px}.verification-title h3[data-v-639b0fc8]{color:#333;font-size:20px;font-weight:600;margin:0 0 8px 0}.verification-desc[data-v-639b0fc8]{color:#666;font-size:14px;line-height:1.5;margin:0 0 24px 0}.code-input-wrapper[data-v-639b0fc8]{margin-bottom:16px}.code-input[data-v-639b0fc8]{width:280px}.code-input[data-v-639b0fc8] .el-input__inner{font-size:18px;font-weight:600;letter-spacing:2px;text-align:center}.code-error[data-v-639b0fc8]{color:#f56c6c;font-size:14px;display:flex;align-items:center;justify-content:center;gap:4px}.dialog-footer[data-v-639b0fc8]{text-align:center}.amount-more[data-v-639b0fc8]{font-size:12px;color:#94a3b8;margin-left:4px}.num-strong[data-v-639b0fc8]{font-weight:inherit;color:inherit}.el-input__suffix[data-v-639b0fc8],[data-v-639b0fc8] .el-input__prefix{top:24%}[data-v-639b0fc8] .el-input--mini .el-input__icon{line-height:0px}[data-v-639b0fc8] .el-table .el-table__expand-icon{pointer-events:none}.checkout-page[data-v-c3bf12ce]{max-width:1200px;margin:0 auto;padding:20px}.page-title[data-v-c3bf12ce]{text-align:center;color:#2c3e50;margin-bottom:30px;font-size:28px;font-weight:600}.loading[data-v-c3bf12ce]{text-align:center;padding:60px 20px;color:#666}.empty-cart[data-v-c3bf12ce]{text-align:center;padding:80px 20px;background:#fff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,.1)}.empty-icon[data-v-c3bf12ce]{font-size:64px;margin-bottom:20px}.empty-cart h2[data-v-c3bf12ce]{color:#2c3e50;margin-bottom:12px;font-size:24px}.empty-cart p[data-v-c3bf12ce]{color:#666;margin-bottom:24px;font-size:16px}.shop-now-btn[data-v-c3bf12ce]{display:inline-block;background:#42b983;color:#fff;text-decoration:none;padding:12px 24px;border-radius:8px;font-size:16px;font-weight:600;transition:background .3s ease}.shop-now-btn[data-v-c3bf12ce]:hover{background:#3aa876}.checkout-content[data-v-c3bf12ce]{display:grid;grid-template-columns:1fr 1fr;gap:30px}.section-title[data-v-c3bf12ce]{font-size:20px;font-weight:600;color:#2c3e50;margin:0 0 20px 0;padding-bottom:12px;border-bottom:2px solid #eee}.order-summary[data-v-c3bf12ce]{background:#fff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,.1);padding:24px;height:-moz-fit-content;height:fit-content}.order-items[data-v-c3bf12ce]{margin-bottom:24px}.order-item[data-v-c3bf12ce]{display:grid;grid-template-columns:auto 1fr auto auto;gap:16px;align-items:center;padding:16px 0;border-bottom:1px solid #eee}.order-item[data-v-c3bf12ce]:last-child{border-bottom:none}.item-image img[data-v-c3bf12ce]{width:60px;height:60px;-o-object-fit:cover;object-fit:cover;border-radius:6px}.item-title[data-v-c3bf12ce]{font-size:14px;font-weight:600;color:#2c3e50;margin:0 0 4px 0}.item-price[data-v-c3bf12ce]{font-size:16px;font-weight:700;color:#e74c3c}.item-quantity[data-v-c3bf12ce]{text-align:center}.quantity-label[data-v-c3bf12ce]{font-size:12px;color:#666}.quantity-value[data-v-c3bf12ce]{font-size:14px;font-weight:600;color:#2c3e50}.item-total[data-v-c3bf12ce]{text-align:right}.total-label[data-v-c3bf12ce]{font-size:12px;color:#666}.total-price[data-v-c3bf12ce]{font-size:16px;font-weight:700;color:#e74c3c}.order-total[data-v-c3bf12ce]{border-top:2px solid #eee;padding-top:20px}.total-row[data-v-c3bf12ce]{display:flex;justify-content:space-between;align-items:center;padding:8px 0;font-size:14px;color:#666}.final-total[data-v-c3bf12ce]{font-size:18px;font-weight:600;color:#2c3e50;border-top:1px solid #eee;padding-top:16px;margin-top:16px}.final-amount[data-v-c3bf12ce]{color:#e74c3c;font-size:24px}.checkout-form[data-v-c3bf12ce]{background:#fff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,.1);padding:24px}.form[data-v-c3bf12ce]{display:flex;flex-direction:column;gap:20px}.form-row[data-v-c3bf12ce]{display:grid;grid-template-columns:1fr 1fr;gap:20px}.form-group[data-v-c3bf12ce]{display:flex;flex-direction:column;gap:8px}.form-label[data-v-c3bf12ce]{font-size:14px;font-weight:600;color:#2c3e50}.form-input[data-v-c3bf12ce],.form-textarea[data-v-c3bf12ce]{padding:12px;border:1px solid #ddd;border-radius:6px;font-size:14px;transition:border-color .3s ease}.form-input[data-v-c3bf12ce]:focus,.form-textarea[data-v-c3bf12ce]:focus{outline:none;border-color:#42b983;box-shadow:0 0 0 3px rgba(66,185,131,.1)}.form-textarea[data-v-c3bf12ce]{resize:vertical;min-height:80px}.error-message[data-v-c3bf12ce]{color:#e74c3c;font-size:12px;margin-top:4px}.form-actions[data-v-c3bf12ce]{display:flex;gap:16px;margin-top:20px}.back-btn[data-v-c3bf12ce]{background:#6c757d;color:#fff;text-decoration:none;padding:14px 24px;border-radius:8px;font-size:16px;font-weight:600;transition:background .3s ease;text-align:center;flex:1}.back-btn[data-v-c3bf12ce]:hover{background:#5a6268}.submit-btn[data-v-c3bf12ce]{background:#42b983;color:#fff;border:none;padding:14px 24px;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s ease;flex:2}.submit-btn[data-v-c3bf12ce]:hover:not(:disabled){background:#3aa876;transform:translateY(-2px)}.submit-btn[data-v-c3bf12ce]:disabled{background:#ccc;cursor:not-allowed;transform:none}@media (max-width:768px){.checkout-content[data-v-c3bf12ce]{grid-template-columns:1fr;gap:20px}.form-row[data-v-c3bf12ce]{grid-template-columns:1fr;gap:16px}.form-actions[data-v-c3bf12ce]{flex-direction:column}.checkout-page[data-v-c3bf12ce]{padding:16px}.page-title[data-v-c3bf12ce]{font-size:24px;margin-bottom:24px}.order-item[data-v-c3bf12ce]{grid-template-columns:1fr;gap:12px;text-align:center}.item-image img[data-v-c3bf12ce]{width:80px;height:80px}}.account-page[data-v-59d86c16]{padding:20px}.account-header[data-v-59d86c16]{background:#fff;border-radius:8px;padding:16px 20px;margin-bottom:16px;text-align:left;padding-left:3vw}.title[data-v-59d86c16]{margin:0;font-size:20px;font-weight:700;color:#2c3e50}.account-layout[data-v-59d86c16]{display:grid;grid-template-columns:220px 1fr;gap:16px}.sidebar[data-v-59d86c16]{background:#fff;border:1px solid #eee;border-radius:8px;padding:12px;min-height:80vh}.side-nav[data-v-59d86c16]{display:flex;flex-direction:column;gap:8px}.user-role[data-v-59d86c16]{display:flex;gap:8px;margin-bottom:8px;margin-top:18px}.role-button[data-v-59d86c16]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#f6f8fa;border:1px solid #e5e7eb;border-radius:6px;padding:6px 10px;color:#2c3e50;cursor:pointer}.role-button.active[data-v-59d86c16]{background:#42b983;border-color:#42b983;color:#fff}.role-button[data-v-59d86c16]:focus{outline:2px solid #42b98333;outline-offset:2px}.user-info-card[data-v-59d86c16]{display:flex;align-items:center;justify-content:center;box-sizing:border-box;gap:10px;padding:12px;background:#f8fafc;border:1px solid #eee;border-radius:8px;margin-bottom:4px}.avatar[data-v-59d86c16]{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#42b983,#67c23a);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px}.user-email[data-v-59d86c16]{font-size:14px;color:#2c3e50;font-weight:600}.side-link[data-v-59d86c16]{display:block;padding:10px 12px;color:#2c3e50;text-decoration:none;border-radius:6px;transition:background .2s}.side-link[data-v-59d86c16]:hover{background:#f6f8fa}.side-link.active[data-v-59d86c16]{background:#42b983;color:#fff}.content[data-v-59d86c16]{background:#fff;border:1px solid #eee;border-radius:8px;padding:16px;min-height:420px}@media (max-width:768px){.account-layout[data-v-59d86c16]{grid-template-columns:1fr}}.wallet-container[data-v-75ddb61b]{max-width:800px;margin:0 auto;padding:20px}.wallet-toolbar[data-v-75ddb61b]{display:flex;justify-content:flex-end;margin-bottom:12px}.create-wallet-btn[data-v-75ddb61b]{background:linear-gradient(135deg,#409eff,#36cfc9);border:none;color:#fff;font-weight:600;border-radius:8px;box-shadow:0 6px 18px rgba(64,158,255,.25)}.create-wallet-btn[data-v-75ddb61b]:hover{filter:brightness(1.05)}.wallet-card-section[data-v-75ddb61b]{max-height:600px;overflow-y:auto;padding:8px}.wallet-card[data-v-75ddb61b]{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:12px;padding:16px;margin-bottom:12px;color:#fff;box-shadow:0 8px 32px rgba(102,126,234,.3)}.wallet-header[data-v-75ddb61b]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.wallet-title[data-v-75ddb61b]{font-size:18px;font-weight:700;margin:0}.wallet-balance[data-v-75ddb61b]{text-align:right;display:flex;flex-direction:row;align-items:center;gap:16px}.balance-item[data-v-75ddb61b]{display:flex;flex-direction:row;align-items:center;gap:8px}.balance-label[data-v-75ddb61b]{display:inline-block;font-size:16px;opacity:.85;margin:0}.balance-amount[data-v-75ddb61b]{font-size:20px;font-weight:700;font-family:Monaco,Menlo,monospace}.balance-amount.frozen[data-v-75ddb61b]{font-size:20px;opacity:.9;color:#ffa940}.wallet-actions[data-v-75ddb61b]{display:flex;gap:16px;justify-content:right}.action-btn[data-v-75ddb61b]{width:100px;height:30px;font-size:13px;font-weight:600;border-radius:8px;border:none;transition:all .3s ease;display:flex;align-items:center;justify-content:center}.recharge-btn[data-v-75ddb61b]{background:hsla(0,0%,100%,.2);color:#fff;border:2px solid hsla(0,0%,100%,.3)}.recharge-btn[data-v-75ddb61b]:hover{background:hsla(0,0%,100%,.3);transform:translateY(-2px)}.withdraw-btn[data-v-75ddb61b]{background:hsla(0,0%,100%,.2);color:#fff;border:2px solid hsla(0,0%,100%,.3)}.withdraw-btn[data-v-75ddb61b]:hover{background:hsla(0,0%,100%,.3);transform:translateY(-2px)}.withdraw-inline-btn[data-v-75ddb61b]{background:hsla(0,0%,100%,.2);color:#fff;border:2px solid hsla(0,0%,100%,.3)}.withdraw-inline-btn[data-v-75ddb61b]:hover{background:hsla(0,0%,100%,.3);transform:translateY(-1px)}.transaction-section[data-v-75ddb61b]{background:#fff;border-radius:12px;padding:20px;box-shadow:0 2px 12px rgba(0,0,0,.1)}.section-title[data-v-75ddb61b]{font-size:18px;margin:0 0 16px 0;text-align:left}.transaction-list[data-v-75ddb61b]{max-height:none;overflow-y:visible;display:flex;flex-direction:column;gap:6px;padding-top:4px;padding-bottom:4px}.transaction-item[data-v-75ddb61b]{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid #f0f0f0;transition:background-color .2s ease}.transaction-item[data-v-75ddb61b]:hover{background-color:#f8f9fa;border-radius:6px;padding-left:6px;padding-right:6px}.transaction-item[data-v-75ddb61b]:last-child{border-bottom:none}.transaction-info[data-v-75ddb61b]{display:flex;flex-direction:column;gap:4px}.transaction-status[data-v-75ddb61b]{align-self:flex-start}.transaction-type[data-v-75ddb61b]{font-weight:500;color:#333;font-size:14px}.transaction-time[data-v-75ddb61b]{font-size:12px;color:#999}.transaction-amount[data-v-75ddb61b]{font-weight:600;font-size:16px;font-family:Monaco,Menlo,monospace}.transaction-amount.positive[data-v-75ddb61b]{color:#52c41a}.transaction-amount.negative[data-v-75ddb61b]{color:#ff4d4f}.empty-state[data-v-75ddb61b]{text-align:center;color:#999;padding:40px 0;font-size:14px}.dialog-footer[data-v-75ddb61b]{text-align:right}.dialog-footer .el-button[data-v-75ddb61b]{margin-left:8px}@media (max-width:768px){.wallet-container[data-v-75ddb61b]{padding:16px}.wallet-card[data-v-75ddb61b]{padding:20px}.wallet-header[data-v-75ddb61b]{flex-direction:column;align-items:flex-start;gap:16px}.wallet-balance[data-v-75ddb61b]{text-align:left;align-items:flex-start}.balance-item[data-v-75ddb61b]{align-items:flex-start}.balance-amount[data-v-75ddb61b]{font-size:28px}.wallet-actions[data-v-75ddb61b]{flex-direction:column}.action-btn[data-v-75ddb61b]{width:100%}}.recharge-content[data-v-75ddb61b]{padding:0}.qr-code-section[data-v-75ddb61b],.recharge-notice[data-v-75ddb61b],.wallet-address-section[data-v-75ddb61b]{margin-bottom:24px}.section-title[data-v-75ddb61b]{font-size:16px;font-weight:600;color:#333;margin:0 0 12px 0}.address-container[data-v-75ddb61b]{display:flex;gap:8px;margin-bottom:8px}.address-input[data-v-75ddb61b]{flex:1}.address-input .el-input__inner[data-v-75ddb61b]{font-family:Monaco,Menlo,monospace;font-size:12px;background-color:#f8f9fa}.charge-meta[data-v-75ddb61b]{display:flex;gap:8px;align-items:center;margin-bottom:10px;flex-wrap:wrap}.meta-tag[data-v-75ddb61b]{border-radius:14px}.meta-title[data-v-75ddb61b]{margin-left:4px;opacity:.9}.meta-val[data-v-75ddb61b]{margin-left:2px;font-weight:700;letter-spacing:.3px}.copy-btn[data-v-75ddb61b]{flex-shrink:0}.address-tip[data-v-75ddb61b]{color:#666;margin:0}.qr-code-container[data-v-75ddb61b]{text-align:center}.qr-code[data-v-75ddb61b]{display:inline-block;padding:16px;background:#fff;border:1px solid #e0e0e0;border-radius:8px;margin-bottom:8px;box-shadow:0 2px 8px rgba(0,0,0,.1)}.qr-code canvas[data-v-75ddb61b]{display:block;border-radius:4px}.qr-tip[data-v-75ddb61b]{font-size:12px;color:#666;margin:0}.recharge-notice[data-v-75ddb61b]{background:#f8f9fa;padding:16px;border-radius:8px;border-left:4px solid #409eff}.notice-list[data-v-75ddb61b]{margin:0;padding-left:16px;font-size:13px;color:#666;line-height:1.6}.notice-list li[data-v-75ddb61b]{margin-bottom:4px;text-align:left}.notice-list li[data-v-75ddb61b]:last-child{margin-bottom:0}.balance-info[data-v-75ddb61b]{font-size:12px;color:#666;margin-top:4px;text-align:left}.balance-total[data-v-75ddb61b]{margin-bottom:4px;font-weight:600}.balance-row[data-v-75ddb61b]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.divider[data-v-75ddb61b]{color:#ccc}.frozen-info[data-v-75ddb61b]{color:#e6a23c}.balance-tip-icon[data-v-75ddb61b],.frozen-tip-icon[data-v-75ddb61b]{margin-right:4px;color:#ffd666;cursor:pointer}.frozen-tip[data-v-75ddb61b]{font-size:11px;color:#999;margin-left:4px}.fee-info[data-v-75ddb61b]{font-size:12px;color:#e6a23c;margin-top:4px;text-align:left}.actual-amount-info[data-v-75ddb61b]{font-size:12px;color:#67c23a;margin-top:4px;text-align:left;font-weight:500}.address-tip[data-v-75ddb61b]{font-size:12px;color:#f56c6c;margin-top:4px;line-height:1.4;text-align:left}.google-code-tip[data-v-75ddb61b]{font-size:12px;color:#409eff;margin-top:4px;line-height:1.4;text-align:left}.el-form-item[data-v-75ddb61b]{margin-bottom:20px}.el-form-item__label[data-v-75ddb61b]{font-weight:500;color:#333}.el-textarea__inner[data-v-75ddb61b]{font-family:Monaco,Menlo,monospace;font-size:12px;line-height:1.4}.el-input-group__append[data-v-75ddb61b]{background:#f8f9fa;color:#666;font-weight:500}.transaction-list[data-v-75ddb61b]::-webkit-scrollbar{width:6px}.transaction-list[data-v-75ddb61b]::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.transaction-list[data-v-75ddb61b]::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.transaction-list[data-v-75ddb61b]::-webkit-scrollbar-thumb:hover{background:#a8a8a8}[data-v-75ddb61b] .el-input.is-disabled .el-input__inner{color:rgba(0,0,0,.65)}.recharge-record-container[data-v-5cf693fa]{max-width:1200px;margin:0 auto;padding:20px}.page-header[data-v-5cf693fa]{margin-bottom:24px}.page-title[data-v-5cf693fa]{font-size:28px;font-weight:700;color:#333;margin:0 0 8px 0}.page-subtitle[data-v-5cf693fa]{font-size:14px;color:#666;margin:0}.tab-container[data-v-5cf693fa]{background:#fff;border-radius:12px;box-shadow:0 2px 12px rgba(0,0,0,.1);overflow:hidden;padding:18px;height:70vh}.tab-content[data-v-5cf693fa]{padding:20px}.list-header[data-v-5cf693fa]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #f0f0f0}.list-title[data-v-5cf693fa]{font-size:16px;font-weight:600;color:#333}.recharge-list[data-v-5cf693fa]{display:flex;flex-direction:column;gap:12px;overflow-y:auto;height:400px}.recharge-item[data-v-5cf693fa]{background:#f8f9fa;border-radius:8px;padding:16px;cursor:pointer;transition:all .3s ease;border:1px solid transparent}.recharge-item[data-v-5cf693fa]:hover{background:#e9ecef;border-color:#409eff;transform:translateY(-2px);box-shadow:0 4px 12px rgba(64,158,255,.15)}.recharge-item.pending[data-v-5cf693fa]{border-left:4px solid #e6a23c}.recharge-item.success[data-v-5cf693fa]{border-left:4px solid #67c23a}.recharge-item.failed[data-v-5cf693fa]{border-left:4px solid #f56c6c}.item-main[data-v-5cf693fa]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.item-left .amount[data-v-5cf693fa]{font-size:18px;font-weight:600;color:#333;margin-bottom:4px}.item-left .chain[data-v-5cf693fa]{font-size:12px;color:#666}.item-right[data-v-5cf693fa]{text-align:right}.status[data-v-5cf693fa]{display:flex;align-items:center;gap:4px;font-size:14px;font-weight:500;margin-bottom:4px}.pending-status[data-v-5cf693fa]{color:#e6a23c}.success-status[data-v-5cf693fa]{color:#67c23a}.failed-status[data-v-5cf693fa]{color:#f56c6c}.time[data-v-5cf693fa]{font-size:12px;color:#999}.item-footer[data-v-5cf693fa]{display:flex;justify-content:space-between;align-items:center}.footer-left[data-v-5cf693fa]{display:flex;flex-direction:column;gap:4px;flex:1}.address[data-v-5cf693fa]{font-family:Monaco,Menlo,monospace;font-size:12px;color:#666;text-align:left}.tx-hash[data-v-5cf693fa]{display:flex;align-items:center;gap:4px;font-family:Monaco,Menlo,monospace;font-size:11px;color:#409eff;background:rgba(64,158,255,.1);padding:2px 6px;border-radius:4px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tx-hash i[data-v-5cf693fa]{font-size:10px}.empty-state[data-v-5cf693fa]{text-align:center;padding:40px 20px;color:#999}.empty-state i[data-v-5cf693fa]{font-size:48px;margin-bottom:16px;display:block}.empty-state p[data-v-5cf693fa]{margin:0;font-size:14px}.detail-content[data-v-5cf693fa]{max-height:500px;overflow-y:auto}.detail-section[data-v-5cf693fa]{margin-bottom:24px}.section-title[data-v-5cf693fa]{font-size:16px;font-weight:600;color:#333;margin:0 0 12px 0;padding-bottom:8px;border-bottom:1px solid #f0f0f0}.detail-list[data-v-5cf693fa]{display:flex;flex-direction:column;gap:16px}.detail-row[data-v-5cf693fa]{display:flex;align-items:center;gap:16px;padding:12px 0;border-bottom:1px solid #f5f5f5}.detail-row[data-v-5cf693fa]:last-child{border-bottom:none}.detail-label[data-v-5cf693fa]{font-size:14px;color:#666;font-weight:500;min-width:80px;flex-shrink:0;text-align:right}.detail-value[data-v-5cf693fa]{font-size:14px;color:#333;flex:1;word-break:break-all;text-align:left}.detail-value.amount[data-v-5cf693fa]{font-weight:600;font-family:Monaco,Menlo,monospace;color:#e74c3c}.detail-value.address[data-v-5cf693fa]{font-family:Monaco,Menlo,monospace;word-break:break-all}.address-container[data-v-5cf693fa]{display:flex;align-items:center;gap:8px;flex:1}.address-container .detail-value[data-v-5cf693fa]{flex:1;word-break:break-all}@media (max-width:768px){.recharge-record-container[data-v-5cf693fa]{padding:16px}.page-title[data-v-5cf693fa]{font-size:24px}.detail-row[data-v-5cf693fa]{flex-direction:column;align-items:flex-start;gap:8px}.detail-label[data-v-5cf693fa]{min-width:auto}.item-main[data-v-5cf693fa]{flex-direction:column;align-items:flex-start;gap:8px}.item-right[data-v-5cf693fa]{text-align:left}}.detail-content[data-v-5cf693fa]::-webkit-scrollbar{width:6px}.detail-content[data-v-5cf693fa]::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.detail-content[data-v-5cf693fa]::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.detail-content[data-v-5cf693fa]::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.withdrawal-history-container[data-v-37492658]{max-width:1200px;margin:0 auto;padding:20px}.page-header[data-v-37492658]{margin-bottom:24px}.page-title[data-v-37492658]{font-size:28px;font-weight:700;color:#333;margin:0 0 8px 0}.page-subtitle[data-v-37492658]{font-size:14px;color:#666;margin:0}.tab-container[data-v-37492658]{background:#fff;border-radius:12px;box-shadow:0 2px 12px rgba(0,0,0,.1);overflow:hidden;padding:18px}.tab-content[data-v-37492658]{padding:20px}.list-header[data-v-37492658]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #f0f0f0}.list-title[data-v-37492658]{font-size:16px;font-weight:600;color:#333}.withdrawal-list[data-v-37492658]{display:flex;flex-direction:column;gap:12px;height:400px;overflow-y:auto}.withdrawal-item[data-v-37492658]{background:#f8f9fa;border-radius:8px;padding:16px;cursor:pointer;transition:all .3s ease;border:1px solid transparent}.withdrawal-item[data-v-37492658]:hover{background:#e9ecef;border-color:#409eff;transform:translateY(-2px);box-shadow:0 4px 12px rgba(64,158,255,.15)}.withdrawal-item.pending[data-v-37492658]{border-left:4px solid #e6a23c}.withdrawal-item.success[data-v-37492658]{border-left:4px solid #67c23a}.withdrawal-item.failed[data-v-37492658]{border-left:4px solid #f56c6c}.item-main[data-v-37492658]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.item-left .amount[data-v-37492658]{font-size:18px;font-weight:600;color:#333;margin-bottom:4px}.item-left .chain[data-v-37492658]{font-size:12px;color:#666}.item-right[data-v-37492658]{text-align:right}.status[data-v-37492658]{display:flex;align-items:center;gap:4px;font-size:14px;font-weight:500;margin-bottom:4px}.pending-status[data-v-37492658]{color:#e6a23c}.success-status[data-v-37492658]{color:#67c23a}.failed-status[data-v-37492658]{color:#f56c6c}.time[data-v-37492658]{font-size:12px;color:#999}.item-footer[data-v-37492658]{display:flex;justify-content:space-between;align-items:center}.footer-left[data-v-37492658]{display:flex;flex-direction:column;gap:4px;flex:1}.address[data-v-37492658]{font-family:Monaco,Menlo,monospace;font-size:12px;color:#666;text-align:left}.tx-hash[data-v-37492658]{display:flex;align-items:center;gap:4px;font-family:Monaco,Menlo,monospace;font-size:11px;color:#409eff;background:rgba(64,158,255,.1);padding:2px 6px;border-radius:4px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tx-hash i[data-v-37492658]{font-size:10px}.empty-state[data-v-37492658]{text-align:center;padding:40px 20px;color:#999}.empty-state i[data-v-37492658]{font-size:48px;margin-bottom:16px;display:block}.empty-state p[data-v-37492658]{margin:0;font-size:14px}.detail-content[data-v-37492658]{max-height:500px;overflow-y:auto}.detail-section[data-v-37492658]{margin-bottom:24px}.section-title[data-v-37492658]{font-size:16px;font-weight:600;color:#333;margin:0 0 12px 0;padding-bottom:8px;border-bottom:1px solid #f0f0f0}.detail-list[data-v-37492658]{display:flex;flex-direction:column;gap:16px}.detail-row[data-v-37492658]{display:flex;align-items:center;gap:16px;padding:12px 0;border-bottom:1px solid #f5f5f5}.detail-row[data-v-37492658]:last-child{border-bottom:none}.detail-label[data-v-37492658]{font-size:14px;color:#666;font-weight:500;min-width:80px;flex-shrink:0;text-align:right}.detail-value[data-v-37492658]{font-size:14px;color:#333;flex:1;word-break:break-all;text-align:left}.detail-value.amount[data-v-37492658]{font-weight:600;font-family:Monaco,Menlo,monospace;color:#e74c3c}.detail-value.address[data-v-37492658]{font-family:Monaco,Menlo,monospace;word-break:break-all}.address-container[data-v-37492658]{display:flex;align-items:center;gap:8px}.address-container .detail-value[data-v-37492658]{flex:1;word-break:break-all}@media (max-width:768px){.withdrawal-history-container[data-v-37492658]{padding:16px}.page-title[data-v-37492658]{font-size:24px}.detail-row[data-v-37492658]{flex-direction:column;align-items:flex-start;gap:8px}.detail-label[data-v-37492658]{min-width:auto}.item-main[data-v-37492658]{flex-direction:column;align-items:flex-start;gap:8px}.item-right[data-v-37492658]{text-align:left}}.detail-content[data-v-37492658]::-webkit-scrollbar{width:6px}.detail-content[data-v-37492658]::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.detail-content[data-v-37492658]::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.detail-content[data-v-37492658]::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.receipt-page[data-v-bd46f398]{margin:0;box-sizing:border-box;overflow-x:hidden}.card[data-v-bd46f398]{background:#fff;border:1px solid #eee;border-radius:10px;padding:12px;box-shadow:0 4px 18px rgba(0,0,0,.04);overflow-x:auto}.card-header[data-v-bd46f398]{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.card-title[data-v-bd46f398]{margin:0;font-size:18px;font-weight:700;color:#2c3e50}.card-actions[data-v-bd46f398]{display:flex;align-items:center;gap:8px}.search-input[data-v-bd46f398]{width:220px}.loading[data-v-bd46f398]{text-align:center;color:#666;padding:40px 0}.empty[data-v-bd46f398]{text-align:center;color:#999;padding:40px 0}.empty-icon[data-v-bd46f398]{font-size:48px;margin-bottom:8px}.amount-green[data-v-bd46f398]{color:#16a34a;font-weight:700}.amount-red[data-v-bd46f398]{color:#ef4444;font-weight:700}.amount-more[data-v-bd46f398]{font-size:12px;color:#94a3b8;margin-left:4px}.type-green[data-v-bd46f398]{color:#16a34a}.type-red[data-v-bd46f398]{color:#ef4444}.pagination[data-v-bd46f398]{display:flex;justify-content:flex-end;margin-top:8px}.detail-grid[data-v-bd46f398]{display:grid;grid-template-columns:1fr 1fr;gap:12px 24px;padding:8px 4px}.detail-item[data-v-bd46f398]{display:grid;grid-template-columns:90px 1fr;align-items:center;gap:8px}.detail-item-full[data-v-bd46f398]{grid-column:1/-1}.detail-label[data-v-bd46f398]{color:#666;font-size:13px;text-align:left}.detail-value[data-v-bd46f398]{color:#333;font-size:13px;text-align:left}.detail-value.address[data-v-bd46f398]{font-family:Monaco,Menlo,monospace;word-break:break-all}.mono-ellipsis[data-v-bd46f398]{font-family:Monaco,Menlo,monospace;max-width:360px;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.clickable-row:hover>td[data-v-bd46f398]{background:#f8fafc!important;cursor:pointer}.detail-panel[data-v-bd46f398]{background:#f9fafb;border:1px dashed #e5e7eb;border-radius:8px;padding:12px}.mono[data-v-bd46f398]{font-family:Monaco,Menlo,monospace}.badge[data-v-bd46f398]{display:inline-block;padding:2px 8px;border-radius:12px;background:#eef2ff;color:#3b82f6;font-size:12px;line-height:18px}.badge-blue[data-v-bd46f398]{background:#eff6ff;color:#2563eb}.panel-title[data-v-7f00bb86]{margin:0 0 12px 0;font-size:18px;font-weight:700}.row[data-v-7f00bb86]{display:grid;grid-template-columns:100px 1fr;gap:12px;align-items:center;margin-bottom:12px}.label[data-v-7f00bb86]{color:#666;text-align:right}.textarea-wrapper[data-v-7f00bb86]{position:relative}.char-count[data-v-7f00bb86]{position:absolute;bottom:8px;right:12px;font-size:12px;color:#999;background:hsla(0,0%,100%,.8);padding:2px 6px;border-radius:4px;pointer-events:none}.char-count.char-limit[data-v-7f00bb86]{color:#f56c6c;font-weight:600}.page-title[data-v-42f7ea7c]{text-align:left;margin-bottom:16px;font-size:20px;padding-left:4px}.config-form[data-v-42f7ea7c]{max-width:720px;margin:0;background:#fff;padding:8px 12px}.config-form .el-form-item[data-v-42f7ea7c]{margin-bottom:18px}.config-form .el-input[data-v-42f7ea7c],.config-form .el-select[data-v-42f7ea7c]{width:420px}.radio-group[data-v-42f7ea7c]{display:inline-flex;align-items:center;gap:24px;width:420px;height:40px;padding-left:12px;box-sizing:border-box}.tip[data-v-42f7ea7c]{color:#999;font-size:12px;margin-top:6px}.custom-node[data-v-42f7ea7c]{display:inline-flex;align-items:center;gap:8px}.leaf-checked[data-v-42f7ea7c]{color:#409eff;font-weight:700}.node-label[data-v-42f7ea7c]{line-height:20px}.selected-coins[data-v-42f7ea7c]{display:flex;flex-wrap:wrap;gap:8px;min-height:32px;align-items:center;margin-left:79px}.selected-coins .el-tag[data-v-42f7ea7c]{border-radius:4px}.selected-coins .placeholder[data-v-42f7ea7c]{color:#c0c4cc}.price-input[data-v-42f7ea7c] .el-input__inner:focus{border-color:#f56c6c!important;box-shadow:inset 0 0 0 1px #f56c6c}.panel-title[data-v-031e6e83]{margin:0 0 12px 0;font-size:18px;font-weight:700}.shop-card[data-v-031e6e83]{border-radius:8px}.shop-row[data-v-031e6e83]{display:grid;grid-template-columns:120px 1fr;gap:16px;align-items:center}.shop-cover img[data-v-031e6e83]{width:120px;height:120px;-o-object-fit:cover;object-fit:cover;border-radius:8px;border:1px solid #eee}.shop-info[data-v-031e6e83]{display:flex;flex-direction:column;gap:8px}.shop-title[data-v-031e6e83]{display:flex;align-items:center;gap:8px;font-weight:700;font-size:16px}.desc[data-v-031e6e83]{color:#666}.meta[data-v-031e6e83]{color:#999;display:flex;gap:16px;font-size:12px}.actions[data-v-031e6e83]{margin-top:8px;display:flex;gap:8px}.guide-card[data-v-031e6e83]{border:1px solid #eef2f7;border-radius:10px}.guide-header[data-v-031e6e83]{text-align:center;font-weight:700;color:#2c3e50;background:#f9fafb;border-bottom:1px solid #eef2f7;padding:10px 12px;border-radius:10px 10px 0 0}.guide-content[data-v-031e6e83]{padding:4px 6px;text-align:left}.guide-card .hierarchy[data-v-031e6e83]{margin:0 0 8px 0;color:#111827;font-weight:700;font-size:14px}.guide-steps[data-v-031e6e83]{margin:0;padding-left:18px;color:#374151}.guide-steps li[data-v-031e6e83]{line-height:1.9;margin:6px 0}.guide-steps b[data-v-031e6e83]{color:#111827}.guide-note[data-v-031e6e83]{margin-top:10px;color:#6b7280;font-size:13px;background:#f9fafb;border:1px dashed #e5e7eb;padding:8px 10px;border-radius:8px}.coin-list[data-v-031e6e83]{display:flex;align-items:center;gap:8px}.coin-img[data-v-031e6e83]{width:20px;height:20px;border-radius:4px;display:inline-block}.el-dialog__body .row{margin-bottom:12px;display:grid;grid-template-columns:96px 1fr;-moz-column-gap:12px;column-gap:12px;align-items:center}.el-dialog__body .row .el-radio-group{display:inline-flex;align-items:center;gap:24px;padding-left:0;margin-left:0}.el-dialog__body .label{text-align:right;color:#666;font-weight:500}.el-dialog__footer{padding-top:4px}.selected-coin-list{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-start}.selected-coin-list .el-tag{margin-right:0}.product-new[data-v-538996de]{padding:20px;max-width:60vw;margin:0 auto}.product-form-card[data-v-538996de]{box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.card-header[data-v-538996de]{text-align:center}.card-header h2[data-v-538996de]{margin:0 0 8px 0;color:#303133;font-size:24px;font-weight:600}.subtitle[data-v-538996de]{margin:0;color:#909399;font-size:14px}.product-form[data-v-538996de]{margin-top:20px}.product-form .el-form-item .el-radio-group[data-v-538996de]{display:inline-flex;align-items:center;gap:24px;padding-left:0;margin-left:0}.product-form .align-like-input .el-form-item__content[data-v-538996de]{padding-left:15px}.unit-text[data-v-538996de]{margin-left:10px;color:#909399;font-size:14px}.actions-row .el-form-item__content[data-v-538996de]{text-align:center}.form-actions[data-v-538996de]{grid-auto-flow:column;text-align:center}.form-actions .el-button[data-v-538996de]{min-width:auto;white-space:nowrap;padding:8px 20px!important;min-width:160px}[data-v-538996de] input[type=number]::-webkit-inner-spin-button,[data-v-538996de] input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}[data-v-538996de] input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}@media (max-width:768px){.product-new[data-v-538996de]{padding:15px}.product-form-card[data-v-538996de]{margin:0 10px}.el-form-item[data-v-538996de]{margin-bottom:18px}}[data-v-538996de] .el-form-item__content{text-align:left}.account-products[data-v-d6c9b7e4]{padding:4px}.toolbar[data-v-d6c9b7e4]{justify-content:space-between;margin-bottom:12px}.left-area[data-v-d6c9b7e4],.right-area[data-v-d6c9b7e4],.toolbar[data-v-d6c9b7e4]{display:flex;align-items:center}.page-title[data-v-d6c9b7e4]{margin:0;font-size:18px;font-weight:600}.mr-12[data-v-d6c9b7e4]{margin-right:12px}.ml-8[data-v-d6c9b7e4]{margin-left:8px}.pagination[data-v-d6c9b7e4]{display:flex;justify-content:flex-end;margin-top:12px}.edit-form .align-like-input .el-form-item__content[data-v-d6c9b7e4]{padding-left:12px}[data-v-d6c9b7e4] .el-form-item__content{text-align:left}.paytypes[data-v-d6c9b7e4]{display:inline-flex;align-items:center;gap:8px}.paytype-icon[data-v-d6c9b7e4]{width:22px;height:22px;border-radius:4px;display:inline-block}.account-purchased[data-v-5597a452]{padding:4px}.toolbar[data-v-5597a452]{justify-content:space-between;margin-bottom:12px}.left-area[data-v-5597a452],.right-area[data-v-5597a452],.toolbar[data-v-5597a452]{display:flex;align-items:center}.page-title[data-v-5597a452]{margin:0;font-size:18px;font-weight:600}.mr-12[data-v-5597a452]{margin-right:12px}.ml-8[data-v-5597a452]{margin-left:8px}.thumb[data-v-5597a452]{width:72px;height:48px;-o-object-fit:cover;object-fit:cover;border-radius:4px}.pagination[data-v-5597a452]{display:flex;justify-content:flex-end;margin-top:12px}.amount-more[data-v-5597a452]{font-size:12px;color:#94a3b8;margin-left:4px}.funds-page[data-v-32104fd7]{padding:8px}.tabs-card[data-v-32104fd7]{background:#fff;border:1px solid #eee;border-radius:10px;padding:12px}.list-wrap[data-v-32104fd7]{padding:6px 0}.list-header[data-v-32104fd7]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid #f0f0f0}.list-title[data-v-32104fd7]{font-size:14px;font-weight:600;color:#333}.record-list[data-v-32104fd7]{display:flex;flex-direction:column;gap:10px;max-height:62vh;overflow-y:auto}.record-item[data-v-32104fd7]{background:#f8f9fa;border-radius:8px;padding:12px;border:1px solid transparent;transition:all .15s ease}.record-item[data-v-32104fd7]:hover{background:#eef2f7;border-color:#409eff;box-shadow:0 4px 12px rgba(64,158,255,.12);transform:translateY(-1px)}.record-item.pending[data-v-32104fd7]{border-left:4px solid #e6a23c}.record-item.success[data-v-32104fd7]{border-left:4px solid #67c23a}.record-item.failed[data-v-32104fd7]{border-left:4px solid #f56c6c}.item-main[data-v-32104fd7]{display:flex;justify-content:space-between;align-items:center}.item-left .amount[data-v-32104fd7]{font-size:16px;font-weight:700;color:#111;margin-bottom:2px}.item-left .chain[data-v-32104fd7]{font-size:12px;color:#666}.item-right[data-v-32104fd7]{text-align:right}.status[data-v-32104fd7]{margin-bottom:2px}.time[data-v-32104fd7]{font-size:12px;color:#999}.expand-panel[data-v-32104fd7]{background:#fff;border:1px dashed #e5e7eb;border-radius:8px;padding:10px;margin-top:8px}.expand-grid[data-v-32104fd7]{display:grid;grid-template-columns:1fr 1fr;gap:10px 24px}.expand-item[data-v-32104fd7]{display:grid;grid-template-columns:80px 1fr;gap:6px;align-items:center}.label[data-v-32104fd7]{color:#666;font-size:13px;text-align:right}.value[data-v-32104fd7]{color:#333;font-size:13px;text-align:left}.value-row[data-v-32104fd7]{display:inline-flex;align-items:center;gap:6px}.mono-ellipsis[data-v-32104fd7],.mono[data-v-32104fd7]{font-family:Monaco,Menlo,monospace}.mono-ellipsis[data-v-32104fd7]{max-width:480px;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty[data-v-32104fd7]{text-align:center;color:#999;padding:20px 0}.amount-more[data-v-32104fd7]{font-size:12px;color:#94a3b8;margin-left:4px}.purchased-detail-page[data-v-592f2fb3]{padding:12px}.title[data-v-592f2fb3]{margin:0 0 12px 0;font-weight:600;color:#2c3e50}.sub-title[data-v-592f2fb3]{font-weight:600;margin-bottom:12px;color:#333;font-size:16px}.section[data-v-592f2fb3]{margin-bottom:12px}.row[data-v-592f2fb3]{display:flex;gap:8px;line-height:1.8;margin-bottom:8px}.label[data-v-592f2fb3]{color:#666;min-width:170px;font-weight:500;text-align:right}.value[data-v-592f2fb3]{color:#333;flex:1;text-align:left;margin-left:18px}.value.mono[data-v-592f2fb3]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;word-break:break-all}.value.strong[data-v-592f2fb3]{font-weight:700;color:#e74c3c}.actions[data-v-592f2fb3]{margin-top:20px;text-align:center}.loading[data-v-592f2fb3]{text-align:center;padding:40px;color:#666}.empty[data-v-5400b150]{color:#888;padding:24px;text-align:center}.value.mono[data-v-5400b150]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;word-break:break-all}.value.strong[data-v-5400b150]{font-weight:700;color:#e74c3c}.amount-more[data-v-5400b150]{font-size:12px;color:#94a3b8;margin-left:4px}.orders-page[data-v-2ad2c7c3]{padding:12px}.title[data-v-2ad2c7c3]{margin:0 0 12px 0;font-weight:600;color:#2c3e50}.empty[data-v-2ad2c7c3]{color:#888;padding:24px;text-align:center}.order-list[data-v-2ad2c7c3]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.order-card[data-v-2ad2c7c3]{border:1px solid #eee;border-radius:8px;padding:0;background:#fff;overflow:hidden}.order-header[data-v-2ad2c7c3]{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px;padding:12px;cursor:pointer;position:relative}.order-header[data-v-2ad2c7c3]:focus{outline:2px solid #409eff;outline-offset:-2px}.order-header.is-open[data-v-2ad2c7c3]{background:#fafafa}.header-row[data-v-2ad2c7c3]{display:flex;gap:8px;line-height:1.8;align-items:center}.chevron[data-v-2ad2c7c3]{position:absolute;right:12px;top:12px;width:10px;height:10px;border-right:2px solid #666;border-bottom:2px solid #666;transform:rotate(-45deg);transition:transform .2s ease}.chevron.chevron-open[data-v-2ad2c7c3]{transform:rotate(45deg)}.order-details[data-v-2ad2c7c3]{border-top:1px solid #eee;padding:12px}.machine-list[data-v-2ad2c7c3]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.machine-card[data-v-2ad2c7c3]{border:1px dashed #e2e2e2;border-radius:6px;padding:10px;background:#fff}.row[data-v-2ad2c7c3]{display:flex;gap:8px;line-height:1.8}.label[data-v-2ad2c7c3]{color:#666}.value[data-v-2ad2c7c3]{color:#333}.value.mono[data-v-2ad2c7c3]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;word-break:break-all}.value.strong[data-v-2ad2c7c3]{font-weight:700;color:#e74c3c}@media (max-width:960px){.machine-list[data-v-2ad2c7c3],.order-header[data-v-2ad2c7c3],.order-list[data-v-2ad2c7c3]{grid-template-columns:1fr}}.orders-page[data-v-c4d1af58]{padding:12px}.title[data-v-c4d1af58]{margin:0 0 12px 0;font-weight:600;color:#2c3e50}.empty[data-v-c4d1af58]{color:#888;padding:24px;text-align:center}.order-list[data-v-c4d1af58]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.order-card[data-v-c4d1af58]{border:1px solid #eee;border-radius:8px;padding:0;background:#fff;overflow:hidden}.order-header[data-v-c4d1af58]{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px;padding:12px;cursor:pointer;position:relative}.order-header[data-v-c4d1af58]:focus{outline:2px solid #409eff;outline-offset:-2px}.order-header.is-open[data-v-c4d1af58]{background:#fafafa}.header-row[data-v-c4d1af58]{display:flex;gap:8px;line-height:1.8;align-items:center}.chevron[data-v-c4d1af58]{position:absolute;right:12px;top:12px;width:10px;height:10px;border-right:2px solid #666;border-bottom:2px solid #666;transform:rotate(-45deg);transition:transform .2s ease}.chevron.chevron-open[data-v-c4d1af58]{transform:rotate(45deg)}.order-details[data-v-c4d1af58]{border-top:1px solid #eee;padding:12px}.machine-list[data-v-c4d1af58]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.machine-card[data-v-c4d1af58]{border:1px dashed #e2e2e2;border-radius:6px;padding:10px;background:#fff}.row[data-v-c4d1af58]{display:flex;gap:8px;line-height:1.8}.label[data-v-c4d1af58]{color:#666}.value[data-v-c4d1af58]{color:#333}.value.mono[data-v-c4d1af58]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;word-break:break-all}.value.strong[data-v-c4d1af58]{font-weight:700;color:#e74c3c}@media (max-width:960px){.machine-list[data-v-c4d1af58],.order-header[data-v-c4d1af58],.order-list[data-v-c4d1af58]{grid-template-columns:1fr}}.order-detail-page[data-v-613e4d6c]{padding:12px}.title[data-v-613e4d6c]{margin:0 0 12px 0;font-weight:600;color:#2c3e50}.sub-title[data-v-613e4d6c]{font-weight:600;margin-bottom:8px}.section[data-v-613e4d6c]{margin-bottom:12px}.row[data-v-613e4d6c]{display:flex;gap:8px;line-height:1.8}.label[data-v-613e4d6c]{color:#666}.value[data-v-613e4d6c]{color:#333}.value.mono[data-v-613e4d6c]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;word-break:break-all}.value.strong[data-v-613e4d6c]{font-weight:700;color:#e74c3c}.actions[data-v-613e4d6c]{margin-top:12px}.account-product-detail[data-v-69d09b20]{padding:8px}.header[data-v-69d09b20]{display:flex;align-items:center;gap:12px;margin-bottom:8px}.title[data-v-69d09b20]{margin:0;font-size:18px;font-weight:600}.detail-card[data-v-69d09b20]{margin-bottom:12px}.detail-form[data-v-69d09b20]{padding:4px 8px}.image-row[data-v-69d09b20]{display:flex;align-items:center;min-height:120px}.cover[data-v-69d09b20]{width:200px;height:120px;-o-object-fit:cover;object-fit:cover;border-radius:4px;background:#f5f5f5;border:1px solid #eee}.placeholder[data-v-69d09b20]{color:#999}.section-title[data-v-69d09b20]{font-weight:600}.ranges-wrapper[data-v-69d09b20]{display:grid;gap:12px}.range-block[data-v-69d09b20]{border:1px solid #f0f0f0;background:#fcfcfc;border-radius:6px;padding:10px}.item[data-v-69d09b20]{color:#444;line-height:24px}.machines-box[data-v-69d09b20]{margin-top:8px;border-top:1px dashed #e5e5e5;padding-top:8px}.machine-row[data-v-69d09b20]{display:flex;flex-wrap:wrap;gap:8px;color:#555;line-height:22px}.split[data-v-69d09b20]{width:8px}.empty-text[data-v-69d09b20]{color:#909399;text-align:center;padding:12px 0}.label-help[data-v-69d09b20]{margin-left:4px;color:#909399;cursor:help}.el-input-group__append,.el-input-group__prepend{padding:0 5px!important}.account-product-detail .el-table .el-input,.account-product-detail .el-table .el-textarea{width:94%!important}.account-product-detail .detail-form .el-input,.account-product-detail .detail-form .el-textarea{width:100%!important}.el-input-group__append,.el-input-group__prepend{overflow:hidden}.append-select .el-input__inner{padding-right:28px;height:30px;line-height:30px}.append-select .el-select__caret{right:10px;transform:scale(.85)}.append-select .el-input__icon{line-height:30px}.changed-input .el-input-group__append,.changed-input .el-input__inner,.changed-input input.el-input__inner{border-color:#f56c6c!important}.el-input.is-disabled .el-input__inner,.el-textarea.is-disabled .el-textarea__inner{color:#000!important}.product-machine-add[data-v-4f1442d6]{padding:8px}.header[data-v-4f1442d6]{display:flex;align-items:center;gap:12px;margin-bottom:8px}.title[data-v-4f1442d6]{margin:0;font-size:18px;font-weight:600}.notice-alert[data-v-4f1442d6]{margin-bottom:12px}.notice-alert[data-v-4f1442d6] .el-alert__content,.notice-alert[data-v-4f1442d6] .el-alert__description,.notice-alert[data-v-4f1442d6] .el-alert__title{text-align:left}.label-help[data-v-4f1442d6]{margin-left:4px;color:#909399;cursor:help}.form-card[data-v-4f1442d6]{margin-bottom:12px}.actions[data-v-4f1442d6]{text-align:right}.product-machine-add[data-v-4f1442d6] .el-form-item__content{justify-content:flex-start}.product-machine-add[data-v-4f1442d6] .el-input-group__append{background:#f5f7fa;color:#606266;border-left:1px solid #dcdfe6}[data-v-4f1442d6] .el-form-item__content{text-align:left;padding-left:18px!important}.cost-multi[data-v-4f1442d6]{display:grid;gap:8px}.cost-item[data-v-4f1442d6]{display:flex;align-items:center}.price-items[data-v-4f1442d6],.price-multi[data-v-4f1442d6]{display:grid;gap:8px}.cost-item[data-v-4f1442d6] .el-input-group__append,.price-item[data-v-4f1442d6] .el-input-group__append{width:110px;min-width:110px;text-align:center;padding:0 8px;background:#f8fafc;color:#606266}.cost-item[data-v-4f1442d6] .el-input-group__append,.cost-item[data-v-4f1442d6] .el-input__inner,.price-item[data-v-4f1442d6] .el-input-group__append,.price-item[data-v-4f1442d6] .el-input__inner{height:30px;line-height:30px}.cost-multi[data-v-4f1442d6],.price-items[data-v-4f1442d6],.price-multi[data-v-4f1442d6]{gap:6px}.header-container[data-v-20c969ee]{width:100%}.navbar[data-v-20c969ee]{display:flex;justify-content:center;gap:24px;background:#fff;border-bottom:1px solid #eee;padding:16px 0;margin-bottom:16px}.nav-btn[data-v-20c969ee]{display:flex;align-items:center;gap:8px;background:none;border:none;font-size:16px;color:#2c3e50;cursor:pointer;padding:12px 20px;border-radius:8px;transition:all .3s ease;text-decoration:none;outline:none;position:relative}.nav-btn[data-v-20c969ee]:hover{background:#f8f9fa;transform:translateY(-2px)}.nav-btn.active[data-v-20c969ee]{background:#42b983;color:#fff}.nav-icon[data-v-20c969ee]{font-size:18px}.nav-text[data-v-20c969ee]{font-weight:600}.cart-count[data-v-20c969ee]{background:#e74c3c;color:#fff;padding:2px 8px;border-radius:12px;font-size:12px;font-weight:700;min-width:20px;text-align:center}.breadcrumb[data-v-20c969ee]{display:flex;align-items:center;gap:8px;padding:12px 20px;background:#f8f9fa;border-radius:8px;margin:0 20px 20px 20px;font-size:14px}.breadcrumb-item[data-v-20c969ee]{color:#666;text-decoration:none;transition:color .3s ease}.breadcrumb-item[data-v-20c969ee]:hover{color:#42b983}.breadcrumb-item.active[data-v-20c969ee]{color:#2c3e50;font-weight:600}.breadcrumb-item[data-v-20c969ee]:not(:last-child):after{content:">";margin-left:8px;color:#ccc}@media (max-width:768px){.navbar[data-v-20c969ee]{flex-direction:column;gap:12px;padding:12px 0}.nav-btn[data-v-20c969ee]{width:100%;justify-content:center;padding:16px 20px}.breadcrumb[data-v-20c969ee]{margin:0 12px 16px 12px;padding:8px 16px;font-size:12px}}.content-container[data-v-9935370e]{padding:20px;min-height:calc(100vh - 120px)}*,body,html{margin:0}*,.el-main,body,html{padding:0;box-sizing:border-box} \ No newline at end of file diff --git a/power_leasing/test/index.html b/power_leasing/test/index.html index 40a444c..cd474f3 100644 --- a/power_leasing/test/index.html +++ b/power_leasing/test/index.html @@ -1 +1 @@ -power_leasing
\ No newline at end of file +power_leasing
\ No newline at end of file diff --git a/power_leasing/test/js/app.d49ccc2c.js b/power_leasing/test/js/app.d49ccc2c.js new file mode 100644 index 0000000..0efc842 --- /dev/null +++ b/power_leasing/test/js/app.d49ccc2c.js @@ -0,0 +1,2 @@ +(function(){var t={346:function(t,e,a){"use strict";Object.defineProperty(e,"B",{value:!0}),e.A=void 0,a(4114);var s=a(9252),i=a(9662);e.A={name:"AccountProductNew",data(){const t=(t,e,a)=>{"string"!==typeof e||0!==e.trim().length?a():a(new Error("内容不能全是空格"))},e=t=>{if("string"!==typeof t||0===t.length)return!1;const e=/[\u{1F300}-\u{1FAFF}]|[\u{1F1E6}-\u{1F1FF}]|[\u{2600}-\u{26FF}]|[\u{2700}-\u{27BF}]|[\u{FE0F}]|[\u{200D}]|[\u{20E3}]/u;return e.test(t)},a=(t,a,s)=>{"string"===typeof a&&e(a)?s(new Error("商品名称不能包含表情符号")):s()};return{submitting:!1,form:{name:"",type:0,coin:"",description:"",image:"",state:0,shopId:null},rules:{name:[{required:!0,message:"请输入商品名称",trigger:"blur"},{validator:t,trigger:"blur"},{validator:a,trigger:"blur"},{min:1,max:30,message:"商品名称长度在 2 到 30 个字符",trigger:"blur"}],type:[{required:!0,message:"请选择商品类型",trigger:"change"}],coin:[{required:!0,message:"请选择挖矿币种",trigger:"change"}],description:[{required:!0,message:"请输入商品描述",trigger:"blur"},{validator:t,trigger:"blur"},{min:1,max:100,message:"商品描述长度在 1 到 100 个字符",trigger:"blur"}],image:[],state:[{required:!0,message:"请选择商品状态",trigger:"change"}]}}},computed:{coinOptions(){return s.coinList||[{value:"nexa",label:"NEXA"},{value:"rxd",label:"RXD"},{value:"dgbo",label:"DGBO"},{value:"dgbq",label:"DGBQ"},{value:"dgbs",label:"DGBS"},{value:"alph",label:"ALPH"},{value:"enx",label:"ENX"},{value:"grs",label:"GRS"},{value:"mona",label:"MONA"}]}},created(){const t=this.$route.query.shopId;t&&(this.form.shopId=Number(t))},methods:{async fetchAddProduct(t){const e=await(0,i.createProduct)(t);!e||0!==e.code&&200!==e.code?this.$message({message:e&&e.msg?e.msg:"创建失败",type:"error",showClose:!0}):(this.$message({message:"商品创建成功",type:"success",showClose:!0}),this.$router.push("/account/products"))},async handleSubmit(){try{const t=await this.$refs.productForm.validate();if(!t)return;if(!this.form.shopId)return void this.$message({message:"缺少店铺ID,请从我的店铺页面进入",type:"error",showClose:!0});this.submitting=!0,this.fetchAddProduct(this.form)}catch(t){console.error("创建商品失败:",t)}finally{this.submitting=!1}},handleReset(){this.$refs.productForm.resetFields();const t=this.$route.query.shopId;t&&(this.form.shopId=Number(t))},handleCancel(){this.$router.push("/account/shops")}}}},460:function(t,e,a){"use strict";var s=a(3999)["default"];Object.defineProperty(e,"B",{value:!0}),e.A=void 0;var i=a(4180),o=s(a(8967));e.A={name:"AccountOrders",components:{OrderList:o.default},data(){return{active:"7",orders:{7:[],8:[],9:[]},loading:!1}},created(){const t=this.$route&&this.$route.query&&this.$route.query.status?String(this.$route.query.status):null,e=localStorage.getItem("orderListActiveTab"),a=t||e||"7";this.active=a,this.fetchOrders(a)},methods:{async fetchCancelOrder(t){const e=await(0,i.cancelOrder)(t);e&&200===Number(e.code)?(this.$message({message:"取消订单成功",type:"success",showClose:!0}),this.fetchOrders(this.active)):this.$message({message:e&&e.msg||"取消失败",type:"error",showClose:!0})},handleCancelOrder({orderId:t}){t&&this.fetchCancelOrder({orderId:t})},handleTabClick(t){const e=t&&t.name?String(t.name):this.active;try{localStorage.setItem("orderListActiveTab",e)}catch(a){console.warn("保存标签页状态失败:",a)}this.fetchOrders(e)},async fetchOrders(t){const e=String(t);try{this.loading=!0;const a=await(0,i.getOrdersByStatus)({status:Number(t)}),s=null!=(a&&a.data)?a.data:a,o=Array.isArray(s)?s:Array.isArray(s&&s.rows)?s.rows:[];this.$set(this.orders,e,o)}catch(a){console.log(a,"获取订单失败")}finally{this.loading=!1}}}}},465:function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.initNoEmojiGuard=void 0;const a=()=>{if("undefined"===typeof window)return;if(window.__noEmojiGuardInitialized)return;window.__noEmojiGuardInitialized=!0;const t=/[\u{1F300}-\u{1FAFF}]|[\u{1F1E6}-\u{1F1FF}]|[\u{2600}-\u{26FF}]|[\u{2700}-\u{27BF}]|[\u{FE0F}]|[\u{200D}]|[\u{20E3}]/gu,e=t=>{if(!t||!(t instanceof Element))return!1;if(t.getAttribute&&"true"===t.getAttribute("data-allow-emoji"))return!1;const e=t.tagName;if("INPUT"===e){const e=(t.getAttribute("type")||"text").toLowerCase(),a=["checkbox","radio","file","hidden","button","submit","reset","range","color","date","datetime-local","month","time","week"];return-1===a.indexOf(e)}return"TEXTAREA"===e},a=(t,e)=>{try{t.__noEmojiComposing=e}catch(a){}},s=t=>!(!t||!t.__noEmojiComposing);function i(e){const a=String(e.value??"");if(!a)return;if(!t.test(a))return;const s=e.selectionStart,i=e.selectionEnd,o=a.replace(t,"");if(o===a)return;e.value=o;try{if("number"===typeof s&&"number"===typeof i){const t=a.length-o.length,i=Math.max(0,s-t);e.setSelectionRange(i,i)}}catch(n){}const r=new Event("input",{bubbles:!0});e.dispatchEvent(r)}document.addEventListener("compositionstart",t=>{e(t.target)&&a(t.target,!0)},!0),document.addEventListener("compositionend",t=>{e(t.target)&&(a(t.target,!1),i(t.target))},!0),document.addEventListener("input",t=>{const a=t.target;e(a)&&(s(a)||i(a))},!0)};e.initNoEmojiGuard=a},589:function(t,e,a){"use strict";a.r(e),a.d(e,{__esModule:function(){return i.B},default:function(){return l}});var s=a(3663),i=a(7692),o=i.A,r=a(845),n=(0,r.A)(o,s.XX,s.Yp,!1,null,"3ba79d9c",null),l=n.exports},950:function(t,e){"use strict";e.Yp=e.XX=void 0;e.XX=function(){var t=this,e=t._self._c;return e("div",{staticClass:"cart-page"},[e("h1",{staticClass:"page-title"},[t._v("购物车")]),t.loading?e("div",{staticClass:"loading"},[e("i",{staticClass:"el-icon-loading",attrs:{"aria-label":"加载中",role:"img"}}),t._v(" 加载中... ")]):t.isCartEmpty?e("div",{staticClass:"empty-cart"},[e("div",{staticClass:"empty-icon"},[t._v("🛒")]),e("h2",[t._v("购物车是空的")]),e("p",[t._v("快去添加一些商品吧!")]),e("router-link",{staticClass:"shop-now-btn",attrs:{to:"/productList"}},[t._v(" 去购物 ")])],1):e("div",{staticClass:"cart-content"},[e("p",{staticStyle:{color:"#9E44F1","font-size":"14px","margin-bottom":"10px"}},[t._v("注意:各店铺支持多种支付方式,请选择店铺支付方式后提交订单结算")]),e("el-table",{ref:"shopTable",staticStyle:{width:"100%"},attrs:{data:t.shops,border:"","row-key":"id","expand-row-keys":t.expandedShopKeys,"header-cell-style":{textAlign:"left"},"cell-style":{textAlign:"left"}},on:{"expand-change":t.handleGuardExpand}},[e("el-table-column",{attrs:{type:"expand",width:"46",expandable:()=>!1},scopedSlots:t._u([{key:"default",fn:function(a){return[e("el-table",{ref:"innerTable-"+a.row.id,staticStyle:{width:"100%"},attrs:{data:a.row.productMachineDtoList||[],size:"small",border:"","row-key":"id","reserve-selection":"","header-cell-style":{textAlign:"left"},"cell-style":{textAlign:"left"}},on:{"selection-change":e=>t.handleShopInnerSelectionChange(a.row,e)}},[e("el-table-column",{attrs:{type:"selection",width:"46",selectable:e=>t.isRowSelectableByShop(a.row,e)}}),e("el-table-column",{attrs:{prop:"name",label:"商品名称"}}),e("el-table-column",{attrs:{prop:"miner",label:"机器编号"}}),e("el-table-column",{attrs:{prop:"algorithm",label:"算法"}}),e("el-table-column",{attrs:{prop:"powerDissipation",label:"功耗(kw/h)"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("span",{staticClass:"num-strong"},[t.formatNum6(a.row.powerDissipation).truncated?e("el-tooltip",{attrs:{content:t.formatNum6(a.row.powerDissipation).full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatNum6(a.row.powerDissipation).text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(t._s(t.formatNum6(a.row.powerDissipation).text))])],1)]}}],null,!0)}),e("el-table-column",{attrs:{prop:"theoryPower",label:"理论算力"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("span",{staticClass:"num-strong"},[t.formatNum6(a.row.theoryPower).truncated?e("el-tooltip",{attrs:{content:t.formatNum6(a.row.theoryPower).full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatNum6(a.row.theoryPower).text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(t._s(t.formatNum6(a.row.theoryPower).text))])],1),e("span",{directives:[{name:"show",rawName:"v-show",value:a.row.theoryPower,expression:"scope.row.theoryPower"}]},[t._v(" "+t._s(a.row.unit)+" ")])]}}],null,!0)}),e("el-table-column",{attrs:{prop:"computingPower",label:"实际算力"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("span",{staticClass:"num-strong"},[t.formatNum6(a.row.computingPower).truncated?e("el-tooltip",{attrs:{content:t.formatNum6(a.row.computingPower).full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatNum6(a.row.computingPower).text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(t._s(t.formatNum6(a.row.computingPower).text))])],1),e("span",{directives:[{name:"show",rawName:"v-show",value:a.row.computingPower,expression:"scope.row.computingPower"}]},[t._v(" "+t._s(a.row.unit)+" ")])]}}],null,!0)}),e("el-table-column",{attrs:{prop:"theoryIncome",label:"单机理论收入(每日/币种)"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("span",{staticClass:"num-strong"},[t.formatNum6(a.row.theoryIncome).truncated?e("el-tooltip",{attrs:{content:t.formatNum6(a.row.theoryIncome).full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatNum6(a.row.theoryIncome).text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(t._s(t.formatNum6(a.row.theoryIncome).text))])],1),e("span",{directives:[{name:"show",rawName:"v-show",value:a.row.coin,expression:"scope.row.coin"}]},[t._v(" "+t._s(t.toUpperText(a.row.coin))+" ")])]}}],null,!0)}),e("el-table-column",{attrs:{prop:"theoryUsdtIncome",label:"单机理论收入(每日/USDT)"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("span",{staticClass:"num-strong"},[t.formatNum6(a.row.theoryUsdtIncome).truncated?e("el-tooltip",{attrs:{content:t.formatNum6(a.row.theoryUsdtIncome).full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatNum6(a.row.theoryUsdtIncome).text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(t._s(t.formatNum6(a.row.theoryUsdtIncome).text))])],1)]}}],null,!0)}),e("el-table-column",{attrs:{prop:"price",width:"120"},scopedSlots:t._u([{key:"header",fn:function(){return[t._v("单价("+t._s(t.getSelectedCoinSymbolForShop(a.row)||"USDT")+")")]},proxy:!0},{key:"default",fn:function(s){return[null!=t.getMachineUnitPriceBySelection(a.row,s.row)?[e("span",{staticClass:"price-strong"},[t.formatAmount(t.getMachineUnitPriceBySelection(a.row,s.row),t.getSelectedCoinSymbolForShop(a.row)).truncated?e("el-tooltip",{attrs:{content:t.formatAmount(t.getMachineUnitPriceBySelection(a.row,s.row),t.getSelectedCoinSymbolForShop(a.row)).full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatAmount(t.getMachineUnitPriceBySelection(a.row,s.row),t.getSelectedCoinSymbolForShop(a.row)).text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(" "+t._s(t.formatAmount(t.getMachineUnitPriceBySelection(a.row,s.row),t.getSelectedCoinSymbolForShop(a.row)).text)+" ")])],1)]:[t._v("-")]]}}],null,!0)}),e("el-table-column",{attrs:{label:"租赁天数",width:"145"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("el-input-number",{attrs:{min:1,max:t.getRowMaxLeaseDaysLocal(a.row),precision:0,step:1,size:"mini","controls-position":"right"},on:{change:function(e){return t.handleLeaseTimeChange(a.row)},input:function(e){return t.handleLeaseTimeInput(a.row,e)}},model:{value:a.row.leaseTime,callback:function(e){t.$set(a.row,"leaseTime",e)},expression:"scope.row.leaseTime"}})]}}],null,!0)}),e("el-table-column",{attrs:{label:"最大可租(天)","min-width":"60"},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(t._s(null!=e.row.maxLeaseDays?e.row.maxLeaseDays:""))]}}],null,!0)}),e("el-table-column",{attrs:{label:"机器状态",width:"110"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("el-tag",{attrs:{type:1===Number(a.row.del)||1===Number(a.row.state)?"info":"success"}},[t._v(" "+t._s(1===Number(a.row.del)||1===Number(a.row.state)?"下架":"上架")+" ")])]}}],null,!0)}),e("el-table-column",{attrs:{"min-width":"120"},scopedSlots:t._u([{key:"header",fn:function(){return[t._v("机器总价("+t._s(t.getSelectedCoinSymbolForShop(a.row)||"USDT")+")")]},proxy:!0},{key:"default",fn:function(s){return[null!=t.getMachineUnitPriceBySelection(a.row,s.row)?[e("span",{staticClass:"price-strong"},[t.formatAmount(t.getMachineUnitPriceBySelection(a.row,s.row)*Number(s.row.leaseTime||1),t.getSelectedCoinSymbolForShop(a.row)).truncated?e("el-tooltip",{attrs:{content:t.formatAmount(t.getMachineUnitPriceBySelection(a.row,s.row)*Number(s.row.leaseTime||1),t.getSelectedCoinSymbolForShop(a.row)).full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatAmount(t.getMachineUnitPriceBySelection(a.row,s.row)*Number(s.row.leaseTime||1),t.getSelectedCoinSymbolForShop(a.row)).text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(" "+t._s(t.formatAmount(t.getMachineUnitPriceBySelection(a.row,s.row)*Number(s.row.leaseTime||1),t.getSelectedCoinSymbolForShop(a.row)).text)+" ")])],1)]:[t._v("-")]]}}],null,!0)})],1)]}}])}),e("el-table-column",{attrs:{prop:"name",label:"店铺名称"}}),e("el-table-column",{attrs:{prop:"totalMachine",label:"机器总数"}}),e("el-table-column",{attrs:{prop:"totalPrice"},scopedSlots:t._u([{key:"header",fn:function(){return[t._v(" 总价("+t._s(t.getSelectedCoinSymbolForShopHeader())+") ")]},proxy:!0},{key:"default",fn:function(a){return[e("span",{staticClass:"price-strong"},[t.formatAmount(t.displayShopTotalBySelection(a.row),t.getSelectedCoinSymbolForShop(a.row)).truncated?e("el-tooltip",{attrs:{content:t.formatAmount(t.displayShopTotalBySelection(a.row),t.getSelectedCoinSymbolForShop(a.row)).full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatAmount(t.displayShopTotalBySelection(a.row),t.getSelectedCoinSymbolForShop(a.row)).text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(" "+t._s(t.formatAmount(t.displayShopTotalBySelection(a.row),t.getSelectedCoinSymbolForShop(a.row)).text)+" ")])],1)]}}])}),e("el-table-column",{attrs:{label:"支付方式"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("el-select",{staticStyle:{"min-width":"180px"},attrs:{placeholder:"请选择",size:"mini"},on:{change:e=>t.handleShopPayChange(a.row,e)},scopedSlots:t._u([{key:"prefix",fn:function(){return[t.getSelectedPayIcon(a.row)?e("img",{staticStyle:{width:"16px",height:"16px","margin-right":"6px","border-radius":"3px"},attrs:{src:t.getSelectedPayIcon(a.row),alt:t.getSelectedCoinSymbolForShop(a.row)}}):t._e()]},proxy:!0}],null,!0),model:{value:t.paySelectionMap[a.row.id],callback:function(e){t.$set(t.paySelectionMap,a.row.id,e)},expression:"paySelectionMap[scope.row.id]"}},t._l(t.getShopPayOptions(a.row),function(a,s){return e("el-option",{key:s,attrs:{value:a.value,label:a.label}},[e("div",{staticStyle:{display:"flex","align-items":"center",gap:"8px"}},[e("img",{staticStyle:{width:"18px",height:"18px","border-radius":"3px"},attrs:{src:a.icon,alt:a.label}}),e("span",[t._v(t._s(a.label))])])])}),1)]}}])})],1),e("div",{staticClass:"summary-actions",staticStyle:{"margin-top":"16px",display:"flex",gap:"12px","justify-content":"flex-end"}},[e("div",{staticClass:"summary-inline",staticStyle:{color:"#666"}},[t._v(" 已选机器:"),e("b",[t._v(t._s(t.selectedMachineCount))]),t._v(" 台 "),e("span",{staticStyle:{"margin-left":"12px"}},[t._v("金额合计(USDT):")]),e("span",{staticClass:"price-strong"},[t.formatAmount(t.selectedTotal,"USDT").truncated?e("el-tooltip",{attrs:{content:t.formatAmount(t.selectedTotal,"USDT").full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatAmount(t.selectedTotal,"USDT").text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(t._s(t.formatAmount(t.selectedTotal,"USDT").text))])],1)]),e("div",{staticClass:"actions-inline",staticStyle:{display:"flex",gap:"12px"}},[e("el-button",{attrs:{type:"danger",disabled:!t.selectedMachineCount},on:{click:t.handleRemoveSelectedMachines}},[t._v("删除所选机器")]),e("el-button",{attrs:{type:"warning",plain:"",loading:t.clearOffLoading},on:{click:t.handleClearOffShelf}},[t._v("清除已下架商品")]),e("el-button",{attrs:{type:"primary",disabled:!t.selectedMachineCount},on:{click:t.handleCheckoutSelected}},[t._v("结算选中机器")])],1)]),e("el-dialog",{attrs:{visible:t.confirmDialog.visible,width:"80vw","close-on-click-modal":!1,title:`确认结算(共 ${t.confirmDialog.count} 台机器)`},on:{"update:visible":function(e){return t.$set(t.confirmDialog,"visible",e)}},scopedSlots:t._u([{key:"footer",fn:function(){return[e("el-button",{on:{click:function(e){t.confirmDialog.visible=!1}}},[t._v("取消")]),e("el-button",{attrs:{type:"primary"},on:{click:t.confirmPay}},[t._v("确认结算")])]},proxy:!0}])},[e("div",[t._l(t.confirmDialog.shops,function(a){return e("div",{key:a.shopId,staticStyle:{"margin-bottom":"18px"}},[e("div",{staticStyle:{display:"flex","align-items":"center","justify-content":"space-between",margin:"8px 0 6px 0"}},[e("div",{staticStyle:{"font-weight":"600",color:"#2c3e50"}},[t._v(" 店铺:"+t._s(a.shopName||a.shopId)+" "),e("span",{staticStyle:{"margin-left":"12px",color:"#666","font-weight":"400"}},[t._v("支付方式:"+t._s(a.payLabel))])]),e("div",[a.coinSymbol?[a.enough?e("span",{staticStyle:{color:"#16a34a","font-weight":"600"}},[t._v(" 已满足起付额 "+t._s(t.formatAmount(a.deductibleAmount||0,a.coinSymbol).text)+" ")]):e("span",{staticStyle:{color:"#ef4444","font-weight":"600"}},[t._v(" 金额不足最低起付额 "+t._s(t.formatAmount(a.deductibleAmount||0,a.coinSymbol).text)+" ,收取手续费 "+t._s(t.formatAmount(a.fee||0,a.coinSymbol).text)+" ")])]:t._e()],2)]),e("el-table",{attrs:{data:a.items,"max-height":"260",border:"",stripe:"","header-cell-style":{textAlign:"left"},"cell-style":{textAlign:"left"}}},[e("el-table-column",{attrs:{prop:"product",label:"商品","min-width":"160"}}),e("el-table-column",{attrs:{prop:"coin",label:"币种","min-width":"100"}}),e("el-table-column",{attrs:{prop:"user",label:"账户","min-width":"120"}}),e("el-table-column",{attrs:{prop:"miner",label:"机器编号","min-width":"160"}}),e("el-table-column",{attrs:{prop:"unitPrice","min-width":"140"},scopedSlots:t._u([{key:"header",fn:function(){return[t._v("单价("+t._s(a.coinSymbol||"USDT")+")")]},proxy:!0},{key:"default",fn:function(s){return[e("span",{staticClass:"price-strong"},[t.formatAmount(s.row.unitPrice,a.coinSymbol).truncated?e("el-tooltip",{attrs:{content:t.formatAmount(s.row.unitPrice,a.coinSymbol).full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatAmount(s.row.unitPrice,a.coinSymbol).text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(t._s(t.formatAmount(s.row.unitPrice,a.coinSymbol).text))])],1)]}}],null,!0)}),e("el-table-column",{attrs:{prop:"leaseTime",label:"租赁天数","min-width":"120"}}),e("el-table-column",{attrs:{prop:"subtotal","min-width":"140"},scopedSlots:t._u([{key:"header",fn:function(){return[t._v("小计("+t._s(a.coinSymbol||"USDT")+")")]},proxy:!0},{key:"default",fn:function(s){return[e("span",{staticClass:"price-strong"},[t.formatAmount(s.row.subtotal,a.coinSymbol).truncated?e("el-tooltip",{attrs:{content:t.formatAmount(s.row.subtotal,a.coinSymbol).full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatAmount(s.row.subtotal,a.coinSymbol).text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(t._s(t.formatAmount(s.row.subtotal,a.coinSymbol).text))])],1)]}}],null,!0)})],1)],1)}),e("div",{staticStyle:{"margin-top":"12px","text-align":"right"}},[e("span",{staticStyle:{"margin-right":"8px"}},[t._v("总金额:")]),Object.keys(t.confirmDialog.totalsByCoin||{}).length?t._l(t.confirmDialog.totalsByCoin,function(a,s){return e("span",{key:s,staticStyle:{"margin-left":"12px"}},[t._v(" "+t._s(s)+": "),e("span",{staticClass:"price-strong"},[t.formatAmount(a,s).truncated?e("el-tooltip",{attrs:{content:t.formatAmount(a,s).full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatAmount(a,s).text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(t._s(t.formatAmount(a,s).text))])],1)])}):[t._v("-")]],2)],2)]),e("el-dialog",{attrs:{visible:t.noticeDialog.visible,width:"680px",title:"下单须知","show-close":!1,"close-on-click-modal":!1,"close-on-press-escape":!1},on:{"update:visible":function(e){return t.$set(t.noticeDialog,"visible",e)}},scopedSlots:t._u([{key:"footer",fn:function(){return[e("el-button",{attrs:{type:"primary",disabled:t.noticeDialog.countdown>0},on:{click:t.handleNoticeAcknowledge}},[t._v(" 同意并下单"+t._s(t.noticeDialog.countdown>0?`(${t.noticeDialog.countdown}s)`:"")+" ")])]},proxy:!0}])},[e("div",{staticClass:"notice-content"},[e("p",{staticClass:"notice-title"},[t._v('尊敬的客户,感谢您选择我们的服务。在您下单前,请务必仔细阅读并完全理解以下须知条款。一旦您点击" 同意并下单"或完成支付流程,即视为您已充分阅读、理解并同意接受本须知的全部内容约束。')]),e("ol",{staticClass:"notice-list"},[e("li",[e("b",[t._v("预授权冻结:")]),t._v("为保障订单顺利执行,在下单成功后,系统将立即对您数字钱包或账户中与订单全款总额等值的资金进行预授权冻结。此操作并非即时划转,而是为确保您有足够的资金用于每日支付。")]),e("li",[e("b",[t._v("每日结算支付:")]),t._v('本服务采用"按日结算"模式。冻结的资金将根据租赁协议约定的每日费用,每日自动划转相应的金额给卖家。划转操作通常在每个UTC日结束时自动执行。')]),e("li",[e("b",[t._v("资金解冻:")]),t._v("当租赁服务到期或因其他原因终止后,系统中剩余的、未被划转的冻结资金将立即解除冻结,并返还至您的可用余额中。")]),e("li",[e("b",[t._v("订单生效:")]),t._v(" 您的订单在支付流程完成且资金成功冻结后立即生效。系统将开始为您配置相应的矿机或算力资源。")]),e("li",[e("b",[t._v("不可取消政策:")]),t._v(" 鉴于算力服务一经提供即无法退回的特性,所有订单一旦生效,即不可取消、不可退款、不可转让。您无法在租赁期内单方面中止服务或要求退还已冻结及已支付的费用。")]),e("li",[e("b",[t._v("免责声明:")]),t._v("因不可抗力(如自然灾害、政策变动等)导致订单延迟或无法履行,我们不承担相应责任。")]),e("li",[e("b",[t._v("算力波动:")]),t._v("您所租赁的算力产生的收益取决于区块链网络难度、全球总算力、币价波动、矿池运气等多种外部因素。我们仅提供稳定的算力输出,不对您的最终收益做出任何承诺或保证。")])]),e("p",{staticClass:"notice-title"},[t._v("再次提醒:数字资产挖矿存在较高市场风险,收益波动巨大,过去业绩不代表未来表现。请根据自身的风险承受能力谨慎决策。您下单的行为即代表您已充分了解并自愿承担所有相关风险。")]),e("div",{staticClass:"notice-ack"},[e("el-checkbox",{staticStyle:{color:"#e74c3c"},model:{value:t.noticeDialog.checked,callback:function(e){t.$set(t.noticeDialog,"checked",e)},expression:"noticeDialog.checked"}},[t._v("我已阅读并同意上述注意事项")])],1)])]),e("el-dialog",{attrs:{visible:t.googleCodeDialog.visible,width:"480px",title:"安全验证","show-close":!1,"close-on-click-modal":!1,"close-on-press-escape":!1},on:{"update:visible":function(e){return t.$set(t.googleCodeDialog,"visible",e)}},scopedSlots:t._u([{key:"footer",fn:function(){return[e("div",{staticClass:"dialog-footer"},[e("el-button",{on:{click:t.handleGoogleCodeCancel}},[t._v("取消")]),e("el-button",{attrs:{type:"primary",loading:t.googleCodeDialog.loading,disabled:!t.isGoogleCodeValid},on:{click:t.handleGoogleCodeSubmit}},[t._v(" "+t._s(t.googleCodeDialog.loading?"验证中...":"确认验证")+" ")])],1)]},proxy:!0}])},[e("div",{staticClass:"google-code-content"},[e("div",{staticClass:"verification-icon"},[e("i",{staticClass:"el-icon-lock",staticStyle:{"font-size":"48px",color:"#409EFF"}})]),e("div",{staticClass:"verification-title"},[e("h3",[t._v("请输入谷歌验证码")]),e("p",{staticClass:"verification-desc"},[t._v("为了保障您的账户安全,请输入您的谷歌验证器中的6位验证码")])]),e("div",{staticClass:"code-input-wrapper"},[e("el-input",{ref:"googleCodeInput",staticClass:"code-input",attrs:{placeholder:"请输入6位验证码",maxlength:"6",size:"large"},on:{input:t.handleGoogleCodeInput},nativeOn:{keyup:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.handleGoogleCodeSubmit.apply(null,arguments)}},scopedSlots:t._u([{key:"prepend",fn:function(){return[e("i",{staticClass:"el-icon-key"})]},proxy:!0}]),model:{value:t.googleCodeDialog.code,callback:function(e){t.$set(t.googleCodeDialog,"code",e)},expression:"googleCodeDialog.code"}})],1),t.googleCodeDialog.error?e("div",{staticClass:"code-error"},[e("i",{staticClass:"el-icon-warning"}),e("span",[t._v(t._s(t.googleCodeDialog.error))])]):t._e()])])],1),e("el-dialog",{attrs:{visible:t.settlementSuccessfulVisible,width:"480px","append-to-body":"","close-on-click-modal":!1,"close-on-press-escape":!1},on:{"update:visible":function(e){t.settlementSuccessfulVisible=e},close:t.handleCloseSuccessDialog},scopedSlots:t._u([{key:"footer",fn:function(){return[e("el-button",{attrs:{type:"primary"},on:{click:t.handleCloseSuccessDialog}},[t._v("已知晓")])]},proxy:!0}])},[e("div",{staticStyle:{"text-align":"center",padding:"20px 0"}},[e("div",{staticStyle:{"font-size":"48px",color:"#52c41a","margin-bottom":"16px"}},[t._v("✓")]),e("div",{staticStyle:{"font-size":"18px",color:"#333","margin-bottom":"12px"}},[t._v("请求结算处理成功")]),e("div",{staticStyle:{color:"#666","line-height":"1.6"}},[t._v(" 请在订单列表页面查看结算状态"),e("br"),t._v(" 结算成功会自动更新钱包余额 ")])])])],1)},e.Yp=[]},1029:function(t,e,a){"use strict";Object.defineProperty(e,"B",{value:!0}),e.A=void 0,a(8111),a(7588),a(1701);var s=a(9662),i=a(1193);e.A={name:"AccountProductDetail",data(){return{loading:!1,product:null,ranges:[],machineList:[],productId:null,confirmVisible:!1,stateSnapshot:{},fieldSnapshot:{},updateLoading:!1,unitOptions:["KH/S","MH/S","GH/S","TH/S","PH/S"]}},created(){this.productId=Number(this.$route.params.id),this.productId&&(this.fetchDetail({id:this.productId}),this.fetchMachineList({id:this.productId}))},methods:{handlePayTypeChange(t){const e=this.machineList&&this.machineList[t];if(!e)return;const a=Number(e._selectedPayIndex||0),s=Array.isArray(e.priceList)?e.priceList:[],i=s[a]||{};this.$set(this.machineList,t,{...e,_priceEditing:String(i.price??"")})},isRowDisabled(t){return!!t&&1===Number(t.saleState)},handleOpenConfirm(){this.machineList&&this.machineList.length?this.confirmVisible=!0:this.$message.warning("没有可提交的数据")},async fetchDetail(t){this.loading=!0;try{const e=await(0,s.getMachineInfoById)(t),a=e?.data||{};this.product=a,this.ranges=Array.isArray(a.productMachineRangeList)?a.productMachineRangeList:[]}catch(e){console.error("获取商品详情失败",e),console.log("获取商品详情失败")}finally{this.loading=!1}},async fetchMachineList(t){const e=await(0,i.getMachineListForUpdate)(t);if(e&&200===e.code){const t=Array.isArray(e.rows)?e.rows:[];this.machineList=t.map(t=>{const e=Array.isArray(t.priceList)?t.priceList:[],a=0,s=e[a]||{};return{...t,_selectedPayIndex:a,_priceEditing:String(s.price??"")}}),this.refreshStateSnapshot(),this.refreshFieldSnapshot()}},refreshStateSnapshot(){const t={},e=Array.isArray(this.machineList)?this.machineList:[];for(let a=0;a{t&&(i[String(t.payTypeId??"")]=String(t.price??""))}),t[s.id]={theoryPower:String(s.theoryPower??""),powerDissipation:String(s.powerDissipation??""),type:String(s.type??""),priceMap:i,maxLeaseDays:String(s.maxLeaseDays??"")}}this.fieldSnapshot=t},isCellChanged(t,e){if(!t||"undefined"===typeof t.id)return!1;const a=this.fieldSnapshot[t.id]||{};if("price"===e){const e=Number(t._selectedPayIndex||0),s=Array.isArray(t.priceList)&&t.priceList[e]?t.priceList[e]:null,i=String(s&&s.payTypeId?s.payTypeId:e),o=String(s&&null!=s.price?s.price:""),r=String(a.priceMap&&a.priceMap[i]||"");return o!==r}const s=String(t[e]??""),i=String(a[e]??"");return s!==i},restoreStateSnapshot(){if(this.machineList&&this.machineList.length)for(let t=0;t6&&(r=r.slice(0,6)),n&&(n=n.slice(0,4)),a=n.length?`${r}.${n}`:i?`${r}.`:r,this.$set(this.machineList,t,{...this.machineList[t],theoryPower:a})},handleNumericCell(t,e){const a=this.machineList&&this.machineList[t];if(!a||this.isRowDisabled(a))return;let s=String("price"===e?this.machineList[t]._priceEditing??"":this.machineList[t][e]??"");s=s.replace(/[^0-9.]/g,"");const i=s.indexOf(".");if(-1!==i&&(s=s.slice(0,i+1)+s.slice(i+1).replace(/\./g,"")),"powerDissipation"===e){const t=s.endsWith("."),e=s.split(".");let a=e[0]||"",i=e[1]||"";a.length>6&&(a=a.slice(0,6)),i&&(i=i.slice(0,4)),s=i.length?`${a}.${i}`:t?`${a}.`:a}else if("price"===e){const e=s.endsWith("."),a=s.split(".");let i=a[0]||"",o=a[1]||"";i.length>12&&(i=i.slice(0,12)),o&&(o=o.slice(0,2)),s=o.length?`${i}.${o}`:e?`${i}.`:i,this.$set(this.machineList[t],"_priceEditing",s);const r=this.machineList[t],n=Number(r._selectedPayIndex||0);Array.isArray(r.priceList)&&r.priceList[n]&&this.$set(r.priceList[n],"price",s)}else if(-1!==i){const[t,e]=s.split(".");s=t+"."+(e?e.slice(0,6):"")}if("price"!==e){const a={...this.machineList[t],[e]:s};this.$set(this.machineList,t,a)}},handlePriceBlur(t){const e=String(this.machineList[t]._priceEditing??""),a=/^\d{1,12}(\.\d{1,2})?$/;if(!e||Number(e)<=0||!a.test(e)){this.$message.warning("单价必须大于0,整数最多12位,小数最多2位"),this.$set(this.machineList[t],"_priceEditing","");const e=this.machineList[t],a=Number(e._selectedPayIndex||0);Array.isArray(e.priceList)&&e.priceList[a]&&this.$set(e.priceList[a],"price","")}},handleMaxLeaseDaysInput(t){const e=this.machineList&&this.machineList[t];if(!e||this.isRowDisabled(e))return;let a=String(this.machineList[t].maxLeaseDays??"");a=a.replace(/\D/g,""),a.length>3&&(a=a.slice(0,3));const s={...this.machineList[t],maxLeaseDays:a};this.$set(this.machineList,t,s)},handleMaxLeaseDaysBlur(t){const e=String(this.machineList[t].maxLeaseDays??"");if(!/^\d{1,3}$/.test(e)){this.$message.warning("最大租赁天数需为 1-365 的整数");const e={...this.machineList[t],maxLeaseDays:""};return void this.$set(this.machineList,t,e)}const a=Number(e);if(!Number.isInteger(a)||a<1||a>365){this.$message.warning("最大租赁天数需为 1-365 的整数");const e={...this.machineList[t],maxLeaseDays:""};this.$set(this.machineList,t,e)}},handleTheoryPowerBlur(t){const e=String(this.machineList[t].theoryPower??""),a=/^\d{1,6}(\.\d{1,4})?$/;if(!e||Number(e)<=0||!a.test(e)){this.$message.warning("理论算力必须大于0");const e={...this.machineList[t],theoryPower:""};this.$set(this.machineList,t,e)}},handlePowerDissipationBlur(t){const e=String(this.machineList[t].powerDissipation??""),a=/^\d{1,6}(\.\d{1,4})?$/;if(!e||Number(e)<=0||!a.test(e)){this.$message.warning("功耗必须大于0");const e={...this.machineList[t],powerDissipation:""};this.$set(this.machineList,t,e)}},handleTypeCell(t){const e=this.machineList&&this.machineList[t];if(!e||this.isRowDisabled(e))return;const a={...this.machineList[t],type:this.machineList[t].type};this.$set(this.machineList,t,a)},handleStateChange(t){const e=this.machineList&&this.machineList[t];if(!e||this.isRowDisabled(e))return;const a={...this.machineList[t],state:this.machineList[t].state};this.$set(this.machineList,t,a)},async handleDeleteMachine(t){if(t&&t.id)if(this.isRowDisabled(t))this.$message.warning("该矿机已售出,无法删除");else try{await this.$confirm("确定删除该矿机吗?删除后不可恢复","提示",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"});const e=await(0,i.deleteMachine)({id:t.id});e&&200===e.code&&(this.$message.success("删除成功"),this.fetchMachineList({id:this.productId}))}catch(e){}},async handleSubmitMachines(){if(this.machineList&&this.machineList.length)try{const t=/^\d{1,6}(\.\d{1,4})?$/,e=/^\d{1,12}(\.\d{1,2})?$/,a=t=>"string"===typeof t&&0===t.trim().length&&t.length>0;for(let i=0;i365)return void this.$message.warning(`第${i+1}行(机器:${o}) 最大租赁天数需为 1-365 的整数`);if(l&&a(l))return void this.$message.warning(`第${i+1}行(机器:${o}) 型号不能全是空格`)}const s=this.machineList.map(t=>({id:t.id,powerDissipation:Number(t.powerDissipation??0),priceList:Array.isArray(t.priceList)?t.priceList.map(t=>({...t,price:Number(t&&null!=t.price&&""!==t.price?t.price:0)})):[],state:Number(t.state??0),theoryPower:Number(t.theoryPower??0),type:t.type||"",maxLeaseDays:Number(t.maxLeaseDays??0),unit:t.unit||""}));this.confirmVisible=!1,console.log(s,"payload"),await this.updateMachineList(s)}catch(t){}else this.$message.warning("没有可提交的数据")},handleBack(){this.$router.back()}}}},1043:function(t,e,a){"use strict";a.r(e),a.d(e,{__esModule:function(){return i.B},default:function(){return l}});var s=a(2224),i=a(1507),o=i.A,r=a(845),n=(0,r.A)(o,s.XX,s.Yp,!1,null,"7050467e",null),l=n.exports},1074:function(t,e){"use strict";e.Yp=e.XX=void 0;e.XX=function(){var t=this,e=t._self._c;return e("div",{staticClass:"account-products"},[e("div",{staticClass:"toolbar"},[t._m(0),e("div",{staticClass:"right-area"},[e("el-input",{staticClass:"mr-12",staticStyle:{width:"280px"},attrs:{placeholder:"输入币种或算法关键字后回车/搜索",size:"small",clearable:""},on:{clear:t.handleClear},nativeOn:{keyup:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.handleSearch.apply(null,arguments)}},model:{value:t.searchKeyword,callback:function(e){t.searchKeyword=e},expression:"searchKeyword"}}),e("el-button",{attrs:{type:"primary",size:"small"},on:{click:t.handleSearch}},[t._v("搜索")]),e("el-button",{staticClass:"ml-8",attrs:{size:"small"},on:{click:t.handleReset}},[t._v("重置")])],1)]),e("el-table",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],staticStyle:{width:"100%"},attrs:{data:t.tableData,border:"",stripe:""}},[e("el-table-column",{attrs:{prop:"name",label:"名称"}}),e("el-table-column",{attrs:{prop:"coin",label:"币种"}}),e("el-table-column",{attrs:{label:"支持结算方式"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("div",{staticClass:"paytypes"},t._l(a.row.payTypes||[],function(a,s){return e("el-tooltip",{key:s,attrs:{content:t.formatPayType(a),placement:"top","open-delay":80}},[e("img",{staticClass:"paytype-icon",attrs:{src:a.image,alt:t.formatPayType(a)}})])}),1)]}}])}),e("el-table-column",{attrs:{prop:"algorithm",label:"算法"}}),e("el-table-column",{attrs:{prop:"type",label:"商品类型"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("el-tag",{attrs:{type:1===a.row.type?"success":"warning"}},[t._v(" "+t._s(1===a.row.type?"算力套餐":"挖矿机器")+" ")])]}}])}),e("el-table-column",{attrs:{prop:"saleNumber",label:"已售数量"}}),e("el-table-column",{attrs:{prop:"totalMachineNumber",label:"该商品总机器数量"}}),e("el-table-column",{attrs:{prop:"state",label:"状态"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("el-tag",{attrs:{type:1===a.row.state?"info":"success"}},[t._v(" "+t._s(1===a.row.state?"下架":"上架")+" ")])]}}])}),e("el-table-column",{attrs:{label:"操作",fixed:"right",width:"220"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("el-button",{attrs:{type:"text",size:"small"},on:{click:function(e){return t.handleView(a.row)}}},[t._v("详情")]),e("el-button",{attrs:{type:"text",size:"small"},on:{click:function(e){return t.handleEdit(a.row)}}},[t._v("修改")]),e("el-button",{staticStyle:{color:"#f56c6c"},attrs:{type:"text",size:"small"},on:{click:function(e){return t.handleDelete(a.row)}}},[t._v("删除")]),e("el-button",{attrs:{type:"text",size:"small"},on:{click:function(e){return t.handleAddMachine(a.row)}}},[t._v("添加出售机器")])]}}])})],1),e("div",{staticClass:"pagination"},[e("el-pagination",{attrs:{background:"",layout:"total, sizes, prev, pager, next, jumper",total:t.total,"current-page":t.pagination.pageNum,"page-sizes":[10,20,50,100],"page-size":t.pagination.pageSize},on:{"update:currentPage":function(e){return t.$set(t.pagination,"pageNum",e)},"update:current-page":function(e){return t.$set(t.pagination,"pageNum",e)},"update:pageSize":function(e){return t.$set(t.pagination,"pageSize",e)},"update:page-size":function(e){return t.$set(t.pagination,"pageSize",e)},"size-change":t.handleSizeChange,"current-change":t.handleCurrentChange}})],1),e("el-dialog",{attrs:{visible:t.editDialog.visible,"close-on-click-modal":!1,width:"620px",title:"编辑商品 - "+(t.editDialog.form&&t.editDialog.form.name?t.editDialog.form.name:"")},on:{"update:visible":function(e){return t.$set(t.editDialog,"visible",e)}},scopedSlots:t._u([{key:"footer",fn:function(){return[e("el-button",{on:{click:function(e){t.editDialog.visible=!1}}},[t._v("取消")]),e("el-button",{attrs:{type:"primary",loading:t.editDialog.saving},on:{click:t.handleSaveEdit}},[t._v("保存")])]},proxy:!0}])},[t.editDialog.form?e("el-form",{ref:"editForm",staticClass:"edit-form",attrs:{model:t.editDialog.form,"label-width":"100px"}},[e("el-form-item",{attrs:{label:"名称"}},[e("el-input",{attrs:{maxlength:"30","show-word-limit":""},model:{value:t.editDialog.form.name,callback:function(e){t.$set(t.editDialog.form,"name",e)},expression:"editDialog.form.name"}})],1),e("el-form-item",{staticClass:"align-like-input",attrs:{label:"状态"}},[e("el-radio-group",{model:{value:t.editDialog.form.state,callback:function(e){t.$set(t.editDialog.form,"state",e)},expression:"editDialog.form.state"}},[e("el-radio",{attrs:{label:0}},[t._v("上架")]),e("el-radio",{attrs:{label:1}},[t._v("下架")])],1)],1),e("el-form-item",{attrs:{label:"描述"}},[e("el-input",{attrs:{type:"textarea",rows:4,maxlength:"100","show-word-limit":""},model:{value:t.editDialog.form.description,callback:function(e){t.$set(t.editDialog.form,"description",e)},expression:"editDialog.form.description"}})],1)],1):t._e()],1)],1)},e.Yp=[function(){var t=this,e=t._self._c;return e("div",{staticClass:"left-area"},[e("h2",{staticClass:"page-title"},[t._v("商品列表")])])}]},1182:function(t,e,a){"use strict";a.r(e),a.d(e,{__esModule:function(){return i.B},default:function(){return l}});var s=a(2038),i=a(7570),o=i.A,r=a(845),n=(0,r.A)(o,s.XX,s.Yp,!1,null,null,null),l=n.exports},1193:function(t,e,a){"use strict";var s=a(3999)["default"];Object.defineProperty(e,"__esModule",{value:!0}),e.addSingleOrBatchMachine=o,e.deleteMachine=r,e.getMachineListForUpdate=d,e.getUserMachineList=n,e.getUserMinersList=l,e.updateMachine=c;var i=s(a(5720));function o(t){return(0,i.default)({url:"/lease/product/machine/addSingleOrBatchMachine",method:"post",data:t})}function r(t){return(0,i.default)({url:"/lease/product/machine/delete",method:"post",data:t})}function n(t){return(0,i.default)({url:"/lease/product/machine/getUserMachineList",method:"post",data:t})}function l(t){return(0,i.default)({url:"/lease/product/machine/getUserMinersList",method:"post",data:t})}function c(t){return(0,i.default)({url:"/lease/product/machine/updateMachine",method:"post",data:t})}function d(t){return(0,i.default)({url:"/lease/product/machine/getMachineListForUpdate",method:"post",data:t})}},1220:function(t,e,a){"use strict";a.r(e),a.d(e,{__esModule:function(){return i.B},default:function(){return l}});var s=a(5508),i=a(1872),o=i.A,r=a(845),n=(0,r.A)(o,s.XX,s.Yp,!1,null,"9935370e",null),l=n.exports},1259:function(t,e,a){"use strict";Object.defineProperty(e,"B",{value:!0}),e.A=void 0,a(4114),a(8111),a(3579);e.A={name:"AccountPage",data(){return{activeIndex:"1",userEmail:"",activeRole:"seller",buyerLinks:[{label:"我的钱包",to:"/account/wallet"},{label:"已购商品",to:"/account/purchased"},{label:"订单列表",to:"/account/orders"},{label:"资金流水",to:"/account/funds-flow"}],sellerLinks:[{label:"我的店铺",to:"/account/shops"},{label:"商品列表",to:"/account/products"},{label:"已售出订单",to:"/account/seller-orders"},{label:"收款记录",to:"/account/receipt-record"}]}},computed:{userInitial(){const t=(this.userEmail||"").trim();return t?t[0].toUpperCase():"?"},displayedLinks(){return"buyer"===this.activeRole?this.buyerLinks:this.sellerLinks}},mounted(){const t=t=>{const e=localStorage.getItem(t);if(null==e)return null;try{return JSON.parse(e)}catch(a){return e}},e=t("leasEmail")||"";this.userEmail="string"===typeof e?e:String(e);const a=t("accountActiveRole");"buyer"!==a&&"seller"!==a||(this.activeRole=a),this.setActiveRoleByRoute()},methods:{handleClickRole(t){if("buyer"===t||"seller"===t){this.activeRole=t;try{localStorage.setItem("accountActiveRole",JSON.stringify(t))}catch(e){}try{const e="buyer"===t?this.buyerLinks&&this.buyerLinks[0]&&this.buyerLinks[0].to:this.sellerLinks&&this.sellerLinks[0]&&this.sellerLinks[0].to;e&&this.$route&&this.$route.path!==e&&this.$router.push(e)}catch(e){}}},setActiveRoleByRoute(){const t=this.$route&&this.$route.path||"";if(0===t.indexOf("/account/order-detail")){const t=this.$route&&this.$route.query&&this.$route.query.from||"";let e=t;if(!e)try{e=sessionStorage.getItem("orderDetailFrom")||""}catch(r){e=""}const a="buyer"===e?"buyer":"seller"===e?"seller":this.activeRole;if(this.activeRole!==a){this.activeRole=a;try{localStorage.setItem("accountActiveRole",JSON.stringify(a))}catch(r){}}return}const e=["/account/wallet","/account/purchased","/account/purchased-detail","/account/orders","/account/funds-flow"],a=["/account/shops","/account/shop-new","/account/product-new","/account/products","/account/product-detail","/account/product-machine-add","/account/seller-orders","/account/receipt-record","/account/shop-config"],s=e.some(e=>0===t.indexOf(e)),i=a.some(e=>0===t.indexOf(e)),o=s?"buyer":i?"seller":this.activeRole;if(this.activeRole!==o){this.activeRole=o;try{localStorage.setItem("accountActiveRole",JSON.stringify(o))}catch(r){}}},isActiveLink(t){const e=this.$route&&this.$route.path||"";if(!t)return!1;if(0===e.indexOf("/account/order-detail")){const e=this.$route&&this.$route.query&&this.$route.query.from||"";let a=e;if(!a)try{a=sessionStorage.getItem("orderDetailFrom")||""}catch(i){a=""}return"buyer"===a&&"/account/orders"===t||"seller"===a&&"/account/seller-orders"===t}const a={"/account/seller-orders":["/account/seller-orders"],"/account/products":["/account/products","/account/product-detail"],"/account/purchased":["/account/purchased","/account/purchased-detail"]},s=a[t];return Array.isArray(s)?s.some(t=>0===e.indexOf(t)):0===e.indexOf(t)}},watch:{"$route.path":{immediate:!0,handler(){this.setActiveRoleByRoute()}}}}},1394:function(t,e,a){"use strict";a.r(e),a.d(e,{__esModule:function(){return i.B},default:function(){return l}});var s=a(8475),i=a(8284),o=i.A,r=a(845),n=(0,r.A)(o,s.XX,s.Yp,!1,null,"37492658",null),l=n.exports},1406:function(t,e,a){"use strict";var s=a(3999)["default"],i=s(a(5471)),o=s(a(9197)),r=s(a(9325)),n=s(a(5129)),l=s(a(1052));a(1475),a(6804);var c=a(465);i.default.config.productionTip=!1,i.default.use(l.default),(0,c.initNoEmojiGuard)(),new i.default({router:r.default,store:n.default,render:t=>t(o.default)}).$mount("#app")},1507:function(t,e,a){"use strict";var s=a(3999)["default"];Object.defineProperty(e,"B",{value:!0}),e.A=void 0;a(7723);var i=a(5952),o=s(a(9146));e.A={mixins:[o.default],name:"ProductList",mounted(){},methods:{formatPayType(t){try{const e=(t&&t.chain?String(t.chain):"").toUpperCase(),a=(t&&t.coin?String(t.coin):"").toUpperCase();return e&&a?`${e}-${a}`:e||a||""}catch(e){return""}},handleAddToCart(t){try{(0,i.addToCart)({id:t.id,title:t.title,price:t.price,image:t.image,quantity:1}),this.$message({message:"已添加到购物车",type:"success",showClose:!0})}catch(e){console.error("添加到购物车失败:",e),console.log("添加到购物车失败,请稍后重试")}}}}},1561:function(t,e,a){"use strict";Object.defineProperty(e,"B",{value:!0}),e.A=void 0,a(4114);var s=a(5705);e.A={data(){return{form:{name:"",description:"",image:""}}},mounted(){},methods:{hasEmoji(t){if(!t||"string"!==typeof t)return!1;const e=/[\u{1F300}-\u{1F6FF}\u{1F900}-\u{1F9FF}\u{1FA70}-\u{1FAFF}\u2600-\u27BF]/u;return e.test(t)},async fetchAddShop(){const t=await(0,s.getAddShop)(this.form);t&&200==t.code&&(this.$message({message:"店铺创建成功",type:"success",showClose:!0}),this.$router.push("/account/shops"))},handleDescriptionInput(t){t&&t.length>300&&(this.form.description=t.substring(0,300),this.$message({message:"店铺描述不能超过300个字符",type:"warning",showClose:!0}))},handleCreate(){const t=t=>"string"===typeof t&&t.length>0&&0===t.trim().length;if(this.form.name&&!t(this.form.name))if(this.hasEmoji(this.form.name))this.$message({message:"店铺名称不能包含表情符号",type:"warning",showClose:!0});else if(this.form.name&&this.form.name.length>30)this.$message({message:"店铺名称不能超过30个字符",type:"warning",showClose:!0});else if(t(this.form.description))this.$message({message:"店铺描述不能全是空格",type:"warning",showClose:!0});else{if(!(this.form.description&&this.form.description.length>300))return this.$route.query&&"1"===this.$route.query.hasShop?(this.$message({message:"每个用户仅允许一个店铺,无法新建",type:"warning",showClose:!0}),void this.$router.replace("/account/shops")):void(this.form.name?this.fetchAddShop(this.form):this.$message.error("店铺名称不能为空"));this.$message({message:"店铺描述不能超过300个字符",type:"warning",showClose:!0})}else this.$message({message:"店铺名称不能为空或全是空格",type:"warning",showClose:!0})}}}},1749:function(t,e,a){"use strict";a.r(e),a.d(e,{__esModule:function(){return i.B},default:function(){return l}});var s=a(5059),i=a(1561),o=i.A,r=a(845),n=(0,r.A)(o,s.XX,s.Yp,!1,null,"7f00bb86",null),l=n.exports},1867:function(t,e,a){"use strict";Object.defineProperty(e,"B",{value:!0}),e.A=void 0;var s=a(9662);e.A={name:"PurchasedDetail",data(){return{loading:!1,detail:{}}},created(){this.load()},methods:{async load(){const t=this.$route.params.id;if(t)try{this.loading=!0;const e=await(0,s.getOwnedById)({id:t});!e||0!==e.code&&200!==e.code||(this.detail=e.data)}catch(e){console.error("获取已购商品详情失败",e)}finally{this.loading=!1}else this.$message({message:"订单项ID缺失,请重新进入",type:"error",showClose:!0})},formatDateTime(t){if(!t)return"—";try{const e=String(t);return e.includes("T")?e.replace("T"," "):e}catch(e){return String(t)}}}}},1872:function(t,e){"use strict";Object.defineProperty(e,"B",{value:!0}),e.A=void 0;e.A={name:"Content"}},1910:function(t,e){"use strict";e.Yp=e.XX=void 0;e.XX=function(){var t=this,e=t._self._c;return e("div",{staticClass:"account-page"},[e("div",{staticClass:"account-layout"},[e("aside",{staticClass:"sidebar"},[e("nav",{staticClass:"side-nav"},[e("div",{directives:[{name:"show",rawName:"v-show",value:t.userEmail,expression:"userEmail"}],staticClass:"user-info-card",attrs:{role:"region","aria-label":"用户信息",tabindex:"0"}},[e("div",{staticClass:"user-meta"},[e("div",{staticClass:"user-email",attrs:{title:t.userEmail||"未登录"}},[t._v(t._s(t.userEmail||"未登录"))])])]),e("div",{staticClass:"user-role",attrs:{role:"group","aria-label":"导航分组切换"}},[e("button",{staticClass:"role-button",class:{active:"buyer"===t.activeRole},attrs:{"aria-pressed":"buyer"===t.activeRole,tabindex:"0"},on:{click:function(e){return t.handleClickRole("buyer")},keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:(e.preventDefault(),t.handleClickRole("buyer"))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"space",32,e.key,[" ","Spacebar"])?null:(e.preventDefault(),t.handleClickRole("buyer"))}]}},[t._v("买家相关")]),e("button",{staticClass:"role-button",class:{active:"seller"===t.activeRole},attrs:{"aria-pressed":"seller"===t.activeRole,tabindex:"0"},on:{click:function(e){return t.handleClickRole("seller")},keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:(e.preventDefault(),t.handleClickRole("seller"))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"space",32,e.key,[" ","Spacebar"])?null:(e.preventDefault(),t.handleClickRole("seller"))}]}},[t._v("卖家相关")])]),t._l(t.displayedLinks,function(a){return e("router-link",{key:a.to,class:["side-link",t.isActiveLink(a.to)?"active":""],attrs:{to:a.to}},[t._v(t._s(a.label))])})],2)]),e("section",{staticClass:"content"},[e("router-view")],1)])])},e.Yp=[]},1968:function(t,e){"use strict";e.Yp=e.XX=void 0;e.XX=function(){var t=this,e=t._self._c;return e("div",{attrs:{id:"app"}},[e("router-view")],1)},e.Yp=[]},1977:function(t,e,a){"use strict";var s=a(3999)["default"];Object.defineProperty(e,"B",{value:!0}),e.A=void 0;var i=a(4180),o=s(a(8967));e.A={name:"AccountSellerOrders",components:{OrderList:o.default},data(){return{active:"7",orders:{7:[],8:[]},loading:!1}},created(){const t=this.$route&&this.$route.query&&this.$route.query.status?String(this.$route.query.status):null,e=localStorage.getItem("sellerOrderListActiveTab"),a=t||e||"7";this.active=a,this.fetchOrders(a)},methods:{handleTabClick(t){const e=t&&t.name?String(t.name):this.active;try{localStorage.setItem("sellerOrderListActiveTab",e)}catch(a){}this.fetchOrders(e)},async fetchOrders(t){const e=String(t);try{this.loading=!0;const a=await(0,i.getOrdersByStatusForSeller)({status:Number(t)}),s=null!=(a&&a.data)?a.data:a,o=Array.isArray(s)?s:Array.isArray(s&&s.rows)?s.rows:[];this.$set(this.orders,e,o)}catch(a){console.error("获取卖家订单失败",a)}finally{this.loading=!1}}}}},2038:function(t,e){"use strict";e.Yp=e.XX=void 0;e.XX=function(){var t=this,e=t._self._c;return e("el-container",{staticClass:"containerApp",staticStyle:{width:"100vw",height:"100vh"}},[e("el-header",{staticClass:"el-header"},[e("comHeard")],1),e("el-main",{staticClass:"el-main"},[e("appMain")],1)],1)},e.Yp=[]},2125:function(t,e){"use strict";e.Yp=e.XX=void 0;e.XX=function(){var t=this,e=t._self._c;return e("div",{staticClass:"funds-page"},[e("h3",{staticClass:"title",staticStyle:{"margin-bottom":"18px","text-align":"left"}},[t._v("资金流水")]),e("div",{staticClass:"tabs-card"},[e("el-tabs",{on:{"tab-click":t.handleTab},model:{value:t.active,callback:function(e){t.active=e},expression:"active"}},[e("el-tab-pane",{attrs:{label:"充值记录",name:"recharge"}},[e("div",{staticClass:"list-wrap"},[e("div",{staticClass:"list-header"},[e("span",{staticClass:"list-title"},[t._v("全部充值 ("+t._s(t.rechargeRows.length)+")")]),e("el-button",{attrs:{type:"primary",size:"small"},on:{click:t.loadRecharge}},[t._v("刷新")])],1),e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loading.recharge,expression:"loading.recharge"}],staticClass:"record-list"},[t._l(t.rechargeRows,function(a,s){return e("div",{key:t.getRowKey(a,s),staticClass:"record-item",class:t.statusClass(a.status),on:{click:function(e){return t.toggleExpand("recharge",a,s)}}},[e("div",{staticClass:"item-main"},[e("div",{staticClass:"item-left"},[e("div",{staticClass:"amount"},[t.formatAmount(a.amount,a.fromSymbol).truncated?e("el-tooltip",{attrs:{content:`${t.formatAmount(a.amount,a.fromSymbol).full} ${(a.fromSymbol||"USDT").toUpperCase()}`,placement:"top"}},[e("span",[t._v(" + "+t._s(t.formatAmount(a.amount,a.fromSymbol).text)+" "+t._s((a.fromSymbol||"USDT").toUpperCase())+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(" + "+t._s(t.formatAmount(a.amount,a.fromSymbol).text)+" "+t._s((a.fromSymbol||"USDT").toUpperCase())+" ")])],1),e("div",{staticClass:"chain"},[t._v(t._s(t.formatChain(a.fromChain)))])]),e("div",{staticClass:"item-right"},[e("div",{staticClass:"status"},[e("el-tag",{attrs:{type:t.getRechargeStatusType(a.status),size:"small"}},[t._v(t._s(t.getRechargeStatusText(a.status)))])],1),e("div",{staticClass:"time"},[t._v(t._s(t.formatFullTime(a.createTime)))])])]),e("div",{directives:[{name:"show",rawName:"v-show",value:t.isExpanded("recharge",a,s),expression:"isExpanded('recharge', row, idx)"}],staticClass:"expand-panel"},[e("div",{staticClass:"expand-grid"},[e("div",{staticClass:"expand-item"},[e("span",{staticClass:"label"},[t._v("充值地址")]),e("div",{staticClass:"value value-row"},[e("span",{staticClass:"mono-ellipsis",attrs:{title:a.fromAddress}},[t._v(t._s(a.fromAddress))]),e("el-button",{attrs:{type:"text",size:"mini",icon:"el-icon-document-copy"},on:{click:function(e){return e.stopPropagation(),t.handleCopy(a.fromAddress,"充值地址")}}},[t._v("复制")])],1)]),a.txHash?e("div",{staticClass:"expand-item"},[e("span",{staticClass:"label"},[t._v("交易哈希")]),e("div",{staticClass:"value value-row"},[e("span",{staticClass:"mono-ellipsis",attrs:{title:a.txHash}},[t._v(t._s(a.txHash))]),e("el-button",{attrs:{type:"text",size:"mini",icon:"el-icon-document-copy"},on:{click:function(e){return e.stopPropagation(),t.handleCopy(a.txHash,"交易哈希")}}},[t._v("复制")])],1)]):t._e()])])])}),t.rechargeRows.length?t._e():e("div",{staticClass:"empty"},[t._v("暂无充值记录")])],2)])]),e("el-tab-pane",{attrs:{label:"提现记录",name:"withdraw"}},[e("div",{staticClass:"list-wrap"},[e("div",{staticClass:"list-header"},[e("span",{staticClass:"list-title"},[t._v("全部提现 ("+t._s(t.withdrawRows.length)+")")]),e("el-button",{attrs:{type:"primary",size:"small"},on:{click:t.loadWithdraw}},[t._v("刷新")])],1),e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loading.withdraw,expression:"loading.withdraw"}],staticClass:"record-list"},[t._l(t.withdrawRows,function(a,s){return e("div",{key:t.getRowKey(a,s),staticClass:"record-item",class:t.statusClass(a.status),on:{click:function(e){return t.toggleExpand("withdraw",a,s)}}},[e("div",{staticClass:"item-main"},[e("div",{staticClass:"item-left"},[e("div",{staticClass:"amount"},[t.formatAmount(a.amount,a.toSymbol).truncated?e("el-tooltip",{attrs:{content:`${t.formatAmount(a.amount,a.toSymbol).full} ${(a.toSymbol||"USDT").toUpperCase()}`,placement:"top"}},[e("span",[t._v(" - "+t._s(t.formatAmount(a.amount,a.toSymbol).text)+" "+t._s((a.toSymbol||"USDT").toUpperCase())+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(" - "+t._s(t.formatAmount(a.amount,a.toSymbol).text)+" "+t._s((a.toSymbol||"USDT").toUpperCase())+" ")])],1),e("div",{staticClass:"chain"},[t._v(t._s(t.formatChain(a.toChain)))])]),e("div",{staticClass:"item-right"},[e("div",{staticClass:"status"},[e("el-tag",{attrs:{type:t.getWithdrawStatusType(a.status),size:"small"}},[t._v(t._s(t.getWithdrawStatusText(a.status)))])],1),e("div",{staticClass:"time"},[t._v(t._s(t.formatFullTime(a.createTime)))])])]),e("div",{directives:[{name:"show",rawName:"v-show",value:t.isExpanded("withdraw",a,s),expression:"isExpanded('withdraw', row, idx)"}],staticClass:"expand-panel"},[e("div",{staticClass:"expand-grid"},[e("div",{staticClass:"expand-item"},[e("span",{staticClass:"label"},[t._v("收款地址")]),e("div",{staticClass:"value value-row"},[e("span",{staticClass:"mono-ellipsis",attrs:{title:a.toAddress}},[t._v(t._s(a.toAddress))]),e("el-button",{attrs:{type:"text",size:"mini",icon:"el-icon-document-copy"},on:{click:function(e){return e.stopPropagation(),t.handleCopy(a.toAddress,"收款地址")}}},[t._v("复制")])],1)]),a.txHash?e("div",{staticClass:"expand-item"},[e("span",{staticClass:"label"},[t._v("交易哈希")]),e("div",{staticClass:"value value-row"},[e("span",{staticClass:"mono-ellipsis",attrs:{title:a.txHash}},[t._v(t._s(a.txHash))]),e("el-button",{attrs:{type:"text",size:"mini",icon:"el-icon-document-copy"},on:{click:function(e){return e.stopPropagation(),t.handleCopy(a.txHash,"交易哈希")}}},[t._v("复制")])],1)]):t._e()])])])}),t.withdrawRows.length?t._e():e("div",{staticClass:"empty"},[t._v("暂无提现记录")])],2)])]),e("el-tab-pane",{attrs:{label:"消费记录",name:"consume"}},[e("div",{staticClass:"list-wrap"},[e("div",{staticClass:"list-header"},[e("span",{staticClass:"list-title"},[t._v("全部消费 ("+t._s(t.consumeRows.length)+")")]),e("el-button",{attrs:{type:"primary",size:"small"},on:{click:t.loadConsume}},[t._v("刷新")])],1),e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loading.consume,expression:"loading.consume"}],staticClass:"record-list"},[t._l(t.consumeRows,function(a,s){return e("div",{key:t.getRowKey(a,s),staticClass:"record-item",class:t.statusClass(a.status),on:{click:function(e){return t.toggleExpand("consume",a,s)}}},[e("div",{staticClass:"item-main"},[e("div",{staticClass:"item-left"},[e("div",{staticClass:"amount"},[t.formatAmount(a.realAmount,a.fromSymbol).truncated?e("el-tooltip",{attrs:{content:`${t.formatAmount(a.realAmount,a.fromSymbol).full} ${(a.fromSymbol||"USDT").toUpperCase()}`,placement:"top"}},[e("span",[t._v(" - "+t._s(t.formatAmount(a.realAmount,a.fromSymbol).text)+" "+t._s((a.fromSymbol||"USDT").toUpperCase())+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(" - "+t._s(t.formatAmount(a.realAmount,a.fromSymbol).text)+" "+t._s((a.fromSymbol||"USDT").toUpperCase())+" ")])],1),e("div",{staticClass:"chain"},[t._v(t._s(t.formatChain(a.fromChain)))])]),e("div",{staticClass:"item-right"},[e("div",{staticClass:"status"},[e("el-tag",{attrs:{type:t.getPayStatusType(a.status),size:"small"}},[t._v(t._s(t.getPayStatusText(a.status)))])],1),e("div",{staticClass:"time"},[t._v(t._s(t.formatFullTime(a.createTime||a.time)))])])]),e("div",{directives:[{name:"show",rawName:"v-show",value:t.isExpanded("consume",a,s),expression:"isExpanded('consume', row, idx)"}],staticClass:"expand-panel"},[e("div",{staticClass:"expand-grid"},[e("div",{staticClass:"expand-item"},[e("span",{staticClass:"label"},[t._v("订单号")]),e("span",{staticClass:"value mono"},[t._v(t._s(a.orderId||""))])]),e("div",{staticClass:"expand-item"},[e("span",{staticClass:"label"},[t._v("支付地址")]),e("span",{staticClass:"value mono-ellipsis",attrs:{title:a.fromAddress}},[t._v(t._s(a.fromAddress||""))])]),e("div",{staticClass:"expand-item"},[e("span",{staticClass:"label"},[t._v("收款地址")]),e("span",{staticClass:"value mono-ellipsis",attrs:{title:a.toAddress}},[t._v(t._s(a.toAddress||""))])]),a.txHash?e("div",{staticClass:"expand-item"},[e("span",{staticClass:"label"},[t._v("交易哈希")]),e("span",{staticClass:"value mono-ellipsis",attrs:{title:a.txHash}},[t._v(t._s(a.txHash))])]):t._e()])])])}),t.consumeRows.length?t._e():e("div",{staticClass:"empty"},[t._v("暂无消费记录")])],2)])])],1),e("el-row",[e("el-col",{staticStyle:{display:"flex","justify-content":"center"},attrs:{span:24}},[e("el-pagination",{staticStyle:{margin:"0 auto","margin-top":"10px"},attrs:{"current-page":t.currentPage,"page-sizes":t.pageSizes,"page-size":t.pagination.pageSize,layout:"total, sizes, prev, pager, next, jumper",total:t.total},on:{"size-change":t.handleSizeChange,"current-change":t.handleCurrentChange,"update:currentPage":function(e){t.currentPage=e},"update:current-page":function(e){t.currentPage=e}}})],1)],1)],1)])},e.Yp=[]},2172:function(t,e){"use strict";e.Yp=e.XX=void 0;e.XX=function(){var t=this,e=t._self._c;return e("div",{staticClass:"wallet-container"},[e("div",{staticClass:"wallet-toolbar",attrs:{role:"region","aria-label":"钱包操作"}},[e("el-button",{staticClass:"create-wallet-btn",attrs:{type:"primary"},on:{click:t.openCreateWallet}},[e("i",{staticClass:"el-icon-plus",staticStyle:{"margin-right":"6px"}}),t._v("充值 ")])],1),e("section",{staticClass:"wallet-card-section"},t._l(t.walletList,function(a){return e("div",{key:a.id,staticClass:"wallet-card"},[e("div",{staticClass:"wallet-header"},[e("h2",{staticClass:"wallet-title"},[e("i",{staticClass:"el-icon-wallet"}),t._v(" 我的钱包 "),e("el-tag",{staticStyle:{"margin-left":"8px"},attrs:{size:"mini",effect:"dark"}},[t._v(" "+t._s((a.fromChain||a.chain||"").toUpperCase())+" "+t._s((a.fromSymbol||a.coin||"").toUpperCase())+" ")])],1),e("div",{staticClass:"wallet-balance"},[e("div",{staticClass:"balance-item"},[e("span",{staticClass:"balance-label"},[t._v("可用余额")]),e("span",{staticClass:"balance-amount"},[t._v(t._s(a.walletBalance||a.balance||0)+" "+t._s(t.displaySymbol(a)))])]),e("div",{staticClass:"balance-item"},[e("el-tooltip",{attrs:{placement:"top",effect:"dark"}},[e("div",{attrs:{slot:"content"},slot:"content"},[t._v(" 冻结金额不能使用或提现,以下情况会冻结钱包余额:"),e("br"),t._v(" 1. 下单机器后会冻结订单对应金额"),e("br"),t._v(" 2. 提交提现后,金额正在提现中 ")]),e("i",{staticClass:"el-icon-question balance-tip-icon"})]),e("span",{staticClass:"balance-label"},[t._v("冻结余额")]),e("span",{staticClass:"balance-amount frozen"},[t._v(t._s(a.blockedBalance||0)+" "+t._s(t.displaySymbol(a)))])],1),e("el-button",{staticClass:"withdraw-inline-btn",attrs:{type:"success",size:"mini"},on:{click:function(e){return t.handleWithdraw(a)}}},[t._v(" 提现 ")])],1)])])}),0),e("div",{staticClass:"transaction-section"},[e("h3",{staticClass:"section-title"},[t._v("最近交易")]),e("div",{staticClass:"transaction-list"},[t._l(t.recentTransactions,function(a){return e("div",{key:a.id,staticClass:"transaction-item"},[e("div",{staticClass:"transaction-info"},[e("span",{staticClass:"transaction-type"},[t._v(t._s(a.type))]),e("span",{staticClass:"transaction-time"},[t._v(t._s(a.time))]),e("el-tag",{staticClass:"transaction-status",attrs:{size:"mini",type:a.statusTagType||"info"}},[t._v(" "+t._s(a.statusText||"-")+" ")])],1),e("div",{staticClass:"transaction-amount",class:a.amount>0?"positive":"negative"},[t._v(" "+t._s(a.amount>0?"+":"")+t._s(a.amountText)+" USDT ")])])}),0===t.recentTransactions.length?e("div",{staticClass:"empty-state"},[t._v(" 暂无交易记录 ")]):t._e()],2)]),e("el-dialog",{attrs:{title:"钱包余额充值",visible:t.rechargeDialogVisible,width:"660px"},on:{"update:visible":function(e){t.rechargeDialogVisible=e},close:t.resetRechargeForm}},[e("div",{staticClass:"recharge-content"},[e("div",{staticClass:"wallet-address-section"},[e("h4",{staticClass:"section-title"},[t._v("钱包地址")]),e("div",{staticClass:"charge-meta"},[e("el-tag",{staticClass:"meta-tag",attrs:{size:"small",effect:"dark",type:"warning"}},[e("i",{staticClass:"el-icon-link"}),e("span",{staticClass:"meta-title"},[t._v("充值链:")]),e("span",{staticClass:"meta-val"},[t._v(t._s((t.WalletData.fromChain||t.WalletData.chain||"").toString().toUpperCase()))])]),e("el-tag",{staticClass:"meta-tag",attrs:{size:"small",effect:"dark",type:"warning"}},[e("i",{staticClass:"el-icon-coin"}),e("span",{staticClass:"meta-title"},[t._v("充值币种:")]),e("span",{staticClass:"meta-val"},[t._v(t._s((t.WalletData.fromSymbol||t.WalletData.coin||"").toString().toUpperCase()))])])],1),e("div",{staticClass:"address-container"},[e("el-input",{staticClass:"address-input",attrs:{readonly:"",disabled:!0},model:{value:t.WalletData.fromAddress,callback:function(e){t.$set(t.WalletData,"fromAddress",e)},expression:"WalletData.fromAddress"}}),e("el-button",{staticClass:"copy-btn",attrs:{type:"primary",size:"small"},on:{click:function(e){return t.copyAddress(t.WalletData.fromAddress)}}},[t._v(" 复制 ")])],1),e("p",{staticClass:"address-tip"},[t._v("请向此地址转账非"+t._s(t.displaySymbol(t.WalletData))+"资产,否则资产将无法找回.")])]),e("div",{staticClass:"qr-code-section"},[e("h4",{staticClass:"section-title"},[t._v("扫码充值")]),e("div",{staticClass:"qr-code-container"},[e("div",{ref:"qrCodeRef",staticClass:"qr-code"}),e("p",{staticClass:"qr-tip"},[t._v("使用支持"+t._s(t.displaySymbol(t.WalletData))+"的钱包扫描二维码")])])]),e("div",{staticClass:"recharge-notice"},[e("h4",{staticClass:"section-title"},[t._v("充值说明")]),e("ul",{staticClass:"notice-list"},[e("li",[t._v("充值后请耐心等待余额更新或在资金流水页面查看最新充值记录")]),e("li",[t._v("最小充值金额:10 "+t._s(t.displaySymbol(t.WalletData)))])])])]),e("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[e("el-button",{on:{click:function(e){t.rechargeDialogVisible=!1}}},[t._v("关闭")])],1)]),e("el-dialog",{attrs:{title:"USDT提现",visible:t.withdrawDialogVisible,width:"720px","close-on-click-modal":!1,"close-on-press-escape":!1},on:{"update:visible":function(e){t.withdrawDialogVisible=e},close:t.resetWithdrawForm}},[e("el-form",{ref:"withdrawForm",attrs:{model:t.withdrawForm,rules:t.withdrawRules,"label-width":"120px"}},[e("el-form-item",{attrs:{label:"提现链"}},[e("el-input",{staticStyle:{width:"100%"},attrs:{value:(t.WalletData.fromChain||t.WalletData.chain||t.withdrawForm.toChain||"").toString().toUpperCase(),disabled:!0}})],1),e("el-form-item",{attrs:{label:"提现币种"}},[e("el-input",{staticStyle:{width:"100%"},attrs:{value:t.displayWithdrawSymbol,disabled:!0}})],1),e("el-form-item",{attrs:{label:"提现金额",prop:"amount"}},[e("el-input",{staticStyle:{width:"100%"},attrs:{placeholder:"请输入提现金额",inputmode:"decimal"},on:{input:t.handleAmountInput},model:{value:t.withdrawForm.amount,callback:function(e){t.$set(t.withdrawForm,"amount",e)},expression:"withdrawForm.amount"}},[e("template",{slot:"append"},[t._v(t._s(t.displayWithdrawSymbol))])],2),e("div",{staticClass:"balance-info"},[e("div",{staticClass:"balance-total"},[t._v("钱包总余额:"+t._s(t.totalBalance)+" "+t._s(t.displayWithdrawSymbol))]),e("div",{staticClass:"balance-row"},[e("span",[t._v("可用余额:"+t._s(t.availableWithdrawBalance)+" "+t._s(t.displayWithdrawSymbol))]),e("span",{staticClass:"divider"},[t._v("|")]),e("span",{staticClass:"frozen-info"},[e("el-tooltip",{attrs:{placement:"top",effect:"dark"}},[e("div",{attrs:{slot:"content"},slot:"content"},[t._v(" 冻结金额不能使用或提现,以下情况会冻结钱包余额:"),e("br"),t._v(" 1. 下单机器后会冻结订单对应金额"),e("br"),t._v(" 2. 提交提现后,金额正在提现中 ")]),e("i",{staticClass:"el-icon-question frozen-tip-icon"})]),t._v(" 冻结余额:"+t._s(t.WalletData.blockedBalance||0)+" "+t._s(t.displayWithdrawSymbol)+" "),e("span",{staticClass:"frozen-tip"},[t._v("(购买机器下单后冻结,不可提现)")])],1)])])],1),e("el-form-item",{attrs:{label:"手续费"}},[e("el-input",{staticStyle:{width:"100%"},attrs:{placeholder:"手续费",disabled:!0},model:{value:t.withdrawForm.fee,callback:function(e){t.$set(t.withdrawForm,"fee",e)},expression:"withdrawForm.fee"}},[e("template",{slot:"append"},[t._v(t._s(t.displayWithdrawSymbol))])],2),e("div",{staticClass:"fee-info"},[t._v(" 网络手续费:"+t._s(t.withdrawForm.fee||"0.00")+" "+t._s(t.displayWithdrawSymbol)+" ")])],1),e("el-form-item",{attrs:{label:"实际到账"}},[e("el-input",{staticStyle:{width:"100%"},attrs:{placeholder:"实际到账金额",disabled:!0},model:{value:t.actualAmount,callback:function(e){t.actualAmount=e},expression:"actualAmount"}},[e("template",{slot:"append"},[t._v(t._s(t.displayWithdrawSymbol))])],2),e("div",{staticClass:"actual-amount-info"},[t._v(" 实际到账:"+t._s(t.actualAmount)+" "+t._s(t.displayWithdrawSymbol)+" ")])],1),e("el-form-item",{attrs:{label:"收款地址",prop:"toAddress"}},[e("el-input",{staticStyle:{width:"100%"},attrs:{type:"textarea",rows:3,placeholder:"请输入收款钱包地址"},model:{value:t.withdrawForm.toAddress,callback:function(e){t.$set(t.withdrawForm,"toAddress",e)},expression:"withdrawForm.toAddress"}}),e("div",{staticClass:"address-tip"},[t._v(" 请确保地址正确,错误地址将导致资产丢失 ")])],1),e("el-form-item",{attrs:{label:"谷歌验证码",prop:"googleCode"}},[e("el-input",{ref:"googleCodeInput",staticStyle:{width:"100%"},attrs:{placeholder:"请输入6位谷歌验证码",maxlength:"6"},on:{input:t.handleGoogleCodeInput},model:{value:t.withdrawForm.googleCode,callback:function(e){t.$set(t.withdrawForm,"googleCode",e)},expression:"withdrawForm.googleCode"}},[e("template",{slot:"prepend"},[e("i",{staticClass:"el-icon-key"})])],2),e("div",{staticClass:"google-code-tip"},[t._v(" 为了保障您的账户安全,请输入您的谷歌验证器中的6位验证码 ")])],1)],1),e("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[e("el-button",{on:{click:function(e){t.withdrawDialogVisible=!1}}},[t._v("取消")]),e("el-button",{attrs:{type:"primary",loading:t.withdrawLoading},on:{click:t.confirmWithdraw}},[t._v("确认提现")])],1)],1),e("el-dialog",{attrs:{title:"链上充值",visible:t.createDialogVisible,"close-on-click-modal":!1,"close-on-press-escape":!1,width:"520px"},on:{"update:visible":function(e){t.createDialogVisible=e}}},[e("el-form",{attrs:{"label-width":"120px"}},[e("el-form-item",{attrs:{label:"选择充值链/币种"}},[e("el-cascader",{staticStyle:{width:"100%"},attrs:{options:t.options},model:{value:t.createValue,callback:function(e){t.createValue=e},expression:"createValue"}})],1)],1),e("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[e("el-button",{on:{click:function(e){t.createDialogVisible=!1}}},[t._v("取消")]),e("el-button",{attrs:{type:"primary",loading:t.createLoading},on:{click:t.confirmCreateWallet}},[t._v("确定")])],1)],1)],1)},e.Yp=[]},2224:function(t,e,a){"use strict";e.Yp=e.XX=void 0;e.XX=function(){var t=this,e=t._self._c;return e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.productListLoading,expression:"productListLoading"}],staticClass:"product-list"},[e("section",{staticClass:"container"},[e("h1",{staticClass:"page-title"},[t._v("商品列表")]),e("section",{staticClass:"filter-section"},[e("label",{staticClass:"required",staticStyle:{"margin-bottom":"10px"}},[t._v("币种选择:")]),e("div",{staticClass:"filter-row"},[e("el-select",{ref:"screen",staticClass:"input",attrs:{size:"middle",placeholder:"请选择",clearable:""},on:{change:t.handleCurrencyChange,clear:t.handleCurrencyClear},model:{value:t.screenCurrency,callback:function(e){t.screenCurrency=e},expression:"screenCurrency"}},t._l(t.currencyList,function(a){return e("el-option",{key:a.value,attrs:{label:a.label,value:a.value}},[e("div",{staticStyle:{display:"flex","align-items":"center"}},[e("img",{staticStyle:{float:"left",width:"20px"},attrs:{src:a.imgUrl}}),e("span",{staticStyle:{float:"left","margin-left":"5px"}},[t._v(t._s(a.label))])])])}),1),e("el-input",{staticStyle:{width:"240px"},attrs:{size:"middle",placeholder:"输入算法关键词",clearable:""},on:{clear:t.handleAlgorithmClear},nativeOn:{keyup:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.handleAlgorithmSearch.apply(null,arguments)}},scopedSlots:t._u([{key:"append",fn:function(){return[e("el-button",{attrs:{type:"primary"},on:{click:t.handleAlgorithmSearch}},[t._v("搜索")])]},proxy:!0}]),model:{value:t.searchAlgorithm,callback:function(e){t.searchAlgorithm=e},expression:"searchAlgorithm"}})],1)]),e("div",{staticClass:"product-list-grid"},[t._l(t.products,function(s){return e("div",{key:s.id,staticClass:"product-item",attrs:{tabindex:"0","aria-label":"查看详情"},on:{click:function(e){return t.handleProductClick(s)}}},[e("img",{staticClass:"product-image",attrs:{src:a(6278),alt:s.name}}),e("div",{staticClass:"product-info"},[e("h4",[t._v("商品: "+t._s(s.name))]),e("p",{staticStyle:{"font-size":"16px","margin-top":"10px","font-weight":"bold"}},[t._v("算法: "+t._s(s.algorithm))]),e("div",{staticClass:"product-footer"},[e("div",{staticClass:"paytypes"},[e("span",{staticClass:"paytypes-label"},[t._v("支付方式:")]),t._l(s.payTypes||[],function(a,s){return e("el-tooltip",{key:s,attrs:{content:t.formatPayType(a),placement:"top","open-delay":80}},[e("img",{staticClass:"paytype-icon",attrs:{src:a.image,alt:t.formatPayType(a)}})])})],2),e("div",{staticClass:"right-meta"},[e("span",{staticClass:"product-sold",attrs:{"aria-label":"已售数量"}},[t._v("已售:"+t._s(s&&null!=s.saleNumber?s.saleNumber:0))]),e("span",{staticClass:"shop-name"},[t._v("店铺:"+t._s(s&&(s.shopName||s.name)))])])])])])}),0!==t.products.length||t.productListLoading?t._e():e("div",{staticClass:"empty-state"},[e("i",{staticClass:"el-icon-goods"}),e("p",[t._v("暂无商品数据")]),e("p",{staticStyle:{"font-size":"12px",color:"#999","margin-top":"8px"}},[t._v("请检查网络连接或联系管理员")])])],2)])])},e.Yp=[]},2389:function(t,e){"use strict";e.Yp=e.XX=void 0;e.XX=function(){var t=this,e=t._self._c;return e("div",{staticClass:"order-detail-page"},[e("h2",{staticClass:"title"},[t._v("订单详情")]),t.loading?e("div",{staticClass:"loading"},[t._v("加载中...")]):e("div",[e("el-card",{staticClass:"section"},[e("div",{staticClass:"row"},[e("span",{staticClass:"label"},[t._v("订单ID:")]),e("span",{staticClass:"value mono"},[t._v(t._s(t.order.id||"—"))])]),e("div",{staticClass:"row"},[e("span",{staticClass:"label"},[t._v("订单号:")]),e("span",{staticClass:"value mono"},[t._v(t._s(t.order.orderNumber||"—"))])]),e("div",{staticClass:"row"},[e("span",{staticClass:"label"},[t._v("状态:")]),e("span",{staticClass:"value"},[t._v(t._s(t.getOrderStatusText(t.order.status)))])]),e("div",{staticClass:"row"},[e("span",{staticClass:"label"},[t._v("金额(USDT):")]),e("span",{staticClass:"value strong"},[t._v(t._s(t.order.totalPrice))])]),e("div",{staticClass:"row"},[e("span",{staticClass:"label"},[t._v("创建时间:")]),e("span",{staticClass:"value"},[t._v(t._s(t.formatDateTime(t.order.createTime)))])])]),e("el-card",{staticClass:"section",staticStyle:{"margin-top":"12px"}},[e("div",{staticClass:"sub-title"},[t._v("机器列表")]),e("el-table",{staticStyle:{width:"100%"},attrs:{data:t.items,border:"",size:"small","header-cell-style":{textAlign:"left"},"cell-style":{textAlign:"left"}}},[e("el-table-column",{attrs:{prop:"productMachineId",label:"机器ID","min-width":"120"}}),e("el-table-column",{attrs:{prop:"name",label:"名称","min-width":"160"}}),e("el-table-column",{attrs:{prop:"payCoin",label:"币种","min-width":"100"}}),e("el-table-column",{attrs:{prop:"leaseTime",label:"租赁天数","min-width":"100"}}),e("el-table-column",{attrs:{prop:"price",label:"单价(USDT)","min-width":"120"}}),e("el-table-column",{attrs:{prop:"address",label:"收款地址","min-width":"240"}})],1)],1),e("div",{staticClass:"actions"},[e("el-button",{on:{click:function(e){return t.$router.back()}}},[t._v("返回")])],1)],1)])},e.Yp=[]},2515:function(t,e,a){"use strict";Object.defineProperty(e,"B",{value:!0}),e.A=void 0,a(8111),a(1701),a(7642),a(8004),a(3853),a(5876),a(2475),a(5024),a(1698);var s=a(6299),i=a(4981);e.A={name:"AccountFundsFlow",data(){return{active:"recharge",loading:{recharge:!1,withdraw:!1,consume:!1},rechargeRows:[],withdrawRows:[],consumeRows:[],expandedKeys:new Set,total:0,pageSizes:[10,20,50],currentPage:1,pagination:{pageNum:1,pageSize:10,status:2}}},mounted(){const t=this.$route&&this.$route.query&&this.$route.query.tab||"recharge";["recharge","withdraw","consume"].includes(t)&&(this.active=t),this.pagination.status=this.getStatusByTab(this.active),this.loadList()},methods:{formatAmount(t,e){return(0,i.truncateAmountByCoin)(t,e)},handleTab(t,e){this.expandedKeys.clear(),this.expandedKeys=new Set(this.expandedKeys);const a=t&&t.name||this.active;this.pagination.status=this.getStatusByTab(a),this.pagination.pageNum=1,this.currentPage=1,this.loadList()},getRowKey(t,e){const a=null!=e?`#${e}`:"";if(!t)return String(null!=e?e:"");const s=t.__key||t.id||t.txHash||t.orderId||`${t.createTime||""}-${t.updateTime||""}`;return null==s||""===s?String(null!=e?e:""):`${String(s)}${a}`},isExpanded(t,e,a){const s=`${t}-${this.getRowKey(e,a)}`;return this.expandedKeys.has(s)},toggleExpand(t,e,a){const s=`${t}-${this.getRowKey(e,a)}`;this.expandedKeys.has(s)?this.expandedKeys.clear():(this.expandedKeys.clear(),this.expandedKeys.add(s)),this.expandedKeys=new Set(this.expandedKeys)},async loadList(){const t=Number(this.pagination.status),e=this.getTypeKeyByStatus(t);if(e){this.loading[e]=!0;try{const e=await(0,s.transactionRecord)({pageNum:this.pagination.pageNum,pageSize:this.pagination.pageSize,status:t}),a=e?.rows||e?.data?.rows||[];this.total=e?.total||e?.data?.total||(Array.isArray(a)?a.length:0);const i=(Array.isArray(a)?a:[]).map((t,e)=>({...t,__key:t.id||t.txHash||t.orderId||`${e}`}));2===t?this.rechargeRows=i:1===t?this.withdrawRows=i:this.consumeRows=i,this.expandedKeys.clear(),this.expandedKeys=new Set(this.expandedKeys)}finally{this.loading[e]=!1}}},loadByStatus(t){return this.pagination.status=t,this.active=this.getTabByStatus(t),this.pagination.pageNum=1,this.currentPage=1,this.loadList()},loadRecharge(){return this.loadByStatus(2)},loadWithdraw(){return this.loadByStatus(1)},loadConsume(){return this.loadByStatus(0)},statusClass(t){return{0:"failed",1:"success",2:"pending"}[t]||"neutral"},getRechargeStatusType(t){return{0:"danger",1:"success",2:"warning"}[t]||"info"},getRechargeStatusText(t){return{0:"充值失败",1:"充值成功",2:"充值中",3:"证书校验失败"}[t]||"未知"},getWithdrawStatusType(t){return{0:"danger",1:"success",2:"warning"}[t]||"info"},getWithdrawStatusText(t){return{0:"提现失败",1:"提现成功",2:"提现中",3:"证书校验失败"}[t]||"未知"},getPayStatusType(t){return{0:"danger",1:"success",2:"warning",3:"danger"}[t]||"info"},getPayStatusText(t){return{0:"支付失败",1:"支付成功",2:"待校验",3:"证书校验失败"}[t]||"未知"},formatChain(t){if(!t)return"";const e=String(t).toLowerCase(),a={tron:"TRON",trx:"TRON",eth:"ETH",ethereum:"ETH",bsc:"BSC",polygon:"POLYGON",matic:"POLYGON"};return(a[e]||String(t)).toUpperCase()},formatFullTime(t){if(!t)return"";try{return new Date(t).toLocaleString("zh-CN")}catch(e){return String(t)}},formatTime(t){return this.formatFullTime(t)},formatTrunc(t,e=2){const a=Number(t);if(!Number.isFinite(a))return"0";const s=Math.max(0,Number(e)||0),i=Math.pow(10,s),o=Math.trunc(a*i)/i,r=String(o);if(0===s)return r;const[n,l=""]=r.split("."),c=l.padEnd(s,"0");return`${n}.${c}`},handleSizeChange(t){console.log(`每页 ${t} 条`),this.pagination.pageSize=t,this.pagination.pageNum=1,this.currentPage=1,this.loadList()},handleCurrentChange(t){console.log(`当前页: ${t}`),this.pagination.pageNum=t,this.loadList()},async handleCopy(t,e="内容"){try{const a=String(t||"");if(navigator&&navigator.clipboard&&navigator.clipboard.writeText)await navigator.clipboard.writeText(a);else{const t=document.createElement("textarea");t.value=a,t.style.position="fixed",t.style.left="-9999px",document.body.appendChild(t),t.focus(),t.select(),document.execCommand("copy"),document.body.removeChild(t)}this.$message.success(`${e}已复制`)}catch(a){this.$message.error("复制失败,请手动选择复制")}},getStatusByTab(t){return"recharge"===t?2:"withdraw"===t?1:0},getTabByStatus(t){return 2===Number(t)?"recharge":1===Number(t)?"withdraw":"consume"},getTypeKeyByStatus(t){return 2===Number(t)?"recharge":1===Number(t)?"withdraw":0===Number(t)?"consume":""}}}},2553:function(t,e){"use strict";e.Yp=e.XX=void 0;e.XX=function(){var t=this,e=t._self._c;return e("div",{staticClass:"recharge-record-container"},[t._m(0),e("div",{staticClass:"tab-container"},[e("el-tabs",{on:{"tab-click":t.handleTabClick},model:{value:t.activeTab,callback:function(e){t.activeTab=e},expression:"activeTab"}},[e("el-tab-pane",{attrs:{label:"充值中",name:"pending"}},[e("div",{staticClass:"tab-content"},[e("div",{staticClass:"list-header"},[e("span",{staticClass:"list-title"},[t._v("充值中 ("+t._s(t.pendingRecharges.length)+")")]),e("el-button",{attrs:{type:"primary",size:"small"},on:{click:t.refreshData}},[e("i",{staticClass:"el-icon-refresh"}),t._v(" 刷新 ")])],1),e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],staticClass:"recharge-list"},[t._l(t.pendingRecharges,function(a){return e("div",{key:a.id,staticClass:"recharge-item pending",on:{click:function(e){return t.showDetail(a)}}},[e("div",{staticClass:"item-main"},[e("div",{staticClass:"item-left"},[e("div",{staticClass:"amount"},[t._v(" "+t._s(a.amount)+" "+t._s(a.fromSymbol||"USDT")+" ")]),e("div",{staticClass:"chain"},[t._v(t._s(t.getChainName(a.fromChain)))])]),e("div",{staticClass:"item-right"},[e("div",{staticClass:"status pending-status"},[e("i",{staticClass:"el-icon-loading"}),t._v(" "+t._s(t.getStatusText(a.status))+" ")]),e("div",{staticClass:"time"},[t._v(t._s(t.formatTime(a.createTime)))])])]),e("div",{staticClass:"item-footer"},[e("div",{staticClass:"footer-left"},[e("span",{staticClass:"address"},[t._v(t._s(t.formatAddress(a.address)))]),a.txHash?e("span",{staticClass:"tx-hash"},[e("i",{staticClass:"el-icon-link"}),t._v(" "+t._s(t.formatAddress(a.txHash))+" ")]):t._e()]),e("i",{staticClass:"el-icon-arrow-right"})])])}),0===t.pendingRecharges.length?e("div",{staticClass:"empty-state"},[e("i",{staticClass:"el-icon-document"}),e("p",[t._v("暂无充值中的记录")])]):t._e()],2)])]),e("el-tab-pane",{attrs:{label:"充值成功",name:"success"}},[e("div",{staticClass:"tab-content"},[e("div",{staticClass:"list-header"},[e("span",{staticClass:"list-title"},[t._v("充值成功 ("+t._s(t.successRecharges.length)+")")]),e("el-button",{attrs:{type:"primary",size:"small"},on:{click:t.refreshData}},[e("i",{staticClass:"el-icon-refresh"}),t._v(" 刷新 ")])],1),e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],staticClass:"recharge-list"},[t._l(t.successRecharges,function(a){return e("div",{key:a.id,staticClass:"recharge-item success",on:{click:function(e){return t.showDetail(a)}}},[e("div",{staticClass:"item-main"},[e("div",{staticClass:"item-left"},[e("div",{staticClass:"amount"},[t._v(" "+t._s(a.amount)+" "+t._s(a.fromSymbol||"USDT")+" ")]),e("div",{staticClass:"chain"},[t._v(t._s(t.getChainName(a.fromChain)))])]),e("div",{staticClass:"item-right"},[e("div",{staticClass:"status success-status"},[e("i",{staticClass:"el-icon-check"}),t._v(" "+t._s(t.getStatusText(a.status))+" ")]),e("div",{staticClass:"time"},[t._v(t._s(t.formatTime(a.createTime)))])])]),e("div",{staticClass:"item-footer"},[e("div",{staticClass:"footer-left"},[e("span",{staticClass:"address"},[t._v(t._s(t.formatAddress(a.address)))]),a.txHash?e("span",{staticClass:"tx-hash"},[e("i",{staticClass:"el-icon-link"}),t._v(" "+t._s(t.formatAddress(a.txHash))+" ")]):t._e()]),e("i",{staticClass:"el-icon-arrow-right"})])])}),0===t.successRecharges.length?e("div",{staticClass:"empty-state"},[e("i",{staticClass:"el-icon-document"}),e("p",[t._v("暂无充值成功的记录")])]):t._e()],2)])]),e("el-tab-pane",{attrs:{label:"充值失败",name:"failed"}},[e("div",{staticClass:"tab-content"},[e("div",{staticClass:"list-header"},[e("span",{staticClass:"list-title"},[t._v("充值失败 ("+t._s(t.failedRecharges.length)+")")]),e("el-button",{attrs:{type:"primary",size:"small"},on:{click:t.refreshData}},[e("i",{staticClass:"el-icon-refresh"}),t._v(" 刷新 ")])],1),e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],staticClass:"recharge-list"},[t._l(t.failedRecharges,function(a){return e("div",{key:a.id,staticClass:"recharge-item failed",on:{click:function(e){return t.showDetail(a)}}},[e("div",{staticClass:"item-main"},[e("div",{staticClass:"item-left"},[e("div",{staticClass:"amount"},[t._v(" "+t._s(a.amount)+" "+t._s(a.fromSymbol||"USDT")+" ")]),e("div",{staticClass:"chain"},[t._v(t._s(t.getChainName(a.fromChain)))])]),e("div",{staticClass:"item-right"},[e("div",{staticClass:"status failed-status"},[e("i",{staticClass:"el-icon-close"}),t._v(" "+t._s(t.getStatusText(a.status))+" ")]),e("div",{staticClass:"time"},[t._v(t._s(t.formatTime(a.createTime)))])])]),e("div",{staticClass:"item-footer"},[e("div",{staticClass:"footer-left"},[e("span",{staticClass:"address"},[t._v(t._s(t.formatAddress(a.address)))]),a.txHash?e("span",{staticClass:"tx-hash"},[e("i",{staticClass:"el-icon-link"}),t._v(" "+t._s(t.formatAddress(a.txHash))+" ")]):t._e()]),e("i",{staticClass:"el-icon-arrow-right"})])])}),0===t.failedRecharges.length?e("div",{staticClass:"empty-state"},[e("i",{staticClass:"el-icon-document"}),e("p",[t._v("暂无充值失败的记录")])]):t._e()],2)])])],1),e("el-row",[e("el-col",{staticStyle:{display:"flex","justify-content":"center"},attrs:{span:24}},[e("el-pagination",{staticStyle:{margin:"0 auto","margin-top":"10px"},attrs:{"current-page":t.currentPage,"page-sizes":t.pageSizes,"page-size":t.pagination.pageSize,layout:"total, sizes, prev, pager, next, jumper",total:t.total},on:{"size-change":t.handleSizeChange,"current-change":t.handleCurrentChange,"update:currentPage":function(e){t.currentPage=e},"update:current-page":function(e){t.currentPage=e}}})],1)],1)],1),e("el-dialog",{attrs:{title:"充值详情",visible:t.detailDialogVisible,width:"600px"},on:{"update:visible":function(e){t.detailDialogVisible=e},close:t.closeDetail}},[t.selectedItem?e("div",{staticClass:"detail-content"},[e("div",{staticClass:"detail-section"},[e("h3",{staticClass:"section-title"},[t._v("基本信息")]),e("div",{staticClass:"detail-list"},[e("div",{staticClass:"detail-row"},[e("span",{staticClass:"detail-label"},[t._v("充值ID")]),e("span",{staticClass:"detail-value"},[t._v(t._s(t.selectedItem.id))])]),e("div",{staticClass:"detail-row"},[e("span",{staticClass:"detail-label"},[t._v("充值金额")]),e("span",{staticClass:"detail-value amount"},[t._v(t._s(t.selectedItem.amount)+" "+t._s(t.selectedItem.fromSymbol||"USDT"))])]),e("div",{staticClass:"detail-row"},[e("span",{staticClass:"detail-label"},[t._v("区块链网络")]),e("span",{staticClass:"detail-value"},[t._v(t._s(t.getChainName(t.selectedItem.fromChain)))])]),e("div",{staticClass:"detail-row"},[e("span",{staticClass:"detail-label"},[t._v("充值状态")]),e("span",{staticClass:"detail-value"},[e("el-tag",{attrs:{type:t.getStatusType(t.selectedItem.status)}},[t._v(" "+t._s(t.getStatusText(t.selectedItem.status))+" ")])],1)])])]),e("div",{staticClass:"detail-section"},[e("h3",{staticClass:"section-title"},[t._v("地址信息")]),e("div",{staticClass:"detail-list"},[e("div",{staticClass:"detail-row"},[e("span",{staticClass:"detail-label"},[t._v("充值地址")]),e("div",{staticClass:"address-container"},[e("span",{staticClass:"detail-value address"},[t._v(t._s(t.selectedItem.address))]),e("el-button",{attrs:{type:"text",size:"small"},on:{click:function(e){return t.copyAddress(t.selectedItem.address)}}},[t._v(" 复制 ")])],1)]),t.selectedItem.txHash?e("div",{staticClass:"detail-row"},[e("span",{staticClass:"detail-label"},[t._v("交易哈希")]),e("div",{staticClass:"address-container"},[e("span",{staticClass:"detail-value address"},[t._v(t._s(t.selectedItem.txHash))]),e("el-button",{attrs:{type:"text",size:"small"},on:{click:function(e){return t.copyAddress(t.selectedItem.txHash)}}},[t._v(" 复制 ")])],1)]):t._e()])]),e("div",{staticClass:"detail-section"},[e("h3",{staticClass:"section-title"},[t._v("时间信息")]),e("div",{staticClass:"detail-list"},[e("div",{staticClass:"detail-row"},[e("span",{staticClass:"detail-label"},[t._v("充值时间")]),e("span",{staticClass:"detail-value"},[t._v(t._s(t.formatFullTime(t.selectedItem.createTime)))])])])])]):t._e(),e("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[e("el-button",{on:{click:t.closeDetail}},[t._v("关闭")])],1)])],1)},e.Yp=[function(){var t=this,e=t._self._c;return e("div",{staticClass:"page-header"},[e("h1",{staticClass:"page-title"},[t._v("充值记录")]),e("p",{staticClass:"page-subtitle"},[t._v("查看您的充值申请和到账状态")])])}]},2570:function(t,e,a){"use strict";Object.defineProperty(e,"B",{value:!0}),e.A=void 0,a(4114),a(8111),a(2489),a(1701);var s=a(5705),i=a(9252),o=a(6299);e.A={name:"AccountMyShops",data(){return{loaded:!1,defaultCover:"https://dummyimage.com/120x120/eee/999.png&text=Shop",shop:{id:0,name:"",image:"",description:"",del:!0,state:0},visibleEdit:!1,editForm:{id:"",name:"",image:"",description:""},shopConfigs:[],visibleConfigEdit:!1,configForm:{id:"",chainLabel:"",chainValue:"",payAddress:"",payCoins:[],payCoin:""},productOptions:[],coinOptions:i.coinList||[],editCoinOptionsApi:[],chainOptions:[{label:"Tron (TRC20)",value:"tron"},{label:"Ethereum (ERC20)",value:"ethereum"},{label:"BSC (BEP20)",value:"bsc"},{label:"Nexa",value:"nexa"}],shopLoading:!1}},computed:{shopStateText(){return 0===this.shop.state?"待审核":1===this.shop.state?"店铺开启":2===this.shop.state?"店铺关闭":"未知状态"},shopStateTagType(){return 0===this.shop.state?"warning":1===this.shop.state?"success":(this.shop.state,"info")},hasShop(){return!!(this.shop&&Number(this.shop.id)>0)},canCreateShop(){return!this.hasShop},editCoinOptions(){return Array.isArray(this.editCoinOptionsApi)&&this.editCoinOptionsApi.length?this.editCoinOptionsApi:this.coinOptions},selectedCoinLabels(){const t=new Map((this.editCoinOptions||[]).map(t=>[String(t.value),String(t.label).toUpperCase()]));return(this.configForm.payCoins||[]).map(e=>t.get(String(e))||String(e).toUpperCase())}},created(){this.fetchMyShop()},methods:{hasEmoji(t){if(!t||"string"!==typeof t)return!1;const e=/[\u{1F300}-\u{1F6FF}\u{1F900}-\u{1F9FF}\u{1FA70}-\u{1FAFF}\u2600-\u27BF]/u;return e.test(t)},resetShopState(){this.shop={id:0,name:"",image:"",description:"",del:!0,state:0},this.shopConfigs=[]},async fetchMyShop(){try{const t=await(0,s.getMyShop)();t&&(0===t.code||200===t.code)&&t.data?(this.shop={id:t.data.id,name:t.data.name,image:t.data.image,description:t.data.description,del:!!t.data.del,state:Number(t.data.state||0)},this.fetchShopConfigs(t.data.id)):(this.resetShopState(),t&&t.msg&&console.warn("获取店铺数据失败:",t.msg))}catch(t){console.error("获取店铺信息失败:",t),this.resetShopState()}finally{this.loaded=!0}},async fetchShopConfigs(t){if(!t||t<=0)this.shopConfigs=[];else try{const e=await(0,o.getShopConfig)({id:t});e&&(0===e.code||200===e.code)&&Array.isArray(e.data)?this.shopConfigs=e.data:this.shopConfigs=[]}catch(e){console.warn("获取店铺配置失败:",e),this.shopConfigs=[]}},async updateShopConfig(t){const e=await(0,s.updateShopConfig)(t);!e||0!==e.code&&200!==e.code||(this.$message.success("保存成功"),this.visibleConfigEdit=!1,this.fetchShopConfigs(this.shop.id))},async deleteShopConfig(t){const e=await(0,s.deleteShopConfig)(t);!e||0!==e.code&&200!==e.code||(this.$message.success("删除成功"),this.fetchShopConfigs(this.shop.id))},async handleEditConfig(t){try{const e=await(0,s.getChainAndCoin)({id:t.id});if(e&&(0===e.code||200===e.code)&&e.data){const a=e.data||{},s=Array.isArray(a.children)?a.children:[];this.editCoinOptionsApi=s.map(t=>({label:t.label,value:t.value}));const i=s.filter(t=>1===Number(t.hasBind)).map(t=>t.value);this.configForm={id:t.id,chainLabel:a.label||"",chainValue:a.value||"",payAddress:a.address||"",payCoins:i,payCoin:i.join(",")}}else{this.editCoinOptionsApi=[];const e=t.chain||"",a=String(t.payCoin||""),s=a?a.split(","):[];this.configForm={id:t.id,chainLabel:e,chainValue:t.chain||"",payAddress:t.payAddress||"",payCoins:s,payCoin:s.join(",")}}this.visibleConfigEdit=!0}catch(e){this.visibleConfigEdit=!0}},async handleDeleteConfig(t){this.deleteShopConfig({id:t.id})},submitConfigEdit(){if(!this.configForm.chainLabel&&!this.configForm.chainValue)return void this.$message.warning("请选择支付链");if(!this.configForm.payCoins||0===this.configForm.payCoins.length)return void this.$message.warning("请选择支付币种");const t=(this.configForm.payAddress||"").trim();if(!t)return void this.$message.warning("请输入钱包地址");const e={id:this.configForm.id,chain:this.configForm.chainValue||this.configForm.chainLabel,payCoin:(this.configForm.payCoins||[]).join(","),payAddress:this.configForm.payAddress};this.updateShopConfig(e)},removeSelectedCoin(t){const e=String(t||"").toLowerCase(),a=new Map((this.editCoinOptions||[]).map(t=>[String(t.label).toLowerCase(),String(t.value)])),s=a.get(e);s&&(this.configForm.payCoins=(this.configForm.payCoins||[]).filter(t=>String(t)!==String(s)))},async handleOpenEdit(){try{this.visibleEdit=!0;const t=await(0,s.queryShop)({id:this.shop.id});t&&(0===t.code||200===t.code)&&t.data?this.editForm={id:t.data.id,name:t.data.name,image:t.data.image,description:t.data.description}:(this.editForm={id:this.shop.id,name:this.shop.name,image:this.shop.image,description:this.shop.description},this.$message.warning(t&&t.msg?t.msg:"未获取到店铺详情"))}catch(t){this.editForm={id:this.shop.id,name:this.shop.name,image:this.shop.image,description:this.shop.description},console.error("查询店铺详情失败:",t)}},async submitEdit(){try{const{name:t,image:e,description:a}=this.editForm,i=t=>"string"===typeof t&&t.length>0&&0===t.trim().length;if(i(t))return void this.$message.error("店铺名称不能全是空格");if(!t)return void this.$message.error("店铺名称不能为空");if(this.hasEmoji(t))return void this.$message.warning("店铺名称不能包含表情符号");if(i(e))return void this.$message.error("店铺封面不能全是空格");if(i(a))return void this.$message.error("店铺描述不能全是空格");if(t&&t.length>30)return void this.$message.warning("店铺名称不能超过30个字符");if(a&&a.length>300)return void this.$message.warning("店铺描述不能超过300个字符");const o={...this.editForm},r=await(0,s.updateShop)(o);!r||0!==r.code&&200!==r.code?this.$message({message:r.msg||"保存失败",type:"error",showClose:!0}):(this.$message({message:"已保存",type:"success",showClose:!0}),this.visibleEdit=!1,this.fetchMyShop())}catch(t){console.error("更新店铺失败:",t),console.log("更新店铺失败,请稍后重试")}},async handleDelete(){try{await this.$confirm("确定删除该店铺吗?此操作不可恢复","提示",{type:"warning"});const t=await(0,s.deleteShop)(this.shop.id);!t||0!==t.code&&200!==t.code||(this.$message({message:"删除成功",type:"success",showClose:!0}),this.resetShopState(),this.loaded=!1,setTimeout(()=>{this.fetchMyShop()},500))}catch(t){}},async handleToggleShop(){try{const t=2===this.shop.state,e=t?"确定开启店铺吗?":"确定关闭该店铺吗?关闭后用户将无法访问";await this.$confirm(e,"提示",{type:"warning"});const a=await(0,s.closeShop)(this.shop.id);!a||0!==a.code&&200!==a.code?console.log("操作失败"):(this.$message({message:t?"店铺已开启":"店铺已关闭",type:"success",showClose:!0}),this.fetchMyShop())}catch(t){}},handleGoNew(){this.canCreateShop?this.$router.push("/account/shop-new"):this.$message({message:"每个用户仅允许一个店铺,无法新建",type:"warning",showClose:!0})},handleAddProduct(){this.hasShop?this.$router.push({path:"/account/product-new",query:{shopId:this.shop.id}}):this.$message({message:"请先创建店铺",type:"warning",showClose:!0})},handleWalletBind(){this.hasShop?this.$router.push("/account/shop-config"):this.$message({message:"请先创建店铺",type:"warning",showClose:!0})}}}},2605:function(t,e,a){"use strict";a.r(e),a.d(e,{__esModule:function(){return i.B},default:function(){return l}});var s=a(6356),i=a(3466),o=i.A,r=a(845),n=(0,r.A)(o,s.XX,s.Yp,!1,null,"4f1442d6",null),l=n.exports},2935:function(t,e,a){"use strict";Object.defineProperty(e,"B",{value:!0}),e.A=void 0,a(4114);a(4180);var s=a(4981);e.A={name:"OrderList",props:{items:{type:Array,default:()=>[]},emptyText:{type:String,default:"暂无数据"},showCheckout:{type:Boolean,default:!1},onCancel:{type:Function,default:null}},data(){return{payLoading:!1,orderDialog:{visible:!1,qrContent:"",coin:"",amount:"",address:""},dialogVisible:!1,paymentDialog:{totalPrice:"",payAmount:"",noPayAmount:"",img:""}}},computed:{safeItems(){return Array.isArray(this.items)?this.items:[]}},methods:{formatAmount(t,e){return(0,s.truncateAmountByCoin)(t,e)},buildQrSrc(t){if(!t)return"";try{const e=String(t).trim();return e.startsWith("data:")?e:`data:image/png;base64,${e}`}catch(e){return""}},formatDateTime(t){if(!t)return"—";try{const e=String(t);return e.includes("T")?e.replace("T"," "):e}catch(e){return String(t)}},async handleCheckout(t){if(t)try{this.payLoading=!0,this.paymentDialog={totalPrice:t.totalPrice,payAmount:t.payAmount,noPayAmount:t.noPayAmount,img:t.img},this.paymentDialog.img?(this.paymentDialog.img=this.buildQrSrc(this.paymentDialog.img),this.dialogVisible=!0):this.$message({message:"未返回支付二维码",type:"error",showClose:!0})}catch(e){console.log(e,"创建支付订单失败")}finally{this.payLoading=!1}},handleGoDetail(t){const e=t&&(null!=t.id?t.id:t.orderId);if(null!=e)try{this.$router.push(`/account/order-detail/${e}`)}catch(a){this.$message({message:"无法跳转到详情页",type:"error",showClose:!0})}else this.$message({message:"订单ID缺失",type:"error",showClose:!0})},handleCancel(t){if(!t||!this.onCancel)return;const e=t.id;null!=e?this.$confirm("确认取消该订单吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{try{this.onCancel({orderId:e})}catch(t){}}).catch(()=>null):this.$message({message:"订单ID缺失",type:"error",showClose:!0})},shouldShowActions(t){if(console.log(t,"飞机飞机覅附件s"),!this.showCheckout)return!1;const e=Number(t&&t.status);return console.log(e,"飞机飞机覅附件s"),0===e||6===e||10===e}}}},3375:function(t,e){"use strict";e.Yp=e.XX=void 0;e.XX=function(){var t=this,e=t._self._c;return e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.payLoading,expression:"payLoading"}]},[t.safeItems.length?e("el-table",{attrs:{data:t.safeItems,border:"","header-cell-style":{textAlign:"left"},"cell-style":{textAlign:"left"}}},[e("el-table-column",{attrs:{type:"expand",width:"46"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("el-table",{attrs:{data:a.row.orderItemDtoList||[],size:"small",border:"","header-cell-style":{textAlign:"left"},"cell-style":{textAlign:"left"},"row-key":"productMachineId"}},[e("el-table-column",{attrs:{prop:"productMachineId",label:"机器ID","min-width":"120"}}),e("el-table-column",{attrs:{prop:"name",label:"名称","min-width":"160"}}),e("el-table-column",{attrs:{prop:"payCoin",label:"币种","min-width":"100"}}),e("el-table-column",{attrs:{prop:"address",label:"收款地址","min-width":"240"}}),e("el-table-column",{attrs:{prop:"leaseTime",label:"租赁天数","min-width":"100"}}),e("el-table-column",{attrs:{prop:"price",label:"售价(USDT)","min-width":"240"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("span",{staticClass:"value strong"},[t.formatAmount(a.row.price,a.row.payCoin||"USDT").truncated?e("el-tooltip",{attrs:{content:t.formatAmount(a.row.price,a.row.payCoin||"USDT").full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatAmount(a.row.price,a.row.payCoin||"USDT").text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(t._s(t.formatAmount(a.row.price,a.row.payCoin||"USDT").text))])],1)]}}],null,!0)})],1)]}}])}),e("el-table-column",{attrs:{label:"订单号","min-width":"220"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("span",{staticClass:"value mono"},[t._v(t._s(a.row&&a.row.orderNumber||"—"))])]}}])}),e("el-table-column",{attrs:{label:"创建时间","min-width":"180"},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(t._s(t.formatDateTime(e.row&&e.row.createTime)))]}}])}),e("el-table-column",{attrs:{label:"商品数","min-width":"100"},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(t._s(Array.isArray(e.row&&e.row.orderItemDtoList)?e.row.orderItemDtoList.length:0))]}}])}),e("el-table-column",{attrs:{label:"总金额(USDT)","min-width":"140"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("span",{staticClass:"value strong"},[t.formatAmount(a.row&&a.row.totalPrice,"USDT").truncated?e("el-tooltip",{attrs:{content:t.formatAmount(a.row&&a.row.totalPrice,"USDT").full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatAmount(a.row&&a.row.totalPrice,"USDT").text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(t._s(t.formatAmount(a.row&&a.row.totalPrice,"USDT").text))])],1)]}}])}),e("el-table-column",{attrs:{"min-width":"180"},scopedSlots:t._u([{key:"header",fn:function(){return[e("el-tooltip",{attrs:{placement:"top",effect:"dark"}},[e("div",{attrs:{slot:"content"},slot:"content"},[t._v(" 实际支付金额/理论支付金额:"),e("br"),t._v(" 1. 实际支付金额是按照矿机实际算力计算支付金额"),e("br"),t._v(" 2. 理论支付金额是卖家定义出售价格 ")]),e("span",{staticStyle:{display:"inline-flex","align-items":"center",gap:"6px"}},[e("i",{staticClass:"el-icon-question",staticStyle:{color:"#909399"},attrs:{"aria-label":"说明",role:"img"}}),t._v(" 已支付金额(USDT) ")])])]},proxy:!0},{key:"default",fn:function(a){return[e("span",{staticClass:"value strong"},[t.formatAmount(a.row&&a.row.payAmount,"USDT").truncated?e("el-tooltip",{attrs:{content:t.formatAmount(a.row&&a.row.payAmount,"USDT").full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatAmount(a.row&&a.row.payAmount,"USDT").text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(t._s(t.formatAmount(a.row&&a.row.payAmount,"USDT").text))])],1)]}}])}),e("el-table-column",{attrs:{label:"待支付金额(USDT)","min-width":"140"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("span",{staticClass:"value strong"},[t.formatAmount(a.row&&a.row.noPayAmount,"USDT").truncated?e("el-tooltip",{attrs:{content:t.formatAmount(a.row&&a.row.noPayAmount,"USDT").full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatAmount(a.row&&a.row.noPayAmount,"USDT").text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(t._s(t.formatAmount(a.row&&a.row.noPayAmount,"USDT").text))])],1)]}}])}),e("el-table-column",{attrs:{label:"操作","min-width":"280",fixed:"right"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("el-button",{staticStyle:{"margin-right":"8px"},attrs:{size:"mini"},on:{click:function(e){return t.handleGoDetail(a.row)}}},[t._v("详情")]),t.shouldShowActions(a.row)?[e("el-button",{attrs:{type:"primary",size:"mini"},on:{click:function(e){return t.handleCheckout(a.row)}}},[t._v("去结算")])]:t._e()]}}])})],1):e("div",{staticClass:"empty"},[t._v(t._s(t.emptyText))]),e("el-dialog",{attrs:{visible:t.dialogVisible,width:"520px",title:"请扫码支付"},on:{"update:visible":function(e){t.dialogVisible=e}}},[e("div",{staticStyle:{"text-align":"left","margin-bottom":"12px",color:"#666"}},[e("div",{staticStyle:{"margin-bottom":"6px"}},[t._v("总金额(USDT): "),e("b",[t.formatAmount(t.paymentDialog.totalPrice,"USDT").truncated?e("el-tooltip",{attrs:{content:t.formatAmount(t.paymentDialog.totalPrice,"USDT").full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatAmount(t.paymentDialog.totalPrice,"USDT").text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(t._s(t.formatAmount(t.paymentDialog.totalPrice,"USDT").text))])],1)]),e("div",{staticStyle:{"margin-bottom":"6px",display:"flex","align-items":"center",gap:"6px"}},[e("el-tooltip",{attrs:{placement:"top",effect:"dark"}},[e("div",{attrs:{slot:"content"},slot:"content"},[t._v(" 实际支付金额/理论支付金额:"),e("br"),t._v(" 1. 实际支付金额是按照矿机实际算力计算支付金额"),e("br"),t._v(" 2. 理论支付金额是卖家定义出售价格 ")]),e("i",{staticClass:"el-icon-question",staticStyle:{color:"#909399"},attrs:{"aria-label":"说明",role:"img"}})]),e("span",[t._v("已支付金额(USDT):")]),e("b",{staticClass:"value strong"},[t.formatAmount(t.paymentDialog.payAmount,"USDT").truncated?e("el-tooltip",{attrs:{content:t.formatAmount(t.paymentDialog.payAmount,"USDT").full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatAmount(t.paymentDialog.payAmount,"USDT").text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(t._s(t.formatAmount(t.paymentDialog.payAmount,"USDT").text))])],1)],1),e("div",{staticStyle:{"margin-bottom":"6px"}},[t._v("待支付金额(USDT): "),e("b",{staticClass:"value strong"},[t.formatAmount(t.paymentDialog.noPayAmount,"USDT").truncated?e("el-tooltip",{attrs:{content:t.formatAmount(t.paymentDialog.noPayAmount,"USDT").full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatAmount(t.paymentDialog.noPayAmount,"USDT").text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(t._s(t.formatAmount(t.paymentDialog.noPayAmount,"USDT").text))])],1)])]),e("div",{staticStyle:{"text-align":"center"}},[t.paymentDialog.img?e("img",{staticStyle:{width:"180px",height:"180px","margin-top":"18px"},attrs:{src:t.paymentDialog.img,alt:"支付二维码"}}):e("div",{staticStyle:{color:"#666"}},[t._v("未返回支付二维码")])]),e("p",{staticStyle:{"margin-bottom":"6px",color:"red","text-align":"left"}},[t._v("注意:如果已经支付对应金额,不要在重复支付,待系统确认后会自动更新订单状态。因个人原因重复支付导致无法退款,平台不承担任何责任。")]),e("span",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[e("el-button",{on:{click:function(e){t.dialogVisible=!1}}},[t._v("关闭")])],1)])],1)},e.Yp=[]},3466:function(t,e,a){"use strict";Object.defineProperty(e,"B",{value:!0}),e.A=void 0,a(4114),a(8111),a(2489),a(116),a(7588),a(1701);var s=a(1193);e.A={name:"AccountProductMachineAdd",data(){return{form:{productId:Number(this.$route.query.productId)||null,coin:this.$route.query.coin||"",productName:this.$route.query.name||"",powerDissipation:null,theoryPower:null,type:"",unit:"TH/S",cost:"",costMap:{},maxLeaseDays:""},confirmVisible:!1,rules:{productName:[{required:!0,message:"商品名称不能为空",trigger:"change"}],coin:[{required:!0,message:"币种不能为空",trigger:"change"}],powerDissipation:[{required:!0,message:"功耗不能为空",trigger:"blur"},{validator:(t,e,a)=>{const s=String(e||"");if(!s)return void a(new Error("功耗不能为空"));const i=/^\d{1,6}(\.\d{1,4})?$/;i.test(s)?Number(s)<=0?a(new Error("功耗必须大于0")):a():a(new Error("功耗整数最多6位,小数最多4位"))},trigger:"blur"}],theoryPower:[{required:!0,message:"理论算力不能为空",trigger:"blur"},{validator:(t,e,a)=>{const s=String(e||"");if(!s)return void a(new Error("理论算力不能为空"));const i=/^\d{1,6}(\.\d{1,4})?$/;i.test(s)?Number(s)<=0?a(new Error("理论算力必须大于0")):a():a(new Error("理论算力整数最多6位,小数最多4位"))},trigger:"blur"}],unit:[{required:!0,message:"请选择算力单位",trigger:"change"}],cost:[{validator(t,e,a){if(Array.isArray(this.payTypeDefs)&&this.payTypeDefs.length>0)return void a();const s=String(e||"");if(!s)return void a(new Error("请填写机器成本(USDT)"));const i=/^\d{1,12}(\.\d{1,2})?$/;i.test(s)?Number(s)<=0?a(new Error("成本必须大于 0")):a():a(new Error("成本整数最多12位,小数最多2位"))},trigger:"blur"}],maxLeaseDays:[{required:!0,message:"请填写最大租赁天数",trigger:"blur"},{validator:(t,e,a)=>{const s=String(e??"");if(!s)return void a(new Error("请填写最大租赁天数"));if(!/^\d{1,3}$/.test(s))return void a(new Error("仅允许整数,范围 1-365"));const i=Number(s);!Number.isInteger(i)||i<1||i>365?a(new Error("范围需在 1-365 天")):a()},trigger:"blur"}]},miners:[],minersLoading:!1,selectedMiner:"",machineOptions:[],machinesLoading:!1,selectedMachines:[],selectedMachineRows:[],saving:!1,lastCostBaseline:0,lastCostMapBaseline:{},lastTypeBaseline:"",lastMaxLeaseDaysBaseline:0,lastPowerDissipationBaseline:0,lastTheoryPowerBaseline:0,lastUnitBaseline:"TH/S",params:{cost:353400,powerDissipation:.01,theoryPower:1e3,type:"",unit:"TH/S",productId:1,productMachineURDVos:[{user:"lx_888",miner:"iusfhufhu",price:353400,type:"",state:0},{user:"lx_888",miner:"iusfhufhu2",price:353400,type:"",state:0}]}}},created(){this.initPayTypesFromRoute(),this.fetchMiners(),this.lastTypeBaseline=this.form.type,this.rules&&this.rules.cost&&this.$set(this.rules,"cost",[{validator:this.validateCost,trigger:"blur"}])},methods:{validateCost(t,e,a){if(Array.isArray(this.payTypeDefs)&&this.payTypeDefs.length>0)return void a();const s=String(e||"");if(!s)return void a(new Error("请填写机器成本(USDT)"));const i=/^\d{1,12}(\.\d{1,2})?$/;i.test(s)?Number(s)<=0?a(new Error("成本必须大于 0")):a():a(new Error("成本整数最多12位,小数最多2位"))},initPayTypesFromRoute(){this.payTypeDefs=[];try{const t=this.$route.query.payTypes;if(!t)return;const e=JSON.parse(decodeURIComponent(t));if(!Array.isArray(e))return;const a=[];e.forEach(t=>{const e=String(t&&t.chain?t.chain:"").toUpperCase(),s=String(t&&t.coin?t.coin:"").toUpperCase();if(!e&&!s)return;const i=[e,s].filter(Boolean).join("-"),o=i;a.push({chain:e,coin:s,key:i,label:o})});const s=new Map;a.forEach(t=>{s.has(t.key)||s.set(t.key,t)}),this.payTypeDefs=Array.from(s.values());const i={};this.payTypeDefs.forEach(t=>{i[t.key]=""}),this.form.costMap=i,this.lastCostMapBaseline={...i}}catch(t){this.payTypeDefs=[]}},handleBack(){this.$router.back()},handleNumeric(t){let e=String(this.form[t]??"");e=e.replace(/[^0-9.]/g,"");const a=e.indexOf(".");-1!==a&&(e=e.slice(0,a+1)+e.slice(a+1).replace(/\./g,""));const s=e.endsWith(".");if("cost"===t){const t=e.split(".");let a=t[0]||"",i=t[1]||"";a.length>12&&(a=a.slice(0,12)),i&&(i=i.slice(0,2)),e=i.length?`${a}.${i}`:s?`${a}.`:a}else if("powerDissipation"===t||"theoryPower"===t){const t=e.split(".");let a=t[0]||"",i=t[1]||"";a.length>6&&(a=a.slice(0,6)),i&&(i=i.slice(0,4)),e=i.length?`${a}.${i}`:s?`${a}.`:a}else{if("maxLeaseDays"===t)return e=e.replace(/\D/g,""),e.length>3&&(e=e.slice(0,3)),this.form[t]=e,void this.syncMaxLeaseDaysToRows();if(-1!==a){const[t,a]=e.split(".");e=t+"."+(a?a.slice(0,6):"")}}this.form[t]=e,"cost"===t&&this.syncCostToRows()},handleCostMapInput(t,e){let a=String(e??this.form.costMap[t]??"");a=a.replace(/[^0-9.]/g,"");const s=a.indexOf(".");-1!==s&&(a=a.slice(0,s+1)+a.slice(s+1).replace(/\./g,""));const i=a.endsWith("."),o=a.split(".");let r=o[0]||"",n=o[1]||"";r.length>12&&(r=r.slice(0,12)),n&&(n=n.slice(0,2)),a=n.length?`${r}.${n}`:i?`${r}.`:r,this.$set(this.form.costMap,t,a);const l=Number(this.lastCostMapBaseline[t]??NaN);this.selectedMachineRows=this.selectedMachineRows.map(e=>{const s=Number((e.priceMap&&e.priceMap[t])??NaN),i=!Number.isFinite(s)||s===l,o={...e.priceMap||{}};return i&&(o[t]=a),{...e,priceMap:o}});const c=Number(a);Number.isFinite(c)&&this.$set(this.lastCostMapBaseline,t,c)},handleTypeInput(){"string"===typeof this.form.type&&this.form.type.length>20&&(this.form.type=this.form.type.slice(0,20))},syncCostToRows(){const t=Number(this.form.cost);if(!Number.isFinite(t))return;const e=this.lastCostBaseline;this.selectedMachineRows=this.selectedMachineRows.map(a=>{const s=Number(a.price);return Number.isFinite(s)&&s!==e?a:{...a,price:t}}),this.lastCostBaseline=t},updateMachineType(){this.selectedMachineRows=this.selectedMachineRows.map(t=>t.type&&t.type!==this.lastTypeBaseline?t:{...t,type:this.form.type}),this.lastTypeBaseline=this.form.type},updateSelectedMachineRows(){const t=new Map;this.machineOptions.forEach(e=>{t.set(e.miner,e)});const e=[];this.selectedMachines.forEach(a=>{const s=t.get(a);if(s){const t=this.selectedMachineRows.find(t=>t.miner===a),i=t&&t.priceMap?t.priceMap:null,o={};this.payTypeDefs&&this.payTypeDefs.length&&this.payTypeDefs.forEach(t=>{o[t.key]=this.form.costMap[t.key]}),e.push({user:s.user,coin:s.coin,miner:s.miner,realPower:s.realPower,price:t?t.price:this.form.cost,powerDissipation:t&&void 0!==t.powerDissipation?t.powerDissipation:this.form.powerDissipation,theoryPower:t&&void 0!==t.theoryPower?t.theoryPower:this.form.theoryPower,unit:t&&t.unit?t.unit:this.form.unit,type:t?t.type:this.form.type,state:t?t.state:0,maxLeaseDays:t&&void 0!==t.maxLeaseDays?t.maxLeaseDays:this.form.maxLeaseDays,priceMap:i||o})}}),this.selectedMachineRows=e},syncPowerDissipationToRows(){const t=Number(this.form.powerDissipation);if(!Number.isFinite(t))return;const e=this.lastPowerDissipationBaseline;this.selectedMachineRows=this.selectedMachineRows.map(a=>{const s=Number(a.powerDissipation);return Number.isFinite(s)&&s!==e?a:{...a,powerDissipation:t}}),this.lastPowerDissipationBaseline=t},syncTheoryPowerToRows(){const t=Number(this.form.theoryPower);if(!Number.isFinite(t))return;const e=this.lastTheoryPowerBaseline;this.selectedMachineRows=this.selectedMachineRows.map(a=>{const s=Number(a.theoryPower);return Number.isFinite(s)&&s!==e?a:{...a,theoryPower:t}}),this.lastTheoryPowerBaseline=t},syncUnitToRows(){const t=this.form.unit;if(!t)return;const e=this.lastUnitBaseline;this.selectedMachineRows=this.selectedMachineRows.map(a=>{const s=a.unit;return s&&s!==e?a:{...a,unit:t}}),this.lastUnitBaseline=t},handleRowPowerDissipationInput(t){let e=String(this.selectedMachineRows[t].powerDissipation??"");e=e.replace(/[^0-9.]/g,"");const a=e.indexOf(".");-1!==a&&(e=e.slice(0,a+1)+e.slice(a+1).replace(/\./g,""));const s=e.endsWith("."),i=e.split(".");let o=i[0]||"",r=i[1]||"";o.length>6&&(o=o.slice(0,6)),r&&(r=r.slice(0,4)),e=r.length?`${o}.${r}`:s?`${o}.`:o,this.$set(this.selectedMachineRows[t],"powerDissipation",e)},handleRowPowerDissipationBlur(t){const e=String(this.selectedMachineRows[t].powerDissipation??""),a=/^\d{1,6}(\.\d{1,4})?$/;(!e||Number(e)<=0||!a.test(e))&&(this.$message.warning("功耗需大于0,整数最多6位,小数最多4位"),this.$set(this.selectedMachineRows[t],"powerDissipation",""))},handleRowTheoryPowerInput(t){let e=String(this.selectedMachineRows[t].theoryPower??"");e=e.replace(/[^0-9.]/g,"");const a=e.indexOf(".");-1!==a&&(e=e.slice(0,a+1)+e.slice(a+1).replace(/\./g,""));const s=e.endsWith("."),i=e.split(".");let o=i[0]||"",r=i[1]||"";o.length>6&&(o=o.slice(0,6)),r&&(r=r.slice(0,4)),e=r.length?`${o}.${r}`:s?`${o}.`:o,this.$set(this.selectedMachineRows[t],"theoryPower",e)},handleRowTheoryPowerBlur(t){const e=String(this.selectedMachineRows[t].theoryPower??""),a=/^\d{1,6}(\.\d{1,4})?$/;(!e||Number(e)<=0||!a.test(e))&&(this.$message.warning("理论算力需大于0,整数最多6位,小数最多4位"),this.$set(this.selectedMachineRows[t],"theoryPower",""))},handleRowUnitChange(t,e){this.$set(this.selectedMachineRows[t],"unit",e)},syncMaxLeaseDaysToRows(){const t=this.form.maxLeaseDays,e=Number(t);if(!Number.isInteger(e))return;const a=this.lastMaxLeaseDaysBaseline;this.selectedMachineRows=this.selectedMachineRows.map(t=>{const s=Number(t.maxLeaseDays);return Number.isInteger(s)&&s!==a?t:{...t,maxLeaseDays:e}}),this.lastMaxLeaseDaysBaseline=e},handleRowMaxLeaseDaysInput(t){let e=String(this.selectedMachineRows[t].maxLeaseDays??"");e=e.replace(/\D/g,""),e.length>3&&(e=e.slice(0,3)),this.$set(this.selectedMachineRows[t],"maxLeaseDays",e)},handleRowMaxLeaseDaysBlur(t){const e=String(this.selectedMachineRows[t].maxLeaseDays??"");if(!/^\d{1,3}$/.test(e))return this.$message.warning("最大租赁天数需为 1-365 的整数"),void this.$set(this.selectedMachineRows[t],"maxLeaseDays","");const a=Number(e);(!Number.isInteger(a)||a<1||a>365)&&(this.$message.warning("最大租赁天数需为 1-365 的整数"),this.$set(this.selectedMachineRows[t],"maxLeaseDays",""))},handleRowPriceInput(t){let e=String(this.selectedMachineRows[t].price??"");e=e.replace(/[^0-9.]/g,"");const a=e.indexOf(".");-1!==a&&(e=e.slice(0,a+1)+e.slice(a+1).replace(/\./g,""));const s=e.endsWith("."),i=e.split(".");let o=i[0]||"",r=i[1]||"";o.length>12&&(o=o.slice(0,12)),r&&(r=r.slice(0,2)),e=r.length?`${o}.${r}`:s?`${o}.`:o,this.$set(this.selectedMachineRows[t],"price",e)},handleRowPriceMapInput(t,e){const a=this.selectedMachineRows[t],s={...a.priceMap||{}};let i=String(s[e]??"");i=i.replace(/[^0-9.]/g,"");const o=i.indexOf(".");-1!==o&&(i=i.slice(0,o+1)+i.slice(o+1).replace(/\./g,""));const r=i.endsWith("."),n=i.split(".");let l=n[0]||"",c=n[1]||"";l.length>12&&(l=l.slice(0,12)),c&&(c=c.slice(0,2)),i=c.length?`${l}.${c}`:r?`${l}.`:l,s[e]=i,this.$set(this.selectedMachineRows[t],"priceMap",s)},handleRowPriceMapBlur(t,e){const a=this.selectedMachineRows[t],s=String((a.priceMap&&a.priceMap[e])??""),i=/^\d{1,12}(\.\d{1,2})?$/;if(!s||Number(s)<=0||!i.test(s)){this.$message.warning("价格必须大于0,整数最多12位,小数最多2位");const s={...a.priceMap||{}};s[e]="",this.$set(this.selectedMachineRows[t],"priceMap",s)}},handleRowPriceBlur(t){const e=String(this.selectedMachineRows[t].price??""),a=/^\d{1,12}(\.\d{1,2})?$/;(!e||Number(e)<=0||!a.test(e))&&(this.$message.warning("价格必须大于0,整数最多12位,小数最多2位"),this.$set(this.selectedMachineRows[t],"price",""))},handleRowTypeInput(t){const e=String(this.selectedMachineRows[t].type||""),a=e.length>20?e.slice(0,20):e;this.$set(this.selectedMachineRows[t],"type",a)},handleRowTypeBlur(t){const e=this.selectedMachineRows[t].type,a=t=>"string"===typeof t&&t.length>0&&0===t.trim().length;a(e)&&(this.$message.warning("矿机型号不能全是空格"),this.$set(this.selectedMachineRows[t],"type",""))},handleToggleState(t){const e=this.selectedMachineRows[t].state;this.$set(this.selectedMachineRows[t],"state",0===e?1:0)},async fetchMiners(){this.minersLoading=!0;try{const t=await(0,s.getUserMinersList)({coin:this.form.coin||""}),e=t?.data;let a=[];Array.isArray(e)?a=e:e&&"object"===typeof e?Object.keys(e).forEach(t=>{const s=Array.isArray(e[t])?e[t]:[];s.forEach(t=>{t&&t.user&&t.coin&&a.push({user:t.user,coin:t.coin,miner:t.miner||null})})}):e&&e.additionalProperties1&&(a=[e.additionalProperties1]),this.form.coin&&(a=a.filter(t=>t.coin===this.form.coin)),this.miners=a}catch(t){console.error("获取挖矿账户失败",t)}finally{this.minersLoading=!1}},async handleMinerChange(t){if(this.selectedMachines=[],!t)return void(this.machineOptions=[]);const[e,a]=t.split("|");this.machinesLoading=!0;try{const t={coin:a,user:e},i=await(0,s.getUserMachineList)(t),o=i?.data||[];this.machineOptions=Array.isArray(o)?o:[],console.log("选择挖矿账户:",{user:e,coin:a}),console.log("获取机器列表响应:",i),console.log("机器列表数据:",this.machineOptions)}catch(i){console.error("获取机器列表失败",i)}finally{this.machinesLoading=!1}},async handleSave(){try{const t=await this.$refs.machineForm.validate();if(!t)return}catch(a){return}if(!this.form.productId)return void this.$message.warning("缺少商品ID");if(!this.selectedMiner)return void this.$message.warning("请先选择挖矿账户");if(!this.selectedMachines.length)return void this.$message.warning("请至少选择一台机器");const t=t=>"string"===typeof t&&t.length>0&&0===t.trim().length;if(t(this.form.type))return void this.$message.warning("矿机型号不能全是空格");const e=this.selectedMachineRows.findIndex(e=>t(e.type));if(-1===e){for(let t=0;t365){const a=e&&(e.miner||e.user)||t+1;return void this.$message.warning(`第${t+1}行(机器:${a}) 最大租赁天数需为 1-365 的整数`)}}this.confirmVisible=!0}else this.$message.warning("存在行的矿机型号全是空格,请修正后再试")},async doSubmit(){const[t,e]=this.selectedMiner.split("|");this.saving=!0;try{const t={productId:this.form.productId,powerDissipation:this.form.powerDissipation,theoryPower:this.form.theoryPower,type:this.form.type,unit:this.form.unit,cost:this.payTypeDefs&&this.payTypeDefs.length?Number(this.form.costMap&&this.form.costMap[this.payTypeDefs[0].key])||0:this.form.cost,maxLeaseDays:this.form.maxLeaseDays,productMachineURDVos:this.selectedMachineRows.map(t=>({miner:t.miner,price:this.payTypeDefs&&this.payTypeDefs.length?void 0:Number(t.price)||0,priceList:this.payTypeDefs&&this.payTypeDefs.length?this.payTypeDefs.map(e=>({chain:e.chain,coin:e.coin,price:Number(t.priceMap&&t.priceMap[e.key])||0})):void 0,state:t.state||0,type:t.type||this.form.type,user:t.user,maxLeaseDays:Number(t.maxLeaseDays)||Number(this.form.maxLeaseDays)||0,powerDissipation:Number(t.powerDissipation)||Number(this.form.powerDissipation)||0,theoryPower:Number(t.theoryPower)||Number(this.form.theoryPower)||0,unit:t.unit||this.form.unit}))};console.log(t,"请求参数");const e=await(0,s.addSingleOrBatchMachine)(t);!e||0!==e.code&&200!==e.code||(this.$message({message:"添加成功",duration:3e3,showClose:!0,type:"success"}),this.confirmVisible=!1,this.$router.back())}catch(a){console.error("添加出售机器失败",a),console.log("添加失败")}finally{this.saving=!1}}},watch:{"form.cost":function(){this.syncCostToRows()},form:{deep:!0,handler(t,e){this.payTypeDefs&&this.payTypeDefs.length&&t&&t.costMap&&Object.keys(t.costMap).forEach(a=>{e&&e.costMap&&t.costMap[a]!==e.costMap[a]&&this.handleCostMapInput(a,t.costMap[a])})}},"form.type":function(){this.updateMachineType()},"form.maxLeaseDays":function(){this.syncMaxLeaseDaysToRows()},"form.powerDissipation":function(){this.syncPowerDissipationToRows()},"form.theoryPower":function(){this.syncTheoryPowerToRows()},"form.unit":function(){this.syncUnitToRows()},selectedMachines(){this.updateSelectedMachineRows()}}}},3574:function(t,e){"use strict";e.Yp=e.XX=void 0;e.XX=function(){var t=this,e=t._self._c;return e("div",{staticClass:"product-new"},[e("el-card",{staticClass:"product-form-card"},[e("div",{staticClass:"card-header",attrs:{slot:"header"},slot:"header"},[e("h2",[t._v("新增商品")]),e("p",{staticClass:"subtitle"},[t._v("创建新的商品信息")])]),e("el-form",{ref:"productForm",staticClass:"product-form",attrs:{model:t.form,rules:t.rules,"label-width":"120px"}},[e("el-form-item",{attrs:{label:"商品名称",prop:"name"}},[e("el-input",{attrs:{placeholder:"请输入商品名称,如:Nexa-M2-Miner",maxlength:"30","show-word-limit":""},model:{value:t.form.name,callback:function(e){t.$set(t.form,"name",e)},expression:"form.name"}})],1),e("el-form-item",{staticClass:"align-like-input",attrs:{label:"商品类型",prop:"type"}},[e("el-radio-group",{model:{value:t.form.type,callback:function(e){t.$set(t.form,"type",e)},expression:"form.type"}},[e("el-radio",{attrs:{label:0}},[t._v("矿机")])],1)],1),e("el-form-item",{attrs:{label:"挖矿币种",prop:"coin"}},[e("el-select",{staticStyle:{width:"100%"},attrs:{placeholder:"请选择挖矿币种"},model:{value:t.form.coin,callback:function(e){t.$set(t.form,"coin",e)},expression:"form.coin"}},t._l(t.coinOptions,function(t){return e("el-option",{key:t.value,attrs:{label:t.label,value:t.value}})}),1)],1),e("el-form-item",{attrs:{label:"商品描述",prop:"description"}},[e("el-input",{attrs:{type:"textarea",rows:4,placeholder:"请输入商品描述",maxlength:"100","show-word-limit":""},model:{value:t.form.description,callback:function(e){t.$set(t.form,"description",e)},expression:"form.description"}})],1),e("el-form-item",{staticClass:"align-like-input",attrs:{label:"商品状态",prop:"state"}},[e("el-radio-group",{model:{value:t.form.state,callback:function(e){t.$set(t.form,"state",e)},expression:"form.state"}},[e("el-radio",{attrs:{label:0}},[t._v("上架")]),e("el-radio",{attrs:{label:1}},[t._v("下架")])],1)],1),e("el-form-item",{staticClass:"actions-row"},[e("div",{staticClass:"form-actions"},[e("el-button",{attrs:{type:"primary",size:"medium",loading:t.submitting},on:{click:t.handleSubmit}},[t._v("创建商品")]),e("el-button",{attrs:{size:"medium"},on:{click:t.handleReset}},[t._v("重置")]),e("el-button",{attrs:{size:"medium"},on:{click:t.handleCancel}},[t._v("取消")])],1)])],1)],1)],1)},e.Yp=[]},3663:function(t,e){"use strict";e.Yp=e.XX=void 0;e.XX=function(){var t=this,e=t._self._c;return e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.productDetailLoading,expression:"productDetailLoading"}],staticClass:"product-detail"},[t.loading?e("div",{staticClass:"loading"},[e("i",{staticClass:"el-icon-loading",attrs:{"aria-label":"加载中",role:"img"}}),t._v(" 加载中... ")]):t.product?e("div",{staticClass:"detail-container"},[e("h2",{staticStyle:{margin:"10px","text-align":"left","margin-top":"28px"}},[t._v("商品详情-选择矿机")]),e("section",{staticClass:"pay-methods",attrs:{"aria-label":"支付方式"}},[e("div",{staticClass:"pay-label",attrs:{tabindex:"0","aria-label":"支付方式标签"}},[t._v("支付方式:")]),e("ul",{staticClass:"pay-list",attrs:{role:"list","aria-label":"支付方式列表"}},t._l(t.paymentMethodList,function(a,s){return e("li",{key:s,staticClass:"pay-item",attrs:{"aria-label":`支付方式: ${a.payChain}`}},[e("el-tooltip",{attrs:{content:t.formatPayTooltip(a),placement:"top","open-delay":80}},[e("img",{staticClass:"pay-icon",attrs:{src:t.getPayImageUrl(a),alt:`${(a.payChain||"").toUpperCase()} ${(a.payCoin||"").toUpperCase()}`.trim(),title:t.formatPayTooltip(a),tabindex:"0",role:"img"},on:{keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:(e.preventDefault(),t.handlePayIconKeyDown(a))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"space",32,e.key,[" ","Spacebar"])?null:(e.preventDefault(),t.handlePayIconKeyDown(a))}]}})])],1)}),0)]),e("section",{staticClass:"filter-bar",attrs:{"aria-label":"筛选条件"}},[e("div",{staticClass:"filter-grid"},[e("div",{staticClass:"filter-cell"},[e("label",{staticClass:"filter-title",attrs:{for:"payFilter"}},[t._v("支付方式筛选")]),e("el-select",{staticClass:"filter-control",attrs:{id:"payFilter",placeholder:"全部",clearable:"",filterable:"",size:"small"},on:{change:t.handlePayFilterChange},scopedSlots:t._u([{key:"prefix",fn:function(){return[t.getSelectedPayIcon()?e("img",{staticStyle:{width:"16px",height:"16px","border-radius":"3px","margin-right":"6px"},attrs:{src:t.getSelectedPayIcon(),alt:""}}):t._e()]},proxy:!0}]),model:{value:t.selectedPayKey,callback:function(e){t.selectedPayKey=e},expression:"selectedPayKey"}},t._l(t.paymentMethodList,function(a,s){return e("el-option",{key:s,attrs:{label:t.formatPayTooltip(a),value:`${a.payChain||""}|${a.payCoin||""}`}},[e("div",{staticClass:"pay-opt"},[e("img",{staticClass:"pay-icon",attrs:{src:t.getPayImageUrl(a),alt:""}}),e("span",[t._v(t._s((a.payChain||"").toUpperCase())+" - "+t._s((a.payCoin||"").toUpperCase()))])])])}),1)],1),e("div",{staticClass:"filter-cell center-title"},[e("label",{staticClass:"filter-title"},[t._v("单价区间"),t.getPriceCoinSymbol()?e("span",[t._v("("+t._s(t.getPriceCoinSymbol())+")")]):t._e()]),e("div",{staticClass:"range-controls"},[e("el-input-number",{staticClass:"filter-control",attrs:{min:0,step:1,precision:0,controls:!1,size:"small"},model:{value:t.filters.minPrice,callback:function(e){t.$set(t.filters,"minPrice",e)},expression:"filters.minPrice"}}),e("span",{staticClass:"filter-sep"},[t._v("-")]),e("el-input-number",{staticClass:"filter-control",attrs:{min:0,step:1,precision:0,controls:!1,size:"small"},model:{value:t.filters.maxPrice,callback:function(e){t.$set(t.filters,"maxPrice",e)},expression:"filters.maxPrice"}})],1)]),e("div",{staticClass:"filter-cell center-title"},[e("label",{staticClass:"filter-title"},[t._v("实际算力")]),e("div",{staticClass:"range-controls"},[e("el-input-number",{staticClass:"filter-control",attrs:{min:0,step:.1,precision:2,controls:!1,size:"small"},model:{value:t.filters.minPower,callback:function(e){t.$set(t.filters,"minPower",e)},expression:"filters.minPower"}}),e("span",{staticClass:"filter-sep"},[t._v("-")]),e("el-input-number",{staticClass:"filter-control",attrs:{min:0,step:.1,precision:2,controls:!1,size:"small"},model:{value:t.filters.maxPower,callback:function(e){t.$set(t.filters,"maxPower",e)},expression:"filters.maxPower"}}),e("el-select",{staticClass:"filter-control",staticStyle:{"max-width":"140px"},attrs:{placeholder:"单位",size:"small"},model:{value:t.filters.unit,callback:function(e){t.$set(t.filters,"unit",e)},expression:"filters.unit"}},t._l(t.powerUnitOptions,function(t){return e("el-option",{key:t,attrs:{label:t,value:t}})}),1)],1)]),e("div",{staticClass:"filter-cell filter-cell--span-2 center-title"},[e("label",{staticClass:"filter-title"},[t._v("功耗(kw/h)")]),e("div",{staticClass:"range-controls"},[e("el-input-number",{staticClass:"filter-control",attrs:{min:0,step:.1,precision:2,controls:!1,size:"small"},model:{value:t.filters.minPowerDissipation,callback:function(e){t.$set(t.filters,"minPowerDissipation",e)},expression:"filters.minPowerDissipation"}}),e("span",{staticClass:"filter-sep"},[t._v("-")]),e("el-input-number",{staticClass:"filter-control",attrs:{min:0,step:.1,precision:2,controls:!1,size:"small"},model:{value:t.filters.maxPowerDissipation,callback:function(e){t.$set(t.filters,"maxPowerDissipation",e)},expression:"filters.maxPowerDissipation"}}),e("div",{staticClass:"filter-actions-inline"},[e("el-button",{attrs:{type:"primary",size:"small","aria-label":"执行筛选"},on:{click:t.handleSearchFilters}},[t._v("筛选查询")]),e("el-button",{attrs:{size:"small","aria-label":"重置筛选"},on:{click:t.handleResetFilters}},[t._v("重置")])],1)],1)])])]),e("section",{staticClass:"productList"},[e("el-table",{ref:"machineTable",staticClass:"series-table",staticStyle:{width:"100%"},attrs:{data:t.machineList,"row-key":"id","row-class-name":t.handleGetRowClass,"header-cell-style":{textAlign:"left"},"cell-style":{textAlign:"left"}}},[e("el-table-column",{attrs:{width:"46"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("el-checkbox",{attrs:{disabled:1===a.row.saleState||2===a.row.saleState,title:1===a.row.saleState||2===a.row.saleState?"该机器已售出或售出中,无法选择":""},on:{change:e=>t.handleManualSelectFlat(a.row,e)},model:{value:a.row._selected,callback:function(e){t.$set(a.row,"_selected",e)},expression:"scope.row._selected"}})]}}])}),e("el-table-column",{attrs:{prop:"theoryPower",label:"理论算力","header-align":"left",align:"left","show-overflow-tooltip":""},scopedSlots:t._u([{key:"default",fn:function(a){return[e("span",{staticClass:"num-strong"},[t.formatNum6(a.row.theoryPower).truncated?e("el-tooltip",{attrs:{content:t.formatNum6(a.row.theoryPower).full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatNum6(a.row.theoryPower).text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(t._s(t.formatNum6(a.row.theoryPower).text))])],1),t._v(" "+t._s(a.row.unit)+" ")]}}])}),e("el-table-column",{attrs:{"header-align":"left",align:"left","show-overflow-tooltip":""},scopedSlots:t._u([{key:"header",fn:function(){return[e("span",{staticClass:"sortable",class:{active:"powerSort"===t.activeSortField},on:{click:function(e){return t.handleToggleSort("powerSort")}}},[t._v(" 实际算力 "),e("i",{staticClass:"sort-arrow",class:[t.sortStates&&t.sortStates.powerSort?"asc":"desc","powerSort"===t.activeSortField?"active":""]})])]},proxy:!0},{key:"default",fn:function(a){return[e("span",{staticClass:"num-strong"},[t.formatNum6(a.row.computingPower).truncated?e("el-tooltip",{attrs:{content:t.formatNum6(a.row.computingPower).full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatNum6(a.row.computingPower).text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(t._s(t.formatNum6(a.row.computingPower).text))])],1),t._v(" "+t._s(a.row.unit)+" ")]}}])}),e("el-table-column",{attrs:{prop:"powerDissipation","header-align":"left",align:"left"},scopedSlots:t._u([{key:"header",fn:function(){return[e("span",{staticClass:"sortable",class:{active:"powerDissipationSort"===t.activeSortField},on:{click:function(e){return t.handleToggleSort("powerDissipationSort")}}},[t._v(" 功耗(kw/h) "),e("i",{staticClass:"sort-arrow",class:[t.sortStates&&t.sortStates.powerDissipationSort?"asc":"desc","powerDissipationSort"===t.activeSortField?"active":""]})])]},proxy:!0}])}),e("el-table-column",{attrs:{prop:"algorithm",label:"算法","header-align":"left",align:"left"}}),e("el-table-column",{attrs:{prop:"theoryIncome","header-align":"left",align:"left","show-overflow-tooltip":""},scopedSlots:t._u([{key:"header",fn:function(){return[t._v(" 单机理论收入(每日) "),t.getFirstCoinSymbol()?e("span",[t._v("("+t._s(t.getFirstCoinSymbol())+")")]):t._e()]},proxy:!0},{key:"default",fn:function(a){return[e("span",{staticClass:"num-strong"},[t.formatNum6(a.row.theoryIncome).truncated?e("el-tooltip",{attrs:{content:t.formatNum6(a.row.theoryIncome).full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatNum6(a.row.theoryIncome).text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(t._s(t.formatNum6(a.row.theoryIncome).text))])],1)]}}])}),e("el-table-column",{attrs:{prop:"theoryUsdtIncome",label:"单机理论收入(每日/USDT)","header-align":"left",align:"left"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("span",{staticClass:"num-strong"},[t.formatNum6(a.row.theoryUsdtIncome).truncated?e("el-tooltip",{attrs:{content:t.formatNum6(a.row.theoryUsdtIncome).full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatNum6(a.row.theoryUsdtIncome).text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(t._s(t.formatNum6(a.row.theoryUsdtIncome).text))])],1)]}}])}),e("el-table-column",{attrs:{prop:"type",label:"矿机型号","header-align":"left",align:"left"}}),e("el-table-column",{attrs:{label:"最大可租赁(天)","header-align":"left",align:"left"},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(t._s(t.getRowMaxLeaseDays(e.row)))]}}])}),e("el-table-column",{attrs:{label:"租赁天数(天)","header-align":"left",align:"left"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("el-input-number",{attrs:{min:1,max:t.getRowMaxLeaseDays(a.row),step:1,precision:0,size:"mini",disabled:1===a.row.saleState||2===a.row.saleState,"controls-position":"right"},on:{change:e=>t.handleLeaseDaysChange(a.row,e)},model:{value:a.row.leaseTime,callback:function(e){t.$set(a.row,"leaseTime",e)},expression:"scope.row.leaseTime"}})]}}])}),e("el-table-column",{attrs:{prop:"price","header-align":"left",align:"center"},scopedSlots:t._u([{key:"header",fn:function(){return[e("span",{staticClass:"sortable",class:{active:"priceSort"===t.activeSortField},on:{click:function(e){return t.handleToggleSort("priceSort")}}},[t._v(" 单价 "),t.getPriceCoinSymbol()?e("span",[t._v("("+t._s(t.getPriceCoinSymbol())+")")]):t._e(),e("i",{staticClass:"sort-arrow",class:[t.sortStates&&t.sortStates.priceSort?"asc":"desc","priceSort"===t.activeSortField?"active":""]})])]},proxy:!0},{key:"default",fn:function(a){return[e("span",{staticClass:"price-strong"},[t.formatAmount(a.row.price,t.getRowCoin(a.row)).truncated?e("el-tooltip",{attrs:{content:t.formatAmount(a.row.price,t.getRowCoin(a.row)).full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatAmount(a.row.price,t.getRowCoin(a.row)).text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(t._s(t.formatAmount(a.row.price,t.getRowCoin(a.row)).text))])],1)]}}])}),e("el-table-column",{attrs:{prop:"saleState",label:"售出状态",width:"110","header-align":"left",align:"left"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("el-tag",{attrs:{type:0===a.row.saleState?"info":1===a.row.saleState?"danger":"warning"}},[t._v(" "+t._s(0===a.row.saleState?"未售出":1===a.row.saleState?"已售出":"售出中")+" ")])]}}])})],1)],1),e("div",{staticStyle:{margin:"18px","text-align":"right"}},[e("el-button",{attrs:{type:"primary",size:"small"},on:{click:t.handleOpenAddToCartDialog}},[t._v("加入购物车")])],1),e("el-dialog",{attrs:{visible:t.confirmAddDialog.visible,width:"80vw",title:`确认加入购物车(共 ${t.confirmAddDialog.items.length} 台)`},on:{"update:visible":function(e){return t.$set(t.confirmAddDialog,"visible",e)}},scopedSlots:t._u([{key:"footer",fn:function(){return[e("el-button",{on:{click:function(e){t.confirmAddDialog.visible=!1}}},[t._v("取消")]),e("el-button",{attrs:{type:"primary"},on:{click:t.handleConfirmAddSelectedToCart}},[t._v("确认加入")])]},proxy:!0}])},[e("div",[e("el-table",{attrs:{data:t.confirmAddDialog.items,height:"360",border:"",stripe:"","header-cell-style":{textAlign:"left"},"cell-style":{textAlign:"left"}}},[e("el-table-column",{attrs:{prop:"theoryPower",label:"理论算力","header-align":"left",align:"left"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("span",{staticClass:"num-strong"},[t.formatNum6(a.row.theoryPower).truncated?e("el-tooltip",{attrs:{content:t.formatNum6(a.row.theoryPower).full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatNum6(a.row.theoryPower).text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(t._s(t.formatNum6(a.row.theoryPower).text))])],1),t._v(" "+t._s(a.row.unit)+" ")]}}])}),e("el-table-column",{attrs:{label:"实际算力","header-align":"left",align:"left"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("span",{staticClass:"num-strong"},[t.formatNum6(a.row.computingPower).truncated?e("el-tooltip",{attrs:{content:t.formatNum6(a.row.computingPower).full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatNum6(a.row.computingPower).text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(t._s(t.formatNum6(a.row.computingPower).text))])],1),t._v(" "+t._s(a.row.unit)+" ")]}}])}),e("el-table-column",{attrs:{prop:"algorithm",label:"算法",width:"120","header-align":"left",align:"left"}}),e("el-table-column",{attrs:{prop:"powerDissipation",label:"功耗(kw/h)","header-align":"left",align:"left"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("span",{staticClass:"num-strong"},[t.formatNum6(a.row.powerDissipation).truncated?e("el-tooltip",{attrs:{content:t.formatNum6(a.row.powerDissipation).full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatNum6(a.row.powerDissipation).text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(t._s(t.formatNum6(a.row.powerDissipation).text))])],1)]}}])}),e("el-table-column",{attrs:{label:"租赁天数(天)","header-align":"left",align:"left"},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(t._s(Number(e.row.leaseTime||1)))]}}])}),e("el-table-column",{attrs:{prop:"price","header-align":"left",align:"left"},scopedSlots:t._u([{key:"header",fn:function(){return[t._v(" 单价 "),t.getPriceCoinSymbol()?e("span",[t._v("("+t._s(t.getPriceCoinSymbol())+")")]):t._e()]},proxy:!0},{key:"default",fn:function(a){return[e("span",{staticClass:"price-strong"},[t.formatAmount(a.row.price,t.getRowCoin(a.row)).truncated?e("el-tooltip",{attrs:{content:t.formatAmount(a.row.price,t.getRowCoin(a.row)).full,placement:"top"}},[e("span",[t._v(" "+t._s(t.formatAmount(a.row.price,t.getRowCoin(a.row)).text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(t._s(t.formatAmount(a.row.price,t.getRowCoin(a.row)).text))])],1)]}}])})],1)],1)]),e("el-row",{staticStyle:{"margin-bottom":"20px"}},[e("el-col",{staticStyle:{display:"flex","justify-content":"center"},attrs:{span:24}},[e("el-pagination",{staticStyle:{margin:"0 auto","margin-top":"10px"},attrs:{"current-page":t.currentPage,"page-sizes":t.pageSizes,"page-size":t.params.pageSize,layout:"total, sizes, prev, pager, next, jumper",total:t.total},on:{"size-change":t.handleSizeChange,"current-change":t.handleCurrentChange,"update:currentPage":function(e){t.currentPage=e},"update:current-page":function(e){t.currentPage=e}}})],1)],1)],1):e("div",{staticClass:"not-found"},[e("h2",[t._v("商品不存在")]),e("p",[t._v("抱歉,您查找的商品不存在或已被删除。")]),e("button",{staticClass:"back-btn",on:{click:t.handleBack}},[t._v("返回商品列表")])])])},e.Yp=[]},3723:function(t,e,a){"use strict";var s=a(3999)["default"];Object.defineProperty(e,"__esModule",{value:!0}),e.productRoutes=e.mainRoutes=e["default"]=e.childrenRoutes=e.checkoutRoutes=e.cartRoutes=e.accountRoutes=void 0;var i=s(a(1774));const o=e.productRoutes=[{path:"/productList",name:"productList",component:()=>Promise.resolve().then(()=>(0,i.default)(a(1043))),meta:{title:"商品列表",description:"浏览所有可用商品",allAuthority:["all"]}},{path:"/product/:id",name:"productDetail",component:()=>Promise.resolve().then(()=>(0,i.default)(a(589))),meta:{title:"商品详情",description:"查看商品详细信息",allAuthority:["all"]}}],r=e.cartRoutes=[{path:"/cart",name:"cart",component:()=>Promise.resolve().then(()=>(0,i.default)(a(4125))),meta:{title:"购物车",description:"管理购物车商品",allAuthority:["all"]}}],n=e.checkoutRoutes=[{path:"/checkout",name:"checkout",component:()=>Promise.resolve().then(()=>(0,i.default)(a(5638))),meta:{title:"订单结算",description:"完成订单结算",allAuthority:["all"]}}],l=e.accountRoutes=[{path:"/account",name:"account",component:()=>Promise.resolve().then(()=>(0,i.default)(a(3834))),redirect:"/account/shops",meta:{title:"个人中心",description:"管理个人资料和店铺",allAuthority:["all"]},children:[{path:"wallet",name:"Wallet",component:()=>Promise.resolve().then(()=>(0,i.default)(a(9072))),meta:{title:"我的钱包",description:"查看钱包余额、充值和提现",allAuthority:["all"]}},{path:"rechargeRecord",name:"RechargeRecord",component:()=>Promise.resolve().then(()=>(0,i.default)(a(6851))),meta:{title:"充值记录",description:"查看充值记录",allAuthority:["all"]}},{path:"withdrawalHistory",name:"WithdrawalHistory",component:()=>Promise.resolve().then(()=>(0,i.default)(a(1394))),meta:{title:"提现记录",description:"查看提现记录",allAuthority:["all"]}},{path:"receipt-record",name:"accountReceiptRecord",component:()=>Promise.resolve().then(()=>(0,i.default)(a(8441))),meta:{title:"收款记录",description:"卖家收款流水记录",allAuthority:["all"]}},{path:"shop-new",name:"accountShopNew",component:()=>Promise.resolve().then(()=>(0,i.default)(a(1749))),meta:{title:"新增店铺",description:"创建新的店铺",allAuthority:["all"]}},{path:"shop-config",name:"accountShopConfig",component:()=>Promise.resolve().then(()=>(0,i.default)(a(4859))),meta:{title:"钱包绑定",description:"绑定店铺收款钱包",allAuthority:["all"]}},{path:"shops",name:"accountMyShops",component:()=>Promise.resolve().then(()=>(0,i.default)(a(7802))),meta:{title:"我的店铺",description:"查看我的店铺信息",allAuthority:["all"]}},{path:"product-new",name:"accountProductNew",component:()=>Promise.resolve().then(()=>(0,i.default)(a(9266))),meta:{title:"新增商品",description:"创建新的商品",allAuthority:["all"]}},{path:"products",name:"accountProducts",component:()=>Promise.resolve().then(()=>(0,i.default)(a(7915))),meta:{title:"商品列表",description:"管理店铺下的商品列表",allAuthority:["all"]}},{path:"purchased",name:"accountPurchased",component:()=>Promise.resolve().then(()=>(0,i.default)(a(5815))),meta:{title:"已购商品",description:"查看已购买的商品列表",allAuthority:["all"]}},{path:"funds-flow",name:"accountFundsFlow",component:()=>Promise.resolve().then(()=>(0,i.default)(a(6952))),meta:{title:"资金流水",description:"充值/提现/消费记录切换查看",allAuthority:["all"]}},{path:"purchased-detail/:id",name:"PurchasedDetail",component:()=>Promise.resolve().then(()=>(0,i.default)(a(8874))),meta:{title:"已购商品详情",description:"查看已购商品详细信息",allAuthority:["all"]}},{path:"orders",name:"accountOrders",component:()=>Promise.resolve().then(()=>(0,i.default)(a(8401))),meta:{title:"订单列表",description:"查看与管理订单(按状态筛选)",allAuthority:["all"]}},{path:"seller-orders",name:"accountSellerOrders",component:()=>Promise.resolve().then(()=>(0,i.default)(a(4051))),meta:{title:"已售出订单",description:"卖家侧订单列表",allAuthority:["all"]}},{path:"order-detail/:id",name:"accountOrderDetail",component:()=>Promise.resolve().then(()=>(0,i.default)(a(4458))),meta:{title:"订单详情",description:"查看订单详细信息",allAuthority:["all"]}},{path:"product-detail/:id",name:"accountProductDetail",component:()=>Promise.resolve().then(()=>(0,i.default)(a(5355))),meta:{title:"商品详情",description:"个人中心 - 商品详情",allAuthority:["all"]}},{path:"product-machine-add",name:"accountProductMachineAdd",component:()=>Promise.resolve().then(()=>(0,i.default)(a(2605))),meta:{title:"添加出售机器",description:"为商品添加出售机器",allAuthority:["all"]}}]}],c=e.childrenRoutes=[...o,...r,...n,...l],d=e.mainRoutes=[{path:"/",name:"Home",component:()=>Promise.resolve().then(()=>(0,i.default)(a(1182))),redirect:"/productList",children:c},{path:"*",redirect:"/productList"}];e["default"]=d},3834:function(t,e,a){"use strict";a.r(e),a.d(e,{__esModule:function(){return i.B},default:function(){return l}});var s=a(1910),i=a(1259),o=i.A,r=a(845),n=(0,r.A)(o,s.XX,s.Yp,!1,null,"59d86c16",null),l=n.exports},4051:function(t,e,a){"use strict";a.r(e),a.d(e,{__esModule:function(){return i.B},default:function(){return l}});var s=a(9690),i=a(1977),o=i.A,r=a(845),n=(0,r.A)(o,s.XX,s.Yp,!1,null,"c4d1af58",null),l=n.exports},4125:function(t,e,a){"use strict";a.r(e),a.d(e,{__esModule:function(){return i.B},default:function(){return l}});var s=a(950),i=a(8732),o=i.A,r=a(845),n=(0,r.A)(o,s.XX,s.Yp,!1,null,"639b0fc8",null),l=n.exports},4180:function(t,e,a){"use strict";var s=a(3999)["default"];Object.defineProperty(e,"__esModule",{value:!0}),e.addOrders=o,e.cancelOrder=r,e.getChainAndListForSeller=d,e.getCoinPrice=u,e.getOrdersByIds=n,e.getOrdersByStatus=l,e.getOrdersByStatusForSeller=c;var i=s(a(5720));function o(t){return(0,i.default)({url:"/lease/order/info/addOrders",method:"post",data:t})}function r(t){return(0,i.default)({url:"/lease/order/info/cancelOrder",method:"post",data:t})}function n(t){return(0,i.default)({url:"/lease/order/info/getOrdersByIds",method:"post",data:t})}function l(t){return(0,i.default)({url:"/lease/order/info/getOrdersByStatus",method:"post",data:t})}function c(t){return(0,i.default)({url:"/lease/order/info/getOrdersByStatusForSeller",method:"post",data:t})}function d(t){return(0,i.default)({url:"/lease/shop/getChainAndListForSeller",method:"post",data:t})}function u(t){return(0,i.default)({url:"/lease/order/info/getCoinPrice",method:"post",data:t})}},4300:function(t,e,a){"use strict";Object.defineProperty(e,"B",{value:!0}),e.A=void 0,a(8111),a(1701);var s=a(6299),i=a(4981);e.A={name:"AccountReceiptRecord",data(){return{loading:!1,rows:[{orderId:"1234567890",fromChain:"tron",fromSymbol:"USDT",fromAddress:"TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",toChain:"tron",coin:"USDT",toAddress:"TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",txHash:"TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",status:2,updateTime:"2024-01-15 14:30:25",realAmount:100},{orderId:"1234567890",fromChain:"tron",fromSymbol:"USDT",fromAddress:"TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",toChain:"tron",coin:"USDT",toAddress:"TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",txHash:"TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",status:1,updateTime:"2024-01-15 14:30:25",realAmount:106}],page:1,pageSize:10,total:0,range:[],keyword:"",expandedRowKeys:[]}},mounted(){this.fetchList(),this.rows=this.withKeys(this.rows)},methods:{formatAmount(t,e){return(0,i.truncateAmountByCoin)(t,e)},withKeys(t){const e=Array.isArray(t)?t:[];return e.map((t,e)=>({...t,__rowKey:t&&t.__rowKey?t.__rowKey:`${t&&(t.txHash||t.orderId||t.updateTime||"")}_${e}`}))},getRowKey(t){return t&&t.__rowKey},handleRowClick(t){const e=this.getRowKey(t),a=this.expandedRowKeys.includes(e);this.expandedRowKeys=a?[]:[e]},handleExpandChange(t,e){Array.isArray(e)?this.expandedRowKeys=e.length?[this.getRowKey(e[e.length-1])]:[]:this.expandedRowKeys=[]},getRowClassName(){return"clickable-row"},formatTrunc(t,e=2){const a=Number(t);if(!Number.isFinite(a))return"0";const s=Math.max(0,Number(e)||0),i=Math.pow(10,s),o=Math.trunc(a*i)/i,r=String(o);if(0===s)return r;const[n,l=""]=r.split("."),c=l.padEnd(s,"0");return`${n}.${c}`},formatFullTime(t){if(!t)return"";try{return`${t.split("T")[0]} ${t.split("T")[1].split(".")[0]}`}catch(e){return console.log(e,"时间"),t}},formatChain(t){const e={tron:"Tron (TRC20)",ethereum:"Ethereum (ERC20)",bsc:"BSC (BEP20)",polygon:"Polygon"};return e[t]||t||"-"},getStatusType(t){const e={0:"danger",1:"success",2:"warning",3:"danger"};return e[t]||"info"},getStatusText(t){const e={0:"支付失败",1:"支付成功",2:"待校验",3:"证书校验失败"};return e[t]||"未知"},copy(t){if(!t)return;try{if(navigator.clipboard&&navigator.clipboard.writeText)return navigator.clipboard.writeText(t),void this.$message.success("已复制")}catch(a){}const e=document.createElement("textarea");e.value=t,document.body.appendChild(e),e.select();try{document.execCommand("copy"),this.$message.success("已复制")}catch(a){}document.body.removeChild(e)},handleRangeChange(){this.page=1},async fetchList(){this.loading=!0;try{const t={page:this.page,pageSize:this.pageSize},e=await(0,s.sellerReceiptList)(t),a=e&&(e.data||e),i=Array.isArray(a&&a.rows)?a.rows:Array.isArray(a)?a:[];this.rows=this.withKeys(i),this.total=e.total}catch(t){this.rows=[],this.total=0}finally{this.loading=!1}}}}},4458:function(t,e,a){"use strict";a.r(e),a.d(e,{__esModule:function(){return i.B},default:function(){return l}});var s=a(2389),i=a(9660),o=i.A,r=a(845),n=(0,r.A)(o,s.XX,s.Yp,!1,null,"613e4d6c",null),l=n.exports},4487:function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=void 0,a(4114),a(8111),a(2489),a(116),a(2912),a(7588),a(1701),a(8237),a(7642),a(8004),a(3853),a(5876),a(2475),a(5024),a(1698);var s=a(7723),i=a(5952),o=a(9662),r=a(5844),n=a(4981);e["default"]={name:"ProductDetail",data(){return{product:null,loading:!1,expandedRowKeys:[],selectedMap:{},machineList:[],paymentMethodList:[],selectedPayKey:null,filters:{chain:"",coin:"",minPrice:null,maxPrice:null,minPower:null,maxPower:null,minPowerDissipation:null,maxPowerDissipation:null,unit:"GH/S"},powerUnitOptions:["KH/S","MH/S","GH/S","TH/S","PH/S"],sortStates:{priceSort:!0,powerSort:!0,powerDissipationSort:!0},activeSortField:"",payFilterDefaultApplied:!1,params:{id:"",pageNum:1,pageSize:10},confirmAddDialog:{visible:!1,items:[]},cartMachineIdSet:new Set,cartCompositeKeySet:new Set,cartLoaded:!1,machinesLoaded:!1,productListData:[],tableData:[],productDetailLoading:!1,pageSizes:[10,20,50],currentPage:1,total:0}},mounted(){this.$route.params.id?(this.params.id=this.$route.params.id,this.product=!0,this.productListData&&this.productListData.length&&(this.expandedRowKeys=[this.productListData[0].id]),this.fetchGetMachineInfo(this.params),this.fetchPayTypes()):(this.$message.error("商品不存在"),this.product=!1),this.fetchGetGoodsList()},methods:{getRowCoin(t){try{const e=t&&(t.payCoin||t.coin)||this.getPriceCoinSymbol()||"";return String(e).toUpperCase()}catch(e){return""}},formatAmount(t,e){return(0,n.truncateAmountByCoin)(t,e)},formatNum6(t){return(0,n.truncateTo6)(t)},ensureDefaultPayFilterSelection(){try{if(this.payFilterDefaultApplied)return;const t=Array.isArray(this.paymentMethodList)?this.paymentMethodList:[];if(!t.length)return;const e=this.getPriceCoinSymbol&&this.getPriceCoinSymbol()||"";if(!e)return;const a=t.find(t=>String(t&&t.payCoin).toUpperCase()===String(e).toUpperCase());if(!a)return;const s=`${a.payChain||""}|${a.payCoin||""}`;this.selectedPayKey=s,this.filters.chain=String(a.payChain||"").trim(),this.filters.coin=String(a.payCoin||"").trim(),this.payFilterDefaultApplied=!0}catch(t){}},handleToggleSort(t){try{this.sortStates||(this.sortStates={}),this.activeSortField!==t?(Object.keys(this.sortStates).forEach(t=>{this.sortStates[t]=!0}),this.activeSortField=t,this.sortStates[t]=!1):this.sortStates[t]=!this.sortStates[t];const e=this.buildQueryParams();this.fetchGetMachineInfo(e)}catch(e){}},buildQueryParams(){const t={id:this.params.id};try{this.params&&null!=this.params.pageNum&&(t.pageNum=this.params.pageNum),this.params&&null!=this.params.pageSize&&(t.pageSize=this.params.pageSize)}catch(a){}const e=(e,a,s)=>{const i=e[a];if(null===i||void 0===i||""===i)return;const o=Number(i);Number.isFinite(o)&&o>0&&(t[s]=o)};this.filters.chain&&String(this.filters.chain).trim()&&(t.chain=String(this.filters.chain).trim()),this.filters.coin&&String(this.filters.coin).trim()&&(t.coin=String(this.filters.coin).trim()),this.filters.unit&&String(this.filters.unit).trim()&&(t.unit=String(this.filters.unit).trim()),e(this.filters,"minPrice","minPrice"),e(this.filters,"maxPrice","maxPrice"),e(this.filters,"minPower","minPower"),e(this.filters,"maxPower","maxPower"),e(this.filters,"minPowerDissipation","minPowerDissipation"),e(this.filters,"maxPowerDissipation","maxPowerDissipation");try{if(this.activeSortField){const e=this.sortStates||{};t[this.activeSortField]=!!e[this.activeSortField]}}catch(a){}return t},async fetchPayTypes(){try{const t=await(0,o.getPayTypes)({productId:this.params.id});if(t&&(0===t.code||200===t.code)){const e=Array.isArray(t.data)?t.data:[];this.paymentMethodList=e,this.ensureDefaultPayFilterSelection()}}catch(t){this.paymentMethodList=[]}},async fetchGetMachineInfo(t){this.productDetailLoading=!0;const e=await(0,o.getMachineInfo)(t);if(console.log(e),e&&200===e.code){console.log(e.data,"res.rows"),this.total=e.total||0;try{const t=e&&e.data&&e.data.payConfigList;Array.isArray(t)&&t.length&&(this.paymentMethodList=t)}catch(a){}const t=e&&e.data&&(e.data.rows||e.data.list)||e&&e.rows||[],s=(Array.isArray(t)?t:[]).map((t,e)=>({...t,id:t&&void 0!==t.id&&null!==t.id?t.id:`m-${e}`,leaseTime:t&&t.leaseTime&&Number(t.leaseTime)>0?Number(t.leaseTime):1,_selected:!1}));this.machineList=s,this.productListData=[],this.expandedRowKeys=[],this.ensureDefaultPayFilterSelection(),this.$nextTick(()=>{this.machinesLoaded=!0})}this.productDetailLoading=!1},async loadProduct(){try{this.loading=!0;const t=this.$route.params.id;this.product=await(0,s.getProductById)(t),this.product||this.$message({message:"商品不存在",type:"error",showClose:!0})}catch(t){console.error("加载商品详情失败:",t),this.$message({message:"加载商品详情失败,请稍后重试",type:"error",showClose:!0})}finally{this.loading=!1}},async fetchAddCart(t){const e=await(0,r.addCart)(t);return e},async fetchGetGoodsList(t){const e=await(0,r.getGoodsList)(t);try{const t=this.params&&this.params.id?Number(this.params.id):Number(this.$route.params.id),s=Array.isArray(e&&e.rows)?e.rows:Array.isArray(e&&e.data&&e.data.rows)?e.data.rows:Array.isArray(e&&e.data)?e.data:[],i=s.length&&s[0]&&Array.isArray(s[0].shoppingCartInfoDtoList)?s.flatMap(t=>Array.isArray(t.shoppingCartInfoDtoList)?t.shoppingCartInfoDtoList:[]):s,o=i.filter(e=>Number(e.productId)===t),r=new Set,n=new Set;o.forEach(t=>{const e=Array.isArray(t.productMachineDtoList)?t.productMachineDtoList:[];e.forEach(t=>{t&&(void 0!==t.id&&null!==t.id&&r.add(String(t.id)),t.user&&t.miner&&n.add(`${String(t.user)}|${String(t.miner)}`))})}),this.cartMachineIdSet=r,this.cartCompositeKeySet=n;try{const t=i.reduce((t,e)=>t+(Array.isArray(e&&e.productMachineDtoList)?e.productMachineDtoList.length:0),0);Number.isFinite(t)&&window.dispatchEvent(new CustomEvent("cart-updated",{detail:{count:t}}))}catch(a){}this.$nextTick(()=>{this.cartLoaded=!0,this.autoSelectAndDisable()})}catch(a){console.warn("解析购物车数据失败",a)}},handleBack(){this.$router.push("/productList")},handleSeriesRowClick(t){const e=t.id,a=Object.keys(this.selectedMap).filter(t=>(this.selectedMap[t]||[]).length>0),s=this.expandedRowKeys.includes(e);this.expandedRowKeys=s?a:Array.from(new Set([e,...a]))},handleGetSeriesRowClassName(){return"series-clickable-row"},handleInnerSelectionChange(t,e){const a=t.id;this.$set(this.selectedMap,a,e);const s=Object.keys(this.selectedMap).filter(t=>(this.selectedMap[t]||[]).length>0),i=new Set(this.expandedRowKeys);s.forEach(t=>i.add(t)),this.expandedRowKeys=Array.from(i).filter(t=>s.includes(t)||t===a||this.expandedRowKeys.includes(t))},handleExpandChange(t,e){},autoSelectAndDisable(){},isSelectable(t,e){return!0},isSelectedByParent(t,e){const a=t&&t.id,s=a&&this.selectedMap[a]||[];return!!s.find(t=>t&&t.id===e.id)},handleManualSelect(t,e,a){if(e&&(1===e.saleState||2===e.saleState))return this.$message.warning("该机器已售出或售出中,无法选择"),void this.$set(e,"_selected",!1);const s=t.id,i=this.selectedMap[s]&&[...this.selectedMap[s]]||[],o=i.findIndex(t=>t&&t.id===e.id);a&&-1===o&&i.push(e),!a&&o>-1&&i.splice(o,1),this.$set(this.selectedMap,s,i),this.$set(e,"_selected",!!a)},handleGetInnerRowClass({row:t}){return t&&(1===t.saleState||2===t.saleState)?"sold-row":""},handleDecreaseVariantQuantity(t,e){const a=this.productListData[t].variants[e];a.quantity>1&&a.quantity--},handleIncreaseVariantQuantity(t,e){const a=this.productListData[t].variants[e];a.quantity<99&&a.quantity++},handleVariantQuantityInput(t,e){const a=this.productListData[t].variants[e],s=Number(a.quantity);(!s||s<1)&&(a.quantity=1),s>99&&(a.quantity=99)},handleAddVariantToCart(t){if(t&&t.onlyKey)try{(0,i.addToCart)({id:t.onlyKey,title:t.model,price:t.price,quantity:t.quantity}),this.$message.success(`已添加 ${t.quantity} 件 ${t.model} 到购物车`),t.quantity=1}catch(e){console.error("添加到购物车失败:",e)}},handleAddSelectedToCart(){const t=Object.values(this.selectedMap).flat().filter(Boolean);if(t.length)try{t.forEach(t=>{(0,i.addToCart)({id:t.onlyKey||t.id,title:t.type||t.model||"矿机",price:t.price,quantity:1,leaseTime:Number(t.leaseTime||1)})}),this.$message.success(`已加入 ${t.length} 台矿机到购物车`),this.selectedMap={}}catch(e){console.error("统一加入购物车失败",e)}else this.$message.warning("请先勾选至少一台矿机")},handleOpenAddToCartDialog(){const t=Array.isArray(this.productListData)?this.productListData:[],e=t.flatMap(t=>Array.isArray(t.productMachines)?t.productMachines.filter(t=>!!t&&!!t._selected):[]),a=e.filter(t=>t&&(0===t.saleState||void 0===t.saleState||null===t.saleState));a.length?(a.length{try{this.clearAllSelections()}catch(t){}})):this.$message.warning("请先勾选至少一台矿机")},async handleConfirmAddSelectedToCart(){const t=Array.isArray(this.confirmAddDialog.items)?this.confirmAddDialog.items.filter(Boolean):[];if(!t.length)return void this.$message.warning("请先勾选至少一台矿机");const e=this.params&&this.params.id?this.params.id:this.$route&&this.$route.params&&this.$route.params.id;if(!e)return void this.$message.error("商品ID缺失,无法加入购物车");const a=t.map(t=>({productId:e,productMachineId:t.id,leaseTime:Number(t.leaseTime||1)}));try{const e=await this.fetchAddCart(a);if(!e||e.code&&200!==Number(e.code))return void this.$message.error(e&&e.msg?e.msg:"加入购物车失败,请稍后重试");try{t.forEach(t=>{t&&t.id&&this.cartMachineIdSet.add(t.id),this.$set(t,"_selected",!1),this.$set(t,"_inCart",!0),(!t.leaseTime||Number(t.leaseTime)<=0)&&this.$set(t,"leaseTime",1)}),this.$nextTick(()=>this.autoSelectAndDisable())}catch(s){}this.$message({message:`已加入 ${t.length} 台矿机到购物车`,type:"success",duration:3e3,showClose:!0}),this.confirmAddDialog.visible=!1,this.selectedMap={},this.fetchGetMachineInfo(this.params),this.fetchGetGoodsList();try{window.dispatchEvent(new CustomEvent("cart-updated"))}catch(s){}}catch(s){console.error("加入购物车失败: ",s),this.$message.error("加入购物车失败,请稍后重试")}},clearAllSelections(){try{if(this.selectedMap={},Array.isArray(this.machineList)&&this.machineList.length)return void this.machineList.forEach(t=>{t&&this.$set(t,"_selected",!1)});const t=Array.isArray(this.productListData)?this.productListData:[];t.forEach(t=>{const e=Array.isArray(t.productMachines)?t.productMachines:[];e.forEach(t=>{t&&this.$set(t,"_selected",!1)})})}catch(t){}},handleDecreaseQuantity(t){this.tableData[t].quantity>1&&this.tableData[t].quantity--},handleIncreaseQuantity(t){this.tableData[t].quantity<99&&this.tableData[t].quantity++},handleQuantityInput(t){const e=this.tableData[t].quantity;e<1?this.tableData[t].quantity=1:e>99&&(this.tableData[t].quantity=99)},handleQuantityBlur(t){const e=this.tableData[t].quantity;!e||e<1?this.tableData[t].quantity=1:e>99&&(this.tableData[t].quantity=99)},handleAddToCart(t){if(!t||t.quantity<1)this.$message.warning("请选择有效的数量");else try{(0,i.addToCart)({id:t.date,title:t.date,price:t.price,quantity:t.quantity,leaseTime:Number(t.leaseTime||1)}),this.$message.success(`已添加 ${t.quantity} 件 ${t.date} 到购物车`),t.quantity=1}catch(e){console.error("添加到购物车失败:",e),this.$message.error("添加到购物车失败,请稍后重试")}},handleSizeChange(t){console.log(`每页 ${t} 条`),this.params.pageSize=t,this.params.pageNum=1,this.currentPage=1,this.fetchGetMachineInfo(this.buildQueryParams())},handleCurrentChange(t){console.log(`当前页: ${t}`),this.params.pageNum=t,this.fetchGetMachineInfo(this.buildQueryParams())}}}},4571:function(t,e){"use strict";e.Yp=e.XX=void 0;e.XX=function(){var t=this,e=t._self._c;return e("div",{staticClass:"purchased-detail-page"},[e("h2",{staticClass:"title"},[t._v("已购商品详情")]),t.loading?e("div",{staticClass:"loading"},[t._v("加载中...")]):e("div",[e("el-card",{staticClass:"section"},[e("div",{staticClass:"sub-title"},[t._v("基本信息")]),e("div",{staticClass:"row"},[e("span",{staticClass:"label"},[t._v("用户:")]),e("span",{staticClass:"value mono"},[t._v(t._s(t.detail.userId||"—"))])]),e("div",{staticClass:"row"},[e("span",{staticClass:"label"},[t._v("订单项ID:")]),e("span",{staticClass:"value mono"},[t._v(t._s(t.detail.orderItemId||"—"))])]),e("div",{staticClass:"row"},[e("span",{staticClass:"label"},[t._v("机器ID:")]),e("span",{staticClass:"value mono"},[t._v(t._s(t.detail.productMachineId||"—"))])]),e("div",{staticClass:"row"},[e("span",{staticClass:"label"},[t._v("商品类型:")]),e("span",{staticClass:"value"},[e("el-tag",{attrs:{type:1===t.detail.type?"success":"info"}},[t._v(" "+t._s(1===t.detail.type?"算力套餐":"挖矿机器")+" ")])],1)]),e("div",{staticClass:"row"},[e("span",{staticClass:"label"},[t._v("状态:")]),e("span",{staticClass:"value"},[e("el-tag",{attrs:{type:0===t.detail.status?"success":"info"}},[t._v(" "+t._s(0===t.detail.status?"运行中":"已过期")+" ")])],1)]),e("div",{directives:[{name:"show",rawName:"v-show",value:1===t.detail.type,expression:"detail.type === 1"}],staticClass:"row"},[e("span",{staticClass:"label"},[t._v("购买算力:")]),e("span",{staticClass:"value strong"},[t._v(t._s(t.detail.purchasedComputingPower))])]),e("div",{staticClass:"row"},[e("span",{staticClass:"label"},[t._v("购买时间:")]),e("span",{staticClass:"value"},[t._v(t._s(t.formatDateTime(t.detail.createTime)))])]),e("div",{staticClass:"row"},[e("span",{staticClass:"label"},[t._v("开始时间:")]),e("span",{staticClass:"value"},[t._v(t._s(t.formatDateTime(t.detail.startTime)))])]),e("div",{staticClass:"row"},[e("span",{staticClass:"label"},[t._v("结束时间:")]),e("span",{staticClass:"value"},[t._v(t._s(t.formatDateTime(t.detail.endTime)))])])]),e("el-card",{staticClass:"section",staticStyle:{"margin-top":"12px"}},[e("div",{staticClass:"sub-title"},[t._v("收益信息")]),e("div",{staticClass:"row"},[e("span",{staticClass:"label"},[t._v("当前实际算力:")]),e("span",{staticClass:"value strong"},[t._v(t._s(t.detail.currentComputingPower||"0"))])]),e("div",{staticClass:"row"},[e("span",{staticClass:"label"},[t._v("币种收益:")]),e("span",{staticClass:"value strong"},[t._v(t._s(t.detail.currentIncome||"0"))])]),e("div",{staticClass:"row"},[e("span",{staticClass:"label"},[t._v("当前USDT收益:")]),e("span",{staticClass:"value strong"},[t._v(t._s(t.detail.currentUsdtIncome||"0")+" USDT")])]),e("div",{staticClass:"row"},[e("span",{staticClass:"label"},[t._v("预估结束总收益:")]),e("span",{staticClass:"value strong"},[t._v(t._s(t.detail.estimatedEndIncome||"0"))])]),e("div",{staticClass:"row"},[e("span",{staticClass:"label"},[t._v("预估结束USDT总收益:")]),e("span",{staticClass:"value strong"},[t._v(t._s(t.detail.estimatedEndUsdtIncome||"0")+" USDT")])])]),e("div",{staticClass:"actions"},[e("el-button",{on:{click:function(e){return t.$router.back()}}},[t._v("返回")])],1)],1)])},e.Yp=[]},4601:function(t,e,a){"use strict";Object.defineProperty(e,"B",{value:!0}),e.A=void 0,a(4114),a(8111),a(2489),a(7588),a(1701);a(5705);var s=a(6299);e.A={name:"AccountShopConfig",data(){return{productOptions:[],form:{chain:"",payAddress:"",payCoin:""},shop:{id:0,name:"",image:"",description:"",del:!0,state:0},value:[],currentChain:"",cascaderProps:{multiple:!0,checkStrictly:!1,emitPath:!0,value:"value",label:"label",children:"children"},options:[],loading:!1,preCheck:{visible:!1,rows:[],prices:{},rowPrices:{}}}},mounted(){this.getChainAndList()},methods:{handleRemoveSelectedCoin(t){const e=String(t||"").toLowerCase(),a=(this.value||[]).filter(t=>Array.isArray(t)&&String(t[1]).toLowerCase()!==e);this.handleChange(a)},handleItemClick(t,e){if(t)if(t.isLeaf){const e=t.path.map(t=>t.value),a=e[0],s=e[1];this.currentChain=String(a||"");let i=Array.isArray(this.value)?this.value.slice():[];const o=i.length?i[i.length-1]:null,r=Array.isArray(o)?o[0]:null;r&&r!==a&&(i=[]);const n=i.findIndex(t=>Array.isArray(t)&&t[0]===a&&t[1]===s);n>=0?i.splice(n,1):i.push([a,s]),this.handleChange(i)}else{const a=e&&e.value;t.expanded||t.expand(),a&&(this.currentChain=String(a),this.value=[],this.form.chain=String(a),this.form.payCoin="")}},handleExpandChange(t){const e=Array.isArray(t)&&t[0]||"";e&&(this.currentChain=String(e))},validateAddressByChain(t,e){const a=String(t||"").toLowerCase(),s=String(e||"").trim();if(!s)return{ok:!1,message:"请输入收款地址"};if(a.includes("tron")||"tron"===a){const t=/^T[A-Za-z1-9]{33}$/.test(s);return t?{ok:!0}:{ok:!1,message:"请输入正确的 TRON 地址:以 T 开头的 34 位字符"}}if(a.includes("ethereum")||"ethereum"===a||a.includes("eth")||a.includes("bsc")||"bsc"===a||a.includes("polygon")||"polygon"===a||a.includes("erc")||a.includes("bep")){const t=/^0x[a-fA-F0-9]{40}$/.test(s);return t?{ok:!0}:{ok:!1,message:"请输入正确的以太坊/EVM 兼容链地址:以 0x 开头 + 40 位十六进制"}}return s.length<=10?{ok:!1,message:"请输入正确的收款地址格式"}:{ok:!0}},async getChainAndList(){this.loading=!0;const t=await(0,s.getChainAndList)();t&&(0===t.code||200===t.code)&&t.data&&(this.options=this.toUpperOptions(t.data)),this.loading=!1},toUpperOptions(t){const e=Array.isArray(t)?t:[];return e.map(t=>{const e={...t},a=t&&(null!=t.label?t.label:t.value)||"";return e.label=String(a).toUpperCase(),Array.isArray(t&&t.children)&&(e.children=this.toUpperOptions(t.children)),e})},async FetchAddWalletShopConfig(t){this.loading=!0;const e=await(0,s.addWalletShopConfig)(t);!e||0!==e.code&&200!==e.code||(this.$message.success("绑定成功"),this.$router.push("/account/shops")),this.loading=!1},handleChange(t){const e=Array.isArray(t)?t:[];if(0===e.length)return this.form.chain="",this.form.payCoin="",void(this.value=[]);const a=e[e.length-1],s=Array.isArray(a)?a[0]:"",i=this.currentChain||s,o=e.filter(t=>Array.isArray(t)&&t[0]===i);this.value=o,this.form.chain=i||"",this.form.payCoin=o.map(t=>t[1]).filter(Boolean).join(",")},handleSave(){const t=Array.isArray(this.value)?this.value:[];if(this.form.chain=t.length?t[0]&&t[0][0]:"",this.form.payCoin=t.map(t=>t&&t[1]).filter(Boolean).join(","),!this.form.chain)return void this.$message.warning("请选择链");if(!this.form.payCoin)return void this.$message.warning("请选择币种");if(!this.form.payAddress)return void this.$message.warning("请输入钱包地址");const{ok:e,message:a}=this.validateAddressByChain(this.form.chain,this.form.payAddress);e?this.preCheckBeforeBind():this.$message.warning(a||"钱包地址格式不正确")},async preCheckBeforeBind(){try{this.loading=!0;const t={chain:this.form.chain,payCoin:this.form.payCoin},e=await(0,s.getProductListForShopWalletConfig)(t),a=Array.isArray(e&&e.data)?e.data:Array.isArray(e&&e.rows)?e.rows:[];if(a&&a.length){this.preCheck.rows=a;const t=(this.form.payCoin||"").split(",").map(t=>t.trim().toUpperCase()).filter(Boolean),e={};t.forEach(t=>{t in this.preCheck.prices||(e[t]="")}),this.preCheck.prices={...e,...this.preCheck.prices},this.preCheck.rowPrices=this.preCheck.rowPrices||{},this.preCheck.rows.forEach((e,a)=>{const s=this.getRowKey(e,a);this.preCheck.rowPrices[s]||this.$set(this.preCheck.rowPrices,s,{}),t.forEach(t=>{t in this.preCheck.rowPrices[s]||this.$set(this.preCheck.rowPrices[s],t,"")})}),this.preCheck.visible=!0}else await this.submitBindWithPrice([])}catch(t){await this.submitBindWithPrice([])}finally{this.loading=!1}},handleConfirmBindAfterPreview(){const t=(this.form.payCoin||"").split(",").map(t=>t.trim().toUpperCase()).filter(Boolean);for(let a=0;a{null!=e&&""!==e&&t.push(e)};return(t||[]).forEach((t,s)=>{const i=[];Array.isArray(t&&t.machineList)&&t.machineList.forEach(t=>a(i,t&&(null!=t.productMachineId?t.productMachineId:t.id))),Array.isArray(t&&t.productMachineIdList)&&t.productMachineIdList.forEach(t=>a(i,t)),t&&null!=t.productMachineId&&a(i,t.productMachineId),Array.isArray(t&&t.productMachineDtoList)&&t.productMachineDtoList.forEach(t=>a(i,t&&(null!=t.productMachineId?t.productMachineId:t.id))),Array.isArray(t&&t.machines)&&t.machines.forEach(t=>a(i,t&&(null!=t.productMachineId?t.productMachineId:t.id))),Array.isArray(t&&t.items)&&t.items.forEach(t=>a(i,t&&(null!=t.productMachineId?t.productMachineId:t.id)));const o=this.getRowKey(t,s);e.push({key:o,machineIds:i})}),e},getRowKey(t,e){return t&&null!=t.productId?String(t.productId):t&&null!=t.id?`p-${t.id}`:`idx-${e}`},async submitBindWithPrice(t){try{this.loading=!0;const e=(this.form.payCoin||"").split(",").map(t=>t.trim().toUpperCase()).filter(Boolean),a=[];Array.isArray(t)&&t.length&&t.forEach(t=>{const s=this.preCheck.rowPrices&&this.preCheck.rowPrices[t.key]||{},i=e.map(t=>s[t]||"").join(",");(t.machineIds||[]).forEach(t=>{a.push({productMachineId:t,price:i})})});const i={chain:this.form.chain,symbol:this.form.payCoin,payAddress:this.form.payAddress,productMachineForWalletConfigVoList:a},o=await(0,s.updateProductListForShopWalletConfig)(i);!o||0!==o.code&&200!==o.code?this.preCheck.visible=!0:(this.preCheck.visible=!1,this.resetPreCheckPrices(),this.$message.success("绑定成功"),this.$router.push("/account/shops"))}catch(e){}finally{this.loading=!1}},handleReset(){this.form={chain:"",payAddress:"",payCoin:""},this.value=[]},resetPreCheckPrices(){try{this.preCheck.prices={},this.preCheck.rowPrices={}}catch(t){}},handlePreCheckClose(){this.resetPreCheckPrices()}},computed:{coinsForBind(){return(this.form.payCoin||"").split(",").map(t=>t.trim().toUpperCase()).filter(Boolean)},canSubmitPreCheck(){if(!this.preCheck||!this.preCheck.visible)return!1;const t=this.coinsForBind;if(!t.length)return!1;for(let e=0;e<(this.preCheck.rows||[]).length;e++){const a=this.preCheck.rows[e],s=this.getRowKey(a,e),i=this.preCheck.rowPrices&&this.preCheck.rowPrices[s]||{};for(const e of t){const t=i[e];if(!t||Number(t)<=0)return!1}}return!0},selectedCoinsDisplay(){const t=Array.isArray(this.value)?this.value:[],e=t.map(t=>t&&t[1]).filter(Boolean).map(t=>String(t).toUpperCase());return e.join("、")},selectedCoins(){const t=Array.isArray(this.value)?this.value:[];return t.map(t=>t&&t[1]).filter(Boolean).map(t=>String(t).toUpperCase())}}}},4859:function(t,e,a){"use strict";a.r(e),a.d(e,{__esModule:function(){return i.B},default:function(){return l}});var s=a(8603),i=a(4601),o=i.A,r=a(845),n=(0,r.A)(o,s.XX,s.Yp,!1,null,"42f7ea7c",null),l=n.exports},4981:function(t,e){"use strict";function a(){return 6}function s(t,e){if(null===t||void 0===t)return{text:"0",truncated:!1,full:"0"};const a=String(t);if(!a)return{text:"0",truncated:!1,full:"0"};if(!/^-?\d+(\.\d+)?$/.test(a))return{text:a,truncated:!1,full:a};const s=a.startsWith("-"),i=s?a.slice(1):a,[o,r=""]=i.split("."),n=r.slice(0,Math.max(0,e)),l=r.length>e,c=(s?"-":"")+(n?`${o}.${n}`:o);return{text:c,truncated:l,full:a}}function i(t,e){const i=a(e);return s(t,i)}function o(t){return s(t,6)}Object.defineProperty(e,"__esModule",{value:!0}),e.getMaxDecimalsByCoin=a,e.truncateAmountByCoin=i,e.truncateAmountRaw=s,e.truncateTo6=o},4994:function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=void 0,a(4114),a(8111),a(7588);class s{constructor(){this.loadingStates=new Map,this.setupListeners()}setupListeners(){window.addEventListener("network-retry-complete",()=>{this.resetAllLoadingStates()})}setLoading(t,e,a){const s=`${t}:${e}`;this.loadingStates.set(s,{value:a,timestamp:Date.now()})}getLoading(t,e){const a=`${t}:${e}`,s=this.loadingStates.get(a);return!!s&&s.value}resetAllLoadingStates(){const t=[];this.loadingStates.forEach((e,a)=>{if(!0===e.value){const[e,s]=a.split(":");t.push({componentId:e,stateKey:s}),this.loadingStates.set(a,{value:!1,timestamp:Date.now()})}}),window.dispatchEvent(new CustomEvent("reset-loading-states",{detail:{componentsToUpdate:t}}))}resetComponentLoadingStates(t){const e=[];return this.loadingStates.forEach((a,s)=>{if(s.startsWith(`${t}:`)&&!0===a.value){const a=s.split(":")[1];e.push({componentId:t,stateKey:a}),this.loadingStates.set(s,{value:!1,timestamp:Date.now()})}}),e}}const i=new s;e["default"]=i},5059:function(t,e){"use strict";e.Yp=e.XX=void 0;e.XX=function(){var t=this,e=t._self._c;return e("div",{staticClass:"panel"},[e("h2",{staticClass:"panel-title"},[t._v("新增店铺")]),e("div",{staticClass:"panel-body"},[e("div",{staticClass:"row"},[e("label",{staticClass:"label"},[t._v("店铺名称")]),e("el-input",{attrs:{placeholder:"请输入店铺名称",maxlength:30,"show-word-limit":""},model:{value:t.form.name,callback:function(e){t.$set(t.form,"name",e)},expression:"form.name"}})],1),e("div",{staticClass:"row"},[e("label",{staticClass:"label"},[t._v("店铺描述")]),e("div",{staticClass:"textarea-wrapper"},[e("el-input",{attrs:{type:"textarea",rows:4,maxlength:300,placeholder:"请输入店铺描述","show-word-limit":""},on:{input:t.handleDescriptionInput},model:{value:t.form.description,callback:function(e){t.$set(t.form,"description",e)},expression:"form.description"}})],1)]),e("div",{staticClass:"row"},[e("el-button",{attrs:{type:"primary"},on:{click:t.handleCreate}},[t._v("创建店铺")])],1)])])},e.Yp=[]},5129:function(t,e,a){"use strict";var s=a(3999)["default"];Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=void 0;var i=s(a(5471)),o=s(a(5353));i.default.use(o.default);e["default"]=new o.default.Store({state:{},getters:{},mutations:{},actions:{},modules:{}})},5355:function(t,e,a){"use strict";a.r(e),a.d(e,{__esModule:function(){return i.B},default:function(){return l}});var s=a(8466),i=a(1029),o=i.A,r=a(845),n=(0,r.A)(o,s.XX,s.Yp,!1,null,"69d09b20",null),l=n.exports},5508:function(t,e){"use strict";e.Yp=e.XX=void 0;e.XX=function(){var t=this,e=t._self._c;return e("div",{staticClass:"content-container"},[e("router-view")],1)},e.Yp=[]},5638:function(t,e,a){"use strict";a.r(e),a.d(e,{__esModule:function(){return i.B},default:function(){return l}});var s=a(9628),i=a(7370),o=i.A,r=a(845),n=(0,r.A)(o,s.XX,s.Yp,!1,null,"c3bf12ce",null),l=n.exports},5656:function(t,e){"use strict";e.Yp=e.XX=void 0;e.XX=function(){var t=this,e=t._self._c;return e("div",{staticClass:"orders-page"},[e("h2",{staticClass:"title"},[t._v("订单列表")]),e("el-tabs",{on:{"tab-click":t.handleTabClick},model:{value:t.active,callback:function(e){t.active=e},expression:"active"}},[e("el-tab-pane",{attrs:{label:"订单进行中",name:"7"}},[e("order-list",{attrs:{items:t.orders[7],"show-checkout":!0,"on-cancel":t.handleCancelOrder,"empty-text":"暂无进行中的订单"}})],1),e("el-tab-pane",{attrs:{label:"订单已完成",name:"8"}},[e("order-list",{attrs:{items:t.orders[8],"show-checkout":!1,"empty-text":"暂无已完成的订单"}})],1)],1)],1)},e.Yp=[]},5705:function(t,e,a){"use strict";var s=a(3999)["default"];Object.defineProperty(e,"__esModule",{value:!0}),e.addShopConfig=h,e.closeShop=d,e.deleteShop=l,e.deleteShopConfig=m,e.getAddShop=o,e.getChainAndCoin=g,e.getMyShop=r,e.getShopConfig=u,e.queryShop=c,e.updateShop=n,e.updateShopConfig=p;var i=s(a(5720));function o(t){return(0,i.default)({url:"/lease/shop/addShop",method:"post",data:t})}function r(t){return(0,i.default)({url:"/lease/shop/getShopByUserEmail",method:"get",params:t})}function n(t){return(0,i.default)({url:"/lease/shop/updateShop",method:"post",data:t})}function l(t){return(0,i.default)({url:"/lease/shop/deleteShop",method:"post",data:{id:t}})}function c(t){return(0,i.default)({url:"/lease/shop/getShopById",method:"post",data:t})}function d(t){return(0,i.default)({url:"/lease/shop/closeShop",method:"post",data:{id:t}})}function u(t){return(0,i.default)({url:"/lease/shop/getShopConfig",method:"post",data:{id:t}})}function h(t){return(0,i.default)({url:"/lease/shop/addShopConfig",method:"post",data:t})}function p(t){return(0,i.default)({url:"/lease/shop/updateShopConfig",method:"post",data:t})}function m(t){return(0,i.default)({url:"/lease/shop/deleteShopConfig",method:"post",data:t})}function g(t){return(0,i.default)({url:"/lease/shop/getChainAndCoin",method:"post",data:t})}},5720:function(t,e,a){"use strict";var s=a(3999)["default"];Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=void 0,a(4114),a(8111),a(7588);var i=s(a(6425)),o=s(a(9526)),r=a(1052),n=s(a(4994)),l=s(a(7465));const c=new Map;function d(t){const{url:e,method:a,params:s,data:i}=t;return[e,a,JSON.stringify(s),JSON.stringify(i)].join("&")}const u=i.default.create({baseURL:"http://10.168.2.220:8888",timeout:1e4}),h=6e4;let p=new Map,m={online:0,offline:0},g=!1;window.addEventListener("online",()=>{const t=Date.now();if(g)return void console.log("[网络] 网络恢复处理已在进行中,忽略重复事件");if(g=!0,t-m.online>3e4){m.online=t;try{window.vm&&window.vm.$message&&(window.vm.$message({message:window.vm.$i18n.t("home.networkReconnected")||"网络已重新连接,正在恢复数据...",type:"success",duration:5e3,showClose:!0}),console.log("[网络] 显示网络恢复提示, 时间:",(new Date).toLocaleTimeString()))}catch(a){console.error("[网络] 显示网络恢复提示失败:",a)}}else console.log("[网络] 抑制重复的网络恢复提示, 间隔过短:",t-m.online+"ms");const e=[];p.forEach(async(a,s)=>{if(t-a.timestamp<=h)try{const t=await u(a.config);e.push(t),a.callback&&"function"===typeof a.callback&&a.callback(t),window.vm&&(a.config.url.includes("getPoolPower")&&t&&t.data?window.dispatchEvent(new CustomEvent("chart-data-updated",{detail:{type:"poolPower",data:t.data}})):a.config.url.includes("getNetPower")&&t&&t.data?window.dispatchEvent(new CustomEvent("chart-data-updated",{detail:{type:"netPower",data:t.data}})):a.config.url.includes("getBlockInfo")&&t&&t.rows&&window.dispatchEvent(new CustomEvent("chart-data-updated",{detail:{type:"blockInfo",data:t.rows}}))),p.delete(s)}catch(i){console.error("重试请求失败:",i),p.delete(s)}else p.delete(s)}),Promise.allSettled(e).then(()=>{if(n.default&&n.default.resetAllLoadingStates(),window.vm){const t=["minerChartLoading","reportBlockLoading","apiPageLoading","MiningLoading","miniLoading","bthLoading","editLoading"];t.forEach(t=>{"undefined"!==typeof window.vm[t]&&(window.vm[t]=!1)}),Object.keys(window.vm).forEach(t=>{t.endsWith("Loading")&&(window.vm[t]=!1)})}window.dispatchEvent(new CustomEvent("network-retry-complete")),setTimeout(()=>{g=!1},5e3)})}),window.addEventListener("offline",()=>{window.vm&&window.vm.$message&&l.default.canShowError("networkOffline")&&window.vm.$message({message:window.vm.$i18n.t("home.networkOffline")||"网络连接已断开,系统将在恢复连接后自动重试",type:"error",duration:5e3,showClose:!0})}),u.defaults.retry=2,u.defaults.retryDelay=2e3,u.defaults.shouldRetry=t=>"Network Error"===t.message||t.message.includes("timeout"),localStorage.setItem("superReportError","");let f=localStorage.getItem("superReportError");window.addEventListener("setItem",()=>{f=localStorage.getItem("superReportError")}),u.interceptors.request.use(t=>{let e;f="",localStorage.setItem("superReportError","");try{e=JSON.parse(localStorage.getItem("token"))}catch(o){console.log(o)}if(e&&(t.headers["Authorization"]=e),console.log(e,"if就覅飞机飞机"),"get"==t.method&&t.data&&(t.params=t.data),"get"===t.method&&t.params){let e=t.url+"?";for(const s of Object.keys(t.params)){const i=t.params[s];var a=encodeURIComponent(s)+"=";if(null!==i&&"undefined"!==typeof i)if("object"===typeof i){for(const t of Object.keys(i))if(null!==i[t]&&"undefined"!==typeof i[t]){let a=s+"["+t+"]",o=encodeURIComponent(a)+"=";e+=o+encodeURIComponent(i[t])+"&"}}else e+=a+encodeURIComponent(i)+"&"}e=e.slice(0,-1),t.params={},t.url=e}const s=d(t);if(c.has(s)){const t=c.get(s);t(),c.delete(s)}return t.cancelToken=new i.default.CancelToken(t=>{c.set(s,t)}),t},t=>{Promise.reject(t)}),u.interceptors.response.use(t=>{const e=d(t.config);c.delete(e);const a=t.data.code||200,s=o.default[a]||t.data.msg||o.default["default"];return 421===a?(localStorage.setItem("cs_disconnect_all",Date.now().toString()),localStorage.removeItem("token"),f=localStorage.getItem("superReportError"),f||(f=421,localStorage.setItem("superReportError",f),r.MessageBox.confirm(window.vm.$i18n.t("user.loginExpired"),window.vm.$i18n.t("user.overduePrompt"),{distinguishCancelAndClose:!0,confirmButtonText:window.vm.$i18n.t("user.login"),cancelButtonText:window.vm.$i18n.t("user.Home"),closeOnClickModal:!1,showClose:!1,type:"warning"}).then(()=>{window.vm.$router.push(`/${window.vm.$i18n.locale}/login`),localStorage.removeItem("token")}).catch(()=>{window.vm.$router.push(`/${window.vm.$i18n.locale}/`),localStorage.removeItem("token")})),Promise.reject("登录状态已过期")):a>=500&&!f?(f=500,localStorage.setItem("superReportError",f),void(0,r.Message)({dangerouslyUseHTMLString:!0,message:s,type:"error",showClose:!0})):200!==a?(r.Notification.error({title:s}),Promise.reject("error")):t.data},t=>{if("ERR_CANCELED"===t.code||t.message&&t.message.includes("canceled")||t.message?.includes("Request aborted"))return new Promise(()=>{});if(t.config){const e=d(t.config);c.delete(e)}let{message:e}=t;if("Network Error"==e||e.includes("timeout"))if(navigator.onLine){if(t.config.__retryCount=t.config.__retryCount||0,t.config.__retryCount{setTimeout(()=>{e(u(t.config))},u.defaults.retryDelay)});console.log(`[请求失败] ${t.config.url} - 已达到最大重试次数`)}else{const e=JSON.stringify({url:t.config.url,method:t.config.method,params:t.config.params,data:t.config.data});let a=null;t.config.url.includes("getPoolPower")?a=t=>{window.vm&&(window.vm.minerChartLoading=!1)}:t.config.url.includes("getBlockInfo")&&(a=t=>{window.vm&&(window.vm.reportBlockLoading=!1)}),p.has(e)||(p.set(e,{config:t.config,timestamp:Date.now(),retryCount:0,callback:a}),console.log("请求已加入断网重连队列:",t.config.url))}return f||(f="error",localStorage.setItem("superReportError",f),l.default.canShowError(e)?"Network Error"==e?(0,r.Message)({message:window.vm.$i18n.t("home.NetworkError"),type:"error",duration:4e3,showClose:!0}):e.includes("timeout")?(0,r.Message)({message:window.vm.$i18n.t("home.requestTimeout"),type:"error",duration:5e3,showClose:!0}):e.includes("Request failed with status code")?(0,r.Message)({message:"系统接口"+e.substr(e.length-3)+"异常",type:"error",duration:5e3,showClose:!0}):(0,r.Message)({message:e,type:"error",duration:5e3,showClose:!0}):console.log("[错误提示] 已抑制重复错误:",e)),Promise.reject(t)});e["default"]=u},5787:function(t,e,a){"use strict";Object.defineProperty(e,"B",{value:!0}),e.A=void 0,a(8111),a(2489);var s=a(6299);e.A={name:"RechargeRecord",data(){return{activeTab:"pending",detailDialogVisible:!1,selectedItem:null,rechargeRecords:[{address:"TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",amount:100,fromSymbol:"USDT",fromChain:"tron",status:2,createTime:"2024-01-15 14:30:25",id:1,txHash:"TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE"},{address:"TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",amount:100,fromSymbol:"USDT",fromChain:"tron",status:2,createTime:"2024-01-15 14:30:25",id:2,txHash:"TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE"},{address:"TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",amount:100,fromSymbol:"USDT",fromChain:"tron",status:2,createTime:"2024-01-15 14:30:25",id:3,txHash:"TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE"}],pagination:{pageNum:1,pageSize:1,total:0,totalPage:0},loading:!1,statusFilter:"",total:0,pageSizes:[10,20,50],currentPage:1}},computed:{pendingRecharges(){return this.rechargeRecords.filter(t=>2===t.status)},successRecharges(){return this.rechargeRecords.filter(t=>1===t.status)},failedRecharges(){return this.rechargeRecords.filter(t=>0===t.status)}},mounted(){this.activeTab="pending",this.statusFilter=2},methods:{async loadRechargeRecords(){this.loading=!0;try{const t={pageNum:this.pagination.pageNum,pageSize:this.pagination.pageSize};""!==this.statusFilter&&(t.status=this.statusFilter);const e=await(0,s.balanceRechargeList)(t);!e||0!==e.code&&200!==e.code||(this.rechargeRecords=e.rows||[],this.pagination.total=e.total||0,this.pagination.totalPage=e.totalPage||0,this.total=e.total||0,console.log("充值记录加载成功:",{records:this.rechargeRecords,pagination:this.pagination}))}catch(t){console.error("加载充值记录失败:",t)}finally{this.loading=!1}},handleTabClick(t){this.activeTab=t.name,"pending"===t.name?this.statusFilter=2:"success"===t.name?this.statusFilter=1:"failed"===t.name&&(this.statusFilter=0),this.pagination.pageNum=1,this.currentPage=1,this.pagination.pageSize=10,this.loadRechargeRecords()},showDetail(t){this.selectedItem=t,this.detailDialogVisible=!0},closeDetail(){this.detailDialogVisible=!1,this.selectedItem=null},getChainName(t){const e={tron:"Tron (TRC20)",ethereum:"Ethereum (ERC20)",bsc:"BSC (BEP20)",polygon:"Polygon (MATIC)"};return e[t]||t},getStatusType(t){const e={0:"danger",1:"success",2:"warning"};return e[t]||"info"},formatAddress(t){return t?t.length>20?`${t.slice(0,10)}...${t.slice(-10)}`:t:""},formatTime(t){if(!t)return"";const e=new Date(t),a=new Date,s=a-e;return s<6e4?"刚刚":s<36e5?`${Math.floor(s/6e4)}分钟前`:s<864e5?`${Math.floor(s/36e5)}小时前`:e.toLocaleDateString()},formatFullTime(t){return t?new Date(t).toLocaleString("zh-CN"):""},copyAddress(t){navigator.clipboard?navigator.clipboard.writeText(t).then(()=>{this.$message({message:"地址已复制到剪贴板",type:"success",showClose:!0})}).catch(()=>{this.fallbackCopyAddress(t)}):this.fallbackCopyAddress(t)},fallbackCopyAddress(t){const e=document.createElement("textarea");e.value=t,document.body.appendChild(e),e.select();try{document.execCommand("copy"),this.$message({message:"地址已复制到剪贴板",type:"success",showClose:!0})}catch(a){console.log("复制失败,请手动复制")}document.body.removeChild(e)},refreshData(){this.loadRechargeRecords()},viewOnExplorer(t,e){const a={tron:`https://tronscan.org/#/transaction/${t}`,ethereum:`https://etherscan.io/tx/${t}`,bsc:`https://bscscan.com/tx/${t}`,polygon:`https://polygonscan.com/tx/${t}`},s=a[e];s?window.open(s,"_blank"):this.$message.error("不支持的区块链网络")},getStatusText(t){const e={0:"充值失败",1:"充值成功",2:"充值中"};return e[t]||"未知状态"},handleSizeChange(t){console.log(`每页 ${t} 条`),this.pagination.pageSize=t,this.pagination.pageNum=1,this.currentPage=1,this.loadRechargeRecords()},handleCurrentChange(t){console.log(`当前页: ${t}`),this.pagination.pageNum=t,this.loadRechargeRecords()}}}},5815:function(t,e,a){"use strict";a.r(e),a.d(e,{__esModule:function(){return i.B},default:function(){return l}});var s=a(6975),i=a(7896),o=i.A,r=a(845),n=(0,r.A)(o,s.XX,s.Yp,!1,null,"5597a452",null),l=n.exports},5844:function(t,e,a){"use strict";var s=a(3999)["default"];Object.defineProperty(e,"__esModule",{value:!0}),e.addCart=o,e.deleteBatchGoods=n,e.deleteBatchGoodsForIsDelete=l,e.getGoodsList=r;var i=s(a(5720));function o(t){return(0,i.default)({url:"/lease/shopping/cart/addGoods",method:"post",data:t})}function r(t){return(0,i.default)({url:"/lease/shopping/cart/getGoodsList",method:"post",data:t})}function n(t){return(0,i.default)({url:"/lease/shopping/cart/deleteBatchGoods",method:"post",data:t})}function l(t){return(0,i.default)({url:"/lease/shopping/cart/deleteBatchGoodsForIsDelete",method:"post",data:t})}},5912:function(t,e){"use strict";e.Yp=e.XX=void 0;e.XX=function(){var t=this,e=t._self._c;return e("div",{staticClass:"panel"},[e("h2",{staticClass:"panel-title"},[t._v("我的店铺")]),e("div",{staticClass:"panel-body"},[e("el-card",{staticClass:"guide-card",staticStyle:{"margin-bottom":"16px"},attrs:{shadow:"never"}},[e("div",{staticClass:"guide-header",attrs:{slot:"header"},slot:"header"},[t._v("店铺层级说明")]),e("div",{staticClass:"guide-content"},[e("p",{staticClass:"hierarchy"},[t._v("层级结构:店铺 → 商品 → 出售机器")]),e("ol",{staticClass:"guide-steps"},[e("li",[e("b",[t._v("店铺(唯一)")]),t._v(":每个用户在平台"),e("strong",[t._v("仅能创建一个店铺")]),t._v("。创建成功后, 请在本页点击 "),e("b",[t._v("钱包绑定")]),t._v(",配置自己的收款地址(支持不同链与币种)。 ")]),e("li",[e("b",[t._v("商品")]),t._v(":完成钱包绑定后,即可在“我的店铺”页面 "),e("b",[t._v("创建商品")]),t._v("。 商品可按 "),e("b",[t._v("币种")]),t._v(" 进行分类管理,创建的商品会在商城对买家展示。 商品可理解为“不同算法、币种的机器集合分类”。 ")]),e("li",[e("b",[t._v("出售机器")]),t._v(":创建商品后,请进入 "),e("b",[t._v("商品列表")]),t._v(" 为该商品 "),e("b",[t._v("添加出售机器明细")]),t._v("。 必须添加出售机器,否则买家无法下单。买家点击某个商品后,会看到该商品下的机器明细并进行选购。 ")])]),e("div",{staticClass:"guide-note"},[t._v("提示:建议先创建店铺 → 完成钱包绑定 → 创建商品 → 添加出售机器的顺序,避免漏配导致无法收款或无法下单。")])])]),t.loaded&&t.hasShop?e("el-card",{staticClass:"shop-card",attrs:{shadow:"hover"}},[e("div",{staticClass:"shop-row"},[e("div",{staticClass:"shop-cover"},[e("img",{attrs:{src:t.shop.image||t.defaultCover,alt:"店铺封面"}})]),e("div",{staticClass:"shop-info"},[e("div",{staticClass:"shop-title"},[e("span",{staticClass:"name"},[t._v(t._s(t.shop.name||"未命名店铺"))]),e("el-tag",{attrs:{size:"small",type:t.shopStateTagType}},[t._v(" "+t._s(t.shopStateText)+" ")])],1),e("div",{staticClass:"desc"},[t._v(t._s(t.shop.description||"这家店还没有描述~"))]),e("div",{staticClass:"actions"},[e("el-button",{attrs:{size:"small",type:"primary"},on:{click:t.handleOpenEdit}},[t._v("修改店铺")]),e("el-button",{attrs:{size:"small",type:"warning"},on:{click:t.handleToggleShop}},[t._v(" "+t._s(2===t.shop.state?"开启店铺":"关闭店铺")+" ")]),e("el-button",{attrs:{size:"small",type:"danger"},on:{click:t.handleDelete}},[t._v("删除店铺")]),e("el-button",{attrs:{size:"small",type:"success"},on:{click:t.handleAddProduct}},[t._v("新增商品")]),e("el-button",{attrs:{size:"small",type:"success"},on:{click:t.handleWalletBind}},[t._v("钱包绑定")])],1)])])]):t._e(),t.loaded&&t.hasShop?e("el-card",{staticClass:"shop-config-card",staticStyle:{"margin-top":"16px"},attrs:{shadow:"never"}},[e("div",{staticClass:"clearfix",attrs:{slot:"header"},slot:"header"},[e("span",[t._v("已绑定钱包")])]),e("el-table",{staticStyle:{width:"100%"},attrs:{data:t.shopConfigs,border:""}},[e("el-table-column",{attrs:{prop:"chain",label:"链",width:"140"}}),e("el-table-column",{attrs:{label:"支付币种"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("div",{staticClass:"coin-list"},[Array.isArray(a.row.children)&&a.row.children.length?t._l(a.row.children,function(a,s){return e("el-tooltip",{key:s,attrs:{content:String(a&&a.payCoin?a.payCoin:"").toUpperCase(),placement:"top"}},[a&&a.image?e("img",{staticClass:"coin-img",attrs:{src:a.image,alt:(a.payCoin||"").toUpperCase()}}):t._e()])}):[t._v(" "+t._s(String(a.row.payCoin||"").toUpperCase())+" ")]],2)]}}],null,!1,569036476)}),e("el-table-column",{attrs:{prop:"payAddress",label:"收款钱包地址","show-overflow-tooltip":""}}),e("el-table-column",{attrs:{label:"操作",width:"180",fixed:"right"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("el-button",{attrs:{type:"text"},on:{click:function(e){return t.handleEditConfig(a.row)}}},[t._v("修改")]),e("el-divider",{attrs:{direction:"vertical"}}),e("el-button",{staticStyle:{color:"#e74c3c"},attrs:{type:"text"},on:{click:function(e){return t.handleDeleteConfig(a.row)}}},[t._v("删除")])]}}],null,!1,2146652355)})],1)],1):t.loaded&&!t.hasShop?e("div",{staticClass:"no-shop"},[e("el-empty",{attrs:{description:"暂无店铺"}},[e("el-button",{attrs:{type:"primary"},on:{click:t.handleGoNew}},[t._v("新建店铺")])],1)],1):e("el-empty",{attrs:{description:"正在加载店铺信息..."}}),e("el-dialog",{attrs:{title:"修改店铺",visible:t.visibleEdit,width:"520px"},on:{"update:visible":function(e){t.visibleEdit=e}}},[e("div",{staticClass:"row"},[e("label",{staticClass:"label"},[t._v("店铺名称")]),e("el-input",{attrs:{placeholder:"请输入店铺名称",maxlength:30,"show-word-limit":""},model:{value:t.editForm.name,callback:function(e){t.$set(t.editForm,"name",e)},expression:"editForm.name"}})],1),e("div",{staticClass:"row"},[e("label",{staticClass:"label"},[t._v("店铺描述")]),e("el-input",{attrs:{type:"textarea",rows:3,placeholder:"请输入描述",maxlength:300,"show-word-limit":""},model:{value:t.editForm.description,callback:function(e){t.$set(t.editForm,"description",e)},expression:"editForm.description"}})],1),e("span",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[e("el-button",{on:{click:function(e){t.visibleEdit=!1}}},[t._v("取消")]),e("el-button",{attrs:{type:"primary"},on:{click:t.submitEdit}},[t._v("保存")])],1)]),e("el-dialog",{attrs:{title:"修改配置",visible:t.visibleConfigEdit,width:"560px"},on:{"update:visible":function(e){t.visibleConfigEdit=e}}},[e("div",{staticClass:"row"},[e("label",{staticClass:"label"},[t._v("支付链")]),e("el-input",{attrs:{placeholder:"-",disabled:""},model:{value:t.configForm.chainLabel,callback:function(e){t.$set(t.configForm,"chainLabel",e)},expression:"configForm.chainLabel"}})],1),e("div",{staticClass:"row"},[e("label",{staticClass:"label"},[t._v("支付币种")]),e("el-select",{staticClass:"input",attrs:{size:"middle",multiple:"","collapse-tags":"",filterable:"",placeholder:"请选择币种"},model:{value:t.configForm.payCoins,callback:function(e){t.$set(t.configForm,"payCoins",e)},expression:"configForm.payCoins"}},t._l(t.editCoinOptions,function(t){return e("el-option",{key:t.value,attrs:{label:t.label,value:t.value}})}),1)],1),e("div",{staticClass:"row"},[e("label",{staticClass:"label"},[t._v("已选择币种")]),e("div",{staticClass:"selected-coin-list"},[t._l(t.selectedCoinLabels,function(a){return e("el-tag",{key:a,attrs:{type:"warning",effect:"light",closable:""},on:{close:function(e){return t.removeSelectedCoin(a)}}},[t._v(t._s(a))])}),t.selectedCoinLabels.length?t._e():e("span",{staticStyle:{color:"#c0c4cc"}},[t._v("未选择")])],2)]),e("div",{staticClass:"row"},[e("label",{staticClass:"label"},[t._v("钱包地址")]),e("el-input",{attrs:{placeholder:"请输入钱包地址"},model:{value:t.configForm.payAddress,callback:function(e){t.$set(t.configForm,"payAddress",e)},expression:"configForm.payAddress"}})],1),e("span",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[e("el-button",{on:{click:function(e){t.visibleConfigEdit=!1}}},[t._v("取消")]),e("el-button",{attrs:{type:"primary"},on:{click:t.submitConfigEdit}},[t._v("确认修改")])],1)])],1)])},e.Yp=[]},5952:function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.updateQuantity=e.removeFromCart=e.readCart=e["default"]=e.computeSummary=e.clearCart=e.addToCart=void 0,a(8111),a(2489),a(1701),a(8237);const s="power_leasing_cart_v1",i=()=>{try{const t=window.localStorage.getItem(s);if(!t)return[];const e=JSON.parse(t);return Array.isArray(e)?e.filter(Boolean):[]}catch(t){return console.error("[cartManager] readCart error:",t),[]}};e.readCart=i;const o=t=>{try{window.localStorage.setItem(s,JSON.stringify(t));try{const e=t.reduce((t,e)=>t+Number(e.quantity||0),0);window.dispatchEvent(new CustomEvent("cart-updated",{detail:{count:e}}))}catch(e){}}catch(a){console.error("[cartManager] writeCart error:",a)}},r=t=>{if(!t||!t.id)return i();const e=i(),a=e.findIndex(e=>e.id===t.id);if(a>=0){const s=[...e];return s[a]={...s[a],quantity:Math.max(1,Number(s[a].quantity||0)+Number(t.quantity||1))},o(s),s}const s=[...e,{...t,quantity:Math.max(1,Number(t.quantity||1))}];return o(s),s};e.addToCart=r;const n=(t,e)=>{const a=i(),s=a.map(a=>a.id===t?{...a,quantity:Math.max(1,Number(e)||1)}:a);return o(s),s};e.updateQuantity=n;const l=t=>{const e=i(),a=e.filter(e=>e.id!==t);return o(a),a};e.removeFromCart=l;const c=()=>(o([]),[]);e.clearCart=c;const d=()=>{const t=i(),e=t.reduce((t,e)=>t+Number(e.quantity||0),0),a=t.reduce((t,e)=>t+Number(e.quantity||0)*Number(e.price||0),0);return{totalQuantity:e,totalPrice:a}};e.computeSummary=d;e["default"]={readCart:i,addToCart:r,updateQuantity:n,removeFromCart:l,clearCart:c,computeSummary:d}},6037:function(t,e){"use strict";e.Yp=e.XX=void 0;e.XX=function(){var t=this,e=t._self._c;return e("div",{staticClass:"receipt-page"},[e("div",{staticClass:"card",attrs:{"aria-label":"收款记录",tabindex:"0"}},[t._m(0),t.loading?e("div",{staticClass:"loading"},[e("i",{staticClass:"el-icon-loading",attrs:{"aria-label":"加载中",role:"img"}}),t._v(" 加载中... ")]):e("div",[e("el-table",{ref:"receiptTable",staticStyle:{width:"100%"},attrs:{data:t.rows,border:"",stripe:"",size:"small","row-key":t.getRowKey,"expand-row-keys":t.expandedRowKeys,"row-class-name":t.getRowClassName,"header-cell-style":{textAlign:"left"},"cell-style":{textAlign:"left"}},on:{"row-click":t.handleRowClick,"expand-change":t.handleExpandChange}},[e("el-table-column",{attrs:{type:"expand",width:"46"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("div",{staticClass:"detail-panel"},[e("div",{staticClass:"detail-grid"},[e("div",{staticClass:"detail-item"},[e("span",{staticClass:"detail-label"},[t._v("订单号")]),e("span",{staticClass:"detail-value mono"},[t._v(t._s(a.row.orderId||"-"))])]),e("div",{staticClass:"detail-item"},[e("span",{staticClass:"detail-label"},[t._v("付款链")]),e("span",{staticClass:"detail-value"},[e("span",{staticClass:"badge"},[t._v(t._s(t.formatChain(a.row.fromChain)||"-"))])])]),e("div",{staticClass:"detail-item"},[e("span",{staticClass:"detail-label"},[t._v("付款币种")]),e("span",{staticClass:"detail-value"},[e("span",{staticClass:"badge badge-blue"},[t._v(t._s(String(a.row.fromSymbol||a.row.coin||"").toUpperCase()))])])]),e("div",{staticClass:"detail-item detail-item-full"},[e("span",{staticClass:"detail-label"},[t._v("付款地址")]),e("span",{staticClass:"detail-value address"},[e("span",{staticClass:"mono-ellipsis",attrs:{title:a.row.fromAddress}},[t._v(t._s(a.row.fromAddress||"-"))]),a.row.fromAddress?e("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(e){return e.stopPropagation(),t.copy(a.row.fromAddress)}}},[t._v("复制")]):t._e()],1)])])])]}}])}),e("el-table-column",{attrs:{label:"支付时间","min-width":"160"},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(t._s(t.formatFullTime(e.row.createTime)))]}}])}),e("el-table-column",{attrs:{label:"收款金额(USDT)","min-width":"160",align:"right"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("span",{staticClass:"amount-green"},[t.formatAmount(a.row.realAmount,a.row.coin||a.row.toSymbol||"USDT").truncated?e("el-tooltip",{attrs:{content:`+${t.formatAmount(a.row.realAmount,a.row.coin||a.row.toSymbol||"USDT").full}`,placement:"top"}},[e("span",[t._v(" +"+t._s(t.formatAmount(a.row.realAmount,a.row.coin||a.row.toSymbol||"USDT").text)+" "),e("i",{staticClass:"el-icon-more amount-more"})])]):e("span",[t._v(" +"+t._s(t.formatAmount(a.row.realAmount,a.row.coin||a.row.toSymbol||"USDT").text)+" ")])],1)]}}])}),e("el-table-column",{attrs:{label:"收款链","min-width":"120"},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(t._s(t.formatChain(e.row.toChain)))]}}])}),e("el-table-column",{attrs:{label:"收款币种","min-width":"100"},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(t._s(String(e.row.coin||"").toUpperCase()))]}}])}),e("el-table-column",{attrs:{label:"收款地址","min-width":"260"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("span",{staticClass:"mono-ellipsis",attrs:{title:a.row.toAddress}},[t._v(t._s(a.row.toAddress))]),e("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(e){return e.stopPropagation(),t.copy(a.row.toAddress)}}},[t._v("复制")])]}}])}),e("el-table-column",{attrs:{label:"交易HASH","min-width":"260"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("span",{staticClass:"mono-ellipsis",attrs:{title:a.row.txHash}},[t._v(t._s(a.row.txHash))]),a.row.txHash?e("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(e){return e.stopPropagation(),t.copy(a.row.txHash)}}},[t._v("复制")]):t._e()]}}])}),e("el-table-column",{attrs:{label:"支付状态","min-width":"120"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("el-tag",{attrs:{type:t.getStatusType(a.row.status),size:"small"}},[t._v(t._s(t.getStatusText(a.row.status)))])]}}])}),e("el-table-column",{attrs:{label:"状态更新时间","min-width":"160"},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(t._s(t.formatFullTime(e.row.updateTime)))]}}])})],1),t.rows.length?t._e():e("div",{staticClass:"empty"},[e("div",{staticClass:"empty-icon"},[t._v("💳")]),e("div",{staticClass:"empty-text"},[t._v("暂无收款记录")])]),e("div",{staticClass:"pagination"},[e("el-pagination",{attrs:{background:"",layout:"prev, pager, next, jumper","current-page":t.page,"page-size":t.pageSize,total:t.total},on:{"update:currentPage":function(e){t.page=e},"update:current-page":function(e){t.page=e},"current-change":t.fetchList}})],1)],1)])])},e.Yp=[function(){var t=this,e=t._self._c;return e("div",{staticClass:"card-header"},[e("h3",{staticClass:"card-title"},[t._v("收款记录")])])}]},6067:function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.mainNavigation=e.getPageTitle=e.getPageDescription=e.getBreadcrumb=e["default"]=e.checkRoutePermission=e.breadcrumbConfig=void 0,a(8111),a(3579);const s=e.mainNavigation=[{path:"/productList",name:"商城",icon:"🛍️",description:"浏览所有商品"},{path:"/cart",name:"购物车",icon:"🛒",description:"管理购物车商品"},{path:"/account",name:"个人中心",icon:"👤",description:"管理个人资料和店铺"}],i=e.breadcrumbConfig={"/productList":["首页","商品列表"],"/product":["首页","商品列表","商品详情"],"/cart":["首页","购物车"],"/checkout":["首页","购物车","订单结算"],"/account":["首页","个人中心"],"/account/wallet":["首页","个人中心","我的钱包"],"/account/shop-new":["首页","个人中心","新增店铺"],"/account/shop-config":["首页","个人中心","店铺配置"],"/account/shops":["首页","个人中心","我的店铺"],"/account/product-new":["首页","个人中心","新增商品"],"/account/products":["首页","个人中心","商品列表"]},o=t=>t.startsWith("/product/")?i["/product"]:i[t]||["首页"];e.getBreadcrumb=o;const r=(t,e=[])=>{if(!t.meta||!t.meta.allAuthority)return!0;const a=t.meta.allAuthority;return!!a.includes("all")||a.some(t=>e.includes(t))};e.checkRoutePermission=r;const n=t=>t.meta&&t.meta.title?`${t.meta.title} - Power Leasing`:"Power Leasing - 电商系统";e.getPageTitle=n;const l=t=>t.meta&&t.meta.description?t.meta.description:"Power Leasing 电商系统 - 专业的电力设备租赁平台";e.getPageDescription=l;e["default"]={mainNavigation:s,breadcrumbConfig:i,getBreadcrumb:o,checkRoutePermission:r,getPageTitle:n,getPageDescription:l}},6163:function(t,e,a){"use strict";Object.defineProperty(e,"B",{value:!0}),e.A=void 0,a(4114),a(8111),a(3579);var s=a(9662);e.A={name:"AccountProducts",data(){return{loading:!1,searchKeyword:"",tableData:[],pagination:{pageNum:1,pageSize:10,total:0},coinOptions:[],editDialog:{visible:!1,saving:!1,form:null},total:0,userEmail:""}},created(){this.initOptions(),this.fetchTableData()},methods:{formatPayType(t){try{const e=(t&&t.chain?String(t.chain):"").toUpperCase(),a=(t&&t.coin?String(t.coin):"").toUpperCase();return e&&a?`${e}-${a}`:e||a||""}catch(e){return""}},initOptions(){try{const{coinList:t}=a(9252);this.coinOptions=Array.isArray(t)?t:[]}catch(t){this.coinOptions=[]}},async fetchMachineInfo(t){const e=await(0,s.getMachineInfo)(t);!e||0!==e.code&&200!==e.code||(this.editDialog.form=e.data,console.log(e.data,"res.data"))},async fetchTableData(){this.loading=!0;try{const e=(this.searchKeyword||"").trim();let a,i;if(e){const t=e.toLowerCase(),s=(this.coinOptions||[]).some(e=>e.value&&String(e.value).toLowerCase()===t||e.label&&String(e.label).toLowerCase()===t);s?a=e:i=e}try{this.userEmail=JSON.parse(localStorage.getItem("leasEmail"))}catch(t){console.log(t)}if(!this.userEmail)return void this.$alert("登录信息异常,请重新返回 m2poll 矿池进入该系统","提示",{confirmButtonText:"确认",center:!0,closeOnClickModal:!1,closeOnPressEscape:!1,showClose:!1,callback:()=>{window.location.href="https://m2pool.com"}});const o={pageNum:this.pagination.pageNum,pageSize:this.pagination.pageSize,coin:a||void 0,algorithm:i||void 0,userEmail:this.userEmail},r=await(0,s.getProductList)(o),n=r?.data?.records||r?.data?.list||r?.rows||r?.list||r?.data||[];this.tableData=Array.isArray(n)?n:[],this.total=r.total,console.log(this.tableData)}catch(t){console.error("获取商品列表失败",t),console.log("获取商品列表失败")}finally{this.loading=!1}},handleSearch(){this.pagination.pageNum=1,this.fetchTableData()},handleReset(){this.searchKeyword="",this.pagination.pageNum=1,this.pagination.pageSize=10,this.fetchTableData()},handleView(t){t&&t.id?this.$router.push(`/account/product-detail/${t.id}`):this.$message({message:"缺少商品ID",type:"warning",showClose:!0})},handleEdit(t){this.editDialog.form={...t},this.editDialog.visible=!0},async handleSaveEdit(){if(this.editDialog.form){this.editDialog.saving=!0;try{const t=t=>"string"===typeof t&&t.trim().length>0,e=String(this.editDialog.form.name||""),a=String(this.editDialog.form.description||"");if(!t(e))return this.$message.warning("名称不能为空或全是空格"),void(this.editDialog.saving=!1);if(!t(a))return this.$message.warning("描述不能为空或全是空格"),void(this.editDialog.saving=!1);this.editDialog.form.name=e.trim(),this.editDialog.form.description=a.trim();const i={id:this.editDialog.form.id,shopId:this.editDialog.form.shopId,name:this.editDialog.form.name,image:this.editDialog.form.image,coin:this.editDialog.form.coin,description:this.editDialog.form.description,state:this.editDialog.form.state},o=await(0,s.updateProduct)(i);!o||0!==o.code&&200!==o.code?this.$message({message:o?.msg||"保存失败",type:"error",showClose:!0}):(this.$message({message:"保存成功",type:"success",showClose:!0}),this.editDialog.visible=!1,this.fetchTableData())}catch(t){console.error("保存商品失败",t),console.log("保存失败")}finally{this.editDialog.saving=!1}}},handleDelete(t){t&&t.id&&this.$confirm("确认删除该商品吗?删除后不可恢复","提示",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"}).then(async()=>{try{const e=await(0,s.deleteProduct)(t.id);!e||0!==e.code&&200!==e.code||(this.$message.success("删除成功"),1===this.tableData.length&&this.pagination.pageNum>1&&(this.pagination.pageNum-=1),this.fetchTableData())}catch(e){console.error("删除商品失败",e),console.log("删除失败")}}).catch(()=>{})},handleSizeChange(t){this.pagination.pageSize=t,this.pagination.pageNum=1,this.fetchTableData()},handleCurrentChange(t){this.pagination.pageNum=t,this.fetchTableData()},handleClear(){this.searchKeyword="",this.pagination.pageNum=1,this.fetchTableData()},handleAddMachine(t){if(!t||!t.id)return void this.$message.warning("缺少商品ID");let e="";try{const a=Array.isArray(t.payTypes)?t.payTypes:[];e=encodeURIComponent(JSON.stringify(a))}catch(a){e=""}this.$router.push({path:"/account/product-machine-add",query:{productId:t.id,coin:t.coin,name:t.name,payTypes:e}})}}}},6278:function(t,e,a){"use strict";t.exports=a.p+"img/commodity.0dddb787.png"},6299:function(t,e,a){"use strict";var s=a(3999)["default"];Object.defineProperty(e,"__esModule",{value:!0}),e.addWalletShopConfig=d,e.balanceRechargeList=n,e.balanceWithdrawList=l,e.bindWallet=p,e.getChainAndList=u,e.getProductListForShopWalletConfig=f,e.getRecentlyTransaction=g,e.getShopConfig=h,e.getWalletInfo=o,e.sellerReceiptList=c,e.transactionRecord=m,e.updateProductListForShopWalletConfig=y,e.withdrawBalance=r;var i=s(a(5720));function o(t){return(0,i.default)({url:"/lease/user/getWalletInfo",method:"post",data:t})}function r(t){return(0,i.default)({url:"/lease/user/withdrawBalance",method:"post",data:t})}function n(t){return(0,i.default)({url:"/lease/user/balanceRechargeList",method:"post",data:t})}function l(t){return(0,i.default)({url:"/lease/user/balanceWithdrawList",method:"post",data:t})}function c(t){return(0,i.default)({url:"/lease/user/balancePayList",method:"post",data:t})}function d(t){return(0,i.default)({url:"/lease/shop/addShopConfig",method:"post",data:t})}function u(t){return(0,i.default)({url:"/lease/shop/getChainAndList",method:"post",data:t})}function h(t){return(0,i.default)({url:"/lease/shop/getShopConfig",method:"post",data:t})}function p(t){return(0,i.default)({url:"/lease/user/bindWallet",method:"post",data:t})}function m(t){return(0,i.default)({url:"/lease/user/transactionRecord",method:"post",data:t})}function g(t){return(0,i.default)({url:"/lease/user/getRecentlyTransaction",method:"post",data:t})}function f(t){return(0,i.default)({url:"/lease/product/getProductListForShopWalletConfig",method:"post",data:t})}function y(t){return(0,i.default)({url:"/lease/product/updateProductListForShopWalletConfig",method:"post",data:t})}},6356:function(t,e){"use strict";e.Yp=e.XX=void 0;e.XX=function(){var t=this,e=t._self._c;return e("div",{staticClass:"product-machine-add"},[e("div",{staticClass:"header"},[e("el-button",{attrs:{type:"text"},on:{click:t.handleBack}},[t._v("返回")]),e("h2",{staticClass:"title"},[t._v("添加出售机器")])],1),e("el-alert",{staticClass:"notice-alert",attrs:{type:"warning","show-icon":"",closable:!1,title:"新增出售机器必须在 M2pool 有挖矿算力记录才能添加出租",description:"建议稳定在 M2pool 矿池挖矿 24 小时之后,再添加出售该机器"}}),e("el-card",{staticClass:"form-card",attrs:{shadow:"never"}},[e("el-form",{ref:"machineForm",attrs:{model:t.form,rules:t.rules,"label-width":"160px",size:"small"}},[e("el-form-item",{attrs:{label:"商品名称"}},[e("el-input",{staticStyle:{width:"50%"},attrs:{disabled:""},model:{value:t.form.productName,callback:function(e){t.$set(t.form,"productName",e)},expression:"form.productName"}})],1),e("el-form-item",{attrs:{label:"矿机型号"}},[e("el-input",{staticStyle:{width:"50%"},attrs:{placeholder:"示例:龍珠",maxlength:20},on:{input:t.handleTypeInput},model:{value:t.form.type,callback:function(e){t.$set(t.form,"type",e)},expression:"form.type"}})],1),e("el-form-item",{attrs:{label:"理论算力",prop:"theoryPower"}},[e("el-input",{staticStyle:{width:"50%"},attrs:{placeholder:"请输入单机理论算力",inputmode:"decimal"},on:{input:function(e){return t.handleNumeric("theoryPower")}},model:{value:t.form.theoryPower,callback:function(e){t.$set(t.form,"theoryPower",e)},expression:"form.theoryPower"}})],1),e("el-form-item",{attrs:{label:"算力单位",prop:"unit"}},[e("el-select",{attrs:{placeholder:"请选择算力单位"},model:{value:t.form.unit,callback:function(e){t.$set(t.form,"unit",e)},expression:"form.unit"}},[e("el-option",{attrs:{label:"KH/S",value:"KH/S"}}),e("el-option",{attrs:{label:"MH/S",value:"MH/S"}}),e("el-option",{attrs:{label:"GH/S",value:"GH/S"}}),e("el-option",{attrs:{label:"TH/S",value:"TH/S"}}),e("el-option",{attrs:{label:"PH/S",value:"PH/S"}})],1)],1),e("el-form-item",{attrs:{label:"最大租赁天数",prop:"maxLeaseDays"}},[e("el-input",{staticStyle:{width:"50%"},attrs:{placeholder:"1-365",inputmode:"numeric"},on:{input:function(e){return t.handleNumeric("maxLeaseDays")}},model:{value:t.form.maxLeaseDays,callback:function(e){t.$set(t.form,"maxLeaseDays",e)},expression:"form.maxLeaseDays"}},[e("template",{slot:"append"},[t._v("天")])],2)],1),e("el-form-item",{attrs:{label:"功耗",prop:"powerDissipation"}},[e("el-input",{staticStyle:{width:"50%"},attrs:{inputmode:"decimal"},on:{input:function(e){return t.handleNumeric("powerDissipation")}},model:{value:t.form.powerDissipation,callback:function(e){t.$set(t.form,"powerDissipation",e)},expression:"form.powerDissipation"}},[e("template",{slot:"append"},[t._v("kw/h")])],2)],1),e("el-form-item",{attrs:{label:"统一售价",prop:"cost"}},[e("span",{attrs:{slot:"label"},slot:"label"},[t._v(" 统一售价 "),e("el-tooltip",{attrs:{effect:"dark",placement:"top"}},[e("div",{attrs:{slot:"content"},slot:"content"},[t._v(" 卖家最终收款金额 = 机器售价 × 波动率"),e("br"),t._v(" 波动率规则:"),e("br"),t._v(" 1)0% - 5%(包含5%):波动率 = 1(按售价结算)"),e("br"),t._v(" 2)5%以上:波动率 = 实际算力 / 理论算力,且不会超过 1,即最终结算时不会超过机器售价 ")]),e("i",{staticClass:"el-icon-question label-help",attrs:{"aria-label":"帮助",tabindex:"0"}})])],1),t.payTypeDefs&&t.payTypeDefs.length?e("div",{staticClass:"cost-multi"},t._l(t.payTypeDefs,function(a){return e("div",{key:a.key,staticClass:"cost-item"},[e("el-input",{staticStyle:{width:"50%"},attrs:{placeholder:"请输入价格",inputmode:"decimal"},on:{input:e=>t.handleCostMapInput(a.key,e)},model:{value:t.form.costMap[a.key],callback:function(e){t.$set(t.form.costMap,a.key,e)},expression:"form.costMap[pt.key]"}},[e("template",{slot:"append"},[t._v(t._s(a.label))])],2)],1)}),0):e("el-input",{staticStyle:{width:"50%"},attrs:{placeholder:"请输入成本(USDT)",inputmode:"decimal"},on:{input:function(e){return t.handleNumeric("cost")}},model:{value:t.form.cost,callback:function(e){t.$set(t.form,"cost",e)},expression:"form.cost"}},[e("template",{slot:"append"},[t._v("USDT")])],2)],1),e("el-form-item",{attrs:{label:"选择挖矿账户"}},[e("el-select",{attrs:{filterable:"",clearable:"",placeholder:"请选择挖矿账户",loading:t.minersLoading},on:{change:t.handleMinerChange},model:{value:t.selectedMiner,callback:function(e){t.selectedMiner=e},expression:"selectedMiner"}},t._l(t.miners,function(t){return e("el-option",{key:t.user+"_"+t.coin,attrs:{label:t.user+"("+t.coin+")",value:t.user+"|"+t.coin}})}),1)],1),e("el-form-item",{attrs:{label:"选择机器(可多选)"}},[e("el-select",{attrs:{multiple:"",filterable:"","collapse-tags":"",placeholder:"请选择机器",loading:t.machinesLoading,disabled:!t.selectedMiner},model:{value:t.selectedMachines,callback:function(e){t.selectedMachines=e},expression:"selectedMachines"}},t._l(t.machineOptions,function(t){return e("el-option",{key:t.user+"_"+t.miner,attrs:{label:t.miner+"("+t.user+")",value:t.miner}})}),1)],1)],1)],1),t.selectedMachineRows.length?e("el-card",{staticClass:"form-card",attrs:{shadow:"never"}},[e("div",{staticClass:"section-title",attrs:{slot:"header"},slot:"header"},[t._v("已选择机器")]),e("el-table",{staticStyle:{width:"100%"},attrs:{data:t.selectedMachineRows,border:"",stripe:""}},[e("el-table-column",{attrs:{prop:"user",label:"挖矿账户"}}),e("el-table-column",{attrs:{prop:"miner",label:"机器编号"}}),e("el-table-column",{attrs:{prop:"realPower",label:"实际算力(MH/S)"}},[e("template",{slot:"header"},[e("el-tooltip",{attrs:{content:"实际算力为该机器在本矿池过去24H的平均算力",effect:"dark",placement:"top"}},[e("i",{staticClass:"el-icon-question",staticStyle:{"margin-right":"4px",color:"#909399"},attrs:{"aria-label":"帮助",tabindex:"0"}})]),e("span",[t._v("实际算力(MH/S)")])],1)],2),e("el-table-column",{attrs:{label:"功耗(kw/h)","min-width":"120"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("el-input",{staticStyle:{width:"100%"},attrs:{placeholder:"示例:0.01",inputmode:"decimal"},on:{input:function(e){return t.handleRowPowerDissipationInput(a.$index)},blur:function(e){return t.handleRowPowerDissipationBlur(a.$index)}},model:{value:a.row.powerDissipation,callback:function(e){t.$set(a.row,"powerDissipation",e)},expression:"scope.row.powerDissipation"}},[e("template",{slot:"append"},[t._v("kw/h")])],2)]}}],null,!1,2461731706)}),e("el-table-column",{attrs:{label:"理论算力","min-width":"160"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("div",{staticStyle:{display:"flex","align-items":"center",gap:"8px"}},[e("el-input",{staticStyle:{width:"100%"},attrs:{placeholder:"理论算力",inputmode:"decimal"},on:{input:function(e){return t.handleRowTheoryPowerInput(a.$index)},blur:function(e){return t.handleRowTheoryPowerBlur(a.$index)}},model:{value:a.row.theoryPower,callback:function(e){t.$set(a.row,"theoryPower",e)},expression:"scope.row.theoryPower"}}),e("el-select",{staticStyle:{width:"150px"},attrs:{placeholder:"单位"},on:{change:e=>t.handleRowUnitChange(a.$index,e)},model:{value:a.row.unit,callback:function(e){t.$set(a.row,"unit",e)},expression:"scope.row.unit"}},[e("el-option",{attrs:{label:"KH/S",value:"KH/S"}}),e("el-option",{attrs:{label:"MH/S",value:"MH/S"}}),e("el-option",{attrs:{label:"GH/S",value:"GH/S"}}),e("el-option",{attrs:{label:"TH/S",value:"TH/S"}}),e("el-option",{attrs:{label:"PH/S",value:"PH/S"}})],1)],1)]}}],null,!1,2316701192)}),e("el-table-column",{attrs:{label:"售价(按结算币种)","min-width":"220"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("div",{staticClass:"price-multi"},[t.payTypeDefs&&t.payTypeDefs.length?e("div",{staticClass:"price-items"},t._l(t.payTypeDefs,function(s){return e("div",{key:s.key,staticClass:"price-item"},[e("el-input",{attrs:{placeholder:"价格",inputmode:"decimal"},on:{input:()=>t.handleRowPriceMapInput(a.$index,s.key),blur:()=>t.handleRowPriceMapBlur(a.$index,s.key)},model:{value:a.row.priceMap[s.key],callback:function(e){t.$set(a.row.priceMap,s.key,e)},expression:"scope.row.priceMap[pt.key]"}},[e("template",{slot:"append"},[t._v(t._s(s.label))])],2)],1)}),0):e("el-input",{staticStyle:{width:"100%"},attrs:{placeholder:"价格",inputmode:"decimal"},on:{input:function(e){return t.handleRowPriceInput(a.$index)},blur:function(e){return t.handleRowPriceBlur(a.$index)}},model:{value:a.row.price,callback:function(e){t.$set(a.row,"price",e)},expression:"scope.row.price"}},[e("template",{slot:"append"},[t._v("USDT")])],2)],1)]}}],null,!1,3822584807)},[e("template",{slot:"header"},[e("el-tooltip",{attrs:{effect:"dark",placement:"top"}},[e("div",{attrs:{slot:"content"},slot:"content"},[t._v(" 卖家最终收款金额 = 机器售价 × 波动率"),e("br"),t._v(" 波动率规则:"),e("br"),t._v(" 1)0% - 5%(包含5%):波动率 = 1(按售价结算)"),e("br"),t._v(" 2)5%以上:波动率 = 实际算力 / 理论算力,且不会超过 1,即最终结算时不会超过机器售价 ")]),e("i",{staticClass:"el-icon-question label-help",attrs:{"aria-label":"帮助",tabindex:"0"}})]),e("span",[t._v("售价(按结算币种)")])],1)],2),e("el-table-column",{attrs:{label:"最大租赁天数(天)","min-width":"120"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("el-input",{staticStyle:{width:"100%"},attrs:{placeholder:"1-365",inputmode:"numeric"},on:{input:function(e){return t.handleRowMaxLeaseDaysInput(a.$index)},blur:function(e){return t.handleRowMaxLeaseDaysBlur(a.$index)}},model:{value:a.row.maxLeaseDays,callback:function(e){t.$set(a.row,"maxLeaseDays",e)},expression:"scope.row.maxLeaseDays"}},[e("template",{slot:"append"},[t._v("天")])],2)]}}],null,!1,309661603)}),e("el-table-column",{attrs:{label:"矿机型号"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("el-input",{staticStyle:{width:"100%"},attrs:{placeholder:"矿机型号",maxlength:20},on:{input:function(e){return t.handleRowTypeInput(a.$index)},blur:function(e){return t.handleRowTypeBlur(a.$index)}},model:{value:a.row.type,callback:function(e){t.$set(a.row,"type",e)},expression:"scope.row.type"}})]}}],null,!1,1752667191)}),e("el-table-column",{attrs:{label:"上下架状态",width:"100"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("el-button",{attrs:{type:0===a.row.state?"success":"info",size:"mini"},on:{click:function(e){return t.handleToggleState(a.$index)}}},[t._v(" "+t._s(0===a.row.state?"上架":"下架")+" ")])]}}],null,!1,875649026)})],1)],1):t._e(),e("div",{staticClass:"actions"},[e("el-button",{on:{click:t.handleBack}},[t._v("取消")]),e("el-button",{attrs:{type:"primary",loading:t.saving},on:{click:t.handleSave}},[t._v("确认添加")])],1),e("el-dialog",{attrs:{title:"请确认上架信息",visible:t.confirmVisible,width:"400px"},on:{"update:visible":function(e){t.confirmVisible=e}}},[e("div",[e("p",[t._v("请仔细确认已选择机器列表、价格及相关参数定义。")]),e("p",{staticStyle:{"text-align":"left"}},[t._v("机器上架后,一经售出,在机器出售期间不能修改价格及机器参数。")])]),e("span",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[e("el-button",{on:{click:function(e){t.confirmVisible=!1}}},[t._v("取消")]),e("el-button",{attrs:{type:"primary",loading:t.saving},on:{click:t.doSubmit}},[t._v("确认上架已选择机器")])],1)])],1)},e.Yp=[]},6616:function(t,e,a){"use strict";Object.defineProperty(e,"B",{value:!0}),e.A=void 0,a(8111),a(1701),a(3579);var s=a(6299),i=a(6299);e.A={name:"WalletPage",data(){return{walletBalance:0,blockedBalance:0,walletList:[],WalletData:{},rechargeDialogVisible:!1,qrCodeGenerated:!1,withdrawDialogVisible:!1,withdrawLoading:!1,withdrawForm:{toChain:"tron",toSymbol:"USDT",amount:"",toAddress:"",fee:"1.00",googleCode:""},withdrawRules:{toChain:[{required:!0,message:"请选择区块链网络",trigger:"change"}],toSymbol:[{required:!0,message:"请选择提现币种",trigger:"change"}],amount:[{required:!0,message:"请输入提现金额",trigger:"blur"},{validator:this.validateWithdrawAmount,trigger:"blur"}],toAddress:[{required:!0,message:"请输入收款地址",trigger:"blur"},{validator:this.validateAddress,trigger:"blur"}],googleCode:[{required:!0,message:"请输入谷歌验证码",trigger:"blur"},{validator:this.validateGoogleCode,trigger:"blur"}]},chainOptions:[{label:"Tron (TRC20)",value:"tron"}],options:[],loading:!1,createDialogVisible:!1,createLoading:!1,createValue:[],tokenOptions:{tron:[{label:"USDT (TRC20)",value:"USDT"}]},recentTransactions:[]}},computed:{availableTokens(){return this.tokenOptions[this.withdrawForm.toChain]||[]},actualAmount(){const t=this.toScaledInt(this.withdrawForm.amount),e=this.toScaledInt(this.withdrawForm.fee);if(!Number.isFinite(t)||!Number.isFinite(e))return"0";const a=t-e;return a<=0?"0":this.formatDec6FromInt(a)},totalBalance(){const t=parseFloat(this.WalletData.walletBalance||this.WalletData.balance||this.walletBalance||0)||0,e=parseFloat(this.WalletData.blockedBalance||this.blockedBalance||0)||0;return(t+e).toFixed(2)},availableWithdrawBalance(){return this.WalletData.walletBalance||this.WalletData.balance||0},displayWithdrawSymbol(){const t=this.WalletData&&(this.WalletData.fromSymbol||this.WalletData.coin||this.withdrawForm.toSymbol)||"";return String(t).toUpperCase()}},mounted(){this.fetchWalletInfo(),this.updateFeeByChain(),this.getChainAndList(),this.fetchRecentlyTransaction()},methods:{displaySymbol(t){const e=t&&(t.fromSymbol||t.toSymbol||t.coin)||"";return String(e).toUpperCase()},openCreateWallet(){this.createDialogVisible=!0,Array.isArray(this.options)&&0!==this.options.length||this.getChainAndList()},async confirmCreateWallet(){const t=this.createValue||[];if(!Array.isArray(t)||t.length<2)return void this.$message.warning("请先选择链与币种");const[e,a]=t;if(e&&a)try{this.createLoading=!0;const t=await(0,i.bindWallet)({chain:e,coin:a});if(t&&(0===t.code||200===t.code)){const e=t.data;if(e){const t=Array.isArray(e)?e[0]||{}:e;this.WalletData=t,this.rechargeDialogVisible=!0,this.qrCodeGenerated=!1,this.$nextTick(()=>{this.generateQRCode()})}this.fetchWalletInfo(),this.createDialogVisible=!1,this.createValue=[]}}catch(s){console.error("获取充值信息失败",s)}finally{this.createLoading=!1}else this.$message.warning("请选择完整的链与币种")},async getChainAndList(){this.loading=!0;const t=await(0,i.getChainAndList)();t&&(0===t.code||200===t.code)&&t.data&&(this.options=t.data),this.loading=!1},async fetchRecentlyTransaction(){try{const t=await(0,s.getRecentlyTransaction)();if(t&&(0===t.code||200===t.code)){const e=Array.isArray(t.data)?t.data:[],a=e.map((t,e)=>{const a=Number(t&&t.amount),s=Number.isFinite(a)?a:0,i=Number(t&&t.type),o=1===i?Math.abs(s):-Math.abs(s),r=1===i?"充值":2===i?"提现":"支付",n=Number(t&&t.status),l={0:"失败",1:"成功",2:"处理中",3:"校验失败"},c={0:"danger",1:"success",2:"warning",3:"danger"};return{id:`${t&&t.updateTime||""}-${e}`,type:r,amount:o,amountText:this.formatDec6(Math.abs(o)),time:this.formatApiTime(t&&t.updateTime),status:n,statusText:l[n]||"-",statusTagType:c[n]||"info"}});this.recentTransactions=a}}catch(t){}},formatApiTime(t){const e=String(t||"");return e?e.replace("T"," ").replace("Z",""):""},formatDec6(t){if(null===t||void 0===t||""===t)return"0";let e=String(t);if(/e/i.test(e)){const a=Number(t);if(!Number.isFinite(a))return"0";e=a.toFixed(20).replace(/\.0+$/,"").replace(/(\.\d*?)0+$/,"$1")}const a=e.match(/^(-?)(\d+)(?:\.(\d+))?$/);if(!a)return e;let s=a[2],i=a[3]||"";return i.length>6&&(i=i.slice(0,6)),i?`${s}.${i}`:s},toScaledInt(t,e=6){if(null===t||void 0===t)return 0;const a=String(t).trim();if(""===a)return 0;const s=new RegExp(`^\\d+(?:\\.(\\d{0,${e}}))?$`),i=a.match(s);if(!i){const t=Number(a);if(!Number.isFinite(t))return 0;const s=Math.pow(10,e);return Math.round(t*s)}const[o,r]=a.split("."),n=(r||"").padEnd(e,"0").slice(0,e),l=Math.pow(10,e);return Number(o)*l+Number(n)},scaledIntToString(t,e=6){const a=t<0?"-":"",s=Math.abs(t),i=Math.pow(10,e),o=Math.floor(s/i),r=String(s%i).padStart(e,"0");return`${a}${o}.${r}`},formatDec6FromInt(t){const e=this.scaledIntToString(t,6);return e.replace(/\.0+$/,"").replace(/(\.\d*?)0+$/,"$1")},async fetchWalletInfo(t){try{const e=await(0,s.getWalletInfo)(t);if(e&&(0===e.code||200===e.code)){const t=e.data;if(Array.isArray(t)){this.walletList=t;const e=t[0]||{};this.walletBalance=e.walletBalance||e.balance||0,this.blockedBalance=e.blockedBalance||0,this.rechargeDialogVisible||(this.WalletData=e)}else t&&"object"===typeof t?(this.walletList=[t],this.walletBalance=t.walletBalance||t.balance||0,this.blockedBalance=t.blockedBalance||0,this.rechargeDialogVisible||(this.WalletData=t)):(this.walletList=[],this.walletBalance=0,this.blockedBalance=0,this.WalletData={})}}catch(e){console.error("获取钱包信息失败:",e)}},async fetchBalanceRechargeList(t={}){try{const e={pageNum:1,pageSize:20,...t};console.log("获取充值记录参数:",e);const a=await(0,s.balanceRechargeList)(e);if(!a||0!==a.code&&200!==a.code)return this.$message({message:a?.msg||"获取充值记录失败",type:"error",showClose:!0}),null;{const t={list:a.data.rows||[],total:a.data.total||0,totalPage:a.data.totalPage||0,currentPage:e.pageNum,pageSize:e.pageSize,status:e.status};return console.log("充值记录获取成功:",t),t}}catch(e){return console.error("获取充值记录失败:",e),null}},async fetchBalanceWithdrawList(t){const e=await(0,s.balanceWithdrawList)(t);!e||0!==e.code&&200!==e.code||(this.balanceWithdrawList=e.data)},handleRecharge(t){t&&"object"===typeof t&&(this.WalletData=t),this.rechargeDialogVisible=!0,this.qrCodeGenerated=!1,this.$nextTick(()=>{this.generateQRCode()})},handleWithdraw(t){if(t){this.WalletData=t;const e=t.fromChain||t.chain||this.withdrawForm.toChain,a=t.fromSymbol||t.coin||this.withdrawForm.toSymbol;this.withdrawForm.toChain=e,this.withdrawForm.toSymbol=a,this.updateFeeByChain()}this.withdrawDialogVisible=!0},copyAddress(t){const e=t||this.WalletData.fromAddress;e?navigator.clipboard?navigator.clipboard.writeText(e).then(()=>{this.$message({message:"钱包地址已复制到剪贴板",type:"success",showClose:!0})}).catch(()=>{this.fallbackCopyAddress(e)}):this.fallbackCopyAddress(e):this.$message({message:"钱包地址不存在",type:"error",showClose:!0})},fallbackCopyAddress(t){const e=document.createElement("textarea");e.value=t,document.body.appendChild(e),e.select();try{document.execCommand("copy"),this.$message({message:"钱包地址已复制到剪贴板",type:"success",showClose:!0})}catch(a){console.log("复制失败,请手动复制")}document.body.removeChild(e)},generateQRCode(){if(!this.qrCodeGenerated)if(this.WalletData.qrcode){const t=this.$refs.qrCodeRef;if(t){t.innerHTML="";const e=document.createElement("img");e.src=`data:image/png;base64,${this.WalletData.qrcode}`,e.alt="USDT充值二维码",e.style.width="160px",e.style.height="160px",e.style.borderRadius="4px",e.onerror=()=>{t.innerHTML='
二维码加载失败
'},t.appendChild(e),this.qrCodeGenerated=!0}}else{const t=this.$refs.qrCodeRef;t&&(t.innerHTML='
暂无二维码数据
')}},onChainChange(){const t=this.tokenOptions[this.withdrawForm.toChain]||[],e=t.some(t=>"USDT"===t.value);this.withdrawForm.toSymbol=e?"USDT":"",this.updateFeeByChain()},updateFeeByChain(){const t=this.WalletData&&(null!=this.WalletData.charge?this.WalletData.charge:this.WalletData.fee);if(null!=t&&""!==t){const e=Number(t);return void(this.withdrawForm.fee=Number.isFinite(e)?e.toFixed(2):String(t))}const e={tron:"1.00",ethereum:"5.00",bsc:"0.50",polygon:"0.10"};this.withdrawForm.fee=e[this.withdrawForm.toChain]||"1.00"},async confirmWithdraw(){this.$refs.withdrawForm.validate(async t=>{if(t){this.withdrawLoading=!0;try{const t=await(0,s.withdrawBalance)({toChain:this.WalletData&&(this.WalletData.fromChain||this.WalletData.chain)||this.withdrawForm.toChain,toSymbol:this.WalletData&&(this.WalletData.fromSymbol||this.WalletData.coin)||this.withdrawForm.toSymbol,amount:parseFloat(this.withdrawForm.amount),toAddress:this.withdrawForm.toAddress,fromAddress:this.WalletData&&this.WalletData.fromAddress||"",code:this.withdrawForm.googleCode});!t||0!==t.code&&200!==t.code||(this.$message({message:"提现申请已提交,请等待处理",type:"success",showClose:!0}),await this.fetchWalletInfo(),this.withdrawDialogVisible=!1,this.resetWithdrawForm())}catch(e){console.error("提现申请失败:",e),console.log("网络错误,请重试")}finally{this.withdrawLoading=!1}}})},resetRechargeForm(){this.qrCodeGenerated=!1,this.fetchWalletInfo()},resetWithdrawForm(){this.withdrawForm={toChain:"tron",toSymbol:"USDT",amount:"",toAddress:"",fee:"1.00",googleCode:""},this.withdrawLoading=!1,this.$nextTick(()=>{this.$refs.withdrawForm&&this.$refs.withdrawForm.clearValidate()})},validateWithdrawAmount(t,e,a){if(!e)return void a(new Error("请输入提现金额"));const s=this.toScaledInt(e);if(!Number.isFinite(s)||s<=0)return void a(new Error("请输入有效的金额"));const i=this.toScaledInt(this.withdrawForm.fee),o=s+i,r=this.WalletData&&(this.WalletData.walletBalance||this.WalletData.balance)||0,n=this.toScaledInt(r);if(o>n){const t=this.formatDec6FromInt(o);return void a(new Error(`提现金额加上手续费(${t} USDT)不能超过钱包余额`))}s<1e6?a(new Error("最小提现金额为1 USDT")):s<=i?a(new Error("提现金额必须大于手续费")):a()},handleGoogleCodeInput(t){this.withdrawForm.googleCode=t.replace(/\D/g,"")},handleAmountInput(t){let e=String(t||"");e=e.replace(/[^0-9.]/g,"");const a=e.indexOf(".");if(-1!==a&&(e=e.slice(0,a+1)+e.slice(a+1).replace(/\./g,"")),-1!==a){const[t,a]=e.split(".");e=t+"."+(a?a.slice(0,6):"")}const s=e.split(".");s[0]&&s[0].length>12&&(s[0]=s[0].slice(0,12)),e=s.join("."),this.withdrawForm.amount=e},validateGoogleCode(t,e,a){e?/^\d{6}$/.test(e)?a():a(new Error("谷歌验证码必须是6位数字")):a(new Error("请输入谷歌验证码"))},validateAddress(t,e,a){const s="string"===typeof e?e.trim():"";if(!s)return void a(new Error("请输入收款地址"));const i=this.withdrawForm.toChain;let o=!1;switch(i){case"tron":o=/^T[A-Za-z1-9]{33}$/.test(s);break;case"ethereum":o=/^0x[a-fA-F0-9]{40}$/.test(s);break;case"bsc":o=/^0x[a-fA-F0-9]{40}$/.test(s);break;case"polygon":o=/^0x[a-fA-F0-9]{40}$/.test(s);break;default:o=s.length>10}o?a():a(new Error("请输入正确的收款地址格式"))},addTransactionRecord(t,e){const a=new Date,s=`${a.getFullYear()}-${String(a.getMonth()+1).padStart(2,"0")}-${String(a.getDate()).padStart(2,"0")} ${String(a.getHours()).padStart(2,"0")}:${String(a.getMinutes()).padStart(2,"0")}`;this.recentTransactions.unshift({id:Date.now(),type:t,amount:e,time:s}),this.recentTransactions.length>10&&(this.recentTransactions=this.recentTransactions.slice(0,10))}}}},6652:function(t,e){"use strict";e.Yp=e.XX=void 0;e.XX=function(){var t=this,e=t._self._c;return e("div",{staticClass:"header-container"},[e("nav",{staticClass:"navbar"},t._l(t.navigation,function(a){return e("router-link",{key:a.path,staticClass:"nav-btn",attrs:{to:a.path,"active-class":"active",title:a.description}},[e("span",{staticClass:"nav-icon"},[t._v(t._s(a.icon))]),e("span",{staticClass:"nav-text"},[t._v(t._s(a.name))]),"/cart"===a.path?e("span",{staticClass:"cart-count"},[t._v("("+t._s(t.cartItemCount)+")")]):t._e()])}),1)])},e.Yp=[]},6804:function(t,e,a){function s(t,e){try{const a=atob(t);let s="";for(let t=0;tsetTimeout(t,2e3));const t={id:`ORDER_${Date.now()}`,items:this.cartItems,total:this.summary.totalPrice,customer:{name:this.form.name,phone:this.form.phone,address:this.form.address,note:this.form.note},createTime:(new Date).toISOString()};console.log("订单提交成功:",t),(0,s.clearCart)(),this.$message.success("订单提交成功!"),setTimeout(()=>{this.$router.push("/productList")},1500)}catch(t){console.error("提交订单失败:",t),console.log("提交订单失败,请稍后重试")}finally{this.submitting=!1}else this.$message.error("请完善收货信息")}}}},7465:function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=void 0,a(8111),a(7588);class s{constructor(){this.recentErrors=new Map,this.throttleTime=3e3,this.errorTypes={"Network Error":"network",timeout:"timeout","Request failed with status code":"statusCode",networkReconnected:"networkStatus",NetworkError:"network"}}getErrorType(t){for(const[e,a]of Object.entries(this.errorTypes))if(t.includes(e))return a;return"unknown"}canShowError(t){const e=this.getErrorType(t),a=Date.now();if(this.recentErrors.has(e)){const t=this.recentErrors.get(e);if(a-t{t-e>this.throttleTime&&this.recentErrors.delete(a)})}}const i=new s;e["default"]=i},7570:function(t,e,a){"use strict";var s=a(3999)["default"];Object.defineProperty(e,"B",{value:!0}),e.A=void 0;var i=s(a(1774));e.A={components:{comHeard:()=>Promise.resolve().then(()=>(0,i.default)(a(9872))),appMain:()=>Promise.resolve().then(()=>(0,i.default)(a(1220)))}}},7692:function(t,e,a){"use strict";var s=a(3999)["default"];Object.defineProperty(e,"B",{value:!0}),e.A=void 0,a(8111),a(2489),a(116),a(7588);var i=s(a(4487));e.A={name:"ProductDetail",mixins:[i.default],methods:{getRowMaxLeaseDays(t){const e=t&&(t.maxLeaseDays||t.maxLeaseDay||t.max_lease_days)||365,a=Number(e);return Number.isFinite(a)?a<1?1:a>365?365:Math.floor(a):365},getPayImageUrl(t){try{const e=t&&t.payCoinImage?String(t.payCoinImage):"";return e.trim()}catch(e){return""}},getSelectedPayIcon(){try{const t=this.selectedPayKey;if(!t)return"";const[e,a]=String(t).split("|"),s=Array.isArray(this.paymentMethodList)?this.paymentMethodList:[],i=s.find(t=>String(t&&t.payChain).toUpperCase()===String(e).toUpperCase()&&String(t&&t.payCoin).toUpperCase()===String(a).toUpperCase());return this.getPayImageUrl(i)}catch(t){return""}},handlePayFilterChange(t){try{const e="string"===typeof t?t:"";if(e){const[t,a]=e.split("|");this.filters.chain=(t||"").trim(),this.filters.coin=(a||"").trim()}else this.filters.chain="",this.filters.coin="";this.handleSearchFilters()}catch(e){}},handleSearchFilters(){const t=this.buildQueryParams();this.fetchGetMachineInfo(t)},handleResetFilters(){this.selectedPayKey=null,this.filters={chain:"",coin:"",minPrice:null,maxPrice:null,minPower:null,maxPower:null,minPowerDissipation:null,maxPowerDissipation:null,unit:"GH/S"},this.handleSearchFilters()},getFirstCoinSymbol(){try{const t=Array.isArray(this.machineList)?this.machineList:[],e=t.length&&t[0]&&t[0].coin?String(t[0].coin):"";return e?e.toUpperCase():""}catch(t){return""}},getPriceCoinSymbol(){try{const t=Array.isArray(this.machineList)?this.machineList:[],e=t.find(t=>t&&t.payCoin),a=e&&e.payCoin?String(e.payCoin):"";return a?a.toUpperCase():""}catch(t){return""}},handleLeaseDaysChange(t,e){const a=this.getRowMaxLeaseDays(t);let s=Number(e);Number.isFinite(s)||(s=1),s<1&&(s=1),s>a&&(s=a),s=Math.floor(s),this.$set(t,"leaseTime",s)},formatPayTooltip(t){try{if(!t)return"";const e=(t.payChain||"").toString().trim(),a=(t.payCoin||"").toString().trim();return e&&a?`${e} - ${a}`:e||a||""}catch(e){return console.error("formatPayTooltip error:",e),""}},handlePayIconKeyDown(t){try{if(!t)return;console.debug("[pay-icon-keydown]",t.payChain)}catch(e){console.error("handlePayIconKeyDown error:",e)}},handleManualSelectFlat(t,e){try{if(!t)return;if(1===t.saleState||2===t.saleState)return this.$message.warning("该机器已售出或售出中,无法选择"),void this.$set(t,"_selected",!1);this.$set(t,"_selected",!!e)}catch(a){console.error("handleManualSelectFlat error:",a)}},handleGetRowClass({row:t}){return t&&(1===t.saleState||2===t.saleState)?"sold-row":""},handleOpenAddToCartDialog(){const t=Array.isArray(this.machineList)?this.machineList:[],e=t.filter(t=>!!t&&!!t._selected),a=e.filter(t=>t&&(0===t.saleState||void 0===t.saleState||null===t.saleState));a.length?(a.length{try{(this.machineList||[]).forEach(t=>this.$set(t,"_selected",!1))}catch(t){}})):this.$message.warning("请先勾选至少一台矿机")}}}},7723:function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.listProducts=e.getProductById=e["default"]=void 0;const a=[{id:"p1001",title:"新能源充电桩(家用)",description:"7kW 单相,智能预约,支持远程监控。",price:1299,image:"https://via.placeholder.com/300x200?text=%E5%85%85%E7%94%B5%E6%A1%A9"},{id:"p1002",title:"工业电能表",description:"三相四线,远程抄表,Modbus 通信。",price:899,image:"https://via.placeholder.com/300x200?text=%E7%94%B5%E8%83%BD%E8%A1%A8"},{id:"p1003",title:"配电柜(入门版)",description:"IP54 防护,内置断路器与防雷模块。",price:5599,image:"https://via.placeholder.com/300x200?text=%E9%85%8D%E7%94%B5%E6%9F%9C"},{id:"p1004",title:"工矿照明灯",description:"120W 高亮,耐腐蚀,适配多场景。",price:329,image:"https://via.placeholder.com/300x200?text=%E7%85%A7%E6%98%8E%E7%81%AF"}],s=async()=>Promise.resolve(a);e.listProducts=s;const i=async t=>{const e=a.find(e=>e.id===t);return Promise.resolve(e)};e.getProductById=i;e["default"]={listProducts:s,getProductById:i}},7802:function(t,e,a){"use strict";a.r(e),a.d(e,{__esModule:function(){return i.B},default:function(){return l}});var s=a(5912),i=a(2570),o=i.A,r=a(845),n=(0,r.A)(o,s.XX,s.Yp,!1,null,"031e6e83",null),l=n.exports},7896:function(t,e,a){"use strict";Object.defineProperty(e,"B",{value:!0}),e.A=void 0,a(4114);var s=a(9662),i=a(9252),o=a(4981);e.A={name:"AccountPurchased",data(){return{loading:!1,searchKeyword:"",tableData:[],pagination:{pageNum:1,pageSize:10},coins:i.coinList||[],total:0,currentPage:1}},created(){this.fetchTableData(this.pagination)},methods:{formatAmount(t,e){return(0,o.truncateAmountByCoin)(t,e)},async fetchTableData(t){this.loading=!0;try{const e=await(0,s.getOwnedList)(t);!e||0!==e.code&&200!==e.code||(this.tableData=e.rows,this.total=e.total)}catch(e){console.error("获取已购商品失败",e)}finally{this.loading=!1}},handleSearch(){this.pagination.pageNum=1,this.fetchTableData()},handleReset(){this.searchKeyword="",this.pagination.pageNum=1,this.pagination.pageSize=10,this.fetchTableData(this.pagination)},handleClear(){this.searchKeyword="",this.pagination.pageNum=1,this.fetchTableData(this.pagination)},handleSizeChange(t){this.pagination.pageSize=t,this.pagination.pageNum=1,this.fetchTableData(this.pagination)},handleCurrentChange(t){this.pagination.pageNum=t,this.fetchTableData(this.pagination)},handleView(t){this.$router.push({name:"PurchasedDetail",params:{id:t.id}})},formatDateTime(t){if(!t)return"—";try{const e=String(t);return e.includes("T")?e.replace("T"," "):e}catch(e){return String(t)}}}}},7915:function(t,e,a){"use strict";a.r(e),a.d(e,{__esModule:function(){return i.B},default:function(){return l}});var s=a(1074),i=a(6163),o=i.A,r=a(845),n=(0,r.A)(o,s.XX,s.Yp,!1,null,"d6c9b7e4",null),l=n.exports},8284:function(t,e,a){"use strict";Object.defineProperty(e,"B",{value:!0}),e.A=void 0,a(8111),a(2489);var s=a(6299);e.A={name:"WithdrawalHistory",data(){return{activeTab:"pending",detailDialogVisible:!1,selectedItem:null,withdrawalRecords:[],pagination:{pageNum:1,pageSize:10,totalPage:0},loading:!1,statusFilter:"",total:0,pageSizes:[10,20,50],currentPage:1}},computed:{pendingWithdrawals(){return this.withdrawalRecords.filter(t=>2===t.status)},successWithdrawals(){return this.withdrawalRecords.filter(t=>1===t.status)},failedWithdrawals(){return this.withdrawalRecords.filter(t=>0===t.status)}},mounted(){this.activeTab="pending",this.statusFilter=2,this.loadWithdrawalRecords()},methods:{async fetchBalanceWithdrawList(t={}){try{const e={pageNum:1,pageSize:20,...t};console.log("获取提现记录参数:",e);const a=await(0,s.balanceWithdrawList)(e);!a||0!==a.code&&200!==a.code?this.$message({message:a?.msg||"获取提现记录失败",type:"error",showClose:!0}):(this.withdrawalRecords=a.rows||[],this.pagination.totalPage=a.totalPage||0,this.total=a.total||0,console.log("提现记录获取成功:",{records:this.withdrawalRecords,pagination:this.pagination}))}catch(e){console.error("获取提现记录失败:",e)}},async loadWithdrawalRecords(){this.loading=!0;try{const t={pageNum:this.pagination.pageNum,pageSize:this.pagination.pageSize};""!==this.statusFilter&&(t.status=this.statusFilter),await this.fetchBalanceWithdrawList(t)}finally{this.loading=!1}},handleTabClick(t){this.activeTab=t.name,"pending"===t.name?this.statusFilter=2:"success"===t.name?this.statusFilter=1:"failed"===t.name&&(this.statusFilter=0),this.currentPage=1,this.pagination.pageSize=10,this.pagination.pageNum=1,this.loadWithdrawalRecords()},showDetail(t){this.selectedItem=t,this.detailDialogVisible=!0},closeDetail(){this.detailDialogVisible=!1,this.selectedItem=null},getChainName(t){const e={tron:"Tron (TRC20)",ethereum:"Ethereum (ERC20)",bsc:"BSC (BEP20)",polygon:"Polygon (MATIC)"};return e[t]||t},getStatusType(t){const e={0:"danger",1:"success",2:"warning"};return e[t]||"info"},formatAddress(t){return t?t.length>20?`${t.slice(0,10)}...${t.slice(-10)}`:t:""},formatTime(t){if(!t)return"";const e=new Date(t),a=new Date,s=a-e;return s<6e4?"刚刚":s<36e5?`${Math.floor(s/6e4)}分钟前`:s<864e5?`${Math.floor(s/36e5)}小时前`:e.toLocaleDateString()},formatFullTime(t){return t?new Date(t).toLocaleString("zh-CN"):""},copyAddress(t){navigator.clipboard?navigator.clipboard.writeText(t).then(()=>{this.$message.success("地址已复制到剪贴板")}).catch(()=>{this.fallbackCopyAddress(t)}):this.fallbackCopyAddress(t)},fallbackCopyAddress(t){const e=document.createElement("textarea");e.value=t,document.body.appendChild(e),e.select();try{document.execCommand("copy"),this.$message.success("地址已复制到剪贴板")}catch(a){this.$message.error("复制失败,请手动复制")}document.body.removeChild(e)},viewOnExplorer(t,e){const a={tron:`https://tronscan.org/#/transaction/${t}`,ethereum:`https://etherscan.io/tx/${t}`,bsc:`https://bscscan.com/tx/${t}`,polygon:`https://polygonscan.com/tx/${t}`},s=a[e];s?window.open(s,"_blank"):this.$message.error("不支持的区块链网络")},refreshData(){this.loadWithdrawalRecords()},getStatusText(t){const e={0:"提现失败",1:"提现成功",2:"提现中"};return e[t]||"未知状态"},handleSizeChange(t){console.log(`每页 ${t} 条`),this.pagination.pageSize=t,this.pagination.pageNum=1,this.currentPage=1,this.loadWithdrawalRecords()},handleCurrentChange(t){console.log(`当前页: ${t}`),this.pagination.pageNum=t,this.loadWithdrawalRecords()}}}},8401:function(t,e,a){"use strict";a.r(e),a.d(e,{__esModule:function(){return i.B},default:function(){return l}});var s=a(5656),i=a(460),o=i.A,r=a(845),n=(0,r.A)(o,s.XX,s.Yp,!1,null,"2ad2c7c3",null),l=n.exports},8441:function(t,e,a){"use strict";a.r(e),a.d(e,{__esModule:function(){return i.B},default:function(){return l}});var s=a(6037),i=a(4300),o=i.A,r=a(845),n=(0,r.A)(o,s.XX,s.Yp,!1,null,"bd46f398",null),l=n.exports},8466:function(t,e){"use strict";e.Yp=e.XX=void 0;e.XX=function(){var t=this,e=t._self._c;return e("div",{staticClass:"account-product-detail"},[e("div",{staticClass:"header"},[e("el-button",{attrs:{type:"text"},on:{click:t.handleBack}},[t._v("返回")]),e("h2",{staticClass:"title"},[t._v("商品详情")])],1),e("el-card",{staticClass:"detail-card",attrs:{shadow:"never"}},[e("el-form",{staticClass:"detail-form",attrs:{model:t.product,"label-width":"90px",size:"small"}},[e("el-row",{attrs:{gutter:16}},[e("el-col",{attrs:{span:12}},[e("el-form-item",{attrs:{label:"商品ID"}},[e("el-input",{attrs:{value:t.product&&t.product.id,disabled:""}})],1)],1),e("el-col",{attrs:{span:12}},[e("el-form-item",{attrs:{label:"店铺ID"}},[e("el-input",{attrs:{value:t.product&&t.product.shopId,disabled:""}})],1)],1),e("el-col",{attrs:{span:12}},[e("el-form-item",{attrs:{label:"名称"}},[e("el-input",{attrs:{value:t.product&&t.product.name,disabled:""}})],1)],1),e("el-col",{attrs:{span:12}},[e("el-form-item",{attrs:{label:"币种"}},[e("el-input",{attrs:{value:t.product&&t.product.coin,disabled:""}})],1)],1),e("el-col",{attrs:{span:12}},[e("el-form-item",{attrs:{label:"算法"}},[e("el-input",{attrs:{value:t.product&&t.product.algorithm,disabled:""}})],1)],1),e("el-col",{attrs:{span:12}},[e("el-form-item",{attrs:{label:"类型"}},[e("el-input",{attrs:{value:t.product&&(1===t.product.type?"算力套餐":"挖矿机器"),disabled:""}})],1)],1),e("el-col",{attrs:{span:12}},[e("el-form-item",{attrs:{label:"状态"}},[e("el-input",{attrs:{value:t.product&&(1===t.product.state?"下架":"上架"),disabled:""}})],1)],1),e("el-col",{attrs:{span:12}}),e("el-col",{attrs:{span:24}},[e("el-form-item",{attrs:{label:"描述"}},[e("el-input",{attrs:{type:"textarea",rows:3,value:t.product&&t.product.description,disabled:""}})],1)],1)],1)],1)],1),e("el-card",{directives:[{name:"loading",rawName:"v-loading",value:t.updateLoading,expression:"updateLoading"}],staticClass:"detail-card",attrs:{shadow:"never"}},[e("div",{staticClass:"section-title",attrs:{slot:"header"},slot:"header"},[t._v("机器组合")]),t.machineList&&t.machineList.length?e("div",[e("el-table",{staticStyle:{width:"100%"},attrs:{data:t.machineList,border:"",stripe:""}},[e("el-table-column",{attrs:{prop:"user",label:"挖矿账户"}}),e("el-table-column",{attrs:{prop:"id",label:"矿机ID"}}),e("el-table-column",{attrs:{prop:"miner",label:"机器编号"}}),e("el-table-column",{attrs:{label:"实际算力",width:"100"},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(t._s(e.row.computingPower)+" "+t._s(e.row.unit||""))]}}],null,!1,881627289)},[e("template",{slot:"header"},[e("el-tooltip",{attrs:{content:"实际算力为该机器在本矿池过去24H的平均算力",effect:"dark",placement:"top"}},[e("i",{staticClass:"el-icon-question label-help",attrs:{"aria-label":"帮助",tabindex:"0"}})]),e("span",[t._v("实际算力")])],1)],2),e("el-table-column",{attrs:{label:"理论算力","min-width":"140"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("el-input",{class:{"changed-input":t.isCellChanged(a.row,"theoryPower")},staticStyle:{"max-width":"260px"},attrs:{size:"small",inputmode:"decimal",disabled:t.isRowDisabled(a.row)},on:{input:function(e){return t.handleTheoryPowerInput(a.$index)},blur:function(e){return t.handleTheoryPowerBlur(a.$index)}},model:{value:a.row.theoryPower,callback:function(e){t.$set(a.row,"theoryPower",e)},expression:"scope.row.theoryPower"}},[e("template",{slot:"append"},[e("el-select",{staticClass:"append-select append-select--unit",staticStyle:{width:"90px"},attrs:{size:"mini",disabled:t.isRowDisabled(a.row)},model:{value:a.row.unit,callback:function(e){t.$set(a.row,"unit",e)},expression:"scope.row.unit"}},t._l(t.unitOptions,function(t){return e("el-option",{key:t,attrs:{label:t,value:t}})}),1)],1)],2)]}}],null,!1,1615065668)}),e("el-table-column",{attrs:{label:"功耗(kw/h)"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("el-input",{class:{"changed-input":t.isCellChanged(a.row,"powerDissipation")},staticStyle:{"max-width":"260px"},attrs:{size:"small",inputmode:"decimal",disabled:t.isRowDisabled(a.row)},on:{input:function(e){return t.handleNumericCell(a.$index,"powerDissipation")},blur:function(e){return t.handlePowerDissipationBlur(a.$index)}},model:{value:a.row.powerDissipation,callback:function(e){t.$set(a.row,"powerDissipation",e)},expression:"scope.row.powerDissipation"}})]}}],null,!1,2013801812)}),e("el-table-column",{attrs:{label:"型号"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("el-input",{class:{"changed-input":t.isCellChanged(a.row,"type")},staticStyle:{"max-width":"180px"},attrs:{size:"small",maxlength:20,disabled:t.isRowDisabled(a.row)},on:{input:function(e){return t.handleTypeCell(a.$index)}},model:{value:a.row.type,callback:function(e){t.$set(a.row,"type",e)},expression:"scope.row.type"}})]}}],null,!1,4182654038)}),e("el-table-column",{attrs:{label:"售价",width:"188"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("el-input",{class:{"changed-input":t.isCellChanged(a.row,"price")},staticStyle:{"max-width":"260px"},attrs:{size:"small",inputmode:"decimal",disabled:t.isRowDisabled(a.row)},on:{input:function(e){return t.handleNumericCell(a.$index,"price")},blur:function(e){return t.handlePriceBlur(a.$index)}},model:{value:a.row._priceEditing,callback:function(e){t.$set(a.row,"_priceEditing",e)},expression:"scope.row._priceEditing"}},[e("template",{slot:"append"},[e("el-select",{staticClass:"append-select append-select--coin",staticStyle:{width:"120px"},attrs:{size:"mini"},on:{change:function(e){return t.handlePayTypeChange(a.$index)}},model:{value:a.row._selectedPayIndex,callback:function(e){t.$set(a.row,"_selectedPayIndex",e)},expression:"scope.row._selectedPayIndex"}},t._l(a.row.priceList||[],function(t,a){return e("el-option",{key:t.payTypeId||a,attrs:{label:[String(t.chain||"").toUpperCase(),String(t.coin||"").toUpperCase()].filter(Boolean).join("-"),value:a}})}),1)],1)],2)]}}],null,!1,3035245774)},[e("template",{slot:"header"},[e("el-tooltip",{attrs:{effect:"dark",placement:"top"}},[e("div",{attrs:{slot:"content"},slot:"content"},[t._v(" 卖家最终收款金额 = 机器售价 × 波动率"),e("br"),t._v(" 波动率规则:"),e("br"),t._v(" 1)0% - 5%(包含5%):波动率 = 1(按售价结算)"),e("br"),t._v(" 2)5%以上:波动率 = 实际算力 / 理论算力,且不会超过 1,即最终结算时不会超过机器售价 ")]),e("i",{staticClass:"el-icon-question label-help",attrs:{"aria-label":"帮助",tabindex:"0"}})]),e("span",[t._v("售价(按结算币种)")])],1)],2),e("el-table-column",{attrs:{label:"最大租赁天数(天)",width:"100"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("el-input",{class:{"changed-input":t.isCellChanged(a.row,"maxLeaseDays")},staticStyle:{"max-width":"260px"},attrs:{size:"small",inputmode:"numeric",disabled:t.isRowDisabled(a.row)},on:{input:function(e){return t.handleMaxLeaseDaysInput(a.$index)},blur:function(e){return t.handleMaxLeaseDaysBlur(a.$index)}},model:{value:a.row.maxLeaseDays,callback:function(e){t.$set(a.row,"maxLeaseDays",e)},expression:"scope.row.maxLeaseDays"}},[e("template",{slot:"append"},[t._v("天")])],2)]}}],null,!1,3414109227)}),e("el-table-column",{attrs:{label:"上下架","min-width":"140"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("el-switch",{attrs:{"active-value":0,"inactive-value":1,"active-text":"上架","inactive-text":"下架",disabled:t.isRowDisabled(a.row)},on:{change:function(e){return t.handleStateChange(a.$index)}},model:{value:a.row.state,callback:function(e){t.$set(a.row,"state",e)},expression:"scope.row.state"}})]}}],null,!1,1620801377)}),e("el-table-column",{attrs:{label:"售出状态","min-width":"100"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("el-tag",{attrs:{type:0===a.row.saleState?"info":1===a.row.saleState?"danger":"warning"}},[t._v(" "+t._s(0===a.row.saleState?"未售出":1===a.row.saleState?"已售出":"售出中")+" ")])]}}],null,!1,1904393654)}),e("el-table-column",{attrs:{label:"操作",fixed:"right","min-width":"120"},scopedSlots:t._u([{key:"default",fn:function(a){return[e("el-button",{staticStyle:{color:"#f56c6c"},attrs:{type:"text",size:"small",disabled:t.isRowDisabled(a.row)},on:{click:function(e){return t.handleDeleteMachine(a.row)}}},[t._v("删除")])]}}],null,!1,979761678)})],1)],1):e("div",{staticClass:"empty-text"},[t._v("暂无组合数据")])]),t.machineList&&t.machineList.length?e("div",{staticClass:"actions"},[e("el-button",{attrs:{type:"primary"},on:{click:t.handleOpenConfirm}},[t._v("提交修改机器")])],1):t._e(),e("el-dialog",{attrs:{title:"确认提交修改",visible:t.confirmVisible,width:"520px"},on:{"update:visible":function(e){t.confirmVisible=e}}},[e("div",[e("p",[t._v("请仔细确认已选择机器机器组合里的机器价格及相关参数定义。")]),e("p",[t._v("机器修改上架后,一经售出,在机器出售期间不能修改价格及机器参数。")])]),e("span",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[e("el-button",{on:{click:function(e){t.confirmVisible=!1}}},[t._v("取消")]),e("el-button",{attrs:{type:"primary"},on:{click:t.handleSubmitMachines}},[t._v("确认提交修改")])],1)])],1)},e.Yp=[]},8475:function(t,e){"use strict";e.Yp=e.XX=void 0;e.XX=function(){var t=this,e=t._self._c;return e("div",{staticClass:"withdrawal-history-container"},[t._m(0),e("div",{staticClass:"tab-container"},[e("el-tabs",{on:{"tab-click":t.handleTabClick},model:{value:t.activeTab,callback:function(e){t.activeTab=e},expression:"activeTab"}},[e("el-tab-pane",{attrs:{label:"提现中",name:"pending"}},[e("div",{staticClass:"tab-content"},[e("div",{staticClass:"list-header"},[e("span",{staticClass:"list-title"},[t._v("提现中 ("+t._s(t.total)+")")]),e("el-button",{attrs:{type:"primary",size:"small"},on:{click:t.refreshData}},[e("i",{staticClass:"el-icon-refresh"}),t._v(" 刷新 ")])],1),e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],staticClass:"withdrawal-list"},[t._l(t.pendingWithdrawals,function(a){return e("div",{key:a.id,staticClass:"withdrawal-item pending",on:{click:function(e){return t.showDetail(a)}}},[e("div",{staticClass:"item-main"},[e("div",{staticClass:"item-left"},[e("div",{staticClass:"amount"},[t._v(t._s(a.amount)+" "+t._s(a.toSymbol||"USDT"))]),e("div",{staticClass:"chain"},[t._v(t._s(t.getChainName(a.toChain)))])]),e("div",{staticClass:"item-right"},[e("div",{staticClass:"status pending-status"},[e("i",{staticClass:"el-icon-loading"}),t._v(" "+t._s(t.getStatusText(a.status))+" ")]),e("div",{staticClass:"time"},[t._v(t._s(t.formatTime(a.createTime)))])])]),e("div",{staticClass:"item-footer"},[e("div",{staticClass:"footer-left"},[e("span",{staticClass:"address"},[t._v(t._s(t.formatAddress(a.toAddress)))]),a.txHash?e("span",{staticClass:"tx-hash"},[e("i",{staticClass:"el-icon-link"}),t._v(" "+t._s(t.formatAddress(a.txHash))+" ")]):t._e()]),e("i",{staticClass:"el-icon-arrow-right"})])])}),0===t.pendingWithdrawals.length?e("div",{staticClass:"empty-state"},[e("i",{staticClass:"el-icon-document"}),e("p",[t._v("暂无提现中的记录")])]):t._e()],2)])]),e("el-tab-pane",{attrs:{label:"提现成功",name:"success"}},[e("div",{staticClass:"tab-content"},[e("div",{staticClass:"list-header"},[e("span",{staticClass:"list-title"},[t._v("提现成功 ("+t._s(t.total)+")")]),e("el-button",{attrs:{type:"primary",size:"small"},on:{click:t.refreshData}},[e("i",{staticClass:"el-icon-refresh"}),t._v(" 刷新 ")])],1),e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],staticClass:"withdrawal-list"},[t._l(t.successWithdrawals,function(a){return e("div",{key:a.id,staticClass:"withdrawal-item success",on:{click:function(e){return t.showDetail(a)}}},[e("div",{staticClass:"item-main"},[e("div",{staticClass:"item-left"},[e("div",{staticClass:"amount"},[t._v(t._s(a.amount)+" "+t._s(a.toSymbol||"USDT"))]),e("div",{staticClass:"chain"},[t._v(t._s(t.getChainName(a.toChain)))])]),e("div",{staticClass:"item-right"},[e("div",{staticClass:"status success-status"},[e("i",{staticClass:"el-icon-check"}),t._v(" "+t._s(t.getStatusText(a.status))+" ")]),e("div",{staticClass:"time"},[t._v(t._s(t.formatTime(a.createTime)))])])]),e("div",{staticClass:"item-footer"},[e("div",{staticClass:"footer-left"},[e("span",{staticClass:"address"},[t._v(t._s(t.formatAddress(a.toAddress)))]),a.txHash?e("span",{staticClass:"tx-hash"},[e("i",{staticClass:"el-icon-link"}),t._v(" "+t._s(t.formatAddress(a.txHash))+" ")]):t._e()]),e("i",{staticClass:"el-icon-arrow-right"})])])}),0===t.successWithdrawals.length?e("div",{staticClass:"empty-state"},[e("i",{staticClass:"el-icon-document"}),e("p",[t._v("暂无提现成功的记录")])]):t._e()],2)])]),e("el-tab-pane",{attrs:{label:"提现失败",name:"failed"}},[e("div",{staticClass:"tab-content"},[e("div",{staticClass:"list-header"},[e("span",{staticClass:"list-title"},[t._v("提现失败 ("+t._s(t.total)+")")]),e("el-button",{attrs:{type:"primary",size:"small"},on:{click:t.refreshData}},[e("i",{staticClass:"el-icon-refresh"}),t._v(" 刷新 ")])],1),e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],staticClass:"withdrawal-list"},[t._l(t.failedWithdrawals,function(a){return e("div",{key:a.id,staticClass:"withdrawal-item failed",on:{click:function(e){return t.showDetail(a)}}},[e("div",{staticClass:"item-main"},[e("div",{staticClass:"item-left"},[e("div",{staticClass:"amount"},[t._v(t._s(a.amount)+" "+t._s(a.toSymbol||"USDT"))]),e("div",{staticClass:"chain"},[t._v(t._s(t.getChainName(a.toChain)))])]),e("div",{staticClass:"item-right"},[e("div",{staticClass:"status failed-status"},[e("i",{staticClass:"el-icon-close"}),t._v(" "+t._s(t.getStatusText(a.status))+" ")]),e("div",{staticClass:"time"},[t._v(t._s(t.formatTime(a.createTime)))])])]),e("div",{staticClass:"item-footer"},[e("div",{staticClass:"footer-left"},[e("span",{staticClass:"address"},[t._v(t._s(t.formatAddress(a.toAddress)))]),a.txHash?e("span",{staticClass:"tx-hash"},[e("i",{staticClass:"el-icon-link"}),t._v(" "+t._s(t.formatAddress(a.txHash))+" ")]):t._e()]),e("i",{staticClass:"el-icon-arrow-right"})])])}),0===t.failedWithdrawals.length?e("div",{staticClass:"empty-state"},[e("i",{staticClass:"el-icon-document"}),e("p",[t._v("暂无提现失败的记录")])]):t._e()],2)])])],1),e("el-row",[e("el-col",{staticStyle:{display:"flex","justify-content":"center"},attrs:{span:24}},[e("el-pagination",{staticStyle:{margin:"0 auto","margin-top":"10px"},attrs:{"current-page":t.currentPage,"page-sizes":t.pageSizes,"page-size":t.pagination.pageSize,layout:"total, sizes, prev, pager, next, jumper",total:t.total},on:{"size-change":t.handleSizeChange,"current-change":t.handleCurrentChange,"update:currentPage":function(e){t.currentPage=e},"update:current-page":function(e){t.currentPage=e}}})],1)],1)],1),e("el-dialog",{attrs:{title:"提现详情",visible:t.detailDialogVisible,width:"600px"},on:{"update:visible":function(e){t.detailDialogVisible=e},close:t.closeDetail}},[t.selectedItem?e("div",{staticClass:"detail-content"},[e("div",{staticClass:"detail-section"},[e("h3",{staticClass:"section-title"},[t._v("基本信息")]),e("div",{staticClass:"detail-list"},[e("div",{staticClass:"detail-row"},[e("span",{staticClass:"detail-label"},[t._v("提现ID")]),e("span",{staticClass:"detail-value"},[t._v(t._s(t.selectedItem.id))])]),e("div",{staticClass:"detail-row"},[e("span",{staticClass:"detail-label"},[t._v("提现金额")]),e("span",{staticClass:"detail-value amount"},[t._v(t._s(t.selectedItem.amount)+" "+t._s(t.selectedItem.toSymbol||"USDT"))])]),e("div",{staticClass:"detail-row"},[e("span",{staticClass:"detail-label"},[t._v("区块链网络")]),e("span",{staticClass:"detail-value"},[t._v(t._s(t.getChainName(t.selectedItem.toChain)))])]),e("div",{staticClass:"detail-row"},[e("span",{staticClass:"detail-label"},[t._v("提现状态")]),e("span",{staticClass:"detail-value"},[e("el-tag",{attrs:{type:t.getStatusType(t.selectedItem.status)}},[t._v(" "+t._s(t.getStatusText(t.selectedItem.status))+" ")])],1)])])]),e("div",{staticClass:"detail-section"},[e("h3",{staticClass:"section-title"},[t._v("地址信息")]),e("div",{staticClass:"detail-list"},[e("div",{staticClass:"detail-row"},[e("span",{staticClass:"detail-label"},[t._v("收款地址")]),e("div",{staticClass:"address-container"},[e("span",{staticClass:"detail-value address"},[t._v(t._s(t.selectedItem.toAddress))]),e("el-button",{attrs:{type:"text",size:"small"},on:{click:function(e){return t.copyAddress(t.selectedItem.toAddress)}}},[t._v(" 复制 ")])],1)]),e("div",{staticClass:"detail-row"},[e("span",{staticClass:"detail-label"},[t._v("交易哈希")]),e("div",{staticClass:"address-container"},[e("span",{staticClass:"detail-value address"},[t._v(t._s(t.selectedItem.txHash))]),t.selectedItem.txHash?e("el-button",{attrs:{type:"text",size:"small"},on:{click:function(e){return t.copyAddress(t.selectedItem.txHash)}}},[t._v(" 复制 ")]):t._e()],1)])])]),e("div",{staticClass:"detail-section"},[e("h3",{staticClass:"section-title"},[t._v("时间信息")]),e("div",{staticClass:"detail-list"},[e("div",{staticClass:"detail-row"},[e("span",{staticClass:"detail-label"},[t._v("提现时间")]),e("span",{staticClass:"detail-value"},[t._v(t._s(t.formatFullTime(t.selectedItem.createTime)))])]),t.selectedItem.updateTime?e("div",{staticClass:"detail-row"},[e("span",{staticClass:"detail-label"},[t._v("完成时间")]),e("span",{staticClass:"detail-value"},[t._v(t._s(t.formatFullTime(t.selectedItem.updateTime)))])]):t._e()])])]):t._e(),e("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[e("el-button",{on:{click:t.closeDetail}},[t._v("关闭")])],1)])],1)},e.Yp=[function(){var t=this,e=t._self._c;return e("div",{staticClass:"page-header"},[e("h1",{staticClass:"page-title"},[t._v("提现记录")]),e("p",{staticClass:"page-subtitle"},[t._v("查看您的提现申请和交易状态")])])}]},8603:function(t,e,a){"use strict";e.Yp=e.XX=void 0,a(8111),a(1701);e.XX=function(){var t=this,e=t._self._c;return e("div",{staticClass:"panel"},[e("h2",{staticClass:"panel-title page-title"},[t._v("钱包绑定")]),e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],staticClass:"panel-body"},[e("el-form",{staticClass:"config-form",attrs:{model:t.form,"label-width":"120px"}},[e("el-form-item",{attrs:{label:"选择链/币种"}},[e("el-cascader",{staticStyle:{width:"420px"},attrs:{options:t.options,props:t.cascaderProps,"show-all-levels":!1,clearable:"",filterable:""},on:{change:t.handleChange,"expand-change":t.handleExpandChange},scopedSlots:t._u([{key:"default",fn:function({node:a,data:s}){return[e("span",{staticClass:"custom-node",attrs:{"aria-label":"cascader-item",tabindex:"0"},on:{click:function(e){return e.stopPropagation(),t.handleItemClick(a,s)}}},[e("span",{staticClass:"node-label"},[t._v(t._s(s.label))]),a.isLeaf&&a.checked?e("span",{staticClass:"leaf-checked",attrs:{"aria-hidden":"true"}},[t._v("✓")]):t._e()])]}}]),model:{value:t.value,callback:function(e){t.value=e},expression:"value"}})],1),e("el-form-item",{attrs:{label:"已选择币种"}},[e("div",{staticClass:"selected-coins",attrs:{"aria-label":"selected-coins",tabindex:"0"}},[t._l(t.selectedCoins,function(a){return e("el-tag",{key:a,attrs:{type:"warning",effect:"light",closable:"","disable-transitions":""},on:{close:function(e){return t.handleRemoveSelectedCoin(a)}}},[t._v(" "+t._s(a)+" ")])}),0===t.selectedCoins.length?e("span",{staticClass:"placeholder"},[t._v("未选择")]):t._e()],2)]),e("el-form-item",{attrs:{label:"收款钱包地址"}},[e("el-input",{attrs:{placeholder:"请输入"},model:{value:t.form.payAddress,callback:function(e){t.$set(t.form,"payAddress",e)},expression:"form.payAddress"}})],1),e("el-form-item",[e("el-button",{staticStyle:{width:"200px"},attrs:{type:"primary"},on:{click:t.handleSave}},[t._v("确认绑定")])],1)],1),e("el-dialog",{attrs:{visible:t.preCheck.visible,width:"80vw","close-on-click-modal":!1,title:"检测到关联商品"},on:{"update:visible":function(e){return t.$set(t.preCheck,"visible",e)},close:t.handlePreCheckClose},scopedSlots:t._u([{key:"footer",fn:function(){return[e("el-button",{on:{click:function(e){t.preCheck.visible=!1}}},[t._v("取消")]),e("el-button",{attrs:{type:"primary",disabled:!t.canSubmitPreCheck},on:{click:t.handleConfirmBindAfterPreview}},[t._v("继续绑定")])]},proxy:!0}])},[e("div",{staticStyle:{"margin-bottom":"10px"}},[e("el-alert",{attrs:{type:"warning",closable:!1,"show-icon":"",description:"检测到以下商品与本次绑定的链/币相关。继续绑定后,可能需要为这些商品配置该新链下的价格。是否继续?"}})],1),e("p",{staticStyle:{color:"red","font-size":"12px","margin-top":"6px","text-align":"right"}},[t._v("* 请填写每个商品对应币种的价格,商品包含机器统一设置价格,如需单台修改请在商品列表-详情页操作")]),e("el-table",{attrs:{data:t.preCheck.rows,height:"360",border:"","header-cell-style":{textAlign:"left"},"cell-style":{textAlign:"left"}}},[e("el-table-column",{attrs:{label:"商品名称","min-width":"160"},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(t._s(e.row.name||e.row.productName||e.row.title||e.row.product||"-"))]}}])}),e("el-table-column",{attrs:{label:"链","min-width":"120"},scopedSlots:t._u([{key:"default",fn:function(){return[t._v(" "+t._s((t.form.chain||"").toUpperCase())+" ")]},proxy:!0}])}),e("el-table-column",{attrs:{label:"币种","min-width":"120"},scopedSlots:t._u([{key:"default",fn:function(){return[t._v(" "+t._s(t.form.payCoin.split(",").map(t=>t.trim().toUpperCase()).join(","))+" ")]},proxy:!0}])}),e("el-table-column",{attrs:{label:"总矿机数","min-width":"100"},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(t._s(null!=e.row.totalMachineNumber?e.row.totalMachineNumber:e.row.total||e.row.totalMachines||"-"))]}}])}),e("el-table-column",{attrs:{label:"商品状态","min-width":"100"},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(t._s(1===Number(e.row.state)?"下架":"上架"))]}}])}),t._l(t.coinsForBind,function(a){return e("el-table-column",{key:"price-"+a,attrs:{label:a+" 价格","min-width":"160"},scopedSlots:t._u([{key:"default",fn:function(s){return[e("el-input",{staticClass:"price-input",attrs:{size:"mini",placeholder:"请输入",inputmode:"decimal"},scopedSlots:t._u([{key:"append",fn:function(){return[t._v(t._s(a))]},proxy:!0}],null,!0),model:{value:t.preCheck.rowPrices[t.getRowKey(s.row,s.$index)][a],callback:function(e){t.$set(t.preCheck.rowPrices[t.getRowKey(s.row,s.$index)],a,e)},expression:"preCheck.rowPrices[getRowKey(scope.row, scope.$index)][sym]"}})]}}],null,!0)})})],2)],1)],1)])},e.Yp=[]},8732:function(t,e,a){"use strict";Object.defineProperty(e,"B",{value:!0}),e.A=void 0,a(4114),a(8111),a(2489),a(116),a(7588),a(1701),a(8237),a(3579),a(7642),a(8004),a(3853),a(5876),a(2475),a(5024),a(1698);var s=a(5844),i=a(4180),o=a(4981);e.A={name:"Cart",data(){return{loading:!1,shops:[],groups:[],selectedGroups:[],selectedMachinesMap:{},confirmDialog:{visible:!1,shops:[],count:0,totalsByCoin:{}},expandedGroupKeys:[],expandedShopKeys:[],creatingOrder:!1,successDialog:{visible:!1},noticeDialog:{visible:!1,checked:!1,countdown:5},noticeTimer:null,pendingCheckoutShop:null,pendingCheckoutAll:null,googleCodeDialog:{visible:!1,code:"",error:"",loading:!1},options:[],payDialog:{visible:!1,value:[],loading:!1},selectedChain:"",selectedCoin:"",selectedPrice:0,paySelectionMap:{},clearOffLoading:!1,settlementSuccessfulVisible:!1}},computed:{isAllSelected(){return this.selectedGroups.length&&this.selectedGroups.length===this.groups.length},isCartEmpty(){const t=Array.isArray(this.shops)&&this.shops.length>0,e=Array.isArray(this.groups)&&this.groups.length>0;return!t&&!e},selectedMachineCount(){return Object.values(this.selectedMachinesMap).reduce((t,e)=>t+(e?e.size:0),0)},selectedTotal(){let t=0;const e=e=>{const a=this.selectedMachinesMap[e.id],s=Array.isArray(e.productMachineDtoList)?e.productMachineDtoList:[];s.forEach(e=>{a&&a.has(e.id)&&(t+=Number(e.price||0)*Number(e.leaseTime||1))})};return Array.isArray(this.groups)&&this.groups.length?this.groups.forEach(e):Array.isArray(this.shops)&&this.shops.length&&this.shops.forEach(t=>(t.shoppingCartInfoDtoList||[]).forEach(e)),t},canCheckout(){return this.selectedMachineCount>0||this.selectedGroups.length>0},isGoogleCodeValid(){const t=this.googleCodeDialog.code;return/^\d{6}$/.test(t)},payCoinSymbol(){return(this.selectedCoin||"").toUpperCase()}},mounted(){this.fetchGetGoodsList()},watch:{"noticeDialog.visible"(t){if(t)this.startNoticeCountdown(),this.$nextTick(()=>this.reapplySelectionsForPendingShop());else if(this.noticeTimer){try{clearInterval(this.noticeTimer)}catch(e){}this.noticeTimer=null}},"confirmDialog.visible"(t){this.$nextTick(()=>this.reapplySelectionsForPendingShop())},"payDialog.visible"(t){this.$nextTick(()=>this.reapplySelectionsForPendingShop())},"googleCodeDialog.visible"(t){this.$nextTick(()=>this.reapplySelectionsForPendingShop())}},beforeDestroy(){try{this.noticeTimer&&clearInterval(this.noticeTimer)}catch(t){}this.noticeTimer=null},methods:{formatAmount(t,e){return(0,o.truncateAmountByCoin)(t,e)},formatNum6(t){return(0,o.truncateTo6)(t)},toCents(t){if(null===t||void 0===t)return 0;let e=String(t).trim();if(""===e)return 0;let a=1;"-"===e[0]&&(a=-1,e=e.slice(1));const s=e.split("."),i=parseInt(s[0]||"0",10)||0,o=(s[1]||"").replace(/[^0-9]/g,""),r=o.length>=2?o.slice(0,2):o.padEnd(2,"0"),n=100*i+(parseInt(r||"0",10)||0);return a*n},centsToText(t){const e=t<0?"-":"",a=Math.abs(Number(t)||0),s=Math.floor(a/100),i=String(a%100).padStart(2,"0");return`${e}${s}.${i}`},isRowSelectable(t,e){return!(1===Number(t&&t.del)||1===Number(t&&t.state))},isOnShelf(t){return!(1===Number(t&&t.del)||1===Number(t&&t.state))},getRowMaxLeaseDaysLocal(t){const e=t&&t.maxLeaseDays,a=Number(e);return Number.isFinite(a)?a<1?1:a>365?365:Math.floor(a):365},formatTrunc(t,e=2){const a=Number(t);if(!Number.isFinite(a))return"0";const s=Math.max(0,Number(e)||0),i=Math.pow(10,s),o=Math.trunc(a*i)/i,r=String(o);if(0===s)return r;const[n,l=""]=r.split("."),c=l.padEnd(s,"0");return`${n}.${c}`},async fetchChainAndListForSeller(t){if(!t)return this.options=[],void(this.loading=!1);this.loading=!0;const e=await(0,i.getChainAndListForSeller)({id:t});e&&(0===e.code||200===e.code)&&e.data&&(this.options=this.toUpperOptions(e.data)),this.loading=!1},toUpperOptions(t){const e=Array.isArray(t)?t:[];return e.map(t=>{const e={...t},a=t&&(null!=t.label?t.label:t.value)||"";return e.label=String(a).toUpperCase(),Array.isArray(t&&t.children)&&(e.children=this.toUpperOptions(t.children)),e})},getAllGroups(){return[]},getShopPayOptions(t){const e=Array.isArray(t&&t.payConfigList)?t.payConfigList:[];return e.map(t=>{const e=t&&t.payChain?String(t.payChain):"",a=t&&t.payCoin?String(t.payCoin):"",s=`${e}|${a}`;return{label:`${e} - ${this.toUpperText(a)}`,value:s,icon:t&&t.payCoinImage?t.payCoinImage:""}})},hasMachinePriceForSelection(t,e){if(!t||!e)return!1;const a=this.paySelectionMap[t.id]||"",[s,i]=String(a).split("|"),o=Array.isArray(e.priceList)?e.priceList:[];return o.some(t=>String(t.chain)===s&&String(t.coin)===i)},getSelectedCoinSymbolForShop(t){const e=this.paySelectionMap[t?t.id:void 0];if(!e)return"";const a=String(e).split("|");return this.toUpperText(a[1])},getSelectedCoinSymbolForShopHeader(){const t=Array.isArray(this.shops)&&this.shops.length?this.shops[0]:null;return t?(this.ensureDefaultPaySelection(t),this.getSelectedCoinSymbolForShop(t)):""},getSelectedPayIcon(t){if(!t)return"";this.ensureDefaultPaySelection(t);const e=this.paySelectionMap[t.id]||"",[a,s]=String(e).split("|"),i=Array.isArray(t&&t.payConfigList)?t.payConfigList:[],o=i.find(t=>String(t.payChain)===a&&String(t.payCoin)===s);return o&&o.payCoinImage?o.payCoinImage:""},ensureDefaultPaySelection(t){if(!t)return;const e=this.getShopPayOptions(t);e.length&&!this.paySelectionMap[t.id]&&this.$set(this.paySelectionMap,t.id,e[0].value)},handleShopPayChange(t,e){if(!t)return;this.$set(this.paySelectionMap,t.id,e);const a=this.selectedMachinesMap[t.id];if(a&&a.size){const e=Array.isArray(t.productMachineDtoList)?t.productMachineDtoList:[];e.forEach(e=>{a.has(e.id)&&!this.hasMachinePriceForSelection(t,e)&&a.delete(e.id)}),this.$nextTick(()=>this.applyInnerSelectionFromSet(t))}},displayShopTotalBySelection(t){if(!t)return 0;if(this.ensureDefaultPaySelection(t),this.isShopLeaseChanged(t))try{const e=Array.isArray(t.productMachineDtoList)?t.productMachineDtoList:[];let a=0;return e.forEach(e=>{const s=this.getMachineUnitPriceBySelection(t,e);if(null!=s){const t=Math.max(1,Math.floor(Number(e.leaseTime||1)));a+=this.toCents(s)*t}}),a/100}catch(r){}const e=this.paySelectionMap[t.id]||"",[a,s]=e.split("|"),i=Array.isArray(t.totalPriceList)?t.totalPriceList:[],o=i.find(t=>String(t.chain)===a&&String(t.coin)===s);return o&&null!=o.price?Number(o.price||0):Number(t.totalPrice||0)},isShopLeaseChanged(t){try{const e=Array.isArray(t&&t.productMachineDtoList)?t.productMachineDtoList:[];return e.some(t=>{const e=t&&null!=t._origLeaseTime?Number(t._origLeaseTime):Number(t&&t.leaseTime),a=Math.max(1,Math.floor(Number(t&&t.leaseTime)||1));return e!==a})}catch(e){return!1}},getMachineUnitPriceBySelection(t,e){if(!t||!e)return Number(e.price||0);this.ensureDefaultPaySelection(t);const a=this.paySelectionMap[t.id]||"",[s,i]=a.split("|"),o=Array.isArray(e.priceList)?e.priceList:[],r=o.find(t=>String(t.chain)===s&&String(t.coin)===i);return r&&null!=r.price?Number(r.price||0):null},isRowSelectableByShop(t,e){return!!this.isOnShelf(e)&&this.hasMachinePriceForSelection(t,e)},computeShopTotal(t){if(!t)return 0;const e=Array.isArray(t.productMachineDtoList)?t.productMachineDtoList:[];if(!e.length)return Number(t.totalPrice||0);let a=0;for(const s of e){const t=this.toCents(s&&s.price),e=Math.max(1,Math.floor(Number(s&&s.leaseTime)||1));a+=t*e}return a/100},computeShopTotalDisplay(t){const e=Array.isArray(t&&t.productMachineDtoList)?t.productMachineDtoList:[],a=Number(t&&t.totalPrice),s=Number.isFinite(a);let i=!1;for(const r of e){const t=r&&null!=r._origLeaseTime?Number(r._origLeaseTime):Number(r&&r.leaseTime),e=Math.max(1,Math.floor(Number(r&&r.leaseTime)||1));if(t!==e){i=!0;break}}if(s&&!i||!e.length&&s)return this.formatTrunc(a,2);let o=0;for(const r of e){const t=this.toCents(r&&r.price),e=Math.max(1,Math.floor(Number(r&&r.leaseTime)||1));o+=t*e}return this.centsToText(o)},buildDeletePayload(){const t=[],e=Array.isArray(this.shops)?this.shops:[];return e.forEach(e=>{const a=this.selectedMachinesMap[e.id];if(!a||0===a.size)return;const s=Array.isArray(e.productMachineDtoList)?e.productMachineDtoList:[];s.forEach(e=>{a.has(e.id)&&t.push({machineId:e.id,productId:e.productId})})}),t.filter(t=>t&&null!=t.machineId)},async fetchAddOrders(t,e){try{const a={code:e,orderInfoVoList:t},s=await(0,i.addOrders)(a);return s}catch(a){return{code:-1,msg:"网络异常",data:null}}},async fetchDeleteBatchGoods(t){try{const e=await(0,s.deleteBatchGoods)(t);return e}catch(e){return{code:-1,msg:"网络异常"}}},async handleClearOffShelf(){if(!this.clearOffLoading){this.clearOffLoading=!0;try{const t=await(0,s.deleteBatchGoodsForIsDelete)();t&&200===Number(t.code)?(this.$message({message:"已清除下架商品",type:"success",showClose:!0}),await this.fetchGetGoodsList()):this.$message({message:t&&t.msg||"清除失败",type:"error",showClose:!0})}catch(t){this.$message({message:"网络异常",type:"error",showClose:!0})}finally{this.clearOffLoading=!1}}},toUpperText(t){return null==t?"":String(t).toUpperCase()},handleOuterExpandChange(t,e){try{const t=Array.isArray(e)?e.map(t=>t&&(null!=t.id?String(t.id):void 0)).filter(Boolean):[];this.expandedGroupKeys=t}catch(a){this.expandedGroupKeys=[]}},handleShopExpandChange(t,e){try{const a=Array.isArray(e)?e.map(t=>t&&(null!=t.id?String(t.id):void 0)).filter(Boolean):[];this.expandedShopKeys=a;const s=a.includes(String(t.id));s&&this.$nextTick(()=>this.applyInnerSelectionFromSet(t))}catch(a){this.expandedShopKeys=[]}},async fetchGetGoodsList(t){try{this.loading=!0;const a=await(0,s.getGoodsList)(t),i=Array.isArray(a&&a.rows)?a.rows:Array.isArray(a&&a.data&&a.data.rows)?a.data.rows:Array.isArray(a&&a.data)?a.data:[];if(!i||0===i.length)return this.shops=[],this.groups=[],this.expandedShopKeys=[],this.expandedGroupKeys=[],this.selectedMachinesMap={},this.selectedGroups=[],void window.dispatchEvent(new CustomEvent("cart-updated",{detail:{count:0}}));if(i.length&&i[0].productMachineDtoList){const t=i.map((t,e)=>({...t,id:null!=t.id?String(t.id):`shop-${e}`}));try{t.forEach(t=>this.ensureDefaultPaySelection(t))}catch(e){}try{t.forEach(t=>{const e=Array.isArray(t.productMachineDtoList)?t.productMachineDtoList:[];e.forEach(t=>{t&&null==t._origLeaseTime&&(t._origLeaseTime=Number(t.leaseTime||1))})})}catch(e){}this.shops=t,this.groups=[],this.expandedGroupKeys=[];try{this.expandedShopKeys=t.map(t=>String(t.id))}catch(e){this.expandedShopKeys=[]}const a=t.reduce((t,e)=>t+(Array.isArray(e.productMachineDtoList)?e.productMachineDtoList.length:0),0);return void window.dispatchEvent(new CustomEvent("cart-updated",{detail:{count:a}}))}const o=i.map((t,e)=>({...t,id:t&&(null!=t.id?t.id:null!=t.productId?t.productId:`g-${e}`)}));this.groups=o,this.shops=[],this.expandedShopKeys=[],this.expandedGroupKeys=(this.expandedGroupKeys||[]).filter(t=>o.some(e=>String(e.id)===String(t)));try{const t=o.reduce((t,e)=>t+(Array.isArray(e.productMachineDtoList)?e.productMachineDtoList.length:0),0);window.dispatchEvent(new CustomEvent("cart-updated",{detail:{count:t}}))}catch(e){}}catch(e){console.log(e,"e")}finally{this.loading=!1}},handleGroupSelectionChange(){},handleGroupSelectionChangeForShop(){},applyInnerSelection(t,e,a=0){const s=this.$refs["innerTable-"+t.id],i=Array.isArray(t.productMachineDtoList)?t.productMachineDtoList:[];if(s&&"function"===typeof s.clearSelection){try{s.clearSelection()}catch(o){}e&&i.forEach(t=>{try{s.toggleRowSelection(t,!0)}catch(o){}})}else a>=5||this.$nextTick(()=>this.applyInnerSelection(t,e,a+1))},applyInnerSelectionFromSet(t,e=0){if(!t)return;const a=this.$refs["innerTable-"+t.id],s=Array.isArray(t.productMachineDtoList)?t.productMachineDtoList:[],i=this.selectedMachinesMap[t.id];if(a&&"function"===typeof a.clearSelection){try{a.clearSelection()}catch(o){}i&&i.size&&s.forEach(t=>{if(i.has(t.id))try{a.toggleRowSelection(t,!0)}catch(o){}})}else e>=5||this.$nextTick(()=>this.applyInnerSelectionFromSet(t,e+1))},reapplySelectionsForPendingShop(){const t=this.pendingCheckoutShop&&this.pendingCheckoutShop.shop;t&&this.applyInnerSelectionFromSet(t)},handleShopInnerSelectionChange(t,e){const a=new Set((e||[]).map(t=>t.id));this.$set(this.selectedMachinesMap,t.id,a)},toggleSelectAll(){const t=this.$refs.outerTable;t&&(this.isAllSelected?t.clearSelection():this.groups.forEach(e=>t.toggleRowSelection(e,!0)))},calcGroupTotal(t){const e=Array.isArray(t&&t.productMachineDtoList)?t.productMachineDtoList:[];return e.reduce((t,e)=>{const a=Number(e.price||0),s=Number(e.leaseTime||1);return t+a*s},0)},countMachines(t){const e=Array.isArray(t&&t.shoppingCartInfoDtoList)?t.shoppingCartInfoDtoList:[];return e.reduce((t,e)=>t+(Array.isArray(e.productMachineDtoList)?e.productMachineDtoList.length:0),0)},async handleCheckoutShop(t){if(!t)return;const e=t.id,a=Array.isArray(t.productMachineDtoList)?t.productMachineDtoList:[];if(0===a.length)return void this.$message({message:"该店铺暂无可结算的机器",type:"warning",showClose:!0});const s=Array.isArray(this.expandedShopKeys)&&this.expandedShopKeys.includes(String(e)),i=[];if(s){const t=this.selectedMachinesMap[e];if(!t||0===t.size)return void this.$message({message:"请先在该店铺下勾选要结算的机器",type:"warning",showClose:!0});if(a.forEach(a=>{t.has(a.id)&&this.isOnShelf(a)&&i.push({leaseTime:Number(a.leaseTime||1),machineId:a.id,productId:a.productId,shopId:e})}),!i.length)return void this.$message({message:"所选机器均已下架,无法结算",type:"warning",showClose:!0})}else{const t=a.filter(t=>this.isOnShelf(t));if(!t.length)return void this.$message({message:"该店铺暂无上架机器可结算",type:"warning",showClose:!0});t.forEach(t=>{i.push({leaseTime:Number(t.leaseTime||1),machineId:t.id,productId:t.productId,shopId:e})})}await this.fetchChainAndListForSeller(e),this.pendingCheckoutShop={shop:t,payload:i},this.noticeDialog.visible=!0,this.noticeDialog.checked=!1,this.startNoticeCountdown()},async executeCheckout(t){if(!this.pendingCheckoutShop&&!this.pendingCheckoutAll)return;let e=[];if(this.pendingCheckoutAll&&this.pendingCheckoutAll.length)this.pendingCheckoutAll.forEach(({shop:t,items:a})=>{(a||[]).forEach(a=>{const s=this.paySelectionMap[t.id]||"",[i,o]=String(s).split("|");e.push({leaseTime:Number(a.leaseTime||1),machineId:a.id,productId:a.productId,shopId:t.id,chain:i,coin:o})})});else if(this.pendingCheckoutShop){const{payload:t}=this.pendingCheckoutShop;e=(Array.isArray(t)?t:[]).map(t=>{const e=this.paySelectionMap[t.shopId]||this.paySelectionMap[this.pendingCheckoutShop.shop.id]||"",[a,s]=String(e).split("|");return{...t,chain:a,coin:s}})}this.creatingOrder=!0;try{const a=await this.fetchAddOrders(e,t);let s=!1;if(a&&200===Number(a.code)){const t=String(a.data||"");s=t.includes("成功"),this.$message({message:"结算成功,订单状态请在订单列表中查看",type:"success",duration:3e3,showClose:!0}),this.settlementSuccessfulVisible=!0}s?await this.fetchGetGoodsList():this.reapplySelectionsForPendingShop()}catch(a){console.log("网络错误,请重试"),this.reapplySelectionsForPendingShop()}finally{this.creatingOrder=!1,this.pendingCheckoutShop=null,this.pendingCheckoutAll=null}},handleCheckoutSelected(){if(!this.selectedMachineCount)return void this.$message({message:"请先勾选要结算的机器",type:"warning",showClose:!0});const t=Array.isArray(this.shops)?this.shops:[],e=[];t.forEach(t=>{const a=this.selectedMachinesMap[t.id];if(!a||!a.size)return;const s=Array.isArray(t.productMachineDtoList)?t.productMachineDtoList:[],i=s.filter(t=>a.has(t.id)&&this.isOnShelf(t));i.length&&e.push({shop:t,items:i})}),e.length?(this.pendingCheckoutAll=e,this.noticeDialog.visible=!0,this.noticeDialog.checked=!1,this.startNoticeCountdown()):this.$message({message:"未找到可结算的上架机器",type:"warning",showClose:!0})},handleRemoveSelectedMachines(){const t=this.buildDeletePayload();t.length?this.$confirm("确定删除所选机器吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(async()=>{const e=await this.fetchDeleteBatchGoods(t);if(e&&200===Number(e.code)){this.$message({message:"已删除选中的机器",type:"success",duration:3e3,showClose:!0}),await this.fetchGetGoodsList(),this.selectedMachinesMap={},this.selectedGroups=[];try{this.getAllGroups().forEach(t=>{const e=this.$refs["innerTable-"+t.id];if(e&&"function"===typeof e.clearSelection)try{e.clearSelection()}catch(a){}})}catch(a){}}}).catch(()=>null):this.$message({message:"请先勾选需要删除的机器或商品",type:"warning",showClose:!0})},confirmPay(){this.confirmDialog.visible=!1,this.showGoogleCodeDialog()},handleCloseSuccessDialog(){try{this.settlementSuccessfulVisible=!1}catch(t){}this.$router.push({path:"/account/orders",query:{status:"7"}})},startNoticeCountdown(){try{this.noticeTimer&&clearInterval(this.noticeTimer)}catch(t){}this.noticeDialog.countdown=5,this.noticeTimer=setInterval(()=>{this.noticeDialog.countdown>0?this.noticeDialog.countdown-=1:(clearInterval(this.noticeTimer),this.noticeTimer=null)},1e3)},handleNoticeAcknowledge(){if(!(this.noticeDialog.countdown>0))if(this.noticeDialog.checked)if(this.noticeDialog.visible=!1,this.$nextTick(()=>this.reapplySelectionsForPendingShop()),this.pendingCheckoutAll&&this.pendingCheckoutAll.length)this.showConfirmDialogAll();else{try{const t=this.pendingCheckoutShop&&this.pendingCheckoutShop.shop;if(t){const e=this.paySelectionMap[t.id]||"",[a,s]=String(e).split("|");this.selectedChain=a||"",this.selectedCoin=s||""}else this.selectedChain="",this.selectedCoin=""}catch(t){this.selectedChain="",this.selectedCoin=""}this.showConfirmDialog()}else this.$message({message:'请先勾选"我已阅读并同意上述注意事项"',type:"warning",showClose:!0})},openPaySelectDialog(){},showConfirmDialog(){if(!this.pendingCheckoutShop)return;const{shop:t,payload:e}=this.pendingCheckoutShop;this.$nextTick(()=>this.reapplySelectionsForPendingShop());const a=Array.isArray(t.productMachineDtoList)?t.productMachineDtoList:[],s=(new Map,new Set(e.map(t=>t.machineId))),i=[];a.forEach(e=>{if(s.has(e.id)&&this.isOnShelf(e)){const a=this.getMachineUnitPriceBySelection(t,e);if(null==a)return;const s=Math.max(1,Math.floor(Number(e.leaseTime||1))),o=Number(a||0),r=Number(o)*s;i.push({product:t.name||"",coin:this.toUpperText(this.selectedCoin||""),user:e.user,miner:e.miner,unitPrice:Number(o||0),leaseTime:s,subtotal:Number(r||0)})}});const o=this.paySelectionMap[t.id]||"",[r,n]=String(o).split("|"),l=this.toUpperText(n||""),c=`${r} - ${l}`,d=Array.isArray(t&&t.payConfigList)?t.payConfigList:[],u=d.find(t=>String(t&&t.payChain).toUpperCase()===String(r).toUpperCase()&&String(t&&t.payCoin).toUpperCase()===String(n).toUpperCase()),h=Number(u&&u.deductibleAmount||0),p=Number(u&&u.fee||0),m=i.reduce((t,e)=>t+Number(e.subtotal||0),0),g=m>=h||h<=0,f={shopId:t.id,shopName:t.name||"",coinSymbol:l,payLabel:c,items:i,deductibleAmount:h,fee:p,enough:g,groupSubtotal:m};this.confirmDialog.shops=[f],this.confirmDialog.count=i.length;const y={},v=(t,e)=>t+this.toCents(e);if(l){let t=i.reduce((t,e)=>v(t,e.subtotal||0),0);!g&&p>0&&(t+=this.toCents(p)),y[l]=Number(this.centsToText(t))}this.confirmDialog.totalsByCoin=y,this.confirmDialog.visible=!0},showConfirmDialogAll(){const t=[],e=new Map;let a=0;const s=Array.isArray(this.shops)?this.shops:[];s.forEach(s=>{const i=this.selectedMachinesMap[s.id];if(!i||!i.size)return;const o=this.paySelectionMap[s.id]||"",[r,n]=String(o).split("|"),l=this.toUpperText(n||""),c=`${r} - ${l}`,d=Array.isArray(s&&s.payConfigList)?s.payConfigList:[],u=d.find(t=>String(t&&t.payChain).toUpperCase()===String(r).toUpperCase()&&String(t&&t.payCoin).toUpperCase()===String(n).toUpperCase()),h=Number(u&&u.deductibleAmount||0),p=Number(u&&u.fee||0),m=[],g=Array.isArray(s.productMachineDtoList)?s.productMachineDtoList:[];let f=0;if(g.forEach(t=>{if(!i.has(t.id)||!this.isOnShelf(t))return;const o=this.getMachineUnitPriceBySelection(s,t);if(null==o)return;const r=Math.max(1,Math.floor(Number(t.leaseTime||1))),n=Number(o||0),c=Number(n)*r;m.push({product:s.name||"",coin:l,user:t.user,miner:t.miner,unitPrice:n,leaseTime:r,subtotal:c}),f+=c;const d=e.get(l)||0;e.set(l,d+this.toCents(c)),a+=1}),m.length){const a=f>=h||h<=0;if(!a&&p>0){const t=e.get(l)||0;e.set(l,t+this.toCents(p))}t.push({shopId:s.id,shopName:s.name||"",coinSymbol:l,payLabel:c,items:m,deductibleAmount:h,fee:p,enough:a,groupSubtotal:f})}});const i={};e.forEach((t,e)=>{i[e]=Number(this.centsToText(t))}),this.confirmDialog.shops=t,this.confirmDialog.count=a,this.confirmDialog.totalsByCoin=i,this.confirmDialog.visible=!0},showGoogleCodeDialog(){this.googleCodeDialog.visible=!0,this.googleCodeDialog.code="",this.googleCodeDialog.error="",this.googleCodeDialog.loading=!1,this.$nextTick(()=>{this.$refs.googleCodeInput&&this.$refs.googleCodeInput.focus()})},handleGoogleCodeInput(t){this.googleCodeDialog.code=t.replace(/\D/g,""),this.googleCodeDialog.error&&(this.googleCodeDialog.error="")},async handleGoogleCodeSubmit(){if(this.isGoogleCodeValid){this.googleCodeDialog.loading=!0,this.googleCodeDialog.error="";try{await this.executeCheckout(this.googleCodeDialog.code),this.googleCodeDialog.visible=!1}catch(t){this.googleCodeDialog.error="验证码错误,请重新输入"}finally{this.googleCodeDialog.loading=!1}}else this.googleCodeDialog.error="请输入6位数字验证码"},handleGoogleCodeCancel(){this.googleCodeDialog.visible=!1,this.googleCodeDialog.code="",this.googleCodeDialog.error="",this.googleCodeDialog.loading=!1,this.reapplySelectionsForPendingShop(),this.pendingCheckoutShop=null},handleLeaseTimeChange(t){t.leaseTime<1?t.leaseTime=1:t.leaseTime>365?t.leaseTime=365:t.leaseTime=Math.floor(t.leaseTime)},handleLeaseTimeInput(t,e){if(""===e||null===e||void 0===e)return void(t.leaseTime=1);const a=Number(e);isNaN(a)?t.leaseTime=1:t.leaseTime=a%1===0?a<1?1:a>365?365:a:Math.floor(a)},handleProductExpandChange(t,e,a){const s=this.$refs["productTable-"+(t&&t.id)];if(!s||!e)return;const i=s.selection||[],o=Array.isArray(i)&&i.some(t=>t&&t.id===e.id);o&&this.$nextTick(()=>{this.applyInnerSelection(e,!0)})},isProductSelected(t,e){const a=this.$refs["productTable-"+(t&&t.id)];if(!a||!e)return!1;const s=a.selection||[];return Array.isArray(s)&&s.some(t=>t&&t.id===e.id)},formatPayTooltip(t){return`${t.payChain} - ${this.toUpperText(t.payCoin)}`}}}},8874:function(t,e,a){"use strict";a.r(e),a.d(e,{__esModule:function(){return i.B},default:function(){return l}});var s=a(4571),i=a(1867),o=i.A,r=a(845),n=(0,r.A)(o,s.XX,s.Yp,!1,null,"592f2fb3",null),l=n.exports},8967:function(t,e,a){"use strict";a.r(e),a.d(e,{__esModule:function(){return i.B},default:function(){return l}});var s=a(3375),i=a(2935),o=i.A,r=a(845),n=(0,r.A)(o,s.XX,s.Yp,!1,null,"5400b150",null),l=n.exports},9072:function(t,e,a){"use strict";a.r(e),a.d(e,{__esModule:function(){return i.B},default:function(){return l}});var s=a(2172),i=a(6616),o=i.A,r=a(845),n=(0,r.A)(o,s.XX,s.Yp,!1,null,"75ddb61b",null),l=n.exports},9146:function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=void 0,a(4114);var s=a(9662);e["default"]={name:"ProductList",data(){return{products:[],loading:!1,powerList:[],currencyList:[{path:"nexaAccess",value:"nexa",label:"nexa",imgUrl:"https://m2pool.com/img/nexa.png",name:"course.NEXAcourse",show:!0,amount:1e4},{path:"grsAccess",value:"grs",label:"grs",imgUrl:"https://m2pool.com/img/grs.svg",name:"course.GRScourse",show:!0,amount:1},{path:"monaAccess",value:"mona",label:"mona",imgUrl:"https://m2pool.com/img/mona.svg",name:"course.MONAcourse",show:!0,amount:1},{path:"dgbsAccess",value:"dgbs",label:"dgb(skein)",imgUrl:"https://m2pool.com/img/dgb.svg",name:"course.dgbsCourse",show:!0,amount:1},{path:"dgbqAccess",value:"dgbq",label:"dgb(qubit)",imgUrl:"https://m2pool.com/img/dgb.svg",name:"course.dgbqCourse",show:!0,amount:1},{path:"dgboAccess",value:"dgbo",label:"dgb(odocrypt)",imgUrl:"https://m2pool.com/img/dgb.svg",name:"course.dgboCourse",show:!0,amount:1},{path:"rxdAccess",value:"rxd",label:"radiant(rxd)",imgUrl:"https://m2pool.com/img/rxd.png",name:"course.RXDcourse",show:!0,amount:100},{path:"enxAccess",value:"enx",label:"Entropyx(enx)",imgUrl:"https://m2pool.com/img/enx.svg",name:"course.ENXcourse",show:!0,amount:5e3},{path:"alphminingPool",value:"alph",label:"alephium",imgUrl:"https://m2pool.com/img/alph.svg",name:"course.alphCourse",show:!0,amount:1}],screenCurrency:"",searchAlgorithm:"",params:{coin:"",algorithm:""},productListLoading:!1}},mounted(){this.fetchGetList()},methods:{formatPriceRange(t){try{if(null===t||void 0===t)return"0.00";const e=String(t);if(e.includes("-")){const[t,a]=e.split("-");return`${this._truncate2(t)}-${this._truncate2(a)}`}return this._truncate2(e)}catch(e){return"0.00"}},_truncate2(t){if(null===t||void 0===t)return"0.00";const e=String(t).trim();if(!e)return"0.00";const[a,s=""]=e.split("."),i=s.slice(0,2);return`${a}.${i.padEnd(2,"0")}`},handleCurrencyChange(t){try{if(void 0===t||null===t||""===t)return;this.params.coin=t;const e=(this.searchAlgorithm||"").trim(),a=e?{coin:t,algorithm:e}:{coin:t};this.fetchGetList(a)}catch(e){console.error("处理币种变更失败",e)}},async fetchGetList(t){this.productListLoading=!0;try{const e=await(0,s.getProductList)(t);console.log("API响应:",e),e&&200===e.code?(this.products=e.rows||[],console.log("商品数据:",this.products)):(console.error("API返回错误:",e),this.products=[])}catch(e){console.error("获取商品列表失败:",e),this.products=[],this.products=[]}this.productListLoading=!1},handleAlgorithmSearch(){const t=(this.searchAlgorithm||"").trim(),e={...this.params};t?(e.algorithm=t,this.params.algorithm=t):(delete e.algorithm,this.params.algorithm=""),e.algorithm?this.fetchGetList({...e,coin:this.screenCurrency||void 0}):this.fetchGetList(this.screenCurrency?{coin:this.screenCurrency}:void 0)},handleCurrencyClear(){this.screenCurrency="",this.params.coin="";const t=(this.searchAlgorithm||"").trim();t?this.fetchGetList({algorithm:t}):this.fetchGetList()},handleAlgorithmClear(){this.searchAlgorithm="",this.params.algorithm="";const t=this.screenCurrency;t?this.fetchGetList({coin:t}):this.fetchGetList()},handleProductClick(t){(t.id||0==t.id)&&this.$router.push(`/product/${t.id}`)}}}},9197:function(t,e,a){"use strict";a.r(e),a.d(e,{default:function(){return n}});var s=a(1968),i=a(845),o={},r=(0,i.A)(o,s.XX,s.Yp,!1,null,null,null),n=r.exports},9252:function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.coinList=void 0;e.coinList=[{path:"nexaAccess",value:"nexa",label:"nexa",imgUrl:"https://m2pool.com/img/nexa.png",name:"course.NEXAcourse",show:!0,amount:1e4},{path:"grsAccess",value:"grs",label:"grs",imgUrl:"https://m2pool.com/img/grs.svg",name:"course.GRScourse",show:!0,amount:1},{path:"monaAccess",value:"mona",label:"mona",imgUrl:"https://m2pool.com/img/mona.svg",name:"course.MONAcourse",show:!0,amount:1},{path:"dgbsAccess",value:"dgbs",label:"dgb(skein)",imgUrl:"https://m2pool.com/img/dgb.svg",name:"course.dgbsCourse",show:!0,amount:1},{path:"dgbqAccess",value:"dgbq",label:"dgb(qubit)",imgUrl:"https://m2pool.com/img/dgb.svg",name:"course.dgbqCourse",show:!0,amount:1},{path:"dgboAccess",value:"dgbo",label:"dgb(odocrypt)",imgUrl:"https://m2pool.com/img/dgb.svg",name:"course.dgboCourse",show:!0,amount:1},{path:"rxdAccess",value:"rxd",label:"radiant(rxd)",imgUrl:"https://m2pool.com/img/rxd.png",name:"course.RXDcourse",show:!0,amount:100},{path:"enxAccess",value:"enx",label:"Entropyx(enx)",imgUrl:"https://m2pool.com/img/enx.svg",name:"course.ENXcourse",show:!0,amount:5e3},{path:"alphminingPool",value:"alph",label:"alephium",imgUrl:"https://m2pool.com/img/alph.svg",name:"course.alphCourse",show:!0,amount:1}]},9266:function(t,e,a){"use strict";a.r(e),a.d(e,{__esModule:function(){return i.B},default:function(){return l}});var s=a(3574),i=a(346),o=i.A,r=a(845),n=(0,r.A)(o,s.XX,s.Yp,!1,null,"538996de",null),l=n.exports},9325:function(t,e,a){"use strict";var s=a(3999)["default"];Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=void 0;var i=s(a(5471)),o=s(a(1973)),r=a(3723);i.default.use(o.default);const n=new o.default({mode:"history",base:"/",routes:r.mainRoutes});n.beforeEach((t,e,a)=>{t.meta&&t.meta.title?document.title=`${t.meta.title} - Power Leasing`:document.title="Power Leasing - 电商系统",t.meta&&t.meta.allAuthority&&console.log(`访问页面: ${t.meta.title}, 权限: ${t.meta.allAuthority.join(", ")}`),a()}),n.onError(t=>{console.error("路由错误:",t)});e["default"]=n},9526:function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=void 0;e["default"]={401:"认证失败,无法访问系统资源,请重新登录",403:"当前操作没有权限",404:"访问资源不存在",default:"系统未知错误,请反馈给管理员"}},9628:function(t,e){"use strict";e.Yp=e.XX=void 0;e.XX=function(){var t=this,e=t._self._c;return e("div",{staticClass:"checkout-page"},[e("h1",{staticClass:"page-title"},[t._v("订单结算")]),t.loading?e("div",{staticClass:"loading"},[e("el-loading-spinner"),t._v(" 加载中... ")],1):0===t.cartItems.length?e("div",{staticClass:"empty-cart"},[e("div",{staticClass:"empty-icon"},[t._v("🛒")]),e("h2",[t._v("购物车是空的")]),e("p",[t._v("请先添加商品到购物车")]),e("router-link",{staticClass:"shop-now-btn",attrs:{to:"/productList"}},[t._v(" 去购物 ")])],1):e("div",{staticClass:"checkout-content"},[e("div",{staticClass:"order-summary"},[e("h2",{staticClass:"section-title"},[t._v("订单摘要")]),e("div",{staticClass:"order-items"},t._l(t.cartItems,function(a){return e("div",{key:a.id,staticClass:"order-item"},[e("div",{staticClass:"item-image"},[e("img",{attrs:{src:a.image,alt:a.title}})]),e("div",{staticClass:"item-info"},[e("h3",{staticClass:"item-title"},[t._v(t._s(a.title))]),e("div",{staticClass:"item-price"},[t._v("¥"+t._s(a.price))])]),e("div",{staticClass:"item-quantity"},[e("span",{staticClass:"quantity-label"},[t._v("数量:")]),e("span",{staticClass:"quantity-value"},[t._v(t._s(a.quantity))])]),e("div",{staticClass:"item-total"},[e("span",{staticClass:"total-label"},[t._v("小计:")]),e("span",{staticClass:"total-price"},[t._v("¥"+t._s((a.price*a.quantity).toFixed(2)))])])])}),0),e("div",{staticClass:"order-total"},[e("div",{staticClass:"total-row"},[e("span",[t._v("商品总数:")]),e("span",[t._v(t._s(t.summary.totalQuantity)+" 件")])]),e("div",{staticClass:"total-row"},[e("span",[t._v("商品种类:")]),e("span",[t._v(t._s(t.cartItems.length)+" 种")])]),e("div",{staticClass:"total-row final-total"},[e("span",[t._v("订单总计:")]),e("span",{staticClass:"final-amount"},[t._v("¥"+t._s(t.summary.totalPrice.toFixed(2)))])])])]),e("div",{staticClass:"checkout-form"},[e("h2",{staticClass:"section-title"},[t._v("收货信息")]),e("form",{staticClass:"form",on:{submit:function(e){return e.preventDefault(),t.handleSubmit.apply(null,arguments)}}},[e("div",{staticClass:"form-row"},[e("div",{staticClass:"form-group"},[e("label",{staticClass:"form-label",attrs:{for:"name"}},[t._v("收货人姓名 *")]),e("input",{directives:[{name:"model",rawName:"v-model",value:t.form.name,expression:"form.name"}],staticClass:"form-input",attrs:{id:"name",type:"text",required:"",placeholder:"请输入收货人姓名","aria-describedby":"name-error"},domProps:{value:t.form.name},on:{input:function(e){e.target.composing||t.$set(t.form,"name",e.target.value)}}}),t.errors.name?e("div",{staticClass:"error-message",attrs:{id:"name-error"}},[t._v(" "+t._s(t.errors.name)+" ")]):t._e()]),e("div",{staticClass:"form-group"},[e("label",{staticClass:"form-label",attrs:{for:"phone"}},[t._v("联系电话 *")]),e("input",{directives:[{name:"model",rawName:"v-model",value:t.form.phone,expression:"form.phone"}],staticClass:"form-input",attrs:{id:"phone",type:"tel",required:"",placeholder:"请输入联系电话","aria-describedby":"phone-error"},domProps:{value:t.form.phone},on:{input:function(e){e.target.composing||t.$set(t.form,"phone",e.target.value)}}}),t.errors.phone?e("div",{staticClass:"error-message",attrs:{id:"phone-error"}},[t._v(" "+t._s(t.errors.phone)+" ")]):t._e()])]),e("div",{staticClass:"form-group"},[e("label",{staticClass:"form-label",attrs:{for:"address"}},[t._v("收货地址 *")]),e("textarea",{directives:[{name:"model",rawName:"v-model",value:t.form.address,expression:"form.address"}],staticClass:"form-textarea",attrs:{id:"address",rows:"3",required:"",placeholder:"请输入详细收货地址","aria-describedby":"address-error"},domProps:{value:t.form.address},on:{input:function(e){e.target.composing||t.$set(t.form,"address",e.target.value)}}}),t.errors.address?e("div",{staticClass:"error-message",attrs:{id:"address-error"}},[t._v(" "+t._s(t.errors.address)+" ")]):t._e()]),e("div",{staticClass:"form-group"},[e("label",{staticClass:"form-label",attrs:{for:"note"}},[t._v("备注")]),e("textarea",{directives:[{name:"model",rawName:"v-model",value:t.form.note,expression:"form.note"}],staticClass:"form-textarea",attrs:{id:"note",rows:"2",placeholder:"可选:订单备注信息"},domProps:{value:t.form.note},on:{input:function(e){e.target.composing||t.$set(t.form,"note",e.target.value)}}})]),e("div",{staticClass:"form-actions"},[e("router-link",{staticClass:"back-btn",attrs:{to:"/cart"}},[t._v(" 返回购物车 ")]),e("button",{staticClass:"submit-btn",attrs:{type:"submit",disabled:t.submitting,"aria-label":"提交订单"}},[t.submitting?e("span",[t._v("提交中...")]):e("span",[t._v("提交订单")])])],1)])])])])},e.Yp=[]},9660:function(t,e,a){"use strict";Object.defineProperty(e,"B",{value:!0}),e.A=void 0;var s=a(4180);e.A={name:"AccountOrderDetail",data(){return{loading:!1,order:{},items:[]}},created(){this.load()},methods:{async load(){const t=this.$route.params.id;if(t)try{this.loading=!0;const e=await(0,s.getOrdersByIds)({orderId:t}),a=null!=(e&&e.data)?e.data:e;let i={};Array.isArray(a)&&a.length?i=a[0]:a&&"object"===typeof a?i=a:Array.isArray(e&&e.rows)&&e.rows.length&&(i=e.rows[0]),this.order=i||{},this.items=Array.isArray(i&&i.orderItemDtoList)?i.orderItemDtoList:[]}catch(e){console.log("获取订单详情失败")}finally{this.loading=!1}else this.$message({message:"订单ID缺失",type:"error",showClose:!0})},getOrderStatusText(t){const e=Number(t);return 7===e?"进行中":8===e?"已完成":String(null==t?"":t)},formatDateTime(t){if(!t)return"—";try{const e=String(t);return e.includes("T")?e.replace("T"," "):e}catch(e){return String(t)}}}}},9662:function(t,e,a){"use strict";var s=a(3999)["default"];Object.defineProperty(e,"__esModule",{value:!0}),e.createProduct=r,e.deleteProduct=c,e.getList=o,e.getMachineInfo=d,e.getMachineInfoById=p,e.getOwnedById=h,e.getOwnedList=u,e.getPayTypes=m,e.getProductList=n,e.updateProduct=l;var i=s(a(5720));function o(t){return(0,i.default)({url:"/lease/product/getList",method:"get",data:t})}function r(t){return(0,i.default)({url:"/lease/product/add",method:"post",data:t})}function n(t){return(0,i.default)({url:"/lease/product/getList",method:"post",data:t})}function l(t){return(0,i.default)({url:"/lease/product/update",method:"post",data:t})}function c(t){return(0,i.default)({url:"/lease/product/delete",method:"post",data:{id:t}})}function d(t){return(0,i.default)({url:"/lease/product/getMachineInfo",method:"post",data:t})}function u(t){return(0,i.default)({url:"/lease/product/getOwnedList",method:"post",data:t})}function h(t){return(0,i.default)({url:"/lease/product/getOwnedById",method:"post",data:t})}function p(t){return(0,i.default)({url:"/lease/product/getMachineInfoById",method:"post",data:t})}function m(t){return(0,i.default)({url:"/lease/product/getPayTypes",method:"post",data:t})}},9690:function(t,e){"use strict";e.Yp=e.XX=void 0;e.XX=function(){var t=this,e=t._self._c;return e("div",{staticClass:"orders-page"},[e("h2",{staticClass:"title"},[t._v("已售出订单")]),e("el-tabs",{on:{"tab-click":t.handleTabClick},model:{value:t.active,callback:function(e){t.active=e},expression:"active"}},[e("el-tab-pane",{attrs:{label:"订单进行中",name:"7"}},[e("order-list",{attrs:{items:t.orders[7],"show-checkout":!1,"empty-text":"暂无进行中的订单"}})],1),e("el-tab-pane",{attrs:{label:"订单已完成",name:"8"}},[e("order-list",{attrs:{items:t.orders[8],"show-checkout":!1,"empty-text":"暂无已完成的订单"}})],1)],1)],1)},e.Yp=[]},9814:function(t,e,a){"use strict";Object.defineProperty(e,"B",{value:!0}),e.A=void 0,a(4114),a(8111),a(7588),a(8237);var s=a(5952),i=a(6067),o=a(5844);e.A={name:"Header",data(){return{user:null,cart:[],cartServerCount:0,navigation:i.mainNavigation}},computed:{cartItemCount(){return Number.isFinite(this.cartServerCount)?this.cartServerCount:0},breadcrumbs(){return(0,i.getBreadcrumb)(this.$route.path)}},watch:{},mounted(){this.loadCart(),window.addEventListener("storage",this.handleStorageChange),this.loadServerCartCount(),window.addEventListener("cart-updated",this.handleCartUpdated)},beforeDestroy(){window.removeEventListener("storage",this.handleStorageChange),window.removeEventListener("cart-updated",this.handleCartUpdated)},methods:{loadCart(){this.cart=(0,s.readCart)()},async loadServerCartCount(){try{const t=await(0,o.getGoodsList)(),e=Array.isArray(t&&t.rows)?t.rows:Array.isArray(t&&t.data&&t.data.rows)?t.data.rows:Array.isArray(t&&t.data)?t.data:Array.isArray(t)?t:[];let a=[];Array.isArray(e)&&e.length?Array.isArray(e[0]&&e[0].shoppingCartInfoDtoList)?e.forEach(t=>{Array.isArray(t&&t.shoppingCartInfoDtoList)&&a.push(...t.shoppingCartInfoDtoList)}):a=e:Array.isArray(t&&t.shoppingCartInfoDtoList)&&(a=t.shoppingCartInfoDtoList);let s=0;a.length?s=a.reduce((t,e)=>t+(Array.isArray(e&&e.productMachineDtoList)?e.productMachineDtoList.length:0),0):Array.isArray(t&&t.productMachineDtoList)&&(s=t.productMachineDtoList.length),this.cartServerCount=Number.isFinite(s)?s:0}catch(t){}},handleStorageChange(t){"power_leasing_cart_v1"===t.key&&(this.loadCart(),this.loadServerCartCount())},handleCartUpdated(t){try{const e=t&&t.detail&&Number(t.detail.count);if(Number.isFinite(e))return void(this.cartServerCount=e)}catch(e){}this.loadServerCartCount()},handleLogout(){this.user=null,this.cart=[]},getBreadcrumbPath(t){const e=["/productList","/cart","/checkout"];return 0===t?"/productList":t=o)&&Object.keys(a.O).every(function(t){return a.O[t](s[l])})?s.splice(l--,1):(n=!1,o0&&t[d-1][2]>o;d--)t[d]=t[d-1];t[d]=[s,i,o]}}(),function(){a.d=function(t,e){for(var s in e)a.o(e,s)&&!a.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:e[s]})}}(),function(){a.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"===typeof window)return window}}()}(),function(){a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)}}(),function(){a.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}}(),function(){a.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t}}(),function(){a.p="/"}(),function(){var t={524:0};a.O.j=function(e){return 0===t[e]};var e=function(e,s){var i,o,r=s[0],n=s[1],l=s[2],c=0;if(r.some(function(e){return 0!==t[e]})){for(i in n)a.o(n,i)&&(a.m[i]=n[i]);if(l)var d=l(a)}for(e&&e(s);c\n
\n \n
\n

新增商品

\n

创建新的商品信息

\n
\n \n \n \n \n \n \n\n \n \n \n 矿机\n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n\n \n \n\n\n \n \n\n \n \n\n \n \n\n \n \n \n 上架\n 下架\n \n \n\n \n \n
\n 创建商品\n 重置\n 取消\n
\n
\n
\n
\n
\n\n\n\n\n ","\n\n\n\n\n","/**\r\n * 全局输入表情符号拦截守卫(极简,无侵入)\r\n * 作用:拦截所有原生 input/textarea 的输入事件,移除 Emoji,并重新派发 input 事件以同步 v-model\r\n * 注意:\r\n * - 跳过正在输入法合成阶段(compositionstart ~ compositionend),避免影响中文输入\r\n * - 默认对所有可编辑 input/textarea 生效;如需个别放行,可在元素上加 data-allow-emoji=\"true\"\r\n */\r\nexport const initNoEmojiGuard = () => {\r\n if (typeof window === 'undefined') return\r\n if (window.__noEmojiGuardInitialized) return\r\n window.__noEmojiGuardInitialized = true\r\n\r\n // 覆盖常见 Emoji、旗帜、杂项符号、ZWJ、变体选择符、组合键帽\r\n const emojiPattern = /[\\u{1F300}-\\u{1FAFF}]|[\\u{1F1E6}-\\u{1F1FF}]|[\\u{2600}-\\u{26FF}]|[\\u{2700}-\\u{27BF}]|[\\u{FE0F}]|[\\u{200D}]|[\\u{20E3}]/gu\r\n\r\n /**\r\n * 判断是否是需要拦截的可编辑元素\r\n * @param {EventTarget} el 事件目标\r\n * @returns {boolean}\r\n */\r\n const isEditableTarget = (el) => {\r\n if (!el || !(el instanceof Element)) return false\r\n if (el.getAttribute && el.getAttribute('data-allow-emoji') === 'true') return false\r\n const tag = el.tagName\r\n if (tag === 'INPUT') {\r\n const type = (el.getAttribute('type') || 'text').toLowerCase()\r\n // 排除不会产生文本的类型\r\n const disallow = ['checkbox', 'radio', 'file', 'hidden', 'button', 'submit', 'reset', 'range', 'color', 'date', 'datetime-local', 'month', 'time', 'week']\r\n return disallow.indexOf(type) === -1\r\n }\r\n if (tag === 'TEXTAREA') return true\r\n return false\r\n }\r\n\r\n // 记录输入法合成状态\r\n const setComposing = (el, composing) => {\r\n try { el.__noEmojiComposing = composing } catch (e) {}\r\n }\r\n const isComposing = (el) => !!(el && el.__noEmojiComposing)\r\n\r\n // 结束合成时做一次清洗\r\n document.addEventListener('compositionstart', (e) => {\r\n if (!isEditableTarget(e.target)) return\r\n setComposing(e.target, true)\r\n }, true)\r\n document.addEventListener('compositionend', (e) => {\r\n if (!isEditableTarget(e.target)) return\r\n setComposing(e.target, false)\r\n sanitizeAndRedispatch(e.target)\r\n }, true)\r\n\r\n // 主输入拦截:捕获阶段尽早处理\r\n document.addEventListener('input', (e) => {\r\n const target = e.target\r\n if (!isEditableTarget(target)) return\r\n if (isComposing(target)) return\r\n sanitizeAndRedispatch(target)\r\n }, true)\r\n\r\n /**\r\n * 清洗目标元素的值并在变更时重新派发 input 事件\r\n * @param {HTMLInputElement|HTMLTextAreaElement} target\r\n */\r\n function sanitizeAndRedispatch(target) {\r\n const before = String(target.value ?? '')\r\n if (!before) return\r\n if (!emojiPattern.test(before)) return\r\n const selectionStart = target.selectionStart\r\n const selectionEnd = target.selectionEnd\r\n const after = before.replace(emojiPattern, '')\r\n if (after === before) return\r\n target.value = after\r\n try {\r\n // 重置光标,尽量贴近原位置\r\n if (typeof selectionStart === 'number' && typeof selectionEnd === 'number') {\r\n const removed = before.length - after.length\r\n const nextPos = Math.max(0, selectionStart - removed)\r\n target.setSelectionRange(nextPos, nextPos)\r\n }\r\n } catch (e) {}\r\n // 重新派发 input 事件以同步 v-model\r\n const evt = new Event('input', { bubbles: true })\r\n target.dispatchEvent(evt)\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=3ba79d9c&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=3ba79d9c&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3ba79d9c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"cart-page\"},[_c('h1',{staticClass:\"page-title\"},[_vm._v(\"购物车\")]),(_vm.loading)?_c('div',{staticClass:\"loading\"},[_c('i',{staticClass:\"el-icon-loading\",attrs:{\"aria-label\":\"加载中\",\"role\":\"img\"}}),_vm._v(\" 加载中... \")]):(_vm.isCartEmpty)?_c('div',{staticClass:\"empty-cart\"},[_c('div',{staticClass:\"empty-icon\"},[_vm._v(\"🛒\")]),_c('h2',[_vm._v(\"购物车是空的\")]),_c('p',[_vm._v(\"快去添加一些商品吧!\")]),_c('router-link',{staticClass:\"shop-now-btn\",attrs:{\"to\":\"/productList\"}},[_vm._v(\" 去购物 \")])],1):_c('div',{staticClass:\"cart-content\"},[_c('p',{staticStyle:{\"color\":\"#9E44F1\",\"font-size\":\"14px\",\"margin-bottom\":\"10px\"}},[_vm._v(\"注意:各店铺支持多种支付方式,请选择店铺支付方式后提交订单结算\")]),_c('el-table',{ref:\"shopTable\",staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.shops,\"border\":\"\",\"row-key\":'id',\"expand-row-keys\":_vm.expandedShopKeys,\"header-cell-style\":{ textAlign: 'left' },\"cell-style\":{ textAlign: 'left' }},on:{\"expand-change\":_vm.handleGuardExpand}},[_c('el-table-column',{attrs:{\"type\":\"expand\",\"width\":\"46\",\"expandable\":() => false},scopedSlots:_vm._u([{key:\"default\",fn:function(shopScope){return [_c('el-table',{ref:'innerTable-' + shopScope.row.id,staticStyle:{\"width\":\"100%\"},attrs:{\"data\":shopScope.row.productMachineDtoList || [],\"size\":\"small\",\"border\":\"\",\"row-key\":'id',\"reserve-selection\":\"\",\"header-cell-style\":{ textAlign: 'left' },\"cell-style\":{ textAlign: 'left' }},on:{\"selection-change\":sels => _vm.handleShopInnerSelectionChange(shopScope.row, sels)}},[_c('el-table-column',{attrs:{\"type\":\"selection\",\"width\":\"46\",\"selectable\":row => _vm.isRowSelectableByShop(shopScope.row, row)}}),_c('el-table-column',{attrs:{\"prop\":\"name\",\"label\":\"商品名称\"}}),_c('el-table-column',{attrs:{\"prop\":\"miner\",\"label\":\"机器编号\"}}),_c('el-table-column',{attrs:{\"prop\":\"algorithm\",\"label\":\"算法\"}}),_c('el-table-column',{attrs:{\"prop\":\"powerDissipation\",\"label\":\"功耗(kw/h)\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"num-strong\"},[(_vm.formatNum6(scope.row.powerDissipation).truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatNum6(scope.row.powerDissipation).full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatNum6(scope.row.powerDissipation).text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatNum6(scope.row.powerDissipation).text))])],1)]}}],null,true)}),_c('el-table-column',{attrs:{\"prop\":\"theoryPower\",\"label\":\"理论算力\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"num-strong\"},[(_vm.formatNum6(scope.row.theoryPower).truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatNum6(scope.row.theoryPower).full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatNum6(scope.row.theoryPower).text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatNum6(scope.row.theoryPower).text))])],1),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(scope.row.theoryPower),expression:\"scope.row.theoryPower\"}]},[_vm._v(\" \"+_vm._s(scope.row.unit)+\" \")])]}}],null,true)}),_c('el-table-column',{attrs:{\"prop\":\"computingPower\",\"label\":\"实际算力\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"num-strong\"},[(_vm.formatNum6(scope.row.computingPower).truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatNum6(scope.row.computingPower).full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatNum6(scope.row.computingPower).text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatNum6(scope.row.computingPower).text))])],1),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(scope.row.computingPower),expression:\"scope.row.computingPower\"}]},[_vm._v(\" \"+_vm._s(scope.row.unit)+\" \")])]}}],null,true)}),_c('el-table-column',{attrs:{\"prop\":\"theoryIncome\",\"label\":\"单机理论收入(每日/币种)\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"num-strong\"},[(_vm.formatNum6(scope.row.theoryIncome).truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatNum6(scope.row.theoryIncome).full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatNum6(scope.row.theoryIncome).text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatNum6(scope.row.theoryIncome).text))])],1),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(scope.row.coin),expression:\"scope.row.coin\"}]},[_vm._v(\" \"+_vm._s(_vm.toUpperText(scope.row.coin))+\" \")])]}}],null,true)}),_c('el-table-column',{attrs:{\"prop\":\"theoryUsdtIncome\",\"label\":\"单机理论收入(每日/USDT)\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"num-strong\"},[(_vm.formatNum6(scope.row.theoryUsdtIncome).truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatNum6(scope.row.theoryUsdtIncome).full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatNum6(scope.row.theoryUsdtIncome).text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatNum6(scope.row.theoryUsdtIncome).text))])],1)]}}],null,true)}),_c('el-table-column',{attrs:{\"prop\":\"price\",\"width\":\"120\"},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_vm._v(\"单价(\"+_vm._s(_vm.getSelectedCoinSymbolForShop(shopScope.row) || 'USDT')+\")\")]},proxy:true},{key:\"default\",fn:function(scope){return [(_vm.getMachineUnitPriceBySelection(shopScope.row, scope.row) != null)?[_c('span',{staticClass:\"price-strong\"},[(_vm.formatAmount(_vm.getMachineUnitPriceBySelection(shopScope.row, scope.row), _vm.getSelectedCoinSymbolForShop(shopScope.row)).truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatAmount(_vm.getMachineUnitPriceBySelection(shopScope.row, scope.row), _vm.getSelectedCoinSymbolForShop(shopScope.row)).full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatAmount(_vm.getMachineUnitPriceBySelection(shopScope.row, scope.row), _vm.getSelectedCoinSymbolForShop(shopScope.row)).text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(\" \"+_vm._s(_vm.formatAmount(_vm.getMachineUnitPriceBySelection(shopScope.row, scope.row), _vm.getSelectedCoinSymbolForShop(shopScope.row)).text)+\" \")])],1)]:[_vm._v(\"-\")]]}}],null,true)}),_c('el-table-column',{attrs:{\"label\":\"租赁天数\",\"width\":\"145\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-input-number',{attrs:{\"min\":1,\"max\":_vm.getRowMaxLeaseDaysLocal(scope.row),\"precision\":0,\"step\":1,\"size\":\"mini\",\"controls-position\":\"right\"},on:{\"change\":function($event){return _vm.handleLeaseTimeChange(scope.row)},\"input\":function($event){return _vm.handleLeaseTimeInput(scope.row, $event)}},model:{value:(scope.row.leaseTime),callback:function ($$v) {_vm.$set(scope.row, \"leaseTime\", $$v)},expression:\"scope.row.leaseTime\"}})]}}],null,true)}),_c('el-table-column',{attrs:{\"label\":\"最大可租(天)\",\"min-width\":\"60\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(scope.row.maxLeaseDays != null ? scope.row.maxLeaseDays : ''))]}}],null,true)}),_c('el-table-column',{attrs:{\"label\":\"机器状态\",\"width\":\"110\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-tag',{attrs:{\"type\":(Number(scope.row.del) === 1 || Number(scope.row.state) === 1) ? 'info' : 'success'}},[_vm._v(\" \"+_vm._s((Number(scope.row.del) === 1 || Number(scope.row.state) === 1) ? '下架' : '上架')+\" \")])]}}],null,true)}),_c('el-table-column',{attrs:{\"min-width\":\"120\"},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_vm._v(\"机器总价(\"+_vm._s(_vm.getSelectedCoinSymbolForShop(shopScope.row) || 'USDT')+\")\")]},proxy:true},{key:\"default\",fn:function(scope){return [(_vm.getMachineUnitPriceBySelection(shopScope.row, scope.row) != null)?[_c('span',{staticClass:\"price-strong\"},[(_vm.formatAmount(_vm.getMachineUnitPriceBySelection(shopScope.row, scope.row) * Number(scope.row.leaseTime || 1), _vm.getSelectedCoinSymbolForShop(shopScope.row)).truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatAmount(_vm.getMachineUnitPriceBySelection(shopScope.row, scope.row) * Number(scope.row.leaseTime || 1), _vm.getSelectedCoinSymbolForShop(shopScope.row)).full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatAmount(_vm.getMachineUnitPriceBySelection(shopScope.row, scope.row) * Number(scope.row.leaseTime || 1), _vm.getSelectedCoinSymbolForShop(shopScope.row)).text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(\" \"+_vm._s(_vm.formatAmount(_vm.getMachineUnitPriceBySelection(shopScope.row, scope.row) * Number(scope.row.leaseTime || 1), _vm.getSelectedCoinSymbolForShop(shopScope.row)).text)+\" \")])],1)]:[_vm._v(\"-\")]]}}],null,true)})],1)]}}])}),_c('el-table-column',{attrs:{\"prop\":\"name\",\"label\":\"店铺名称\"}}),_c('el-table-column',{attrs:{\"prop\":\"totalMachine\",\"label\":\"机器总数\"}}),_c('el-table-column',{attrs:{\"prop\":\"totalPrice\"},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_vm._v(\" 总价(\"+_vm._s(_vm.getSelectedCoinSymbolForShopHeader())+\") \")]},proxy:true},{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"price-strong\"},[(_vm.formatAmount(_vm.displayShopTotalBySelection(scope.row), _vm.getSelectedCoinSymbolForShop(scope.row)).truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatAmount(_vm.displayShopTotalBySelection(scope.row), _vm.getSelectedCoinSymbolForShop(scope.row)).full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatAmount(_vm.displayShopTotalBySelection(scope.row), _vm.getSelectedCoinSymbolForShop(scope.row)).text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(\" \"+_vm._s(_vm.formatAmount(_vm.displayShopTotalBySelection(scope.row), _vm.getSelectedCoinSymbolForShop(scope.row)).text)+\" \")])],1)]}}])}),_c('el-table-column',{attrs:{\"label\":\"支付方式\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-select',{staticStyle:{\"min-width\":\"180px\"},attrs:{\"placeholder\":\"请选择\",\"size\":\"mini\"},on:{\"change\":val => _vm.handleShopPayChange(scope.row, val)},scopedSlots:_vm._u([{key:\"prefix\",fn:function(){return [(_vm.getSelectedPayIcon(scope.row))?_c('img',{staticStyle:{\"width\":\"16px\",\"height\":\"16px\",\"margin-right\":\"6px\",\"border-radius\":\"3px\"},attrs:{\"src\":_vm.getSelectedPayIcon(scope.row),\"alt\":_vm.getSelectedCoinSymbolForShop(scope.row)}}):_vm._e()]},proxy:true}],null,true),model:{value:(_vm.paySelectionMap[scope.row.id]),callback:function ($$v) {_vm.$set(_vm.paySelectionMap, scope.row.id, $$v)},expression:\"paySelectionMap[scope.row.id]\"}},_vm._l((_vm.getShopPayOptions(scope.row)),function(opt,idx){return _c('el-option',{key:idx,attrs:{\"value\":opt.value,\"label\":opt.label}},[_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\",\"gap\":\"8px\"}},[_c('img',{staticStyle:{\"width\":\"18px\",\"height\":\"18px\",\"border-radius\":\"3px\"},attrs:{\"src\":opt.icon,\"alt\":opt.label}}),_c('span',[_vm._v(_vm._s(opt.label))])])])}),1)]}}])})],1),_c('div',{staticClass:\"summary-actions\",staticStyle:{\"margin-top\":\"16px\",\"display\":\"flex\",\"gap\":\"12px\",\"justify-content\":\"flex-end\"}},[_c('div',{staticClass:\"summary-inline\",staticStyle:{\"color\":\"#666\"}},[_vm._v(\" 已选机器:\"),_c('b',[_vm._v(_vm._s(_vm.selectedMachineCount))]),_vm._v(\" 台 \"),_c('span',{staticStyle:{\"margin-left\":\"12px\"}},[_vm._v(\"金额合计(USDT):\")]),_c('span',{staticClass:\"price-strong\"},[(_vm.formatAmount(_vm.selectedTotal, 'USDT').truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatAmount(_vm.selectedTotal, 'USDT').full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatAmount(_vm.selectedTotal, 'USDT').text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatAmount(_vm.selectedTotal, 'USDT').text))])],1)]),_c('div',{staticClass:\"actions-inline\",staticStyle:{\"display\":\"flex\",\"gap\":\"12px\"}},[_c('el-button',{attrs:{\"type\":\"danger\",\"disabled\":!_vm.selectedMachineCount},on:{\"click\":_vm.handleRemoveSelectedMachines}},[_vm._v(\"删除所选机器\")]),_c('el-button',{attrs:{\"type\":\"warning\",\"plain\":\"\",\"loading\":_vm.clearOffLoading},on:{\"click\":_vm.handleClearOffShelf}},[_vm._v(\"清除已下架商品\")]),_c('el-button',{attrs:{\"type\":\"primary\",\"disabled\":!_vm.selectedMachineCount},on:{\"click\":_vm.handleCheckoutSelected}},[_vm._v(\"结算选中机器\")])],1)]),_c('el-dialog',{attrs:{\"visible\":_vm.confirmDialog.visible,\"width\":\"80vw\",\"close-on-click-modal\":false,\"title\":`确认结算(共 ${_vm.confirmDialog.count} 台机器)`},on:{\"update:visible\":function($event){return _vm.$set(_vm.confirmDialog, \"visible\", $event)}},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [_c('el-button',{on:{\"click\":function($event){_vm.confirmDialog.visible=false}}},[_vm._v(\"取消\")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.confirmPay}},[_vm._v(\"确认结算\")])]},proxy:true}])},[_c('div',[_vm._l((_vm.confirmDialog.shops),function(grp){return _c('div',{key:grp.shopId,staticStyle:{\"margin-bottom\":\"18px\"}},[_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"space-between\",\"margin\":\"8px 0 6px 0\"}},[_c('div',{staticStyle:{\"font-weight\":\"600\",\"color\":\"#2c3e50\"}},[_vm._v(\" 店铺:\"+_vm._s(grp.shopName || grp.shopId)+\" \"),_c('span',{staticStyle:{\"margin-left\":\"12px\",\"color\":\"#666\",\"font-weight\":\"400\"}},[_vm._v(\"支付方式:\"+_vm._s(grp.payLabel))])]),_c('div',[(grp.coinSymbol)?[(grp.enough)?_c('span',{staticStyle:{\"color\":\"#16a34a\",\"font-weight\":\"600\"}},[_vm._v(\" 已满足起付额 \"+_vm._s(_vm.formatAmount(grp.deductibleAmount || 0, grp.coinSymbol).text)+\" \")]):_c('span',{staticStyle:{\"color\":\"#ef4444\",\"font-weight\":\"600\"}},[_vm._v(\" 金额不足最低起付额 \"+_vm._s(_vm.formatAmount(grp.deductibleAmount || 0, grp.coinSymbol).text)+\" ,收取手续费 \"+_vm._s(_vm.formatAmount(grp.fee || 0, grp.coinSymbol).text)+\" \")])]:_vm._e()],2)]),_c('el-table',{attrs:{\"data\":grp.items,\"max-height\":\"260\",\"border\":\"\",\"stripe\":\"\",\"header-cell-style\":{ textAlign: 'left' },\"cell-style\":{ textAlign: 'left' }}},[_c('el-table-column',{attrs:{\"prop\":\"product\",\"label\":\"商品\",\"min-width\":\"160\"}}),_c('el-table-column',{attrs:{\"prop\":\"coin\",\"label\":\"币种\",\"min-width\":\"100\"}}),_c('el-table-column',{attrs:{\"prop\":\"user\",\"label\":\"账户\",\"min-width\":\"120\"}}),_c('el-table-column',{attrs:{\"prop\":\"miner\",\"label\":\"机器编号\",\"min-width\":\"160\"}}),_c('el-table-column',{attrs:{\"prop\":\"unitPrice\",\"min-width\":\"140\"},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_vm._v(\"单价(\"+_vm._s(grp.coinSymbol || 'USDT')+\")\")]},proxy:true},{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"price-strong\"},[(_vm.formatAmount(scope.row.unitPrice, grp.coinSymbol).truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatAmount(scope.row.unitPrice, grp.coinSymbol).full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatAmount(scope.row.unitPrice, grp.coinSymbol).text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatAmount(scope.row.unitPrice, grp.coinSymbol).text))])],1)]}}],null,true)}),_c('el-table-column',{attrs:{\"prop\":\"leaseTime\",\"label\":\"租赁天数\",\"min-width\":\"120\"}}),_c('el-table-column',{attrs:{\"prop\":\"subtotal\",\"min-width\":\"140\"},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_vm._v(\"小计(\"+_vm._s(grp.coinSymbol || 'USDT')+\")\")]},proxy:true},{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"price-strong\"},[(_vm.formatAmount(scope.row.subtotal, grp.coinSymbol).truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatAmount(scope.row.subtotal, grp.coinSymbol).full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatAmount(scope.row.subtotal, grp.coinSymbol).text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatAmount(scope.row.subtotal, grp.coinSymbol).text))])],1)]}}],null,true)})],1)],1)}),_c('div',{staticStyle:{\"margin-top\":\"12px\",\"text-align\":\"right\"}},[_c('span',{staticStyle:{\"margin-right\":\"8px\"}},[_vm._v(\"总金额:\")]),(Object.keys(_vm.confirmDialog.totalsByCoin || {}).length)?_vm._l((_vm.confirmDialog.totalsByCoin),function(amt,coin){return _c('span',{key:coin,staticStyle:{\"margin-left\":\"12px\"}},[_vm._v(\" \"+_vm._s(coin)+\": \"),_c('span',{staticClass:\"price-strong\"},[(_vm.formatAmount(amt, coin).truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatAmount(amt, coin).full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatAmount(amt, coin).text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatAmount(amt, coin).text))])],1)])}):[_vm._v(\"-\")]],2)],2)]),_c('el-dialog',{attrs:{\"visible\":_vm.noticeDialog.visible,\"width\":\"680px\",\"title\":\"下单须知\",\"show-close\":false,\"close-on-click-modal\":false,\"close-on-press-escape\":false},on:{\"update:visible\":function($event){return _vm.$set(_vm.noticeDialog, \"visible\", $event)}},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [_c('el-button',{attrs:{\"type\":\"primary\",\"disabled\":_vm.noticeDialog.countdown > 0},on:{\"click\":_vm.handleNoticeAcknowledge}},[_vm._v(\" 同意并下单\"+_vm._s(_vm.noticeDialog.countdown > 0 ? `(${_vm.noticeDialog.countdown}s)` : '')+\" \")])]},proxy:true}])},[_c('div',{staticClass:\"notice-content\"},[_c('p',{staticClass:\"notice-title\"},[_vm._v(\"尊敬的客户,感谢您选择我们的服务。在您下单前,请务必仔细阅读并完全理解以下须知条款。一旦您点击\\\" 同意并下单\\\"或完成支付流程,即视为您已充分阅读、理解并同意接受本须知的全部内容约束。\")]),_c('ol',{staticClass:\"notice-list\"},[_c('li',[_c('b',[_vm._v(\"预授权冻结:\")]),_vm._v(\"为保障订单顺利执行,在下单成功后,系统将立即对您数字钱包或账户中与订单全款总额等值的资金进行预授权冻结。此操作并非即时划转,而是为确保您有足够的资金用于每日支付。\")]),_c('li',[_c('b',[_vm._v(\"每日结算支付:\")]),_vm._v(\"本服务采用\\\"按日结算\\\"模式。冻结的资金将根据租赁协议约定的每日费用,每日自动划转相应的金额给卖家。划转操作通常在每个UTC日结束时自动执行。\")]),_c('li',[_c('b',[_vm._v(\"资金解冻:\")]),_vm._v(\"当租赁服务到期或因其他原因终止后,系统中剩余的、未被划转的冻结资金将立即解除冻结,并返还至您的可用余额中。\")]),_c('li',[_c('b',[_vm._v(\"订单生效:\")]),_vm._v(\" 您的订单在支付流程完成且资金成功冻结后立即生效。系统将开始为您配置相应的矿机或算力资源。\")]),_c('li',[_c('b',[_vm._v(\"不可取消政策:\")]),_vm._v(\" 鉴于算力服务一经提供即无法退回的特性,所有订单一旦生效,即不可取消、不可退款、不可转让。您无法在租赁期内单方面中止服务或要求退还已冻结及已支付的费用。\")]),_c('li',[_c('b',[_vm._v(\"免责声明:\")]),_vm._v(\"因不可抗力(如自然灾害、政策变动等)导致订单延迟或无法履行,我们不承担相应责任。\")]),_c('li',[_c('b',[_vm._v(\"算力波动:\")]),_vm._v(\"您所租赁的算力产生的收益取决于区块链网络难度、全球总算力、币价波动、矿池运气等多种外部因素。我们仅提供稳定的算力输出,不对您的最终收益做出任何承诺或保证。\")])]),_c('p',{staticClass:\"notice-title\"},[_vm._v(\"再次提醒:数字资产挖矿存在较高市场风险,收益波动巨大,过去业绩不代表未来表现。请根据自身的风险承受能力谨慎决策。您下单的行为即代表您已充分了解并自愿承担所有相关风险。\")]),_c('div',{staticClass:\"notice-ack\"},[_c('el-checkbox',{staticStyle:{\"color\":\"#e74c3c\"},model:{value:(_vm.noticeDialog.checked),callback:function ($$v) {_vm.$set(_vm.noticeDialog, \"checked\", $$v)},expression:\"noticeDialog.checked\"}},[_vm._v(\"我已阅读并同意上述注意事项\")])],1)])]),_c('el-dialog',{attrs:{\"visible\":_vm.googleCodeDialog.visible,\"width\":\"480px\",\"title\":\"安全验证\",\"show-close\":false,\"close-on-click-modal\":false,\"close-on-press-escape\":false},on:{\"update:visible\":function($event){return _vm.$set(_vm.googleCodeDialog, \"visible\", $event)}},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [_c('div',{staticClass:\"dialog-footer\"},[_c('el-button',{on:{\"click\":_vm.handleGoogleCodeCancel}},[_vm._v(\"取消\")]),_c('el-button',{attrs:{\"type\":\"primary\",\"loading\":_vm.googleCodeDialog.loading,\"disabled\":!_vm.isGoogleCodeValid},on:{\"click\":_vm.handleGoogleCodeSubmit}},[_vm._v(\" \"+_vm._s(_vm.googleCodeDialog.loading ? '验证中...' : '确认验证')+\" \")])],1)]},proxy:true}])},[_c('div',{staticClass:\"google-code-content\"},[_c('div',{staticClass:\"verification-icon\"},[_c('i',{staticClass:\"el-icon-lock\",staticStyle:{\"font-size\":\"48px\",\"color\":\"#409EFF\"}})]),_c('div',{staticClass:\"verification-title\"},[_c('h3',[_vm._v(\"请输入谷歌验证码\")]),_c('p',{staticClass:\"verification-desc\"},[_vm._v(\"为了保障您的账户安全,请输入您的谷歌验证器中的6位验证码\")])]),_c('div',{staticClass:\"code-input-wrapper\"},[_c('el-input',{ref:\"googleCodeInput\",staticClass:\"code-input\",attrs:{\"placeholder\":\"请输入6位验证码\",\"maxlength\":\"6\",\"size\":\"large\"},on:{\"input\":_vm.handleGoogleCodeInput},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.handleGoogleCodeSubmit.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"prepend\",fn:function(){return [_c('i',{staticClass:\"el-icon-key\"})]},proxy:true}]),model:{value:(_vm.googleCodeDialog.code),callback:function ($$v) {_vm.$set(_vm.googleCodeDialog, \"code\", $$v)},expression:\"googleCodeDialog.code\"}})],1),(_vm.googleCodeDialog.error)?_c('div',{staticClass:\"code-error\"},[_c('i',{staticClass:\"el-icon-warning\"}),_c('span',[_vm._v(_vm._s(_vm.googleCodeDialog.error))])]):_vm._e()])])],1),_c('el-dialog',{attrs:{\"visible\":_vm.settlementSuccessfulVisible,\"width\":\"480px\",\"append-to-body\":\"\",\"close-on-click-modal\":false,\"close-on-press-escape\":false},on:{\"update:visible\":function($event){_vm.settlementSuccessfulVisible=$event},\"close\":_vm.handleCloseSuccessDialog},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.handleCloseSuccessDialog}},[_vm._v(\"已知晓\")])]},proxy:true}])},[_c('div',{staticStyle:{\"text-align\":\"center\",\"padding\":\"20px 0\"}},[_c('div',{staticStyle:{\"font-size\":\"48px\",\"color\":\"#52c41a\",\"margin-bottom\":\"16px\"}},[_vm._v(\"✓\")]),_c('div',{staticStyle:{\"font-size\":\"18px\",\"color\":\"#333\",\"margin-bottom\":\"12px\"}},[_vm._v(\"请求结算处理成功\")]),_c('div',{staticStyle:{\"color\":\"#666\",\"line-height\":\"1.6\"}},[_vm._v(\" 请在订单列表页面查看结算状态\"),_c('br'),_vm._v(\" 结算成功会自动更新钱包余额 \")])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=7050467e&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=7050467e&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7050467e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"account-products\"},[_c('div',{staticClass:\"toolbar\"},[_vm._m(0),_c('div',{staticClass:\"right-area\"},[_c('el-input',{staticClass:\"mr-12\",staticStyle:{\"width\":\"280px\"},attrs:{\"placeholder\":\"输入币种或算法关键字后回车/搜索\",\"size\":\"small\",\"clearable\":\"\"},on:{\"clear\":_vm.handleClear},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.handleSearch.apply(null, arguments)}},model:{value:(_vm.searchKeyword),callback:function ($$v) {_vm.searchKeyword=$$v},expression:\"searchKeyword\"}}),_c('el-button',{attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":_vm.handleSearch}},[_vm._v(\"搜索\")]),_c('el-button',{staticClass:\"ml-8\",attrs:{\"size\":\"small\"},on:{\"click\":_vm.handleReset}},[_vm._v(\"重置\")])],1)]),_c('el-table',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.tableData,\"border\":\"\",\"stripe\":\"\"}},[_c('el-table-column',{attrs:{\"prop\":\"name\",\"label\":\"名称\"}}),_c('el-table-column',{attrs:{\"prop\":\"coin\",\"label\":\"币种\"}}),_c('el-table-column',{attrs:{\"label\":\"支持结算方式\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('div',{staticClass:\"paytypes\"},_vm._l(((scope.row.payTypes || [])),function(pt,idx){return _c('el-tooltip',{key:idx,attrs:{\"content\":_vm.formatPayType(pt),\"placement\":\"top\",\"open-delay\":80}},[_c('img',{staticClass:\"paytype-icon\",attrs:{\"src\":pt.image,\"alt\":_vm.formatPayType(pt)}})])}),1)]}}])}),_c('el-table-column',{attrs:{\"prop\":\"algorithm\",\"label\":\"算法\"}}),_c('el-table-column',{attrs:{\"prop\":\"type\",\"label\":\"商品类型\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-tag',{attrs:{\"type\":scope.row.type === 1 ? 'success' : 'warning'}},[_vm._v(\" \"+_vm._s(scope.row.type === 1 ? '算力套餐' : '挖矿机器')+\" \")])]}}])}),_c('el-table-column',{attrs:{\"prop\":\"saleNumber\",\"label\":\"已售数量\"}}),_c('el-table-column',{attrs:{\"prop\":\"totalMachineNumber\",\"label\":\"该商品总机器数量\"}}),_c('el-table-column',{attrs:{\"prop\":\"state\",\"label\":\"状态\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-tag',{attrs:{\"type\":scope.row.state === 1 ? 'info' : 'success'}},[_vm._v(\" \"+_vm._s(scope.row.state === 1 ? '下架' : '上架')+\" \")])]}}])}),_c('el-table-column',{attrs:{\"label\":\"操作\",\"fixed\":\"right\",\"width\":\"220\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.handleView(scope.row)}}},[_vm._v(\"详情\")]),_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.handleEdit(scope.row)}}},[_vm._v(\"修改\")]),_c('el-button',{staticStyle:{\"color\":\"#f56c6c\"},attrs:{\"type\":\"text\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.handleDelete(scope.row)}}},[_vm._v(\"删除\")]),_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.handleAddMachine(scope.row)}}},[_vm._v(\"添加出售机器\")])]}}])})],1),_c('div',{staticClass:\"pagination\"},[_c('el-pagination',{attrs:{\"background\":\"\",\"layout\":\"total, sizes, prev, pager, next, jumper\",\"total\":_vm.total,\"current-page\":_vm.pagination.pageNum,\"page-sizes\":[10, 20, 50, 100],\"page-size\":_vm.pagination.pageSize},on:{\"update:currentPage\":function($event){return _vm.$set(_vm.pagination, \"pageNum\", $event)},\"update:current-page\":function($event){return _vm.$set(_vm.pagination, \"pageNum\", $event)},\"update:pageSize\":function($event){return _vm.$set(_vm.pagination, \"pageSize\", $event)},\"update:page-size\":function($event){return _vm.$set(_vm.pagination, \"pageSize\", $event)},\"size-change\":_vm.handleSizeChange,\"current-change\":_vm.handleCurrentChange}})],1),_c('el-dialog',{attrs:{\"visible\":_vm.editDialog.visible,\"close-on-click-modal\":false,\"width\":\"620px\",\"title\":'编辑商品 - ' + ((_vm.editDialog.form && _vm.editDialog.form.name) ? _vm.editDialog.form.name : '')},on:{\"update:visible\":function($event){return _vm.$set(_vm.editDialog, \"visible\", $event)}},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [_c('el-button',{on:{\"click\":function($event){_vm.editDialog.visible = false}}},[_vm._v(\"取消\")]),_c('el-button',{attrs:{\"type\":\"primary\",\"loading\":_vm.editDialog.saving},on:{\"click\":_vm.handleSaveEdit}},[_vm._v(\"保存\")])]},proxy:true}])},[(_vm.editDialog.form)?_c('el-form',{ref:\"editForm\",staticClass:\"edit-form\",attrs:{\"model\":_vm.editDialog.form,\"label-width\":\"100px\"}},[_c('el-form-item',{attrs:{\"label\":\"名称\"}},[_c('el-input',{attrs:{\"maxlength\":\"30\",\"show-word-limit\":\"\"},model:{value:(_vm.editDialog.form.name),callback:function ($$v) {_vm.$set(_vm.editDialog.form, \"name\", $$v)},expression:\"editDialog.form.name\"}})],1),_c('el-form-item',{staticClass:\"align-like-input\",attrs:{\"label\":\"状态\"}},[_c('el-radio-group',{model:{value:(_vm.editDialog.form.state),callback:function ($$v) {_vm.$set(_vm.editDialog.form, \"state\", $$v)},expression:\"editDialog.form.state\"}},[_c('el-radio',{attrs:{\"label\":0}},[_vm._v(\"上架\")]),_c('el-radio',{attrs:{\"label\":1}},[_vm._v(\"下架\")])],1)],1),_c('el-form-item',{attrs:{\"label\":\"描述\"}},[_c('el-input',{attrs:{\"type\":\"textarea\",\"rows\":4,\"maxlength\":\"100\",\"show-word-limit\":\"\"},model:{value:(_vm.editDialog.form.description),callback:function ($$v) {_vm.$set(_vm.editDialog.form, \"description\", $$v)},expression:\"editDialog.form.description\"}})],1)],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"left-area\"},[_c('h2',{staticClass:\"page-title\"},[_vm._v(\"商品列表\")])])\n}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./idnex.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./idnex.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./idnex.vue?vue&type=template&id=0f1fd789\"\nimport script from \"./idnex.vue?vue&type=script&lang=js\"\nexport * from \"./idnex.vue?vue&type=script&lang=js\"\nimport style0 from \"./idnex.vue?vue&type=style&index=0&id=0f1fd789&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import request from '../utils/request'\r\n\r\n//新增机器\r\nexport function addSingleOrBatchMachine(data) {\r\n return request({\r\n url: `/lease/product/machine/addSingleOrBatchMachine`,\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n\r\n//根据矿机id 删除商品矿机\r\nexport function deleteMachine(data) {\r\n return request({\r\n url: `/lease/product/machine/delete`,\r\n method: 'post',\r\n data\r\n })\r\n }\r\n\r\n\r\n //根据挖矿账户获取矿机列表\r\nexport function getUserMachineList(data) {\r\n return request({\r\n url: `/lease/product/machine/getUserMachineList`,\r\n method: 'post',\r\n data\r\n })\r\n }\r\n\r\n\r\n \r\n //根据 登录账户 获取挖矿账户及挖矿币种集合\r\nexport function getUserMinersList(data) {\r\n return request({\r\n url: `/lease/product/machine/getUserMinersList`,\r\n method: 'post',\r\n data\r\n })\r\n }\r\n\r\n\r\n //编辑矿机 + 矿机上下架\r\nexport function updateMachine(data) {\r\n return request({\r\n url: `/lease/product/machine/updateMachine`,\r\n method: 'post',\r\n data\r\n })\r\n }\r\n\r\n\r\n \r\n //获取矿机列表\r\nexport function getMachineListForUpdate(data) {\r\n return request({\r\n url: `/lease/product/machine/getMachineListForUpdate`,\r\n method: 'post',\r\n data\r\n })\r\n }","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./content.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./content.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./content.vue?vue&type=template&id=9935370e&scoped=true\"\nimport script from \"./content.vue?vue&type=script&lang=js\"\nexport * from \"./content.vue?vue&type=script&lang=js\"\nimport style0 from \"./content.vue?vue&type=style&index=0&id=9935370e&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9935370e\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./withdrawalHistory.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./withdrawalHistory.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./withdrawalHistory.vue?vue&type=template&id=37492658&scoped=true\"\nimport script from \"./withdrawalHistory.vue?vue&type=script&lang=js\"\nexport * from \"./withdrawalHistory.vue?vue&type=script&lang=js\"\nimport style0 from \"./withdrawalHistory.vue?vue&type=style&index=0&id=37492658&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"37492658\",\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\r\nimport App from './App.vue'\r\nimport router from './router'\r\nimport store from './store'\r\nimport ElementUI from 'element-ui';\r\nimport 'element-ui/lib/theme-chalk/index.css';\r\n// 引入登录信息处理\r\nimport './utils/loginInfo.js';\r\n// 全局输入防表情守卫(极简、无侵入)\r\nimport { initNoEmojiGuard } from './utils/noEmojiGuard.js';\r\n\r\n// console.log = ()=>{} //全局关闭打印\r\n\r\n\r\nVue.config.productionTip = false\r\nVue.use(ElementUI);\r\n// 初始化全局防表情拦截器\r\ninitNoEmojiGuard();\r\nnew Vue({\r\n router,\r\n store,\r\n render: h => h(App)\r\n}).$mount('#app')\r\n","\n\n\n\n","\n\n\n\n\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./shopNew.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./shopNew.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./shopNew.vue?vue&type=template&id=7f00bb86&scoped=true\"\nimport script from \"./shopNew.vue?vue&type=script&lang=js\"\nexport * from \"./shopNew.vue?vue&type=script&lang=js\"\nimport style0 from \"./shopNew.vue?vue&type=style&index=0&id=7f00bb86&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7f00bb86\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","\n\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"account-page\"},[_c('div',{staticClass:\"account-layout\"},[_c('aside',{staticClass:\"sidebar\"},[_c('nav',{staticClass:\"side-nav\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.userEmail),expression:\"userEmail\"}],staticClass:\"user-info-card\",attrs:{\"role\":\"region\",\"aria-label\":\"用户信息\",\"tabindex\":\"0\"}},[_c('div',{staticClass:\"user-meta\"},[_c('div',{staticClass:\"user-email\",attrs:{\"title\":_vm.userEmail || '未登录'}},[_vm._v(_vm._s(_vm.userEmail || '未登录'))])])]),_c('div',{staticClass:\"user-role\",attrs:{\"role\":\"group\",\"aria-label\":\"导航分组切换\"}},[_c('button',{staticClass:\"role-button\",class:{ active: _vm.activeRole === 'buyer' },attrs:{\"aria-pressed\":_vm.activeRole === 'buyer',\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.handleClickRole('buyer')},\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;$event.preventDefault();return _vm.handleClickRole('buyer')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"]))return null;$event.preventDefault();return _vm.handleClickRole('buyer')}]}},[_vm._v(\"买家相关\")]),_c('button',{staticClass:\"role-button\",class:{ active: _vm.activeRole === 'seller' },attrs:{\"aria-pressed\":_vm.activeRole === 'seller',\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.handleClickRole('seller')},\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;$event.preventDefault();return _vm.handleClickRole('seller')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"]))return null;$event.preventDefault();return _vm.handleClickRole('seller')}]}},[_vm._v(\"卖家相关\")])]),_vm._l((_vm.displayedLinks),function(item){return _c('router-link',{key:item.to,class:['side-link', _vm.isActiveLink(item.to) ? 'active' : ''],attrs:{\"to\":item.to}},[_vm._v(_vm._s(item.label))])})],2)]),_c('section',{staticClass:\"content\"},[_c('router-view')],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('el-container',{staticClass:\"containerApp\",staticStyle:{\"width\":\"100vw\",\"height\":\"100vh\"}},[_c('el-header',{staticClass:\"el-header\"},[_c('comHeard')],1),_c('el-main',{staticClass:\"el-main\"},[_c('appMain')],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"funds-page\"},[_c('h3',{staticClass:\"title\",staticStyle:{\"margin-bottom\":\"18px\",\"text-align\":\"left\"}},[_vm._v(\"资金流水\")]),_c('div',{staticClass:\"tabs-card\"},[_c('el-tabs',{on:{\"tab-click\":_vm.handleTab},model:{value:(_vm.active),callback:function ($$v) {_vm.active=$$v},expression:\"active\"}},[_c('el-tab-pane',{attrs:{\"label\":\"充值记录\",\"name\":\"recharge\"}},[_c('div',{staticClass:\"list-wrap\"},[_c('div',{staticClass:\"list-header\"},[_c('span',{staticClass:\"list-title\"},[_vm._v(\"全部充值 (\"+_vm._s(_vm.rechargeRows.length)+\")\")]),_c('el-button',{attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":_vm.loadRecharge}},[_vm._v(\"刷新\")])],1),_c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading.recharge),expression:\"loading.recharge\"}],staticClass:\"record-list\"},[_vm._l((_vm.rechargeRows),function(row,idx){return _c('div',{key:_vm.getRowKey(row, idx),staticClass:\"record-item\",class:_vm.statusClass(row.status),on:{\"click\":function($event){return _vm.toggleExpand('recharge', row, idx)}}},[_c('div',{staticClass:\"item-main\"},[_c('div',{staticClass:\"item-left\"},[_c('div',{staticClass:\"amount\"},[(_vm.formatAmount(row.amount, row.fromSymbol).truncated)?_c('el-tooltip',{attrs:{\"content\":`${_vm.formatAmount(row.amount, row.fromSymbol).full} ${(row.fromSymbol || 'USDT').toUpperCase()}`,\"placement\":\"top\"}},[_c('span',[_vm._v(\" + \"+_vm._s(_vm.formatAmount(row.amount, row.fromSymbol).text)+\" \"+_vm._s((row.fromSymbol || 'USDT').toUpperCase())+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(\" + \"+_vm._s(_vm.formatAmount(row.amount, row.fromSymbol).text)+\" \"+_vm._s((row.fromSymbol || 'USDT').toUpperCase())+\" \")])],1),_c('div',{staticClass:\"chain\"},[_vm._v(_vm._s(_vm.formatChain(row.fromChain)))])]),_c('div',{staticClass:\"item-right\"},[_c('div',{staticClass:\"status\"},[_c('el-tag',{attrs:{\"type\":_vm.getRechargeStatusType(row.status),\"size\":\"small\"}},[_vm._v(_vm._s(_vm.getRechargeStatusText(row.status)))])],1),_c('div',{staticClass:\"time\"},[_vm._v(_vm._s(_vm.formatFullTime(row.createTime)))])])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isExpanded('recharge', row, idx)),expression:\"isExpanded('recharge', row, idx)\"}],staticClass:\"expand-panel\"},[_c('div',{staticClass:\"expand-grid\"},[_c('div',{staticClass:\"expand-item\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"充值地址\")]),_c('div',{staticClass:\"value value-row\"},[_c('span',{staticClass:\"mono-ellipsis\",attrs:{\"title\":row.fromAddress}},[_vm._v(_vm._s(row.fromAddress))]),_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"mini\",\"icon\":\"el-icon-document-copy\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.handleCopy(row.fromAddress, '充值地址')}}},[_vm._v(\"复制\")])],1)]),(row.txHash)?_c('div',{staticClass:\"expand-item\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"交易哈希\")]),_c('div',{staticClass:\"value value-row\"},[_c('span',{staticClass:\"mono-ellipsis\",attrs:{\"title\":row.txHash}},[_vm._v(_vm._s(row.txHash))]),_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"mini\",\"icon\":\"el-icon-document-copy\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.handleCopy(row.txHash, '交易哈希')}}},[_vm._v(\"复制\")])],1)]):_vm._e()])])])}),(!_vm.rechargeRows.length)?_c('div',{staticClass:\"empty\"},[_vm._v(\"暂无充值记录\")]):_vm._e()],2)])]),_c('el-tab-pane',{attrs:{\"label\":\"提现记录\",\"name\":\"withdraw\"}},[_c('div',{staticClass:\"list-wrap\"},[_c('div',{staticClass:\"list-header\"},[_c('span',{staticClass:\"list-title\"},[_vm._v(\"全部提现 (\"+_vm._s(_vm.withdrawRows.length)+\")\")]),_c('el-button',{attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":_vm.loadWithdraw}},[_vm._v(\"刷新\")])],1),_c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading.withdraw),expression:\"loading.withdraw\"}],staticClass:\"record-list\"},[_vm._l((_vm.withdrawRows),function(row,idx){return _c('div',{key:_vm.getRowKey(row, idx),staticClass:\"record-item\",class:_vm.statusClass(row.status),on:{\"click\":function($event){return _vm.toggleExpand('withdraw', row, idx)}}},[_c('div',{staticClass:\"item-main\"},[_c('div',{staticClass:\"item-left\"},[_c('div',{staticClass:\"amount\"},[(_vm.formatAmount(row.amount, row.toSymbol).truncated)?_c('el-tooltip',{attrs:{\"content\":`${_vm.formatAmount(row.amount, row.toSymbol).full} ${(row.toSymbol || 'USDT').toUpperCase()}`,\"placement\":\"top\"}},[_c('span',[_vm._v(\" - \"+_vm._s(_vm.formatAmount(row.amount, row.toSymbol).text)+\" \"+_vm._s((row.toSymbol || 'USDT').toUpperCase())+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(\" - \"+_vm._s(_vm.formatAmount(row.amount, row.toSymbol).text)+\" \"+_vm._s((row.toSymbol || 'USDT').toUpperCase())+\" \")])],1),_c('div',{staticClass:\"chain\"},[_vm._v(_vm._s(_vm.formatChain(row.toChain)))])]),_c('div',{staticClass:\"item-right\"},[_c('div',{staticClass:\"status\"},[_c('el-tag',{attrs:{\"type\":_vm.getWithdrawStatusType(row.status),\"size\":\"small\"}},[_vm._v(_vm._s(_vm.getWithdrawStatusText(row.status)))])],1),_c('div',{staticClass:\"time\"},[_vm._v(_vm._s(_vm.formatFullTime(row.createTime)))])])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isExpanded('withdraw', row, idx)),expression:\"isExpanded('withdraw', row, idx)\"}],staticClass:\"expand-panel\"},[_c('div',{staticClass:\"expand-grid\"},[_c('div',{staticClass:\"expand-item\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"收款地址\")]),_c('div',{staticClass:\"value value-row\"},[_c('span',{staticClass:\"mono-ellipsis\",attrs:{\"title\":row.toAddress}},[_vm._v(_vm._s(row.toAddress))]),_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"mini\",\"icon\":\"el-icon-document-copy\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.handleCopy(row.toAddress, '收款地址')}}},[_vm._v(\"复制\")])],1)]),(row.txHash)?_c('div',{staticClass:\"expand-item\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"交易哈希\")]),_c('div',{staticClass:\"value value-row\"},[_c('span',{staticClass:\"mono-ellipsis\",attrs:{\"title\":row.txHash}},[_vm._v(_vm._s(row.txHash))]),_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"mini\",\"icon\":\"el-icon-document-copy\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.handleCopy(row.txHash, '交易哈希')}}},[_vm._v(\"复制\")])],1)]):_vm._e()])])])}),(!_vm.withdrawRows.length)?_c('div',{staticClass:\"empty\"},[_vm._v(\"暂无提现记录\")]):_vm._e()],2)])]),_c('el-tab-pane',{attrs:{\"label\":\"消费记录\",\"name\":\"consume\"}},[_c('div',{staticClass:\"list-wrap\"},[_c('div',{staticClass:\"list-header\"},[_c('span',{staticClass:\"list-title\"},[_vm._v(\"全部消费 (\"+_vm._s(_vm.consumeRows.length)+\")\")]),_c('el-button',{attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":_vm.loadConsume}},[_vm._v(\"刷新\")])],1),_c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading.consume),expression:\"loading.consume\"}],staticClass:\"record-list\"},[_vm._l((_vm.consumeRows),function(row,idx){return _c('div',{key:_vm.getRowKey(row, idx),staticClass:\"record-item\",class:_vm.statusClass(row.status),on:{\"click\":function($event){return _vm.toggleExpand('consume', row, idx)}}},[_c('div',{staticClass:\"item-main\"},[_c('div',{staticClass:\"item-left\"},[_c('div',{staticClass:\"amount\"},[(_vm.formatAmount(row.realAmount, row.fromSymbol).truncated)?_c('el-tooltip',{attrs:{\"content\":`${_vm.formatAmount(row.realAmount, row.fromSymbol).full} ${(row.fromSymbol || 'USDT').toUpperCase()}`,\"placement\":\"top\"}},[_c('span',[_vm._v(\" - \"+_vm._s(_vm.formatAmount(row.realAmount, row.fromSymbol).text)+\" \"+_vm._s((row.fromSymbol || 'USDT').toUpperCase())+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(\" - \"+_vm._s(_vm.formatAmount(row.realAmount, row.fromSymbol).text)+\" \"+_vm._s((row.fromSymbol || 'USDT').toUpperCase())+\" \")])],1),_c('div',{staticClass:\"chain\"},[_vm._v(_vm._s(_vm.formatChain(row.fromChain)))])]),_c('div',{staticClass:\"item-right\"},[_c('div',{staticClass:\"status\"},[_c('el-tag',{attrs:{\"type\":_vm.getPayStatusType(row.status),\"size\":\"small\"}},[_vm._v(_vm._s(_vm.getPayStatusText(row.status)))])],1),_c('div',{staticClass:\"time\"},[_vm._v(_vm._s(_vm.formatFullTime(row.createTime || row.time)))])])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isExpanded('consume', row, idx)),expression:\"isExpanded('consume', row, idx)\"}],staticClass:\"expand-panel\"},[_c('div',{staticClass:\"expand-grid\"},[_c('div',{staticClass:\"expand-item\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"订单号\")]),_c('span',{staticClass:\"value mono\"},[_vm._v(_vm._s(row.orderId || ''))])]),_c('div',{staticClass:\"expand-item\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"支付地址\")]),_c('span',{staticClass:\"value mono-ellipsis\",attrs:{\"title\":row.fromAddress}},[_vm._v(_vm._s(row.fromAddress || ''))])]),_c('div',{staticClass:\"expand-item\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"收款地址\")]),_c('span',{staticClass:\"value mono-ellipsis\",attrs:{\"title\":row.toAddress}},[_vm._v(_vm._s(row.toAddress || ''))])]),(row.txHash)?_c('div',{staticClass:\"expand-item\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"交易哈希\")]),_c('span',{staticClass:\"value mono-ellipsis\",attrs:{\"title\":row.txHash}},[_vm._v(_vm._s(row.txHash))])]):_vm._e()])])])}),(!_vm.consumeRows.length)?_c('div',{staticClass:\"empty\"},[_vm._v(\"暂无消费记录\")]):_vm._e()],2)])])],1),_c('el-row',[_c('el-col',{staticStyle:{\"display\":\"flex\",\"justify-content\":\"center\"},attrs:{\"span\":24}},[_c('el-pagination',{staticStyle:{\"margin\":\"0 auto\",\"margin-top\":\"10px\"},attrs:{\"current-page\":_vm.currentPage,\"page-sizes\":_vm.pageSizes,\"page-size\":_vm.pagination.pageSize,\"layout\":\"total, sizes, prev, pager, next, jumper\",\"total\":_vm.total},on:{\"size-change\":_vm.handleSizeChange,\"current-change\":_vm.handleCurrentChange,\"update:currentPage\":function($event){_vm.currentPage=$event},\"update:current-page\":function($event){_vm.currentPage=$event}}})],1)],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"wallet-container\"},[_c('div',{staticClass:\"wallet-toolbar\",attrs:{\"role\":\"region\",\"aria-label\":\"钱包操作\"}},[_c('el-button',{staticClass:\"create-wallet-btn\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.openCreateWallet}},[_c('i',{staticClass:\"el-icon-plus\",staticStyle:{\"margin-right\":\"6px\"}}),_vm._v(\"充值 \")])],1),_c('section',{staticClass:\"wallet-card-section\"},_vm._l((_vm.walletList),function(w){return _c('div',{key:w.id,staticClass:\"wallet-card\"},[_c('div',{staticClass:\"wallet-header\"},[_c('h2',{staticClass:\"wallet-title\"},[_c('i',{staticClass:\"el-icon-wallet\"}),_vm._v(\" 我的钱包 \"),_c('el-tag',{staticStyle:{\"margin-left\":\"8px\"},attrs:{\"size\":\"mini\",\"effect\":\"dark\"}},[_vm._v(\" \"+_vm._s((w.fromChain || w.chain || '').toUpperCase())+\" \"+_vm._s((w.fromSymbol || w.coin || '').toUpperCase())+\" \")])],1),_c('div',{staticClass:\"wallet-balance\"},[_c('div',{staticClass:\"balance-item\"},[_c('span',{staticClass:\"balance-label\"},[_vm._v(\"可用余额\")]),_c('span',{staticClass:\"balance-amount\"},[_vm._v(_vm._s((w.walletBalance || w.balance || 0))+\" \"+_vm._s(_vm.displaySymbol(w)))])]),_c('div',{staticClass:\"balance-item\"},[_c('el-tooltip',{attrs:{\"placement\":\"top\",\"effect\":\"dark\"}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\" 冻结金额不能使用或提现,以下情况会冻结钱包余额:\"),_c('br'),_vm._v(\" 1. 下单机器后会冻结订单对应金额\"),_c('br'),_vm._v(\" 2. 提交提现后,金额正在提现中 \")]),_c('i',{staticClass:\"el-icon-question balance-tip-icon\"})]),_c('span',{staticClass:\"balance-label\"},[_vm._v(\"冻结余额\")]),_c('span',{staticClass:\"balance-amount frozen\"},[_vm._v(_vm._s((w.blockedBalance || 0))+\" \"+_vm._s(_vm.displaySymbol(w)))])],1),_c('el-button',{staticClass:\"withdraw-inline-btn\",attrs:{\"type\":\"success\",\"size\":\"mini\"},on:{\"click\":function($event){return _vm.handleWithdraw(w)}}},[_vm._v(\" 提现 \")])],1)])])}),0),_c('div',{staticClass:\"transaction-section\"},[_c('h3',{staticClass:\"section-title\"},[_vm._v(\"最近交易\")]),_c('div',{staticClass:\"transaction-list\"},[_vm._l((_vm.recentTransactions),function(transaction){return _c('div',{key:transaction.id,staticClass:\"transaction-item\"},[_c('div',{staticClass:\"transaction-info\"},[_c('span',{staticClass:\"transaction-type\"},[_vm._v(_vm._s(transaction.type))]),_c('span',{staticClass:\"transaction-time\"},[_vm._v(_vm._s(transaction.time))]),_c('el-tag',{staticClass:\"transaction-status\",attrs:{\"size\":\"mini\",\"type\":transaction.statusTagType || 'info'}},[_vm._v(\" \"+_vm._s(transaction.statusText || '-')+\" \")])],1),_c('div',{staticClass:\"transaction-amount\",class:transaction.amount > 0 ? 'positive' : 'negative'},[_vm._v(\" \"+_vm._s(transaction.amount > 0 ? '+' : '')+_vm._s(transaction.amountText)+\" USDT \")])])}),(_vm.recentTransactions.length === 0)?_c('div',{staticClass:\"empty-state\"},[_vm._v(\" 暂无交易记录 \")]):_vm._e()],2)]),_c('el-dialog',{attrs:{\"title\":\"钱包余额充值\",\"visible\":_vm.rechargeDialogVisible,\"width\":\"660px\"},on:{\"update:visible\":function($event){_vm.rechargeDialogVisible=$event},\"close\":_vm.resetRechargeForm}},[_c('div',{staticClass:\"recharge-content\"},[_c('div',{staticClass:\"wallet-address-section\"},[_c('h4',{staticClass:\"section-title\"},[_vm._v(\"钱包地址\")]),_c('div',{staticClass:\"charge-meta\"},[_c('el-tag',{staticClass:\"meta-tag\",attrs:{\"size\":\"small\",\"effect\":\"dark\",\"type\":\"warning\"}},[_c('i',{staticClass:\"el-icon-link\"}),_c('span',{staticClass:\"meta-title\"},[_vm._v(\"充值链:\")]),_c('span',{staticClass:\"meta-val\"},[_vm._v(_vm._s((_vm.WalletData.fromChain || _vm.WalletData.chain || '').toString().toUpperCase()))])]),_c('el-tag',{staticClass:\"meta-tag\",attrs:{\"size\":\"small\",\"effect\":\"dark\",\"type\":\"warning\"}},[_c('i',{staticClass:\"el-icon-coin\"}),_c('span',{staticClass:\"meta-title\"},[_vm._v(\"充值币种:\")]),_c('span',{staticClass:\"meta-val\"},[_vm._v(_vm._s((_vm.WalletData.fromSymbol || _vm.WalletData.coin || '').toString().toUpperCase()))])])],1),_c('div',{staticClass:\"address-container\"},[_c('el-input',{staticClass:\"address-input\",attrs:{\"readonly\":\"\",\"disabled\":true},model:{value:(_vm.WalletData.fromAddress),callback:function ($$v) {_vm.$set(_vm.WalletData, \"fromAddress\", $$v)},expression:\"WalletData.fromAddress\"}}),_c('el-button',{staticClass:\"copy-btn\",attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.copyAddress(_vm.WalletData.fromAddress)}}},[_vm._v(\" 复制 \")])],1),_c('p',{staticClass:\"address-tip\"},[_vm._v(\"请向此地址转账非\"+_vm._s(_vm.displaySymbol(_vm.WalletData))+\"资产,否则资产将无法找回.\")])]),_c('div',{staticClass:\"qr-code-section\"},[_c('h4',{staticClass:\"section-title\"},[_vm._v(\"扫码充值\")]),_c('div',{staticClass:\"qr-code-container\"},[_c('div',{ref:\"qrCodeRef\",staticClass:\"qr-code\"}),_c('p',{staticClass:\"qr-tip\"},[_vm._v(\"使用支持\"+_vm._s(_vm.displaySymbol(_vm.WalletData))+\"的钱包扫描二维码\")])])]),_c('div',{staticClass:\"recharge-notice\"},[_c('h4',{staticClass:\"section-title\"},[_vm._v(\"充值说明\")]),_c('ul',{staticClass:\"notice-list\"},[_c('li',[_vm._v(\"充值后请耐心等待余额更新或在资金流水页面查看最新充值记录\")]),_c('li',[_vm._v(\"最小充值金额:10 \"+_vm._s(_vm.displaySymbol(_vm.WalletData)))])])])]),_c('div',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.rechargeDialogVisible = false}}},[_vm._v(\"关闭\")])],1)]),_c('el-dialog',{attrs:{\"title\":\"USDT提现\",\"visible\":_vm.withdrawDialogVisible,\"width\":\"720px\",\"close-on-click-modal\":false,\"close-on-press-escape\":false},on:{\"update:visible\":function($event){_vm.withdrawDialogVisible=$event},\"close\":_vm.resetWithdrawForm}},[_c('el-form',{ref:\"withdrawForm\",attrs:{\"model\":_vm.withdrawForm,\"rules\":_vm.withdrawRules,\"label-width\":\"120px\"}},[_c('el-form-item',{attrs:{\"label\":\"提现链\"}},[_c('el-input',{staticStyle:{\"width\":\"100%\"},attrs:{\"value\":(_vm.WalletData.fromChain || _vm.WalletData.chain || _vm.withdrawForm.toChain || '').toString().toUpperCase(),\"disabled\":true}})],1),_c('el-form-item',{attrs:{\"label\":\"提现币种\"}},[_c('el-input',{staticStyle:{\"width\":\"100%\"},attrs:{\"value\":_vm.displayWithdrawSymbol,\"disabled\":true}})],1),_c('el-form-item',{attrs:{\"label\":\"提现金额\",\"prop\":\"amount\"}},[_c('el-input',{staticStyle:{\"width\":\"100%\"},attrs:{\"placeholder\":\"请输入提现金额\",\"inputmode\":\"decimal\"},on:{\"input\":_vm.handleAmountInput},model:{value:(_vm.withdrawForm.amount),callback:function ($$v) {_vm.$set(_vm.withdrawForm, \"amount\", $$v)},expression:\"withdrawForm.amount\"}},[_c('template',{slot:\"append\"},[_vm._v(_vm._s(_vm.displayWithdrawSymbol))])],2),_c('div',{staticClass:\"balance-info\"},[_c('div',{staticClass:\"balance-total\"},[_vm._v(\"钱包总余额:\"+_vm._s(_vm.totalBalance)+\" \"+_vm._s(_vm.displayWithdrawSymbol))]),_c('div',{staticClass:\"balance-row\"},[_c('span',[_vm._v(\"可用余额:\"+_vm._s(_vm.availableWithdrawBalance)+\" \"+_vm._s(_vm.displayWithdrawSymbol))]),_c('span',{staticClass:\"divider\"},[_vm._v(\"|\")]),_c('span',{staticClass:\"frozen-info\"},[_c('el-tooltip',{attrs:{\"placement\":\"top\",\"effect\":\"dark\"}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\" 冻结金额不能使用或提现,以下情况会冻结钱包余额:\"),_c('br'),_vm._v(\" 1. 下单机器后会冻结订单对应金额\"),_c('br'),_vm._v(\" 2. 提交提现后,金额正在提现中 \")]),_c('i',{staticClass:\"el-icon-question frozen-tip-icon\"})]),_vm._v(\" 冻结余额:\"+_vm._s((_vm.WalletData.blockedBalance || 0))+\" \"+_vm._s(_vm.displayWithdrawSymbol)+\" \"),_c('span',{staticClass:\"frozen-tip\"},[_vm._v(\"(购买机器下单后冻结,不可提现)\")])],1)])])],1),_c('el-form-item',{attrs:{\"label\":\"手续费\"}},[_c('el-input',{staticStyle:{\"width\":\"100%\"},attrs:{\"placeholder\":\"手续费\",\"disabled\":true},model:{value:(_vm.withdrawForm.fee),callback:function ($$v) {_vm.$set(_vm.withdrawForm, \"fee\", $$v)},expression:\"withdrawForm.fee\"}},[_c('template',{slot:\"append\"},[_vm._v(_vm._s(_vm.displayWithdrawSymbol))])],2),_c('div',{staticClass:\"fee-info\"},[_vm._v(\" 网络手续费:\"+_vm._s(_vm.withdrawForm.fee || '0.00')+\" \"+_vm._s(_vm.displayWithdrawSymbol)+\" \")])],1),_c('el-form-item',{attrs:{\"label\":\"实际到账\"}},[_c('el-input',{staticStyle:{\"width\":\"100%\"},attrs:{\"placeholder\":\"实际到账金额\",\"disabled\":true},model:{value:(_vm.actualAmount),callback:function ($$v) {_vm.actualAmount=$$v},expression:\"actualAmount\"}},[_c('template',{slot:\"append\"},[_vm._v(_vm._s(_vm.displayWithdrawSymbol))])],2),_c('div',{staticClass:\"actual-amount-info\"},[_vm._v(\" 实际到账:\"+_vm._s(_vm.actualAmount)+\" \"+_vm._s(_vm.displayWithdrawSymbol)+\" \")])],1),_c('el-form-item',{attrs:{\"label\":\"收款地址\",\"prop\":\"toAddress\"}},[_c('el-input',{staticStyle:{\"width\":\"100%\"},attrs:{\"type\":\"textarea\",\"rows\":3,\"placeholder\":\"请输入收款钱包地址\"},model:{value:(_vm.withdrawForm.toAddress),callback:function ($$v) {_vm.$set(_vm.withdrawForm, \"toAddress\", $$v)},expression:\"withdrawForm.toAddress\"}}),_c('div',{staticClass:\"address-tip\"},[_vm._v(\" 请确保地址正确,错误地址将导致资产丢失 \")])],1),_c('el-form-item',{attrs:{\"label\":\"谷歌验证码\",\"prop\":\"googleCode\"}},[_c('el-input',{ref:\"googleCodeInput\",staticStyle:{\"width\":\"100%\"},attrs:{\"placeholder\":\"请输入6位谷歌验证码\",\"maxlength\":\"6\"},on:{\"input\":_vm.handleGoogleCodeInput},model:{value:(_vm.withdrawForm.googleCode),callback:function ($$v) {_vm.$set(_vm.withdrawForm, \"googleCode\", $$v)},expression:\"withdrawForm.googleCode\"}},[_c('template',{slot:\"prepend\"},[_c('i',{staticClass:\"el-icon-key\"})])],2),_c('div',{staticClass:\"google-code-tip\"},[_vm._v(\" 为了保障您的账户安全,请输入您的谷歌验证器中的6位验证码 \")])],1)],1),_c('div',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.withdrawDialogVisible = false}}},[_vm._v(\"取消\")]),_c('el-button',{attrs:{\"type\":\"primary\",\"loading\":_vm.withdrawLoading},on:{\"click\":_vm.confirmWithdraw}},[_vm._v(\"确认提现\")])],1)],1),_c('el-dialog',{attrs:{\"title\":\"链上充值\",\"visible\":_vm.createDialogVisible,\"close-on-click-modal\":false,\"close-on-press-escape\":false,\"width\":\"520px\"},on:{\"update:visible\":function($event){_vm.createDialogVisible=$event}}},[_c('el-form',{attrs:{\"label-width\":\"120px\"}},[_c('el-form-item',{attrs:{\"label\":\"选择充值链/币种\"}},[_c('el-cascader',{staticStyle:{\"width\":\"100%\"},attrs:{\"options\":_vm.options},model:{value:(_vm.createValue),callback:function ($$v) {_vm.createValue=$$v},expression:\"createValue\"}})],1)],1),_c('div',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.createDialogVisible = false}}},[_vm._v(\"取消\")]),_c('el-button',{attrs:{\"type\":\"primary\",\"loading\":_vm.createLoading},on:{\"click\":_vm.confirmCreateWallet}},[_vm._v(\"确定\")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.productListLoading),expression:\"productListLoading\"}],staticClass:\"product-list\"},[_c('section',{staticClass:\"container\"},[_c('h1',{staticClass:\"page-title\"},[_vm._v(\"商品列表\")]),_c('section',{staticClass:\"filter-section\"},[_c('label',{staticClass:\"required\",staticStyle:{\"margin-bottom\":\"10px\"}},[_vm._v(\"币种选择:\")]),_c('div',{staticClass:\"filter-row\"},[_c('el-select',{ref:\"screen\",staticClass:\"input\",attrs:{\"size\":\"middle\",\"placeholder\":\"请选择\",\"clearable\":\"\"},on:{\"change\":_vm.handleCurrencyChange,\"clear\":_vm.handleCurrencyClear},model:{value:(_vm.screenCurrency),callback:function ($$v) {_vm.screenCurrency=$$v},expression:\"screenCurrency\"}},_vm._l((_vm.currencyList),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}},[_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\"}},[_c('img',{staticStyle:{\"float\":\"left\",\"width\":\"20px\"},attrs:{\"src\":item.imgUrl}}),_c('span',{staticStyle:{\"float\":\"left\",\"margin-left\":\"5px\"}},[_vm._v(_vm._s(item.label))])])])}),1),_c('el-input',{staticStyle:{\"width\":\"240px\"},attrs:{\"size\":\"middle\",\"placeholder\":\"输入算法关键词\",\"clearable\":\"\"},on:{\"clear\":_vm.handleAlgorithmClear},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.handleAlgorithmSearch.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.handleAlgorithmSearch}},[_vm._v(\"搜索\")])]},proxy:true}]),model:{value:(_vm.searchAlgorithm),callback:function ($$v) {_vm.searchAlgorithm=$$v},expression:\"searchAlgorithm\"}})],1)]),_c('div',{staticClass:\"product-list-grid\"},[_vm._l((_vm.products),function(product){return _c('div',{key:product.id,staticClass:\"product-item\",attrs:{\"tabindex\":\"0\",\"aria-label\":\"查看详情\"},on:{\"click\":function($event){return _vm.handleProductClick(product)}}},[_c('img',{staticClass:\"product-image\",attrs:{\"src\":require(\"../../assets/imgs/commodity.png\"),\"alt\":product.name}}),_c('div',{staticClass:\"product-info\"},[_c('h4',[_vm._v(\"商品: \"+_vm._s(product.name))]),_c('p',{staticStyle:{\"font-size\":\"16px\",\"margin-top\":\"10px\",\"font-weight\":\"bold\"}},[_vm._v(\"算法: \"+_vm._s(product.algorithm))]),_c('div',{staticClass:\"product-footer\"},[_c('div',{staticClass:\"paytypes\"},[_c('span',{staticClass:\"paytypes-label\"},[_vm._v(\"支付方式:\")]),_vm._l(((product.payTypes || [])),function(pt,idx){return _c('el-tooltip',{key:idx,attrs:{\"content\":_vm.formatPayType(pt),\"placement\":\"top\",\"open-delay\":80}},[_c('img',{staticClass:\"paytype-icon\",attrs:{\"src\":pt.image,\"alt\":_vm.formatPayType(pt)}})])})],2),_c('div',{staticClass:\"right-meta\"},[_c('span',{staticClass:\"product-sold\",attrs:{\"aria-label\":\"已售数量\"}},[_vm._v(\"已售:\"+_vm._s(product && product.saleNumber != null ? product.saleNumber : 0))]),_c('span',{staticClass:\"shop-name\"},[_vm._v(\"店铺:\"+_vm._s(product && (product.shopName || product.name)))])])])])])}),(_vm.products.length === 0 && !_vm.productListLoading)?_c('div',{staticClass:\"empty-state\"},[_c('i',{staticClass:\"el-icon-goods\"}),_c('p',[_vm._v(\"暂无商品数据\")]),_c('p',{staticStyle:{\"font-size\":\"12px\",\"color\":\"#999\",\"margin-top\":\"8px\"}},[_vm._v(\"请检查网络连接或联系管理员\")])]):_vm._e()],2)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"order-detail-page\"},[_c('h2',{staticClass:\"title\"},[_vm._v(\"订单详情\")]),(_vm.loading)?_c('div',{staticClass:\"loading\"},[_vm._v(\"加载中...\")]):_c('div',[_c('el-card',{staticClass:\"section\"},[_c('div',{staticClass:\"row\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"订单ID:\")]),_c('span',{staticClass:\"value mono\"},[_vm._v(_vm._s(_vm.order.id || '—'))])]),_c('div',{staticClass:\"row\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"订单号:\")]),_c('span',{staticClass:\"value mono\"},[_vm._v(_vm._s(_vm.order.orderNumber || '—'))])]),_c('div',{staticClass:\"row\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"状态:\")]),_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.getOrderStatusText(_vm.order.status)))])]),_c('div',{staticClass:\"row\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"金额(USDT):\")]),_c('span',{staticClass:\"value strong\"},[_vm._v(_vm._s(_vm.order.totalPrice))])]),_c('div',{staticClass:\"row\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"创建时间:\")]),_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.formatDateTime(_vm.order.createTime)))])])]),_c('el-card',{staticClass:\"section\",staticStyle:{\"margin-top\":\"12px\"}},[_c('div',{staticClass:\"sub-title\"},[_vm._v(\"机器列表\")]),_c('el-table',{staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.items,\"border\":\"\",\"size\":\"small\",\"header-cell-style\":{ textAlign: 'left' },\"cell-style\":{ textAlign: 'left' }}},[_c('el-table-column',{attrs:{\"prop\":\"productMachineId\",\"label\":\"机器ID\",\"min-width\":\"120\"}}),_c('el-table-column',{attrs:{\"prop\":\"name\",\"label\":\"名称\",\"min-width\":\"160\"}}),_c('el-table-column',{attrs:{\"prop\":\"payCoin\",\"label\":\"币种\",\"min-width\":\"100\"}}),_c('el-table-column',{attrs:{\"prop\":\"leaseTime\",\"label\":\"租赁天数\",\"min-width\":\"100\"}}),_c('el-table-column',{attrs:{\"prop\":\"price\",\"label\":\"单价(USDT)\",\"min-width\":\"120\"}}),_c('el-table-column',{attrs:{\"prop\":\"address\",\"label\":\"收款地址\",\"min-width\":\"240\"}})],1)],1),_c('div',{staticClass:\"actions\"},[_c('el-button',{on:{\"click\":function($event){return _vm.$router.back()}}},[_vm._v(\"返回\")])],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"recharge-record-container\"},[_vm._m(0),_c('div',{staticClass:\"tab-container\"},[_c('el-tabs',{on:{\"tab-click\":_vm.handleTabClick},model:{value:(_vm.activeTab),callback:function ($$v) {_vm.activeTab=$$v},expression:\"activeTab\"}},[_c('el-tab-pane',{attrs:{\"label\":\"充值中\",\"name\":\"pending\"}},[_c('div',{staticClass:\"tab-content\"},[_c('div',{staticClass:\"list-header\"},[_c('span',{staticClass:\"list-title\"},[_vm._v(\"充值中 (\"+_vm._s(_vm.pendingRecharges.length)+\")\")]),_c('el-button',{attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":_vm.refreshData}},[_c('i',{staticClass:\"el-icon-refresh\"}),_vm._v(\" 刷新 \")])],1),_c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"recharge-list\"},[_vm._l((_vm.pendingRecharges),function(item){return _c('div',{key:item.id,staticClass:\"recharge-item pending\",on:{\"click\":function($event){return _vm.showDetail(item)}}},[_c('div',{staticClass:\"item-main\"},[_c('div',{staticClass:\"item-left\"},[_c('div',{staticClass:\"amount\"},[_vm._v(\" \"+_vm._s(item.amount)+\" \"+_vm._s(item.fromSymbol || \"USDT\")+\" \")]),_c('div',{staticClass:\"chain\"},[_vm._v(_vm._s(_vm.getChainName(item.fromChain)))])]),_c('div',{staticClass:\"item-right\"},[_c('div',{staticClass:\"status pending-status\"},[_c('i',{staticClass:\"el-icon-loading\"}),_vm._v(\" \"+_vm._s(_vm.getStatusText(item.status))+\" \")]),_c('div',{staticClass:\"time\"},[_vm._v(_vm._s(_vm.formatTime(item.createTime)))])])]),_c('div',{staticClass:\"item-footer\"},[_c('div',{staticClass:\"footer-left\"},[_c('span',{staticClass:\"address\"},[_vm._v(_vm._s(_vm.formatAddress(item.address)))]),(item.txHash)?_c('span',{staticClass:\"tx-hash\"},[_c('i',{staticClass:\"el-icon-link\"}),_vm._v(\" \"+_vm._s(_vm.formatAddress(item.txHash))+\" \")]):_vm._e()]),_c('i',{staticClass:\"el-icon-arrow-right\"})])])}),(_vm.pendingRecharges.length === 0)?_c('div',{staticClass:\"empty-state\"},[_c('i',{staticClass:\"el-icon-document\"}),_c('p',[_vm._v(\"暂无充值中的记录\")])]):_vm._e()],2)])]),_c('el-tab-pane',{attrs:{\"label\":\"充值成功\",\"name\":\"success\"}},[_c('div',{staticClass:\"tab-content\"},[_c('div',{staticClass:\"list-header\"},[_c('span',{staticClass:\"list-title\"},[_vm._v(\"充值成功 (\"+_vm._s(_vm.successRecharges.length)+\")\")]),_c('el-button',{attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":_vm.refreshData}},[_c('i',{staticClass:\"el-icon-refresh\"}),_vm._v(\" 刷新 \")])],1),_c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"recharge-list\"},[_vm._l((_vm.successRecharges),function(item){return _c('div',{key:item.id,staticClass:\"recharge-item success\",on:{\"click\":function($event){return _vm.showDetail(item)}}},[_c('div',{staticClass:\"item-main\"},[_c('div',{staticClass:\"item-left\"},[_c('div',{staticClass:\"amount\"},[_vm._v(\" \"+_vm._s(item.amount)+\" \"+_vm._s(item.fromSymbol || \"USDT\")+\" \")]),_c('div',{staticClass:\"chain\"},[_vm._v(_vm._s(_vm.getChainName(item.fromChain)))])]),_c('div',{staticClass:\"item-right\"},[_c('div',{staticClass:\"status success-status\"},[_c('i',{staticClass:\"el-icon-check\"}),_vm._v(\" \"+_vm._s(_vm.getStatusText(item.status))+\" \")]),_c('div',{staticClass:\"time\"},[_vm._v(_vm._s(_vm.formatTime(item.createTime)))])])]),_c('div',{staticClass:\"item-footer\"},[_c('div',{staticClass:\"footer-left\"},[_c('span',{staticClass:\"address\"},[_vm._v(_vm._s(_vm.formatAddress(item.address)))]),(item.txHash)?_c('span',{staticClass:\"tx-hash\"},[_c('i',{staticClass:\"el-icon-link\"}),_vm._v(\" \"+_vm._s(_vm.formatAddress(item.txHash))+\" \")]):_vm._e()]),_c('i',{staticClass:\"el-icon-arrow-right\"})])])}),(_vm.successRecharges.length === 0)?_c('div',{staticClass:\"empty-state\"},[_c('i',{staticClass:\"el-icon-document\"}),_c('p',[_vm._v(\"暂无充值成功的记录\")])]):_vm._e()],2)])]),_c('el-tab-pane',{attrs:{\"label\":\"充值失败\",\"name\":\"failed\"}},[_c('div',{staticClass:\"tab-content\"},[_c('div',{staticClass:\"list-header\"},[_c('span',{staticClass:\"list-title\"},[_vm._v(\"充值失败 (\"+_vm._s(_vm.failedRecharges.length)+\")\")]),_c('el-button',{attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":_vm.refreshData}},[_c('i',{staticClass:\"el-icon-refresh\"}),_vm._v(\" 刷新 \")])],1),_c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"recharge-list\"},[_vm._l((_vm.failedRecharges),function(item){return _c('div',{key:item.id,staticClass:\"recharge-item failed\",on:{\"click\":function($event){return _vm.showDetail(item)}}},[_c('div',{staticClass:\"item-main\"},[_c('div',{staticClass:\"item-left\"},[_c('div',{staticClass:\"amount\"},[_vm._v(\" \"+_vm._s(item.amount)+\" \"+_vm._s(item.fromSymbol || \"USDT\")+\" \")]),_c('div',{staticClass:\"chain\"},[_vm._v(_vm._s(_vm.getChainName(item.fromChain)))])]),_c('div',{staticClass:\"item-right\"},[_c('div',{staticClass:\"status failed-status\"},[_c('i',{staticClass:\"el-icon-close\"}),_vm._v(\" \"+_vm._s(_vm.getStatusText(item.status))+\" \")]),_c('div',{staticClass:\"time\"},[_vm._v(_vm._s(_vm.formatTime(item.createTime)))])])]),_c('div',{staticClass:\"item-footer\"},[_c('div',{staticClass:\"footer-left\"},[_c('span',{staticClass:\"address\"},[_vm._v(_vm._s(_vm.formatAddress(item.address)))]),(item.txHash)?_c('span',{staticClass:\"tx-hash\"},[_c('i',{staticClass:\"el-icon-link\"}),_vm._v(\" \"+_vm._s(_vm.formatAddress(item.txHash))+\" \")]):_vm._e()]),_c('i',{staticClass:\"el-icon-arrow-right\"})])])}),(_vm.failedRecharges.length === 0)?_c('div',{staticClass:\"empty-state\"},[_c('i',{staticClass:\"el-icon-document\"}),_c('p',[_vm._v(\"暂无充值失败的记录\")])]):_vm._e()],2)])])],1),_c('el-row',[_c('el-col',{staticStyle:{\"display\":\"flex\",\"justify-content\":\"center\"},attrs:{\"span\":24}},[_c('el-pagination',{staticStyle:{\"margin\":\"0 auto\",\"margin-top\":\"10px\"},attrs:{\"current-page\":_vm.currentPage,\"page-sizes\":_vm.pageSizes,\"page-size\":_vm.pagination.pageSize,\"layout\":\"total, sizes, prev, pager, next, jumper\",\"total\":_vm.total},on:{\"size-change\":_vm.handleSizeChange,\"current-change\":_vm.handleCurrentChange,\"update:currentPage\":function($event){_vm.currentPage=$event},\"update:current-page\":function($event){_vm.currentPage=$event}}})],1)],1)],1),_c('el-dialog',{attrs:{\"title\":\"充值详情\",\"visible\":_vm.detailDialogVisible,\"width\":\"600px\"},on:{\"update:visible\":function($event){_vm.detailDialogVisible=$event},\"close\":_vm.closeDetail}},[(_vm.selectedItem)?_c('div',{staticClass:\"detail-content\"},[_c('div',{staticClass:\"detail-section\"},[_c('h3',{staticClass:\"section-title\"},[_vm._v(\"基本信息\")]),_c('div',{staticClass:\"detail-list\"},[_c('div',{staticClass:\"detail-row\"},[_c('span',{staticClass:\"detail-label\"},[_vm._v(\"充值ID\")]),_c('span',{staticClass:\"detail-value\"},[_vm._v(_vm._s(_vm.selectedItem.id))])]),_c('div',{staticClass:\"detail-row\"},[_c('span',{staticClass:\"detail-label\"},[_vm._v(\"充值金额\")]),_c('span',{staticClass:\"detail-value amount\"},[_vm._v(_vm._s(_vm.selectedItem.amount)+\" \"+_vm._s(_vm.selectedItem.fromSymbol || \"USDT\"))])]),_c('div',{staticClass:\"detail-row\"},[_c('span',{staticClass:\"detail-label\"},[_vm._v(\"区块链网络\")]),_c('span',{staticClass:\"detail-value\"},[_vm._v(_vm._s(_vm.getChainName(_vm.selectedItem.fromChain)))])]),_c('div',{staticClass:\"detail-row\"},[_c('span',{staticClass:\"detail-label\"},[_vm._v(\"充值状态\")]),_c('span',{staticClass:\"detail-value\"},[_c('el-tag',{attrs:{\"type\":_vm.getStatusType(_vm.selectedItem.status)}},[_vm._v(\" \"+_vm._s(_vm.getStatusText(_vm.selectedItem.status))+\" \")])],1)])])]),_c('div',{staticClass:\"detail-section\"},[_c('h3',{staticClass:\"section-title\"},[_vm._v(\"地址信息\")]),_c('div',{staticClass:\"detail-list\"},[_c('div',{staticClass:\"detail-row\"},[_c('span',{staticClass:\"detail-label\"},[_vm._v(\"充值地址\")]),_c('div',{staticClass:\"address-container\"},[_c('span',{staticClass:\"detail-value address\"},[_vm._v(_vm._s(_vm.selectedItem.address))]),_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.copyAddress(_vm.selectedItem.address)}}},[_vm._v(\" 复制 \")])],1)]),(_vm.selectedItem.txHash)?_c('div',{staticClass:\"detail-row\"},[_c('span',{staticClass:\"detail-label\"},[_vm._v(\"交易哈希\")]),_c('div',{staticClass:\"address-container\"},[_c('span',{staticClass:\"detail-value address\"},[_vm._v(_vm._s(_vm.selectedItem.txHash))]),_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.copyAddress(_vm.selectedItem.txHash)}}},[_vm._v(\" 复制 \")])],1)]):_vm._e()])]),_c('div',{staticClass:\"detail-section\"},[_c('h3',{staticClass:\"section-title\"},[_vm._v(\"时间信息\")]),_c('div',{staticClass:\"detail-list\"},[_c('div',{staticClass:\"detail-row\"},[_c('span',{staticClass:\"detail-label\"},[_vm._v(\"充值时间\")]),_c('span',{staticClass:\"detail-value\"},[_vm._v(_vm._s(_vm.formatFullTime(_vm.selectedItem.createTime)))])])])])]):_vm._e(),_c('div',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":_vm.closeDetail}},[_vm._v(\"关闭\")])],1)])],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"page-header\"},[_c('h1',{staticClass:\"page-title\"},[_vm._v(\"充值记录\")]),_c('p',{staticClass:\"page-subtitle\"},[_vm._v(\"查看您的充值申请和到账状态\")])])\n}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./productMachineAdd.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./productMachineAdd.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./productMachineAdd.vue?vue&type=template&id=4f1442d6&scoped=true\"\nimport script from \"./productMachineAdd.vue?vue&type=script&lang=js\"\nexport * from \"./productMachineAdd.vue?vue&type=script&lang=js\"\nimport style0 from \"./productMachineAdd.vue?vue&type=style&index=0&id=4f1442d6&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4f1442d6\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.payLoading),expression:\"payLoading\"}]},[(!_vm.safeItems.length)?_c('div',{staticClass:\"empty\"},[_vm._v(_vm._s(_vm.emptyText))]):_c('el-table',{attrs:{\"data\":_vm.safeItems,\"border\":\"\",\"header-cell-style\":{ textAlign: 'left' },\"cell-style\":{ textAlign: 'left' }}},[_c('el-table-column',{attrs:{\"type\":\"expand\",\"width\":\"46\"},scopedSlots:_vm._u([{key:\"default\",fn:function(outer){return [_c('el-table',{attrs:{\"data\":outer.row.orderItemDtoList || [],\"size\":\"small\",\"border\":\"\",\"header-cell-style\":{ textAlign: 'left' },\"cell-style\":{ textAlign: 'left' },\"row-key\":\"productMachineId\"}},[_c('el-table-column',{attrs:{\"prop\":\"productMachineId\",\"label\":\"机器ID\",\"min-width\":\"120\"}}),_c('el-table-column',{attrs:{\"prop\":\"name\",\"label\":\"名称\",\"min-width\":\"160\"}}),_c('el-table-column',{attrs:{\"prop\":\"payCoin\",\"label\":\"币种\",\"min-width\":\"100\"}}),_c('el-table-column',{attrs:{\"prop\":\"address\",\"label\":\"收款地址\",\"min-width\":\"240\"}}),_c('el-table-column',{attrs:{\"prop\":\"leaseTime\",\"label\":\"租赁天数\",\"min-width\":\"100\"}}),_c('el-table-column',{attrs:{\"prop\":\"price\",\"label\":\"售价(USDT)\",\"min-width\":\"240\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"value strong\"},[(_vm.formatAmount(scope.row.price, scope.row.payCoin || 'USDT').truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatAmount(scope.row.price, scope.row.payCoin || 'USDT').full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatAmount(scope.row.price, scope.row.payCoin || 'USDT').text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatAmount(scope.row.price, scope.row.payCoin || 'USDT').text))])],1)]}}],null,true)})],1)]}}])}),_c('el-table-column',{attrs:{\"label\":\"订单号\",\"min-width\":\"220\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"value mono\"},[_vm._v(_vm._s(scope.row && scope.row.orderNumber || '—'))])]}}])}),_c('el-table-column',{attrs:{\"label\":\"创建时间\",\"min-width\":\"180\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(_vm.formatDateTime(scope.row && scope.row.createTime)))]}}])}),_c('el-table-column',{attrs:{\"label\":\"商品数\",\"min-width\":\"100\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(Array.isArray(scope.row && scope.row.orderItemDtoList) ? scope.row.orderItemDtoList.length : 0))]}}])}),_c('el-table-column',{attrs:{\"label\":\"总金额(USDT)\",\"min-width\":\"140\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"value strong\"},[(_vm.formatAmount(scope.row && scope.row.totalPrice, 'USDT').truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatAmount(scope.row && scope.row.totalPrice, 'USDT').full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatAmount(scope.row && scope.row.totalPrice, 'USDT').text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatAmount(scope.row && scope.row.totalPrice, 'USDT').text))])],1)]}}])}),_c('el-table-column',{attrs:{\"min-width\":\"180\"},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('el-tooltip',{attrs:{\"placement\":\"top\",\"effect\":\"dark\"}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\" 实际支付金额/理论支付金额:\"),_c('br'),_vm._v(\" 1. 实际支付金额是按照矿机实际算力计算支付金额\"),_c('br'),_vm._v(\" 2. 理论支付金额是卖家定义出售价格 \")]),_c('span',{staticStyle:{\"display\":\"inline-flex\",\"align-items\":\"center\",\"gap\":\"6px\"}},[_c('i',{staticClass:\"el-icon-question\",staticStyle:{\"color\":\"#909399\"},attrs:{\"aria-label\":\"说明\",\"role\":\"img\"}}),_vm._v(\" 已支付金额(USDT) \")])])]},proxy:true},{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"value strong\"},[(_vm.formatAmount(scope.row && scope.row.payAmount, 'USDT').truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatAmount(scope.row && scope.row.payAmount, 'USDT').full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatAmount(scope.row && scope.row.payAmount, 'USDT').text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatAmount(scope.row && scope.row.payAmount, 'USDT').text))])],1)]}}])}),_c('el-table-column',{attrs:{\"label\":\"待支付金额(USDT)\",\"min-width\":\"140\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"value strong\"},[(_vm.formatAmount(scope.row && scope.row.noPayAmount, 'USDT').truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatAmount(scope.row && scope.row.noPayAmount, 'USDT').full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatAmount(scope.row && scope.row.noPayAmount, 'USDT').text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatAmount(scope.row && scope.row.noPayAmount, 'USDT').text))])],1)]}}])}),_c('el-table-column',{attrs:{\"label\":\"操作\",\"min-width\":\"280\",\"fixed\":\"right\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{staticStyle:{\"margin-right\":\"8px\"},attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.handleGoDetail(scope.row)}}},[_vm._v(\"详情\")]),(_vm.shouldShowActions(scope.row))?[_c('el-button',{attrs:{\"type\":\"primary\",\"size\":\"mini\"},on:{\"click\":function($event){return _vm.handleCheckout(scope.row)}}},[_vm._v(\"去结算\")])]:_vm._e()]}}])})],1),_c('el-dialog',{attrs:{\"visible\":_vm.dialogVisible,\"width\":\"520px\",\"title\":\"请扫码支付\"},on:{\"update:visible\":function($event){_vm.dialogVisible=$event}}},[_c('div',{staticStyle:{\"text-align\":\"left\",\"margin-bottom\":\"12px\",\"color\":\"#666\"}},[_c('div',{staticStyle:{\"margin-bottom\":\"6px\"}},[_vm._v(\"总金额(USDT): \"),_c('b',[(_vm.formatAmount(_vm.paymentDialog.totalPrice, 'USDT').truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatAmount(_vm.paymentDialog.totalPrice, 'USDT').full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatAmount(_vm.paymentDialog.totalPrice, 'USDT').text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatAmount(_vm.paymentDialog.totalPrice, 'USDT').text))])],1)]),_c('div',{staticStyle:{\"margin-bottom\":\"6px\",\"display\":\"flex\",\"align-items\":\"center\",\"gap\":\"6px\"}},[_c('el-tooltip',{attrs:{\"placement\":\"top\",\"effect\":\"dark\"}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\" 实际支付金额/理论支付金额:\"),_c('br'),_vm._v(\" 1. 实际支付金额是按照矿机实际算力计算支付金额\"),_c('br'),_vm._v(\" 2. 理论支付金额是卖家定义出售价格 \")]),_c('i',{staticClass:\"el-icon-question\",staticStyle:{\"color\":\"#909399\"},attrs:{\"aria-label\":\"说明\",\"role\":\"img\"}})]),_c('span',[_vm._v(\"已支付金额(USDT):\")]),_c('b',{staticClass:\"value strong\"},[(_vm.formatAmount(_vm.paymentDialog.payAmount, 'USDT').truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatAmount(_vm.paymentDialog.payAmount, 'USDT').full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatAmount(_vm.paymentDialog.payAmount, 'USDT').text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatAmount(_vm.paymentDialog.payAmount, 'USDT').text))])],1)],1),_c('div',{staticStyle:{\"margin-bottom\":\"6px\"}},[_vm._v(\"待支付金额(USDT): \"),_c('b',{staticClass:\"value strong\"},[(_vm.formatAmount(_vm.paymentDialog.noPayAmount, 'USDT').truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatAmount(_vm.paymentDialog.noPayAmount, 'USDT').full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatAmount(_vm.paymentDialog.noPayAmount, 'USDT').text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatAmount(_vm.paymentDialog.noPayAmount, 'USDT').text))])],1)])]),_c('div',{staticStyle:{\"text-align\":\"center\"}},[(_vm.paymentDialog.img)?_c('img',{staticStyle:{\"width\":\"180px\",\"height\":\"180px\",\"margin-top\":\"18px\"},attrs:{\"src\":_vm.paymentDialog.img,\"alt\":\"支付二维码\"}}):_c('div',{staticStyle:{\"color\":\"#666\"}},[_vm._v(\"未返回支付二维码\")])]),_c('p',{staticStyle:{\"margin-bottom\":\"6px\",\"color\":\"red\",\"text-align\":\"left\"}},[_vm._v(\"注意:如果已经支付对应金额,不要在重复支付,待系统确认后会自动更新订单状态。因个人原因重复支付导致无法退款,平台不承担任何责任。\")]),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.dialogVisible=false}}},[_vm._v(\"关闭\")])],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"product-new\"},[_c('el-card',{staticClass:\"product-form-card\"},[_c('div',{staticClass:\"card-header\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('h2',[_vm._v(\"新增商品\")]),_c('p',{staticClass:\"subtitle\"},[_vm._v(\"创建新的商品信息\")])]),_c('el-form',{ref:\"productForm\",staticClass:\"product-form\",attrs:{\"model\":_vm.form,\"rules\":_vm.rules,\"label-width\":\"120px\"}},[_c('el-form-item',{attrs:{\"label\":\"商品名称\",\"prop\":\"name\"}},[_c('el-input',{attrs:{\"placeholder\":\"请输入商品名称,如:Nexa-M2-Miner\",\"maxlength\":\"30\",\"show-word-limit\":\"\"},model:{value:(_vm.form.name),callback:function ($$v) {_vm.$set(_vm.form, \"name\", $$v)},expression:\"form.name\"}})],1),_c('el-form-item',{staticClass:\"align-like-input\",attrs:{\"label\":\"商品类型\",\"prop\":\"type\"}},[_c('el-radio-group',{model:{value:(_vm.form.type),callback:function ($$v) {_vm.$set(_vm.form, \"type\", $$v)},expression:\"form.type\"}},[_c('el-radio',{attrs:{\"label\":0}},[_vm._v(\"矿机\")])],1)],1),_c('el-form-item',{attrs:{\"label\":\"挖矿币种\",\"prop\":\"coin\"}},[_c('el-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"placeholder\":\"请选择挖矿币种\"},model:{value:(_vm.form.coin),callback:function ($$v) {_vm.$set(_vm.form, \"coin\", $$v)},expression:\"form.coin\"}},_vm._l((_vm.coinOptions),function(coin){return _c('el-option',{key:coin.value,attrs:{\"label\":coin.label,\"value\":coin.value}})}),1)],1),_c('el-form-item',{attrs:{\"label\":\"商品描述\",\"prop\":\"description\"}},[_c('el-input',{attrs:{\"type\":\"textarea\",\"rows\":4,\"placeholder\":\"请输入商品描述\",\"maxlength\":\"100\",\"show-word-limit\":\"\"},model:{value:(_vm.form.description),callback:function ($$v) {_vm.$set(_vm.form, \"description\", $$v)},expression:\"form.description\"}})],1),_c('el-form-item',{staticClass:\"align-like-input\",attrs:{\"label\":\"商品状态\",\"prop\":\"state\"}},[_c('el-radio-group',{model:{value:(_vm.form.state),callback:function ($$v) {_vm.$set(_vm.form, \"state\", $$v)},expression:\"form.state\"}},[_c('el-radio',{attrs:{\"label\":0}},[_vm._v(\"上架\")]),_c('el-radio',{attrs:{\"label\":1}},[_vm._v(\"下架\")])],1)],1),_c('el-form-item',{staticClass:\"actions-row\"},[_c('div',{staticClass:\"form-actions\"},[_c('el-button',{attrs:{\"type\":\"primary\",\"size\":\"medium\",\"loading\":_vm.submitting},on:{\"click\":_vm.handleSubmit}},[_vm._v(\"创建商品\")]),_c('el-button',{attrs:{\"size\":\"medium\"},on:{\"click\":_vm.handleReset}},[_vm._v(\"重置\")]),_c('el-button',{attrs:{\"size\":\"medium\"},on:{\"click\":_vm.handleCancel}},[_vm._v(\"取消\")])],1)])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.productDetailLoading),expression:\"productDetailLoading\"}],staticClass:\"product-detail\"},[(_vm.loading)?_c('div',{staticClass:\"loading\"},[_c('i',{staticClass:\"el-icon-loading\",attrs:{\"aria-label\":\"加载中\",\"role\":\"img\"}}),_vm._v(\" 加载中... \")]):(_vm.product)?_c('div',{staticClass:\"detail-container\"},[_c('h2',{staticStyle:{\"margin\":\"10px\",\"text-align\":\"left\",\"margin-top\":\"28px\"}},[_vm._v(\"商品详情-选择矿机\")]),_c('section',{staticClass:\"pay-methods\",attrs:{\"aria-label\":\"支付方式\"}},[_c('div',{staticClass:\"pay-label\",attrs:{\"tabindex\":\"0\",\"aria-label\":\"支付方式标签\"}},[_vm._v(\"支付方式:\")]),_c('ul',{staticClass:\"pay-list\",attrs:{\"role\":\"list\",\"aria-label\":\"支付方式列表\"}},_vm._l((_vm.paymentMethodList),function(item,index){return _c('li',{key:index,staticClass:\"pay-item\",attrs:{\"aria-label\":`支付方式: ${item.payChain}`}},[_c('el-tooltip',{attrs:{\"content\":_vm.formatPayTooltip(item),\"placement\":\"top\",\"open-delay\":80}},[_c('img',{staticClass:\"pay-icon\",attrs:{\"src\":_vm.getPayImageUrl(item),\"alt\":`${(item.payChain || '').toUpperCase()} ${(item.payCoin || '').toUpperCase()}`.trim(),\"title\":_vm.formatPayTooltip(item),\"tabindex\":\"0\",\"role\":\"img\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;$event.preventDefault();return _vm.handlePayIconKeyDown(item)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"]))return null;$event.preventDefault();return _vm.handlePayIconKeyDown(item)}]}})])],1)}),0)]),_c('section',{staticClass:\"filter-bar\",attrs:{\"aria-label\":\"筛选条件\"}},[_c('div',{staticClass:\"filter-grid\"},[_c('div',{staticClass:\"filter-cell\"},[_c('label',{staticClass:\"filter-title\",attrs:{\"for\":\"payFilter\"}},[_vm._v(\"支付方式筛选\")]),_c('el-select',{staticClass:\"filter-control\",attrs:{\"id\":\"payFilter\",\"placeholder\":\"全部\",\"clearable\":\"\",\"filterable\":\"\",\"size\":\"small\"},on:{\"change\":_vm.handlePayFilterChange},scopedSlots:_vm._u([{key:\"prefix\",fn:function(){return [(_vm.getSelectedPayIcon())?_c('img',{staticStyle:{\"width\":\"16px\",\"height\":\"16px\",\"border-radius\":\"3px\",\"margin-right\":\"6px\"},attrs:{\"src\":_vm.getSelectedPayIcon(),\"alt\":\"\"}}):_vm._e()]},proxy:true}]),model:{value:(_vm.selectedPayKey),callback:function ($$v) {_vm.selectedPayKey=$$v},expression:\"selectedPayKey\"}},_vm._l((_vm.paymentMethodList),function(opt,i){return _c('el-option',{key:i,attrs:{\"label\":_vm.formatPayTooltip(opt),\"value\":`${opt.payChain || ''}|${opt.payCoin || ''}`}},[_c('div',{staticClass:\"pay-opt\"},[_c('img',{staticClass:\"pay-icon\",attrs:{\"src\":_vm.getPayImageUrl(opt),\"alt\":\"\"}}),_c('span',[_vm._v(_vm._s((opt.payChain || '').toUpperCase())+\" - \"+_vm._s((opt.payCoin || '').toUpperCase()))])])])}),1)],1),_c('div',{staticClass:\"filter-cell center-title\"},[_c('label',{staticClass:\"filter-title\"},[_vm._v(\"单价区间\"),(_vm.getPriceCoinSymbol())?_c('span',[_vm._v(\"(\"+_vm._s(_vm.getPriceCoinSymbol())+\")\")]):_vm._e()]),_c('div',{staticClass:\"range-controls\"},[_c('el-input-number',{staticClass:\"filter-control\",attrs:{\"min\":0,\"step\":1,\"precision\":0,\"controls\":false,\"size\":\"small\"},model:{value:(_vm.filters.minPrice),callback:function ($$v) {_vm.$set(_vm.filters, \"minPrice\", $$v)},expression:\"filters.minPrice\"}}),_c('span',{staticClass:\"filter-sep\"},[_vm._v(\"-\")]),_c('el-input-number',{staticClass:\"filter-control\",attrs:{\"min\":0,\"step\":1,\"precision\":0,\"controls\":false,\"size\":\"small\"},model:{value:(_vm.filters.maxPrice),callback:function ($$v) {_vm.$set(_vm.filters, \"maxPrice\", $$v)},expression:\"filters.maxPrice\"}})],1)]),_c('div',{staticClass:\"filter-cell center-title\"},[_c('label',{staticClass:\"filter-title\"},[_vm._v(\"实际算力\")]),_c('div',{staticClass:\"range-controls\"},[_c('el-input-number',{staticClass:\"filter-control\",attrs:{\"min\":0,\"step\":0.1,\"precision\":2,\"controls\":false,\"size\":\"small\"},model:{value:(_vm.filters.minPower),callback:function ($$v) {_vm.$set(_vm.filters, \"minPower\", $$v)},expression:\"filters.minPower\"}}),_c('span',{staticClass:\"filter-sep\"},[_vm._v(\"-\")]),_c('el-input-number',{staticClass:\"filter-control\",attrs:{\"min\":0,\"step\":0.1,\"precision\":2,\"controls\":false,\"size\":\"small\"},model:{value:(_vm.filters.maxPower),callback:function ($$v) {_vm.$set(_vm.filters, \"maxPower\", $$v)},expression:\"filters.maxPower\"}}),_c('el-select',{staticClass:\"filter-control\",staticStyle:{\"max-width\":\"140px\"},attrs:{\"placeholder\":\"单位\",\"size\":\"small\"},model:{value:(_vm.filters.unit),callback:function ($$v) {_vm.$set(_vm.filters, \"unit\", $$v)},expression:\"filters.unit\"}},_vm._l((_vm.powerUnitOptions),function(u){return _c('el-option',{key:u,attrs:{\"label\":u,\"value\":u}})}),1)],1)]),_c('div',{staticClass:\"filter-cell filter-cell--span-2 center-title\"},[_c('label',{staticClass:\"filter-title\"},[_vm._v(\"功耗(kw/h)\")]),_c('div',{staticClass:\"range-controls\"},[_c('el-input-number',{staticClass:\"filter-control\",attrs:{\"min\":0,\"step\":0.1,\"precision\":2,\"controls\":false,\"size\":\"small\"},model:{value:(_vm.filters.minPowerDissipation),callback:function ($$v) {_vm.$set(_vm.filters, \"minPowerDissipation\", $$v)},expression:\"filters.minPowerDissipation\"}}),_c('span',{staticClass:\"filter-sep\"},[_vm._v(\"-\")]),_c('el-input-number',{staticClass:\"filter-control\",attrs:{\"min\":0,\"step\":0.1,\"precision\":2,\"controls\":false,\"size\":\"small\"},model:{value:(_vm.filters.maxPowerDissipation),callback:function ($$v) {_vm.$set(_vm.filters, \"maxPowerDissipation\", $$v)},expression:\"filters.maxPowerDissipation\"}}),_c('div',{staticClass:\"filter-actions-inline\"},[_c('el-button',{attrs:{\"type\":\"primary\",\"size\":\"small\",\"aria-label\":\"执行筛选\"},on:{\"click\":_vm.handleSearchFilters}},[_vm._v(\"筛选查询\")]),_c('el-button',{attrs:{\"size\":\"small\",\"aria-label\":\"重置筛选\"},on:{\"click\":_vm.handleResetFilters}},[_vm._v(\"重置\")])],1)],1)])])]),_c('section',{staticClass:\"productList\"},[_c('el-table',{ref:\"machineTable\",staticClass:\"series-table\",staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.machineList,\"row-key\":\"id\",\"row-class-name\":_vm.handleGetRowClass,\"header-cell-style\":{ textAlign: 'left' },\"cell-style\":{ textAlign: 'left' }}},[_c('el-table-column',{attrs:{\"width\":\"46\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-checkbox',{attrs:{\"disabled\":scope.row.saleState === 1 || scope.row.saleState === 2,\"title\":(scope.row.saleState === 1 || scope.row.saleState === 2) ? '该机器已售出或售出中,无法选择' : ''},on:{\"change\":checked => _vm.handleManualSelectFlat(scope.row, checked)},model:{value:(scope.row._selected),callback:function ($$v) {_vm.$set(scope.row, \"_selected\", $$v)},expression:\"scope.row._selected\"}})]}}])}),_c('el-table-column',{attrs:{\"prop\":\"theoryPower\",\"label\":\"理论算力\",\"header-align\":\"left\",\"align\":\"left\",\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"num-strong\"},[(_vm.formatNum6(scope.row.theoryPower).truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatNum6(scope.row.theoryPower).full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatNum6(scope.row.theoryPower).text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatNum6(scope.row.theoryPower).text))])],1),_vm._v(\" \"+_vm._s(scope.row.unit)+\" \")]}}])}),_c('el-table-column',{attrs:{\"header-align\":\"left\",\"align\":\"left\",\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('span',{staticClass:\"sortable\",class:{ active: _vm.activeSortField==='powerSort' },on:{\"click\":function($event){return _vm.handleToggleSort('powerSort')}}},[_vm._v(\" 实际算力 \"),_c('i',{staticClass:\"sort-arrow\",class:[(_vm.sortStates && _vm.sortStates.powerSort) ? 'asc' : 'desc', _vm.activeSortField==='powerSort' ? 'active' : '']})])]},proxy:true},{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"num-strong\"},[(_vm.formatNum6(scope.row.computingPower).truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatNum6(scope.row.computingPower).full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatNum6(scope.row.computingPower).text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatNum6(scope.row.computingPower).text))])],1),_vm._v(\" \"+_vm._s(scope.row.unit)+\" \")]}}])}),_c('el-table-column',{attrs:{\"prop\":\"powerDissipation\",\"header-align\":\"left\",\"align\":\"left\"},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('span',{staticClass:\"sortable\",class:{ active: _vm.activeSortField==='powerDissipationSort' },on:{\"click\":function($event){return _vm.handleToggleSort('powerDissipationSort')}}},[_vm._v(\" 功耗(kw/h) \"),_c('i',{staticClass:\"sort-arrow\",class:[(_vm.sortStates && _vm.sortStates.powerDissipationSort) ? 'asc' : 'desc', _vm.activeSortField==='powerDissipationSort' ? 'active' : '']})])]},proxy:true}])}),_c('el-table-column',{attrs:{\"prop\":\"algorithm\",\"label\":\"算法\",\"header-align\":\"left\",\"align\":\"left\"}}),_c('el-table-column',{attrs:{\"prop\":\"theoryIncome\",\"header-align\":\"left\",\"align\":\"left\",\"show-overflow-tooltip\":\"\"},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_vm._v(\" 单机理论收入(每日) \"),(_vm.getFirstCoinSymbol())?_c('span',[_vm._v(\"(\"+_vm._s(_vm.getFirstCoinSymbol())+\")\")]):_vm._e()]},proxy:true},{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"num-strong\"},[(_vm.formatNum6(scope.row.theoryIncome).truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatNum6(scope.row.theoryIncome).full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatNum6(scope.row.theoryIncome).text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatNum6(scope.row.theoryIncome).text))])],1)]}}])}),_c('el-table-column',{attrs:{\"prop\":\"theoryUsdtIncome\",\"label\":\"单机理论收入(每日/USDT)\",\"header-align\":\"left\",\"align\":\"left\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"num-strong\"},[(_vm.formatNum6(scope.row.theoryUsdtIncome).truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatNum6(scope.row.theoryUsdtIncome).full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatNum6(scope.row.theoryUsdtIncome).text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatNum6(scope.row.theoryUsdtIncome).text))])],1)]}}])}),_c('el-table-column',{attrs:{\"prop\":\"type\",\"label\":\"矿机型号\",\"header-align\":\"left\",\"align\":\"left\"}}),_c('el-table-column',{attrs:{\"label\":\"最大可租赁(天)\",\"header-align\":\"left\",\"align\":\"left\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(_vm.getRowMaxLeaseDays(scope.row)))]}}])}),_c('el-table-column',{attrs:{\"label\":\"租赁天数(天)\",\"header-align\":\"left\",\"align\":\"left\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-input-number',{attrs:{\"min\":1,\"max\":_vm.getRowMaxLeaseDays(scope.row),\"step\":1,\"precision\":0,\"size\":\"mini\",\"disabled\":scope.row.saleState === 1 || scope.row.saleState === 2,\"controls-position\":\"right\"},on:{\"change\":val => _vm.handleLeaseDaysChange(scope.row, val)},model:{value:(scope.row.leaseTime),callback:function ($$v) {_vm.$set(scope.row, \"leaseTime\", $$v)},expression:\"scope.row.leaseTime\"}})]}}])}),_c('el-table-column',{attrs:{\"prop\":\"price\",\"header-align\":\"left\",\"align\":\"center\"},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('span',{staticClass:\"sortable\",class:{ active: _vm.activeSortField==='priceSort' },on:{\"click\":function($event){return _vm.handleToggleSort('priceSort')}}},[_vm._v(\" 单价 \"),(_vm.getPriceCoinSymbol())?_c('span',[_vm._v(\"(\"+_vm._s(_vm.getPriceCoinSymbol())+\")\")]):_vm._e(),_c('i',{staticClass:\"sort-arrow\",class:[(_vm.sortStates && _vm.sortStates.priceSort) ? 'asc' : 'desc', _vm.activeSortField==='priceSort' ? 'active' : '']})])]},proxy:true},{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"price-strong\"},[(_vm.formatAmount(scope.row.price, _vm.getRowCoin(scope.row)).truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatAmount(scope.row.price, _vm.getRowCoin(scope.row)).full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatAmount(scope.row.price, _vm.getRowCoin(scope.row)).text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatAmount(scope.row.price, _vm.getRowCoin(scope.row)).text))])],1)]}}])}),_c('el-table-column',{attrs:{\"prop\":\"saleState\",\"label\":\"售出状态\",\"width\":\"110\",\"header-align\":\"left\",\"align\":\"left\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-tag',{attrs:{\"type\":scope.row.saleState === 0 ? 'info' : (scope.row.saleState === 1 ? 'danger' : 'warning')}},[_vm._v(\" \"+_vm._s(scope.row.saleState === 0 ? '未售出' : (scope.row.saleState === 1 ? '已售出' : '售出中'))+\" \")])]}}])})],1)],1),_c('div',{staticStyle:{\"margin\":\"18px\",\"text-align\":\"right\"}},[_c('el-button',{attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":_vm.handleOpenAddToCartDialog}},[_vm._v(\"加入购物车\")])],1),_c('el-dialog',{attrs:{\"visible\":_vm.confirmAddDialog.visible,\"width\":\"80vw\",\"title\":`确认加入购物车(共 ${_vm.confirmAddDialog.items.length} 台)`},on:{\"update:visible\":function($event){return _vm.$set(_vm.confirmAddDialog, \"visible\", $event)}},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [_c('el-button',{on:{\"click\":function($event){_vm.confirmAddDialog.visible = false}}},[_vm._v(\"取消\")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.handleConfirmAddSelectedToCart}},[_vm._v(\"确认加入\")])]},proxy:true}])},[_c('div',[_c('el-table',{attrs:{\"data\":_vm.confirmAddDialog.items,\"height\":\"360\",\"border\":\"\",\"stripe\":\"\",\"header-cell-style\":{ textAlign: 'left' },\"cell-style\":{ textAlign: 'left' }}},[_c('el-table-column',{attrs:{\"prop\":\"theoryPower\",\"label\":\"理论算力\",\"header-align\":\"left\",\"align\":\"left\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"num-strong\"},[(_vm.formatNum6(scope.row.theoryPower).truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatNum6(scope.row.theoryPower).full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatNum6(scope.row.theoryPower).text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatNum6(scope.row.theoryPower).text))])],1),_vm._v(\" \"+_vm._s(scope.row.unit)+\" \")]}}])}),_c('el-table-column',{attrs:{\"label\":\"实际算力\",\"header-align\":\"left\",\"align\":\"left\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"num-strong\"},[(_vm.formatNum6(scope.row.computingPower).truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatNum6(scope.row.computingPower).full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatNum6(scope.row.computingPower).text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatNum6(scope.row.computingPower).text))])],1),_vm._v(\" \"+_vm._s(scope.row.unit)+\" \")]}}])}),_c('el-table-column',{attrs:{\"prop\":\"algorithm\",\"label\":\"算法\",\"width\":\"120\",\"header-align\":\"left\",\"align\":\"left\"}}),_c('el-table-column',{attrs:{\"prop\":\"powerDissipation\",\"label\":\"功耗(kw/h)\",\"header-align\":\"left\",\"align\":\"left\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"num-strong\"},[(_vm.formatNum6(scope.row.powerDissipation).truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatNum6(scope.row.powerDissipation).full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatNum6(scope.row.powerDissipation).text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatNum6(scope.row.powerDissipation).text))])],1)]}}])}),_c('el-table-column',{attrs:{\"label\":\"租赁天数(天)\",\"header-align\":\"left\",\"align\":\"left\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(Number(scope.row.leaseTime || 1)))]}}])}),_c('el-table-column',{attrs:{\"prop\":\"price\",\"header-align\":\"left\",\"align\":\"left\"},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_vm._v(\" 单价 \"),(_vm.getPriceCoinSymbol())?_c('span',[_vm._v(\"(\"+_vm._s(_vm.getPriceCoinSymbol())+\")\")]):_vm._e()]},proxy:true},{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"price-strong\"},[(_vm.formatAmount(scope.row.price, _vm.getRowCoin(scope.row)).truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatAmount(scope.row.price, _vm.getRowCoin(scope.row)).full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatAmount(scope.row.price, _vm.getRowCoin(scope.row)).text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatAmount(scope.row.price, _vm.getRowCoin(scope.row)).text))])],1)]}}])})],1)],1)]),_c('el-row',{staticStyle:{\"margin-bottom\":\"20px\"}},[_c('el-col',{staticStyle:{\"display\":\"flex\",\"justify-content\":\"center\"},attrs:{\"span\":24}},[_c('el-pagination',{staticStyle:{\"margin\":\"0 auto\",\"margin-top\":\"10px\"},attrs:{\"current-page\":_vm.currentPage,\"page-sizes\":_vm.pageSizes,\"page-size\":_vm.params.pageSize,\"layout\":\"total, sizes, prev, pager, next, jumper\",\"total\":_vm.total},on:{\"size-change\":_vm.handleSizeChange,\"current-change\":_vm.handleCurrentChange,\"update:currentPage\":function($event){_vm.currentPage=$event},\"update:current-page\":function($event){_vm.currentPage=$event}}})],1)],1)],1):_c('div',{staticClass:\"not-found\"},[_c('h2',[_vm._v(\"商品不存在\")]),_c('p',[_vm._v(\"抱歉,您查找的商品不存在或已被删除。\")]),_c('button',{staticClass:\"back-btn\",on:{\"click\":_vm.handleBack}},[_vm._v(\"返回商品列表\")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @file 路由配置文件\n * @description 定义所有电商页面的路由配置\n */\n\n// 商品相关路由\nexport const productRoutes = [\n {\n path: '/productList',\n name: 'productList',\n \n component: () => import('../views/productList/index.vue'),\n meta: {\n title: '商品列表',\n description: '浏览所有可用商品',\n allAuthority: ['all']\n }\n },\n {\n path: '/product/:id',\n name: 'productDetail',\n component: () => import('../views/productDetail/index.vue'),\n meta: {\n title: '商品详情',\n description: '查看商品详细信息',\n allAuthority: ['all']\n }\n }\n]\n\n// 购物车相关路由\nexport const cartRoutes = [\n {\n path: '/cart',\n name: 'cart',\n component: () => import('../views/cart/index.vue'),\n meta: {\n title: '购物车',\n description: '管理购物车商品',\n allAuthority: ['all']\n }\n }\n]\n\n// 结算相关路由\nexport const checkoutRoutes = [\n {\n path: '/checkout',\n name: 'checkout',\n component: () => import('../views/checkout/index.vue'),\n meta: {\n title: '订单结算',\n description: '完成订单结算',\n allAuthority: ['all']\n }\n }\n]\n\n// 个人中心相关路由\nexport const accountRoutes = [\n {\n path: '/account',\n name: 'account',\n component: () => import('../views/account/index.vue'),\n redirect: '/account/shops',\n meta: {\n title: '个人中心',\n description: '管理个人资料和店铺',\n allAuthority: ['all']\n },\n children: [\n {\n path: 'wallet',\n name: 'Wallet',\n component: () => import('../views/account/wallet.vue'),\n meta: {\n title: '我的钱包',\n description: '查看钱包余额、充值和提现',\n allAuthority: ['all']\n }\n },\n {//充值记录\n path: 'rechargeRecord',\n name: 'RechargeRecord',\n component: () => import('../views/account/rechargeRecord.vue'),\n meta: {\n title: '充值记录',\n description: '查看充值记录',\n allAuthority: ['all']\n }\n },\n {//提现记录\n path: 'withdrawalHistory',\n name: 'WithdrawalHistory',\n component: () => import('../views/account/withdrawalHistory.vue'),\n meta: {\n title: '提现记录',\n description: '查看提现记录',\n allAuthority: ['all']\n }\n },\n {\n path: 'receipt-record',\n name: 'accountReceiptRecord',\n component: () => import('../views/account/receiptRecord.vue'),\n meta: {\n title: '收款记录',\n description: '卖家收款流水记录',\n allAuthority: ['all']\n }\n },\n {\n path: 'shop-new',\n name: 'accountShopNew',\n component: () => import('../views/account/shopNew.vue'),\n meta: {\n title: '新增店铺',\n description: '创建新的店铺',\n allAuthority: ['all']\n }\n },\n {\n path: 'shop-config',\n name: 'accountShopConfig',\n component: () => import('../views/account/shopConfig.vue'),\n meta: {\n title: '钱包绑定',\n description: '绑定店铺收款钱包',\n allAuthority: ['all']\n }\n },\n {\n path: 'shops',\n name: 'accountMyShops',\n component: () => import('../views/account/myShops.vue'),\n meta: {\n title: '我的店铺',\n description: '查看我的店铺信息',\n allAuthority: ['all']\n }\n },\n {\n path: 'product-new',\n name: 'accountProductNew',\n component: () => import('../views/account/productNew.vue'),\n meta: {\n title: '新增商品',\n description: '创建新的商品',\n allAuthority: ['all']\n }\n },\n {\n path: 'products',\n name: 'accountProducts',\n component: () => import('../views/account/products.vue'),\n meta: {\n title: '商品列表',\n description: '管理店铺下的商品列表',\n allAuthority: ['all']\n }\n },\n {\n path: 'purchased',\n name: 'accountPurchased',\n component: () => import('../views/account/purchased.vue'),\n meta: {\n title: '已购商品',\n description: '查看已购买的商品列表',\n allAuthority: ['all']\n }\n },\n {\n path: 'funds-flow',\n name: 'accountFundsFlow',\n component: () => import('../views/account/fundsFlow.vue'),\n meta: {\n title: '资金流水',\n description: '充值/提现/消费记录切换查看',\n allAuthority: ['all']\n }\n },\n {\n path: 'purchased-detail/:id',\n name: 'PurchasedDetail',\n component: () => import('../views/account/purchasedDetail.vue'),\n meta: {\n title: '已购商品详情',\n description: '查看已购商品详细信息',\n allAuthority: ['all']\n }\n },\n {\n path: 'orders',\n name: 'accountOrders',\n component: () => import('../views/account/orders.vue'),\n meta: {\n title: '订单列表',\n description: '查看与管理订单(按状态筛选)',\n allAuthority: ['all']\n }\n },\n {\n path: 'seller-orders',\n name: 'accountSellerOrders',\n component: () => import('../views/account/SellerOrders.vue'),\n meta: {\n title: '已售出订单',\n description: '卖家侧订单列表',\n allAuthority: ['all']\n }\n },\n {\n path: 'order-detail/:id',\n name: 'accountOrderDetail',\n component: () => import('../views/account/orderDetail.vue'),\n meta: {\n title: '订单详情',\n description: '查看订单详细信息',\n allAuthority: ['all']\n }\n },\n {\n path: 'product-detail/:id',\n name: 'accountProductDetail',\n component: () => import('../views/account/productDetail.vue'),\n meta: {\n title: '商品详情',\n description: '个人中心 - 商品详情',\n allAuthority: ['all']\n }\n },\n {\n path: 'product-machine-add',\n name: 'accountProductMachineAdd',\n component: () => import('../views/account/productMachineAdd.vue'),\n meta: {\n title: '添加出售机器',\n description: '为商品添加出售机器',\n allAuthority: ['all']\n }\n }\n ]\n }\n]\n\n// 所有子路由\nexport const childrenRoutes = [\n ...productRoutes,\n ...cartRoutes,\n ...checkoutRoutes,\n ...accountRoutes\n]\n\n// 主路由配置\nexport const mainRoutes = [\n {\n path: '/',\n name: 'Home',\n component: () => import('../Layout/idnex.vue'),\n redirect: '/productList',\n children: childrenRoutes\n },\n // 404页面重定向到商品列表\n {\n path: '*',\n redirect: '/productList'\n }\n]\n\nexport default mainRoutes ","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=59d86c16&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=59d86c16&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"59d86c16\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SellerOrders.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SellerOrders.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SellerOrders.vue?vue&type=template&id=c4d1af58&scoped=true\"\nimport script from \"./SellerOrders.vue?vue&type=script&lang=js\"\nexport * from \"./SellerOrders.vue?vue&type=script&lang=js\"\nimport style0 from \"./SellerOrders.vue?vue&type=style&index=0&id=c4d1af58&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c4d1af58\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=639b0fc8&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=639b0fc8&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"639b0fc8\",\n null\n \n)\n\nexport default component.exports","import request from '../utils/request'\r\n\r\n//创建订单及订单详情\r\nexport function addOrders(data) {\r\n return request({\r\n url: `/lease/order/info/addOrders`,\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n\r\n//取消订单\r\nexport function cancelOrder(data) {\r\n return request({\r\n url: `/lease/order/info/cancelOrder`,\r\n method: 'post',\r\n data\r\n })\r\n }\r\n\r\n\r\n //根据订单id查询订单信息\r\nexport function getOrdersByIds(data) {\r\n return request({\r\n url: `/lease/order/info/getOrdersByIds`,\r\n method: 'post',\r\n data\r\n })\r\n }\r\n\r\n \r\n //查询订单列表(买家侧)\r\nexport function getOrdersByStatus(data) {\r\n return request({\r\n url: `/lease/order/info/getOrdersByStatus`,\r\n method: 'post',\r\n data\r\n })\r\n }\r\n\r\n //查询订单列表(卖家侧)\r\nexport function getOrdersByStatusForSeller(data) {\r\n return request({\r\n url: `/lease/order/info/getOrdersByStatusForSeller`,\r\n method: 'post',\r\n data\r\n })\r\n }\r\n\r\n\r\n //结算前链和币种查询\r\nexport function getChainAndListForSeller(data) {\r\n return request({\r\n url: `/lease/shop/getChainAndListForSeller`,\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n //获取实时币价\r\n export function getCoinPrice(data) {\r\n return request({\r\n url: `/lease/order/info/getCoinPrice`,\r\n method: 'post',\r\n data\r\n })\r\n }\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./orderDetail.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./orderDetail.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./orderDetail.vue?vue&type=template&id=613e4d6c&scoped=true\"\nimport script from \"./orderDetail.vue?vue&type=script&lang=js\"\nexport * from \"./orderDetail.vue?vue&type=script&lang=js\"\nimport style0 from \"./orderDetail.vue?vue&type=style&index=0&id=613e4d6c&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"613e4d6c\",\n null\n \n)\n\nexport default component.exports","\nimport { getProductById } from '../../utils/productService'\nimport { addToCart } from '../../utils/cartManager'\nimport { getMachineInfo, getPayTypes } from '../../api/products'\nimport { addCart, getGoodsList } from '../../api/shoppingCart'\nimport { truncateAmountByCoin, truncateTo6 } from '../../utils/amount'\n\nexport default {\n name: 'ProductDetail',\n data() {\n return {\n product: null,\n loading: false,\n // 默认展开的行keys\n expandedRowKeys: [],\n selectedMap: {},\n // 新接口:单层矿机列表 & 支付方式\n machineList: [],\n paymentMethodList: [],\n // 筛选状态\n selectedPayKey: null,\n filters: {\n chain: '',\n coin: '',\n minPrice: null,\n maxPrice: null,\n minPower: null,\n maxPower: null,\n minPowerDissipation: null,\n maxPowerDissipation: null,\n unit: 'GH/S'\n },\n // 实际算力单位选项\n powerUnitOptions: ['KH/S', 'MH/S', 'GH/S', 'TH/S', 'PH/S'],\n // 排序状态:true 升序,false 降序\n sortStates: {\n priceSort: true,\n powerSort: true,\n powerDissipationSort: true\n },\n // 当前激活的排序字段(仅当用户点击后才会传参)\n activeSortField: '',\n // 首次进入时是否已按价格币种设置过支付方式筛选默认值\n payFilterDefaultApplied: false,\n params: {\n id: \"\",\n pageNum: 1,\n pageSize: 10,\n\n\n },\n confirmAddDialog: {\n visible: false,\n items: []\n },\n // 购物车中已存在的当前商品机器集合:id 与 user|miner 组合键\n cartMachineIdSet: new Set(),\n cartCompositeKeySet: new Set(),\n cartLoaded: false,\n machinesLoaded: false,\n /**\n * 可展开的产品系列数据\n * 每个系列(group)包含多个可选条目(variants)\n */\n productListData: [\n // {\n // id: 'grp-1',\n // group: 'A系列',\n // summary: {\n // theoryPower: '56T',\n // computingPower: '54T',\n // powerDissipation: '3200W',\n // algorithm: 'power',\n // type: 'A-Pro',\n // count: 3,\n // price: '¥1000+'\n // },\n // variants: [\n // { id: 'A-1', model: 'A1', theoryPower: '14T', computingPower: '13.5T', powerDissipation: '780W', algorithm: 'power', stock: 50, price: 999, quantity: 1 },\n // { id: 'A-2', model: 'A2', theoryPower: '18T', computingPower: '17.2T', powerDissipation: '900W', algorithm: 'power', stock: 40, price: 1299, quantity: 1 },\n // { id: 'A-3', model: 'A3', theoryPower: '24T', computingPower: '23.1T', powerDissipation: '1520W', algorithm: 'power', stock: 30, price: 1699, quantity: 1 }\n // ]\n // },\n // {\n // id: 'grp-2',\n // group: 'B系列',\n // summary: {\n // theoryPower: '72T',\n // computingPower: '70T',\n // powerDissipation: '4100W',\n // algorithm: 'power',\n // type: 'B-Max',\n // count: 2,\n // price: '¥2000+'\n // },\n // variants: [\n // { id: 'B-1', model: 'B1', theoryPower: '32T', computingPower: '31.2T', powerDissipation: '1800W', algorithm: 'power', stock: 28, price: 2199, quantity: 1 },\n // { id: 'B-2', model: 'B2', theoryPower: '40T', computingPower: '38.8T', powerDissipation: '2300W', algorithm: 'power', stock: 18, price: 2699, quantity: 1 }\n // ]\n // }\n ],\n tableData: [\n // {\n // theoryPower: \"55656\",//理论算力\n // computingPower: \"44545\",//实际算力\n // powerDissipation: \"5565\",//功耗\n // algorithm: \"power\",//算法\n // type: \"型号1\",//矿机型号\n // number:2001, \n // cost:\"1000\",//价格 \n // },\n // {\n // theoryPower: \"55656\",//理论算力\n // computingPower: \"44545\",//实际算力\n // powerDissipation: \"5565\",//功耗\n // algorithm: \"power\",//算法\n // type: \"型号1\",//矿机型号\n // number:2001, \n // cost:\"1000\",//价格 \n // },\n // {\n // theoryPower: \"55656\",//理论算力\n // computingPower: \"44545\",//实际算力\n // powerDissipation: \"5565\",//功耗\n // algorithm: \"power\",//算法\n // type: \"型号1\",//矿机型号\n // number:2001, \n // cost:\"1000\",//价格 \n // },\n // {\n // theoryPower: \"55656\",//理论算力\n // computingPower: \"44545\",//实际算力\n // powerDissipation: \"5565\",//功耗\n // algorithm: \"power\",//算法\n // type: \"型号1\",//矿机型号\n // number:2001, \n // cost:\"1000\",//价格 \n // },\n\n ],\n productDetailLoading: false,\n pageSizes: [10, 20, 50],\n currentPage: 1,\n total: 0,\n \n\n }\n },\n mounted() {\n if (this.$route.params.id) {\n this.params.id = this.$route.params.id\n this.product = true\n // 默认展开第一行\n if (this.productListData && this.productListData.length) {\n this.expandedRowKeys = [this.productListData[0].id]\n }\n this.fetchGetMachineInfo(this.params)//priceSort 价格,powerSort 算力,功耗powerDissipationSort 布尔类型,true 升序,false降序\n this.fetchPayTypes()\n } else {\n this.$message.error('商品不存在')\n this.product = false\n }\n this.fetchGetGoodsList()\n },\n methods: {\n // 行币种:优先行内 payCoin > coin,其次取全局表头币种\n getRowCoin(row) {\n try {\n const c = (row && (row.payCoin || row.coin)) || this.getPriceCoinSymbol() || ''\n return String(c).toUpperCase()\n } catch (e) { return '' }\n },\n // 金额格式化:不补0、不四舍五入;返回 {text,truncated,full}\n formatAmount(value, coin) {\n return truncateAmountByCoin(value, coin)\n },\n // 数值格式化:最多6位小数,截断不补0\n formatNum6(value) {\n return truncateTo6(value)\n },\n /**\n * 首次加载时,将“支付方式筛选”的默认选中值设为与价格列币种一致,\n * 并同步 filters.chain/filters.coin;仅执行一次,不触发额外查询。\n */\n ensureDefaultPayFilterSelection() {\n try {\n if (this.payFilterDefaultApplied) return\n const payList = Array.isArray(this.paymentMethodList) ? this.paymentMethodList : []\n if (!payList.length) return\n const coinSymbol = (this.getPriceCoinSymbol && this.getPriceCoinSymbol()) || ''\n if (!coinSymbol) return\n const hit = payList.find(it => String(it && it.payCoin).toUpperCase() === String(coinSymbol).toUpperCase())\n if (!hit) return\n const key = `${hit.payChain || ''}|${hit.payCoin || ''}`\n this.selectedPayKey = key\n this.filters.chain = String(hit.payChain || '').trim()\n this.filters.coin = String(hit.payCoin || '').trim()\n this.payFilterDefaultApplied = true\n } catch (e) { /* noop */ }\n },\n // 切换排序:field in ['priceSort','powerSort','powerDissipationSort']\n handleToggleSort(field) {\n try {\n if (!this.sortStates) this.sortStates = {}\n if (this.activeSortField !== field) {\n // 切换到新的字段:默认从升序开始(true)\n // 先将其它字段复位为升序(▲)\n Object.keys(this.sortStates).forEach(k => { this.sortStates[k] = true })\n this.activeSortField = field\n // 后端默认升序,首次点击应为降序\n this.sortStates[field] = false\n } else {\n // 同一字段:升降序切换\n this.sortStates[field] = !this.sortStates[field]\n }\n const params = this.buildQueryParams()\n this.fetchGetMachineInfo(params)\n } catch (e) { /* noop */ }\n },\n // 组合查询参数(带上商品 id 与筛选条件)\n buildQueryParams() {\n const q = { id: this.params.id }\n // 分页参数始终透传\n try {\n if (this.params && this.params.pageNum != null) q.pageNum = this.params.pageNum\n if (this.params && this.params.pageSize != null) q.pageSize = this.params.pageSize\n } catch (e) { /* noop */ }\n // 仅当用户真实填写(>0)时才传参;默认/空值不传\n const addNum = (obj, key, name) => {\n const raw = obj[key]\n if (raw === null || raw === undefined || raw === '') return\n const n = Number(raw)\n if (Number.isFinite(n) && n > 0) q[name] = n\n }\n // 支付方式条件:有值才传\n if (this.filters.chain && String(this.filters.chain).trim()) q.chain = String(this.filters.chain).trim()\n if (this.filters.coin && String(this.filters.coin).trim()) q.coin = String(this.filters.coin).trim()\n if (this.filters.unit && String(this.filters.unit).trim()) q.unit = String(this.filters.unit).trim()\n addNum(this.filters, 'minPrice', 'minPrice')\n addNum(this.filters, 'maxPrice', 'maxPrice')\n addNum(this.filters, 'minPower', 'minPower')\n addNum(this.filters, 'maxPower', 'maxPower')\n addNum(this.filters, 'minPowerDissipation', 'minPowerDissipation')\n addNum(this.filters, 'maxPowerDissipation', 'maxPowerDissipation')\n // 排序参数:仅在用户点击某一列后传当前列\n try {\n if (this.activeSortField) {\n const s = this.sortStates || {}\n q[this.activeSortField] = !!s[this.activeSortField]\n }\n } catch (e) { /* noop */ }\n return q\n },\n // 拉取支付方式\n async fetchPayTypes() {\n try {\n const res = await getPayTypes({ productId: this.params.id })\n // 接口示例:{ code: 0, data: [ { payChain, payCoin, payCoinImage, shopId } ], msg: '' }\n if (res && (res.code === 0 || res.code === 200)) {\n const list = Array.isArray(res.data) ? res.data : []\n this.paymentMethodList = list\n // 支付方式加载后尝试设置默认筛选\n this.ensureDefaultPayFilterSelection()\n }\n } catch (e) {\n // 忽略错误,保持页面可用\n this.paymentMethodList = []\n }\n },\n\n async fetchGetMachineInfo(params) {\n this.productDetailLoading = true\n const res = await getMachineInfo(params)\n console.log(res)\n if (res && res.code === 200) {\n console.log(res.data, 'res.rows');\n this.total = res.total||0;\n // 新数据结构:机器为扁平 rows 列表;仅当后端返回有效支付方式时才覆盖,避免清空 getPayTypes 的结果\n try {\n const payList = res && res.data && res.data.payConfigList\n if (Array.isArray(payList) && payList.length) {\n this.paymentMethodList = payList\n }\n } catch (e) { /* keep existing paymentMethodList */ }\n const rows = (res && res.data && (res.data.rows || res.data.list)) || (res && res.rows) || []\n const normalized = (Array.isArray(rows) ? rows : []).map((m, idx) => ({\n ...m,\n id: m && (m.id !== undefined && m.id !== null) ? m.id : `m-${idx}`,\n leaseTime: (m && m.leaseTime && Number(m.leaseTime) > 0) ? Number(m.leaseTime) : 1,\n _selected: false\n }))\n this.machineList = normalized\n // 清空旧的两层结构数据,避免误用\n this.productListData = []\n this.expandedRowKeys = []\n // 机器加载后尝试设置默认筛选\n this.ensureDefaultPayFilterSelection()\n this.$nextTick(() => {\n this.machinesLoaded = true\n })\n }\n\n this.productDetailLoading = false\n },\n /**\n * 加载商品详情\n */\n async loadProduct() {\n try {\n this.loading = true\n const productId = this.$route.params.id\n this.product = await getProductById(productId)\n\n if (!this.product) {\n this.$message({\n message: '商品不存在',\n type: 'error',\n showClose: true\n })\n }\n } catch (error) {\n console.error('加载商品详情失败:', error)\n this.$message({\n message: '加载商品详情失败,请稍后重试',\n type: 'error',\n showClose: true\n })\n } finally {\n this.loading = false\n }\n },\n //加入购物车\n async fetchAddCart(params) {\n const res = await addCart(params)\n\n return res\n },\n //查询购物车列表\n async fetchGetGoodsList(params) {\n const res = await getGoodsList(params)\n // 统计当前商品在购物车中已有的机器ID,用于禁用和默认勾选\n try {\n const productId = this.params && this.params.id ? Number(this.params.id) : Number(this.$route.params.id)\n // 兼容两种返回结构:1) 旧:直接是商品分组数组 2) 新:店铺数组 → shoppingCartInfoDtoList\n const rawRows = Array.isArray(res && res.rows)\n ? res.rows\n : Array.isArray(res && res.data && res.data.rows)\n ? res.data.rows\n : Array.isArray(res && res.data)\n ? res.data\n : []\n // 扁平化为商品分组\n const groups = rawRows.length && rawRows[0] && Array.isArray(rawRows[0].shoppingCartInfoDtoList)\n ? rawRows.flatMap(shop => Array.isArray(shop.shoppingCartInfoDtoList) ? shop.shoppingCartInfoDtoList : [])\n : rawRows\n const matched = groups.filter(g => Number(g.productId) === productId)\n const ids = new Set()\n const compositeKeys = new Set()\n matched.forEach(r => {\n const list = Array.isArray(r.productMachineDtoList) ? r.productMachineDtoList : []\n list.forEach(m => {\n if (!m) return\n if (m.id !== undefined && m.id !== null) ids.add(String(m.id))\n if (m.user && m.miner) compositeKeys.add(`${String(m.user)}|${String(m.miner)}`)\n })\n })\n this.cartMachineIdSet = ids\n this.cartCompositeKeySet = compositeKeys\n // 计算购物车总数量并通知头部,避免页面初次加载时徽标显示为0\n try {\n const totalCount = groups.reduce((sum, g) => sum + (Array.isArray(g && g.productMachineDtoList) ? g.productMachineDtoList.length : 0), 0)\n if (Number.isFinite(totalCount)) {\n window.dispatchEvent(new CustomEvent('cart-updated', { detail: { count: totalCount } }))\n }\n } catch (e) { /* noop */ }\n // 展开表格渲染后,默认勾选并禁用这些行\n this.$nextTick(() => {\n this.cartLoaded = true\n this.autoSelectAndDisable()\n })\n } catch (e) {\n console.warn('解析购物车数据失败', e)\n }\n },\n\n /**\n * 处理返回\n */\n handleBack() {\n this.$router.push('/productList')\n },\n\n\n\n /**\n * 点击系列行:切换展开/收起\n * @param {Object} row - 当前行\n */\n handleSeriesRowClick(row) {\n const key = row.id\n const lockedIds = Object.keys(this.selectedMap).filter(k => (this.selectedMap[k] || []).length > 0)\n const opened = this.expandedRowKeys.includes(key)\n if (opened) {\n // 关闭当前行,仅保留已勾选的行展开\n this.expandedRowKeys = lockedIds\n } else {\n // 打开当前行,同时保留已勾选的行展开\n this.expandedRowKeys = Array.from(new Set([key, ...lockedIds]))\n }\n },\n\n /**\n * 外层系列行样式\n */\n handleGetSeriesRowClassName() {\n return 'series-clickable-row'\n },\n\n // 子表选择变化\n handleInnerSelectionChange(parentRow, selections) {\n const key = parentRow.id\n this.$set(this.selectedMap, key, selections)\n const lockedIds = Object.keys(this.selectedMap).filter(k => (this.selectedMap[k] || []).length > 0)\n // 更新展开:锁定的行始终展开\n const openedSet = new Set(this.expandedRowKeys)\n lockedIds.forEach(id => openedSet.add(id))\n // 清理不再勾选且不是当前展开的行\n this.expandedRowKeys = Array.from(openedSet).filter(id => lockedIds.includes(id) || id === key || this.expandedRowKeys.includes(id))\n },\n\n // 展开行变化时:已取消自动与购物车对比,无需勾选/禁用\n handleExpandChange(row, expandedRows) {\n // no-op\n },\n\n // 已取消对比购物车的自动勾选/禁用逻辑\n autoSelectAndDisable() { },\n\n // 选择器可选控制:已在购物车中的机器不可再选\n isSelectable(row, index) {\n // 不再通过 selectable 禁用,以便勾选可见;通过行样式和交互阻止点击\n return true\n },\n\n // 判断在特定父行下是否已选择(配合自定义checkbox使用)\n isSelectedByParent(parentRow, row) {\n const key = parentRow && parentRow.id\n const list = (key && this.selectedMap[key]) || []\n return !!list.find(it => it && it.id === row.id)\n },\n\n // 手动切换选择(自定义checkbox与 selectedMap 同步),并维护每行的 _selected 状态\n handleManualSelect(parentRow, row, checked) {\n // 禁用:已售出或售出中的机器不可选择\n if (row && (row.saleState === 1 || row.saleState === 2)) {\n this.$message.warning('该机器已售出或售出中,无法选择')\n this.$set(row, '_selected', false)\n return\n }\n const key = parentRow.id\n const list = (this.selectedMap[key] && [...this.selectedMap[key]]) || []\n const idx = list.findIndex(it => it && it.id === row.id)\n if (checked && idx === -1) list.push(row)\n if (!checked && idx > -1) list.splice(idx, 1)\n this.$set(this.selectedMap, key, list)\n this.$set(row, '_selected', !!checked)\n },\n\n // 为子表中已在购物车的行添加只读样式,并阻止点击取消\n handleGetInnerRowClass({ row }) {\n if (!row) return ''\n return (row.saleState === 1 || row.saleState === 2) ? 'sold-row' : ''\n },\n\n /**\n * 子行:减少数量\n * @param {number} groupIndex - 系列索引\n * @param {number} variantIndex - 变体索引\n */\n handleDecreaseVariantQuantity(groupIndex, variantIndex) {\n const item = this.productListData[groupIndex].variants[variantIndex]\n if (item.quantity > 1) {\n item.quantity--\n }\n },\n\n /**\n * 子行:增加数量\n * @param {number} groupIndex - 系列索引\n * @param {number} variantIndex - 变体索引\n */\n handleIncreaseVariantQuantity(groupIndex, variantIndex) {\n const item = this.productListData[groupIndex].variants[variantIndex]\n if (item.quantity < 99) {\n item.quantity++\n }\n },\n\n /**\n * 子行:输入数量校验\n * @param {number} groupIndex - 系列索引\n * @param {number} variantIndex - 变体索引\n */\n handleVariantQuantityInput(groupIndex, variantIndex) {\n const item = this.productListData[groupIndex].variants[variantIndex]\n const q = Number(item.quantity)\n if (!q || q < 1) item.quantity = 1\n if (q > 99) item.quantity = 99\n },\n\n /**\n * 子行:加入购物车\n * @param {Object} variant - 子项行数据\n */\n handleAddVariantToCart(variant) {\n if (!variant || !variant.onlyKey) return\n try {\n addToCart({\n id: variant.onlyKey,\n title: variant.model,\n price: variant.price,\n quantity: variant.quantity\n })\n this.$message.success(`已添加 ${variant.quantity} 件 ${variant.model} 到购物车`)\n variant.quantity = 1\n } catch (error) {\n console.error('添加到购物车失败:', error)\n\n }\n },\n // 统一加入购物车\n handleAddSelectedToCart() {\n const allSelected = Object.values(this.selectedMap).flat().filter(Boolean)\n if (!allSelected.length) {\n this.$message.warning('请先勾选至少一台矿机')\n return\n }\n try {\n allSelected.forEach(item => {\n addToCart({\n id: item.onlyKey || item.id,\n title: item.type || item.model || '矿机',\n price: item.price,\n quantity: 1,\n leaseTime: Number(item.leaseTime || 1)\n })\n })\n this.$message.success(`已加入 ${allSelected.length} 台矿机到购物车`)\n this.selectedMap = {}\n } catch (e) {\n console.error('统一加入购物车失败', e)\n\n }\n },\n // 打开确认弹窗:以当前界面勾选(_selected)为准,并在打开后清空左侧勾选状态\n handleOpenAddToCartDialog() {\n // 扫描当前所有系列下被勾选的机器\n const groups = Array.isArray(this.productListData) ? this.productListData : []\n const pickedAll = groups.flatMap(g => Array.isArray(g.productMachines) ? g.productMachines.filter(m => !!m && !!m._selected) : [])\n const picked = pickedAll.filter(m => m && (m.saleState === 0 || m.saleState === undefined || m.saleState === null))\n if (!picked.length) {\n this.$message.warning('请先勾选至少一台矿机')\n return\n }\n if (picked.length < pickedAll.length) {\n this.$message.warning('部分机器已售出或售出中,已自动为您排除')\n }\n // 使用弹窗中的固定快照,避免后续清空勾选影响弹窗显示\n this.confirmAddDialog.items = picked.slice()\n this.confirmAddDialog.visible = true\n // 打开后立即把左侧复选框清空,避免“勾选了两个但弹窗只有一条”的不一致问题\n this.$nextTick(() => {\n try { this.clearAllSelections() } catch (e) { /* noop */ }\n })\n },\n // 确认加入:调用后端购物车接口,传入裸数组 [{ productId, productMachineId }]\n async handleConfirmAddSelectedToCart() {\n // 以弹窗中的列表为准,避免与左侧勾选状态不一致\n const allSelected = Array.isArray(this.confirmAddDialog.items) ? this.confirmAddDialog.items.filter(Boolean) : []\n if (!allSelected.length) {\n this.$message.warning('请先勾选至少一台矿机')\n return\n }\n\n const productId = this.params && this.params.id ? this.params.id : (this.$route && this.$route.params && this.$route.params.id)\n if (!productId) {\n this.$message.error('商品ID缺失,无法加入购物车')\n return\n }\n\n // 裸数组,仅包含后端要求的两个字段\n const payload = allSelected.map(item => ({\n productId: productId,\n productMachineId: item.id,\n leaseTime: Number(item.leaseTime || 1)\n }))\n\n try {\n const res = await this.fetchAddCart(payload)\n // 若后端返回码存在,这里做一下兜底提示\n if (!res || (res.code && Number(res.code) !== 200)) {\n this.$message.error(res && res.msg ? res.msg : '加入购物车失败,请稍后重试')\n return\n }\n // 立即本地更新禁用状态:把刚加入的机器ID合并进本地集合\n try {\n allSelected.forEach(item => {\n if (item && item.id) this.cartMachineIdSet.add(item.id)\n this.$set(item, '_selected', false)\n this.$set(item, '_inCart', true)\n if (!item.leaseTime || Number(item.leaseTime) <= 0) this.$set(item, 'leaseTime', 1)\n })\n this.$nextTick(() => this.autoSelectAndDisable())\n } catch (e) { /* noop */ }\n\n this.$message({\n message: `已加入 ${allSelected.length} 台矿机到购物车`,\n type: 'success',\n duration: 3000,\n showClose: true,\n });\n\n this.confirmAddDialog.visible = false\n // 清空选中映射,然后重新加载数据(数据加载时会自动设置 _selected: false)\n this.selectedMap = {}\n // 重新加载机器信息和购物车数据\n this.fetchGetMachineInfo(this.params)\n this.fetchGetGoodsList()\n // 通知头部刷新服务端购物车数量\n try {\n // 如果没有传数量,header 会主动拉取服务端数量\n window.dispatchEvent(new CustomEvent('cart-updated'))\n } catch (e) { /* noop */ }\n\n } catch (e) {\n console.error('加入购物车失败: ', e)\n this.$message.error('加入购物车失败,请稍后重试')\n }\n },\n\n // 取消所有商品勾选(内层表格的自定义 checkbox)\n clearAllSelections() {\n try {\n // 清空选中映射(遗留字段)\n this.selectedMap = {}\n if (Array.isArray(this.machineList) && this.machineList.length) {\n this.machineList.forEach(m => { if (m) this.$set(m, '_selected', false) })\n return\n }\n const groups = Array.isArray(this.productListData) ? this.productListData : []\n groups.forEach(g => {\n const list = Array.isArray(g.productMachines) ? g.productMachines : []\n list.forEach(m => { if (m) this.$set(m, '_selected', false) })\n })\n } catch (e) { /* noop */ }\n },\n\n /**\n * 减少数量\n * @param {number} rowIndex - 表格行索引\n */\n handleDecreaseQuantity(rowIndex) {\n if (this.tableData[rowIndex].quantity > 1) {\n this.tableData[rowIndex].quantity--\n }\n },\n\n /**\n * 增加数量\n * @param {number} rowIndex - 表格行索引\n */\n handleIncreaseQuantity(rowIndex) {\n if (this.tableData[rowIndex].quantity < 99) {\n this.tableData[rowIndex].quantity++\n }\n },\n\n /**\n * 处理数量输入\n * @param {number} rowIndex - 表格行索引\n */\n handleQuantityInput(rowIndex) {\n const quantity = this.tableData[rowIndex].quantity\n if (quantity < 1) {\n this.tableData[rowIndex].quantity = 1\n } else if (quantity > 99) {\n this.tableData[rowIndex].quantity = 99\n }\n },\n\n /**\n * 处理数量输入框失焦\n * @param {number} rowIndex - 表格行索引\n */\n handleQuantityBlur(rowIndex) {\n const quantity = this.tableData[rowIndex].quantity\n if (!quantity || quantity < 1) {\n this.tableData[rowIndex].quantity = 1\n } else if (quantity > 99) {\n this.tableData[rowIndex].quantity = 99\n }\n },\n\n /**\n * 添加到购物车\n * @param {Object} rowData - 表格行数据\n */\n handleAddToCart(rowData) {\n if (!rowData || rowData.quantity < 1) {\n this.$message.warning('请选择有效的数量')\n return\n }\n\n try {\n addToCart({\n id: rowData.date, // 使用矿机名称作为ID\n title: rowData.date,\n price: rowData.price,\n quantity: rowData.quantity,\n leaseTime: Number(rowData.leaseTime || 1)\n })\n\n this.$message.success(`已添加 ${rowData.quantity} 件 ${rowData.date} 到购物车`)\n\n // 重置数量\n rowData.quantity = 1\n } catch (error) {\n console.error('添加到购物车失败:', error)\n this.$message.error('添加到购物车失败,请稍后重试')\n }\n },\n handleSizeChange(val) {\n console.log(`每页 ${val} 条`);\n this.params.pageSize = val;\n this.params.pageNum = 1;\n this.currentPage = 1;\n // 携带当前激活的排序字段\n this.fetchGetMachineInfo(this.buildQueryParams());\n \n },\n handleCurrentChange(val) {\n console.log(`当前页: ${val}`);\n this.params.pageNum = val;\n // 携带当前激活的排序字段\n this.fetchGetMachineInfo(this.buildQueryParams());\n },\n }\n}","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"purchased-detail-page\"},[_c('h2',{staticClass:\"title\"},[_vm._v(\"已购商品详情\")]),(_vm.loading)?_c('div',{staticClass:\"loading\"},[_vm._v(\"加载中...\")]):_c('div',[_c('el-card',{staticClass:\"section\"},[_c('div',{staticClass:\"sub-title\"},[_vm._v(\"基本信息\")]),_c('div',{staticClass:\"row\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"用户:\")]),_c('span',{staticClass:\"value mono\"},[_vm._v(_vm._s(_vm.detail.userId || '—'))])]),_c('div',{staticClass:\"row\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"订单项ID:\")]),_c('span',{staticClass:\"value mono\"},[_vm._v(_vm._s(_vm.detail.orderItemId || '—'))])]),_c('div',{staticClass:\"row\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"机器ID:\")]),_c('span',{staticClass:\"value mono\"},[_vm._v(_vm._s(_vm.detail.productMachineId || '—'))])]),_c('div',{staticClass:\"row\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"商品类型:\")]),_c('span',{staticClass:\"value\"},[_c('el-tag',{attrs:{\"type\":_vm.detail.type === 1 ? 'success' : 'info'}},[_vm._v(\" \"+_vm._s(_vm.detail.type === 1 ? \"算力套餐\" : \"挖矿机器\")+\" \")])],1)]),_c('div',{staticClass:\"row\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"状态:\")]),_c('span',{staticClass:\"value\"},[_c('el-tag',{attrs:{\"type\":_vm.detail.status === 0 ? 'success' : 'info'}},[_vm._v(\" \"+_vm._s(_vm.detail.status === 0 ? \"运行中\" : \"已过期\")+\" \")])],1)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.detail.type === 1),expression:\"detail.type === 1\"}],staticClass:\"row\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"购买算力:\")]),_c('span',{staticClass:\"value strong\"},[_vm._v(_vm._s(_vm.detail.purchasedComputingPower))])]),_c('div',{staticClass:\"row\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"购买时间:\")]),_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.formatDateTime(_vm.detail.createTime)))])]),_c('div',{staticClass:\"row\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"开始时间:\")]),_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.formatDateTime(_vm.detail.startTime)))])]),_c('div',{staticClass:\"row\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"结束时间:\")]),_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.formatDateTime(_vm.detail.endTime)))])])]),_c('el-card',{staticClass:\"section\",staticStyle:{\"margin-top\":\"12px\"}},[_c('div',{staticClass:\"sub-title\"},[_vm._v(\"收益信息\")]),_c('div',{staticClass:\"row\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"当前实际算力:\")]),_c('span',{staticClass:\"value strong\"},[_vm._v(_vm._s(_vm.detail.currentComputingPower || '0'))])]),_c('div',{staticClass:\"row\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"币种收益:\")]),_c('span',{staticClass:\"value strong\"},[_vm._v(_vm._s(_vm.detail.currentIncome || '0'))])]),_c('div',{staticClass:\"row\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"当前USDT收益:\")]),_c('span',{staticClass:\"value strong\"},[_vm._v(_vm._s(_vm.detail.currentUsdtIncome || '0')+\" USDT\")])]),_c('div',{staticClass:\"row\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"预估结束总收益:\")]),_c('span',{staticClass:\"value strong\"},[_vm._v(_vm._s(_vm.detail.estimatedEndIncome || '0'))])]),_c('div',{staticClass:\"row\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"预估结束USDT总收益:\")]),_c('span',{staticClass:\"value strong\"},[_vm._v(_vm._s(_vm.detail.estimatedEndUsdtIncome || '0')+\" USDT\")])])]),_c('div',{staticClass:\"actions\"},[_c('el-button',{on:{\"click\":function($event){return _vm.$router.back()}}},[_vm._v(\"返回\")])],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./shopConfig.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./shopConfig.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./shopConfig.vue?vue&type=template&id=42f7ea7c&scoped=true\"\nimport script from \"./shopConfig.vue?vue&type=script&lang=js\"\nexport * from \"./shopConfig.vue?vue&type=script&lang=js\"\nimport style0 from \"./shopConfig.vue?vue&type=style&index=0&id=42f7ea7c&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"42f7ea7c\",\n null\n \n)\n\nexport default component.exports","// 金额截断显示工具(不补0、不四舍五入)\r\n// 规则:\r\n// - USDT: 最多6位小数\r\n// - ETH: 最多8位小数\r\n// - 其他币种: 最多6位小数\r\n// 返回 { text, truncated, full }\r\n\r\nexport function getMaxDecimalsByCoin() {\r\n // 全站统一:最多 6 位小数\r\n return 6;\r\n}\r\n\r\nexport function truncateAmountRaw(value, maxDecimals) {\r\n if (value === null || value === undefined) {\r\n return { text: '0', truncated: false, full: '0' };\r\n }\r\n const raw = String(value);\r\n if (!raw) return { text: '0', truncated: false, full: '0' };\r\n // 非数字字符串直接返回原值\r\n if (!/^-?\\d+(\\.\\d+)?$/.test(raw)) {\r\n return { text: raw, truncated: false, full: raw };\r\n }\r\n const isNegative = raw.startsWith('-');\r\n const abs = isNegative ? raw.slice(1) : raw;\r\n const [intPart, decPart = ''] = abs.split('.');\r\n const keep = decPart.slice(0, Math.max(0, maxDecimals));\r\n const truncated = decPart.length > maxDecimals;\r\n const text = (isNegative ? '-' : '') + (keep ? `${intPart}.${keep}` : intPart);\r\n return { text, truncated, full: raw };\r\n}\r\n\r\nexport function truncateAmountByCoin(value, coin) {\r\n const max = getMaxDecimalsByCoin(coin);\r\n return truncateAmountRaw(value, max);\r\n}\r\n\r\n// 默认 6 位截断(非币种语境也可复用)\r\nexport function truncateTo6(value) {\r\n return truncateAmountRaw(value, 6);\r\n}\r\n\r\n","// 全局 loading 状态管理器\r\nclass LoadingManager {\r\n constructor() {\r\n this.loadingStates = new Map(); // 存储所有 loading 状态\r\n this.setupListeners();\r\n }\r\n \r\n setupListeners() {\r\n // 监听网络重试完成事件\r\n window.addEventListener('network-retry-complete', () => {\r\n this.resetAllLoadingStates();\r\n });\r\n }\r\n \r\n // 设置 loading 状态\r\n setLoading(componentId, stateKey, value) {\r\n const key = `${componentId}:${stateKey}`;\r\n this.loadingStates.set(key, {\r\n value,\r\n timestamp: Date.now()\r\n });\r\n }\r\n \r\n // 获取 loading 状态\r\n getLoading(componentId, stateKey) {\r\n const key = `${componentId}:${stateKey}`;\r\n const state = this.loadingStates.get(key);\r\n return state ? state.value : false;\r\n }\r\n \r\n // 重置所有 loading 状态\r\n resetAllLoadingStates() {\r\n // 清除所有处于加载状态的组件\r\n const componentsToUpdate = [];\r\n \r\n this.loadingStates.forEach((state, key) => {\r\n if (state.value === true) {\r\n const [componentId, stateKey] = key.split(':');\r\n componentsToUpdate.push({ componentId, stateKey });\r\n this.loadingStates.set(key, { value: false, timestamp: Date.now() });\r\n }\r\n });\r\n \r\n // 使用事件通知各组件更新\r\n window.dispatchEvent(new CustomEvent('reset-loading-states', {\r\n detail: { componentsToUpdate }\r\n }));\r\n }\r\n \r\n // 重置特定组件的所有 loading 状态\r\n resetComponentLoadingStates(componentId) {\r\n const componentsToUpdate = [];\r\n \r\n this.loadingStates.forEach((state, key) => {\r\n if (key.startsWith(`${componentId}:`) && state.value === true) {\r\n const stateKey = key.split(':')[1];\r\n componentsToUpdate.push({ componentId, stateKey });\r\n this.loadingStates.set(key, { value: false, timestamp: Date.now() });\r\n }\r\n });\r\n \r\n return componentsToUpdate;\r\n }\r\n }\r\n \r\n // 创建单例实例\r\n const loadingManager = new LoadingManager();\r\n export default loadingManager;","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"panel\"},[_c('h2',{staticClass:\"panel-title\"},[_vm._v(\"新增店铺\")]),_c('div',{staticClass:\"panel-body\"},[_c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"label\"},[_vm._v(\"店铺名称\")]),_c('el-input',{attrs:{\"placeholder\":\"请输入店铺名称\",\"maxlength\":30,\"show-word-limit\":\"\"},model:{value:(_vm.form.name),callback:function ($$v) {_vm.$set(_vm.form, \"name\", $$v)},expression:\"form.name\"}})],1),_c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"label\"},[_vm._v(\"店铺描述\")]),_c('div',{staticClass:\"textarea-wrapper\"},[_c('el-input',{attrs:{\"type\":\"textarea\",\"rows\":4,\"maxlength\":300,\"placeholder\":\"请输入店铺描述\",\"show-word-limit\":\"\"},on:{\"input\":_vm.handleDescriptionInput},model:{value:(_vm.form.description),callback:function ($$v) {_vm.$set(_vm.form, \"description\", $$v)},expression:\"form.description\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.handleCreate}},[_vm._v(\"创建店铺\")])],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport Vuex from 'vuex'\n\nVue.use(Vuex)\n\nexport default new Vuex.Store({\n state: {\n },\n getters: {\n },\n mutations: {\n },\n actions: {\n },\n modules: {\n }\n})\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./productDetail.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./productDetail.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./productDetail.vue?vue&type=template&id=69d09b20&scoped=true\"\nimport script from \"./productDetail.vue?vue&type=script&lang=js\"\nexport * from \"./productDetail.vue?vue&type=script&lang=js\"\nimport style0 from \"./productDetail.vue?vue&type=style&index=0&id=69d09b20&prod&scoped=true&lang=css\"\nimport style1 from \"./productDetail.vue?vue&type=style&index=1&id=69d09b20&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"69d09b20\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"content-container\"},[_c('router-view')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=c3bf12ce&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=c3bf12ce&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c3bf12ce\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"orders-page\"},[_c('h2',{staticClass:\"title\"},[_vm._v(\"订单列表\")]),_c('el-tabs',{on:{\"tab-click\":_vm.handleTabClick},model:{value:(_vm.active),callback:function ($$v) {_vm.active=$$v},expression:\"active\"}},[_c('el-tab-pane',{attrs:{\"label\":\"订单进行中\",\"name\":\"7\"}},[_c('order-list',{attrs:{\"items\":_vm.orders[7],\"show-checkout\":true,\"on-cancel\":_vm.handleCancelOrder,\"empty-text\":\"暂无进行中的订单\"}})],1),_c('el-tab-pane',{attrs:{\"label\":\"订单已完成\",\"name\":\"8\"}},[_c('order-list',{attrs:{\"items\":_vm.orders[8],\"show-checkout\":false,\"empty-text\":\"暂无已完成的订单\"}})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import request from '../utils/request'\r\n\r\n//商品列表\r\nexport function getAddShop(data) {\r\n return request({\r\n url: `/lease/shop/addShop`,\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n// 我的店铺(获取当前用户店铺信息)\r\nexport function getMyShop(params) {\r\n return request({\r\n url: `/lease/shop/getShopByUserEmail`,\r\n method: 'get',\r\n params\r\n })\r\n}\r\n\r\n// 更新店铺\r\nexport function updateShop(data) {\r\n return request({\r\n url: `/lease/shop/updateShop`,\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n// 删除店铺\r\nexport function deleteShop(id) {\r\n return request({\r\n url: `/lease/shop/deleteShop`,\r\n method: 'post',\r\n data: { id }\r\n })\r\n}\r\n\r\n// 查询店铺信息(根据ID)\r\nexport function queryShop(data) {\r\n return request({\r\n url: `/lease/shop/getShopById`,\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n// 关闭店铺\r\nexport function closeShop(id) {\r\n return request({\r\n url: `/lease/shop/closeShop`,\r\n method: 'post',\r\n data: { id }\r\n })\r\n}\r\n\r\n// 根据 店铺id 查询店铺商品配置信息列表\r\nexport function getShopConfig(id) {\r\n return request({\r\n url: `/lease/shop/getShopConfig`,\r\n method: 'post',\r\n data: { id }\r\n })\r\n}\r\n\r\n\r\n// 新增商铺配置\r\nexport function addShopConfig(data) {\r\n return request({\r\n url: `/lease/shop/addShopConfig`,\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n// 根据配置id 修改配置\r\nexport function updateShopConfig(data) {\r\n return request({\r\n url: `/lease/shop/updateShopConfig`,\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n// 根据配置id 删除配置\r\nexport function deleteShopConfig(data) {\r\n return request({\r\n url: `/lease/shop/deleteShopConfig`,\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n\r\n// 钱包配置(用于修改卖家钱包地址)----获取链(一级)和币(二级) 下拉列表(获取本系统支持的链和币种)\r\nexport function getChainAndCoin(data) {\r\n return request({\r\n url: `/lease/shop/getChainAndCoin`,\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import axios from 'axios'\r\nimport errorCode from './errorCode'\r\nimport { Notification, MessageBox, Message } from 'element-ui'\r\nimport loadingManager from './loadingManager';\r\nimport errorNotificationManager from './errorNotificationManager';\r\n\r\n \r\nconst pendingRequestMap = new Map(); //处理Request aborted 错误\r\n\r\nfunction getRequestKey(config) { //处理Request aborted 错误 生成唯一 key 的函数\r\n const { url, method, params, data } = config;\r\n return [url, method, JSON.stringify(params), JSON.stringify(data)].join('&');\r\n}\r\n// 创建axios实例\r\nconst service = axios.create({\r\n // axios中请求配置有baseURL选项,表示请求URL公共部分\r\n baseURL: process.env.VUE_APP_BASE_API,\r\n // 超时\r\n timeout: 10000,\r\n})\r\n\r\n// 网络错误相关配置\r\nconst NETWORK_ERROR_THROTTLE_TIME = 5000; // 错误提示节流时间\r\nconst RETRY_DELAY = 2000; // 重试间隔时间\r\nconst MAX_RETRY_TIMES = 3; // 最大重试次数\r\nconst RETRY_WINDOW = 60000; // 60秒重试窗口\r\nlet lastNetworkErrorTime = 0; // 上次网络错误提示时间\r\nlet pendingRequests = new Map();\r\n\r\n\r\n// 网络状态监听器\r\n// 网络状态最后提示时间\r\nlet lastNetworkStatusTime = {\r\n online: 0,\r\n offline: 0\r\n};\r\n\r\n// 创建一个全局标志,确保每次网络恢复只显示一次提示\r\nlet networkRecoveryInProgress = false;\r\n\r\n// 网络状态监听器\r\nwindow.addEventListener('online', () => {\r\n const now = Date.now();\r\n \r\n // 避免短时间内多次触发\r\n if (networkRecoveryInProgress) {\r\n console.log('[网络] 网络恢复处理已在进行中,忽略重复事件');\r\n return;\r\n }\r\n \r\n networkRecoveryInProgress = true;\r\n \r\n // 严格检查是否应该显示提示\r\n if (now - lastNetworkStatusTime.online > 30000) { // 30秒内不重复提示\r\n lastNetworkStatusTime.online = now;\r\n \r\n try {\r\n if (window.vm && window.vm.$message) {\r\n // 确保消息只显示一次\r\n window.vm.$message({\r\n message: window.vm.$i18n.t('home.networkReconnected') || '网络已重新连接,正在恢复数据...',\r\n type: 'success',\r\n duration: 5000,\r\n showClose: true,\r\n });\r\n console.log('[网络] 显示网络恢复提示, 时间:', new Date().toLocaleTimeString());\r\n }\r\n } catch (e) {\r\n console.error('[网络] 显示网络恢复提示失败:', e);\r\n }\r\n } else {\r\n console.log('[网络] 抑制重复的网络恢复提示, 间隔过短:', now - lastNetworkStatusTime.online + 'ms');\r\n }\r\n\r\n // 网络恢复时,重试所有待处理的请求\r\n const pendingPromises = [];\r\n \r\n pendingRequests.forEach(async (request, key) => {\r\n if (now - request.timestamp <= RETRY_WINDOW) {\r\n try {\r\n // 获取新的响应数据\r\n const response = await service(request.config);\r\n pendingPromises.push(response);\r\n \r\n // 执行请求特定的回调\r\n if (request.callback && typeof request.callback === 'function') {\r\n request.callback(response);\r\n }\r\n \r\n // 处理特定类型的请求\r\n if (window.vm) {\r\n // 处理图表数据请求\r\n if (request.config.url.includes('getPoolPower') && response && response.data) {\r\n // 触发图表更新事件\r\n window.dispatchEvent(new CustomEvent('chart-data-updated', { \r\n detail: { type: 'poolPower', data: response.data } \r\n }));\r\n }\r\n else if (request.config.url.includes('getNetPower') && response && response.data) {\r\n window.dispatchEvent(new CustomEvent('chart-data-updated', { \r\n detail: { type: 'netPower', data: response.data } \r\n }));\r\n }\r\n else if (request.config.url.includes('getBlockInfo') && response && response.rows) {\r\n window.dispatchEvent(new CustomEvent('chart-data-updated', { \r\n detail: { type: 'blockInfo', data: response.rows } \r\n }));\r\n }\r\n }\r\n \r\n pendingRequests.delete(key);\r\n } catch (error) {\r\n console.error('重试请求失败:', error);\r\n pendingRequests.delete(key);\r\n }\r\n } else {\r\n pendingRequests.delete(key);\r\n }\r\n });\r\n \r\n // 等待所有请求完成\r\n Promise.allSettled(pendingPromises).then(() => {\r\n // 重置所有 loading 状态\r\n if (loadingManager) {\r\n loadingManager.resetAllLoadingStates();\r\n }\r\n \r\n // 手动重置一些关键的 loading 状态\r\n if (window.vm) {\r\n // 常见的加载状态\r\n const commonLoadingProps = [\r\n 'minerChartLoading', 'reportBlockLoading', 'apiPageLoading', \r\n 'MiningLoading', 'miniLoading', 'bthLoading', 'editLoading'\r\n ];\r\n \r\n commonLoadingProps.forEach(prop => {\r\n if (typeof window.vm[prop] !== 'undefined') {\r\n window.vm[prop] = false;\r\n }\r\n });\r\n\r\n // 重置所有以Loading结尾的状态\r\n Object.keys(window.vm).forEach(key => {\r\n if (key.endsWith('Loading')) {\r\n window.vm[key] = false;\r\n }\r\n });\r\n\r\n\r\n }\r\n \r\n // 触发网络重试完成事件\r\n window.dispatchEvent(new CustomEvent('network-retry-complete'));\r\n \r\n // 重置网络恢复标志\r\n setTimeout(() => {\r\n networkRecoveryInProgress = false;\r\n }, 5000); // 5秒后允许再次处理网络恢复\r\n });\r\n});\r\n\r\n // 使用错误提示管理器控制网络断开提示\r\nwindow.addEventListener('offline', () => {\r\n if (window.vm && window.vm.$message && errorNotificationManager.canShowError('networkOffline')) {\r\n window.vm.$message({\r\n message: window.vm.$i18n.t('home.networkOffline') || '网络连接已断开,系统将在恢复连接后自动重试',\r\n type: 'error',\r\n duration: 5000,\r\n showClose: true,\r\n });\r\n }\r\n});\r\n\r\nservice.defaults.retry = 2;// 重试次数\r\nservice.defaults.retryDelay = 2000;\r\nservice.defaults.shouldRetry = (error) => {\r\n // 只有网络错误或超时错误才进行重试\r\n return error.message === \"Network Error\" || error.message.includes(\"timeout\");\r\n};\r\n\r\nlocalStorage.setItem('superReportError', \"\")\r\nlet superReportError = localStorage.getItem('superReportError')\r\nwindow.addEventListener(\"setItem\", () => {\r\n superReportError = localStorage.getItem('superReportError')\r\n});\r\n\r\n// request拦截器\r\nservice.interceptors.request.use(config => {\r\n superReportError = \"\"\r\n // retryCount =0\r\n localStorage.setItem('superReportError', \"\")\r\n // 是否需要设置 token\r\n let token\r\n try {\r\n token = JSON.parse(localStorage.getItem('token'))\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n if (token) {\r\n config.headers['Authorization'] = token\r\n }\r\n\r\nconsole.log(token,\"if就覅飞机飞机\");\r\n\r\n if (config.method == 'get' && config.data) {\r\n config.params = config.data\r\n }\r\n // get请求映射params参数\r\n if (config.method === 'get' && config.params) {\r\n let url = config.url + '?';\r\n for (const propName of Object.keys(config.params)) {\r\n const value = config.params[propName];\r\n var part = encodeURIComponent(propName) + \"=\";\r\n if (value !== null && typeof (value) !== \"undefined\") {\r\n if (typeof value === 'object') {\r\n for (const key of Object.keys(value)) {\r\n if (value[key] !== null && typeof (value[key]) !== 'undefined') {\r\n let params = propName + '[' + key + ']';\r\n let subPart = encodeURIComponent(params) + '=';\r\n url += subPart + encodeURIComponent(value[key]) + '&';\r\n }\r\n }\r\n } else {\r\n url += part + encodeURIComponent(value) + \"&\";\r\n }\r\n }\r\n }\r\n url = url.slice(0, -1);\r\n config.params = {};\r\n config.url = url;\r\n }\r\n\r\n // 生成请求唯一key 处理Request aborted 错误\r\n const requestKey = getRequestKey(config);\r\n\r\n // 如果有相同请求,先取消 处理Request aborted 错误\r\n if (pendingRequestMap.has(requestKey)) {\r\n const cancel = pendingRequestMap.get(requestKey);\r\n cancel(); // 取消上一次请求\r\n pendingRequestMap.delete(requestKey);\r\n }\r\n\r\n // 创建新的CancelToken 处理Request aborted 错误\r\n config.cancelToken = new axios.CancelToken(cancel => {\r\n pendingRequestMap.set(requestKey, cancel);\r\n });\r\n\r\n return config\r\n}, error => {\r\n Promise.reject(error)\r\n})\r\n\r\n// 响应拦截器\r\nservice.interceptors.response.use(res => {\r\n\r\n // 请求完成后移除\r\n const requestKey = getRequestKey(res.config);\r\n pendingRequestMap.delete(requestKey);\r\n // 未设置状态码则默认成功状态\r\n const code = res.data.code || 200;\r\n // 获取错误信息\r\n const msg = errorCode[code] || res.data.msg || errorCode['default']\r\n if (code === 421) {\r\n localStorage.setItem('cs_disconnect_all', Date.now().toString()); //告知客服页面断开连接\r\n localStorage.removeItem('token')\r\n // 系统状态已过期,请重新点击SUPPORT按钮进入 \r\n superReportError = localStorage.getItem('superReportError')\r\n if (!superReportError) {\r\n superReportError = 421\r\n localStorage.setItem('superReportError', superReportError)\r\n MessageBox.confirm(window.vm.$i18n.t(`user.loginExpired`), window.vm.$i18n.t(`user.overduePrompt`), {\r\n distinguishCancelAndClose: true,\r\n confirmButtonText: window.vm.$i18n.t(`user.login`),\r\n cancelButtonText: window.vm.$i18n.t(`user.Home`),\r\n // showCancelButton: false, // 隐藏取消按钮\r\n closeOnClickModal: false, // 点击空白处不关闭对话框\r\n showClose: false, // 隐藏关闭按钮\r\n type: 'warning'\r\n }\r\n ).then(() => {\r\n window.vm.$router.push(`/${window.vm.$i18n.locale}/login`)\r\n localStorage.removeItem('token')\r\n }).catch(() => {\r\n window.vm.$router.push(`/${window.vm.$i18n.locale}/`)\r\n localStorage.removeItem('token')\r\n });\r\n\r\n }\r\n\r\n\r\n return Promise.reject('登录状态已过期')\r\n } else if (code >= 500 && !superReportError) {\r\n superReportError = 500\r\n localStorage.setItem('superReportError', superReportError)\r\n Message({\r\n dangerouslyUseHTMLString: true,\r\n message: msg,\r\n type: 'error',\r\n showClose: true\r\n })\r\n // throw msg; // 抛出错误,中断请求链并触发后续的错误处理逻辑\r\n // return Promise.reject(new Error(msg))\r\n } else if (code !== 200) {\r\n\r\n\r\n\r\n Notification.error({\r\n title: msg\r\n })\r\n return Promise.reject('error')\r\n\r\n } else {\r\n\r\n return res.data\r\n }\r\n\r\n\r\n\r\n\r\n},\r\n error => {\r\n\r\n // 主动取消的请求,直接忽略,不提示\r\n if (\r\n error.code === 'ERR_CANCELED' ||\r\n (error.message && error.message.includes('canceled')) ||\r\n error.message?.includes('Request aborted')\r\n ) {\r\n // 静默处理,不提示,不冒泡\r\n return new Promise(() => {}); // 返回pending Promise,阻止控制台报错\r\n }\r\n\r\n\r\n\r\n \r\n // 请求异常也要移除 处理Request aborted 错误\r\n if (error.config) {\r\n const requestKey = getRequestKey(error.config);\r\n pendingRequestMap.delete(requestKey);\r\n }\r\n\r\n\r\n let { message } = error;\r\n if (message == \"Network Error\" || message.includes(\"timeout\")) {\r\n if (!navigator.onLine) {\r\n // 断网状态,添加到重试队列\r\n const requestKey = JSON.stringify({\r\n url: error.config.url,\r\n method: error.config.method,\r\n params: error.config.params,\r\n data: error.config.data\r\n });\r\n \r\n // 根据URL确定请求类型并记录回调\r\n let callback = null;\r\n if (error.config.url.includes('getPoolPower')) {\r\n callback = (data) => {\r\n if (window.vm) {\r\n // 清除loading状态\r\n window.vm.minerChartLoading = false;\r\n }\r\n };\r\n } else if (error.config.url.includes('getBlockInfo')) {\r\n callback = (data) => {\r\n if (window.vm) {\r\n window.vm.reportBlockLoading = false;\r\n }\r\n };\r\n }\r\n \r\n if (!pendingRequests.has(requestKey)) {\r\n pendingRequests.set(requestKey, {\r\n config: error.config,\r\n timestamp: Date.now(),\r\n retryCount: 0,\r\n callback: callback\r\n });\r\n \r\n console.log('请求已加入断网重连队列:', error.config.url);\r\n }\r\n } else {\r\n // 网络已连接,但请求失败,尝试重试\r\n // 确保 config 中有 __retryCount 字段\r\n error.config.__retryCount = error.config.__retryCount || 0;\r\n \r\n // 判断是否可以重试\r\n if (error.config.__retryCount < service.defaults.retry && service.defaults.shouldRetry(error)) {\r\n // 增加重试计数\r\n error.config.__retryCount += 1;\r\n \r\n console.log(`[请求重试] ${error.config.url} - 第 ${error.config.__retryCount} 次重试`);\r\n \r\n // 创建新的Promise等待一段时间后重试\r\n return new Promise(resolve => {\r\n setTimeout(() => {\r\n resolve(service(error.config));\r\n }, service.defaults.retryDelay);\r\n });\r\n }\r\n \r\n // 达到最大重试次数,不再重试\r\n console.log(`[请求失败] ${error.config.url} - 已达到最大重试次数`);\r\n }\r\n }\r\n\r\n if (!superReportError) {\r\n superReportError = \"error\"\r\n localStorage.setItem('superReportError', superReportError)\r\n //使用错误提示管理器errorNotificationManager\r\n if (errorNotificationManager.canShowError(message)) {\r\n if (message == \"Network Error\") {\r\n Message({\r\n message: window.vm.$i18n.t(`home.NetworkError`),\r\n type: 'error',\r\n duration: 4 * 1000,\r\n showClose: true\r\n });\r\n }\r\n else if (message.includes(\"timeout\")) {\r\n Message({\r\n message: window.vm.$i18n.t(`home.requestTimeout`),\r\n type: 'error',\r\n duration: 5 * 1000,\r\n showClose: true\r\n });\r\n }\r\n else if (message.includes(\"Request failed with status code\")) {\r\n Message({\r\n message: \"系统接口\" + message.substr(message.length - 3) + \"异常\",\r\n type: 'error',\r\n duration: 5 * 1000,\r\n showClose: true\r\n });\r\n } else {\r\n Message({\r\n message: message,\r\n type: 'error',\r\n duration: 5 * 1000,\r\n showClose: true\r\n });\r\n }\r\n } else {\r\n // 避免完全不提示,可以在控制台记录被抑制的错误\r\n console.log('[错误提示] 已抑制重复错误:', message);\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n return Promise.reject(error)\r\n\r\n }\r\n)\r\n\r\n\r\n\r\nexport default service","\n\n\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./purchased.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./purchased.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./purchased.vue?vue&type=template&id=5597a452&scoped=true\"\nimport script from \"./purchased.vue?vue&type=script&lang=js\"\nexport * from \"./purchased.vue?vue&type=script&lang=js\"\nimport style0 from \"./purchased.vue?vue&type=style&index=0&id=5597a452&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5597a452\",\n null\n \n)\n\nexport default component.exports","import request from '../utils/request'\r\n\r\n//加入购物车\r\nexport function addCart(data) {\r\n return request({\r\n url: `/lease/shopping/cart/addGoods`,\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n\r\n//查询购物车列表\r\nexport function getGoodsList(data) {\r\n return request({\r\n url: `/lease/shopping/cart/getGoodsList`,\r\n method: 'post',\r\n data\r\n })\r\n }\r\n //删除购物车商品 批量\r\nexport function deleteBatchGoods(data) {\r\n return request({\r\n url: `/lease/shopping/cart/deleteBatchGoods`,\r\n method: 'post',\r\n data\r\n })\r\n }\r\n\r\n \r\n // 批量删除购物车中已下架商品\r\nexport function deleteBatchGoodsForIsDelete(data) {\r\n return request({\r\n url: `/lease/shopping/cart/deleteBatchGoodsForIsDelete`,\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"panel\"},[_c('h2',{staticClass:\"panel-title\"},[_vm._v(\"我的店铺\")]),_c('div',{staticClass:\"panel-body\"},[_c('el-card',{staticClass:\"guide-card\",staticStyle:{\"margin-bottom\":\"16px\"},attrs:{\"shadow\":\"never\"}},[_c('div',{staticClass:\"guide-header\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(\"店铺层级说明\")]),_c('div',{staticClass:\"guide-content\"},[_c('p',{staticClass:\"hierarchy\"},[_vm._v(\"层级结构:店铺 → 商品 → 出售机器\")]),_c('ol',{staticClass:\"guide-steps\"},[_c('li',[_c('b',[_vm._v(\"店铺(唯一)\")]),_vm._v(\":每个用户在平台\"),_c('strong',[_vm._v(\"仅能创建一个店铺\")]),_vm._v(\"。创建成功后, 请在本页点击 \"),_c('b',[_vm._v(\"钱包绑定\")]),_vm._v(\",配置自己的收款地址(支持不同链与币种)。 \")]),_c('li',[_c('b',[_vm._v(\"商品\")]),_vm._v(\":完成钱包绑定后,即可在“我的店铺”页面 \"),_c('b',[_vm._v(\"创建商品\")]),_vm._v(\"。 商品可按 \"),_c('b',[_vm._v(\"币种\")]),_vm._v(\" 进行分类管理,创建的商品会在商城对买家展示。 商品可理解为“不同算法、币种的机器集合分类”。 \")]),_c('li',[_c('b',[_vm._v(\"出售机器\")]),_vm._v(\":创建商品后,请进入 \"),_c('b',[_vm._v(\"商品列表\")]),_vm._v(\" 为该商品 \"),_c('b',[_vm._v(\"添加出售机器明细\")]),_vm._v(\"。 必须添加出售机器,否则买家无法下单。买家点击某个商品后,会看到该商品下的机器明细并进行选购。 \")])]),_c('div',{staticClass:\"guide-note\"},[_vm._v(\"提示:建议先创建店铺 → 完成钱包绑定 → 创建商品 → 添加出售机器的顺序,避免漏配导致无法收款或无法下单。\")])])]),(_vm.loaded && _vm.hasShop)?_c('el-card',{staticClass:\"shop-card\",attrs:{\"shadow\":\"hover\"}},[_c('div',{staticClass:\"shop-row\"},[_c('div',{staticClass:\"shop-cover\"},[_c('img',{attrs:{\"src\":_vm.shop.image || _vm.defaultCover,\"alt\":\"店铺封面\"}})]),_c('div',{staticClass:\"shop-info\"},[_c('div',{staticClass:\"shop-title\"},[_c('span',{staticClass:\"name\"},[_vm._v(_vm._s(_vm.shop.name || '未命名店铺'))]),_c('el-tag',{attrs:{\"size\":\"small\",\"type\":_vm.shopStateTagType}},[_vm._v(\" \"+_vm._s(_vm.shopStateText)+\" \")])],1),_c('div',{staticClass:\"desc\"},[_vm._v(_vm._s(_vm.shop.description || '这家店还没有描述~'))]),_c('div',{staticClass:\"actions\"},[_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"primary\"},on:{\"click\":_vm.handleOpenEdit}},[_vm._v(\"修改店铺\")]),_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"warning\"},on:{\"click\":_vm.handleToggleShop}},[_vm._v(\" \"+_vm._s(_vm.shop.state === 2 ? '开启店铺' : '关闭店铺')+\" \")]),_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"danger\"},on:{\"click\":_vm.handleDelete}},[_vm._v(\"删除店铺\")]),_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"success\"},on:{\"click\":_vm.handleAddProduct}},[_vm._v(\"新增商品\")]),_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"success\"},on:{\"click\":_vm.handleWalletBind}},[_vm._v(\"钱包绑定\")])],1)])])]):_vm._e(),(_vm.loaded && _vm.hasShop)?_c('el-card',{staticClass:\"shop-config-card\",staticStyle:{\"margin-top\":\"16px\"},attrs:{\"shadow\":\"never\"}},[_c('div',{staticClass:\"clearfix\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('span',[_vm._v(\"已绑定钱包\")])]),_c('el-table',{staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.shopConfigs,\"border\":\"\"}},[_c('el-table-column',{attrs:{\"prop\":\"chain\",\"label\":\"链\",\"width\":\"140\"}}),_c('el-table-column',{attrs:{\"label\":\"支付币种\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('div',{staticClass:\"coin-list\"},[(Array.isArray(scope.row.children) && scope.row.children.length)?_vm._l((scope.row.children),function(c,idx){return _c('el-tooltip',{key:idx,attrs:{\"content\":String(c && c.payCoin ? c.payCoin : '').toUpperCase(),\"placement\":\"top\"}},[(c && c.image)?_c('img',{staticClass:\"coin-img\",attrs:{\"src\":c.image,\"alt\":(c.payCoin || '').toUpperCase()}}):_vm._e()])}):[_vm._v(\" \"+_vm._s(String(scope.row.payCoin || '').toUpperCase())+\" \")]],2)]}}],null,false,569036476)}),_c('el-table-column',{attrs:{\"prop\":\"payAddress\",\"label\":\"收款钱包地址\",\"show-overflow-tooltip\":\"\"}}),_c('el-table-column',{attrs:{\"label\":\"操作\",\"width\":\"180\",\"fixed\":\"right\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{attrs:{\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleEditConfig(scope.row)}}},[_vm._v(\"修改\")]),_c('el-divider',{attrs:{\"direction\":\"vertical\"}}),_c('el-button',{staticStyle:{\"color\":\"#e74c3c\"},attrs:{\"type\":\"text\"},on:{\"click\":function($event){return _vm.handleDeleteConfig(scope.row)}}},[_vm._v(\"删除\")])]}}],null,false,2146652355)})],1)],1):(_vm.loaded && !_vm.hasShop)?_c('div',{staticClass:\"no-shop\"},[_c('el-empty',{attrs:{\"description\":\"暂无店铺\"}},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.handleGoNew}},[_vm._v(\"新建店铺\")])],1)],1):_c('el-empty',{attrs:{\"description\":\"正在加载店铺信息...\"}}),_c('el-dialog',{attrs:{\"title\":\"修改店铺\",\"visible\":_vm.visibleEdit,\"width\":\"520px\"},on:{\"update:visible\":function($event){_vm.visibleEdit=$event}}},[_c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"label\"},[_vm._v(\"店铺名称\")]),_c('el-input',{attrs:{\"placeholder\":\"请输入店铺名称\",\"maxlength\":30,\"show-word-limit\":\"\"},model:{value:(_vm.editForm.name),callback:function ($$v) {_vm.$set(_vm.editForm, \"name\", $$v)},expression:\"editForm.name\"}})],1),_c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"label\"},[_vm._v(\"店铺描述\")]),_c('el-input',{attrs:{\"type\":\"textarea\",\"rows\":3,\"placeholder\":\"请输入描述\",\"maxlength\":300,\"show-word-limit\":\"\"},model:{value:(_vm.editForm.description),callback:function ($$v) {_vm.$set(_vm.editForm, \"description\", $$v)},expression:\"editForm.description\"}})],1),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.visibleEdit=false}}},[_vm._v(\"取消\")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.submitEdit}},[_vm._v(\"保存\")])],1)]),_c('el-dialog',{attrs:{\"title\":\"修改配置\",\"visible\":_vm.visibleConfigEdit,\"width\":\"560px\"},on:{\"update:visible\":function($event){_vm.visibleConfigEdit=$event}}},[_c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"label\"},[_vm._v(\"支付链\")]),_c('el-input',{attrs:{\"placeholder\":\"-\",\"disabled\":\"\"},model:{value:(_vm.configForm.chainLabel),callback:function ($$v) {_vm.$set(_vm.configForm, \"chainLabel\", $$v)},expression:\"configForm.chainLabel\"}})],1),_c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"label\"},[_vm._v(\"支付币种\")]),_c('el-select',{staticClass:\"input\",attrs:{\"size\":\"middle\",\"multiple\":\"\",\"collapse-tags\":\"\",\"filterable\":\"\",\"placeholder\":\"请选择币种\"},model:{value:(_vm.configForm.payCoins),callback:function ($$v) {_vm.$set(_vm.configForm, \"payCoins\", $$v)},expression:\"configForm.payCoins\"}},_vm._l((_vm.editCoinOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1),_c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"label\"},[_vm._v(\"已选择币种\")]),_c('div',{staticClass:\"selected-coin-list\"},[_vm._l((_vm.selectedCoinLabels),function(c){return _c('el-tag',{key:c,attrs:{\"type\":\"warning\",\"effect\":\"light\",\"closable\":\"\"},on:{\"close\":function($event){return _vm.removeSelectedCoin(c)}}},[_vm._v(_vm._s(c))])}),(!_vm.selectedCoinLabels.length)?_c('span',{staticStyle:{\"color\":\"#c0c4cc\"}},[_vm._v(\"未选择\")]):_vm._e()],2)]),_c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"label\"},[_vm._v(\"钱包地址\")]),_c('el-input',{attrs:{\"placeholder\":\"请输入钱包地址\"},model:{value:(_vm.configForm.payAddress),callback:function ($$v) {_vm.$set(_vm.configForm, \"payAddress\", $$v)},expression:\"configForm.payAddress\"}})],1),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.visibleConfigEdit=false}}},[_vm._v(\"取消\")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.submitConfigEdit}},[_vm._v(\"确认修改\")])],1)])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @file 购物车管理(轻量,无 Vuex)\n * @description 提供添加、更新、删除、清空、查询购物车的函数。使用 localStorage 持久化。\n */\n\nconst STORAGE_KEY = 'power_leasing_cart_v1';\n\n/**\n * @typedef {Object} CartItem\n * @property {string} id - 商品ID\n * @property {string} title - 商品标题\n * @property {number} price - 单价\n * @property {number} quantity - 数量\n * @property {string} image - 图片URL\n */\n\n/**\n * 读取本地购物车\n * @returns {CartItem[]}\n */\nexport const readCart = () => {\n try {\n const raw = window.localStorage.getItem(STORAGE_KEY);\n if (!raw) return [];\n const parsed = JSON.parse(raw);\n if (!Array.isArray(parsed)) return [];\n return parsed.filter(Boolean);\n } catch (error) {\n console.error('[cartManager] readCart error:', error);\n return [];\n }\n}\n\n/**\n * 持久化购物车\n * @param {CartItem[]} cart\n */\nconst writeCart = (cart) => {\n try {\n window.localStorage.setItem(STORAGE_KEY, JSON.stringify(cart));\n // 同步派发购物车更新事件(总数量),用于头部徽标等全局更新\n try {\n const count = cart.reduce((s, c) => s + Number(c.quantity || 0), 0)\n window.dispatchEvent(new CustomEvent('cart-updated', { detail: { count } }))\n } catch (e) { /* noop */ }\n } catch (error) {\n console.error('[cartManager] writeCart error:', error);\n }\n}\n\n/**\n * 添加到购物车(若已存在则数量累加)\n * @param {CartItem} item\n * @returns {CartItem[]}\n */\nexport const addToCart = (item) => {\n if (!item || !item.id) return readCart();\n const cart = readCart();\n const index = cart.findIndex((c) => c.id === item.id);\n if (index >= 0) {\n const next = [...cart];\n next[index] = {\n ...next[index],\n quantity: Math.max(1, Number(next[index].quantity || 0) + Number(item.quantity || 1))\n };\n writeCart(next);\n return next;\n }\n const next = [...cart, { ...item, quantity: Math.max(1, Number(item.quantity || 1)) }];\n writeCart(next);\n return next;\n}\n\n/**\n * 更新数量\n * @param {string} productId\n * @param {number} quantity\n * @returns {CartItem[]}\n */\nexport const updateQuantity = (productId, quantity) => {\n const cart = readCart();\n const next = cart\n .map((c) => (c.id === productId ? { ...c, quantity: Math.max(1, Number(quantity) || 1) } : c));\n writeCart(next);\n return next;\n}\n\n/**\n * 移除商品\n * @param {string} productId\n * @returns {CartItem[]}\n */\nexport const removeFromCart = (productId) => {\n const cart = readCart();\n const next = cart.filter((c) => c.id !== productId);\n writeCart(next);\n return next;\n}\n\n/**\n * 清空购物车\n * @returns {CartItem[]}\n */\nexport const clearCart = () => {\n writeCart([]);\n return [];\n}\n\n/**\n * 计算总价\n * @returns {{ totalQuantity: number, totalPrice: number }}\n */\nexport const computeSummary = () => {\n const cart = readCart();\n const totalQuantity = cart.reduce((sum, cur) => sum + Number(cur.quantity || 0), 0);\n const totalPrice = cart.reduce((sum, cur) => sum + Number(cur.quantity || 0) * Number(cur.price || 0), 0);\n return { totalQuantity, totalPrice };\n}\n\nexport default {\n readCart,\n addToCart,\n updateQuantity,\n removeFromCart,\n clearCart,\n computeSummary\n}\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"receipt-page\"},[_c('div',{staticClass:\"card\",attrs:{\"aria-label\":\"收款记录\",\"tabindex\":\"0\"}},[_vm._m(0),(_vm.loading)?_c('div',{staticClass:\"loading\"},[_c('i',{staticClass:\"el-icon-loading\",attrs:{\"aria-label\":\"加载中\",\"role\":\"img\"}}),_vm._v(\" 加载中... \")]):_c('div',[_c('el-table',{ref:\"receiptTable\",staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.rows,\"border\":\"\",\"stripe\":\"\",\"size\":\"small\",\"row-key\":_vm.getRowKey,\"expand-row-keys\":_vm.expandedRowKeys,\"row-class-name\":_vm.getRowClassName,\"header-cell-style\":{ textAlign: 'left' },\"cell-style\":{ textAlign: 'left' }},on:{\"row-click\":_vm.handleRowClick,\"expand-change\":_vm.handleExpandChange}},[_c('el-table-column',{attrs:{\"type\":\"expand\",\"width\":\"46\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('div',{staticClass:\"detail-panel\"},[_c('div',{staticClass:\"detail-grid\"},[_c('div',{staticClass:\"detail-item\"},[_c('span',{staticClass:\"detail-label\"},[_vm._v(\"订单号\")]),_c('span',{staticClass:\"detail-value mono\"},[_vm._v(_vm._s(scope.row.orderId || '-'))])]),_c('div',{staticClass:\"detail-item\"},[_c('span',{staticClass:\"detail-label\"},[_vm._v(\"付款链\")]),_c('span',{staticClass:\"detail-value\"},[_c('span',{staticClass:\"badge\"},[_vm._v(_vm._s(_vm.formatChain(scope.row.fromChain) || '-'))])])]),_c('div',{staticClass:\"detail-item\"},[_c('span',{staticClass:\"detail-label\"},[_vm._v(\"付款币种\")]),_c('span',{staticClass:\"detail-value\"},[_c('span',{staticClass:\"badge badge-blue\"},[_vm._v(_vm._s(String((scope.row.fromSymbol || scope.row.coin) || '') .toUpperCase()))])])]),_c('div',{staticClass:\"detail-item detail-item-full\"},[_c('span',{staticClass:\"detail-label\"},[_vm._v(\"付款地址\")]),_c('span',{staticClass:\"detail-value address\"},[_c('span',{staticClass:\"mono-ellipsis\",attrs:{\"title\":scope.row.fromAddress}},[_vm._v(_vm._s(scope.row.fromAddress || '-'))]),(scope.row.fromAddress)?_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"mini\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.copy(scope.row.fromAddress)}}},[_vm._v(\"复制\")]):_vm._e()],1)])])])]}}])}),_c('el-table-column',{attrs:{\"label\":\"支付时间\",\"min-width\":\"160\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(_vm.formatFullTime(scope.row.createTime)))]}}])}),_c('el-table-column',{attrs:{\"label\":\"收款金额(USDT)\",\"min-width\":\"160\",\"align\":\"right\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"amount-green\"},[(_vm.formatAmount(scope.row.realAmount, scope.row.coin || scope.row.toSymbol || 'USDT').truncated)?_c('el-tooltip',{attrs:{\"content\":`+${_vm.formatAmount(scope.row.realAmount, scope.row.coin || scope.row.toSymbol || 'USDT').full}`,\"placement\":\"top\"}},[_c('span',[_vm._v(\" +\"+_vm._s(_vm.formatAmount(scope.row.realAmount, scope.row.coin || scope.row.toSymbol || 'USDT').text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(\" +\"+_vm._s(_vm.formatAmount(scope.row.realAmount, scope.row.coin || scope.row.toSymbol || 'USDT').text)+\" \")])],1)]}}])}),_c('el-table-column',{attrs:{\"label\":\"收款链\",\"min-width\":\"120\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(_vm.formatChain(scope.row.toChain)))]}}])}),_c('el-table-column',{attrs:{\"label\":\"收款币种\",\"min-width\":\"100\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(String(scope.row.coin || '').toUpperCase()))]}}])}),_c('el-table-column',{attrs:{\"label\":\"收款地址\",\"min-width\":\"260\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"mono-ellipsis\",attrs:{\"title\":scope.row.toAddress}},[_vm._v(_vm._s(scope.row.toAddress))]),_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"mini\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.copy(scope.row.toAddress)}}},[_vm._v(\"复制\")])]}}])}),_c('el-table-column',{attrs:{\"label\":\"交易HASH\",\"min-width\":\"260\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"mono-ellipsis\",attrs:{\"title\":scope.row.txHash}},[_vm._v(_vm._s(scope.row.txHash))]),(scope.row.txHash)?_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"mini\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.copy(scope.row.txHash)}}},[_vm._v(\"复制\")]):_vm._e()]}}])}),_c('el-table-column',{attrs:{\"label\":\"支付状态\",\"min-width\":\"120\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-tag',{attrs:{\"type\":_vm.getStatusType(scope.row.status),\"size\":\"small\"}},[_vm._v(_vm._s(_vm.getStatusText(scope.row.status)))])]}}])}),_c('el-table-column',{attrs:{\"label\":\"状态更新时间\",\"min-width\":\"160\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(_vm.formatFullTime(scope.row.updateTime)))]}}])})],1),(!_vm.rows.length)?_c('div',{staticClass:\"empty\"},[_c('div',{staticClass:\"empty-icon\"},[_vm._v(\"💳\")]),_c('div',{staticClass:\"empty-text\"},[_vm._v(\"暂无收款记录\")])]):_vm._e(),_c('div',{staticClass:\"pagination\"},[_c('el-pagination',{attrs:{\"background\":\"\",\"layout\":\"prev, pager, next, jumper\",\"current-page\":_vm.page,\"page-size\":_vm.pageSize,\"total\":_vm.total},on:{\"update:currentPage\":function($event){_vm.page=$event},\"update:current-page\":function($event){_vm.page=$event},\"current-change\":_vm.fetchList}})],1)],1)])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"card-header\"},[_c('h3',{staticClass:\"card-title\"},[_vm._v(\"收款记录\")])])\n}]\n\nexport { render, staticRenderFns }","/**\n * @file 导航配置文件\n * @description 定义所有可用的导航链接和菜单结构\n */\n\n// 主导航配置\nexport const mainNavigation = [\n {\n path: '/productList',\n name: '商城',\n icon: '🛍️',\n description: '浏览所有商品'\n },\n {\n path: '/cart',\n name: '购物车',\n icon: '🛒',\n description: '管理购物车商品'\n },\n // {\n // path: '/checkout',\n // name: '结算',\n // icon: '💳',\n // description: '完成订单结算'\n // },\n {\n path: '/account',\n name: '个人中心',\n icon: '👤',\n description: '管理个人资料和店铺'\n }\n]\n\n// 面包屑导航配置\nexport const breadcrumbConfig = {\n '/productList': ['首页', '商品列表'],\n '/product': ['首页', '商品列表', '商品详情'],\n '/cart': ['首页', '购物车'],\n '/checkout': ['首页', '购物车', '订单结算'],\n '/account': ['首页', '个人中心'],\n '/account/wallet': ['首页', '个人中心', '我的钱包'],\n '/account/shop-new': ['首页', '个人中心', '新增店铺'],\n '/account/shop-config': ['首页', '个人中心', '店铺配置'],\n '/account/shops': ['首页', '个人中心', '我的店铺'],\n '/account/product-new': ['首页', '个人中心', '新增商品'],\n '/account/products': ['首页', '个人中心', '商品列表']\n}\n\n// 获取面包屑导航\nexport const getBreadcrumb = (path) => {\n // 处理动态路由\n if (path.startsWith('/product/')) {\n return breadcrumbConfig['/product']\n }\n \n return breadcrumbConfig[path] || ['首页']\n}\n\n// 检查路由权限\nexport const checkRoutePermission = (route, userPermissions = []) => {\n if (!route.meta || !route.meta.allAuthority) {\n return true\n }\n \n const requiredPermissions = route.meta.allAuthority\n \n // 如果权限要求是 'all',则所有人都可以访问\n if (requiredPermissions.includes('all')) {\n return true\n }\n \n // 检查用户是否有所需权限\n return requiredPermissions.some(permission => \n userPermissions.includes(permission)\n )\n}\n\n// 获取页面标题\nexport const getPageTitle = (route) => {\n if (route.meta && route.meta.title) {\n return `${route.meta.title} - Power Leasing`\n }\n return 'Power Leasing - 电商系统'\n}\n\n// 获取页面描述\nexport const getPageDescription = (route) => {\n if (route.meta && route.meta.description) {\n return route.meta.description\n }\n return 'Power Leasing 电商系统 - 专业的电力设备租赁平台'\n}\n\nexport default {\n mainNavigation,\n breadcrumbConfig,\n getBreadcrumb,\n checkRoutePermission,\n getPageTitle,\n getPageDescription\n} ","\n\n\n\n\n\n","import request from '../utils/request'\r\n\r\n//钱包余额\r\nexport function getWalletInfo(data) {\r\n return request({\r\n url: `/lease/user/getWalletInfo`,\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n//余额提现\r\nexport function withdrawBalance(data) {\r\n return request({\r\n url: `/lease/user/withdrawBalance`,\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n\r\n\r\n//余额充值记录\r\nexport function balanceRechargeList(data) {\r\n return request({\r\n url: `/lease/user/balanceRechargeList`,\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n\r\n//提现记录\r\nexport function balanceWithdrawList(data) {\r\n return request({\r\n url: `/lease/user/balanceWithdrawList`,\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n\r\n// 卖家收款记录\r\nexport function sellerReceiptList(data) {\r\n return request({\r\n url: `/lease/user/balancePayList`,\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n\r\n//钱包绑定\r\nexport function addWalletShopConfig(data) {\r\n return request({\r\n url: `/lease/shop/addShopConfig`,\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n//获取支持的链和币种\r\nexport function getChainAndList(data) {\r\n return request({\r\n url: `/lease/shop/getChainAndList`,\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n\r\n//获取钱包绑定列表\r\nexport function getShopConfig(data) {\r\n return request({\r\n url: `/lease/shop/getShopConfig`,\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n\r\n//创建钱包\r\nexport function bindWallet(data) {\r\n return request({\r\n url: `/lease/user/bindWallet`,\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n//资金流水\r\nexport function transactionRecord(data) {\r\n return request({\r\n url: `/lease/user/transactionRecord`,\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n//钱包的最近交易\r\nexport function getRecentlyTransaction(data) {\r\n return request({\r\n url: `/lease/user/getRecentlyTransaction`,\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n//绑定钱包前查询商品列表\r\nexport function getProductListForShopWalletConfig(data) {\r\n return request({\r\n url: `/lease/product/getProductListForShopWalletConfig`,\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n\r\n//设置之前商品列表的新链的机器价格\r\nexport function updateProductListForShopWalletConfig(data) {\r\n return request({\r\n url: `/lease/product/updateProductListForShopWalletConfig`,\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"product-machine-add\"},[_c('div',{staticClass:\"header\"},[_c('el-button',{attrs:{\"type\":\"text\"},on:{\"click\":_vm.handleBack}},[_vm._v(\"返回\")]),_c('h2',{staticClass:\"title\"},[_vm._v(\"添加出售机器\")])],1),_c('el-alert',{staticClass:\"notice-alert\",attrs:{\"type\":\"warning\",\"show-icon\":\"\",\"closable\":false,\"title\":\"新增出售机器必须在 M2pool 有挖矿算力记录才能添加出租\",\"description\":\"建议稳定在 M2pool 矿池挖矿 24 小时之后,再添加出售该机器\"}}),_c('el-card',{staticClass:\"form-card\",attrs:{\"shadow\":\"never\"}},[_c('el-form',{ref:\"machineForm\",attrs:{\"model\":_vm.form,\"rules\":_vm.rules,\"label-width\":\"160px\",\"size\":\"small\"}},[_c('el-form-item',{attrs:{\"label\":\"商品名称\"}},[_c('el-input',{staticStyle:{\"width\":\"50%\"},attrs:{\"disabled\":\"\"},model:{value:(_vm.form.productName),callback:function ($$v) {_vm.$set(_vm.form, \"productName\", $$v)},expression:\"form.productName\"}})],1),_c('el-form-item',{attrs:{\"label\":\"矿机型号\"}},[_c('el-input',{staticStyle:{\"width\":\"50%\"},attrs:{\"placeholder\":\"示例:龍珠\",\"maxlength\":20},on:{\"input\":_vm.handleTypeInput},model:{value:(_vm.form.type),callback:function ($$v) {_vm.$set(_vm.form, \"type\", $$v)},expression:\"form.type\"}})],1),_c('el-form-item',{attrs:{\"label\":\"理论算力\",\"prop\":\"theoryPower\"}},[_c('el-input',{staticStyle:{\"width\":\"50%\"},attrs:{\"placeholder\":\"请输入单机理论算力\",\"inputmode\":\"decimal\"},on:{\"input\":function($event){return _vm.handleNumeric('theoryPower')}},model:{value:(_vm.form.theoryPower),callback:function ($$v) {_vm.$set(_vm.form, \"theoryPower\", $$v)},expression:\"form.theoryPower\"}})],1),_c('el-form-item',{attrs:{\"label\":\"算力单位\",\"prop\":\"unit\"}},[_c('el-select',{attrs:{\"placeholder\":\"请选择算力单位\"},model:{value:(_vm.form.unit),callback:function ($$v) {_vm.$set(_vm.form, \"unit\", $$v)},expression:\"form.unit\"}},[_c('el-option',{attrs:{\"label\":\"KH/S\",\"value\":\"KH/S\"}}),_c('el-option',{attrs:{\"label\":\"MH/S\",\"value\":\"MH/S\"}}),_c('el-option',{attrs:{\"label\":\"GH/S\",\"value\":\"GH/S\"}}),_c('el-option',{attrs:{\"label\":\"TH/S\",\"value\":\"TH/S\"}}),_c('el-option',{attrs:{\"label\":\"PH/S\",\"value\":\"PH/S\"}})],1)],1),_c('el-form-item',{attrs:{\"label\":\"最大租赁天数\",\"prop\":\"maxLeaseDays\"}},[_c('el-input',{staticStyle:{\"width\":\"50%\"},attrs:{\"placeholder\":\"1-365\",\"inputmode\":\"numeric\"},on:{\"input\":function($event){return _vm.handleNumeric('maxLeaseDays')}},model:{value:(_vm.form.maxLeaseDays),callback:function ($$v) {_vm.$set(_vm.form, \"maxLeaseDays\", $$v)},expression:\"form.maxLeaseDays\"}},[_c('template',{slot:\"append\"},[_vm._v(\"天\")])],2)],1),_c('el-form-item',{attrs:{\"label\":\"功耗\",\"prop\":\"powerDissipation\"}},[_c('el-input',{staticStyle:{\"width\":\"50%\"},attrs:{\"inputmode\":\"decimal\"},on:{\"input\":function($event){return _vm.handleNumeric('powerDissipation')}},model:{value:(_vm.form.powerDissipation),callback:function ($$v) {_vm.$set(_vm.form, \"powerDissipation\", $$v)},expression:\"form.powerDissipation\"}},[_c('template',{slot:\"append\"},[_vm._v(\"kw/h\")])],2)],1),_c('el-form-item',{attrs:{\"label\":\"统一售价\",\"prop\":\"cost\"}},[_c('span',{attrs:{\"slot\":\"label\"},slot:\"label\"},[_vm._v(\" 统一售价 \"),_c('el-tooltip',{attrs:{\"effect\":\"dark\",\"placement\":\"top\"}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\" 卖家最终收款金额 = 机器售价 × 波动率\"),_c('br'),_vm._v(\" 波动率规则:\"),_c('br'),_vm._v(\" 1)0% - 5%(包含5%):波动率 = 1(按售价结算)\"),_c('br'),_vm._v(\" 2)5%以上:波动率 = 实际算力 / 理论算力,且不会超过 1,即最终结算时不会超过机器售价 \")]),_c('i',{staticClass:\"el-icon-question label-help\",attrs:{\"aria-label\":\"帮助\",\"tabindex\":\"0\"}})])],1),(_vm.payTypeDefs && _vm.payTypeDefs.length)?_c('div',{staticClass:\"cost-multi\"},_vm._l((_vm.payTypeDefs),function(pt){return _c('div',{key:pt.key,staticClass:\"cost-item\"},[_c('el-input',{staticStyle:{\"width\":\"50%\"},attrs:{\"placeholder\":\"请输入价格\",\"inputmode\":\"decimal\"},on:{\"input\":val => _vm.handleCostMapInput(pt.key, val)},model:{value:(_vm.form.costMap[pt.key]),callback:function ($$v) {_vm.$set(_vm.form.costMap, pt.key, $$v)},expression:\"form.costMap[pt.key]\"}},[_c('template',{slot:\"append\"},[_vm._v(_vm._s(pt.label))])],2)],1)}),0):_c('el-input',{staticStyle:{\"width\":\"50%\"},attrs:{\"placeholder\":\"请输入成本(USDT)\",\"inputmode\":\"decimal\"},on:{\"input\":function($event){return _vm.handleNumeric('cost')}},model:{value:(_vm.form.cost),callback:function ($$v) {_vm.$set(_vm.form, \"cost\", $$v)},expression:\"form.cost\"}},[_c('template',{slot:\"append\"},[_vm._v(\"USDT\")])],2)],1),_c('el-form-item',{attrs:{\"label\":\"选择挖矿账户\"}},[_c('el-select',{attrs:{\"filterable\":\"\",\"clearable\":\"\",\"placeholder\":\"请选择挖矿账户\",\"loading\":_vm.minersLoading},on:{\"change\":_vm.handleMinerChange},model:{value:(_vm.selectedMiner),callback:function ($$v) {_vm.selectedMiner=$$v},expression:\"selectedMiner\"}},_vm._l((_vm.miners),function(m){return _c('el-option',{key:m.user + '_' + m.coin,attrs:{\"label\":m.user + '(' + m.coin + ')',\"value\":m.user + '|' + m.coin}})}),1)],1),_c('el-form-item',{attrs:{\"label\":\"选择机器(可多选)\"}},[_c('el-select',{attrs:{\"multiple\":\"\",\"filterable\":\"\",\"collapse-tags\":\"\",\"placeholder\":\"请选择机器\",\"loading\":_vm.machinesLoading,\"disabled\":!_vm.selectedMiner},model:{value:(_vm.selectedMachines),callback:function ($$v) {_vm.selectedMachines=$$v},expression:\"selectedMachines\"}},_vm._l((_vm.machineOptions),function(m){return _c('el-option',{key:m.user + '_' + m.miner,attrs:{\"label\":m.miner + '(' + m.user + ')',\"value\":m.miner}})}),1)],1)],1)],1),(_vm.selectedMachineRows.length)?_c('el-card',{staticClass:\"form-card\",attrs:{\"shadow\":\"never\"}},[_c('div',{staticClass:\"section-title\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(\"已选择机器\")]),_c('el-table',{staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.selectedMachineRows,\"border\":\"\",\"stripe\":\"\"}},[_c('el-table-column',{attrs:{\"prop\":\"user\",\"label\":\"挖矿账户\"}}),_c('el-table-column',{attrs:{\"prop\":\"miner\",\"label\":\"机器编号\"}}),_c('el-table-column',{attrs:{\"prop\":\"realPower\",\"label\":\"实际算力(MH/S)\"}},[_c('template',{slot:\"header\"},[_c('el-tooltip',{attrs:{\"content\":\"实际算力为该机器在本矿池过去24H的平均算力\",\"effect\":\"dark\",\"placement\":\"top\"}},[_c('i',{staticClass:\"el-icon-question\",staticStyle:{\"margin-right\":\"4px\",\"color\":\"#909399\"},attrs:{\"aria-label\":\"帮助\",\"tabindex\":\"0\"}})]),_c('span',[_vm._v(\"实际算力(MH/S)\")])],1)],2),_c('el-table-column',{attrs:{\"label\":\"功耗(kw/h)\",\"min-width\":\"120\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-input',{staticStyle:{\"width\":\"100%\"},attrs:{\"placeholder\":\"示例:0.01\",\"inputmode\":\"decimal\"},on:{\"input\":function($event){return _vm.handleRowPowerDissipationInput(scope.$index)},\"blur\":function($event){return _vm.handleRowPowerDissipationBlur(scope.$index)}},model:{value:(scope.row.powerDissipation),callback:function ($$v) {_vm.$set(scope.row, \"powerDissipation\", $$v)},expression:\"scope.row.powerDissipation\"}},[_c('template',{slot:\"append\"},[_vm._v(\"kw/h\")])],2)]}}],null,false,2461731706)}),_c('el-table-column',{attrs:{\"label\":\"理论算力\",\"min-width\":\"160\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\",\"gap\":\"8px\"}},[_c('el-input',{staticStyle:{\"width\":\"100%\"},attrs:{\"placeholder\":\"理论算力\",\"inputmode\":\"decimal\"},on:{\"input\":function($event){return _vm.handleRowTheoryPowerInput(scope.$index)},\"blur\":function($event){return _vm.handleRowTheoryPowerBlur(scope.$index)}},model:{value:(scope.row.theoryPower),callback:function ($$v) {_vm.$set(scope.row, \"theoryPower\", $$v)},expression:\"scope.row.theoryPower\"}}),_c('el-select',{staticStyle:{\"width\":\"150px\"},attrs:{\"placeholder\":\"单位\"},on:{\"change\":val => _vm.handleRowUnitChange(scope.$index, val)},model:{value:(scope.row.unit),callback:function ($$v) {_vm.$set(scope.row, \"unit\", $$v)},expression:\"scope.row.unit\"}},[_c('el-option',{attrs:{\"label\":\"KH/S\",\"value\":\"KH/S\"}}),_c('el-option',{attrs:{\"label\":\"MH/S\",\"value\":\"MH/S\"}}),_c('el-option',{attrs:{\"label\":\"GH/S\",\"value\":\"GH/S\"}}),_c('el-option',{attrs:{\"label\":\"TH/S\",\"value\":\"TH/S\"}}),_c('el-option',{attrs:{\"label\":\"PH/S\",\"value\":\"PH/S\"}})],1)],1)]}}],null,false,2316701192)}),_c('el-table-column',{attrs:{\"label\":\"售价(按结算币种)\",\"min-width\":\"220\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('div',{staticClass:\"price-multi\"},[(_vm.payTypeDefs && _vm.payTypeDefs.length)?_c('div',{staticClass:\"price-items\"},_vm._l((_vm.payTypeDefs),function(pt){return _c('div',{key:pt.key,staticClass:\"price-item\"},[_c('el-input',{attrs:{\"placeholder\":\"价格\",\"inputmode\":\"decimal\"},on:{\"input\":() => _vm.handleRowPriceMapInput(scope.$index, pt.key),\"blur\":() => _vm.handleRowPriceMapBlur(scope.$index, pt.key)},model:{value:(scope.row.priceMap[pt.key]),callback:function ($$v) {_vm.$set(scope.row.priceMap, pt.key, $$v)},expression:\"scope.row.priceMap[pt.key]\"}},[_c('template',{slot:\"append\"},[_vm._v(_vm._s(pt.label))])],2)],1)}),0):_c('el-input',{staticStyle:{\"width\":\"100%\"},attrs:{\"placeholder\":\"价格\",\"inputmode\":\"decimal\"},on:{\"input\":function($event){return _vm.handleRowPriceInput(scope.$index)},\"blur\":function($event){return _vm.handleRowPriceBlur(scope.$index)}},model:{value:(scope.row.price),callback:function ($$v) {_vm.$set(scope.row, \"price\", $$v)},expression:\"scope.row.price\"}},[_c('template',{slot:\"append\"},[_vm._v(\"USDT\")])],2)],1)]}}],null,false,3822584807)},[_c('template',{slot:\"header\"},[_c('el-tooltip',{attrs:{\"effect\":\"dark\",\"placement\":\"top\"}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\" 卖家最终收款金额 = 机器售价 × 波动率\"),_c('br'),_vm._v(\" 波动率规则:\"),_c('br'),_vm._v(\" 1)0% - 5%(包含5%):波动率 = 1(按售价结算)\"),_c('br'),_vm._v(\" 2)5%以上:波动率 = 实际算力 / 理论算力,且不会超过 1,即最终结算时不会超过机器售价 \")]),_c('i',{staticClass:\"el-icon-question label-help\",attrs:{\"aria-label\":\"帮助\",\"tabindex\":\"0\"}})]),_c('span',[_vm._v(\"售价(按结算币种)\")])],1)],2),_c('el-table-column',{attrs:{\"label\":\"最大租赁天数(天)\",\"min-width\":\"120\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-input',{staticStyle:{\"width\":\"100%\"},attrs:{\"placeholder\":\"1-365\",\"inputmode\":\"numeric\"},on:{\"input\":function($event){return _vm.handleRowMaxLeaseDaysInput(scope.$index)},\"blur\":function($event){return _vm.handleRowMaxLeaseDaysBlur(scope.$index)}},model:{value:(scope.row.maxLeaseDays),callback:function ($$v) {_vm.$set(scope.row, \"maxLeaseDays\", $$v)},expression:\"scope.row.maxLeaseDays\"}},[_c('template',{slot:\"append\"},[_vm._v(\"天\")])],2)]}}],null,false,309661603)}),_c('el-table-column',{attrs:{\"label\":\"矿机型号\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-input',{staticStyle:{\"width\":\"100%\"},attrs:{\"placeholder\":\"矿机型号\",\"maxlength\":20},on:{\"input\":function($event){return _vm.handleRowTypeInput(scope.$index)},\"blur\":function($event){return _vm.handleRowTypeBlur(scope.$index)}},model:{value:(scope.row.type),callback:function ($$v) {_vm.$set(scope.row, \"type\", $$v)},expression:\"scope.row.type\"}})]}}],null,false,1752667191)}),_c('el-table-column',{attrs:{\"label\":\"上下架状态\",\"width\":\"100\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{attrs:{\"type\":scope.row.state === 0 ? 'success' : 'info',\"size\":\"mini\"},on:{\"click\":function($event){return _vm.handleToggleState(scope.$index)}}},[_vm._v(\" \"+_vm._s(scope.row.state === 0 ? '上架' : '下架')+\" \")])]}}],null,false,875649026)})],1)],1):_vm._e(),_c('div',{staticClass:\"actions\"},[_c('el-button',{on:{\"click\":_vm.handleBack}},[_vm._v(\"取消\")]),_c('el-button',{attrs:{\"type\":\"primary\",\"loading\":_vm.saving},on:{\"click\":_vm.handleSave}},[_vm._v(\"确认添加\")])],1),_c('el-dialog',{attrs:{\"title\":\"请确认上架信息\",\"visible\":_vm.confirmVisible,\"width\":\"400px\"},on:{\"update:visible\":function($event){_vm.confirmVisible=$event}}},[_c('div',[_c('p',[_vm._v(\"请仔细确认已选择机器列表、价格及相关参数定义。\")]),_c('p',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(\"机器上架后,一经售出,在机器出售期间不能修改价格及机器参数。\")])]),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.confirmVisible = false}}},[_vm._v(\"取消\")]),_c('el-button',{attrs:{\"type\":\"primary\",\"loading\":_vm.saving},on:{\"click\":_vm.doSubmit}},[_vm._v(\"确认上架已选择机器\")])],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"header-container\"},[_c('nav',{staticClass:\"navbar\"},_vm._l((_vm.navigation),function(nav){return _c('router-link',{key:nav.path,staticClass:\"nav-btn\",attrs:{\"to\":nav.path,\"active-class\":\"active\",\"title\":nav.description}},[_c('span',{staticClass:\"nav-icon\"},[_vm._v(_vm._s(nav.icon))]),_c('span',{staticClass:\"nav-text\"},[_vm._v(_vm._s(nav.name))]),(nav.path === '/cart')?_c('span',{staticClass:\"cart-count\"},[_vm._v(\"(\"+_vm._s(_vm.cartItemCount)+\")\")]):_vm._e()])}),1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\r\n * 解密函数(与发送端保持一致)\r\n * @param {string} encryptedText - 加密的文本\r\n * @param {string} secretKey - 密钥\r\n * @returns {string} 解密后的字符串\r\n */\r\nfunction decryptData(encryptedText, secretKey) {\r\n try {\r\n // Base64解码\r\n const encrypted = atob(encryptedText);\r\n let decrypted = '';\r\n for (let i = 0; i < encrypted.length; i++) {\r\n decrypted += String.fromCharCode(encrypted.charCodeAt(i) ^ secretKey.charCodeAt(i % secretKey.length));\r\n }\r\n return decrypted;\r\n } catch (error) {\r\n console.error('解密失败:', error);\r\n return null;\r\n }\r\n }\r\n \r\n /**\r\n * 获取并解密URL参数\r\n */\r\n function getDecryptedParams() {\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const encryptedData = urlParams.get('data');\r\n const language = urlParams.get('language');\r\n const username = urlParams.get('username');\r\n const source = urlParams.get('source');\r\n const version = urlParams.get('version');\r\n \r\n // 解密敏感数据\r\n const secretKey = 'mining-pool-secret-key-2024'; // 必须与发送端保持一致\r\n let sensitiveData = null;\r\n \r\n if (encryptedData) {\r\n try {\r\n const decryptedJson = decryptData(encryptedData, secretKey);\r\n sensitiveData = JSON.parse(decryptedJson);\r\n } catch (error) {\r\n console.error('解密或解析数据失败:', error);\r\n }\r\n }\r\n \r\n return {\r\n // 敏感数据(已解密)\r\n token: sensitiveData?.token || '',\r\n leasEmail: sensitiveData?.leasEmail || '',\r\n userId: sensitiveData?.userId || '',\r\n timestamp: sensitiveData?.timestamp || null,\r\n \r\n // 非敏感数据(明文)\r\n language: language || 'zh',\r\n username: username || '',\r\n source: source || '',\r\n version: version || '1.0'\r\n };\r\n }\r\n \r\n /**\r\n * 执行自动登录\r\n */\r\n function performAutoLogin(token, userId, leasEmail) {\r\n console.log('执行自动登录:', { userId, leasEmail: leasEmail ? '***' : '' });\r\n // 这里可以添加自动登录的逻辑\r\n // 例如:设置全局状态、跳转页面等\r\n }\r\n \r\n /**\r\n * 设置界面语言\r\n */\r\n function setLanguage(language) {\r\n console.log('设置语言:', language);\r\n // 这里可以添加语言设置的逻辑\r\n // 例如:设置 i18n 语言、更新界面等\r\n }\r\n\r\n // 使用示例\r\n document.addEventListener('DOMContentLoaded', function() {\r\n const params = getDecryptedParams();\r\n if (params.token) {\r\n console.log(params.token,\"params.token 存入\");\r\n \r\n localStorage.setItem('token', params.token);\r\n localStorage.setItem('leasEmail', params.leasEmail);\r\n localStorage.setItem('userId', params.userId);\r\n localStorage.setItem('language', params.language);\r\n localStorage.setItem('username', params.username);\r\n localStorage.setItem('source', params.source);\r\n localStorage.setItem('version', params.version);\r\n }\r\n \r\n console.log('接收到的参数:', {\r\n userId: params.userId ? '***' : '',\r\n leasEmail: params.leasEmail ? '***' : '',\r\n token: params.token ? '***' : '',\r\n language: params.language,\r\n username: params.username,\r\n source: params.source\r\n });\r\n \r\n // 根据参数执行相应操作\r\n if (params.token && params.userId) {\r\n // 执行自动登录\r\n performAutoLogin(params.token, params.userId, params.leasEmail);\r\n }\r\n \r\n if (params.language) {\r\n // 设置界面语言\r\n setLanguage(params.language);\r\n }\r\n });","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./rechargeRecord.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./rechargeRecord.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./rechargeRecord.vue?vue&type=template&id=5cf693fa&scoped=true\"\nimport script from \"./rechargeRecord.vue?vue&type=script&lang=js\"\nexport * from \"./rechargeRecord.vue?vue&type=script&lang=js\"\nimport style0 from \"./rechargeRecord.vue?vue&type=style&index=0&id=5cf693fa&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5cf693fa\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./fundsFlow.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./fundsFlow.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./fundsFlow.vue?vue&type=template&id=32104fd7&scoped=true\"\nimport script from \"./fundsFlow.vue?vue&type=script&lang=js\"\nexport * from \"./fundsFlow.vue?vue&type=script&lang=js\"\nimport style0 from \"./fundsFlow.vue?vue&type=style&index=0&id=32104fd7&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"32104fd7\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"account-purchased\"},[_vm._m(0),_c('el-table',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.tableData,\"border\":\"\",\"stripe\":\"\"}},[_c('el-table-column',{attrs:{\"prop\":\"userId\",\"label\":\"用户\",\"width\":\"180\"}}),_c('el-table-column',{attrs:{\"prop\":\"productMachineId\",\"label\":\"机器ID\",\"width\":\"80\"}}),_c('el-table-column',{attrs:{\"prop\":\"type\",\"label\":\"类型\",\"width\":\"100\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-tag',{attrs:{\"type\":scope.row.type === 1 ? 'success' : 'info'}},[_vm._v(\" \"+_vm._s(scope.row.type === 1 ? \"算力套餐\" : \"挖矿机器\")+\" \")])]}}])}),_c('el-table-column',{attrs:{\"prop\":\"estimatedEndIncome\",\"label\":\"预计总收益\",\"min-width\":\"140\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"value strong\"},[(_vm.formatAmount(scope.row.estimatedEndIncome, scope.row.coin || 'USDT').truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatAmount(scope.row.estimatedEndIncome, scope.row.coin || 'USDT').full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatAmount(scope.row.estimatedEndIncome, scope.row.coin || 'USDT').text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatAmount(scope.row.estimatedEndIncome, scope.row.coin || 'USDT').text))])],1)]}}])}),_c('el-table-column',{attrs:{\"prop\":\"estimatedEndUsdtIncome\",\"label\":\"预计USDT总收益\",\"min-width\":\"160\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',{staticClass:\"value strong\"},[(_vm.formatAmount(scope.row.estimatedEndUsdtIncome, 'USDT').truncated)?_c('el-tooltip',{attrs:{\"content\":_vm.formatAmount(scope.row.estimatedEndUsdtIncome, 'USDT').full,\"placement\":\"top\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.formatAmount(scope.row.estimatedEndUsdtIncome, 'USDT').text)+\" \"),_c('i',{staticClass:\"el-icon-more amount-more\"})])]):_c('span',[_vm._v(_vm._s(_vm.formatAmount(scope.row.estimatedEndUsdtIncome, 'USDT').text))])],1)]}}])}),_c('el-table-column',{attrs:{\"prop\":\"startTime\",\"label\":\"开始时间\",\"min-width\":\"160\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',[_vm._v(_vm._s(_vm.formatDateTime(scope.row.startTime)))])]}}])}),_c('el-table-column',{attrs:{\"prop\":\"endTime\",\"label\":\"结束时间\",\"min-width\":\"160\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',[_vm._v(_vm._s(_vm.formatDateTime(scope.row.endTime)))])]}}])}),_c('el-table-column',{attrs:{\"prop\":\"status\",\"label\":\"状态\",\"width\":\"100\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-tag',{attrs:{\"type\":scope.row.status === 0 ? 'success' : 'info'}},[_vm._v(\" \"+_vm._s(scope.row.status === 0 ? \"运行中\" : \"已过期\")+\" \")])]}}])}),_c('el-table-column',{attrs:{\"label\":\"操作\",\"fixed\":\"right\",\"width\":\"120\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.handleView(scope.row)}}},[_vm._v(\"详情\")])]}}])})],1),_c('div',{staticClass:\"pagination\"},[_c('el-pagination',{attrs:{\"background\":\"\",\"layout\":\"total, sizes, prev, pager, next, jumper\",\"total\":_vm.total,\"current-page\":_vm.pagination.pageNum,\"page-sizes\":[10, 20, 50, 100],\"page-size\":_vm.pagination.pageSize},on:{\"update:currentPage\":function($event){return _vm.$set(_vm.pagination, \"pageNum\", $event)},\"update:current-page\":function($event){return _vm.$set(_vm.pagination, \"pageNum\", $event)},\"update:pageSize\":function($event){return _vm.$set(_vm.pagination, \"pageSize\", $event)},\"update:page-size\":function($event){return _vm.$set(_vm.pagination, \"pageSize\", $event)},\"size-change\":_vm.handleSizeChange,\"current-change\":_vm.handleCurrentChange}})],1)],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"toolbar\"},[_c('div',{staticClass:\"left-area\"},[_c('h2',{staticClass:\"page-title\"},[_vm._v(\"已购商品\")])])])\n}]\n\nexport { render, staticRenderFns }","\n\n\n\n ","/**\r\n * 错误提示管理器\r\n * 用于控制错误提示的频率,避免短时间内重复显示相同类型的错误\r\n */\r\nclass ErrorNotificationManager {\r\n constructor() {\r\n // 记录最近显示的错误信息\r\n this.recentErrors = new Map();\r\n // 默认节流时间 (30秒)\r\n this.throttleTime = 3000;\r\n // 错误类型映射\r\n this.errorTypes = {\r\n 'Network Error': 'network',\r\n 'timeout': 'timeout',\r\n 'Request failed with status code': 'statusCode',\r\n // 添加网络状态类型\r\n 'networkReconnected': 'networkStatus',\r\n 'NetworkError': 'network'\r\n };\r\n }\r\n\r\n /**\r\n * 获取错误类型\r\n * @param {String} message 错误信息\r\n * @returns {String} 错误类型\r\n */\r\n getErrorType(message) {\r\n for (const [key, type] of Object.entries(this.errorTypes)) {\r\n if (message.includes(key)) {\r\n return type;\r\n }\r\n }\r\n return 'unknown';\r\n }\r\n\r\n /**\r\n * 检查是否可以显示错误\r\n * @param {String} message 错误信息\r\n * @returns {Boolean} 是否可以显示\r\n */\r\n canShowError(message) {\r\n const errorType = this.getErrorType(message);\r\n const now = Date.now();\r\n \r\n // 检查同类型的错误是否最近已经显示过\r\n if (this.recentErrors.has(errorType)) {\r\n const lastTime = this.recentErrors.get(errorType);\r\n if (now - lastTime < this.throttleTime) {\r\n console.log(`[错误提示] 已抑制重复错误: ${errorType}`);\r\n return false;\r\n }\r\n }\r\n \r\n // 更新最后显示时间\r\n this.recentErrors.set(errorType, now);\r\n return true;\r\n }\r\n\r\n /**\r\n * 清理过期的错误记录\r\n */\r\n cleanup() {\r\n const now = Date.now();\r\n this.recentErrors.forEach((time, type) => {\r\n if (now - time > this.throttleTime) {\r\n this.recentErrors.delete(type);\r\n }\r\n });\r\n }\r\n}\r\n\r\n// 创建单例实例\r\nconst errorNotificationManager = new ErrorNotificationManager();\r\nexport default errorNotificationManager;","\r\n\r\n\r\n\r\n","\n\n\n\n ","/**\r\n * @file 商品数据服务(轻量静态数据源)\r\n * @description 提供商品列表与详情查询。无需后端即可演示。\r\n */\r\n\r\n/**\r\n * @typedef {Object} Product\r\n * @property {string} id - 商品唯一标识\r\n * @property {string} title - 商品标题\r\n * @property {string} description - 商品描述\r\n * @property {number} price - 商品单价(元)\r\n * @property {string} image - 商品图片URL(此处使用占位图)\r\n */\r\n\r\n/**\r\n * 内置演示商品数据\r\n * 使用简短且清晰的字段,满足演示所需\r\n * @type {Product[]}\r\n */\r\nconst products = [\r\n {\r\n id: 'p1001',\r\n title: '新能源充电桩(家用)',\r\n description: '7kW 单相,智能预约,支持远程监控。',\r\n price: 1299,\r\n image: 'https://via.placeholder.com/300x200?text=%E5%85%85%E7%94%B5%E6%A1%A9'\r\n },\r\n {\r\n id: 'p1002',\r\n title: '工业电能表',\r\n description: '三相四线,远程抄表,Modbus 通信。',\r\n price: 899,\r\n image: 'https://via.placeholder.com/300x200?text=%E7%94%B5%E8%83%BD%E8%A1%A8'\r\n },\r\n {\r\n id: 'p1003',\r\n title: '配电柜(入门版)',\r\n description: 'IP54 防护,内置断路器与防雷模块。',\r\n price: 5599,\r\n image: 'https://via.placeholder.com/300x200?text=%E9%85%8D%E7%94%B5%E6%9F%9C'\r\n },\r\n {\r\n id: 'p1004',\r\n title: '工矿照明灯',\r\n description: '120W 高亮,耐腐蚀,适配多场景。',\r\n price: 329,\r\n image: 'https://via.placeholder.com/300x200?text=%E7%85%A7%E6%98%8E%E7%81%AF'\r\n }\r\n]\r\n\r\n/**\r\n * 获取全部商品\r\n * @returns {Promise}\r\n */\r\nexport const listProducts = async () => {\r\n return Promise.resolve(products);\r\n}\r\n\r\n/**\r\n * 根据ID获取商品\r\n * @param {string} productId - 商品ID\r\n * @returns {Promise}\r\n */\r\nexport const getProductById = async (productId) => {\r\n const product = products.find((p) => p.id === productId);\r\n return Promise.resolve(product);\r\n}\r\n\r\nexport default {\r\n listProducts,\r\n getProductById\r\n}\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./myShops.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./myShops.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./myShops.vue?vue&type=template&id=031e6e83&scoped=true\"\nimport script from \"./myShops.vue?vue&type=script&lang=js\"\nexport * from \"./myShops.vue?vue&type=script&lang=js\"\nimport style0 from \"./myShops.vue?vue&type=style&index=0&id=031e6e83&prod&scoped=true&lang=css\"\nimport style1 from \"./myShops.vue?vue&type=style&index=1&id=031e6e83&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"031e6e83\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./products.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./products.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./products.vue?vue&type=template&id=d6c9b7e4&scoped=true\"\nimport script from \"./products.vue?vue&type=script&lang=js\"\nexport * from \"./products.vue?vue&type=script&lang=js\"\nimport style0 from \"./products.vue?vue&type=style&index=0&id=d6c9b7e4&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d6c9b7e4\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./orders.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./orders.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./orders.vue?vue&type=template&id=2ad2c7c3&scoped=true\"\nimport script from \"./orders.vue?vue&type=script&lang=js\"\nexport * from \"./orders.vue?vue&type=script&lang=js\"\nimport style0 from \"./orders.vue?vue&type=style&index=0&id=2ad2c7c3&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2ad2c7c3\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./receiptRecord.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./receiptRecord.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./receiptRecord.vue?vue&type=template&id=bd46f398&scoped=true\"\nimport script from \"./receiptRecord.vue?vue&type=script&lang=js\"\nexport * from \"./receiptRecord.vue?vue&type=script&lang=js\"\nimport style0 from \"./receiptRecord.vue?vue&type=style&index=0&id=bd46f398&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bd46f398\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"account-product-detail\"},[_c('div',{staticClass:\"header\"},[_c('el-button',{attrs:{\"type\":\"text\"},on:{\"click\":_vm.handleBack}},[_vm._v(\"返回\")]),_c('h2',{staticClass:\"title\"},[_vm._v(\"商品详情\")])],1),_c('el-card',{staticClass:\"detail-card\",attrs:{\"shadow\":\"never\"}},[_c('el-form',{staticClass:\"detail-form\",attrs:{\"model\":_vm.product,\"label-width\":\"90px\",\"size\":\"small\"}},[_c('el-row',{attrs:{\"gutter\":16}},[_c('el-col',{attrs:{\"span\":12}},[_c('el-form-item',{attrs:{\"label\":\"商品ID\"}},[_c('el-input',{attrs:{\"value\":_vm.product && _vm.product.id,\"disabled\":\"\"}})],1)],1),_c('el-col',{attrs:{\"span\":12}},[_c('el-form-item',{attrs:{\"label\":\"店铺ID\"}},[_c('el-input',{attrs:{\"value\":_vm.product && _vm.product.shopId,\"disabled\":\"\"}})],1)],1),_c('el-col',{attrs:{\"span\":12}},[_c('el-form-item',{attrs:{\"label\":\"名称\"}},[_c('el-input',{attrs:{\"value\":_vm.product && _vm.product.name,\"disabled\":\"\"}})],1)],1),_c('el-col',{attrs:{\"span\":12}},[_c('el-form-item',{attrs:{\"label\":\"币种\"}},[_c('el-input',{attrs:{\"value\":_vm.product && _vm.product.coin,\"disabled\":\"\"}})],1)],1),_c('el-col',{attrs:{\"span\":12}},[_c('el-form-item',{attrs:{\"label\":\"算法\"}},[_c('el-input',{attrs:{\"value\":_vm.product && _vm.product.algorithm,\"disabled\":\"\"}})],1)],1),_c('el-col',{attrs:{\"span\":12}},[_c('el-form-item',{attrs:{\"label\":\"类型\"}},[_c('el-input',{attrs:{\"value\":_vm.product && (_vm.product.type === 1 ? '算力套餐' : '挖矿机器'),\"disabled\":\"\"}})],1)],1),_c('el-col',{attrs:{\"span\":12}},[_c('el-form-item',{attrs:{\"label\":\"状态\"}},[_c('el-input',{attrs:{\"value\":_vm.product && (_vm.product.state === 1 ? '下架' : '上架'),\"disabled\":\"\"}})],1)],1),_c('el-col',{attrs:{\"span\":12}}),_c('el-col',{attrs:{\"span\":24}},[_c('el-form-item',{attrs:{\"label\":\"描述\"}},[_c('el-input',{attrs:{\"type\":\"textarea\",\"rows\":3,\"value\":_vm.product && _vm.product.description,\"disabled\":\"\"}})],1)],1)],1)],1)],1),_c('el-card',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.updateLoading),expression:\"updateLoading\"}],staticClass:\"detail-card\",attrs:{\"shadow\":\"never\"}},[_c('div',{staticClass:\"section-title\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(\"机器组合\")]),(_vm.machineList && _vm.machineList.length)?_c('div',[_c('el-table',{staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.machineList,\"border\":\"\",\"stripe\":\"\"}},[_c('el-table-column',{attrs:{\"prop\":\"user\",\"label\":\"挖矿账户\"}}),_c('el-table-column',{attrs:{\"prop\":\"id\",\"label\":\"矿机ID\"}}),_c('el-table-column',{attrs:{\"prop\":\"miner\",\"label\":\"机器编号\"}}),_c('el-table-column',{attrs:{\"label\":\"实际算力\",\"width\":\"100\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(scope.row.computingPower)+\" \"+_vm._s(scope.row.unit || ''))]}}],null,false,881627289)},[_c('template',{slot:\"header\"},[_c('el-tooltip',{attrs:{\"content\":\"实际算力为该机器在本矿池过去24H的平均算力\",\"effect\":\"dark\",\"placement\":\"top\"}},[_c('i',{staticClass:\"el-icon-question label-help\",attrs:{\"aria-label\":\"帮助\",\"tabindex\":\"0\"}})]),_c('span',[_vm._v(\"实际算力\")])],1)],2),_c('el-table-column',{attrs:{\"label\":\"理论算力\",\"min-width\":\"140\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-input',{class:{ 'changed-input': _vm.isCellChanged(scope.row, 'theoryPower') },staticStyle:{\"max-width\":\"260px\"},attrs:{\"size\":\"small\",\"inputmode\":\"decimal\",\"disabled\":_vm.isRowDisabled(scope.row)},on:{\"input\":function($event){return _vm.handleTheoryPowerInput(scope.$index)},\"blur\":function($event){return _vm.handleTheoryPowerBlur(scope.$index)}},model:{value:(scope.row.theoryPower),callback:function ($$v) {_vm.$set(scope.row, \"theoryPower\", $$v)},expression:\"scope.row.theoryPower\"}},[_c('template',{slot:\"append\"},[_c('el-select',{staticClass:\"append-select append-select--unit\",staticStyle:{\"width\":\"90px\"},attrs:{\"size\":\"mini\",\"disabled\":_vm.isRowDisabled(scope.row)},model:{value:(scope.row.unit),callback:function ($$v) {_vm.$set(scope.row, \"unit\", $$v)},expression:\"scope.row.unit\"}},_vm._l((_vm.unitOptions),function(u){return _c('el-option',{key:u,attrs:{\"label\":u,\"value\":u}})}),1)],1)],2)]}}],null,false,1615065668)}),_c('el-table-column',{attrs:{\"label\":\"功耗(kw/h)\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-input',{class:{ 'changed-input': _vm.isCellChanged(scope.row, 'powerDissipation') },staticStyle:{\"max-width\":\"260px\"},attrs:{\"size\":\"small\",\"inputmode\":\"decimal\",\"disabled\":_vm.isRowDisabled(scope.row)},on:{\"input\":function($event){return _vm.handleNumericCell(scope.$index, 'powerDissipation')},\"blur\":function($event){return _vm.handlePowerDissipationBlur(scope.$index)}},model:{value:(scope.row.powerDissipation),callback:function ($$v) {_vm.$set(scope.row, \"powerDissipation\", $$v)},expression:\"scope.row.powerDissipation\"}})]}}],null,false,2013801812)}),_c('el-table-column',{attrs:{\"label\":\"型号\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-input',{class:{ 'changed-input': _vm.isCellChanged(scope.row, 'type') },staticStyle:{\"max-width\":\"180px\"},attrs:{\"size\":\"small\",\"maxlength\":20,\"disabled\":_vm.isRowDisabled(scope.row)},on:{\"input\":function($event){return _vm.handleTypeCell(scope.$index)}},model:{value:(scope.row.type),callback:function ($$v) {_vm.$set(scope.row, \"type\", $$v)},expression:\"scope.row.type\"}})]}}],null,false,4182654038)}),_c('el-table-column',{attrs:{\"label\":\"售价\",\"width\":\"188\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-input',{class:{ 'changed-input': _vm.isCellChanged(scope.row, 'price') },staticStyle:{\"max-width\":\"260px\"},attrs:{\"size\":\"small\",\"inputmode\":\"decimal\",\"disabled\":_vm.isRowDisabled(scope.row)},on:{\"input\":function($event){return _vm.handleNumericCell(scope.$index, 'price')},\"blur\":function($event){return _vm.handlePriceBlur(scope.$index)}},model:{value:(scope.row._priceEditing),callback:function ($$v) {_vm.$set(scope.row, \"_priceEditing\", $$v)},expression:\"scope.row._priceEditing\"}},[_c('template',{slot:\"append\"},[_c('el-select',{staticClass:\"append-select append-select--coin\",staticStyle:{\"width\":\"120px\"},attrs:{\"size\":\"mini\"},on:{\"change\":function($event){return _vm.handlePayTypeChange(scope.$index)}},model:{value:(scope.row._selectedPayIndex),callback:function ($$v) {_vm.$set(scope.row, \"_selectedPayIndex\", $$v)},expression:\"scope.row._selectedPayIndex\"}},_vm._l(((scope.row.priceList || [])),function(pt,i){return _c('el-option',{key:pt.payTypeId || i,attrs:{\"label\":[String(pt.chain||'').toUpperCase(), String(pt.coin||'').toUpperCase()].filter(Boolean).join('-'),\"value\":i}})}),1)],1)],2)]}}],null,false,3035245774)},[_c('template',{slot:\"header\"},[_c('el-tooltip',{attrs:{\"effect\":\"dark\",\"placement\":\"top\"}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\" 卖家最终收款金额 = 机器售价 × 波动率\"),_c('br'),_vm._v(\" 波动率规则:\"),_c('br'),_vm._v(\" 1)0% - 5%(包含5%):波动率 = 1(按售价结算)\"),_c('br'),_vm._v(\" 2)5%以上:波动率 = 实际算力 / 理论算力,且不会超过 1,即最终结算时不会超过机器售价 \")]),_c('i',{staticClass:\"el-icon-question label-help\",attrs:{\"aria-label\":\"帮助\",\"tabindex\":\"0\"}})]),_c('span',[_vm._v(\"售价(按结算币种)\")])],1)],2),_c('el-table-column',{attrs:{\"label\":\"最大租赁天数(天)\",\"width\":\"100\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-input',{class:{ 'changed-input': _vm.isCellChanged(scope.row, 'maxLeaseDays') },staticStyle:{\"max-width\":\"260px\"},attrs:{\"size\":\"small\",\"inputmode\":\"numeric\",\"disabled\":_vm.isRowDisabled(scope.row)},on:{\"input\":function($event){return _vm.handleMaxLeaseDaysInput(scope.$index)},\"blur\":function($event){return _vm.handleMaxLeaseDaysBlur(scope.$index)}},model:{value:(scope.row.maxLeaseDays),callback:function ($$v) {_vm.$set(scope.row, \"maxLeaseDays\", $$v)},expression:\"scope.row.maxLeaseDays\"}},[_c('template',{slot:\"append\"},[_vm._v(\"天\")])],2)]}}],null,false,3414109227)}),_c('el-table-column',{attrs:{\"label\":\"上下架\",\"min-width\":\"140\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-switch',{attrs:{\"active-value\":0,\"inactive-value\":1,\"active-text\":\"上架\",\"inactive-text\":\"下架\",\"disabled\":_vm.isRowDisabled(scope.row)},on:{\"change\":function($event){return _vm.handleStateChange(scope.$index)}},model:{value:(scope.row.state),callback:function ($$v) {_vm.$set(scope.row, \"state\", $$v)},expression:\"scope.row.state\"}})]}}],null,false,1620801377)}),_c('el-table-column',{attrs:{\"label\":\"售出状态\",\"min-width\":\"100\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-tag',{attrs:{\"type\":scope.row.saleState === 0 ? 'info' : (scope.row.saleState === 1 ? 'danger' : 'warning')}},[_vm._v(\" \"+_vm._s(scope.row.saleState === 0 ? '未售出' : (scope.row.saleState === 1 ? '已售出' : '售出中'))+\" \")])]}}],null,false,1904393654)}),_c('el-table-column',{attrs:{\"label\":\"操作\",\"fixed\":\"right\",\"min-width\":\"120\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{staticStyle:{\"color\":\"#f56c6c\"},attrs:{\"type\":\"text\",\"size\":\"small\",\"disabled\":_vm.isRowDisabled(scope.row)},on:{\"click\":function($event){return _vm.handleDeleteMachine(scope.row)}}},[_vm._v(\"删除\")])]}}],null,false,979761678)})],1)],1):_c('div',{staticClass:\"empty-text\"},[_vm._v(\"暂无组合数据\")])]),(_vm.machineList && _vm.machineList.length)?_c('div',{staticClass:\"actions\"},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.handleOpenConfirm}},[_vm._v(\"提交修改机器\")])],1):_vm._e(),_c('el-dialog',{attrs:{\"title\":\"确认提交修改\",\"visible\":_vm.confirmVisible,\"width\":\"520px\"},on:{\"update:visible\":function($event){_vm.confirmVisible=$event}}},[_c('div',[_c('p',[_vm._v(\"请仔细确认已选择机器机器组合里的机器价格及相关参数定义。\")]),_c('p',[_vm._v(\"机器修改上架后,一经售出,在机器出售期间不能修改价格及机器参数。\")])]),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.confirmVisible = false}}},[_vm._v(\"取消\")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.handleSubmitMachines}},[_vm._v(\"确认提交修改\")])],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"withdrawal-history-container\"},[_vm._m(0),_c('div',{staticClass:\"tab-container\"},[_c('el-tabs',{on:{\"tab-click\":_vm.handleTabClick},model:{value:(_vm.activeTab),callback:function ($$v) {_vm.activeTab=$$v},expression:\"activeTab\"}},[_c('el-tab-pane',{attrs:{\"label\":\"提现中\",\"name\":\"pending\"}},[_c('div',{staticClass:\"tab-content\"},[_c('div',{staticClass:\"list-header\"},[_c('span',{staticClass:\"list-title\"},[_vm._v(\"提现中 (\"+_vm._s(_vm.total)+\")\")]),_c('el-button',{attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":_vm.refreshData}},[_c('i',{staticClass:\"el-icon-refresh\"}),_vm._v(\" 刷新 \")])],1),_c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"withdrawal-list\"},[_vm._l((_vm.pendingWithdrawals),function(item){return _c('div',{key:item.id,staticClass:\"withdrawal-item pending\",on:{\"click\":function($event){return _vm.showDetail(item)}}},[_c('div',{staticClass:\"item-main\"},[_c('div',{staticClass:\"item-left\"},[_c('div',{staticClass:\"amount\"},[_vm._v(_vm._s(item.amount)+\" \"+_vm._s(item.toSymbol || 'USDT'))]),_c('div',{staticClass:\"chain\"},[_vm._v(_vm._s(_vm.getChainName(item.toChain)))])]),_c('div',{staticClass:\"item-right\"},[_c('div',{staticClass:\"status pending-status\"},[_c('i',{staticClass:\"el-icon-loading\"}),_vm._v(\" \"+_vm._s(_vm.getStatusText(item.status))+\" \")]),_c('div',{staticClass:\"time\"},[_vm._v(_vm._s(_vm.formatTime(item.createTime)))])])]),_c('div',{staticClass:\"item-footer\"},[_c('div',{staticClass:\"footer-left\"},[_c('span',{staticClass:\"address\"},[_vm._v(_vm._s(_vm.formatAddress(item.toAddress)))]),(item.txHash)?_c('span',{staticClass:\"tx-hash\"},[_c('i',{staticClass:\"el-icon-link\"}),_vm._v(\" \"+_vm._s(_vm.formatAddress(item.txHash))+\" \")]):_vm._e()]),_c('i',{staticClass:\"el-icon-arrow-right\"})])])}),(_vm.pendingWithdrawals.length === 0)?_c('div',{staticClass:\"empty-state\"},[_c('i',{staticClass:\"el-icon-document\"}),_c('p',[_vm._v(\"暂无提现中的记录\")])]):_vm._e()],2)])]),_c('el-tab-pane',{attrs:{\"label\":\"提现成功\",\"name\":\"success\"}},[_c('div',{staticClass:\"tab-content\"},[_c('div',{staticClass:\"list-header\"},[_c('span',{staticClass:\"list-title\"},[_vm._v(\"提现成功 (\"+_vm._s(_vm.total)+\")\")]),_c('el-button',{attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":_vm.refreshData}},[_c('i',{staticClass:\"el-icon-refresh\"}),_vm._v(\" 刷新 \")])],1),_c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"withdrawal-list\"},[_vm._l((_vm.successWithdrawals),function(item){return _c('div',{key:item.id,staticClass:\"withdrawal-item success\",on:{\"click\":function($event){return _vm.showDetail(item)}}},[_c('div',{staticClass:\"item-main\"},[_c('div',{staticClass:\"item-left\"},[_c('div',{staticClass:\"amount\"},[_vm._v(_vm._s(item.amount)+\" \"+_vm._s(item.toSymbol || 'USDT'))]),_c('div',{staticClass:\"chain\"},[_vm._v(_vm._s(_vm.getChainName(item.toChain)))])]),_c('div',{staticClass:\"item-right\"},[_c('div',{staticClass:\"status success-status\"},[_c('i',{staticClass:\"el-icon-check\"}),_vm._v(\" \"+_vm._s(_vm.getStatusText(item.status))+\" \")]),_c('div',{staticClass:\"time\"},[_vm._v(_vm._s(_vm.formatTime(item.createTime)))])])]),_c('div',{staticClass:\"item-footer\"},[_c('div',{staticClass:\"footer-left\"},[_c('span',{staticClass:\"address\"},[_vm._v(_vm._s(_vm.formatAddress(item.toAddress)))]),(item.txHash)?_c('span',{staticClass:\"tx-hash\"},[_c('i',{staticClass:\"el-icon-link\"}),_vm._v(\" \"+_vm._s(_vm.formatAddress(item.txHash))+\" \")]):_vm._e()]),_c('i',{staticClass:\"el-icon-arrow-right\"})])])}),(_vm.successWithdrawals.length === 0)?_c('div',{staticClass:\"empty-state\"},[_c('i',{staticClass:\"el-icon-document\"}),_c('p',[_vm._v(\"暂无提现成功的记录\")])]):_vm._e()],2)])]),_c('el-tab-pane',{attrs:{\"label\":\"提现失败\",\"name\":\"failed\"}},[_c('div',{staticClass:\"tab-content\"},[_c('div',{staticClass:\"list-header\"},[_c('span',{staticClass:\"list-title\"},[_vm._v(\"提现失败 (\"+_vm._s(_vm.total)+\")\")]),_c('el-button',{attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":_vm.refreshData}},[_c('i',{staticClass:\"el-icon-refresh\"}),_vm._v(\" 刷新 \")])],1),_c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"withdrawal-list\"},[_vm._l((_vm.failedWithdrawals),function(item){return _c('div',{key:item.id,staticClass:\"withdrawal-item failed\",on:{\"click\":function($event){return _vm.showDetail(item)}}},[_c('div',{staticClass:\"item-main\"},[_c('div',{staticClass:\"item-left\"},[_c('div',{staticClass:\"amount\"},[_vm._v(_vm._s(item.amount)+\" \"+_vm._s(item.toSymbol || 'USDT'))]),_c('div',{staticClass:\"chain\"},[_vm._v(_vm._s(_vm.getChainName(item.toChain)))])]),_c('div',{staticClass:\"item-right\"},[_c('div',{staticClass:\"status failed-status\"},[_c('i',{staticClass:\"el-icon-close\"}),_vm._v(\" \"+_vm._s(_vm.getStatusText(item.status))+\" \")]),_c('div',{staticClass:\"time\"},[_vm._v(_vm._s(_vm.formatTime(item.createTime)))])])]),_c('div',{staticClass:\"item-footer\"},[_c('div',{staticClass:\"footer-left\"},[_c('span',{staticClass:\"address\"},[_vm._v(_vm._s(_vm.formatAddress(item.toAddress)))]),(item.txHash)?_c('span',{staticClass:\"tx-hash\"},[_c('i',{staticClass:\"el-icon-link\"}),_vm._v(\" \"+_vm._s(_vm.formatAddress(item.txHash))+\" \")]):_vm._e()]),_c('i',{staticClass:\"el-icon-arrow-right\"})])])}),(_vm.failedWithdrawals.length === 0)?_c('div',{staticClass:\"empty-state\"},[_c('i',{staticClass:\"el-icon-document\"}),_c('p',[_vm._v(\"暂无提现失败的记录\")])]):_vm._e()],2)])])],1),_c('el-row',[_c('el-col',{staticStyle:{\"display\":\"flex\",\"justify-content\":\"center\"},attrs:{\"span\":24}},[_c('el-pagination',{staticStyle:{\"margin\":\"0 auto\",\"margin-top\":\"10px\"},attrs:{\"current-page\":_vm.currentPage,\"page-sizes\":_vm.pageSizes,\"page-size\":_vm.pagination.pageSize,\"layout\":\"total, sizes, prev, pager, next, jumper\",\"total\":_vm.total},on:{\"size-change\":_vm.handleSizeChange,\"current-change\":_vm.handleCurrentChange,\"update:currentPage\":function($event){_vm.currentPage=$event},\"update:current-page\":function($event){_vm.currentPage=$event}}})],1)],1)],1),_c('el-dialog',{attrs:{\"title\":\"提现详情\",\"visible\":_vm.detailDialogVisible,\"width\":\"600px\"},on:{\"update:visible\":function($event){_vm.detailDialogVisible=$event},\"close\":_vm.closeDetail}},[(_vm.selectedItem)?_c('div',{staticClass:\"detail-content\"},[_c('div',{staticClass:\"detail-section\"},[_c('h3',{staticClass:\"section-title\"},[_vm._v(\"基本信息\")]),_c('div',{staticClass:\"detail-list\"},[_c('div',{staticClass:\"detail-row\"},[_c('span',{staticClass:\"detail-label\"},[_vm._v(\"提现ID\")]),_c('span',{staticClass:\"detail-value\"},[_vm._v(_vm._s(_vm.selectedItem.id))])]),_c('div',{staticClass:\"detail-row\"},[_c('span',{staticClass:\"detail-label\"},[_vm._v(\"提现金额\")]),_c('span',{staticClass:\"detail-value amount\"},[_vm._v(_vm._s(_vm.selectedItem.amount)+\" \"+_vm._s(_vm.selectedItem.toSymbol || 'USDT'))])]),_c('div',{staticClass:\"detail-row\"},[_c('span',{staticClass:\"detail-label\"},[_vm._v(\"区块链网络\")]),_c('span',{staticClass:\"detail-value\"},[_vm._v(_vm._s(_vm.getChainName(_vm.selectedItem.toChain)))])]),_c('div',{staticClass:\"detail-row\"},[_c('span',{staticClass:\"detail-label\"},[_vm._v(\"提现状态\")]),_c('span',{staticClass:\"detail-value\"},[_c('el-tag',{attrs:{\"type\":_vm.getStatusType(_vm.selectedItem.status)}},[_vm._v(\" \"+_vm._s(_vm.getStatusText(_vm.selectedItem.status))+\" \")])],1)])])]),_c('div',{staticClass:\"detail-section\"},[_c('h3',{staticClass:\"section-title\"},[_vm._v(\"地址信息\")]),_c('div',{staticClass:\"detail-list\"},[_c('div',{staticClass:\"detail-row\"},[_c('span',{staticClass:\"detail-label\"},[_vm._v(\"收款地址\")]),_c('div',{staticClass:\"address-container\"},[_c('span',{staticClass:\"detail-value address\"},[_vm._v(_vm._s(_vm.selectedItem.toAddress))]),_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.copyAddress(_vm.selectedItem.toAddress)}}},[_vm._v(\" 复制 \")])],1)]),_c('div',{staticClass:\"detail-row\"},[_c('span',{staticClass:\"detail-label\"},[_vm._v(\"交易哈希\")]),_c('div',{staticClass:\"address-container\"},[_c('span',{staticClass:\"detail-value address\"},[_vm._v(_vm._s(_vm.selectedItem.txHash))]),(_vm.selectedItem.txHash)?_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.copyAddress(_vm.selectedItem.txHash)}}},[_vm._v(\" 复制 \")]):_vm._e()],1)])])]),_c('div',{staticClass:\"detail-section\"},[_c('h3',{staticClass:\"section-title\"},[_vm._v(\"时间信息\")]),_c('div',{staticClass:\"detail-list\"},[_c('div',{staticClass:\"detail-row\"},[_c('span',{staticClass:\"detail-label\"},[_vm._v(\"提现时间\")]),_c('span',{staticClass:\"detail-value\"},[_vm._v(_vm._s(_vm.formatFullTime(_vm.selectedItem.createTime)))])]),(_vm.selectedItem.updateTime)?_c('div',{staticClass:\"detail-row\"},[_c('span',{staticClass:\"detail-label\"},[_vm._v(\"完成时间\")]),_c('span',{staticClass:\"detail-value\"},[_vm._v(_vm._s(_vm.formatFullTime(_vm.selectedItem.updateTime)))])]):_vm._e()])])]):_vm._e(),_c('div',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":_vm.closeDetail}},[_vm._v(\"关闭\")])],1)])],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"page-header\"},[_c('h1',{staticClass:\"page-title\"},[_vm._v(\"提现记录\")]),_c('p',{staticClass:\"page-subtitle\"},[_vm._v(\"查看您的提现申请和交易状态\")])])\n}]\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"panel\"},[_c('h2',{staticClass:\"panel-title page-title\"},[_vm._v(\"钱包绑定\")]),_c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"panel-body\"},[_c('el-form',{staticClass:\"config-form\",attrs:{\"model\":_vm.form,\"label-width\":\"120px\"}},[_c('el-form-item',{attrs:{\"label\":\"选择链/币种\"}},[_c('el-cascader',{staticStyle:{\"width\":\"420px\"},attrs:{\"options\":_vm.options,\"props\":_vm.cascaderProps,\"show-all-levels\":false,\"clearable\":\"\",\"filterable\":\"\"},on:{\"change\":_vm.handleChange,\"expand-change\":_vm.handleExpandChange},scopedSlots:_vm._u([{key:\"default\",fn:function({ node, data }){return [_c('span',{staticClass:\"custom-node\",attrs:{\"aria-label\":\"cascader-item\",\"tabindex\":\"0\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.handleItemClick(node, data)}}},[_c('span',{staticClass:\"node-label\"},[_vm._v(_vm._s(data.label))]),(node.isLeaf && node.checked)?_c('span',{staticClass:\"leaf-checked\",attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"✓\")]):_vm._e()])]}}]),model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1),_c('el-form-item',{attrs:{\"label\":\"已选择币种\"}},[_c('div',{staticClass:\"selected-coins\",attrs:{\"aria-label\":\"selected-coins\",\"tabindex\":\"0\"}},[_vm._l((_vm.selectedCoins),function(coin){return _c('el-tag',{key:coin,attrs:{\"type\":\"warning\",\"effect\":\"light\",\"closable\":\"\",\"disable-transitions\":\"\"},on:{\"close\":function($event){return _vm.handleRemoveSelectedCoin(coin)}}},[_vm._v(\" \"+_vm._s(coin)+\" \")])}),(_vm.selectedCoins.length === 0)?_c('span',{staticClass:\"placeholder\"},[_vm._v(\"未选择\")]):_vm._e()],2)]),_c('el-form-item',{attrs:{\"label\":\"收款钱包地址\"}},[_c('el-input',{attrs:{\"placeholder\":\"请输入\"},model:{value:(_vm.form.payAddress),callback:function ($$v) {_vm.$set(_vm.form, \"payAddress\", $$v)},expression:\"form.payAddress\"}})],1),_c('el-form-item',[_c('el-button',{staticStyle:{\"width\":\"200px\"},attrs:{\"type\":\"primary\"},on:{\"click\":_vm.handleSave}},[_vm._v(\"确认绑定\")])],1)],1),_c('el-dialog',{attrs:{\"visible\":_vm.preCheck.visible,\"width\":\"80vw\",\"close-on-click-modal\":false,\"title\":\"检测到关联商品\"},on:{\"update:visible\":function($event){return _vm.$set(_vm.preCheck, \"visible\", $event)},\"close\":_vm.handlePreCheckClose},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [_c('el-button',{on:{\"click\":function($event){_vm.preCheck.visible = false}}},[_vm._v(\"取消\")]),_c('el-button',{attrs:{\"type\":\"primary\",\"disabled\":!_vm.canSubmitPreCheck},on:{\"click\":_vm.handleConfirmBindAfterPreview}},[_vm._v(\"继续绑定\")])]},proxy:true}])},[_c('div',{staticStyle:{\"margin-bottom\":\"10px\"}},[_c('el-alert',{attrs:{\"type\":\"warning\",\"closable\":false,\"show-icon\":\"\",\"description\":\"检测到以下商品与本次绑定的链/币相关。继续绑定后,可能需要为这些商品配置该新链下的价格。是否继续?\"}})],1),_c('p',{staticStyle:{\"color\":\"red\",\"font-size\":\"12px\",\"margin-top\":\"6px\",\"text-align\":\"right\"}},[_vm._v(\"* 请填写每个商品对应币种的价格,商品包含机器统一设置价格,如需单台修改请在商品列表-详情页操作\")]),_c('el-table',{attrs:{\"data\":_vm.preCheck.rows,\"height\":\"360\",\"border\":\"\",\"header-cell-style\":{ textAlign: 'left' },\"cell-style\":{ textAlign: 'left' }}},[_c('el-table-column',{attrs:{\"label\":\"商品名称\",\"min-width\":\"160\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(scope.row.name || scope.row.productName || scope.row.title || scope.row.product || '-'))]}}])}),_c('el-table-column',{attrs:{\"label\":\"链\",\"min-width\":\"120\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_vm._v(\" \"+_vm._s((_vm.form.chain || '').toUpperCase())+\" \")]},proxy:true}])}),_c('el-table-column',{attrs:{\"label\":\"币种\",\"min-width\":\"120\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.form.payCoin.split(',').map(s=>s.trim().toUpperCase()).join(','))+\" \")]},proxy:true}])}),_c('el-table-column',{attrs:{\"label\":\"总矿机数\",\"min-width\":\"100\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(scope.row.totalMachineNumber != null ? scope.row.totalMachineNumber : (scope.row.total || scope.row.totalMachines || '-')))]}}])}),_c('el-table-column',{attrs:{\"label\":\"商品状态\",\"min-width\":\"100\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(_vm._s(Number(scope.row.state) === 1 ? '下架' : '上架'))]}}])}),_vm._l((_vm.coinsForBind),function(sym){return _c('el-table-column',{key:'price-'+sym,attrs:{\"label\":sym + ' 价格',\"min-width\":\"160\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-input',{staticClass:\"price-input\",attrs:{\"size\":\"mini\",\"placeholder\":\"请输入\",\"inputmode\":\"decimal\"},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_vm._v(_vm._s(sym))]},proxy:true}],null,true),model:{value:(_vm.preCheck.rowPrices[_vm.getRowKey(scope.row, scope.$index)][sym]),callback:function ($$v) {_vm.$set(_vm.preCheck.rowPrices[_vm.getRowKey(scope.row, scope.$index)], sym, $$v)},expression:\"preCheck.rowPrices[getRowKey(scope.row, scope.$index)][sym]\"}})]}}],null,true)})})],2)],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n ","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./purchasedDetail.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./purchasedDetail.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./purchasedDetail.vue?vue&type=template&id=592f2fb3&scoped=true\"\nimport script from \"./purchasedDetail.vue?vue&type=script&lang=js\"\nexport * from \"./purchasedDetail.vue?vue&type=script&lang=js\"\nimport style0 from \"./purchasedDetail.vue?vue&type=style&index=0&id=592f2fb3&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"592f2fb3\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OrderList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OrderList.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./OrderList.vue?vue&type=template&id=5400b150&scoped=true\"\nimport script from \"./OrderList.vue?vue&type=script&lang=js\"\nexport * from \"./OrderList.vue?vue&type=script&lang=js\"\nimport style0 from \"./OrderList.vue?vue&type=style&index=0&id=5400b150&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5400b150\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./wallet.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./wallet.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./wallet.vue?vue&type=template&id=75ddb61b&scoped=true\"\nimport script from \"./wallet.vue?vue&type=script&lang=js\"\nexport * from \"./wallet.vue?vue&type=script&lang=js\"\nimport style0 from \"./wallet.vue?vue&type=style&index=0&id=75ddb61b&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"75ddb61b\",\n null\n \n)\n\nexport default component.exports","import { getProductList } from '../../api/products'\nexport default {\n name: 'ProductList',\n data() {\n return {\n products: [\n // {\n // id: 1,\n // name: \"Nexa\",\n // price: `10000~20000`,\n // image: \"https://img.yzcdn.cn/vant/apple-1.jpg\",\n // desc: \"NexaPow\",\n // },\n // {\n // id: 2,\n // name: \"grs\",\n // price: `10000~20000`,\n // image: \"https://img.yzcdn.cn/vant/apple-1.jpg\",\n // desc: \"groestl\",\n // },\n // {\n // id: 3,\n // name: \"mona\",\n // price: `10000~20000`,\n // image: \"https://img.yzcdn.cn/vant/apple-1.jpg\",\n // desc: \"Lyra2REv2\",\n // },\n // {\n // id: 4,\n // name: \"dgb\",\n // price: `10000~20000`,\n // image: \"https://img.yzcdn.cn/vant/apple-1.jpg\",\n // desc: \"DigiByte(Skein)\",\n // },\n ],\n loading: false,\n powerList: [\n // {\n // value: 1,\n // label: \"NexaPow\",\n // children: [\n // {\n // value: 1 - 1,\n // label: \"挖矿账户1\",\n // },\n // {\n // value: 1 - 2,\n // label: \"挖矿账户2\",\n // },\n // ],\n // },\n // {\n // value: 2,\n // label: \"Grepow\",\n // children: [\n // {\n // value: 2 - 1,\n // label: \"挖矿账户1\",\n // },\n // {\n // value: 2 - 2,\n // label: \"挖矿账户2\",\n // },\n // ],\n // },\n // {\n // value: 3,\n // label: \"mofang\",\n // children: [\n // {\n // value: 3 - 1,\n // label: \"挖矿账户1\",\n // },\n // ],\n // },\n ], \n currencyList: [\n {\n path: \"nexaAccess\",\n value: \"nexa\",\n label: \"nexa\",\n\n imgUrl: `https://m2pool.com/img/nexa.png`,\n name: \"course.NEXAcourse\",\n show: true,\n amount: 10000,\n },\n {\n path: \"grsAccess\",\n value: \"grs\",\n label: \"grs\",\n\n imgUrl: `https://m2pool.com/img/grs.svg`,\n name: \"course.GRScourse\",\n show: true,\n amount: 1,\n },\n {\n path: \"monaAccess\",\n value: \"mona\",\n label: \"mona\",\n\n imgUrl: `https://m2pool.com/img/mona.svg`,\n name: \"course.MONAcourse\",\n show: true,\n amount: 1,\n },\n {\n path: \"dgbsAccess\",\n value: \"dgbs\",\n // label: \"dgb-skein-pool1\",\n label: \"dgb(skein)\",\n\n imgUrl: `https://m2pool.com/img/dgb.svg`,\n name: \"course.dgbsCourse\",\n show: true,\n amount: 1,\n },\n {\n path: \"dgbqAccess\",\n value: \"dgbq\",\n // label: \"dgb(qubit-pool1)\",\n label: \"dgb(qubit)\",\n\n imgUrl: `https://m2pool.com/img/dgb.svg`,\n name: \"course.dgbqCourse\",\n show: true,\n amount: 1,\n },\n {\n path: \"dgboAccess\",\n value: \"dgbo\",\n // label: \"dgb-odocrypt-pool1\",\n label: \"dgb(odocrypt)\",\n\n imgUrl: `https://m2pool.com/img/dgb.svg`,\n name: \"course.dgboCourse\",\n show: true,\n amount: 1,\n },\n {\n path: \"rxdAccess\",\n value: \"rxd\",\n label: \"radiant(rxd)\",\n\n imgUrl: `https://m2pool.com/img/rxd.png`,\n name: \"course.RXDcourse\",\n show: true,\n amount: 100,\n },\n {\n path: \"enxAccess\",\n value: \"enx\",\n label: \"Entropyx(enx)\",\n\n imgUrl: `https://m2pool.com/img/enx.svg`,\n name: \"course.ENXcourse\",\n show: true,\n amount: 5000,\n },\n {\n path: \"alphminingPool\",\n value: \"alph\",\n label: \"alephium\",\n\n imgUrl: `https://m2pool.com/img/alph.svg`,\n name: \"course.alphCourse\",\n show: true,\n amount: 1,\n },\n ],\n screenCurrency: \"\",\n searchAlgorithm: \"\",\n params:{\n coin: \"\",\n algorithm: \"\"\n },\n productListLoading:false,\n }\n },\n mounted() {\n this.fetchGetList()\n },\n methods: {\n /**\n * 价格裁剪为两位小数(不四舍五入)\n * 兼容区间字符串:\"min-max\" 或 单值\n */\n formatPriceRange(input) {\n try {\n if (input === null || input === undefined) return '0.00'\n const raw = String(input)\n if (raw.includes('-')) {\n const [lo, hi] = raw.split('-')\n return `${this._truncate2(lo)}-${this._truncate2(hi)}`\n }\n return this._truncate2(raw)\n } catch (e) {\n return '0.00'\n }\n },\n /**\n * 将任意数字字符串截断为 2 位小数(不四舍五入)。\n */\n _truncate2(val) {\n if (val === null || val === undefined) return '0.00'\n const str = String(val).trim()\n if (!str) return '0.00'\n const [intPart, decPart = ''] = str.split('.')\n const two = decPart.slice(0, 2)\n return `${intPart}.${two.padEnd(2, '0')}`\n },\n handleCurrencyChange(val){\n try{\n // 清空时(el-select 的 clear 同时触发 change),避免重复请求,交由 handleCurrencyClear 处理\n if (val === undefined || val === null || val === '') return\n // 选择具体币种时,合并算法关键词一起查询\n this.params.coin = val\n const keyword = (this.searchAlgorithm || '').trim()\n const req = keyword ? { coin: val, algorithm: keyword } : { coin: val }\n this.fetchGetList(req)\n \n \n // 可在此发起接口:getProductList({ coin: val })\n // this.fetchGetList({ coin: val })\n }catch(e){\n console.error('处理币种变更失败', e)\n }\n },\n\n async fetchGetList(params) {\n this.productListLoading = true\n try {\n const res = await getProductList(params)\n console.log('API响应:', res)\n if (res && res.code === 200) {\n this.products = res.rows || []\n console.log('商品数据:', this.products)\n } else {\n console.error('API返回错误:', res)\n this.products = []\n }\n } catch (error) {\n console.error('获取商品列表失败:', error)\n this.products = []\n // 添加一些测试数据,避免页面空白\n this.products = [\n // {\n // id: 1,\n // name: \"测试商品1\",\n // algorithm: \"测试算法1\",\n // priceRange: \"100-200\",\n // image: \"https://img.yzcdn.cn/vant/apple-1.jpg\"\n // },\n // {\n // id: 2,\n // name: \"测试商品2\", \n // algorithm: \"测试算法2\",\n // priceRange: \"200-300\",\n // image: \"https://img.yzcdn.cn/vant/apple-1.jpg\"\n // }\n ]\n }\n this.productListLoading = false\n },\n // 算法搜索(使用同一接口,传入 algorithm 参数)\n handleAlgorithmSearch() {\n const keyword = (this.searchAlgorithm || '').trim()\n const next = { ...this.params }\n if (keyword) {\n next.algorithm = keyword\n this.params.algorithm = keyword\n } else {\n delete next.algorithm\n this.params.algorithm = \"\"\n }\n // 不重置下拉,只根据算法关键词查询\n if (next.algorithm) this.fetchGetList({ ...next, coin: this.screenCurrency || undefined })\n else this.fetchGetList(this.screenCurrency ? { coin: this.screenCurrency } : undefined)\n \n },\n // 清空下拉时:只清 coin,保留算法条件\n handleCurrencyClear() {\n this.screenCurrency = \"\"\n this.params.coin = \"\"\n const keyword = (this.searchAlgorithm || '').trim()\n if (keyword) this.fetchGetList({ algorithm: keyword })\n else this.fetchGetList()\n },\n // 清空算法时:只清 algorithm,保留下拉 coin\n handleAlgorithmClear() {\n this.searchAlgorithm = \"\"\n this.params.algorithm = \"\"\n const coin = this.screenCurrency\n if (coin) this.fetchGetList({ coin })\n else this.fetchGetList()\n },\n handleProductClick(product) {\n\n if (product.id || product.id == 0) {\n \n this.$router.push(`/product/${product.id}`); \n } \n\n \n },\n\n\n\n }\n}","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=662f903c\"\nvar script = {}\nimport style0 from \"./App.vue?vue&type=style&index=0&id=662f903c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export const coinList = [\r\n {\r\n path: \"nexaAccess\",\r\n value: \"nexa\",\r\n label: \"nexa\",\r\n\r\n imgUrl: `https://m2pool.com/img/nexa.png`,\r\n name: \"course.NEXAcourse\",\r\n show: true,\r\n amount: 10000,\r\n },\r\n {\r\n path: \"grsAccess\",\r\n value: \"grs\",\r\n label: \"grs\",\r\n\r\n imgUrl: `https://m2pool.com/img/grs.svg`,\r\n name: \"course.GRScourse\",\r\n show: true,\r\n amount: 1,\r\n },\r\n {\r\n path: \"monaAccess\",\r\n value: \"mona\",\r\n label: \"mona\",\r\n\r\n imgUrl: `https://m2pool.com/img/mona.svg`,\r\n name: \"course.MONAcourse\",\r\n show: true,\r\n amount: 1,\r\n },\r\n {\r\n path: \"dgbsAccess\",\r\n value: \"dgbs\",\r\n // label: \"dgb-skein-pool1\",\r\n label: \"dgb(skein)\",\r\n\r\n imgUrl: `https://m2pool.com/img/dgb.svg`,\r\n name: \"course.dgbsCourse\",\r\n show: true,\r\n amount: 1,\r\n },\r\n {\r\n path: \"dgbqAccess\",\r\n value: \"dgbq\",\r\n // label: \"dgb(qubit-pool1)\",\r\n label: \"dgb(qubit)\",\r\n\r\n imgUrl: `https://m2pool.com/img/dgb.svg`,\r\n name: \"course.dgbqCourse\",\r\n show: true,\r\n amount: 1,\r\n },\r\n {\r\n path: \"dgboAccess\",\r\n value: \"dgbo\",\r\n // label: \"dgb-odocrypt-pool1\",\r\n label: \"dgb(odocrypt)\",\r\n\r\n imgUrl: `https://m2pool.com/img/dgb.svg`,\r\n name: \"course.dgboCourse\",\r\n show: true,\r\n amount: 1,\r\n },\r\n {\r\n path: \"rxdAccess\",\r\n value: \"rxd\",\r\n label: \"radiant(rxd)\",\r\n\r\n imgUrl: `https://m2pool.com/img/rxd.png`,\r\n name: \"course.RXDcourse\",\r\n show: true,\r\n amount: 100,\r\n },\r\n {\r\n path: \"enxAccess\",\r\n value: \"enx\",\r\n label: \"Entropyx(enx)\",\r\n\r\n imgUrl: `https://m2pool.com/img/enx.svg`,\r\n name: \"course.ENXcourse\",\r\n show: true,\r\n amount: 5000,\r\n },\r\n {\r\n path: \"alphminingPool\",\r\n value: \"alph\",\r\n label: \"alephium\",\r\n\r\n imgUrl: `https://m2pool.com/img/alph.svg`,\r\n name: \"course.alphCourse\",\r\n show: true,\r\n amount: 1,\r\n },\r\n ]","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./productNew.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./productNew.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./productNew.vue?vue&type=template&id=538996de&scoped=true\"\nimport script from \"./productNew.vue?vue&type=script&lang=js\"\nexport * from \"./productNew.vue?vue&type=script&lang=js\"\nimport style0 from \"./productNew.vue?vue&type=style&index=0&id=538996de&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"538996de\",\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport VueRouter from 'vue-router'\nimport { mainRoutes } from './routes'\n\nVue.use(VueRouter)\n\nconst router = new VueRouter({\n mode: 'history',\n base: process.env.BASE_URL,\n routes: mainRoutes\n})\n\n// 路由守卫 - 设置页面标题和权限检查\nrouter.beforeEach((to, from, next) => {\n // 设置页面标题\n if (to.meta && to.meta.title) {\n document.title = `${to.meta.title} - Power Leasing`\n } else {\n document.title = 'Power Leasing - 电商系统'\n }\n \n // 检查权限\n if (to.meta && to.meta.allAuthority) {\n // 这里可以添加权限检查逻辑\n // 目前所有页面都是 ['all'] 权限,所以直接通过\n console.log(`访问页面: ${to.meta.title}, 权限: ${to.meta.allAuthority.join(', ')}`)\n }\n \n next()\n})\n\n// 路由错误处理\nrouter.onError((error) => {\n console.error('路由错误:', error)\n // 可以在这里添加错误处理逻辑,比如跳转到错误页面\n})\n\nexport default router\n","export default {\r\n '401': '认证失败,无法访问系统资源,请重新登录',\r\n '403': '当前操作没有权限',\r\n '404': '访问资源不存在',\r\n 'default': '系统未知错误,请反馈给管理员'\r\n}\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"checkout-page\"},[_c('h1',{staticClass:\"page-title\"},[_vm._v(\"订单结算\")]),(_vm.loading)?_c('div',{staticClass:\"loading\"},[_c('el-loading-spinner'),_vm._v(\" 加载中... \")],1):(_vm.cartItems.length === 0)?_c('div',{staticClass:\"empty-cart\"},[_c('div',{staticClass:\"empty-icon\"},[_vm._v(\"🛒\")]),_c('h2',[_vm._v(\"购物车是空的\")]),_c('p',[_vm._v(\"请先添加商品到购物车\")]),_c('router-link',{staticClass:\"shop-now-btn\",attrs:{\"to\":\"/productList\"}},[_vm._v(\" 去购物 \")])],1):_c('div',{staticClass:\"checkout-content\"},[_c('div',{staticClass:\"order-summary\"},[_c('h2',{staticClass:\"section-title\"},[_vm._v(\"订单摘要\")]),_c('div',{staticClass:\"order-items\"},_vm._l((_vm.cartItems),function(item){return _c('div',{key:item.id,staticClass:\"order-item\"},[_c('div',{staticClass:\"item-image\"},[_c('img',{attrs:{\"src\":item.image,\"alt\":item.title}})]),_c('div',{staticClass:\"item-info\"},[_c('h3',{staticClass:\"item-title\"},[_vm._v(_vm._s(item.title))]),_c('div',{staticClass:\"item-price\"},[_vm._v(\"¥\"+_vm._s(item.price))])]),_c('div',{staticClass:\"item-quantity\"},[_c('span',{staticClass:\"quantity-label\"},[_vm._v(\"数量:\")]),_c('span',{staticClass:\"quantity-value\"},[_vm._v(_vm._s(item.quantity))])]),_c('div',{staticClass:\"item-total\"},[_c('span',{staticClass:\"total-label\"},[_vm._v(\"小计:\")]),_c('span',{staticClass:\"total-price\"},[_vm._v(\"¥\"+_vm._s((item.price * item.quantity).toFixed(2)))])])])}),0),_c('div',{staticClass:\"order-total\"},[_c('div',{staticClass:\"total-row\"},[_c('span',[_vm._v(\"商品总数:\")]),_c('span',[_vm._v(_vm._s(_vm.summary.totalQuantity)+\" 件\")])]),_c('div',{staticClass:\"total-row\"},[_c('span',[_vm._v(\"商品种类:\")]),_c('span',[_vm._v(_vm._s(_vm.cartItems.length)+\" 种\")])]),_c('div',{staticClass:\"total-row final-total\"},[_c('span',[_vm._v(\"订单总计:\")]),_c('span',{staticClass:\"final-amount\"},[_vm._v(\"¥\"+_vm._s(_vm.summary.totalPrice.toFixed(2)))])])])]),_c('div',{staticClass:\"checkout-form\"},[_c('h2',{staticClass:\"section-title\"},[_vm._v(\"收货信息\")]),_c('form',{staticClass:\"form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.handleSubmit.apply(null, arguments)}}},[_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"form-label\",attrs:{\"for\":\"name\"}},[_vm._v(\"收货人姓名 *\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form.name),expression:\"form.name\"}],staticClass:\"form-input\",attrs:{\"id\":\"name\",\"type\":\"text\",\"required\":\"\",\"placeholder\":\"请输入收货人姓名\",\"aria-describedby\":\"name-error\"},domProps:{\"value\":(_vm.form.name)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.form, \"name\", $event.target.value)}}}),(_vm.errors.name)?_c('div',{staticClass:\"error-message\",attrs:{\"id\":\"name-error\"}},[_vm._v(\" \"+_vm._s(_vm.errors.name)+\" \")]):_vm._e()]),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"form-label\",attrs:{\"for\":\"phone\"}},[_vm._v(\"联系电话 *\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form.phone),expression:\"form.phone\"}],staticClass:\"form-input\",attrs:{\"id\":\"phone\",\"type\":\"tel\",\"required\":\"\",\"placeholder\":\"请输入联系电话\",\"aria-describedby\":\"phone-error\"},domProps:{\"value\":(_vm.form.phone)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.form, \"phone\", $event.target.value)}}}),(_vm.errors.phone)?_c('div',{staticClass:\"error-message\",attrs:{\"id\":\"phone-error\"}},[_vm._v(\" \"+_vm._s(_vm.errors.phone)+\" \")]):_vm._e()])]),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"form-label\",attrs:{\"for\":\"address\"}},[_vm._v(\"收货地址 *\")]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form.address),expression:\"form.address\"}],staticClass:\"form-textarea\",attrs:{\"id\":\"address\",\"rows\":\"3\",\"required\":\"\",\"placeholder\":\"请输入详细收货地址\",\"aria-describedby\":\"address-error\"},domProps:{\"value\":(_vm.form.address)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.form, \"address\", $event.target.value)}}}),(_vm.errors.address)?_c('div',{staticClass:\"error-message\",attrs:{\"id\":\"address-error\"}},[_vm._v(\" \"+_vm._s(_vm.errors.address)+\" \")]):_vm._e()]),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"form-label\",attrs:{\"for\":\"note\"}},[_vm._v(\"备注\")]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.form.note),expression:\"form.note\"}],staticClass:\"form-textarea\",attrs:{\"id\":\"note\",\"rows\":\"2\",\"placeholder\":\"可选:订单备注信息\"},domProps:{\"value\":(_vm.form.note)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.form, \"note\", $event.target.value)}}})]),_c('div',{staticClass:\"form-actions\"},[_c('router-link',{staticClass:\"back-btn\",attrs:{\"to\":\"/cart\"}},[_vm._v(\" 返回购物车 \")]),_c('button',{staticClass:\"submit-btn\",attrs:{\"type\":\"submit\",\"disabled\":_vm.submitting,\"aria-label\":\"提交订单\"}},[(_vm.submitting)?_c('span',[_vm._v(\"提交中...\")]):_c('span',[_vm._v(\"提交订单\")])])],1)])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import request from '../utils/request'\n\n//商品列表\nexport function getList(data) {\n return request({\n url: `/lease/product/getList`,\n method: 'get',\n data\n })\n}\n\n//创建商品 新增商品\nexport function createProduct(data) {\n return request({\n url: `/lease/product/add`,\n method: 'post',\n data\n })\n}\n\n//获取商品列表\nexport function getProductList(data) {\n return request({\n url: `/lease/product/getList`,\n method: 'post',\n data\n })\n}\n\n// 更新商品\nexport function updateProduct(data) {\n return request({\n url: `/lease/product/update`,\n method: 'post',\n data\n })\n}\n\n// 删除商品\nexport function deleteProduct(id) {\n return request({\n url: `/lease/product/delete`,\n method: 'post',\n data: { id }\n })\n}\n\n\n\n// 查询单个商品详情\nexport function getMachineInfo(data) {\n return request({\n url: `/lease/product/getMachineInfo`,\n method: 'post', \n data\n })\n}\n\n\n// 已购商品\nexport function getOwnedList(data) {\n return request({\n url: `/lease/product/getOwnedList`,\n method: 'post', \n data\n })\n}\n\n\n\n// 已购商品详情\nexport function getOwnedById(data) {\n return request({\n url: `/lease/product/getOwnedById`,\n method: 'post', \n data\n })\n}\n\n// 查商品详情里面的商品信息\nexport function getMachineInfoById(data) {\n return request({\n url: `/lease/product/getMachineInfoById`,\n method: 'post', \n data\n })\n}\n\n\n// 查获取商城商品支持的支付方式\nexport function getPayTypes(data) {\n return request({\n url: `/lease/product/getPayTypes`,\n method: 'post', \n data\n })\n}\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"orders-page\"},[_c('h2',{staticClass:\"title\"},[_vm._v(\"已售出订单\")]),_c('el-tabs',{on:{\"tab-click\":_vm.handleTabClick},model:{value:(_vm.active),callback:function ($$v) {_vm.active=$$v},expression:\"active\"}},[_c('el-tab-pane',{attrs:{\"label\":\"订单进行中\",\"name\":\"7\"}},[_c('order-list',{attrs:{\"items\":_vm.orders[7],\"show-checkout\":false,\"empty-text\":\"暂无进行中的订单\"}})],1),_c('el-tab-pane',{attrs:{\"label\":\"订单已完成\",\"name\":\"8\"}},[_c('order-list',{attrs:{\"items\":_vm.orders[8],\"show-checkout\":false,\"empty-text\":\"暂无已完成的订单\"}})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n ","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./header.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./header.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./header.vue?vue&type=template&id=20c969ee&scoped=true\"\nimport script from \"./header.vue?vue&type=script&lang=js\"\nexport * from \"./header.vue?vue&type=script&lang=js\"\nimport style0 from \"./header.vue?vue&type=style&index=0&id=20c969ee&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"20c969ee\",\n null\n \n)\n\nexport default component.exports","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkpower_leasing\"] = self[\"webpackChunkpower_leasing\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(1406); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["_coinList","require","_products","exports","name","data","notOnlySpaces","rule","value","callback","trim","length","Error","containsEmoji","text","emojiPattern","test","noEmoji","submitting","form","type","coin","description","image","state","shopId","rules","required","message","trigger","validator","min","max","computed","coinOptions","coinList","label","created","$route","query","Number","methods","fetchAddProduct","params","res","createProduct","code","$message","msg","showClose","$router","push","handleSubmit","valid","$refs","productForm","validate","error","console","handleReset","resetFields","handleCancel","_order","_OrderList","_interopRequireDefault","components","OrderList","active","orders","loading","urlStatus","status","String","savedStatus","localStorage","getItem","initial","fetchOrders","fetchCancelOrder","cancelOrder","handleCancelOrder","orderId","handleTabClick","tab","setItem","e","warn","key","getOrdersByStatus","payload","list","Array","isArray","rows","$set","log","initNoEmojiGuard","window","__noEmojiGuardInitialized","isEditableTarget","el","Element","getAttribute","tag","tagName","toLowerCase","disallow","indexOf","setComposing","composing","__noEmojiComposing","isComposing","sanitizeAndRedispatch","target","before","selectionStart","selectionEnd","after","replace","removed","nextPos","Math","setSelectionRange","evt","Event","bubbles","dispatchEvent","document","addEventListener","component","_vm","this","_c","_self","staticClass","_v","attrs","isCartEmpty","staticStyle","ref","shops","expandedShopKeys","textAlign","on","handleGuardExpand","expandable","scopedSlots","_u","fn","shopScope","row","id","productMachineDtoList","sels","handleShopInnerSelectionChange","isRowSelectableByShop","scope","formatNum6","powerDissipation","truncated","full","_s","theoryPower","directives","rawName","expression","unit","computingPower","theoryIncome","toUpperText","theoryUsdtIncome","getSelectedCoinSymbolForShop","proxy","getMachineUnitPriceBySelection","formatAmount","getRowMaxLeaseDaysLocal","$event","handleLeaseTimeChange","handleLeaseTimeInput","model","leaseTime","$$v","maxLeaseDays","del","getSelectedCoinSymbolForShopHeader","displayShopTotalBySelection","val","handleShopPayChange","getSelectedPayIcon","_e","paySelectionMap","_l","getShopPayOptions","opt","idx","icon","selectedMachineCount","selectedTotal","handleRemoveSelectedMachines","clearOffLoading","handleClearOffShelf","handleCheckoutSelected","confirmDialog","visible","count","confirmPay","grp","shopName","payLabel","coinSymbol","enough","deductibleAmount","fee","items","unitPrice","subtotal","Object","keys","totalsByCoin","amt","noticeDialog","countdown","handleNoticeAcknowledge","checked","googleCodeDialog","handleGoogleCodeCancel","isGoogleCodeValid","handleGoogleCodeSubmit","handleGoogleCodeInput","nativeOn","_k","keyCode","apply","arguments","settlementSuccessfulVisible","handleCloseSuccessDialog","_machine","product","ranges","machineList","productId","confirmVisible","stateSnapshot","fieldSnapshot","updateLoading","unitOptions","fetchDetail","fetchMachineList","handlePayTypeChange","index","sel","_selectedPayIndex","priceList","_priceEditing","price","isRowDisabled","saleState","handleOpenConfirm","warning","getMachineInfoById","productMachineRangeList","getMachineListForUpdate","map","r","first","refreshStateSnapshot","refreshFieldSnapshot","snapshot","i","priceMap","forEach","p","payTypeId","isCellChanged","snap","pt","pid","cur","ori","current","original","restoreStateSnapshot","currentRow","prevState","updateMachineList","updateMachine","success","deleteMachine","handleTheoryPowerInput","rowItem","v","firstDot","slice","endsWithDot","endsWith","parts","split","intPart","decPart","handleNumericCell","d","handlePriceBlur","raw","pattern","handleMaxLeaseDaysInput","handleMaxLeaseDaysBlur","n","isInteger","handleTheoryPowerBlur","handlePowerDissipationBlur","handleTypeCell","handleStateChange","handleDeleteMachine","$confirm","confirmButtonText","cancelButtonText","handleSubmitMachines","powerPattern","pricePattern","isOnlySpaces","rowLabel","miner","theoryRaw","priceRaw","typeRaw","dissRaw","daysRaw","m","handleBack","back","_m","handleClear","handleSearch","searchKeyword","tableData","payTypes","formatPayType","handleView","handleEdit","handleDelete","handleAddMachine","total","pagination","pageNum","pageSize","handleSizeChange","handleCurrentChange","editDialog","saving","handleSaveEdit","_request","addSingleOrBatchMachine","request","url","method","getUserMachineList","getUserMinersList","activeIndex","userEmail","activeRole","buyerLinks","to","sellerLinks","userInitial","email","toUpperCase","displayedLinks","mounted","getVal","JSON","parse","savedRole","setActiveRoleByRoute","handleClickRole","role","stringify","firstPath","path","qFrom","from","sessionStorage","buyerPrefixes","sellerPrefixes","shouldBuyer","some","shouldSeller","isActiveLink","pathLike","prefixes","watch","immediate","handler","_vue","_App","_router","_store","_elementUi","_noEmojiGuard","Vue","config","productionTip","use","ElementUI","router","store","render","h","App","$mount","_cartManager","_index","mixins","Index","item","chain","handleAddToCart","addToCart","title","quantity","_shops","hasEmoji","str","emojiRegex","fetchAddShop","getAddShop","handleDescriptionInput","substring","handleCreate","hasShop","detail","load","paramsId","getOwnedById","formatDateTime","includes","class","preventDefault","getOrdersByStatusForSeller","handleTab","rechargeRows","loadRecharge","recharge","getRowKey","statusClass","toggleExpand","amount","fromSymbol","formatChain","fromChain","getRechargeStatusType","getRechargeStatusText","formatFullTime","createTime","isExpanded","fromAddress","stopPropagation","handleCopy","txHash","withdrawRows","loadWithdraw","withdraw","toSymbol","toChain","getWithdrawStatusType","getWithdrawStatusText","toAddress","consumeRows","loadConsume","consume","realAmount","getPayStatusType","getPayStatusText","time","currentPage","pageSizes","openCreateWallet","walletList","w","walletBalance","balance","displaySymbol","slot","blockedBalance","handleWithdraw","recentTransactions","transaction","statusTagType","statusText","amountText","rechargeDialogVisible","resetRechargeForm","WalletData","toString","copyAddress","withdrawDialogVisible","resetWithdrawForm","withdrawForm","withdrawRules","displayWithdrawSymbol","handleAmountInput","totalBalance","availableWithdrawBalance","actualAmount","googleCode","withdrawLoading","confirmWithdraw","createDialogVisible","options","createValue","createLoading","confirmCreateWallet","productListLoading","handleCurrencyChange","handleCurrencyClear","screenCurrency","currencyList","imgUrl","handleAlgorithmClear","handleAlgorithmSearch","searchAlgorithm","products","handleProductClick","algorithm","saleNumber","order","orderNumber","getOrderStatusText","totalPrice","_wallet","_amount","expandedKeys","Set","getStatusByTab","loadList","truncateAmountByCoin","pane","clear","tabName","indexPart","stable","__key","updateTime","has","add","typeKey","getTypeKeyByStatus","transactionRecord","mapped","loadByStatus","getTabByStatus","s","tron","trx","eth","ethereum","bsc","polygon","matic","Date","toLocaleString","formatTime","formatTrunc","decimals","num","isFinite","factor","pow","trunc","padded","padEnd","navigator","clipboard","writeText","ta","createElement","style","position","left","body","appendChild","focus","select","execCommand","removeChild","activeTab","pendingRecharges","refreshData","showDetail","getChainName","getStatusText","formatAddress","address","successRecharges","failedRecharges","detailDialogVisible","closeDetail","selectedItem","getStatusType","loaded","defaultCover","shop","visibleEdit","editForm","shopConfigs","visibleConfigEdit","configForm","chainLabel","chainValue","payAddress","payCoins","payCoin","productOptions","editCoinOptionsApi","chainOptions","shopLoading","shopStateText","shopStateTagType","canCreateShop","editCoinOptions","selectedCoinLabels","Map","o","get","fetchMyShop","resetShopState","getMyShop","fetchShopConfigs","getShopConfig","updateShopConfig","deleteShopConfig","handleEditConfig","getChainAndCoin","children","c","preSelected","filter","hasBind","join","payCoinStr","handleDeleteConfig","submitConfigEdit","addr","removeSelectedCoin","labelUpper","handleOpenEdit","queryShop","submitEdit","updateShop","deleteShop","setTimeout","handleToggleShop","isClosed","confirmMsg","closeShop","handleGoNew","handleAddProduct","handleWalletBind","props","default","emptyText","showCheckout","Boolean","onCancel","Function","payLoading","orderDialog","qrContent","dialogVisible","paymentDialog","payAmount","noPayAmount","img","safeItems","buildQrSrc","startsWith","handleCheckout","handleGoDetail","then","catch","shouldShowActions","outer","orderItemDtoList","productName","cost","costMap","payTypeDefs","miners","minersLoading","selectedMiner","machineOptions","machinesLoading","selectedMachines","selectedMachineRows","lastCostBaseline","lastCostMapBaseline","lastTypeBaseline","lastMaxLeaseDaysBaseline","lastPowerDissipationBaseline","lastTheoryPowerBaseline","lastUnitBaseline","productMachineURDVos","initPayTypesFromRoute","fetchMiners","validateCost","arr","decodeURIComponent","defs","it","set","values","initCostMap","handleNumeric","syncMaxLeaseDaysToRows","syncCostToRows","handleCostMapInput","oldBaseline","NaN","shouldFollow","nextPriceMap","handleTypeInput","newCost","priceNum","updateMachineType","updateSelectedMachineRows","nextRows","minerId","existed","find","existedPriceMap","defaultPriceMap","user","realPower","undefined","syncPowerDissipationToRows","newVal","rowNum","syncTheoryPowerToRows","syncUnitToRows","newUnit","rowUnit","handleRowPowerDissipationInput","handleRowPowerDissipationBlur","handleRowTheoryPowerInput","handleRowTheoryPowerBlur","handleRowUnitChange","handleRowMaxLeaseDaysInput","handleRowMaxLeaseDaysBlur","handleRowPriceInput","handleRowPriceMapInput","handleRowPriceMapBlur","handleRowPriceBlur","handleRowTypeInput","handleRowTypeBlur","handleToggleState","currentState","coinKey","additionalProperties1","handleMinerChange","userMinerVo","handleSave","ok","machineForm","invalidTypeRowIndex","findIndex","j","def","rawDays","doSubmit","duration","deep","oldVal","k","productDetailLoading","paymentMethodList","payChain","formatPayTooltip","getPayImageUrl","handlePayIconKeyDown","handlePayFilterChange","selectedPayKey","getPriceCoinSymbol","filters","minPrice","maxPrice","minPower","maxPower","powerUnitOptions","u","minPowerDissipation","maxPowerDissipation","handleSearchFilters","handleResetFilters","handleGetRowClass","handleManualSelectFlat","_selected","activeSortField","handleToggleSort","sortStates","powerSort","powerDissipationSort","getFirstCoinSymbol","getRowMaxLeaseDays","handleLeaseDaysChange","priceSort","getRowCoin","handleOpenAddToCartDialog","confirmAddDialog","handleConfirmAddSelectedToCart","productRoutes","Promise","resolve","_interopRequireWildcard2","meta","allAuthority","cartRoutes","checkoutRoutes","accountRoutes","redirect","childrenRoutes","mainRoutes","addOrders","getOrdersByIds","getChainAndListForSeller","getCoinPrice","page","range","keyword","expandedRowKeys","fetchList","withKeys","__rowKey","handleRowClick","isOpen","handleExpandChange","expandedRows","getRowClassName","copy","area","handleRangeChange","sellerReceiptList","_productService","_shoppingCart","selectedMap","payFilterDefaultApplied","cartMachineIdSet","cartCompositeKeySet","cartLoaded","machinesLoaded","productListData","fetchGetMachineInfo","fetchPayTypes","fetchGetGoodsList","truncateTo6","ensureDefaultPayFilterSelection","payList","hit","field","buildQueryParams","q","addNum","obj","getPayTypes","getMachineInfo","payConfigList","normalized","$nextTick","loadProduct","getProductById","fetchAddCart","addCart","getGoodsList","rawRows","groups","shoppingCartInfoDtoList","flatMap","matched","g","ids","compositeKeys","totalCount","reduce","sum","CustomEvent","autoSelectAndDisable","handleSeriesRowClick","lockedIds","opened","handleGetSeriesRowClassName","handleInnerSelectionChange","parentRow","selections","openedSet","isSelectable","isSelectedByParent","handleManualSelect","splice","handleGetInnerRowClass","handleDecreaseVariantQuantity","groupIndex","variantIndex","variants","handleIncreaseVariantQuantity","handleVariantQuantityInput","handleAddVariantToCart","variant","onlyKey","handleAddSelectedToCart","allSelected","flat","pickedAll","productMachines","picked","clearAllSelections","productMachineId","handleDecreaseQuantity","rowIndex","handleIncreaseQuantity","handleQuantityInput","handleQuantityBlur","rowData","date","userId","orderItemId","purchasedComputingPower","startTime","endTime","currentComputingPower","currentIncome","currentUsdtIncome","estimatedEndIncome","estimatedEndUsdtIncome","currentChain","cascaderProps","multiple","checkStrictly","emitPath","preCheck","prices","rowPrices","getChainAndList","handleRemoveSelectedCoin","coinUpper","next","handleChange","handleItemClick","node","isLeaf","last","lastChain","expanded","expand","nodes","validateAddressByChain","toUpperOptions","src","FetchAddWalletShopConfig","addWalletShopConfig","targetChain","filtered","preCheckBeforeBind","getProductListForShopWalletConfig","coins","submitBindWithPrice","handleConfirmBindAfterPreview","collectMachineGroups","pushId","productMachineIdList","machines","machineIds","machineGroups","priceStr","symbol","productMachineForWalletConfigVoList","updateProductListForShopWalletConfig","resetPreCheckPrices","handlePreCheckClose","coinsForBind","canSubmitPreCheck","selectedCoinsDisplay","selectedCoins","getMaxDecimalsByCoin","truncateAmountRaw","maxDecimals","isNegative","abs","keep","LoadingManager","constructor","loadingStates","setupListeners","resetAllLoadingStates","setLoading","componentId","stateKey","timestamp","now","getLoading","componentsToUpdate","resetComponentLoadingStates","loadingManager","_vuex","Vuex","Store","getters","mutations","actions","modules","addShopConfig","_axios","_errorCode","_loadingManager","_errorNotificationManager","pendingRequestMap","getRequestKey","service","axios","create","baseURL","process","timeout","RETRY_WINDOW","pendingRequests","lastNetworkStatusTime","online","offline","networkRecoveryInProgress","vm","$i18n","t","toLocaleTimeString","pendingPromises","async","response","delete","allSettled","commonLoadingProps","prop","errorNotificationManager","canShowError","defaults","retry","retryDelay","shouldRetry","superReportError","interceptors","token","headers","propName","part","encodeURIComponent","subPart","requestKey","cancel","cancelToken","CancelToken","reject","errorCode","removeItem","MessageBox","confirm","distinguishCancelAndClose","closeOnClickModal","locale","Message","dangerouslyUseHTMLString","Notification","onLine","__retryCount","minerChartLoading","reportBlockLoading","retryCount","substr","rechargeRecords","totalPage","statusFilter","loadRechargeRecords","balanceRechargeList","records","chainNames","statusTypeMap","timeStr","diff","floor","toLocaleDateString","fallbackCopyAddress","textArea","err","viewOnExplorer","explorers","open","statusMap","deleteBatchGoods","deleteBatchGoodsForIsDelete","STORAGE_KEY","readCart","parsed","writeCart","cart","updateQuantity","removeFromCart","clearCart","computeSummary","totalQuantity","mainNavigation","breadcrumbConfig","getBreadcrumb","checkRoutePermission","route","userPermissions","requiredPermissions","permission","getPageTitle","getPageDescription","initOptions","fetchTableData","fetchMachineInfo","coinParam","algorithmParam","lower","hitCoin","$alert","center","closeOnPressEscape","location","href","getProductList","notEmpty","updateProduct","deleteProduct","size","payTypesParam","pts","getWalletInfo","withdrawBalance","balanceWithdrawList","bindWallet","getRecentlyTransaction","$index","input","blur","_wallet2","qrCodeGenerated","validateWithdrawAmount","validateAddress","validateGoogleCode","tokenOptions","availableTokens","amountInt","toScaledInt","feeInt","result","formatDec6FromInt","available","parseFloat","blocked","toFixed","sym","fetchWalletInfo","updateFeeByChain","fetchRecentlyTransaction","walletInfo","generateQRCode","rawAmt","signAmt","typeLabel","statusTextMap","statusTagTypeMap","formatDec6","formatApiTime","match","amountStr","re","RegExp","scale","round","decPartRaw","scaledIntToString","intVal","sign","padStart","fetchBalanceRechargeList","requestParams","fetchBalanceWithdrawList","handleRecharge","wallet","addressToCopy","qrcode","qrContainer","qrCodeRef","innerHTML","alt","width","height","borderRadius","onerror","onChainChange","hasUSDT","walletCharge","charge","feeMap","clearValidate","totalRequired","availableBalance","balanceInt","totalText","isValid","addTransactionRecord","getFullYear","getMonth","getDate","getHours","getMinutes","unshift","navigation","nav","cartItemCount","decryptData","encryptedText","secretKey","encrypted","atob","decrypted","fromCharCode","charCodeAt","getDecryptedParams","urlParams","URLSearchParams","search","encryptedData","language","username","source","version","sensitiveData","decryptedJson","leasEmail","performAutoLogin","setLanguage","cartItems","phone","note","errors","summary","loadCart","validateForm","customer","toISOString","ErrorNotificationManager","recentErrors","throttleTime","errorTypes","getErrorType","entries","errorType","lastTime","cleanup","comHeard","appMain","maxLeaseDay","max_lease_days","payCoinImage","debug","listProducts","getOwnedList","withdrawalRecords","pendingWithdrawals","successWithdrawals","failedWithdrawals","loadWithdrawalRecords","totalMachineNumber","totalMachines","selectedGroups","selectedMachinesMap","expandedGroupKeys","creatingOrder","successDialog","noticeTimer","pendingCheckoutShop","pendingCheckoutAll","payDialog","selectedChain","selectedCoin","selectedPrice","isAllSelected","hasShops","hasGroups","accumulate","canCheckout","payCoinSymbol","startNoticeCountdown","reapplySelectionsForPendingShop","clearInterval","beforeDestroy","toCents","parseInt","decRaw","decTwo","cents","centsToText","isRowSelectable","isOnShelf","fetchChainAndListForSeller","labelSrc","getAllGroups","cfg","hasMachinePriceForSelection","machine","ensureDefaultPaySelection","applyInnerSelectionFromSet","isShopLeaseChanged","totalCents","days","totalPriceList","orig","_origLeaseTime","computeShopTotal","priceCents","computeShopTotalDisplay","backendVal","hasBackend","modified","buildDeletePayload","machineId","fetchAddOrders","orderInfoVoList","fetchDeleteBatchGoods","apiDeleteBatchGoods","handleOuterExpandChange","handleShopExpandChange","withShopKeys","sIdx","sp","handleGroupSelectionChange","handleGroupSelectionChangeForShop","applyInnerSelection","shouldSelectAll","inner","clearSelection","toggleRowSelection","selIds","toggleSelectAll","table","outerTable","calcGroupTotal","group","countMachines","handleCheckoutShop","selectedSet","onShelfMachines","executeCheckout","payloadAll","dataStr","showGoogleCodeDialog","setInterval","showConfirmDialogAll","showConfirmDialog","openPaySelectDialog","selectedIds","baseUnit","leaseDays","cfgList","cfgHit","groupSubtotal","totals","centsAdd","acc","tCents","totalsCentsByCoin","prev","totalsObj","googleCodeInput","numValue","isNaN","handleProductExpandChange","selectedRows","selection","isSelected","isProductSelected","powerList","show","fetchGetList","formatPriceRange","lo","hi","_truncate2","two","req","script","_vueRouter","_routes","VueRouter","mode","base","routes","beforeEach","onError","domProps","one","getList","_navigation","cartServerCount","breadcrumbs","handleStorageChange","loadServerCartCount","handleCartUpdated","removeEventListener","primary","event","handleLogout","getBreadcrumbPath","paths","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","module","__webpack_modules__","call","amdO","deferred","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","every","definition","defineProperty","enumerable","globalThis","prototype","hasOwnProperty","Symbol","toStringTag","nmd","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file