智慧园区前端大屏
linwe
2024-11-07 05affc703e81728cc58cc89c1815407ad4997dfe
Merge remote-tracking branch 'origin/main'
16 files modified
3 files added
486 ■■■■ changed files
src/assets/json/line.json 199 ●●●●● patch | view | raw | blame | history
src/assets/json/qyfw.json 1 ●●●● patch | view | raw | blame | history
src/assets/json/yqfw.json 1 ●●●● patch | view | raw | blame | history
src/hooks/initMap.js 23 ●●●●● patch | view | raw | blame | history
src/router/index.js 4 ●●●● patch | view | raw | blame | history
src/store/router.js 14 ●●●● patch | view | raw | blame | history
src/views/layout/components/mainMenu.vue 8 ●●●●● patch | view | raw | blame | history
src/views/layout/components/scomponents/baseMap.vue 10 ●●●● patch | view | raw | blame | history
src/views/layout/components/scomponents/layersControl.vue 131 ●●●● patch | view | raw | blame | history
src/views/layout/components/scomponents/tool/exportScene.vue 4 ●●● patch | view | raw | blame | history
src/views/layout/components/scomponents/tool/location.vue 5 ●●●● patch | view | raw | blame | history
src/views/layout/components/scomponents/toolList.vue 6 ●●●●● patch | view | raw | blame | history
src/views/layout/index.vue 44 ●●●● patch | view | raw | blame | history
src/views/sub/components/scomponents/baseMap.vue 10 ●●●● patch | view | raw | blame | history
src/views/sub/components/scomponents/layersControl.vue 11 ●●●●● patch | view | raw | blame | history
src/views/sub/components/scomponents/tool/exportScene.vue 4 ●●● patch | view | raw | blame | history
src/views/sub/components/scomponents/tool/location.vue 5 ●●●● patch | view | raw | blame | history
src/views/sub/components/scomponents/toolList.vue 2 ●●●●● patch | view | raw | blame | history
src/views/survey/components/box/fireSource.vue 4 ●●● patch | view | raw | blame | history
src/assets/json/line.json
New file
@@ -0,0 +1,199 @@
{
  "type": "FeatureCollection",
  "crs": {
    "type": "name",
    "properties": {
      "name": "EPSG:4326"
    }
  },
  "features": [
    {
      "type": "Feature",
      "id": 57,
      "geometry": {
        "type": "LineString",
        "coordinates": [
          [
            115.10461040047922,
            27.281078877097464,
            0,
            null
          ],
          [
            115.10464090315097,
            27.28107880221026,
            0,
            null
          ],
          [
            115.10466508923437,
            27.281077627638659,
            0,
            null
          ],
          [
            115.1046843544291,
            27.281077213815163,
            0,
            null
          ],
          [
            115.10586493854272,
            27.281078948625922,
            0,
            null
          ],
          [
            115.10589924840097,
            27.281077197506569,
            0,
            null
          ],
          [
            115.1059320012201,
            27.281079347878013,
            0,
            null
          ],
          [
            115.1059590684595,
            27.281076426788974,
            0,
            null
          ],
          [
            115.10598853885008,
            27.281075498966288,
            0,
            null
          ],
          [
            115.10602139104803,
            27.281072387748527,
            0,
            null
          ],
          [
            115.10605008975703,
            27.281071041903218,
            0,
            null
          ],
          [
            115.10608320942517,
            27.28106434617083,
            0,
            null
          ],
          [
            115.10611179106,
            27.281060357311965,
            0,
            null
          ],
          [
            115.10613870466824,
            27.28105824050715,
            0,
            null
          ],
          [
            115.10616647306541,
            27.28105575599216,
            0,
            null
          ],
          [
            115.10619853811008,
            27.281051685428043,
            0,
            null
          ],
          [
            115.10622496278687,
            27.28104710901933,
            0,
            null
          ],
          [
            115.10625207764062,
            27.281043898740862,
            0,
            null
          ],
          [
            115.10628758471823,
            27.281040667205243,
            0,
            null
          ],
          [
            115.10631463522355,
            27.281037078430725,
            0,
            null
          ],
          [
            115.10634226500582,
            27.281035894381475,
            0,
            null
          ],
          [
            115.10636907279104,
            27.281033291092918,
            0,
            null
          ],
          [
            115.10639842822866,
            27.281028917062844,
            0,
            null
          ],
          [
            115.10643098298807,
            27.281026367567595,
            0,
            null
          ],
          [
            115.10645410440925,
            27.281025787644804,
            0,
            null
          ],
          [
            115.10648229093607,
            27.281023714847549,
            0,
            null
          ],
          [
            115.1065152373021,
            27.281022975986783,
            0,
            null
          ],
          [
            115.106550028393,
            27.281020079022472,
            0,
            null
          ]
        ]
      },
      "properties": {
        "FID": 57,
        "FID_": 0,
        "Entity": "LWPolyline",
        "Layer": "中压燃气",
        "Color": 5,
        "Linetype": "Continuous",
        "Elevation": 0,
        "LineWt": 25,
        "RefName": " "
      }
    }
  ]
}
src/assets/json/qyfw.json
New file
@@ -0,0 +1 @@
{"type":"FeatureCollection","crs":{"type":"name","properties":{"name":"EPSG:4326"}},"features":[{"type":"Feature","id":0,"geometry":{"type":"Polygon","coordinates":[[[115.10434358316422,27.289239134618413],[115.10433644478121,27.288394425961485],[115.10618925938729,27.288396806166475],[115.10618989228033,27.289064992726082],[115.1060092058683,27.289243893540572],[115.10434358316422,27.289239134618413]]]},"properties":{"FID":0,"Id":0,"name":"江西森钥新材料科技有限公司"}},{"type":"Feature","id":1,"geometry":{"type":"Polygon","coordinates":[[[115.10618308750384,27.287754488717439],[115.10618925938729,27.288396806166475],[115.10439182445339,27.288394497104719],[115.10433186684133,27.288318420975884],[115.10433662576338,27.287792560093578],[115.10438659444446,27.287764006561588],[115.10618308750384,27.287754488717439]]]},"properties":{"FID":1,"Id":0,"name":"江西利鑫环保再生资源有限公司"}},{"type":"Feature","id":2,"geometry":{"type":"Polygon","coordinates":[[[115.10365372045464,27.294652942750361],[115.10364420261055,27.293334721353062],[115.10374889889488,27.293239542912829],[115.10587137811206,27.293239542912829],[115.10601890469445,27.293291891054821],[115.10620926157492,27.293429899793296],[115.10616643127685,27.294662460594282],[115.10365372045464,27.294652942750361]]]},"properties":{"FID":2,"Id":0,"name":"江西东玕科技有限公司"}},{"type":"Feature","id":3,"geometry":{"type":"Polygon","coordinates":[[[115.10433554072858,27.287753448832859],[115.10432459520791,27.286752409587734],[115.1052478260782,27.286751933695541],[115.10525210910794,27.287740361797375],[115.10433554072858,27.287753448832859]]]},"properties":{"FID":3,"Id":0,"name":"江西迷斯婕生物科技有限公司"}},{"type":"Feature","id":4,"geometry":{"type":"Polygon","coordinates":[[[115.10619033058265,27.287743693042728],[115.10527468424436,27.287744486196345],[115.1052699253222,27.28674844381942],[115.10598804665392,27.286761292908864],[115.10617792764219,27.286915481981907],[115.10619220440822,27.286984010459037],[115.10619033058265,27.287743693042728]]]},"properties":{"FID":4,"Id":0,"name":"吉水县聚源堂天然香料油有限公司"}},{"type":"Feature","id":5,"geometry":{"type":"Polygon","coordinates":[[[115.10555331912792,27.283711656710693],[115.10575557331356,27.283882977903147],[115.10578888576754,27.2843130258222],[115.10589120259078,27.284941203527751],[115.10589120259078,27.285271948607601],[115.10595687571458,27.285318348097235],[115.1059644899899,27.28540210512466],[115.10259255579831,27.285403294855087],[115.102587598588,27.283847127357319],[115.10272441759582,27.283710308349441],[115.10555331912792,27.283711656710693]]]},"properties":{"FID":5,"Id":0,"name":"江西宏润香料有限公司"}},{"type":"Feature","id":6,"geometry":{"type":"Polygon","coordinates":[[[115.10271275823686,27.283572418584242],[115.10258736064179,27.283436075468614],[115.10258783653398,27.281382124728282],[115.10269253281831,27.281272669522139],[115.10380850003014,27.281272669522139],[115.10380493083869,27.283572418584242],[115.10271275823686,27.283572418584242]]]},"properties":{"FID":6,"Id":0,"name":"江西启晟化工有限公司"}},{"type":"Feature","id":7,"geometry":{"type":"Polygon","coordinates":[[[115.10555389416425,27.283570931421139],[115.10380493083881,27.283572418584242],[115.10380850003014,27.281272669522139],[115.10595927500447,27.281267359358253],[115.10611727121523,27.281436895954926],[115.10586409656423,27.282638024075993],[115.10579889933263,27.282930221887511],[115.10575567245758,27.28340341736623],[115.10555389416425,27.283570931421139]]]},"properties":{"FID":7,"Id":0,"name":"江西旭梅食品科技有限公司"}},{"type":"Feature","id":8,"geometry":{"type":"Polygon","coordinates":[[[115.10567366036821,27.281048324024027],[115.10567223269152,27.280448541219812],[115.1061785819935,27.280446637650982],[115.10617810610131,27.28105117937713],[115.10567366036821,27.281048324024027]]]},"properties":{"FID":8,"Id":0,"name":"江西赣吉化工实业有限公司"}},{"type":"Feature","id":9,"geometry":{"type":"Polygon","coordinates":[[[115.10357069273118,27.281043882363292],[115.10357842597932,27.279947545705056],[115.1061781061012,27.279958967117864],[115.1061785819935,27.280446637650982],[115.10567223269152,27.280448541219812],[115.10567366036832,27.281048324024027],[115.10357069273118,27.281043882363292]]]},"properties":{"FID":9,"Id":0,"name":"江西粤鹏环保高新技术开发有限公司"}},{"type":"Feature","id":10,"geometry":{"type":"Polygon","coordinates":[[[115.10237810687499,27.278558099108352],[115.1023824612887,27.280937940827926],[115.10225111504121,27.281055010309331],[115.10079452798652,27.281050846252697],[115.10080975653682,27.279467552899348],[115.10237810687499,27.278558099108352]]]},"properties":{"FID":10,"Id":0,"name":"江西高腾新材料有限公司"}},{"type":"Feature","id":11,"geometry":{"type":"Polygon","coordinates":[[[115.1025967317521,27.279286713862803],[115.10258642075451,27.278585129785426],[115.10273204376813,27.278363245046592],[115.1043415111925,27.278013147017248],[115.10433135882556,27.279286713862803],[115.1025967317521,27.279286713862803]]]},"properties":{"FID":11,"Id":0,"name":"江西腾龙源环保科技有限公司"}},{"type":"Feature","id":12,"geometry":{"type":"Polygon","coordinates":[[[115.10408171370818,27.273771837089612],[115.10107791881785,27.27542025331644],[115.10085603407913,27.27508950823659],[115.10165970496541,27.27462977654136],[115.1017339441488,27.274735424609958],[115.10177106374044,27.274751129052675],[115.10208459738556,27.274569885507901],[115.10162542089813,27.273839736000809],[115.10336914445224,27.272560532806949],[115.10409027976789,27.273714730025461],[115.10408171370818,27.273771837089612]]]},"properties":{"FID":12,"Id":0,"name":"吉安市高盛生物科技发展有限公司"}},{"type":"Feature","id":13,"geometry":{"type":"Polygon","coordinates":[[[115.09987224592612,27.273709579483977],[115.1010255706758,27.272872128182939],[115.10208459738556,27.274569885507901],[115.10177106374044,27.274751129052675],[115.1017339441488,27.274735424609958],[115.10165970496541,27.27462977654136],[115.10085603407913,27.27508950823659],[115.09987224592612,27.273709579483977]]]},"properties":{"FID":13,"Id":0,"name":"吉安迅达科技有限公司"}},{"type":"Feature","id":14,"geometry":{"type":"Polygon","coordinates":[[[115.10336914445224,27.272560532806949],[115.10162542089813,27.273839736000809],[115.1010255706758,27.272872128182939],[115.10137657587461,27.272606084613585],[115.10276729647444,27.271594912830437],[115.10336914445224,27.272560532806949]]]},"properties":{"FID":14,"Id":0,"name":"江西殷莱特化工有限公司"}},{"type":"Feature","id":15,"geometry":{"type":"Polygon","coordinates":[[[115.09968680164138,27.273503904823201],[115.09848833851652,27.272048769239802],[115.10004260244546,27.271068907197616],[115.10112192595784,27.272447852439711],[115.09968680164138,27.273503904823201]]]},"properties":{"FID":15,"Id":0,"name":"吉水金城新材料加工有限公司"}},{"type":"Feature","id":16,"geometry":{"type":"Polygon","coordinates":[[[115.10112192595795,27.272447852439711],[115.10019658043882,27.271265629699201],[115.10175950253438,27.270286699049393],[115.10260718551774,27.271359479044008],[115.10112192595795,27.272447852439711]]]},"properties":{"FID":16,"Id":0,"name":"江西赫信化学有限公司"}},{"type":"Feature","id":17,"geometry":{"type":"Polygon","coordinates":[[[115.10759346502846,27.273791883057356],[115.10694744136526,27.272617619050948],[115.10823235030864,27.272060825175402],[115.1083882050043,27.272083430054977],[115.1087165706233,27.273325508700111],[115.10759346502846,27.273791883057356]]]},"properties":{"FID":17,"Id":0,"name":"绿源污水处理厂"}}]}
src/assets/json/yqfw.json
New file
@@ -0,0 +1 @@
{"type":"FeatureCollection","crs":{"type":"name","properties":{"name":"EPSG:4326"}},"features":[{"type":"Feature","id":1,"geometry":{"type":"Polygon","coordinates":[[[115.10365802600006,27.296649056000035],[115.10365776500009,27.296628367000039],[115.10365375100002,27.296222454000031],[115.10365354100009,27.296222456000066],[115.10364614000002,27.295473948000051],[115.1036379950001,27.294650274000048],[115.10363789500002,27.294513106000068],[115.10363775600001,27.294324430000074],[115.10363704300005,27.293351550000068],[115.10361784800011,27.29271994800007],[115.10361731400008,27.292142719000026],[115.10361631100011,27.291057846000058],[115.10361616200009,27.290897334000078],[115.10361577700007,27.290480939000076],[115.10376747700002,27.290480827000067],[115.10376747600003,27.29048064400007],[115.10376579600006,27.289678525000056],[115.10376534700004,27.289463893000061],[115.10377063700003,27.289247296000042],[115.10395248200007,27.289247162000038],[115.10395183100002,27.28918129300007],[115.10395066000001,27.289062907000073],[115.10394709800005,27.288702691000026],[115.10394504400006,27.288494962000073],[115.10392778500011,27.286749543000042],[115.10136996200004,27.286753644000044],[115.1013386190001,27.283577536000053],[115.09974306000004,27.283578677000037],[115.09917053800007,27.283579083000063],[115.09873620700012,27.283578514000055],[115.09873415300001,27.281245152000054],[115.0987308230001,27.281245742000067],[115.09873064500005,27.281043303000047],[115.09923738300006,27.281054163000078],[115.09973737100006,27.281053804000067],[115.10080638600004,27.281053031000056],[115.10080431100005,27.278743446000078],[115.10080406200007,27.278465703000052],[115.10080405100007,27.278453697000032],[115.10143086800008,27.278325042000063],[115.10196907000011,27.278214572000024],[115.1023608910001,27.27813414700006],[115.10237797500008,27.278130640000029],[115.10273747500003,27.278056847000073],[115.10275803600007,27.278052626000033],[115.10281853900005,27.27804020800005],[115.10293215100012,27.278016886000046],[115.10309802200004,27.27798283900006],[115.10313972200004,27.277974280000024],[115.10490518300003,27.277611873000069],[115.1051660280001,27.277558326000076],[115.10593080000001,27.277401328000053],[115.10604533700007,27.277377815000023],[115.10617924700011,27.27782318900006],[115.10618069000009,27.279347573000052],[115.10618208900007,27.280825655000058],[115.10618049300001,27.280856052000047],[115.10617980600011,27.280869136000035],[115.10615978900012,27.281250381000063],[115.10585756700004,27.282686498000032],[115.10582536100003,27.282853404000036],[115.10579882400009,27.283021106000035],[115.1057779790001,27.28318944800003],[115.10576284700005,27.283358276000058],[115.10575235600004,27.283884993000072],[115.10576143800006,27.284063648000028],[115.10577690500008,27.284241953000048],[115.10579874300004,27.284419725000078],[115.10582692800006,27.28459678300004],[115.10612941200009,27.286301095000056],[115.10613196100007,27.28632854500006],[115.10618787100009,27.286930579000057],[115.10618985000008,27.289019869000072],[115.10618989200009,27.289064993000068],[115.1061904390001,27.289642575000073],[115.10619071700012,27.289935975000049],[115.1061892140001,27.28993594700006],[115.1061901060001,27.290862898000057],[115.10619180000003,27.292621870000062],[115.10619258200006,27.293434095000066],[115.10619271000007,27.293566878000036],[115.10619452700007,27.295452454000042],[115.10619596000004,27.296939162000058],[115.10619891500005,27.297182842000041],[115.10594368900001,27.297183038000071],[115.10574789200007,27.297183189000066],[115.10557853600005,27.297180065000077],[115.1054094860001,27.297170440000059],[115.10524105600007,27.297154333000037],[115.10507355600009,27.297131772000057],[115.10490729700007,27.297102799000072],[115.10474258600004,27.297067468000023],[115.1045797270001,27.297025844000075],[115.10441902200012,27.296978004000039],[115.10426076700003,27.296924037000053],[115.10410525500004,27.296864043000028],[115.10395277400005,27.29679813100006],[115.10380360600004,27.296726425000031],[115.10365802600006,27.296649056000035]]]},"properties":{"OBJECTID":1,"MJ":823262.44172500004,"Shape_Length":0.053665720487927053,"Shape_Area":7.5044476659468943e-05}},{"type":"Feature","id":2,"geometry":{"type":"Polygon","coordinates":[[[115.09207716700007,27.271114555000054],[115.09209235100002,27.271098952000045],[115.09226971800001,27.270916684000042],[115.09467658500012,27.268443241000057],[115.09471025700009,27.268408636000061],[115.09479860200008,27.268318800000031],[115.09488731500005,27.268385544000068],[115.09627829600004,27.269719727000052],[115.09709618400007,27.270700950000048],[115.09834078100005,27.272148170000037],[115.10005018800007,27.271067370000026],[115.09986505500001,27.270830386000057],[115.09965144100011,27.27055671200003],[115.09956224500002,27.270442923000076],[115.10002292400009,27.270155335000027],[115.10025718300005,27.270012224000027],[115.10033286200007,27.269964324000057],[115.10038478100012,27.269932703000052],[115.10050989500007,27.269855617000076],[115.1006315410001,27.269777616000056],[115.10112449500002,27.269464868000057],[115.10116649400004,27.269514699000069],[115.10124141600011,27.269606010000075],[115.10125545000005,27.269623932000059],[115.10127760300009,27.269650547000026],[115.10171212700004,27.270199163000029],[115.10174238100001,27.270237396000027],[115.10178008700007,27.270286508000027],[115.10201330100006,27.270585269000037],[115.10206968500006,27.270658372000071],[115.10220937700001,27.270839141000067],[115.10224083600008,27.27087894400006],[115.10261014300011,27.271359640000071],[115.10261210600004,27.271363140000062],[115.10261257100001,27.271362800000077],[115.10277357400003,27.271594575000051],[115.1030422980001,27.272025620000079],[115.10304326000005,27.27202875100005],[115.10309932900009,27.272119795000037],[115.10315892400001,27.272215620000054],[115.10319632900007,27.272275759000024],[115.10355051800002,27.272840683000027],[115.1035729140001,27.272877089000076],[115.10359975000006,27.272920875000068],[115.10380431600004,27.273245475000067],[115.10383201100001,27.273289684000076],[115.1040971650001,27.273717669000064],[115.10409947100004,27.273721205000072],[115.10419686800003,27.273871690000078],[115.10422057400001,27.273908317000064],[115.10399387700011,27.27402031400004],[115.10399207000012,27.274021305000076],[115.10398816200006,27.274020392000068],[115.10318520700002,27.274460600000054],[115.10278725400008,27.274678769000047],[115.10258156600003,27.274791533000041],[115.10218512800009,27.275008868000043],[115.10134354100001,27.275470238000025],[115.10102001600001,27.27562037000007],[115.10099954900011,27.275591515000031],[115.10094369500007,27.275623492000079],[115.10093423000001,27.275628911000069],[115.10037571600003,27.275989344000038],[115.09996523100006,27.276254245000075],[115.09856978200003,27.27715476000003],[115.0985690440001,27.277155242000049],[115.09842911900012,27.27724640100007],[115.09835932800002,27.277138475000072],[115.09832419600002,27.277089667000041],[115.09828386700008,27.277033639000024],[115.09820290500011,27.276932133000059],[115.09811662600009,27.276834186000031],[115.09802522700011,27.27674002200007],[115.09799193000003,27.276708850000034],[115.09792891300003,27.276649853000038],[115.09783819800009,27.276568877000045],[115.09741155900008,27.276188038000043],[115.09681631100011,27.275656685000058],[115.0964062590001,27.275290644000052],[115.09456880300002,27.273650356000076],[115.09413908100009,27.27326673500005],[115.09342089800009,27.272625589000029],[115.09322397000005,27.272449782000024],[115.09255174400005,27.271849651000025],[115.09252413600007,27.271824237000033],[115.09246847500003,27.271769753000058],[115.09207716700007,27.271114555000054]]]},"properties":{"OBJECTID":2,"MJ":571119.26753499999,"Shape_Length":0.034800068450911062,"Shape_Area":5.2054563738287781e-05}}]}
src/hooks/initMap.js
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2024-10-25 15:09:55
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-11-04 18:08:12
 * @LastEditTime: 2024-11-07 19:24:27
 * @FilePath: \bigScreen\src\hooks\initMap.js
 * @Description: 
 * 
