enforcement-dynamic.vue 62 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556
  1. <template>
  2. <el-row class="contentBox">
  3. <transition name="el-fade-in-linear">
  4. <div class="leftBox" v-show="stroes.$state.leftBtn">
  5. <div class="left_top">
  6. <h4>执法情况</h4>
  7. <el-row class="data leftTopContent">
  8. <el-row>
  9. <el-col
  10. :span="12"
  11. v-for="(item, index) in SiAeAllList"
  12. :key="index"
  13. >
  14. <div>
  15. <div class="title">
  16. <div>{{ item.checkType }}</div>
  17. </div>
  18. <div class="content">
  19. <span>{{ item.number }}</span>
  20. </div>
  21. <div class="content2">
  22. <span>环比</span>
  23. <span
  24. :class="
  25. item.linkRelativeStatus === 1
  26. ? 'z'
  27. : 'j'
  28. "
  29. >
  30. {{
  31. item.linkRelativeStatus === 2
  32. ? "-"
  33. : "+"
  34. }}{{
  35. item.linkRelativeRatio.toFixed(
  36. 2
  37. )
  38. }}%
  39. </span>
  40. <span>同比</span>
  41. <span
  42. :class="
  43. item.sameStatus === 1
  44. ? 'z'
  45. : 'j'
  46. "
  47. >
  48. {{
  49. item.linkRelativeStatus === 2
  50. ? "-"
  51. : "+"
  52. }}{{ item.sameRatio.toFixed(2) }}%
  53. </span>
  54. </div>
  55. </div>
  56. </el-col>
  57. </el-row>
  58. </el-row>
  59. </div>
  60. <div class="left_middle">
  61. <div style="display: flex">
  62. <h4 style="font-size: 0.2rem;border:none">人员统计</h4>
  63. <div
  64. style="
  65. display: flex;
  66. border-bottom: 0.0125rem solid
  67. rgba(115, 251, 253, 0.5);
  68. "
  69. >
  70. <el-button
  71. size="mini"
  72. @click="btnC('1')"
  73. :class="{ btnClick: check === '1' }"
  74. >监督检查</el-button
  75. >
  76. <el-button
  77. size="mini"
  78. @click="btnC('2')"
  79. :class="{ btnClick: check === '2' }"
  80. >行政处罚</el-button
  81. >
  82. </div>
  83. </div>
  84. <div class="tableTab">
  85. <el-table
  86. :data="tableData1"
  87. class="transparentTableRow"
  88. height="100%"
  89. v-if="check == '1'"
  90. :empty-text="dataNo" ref="reportTable" @mouseenter="autoScroll(true)"
  91. @mouseleave="autoScroll()"
  92. >
  93. <el-table-column
  94. v-for="item in tableHeaderList1"
  95. show-overflow-tooltip
  96. :key="item.prop"
  97. :prop="item.prop"
  98. align="center"
  99. min-width="20"
  100. :label="item.name"
  101. >
  102. </el-table-column>
  103. </el-table>
  104. <el-table
  105. :data="tableData2"
  106. class="transparentTableRow"
  107. height="100%"
  108. v-if="check == '2'"
  109. :empty-text="dataNo" ref="reportTable" @mouseenter="autoScroll(true)"
  110. @mouseleave="autoScroll()"
  111. >
  112. <el-table-column
  113. v-for="item in tableHeaderList2"
  114. show-overflow-tooltip
  115. :key="item.prop"
  116. :prop="item.prop"
  117. align="center"
  118. min-width="20"
  119. :label="item.name"
  120. >
  121. </el-table-column>
  122. </el-table>
  123. </div>
  124. </div>
  125. <div class="left_bottom">
  126. <h4 class="h4 h4Top">
  127. 行政许可情况
  128. <el-tooltip placement="right">
  129. <template #content>
  130. <br />
  131. 数据说明
  132. <br />
  133. <br />默认当月
  134. <br />合格率=行政许可安全检查合格证/行政许可安全检查合格证+消防安检申报不同意
  135. <br />
  136. <br />
  137. </template>
  138. <img
  139. src="@/assets/img/why.png"
  140. alt="hah"
  141. class="why"
  142. />
  143. </el-tooltip>
  144. </h4>
  145. <el-row class="leftBotLeft">
  146. <el-row class="text">
  147. <el-col>{{(alFsdAllNumber.passRate).toFixed(2) || 0}}%</el-col>
  148. <el-col>合格率</el-col>
  149. </el-row>
  150. <liquid-fill
  151. class="liQuIdFill"
  152. ref="liQuIdFill"
  153. :dataMap="(alFsdAllNumber.passRate).toFixed(2) / 100"
  154. ></liquid-fill>
  155. </el-row>
  156. <el-row class="leftBotRight">
  157. <el-col><span>受理数</span>
  158. <span>{{alFsdAllNumber.acceptNum || 0}}</span>
  159. </el-col>
  160. <el-col>
  161. <span>检查数</span>
  162. <span>{{alFsdAllNumber.checkNum || 0}}</span>
  163. </el-col>
  164. <el-col>
  165. <span>承诺数</span>
  166. <span>{{alFsdAllNumber.committedNum || 0}}</span>
  167. </el-col>
  168. <el-col>
  169. <span>非承诺数</span>
  170. <span>{{alFsdAllNumber.uncommittedNum || 0}}</span>
  171. </el-col>
  172. </el-row>
  173. </div>
  174. </div>
  175. </transition>
  176. <transition name="el-fade-in-linear">
  177. <el-row class="centerBox" style="width: 100%">
  178. <el-col
  179. :class="
  180. stroes.$state.leftBtn ? 'leftBtn btnW' : 'leftBtn0 btnW'
  181. "
  182. @click="stroes.leftBtnClick()"
  183. >
  184. <img src="@/assets/img/svg/left.svg" alt="" class="img" />
  185. </el-col>
  186. <el-col class="centerContent" id="mapF"></el-col>
  187. <el-col
  188. :class="
  189. stroes.$state.rightBtn
  190. ? 'rightBtn btnW'
  191. : 'rightBtn0 btnW'
  192. "
  193. @click="stroes.rightBtnClick()"
  194. >
  195. <img src="@/assets/img/svg/left.svg" alt="" class="img" />
  196. </el-col>
  197. <div class="mapTips_type">
  198. <img
  199. src="@/assets/img/svg/danweitop.svg"
  200. alt=""
  201. class="img"
  202. />
  203. <div class="content">
  204. <p>街镇筛选</p>
  205. <el-select
  206. class="mtb-12"
  207. v-model="stroes.$state.streetTown"
  208. placeholder="请选择街镇"
  209. @change="checkStreetTown"
  210. >
  211. <el-option
  212. v-for="item in stroes.$state.streetTownList"
  213. :key="item.value"
  214. :label="item.label"
  215. :value="item.value"
  216. >
  217. </el-option>
  218. </el-select>
  219. <p>类型筛选</p>
  220. <div class="selectType">
  221. <div
  222. @click="checkType('双随机执法单位')"
  223. :class="
  224. checked == '双随机执法单位'
  225. ? 'checkTypeSelect'
  226. : ''
  227. "
  228. >
  229. <img :src="stores.sadianIcon.ssjzf" alt="" />
  230. <span>双随机执法单位</span>
  231. </div>
  232. <div
  233. @click="checkType('安全检查单位')"
  234. :class="
  235. checked == '安全检查单位'
  236. ? 'checkTypeSelect'
  237. : ''
  238. "
  239. >
  240. <img :src="stores.sadianIcon.aqjcdw" alt="" />
  241. <span>安全检查单位</span>
  242. </div>
  243. <div
  244. @click="checkType('举报投诉')"
  245. :class="
  246. checked == '举报投诉'
  247. ? 'checkTypeSelect'
  248. : ''
  249. "
  250. >
  251. <img :src="stores.sadianIcon.jbts" alt="" />
  252. <span>举报投诉</span>
  253. </div>
  254. <div
  255. @click="checkType('执法记录仪')"
  256. :class="
  257. checked == '执法记录仪'
  258. ? 'checkTypeSelect'
  259. : ''
  260. "
  261. >
  262. <img :src="stores.sadianIcon.zfjly" alt="" />
  263. <span>执法记录仪</span>
  264. </div>
  265. <!-- <div
  266. @click="checkType('三合一')"
  267. :class="
  268. checked == '三合一'
  269. ? 'checkTypeSelect'
  270. : ''
  271. "
  272. >
  273. <img :src="stores.sadianIcon.shy" alt="" />
  274. <span>三合一</span>
  275. </div>
  276. <div
  277. @click="checkType('重大火灾隐患')"
  278. :class="
  279. checked == '重大火灾隐患'
  280. ? 'checkTypeSelect'
  281. : ''
  282. "
  283. >
  284. <img :src="stores.sadianIcon.lsjq" alt="" />
  285. <span>重大火灾隐患</span>
  286. </div> -->
  287. </div>
  288. </div>
  289. </div>
  290. </el-row>
  291. </transition>
  292. <transition name="el-fade-in-linear">
  293. <div class="rightBox" v-show="stroes.$state.rightBtn">
  294. <div class="rightBox1">
  295. <h4>本年度重点事项推进情况</h4>
  296. <div class="ndtj j1" style="margin-top:20px;" @click="schedule()">
  297. <p>专项检查</p>
  298. <el-tooltip class="box-item" effect="dark" content="" placement="left" @click="schedule()">
  299. <template #content> 开始日期:2023-01-01<br>计划完成日期:2023-12-31<br>当前应完成:50%<br>当前实际完成:50%</template>
  300. <el-progress :percentage="50"></el-progress>
  301. </el-tooltip>
  302. <div class="num">
  303. 计划数:1000家&nbsp;&nbsp;&nbsp;&nbsp;完成数:500家
  304. </div>
  305. </div>
  306. <div class="ndtj j2" @click="schedule()">
  307. <p>厂房仓库检查</p>
  308. <el-tooltip class="box-item" effect="dark" content="" placement="left">
  309. <template #content> 开始日期:2023-01-01<br>计划完成日期:2023-12-31<br>当前应完成:50%<br>当前实际完成:60%</template>
  310. <el-progress :percentage="60"></el-progress>
  311. </el-tooltip>
  312. <div class="num">
  313. 计划数:500家&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;完成数:300家
  314. </div>
  315. </div>
  316. <div class="ndtj j3" @click="schedule()">
  317. <p>重点隐患</p>
  318. <el-tooltip class="box-item" effect="dark" content="" placement="left">
  319. <template #content> 开始日期:2023-01-01<br>计划完成日期:2023-12-31<br>当前应完成:41.67%<br>当前实际完成:41.67%</template>
  320. <el-progress :percentage="41.67"></el-progress>
  321. </el-tooltip>
  322. <div class="num">
  323. 计划数:300处&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;完成数:125处
  324. </div>
  325. </div>
  326. <div class="ndtj j4" @click="schedule(17)">
  327. <p>专职站微站建设</p>
  328. <el-tooltip class="box-item" effect="dark" content="" placement="left" >
  329. <template #content> 开始日期:2023-01-01<br>计划完成日期:2023-12-31<br>当前应完成:50%<br>当前实际完成:33.33%</template>
  330. <el-progress :percentage="33.33"></el-progress>
  331. </el-tooltip>
  332. <div class="num">
  333. 计划数:30个&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;完成数:10个
  334. </div>
  335. </div>
  336. </div>
  337. <!-- <div class="rightBox1">
  338. <h4>
  339. 举报投诉情况
  340. <el-tooltip placement="right">
  341. <template #content>
  342. <br />
  343. 数据说明
  344. <br />
  345. <br />默认当月 投诉数:累计受理投诉数
  346. <br />
  347. 办结数:累计办结投诉数
  348. <br />
  349. 处理数:累计处理投诉数
  350. <br />
  351. 满意率:
  352. <br />
  353. <br />
  354. </template>
  355. <img
  356. src="@/assets/img/why.png"
  357. alt="hah"
  358. class="why"
  359. />
  360. </el-tooltip>
  361. </h4>
  362. <el-row>
  363. <el-col :span="12" class="num">
  364. <img
  365. src="@/assets/img/png/消防执法动态_03.png"
  366. alt=""
  367. class="svgImg"
  368. />
  369. <div class="data">
  370. <p class="p1">
  371. {{
  372. reportStatisticsObj.complaintNumber || 0
  373. }}
  374. </p>
  375. <p class="p2">投诉数</p>
  376. </div>
  377. </el-col>
  378. <el-col :span="12" class="num">
  379. <img
  380. src="@/assets/img/png/消防执法动态_05.png"
  381. alt=""
  382. class="svgImg"
  383. />
  384. <div class="data">
  385. <p class="p1">
  386. {{
  387. reportStatisticsObj.concludeNumber || 0
  388. }}
  389. </p>
  390. <p class="p2">办结数</p>
  391. </div>
  392. </el-col>
  393. <el-col :span="12" class="num">
  394. <img
  395. src="@/assets/img/png/消防执法动态_10.png"
  396. alt=""
  397. class="svgImg"
  398. />
  399. <div class="data">
  400. <p class="p1">
  401. {{ reportStatisticsObj.checkNumber || 0 }}
  402. </p>
  403. <p class="p2">处理数</p>
  404. </div>
  405. </el-col>
  406. <el-col :span="12" class="num">
  407. <img
  408. src="@/assets/img/png/消防执法动态_09.png"
  409. alt=""
  410. class="svgImg"
  411. />
  412. <div class="data">
  413. <p class="p1">
  414. {{
  415. parseInt(
  416. reportStatisticsObj.satisfactionRate *
  417. 100
  418. )
  419. }}%
  420. </p>
  421. <p class="p2">满意率</p>
  422. </div>
  423. </el-col>
  424. </el-row>
  425. </div> -->
  426. <div class="treeMap">
  427. <h4 class="h4Top">投诉类型排名
  428. <div class="gp">
  429. <span>满意数<span>1001</span></span>
  430. <span>不满意数<span>12</span></span>
  431. </div>
  432. </h4>
  433. <category
  434. ref="category"
  435. v-if="reportComplaintList.x.length > 0"
  436. :dataMap="reportComplaintList.y"
  437. :xData="reportComplaintList.x"
  438. :isSlice="2"
  439. color="#33BBFA"
  440. ></category>
  441. </div>
  442. <div class="rightBox3">
  443. <h4>执法记录仪</h4>
  444. <el-row class="monitor-list" >
  445. <div class="list">
  446. <el-select
  447. v-model="zfjly1"
  448. placeholder="请选择执法记录仪"
  449. class="videoSelect"
  450. >
  451. <el-option
  452. v-for="item in selectVideoData"
  453. :key="item.url"
  454. :label="item.name"
  455. :value="item.url"
  456. >
  457. </el-option>
  458. </el-select>
  459. <img src="@/assets/img/home/video.jpg" alt="" v-if="!zfjly1">
  460. <iframe
  461. class="hlsVideo monitor-height"
  462. :src="zfjly1"
  463. allowfullscreen="true"
  464. ></iframe>
  465. </div>
  466. <div class="list" :offset="2">
  467. <el-select
  468. v-model="zfjly2"
  469. placeholder="请选择执法记录仪"
  470. class="videoSelect"
  471. >
  472. <el-option
  473. v-for="item in selectVideoData"
  474. :key="item.url"
  475. :label="item.name"
  476. :value="item.url"
  477. >
  478. </el-option>
  479. </el-select>
  480. <img src="@/assets/img/home/video.jpg" alt="" v-if="!zfjly2">
  481. <iframe
  482. class="hlsVideo monitor-height"
  483. :src="zfjly2"
  484. allowfullscreen="true"
  485. ></iframe>
  486. </div>
  487. </el-row>
  488. </div>
  489. </div>
  490. </transition>
  491. <el-dialog
  492. :title="title"
  493. v-model="open"
  494. append-to-body
  495. @close="cancel"
  496. >
  497. <div>
  498. <!-- @selection-change="handleSelectionChange" -->
  499. <el-table
  500. :data="dateList"
  501. class="transparentTableRow2"
  502. >
  503. <el-table-column
  504. label="序号"
  505. align="center"
  506. type="index"
  507. show-overflow-tooltip
  508. width="100px"
  509. />
  510. <el-table-column
  511. label="单位名称"
  512. align="center"
  513. prop="name"
  514. show-overflow-tooltip
  515. />
  516. <el-table-column
  517. label="操作"
  518. align="center"
  519. class-name="small-padding fixed-width"
  520. width="400px"
  521. >
  522. <template #default="scope">
  523. <el-button
  524. type="text"
  525. icon="Edit"
  526. link
  527. >修改</el-button
  528. >
  529. </template>
  530. </el-table-column>
  531. </el-table>
  532. <el-pagination
  533. :page-size="10"
  534. :pager-count="7"
  535. layout="prev, pager, next"
  536. :total="1000"
  537. />
  538. <!-- @click="handleUpdate(scope.row, 1)" -->
  539. <!-- <pagination
  540. v-show="total > 0"
  541. :total="total"
  542. v-model:page="queryParams.page"
  543. v-model:limit="queryParams.size"
  544. @pagination="getList"
  545. /> -->
  546. </div>
  547. </el-dialog>
  548. </el-row>
  549. </template>
  550. <script>
  551. import axios from "axios";
  552. import map from "@c/mixins/map-data1";
  553. // import map from "@c/mixins/map-gaode-public";
  554. import wordCloud from "@c/wordCloud";
  555. import linstener from "@c/mixins/linstener";
  556. import category from "@c/category/index2";
  557. import liquidFill from "@c/liquid-fill";
  558. export default {
  559. data() {
  560. return {
  561. dataNo:"",
  562. stores: this.$useStore(),
  563. dateList:[
  564. {name:1,},
  565. {name:1,},
  566. {name:1,},
  567. {name:1,},
  568. ],
  569. title:"sdfsd",
  570. open:false,
  571. SiAeAllList: [],
  572. reportComplaintList: {
  573. x:[],
  574. y:[],
  575. },//投诉排名
  576. alFsdAllNumber: {
  577. passRate: 0,
  578. acceptNum: 0,
  579. checkNum: 0,
  580. committedNum: 0,
  581. uncommittedNum: 0
  582. },
  583. reportStatisticsObj: {
  584. complaintNumber: 0,
  585. concludeNumber: 0,
  586. checkNumber: 0,
  587. satisfactionRate: 0,
  588. },
  589. // checkedList: ["双随机执法单位", "安全检查单位", "举报投诉", "执法记录仪"],
  590. checked: "安全检查单位",
  591. xfzfdtStatus: false, //地图状态
  592. xfzfdt: {}, //地图数据
  593. zfjly1: undefined,
  594. zfjly2: undefined,
  595. selectVideoData: [
  596. // {
  597. // id: "5708ad6382517cd68ea2d2f8cd01bb58",
  598. // name: "上海闵行闵行消防站4G布控球",
  599. // groupName: "009闵行支队",
  600. // gisX: 31.01411,
  601. // gisY: 121.39202,
  602. // type:"video",
  603. // gbid:31.01411,
  604. // type:"执法记录仪",
  605. // url:"http://10.107.31.215:50080/dispatch-ms/#/conference/single_url?ipc_live=1&key=643e6591-a489-4648-ba35-c15c39c64022&gbids=31000000001320003271&nmediaid=121"
  606. // }
  607. ],
  608. check: 1,
  609. tableData1: [
  610. { a1: "杨剑", a2: 59, a3: 28, a4: 118, a5: 25, a6: 0 },
  611. { a1: "姚佳磊", a2: 33, a3: 20, a4: 66, a5: 28, a6: 0 },
  612. { a1: "范卉洁", a2: 17, a3: 0, a4: 34, a5: 0, a6: 17 },
  613. { a1: "俞苗", a2: 34, a3: 14, a4: 68, a5: 28, a6: 0 },
  614. { a1: "阿依提拉", a2: 29, a3: 13, a4: 59, a5: 0, a6: 0 },
  615. { a1: "张磊", a2: 32, a3: 32, a4: 64, a5: 0, a6: 22 },
  616. { a1: "吴弘", a2: 64, a3: 49, a4: 129, a5: 41, a6: 0 },
  617. { a1: "杨永辉", a2: 61, a3: 12, a4: 122, a5: 27, a6: 0 },
  618. { a1: "徐拥军", a2: 58, a3: 30, a4: 116, a5: 36, a6: 0 },
  619. { a1: "康劼", a2: 34, a3: 5, a4: 68, a5: 15, a6: 0 },
  620. { a1: "陈文健", a2: 0, a3: 0, a4: 0, a5: 0, a6: 0 },
  621. { a1: "高栋琳", a2: 41, a3: 26, a4: 82, a5: 26, a6: 0 },
  622. { a1: "邓慧勇", a2: 45, a3: 36, a4: 90, a5: 24, a6: 0 },
  623. { a1: "邵晓波", a2: 43, a3: 19, a4: 86, a5: 24, a6: 0 },
  624. { a1: "郁新豪", a2: 48, a3: 29, a4: 96, a5: 26, a6: 0 },
  625. { a1: "徐旭", a2: 26, a3: 14, a4: 52, a5: 0, a6: 0 },
  626. { a1: "郭思", a2: 57, a3: 27, a4: 114, a5: 36, a6: 0 },
  627. { a1: "刘德君", a2: 60, a3: 32, a4: 120, a5: 25, a6: 0 },
  628. { a1: "李国平", a2: 19, a3: 17, a4: 38, a5: 0, a6: 17 },
  629. { a1: "杨洋 ", a2: 35, a3: 16, a4: 71, a5: 25, a6: 0 },
  630. ],
  631. tableData2: [
  632. { a1: "高栋琳", a2: 41, a3: 26, a4: 82, a5: 26, a6: 0, a7: 0 },
  633. { a1: "邓慧勇", a2: 45, a3: 36, a4: 90, a5: 24, a6: 0, a7: 2 },
  634. { a1: "邵晓波", a2: 43, a3: 19, a4: 86, a5: 24, a6: 0, a7: 0 },
  635. { a1: "郁新豪", a2: 48, a3: 29, a4: 96, a5: 26, a6: 0, a7: 0 },
  636. { a1: "徐旭", a2: 26, a3: 14, a4: 52, a5: 0, a6: 0, a7: 0 },
  637. { a1: "郭思", a2: 57, a3: 27, a4: 114, a5: 36, a6: 1, a7: 0 },
  638. { a1: "刘德君", a2: 60, a3: 32, a4: 120, a5: 25, a6: 0, a7: 0 },
  639. { a1: "李国平", a2: 19, a3: 17, a4: 38, a5: 0, a6: 17, a7: 1 },
  640. { a1: "杨洋 ", a2: 35, a3: 16, a4: 71, a5: 25, a6: 0, a7: 0 },
  641. { a1: "杨剑", a2: 59, a3: 28, a4: 118, a5: 25, a6: 0, a7: 0 },
  642. { a1: "姚佳磊", a2: 33, a3: 20, a4: 66, a5: 28, a6: 0, a7: 1 },
  643. { a1: "范卉洁", a2: 17, a3: 0, a4: 34, a5: 0, a6: 17, a7: 0 },
  644. { a1: "俞苗", a2: 34, a3: 14, a4: 68, a5: 28, a6: 0, a7: 1 },
  645. { a1: "阿依提拉", a2: 29, a3: 13, a4: 59, a5: 0, a6: 0, a7: 0 },
  646. { a1: "张磊", a2: 32, a3: 32, a4: 64, a5: 0, a6: 22, a7: 0 },
  647. { a1: "吴弘", a2: 64, a3: 49, a4: 129, a5: 41, a6: 0, a7: 2 },
  648. { a1: "杨永辉", a2: 61, a3: 12, a4: 122, a5: 27, a6: 0, a7: 0 },
  649. { a1: "徐拥军", a2: 58, a3: 30, a4: 116, a5: 36, a6: 0, a7: 0 },
  650. { a1: "康劼", a2: 34, a3: 5, a4: 68, a5: 15, a6: 0, a7: 0 },
  651. { a1: "陈文健", a2: 0, a3: 0, a4: 0, a5: 0, a6: 0, a7: 1 },
  652. ],
  653. tableHeaderList1: [
  654. { prop: "a1", name: "人员" },
  655. { prop: "a2", name: "检查单位" },
  656. { prop: "a3", name: "主办检查单位" },
  657. // { prop: "a4", name: "出动人数" },
  658. { prop: "a5", name: "日常监督检查" },
  659. { prop: "a6", name: "专项检查" },
  660. ],
  661. tableHeaderList2: [
  662. { prop: "a1", name: "人员" },
  663. { prop: "a2", name: "检查家次" },
  664. { prop: "a3", name: "发现隐患" },
  665. { prop: "a4", name: "整改隐患" },
  666. { prop: "a5", name: "责令三停" },
  667. { prop: "a6", name: "处罚金额" },
  668. { prop: "a7", name: "临时查封" },
  669. ],
  670. };
  671. },
  672. components: { category, wordCloud, liquidFill },
  673. created() {
  674. this.getData();
  675. setTimeout(()=>{
  676. this.autoScroll()
  677. },2000)
  678. },
  679. mixins: [linstener, map],
  680. computed: {
  681. isFollow2() {
  682. return this.stroes.$state.streetTown; //需要监听街镇选择
  683. },
  684. },
  685. watch: {
  686. isFollow2(newVal) {
  687. this.stroes.$state.streetTown = newVal.name;
  688. let data = {};
  689. for (let i = 0; i < this.stroes.$state.mhjz.length; i++) {
  690. if (
  691. this.stroes.$state.streetTown ==
  692. this.stroes.$state.mhjz[i].streetTown
  693. ) {
  694. data = this.stroes.$state.mhjz[i];
  695. break;
  696. }
  697. }
  698. this.streetTownSwitch(data);
  699. },
  700. },
  701. mounted() {
  702. window.addEventListener(
  703. "resize",
  704. () =>
  705. this.resizeTimeActions([
  706. this.$refs.category,
  707. this.$refs.wordCloud,
  708. this.$refs.liQuIdFill,
  709. ]),
  710. true
  711. );
  712. this.initMap();
  713. },
  714. methods: {
  715. beforeDestroy() {
  716. this.autoScroll(true)
  717. },
  718. /**
  719. * 初始化
  720. */
  721. getData() {
  722. this.monthLawApi(); //当月执法情况接口请求
  723. this.adstraLicenseApi(); //行政许可情况接口请求
  724. this.reportComplaintApi(); //投诉举报情况接口请求
  725. this.sadianSelect(); //撒点
  726. this.selectVideo(); //视频在线
  727. },
  728. cancel(){
  729. this.open = false
  730. },
  731. /**
  732. * 撒点测绘院、高德
  733. */
  734. sadianSelect() {
  735. if (this.stroes.$state.mapBool == 1) {
  736. this.mapCluster();
  737. } else {
  738. this.sadian();
  739. }
  740. },
  741. /**
  742. * 撒点类型选择
  743. */
  744. checkType(value) {
  745. this.checked = value ? value : "";
  746. this.sadianSelect();
  747. },
  748. /**
  749. * 撒点街镇选择测绘院
  750. */
  751. checkStreetTown() {
  752. let data = undefined;
  753. for (let i = 0; i < this.stroes.$state.mhjz.length; i++) {
  754. if (
  755. this.stroes.$state.streetTown ==
  756. this.stroes.$state.mhjz[i].streetTown
  757. ) {
  758. data = this.stroes.$state.mhjz[i];
  759. break;
  760. }
  761. }
  762. if (!this.stroes.$state.streetTown) {
  763. data = this.stroes.$state.mhjz[0];
  764. }
  765. if (this.stroes.$state.mapBool == 2) {
  766. this.streetTownSwitch(data);
  767. }
  768. this.sadianSelect();
  769. },
  770. /**
  771. *
  772. * @param {单点信息} newVal
  773. */
  774. xfzfdtData(newVal) {
  775. // this.xfzfdtStatus = true;
  776. // this.xfzfdt = newVal.xfzfdt;
  777. },
  778. /**
  779. * 在线视频
  780. */
  781. async selectVideo(id) {
  782. await axios({
  783. headers: {
  784. "Content-Type": "application/json;charset=UTF-8",
  785. },
  786. method: "get",
  787. // url: "http://32.0.15.107:8080/video-api/kiop-gateway-core/4G/device/ext?apikey=643e6591-a489-4648-ba35-c15c39c64022",
  788. url: "http://32.0.15.107:8080/video-api/kiop-gateway-core/tysbs/device/ext?apikey=643e6591-a489-4648-ba35-c15c39c64022&f_in_civilCode=31021019,31020414&pageNo=0&pageSize=10000",
  789. }).then((res) => {
  790. let arr = [];
  791. let zfjly = [];
  792. if (res.data.length > 0) {
  793. let data = res.data;
  794. for (let i = 0; i < data.length; i++) {
  795. if (data[i].otherNames?.status_name == "在线") {
  796. var num = {
  797. id: data[i].id,
  798. name: data[i]?.deviceName,
  799. groupName: data[i]?.groupName,
  800. gisX: data[i]?.longitude
  801. ? data[i]?.longitude
  802. : 0,
  803. gisY: data[i]?.latitude ? data[i]?.latitude : 0,
  804. type: "执法记录仪",
  805. gbid: data[i].gbid,
  806. url:
  807. "http://10.107.31.215:50080/dispatch-ms/#/conference/single_url?ipc_live=1&key=643e6591-a489-4648-ba35-c15c39c64022&gbids=" +
  808. data[i].gbid,
  809. };
  810. arr.push(num);
  811. }
  812. }
  813. for (let i = 0; i < arr.length; i++) {
  814. if (
  815. arr[i].name.indexOf("单兵") == "-1" &&
  816. arr[i].name.indexOf("无人机") == "-1" &&
  817. arr[i].name.indexOf("布控球") == "-1"
  818. ) {
  819. zfjly.push(arr[i]);
  820. }
  821. }
  822. this.selectVideoData = zfjly;
  823. console.log(234, this.selectVideoData)
  824. if (arr.length > 0 && id) {
  825. this.addMarker(arr, "enforcement-dynamic","执法记录仪");
  826. }
  827. }
  828. });
  829. // 测试
  830. // let arr =
  831. // [{
  832. // id: "5708ad6382517cd68ea2d2f8cd01bb58",
  833. // name: "上海闵行闵行消防站4G布控球",
  834. // groupName: "009闵行支队",
  835. // gisX: 121.386128,
  836. // gisY:31.139253 ,
  837. // type:"video",
  838. // gbid:31.01411,
  839. // type:"执法记录仪",
  840. // url:"http://10.107.31.215:50080/dispatch-ms/#/conference/single_url?ipc_live=1&key=643e6591-a489-4648-ba35-c15c39c64022&gbids=31000000001320003271&nmediaid=121"
  841. // }
  842. // ]
  843. // if(id){
  844. // this.addMarker(arr, "enforcement-dynamic");
  845. // }
  846. },
  847. /**
  848. * @投诉举报情况 吉
  849. * @api接口请求
  850. */
  851. async reportComplaintApi() {
  852. let res = await this.$axios.get(
  853. this.$api.siaeall.lawTrendList +
  854. "?" +
  855. this.$qs.stringify({
  856. moduleType: "complaintHandle",
  857. })
  858. );
  859. if(res){
  860. if (res.data.length > 0) {
  861. this.reportComplaintList = {
  862. x:[],
  863. y:{
  864. type:[],
  865. data:[],
  866. total:[],
  867. },
  868. }
  869. for(let i =0;i<res.data[0].complaintVOList.length;i++){
  870. this.reportComplaintList.y.type.push(res.data[0].complaintVOList[i].type)
  871. }
  872. for(let i =0;i<this.reportComplaintList.y.type.length;i++){
  873. this.reportComplaintList.y.data[i]= []
  874. for(let ii=0;ii<res.data.length;ii++){
  875. this.reportComplaintList.y.data[i].push(res.data[ii].complaintVOList[i].number)
  876. }
  877. }
  878. for(let i =0;i<res.data.length;i++){
  879. this.reportComplaintList.x.push(res.data[i].streetTown)
  880. }
  881. const arr0 = this.reportComplaintList.y.data[0]
  882. const arr1 = this.reportComplaintList.y.data[1]
  883. const arr2 = this.reportComplaintList.y.data[2]
  884. const arr3 = this.reportComplaintList.y.data[3]
  885. const reverseSum = (arr0, arr1, arr2, arr3) => {
  886. for(let i = 0; i < arr1.length; i++){
  887. this.reportComplaintList.y.total[i] = arr0[i] + arr1[i] + arr2[i] + arr3[i];
  888. };
  889. return this.reportComplaintList.y.total
  890. };
  891. reverseSum(arr0, arr1, arr2, arr3)
  892. }
  893. }
  894. },
  895. /**
  896. * @当月执法情况
  897. * @api接口请求
  898. */
  899. // async monthLawApi() {
  900. // let res = await this.$axios.get(
  901. // this.$api.siaeall.lawTrendList +
  902. // "?" +
  903. // this.$qs.stringify({
  904. // moduleType: "monthLaw",
  905. // })
  906. // );
  907. // if (res.data.length > 0) {
  908. // // this.SiAeAllList = res.data;
  909. // this.SiAeAllList = [
  910. // {checkType: '检查家次(家)', number: 3255, linkRelativeStatus: 1, sameRatio: 0.053, linkRelativeRatio: 0.012},
  911. // {checkType: '整改隐患(起)', number: 3265, linkRelativeStatus: 1, sameRatio: 0.053, linkRelativeRatio: 0.0120},
  912. // {checkType: '处罚金额(万元)', number: 300, linkRelativeStatus: 1, sameRatio: 0.053, linkRelativeRatio: 0.012},
  913. // {checkType: '发现隐患(起)', number: 3255, linkRelativeStatus: 1, sameRatio: 0.053, linkRelativeRatio: 0.012},
  914. // {checkType: '责令三停(家)', number: 65, linkRelativeStatus: 1, sameRatio: 0.053, linkRelativeRatio: 0.012}
  915. // ]
  916. // }
  917. // },
  918. /**
  919. * @当月执法情况
  920. * @api接口请求
  921. */
  922. async monthLawApi() {
  923. this.SiAeAllList = []
  924. let res = await this.$axios.get(
  925. this.$api.siaeall.siAeAllCollect +
  926. "?" +
  927. this.$qs.stringify({
  928. startTime: this.stores.timeList[0],
  929. endTime: this.stores.timeList[1],
  930. // startTime: "2022-12-01 00:00:00",
  931. // endTime: "2022-12-31 23:59:59",
  932. })
  933. );
  934. if (res.data.length > 0) {
  935. for (let i = 0; i < res.data.length; i++) {
  936. if (res.data[i].checkType == "检查家次(家)") {
  937. this.SiAeAllList.push(res.data[i]);
  938. }
  939. if (res.data[i].checkType == "发现隐患(起)") {
  940. this.SiAeAllList.push(res.data[i]);
  941. }
  942. if (res.data[i].checkType == "整改隐患(起)") {
  943. this.SiAeAllList.push(res.data[i]);
  944. }
  945. if (res.data[i].checkType == "责令三停(家)") {
  946. this.SiAeAllList.push(res.data[i]);
  947. }
  948. if (res.data[i].checkType == "处罚金额(万元)") {
  949. this.SiAeAllList.push(res.data[i]);
  950. }
  951. if (res.data[i].checkType == "临时查封(份)") {
  952. this.SiAeAllList.push(res.data[i]);
  953. }
  954. }
  955. // this.SiAeAllList = [
  956. // {checkType: '检查家次(家)', number: 3255, linkRelativeStatus: 1, sameRatio: 0.053, linkRelativeRatio: 0.012},
  957. // {checkType: '整改隐患(起)', number: 3265, linkRelativeStatus: 1, sameRatio: 0.053, linkRelativeRatio: 0.0120},
  958. // {checkType: '处罚金额(万元)', number: 300, linkRelativeStatus: 1, sameRatio: 0.053, linkRelativeRatio: 0.012},
  959. // {checkType: '发现隐患(起)', number: 3255, linkRelativeStatus: 1, sameRatio: 0.053, linkRelativeRatio: 0.012},
  960. // {checkType: '责令三停(家)', number: 65, linkRelativeStatus: 1, sameRatio: 0.053, linkRelativeRatio: 0.012}
  961. // ]
  962. }
  963. },
  964. /**
  965. * @行政许可情况
  966. * @api接口请求
  967. */
  968. async adstraLicenseApi() {
  969. let res = await this.$axios.get(
  970. this.$api.fire.adLicenseStatistic
  971. );
  972. if (res.status === "SUCCESS") {
  973. this.alFsdAllNumber = res.data;
  974. }
  975. },
  976. /**
  977. * 测绘院撒点
  978. */
  979. async sadian() {
  980. if (this.checked == "执法记录仪") {
  981. this.selectVideo(1);
  982. }else if (this.checked == "三合一") {
  983. // this.addMarker([], "enforcement-dynamic",this.checked );
  984. this.$axios.post(this.$api.water.baseGgpFacilityList,{
  985. "facilityType": [
  986. 12
  987. ]
  988. }).then((res) => {
  989. let arr = []
  990. if(res.data.length>0){
  991. arr = res.data
  992. }
  993. this.addMarker(arr, "enforcement-dynamic","三合一");
  994. });
  995. }else if (this.checked == "重大火灾隐患") {
  996. this.$axios.post(this.$api.water.baseGgpFacilityList,{
  997. "facilityType": [
  998. 5
  999. ]
  1000. }).then((res) => {
  1001. let arr = []
  1002. if(res.data.length>0){
  1003. arr = res.data
  1004. }
  1005. this.addMarker(arr, "enforcement-dynamic","重大火灾隐患");
  1006. });
  1007. } else {
  1008. await this.$axios
  1009. .get(
  1010. this.$api.siaeall.lawTrendSaDian +
  1011. "?" +
  1012. this.$qs.stringify({
  1013. streetTown: this.stroes.$state.streetTown,
  1014. sattererType: this.checked,
  1015. })
  1016. )
  1017. .then((res) => {
  1018. if (res.data.length > 0) {
  1019. //点分布
  1020. let data = res.data;
  1021. let arr = [];
  1022. //if(this.checked == "安全检查单位"){
  1023. for (let i = 0; i < data.length; i++) {
  1024. arr[i] = {
  1025. id: data[i].id ? data[i].id : null,
  1026. type: this.checked,
  1027. name: data[i].name ? data[i].name : null,
  1028. streetTown: data[i].streetTown
  1029. ? data[i].streetTown
  1030. : null,
  1031. gisX: data[i].longitude,
  1032. gisY: data[i].latitude,
  1033. number: data[i].number
  1034. ? data[i].number
  1035. : null,
  1036. };
  1037. }
  1038. this.addMarker(
  1039. arr.splice(0, 500),
  1040. "enforcement-dynamic",this.checked
  1041. );
  1042. } else {
  1043. this.addMarker([], "enforcement-dynamic",this.checked );
  1044. }
  1045. });
  1046. }
  1047. },
  1048. //本年度重点事项推进情况撒点
  1049. schedule(id){
  1050. if(id){
  1051. this.$axios.post(this.$api.water.baseGgpFacilityList,{
  1052. "facilityType": [
  1053. id
  1054. ]
  1055. }).then((res) => {
  1056. let arr = []
  1057. if(res.data.length>0){
  1058. arr = res.data
  1059. }
  1060. this.addMarker(arr, "enforcement-dynamic","本年度重点事项推进情况");
  1061. });
  1062. }else{
  1063. this.addMarker([], "enforcement-dynamic","本年度重点事项推进情况");
  1064. }
  1065. },
  1066. /**
  1067. * @高德地图聚合撒点
  1068. */
  1069. async mapCluster(id) {
  1070. if (this.checked == "执法记录仪") {
  1071. this.selectVideo(1);
  1072. } else {
  1073. await this.$axios
  1074. .get(
  1075. this.$api.siaeall.lawTrendSaDian +
  1076. "?" +
  1077. this.$qs.stringify({
  1078. streetTown: this.stroes.$state.streetTown,
  1079. sattererType: this.checked,
  1080. })
  1081. )
  1082. .then((res) => {
  1083. if (res.data.length > 0) {
  1084. //点分布
  1085. let data = res.data;
  1086. let arr = [];
  1087. //if(this.checked == "安全检查单位"){
  1088. for (let i = 0; i < data.length; i++) {
  1089. arr[i] = {
  1090. id: data[i].id ? data[i].id : null,
  1091. type: this.checked,
  1092. name: data[i].name ? data[i].name : null,
  1093. streetTown: data[i].streetTown
  1094. ? data[i].streetTown
  1095. : null,
  1096. gisX: data[i].longitude,
  1097. gisY: data[i].latitude,
  1098. number: data[i].number
  1099. ? data[i].number
  1100. : null,
  1101. };
  1102. }
  1103. this.initMarkers(
  1104. arr.splice(0, 500),
  1105. "enforcement-dynamic",this.checked
  1106. );
  1107. } else {
  1108. this.initMarkers([], "enforcement-dynamic",this.checked );
  1109. }
  1110. });
  1111. }
  1112. },
  1113. /**
  1114. * @高德地图撒点
  1115. */
  1116. async mapList() {
  1117. let res = await this.$axios.get(
  1118. this.$api.selfManagement.mapList +
  1119. "?" +
  1120. this.$qs.stringify({
  1121. streetTown: this.stroes.$state.streetTown,
  1122. companyType: this.checked,
  1123. })
  1124. );
  1125. if (res.data.length > 0) {
  1126. this.addMarker(res.data, "消防执法动态", this.checked);
  1127. }
  1128. },
  1129. btnC(val) {
  1130. this.check = val;
  1131. },
  1132. },
  1133. };
  1134. </script>
  1135. <style lang="scss" scoped>
  1136. @import "@/assets/scss/color.scss";
  1137. .leftBox {
  1138. .left_top {
  1139. height: 46%;
  1140. max-height: 46%;
  1141. .data {
  1142. > .el-col {
  1143. @include color_primary($color-primary3);
  1144. font-size: 0.2rem;
  1145. margin-top: 0.25rem;
  1146. text-align: left !important;
  1147. .svgImg {
  1148. width: 0.2rem;
  1149. vertical-align: middle;
  1150. }
  1151. .event {
  1152. margin: 0 0.225rem 0;
  1153. width: 24%;
  1154. }
  1155. .num {
  1156. width: 15%;
  1157. }
  1158. .huanbi,
  1159. .tongbi {
  1160. width: 20%;
  1161. span:nth-child(2) {
  1162. margin-left: 0.25rem;
  1163. }
  1164. }
  1165. .huanbi {
  1166. margin: 0 5%;
  1167. }
  1168. p {
  1169. display: inline-block;
  1170. }
  1171. }
  1172. }
  1173. .leftTopContent {
  1174. color: #ffffff;
  1175. height: calc(100% - 0.4375rem);
  1176. width: 95%;
  1177. margin-left: 2.5%;
  1178. > div {
  1179. width: 100%;
  1180. text-align: left;
  1181. > .el-col {
  1182. margin-top: 0.25rem;
  1183. > div {
  1184. margin: auto;
  1185. > .title {
  1186. width: 1.075rem;
  1187. height: 0.225rem;
  1188. font-size: 0.175rem;
  1189. padding-left: 0.1625rem;
  1190. margin: 0.0625rem 0 0.0625rem 0;
  1191. position: relative;
  1192. background-image: url(~@a/img/securityPlan/fhxcqk.png);
  1193. background-size: 100% 100%;
  1194. > div {
  1195. position: absolute;
  1196. bottom: 0.0625rem;
  1197. width:150%;
  1198. }
  1199. }
  1200. > .content {
  1201. > span:nth-child(1) {
  1202. font-size: 0.3rem;
  1203. padding: 0 0.5625rem 0 0.1625rem;
  1204. color: #73fbfd;
  1205. }
  1206. > span:nth-child(2) {
  1207. font-size: 0.175rem;
  1208. margin-right: 0.125rem;
  1209. }
  1210. > span:nth-child(3) {
  1211. font-size: 0.175rem;
  1212. }
  1213. }
  1214. > .content2 {
  1215. span {
  1216. font-size: 0.175rem;
  1217. margin-right: 0.125rem;
  1218. }
  1219. }
  1220. }
  1221. }
  1222. }
  1223. }
  1224. }
  1225. .left_middle {
  1226. height: 25%;
  1227. max-height: 25%;
  1228. }
  1229. .left_bottom {
  1230. height: 29%;
  1231. max-height: 29%;
  1232. position: relative;
  1233. > .el-col {
  1234. display: flex;
  1235. -ms-flex-wrap: wrap;
  1236. flex-wrap: wrap;
  1237. position: relative;
  1238. -webkit-box-sizing: border-box;
  1239. box-sizing: border-box;
  1240. }
  1241. .leftBotLeft {
  1242. .text {
  1243. z-index: 9;
  1244. width:42%;
  1245. margin-top:15%;
  1246. text-align: center;
  1247. // background: red;
  1248. color: #fff;
  1249. .el-col:first-child {
  1250. font-size: 0.3rem;
  1251. }
  1252. .el-col:last-child {
  1253. font-size: 0.2rem;
  1254. }
  1255. }
  1256. .liQuIdFill {
  1257. position: absolute;
  1258. left: 4%;
  1259. right: 0;
  1260. top: 0.25rem;
  1261. width: 2.15rem;
  1262. height: 2.15rem;
  1263. }
  1264. }
  1265. .leftBotRight {
  1266. width: 40%;
  1267. right: 0.8rem;
  1268. top: 0.64rem;
  1269. position: absolute;
  1270. > .el-col {
  1271. margin-top: 0.1rem;
  1272. height: 0.40rem;
  1273. border-radius: 4px;
  1274. background-size: 100% 100%;
  1275. padding: 0 0.3rem;
  1276. display: flex;
  1277. justify-content: space-between;
  1278. align-items: center;
  1279. box-shadow: inset 0 0 0.2rem 0.0125rem #30cfff;
  1280. border: 1px solid transparent;
  1281. font-size: 0.18rem;
  1282. @include color_primary($color-primary3);
  1283. span:nth-child(2) {
  1284. font-size: 0.25rem;
  1285. @include color_primary($color-primary1);
  1286. }
  1287. }
  1288. }
  1289. }
  1290. }
  1291. .rightBox {
  1292. .rightBox1 {
  1293. height: 23vh;
  1294. }
  1295. .rightBox3 {
  1296. margin-top: 5vh;
  1297. }
  1298. .num {
  1299. padding: 3vh 0%;
  1300. .svgImg {
  1301. width: 40%;
  1302. margin-left: 20%;
  1303. vertical-align: middle;
  1304. display: inline-block;
  1305. }
  1306. .data {
  1307. width: 30%;
  1308. margin-left: 5%;
  1309. vertical-align: middle;
  1310. display: inline-block;
  1311. .p1 {
  1312. @include color_primary($color-primary1);
  1313. font-size: 0.3rem;
  1314. display: inline-block;
  1315. font-weight: 700;
  1316. }
  1317. .p2 {
  1318. @include color_primary($color-primary3);
  1319. font-size: 0.2rem;
  1320. margin-top: 1.1vh;
  1321. }
  1322. }
  1323. }
  1324. .monitor-list {
  1325. overflow: hidden;
  1326. margin-top:0.25rem;
  1327. > .list {
  1328. border: 1px solid #3a7e8e;
  1329. position: relative;
  1330. width:48%;
  1331. box-sizing: border-box;
  1332. .videoSelect {
  1333. position: absolute;
  1334. width: 100%;
  1335. }
  1336. img{
  1337. width:100%;
  1338. height:250px;
  1339. overflow: hidden;
  1340. }
  1341. }
  1342. .list:nth-child(2){
  1343. margin-left:4%;
  1344. }
  1345. }
  1346. iframe {
  1347. border: none;
  1348. width:100%;
  1349. }
  1350. }
  1351. .treeMap {
  1352. width: 100%;
  1353. height: 32vh;
  1354. margin-top: 12%;
  1355. img {
  1356. width: 0.2rem;
  1357. margin: 0.3rem auto;
  1358. height: 0.2125rem;
  1359. display: block;
  1360. }
  1361. }
  1362. .tableTooltip {
  1363. width: 5rem;
  1364. background: transparent;
  1365. border-radius: 0.05rem;
  1366. box-shadow: inset 0 0 1px 0.0125rem rgba(115, 251, 253, 1);
  1367. background: rgba(0, 29, 49, 0.5);
  1368. font-size: 0.2rem;
  1369. padding: 0.1875rem;
  1370. position: fixed;
  1371. z-index: 10000;
  1372. .close {
  1373. width: 20px;
  1374. height: 20px;
  1375. position: absolute;
  1376. right: 10px;
  1377. top: 10px;
  1378. z-index: 10000;
  1379. display: block;
  1380. }
  1381. .tableContent {
  1382. p {
  1383. @include color_primary($color-primary1);
  1384. }
  1385. .el-col {
  1386. margin-top: 0.05rem;
  1387. line-height: 0.3rem;
  1388. text-overflow: ellipsis !important;
  1389. white-space: normal !important;
  1390. }
  1391. .mk:nth-child(1) {
  1392. margin-top: 0px;
  1393. }
  1394. .color1 {
  1395. @include color_primary($color-primary3);
  1396. }
  1397. .color2 {
  1398. @include color_primary($color-primary1);
  1399. }
  1400. }
  1401. }
  1402. .mapTips_streetTown {
  1403. width: auto;
  1404. height: auto;
  1405. background: $background-color-theme4;
  1406. position: fixed;
  1407. bottom: 1.48vh;
  1408. right: 10rem;
  1409. color: #fff !important;
  1410. font-size: 0.2rem;
  1411. p {
  1412. color: #019fb7;
  1413. }
  1414. .content {
  1415. padding: 1.388vh 0.25rem;
  1416. color: #fff !important;
  1417. }
  1418. .img {
  1419. width: 100%;
  1420. height: 0.37vh;
  1421. margin-top: -0.37vh;
  1422. position: absolute;
  1423. }
  1424. }
  1425. .z {
  1426. @include color_primary($color-primarywt1);
  1427. }
  1428. .j {
  1429. @include color_primary($color-primarywt2);
  1430. }
  1431. .tableTab {
  1432. height: 20vh;
  1433. overflow: hidden;
  1434. }
  1435. .gp{
  1436. font-size: 12px;
  1437. font-family: "微软雅黑";
  1438. float:right;
  1439. margin-top:10px;
  1440. >span{
  1441. margin-right:10px;
  1442. >span{
  1443. font-size: 14px;
  1444. font-weight: 700;
  1445. margin-left:6px;
  1446. }
  1447. }
  1448. >span:nth-child(2){
  1449. margin-right: 0px;
  1450. }
  1451. }
  1452. ::v-deep .monitor-list .el-input__inner{
  1453. border-radius: 0 !important;
  1454. border:none;
  1455. border-bottom:1px solid #3a7e8e;
  1456. }
  1457. .z {
  1458. @include color_primary($color-primarywt1);
  1459. }
  1460. .j {
  1461. @include color_primary($color-primarywt2);
  1462. }
  1463. .tableTab{
  1464. height:20vh;
  1465. overflow: hidden;
  1466. }
  1467. .ndtj{
  1468. margin-bottom:-18px;
  1469. color:#fff;
  1470. font-size: .175rem;
  1471. >p{
  1472. margin-bottom:-30px;
  1473. }
  1474. .num{
  1475. width:45%;
  1476. margin-left:2%;
  1477. display: inline-block;
  1478. }
  1479. }
  1480. </style>
  1481. <style>
  1482. .el-progress{
  1483. width:50%;
  1484. height:20px;
  1485. display: inline-block;
  1486. }
  1487. .el-progress-bar__outer{
  1488. height:14px !important;
  1489. }
  1490. .el-progress__text{
  1491. color:#000 !important;
  1492. text-align: center;
  1493. position: absolute;
  1494. top:1px;
  1495. left:50%;
  1496. z-index: 10;
  1497. }
  1498. .j1 .el-progress-bar__inner,.j3 .el-progress-bar__inner{
  1499. background: #3f8a3f;
  1500. }
  1501. .j2 .el-progress-bar__inner{
  1502. background: #5081c5;
  1503. }
  1504. .j4 .el-progress-bar__inner{
  1505. background: #b72727;
  1506. }
  1507. </style>