From 087c788e6a8ea2d219ca683b4eefc7520a89d3d4 Mon Sep 17 00:00:00 2001 From: BianLzhaoMin <11485688+bianliangzhaomin123@user.noreply.gitee.com> Date: Mon, 7 Jul 2025 09:51:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E9=A1=B9=E7=9B=AE=E5=90=8D?= =?UTF-8?q?=E7=A7=B0=E4=BB=A5=E5=8F=8Alogo=E7=AD=89=E5=9B=BE=E6=A0=87?= =?UTF-8?q?=E6=9B=BF=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 4 +- .env.production | 4 +- .env.staging | 4 +- package.json | 4 +- prettier.config.js | 11 ++ public/favicon.ico | Bin 5663 -> 5707 bytes public/favicon.ico-9 | Bin 0 -> 5663 bytes src/assets/logo/logo-old.png | Bin 0 -> 5663 bytes src/assets/logo/logo.png | Bin 5663 -> 5707 bytes src/views/index.vue | 66 ++++++---- vue.config.js | 227 +++++++++++++++++------------------ 11 files changed, 172 insertions(+), 148 deletions(-) create mode 100644 prettier.config.js create mode 100644 public/favicon.ico-9 create mode 100644 src/assets/logo/logo-old.png diff --git a/.env.development b/.env.development index 302ecd1..558f448 100644 --- a/.env.development +++ b/.env.development @@ -1,10 +1,10 @@ # 页面标题 -VUE_APP_TITLE = 若依管理系统 +VUE_APP_TITLE = 水运工程设计施工AR应用平台 # 开发环境配置 ENV = 'development' -# 若依管理系统/开发环境 +# 水运工程设计施工AR应用平台/开发环境 VUE_APP_BASE_API = '/dev-api' # 路由懒加载 diff --git a/.env.production b/.env.production index b4893b0..57ddbe9 100644 --- a/.env.production +++ b/.env.production @@ -1,8 +1,8 @@ # 页面标题 -VUE_APP_TITLE = 若依管理系统 +VUE_APP_TITLE = 水运工程设计施工AR应用平台 # 生产环境配置 ENV = 'production' -# 若依管理系统/生产环境 +# 水运工程设计施工AR应用平台/生产环境 VUE_APP_BASE_API = '/prod-api' diff --git a/.env.staging b/.env.staging index 209b64e..edad552 100644 --- a/.env.staging +++ b/.env.staging @@ -1,5 +1,5 @@ # 页面标题 -VUE_APP_TITLE = 若依管理系统 +VUE_APP_TITLE = 水运工程设计施工AR应用平台 BABEL_ENV = production @@ -8,5 +8,5 @@ NODE_ENV = production # 测试环境配置 ENV = 'staging' -# 若依管理系统/测试环境 +# 水运工程设计施工AR应用平台/测试环境 VUE_APP_BASE_API = '/stage-api' diff --git a/package.json b/package.json index 53fb7b7..962d292 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { "name": "ruoyi", "version": "3.9.0", - "description": "若依管理系统", - "author": "若依", + "description": "水运工程设计施工AR应用平台", + "author": "水运", "license": "MIT", "scripts": { "dev": "vue-cli-service serve", diff --git a/prettier.config.js b/prettier.config.js new file mode 100644 index 0000000..e5776d2 --- /dev/null +++ b/prettier.config.js @@ -0,0 +1,11 @@ +module.exports = { + printWidth: 120, + tabWidth: 4, + semi: false, + vueIndentScriptAndStyle: false, + singleQuote: true, + trailingComma: 'all', + proseWrap: 'never', + htmlWhitespaceSensitivity: 'strict', + endOfLine: 'auto', +} diff --git a/public/favicon.ico b/public/favicon.ico index e26376026420542212ed58d90d0ed34f554fa4ae..a0b7988e25ced2cad052dc34d9f044388be6fe0d 100644 GIT binary patch literal 5707 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 literal 5663 zcmZ`*WmMD;u>DcGh#=ia^G8y;1Xgl^C8S$Amyqrd1eKPKB}75GVToN(=@g_xS|pcV zYT@y|zH{E0Gjl)8mzgE0vwe;xGTK9)Pb`Ew71o)8mn z03f3HU&jG*@@N6zk*2evqK=M}hmVK1lZPjZnxZ0$rG^oYPn^M z{S!ll*~7X_SR}y4UJ2?aHTg{X39ybPB?tGsd;iFgl8P)3V$l6|>JbF~eyxxj;rR07 zd($`rbIAkd#nPtGAoTwJ^~`n0R^HalXyDkB2r_c6l)s-{04d#fFQjLgle8h-1IP$m zD#!{x3+dmXAC3e)0C0#G7!c-DD}RGi;{o6To>KxGZMTC>A z3-k-<_frD>v_P$1gWV$_4FF()Aqs3jIWe$zswPJO%$B7t(g3rc8OuOG0uGSPt;&H5 zZU?LkB6az2yM6$Lm0&gj{H|)82$N=ERon<90pOQtocsiA1w>>k@C^ejlDL54Q;HEh z7ARif^NG%tve%yP5D*-oYbbprQ)5De5|RFk-v9V;WsP<12dqxPn&ug)1K|c+US=*k z1!M~kI{Fv@=r6~=-%83SZ~fg^{p+v=L!b71zI8qHV3T7#TE6Xw$HfOowZ_o%uQxZR z@jUx*YJEFh%glgzL%?bI(n4f`u+a3;ub|7gK*<~M)BGZx{ufM)kBEr&Icj2R4kJkKK8V$4;1OQ5fkvz38A3pw0 zS=mLB_noPuiw4*FffD#JN7oBdg$ElEjE{}_(gsxj19@f+tJdn0)p$cQj1TIk1rY^mS08##l> zFS`S5r0bH6RVuj-Sf8@yb6WmKLh(8k!a*|dX+!G~D`&E>8j+eSWC6neMemE;1gUc# zlxsKHZQ#!as6L{SB{QWZ`AM?&r|W^A8!eR5J@40`gr7Ndzoe0?i`mO>;(sj=R>&?a ze>GB;KM5*-FI`}&=2qyZBd8Z!Mj`5(!#R>mtvK|Bzj*3bjZx+( zugnS8e-F2}wxdq{9}~wANA*E$xanN!g6T?WTj&I{p(O;rGqd~kpU((0WIJX($?`BT z<~ipHp-LGfPnS+NOb<)nD%UsgHjtkREGN>hFnCg7X&73fV$h(oUPd@cT`^V0WYAtF zUOlSoubZSZ_Ud&p>NWQ5l`V07%sZ9B7)Y_cZA&j*0xNZ|u>Fy-!nBtm-Y%bOmZpta z{pB9ikKmfYPcRs&r|4boQ0b830RQ`D1c#)zZskyFE>C@wb(DBCm>-W{p1*F|rOKfy ztV&`&XdX3hv+uP}y}vt;_Vt8=;e7BjX*X$%FJYT_+pD&BZ416*J958mcLTQx&j!y( zwwK0L&)iOn&uDhg)97(#iRYpq@nkxfkfiP5aI)<`*DPnm_+j+wH?kq8wv=wC;&HX& z{}5aUv5xCv0W@+Bl^%>Xm7;&_7hPXi+c*m^eChtuvw?axlIEJ@&^F%q+h=&VpKq~p zwsK%EQEDpBHQyRF*RgPu@b0T}UXOa5cwAq`d`8F+L55}qrZUS=&M?sM%y6bsZQ6X7 zZ`W0bWI(Mk~TUBmVw_mQ?GUXa&(zA(YXL|1QLVGuRkM?r*9_&k zwk(Tc51S6l4tsc$e=T!0giX5WTn#*?KGGtv!ugJ~iGz%!k8Hqm#bd_L#{c?Ij39xa z{ej?PIVy$6gv2JyUa1~kG{+2=wjzs;d^zJ(gCIDSDZ|zCVJ_&?X|lwaG0-w;m`BMa zbbGiN^nOJZ_8!6POqWe_8A|z#N4Q*I=T)Pg&l?{M-*n}M$+aUg@hGV*zEx(yrP<5R zvC;*m3$xwJMMNOV5s?A07s^MO;hx@Ws(KdgJ>ZozUy@-}kxGkk2THy1y* z()`^X9m@BAVIpRd93uHHi#)Slelv_l&=Ly*a}I*8haSww)z(F$9qayvD9oF0w8fRKf5n_YnO;Y8?=(@=c| zR%gvv*WlPCaPc@%H)`VRS4G~pMxyCuX#+#<)u*Pdwp7;Xb_Qsd%qcU&a2}fU*Oi`? z->NTaRS@)g`5St&CmZ)ZyDU*h3tOWb+5#jbk?XNU0zQ8ia8{%VmM0JWO(hS z{>P^%$mJ|?q;X_$1W(LbY~O6SxpLvSNWAzw2p(=RWQeV*XhF?!%};kO`3IknL@`mx z{6VMfbu{q?7`Y;qL(kkN4&E*$(c3Vzb^Z-oLa6#{_v9x9e+_)R)mWRzbB=axOX+<2S1UTRmG57&~H zoy=Yg#6WMdT`gW&ARQIQ^5toK4xlZsF#{)mwvsFkJ3LR>Fg6REEgDs_)v~H#p4e4L zjhV-;J!WX%=tZ^9sphWCIQn<^l}p!@_sqqNfJH$d65YGU(BjUu#E9T*JG<~Z->30^ zbO2qn2ucd5xk1ficOG6n*$HpFt+VfPTe-06vKsqo@&rvn7@L2acK17WbwYJmb&6eu zJs}Cs%*;Sck36;;O@tch>1SA=A0-H zxmTMkwh&!S00`m)fQTpnxV*c^Z2<6n4gfn=03e+O05l$-UiYZnt5K+$(o6k-`Muo0 zcym>FU%0_pH42@7ux-1Sz5P>)l9j9n94!%D$j3VkQNvGRvkoMVn+0?ce(da&q$%L8 zpoTp4=XU9KU+tUf5sKZM9OT9dxZlrxw3GT|WkWHiVoTU7q|w9h_}k2>RB2dWOBh;=T%k+Loz^cP7s&cQHe04Sf3?2Uc{|uFi_q7&Y2h>5E;_jAH4oWN z*|)r?3&mKN5Ygr~KU_?_J@Y>L8p~TX>*3W?*;s7Ol0Gab+Fn#lovzHGgPdF6lSi)G zL^yLVH+_Q=>wUEj-%sE@TUwrf1xP~1p7_iN_cAh+sDxHG1s_+;wKCzchDeCAO&#o-@o}`asDR~{uPgu1&}n#Oa=LFsLvp3f`C>Vt~|jK zy_%nl{Zg&~$MZF%AA1=UPk~<8^!g4H@3cdr`6qHkzF~rSpo=V%Q{$Dr?VYlliu04v z%=&RRf@F2de7c>);typLsxv{6>P2a7CpLZDX$>arZUIc2_Ku zUlbW`031ZK?1SN6t^_0fyGvg`-+!y|wIj(a0BaG-bmnF! z-?&Ny8zS6sLm&VVOE>O+ox*~U^9i^5Cev4Mr=}OVv(#jGI%h6)ozpvIw=QeWg5yL% zxc;dSYTByPsn;~w8I3%nVM7fPj~q;T4;*eQEH((##3K+F+ELsa=X*VuO?{$UoJERCFv1zCRtLIenGy2;i*IhzdLb#!lN%sklL-`-+F z?JxllW2nPY*Y~!;oIPgyr6C68E{%9$}}MS`_bfXO`Ru~*8xi-vjX-H zvjoT^#5dq8?}IJ&Wlp}ze&Elo>fpvkve9{Y{0o(4l0UkcbJe=OGP1WBh}U=wuzoO( zCb3vXz{I}y=8r136RhGZj7?Wab`-)4x%6(E35ET$*S>Gr{7Hy?1 zPvuKMN4}VU7FTXrm>eeq5bN>rBwlp`PgxV`{`=85$()C5uFqLw0HxJzMi4{*__${J zMO_0Q;^bTGu%N6*_-eEle8n4*dr{LGd=cI^nYaDe)$!S|w^k}Q2j^)sa|wa)rOWr7 z=U@&U{>sTuswbr)?Sjc9{E5BTD&WCFGRb!kCS_jD{BTS9)Yijf$eoGejH$BRliS>kQVwr#VP zPs^4Xc>MxrsW#M9V*lD85LOCp=F^GKJpn>%Q;Y^>4==VlYTCO|4^&7;9(e5&vsb23+jj1) z4F{o&?1`kXX!p1QbG-x^0H9^JkC(#5i6HC4TWS(z9%5Q}!C`+cIJOr-(fMiVq%-|BreT|=+0PWgXb&y5S$ zG_jI1l%yt}bT4l#k^g0eq2yHHjK&w{?`d3k@CQ?v1K)MT#dYWTTR+A7RoqtH(&|aO_;V>9LbLXPn3YBbp>+MnYOoTceweya=B)lEz5H zLp=NDAK0Im^8*inYho^qYR#Qdzn_6Db?UQTs4j<|%h}JQ5#? z5{Fs+B?@B0C()s2L3QFMo?LZZrBRzLX=X>-xfw1_^{nkMY^?6lVgoW|%aOd~y;V$f zSC2PJkfFe5A(&8sdo{0Co%f9>o#kz*CRzHQ8F$tEB>cewUnj)^>+%O%(dyCa!bQiP zd$9D}qa>x9CI;OPHw~G}AbY<}mG;j)*X33HunLBdiRVoznp0xEgd+S?KC>~mPK80W zQ^foF{<7rqIFN9hCB? zZ{1Q3@oG>#AA8vR@Mza{MS#=Uc_yV~`NUvJ{jza zT|v*pR%1$2TRUMF0e`DV+%8O#ii1Jz8+U5lkts*sd)3SKz%c(j|OkN$*b3z1o8lke_ zZzLZqleC$I#|o*|>1;QvIPMtF8WlW@z%EFY@*W$g1UVFe01tVC?CaWvKX+N~&SMFh w3o}1aSIuJtnzw?rKNs-3{y)=#g);%#4FR;juZ0`#H8`NAtff?~VDDcGh#=ia^G8y;1Xgl^C8S$Amyqrd1eKPKB}75GVToN(=@g_xS|pcV zYT@y|zH{E0Gjl)8mzgE0vwe;xGTK9)Pb`Ew71o)8mn z03f3HU&jG*@@N6zk*2evqK=M}hmVK1lZPjZnxZ0$rG^oYPn^M z{S!ll*~7X_SR}y4UJ2?aHTg{X39ybPB?tGsd;iFgl8P)3V$l6|>JbF~eyxxj;rR07 zd($`rbIAkd#nPtGAoTwJ^~`n0R^HalXyDkB2r_c6l)s-{04d#fFQjLgle8h-1IP$m zD#!{x3+dmXAC3e)0C0#G7!c-DD}RGi;{o6To>KxGZMTC>A z3-k-<_frD>v_P$1gWV$_4FF()Aqs3jIWe$zswPJO%$B7t(g3rc8OuOG0uGSPt;&H5 zZU?LkB6az2yM6$Lm0&gj{H|)82$N=ERon<90pOQtocsiA1w>>k@C^ejlDL54Q;HEh z7ARif^NG%tve%yP5D*-oYbbprQ)5De5|RFk-v9V;WsP<12dqxPn&ug)1K|c+US=*k z1!M~kI{Fv@=r6~=-%83SZ~fg^{p+v=L!b71zI8qHV3T7#TE6Xw$HfOowZ_o%uQxZR z@jUx*YJEFh%glgzL%?bI(n4f`u+a3;ub|7gK*<~M)BGZx{ufM)kBEr&Icj2R4kJkKK8V$4;1OQ5fkvz38A3pw0 zS=mLB_noPuiw4*FffD#JN7oBdg$ElEjE{}_(gsxj19@f+tJdn0)p$cQj1TIk1rY^mS08##l> zFS`S5r0bH6RVuj-Sf8@yb6WmKLh(8k!a*|dX+!G~D`&E>8j+eSWC6neMemE;1gUc# zlxsKHZQ#!as6L{SB{QWZ`AM?&r|W^A8!eR5J@40`gr7Ndzoe0?i`mO>;(sj=R>&?a ze>GB;KM5*-FI`}&=2qyZBd8Z!Mj`5(!#R>mtvK|Bzj*3bjZx+( zugnS8e-F2}wxdq{9}~wANA*E$xanN!g6T?WTj&I{p(O;rGqd~kpU((0WIJX($?`BT z<~ipHp-LGfPnS+NOb<)nD%UsgHjtkREGN>hFnCg7X&73fV$h(oUPd@cT`^V0WYAtF zUOlSoubZSZ_Ud&p>NWQ5l`V07%sZ9B7)Y_cZA&j*0xNZ|u>Fy-!nBtm-Y%bOmZpta z{pB9ikKmfYPcRs&r|4boQ0b830RQ`D1c#)zZskyFE>C@wb(DBCm>-W{p1*F|rOKfy ztV&`&XdX3hv+uP}y}vt;_Vt8=;e7BjX*X$%FJYT_+pD&BZ416*J958mcLTQx&j!y( zwwK0L&)iOn&uDhg)97(#iRYpq@nkxfkfiP5aI)<`*DPnm_+j+wH?kq8wv=wC;&HX& z{}5aUv5xCv0W@+Bl^%>Xm7;&_7hPXi+c*m^eChtuvw?axlIEJ@&^F%q+h=&VpKq~p zwsK%EQEDpBHQyRF*RgPu@b0T}UXOa5cwAq`d`8F+L55}qrZUS=&M?sM%y6bsZQ6X7 zZ`W0bWI(Mk~TUBmVw_mQ?GUXa&(zA(YXL|1QLVGuRkM?r*9_&k zwk(Tc51S6l4tsc$e=T!0giX5WTn#*?KGGtv!ugJ~iGz%!k8Hqm#bd_L#{c?Ij39xa z{ej?PIVy$6gv2JyUa1~kG{+2=wjzs;d^zJ(gCIDSDZ|zCVJ_&?X|lwaG0-w;m`BMa zbbGiN^nOJZ_8!6POqWe_8A|z#N4Q*I=T)Pg&l?{M-*n}M$+aUg@hGV*zEx(yrP<5R zvC;*m3$xwJMMNOV5s?A07s^MO;hx@Ws(KdgJ>ZozUy@-}kxGkk2THy1y* z()`^X9m@BAVIpRd93uHHi#)Slelv_l&=Ly*a}I*8haSww)z(F$9qayvD9oF0w8fRKf5n_YnO;Y8?=(@=c| zR%gvv*WlPCaPc@%H)`VRS4G~pMxyCuX#+#<)u*Pdwp7;Xb_Qsd%qcU&a2}fU*Oi`? z->NTaRS@)g`5St&CmZ)ZyDU*h3tOWb+5#jbk?XNU0zQ8ia8{%VmM0JWO(hS z{>P^%$mJ|?q;X_$1W(LbY~O6SxpLvSNWAzw2p(=RWQeV*XhF?!%};kO`3IknL@`mx z{6VMfbu{q?7`Y;qL(kkN4&E*$(c3Vzb^Z-oLa6#{_v9x9e+_)R)mWRzbB=axOX+<2S1UTRmG57&~H zoy=Yg#6WMdT`gW&ARQIQ^5toK4xlZsF#{)mwvsFkJ3LR>Fg6REEgDs_)v~H#p4e4L zjhV-;J!WX%=tZ^9sphWCIQn<^l}p!@_sqqNfJH$d65YGU(BjUu#E9T*JG<~Z->30^ zbO2qn2ucd5xk1ficOG6n*$HpFt+VfPTe-06vKsqo@&rvn7@L2acK17WbwYJmb&6eu zJs}Cs%*;Sck36;;O@tch>1SA=A0-H zxmTMkwh&!S00`m)fQTpnxV*c^Z2<6n4gfn=03e+O05l$-UiYZnt5K+$(o6k-`Muo0 zcym>FU%0_pH42@7ux-1Sz5P>)l9j9n94!%D$j3VkQNvGRvkoMVn+0?ce(da&q$%L8 zpoTp4=XU9KU+tUf5sKZM9OT9dxZlrxw3GT|WkWHiVoTU7q|w9h_}k2>RB2dWOBh;=T%k+Loz^cP7s&cQHe04Sf3?2Uc{|uFi_q7&Y2h>5E;_jAH4oWN z*|)r?3&mKN5Ygr~KU_?_J@Y>L8p~TX>*3W?*;s7Ol0Gab+Fn#lovzHGgPdF6lSi)G zL^yLVH+_Q=>wUEj-%sE@TUwrf1xP~1p7_iN_cAh+sDxHG1s_+;wKCzchDeCAO&#o-@o}`asDR~{uPgu1&}n#Oa=LFsLvp3f`C>Vt~|jK zy_%nl{Zg&~$MZF%AA1=UPk~<8^!g4H@3cdr`6qHkzF~rSpo=V%Q{$Dr?VYlliu04v z%=&RRf@F2de7c>);typLsxv{6>P2a7CpLZDX$>arZUIc2_Ku zUlbW`031ZK?1SN6t^_0fyGvg`-+!y|wIj(a0BaG-bmnF! z-?&Ny8zS6sLm&VVOE>O+ox*~U^9i^5Cev4Mr=}OVv(#jGI%h6)ozpvIw=QeWg5yL% zxc;dSYTByPsn;~w8I3%nVM7fPj~q;T4;*eQEH((##3K+F+ELsa=X*VuO?{$UoJERCFv1zCRtLIenGy2;i*IhzdLb#!lN%sklL-`-+F z?JxllW2nPY*Y~!;oIPgyr6C68E{%9$}}MS`_bfXO`Ru~*8xi-vjX-H zvjoT^#5dq8?}IJ&Wlp}ze&Elo>fpvkve9{Y{0o(4l0UkcbJe=OGP1WBh}U=wuzoO( zCb3vXz{I}y=8r136RhGZj7?Wab`-)4x%6(E35ET$*S>Gr{7Hy?1 zPvuKMN4}VU7FTXrm>eeq5bN>rBwlp`PgxV`{`=85$()C5uFqLw0HxJzMi4{*__${J zMO_0Q;^bTGu%N6*_-eEle8n4*dr{LGd=cI^nYaDe)$!S|w^k}Q2j^)sa|wa)rOWr7 z=U@&U{>sTuswbr)?Sjc9{E5BTD&WCFGRb!kCS_jD{BTS9)Yijf$eoGejH$BRliS>kQVwr#VP zPs^4Xc>MxrsW#M9V*lD85LOCp=F^GKJpn>%Q;Y^>4==VlYTCO|4^&7;9(e5&vsb23+jj1) z4F{o&?1`kXX!p1QbG-x^0H9^JkC(#5i6HC4TWS(z9%5Q}!C`+cIJOr-(fMiVq%-|BreT|=+0PWgXb&y5S$ zG_jI1l%yt}bT4l#k^g0eq2yHHjK&w{?`d3k@CQ?v1K)MT#dYWTTR+A7RoqtH(&|aO_;V>9LbLXPn3YBbp>+MnYOoTceweya=B)lEz5H zLp=NDAK0Im^8*inYho^qYR#Qdzn_6Db?UQTs4j<|%h}JQ5#? z5{Fs+B?@B0C()s2L3QFMo?LZZrBRzLX=X>-xfw1_^{nkMY^?6lVgoW|%aOd~y;V$f zSC2PJkfFe5A(&8sdo{0Co%f9>o#kz*CRzHQ8F$tEB>cewUnj)^>+%O%(dyCa!bQiP zd$9D}qa>x9CI;OPHw~G}AbY<}mG;j)*X33HunLBdiRVoznp0xEgd+S?KC>~mPK80W zQ^foF{<7rqIFN9hCB? zZ{1Q3@oG>#AA8vR@Mza{MS#=Uc_yV~`NUvJ{jza zT|v*pR%1$2TRUMF0e`DV+%8O#ii1Jz8+U5lkts*sd)3SKz%c(j|OkN$*b3z1o8lke_ zZzLZqleC$I#|o*|>1;QvIPMtF8WlW@z%EFY@*W$g1UVFe01tVC?CaWvKX+N~&SMFh w3o}1aSIuJtnzw?rKNs-3{y)=#g);%#4FR;juZ0`#H8`NAtff?~VDDcGh#=ia^G8y;1Xgl^C8S$Amyqrd1eKPKB}75GVToN(=@g_xS|pcV zYT@y|zH{E0Gjl)8mzgE0vwe;xGTK9)Pb`Ew71o)8mn z03f3HU&jG*@@N6zk*2evqK=M}hmVK1lZPjZnxZ0$rG^oYPn^M z{S!ll*~7X_SR}y4UJ2?aHTg{X39ybPB?tGsd;iFgl8P)3V$l6|>JbF~eyxxj;rR07 zd($`rbIAkd#nPtGAoTwJ^~`n0R^HalXyDkB2r_c6l)s-{04d#fFQjLgle8h-1IP$m zD#!{x3+dmXAC3e)0C0#G7!c-DD}RGi;{o6To>KxGZMTC>A z3-k-<_frD>v_P$1gWV$_4FF()Aqs3jIWe$zswPJO%$B7t(g3rc8OuOG0uGSPt;&H5 zZU?LkB6az2yM6$Lm0&gj{H|)82$N=ERon<90pOQtocsiA1w>>k@C^ejlDL54Q;HEh z7ARif^NG%tve%yP5D*-oYbbprQ)5De5|RFk-v9V;WsP<12dqxPn&ug)1K|c+US=*k z1!M~kI{Fv@=r6~=-%83SZ~fg^{p+v=L!b71zI8qHV3T7#TE6Xw$HfOowZ_o%uQxZR z@jUx*YJEFh%glgzL%?bI(n4f`u+a3;ub|7gK*<~M)BGZx{ufM)kBEr&Icj2R4kJkKK8V$4;1OQ5fkvz38A3pw0 zS=mLB_noPuiw4*FffD#JN7oBdg$ElEjE{}_(gsxj19@f+tJdn0)p$cQj1TIk1rY^mS08##l> zFS`S5r0bH6RVuj-Sf8@yb6WmKLh(8k!a*|dX+!G~D`&E>8j+eSWC6neMemE;1gUc# zlxsKHZQ#!as6L{SB{QWZ`AM?&r|W^A8!eR5J@40`gr7Ndzoe0?i`mO>;(sj=R>&?a ze>GB;KM5*-FI`}&=2qyZBd8Z!Mj`5(!#R>mtvK|Bzj*3bjZx+( zugnS8e-F2}wxdq{9}~wANA*E$xanN!g6T?WTj&I{p(O;rGqd~kpU((0WIJX($?`BT z<~ipHp-LGfPnS+NOb<)nD%UsgHjtkREGN>hFnCg7X&73fV$h(oUPd@cT`^V0WYAtF zUOlSoubZSZ_Ud&p>NWQ5l`V07%sZ9B7)Y_cZA&j*0xNZ|u>Fy-!nBtm-Y%bOmZpta z{pB9ikKmfYPcRs&r|4boQ0b830RQ`D1c#)zZskyFE>C@wb(DBCm>-W{p1*F|rOKfy ztV&`&XdX3hv+uP}y}vt;_Vt8=;e7BjX*X$%FJYT_+pD&BZ416*J958mcLTQx&j!y( zwwK0L&)iOn&uDhg)97(#iRYpq@nkxfkfiP5aI)<`*DPnm_+j+wH?kq8wv=wC;&HX& z{}5aUv5xCv0W@+Bl^%>Xm7;&_7hPXi+c*m^eChtuvw?axlIEJ@&^F%q+h=&VpKq~p zwsK%EQEDpBHQyRF*RgPu@b0T}UXOa5cwAq`d`8F+L55}qrZUS=&M?sM%y6bsZQ6X7 zZ`W0bWI(Mk~TUBmVw_mQ?GUXa&(zA(YXL|1QLVGuRkM?r*9_&k zwk(Tc51S6l4tsc$e=T!0giX5WTn#*?KGGtv!ugJ~iGz%!k8Hqm#bd_L#{c?Ij39xa z{ej?PIVy$6gv2JyUa1~kG{+2=wjzs;d^zJ(gCIDSDZ|zCVJ_&?X|lwaG0-w;m`BMa zbbGiN^nOJZ_8!6POqWe_8A|z#N4Q*I=T)Pg&l?{M-*n}M$+aUg@hGV*zEx(yrP<5R zvC;*m3$xwJMMNOV5s?A07s^MO;hx@Ws(KdgJ>ZozUy@-}kxGkk2THy1y* z()`^X9m@BAVIpRd93uHHi#)Slelv_l&=Ly*a}I*8haSww)z(F$9qayvD9oF0w8fRKf5n_YnO;Y8?=(@=c| zR%gvv*WlPCaPc@%H)`VRS4G~pMxyCuX#+#<)u*Pdwp7;Xb_Qsd%qcU&a2}fU*Oi`? z->NTaRS@)g`5St&CmZ)ZyDU*h3tOWb+5#jbk?XNU0zQ8ia8{%VmM0JWO(hS z{>P^%$mJ|?q;X_$1W(LbY~O6SxpLvSNWAzw2p(=RWQeV*XhF?!%};kO`3IknL@`mx z{6VMfbu{q?7`Y;qL(kkN4&E*$(c3Vzb^Z-oLa6#{_v9x9e+_)R)mWRzbB=axOX+<2S1UTRmG57&~H zoy=Yg#6WMdT`gW&ARQIQ^5toK4xlZsF#{)mwvsFkJ3LR>Fg6REEgDs_)v~H#p4e4L zjhV-;J!WX%=tZ^9sphWCIQn<^l}p!@_sqqNfJH$d65YGU(BjUu#E9T*JG<~Z->30^ zbO2qn2ucd5xk1ficOG6n*$HpFt+VfPTe-06vKsqo@&rvn7@L2acK17WbwYJmb&6eu zJs}Cs%*;Sck36;;O@tch>1SA=A0-H zxmTMkwh&!S00`m)fQTpnxV*c^Z2<6n4gfn=03e+O05l$-UiYZnt5K+$(o6k-`Muo0 zcym>FU%0_pH42@7ux-1Sz5P>)l9j9n94!%D$j3VkQNvGRvkoMVn+0?ce(da&q$%L8 zpoTp4=XU9KU+tUf5sKZM9OT9dxZlrxw3GT|WkWHiVoTU7q|w9h_}k2>RB2dWOBh;=T%k+Loz^cP7s&cQHe04Sf3?2Uc{|uFi_q7&Y2h>5E;_jAH4oWN z*|)r?3&mKN5Ygr~KU_?_J@Y>L8p~TX>*3W?*;s7Ol0Gab+Fn#lovzHGgPdF6lSi)G zL^yLVH+_Q=>wUEj-%sE@TUwrf1xP~1p7_iN_cAh+sDxHG1s_+;wKCzchDeCAO&#o-@o}`asDR~{uPgu1&}n#Oa=LFsLvp3f`C>Vt~|jK zy_%nl{Zg&~$MZF%AA1=UPk~<8^!g4H@3cdr`6qHkzF~rSpo=V%Q{$Dr?VYlliu04v z%=&RRf@F2de7c>);typLsxv{6>P2a7CpLZDX$>arZUIc2_Ku zUlbW`031ZK?1SN6t^_0fyGvg`-+!y|wIj(a0BaG-bmnF! z-?&Ny8zS6sLm&VVOE>O+ox*~U^9i^5Cev4Mr=}OVv(#jGI%h6)ozpvIw=QeWg5yL% zxc;dSYTByPsn;~w8I3%nVM7fPj~q;T4;*eQEH((##3K+F+ELsa=X*VuO?{$UoJERCFv1zCRtLIenGy2;i*IhzdLb#!lN%sklL-`-+F z?JxllW2nPY*Y~!;oIPgyr6C68E{%9$}}MS`_bfXO`Ru~*8xi-vjX-H zvjoT^#5dq8?}IJ&Wlp}ze&Elo>fpvkve9{Y{0o(4l0UkcbJe=OGP1WBh}U=wuzoO( zCb3vXz{I}y=8r136RhGZj7?Wab`-)4x%6(E35ET$*S>Gr{7Hy?1 zPvuKMN4}VU7FTXrm>eeq5bN>rBwlp`PgxV`{`=85$()C5uFqLw0HxJzMi4{*__${J zMO_0Q;^bTGu%N6*_-eEle8n4*dr{LGd=cI^nYaDe)$!S|w^k}Q2j^)sa|wa)rOWr7 z=U@&U{>sTuswbr)?Sjc9{E5BTD&WCFGRb!kCS_jD{BTS9)Yijf$eoGejH$BRliS>kQVwr#VP zPs^4Xc>MxrsW#M9V*lD85LOCp=F^GKJpn>%Q;Y^>4==VlYTCO|4^&7;9(e5&vsb23+jj1) z4F{o&?1`kXX!p1QbG-x^0H9^JkC(#5i6HC4TWS(z9%5Q}!C`+cIJOr-(fMiVq%-|BreT|=+0PWgXb&y5S$ zG_jI1l%yt}bT4l#k^g0eq2yHHjK&w{?`d3k@CQ?v1K)MT#dYWTTR+A7RoqtH(&|aO_;V>9LbLXPn3YBbp>+MnYOoTceweya=B)lEz5H zLp=NDAK0Im^8*inYho^qYR#Qdzn_6Db?UQTs4j<|%h}JQ5#? z5{Fs+B?@B0C()s2L3QFMo?LZZrBRzLX=X>-xfw1_^{nkMY^?6lVgoW|%aOd~y;V$f zSC2PJkfFe5A(&8sdo{0Co%f9>o#kz*CRzHQ8F$tEB>cewUnj)^>+%O%(dyCa!bQiP zd$9D}qa>x9CI;OPHw~G}AbY<}mG;j)*X33HunLBdiRVoznp0xEgd+S?KC>~mPK80W zQ^foF{<7rqIFN9hCB? zZ{1Q3@oG>#AA8vR@Mza{MS#=Uc_yV~`NUvJ{jza zT|v*pR%1$2TRUMF0e`DV+%8O#ii1Jz8+U5lkts*sd)3SKz%c(j|OkN$*b3z1o8lke_ zZzLZqleC$I#|o*|>1;QvIPMtF8WlW@z%EFY@*W$g1UVFe01tVC?CaWvKX+N~&SMFh w3o}1aSIuJtnzw?rKNs-3{y)=#g);%#4FR;juZ0`#H8`NAtff?~VDXGdykD3OyekpKWduA(fjP3ZgnJ;X3V zTVYU{L+C&r+DfuOT0~|)%$n-LhnOef=N3AF|MB1QYewz z3|S&n_c=WHp)jMeVTP;-icvPh6G^TTA}OXb+K+c06_-on9)u{9xUnHR3N+;)J?xqe z?W{TWfOMTBGnoj~X!J2|=Tf7o`GaMs^}^KRR8IEDG*iI3|N5Wd%WWT@-4kS=Dh&c! z^b{-4tc9XUGX#O;D=D0 z#4ZS|W~yqe7*K?qu+J?r0tiF2HDw?|mWKtXQIf)gp9sifM?OZFCJKNfbJA?kAdpoQ z6D5Ba%cIIRsF_BJAO!X@@zten>9+~K^`8+0z(;Q@lah1OP76Jtb_obRuHM=uRtHpE-)TdM z$Bq<@R(A%UZ<{6j9=YdV$G?vH9Y&W>-5eWZR(x$hBjYM)X8jPhB_?PWeirR~dA zY`gc`v@pnKF!1M1#qaR+(3+o;j=ch?i!#_R9DO;b5yQnbj6dvK_BtX1Wx_q5OTNu-YXN-oXa#>`#hxei~JxE(Lv1%&feFUAOlOMd;s6@$vk#?cFc8n{$Jn5H(?s*Oc1teA)Po=l9F;VV1+N zt;ssBr))lM5Pvxf?H_&;IEZ_5AY*(7|E*X>>vr4Br@?nBtw*zwWVcs+lq?^I*@N~R$#uPd7 zVAYB>V*)9u;s>Le=D+U?4U7bTiUHY<8$3raWrx@z^o-gGwi8-i{S z8%lvV-v_JLQ9=-~PYO7b0hey^hJ0UR(6k!rINZOti=?}Feyv@>GltQNTtZ6l%yfqr z+o&rU?i~b}OLm01>vx-Oi+f5zG4(R_+En+KG`&97MS~FtA%`r&YE_Gzw4Aqg3QD~o zK{_YL=4U@a`3EqIX^*c5)g)l0;z|_3eT!)f2G?Xu9NRz5sb;ca|NkXz(m2la;$Vdc=FXfwd{4u@`A2NmYh%FZz22-O-?~=(ki2*|2y&=CX@< zG)+jfP^}-|)bM-hJyOR>nJuhZQW*Rx(@yokzXNYhTfJdkA8;$PBHN}QA_mdk6!0NS z+kFl%(Hp;U%|jX$-8$W5mq~*nUDuobXanzAbWM~R-6!}%d20(Rxqfcx?a zBRhe))f{!tR6;5gy*1fm*>QjmUvFOjoPc!uE_B&RFdJvC?a0m?fw6P`!I_0&=n) z&$XXl=ZZ0uF&RXzm(6Le^QcF$zrl{PgS-)qD_)LoFHj16S&X=ljwc&G+c%aUMe0@zu zuBfKXHS$;P&)UBZaFim6FZAxDeO3-Op@=U2vd%9iC}GM4em$>s9U(%lj1gF4FJ={z z+I*J2#%KkKZ~f)ZoI+UOos(<*v{mbPut?3sYlxDtY2?y`Ukc!sz^sYqswxw_u9tYb zv!4a&7ljE(5$2V-Cz!9$$AlzLXY^T5x>K*z!sAx!n8k>~;pNu9HyKMycvIUu;#@(0 zY_G?MBY((0oi%^9dZxZOA%(rlQ4<9zr)5$+*B(ay;Ddb7r?TbuzmKlj-Q&@6FV`mT zo0jCOtM^{hFiBxiDSll@3#2!0b_~wqR9TH`%nfy^XOZ>Tao=&>_tNlQE%=0YX|*9N z9uC5VG$mDKFl*}-`!<$9tm@Jpb~2c%z@@j3ko0n8piu^O2FhCs?}k8|`u1S1yV#bA z5V<+s${Tp}o&Wig%ooihpUvGf2`hX# z*D*Yo=kC*OntbTX&4!?77Unehp|U@s>a>yg?`S-vKJEL1qfA)70rJnHZ{}=J@BG!- z1^H0?)%yeVfC$K5u~2o&p{-^pttu0_lFs4h5L1>!#?sYW?Dz@=3douimf7&Odj@=R z2>3L!Ky;K#g7O~fthrw?HL^>Q56@_r?k#Jl==Me{(Pl1_Tb?iKfFcrm?AT8z$*z7M z-d2e&_!Dp{K1{M$(YHc$hg?4}=%h9!@d0Q&4f*CT5q!g!+}M zK=LaZxU^&nO=c+8#GbkQ);$=k+eo~F`qf~laKtCtD$Ng8&Dz!cRx%V7a0ldV=&8br zsNu6uTKlD_kGvbd{?MuDpYowB@rUO}g5T+MT zxRA}!=l+>)#Zy-A0{lsYzWY}d8+X%h@A_(RAvI1ppsg8LX_epz>drcn`8NbNaZDMJ zxH3PoUUo+e`-l}tL|q!)UIsr;4g3s(Dr1THo|uN4BGP z%G1WDIIm;JUFu2B?*dA7zo6;mEkEBaSRJuGz&0e%rk>b|K>Czr&>C0|sr(iTJycND z*88-;$onyxABV}1M@AJnI31LC?#%~p$mv49v3%#tRhMmgYJ7i&8ZrfH zAdzRg*$1v^qfOmRHo_D6`CLdTaj2JyYQ#{@wYZQ|x9am<|88GN{-Ea9qGMPV<N+7u0#QnSxPI!gc8T!;(WJj3u})wE{5vjx;RVBH<`qTA4>F2Z}3;EDnL^1lv2 z{wBp~2B;q28e&C3vmPhdu#I*tC`Wy0muP*7>LyvReSH5GvPec-%xrfO5P`GyT2r&f#_BIV0NY^Iq#?MZ#_5_=Cpv_3oS)fxckdq zEwe4ou=pK|^-C)9%)!UMV&39SD;Ly)ZD4^0N!fB6qy z-6gk}jvJ<5j6PnZ@}flz?Zh7ZIaN+mXN{3e-_?dz!6Gq**b~GdH8$($zABJK*L4HP zL@}qID%iZF&O1t~&Hduim4ba4klqXKv!hZVYyiOh_0+&={S~R0_Y|bkM5A$Q0W9J( z_w*i|+y|q(fBFNA3^CaU)zv1OltEv6@c}^gMgdKZI`MR0`xyR@H9HRr`=$AOcaEb6g^Z+`(-LhyYnFK;febAb1 z<$NG&F}`MAsqGL}v0-dc4&=3LOcdfaBVOF)4G0u9xBo>fG9S$mInhhAQGmbKtRf5b zR&Bq;H{M3q2kvyw9CM6JER+Z$d!Smep#qlvF%i4<74rcLMkkW%qc-ST6A$5L^-bFH zYH*AP)ewKxl+Zj5-HSi*(H-=1CZESSk{~&t+wGTZr1<{Wj=rq?j=3T zSxcX-a!Vqmy4o3mk1glKvpLvTfNAGr>9i%u9Tvv#XWh`2;+~_{UMc7|yI~3ovHvNM z!x?2auw?XebiCq}kb9hX6vy$=Eh^{3=6=FeI%eU=xf3&|8=+%UX2J&lKFz2!ofS3u*FsXJ{dKnP!>?lJg9@H_ZknWIUc2r`04*RO zQ~;E^^aSLQH@yO8VSD1-P9gc2sOO0abuvbiU(PC~>B8HG=qbx5R_$4Yxz`1;p>7JN z2m7}~KTYb^?;hFaNR};-&Mpn(nz~@<$L(7y3LB4Zf(WH+z9HgAb94XIEIX|e#e`ev zPJQJT zyqI4|fR$GgZq#*xu+Fw}4StVm#G}McY3e2xzaCZD!H;a|hs5I4+KA#qQ&NNenssb5 z9naodr`~_FQCh!QtNeLJVc~`MNTz0g26YNBO7pDK>v7lc=dZp6r;%Cxk3AinG@&R*RYm;1SYh`bQibJgbAs=yCs7*mhY|p3|9D<+TM!&WxWRmXC2%!Y5i_Z z6@SiI%Yw&8Ykc-A$~CsSlx96Y0_@ z%V*Bz7wG%UM0cz!&3b4rUgg-J7J(6U;PP#{$H~G((@0dD;>&XNDW#-_sj#foZd~`Q zGf&YC&7pJiUhbBp!g(ILY7_Fkbx`?c-L`cdZGm|Y!?}~GZ9TGf@gc1xIm6P=@>w5h zvoOZzX`dAR4tZoe`9tC;$6R3k3nepG&G!_~3+?D1AT=z8VodcWd26YUV?BgMUd4W< znjJDBU2B8oC2Hp}EHhYlR9J1K_)j>Ti6S$>%47=U6<@wD9$!zw2yiU7S()kC#a`cu zz(#=<92_?%#ae6b8tH+oNW!vt#&H8Cus!Rf)fZ|pJb>v$37$VG=s>aqrU;}fj`UQd zenhAZT|56&O^QftyA!eVfzfBU+`!Qyik)_W1j#nAvbCfNqc1w#`1!~sH`P7We174s z^Ac@OkuO`JDnIJ(bji0kX_g)3FEN*E(0Z--^qaYpPNafJyty>luQ zSkK)F6k8i(`j#;u=3LRC##w71=9=>UCI0+P%!iys=f zQBTi=A2hCEayvI8?OKIf*uHKym;Tt4({Kcaa=Lc;A4Bq2f$(d`JC?{DXQ#WFk#>9vr?1kn<%|71T! zm>@vK&^{f7>k|Yh<44^_Jp`>vL{C$N$CzMoJ)&`8BxqIr1~OdPt^{eSV?w9JT8#j; lgeH4-=n_<{|IZ+&fj68PH5uvjcnRt-prW85Uny%A{9oy9WX}Kq literal 5663 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