@@ -11,11 +11,10 @@
let viewer = null
const { VITE_APP_BASE } = import.meta.env
import { useMap } from 'store/map'
import { nextTick } from 'vue'
import { nextTick, onMounted, onUnmounted } from 'vue'
export function readyViewer () {
  const Cesium = DC.getLib('Cesium')
  const { appContext } = getCurrentInstance()
  const store = useMap()
  function initMap () {
@@ -28,10 +27,9 @@
        viewer = new DC.Viewer('viewer-container')
        const global = appContext.config.globalProperties
        global.$viewer = viewer
        window.$viewer = viewer
        global.$viewer.zoomToPosition(new DC.Position(
        window.$viewer.zoomToPosition(new DC.Position(
          115.1048036679409,
          27.276835758787513,
          4000,
@@ -39,15 +37,22 @@
          -90,
          0
        ), () => {
          store.setLoadMap(true)
        })
      })
    })
  }
  initMap()
  onMounted(() => {
    initMap()
  })
  onUnmounted(() => {
    viewer.destroy()
    viewer = null
    delete window.$viewer
    store.setLoadMap(false)
  })
  return {
src/router/index.js
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2024-10-25 16:35:31
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-11-06 10:35:00
 * @LastEditTime: 2024-11-07 15:48:05
 * @FilePath: \bigScreen\src\router\index.js
 * @Description: 
 * 
@@ -76,7 +76,7 @@
      {
        path: 'sub',
        name: 'sub',
        component: () => import('@/views/sub/index.vue'),
        component: defineAsyncComponent(() => import('@/views/sub/index.vue')),
        redirect: '/layout/sub/companyInfo',
        children: [
          {
src/store/router.js
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2024-11-06 10:46:45
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-11-06 10:56:14
 * @LastEditTime: 2024-11-07 18:58:32
 * @FilePath: \bigScreen\src\store\router.js
 * @Description: 
 * 
@@ -14,7 +14,8 @@
export const useRouterStore = defineStore('useRouterStore', {
  // 存储状态的地方,相当于 Vuex 的 state
  state: () => ({
    loadSub: false
    loadSub: false,
    loadSingle: false,
  }),
  // 相当于 Vuex 的 getters,用于计算状态
@@ -27,6 +28,10 @@
    setLoadSub (flag) {
      this.loadSub = flag
    },
    setLoadSingle (flag) {
      this.loadSingle = flag
    },
  },
  persist: {
@@ -37,6 +42,11 @@
        paths: ['loadSub'],
        storage: localStorage,
      },
      {
        key: 'loadSingle',
        paths: ['loadSingle'],
        storage: localStorage,
      },
    ]
  }
})
src/views/layout/components/mainMenu.vue
@@ -12,6 +12,8 @@
import { useRouter, useRoute } from 'vue-router'
import { Search } from '@element-plus/icons-vue'
import { getTime } from '@/utils/getTime.js'
import { useRouterStore } from 'store/router'
const store = useRouterStore()
let router = useRouter()
let currentUrl = ref('statistics')
@@ -49,6 +51,12 @@
  if (params.path) {
    if (router.currentRoute.value.path == params.path) return
    if (params.path == '/layout/supplies' || params.path == '/layout/rt') {
      store.setLoadSingle(true)
    } else {
      store.setLoadSingle(false)
    }
    router.push(params.path)
  } else {
    params.childrenFlag = !params.childrenFlag
src/views/layout/components/scomponents/baseMap.vue
@@ -257,11 +257,11 @@
    keyExistBaseMap.forEach((item) => {
      let curLayer = {
        key: item.key,
        mapLayer: global.$viewer?.imageryLayers.addImageryProvider(item.layer),
        mapLayer: window.$viewer?.imageryLayers.addImageryProvider(item.layer),
      }
      curLayer.mapLayer.show = true
      global.$viewer?.imageryLayers.lowerToBottom(curLayer.mapLayer)
      window.$viewer?.imageryLayers.lowerToBottom(curLayer.mapLayer)
      globalBaseMapLayers.push(curLayer)
    })
@@ -269,7 +269,7 @@
  keyNoExistBaseMap.length &&
    keyNoExistBaseMap.forEach((item) => {
      item.mapLayer.show = true
      global.$viewer?.imageryLayers.lowerToBottom(item.mapLayer)
      window.$viewer?.imageryLayers.lowerToBottom(item.mapLayer)
    })
  curMode.value = mode
@@ -284,9 +284,9 @@
    let terrain = DC.TerrainFactory.createTerrain(DC.TerrainType.XYZ, {
      url: 'https://data.marsgis.cn/terrain'
    })
    global.$viewer.setTerrain(terrain)
    window.$viewer.setTerrain(terrain)
  } else {
    global.$viewer.setTerrain()
    window.$viewer.setTerrain()
  }
}
</script>
src/views/layout/components/scomponents/layersControl.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2024-10-31 10:47:29
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-11-05 18:36:54
 * @LastEditTime: 2024-11-07 17:17:21
 * @FilePath: \bigScreen\src\views\layout\components\scomponents\layersControl.vue
 * @Description: 
 * 
