forest.vue 90 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124
  1. <!--可视化公共模板 林业-->
  2. <template>
  3. <div class="visual-con">
  4. <!--头部-->
  5. <vheader></vheader>
  6. <!--主体-->
  7. <div class="visual-body">
  8. <!-- 左侧 -->
  9. <div class="leftbar" ref="left">
  10. <!-- 1 通知公告 -->
  11. <div class="forthis">
  12. <dv-border-box-13 backgroundColor="rgba(12, 19, 38, .90)" style="padding-bottom: 1rem;">
  13. <img src="../assets/images/integrated/light.png" style="width: 100%; margin-top: .4rem;" />
  14. <div class="this-title">
  15. <span>通知公告</span>
  16. <dv-decoration-3 style="width:150px;height:15px;margin-right: 1rem;" />
  17. </div>
  18. <div class="i-list-con h-14">
  19. <div class="d-l-con no_hover">
  20. <div class="d-l-l-text w-100p no-weight">
  21. <h4 class="line-h-1 w-100p" v-html="noticeContent">{{ noticeContent }}</h4>
  22. </div>
  23. </div>
  24. </div>
  25. </dv-border-box-13>
  26. </div>
  27. <!-- 2 事件统计-->
  28. <div class="forthis">
  29. <dv-border-box-13 backgroundColor="rgba(12, 19, 38, .90)" style="padding-bottom: 1rem;">
  30. <img src="../assets/images/integrated/light.png" style="width: 100%; margin-top: .4rem;" />
  31. <div class="i-list-con h-29-5">
  32. <div class="d-l-con no_hover">
  33. <div class="event-count">
  34. <div class="count-number">{{ totalStr.charAt(0) }}</div>
  35. <div class="count-number">{{ totalStr.charAt(1) }}</div>
  36. <div class="count-number">{{ totalStr.charAt(2) }}</div>
  37. <div class="count-number">{{ totalStr.charAt(3) }}</div>
  38. <div class="count-number">{{ totalStr.charAt(4) }}</div>
  39. <div class="count-number">{{ totalStr.charAt(5) }}</div>
  40. <dv-decoration-5 style="width:81%;height:15px;position: absolute; top:4.2rem;z-index: 0; " />
  41. </div>
  42. </div>
  43. <div class="d-l-con-icon no_hover">
  44. <div class="icon-con w-33 flex-d t-a-center">
  45. <dv-decoration-9
  46. style="width: 5.5rem;height: 5.5rem; color:#16e29e;font-size: 1rem;font-weight: bolder;">
  47. {{ newReport_pre }}%
  48. </dv-decoration-9>
  49. <div class="e-state"
  50. :style="{ 'background-image': `url(${require('@/assets/images/integrated/state-bg.png')})` }">
  51. <span>新上报</span> <span>{{ newReport }}</span>
  52. </div>
  53. </div>
  54. <div class="icon-con w-33 flex-d t-a-center">
  55. <dv-decoration-9
  56. style="width: 5.5rem;height: 5.5rem; color:#f18425;font-size: 1rem;font-weight: bolder;">
  57. {{ readySure_pre }}%
  58. </dv-decoration-9>
  59. <div class="e-state"
  60. :style="{ 'background-image': `url(${require('@/assets/images/integrated/state-bg.png')})` }">
  61. <span>处理中</span> <span>{{ readySure }}</span>
  62. </div>
  63. </div>
  64. <div class="icon-con w-33 flex-d t-a-center">
  65. <dv-decoration-9
  66. style="width: 5.5rem;height: 5.5rem; color:#9179f1;font-size: 1rem;font-weight: bolder;">
  67. {{ readyFinish_pre }}%
  68. </dv-decoration-9>
  69. <div class="e-state"
  70. :style="{ 'background-image': `url(${require('@/assets/images/integrated/state-bg.png')})` }">
  71. <span>已完成</span> <span>{{ readyFinish }}</span>
  72. </div>
  73. </div>
  74. </div>
  75. <div class="d-l-con no_hover">
  76. <div id="chart-event-ai" style="width: 100%;height:6vh;"></div>
  77. </div>
  78. </div>
  79. </dv-border-box-13>
  80. </div>
  81. <!-- 3 组织机构 -->
  82. <div class="forthis">
  83. <dv-border-box-13 backgroundColor="rgba(12, 19, 38, .90)" style="padding-bottom: 1rem;">
  84. <img src="../assets/images/integrated/light.png" style="width: 100%; margin-top: .4rem;" />
  85. <div class="i-list-con h-27" style="padding-left: 1rem;">
  86. <div class="d-l-con-icon">
  87. <!-- <div class="top-left">-->
  88. <!-- <button class="add-button" @click="getResource">搜索全部</button>-->
  89. <!-- </div>-->
  90. <div class="icon-con" :class="{on:iconCurrentIndex==item.type}"
  91. v-for="(item,index) in resourcesList" v-on:click="fireControlViewPoint(item.type, '')">
  92. <!--v-on:click="indentleftSetMarkers(item.resourceTable)">-->
  93. <div class="iconfont icon icon-normal" :class="item.icon"></div>
  94. <div class="icon-text">
  95. <h6>{{ item.num }}</h6>
  96. <!--<h6>{{ item.count }}</h6>-->
  97. <h5>{{ item.name }}</h5>
  98. <!--<h5>{{ item.resourceName }}</h5>-->
  99. </div>
  100. </div>
  101. </div>
  102. <!-- <el-collapse accordion>
  103. <el-collapse-item v-for="(item, index) in forestFarm" :key="index">
  104. <template slot="title">
  105. <div class="d-l-con sj-collapse" :class="{ on: listCurrentIndex1 == item.deptId }"
  106. v-on:click="selectCameraByDeptId(item.deptId)">
  107. <div class="d-l-l-text">
  108. <h4 class="collapse-title">{{ item.deptName }}</h4>
  109. </div>
  110. <div class="d-l-l-count">{{ item.eventCount }}</div>
  111. </div>
  112. </template>
  113. </el-collapse-item>
  114. </el-collapse> -->
  115. </div>
  116. </dv-border-box-13>
  117. </div>
  118. </div>
  119. <!-- 地图 -->
  120. <!-- <supermap ref="supermap" style="width: 100%;height: 100vh;" class="indexSupermapClass" :mapDiv="'forestMap'"-->
  121. <!-- :dynamicPlotting="false" :mapSite="{ doubleClickZoom: false }" :codes="['9fa5']" :isSideBySide="false"-->
  122. <!-- @showEventDialog="showEventDialog"></supermap>-->
  123. <supermap ref="supermap" style="width: 100%;height: 100vh;" @showEventDialog="showEventDialog" :showLayer="true" @fatherMethod="fatherMethod" @sewageOutletClick="sewageOutletClick"></supermap>
  124. <!-- 右侧 -->
  125. <div class="rightbar rightbar-index" ref="right">
  126. <div class="right-item1">
  127. <!-- 天气 -->
  128. <div class="forthis">
  129. <dv-border-box-13 backgroundColor="rgba(12, 19, 38, .90)">
  130. <img src="../assets/images/integrated/light.png" style="width: 100%; margin-top: .4rem;" />
  131. <div class="i-list-con small-bottom-margin h-18">
  132. <el-row :gutter="20" v-if="todatWeather">
  133. <el-col :span="9">
  134. <div class="weather-img">
  135. <img v-if="weatherinformationWeather == 1" src="../assets/images/integrated/weather/qing-1.png">
  136. <img v-if="weatherinformationWeather == 2" src="../assets/images/integrated/weather/duoyun-2.png">
  137. <img v-if="weatherinformationWeather == 3" src="../assets/images/integrated/weather/yin-3.png">
  138. <img v-if="weatherinformationWeather == 4" src="../assets/images/integrated/weather/zhenyu-4.png">
  139. <img v-if="weatherinformationWeather == 5"
  140. src="../assets/images/integrated/weather/leizhenyu-5.png">
  141. <img v-if="weatherinformationWeather == 6"
  142. src="../assets/images/integrated/weather/leizhenyubingbao-6.png">
  143. <img v-if="weatherinformationWeather == 7"
  144. src="../assets/images/integrated/weather/yujiaxue-7.png">
  145. <img v-if="weatherinformationWeather == 8" src="../assets/images/integrated/weather/xiaoyu-8.png">
  146. <img v-if="weatherinformationWeather == 9 || weatherinformationWeather == 22"
  147. src="../assets/images/integrated/weather/zhongyu-9.png">
  148. <img v-if="weatherinformationWeather == 10 || weatherinformationWeather == 23"
  149. src="../assets/images/integrated/weather/dayu-10.png">
  150. <img v-if="weatherinformationWeather == 11 || weatherinformationWeather == 24"
  151. src="../assets/images/integrated/weather/baoyu-11.png">
  152. <img v-if="weatherinformationWeather == 12 || weatherinformationWeather == 25"
  153. src="../assets/images/integrated/weather/dabaoyu-12.png">
  154. <img v-if="weatherinformationWeather == 13 || weatherinformationWeather == 26"
  155. src="../assets/images/integrated/weather/tedabaoyu-13.png">
  156. <img v-if="weatherinformationWeather == 14"
  157. src="../assets/images/integrated/weather/zhenxue-14.png">
  158. <img v-if="weatherinformationWeather == 15"
  159. src="../assets/images/integrated/weather/xiaoxue-15.png">
  160. <img v-if="weatherinformationWeather == 16 || weatherinformationWeather == 27"
  161. src="../assets/images/integrated/weather/zhongxue-16.png">
  162. <img v-if="weatherinformationWeather == 17 || weatherinformationWeather == 28"
  163. src="../assets/images/integrated/weather/daxue-17.png">
  164. <img v-if="weatherinformationWeather == 18 || weatherinformationWeather == 29"
  165. src="../assets/images/integrated/weather/baoxue-18.png">
  166. <img v-if="weatherinformationWeather == 19" src="../assets/images/integrated/weather/wu-19.png">
  167. <img v-if="weatherinformationWeather == 20"
  168. src="../assets/images/integrated/weather/dongyu-20.png">
  169. <img v-if="weatherinformationWeather == 21"
  170. src="../assets/images/integrated/weather/shachenbao-21.png">
  171. <img v-if="weatherinformationWeather == 30"
  172. src="../assets/images/integrated/weather/fuchen-30.png">
  173. <img v-if="weatherinformationWeather == 31"
  174. src="../assets/images/integrated/weather/yangsha-31.png">
  175. <img v-if="weatherinformationWeather == 32"
  176. src="../assets/images/integrated/weather/qiangshachenbao-32.png">
  177. <span v-if="weatherinformationWeather == 1">晴</span>
  178. <span v-if="weatherinformationWeather == 2">多云</span>
  179. <span v-if="weatherinformationWeather == 3">阴</span>
  180. <span v-if="weatherinformationWeather == 4">阵雨</span>
  181. <span v-if="weatherinformationWeather == 5">雷阵雨</span>
  182. <span v-if="weatherinformationWeather == 6">雷阵雨伴有冰雹</span>
  183. <span v-if="weatherinformationWeather == 7">雨夹雪</span>
  184. <span v-if="weatherinformationWeather == 8">小雨</span>
  185. <span v-if="weatherinformationWeather == 9">中雨</span>
  186. <span v-if="weatherinformationWeather == 10">大雨</span>
  187. <span v-if="weatherinformationWeather == 11">暴雨</span>
  188. <span v-if="weatherinformationWeather == 12">大暴雨</span>
  189. <span v-if="weatherinformationWeather == 13">特大暴雨</span>
  190. <span v-if="weatherinformationWeather == 14">阵雪</span>
  191. <span v-if="weatherinformationWeather == 15">小雪</span>
  192. <span v-if="weatherinformationWeather == 16">中雪</span>
  193. <span v-if="weatherinformationWeather == 17">大雪</span>
  194. <span v-if="weatherinformationWeather == 18">暴雪</span>
  195. <span v-if="weatherinformationWeather == 19">雾</span>
  196. <span v-if="weatherinformationWeather == 20">冻雨</span>
  197. <span v-if="weatherinformationWeather == 21">沙尘暴</span>
  198. <span v-if="weatherinformationWeather == 22">小雨—中雨</span>
  199. <span v-if="weatherinformationWeather == 23">中雨—大雨</span>
  200. <span v-if="weatherinformationWeather == 24">大雨—暴雨</span>
  201. <span v-if="weatherinformationWeather == 25">暴雨—大暴雨</span>
  202. <span v-if="weatherinformationWeather == 26">大暴雨—特大暴雨</span>
  203. <span v-if="weatherinformationWeather == 27">小雪—中雪</span>
  204. <span v-if="weatherinformationWeather == 28">中雪—大雪</span>
  205. <span v-if="weatherinformationWeather == 29">大雪—暴雪</span>
  206. <span v-if="weatherinformationWeather == 30">浮尘</span>
  207. <span v-if="weatherinformationWeather == 31">扬沙</span>
  208. <span v-if="weatherinformationWeather == 32">强沙尘暴</span>
  209. </div>
  210. </el-col>
  211. <el-col :span="15">
  212. <div class="weather-info">
  213. <ul>
  214. <li>风力:{{ weatherinformationPower }}级</li>
  215. <li>低温:{{ weatherinformationLow }}℃</li>
  216. <li v-if="weatherinformationDirection == 1">风向:东风</li>
  217. <li v-if="weatherinformationDirection == 2">风向:东南风</li>
  218. <li v-if="weatherinformationDirection == 3">风向:南风</li>
  219. <li v-if="weatherinformationDirection == 4">风向:西南风</li>
  220. <li v-if="weatherinformationDirection == 5">风向:西风</li>
  221. <li v-if="weatherinformationDirection == 6">风向:西北风</li>
  222. <li v-if="weatherinformationDirection == 7">风向:北风</li>
  223. <li v-if="weatherinformationDirection == 8">风向:东北风</li>
  224. <li>高温:{{ weatherinformationHigh }}℃</li>
  225. <li>火险:{{ weatherinformationLevelValue }}
  226. </li>
  227. <li>湿度:{{ weatherinformationTemperature }}</li>
  228. </ul>
  229. </div>
  230. </el-col>
  231. </el-row>
  232. <el-row :gutter="20" v-else>
  233. <el-col :span="24">
  234. <div class="weather-img">
  235. 暂无天气信息!
  236. </div>
  237. </el-col>
  238. </el-row>
  239. <div class="firestate" v-if="todatWeather">
  240. <div
  241. :class="weatherinformationLevel == 'forest_weatherinformation_level_1' ? 'state-block1 state-on' : 'state-block1'">
  242. </div>
  243. <div
  244. :class="weatherinformationLevel == 'forest_weatherinformation_level_2' ? 'state-block2 state-on' : 'state-block2'">
  245. </div>
  246. <div
  247. :class="weatherinformationLevel == 'forest_weatherinformation_level_3' ? 'state-block3 state-on' : 'state-block3'">
  248. </div>
  249. <div
  250. :class="weatherinformationLevel == 'forest_weatherinformation_level_4' ? 'state-block4 state-on' : 'state-block4'">
  251. </div>
  252. <div
  253. :class="weatherinformationLevel == 'forest_weatherinformation_level_5' ? 'state-block5 state-on' : 'state-block5'">
  254. </div>
  255. </div>
  256. </div>
  257. </dv-border-box-13>
  258. </div>
  259. <!-- 曝光台 -->
  260. <div class="forthis">
  261. <dv-border-box-13 backgroundColor="rgba(12, 19, 38, .90)" style="padding-bottom: 1rem;">
  262. <img src="../assets/images/integrated/light.png" style="width: 100%; margin-top: .4rem;" />
  263. <div class="this-title">
  264. <span>超期事件</span>
  265. <dv-decoration-3 style="width:150px;height:15px;margin-right: 1rem;" />
  266. </div>
  267. <div class="i-list-con small-bottom-margin h-18">
  268. <div class="d-l-con padding-box nowrap" v-for="(item, index) in exposureStageList">
  269. <div class="bgt-state">
  270. <div class="bgt-state-frequency">{{ item.urgeCount }}</div>
  271. <div class="bgt-state-minute">{{ item.timeDiff }}分钟</div>
  272. </div>
  273. <div class="bgt-info">
  274. <div class="bgt-info-name">{{ item.eventName }}</div>
  275. <div class="bgt-info-place">
  276. <ul>
  277. <li>{{ item.deptNames }}</li>
  278. </ul>
  279. </div>
  280. </div>
  281. </div>
  282. </div>
  283. </dv-border-box-13>
  284. </div>
  285. <!-- 事件列表 -->
  286. <div class="forthis">
  287. <dv-border-box-13 backgroundColor="rgba(12, 19, 38, .90)" style="padding-bottom: 1rem;">
  288. <img src="../assets/images/integrated/light.png" style="width: 100%; margin-top: .4rem;" />
  289. <div class="this-title">
  290. <span>事件列表</span>
  291. <dv-decoration-3 style="width:150px;height:15px;margin-right: 1rem;" />
  292. </div>
  293. <div class="sj-search">
  294. <el-input placeholder="请输入内容" prefix-icon="el-icon-search" v-model="eventSearch"
  295. @change="getEventList(calendarDay, 10, 1, eventSearch)">
  296. </el-input>
  297. </div>
  298. <div class="i-list-con small-bottom-margin" style="height: 24vh;">
  299. <div class="d-l-con padding-box nowrap" v-for="(item, index) in eventList"
  300. @click="dropLocation(item.latitude, item.longitude,item.eventCode)" data-html2canvas-ignore>
  301. <div class="bgt-img">
  302. <img v-if="item.picturePath != null && item.picturePath != '' && item.pictureType == 'image'"
  303. :src="item.picturePath" style="width: 93px;height: 64px" loading="lazy" @error="showDefaultImg"/>
  304. <img v-else-if="item.eventType == '510'"
  305. src="../assets/images/水压.png"
  306. style="width: 93px;height: 64px"/>
  307. <!-- <img v-else-if="item.eventType == '510'"-->
  308. <!-- src="../assets/images/水尺.png"-->
  309. <!-- style="width: 93px;height: 64px"/>-->
  310. <img v-else-if="item.eventType == '511'"
  311. src="../assets/images/水流速.png"
  312. style="width: 93px;height: 64px"/>
  313. <img v-else-if="item.eventType == '403'"
  314. src="../assets/images/土壤墒情监测.png"
  315. style="width: 93px;height: 64px"/>
  316. <img v-else-if="item.eventType == '601'"
  317. src="../assets/images/大气监测.png"
  318. style="width: 93px;height: 64px"/>
  319. <img v-else-if="item.eventType == '602'"
  320. src="../assets/images/水质监测.png"
  321. style="width: 93px;height: 64px"/>
  322. <img v-else src="../assets/images/integrated/event-img-sub.png" style="width: 93px;height: 64px" />
  323. </div>
  324. <div class="bgt-info">
  325. <div v-if="item.eventStatusValue == 'forest_event_status_1' && item.urgeCount == 0"
  326. class="event-state-sb">
  327. <i class="el-icon-caret-left"></i>
  328. <div class="event-list-state-sb">
  329. 新上报
  330. </div>
  331. </div>
  332. <div v-if="item.eventStatusValue == 'forest_event_status_1' && item.urgeCount > 0"
  333. class="event-state-cb">
  334. <i class="el-icon-caret-left"></i>
  335. <div class="event-list-state-cb">
  336. 催办
  337. </div>
  338. </div>
  339. <div v-if="item.eventStatusValue == 'forest_event_status_2'" class="event-state-qs">
  340. <i class="el-icon-caret-left"></i>
  341. <div class="event-list-state-qs">
  342. 签收
  343. </div>
  344. </div>
  345. <div v-if="item.eventStatusValue == 'forest_event_status_3'" class="event-state-wb">
  346. <i class="el-icon-caret-left"></i>
  347. <div class="event-list-state-wb">
  348. 误报
  349. </div>
  350. </div>
  351. <div v-if="item.eventStatusValue == 'forest_event_status_4'" class="event-state-cf">
  352. <i class="el-icon-caret-left"></i>
  353. <div class="event-list-state-cf">
  354. 重复
  355. </div>
  356. </div>
  357. <div v-if="item.eventStatusValue == 'forest_event_status_5'" class="event-state-bj">
  358. <i class="el-icon-caret-left"></i>
  359. <div class="event-list-state-bj">
  360. 办结
  361. </div>
  362. </div>
  363. <div v-if="item.eventStatusValue == 'forest_event_status_6'" class="event-state-gd">
  364. <i class="el-icon-caret-left"></i>
  365. <div class="event-list-state-gd">
  366. 归档
  367. </div>
  368. </div>
  369. <div v-if="item.eventStatusValue == 'forest_event_status_7'" class="event-state-qr">
  370. <i class="el-icon-caret-left"></i>
  371. <div class="event-list-state-qr">
  372. 确认
  373. </div>
  374. </div>
  375. <div class="bgt-info-name">{{ item.reportor }} {{ item.eventName }}</div>
  376. <div class="bgt-info-place">
  377. <ul>
  378. <li>{{ item.createTime }}</li>
  379. </ul>
  380. </div>
  381. </div>
  382. </div>
  383. </div>
  384. <!--分页-->
  385. <div class="paging">
  386. <el-button type="button" @click="getEventList(calendarDay,10,pageNum-1,eventSearch)">上一页
  387. </el-button>
  388. <span>第{{pageNum}}页</span>
  389. <el-button type="button" :disabled="nextbutton" @click="getEventList(calendarDay,10,pageNum+1,eventSearch)">下一页
  390. </el-button>
  391. </div>
  392. </dv-border-box-13>
  393. </div>
  394. </div>
  395. <div class="right-item2">
  396. <!-- 日历 -->
  397. <div class="forthis">
  398. <dv-border-box-13 backgroundColor="rgba(12, 19, 38, .90)" style="padding-bottom: 1rem;">
  399. <img src="../assets/images/integrated/light.png" style="width: 100%; margin-top: .4rem;" />
  400. <div class="i-list-con small-bottom-margin h-30">
  401. <dateChoose @selectDay="selectDay"></dateChoose>
  402. </div>
  403. </dv-border-box-13>
  404. </div>
  405. <!-- 事件分类 -->
  406. <div class="forthis">
  407. <dv-border-box-13 backgroundColor="rgba(12, 19, 38, .90)" style="padding-bottom: 1rem;">
  408. <img src="../assets/images/integrated/light.png" style="width: 100%; margin-top: .4rem;" />
  409. <div class="this-title" style="cursor: pointer"
  410. @click="setEventTypeId({ eventTypeIdDl: [], eventTypeId: [] })">
  411. <span>事件分类</span>
  412. <dv-decoration-3 style="width:150px;height:15px;margin-right: 1rem;" />
  413. </div>
  414. <div class="i-list-con small-bottom-margin h-19">
  415. <chart v-if="showEventKind" :config="eventKind" @setEventTypeId="setEventTypeId"
  416. style="width: 90%;height: 18vh; padding:.5rem 1rem" />
  417. </div>
  418. </dv-border-box-13>
  419. </div>
  420. <!-- 上报排行 -->
  421. <div class="forthis">
  422. <dv-border-box-13 backgroundColor="rgba(12, 19, 38, .90)" style="padding-bottom: 1rem;">
  423. <img src="../assets/images/integrated/light.png" style="width: 100%; margin-top: .4rem;" />
  424. <div class="this-title">
  425. <span>上报排行</span>
  426. <dv-decoration-3 style="width:150px;height:15px;margin-right: 1rem;" />
  427. </div>
  428. <div class="i-list-con small-bottom-margin h-19">
  429. <dv-scroll-ranking-board :config="reportList" style="width: 100%;height: 300px; padding:.5rem 1rem" />
  430. </div>
  431. </dv-border-box-13>
  432. </div>
  433. </div>
  434. </div>
  435. <vBottomMenu ref="bottomMenu" @stopAudio="stopAudio"></vBottomMenu>
  436. </div>
  437. <audio id="resource" ref="up" :src="audioSrc" controls style="display: none;"></audio>
  438. <eventdetailsdialog ref="eventdetailsdialog" :calendarDay="calendarDay" @getEventList="getEventList"
  439. @getTodayEvents="getTodayEvents" @getFirespread="getFirespread" @getSupermap="getSupermap" @showEventDialog="showEventDialog"></eventdetailsdialog>
  440. <firespread ref="firespread" :calendarDay="calendarDay" @getEventList="getEventList"
  441. @getTodayEvents="getTodayEvents" @showEventDialog="showEventDialog" @getSupermap="getSupermap" @getFirespread="getFirespread"
  442. @showDialog="showDialog"></firespread>
  443. <eventLocation ref="eventLocation"></eventLocation>
  444. <TVWall ref="TVWall"></TVWall>
  445. <TVWalls ref="TVWalls"></TVWalls>
  446. </div>
  447. </template>
  448. <script>
  449. import dateChoose from '@/views/date.vue' //日历
  450. /** ----------------------------------weosocket开始------------------------------------- */
  451. import Cookies from 'js-cookie'
  452. /** ----------------------------------weosocket结束------------------------------------- */
  453. import {
  454. getBaseInfo,
  455. getDeptEventCount_direct,
  456. getEventByEventType_direct,
  457. getEventByReportorOrder_direct,
  458. getEventList,
  459. getEventList_direct,
  460. getEventPush,
  461. getExposureStage_direct,
  462. getLatestNotice,
  463. getTodayEvents_direct,
  464. getWeather_direct,
  465. selectByMenuId
  466. } from '@/api/forest'
  467. import { getNearEvent } from '@/api/event'
  468. import supermap from '@/components/supermap-2.5d' //超图
  469. // import supermapNotProcessed from '@/components/supermap' //超图
  470. // import supermapProcessed from '@/components/supermap' //超图
  471. import vheader from '@/components/v-header.vue' //一体化共用头部
  472. import vBottomMenu from '@/components/vBottomMenu.vue' //一体化公共底部菜单
  473. import eventLocation from '@/components/eventLocation.vue' //事件定位弹窗
  474. import TVWall from '@/components/TVWall.vue' //电视墙弹窗
  475. import TVWalls from '@/components/TVWalls.vue' //电视墙弹窗
  476. import eventdetailsdialog from '@/views/eventdetailsdialog.vue' //事件详情弹窗
  477. import firespread from '@/views/firespread.vue' //事件详情弹窗
  478. import chart from './from/dvCapsuleChart.vue'
  479. import { fireControlViewList, fireControlViewPoint, getResourceDetail, getResourcePoint } from '@/api/datacenter'
  480. /** ----------------------------------摄像头预览开始------------------------------------- */
  481. // import DHWs from '@/dahua/lib/DHWs'
  482. import Firespread from './firespread'
  483. /** ----------------------------------摄像头预览结束------------------------------------- */
  484. import { getIconBg } from '@/api/components/sookaMapIcon'
  485. import { selectConfigKey } from '@/api/system/config'
  486. import { getUserProfile } from '@/api/system/user'
  487. let echarts = require('echarts')
  488. export default {
  489. components: {
  490. Firespread,
  491. supermap,
  492. chart,
  493. // supermapNotProcessed,
  494. // supermapProcessed,
  495. vheader,
  496. vBottomMenu,
  497. eventLocation,
  498. TVWall,
  499. TVWalls,
  500. dateChoose,
  501. eventdetailsdialog,
  502. firespread
  503. },
  504. metaInfo () {
  505. return {
  506. title:this.title,
  507. meta:[{
  508. charset: "utf-8"
  509. },
  510. {
  511. name: "viewport",
  512. content: "width=device-width, initial-scale=1.0,minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"
  513. }]
  514. }
  515. },
  516. created() {
  517. this.selectByMenuId(8)
  518. /** ----------------------------------底部按钮公用组件开始------------------------------------- */
  519. window.showDialog = this.showDialog
  520. window.choseLayerSwitching = this.choseLayerSwitching
  521. window.choseLayerSwitchingList = this.choseLayerSwitchingList
  522. /** ----------------------------------底部按钮公用组件结束------------------------------------- */
  523. },
  524. mounted() {
  525. // 初始化地图数据
  526. this.getSuperMapUrl();
  527. setTimeout(() => {
  528. this.getLatestNotice()
  529. this.getTodayEvents(this.getCurrentDataStr())
  530. this.getDeptEventCount(this.getCurrentDataStr())
  531. this.getWeather(this.getCurrentDataStr())
  532. this.getEventList(this.getCurrentDataStr(), this.pageSize, this.pageNum)
  533. this.getEventByEventType(this.getCurrentDataStr())
  534. this.getEventByReportorOrder(this.getCurrentDataStr())
  535. this.getExposureStage(this.getCurrentDataStr())
  536. this.getSupermap(this.getCurrentDataStr())
  537. this.getMenuEventType()
  538. this.getResource()
  539. }, 2000)
  540. /** ----------------------------------weosocket开始------------------------------------- */
  541. // this.initWebSocket()
  542. /** ----------------------------------weosocket结束------------------------------------- */
  543. this.bottomMenuList() //获取底部公共组件消息和任务
  544. setTimeout(() => {
  545. this.title = '四平市态势感知平台'
  546. }, 1000)
  547. },
  548. data() {
  549. return {
  550. noticeContent: '', //通知公告
  551. nextbutton:false,
  552. title:"",
  553. //左侧资源
  554. resourcesList: [],
  555. iconCurrentIndex:"",
  556. source: [],
  557. //警报MP3文件
  558. audioSrc: require('@/assets/jingbao.mp3'),
  559. calendarDay: this.getCurrentDataStr(),
  560. //基本情况
  561. forestInfo: '', //基本情况
  562. //左侧获取事件信息统计
  563. totalStr: '000000',
  564. totalAllEvent: 0,
  565. aiTotal: '',
  566. newReport: '',
  567. otherTotal: '',
  568. readyFinish: '',
  569. readySure: '',
  570. total: '',
  571. aiTotal_pre: '',
  572. newReport_pre: '',
  573. otherTotal_pre: '',
  574. readyFinish_pre: '',
  575. readySure_pre: '',
  576. //左侧部门事件数量
  577. forestFarm: [],
  578. //右侧天气
  579. todatWeather: false,
  580. weatherinformationDirection: '',
  581. weatherinformationHigh: '',
  582. weatherinformationLevel: '',
  583. weatherinformationLevelValue: '', //火险登记中文
  584. weatherinformationLow: '',
  585. weatherinformationPower: '',
  586. weatherinformationTemperature: '',
  587. weatherinformationTime: '',
  588. weatherinformationWeather: '',
  589. //右侧曝光台
  590. exposureStageList: [],
  591. //右侧事件列表
  592. eventList: [],
  593. pageSize: 10,
  594. pageNum: 1,
  595. eventListnew: [],
  596. eventListAll: [],
  597. eventSearch: '', //事件列表搜索
  598. listCurrentIndex1: '',
  599. // ----------------------------------事件分类柱状----------------------------------------
  600. eventKind: {},
  601. showEventKind: false,
  602. // ----------------------------------上报排行----------------------------------------
  603. reportList: {
  604. data: []
  605. },
  606. /** ----------------------------------weosocket开始------------------------------------- */
  607. weosocket: false,
  608. websock: '',
  609. setIntervalWesocketPush: null,
  610. websockSid: {
  611. userId: '',
  612. eventTypeDl: '',
  613. eventType: '',
  614. },
  615. /** ----------------------------------weosocket结束------------------------------------- */
  616. /** ----------------------------------摄像头预览开始------------------------------------- */
  617. activePanel: 'key1',
  618. isLogin: false,
  619. cameraParams: [],
  620. ws: null,
  621. /** ----------------------------------摄像头预览结束------------------------------------- */
  622. markersList: [], //点位列表
  623. cameraList: [], //摄像头列表
  624. eventTypeIdDl: [],
  625. eventTypeId: []
  626. }
  627. },
  628. /** ----------------------------------weosocket开始------------------------------------- */
  629. destroyed() { //离开页面关闭Socket连接
  630. if (this.websock) {
  631. clearInterval(this.setIntervalWesocketPush)
  632. this.websock.close()
  633. this.websock = null
  634. }
  635. },
  636. /** ----------------------------------weosocket结束------------------------------------- */
  637. methods: {
  638. selectByMenuId(trafficVal) {
  639. let eventType = []
  640. let eventTypeDl = []
  641. selectByMenuId({
  642. menuId: trafficVal
  643. }).then(req => {
  644. req.data.forEach(item => {
  645. eventType.push(item.eventTypeXl)
  646. eventTypeDl.push(item.eventType)
  647. })
  648. Cookies.set("eventType",eventType)
  649. Cookies.set("eventTypeDl",eventTypeDl)
  650. })
  651. },
  652. showDefaultImg(){
  653. let img = event.srcElement;
  654. img.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAF0AAABACAYAAAB4OXuGAAAE2UlEQVR4nO2b2XbaSBCGS2hhByEwCXaSizxArucJ5v1fYG5mJnbGrGIVYlHO30RYYkmM7e4Sk/7O0YVt3JL+Lv1dVS2ML3/8GZFGKTktt3q06Axo0RnQojOgRWdAi86AFp0BLToDWnQGLLmnNLJ5179EbpEuRXTDMKjV+UxG7nofpGA+ofHgm5SxpaiSy5lXLTgolKrSxpajjHGttqIGyZ6+Y+r3aLvdZOF+f0qhWCWnUJJ+HiWiLxdT2qxXKk71Kiw7Tw7JF12njAxkQnRkO6blUM5U8uCxw3qXtlOgcq1JTqG4z+m3mw0F8zHNJgOKttssaPTmsIlerLhUdW+Ofp8zTSpVG5QvVmjU+6p0LUieS+aEs9iLUyifFDyJadnktm6F9agimPm0mPm0Wi6kFUbEFemHgq9XS1EBwtOL5RoZxi4W4PN4IuaToZLriqKIJsNH6edRLjp8HFEcEwZzGvXu9/2OYDamRvvjPsKRO6sSXRXKRUf0JtkJ+tRgQtSHwUx4uvi87ZwbSsK12VRv3pJl2zQbD8QhA/WefmDR0YmOHh5z1aBXtBPcEReJrEoWykXfrNLZSKnipn5GtOWL5afPr0Ml11X3Oj8El49ye1mFC9pu1vtCCDbitu5ouZiQkTOpVGnsF1L60UKQDRZ2FT2XGJbsBQ2wmvd+/zNu+NRNY3Lm05HUaylW6iJDUglLno708FeLFLqSyGpkFimY6Krbljb+Odgq0tm4T+swoHK9Kbp7MVhEl/MJTcd9EemygH/Dx5Pg3CqKMdbeyzKYiQP+bpo2RdFWLJyH2QsWVnj9ehXSdNx7dfRjZwuZSnJ3C2sNxi+W668a+zlkoq2HiD4X1fDc2ALsfFEcfv/+xT0ZRHK92UkVaBjL7z1Qqea98A4uI9P99HLNO/Jc2AIqVoj/EqqNd6n/xVODSVS5s5VZ0SvuzdkCBfbQaN1dbAWlqne04ewPHoStqCSTote8d0dFE1oDKQsyDKo22mJyngPqgUo9PYmTUVf0flSTqa0a+G3N66QqUoB2K7p/WHDdZocsp7D/GybHshwRsecWWMvJp+oCMebUp4XkGuAcmYl00fto3R0JjoZY3G5FpA+7/4o8Pwnyba/9MbU4xuwmKt2XR3RPRvJbuOfIhOg7j/5AzsHiiMoVRxKkk9hgQJ6fBN1Lr/2JnPxTZQuhsRGS3HuFf+Op4IRddAjSaH8QFpBkPPzvp310VLR+/yGV0+NpcW9uRZpJYm14nyq8kKEgU+Hee2X1dERn4+Yu/RZAFJE/+PasRhc+M3z8h+qtWzL3YxgizURmkxRcjNt/yMT7N2yRjsUQEZ4UHBUp+i2XdBax6TF8/JtWYZAe3z5+crD3mQVYREdxgjwbXh4jGlzdrxQuL0/h8NrG6MQCGzOfDM7+jQMW0WuNdqrvgawEoh1G6yXEC+zhwounZur3XzyuDJg8/Sl9g8dC8M0bdRSx+CJDQf6+Xoc0O5iELMAiOiISLV3YwnTUffO+B6pXHFmFRXTYCPz7d0W/tcuAFp0BLToDSjwdbdVr+PqLZf2P3nup1FsqTnM1yLEXhtfirgkposNKrv1bFDLbBlLsBSV59/4v/TX1M0j2dG0zp9ApIwNadAa06Axo0RnQojOgRWdAi86AFp0BLbpqiOg74YbqU8Iw/dEAAAAASUVORK5CYII=";
  655. },
  656. //初始化地图数据
  657. getSuperMapUrl(){
  658. getUserProfile().then(response => {
  659. let mapDeptId=response.mapDeptId
  660. let num = 0;
  661. if (mapDeptId == "365") {
  662. num = 0;
  663. } else if (mapDeptId == "369") {
  664. num = 1;
  665. } else if (mapDeptId == "371") {
  666. num = 2;
  667. } else if (mapDeptId == "373") {
  668. num = 3;
  669. } else if (mapDeptId == "372") {
  670. num = 4;
  671. } else if (mapDeptId == "370") {
  672. num = 5;
  673. }
  674. this.$refs.supermap.removeAllviewer(num, -1);
  675. });
  676. },
  677. getResource() {
  678. let that = this;
  679. that.resourcesList=[]
  680. fireControlViewList("ziyuan").then(function (res) {
  681. for (let i = 0; i < res.data.length; i++) {
  682. if(res.data[i].type !='centerdata_t_forest_fireteam'){
  683. that.resourcesList.push(res.data[i]);
  684. }
  685. }
  686. //截取data.resourceTable字段中“_”分隔符最后一个作为关键字,重新拼接成前端需要的图标:class,格式sj-icon-xxxx,将其set回原数组
  687. that.resourcesList.forEach(function (data, index) {
  688. let icon =
  689. "sj" +
  690. "-" +
  691. "icon" +
  692. "-" +
  693. data.type.replaceAll("_", "-").replaceAll("@", "-");
  694. console.log("icon_" + (index + 1) + "=", icon);
  695. that.$set(that.resourcesList[index], "icon", icon);
  696. //每个图标对应固定颜色
  697. that.$set(that.resourcesList[index], "bg", getIconBg(icon));
  698. });
  699. that.fireControlViewPoint("ziyuan", "");
  700. });
  701. },
  702. fireControlViewPoint(resourceTable, name, search) {
  703. if(resourceTable == this.resourceTable && search != "search"){
  704. resourceTable = "ziyuan"
  705. }
  706. this.iconCurrentIndex = resourceTable;
  707. // 搜索框
  708. if (name == "" || name == null || name == undefined) {
  709. name = "";
  710. } else {
  711. this.showSearch = true;
  712. }
  713. console.log("name=", name);
  714. console.log("this.showSearch=", this.showSearch);
  715. let that = this;
  716. that.resourceTable = resourceTable;
  717. that.markersList = [];
  718. that.source = [];
  719. fireControlViewPoint(resourceTable, name,"").then((res) => {
  720. let pointList = res.data.pointList;
  721. that.deptGroupList = res.data.deptList;
  722. if (res.data.deptList != null && res.data.deptList.length > 0) {
  723. for (let i = 0; i < res.data.deptList.length; i++) {
  724. let aa = [
  725. res.data.deptList[i].deptName,
  726. res.data.deptList[i].count,
  727. ];
  728. that.source.push(aa);
  729. }
  730. }
  731. if (res.data.pointList != null && res.data.pointList.length > 0) {
  732. for (let i = 0; i < res.data.pointList.length; i++) {
  733. if(res.data.pointList[i].indexName != 'centerdata_t_forest_fireteam'){
  734. let markersMap = {
  735. lng: res.data.pointList[i].longitude,
  736. lat: res.data.pointList[i].latitude,
  737. icon: "marker",
  738. bindPopupHtml: "",
  739. click: "",
  740. name: i,
  741. keepBindPopup: false,
  742. isAggregation: false,
  743. };
  744. that.markersList.push(
  745. this.getMarkersMap(
  746. resourceTable == "ziyuan" ? res.data.pointList[i].indexName:resourceTable,
  747. markersMap,
  748. res.data.pointList[i]
  749. )
  750. );
  751. }
  752. }
  753. }
  754. if (this.showSearch == true) {
  755. this.dataChat();
  756. }
  757. that.$refs.supermap.clearM(false);
  758. that.$refs.supermap.setMarkers(that.markersList);
  759. });
  760. },
  761. fireControlViewPointNew(resourceTable, name, search) {
  762. if(resourceTable == this.resourceTable && search != "search"){
  763. resourceTable = "ziyuan"
  764. }
  765. // this.iconCurrentIndex = resourceTable;
  766. // 搜索框
  767. if (name == "" || name == null || name == undefined) {
  768. name = "";
  769. } else {
  770. this.showSearch = true;
  771. }
  772. console.log("name=", name);
  773. console.log("this.showSearch=", this.showSearch);
  774. let that = this;
  775. that.resourceTable = resourceTable;
  776. that.markersList = [];
  777. that.source = [];
  778. fireControlViewPoint(resourceTable, name,"").then((res) => {
  779. let pointList = res.data.pointList;
  780. that.deptGroupList = res.data.deptList;
  781. if (res.data.deptList != null && res.data.deptList.length > 0) {
  782. for (let i = 0; i < res.data.deptList.length; i++) {
  783. let aa = [
  784. res.data.deptList[i].deptName,
  785. res.data.deptList[i].count,
  786. ];
  787. that.source.push(aa);
  788. }
  789. }
  790. if (res.data.pointList != null && res.data.pointList.length > 0) {
  791. for (let i = 0; i < res.data.pointList.length; i++) {
  792. if(res.data.pointList[i].indexName != 'centerdata_t_forest_fireteam'){
  793. let markersMap = {
  794. lng: res.data.pointList[i].longitude,
  795. lat: res.data.pointList[i].latitude,
  796. icon: "marker",
  797. bindPopupHtml: "",
  798. click: "",
  799. name: i,
  800. keepBindPopup: false,
  801. isAggregation: false,
  802. };
  803. that.markersList.push(
  804. this.getMarkersMap(
  805. resourceTable == "ziyuan" ? res.data.pointList[i].indexName:resourceTable,
  806. markersMap,
  807. res.data.pointList[i]
  808. )
  809. );
  810. }
  811. }
  812. }
  813. if (this.showSearch == true) {
  814. this.dataChat();
  815. }
  816. that.$refs.supermap.clearM(false);
  817. that.$refs.supermap.setMarkers(that.markersList);
  818. });
  819. },
  820. indentleftSetMarkers(resourceTable, name) {
  821. let that = this
  822. // 搜索框
  823. if (name == '所有') {
  824. name = undefined;
  825. } else {
  826. that.$refs.supermap.clearM()
  827. this.iconCurrentIndex = resourceTable
  828. }
  829. // 搜索类型
  830. // this.searchType = resourceTable;
  831. // that.resourceTable = resourceTable
  832. that.markersList = []
  833. that.source = []
  834. //点击左侧地图落点
  835. getResourcePoint(resourceTable, name).then(res => {
  836. that.deptGroupList = res.data.deptGroupList
  837. if (res.data.deptGroupList != null && res.data.deptGroupList.length > 0) {
  838. for (let i = 0; i < res.data.deptGroupList.length; i++) {
  839. let aa = [res.data.deptGroupList[i].deptName, res.data.deptGroupList[i].count]
  840. that.source.push(aa)
  841. }
  842. }
  843. if (res.data.resourceList != null && res.data.resourceList.length > 0) {
  844. for (let i = 0; i < res.data.resourceList.length; i++) {
  845. let markersMap = {
  846. lng: 124.59,
  847. lat: 43.02,
  848. icon: 'marker',
  849. bindPopupHtml: '',
  850. click: '',
  851. keepBindPopup: false,
  852. isAggregation: false
  853. }
  854. that.markersList.push(this.getMarkersMap(resourceTable, markersMap, res.data.resourceList[i]));
  855. // that.markersList.push(markersMap)
  856. }
  857. }
  858. if (this.showSearch == true) {
  859. this.dataChat();
  860. }
  861. that.$refs.supermap.setMarkers(that.markersList)
  862. })
  863. },
  864. getMarkersMap(resourceTable, markersMap, item) {
  865. markersMap.click = "sewageOutletClick";
  866. markersMap.parameter = item;
  867. if (resourceTable == 'centerdata_t_resources_illegal_construction') { //违建信息
  868. markersMap.icon = 'sj-icon-map-centerdata-t-resources-illegal-constructionon'
  869. markersMap.lng = (item.longitude ? item.longitude : "")
  870. markersMap.lat = (item.latitude ? item.latitude : "")
  871. markersMap.bindPopupHtml = '<div class="map-tip">' +
  872. '<span>' +
  873. ' <div class="d-l-con">' +
  874. ' <div class="d-l-l-text">' +
  875. ' <h4>经纬度:' + (item.longitude ? item.longitude : "") + ',' + (item.latitude ? item
  876. .latitude : "") + '</h4>' +
  877. ' </div>' +
  878. ' </div>' +
  879. ' </span>' +
  880. '<span>' +
  881. ' <div class="d-l-con">' +
  882. ' <div class="d-l-l-text">' +
  883. ' <h4>名称:' + (item.name ? item.name : "") +
  884. '</h4>' +
  885. ' </div>' +
  886. ' </div>' +
  887. ' </span>' +
  888. '<span>' +
  889. ' <div class="d-l-con">' +
  890. ' <div class="d-l-l-text">' +
  891. ' <h4>违建处理负责人:' + (item.contacts ? item.contacts : "") +
  892. '</h4>' +
  893. ' </div>' +
  894. ' </div>' +
  895. ' </span>' +
  896. '<span>' +
  897. ' <div class="d-l-con">' +
  898. ' <div class="d-l-l-text">' +
  899. ' <h4>联系方式:' + (item.phone ? item.phone : "") +
  900. '</h4>' +
  901. ' </div>' +
  902. ' </div>' +
  903. ' </span></div>'
  904. }
  905. else if (resourceTable == 'centerdata_t_resources_deposit') { //矿产资源
  906. markersMap.icon = 'sj-icon-map-centerdata-t-resources-deposit'
  907. markersMap.lng = (item.longitude ? item.longitude : "")
  908. markersMap.lat = (item.latitude ? item.latitude : "")
  909. markersMap.bindPopupHtml = '<div class="map-tip">' +
  910. '<span>' +
  911. ' <div class="d-l-con">' +
  912. ' <div class="d-l-l-text">' +
  913. ' <h4>经纬度:' + (item.longitude ? item.longitude : "") + ',' + (item.latitude ? item
  914. .latitude : "") + '</h4>' +
  915. ' </div>' +
  916. ' </div>' +
  917. ' </span>' +
  918. '<span>' +
  919. ' <div class="d-l-con">' +
  920. ' <div class="d-l-l-text">' +
  921. ' <h4>名称:' + (item.name ? item.name : "") + '</h4>' +
  922. ' </div>' +
  923. ' </div>' +
  924. ' </span>' +
  925. '<span>' +
  926. ' <div class="d-l-con">' +
  927. ' <div class="d-l-l-text">' +
  928. ' <h4>联系人:' + (item.contacts ? item.contacts : "") + '</h4>' +
  929. ' </div>' +
  930. ' </div>' +
  931. ' </span>' +
  932. '<span>' +
  933. ' <div class="d-l-con">' +
  934. ' <div class="d-l-l-text">' +
  935. ' <h4>电话:' + (item.phone ? item.phone : "") + '</h4>' +
  936. ' </div>' +
  937. ' </div>' +
  938. ' </span></div>'
  939. }
  940. else if (resourceTable == 'centerdata_t_resources_forest') { //森林资源管理信息
  941. markersMap.icon = 'sj-icon-map-centerdata-t-forest-landing'
  942. markersMap.lng = (item.longitude ? item.longitude : "")
  943. markersMap.lat = (item.latitude ? item.latitude : "")
  944. markersMap.bindPopupHtml = '<div class="map-tip">' +
  945. '<span>' +
  946. ' <div class="d-l-con">' +
  947. ' <div class="d-l-l-text">' +
  948. ' <h4>经纬度:' + (item.longitude ? item.longitude : "") + ',' + (item.latitude ? item
  949. .latitude : "") + '</h4>' +
  950. ' </div>' +
  951. ' </div>' +
  952. ' </span>' +
  953. '<span>' +
  954. ' <div class="d-l-con">' +
  955. ' <div class="d-l-l-text">' +
  956. ' <h4>名称:' + (item.name ? item.name : "") +
  957. '</h4>' +
  958. ' </div>' +
  959. ' </div>' +
  960. ' </span>' +
  961. '<span>' +
  962. ' <div class="d-l-con">' +
  963. ' <div class="d-l-l-text">' +
  964. ' <h4>占地范围:' + (item.zdfw ? item.zdfw : "") +
  965. '</h4>' +
  966. ' </div>' +
  967. ' </div>' +
  968. ' </span>' +
  969. '<span>' +
  970. ' <div class="d-l-con">' +
  971. ' <div class="d-l-l-text">' +
  972. ' <h4>占地面积(万公顷):' + (item.landArea ? item.landArea : "") + '</h4>' +
  973. ' </div>' +
  974. ' </div>' +
  975. ' </span></div>'
  976. }
  977. else if (resourceTable == 'centerdata_t_resources_geologic_hazard') { //地质灾害易发区
  978. markersMap.icon = 'sj-icon-map-centerdata-t-resources-geologic-hazard'
  979. markersMap.lng = (item.longitude ? item.longitude : "")
  980. markersMap.lat = (item.latitude ? item.latitude : "")
  981. markersMap.bindPopupHtml = '<div class="map-tip">' +
  982. '<span>' +
  983. ' <div class="d-l-con">' +
  984. ' <div class="d-l-l-text">' +
  985. ' <h4>经纬度:' + (item.longitude ? item.longitude : "") + ',' + (item.latitude ? item
  986. .latitude : "") + '</h4>' +
  987. ' </div>' +
  988. ' </div>' +
  989. ' </span>' +
  990. '<span>' +
  991. ' <div class="d-l-con">' +
  992. ' <div class="d-l-l-text">' +
  993. ' <h4>名称:' + (item.name ? item.name : "") +
  994. '</h4>' +
  995. ' </div>' +
  996. ' </div>' +
  997. ' </span>' +
  998. '<span>' +
  999. ' <div class="d-l-con">' +
  1000. ' <div class="d-l-l-text">' +
  1001. ' <h4>联系人:' + (item.contacts ? item.contacts : "") +
  1002. '</h4>' +
  1003. ' </div>' +
  1004. ' </div>' +
  1005. ' </span>' +
  1006. '<span>' +
  1007. ' <div class="d-l-con">' +
  1008. ' <div class="d-l-l-text">' +
  1009. ' <h4>电话:' + (item.phone ? item.phone : "") + '</h4>' +
  1010. ' </div>' +
  1011. ' </div>' +
  1012. ' </span></div>'
  1013. }
  1014. else if (resourceTable == 'centerdata_t_resources_hydroenergy') { //水能资源
  1015. markersMap.icon = 'sj-icon-map-centerdata-t-forest-checkpoint'
  1016. markersMap.lng = (item.longitude ? item.longitude : "")
  1017. markersMap.lat = (item.latitude ? item.latitude : "")
  1018. markersMap.bindPopupHtml = '<div class="map-tip">' +
  1019. '<span>' +
  1020. ' <div class="d-l-con">' +
  1021. ' <div class="d-l-l-text">' +
  1022. ' <h4>经纬度:' + (item.longitude ? item.longitude : "") + ',' + (item.latitude ? item
  1023. .latitude : "") + '</h4>' +
  1024. ' </div>' +
  1025. ' </div>' +
  1026. ' </span>' +
  1027. '<span>' +
  1028. ' <div class="d-l-con">' +
  1029. ' <div class="d-l-l-text">' +
  1030. ' <h4>名称:' + (item.name ? item.name : "") +
  1031. '</h4>' +
  1032. ' </div>' +
  1033. ' </div>' +
  1034. ' </span>' +
  1035. '<span>' +
  1036. ' <div class="d-l-con">' +
  1037. ' <div class="d-l-l-text">' +
  1038. ' <h4>联系人:' + (item.person ? item.person : "") +
  1039. '</h4>' +
  1040. ' </div>' +
  1041. ' </div>' +
  1042. ' </span>' +
  1043. '<span>' +
  1044. ' <div class="d-l-con">' +
  1045. ' <div class="d-l-l-text">' +
  1046. ' <h4>位置:' + (item.address ? item.address : "") +
  1047. '</h4>' +
  1048. ' </div>' +
  1049. ' </div>' +
  1050. ' </span>' +
  1051. '<span>' +
  1052. ' <div class="d-l-con">' +
  1053. ' <div class="d-l-l-text">' +
  1054. ' <h4>电话:' + (item.phone ? item.phone : "") +
  1055. '</h4>' +
  1056. ' </div>' +
  1057. ' </div>' +
  1058. ' </span></div>'
  1059. }
  1060. else if (resourceTable == 'centerdata_t_resources_land') { //土地资源管理信息
  1061. markersMap.icon = 'sj-icon-map-centerdata-t-forest-waterintake'
  1062. markersMap.lng = (item.longitude ? item.longitude : "")
  1063. markersMap.lat = (item.latitude ? item.latitude : "")
  1064. markersMap.bindPopupHtml = '<div class="map-tip">' +
  1065. '<span>' +
  1066. ' <div class="d-l-con">' +
  1067. ' <div class="d-l-l-text">' +
  1068. ' <h4>经纬度:' + (item.longitude ? item.longitude : "") + ',' + (item.latitude ? item
  1069. .latitude : "") + '</h4>' +
  1070. ' </div>' +
  1071. ' </div>' +
  1072. ' </span>' +
  1073. '<span>' +
  1074. ' <div class="d-l-con">' +
  1075. ' <div class="d-l-l-text">' +
  1076. ' <h4>名称:' + (item.name ? item.name : "") +
  1077. '</h4>'
  1078. ' </div>' +
  1079. ' </div>' +
  1080. ' </span>' +
  1081. '<span>' +
  1082. ' <div class="d-l-con">' +
  1083. ' <div class="d-l-l-text">' +
  1084. ' <h4>占地面积(万公顷):' + (item.landArea ? item.landArea : "") +
  1085. '</h4>' +
  1086. ' </div>' +
  1087. ' </div>' +
  1088. ' </span></div>'
  1089. }
  1090. return markersMap;
  1091. },
  1092. getMenuEventType() {
  1093. let that = this
  1094. let eventType = []
  1095. let eventTypeDl = []
  1096. selectByMenuId({
  1097. menuId: 8
  1098. }).then(req => {
  1099. req.data.forEach(item => {
  1100. eventType.push(item.eventTypeXl)
  1101. eventTypeDl.push(item.eventType)
  1102. })
  1103. that.websockSid.userId = Cookies.get('userId')
  1104. that.websockSid.eventTypeDl = eventTypeDl
  1105. that.websockSid.eventType = eventType
  1106. that.initWebSocket(that.websockSid.userId, that.websockSid.eventTypeDl, that.websockSid.eventType)
  1107. console.log(that.websockSid)
  1108. })
  1109. },
  1110. setEventTypeId(data) {
  1111. // let data = {eventTypeIdDl: [], eventTypeId: []}
  1112. // let data = {eventTypeIdDl: that.eventTypeIdDl, eventTypeId: that.eventTypeId}
  1113. let that = this
  1114. that.eventTypeIdDl = data.eventTypeIdDl
  1115. that.eventTypeId = data.eventTypeId
  1116. that.getSupermap(that.calendarDay, false)
  1117. that.getTodayEvents(that.calendarDay, false)
  1118. that.getEventByEventType(that.calendarDay, false)
  1119. that.getExposureStage(that.calendarDay, false)
  1120. that.getEventByReportorOrder(that.calendarDay, false)
  1121. that.getDeptEventCount(that.calendarDay, false)
  1122. that.getEventList(that.calendarDay, that.pageSize, that.pageNum, '', false)
  1123. },
  1124. dropLocation(lat, lng, eventCode) {
  1125. this.$refs.supermap.dropLocation(lat, lng, 18)
  1126. this.showEventDialog(eventCode)
  1127. },
  1128. showEventDialog(eventCode) {
  1129. //事件信息弹出
  1130. this.$refs.firespread.showEventDialog(eventCode)
  1131. },
  1132. getFirespread(eventCode) {
  1133. this.$refs.eventdetailsdialog.showEventDialog(eventCode);
  1134. // this.$refs.eventdetailsdialog.fireControlViewList()
  1135. },
  1136. getLatestNotice() {
  1137. //左侧获取通知公告
  1138. getLatestNotice().then(res => {
  1139. if (res.code == 200) {
  1140. this.noticeContent = res.data.noticeContent //通知公告
  1141. }
  1142. })
  1143. },
  1144. getCurrentDataStr() {
  1145. let date = new Date()
  1146. let y = date.getFullYear()
  1147. let m = date.getMonth() + 1
  1148. m = m < 10 ? '0' + m : m
  1149. let d = date.getDate()
  1150. d = d < 10 ? '0' + d : d
  1151. return y + '-' + m + '-' + d
  1152. },
  1153. selectDay(day) { //日历点击
  1154. this.pageNum = 1
  1155. this.getTodayEvents(day)
  1156. this.getDeptEventCount(day)
  1157. this.getWeather(day)
  1158. this.getEventList(day, 10, 1)
  1159. this.getEventByEventType(day)
  1160. this.getEventByReportorOrder(day)
  1161. this.getExposureStage(day)
  1162. this.getSupermap(day);
  1163. this.calendarDay = day
  1164. },
  1165. //事件数量统计chart 样例地址http://192.144.199.210:8080/editor/index.html?chart_id=jTXf0Rv4A3oiBONB
  1166. eventChartAi(aiTotal_pre, otherTotal_pre) {
  1167. // 基于准备好的dom,初始化echarts实例
  1168. let myChart = echarts.init(document.getElementById('chart-event-ai'))
  1169. myChart.setOption({
  1170. tooltip: {
  1171. trigger: 'none'
  1172. },
  1173. grid: {
  1174. top: '65%',
  1175. left: '5%',
  1176. right: '5%'
  1177. },
  1178. yAxis: {
  1179. data: ['百分比'],
  1180. axisTick: {
  1181. show: false
  1182. },
  1183. axisLine: {
  1184. show: false
  1185. },
  1186. axisLabel: {
  1187. show: false
  1188. }
  1189. },
  1190. xAxis: {
  1191. splitLine: {
  1192. show: false
  1193. },
  1194. axisTick: {
  1195. show: false
  1196. },
  1197. axisLine: {
  1198. show: false
  1199. },
  1200. axisLabel: {
  1201. show: false
  1202. }
  1203. },
  1204. legend: {
  1205. data: ['AI', '其他'],
  1206. bottom: '5%',
  1207. textStyle: {
  1208. color: '#1FC3CE',
  1209. fontSize: 14
  1210. }
  1211. },
  1212. series: [{
  1213. // name: '最上层立体圆',
  1214. type: 'pictorialBar',
  1215. symbolSize: [10, 20],
  1216. symbolOffset: [2, 0],
  1217. z: 12,
  1218. itemStyle: {
  1219. normal: {
  1220. color: '#293CA0'
  1221. }
  1222. },
  1223. data: [{
  1224. value: 100,
  1225. symbolPosition: 'end'
  1226. }]
  1227. }, {
  1228. // name: '中间立体圆',
  1229. type: 'pictorialBar',
  1230. symbolSize: [10, 20],
  1231. symbolOffset: [2, 0],
  1232. z: 12,
  1233. itemStyle: {
  1234. normal: {
  1235. color: '#45ac8d'
  1236. }
  1237. },
  1238. data: [{
  1239. value: aiTotal_pre,
  1240. symbolPosition: 'end'
  1241. }]
  1242. }, {
  1243. // name: '最底部立体圆',
  1244. type: 'pictorialBar',
  1245. symbolSize: [10, 20],
  1246. symbolOffset: [-4, 0],
  1247. z: 12,
  1248. itemStyle: {
  1249. normal: {
  1250. color: '#196d59'
  1251. }
  1252. },
  1253. data: [otherTotal_pre]
  1254. }, {
  1255. name: 'AI',
  1256. //底部立体柱
  1257. stack: '1',
  1258. type: 'bar',
  1259. itemStyle: {
  1260. normal: {
  1261. color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{
  1262. offset: 0,
  1263. color: '#29ac8f'
  1264. }, {
  1265. offset: 1,
  1266. color: '#0a3f3f'
  1267. }])
  1268. }
  1269. },
  1270. label: {
  1271. normal: {
  1272. show: true,
  1273. position: 'inside',
  1274. offset: [0, 1],
  1275. formatter: function(obj) {
  1276. return (obj.value).toLocaleString() + '%'
  1277. },
  1278. textStyle: {
  1279. align: 'center',
  1280. baseline: 'middle',
  1281. fontSize: 14,
  1282. fontWeight: '400',
  1283. color: '#fff',
  1284. textShadowColor: '#000',
  1285. textShadowBlur: '0',
  1286. textShadowOffsetX: 1,
  1287. textShadowOffsetY: 1
  1288. }
  1289. }
  1290. },
  1291. silent: true,
  1292. barWidth: 20,
  1293. barGap: '-100%', // Make series be overlap
  1294. data: [aiTotal_pre]
  1295. }, {
  1296. name: '其他',
  1297. //上部立体柱
  1298. stack: '1',
  1299. type: 'bar',
  1300. itemStyle: {
  1301. normal: {
  1302. color: '#14257B',
  1303. opacity: .7
  1304. }
  1305. },
  1306. silent: true,
  1307. barWidth: 20,
  1308. barGap: '-100%', // Make series be overlap
  1309. data: [otherTotal_pre],
  1310. // itemStyle: {
  1311. // normal: {
  1312. // color: 'rgba(29,67,243,1)',
  1313. // }
  1314. // },
  1315. label: {
  1316. normal: {
  1317. show: true,
  1318. position: 'inside',
  1319. offset: [0, 1],
  1320. formatter: function(obj) {
  1321. return (obj.value).toLocaleString() + '%'
  1322. },
  1323. textStyle: {
  1324. align: 'center',
  1325. baseline: 'middle',
  1326. fontSize: 14,
  1327. fontWeight: '400',
  1328. color: '#fff',
  1329. textShadowColor: '#000',
  1330. textShadowBlur: '0',
  1331. textShadowOffsetX: 1,
  1332. textShadowOffsetY: 1
  1333. }
  1334. }
  1335. }
  1336. }]
  1337. })
  1338. },
  1339. fatherMethod(dianshiqiang, longitude, latitude, item) {
  1340. this.$refs.TVWalls.showTVWall(
  1341. dianshiqiang, {
  1342. longitude: longitude,
  1343. latitude: latitude,
  1344. },
  1345. item
  1346. );
  1347. },
  1348. sewageOutletClick(data) {
  1349. const params = Object.assign({});
  1350. params.longitude = data.longitude;
  1351. params.latitude = data.latitude;
  1352. const treeLabels = [
  1353. {
  1354. id: null,
  1355. labelCode: "999",
  1356. labelName: "电视墙",
  1357. cameraType: null,
  1358. parentLabelCode: "",
  1359. },
  1360. ];
  1361. const labelChannels = [];
  1362. const id = data.id;
  1363. const type = data.indexName;
  1364. // alert(type+"="+id)
  1365. // alert(data.indexName)
  1366. // getResourceDetail("centerdata_t_resources_illegal_construction", id).then(res => {
  1367. getResourceDetail(type, id).then(res => {
  1368. console.log("getResourceDetail=", res)
  1369. // for (let i in data.cameraList) {
  1370. data.cameraList = res.data.cameras;
  1371. for (let i in data.cameraList) {
  1372. treeLabels.push({
  1373. id: null,
  1374. labelCode: data.cameraList[i].cameraCode,
  1375. labelName: data.cameraList[i].cameraName,
  1376. cameraType: data.cameraList[i].cameraType,
  1377. parentLabelCode: "999",
  1378. });
  1379. labelChannels.push({
  1380. labelCode: data.cameraList[i].cameraCode,
  1381. channelDates: [
  1382. {
  1383. channelCode: data.cameraList[i].cameraCode,
  1384. channelName: data.cameraList[i].cameraName,
  1385. channelSn: null,
  1386. cameraType: data.cameraList[i].cameraType,
  1387. online: "1",
  1388. cameraCode: "1",
  1389. },
  1390. ],
  1391. });
  1392. }
  1393. const dianshiqiang = [
  1394. {
  1395. switchTab: "2",
  1396. treeLabels: treeLabels,
  1397. labelChannels: labelChannels,
  1398. },
  1399. ];
  1400. if (data.cameraList.length > 0 || true) {
  1401. // this.$refs.TVWall.showTVWall1(
  1402. // data.longitude,
  1403. // data.latitude,
  1404. // dianshiqiang
  1405. // );
  1406. // }
  1407. this.$refs.TVWalls.showTVWall(
  1408. dianshiqiang,
  1409. {
  1410. longitude: data.longitude,
  1411. latitude: data.latitude,
  1412. },
  1413. {
  1414. "修改人": "MC",
  1415. "修改人": "MC",
  1416. "修改人": "MC",
  1417. "修改人": "MC",
  1418. "修改人": "MC"
  1419. },
  1420. res.data.detail // item
  1421. );
  1422. }
  1423. });
  1424. },
  1425. getBaseInfo() {
  1426. //左侧获取部门信息
  1427. getBaseInfo().then(res => {
  1428. if (res.code == 200) {
  1429. if (res.msg == '暂无特色信息') {
  1430. this.forestInfo = '暂无基本情况!'
  1431. } else {
  1432. this.forestInfo = res.data.baseinfo //基本情况
  1433. }
  1434. }
  1435. })
  1436. },
  1437. getTodayEvents(day, loading) {
  1438. let that = this
  1439. //左侧获取事件信息统计
  1440. getTodayEvents_direct({
  1441. eventTypeIdDl: this.eventTypeIdDl.length === 0 ? Cookies.get("eventTypeDl").split(",") : this.eventTypeIdDl,
  1442. eventTypeId: this.eventTypeId.length === 0?Cookies.get("eventType").split(","): this.eventTypeId,
  1443. day: day
  1444. }, loading).then(res => {
  1445. this.aiTotal = res.data.aiTotal
  1446. this.aiTotal_pre = res.data.aiTotal_pre
  1447. this.newReport = res.data.newReport
  1448. this.newReport_pre = res.data.newReport_pre
  1449. this.otherTotal = res.data.otherTotal
  1450. this.otherTotal_pre = res.data.otherTotal_pre
  1451. this.readyFinish = res.data.readyFinish
  1452. this.readyFinish_pre = res.data.readyFinish_pre
  1453. this.readySure = res.data.readySure
  1454. this.readySure_pre = res.data.readySure_pre
  1455. this.totalStr = res.data.totalStr
  1456. this.totalAllEvent = +res.data.totalStr
  1457. this.total = res.data.total
  1458. this.eventChartAi(this.aiTotal_pre, this.otherTotal_pre)
  1459. })
  1460. },
  1461. getDeptEventCount(day, loading) {
  1462. let that = this
  1463. //左侧获取事件部门数量
  1464. getDeptEventCount_direct({
  1465. eventTypeIdDl: that.eventTypeIdDl.length === 0 ? Cookies.get("eventTypeDl").split(",") : that.eventTypeIdDl,
  1466. eventTypeId: that.eventTypeId.length === 0?Cookies.get("eventType").split(","): that.eventTypeId,
  1467. day: day,
  1468. menuId:8
  1469. }, loading).then(res => {
  1470. this.forestFarm = res.data
  1471. })
  1472. },
  1473. getWeather(day) {
  1474. //右侧获取天气信息
  1475. getWeather_direct({
  1476. day: day
  1477. }).then(res => {
  1478. if (res.code == 200) {
  1479. if (res.data.length == 0) {
  1480. this.todatWeather = false
  1481. } else {
  1482. this.todatWeather = true
  1483. this.weatherinformationDirection = res.data[0].weatherinformationDirection
  1484. this.weatherinformationHigh = res.data[0].weatherinformationHigh
  1485. this.weatherinformationLevel = res.data[0].weatherinformationLevel
  1486. this.weatherinformationLevelValue = res.data[0].weatherinformationLevelValue
  1487. this.weatherinformationLow = res.data[0].weatherinformationLow
  1488. this.weatherinformationPower = res.data[0].weatherinformationPower
  1489. this.weatherinformationTemperature = res.data[0].weatherinformationTemperature
  1490. this.weatherinformationTime = res.data[0].weatherinformationTime
  1491. this.weatherinformationWeather = res.data[0].weatherinformationWeather
  1492. }
  1493. } else {
  1494. this.todatWeather = false
  1495. }
  1496. })
  1497. },
  1498. getSupermap(day, loading) {
  1499. let that = this
  1500. let eventTypeIdDl = that.eventTypeIdDl.length == 0 ? Cookies.get("eventTypeDl").split(",") : that.eventTypeIdDl;
  1501. let eventTypeId = that.eventTypeIdDl.length == 0 ? Cookies.get("eventType").split(",") : that.eventTypeId;
  1502. getNearEvent('', '', day, loading, eventTypeIdDl, eventTypeId).then(res => {
  1503. that.markersList = []
  1504. if (res.data != null && res.data.length > 0) {
  1505. for (let i = 0; i < res.data.length; i++) {
  1506. let markersMap = {
  1507. lng: 124.59,
  1508. lat: 43.02,
  1509. icon: 'marker',
  1510. bindPopupHtml: '',
  1511. click: '',
  1512. parameter: '',
  1513. keepBindPopup: false,
  1514. isAggregation: false
  1515. }
  1516. if (res.data.length > 200) {
  1517. markersMap.isAggregation = true
  1518. }
  1519. if (res.data[i].eventStatusValue == 'forest_event_status_1' && res.data[i].urgeCount == 0) {
  1520. markersMap.click = 'showEventDialog'
  1521. markersMap.icon = 'sj-icon-map-xinshangbao'
  1522. }
  1523. if (res.data[i].eventStatusValue == 'forest_event_status_1' && res.data[i].urgeCount > 0) {
  1524. markersMap.click = 'showEventDialog'
  1525. markersMap.icon = 'sj-icon-map-cuiban'
  1526. } else if (res.data[i].eventStatusValue == 'forest_event_status_2') {
  1527. markersMap.click = 'showEventDialog'
  1528. markersMap.icon = 'sj-icon-map-qianshou'
  1529. markersMap.isAggregation = false
  1530. } else if (res.data[i].eventStatusValue == 'forest_event_status_5') {
  1531. markersMap.click = 'showEventDialog'
  1532. markersMap.icon = 'sj-icon-map-banjie'
  1533. markersMap.isAggregation = false
  1534. } else if (res.data[i].eventStatusValue == 'forest_event_status_6') {
  1535. markersMap.click = 'showEventDialog'
  1536. markersMap.icon = 'sj-icon-map-guidang'
  1537. } else if (res.data[i].eventStatusValue == 'forest_event_status_7') {
  1538. markersMap.click = 'showEventDialog'
  1539. markersMap.icon = 'sj-icon-map-queren'
  1540. }
  1541. markersMap.parameter = res.data[i].eventCode
  1542. markersMap.lng = res.data[i].longitude
  1543. markersMap.lat = res.data[i].latitude
  1544. markersMap.bindPopupHtml = '<div class="map-tip">' +
  1545. '<span>' +
  1546. ' <div class="d-l-con">' +
  1547. ' <div class="d-l-l-text">' +
  1548. ' <h4>经纬度:' + res.data[i].longitude + ',' + res.data[i].latitude + '</h4>' +
  1549. ' </div>' +
  1550. ' </div>' +
  1551. ' </span>' +
  1552. '<span>' +
  1553. ' <div class="d-l-con">' +
  1554. ' <div class="d-l-l-text">' +
  1555. ' <h4>事件名称:' + res.data[i].eventName + '</h4>' +
  1556. ' </div>' +
  1557. ' </div>' +
  1558. ' </span>' +
  1559. '<span>' +
  1560. ' <div class="d-l-con">' +
  1561. ' <div class="d-l-l-text">' +
  1562. ' <h4>事件时间:' + res.data[i].createTime + '</h4>' +
  1563. ' </div>' +
  1564. ' </div>' +
  1565. ' </span>';
  1566. if (res.data[i].pictureType == 'image' && res.data[i].picturePath != null && res.data[i]
  1567. .picturePath != '') {
  1568. markersMap.bindPopupHtml += '<span>' +
  1569. ' <div class="d-l-con">' +
  1570. ' <div class="d-l-l-text">' +
  1571. '<img src="' + res.data[i].picturePath + '" style="width: 150px;height: 100px"/>' +
  1572. ' </div>' +
  1573. ' </div>' +
  1574. ' </span>'
  1575. }
  1576. markersMap.bindPopupHtml += '</div>'
  1577. that.markersList.push(markersMap)
  1578. }
  1579. setTimeout(() => {
  1580. that.$refs.supermap.clearM()
  1581. that.$refs.supermap.setMarkers(that.markersList)
  1582. }, 2000)
  1583. } else {
  1584. setTimeout(() => {
  1585. that.$refs.supermap.clearM();
  1586. that.iconCurrentIndex=''
  1587. //数据自动落点开始
  1588. let maxCount = 100; //落点数超过这个数的资源不落点
  1589. let types = [];
  1590. for (let i = 0; i < that.resourcesList.length; i++) { //获取符合要求的类型及数量
  1591. if (that.resourcesList[i].num <= maxCount) {
  1592. types.push(that.resourcesList[i].type);
  1593. }
  1594. }
  1595. for (let i = 0; i < types.length; i++) {
  1596. that.fireControlViewPointNew(types[i], '','search');
  1597. }
  1598. //数据自动落点结束
  1599. }, 2000)
  1600. }
  1601. })
  1602. },
  1603. getEventList(day, pageSize, pageNum, eventSearch, loading) {
  1604. let num=this.eventList.length/pageSize+1
  1605. if (pageNum < 1) {
  1606. this.$modal.msg('当前已是第一页')
  1607. return
  1608. } else if(pageNum>this.totalAllEvent/10+1)
  1609. {
  1610. this.$modal.msg('当前已是最后一页')
  1611. return;
  1612. }
  1613. this.pageSize = pageSize;
  1614. this.pageNum = pageNum;
  1615. let that = this
  1616. that.eventList = []
  1617. //右侧获取事件列表
  1618. getEventList_direct({
  1619. eventTypeIdDl: that.eventTypeIdDl.length == 0?Cookies.get("eventTypeDl").split(",") : that.eventTypeIdDl,
  1620. eventTypeId: that.eventTypeId.length == 0?Cookies.get("eventType").split(",") : that.eventTypeId,
  1621. day: day,
  1622. pageSize: pageSize,
  1623. pageNum: pageNum,
  1624. eventName: eventSearch
  1625. }, loading).then(res => {
  1626. this.eventList = res.data
  1627. if(res.data!==null&&res.data.length!==0&&res.data.length==10)
  1628. {
  1629. this.nextbutton=false
  1630. }else
  1631. {
  1632. this.nextbutton=true
  1633. }
  1634. if (this.eventList != null && this.eventList.length > 0) {
  1635. if (this.eventList[0].eventStatusValue == 'forest_event_status_1') {
  1636. that.$refs.bottomMenu.updateAlert();
  1637. that.$refs.up.play();
  1638. } else {
  1639. that.$refs.bottomMenu.updateAlertFalse();
  1640. }
  1641. }
  1642. })
  1643. },
  1644. getEventByEventType(day, loading) {
  1645. let that = this
  1646. //右侧获取事件分类
  1647. getEventByEventType_direct({
  1648. eventTypeIdDl: this.eventTypeIdDl.length === 0 ? Cookies.get("eventTypeDl").split(",") : this.eventTypeIdDl,
  1649. eventTypeId: this.eventTypeId.length === 0 ? Cookies.get("eventType").split(",") : this.eventTypeId,
  1650. day: day
  1651. }, loading).then(res => {
  1652. if (res.data != null && res.data.length > 0) {
  1653. this.showEventKind = true
  1654. this.eventKind.data = res.data
  1655. this.eventKind.colors = ['#1ce0a9', '#d6333b', '#e68d3f', '#32c5e9', '#2abc65']
  1656. this.eventKind.showValue = true
  1657. this.eventKind = {
  1658. ...this.eventKind
  1659. }
  1660. } else {
  1661. this.showEventKind = false
  1662. this.eventKind = {}
  1663. this.eventKind = {
  1664. ...this.eventKind
  1665. }
  1666. }
  1667. })
  1668. },
  1669. getEventByReportorOrder(day, loading) {
  1670. let that = this
  1671. //右侧获取上报排名
  1672. getEventByReportorOrder_direct({
  1673. eventTypeIdDl: this.eventTypeIdDl.length == 0 ? Cookies.get("eventTypeDl").split(",") : this.eventTypeIdDl,
  1674. eventTypeId: this.eventTypeId.length == 0 ? Cookies.get("eventType").split(",") : this.eventTypeId,
  1675. day: day
  1676. }, loading).then(res => {
  1677. if (res.data != null && res.data.length > 0) {
  1678. this.reportList.data = res.data
  1679. this.reportList = {
  1680. ...this.reportList
  1681. }
  1682. } else {
  1683. this.reportList.data = []
  1684. this.reportList = {
  1685. ...this.reportList
  1686. }
  1687. }
  1688. })
  1689. },
  1690. getEventListNew() {
  1691. this.eventList = []
  1692. this.eventListAll = []
  1693. //右侧获取事件列表
  1694. getEventList({
  1695. day: this.getCurrentDataStr()
  1696. }).then(res => {
  1697. this.eventList = res.data
  1698. this.eventListAll = res.data
  1699. })
  1700. },
  1701. getWebSocketEvent(data) {
  1702. let that = this
  1703. // const event = JSON.parse(data);
  1704. let event = data
  1705. if (typeof data != 'object') {
  1706. event = JSON.parse(data);
  1707. }
  1708. //右侧获取事件列表
  1709. that.markersList = []
  1710. let markersMap = {
  1711. lng: 124.59,
  1712. lat: 43.02,
  1713. icon: 'marker',
  1714. bindPopupHtml: '',
  1715. click: '',
  1716. parameter: '',
  1717. keepBindPopup: false,
  1718. isAggregation: false
  1719. }
  1720. if (event.eventStatusValue == 'forest_event_status_1' && event.urgeCount == 0) {
  1721. markersMap.click = 'showEventDialog'
  1722. markersMap.icon = 'sj-icon-map-xinshangbao'
  1723. }
  1724. if (event.eventStatusValue == 'forest_event_status_1' && event.urgeCount > 0) {
  1725. markersMap.click = 'showEventDialog'
  1726. markersMap.icon = 'sj-icon-map-cuiban'
  1727. } else if (event.eventStatusValue == 'forest_event_status_2') {
  1728. markersMap.click = 'showEventDialog'
  1729. markersMap.icon = 'sj-icon-map-qianshou'
  1730. markersMap.isAggregation = false
  1731. } else if (event.eventStatusValue == 'forest_event_status_5') {
  1732. markersMap.click = 'showEventDialog'
  1733. markersMap.icon = 'sj-icon-map-banjie'
  1734. markersMap.isAggregation = false
  1735. } else if (event.eventStatusValue == 'forest_event_status_6') {
  1736. markersMap.click = 'showEventDialog'
  1737. markersMap.icon = 'sj-icon-map-guidang'
  1738. } else if (event.eventStatusValue == 'forest_event_status_7') {
  1739. markersMap.click = 'showEventDialog'
  1740. markersMap.icon = 'sj-icon-map-queren'
  1741. }
  1742. markersMap.parameter = event.eventCode
  1743. markersMap.lng = event.longitude
  1744. markersMap.lat = event.latitude
  1745. markersMap.bindPopupHtml = '<div class="map-tip">' +
  1746. '<span>' +
  1747. ' <div class="d-l-con">' +
  1748. ' <div class="d-l-l-text">' +
  1749. ' <h4>经纬度:' + event.longitude + ',' + event.latitude + '</h4>' +
  1750. ' </div>' +
  1751. ' </div>' +
  1752. ' </span>' +
  1753. '<span>' +
  1754. ' <div class="d-l-con">' +
  1755. ' <div class="d-l-l-text">' +
  1756. ' <h4>事件名称:' + event.eventName + '</h4>' +
  1757. ' </div>' +
  1758. ' </div>' +
  1759. ' </span>' +
  1760. '<span>' +
  1761. ' <div class="d-l-con">' +
  1762. ' <div class="d-l-l-text">' +
  1763. ' <h4>事件时间:' + event.createTime + '</h4>' +
  1764. ' </div>' +
  1765. ' </div>' +
  1766. ' </span>';
  1767. if (event.pictureType == 'image' && event.picturePath != null && event.picturePath != '') {
  1768. markersMap.bindPopupHtml += '<span>' +
  1769. ' <div class="d-l-con">' +
  1770. ' <div class="d-l-l-text">' +
  1771. '<img src="' + event.picturePath + '" style="width: 150px;height: 100px"/>' +
  1772. ' </div>' +
  1773. ' </div>' +
  1774. ' </span>'
  1775. }
  1776. markersMap.bindPopupHtml += '</div>'
  1777. that.markersList.push(markersMap)
  1778. setTimeout(() => {
  1779. that.$refs.supermap.clearM()
  1780. that.$refs.supermap.setMarkers(that.markersList)
  1781. }, 1000)
  1782. },
  1783. getExposureStage(day, loading) {
  1784. let that = this
  1785. //右侧获取曝光台
  1786. getExposureStage_direct({
  1787. eventTypeIdDl: that.eventTypeIdDl.length == 0 ? Cookies.get("eventTypeDl").split(",") : that.eventTypeIdDl,
  1788. eventTypeId: that.eventTypeId.length == 0 ? Cookies.get("eventType").split(",") : that.eventTypeId,
  1789. day: day
  1790. }, loading).then(res => {
  1791. that.exposureStageList = res.data
  1792. })
  1793. },
  1794. /** ----------------------------------weosocket开始------------------------------------- */
  1795. initWebSocket(userId, eventTypeDl, eventType) { //初始化weosocket
  1796. selectConfigKey('KSH_SOCKET').then(res => {
  1797. const wsuri = res.data + userId + '/' + eventTypeDl + '/' + eventType
  1798. this.websock = new WebSocket(wsuri)
  1799. console.log('建立websocket连接')
  1800. this.websock.onopen = this.websocketonopen
  1801. this.websock.onmessage = this.websocketonmessage
  1802. this.websock.onerror = this.websocketonerror
  1803. })
  1804. },
  1805. // 处理WebSocket事件
  1806. handleWebSoceketEvent(val) {
  1807. let that = this
  1808. let data = JSON.parse(val)
  1809. /**
  1810. * that.markersList.filter( item => data.eventCode == item.parameter).length == 0 如果地图中不存在当前事件则添加
  1811. * eventPush: 事件列表消息
  1812. * */
  1813. if (data.tag == "eventPush" && that.markersList.filter(item => data.eventCode == item.parameter).length == 0) {
  1814. getEventPush({
  1815. eventCode: data.eventCode
  1816. }).then((res) => {
  1817. if (res.data != undefined) {
  1818. if(res.data.eventType == 403){
  1819. res.data.picturePath = "../assets/images/土壤墒情监测.png"
  1820. }
  1821. //插入到第一条
  1822. this.eventList.unshift(res.data)
  1823. // 插入后删除最后一条 保证列表中为10条数据
  1824. if (this.eventList.length > 9)
  1825. this.eventList.splice(10, 1)
  1826. // 将收到的数据在地图上添加
  1827. this.getWebSocketEvent(res.data)
  1828. this.$refs.bottomMenu.updateAlert();
  1829. this.$refs.up.play();
  1830. }
  1831. })
  1832. }
  1833. console.log(that.eventList[0])
  1834. },
  1835. websocketonopen() { //连接建立之后执行send方法发送数据
  1836. console.log('websocket连接成功')
  1837. this.weosocket = true
  1838. this.sendPing()
  1839. },
  1840. websocketonerror() { //连接建立失败重连
  1841. this.initWebSocket(this.websockSid.userId, this.websockSid.eventTypeDl, this.websockSid.eventType, )
  1842. },
  1843. websocketonmessage(e) { //数据接收
  1844. console.log('接收数据', e.data)
  1845. // let data = "{\"fromId\":\"forest\",\"fromUserId\":\""+Cookies.get('username')+"\",\"toUserId\":\""+Cookies.get('username')+"\"}";
  1846. let data = "{\"fromId\":\"resources\"}";
  1847. if (this.calendarDay == this.getCurrentDataStr() && data != e.data) {
  1848. // 处理收到的消息
  1849. this.handleWebSoceketEvent(e.data)
  1850. this.getTodayEvents(this.getCurrentDataStr(), true);
  1851. this.getDeptEventCount(this.getCurrentDataStr(), true);
  1852. this.getEventByEventType(this.getCurrentDataStr(), true);
  1853. this.getEventByReportorOrder(this.getCurrentDataStr(), true);
  1854. this.getExposureStage(this.getCurrentDataStr(), true);
  1855. // this.$refs.bottomMenu.updateAlert();
  1856. // this.$refs.up.play();
  1857. // thes.$refs.up.pause();//停止播放音乐
  1858. }
  1859. },
  1860. websocketsend(Data) { //数据发送
  1861. this.websock.send(Data)
  1862. },
  1863. websocketclose(e) { //关闭
  1864. console.log('断开连接', e)
  1865. // clearInterval(this.setIntervalWesocketPush)
  1866. this.weosocket = false
  1867. },
  1868. /**发送心跳
  1869. * @param {number} time 心跳间隔毫秒 默认5000
  1870. * @param {string} ping 心跳名称 默认字符串ping
  1871. */
  1872. sendPing(time = 60000, ping = {
  1873. 'fromId': 'resources'
  1874. }) {
  1875. clearInterval(this.setIntervalWesocketPush)
  1876. this.setIntervalWesocketPush = setInterval(() => {
  1877. if (this.weosocket) {
  1878. this.websock.send(JSON.stringify(ping))
  1879. } else {
  1880. // this.initWebSocket()
  1881. }
  1882. }, time)
  1883. },
  1884. stopAudio() {
  1885. this.$refs.up.pause(); //停止播放音乐
  1886. this.$refs.up.currentTime = 0;
  1887. },
  1888. /** ----------------------------------weosocket结束------------------------------------- */
  1889. /** ----------------------------------底部按钮公用组件开始------------------------------------- */
  1890. bottomMenuList() {
  1891. this.$refs.bottomMenu.selectTaskList() //获取任务列表
  1892. this.$refs.bottomMenu.selectMessageList() //获取消息列表
  1893. },
  1894. showDialog(click) {
  1895. if (click == 'eventLocation') {
  1896. this.$refs.eventLocation.showEventLocation()
  1897. this.$refs.bottomMenu.showMeasure = false
  1898. this.$refs.bottomMenu.showChild = false
  1899. this.$refs.bottomMenu.showBanChild = false
  1900. this.$refs.bottomMenu.showChangChild = false
  1901. } else if (click == 'editableLayers') {
  1902. this.$refs.bottomMenu.showChild = false
  1903. this.$refs.bottomMenu.showBanChild = false
  1904. this.$refs.bottomMenu.showChangChild = false
  1905. if (!this.$refs.bottomMenu.showMeasure) {
  1906. this.$refs.bottomMenu.showMeasure = true
  1907. } else {
  1908. this.$refs.bottomMenu.showMeasure = false
  1909. }
  1910. } else if (click == 'layerSwitching') {
  1911. this.$refs.bottomMenu.showMeasure = false
  1912. this.$refs.bottomMenu.showBanChild = false
  1913. this.$refs.bottomMenu.showChangChild = false
  1914. if (!this.$refs.bottomMenu.showChild) {
  1915. this.$refs.bottomMenu.showChild = true
  1916. } else {
  1917. this.$refs.bottomMenu.showChild = false
  1918. }
  1919. } else if (click == 'TVWall') {
  1920. this.$refs.TVWall.showTVWall()
  1921. this.$refs.bottomMenu.showMeasure = false
  1922. this.$refs.bottomMenu.showChild = false
  1923. this.$refs.bottomMenu.showBanChild = false
  1924. this.$refs.bottomMenu.showChangChild = false
  1925. } else if (click == 'forestban') {
  1926. this.$refs.bottomMenu.showMeasure = false
  1927. this.$refs.bottomMenu.showChild = false
  1928. this.$refs.bottomMenu.showChangChild = false
  1929. if (!this.$refs.bottomMenu.showBanChild) {
  1930. this.$refs.bottomMenu.showBanChild = true
  1931. } else {
  1932. this.$refs.bottomMenu.showBanChild = false
  1933. }
  1934. } else if (click == 'forestchang') {
  1935. this.$refs.bottomMenu.showMeasure = false
  1936. this.$refs.bottomMenu.showBanChild = false
  1937. this.$refs.bottomMenu.showChild = false
  1938. if (!this.$refs.bottomMenu.showChangChild) {
  1939. this.$refs.bottomMenu.showChangChild = true
  1940. } else {
  1941. this.$refs.bottomMenu.showChangChild = false
  1942. }
  1943. }
  1944. },
  1945. //选择图层
  1946. choseLayerSwitching(url, isClear) {
  1947. this.$refs.supermap.layerSwitching(url, isClear)
  1948. },
  1949. //选择图层(传递数组)
  1950. choseLayerSwitchingList(urlList) {
  1951. this.$refs.supermap.layerSwitchingList(urlList)
  1952. },
  1953. /** ----------------------------------底部按钮公用组件结束------------------------------------- */
  1954. }
  1955. }
  1956. </script>
  1957. <style rel="stylesheet/scss" lang="scss" scoped>
  1958. @import '@/assets/styles/base.scss';
  1959. .paging {
  1960. padding: .5rem .3rem;
  1961. display: flex;
  1962. justify-content: center;
  1963. align-content: center;
  1964. span {
  1965. color: #2bacf7;
  1966. display: flex;
  1967. align-items: center;
  1968. padding: 0 1rem;
  1969. }
  1970. button {
  1971. padding: 0 0.3rem;
  1972. height: 1.5rem;
  1973. background-color: #112543;
  1974. color: #2bacf7;
  1975. border: 1px solid #33467f;
  1976. }
  1977. button:hover {
  1978. padding: 0 0.3rem;
  1979. height: 1.5rem;
  1980. background-color: #112543;
  1981. color: #0ff7c5;
  1982. border: 1px solid #1d657f;
  1983. }
  1984. }
  1985. </style>
  1986. <style lang="scss">
  1987. @import '@/assets/styles/base.scss';
  1988. .top-left {
  1989. position: absolute;
  1990. top: 15px; /* 设置距离顶部的位置 */
  1991. left: 75%; /* 设置距离左侧的位置 */
  1992. }
  1993. .add-button {
  1994. background-color: #04244d; /* 设置背景颜色 */
  1995. color: #1d66ec; /* 设置文字颜色 */
  1996. padding: 5px 10px; /* 设置内边距 */
  1997. border: none; /* 移除边框 */
  1998. cursor: pointer; /* 添加鼠标指针样式 */
  1999. }
  2000. .bottomRight{
  2001. .el-table .el-table__header-wrapper th, .el-table .el-table__fixed-header-wrapper th {
  2002. background-color: $searchBG;
  2003. }
  2004. .el-table td.el-table__cell, .el-table th.el-table__cell.is-leaf {
  2005. border-bottom: 1px $tableBorder;
  2006. }
  2007. .el-table--border, .el-table--border::after {
  2008. border: 1px $tableBorder;
  2009. background-color: $searchBG
  2010. }
  2011. .el-table--border {
  2012. .el-table--group {
  2013. border: 1px $tableBorder;
  2014. }
  2015. .el-table__cell {
  2016. border-right: 1px $tableBorder;;
  2017. }
  2018. }
  2019. .el-table::before {
  2020. background: $searchBG;
  2021. }
  2022. .el-table {
  2023. background: $searchBG;
  2024. color: $inBlue;
  2025. thead {
  2026. }
  2027. tr {
  2028. background: $searchBG;
  2029. }
  2030. td {
  2031. text-align: center;
  2032. }
  2033. .el-table__header-wrapper {
  2034. th {
  2035. color: $inBlue;
  2036. font-size: .8rem;
  2037. }
  2038. }
  2039. thead.is-group {
  2040. .el-table__cell {
  2041. text-align: center;
  2042. background: $searchBG;
  2043. border-bottom: 1px $tableBorder;
  2044. border-right: 1px $tableBorder;
  2045. padding: 0;
  2046. font-weight: normal;
  2047. }
  2048. }
  2049. }
  2050. .el-table__empty-block {
  2051. min-height: auto;
  2052. }
  2053. .el-table__empty-text {
  2054. line-height: 30px;
  2055. }
  2056. .el-table__header {
  2057. width: auto !important
  2058. }
  2059. .el-table__empty-block {
  2060. width: auto !important
  2061. }
  2062. .el-table__body-wrapper {
  2063. .el-table__body {
  2064. width: auto !important
  2065. }
  2066. }
  2067. .el-table--enable-row-hover .el-table__body tr:hover > td.el-table__cell {
  2068. background-color: #0f3655;
  2069. }
  2070. }
  2071. </style>