From d5c01162f6c5820dcea550cc20b3eb73891045da Mon Sep 17 00:00:00 2001 From: huangjp Date: Fri, 17 Oct 2025 14:14:48 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8B=B1=E6=96=87=E7=89=88=E6=9C=AC=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=EF=BC=8C=E4=BA=8C=E5=B9=B6=E4=B8=80(=E9=85=8D?= =?UTF-8?q?=E7=BD=AE)=E4=B8=8D=E5=BC=B9=E7=AA=97BUG=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/new-screen/zhongzien.png | Bin 0 -> 7291 bytes src/filters/index.js | 12 +-- src/lang/dynamicPolicy/en.js | 8 +- src/lang/dynamicPolicy/zh.js | 8 +- src/lang/index.js | 4 +- src/lang/revenue/en.js | 16 +-- src/lang/revenue/zh.js | 16 +-- src/lang/screen/en.js | 2 +- src/lang/screen/zh.js | 2 +- src/lang/strategic/en.js | 2 +- src/lang/strategic/zh.js | 2 +- src/lang/zh.js | 8 +- src/layout/components/Navbar.vue | 2 +- src/utils/request.js | 2 +- .../components/topology/index.vue | 4 +- .../components/top-center/ninth.vue | 2 +- .../components/top-center/pv1storage261.vue | 85 ++++++++++------ .../components/top-center/pv2storage261.vue | 94 ++++++++++++++++-- .../top-center/second-disposition.vue | 2 +- .../components/top-center/seventh.vue | 2 +- .../new-screen-zz/components/map-center.vue | 38 +++---- src/views/new-screen-zz/index.vue | 14 ++- .../remote-control/issue-order/index.vue | 2 +- .../strategy/components/policyOverview.vue | 4 +- .../surveillance/battery-analysis/index.vue | 4 +- .../charge-discharge-data/index.vue | 4 +- .../surveillance/earnings-glance/index.vue | 24 +++-- src/views/system/department/select.js | 3 +- vue.config.js | 2 +- 29 files changed, 240 insertions(+), 128 deletions(-) create mode 100644 src/assets/new-screen/zhongzien.png diff --git a/src/assets/new-screen/zhongzien.png b/src/assets/new-screen/zhongzien.png new file mode 100644 index 0000000000000000000000000000000000000000..f4a3a3bcb6250c591aadbb58f61e5f4c6424c0af GIT binary patch literal 7291 zcmV->9E9VEP) zd$b)@dBA^>@Q|0Nz=}w(0b`6QrV%4j8Zd@uL1{q5@Q%DMj|kySARz`KZ^J{b0s;a` zj6f+OV49`@B8wt~l+qYeR+_TXG{j)bb0G-nAKw}7%sz9@nc4I0nLX$3-&$wgJLjIW zXWw&X_P4+Hp!Mt5Q-H03&5I1sC9G5&>qE$Ax>e)%ZekVi=N5n42-r^H9BYBMQl1|S zY_BkWpfj5y*YKvmCdS`hLcX7OfYmMDKQ!n0-Ui-iJbYq%FyPaTpTp>1V7JzuoM&uEv!K}s_>*+U zJ_Y!J@;O!k_XD>BOO(fM$IHldSCnr9cPNaLheLs%D~+{*tvP0Mf`9?|A@El;3z#8@ zruPK!Kfq6s8)%>ln7c_gk*oynRXopFV4v9WTHsE_@dG-TTE-U~oMU@nGVmPmFTf-R z=P=m`9RUOIjM6xH_@dG{i-GrTh0HEWlc+0G5uZsf@O;nDtr95|h zo4*yIH^aFD)$*KiJjU_)c0n|ne@1reuGm>=oOQqpN@L|g>w8!X_Ks!O7lW@vn#(NU z)y8v!fir;L1NQ)XR5La2nGZZ^JU0cnrSWqCFi-J(6G&dCPXP}qjvpvaT$A|_FuJ7k zjzi2rGtmh)G11ZlTAAQoqh+Of7VL%0my{+^7v=-sAgQ?wL7bHD0^bLQS2MNRkfupQ z+Qv1&i7j4JgrLp%%W9IrGFrR;JY0kbo5PjI)!KwtVJaJjtZf=R1NK6uiVLDD&I9&F zoQDyU5tVydB{QlYOGtixAZD^*vEyFg0pMxH^Bzkw4D(UoamDci_Lyd%s;nbp5ufQ4 z#W9CtRT?J`n%{%9xolftN5zTw$~@p8;L6x@M*_bAt^-C?F{zr;PK${cjo8V9 zHZw3Vo&H)TCR?sSG@GJmI{m8%zt;L5mH_XAosby_{+L<7amdaZU;`xX{Vrg)isn>T zRsc5}&mBs-Hr$JZYc5kf|GB^xvEw;Zmpc*Y$K0j+u&&IcxS-McKh}{9Dk=+gQ=g5H z`Lfa^d}V6mv8r)A0g30=NUR!&+>-K~sa-^jLjos)Hq-r>IV-+YW0(n?UEuw7clv8t zXg=6P*a(?!_Q#xwXfY9I1Ak94=OT~~b3xw+5hktZMH2E>D$d~~u!x#IYNe5@h4 zh>pRpN*7lFM_ayEYkjOj+a8Xd)Bl6{+X$Jm!VJsi7+`kncp7rC1?-tkf2emvD=j8s zB2q!&cEx$@h$P3x3EE6`EH#dO+_?5)=X(xLf5BSF^x%(LtI09+XM}Ht)a{v3-E_JJ zb0Hstm>)aQoATbG1e2LR_~!IaV^=zFh)hDJzp#W@eZss#rW-T;kDy<`d>9E?E?O8a z0CQkn zw%`s zp%&*LWnvEz#oxrf&XVY z=0?CH3UfP()*TD8uq@^Md9|4M`~DJXZ1uGcug%K-h;K0}U$Yd+jj)|#C$x6y>qs4~DAKg7YA!++hdeAs zawZ~mbP~FuvaNUuDYE%QY$<$Xz zA#*fRpfWErkP9=S7dIi<&mfZg^GFD85z|v1G?HYs1q>7yGXjVCJ#`Z@jN zI$@yNQ7seEX*nH*nrr3`OaVTsIG#yaiFs47FM$$acBrf?*8*QbilDk+-!^~Ks!ZQC znf?)V5;8r=VzaBod;5S_8o!SLuF#rPgU1ooeO9LzIzsCr(Z0a7w1o+X^R-UejME#p z!6=HE$vTZ+M;=F<^cwz2lbzZ;A2R(@oc>TRA=3*SV)4E?G@HpZxdX|$akYEOf{&{D ze(1KMJ_5;W(yUHv7S7Z}vl?$JKc2?5ypHCI$aUvEr1qe;pxGK}a%Q5L>0iZn;dK3| zi;%elIN$QU@!ju<;fF9INqc5f6jF=nYp&nYt6fxOl2l-qJO=7CgnLFEeTl}iDOfr??UDj;Clt$Z)!1` zZ3_B;1&ZU@vK=~E)0(zm?S(u3J-$w|C3aCpq8|j}Ix+8HvQ@LrLbo{mTd@e;sI#=q zLvZ>FwKJC;f;6wP<$994bIpZsI{lTKtHw8{|1fkH?I(c;jpuyVW;AcyG~ur~-){5A zq;V~J7Kbg3<52{sKS<@q$VVZw4YE*;FEGaaB%Ror3tu1L zQ!O5ii`=Y?Ys*KFybUdu(z;%h&)SU38&`9lOObkc0|BjS-kTc7S{sU$O5^0kdBU)d zLgsXen_J=w&|c`>^tU1c%qM(u`j?@_L@Y-4yVwt@E}(%c8~vt;Z&8bGcKVyF!%Y;Z zb4|b@r4;q_O~_26ctzyph)FBrn1bWQ@vSWUcIdRj*1Et?P#OnhXVvRQW`7XSgmMHr#QZ8F`#D;*3e|iG?kgJ({zOQ0^cd{epgQa?XfGV)Q$s?WW_bg zqvY^H@v^6gBH54z^ zax|^$I@xeF@M^}_-j7`5S~vV;q^aF2onF`iSBZHxC6zic9{4qqOJdtBuM>T^ZG@Hw z?KT@)8;ZK~+jf7fTFC5#Zpr-zV!wY3z1mr2^d9L%R95GL*mD{cjy0VARcSHt*K3xW z=>;yee6K4Ty(?47D0Hr)c1(3VepcRB9z)ZoQD@p}GF3YMH%4w|t+u)Vzl{B^X+rUZ zxJ|hSKb-#iqie>wjr=v7Zbi55+6llQi}z{T=;PnZmgq&kmCb%tPe7S?8*CpopFZHN zkeP}&i?vuy^2Xd#acp0R|9`$@`d6*R6n$SBJ=pnWTt(}oRsO9Dz6Hw^CGzWNZYb)^ z^K{6ys!GUQMDb8%6Eg;WobvcpvzDZ3%Lk|bZs=;F4`V+c(_d8-8{z57>A$Wv_n08z}(?$L~|7>8aN!i z93+rJm=6^kqw3^LS5E)59wv3cCm}PJ;v3v3+*>nzxz2R7Jd`P9_P}ks+jw!g&pA9# zRm8&tha%bjMJZw`^GS<|SVQM30eKih_RwKhPXC=0$1NKlYokp=YV1XiPmnLfItnle zPJh80bJ=#tqNLf5H_lSv?bxwq&W10~&=b=^s!>Y6ySA99^Z1(lF z!t-mf#~Sjbax5b_{UbU${h>S|(~FqOTwyLOBORWr3RaV>(pq(Se;>7&h^6SZ+#OH0 z&5>pc-gshUop;Pt)Z@y_Fknc=*RBTsNO1Z`WLiJUNXEPbi6(Q!Oqxw3-L}hk-Z-w( z=|2cKPT~9!D}Wy=jt3&N4p$tnmt-67G+b5V{jAcsRp6692BdV$LB?}=%+66|jNtSa zGHoJU3z_qgE|RXep5~&O!{|OCV=g=znwqWCzZdZdY2l(K+#)0#dVi(yCL)`ecGVGF zmG`f+CgYQkIS}}Vf@4H}-{ABYGMPhNn#)cEzUOfKsFv4z#`E1KU?A!A-;rva{yv+^ zT#noB{~nFrb!RTjT5SW$W*P8S)su*!aot8~5_J~*nq=BUxDql4lC4y`EenxFB(0Q) zMl8H<_~P`}E`)hG@TTH;aUMdqf5>UHw%xld?{D^$uM0kDF`J-M-ewWO=^ya|86yW> zn9Fv?ZKyJcfLYMuZ`~$jULskFy~<4gx@a-+@ilX%dPz6`x^nshY@{@H+4$u2pP(?t zGNkH;W`&C#6vxWSPtb|-&AfhS3z?51H=@g;c)dtcRV%h~ckUsqGvOvI$^1B1~?pNJ~FyV_8c!3f;725*U`ka1D;GR}0QnN=q?R6L)l zMO00mnErO;6`*6$@7(8VhrTs%1(Mvk8n_8K3q3*5OH#9F9az-rP8L>Gap;2KvoD0|kwou7!=Cnoj>J%!yj2zRXU4(1|WP8n{MboK{?p z*uu-Er-E~Kq6(+~NOTh$T{Dw@QyECt)xDL^5f{2Ho&K7vV&DmwL($oo-Pic(s&r6U zRATBYDrCmvc9(lM?jw*|@u`Z=+YXJ3B(KxIPFl*kn1I$cQX~3 z*KXXBQkM-y8kIQx!CuJBK)2Mp$w|NimhXK-aUPmYxr$PDrvC=G(*m@a3fvYuo`lRc`f^tx8j;!bVB{-0m~b|yNn_%11(cu?jAulLdNwD@f`XicWltSF^@qK zOnsp2^8TmdXYhl`Okh^*cpT+vU|O2|3Z#U*$y@aIlrKWjHrsV#GO|W#5Z7WfqX-9# z(;xB+nbUB)L%f)5xiIZm)A=Qt83CNGI9?ITcKX-BR5lm5Dt5dLGVfignT|E>7M-`- z{4FbKHU7Gh!-4CR#(I*ZH6=Lxh1{mTJVNGBB+lLyGm(-VMOohYCApY^A0fONPXDYC zMw67z=aR+9PV@EHbEhNMY29dd<7#Li1Hn{wAi5hPGpaQ>{RL;5%r3ay+0H^Q7iKv+ zCWbh@NFYE}Xk8>(7n?e0F?}RUm$kAI<qWaEeNNaa3A56rx^w%ki2u^>&%GB3M$V|hn z38D|(#!?ag&0^^pgm6~KRpWK6e zd7nDuI<;bJU@zbR+$Tm~kFzrPy5B5@lzb4Vm7?!l~4TTW~96 zA|^H-E08L;zd=;_HRwdSm6_>(KkyBu^O+ojTw6Anj{Z20Q%u0WgE)_?B8%{U5;5i2 zWU-G0E(C7GuRbqvwnYR=5Ar{L9&xsp6=<`7)_%R<^cR+5nX@%${rdIhbC2M*eR4aB zEXsX|dGEd0bN2xU7n)Hq)*;39vfkW3LH>_dV$WTN&La3J+S~T`N2e(0-83h}jv-rQ zTN*QQ+v;Hi@H>a&w_^qH>5Q*Eh2kAPi`-xDAQcGG=tCUlaZW?buN$Sj-t1mmb?>Hc z0{6D~+wtgax;LbJpUe~Jgm&MFY!q{2YBGCJoq&O27u&^1luo>BVIS2Bndtw?YVL}{ zaN|j-8k)>1+6$Nqk;pj>t^z(mQqb7?dhP|jUwB6CSqA)!Y7%bq>})kUe7ai9uR%V? zhhxw6;%6mulQU^8U?4dCBdkq*rsH4JepdzNVm2SRqk?%9!7KqXOkvD+PXCS36EGmj zgK+^f6gbv$tUlm>i%uxxd8#1qjq7u$c05eFhk6K@86-EQX=sHnSK;*6^5;SUQ=chh zw4`=b45!%-5Z``Y~Yk%PyvnF00 zHmfs{Jey9`+3D{^Yj9J@XilmsdP!DJej2!-qPgV7yjiurk9K86w1rIEZ?G9~uEiMb z9R04SVl!fMhc!^985BVD0pWq>$Mh|BE7KVHi@!D9+`Szi8QDnzg>9 zH15+aof8Ti@ zFg0b3hG8zan0%3n!Rap)GWErUjL*9d8+u88$Wdu{pE1LHHJtvf7PEuV{mySB>F__1 z{PQ=%x69^EBp;;=irlzw(p-hQO5(fp9{g%s9&sl5TZsgxzfedEiwhYo(~K|dLGw<1 z4&qSu71QajVGnL~f%xX|KM5(AS~X>DM2apv^YLTTw1#9U7T-3j3xRLZIf^We;Pe;N z%w@h^92%TKa|Fq)=V*OLVVILKmMx>hbu{w$}_Z*02Ys zIsJXoV*0S(X}aVU>}>d1abcrhh*VZ6JG?nAFt?*Rr~fSAFB(5zR~Roi{e{BwkA#et zX~uVE06(JHUvMd~J5s}{D&jZm&bV><_aISUT0BFt?$gdl`{pd1iXV>tR=Ct=TrE6r zA||54C?{NhEy*%SWv4-`0jjWjX!l0Y@R4%X#Pr zYG^wBtI%Y$zK3NLbozq`nXTwvr++JUMat@@mB4-g*cbRR5{cF-kx>)Vtfh64#22%{ z!1+q!f-Erc#&bPL1%XcZ=IC#S3vFg4dQSgN+=TRIISe;-;7noZYO}fqxi3#gDtzyY zyA1#Yr+hX?9Qap6IF?!N2jC5* zajr!ANtMkKbb83#qcFw?P0L2%e}8uu{FHP7(~cK^Ks<+ z_@w2S?;}FMG?na%W#b`(M@aUa|1hl^TE+QW{Px47F$DQ8wnfY+w%;?zXVyn^Q@5%Z zj%=EC1U^E(>-Zj;{XWBx&uY^S?|rNBcok{r_XZ+dmQzlSQWhp6CP!Odqr99elaa{x zkk#v_gCgh;YLAV3f@0ef0$F|!Dc{y-qmAcQanY#4=PW1BpL z2p`Qtg@Hhz#sp0!U_&b{rjHQT+BoGMHhahAES=f*MLYT7&8U2AkAR|G@ z1hVke#?RRVM}Hs?$U$)Y2RhLM{8!`m9q^|Idms>~0YS(Fvd{ypr8!3?5C{a?^8e2X VmGe58^T+@I002ovPDHLkV1hfLB2fSU literal 0 HcmV?d00001 diff --git a/src/filters/index.js b/src/filters/index.js index 10bf7ee..e5578a2 100644 --- a/src/filters/index.js +++ b/src/filters/index.js @@ -202,20 +202,20 @@ export function kgFormat(num, digits) { export function moneyUnitFormat(num) { if (sessionStorage.getItem('language') === 'en') { if (!num) { - return 'RMB' + return 'EUR' } if (Number(num) >= 1E4) { - return 'CNY10K' + return 'EUR10K' } - return 'RMB' + return 'EUR' } else { if (!num) { - return '元' + return 'EUR' } if (Number(num) >= 1E4) { - return '万元' + return 'EUR10K' } - return '元' + return 'EUR' } } /** diff --git a/src/lang/dynamicPolicy/en.js b/src/lang/dynamicPolicy/en.js index b7dac24..5095773 100644 --- a/src/lang/dynamicPolicy/en.js +++ b/src/lang/dynamicPolicy/en.js @@ -32,13 +32,13 @@ export default { stationRunPlan: 'The actual operation plan curve of the power station', runEarning: 'Actual operating earnings', recommend: 'Referral strategy earnings', - valley: '谷(0.1kWh/元)', - flat: '平(0.3kWh/元)', - peak: '峰(0.6kWh/元)', + valley: '谷(0.1kWh/EUR)', + flat: '平(0.3kWh/EUR)', + peak: '峰(0.6kWh/EUR)', earningForecast: 'Revenue forecasts', defaultEarning: 'Default policy earnings', estimateEarning: 'Estimated earnings increase', - rmb: 'RMB', + rmb: 'EUR', stts: 'Earnings budgeting', sjsyje: 'Amount of actual earnings', mrjhqx: 'Default plan curve earnings', diff --git a/src/lang/dynamicPolicy/zh.js b/src/lang/dynamicPolicy/zh.js index 361a537..01c71eb 100644 --- a/src/lang/dynamicPolicy/zh.js +++ b/src/lang/dynamicPolicy/zh.js @@ -32,13 +32,13 @@ export default { stationRunPlan: '电站实际运行计划曲线', runEarning: '实际运行收益', recommend: '推荐策略收益', - valley: '谷(0.1kWh/元)', - flat: '平(0.3kWh/元)', - peak: '峰(0.6kWh/元)', + valley: '谷(0.1kWh/EUR)', + flat: '平(0.3kWh/EUR)', + peak: '峰(0.6kWh/EUR)', earningForecast: '收益预测', defaultEarning: '默认策略收益', estimateEarning: '预估收益提升', - rmb: '元', + rmb: 'EUR', stts: '收益预算', sjsyje: '实际收益金额', mrjhqx: '默认计划曲线收益', diff --git a/src/lang/index.js b/src/lang/index.js index 0f00a71..8616736 100644 --- a/src/lang/index.js +++ b/src/lang/index.js @@ -80,9 +80,11 @@ export function getLanguage() { // if has not choose language const language = (navigator.language || navigator.browserLanguage).toLowerCase() const locales = Object.keys(messages) + console.log(JSON.stringify('语言:' + language, locales)) + for (const locale of locales) { if (language.indexOf(locale) > -1) { - return locale + return locale !== 'en' ? 'en' : locale } } return 'en' diff --git a/src/lang/revenue/en.js b/src/lang/revenue/en.js index 4e7ca5f..9646fa5 100644 --- a/src/lang/revenue/en.js +++ b/src/lang/revenue/en.js @@ -34,7 +34,7 @@ export default { selectTemValid: 'Please select template validity', type: 'Type', selectType: 'Please select type', - electrovalency: 'Electricity(RMB)', + electrovalency: 'Electricity(EUR)', sure: 'Sure', cancel: 'Cancel', noSelectData: 'No data is selected', @@ -121,7 +121,7 @@ export default { img: 'Image', eleLevel: 'Electricity Price Level', fsdd: 'The price of time-of-use electricity', - dietailUnit: 'RMB/kWh', + dietailUnit: 'EUR/kWh', eleprice: 'The price of electricity and electricity', historytrend: 'Historical trends', curve: 'Curve', @@ -154,11 +154,11 @@ export default { charge: 'Charge', time: 'Time', ele: 'Electricity(kWh)', - expend: 'expenditures(RMB)', + expend: 'expenditures(EUR)', disCharge: 'Discharge', projectRevenue: 'Project Revenue', monthTotalChargePrice: 'Total Charging Price Monthly', - rmb: 'RMB', + rmb: 'EUR', monthTotalDisChargePrice: 'Total Discharging Price Monthly', earnings: 'Revenue', earningsRecalculation: 'Revenue Recalculation', @@ -204,7 +204,7 @@ export default { }, glance: { day: 'day', - wRMB: 'Million RMB', + wRMB: 'EUR10K', safeDays: 'Safe Operation Days', totalCapacity: 'Total Installed Capacity', totalCharge: 'Total Charging Volume', @@ -232,7 +232,7 @@ export default { setRevenue: 'Settlement Revenue', chargeCost: 'Charging Cost', dischargeRev: 'Discharge Revenue', - rmb: 'RMB', + rmb: 'EUR', setRatio: 'Settlement Ratio', selectSetRatio: 'Please select settlement ratio', priceCurve: 'Real-Time Electricity Price Curve', @@ -243,9 +243,9 @@ export default { noData: 'No Data', inputNumber: 'Please input a number from 0-100', earningGlance: 'Revenue Glance', - unit: 'Unit:RMB/kWh', + unit: 'Unit:EUR/kWh', unitKw: 'Unit:kW', planCurve: 'Plan Curve', - unitRMB: 'Unit:RMB' + unitRMB: 'Unit:EUR' } } diff --git a/src/lang/revenue/zh.js b/src/lang/revenue/zh.js index 7479410..6cff10f 100644 --- a/src/lang/revenue/zh.js +++ b/src/lang/revenue/zh.js @@ -34,7 +34,7 @@ export default { selectTemValid: '请选择模板有效期', type: '类型', selectType: '请选择类型', - electrovalency: '电价(元)', + electrovalency: '电价(EUR)', sure: '确认', cancel: '取消', noSelectData: '未选择数据', @@ -123,7 +123,7 @@ export default { img: '图片', eleLevel: '电价水平', fsdd: '分时电度用电价格', - dietailUnit: '元/千瓦时', + dietailUnit: 'EUR/千瓦时', eleprice: '电度用电价格', historytrend: '历史趋势', curve: '曲线', @@ -153,11 +153,11 @@ export default { charge: '充电', time: '时段', ele: '电量(kWh)', - expend: '支出(元)', + expend: '支出(EUR)', disCharge: '放电', projectRevenue: '项目收益情况', monthTotalChargePrice: '本月总充电量总价', - rmb: '元', + rmb: 'EUR', monthTotalDisChargePrice: '本月总放电量总价', earnings: '收益', earningsRecalculation: '收益重算', @@ -203,7 +203,7 @@ export default { }, glance: { day: '天', - wRMB: '万元', + wRMB: 'EUR10K', safeDays: '安全运行天数', totalCapacity: '装机总容量', totalCharge: '总充电量', @@ -231,7 +231,7 @@ export default { setRevenue: '结算收益', chargeCost: '充电成本', dischargeRev: '放电收益', - rmb: '元', + rmb: 'EUR', setRatio: '计算比例', selectSetRatio: '请选择结算比例', priceCurve: '实时电价曲线', @@ -242,9 +242,9 @@ export default { noData: '暂无数据', inputNumber: '请输入0-100的数字', earningGlance: '收益概览', - unit: '单位:元/kWh', + unit: '单位:EUR/kWh', unitKw: '单位:kW', planCurve: '计划曲线', - unitRMB: '单位:元' + unitRMB: '单位:EUR' } } diff --git a/src/lang/screen/en.js b/src/lang/screen/en.js index 48fa6a1..c4818fe 100644 --- a/src/lang/screen/en.js +++ b/src/lang/screen/en.js @@ -21,7 +21,7 @@ export default { annualEarning: 'Annual Income', totalEarning: 'Total Revenue', groupEarning: 'Group Income', - mRMB: 'CNY10K', + mRMB: 'EUR10K', high: 'High', low: 'Low', comTime: 'Commission Time', diff --git a/src/lang/screen/zh.js b/src/lang/screen/zh.js index 131e933..3d9be8e 100644 --- a/src/lang/screen/zh.js +++ b/src/lang/screen/zh.js @@ -21,7 +21,7 @@ export default { annualEarning: '年收益', totalEarning: '总收益', groupEarning: '集团收益', - mRMB: '万元', + mRMB: 'EUR10K', high: '高', low: '低', comTime: '投运时间', diff --git a/src/lang/strategic/en.js b/src/lang/strategic/en.js index c5ec70a..34688a5 100644 --- a/src/lang/strategic/en.js +++ b/src/lang/strategic/en.js @@ -280,7 +280,7 @@ export default { safeLowerError: 'The minimum security capacity cannot be greater than the maximum security capacity', saveSuccess: 'Save succeeded', buildSuccess: 'Generate succeeded', - unit: 'Unit: RMB/kWh', + unit: 'Unit: EUR/kWh', loadCurve: 'Load curve', importSuccess: 'Import succeeded', newUnit: 'Unit:kWh' diff --git a/src/lang/strategic/zh.js b/src/lang/strategic/zh.js index 1d55664..794436d 100644 --- a/src/lang/strategic/zh.js +++ b/src/lang/strategic/zh.js @@ -277,7 +277,7 @@ export default { safeLowerError: '安全容量下限不能大于安全容量上限', saveSuccess: '保存成功', buildSuccess: '生成成功', - unit: '单位:元/kWh', + unit: '单位:EUR/kWh', loadCurve: '负荷曲线', importSuccess: '导入成功', newUnit: '单位:kW' diff --git a/src/lang/zh.js b/src/lang/zh.js index d427b95..1ac5125 100644 --- a/src/lang/zh.js +++ b/src/lang/zh.js @@ -889,7 +889,7 @@ export default { day: '日', power: '发电量', benefit: '收益', - wanji: '万元' + wanji: 'EUR10K' }, sophCharging: { // 智慧充电 station: '电站', @@ -905,7 +905,7 @@ export default { online: '在线', offline: '离线', accruedIncome: '累计收益', - tenThousand: '万元', + tenThousand: 'EUR10K', faultNum: '故障个数', acAuto: '交流汽车', chargeBenefit: '充电桩日充电量/收益', @@ -920,9 +920,9 @@ export default { peak: '峰', currentPos: '当前位置', chargeFees: '充电收费', - chargeFeesUnit: '元/kWh', + chargeFeesUnit: 'EUR/kWh', serviceFee: '服务费', - servecrFeeUnit: '元/次', + servecrFeeUnit: 'EUR/次', pileType: '充电桩类型', chargeNum: '今日充电次数', free: '空闲', diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue index 49606bd..83eaa08 100644 --- a/src/layout/components/Navbar.vue +++ b/src/layout/components/Navbar.vue @@ -1044,7 +1044,7 @@ export default { flex-shrink: 0; font-size: 18px !important; cursor: pointer; - min-width: 100px; + // min-width: 100px; i { font-size: 28px; diff --git a/src/utils/request.js b/src/utils/request.js index 0104e04..8264e46 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -13,7 +13,7 @@ const service = axios.create({ // request interceptor service.interceptors.request.use( config => { - config.headers['lang'] = sessionStorage.getItem('language') === 'en' ? 'en_US' : 'zh_CN' + config.headers['lang'] = sessionStorage.getItem('language') === 'zh' ? 'zh_CN' : 'en_US' // do something before request is sent if (config.headers.isScreen) { config.headers['authorization'] = getScreenToken() diff --git a/src/views/dashboard-zhongzi/components/topology/index.vue b/src/views/dashboard-zhongzi/components/topology/index.vue index 4fbc479..04a214c 100644 --- a/src/views/dashboard-zhongzi/components/topology/index.vue +++ b/src/views/dashboard-zhongzi/components/topology/index.vue @@ -586,12 +586,12 @@ - diff --git a/src/views/dashboardtest/components/top-center/ninth.vue b/src/views/dashboardtest/components/top-center/ninth.vue index 386ce0a..196847b 100644 --- a/src/views/dashboardtest/components/top-center/ninth.vue +++ b/src/views/dashboardtest/components/top-center/ninth.vue @@ -534,7 +534,7 @@ - + diff --git a/src/views/dashboardtest/components/top-center/pv1storage261.vue b/src/views/dashboardtest/components/top-center/pv1storage261.vue index fa446cb..546bf00 100644 --- a/src/views/dashboardtest/components/top-center/pv1storage261.vue +++ b/src/views/dashboardtest/components/top-center/pv1storage261.vue @@ -377,52 +377,49 @@ {{ item.name }} - + {{ item.value }} - - - - {{ item.name }} - + {{ item.value }} - - {{ item.name }} - - + +
+ + + {{ truncateText(item.name, 120) }} + + +
+
+ {{ item.value }}
- - - @@ -514,7 +511,11 @@ export default { } }, - computed: {}, + computed: { + lang() { + return this.$store.getters.language + } + }, watch: {}, created() { const result = changeTheme() @@ -531,6 +532,34 @@ export default { }, mounted() {}, methods: { + truncateText(text, maxWidth) { + if (!text) return '' + const width = this.measureTextWidth(text) + if (width <= maxWidth) return text + + let truncated = text + while (this.measureTextWidth(truncated + '...') > maxWidth && truncated.length > 0) { + truncated = truncated.slice(0, -1) + } + return truncated + (truncated.length < text.length ? '...' : '') + }, + // 精确测量文本渲染宽度(像素) + measureTextWidth(text, font = '14px sans-serif') { + // 创建或复用一个 canvas(避免重复创建) + if (!this._textMeasurementCanvas) { + this._textMeasurementCanvas = document.createElement('canvas') + } + const ctx = this._textMeasurementCanvas.getContext('2d') + ctx.font = font + return ctx.measureText(text).width + }, + + // 计算 value 的 x 坐标:baseX + name 的实际宽度 + 一点间距 + calculateValueX(name, baseX = 200) { + const truncatedName = this.truncateText(name, 120) // 限制 name 最大宽度 + const width = this.measureTextWidth(truncatedName) + return baseX + width + 6 // +6 是 name 和 value 之间的小空隙 + }, countChineseAndEnglishCharacters(str, x) { var chineseCount = str.match(/[\u4e00-\u9fa5]/g) ? str.match(/[\u4e00-\u9fa5]/g).length : 0 var englishCount = str.match(/[a-zA-Z]/g) ? str.match(/[a-zA-Z]/g).length : 0 diff --git a/src/views/dashboardtest/components/top-center/pv2storage261.vue b/src/views/dashboardtest/components/top-center/pv2storage261.vue index 460c5e5..015c76c 100644 --- a/src/views/dashboardtest/components/top-center/pv2storage261.vue +++ b/src/views/dashboardtest/components/top-center/pv2storage261.vue @@ -370,7 +370,7 @@ {{ item.name }} - + {{ item.value }} @@ -381,7 +381,7 @@ {{ item.name }} - + {{ item.value }} @@ -392,26 +392,68 @@ {{ item.name }} - + {{ item.value }} - + +
+ + + {{ truncateText(item.name, 100) }} + + +
+
+ + {{ item.value }}
- + +
+ + + {{ truncateText(item.name, 100) }} + + +
+
+ + {{ item.value }}
@@ -507,7 +549,11 @@ export default { } }, - computed: {}, + computed: { + lang() { + return this.$store.getters.language + } + }, watch: {}, created() { const result = changeTheme() @@ -524,6 +570,34 @@ export default { }, mounted() {}, methods: { + truncateText(text, maxWidth) { + if (!text) return '' + const width = this.measureTextWidth(text) + if (width <= maxWidth) return text + + let truncated = text + while (this.measureTextWidth(truncated + '...') > maxWidth && truncated.length > 0) { + truncated = truncated.slice(0, -1) + } + return truncated + (truncated.length < text.length ? '...' : '') + }, + // 精确测量文本渲染宽度(像素) + measureTextWidth(text, font = '14px sans-serif') { + // 创建或复用一个 canvas(避免重复创建) + if (!this._textMeasurementCanvas) { + this._textMeasurementCanvas = document.createElement('canvas') + } + const ctx = this._textMeasurementCanvas.getContext('2d') + ctx.font = font + return ctx.measureText(text).width + }, + + // 计算 value 的 x 坐标:baseX + name 的实际宽度 + 一点间距 + calculateValueX(name, baseX = 200) { + const truncatedName = this.truncateText(name, 120) // 限制 name 最大宽度 + const width = this.measureTextWidth(truncatedName) + return baseX + width + 6 // +6 是 name 和 value 之间的小空隙 + }, countChineseAndEnglishCharacters(str, x) { var chineseCount = str.match(/[\u4e00-\u9fa5]/g) ? str.match(/[\u4e00-\u9fa5]/g).length : 0 var englishCount = str.match(/[a-zA-Z]/g) ? str.match(/[a-zA-Z]/g).length : 0 diff --git a/src/views/dashboardtest/components/top-center/second-disposition.vue b/src/views/dashboardtest/components/top-center/second-disposition.vue index 9020d55..5871704 100644 --- a/src/views/dashboardtest/components/top-center/second-disposition.vue +++ b/src/views/dashboardtest/components/top-center/second-disposition.vue @@ -343,7 +343,7 @@ - + diff --git a/src/views/dashboardtest/components/top-center/seventh.vue b/src/views/dashboardtest/components/top-center/seventh.vue index ff5b068..71d221a 100644 --- a/src/views/dashboardtest/components/top-center/seventh.vue +++ b/src/views/dashboardtest/components/top-center/seventh.vue @@ -460,7 +460,7 @@ - + diff --git a/src/views/new-screen-zz/components/map-center.vue b/src/views/new-screen-zz/components/map-center.vue index f46d0ac..d05fa4c 100644 --- a/src/views/new-screen-zz/components/map-center.vue +++ b/src/views/new-screen-zz/components/map-center.vue @@ -81,14 +81,14 @@ export default { const province = [] if (data.length) { data.forEach((el) => { - el.value = [el.latitude, el.longitude] + el.value = [el.longitude, el.latitude] el.symbol = 'image://' + blue el.cityCode = 1000 province.push(el) }) this.pointData = province } else { - this.pointData = [{ symbol: 'image://' + blue, cityCode: 1000, value: [118.8062, 31.9208], name: '江苏' }] + this.pointData = [{ symbol: 'image://' + blue, cityCode: 1000, value: [30.787045, 103.923008], name: 'Sichuan' }] } } finally { this.loading = false @@ -97,21 +97,12 @@ export default { }, getInitMap() { this.$echarts.registerMap('world', worldJson) - // this.$echarts.registerMap('china', chinaMap) - // this.$echarts.registerMap('chinaMapOutline', chinaMapOutline) - this.pointData = [ - { name: 'Beijing', value: [116.4074, 39.9042] }, // 北京 - { name: 'New York', value: [-74.0060, 40.7128] }, // 纽约 - { name: 'London', value: [-0.1278, 51.5074] } // 伦敦 - ] var series = [ { - // map: 'china', name: '国家', map: 'world', type: 'map', roam: false, - // zoom: 1.65, zoom: 1.1, label: { normal: { @@ -126,7 +117,6 @@ export default { } } }, - // top: '29%', top: '10%', tooltip: { show: false @@ -144,8 +134,7 @@ export default { } } }, - // data: this.mapData - data: [{ name: 'China', value: 100 }] + data: this.mapData }, { @@ -164,10 +153,11 @@ export default { shadowColor: '#333' } }, - symbolSize: 10, - data: [this.pointData[this.pointIndex]] + symbolSize: 24, + symbolOffset: [0, '-50%'], // 或 [0, -12] 更精确 + data: [this.pointData[this.pointIndex]], - // showEffectOn: 'render' // 加载完毕显示特效 + showEffectOn: 'render' // 加载完毕显示特效 } ] @@ -197,25 +187,25 @@ export default { trigger: 'item', alwaysShowContent: true, backgroundColor: 'transparent', - position: 'top', + position: 'bottom', triggerOn: 'click', enterable: true, formatter: params => { // 获取xAxis data中的数据 let dataStr = `
` dataStr += `
- ${params.name} + ${params.name}
` dataStr += `
- 投运时间 + ${this.$t('screen.comTime')} ${params.data.createTime}
` dataStr += `
- 装机容量 + ${this.$t('screen.capacity')} ${params.data.capacity} kWh
` - const div = `
${dataStr}
` return div } @@ -224,11 +214,8 @@ export default { geo: [ { silent: true, - // map: 'chinaMapOutline', map: 'world', - zoom: 1.1, - // top: '10%', label: { normal: { show: false, @@ -266,7 +253,6 @@ export default { { silent: true, map: 'chinaMapOutline', - // zoom: 1.1, zoom: 1.2, top: '7%', label: { diff --git a/src/views/new-screen-zz/index.vue b/src/views/new-screen-zz/index.vue index 91949f5..29fb324 100644 --- a/src/views/new-screen-zz/index.vue +++ b/src/views/new-screen-zz/index.vue @@ -6,7 +6,7 @@
- + {{ $t('screen.ztscreenTitle') }}
{{ time }} @@ -339,7 +339,17 @@ $margin: 16px; left: $margin; top: 30px; } - + .left-title-en { + width: 200px; + height: 52px; + background: url(../../assets/new-screen/zhongzien.png) no-repeat; + background-size: 100% 100%; + color: #fff; + font-size: 16px; + position: absolute; + left: $margin; + top: 30px; + } .right-title { font-family: LCD; color: #fff; diff --git a/src/views/remote-control/issue-order/index.vue b/src/views/remote-control/issue-order/index.vue index d926675..b6d88bd 100644 --- a/src/views/remote-control/issue-order/index.vue +++ b/src/views/remote-control/issue-order/index.vue @@ -77,7 +77,7 @@