leader-index备份.vue 316 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528
  1. <!-- 领导首页 -->
  2. <template>
  3. <div class="sj-container">
  4. <!--头部 开始-->
  5. <div class="header">
  6. <div class="head-left">
  7. <img src="../assets/images/leader-logo1.png" style="cursor: pointer" @click="toHome" />
  8. <el-select v-model="place" size="small" placeholder="请选择" class="select" :popper-append-to-body="false"
  9. @focus="out" disabled>
  10. <el-option v-for="item in placeList" :key="item.value" :label="item.label" :value="item.value">
  11. </el-option>
  12. </el-select>
  13. <el-select v-model="dept" :disabled="userDeptId != 365" size="small" placeholder="请选择" class="select2"
  14. :popper-append-to-body="false" @focus="out" @change="getByDeptId">
  15. <el-option v-for="item in deptList" :key="item.value" :label="item.label" :value="item.value">
  16. </el-option>
  17. </el-select>
  18. </div>
  19. <div class="head-center" @click="titleClick">
  20. <span>{{ headerTitle }}</span>
  21. </div>
  22. <div class="head-right">
  23. <div class="head-time">
  24. <!-- 风向 -->
  25. <span><i class="head-fx"></i>
  26. <span style="margin-right: 0" v-if="!weatherinformationDirection">风向</span>
  27. <span style="margin-right: 0" v-if="weatherinformationDirection == 1">东风</span>
  28. <span style="margin-right: 0" v-if="weatherinformationDirection == 2">东南风</span>
  29. <span style="margin-right: 0" v-if="weatherinformationDirection == 3">南风</span>
  30. <span style="margin-right: 0" v-if="weatherinformationDirection == 4">西南风</span>
  31. <span style="margin-right: 0" v-if="weatherinformationDirection == 5">西风</span>
  32. <span style="margin-right: 0" v-if="weatherinformationDirection == 6">西北风</span>
  33. <span style="margin-right: 0" v-if="weatherinformationDirection == 7">西北风</span>
  34. <span style="margin-right: 0" v-if="weatherinformationDirection == 8">西北风</span>
  35. </span>
  36. <!-- 风速 -->
  37. <span><i class="head-fs"></i>{{ weatherinformationPower}}<u>m/s</u></span>
  38. <span><i class="head-jsl"></i>{{ weatherinformationTemperature}}<u>%</u></span>
  39. <span><i class="head-wd"></i>{{ weatherinformationLow }}-{{weatherinformationHigh}}<u>℃</u></span>
  40. <span class="timer"> {{ nowTime }}</span>
  41. <VfastMenu></VfastMenu>
  42. </div>
  43. </div>
  44. </div>
  45. <!--头部 结束-->
  46. <!--地图 开始-->
  47. <div class="map">
  48. <supermap ref="supermap" style="width: 100%; height: 100vh" @fatherMethod="fatherMethod" @preview="preview"
  49. @showEventDialog="showEventDialog" @jump="jump" @sewageOutletClick="sewageOutletClick"
  50. @sewageOutletClickfarming="sewageOutletClickfarming" @setPositioning="setPositioning"></supermap>
  51. </div>
  52. <!--地图 结束-->
  53. <!--左侧 开始-->
  54. <div class="con-left" ref="leftBar">
  55. <!-- 首页初始左模块开始 -->
  56. <div class="side-show-container" v-show="sideShowHome">
  57. <!-- 实时关注 -->
  58. <div class="con1 con-div" :style="{
  59. border: this.showModal ? '1px solid #00ffde !important' : '',
  60. }" @click="fn1()" id="box1">
  61. <div class="con-tit">
  62. <a><i></i><b>实时关注</b></a>
  63. <span><i class="tit_fire"></i>防火季</span>
  64. </div>
  65. <div class="cont ssgz">
  66. <div class="cont-top1 cont-top">
  67. <img src="../assets/images/leader-icon5.png" />
  68. <p>
  69. 火情发生<b>{{ interestTotal }}</b>起
  70. </p>
  71. <a>分析报告</a>
  72. </div>
  73. <div class="conChart1" id="conChart1"></div>
  74. </div>
  75. <dv-decoration-3 class="head-di" :color="['#02a3e9']" />
  76. </div>
  77. <!-- 事件统计 -->
  78. <div class="con3 con-div" :style="{
  79. border: this.showModa3 ? '1px solid #00ffde !important' : '',
  80. }" @click="fn3()" id="box3">
  81. <div class="con-tit">
  82. <a><i></i><b>事件统计</b></a>
  83. </div>
  84. <div class="cont sstj2 cont-np">
  85. <div class="cont-top2 cont-top">
  86. <span>待处理<b>{{ eventStatistics.untreatedNum }}</b></span>
  87. <span>总数<b>{{ eventStatistics.totalNum }}</b></span>
  88. <span>已处理<b>{{ eventStatistics.processedNum }}</b></span>
  89. </div>
  90. <div class="conChart3" id="conChart3"></div>
  91. </div>
  92. <dv-decoration-3 class="head-di" :color="['#02a3e9']" />
  93. </div>
  94. <!-- 一网通办 -->
  95. <div class="con6 con-div" :style="{
  96. border: this.showModa4 ? '1px solid #00ffde !important' : '',
  97. }" @click="fn4()" id="box4">
  98. <div class="con-tit">
  99. <a><i></i><b>一网通办</b></a>
  100. </div>
  101. <div class="cont ywtb">
  102. <div class="cont-top4 cont-top">
  103. <div class="cont-row">
  104. <div class="c-left">
  105. <p>
  106. 前日大厅办件总数<b>{{
  107. networkprocessingData.previousDayHallProcessingTotalNumber
  108. }}</b>
  109. </p>
  110. <p>
  111. 今日大厅办件总数<b>{{
  112. networkprocessingData.hallProcessingTotalNumber
  113. }}</b>
  114. </p>
  115. </div>
  116. <div class="c-right">
  117. <i class="ss" v-if="networkprocessingData.upDown >= 0"></i>
  118. <i class="xj" v-else></i>
  119. <div class="c-txt">
  120. <p>昨日同比</p>
  121. <b>{{ Math.abs(networkprocessingData.upDown) }}%</b>
  122. </div>
  123. </div>
  124. </div>
  125. <div class="cont-com">
  126. <div class="con-txt">
  127. <h5>
  128. <b>{{
  129. networkprocessingData.legalPersonProcessingNumber
  130. }}</b>
  131. <p>年度法人办件数</p>
  132. </h5>
  133. <h5>
  134. <b>{{
  135. networkprocessingData.legalPersonCompletionNumber
  136. }}</b>
  137. <p>年度法人办结数</p>
  138. </h5>
  139. <h5>
  140. <h6>
  141. 年度办结率
  142. {{ networkprocessingData.legalPersonCompletionRate }}
  143. </h6>
  144. </h5>
  145. </div>
  146. <div class="con-txt">
  147. <h5>
  148. <b>{{
  149. networkprocessingData.naturalPersonProcessingNumber
  150. }}</b>
  151. <p>年度自然人办件数</p>
  152. </h5>
  153. <h5>
  154. <b>{{
  155. networkprocessingData.naturalPersonCompletionNumber
  156. }}</b>
  157. <p>年度自然人办结数</p>
  158. </h5>
  159. <h5>
  160. <h6>
  161. 年度办结率
  162. {{ networkprocessingData.naturalPersonCompletionRate }}
  163. </h6>
  164. </h5>
  165. </div>
  166. </div>
  167. </div>
  168. </div>
  169. <dv-decoration-3 class="head-di" :color="['#02a3e9']" />
  170. </div>
  171. </div>
  172. <!-- 首页初始左模块结束 -->
  173. <!-- 视联网模块左侧树开始 -->
  174. <camerabar ref="cameraBar" @selectCameraByDeptId="selectCameraByDeptId" v-if="sideShowCamera" :deptId="dept">
  175. </camerabar>
  176. <!-- 视联网模块左侧树结束 -->
  177. <!-- 物联网模块左侧树开始 -->
  178. <monitorbar ref="monitorBar" @getMonitorList="getMonitorList" v-if="sideShowMonitor" :deptId="dept"></monitorbar>
  179. <!-- 物联网模块左侧树结束 -->
  180. </div>
  181. <!--左侧 结束-->
  182. <!-- 展开收起 开始-->
  183. <expendbutton @expandClick="expandClick" :expandValue="expandValue" ref="exb">
  184. </expendbutton>
  185. <!-- 展开收起 结束-->
  186. <!--右侧 开始-->
  187. <div class="con-right" ref="rightBar">
  188. <!-- 首页初始右模块开始 -->
  189. <div class="side-show-container" v-show="sideShowHome">
  190. <!-- 重点工程 -->
  191. <div class="con4 con-div" :style="{
  192. border: this.showModal6 ? '1px solid #00ffde !important' : '',
  193. }" id="box6">
  194. <div class="con-tit">
  195. <a><i></i><b>重点工程</b><span @click="fn6()">更多</span></a>
  196. </div>
  197. <div class="cont zdgc cont-np">
  198. <!-- <el-carousel :interval="5000" arrow="always" height="13rem"> -->
  199. <el-carousel :autoplay="false" arrow="always" height="13rem">
  200. <el-carousel-item v-for="(it, key) in imgList.length" :key="key">
  201. <div class="imgBox">
  202. <el-tooltip placement="left" v-for="(item, index) in imgList[key]" :key="index" popper-class="js-tps"
  203. :content="item.projectName">
  204. <div slot="content" class="leader-info-container">
  205. <div class="leader-info-list-con" v-if="item.projectName.length > 8">
  206. <h4>{{ item.projectName }}</h4>
  207. </div>
  208. </div>
  209. <!-- <div slot="content">{{item.name}}</div> -->
  210. <span @click="fn5(item, 1)">
  211. {{ item.projectName | ellipsisFont8 }}
  212. </span>
  213. </el-tooltip>
  214. <img src="../assets/images/leader-logo3.png" class="leader-logo" />
  215. </div>
  216. </el-carousel-item>
  217. </el-carousel>
  218. </div>
  219. <dv-decoration-3 class="head-di" :color="['#02a3e9']" />
  220. </div>
  221. <!-- 四长统计 -->
  222. <div class="con2 con-div" :style="{
  223. border: this.showModa2 ? '1px solid #00ffde !important' : '',
  224. }" @click="fn2()" id="box2">
  225. <div class="con-tit">
  226. <a><i></i><b>四长概况</b></a>
  227. </div>
  228. <div class="cont sstj">
  229. <div class="cont-top1 cont-top">
  230. <img src="../assets/images/leader-icon9.png" />
  231. <p>
  232. 四长总人数<b>{{ fourLengthStatistics.TotalNumberofPeople }}</b>人
  233. </p>
  234. <a>结构分析</a>
  235. </div>
  236. <div class="conChart2" id="fourLeaders"></div>
  237. </div>
  238. <dv-decoration-3 class="head-di" :color="['#02a3e9']" />
  239. </div>
  240. <!-- 重点区域 -->
  241. <div class="con5 con-div" :style="{
  242. border: this.showModal7 ? '1px solid #00ffde !important' : '',
  243. }" id="box7">
  244. <div class="con-tit">
  245. <a><i></i><b>重点区域</b><span @click="fn7()">更多</span></a>
  246. </div>
  247. <div class="cont zdqy">
  248. <el-tabs v-model="rActiveName" @tab-click="tabHandleClick">
  249. <el-tab-pane :label="item.areaName" v-for="(item, index) in keyAreasList" :key="index">
  250. <div class="con-list">
  251. <div class="tabList" v-for="(ite, index) in item.areaList">
  252. <a>
  253. <el-tooltip class="item" effect="dark" :content="ite.areaName" placement="top">
  254. <span>{{truncatedText(ite.areaName)}}</span>
  255. </el-tooltip>
  256. <u @click="fn5(ite, 2)">查看</u>
  257. </a>
  258. </div>
  259. </div>
  260. </el-tab-pane>
  261. </el-tabs>
  262. </div>
  263. <dv-decoration-3 class="head-di" :color="['#02a3e9']" />
  264. </div>
  265. </div>
  266. <!-- 首页初始右模块结束 -->
  267. <!-- 视联网模块右侧列表开始 -->
  268. <cameralist ref="cameraList" @dropLocation="dropLocation" @rightDeptName="rightDeptName" v-if="sideShowCamera"
  269. :visuForestCloudCameraBOListSearch="
  270. this.visuForestCloudCameraBOListSearch
  271. " :visuForestCloudCameraBOList="this.visuForestCloudCameraBOList"></cameralist>
  272. <!-- 视联网模块右侧列表结束 -->
  273. <!-- 视联网模块右侧列表开始 -->
  274. <monitorlist ref="monitorList" @dropLocation="dropLocation" @leftDeptName="leftDeptName" v-if="sideShowMonitor"
  275. :visuForestCloudMonitorBOListSearch="
  276. this.visuForestCloudMonitorBOListSearch
  277. " :visuForestCloudMonitorBOList="this.visuForestCloudMonitorBOList"></monitorlist>
  278. <!-- 视联网模块右侧列表结束 -->
  279. </div>
  280. <!--右侧 结束-->
  281. <!--底部 开始-->
  282. <div class="footer">
  283. <div class="foot-btn">
  284. <el-popover placement="top-start" :disabled="!sideShowCamera" v-model="visible_slw" title="摄像头类型"
  285. trigger="hover" popper-class="sj-layer-pop" ref="sideShowCamera">
  286. <el-checkbox-group v-model="cameraUseCheckList" @change="selectCameraByDeptIds(deptId)"
  287. style="height: 100px; overflow-y: scroll">
  288. <el-checkbox v-for="(item, index) in cameraUseList" :label="item.dictValue"
  289. :key="item.dictValue">{{ item.dictLabel }}
  290. </el-checkbox>
  291. </el-checkbox-group>
  292. <a class="btn1 btn" slot="reference" @click="selectDeviceType" :class="btnGetFocus1 ? 'on' : ''">
  293. <span><img src="../assets/images/leader-foot1.png" /><u></u><i></i></span>
  294. <i>视联网</i>
  295. </a>
  296. </el-popover>
  297. <el-popover placement="top-start" :disabled="!sideShowMonitor" v-model="visible_wlw" title="物联网类型"
  298. trigger="hover" popper-class="sj-layer-pop" ref="sideShowMonitor">
  299. <el-checkbox-group v-model="sensorCheckList" @change="getMonitorDeviceAndDataList()"
  300. style="height: 200px; overflow-y: scroll">
  301. <el-checkbox v-for="(item, index) in sensorList" :label="item.dictLabel"
  302. :key="item.dictLabel">{{ item.dictLabel }}
  303. </el-checkbox>
  304. </el-checkbox-group>
  305. <a class="btn2 btn" slot="reference" @click="getMonitorDeviceAndData()" :class="btnGetFocus2 ? 'on' : ''">
  306. <span><img src="../assets/images/leader-foot2.png" /><u></u><i></i></span>
  307. <i>物联网</i>
  308. </a>
  309. </el-popover>
  310. <el-popover placement="top-start" :disabled="!btnGetFocus3" v-model="visible_ygb" title="云广播类型" trigger="hover"
  311. popper-class="sj-layer-pop" ref="btnGetFocus3">
  312. <el-checkbox-group v-model="broadcastUseCheckList" @change="getDlblistBydeptIds()"
  313. style="height: 100px; overflow-y: scroll">
  314. <el-checkbox v-for="(item, index) in broadcastUseList" :label="item.dictValue"
  315. :key="item.dictValue">{{ item.dictLabel }}
  316. </el-checkbox>
  317. </el-checkbox-group>
  318. <a class="btn3 btn" slot="reference" @click="getDlblistBydeptId()" :class="btnGetFocus3 ? 'on' : ''">
  319. <span><img src="../assets/images/leader-foot3.png" /><u></u><i></i></span>
  320. <i>云广播</i>
  321. </a>
  322. </el-popover>
  323. <a class="btn4 btn" @click="showTVWall" :class="btnGetFocus4 ? 'on' : ''">
  324. <span><img src="../assets/images/leader-foot4.png" /><u></u><i></i></span>
  325. <i>云指挥</i>
  326. </a>
  327. </div>
  328. </div>
  329. <!--底部 结束-->
  330. <!--AI 机器人 开始-->
  331. <a class="leader-ai" @click="showDownloadList('2')">
  332. <img src="../assets/images/leader-ai.png" />
  333. </a>
  334. <!--AI 机器人 结束-->
  335. <!--图层切换 开始-->
  336. <div class="sj-layer-switch" ref="sjLayerSwith">
  337. <el-popover placement="top" title="专题" width="50" trigger="click" @show="hideClick" popper-class="sj-layer-pop">
  338. <el-checkbox-group v-model="layerCheckList" @change="layerCheck">
  339. <!-- <el-checkbox label="buildingModel" name="buildingModel"-->
  340. <!-- v-if="dept == '365' || dept == '373'">倾斜实景</el-checkbox>-->
  341. <el-checkbox label="lindi" name="lindi">林地专题</el-checkbox>
  342. <el-checkbox label="shuixi" ame="shuixi">水系专题</el-checkbox>
  343. <el-checkbox label="road" ame="road">路网专题</el-checkbox>
  344. <el-checkbox label="nongtian" ame="nongtian">农田专题</el-checkbox>
  345. </el-checkbox-group>
  346. <a class="leader-tcqh" slot="reference">
  347. <img src="../assets/images/leader-tcbg.png" />
  348. <p>专题</p>
  349. </a>
  350. </el-popover>
  351. <!--图层切换 结束-->
  352. <!--资源切换 开始-->
  353. <el-popover placement="top" title="资源" trigger="click" v-model="visible_zy" @show="hideClick"
  354. popper-class="sj-layer-pop">
  355. <div style="margin-bottom: 15px; display: flex">
  356. <el-select v-model="resourcesType" size="small" style="width: 140px" placeholder="请选择资源分类"
  357. popper-class="sj-select" :popper-append-t0o-body="false">
  358. <el-option v-for="dict in dict.type.camera_system" :key="dict.value" :label="dict.label" :value="dict.value"
  359. @click.native="getResourceType(dict.value)"></el-option>
  360. </el-select>
  361. <el-button type="primary" icon="el-icon-delete" size="normal" @click="colseClick()"
  362. style="margin-left: 10px; height: 32px; padding: 9px 20px">清除
  363. </el-button>
  364. </div>
  365. <el-checkbox-group v-model="resourcesCheckList" @change="getResourcePoint"
  366. style="height: 200px; overflow-y: scroll">
  367. <el-checkbox v-for="(item, index) in resourcesList" :label="item.type" :key="item.type">{{ item.name }}
  368. </el-checkbox>
  369. </el-checkbox-group>
  370. <a class="leader-tcqh" slot="reference" @click="resourcesClick" @close="resourcesClose">
  371. <img src="../assets/images/leader-tcbg2.png" />
  372. <p>资源</p>
  373. </a>
  374. </el-popover>
  375. <!--图层切换 结束-->
  376. <!--图层切换 开始-->
  377. <!-- <el-popover placement="top-start" title="人员" trigger="manual" @show="selectPersonnelTypeList()" v-model="pvisible" -->
  378. <el-popover placement="top-start" v-model="visible_tc" title="人员" trigger="click"
  379. @show="selectPersonnelTypeList()" popper-class="sj-layer-pop">
  380. <div class="gctj-tk no-icon">
  381. <div class="pop tbtj-row">
  382. <div class="ssgz-row" style="width: 100%">
  383. <div class="tk-con"></div>
  384. <div style="display: flex">
  385. <div class="cont-top1" style="margin-right: 15px">
  386. <el-select v-model="personnelVisualizationModel" size="small" placeholder="请选择可视化类型" filterable
  387. class="select" :popper-append-to-body="false" @change="selectPersonnelTypeList">
  388. <el-option v-for="dict in dict.type.camera_system" :key="dict.value" :label="dict.label"
  389. :value="dict.value"></el-option>
  390. </el-select>
  391. </div>
  392. <div class="cont-top1" style="margin-right: 15px">
  393. <el-select v-model="personneType" size="small" placeholder="请选择人员类型" filterable class="select"
  394. :popper-append-to-body="false" @change="selectPersonneList">
  395. <el-option v-for="dict in personneTypeList" :key="dict.jobValue" :label="dict.job"
  396. :value="dict.jobValue"></el-option>
  397. </el-select>
  398. </div>
  399. <div class="cont-top1" style="margin-right: 15px">
  400. <el-select v-model="personne" size="small" placeholder="请选择人员" filterable class="select"
  401. :popper-append-to-body="false" @change="selectPersonneTaskList">
  402. <el-option v-for="dict in personneList" :key="dict.userId" :label="dict.nickName"
  403. :value="dict.userId"></el-option>
  404. </el-select>
  405. </div>
  406. <div class="cont-top1" style="margin-right: 15px">
  407. <el-select v-model="personneTask" size="small" placeholder="请选择巡查任务" filterable class="select"
  408. :popper-append-to-body="false" @change="search">
  409. <el-option v-for="dict in personneTaskList" :key="dict.id" :label="dict.taskName" :value="dict.id"
  410. @click.native="getTaskTrajectory(dict)"></el-option>
  411. </el-select>
  412. </div>
  413. <div>
  414. <el-button type="primary" icon="el-icon-delete" size="normal" @click="resettings()"
  415. style="margin-right: 15px; height: 32px; padding: 9px 20px">清除轨迹
  416. </el-button>
  417. </div>
  418. </div>
  419. <el-table :data="personneTaskTrajectoryList" height="250" border style="width: 100%; margin-top: 0.5rem">
  420. <el-table-column label="开始时间" align="center" prop="beginTime" />
  421. <el-table-column label="结束时间" align="center" prop="endTime">
  422. </el-table-column>
  423. <el-table-column label="查询轨迹" align="center" class-name="small-padding fixed-width">
  424. <template slot-scope="scope">
  425. <el-button size="mini" type="text" @click="getTrack(scope.row.id)">
  426. 查询轨迹
  427. <!-- <i class="iconfont sj-icon-jkzx icon-sxt"></i>-->
  428. </el-button>
  429. </template>
  430. </el-table-column>
  431. </el-table>
  432. <pagination id="pagination1" v-show="total > 0" :total="total" :page.sync="queryParams1.pageNum"
  433. :limit.sync="queryParams1.pageSize" @pagination="getKeyProjects1" popper-class="sj-pagination" />
  434. </div>
  435. </div>
  436. <div class="ssgz-tkcom"></div>
  437. </div>
  438. <!-- <a class="leader-tcqh" slot="reference" @click="pvisible=!pvisible"> -->
  439. <a class="leader-tcqh" slot="reference">
  440. <img src="../assets/images/leader-tcbg3.png" />
  441. <p>人员</p>
  442. </a>
  443. </el-popover>
  444. <el-popover placement="bottom" v-model="visible_dw" title="定位" trigger="manual" popper-class="sj-layer-pop">
  445. <span class="tk-close el-icon-close" style="right: 0.5rem;top: 0.5rem;" @click="getLocation(1)"></span>
  446. 经度: <el-input placeholder="请输入经度" style="width: 200px;" v-model="positioning.lon" clearable></el-input><br><br>
  447. 纬度: <el-input placeholder="请输入纬度" style="width: 200px;" v-model="positioning.lat" clearable></el-input><br><br>
  448. <el-button type="primary" size="mini" style="width:100%; float: right;cursor: pointer;"
  449. @click="lonAndLatQueryCamera">查询附近摄像头</el-button>
  450. <a class="leader-tcqh" slot="reference" @click="getLocation(1)">
  451. <img src="../assets/images/leader-tcbg4.png" />
  452. <p>定位</p>
  453. </a>
  454. </el-popover>
  455. <el-popover placement="bottom" v-if="dept == '365' || dept == '373'" title="实景" trigger="manual"
  456. popper-class="sj-layer-pop">
  457. <a class="leader-tcqh" slot="reference" @click="openLiveAction()">
  458. <img src="../assets/images/leader-tcbg5.png" />
  459. <p>实景</p>
  460. </a>
  461. </el-popover>
  462. <!--图层切换 结束-->
  463. </div>
  464. <!--实时关注弹框 开始-->
  465. <div id="leader-tkbg" v-show="showModal">
  466. <span @click="showModal = false" class="tk-close el-icon-close"></span>
  467. <div class="pop ssgz-tk">
  468. <div class="ssgz-tkcom">
  469. <div class="ssgz-row">
  470. <div class="tk-con">
  471. <p class="tk-tit">起火原因统计(年度)</p>
  472. <div id="tkCharts1"></div>
  473. </div>
  474. <div class="tk-con">
  475. <p class="tk-tit">起火场所统计(年度)</p>
  476. <div id="tkCharts3"></div>
  477. </div>
  478. </div>
  479. <div class="ssgz-row2">
  480. <div class="tk-con">
  481. <p class="tk-tit">当前防火季火灾损失统计(年度)</p>
  482. <div class="tk-top">
  483. <p>
  484. <img src="../assets/images/leader-tk3.png" /><span>火灾损失总价值</span><u>{{ lossCount }}万元</u>
  485. </p>
  486. <p>
  487. <img src="../assets/images/leader-tk2.png" /><span>扑火费用总支出</span><u>{{ blazesCount }}万元</u>
  488. </p>
  489. </div>
  490. <div id="tkCharts2"></div>
  491. </div>
  492. <div class="tk-con">
  493. <p class="tk-tit">防火季火灾发生情况(年度)</p>
  494. <div id="tkCharts4"></div>
  495. </div>
  496. </div>
  497. </div>
  498. <div class="ssgz-tkcom"></div>
  499. </div>
  500. </div>
  501. <!--实时关注弹框 结束-->
  502. <!--四长统计弹框 开始-->
  503. <div id="leader-tkbg2" v-show="showModa2">
  504. <span @click="showModa2 = false" class="tk-close el-icon-close"></span>
  505. <div class="pop sztj-tk">
  506. <div class="sztj-row">
  507. <div class="sztj-div1">
  508. <p class="tk-tit">四长结构</p>
  509. <el-tabs v-model="szActiveName" @tab-click="szHandleClick" style="margin-top: 1rem">
  510. <el-tab-pane label="林长" name="lin">
  511. <div class="cont-top1 cont-top">
  512. <el-input v-model="linName" placeholder="请输入部门名称" prefix-icon="el-icon-search"
  513. style="line-height: 2rem; margin-top: 15px" />
  514. </div>
  515. <div class="sztj-1-con">
  516. <el-tree :data="data" :props="defaultProps" accordion node-key="id" ref="treeLin"
  517. :default-expanded-keys="expandedKeys" :filter-node-method="filterNode"
  518. @node-click="handleNodeClick">
  519. <template slot-scope="{ node, data }">
  520. <el-tooltip effect="dark" :content="data.title" placement="right" popper-class="js-tps"
  521. :visible-arrow="false">
  522. <div slot="content" class="leader-info-container">
  523. <div class="leader-info-list-con" v-for="(item, index) in data.title" :key="index">
  524. <h4>职务:{{ item.position }}</h4>
  525. <h4>姓名:{{ item.name }}</h4>
  526. <h4 v-if="item.phone != undefined">
  527. 电话:{{ item.phone }}
  528. </h4>
  529. </div>
  530. </div>
  531. <span class="leader-info-container-right">{{
  532. node.label
  533. }}</span>
  534. </el-tooltip>
  535. </template>
  536. </el-tree>
  537. </div>
  538. </el-tab-pane>
  539. <el-tab-pane label="田长" name="tian">
  540. <div class="cont-top1 cont-top">
  541. <el-input v-model="tianName" placeholder="请输入部门名称" prefix-icon="el-icon-search"
  542. style="line-height: 2rem; margin-top: 15px" />
  543. </div>
  544. <div class="sztj-1-con">
  545. <el-tree :data="data" :props="defaultProps" accordion node-key="id"
  546. :default-expanded-keys="expandedKeys" ref="treeTian" :filter-node-method="filterNode"
  547. @node-click="handleNodeClick">
  548. <template slot-scope="{ node, data }">
  549. <el-tooltip effect="dark" :content="data.title" placement="right" popper-class="js-tps"
  550. :visible-arrow="false">
  551. <div slot="content" class="leader-info-container">
  552. <div class="leader-info-list-con" v-for="(item, index) in data.title" :key="index">
  553. <h4>职务:{{ item.position }}</h4>
  554. <h4>姓名:{{ item.name }}</h4>
  555. <h4 v-if="item.phone != undefined">
  556. 电话:{{ item.phone }}
  557. </h4>
  558. </div>
  559. </div>
  560. <span class="leader-info-container-right">{{
  561. node.label
  562. }}</span>
  563. </el-tooltip>
  564. </template>
  565. </el-tree>
  566. </div>
  567. </el-tab-pane>
  568. <el-tab-pane label="路长" name="lu">
  569. <div class="cont-top1 cont-top">
  570. <el-input v-model="luName" placeholder="请输入部门名称" prefix-icon="el-icon-search"
  571. style="line-height: 2rem; margin-top: 15px" />
  572. </div>
  573. <div class="sztj-1-con">
  574. <el-tree :data="data" :props="defaultProps" :default-expanded-keys="expandedKeys" accordion
  575. node-key="id" ref="treeLu" :filter-node-method="filterNode" @node-click="handleNodeClick">
  576. <template slot-scope="{ node, data }">
  577. <el-tooltip effect="dark" placement="right" popper-class="js-tps" :visible-arrow="false">
  578. <div slot="content" class="leader-info-container">
  579. <div class="leader-info-list-con" v-for="(item, index) in data.title" :key="index">
  580. <h4>职务:{{ item.position }}</h4>
  581. <h4>姓名:{{ item.name }}</h4>
  582. <h4 v-if="item.phone != undefined">
  583. 电话:{{ item.phone }}
  584. </h4>
  585. </div>
  586. </div>
  587. <span class="leader-info-container-right">{{
  588. node.label
  589. }}</span>
  590. </el-tooltip>
  591. </template>
  592. </el-tree>
  593. </div>
  594. </el-tab-pane>
  595. <el-tab-pane label="河长" name="he">
  596. <div class="cont-top1 cont-top">
  597. <el-input v-model="heName" placeholder="请输入部门名称" prefix-icon="el-icon-search"
  598. style="line-height: 2rem; margin-top: 15px" />
  599. </div>
  600. <div class="sztj-1-con">
  601. <el-tree :data="data" :props="defaultProps" :default-expanded-keys="expandedKeys" accordion
  602. node-key="id" ref="treeHe" :filter-node-method="filterNode" @node-click="handleNodeClick">
  603. <template slot-scope="{ node, data }">
  604. <el-tooltip effect="dark" placement="right" popper-class="js-tps" :visible-arrow="false">
  605. <div slot="content" class="leader-info-container">
  606. <div class="leader-info-list-con" v-for="(item, index) in data.title" :key="index">
  607. <h4>职务:{{ item.position }}</h4>
  608. <h4>姓名:{{ item.name }}</h4>
  609. <h4 v-if="item.phone != undefined">
  610. 电话:{{ item.phone }}
  611. </h4>
  612. </div>
  613. </div>
  614. <span class="leader-info-container-right">{{
  615. node.label
  616. }}</span>
  617. </el-tooltip>
  618. </template>
  619. </el-tree>
  620. </div>
  621. </el-tab-pane>
  622. </el-tabs>
  623. </div>
  624. <div class="sztj-div3">
  625. <p class="tk-tit">巡护计划完成度</p>
  626. <div id="szCharts2"></div>
  627. </div>
  628. <div class="sztj-div3">
  629. <p class="tk-tit">事件任务完成度</p>
  630. <div id="szCharts3"></div>
  631. </div>
  632. <div class="sztj-div2">
  633. <p class="tk-tit">结构分析</p>
  634. <div id="szCharts1"></div>
  635. </div>
  636. </div>
  637. </div>
  638. </div>
  639. <!--四长统计弹框 结束-->
  640. <!--事件统计弹框 开始-->
  641. <div id="leader-tkbg3" v-show="showModa3">
  642. <p class="tk-tit" style="
  643. margin-bottom: 1rem;
  644. display: flex;
  645. justify-content: space-between;
  646. align-items: center;
  647. ">
  648. 事件详情(年度)
  649. <!-- <el-date-picker ref="datePickRef" v-model="queryTime" clearable type="datetimerange"-->
  650. <!-- value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss" range-separator="至" start-placeholder="开始日期"-->
  651. <!-- end-placeholder="结束日期" :validate-event="true" class="sj-data-picker-input" popper-class="sj-data-picker" />-->
  652. <!-- <el-button type="primary" icon="el-icon-printer" size="normal" @click="getEventReport()" style="-->
  653. <!-- height: 32px;-->
  654. <!-- padding: 9px 20px;-->
  655. <!-- position: relative;-->
  656. <!-- right: 2rem;-->
  657. <!-- ">生成报告-->
  658. <!-- </el-button>-->
  659. </p>
  660. <span @click="showModa3 = false" class="tk-close el-icon-close"></span>
  661. <div class="sjtj-tk">
  662. <div class="pop sstj-row">
  663. <div class="sstj-div" id="sjCharts1"></div>
  664. <div class="sstj-div" id="sjCharts2"></div>
  665. </div>
  666. </div>
  667. </div>
  668. <!--事件统计弹框 结束-->
  669. <!--一网通办弹框 开始-->
  670. <div id="leader-tbbg4" v-show="showModa4">
  671. <span @click="showModa4 = false" class="tk-close el-icon-close"></span>
  672. <div class="tbtj-tk">
  673. <div class="pop tbtj-row">
  674. <div class="tbtj-div1">
  675. <p class="tk-tit">部门办结统计Top5</p>
  676. <div id="tbCharts1"></div>
  677. </div>
  678. <div class="tbtj-div2">
  679. <p class="tk-tit">好差评统计</p>
  680. <div id="tbCharts2"></div>
  681. </div>
  682. </div>
  683. </div>
  684. </div>
  685. <!--一网通办弹框 结束-->
  686. <!--重点工程弹框 开始-->
  687. <div id="leader-tbbg5" v-show="showModa5">
  688. <span @click="showModa5 = false" class="tk-close el-icon-close"></span>
  689. <div class="gctj-tk">
  690. <div class="pop gctj-row">
  691. <div class="gctj-div1">
  692. <p class="tk-tit">重点工程实时监控</p>
  693. <div class="gctj-jk">
  694. <img :src="introductionToKeyProjectsImg" />
  695. </div>
  696. </div>
  697. <div class="gctj-div2">
  698. <h5>{{ introductionToKeyProjectsTitle }}</h5>
  699. <p>{{ introductionToKeyProjects }}</p>
  700. </div>
  701. </div>
  702. </div>
  703. </div>
  704. <!--重点工程弹框 结束-->
  705. <!--重点工程弹窗 开始-->
  706. <div id="leader-tkbg6" v-show="showModal6">
  707. <span @click="showModal6 = false" class="tk-close el-icon-close"></span>
  708. <div class="gctj-tk">
  709. <div class="pop tbtj-row">
  710. <div class="ssgz-row" style="width: 100%">
  711. <div class="tk-con"></div>
  712. <div style="display: flex">
  713. <div class="cont-top1" style="margin-right: 15px">
  714. <el-input v-model="queryParams1.params.projectName" placeholder="请输入工程名称" prefix-icon="el-icon-search"
  715. style="line-height: 2rem" />
  716. </div>
  717. <div class="cont-top1" style="margin-right: 15px">
  718. <el-select v-model="queryParams1.params.territoriality" size="small" placeholder="请选择属地辖区" class="select"
  719. :popper-append-to-body="false">
  720. <el-option v-for="dict in projectTypeList" :key="dict.value" :label="dict.label"
  721. :value="dict.value"></el-option>
  722. </el-select>
  723. </div>
  724. <div class="cont-top1" style="margin-right: 15px">
  725. <el-input v-model="queryParams1.params.park" placeholder="请输入所属开发区" prefix-icon="el-icon-search"
  726. style="line-height: 2rem" />
  727. </div>
  728. <div>
  729. <el-button type="primary" icon="el-icon-search" size="normal" @click="getKeyProjects1()"
  730. style="margin-right: 15px; height: 32px; padding: 9px 20px">搜索
  731. </el-button>
  732. </div>
  733. <div>
  734. <el-button icon="el-icon-refresh" size="normal" @click="resetting(1)"
  735. style="height: 32px; padding: 9px 20px">重置
  736. </el-button>
  737. </div>
  738. </div>
  739. <el-table :data="imgLists" height="250" border style="width: 100%; margin-top: 0.5rem">
  740. <el-table-column label="工程名称" align="center" prop="projectName" />
  741. <el-table-column label="属地辖区" align="center" prop="territoriality" />
  742. <el-table-column label="所属开发区" align="center" prop="park" />
  743. <el-table-column label="查看摄像头" align="center" class-name="small-padding fixed-width">
  744. <template slot-scope="scope">
  745. <el-button size="mini" type="text" @click="fn5(scope.row, 1)"><i
  746. class="iconfont sj-icon-jkzx icon-sxt"></i></el-button>
  747. </template>
  748. </el-table-column>
  749. </el-table>
  750. <pagination id="pagination1" v-show="total > 0" :total="total" :page.sync="queryParams1.pageNum"
  751. :limit.sync="queryParams1.pageSize" @pagination="getKeyProjects1" popper-class="sj-pagination" />
  752. </div>
  753. </div>
  754. <div class="ssgz-tkcom"></div>
  755. </div>
  756. </div>
  757. <!--重点工程弹窗 结束-->
  758. <!--重点区域弹窗 开始-->
  759. <div id="leader-tkbg7" v-show="showModal7">
  760. <span @click="showModal7 = false" class="tk-close el-icon-close"></span>
  761. <div class="zdqy-tk">
  762. <div class="pop tbtj-row">
  763. <div class="ssgz-row" style="width: 100%">
  764. <div class="tk-con"></div>
  765. <div style="display: flex">
  766. <div class="cont-top1" style="margin-right: 15px">
  767. <el-input v-model="queryParams.params.areaName" placeholder="请输入区域名称" prefix-icon="el-icon-search"
  768. style="line-height: 2rem" />
  769. </div>
  770. <div class="cont-top1" style="margin-right: 15px">
  771. <el-select v-model="queryParams.params.projectLevel" size="small" placeholder="请选择区域级别" class="select"
  772. :popper-append-to-body="false">
  773. <el-option v-for="dict in dict.type.centerdata_project_level" :key="dict.value" :label="dict.label"
  774. :value="dict.value"></el-option>
  775. </el-select>
  776. </div>
  777. <div>
  778. <el-button type="primary" icon="el-icon-search" size="mini" @click="getImportAreaList1()"
  779. style="margin-right: 15px; height: 32px; padding: 9px 20px">搜索
  780. </el-button>
  781. </div>
  782. <div>
  783. <el-button icon="el-icon-refresh" size="mini" @click="resetting(2)"
  784. style="height: 32px; padding: 9px 20px">重置
  785. </el-button>
  786. </div>
  787. </div>
  788. <el-table :data="keyAreasListList" height="250" border style="width: 100%; margin-top: 0.5rem">
  789. <el-table-column label="区域名称" align="center" prop="areaName" />
  790. <el-table-column label="区域级别" align="center" prop="projectLevel">
  791. <template slot-scope="scope">
  792. <dict-tag :options="dict.type.centerdata_project_level" :value="scope.row.projectLevel" />
  793. </template>
  794. </el-table-column>
  795. <el-table-column label="查看摄像头" align="center" class-name="small-padding fixed-width">
  796. <template slot-scope="scope">
  797. <el-button size="mini" type="text" @click="fn5(scope.row, 2)"><i
  798. class="iconfont sj-icon-jkzx icon-sxt"></i></el-button>
  799. </template>
  800. </el-table-column>
  801. </el-table>
  802. <pagination v-show="total1 > 0" :total="total1" :page.sync="queryParams.pageNum"
  803. :limit.sync="queryParams.pageSize" @pagination="getImportAreaList1" popper-class="sj-pagination" />
  804. </div>
  805. </div>
  806. <div class="ssgz-tkcom"></div>
  807. </div>
  808. </div>
  809. <!--重点区域弹窗 结束-->
  810. <!--电视墙 无右侧 开始-->
  811. <TVWallNoRight ref="TVWallNoRight"></TVWallNoRight>
  812. <TVWall ref="TVWall"></TVWall>
  813. <!--电视墙 结束-->
  814. <!--下载附件 开始-->
  815. <el-dialog title="文件下载" :visible.sync="isShowDownloadList" customClass="black-dialog" v-if="isShowDownloadList"
  816. width="35%" @close="cancelShowDownloadList()">
  817. <el-form>
  818. <div class="bottom">
  819. <div ref="wrapper">
  820. <el-form-item>
  821. <el-input v-model="fileNameS" style="width: 85%"
  822. onkeydown="if (event.keyCode===13){return false;}"></el-input>
  823. <el-button type="primary" icon="el-icon-search" @click="showDownloadList('1')">搜索
  824. </el-button>
  825. </el-form-item>
  826. <el-table :data="downloadList" style="width: 100%;height: 53vh;overflow-y: auto">
  827. <el-table-column prop="name" label="附件名称">
  828. <template slot-scope="scope">
  829. {{ scope.row.fileName }}
  830. </template>
  831. </el-table-column>
  832. <el-table-column prop="bookbuytime" label="操作">
  833. <template slot-scope="scope">
  834. <el-button size="mini" type="danger" icon="el-icon-download" @click="download(scope.row.path)">下载
  835. </el-button>
  836. </template>
  837. </el-table-column>
  838. </el-table>
  839. </div>
  840. </div>
  841. </el-form>
  842. </el-dialog>
  843. <!--下载附件 结束-->
  844. <eventdetailsdialog ref="eventdetailsdialog"></eventdetailsdialog>
  845. <TVWalls ref="TVWalls"></TVWalls>
  846. </div>
  847. </template>
  848. <script>
  849. import * as echarts from 'echarts'
  850. import supermap from '@/components/supermap-2.5d' //超图
  851. import TVWall from '@/views/tvwall/TVWall.vue' //电视墙弹窗
  852. import TVWalls from '@/views/tvwall/TVWalls.vue' //电视墙弹窗
  853. import TVWallNoRight from '@/views/tvwall/TVWall-no-right.vue' //电视墙弹窗
  854. import eventdetailsdialog from '@/views/eventdetailsdialog.vue' //事件详情弹窗
  855. import monitorbar from '@/components/leaderIndex/monitorbar.vue' // 视联网bar组件
  856. import camerabar from '@/components/leaderIndex/camerabar.vue' // 视联网bar组件
  857. import monitorlist from '@/components/leaderIndex/monitorlist.vue' // 视联网左侧组件
  858. import cameralist from '@/components/leaderIndex/cameralist.vue' // 视联网左侧组件
  859. import VfastMenu from '@/components/v-fastmenu.vue' // 头部右侧菜单
  860. import expendbutton from '@/components/expendbutton' //左右收起展开
  861. /** ----------------------------------摄像头预览开始------------------------------------- */
  862. import { getTVWallList } from '@/api/dahua/dahua'
  863. import DHWs from '@/dahua/lib/DHWs'
  864. /** ----------------------------------摄像头预览结束------------------------------------- */
  865. import {
  866. allAtOnce,
  867. fourLengthOverTree,
  868. fourLengthOverview,
  869. fourLengthOverviewOther,
  870. getAnalysisReport,
  871. getCamerasByDeptId,
  872. getDeptEventCount,
  873. getDlblistBydeptId,
  874. getEventPoint,
  875. getEventStatistics,
  876. getEventStatisticsOther,
  877. getImportAreaList,
  878. getImportAreaListOne,
  879. getKeyProjects,
  880. getKeyProjectsOne,
  881. getSensorListByDeptId,
  882. getWeather,
  883. initByArea,
  884. initByProject,
  885. rotation,
  886. searchAllYouWant
  887. } from '@/api/system/commandCenter'
  888. import { getMonitorDeviceAndDataList, selectCameraByDeptId } from '@/api/monitor'
  889. import { selectConfigKey } from '@/api/system/config'
  890. import {
  891. getResourceagriculture,
  892. getResourceemergency,
  893. getResourceenvironment,
  894. getResourcefire,
  895. getResourceres,
  896. getResourcesCounttraffic,
  897. getResourcewater
  898. } from '@/api/system/datacenter'
  899. import {
  900. fireControlViewList,
  901. fireControlViewPointPost,
  902. getEnvironmentLeader,
  903. getEnvironmentRy,
  904. getFirecontrolLeader,
  905. getFirecontrolRy,
  906. getForestLeader,
  907. getForestryRy,
  908. getPlanList,
  909. getResourceDetail,
  910. getResourcesRy,
  911. getRresourcesRyListByJob,
  912. getTaskList,
  913. getTrack,
  914. getTrafficRy,
  915. getTrafficRyListByJob,
  916. getWaterRy,
  917. getWaterRyListByJob,
  918. initByCameras,
  919. notCoverPlaces
  920. } from '@/api/leadex-index'
  921. import Cookies from 'js-cookie'
  922. import { getDicts } from '@/api/system/dict/data'
  923. export default {
  924. components: {
  925. supermap,
  926. TVWall,
  927. TVWalls,
  928. TVWallNoRight,
  929. eventdetailsdialog,
  930. camerabar,
  931. monitorlist,
  932. monitorbar,
  933. VfastMenu,
  934. expendbutton,
  935. cameralist,
  936. },
  937. watch: {
  938. heName(val) {
  939. this.$refs.treeHe.filter(val);
  940. },
  941. luName(val) {
  942. this.$refs.treeLu.filter(val);
  943. },
  944. linName(val) {
  945. this.$refs.treeLin.filter(val);
  946. },
  947. tianName(val) {
  948. this.$refs.treeTian.filter(val);
  949. },
  950. },
  951. metaInfo() {
  952. return {
  953. title: '态势感知平台',
  954. meta: [{
  955. charset: "utf-8"
  956. },
  957. {
  958. name: "viewport",
  959. content: "width=device-width, initial-scale=1.0,minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"
  960. }
  961. ]
  962. }
  963. },
  964. created() {
  965. this.getheaderTitle;
  966. this.currentTime();
  967. this.out1();
  968. this.out2();
  969. this.out3();
  970. this.out4();
  971. this.out6();
  972. this.out7();
  973. this.dept = Cookies.get("deptId");
  974. this.deptId = Cookies.get("deptId");
  975. this.userDeptId = Cookies.get("deptId");
  976. let isDept = this.deptList.filter((item) => item.value == this.dept).length;
  977. if (isDept == 0) {
  978. this.$router.push("/newpage");
  979. }
  980. /** ----------------------------------摄像头预览开始------------------------------------- */
  981. const DHWsInstance = DHWs.getInstance();
  982. this.ws = DHWsInstance;
  983. window.choseLayerSwitchingList_Data = this.choseLayerSwitchingList_Data;
  984. /** ----------------------------------摄像头预览结束------------------------------------- */
  985. },
  986. dicts: ["centerdata_project_level", "forest_lin_level", "camera_system"],
  987. beforeDestroy() {
  988. clearInterval(this.cgqTimer); //关闭
  989. },
  990. data() {
  991. return {
  992. resourcesTypeList: [{
  993. 'id': 1,
  994. 'name': 'linye'
  995. },
  996. {
  997. 'id': 2,
  998. 'name': 'nongye'
  999. },
  1000. {
  1001. 'id': 3,
  1002. 'name': 'shuili'
  1003. },
  1004. {
  1005. 'id': 4,
  1006. 'name': 'huanbao'
  1007. },
  1008. {
  1009. 'id': 5,
  1010. 'name': 'yingji'
  1011. },
  1012. {
  1013. 'id': 6,
  1014. 'name': 'jiaotong'
  1015. },
  1016. {
  1017. 'id': 7,
  1018. 'name': 'ziyuan'
  1019. },
  1020. {
  1021. 'id': 8,
  1022. 'name': 'xiaofang'
  1023. }
  1024. ],
  1025. userDeptId: "",
  1026. deptId: "",
  1027. //展开收起
  1028. expandValue: false,
  1029. //按钮选中
  1030. btnGetFocus1: false,
  1031. btnGetFocus2: false,
  1032. btnGetFocus3: false,
  1033. btnGetFocus4: false,
  1034. personnelVisualizationModel: "1",
  1035. personnelVisualizationList: [],
  1036. personneType: "",
  1037. personneTypeList: [],
  1038. personne: "",
  1039. personneList: [],
  1040. cgqTimer: null,
  1041. personneTask: "",
  1042. personneTaskList: [],
  1043. personneTaskTrajectoryList: [],
  1044. localPersonnelVisualizationModel: "",
  1045. //图层checkbox
  1046. layerCheckList: [],
  1047. resourcesList: [],
  1048. pvisible: false,
  1049. markersList: [],
  1050. resourcesType: "1",
  1051. resourcesCheckList: [],
  1052. personList: [],
  1053. headerTitle: "",
  1054. queryParams: {
  1055. pageNum: 1,
  1056. pageSize: 10,
  1057. deptId: null,
  1058. params: {
  1059. areaName: null,
  1060. projectLevel: null,
  1061. },
  1062. },
  1063. queryParams1: {
  1064. pageNum: 1,
  1065. pageSize: 10,
  1066. deptId: null,
  1067. params: {
  1068. projectName: null,
  1069. territoriality: null,
  1070. park: null,
  1071. },
  1072. },
  1073. titlename: "",
  1074. // 四长虚拟结构
  1075. leaderData: [],
  1076. // 下载操作手册列表弹出层
  1077. isShowDownloadList: false,
  1078. // 下载列表
  1079. downloadList: [],
  1080. // 四长概况
  1081. overview: [100, 50, 50, 50],
  1082. // 四长概况比例
  1083. overviewPercentCount: 0,
  1084. // tab默认
  1085. rActiveName: 0,
  1086. // 当前时间
  1087. nowTime: "", //现在时间
  1088. projectName: "",
  1089. projectLevel: null,
  1090. placeList: [{
  1091. value: "365",
  1092. label: "四平市",
  1093. }, ],
  1094. deptList: [{
  1095. value: "365",
  1096. label: "所有县(市)区",
  1097. }, // 365_四平市
  1098. {
  1099. value: "369",
  1100. label: "双辽市",
  1101. }, // 369_双辽市
  1102. {
  1103. value: "371",
  1104. label: "梨树县",
  1105. }, // 371_梨树县
  1106. {
  1107. value: "373",
  1108. label: "铁西区",
  1109. }, // 373_铁西区
  1110. {
  1111. value: "372",
  1112. label: "铁东区",
  1113. }, // 372_铁东区
  1114. {
  1115. value: "370",
  1116. label: "伊通县",
  1117. }, // 370_伊通县
  1118. ],
  1119. place: "365",
  1120. dept: "365",
  1121. // 重点工程
  1122. imgList: [],
  1123. projectTypeList:[
  1124. {value: "市本级",label: "市本级"},
  1125. {value: "铁西区",label: "铁西区"},
  1126. {value: "铁东区",label: "铁东区"},
  1127. {value: "梨树县",label: "梨树县"},
  1128. {value: "双辽市",label: "双辽市"},
  1129. {value: "伊通县",label: "伊通县"},
  1130. ],
  1131. imgLists: [],
  1132. leftVal: 0, // 轮播图盒子的偏移值
  1133. flag: true, // 用来节流防止重复点击
  1134. start: null, // 自动执行下一张定的时器
  1135. imgWidth: 500, // 在这里填写你需要的图片宽度
  1136. ition: 0.8, // 设置轮播图过度时间
  1137. imgShow: 0, // 表示当前显示的图片索引
  1138. weatherinformationLow: 0,
  1139. weatherinformationHigh: 0,
  1140. weatherinformationTemperature: 0,
  1141. weatherinformationPower: 0,
  1142. weatherinformationDirection: 0,
  1143. // 重点区域
  1144. keyAreasList: [],
  1145. keyAreasLists: [],
  1146. keyAreasListList: [],
  1147. num: 0,
  1148. visible_tc: false,
  1149. visible_dw: false,
  1150. visible_slw: false,
  1151. visible_wlw: false,
  1152. visible_ygb: false,
  1153. visible_zy: false,
  1154. // 实时关注弹框
  1155. showModal: false,
  1156. // 四长统计弹框
  1157. showModa2: false,
  1158. // 事件统计弹框
  1159. showModa3: false,
  1160. // 一网通办弹框
  1161. showModa4: false,
  1162. // 重点工程弹框
  1163. showModa5: false,
  1164. showModal6: false,
  1165. showModal7: false,
  1166. // 四长统计tab
  1167. szActiveName: "lin",
  1168. heName: "",
  1169. linName: "",
  1170. luName: "",
  1171. tianName: "",
  1172. // 四长统计 tree
  1173. data: [],
  1174. defaultProps: {
  1175. children: "children",
  1176. label: "label",
  1177. },
  1178. // 实时关注数据
  1179. interestList: [],
  1180. // 实时关注事件总数
  1181. interestTotal: 0,
  1182. // 实时关注 - 当前防火季火灾损失统计
  1183. fireLossStatistics: [],
  1184. // 实时关注 - 起火原因统计
  1185. statisticsCausesFire: [],
  1186. // 实时关注 - 起火场所统计
  1187. statisticsFireSites: [],
  1188. // 实时关注 - 防火季火灾发生情况
  1189. fireSituation: [],
  1190. // 事件统计-事件详情
  1191. eventDetails1: [],
  1192. eventDetails2: [],
  1193. visuForestCloudMonitorBOListSearch: [],
  1194. visuForestCloudMonitorBOList: [],
  1195. // 重点工程简介
  1196. introductionToKeyProjectsTitle: "",
  1197. introductionToKeyProjects: "",
  1198. introductionToKeyProjectsImg: "",
  1199. // 四长概况计划完成度
  1200. fourLengthPlan: [100, 100, 100, 100],
  1201. // 四长统计
  1202. fourLengthStatistics: {
  1203. TotalNumberofPeople: 0,
  1204. list: [{
  1205. num: 0,
  1206. title: "河长责任里程",
  1207. },
  1208. {
  1209. num: 0,
  1210. title: "林长责任里程",
  1211. },
  1212. {
  1213. num: 0,
  1214. title: "路长责任里程",
  1215. },
  1216. {
  1217. num: 0,
  1218. title: "田长责任里程",
  1219. },
  1220. ],
  1221. },
  1222. total1: 0,
  1223. // 四长统计趋势图
  1224. fourLengthTask: [{
  1225. name: "河长",
  1226. value: 0,
  1227. },
  1228. {
  1229. name: "林长",
  1230. value: 0,
  1231. },
  1232. {
  1233. name: "路长",
  1234. value: 0,
  1235. },
  1236. {
  1237. name: "田长",
  1238. value: 0,
  1239. },
  1240. ],
  1241. // 事件统计
  1242. eventStatistics: {
  1243. untreatedNum: 0,
  1244. totalNum: 0,
  1245. processedNum: 0,
  1246. eventList: [],
  1247. },
  1248. total: 0,
  1249. // 一网通办
  1250. networkprocessingData: {},
  1251. /** ----------------------------------摄像头预览开始------------------------------------- */
  1252. //大华
  1253. activePanel: "key1",
  1254. areaName: null,
  1255. isLogin: false,
  1256. cameraParams: [],
  1257. ws: null,
  1258. //海康
  1259. cameraTitle: "",
  1260. cameraVisible: false,
  1261. initCount: 0,
  1262. pubKey: "",
  1263. oWebControl: null,
  1264. /** ----------------------------------摄像头预览结束------------------------------------- */
  1265. lossCount: 0,
  1266. blazesCount: 0,
  1267. fileNameS: "",
  1268. positioning: {
  1269. lon: "",
  1270. lat: ""
  1271. },
  1272. /** ----------------------------------左右侧隐藏------------------------------------- */
  1273. // 首页边栏显隐
  1274. sideShowHome: true,
  1275. // 互联网显隐
  1276. sideShowCamera: false,
  1277. sideShowMonitor: false,
  1278. expandedKeys: [],
  1279. cameraUseList: [],
  1280. broadcastUseList: [],
  1281. broadcastUseCheckList: [],
  1282. cameraUseCheckList: [],
  1283. sensorList: [],
  1284. sensorCheckList: [],
  1285. queryTime: [],
  1286. farmingList: [
  1287. "centerdata_t_farm_agricultural_cooperatives",
  1288. "centerdata_t_farm_botany_protect_info",
  1289. "centerdata_t_farm_enterprise@1",
  1290. "centerdata_t_farm_enterprise@2",
  1291. "centerdata_t_farm_enterprise@3",
  1292. "centerdata_t_farm_filings_livestock",
  1293. "centerdata_t_farm_livestock",
  1294. "centerdata_t_farm_agricultural_supervise",
  1295. "centerdata_t_farm_excrement_dispose",
  1296. "centerdata_t_farm_complex_modification",
  1297. "centerdata_t_farm_greenhouse_film",
  1298. "centerdata_t_farm_agricultural_machinery_info"
  1299. ],
  1300. };
  1301. },
  1302. mounted() {
  1303. // 当前时间
  1304. this.getNowTime(); //调用函数
  1305. this.getheaderTitle();
  1306. // 初始化数据
  1307. this.getByDeptId(-1);
  1308. this.getDicts();
  1309. this.expandClick();
  1310. this.choseLayerSwitchingList_Data([
  1311. "http://121.36.228.94:8090/iserver/services/map-BaiShan/rest/maps/BanShiLinChangLK",
  1312. ]);
  1313. // 重点工程
  1314. this.imgWidth = this.$refs.SwiperBox.width // 自动获取轮播图盒子宽度
  1315. this.gogo();
  1316. },
  1317. methods: {
  1318. openLiveAction() {
  1319. window.open("/live-action", "_blank");
  1320. },
  1321. lonAndLatQueryCamera() {
  1322. console.log(this.$refs.supermap.positioningEntity)
  1323. //经度,整数部分为0-180小数部分为0到15位
  1324. var longreg =
  1325. /^(\-|\+)?(((\d|[1-9]\d|1[0-7]\d|0{1,3})\.\d{0,15})|(\d|[1-9]\d|1[0-7]\d|0{1,3})|180\.0{0,15}|180)$/
  1326. if (!longreg.test(this.positioning.lon)) {
  1327. this.$message.warning('经度整数部分为0-180,小数部分为0到15位!')
  1328. return
  1329. }
  1330. //纬度,整数部分为0-90小数部分为0到15位
  1331. var latreg = /^(\-|\+)?([0-8]?\d{1}\.\d{0,15}|90\.0{0,15}|[0-8]?\d{1}|90)$/
  1332. if (!latreg.test(this.positioning.lat)) {
  1333. this.$message.warning('纬度整数部分为0-90,小数部分为0到15位!')
  1334. return
  1335. }
  1336. this.$refs.supermap.lonAndLatPlacement(this.positioning.lon, this.positioning.lat)
  1337. const params = Object.assign({})
  1338. params.longitude = this.positioning.lon;
  1339. params.latitude = this.positioning.lat;
  1340. params.type = '1,2,3,4,5,6,7,8'
  1341. initByCameras(params).then(res => {
  1342. if(res.data != null && res.data.length != 0){
  1343. this.$refs.TVWallNoRight.showTVWall1(this.positioning.lon, this.positioning.lat, res.data);
  1344. }else{
  1345. this.$message.warning('周边无摄像头信息!')
  1346. }
  1347. })
  1348. },
  1349. setPositioning(longitude, latitude) {
  1350. let that = this
  1351. that.positioning.lon = longitude
  1352. that.positioning.lat = latitude
  1353. },
  1354. getLocation(event) {
  1355. if (event == 1) {
  1356. this.visible_dw = !this.visible_dw
  1357. this.showModal7 = false;
  1358. this.showModal6 = false;
  1359. } else {
  1360. this.visible_dw = false
  1361. }
  1362. if (!this.visible_dw) {
  1363. this.positioning.lon = ''
  1364. this.positioning.lat = ''
  1365. this.$refs.supermap.clearDW()
  1366. }
  1367. this.$refs.supermap.setIsObtainLaAndLon(this.visible_dw)
  1368. },
  1369. truncatedText(str) {
  1370. if (str.length <= 19) {
  1371. return str;
  1372. } else {
  1373. return str.substring(0, 19) + '...';
  1374. }
  1375. },
  1376. getDicts() {
  1377. let that = this
  1378. let cgqlist = []
  1379. getDicts("camera_use").then(req => {
  1380. that.cameraUseList = req.data
  1381. cgqlist.push.apply(cgqlist, req.data.filter(item => item.dictValue != "2"))
  1382. })
  1383. getDicts("device_type").then(req => {
  1384. cgqlist.push.apply(cgqlist, req.data)
  1385. that.sensorList = cgqlist
  1386. })
  1387. getDicts("broadcast_use").then(req => {
  1388. that.broadcastUseList = req.data
  1389. })
  1390. },
  1391. // 展开收起
  1392. expandClick(value) {
  1393. this.expandValue = !this.expandValue;
  1394. // console.log(value,'=================================================== ============')
  1395. },
  1396. //数据获取
  1397. getMonitorDeviceAndData() {
  1398. let that = this
  1399. that.$refs.supermap.clearG();
  1400. //当左右收起,点击视联网,左右会弹出
  1401. if (!that.expandValue) {
  1402. that.$refs.exb.expandClick();
  1403. }
  1404. that.resourcesCheckList = [];
  1405. that.broadcastUseCheckList = []
  1406. that.cameraUseCheckList = []
  1407. that.sensorCheckList = []
  1408. that.btnGetFocus1 = false;
  1409. that.btnGetFocus2 = !that.btnGetFocus2;
  1410. that.visible_wlw = !that.visible_wlw;
  1411. that.btnGetFocus3 = false;
  1412. that.btnGetFocus4 = false;
  1413. that.showModal7 = false;
  1414. that.showModal6 = false;
  1415. this.getLocation()
  1416. that.resettings();
  1417. if (!that.btnGetFocus2) {
  1418. that.$refs.supermap.clearM();
  1419. that.$refs.supermap.clearMRadius();
  1420. return;
  1421. }
  1422. that.getMonitorDeviceAndDataList();
  1423. clearInterval(that.cgqTimer);
  1424. that.cgqTimer = setInterval(() => {
  1425. that.getMonitorDeviceAndDataList();
  1426. }, 5 * 60 * 1000);
  1427. if (that.sideShowMonitor) {
  1428. that.titleClick();
  1429. return;
  1430. } else {
  1431. that.sideShowHome = false;
  1432. that.sideShowMonitor = true;
  1433. that.sideShowCamera = false;
  1434. that.sensorList.forEach(function(item) {
  1435. that.sensorCheckList.push(item.dictLabel)
  1436. });
  1437. }
  1438. that.$refs.sideShowMonitor.updatePopper();
  1439. },
  1440. getEventReport() {
  1441. console.log(this.queryTime)
  1442. if (this.queryTime == null || this.queryTime.length < 2) {
  1443. this.$modal.msgWarning("请选择时间");
  1444. return
  1445. }
  1446. let start = this.queryTime[0];
  1447. let end = this.queryTime[1];
  1448. selectConfigKey("eventReport").then((res) => {
  1449. window.open(res.data + "/commandCenter/getEventReport?params%5Bstart%5D=" + start + "&params%5Bend%5D=" +
  1450. end);
  1451. });
  1452. },
  1453. getMonitorList(deptId) {
  1454. let list = [];
  1455. let markersList = [];
  1456. let cameraMarkersList = [];
  1457. this.deptId = deptId;
  1458. let deviceTypeList = [];
  1459. let cameraList = [];
  1460. for (var i = 0; i < this.sensorCheckList.length; i++) {
  1461. let data = this.sensorList.filter(item => item.dictLabel == this.sensorCheckList[i])
  1462. if (data.length > 0) {
  1463. if (data[0].dictType == "camera_use") {
  1464. cameraList.push(data[0].dictValue)
  1465. }
  1466. if (data[0].dictType == "device_type") {
  1467. deviceTypeList.push(data[0].dictValue)
  1468. }
  1469. }
  1470. }
  1471. if (deviceTypeList.length == 0 && cameraList.length == 0) {
  1472. for (var i = 0; i < this.sensorList.length; i++) {
  1473. if (this.sensorList[i].dictType == "camera_use") {
  1474. cameraList.push(this.sensorList[i].dictValue)
  1475. }
  1476. if (this.sensorList[i].dictType == "device_type") {
  1477. deviceTypeList.push(this.sensorList[i].dictValue)
  1478. }
  1479. }
  1480. }
  1481. const deviceType = deviceTypeList.join(",");
  1482. const camera = cameraList.join(",");
  1483. getMonitorDeviceAndDataList(deptId, deviceType).then((res) => {
  1484. this.visuForestCloudMonitorBOListSearch = [];
  1485. list = res.data;
  1486. //this.sensorNum = list.length
  1487. list.forEach((item) => {
  1488. let dat = {
  1489. cameraName: item.deviceName,
  1490. longitude: item.longitude,
  1491. latitude: item.latitude,
  1492. };
  1493. this.visuForestCloudMonitorBOListSearch.push(dat);
  1494. let markersMap = {
  1495. lng: 124.59,
  1496. lat: 43.02,
  1497. icon: "marker",
  1498. bindPopupHtml: '<div class="map-tip">' +
  1499. "<span>" +
  1500. ' <div class="d-l-con">' +
  1501. ' <div class="d-l-l-text">' +
  1502. " <h4>名称:" +
  1503. (item.deviceName ? item.deviceName : "") +
  1504. "</h4>" +
  1505. " </div>" +
  1506. " </div>" +
  1507. " </span>" +
  1508. "<span>" +
  1509. ' <div class="d-l-con">' +
  1510. ' <div class="d-l-l-text">' +
  1511. " <h4>经纬度:" +
  1512. item.longitude +
  1513. "," +
  1514. item.latitude +
  1515. "</h4>" +
  1516. " </div>" +
  1517. " </div>" +
  1518. " </span>" +
  1519. "</div>",
  1520. click: "",
  1521. parameter: "",
  1522. name: "",
  1523. keepBindPopup: false,
  1524. isAggregation: false,
  1525. };
  1526. if (item.deviceType == 1) {
  1527. // 水质传感器
  1528. markersMap.icon = "sj-icon-map-centerdata_water_quality_sensor";
  1529. if (item.data != null) {
  1530. markersMap.bindPopupHtml +=
  1531. '<div class="map-tip">' +
  1532. "<span>" +
  1533. ' <div class="d-l-con">' +
  1534. ' <div class="d-l-l-text">' +
  1535. " <h4>类型:水质传感器" +
  1536. "</h4>" +
  1537. " </div>" +
  1538. " </div>" +
  1539. " </span>" +
  1540. "<span>" +
  1541. ' <div class="d-l-con">' +
  1542. ' <div class="d-l-l-text">' +
  1543. " <h4>水中PH:" +
  1544. (item.data.waterPh ?
  1545. item.data.waterPh +
  1546. "pH | " +
  1547. (item.threshold ?
  1548. item.threshold.waterPhThresholdUp +
  1549. "pH - " +
  1550. item.threshold.waterPhThresholdDown +
  1551. "pH" :
  1552. "0pH - 0pH") :
  1553. "0pH | 0pH - 0pH") +
  1554. "</h4>" +
  1555. " </div>" +
  1556. " </div>" +
  1557. " </span>" +
  1558. "<span>" +
  1559. ' <div class="d-l-con">' +
  1560. ' <div class="d-l-l-text">' +
  1561. " <h4>化学需氧量:" +
  1562. (item.data.cod ? item.data.cod + "mg/L" : "0mg/L") +
  1563. "</h4>" +
  1564. " </div>" +
  1565. " </div>" +
  1566. " </span>" +
  1567. "<span>" +
  1568. ' <div class="d-l-con">' +
  1569. ' <div class="d-l-l-text">' +
  1570. " <h4>氨氮:" +
  1571. (item.data.ammoniaNitrogen ?
  1572. item.data.ammoniaNitrogen + "mg/L" :
  1573. "0mg/L") +
  1574. "</h4>" +
  1575. " </div>" +
  1576. " </div>" +
  1577. " </span>" +
  1578. "<span>" +
  1579. ' <div class="d-l-con">' +
  1580. ' <div class="d-l-l-text">' +
  1581. " <h4>水温:" +
  1582. (item.data.waterTemperature ?
  1583. item.data.waterTemperature +
  1584. "°C | " +
  1585. (item.threshold ?
  1586. item.threshold.waterTemperatureThresholdUp +
  1587. "°C - " +
  1588. item.threshold.waterTemperatureThresholdDown +
  1589. "°C" :
  1590. "0°C - 0°C") :
  1591. "0°C | 0°C - 0°C") +
  1592. "</h4>" +
  1593. " </div>" +
  1594. " </div>" +
  1595. " </span>" +
  1596. "</div>";
  1597. }
  1598. } else if (item.deviceType == 8) {
  1599. // 水尺
  1600. markersMap.icon = "sj-icon-map-centerdata_water_gauge";
  1601. markersMap.bindPopupHtml +=
  1602. '<div class="map-tip">' +
  1603. "<span>" +
  1604. ' <div class="d-l-con">' +
  1605. ' <div class="d-l-l-text">' +
  1606. " <h4>类型:水尺传感器" +
  1607. "</h4>" +
  1608. " </div>" +
  1609. " </div>" +
  1610. " </span>" +
  1611. "<span>" +
  1612. ' <div class="d-l-con">' +
  1613. ' <div class="d-l-l-text">' +
  1614. " <h4>地址:" +
  1615. (item.address ? item.address : "") +
  1616. "</h4>" +
  1617. " </div>" +
  1618. " </div>" +
  1619. " </span>" +
  1620. "</div>";
  1621. } else if (item.deviceType == "003") {
  1622. // 水文监测设备
  1623. markersMap.icon =
  1624. "sj-icon-map-centerdata_hydrological_monitoring_equipment";
  1625. markersMap.bindPopupHtml +=
  1626. '<div class="map-tip">' +
  1627. "<span>" +
  1628. ' <div class="d-l-con">' +
  1629. ' <div class="d-l-l-text">' +
  1630. " <h4>类型:水文传感器" +
  1631. "</h4>" +
  1632. " </div>" +
  1633. " </div>" +
  1634. " </span>" +
  1635. "</div>";
  1636. } else if (item.deviceType == 2) {
  1637. // 土壤监测设备
  1638. markersMap.icon =
  1639. "sj-icon-map-centerdata_soil_monitoring_equipment";
  1640. if (item.data != null) {
  1641. markersMap.bindPopupHtml +=
  1642. '<div class="map-tip">' +
  1643. "<span>" +
  1644. ' <div class="d-l-con">' +
  1645. ' <div class="d-l-l-text">' +
  1646. " <h4>类型:土壤监测设备" +
  1647. "</h4>" +
  1648. " </div>" +
  1649. " </div>" +
  1650. " </span>" +
  1651. "<span>" +
  1652. ' <div class="d-l-con">' +
  1653. ' <div class="d-l-l-text">' +
  1654. " <h4>钾含量:" +
  1655. (item.data.potassium ?
  1656. item.data.potassium +
  1657. "mg/kg | " +
  1658. (item.threshold ?
  1659. item.threshold.potassiumThresholdUp +
  1660. "mg/kg - " +
  1661. item.threshold.potassiumThresholdDown +
  1662. "mg/kg" :
  1663. "0mg/kg - 0mg/kg") :
  1664. "0mg/kg | 0mg/kg - 0mg/kg") +
  1665. "</h4>" +
  1666. " </div>" +
  1667. " </div>" +
  1668. " </span>" +
  1669. "<span>" +
  1670. ' <div class="d-l-con">' +
  1671. ' <div class="d-l-l-text">' +
  1672. " <h4>导电率:" +
  1673. (item.data.conductivity ?
  1674. item.data.conductivity +
  1675. "us/cm | " +
  1676. (item.threshold ?
  1677. item.threshold.conductivityThresholdUp +
  1678. "us/cm - " +
  1679. item.threshold.conductivityThresholdDown +
  1680. "us/cm" :
  1681. "0us/cm - 0us/cm") :
  1682. "0us/cm | 0us/cm - 0us/cm") +
  1683. "</h4>" +
  1684. " </div>" +
  1685. " </div>" +
  1686. " </span>" +
  1687. "<span>" +
  1688. ' <div class="d-l-con">' +
  1689. ' <div class="d-l-l-text">' +
  1690. " <h4>氮含量:" +
  1691. (item.data.nitrogen ?
  1692. item.data.nitrogen +
  1693. "mg/kg | " +
  1694. (item.threshold ?
  1695. item.threshold.nitrogenThresholdUp +
  1696. "mg/kg - " +
  1697. item.threshold.nitrogenThresholdDown +
  1698. "mg/kg" :
  1699. "0mg/kg - 0mg/kg") :
  1700. "0mg/kg | 0mg/kg - 0mg/kg") +
  1701. "</h4>" +
  1702. " </div>" +
  1703. " </div>" +
  1704. " </span>" +
  1705. "<span>" +
  1706. ' <div class="d-l-con">' +
  1707. ' <div class="d-l-l-text">' +
  1708. " <h4>温度:" +
  1709. (item.data.temperature ?
  1710. item.data.temperature +
  1711. "°C | " +
  1712. (item.threshold ?
  1713. item.threshold.temperatureThresholdUp +
  1714. "°C - " +
  1715. item.threshold.temperatureThresholdDown +
  1716. "°C" :
  1717. "0°C - 0°C") :
  1718. "0°C | 0°C - 0°C") +
  1719. "</h4>" +
  1720. " </div>" +
  1721. " </div>" +
  1722. " </span>" +
  1723. "<span>" +
  1724. ' <div class="d-l-con">' +
  1725. ' <div class="d-l-l-text">' +
  1726. " <h4>ph值:" +
  1727. (item.data.ph ?
  1728. item.data.ph +
  1729. "pH | " +
  1730. (item.threshold ?
  1731. item.threshold.phThresholdUp +
  1732. "pH - " +
  1733. item.threshold.phThresholdDown +
  1734. "pH" :
  1735. "0pH - 0pH") :
  1736. "0pH | 0pH - 0pH") +
  1737. "</h4>" +
  1738. " </div>" +
  1739. " </div>" +
  1740. " </span>" +
  1741. "<span>" +
  1742. ' <div class="d-l-con">' +
  1743. ' <div class="d-l-l-text">' +
  1744. " <h4>湿度:" +
  1745. (item.data.humidity ? item.data.humidity + "%RH" : "0%RH") +
  1746. (item.data.humidity ?
  1747. item.data.humidity +
  1748. "%RH | " +
  1749. (item.threshold ?
  1750. item.threshold.humidityThresholdUp +
  1751. "%RH - " +
  1752. item.threshold.humidityThresholdDown +
  1753. "%RH" :
  1754. "0%RH - 0%RH") :
  1755. "0%RH | 0%RH - 0%RH") +
  1756. "</h4>" +
  1757. " </div>" +
  1758. " </div>" +
  1759. " </span>" +
  1760. "<span>" +
  1761. ' <div class="d-l-con">' +
  1762. ' <div class="d-l-l-text">' +
  1763. " <h4>磷含量:" +
  1764. (item.data.phosphorus ?
  1765. item.data.phosphorus +
  1766. "mg/kg | " +
  1767. (item.threshold ?
  1768. item.threshold.phosphorusThresholdUp +
  1769. "mg/kg - " +
  1770. item.threshold.phosphorusThresholdDown +
  1771. "mg/kg" :
  1772. "0mg/kg - 0mg/kg") :
  1773. "0mg/kg | 0mg/kg - 0mg/kg") +
  1774. "</h4>" +
  1775. " </div>" +
  1776. " </div>" +
  1777. " </span>" +
  1778. // "<span>" +
  1779. // ' <div class="d-l-con">' +
  1780. // ' <div class="d-l-l-text">' +
  1781. // " <h4>电压:" +
  1782. // (item.data.voltage ? item.data.voltage : "") +
  1783. // "</h4>" +
  1784. // " </div>" +
  1785. // " </div>" +
  1786. // " </span>"
  1787. "</div>";
  1788. }
  1789. } else if (item.deviceType == 4) {
  1790. // 病虫害监测站
  1791. markersMap.icon =
  1792. "sj-icon-map-centerdata_pest_and_disease_monitoring_station";
  1793. markersMap.bindPopupHtml +=
  1794. '<div class="map-tip">' +
  1795. "<span>" +
  1796. ' <div class="d-l-con">' +
  1797. ' <div class="d-l-l-text">' +
  1798. " <h4>类型:病虫害传感器" +
  1799. "</h4>" +
  1800. " </div>" +
  1801. " </div>" +
  1802. " </span>" +
  1803. "</div>";
  1804. } else if (item.deviceType == 5) {
  1805. // 大气传感器
  1806. markersMap.icon = "sj-icon-map-centerdata_atmospheric_sensor";
  1807. if (item.data != null) {
  1808. markersMap.bindPopupHtml +=
  1809. '<div class="map-tip">' +
  1810. "<span>" +
  1811. ' <div class="d-l-con">' +
  1812. ' <div class="d-l-l-text">' +
  1813. " <h4>类型:大气传感器" +
  1814. "</h4>" +
  1815. " </div>" +
  1816. " </div>" +
  1817. " </span>" +
  1818. "<span>" +
  1819. ' <div class="d-l-con">' +
  1820. ' <div class="d-l-l-text">' +
  1821. " <h4>二氧化硫:" +
  1822. (item.data.sulfurDioxide ?
  1823. item.data.sulfurDioxide + "ug/m³" :
  1824. "0ug/m³") +
  1825. "</h4>" +
  1826. " </div>" +
  1827. " </div>" +
  1828. " </span>" +
  1829. "<span>" +
  1830. ' <div class="d-l-con">' +
  1831. ' <div class="d-l-l-text">' +
  1832. " <h4>一氧化碳:" +
  1833. (item.data.carbonMonoxide ?
  1834. item.data.carbonMonoxide + "ug/m³" :
  1835. "0ug/m³") +
  1836. "</h4>" +
  1837. " </div>" +
  1838. " </div>" +
  1839. " </span>" +
  1840. "<span>" +
  1841. ' <div class="d-l-con">' +
  1842. ' <div class="d-l-l-text">' +
  1843. " <h4>温度:" +
  1844. (item.data.temperature ?
  1845. item.data.temperature +
  1846. "°C | " +
  1847. (item.threshold ?
  1848. item.threshold.temperatureThresholdUp +
  1849. "°C - " +
  1850. item.threshold.temperatureThresholdDown +
  1851. "°C" :
  1852. "0°C - 0°C") :
  1853. "0°C | 0°C - 0°C") +
  1854. "</h4>" +
  1855. " </div>" +
  1856. " </div>" +
  1857. " </span>" +
  1858. "<span>" +
  1859. ' <div class="d-l-con">' +
  1860. ' <div class="d-l-l-text">' +
  1861. " <h4>二氧化氮:" +
  1862. (item.data.nitrogenDioxide ?
  1863. item.data.nitrogenDioxide + "ug/m³" :
  1864. "0ug/m³") +
  1865. "</h4>" +
  1866. " </div>" +
  1867. " </div>" +
  1868. " </span>" +
  1869. // "<span>" +
  1870. // ' <div class="d-l-con">' +
  1871. // ' <div class="d-l-l-text">' +
  1872. // " <h4>风向:" +
  1873. // (item.data.windDirection ? item.data.windDirection : "") +
  1874. // "</h4>" +
  1875. // " </div>" +
  1876. // " </div>" +
  1877. // " </span>" +
  1878. // "<span>" +
  1879. // ' <div class="d-l-con">' +
  1880. // ' <div class="d-l-l-text">' +
  1881. // " <h4>风速:" +
  1882. // (item.data.windSpeed ? item.data.windSpeed : "") +
  1883. // "</h4>" +
  1884. // " </div>" +
  1885. // " </div>" +
  1886. // " </span>" +
  1887. "</div>";
  1888. }
  1889. } else if (item.deviceType == 6) {
  1890. // 水压传感器
  1891. markersMap.icon = "sj-icon-map-centerdata_water_pressure_sensor";
  1892. if (item.data != null) {
  1893. markersMap.bindPopupHtml +=
  1894. '<div class="map-tip">' +
  1895. "<span>" +
  1896. ' <div class="d-l-con">' +
  1897. ' <div class="d-l-l-text">' +
  1898. " <h4>类型:水压传感器" +
  1899. "</h4>" +
  1900. " </div>" +
  1901. " </div>" +
  1902. " </span>" +
  1903. '<div class="map-tip">' +
  1904. "<span>" +
  1905. ' <div class="d-l-con">' +
  1906. ' <div class="d-l-l-text">' +
  1907. " <h4>电池电量:" +
  1908. (item.data.batteryValue ? item.data.batteryValue + "%" : "0%") +
  1909. "</h4>" +
  1910. " </div>" +
  1911. " </div>" +
  1912. " </span>" +
  1913. // "<span>" +
  1914. // ' <div class="d-l-con">' +
  1915. // ' <div class="d-l-l-text">' +
  1916. // " <h4>上限警报使能:" +
  1917. // (item.data.thresholdHighEnable ?
  1918. // item.data.thresholdHighEnable + "MPa" :
  1919. // "0MPa") +
  1920. // "</h4>" +
  1921. // " </div>" +
  1922. // " </div>" +
  1923. // " </span>" +
  1924. "<span>" +
  1925. ' <div class="d-l-con">' +
  1926. ' <div class="d-l-l-text">' +
  1927. " <h4 style='color:" + (item.data.hydraulicThresholdMax >= item.data
  1928. .hydraulicValue >= item.data.hydraulicThresholdMin ? 'green' : 'red') + "'" + ">水压力值:" +
  1929. (item.data.hydraulicValue ? item.data.hydraulicValue + "MPa" : "0MPa") + ' | ' + (item.data
  1930. .hydraulicThresholdMin ? item.data.hydraulicThresholdMin + "MPa" : "0MPa") + "-" + (item
  1931. .data.hydraulicThresholdMax ? item.data.hydraulicThresholdMax + "MPa" : "0MPa") +
  1932. "</h4>" +
  1933. " </div>" +
  1934. " </div>" +
  1935. " </span>" +
  1936. "</div>";
  1937. }
  1938. } else if (item.deviceType == 7) {
  1939. //水流速传感器
  1940. markersMap.icon = "sj-icon-map-centerdata_water_flow_rate";
  1941. if (item.data != null) {
  1942. markersMap.bindPopupHtml +=
  1943. '<div class="map-tip">' +
  1944. "<span>" +
  1945. ' <div class="d-l-con">' +
  1946. ' <div class="d-l-l-text">' +
  1947. " <h4>类型:水流速传感器" +
  1948. "</h4>" +
  1949. " </div>" +
  1950. " </div>" +
  1951. " </span>" +
  1952. // "<span>" +
  1953. // ' <div class="d-l-con">' +
  1954. // ' <div class="d-l-l-text">' +
  1955. // " <h4>两流量累计之和:" +
  1956. // (item.data.Q ? item.data.Q : "") +
  1957. // "</h4>" +
  1958. // " </div>" +
  1959. // " </div>" +
  1960. // " </span>" +
  1961. // "<span>" +
  1962. // ' <div class="d-l-con">' +
  1963. // ' <div class="d-l-l-text">' +
  1964. // " <h4>瞬时流量:" +
  1965. // (item.data.Q1 ? item.data.Q1+"m3/s" : "") +
  1966. // "</h4>" +
  1967. // " </div>" +
  1968. // " </div>" +
  1969. // " </span>" +
  1970. "<span>" +
  1971. ' <div class="d-l-con">' +
  1972. ' <div class="d-l-l-text">' +
  1973. " <h4>瞬时流速:" +
  1974. (item.data.V1 ? item.data.V1 + "m/s" : "0m/s") +
  1975. "</h4>" +
  1976. " </div>" +
  1977. " </div>" +
  1978. " </span>" +
  1979. "<span>" +
  1980. ' <div class="d-l-con">' +
  1981. ' <div class="d-l-l-text">' +
  1982. " <h4>瞬时流量:" +
  1983. (item.data.Q ? item.data.Q + "m³/s" : "0m³/s") +
  1984. "</h4>" +
  1985. " </div>" +
  1986. " </div>" +
  1987. " </span></div>";
  1988. }
  1989. }
  1990. markersMap.lng = item.longitude;
  1991. markersMap.lat = item.latitude;
  1992. markersList.push(markersMap);
  1993. });
  1994. console.log(markersList);
  1995. });
  1996. selectCameraByDeptId(deptId, camera).then((res) => {
  1997. //根据设备类型查看列表
  1998. list = res.data;
  1999. //this.sensorNum = list.length
  2000. list.forEach((item) => {
  2001. if (item.cameraUse == 1) {
  2002. let dat = {
  2003. cameraName: item.cameraName,
  2004. longitude: item.longitude,
  2005. latitude: item.latitude,
  2006. };
  2007. // this.visuForestCloudCameraBOListSearch.push(dat);
  2008. }
  2009. });
  2010. if (res.data != null && res.data.length > 0) {
  2011. for (let i = 0; i < res.data.length; i++) {
  2012. if (res.data[i].cameraUse == 1) {
  2013. let markersMap = {
  2014. lng: 124.59,
  2015. lat: 43.02,
  2016. icon: "sj-icon-map-centerdata-slmonitor",
  2017. bindPopupHtml: "",
  2018. click: "preview",
  2019. parameter: "",
  2020. name: i,
  2021. keepBindPopup: false,
  2022. isAggregation: false,
  2023. };
  2024. if (res.data[i].channelCode != null) {
  2025. markersMap.parameter = {
  2026. code: res.data[i].cameraCode,
  2027. name: res.data[i].cameraName,
  2028. type: res.data[i].cameraType,
  2029. };
  2030. } else {
  2031. markersMap.parameter = [];
  2032. }
  2033. markersMap.lng = res.data[i].longitude;
  2034. markersMap.lat = res.data[i].latitude;
  2035. markersMap.radius = res.data[i].cameraRadius;
  2036. markersMap.bindPopupHtml =
  2037. '<div class="map-tip">' +
  2038. "<span>" +
  2039. ' <div class="d-l-con">' +
  2040. ' <div class="d-l-l-text">' +
  2041. " <h4>经纬度:" +
  2042. res.data[i].longitude +
  2043. "," +
  2044. res.data[i].latitude +
  2045. "</h4>" +
  2046. " </div>" +
  2047. " </div>" +
  2048. " </span>" +
  2049. "<span>" +
  2050. ' <div class="d-l-con">' +
  2051. ' <div class="d-l-l-text">' +
  2052. " <h4>摄像头名称:" +
  2053. res.data[i].cameraName +
  2054. "</h4>" +
  2055. " </div>" +
  2056. " </div>" +
  2057. " </span>" +
  2058. "<span>" +
  2059. ' <div class="d-l-con">' +
  2060. ' <div class="d-l-l-text">' +
  2061. " <h4>网络运营商:" +
  2062. (res.data[i].operatorType == "1" ?
  2063. "联通" :
  2064. res.data[i].operatorType == "2" ?
  2065. "移动" :
  2066. "电信") +
  2067. "</h4>" +
  2068. " </div>" +
  2069. " </div>" +
  2070. " </span>" +
  2071. "<span>" +
  2072. ' <div class="d-l-con">' +
  2073. ' <div class="d-l-l-text">' +
  2074. " <h4>摄像头半径:" +
  2075. res.data[i].cameraRadius +
  2076. "米</h4>" +
  2077. " </div>" +
  2078. " </div>" +
  2079. " </span>" +
  2080. "</div>";
  2081. cameraMarkersList.push(markersMap);
  2082. }
  2083. }
  2084. }
  2085. });
  2086. setTimeout(() => {
  2087. this.$refs.supermap.clearM();
  2088. this.$refs.supermap.clearMRadius();
  2089. this.$refs.supermap.setMarkers(markersList);
  2090. this.$refs.supermap.setMarkersRadius(cameraMarkersList);
  2091. }, 5000);
  2092. },
  2093. getMonitorDeviceAndDataList() {
  2094. // if (!this.sideShowMonitor) {
  2095. // this.$message.warning("请先选择物联网")
  2096. // return
  2097. // }
  2098. let list = [];
  2099. let markersList = [];
  2100. let cameraMarkersList = [];
  2101. let deviceTypeList = []
  2102. let cameraList = []
  2103. this.visuForestCloudMonitorBOListSearch = [];
  2104. this.visuForestCloudMonitorBOList = [];
  2105. for (var i = 0; i < this.sensorCheckList.length; i++) {
  2106. let data = this.sensorList.filter(item => item.dictLabel == this.sensorCheckList[i])
  2107. if (data.length > 0) {
  2108. if (data[0].dictType == "camera_use") {
  2109. cameraList.push(data[0].dictValue)
  2110. }
  2111. if (data[0].dictType == "device_type") {
  2112. deviceTypeList.push(data[0].dictValue)
  2113. }
  2114. }
  2115. }
  2116. if (deviceTypeList.length == 0 && cameraList.length == 0) {
  2117. for (var i = 0; i < this.sensorList.length; i++) {
  2118. if (this.sensorList[i].dictType == "camera_use") {
  2119. cameraList.push(this.sensorList[i].dictValue)
  2120. }
  2121. if (this.sensorList[i].dictType == "device_type") {
  2122. deviceTypeList.push(this.sensorList[i].dictValue)
  2123. }
  2124. }
  2125. }
  2126. const deviceType = deviceTypeList.join(",");
  2127. const camera = cameraList.join(",");
  2128. if (deviceType != "" && deviceType != null && deviceType != undefined) {
  2129. getMonitorDeviceAndDataList(this.deptId, deviceType).then((res) => {
  2130. list = res.data;
  2131. //this.sensorNum = list.length
  2132. list.forEach((item) => {
  2133. let dat = {
  2134. cameraName: item.deviceName,
  2135. longitude: item.longitude,
  2136. latitude: item.latitude,
  2137. };
  2138. this.visuForestCloudMonitorBOListSearch.push(dat);
  2139. this.visuForestCloudMonitorBOList.push(dat);
  2140. let markersMap = {
  2141. lng: 124.59,
  2142. lat: 43.02,
  2143. icon: "marker",
  2144. bindPopupHtml: '<div class="map-tip">' +
  2145. "<span>" +
  2146. ' <div class="d-l-con">' +
  2147. ' <div class="d-l-l-text">' +
  2148. " <h4>名称:" +
  2149. (item.deviceName ? item.deviceName : "") +
  2150. "</h4>" +
  2151. " </div>" +
  2152. " </div>" +
  2153. " </span>" +
  2154. "<span>" +
  2155. ' <div class="d-l-con">' +
  2156. ' <div class="d-l-l-text">' +
  2157. " <h4>经纬度:" +
  2158. item.longitude +
  2159. "," +
  2160. item.latitude +
  2161. "</h4>" +
  2162. " </div>" +
  2163. " </div>" +
  2164. " </span>" +
  2165. "</div>",
  2166. click: "",
  2167. parameter: "",
  2168. name: "",
  2169. keepBindPopup: false,
  2170. isAggregation: false,
  2171. };
  2172. if (item.deviceType == 1) {
  2173. // 水质传感器
  2174. markersMap.icon = "sj-icon-map-centerdata_water_quality_sensor";
  2175. if (item.data != null) {
  2176. markersMap.bindPopupHtml +=
  2177. '<div class="map-tip">' +
  2178. "<span>" +
  2179. ' <div class="d-l-con">' +
  2180. ' <div class="d-l-l-text">' +
  2181. " <h4>类型:水质传感器" +
  2182. "</h4>" +
  2183. " </div>" +
  2184. " </div>" +
  2185. " </span>" +
  2186. "<span>" +
  2187. ' <div class="d-l-con">' +
  2188. ' <div class="d-l-l-text">' +
  2189. " <h4>水中PH:" +
  2190. (item.data.waterPh ?
  2191. item.data.waterPh +
  2192. "pH | " +
  2193. (item.threshold ?
  2194. item.threshold.waterPhThresholdUp +
  2195. "pH - " +
  2196. item.threshold.waterPhThresholdDown +
  2197. "pH" :
  2198. "0pH - 0pH") :
  2199. "0pH | 0pH - 0pH") +
  2200. "</h4>" +
  2201. " </div>" +
  2202. " </div>" +
  2203. " </span>" +
  2204. "<span>" +
  2205. ' <div class="d-l-con">' +
  2206. ' <div class="d-l-l-text">' +
  2207. " <h4>化学需氧量:" +
  2208. (item.data.cod ? item.data.cod + "mg/L" : "0mg/L") +
  2209. "</h4>" +
  2210. " </div>" +
  2211. " </div>" +
  2212. " </span>" +
  2213. "<span>" +
  2214. ' <div class="d-l-con">' +
  2215. ' <div class="d-l-l-text">' +
  2216. " <h4>氨氮:" +
  2217. (item.data.ammoniaNitrogen ?
  2218. item.data.ammoniaNitrogen + "mg/L" :
  2219. "0mg/L") +
  2220. "</h4>" +
  2221. " </div>" +
  2222. " </div>" +
  2223. " </span>" +
  2224. "<span>" +
  2225. ' <div class="d-l-con">' +
  2226. ' <div class="d-l-l-text">' +
  2227. " <h4>水温:" +
  2228. (item.data.waterTemperature ?
  2229. item.data.waterTemperature +
  2230. "°C | " +
  2231. (item.threshold ?
  2232. item.threshold.waterTemperatureThresholdUp +
  2233. "°C - " +
  2234. item.threshold.waterTemperatureThresholdDown +
  2235. "°C" :
  2236. "0°C - 0°C") :
  2237. "0°C | 0°C - 0°C") +
  2238. "</h4>" +
  2239. " </div>" +
  2240. " </div>" +
  2241. " </span>" +
  2242. "</div>";
  2243. }
  2244. } else if (item.deviceType == 8) {
  2245. // 水尺
  2246. markersMap.icon = "sj-icon-map-centerdata_water_gauge";
  2247. markersMap.bindPopupHtml +=
  2248. '<div class="map-tip">' +
  2249. "<span>" +
  2250. ' <div class="d-l-con">' +
  2251. ' <div class="d-l-l-text">' +
  2252. " <h4>类型:水尺传感器" +
  2253. "</h4>" +
  2254. " </div>" +
  2255. " </div>" +
  2256. " </span>" +
  2257. "<span>" +
  2258. ' <div class="d-l-con">' +
  2259. ' <div class="d-l-l-text">' +
  2260. " <h4>地址:" +
  2261. (item.address ? item.address : "") +
  2262. "</h4>" +
  2263. " </div>" +
  2264. " </div>" +
  2265. " </span>" +
  2266. "</div>";
  2267. } else if (item.deviceType == "003") {
  2268. // 水文监测设备
  2269. markersMap.icon =
  2270. "sj-icon-map-centerdata_hydrological_monitoring_equipment";
  2271. markersMap.bindPopupHtml +=
  2272. '<div class="map-tip">' +
  2273. "<span>" +
  2274. ' <div class="d-l-con">' +
  2275. ' <div class="d-l-l-text">' +
  2276. " <h4>类型:水文传感器" +
  2277. "</h4>" +
  2278. " </div>" +
  2279. " </div>" +
  2280. " </span>" +
  2281. "</div>";
  2282. } else if (item.deviceType == 2) {
  2283. // 土壤监测设备
  2284. markersMap.icon =
  2285. "sj-icon-map-centerdata_soil_monitoring_equipment";
  2286. if (item.data != null) {
  2287. markersMap.bindPopupHtml +=
  2288. '<div class="map-tip">' +
  2289. "<span>" +
  2290. ' <div class="d-l-con">' +
  2291. ' <div class="d-l-l-text">' +
  2292. " <h4>类型:土壤监测设备" +
  2293. "</h4>" +
  2294. " </div>" +
  2295. " </div>" +
  2296. " </span>" +
  2297. "<span>" +
  2298. ' <div class="d-l-con">' +
  2299. ' <div class="d-l-l-text">' +
  2300. " <h4>钾含量:" +
  2301. (item.data.potassium ?
  2302. item.data.potassium +
  2303. "mg/kg | " +
  2304. (item.threshold ?
  2305. item.threshold.potassiumThresholdUp +
  2306. "mg/kg - " +
  2307. item.threshold.potassiumThresholdDown +
  2308. "mg/kg" :
  2309. "0mg/kg - 0mg/kg") :
  2310. "0mg/kg | 0mg/kg - 0mg/kg") +
  2311. "</h4>" +
  2312. " </div>" +
  2313. " </div>" +
  2314. " </span>" +
  2315. "<span>" +
  2316. ' <div class="d-l-con">' +
  2317. ' <div class="d-l-l-text">' +
  2318. " <h4>导电率:" +
  2319. (item.data.conductivity ?
  2320. item.data.conductivity +
  2321. "us/cm | " +
  2322. (item.threshold ?
  2323. item.threshold.conductivityThresholdUp +
  2324. "us/cm - " +
  2325. item.threshold.conductivityThresholdDown +
  2326. "us/cm" :
  2327. "0us/cm - 0us/cm") :
  2328. "0us/cm | 0us/cm - 0us/cm") +
  2329. "</h4>" +
  2330. " </div>" +
  2331. " </div>" +
  2332. " </span>" +
  2333. "<span>" +
  2334. ' <div class="d-l-con">' +
  2335. ' <div class="d-l-l-text">' +
  2336. " <h4>氮含量:" +
  2337. (item.data.nitrogen ?
  2338. item.data.nitrogen +
  2339. "mg/kg | " +
  2340. (item.threshold ?
  2341. item.threshold.nitrogenThresholdUp +
  2342. "mg/kg - " +
  2343. item.threshold.nitrogenThresholdDown +
  2344. "mg/kg" :
  2345. "0mg/kg - 0mg/kg") :
  2346. "0mg/kg | 0mg/kg - 0mg/kg") +
  2347. "</h4>" +
  2348. " </div>" +
  2349. " </div>" +
  2350. " </span>" +
  2351. "<span>" +
  2352. ' <div class="d-l-con">' +
  2353. ' <div class="d-l-l-text">' +
  2354. " <h4>温度:" +
  2355. (item.data.temperature ?
  2356. item.data.temperature +
  2357. "°C | " +
  2358. (item.threshold ?
  2359. item.threshold.temperatureThresholdUp +
  2360. "°C - " +
  2361. item.threshold.temperatureThresholdDown +
  2362. "°C" :
  2363. "0°C - 0°C") :
  2364. "0°C | 0°C - 0°C") +
  2365. "</h4>" +
  2366. " </div>" +
  2367. " </div>" +
  2368. " </span>" +
  2369. "<span>" +
  2370. ' <div class="d-l-con">' +
  2371. ' <div class="d-l-l-text">' +
  2372. " <h4>ph值:" +
  2373. (item.data.ph ?
  2374. item.data.ph +
  2375. "pH | " +
  2376. (item.threshold ?
  2377. item.threshold.phThresholdUp +
  2378. "pH - " +
  2379. item.threshold.phThresholdDown +
  2380. "pH" :
  2381. "0pH - 0pH") :
  2382. "0pH | 0pH - 0pH") +
  2383. "</h4>" +
  2384. " </div>" +
  2385. " </div>" +
  2386. " </span>" +
  2387. "<span>" +
  2388. ' <div class="d-l-con">' +
  2389. ' <div class="d-l-l-text">' +
  2390. " <h4>湿度:" +
  2391. (item.data.humidity ? item.data.humidity + "%RH" : "0%RH") +
  2392. (item.data.humidity ?
  2393. item.data.humidity +
  2394. "%RH | " +
  2395. (item.threshold ?
  2396. item.threshold.humidityThresholdUp +
  2397. "%RH - " +
  2398. item.threshold.humidityThresholdDown +
  2399. "%RH" :
  2400. "0%RH - 0%RH") :
  2401. "0%RH | 0%RH - 0%RH") +
  2402. "</h4>" +
  2403. " </div>" +
  2404. " </div>" +
  2405. " </span>" +
  2406. "<span>" +
  2407. ' <div class="d-l-con">' +
  2408. ' <div class="d-l-l-text">' +
  2409. " <h4>磷含量:" +
  2410. (item.data.phosphorus ?
  2411. item.data.phosphorus +
  2412. "mg/kg | " +
  2413. (item.threshold ?
  2414. item.threshold.phosphorusThresholdUp +
  2415. "mg/kg - " +
  2416. item.threshold.phosphorusThresholdDown +
  2417. "mg/kg" :
  2418. "0mg/kg - 0mg/kg") :
  2419. "0mg/kg | 0mg/kg - 0mg/kg") +
  2420. "</h4>" +
  2421. " </div>" +
  2422. " </div>" +
  2423. " </span>" +
  2424. // "<span>" +
  2425. // ' <div class="d-l-con">' +
  2426. // ' <div class="d-l-l-text">' +
  2427. // " <h4>电压:" +
  2428. // (item.data.voltage ? item.data.voltage : "") +
  2429. // "</h4>" +
  2430. // " </div>" +
  2431. // " </div>" +
  2432. // " </span>"
  2433. "</div>";
  2434. }
  2435. } else if (item.deviceType == 4) {
  2436. // 病虫害监测站
  2437. markersMap.icon =
  2438. "sj-icon-map-centerdata_pest_and_disease_monitoring_station";
  2439. markersMap.bindPopupHtml +=
  2440. '<div class="map-tip">' +
  2441. "<span>" +
  2442. ' <div class="d-l-con">' +
  2443. ' <div class="d-l-l-text">' +
  2444. " <h4>类型:病虫害传感器" +
  2445. "</h4>" +
  2446. " </div>" +
  2447. " </div>" +
  2448. " </span>" +
  2449. "</div>";
  2450. } else if (item.deviceType == 5) {
  2451. // 大气传感器
  2452. markersMap.icon = "sj-icon-map-centerdata_atmospheric_sensor";
  2453. if (item.data != null) {
  2454. markersMap.bindPopupHtml +=
  2455. '<div class="map-tip">' +
  2456. "<span>" +
  2457. ' <div class="d-l-con">' +
  2458. ' <div class="d-l-l-text">' +
  2459. " <h4>类型:大气传感器" +
  2460. "</h4>" +
  2461. " </div>" +
  2462. " </div>" +
  2463. " </span>" +
  2464. "<span>" +
  2465. ' <div class="d-l-con">' +
  2466. ' <div class="d-l-l-text">' +
  2467. " <h4>二氧化硫:" +
  2468. (item.data.sulfurDioxide ?
  2469. item.data.sulfurDioxide + "ug/m³" :
  2470. "0ug/m³") +
  2471. "</h4>" +
  2472. " </div>" +
  2473. " </div>" +
  2474. " </span>" +
  2475. "<span>" +
  2476. ' <div class="d-l-con">' +
  2477. ' <div class="d-l-l-text">' +
  2478. " <h4>一氧化碳:" +
  2479. (item.data.carbonMonoxide ?
  2480. item.data.carbonMonoxide + "ug/m³" :
  2481. "0ug/m³") +
  2482. "</h4>" +
  2483. " </div>" +
  2484. " </div>" +
  2485. " </span>" +
  2486. "<span>" +
  2487. ' <div class="d-l-con">' +
  2488. ' <div class="d-l-l-text">' +
  2489. " <h4>温度:" +
  2490. (item.data.temperature ?
  2491. item.data.temperature +
  2492. "°C | " +
  2493. (item.threshold ?
  2494. item.threshold.temperatureThresholdUp +
  2495. "°C - " +
  2496. item.threshold.temperatureThresholdDown +
  2497. "°C" :
  2498. "0°C - 0°C") :
  2499. "0°C | 0°C - 0°C") +
  2500. "</h4>" +
  2501. " </div>" +
  2502. " </div>" +
  2503. " </span>" +
  2504. "<span>" +
  2505. ' <div class="d-l-con">' +
  2506. ' <div class="d-l-l-text">' +
  2507. " <h4>二氧化氮:" +
  2508. (item.data.nitrogenDioxide ?
  2509. item.data.nitrogenDioxide + "ug/m³" :
  2510. "0ug/m³") +
  2511. "</h4>" +
  2512. " </div>" +
  2513. " </div>" +
  2514. " </span>" +
  2515. // "<span>" +
  2516. // ' <div class="d-l-con">' +
  2517. // ' <div class="d-l-l-text">' +
  2518. // " <h4>风向:" +
  2519. // (item.data.windDirection ? item.data.windDirection : "") +
  2520. // "</h4>" +
  2521. // " </div>" +
  2522. // " </div>" +
  2523. // " </span>" +
  2524. // "<span>" +
  2525. // ' <div class="d-l-con">' +
  2526. // ' <div class="d-l-l-text">' +
  2527. // " <h4>风速:" +
  2528. // (item.data.windSpeed ? item.data.windSpeed : "") +
  2529. // "</h4>" +
  2530. // " </div>" +
  2531. // " </div>" +
  2532. // " </span>" +
  2533. "</div>";
  2534. }
  2535. } else if (item.deviceType == 6) {
  2536. // 水压传感器
  2537. markersMap.icon = "sj-icon-map-centerdata_water_pressure_sensor";
  2538. if (item.data != null) {
  2539. markersMap.bindPopupHtml +=
  2540. '<div class="map-tip">' +
  2541. "<span>" +
  2542. ' <div class="d-l-con">' +
  2543. ' <div class="d-l-l-text">' +
  2544. " <h4>类型:水压传感器" +
  2545. "</h4>" +
  2546. " </div>" +
  2547. " </div>" +
  2548. " </span>" +
  2549. '<div class="map-tip">' +
  2550. "<span>" +
  2551. ' <div class="d-l-con">' +
  2552. ' <div class="d-l-l-text">' +
  2553. " <h4>下限警报使能:" +
  2554. (item.data.thresholdLowEnable ?
  2555. item.data.thresholdLowEnable + "MPa" :
  2556. "0MPa") +
  2557. "</h4>" +
  2558. " </div>" +
  2559. " </div>" +
  2560. " </span>" +
  2561. "<span>" +
  2562. ' <div class="d-l-con">' +
  2563. ' <div class="d-l-l-text">' +
  2564. " <h4>上限警报使能:" +
  2565. (item.data.thresholdHighEnable ?
  2566. item.data.thresholdHighEnable + "MPa" :
  2567. "0MPa") +
  2568. "</h4>" +
  2569. " </div>" +
  2570. " </div>" +
  2571. " </span>" +
  2572. // "<span>" +
  2573. // ' <div class="d-l-con">' +
  2574. // ' <div class="d-l-l-text">' +
  2575. // " <h4>信号强度:" +
  2576. // (item.data.signalPower ? item.data.signalPower : "") +
  2577. // "</h4>" +
  2578. // " </div>" +
  2579. // " </div>" +
  2580. // " </span>" +
  2581. "<span>" +
  2582. ' <div class="d-l-con">' +
  2583. ' <div class="d-l-l-text">' +
  2584. " <h4>水压力值:" +
  2585. (item.data.hydraulicValue ?
  2586. item.data.hydraulicValue + "MPa | 0.5MPa - 2.0MPa" :
  2587. "0MPa | 0.5MPa - 2.0MPa") +
  2588. "</h4>" +
  2589. " </div>" +
  2590. " </div>" +
  2591. " </span>" +
  2592. "</div>";
  2593. }
  2594. } else if (item.deviceType == 7) {
  2595. //水流速传感器
  2596. markersMap.icon = "sj-icon-map-centerdata_water_flow_rate";
  2597. if (item.data != null) {
  2598. markersMap.bindPopupHtml +=
  2599. '<div class="map-tip">' +
  2600. "<span>" +
  2601. ' <div class="d-l-con">' +
  2602. ' <div class="d-l-l-text">' +
  2603. " <h4>类型:水流速传感器" +
  2604. "</h4>" +
  2605. " </div>" +
  2606. " </div>" +
  2607. " </span>" +
  2608. // "<span>" +
  2609. // ' <div class="d-l-con">' +
  2610. // ' <div class="d-l-l-text">' +
  2611. // " <h4>两流量累计之和:" +
  2612. // (item.data.Q ? item.data.Q : "") +
  2613. // "</h4>" +
  2614. // " </div>" +
  2615. // " </div>" +
  2616. // " </span>" +
  2617. // "<span>" +
  2618. // ' <div class="d-l-con">' +
  2619. // ' <div class="d-l-l-text">' +
  2620. // " <h4>瞬时流量:" +
  2621. // (item.data.Q1 ? item.data.Q1+"m3/s" : "") +
  2622. // "</h4>" +
  2623. // " </div>" +
  2624. // " </div>" +
  2625. // " </span>" +
  2626. "<span>" +
  2627. ' <div class="d-l-con">' +
  2628. ' <div class="d-l-l-text">' +
  2629. " <h4>瞬时流速:" +
  2630. (item.data.V1 ? item.data.V1 + "m/s" : "0m/s") +
  2631. "</h4>" +
  2632. " </div>" +
  2633. " </div>" +
  2634. " </span>" +
  2635. "<span>" +
  2636. ' <div class="d-l-con">' +
  2637. ' <div class="d-l-l-text">' +
  2638. " <h4>瞬时流量:" +
  2639. (item.data.Q ? item.data.Q + "m³/s" : "0m³/s") +
  2640. "</h4>" +
  2641. " </div>" +
  2642. " </div>" +
  2643. " </span></div>";
  2644. }
  2645. }
  2646. markersMap.lng = item.longitude;
  2647. markersMap.lat = item.latitude;
  2648. markersList.push(markersMap);
  2649. });
  2650. console.log(markersList);
  2651. });
  2652. }
  2653. if (camera != "" && camera != null && camera != undefined) {
  2654. selectCameraByDeptId(this.dept, camera).then((res) => {
  2655. //根据设备类型查看列表
  2656. list = res.data;
  2657. //this.sensorNum = list.length
  2658. list.forEach((item) => {
  2659. if (item.cameraUse == 1) {
  2660. let dat = {
  2661. cameraName: item.cameraName,
  2662. longitude: item.longitude,
  2663. latitude: item.latitude,
  2664. };
  2665. this.visuForestCloudMonitorBOListSearch.push(dat);
  2666. this.visuForestCloudMonitorBOList.push(dat);
  2667. }
  2668. });
  2669. if (res.data != null && res.data.length > 0) {
  2670. for (let i = 0; i < res.data.length; i++) {
  2671. if (res.data[i].cameraUse != 2) {
  2672. let markersMap = {
  2673. lng: 124.59,
  2674. lat: 43.02,
  2675. icon: "sj-icon-map-centerdata-slmonitor",
  2676. bindPopupHtml: "",
  2677. click: "preview",
  2678. parameter: "",
  2679. name: i,
  2680. keepBindPopup: false,
  2681. isAggregation: false,
  2682. };
  2683. if (res.data[i].cameraUse == 1) {
  2684. if (res.data[i].workingStatus == 0) {
  2685. markersMap.icon = "sj-icon-map-centerdata-slmonitor";
  2686. } else {
  2687. markersMap.icon = "sj-icon-map-centerdata-slmonitor-not";
  2688. markersMap.click = ""
  2689. }
  2690. } else if (res.data[i].cameraUse == 3) {
  2691. if (res.data[i].workingStatus == 0) {
  2692. markersMap.icon = "sj-icon-map-centerdata-slmonitor-traffic";
  2693. } else {
  2694. markersMap.icon = "sj-icon-map-centerdata-slmonitor-traffic-not";
  2695. markersMap.click = ""
  2696. }
  2697. } else if (res.data[i].cameraUse == 4) {
  2698. if (res.data[i].workingStatus == 0) {
  2699. markersMap.icon = 'sj-icon-map-centerdata-sand-quarry-camera'
  2700. } else {
  2701. markersMap.icon = 'sj-icon-map-centerdata-sand-quarry-camera-not'
  2702. markersMap.click = ""
  2703. }
  2704. } else if (res.data[i].cameraUse == 5) {
  2705. if (res.data[i].workingStatus == 0) {
  2706. markersMap.icon = 'sj-icon-map-centerdata-river_camera'
  2707. } else {
  2708. markersMap.icon = 'sj-icon-map-centerdata-river_camera_not'
  2709. markersMap.click = ""
  2710. }
  2711. }
  2712. if (res.data[i].channelCode != null) {
  2713. markersMap.parameter = {
  2714. code: res.data[i].cameraCode,
  2715. name: res.data[i].cameraName,
  2716. type: res.data[i].cameraType,
  2717. };
  2718. } else {
  2719. markersMap.parameter = [];
  2720. }
  2721. markersMap.lng = res.data[i].longitude;
  2722. markersMap.lat = res.data[i].latitude;
  2723. markersMap.radius = res.data[i].cameraRadius;
  2724. markersMap.bindPopupHtml =
  2725. '<div class="map-tip">' +
  2726. "<span>" +
  2727. ' <div class="d-l-con">' +
  2728. ' <div class="d-l-l-text">' +
  2729. " <h4>经纬度:" +
  2730. res.data[i].longitude +
  2731. "," +
  2732. res.data[i].latitude +
  2733. "</h4>" +
  2734. " </div>" +
  2735. " </div>" +
  2736. " </span>" +
  2737. "<span>" +
  2738. ' <div class="d-l-con">' +
  2739. ' <div class="d-l-l-text">' +
  2740. " <h4>摄像头名称:" +
  2741. res.data[i].cameraName +
  2742. "</h4>" +
  2743. " </div>" +
  2744. " </div>" +
  2745. " </span>" +
  2746. "<span>" +
  2747. ' <div class="d-l-con">' +
  2748. ' <div class="d-l-l-text">' +
  2749. " <h4>网络运营商:" +
  2750. (res.data[i].operatorType == "1" ?
  2751. "联通" :
  2752. res.data[i].operatorType == "2" ?
  2753. "移动" :
  2754. "电信") +
  2755. "</h4>" +
  2756. " </div>" +
  2757. " </div>" +
  2758. " </span>" +
  2759. "<span>" +
  2760. ' <div class="d-l-con">' +
  2761. ' <div class="d-l-l-text">' +
  2762. " <h4>摄像头半径:" +
  2763. res.data[i].cameraRadius +
  2764. "米</h4>" +
  2765. " </div>" +
  2766. " </div>" +
  2767. " </span>" +
  2768. "</div>";
  2769. cameraMarkersList.push(markersMap);
  2770. }
  2771. }
  2772. }
  2773. });
  2774. }
  2775. setTimeout(() => {
  2776. this.$refs.supermap.clearM();
  2777. this.$refs.supermap.clearMRadius();
  2778. this.$refs.supermap.setMarkers(markersList);
  2779. this.$refs.supermap.setMarkersRadius(cameraMarkersList);
  2780. }, 5000);
  2781. },
  2782. // 获取人员类型
  2783. selectPersonnelTypeList(data) {
  2784. this.showModal7 = false;
  2785. this.showModal6 = false;
  2786. this.getLocation()
  2787. let that = this;
  2788. if (
  2789. that.localPersonnelVisualizationModel == data ||
  2790. that.localPersonnelVisualizationModel ==
  2791. that.personnelVisualizationModel
  2792. ) {
  2793. return;
  2794. }
  2795. that.localPersonnelVisualizationModel = data;
  2796. that.personneType = "";
  2797. that.personneTypeList = [];
  2798. that.personne = "";
  2799. that.personneList = [];
  2800. that.personneTask = "";
  2801. that.personneTaskList = [];
  2802. that.$refs.supermap.clearC();
  2803. that.$refs.supermap.clearTwoC();
  2804. that.personneTaskTrajectoryList = [];
  2805. if (data == null) {
  2806. data = 1;
  2807. that.personnelVisualizationModel = "1";
  2808. }
  2809. if (data == 1) {
  2810. // 林业
  2811. getForestryRy(that.dept).then((res) => {
  2812. if (res.data.visuForestCloudRYBO.length < 1) {
  2813. return;
  2814. }
  2815. that.personneType = res.data.visuForestCloudRYBO[0].jobValue;
  2816. that.personneTypeList = res.data.visuForestCloudRYBO;
  2817. that.selectPersonneList(res.data.visuForestCloudRYBO[0].jobValue);
  2818. });
  2819. } else if (data == 2) {
  2820. // 农业
  2821. } else if (data == 3) {
  2822. // 水利
  2823. getWaterRy(that.dept).then((res) => {
  2824. if (res.data.ryList.length < 1) {
  2825. return;
  2826. }
  2827. that.personneType = res.data.ryList[0].dictType;
  2828. for (let i = 0; i < res.data.ryList.length; i++) {
  2829. let data = {
  2830. job: "",
  2831. jobValue: "",
  2832. };
  2833. data.job = res.data.ryList[i].job;
  2834. data.jobValue = res.data.ryList[i].dictType;
  2835. console.log(data);
  2836. that.personneTypeList.push(data);
  2837. }
  2838. that.selectPersonneList(res.data.ryList[0].dictType);
  2839. });
  2840. } else if (data == 4) {
  2841. // 环保
  2842. getEnvironmentRy(that.dept).then((res) => {
  2843. if (res.data.user.length < 1) {
  2844. return;
  2845. }
  2846. that.personneType = res.data.user[0].jobValue;
  2847. that.personneTypeList = res.data.user;
  2848. that.selectPersonneList(res.data.user[0].jobValue);
  2849. });
  2850. } else if (data == 5) {
  2851. // 应急
  2852. } else if (data == 6) {
  2853. // 交通
  2854. getTrafficRy(that.dept).then((res) => {
  2855. if (res.data.ryList.length < 1) {
  2856. return;
  2857. }
  2858. that.personneType = res.data.ryList[0].dictType;
  2859. for (let i = 0; i < res.data.ryList.length; i++) {
  2860. let data = {
  2861. job: "",
  2862. jobValue: "",
  2863. };
  2864. data.job = res.data.ryList[i].job;
  2865. data.jobValue = res.data.ryList[i].dictType;
  2866. console.log(data);
  2867. that.personneTypeList.push(data);
  2868. }
  2869. that.selectPersonneList(res.data.ryList[0].dictType);
  2870. });
  2871. } else if (data == 7) {
  2872. // 资源
  2873. getResourcesRy(that.dept).then((res) => {
  2874. if (res.data.ryList.length < 1) {
  2875. return;
  2876. }
  2877. that.personneType = res.data.ryList[0].dictType;
  2878. for (let i = 0; i < res.data.ryList.length; i++) {
  2879. let data = {
  2880. job: "",
  2881. jobValue: "",
  2882. };
  2883. data.job = res.data.ryList[i].job;
  2884. data.jobValue = res.data.ryList[i].dictType;
  2885. that.personneTypeList.push(data);
  2886. }
  2887. that.selectPersonneList(res.data.ryList[0].dictType);
  2888. });
  2889. } else if (data == 8) {
  2890. // 消防
  2891. getFirecontrolRy(that.dept).then((res) => {
  2892. if (res.data.ryList.length < 1) {
  2893. return;
  2894. }
  2895. that.personneType = res.data.ryList[0].jobValue;
  2896. that.personneTypeList = res.data.ryList;
  2897. that.selectPersonneList(res.data.ryList[0].jobValue);
  2898. });
  2899. }
  2900. },
  2901. // 获取类型下的人员列表
  2902. selectPersonneList(linJob) {
  2903. let that = this;
  2904. let data = this.personnelVisualizationModel;
  2905. that.personne = "";
  2906. that.personneList = [];
  2907. that.personneTask = "";
  2908. that.personneTaskList = [];
  2909. that.personneTaskTrajectoryList = [];
  2910. that.$refs.supermap.clearC();
  2911. that.$refs.supermap.clearTwoC();
  2912. if (data == 1) {
  2913. // 林业
  2914. getForestLeader(linJob, that.dept).then((res) => {
  2915. if (res.data.length < 1) {
  2916. return;
  2917. }
  2918. that.personne = res.data[0].userId;
  2919. that.personneList = res.data;
  2920. that.selectPersonneTaskList(res.data[0].userId);
  2921. });
  2922. } else if (data == 2) {
  2923. // 农业
  2924. } else if (data == 3) {
  2925. // 水利
  2926. getWaterRyListByJob(linJob, that.dept).then((res) => {
  2927. if (res.data.length < 1) {
  2928. return;
  2929. }
  2930. that.personne = res.data[0].userId;
  2931. for (let i = 0; i < res.data.length; i++) {
  2932. let data = {
  2933. userId: "",
  2934. nickName: "",
  2935. };
  2936. data.nickName = res.data[i].name;
  2937. data.userId = res.data[i].userId;
  2938. that.personneList.push(data);
  2939. }
  2940. that.selectPersonneTaskList(res.data[0].userId);
  2941. });
  2942. } else if (data == 4) {
  2943. // 环保
  2944. getEnvironmentLeader(linJob, that.dept).then((res) => {
  2945. if (res.data.length < 1) {
  2946. return;
  2947. }
  2948. that.personne = res.data[0].userId;
  2949. that.personneList = res.data;
  2950. that.selectPersonneTaskList(res.data[0].userId);
  2951. });
  2952. } else if (data == 5) {
  2953. // 应急
  2954. } else if (data == 6) {
  2955. // 交通
  2956. getTrafficRyListByJob(linJob, that.dept).then((res) => {
  2957. if (res.data.length < 1) {
  2958. return;
  2959. }
  2960. that.personne = res.data[0].userId;
  2961. for (let i = 0; i < res.data.length; i++) {
  2962. let data = {
  2963. userId: "",
  2964. nickName: "",
  2965. };
  2966. data.nickName = res.data[i].name;
  2967. data.userId = res.data[i].userId;
  2968. that.personneList.push(data);
  2969. }
  2970. that.selectPersonneTaskList(res.data[0].userId);
  2971. });
  2972. } else if (data == 7) {
  2973. // 资源
  2974. getRresourcesRyListByJob(linJob, that.dept).then((res) => {
  2975. if (res.data.length < 1) {
  2976. return;
  2977. }
  2978. that.personne = res.data[0].userId;
  2979. for (let i = 0; i < res.data.length; i++) {
  2980. let data = {
  2981. userId: "",
  2982. nickName: "",
  2983. };
  2984. data.nickName = res.data[i].name;
  2985. data.userId = res.data[i].userId;
  2986. that.personneList.push(data);
  2987. }
  2988. that.selectPersonneTaskList(res.data[0].userId);
  2989. });
  2990. } else if (data == 8) {
  2991. // 消防
  2992. getFirecontrolLeader(linJob, that.dept).then((res) => {
  2993. if (res.data.length < 1) {
  2994. return;
  2995. }
  2996. that.personne = res.data[0].userId;
  2997. that.personneList = res.data;
  2998. that.selectPersonneTaskList(res.data[0].userId);
  2999. });
  3000. }
  3001. },
  3002. // 获取人员任务列表
  3003. selectPersonneTaskList(userId) {
  3004. let that = this;
  3005. let data = this.personnelVisualizationModel;
  3006. that.personneTask = "";
  3007. that.personneTaskList = [];
  3008. that.personneTaskTrajectoryList = [];
  3009. that.$refs.supermap.clearC();
  3010. that.$refs.supermap.clearTwoC();
  3011. if (data == 1) {
  3012. // 林业
  3013. getPlanList(userId, 1).then((res) => {
  3014. if (res.data.length < 1) {
  3015. return;
  3016. }
  3017. that.personneTask = res.data[0].id;
  3018. that.personneTaskList = res.data;
  3019. that.getTaskTrajectory(res.data[0]);
  3020. that.getTaskList(this.personneTask);
  3021. });
  3022. } else if (data == 2) {
  3023. // 农业
  3024. } else if (data == 3) {
  3025. // 水利
  3026. getPlanList(userId, 2).then((res) => {
  3027. if (res.data.length < 1) {
  3028. return;
  3029. }
  3030. that.personneTask = res.data[0].id;
  3031. that.personneTaskList = res.data;
  3032. that.getTaskTrajectory(res.data[0]);
  3033. that.getTaskList(this.personneTask);
  3034. });
  3035. } else if (data == 4) {
  3036. // 环保
  3037. getPlanList(userId, 4).then((res) => {
  3038. if (res.data.length < 1) {
  3039. return;
  3040. }
  3041. that.personneTask = res.data[0].id;
  3042. that.personneTaskList = res.data;
  3043. that.getTaskTrajectory(res.data[0]);
  3044. that.getTaskList(this.personneTask);
  3045. });
  3046. } else if (data == 5) {
  3047. // 应急
  3048. } else if (data == 6) {
  3049. // 交通
  3050. getPlanList(userId, 3).then((res) => {
  3051. if (res.data.length < 1) {
  3052. return;
  3053. }
  3054. that.personneTask = res.data[0].id;
  3055. that.personneTaskList = res.data;
  3056. that.getTaskTrajectory(res.data[0]);
  3057. that.getTaskList(this.personneTask);
  3058. });
  3059. } else if (data == 7) {
  3060. // 资源
  3061. getPlanList(userId, 6).then((res) => {
  3062. if (res.data.length < 1) {
  3063. return;
  3064. }
  3065. that.personneTask = res.data[0].id;
  3066. that.personneTaskList = res.data;
  3067. that.getTaskTrajectory(res.data[0]);
  3068. that.getTaskList(this.personneTask);
  3069. });
  3070. } else if (data == 8) {
  3071. // 消防
  3072. getPlanList(userId, 5).then((res) => {
  3073. if (res.data.length < 1) {
  3074. return;
  3075. }
  3076. that.personneTask = res.data[0].id;
  3077. that.personneTaskList = res.data;
  3078. that.getTaskTrajectory(res.data[0]);
  3079. that.getTaskList(this.personneTask);
  3080. });
  3081. }
  3082. },
  3083. search() {
  3084. this.getTaskList(this.personneTask);
  3085. },
  3086. resettings() {
  3087. // this.personnelVisualizationModel = ''
  3088. // this.personneType = ''
  3089. // this.personneTypeList = []
  3090. // this.personne = ''
  3091. // this.personneList = []
  3092. // this.personneTask = ''
  3093. // this.personneTaskList = []
  3094. // this.personneTaskTrajectoryList = []
  3095. this.$refs.supermap.clearC();
  3096. this.$refs.supermap.clearTwoC();
  3097. },
  3098. // 获取人员任务轨迹列表
  3099. getTaskList(taskId) {
  3100. let that = this;
  3101. getTaskList(taskId, that.personne).then((res) => {
  3102. that.personneTaskTrajectoryList = res.data;
  3103. });
  3104. },
  3105. // 获取人员任务轨迹
  3106. getTrack(id) {
  3107. let that = this;
  3108. getTrack(id).then((res) => {
  3109. let connectList = [];
  3110. if (res.data != null && res.data.length > 0) {
  3111. for (let i = 0; i < res.data.length; i++) {
  3112. connectList.push(res.data[i].longitude);
  3113. connectList.push(res.data[i].latitude);
  3114. }
  3115. setTimeout(() => {
  3116. that.visible_tc = false;
  3117. that.$refs.supermap.clearTwoC();
  3118. that.$refs.supermap.setConnectTwoList(connectList, "#f40", 0.8);
  3119. that.$refs.supermap.dropLocation(
  3120. res.data[0].latitude,
  3121. res.data[0].longitude
  3122. );
  3123. }, 1000);
  3124. } else {
  3125. that.visible_tc = false;
  3126. that.$refs.supermap.clearTwoC();
  3127. }
  3128. });
  3129. },
  3130. getTaskTrajectory(task) {
  3131. let list = JSON.parse(task.patrolTrajectory);
  3132. let data = [];
  3133. for (var i = 0; i < list.length; i++) {
  3134. data.push(list[i].lng);
  3135. data.push(list[i].lat);
  3136. }
  3137. setTimeout(() => {
  3138. this.$refs.supermap.clearC();
  3139. this.$refs.supermap.clearTwoC();
  3140. this.$refs.supermap.setConnectList(data, "#04f", 0.8);
  3141. }, 1000);
  3142. },
  3143. //获取标题
  3144. getheaderTitle() {
  3145. selectConfigKey("titlename").then((res) => {
  3146. this.headerTitle = res.data;
  3147. });
  3148. },
  3149. choseLayerSwitchingList_Data(urlList) {
  3150. //选择图层(传递数组)
  3151. setTimeout(() => {
  3152. this.$refs.supermap.layerSwitchingList_Data(urlList);
  3153. }, 1000);
  3154. },
  3155. sewageOutletClick(data) {
  3156. console.log(data);
  3157. const params = Object.assign({});
  3158. params.longitude = data.longitude;
  3159. params.latitude = data.latitude;
  3160. let data1 = null
  3161. getResourceDetail(data.indexName, data.id).then(res => {
  3162. data1 = res.data
  3163. const treeLabels = [{
  3164. id: null,
  3165. labelCode: "999",
  3166. labelName: "电视墙",
  3167. cameraType: null,
  3168. parentLabelCode: "",
  3169. }, ];
  3170. const labelChannels = [];
  3171. // if (0 < data1.cameras.length) {
  3172. for (let i in data1.cameras) {
  3173. treeLabels.push({
  3174. id: null,
  3175. labelCode: data1.cameras[i].cameraCode,
  3176. labelName: data1.cameras[i].cameraName,
  3177. cameraType: data1.cameras[i].cameraType,
  3178. parentLabelCode: "999",
  3179. });
  3180. labelChannels.push({
  3181. labelCode: data1.cameras[i].cameraCode,
  3182. channelDates: [{
  3183. channelCode: data1.cameras[i].cameraCode,
  3184. channelName: data1.cameras[i].cameraName,
  3185. channelSn: null,
  3186. cameraType: data1.cameras[i].cameraType,
  3187. online: "1",
  3188. cameraCode: "1",
  3189. }, ],
  3190. });
  3191. }
  3192. const dianshiqiang = [{
  3193. switchTab: "2",
  3194. treeLabels: treeLabels,
  3195. labelChannels: labelChannels,
  3196. }, ]
  3197. this.$refs.TVWalls.showTVWall2(
  3198. dianshiqiang, {
  3199. longitude: params.longitude,
  3200. latitude: params.latitude
  3201. },
  3202. data1.detail
  3203. );
  3204. // }
  3205. })
  3206. },
  3207. sewageOutletClickfarming(data) {
  3208. const params = Object.assign({});
  3209. params.longitude = data.longitude;
  3210. params.latitude = data.latitude;
  3211. const treeLabels = [{
  3212. id: null,
  3213. labelCode: "999",
  3214. labelName: "电视墙",
  3215. cameraType: null,
  3216. parentLabelCode: "",
  3217. }, ];
  3218. const labelChannels = [];
  3219. for (let i in data.cameraList) {
  3220. treeLabels.push({
  3221. id: null,
  3222. labelCode: data.cameraList[i].cameraCode,
  3223. labelName: data.cameraList[i].cameraName,
  3224. cameraType: data.cameraList[i].cameraType,
  3225. parentLabelCode: "999",
  3226. });
  3227. labelChannels.push({
  3228. labelCode: data.cameraList[i].cameraCode,
  3229. channelDates: [{
  3230. channelCode: data.cameraList[i].cameraCode,
  3231. channelName: data.cameraList[i].cameraName,
  3232. channelSn: null,
  3233. cameraType: data.cameraList[i].cameraType,
  3234. online: "1",
  3235. cameraCode: "1",
  3236. }, ],
  3237. });
  3238. }
  3239. const dianshiqiang = [{
  3240. switchTab: "2",
  3241. treeLabels: treeLabels,
  3242. labelChannels: labelChannels,
  3243. }, ];
  3244. if (data.cameraList.length > 0) {
  3245. this.$refs.TVWalls.showTVWall1(
  3246. data.longitude,
  3247. data.latitude,
  3248. dianshiqiang,
  3249. param
  3250. );
  3251. }
  3252. },
  3253. /* 电视墙替换开始 */
  3254. showTVWallMine(channelCode, channelName, cameraType) {
  3255. // let channelCode = '6044981090191552';
  3256. // let channelName = '复兴大桥中段-交通事故';
  3257. let tvListJson = [{
  3258. switchTab: "2",
  3259. treeLabels: [{
  3260. id: null,
  3261. labelCode: "999",
  3262. labelName: "电视墙",
  3263. cameraType: null,
  3264. parentLabelCode: "",
  3265. },
  3266. {
  3267. id: "spcamera00010",
  3268. labelCode: channelCode,
  3269. labelName: channelName,
  3270. cameraType: cameraType,
  3271. parentLabelCode: "999",
  3272. },
  3273. ],
  3274. labelChannels: [{
  3275. labelCode: channelCode,
  3276. channelDates: [{
  3277. channelCode: channelCode,
  3278. channelName: channelName,
  3279. channelSn: null,
  3280. cameraType: cameraType,
  3281. online: "1",
  3282. cameraCode: null,
  3283. }, ],
  3284. }, ],
  3285. }, ];
  3286. this.$refs.TVWallNoRight.showTVWall(tvListJson, null);
  3287. this.$refs.supermap.isEditableLayers = false;
  3288. },
  3289. fatherMethod(dianshiqiang, longitude, latitude, item) {
  3290. this.$refs.TVWall.showTVWall(
  3291. dianshiqiang, {
  3292. longitude: longitude,
  3293. latitude: latitude,
  3294. },
  3295. item
  3296. );
  3297. },
  3298. /* 电视墙替换结束 */
  3299. selectCameraByDeptId(depId, lng, lat) {
  3300. this.visuForestCloudCameraBOListSearch = [];
  3301. this.visuForestCloudCameraBOList = [];
  3302. let that = this;
  3303. that.deptId = depId
  3304. const str = this.cameraUseCheckList.join(",");
  3305. selectCameraByDeptId(depId, str).then((res) => {
  3306. let cameraMarkersList = [];
  3307. that.visuForestCloudCameraBOListSearch = res.data;
  3308. that.visuForestCloudCameraBOList = res.data;
  3309. //根据设备类型查看列表
  3310. if (res.data != null && res.data.length > 0) {
  3311. for (let i = 0; i < res.data.length; i++) {
  3312. let markersMap = {
  3313. lng: res.data[i].longitude,
  3314. lat: res.data[i].latitude,
  3315. icon: "camera",
  3316. bindPopupHtml: "",
  3317. click: "preview",
  3318. parameter: "",
  3319. keepBindPopup: false,
  3320. isAggregation: false,
  3321. };
  3322. if (res.data[i].channelCode != null) {
  3323. markersMap.parameter = {
  3324. code: res.data[i].cameraCode,
  3325. name: res.data[i].cameraName,
  3326. type: res.data[i].cameraType,
  3327. };
  3328. } else {
  3329. markersMap.parameter = [];
  3330. }
  3331. if (res.data[i].cameraUse == 1) {
  3332. markersMap.icon = "sj-icon-map-centerdata-slmonitor";
  3333. } else if (res.data[i].cameraUse == 2) {
  3334. markersMap.icon = "camera";
  3335. } else if (res.data[i].cameraUse == 3) {
  3336. markersMap.icon = "sj-icon-map-centerdata-slmonitor-traffic";
  3337. } else if (res.data[i].cameraUse == 4) {
  3338. markersMap.icon = 'sj-icon-map-centerdata-sand-quarry-camera'
  3339. } else if (res.data[i].cameraUse == 5) {
  3340. markersMap.icon = 'sj-icon-map-centerdata-river_camera'
  3341. }
  3342. markersMap.lng = res.data[i].longitude;
  3343. markersMap.lat = res.data[i].latitude;
  3344. markersMap.radius = res.data[i].cameraRadius;
  3345. markersMap.bindPopupHtml =
  3346. '<div class="map-tip">' +
  3347. "<span>" +
  3348. ' <div class="d-l-con">' +
  3349. ' <div class="d-l-l-text">' +
  3350. " <h4>经纬度:" +
  3351. res.data[i].longitude +
  3352. "," +
  3353. res.data[i].latitude +
  3354. "</h4>" +
  3355. " </div>" +
  3356. " </div>" +
  3357. " </span>" +
  3358. "<span>" +
  3359. ' <div class="d-l-con">' +
  3360. ' <div class="d-l-l-text">' +
  3361. " <h4>摄像头名称:" +
  3362. res.data[i].cameraName +
  3363. "</h4>" +
  3364. " </div>" +
  3365. " </div>" +
  3366. " </span>" +
  3367. "<span>" +
  3368. ' <div class="d-l-con">' +
  3369. ' <div class="d-l-l-text">' +
  3370. " <h4>网络运营商:" +
  3371. (res.data[i].operatorType == "1" ?
  3372. "联通" :
  3373. res.data[i].operatorType == "2" ?
  3374. "移动" :
  3375. "电信") +
  3376. "</h4>" +
  3377. " </div>" +
  3378. " </div>" +
  3379. " </span>" +
  3380. "<span>" +
  3381. ' <div class="d-l-con">' +
  3382. ' <div class="d-l-l-text">' +
  3383. " <h4>摄像头半径:" +
  3384. res.data[i].cameraRadius +
  3385. "米</h4>" +
  3386. " </div>" +
  3387. " </div>" +
  3388. " </span>" +
  3389. "</div>";
  3390. cameraMarkersList.push(markersMap);
  3391. }
  3392. setTimeout(() => {
  3393. that.$refs.supermap.clearMRadius();
  3394. that.$refs.supermap.setMarkersRadius(cameraMarkersList);
  3395. }, 1000);
  3396. } else {
  3397. that.$refs.supermap.clearMRadius();
  3398. }
  3399. });
  3400. getCamerasByDeptId(depId).then((res) => {
  3401. this.$refs.TVWallNoRight.showTVWall(res.data, {
  3402. longitude: lng,
  3403. latitude: lat,
  3404. });
  3405. });
  3406. this.$refs.supermap.clearG();
  3407. setTimeout(() => {
  3408. if (depId == "365" || depId == "369" || depId == "371" || depId == "373" || depId == "372" || depId ==
  3409. "370") {
  3410. if (this.cameraUseCheckList.length == this.cameraUseList.length || this.cameraUseCheckList.length ==
  3411. 0) {
  3412. this.getNotCoverPlaces(depId);
  3413. }
  3414. }
  3415. }, 500)
  3416. },
  3417. selectCameraByDeptIds(depId, lng, lat) {
  3418. // if (!this.sideShowCamera) {
  3419. // this.$message.warning("请先选择视联网!")
  3420. // return
  3421. // }
  3422. this.visuForestCloudCameraBOListSearch = [];
  3423. this.visuForestCloudCameraBOList = [];
  3424. let that = this;
  3425. debugger
  3426. const str = this.cameraUseCheckList.join(",");
  3427. selectCameraByDeptId(depId, str).then((res) => {
  3428. that.visuForestCloudCameraBOListSearch = res.data;
  3429. that.visuForestCloudCameraBOList = res.data;
  3430. let cameraMarkersList = [];
  3431. //根据设备类型查看列表
  3432. if (res.data != null && res.data.length > 0) {
  3433. for (let i = 0; i < res.data.length; i++) {
  3434. let markersMap = {
  3435. lng: res.data[i].longitude,
  3436. lat: res.data[i].latitude,
  3437. icon: "camera",
  3438. bindPopupHtml: "",
  3439. click: "preview",
  3440. parameter: "",
  3441. keepBindPopup: false,
  3442. isAggregation: false,
  3443. };
  3444. if (res.data[i].channelCode != null) {
  3445. markersMap.parameter = {
  3446. code: res.data[i].cameraCode,
  3447. name: res.data[i].cameraName,
  3448. type: res.data[i].cameraType,
  3449. };
  3450. } else {
  3451. markersMap.parameter = [];
  3452. }
  3453. if (res.data[i].cameraUse == 1) {
  3454. if (res.data[i].workingStatus == 0) {
  3455. markersMap.icon = "sj-icon-map-centerdata-slmonitor";
  3456. } else {
  3457. markersMap.icon = "sj-icon-map-centerdata-slmonitor-not";
  3458. markersMap.click = ""
  3459. }
  3460. } else if (res.data[i].cameraUse == 2) {
  3461. if (res.data[i].workingStatus == 0) {
  3462. markersMap.icon = "camera";
  3463. } else {
  3464. markersMap.icon = "camera-not";
  3465. markersMap.click = ""
  3466. }
  3467. } else if (res.data[i].cameraUse == 3) {
  3468. if (res.data[i].workingStatus == 0) {
  3469. markersMap.icon = "sj-icon-map-centerdata-slmonitor-traffic";
  3470. } else {
  3471. markersMap.icon = "sj-icon-map-centerdata-slmonitor-traffic-not";
  3472. markersMap.click = ""
  3473. }
  3474. } else if (res.data[i].cameraUse == 4) {
  3475. if (res.data[i].workingStatus == 0) {
  3476. markersMap.icon = 'sj-icon-map-centerdata-sand-quarry-camera'
  3477. } else {
  3478. markersMap.icon = 'sj-icon-map-centerdata-sand-quarry-camera-not'
  3479. markersMap.click = ""
  3480. }
  3481. } else if (res.data[i].cameraUse == 5) {
  3482. if (res.data[i].workingStatus == 0) {
  3483. markersMap.icon = 'sj-icon-map-centerdata-river_camera'
  3484. } else {
  3485. markersMap.icon = 'sj-icon-map-centerdata-river_camera_not'
  3486. markersMap.click = ""
  3487. }
  3488. }
  3489. markersMap.lng = res.data[i].longitude;
  3490. markersMap.lat = res.data[i].latitude;
  3491. markersMap.radius = res.data[i].cameraRadius;
  3492. markersMap.bindPopupHtml =
  3493. '<div class="map-tip">' +
  3494. "<span>" +
  3495. ' <div class="d-l-con">' +
  3496. ' <div class="d-l-l-text">' +
  3497. " <h4>经纬度:" +
  3498. res.data[i].longitude +
  3499. "," +
  3500. res.data[i].latitude +
  3501. "</h4>" +
  3502. " </div>" +
  3503. " </div>" +
  3504. " </span>" +
  3505. "<span>" +
  3506. ' <div class="d-l-con">' +
  3507. ' <div class="d-l-l-text">' +
  3508. " <h4>摄像头名称:" +
  3509. res.data[i].cameraName +
  3510. "</h4>" +
  3511. " </div>" +
  3512. " </div>" +
  3513. " </span>" +
  3514. "<span>" +
  3515. ' <div class="d-l-con">' +
  3516. ' <div class="d-l-l-text">' +
  3517. " <h4>网络运营商:" +
  3518. (res.data[i].operatorType == "1" ?
  3519. "联通" :
  3520. res.data[i].operatorType == "2" ?
  3521. "移动" :
  3522. "电信") +
  3523. "</h4>" +
  3524. " </div>" +
  3525. " </div>" +
  3526. " </span>" +
  3527. "<span>" +
  3528. ' <div class="d-l-con">' +
  3529. ' <div class="d-l-l-text">' +
  3530. " <h4>摄像头半径:" +
  3531. res.data[i].cameraRadius +
  3532. "米</h4>" +
  3533. " </div>" +
  3534. " </div>" +
  3535. " </span>" +
  3536. "</div>";
  3537. cameraMarkersList.push(markersMap);
  3538. }
  3539. setTimeout(() => {
  3540. that.$refs.supermap.clearM();
  3541. that.$refs.supermap.clearMRadius();
  3542. that.$refs.supermap.setMarkersRadius(cameraMarkersList);
  3543. }, 1000);
  3544. } else {
  3545. that.$refs.supermap.clearM();
  3546. that.$refs.supermap.clearMRadius();
  3547. }
  3548. this.$refs.supermap.clearG();
  3549. setTimeout(() => {
  3550. if (depId == "365" || depId == "369" || depId == "371" || depId == "373" || depId == "372" ||
  3551. depId == "370") {
  3552. if (this.cameraUseCheckList.length == this.cameraUseList.length || this.cameraUseCheckList
  3553. .length == 0) {
  3554. this.getNotCoverPlaces(depId);
  3555. }
  3556. }
  3557. }, 500)
  3558. });
  3559. },
  3560. rotation(lng, lat, list) {
  3561. rotation(lng, lat, list).then((res) => {});
  3562. },
  3563. /** 标题返回 */
  3564. titleClick() {
  3565. this.sideShowHome = true;
  3566. this.sideShowCamera = false;
  3567. this.sideShowMonitor = false;
  3568. this.getEventPoint();
  3569. this.btnGetFocus1 = false;
  3570. this.btnGetFocus2 = false;
  3571. this.btnGetFocus3 = false;
  3572. this.btnGetFocus4 = false;
  3573. },
  3574. getByDeptId(index) {
  3575. let num = 0;
  3576. if (this.dept == "365") {
  3577. num = 0;
  3578. } else if (this.dept == "369") {
  3579. num = 1;
  3580. } else if (this.dept == "371") {
  3581. num = 2;
  3582. } else if (this.dept == "373") {
  3583. num = 3;
  3584. } else if (this.dept == "372") {
  3585. num = 4;
  3586. } else if (this.dept == "370") {
  3587. num = 5;
  3588. }
  3589. this.showModal6 = false;
  3590. this.showModal7 = false;
  3591. this.resourcesCheckList = [];
  3592. this.personnelVisualizationModel = "1";
  3593. this.personnelVisualizationList = [];
  3594. this.personneType = "";
  3595. this.personneTypeList = [];
  3596. this.personne = "";
  3597. this.personneList = [];
  3598. this.visible_tc = false;
  3599. this.visible_zy = false;
  3600. // 获取实时关注数据
  3601. this.getDeptEventCount();
  3602. // 获取事件统计数据
  3603. this.getEventStatistics();
  3604. // 获取重点工程数据
  3605. this.getKeyProjects();
  3606. // 获取重点区域
  3607. this.getImportAreaList();
  3608. // 四长概况
  3609. this.fourLengthOverview();
  3610. // // 四长统计
  3611. // this.listFourCount();
  3612. // 一网通办
  3613. this.allAtOnce();
  3614. // 加载事件点位
  3615. this.getEventPoint();
  3616. // 获取天气
  3617. this.getWeather();
  3618. this.titleClick();
  3619. this.layerCheckList = [];
  3620. this.$refs.supermap.removeAllviewer(num, index);
  3621. },
  3622. fourLengthOverTree(val) {
  3623. let that = this;
  3624. fourLengthOverTree({
  3625. timeTag: val,
  3626. deptId: that.dept,
  3627. })
  3628. .then(function(response) {
  3629. that.data = response.data;
  3630. that.expandedKeys.push(response.data[0].id);
  3631. })
  3632. .catch(function(error) {
  3633. console.log(error);
  3634. });
  3635. },
  3636. // 传感器
  3637. getSensorListByDeptId() {
  3638. this.btnGetFocus1 = false;
  3639. this.btnGetFocus2 = !this.btnGetFocus2;
  3640. this.btnGetFocus3 = false;
  3641. this.btnGetFocus4 = false;
  3642. let that = this;
  3643. let markersList = [];
  3644. getSensorListByDeptId({
  3645. deptId: that.dept,
  3646. })
  3647. .then(function(res) {
  3648. console.log(res.data);
  3649. if (res.data != null && res.data.length > 0) {
  3650. for (let i = 0; i < res.data.length; i++) {
  3651. let markersMap = {
  3652. lng: 124.59,
  3653. lat: 43.02,
  3654. icon: "marker",
  3655. bindPopupHtml: "",
  3656. click: "",
  3657. parameter: "",
  3658. keepBindPopup: false,
  3659. isAggregation: false,
  3660. };
  3661. markersMap.icon = "sensor";
  3662. markersMap.lng = res.data[i].longitude;
  3663. markersMap.lat = res.data[i].latitude;
  3664. markersList.push(markersMap);
  3665. }
  3666. setTimeout(() => {
  3667. that.$refs.supermap.clearM();
  3668. that.$refs.supermap.clearMRadius();
  3669. that.$refs.supermap.setMarkers(markersList);
  3670. }, 1000);
  3671. } else {
  3672. setTimeout(() => {
  3673. that.$refs.supermap.clearM();
  3674. that.$refs.supermap.clearMRadius();
  3675. }, 1000);
  3676. }
  3677. })
  3678. .catch(function(error) {
  3679. console.error(error);
  3680. });
  3681. },
  3682. jump() {
  3683. // 跳转大喇叭页面
  3684. window.open("https://sts.sty1818.com");
  3685. },
  3686. // 大喇叭
  3687. getDlblistBydeptIds() {
  3688. // if (!this.btnGetFocus3) {
  3689. // this.$message.warning("请先选择云广播!")
  3690. // return
  3691. // }
  3692. let that = this;
  3693. let markersList = [];
  3694. const str = that.broadcastUseCheckList.join(",");
  3695. getDlblistBydeptId({
  3696. deptId: that.dept,
  3697. broadcastUse: str,
  3698. })
  3699. .then(function(res) {
  3700. console.log(res.data);
  3701. if (res.data != null && res.data.length > 0) {
  3702. for (let i = 0; i < res.data.length; i++) {
  3703. let markersMap = {
  3704. lng: 124.59,
  3705. lat: 43.02,
  3706. icon: "big-horn",
  3707. bindPopupHtml: '<div class="map-tip">' +
  3708. "<span>" +
  3709. ' <div class="d-l-con">' +
  3710. ' <div class="d-l-l-text">' +
  3711. " <h4>名称:" +
  3712. (res.data[i].name ? res.data[i].name : "") +
  3713. "</h4>" +
  3714. " </div>" +
  3715. " </div>" +
  3716. " </span>" +
  3717. "<span>" +
  3718. ' <div class="d-l-con">' +
  3719. ' <div class="d-l-l-text">' +
  3720. " <h4>位置:" +
  3721. (res.data[i].position ? res.data[i].position : "") +
  3722. "</h4>" +
  3723. " </div>" +
  3724. " </div>" +
  3725. " </span>" +
  3726. "<span>" +
  3727. ' <div class="d-l-con">' +
  3728. ' <div class="d-l-l-text">' +
  3729. " <h4>备注:" +
  3730. (res.data[i].remark ? res.data[i].remark : "") +
  3731. "</h4>" +
  3732. " </div>" +
  3733. " </div>" +
  3734. " </span>" +
  3735. "<span>" +
  3736. ' <div class="d-l-con">' +
  3737. ' <div class="d-l-l-text">' +
  3738. " <h4>经纬度:" +
  3739. res.data[i].longitude +
  3740. "," +
  3741. res.data[i].latitude +
  3742. "</h4>" +
  3743. " </div>" +
  3744. " </div>" +
  3745. " </span>" +
  3746. "</div>",
  3747. click: "jump",
  3748. parameter: "",
  3749. keepBindPopup: false,
  3750. isAggregation: false,
  3751. };
  3752. if (res.data[i].broadcastUse == '1') {
  3753. markersMap.icon = "big-horn-emergency";
  3754. } else if (res.data[i].broadcastUse == '2') {
  3755. markersMap.icon = "big-horn";
  3756. }
  3757. markersMap.lng = res.data[i].longitude;
  3758. markersMap.lat = res.data[i].latitude;
  3759. markersList.push(markersMap);
  3760. }
  3761. setTimeout(() => {
  3762. that.$refs.supermap.clearM();
  3763. that.$refs.supermap.clearMRadius();
  3764. that.$refs.supermap.setMarkers(markersList);
  3765. }, 1000);
  3766. } else {
  3767. setTimeout(() => {
  3768. that.$refs.supermap.clearM();
  3769. that.$refs.supermap.clearMRadius();
  3770. }, 1000);
  3771. }
  3772. })
  3773. .catch(function(error) {
  3774. console.error(error);
  3775. });
  3776. },
  3777. getDlblistBydeptId() {
  3778. let that = this
  3779. that.$refs.supermap.clearG();
  3780. that.resourcesCheckList = [];
  3781. if (that.cgqTimer != null) {
  3782. clearInterval(that.cgqTimer);
  3783. }
  3784. that.broadcastUseCheckList = []
  3785. that.cameraUseCheckList = []
  3786. that.sensorCheckList = []
  3787. that.sideShowHome = true;
  3788. that.sideShowMonitor = false;
  3789. that.sideShowCamera = false;
  3790. that.btnGetFocus1 = false;
  3791. that.btnGetFocus2 = false;
  3792. that.btnGetFocus3 = !that.btnGetFocus3;
  3793. that.visible_ygb = !that.visible_ygb;
  3794. that.btnGetFocus4 = false;
  3795. that.showModal7 = false;
  3796. that.showModal6 = false;
  3797. this.getLocation()
  3798. that.resettings();
  3799. if (!that.btnGetFocus3) {
  3800. that.$refs.supermap.clearM();
  3801. that.$refs.supermap.clearMRadius();
  3802. } else {
  3803. that.broadcastUseList.forEach(function(item) {
  3804. that.broadcastUseCheckList.push(item.dictValue)
  3805. });
  3806. }
  3807. that.$refs.btnGetFocus3.updatePopper();
  3808. that.getDlblistBydeptIds();
  3809. },
  3810. // 获取天气数据
  3811. getWeather() {
  3812. let that = this;
  3813. let date = new Date();
  3814. let y = date.getFullYear();
  3815. let m = date.getMonth() + 1;
  3816. m = m < 10 ? "0" + m : m;
  3817. let d = date.getDate();
  3818. d = d < 10 ? "0" + d : d;
  3819. let str = y + "-" + m + "-" + d;
  3820. getWeather({
  3821. day: str,
  3822. }).then((res) => {
  3823. if (res.data.length > 0) {
  3824. that.weatherinformationLow = res.data[0].weatherinformationLow;
  3825. that.weatherinformationPower = res.data[0].weatherinformationPower;
  3826. that.weatherinformationHigh = res.data[0].weatherinformationHigh;
  3827. that.weatherinformationDirection =
  3828. res.data[0].weatherinformationDirection;
  3829. that.weatherinformationTemperature =
  3830. res.data[0].weatherinformationTemperature;
  3831. }
  3832. console.log("获取天气数据=", res.data[0]);
  3833. });
  3834. },
  3835. // 加载事件点位
  3836. getEventPoint() {
  3837. let that = this;
  3838. getEventPoint({
  3839. deptId: that.dept,
  3840. })
  3841. .then(function(response) {
  3842. console.log(response.data);
  3843. let markersList = [];
  3844. let res = response;
  3845. if (res.data != null && res.data.length > 0) {
  3846. for (let i = 0; i < res.data.length; i++) {
  3847. let markersMap = {
  3848. lng: 124.59,
  3849. lat: 43.02,
  3850. icon: "marker",
  3851. bindPopupHtml: "",
  3852. click: "",
  3853. parameter: "",
  3854. keepBindPopup: false,
  3855. isAggregation: true,
  3856. };
  3857. // if (res.data.length > 200) {
  3858. // markersMap.isAggregation = true
  3859. // }
  3860. if (
  3861. res.data[i].eventStatusValue == "forest_event_status_1" &&
  3862. res.data[i].urgeCount == 0
  3863. ) {
  3864. markersMap.click = "showEventDialog";
  3865. markersMap.icon = "sj-icon-map-xinshangbao";
  3866. }
  3867. if (
  3868. res.data[i].eventStatusValue == "forest_event_status_1" &&
  3869. res.data[i].urgeCount > 0
  3870. ) {
  3871. markersMap.click = "showEventDialog";
  3872. markersMap.icon = "sj-icon-map-cuiban";
  3873. } else if (
  3874. res.data[i].eventStatusValue == "forest_event_status_2"
  3875. ) {
  3876. markersMap.click = "showEventDialog";
  3877. markersMap.icon = "sj-icon-map-qianshou";
  3878. markersMap.isAggregation = false;
  3879. } else if (
  3880. res.data[i].eventStatusValue == "forest_event_status_5"
  3881. ) {
  3882. markersMap.click = "showEventDialog";
  3883. markersMap.icon = "sj-icon-map-banjie";
  3884. markersMap.isAggregation = false;
  3885. } else if (
  3886. res.data[i].eventStatusValue == "forest_event_status_6"
  3887. ) {
  3888. markersMap.click = "showEventDialog";
  3889. markersMap.icon = "sj-icon-map-guidang";
  3890. } else if (
  3891. res.data[i].eventStatusValue == "forest_event_status_7"
  3892. ) {
  3893. markersMap.click = "showEventDialog";
  3894. markersMap.icon = "sj-icon-map-queren";
  3895. }
  3896. markersMap.parameter = res.data[i].eventCode;
  3897. markersMap.lng = res.data[i].longitude;
  3898. markersMap.lat = res.data[i].latitude;
  3899. markersMap.bindPopupHtml = '<div class="map-tip">' +
  3900. '<span>' +
  3901. ' <div class="d-l-con">' +
  3902. ' <div class="d-l-l-text">' +
  3903. ' <h4>经纬度:' + res.data[i].longitude + ',' + res.data[i].latitude + '</h4>' +
  3904. ' </div>' +
  3905. ' </div>' +
  3906. ' </span>' +
  3907. '<span>' +
  3908. ' <div class="d-l-con">' +
  3909. ' <div class="d-l-l-text">' +
  3910. ' <h4>事件名称:' + res.data[i].eventName + '</h4>' +
  3911. ' </div>' +
  3912. ' </div>' +
  3913. ' </span>'
  3914. // '<span>' +
  3915. // ' <div class="d-l-con">' +
  3916. // ' <div class="d-l-l-text">' +
  3917. // ' <h4>事件时间:' + res.data[i].createTime + '</h4>' +
  3918. // ' </div>' +
  3919. // ' </div>' +
  3920. // ' </span>';
  3921. if (res.data[i].pictureType == 'image' && res.data[i].picturePath != null && res.data[i]
  3922. .picturePath != '') {
  3923. markersMap.bindPopupHtml += '<span>' +
  3924. ' <div class="d-l-con">' +
  3925. ' <div class="d-l-l-text">' +
  3926. '<img src="' + res.data[i].picturePath + '" style="width: 150px;height: 100px"/>' +
  3927. ' </div>' +
  3928. ' </div>' +
  3929. ' </span>'
  3930. }
  3931. markersMap.bindPopupHtml += '</div>'
  3932. markersList.push(markersMap);
  3933. }
  3934. setTimeout(() => {
  3935. that.$refs.supermap.clearM();
  3936. that.$refs.supermap.clearMRadius();
  3937. that.$refs.supermap.setMarkers(markersList);
  3938. }, 1000);
  3939. } else {
  3940. setTimeout(() => {
  3941. that.$refs.supermap.clearM();
  3942. that.$refs.supermap.clearMRadius();
  3943. }, 1000);
  3944. }
  3945. })
  3946. .catch(function(error) {
  3947. console.error(error);
  3948. });
  3949. },
  3950. // 展示电视墙
  3951. showTVWall() {
  3952. this.$refs.supermap.clearG();
  3953. this.resourcesCheckList = [];
  3954. this.btnGetFocus1 = false;
  3955. this.btnGetFocus2 = false;
  3956. this.btnGetFocus3 = false;
  3957. this.btnGetFocus4 = !this.btnGetFocus4;
  3958. this.showModal7 = false;
  3959. this.showModal6 = false;
  3960. this.getLocation()
  3961. this.resettings();
  3962. getTVWallList().then((res) => {
  3963. this.$refs.TVWallNoRight.showTVWall(res.data, null);
  3964. this.getEventPoint();
  3965. });
  3966. },
  3967. // 获取所有摄像头
  3968. selectDeviceType() {
  3969. this.deptId = Cookies.get("deptId");
  3970. this.$refs.supermap.clearG();
  3971. //当左右收起,点击视联网,左右会弹出
  3972. if (!this.expandValue) {
  3973. this.$refs.exb.expandClick();
  3974. }
  3975. this.resourcesCheckList = [];
  3976. if (this.cgqTimer != null) {
  3977. clearInterval(this.cgqTimer);
  3978. }
  3979. this.btnGetFocus1 = !this.btnGetFocus1;
  3980. this.visible_slw = !this.visible_slw;
  3981. this.btnGetFocus2 = false;
  3982. this.btnGetFocus3 = false;
  3983. this.btnGetFocus4 = false;
  3984. this.showModal7 = false;
  3985. this.showModal6 = false;
  3986. this.getLocation()
  3987. this.resettings();
  3988. let that = this;
  3989. // that.sideShowHome = false;
  3990. // that.sideShowCamera = true;
  3991. if (that.sideShowCamera) {
  3992. this.titleClick();
  3993. return;
  3994. } else {
  3995. that.sideShowHome = false;
  3996. that.sideShowMonitor = false;
  3997. that.sideShowCamera = true;
  3998. that.cameraUseList.forEach(function(item) {
  3999. that.cameraUseCheckList.push(item.dictValue)
  4000. });
  4001. }
  4002. this.selectCameraByDeptIds(this.dept);
  4003. that.$refs.sideShowCamera.updatePopper();
  4004. },
  4005. // 获取所有摄像头
  4006. // 获取附近摄像头
  4007. getNearCamera(data) {
  4008. let cameraMarkersList = [];
  4009. let that = this;
  4010. if (data != null && data.length > 0) {
  4011. for (let i = 0; i < data.length; i++) {
  4012. let markersMap = {
  4013. lng: 124.59,
  4014. lat: 43.02,
  4015. icon: "camera",
  4016. bindPopupHtml: "",
  4017. click: "preview",
  4018. keepBindPopup: false,
  4019. isAggregation: false,
  4020. };
  4021. if (data[i].cameraCode != null) {
  4022. markersMap.parameter = {
  4023. cameraCode: data[i].cameraCode,
  4024. cameraFactory: data[i].cameraFactory,
  4025. };
  4026. } else {
  4027. markersMap.parameter = [];
  4028. }
  4029. markersMap.lng = data[i].longitude;
  4030. markersMap.lat = data[i].latitude;
  4031. markersMap.radius = data[i].cameraRadius;
  4032. markersMap.bindPopupHtml =
  4033. '<div class="map-tip">' +
  4034. "<span>" +
  4035. ' <div class="d-l-con">' +
  4036. ' <div class="d-l-l-text">' +
  4037. " <h4>摄像头名称:" +
  4038. data[i].cameraName +
  4039. "</h4>" +
  4040. " </div>" +
  4041. " </div>" +
  4042. " </span>" +
  4043. "<span>" +
  4044. ' <div class="d-l-con">' +
  4045. ' <div class="d-l-l-text">' +
  4046. " <h4>网络运营商:" +
  4047. (res.data[i].operatorType == "1" ?
  4048. "联通" :
  4049. res.data[i].operatorType == "2" ?
  4050. "移动" :
  4051. "电信") +
  4052. "</h4>" +
  4053. " </div>" +
  4054. " </div>" +
  4055. " </span>" +
  4056. "<span>" +
  4057. ' <div class="d-l-con">' +
  4058. ' <div class="d-l-l-text">' +
  4059. " <h4>摄像头半径:" +
  4060. data[i].cameraRadius +
  4061. "米</h4>" +
  4062. " </div>" +
  4063. " </div>" +
  4064. " </span>" +
  4065. "</div>";
  4066. cameraMarkersList.push(markersMap);
  4067. }
  4068. setTimeout(() => {
  4069. that.$refs.supermap.clearMRadius();
  4070. that.$refs.supermap.setMarkersRadius(cameraMarkersList);
  4071. }, 1000);
  4072. } else {
  4073. setTimeout(() => {
  4074. that.$refs.supermap.clearMRadius();
  4075. }, 1000);
  4076. }
  4077. that.$refs.supermap.clearG();
  4078. },
  4079. // 一网通办
  4080. allAtOnce() {
  4081. let that = this;
  4082. allAtOnce({
  4083. deptId: that.dept,
  4084. })
  4085. .then(function(response) {
  4086. if (response.data != undefined) {
  4087. that.networkprocessingData = response.data;
  4088. that.networkprocessingData.upDown = parseInt(
  4089. response.data.upDown.replace("%")
  4090. );
  4091. } else {
  4092. that.networkprocessingData = {
  4093. naturalPersonCompletionRate: "",
  4094. naturalPersonCompletionNumber: 0,
  4095. naturalPersonProcessingNumber: 0,
  4096. legalPersonCompletionRate: "",
  4097. legalPersonCompletionNumber: 0,
  4098. legalPersonProcessingNumber: 0,
  4099. upDown: 0,
  4100. hallProcessingTotalNumber: 0,
  4101. previousDayHallProcessingTotalNumber: 0,
  4102. top1CompletionNumber: 0,
  4103. top2CompletionNumber: 0,
  4104. top3CompletionNumber: 0,
  4105. top4CompletionNumber: 0,
  4106. top5CompletionNumber: 0,
  4107. top1DeptName: "-",
  4108. top2DeptName: "-",
  4109. top3DeptName: "-",
  4110. top4DeptName: "-",
  4111. top5DeptName: "-",
  4112. verySatisfied: 0,
  4113. satisfied: 0,
  4114. basicallySatisfied: 0,
  4115. dissatisfied: 0,
  4116. veryDissatisfied: 0,
  4117. upDownzuidui: 0,
  4118. };
  4119. }
  4120. console.log(response.data);
  4121. })
  4122. .catch(function(error) {
  4123. console.error(error);
  4124. });
  4125. },
  4126. // 事件统计-事件详情
  4127. getEventStatisticsOther() {
  4128. let that = this;
  4129. getEventStatisticsOther({
  4130. deptId: that.dept,
  4131. })
  4132. .then(function(response) {
  4133. that.eventDetails1 = response.data.hgj;
  4134. that.eventDetails2 = response.data.trend;
  4135. that.getEchartssjData1();
  4136. that.getEchartssjData2();
  4137. console.log(response.data);
  4138. })
  4139. .catch(function(error) {
  4140. console.error(error);
  4141. });
  4142. },
  4143. // 实时关注统计
  4144. getAnalysisReport() {
  4145. let that = this;
  4146. getAnalysisReport({
  4147. deptId: that.dept,
  4148. })
  4149. .then(function(response) {
  4150. that.fireLossStatistics = response.data.fireLoss;
  4151. if (response.data.fireSource.length > 0)
  4152. that.statisticsCausesFire = response.data.fireSource;
  4153. else
  4154. that.statisticsCausesFire = [{
  4155. num: 0,
  4156. max: 500,
  4157. name: "",
  4158. }, ];
  4159. if (response.data.firePlace.length > 0)
  4160. that.statisticsFireSites = response.data.firePlace;
  4161. else
  4162. that.statisticsFireSites = [{
  4163. num: 0,
  4164. max: 500,
  4165. name: "",
  4166. }, ];
  4167. if (response.data.fireInfo.length > 0)
  4168. that.fireSituation = response.data.fireInfo;
  4169. else
  4170. that.fireSituation = [{
  4171. num: 0,
  4172. name: "",
  4173. }, ];
  4174. that.getEchartstkData1();
  4175. that.getEchartstkData2();
  4176. that.getEchartstkData3();
  4177. that.getEchartstkData4();
  4178. console.log(response.data);
  4179. })
  4180. .catch(function(error) {
  4181. console.error(error);
  4182. });
  4183. },
  4184. //四长tab切换点击事件
  4185. szHandleClick(tab, e) {
  4186. console.log("点击了四长tab标签", tab, e);
  4187. this.linName = "";
  4188. this.heName = "";
  4189. this.luName = "";
  4190. this.tianName = "";
  4191. if (tab.index == 0) {
  4192. this.fourLengthOverTree(1); // 林长
  4193. } else if (tab.index == 1) {
  4194. this.fourLengthOverTree(6); // 田长
  4195. } else if (tab.index == 2) {
  4196. this.fourLengthOverTree(3); // 路长
  4197. } else if (tab.index == 3) {
  4198. this.fourLengthOverTree(2); //河长
  4199. }
  4200. },
  4201. fourLengthOverview() {
  4202. let that = this;
  4203. fourLengthOverview({
  4204. deptId: that.dept,
  4205. })
  4206. .then(function(response) {
  4207. console.log("fourLengthOverview response=", response.data);
  4208. that.fourLengthStatistics.list = response.data.patrol;
  4209. that.fourLengthStatistics.TotalNumberofPeople = response.data.total;
  4210. that.fourLeadersChart();
  4211. })
  4212. .catch(function(error) {
  4213. console.error(error);
  4214. });
  4215. },
  4216. // 获取四长概况数据 新功能 已改版
  4217. fourLengthOverviewOther() {
  4218. let that = this;
  4219. //commandCenter/overview 四长概况 get请求 入参deptId 部门id
  4220. fourLengthOverviewOther({
  4221. deptId: that.dept,
  4222. })
  4223. .then(function(response) {
  4224. console.log("response=", response);
  4225. if (response.data.task.length > 0) {
  4226. for (let i = 0; i < response.data.task.length; i++) {
  4227. if (response.data.task[i].name == "1") {
  4228. that.fourLengthTask[0].value = response.data.task[i].num;
  4229. } else if (response.data.task[i].name == "2") {
  4230. that.fourLengthTask[1].value = response.data.task[i].num;
  4231. } else if (response.data.task[i].name == "3") {
  4232. that.fourLengthTask[2].value = response.data.task[i].num;
  4233. } else if (response.data.task[i].name == "6") {
  4234. that.fourLengthTask[3].value = response.data.task[i].num;
  4235. }
  4236. }
  4237. }
  4238. if (response.data.plan.length > 0) {
  4239. for (let i = 0; i < response.data.plan.length; i++) {
  4240. if (response.data.task[i].name == "1") {
  4241. that.fourLengthPlan[0] = response.data.plan[i].num;
  4242. } else if (response.data.plan[i].name == "2") {
  4243. that.fourLengthPlan[1] = response.data.plan[i].num;
  4244. } else if (response.data.plan[i].name == "3") {
  4245. that.fourLengthPlan[2] = response.data.plan[i].num;
  4246. } else if (response.data.plan[i].name == "6") {
  4247. that.fourLengthPlan[3] = response.data.plan[i].num;
  4248. }
  4249. }
  4250. }
  4251. if (
  4252. response.data.structure != null &&
  4253. response.data.structure != undefined
  4254. ) {
  4255. that.overview[0] = response.data.structure["1"];
  4256. that.overview[1] = response.data.structure["2"];
  4257. that.overview[2] = response.data.structure["3"];
  4258. that.overview[3] = response.data.structure["4"];
  4259. }
  4260. that.fourLeaderChartPop();
  4261. that.fourLeaderChartPop2();
  4262. that.fourLeaderChartPop3();
  4263. console.log(response.data);
  4264. })
  4265. .catch(function(error) {
  4266. console.error(error);
  4267. });
  4268. },
  4269. // 获取重点区域数据
  4270. getImportAreaList1() {
  4271. let that = this;
  4272. that.queryParams.deptId = that.dept;
  4273. getImportAreaListOne(that.queryParams)
  4274. .then(function(response) {
  4275. that.keyAreasListList = response.rows;
  4276. that.total1 = response.total;
  4277. })
  4278. .catch(function(error) {
  4279. console.error(error);
  4280. });
  4281. },
  4282. // 获取重点区域数据
  4283. getImportAreaList() {
  4284. let that = this;
  4285. getImportAreaList({
  4286. deptId: that.dept,
  4287. })
  4288. .then(function(response) {
  4289. that.keyAreasList = response.data;
  4290. console.log(response.data);
  4291. })
  4292. .catch(function(error) {
  4293. console.error(error);
  4294. });
  4295. },
  4296. getKeyProjects1() {
  4297. let that = this;
  4298. this.queryParams1.deptId = this.dept;
  4299. getKeyProjectsOne(this.queryParams1)
  4300. .then(function(response) {
  4301. that.imgLists = response.rows;
  4302. that.total = response.total;
  4303. })
  4304. .catch(function(error) {
  4305. console.error(error);
  4306. });
  4307. },
  4308. // 获取重点工程数据
  4309. getKeyProjects() {
  4310. let that = this;
  4311. getKeyProjects({
  4312. deptId: that.dept,
  4313. })
  4314. .then(function(response) {
  4315. console.log(response.data);
  4316. that.imgList = [];
  4317. for (let i = 1; i <= Math.ceil(response.data.length / 6); i++) {
  4318. let data = [];
  4319. let jlength =
  4320. response.data.length - i * 6 < 0 ?
  4321. response.data.length - i * 6 + 6 :
  4322. 6;
  4323. for (let j = 0; j < jlength; j++) {
  4324. data.push({
  4325. projectId: response.data[i * 6 - 6 + j].projectId,
  4326. projectName: response.data[i * 6 - 6 + j].projectName,
  4327. projectTarget: response.data[i * 6 - 6 + j].projectTarget,
  4328. longitude: response.data[i * 6 - 6 + j].longitude,
  4329. latitude: response.data[i * 6 - 6 + j].latitude,
  4330. photoId: response.data[i * 6 - 6 + j].photo_id,
  4331. introduction: response.data[i * 6 - 6 + j].introduction,
  4332. cameraList: response.data[i * 6 - 6 + j].cameraList,
  4333. scheduleList: response.data[i * 6 - 6 + j].scheduleList,
  4334. territoriality: response.data[i * 6 - 6 + j].territoriality,
  4335. park: response.data[i * 6 - 6 + j].park,
  4336. parklongitude: response.data[i * 6 - 6 + j].parklongitude,
  4337. parklatitude: response.data[i * 6 - 6 + j].parklatitude,
  4338. environment: response.data[i * 6 - 6 + j].environment,
  4339. legalUnit: response.data[i * 6 - 6 + j].legalUnit,
  4340. startTime: response.data[i * 6 - 6 + j].startTime,
  4341. endTime: response.data[i * 6 - 6 + j].endTime,
  4342. naturer: response.data[i * 6 - 6 + j].naturer,
  4343. totalInvest: response.data[i * 6 - 6 + j].totalInvest,
  4344. yearInvest: response.data[i * 6 - 6 + j].yearInvest,
  4345. industryType: response.data[i * 6 - 6 + j].industryType,
  4346. principal: response.data[i * 6 - 6 + j].principal,
  4347. phone: response.data[i * 6 - 6 + j].phone,
  4348. });
  4349. }
  4350. that.imgList.push(data);
  4351. }
  4352. console.log(111111, that.imgList);
  4353. })
  4354. .catch(function(error) {
  4355. console.error(error);
  4356. });
  4357. },
  4358. resourcesClick() {
  4359. this.getResourceType(this.resourcesType);
  4360. this.markersList = [];
  4361. // this.$refs.supermap.clearM();
  4362. // this.getEventPoint()
  4363. //this.resourcesCheckList = []
  4364. console.log(this.resourcesCheckList);
  4365. },
  4366. getResourceType(resourcesType) {
  4367. let type = this.resourcesTypeList.filter(item => item.id == resourcesType)[0].name
  4368. let that = this;
  4369. // that.resourcesCheckList = []
  4370. that.resourcesList = [];
  4371. // this.$refs.supermap.clearM();
  4372. // this.$refs.supermap.clearMRadius();
  4373. fireControlViewList(type, 'leader').then(function(res) {
  4374. for (let i = 0; i < res.data.length; i++) {
  4375. if (res.data[i].type != 'centerdata_t_forest_fireteam') {
  4376. that.resourcesList.push(res.data[i]);
  4377. }
  4378. }
  4379. if (resourcesType == 8 || resourcesType == 5) {
  4380. that.resourcesList = that.resourcesList.filter(item => item.type != 'centerdata_t_forest_fireteam')
  4381. }
  4382. //截取data.resourceTable字段中“_”分隔符最后一个作为关键字,重新拼接成前端需要的图标:class,格式sj-icon-xxxx,将其set回原数组
  4383. that.resourcesList.forEach(function(data, index) {
  4384. data.name = data.name.replaceAll("(", '(' + data.num)
  4385. that.resourcesList.splice(index, 1, data)
  4386. //that.$set(that.resourcesList[index], "name", );
  4387. // //每个图标对应固定颜色
  4388. // that.$set(that.resourcesList[index], "bg", getIconBg(icon));
  4389. });
  4390. //that.fireControlViewPoint("xiaofang", "");
  4391. });
  4392. },
  4393. getResourcePoint() {
  4394. let that = this;
  4395. this.markersList = [];
  4396. this.$refs.supermap.clearM();
  4397. let str = this.resourcesCheckList.join(",")
  4398. if (str == '' || str == null) return;
  4399. const param = {
  4400. type: str,
  4401. deptId: that.deptId,
  4402. name: '',
  4403. assort: 'leader'
  4404. }
  4405. //this.resourcesCheckList.forEach((item) => {
  4406. fireControlViewPointPost(param).then((res) => {
  4407. console.log(that.deptId)
  4408. let resList1 = [];
  4409. resList1 = res.data;
  4410. console.log("resList1=", resList1)
  4411. resList1.forEach((item2) => {
  4412. let markersMap = {
  4413. lng: item2.longitude,
  4414. lat: item2.latitude,
  4415. icon: "marker",
  4416. bindPopupHtml: "",
  4417. click: "",
  4418. keepBindPopup: false,
  4419. isAggregation: false,
  4420. };
  4421. this.markersList.push(this.getMarkersMap1(item2.indexName, markersMap, item2));
  4422. this.$refs.supermap.setMarkers([this.getMarkersMap1(item2.indexName, markersMap, item2)]);
  4423. });
  4424. });
  4425. //});
  4426. },
  4427. getMarkersMap1(resourceTable, markersMap, item) {
  4428. let icon = "sj-icon-map-" + resourceTable.replaceAll("_", "-").replaceAll("@", "-");
  4429. item.type = resourceTable
  4430. markersMap.lng = item.longitude;
  4431. markersMap.lat = item.latitude;
  4432. markersMap.click = "sewageOutletClick";
  4433. // if(this.farmingList.includes(resourceTable)){
  4434. // markersMap.click = "sewageOutletClickfarming";
  4435. // }
  4436. markersMap.parameter = item;
  4437. markersMap.icon = icon;
  4438. markersMap.bindPopupHtml =
  4439. '<div class="map-tip">' +
  4440. "<span>" +
  4441. ' <div class="d-l-con">' +
  4442. ' <div class="d-l-l-text">' +
  4443. " <h4>经纬度:" +
  4444. (item.longitude ? item.longitude : "") +
  4445. "," +
  4446. (item.latitude ? item.latitude : "") +
  4447. "</h4>" +
  4448. " </div>" +
  4449. " </div>" +
  4450. " </span>" +
  4451. "<span>" +
  4452. ' <div class="d-l-con">' +
  4453. ' <div class="d-l-l-text">' +
  4454. " <h4>名称:" +
  4455. (item.name ? item.name : "无") +
  4456. "</h4>" +
  4457. " </div>" +
  4458. " </div>" +
  4459. " </span>" +
  4460. "<span>" +
  4461. ' <div class="d-l-con">' +
  4462. ' <div class="d-l-l-text">' +
  4463. " <h4>地址:" +
  4464. (item.address ? item.address : "无") +
  4465. "</h4>" +
  4466. " </div>" +
  4467. " </div>" +
  4468. " </span>" +
  4469. "<span>" +
  4470. ' <div class="d-l-con">' +
  4471. ' <div class="d-l-l-text">' +
  4472. " <h4>联系人:" +
  4473. (item.contacts ? item.contacts : "无") +
  4474. "</h4>" +
  4475. " </div>" +
  4476. " </div>" +
  4477. " </span>" +
  4478. "<span>" +
  4479. ' <div class="d-l-con">' +
  4480. ' <div class="d-l-l-text">' +
  4481. " <h4>联系电话:" +
  4482. (item.phone ? item.phone : "无") +
  4483. "</h4>" +
  4484. " </div>" +
  4485. " </div>" +
  4486. " </span></div>";
  4487. console.log(markersMap)
  4488. return markersMap;
  4489. },
  4490. resourcesClose() {
  4491. this.markersList = [];
  4492. // this.$refs.supermap.clearM();
  4493. // this.getEventPoint()
  4494. //this.resourcesCheckList = []
  4495. console.log(this.resourcesCheckList);
  4496. },
  4497. colseClick() {
  4498. this.resourcesCheckList = [];
  4499. this.$refs.supermap.clearM();
  4500. this.getEventPoint();
  4501. },
  4502. getNotCoverPlaces(deptId) {
  4503. let that = this;
  4504. if (that.sideShowCamera) {
  4505. notCoverPlaces(deptId).then((res) => {
  4506. if (res.data != null && Array.isArray(res.data)) {
  4507. that.$refs.supermap.setGraphicsListMultiple(res.data, "rgb(105, 105, 255)", 0.8);
  4508. }
  4509. })
  4510. } else {
  4511. that.$refs.supermap.clearG();
  4512. }
  4513. },
  4514. hideClick() {
  4515. this.showModal7 = false;
  4516. this.getLocation()
  4517. this.showModal6 = false;
  4518. //this.resourcesCheckList=[]
  4519. // this.$refs.supermap.clearM()
  4520. // this.getEventPoint()
  4521. },
  4522. getResourcesType(item) {
  4523. this.$refs.supermap.clearM();
  4524. this.resourcesCheckList = [];
  4525. if (item == "resources_type1") {
  4526. //数字林业
  4527. // this.$refs.supermap.clearM();
  4528. // this.resourcesCheckList = []
  4529. this.resourcesList = [];
  4530. getResourcefire().then((res) => {
  4531. this.resourcesList = res.data;
  4532. });
  4533. } else if (item == "resources_type2") {
  4534. //数字农业
  4535. // this.$refs.supermap.clearM();
  4536. // this.resourcesCheckList = []
  4537. this.resourcesList = [];
  4538. getResourceagriculture().then((res) => {
  4539. this.resourcesList = res.data;
  4540. });
  4541. } else if (item == "resources_type3") {
  4542. //数字水利
  4543. // this.$refs.supermap.clearM();
  4544. // this.resourcesCheckList = []
  4545. this.resourcesList = [];
  4546. getResourcewater().then((res) => {
  4547. this.resourcesList = res.data;
  4548. });
  4549. } else if (item == "resources_type4") {
  4550. //数字环保
  4551. // this.$refs.supermap.clearM();
  4552. // this.resourcesCheckList = []
  4553. this.resourcesList = [];
  4554. getResourceenvironment().then((res) => {
  4555. this.resourcesList = res.data;
  4556. });
  4557. } else if (item == "resources_type5") {
  4558. //数字应急
  4559. // this.$refs.supermap.clearM();
  4560. // this.resourcesCheckList = []
  4561. this.resourcesList = [];
  4562. getResourceemergency().then((res) => {
  4563. this.resourcesList = res.data;
  4564. });
  4565. } else if (item == "resources_type6") {
  4566. //数字交通
  4567. // this.$refs.supermap.clearM();
  4568. // this.resourcesCheckList = []
  4569. this.resourcesList = [];
  4570. getResourcesCounttraffic().then((res) => {
  4571. this.resourcesList = res.data;
  4572. });
  4573. } else if (item == "resources_type7") {
  4574. //数字资源
  4575. // this.$refs.supermap.clearM();
  4576. // this.resourcesCheckList = []
  4577. this.resourcesList = [];
  4578. getResourceres().then((res) => {
  4579. this.resourcesList = res.data;
  4580. });
  4581. } else if (item == "resources_type8") {
  4582. //数字消防
  4583. // this.$refs.supermap.clearM();
  4584. // this.resourcesCheckList = []
  4585. this.resourcesList = [];
  4586. fireControlViewList().then((res) => {
  4587. this.resourcesList = res.data;
  4588. });
  4589. }
  4590. },
  4591. //重置重点工程和重点区域的搜索框
  4592. resetting(type) {
  4593. if (type == 2) {
  4594. this.queryParams = {
  4595. pageNum: 1,
  4596. pageSize: 10,
  4597. deptId: null,
  4598. params: {
  4599. areaName: null,
  4600. projectLevel: null,
  4601. },
  4602. };
  4603. this.getImportAreaList1();
  4604. } else {
  4605. this.queryParams1 = {
  4606. pageNum: 1,
  4607. pageSize: 10,
  4608. deptId: null,
  4609. params: {
  4610. projectName: null,
  4611. projectLevel: null,
  4612. },
  4613. };
  4614. this.getKeyProjects1();
  4615. }
  4616. },
  4617. // 获取事件统计数据
  4618. getEventStatistics() {
  4619. let that = this;
  4620. getEventStatistics({
  4621. deptId: that.dept,
  4622. })
  4623. .then(function(response) {
  4624. let data = response.data;
  4625. that.eventStatistics.processedNum = data.status[0].processed;
  4626. that.eventStatistics.totalNum = data.status[0].num;
  4627. that.eventStatistics.untreatedNum = data.status[0].unprocessed;
  4628. that.eventStatistics.eventList = [];
  4629. for (let i = 0; i < data.type.length; i++) {
  4630. that.eventStatistics.eventList.push({
  4631. name: data.type[i].name,
  4632. value: data.type[i].num,
  4633. });
  4634. }
  4635. // 刷新事件统计
  4636. that.getEchartsj2Data();
  4637. console.log(response.data);
  4638. })
  4639. .catch(function(error) {
  4640. console.error(error);
  4641. });
  4642. },
  4643. // 展示下载操作手册列表
  4644. showDownloadList(type) {
  4645. let that = this;
  4646. that.isShowDownloadList = true;
  4647. this.showModal7 = false;
  4648. this.showModal6 = false;
  4649. if (type == "1") {
  4650. searchAllYouWant({
  4651. keyWord: this.fileNameS,
  4652. })
  4653. .then(function(response) {
  4654. console.log(response.data);
  4655. that.downloadList = response.data;
  4656. })
  4657. .catch(function(error) {
  4658. console.error(error);
  4659. });
  4660. }
  4661. },
  4662. // 关闭下载操作手册列表
  4663. cancelShowDownloadList() {
  4664. this.fileNameS = ""
  4665. this.downloadList = []
  4666. },
  4667. // 下载操作手册
  4668. download(path) {
  4669. window.open(path);
  4670. },
  4671. // 获取实时关注数据
  4672. getDeptEventCount() {
  4673. let that = this;
  4674. getDeptEventCount({
  4675. deptId: that.dept,
  4676. })
  4677. .then(function(response) {
  4678. that.interestList = response.data;
  4679. that.getEchartData();
  4680. console.log(response.data);
  4681. })
  4682. .catch(function(error) {
  4683. console.error(error);
  4684. });
  4685. },
  4686. dropLocation(latitude, longitude, leve) {
  4687. //摄像头定位
  4688. this.$refs.supermap.dropLocation(latitude, longitude, leve);
  4689. },
  4690. rightDeptName(value) {
  4691. //摄像头搜索
  4692. this.visuForestCloudCameraBOListSearch = [];
  4693. for (let i in this.visuForestCloudCameraBOList) {
  4694. if (
  4695. this.visuForestCloudCameraBOList[i].cameraName.indexOf(value) != -1
  4696. ) {
  4697. this.visuForestCloudCameraBOListSearch.push(
  4698. this.visuForestCloudCameraBOList[i]
  4699. );
  4700. }
  4701. }
  4702. },
  4703. leftDeptName(value) {
  4704. //摄像头搜索
  4705. this.visuForestCloudMonitorBOListSearch = [];
  4706. for (let i in this.visuForestCloudMonitorBOList) {
  4707. if (
  4708. this.visuForestCloudMonitorBOList[i].cameraName.indexOf(value) != -1
  4709. ) {
  4710. this.visuForestCloudMonitorBOListSearch.push(
  4711. this.visuForestCloudMonitorBOList[i]
  4712. );
  4713. }
  4714. }
  4715. },
  4716. // 实时关注
  4717. getEchartData() {
  4718. let totalList = [];
  4719. let titleList = [];
  4720. let total = 0;
  4721. for (let i = 0; i < this.interestList.length; i++) {
  4722. total += this.interestList[i].num;
  4723. totalList.push(this.interestList[i].num);
  4724. titleList.push(this.interestList[i].name);
  4725. }
  4726. this.interestTotal = total;
  4727. let myChart = this.$echarts.init(document.getElementById("conChart1"));
  4728. // let peoples = [5, 13, 9, 3, 7];
  4729. let maxNumber = Math.max.apply(null, totalList) + 10;
  4730. let maxData = [maxNumber, maxNumber, maxNumber, maxNumber, maxNumber, 1];
  4731. let option = {
  4732. grid: {
  4733. left: "5%",
  4734. right: "5%",
  4735. bottom: "5%",
  4736. top: "10%",
  4737. containLabel: true,
  4738. },
  4739. tooltip: {
  4740. trigger: "axis",
  4741. axisPointer: {
  4742. type: "none",
  4743. },
  4744. formatter: function(params) {
  4745. return (
  4746. params[0].name +
  4747. "<br/>" +
  4748. params[0].seriesName +
  4749. " : " +
  4750. params[0].value +
  4751. "<br/>"
  4752. );
  4753. },
  4754. },
  4755. xAxis: {
  4756. show: false,
  4757. type: "value",
  4758. },
  4759. yAxis: [{
  4760. type: "category",
  4761. inverse: true,
  4762. axisLabel: {
  4763. show: true,
  4764. textStyle: {
  4765. color: "#fff",
  4766. },
  4767. },
  4768. splitLine: {
  4769. show: false,
  4770. },
  4771. axisTick: {
  4772. show: false,
  4773. },
  4774. axisLine: {
  4775. show: false,
  4776. },
  4777. data: titleList,
  4778. },
  4779. {
  4780. type: "category",
  4781. inverse: true,
  4782. axisTick: "none",
  4783. axisLine: "none",
  4784. show: true,
  4785. axisLabel: {
  4786. textStyle: {
  4787. color: "#ffffff",
  4788. fontSize: "12",
  4789. },
  4790. formatter: "{value}",
  4791. },
  4792. data: totalList,
  4793. },
  4794. ],
  4795. series: [{
  4796. name: "事件",
  4797. type: "bar",
  4798. zlevel: 1,
  4799. itemStyle: {
  4800. normal: {
  4801. barBorderRadius: 30,
  4802. color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{
  4803. offset: 0,
  4804. color: "rgba(0,174,255,0.01)",
  4805. },
  4806. {
  4807. offset: 1,
  4808. color: "rgba(0,174,255,1)",
  4809. },
  4810. ]),
  4811. },
  4812. },
  4813. barWidth: 8,
  4814. data: totalList,
  4815. },
  4816. {
  4817. name: "背景",
  4818. type: "bar",
  4819. barWidth: 8,
  4820. barGap: "-100%",
  4821. data: maxData,
  4822. itemStyle: {
  4823. normal: {
  4824. color: "rgba(255, 255, 255, 0.1)",
  4825. barBorderRadius: 30,
  4826. },
  4827. },
  4828. },
  4829. ],
  4830. };
  4831. myChart.setOption(option);
  4832. },
  4833. // 四长统计
  4834. fourLeadersChart() {
  4835. let salvProName = [];
  4836. let salvProValue = [];
  4837. let max = 0;
  4838. for (let i = 0; i < this.fourLengthStatistics.list.length; i++) {
  4839. salvProValue.push(this.fourLengthStatistics.list[i].num);
  4840. salvProName.push(this.fourLengthStatistics.list[i].name);
  4841. if (this.fourLengthStatistics.list[i].num > max)
  4842. max = this.fourLengthStatistics.list[i].num;
  4843. }
  4844. let myChart = this.$echarts.init(document.getElementById("fourLeaders"));
  4845. let salvProMax = []; //背景按最大值
  4846. for (let i = 0; i < salvProValue.length; i++) {
  4847. salvProMax.push(max);
  4848. }
  4849. let option = {
  4850. backgroundColor: "",
  4851. grid: {
  4852. left: "5%",
  4853. right: "5%",
  4854. bottom: "0%",
  4855. top: "5%",
  4856. containLabel: true,
  4857. },
  4858. tooltip: {
  4859. trigger: "axis",
  4860. axisPointer: {
  4861. type: "none",
  4862. },
  4863. formatter: function(params) {
  4864. return params[0].name + " : " + params[0].value + "公里";
  4865. },
  4866. },
  4867. xAxis: {
  4868. show: false,
  4869. type: "value",
  4870. },
  4871. yAxis: [{
  4872. type: "category",
  4873. inverse: true,
  4874. axisLabel: {
  4875. show: true,
  4876. textStyle: {
  4877. color: "#ffffff",
  4878. fontSize: 11,
  4879. fontWeight: 500,
  4880. },
  4881. },
  4882. splitLine: {
  4883. show: false,
  4884. },
  4885. axisTick: {
  4886. show: false,
  4887. },
  4888. axisLine: {
  4889. show: false,
  4890. },
  4891. data: salvProName,
  4892. },
  4893. {
  4894. type: "category",
  4895. inverse: true,
  4896. axisTick: "none",
  4897. axisLine: "none",
  4898. show: true,
  4899. axisLabel: {
  4900. textStyle: {
  4901. color: "#fff",
  4902. fontSize: "11",
  4903. },
  4904. formatter: function(value) {
  4905. return ((value * 10) / 10).toLocaleString() + "公里";
  4906. },
  4907. },
  4908. data: salvProValue,
  4909. },
  4910. ],
  4911. series: [{
  4912. name: "值",
  4913. type: "bar",
  4914. zlevel: 1,
  4915. itemStyle: {
  4916. normal: {
  4917. // barBorderRadius: 10,
  4918. color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{
  4919. offset: 0,
  4920. color: "rgb(7,70,114,1)",
  4921. },
  4922. {
  4923. offset: 1,
  4924. color: "rgb(0,225,252,1)",
  4925. },
  4926. ]),
  4927. },
  4928. },
  4929. barWidth: 10,
  4930. data: salvProValue,
  4931. },
  4932. // {
  4933. // name: '背景',
  4934. // type: 'bar',
  4935. // barWidth: 15,
  4936. // barGap: '-100%',
  4937. // data: salvProMax,
  4938. // itemStyle: {
  4939. // normal: {
  4940. // color: 'rgba(24,31,68,1)',
  4941. // barBorderRadius: 30,
  4942. // }
  4943. // },
  4944. // },
  4945. ],
  4946. };
  4947. myChart.setOption(option);
  4948. },
  4949. // 筛选节点
  4950. filterNode(value, data) {
  4951. if (!value) return true;
  4952. return data.label.indexOf(value) !== -1;
  4953. },
  4954. // 事件统计
  4955. getEchartsj2Data() {
  4956. let myChart = this.$echarts.init(document.getElementById("conChart3"));
  4957. let bgColor = "";
  4958. let title = "总量";
  4959. let color = ["#00fdff", "#40fcd5", "#70c5e2", "#51b5ff", "#0e7ce2"];
  4960. let echartData = this.eventStatistics.eventList;
  4961. let formatNumber = function(num) {
  4962. let reg = /(?=(\B)(\d{3})+$)/g;
  4963. return num.toString().replace(reg, ",");
  4964. };
  4965. let total = echartData.reduce((a, b) => {
  4966. return a + b.value * 1;
  4967. }, 0);
  4968. let option = {
  4969. color: color,
  4970. // tooltip: {
  4971. // trigger: 'item'
  4972. // },
  4973. title: [{
  4974. text: "{name|" + title + "}\n{val|" + formatNumber(total) + "}",
  4975. top: "center",
  4976. left: "center",
  4977. textStyle: {
  4978. rich: {
  4979. name: {
  4980. fontSize: 10,
  4981. fontWeight: "normal",
  4982. color: "#fff",
  4983. padding: [0, 0],
  4984. },
  4985. val: {
  4986. fontSize: 10,
  4987. fontWeight: "bold",
  4988. color: "#fff",
  4989. },
  4990. },
  4991. },
  4992. },
  4993. {
  4994. text: "",
  4995. top: 20,
  4996. left: 20,
  4997. textStyle: {
  4998. fontSize: 10,
  4999. color: "#fff",
  5000. },
  5001. },
  5002. ],
  5003. series: [{
  5004. type: "pie",
  5005. radius: ["45%", "60%"],
  5006. center: ["50%", "50%"],
  5007. data: echartData,
  5008. hoverAnimation: false,
  5009. itemStyle: {
  5010. normal: {
  5011. borderColor: bgColor,
  5012. borderWidth: 0,
  5013. shadowColor: "#1274ac",
  5014. },
  5015. emphasis: {
  5016. borderColor: bgColor,
  5017. borderWidth: 0,
  5018. shadowBlur: 8,
  5019. shadowColor: "#1274ac",
  5020. },
  5021. },
  5022. labelLine: {
  5023. normal: {
  5024. length: 20,
  5025. length2: 80,
  5026. show: "false",
  5027. lineStyle: {
  5028. color: "#021637",
  5029. show: "false",
  5030. },
  5031. },
  5032. },
  5033. label: {
  5034. normal: {
  5035. formatter: (params) => {
  5036. return (
  5037. "{icon|●}{name|" +
  5038. params.name +
  5039. "}{value|" +
  5040. formatNumber(params.value) +
  5041. "}"
  5042. );
  5043. },
  5044. padding: [0, -100, 8, -100],
  5045. rich: {
  5046. icon: {
  5047. fontSize: 10,
  5048. },
  5049. name: {
  5050. fontSize: 10,
  5051. padding: [0, 5, 0, 4],
  5052. color: "#fff",
  5053. },
  5054. value: {
  5055. fontSize: 10,
  5056. fontWeight: "bold",
  5057. color: "#fff",
  5058. },
  5059. },
  5060. },
  5061. },
  5062. }, ],
  5063. };
  5064. myChart.setOption(option);
  5065. },
  5066. // 重点工程
  5067. // 这里定义一个鼠标移入移出事件,鼠标悬停时停止自动轮播,鼠标移出则重新执行自动轮播
  5068. MouseFun(type) {
  5069. // 停止定时器 // 重新执行定时器
  5070. type == "移入" ? clearTimeout(this.start) : this.gogo();
  5071. },
  5072. // 此为自动轮播定时器
  5073. gogo() {
  5074. this.start = setInterval(() => {
  5075. this.NextFun();
  5076. }, 1500);
  5077. },
  5078. // 这里通过额外封装的节流函数触发 PrevFun() 和 NextFun(),以达到防止重复点击的效果
  5079. throttle(fun) {
  5080. if (this.flag) {
  5081. this.flag = false;
  5082. fun(); // 此为模板中传递进来的PrevFun()或NextFun()函数
  5083. setTimeout(() => {
  5084. this.flag = true;
  5085. }, 1200); // 节流间隔时间
  5086. }
  5087. },
  5088. // 上一张
  5089. PrevFun() {
  5090. if (this.leftVal == 0) {
  5091. // 判断显示的图片 是 第一张时执行
  5092. // this.imgList.length是指循环图片数组的图片个数
  5093. this.ition = 0; // 将过渡时间变成0,瞬间位移到最后一张图
  5094. this.imgShow = this.imgList.length - 1; // 将高亮小点改为最后一张图
  5095. this.leftVal = this.imgList.length * this.imgWidth; // 瞬间移动
  5096. setTimeout(() => {
  5097. // 通过延时障眼法,归原过渡时间,执行真正的“上一张”函数
  5098. this.ition = 0.8;
  5099. this.leftVal -= this.imgWidth;
  5100. }, this.ition * 1000);
  5101. } else {
  5102. // 判断显示的图片 不是 第一张时执行
  5103. this.ition = 0.8;
  5104. this.leftVal -= this.imgWidth;
  5105. this.imgShow--;
  5106. }
  5107. },
  5108. toHome() {
  5109. this.$refs.supermap.clearM();
  5110. this.$refs.supermap.clearMRadius();
  5111. this.$router.push("/newpage");
  5112. },
  5113. // 下一张
  5114. NextFun() {
  5115. if (this.leftVal == (this.imgList.length - 1) * this.imgWidth) {
  5116. // 判断显示的图片 是 最后一张时执行
  5117. this.ition = 0.8;
  5118. this.leftVal += this.imgWidth;
  5119. this.imgShow = 0;
  5120. setTimeout(() => {
  5121. this.ition = 0;
  5122. this.leftVal = 0;
  5123. }, this.ition * 1000);
  5124. } else {
  5125. // 判断显示的图片 不是 最后一张时执行
  5126. this.ition = 0.8;
  5127. this.leftVal += this.imgWidth;
  5128. this.imgShow++;
  5129. }
  5130. },
  5131. // 点击小圆点
  5132. instFun(index) {
  5133. this.ition = 0.8;
  5134. this.leftVal = index * this.imgWidth;
  5135. this.imgShow = index;
  5136. },
  5137. //重点区域
  5138. changes(key) {
  5139. this.num = key;
  5140. },
  5141. // 实时关注弹框
  5142. fn1() {
  5143. this.showModal = !this.showModal;
  5144. this.getAnalysisReport();
  5145. this.showModal7 = false;
  5146. this.showModal6 = false;
  5147. this.getLocation()
  5148. },
  5149. fn6() {
  5150. this.getKeyProjects1();
  5151. this.showModal6 = !this.showModal6;
  5152. this.showModal7 = false;
  5153. this.getLocation()
  5154. console.log(this.imgList);
  5155. },
  5156. out6() {
  5157. document.addEventListener("click", (e) => {
  5158. let lt6 = document.getElementById("leader-tkbg6");
  5159. let pagination1 = document.getElementById("pagination1");
  5160. let box6 = document.getElementById("box6");
  5161. if (lt6.contains(e.target) && box6.contains(e.target)) {
  5162. this.showModal6 = false;
  5163. }
  5164. });
  5165. },
  5166. out7() {
  5167. document.addEventListener("click", (e) => {
  5168. let lt7 = document.getElementById("leader-tkbg7");
  5169. let box7 = document.getElementById("box7");
  5170. if (lt7.contains(e.target) && box7.contains(e.target)) {
  5171. this.showModal7 = false;
  5172. }
  5173. });
  5174. },
  5175. fn7() {
  5176. this.getImportAreaList1();
  5177. this.showModal6 = false;
  5178. this.getLocation()
  5179. this.showModal7 = !this.showModal7;
  5180. },
  5181. out() {
  5182. this.showModal = false;
  5183. this.showModa2 = false;
  5184. this.showModa3 = false;
  5185. this.showModa4 = false;
  5186. },
  5187. out1() {
  5188. document.addEventListener("click", (e) => {
  5189. let lt = document.getElementById("leader-tkbg");
  5190. let box1 = document.getElementById("box1");
  5191. if (!lt.contains(e.target) && !box1.contains(e.target)) {
  5192. this.showModal = false;
  5193. }
  5194. });
  5195. },
  5196. // 四长统计弹框
  5197. fn2() {
  5198. this.fourLengthOverTree(1);
  5199. this.fourLengthOverviewOther();
  5200. this.showModa2 = !this.showModa2;
  5201. this.szActiveName = "lin"
  5202. this.showModal7 = false;
  5203. this.showModal6 = false;
  5204. this.getLocation()
  5205. },
  5206. out2() {
  5207. document.addEventListener("click", (e) => {
  5208. let lt2 = document.getElementById("leader-tkbg2");
  5209. let box2 = document.getElementById("box2");
  5210. if (!lt2.contains(e.target) && !box2.contains(e.target)) {
  5211. this.showModa2 = false;
  5212. }
  5213. });
  5214. },
  5215. // 事件统计弹框
  5216. fn3() {
  5217. this.showModa3 = !this.showModa3;
  5218. this.getEventStatisticsOther();
  5219. this.showModal7 = false;
  5220. this.showModal6 = false;
  5221. this.getLocation()
  5222. },
  5223. out3() {
  5224. document.addEventListener("click", (e) => {
  5225. let lt3 = document.getElementById("leader-tkbg3");
  5226. let box3 = document.getElementById("box3");
  5227. if (!lt3.contains(e.target) && !box3.contains(e.target)) {
  5228. this.showModa3 = false;
  5229. this.$refs.datePickRef.pickerVisible = false
  5230. }
  5231. });
  5232. },
  5233. // 一网通办弹框
  5234. fn4() {
  5235. this.getEchartstbData1();
  5236. this.getEchartstbData2();
  5237. this.showModa4 = !this.showModa4;
  5238. this.showModal7 = false;
  5239. this.showModal6 = false;
  5240. this.getLocation()
  5241. },
  5242. out4() {
  5243. document.addEventListener("click", (e) => {
  5244. let lt4 = document.getElementById("leader-tbbg4");
  5245. let box4 = document.getElementById("box4");
  5246. if (!lt4.contains(e.target) && !box4.contains(e.target)) {
  5247. this.showModa4 = false;
  5248. }
  5249. });
  5250. },
  5251. // 重点工程弹框
  5252. fn5(val, index) {
  5253. this.getLocation()
  5254. // this.showModal7 = false;
  5255. // this.showModal6 = false;
  5256. //电视墙开始
  5257. // this.$refs.TVWallNoRight.showTVWall();
  5258. // this.$refs.supermap.isEditableLayers = false
  5259. // this.$refs.bottomMenu.showChild = false
  5260. // this.$refs.bottomMenu.showBanChild = false
  5261. // this.$refs.bottomMenu.showChangChild = false
  5262. // //电视墙结束
  5263. // this.introductionToKeyProjects = "";
  5264. // this.introductionToKeyProjectsTitle = "";
  5265. // this.introductionToKeyProjectsImg = "";
  5266. // this.introductionToKeyProjects = val.introduction;
  5267. // this.introductionToKeyProjectsTitle = val.projectTarget;
  5268. // this.introductionToKeyProjectsImg = val.photoId;
  5269. // this.preview(val.cameraList.length > 0 ? val.cameraList[0] : {cameraFactory: 3});
  5270. if (index == 1) {
  5271. initByProject(val.projectId).then((res) => {
  5272. this.showModal7 = false;
  5273. this.showModal6 = false;
  5274. this.$refs.TVWall.showTVWall(res.data, {
  5275. longitude: val.longitude,
  5276. latitude: val.latitude
  5277. }, val, "tup");
  5278. });
  5279. } else if (index == 2) {
  5280. initByArea(val.id).then((res) => {
  5281. if (res.data != null && res.data.length == 1 && res.data[0].treeLabels.length > 1) {
  5282. this.showModal7 = false;
  5283. this.showModal6 = false;
  5284. this.$refs.TVWallNoRight.showTVWall(res.data, {
  5285. longitude: val.longitude,
  5286. latitude: val.latitude
  5287. });
  5288. }
  5289. });
  5290. }
  5291. },
  5292. out5() {
  5293. document.addEventListener("click", (e) => {
  5294. let lt5 = document.getElementById("leader-tbbg5");
  5295. let box5 = document.getElementById("box5");
  5296. if (!lt5.contains(e.target) && !box5.contains(e.target)) {
  5297. this.showModa5 = false;
  5298. }
  5299. });
  5300. },
  5301. // 起火原因统计
  5302. getEchartstkData1() {
  5303. let myChart = this.$echarts.init(document.getElementById("tkCharts1"));
  5304. let legendData = ["起火原因"]; //图例
  5305. let num = [];
  5306. let indicator = [];
  5307. for (let i = 0; i < this.statisticsCausesFire.length; i++) {
  5308. num.push(this.statisticsCausesFire[i].num);
  5309. indicator.push({
  5310. text: this.statisticsCausesFire[i].name,
  5311. max: this.statisticsCausesFire[i].max,
  5312. });
  5313. }
  5314. let dataArr = [{
  5315. value: num,
  5316. itemStyle: {
  5317. normal: {
  5318. lineStyle: {
  5319. color: "#55d7f2",
  5320. },
  5321. // shadowColor: '#4A99FF',
  5322. // shadowBlur: 10,
  5323. },
  5324. },
  5325. areaStyle: {
  5326. normal: {
  5327. // 单项区域填充样式
  5328. color: {
  5329. type: "linear",
  5330. x: 1, //右
  5331. y: 0, //下
  5332. x2: 1, //左
  5333. y2: 1, //上
  5334. colorStops: [{
  5335. offset: 0,
  5336. color: "#4A99FF",
  5337. },
  5338. {
  5339. offset: 1,
  5340. color: "rgba(0,0,0,0)",
  5341. },
  5342. ],
  5343. globalCoord: false,
  5344. },
  5345. opacity: 1, // 区域透明度
  5346. },
  5347. },
  5348. }, ];
  5349. let colorArr = ["#55d7f2", "#4BFFFC"]; //颜色
  5350. let option = {
  5351. color: colorArr,
  5352. legend: {
  5353. orient: "vertical",
  5354. // icon: 'circle', //图例形状
  5355. data: legendData,
  5356. top: 20,
  5357. left: 20,
  5358. itemWidth: 8, // 图例标记的图形宽度。[ default: 25 ]
  5359. itemHeight: 8, // 图例标记的图形高度。[ default: 14 ]
  5360. itemGap: 22, // 图例每项之间的间隔。[ default: 10 ]横向布局时为水平间隔,纵向布局时为纵向间隔。
  5361. textStyle: {
  5362. fontSize: 10,
  5363. fontWeight: "bold",
  5364. color: "#00E4FF",
  5365. },
  5366. },
  5367. radar: {
  5368. // shape: 'circle',
  5369. name: {
  5370. textStyle: {
  5371. color: "#fff",
  5372. fontSize: 10,
  5373. },
  5374. },
  5375. indicator: indicator,
  5376. splitArea: {
  5377. // 坐标轴在 grid 区域中的分隔区域,默认不显示。
  5378. show: true,
  5379. areaStyle: {
  5380. // 分隔区域的样式设置。
  5381. color: ["rgba(255,255,255,0)", "rgba(255,255,255,0)"], // 分隔区域颜色。分隔区域会按数组中颜色的顺序依次循环设置颜色。默认是一个深浅的间隔色。
  5382. },
  5383. },
  5384. axisLine: {
  5385. //指向外圈文本的分隔线样式
  5386. lineStyle: {
  5387. color: "#153269",
  5388. },
  5389. },
  5390. splitLine: {
  5391. lineStyle: {
  5392. color: "#2b75d2", // 分隔线颜色
  5393. width: 2, // 分隔线线宽
  5394. },
  5395. },
  5396. },
  5397. series: [{
  5398. type: "radar",
  5399. symbolSize: 8,
  5400. symbol: "circle",
  5401. data: dataArr,
  5402. }, ],
  5403. };
  5404. myChart.setOption(option);
  5405. },
  5406. // 当前防火季火灾损失统计
  5407. getEchartstkData2() {
  5408. let that = this;
  5409. let myChart = this.$echarts.init(document.getElementById("tkCharts2"));
  5410. let xData = [];
  5411. let loss = [];
  5412. let blazes = [];
  5413. let lossCounts = 0;
  5414. let blazesCounts = 0;
  5415. for (let i = 0; i < this.fireLossStatistics.length; i++) {
  5416. xData.push(this.fireLossStatistics[i].month);
  5417. lossCounts += this.fireLossStatistics[i].loss;
  5418. blazesCounts += this.fireLossStatistics[i].blazes;
  5419. loss.push(this.fireLossStatistics[i].loss);
  5420. blazes.push(this.fireLossStatistics[i].blazes);
  5421. }
  5422. that.lossCount = lossCounts
  5423. that.blazesCount = blazesCounts
  5424. let option = {
  5425. tooltip: {
  5426. trigger: "axis",
  5427. axisPointer: {
  5428. lineStyle: {
  5429. color: {
  5430. type: "linear",
  5431. x: 0,
  5432. y: 0,
  5433. x2: 0,
  5434. y2: 1,
  5435. colorStops: [{
  5436. offset: 0,
  5437. color: "rgba(0, 255, 233,0)",
  5438. },
  5439. {
  5440. offset: 0.5,
  5441. color: "rgba(255, 255, 255,1)",
  5442. },
  5443. {
  5444. offset: 1,
  5445. color: "rgba(0, 255, 233,0)",
  5446. },
  5447. ],
  5448. global: false,
  5449. },
  5450. },
  5451. },
  5452. },
  5453. grid: {
  5454. top: "15%",
  5455. left: "10%",
  5456. right: "5%",
  5457. bottom: "15%",
  5458. },
  5459. legend: {
  5460. data: ["火灾损失总价值", "扑火费用总支出"],
  5461. textStyle: {
  5462. color: "#fff",
  5463. align: "center",
  5464. fontSize: 16,
  5465. show: false,
  5466. },
  5467. x: "center",
  5468. },
  5469. xAxis: [{
  5470. type: "category",
  5471. // 轴线
  5472. axisLine: {
  5473. show: true,
  5474. lineStyle: {
  5475. color: "#85B1B4",
  5476. },
  5477. },
  5478. // 轴刻度线
  5479. axisTick: {
  5480. show: false,
  5481. },
  5482. // 坐标轴名称
  5483. axisLabel: {
  5484. color: "#fff",
  5485. margin: 6,
  5486. },
  5487. // 轴分隔线
  5488. splitLine: {
  5489. show: false,
  5490. },
  5491. // 轴两侧留白
  5492. boundaryGap: ["5%", "5%"],
  5493. data: xData,
  5494. }, ],
  5495. yAxis: [{
  5496. type: "value",
  5497. min: 0,
  5498. // max: 140,
  5499. splitNumber: 4,
  5500. splitLine: {
  5501. show: false,
  5502. },
  5503. axisLine: {
  5504. show: true,
  5505. lineStyle: {
  5506. color: "#85B1B4",
  5507. },
  5508. },
  5509. axisLabel: {
  5510. show: true,
  5511. margin: 10,
  5512. textStyle: {
  5513. color: "#fff",
  5514. },
  5515. },
  5516. axisTick: {
  5517. show: false,
  5518. },
  5519. }, ],
  5520. series: [{
  5521. name: "火灾损失总价值",
  5522. type: "line",
  5523. showAllSymbol: true,
  5524. symbol: "circle",
  5525. symbolSize: 4,
  5526. lineStyle: {
  5527. normal: {
  5528. color: "#FF8736",
  5529. },
  5530. },
  5531. label: {
  5532. show: false,
  5533. },
  5534. itemStyle: {
  5535. color: "#FF8736",
  5536. borderColor: "#FF8736",
  5537. borderWidth: 2,
  5538. },
  5539. data: loss,
  5540. },
  5541. {
  5542. name: "扑火费用总支出",
  5543. type: "line",
  5544. showAllSymbol: true,
  5545. symbol: "circle",
  5546. symbolSize: 4,
  5547. lineStyle: {
  5548. normal: {
  5549. color: "#13EFB7",
  5550. },
  5551. },
  5552. label: {
  5553. show: false,
  5554. },
  5555. itemStyle: {
  5556. color: "#13EFB7",
  5557. borderColor: "#13EFB7",
  5558. borderWidth: 2,
  5559. },
  5560. areaStyle: {
  5561. normal: {
  5562. color: new echarts.graphic.LinearGradient(
  5563. 0,
  5564. 0,
  5565. 0,
  5566. 1,
  5567. [{
  5568. offset: 0,
  5569. color: "rgba(81,150,164,0.3)",
  5570. },
  5571. {
  5572. offset: 1,
  5573. color: "rgba(81,150,164,0)",
  5574. },
  5575. ],
  5576. false
  5577. ),
  5578. },
  5579. },
  5580. data: blazes,
  5581. },
  5582. ],
  5583. };
  5584. myChart.setOption(option);
  5585. },
  5586. // 起火场景统计
  5587. getEchartstkData3() {
  5588. let myChart = this.$echarts.init(document.getElementById("tkCharts3"));
  5589. let num = [];
  5590. let indicator = [];
  5591. for (let i = 0; i < this.statisticsFireSites.length; i++) {
  5592. num.push(this.statisticsFireSites[i].num);
  5593. indicator.push({
  5594. text: this.statisticsFireSites[i].name,
  5595. max: this.statisticsFireSites[i].max,
  5596. });
  5597. }
  5598. let option = {
  5599. grid: {
  5600. left: "3%",
  5601. right: "4%",
  5602. bottom: "3%",
  5603. top: "15%",
  5604. containLabel: true,
  5605. },
  5606. tooltip: {},
  5607. dataset: {},
  5608. radar: {
  5609. // shape: 'circle',
  5610. name: {
  5611. textStyle: {
  5612. color: "#fff",
  5613. fontSize: 10,
  5614. },
  5615. },
  5616. axisLine: {
  5617. lineStyle: {
  5618. color: "rgba(255,255,255,.2)",
  5619. },
  5620. },
  5621. splitLine: {
  5622. lineStyle: {
  5623. color: "rgba(255,255,255,.2)",
  5624. },
  5625. },
  5626. splitArea: {
  5627. areaStyle: {
  5628. color: ["rgba(1, 15, 49, 0.86)"],
  5629. },
  5630. },
  5631. indicator: indicator,
  5632. },
  5633. series: [{
  5634. type: "radar",
  5635. symbol: "none",
  5636. data: [{
  5637. value: num,
  5638. name: "起火场景",
  5639. }, ],
  5640. itemStyle: {
  5641. color: "",
  5642. show: false,
  5643. },
  5644. lineStyle: {
  5645. color: "#297fac",
  5646. },
  5647. areaStyle: {
  5648. color: "rgba(68, 255, 253, 0.3)",
  5649. },
  5650. }, ],
  5651. };
  5652. myChart.setOption(option);
  5653. },
  5654. // 防火季火灾发生情况
  5655. getEchartstkData4() {
  5656. let myChart = this.$echarts.init(document.getElementById("tkCharts4"));
  5657. let num = [];
  5658. let name = [];
  5659. for (let i = 0; i < this.fireSituation.length; i++) {
  5660. num.push(this.fireSituation[i].num);
  5661. name.push(this.fireSituation[i].name);
  5662. }
  5663. // fireSituation
  5664. let option = {
  5665. title: {
  5666. text: "",
  5667. x: "center",
  5668. y: "4%",
  5669. textStyle: {
  5670. color: "#fff",
  5671. fontSize: "10",
  5672. },
  5673. subtextStyle: {
  5674. color: "#90979c",
  5675. fontSize: "10",
  5676. },
  5677. },
  5678. tooltip: {
  5679. trigger: "axis",
  5680. axisPointer: {
  5681. type: "shadow",
  5682. },
  5683. },
  5684. grid: {
  5685. top: "20%",
  5686. right: "3%",
  5687. left: "15%",
  5688. bottom: "12%",
  5689. },
  5690. xAxis: [{
  5691. type: "category",
  5692. data: name,
  5693. axisLine: {
  5694. lineStyle: {
  5695. color: "rgba(255,255,255,0.12)",
  5696. },
  5697. },
  5698. axisLabel: {
  5699. margin: 10,
  5700. color: "#e2e9ff",
  5701. textStyle: {
  5702. fontSize: 10,
  5703. },
  5704. },
  5705. }, ],
  5706. yAxis: [{
  5707. // 设置单位
  5708. name: "",
  5709. axisLabel: {
  5710. formatter: "{value}",
  5711. color: "#e2e9ff",
  5712. },
  5713. axisLine: {
  5714. show: true,
  5715. lineStyle: {
  5716. color: "rgba(255,255,255,1)",
  5717. },
  5718. },
  5719. splitLine: {
  5720. lineStyle: {
  5721. color: "rgba(255,255,255,0.12)",
  5722. },
  5723. },
  5724. }, ],
  5725. series: [{
  5726. type: "bar",
  5727. data: num,
  5728. barWidth: "20px",
  5729. itemStyle: {
  5730. normal: {
  5731. color: new echarts.graphic.LinearGradient(
  5732. 0,
  5733. 0,
  5734. 0,
  5735. 1,
  5736. [{
  5737. offset: 0,
  5738. color: "rgba(0,244,255,1)", // 0% 处的颜色
  5739. },
  5740. {
  5741. offset: 1,
  5742. color: "rgba(0,77,167,1)", // 100% 处的颜色
  5743. },
  5744. ],
  5745. false
  5746. ),
  5747. barBorderRadius: [30, 30, 0, 0],
  5748. shadowColor: "rgba(0,160,221,1)",
  5749. shadowBlur: 4,
  5750. },
  5751. },
  5752. label: {
  5753. normal: {
  5754. show: true,
  5755. lineHeight: 20,
  5756. width: 80,
  5757. height: 20,
  5758. backgroundColor: "rgba(0,160,221,0.1)",
  5759. borderRadius: 200,
  5760. position: ["-8", "-46"],
  5761. distance: 1,
  5762. formatter: [" {d|●}", " {a|{c}} \n", " {b|}"].join(
  5763. ","
  5764. ),
  5765. rich: {
  5766. d: {
  5767. color: "#3CDDCF",
  5768. },
  5769. a: {
  5770. color: "#fff",
  5771. align: "center",
  5772. },
  5773. b: {
  5774. width: 1,
  5775. height: 30,
  5776. borderWidth: 1,
  5777. borderColor: "#234e6c",
  5778. align: "left",
  5779. },
  5780. },
  5781. },
  5782. },
  5783. }, ],
  5784. };
  5785. myChart.setOption(option);
  5786. },
  5787. // 事件统计1
  5788. getEchartssjData1() {
  5789. let myChart = this.$echarts.init(document.getElementById("sjCharts1"));
  5790. const man = [];
  5791. const woman = [];
  5792. const indicator = [];
  5793. var bigvalue = 0;
  5794. for (var i in this.eventDetails1) {
  5795. if (this.eventDetails1[i].processed > bigvalue) {
  5796. bigvalue = this.eventDetails1[i].processed;
  5797. }
  5798. if (this.eventDetails1[i].inprocess > bigvalue) {
  5799. bigvalue = this.eventDetails1[i].inprocess;
  5800. }
  5801. }
  5802. for (let i = 0; i < this.eventDetails1.length; i++) {
  5803. man.push(this.eventDetails1[i].processed);
  5804. woman.push(this.eventDetails1[i].inprocess);
  5805. indicator.push({
  5806. name: this.eventDetails1[i].name,
  5807. max: bigvalue,
  5808. });
  5809. }
  5810. let option = {
  5811. tooltip: {
  5812. trigger: "item",
  5813. },
  5814. color: ["#068AC3", "#B2782C"],
  5815. legend: {
  5816. icon: "roundRect",
  5817. // left: '47%',
  5818. top: "90%",
  5819. show: true,
  5820. padding: [3, 5],
  5821. // right: '50',
  5822. y: "1",
  5823. center: 0,
  5824. itemWidth: 20,
  5825. itemHeight: 10,
  5826. itemGap: 26,
  5827. z: 3,
  5828. // orient: 'horizontal',
  5829. data: ["已处理", "待处理"],
  5830. textStyle: {
  5831. fontSize: 10,
  5832. color: "#F1F7FF",
  5833. },
  5834. },
  5835. radar: {
  5836. center: ["50%", "45%"], // 外圆的位置
  5837. radius: "55%",
  5838. name: {
  5839. textStyle: {
  5840. color: "#fff",
  5841. fontSize: 15,
  5842. fontWeight: 400,
  5843. fontFamily: "PingFangSC-Regular,PingFang SC",
  5844. fontStyle: "italic",
  5845. },
  5846. },
  5847. // TODO:
  5848. indicator: indicator,
  5849. splitArea: {
  5850. // 坐标轴在 grid 区域中的分隔区域,默认不显示。
  5851. show: true,
  5852. areaStyle: {
  5853. // 分隔区域的样式设置。
  5854. color: ["#00224A", "#00224A", "#00224A", "#00224A",
  5855. "#00224A"
  5856. ], // 画布颜色 // 分隔区域颜色。分隔区域会按数组中颜色的顺序依次循环设置颜色。默认是一个深浅的间隔色。
  5857. },
  5858. },
  5859. axisLine: {
  5860. // 指向外圈文本的分隔线样式
  5861. lineStyle: {
  5862. color: "rgba(255,255,255,0.2)",
  5863. },
  5864. },
  5865. splitLine: {
  5866. lineStyle: {
  5867. type: "solid",
  5868. color: ["#1781BA", "#1781BA"], // 分隔线颜色
  5869. width: 1, // 分隔线线宽
  5870. },
  5871. },
  5872. },
  5873. series: [{
  5874. type: "radar",
  5875. symbolSize: 5,
  5876. data: [{
  5877. // TODO:
  5878. value: man,
  5879. name: "已处理",
  5880. areaStyle: {
  5881. normal: {
  5882. color: {
  5883. type: "radial",
  5884. x: 0.5,
  5885. y: 0.5,
  5886. r: 0.5,
  5887. colorStops: [{
  5888. offset: 0,
  5889. color: "rgba(46,203,255, 0.14)", // 0% 处的颜色
  5890. },
  5891. {
  5892. offset: 0.15,
  5893. color: "rgba(46,203,255, 0.14)", // 100% 处的颜色
  5894. },
  5895. {
  5896. offset: 0.75,
  5897. color: "#057FB3", // 100% 处的颜色
  5898. },
  5899. {
  5900. offset: 1,
  5901. color: "#078DC6", // 100% 处的颜色
  5902. },
  5903. ],
  5904. global: false, // 缺省为 false
  5905. },
  5906. },
  5907. },
  5908. itemStyle: {
  5909. // 折线拐点标志的样式。
  5910. normal: {
  5911. // 普通状态时的样式
  5912. lineStyle: {
  5913. width: 1,
  5914. },
  5915. opacity: 0.3,
  5916. },
  5917. emphasis: {
  5918. // 高亮时的样式
  5919. lineStyle: {
  5920. width: 5,
  5921. },
  5922. opacity: 0,
  5923. },
  5924. },
  5925. },
  5926. {
  5927. // TODO:
  5928. value: woman,
  5929. name: "待处理",
  5930. areaStyle: {
  5931. normal: {
  5932. color: {
  5933. type: "radial",
  5934. x: 0.5,
  5935. y: 0.5,
  5936. r: 0.5,
  5937. colorStops: [{
  5938. offset: 0,
  5939. color: "rgba(255, 127,0, 0.14)", // 0% 处的颜色
  5940. },
  5941. {
  5942. offset: 0.15,
  5943. color: "rgba(255, 127,0, 0.14)", // 100% 处的颜色
  5944. },
  5945. {
  5946. offset: 0.75,
  5947. color: "rgba(2255, 127,0, 0.4)", // 100% 处的颜色
  5948. },
  5949. {
  5950. offset: 1,
  5951. color: "rgba(255, 127,0, 0.5)", // 100% 处的颜色
  5952. },
  5953. ],
  5954. global: false, // 缺省为 false
  5955. },
  5956. },
  5957. },
  5958. itemStyle: {
  5959. // 折线拐点标志的样式。
  5960. normal: {
  5961. // 普通状态时的样式
  5962. lineStyle: {
  5963. width: 1,
  5964. },
  5965. opacity: 0.3,
  5966. },
  5967. emphasis: {
  5968. // 高亮时的样式
  5969. lineStyle: {
  5970. width: 5,
  5971. },
  5972. opacity: 0,
  5973. },
  5974. },
  5975. },
  5976. ],
  5977. }, ],
  5978. };
  5979. myChart.setOption(option);
  5980. },
  5981. // 事件统计2
  5982. getEchartssjData2() {
  5983. let myChart = this.$echarts.init(document.getElementById("sjCharts2"));
  5984. let num = [];
  5985. let time = [];
  5986. let eventTrend =
  5987. "事件趋势 (" + this.eventDetails2[0].name.split("-")[0] + "年)"; // 事件趋势(2023年)
  5988. for (let i = 0; i < this.eventDetails2.length; i++) {
  5989. num.push(this.eventDetails2[i].num);
  5990. time.push(this.eventDetails2[i].name.split("-")[1] + "月");
  5991. // time.push(this.eventDetails2[i].name);
  5992. console.log("this.eventDetails2[i].name=", this.eventDetails2[i].name);
  5993. }
  5994. let option = {
  5995. title: {
  5996. // text: '近6月的平台趋势分析',
  5997. textStyle: {
  5998. align: "center",
  5999. color: "#fff",
  6000. fontSize: 10,
  6001. },
  6002. top: "0%",
  6003. left: "center",
  6004. },
  6005. tooltip: {
  6006. trigger: "axis",
  6007. },
  6008. legend: {
  6009. data: [eventTrend], // 事件趋势 标题
  6010. top: "-1%",
  6011. left: "5%",
  6012. // bottom:'0%',
  6013. textStyle: {
  6014. align: "center",
  6015. color: "#fff",
  6016. fontSize: 10,
  6017. },
  6018. },
  6019. grid: {
  6020. left: "3%",
  6021. right: "2%",
  6022. top: "3%",
  6023. bottom: "0%",
  6024. containLabel: true,
  6025. },
  6026. // toolbox: {
  6027. // feature: {
  6028. // saveAsImage: {}
  6029. // }
  6030. // },
  6031. xAxis: {
  6032. type: "category",
  6033. boundaryGap: false, //坐标轴两边留白
  6034. data: time,
  6035. axisLabel: {
  6036. //坐标轴刻度标签的相关设置。
  6037. interval: 0, //设置为 1,表示『隔一个标签显示一个标签』
  6038. // margin:15,
  6039. textStyle: {
  6040. color: "#fff",
  6041. fontStyle: "normal",
  6042. fontFamily: "微软雅黑",
  6043. fontSize: 10,
  6044. },
  6045. formatter: function(params) {
  6046. var newParamsName = "";
  6047. var paramsNameNumber = params.length;
  6048. var provideNumber = 4; //一行显示几个字
  6049. var rowNumber = Math.ceil(paramsNameNumber / provideNumber);
  6050. if (paramsNameNumber > provideNumber) {
  6051. for (var p = 0; p < rowNumber; p++) {
  6052. var tempStr = "";
  6053. var start = p * provideNumber;
  6054. var end = start + provideNumber;
  6055. if (p == rowNumber - 1) {
  6056. tempStr = params.substring(start, paramsNameNumber);
  6057. } else {
  6058. tempStr = params.substring(start, end) + "\n";
  6059. }
  6060. newParamsName += tempStr;
  6061. }
  6062. } else {
  6063. newParamsName = params;
  6064. }
  6065. return newParamsName;
  6066. },
  6067. //rotate:50,
  6068. },
  6069. axisTick: {
  6070. //坐标轴刻度相关设置。
  6071. show: false,
  6072. },
  6073. axisLine: {
  6074. //坐标轴轴线相关设置
  6075. lineStyle: {
  6076. color: "#CAFFFD",
  6077. opacity: 0.3,
  6078. },
  6079. },
  6080. splitLine: {
  6081. //坐标轴在 grid 区域中的分隔线。
  6082. show: false,
  6083. lineStyle: {
  6084. color: "#E5E9ED",
  6085. // opacity:0.1
  6086. },
  6087. },
  6088. },
  6089. yAxis: [{
  6090. type: "value",
  6091. min: 0,
  6092. splitNumber: 5,
  6093. axisLabel: {
  6094. textStyle: {
  6095. color: "#EEEEEE",
  6096. fontStyle: "normal",
  6097. fontFamily: "微软雅黑",
  6098. fontSize: 10,
  6099. },
  6100. },
  6101. axisLine: {
  6102. show: true,
  6103. lineStyle: {
  6104. color: "#CAFFFD",
  6105. opacity: 0.3,
  6106. },
  6107. },
  6108. axisTick: {
  6109. show: false,
  6110. },
  6111. splitLine: {
  6112. show: true,
  6113. lineStyle: {
  6114. type: "dashed",
  6115. color: "rgba(202, 255, 253, 0.2)",
  6116. // opacity:0.1
  6117. },
  6118. },
  6119. }, ],
  6120. series: [{
  6121. name: eventTrend, // 事件趋势 图表
  6122. type: "line",
  6123. smooth: true,
  6124. symbol: "circle",
  6125. symbolSize: 10,
  6126. itemStyle: {
  6127. normal: {
  6128. color: "rgba(43, 185, 251, 1)",
  6129. shadowColor: "#2bb9fb",
  6130. shadowBlur: 20,
  6131. borderColor: "#2bb9fb",
  6132. borderWidth: 2,
  6133. lineStyle: {
  6134. color: "#2bb9fb",
  6135. width: 1,
  6136. },
  6137. areaStyle: {
  6138. color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
  6139. offset: 0,
  6140. color: "rgba(0,0,0,0)",
  6141. },
  6142. {
  6143. offset: 1,
  6144. color: "rgba(43, 185, 251, 1)",
  6145. },
  6146. ]),
  6147. },
  6148. },
  6149. },
  6150. data: num,
  6151. }, ],
  6152. };
  6153. myChart.setOption(option);
  6154. },
  6155. // 一网通办1
  6156. getEchartstbData1() {
  6157. let myChart = this.$echarts.init(document.getElementById("tbCharts1"));
  6158. let charts = {
  6159. // 按顺序排列从大到小
  6160. cityList: [
  6161. this.networkprocessingData.top1DeptName,
  6162. this.networkprocessingData.top2DeptName,
  6163. this.networkprocessingData.top3DeptName,
  6164. this.networkprocessingData.top4DeptName,
  6165. this.networkprocessingData.top5DeptName,
  6166. ],
  6167. cityData: [
  6168. this.networkprocessingData.top1CompletionNumber,
  6169. this.networkprocessingData.top2CompletionNumber,
  6170. this.networkprocessingData.top3CompletionNumber,
  6171. this.networkprocessingData.top4CompletionNumber,
  6172. this.networkprocessingData.top5CompletionNumber,
  6173. ],
  6174. };
  6175. let top10CityList = charts.cityList;
  6176. let top10CityData = charts.cityData;
  6177. let color = ["#ff9500", "#02d8f9", "#027fff"];
  6178. let color1 = ["#ffb349", "#70e9fc", "#4aa4ff"];
  6179. let lineY = [];
  6180. let lineT = [];
  6181. for (var i = 0; i < charts.cityList.length; i++) {
  6182. let x = i;
  6183. if (x > 1) {
  6184. x = 2;
  6185. }
  6186. let data = {
  6187. name: charts.cityitem,
  6188. color: color[x],
  6189. value: top10CityData[i],
  6190. barGap: "-100%",
  6191. itemStyle: {
  6192. normal: {
  6193. show: true,
  6194. color: new echarts.graphic.LinearGradient(
  6195. 0,
  6196. 0,
  6197. 1,
  6198. 0,
  6199. [{
  6200. offset: 0,
  6201. color: color[x],
  6202. },
  6203. {
  6204. offset: 1,
  6205. color: color1[x],
  6206. },
  6207. ],
  6208. false
  6209. ),
  6210. barBorderRadius: 5,
  6211. },
  6212. emphasis: {
  6213. shadowBlur: 5,
  6214. shadowColor: "rgba(0, 0, 0, 0.1)",
  6215. },
  6216. },
  6217. };
  6218. let data1 = {
  6219. value: top10CityData[0],
  6220. itemStyle: {
  6221. color: "#001235",
  6222. barBorderRadius: 5,
  6223. },
  6224. };
  6225. lineY.push(data);
  6226. lineT.push(data1);
  6227. }
  6228. let backTop = [];
  6229. for (var i = top10CityData.length - 1; i >= 0; i--) {
  6230. backTop.push(top10CityData[i]);
  6231. }
  6232. let option = {
  6233. title: {
  6234. show: false,
  6235. },
  6236. tooltip: {
  6237. trigger: "item",
  6238. formatter: function(p) {
  6239. if (p.seriesName === "total") {
  6240. return "";
  6241. }
  6242. return p.name + "<br/>" + p.value;
  6243. },
  6244. textStyle: {
  6245. fontSize: 10,
  6246. color: "#fff",
  6247. },
  6248. },
  6249. grid: {
  6250. borderWidth: 0,
  6251. top: "8%",
  6252. left: "5%",
  6253. right: "15%",
  6254. bottom: "6%",
  6255. },
  6256. color: color,
  6257. yAxis: [{
  6258. type: "category",
  6259. inverse: true,
  6260. axisTick: {
  6261. show: false,
  6262. },
  6263. axisLine: {
  6264. show: false,
  6265. },
  6266. axisLabel: {
  6267. show: false,
  6268. inside: false,
  6269. },
  6270. data: top10CityList,
  6271. },
  6272. {
  6273. type: "category",
  6274. axisLine: {
  6275. show: false,
  6276. },
  6277. axisTick: {
  6278. show: false,
  6279. },
  6280. axisLabel: {
  6281. interval: 0,
  6282. color: "#e3c478",
  6283. align: "right",
  6284. margin: 40,
  6285. fontSize: 10,
  6286. formatter: function(val) {
  6287. return val;
  6288. },
  6289. },
  6290. splitArea: {
  6291. show: false,
  6292. },
  6293. splitLine: {
  6294. show: false,
  6295. },
  6296. data: backTop,
  6297. },
  6298. ],
  6299. xAxis: {
  6300. type: "value",
  6301. axisTick: {
  6302. show: false,
  6303. },
  6304. axisLine: {
  6305. show: false,
  6306. },
  6307. splitLine: {
  6308. show: false,
  6309. },
  6310. axisLabel: {
  6311. show: false,
  6312. },
  6313. },
  6314. series: [{
  6315. name: "total",
  6316. type: "bar",
  6317. zlevel: 1,
  6318. barGap: "-100%",
  6319. barWidth: "6px",
  6320. data: lineT,
  6321. legendHoverLink: false,
  6322. },
  6323. {
  6324. name: "bar",
  6325. type: "bar",
  6326. zlevel: 2,
  6327. barWidth: "6px",
  6328. data: lineY,
  6329. label: {
  6330. normal: {
  6331. color: "#b3ccf8",
  6332. show: true,
  6333. position: [0, "-12px"],
  6334. textStyle: {
  6335. fontSize: 10,
  6336. },
  6337. formatter: function(a) {
  6338. let num = "";
  6339. let str = "";
  6340. num = "NO." + (a.dataIndex + 1);
  6341. if (a.dataIndex === 0) {
  6342. str = "{color1|" + num + "} {color4|" + a.name + "}";
  6343. } else if (a.dataIndex === 1) {
  6344. str = "{color2|" + num + "} {color4|" + a.name + "}";
  6345. } else {
  6346. str = "{color3|" + num + "} {color4|" + a.name + "}";
  6347. }
  6348. return str;
  6349. },
  6350. rich: {
  6351. color1: {
  6352. color: "#ff9500",
  6353. fontWeight: 700,
  6354. fontSize: 10,
  6355. },
  6356. color2: {
  6357. color: "#02d8f9",
  6358. fontWeight: 700,
  6359. fontSize: 10,
  6360. },
  6361. color3: {
  6362. color: "#027fff",
  6363. fontWeight: 700,
  6364. fontSize: 10,
  6365. },
  6366. color4: {
  6367. color: "#e5eaff",
  6368. fontSize: 10,
  6369. },
  6370. },
  6371. },
  6372. },
  6373. },
  6374. ],
  6375. };
  6376. myChart.setOption(option);
  6377. },
  6378. // 一网通办2
  6379. getEchartstbData2() {
  6380. let myChart = this.$echarts.init(document.getElementById("tbCharts2"));
  6381. let option = {
  6382. tooltip: {
  6383. show: true,
  6384. trigger: "axis",
  6385. axisPointer: {
  6386. // 坐标轴指示器,坐标轴触发有效
  6387. type: "line", // 默认为直线,可选为:'line' | 'shadow'
  6388. //修改指识线的颜色
  6389. lineStyle: {
  6390. color: "transparent",
  6391. },
  6392. },
  6393. formatter: function(params) {
  6394. console.log(params);
  6395. },
  6396. },
  6397. grid: {
  6398. top: 40,
  6399. bottom: 40,
  6400. left: 30,
  6401. right: 20,
  6402. },
  6403. xAxis: [{
  6404. type: "category",
  6405. axisTick: {
  6406. show: false,
  6407. alignWithLabel: true, //true 的时候有效,可以保证刻度线和标签对齐
  6408. },
  6409. axisLine: {
  6410. lineStyle: {
  6411. color: "#fff",
  6412. },
  6413. },
  6414. data: ["满意", "基本满意", "不满意"],
  6415. }, ],
  6416. yAxis: [{
  6417. type: "value",
  6418. splitLine: {
  6419. show: true,
  6420. lineStyle: {
  6421. color: "rgba(136, 159, 204, .2)",
  6422. },
  6423. },
  6424. axisLine: {
  6425. show: false,
  6426. lineStyle: {
  6427. color: "#374158",
  6428. },
  6429. },
  6430. axisTick: {
  6431. show: false,
  6432. },
  6433. }, ],
  6434. //手势放大柱状图折线图
  6435. dataZoom: {
  6436. type: "inside",
  6437. },
  6438. series: [{
  6439. //给折线图下方添加阴影
  6440. areaStyle: {
  6441. normal: {
  6442. color: new echarts.graphic.LinearGradient(
  6443. 0,
  6444. 0,
  6445. 0,
  6446. 1,
  6447. [{
  6448. offset: 0,
  6449. color: "rgba(59, 34, 201,.4)",
  6450. },
  6451. {
  6452. offset: 1,
  6453. color: "rgba(16, 25, 112,0.2)",
  6454. },
  6455. ],
  6456. false
  6457. ),
  6458. shadowColor: "rgba(59, 34, 201,1)",
  6459. shadowBlur: 10,
  6460. },
  6461. },
  6462. name: "2017 降水量",
  6463. type: "line",
  6464. smooth: true,
  6465. itemStyle: {
  6466. normal: {
  6467. show: false,
  6468. color: "#0d3d8d", //改变折线点的颜色
  6469. lineStyle: {
  6470. color: "#0d3d8d", //改变折线颜色
  6471. },
  6472. label: {
  6473. show: false, //开启显示
  6474. position: "top", //在上方显示
  6475. textStyle: {
  6476. //数值样式
  6477. color: "#fff",
  6478. fontSize: 10,
  6479. },
  6480. },
  6481. },
  6482. emphasis: {
  6483. show: true,
  6484. color: "#0d3d8d",
  6485. borderColor: "#ffffff",
  6486. label: {
  6487. show: true, //开启显示
  6488. position: "top", //在上方显示
  6489. textStyle: {
  6490. //数值样式
  6491. color: "#fff",
  6492. fontSize: 10,
  6493. padding: [10, 10, 10, 10],
  6494. backgroundColor: "rgba(24, 71, 185, .6)",
  6495. borderRadius: 4,
  6496. },
  6497. },
  6498. },
  6499. },
  6500. // data: ['非常满意', '满意', '基本满意', '不满意', '非常不满意']
  6501. data: [
  6502. // this.networkprocessingData.verySatisfied,
  6503. this.networkprocessingData.satisfied,
  6504. this.networkprocessingData.basicallySatisfied,
  6505. this.networkprocessingData.dissatisfied,
  6506. // this.networkprocessingData.veryDissatisfied,
  6507. ],
  6508. }, ],
  6509. };
  6510. myChart.setOption(option);
  6511. },
  6512. //四长弹层统计1
  6513. fourLeaderChartPop() {
  6514. let that = this;
  6515. that.overviewPercentCount =
  6516. that.overview[0] +
  6517. that.overview[1] +
  6518. that.overview[2] +
  6519. that.overview[3];
  6520. let myChart = this.$echarts.init(document.getElementById("szCharts1"));
  6521. var dataStyle = {
  6522. normal: {
  6523. label: {
  6524. show: false,
  6525. },
  6526. labelLine: {
  6527. show: false,
  6528. },
  6529. shadowBlur: 0,
  6530. shadowColor: "#203665",
  6531. },
  6532. };
  6533. let option = {
  6534. series: [{
  6535. name: "第一个圆环",
  6536. type: "pie",
  6537. clockWise: false,
  6538. radius: [100, 80],
  6539. itemStyle: dataStyle,
  6540. hoverAnimation: false,
  6541. center: ["12%", "50%"],
  6542. data: [{
  6543. // value: 70,
  6544. value: that.overview[0],
  6545. percent: that.overviewPercentCount,
  6546. label: {
  6547. normal: {
  6548. rich: {
  6549. a: {
  6550. color: "#7DB2FF",
  6551. align: "center",
  6552. fontSize: 18,
  6553. fontWeight: "bold",
  6554. },
  6555. b: {
  6556. color: "#E7E9FF",
  6557. align: "center",
  6558. fontSize: 14,
  6559. },
  6560. },
  6561. formatter: function(params) {
  6562. return (
  6563. "{b|一岗一人}\n\n" +
  6564. "{a|" +
  6565. params.data.value +
  6566. "人}" +
  6567. "\n\n{b|" +
  6568. (params.data.percent != 0 ?
  6569. parseFloat(
  6570. (params.data.value / params.data.percent) * 100
  6571. ).toFixed(2) :
  6572. 0) +
  6573. "%}"
  6574. );
  6575. },
  6576. position: "center",
  6577. show: true,
  6578. textStyle: {
  6579. fontSize: "14",
  6580. fontWeight: "normal",
  6581. color: "#fff",
  6582. },
  6583. },
  6584. },
  6585. itemStyle: {
  6586. normal: {
  6587. color: {
  6588. colorStops: [{
  6589. offset: 0,
  6590. color: "#3CDDFF", // 0% 处的颜色
  6591. },
  6592. {
  6593. offset: 1,
  6594. color: "#4084FF", // 100% 处的颜色
  6595. },
  6596. ],
  6597. },
  6598. shadowColor: "#5FB878",
  6599. shadowBlur: 0,
  6600. },
  6601. },
  6602. },
  6603. {
  6604. value: that.overviewPercentCount - that.overview[0],
  6605. name: "invisible",
  6606. itemStyle: {
  6607. normal: {
  6608. color: "#154a75",
  6609. },
  6610. },
  6611. },
  6612. ],
  6613. },
  6614. {
  6615. name: "第二个圆环",
  6616. type: "pie",
  6617. clockWise: false,
  6618. radius: [100, 80],
  6619. itemStyle: dataStyle,
  6620. hoverAnimation: false,
  6621. center: ["37%", "50%"],
  6622. data: [{
  6623. // value: 24,
  6624. value: that.overview[1],
  6625. percent: that.overviewPercentCount,
  6626. label: {
  6627. normal: {
  6628. rich: {
  6629. a: {
  6630. color: "#7DB2FF",
  6631. align: "center",
  6632. fontSize: 18,
  6633. fontWeight: "bold",
  6634. },
  6635. b: {
  6636. color: "#E7E9FF",
  6637. align: "center",
  6638. fontSize: 14,
  6639. },
  6640. },
  6641. formatter: function(params) {
  6642. return (
  6643. "{b|双岗一人}\n\n" +
  6644. "{a|" +
  6645. params.data.value +
  6646. "人}" +
  6647. "\n\n{b|" +
  6648. (params.data.percent != 0 ?
  6649. parseFloat(
  6650. (params.data.value / params.data.percent) * 100
  6651. ).toFixed(2) :
  6652. 0) +
  6653. "%}"
  6654. // "\n\n{b|"+300+"%}"
  6655. );
  6656. },
  6657. position: "center",
  6658. show: true,
  6659. textStyle: {
  6660. fontSize: "14",
  6661. fontWeight: "normal",
  6662. color: "#fff",
  6663. },
  6664. },
  6665. },
  6666. itemStyle: {
  6667. normal: {
  6668. color: {
  6669. colorStops: [{
  6670. offset: 0,
  6671. color: "#3CDDFF", // 0% 处的颜色
  6672. },
  6673. {
  6674. offset: 1,
  6675. color: "#4084FF", // 100% 处的颜色
  6676. },
  6677. ],
  6678. },
  6679. shadowColor: "#01AAED",
  6680. shadowBlur: 0,
  6681. },
  6682. },
  6683. },
  6684. {
  6685. value: that.overviewPercentCount - that.overview[1],
  6686. name: "invisible",
  6687. itemStyle: {
  6688. normal: {
  6689. color: "#154a75",
  6690. },
  6691. },
  6692. },
  6693. ],
  6694. },
  6695. {
  6696. name: "第三个圆环",
  6697. type: "pie",
  6698. clockWise: false,
  6699. radius: [100, 80],
  6700. itemStyle: dataStyle,
  6701. hoverAnimation: false,
  6702. center: ["62%", "50%"],
  6703. data: [{
  6704. // value: 11,
  6705. value: that.overview[2],
  6706. percent: that.overviewPercentCount,
  6707. label: {
  6708. normal: {
  6709. rich: {
  6710. a: {
  6711. color: "#7DB2FF",
  6712. align: "center",
  6713. fontSize: 18,
  6714. fontWeight: "bold",
  6715. },
  6716. b: {
  6717. color: "#E7E9FF",
  6718. align: "center",
  6719. fontSize: 14,
  6720. },
  6721. },
  6722. formatter: function(params) {
  6723. return (
  6724. "{b|三岗一人}\n\n" +
  6725. "{a|" +
  6726. params.data.value +
  6727. "人}" +
  6728. "\n\n{b|" +
  6729. (params.data.percent != 0 ?
  6730. parseFloat(
  6731. (params.data.value / params.data.percent) * 100
  6732. ).toFixed(2) :
  6733. 0) +
  6734. "%}"
  6735. );
  6736. },
  6737. position: "center",
  6738. show: true,
  6739. textStyle: {
  6740. fontSize: "14",
  6741. fontWeight: "normal",
  6742. color: "#fff",
  6743. },
  6744. },
  6745. },
  6746. itemStyle: {
  6747. normal: {
  6748. color: {
  6749. colorStops: [{
  6750. offset: 0,
  6751. color: "#3CDDFF", // 0% 处的颜色
  6752. },
  6753. {
  6754. offset: 1,
  6755. color: "#4084FF", // 100% 处的颜色
  6756. },
  6757. ],
  6758. },
  6759. shadowColor: "#FF5722",
  6760. shadowBlur: 0,
  6761. },
  6762. },
  6763. },
  6764. {
  6765. value: that.overviewPercentCount - that.overview[2],
  6766. name: "invisible",
  6767. itemStyle: {
  6768. normal: {
  6769. color: "#154a75",
  6770. },
  6771. },
  6772. },
  6773. ],
  6774. },
  6775. {
  6776. name: "第四个圆环",
  6777. type: "pie",
  6778. clockWise: false,
  6779. radius: [100, 80],
  6780. itemStyle: dataStyle,
  6781. hoverAnimation: false,
  6782. center: ["87%", "50%"],
  6783. data: [{
  6784. // value: 11,
  6785. value: that.overview[3],
  6786. percent: that.overviewPercentCount,
  6787. label: {
  6788. normal: {
  6789. rich: {
  6790. a: {
  6791. color: "#7DB2FF",
  6792. align: "center",
  6793. fontSize: 18,
  6794. fontWeight: "bold",
  6795. },
  6796. b: {
  6797. color: "#E7E9FF",
  6798. align: "center",
  6799. fontSize: 14,
  6800. },
  6801. },
  6802. formatter: function(params) {
  6803. return (
  6804. "{b|四岗一人}\n\n" +
  6805. "{a|" +
  6806. params.data.value +
  6807. "人}" +
  6808. "\n\n{b|" +
  6809. (params.data.percent != 0 ?
  6810. parseFloat(
  6811. (params.data.value / params.data.percent) * 100
  6812. ).toFixed(2) :
  6813. 0) +
  6814. "%}"
  6815. );
  6816. },
  6817. position: "center",
  6818. show: true,
  6819. textStyle: {
  6820. fontSize: "14",
  6821. fontWeight: "normal",
  6822. color: "#fff",
  6823. },
  6824. },
  6825. },
  6826. itemStyle: {
  6827. normal: {
  6828. color: {
  6829. colorStops: [{
  6830. offset: 0,
  6831. color: "#3CDDFF", // 0% 处的颜色
  6832. },
  6833. {
  6834. offset: 1,
  6835. color: "#4084FF", // 100% 处的颜色
  6836. },
  6837. ],
  6838. },
  6839. shadowColor: "#FF5722",
  6840. shadowBlur: 0,
  6841. },
  6842. },
  6843. },
  6844. {
  6845. value: that.overviewPercentCount - that.overview[3],
  6846. name: "invisible",
  6847. itemStyle: {
  6848. normal: {
  6849. color: "#154a75",
  6850. },
  6851. },
  6852. },
  6853. ],
  6854. },
  6855. ],
  6856. };
  6857. if (option) {
  6858. myChart.setOption(option);
  6859. }
  6860. },
  6861. //四长弹层统计2
  6862. fourLeaderChartPop2() {
  6863. //http://192.144.199.210:8080/editor/index.html?chart_id=uNox2ENVrtmsMWRI
  6864. let that = this;
  6865. let myChart = this.$echarts.init(document.getElementById("szCharts2"));
  6866. let option = {
  6867. // backgroundColor: '#000E1A',
  6868. textStyle: {
  6869. color: "#c0c3cd",
  6870. fontSize: 12,
  6871. },
  6872. toolbox: {
  6873. show: false,
  6874. feature: {
  6875. saveAsImage: {
  6876. backgroundColor: "#031245",
  6877. },
  6878. restore: {},
  6879. },
  6880. iconStyle: {
  6881. borderColor: "#c0c3cd",
  6882. },
  6883. },
  6884. legend: {
  6885. top: 10,
  6886. itemWidth: 8,
  6887. itemHeight: 8,
  6888. icon: "circle",
  6889. left: "center",
  6890. padding: 0,
  6891. textStyle: {
  6892. color: "#c0c3cd",
  6893. fontSize: 14,
  6894. padding: [2, 0, 0, 0],
  6895. },
  6896. },
  6897. color: [
  6898. "#63caff",
  6899. "#49beff",
  6900. "#03387a",
  6901. "#03387a",
  6902. "#03387a",
  6903. "#6c93ee",
  6904. "#a9abff",
  6905. "#f7a23f",
  6906. "#27bae7",
  6907. "#ff6d9d",
  6908. "#cb79ff",
  6909. "#f95b5a",
  6910. "#ccaf27",
  6911. "#38b99c",
  6912. "#93d0ff",
  6913. "#bd74e0",
  6914. "#fd77da",
  6915. "#dea700",
  6916. ],
  6917. grid: {
  6918. containLabel: true,
  6919. left: 20,
  6920. right: 10,
  6921. bottom: 30,
  6922. top: 80,
  6923. },
  6924. xAxis: {
  6925. nameTextStyle: {
  6926. color: "#c0c3cd",
  6927. padding: [0, 0, -10, 0],
  6928. fontSize: 11,
  6929. },
  6930. axisLabel: {
  6931. color: "#c0c3cd",
  6932. fontSize: 14,
  6933. interval: 0,
  6934. },
  6935. axisTick: {
  6936. lineStyle: {
  6937. color: "#384267",
  6938. width: 1,
  6939. },
  6940. show: false,
  6941. },
  6942. splitLine: {
  6943. show: false,
  6944. },
  6945. axisLine: {
  6946. lineStyle: {
  6947. color: "#384267",
  6948. width: 2,
  6949. type: "dashed",
  6950. },
  6951. show: false,
  6952. },
  6953. data: ["河长", "林长", "路长", "田长"],
  6954. type: "category",
  6955. },
  6956. yAxis: {
  6957. nameTextStyle: {
  6958. color: "#c0c3cd",
  6959. padding: [0, 0, -10, 0],
  6960. fontSize: 14,
  6961. },
  6962. axisLabel: {
  6963. show: false,
  6964. },
  6965. axisTick: {
  6966. lineStyle: {
  6967. color: "#384267",
  6968. width: 1,
  6969. },
  6970. show: false,
  6971. },
  6972. splitLine: {
  6973. show: false,
  6974. lineStyle: {
  6975. color: "#384267",
  6976. type: "dashed",
  6977. },
  6978. },
  6979. axisLine: {
  6980. lineStyle: {
  6981. color: "#384267",
  6982. width: 1,
  6983. type: "dashed",
  6984. },
  6985. show: false,
  6986. },
  6987. name: "",
  6988. },
  6989. series: [{
  6990. data: that.fourLengthPlan,
  6991. type: "bar",
  6992. barMaxWidth: "auto",
  6993. barWidth: 50,
  6994. itemStyle: {
  6995. color: {
  6996. x: 0,
  6997. y: 0,
  6998. x2: 0,
  6999. y2: 1,
  7000. type: "linear",
  7001. global: false,
  7002. colorStops: [{
  7003. offset: 0,
  7004. color: "#0b9eff",
  7005. },
  7006. {
  7007. offset: 1,
  7008. color: "#63caff",
  7009. },
  7010. ],
  7011. },
  7012. },
  7013. label: {
  7014. normal: {
  7015. position: "top",
  7016. show: true,
  7017. color: "white",
  7018. formatter: "{c}%",
  7019. },
  7020. },
  7021. },
  7022. {
  7023. data: [1, 1, 1, 1, 1, 1, 1, 1],
  7024. type: "pictorialBar",
  7025. barMaxWidth: "10",
  7026. symbol: "diamond",
  7027. symbolOffset: [0, "50%"],
  7028. symbolSize: [50, 15],
  7029. },
  7030. {
  7031. data: that.fourLengthPlan,
  7032. type: "pictorialBar",
  7033. barMaxWidth: "10",
  7034. symbolPosition: "end",
  7035. symbol: "diamond",
  7036. symbolOffset: [0, "-50%"],
  7037. symbolSize: [50, 12],
  7038. zlevel: 2,
  7039. },
  7040. {
  7041. data: [100, 100, 100, 100],
  7042. type: "bar",
  7043. barMaxWidth: "auto",
  7044. barWidth: 50,
  7045. barGap: "-100%",
  7046. zlevel: -1,
  7047. },
  7048. {
  7049. data: [1, 1, 1, 1],
  7050. type: "pictorialBar",
  7051. barMaxWidth: "10",
  7052. symbol: "diamond",
  7053. symbolOffset: [0, "50%"],
  7054. symbolSize: [50, 15],
  7055. zlevel: -2,
  7056. },
  7057. {
  7058. data: [100, 100, 100, 100],
  7059. type: "pictorialBar",
  7060. barMaxWidth: "10",
  7061. symbolPosition: "end",
  7062. symbol: "diamond",
  7063. symbolOffset: [0, "-50%"],
  7064. symbolSize: [50, 12],
  7065. zlevel: -1,
  7066. },
  7067. ],
  7068. tooltip: {
  7069. trigger: "axis",
  7070. show: false,
  7071. },
  7072. };
  7073. if (option) {
  7074. myChart.setOption(option);
  7075. }
  7076. },
  7077. //四长弹层统计3 http://192.144.199.210:8080/editor/index.html?chart_id=dm5L9wA0yywrIPq2
  7078. fourLeaderChartPop3() {
  7079. let that = this;
  7080. let myChart = this.$echarts.init(document.getElementById("szCharts3"));
  7081. // let data = that.fourLengthTask
  7082. let data = [{
  7083. name: "林长",
  7084. value: 25,
  7085. },
  7086. {
  7087. name: "田长",
  7088. value: 25,
  7089. },
  7090. {
  7091. name: "路长",
  7092. value: 25,
  7093. },
  7094. {
  7095. name: "河长",
  7096. value: 25,
  7097. },
  7098. ];
  7099. let name = data.map((item) => item.name);
  7100. let value = data.map((item) => item.value);
  7101. let sum = 25;
  7102. let color = [
  7103. ["#198AFD", "#0FDEAE", "#04d030", "#fdda13"],
  7104. [
  7105. "rgba(24, 183, 142,0.1)",
  7106. "rgba(1, 179, 238,0.1)",
  7107. "rgba(22, 75, 205,0.1)",
  7108. "rgba(52, 52, 176,0.1)",
  7109. ],
  7110. ];
  7111. let series = [];
  7112. let yAxis = [];
  7113. for (let i = 0; i < data.length; i++) {
  7114. series.push({
  7115. name: "",
  7116. type: "pie",
  7117. clockWise: false, //顺时加载
  7118. hoverAnimation: false, //鼠标移入变大
  7119. radius: [80 - i * 10 + "%", 75 - i * 10 + "%"],
  7120. center: ["50%", "60%"],
  7121. label: {
  7122. show: false,
  7123. },
  7124. itemStyle: {
  7125. label: {
  7126. show: false,
  7127. },
  7128. labelLine: {
  7129. show: false,
  7130. },
  7131. borderWidth: 5,
  7132. },
  7133. data: [{
  7134. value: data[i].value,
  7135. name: data[i].name,
  7136. },
  7137. {
  7138. value: sum - data[i].value,
  7139. name: "",
  7140. itemStyle: {
  7141. color: "transparent",
  7142. },
  7143. tooltip: {
  7144. show: false,
  7145. },
  7146. hoverAnimation: false,
  7147. },
  7148. ],
  7149. });
  7150. series.push({
  7151. name: "",
  7152. type: "pie",
  7153. silent: true,
  7154. z: 1,
  7155. clockWise: false, //顺时加载
  7156. hoverAnimation: false, //鼠标移入变大
  7157. radius: [80 - i * 10 + "%", 75 - i * 10 + "%"],
  7158. center: ["50%", "60%"],
  7159. label: {
  7160. show: false,
  7161. },
  7162. itemStyle: {
  7163. label: {
  7164. show: false,
  7165. },
  7166. labelLine: {
  7167. show: false,
  7168. },
  7169. borderWidth: 5,
  7170. },
  7171. data: [{
  7172. value: 7.5,
  7173. itemStyle: {
  7174. color: color[1][i],
  7175. },
  7176. tooltip: {
  7177. show: false,
  7178. },
  7179. hoverAnimation: false,
  7180. },
  7181. {
  7182. value: 2.5,
  7183. itemStyle: {
  7184. color: "rgba(0,0,0,0)",
  7185. borderWidth: 0,
  7186. },
  7187. tooltip: {
  7188. show: false,
  7189. },
  7190. hoverAnimation: false,
  7191. },
  7192. ],
  7193. });
  7194. yAxis.push(
  7195. name[i] +
  7196. (((data[i].value / sum) * 100).toFixed(2) == "NaN" ?
  7197. "0" :
  7198. ((data[i].value / sum) * 100).toFixed(2)) +
  7199. "%"
  7200. );
  7201. }
  7202. let option = {
  7203. color: color[0],
  7204. legend: {
  7205. show: false,
  7206. icon: "circle",
  7207. top: "center",
  7208. right: "10%",
  7209. data: name,
  7210. orient: "vertical",
  7211. formatter: (name) => {
  7212. return "{title|" + name + "}";
  7213. },
  7214. textStyle: {
  7215. rich: {
  7216. title: {
  7217. fontSize: 14,
  7218. lineHeight: 20,
  7219. color: "rgb(0, 178, 246)",
  7220. },
  7221. value: {
  7222. fontSize: 14,
  7223. lineHeight: 20,
  7224. color: "#fff",
  7225. },
  7226. },
  7227. },
  7228. },
  7229. tooltip: {
  7230. show: true,
  7231. trigger: "item",
  7232. formatter: "{a}<br>{b}:{c}({d}%)",
  7233. },
  7234. grid: {
  7235. top: "50%",
  7236. left: "34%",
  7237. width: "40%",
  7238. height: "20%",
  7239. containLabel: false,
  7240. },
  7241. yAxis: [{
  7242. type: "category",
  7243. inverse: true,
  7244. axisLine: {
  7245. show: false,
  7246. },
  7247. axisTick: {
  7248. show: false,
  7249. },
  7250. axisLabel: {
  7251. interval: 0,
  7252. inside: true,
  7253. textStyle: {
  7254. color: "#fff",
  7255. fontSize: 14,
  7256. },
  7257. show: true,
  7258. },
  7259. data: yAxis,
  7260. }, ],
  7261. xAxis: [{
  7262. show: false,
  7263. }, ],
  7264. series: series,
  7265. };
  7266. if (option) {
  7267. myChart.setOption(option);
  7268. }
  7269. },
  7270. // 四长统计 tree
  7271. handleNodeClick(data) {
  7272. console.log(data);
  7273. this.leaderData = data.title;
  7274. },
  7275. //tab 切换
  7276. tabHandleClick(tab, event) {
  7277. console.log(tab, event);
  7278. },
  7279. // 当前时间
  7280. getNowTime() {
  7281. var date = new Date();
  7282. var sign2 = ":";
  7283. var year = date.getFullYear(); // 年
  7284. var month = date.getMonth() + 1; // 月
  7285. var day = date.getDate(); // 日
  7286. var hour = date.getHours(); // 时
  7287. var minutes = date.getMinutes(); // 分
  7288. var seconds = date.getSeconds(); //秒
  7289. var weekArr = [
  7290. "星期一",
  7291. "星期二",
  7292. "星期三",
  7293. "星期四",
  7294. "星期五",
  7295. "星期六",
  7296. "星期天",
  7297. ];
  7298. var week = weekArr[date.getDay()];
  7299. // 给一位数的数据前面加 “0”
  7300. if (month >= 1 && month <= 9) {
  7301. month = "0" + month;
  7302. }
  7303. if (day >= 0 && day <= 9) {
  7304. day = "0" + day;
  7305. }
  7306. if (hour >= 0 && hour <= 9) {
  7307. hour = "0" + hour;
  7308. }
  7309. if (minutes >= 0 && minutes <= 9) {
  7310. minutes = "0" + minutes;
  7311. }
  7312. if (seconds >= 0 && seconds <= 9) {
  7313. seconds = "0" + seconds;
  7314. }
  7315. this.nowTime = hour + sign2 + minutes + sign2 + seconds;
  7316. },
  7317. currentTime() {
  7318. setInterval(() => {
  7319. this.getNowTime();
  7320. }, 1000);
  7321. },
  7322. showEventDialog(eventCode) {
  7323. //事件信息弹出
  7324. this.$refs.eventdetailsdialog.showEventDialog(eventCode);
  7325. },
  7326. /** ----------------------------------摄像头预览开始------------------------------------- */
  7327. alertLogin: function() {
  7328. this.$modal.msg("登录中....");
  7329. },
  7330. alertLoginSuccess: function() {
  7331. this.$modal.msgSuccess("登录成功!");
  7332. },
  7333. alertLoginFailed: function() {
  7334. this.$modal.msgError("登陆失败!");
  7335. },
  7336. alertReinstall: function() {
  7337. this.$modal.msgWarning("请重新安装客户端");
  7338. },
  7339. cancelEventLocationShow() {
  7340. if (this.oWebControl != null) {
  7341. this.oWebControl.JS_HideWnd(); // 先让窗口隐藏,规避可能的插件窗口滞后于浏览器消失问题
  7342. this.oWebControl.JS_Disconnect().then(
  7343. function() {
  7344. // 断开与插件服务连接成功
  7345. },
  7346. function() {
  7347. // 断开与插件服务连接失败
  7348. }
  7349. );
  7350. }
  7351. },
  7352. /** 预览按钮操作 */
  7353. preview(cameraParam) {
  7354. this.showTVWallMine(cameraParam.code, cameraParam.name, cameraParam.type);
  7355. // if (cameraParam.cameraFactory == "1") {
  7356. // getDahuaVideoServer().then((newResponse) => {
  7357. // console.log(newResponse);
  7358. // this.ws.detectConnectQt().then((res) => {
  7359. // if (res) {
  7360. // // 连接客户端成功
  7361. // this.alertLogin();
  7362. // this.ws.login({
  7363. // loginIp: newResponse.loginIp,
  7364. // loginPort: newResponse.loginPort,
  7365. // userName: newResponse.userName,
  7366. // userPwd: newResponse.userPwd,
  7367. // token: "",
  7368. // https: 1,
  7369. // });
  7370. // this.ws.on("loginState", (res) => {
  7371. // this.isLogin = res;
  7372. // console.log("---res-----", res);
  7373. // if (res) {
  7374. // this.alertLoginSuccess();
  7375. // this.activePanel = "key2";
  7376. // this.realTimeVideoDialog(cameraParam.cameraCode);
  7377. // } else {
  7378. // this.alertLoginFailed();
  7379. // }
  7380. // });
  7381. // } else {
  7382. // // 连接客户端失败
  7383. // this.alertReinstall();
  7384. // }
  7385. // });
  7386. // });
  7387. // } else if (cameraParam.cameraFactory == "0") {
  7388. // let that = this;
  7389. // that.cameraVisible = true;
  7390. // getHaiKangVideoServer({
  7391. // cameraCode: cameraParam.cameraCode,
  7392. // }).then((newResponse) => {
  7393. // that.cameraTitle = "摄像头-" + newResponse.data.cameraName;
  7394. // that.initPlugin(
  7395. // newResponse.data.appkey,
  7396. // newResponse.data.loginIp,
  7397. // newResponse.data.secret,
  7398. // newResponse.data.loginPort
  7399. // );
  7400. // setTimeout(function () {
  7401. // that.playhk(newResponse.data.channelCode);
  7402. // }, 5000);
  7403. // });
  7404. // }
  7405. },
  7406. realTimeVideoDialog(cameraParams) {
  7407. // 调用弹窗实时播放接口
  7408. if (!this.isLogin) {
  7409. this.$Message.info("正在登陆客户端,请稍等......");
  7410. return false;
  7411. }
  7412. const params = [cameraParams];
  7413. this.ws.openVideo(params);
  7414. },
  7415. /** ----------------------------------摄像头预览结束------------------------------------- */
  7416. /** ----------------------------------海康摄像头预览开始------------------------------------- */
  7417. // 创建播放实例
  7418. initPlugin(newappkey, newloginIp, newsecret, newloginPort) {
  7419. let that = this;
  7420. that.oWebControl = new WebControl({
  7421. szPluginContainer: "playWnd", // 指定容器id
  7422. iServicePortStart: 15900, // 指定起止端口号,建议使用该值
  7423. iServicePortEnd: 15909,
  7424. szClassId: "23BF3B0A-2C56-4D97-9C03-0CB103AA8F11", // 用于IE10使用ActiveX的clsid
  7425. cbConnectSuccess: function() {
  7426. // 创建WebControl实例成功
  7427. that.oWebControl
  7428. .JS_StartService("window", {
  7429. // WebControl实例创建成功后需要启动服务
  7430. dllPath: "./VideoPluginConnect.dll", // 值"./VideoPluginConnect.dll"写死
  7431. })
  7432. .then(
  7433. function() {
  7434. // 启动插件服务成功
  7435. that.oWebControl.JS_SetWindowControlCallback({
  7436. // 设置消息回调
  7437. cbIntegrationCallBack: cbIntegrationCallBack,
  7438. });
  7439. that.oWebControl
  7440. .JS_CreateWnd("playWnd", 1020, 600)
  7441. .then(function() {
  7442. //JS_CreateWnd创建视频播放窗口,宽高可设定
  7443. that.init(newappkey, newloginIp, newsecret, newloginPort); // 创建播放实例成功后初始化
  7444. });
  7445. },
  7446. function() {
  7447. // 启动插件服务失败
  7448. }
  7449. );
  7450. },
  7451. cbConnectError: function() {
  7452. // 创建WebControl实例失败
  7453. that.oWebControl = null;
  7454. $("#playWnd").html(
  7455. '插件未启动,正在尝试启动,请稍候...<a href="./hk/VideoWebPlugin.exe">点击下载插件</a>'
  7456. );
  7457. WebControl.JS_WakeUp("VideoWebPlugin://"); // 程序未启动时执行error函数,采用wakeup来启动程序
  7458. initCount++;
  7459. if (initCount < 3) {
  7460. setTimeout(function() {
  7461. that.initPlugin(newappkey, newloginIp, newsecret, newloginPort);
  7462. }, 1000);
  7463. } else {
  7464. $("#playWnd").html(
  7465. '插件启动失败,请检查插件是否安装!<a href="./hk/VideoWebPlugin.exe">点击下载插件</a>'
  7466. );
  7467. }
  7468. },
  7469. cbConnectClose: function(bNormalClose) {
  7470. // 异常断开:bNormalClose = false
  7471. // JS_Disconnect正常断开:bNormalClose = true
  7472. console.log("cbConnectClose");
  7473. that.oWebControl = null;
  7474. },
  7475. });
  7476. },
  7477. //播放海康摄像头
  7478. playhk(channelCode) {
  7479. var cameraIndexCode = channelCode; //获取输入的监控点编号值,必填
  7480. var streamMode = 0; //主子码流标识:0-主码流,1-子码流
  7481. var transMode = 1; //传输协议:0-UDP,1-TCP
  7482. var gpuMode = 0; //是否启用GPU硬解,0-不启用,1-启用
  7483. var wndId = -1; //播放窗口序号(在2x2以上布局下可指定播放窗口)
  7484. cameraIndexCode = cameraIndexCode.replace(/(^\s*)/g, "");
  7485. cameraIndexCode = cameraIndexCode.replace(/(\s*$)/g, "");
  7486. this.oWebControl.JS_RequestInterface({
  7487. funcName: "startPreview",
  7488. argument: JSON.stringify({
  7489. cameraIndexCode: cameraIndexCode, //监控点编号
  7490. streamMode: streamMode, //主子码流标识
  7491. transMode: transMode, //传输协议
  7492. gpuMode: gpuMode, //是否开启GPU硬解
  7493. wndId: wndId, //可指定播放窗口
  7494. }),
  7495. });
  7496. },
  7497. //初始化
  7498. init(newappkey, newloginIp, newsecret, newloginPort) {
  7499. let that = this;
  7500. that.getPubKey(function() {
  7501. ////////////////////////////////// 请自行修改以下变量值 ////////////////////////////////////
  7502. var appkey = newappkey; //综合安防管理平台提供的appkey,必填
  7503. var secret = that.setEncrypt(newsecret); //综合安防管理平台提供的secret,必填
  7504. var ip = newloginIp; //综合安防管理平台IP地址,必填
  7505. var playMode = 0; //初始播放模式:0-预览,1-回放
  7506. var port = Number(newloginPort); //综合安防管理平台端口,若启用HTTPS协议,默认443
  7507. var snapDir = "D:\\SnapDir"; //抓图存储路径
  7508. var videoDir = "D:\\VideoDir"; //紧急录像或录像剪辑存储路径
  7509. var layout = "1x1"; //playMode指定模式的布局
  7510. var enableHTTPS = 1; //是否启用HTTPS协议与综合安防管理平台交互,这里总是填1
  7511. var encryptedFields = "secret"; //加密字段,默认加密领域为secret
  7512. var showToolbar = 1; //是否显示工具栏,0-不显示,非0-显示
  7513. var showSmart = 1; //是否显示智能信息(如配置移动侦测后画面上的线框),0-不显示,非0-显示
  7514. var buttonIDs =
  7515. "0,16,256,257,258,259,260,512,513,514,515,516,517,768,769"; //自定义工具条按钮
  7516. ////////////////////////////////// 请自行修改以上变量值 ////////////////////////////////////
  7517. that.oWebControl
  7518. .JS_RequestInterface({
  7519. funcName: "init",
  7520. argument: JSON.stringify({
  7521. appkey: appkey, //API网关提供的appkey
  7522. secret: secret, //API网关提供的secret
  7523. ip: ip, //API网关IP地址
  7524. playMode: playMode, //播放模式(决定显示预览还是回放界面)
  7525. port: port, //端口
  7526. snapDir: snapDir, //抓图存储路径
  7527. videoDir: videoDir, //紧急录像或录像剪辑存储路径
  7528. layout: layout, //布局
  7529. enableHTTPS: enableHTTPS, //是否启用HTTPS协议
  7530. encryptedFields: encryptedFields, //加密字段
  7531. showToolbar: showToolbar, //是否显示工具栏
  7532. showSmart: showSmart, //是否显示智能信息
  7533. buttonIDs: buttonIDs, //自定义工具条按钮
  7534. }),
  7535. })
  7536. .then(function(oData) {
  7537. that.oWebControl.JS_Resize(1020, 600); // 初始化后resize一次,规避firefox下首次显示窗口后插件窗口未与DIV窗口重合问题
  7538. });
  7539. });
  7540. },
  7541. //获取公钥
  7542. getPubKey(callback) {
  7543. let that = this;
  7544. that.oWebControl
  7545. .JS_RequestInterface({
  7546. funcName: "getRSAPubKey",
  7547. argument: JSON.stringify({
  7548. keyLength: 1024,
  7549. }),
  7550. })
  7551. .then(function(oData) {
  7552. console.log(oData);
  7553. if (oData.responseMsg.data) {
  7554. that.pubKey = oData.responseMsg.data;
  7555. callback();
  7556. }
  7557. });
  7558. },
  7559. //RSA加密
  7560. setEncrypt(value) {
  7561. var encrypt = new JSEncrypt();
  7562. encrypt.setPublicKey(this.pubKey);
  7563. return encrypt.encrypt(value);
  7564. },
  7565. /** ----------------------------------海康摄像头预览结束------------------------------------- */
  7566. layerCheck() {
  7567. this.getLocation()
  7568. this.$refs.supermap.reload(this.layerCheckList);
  7569. },
  7570. },
  7571. // 局部过滤器
  7572. filters: {
  7573. ellipsisFont8(value) {
  7574. if (!value) return "";
  7575. if (value.length > 8) {
  7576. return value.slice(0, 8) + "...";
  7577. }
  7578. return value;
  7579. },
  7580. },
  7581. };
  7582. </script>
  7583. <style lang="scss">
  7584. @import "@/assets/styles/base.scss";
  7585. @import url("../assets/styles/leader-index.scss");
  7586. .sj-container {
  7587. background: #020d1f;
  7588. font-family: "syht";
  7589. position: absolute;
  7590. overflow: hidden;
  7591. }
  7592. .zdgc {
  7593. //轮播
  7594. .el-carousel__item h3 {
  7595. color: #475669;
  7596. font-size: 18px;
  7597. opacity: 0.75;
  7598. line-height: 300px;
  7599. margin: 0;
  7600. }
  7601. .el-carousel__button {
  7602. width: 3px;
  7603. background: #0bf3f7;
  7604. }
  7605. .el-carousel__arrow--left {
  7606. left: 0;
  7607. }
  7608. .el-carousel__arrow--right {
  7609. right: 0;
  7610. }
  7611. }
  7612. .header {
  7613. z-index: 10;
  7614. position: absolute;
  7615. width: 100%;
  7616. top: 0px;
  7617. display: flex;
  7618. flex-direction: row;
  7619. justify-content: space-between;
  7620. height: 8vh;
  7621. .head-left {
  7622. display: flex;
  7623. flex-direction: row;
  7624. justify-content: flex-start;
  7625. align-items: center;
  7626. width: 50%;
  7627. background: url("../assets/images/leader-topl.png") no-repeat top left;
  7628. img {
  7629. width: 3.5rem;
  7630. height: 3.5rem;
  7631. margin-left: 0.5rem;
  7632. margin-right: 0.5rem;
  7633. }
  7634. .el-select-dropdown {
  7635. border: none;
  7636. background-color: rgba(1, 28, 82, 0.8);
  7637. }
  7638. //输入框
  7639. .el-input__inner {
  7640. color: #eee !important;
  7641. border: 0px;
  7642. padding-left: 2rem;
  7643. background-size: 100% 100%;
  7644. background: url("../assets/images/leader-topk.png") no-repeat center;
  7645. }
  7646. .el-input {
  7647. position: relative;
  7648. }
  7649. .el-input:after {
  7650. content: " ";
  7651. display: block;
  7652. position: absolute;
  7653. left: 0.5rem;
  7654. top: 0.25rem;
  7655. width: 1rem;
  7656. height: 1.3rem;
  7657. z-index: 11;
  7658. background: url("../assets/images/leader-icon1.png") no-repeat center;
  7659. }
  7660. //聚焦时的样式
  7661. .el-select .el-input.is-focus .el-input__inner {
  7662. border-color: #0b61aa;
  7663. background-color: rgba(1, 28, 82, 0.8);
  7664. color: #00d3e9;
  7665. }
  7666. //下拉框选中
  7667. .el-select-dropdown__item {
  7668. color: #eee;
  7669. }
  7670. //鼠标经过下拉框
  7671. .el-select-dropdown__item.hover,
  7672. .el-select-dropdown__item:hover {
  7673. color: #00d3e9;
  7674. background-color: #0f3360;
  7675. }
  7676. .select {
  7677. width: 8rem;
  7678. height: 2.4rem;
  7679. z-index: 1000;
  7680. display: flex;
  7681. align-items: center;
  7682. border-radius: 30px;
  7683. margin-right: 1rem;
  7684. }
  7685. .select2 {
  7686. width: 10rem;
  7687. height: 2.4rem;
  7688. z-index: 1000;
  7689. display: flex;
  7690. align-items: center;
  7691. border-radius: 30px;
  7692. margin-right: 1rem;
  7693. //输入框
  7694. .el-input__inner {
  7695. color: #eee !important;
  7696. border: 0px;
  7697. padding-left: 2rem;
  7698. background-size: 100% 100%;
  7699. background: url("../assets/images/leader-topk.png") no-repeat center;
  7700. background-size: cover;
  7701. }
  7702. }
  7703. }
  7704. .head-center {
  7705. position: absolute;
  7706. z-index: 10;
  7707. width: 835px;
  7708. height: 10vh;
  7709. left: 50%;
  7710. margin-left: -417px;
  7711. background: url("../assets/images/leader-topc.png") no-repeat top center;
  7712. cursor: pointer;
  7713. span {
  7714. font-family: $fontHk;
  7715. line-height: 8vh;
  7716. font-size: 2.2rem;
  7717. text-align: center;
  7718. display: block;
  7719. background-image: -webkit-linear-gradient(bottom, #e6fcff, #b2e6fc);
  7720. -webkit-background-clip: text;
  7721. -webkit-text-fill-color: transparent;
  7722. letter-spacing: 0.2rem;
  7723. }
  7724. }
  7725. .head-right {
  7726. width: 50%;
  7727. background: url("../assets/images/leader-topr.png") no-repeat top right;
  7728. .head-time {
  7729. display: flex;
  7730. flex-direction: row;
  7731. justify-content: flex-end;
  7732. line-height: 7vh;
  7733. background: url("../assets/images/leader-topk2.png") no-repeat 100%;
  7734. // background-size: contain;
  7735. i {
  7736. display: inline-block;
  7737. width: 2rem;
  7738. height: 2rem;
  7739. }
  7740. .head-fx {
  7741. background: url("../assets/images/leader-icon-fengxiang.png") no-repeat 5px 5px;
  7742. }
  7743. .head-fs {
  7744. background: url("../assets/images/leader-icon2.png") no-repeat 5px 5px;
  7745. }
  7746. .head-jsl {
  7747. background: url("../assets/images/leader-icon3.png") no-repeat 4px 5px;
  7748. }
  7749. .head-wd {
  7750. background: url("../assets/images/leader-icon4.png") no-repeat 5px 6px;
  7751. }
  7752. }
  7753. span {
  7754. margin-right: 1rem;
  7755. color: #fff;
  7756. font-size: 1rem;
  7757. display: flex;
  7758. flex-direction: row;
  7759. align-items: center;
  7760. u {
  7761. text-decoration: none;
  7762. }
  7763. }
  7764. .timer {
  7765. padding-right: 1rem;
  7766. font-weight: bold;
  7767. font-style: oblique;
  7768. }
  7769. }
  7770. }
  7771. /*左侧 右侧*/
  7772. .con-left {
  7773. position: absolute;
  7774. left: 0.2rem;
  7775. top: 10vh;
  7776. z-index: 9;
  7777. display: flex;
  7778. flex-direction: column;
  7779. justify-content: space-between;
  7780. }
  7781. .con-right {
  7782. position: absolute;
  7783. right: 0.2rem;
  7784. top: 10vh;
  7785. z-index: 9;
  7786. display: flex;
  7787. flex-direction: column;
  7788. justify-content: space-between;
  7789. }
  7790. .con-div {
  7791. border: 1px solid #15519b;
  7792. position: relative;
  7793. height: 26.7vh;
  7794. width: 18.75vw;
  7795. margin-bottom: 0.8rem;
  7796. overflow: hidden;
  7797. background: linear-gradient(rgba(4, 23, 62, 0.6), rgba(0, 28, 70, 0.6));
  7798. /* 标准的语法 */
  7799. .head-di {
  7800. position: absolute;
  7801. right: 0px;
  7802. bottom: 0px;
  7803. width: 7rem;
  7804. height: 1rem;
  7805. color: #02a3e9;
  7806. }
  7807. .con-tit {
  7808. height: 2rem;
  7809. position: relative;
  7810. a {
  7811. background: url("../assets/images/leader-titbg.png") no-repeat 0px 0px;
  7812. display: flex;
  7813. flex-direction: row;
  7814. justify-content: left;
  7815. align-content: center;
  7816. position: absolute;
  7817. left: 0px;
  7818. top: 0px;
  7819. width: 100%;
  7820. height: 3rem;
  7821. z-index: 3;
  7822. line-height: 2.4rem;
  7823. background-size: 100% 100%;
  7824. letter-spacing: 1px;
  7825. transition: all 0.5s;
  7826. i {
  7827. background: url("../assets/images/leader-tit1.png") no-repeat 6px 8px;
  7828. display: block;
  7829. width: 1.8rem;
  7830. height: 1.8rem;
  7831. animation: cccbt2 4s infinite;
  7832. }
  7833. b {
  7834. display: inline-block;
  7835. height: 3rem;
  7836. padding-left: 0.4rem;
  7837. color: #fff;
  7838. font-size: 0.9rem;
  7839. }
  7840. }
  7841. span {
  7842. position: absolute;
  7843. right: 0px;
  7844. top: 0px;
  7845. color: #fff;
  7846. font-size: 0.8rem;
  7847. z-index: 10;
  7848. height: 2.2rem;
  7849. padding-right: 1rem;
  7850. line-height: 2.2rem;
  7851. display: flex;
  7852. .tit_fire {
  7853. background: url("../assets/images/leader-titfire.png") no-repeat 0px 6px;
  7854. width: 1.5rem;
  7855. height: 1.7rem;
  7856. z-index: 9;
  7857. display: inline-block;
  7858. }
  7859. }
  7860. }
  7861. .con-tit a:hover i {
  7862. animation: rotate 3s linear infinite;
  7863. transform-origin: center center;
  7864. }
  7865. @keyframes rotate {
  7866. to {
  7867. transform: rotateY(360deg);
  7868. }
  7869. }
  7870. .cont-np {
  7871. padding: 0px !important;
  7872. }
  7873. .cont {
  7874. padding: 1rem 0.5rem;
  7875. .cont-top1 {
  7876. position: relative;
  7877. width: 92%;
  7878. margin: 0px auto;
  7879. height: 3.5rem;
  7880. line-height: 3.5rem;
  7881. img {
  7882. position: absolute;
  7883. left: 0rem;
  7884. z-index: 1;
  7885. }
  7886. p {
  7887. background: url("../assets/images/leader-iconbg.png") no-repeat left;
  7888. color: #fff;
  7889. width: 20rem;
  7890. z-index: 0;
  7891. position: absolute;
  7892. left: 2rem;
  7893. padding-left: 2rem;
  7894. font-size: 0.6rem;
  7895. b {
  7896. padding: 0px 0.2rem;
  7897. //font-size: 1rem;
  7898. font-weight: bold;
  7899. }
  7900. }
  7901. a {
  7902. background: url("../assets/images/leader-iconbg2.png") no-repeat center;
  7903. width: 6rem;
  7904. z-index: 1;
  7905. position: absolute;
  7906. right: 0rem;
  7907. text-align: center;
  7908. color: #fff;
  7909. font-size: 0.7rem;
  7910. }
  7911. }
  7912. .cont-top2 {
  7913. display: flex;
  7914. flex-direction: row;
  7915. width: 100%;
  7916. height: 2.5rem;
  7917. line-height: 2.5rem;
  7918. justify-content: center;
  7919. text-align: center;
  7920. margin-top: 0.8rem;
  7921. span {
  7922. width: 33%;
  7923. color: #fff;
  7924. font-size: 0.6rem;
  7925. b {
  7926. padding-left: 0.2rem;
  7927. }
  7928. }
  7929. span:nth-child(1) {
  7930. display: block;
  7931. background: url("../assets/images/leader-iconbg3.png") no-repeat center;
  7932. background-size: 100% 100%;
  7933. }
  7934. span:nth-child(2) {
  7935. display: block;
  7936. background: url("../assets/images/leader-iconbg4.png") no-repeat center;
  7937. background-size: 100% 100%;
  7938. b {
  7939. //font-size: 1rem;
  7940. }
  7941. }
  7942. span:nth-child(3) {
  7943. display: block;
  7944. background: url("../assets/images/leader-iconbg5.png") no-repeat center;
  7945. background-size: 100% 100%;
  7946. }
  7947. }
  7948. .cont-top3 {
  7949. display: flex;
  7950. flex-direction: row;
  7951. width: 100%;
  7952. height: 2.5rem;
  7953. line-height: 2.5rem;
  7954. justify-content: center;
  7955. text-align: center;
  7956. span {
  7957. cursor: pointer;
  7958. width: 25%;
  7959. display: block;
  7960. background: url("../assets/images/leader-iconbg8.png") no-repeat center;
  7961. background-size: 100% 100%;
  7962. color: #fff;
  7963. font-size: 0.9rem;
  7964. }
  7965. span.active {
  7966. background: url("../assets/images/leader-iconbg8-on.png") no-repeat center;
  7967. background-size: 100% 100%;
  7968. font-weight: bold;
  7969. }
  7970. }
  7971. .con-list {
  7972. margin-top: 0.2rem;
  7973. height: 9rem;
  7974. overflow-y: scroll;
  7975. .tabList a {
  7976. display: flex;
  7977. flex-direction: row;
  7978. width: 100%;
  7979. height: 2rem;
  7980. line-height: 2rem;
  7981. color: #fff;
  7982. font-size: 0.6rem;
  7983. padding-left: 1.5rem;
  7984. background: linear-gradient(180deg,
  7985. rgba($color: #22a0e1, $alpha: 0.15),
  7986. rgba($color: #173fbf, $alpha: 0.15));
  7987. position: relative;
  7988. span:after {
  7989. display: block;
  7990. content: "";
  7991. width: 6px;
  7992. height: 6px;
  7993. background: #00b2de;
  7994. box-shadow: 0px 0px 6px #00b2de;
  7995. position: absolute;
  7996. left: 0.7rem;
  7997. top: 0.8rem;
  7998. }
  7999. u {
  8000. margin-left: auto;
  8001. padding: 0px 1rem 0px 1.5rem;
  8002. text-decoration: none;
  8003. color: #00b2de;
  8004. text-shadow: 0px 0px 6px #00b2de;
  8005. background: url("../assets/images/leader-icon6.png") no-repeat left center;
  8006. }
  8007. }
  8008. }
  8009. .tabList a:hover {
  8010. text-shadow: 0px 0px 6px #25d5de;
  8011. u {
  8012. text-shadow: 0px 0px 6px #25d5de;
  8013. }
  8014. }
  8015. .con-list::-webkit-scrollbar {
  8016. width: 0px;
  8017. height: 0px;
  8018. }
  8019. .cont-top4 {
  8020. .cont-row {
  8021. display: flex;
  8022. flex-direction: row;
  8023. justify-content: space-between;
  8024. .c-left {
  8025. width: 78%;
  8026. p {
  8027. height: 2.1rem;
  8028. line-height: 2.1rem;
  8029. width: 100%;
  8030. padding: 0px 0.8rem;
  8031. background: url("../assets/images/leader-iconbg9.png") no-repeat center;
  8032. background-size: 99% 100%;
  8033. margin-bottom: 0.2rem;
  8034. margin-right: 0.2rem;
  8035. font-size: 0.6rem;
  8036. color: #fff;
  8037. b {
  8038. float: right;
  8039. font-family: "pm";
  8040. letter-spacing: 0.1rem;
  8041. font-size: 1rem;
  8042. }
  8043. }
  8044. }
  8045. .c-right {
  8046. width: 39%;
  8047. background: url("../assets/images/leader-iconbg10.png") no-repeat center;
  8048. background-size: 99% 100%;
  8049. height: 4.4rem;
  8050. padding: 0px 0.8rem;
  8051. display: flex;
  8052. flex-direction: row;
  8053. align-items: center;
  8054. i {
  8055. display: block;
  8056. height: 100%;
  8057. width: 2rem;
  8058. }
  8059. i.ss {
  8060. background: url("../assets/images/leader-icon7.png") no-repeat center;
  8061. }
  8062. i.xj {
  8063. background: url("../assets/images/leader-icon8.png") no-repeat center;
  8064. }
  8065. .c-txt {
  8066. padding-left: 0.5rem;
  8067. p {
  8068. color: #fff;
  8069. font-size: 0.6rem;
  8070. }
  8071. b {
  8072. font-family: "pm";
  8073. color: #fff;
  8074. font-size: 1.25rem;
  8075. }
  8076. }
  8077. }
  8078. }
  8079. .cont-com {
  8080. display: flex;
  8081. flex-direction: column;
  8082. align-items: center;
  8083. .con-txt {
  8084. display: flex;
  8085. flex-direction: row;
  8086. background: url("../assets/images/leader-iconbg11.png") no-repeat center;
  8087. background-size: 100% 100%;
  8088. padding: 0px 0rem;
  8089. width: 100%;
  8090. height: 3.2rem;
  8091. margin-bottom: 0.2rem;
  8092. align-items: center;
  8093. h5 {
  8094. width: 33%;
  8095. height: 100%;
  8096. align-content: center;
  8097. display: flex;
  8098. flex-direction: column;
  8099. justify-content: center;
  8100. color: #fff;
  8101. text-align: center;
  8102. p {
  8103. font-size: 0.6rem;
  8104. /*padding-bottom: 0.1rem;*/
  8105. }
  8106. .jdChart {
  8107. height: 0.5rem;
  8108. width: 100%;
  8109. padding-bottom: 0.1rem;
  8110. }
  8111. b {
  8112. font-family: "pm";
  8113. font-size: 1rem;
  8114. letter-spacing: 1px;
  8115. padding-bottom: 0.3rem;
  8116. }
  8117. h6 {
  8118. padding-top: 0.4rem;
  8119. font-size: 0.6rem;
  8120. }
  8121. }
  8122. h5:nth-child(1),
  8123. h5:nth-child(2) {
  8124. background: url("../assets/images/leader-iconx.png") no-repeat right center;
  8125. background-size: 0.1rem;
  8126. }
  8127. /*h5:nth-child(2),*/
  8128. /*h5:nth-child(3) {*/
  8129. /*padding-left: 0.8rem;*/
  8130. /*}*/
  8131. }
  8132. }
  8133. }
  8134. }
  8135. .ssgz {
  8136. display: flex;
  8137. flex-direction: column;
  8138. justify-content: center;
  8139. .conChart1 {
  8140. width: 100%;
  8141. height: 9rem;
  8142. }
  8143. }
  8144. .sstj {
  8145. display: flex;
  8146. flex-direction: column;
  8147. justify-content: center;
  8148. .conChart2 {
  8149. width: 100%;
  8150. height: 9rem;
  8151. }
  8152. }
  8153. .sstj2 {
  8154. display: flex;
  8155. flex-direction: column;
  8156. justify-content: center;
  8157. .conChart3 {
  8158. width: 100%;
  8159. height: 10rem;
  8160. }
  8161. }
  8162. }
  8163. /*底部*/
  8164. .footer {
  8165. width: 100%;
  8166. position: absolute;
  8167. bottom: 0px;
  8168. z-index: 9;
  8169. background: url("../assets/images/leader-btmbg.png") no-repeat bottom center;
  8170. .foot-btn {
  8171. text-align: center;
  8172. display: flex;
  8173. flex-direction: row;
  8174. justify-content: center;
  8175. padding-bottom: 0.6rem;
  8176. a {
  8177. display: flex;
  8178. flex-direction: column;
  8179. margin: 0px 1.5rem;
  8180. transform: scale(1, 1) translateY(0px);
  8181. transition: all 1s;
  8182. span {
  8183. transition: all 0.5s;
  8184. width: 4.5rem;
  8185. height: 4.5rem;
  8186. position: relative;
  8187. justify-content: center;
  8188. display: flex;
  8189. flex-direction: column;
  8190. u {
  8191. background: url("../assets/images/leader-footy.png") no-repeat center;
  8192. position: absolute;
  8193. display: block;
  8194. width: 4.5rem;
  8195. height: 4.5rem;
  8196. animation: circle 6s infinite linear;
  8197. }
  8198. i {
  8199. background: url("../assets/images/leader-footy2.png") no-repeat center;
  8200. position: absolute;
  8201. display: block;
  8202. width: 4.5rem;
  8203. height: 4.5rem;
  8204. animation: circle2 6s infinite linear;
  8205. }
  8206. }
  8207. i {
  8208. text-align: center;
  8209. color: #fff;
  8210. font-size: 1rem;
  8211. font-weight: bold;
  8212. font-style: normal;
  8213. transition: all 0.5s;
  8214. }
  8215. }
  8216. }
  8217. }
  8218. @keyframes circle {
  8219. 0% {
  8220. transform: rotate(0deg);
  8221. opacity: 0.6;
  8222. }
  8223. 100% {
  8224. transform: rotate(-360deg);
  8225. opacity: 1;
  8226. }
  8227. }
  8228. @keyframes circle2 {
  8229. 0% {
  8230. transform: rotate(0deg);
  8231. opacity: 0.6;
  8232. }
  8233. 100% {
  8234. transform: rotate(360deg);
  8235. opacity: 1;
  8236. }
  8237. }
  8238. .foot-btn a:hover {
  8239. transform: scale(1.1, 1.1) translateY(-10px);
  8240. transition: all 0.5s;
  8241. }
  8242. .foot-btn a:hover span {
  8243. cursor: pointer;
  8244. animation: cccbt 2s infinite;
  8245. }
  8246. .foot-btn a:hover i {
  8247. text-shadow: 0px 0px 6px #90e9ff;
  8248. animation: shinetext2 1s infinite;
  8249. }
  8250. .foot-btn a.on {
  8251. transform: scale(1.1, 1.1) translateY(-10px);
  8252. transition: all 0.5s;
  8253. box-shadow: none;
  8254. }
  8255. .foot-btn a.on span {
  8256. cursor: pointer;
  8257. animation: cccbt 2s infinite;
  8258. }
  8259. .foot-btn a.on i {
  8260. text-shadow: 0px 0px 6px #90e9ff;
  8261. animation: shinetext2 1s infinite;
  8262. }
  8263. /*图片闪光*/
  8264. @keyframes cccbt {
  8265. 0% {
  8266. -webkit-filter: hue-rotate(0deg) brightness(1);
  8267. }
  8268. 25% {
  8269. -webkit-filter: hue-rotate(0deg) brightness(1.1);
  8270. }
  8271. 50% {
  8272. -webkit-filter: hue-rotate(0deg) brightness(1);
  8273. }
  8274. 75% {
  8275. -webkit-filter: hue-rotate(0deg) brightness(1.3);
  8276. }
  8277. 100% {
  8278. -webkit-filter: hue-rotate(0deg) brightness(1);
  8279. }
  8280. }
  8281. @keyframes cccbt2 {
  8282. 0% {
  8283. -webkit-filter: hue-rotate(0deg) brightness(1);
  8284. }
  8285. 25% {
  8286. -webkit-filter: hue-rotate(0deg) brightness(1.1);
  8287. }
  8288. 50% {
  8289. -webkit-filter: hue-rotate(0deg) brightness(2);
  8290. }
  8291. 75% {
  8292. -webkit-filter: hue-rotate(0deg) brightness(1.3);
  8293. }
  8294. 100% {
  8295. -webkit-filter: hue-rotate(0deg) brightness(1);
  8296. }
  8297. }
  8298. /*文字闪光*/
  8299. @keyframes shinetext2 {
  8300. 0% {
  8301. text-shadow: 0 0 0px #1aa7ff;
  8302. }
  8303. 50% {
  8304. text-shadow: 0 0 10px #90d3ff;
  8305. }
  8306. 100% {
  8307. text-shadow: 0 0 0px #1aa7ff;
  8308. }
  8309. }
  8310. /*重点工程轮播*/
  8311. /* 图片容器样式 */
  8312. .SwiperBox {
  8313. position: relative;
  8314. width: 100%;
  8315. height: 13rem;
  8316. box-sizing: border-box;
  8317. cursor: pointer;
  8318. overflow: hidden;
  8319. }
  8320. .imgBox {
  8321. position: absolute;
  8322. top: 0px;
  8323. left: 0px;
  8324. display: flex;
  8325. height: 13rem;
  8326. width: 100%;
  8327. justify-content: flex-start;
  8328. }
  8329. /* 图片默认样式 */
  8330. .imgBox img {
  8331. position: absolute;
  8332. top: 4rem;
  8333. left: 50%;
  8334. transform: translateX(-50%);
  8335. }
  8336. .imgBox span {
  8337. position: absolute;
  8338. display: block;
  8339. padding: 0.5rem 1rem 0.5rem 1rem;
  8340. color: #fff;
  8341. font-size: 0.6rem;
  8342. /*font-weight: 900;*/
  8343. background-size: 100% 100%;
  8344. cursor: pointer;
  8345. width: 40%;
  8346. }
  8347. .imgBox span:hover {
  8348. color: #00f6ff;
  8349. }
  8350. .imgBox span:nth-child(1) {
  8351. background: url("../assets/images/leader-iconbg6.png") no-repeat bottom center;
  8352. background-size: 100% 100%;
  8353. top: 2rem;
  8354. left: 1.9rem;
  8355. }
  8356. .imgBox span:nth-child(2) {
  8357. background: url("../assets/images/leader-iconbg7.png") no-repeat bottom center;
  8358. background-size: 100% 100%;
  8359. top: 2rem;
  8360. right: 1.9rem;
  8361. }
  8362. // .imgBox span:nth-child(3) {
  8363. // background: url("../assets/images/leader-iconbg6.png") no-repeat bottom center;
  8364. // background-size: 100% 100%;
  8365. // top: 8.5rem;
  8366. // left: 2rem;
  8367. // }
  8368. // .imgBox span:nth-child(4) {
  8369. // background: url("../assets/images/leader-iconbg7.png") no-repeat bottom center;
  8370. // background-size: 100% 100%;
  8371. // top: 8.5rem;
  8372. // right: 2rem;
  8373. // }
  8374. .imgBox span:nth-child(3) {
  8375. background: url("../assets/images/leader-iconbg6.png") no-repeat bottom center;
  8376. background-size: 100% 100%;
  8377. top: 5.2rem;
  8378. left: 1.5rem;
  8379. }
  8380. .imgBox span:nth-child(4) {
  8381. background: url("../assets/images/leader-iconbg7.png") no-repeat bottom center;
  8382. background-size: 100% 100%;
  8383. top: 5.2rem;
  8384. right: 1.5rem;
  8385. }
  8386. .imgBox span:nth-child(5) {
  8387. background: url("../assets/images/leader-iconbg6.png") no-repeat bottom center;
  8388. background-size: 100% 100%;
  8389. top: 8.5rem;
  8390. left: 2rem;
  8391. }
  8392. .imgBox span:nth-child(6) {
  8393. background: url("../assets/images/leader-iconbg7.png") no-repeat bottom center;
  8394. background-size: 100% 100%;
  8395. top: 8.5rem;
  8396. right: 2rem;
  8397. }
  8398. /* 两个按钮共有的样式,也可直接使用箭头图片替代 */
  8399. .leftBtn,
  8400. .rightBtn {
  8401. position: absolute;
  8402. top: 50%;
  8403. transform: translateY(-50%);
  8404. width: 30px;
  8405. height: 30px;
  8406. display: flex;
  8407. justify-content: center;
  8408. align-items: center;
  8409. /*background: rgba(109, 109, 109, 0.445);*/
  8410. color: #fff;
  8411. border-radius: 50%;
  8412. cursor: pointer;
  8413. font-size: 12px;
  8414. font-weight: 500;
  8415. img {
  8416. width: 0.6rem;
  8417. display: block;
  8418. opacity: 0.9;
  8419. }
  8420. }
  8421. .leftBtn {
  8422. left: -0.2rem;
  8423. }
  8424. .rightBtn {
  8425. right: -0.2rem;
  8426. }
  8427. /* 下方指示器盒子 */
  8428. .instBox {
  8429. position: absolute;
  8430. left: 50%;
  8431. transform: translateX(-50%);
  8432. bottom: 10px;
  8433. display: flex;
  8434. }
  8435. /* 小圆点 */
  8436. .inst {
  8437. width: 6px;
  8438. height: 6px;
  8439. border: 1px solid #ccc;
  8440. margin-right: 8px;
  8441. background: #fff;
  8442. border-radius: 50%;
  8443. cursor: pointer;
  8444. }
  8445. .inst:last-child {
  8446. margin-right: 0px;
  8447. }
  8448. .instActv {
  8449. border: 1px solid #1bdbf4;
  8450. background: #1bdbf4;
  8451. }
  8452. /* 实时关注 弹框样式 */
  8453. #leader-tkbg {
  8454. position: fixed;
  8455. top: 10%;
  8456. left: 20.5%;
  8457. width: calc(100% - 49rem);
  8458. height: auto;
  8459. padding: 2rem;
  8460. z-index: 999;
  8461. background: #021636;
  8462. border: 1px solid #00ffde;
  8463. /*box-shadow: inset 0px 0px 16px 0px rgba(0, 255, 222, .5);*/
  8464. }
  8465. .tk-tit {
  8466. padding-left: 2rem;
  8467. background: url("../assets/images/leader-tit1.png") no-repeat left center;
  8468. font-size: 0.9rem;
  8469. color: #fff;
  8470. font-weight: 900;
  8471. }
  8472. .tk-top {
  8473. display: flex;
  8474. flex-direction: row;
  8475. justify-content: space-between;
  8476. padding: 1rem 2rem;
  8477. align-items: center;
  8478. p {
  8479. background: url("../assets/images/leader-tk1.png") no-repeat bottom center;
  8480. color: #fff;
  8481. font-size: 0.9rem;
  8482. height: 2rem;
  8483. width: 50%;
  8484. text-align: center;
  8485. img {
  8486. margin-right: 0.2rem;
  8487. }
  8488. u {
  8489. padding-left: 0.8rem;
  8490. text-decoration: none;
  8491. }
  8492. }
  8493. }
  8494. .tk-close {
  8495. width: 1.3rem;
  8496. height: 1.3rem;
  8497. color: #346ebc;
  8498. font-size: 1.3rem;
  8499. position: absolute;
  8500. right: 0.8rem;
  8501. top: 0.8rem;
  8502. cursor: pointer;
  8503. }
  8504. .ssgz-tk {
  8505. position: relative;
  8506. display: flex;
  8507. flex-direction: column;
  8508. .ssgz-tkcom {
  8509. display: flex;
  8510. flex-direction: row;
  8511. .ssgz-row {
  8512. width: 40%;
  8513. }
  8514. .ssgz-row2 {
  8515. width: 60%;
  8516. .tk-tit {
  8517. padding-left: 2rem;
  8518. background: url("../assets/images/leader-tit1.png") no-repeat left center;
  8519. font-size: 1rem;
  8520. color: #fff;
  8521. font-weight: 900;
  8522. }
  8523. }
  8524. }
  8525. }
  8526. .ssgz-tk::after {
  8527. content: "";
  8528. position: absolute;
  8529. left: -72px;
  8530. top: -24px;
  8531. width: 0;
  8532. height: 0;
  8533. border-top: 20px solid transparent;
  8534. border-right: 20px solid #021636;
  8535. border-left: 20px solid transparent;
  8536. border-bottom: 20px solid transparent;
  8537. /*box-shadow: inset 0px 0px 16px 0px rgba(0, 255, 222, .5);*/
  8538. }
  8539. .ssgz-tk::before {
  8540. content: "";
  8541. position: absolute;
  8542. left: -75px;
  8543. top: -25px;
  8544. width: 0;
  8545. height: 0;
  8546. border-top: 21px solid transparent;
  8547. border-right: 21px solid #00ffde;
  8548. border-left: 21px solid transparent;
  8549. border-bottom: 21px solid transparent;
  8550. }
  8551. /* 事件统计弹框样式 */
  8552. #leader-tkbg3 {
  8553. position: fixed;
  8554. top: 38.3%;
  8555. left: 20.5%;
  8556. width: calc(100% - 49rem);
  8557. height: auto;
  8558. padding: 1rem 2rem;
  8559. z-index: 999;
  8560. background: #021636;
  8561. border: 1px solid #00ffde;
  8562. /*box-shadow: inset 0px 0px 16px 0px rgba(0, 255, 222, .5);*/
  8563. }
  8564. .sstj-row {
  8565. position: relative;
  8566. display: flex;
  8567. flex-direction: row;
  8568. justify-content: center;
  8569. }
  8570. .sjtj-tk::after {
  8571. content: "";
  8572. position: absolute;
  8573. left: -40px;
  8574. top: 5px;
  8575. width: 0;
  8576. height: 0;
  8577. border-top: 20px solid transparent;
  8578. border-right: 20px solid #021636;
  8579. border-left: 20px solid transparent;
  8580. border-bottom: 20px solid transparent;
  8581. /*box-shadow: inset 0px 0px 16px 0px rgba(0, 255, 222, .5);*/
  8582. }
  8583. .sjtj-tk::before {
  8584. content: "";
  8585. position: absolute;
  8586. left: -43px;
  8587. top: 4px;
  8588. width: 0;
  8589. height: 0;
  8590. border-top: 21px solid transparent;
  8591. border-right: 21px solid #00ffde;
  8592. border-left: 21px solid transparent;
  8593. border-bottom: 21px solid transparent;
  8594. }
  8595. /* 一网通办弹框样式 */
  8596. #leader-tbbg4 {
  8597. position: fixed;
  8598. top: 66.4%;
  8599. left: 20.5%;
  8600. width: calc(100% - 49rem);
  8601. height: auto;
  8602. padding: 1rem 2rem;
  8603. z-index: 999;
  8604. background: #021636;
  8605. border: 1px solid #00ffde;
  8606. /*box-shadow: inset 0px 0px 16px 0px rgba(0, 255, 222, .5);*/
  8607. }
  8608. .tbtj-row {
  8609. position: relative;
  8610. display: flex;
  8611. flex-direction: row;
  8612. justify-content: center;
  8613. }
  8614. .tbtj-tk::after {
  8615. content: "";
  8616. position: absolute;
  8617. left: -40px;
  8618. top: 5px;
  8619. width: 0;
  8620. height: 0;
  8621. border-top: 20px solid transparent;
  8622. border-right: 20px solid #021636;
  8623. border-left: 20px solid transparent;
  8624. border-bottom: 20px solid transparent;
  8625. /*box-shadow: inset 0px 0px 16px 0px rgba(0, 255, 222, .5);*/
  8626. }
  8627. .tbtj-tk::before {
  8628. content: "";
  8629. position: absolute;
  8630. left: -43px;
  8631. top: 4px;
  8632. width: 0;
  8633. height: 0;
  8634. border-top: 21px solid transparent;
  8635. border-right: 21px solid #00ffde;
  8636. border-left: 21px solid transparent;
  8637. border-bottom: 21px solid transparent;
  8638. }
  8639. .tbtj-div1 {
  8640. width: 25rem;
  8641. display: flex;
  8642. flex-direction: column;
  8643. }
  8644. .tbtj-div2 {
  8645. width: 40rem;
  8646. display: flex;
  8647. flex-direction: column;
  8648. }
  8649. /* 四长统计弹框样式 */
  8650. #leader-tkbg2 {
  8651. position: fixed;
  8652. top: 10%;
  8653. left: 20.5%;
  8654. width: calc(100% - 49rem);
  8655. height: auto;
  8656. padding: 1rem 2rem;
  8657. z-index: 999;
  8658. background: #021636;
  8659. border: 1px solid #00ffde;
  8660. /*box-shadow: inset 0px 0px 16px 0px rgba(0, 255, 222, .5);*/
  8661. }
  8662. .sztj-row {
  8663. position: relative;
  8664. display: flex;
  8665. flex-wrap: wrap;
  8666. justify-content: space-between;
  8667. }
  8668. .sztj-tk {
  8669. position: relative;
  8670. }
  8671. .sztj-tk::after {
  8672. content: "";
  8673. position: absolute;
  8674. right: -72px;
  8675. top: 34%;
  8676. width: 0;
  8677. height: 0;
  8678. border-top: 20px solid transparent;
  8679. border-left: 20px solid #021636;
  8680. border-right: 20px solid transparent;
  8681. border-bottom: 20px solid transparent;
  8682. }
  8683. .sztj-tk::before {
  8684. content: "";
  8685. position: absolute;
  8686. right: -75px;
  8687. top: 34%;
  8688. width: 0;
  8689. height: 0;
  8690. border-bottom: 21px solid transparent;
  8691. border-left: 21px solid #00ffde;
  8692. border-right: 21px solid transparent;
  8693. border-top: 21px solid transparent;
  8694. }
  8695. .sztj-div1 {
  8696. width: 23rem;
  8697. height: 27rem;
  8698. .el-tabs__header {
  8699. margin-bottom: 0 !important;
  8700. }
  8701. .el-tabs__item.is-active {
  8702. background: url("../assets/images/leader-iconbg8-on.png") no-repeat center !important;
  8703. background-size: 100% 100% !important;
  8704. font-weight: bold;
  8705. color: #fff !important;
  8706. }
  8707. //如果不需要超过4个横向滚动,用此样式
  8708. .el-tabs__nav {
  8709. width: 100%;
  8710. }
  8711. .el-tabs__item {
  8712. // cursor: pointer;
  8713. // padding:0 .9rem !important;
  8714. padding: 0 !important;
  8715. width: 25%;
  8716. text-align: center;
  8717. // display: block;
  8718. background: url("../assets/images/leader-iconbg8.png") no-repeat center !important;
  8719. background-size: 100% 100% !important;
  8720. color: #ffffff !important;
  8721. font-size: 0.8rem;
  8722. height: 2rem;
  8723. line-height: 2rem;
  8724. }
  8725. // 如果需要超过4个横向滚动,用此样式
  8726. // .el-tabs__item{
  8727. // // cursor: pointer;
  8728. // padding:0 .9rem !important;
  8729. // text-align: center;
  8730. // // display: block;
  8731. // background: url("../assets/images/leader-iconbg8.png") no-repeat center !important;
  8732. // background-size: 100% 100% !important;
  8733. // color:#ffffff !important;
  8734. // }
  8735. .el-tabs__nav-wrap::after {
  8736. display: none;
  8737. }
  8738. .el-tabs__active-bar {
  8739. display: none;
  8740. }
  8741. .sztj-1-con {
  8742. width: 100%;
  8743. height: 16rem;
  8744. margin-top: 1rem;
  8745. overflow-y: scroll;
  8746. display: flex;
  8747. flex-direction: column;
  8748. }
  8749. .el-tree {
  8750. color: #fff;
  8751. .el-tree-node__content:hover {
  8752. background-color: #123d7e !important;
  8753. }
  8754. .el-tree-node.is-current>.el-tree-node__content {
  8755. background-color: #123d7e !important;
  8756. }
  8757. .el-tree-node:focus>.el-tree-node__content {
  8758. background-color: #123d7e !important;
  8759. }
  8760. .el-tree-node__content:hover {
  8761. background-color: #123d7e !important;
  8762. }
  8763. }
  8764. }
  8765. /* 重点工程弹框样式 */
  8766. #leader-tbbg5 {
  8767. position: fixed;
  8768. top: 10%;
  8769. right: 20.5%;
  8770. width: calc(100% - 49rem);
  8771. height: auto;
  8772. padding: 1rem 2rem;
  8773. z-index: 999;
  8774. background: #021636;
  8775. border: 1px solid #00ffde;
  8776. /*box-shadow: inset 0px 0px 16px 0px rgba(0, 255, 222, .5);*/
  8777. }
  8778. /* 实时关注 弹框样式 */
  8779. #leader-tkbg6 {
  8780. position: fixed;
  8781. top: 10%;
  8782. left: 20.5%;
  8783. width: calc(100% - 49rem);
  8784. height: auto;
  8785. padding: 2rem;
  8786. z-index: 999;
  8787. background: #021636;
  8788. border: 1px solid #00ffde;
  8789. /*box-shadow: inset 0px 0px 16px 0px rgba(0, 255, 222, .5);*/
  8790. }
  8791. /* 重点区域 弹框样式 */
  8792. #leader-tkbg7 {
  8793. position: fixed;
  8794. top: 50%;
  8795. left: 20.5%;
  8796. width: calc(100% - 49rem);
  8797. height: auto;
  8798. padding: 2rem;
  8799. z-index: 999;
  8800. background: #021636;
  8801. border: 1px solid #00ffde;
  8802. /*box-shadow: inset 0px 0px 16px 0px rgba(0, 255, 222, .5);*/
  8803. }
  8804. .gctj-row {
  8805. position: relative;
  8806. display: flex;
  8807. flex-direction: row;
  8808. justify-content: space-between;
  8809. }
  8810. .gctj-tk {
  8811. position: relative;
  8812. }
  8813. .gctj-tk::after {
  8814. content: "";
  8815. position: absolute;
  8816. right: -72px;
  8817. top: -24px;
  8818. width: 0;
  8819. height: 0;
  8820. border-top: 20px solid transparent;
  8821. border-left: 20px solid #021636;
  8822. border-right: 20px solid transparent;
  8823. border-bottom: 20px solid transparent;
  8824. }
  8825. .gctj-tk::before {
  8826. content: "";
  8827. position: absolute;
  8828. right: -75px;
  8829. top: -24px;
  8830. width: 0;
  8831. height: 0;
  8832. border-bottom: 21px solid transparent;
  8833. border-left: 21px solid #00ffde;
  8834. border-right: 21px solid transparent;
  8835. border-top: 21px solid transparent;
  8836. }
  8837. .zdqy-tk {
  8838. position: relative;
  8839. }
  8840. .zdqy-tk::after {
  8841. content: "";
  8842. position: absolute;
  8843. right: -72px;
  8844. top: 123px;
  8845. width: 0;
  8846. height: 0;
  8847. border-top: 20px solid transparent;
  8848. border-left: 20px solid #021636;
  8849. border-right: 20px solid transparent;
  8850. border-bottom: 20px solid transparent;
  8851. }
  8852. .zdqy-tk::before {
  8853. content: "";
  8854. position: absolute;
  8855. right: -75px;
  8856. top: 123px;
  8857. width: 0;
  8858. height: 0;
  8859. border-bottom: 21px solid transparent;
  8860. border-left: 21px solid #00ffde;
  8861. border-right: 21px solid transparent;
  8862. border-top: 21px solid transparent;
  8863. }
  8864. .no-icon::after {
  8865. content: "";
  8866. border-top: none !important;
  8867. border-left: none !important;
  8868. border-right: none !important;
  8869. border-bottom: none !important;
  8870. }
  8871. .no-icon::before {
  8872. content: "";
  8873. border-bottom: none !important;
  8874. border-left: none !important;
  8875. border-right: none !important;
  8876. border-top: none !important;
  8877. }
  8878. .gctj-div1 {
  8879. width: 26.5rem;
  8880. height: 19rem;
  8881. .tk-tit {
  8882. margin-bottom: 1rem;
  8883. }
  8884. img {
  8885. display: block;
  8886. width: 100%;
  8887. height: 100%;
  8888. }
  8889. }
  8890. .gctj-div2 {
  8891. width: 39rem;
  8892. height: 19rem;
  8893. text-align: left;
  8894. padding-top: 2.5rem;
  8895. h5 {
  8896. color: #fff;
  8897. font-size: 0.9rem;
  8898. font-weight: bold;
  8899. padding-bottom: 0.5rem;
  8900. }
  8901. p {
  8902. color: #fff;
  8903. font-size: 0.6rem;
  8904. line-height: 1.2rem;
  8905. margin-bottom: 0.2rem;
  8906. text-indent: 1.8rem;
  8907. }
  8908. }
  8909. .sztj-div2 {
  8910. width: 67rem;
  8911. height: 20rem;
  8912. }
  8913. .sztj-div3 {
  8914. width: fit-content;
  8915. height: 27rem;
  8916. }
  8917. .pop {
  8918. width: 100%;
  8919. height: 100%;
  8920. z-index: 2;
  8921. }
  8922. bor-on {
  8923. border: 1px solid #00ffde;
  8924. }
  8925. #tkCharts1 {
  8926. width: 25rem;
  8927. height: 21.5rem;
  8928. }
  8929. #tkCharts2 {
  8930. width: 40rem;
  8931. height: 17.4rem;
  8932. }
  8933. #tkCharts3 {
  8934. width: 25rem;
  8935. height: 20rem;
  8936. }
  8937. #tkCharts4 {
  8938. width: 39rem;
  8939. height: 20rem;
  8940. }
  8941. #sjCharts1 {
  8942. width: 22rem;
  8943. height: 12rem;
  8944. }
  8945. #sjCharts2 {
  8946. width: 45rem;
  8947. height: 12rem;
  8948. }
  8949. #tbCharts1 {
  8950. width: 25rem;
  8951. height: 12rem;
  8952. }
  8953. #tbCharts2 {
  8954. width: 40rem;
  8955. height: 12rem;
  8956. }
  8957. #szCharts1 {
  8958. width: 67rem;
  8959. height: 18rem;
  8960. }
  8961. #szCharts2 {
  8962. width: 20rem;
  8963. height: 22rem;
  8964. }
  8965. #szCharts3 {
  8966. width: 20rem;
  8967. height: 20rem;
  8968. }
  8969. /*机器人*/
  8970. .leader-ai {
  8971. position: fixed;
  8972. bottom: 2rem;
  8973. right: 25%;
  8974. z-index: 10;
  8975. }
  8976. .sj-layer-switch {
  8977. position: fixed;
  8978. bottom: 4rem;
  8979. display: flex;
  8980. left: 21%;
  8981. z-index: 10;
  8982. }
  8983. /*图层切换*/
  8984. .leader-tcqh {
  8985. width: fit-content;
  8986. height: fit-content;
  8987. text-align: center;
  8988. color: #fff !important;
  8989. font-size: 0.6rem;
  8990. margin-right: 1rem;
  8991. display: flex;
  8992. flex-direction: column;
  8993. img {
  8994. margin-bottom: 3px;
  8995. }
  8996. }
  8997. .leader-tcqh:hover {
  8998. color: #fff !important;
  8999. }
  9000. //地图
  9001. .map {
  9002. position: absolute;
  9003. top: 0px;
  9004. left: 0px;
  9005. width: 100%;
  9006. height: 100%;
  9007. // z-index: 1;
  9008. }
  9009. //重点区域
  9010. .zdqy {
  9011. .el-tabs__header {
  9012. margin-bottom: 0 !important;
  9013. }
  9014. .el-tabs__item.is-active {
  9015. background: url("../assets/images/leader-iconbg8-on.png") no-repeat center !important;
  9016. background-size: 100% 100% !important;
  9017. font-weight: bold;
  9018. color: #fff !important;
  9019. }
  9020. //如果不需要超过4个横向滚动,用此样式
  9021. .el-tabs__nav {
  9022. width: auto;
  9023. }
  9024. .el-tabs__item {
  9025. // cursor: pointer;
  9026. // padding:0 .9rem !important;
  9027. padding: 0 !important;
  9028. /*width: 25%;*/
  9029. width: 100px;
  9030. text-align: center;
  9031. // display: block;
  9032. background: url("../assets/images/leader-iconbg8.png") no-repeat center !important;
  9033. background-size: 100% 100% !important;
  9034. color: #ffffff !important;
  9035. font-size: 0.8rem;
  9036. height: 2rem;
  9037. line-height: 2rem;
  9038. }
  9039. // 如果需要超过4个横向滚动,用此样式
  9040. // .el-tabs__item{
  9041. // // cursor: pointer;
  9042. // padding:0 .9rem !important;
  9043. // text-align: center;
  9044. // // display: block;
  9045. // background: url("../assets/images/leader-iconbg8.png") no-repeat center !important;
  9046. // background-size: 100% 100% !important;
  9047. // color:#ffffff !important;
  9048. // }
  9049. .el-tabs__nav-wrap::after {
  9050. display: none;
  9051. }
  9052. .el-tabs__active-bar {
  9053. display: none;
  9054. }
  9055. }
  9056. /*事件统计 弹框日期样式*/
  9057. #leader-tkbg3 .el-date-editor.el-input__inner {
  9058. width: 720px !important;
  9059. background: rgb(2 22 54);
  9060. border: 1px solid #0155a3;
  9061. }
  9062. .sj-data-picker-input {
  9063. .el-range-input {
  9064. font-size: 14px;
  9065. background: #061d42;
  9066. color: #fff;
  9067. width: 45%;
  9068. }
  9069. .el-range__close-icon {
  9070. width: 0px;
  9071. }
  9072. .el-range-separator {
  9073. color: #fff;
  9074. }
  9075. .el-range__icon {
  9076. line-height: 24px;
  9077. color: #fff;
  9078. font-size: 16px;
  9079. }
  9080. }
  9081. .sj-data-picker {
  9082. width: 720px !important;
  9083. background: #021636;
  9084. color: #fff !important;
  9085. border: 1px solid #0155a3;
  9086. .el-picker-panel {
  9087. color: #fff !important;
  9088. border: 1px solid #0155a3;
  9089. background: #021636;
  9090. }
  9091. .popper__arrow::after {
  9092. top: 0px !important;
  9093. border-bottom-color: #17386e !important;
  9094. }
  9095. .el-input__inner {
  9096. background-color: #061d42;
  9097. border: 1px solid #17386e;
  9098. color: #ffffff;
  9099. }
  9100. .el-date-range-picker__time-header {
  9101. border-bottom: 1px solid #17386e;
  9102. }
  9103. .el-date-range-picker__content.is-left {
  9104. border-right: 1px solid #17386e;
  9105. }
  9106. .el-icon-arrow-right {
  9107. color: #ffffff;
  9108. }
  9109. .el-input.is-disabled .el-input__inner {
  9110. background-color: #061d42;
  9111. border: 1px solid #17386e;
  9112. color: #ffffff;
  9113. }
  9114. .el-picker-panel__icon-btn {
  9115. color: #fff;
  9116. }
  9117. .el-date-table th {
  9118. color: #ffffff;
  9119. border-bottom: solid 1px #17386e;
  9120. }
  9121. .el-date-table td.in-range div {
  9122. background-color: #143260;
  9123. }
  9124. .el-picker-panel__footer {
  9125. border-top: 1px solid #17386e;
  9126. background-color: #021636;
  9127. }
  9128. .el-button.is-plain {
  9129. background: #143260;
  9130. border: 1px solid #2d4791;
  9131. color: #4890fb;
  9132. }
  9133. .el-time-panel {
  9134. border: solid 1px #17386e;
  9135. background-color: #072554;
  9136. }
  9137. .el-time-spinner__item {
  9138. color: #fff;
  9139. }
  9140. .el-time-spinner__item:hover:not(.disabled):not(.active) {
  9141. background: #10408b;
  9142. }
  9143. .el-time-panel__content::after,
  9144. .el-time-panel__content::before {
  9145. border-top: 1px solid #113474;
  9146. border-bottom: 1px solid #113474;
  9147. }
  9148. .el-time-spinner__item.active:not(.disabled) {
  9149. color: #57ceff;
  9150. font-weight: bold;
  9151. }
  9152. .el-time-panel__btn.cancel {
  9153. color: #f7f7f7;
  9154. }
  9155. .el-time-panel__footer {
  9156. border-top: 1px solid #17386e;
  9157. }
  9158. }
  9159. /*时间日历*/
  9160. .el-picker-panel {
  9161. border: 1px solid #1d6895;
  9162. background: #082242;
  9163. color: #fff;
  9164. .el-popper[x-placement^=bottom] .popper__arrow::after {
  9165. border-bottom-color: #082242;
  9166. }
  9167. .el-popper[x-placement^=bottom] .popper__arrow {
  9168. border-bottom-color: #1d6895;
  9169. }
  9170. .el-date-picker__header-label {
  9171. color: #ffffff;
  9172. }
  9173. .el-picker-panel__icon-btn {
  9174. color: #ffffff;
  9175. }
  9176. .el-date-table th {
  9177. color: #ffffff;
  9178. border-bottom: solid 1px #98a9cb;
  9179. }
  9180. .el-picker-panel {
  9181. color: #ffffff;
  9182. }
  9183. .el-date-table td.next-month,
  9184. .el-date-table td.prev-month {
  9185. color: #878d9b;
  9186. }
  9187. }
  9188. .sj-container .el-input__inner {
  9189. color: #2d8fed !important;
  9190. border: solid 1px #2665a1 !important;
  9191. }
  9192. .el-tabs__nav-next,
  9193. .el-tabs__nav-prev {
  9194. line-height: 30px;
  9195. }
  9196. </style>