From 9f40803009045ba5e7c360a51010fb8a54a22a25 Mon Sep 17 00:00:00 2001 From: zyl <731870902@qq.com> Date: Wed, 3 Sep 2025 15:49:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A6=E4=BE=A7=E4=BA=8C=E7=BA=A7=E8=8F=9C?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + .vscode/settings.json | 4 +- package-lock.json | 6 + src/renderer/index.html | 3 +- src/renderer/src/I18n/zh-CN.ts | 65 +++++++ src/renderer/src/api/login/index.ts | 8 +- src/renderer/src/api/tree/index.ts | 11 +- .../src/assets/images/second/MeasureAngle.png | Bin 0 -> 613 bytes .../assets/images/second/MeasureAzimuth.png | Bin 0 -> 596 bytes .../images/second/annotationAggregation.png | Bin 0 -> 892 bytes .../src/assets/images/second/areaMeasure.png | Bin 0 -> 400 bytes .../src/assets/images/second/circleKen.png | Bin 0 -> 2439 bytes .../src/assets/images/second/clear.png | Bin 0 -> 844 bytes .../assets/images/second/clearGraffiti.png | Bin 0 -> 1304 bytes .../images/second/clearTilesetClipping.png | Bin 0 -> 1430 bytes .../src/assets/images/second/contour.png | Bin 0 -> 951 bytes .../src/assets/images/second/coorLocation.png | Bin 0 -> 1028 bytes .../src/assets/images/second/coorMeasure.png | Bin 0 -> 811 bytes .../src/assets/images/second/cutFill.png | Bin 0 -> 788 bytes .../images/second/diffusedLightWave.png | Bin 0 -> 934 bytes .../assets/images/second/distanceMeasure.png | Bin 0 -> 872 bytes .../assets/images/second/electronicFence.png | Bin 0 -> 629 bytes .../src/assets/images/second/explosion.png | Bin 0 -> 937 bytes .../src/assets/images/second/fire.png | Bin 0 -> 801 bytes .../src/assets/images/second/fountain.png | Bin 0 -> 644 bytes .../src/assets/images/second/gdbImport.png | Bin 0 -> 704 bytes .../assets/images/second/globalContour.png | Bin 0 -> 1246 bytes .../src/assets/images/second/graffiti.png | Bin 0 -> 597 bytes .../assets/images/second/heightMeasure.png | Bin 0 -> 567 bytes .../images/second/inundationAnalysis.png | Bin 0 -> 626 bytes .../src/assets/images/second/kenAnalysis.png | Bin 0 -> 920 bytes .../images/second/lopeDistanceMeasures.png | Bin 0 -> 620 bytes .../assets/images/second/mouseLocation.png | Bin 0 -> 710 bytes .../assets/images/second/multilateralBody.png | Bin 0 -> 681 bytes .../src/assets/images/second/nightVision.png | Bin 0 -> 796 bytes .../src/assets/images/second/path.png | Bin 0 -> 534 bytes .../src/assets/images/second/pressModel.png | Bin 0 -> 499 bytes .../assets/images/second/profileAnalysis.png | Bin 0 -> 749 bytes .../src/assets/images/second/projConvert.png | Bin 0 -> 911 bytes .../assets/images/second/projectionArea.png | Bin 0 -> 712 bytes .../images/second/projectionConvert.png | Bin 0 -> 1244 bytes .../second/projectionDistanceMeasure.png | Bin 0 -> 668 bytes .../assets/images/second/radarLightWave.png | Bin 0 -> 1501 bytes .../src/assets/images/second/routePlan.png | Bin 0 -> 773 bytes .../assets/images/second/scanStereoscopic.png | Bin 0 -> 900 bytes .../assets/images/second/sightAnalysis.png | Bin 0 -> 686 bytes .../assets/images/second/slopeDirection.png | Bin 0 -> 815 bytes .../src/assets/images/second/smoke.png | Bin 0 -> 581 bytes .../src/assets/images/second/terrainDig.png | Bin 0 -> 696 bytes .../assets/images/second/tilesetClipping.png | Bin 0 -> 754 bytes .../assets/images/second/trajectoryMotion.png | Bin 0 -> 727 bytes .../assets/images/second/triangleMeasure.png | Bin 0 -> 546 bytes .../src/assets/images/second/waterSurface.png | Bin 0 -> 673 bytes src/renderer/src/assets/images/secondBj.png | Bin 0 -> 11744 bytes src/renderer/src/axios/index.ts | 22 ++- src/renderer/src/main.ts | 5 +- src/renderer/src/router/index.ts | 11 ++ .../headers/components/setTool/setTool.vue | 39 +++-- .../components/leftSide/leftSideFirst.vue | 132 +++++++++++--- .../components/leftSide/leftSideSecond.vue | 162 ++++++++++++++++++ .../components/tree/hooks/renderTreeNode.ts | 10 ++ .../src/views/components/tree/hooks/tree.ts | 20 ++- .../views/components/tree/hooks/treeNode.ts | 54 +++++- src/renderer/src/views/home/index.vue | 1 + src/renderer/src/views/login/index.vue | 137 ++++++--------- src/renderer/src/views/login/useLogin.ts | 32 ++-- 66 files changed, 552 insertions(+), 171 deletions(-) create mode 100644 src/renderer/src/assets/images/second/MeasureAngle.png create mode 100644 src/renderer/src/assets/images/second/MeasureAzimuth.png create mode 100644 src/renderer/src/assets/images/second/annotationAggregation.png create mode 100644 src/renderer/src/assets/images/second/areaMeasure.png create mode 100644 src/renderer/src/assets/images/second/circleKen.png create mode 100644 src/renderer/src/assets/images/second/clear.png create mode 100644 src/renderer/src/assets/images/second/clearGraffiti.png create mode 100644 src/renderer/src/assets/images/second/clearTilesetClipping.png create mode 100644 src/renderer/src/assets/images/second/contour.png create mode 100644 src/renderer/src/assets/images/second/coorLocation.png create mode 100644 src/renderer/src/assets/images/second/coorMeasure.png create mode 100644 src/renderer/src/assets/images/second/cutFill.png create mode 100644 src/renderer/src/assets/images/second/diffusedLightWave.png create mode 100644 src/renderer/src/assets/images/second/distanceMeasure.png create mode 100644 src/renderer/src/assets/images/second/electronicFence.png create mode 100644 src/renderer/src/assets/images/second/explosion.png create mode 100644 src/renderer/src/assets/images/second/fire.png create mode 100644 src/renderer/src/assets/images/second/fountain.png create mode 100644 src/renderer/src/assets/images/second/gdbImport.png create mode 100644 src/renderer/src/assets/images/second/globalContour.png create mode 100644 src/renderer/src/assets/images/second/graffiti.png create mode 100644 src/renderer/src/assets/images/second/heightMeasure.png create mode 100644 src/renderer/src/assets/images/second/inundationAnalysis.png create mode 100644 src/renderer/src/assets/images/second/kenAnalysis.png create mode 100644 src/renderer/src/assets/images/second/lopeDistanceMeasures.png create mode 100644 src/renderer/src/assets/images/second/mouseLocation.png create mode 100644 src/renderer/src/assets/images/second/multilateralBody.png create mode 100644 src/renderer/src/assets/images/second/nightVision.png create mode 100644 src/renderer/src/assets/images/second/path.png create mode 100644 src/renderer/src/assets/images/second/pressModel.png create mode 100644 src/renderer/src/assets/images/second/profileAnalysis.png create mode 100644 src/renderer/src/assets/images/second/projConvert.png create mode 100644 src/renderer/src/assets/images/second/projectionArea.png create mode 100644 src/renderer/src/assets/images/second/projectionConvert.png create mode 100644 src/renderer/src/assets/images/second/projectionDistanceMeasure.png create mode 100644 src/renderer/src/assets/images/second/radarLightWave.png create mode 100644 src/renderer/src/assets/images/second/routePlan.png create mode 100644 src/renderer/src/assets/images/second/scanStereoscopic.png create mode 100644 src/renderer/src/assets/images/second/sightAnalysis.png create mode 100644 src/renderer/src/assets/images/second/slopeDirection.png create mode 100644 src/renderer/src/assets/images/second/smoke.png create mode 100644 src/renderer/src/assets/images/second/terrainDig.png create mode 100644 src/renderer/src/assets/images/second/tilesetClipping.png create mode 100644 src/renderer/src/assets/images/second/trajectoryMotion.png create mode 100644 src/renderer/src/assets/images/second/triangleMeasure.png create mode 100644 src/renderer/src/assets/images/second/waterSurface.png create mode 100644 src/renderer/src/assets/images/secondBj.png create mode 100644 src/renderer/src/views/components/leftSide/leftSideSecond.vue create mode 100644 src/renderer/src/views/components/tree/hooks/renderTreeNode.ts diff --git a/.gitignore b/.gitignore index 75ef73c..9df1358 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ node_modules dist +build out .DS_Store .eslintcache diff --git a/.vscode/settings.json b/.vscode/settings.json index 90ff31b..23c39da 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,6 @@ { "[typescript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "vscode.typescript-language-features" }, "[javascript]": { "editor.defaultFormatter": "esbenp.prettier-vscode" @@ -13,4 +13,4 @@ "src/renderer/src/assets/i18n/lang" ], "liveServer.settings.port": 5501 -} +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 59e8964..6a6dc25 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "axios": "^1.11.0", "electron-updater": "^6.3.9", "element-plus": "^2.10.4", + "js-md5": "^0.8.3", "mitt": "^3.0.1", "pinia": "^3.0.3", "pinia-plugin-persistedstate": "^4.4.1", @@ -8452,6 +8453,11 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/js-md5": { + "version": "0.8.3", + "resolved": "https://registry.npmmirror.com/js-md5/-/js-md5-0.8.3.tgz", + "integrity": "sha512-qR0HB5uP6wCuRMrWPTrkMaev7MJZwJuuw4fnwAzRgP4J4/F8RwtodOKpGp4XpqsLBFzzgqIO42efFAyz2Et6KQ==" + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", diff --git a/src/renderer/index.html b/src/renderer/index.html index ec9ba4f..6bcd376 100644 --- a/src/renderer/index.html +++ b/src/renderer/index.html @@ -5,8 +5,7 @@ Electron - + diff --git a/src/renderer/src/I18n/zh-CN.ts b/src/renderer/src/I18n/zh-CN.ts index 92aeb01..da8f44c 100644 --- a/src/renderer/src/I18n/zh-CN.ts +++ b/src/renderer/src/I18n/zh-CN.ts @@ -64,6 +64,71 @@ export default { ersanwei: '二三维', junbiao3d: '三维军标' }, + effect: { + trajectoryMotion:"轨迹运动", + electronicFence: "电子围墙", + // nightVision: '实体墙', + radarLightWave: "扩散光波", + diffusedLightWave: "雷达光波", + scanStereoscopic: "立体雷达", + multilateralBody: "多边体", + waterSurface: "水面", + fountain: '喷泉', + waterL: '水柱', + fire: "火焰", + explosion: "爆炸", + smoke: "烟雾", + nightVision: '夜视', + // nightVision: '飞线', + }, + analysis:{ + inundationAnalysis: "淹没分析", + profileAnalysis: "剖面分析", + sightAnalysis: "视线分析", + kenAnalysis: "视域分析", + circleKen: "圆形视域", + slopeDirection: "坡度坡向", + cutFill: "土方分析", + globalContour: "全局等高线", + contour: "等高线", + clear: "清除", + }, + measure:{ + projectionArea: "投影面积", + projectionDistanceMeasure: '投影距离', + areaMeasure: "贴地面积", + distanceMeasure: "贴地距离", + heightMeasure: "垂直高度", + triangleMeasure: "空间三角", + MeasureAzimuth: '方位角', + MeasureAngle: "夹角", + lopeDistanceMeasures: '坡度', + coorMeasure: "坐标", + clear: "清除测量", + + }, + tool:{ + routePlan: "路径规划", + //清除轨迹 + graffiti: "涂鸦", + // stopGraffiti: "结束涂鸦", + clearGraffiti: "清除涂鸦", + path: "飞行漫游", + coorLocation: "坐标定位", + mouseLocation: "鼠标定位", + annotationAggregation: "标注点聚合", + // 卷帘对比 + // 屏幕截图 + // 高清出图 + // 视频录制 + pressModel: "模型压平", + terrainDig: "地形开挖", + tilesetClipping: "剖切", + clearTilesetClipping: "清除剖切", + projConvert: '度分秒', + projectionConvert: '投影转换', + gdbImport: "gdb导入" + }, bottomMenu: { groundText: '贴地文字', standText: '立体文字', diff --git a/src/renderer/src/api/login/index.ts b/src/renderer/src/api/login/index.ts index 0f92e14..869cba3 100644 --- a/src/renderer/src/api/login/index.ts +++ b/src/renderer/src/api/login/index.ts @@ -4,8 +4,14 @@ export const LoginApi = { // 查询活动分页 login: async (data: any) => { return await request.post({ - url: `/api/v1/system/login`, + url: `/user/login`, data }) + }, + logout: async () => { + return await request.post({ + url: `/user/logout`, + + }) } } diff --git a/src/renderer/src/api/tree/index.ts b/src/renderer/src/api/tree/index.ts index 39dacd0..66eb7cf 100644 --- a/src/renderer/src/api/tree/index.ts +++ b/src/renderer/src/api/tree/index.ts @@ -4,9 +4,18 @@ export const TreeApi = { // 查询树的所有节点 getTreeList: async () => { return await request.get({ - url: `/yjearth4/api/v1/source/list` + url: `/source/list` + // url: `/yjearth4/api/v1/source/list` }) }, + // 新增其他资源 /source/addOtherSource + addOtherSource: async (data: any) => { + return await request.post({ + url: `/source/addOtherSource`, + data + }) + }, + //新增节点 addDirectory: async (data: any) => { return await request.post({ diff --git a/src/renderer/src/assets/images/second/MeasureAngle.png b/src/renderer/src/assets/images/second/MeasureAngle.png new file mode 100644 index 0000000000000000000000000000000000000000..b86b3d682b4c7cf6c41c487cf828867f42d283c4 GIT binary patch literal 613 zcmV-r0-F7aP)Px#1am@3R0s$N2z&@+hyVZr4@pEpRA_5#SnCe83QbJ&95Re_&Tv@8^XOMzzq18AZ!Gi@vsf$u9^w5FY7 z?E({fIH3GNK??Azon?Y6gO&ns_8f4YuR^L@w2YZy%mB*wIdGJ%3Y|1h&+TEpzw$l( zelCXp(!k_17Up@-)ZW-dJ*XKqfH&VE==4H%47zO$NAPj^MDD|2`tGb6O^YCx22}u z49Wp+3iP}GtOj&dEnsz^t4abp z016Ayt4aVnboI51;)+{GAN3i}v(&EXeihXpty%=Ht~!GR00000NkvXXu0mjfW^frw literal 0 HcmV?d00001 diff --git a/src/renderer/src/assets/images/second/MeasureAzimuth.png b/src/renderer/src/assets/images/second/MeasureAzimuth.png new file mode 100644 index 0000000000000000000000000000000000000000..3c448e0a0dc5da11567b5f4d80aa2257af73a8e2 GIT binary patch literal 596 zcmV-a0;~OrP)Px#1am@3R0s$N2z&@+hyVZq{z*hZRA_OJb5tz3ve*td`2`p&fMek4v4<8Kb1f<01>SmgM6_y#L0F^`T{Qr#~`(v z0s;}qy%5DdMsUgKMF zNw{~|CCt|VV_DsAskBTlcrxpMD};%hu)0gG?=4FDN9>W1wnf4p!4}~uK5u&&(;dU| z&PocC!f6S6_8swFVqBM`cgeNs0dx?S^XyI=iy8>0XSJ|& zlm}}|`0Enp1GXVtO~QQO`h=@Wm=9i;aCHfD2kH=RCSmRfC%m_$no5{E6B6dmeBw}Z z33G>1gtyOx8VPg9atY_hxFq4GC@1_pT*RI-33CV6A6nC=bTfv99i%bih#bPEp28C3 zw4}U{C`F8Lw|_5Que3UnaEP*E!sx6nVZM;aL+Ps)4*(8`{s7U#v{HJ%0nhx)^YrUg z2oHz*W_xSbr0mToleC+i2;1WJ#zotH_SWlysJ)y@>z2{S3{r$WAY$1YIsI71un*dN iqAk`h^}9BE$G|_Wsw#abwzVSw0000Px#1am@3R0s$N2z&@+hyVZsCP_p=RA_;6g#;jLUq9I2z zl~yV8s+%al3Tamjp%eMs`WpZMDD`BP7Xr_s`;qYI7*4zEkxFe(bahK0|K4#4mSwHi z5>G3zi;=98JCJnR&E~mRuET`|QDnzjwMCzSjbA@M($?-IeFw63kUU3k44w&+rW>1Y zSznJ>zKEW8Asg#L>p<&^HA3z|*6LCw9G9yg9aj_{@+-k5Y|DmYPC<97mu90ju<+|r zt3doLvJ}K`vTO#!#?f1loA8P|Sl8;&ZeiC(=-PNb%2{}mWx|9~%1gc;8}Xb%7(NnK zzJqls)C^jFJ<`g{yHOvTkh)hwQ<tGNc0?OKa&|LkRp0bP8MW|Cd-YA+Af8%Ee(`drTg<^iOj`lJnz4NV+r+oQ2NN z^I?f;$+g9aReA0z6}<(rVhfKyO$b+ZdayiC)-qWjKpe&3FiFH5z7Psre~dB?ujT(- zAZY@6|K40Pn_g9rn}@??XPeg%gX1}9MPXEv06uh}7>Y}XJ4t^&lv&yEEu5A|ZKe;= zMZ&G?q9rOaqN1;QcV@j35>~DwoVy$&>uJeOi+i}PcWYhI9d^sb!Bqnu<1lI%+_l9% zdDR_PedKr}GL`x();X8|kmR=aGY`o_Dyml*8BF)uQzpK-M)*k-ld1PG4P~ za^G^UwWnP!Eejk=JbxkmvOCkV3b(jp5NJQamy{Ixz2jp zmBz=-$vMXijb>DOB|SVK9oBZJ(R)Mef!ndg_W94wMb@6PXIjoaTWZc`;~y0pRvxsp zZamGdz5ht|hUpDon`IYgZ#;YOYxB~J=^K0xrn67Juv1n)+p)U5Xa}#s6;Cco2 z#W0s&Znz%iY?3v#EbD;&Y)ifDspZ*X3~m)K?uYvsaop`{|7z6pcH4!6O7%Z43whK{ p2YK?Ox$c9!?|jx0dv7=1_q_bHB;kuyFECUYJYD@<);T3K0RSBgvAh5P literal 0 HcmV?d00001 diff --git a/src/renderer/src/assets/images/second/circleKen.png b/src/renderer/src/assets/images/second/circleKen.png new file mode 100644 index 0000000000000000000000000000000000000000..eff46be60a00df282526b3f02590009ef206aba4 GIT binary patch literal 2439 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 O0000 literal 0 HcmV?d00001 diff --git a/src/renderer/src/assets/images/second/clearTilesetClipping.png b/src/renderer/src/assets/images/second/clearTilesetClipping.png new file mode 100644 index 0000000000000000000000000000000000000000..23ba88bc3cf6d395018587c04ea06e649a0a0e24 GIT binary patch literal 1430 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 IM6N<$f-$|e0ssI2 literal 0 HcmV?d00001 diff --git a/src/renderer/src/assets/images/second/distanceMeasure.png b/src/renderer/src/assets/images/second/distanceMeasure.png new file mode 100644 index 0000000000000000000000000000000000000000..a4667cd6ec8ed5126826942ae24fc4d0db3652aa GIT binary patch literal 872 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 IM6N<$g6+p%hX4Qo literal 0 HcmV?d00001 diff --git a/src/renderer/src/assets/images/second/graffiti.png b/src/renderer/src/assets/images/second/graffiti.png new file mode 100644 index 0000000000000000000000000000000000000000..3d95ff43c6d1492f0ba43a66556358e59ecd59ca GIT binary patch literal 597 zcmV-b0;>IqP)Px#1am@3R0s$N2z&@+hyVZq|4BqaRA_}ca?XNt4xF=hhf-c1cD=^CLn@~;tYYXetU_oUcGL+Sf{oql zQWPLH&>WENp;G|5h0Y1QJLvG#LtjyK10A1d6+y>g6+wp=6($QBw|n!SjaV2TQ+QS&+erTn&cP`Nr*S-X13cMvP#CsGwv2zZV76WDU2<0yA2m;+X z?^z0{K(C%1UkxLkbG!lV;Xb7n6ab||^PHzGSu25_gSFu2?6kQ$ElnzemQcm~93+g0 j$mj0|_Iuzzl56ij)M82_@6AJV00000NkvXXu0mjf$6yem literal 0 HcmV?d00001 diff --git a/src/renderer/src/assets/images/second/heightMeasure.png b/src/renderer/src/assets/images/second/heightMeasure.png new file mode 100644 index 0000000000000000000000000000000000000000..7f07e38a292f21668522921d7b48d30ec84c7e96 GIT binary patch literal 567 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 literal 0 HcmV?d00001 diff --git a/src/renderer/src/assets/images/second/multilateralBody.png b/src/renderer/src/assets/images/second/multilateralBody.png new file mode 100644 index 0000000000000000000000000000000000000000..dc39e049c66314c57cb83da856a0ff9c4842b934 GIT binary patch literal 681 zcmV;a0#^NrP)Px#1am@3R0s$N2z&@+hyVZrQ%OWYRA_B?lUvc_7S0v* zS*uNhjFm>u_X@}XnOl8XYgYsTUbVtRApr%T+5k}+03gH^tSwFBul71$GKWVM=7aMI68%r2*W#25|2hz`bh#_pSlly9RLY8o<440Qar| z+`9&F?;60p>)!#dioYXHztIo3lT4mCyhPd+yi7hZh^$17dCCE&7$o4gbUrUbGT6UX zc?JcnXIN$~&egXdSyEpfv|7$|eNT3a%D*2r1r7Alx%*c6+LA@*az4$m@!8B6wX_T6 zfRq?00Sf19(DFWmk(x7sr4Bj{bQW~yC7(X*W=0cj8)7?v7AOsT-iKE-eK@DK)0bwp zW7IhKg`jPLlR-n7GH0N3`ILs(v&__2XY)t|4L{!`a`(l+0@x}e`*;~Q{@A$?JF P00000NkvXXu0mjf?@l;N literal 0 HcmV?d00001 diff --git a/src/renderer/src/assets/images/second/nightVision.png b/src/renderer/src/assets/images/second/nightVision.png new file mode 100644 index 0000000000000000000000000000000000000000..74cd25c79e7d9e0560c6286bb7721cc1296e0a04 GIT binary patch literal 796 zcmV+%1LOROP)Px#1am@3R0s$N2z&@+hyVZr#z{m$RA_Dn+Zz7d#kj53TZR|-W%n;Q{H>RWoD~QLmSESS_U|x z?tSIzx^=AU{Z=7qD)rqQ#i=+fg(G>kNy%=qO1C0!RoE@Rj4Z7D)f<*^sqE9ZhJw*?nv)@=`?aOFfMJGG9JPG&U_XdFyYjq{2bHHY|jQRXdSSPGE8H; zA*d0y!ToEX9%3jHPA3*x?;Ye#e`%0~!(d|>G7O__cToCpD|P`HXh;yg6(GVUxS!tl zdO^a%=h)pR@UftaCE+ws>vFxt@QbSDz3FD1bGUmXC9k<25N9O~<2j$bquO3myxta1 z5^xD~cMip~BeAlS%w#X3!o;cTV3??Tmzzv(ESB+cXK~`OP&h+bR?tP=0VZ;lQ+qj` z3D+|fWvj+S&-!VdEz|x=MvQnZEsG_3ReDRxT=a~xJ~`qYNkfWIcOhWH_`Fw+Gy%1# zC6v-h=hv3-woURqorL6Zcu(5aB4r{0xpm3K^8GN~1mD2lukCZP25h9)`WGdj;Kpaz z-35lHRG=x;D-(~c36aLsD+k7oq&ZPEHx!j#j6=PU;lNrMPn>!QShY@~u0Va7C{B{L zu#d;QU1|MCX!~(TlYAb}I&lnzH^`32pRc;b2_LBwblhFbfy#_gXlj(sE0hi&eU+)L ziKmdy9sTXy?{HCm3$DKMkqV7)amw&E_^_&EX5vf}K{GOeqZQC3e;n}=X~F(IGT77? zA5~W#w}o;Lvp|isEVp6zQ04zMh1iu+&%4adTIbTZ;B<@GSPr~}L^qOib_L_V;wdG# ap!f$O6fvnJTqnW+0000Px#1am@3R0s$N2z&@+hyVZqz)3_wRA_7NTo zVgxNWo2cSFsIQ|=o99hn3F$?9d=lq^-u(MK%H$+6t-iXQP37_mpa>_XsmOc+n^p;C$I+;g9X>Q9qNe%f-%q% z7Bzl~0?l7}+;=qGj^wXu_Ekk=O?AdXdt#M!#zV_j8;=#%84oS5suxyV=lYLeGhmf< z#=wv2m-=Cwc4rH`ysF+<$is#lJ{oJNvkhLaa33rf{6DPx#1am@3R0s$N2z&@+hyVZqok>JNRA_DD5n=9#Fn2_lJ0i>-5$28vb4P@^Bf{JfVeW`9cSM*wBFvqy z6Rx*=X!n5B$O@`vK&N-bm0-ski}4kYuoWEv5hFhVpN;{DUficV{y4!#a$5qxjuR2-5 z=%wh{XIX7Ij<7vw0C9pw_bp$9A6-PVzd_txdTc5y2(KDG83TxB4&Hday2)u0?}lTv p0Px#1am@3R0s$N2z&@+hyVZrmq|oHRA_DZ zTlNQx*;JC#sx%c~wMMr0C9!1}-RUQBV!oZNbbL*b=V$LaO@Ju~ANuU#nb&O$Oo8g4 zTY8 zbxE#}w9=tgOG^URg8Cv{=-!q9u79rlpYzq52P@xi@74wY&+HM?J??E_%+GrqfR1kq zAcA`HKyekmOipD=3ss9s#}`lWWmouB3>>ShZN@xRD;>738@SEGlK336Wfv_UJh)rX z`R1X#c)C?j=kDiUbdv11VbZnDgJe65=bd86I!a+f-#j#LJLJLoxg?$SVAmux2UH5{ z=Mxpsgbl%Fko`L+y z@^rOeXGkns_k{KHygjU+t4Mq#SU+EOfYD&-z7TjsSehdM9u=16F@Z;hrMVs2!*arX zU}=7b_AsA7KUnf<+#cqG_k|_DhV5ZKaDQ0x%>dsGmi!aIcZ4O4DDZqsSkg&$OZS5% zEv5D_ALJUaq^Hmx<^x;@*4Gp#mKMJ*tUB=3VO4>z4ZG?BUmJE#En2)p5Akcm(wGwP z2(UD+06YpT-8%_95-i>S0NbxTJOHsqeum>UgykbxXAd}DP1pe7rLY~=Xg>B2_6y?w f!oL1Gf!_8DjSrZHg{qMX00000NkvXXu0mjf{L)&{ literal 0 HcmV?d00001 diff --git a/src/renderer/src/assets/images/second/projConvert.png b/src/renderer/src/assets/images/second/projConvert.png new file mode 100644 index 0000000000000000000000000000000000000000..e7cb1c44be6d258ffd2e84e0d5582a33a36af501 GIT binary patch literal 911 zcmV;A191F_P)Px#1am@3R0s$N2z&@+hyVZsIY~r8RA_URs}bx-GN?3R>GF;X6mdQJQ$t!VB-xw%d!Bvc$C|EQhJ?Rq&!O7Q)7Cy&U@n2Vr>^WEP~A@n zaH?*zDVKDe*(d_O|D=_Jz8+TvFqiJV=jc{58U{S7%Da@XxgY0IFJ)!G?b6jSgBB?( z03P-1I;K!N57Msvc*rNYHTTyg|9+~}mZzVG>7k-ZTY3N^dH(9?zm&!#Y>d~L#(m?D zO88$QtZDRg8*Zlia#}JWgi!Va>Soirr_vLP#+cWo?0sv3kD+~-Gs2<%qtr3}DwW=< zTb2`ezsR$%W7w|JSfxgHP;E?4F!o)h_4JuRweukDdTrPfW^3-0+hY2o-uIrCu&bXY zwWfOB4z54r;hF~2q@nY8Kj8Mj zmcdIBrIMCGa$b%|*Anni&C_{!h7IqCc~z%r<)-j>uc2|qP!>B;k+ z5!pdgNh64<+b2pG01`=3-$12%vzMMhc|elywcK;_?dnm0(}T*{yo-U$QvgemReUD} z94GId@|y=Kmfqh-FzG(b+c^k(*3tq`f_bRU@lK&H@p@$kfdH^&x$0O4u>VHscT$hA zd+_ae(G&X3ELV=`kSLP+G^{+rPCPx#1am@3R0s$N2z&@+hyVZra!Eu%RA_y8e)SV z*qEr6kh)>m`+^~M(uELX1lkfFZa>}vM%&i`{}R93KRz#6-(QH)Ow1U&?$IslTfsd( zefzqQ{yO0M9*%MS_-V;{cV?d4Z(@IJ53IK-_5^^>QV*O}~^Gf0V#qoDx8!@rhN|pS%h03*pz@96G!EQ_+4D2Dk4YnKD zbER7Sa}C5KH1G`K>;8A3T0aS_9cEUr`R%ZJV9`!g8!x`azq)^A!2My?4$EniUL3-& znun^1*MgNNI^e`3R?0F)(=Sz7bnEeq0t zO=C1+?~w(YZSla1*MM#M!i^kQPdx2U0iCea#Rfwe0rt+P)nFyS-ubln(TxVMcRo#B z>~6z~hjIBd8d+Vy-ft4jU}<2gjmf7|qhRT|%z*V^`K%7j_zZzL@mjDeJeMIbE*|sW zm=NAz9Ku^Pphf_Fm@=gMJ8hxulfOyEMKu?nu508eV{*9-_ u_M^SS>$NM*X<|~~o%s9?A%xihbNdHdz8iFfM#${|00007 literal 0 HcmV?d00001 diff --git a/src/renderer/src/assets/images/second/projectionConvert.png b/src/renderer/src/assets/images/second/projectionConvert.png new file mode 100644 index 0000000000000000000000000000000000000000..3ed72c5722caeb84f6b5dcaa5ebe31da0a77e919 GIT binary patch literal 1244 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 UWoqd-^8f$<07*qoM6N<$g3ek)g8%>k literal 0 HcmV?d00001 diff --git a/src/renderer/src/assets/images/second/slopeDirection.png b/src/renderer/src/assets/images/second/slopeDirection.png new file mode 100644 index 0000000000000000000000000000000000000000..22ce5ec89c6f5821eb094d23d654275e545a3485 GIT binary patch literal 815 zcmV+~1JL}5P)Px#1am@3R0s$N2z&@+hyVZr*-1n}RA_57mz3J7J20mt&d*swYO+x{|BFap$sSJYEK1rNf-I8Y^NQwBd5 zv&7n1va}vU*|NIfOn0kED==GP?^-^hT)9H(TCLb<4e9HgC|7C}b6iVEYd6SS>IO$h z9N9I!H;k#HbRT}a@v|F1@7h5uDs_EEu~BH^AlCk54cU2J(usX9j0Eb>N4Gtc$2xxQ z!fm0qEKK&teZ|uY9`5VXdTth%PN=*79?GU;_?6Hrrs?0W$<0@9Sv_=#RH^hRey_=T z0ie7lC)2vkbhCErTuPJmu`YT-vR)|>O6yLBR)kwOm%4TwX1)9Y!Q}$5O^E8eFh%HP zy!IrfCf)C}+8-I&Pb-(i_3kOU7UJ7VU8dx2MtY&65$O0RdlHelG8T`XwH!)%I?|H3 zC6tmtjS1+o787zZ(j3{S2JY39=M7|!iC9MMuYtKThGD`%geHxFzgjmsVYr1fO4w%I zHik(r5UpOC9*bKyUovpxZX=Bl=B?X$Fz5A8bnh2XeoWuG{e-w6X%tX<41LN%U3Mwb z5+HmV8#{9sApL1Md=A&>L~t%Z+WK5tuXm_+d>Uy_mq20{oo|cjhz|5>(k<&)NFQ?2 zdZ44aDrw0|7#B+iGvckdPr9uG{tJfIwMUkQ9_jY@h+~q1pHT;U7m0aHZc)Y9(7zJQ zY~;yd#{_7koMH3uUUpr=+x9o)r2DuL$xVV~>3BCxf1!H; tnD90M;yB6W@ex7@VcWi&k4V7Y;2#Uxm#VfUdA$Gt002ovPDHLkV1o6lhnoNZ literal 0 HcmV?d00001 diff --git a/src/renderer/src/assets/images/second/smoke.png b/src/renderer/src/assets/images/second/smoke.png new file mode 100644 index 0000000000000000000000000000000000000000..679d95ba3916ed2e6886a35e1a50af81fe5541ea GIT binary patch literal 581 zcmeAS@N?(olHy`uVBq!ia0vp^HXzKw1|+Ti+$;i8jKx9jP7LeL$-D$|Sc;uILpXq- zh9ji|DEHpe#W5tK@$IbKNzDp8ZHLd@%YJ#XOI_Pm@^|w#rB(q!7URmaIelRhrq^(A zIPlNe-CWFHaE|pj^PJt~mG=zhT;^Q3vbnJ!|LUXww?*GOYvrp-Hov}+f7f)KzWd%A zitGMf-dV@Z@T~O7g}JvcNa$!^zhiD268?4lnukr*yG?q9H<$V!Jl|Iue%Wb*Z(OKW zZLPs^R_)T}T(NBo1=ca|RSzTydPk`r`=I}F-B!o?_4m^+rK*=ETRjaFshwid+4}jy zvdS+XKd3Za)_dz3ApNjaV`-FWm(PvBs}Do$B@f))J+<|tYuoXC+*j?ChRio z*ts+&QFGnrk2N6%w#yeR`p#pMx8CvC&t|Us6?->N(JW8dC;oV*|Gw>?ORq=ousgEP zMsHieLU%iz6&t3>LD?c(#_rmVYEEP{6xV}hiW;(^0DaS12%Ei9Jbx7yb}&1gTe~DWM4fYOM#v literal 0 HcmV?d00001 diff --git a/src/renderer/src/assets/images/second/terrainDig.png b/src/renderer/src/assets/images/second/terrainDig.png new file mode 100644 index 0000000000000000000000000000000000000000..09660ce665871c4961f1cf505fd486a0e55986a1 GIT binary patch literal 696 zcmV;p0!RIcP)Px#1am@3R0s$N2z&@+hyVZrVo5|nRA_UW zPWnsyJa|>>k0K55p=tvFgY=1r^HhFq_hSh1!qRn)iu{b)HNQCGz?)$>Xb8H3*)&G+|# zQ<CajE@p@~cl$7q{9l<#3FoSU-8;>GZUP4~NEDPc_ZC!xO-f5d-Y;&8meImEQ}$-m|5 z&%k~O(@H+1PNjsWWFLk8BJy*4I-YnSjcExD;^=>BsamD!D=vRRv4t1;EDR>@RYfXW zJd;*mJmlZsVq;)AKhlgbSuN4Z@a=8LM&Aa6DaT76`E@Q9>~vnQm_EegJ!ro(&qE8s zx{Zf(7pS+F2<7>D0)UJDoExFvX+_e$)7pb`W@NX}uaLQ7Mx{CGkl4hqN@?5Ahhw9E zdy+|4K9A=)lW7bI-t)b5BsINdtP1wLS~9_x@Y(Tkglk0$L8-$V2wd*C)gi6^b;tO) el>QPvJN^OwP@Q~mPlxXS0000Px#1am@3R0s$N2z&@+hyVZroJmAMRA_i^0uFZ~A|8JzS(d00UB|HIc!dJ&l`0DsL z!jGmzOeK^8!Gkehy$dR=VF3V3ko*E;e6KQ#6bpEh&DADC)lZm9*QAdqER@SnZ67|O zHny6RNeMducmaS<`t1R`oX)rEc9O~3K?}z>7~>(jZMvWZ@)sckX3lG1B!mnMeI^|v zqEC8l*PMH}`^q7OaLY|lUaH|lgjZxtm&mu^7 z*fu44%=*BqAFVv>Aos7HMZ2s=sch9C?0y#GlYUuF#{b5#=P968lFqSgb~c^I$rpx0PPkrarLe*=ED&~qLf8Xd!Z_|i3jM38n+r51XpzljZ6lcd>WQ-ZrU3@wKC*Rr z_Ql)LggIn!vn%f`)<2XmU@An#H6(?N@*Z#1~@Blqb+i$a*2cDOltD#Bc{SW0VEUDFWe=2!{YX$WhO zEm^^IgiAZ6LH6{ZMg0PRo2DEh>);PmTD%-vBRh4a1yEbO2V-7{{Pbld0Dy^(oWVoc z^n9V8Dxb=g=F`GXUy1N#@p0d2eH`Hj#9PKucmn=Yiu!fz9FTsPrihO->6`G?aTC5e kZoPx#1am@3R0s$N2z&@+hyVZrfk{L`RA_XFV5-2K$Cdd zoh^}<*f<@0KK-VbDWgKK1Nb{!-0|4(;mi<=NLo%N@rIz5{imSms-7nD zKi=kra#nAdtbE_y=~}F-{o4}Y$b@w>`h$7VTl$wme3uOk$7x9q^;T+0a?i}ThTrgU z59hqoCy-8POkv)WX=8!>J1%B<;%3&vh6yPYgp^#@7Yv}6731h z1bs%H|09}#bNZGw*w=;p%+M^J)wqr~Q!IkY2>s@P4(%|MukilWVl}K-)1qnFQSq$b zTSIdKYuTr6w4T4?sAbb@`_h=GzfALng(17Hxjt!W1|1f|;mAqsWj%k^>)oA0k|v*} zQ`W2<)_q&T%;Hj>YYpj?{BF$RV#ej@HQ3+_j1vSw5ClOum49b{k-i=R${7Fv002ov JPDHLkV1m^*ZLk0U literal 0 HcmV?d00001 diff --git a/src/renderer/src/assets/images/second/triangleMeasure.png b/src/renderer/src/assets/images/second/triangleMeasure.png new file mode 100644 index 0000000000000000000000000000000000000000..da3ef385159e5a808ab69d4e6fe0e1adfb8eafc9 GIT binary patch literal 546 zcmV+-0^R+IP)Px#1am@3R0s$N2z&@+hyVZq%t=H+RA_{MGo z2p>vfX8dCV&7+7|rvQ-wkpmHd=mGVyVd);|PwWlQaj;@^8mtt33|5HFgO#B}-1n@l z3>|~{O({BsQj0zUsYK^6>d+++Rp?TL8Z-x>0?jR6Ji4ZE(dgQu#iCo*&?3>T4-Vqc ztzh4WAaoC~??(taEYM+lVlvFW1fY8tH$8epVN;_=6*VooZdNw$>-;!xLNs@V4iPTX z|77U=ZOIhm3qo`6!|6OB=zd@!Xzs#;dw|0B7o+(F=fIPr$ABkBw}YK5bUWBz>tfK{ zVVTMigU(-zE|b51H6sAs6D$JFoo&m8{lw__touOu!Xx!+W>Pf2nDYE7(Ide=e=77( zZNps{5an`S08C`R1re|;&uFVPx#1am@3R0s$N2z&@+hyVZrOG!jQRA_B(?TMt|52_QJ9c zNGeM^l9iU@t0zMN!No8`@6&7_`JfgOqb=C;YZlV&aLmC z_ZXMU<+{JNk`Xmu?K>CQ9`>}Lu2IMV6OO*IttRW|6Vui7F`1$^1&fXd7KpsC!f z%l1jvkY#gF9vLnzCBPd53)^RcbReI&B$09Eg;tS%&=E#92lj~$24CWlkvC-B9Ms02 zWhPWsMJYaSiiEJIylky>}M8EMi%pP zV6d^0oQ?CnZh|}JiS2klJy}`WS2?--sbzbKto!wXYfyNy?UfL71ek-@uq$k#C^YVQ zj-6zV9mGdrY^46GdcP^MZ4%;%?=5qh9XY`N(!djGJcq?R%@ET4=K*)((vl*qd(d~e zTxOM8X*t}sl>;kVG6A3XNIy$0tLv)8TwgzNSu!!&0?wZKnpnx6hmTn!2OZJ)9FOdgG57I|jm&@gHx$dVw^uKO#a60QI00000NkvXX Hu0mjfTfjZ9 literal 0 HcmV?d00001 diff --git a/src/renderer/src/assets/images/secondBj.png b/src/renderer/src/assets/images/secondBj.png new file mode 100644 index 0000000000000000000000000000000000000000..0b4b2f907647843d74edca4a8b125a60dc6f17ec GIT binary patch literal 11744 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 NfZj>n!lP$@`ah&ypOpXr literal 0 HcmV?d00001 diff --git a/src/renderer/src/axios/index.ts b/src/renderer/src/axios/index.ts index 2783759..27644bb 100644 --- a/src/renderer/src/axios/index.ts +++ b/src/renderer/src/axios/index.ts @@ -1,3 +1,4 @@ +import router from '@renderer/router' import axios from 'axios' import type { AxiosInstance, @@ -9,14 +10,14 @@ import type { const pendingRequests = new Map() let baseURL: any if (window && window.process && window.process.type === 'renderer') { - baseURL = localStorage.getItem('ip') || 'http://127.0.0.1:8808' + baseURL = localStorage.getItem('ip') ||'http://192.168.110.25:8848'|| 'http://127.0.0.1:8808' } else { baseURL = '' } // 创建自定义配置的axios实例 const service: AxiosInstance = axios.create({ - baseURL, + baseURL:'http://192.168.110.25:8848', timeout: 10000, headers: { 'Content-Type': 'application/json', @@ -47,9 +48,12 @@ service.interceptors.request.use( pendingRequests.set(key, controller) // 在这里添加认证token - const token = localStorage.getItem('access_token') + const token = localStorage.getItem('Authorization') +console.log("localStorage.getItem('Authorization')",token); + if (token && config.headers) { - config.headers.Authorization = `Bearer ${token}` + // Bearer + config.headers.Authorization = `${token}` } return config }, @@ -63,18 +67,24 @@ service.interceptors.response.use( (response: AxiosResponse) => { const key = getRequestKey(response.config) pendingRequests.delete(key) +console.log(response); // 统一处理HTTP状态码 if (response.status === 200) { - if (response.data.code == 0) { + if ([0,200].includes(response.data.code)) { return response } - if (response.data.code != 0) { + if (response.data.code==401) { + router.push('/') + localStorage.removeItem('Authorization') + } + if (![0,200].includes(response.data.code)) { ElMessage({ message: response.data.msg || response.data.message, type: 'error' }) } + } return Promise.reject(new Error('Error')) }, diff --git a/src/renderer/src/main.ts b/src/renderer/src/main.ts index aeab955..5b9437f 100644 --- a/src/renderer/src/main.ts +++ b/src/renderer/src/main.ts @@ -25,7 +25,7 @@ import '../public/tree/jquery.ztree.exhide.js' import '../public/tree/fuzzysearch.js' import '../public/tree/newFuzzySearch' import Pagination from './components/Pagination/index.vue' - +process.env["ELECTRON_DISABLE_SECURITY_WARNINGS"] = "true"; const i18n = createI18n({ legacy: false, locale: 'zh-CN', @@ -38,6 +38,9 @@ const i18n = createI18n({ // 注册全局指令 const setApp = createApp(App) +// 定义全局方法 + +// setApp.config.globalProperties.$md5 = md5 setApp.component('Pagination', Pagination) setupStore(setApp) setupSvgIcon(setApp) diff --git a/src/renderer/src/router/index.ts b/src/renderer/src/router/index.ts index ef42e51..bf7a99e 100644 --- a/src/renderer/src/router/index.ts +++ b/src/renderer/src/router/index.ts @@ -23,5 +23,16 @@ const router = createRouter({ history: createWebHashHistory(), routes }) +router.beforeEach((to, from, next) => { + // 去登录,放行 + if (to.path === '/') { + next() + } else { + if(localStorage.getItem('Authorization')) { + next() + }else + next("/") + } +}) export default router diff --git a/src/renderer/src/views/components/headers/components/setTool/setTool.vue b/src/renderer/src/views/components/headers/components/setTool/setTool.vue index e81a45e..0a115ac 100644 --- a/src/renderer/src/views/components/headers/components/setTool/setTool.vue +++ b/src/renderer/src/views/components/headers/components/setTool/setTool.vue @@ -13,14 +13,8 @@ --> -
+
@@ -28,14 +22,23 @@ @@ -110,6 +113,7 @@ const setList = ref([ position: relative; cursor: pointer; } + .set_item::after { content: ''; position: absolute; @@ -117,17 +121,16 @@ const setList = ref([ top: 0; bottom: 0; width: 1px; - background: linear-gradient( - 180deg, - rgba(0, 255, 255, 0), - rgba(0, 255, 255, 1), - rgba(204, 204, 204, 0) - ); + background: linear-gradient(180deg, + rgba(0, 255, 255, 0), + rgba(0, 255, 255, 1), + rgba(204, 204, 204, 0)); } .set_item.last-item::after { display: none; } + ::v-deep .el-dialog__body { padding: 10px; } diff --git a/src/renderer/src/views/components/leftSide/leftSideFirst.vue b/src/renderer/src/views/components/leftSide/leftSideFirst.vue index 5ed2f5b..6a4a828 100644 --- a/src/renderer/src/views/components/leftSide/leftSideFirst.vue +++ b/src/renderer/src/views/components/leftSide/leftSideFirst.vue @@ -2,19 +2,19 @@