eventdetailsdialog.vue 161 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545
  1. <template>
  2. <div class="visual-con">
  3. <!--主体-->
  4. <div class="visual-body">
  5. <button
  6. @click="showEventDialog"
  7. style="
  8. position: absolute;
  9. left: 50%;
  10. top: 50vh;
  11. transform: translateX(-50%);
  12. "
  13. ></button>
  14. <!-- 弹层 -->
  15. <el-dialog
  16. title="事件详情"
  17. :visible.sync="eventDialog"
  18. customClass="customWidth"
  19. v-if="eventDialog"
  20. @close="cancelEventShow()"
  21. >
  22. <div class="dia-event-info">
  23. <el-row>
  24. <!-- 左侧 -->
  25. <el-col :span="18" class="dia-left">
  26. <div class="sj-map-tool-select">
  27. <transition-group
  28. appear
  29. name="animate__animated animate__bounce"
  30. enter-active-class="animate__lightSpeedInRight"
  31. leave-active-class="animate__backOutRight"
  32. >
  33. <div
  34. class="sj-map-tool-select-list"
  35. v-show="mapToolShow"
  36. id="eventMapToolOnly"
  37. key="1"
  38. >
  39. <el-checkbox
  40. v-model="mapToolCheckAll"
  41. @change="mapToolCheckAllChange"
  42. class="sj-map-tool-checkbox-all"
  43. >全选</el-checkbox
  44. >
  45. <el-checkbox-group
  46. v-model="mapToolCheckItem"
  47. @change="mapToolCheckChange"
  48. class="sj-map-tool-checkbox"
  49. >
  50. <el-checkbox
  51. v-for="tools in mapToolCheck"
  52. :label="tools"
  53. :key="tools"
  54. >{{ tools }}</el-checkbox
  55. >
  56. </el-checkbox-group>
  57. </div>
  58. </transition-group>
  59. <el-button
  60. size="small"
  61. icon="el-icon-s-grid"
  62. id="eventMapToolOnlyButton"
  63. @click="mapToolShow = !mapToolShow"
  64. >地图功能</el-button
  65. >
  66. </div>
  67. <div ref="imageTofile" style="height: 75vh">
  68. <!-- 应急预案 -->
  69. <transition-group
  70. appear
  71. name="animate__animated animate__bounce"
  72. enter-active-class="animate__backInDown"
  73. leave-active-class="animate__backOutUp"
  74. >
  75. <div
  76. class="dia-left-top"
  77. v-show="mapToolCheckItem.includes('应急预案')"
  78. key="yingji"
  79. >
  80. <div class="dia-left-top-tit">应急预案</div>
  81. <div class="dia-left-top-carousel">
  82. <el-carousel
  83. height="30px"
  84. direction="vertical"
  85. :interval="2000"
  86. >
  87. <el-carousel-item v-if="visuForestCloudYuAnBo != null">
  88. <!-- <el-tooltip class="item" effect="dark" :content="visuForestCloudYuAnBo.reserveName" placement="top-start">
  89. <a :href="visuForestCloudYuAnBo.fileUrl" ><span><div style=" width: 50px;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;word-break: keep-all;">{{ visuForestCloudYuAnBo.reserveName }}</div></span></a>
  90. </el-tooltip> -->
  91. <el-tooltip
  92. placement="top"
  93. popper-class="js-tps"
  94. :visible-arrow="
  95. visuForestCloudYuAnBo.reserveName.length > 6
  96. "
  97. >
  98. <div slot="content" class="leader-info-container">
  99. <div
  100. class="leader-info-list-con"
  101. v-show="
  102. visuForestCloudYuAnBo.reserveName.length > 6
  103. "
  104. >
  105. <h4>{{ visuForestCloudYuAnBo.reserveName }}</h4>
  106. </div>
  107. </div>
  108. <a :href="visuForestCloudYuAnBo.fileUrl">{{
  109. visuForestCloudYuAnBo.reserveName | ellipsisFont6
  110. }}</a>
  111. </el-tooltip>
  112. </el-carousel-item>
  113. <el-carousel-item v-else>
  114. <a href="#">暂未关联预案</a>
  115. </el-carousel-item>
  116. </el-carousel>
  117. </div>
  118. <el-button
  119. size="mini"
  120. type="primary"
  121. class="yatz_button"
  122. @click="showUpdateYjYuAn"
  123. >预案调整
  124. </el-button>
  125. </div>
  126. </transition-group>
  127. <!-- 应急预案end -->
  128. <!-- 左侧资源 -->
  129. <transition-group
  130. appear
  131. name="animate__animated animate__bounce"
  132. enter-active-class="animate__backInUp"
  133. leave-active-class="animate__backOutDown"
  134. >
  135. <div
  136. v-show="mapToolCheckItem.includes('资源与操作')"
  137. key="mapToolziyuan"
  138. class="leftbar"
  139. style="
  140. width: fit-content !important;
  141. bottom: 0rem;
  142. left: 1rem;
  143. top: unset;
  144. "
  145. >
  146. <div class="forthis" style="width: 1320px; display: flex">
  147. <dv-border-box-7
  148. backgroundColor="#040b1f"
  149. :color="['#25335d', '#5baffd']"
  150. >
  151. <div
  152. class="i-list-con"
  153. style="
  154. width: 100%;
  155. display: flex;
  156. align-items: center;
  157. justify-content: space-between;
  158. "
  159. >
  160. <div
  161. class="d-l-con-icon"
  162. style="
  163. width: fit-content;
  164. flex-direction: row;
  165. flex-wrap: nowrap;
  166. "
  167. ref="thisWidthWH"
  168. >
  169. <leftRightSwiperScroll v-if="mapToolCheckItem.includes('资源与操作')">
  170. <div
  171. class="icon-con"
  172. style="width: fit-content !important"
  173. v-for="(item, index) in resourcesList"
  174. @click="fireControlViewPoint(item.type)"
  175. :key="index"
  176. >
  177. <div
  178. class="iconfont icon icon-normal"
  179. :class="item.icon"
  180. :style="'background:' + item.bg"
  181. ></div>
  182. <div class="icon-text">
  183. <h5 style="white-space: nowrap">
  184. {{ item.resourceName }}
  185. </h5>
  186. </div>
  187. </div>
  188. </leftRightSwiperScroll>
  189. </div>
  190. <el-input
  191. type="number"
  192. v-model="radius"
  193. class="d-input-bottom"
  194. placeholder="请输入搜索半径"
  195. />
  196. </div>
  197. </dv-border-box-7>
  198. </div>
  199. </div>
  200. <!-- 左侧资源end -->
  201. <!-- 底部工具栏 -->
  202. <!-- <div class="dia-left-btm-tool">
  203. </div> -->
  204. <!-- 底部工具栏end -->
  205. <div
  206. class="fire-m"
  207. style="bottom: 5rem"
  208. v-show="mapToolCheckItem.includes('资源与操作')"
  209. key="ziyuan"
  210. >
  211. <el-button
  212. size="small"
  213. icon="el-icon-s-grid"
  214. @click="showTVWallDiaLog()"
  215. v-show="eventType == 1"
  216. >视频联动</el-button
  217. >
  218. <el-button
  219. size="small"
  220. icon="el-icon-upload"
  221. @click="showheatPlotting()"
  222. v-show="eventType == 1"
  223. >火灾蔓延
  224. </el-button>
  225. </div>
  226. </transition-group>
  227. <!-- 地图 -->
  228. <supermapDialog
  229. ref="supermapDialog"
  230. style="position: absolute; top: 0; left: 0"
  231. :mapDiv="'forestWarmSuperMap'"
  232. :mapSite="{
  233. doubleClickZoom: false,
  234. dragging: false,
  235. scrollWheelZoom: false,
  236. }"
  237. :codes="['9fa5']"
  238. :isSideBySide="false"
  239. :isdynamicPlotting="true"
  240. @preview="preview"
  241. :mapToolShowBH="mapToolShowBH"
  242. />
  243. <!-- <supermapDialog ref="supermapDialog" -->
  244. <!-- @preview="preview"/> -->
  245. <!-- 地图end -->
  246. </div>
  247. </el-col>
  248. <!-- 左侧end -->
  249. <!-- 右侧 -->
  250. <el-col :span="6" class="dia-right">
  251. <div class="e-right">
  252. <div class="forthis1">
  253. <dv-border-box-7
  254. backgroundColor="#040b1f"
  255. style="padding-bottom: 1rem"
  256. >
  257. <div class="i-list-con">
  258. <div class="this-con">
  259. <div class="z-info-list" style="margin-top: 0">
  260. <el-timeline>
  261. <el-timeline-item
  262. color="#2bacf7"
  263. :timestamp="item.createTime"
  264. placement="top"
  265. v-for="(item, index) in eventLogList"
  266. >
  267. <el-card style="width: 40vh">
  268. <div class="z-info-list-con">
  269. <div class="user-and-time flex-d">
  270. <span>{{ item.createName }}</span>
  271. <span
  272. v-if="
  273. eventLogList.length - 1 == index &&
  274. address != null &&
  275. address != ''
  276. "
  277. ><i class="el-icon-location"></i>
  278. {{ address }}</span
  279. >
  280. <span v-else></span>
  281. </div>
  282. <div class="z-info">
  283. <div class="this-con-list-info">
  284. {{ item.logContent }}
  285. </div>
  286. <div>
  287. <router-link
  288. to="#"
  289. @click.native="
  290. clickFile(
  291. itemfile.fileUrl,
  292. itemfile.fileName,
  293. itemfile.fileType
  294. )
  295. "
  296. v-for="(
  297. itemfile, indexfile
  298. ) in item.fileVOs"
  299. >
  300. <el-image
  301. :src="itemfile.fileUrl"
  302. v-if="itemfile.fileType == 'image'"
  303. :preview-src-list="
  304. assetTypeAnImage(item.fileVOs)
  305. "
  306. style="
  307. width: 3rem;
  308. height: 3rem;
  309. margin: 2px;
  310. "
  311. :title="itemfile.fileName"
  312. >
  313. </el-image>
  314. <img
  315. v-else-if="
  316. itemfile.fileType == 'video'
  317. "
  318. style="
  319. width: 3rem;
  320. height: 3rem;
  321. margin: 2px;
  322. "
  323. :src="
  324. require('@/assets/fileTypeImage/mp4.png')
  325. "
  326. :title="itemfile.fileName"
  327. />
  328. <img
  329. v-else-if="
  330. itemfile.fileType == 'word'
  331. "
  332. style="
  333. width: 3rem;
  334. height: 3rem;
  335. margin: 2px;
  336. "
  337. :src="
  338. require('@/assets/fileTypeImage/word.png')
  339. "
  340. :title="itemfile.fileName"
  341. />
  342. <img
  343. v-else-if="
  344. itemfile.fileType == 'excel'
  345. "
  346. style="
  347. width: 3rem;
  348. height: 3rem;
  349. margin: 2px;
  350. "
  351. :src="
  352. require('@/assets/fileTypeImage/excel.png')
  353. "
  354. :title="itemfile.fileName"
  355. />
  356. <img
  357. v-else
  358. style="
  359. width: 3rem;
  360. height: 3rem;
  361. margin: 2px;
  362. "
  363. :src="
  364. require('@/assets/fileTypeImage/file.png')
  365. "
  366. :title="itemfile.fileName"
  367. />
  368. </router-link>
  369. </div>
  370. </div>
  371. </div>
  372. </el-card>
  373. </el-timeline-item>
  374. </el-timeline>
  375. </div>
  376. </div>
  377. </div>
  378. </dv-border-box-7>
  379. </div>
  380. <div class="forthis2">
  381. <dv-border-box-7 backgroundColor="#040b1f">
  382. <div class="i-list-con">
  383. <div class="this-con h-25 no-padding">
  384. <div class="z-info-list" style="margin-top: 0">
  385. <div class="z-info-btm-grp">
  386. <div class="z-info-btm-grp-top">
  387. <div class="z-info-btm-grp-left">
  388. <el-button
  389. size="small"
  390. icon="el-icon-upload"
  391. @click="showEventLogUpload()"
  392. >上传
  393. </el-button>
  394. <el-button
  395. size="small"
  396. icon="el-icon-download"
  397. @click="toImage()"
  398. >截图上传
  399. </el-button>
  400. <el-button
  401. size="small"
  402. icon="el-icon-download"
  403. @click="showResponsibility()"
  404. v-if="
  405. eventStatusValue !=
  406. 'forest_event_status_1' &&
  407. eventStatusValue != 'forest_event_status_7'
  408. "
  409. >责任制
  410. </el-button>
  411. <el-button
  412. v-if="
  413. eventStatusValue ==
  414. 'forest_event_status_2' &&
  415. statusFlag == '1' &&
  416. dataStatus == '0'
  417. "
  418. size="small"
  419. icon="el-icon-download"
  420. @click="
  421. updateCentereventTEventcatalogueStatus(
  422. 'cz',
  423. true
  424. )
  425. "
  426. >处置
  427. </el-button>
  428. </div>
  429. <div class="z-info-btm-grp-right">
  430. <el-button
  431. size="small"
  432. icon="el-icon-mic"
  433. @click="Meeting()"
  434. >会议
  435. </el-button>
  436. </div>
  437. </div>
  438. <div class="z-info-btm-input">
  439. <el-input
  440. type="textarea"
  441. v-model="eventLog"
  442. :autosize="{ minRows: 7, maxRows: 7 }"
  443. placeholder="请输入反馈信息"
  444. >
  445. </el-input>
  446. <div
  447. class="z-info-btm-input-btn"
  448. v-if="
  449. eventStatusValue == 'forest_event_status_1'
  450. "
  451. >
  452. <div style="text-align: left">
  453. <el-button
  454. size="small"
  455. icon="el-icon-s-flag"
  456. @click="
  457. updateCentereventTEventcatalogueStatus(
  458. 'qr',
  459. true
  460. )
  461. "
  462. >
  463. 确认
  464. </el-button>
  465. <el-button
  466. size="small"
  467. icon="el-icon-question"
  468. @click="
  469. updateCentereventTEventcatalogueStatus(
  470. 'wb',
  471. true
  472. )
  473. "
  474. >
  475. 误报
  476. </el-button>
  477. <el-button
  478. size="small"
  479. icon="el-icon-warning"
  480. @click="
  481. updateCentereventTEventcatalogueStatus(
  482. 'cf',
  483. true
  484. )
  485. "
  486. >
  487. 重复
  488. </el-button>
  489. </div>
  490. <el-button
  491. size="small"
  492. icon="el-icon-chat-dot-square"
  493. @click="sendEventLog()"
  494. >发送
  495. </el-button>
  496. </div>
  497. <div
  498. class="z-info-btm-input-btn"
  499. v-else-if="
  500. eventStatusValue == 'forest_event_status_7'
  501. "
  502. >
  503. <div style="text-align: left">
  504. <el-button
  505. size="small"
  506. icon="el-icon-s-flag"
  507. @click="
  508. updateCentereventTEventcatalogueStatus(
  509. 'qs',
  510. false
  511. )
  512. "
  513. >
  514. 签收
  515. </el-button>
  516. <el-button
  517. size="small"
  518. icon="el-icon-question"
  519. @click="
  520. updateCentereventTEventcatalogueStatus(
  521. 'wb',
  522. false
  523. )
  524. "
  525. >
  526. 误报
  527. </el-button>
  528. <el-button
  529. size="small"
  530. icon="el-icon-warning"
  531. @click="
  532. updateCentereventTEventcatalogueStatus(
  533. 'cf',
  534. false
  535. )
  536. "
  537. >
  538. 重复
  539. </el-button>
  540. </div>
  541. <el-button
  542. size="small"
  543. icon="el-icon-chat-dot-square"
  544. @click="sendEventLog()"
  545. >发送
  546. </el-button>
  547. </div>
  548. <div
  549. class="z-info-btm-input-btn"
  550. v-else-if="
  551. eventStatusValue == 'forest_event_status_2'
  552. "
  553. >
  554. <div>
  555. <!--<el-button size="small"-->
  556. <!--icon="el-icon-question"-->
  557. <!--@click="updateCentereventTEventcatalogueStatus('wb',false)">-->
  558. <!--误报-->
  559. <!--</el-button>-->
  560. <!--<el-button size="small"-->
  561. <!--icon="el-icon-warning"-->
  562. <!--@click="updateCentereventTEventcatalogueStatus('cf',false)">-->
  563. <!--重复-->
  564. <!--</el-button>-->
  565. <el-button
  566. size="small"
  567. icon="el-icon-phone"
  568. style="text-align: left"
  569. @click="
  570. updateCentereventTEventcatalogueStatus(
  571. 'ld',
  572. false
  573. )
  574. "
  575. >
  576. 联动
  577. </el-button>
  578. <el-button
  579. size="small"
  580. v-if="statusFlag == '1'"
  581. icon="el-icon-success"
  582. style="text-align: left"
  583. @click="
  584. updateCentereventTEventcatalogueStatus(
  585. 'bj',
  586. true
  587. )
  588. "
  589. >
  590. 办结
  591. </el-button>
  592. </div>
  593. <el-button
  594. size="small"
  595. icon="el-icon-chat-dot-square"
  596. @click="sendEventLog()"
  597. >发送
  598. </el-button>
  599. </div>
  600. <div
  601. class="z-info-btm-input-btn"
  602. v-else-if="
  603. eventStatusValue == 'forest_event_status_5'
  604. "
  605. >
  606. <el-button
  607. size="small"
  608. icon="el-icon-success"
  609. style="text-align: left"
  610. v-if="eventTypeXl == 101 && statusFlag == '1'"
  611. @click="
  612. updateCentereventTEventcatalogueStatus(
  613. 'gd',
  614. false
  615. )
  616. "
  617. >
  618. 填报
  619. </el-button>
  620. <el-button
  621. size="small"
  622. icon="el-icon-success"
  623. style="text-align: left"
  624. v-else-if="
  625. eventTypeXl != 101 && statusFlag == '1'
  626. "
  627. @click="
  628. updateCentereventTEventcatalogueStatus(
  629. 'gd',
  630. true
  631. )
  632. "
  633. >
  634. 归档
  635. </el-button>
  636. <el-button
  637. size="small"
  638. v-else-if="statusFlag == '2'"
  639. icon="el-icon-success"
  640. style="text-align: left"
  641. @click="
  642. updateCentereventTEventcatalogueStatus(
  643. 'sh',
  644. false
  645. )
  646. "
  647. >
  648. 审核
  649. </el-button>
  650. <el-button
  651. size="small"
  652. v-else-if="isExamine == '0'"
  653. icon="el-icon-loading"
  654. style="text-align: left"
  655. >
  656. 请等待复核,复核通过后方可归档。
  657. </el-button>
  658. <el-button
  659. size="small"
  660. icon="el-icon-chat-dot-square"
  661. @click="sendEventLog()"
  662. >发送
  663. </el-button>
  664. </div>
  665. <div class="z-info-btm-input-btn" v-else>
  666. <el-button
  667. size="small"
  668. icon="el-icon-chat-dot-square"
  669. @click="sendEventLog()"
  670. >发送
  671. </el-button>
  672. </div>
  673. </div>
  674. </div>
  675. </div>
  676. </div>
  677. </div>
  678. </dv-border-box-7>
  679. </div>
  680. </div>
  681. </el-col>
  682. <!-- 左侧end -->
  683. </el-row>
  684. </div>
  685. </el-dialog>
  686. </div>
  687. <vBottomMenu ref="bottomMenu"></vBottomMenu>
  688. <eventLogUpload ref="eventLogUpload"></eventLogUpload>
  689. <el-dialog
  690. :title="eventConfirmTitle"
  691. :visible.sync="showEventConfirm"
  692. v-if="showEventConfirm"
  693. width="50%"
  694. class="top-dialog"
  695. @close="cancelEventConfirm()"
  696. >
  697. <el-form label-width="80px">
  698. <el-form-item
  699. label="火灾半径"
  700. v-if="eventStatusButton == 'qs' && eventTypeXl == null"
  701. >
  702. <el-input
  703. type="number"
  704. v-model="sendHuoZaiBanJing"
  705. placeholder="请输入火灾半径"
  706. />
  707. </el-form-item>
  708. <el-form-item
  709. v-if="
  710. eventStatusButton == 'wb' ||
  711. eventStatusButton == 'qs' ||
  712. eventStatusButton == 'cf'
  713. "
  714. :label="deptNameitem"
  715. >
  716. <!-- <treeselect v-model="deptId" :options="deptOptions" multiple :show-count="true"-->
  717. <!-- placeholder="请选择签收部门"/>-->
  718. <el-select
  719. v-model="sendDeptName"
  720. clearable
  721. placeholder="请选择部门"
  722. class="m-r-1rem"
  723. @change="setValue"
  724. v-if="
  725. eventStatusButton == 'wb' ||
  726. eventStatusButton == 'qs' ||
  727. eventStatusButton == 'cf'
  728. "
  729. >
  730. <el-option
  731. v-for="item in deptOptions"
  732. :key="item.deptId"
  733. :label="item.deptName"
  734. :value="{ value: item.deptId, label: item.deptName }"
  735. >
  736. </el-option>
  737. </el-select>
  738. </el-form-item>
  739. <el-form-item
  740. label="事件类型"
  741. v-if="eventStatusButton == 'qs' && eventTypeXl == null"
  742. >
  743. <el-select
  744. v-model="sendEventType"
  745. placeholder="请选择事件类型!"
  746. clearable
  747. >
  748. <el-option
  749. v-for="item in eventTypeList"
  750. :key="item.id"
  751. :label="item.eventTypeName"
  752. :value="item.id"
  753. />
  754. </el-select>
  755. </el-form-item>
  756. <el-form-item label="任务来源" v-if="eventStatusButton == 'ld'">
  757. <el-select
  758. v-model="sendTaskSource"
  759. placeholder="请选择任务来源!"
  760. clearable
  761. >
  762. <el-option
  763. v-for="dict in dict.type.task_source"
  764. :key="dict.value"
  765. :label="dict.label"
  766. :value="dict.value"
  767. />
  768. </el-select>
  769. </el-form-item>
  770. <el-form-item label="联动标题" v-if="eventStatusButton == 'ld'">
  771. <el-input v-model="sendTaskTitle" placeholder="请输入联动标题" />
  772. </el-form-item>
  773. <el-form-item label="联动内容" v-if="eventStatusButton == 'ld'">
  774. <el-input
  775. type="textarea"
  776. v-model="sendTaskContent"
  777. :autosize="{ minRows: 7, maxRows: 7 }"
  778. placeholder="请输入联动内容"
  779. >
  780. </el-input>
  781. </el-form-item>
  782. <el-form-item label="联动部门" v-if="eventStatusButton == 'ld'">
  783. <el-input placeholder="输入关键字进行过滤" v-model="filterText">
  784. </el-input>
  785. <el-tree
  786. class="tree-border tree_scroll"
  787. style="height: 20vh; overflow-y: scroll"
  788. :data="deptOptionsLiandong"
  789. show-checkbox
  790. ref="LiandongDept"
  791. node-key="id"
  792. :check-strictly="true"
  793. :filter-node-method="filterNode"
  794. :accordion="true"
  795. empty-text="加载中,请稍候"
  796. :props="defaultProps">
  797. </el-tree>
  798. <!-- default-expand-all-->
  799. </el-form-item>
  800. <el-form-item label="关联预案" v-if="eventStatusButton == 'qs'">
  801. <el-select
  802. v-model="sendGuanLianYuAn"
  803. placeholder="请选择关联预案!"
  804. filterable
  805. clearable
  806. >
  807. <el-option
  808. v-for="item in guanLianYuAnList"
  809. :key="item.id"
  810. :label="item.resTitle"
  811. :value="item.id"
  812. />
  813. </el-select>
  814. </el-form-item>
  815. <el-form-item label="审核意见" v-if="eventStatusButton == 'sh'">
  816. <el-input
  817. type="textarea"
  818. v-model="eventDescription"
  819. :autosize="{ minRows: 7, maxRows: 7 }"
  820. placeholder="请输入审核意见"
  821. >
  822. </el-input>
  823. </el-form-item>
  824. <el-form-item
  825. label="附件"
  826. prop="schedulePictures"
  827. v-if="eventStatusButton == 'sh'"
  828. >
  829. <ImageUpload
  830. class="sj-upload"
  831. ref="ImageUpload"
  832. :limit="10"
  833. :fileType="['jpg', 'png', 'jpeg']"
  834. :value="uploadAttachList"
  835. @input="getUrl"
  836. ></ImageUpload>
  837. </el-form-item>
  838. <!--<el-form-item label="联系人" v-if="eventStatusButton=='qs'">-->
  839. <!--<el-select multiple collapse-tags v-model='sendUserFegin' placeholder='请选择联系人!' clearable filterable>-->
  840. <!--<el-option-->
  841. <!--v-for="item in userFeginList"-->
  842. <!--:label="item.nickName"-->
  843. <!--:value="item.phonenumber"-->
  844. <!--/>-->
  845. <!--</el-select>-->
  846. <!--</el-form-item>-->
  847. <el-button
  848. size="mini"
  849. type="primary"
  850. v-if="eventStatusButton == 'qr'"
  851. class="sj-icon-btn"
  852. icon="el-icon-document-checked"
  853. @click="updateCentereventTEventcatalogueStatus('qr', false)"
  854. >确认
  855. </el-button>
  856. <el-button
  857. size="mini"
  858. type="primary"
  859. v-if="eventStatusButton == 'qs'"
  860. class="sj-icon-btn"
  861. icon="el-icon-edit"
  862. @click="updateCentereventTEventcatalogueStatus('qs', true)"
  863. >签收
  864. </el-button>
  865. <el-button
  866. size="mini"
  867. type="primary"
  868. v-if="eventStatusButton == 'wb'"
  869. class="sj-icon-btn"
  870. icon="el-icon-close-notification"
  871. @click="updateCentereventTEventcatalogueStatus('wb', true)"
  872. >误报
  873. </el-button>
  874. <el-button
  875. size="mini"
  876. type="primary"
  877. v-if="eventStatusButton == 'cf'"
  878. class="sj-icon-btn"
  879. icon="el-icon-document-copy"
  880. @click="updateCentereventTEventcatalogueStatus('cf', true)"
  881. >重复
  882. </el-button>
  883. <el-button
  884. size="mini"
  885. type="primary"
  886. v-if="eventStatusButton == 'ld'"
  887. class="sj-icon-btn"
  888. icon="el-icon-phone"
  889. @click="updateCentereventTEventcatalogueStatus('ld', true)"
  890. >发起联动
  891. </el-button>
  892. <el-button
  893. size="mini"
  894. type="primary"
  895. v-if="eventStatusButton == 'sh'"
  896. class="sj-icon-btn"
  897. icon="el-icon-circle-check"
  898. @click="updateCentereventTEventcatalogueStatus('shtg', true)"
  899. >通过
  900. </el-button>
  901. <el-button
  902. size="mini"
  903. type="primary"
  904. v-if="eventStatusButton == 'sh'"
  905. class="sj-icon-btn"
  906. icon="el-icon-circle-close"
  907. @click="updateCentereventTEventcatalogueStatus('shbtg', true)"
  908. >不通过
  909. </el-button>
  910. </el-form>
  911. </el-dialog>
  912. <el-dialog
  913. title="调整预案"
  914. :visible.sync="showGuanLianYuAnConfirm"
  915. v-if="showGuanLianYuAnConfirm"
  916. width="50%"
  917. class="top-dialog tz_tk"
  918. >
  919. <el-form label-width="80px">
  920. <el-form-item label="关联预案">
  921. <el-select
  922. v-model="sendGuanLianYuAn"
  923. placeholder="请选择关联预案!"
  924. clearable
  925. >
  926. <el-option
  927. v-for="item in guanLianYuAnList"
  928. :key="item.id"
  929. :label="item.resTitle"
  930. :value="item.id"
  931. />
  932. </el-select>
  933. </el-form-item>
  934. <el-button
  935. size="mini"
  936. type="primary"
  937. class="fr_button"
  938. @click="updateYjYuAn"
  939. >确定
  940. </el-button>
  941. <div style="clear: both"></div>
  942. </el-form>
  943. </el-dialog>
  944. <el-dialog
  945. title="责任制"
  946. :visible.sync="showResponsibilityDialog"
  947. v-if="showResponsibilityDialog"
  948. width="65%"
  949. @close="closeResponsibilityDialog()"
  950. >
  951. <el-form label-width="1500px">
  952. <div class="bottom">
  953. <!-- 左侧菜单栏 -->
  954. <div class="bottomLeft">
  955. <div
  956. class="leftItem d-l-con padding-box nowrap"
  957. v-for="(item, index) in depteventList"
  958. >
  959. <div class="bgt-info">
  960. <div
  961. class="bgt-info-name"
  962. :class="{ on: iconCurrentIndex == item.deptId }"
  963. @click="dutysystemSelect(item.deptId, item.deptName, item.id)"
  964. >
  965. {{ item.deptName }}
  966. </div>
  967. </div>
  968. </div>
  969. </div>
  970. <!-- 左侧菜单栏对应的右侧的内容 -->
  971. <div class="bottomRight" ref="wrapper">
  972. <el-button
  973. size="mini"
  974. type="danger"
  975. v-if="depteventId != null && depteventId != ''"
  976. @click="addLine"
  977. >添加
  978. </el-button>
  979. <el-button
  980. size="mini"
  981. type="danger"
  982. v-if="depteventId != null && depteventId != ''"
  983. @click="finUserByDept"
  984. >选择
  985. </el-button>
  986. <el-table
  987. :data="dutysystemTableData"
  988. style="width: 100%"
  989. :rules="rules"
  990. >
  991. <el-table-column prop="id" label="主键" v-if="false">
  992. <template slot-scope="scope" hidden>
  993. <el-input
  994. v-model="scope.row.id"
  995. readonly
  996. placeholder="主键"
  997. ></el-input>
  998. </template>
  999. </el-table-column>
  1000. <el-table-column prop="name" label="姓名">
  1001. <template slot-scope="scope">
  1002. <el-input
  1003. v-model="scope.row.name"
  1004. placeholder="姓名"
  1005. οninput="value=value.replace(/^[\u4e00-\u9fa5]{2,4}$/,'')"
  1006. ></el-input>
  1007. </template>
  1008. </el-table-column>
  1009. <el-table-column prop="post" label="岗位">
  1010. <template slot-scope="scope">
  1011. <el-input
  1012. v-model="scope.row.post"
  1013. placeholder="岗位"
  1014. ></el-input>
  1015. </template>
  1016. </el-table-column>
  1017. <el-table-column prop="telphone" label="手机号码">
  1018. <template slot-scope="scope">
  1019. <el-input
  1020. v-model="scope.row.telphone"
  1021. placeholder="手机号码"
  1022. οninput="value=value.replace(/^((13[0-9])|(14[5-9])|(15([0-3]|[5-9]))|(16[6-7])|(17[1-8])|(18[0-9])|(19[1|3])|(19[5|6])|(19[8|9]))\d{8}$/,'')"
  1023. ></el-input>
  1024. </template>
  1025. </el-table-column>
  1026. <el-table-column prop="bookbuytime" label="操作">
  1027. <template slot-scope="scope">
  1028. <el-button
  1029. size="mini"
  1030. type="danger"
  1031. icon="el-icon-delete"
  1032. @click="handleDelete(scope.$index, scope.row)"
  1033. >删除
  1034. </el-button>
  1035. <!--<el-button-->
  1036. <!--size="mini"-->
  1037. <!--type="danger"-->
  1038. <!--icon="el-icon-save"-->
  1039. <!--@click="handleSave(scope.$index, scope.row)">保存-->
  1040. <!--</el-button>-->
  1041. </template>
  1042. </el-table-column>
  1043. </el-table>
  1044. </div>
  1045. </div>
  1046. <el-button
  1047. size="mini"
  1048. type="primary"
  1049. class="fr_button"
  1050. @click="addResponsibilityDialog"
  1051. >确定
  1052. </el-button>
  1053. <div style="clear: both"></div>
  1054. </el-form>
  1055. </el-dialog>
  1056. <!-- 会议弹窗 start -->
  1057. <el-dialog
  1058. title="视频会议"
  1059. :visible.sync="showMeetingMsgDialog"
  1060. v-if="showMeetingMsgDialog"
  1061. width="65%"
  1062. @close="closeMeetingMsgDialog()"
  1063. >
  1064. <el-form label-width="1500px">
  1065. <div class="bottom">
  1066. <!-- 左侧菜单栏 -->
  1067. <div class="bottomLeft">
  1068. <div
  1069. class="leftItem d-l-con padding-box nowrap"
  1070. v-for="(item, index) in depteventList"
  1071. >
  1072. <div class="bgt-info">
  1073. <div
  1074. class="bgt-info-name"
  1075. :class="{ on: iconCurrentIndex == item.deptId }"
  1076. @click="dutysystemSelect(item.deptId, item.deptName, item.id)"
  1077. >
  1078. {{ item.deptName }}
  1079. </div>
  1080. </div>
  1081. </div>
  1082. </div>
  1083. <!-- 左侧菜单栏对应的右侧的内容 -->
  1084. <div class="bottomRight" ref="wrapper">
  1085. <el-button
  1086. size="mini"
  1087. type="danger"
  1088. v-if="depteventId != null && depteventId != ''"
  1089. @click="addLine"
  1090. >添加
  1091. </el-button>
  1092. <el-button
  1093. size="mini"
  1094. type="danger"
  1095. v-if="depteventId != null && depteventId != ''"
  1096. @click="finUserByDept"
  1097. >选择
  1098. </el-button>
  1099. <el-table
  1100. :data="dutysystemTableData"
  1101. style="width: 100%"
  1102. :rules="rules"
  1103. >
  1104. <el-table-column prop="id" label="主键" v-if="false">
  1105. <template slot-scope="scope" hidden>
  1106. <el-input
  1107. v-model="scope.row.id"
  1108. readonly
  1109. placeholder="主键"
  1110. ></el-input>
  1111. </template>
  1112. </el-table-column>
  1113. <el-table-column prop="name" label="姓名">
  1114. <template slot-scope="scope">
  1115. <el-input
  1116. v-model="scope.row.name"
  1117. placeholder="姓名"
  1118. οninput="value=value.replace(/^[\u4e00-\u9fa5]{2,4}$/,'')"
  1119. ></el-input>
  1120. </template>
  1121. </el-table-column>
  1122. <el-table-column prop="post" label="岗位">
  1123. <template slot-scope="scope">
  1124. <el-input
  1125. v-model="scope.row.post"
  1126. placeholder="岗位"
  1127. ></el-input>
  1128. </template>
  1129. </el-table-column>
  1130. <el-table-column prop="telphone" label="手机号码">
  1131. <template slot-scope="scope">
  1132. <el-input
  1133. v-model="scope.row.telphone"
  1134. placeholder="手机号码"
  1135. οninput="value=value.replace(/^((13[0-9])|(14[5-9])|(15([0-3]|[5-9]))|(16[6-7])|(17[1-8])|(18[0-9])|(19[1|3])|(19[5|6])|(19[8|9]))\d{8}$/,'')"
  1136. ></el-input>
  1137. </template>
  1138. </el-table-column>
  1139. <el-table-column prop="bookbuytime" label="操作">
  1140. <template slot-scope="scope">
  1141. <el-button
  1142. size="mini"
  1143. type="danger"
  1144. icon="el-icon-delete"
  1145. @click="handleDelete(scope.$index, scope.row)"
  1146. >删除
  1147. </el-button>
  1148. <!--<el-button-->
  1149. <!--size="mini"-->
  1150. <!--type="danger"-->
  1151. <!--icon="el-icon-save"-->
  1152. <!--@click="handleSave(scope.$index, scope.row)">保存-->
  1153. <!--</el-button>-->
  1154. </template>
  1155. </el-table-column>
  1156. </el-table>
  1157. </div>
  1158. </div>
  1159. <el-button size="mini" type="primary" class="fr_button" @click="sendMsg"
  1160. >发送短信
  1161. </el-button>
  1162. <div style="clear: both"></div>
  1163. </el-form>
  1164. </el-dialog>
  1165. <!-- 会议弹窗 end -->
  1166. <el-dialog
  1167. title="火险报告"
  1168. :visible.sync="showEventConfirm_gd"
  1169. v-if="showEventConfirm_gd"
  1170. width="100%"
  1171. class="top-dialog"
  1172. @close="cancelEventConfirm_gd()"
  1173. >
  1174. <div class="table-container">
  1175. <form>
  1176. <table id="table1" cellpadding="0" cellspacing="0">
  1177. <thead style="width: 100%; padding: 0.5rem 0">
  1178. <th rowspan="1" colspan="1" class="txt_left" width="100px">
  1179. 填报单位:
  1180. </th>
  1181. <th rowspan="1" colspan="6" align="left">
  1182. <input
  1183. type="text"
  1184. style="width: 100%; margin-left: 0.5rem"
  1185. v-model="table1.reportUnit"
  1186. />
  1187. </th>
  1188. <th rowspan="1" colspan="2" class="txt_right">填报时间:</th>
  1189. <th rowspan="1" colspan="6" align="left">
  1190. <input
  1191. type="text"
  1192. style="width: 3rem; text-align: center"
  1193. v-model="table1.reportTimeY"
  1194. />年<input
  1195. type="text"
  1196. style="width: 4rem; text-align: center"
  1197. v-model="table1.reportTimeM"
  1198. />月<input
  1199. type="text"
  1200. style="width: 3rem; text-align: center"
  1201. v-model="table1.reportTimeD"
  1202. />日
  1203. </th>
  1204. <th rowspan="1" colspan="8" style="text-align: right">
  1205. 吉林省人民政府森林防火指挥部办公室制
  1206. </th>
  1207. </thead>
  1208. <tbody>
  1209. <tr>
  1210. <td
  1211. colspan="22"
  1212. rowspan="1"
  1213. class="font1"
  1214. style="letter-spacing: 3rem; padding: 0.5rem 0"
  1215. >
  1216. 森林火灾损失
  1217. </td>
  1218. <td colspan="1" rowspan="6">
  1219. <table class="border0">
  1220. <tr>
  1221. <td>备注</td>
  1222. </tr>
  1223. </table>
  1224. </td>
  1225. </tr>
  1226. <tr>
  1227. <td rowspan="4" colspan="1">
  1228. <table class="border0">
  1229. <tr>
  1230. <td>森林火灾<br />损失总计</td>
  1231. </tr>
  1232. </table>
  1233. </td>
  1234. <td rowspan="1" colspan="12">火灾损失价值</td>
  1235. <td rowspan="1" colspan="9">扑火费用支出</td>
  1236. </tr>
  1237. <tr>
  1238. <td rowspan="3" colspan="1">
  1239. <table class="border0">
  1240. <tr>
  1241. <td>合计</td>
  1242. </tr>
  1243. </table>
  1244. </td>
  1245. <td rowspan="1" colspan="4">林木资源</td>
  1246. <td rowspan="1" colspan="6">人员伤亡</td>
  1247. <td rowspan="3" colspan="1">
  1248. <table class="border0">
  1249. <tr>
  1250. <td>其他<br />火灾<br />损失</td>
  1251. </tr>
  1252. </table>
  1253. </td>
  1254. <td rowspan="3" colspan="1">
  1255. <table class="border0">
  1256. <tr>
  1257. <td>合计</td>
  1258. </tr>
  1259. </table>
  1260. </td>
  1261. <td rowspan="1" colspan="2">
  1262. <table class="border0">
  1263. <tr>
  1264. <td>人工费</td>
  1265. </tr>
  1266. </table>
  1267. </td>
  1268. <td rowspan="1" colspan="3">
  1269. <table class="border0">
  1270. <tr>
  1271. <td>车辆费</td>
  1272. </tr>
  1273. </table>
  1274. </td>
  1275. <td rowspan="1" colspan="2">
  1276. <table class="border0">
  1277. <tr>
  1278. <td>飞行费</td>
  1279. </tr>
  1280. </table>
  1281. </td>
  1282. <td rowspan="3" colspan="1">
  1283. <table class="border0">
  1284. <tr>
  1285. <td>其他<br />扑火<br />费用</td>
  1286. </tr>
  1287. </table>
  1288. </td>
  1289. </tr>
  1290. <tr>
  1291. <td rowspan="1" colspan="2">成林</td>
  1292. <td rowspan="1" colspan="2">幼林</td>
  1293. <td rowspan="1" colspan="2">轻伤</td>
  1294. <td rowspan="1" colspan="2">重伤</td>
  1295. <td rowspan="1" colspan="2">死亡</td>
  1296. <td rowspan="2" colspan="1">
  1297. <table class="border0">
  1298. <tr>
  1299. <td>出动<br />人工</td>
  1300. </tr>
  1301. </table>
  1302. </td>
  1303. <td rowspan="2" colspan="1">
  1304. <table class="border0">
  1305. <tr>
  1306. <td>支出<br />费用</td>
  1307. </tr>
  1308. </table>
  1309. </td>
  1310. <td rowspan="2" colspan="1">
  1311. <table class="border0">
  1312. <tr>
  1313. <td>计</td>
  1314. </tr>
  1315. </table>
  1316. </td>
  1317. <td rowspan="2" colspan="1">
  1318. <table class="border0">
  1319. <tr>
  1320. <td>其中<br />汽车</td>
  1321. </tr>
  1322. </table>
  1323. </td>
  1324. <td rowspan="2" colspan="1">
  1325. <table class="border0">
  1326. <tr>
  1327. <td>支出<br />费用</td>
  1328. </tr>
  1329. </table>
  1330. </td>
  1331. <td rowspan="2" colspan="1">
  1332. <table class="border0">
  1333. <tr>
  1334. <td>出动<br />飞机</td>
  1335. </tr>
  1336. </table>
  1337. </td>
  1338. <td rowspan="2" colspan="1">
  1339. <table class="border0">
  1340. <tr>
  1341. <td>支出<br />费用</td>
  1342. </tr>
  1343. </table>
  1344. </td>
  1345. </tr>
  1346. <tr>
  1347. <td rowspan="1" colspan="1">蓄积</td>
  1348. <td rowspan="1" colspan="1">价值</td>
  1349. <td rowspan="1" colspan="1">株数</td>
  1350. <td rowspan="1" colspan="1">价值</td>
  1351. <td rowspan="1" colspan="1">人数</td>
  1352. <td rowspan="1" colspan="1">支出费用</td>
  1353. <td rowspan="1" colspan="1">人数</td>
  1354. <td rowspan="1" colspan="1">支出费用</td>
  1355. <td rowspan="1" colspan="1">人数</td>
  1356. <td rowspan="1" colspan="1">支出费用</td>
  1357. </tr>
  1358. <tr>
  1359. <td rowspan="1" colspan="1">万元</td>
  1360. <td rowspan="1" colspan="1">万元</td>
  1361. <td rowspan="1" colspan="1">米³</td>
  1362. <td rowspan="1" colspan="1">万元</td>
  1363. <td rowspan="1" colspan="1">万株</td>
  1364. <td rowspan="1" colspan="1">万元</td>
  1365. <td rowspan="1" colspan="1">人</td>
  1366. <td rowspan="1" colspan="1">万元</td>
  1367. <td rowspan="1" colspan="1">人</td>
  1368. <td rowspan="1" colspan="1">万元</td>
  1369. <td rowspan="1" colspan="1">人</td>
  1370. <td rowspan="1" colspan="1">万元</td>
  1371. <td rowspan="1" colspan="1">万元</td>
  1372. <td rowspan="1" colspan="1">万元</td>
  1373. <td rowspan="1" colspan="1">工日</td>
  1374. <td rowspan="1" colspan="1">万元</td>
  1375. <td rowspan="1" colspan="1">台</td>
  1376. <td rowspan="1" colspan="1">台</td>
  1377. <td rowspan="1" colspan="1">万元</td>
  1378. <td rowspan="1" colspan="1">架次</td>
  1379. <td rowspan="1" colspan="1">万元</td>
  1380. <td rowspan="1" colspan="1">万元</td>
  1381. </tr>
  1382. <tr>
  1383. <td rowspan="1" colspan="1">1</td>
  1384. <td rowspan="1" colspan="1">2</td>
  1385. <td rowspan="1" colspan="1">3</td>
  1386. <td rowspan="1" colspan="1">4</td>
  1387. <td rowspan="1" colspan="1">5</td>
  1388. <td rowspan="1" colspan="1">6</td>
  1389. <td rowspan="1" colspan="1">7</td>
  1390. <td rowspan="1" colspan="1">8</td>
  1391. <td rowspan="1" colspan="1">9</td>
  1392. <td rowspan="1" colspan="1">10</td>
  1393. <td rowspan="1" colspan="1">11</td>
  1394. <td rowspan="1" colspan="1">12</td>
  1395. <td rowspan="1" colspan="1">13</td>
  1396. <td rowspan="1" colspan="1">14</td>
  1397. <td rowspan="1" colspan="1">15</td>
  1398. <td rowspan="1" colspan="1">16</td>
  1399. <td rowspan="1" colspan="1">17</td>
  1400. <td rowspan="1" colspan="1">18</td>
  1401. <td rowspan="1" colspan="1">19</td>
  1402. <td rowspan="1" colspan="1">20</td>
  1403. <td rowspan="1" colspan="1">21</td>
  1404. <td rowspan="1" colspan="1">22</td>
  1405. <td rowspan="1" colspan="1">23</td>
  1406. </tr>
  1407. <tr class="int_tr">
  1408. <td rowspan="1" colspan="1">
  1409. <input
  1410. type="text"
  1411. class="border0"
  1412. v-model="table1.forestFireLossTotal"
  1413. />
  1414. </td>
  1415. <td rowspan="1" colspan="1">
  1416. <input
  1417. type="text"
  1418. class="border0"
  1419. v-model="table1.fireLossTotal"
  1420. />
  1421. </td>
  1422. <td rowspan="1" colspan="1">
  1423. <input
  1424. type="text"
  1425. class="border0"
  1426. v-model="table1.forestArea"
  1427. />
  1428. </td>
  1429. <td rowspan="1" colspan="1">
  1430. <input
  1431. type="text"
  1432. class="border0"
  1433. v-model="table1.forestPrice"
  1434. />
  1435. </td>
  1436. <td rowspan="1" colspan="1">
  1437. <input
  1438. type="text"
  1439. class="border0"
  1440. v-model="table1.treesNumber"
  1441. />
  1442. </td>
  1443. <td rowspan="1" colspan="1">
  1444. <input
  1445. type="text"
  1446. class="border0"
  1447. v-model="table1.treesPrice"
  1448. />
  1449. </td>
  1450. <td rowspan="1" colspan="1">
  1451. <input
  1452. type="text"
  1453. class="border0"
  1454. v-model="table1.minorInjuriesNumber"
  1455. />
  1456. </td>
  1457. <td rowspan="1" colspan="1">
  1458. <input
  1459. type="text"
  1460. class="border0"
  1461. v-model="table1.minorInjuriesPrice"
  1462. />
  1463. </td>
  1464. <td rowspan="1" colspan="1">
  1465. <input
  1466. type="text"
  1467. class="border0"
  1468. v-model="table1.seriouslyInjuredNumber"
  1469. />
  1470. </td>
  1471. <td rowspan="1" colspan="1">
  1472. <input
  1473. type="text"
  1474. class="border0"
  1475. v-model="table1.seriouslyInjuredPrice"
  1476. />
  1477. </td>
  1478. <td rowspan="1" colspan="1">
  1479. <input
  1480. type="text"
  1481. class="border0"
  1482. v-model="table1.deathNumber"
  1483. />
  1484. </td>
  1485. <td rowspan="1" colspan="1">
  1486. <input
  1487. type="text"
  1488. class="border0"
  1489. v-model="table1.deathPrice"
  1490. />
  1491. </td>
  1492. <td rowspan="1" colspan="1">
  1493. <input
  1494. type="text"
  1495. class="border0"
  1496. v-model="table1.elseFireLossPrice"
  1497. />
  1498. </td>
  1499. <td rowspan="1" colspan="1">
  1500. <input
  1501. type="text"
  1502. class="border0"
  1503. v-model="table1.blazesPriceTotal"
  1504. />
  1505. </td>
  1506. <td rowspan="1" colspan="1">
  1507. <input
  1508. type="text"
  1509. class="border0"
  1510. v-model="table1.artificialDays"
  1511. />
  1512. </td>
  1513. <td rowspan="1" colspan="1">
  1514. <input
  1515. type="text"
  1516. class="border0"
  1517. v-model="table1.artificialPrice"
  1518. />
  1519. </td>
  1520. <td rowspan="1" colspan="1">
  1521. <input
  1522. type="text"
  1523. class="border0"
  1524. v-model="table1.vehicleNumber"
  1525. />
  1526. </td>
  1527. <td rowspan="1" colspan="1">
  1528. <input
  1529. type="text"
  1530. class="border0"
  1531. v-model="table1.carNumber"
  1532. />
  1533. </td>
  1534. <td rowspan="1" colspan="1">
  1535. <input
  1536. type="text"
  1537. class="border0"
  1538. v-model="table1.vehiclePrice"
  1539. />
  1540. </td>
  1541. <td rowspan="1" colspan="1">
  1542. <input
  1543. type="text"
  1544. class="border0"
  1545. v-model="table1.planeNumber"
  1546. />
  1547. </td>
  1548. <td rowspan="1" colspan="1">
  1549. <input
  1550. type="text"
  1551. class="border0"
  1552. v-model="table1.planePrice"
  1553. />
  1554. </td>
  1555. <td rowspan="1" colspan="1">
  1556. <input
  1557. type="text"
  1558. class="border0"
  1559. v-model="table1.elseBlazesPrice"
  1560. />
  1561. </td>
  1562. <td rowspan="1" colspan="1">
  1563. <input type="text" class="border0" v-model="table1.note" />
  1564. </td>
  1565. </tr>
  1566. </tbody>
  1567. </table>
  1568. <table
  1569. class="table2"
  1570. cellpadding="0"
  1571. cellspacing="0"
  1572. style="white-space: nowrap"
  1573. >
  1574. <tbody>
  1575. <tr>
  1576. <th rowspan="1" colspan="26" style="letter-spacing: 6rem">
  1577. 火场资料
  1578. </th>
  1579. </tr>
  1580. <tr>
  1581. <td colspan="2" rowspan="1" class="txt_left">
  1582. &nbsp;1.起火时间
  1583. </td>
  1584. <td colspan="5" rowspan="1">
  1585. <input type="text" v-model="table2.fireTime" />
  1586. </td>
  1587. <td colspan="2" rowspan="1">发现时间</td>
  1588. <td colspan="8" rowspan="1">
  1589. <input type="text" v-model="table2.foundTime" />
  1590. </td>
  1591. <td colspan="2" rowspan="1">扑灭时间</td>
  1592. <td colspan="7" rowspan="1">
  1593. <input type="text" v-model="table2.blazesTime" />
  1594. </td>
  1595. </tr>
  1596. <tr>
  1597. <td colspan="2" rowspan="1" class="txt_left">
  1598. &nbsp;2.地点及发现方式
  1599. </td>
  1600. <td colspan="2" rowspan="1" class="txt_left">
  1601. <select v-model="table2.address">
  1602. <option>吉林市</option>
  1603. <option>延边州</option>
  1604. <option>白山市</option>
  1605. <option>通化市</option>
  1606. <option>辽源市</option>
  1607. <option>四平市</option>
  1608. <option>长春市</option>
  1609. <option>白城市</option>
  1610. <option>松原市</option>
  1611. <option>敦化航站</option>
  1612. <option>长白山管委会</option>
  1613. </select>
  1614. </td>
  1615. <td colspan="13" rowspan="1">
  1616. <input type="text" v-model="table2.firePlace" />
  1617. </td>
  1618. <td colspan="2" rowspan="1">发现方式</td>
  1619. <td colspan="7" rowspan="1">
  1620. <input type="text" v-model="table2.foundType" />
  1621. </td>
  1622. </tr>
  1623. <tr>
  1624. <td colspan="2" rowspan="1" class="txt_left">
  1625. &nbsp;3.火场位置
  1626. </td>
  1627. <td colspan="2" rowspan="1" class="border_l0">东经:</td>
  1628. <td colspan="1" rowspan="1" class="border_l0">
  1629. <input
  1630. type="text"
  1631. style="width: 50px"
  1632. v-model="table2.longitudeD"
  1633. />
  1634. </td>
  1635. <td colspan="1" rowspan="1" class="border_l0">度</td>
  1636. <td colspan="1" rowspan="1" class="border_l0">
  1637. <input
  1638. type="text"
  1639. style="width: 50px"
  1640. v-model="table2.longitudeM"
  1641. />
  1642. </td>
  1643. <td colspan="1" rowspan="1" class="border_l0">分</td>
  1644. <td colspan="1" rowspan="1" class="border_l0">
  1645. <input
  1646. type="text"
  1647. style="width: 50px"
  1648. v-model="table2.longitudeS"
  1649. />
  1650. </td>
  1651. <td colspan="2" rowspan="1" class="border_l0">秒</td>
  1652. <td colspan="1" rowspan="1" class="border_l0">;</td>
  1653. <td colspan="2" rowspan="1" class="border_l0">北纬:</td>
  1654. <td colspan="1" rowspan="1" class="border_l0">
  1655. <input
  1656. type="text"
  1657. style="width: 50px"
  1658. v-model="table2.latitudeD"
  1659. />
  1660. </td>
  1661. <td colspan="1" rowspan="1" class="border_l0">度</td>
  1662. <td colspan="1" rowspan="1" class="border_l0">
  1663. <input
  1664. type="text"
  1665. style="width: 50px"
  1666. v-model="table2.latitudeM"
  1667. />
  1668. </td>
  1669. <td colspan="1" rowspan="1" class="border_l0">分</td>
  1670. <td colspan="1" rowspan="1" class="border_l0">
  1671. <input
  1672. type="text"
  1673. style="width: 50px"
  1674. v-model="table2.latitudeS"
  1675. />
  1676. </td>
  1677. <td colspan="1" rowspan="1" class="border_l0">秒</td>
  1678. <td class="border_l0"></td>
  1679. <td class="border_l0"></td>
  1680. <td class="border_l0"></td>
  1681. <td class="border_l0"></td>
  1682. <td class="border_l0"></td>
  1683. <td></td>
  1684. </tr>
  1685. <tr>
  1686. <td colspan="2" rowspan="1" class="txt_left">
  1687. &nbsp;4.起火原因
  1688. </td>
  1689. <td colspan="3" rowspan="1" class="txt_left">
  1690. <select v-model="table2.fireSource">
  1691. <option>未查明火源</option>
  1692. <option>烧荒烧炭</option>
  1693. <option>炼山造林</option>
  1694. <option>烧牧场</option>
  1695. <option disabled>烧窑</option>
  1696. <option>烧隔离带</option>
  1697. <option>火车喷漏</option>
  1698. <option>火车甩瓦</option>
  1699. <option>机车喷火</option>
  1700. <option>其他(生产性火源)</option>
  1701. <option>野外吸烟</option>
  1702. <option>取暖做饭</option>
  1703. <option>上坟烧纸</option>
  1704. <option>烧山驱兽</option>
  1705. <option>小孩玩火</option>
  1706. <option>痴呆弄火</option>
  1707. <option>家火上山</option>
  1708. <option>电线引起</option>
  1709. <option>其他(非生产性用火)</option>
  1710. <option>故意放火</option>
  1711. <option>外省(区)烧入</option>
  1712. <option>外国烧入</option>
  1713. <option>雷击火</option>
  1714. <option>其他自然火</option>
  1715. </select>
  1716. </td>
  1717. <td colspan="3" rowspan="1">火灾种类</td>
  1718. <td colspan="4" rowspan="1" class="txt_left">
  1719. <select v-model="table2.fireType">
  1720. <option>地表火</option>
  1721. <option>树冠火</option>
  1722. <option>地下火</option>
  1723. </select>
  1724. </td>
  1725. <td colspan="3" rowspan="1">火灾等级</td>
  1726. <td colspan="11" rowspan="1" class="txt_left">
  1727. <select v-model="table2.fireLevel">
  1728. <option>一般</option>
  1729. <option>较大</option>
  1730. <option>重大</option>
  1731. <option>特大</option>
  1732. </select>
  1733. </td>
  1734. </tr>
  1735. <tr>
  1736. <td colspan="2" rowspan="1" class="txt_left">
  1737. &nbsp;5.火场面积(公顷)
  1738. </td>
  1739. <td colspan="2" rowspan="1">总面积合计</td>
  1740. <td colspan="3" rowspan="1">
  1741. <input type="text" v-model="table2.areaTotal" />
  1742. </td>
  1743. <td colspan="4" rowspan="1">受害森林面积合计</td>
  1744. <td colspan="3" rowspan="1">
  1745. <input type="text" v-model="table2.forestLossAreaTotal" />
  1746. </td>
  1747. <td colspan="1" rowspan="1">其中:</td>
  1748. <td colspan="2" rowspan="1">原森林</td>
  1749. <td colspan="4" rowspan="1">
  1750. <input type="text" v-model="table2.originalForestArea" />
  1751. </td>
  1752. <td colspan="2" rowspan="1">人工林</td>
  1753. <td colspan="3" rowspan="1">
  1754. <input type="text" v-model="table2.artificialForestArea" />
  1755. </td>
  1756. </tr>
  1757. <tr>
  1758. <td colspan="2" rowspan="1" class="txt_left">
  1759. &nbsp;6.扑火人力物力投入
  1760. </td>
  1761. <td colspan="2" rowspan="1">出动总人数</td>
  1762. <td colspan="1" rowspan="1">
  1763. <input type="text" v-model="table2.peopleTotal" />
  1764. </td>
  1765. <td colspan="2" rowspan="1">其中扑火队</td>
  1766. <td colspan="1" rowspan="1">
  1767. <input type="text" v-model="table2.blazesTeamNumber" />
  1768. </td>
  1769. <td colspan="1" rowspan="1">森警</td>
  1770. <td colspan="2" rowspan="1">
  1771. <input type="text" v-model="table2.policeNumber" />
  1772. </td>
  1773. <td colspan="1" rowspan="1">军队</td>
  1774. <td colspan="1" rowspan="1">
  1775. <input type="text" v-model="table2.armyNumber" />
  1776. </td>
  1777. <td colspan="1" rowspan="1">群众</td>
  1778. <td colspan="1" rowspan="1">
  1779. <input type="text" v-model="table2.crowdNumber" />
  1780. </td>
  1781. <td colspan="2" rowspan="1">风力灭火机</td>
  1782. <td colspan="1" rowspan="1">
  1783. <input type="text" v-model="table2.windExtinguisher" />
  1784. </td>
  1785. <td colspan="2" rowspan="1">二号工具</td>
  1786. <td colspan="1" rowspan="1">
  1787. <input type="text" v-model="table2.secondTool" />
  1788. </td>
  1789. <td colspan="2" rowspan="1">水枪</td>
  1790. <td colspan="1" rowspan="1">
  1791. <input type="text" v-model="table2.waterGun" />
  1792. </td>
  1793. <td colspan="1" rowspan="1">其他</td>
  1794. <td colspan="1" rowspan="1">
  1795. <input type="text" v-model="table2.elseThings" />
  1796. </td>
  1797. </tr>
  1798. <tr>
  1799. <td colspan="2" rowspan="1" class="txt_left">
  1800. &nbsp;7.受害森林概况
  1801. </td>
  1802. <td colspan="2" rowspan="1">林木组成</td>
  1803. <td colspan="11" rowspan="1">
  1804. <input type="text" v-model="table2.forestComposition" />
  1805. </td>
  1806. <td colspan="2" rowspan="1">林令</td>
  1807. <td colspan="4" rowspan="1">
  1808. <input type="text" v-model="table2.forestToken" />
  1809. </td>
  1810. <td colspan="2" rowspan="1">疏密度</td>
  1811. <td colspan="3" rowspan="1">
  1812. <input type="text" v-model="table2.porosities" />
  1813. </td>
  1814. </tr>
  1815. <tr>
  1816. <td colspan="2" rowspan="1" class="txt_left">
  1817. &nbsp;8.当日天气实况
  1818. </td>
  1819. <td colspan="2" rowspan="1">天气</td>
  1820. <td colspan="3" rowspan="1">
  1821. <input type="text" v-model="table2.weather" />
  1822. </td>
  1823. <td colspan="1" rowspan="1">气温</td>
  1824. <td colspan="2" rowspan="1">
  1825. <input type="text" v-model="table2.temperature" />
  1826. </td>
  1827. <td colspan="1" rowspan="1">C°</td>
  1828. <td colspan="3" rowspan="1">火险等级</td>
  1829. <td colspan="1" rowspan="1">
  1830. <input type="text" v-model="table2.fireInsuranceLevel" />
  1831. </td>
  1832. <td colspan="2" rowspan="1">风力</td>
  1833. <td colspan="2" rowspan="1" class="border_l0">
  1834. <input type="text" v-model="table2.windLevel" />
  1835. </td>
  1836. <td colspan="2" rowspan="1" class="txt_left">级</td>
  1837. <td colspan="2" rowspan="1">风向</td>
  1838. <td colspan="3" rowspan="1">
  1839. <input type="text" v-model="table2.windDirection" />
  1840. </td>
  1841. </tr>
  1842. <tr>
  1843. <td colspan="2" rowspan="1" class="txt_left">
  1844. &nbsp;9.指挥扑火负责人
  1845. </td>
  1846. <td colspan="2" rowspan="1">单位</td>
  1847. <td colspan="11" rowspan="1">
  1848. <input type="text" v-model="table2.commandUnit" />
  1849. </td>
  1850. <td colspan="2" rowspan="1">姓名</td>
  1851. <td colspan="4" rowspan="1">
  1852. <input type="text" v-model="table2.commandName" />
  1853. </td>
  1854. <td colspan="2" rowspan="1">职务</td>
  1855. <td colspan="3" rowspan="1">
  1856. <input type="text" v-model="table2.commandPosition" />
  1857. </td>
  1858. </tr>
  1859. <tr>
  1860. <td colspan="2" rowspan="1" class="txt_left">
  1861. &nbsp;10.火场调查负责人
  1862. </td>
  1863. <td colspan="2" rowspan="1">单位</td>
  1864. <td colspan="11" rowspan="1">
  1865. <input type="text" v-model="table2.surveyUnit" />
  1866. </td>
  1867. <td colspan="2" rowspan="1">姓名</td>
  1868. <td colspan="4" rowspan="1">
  1869. <input type="text" v-model="table2.surveyName" />
  1870. </td>
  1871. <td colspan="2" rowspan="1">职务</td>
  1872. <td colspan="3" rowspan="1">
  1873. <input type="text" v-model="table2.surveyPosition" />
  1874. </td>
  1875. </tr>
  1876. <tr>
  1877. <td colspan="2" rowspan="1" class="txt_left">
  1878. &nbsp;11.火灾肇事人情况
  1879. </td>
  1880. <td colspan="2" rowspan="1">姓名</td>
  1881. <td colspan="2" rowspan="1">
  1882. <input type="text" v-model="table2.accidentName" />
  1883. </td>
  1884. <td colspan="2" rowspan="1">性别</td>
  1885. <td colspan="1" rowspan="1">
  1886. <input type="text" v-model="table2.accidentSex" />
  1887. </td>
  1888. <td colspan="3" rowspan="1">年龄</td>
  1889. <td colspan="1" rowspan="1">
  1890. <input type="text" v-model="table2.accidentAge" />
  1891. </td>
  1892. <td colspan="1" rowspan="1">职业</td>
  1893. <td colspan="1" rowspan="1">
  1894. <input type="text" v-model="table2.accidentPosition" />
  1895. </td>
  1896. <td colspan="2" rowspan="1">单位或住址</td>
  1897. <td colspan="9" rowspan="1">
  1898. <input type="text" v-model="table2.accidentUnit" />
  1899. </td>
  1900. </tr>
  1901. <tr>
  1902. <td colspan="2" rowspan="1" class="txt_left">
  1903. &nbsp;12.火灾处理情况
  1904. </td>
  1905. <td colspan="2" rowspan="1">处理方式</td>
  1906. <td colspan="4" rowspan="1">
  1907. <select v-model="table2.dealType">
  1908. <option>立案(刑事处理)</option>
  1909. <option>破案(刑事处理)</option>
  1910. <option>行政处理</option>
  1911. <option>待查</option>
  1912. <option>拘留</option>
  1913. <option>处理</option>
  1914. <option>未处理</option>
  1915. </select>
  1916. </td>
  1917. <td colspan="3" rowspan="1">已处理人数</td>
  1918. <td colspan="4" rowspan="1">
  1919. <input type="text" v-model="table2.dealNumber" />
  1920. </td>
  1921. <td colspan="4" rowspan="1">刑事处罚人数</td>
  1922. <td colspan="7" rowspan="1">
  1923. <input type="text" v-model="table2.criminalDealNumber" />
  1924. </td>
  1925. </tr>
  1926. <tr>
  1927. <td
  1928. colspan="2"
  1929. rowspan="1"
  1930. class="txt_left"
  1931. style="height: 60px"
  1932. >
  1933. &nbsp;13.对火灾肇事人<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;的处理情况
  1934. </td>
  1935. <td colspan="24" rowspan="1" class="txt_left">
  1936. <textarea v-model="table2.accidentDealSituation"></textarea>
  1937. </td>
  1938. </tr>
  1939. <tr>
  1940. <td
  1941. colspan="2"
  1942. rowspan="1"
  1943. class="txt_left"
  1944. style="height: 60px"
  1945. >
  1946. &nbsp;14.对责任人员的<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;责任人追查情况
  1947. </td>
  1948. <td colspan="24" rowspan="1" class="txt_left">
  1949. <textarea
  1950. v-model="table2.responsibilityDealSituation"
  1951. ></textarea>
  1952. </td>
  1953. </tr>
  1954. <tr>
  1955. <td
  1956. colspan="2"
  1957. rowspan="1"
  1958. class="txt_left"
  1959. style="height: 60px"
  1960. >
  1961. &nbsp;15.对有关领导的<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;责任追查情况
  1962. </td>
  1963. <td colspan="24" rowspan="1" class="txt_left">
  1964. <textarea v-model="table2.leadershipDealSituation"></textarea>
  1965. </td>
  1966. </tr>
  1967. <tr class="tr_border">
  1968. <td colspan="4" rowspan="1">县(市、区、局、站)填表人:</td>
  1969. <td colspan="2" rowspan="1">
  1970. <input type="text" v-model="table2.townForm" />
  1971. </td>
  1972. <td colspan="4" rowspan="1">县(市、区、局、站)审核人:</td>
  1973. <td colspan="3" rowspan="1">
  1974. <input type="text" v-model="table2.townAudit" />
  1975. </td>
  1976. <td colspan="4" rowspan="1">市(州、管委会)填表人:</td>
  1977. <td colspan="2" rowspan="1">
  1978. <input type="text" v-model="table2.cityForm" />
  1979. </td>
  1980. <td colspan="4" rowspan="1">市(州、管委会)审核人:</td>
  1981. <td colspan="3" rowspan="1">
  1982. <input type="text" v-model="table2.cityAudit" />
  1983. </td>
  1984. </tr>
  1985. </tbody>
  1986. </table>
  1987. <div class="btm-btn-group">
  1988. <el-button
  1989. size="mini"
  1990. type="primary"
  1991. @click="updateCentereventTEventcatalogueStatus('gd', true)"
  1992. >归档
  1993. </el-button>
  1994. <el-button size="mini" type="primary" @click="regionalFlagAdd()"
  1995. >火灾区域
  1996. </el-button>
  1997. </div>
  1998. </form>
  1999. </div>
  2000. </el-dialog>
  2001. <!-- 添加区域标记 -->
  2002. <el-dialog title="火灾区域" :visible.sync="regionalFlagOpen" width="1000px">
  2003. <areaSupermap
  2004. ref="fireAreaSupermap"
  2005. v-if="regionalFlagOpen"
  2006. style="width: 100%; height: 74vh"
  2007. :mapDiv="'fireAreaSuperMap'"
  2008. :mapSite="{ doubleClickZoom: false }"
  2009. :codes="['9fa5']"
  2010. :isSideBySide="false"
  2011. :showAreaLatLng="showAreaLatLng"
  2012. ></areaSupermap>
  2013. <!-- <areaSupermap ref="fireAreaSupermap" v-if="regionalFlagOpen" :showAreaLatLng="showAreaLatLng"></areaSupermap> -->
  2014. </el-dialog>
  2015. <!-- 图片,视频预览 -->
  2016. <el-dialog
  2017. title="视频预览"
  2018. :visible.sync="showTcPlayer"
  2019. width="40%"
  2020. customClass="customWidthMp4"
  2021. >
  2022. <TcPlayer
  2023. ref="TcPlayer"
  2024. :playVideo="playVideo"
  2025. :widthHeigt="[100, 100]"
  2026. ></TcPlayer>
  2027. </el-dialog>
  2028. <el-dialog
  2029. :title="cameraTitle"
  2030. :visible.sync="cameraVisible"
  2031. v-if="cameraVisible"
  2032. customClass="videoCustomWidth"
  2033. @close="cancelEventLocationShow()"
  2034. >
  2035. <div style="width: 1020px; height: 625px; position: relative">
  2036. <!--视频窗口展示---海康-->
  2037. <div id="playWnd" class="playWnd" style="left: 0px; top: 0px"></div>
  2038. </div>
  2039. </el-dialog>
  2040. <el-dialog title="人员选择" :visible.sync="showFindUserByDept" width="40%">
  2041. <findUserByDept
  2042. v-if="showFindUserByDept"
  2043. ref="findUserByDept"
  2044. :deptId="iconCurrentIndex"
  2045. @addSelection="addSelection"
  2046. ></findUserByDept>
  2047. </el-dialog>
  2048. <TVWall ref="TVWall"></TVWall>
  2049. </div>
  2050. </template>
  2051. <script>
  2052. import html2canvas from "html2canvas"; //截图组件
  2053. import supermapDialog from "@/components/supermap"; //超图
  2054. import TVWall from "@/components/TVWall.vue"; //电视墙弹窗
  2055. import vBottomMenu from "@/components/vBottomMenu.vue"; //一体化公共底部菜单
  2056. import eventLogUpload from "@/views/eventLogUpload.vue"; //日志上传文件
  2057. import areaSupermap from "@/components/supermap"; //区域标记地图
  2058. import TcPlayer from "@/components/TcPlayer"; //视频预览
  2059. import findUserByDept from "@/views/findUserByDept"; //责任人选择弹框
  2060. import leftRightSwiperScroll from "@/components/leftRightSwiperScroll.vue"; //事件中心底部资源内容溢出组件
  2061. import "animate.css"; //动画库
  2062. import { getIconBg } from "@/api/components/sookaMapIcon"; //资源底色控制文件
  2063. import {
  2064. fireControlViewPoint,
  2065. fireControlViewList,
  2066. getEventDetail,
  2067. sendEventLog,
  2068. listSJfl,
  2069. listYuAn,
  2070. selectByeventCode,
  2071. updateCentereventTEventcatalogueStatus,
  2072. sendTask,
  2073. listResourceByWz,
  2074. updateYjYuAn,
  2075. uploadBase64,
  2076. centereventtdepteventList,
  2077. dutysystemList,
  2078. dutysystemAdd,
  2079. dutysystemRemove,
  2080. sendMessage,
  2081. userFeginlist,
  2082. eventExamine,
  2083. eventHandling,
  2084. initByCameras,
  2085. } from "@/api/forest";
  2086. import { joinConferences } from "@/api/meeting";
  2087. import { treeselectAll as deptTreeselect } from "@/api/system/dept";
  2088. import { getHaiKangVideoServer } from "@/api/haikang/haikang";
  2089. import { hasConferences, createConferences, getUserInfo } from "@/api/meeting";
  2090. import { getDahuaVideoServer } from "@/api/dahua/dahua";
  2091. import DHWs from "@/dahua/lib/DHWs";
  2092. import { selectConfigKey } from "@/api/system/config";
  2093. import Cookies from "js-cookie";
  2094. export default {
  2095. dicts: ["task_source"],
  2096. watch: {
  2097. filterText(val) {
  2098. this.$refs.LiandongDept.filter(val);
  2099. },
  2100. },
  2101. components: {
  2102. leftRightSwiperScroll,
  2103. TVWall,
  2104. vBottomMenu,
  2105. supermapDialog,
  2106. eventLogUpload,
  2107. areaSupermap,
  2108. TcPlayer,
  2109. findUserByDept,
  2110. },
  2111. data() {
  2112. return {
  2113. //地图tool开关
  2114. mapToolShow: false,
  2115. mapToolCheckAll: false,
  2116. mapToolCheck: ["应急预案", "地图标绘", "资源与操作"],
  2117. mapToolCheckItem: [],
  2118. mapToolShowBH:false,
  2119. // isIndeterminate: true,
  2120. isLoading: false,
  2121. showFindUserByDept: false, //责任人选择框
  2122. //海康
  2123. cameraTitle: "",
  2124. cameraCode: "",
  2125. cameraVisible: false,
  2126. initCount: 0,
  2127. pubKey: "",
  2128. oWebControl: null,
  2129. version: 0,
  2130. playVideo: "", //视频预览地址
  2131. showTcPlayer: false, //视频预览弹窗
  2132. regionalFlagOpen: false, //区域标记
  2133. //区域标记
  2134. regionalFlagObj: {
  2135. array: [],
  2136. },
  2137. filterText: "", //树搜索
  2138. /** *****************事件流程***************************/
  2139. deptNameitem: "签收部门",
  2140. sendDeptId: null, //签收部门/发起部门
  2141. sendDeptName: null, //签收部门/发起部门
  2142. sendEventType: null, //事件类型
  2143. sendHuoZaiBanJing: 0, //火灾报告
  2144. sendGuanLianYuAn: null, //关联预案
  2145. sendUserFegin: [], //联系人
  2146. sendTaskSource: null, //任务来源
  2147. sendTaskTitle: null, //联动标题
  2148. sendTaskContent: null, //联动内容
  2149. sendLianDongDept: [], //联动部门
  2150. eventTypeList: [], //事件类型列表
  2151. guanLianYuAnList: [], //关联预案列表
  2152. userFeginList: [], //联系人列表
  2153. deptOptions: [], //签收部门
  2154. deptOptionsLiandong: [], //联动部门
  2155. eventStatusButton: null, //流程按钮标识
  2156. eventConfirmTitle: null, //弹窗标题 ---签收 误报 重复 审核意见
  2157. eventDescription: null, //审核意见
  2158. uploadAttachList: [], //审核上传图片回显集合
  2159. attachExamine: [], //审核图片集合
  2160. defaultProps: {
  2161. children: "children",
  2162. label: "label",
  2163. },
  2164. table1: {
  2165. reportUnit: null,
  2166. reportTimeY: new Date().getFullYear(),
  2167. reportTimeM: new Date().getMonth() + 1,
  2168. reportTimeD: new Date().getDate(),
  2169. forestFireLossTotal: null,
  2170. fireLossTotal: null,
  2171. forestArea: null,
  2172. forestPrice: null,
  2173. treesNumber: null,
  2174. treesPrice: null,
  2175. minorInjuriesNumber: null,
  2176. minorInjuriesPrice: null,
  2177. seriouslyInjuredNumber: null,
  2178. seriouslyInjuredPrice: null,
  2179. deathNumber: null,
  2180. deathPrice: null,
  2181. elseFireLossPrice: null,
  2182. blazesPriceTotal: null,
  2183. artificialDays: null,
  2184. artificialPrice: null,
  2185. vehicleNumber: null,
  2186. carNumber: null,
  2187. vehiclePrice: null,
  2188. planeNumber: null,
  2189. planePrice: null,
  2190. elseBlazesPrice: null,
  2191. note: null,
  2192. },
  2193. table2: {
  2194. fireTime: null,
  2195. foundTime: null,
  2196. blazesTime: null,
  2197. address: null,
  2198. firePlace: null,
  2199. foundType: null,
  2200. longitudeD: null,
  2201. longitudeM: null,
  2202. longitudeS: null,
  2203. latitudeD: null,
  2204. latitudeM: null,
  2205. latitudeS: null,
  2206. fireSource: null,
  2207. fireType: null,
  2208. fireLevel: null,
  2209. areaTotal: 0,
  2210. forestLossAreaTotal: null,
  2211. originalForestArea: null,
  2212. artificialForestArea: null,
  2213. peopleTotal: 0,
  2214. blazesTeamNumber: null,
  2215. policeNumber: null,
  2216. armyNumber: null,
  2217. crowdNumber: null,
  2218. windExtinguisher: null,
  2219. secondTool: null,
  2220. waterGun: null,
  2221. elseThings: null,
  2222. forestComposition: "无",
  2223. forestToken: "无",
  2224. porosities: "无",
  2225. weather: null,
  2226. temperature: null,
  2227. fireInsuranceLevel: null,
  2228. windLevel: null,
  2229. windDirection: null,
  2230. commandUnit: null,
  2231. commandName: null,
  2232. commandPosition: null,
  2233. surveyUnit: null,
  2234. surveyName: null,
  2235. surveyPosition: null,
  2236. accidentName: null,
  2237. accidentSex: null,
  2238. accidentAge: null,
  2239. accidentPosition: null,
  2240. accidentUnit: null,
  2241. dealType: null,
  2242. dealNumber: null,
  2243. criminalDealNumber: null,
  2244. accidentDealSituation: null,
  2245. responsibilityDealSituation: null,
  2246. leadershipDealSituation: null,
  2247. townForm: null,
  2248. townAudit: null,
  2249. cityForm: null,
  2250. cityAudit: null,
  2251. },
  2252. /** *****************事件流程***************************/
  2253. showEventConfirm: false, //事件签收弹窗
  2254. showGuanLianYuAnConfirm: false, //调整关联预案弹窗
  2255. showEventConfirm_gd: false, //事件火险报告弹窗
  2256. address: null, //事件上报地址
  2257. eventStatusValue: null, //事件状态
  2258. isExamine: "0", //事件审核 1通过 0不通过
  2259. eventId: null, //事件ID
  2260. eventType: null, //事件类型-大类
  2261. eventTypeXl: null, //事件类型-小类
  2262. statusFlag: null, //事件流程按钮
  2263. dataStatus: null, //事件处置按钮
  2264. deptId: null, //事件流程部门
  2265. eventCode: null,
  2266. eventName: null,
  2267. longitude: null,
  2268. latitude: null,
  2269. eventLog: null,
  2270. eventLogList: [],
  2271. visuForestCloudYuAnBo: null,
  2272. eventDialog: false,
  2273. showResponsibilityDialog: false, //责任制弹窗
  2274. showMeetingMsgDialog: false, //发送会议短信弹窗
  2275. depteventList: [], //责任制部门列表
  2276. iconCurrentIndex: "",
  2277. dutysystemDeptName: "",
  2278. depteventId: "",
  2279. dutysystemTableData: [],
  2280. radius: 5000, //资源搜索半径
  2281. resourcesList: [
  2282. {
  2283. resourceName: "取水口",
  2284. type: "qsk",
  2285. count: "1",
  2286. icon: "sj-icon-waterintake",
  2287. },
  2288. {
  2289. resourceName: "水鹤",
  2290. type: "sh",
  2291. icon: "sj-icon-watercrane",
  2292. },
  2293. {
  2294. resourceName: "消防栓",
  2295. type: "xfs",
  2296. count: "1",
  2297. icon: "sj-icon-firehydrant",
  2298. },
  2299. {
  2300. resourceName: "起降点",
  2301. type: "qjd",
  2302. count: "1",
  2303. icon: "sj-icon-landing",
  2304. },
  2305. {
  2306. resourceName: "检查站",
  2307. type: "jcz",
  2308. count: "1",
  2309. icon: "sj-icon-checkpoint",
  2310. },
  2311. {
  2312. resourceName: "防火队",
  2313. type: "fhd",
  2314. count: "1",
  2315. icon: "sj-icon-fireteam",
  2316. },
  2317. {
  2318. resourceName: "重点区域",
  2319. type: "zdqy",
  2320. count: "1",
  2321. icon: "sj-icon-keyAreas",
  2322. },
  2323. {
  2324. resourceName: "摄像头",
  2325. type: "sxt",
  2326. count: "1",
  2327. icon: "sj-icon-jkzx",
  2328. },
  2329. ],
  2330. resourcesListCheck: [],
  2331. //文本域
  2332. feedback: "",
  2333. };
  2334. },
  2335. props: {
  2336. calendarDay: null, //首页日历选择
  2337. },
  2338. created() {
  2339. this.closedEventDiaTool()
  2340. // this.isLoading = true;
  2341. /** ----------------------------------摄像头预览开始------------------------------------- */
  2342. const DHWsInstance = DHWs.getInstance();
  2343. this.ws = DHWsInstance;
  2344. /** ----------------------------------摄像头预览结束------------------------------------- */
  2345. },
  2346. methods: {
  2347. closedEventDiaTool() {
  2348. document.addEventListener("click", (e) => {
  2349. let b = document.getElementById("eventMapToolOnly");
  2350. let c = document.getElementById("eventMapToolOnlyButton");
  2351. if (this.mapToolShow && !b.contains(e.target) && !c.contains(e.target)) {
  2352. this.mapToolShow = false;
  2353. }
  2354. });
  2355. },
  2356. // 地图tool显隐
  2357. mapToolCheckAllChange(val) {
  2358. this.mapToolCheckItem = [];
  2359. this.mapToolCheckItem = val ? this.mapToolCheck : [];
  2360. // this.isIndeterminate = false;
  2361. this.mapToolCheckChangeBH()
  2362. },
  2363. mapToolCheckChangeBH(){
  2364. if (this.mapToolCheckItem.includes("地图标绘")) {
  2365. this.mapToolShowBH= true
  2366. } else {
  2367. this.mapToolShowBH= false
  2368. }
  2369. },
  2370. mapToolCheckChange(value) {
  2371. let checkedCount = value.length;
  2372. this.mapToolCheckAll = checkedCount === this.mapToolCheck.length;
  2373. this.mapToolCheckChangeBH()
  2374. },
  2375. // 获取消防左侧菜单列表
  2376. fireControlViewList() {
  2377. this.resourcesList = [];
  2378. let _this = this;
  2379. fireControlViewList("xiaofang").then(function (res) {
  2380. // _this.resourcesList = res.data
  2381. //截取data.resourceTable字段中“_”分隔符最后一个作为关键字,重新拼接成前端需要的图标:class,格式sj-icon-xxxx,将其set回原数组
  2382. res.data.forEach(function (data, index) {
  2383. let obj = {};
  2384. let icon =
  2385. "sj" +
  2386. "-" +
  2387. "icon" +
  2388. "-" +
  2389. data.type.replaceAll("_", "-").replaceAll("@", "-");
  2390. let resourceName = data.name.replaceAll("(个)", "");
  2391. obj.resourceName = resourceName;
  2392. obj.type = data.type;
  2393. obj.count = data.num;
  2394. obj.icon = icon;
  2395. _this.resourcesList.push(obj);
  2396. console.log("icon_" + (index + 1) + "=", icon);
  2397. //每个图标对应固定颜色
  2398. _this.$set(_this.resourcesList[index], "bg", getIconBg(icon));
  2399. });
  2400. _this.resourcesList.push({
  2401. resourceName: "摄像头",
  2402. type: "sxt",
  2403. count: "1",
  2404. icon: "sj-icon-jkzx",
  2405. bg: "#f5ad1b",
  2406. });
  2407. });
  2408. },
  2409. /************************************责任制-开始****************************************/
  2410. addLine: function () {
  2411. //添加负责人行数
  2412. var newValue = {
  2413. id: "", //主键
  2414. userId: "", //用户主键
  2415. dept: "", //部门名称
  2416. depteventId: "", //事件部门关联责任人
  2417. name: "", //姓名
  2418. post: "", //岗位
  2419. telphone: "", //手机号addSelection
  2420. };
  2421. //添加新的行数
  2422. this.dutysystemTableData.push(newValue);
  2423. },
  2424. finUserByDept: function () {
  2425. //根据部门选择责任人
  2426. this.showFindUserByDept = true;
  2427. },
  2428. addSelection: function (userList) {
  2429. for (let i in this.dutysystemTableData) {
  2430. for (let j in userList) {
  2431. if (
  2432. this.dutysystemTableData[i].name == userList[j].name &&
  2433. this.dutysystemTableData[i].telphone == userList[j].telphone
  2434. ) {
  2435. userList.splice(j, 1);
  2436. }
  2437. }
  2438. }
  2439. this.dutysystemTableData = this.dutysystemTableData.concat(userList);
  2440. this.showFindUserByDept = false;
  2441. },
  2442. handleDelete: function (index, row) {
  2443. //删除负责人行数
  2444. if (row.id != null && row.id != "") {
  2445. let param = {
  2446. ids: row.id,
  2447. };
  2448. dutysystemRemove(param).then((res) => {
  2449. this.$message.success(`删除成功!`);
  2450. this.dutysystemSelect(
  2451. this.iconCurrentIndex,
  2452. this.dutysystemDeptName,
  2453. this.depteventId
  2454. );
  2455. });
  2456. } else {
  2457. this.dutysystemTableData.splice(index, 1);
  2458. }
  2459. },
  2460. handleSave: function (index, rowData) {
  2461. //保存负责人行数
  2462. rowData.dept = this.dutysystemDeptName;
  2463. rowData.depteventId = this.depteventId;
  2464. dutysystemAdd(rowData).then((res) => {
  2465. this.$message.success(`保存成功!`);
  2466. this.dutysystemSelect(
  2467. this.iconCurrentIndex,
  2468. this.dutysystemDeptName,
  2469. this.depteventId
  2470. );
  2471. });
  2472. },
  2473. dutysystemSelect: function (deptId, dutysystemDeptName, depteventId) {
  2474. //通过部门查询负责人信息
  2475. this.dutysystemDeptName = dutysystemDeptName;
  2476. this.depteventId = depteventId;
  2477. this.iconCurrentIndex = deptId;
  2478. let param = {
  2479. depteventId: depteventId,
  2480. };
  2481. dutysystemList(param).then((res) => {
  2482. if (res.data != null && res.data.length > 0) {
  2483. this.dutysystemTableData = res.data;
  2484. } else {
  2485. this.dutysystemTableData = [];
  2486. }
  2487. });
  2488. },
  2489. showResponsibility() {
  2490. //弹出责任制弹窗
  2491. //初始化责任制数据列表
  2492. this.dutysystemTableData = [];
  2493. let param = {
  2494. eventCode: this.eventCode,
  2495. };
  2496. centereventtdepteventList(param).then((res) => {
  2497. this.depteventList = res.data;
  2498. this.showResponsibilityDialog = true;
  2499. });
  2500. },
  2501. closeResponsibilityDialog() {
  2502. //责任制关闭
  2503. this.dutysystemTableData = [];
  2504. this.dutysystemDeptName = "";
  2505. this.depteventId = "";
  2506. this.iconCurrentIndex = "";
  2507. this.showResponsibilityDialog = false;
  2508. },
  2509. closeMeetingMsgDialog() {
  2510. //会议弹窗关闭
  2511. this.dutysystemTableData = [];
  2512. this.dutysystemDeptName = "";
  2513. this.depteventId = "";
  2514. this.iconCurrentIndex = "";
  2515. this.showMeetingMsgDialog = false;
  2516. },
  2517. addResponsibilityDialog() {
  2518. //责任制保存
  2519. console.log(this.dutysystemTableData);
  2520. let reg_user = /^[\u4e00-\u9fa5]{2,4}$/; //2-4个中文字符正则
  2521. let reg_tel =
  2522. /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/; //11位手机号码正则
  2523. for (let i in this.dutysystemTableData) {
  2524. if (!reg_user.test(this.dutysystemTableData[i].name)) {
  2525. this.$message.error(`请输入正确姓名!`);
  2526. return;
  2527. }
  2528. if (!reg_tel.test(this.dutysystemTableData[i].telphone)) {
  2529. this.$message.error(`请输入正确手机号码!`);
  2530. return;
  2531. }
  2532. if (
  2533. this.dutysystemTableData[i].id == null ||
  2534. this.dutysystemTableData[i].id == ""
  2535. ) {
  2536. this.dutysystemTableData[i].dept = this.dutysystemDeptName;
  2537. this.dutysystemTableData[i].depteventId = this.depteventId;
  2538. }
  2539. }
  2540. const param = {
  2541. centereventTDutySystemList: this.dutysystemTableData,
  2542. eventCode: this.eventCode,
  2543. eventName: this.eventName,
  2544. };
  2545. dutysystemAdd(param).then((res) => {
  2546. this.$message.success(`保存成功!`);
  2547. this.dutysystemSelect(
  2548. this.iconCurrentIndex,
  2549. this.dutysystemDeptName,
  2550. this.depteventId
  2551. );
  2552. this.closeResponsibilityDialog();
  2553. });
  2554. },
  2555. /************************************责任制-结束****************************************/
  2556. showheatPlotting() {
  2557. // if (!this.$refs.supermapDialog.isheatPlotting) {
  2558. // this.$refs.supermapDialog.showheatPlotting(this.latitude, this.longitude)
  2559. // } else {
  2560. // this.$refs.supermapDialog.isheatPlotting = false
  2561. // }
  2562. // this.cancelEventShow();
  2563. this.eventDialog = false;
  2564. this.$emit("getFirespread", this.eventCode);
  2565. },
  2566. showTVWallDiaLog() {
  2567. this.initByCameras();
  2568. // this.$refs.TVWall.showTVWall();
  2569. },
  2570. showTVWall(channelCode, channelName) {
  2571. let tvListJson = [
  2572. {
  2573. switchTab: "2",
  2574. treeLabels: [
  2575. {
  2576. id: null,
  2577. labelCode: "999",
  2578. labelName: "电视墙",
  2579. cameraType: null,
  2580. parentLabelCode: "",
  2581. },
  2582. {
  2583. id: "spcamera00010",
  2584. labelCode: channelCode,
  2585. labelName: channelName,
  2586. cameraType: "1",
  2587. parentLabelCode: "999",
  2588. },
  2589. ],
  2590. labelChannels: [
  2591. {
  2592. labelCode: channelCode,
  2593. channelDates: [
  2594. {
  2595. channelCode: channelCode,
  2596. channelName: channelName,
  2597. channelSn: null,
  2598. cameraType: "1",
  2599. online: "1",
  2600. cameraCode: "1",
  2601. },
  2602. ],
  2603. },
  2604. ],
  2605. },
  2606. ];
  2607. this.$refs.TVWall.showTVWall(tvListJson, [
  2608. {
  2609. channelId: channelCode,
  2610. },
  2611. ]);
  2612. this.$refs.bottomMenu.showMeasure = false;
  2613. this.$refs.bottomMenu.showChild = false;
  2614. this.$refs.bottomMenu.showBanChild = false;
  2615. this.$refs.bottomMenu.showChangChild = false;
  2616. },
  2617. initByCameras() {
  2618. const params = Object.assign({});
  2619. params.longitude = this.longitude;
  2620. params.latitude = this.latitude;
  2621. params.type = "8";
  2622. initByCameras(params).then((res) => {
  2623. this.$refs.TVWall.showTVWall1(this.longitude, this.latitude, res.data);
  2624. this.$refs.bottomMenu.showMeasure = false;
  2625. this.$refs.bottomMenu.showChild = false;
  2626. this.$refs.bottomMenu.showBanChild = false;
  2627. this.$refs.bottomMenu.showChangChild = false;
  2628. });
  2629. },
  2630. showUpdateYjYuAn() {
  2631. listYuAn().then((res) => {
  2632. //关联预案列表
  2633. if (res.code == 200) {
  2634. this.guanLianYuAnList = res.data;
  2635. this.showGuanLianYuAnConfirm = true;
  2636. }
  2637. });
  2638. },
  2639. updateYjYuAn() {
  2640. if (
  2641. this.eventStatusValue == "forest_event_status_1" ||
  2642. this.eventStatusValue == "forest_event_status_7"
  2643. ) {
  2644. this.$message.error(`修改预案信息在签收后方可修改!`);
  2645. return;
  2646. } else if (this.eventStatusValue == "forest_event_status_3") {
  2647. this.$message.error(`误报事件无法修改预案信息!`);
  2648. return;
  2649. } else {
  2650. let param = {
  2651. eventCode: this.eventCode,
  2652. reserve: this.sendGuanLianYuAn,
  2653. };
  2654. if (this.sendGuanLianYuAn == "" || this.sendGuanLianYuAn == null) {
  2655. this.$message.error(`请选择预案信息!`);
  2656. return;
  2657. }
  2658. updateYjYuAn(param).then((res) => {
  2659. //事件调整关联预案
  2660. if (res.code == 200) {
  2661. this.$message.success(`预案调整成功!`);
  2662. this.refreshEventDialog(this.eventCode);
  2663. this.sendGuanLianYuAn = null;
  2664. this.showGuanLianYuAnConfirm = false;
  2665. }
  2666. });
  2667. }
  2668. },
  2669. fireControlViewPoint(type) {
  2670. // alert(type)
  2671. if (this.resourcesListCheck.indexOf(type) > -1) {
  2672. this.resourcesListCheck.splice(
  2673. this.resourcesListCheck.indexOf(type),
  2674. 1
  2675. );
  2676. setTimeout(() => {
  2677. this.$refs.supermapDialog.clearMByType(type);
  2678. }, 1000);
  2679. } else {
  2680. // 消防资源落点
  2681. let param = {
  2682. longitude: this.longitude,
  2683. latitude: this.latitude,
  2684. type: type,
  2685. radius: this.radius,
  2686. };
  2687. if (type != "sxt") {
  2688. fireControlViewPoint(param).then((res) => {
  2689. if (res.data != null && res.data.pointList.length > 0) {
  2690. this.resourcesListCheck.push(type);
  2691. var markersList = [];
  2692. for (let i = 0; i < res.data.pointList.length; i++) {
  2693. let markersMap = {
  2694. lng: 124.59,
  2695. lat: 43.02,
  2696. icon: "marker",
  2697. bindPopupHtml: "",
  2698. click: "",
  2699. parameter: "",
  2700. keepBindPopup: false,
  2701. isAggregation: true,
  2702. };
  2703. markersMap.icon = "sj-icon-map-" + type.replaceAll("_", "-");
  2704. markersMap.lng = res.data.pointList[i].longitude;
  2705. markersMap.lat = res.data.pointList[i].latitude;
  2706. markersMap.bindPopupHtml =
  2707. '<div class="map-tip">' +
  2708. "<span>" +
  2709. ' <div class="d-l-con">' +
  2710. ' <div class="d-l-l-text">' +
  2711. " <h4>资源名称:" +
  2712. res.data.pointList[i].name +
  2713. "</h4>" +
  2714. " </div>" +
  2715. " </div>" +
  2716. " </span>" +
  2717. "<span>" +
  2718. ' <div class="d-l-con">' +
  2719. ' <div class="d-l-l-text">' +
  2720. " <h4>经纬度:" +
  2721. res.data.pointList[i].longitude +
  2722. "," +
  2723. res.data.pointList[i].latitude +
  2724. "</h4>" +
  2725. " </div>" +
  2726. " </div>" +
  2727. " </span>" +
  2728. "<span>" +
  2729. ' <div class="d-l-con">' +
  2730. ' <div class="d-l-l-text">' +
  2731. " <h4>名称:" +
  2732. (res.data.pointList[i].name?res.data.pointList[i].name:'无') +
  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.pointList[i].address?res.data.pointList[i].address:'无') +
  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.pointList[i].contacts?res.data.pointList[i].contacts:'无') +
  2751. "</h4>" +
  2752. " </div>" +
  2753. " </div>" +
  2754. " </span>" +
  2755. "<span>" +
  2756. ' <div class="d-l-con">' +
  2757. ' <div class="d-l-l-text">' +
  2758. " <h4>电话:" +
  2759. (res.data.pointList[i].phone?res.data.pointList[i].phone:'无') +
  2760. "</h4>" +
  2761. " </div>" +
  2762. " </div>" +
  2763. " </span>" +
  2764. "<span>" +
  2765. ' <div class="d-l-con">' +
  2766. ' <div class="d-l-l-text">' +
  2767. " <h4>距离事件距离:" +
  2768. (res.data.pointList[i].distance?res.data.pointList[i].distance+'米':'无') +
  2769. "</h4>" +
  2770. " </div>" +
  2771. " </div>" +
  2772. " </span>" +
  2773. "</div>";
  2774. markersList.push(markersMap);
  2775. }
  2776. setTimeout(() => {
  2777. this.$refs.supermapDialog.setMarkersByType(markersList, type);
  2778. }, 1000);
  2779. } else {
  2780. this.$message.warning("当前点位附近无资源数据");
  2781. }
  2782. });
  2783. } else {
  2784. this.listResourceByWz(type);
  2785. }
  2786. }
  2787. },
  2788. listResourceByWz(type) {
  2789. if (this.resourcesListCheck.indexOf(type) > -1) {
  2790. this.resourcesListCheck.splice(
  2791. this.resourcesListCheck.indexOf(type),
  2792. 1
  2793. );
  2794. setTimeout(() => {
  2795. this.$refs.supermapDialog.clearMByType(type);
  2796. }, 1000);
  2797. } else {
  2798. //搜索物资
  2799. let param = {
  2800. longitude: this.longitude,
  2801. latitude: this.latitude,
  2802. type: type,
  2803. radius: this.radius,
  2804. };
  2805. listResourceByWz(param).then((res) => {
  2806. if (res.data != null && res.data.length > 0) {
  2807. this.resourcesListCheck.push(type);
  2808. var markersList = [];
  2809. for (let i = 0; i < res.data.length; i++) {
  2810. let markersMap = {
  2811. lng: 124.59,
  2812. lat: 43.02,
  2813. icon: "marker",
  2814. bindPopupHtml: "",
  2815. click: "",
  2816. parameter: "",
  2817. keepBindPopup: false,
  2818. isAggregation: true,
  2819. };
  2820. if (type == "qsk") {
  2821. markersMap.icon = "sj-icon-centerdata-t-forest-waterintake";
  2822. } else if (type == "sh") {
  2823. markersMap.icon = "sj-icon-centerdata-t-forest-watercrane";
  2824. } else if (type == "xfs") {
  2825. markersMap.icon = "sj-icon-centerdata-t-forest-firehydrant";
  2826. } else if (type == "qjd") {
  2827. markersMap.icon = "sj-icon-landing";
  2828. } else if (type == "jcz") {
  2829. markersMap.icon = "sj-icon-checkpoint";
  2830. } else if (type == "fhd") {
  2831. markersMap.icon = "sj-icon-fireteam";
  2832. } else if (type == "zdqy") {
  2833. markersMap.icon = "sj-icon-keyAreas";
  2834. } else if (type == "sxt") {
  2835. if(res.data[i].cameraUse==1)
  2836. {
  2837. if(res.data[i].workingStatus==0)
  2838. {
  2839. markersMap.icon='sj-icon-map-centerdata-slmonitor'
  2840. markersMap.click='preview'
  2841. }else if (res.data[i].workingStatus==1)
  2842. {
  2843. markersMap.icon='sj-icon-map-not-centerdata-slmonitor'
  2844. markersMap.click=''
  2845. }
  2846. } else if (res.data[i].cameraUse == 2){
  2847. if(res.data[i].workingStatus==0)
  2848. {
  2849. markersMap.icon = "camera";
  2850. markersMap.click='preview'
  2851. }else if (res.data[i].workingStatus==1)
  2852. {
  2853. markersMap.icon = "camera-not";
  2854. markersMap.click=''
  2855. }
  2856. } else if (res.data[i].cameraUse == 3) {
  2857. if(res.data[i].workingStatus==0)
  2858. {
  2859. markersMap.icon = 'sj-icon-map-centerdata-slmonitor-traffic'
  2860. markersMap.click='preview'
  2861. }else if (res.data[i].workingStatus==1)
  2862. {
  2863. markersMap.icon = 'sj-icon-map-not-centerdata-slmonitor-traffic'
  2864. markersMap.click=''
  2865. }
  2866. }
  2867. else if (res.data[i].cameraUse == 4) {
  2868. if(res.data[i].workingStatus==0)
  2869. {
  2870. markersMap.icon = 'sj-icon-map-centerdata-sand-quarry-camera'
  2871. markersMap.click='preview'
  2872. }else if (res.data[i].workingStatus==1)
  2873. {
  2874. markersMap.icon = 'sj-icon-map-not-centerdata-sand-quarry-camera'
  2875. markersMap.click=''
  2876. }
  2877. }
  2878. else if (res.data[i].cameraUse == 5) {
  2879. if (res.data[i].workingStatus == 0) {
  2880. markersMap.icon = 'sj-icon-map-centerdata-t-hydraulic-reservoir-camera'
  2881. markersMap.click = 'preview'
  2882. } else if (res.data[i].workingStatus == 1) {
  2883. markersMap.icon = 'sj-icon-map-not-centerdata-t-hydraulic-reservoir-camera'
  2884. markersMap.click = ''
  2885. }
  2886. }
  2887. if (res.data[i].cameraCode != null) {
  2888. markersMap.click = "preview";
  2889. // markersMap.parameter = res.data[i].cameraCode
  2890. markersMap.parameter = {
  2891. code: res.data[i].cameraCode,
  2892. type: res.data[i].cameraFactory
  2893. ? res.data[i].cameraFactory
  2894. : 1,
  2895. name: res.data[i].cameraName,
  2896. };
  2897. }
  2898. }
  2899. markersMap.lng = res.data[i].longitude;
  2900. markersMap.lat = res.data[i].latitude;
  2901. markersMap.bindPopupHtml =
  2902. '<div class="map-tip">' +
  2903. "<span>" +
  2904. ' <div class="d-l-con">' +
  2905. ' <div class="d-l-l-text">' +
  2906. " <h4>资源名称:" +
  2907. res.data[i].cameraName +
  2908. "</h4>" +
  2909. " </div>" +
  2910. " </div>" +
  2911. " </span>" +
  2912. "</div>";
  2913. markersList.push(markersMap);
  2914. }
  2915. setTimeout(() => {
  2916. this.$refs.supermapDialog.setMarkersByType(markersList, type);
  2917. }, 1000);
  2918. }
  2919. });
  2920. }
  2921. },
  2922. // 返回图片列表
  2923. assetTypeAnImage(filePath) {
  2924. let imageList = [];
  2925. if (filePath != null && filePath.length > 0) {
  2926. for (let i = 0; i < filePath.length; i++) {
  2927. if (filePath[i].fileType == "image") {
  2928. imageList.push(filePath[i].fileUrl);
  2929. }
  2930. }
  2931. }
  2932. return imageList;
  2933. },
  2934. clickFile(fileUrl, fileName, fileType) {
  2935. if (fileType == "image") {
  2936. return;
  2937. } else if (fileType == "video") {
  2938. this.showTcPlayer = true;
  2939. setTimeout(() => {
  2940. this.playVideo = fileUrl;
  2941. }, 500);
  2942. } else {
  2943. let a = document.createElement("a");
  2944. a.download = fileName;
  2945. a.href = fileUrl;
  2946. a.target = "_blank";
  2947. a.click();
  2948. }
  2949. },
  2950. setValue(event) {
  2951. //签收选择部门
  2952. this.sendDeptName = event.label;
  2953. this.sendDeptId = event.value;
  2954. },
  2955. cancelEventConfirm() {
  2956. //关闭事件签收弹窗
  2957. this.sendDeptId = null;
  2958. this.sendDeptName = null;
  2959. this.sendUserFegin = [];
  2960. this.sendEventType = null;
  2961. this.sendHuoZaiBanJing = 0;
  2962. this.sendGuanLianYuAn = null;
  2963. // this.longitude = null
  2964. // this.latitude = null
  2965. this.sendTaskTitle = null;
  2966. this.sendTaskSource = null;
  2967. this.sendTaskContent = null;
  2968. this.sendLianDongDept = [];
  2969. this.eventTypeList = []; //事件类型列表
  2970. this.guanLianYuAnList = []; //关联预案列表
  2971. this.deptOptions = []; //签收部门
  2972. this.deptOptionsLiandong = []; //联动部门
  2973. this.eventStatusButton = null; //流程按钮标识
  2974. this.eventConfirmTitle = null; //流程按钮标识
  2975. this.resourcesListCheck = [];
  2976. this.userFeginList = []; //联系人列表
  2977. },
  2978. cancelEventConfirm_send() {
  2979. //清空表单数据
  2980. this.sendDeptId = null;
  2981. this.sendDeptName = null;
  2982. this.sendUserFegin = [];
  2983. this.sendEventType = null;
  2984. this.sendHuoZaiBanJing = 0;
  2985. this.sendGuanLianYuAn = null;
  2986. this.sendTaskTitle = null;
  2987. this.sendTaskSource = null;
  2988. this.sendTaskContent = null;
  2989. this.sendLianDongDept = [];
  2990. this.eventTypeList = []; //事件类型列表
  2991. this.guanLianYuAnList = []; //关联预案列表
  2992. this.deptOptions = []; //签收部门
  2993. this.deptOptionsLiandong = []; //联动部门
  2994. this.userFeginList = []; //联系人列表
  2995. },
  2996. cancelEventConfirm_gd() {
  2997. //关闭事件火险报告窗口
  2998. this.resetTable1();
  2999. this.resetTable2();
  3000. },
  3001. cancelEventConfirm_mp4() {
  3002. //关闭视频窗口
  3003. this.playVideo = "";
  3004. this.$refs.TcPlayer.destroyed();
  3005. },
  3006. resetTable1() {
  3007. this.table1 = {
  3008. reportUnit: null,
  3009. reportTimeY: null,
  3010. reportTimeM: null,
  3011. reportTimeD: null,
  3012. forestFireLossTotal: null,
  3013. fireLossTotal: null,
  3014. forestArea: null,
  3015. forestPrice: null,
  3016. treesNumber: null,
  3017. treesPrice: null,
  3018. minorInjuriesNumber: null,
  3019. minorInjuriesPrice: null,
  3020. seriouslyInjuredNumber: null,
  3021. seriouslyInjuredPrice: null,
  3022. deathNumber: null,
  3023. deathPrice: null,
  3024. elseFireLossPrice: null,
  3025. blazesPriceTotal: null,
  3026. artificialDays: null,
  3027. artificialPrice: null,
  3028. vehicleNumber: null,
  3029. carNumber: null,
  3030. vehiclePrice: null,
  3031. planeNumber: null,
  3032. planePrice: null,
  3033. elseBlazesPrice: null,
  3034. note: null,
  3035. };
  3036. },
  3037. resetTable2() {
  3038. this.table2 = {
  3039. fireTime: null,
  3040. foundTime: null,
  3041. blazesTime: null,
  3042. address: null,
  3043. firePlace: null,
  3044. foundType: null,
  3045. longitudeD: null,
  3046. longitudeM: null,
  3047. longitudeS: null,
  3048. latitudeD: null,
  3049. latitudeM: null,
  3050. latitudeS: null,
  3051. fireSource: null,
  3052. fireType: null,
  3053. fireLevel: null,
  3054. areaTotal: null,
  3055. forestLossAreaTotal: null,
  3056. originalForestArea: null,
  3057. artificialForestArea: null,
  3058. peopleTotal: null,
  3059. blazesTeamNumber: null,
  3060. policeNumber: null,
  3061. armyNumber: null,
  3062. crowdNumber: null,
  3063. windExtinguisher: null,
  3064. secondTool: null,
  3065. waterGun: null,
  3066. elseThings: null,
  3067. forestComposition: null,
  3068. forestToken: null,
  3069. porosities: null,
  3070. weather: null,
  3071. temperature: null,
  3072. fireInsuranceLevel: null,
  3073. windLevel: null,
  3074. windDirection: null,
  3075. commandUnit: null,
  3076. commandName: null,
  3077. commandPosition: null,
  3078. surveyUnit: null,
  3079. surveyName: null,
  3080. surveyPosition: null,
  3081. accidentName: null,
  3082. accidentSex: null,
  3083. accidentAge: null,
  3084. accidentPosition: null,
  3085. accidentUnit: null,
  3086. dealType: null,
  3087. dealNumber: null,
  3088. criminalDealNumber: null,
  3089. accidentDealSituation: null,
  3090. responsibilityDealSituation: null,
  3091. leadershipDealSituation: null,
  3092. townForm: null,
  3093. townAudit: null,
  3094. cityForm: null,
  3095. cityAudit: null,
  3096. };
  3097. },
  3098. getUrl(urlList) {
  3099. this.uploadAttachList = urlList;
  3100. this.attachExamine = [];
  3101. urlList.forEach((item) => {
  3102. var attachPath = {
  3103. attachPath: item.name,
  3104. };
  3105. this.attachExamine.push(attachPath);
  3106. });
  3107. },
  3108. //设置联动部门不可选择本部门
  3109. recursiveChildren(arrayList,deptId) {
  3110. arrayList.forEach((item, index) => {
  3111. if(item.id==deptId){
  3112. item.disabled="true";
  3113. return
  3114. }
  3115. if(item.children){
  3116. this.recursiveChildren(item.children,deptId)
  3117. }
  3118. });
  3119. },
  3120. /**
  3121. * eventStatusValue 事件状态
  3122. * isSend 是否办理
  3123. * */
  3124. async updateCentereventTEventcatalogueStatus(eventStatus, isSend) {
  3125. this.eventStatusButton = eventStatus;
  3126. let that = this;
  3127. if (!isSend) {
  3128. //事件弹窗
  3129. if (eventStatus == "qs") {
  3130. //签收
  3131. that.eventConfirmTitle = "事件签收";
  3132. let param = {
  3133. parentId: that.eventType,
  3134. };
  3135. if (that.eventTypeXl != null) {
  3136. that.sendEventType = that.eventTypeXl;
  3137. } else {
  3138. await listSJfl(param).then((res) => {
  3139. //事件类型
  3140. if (res.code == 200) {
  3141. that.eventTypeList = res.data;
  3142. }
  3143. });
  3144. }
  3145. await listYuAn().then((res) => {
  3146. //关联预案
  3147. if (res.code == 200) {
  3148. that.guanLianYuAnList = res.data;
  3149. }
  3150. });
  3151. await selectByeventCode(that.eventCode).then((res) => {
  3152. //签收部门
  3153. if (res.code == 200) {
  3154. that.deptOptions = res.data;
  3155. that.deptNameitem = "签收部门";
  3156. }
  3157. });
  3158. that.showEventConfirm = true;
  3159. } else if (eventStatus == "qr") {
  3160. //确认
  3161. that.eventConfirmTitle = "事件确认";
  3162. } else if (eventStatus == "wb") {
  3163. //误报
  3164. that.eventConfirmTitle = "事件误报";
  3165. await selectByeventCode(that.eventCode).then((res) => {
  3166. //签收部门
  3167. if (res.code == 200) {
  3168. that.deptOptions = res.data;
  3169. that.deptNameitem = "签收部门";
  3170. }
  3171. });
  3172. that.showEventConfirm = true;
  3173. } else if (eventStatus == "cf") {
  3174. //重复
  3175. that.eventConfirmTitle = "事件重复";
  3176. await selectByeventCode(that.eventCode).then((res) => {
  3177. //签收部门
  3178. if (res.code == 200) {
  3179. that.deptOptions = res.data;
  3180. that.deptNameitem = "签收部门";
  3181. }
  3182. });
  3183. that.showEventConfirm = true;
  3184. } else if (eventStatus == "ld") {
  3185. //联动
  3186. await selectByeventCode(that.eventCode).then((res) => {
  3187. //签收部门
  3188. if (res.code == 200) {
  3189. that.deptOptions = res.data;
  3190. that.deptNameitem = "发起部门";
  3191. }
  3192. });
  3193. that.eventConfirmTitle = "事件联动";
  3194. /** 查询部门树结构 */
  3195. await deptTreeselect().then((response) => {
  3196. let deptId=Cookies.get("deptId")
  3197. that.recursiveChildren(response.data,deptId)
  3198. that.deptOptionsLiandong = response.data;
  3199. });
  3200. that.showEventConfirm = true;
  3201. } else if (eventStatus == "sh") {
  3202. //审核
  3203. that.eventConfirmTitle = "事件审核";
  3204. that.showEventConfirm = true;
  3205. } else if (eventStatus == "gd") {
  3206. //归档填报
  3207. that.showEventConfirm_gd = true;
  3208. }
  3209. } else {
  3210. //事件提交后台
  3211. if (eventStatus == "ld") {
  3212. //事件处理流程--联动1
  3213. let array = that.$refs.LiandongDept.getCheckedNodes();
  3214. if (array != null && array.length > 0) {
  3215. for (let i = 0; i < array.length; i++) {
  3216. that.sendLianDongDept.push({
  3217. taskDeptId: array[i].id,
  3218. taskDeptName: array[i].label,
  3219. });
  3220. }
  3221. }
  3222. if (that.sendTaskSource == "" || that.sendTaskSource == null) {
  3223. that.$message.error(`请选择任务来源!`);
  3224. return;
  3225. }
  3226. if (that.sendTaskContent == "" || that.sendTaskContent == null) {
  3227. that.$message.error(`请输入任务内容!`);
  3228. return;
  3229. }
  3230. if (that.sendTaskTitle == "" || that.sendTaskTitle == null) {
  3231. that.$message.error(`请输入任务标题!`);
  3232. return;
  3233. }
  3234. if (that.sendLianDongDept == "" || that.sendLianDongDept == null) {
  3235. that.$message.error(`请选择任务联动部门!`);
  3236. return;
  3237. }
  3238. // if (that.sendDeptId == '' || that.sendDeptId == null || that.sendDeptName == '' || that.sendDeptName ==
  3239. // null) {
  3240. // that.$message.error(`请选择任务发起部门!`)
  3241. // return
  3242. // }
  3243. let eventState = "";
  3244. listSJfl({
  3245. parentId: that.eventType,
  3246. }).then((res) => {
  3247. if (res.code == 200) {
  3248. for (let i in res.data) {
  3249. if (res.data[i].id == that.eventTypeXl) {
  3250. eventState = res.data[i].eventTypeName;
  3251. }
  3252. }
  3253. let param = {
  3254. sendDeptId: Cookies.get("deptId"),
  3255. sendDept: Cookies.get("deptName"),
  3256. eventCode: that.eventCode,
  3257. longitude: that.longitude,
  3258. latitude: that.latitude,
  3259. taskTitle: that.sendTaskTitle,
  3260. taskSource: that.sendTaskSource,
  3261. taskContent: that.sendTaskContent,
  3262. taskDept: that.sendLianDongDept,
  3263. eventAddress: that.address,
  3264. eventState: eventState,
  3265. eventName: that.eventName,
  3266. };
  3267. sendTask(param).then((res) => {
  3268. if (res.code == 200) {
  3269. that.$message.success(`联动发起成功!`);
  3270. that.refreshEventDialog(that.eventCode);
  3271. that.cancelEventConfirm_send();
  3272. that.showEventConfirm = false;
  3273. }
  3274. });
  3275. }
  3276. });
  3277. } else if (eventStatus == "gd") {
  3278. if (that.eventTypeXl == 101) {
  3279. let double =
  3280. /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/; //数字和两位小数
  3281. let number = /^[+]{0,1}(\d+)$/g; //正整数
  3282. if (!double.test(that.table2.areaTotal)) {
  3283. that.$message.error(`面积只能填写到小数后两位!`);
  3284. return;
  3285. }
  3286. if (!number.test(that.table2.peopleTotal)) {
  3287. that.$message.error(`人员请填写正整数!`);
  3288. return;
  3289. }
  3290. if (
  3291. that.table2.forestComposition == "" ||
  3292. that.table2.forestComposition == null
  3293. ) {
  3294. that.$message.error(`林木组成不能为空!`);
  3295. return;
  3296. }
  3297. if (
  3298. that.table2.forestToken == "" ||
  3299. that.table2.forestToken == null
  3300. ) {
  3301. that.$message.error(`林令不能为空!`);
  3302. return;
  3303. }
  3304. if (
  3305. that.table2.porosities == "" ||
  3306. that.table2.porosities == null
  3307. ) {
  3308. that.$message.error(`疏密度不能为空!`);
  3309. return;
  3310. }
  3311. }
  3312. //事件处理流程--归档
  3313. let param = {
  3314. deptId: that.deptId,
  3315. eventCode: that.eventCode,
  3316. eventStatus: eventStatus,
  3317. id: that.eventId,
  3318. version: that.version,
  3319. czlx: "",
  3320. forestFireLoss: {
  3321. eventId: that.eventCode,
  3322. table1: that.table1,
  3323. },
  3324. fireInformation: {
  3325. eventId: that.eventCode,
  3326. table2: that.table2,
  3327. },
  3328. array: that.regionalFlagObj.array,
  3329. };
  3330. updateCentereventTEventcatalogueStatus(param).then((res) => {
  3331. if (res.code == 200) {
  3332. that.$message.success(`处理成功!`);
  3333. that.refreshEvent(that.eventCode);
  3334. that.cancelEventConfirm_send();
  3335. that.showEventConfirm_gd = false;
  3336. that.$emit("getEventList", that.calendarDay, 10, 1);
  3337. that.$emit("getSupermap", that.calendarDay);
  3338. } else if (res.code == 304) {
  3339. console.log(that.eventCode);
  3340. this.$message.warning(res.msg);
  3341. this.showEventDialog(that.eventCode);
  3342. //获取事件详情
  3343. }
  3344. });
  3345. } else if (eventStatus == "shtg") {
  3346. that.eventStatusButton = "sh";
  3347. if (that.eventDescription == "" || that.eventDescription == null) {
  3348. that.$message.error(`请填写审核意见!`);
  3349. return;
  3350. }
  3351. if (that.attachExamine.length == 0 || that.attachExamine == null) {
  3352. that.$message.error(`请上传审核图片!`);
  3353. return;
  3354. }
  3355. //事件处理流程--审核通过
  3356. let param = {
  3357. id: that.eventId, //事件id
  3358. eventCode: that.eventCode, //事件编号
  3359. eventName: that.eventName, //事件名称
  3360. isExamine: 1, //通过传1,不通过传0
  3361. version: that.version,
  3362. eventDescription: that.eventDescription, //审核意见
  3363. attach: that.attachExamine,
  3364. };
  3365. eventExamine(param).then((res) => {
  3366. if (res.code == 200) {
  3367. that.$message.success(`处理成功!`);
  3368. that.refreshEvent(that.eventCode);
  3369. that.cancelEventConfirm_send();
  3370. that.showEventConfirm = false;
  3371. } else if (res.code == 304) {
  3372. console.log(that.eventCode);
  3373. this.$message.warning(res.msg);
  3374. this.showEventDialog(that.eventCode);
  3375. //获取事件详情
  3376. }
  3377. that.attachExamine = [];
  3378. that.uploadAttachList = [];
  3379. that.eventDescription = "";
  3380. });
  3381. } else if (eventStatus == "shbtg") {
  3382. that.eventStatusButton = "sh";
  3383. if (that.eventDescription == "" || that.eventDescription == null) {
  3384. that.$message.error(`请填写审核意见!`);
  3385. return;
  3386. }
  3387. if (that.attachExamine.length == 0 || that.attachExamine == null) {
  3388. that.$message.error(`请上传审核图片!`);
  3389. return;
  3390. }
  3391. //事件处理流程--审核不通过
  3392. let param = {
  3393. id: that.eventId, //事件id
  3394. eventCode: that.eventCode, //事件编号
  3395. eventName: that.eventName, //事件名称
  3396. isExamine: 0, //通过传1,不通过传0
  3397. version: that.version,
  3398. eventDescription: that.eventDescription, //审核意见
  3399. attach: that.attachExamine,
  3400. };
  3401. eventExamine(param).then((res) => {
  3402. if (res.code == 200) {
  3403. that.$message.success(`处理成功!`);
  3404. that.refreshEvent(that.eventCode);
  3405. that.cancelEventConfirm_send();
  3406. that.showEventConfirm = false;
  3407. } else if (res.code == 304) {
  3408. console.log(that.eventCode);
  3409. this.$message.warning(res.msg);
  3410. this.showEventDialog(that.eventCode);
  3411. //获取事件详情
  3412. }
  3413. that.attachExamine = [];
  3414. that.uploadAttachList = [];
  3415. that.eventDescription = "";
  3416. });
  3417. } else if (eventStatus == "cz") {
  3418. eventHandling(that.eventId, that.eventCode).then((res) => {
  3419. if (res.code == 200) {
  3420. that.$message.success(`处理成功!`);
  3421. that.refreshEvent(that.eventCode);
  3422. that.cancelEventConfirm_send();
  3423. that.showEventConfirm = false;
  3424. }
  3425. });
  3426. } else {
  3427. if (eventStatus == "qs") {
  3428. if (
  3429. that.sendDeptId == "" ||
  3430. that.sendDeptId == null ||
  3431. that.sendDeptName == "" ||
  3432. that.sendDeptName == null
  3433. ) {
  3434. that.$message.error(`请选择部门!`);
  3435. return;
  3436. }
  3437. if (eventStatus == "qs") {
  3438. if (that.sendEventType == "" || that.sendEventType == null) {
  3439. that.$message.error(`请选择事件类型!`);
  3440. return;
  3441. }
  3442. }
  3443. } else {
  3444. that.sendDeptId = that.deptId;
  3445. }
  3446. //事件处理流程
  3447. let param = {
  3448. phones: that.sendUserFegin,
  3449. eventCode: that.eventCode,
  3450. deptId: that.sendDeptId,
  3451. deptName: that.sendDeptName,
  3452. eventStatus: eventStatus,
  3453. eventType: that.sendEventType,
  3454. id: that.eventId,
  3455. czlx: "",
  3456. version: that.version,
  3457. cameraCode: that.cameraCode,
  3458. fireRadius: that.sendHuoZaiBanJing,
  3459. reserve: that.sendGuanLianYuAn,
  3460. address: that.address,
  3461. };
  3462. updateCentereventTEventcatalogueStatus(param).then((res) => {
  3463. if (res.code == 200) {
  3464. that.$message.success(`处理成功!`);
  3465. that.cancelEventConfirm_send();
  3466. that.showEventConfirm = false;
  3467. that.$emit("getEventList", that.calendarDay, 10, 1);
  3468. that.$emit("getSupermap", that.calendarDay);
  3469. if (eventStatus == "cf" || eventStatus == "wb") {
  3470. this.eventDialog = false;
  3471. return;
  3472. }
  3473. that.refreshEvent(that.eventCode);
  3474. } else if (res.code == 304) {
  3475. console.log(that.eventCode);
  3476. this.$message.warning(res.msg);
  3477. this.showEventDialog(that.eventCode);
  3478. //获取事件详情
  3479. }
  3480. });
  3481. }
  3482. }
  3483. },
  3484. filterNode(value, data) {
  3485. //树搜索
  3486. if (!value) return true;
  3487. return data.label.indexOf(value) !== -1;
  3488. },
  3489. sendEventLog() {
  3490. if (this.eventLog == "" || this.eventLog == null) {
  3491. return;
  3492. }
  3493. //日志发送
  3494. let param = {
  3495. eventCode: this.eventCode,
  3496. logContent: this.eventLog,
  3497. operation: "bus_oper_type_2",
  3498. operationType: "log_oper_type_1",
  3499. };
  3500. sendEventLog(param).then((res) => {
  3501. if (res.code == 200) {
  3502. this.$message.success(`发送成功!`);
  3503. this.eventLog = null;
  3504. this.refreshEventDialog(this.eventCode);
  3505. }
  3506. });
  3507. },
  3508. showEventLogUpload() {
  3509. this.$refs.eventLogUpload.eventLogUpload(this.eventCode);
  3510. },
  3511. cancelEventShow() {
  3512. this.statusFlag = null;
  3513. this.deptId = null;
  3514. console.log("关闭事件弹窗");
  3515. this.eventLogList = [];
  3516. this.mapToolShow = false;
  3517. },
  3518. showEventDialog(eventCode) {
  3519. this.fireControlViewList();
  3520. this.eventCode = eventCode;
  3521. let that = this;
  3522. //获取事件详情
  3523. getEventDetail({
  3524. eventCode: eventCode,
  3525. }).then((res) => {
  3526. let markersMapList = [];
  3527. that.eventDialog = true;
  3528. that.eventLogList = res.data.eventlog; //日志列表
  3529. that.visuForestCloudYuAnBo = res.data.visuForestCloudYuAnBo; //应急预案
  3530. that.address = res.data.catalogue.address;
  3531. that.eventStatusValue = res.data.catalogue.eventStatusValue;
  3532. that.eventType = res.data.catalogue.eventType;
  3533. that.statusFlag = res.data.catalogue.statusFlag;
  3534. that.dataStatus = res.data.catalogue.dataStatus;
  3535. that.deptId = res.data.catalogue.deptId;
  3536. that.eventId = res.data.catalogue.id;
  3537. that.longitude = res.data.catalogue.longitude;
  3538. that.latitude = res.data.catalogue.latitude;
  3539. that.eventName = res.data.catalogue.eventName;
  3540. that.version = res.data.catalogue.version;
  3541. that.eventTypeXl = res.data.catalogue.eventTypeXl;
  3542. that.isExamine = res.data.catalogue.isExamine;
  3543. let markersMap = {
  3544. lng: 124.59,
  3545. lat: 43.02,
  3546. icon: "marker",
  3547. bindPopupHtml: "",
  3548. click: "",
  3549. parameter: "",
  3550. keepBindPopup: false,
  3551. isAggregation: true,
  3552. radius: 0,
  3553. };
  3554. if (
  3555. res.data.catalogue.eventStatusValue == "forest_event_status_1" &&
  3556. res.data.catalogue.urgeCount == 0
  3557. ) {
  3558. markersMap.icon = "sj-icon-map-xinshangbao";
  3559. }
  3560. if (
  3561. res.data.catalogue.eventStatusValue == "forest_event_status_1" &&
  3562. res.data.catalogue.urgeCount > 0
  3563. ) {
  3564. markersMap.icon = "sj-icon-map-cuiban";
  3565. } else if (
  3566. res.data.catalogue.eventStatusValue == "forest_event_status_2"
  3567. ) {
  3568. markersMap.icon = "sj-icon-map-qianshou";
  3569. } else if (
  3570. res.data.catalogue.eventStatusValue == "forest_event_status_5"
  3571. ) {
  3572. markersMap.icon = "sj-icon-map-banjie";
  3573. } else if (
  3574. res.data.catalogue.eventStatusValue == "forest_event_status_6"
  3575. ) {
  3576. markersMap.icon = "sj-icon-map-guidang";
  3577. } else if (
  3578. res.data.catalogue.eventStatusValue == "forest_event_status_7"
  3579. ) {
  3580. markersMap.icon = "sj-icon-map-queren";
  3581. }
  3582. markersMap.lng = res.data.catalogue.longitude;
  3583. markersMap.lat = res.data.catalogue.latitude;
  3584. if (
  3585. res.data.eventdetail != null &&
  3586. res.data.eventdetail.length > 0 &&
  3587. res.data.eventdetail[0].fireRadius != null &&
  3588. res.data.eventdetail[0].fireRadius != "" &&
  3589. res.data.eventdetail[0].fireRadius > 0
  3590. ) {
  3591. markersMap.radius = res.data.eventdetail[0].fireRadius;
  3592. }
  3593. markersMapList.push(markersMap);
  3594. if (res.data.centermonitorTCamera != null) {
  3595. that.cameraCode = res.data.centermonitorTCamera.id;
  3596. let markersMap = {
  3597. lng: 124.59,
  3598. lat: 43.02,
  3599. icon: "camera",
  3600. bindPopupHtml: "",
  3601. click: "preview",
  3602. parameter: {
  3603. code: res.data.centermonitorTCamera.cameraCode,
  3604. type: res.data.centermonitorTCamera.cameraFactory,
  3605. name: res.data.centermonitorTCamera.cameraName,
  3606. },
  3607. keepBindPopup: false,
  3608. isAggregation: true,
  3609. radius: 0,
  3610. };
  3611. markersMap.bindPopupHtml =
  3612. '<div class="map-tip">' +
  3613. "<span>" +
  3614. ' <div class="d-l-con">' +
  3615. ' <div class="d-l-l-text">' +
  3616. " <h4>摄像头名称:" +
  3617. res.data.centermonitorTCamera.cameraName +
  3618. "</h4>" +
  3619. " </div>" +
  3620. " </div>" +
  3621. " </span>" +
  3622. "<span>" +
  3623. "</div>";
  3624. markersMap.lng = res.data.centermonitorTCamera.longitude;
  3625. markersMap.lat = res.data.centermonitorTCamera.latitude;
  3626. markersMapList.push(markersMap);
  3627. }
  3628. setTimeout(() => {
  3629. that.$refs.supermapDialog.dynamicPlotting(); //弹出动态绘制窗口,防止截图位置改变
  3630. that.$refs.supermapDialog.dropLocation10(
  3631. res.data.catalogue.latitude,
  3632. res.data.catalogue.longitude
  3633. );
  3634. that.$refs.supermapDialog.clearM(false);
  3635. that.$refs.supermapDialog.clearM(true);
  3636. that.$refs.supermapDialog.setMarkersRadius(markersMapList);
  3637. }, 2000);
  3638. });
  3639. },
  3640. refreshEvent(eventCode) {
  3641. this.eventCode = eventCode;
  3642. let that = this;
  3643. //刷新--事件详情
  3644. getEventDetail({
  3645. eventCode: eventCode,
  3646. }).then((res) => {
  3647. let markersMapList = [];
  3648. that.eventDialog = true;
  3649. that.eventLogList = res.data.eventlog;
  3650. that.visuForestCloudYuAnBo = res.data.visuForestCloudYuAnBo; //应急预案
  3651. that.address = res.data.catalogue.address;
  3652. that.eventStatusValue = res.data.catalogue.eventStatusValue;
  3653. that.eventType = res.data.catalogue.eventType;
  3654. that.statusFlag = res.data.catalogue.statusFlag;
  3655. that.dataStatus = res.data.catalogue.dataStatus;
  3656. that.deptId = res.data.catalogue.deptId;
  3657. that.eventId = res.data.catalogue.id;
  3658. that.latitude = res.data.catalogue.latitude;
  3659. that.longitude = res.data.catalogue.longitude;
  3660. that.eventName = res.data.catalogue.eventName;
  3661. that.version = res.data.catalogue.version;
  3662. that.eventTypeXl = res.data.catalogue.eventTypeXl;
  3663. that.isExamine = res.data.catalogue.isExamine;
  3664. let markersMap = {
  3665. lng: 124.59,
  3666. lat: 43.02,
  3667. icon: "marker",
  3668. bindPopupHtml: "",
  3669. click: "",
  3670. parameter: "",
  3671. keepBindPopup: false,
  3672. isAggregation: true,
  3673. radius: 0,
  3674. };
  3675. if (
  3676. res.data.catalogue.eventStatusValue == "forest_event_status_1" &&
  3677. res.data.catalogue.urgeCount == 0
  3678. ) {
  3679. markersMap.icon = "sj-icon-map-xinshangbao";
  3680. }
  3681. if (
  3682. res.data.catalogue.eventStatusValue == "forest_event_status_1" &&
  3683. res.data.catalogue.urgeCount > 0
  3684. ) {
  3685. markersMap.icon = "sj-icon-map-cuiban";
  3686. } else if (
  3687. res.data.catalogue.eventStatusValue == "forest_event_status_2"
  3688. ) {
  3689. markersMap.icon = "sj-icon-map-qianshou";
  3690. } else if (
  3691. res.data.catalogue.eventStatusValue == "forest_event_status_5"
  3692. ) {
  3693. markersMap.icon = "sj-icon-map-banjie";
  3694. } else if (
  3695. res.data.catalogue.eventStatusValue == "forest_event_status_6"
  3696. ) {
  3697. markersMap.icon = "sj-icon-map-guidang";
  3698. } else if (
  3699. res.data.catalogue.eventStatusValue == "forest_event_status_7"
  3700. ) {
  3701. markersMap.icon = "sj-icon-map-queren";
  3702. }
  3703. markersMap.lng = res.data.catalogue.longitude;
  3704. markersMap.lat = res.data.catalogue.latitude;
  3705. if (
  3706. res.data.eventdetail != null &&
  3707. res.data.eventdetail.length > 0 &&
  3708. res.data.eventdetail[0].fireRadius != null &&
  3709. res.data.eventdetail[0].fireRadius != "" &&
  3710. res.data.eventdetail[0].fireRadius > 0
  3711. ) {
  3712. markersMap.radius = res.data.eventdetail[0].fireRadius;
  3713. }
  3714. markersMapList.push(markersMap);
  3715. if (res.data.centermonitorTCamera != null) {
  3716. let markersMap = {
  3717. lng: 124.59,
  3718. lat: 43.02,
  3719. icon: "camera",
  3720. bindPopupHtml: "",
  3721. click: "preview",
  3722. parameter: {
  3723. code: res.data.centermonitorTCamera.cameraCode,
  3724. type: res.data.centermonitorTCamera.cameraFactory,
  3725. name: res.data.centermonitorTCamera.cameraName,
  3726. },
  3727. keepBindPopup: false,
  3728. isAggregation: true,
  3729. radius: 0,
  3730. };
  3731. markersMap.bindPopupHtml =
  3732. '<div class="map-tip">' +
  3733. "<span>" +
  3734. ' <div class="d-l-con">' +
  3735. ' <div class="d-l-l-text">' +
  3736. " <h4>摄像头名称:" +
  3737. res.data.centermonitorTCamera.cameraName +
  3738. "</h4>" +
  3739. " </div>" +
  3740. " </div>" +
  3741. " </span>" +
  3742. "<span>" +
  3743. "</div>";
  3744. markersMap.lng = res.data.centermonitorTCamera.longitude;
  3745. markersMap.lat = res.data.centermonitorTCamera.latitude;
  3746. markersMapList.push(markersMap);
  3747. }
  3748. setTimeout(() => {
  3749. that.$refs.supermapDialog.clearM(false);
  3750. that.$refs.supermapDialog.clearM(true);
  3751. that.$refs.supermapDialog.setMarkersRadius(markersMapList);
  3752. that.$refs.supermapDialog.dropLocation10(
  3753. res.data.catalogue.latitude,
  3754. res.data.catalogue.longitude
  3755. );
  3756. }, 2000);
  3757. });
  3758. },
  3759. refreshEventDialog(eventCode) {
  3760. //刷新--事件日志12
  3761. getEventDetail({
  3762. eventCode: eventCode,
  3763. }).then((res) => {
  3764. this.eventLogList = res.data.eventlog;
  3765. this.visuForestCloudYuAnBo = res.data.visuForestCloudYuAnBo; //应急预案
  3766. });
  3767. },
  3768. // 页面元素转图片
  3769. toImage() {
  3770. this.$message.success(`正在上传!请稍后...`);
  3771. // 手动创建一个 canvas 标签
  3772. debugger
  3773. const canvas = document.createElement("canvas");
  3774. // 获取父标签,意思是这个标签内的 DOM 元素生成图片
  3775. // imageTofile是给截图范围内的父级元素自定义的ref名称
  3776. // let canvasBox = this.$refs.imageTofile
  3777. let canvasBox = document.getElementById("forestWarmSuperMap");
  3778. // let toolbar = document.getElementById("toolbar");
  3779. // if (toolbar != null) {
  3780. // canvasBox.removeChild(toolbar);
  3781. // }
  3782. // 获取父级的宽高
  3783. const width = parseInt(window.getComputedStyle(canvasBox).width);
  3784. const height = parseInt(window.getComputedStyle(canvasBox).height);
  3785. // 宽高 * 2 并放大 2 倍 是为了防止图片模糊
  3786. canvas.width = width * 2;
  3787. canvas.height = height * 2;
  3788. canvas.style.width = width + "px";
  3789. canvas.style.height = height + "px";
  3790. const context = canvas.getContext("2d");
  3791. context.scale(2, 2);
  3792. const options = {
  3793. backgroundColor: null,
  3794. canvas: canvas,
  3795. useCORS: true,
  3796. };
  3797. html2canvas(canvasBox, options).then((canvas) => {
  3798. // toDataURL 图片格式转成 base64
  3799. let dataBase64 = canvas.toDataURL("image/png");
  3800. this.uploadBase64(dataBase64);
  3801. });
  3802. // canvasBox.appendChild(toolbar);
  3803. },
  3804. uploadBase64(dataBase64) {
  3805. //事件详情截图直接上传日志
  3806. uploadBase64({
  3807. eventCode: this.eventCode,
  3808. base64: dataBase64,
  3809. }).then((res) => {
  3810. if (res.code == 200) {
  3811. this.$message.success(`截图上传成功!`);
  3812. this.refreshEventDialog(this.eventCode);
  3813. }
  3814. });
  3815. },
  3816. regionalFlagAdd: function () {
  3817. //火灾区域
  3818. this.regionalFlagObj.array = [];
  3819. this.regionalFlagOpen = true;
  3820. },
  3821. showAreaLatLng: function (latlng) {
  3822. //获取火灾区域经纬度
  3823. this.regionalFlagObj.array = latlng;
  3824. this.$modal.msgSuccess("获取坐标成功!");
  3825. },
  3826. /** ----------------------------------摄像头预览开始------------------------------------- */
  3827. alertLogin: function () {
  3828. this.$modal.msg("登录中....");
  3829. },
  3830. alertLoginSuccess: function () {
  3831. this.$modal.msgSuccess("登录成功!");
  3832. },
  3833. alertLoginFailed: function () {
  3834. this.$modal.msgError("登陆失败!");
  3835. },
  3836. alertReinstall: function () {
  3837. this.$modal.msgWarning("请重新安装客户端");
  3838. },
  3839. cancelEventLocationShow() {
  3840. if (this.oWebControl != null) {
  3841. this.oWebControl.JS_HideWnd(); // 先让窗口隐藏,规避可能的插件窗口滞后于浏览器消失问题
  3842. this.oWebControl.JS_Disconnect().then(
  3843. function () {
  3844. // 断开与插件服务连接成功
  3845. },
  3846. function () {
  3847. // 断开与插件服务连接失败
  3848. }
  3849. );
  3850. }
  3851. },
  3852. /** 预览按钮操作 */
  3853. preview(cameraParam) {
  3854. if (cameraParam.type == "1") {
  3855. this.showTVWall(cameraParam.code, cameraParam.name);
  3856. // getDahuaVideoServer().then(newResponse => {
  3857. // console.log(newResponse)
  3858. // this.ws.detectConnectQt().then(res => {
  3859. // if (res) { // 连接客户端成功
  3860. // this.alertLogin()
  3861. // this.ws.login({
  3862. // loginIp: newResponse.loginIp,
  3863. // loginPort: newResponse.loginPort,
  3864. // userName: newResponse.userName,
  3865. // userPwd: newResponse.userPwd,
  3866. // token: '',
  3867. // https: 1
  3868. // })
  3869. // this.ws.on('loginState', (res) => {
  3870. // this.isLogin = res
  3871. // console.log('---res-----', res)
  3872. // if (res) {
  3873. // this.alertLoginSuccess()
  3874. // this.activePanel = 'key2'
  3875. // this.realTimeVideoDialog(cameraParam.code)
  3876. // } else {
  3877. // this.alertLoginFailed()
  3878. // }
  3879. // })
  3880. // } else { // 连接客户端失败
  3881. // this.alertReinstall()
  3882. // }
  3883. // })
  3884. // })
  3885. } else if (cameraParam.type == "0") {
  3886. let that = this;
  3887. that.cameraVisible = true;
  3888. getHaiKangVideoServer({
  3889. cameraCode: cameraParam.code,
  3890. }).then((newResponse) => {
  3891. that.cameraTitle = "摄像头-" + newResponse.data.cameraName;
  3892. that.initPlugin(
  3893. newResponse.data.appkey,
  3894. newResponse.data.loginIp,
  3895. newResponse.data.secret,
  3896. newResponse.data.loginPort
  3897. );
  3898. setTimeout(function () {
  3899. that.playhk(newResponse.data.channelCode);
  3900. }, 5000);
  3901. });
  3902. }
  3903. },
  3904. realTimeVideoDialog(cameraParams) {
  3905. // 调用弹窗实时播放接口
  3906. if (!this.isLogin) {
  3907. this.$Message.info("正在登陆客户端,请稍等......");
  3908. return false;
  3909. }
  3910. const param = [cameraParams];
  3911. this.ws.openVideo(param);
  3912. },
  3913. /** ----------------------------------摄像头预览结束------------------------------------- */
  3914. /** ----------------------------------海康摄像头预览开始------------------------------------- */
  3915. // 创建播放实例
  3916. initPlugin(newappkey, newloginIp, newsecret, newloginPort) {
  3917. let that = this;
  3918. that.oWebControl = new WebControl({
  3919. szPluginContainer: "playWnd", // 指定容器id
  3920. iServicePortStart: 15900, // 指定起止端口号,建议使用该值
  3921. iServicePortEnd: 15909,
  3922. szClassId: "23BF3B0A-2C56-4D97-9C03-0CB103AA8F11", // 用于IE10使用ActiveX的clsid
  3923. cbConnectSuccess: function () {
  3924. // 创建WebControl实例成功
  3925. that.oWebControl
  3926. .JS_StartService("window", {
  3927. // WebControl实例创建成功后需要启动服务
  3928. dllPath: "./VideoPluginConnect.dll", // 值"./VideoPluginConnect.dll"写死
  3929. })
  3930. .then(
  3931. function () {
  3932. // 启动插件服务成功
  3933. that.oWebControl.JS_SetWindowControlCallback({
  3934. // 设置消息回调
  3935. cbIntegrationCallBack: cbIntegrationCallBack,
  3936. });
  3937. that.oWebControl
  3938. .JS_CreateWnd("playWnd", 1020, 600)
  3939. .then(function () {
  3940. //JS_CreateWnd创建视频播放窗口,宽高可设定
  3941. that.init(newappkey, newloginIp, newsecret, newloginPort); // 创建播放实例成功后初始化
  3942. });
  3943. },
  3944. function () {
  3945. // 启动插件服务失败
  3946. }
  3947. );
  3948. },
  3949. cbConnectError: function () {
  3950. // 创建WebControl实例失败
  3951. that.oWebControl = null;
  3952. $("#playWnd").html(
  3953. '插件未启动,正在尝试启动,请稍候...<a href="./hk/VideoWebPlugin.exe">点击下载插件</a>'
  3954. );
  3955. WebControl.JS_WakeUp("VideoWebPlugin://"); // 程序未启动时执行error函数,采用wakeup来启动程序
  3956. that.initCount++;
  3957. if (that.initCount < 3) {
  3958. setTimeout(function () {
  3959. that.initPlugin(newappkey, newloginIp, newsecret, newloginPort);
  3960. }, 3000);
  3961. } else {
  3962. $("#playWnd").html(
  3963. '插件启动失败,请检查插件是否安装!<a href="./hk/VideoWebPlugin.exe">点击下载插件</a>'
  3964. );
  3965. }
  3966. },
  3967. cbConnectClose: function (bNormalClose) {
  3968. // 异常断开:bNormalClose = false
  3969. // JS_Disconnect正常断开:bNormalClose = true
  3970. that.oWebControl = null;
  3971. },
  3972. });
  3973. },
  3974. //播放海康摄像头
  3975. playhk(channelCode) {
  3976. var cameraIndexCode = channelCode; //获取输入的监控点编号值,必填
  3977. var streamMode = 0; //主子码流标识:0-主码流,1-子码流
  3978. var transMode = 1; //传输协议:0-UDP,1-TCP
  3979. var gpuMode = 0; //是否启用GPU硬解,0-不启用,1-启用
  3980. var wndId = -1; //播放窗口序号(在2x2以上布局下可指定播放窗口)
  3981. cameraIndexCode = cameraIndexCode.replace(/(^\s*)/g, "");
  3982. cameraIndexCode = cameraIndexCode.replace(/(\s*$)/g, "");
  3983. this.oWebControl.JS_RequestInterface({
  3984. funcName: "startPreview",
  3985. argument: JSON.stringify({
  3986. cameraIndexCode: cameraIndexCode, //监控点编号
  3987. streamMode: streamMode, //主子码流标识
  3988. transMode: transMode, //传输协议
  3989. gpuMode: gpuMode, //是否开启GPU硬解
  3990. wndId: wndId, //可指定播放窗口
  3991. }),
  3992. });
  3993. },
  3994. //初始化
  3995. init(newappkey, newloginIp, newsecret, newloginPort) {
  3996. let that = this;
  3997. that.getPubKey(function () {
  3998. ////////////////////////////////// 请自行修改以下变量值 ////////////////////////////////////
  3999. var appkey = newappkey; //综合安防管理平台提供的appkey,必填
  4000. var secret = that.setEncrypt(newsecret); //综合安防管理平台提供的secret,必填
  4001. var ip = newloginIp; //综合安防管理平台IP地址,必填
  4002. var playMode = 0; //初始播放模式:0-预览,1-回放
  4003. var port = Number(newloginPort); //综合安防管理平台端口,若启用HTTPS协议,默认443
  4004. var snapDir = "D:\\SnapDir"; //抓图存储路径
  4005. var videoDir = "D:\\VideoDir"; //紧急录像或录像剪辑存储路径
  4006. var layout = "1x1"; //playMode指定模式的布局
  4007. var enableHTTPS = 1; //是否启用HTTPS协议与综合安防管理平台交互,这里总是填1
  4008. var encryptedFields = "secret"; //加密字段,默认加密领域为secret
  4009. var showToolbar = 1; //是否显示工具栏,0-不显示,非0-显示
  4010. var showSmart = 1; //是否显示智能信息(如配置移动侦测后画面上的线框),0-不显示,非0-显示
  4011. var buttonIDs =
  4012. "0,16,256,257,258,259,260,512,513,514,515,516,517,768,769"; //自定义工具条按钮
  4013. ////////////////////////////////// 请自行修改以上变量值 ////////////////////////////////////
  4014. that.oWebControl
  4015. .JS_RequestInterface({
  4016. funcName: "init",
  4017. argument: JSON.stringify({
  4018. appkey: appkey, //API网关提供的appkey
  4019. secret: secret, //API网关提供的secret
  4020. ip: ip, //API网关IP地址
  4021. playMode: playMode, //播放模式(决定显示预览还是回放界面)
  4022. port: port, //端口
  4023. snapDir: snapDir, //抓图存储路径
  4024. videoDir: videoDir, //紧急录像或录像剪辑存储路径
  4025. layout: layout, //布局
  4026. enableHTTPS: enableHTTPS, //是否启用HTTPS协议
  4027. encryptedFields: encryptedFields, //加密字段
  4028. showToolbar: showToolbar, //是否显示工具栏
  4029. showSmart: showSmart, //是否显示智能信息
  4030. buttonIDs: buttonIDs, //自定义工具条按钮
  4031. }),
  4032. })
  4033. .then(function (oData) {
  4034. that.oWebControl.JS_Resize(1020, 600); // 初始化后resize一次,规避firefox下首次显示窗口后插件窗口未与DIV窗口重合问题
  4035. });
  4036. });
  4037. },
  4038. //获取公钥
  4039. getPubKey(callback) {
  4040. let that = this;
  4041. that.oWebControl
  4042. .JS_RequestInterface({
  4043. funcName: "getRSAPubKey",
  4044. argument: JSON.stringify({
  4045. keyLength: 1024,
  4046. }),
  4047. })
  4048. .then(function (oData) {
  4049. console.log(oData);
  4050. if (oData.responseMsg.data) {
  4051. that.pubKey = oData.responseMsg.data;
  4052. callback();
  4053. }
  4054. });
  4055. },
  4056. //RSA加密
  4057. setEncrypt(value) {
  4058. var encrypt = new JSEncrypt();
  4059. encrypt.setPublicKey(this.pubKey);
  4060. return encrypt.encrypt(value);
  4061. },
  4062. /** ----------------------------------海康摄像头预览结束------------------------------------- */
  4063. /** ----------------------------------视频会议开始------------------------------------- */
  4064. sendMsg() {
  4065. // 视频会议发送短信
  4066. let reg_user = /^[\u4e00-\u9fa5]{2,4}$/; //2-4个中文字符正则
  4067. let reg_tel =
  4068. /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/; //11位手机号码正则
  4069. for (let i in this.dutysystemTableData) {
  4070. if (!reg_user.test(this.dutysystemTableData[i].name)) {
  4071. this.$message.error(`请输入正确姓名!`);
  4072. return;
  4073. }
  4074. if (!reg_tel.test(this.dutysystemTableData[i].telphone)) {
  4075. this.$message.error(`请输入正确手机号码!`);
  4076. return;
  4077. }
  4078. if (
  4079. this.dutysystemTableData[i].id == null ||
  4080. this.dutysystemTableData[i].id == ""
  4081. ) {
  4082. this.dutysystemTableData[i].dept = this.dutysystemDeptName;
  4083. this.dutysystemTableData[i].depteventId = this.depteventId;
  4084. }
  4085. }
  4086. const param = {
  4087. centereventTDutySystemList: this.dutysystemTableData,
  4088. eventCode: this.eventCode,
  4089. eventName: this.eventName,
  4090. eventId: this.eventId,
  4091. };
  4092. this.joinMeeting(param);
  4093. },
  4094. joinMeeting(param) {
  4095. this.$message({
  4096. message: "正在启动云会议客户端,请稍候...",
  4097. type: "success",
  4098. });
  4099. joinConferences(
  4100. this.eventId,
  4101. this.eventName + "的会议",
  4102. Cookies.get("nickName")
  4103. ).then((res) => {
  4104. if (res.code == 200) {
  4105. let conferenceID = res.data.info.conferenceID;
  4106. let password = res.data.info.password;
  4107. let nickName = res.data.nickName;
  4108. let nonce = res.data.nonce;
  4109. window.open(
  4110. "cloudlink://welinksoftclient/h5page?page=LoginAndJoinConf&server_url=meeting.huaweicloud.com&port=8443&conf_id=" +
  4111. conferenceID +
  4112. "&enter_code=" +
  4113. password +
  4114. "&name=" +
  4115. nickName +
  4116. "&open_mic=true&open_camera=false&nonce=" +
  4117. nonce
  4118. );
  4119. sendMessage(param).then((res) => {
  4120. //this.$message.success(res.msg);
  4121. this.dutysystemSelect(
  4122. this.iconCurrentIndex,
  4123. this.dutysystemDeptName,
  4124. this.depteventId
  4125. );
  4126. this.showMeetingMsgDialog = false;
  4127. });
  4128. }
  4129. });
  4130. },
  4131. Meeting() {
  4132. //弹出发送会议短信弹窗
  4133. let that = this;
  4134. that.$alert(
  4135. "如您已经安装请点击【确定】,如未安装可<a style='text-decoration:underline;color:blue;' href='http://172.18.1.37:15001/CLOUDMeeting_Win.exe'>点击此处</a>进行下载",
  4136. "该功能需要使用云会议客户端",
  4137. {
  4138. confirmButtonText: "确定",
  4139. dangerouslyUseHTMLString: true,
  4140. callback: (action) => {
  4141. let param = {
  4142. eventCode: that.eventCode,
  4143. };
  4144. centereventtdepteventList(param).then((res) => {
  4145. that.depteventList = res.data;
  4146. that.showMeetingMsgDialog = true;
  4147. });
  4148. },
  4149. }
  4150. );
  4151. },
  4152. /** ----------------------------------视频会议结束------------------------------------- */
  4153. },
  4154. };
  4155. // 推送消息
  4156. function cbIntegrationCallBack(oData) {
  4157. console.log(JSON.stringify(oData.responseMsg));
  4158. }
  4159. </script>
  4160. <style lang="scss">
  4161. .sj-map-tool-checkbox-all {
  4162. display: flex;
  4163. align-items: center;
  4164. margin-right: 1rem !important;
  4165. .el-checkbox__input {
  4166. line-height: 0;
  4167. }
  4168. .el-checkbox__label {
  4169. font-size: 14px;
  4170. color: white;
  4171. padding-left: 5px;
  4172. }
  4173. .el-checkbox__input.is-checked + .el-checkbox__label {
  4174. color: #01d1eb;
  4175. }
  4176. }
  4177. .sj-map-tool-checkbox {
  4178. display: flex;
  4179. .el-checkbox {
  4180. margin-right: 1rem;
  4181. display: flex;
  4182. align-items: center;
  4183. .el-checkbox__input {
  4184. line-height: 0;
  4185. }
  4186. }
  4187. .el-checkbox__label {
  4188. font-size: 14px;
  4189. color: white;
  4190. padding-left: 5px;
  4191. }
  4192. .el-checkbox__input.is-checked + .el-checkbox__label {
  4193. color: #01d1eb;
  4194. }
  4195. }
  4196. </style>
  4197. <style lang="scss" scoped>
  4198. @import "@/assets/styles/base.scss";
  4199. //弹层样式
  4200. //.customWidthMp4 {
  4201. // width: 70px !important;
  4202. // height: 70px !important;
  4203. //}
  4204. .tree-border {
  4205. border: 1px $barBorder;
  4206. }
  4207. button {
  4208. padding: 0.5rem;
  4209. }
  4210. /** 火灾报告**/
  4211. //@font-face {
  4212. // font-family: 'fontnameRegular';
  4213. // src: url('../../../../assets/styles/FZYTJW_0.TTF');
  4214. //}
  4215. body,
  4216. html,
  4217. * {
  4218. padding: 0px;
  4219. margin: 0px;
  4220. font-family: "fontnameRegular";
  4221. }
  4222. .table-container {
  4223. width: 100%;
  4224. }
  4225. .txt_right {
  4226. text-align: right !important;
  4227. }
  4228. .txt_left {
  4229. text-align: left !important;
  4230. }
  4231. table {
  4232. border-spacing: 0;
  4233. border-collapse: collapse;
  4234. width: 99%;
  4235. margin: 0 auto;
  4236. color: $inBlue;
  4237. }
  4238. table input {
  4239. font-size: 1rem;
  4240. border: 0px;
  4241. outline: 0px;
  4242. font-family: "微软雅黑";
  4243. background: none;
  4244. color: $inBlue;
  4245. }
  4246. table th input:hover {
  4247. background: $eventBG;
  4248. }
  4249. table thead th {
  4250. font-size: 1rem;
  4251. font-family: "宋体";
  4252. height: 2rem;
  4253. border-top: 0px;
  4254. border-left: 0px;
  4255. border-right: 0px;
  4256. outline: 0px;
  4257. }
  4258. table tr td {
  4259. font-size: 1rem;
  4260. font-family: "fontnameRegular";
  4261. height: 2rem;
  4262. border: 1px $searchBorder;
  4263. text-align: center;
  4264. }
  4265. .font1 {
  4266. font-size: 1.7rem;
  4267. font-weight: bolder;
  4268. }
  4269. .border0 {
  4270. width: 100% !important;
  4271. }
  4272. .border0 tr td {
  4273. border: 0px !important;
  4274. }
  4275. table tr td input {
  4276. width: 100%;
  4277. /* display: inline-block;*/
  4278. outline: 0px;
  4279. text-align: left;
  4280. height: 94%;
  4281. color: $inBlue;
  4282. background: none;
  4283. float: left;
  4284. padding: 0 0.5rem;
  4285. }
  4286. table tr td input:hover {
  4287. background: $eventBG;
  4288. }
  4289. .int_tr td input {
  4290. text-align: center !important;
  4291. }
  4292. .table2 tr th {
  4293. font-size: 1.7rem;
  4294. padding: 0.5rem 0;
  4295. font-family: "fontnameRegular";
  4296. }
  4297. .table2 tr td {
  4298. font-size: 1rem;
  4299. }
  4300. .table2 tr td select {
  4301. border: 0px !important;
  4302. outline: 0px;
  4303. width: 100%;
  4304. font-family: "微软雅黑";
  4305. font-size: 1rem;
  4306. padding-left: 1%;
  4307. color: $inBlue;
  4308. background: none;
  4309. }
  4310. .table2 tr td select:hover {
  4311. background: $eventBG;
  4312. }
  4313. .table2 tr td select option {
  4314. font-size: 1rem;
  4315. font-family: "微软雅黑";
  4316. }
  4317. .border_l0 {
  4318. // border-right: 1px solid #ececec !important;
  4319. }
  4320. .table2 tr td textarea {
  4321. border: 0px !important;
  4322. outline: 0px;
  4323. width: 98%;
  4324. padding: 0.5rem;
  4325. font-size: 1rem;
  4326. resize: none;
  4327. background: none;
  4328. color: $inBlue;
  4329. }
  4330. .table2 tr td textarea:hover {
  4331. background: $eventBG;
  4332. }
  4333. .tr_border td {
  4334. border-right: 0px !important;
  4335. border-left: 0px !important;
  4336. border-bottom: 0px !important;
  4337. font-size: 15px;
  4338. }
  4339. .btm-btn-group {
  4340. padding: 1rem 0;
  4341. width: 100%;
  4342. display: flex;
  4343. button {
  4344. padding: 0.5rem 2rem;
  4345. }
  4346. }
  4347. .sj-map-tool-select {
  4348. position: absolute;
  4349. right: 1rem;
  4350. top: 1rem;
  4351. z-index: 1000;
  4352. display: flex;
  4353. height: 30px;
  4354. align-items: center;
  4355. }
  4356. .sj-map-tool-select-list {
  4357. position: relative;
  4358. padding: 0.3rem 1rem;
  4359. border-radius: 1rem;
  4360. background-color: #fff;
  4361. z-index: 1000;
  4362. background-image: linear-gradient(
  4363. 180deg,
  4364. rgba(18, 71, 153, 1),
  4365. rgba(4, 21, 30, 1)
  4366. );
  4367. box-shadow: 0 -0.2rem 0.5rem 0.3rem rgba(13, 192, 219, 0.09) inset;
  4368. display: flex;
  4369. align-items: center;
  4370. }
  4371. // 20220928
  4372. .yatz_button {
  4373. padding: 0.5rem 0.5rem;
  4374. color: #409eff;
  4375. background: none;
  4376. border-color: #409eff;
  4377. }
  4378. .yatz_button:hover {
  4379. color: #fff;
  4380. background: #409eff;
  4381. border-color: #409eff;
  4382. }
  4383. .fr_button {
  4384. float: right;
  4385. padding: 0.5rem 1.5rem;
  4386. }
  4387. .bottom {
  4388. width: 100%;
  4389. height: calc(100% - 80px);
  4390. display: flex;
  4391. .bottomLeft {
  4392. width: 288px;
  4393. height: 500px;
  4394. overflow-y: auto;
  4395. .leftItem {
  4396. width: 100%;
  4397. height: 50px;
  4398. line-height: 50px;
  4399. text-align: center;
  4400. cursor: pointer;
  4401. }
  4402. }
  4403. .bottomRight {
  4404. width: calc(100% - 288px);
  4405. height: 500px;
  4406. box-sizing: border-box;
  4407. padding: 36px 36px 0 36px;
  4408. overflow-y: auto;
  4409. .bottomRightContent {
  4410. width: 100%;
  4411. box-sizing: border-box;
  4412. padding-bottom: 36px;
  4413. .bottomRightContentHead {
  4414. height: 25px;
  4415. font-family: PingFang SC;
  4416. font-style: normal;
  4417. font-weight: 600;
  4418. font-size: 24px;
  4419. line-height: 25px;
  4420. text-transform: capitalize;
  4421. color: rgba(0, 0, 0, 0.85);
  4422. margin-bottom: 32px;
  4423. }
  4424. .bottomRightContentBody {
  4425. .el-col {
  4426. position: relative;
  4427. margin-bottom: 18px;
  4428. .circle {
  4429. display: inline-block;
  4430. width: 6px;
  4431. height: 6px;
  4432. background: #4677f6;
  4433. border-radius: 50%;
  4434. position: absolute;
  4435. top: 8px;
  4436. left: 0;
  4437. }
  4438. .word {
  4439. margin-left: 12px;
  4440. font-family: PingFang SC;
  4441. font-style: normal;
  4442. font-weight: normal;
  4443. font-size: 14px;
  4444. color: #4677f6;
  4445. cursor: pointer;
  4446. }
  4447. .word:hover {
  4448. text-decoration: underline;
  4449. }
  4450. .topPlace {
  4451. position: absolute;
  4452. top: 1px;
  4453. margin-left: 8px;
  4454. }
  4455. }
  4456. }
  4457. .bottomRightContentFooter {
  4458. height: 1px;
  4459. width: 100%;
  4460. margin-top: 14px;
  4461. }
  4462. }
  4463. }
  4464. }
  4465. </style>