From aa4074372878075b35aa206717c10662538a3956 Mon Sep 17 00:00:00 2001 From: "liu.shiyi" Date: Tue, 25 Jun 2024 11:15:23 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E5=88=9D=E6=AD=A5=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E7=80=91=E5=B8=83=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../images/componentLogo/基础瀑布图.png | Bin 0 -> 34285 bytes data-room-ui/packages/G2Plots/plotList.js | 2 - data-room-ui/packages/G2Plots/plotListSort.js | 1 + .../G2Plots/瀑布图/基础瀑布图.js | 597 ++++++++++++++++++ 4 files changed, 598 insertions(+), 2 deletions(-) create mode 100644 data-room-ui/packages/G2Plots/images/componentLogo/基础瀑布图.png create mode 100644 data-room-ui/packages/G2Plots/瀑布图/基础瀑布图.js diff --git a/data-room-ui/packages/G2Plots/images/componentLogo/基础瀑布图.png b/data-room-ui/packages/G2Plots/images/componentLogo/基础瀑布图.png new file mode 100644 index 0000000000000000000000000000000000000000..604872f6e3b550f0a1f29124d5f042c861527bf9 GIT binary patch literal 34285 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

6H$M{AlWF#1mOiy5W5c~ysQmDpumgwW>7PD1PK z{o_tzOOmu<5eWr8jvqv9P9}l?22_M}G4s)z85e^{o&@w3 zu-AgY$w$N3(NFm<9VL6P*2Md7SRTug{5Nin-M9HS?vDLg19HPvl`9CQT+pRFrflRG ze+3T{@NZ2fvME46gFihovlFq(Nk0EYSu+WIB0vXCCQdi*0ml`v8?^|w3HF;t!B&ku zK)yg5@(cj1ia2@jw}K{uA+tRDRzMkit3f40v|7Z$9>`yE%&yyk_S* zpTpyVKzvRVRaOaJZz)Q+FHuNJ2d<<|wyNQKFezfZcxfW5D;zLqVSvT;Zt4Y9+wCsU z%nU{Rttn$~0GhT|>Ve83|G*4;$;GH>-}6VLwFxyj3c?^Hc5z)u3) z@vI0$E0eB!^H zcrUrw+Lh9jI1D95+u{rbRi9rBH`+)s%#kd0iX~-Pl-i>D=H{cKkR2C~h7}qOgmh_5 zojkOa@44egZ*7wq6TJ;%8G9KrQG|$}_lf|vVu=Je0YjtEQuW`!O zRiL5bqh9P+_!|blr@TO}yx!u5 z0H(I-l1&s)B%=iTa|sF2b`7V*ElT_|f7SFat-CaST3H7vF}COKw70KrjZDr?w!2gQ zo%16>rlIEzew{q0as^UU`kCRqI-ynza<0|yqJb6tM~^N*Q!`j5o;6*CfmeE1RpPV- z=@-4o*;}- zs7Zh$GiTXVnA>Ifhrr56`NDmCjY{|q5EHZZj22y(Pa3+Wi6?BF1OZ5Awc*;Txd#JK z>0{JX*jBpTM*xoBs5;L?0g~B6PTw?Q4Cquqj`}4zMj}R?=?GdLHZHjAB^H+Ax6jyA zmpMfNfUjjN*Bd!8bmXkaZ1e5H_^LkkNu?(pVn@uh)+V4rX%dZ^2E{+XsXooW4Vuc%N}_0sRrjEnbxb?2nij+Oa1$s;u&mEdDp3Kfpg$PKqV z`;Nzw$ISE$`oYvFl3hHx<#438hs2rb5AgqAkFPaCUZPN-l`7-hthR|EK6CxFjM@BY zbsNUefEF6{J(cM`R7Ghgrs)LlOOm00(Dr?)&P(XV3kacSviflnMF&-OfUFc!2YRC*u^qn2AI z#0h!#IdV2X)@Ce=gvG<~Z|r6rCm;chk-lSp6*5CH#op>MB-^pN<}++v=Ob(XHi^~R zbyuEpB=@eqa2YBxHwm42R%coY-Q{kCl&~94(;fG6-Tew)?J)t%OPt z)KIsq&1t$Xs1+!d{e(6XrQeweYFEC&N{evM-7C=8^c2rntw`>i{Y<6c$=wdZTzNr` z2|g_?&2&nq{&QBSKmLP|Tau#EeZgIdy$;oNm=drwI09ugFe8=U{2A$}n0-9yTl1N7 zZdkYoY?Ky!S?;vF3^2}_PJ%i+=XWM&-P`{B41ZSC3#O4v&+kZ<3@eXo#NRDWe@7dk zz28S*1>z*Sw~e84A)YelC~=e==!e$0;6U!>*g#bNuwR+HEp@3v4e*eAxPYMDOSjOaBG>p8 zpV5+ssMCTYI2XmNuj^}|4GNju#+znRq#y9^t8L8-7`?ajDzx6?zJ`&8*L-Lg%SB+r zthv|Xd#w|FWZ@nSW(q4|V46eFap{loe;-LhIi7PSo2UpK7QANE2Cit%l5@%s)gEIc zvhU!1tkeuIeCnDstR}ACsl0w7bAt@+d!*1-;Q1D@vx1x;N%31t(Ml>W3kYmdeiojD zqK1#8lk>>v+6APygr&z#Prp8=oVg{yU9_$vu#nt1^?Ihmdad+ly8$HQ;qNPs&mZ53 zxvqG}LI3wk@1kC8Ai&PU)8UbrfmgM(ij}6n6W_isy(DG)f3DCK4^Pzq_)q>+o z=3l{zUXx3l1E`&J3D@in^4R9Ysu?0^|DAWF$j5+_P(ne_MF_DX8R8tuDu;Sd9fuKu zDN#i%GhxanERgL9xUH;YbJ6&BB)cAiiA3xAkO4MVIG7;4{~X)+h(K!e%W_c1OXGw|7V^w$0yI~r6DUX{QZgQYqXc@Y-6|N zeL3)2${*_`okm>>UGz-APQ0L5KU}+`I@el&HMa7v*}L&bTIqXmp9AeXD2g-;U70Z@ z`Q`V>r5i!?$+rEPa}}g$IMu@|!i*G9>+M#p&j0N10A4mU@LwH-w5$q0j-lDPa-g^L znCteU5{~qWrYjY#)f`xV?)w^eoJJUbP?r2VT=*KoQj_WiIfF*tUA+yHG}}aA!wUJ! zIAPoZuRQV)i!0ye8a@Ql&Fw>hkad-}!y#WT%Tq0^$UiJE@GmOMaJmx@#{8Rs6HlE` zRqMi^1a6XcvCO*hB+xdJYSMuje(HE$@)Pp(2# z-=Nvz{VT(DO(9IsdPh_{&qJ=06o5}gPgTo@-x%Z5tWp#frs+ez@#e_gTkFqp@Tun% zX!zYc4@B<~JKZcZLWL@$N`zeZSnqaOnq!@%ACHRku3LACd)Xckf3OULeVM@@%*~Hu zW0|0G<}}Qc3wrD}i909exT5{d&Yt{9}mf@kac@EdR<@Zbu5dJxYWWK!X>p za_sbl620)vy*!W!+k0J;o+5t$7`MM*M`YIYpmI%iX~^o0)I&-SH$0}c#Bf>W=YGto z*%@n$bF`~!?GC5)l^swt_h*->=B((0jOJ4}YLhw&)`Ex2DKolvYyVk(zi?nC3FFCm zp*vVA_Aux+i<+=~SRUx64txh|0Z3Y4_Y7>JsiP3s?>;gk7(JpzNw?m(9J&O)M=*Ts zOD?aB1oV6BZWewj^sjh$cE=YMfYRu#~E zAr|;#h`0@+y20PE%C5Y@R6_Nb(1{hJ(pslnPTcFYids+teGx(oTfpx6WWN6*`24A1 z@R=1P{1&Wc>}6%*6wfevqAaB}nIJ()X?Yo|(4~9^odUMC$;08ks#pyc!@y9E)^yNI-o!HPtmz~M$MZ@(^FV{+Y{rzf&@QC&q7r1xu2Wk5kbnLqv z!?N67_E>R||KkJD7D|1{xO(0w#8hE4(`ejdobl_3gqHSm-w!>(XFv=fg% zVU=Xfl;fka@lv8N#`#p+S&@&mVZpTXQJ5aF9&mtBDh=?ud%9$!VN|b5Xwmp3OtNWp zn{R{v`(IS&ub27v>|O;N6z^g(#{J@L8i!=by*B;xdW0Z+(QG3)5l8*P^$CrbdUM)VSALItSa=i~E?OUn$K9&D=H`2Jb3s!0PNB zXwV;p2dCTuSans>X6(u37t^=v18FI7QQbGaueV8>Y(`;h#4nun(>aRHV+|lt4`EqS7)Icccay(?~L-%j!4{RK2ZtY#_lVBWP2zYwb5~T3=xFSqm4fq%iL(f45Zm_elx%AX-?5%vnu0>(cc^=xR zLT1AVGx&R&v`cGm_Y9!gqZ6-zZqyhajCHz)h|=VK$PSY$pdR^tL)5dgH@rt+%@Fr_5yI2%Y^K z{JXBZ#sN&AFsi|^SSs!T z?LUJIJrw1y6&WdcBYnE!?guXCsiGFv?`_851dVh;J`*siYB1NJ^_-R(%N2}(*2LWA zS9q}H_IS4^^ePWzfJ~GuC84Msb)*j_^K$5RJ>L8gJ71thMLc)~6n{K$EugmTi8QJ- zgtn(!yN2*^jDAXmR|lJ2KYWxoQxnV6W-~v2jckH@!Qb;E^D{(?*>Zf~n(ODJ3y`=8 zhdNH;J^6=y^kwawK7TvmIKQ=_C#-0S18)Gom3R1cbBJ876VMm1B$Ho$!j!UULoL z7|$o=FXAPYNs_I_n)cuGrVCOrUNq0Y!M5|0rC;Ej6B~ievSNJY?`@vVsLf5HdAs2w z;Zu~w^Q`hKvpWlSnz9TBLDB9ZdC7EidhTuCN|se-Cw1}tO=gBUZ5r}#BS^SK zFkj&~HwmDOp_8gCr}fV7hzxr`%feI9#p$*c4z4&(2r)Cjna(btbU`q#l<;Gvy8>WB z>L~pN6FgxF0{J>jlb%@XP)GTMjWSp3IFNlU7k#vkNH*Y3C((&{d%M{GtH0BS&to}E z(+0Y&exs%5AQIP3X&8XpXECki&u`_S=Z6tVzk;P5l#sHkHS-#xC0e#q-bXM}4g1}D z&Q-`eM=lAxA>K_fPVAC)O&%%dttwbJ?>l(d z?f1ycf-NICB_-F`ZNM>-N{ypeAIEzn=yO2^j*CLw*i3IP6yHy`!8xQzkOKOzKqhRS z0^l|lBh4oUK_7RX;pPeKC{wHHG})XmnlXYoXzOe$M5pR~TVHtg5M%d_jVLdF0$^+a zF>J5z z!ouJAb%E!Qb%0nTae35}kHN)|a9;^hw z7+x`9#i5rj-=!0m%kggUth3cU9B43@-!0-&yXU^gN_Qn7@q{N1T8$QzYdWOC4L2;p z#qHT`bh(UDa1PI+3sd;~KziE{DX-+Y5DU6>;f`8pZ`9JOb~$~#X#xPG`%iglTs-e0 zSZEVf-k$KXsZglA+g`ejevpD0oGfWghJWSiJ}8;K1h`*9-F{^p3u2yCd$~kAfhWL1h=mcGe2@1 zo;6r|y6KHN(E}ML_ro5*)c}G6XI6xO#088dX$D>;%-nz7uPyGUny#5GwtcbCQ$YA7 z30q_~gNdw!5rt7cdr7d&VHeL=TK2}v{UpVHF_M}11~_yW`+3!J9fssS1c~^rtyy9q z6+pgW9I3D@c!CP!lGK_BU1w`;WZoqk~@1J&hKJk;$Zf80)y;DQrUebWIVED12o zkwY^6yd8{rkqIG+UXqd05wE?`kA1x2O!H|9nFWoG%_b<;KXvSz_3*_u_V~;E{1qcJ zo}A7nGC#=tOxoC)iRV8u^<;D$cqakv`O>u_E>1yVlSeEv^fGb*=_ad8%wG7*a%&7l zY{vC0Ixr3+a9O`@9|79N01c1*{!>>7LSVXs5XDfr(q*Lh(ltJ)wuiyEg%&j~kIXc;i37mc5^6ZBbL$F3&hWQF!9;h4f}-Z7 zXVGMncL#vJ5iv;Xe$&fW@^pbt0rRitr0bc&w>EgblN7*S)VRVK170q3lEG{Syvl)D z4UHl6W3qKKsOBMT>q|fAyxca z3*al5^2Ouky!S-C?uSZQ!2(B25)q4NgKU4H$5{ht6d&7eBq}%hKF|Yt@C_P^KCHy8 zTb=JTF&nI{qpB5wFYHB(8$SKWjuYZR;ojWdcg2C2kdXYqG2I6#M=h)@^5MB|YD}uY z`!Ru1XV5$lxg^PF%M|l7=+Qt^{m_4YSeH311B-n3K>@IE$x<3xd4<>}R<)09j$upBq62DvKd*k4kAvNXd5)B0jD%o?@8>-eT=HWg zQ@5(H_8hTpg9w*U|FGJ!b;`~-)9ff}ceY{s5>zfd#AWwPeuzbJX{jM)B0U1%{0H?G zm7{xpVHRxE5Uqh@x+xCb93Iy?_c7H1E(?FZIYE0_BQM^+g}WdnH?>!_4SdVRbC9g- z%wbq&7aL~UMB*=^V!uz!s@H2=C1ly#EW4@acMHPuO*u$cji5jwT+<}7eq4y-TCKUX zX(0O^CzXTo8v9VwMD489{_au!u9sR~1g{erErtw4Scb6V3~DK#$h-PZv9|$6Wo0-k zhMk16qGJF;7V#}NP;hjN{p?v}kjvwNI#^PrQTX4`rHX+dVNI{YmH6mKVR0D7j95@K ze7wSznC+6<+mS^dG~fV=_d+KOn+#OSuAvU>x*pt1Eg~yU&XfY-cg=>xXg9R4|QSm2+_zFLQ|2w~=kG+I4bS{AZ_3SKiapa`DcOXLyK~2T1%1CZy{x z1D91*Kei(Gw>Y|o&Cb*PgkEFK=3+b?!O~TR_*Twuyxl(MBgUQArLmG9tc8vyTMAz* zNTc^${kTG#!||p|bYPC{0i|lef^YjmwrvbJAwN^3j^shhuU9@9=_uJee$(}NxPN=? zwgW|T*M<0ox>}g(8Fbj^ZfZEerrsCX#}0Y!cUM9&AZUD6kSZzOU6W_7hMdoTdti-v zKHx1IOK=)342gfO+>k8&)aY`fCez&TOp0*-(i7TRo^z zx)C3OC(M=TT@%xKX9Dfx0f>i(Ti`45g4EHH7WFSL%HMEfk1nzgtiC^ONNI4k?B^|p zWOz0*_Lo}sL|wb^o*2Oe*7py4UrRLtYxgvf)wm%bu2ETR+O9U+qqCD*GRodkHFjE@ zTPkE?Zr9$fqt%^vGSc{l=4!Ym>G+t>-#^Sf;98>%;{%1Lg{o=qMWLraufL@o<(A=Q z+0qWJZB~G4;vY6wAgb+KUr!b;pH%0B40IC1q9V4KGN-)oQPK@R?x%3O=Jy)gk411o zCQQphIb`kd{_$-q5-L?vU4c8OTqm6#;o<9iosvO+>Nj?!2lv@;uIAxRnbsPHEd!C1 zjZ{n3ZXvd|xN^bk*XqZ7o8=s7x$l6|9Z3Gg^(hcD>fG{JTRP<{^-0xq3JR&>zkh5@ z#D#rK!a1@c$-G*kZJ!EgrQI~N4UbRCG!<9)9e40|CtYl7C}vCKe6{meWS4f(!67R3 zeMwX(ZIlR-A~nf%nlY9nR-5XA)qfmYs2XDB;!~+vxexp8X%*KMVm$i%HD=>03R!YW z!LjH0uwc(UpAEbTogRf@Er~4*FKSC;jdbLe7vTVthK_Yb*|B3x1-cI(m`3#L*@v3_ z&UlyAIS=?95Kcqi4?31h3tTyHnk-suEm0WrP&q|Vo(A)tc%7kJGc@%Q7}tqWeyLhQ zuZtx&U|y4I*K^e#c@(Sg2s^CA2&Aa7P*0pVv9kJ`KUysE2QG13ZdIK3r>nV(0tCi* zVZEerTlTZbV&X$hlC_9PK{CGlvZ4SrHqc?O1S&iga zVras>Y#P5H6AkV)U^PF5r%YLOd-dB6+rXac=ZHZ{lfw+^w3D0xWmhoI2lY^=I=NWk z{NH7eIL+`H$Wg^HDB%HPXyD>l!Ct5uX;}^(SX10_J>iXw2$!16qTNDiwa0F2i!?tF zs1K&?Tn~N;)$oX;>%vujx0{B{yg%@*^$W^g*Ui;>5_S`3oZ>>gWJ+CEf^Q6H`sEk8 z;|7)7ckf1=tsq4L2nO4j6Q{%4YM)C(@1?)@**b-sbv$>v4T8)QURh0gSYceDv?lsU zC}r$Garnmp8?EQ`Q(|U}cnpi&SCz7>;cD48{S-rfO#p4o>&d%>AG!Kv{sMVYYp?Bp zGDA^meZ;Rc-9$K;TK30cT&zxKR3zyv<j0uAJuxOxGx!SC+39BL|U|_nNkimzBiYel*?b6aJ%YBGdRty zU((IObhpXOE334$v^UI%4;6BPYLW~4B+I{l1*a+$K6Ky@543D?`BcRR3>LIrJDO@P zUQ4oT8M`K7-)Xk_t^e#`x#J}XCgI+eUn5WV-oGEUyb(SN7$&3)xcu8166noh0xqMt zHe21?&!k2Tx^|}h$YDH$t3_W+QCkZjCTyRzu*!ak>A+dewBrfOzeA(ubog62-epC2 zedq>4m*0}8fzd-aDn~CWn-4S<6{8TPB-ul`O5!=}hIzd-P>ij||J-d~Nh<8U_1Abx za`G7`_vc}B>=TQO=jM|Fg{Z(wKsB>oc|GhEX}0AABN3TQl}MCi`|_`j7U=x`J4MWq zWF|o9NDg}J81>(shGWP2QAfhPW5)_u|1TspNB{BvU*P|#d$4}^$FthRocHugE=NyC NSJU8Oi8> item === configMapKey) const config = configMapList[configMapKey] @@ -61,7 +60,6 @@ function getPlotList (files) { ...cloneDeep(dataConfig) } } - console.log('plotList', plotList) return plotList } export function getCustomPlots () { diff --git a/data-room-ui/packages/G2Plots/plotListSort.js b/data-room-ui/packages/G2Plots/plotListSort.js index 8f416b0a..88fd6e53 100644 --- a/data-room-ui/packages/G2Plots/plotListSort.js +++ b/data-room-ui/packages/G2Plots/plotListSort.js @@ -31,6 +31,7 @@ export default [ '基础玉珏图', '基础桑基图', + '基础瀑布图', '水波图', '矩形水波图', diff --git a/data-room-ui/packages/G2Plots/瀑布图/基础瀑布图.js b/data-room-ui/packages/G2Plots/瀑布图/基础瀑布图.js new file mode 100644 index 00000000..79e1321d --- /dev/null +++ b/data-room-ui/packages/G2Plots/瀑布图/基础瀑布图.js @@ -0,0 +1,597 @@ +/* + * @description: 基础瀑布图 + * @Date: 2024-0625 + * @Author: liu.shiyi + */ + +// 配置版本号 +const version = '2023111501' +// 分类 +const category = 'Waterfall' +// 标题 +const title = '基础瀑布图' +// 类别, new Line() +const chartType = 'Waterfall' +// 用于标识,唯一,和文件夹名称一致 +const name = 'JICHUPUBUTU' + +// 右侧配置项 +const setting = [ + { + label: '维度', + type: 'select', // 设置组件类型 + field: 'xField', // 字段 + optionField: 'xField', // 对应options中的字段 + // 是否多选 + multiple: false, + value: '', + tabName: 'data' + }, + { + label: '指标', + type: 'select', // 设置组件类型 + field: 'yField', // 字段 + optionField: 'yField', // 对应options中的字段 + // 是否多选 + multiple: false, + value: '', + tabName: 'data' + }, + /** 样式配置 **/ + // 图表 graph + { + label: '柱子颜色', + type: 'gradual', // 设置组件类型 + field: 'columnStyle_fill', // 字段 + optionField: 'columnStyle.fill', // 对应options中的字段 + value: 'l(90) 0:#6B74E4 1:#4391F4', + tabName: 'custom', + groupName: 'graph' + }, + { + label: '数据标签', + type: 'switch', // 设置组件类型 + field: 'label_style_opacity', // 字段 + optionField: 'label.style.opacity', // 对应options中的字段 + value: 0, + active: 1, + inactive: 0, + tabName: 'custom', + groupName: 'graph' + }, + { + label: '数据标签位置', + type: 'select', // 设置组件类型 + field: 'label_position', // 字段 + optionField: 'label.position', // 对应options中的字段 + // 是否多选 + multiple: false, + value: 'middle', + tabName: 'custom', + options: [ + { + label: '顶部', + value: 'top' + }, + { + label: '居中', + value: 'middle' + }, + { + label: '底部', + value: 'bottom' + } + ], + groupName: 'graph' + }, + { + label: '数据标签颜色', + type: 'colorPicker', // 设置组件类型 + field: 'label_style_fill', // 字段 + optionField: 'label.style.fill', // 对应options中的字段 + value: '#ffffff', + tabName: 'custom', + groupName: 'graph' + }, + { + label: '数据标签大小', + // 设置组件类型 + type: 'inputNumber', + // 字段 + field: 'label_style_fontSize', + // 对应options中的字段 + optionField: 'label.style.fontSize', + value: 10, + tabName: 'custom', + groupName: 'graph' + }, + { + label: '柱最小宽度', + // 设置组件类型 + type: 'inputNumber', + // 字段 + field: 'minColumnWidth', + // 对应options中的字段 + optionField: 'minColumnWidth', + value: 0, + tabName: 'custom', + groupName: 'graph' + }, + { + label: '柱最大宽度', + // 设置组件类型 + type: 'inputNumber', + // 字段 + field: 'maxColumnWidth', + // 对应options中的字段 + optionField: 'maxColumnWidth', + value: 100, + tabName: 'custom', + groupName: 'graph' + }, + { + label: '柱背景颜色', + type: 'colorPicker', + field: 'columnBackground_style_fill', + optionField: 'columnBackground.style.fill', + value: 'rgba(255,255,255,0)', + tabName: 'custom', + groupName: 'graph' + }, + // 网格线 grid + { + label: '虚线', + type: 'switch', + field: 'yAxis_grid_line_style_lineDash', + optionField: 'yAxis.grid.line.style.lineDash', + value: 0, + active: 5, + inactive: 0, + tabName: 'custom', + groupName: 'grid' + }, + { + label: '宽度', + type: 'inputNumber', + field: 'yAxis_grid_line_style_lineWidth', + optionField: 'yAxis.grid.line.style.lineWidth', + value: 1, + tabName: 'custom', + groupName: 'grid' + }, + { + label: '颜色', + type: 'colorPicker', + field: 'yAxis_grid_line_style_stroke', + optionField: 'yAxis.grid.line.style.stroke', + value: '#E5E6EB10', + tabName: 'custom', + groupName: 'grid' + }, + // X轴 xAxis + { + label: '标题', + type: 'input', + field: 'xAxis_title_text', + optionField: 'xAxis.title.text', + value: '', + tabName: 'custom', + groupName: 'xAxis' + }, + { + label: '标题位置', + type: 'select', + field: 'xAxis_title_position', + optionField: 'xAxis.title.position', + value: 'end', + tabName: 'custom', + options: [ + { + label: '左', + value: 'start' + }, + { + label: '中', + value: 'center' + }, + { + label: '右', + value: 'end' + }], + groupName: 'xAxis' + }, + { + label: '标题字体大小', + type: 'inputNumber', + field: 'xAxis_title_style_fontSize', + optionField: 'xAxis.title.style.fontSize', + value: 12, + tabName: 'custom', + groupName: 'xAxis' + }, + { + label: '标题颜色', + type: 'colorPicker', + field: 'xAxis_title_style_fill', + optionField: 'xAxis.title.style.fill', + // 是否多选 + multiple: false, + value: '#e9e9e9', + tabName: 'custom', + groupName: 'xAxis' + }, + { + label: '标签大小', + type: 'inputNumber', + field: 'xAxis_label_style_fontSize', + optionField: 'xAxis.label.style.fontSize', + value: 12, + tabName: 'custom', + groupName: 'xAxis' + }, + { + label: '标签颜色', + type: 'colorPicker', + field: 'xAxis_label_style_fill', + optionField: 'xAxis.label.style.fill', + // 是否多选 + multiple: false, + value: '#e9e9e9', + tabName: 'custom', + groupName: 'xAxis' + }, + { + label: '轴线宽度', + type: 'inputNumber', + field: 'xAxis_line_style_lineWidth', + optionField: 'xAxis.line.style.lineWidth', + value: 1, + tabName: 'custom', + groupName: 'xAxis' + }, + { + label: '轴线颜色', + type: 'colorPicker', + field: 'xAxis_line_style_stroke', + optionField: 'xAxis.line.style.stroke', + // 是否多选 + multiple: false, + value: '#C9CDD4', + tabName: 'custom', + groupName: 'xAxis' + }, + { + label: '刻度线宽度', + type: 'inputNumber', + field: 'xAxis_tickLine_style_lineWidth', + optionField: 'xAxis.tickLine.style.lineWidth', + value: 1, + tabName: 'custom', + groupName: 'xAxis' + }, + { + label: '刻度线颜色', + type: 'colorPicker', + field: 'xAxis_tickLine_style_stroke', + optionField: 'xAxis.tickLine.style.stroke', + // 是否多选 + multiple: false, + value: '#C9CDD4', + tabName: 'custom', + groupName: 'xAxis' + }, + { + label: '标签过多时隐藏', + type: 'switch', + field: 'xAxis_label_autoHide', + optionField: 'xAxis.label.autoHideEnable', + value: true, + active: true, + inactive: false, + tabName: 'custom', + groupName: 'xAxis' + }, + { + label: '标签隐藏判定间隔', + type: 'inputNumber', + field: 'xAxis_label_autoHide_minGap', + optionField: 'xAxis.label.autoHideMinGap', + value: 0, + tabName: 'custom', + groupName: 'xAxis' + }, + { + label: '标签过多时旋转', + type: 'switch', + field: 'xAxis_label_autoRotate', + optionField: 'xAxis.label.autoRotate', + value: true, + active: true, + inactive: false, + tabName: 'custom', + groupName: 'xAxis' + }, + { + label: '标签过长时省略', + type: 'switch', + field: 'xAxis_label_autoEllipsis', + optionField: 'xAxis.label.autoEllipsis', + value: true, + tabName: 'custom', + groupName: 'xAxis' + }, + // Y轴 yAxis + { + label: '标题', + type: 'input', + field: 'yAxis_title_text', + optionField: 'yAxis.title.text', + value: '', + tabName: 'custom', + groupName: 'yAxis' + }, + { + label: '标题过长时旋转', + type: 'switch', + field: 'yAxis_title_autoRotate', + optionField: 'yAxis.title.autoRotate', + value: true, + active: true, + inactive: false, + tabName: 'custom', + groupName: 'yAxis' + }, + { + label: '标题位置', + type: 'select', + field: 'yAxis_title_position', + optionField: 'yAxis.title.position', + value: 'end', + tabName: 'custom', + options: [ + { + label: '上', + value: 'end' + }, + { + label: '中', + value: 'center' + }, + { + label: '下', + value: 'start' + }], + groupName: 'yAxis' + }, + { + label: '标题字体大小', + type: 'inputNumber', + field: 'yAxis_title_style_fontSize', + optionField: 'yAxis.title.style.fontSize', + value: 12, + tabName: 'custom', + groupName: 'yAxis' + }, + { + label: '标题颜色', + type: 'colorPicker', + field: 'yAxis_title_style_fill', + optionField: 'yAxis.title.style.fill', + // 是否多选 + multiple: false, + value: '#e9e9e9', + tabName: 'custom', + groupName: 'yAxis' + }, + { + label: '显示标签', + type: 'switch', + field: 'yAxis_label_style_opacity', + optionField: 'yAxis.label.style.opacity', + value: 1, + active: 1, + inactive: 0, + tabName: 'custom', + groupName: 'yAxis' + }, + { + label: '标签字体大小', + type: 'inputNumber', + field: 'yAxis_label_style_fontSize', + optionField: 'yAxis.label.style.fontSize', + value: 12, + tabName: 'custom', + groupName: 'yAxis' + }, + { + label: '标签颜色', + type: 'colorPicker', + field: 'yAxis_label_style_fill', + optionField: 'yAxis.label.style.fill', + // 是否多选 + multiple: false, + value: '#e9e9e9', + tabName: 'custom', + groupName: 'yAxis' + }, + { + label: '轴线宽度', + type: 'inputNumber', + field: 'yAxis_line_lineWidth', + optionField: 'yAxis.line.style.lineWidth', + value: 0, + tabName: 'custom', + groupName: 'yAxis' + }, + { + label: '轴线颜色', + type: 'colorPicker', + field: 'yAxis_line_stroke', + optionField: 'yAxis.line.style.stroke', + // 是否多选 + multiple: false, + value: '#C9CDD4', + tabName: 'custom', + groupName: 'yAxis' + }, + // 内边距 appendPadding + { + label: '', + type: 'appendPadding', + field: 'appendPadding', + optionField: 'appendPadding', + value: [0, 0, 0, 0], + tabName: 'custom', + groupName: 'appendPadding' + } +] + +// 模拟数据 +const data = [ + { type: '日用品', money: 120 }, + { type: '伙食费', money: 900 }, + { type: '交通费', money: 200 }, + { type: '水电费', money: 300 }, + { type: '房租', money: 1200 }, + { type: '商场消费', money: 1000 }, + { type: '红包收入', money: -2000 } +] +// 配置处理脚本 +const optionHandler = '' + +// 数据处理脚本 +const dataHandler = '' + +// 图表配置 new Line('domName', option) +const option = { + // 数据将要放入到哪个字段中 + dataKey: 'data', + // 图表内边距 + appendPadding: [0, 0, 0, 0], + data, + xField: 'type', + yField: 'money', + color: '', + columnStyle: { // 设置柱子渐变色 + fill: 'l(90) 0:#6B74E4 1:#4391F4' + }, + total: { + label: '总支出', + style: { + fill: '#96a6a6' + } + }, + label: { + offsetY: 13, + // 可手动配置 label 数据标签位置 + position: 'middle', // 'top', 'bottom', 'middle', + // 配置样式 + style: { + fill: '#8C8C8C', + opacity: 0, + fontSize: 12 + }, + layout: [{ type: 'interval-adjust-position' }] + }, + xAxis: { + title: { + text: '', + position: 'end', + style: { + fill: '#e9e9e9', + fontSize: 12 + } + }, + label: { + autoRotate: false, + autoHide: true, + autoEllipsis: true, + autoHideEnable: true, + autoHideMinGap: 2, + style: { + fill: '#e9e9e9', + fontSize: 12 + } + }, + line: { + style: { + stroke: '#C9CDD4', + lineWidth: 1 + } + }, + tickLine: { + style: { + stroke: '#C9CDD4', + lineWidth: 1 + } + } + }, + yAxis: { + title: { + text: '', + position: 'end', + autoRotate: false, + // rotation: Math.PI / 2, + style: { + fill: '#8C8C8C', + fontSize: 12 + } + }, + grid: { + line: { + style: { + stroke: '#E5E6EB10', + lineWidth: 1, + lineDash: [4, 5], + strokeOpacity: 0.7 + } + } + }, + label: { + formatter: (v) => { + if (v < 1e3) return v + // 数值格式化为千分位 + if (v >= 1e3 && v < 1e6) return `${v}`.replace(/\d{1,3}(?=(\d{3})+$)/g, (s) => `${s},`) + if (v >= 1e6 && v < 1e9) return `${(v / 1e6).toFixed(1)} M` + if (v >= 1e9 && v < 1e12) return `${(v / 1e9).toFixed(1)} B` + return `${(v / 10e8).toFixed(1)} B` + }, + style: { + fill: '#e9e9e9', + fontSize: 12, + opacity: 1 + } + }, + line: { + style: { + stroke: '#C9CDD4', + lineWidth: 0 + } + } + }, + // 背景图设置 + columnBackground: { + style: { + fill: 'rgba(255,255,255,0)' + } + }, + meta: { + type: { + alias: '类别' + }, + sales: { + alias: '销售额' + } + } +} +export default { + category, + version, + title, + chartType, + name, + option, + setting, + dataHandler, + optionHandler +}