若依后台管理框架

- 一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了若依管理系统,她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。 + 一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了水运工程设计施工AR应用平台,她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。

当前版本: v{{ version }} @@ -81,13 +81,20 @@ >

- QQ群: 满937441 满887144332 - 满180251782 满104180207 满186866453 满201396349 - 满101456076 满101539465 满264312783 满167385320 - 满104748341 满160110482 满170801498 满108482800 - 满101046199 满136919097 满143961921 满174951577 - 满161281055 满138988063 满151450850 满224622315 - 满287842588 满187944233 228578329 + QQ群: 满937441 + 满887144332 满180251782 满104180207 + 满186866453 满201396349 满101456076 + 满101539465 满264312783 满167385320 + 满104748341 满160110482 满170801498 + 满108482800 满101046199 满136919097 + 满143961921 满174951577 满161281055 + 满138988063 满151450850 满224622315 + 满287842588 满187944233 + 228578329

微信:修复table中更多按钮切换主题色未生效修复问题

  • 修复某些特性的环境生成代码变乱码TXT文件问题
  • 修复代码生成图片/文件/单选时选择必填无法校验问题
  • -
  • 修复某些特性的情况用户编辑对话框中角色和部门无法修改问题
  • +
  • + 修复某些特性的情况用户编辑对话框中角色和部门无法修改问题 +
  • 其他细节优化
  • @@ -392,7 +401,9 @@
  • 新增获取不带后缀文件名称方法
  • 新增获取配置文件中的属性值方法
  • 新增内容编码/解码方便插件集成使用
  • -
  • 字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)
  • +
  • + 字典类型必须以字母开头,且只能为(小写字母,数字,下滑线) +
  • 优化设置分页参数默认值
  • 优化对空字符串参数处理的过滤
  • 优化显示顺序orderNum类型为整型
  • @@ -596,8 +607,12 @@
  • BLOB下载时清除URL对象引用
  • 代码生成导入表按创建时间排序
  • 修复代码生成页面数据编辑保存之后总是跳转第一页的问题
  • -
  • 修复带safari浏览器无法格式化utc日期格式yyyy-MM-dd'T'HH:mm:ss.SSS问题
  • -
  • 多图上传组件移除多余的api地址&验证失败导致图片删除问题&无法删除相应图片修复
  • +
  • + 修复带safari浏览器无法格式化utc日期格式yyyy-MM-dd'T'HH:mm:ss.SSS问题 +
  • +
  • + 多图上传组件移除多余的api地址&验证失败导致图片删除问题&无法删除相应图片修复 +
  • 其他细节优化
  • @@ -642,7 +657,9 @@
      -
    1. 新增菜单导航显示风格TopNav(false为左侧导航菜单,true为顶部导航菜单)
    2. +
    3. + 新增菜单导航显示风格TopNav(false为左侧导航菜单,true为顶部导航菜单) +
    4. 布局设置支持保存&重置配置
    5. 修复树表数据显示不全&加载慢问题
    6. 新增IE浏览器版本过低提示页面
    7. @@ -661,7 +678,9 @@
    8. 升级druid到最新版本v1.2.6
    9. 升级mybatis到最新版3.5.6 阻止远程代码执行漏洞
    10. 升级oshi到最新版本v5.6.0
    11. -
    12. velocity剔除commons-collections版本,防止3.2.1版本的反序列化漏洞
    13. +
    14. + velocity剔除commons-collections版本,防止3.2.1版本的反序列化漏洞 +
    15. 数据监控页默认账户密码防止越权访问
    16. 修复firefox下表单构建拖拽会新打卡一个选项卡
    17. 修正后端导入表权限标识
    18. @@ -1038,11 +1057,7 @@ 捐赠支持
      - donate + donate 你可以请作者喝杯咖啡表示鼓励 @@ -1059,15 +1074,15 @@ export default { data() { return { // 版本号 - version: "3.9.0" - } + version: "3.9.0", + }; }, methods: { goTarget(href) { - window.open(href, "_blank") - } - } -} + window.open(href, "_blank"); + }, + }, +}; - diff --git a/vue.config.js b/vue.config.js index 40e140d..80e0cfa 100644 --- a/vue.config.js +++ b/vue.config.js @@ -2,14 +2,14 @@ const path = require('path') function resolve(dir) { - return path.join(__dirname, dir) + return path.join(__dirname, dir) } const CompressionPlugin = require('compression-webpack-plugin') -const name = process.env.VUE_APP_TITLE || '若依管理系统' // 网页标题 +const name = process.env.VUE_APP_TITLE || '水运工程设计施工AR应用平台' // 网页标题 -const baseUrl = 'http://localhost:8080' // 后端接口 +const baseUrl = 'http://192.168.0.60:58080' // 后端接口 const port = process.env.port || process.env.npm_config_port || 80 // 端口 @@ -17,120 +17,119 @@ const port = process.env.port || process.env.npm_config_port || 80 // 端口 //官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions // 这里只列一部分,具体配置参考文档 module.exports = { - // 部署生产环境和开发环境下的URL。 - // 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上 - // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。 - publicPath: process.env.NODE_ENV === "production" ? "/" : "/", - // 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist) - outputDir: 'dist', - // 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下) - assetsDir: 'static', - // 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。 - productionSourceMap: false, - transpileDependencies: ['quill'], - // webpack-dev-server 相关配置 - devServer: { - host: '0.0.0.0', - port: port, - open: true, - proxy: { - // detail: https://cli.vuejs.org/config/#devserver-proxy - [process.env.VUE_APP_BASE_API]: { - target: baseUrl, - changeOrigin: true, - pathRewrite: { - ['^' + process.env.VUE_APP_BASE_API]: '' - } - }, - // springdoc proxy - '^/v3/api-docs/(.*)': { - target: baseUrl, - changeOrigin: true - } + // 部署生产环境和开发环境下的URL。 + // 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上 + // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。 + publicPath: process.env.NODE_ENV === 'production' ? '/' : '/', + // 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist) + outputDir: 'dist', + // 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下) + assetsDir: 'static', + // 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。 + productionSourceMap: false, + transpileDependencies: ['quill'], + // webpack-dev-server 相关配置 + devServer: { + host: '0.0.0.0', + port: port, + open: true, + proxy: { + // detail: https://cli.vuejs.org/config/#devserver-proxy + [process.env.VUE_APP_BASE_API]: { + target: baseUrl, + changeOrigin: true, + pathRewrite: { + ['^' + process.env.VUE_APP_BASE_API]: '', + }, + }, + // springdoc proxy + '^/v3/api-docs/(.*)': { + target: baseUrl, + changeOrigin: true, + }, + }, + disableHostCheck: true, }, - disableHostCheck: true - }, - css: { - loaderOptions: { - sass: { - sassOptions: { outputStyle: "expanded" } - } - } - }, - configureWebpack: { - name: name, - resolve: { - alias: { - '@': resolve('src') - } + css: { + loaderOptions: { + sass: { + sassOptions: { outputStyle: 'expanded' }, + }, + }, }, - plugins: [ - // http://doc.ruoyi.vip/ruoyi-vue/other/faq.html#使用gzip解压缩静态文件 - new CompressionPlugin({ - cache: false, // 不启用文件缓存 - test: /\.(js|css|html|jpe?g|png|gif|svg)?$/i, // 压缩文件格式 - filename: '[path][base].gz[query]', // 压缩后的文件名 - algorithm: 'gzip', // 使用gzip压缩 - minRatio: 0.8, // 压缩比例,小于 80% 的文件不会被压缩 - deleteOriginalAssets: false // 压缩后删除原文件 - }) - ], - }, - chainWebpack(config) { - config.plugins.delete('preload') // TODO: need test - config.plugins.delete('prefetch') // TODO: need test + configureWebpack: { + name: name, + resolve: { + alias: { + '@': resolve('src'), + }, + }, + plugins: [ + // http://doc.ruoyi.vip/ruoyi-vue/other/faq.html#使用gzip解压缩静态文件 + new CompressionPlugin({ + cache: false, // 不启用文件缓存 + test: /\.(js|css|html|jpe?g|png|gif|svg)?$/i, // 压缩文件格式 + filename: '[path][base].gz[query]', // 压缩后的文件名 + algorithm: 'gzip', // 使用gzip压缩 + minRatio: 0.8, // 压缩比例,小于 80% 的文件不会被压缩 + deleteOriginalAssets: false, // 压缩后删除原文件 + }), + ], + }, + chainWebpack(config) { + config.plugins.delete('preload') // TODO: need test + config.plugins.delete('prefetch') // TODO: need test - // set svg-sprite-loader - config.module - .rule('svg') - .exclude.add(resolve('src/assets/icons')) - .end() - config.module - .rule('icons') - .test(/\.svg$/) - .include.add(resolve('src/assets/icons')) - .end() - .use('svg-sprite-loader') - .loader('svg-sprite-loader') - .options({ - symbolId: 'icon-[name]' - }) - .end() - - config.when(process.env.NODE_ENV !== 'development', config => { - config - .plugin('ScriptExtHtmlWebpackPlugin') - .after('html') - .use('script-ext-html-webpack-plugin', [{ - // `runtime` must same as runtimeChunk name. default is `runtime` - inline: /runtime\..*\.js$/ - }]) + // set svg-sprite-loader + config.module.rule('svg').exclude.add(resolve('src/assets/icons')).end() + config.module + .rule('icons') + .test(/\.svg$/) + .include.add(resolve('src/assets/icons')) + .end() + .use('svg-sprite-loader') + .loader('svg-sprite-loader') + .options({ + symbolId: 'icon-[name]', + }) .end() - config.optimization.splitChunks({ - chunks: 'all', - cacheGroups: { - libs: { - name: 'chunk-libs', - test: /[\\/]node_modules[\\/]/, - priority: 10, - chunks: 'initial' // only package third parties that are initially dependent - }, - elementUI: { - name: 'chunk-elementUI', // split elementUI into a single package - test: /[\\/]node_modules[\\/]_?element-ui(.*)/, // in order to adapt to cnpm - priority: 20 // the weight needs to be larger than libs and app or it will be packaged into libs or app - }, - commons: { - name: 'chunk-commons', - test: resolve('src/components'), // can customize your rules - minChunks: 3, // minimum common number - priority: 5, - reuseExistingChunk: true - } - } - }) - config.optimization.runtimeChunk('single') - }) - } + config.when(process.env.NODE_ENV !== 'development', (config) => { + config + .plugin('ScriptExtHtmlWebpackPlugin') + .after('html') + .use('script-ext-html-webpack-plugin', [ + { + // `runtime` must same as runtimeChunk name. default is `runtime` + inline: /runtime\..*\.js$/, + }, + ]) + .end() + + config.optimization.splitChunks({ + chunks: 'all', + cacheGroups: { + libs: { + name: 'chunk-libs', + test: /[\\/]node_modules[\\/]/, + priority: 10, + chunks: 'initial', // only package third parties that are initially dependent + }, + elementUI: { + name: 'chunk-elementUI', // split elementUI into a single package + test: /[\\/]node_modules[\\/]_?element-ui(.*)/, // in order to adapt to cnpm + priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app + }, + commons: { + name: 'chunk-commons', + test: resolve('src/components'), // can customize your rules + minChunks: 3, // minimum common number + priority: 5, + reuseExistingChunk: true, + }, + }, + }) + config.optimization.runtimeChunk('single') + }) + }, }