@@ -49,10 +49,11 @@
import { getPage } from '@/api/indParkInfo'
import { getList } from "@/api/space/space"
import { getList as getRiskList } from "@/api/riskSource/riskSource"
import yqfw from "@/assets/json/yqfw"
import pipeLine from "@/assets/json/line"
import { onUnmounted } from 'vue'
const { VITE_APP_BASE } = import.meta.env
import { getViewer } from 'utils/getViewer'
const globalViewer = getViewer()
const treeRef = ref(null)
@@ -191,6 +192,24 @@
    showParams: 'category',
    layerName: 'fxy'
  },
  {
    id: '5',
    label: '园区范围',
    type: 'layer',
    subType: 'geojsonWall',
    layerName: 'yqfw',
    source: yqfw
  },
  {
    id: '6',
    label: '地下管网',
    type: 'layer',
    subType: 'geojsonPipe',
    layerName: 'dxgw',
    source: pipeLine
  },
]
const defaultProps = {
@@ -235,7 +254,7 @@
let addTileLayers = {}
let tileLayers = new DC.TilesetLayer('tileLayers')
globalViewer.addLayer(tileLayers)
window.$viewer.addLayer(tileLayers)
const handleCheckChange = (data, options) => {
  collectedNodes.value = []
@@ -248,9 +267,11 @@
          addTileLayers[item.layerName] = new DC.Tileset(
            item.url,
            {
              maximumMemoryUsage: 128,
              progressiveResolutionHeightFraction: 0.5,
              dynamicScreenSpaceErrorDensity: 0.1,
              cullWithChildrenBounds: false,
              maximumScreenSpaceError: 256,
              maximumMemoryUsage: 1024,
              skipLevelOfDetail: true,
              preferLeaves: true
            })
@@ -260,50 +281,112 @@
          addTileLayers[item.layerName].show = true
        }
        console.log(addTileLayers[item.layerName], 11111111)
        globalViewer.flyTo(addTileLayers[item.layerName])
        window.$viewer.flyTo(addTileLayers[item.layerName])
      } else if (item.subType == 'labelPoint') {
        if (!addTileLayers[item.layerName]) {
          addTileLayers[item.layerName] = new DC.HtmlLayer(addTileLayers[item.layerName])
          globalViewer.addLayer(addTileLayers[item.layerName])
        }
          window.$viewer.addLayer(addTileLayers[item.layerName])
        item.method(item.params).then(res => {
          let data = res.data.data.records
          item.method(item.params).then(res => {
            let data = res.data.data.records
          data.filter(i => i.lng && i.lng != '' && i.lat && i.lat != '').forEach(i => {
            let divIcon = new DC.DivIcon(
              new DC.Position(i.lng, i.lat, 0),
              `<div class="public-map-popup">
            data.filter(i => i.lng && i.lng != '' && i.lat && i.lat != '').forEach(i => {
              let divIcon = new DC.DivIcon(
                new DC.Position(i.lng, i.lat, 0),
                `<div class="public-map-popup">
                <div class="marsBlueGradientPnl">
                  <div>${i[item.showParams] || i.name}</div>
                </div>
              </div>`
              )
              addTileLayers[item.layerName].addOverlay(divIcon)
            })
          })
        } else {
          addTileLayers[item.layerName].show = true
        }
      } else if (item.subType == 'geojsonWall') {
        if (!addTileLayers[item.layerName]) {
          addTileLayers[item.layerName] = new DC.VectorLayer(item.layerName)
          window.$viewer.addLayer(addTileLayers[item.layerName])
          item.source.features.forEach(i => {
            let wall = new DC.Wall(
              i.geometry.coordinates[0].map(d => [...d, 200].join(',')).join(';')
            )
            addTileLayers[item.layerName].addOverlay(divIcon)
            wall.setStyle({
              material: new DC.WallTrailMaterialProperty({
                color: DC.Color.GREEN,
                speed: 2
              })
            })
            addTileLayers[item.layerName].addOverlay(wall)
          })
        })
        } else {
          addTileLayers[item.layerName].show = true
        }
      } else if (item.subType == 'geojsonPipe') {
        if (!addTileLayers[item.layerName]) {
          addTileLayers[item.layerName] = new DC.VectorLayer(item.layerName)
          window.$viewer.addLayer(addTileLayers[item.layerName])
          function computeCircle (radius) {
            var positions = []
            for (var i = 0; i < 1080; i++) {
              var radians = DC.Math.toRadians(i)
              positions.push({
                x: radius * Math.cos(radians),
                y: radius * Math.sin(radians),
              })
            }
            return positions
          }
          item.source.features.forEach(i => {
            let polylineVolume = new DC.PolylineVolume(
              i.geometry.coordinates.map(d => [d[0], d[1], 0.0].join(',')).join(';'),
              computeCircle(0.3)
            )
            polylineVolume.setStyle({
              material: DC.Color.RED
            })
            addTileLayers[item.layerName].addOverlay(polylineVolume)
          })
        } else {
          addTileLayers[item.layerName].show = true
        }
      }
    } else {
      if (addTileLayers[item.layerName]) {
        if (item.subType == '3Dtile') {
          addTileLayers[item.layerName].show = false
        } else if (item.subType == 'labelPoint') {
          globalViewer.removeLayer(addTileLayers[item.layerName])
          addTileLayers[item.layerName].show = false
        } else if (item.subType == 'geojsonWall') {
          addTileLayers[item.layerName].show = false
        } else if (item.subType == 'geojsonPipe') {
          addTileLayers[item.layerName].show = false
        }
        delete addTileLayers[item.layerName]
      }
    }
  })
}
onMounted(() => {
  // handleCheckChange(data.filter(i => i.id == '1'), {
  //   checkedKeys: ['1']
  // })
  handleCheckChange(data.filter(i => i.id == '1'), {
    checkedKeys: ['1']
  })
})
onUnmounted(() => {
  tileLayers && window.$viewer.removeLayer(tileLayers)
  let arr = Object.keys(addTileLayers)
  arr.forEach(i => {
    addTileLayers[i] && window.$viewer.removeLayer(addTileLayers[i])
  })
})
</script>
src/views/layout/components/scomponents/tool/exportScene.vue
@@ -2,9 +2,7 @@
</template>
<script setup>
import { getViewer } from 'utils/getViewer'
const globalViewer = getViewer()
globalViewer.exportScene()
window.$viewer.exportScene()
const emit = defineEmits(['closeChild'])
emit('closeChild')
</script>
src/views/layout/components/scomponents/tool/location.vue
@@ -46,11 +46,8 @@
const latitude = ref(0)
const height = ref(0)
import { getViewer } from 'utils/getViewer'
const globalViewer = getViewer()
const flyTo = () => {
  globalViewer.flyToPosition(new DC.Position(longitude.value, latitude.value, height.value, 0, -90, 0), () => { }, 3)
  window.$viewer.flyToPosition(new DC.Position(longitude.value, latitude.value, height.value, 0, -90, 0), () => { }, 3)
}
</script>
src/views/layout/components/scomponents/toolList.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2024-10-29 14:20:49
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-10-29 17:21:51
 * @LastEditTime: 2024-11-07 16:23:56
 * @FilePath: \bigScreen\src\views\layout\components\scomponents\toolList.vue
 * @Description: 
 * 
@@ -10,7 +10,7 @@
-->
<template>
  <ul v-show="moreToolShow" class="tool-list-box">
    <li @click="showComponent(item.component)" v-for="item, index in components" :key="index">
    <li @click="showComponent(item.component)" v-for="(item, index) in components" :key="index">
      <i :class="item.icon"></i> {{ item.title }}
    </li>
  </ul>
@@ -28,10 +28,8 @@
})
import location from './tool/location.vue'
import exportScene from './tool/exportScene.vue'
import { getViewer } from 'utils/getViewer'
import component from 'element-plus/es/components/tree-select/src/tree-select-option.mjs'
const emit = defineEmits(['close'])
const globalViewer = getViewer()
let currentComponent = shallowRef(null)
const components = [
src/views/layout/index.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-08-18 16:18:24
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-11-06 11:05:46
 * @LastEditTime: 2024-11-07 19:24:45
 * @FilePath: \bigScreen\src\views\layout\index.vue
 * @Description:
 *
@@ -10,11 +10,35 @@
-->
<template>
  <div class="wrapper">
    <map-container ref="MapContainer">
    <div v-if="showSinglePage" class="main-content" id="MainContent">
      <div class="w100 h100">
        <div class="main-header">
          <div class="title">吉水化工园区“一园一策一图”VR平台</div>
          <div class="login-out" @click="signOut">
            <img :src="loginOutBg" class="img" />
            <span>退出</span>
          </div>
        </div>
        <div class="main-container">
          <!-- 地图区域 -->
          <router-view></router-view>
        </div>
        <main-menu></main-menu>
      </div>
    </div>
    <map-container v-if="!showSinglePage" ref="MapContainer">
      <template #content>
        <div v-if="showContent" :class="[showSubLayout ? 'main-content-sub' : 'main-content']" id="MainContent">
          <main-search></main-search>
          <main-tool></main-tool>
          <div v-if="showSubLayout" class="w100 h100">
            <router-view></router-view>
          </div>
          <div v-if="!showSubLayout" class="w100 h100">
            <div class="main-header">
@@ -32,10 +56,6 @@
            </div>
            <main-menu></main-menu>
          </div>
          <div v-if="showSubLayout" class="w100 h100">
            <router-view></router-view>
          </div>
        </div>
      </template>
@@ -60,20 +80,18 @@
const storeRouter = useRouterStore()
const showContent = ref(false)
const showSubLayout = ref(false)
const showSinglePage = ref(false)
// 监听createB的变化
watch(
  [
    () => store.loadMap,
    () => storeRouter.loadSub,
    () => storeRouter.loadSingle,
  ],
  ([newLoadMap, newLoadSub]) => {
    if (newLoadMap) {
      showContent.value = true
    }
    console.log(newLoadSub, 5555)
  ([newLoadMap, newLoadSub, newLoadSingle]) => {
    showContent.value = newLoadMap
    showSubLayout.value = newLoadSub
    showSinglePage.value = newLoadSingle
  },
  { immediate: true } // 设置immediate为true以便在组件挂载时立即检查createB的值
)
src/views/sub/components/scomponents/baseMap.vue
@@ -257,11 +257,11 @@
    keyExistBaseMap.forEach((item) => {
      let curLayer = {
        key: item.key,
        mapLayer: global.$viewer?.imageryLayers.addImageryProvider(item.layer),
        mapLayer: window.$viewer?.imageryLayers.addImageryProvider(item.layer),
      }
      curLayer.mapLayer.show = true
      global.$viewer?.imageryLayers.lowerToBottom(curLayer.mapLayer)
      window.$viewer?.imageryLayers.lowerToBottom(curLayer.mapLayer)
      globalBaseMapLayers.push(curLayer)
    })
@@ -269,7 +269,7 @@
  keyNoExistBaseMap.length &&
    keyNoExistBaseMap.forEach((item) => {
      item.mapLayer.show = true
      global.$viewer?.imageryLayers.lowerToBottom(item.mapLayer)
      window.$viewer?.imageryLayers.lowerToBottom(item.mapLayer)
    })
  curMode.value = mode
@@ -284,9 +284,9 @@
    let terrain = DC.TerrainFactory.createTerrain(DC.TerrainType.XYZ, {
      url: 'https://data.marsgis.cn/terrain'
    })
    global.$viewer.setTerrain(terrain)
    window.$viewer.setTerrain(terrain)
  } else {
    global.$viewer.setTerrain()
    window.$viewer.setTerrain()
  }
}
</script>
src/views/sub/components/scomponents/layersControl.vue
@@ -51,9 +51,6 @@
import { getList as getRiskList } from "@/api/riskSource/riskSource"
const { VITE_APP_BASE } = import.meta.env
import { getViewer } from 'utils/getViewer'
const globalViewer = getViewer()
const treeRef = ref(null)
const treeProps = {
@@ -235,7 +232,7 @@
let addTileLayers = {}
let tileLayers = new DC.TilesetLayer('tileLayers')
globalViewer.addLayer(tileLayers)
window.$viewer.addLayer(tileLayers)
const handleCheckChange = (data, options) => {
  collectedNodes.value = []
@@ -262,11 +259,11 @@
        console.log(addTileLayers[item.layerName], 11111111)
        globalViewer.flyTo(addTileLayers[item.layerName])
        window.$viewer.flyTo(addTileLayers[item.layerName])
      } else if (item.subType == 'labelPoint') {
        if (!addTileLayers[item.layerName]) {
          addTileLayers[item.layerName] = new DC.HtmlLayer(addTileLayers[item.layerName])
          globalViewer.addLayer(addTileLayers[item.layerName])
          window.$viewer.addLayer(addTileLayers[item.layerName])
        }
        item.method(item.params).then(res => {
@@ -291,7 +288,7 @@
        if (item.subType == '3Dtile') {
          addTileLayers[item.layerName].show = false
        } else if (item.subType == 'labelPoint') {
          globalViewer.removeLayer(addTileLayers[item.layerName])
          window.$viewer.removeLayer(addTileLayers[item.layerName])
        }
        delete addTileLayers[item.layerName]
src/views/sub/components/scomponents/tool/exportScene.vue
@@ -2,9 +2,7 @@
</template>
<script setup>
import { getViewer } from 'utils/getViewer'
const globalViewer = getViewer()
globalViewer.exportScene()
window.$viewer.exportScene()
const emit = defineEmits(['closeChild'])
emit('closeChild')
</script>
src/views/sub/components/scomponents/tool/location.vue
@@ -46,11 +46,8 @@
const latitude = ref(0)
const height = ref(0)
import { getViewer } from 'utils/getViewer'
const globalViewer = getViewer()
const flyTo = () => {
  globalViewer.flyToPosition(new DC.Position(longitude.value, latitude.value, height.value, 0, -90, 0), () => { }, 3)
  window.$viewer.flyToPosition(new DC.Position(longitude.value, latitude.value, height.value, 0, -90, 0), () => { }, 3)
}
</script>
src/views/sub/components/scomponents/toolList.vue
@@ -28,10 +28,8 @@
})
import location from './tool/location.vue'
import exportScene from './tool/exportScene.vue'
import { getViewer } from 'utils/getViewer'
import component from 'element-plus/es/components/tree-select/src/tree-select-option.mjs'
const emit = defineEmits(['close'])
const globalViewer = getViewer()
let currentComponent = shallowRef(null)
const components = [
src/views/survey/components/box/fireSource.vue
@@ -70,7 +70,7 @@
})
// 获取详情
function getData() {
function getData () {
  getDetail().then(res => {
    state.parkInfo = res.data.data
    parkInfoList.forEach(item => {
@@ -84,8 +84,6 @@
    console.log(err)
  })
}
</script>
<template>