security-plan.vue 96 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119
  1. <template>
  2. <el-row class="contentBox">
  3. <transition name="el-fade-in-linear">
  4. <el-col class="leftBox" v-show="stroes.$state.leftBtn">
  5. <div class="leftTop">
  6. <h4>疏导区基本情况</h4>
  7. <div class="leftTopContent2">
  8. <!-- <el-row>
  9. <div v-for="(item,index) in diversionArea" :key="index">
  10. <p>{{ item.name }}</p>
  11. <p><strong><CountTo :startVal='0' :endVal='item.value' :duration='5000'> {{ item.value || 0 }}</CountTo></strong>{{ item.unit }}</p>
  12. </div>
  13. </el-row> -->
  14. <el-row>
  15. <el-col
  16. :span="5"
  17. style="border: 1px solid rgba(48, 207, 255, 0.6); margin: 4px .125rem; box-shadow: inset 0 0 0.07rem 0.04rem rgb(115 251 253 / 40%); box-sizing: border-box"
  18. v-for="(item, index) in diversionArea"
  19. :key="index"
  20. >
  21. <div style="padding: 0.03rem 0; text-align: center">
  22. <span style="display: block">
  23. <Strong
  24. :style="{
  25. color: item.color,
  26. fontWeight: 600,
  27. fontSize: '0.3rem',
  28. }"
  29. >
  30. <CountTo :startVal="0" :endVal="item.value || 0" :duration="3000" v-if="!isNaN(item.value)">{{ item.value || 0 }}</CountTo>
  31. <span v-if="isNaN(item.value)" style="fontsize: 0.2rem">{{ item.value || 0 }}</span>
  32. </Strong>
  33. {{ item.unit }}
  34. </span>
  35. <span>{{ item.name }}</span>
  36. </div>
  37. </el-col>
  38. </el-row>
  39. </div>
  40. </div>
  41. <div class="rightCenter">
  42. <h4>执勤战备力量部署</h4>
  43. <div class="rightTopContent">
  44. <el-table :data="tableData2" class="transparentTableRow" height="100%" :empty-text="dataNo">
  45. <el-table-column type="expand">
  46. <template #default="props">
  47. <template v-if="props.row.children">
  48. <template v-for="(item, ind) in props.row.children" :key="ind">
  49. <el-row class="tableExpendTitle" style="margin-top: 10px">
  50. 状态:{{ item.carStatus }}({{ item.equipTypeName ? item.equipTypeName + "," : "" }}{{ item.renyuanNum }}人)
  51. </el-row>
  52. <el-row class="tableExpendcontent">
  53. <el-col>
  54. <div>
  55. 车牌号:<span style="color: #6ff3f6">{{ item.cphm }}</span>
  56. </div>
  57. </el-col>
  58. <el-col v-if="item.zhy" :span="12">
  59. <div>
  60. 指挥员:<span style="color: #6ff3f6">{{ item.zhy }}</span>
  61. </div>
  62. </el-col>
  63. <el-col v-if="item.txy" :span="12">
  64. <div>
  65. 通讯员:<span style="color: #6ff3f6">{{ item.txy }}</span>
  66. </div>
  67. </el-col>
  68. <el-col v-if="item.jsy" :span="12">
  69. <div>
  70. 驾驶员:<span style="color: #6ff3f6">{{ item.jsy }}</span>
  71. </div>
  72. </el-col>
  73. <el-col v-if="item.zsry" :span="24">
  74. <div>
  75. 战士人员:<span style="color: #6ff3f6">{{ item.zsry }}</span>
  76. </div>
  77. </el-col>
  78. </el-row>
  79. </template>
  80. </template>
  81. </template>
  82. </el-table-column>
  83. <el-table-column show-overflow-tooltip v-for="item in headerData2" :key="item.prop" :prop="item.prop" align="center" min-width="20" :label="item.name">
  84. <template v-if="item.prop === 'car'" #default="scope">
  85. <span style="color: #6ff3f6">{{ scope.row.car }}</span>
  86. </template>
  87. <template v-if="item.prop === 'personnel'" #default="scope">
  88. <span style="color: #6ff3f6">{{ scope.row.personnel }}</span>
  89. </template>
  90. </el-table-column>
  91. </el-table>
  92. </div>
  93. </div>
  94. <div class="leftCenter">
  95. <div style="display: flex;">
  96. <h4>疏导区社会单位情况</h4>
  97. <div style="display: flex; border-bottom: 0.0125rem solid rgba(115, 251, 253, 0.5);">
  98. <el-form class="titleElForm" :inline="true" size="mini" :model="barForm" style="height: 0">
  99. <el-form-item>
  100. <!-- <el-select v-model="barForm.fireType" @change="getHouse()" filterable clearable placeholder="场所">
  101. <el-option v-for="(item, ind) in fireTypeList" :key="ind" :label="item" :value="item"></el-option>
  102. </el-select> -->
  103. <!-- <el-select v-model="units" filterable clearable placeholder="场所">
  104. <el-option v-for="(item, ind) in diversionArea" :key="ind" :label="item.name" :value="item.value"></el-option>
  105. </el-select> -->
  106. <el-select v-model="value" class="m-2" placeholder="请选择" style="width:200px">
  107. <el-option
  108. v-for="item in options"
  109. :key="item.value"
  110. :label="item.label"
  111. :value="item.value"
  112. />
  113. </el-select>
  114. </el-form-item>
  115. </el-form>
  116. </div>
  117. </div>
  118. <unit-box :typeValue="value"></unit-box>
  119. <!-- <category
  120. ref="category"
  121. v-show="category"
  122. :dataMap="reportComplaintList.map((val, ind) => val.value)"
  123. :xData="reportComplaintList.map((val, ind) => val.name)"
  124. :isSlice="10"
  125. :width="40"
  126. color="#73FBFD"
  127. @echartsClick="categoryClick"
  128. ></category> -->
  129. </div>
  130. <!-- <div class="leftCenter">
  131. <h4 class="h4Top">接警处置情况</h4>
  132. <category
  133. ref="category"
  134. v-show="category"
  135. :dataMap="reportComplaintList.map((val, ind) => val.value)"
  136. :xData="reportComplaintList.map((val, ind) => val.name)"
  137. :isSlice="10"
  138. :width="40"
  139. color="#73FBFD"
  140. @echartsClick="categoryClick"
  141. ></category>
  142. <div @click="goBack" class="return" v-if="!category">
  143. <div class="returnText">返回</div>
  144. </div>
  145. </div> -->
  146. <div class="leftBotContent2">
  147. <el-table v-if="!category" :data="tableData" class="transparentTableRow" height="100%" ref="reportTable" @mouseenter="autoScroll(true)" @mouseleave="autoScroll()">
  148. <el-table-column v-for="item in headerData" show-overflow-tooltip :key="item.prop" :prop="item.prop" align="center" min-width="20" :label="item.name">
  149. <template #default="scope">
  150. {{ item.prop === "type" ? "" : item.prop === "status" ? (scope.row[item.prop] == 1 ? "可用" : "不可用") : scope.row[item.prop] }}
  151. </template>
  152. </el-table-column>
  153. </el-table>
  154. </div>
  155. </el-col>
  156. </transition>
  157. <transition name="el-fade-in-linear">
  158. <el-col class="centerBox" style="width: 100%">
  159. <div :class="stroes.$state.leftBtn ? 'leftBtn btnW' : 'leftBtn0 btnW'" @click="stroes.leftBtnClick()">
  160. <img src="@/assets/img/svg/left.svg" alt="" class="img" />
  161. </div>
  162. <el-col class="centerContent" id="mapF"></el-col>
  163. <div :class="stroes.$state.rightBtn ? 'rightBtn btnW' : 'rightBtn0 btnW'" @click="stroes.rightBtnClick()">
  164. <img src="@/assets/img/svg/left.svg" alt="" class="img" />
  165. </div>
  166. <div class="mapTips_type">
  167. <img src="@/assets/img/svg/danweitop.svg" alt="" class="img" />
  168. <div class="content">
  169. <p>类型筛选</p>
  170. <div class="selectType">
  171. <!-- <div @click="checkboxChange(0)" :class="checkedArray.checkedData[0] == 0 ? 'checkTypeSelect' : ''">
  172. <img :src="stores.sadianIcon.xfc" alt="" />
  173. <span>车辆</span>
  174. </div> -->
  175. <div @click="checkboxChange(1)" :class="checkedArray.checkedData[0] == 1 ? 'checkTypeSelect' : ''">
  176. <img :src="stores.sadianIcon.lsjq" alt="" />
  177. <span>历史警情</span>
  178. </div>
  179. <div @click="checkboxChange(2)" :class="checkedArray.checkedData[0] == 2 ? 'checkTypeSelect' : ''">
  180. <img :src="stores.sadianIcon.lshz" alt="" />
  181. <span>历史火灾</span>
  182. </div>
  183. <!-- <div @click="checkboxChange(3)" :class="checkedArray.checkedData[0] == 3 ? 'checkTypeSelect' : ''">
  184. <img :src="stores.sadianIcon.zddw" alt="" />
  185. <span>重点单位</span>
  186. </div> -->
  187. <div
  188. :class="
  189. checkedArray.checkedData[0] == 4
  190. ? 'checkTypeSelect'
  191. : checkedArray.checkedData[0] == 40
  192. ? 'checkTypeSelect'
  193. : checkedArray.checkedData[0] == 41
  194. ? 'checkTypeSelect'
  195. : checkedArray.checkedData[0] == 42
  196. ? 'checkTypeSelect'
  197. : checkedArray.checkedData[0] == 43
  198. ? 'checkTypeSelect'
  199. : checkedArray.checkedData[0] == 44
  200. ? 'checkTypeSelect'
  201. : checkedArray.checkedData[0] == 45
  202. ? 'checkTypeSelect'
  203. : checkedSelectValue == '46'
  204. ? stores.sadianIcon.yjxfz
  205. : checkedSelectValue == '47'
  206. ? stores.sadianIcon.jzzzxfd
  207. : ' '
  208. "
  209. >
  210. <img
  211. :src="
  212. checkedSelectValue == '40'
  213. ? stores.sadianIcon.xfz
  214. : checkedSelectValue == '41'
  215. ? stores.sadianIcon.zzd
  216. : checkedSelectValue == '42'
  217. ? stores.sadianIcon.jzwxxfz
  218. : checkedSelectValue == '43'
  219. ? stores.sadianIcon.csxfz
  220. : checkedSelectValue == '44'
  221. ? stores.sadianIcon.qyxfd
  222. : checkedSelectValue == '45'
  223. ? stores.sadianIcon.sqwxxfz
  224. : checkedSelectValue == '46'
  225. ? stores.sadianIcon.sqwxxfz
  226. : checkedSelectValue == '47'
  227. ? stores.sadianIcon.sqwxxfz
  228. : stores.sadianIcon.xfz
  229. "
  230. alt=""
  231. />
  232. <span>{{ checkedSelectLabel }}</span>
  233. <el-select
  234. v-model="checkedSelectValue"
  235. placeholder="消防站"
  236. class="selectTypeIcon"
  237. style="display: inline-block; width: 100%; position: absolute; right: 0"
  238. @change="selectArray"
  239. >
  240. <el-option v-for="item in checkedSelectArray" :key="item.value" :label="item.label" :value="item.value"> </el-option>
  241. </el-select>
  242. </div>
  243. <div @click="checkboxChange(15)" :class="checkedArray.checkedData[0] == 15 ? 'checkTypeSelect' : ''">
  244. <img :src="stores.sadianIcon.zddw" alt="" />
  245. <span>中网格</span>
  246. </div>
  247. <div @click="checkboxChange(16)" :class="checkedArray.checkedData[0] == 16 ? 'checkTypeSelect' : ''">
  248. <img :src="stores.sadianIcon.zddw" alt="" />
  249. <span>小网格</span>
  250. </div>
  251. </div>
  252. </div>
  253. </div>
  254. </el-col>
  255. </transition>
  256. <transition name="el-fade-in-linear">
  257. <el-col class="rightBox" v-show="stroes.$state.rightBtn">
  258. <div class="rightTop">
  259. <h4 style="display: flex">疏导区社会面风险评估情况</h4>
  260. <div style="display: flex;float:right;margin-top:-36px;">
  261. <el-button size="mini" @click="tabsArea = 'fx'" :class="{ btnClick: tabsArea == 'fx' }"> 风险情况 </el-button>
  262. <el-button size="mini" @click="tabsArea = 'jc'" :class="{ btnClick: tabsArea == 'jc' }"> 检查情况 </el-button>
  263. </div>
  264. <div class="rightTopContent" v-if="tabsArea == 'fx'">
  265. <el-row>
  266. <el-col :span="12">
  267. <div>
  268. <div class="left">
  269. <img src="@a/img/securityPlan/right1.png" alt="" />
  270. <div>高风险场所</div>
  271. </div>
  272. <el-row class="right">
  273. <el-col :span="24">单位总数(家)</el-col>
  274. <el-col :span="24" style="color: #ff0000">8</el-col>
  275. </el-row>
  276. </div>
  277. </el-col>
  278. <el-col :span="12">
  279. <div>
  280. <div class="left">
  281. <img src="@a/img/securityPlan/right2.png" alt="" />
  282. <div>较高风险场所</div>
  283. </div>
  284. <el-row class="right">
  285. <el-col :span="24">单位总数(家)</el-col>
  286. <el-col :span="24" style="color: #ff5a00">0</el-col>
  287. </el-row>
  288. </div>
  289. </el-col>
  290. <el-col :span="12">
  291. <div>
  292. <div class="left">
  293. <img src="@a/img/securityPlan/right3.png" alt="" />
  294. <div>一般风险场所</div>
  295. </div>
  296. <el-row class="right">
  297. <el-col :span="24">单位总数(家)</el-col>
  298. <el-col :span="24" style="color: #ffd800">6</el-col>
  299. </el-row>
  300. </div>
  301. </el-col>
  302. <el-col :span="12">
  303. <div>
  304. <div class="left">
  305. <img src="@a/img/securityPlan/right4.png" alt="" />
  306. <div>低风险场所</div>
  307. </div>
  308. <el-row class="right">
  309. <el-col :span="24">单位总数(家)</el-col>
  310. <el-col :span="24" style="color: #0084ff">18</el-col>
  311. </el-row>
  312. </div>
  313. </el-col>
  314. </el-row>
  315. </div>
  316. <div class="leftTopContent" v-if="tabsArea == 'jc'">
  317. <el-row>
  318. <el-col :span="12">
  319. <div>
  320. <div class="title">
  321. <div>检查单位数(家次)</div>
  322. </div>
  323. <div class="content">
  324. <span>6276</span>
  325. <span>同比</span>
  326. <span style="color: #fe0505">+29.48%</span>
  327. </div>
  328. </div>
  329. </el-col>
  330. <el-col :span="12">
  331. <div>
  332. <div class="title">
  333. <div>发现隐患数(处)</div>
  334. </div>
  335. <div class="content">
  336. <span>1340</span>
  337. <span>同比</span>
  338. <span style="color: #fe0505">+14.18%</span>
  339. </div>
  340. </div>
  341. </el-col>
  342. <el-col :span="12">
  343. <div>
  344. <div class="title">
  345. <div>督改隐患数(处)</div>
  346. </div>
  347. <div class="content">
  348. <span>1090</span>
  349. <span>同比</span>
  350. <span style="color: #fe0505">+7.34%</span>
  351. </div>
  352. </div>
  353. </el-col>
  354. <el-col :span="12">
  355. <div style="width: 80%">
  356. <div class="title">
  357. <div>签约承诺书(份)</div>
  358. </div>
  359. <div class="content">
  360. <span>5410</span>
  361. </div>
  362. </div>
  363. </el-col>
  364. </el-row>
  365. </div>
  366. </div>
  367. <div class="rightTop">
  368. <!-- <h4>安保推送情况</h4>
  369. <el-row class="rightTop2">
  370. <el-col :span="8" v-for="(item, index) in proptionList" :key="index">
  371. <div>
  372. <div style="text-align: center; font-size: 0.18rem">
  373. {{ item.type }}
  374. </div>
  375. <div style="height: 1.5rem">
  376. <gauge ref="gauge1" :data="item"></gauge>
  377. </div>
  378. </div>
  379. </el-col>
  380. </el-row> -->
  381. <h4>执法记录仪</h4>
  382. <el-row class="monitor-list" >
  383. <div class="list">
  384. <el-select
  385. v-model="zfjly1"
  386. placeholder="请选择执法记录仪"
  387. class="videoSelect"
  388. >
  389. <el-option
  390. v-for="item in selectVideoData"
  391. :key="item.url"
  392. :label="item.name"
  393. :value="item.url"
  394. >
  395. </el-option>
  396. </el-select>
  397. <img src="@/assets/img/home/video.jpg" alt="" v-if="!zfjly1">
  398. <iframe
  399. class="hlsVideo monitor-height"
  400. :src="zfjly1"
  401. allowfullscreen="true"
  402. ></iframe>
  403. </div>
  404. <div class="list" :offset="2">
  405. <el-select
  406. v-model="zfjly2"
  407. placeholder="请选择执法记录仪"
  408. class="videoSelect"
  409. >
  410. <el-option
  411. v-for="item in selectVideoData"
  412. :key="item.url"
  413. :label="item.name"
  414. :value="item.url"
  415. >
  416. </el-option>
  417. </el-select>
  418. <img src="@/assets/img/home/video.jpg" alt="" v-if="!zfjly2">
  419. <iframe
  420. class="hlsVideo monitor-height"
  421. :src="zfjly2"
  422. allowfullscreen="true"
  423. ></iframe>
  424. </div>
  425. </el-row>
  426. </div>
  427. <div class="rightBot">
  428. <h4>网格人员信息</h4>
  429. <div class="rightBotContent" v-if="erpData.length > 0">
  430. <el-table
  431. :data="rightArray.tableData"
  432. class="transparentTableRow"
  433. height="100%"
  434. :empty-text="dataNo2"
  435. ref="reportTable"
  436. @mouseenter="autoScroll(true)"
  437. @mouseleave="autoScroll()"
  438. >
  439. <el-table-column v-for="item in rightArray.headerData2" show-overflow-tooltip :key="item.prop" :prop="item.prop" align="left" min-width="20" :label="item.name">
  440. <template #default="scope">
  441. {{ item.prop === "type" ? "" : item.prop === "status" ? (scope.row[item.prop] == 1 ? "可用" : "不可用") : scope.row[item.prop] }}
  442. </template>
  443. </el-table-column>
  444. </el-table>
  445. </div>
  446. </div>
  447. </el-col>
  448. </transition>
  449. <!-- 普通弹框 -->
  450. <div class="tableTooltipwt sadianTankang" v-show="stores.$state.arrayList.length > 0">
  451. <img src="~@a/img/icon/close.png" alt="" class="close" @click="close" />
  452. <el-row class="tableContent">
  453. <el-col class="mk" v-for="li in stores.$state.arrayList" :key="li" v-show="li.title[1]">
  454. <p v-show="li.title[1]">{{ li.title[0] }}</p>
  455. <el-row>
  456. <el-col v-for="ch in li.children" :key="ch" :span="ch[2]" v-show="li.title[1] && ch[1]">
  457. <span class="color1">{{ ch[0] }}</span>
  458. <span class="color2">{{ ch[1] }}</span>
  459. </el-col>
  460. <el-row style="margin-top: 10px" v-if="li.type">
  461. <iframe :src="li.url" allowfullscreen="true" style="width: 100%"></iframe>
  462. </el-row>
  463. </el-row>
  464. </el-col>
  465. </el-row>
  466. </div>
  467. </el-row>
  468. </template>
  469. <script>
  470. import axios from "axios";
  471. import linstener from "@c/mixins/linstener";
  472. import map from "@c/mixins/map-data1";
  473. import gauge from "@c/gauge/index6";
  474. // import map from "@c/mixins/map-gaode-public";
  475. import category from "@c/category/index22";
  476. import unitBox from "@c/unitBox/index";
  477. import CountTo from "@/components/count-to/index.js";
  478. export default {
  479. mixins: [linstener, map],
  480. components: { category, gauge, CountTo,unitBox },
  481. data() {
  482. return {
  483. value:'1',
  484. options: [
  485. {
  486. value: '1',
  487. label: '电动自行车现状模排报告',
  488. },
  489. {
  490. value: '2',
  491. label: '宾馆酒店信息统计',
  492. },
  493. {
  494. value: '3',
  495. label: '大型商业综合体统计',
  496. },{
  497. value: '4',
  498. label: '街镇小区数量统计',
  499. },
  500. {
  501. value: '5',
  502. label: '规模租赁公寓统计',
  503. },
  504. {
  505. value: '6',
  506. label: '三合一场所信息统计',
  507. },{
  508. value: '7',
  509. label: '养老机构安全隐患清单',
  510. },
  511. {
  512. value: '8',
  513. label: '医疗机构安全隐患清单',
  514. },
  515. {
  516. value: '9',
  517. label: '重大火灾隐患单位清单',
  518. },{
  519. value: '10',
  520. label: '重点单位信息统计',
  521. },
  522. ],
  523. zfjly1:undefined,
  524. zfjly2:undefined,
  525. selectVideoData: [],
  526. tabsArea: "fx", //切换
  527. diversionArea: [
  528. { name: "疏导区总面积", value: 61.46, unit: "km²", color: "#7DD807" },
  529. { name: "华漕镇", value: 28.2, unit: "km²", color: "#01C3B4" },
  530. { name: "新虹街道", value: 19.26, unit: "km²", color: "#01C3B4" },
  531. { name: "七宝镇", value: 7, unit: "㎡", color: "#01C3B4" },
  532. { name: "虹桥镇", value: 7, unit: "km²", color: "#01C3B4" },
  533. { name: "大网格", value: 4, unit: "个", color: "#FC0609 " },
  534. { name: "中网格", value: 14, unit: "个", color: "#FD843A" },
  535. { name: "小网格", value: 103, unit: "个", color: "#7DD807" },
  536. { name: "分管领导", value: 20, unit: "人", color: "#058DFE" },
  537. { name: "增援干部", value: 11, unit: "人", color: "#058DD1" },
  538. // {name:"人员力量",value:41,unit:"人",color:"#058DD1"},
  539. ], //疏导区基本情况
  540. gridStatus: 15,
  541. dataNo: "加载中...",
  542. dataNo2: "加载中...",
  543. stores: this.$useStore(),
  544. proptionList: [
  545. {
  546. type: "已推送单位",
  547. number: 306,
  548. month: null,
  549. radio: "1",
  550. sameStatus: 2,
  551. avg: null,
  552. color: ["#BF4216 ", "#F68E6A"],
  553. },
  554. {
  555. type: "已接收单位",
  556. number: 303,
  557. month: null,
  558. radio: "1",
  559. sameStatus: 2,
  560. avg: null,
  561. color: ["#06B1B9 ", "#14E1EA"],
  562. },
  563. {
  564. type: "推送接收率",
  565. number: 99,
  566. month: null,
  567. radio: "0.99",
  568. sameStatus: 2,
  569. avg: null,
  570. color: ["#E4951E ", "#F8ED41"],
  571. },
  572. ],
  573. category: true,
  574. tableData2: [],
  575. headerData2: [
  576. { prop: "name", name: "站点名称" },
  577. { prop: "car", name: "站点车辆" },
  578. { prop: "personnel", name: "人员" },
  579. ],
  580. reportComplaintList: [
  581. { name: "火灾扑救", value: 100 },
  582. { name: "社会救助", value: 90 },
  583. { name: "抢险救援", value: 60 },
  584. ], //接处警情况
  585. checkedArray: {
  586. checkedData: [15],
  587. checkedList: [
  588. { value: 0, label: "车辆" },
  589. { value: 1, label: "历史警情" },
  590. { value: 2, label: "历史火灾" },
  591. { value: 3, label: "重点单位" },
  592. { value: 4, label: "消防站" },
  593. { value: 15, label: "中网格" },
  594. { value: 16, label: "小网格" },
  595. ],
  596. }, //类型筛选
  597. checkedSelectValue: "40",
  598. checkedSelectLabel: "消防站",
  599. checkedSelectArray: [
  600. { value: 40, label: "消防站" },
  601. { value: 41, label: "专职队" },
  602. // { value: 43, label: "城市消防站" },
  603. { value: 44, label: "企业消防队" },
  604. { value: 42, label: "街镇微型消防站" },
  605. { value: 45, label: "社区微型消防站" },
  606. { value: 46, label: "一级微型消防站" },
  607. { value: 47, label: "街镇专职消防队" },
  608. ],
  609. tableData: [
  610. {
  611. type: "火灾",
  612. policeTime: "23:00:00",
  613. alertLevel: "二级",
  614. address: "闵行区",
  615. car: "2辆",
  616. policeCause: "电器火灾",
  617. department: "吴泾支队",
  618. status: "1",
  619. callingUp: "1号",
  620. equipName: "一七",
  621. carNumber: "沪X5477应急",
  622. carStatus: "出动",
  623. disposeTime: "1:00:00",
  624. correspondent: "张三",
  625. commander: "李四",
  626. firemen: "王五",
  627. driver: "赵六",
  628. },
  629. {
  630. type: "火灾",
  631. policeTime: "23:00:00",
  632. alertLevel: "二级",
  633. address: "闵行区",
  634. car: "2辆",
  635. policeCause: "电器火灾",
  636. department: "吴泾支队",
  637. status: "1",
  638. callingUp: "1号",
  639. equipName: "一七",
  640. carNumber: "沪X5477应急",
  641. carStatus: "出动",
  642. disposeTime: "1:00:00",
  643. correspondent: "张三",
  644. commander: "李四",
  645. firemen: "王五",
  646. driver: "赵六",
  647. },
  648. {
  649. type: "火灾",
  650. policeTime: "23:00:00",
  651. alertLevel: "二级",
  652. address: "闵行区",
  653. car: "2辆",
  654. policeCause: "电器火灾",
  655. department: "吴泾支队",
  656. status: "1",
  657. callingUp: "1号",
  658. equipName: "一七",
  659. carNumber: "沪X5477应急",
  660. carStatus: "出动",
  661. disposeTime: "1:00:00",
  662. correspondent: "张三",
  663. commander: "李四",
  664. firemen: "王五",
  665. driver: "赵六",
  666. },
  667. {
  668. type: "社会救援",
  669. policeTime: "23:00:00",
  670. alertLevel: "二级",
  671. address: "闵行区",
  672. car: "2辆",
  673. policeCause: "电器火灾",
  674. department: "吴泾支队",
  675. status: "1",
  676. callingUp: "1号",
  677. equipName: "一七",
  678. carNumber: "沪X5477应急",
  679. carStatus: "出动",
  680. disposeTime: "1:00:00",
  681. correspondent: "张三",
  682. commander: "李四",
  683. firemen: "王五",
  684. driver: "赵六",
  685. },
  686. {
  687. type: "社会救援",
  688. policeTime: "23:00:00",
  689. alertLevel: "二级",
  690. address: "闵行区",
  691. car: "2辆",
  692. policeCause: "电器火灾",
  693. department: "吴泾支队",
  694. status: "1",
  695. callingUp: "1号",
  696. equipName: "一七",
  697. carNumber: "沪X5477应急",
  698. carStatus: "出动",
  699. disposeTime: "1:00:00",
  700. correspondent: "张三",
  701. commander: "李四",
  702. firemen: "王五",
  703. driver: "赵六",
  704. },
  705. {
  706. type: "社会救援",
  707. policeTime: "23:00:00",
  708. alertLevel: "二级",
  709. address: "闵行区",
  710. car: "2辆",
  711. policeCause: "电器火灾",
  712. department: "吴泾支队",
  713. status: "1",
  714. callingUp: "1号",
  715. equipName: "一七",
  716. carNumber: "沪X5477应急",
  717. carStatus: "出动",
  718. disposeTime: "1:00:00",
  719. correspondent: "张三",
  720. commander: "李四",
  721. firemen: "王五",
  722. driver: "赵六",
  723. },
  724. {
  725. type: "抢险救援",
  726. policeTime: "23:00:00",
  727. alertLevel: "二级",
  728. address: "闵行区",
  729. car: "2辆",
  730. policeCause: "电器火灾",
  731. department: "吴泾支队",
  732. status: "1",
  733. callingUp: "1号",
  734. equipName: "一七",
  735. carNumber: "沪X5477应急",
  736. carStatus: "出动",
  737. disposeTime: "1:00:00",
  738. correspondent: "张三",
  739. commander: "李四",
  740. firemen: "王五",
  741. driver: "赵六",
  742. },
  743. {
  744. type: "抢险救援",
  745. policeTime: "23:00:00",
  746. alertLevel: "二级",
  747. address: "闵行区",
  748. car: "2辆",
  749. policeCause: "电器火灾",
  750. department: "吴泾支队",
  751. status: "1",
  752. callingUp: "1号",
  753. equipName: "一七",
  754. carNumber: "沪X5477应急",
  755. carStatus: "出动",
  756. disposeTime: "1:00:00",
  757. correspondent: "张三",
  758. commander: "李四",
  759. firemen: "王五",
  760. driver: "赵六",
  761. },
  762. {
  763. type: "抢险救援",
  764. policeTime: "23:00:00",
  765. alertLevel: "二级",
  766. address: "闵行区",
  767. car: "2辆",
  768. policeCause: "电器火灾",
  769. department: "吴泾支队",
  770. status: "1",
  771. callingUp: "1号",
  772. equipName: "一七",
  773. carNumber: "沪X5477应急",
  774. carStatus: "出动",
  775. disposeTime: "1:00:00",
  776. correspondent: "张三",
  777. commander: "李四",
  778. firemen: "王五",
  779. driver: "赵六",
  780. },
  781. {
  782. type: "抢险救援",
  783. policeTime: "23:00:00",
  784. alertLevel: "二级",
  785. address: "闵行区",
  786. car: "2辆",
  787. policeCause: "电器火灾",
  788. department: "吴泾支队",
  789. status: "1",
  790. callingUp: "1号",
  791. equipName: "一七",
  792. carNumber: "沪X5477应急",
  793. carStatus: "出动",
  794. disposeTime: "1:00:00",
  795. correspondent: "张三",
  796. commander: "李四",
  797. firemen: "王五",
  798. driver: "赵六",
  799. },
  800. {
  801. type: "火灾",
  802. policeTime: "23:00:00",
  803. alertLevel: "二级",
  804. address: "闵行区",
  805. car: "2辆",
  806. policeCause: "电器火灾",
  807. department: "吴泾支队",
  808. status: "1",
  809. callingUp: "1号",
  810. equipName: "一七",
  811. carNumber: "沪X5477应急",
  812. carStatus: "出动",
  813. disposeTime: "1:00:00",
  814. correspondent: "张三",
  815. commander: "李四",
  816. firemen: "王五",
  817. driver: "赵六",
  818. },
  819. ],
  820. headerData: [
  821. { prop: "policeTime", name: "立案时间" },
  822. { prop: "alertLevel", name: "警情等级" },
  823. { prop: "address", name: "案发地址" },
  824. { prop: "car", name: "调动车辆" },
  825. // { prop: "type", name: "类型" },
  826. { prop: "policeCause", name: "原因" },
  827. { prop: "department", name: "所属中队" },
  828. { prop: "status", name: "状况" },
  829. ],
  830. erpData: [
  831. {
  832. linkPhone: "13917453877",
  833. address: "上海市闵行区新虹街道申滨南路1156号龙湖天街A栋112、115室",
  834. employeeNum: "",
  835. registrar: "市场监督管理局",
  836. companyType: "9",
  837. fireDutyName: "魏良满",
  838. delegateName: "魏静",
  839. completedTime: null,
  840. companyName: "龙湖虹桥天街",
  841. fireManageName: "魏良满",
  842. businessStatus: "开业",
  843. buildArea: "0.0",
  844. paidCapital: "500",
  845. companyId: "2DB679350A0F4023B74C4261539AA031",
  846. foundTime: null,
  847. buildingStructure: "钢筋混凝土",
  848. registeredCapital: "500",
  849. organization: "91310112MA1GEKG30K",
  850. companyNature: 9,
  851. buildingHeight: "25",
  852. fireRating: "一级",
  853. construction: null,
  854. id: 1415,
  855. },
  856. ],
  857. rightArray: {
  858. tableData: [],
  859. headerData2: [
  860. { prop: "gridArea", name: "网格区域" },
  861. { prop: "streetTown", name: "街道" },
  862. { prop: "gridPeople", name: "网格人员" },
  863. { prop: "recruiting", name: "增援干部" },
  864. { prop: "responsibilities", name: "分管领导" },
  865. ],
  866. },
  867. };
  868. },
  869. mounted() {
  870. this.grid(15);
  871. setTimeout(() => {
  872. this.autoScroll();
  873. });
  874. window.addEventListener("resize", () => this.resizeTimeActions([this.$refs.category, this.$refs.gauge1]), true);
  875. this.initMap("anbao"); //地图初始化
  876. this.anbao(null, 1);
  877. this.getFireSiteDuty(); //各站点执勤实力
  878. this.selectVideo(); //视频在线
  879. // this.sadianSelect(this.checkedArray.checkedData[0]); //撒点
  880. },
  881. methods: {
  882. beforeDestroy() {
  883. this.autoScroll(true);
  884. },
  885. /**
  886. * 在线视频
  887. */
  888. async selectVideo(id) {
  889. await axios({
  890. headers: {
  891. "Content-Type": "application/json;charset=UTF-8",
  892. },
  893. method: "get",
  894. // url: "http://32.0.15.107:8080/video-api/kiop-gateway-core/4G/device/ext?apikey=643e6591-a489-4648-ba35-c15c39c64022",
  895. 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",
  896. }).then((res) => {
  897. let arr = [];
  898. let zfjly = [];
  899. if (res.data.length > 0) {
  900. let data = res.data;
  901. for (let i = 0; i < data.length; i++) {
  902. if (data[i].otherNames?.status_name == "在线") {
  903. var num = {
  904. id: data[i].id,
  905. name: data[i]?.deviceName,
  906. groupName: data[i]?.groupName,
  907. gisX: data[i]?.longitude
  908. ? data[i]?.longitude
  909. : 0,
  910. gisY: data[i]?.latitude ? data[i]?.latitude : 0,
  911. type: "执法记录仪",
  912. gbid: data[i].gbid,
  913. url:
  914. "http://10.107.31.215:50080/dispatch-ms/#/conference/single_url?ipc_live=1&key=643e6591-a489-4648-ba35-c15c39c64022&gbids=" +
  915. data[i].gbid,
  916. };
  917. console.log(1111,num.name,data[i].gbid)
  918. arr.push(num);
  919. }
  920. }
  921. for (let i = 0; i < arr.length; i++) {
  922. if (
  923. arr[i].name.indexOf("单兵") == "-1" &&
  924. arr[i].name.indexOf("无人机") == "-1" &&
  925. arr[i].name.indexOf("布控球") == "-1"
  926. ) {
  927. zfjly.push(arr[i]);
  928. }
  929. }
  930. this.selectVideoData = zfjly;
  931. if (arr.length > 0 && id) {
  932. this.addMarker(arr, "enforcement-dynamic","执法记录仪");
  933. }
  934. }
  935. });
  936. // 测试
  937. // let arr =
  938. // [{
  939. // id: "5708ad6382517cd68ea2d2f8cd01bb58",
  940. // name: "上海闵行闵行消防站4G布控球",
  941. // groupName: "009闵行支队",
  942. // gisX: 121.386128,
  943. // gisY:31.139253 ,
  944. // type:"video",
  945. // gbid:31.01411,
  946. // type:"执法记录仪",
  947. // 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"
  948. // }
  949. // ]
  950. // if(id){
  951. // this.addMarker(arr, "enforcement-dynamic");
  952. // }
  953. },
  954. selectArray(id) {
  955. this.checkedArray.checkedData[0] = 4;
  956. let data = this.checkedSelectArray.filter((val) => {
  957. if (val.value == id) {
  958. return val.label;
  959. }
  960. });
  961. this.checkedSelectLabel = data[0].label;
  962. this.sadianSelect(data[0].value);
  963. },
  964. /**
  965. *
  966. */
  967. goBack() {
  968. this.category = true;
  969. },
  970. /**
  971. * categoryClick echarts 点击事件
  972. */
  973. categoryClick() {
  974. this.category = false;
  975. },
  976. /* 各站点执勤实力分页 */
  977. async getFireSiteDuty() {
  978. await this.$axios
  979. .get(
  980. this.$api.fireSite.page +
  981. "?" +
  982. this.$qs.stringify({
  983. current: 1,
  984. size: 100,
  985. })
  986. )
  987. .then((res) => {
  988. if (res.data.records.length > 0) {
  989. let arr = res.data.records;
  990. let data = arr.filter((item) => {
  991. let data = [];
  992. if (item.name == "华漕站" || item.name == "新虹站" || item.name == "七宝站" || item.name == "申虹站") {
  993. data.push(item);
  994. return data;
  995. }
  996. });
  997. for (let i = 0; i < data.length; i++) {
  998. data[i].cheliang = {};
  999. data[i].personnel = undefined;
  1000. data[i].car = undefined;
  1001. this.$axios
  1002. .get(
  1003. this.$api.fireSite.list +
  1004. "?" +
  1005. this.$qs.stringify({
  1006. zdCode: data[i].xfjgId,
  1007. })
  1008. )
  1009. .then((Response) => {
  1010. if (Response.data.length > 0) {
  1011. let children = Response.data;
  1012. data[i].cheliang = children;
  1013. data[i].car = children.length;
  1014. data[i].children = [];
  1015. data[i].personnel = 0;
  1016. for (let a = 0; a < children.length; a++) {
  1017. children[a].renyuan = "";
  1018. children[a].renyuanNum = 0;
  1019. if (children[a].zhy) {
  1020. children[a].renyuan = children[a].zhy + ",";
  1021. }
  1022. if (children[a].jsy) {
  1023. children[a].renyuan += children[a].jsy + ",";
  1024. }
  1025. if (children[a].txy) {
  1026. children[a].renyuan += children[a].txy + ",";
  1027. }
  1028. if (children[a].zsry) {
  1029. children[a].renyuan += children[a].zsry + ",";
  1030. }
  1031. data[i].children.push(children[a]);
  1032. if (children[a].renyuan.indexOf(",") > -1) {
  1033. children[a].renyuanNum += children[a].renyuan.match(/,/g).length;
  1034. }
  1035. data[i].personnel += children[a].renyuanNum;
  1036. }
  1037. for (let i = 0; i < data.length; i++) {
  1038. if (data[i].name == "闵行支队") {
  1039. data[i].name = "支队";
  1040. } else {
  1041. data[i].name = data[i].name.slice(0, 2);
  1042. }
  1043. }
  1044. setTimeout(() => {
  1045. this.cldt = data;
  1046. }, 1500);
  1047. }
  1048. });
  1049. }
  1050. setTimeout(() => {
  1051. this.tableData2 = data;
  1052. }, 1000);
  1053. } else {
  1054. this.dataNo = "暂未数据";
  1055. }
  1056. });
  1057. },
  1058. /**
  1059. * 撒点类型选择
  1060. */
  1061. checkboxChange(id) {
  1062. this.checkedArray.checkedData[0] = id;
  1063. if (id == 15) {
  1064. this.gridStatus = id;
  1065. this.anbao(1, 1);
  1066. this.grid(id);
  1067. } else if (id == 16) {
  1068. this.gridStatus = id;
  1069. this.grid(16, null, null, 1);
  1070. this.anbao(1, 2);
  1071. } else {
  1072. this.sadianSelect(id);
  1073. }
  1074. },
  1075. /* 历史警情 */
  1076. async historicalWarning() {
  1077. let monthDay = dayjs().subtract(30, "day").format("YYYY-MM-DD HH:mm:ss");
  1078. let today = dayjs().subtract(0, "day").format("YYYY-MM-DD HH:mm:ss");
  1079. return await this.$axios.get(
  1080. this.$api.jqzhcz.page2 +
  1081. "?" +
  1082. this.$qs.stringify({
  1083. // streetTown: this.stroes.$state.streetTown, //街镇
  1084. current: 1,
  1085. size: 150,
  1086. startTime: monthDay,
  1087. endTime: today,
  1088. })
  1089. );
  1090. },
  1091. /**
  1092. * 撒点测绘院、高德
  1093. */
  1094. sadianSelect(id) {
  1095. let type = this.checkedArray.checkedList[this.checkedArray.checkedData[0]].label;
  1096. let that = this;
  1097. let arr = [];
  1098. if (this.stroes.$state.mapBool == 1) {
  1099. if (id == 0) {
  1100. this.initMarkers(arr.slice(0, 500), "security-plan", type);
  1101. } else if (id == 1 || id == 2) {
  1102. this.historicalWarning()
  1103. .then((res) => {
  1104. if (res) {
  1105. let data = res.data.records;
  1106. arr = data;
  1107. arr = data.filter((item) => item.zhongdui === "华漕" || item.zhongdui === "新虹" || item.zhongdui === "七宝" || item.zhongdui === "虹桥");
  1108. if (id == 2) {
  1109. arr = arr.filter((item) => {
  1110. return item.ajlxdm == 1;
  1111. });
  1112. }
  1113. }
  1114. })
  1115. .then((res) => {
  1116. this.initMarkers(arr.slice(0, 500), "security-plan", type);
  1117. });
  1118. } else {
  1119. this.initMarkers([], "security-plan", type);
  1120. }
  1121. } else {
  1122. if (id == 0) {
  1123. let data = {
  1124. gisX: 121.302183,
  1125. gisY: 31.189991,
  1126. type: "国家会展中心",
  1127. };
  1128. arr.push(data);
  1129. this.sadian(arr, "security-plan", type);
  1130. }
  1131. if (id == 1 || id == 2) {
  1132. this.historicalWarning()
  1133. .then((res) => {
  1134. if (res) {
  1135. let data = res.data.records;
  1136. arr = data;
  1137. arr = data.filter((item) => item.zhongdui === "华漕" || item.zhongdui === "新虹" || item.zhongdui === "七宝" || item.zhongdui === "虹桥");
  1138. if (id == 2) {
  1139. arr = arr.filter((item) => {
  1140. return item.ajlxdm == 1;
  1141. });
  1142. }
  1143. }
  1144. })
  1145. .then((res) => {
  1146. let data = {
  1147. gisX: 121.302183,
  1148. gisY: 31.189991,
  1149. type: "国家会展中心",
  1150. };
  1151. arr.push(data);
  1152. this.sadian(arr, "security-plan", type);
  1153. });
  1154. }
  1155. if (this.checkedArray.checkedData[0] == 40) {
  1156. this.$axios
  1157. .post(this.$api.fireSite.demFireStationList, {
  1158. stationType: [1, 2, 3, 4],
  1159. })
  1160. .then((res) => {
  1161. for (let i = 0; i < res.data.length; i++) {
  1162. if (
  1163. res.data[i].streetTown.indexOf("华漕") > -1 ||
  1164. res.data[i].streetTown.indexOf("新虹") > -1 ||
  1165. res.data[i].streetTown.indexOf("七宝") > -1 ||
  1166. res.data[i].streetTown.indexOf("虹桥") > -1
  1167. ) {
  1168. res.data[i].type = "消防站";
  1169. arr.push(res.data[i]);
  1170. }
  1171. }
  1172. let data = {
  1173. gisX: 121.302183,
  1174. gisY: 31.189991,
  1175. type: "国家会展中心",
  1176. };
  1177. arr.push(data);
  1178. this.addMarker(arr, "rescue-station", "消防站");
  1179. });
  1180. }
  1181. if (id == 41) {
  1182. this.$axios
  1183. .post(this.$api.fireSite.demFireStationList, {
  1184. stationType: [4],
  1185. })
  1186. .then((res) => {
  1187. for (let i = 0; i < res.data.length; i++) {
  1188. if (
  1189. res.data[i].streetTown.indexOf("华漕") > -1 ||
  1190. res.data[i].streetTown.indexOf("新虹") > -1 ||
  1191. res.data[i].streetTown.indexOf("七宝") > -1 ||
  1192. res.data[i].streetTown.indexOf("虹桥") > -1
  1193. ) {
  1194. res.data[i].type = "专职队";
  1195. arr.push(res.data[i]);
  1196. }
  1197. }
  1198. let data = {
  1199. gisX: 121.302183,
  1200. gisY: 31.189991,
  1201. type: "国家会展中心",
  1202. };
  1203. arr.push(data);
  1204. this.addMarker(arr, "rescue-station", "专职队");
  1205. });
  1206. }
  1207. if (id == 42) {
  1208. this.$axios.get(this.$api.fireSite.demStreetMicroStationList + "?" + this.$qs.stringify({})).then((res) => {
  1209. for (let i = 0; i < res.data.length; i++) {
  1210. if (
  1211. res.data[i].streetTown.indexOf("华漕") > -1 ||
  1212. res.data[i].streetTown.indexOf("新虹") > -1 ||
  1213. res.data[i].streetTown.indexOf("七宝") > -1 ||
  1214. res.data[i].streetTown.indexOf("虹桥") > -1
  1215. ) {
  1216. res.data[i].stationType = 5;
  1217. arr.push(res.data[i]);
  1218. }
  1219. }
  1220. let data = {
  1221. gisX: 121.302183,
  1222. gisY: 31.189991,
  1223. type: "国家会展中心",
  1224. };
  1225. arr.push(data);
  1226. this.addMarker(arr, "rescue-station", "微型消防站");
  1227. });
  1228. }
  1229. if (id == 44) {
  1230. this.$axios
  1231. .post(this.$api.water.baseGgpFacilityList, {
  1232. facilityType: [13, 14],
  1233. })
  1234. .then((res) => {
  1235. for (let i = 0; i < res.data.length; i++) {
  1236. if (
  1237. res.data[i].streetTown.indexOf("华漕") > -1 ||
  1238. res.data[i].streetTown.indexOf("新虹") > -1 ||
  1239. res.data[i].streetTown.indexOf("七宝") > -1 ||
  1240. res.data[i].streetTown.indexOf("虹桥") > -1
  1241. ) {
  1242. res.data[i].stationType = 112;
  1243. arr.push(res.data[i]);
  1244. }
  1245. }
  1246. let data = {
  1247. gisX: 121.302183,
  1248. gisY: 31.189991,
  1249. type: "国家会展中心",
  1250. };
  1251. arr.push(data);
  1252. this.addMarker(arr, "rescue-station", "企业消防");
  1253. });
  1254. }
  1255. if (id == 45) {
  1256. this.$axios
  1257. .post(this.$api.water.baseGgpFacilityList, {
  1258. facilityType: [15, 16],
  1259. })
  1260. .then((res) => {
  1261. for (let i = 0; i < res.data.length; i++) {
  1262. if (
  1263. res.data[i].streetTown.indexOf("华漕") > -1 ||
  1264. res.data[i].streetTown.indexOf("新虹") > -1 ||
  1265. res.data[i].streetTown.indexOf("七宝") > -1 ||
  1266. res.data[i].streetTown.indexOf("虹桥") > -1
  1267. ) {
  1268. res.data[i].stationType = 112;
  1269. arr.push(res.data[i]);
  1270. }
  1271. }
  1272. let data = {
  1273. gisX: 121.302183,
  1274. gisY: 31.189991,
  1275. type: "国家会展中心",
  1276. };
  1277. arr.push(data);
  1278. this.addMarker(arr, "rescue-station", "社区消防");
  1279. });
  1280. }
  1281. if (id == 46) {
  1282. this.$axios
  1283. .post(this.$api.water.baseGgpFacilityList, {
  1284. facilityType: [17],
  1285. })
  1286. .then((res) => {
  1287. for (let i = 0; i < res.data.length; i++) {
  1288. if (
  1289. res.data[i].streetTown.indexOf("华漕") > -1 ||
  1290. res.data[i].streetTown.indexOf("新虹") > -1 ||
  1291. res.data[i].streetTown.indexOf("七宝") > -1 ||
  1292. res.data[i].streetTown.indexOf("虹桥") > -1
  1293. ) {
  1294. res.data[i].stationType = 17;
  1295. arr.push(res.data[i]);
  1296. }
  1297. }
  1298. let data = {
  1299. gisX: 121.302183,
  1300. gisY: 31.189991,
  1301. type: "国家会展中心",
  1302. };
  1303. arr.push(data);
  1304. this.addMarker(arr, "rescue-station", "一级微型消防站");
  1305. });
  1306. }
  1307. if (id == 47) {
  1308. this.$axios
  1309. .post(this.$api.water.baseGgpFacilityList, {
  1310. facilityType: [18],
  1311. })
  1312. .then((res) => {
  1313. for (let i = 0; i < res.data.length; i++) {
  1314. if (
  1315. res.data[i].streetTown.indexOf("华漕") > -1 ||
  1316. res.data[i].streetTown.indexOf("新虹") > -1 ||
  1317. res.data[i].streetTown.indexOf("七宝") > -1 ||
  1318. res.data[i].streetTown.indexOf("虹桥") > -1
  1319. ) {
  1320. res.data[i].stationType = 18;
  1321. arr.push(res.data[i]);
  1322. }
  1323. }
  1324. let data = {
  1325. gisX: 121.302183,
  1326. gisY: 31.189991,
  1327. type: "国家会展中心",
  1328. };
  1329. arr.push(data);
  1330. this.addMarker(arr, "rescue-station", "街镇专职消防队");
  1331. });
  1332. }
  1333. }
  1334. },
  1335. /**
  1336. * 撒点
  1337. */
  1338. sadian(data, pageType, type) {
  1339. if (this.stroes.$state.mapBool == 1) {
  1340. if (data.length > 0) {
  1341. this.initMarkers(data.slice(0, 500), pageType, type);
  1342. } else {
  1343. this.initMarkers([], pageType, type);
  1344. }
  1345. } else {
  1346. // this.anbaoMapNew(); //安保区域
  1347. if (data.length > 0) {
  1348. this.addMarker(data.slice(0, 500), pageType, type);
  1349. } else {
  1350. this.addMarker([], pageType, type);
  1351. }
  1352. }
  1353. },
  1354. /**
  1355. * 网格人员
  1356. * id 15中网格
  1357. * area 区域名称
  1358. * position 坐标
  1359. * query 查询居委会名称
  1360. */
  1361. grid(id, area, position, query) {
  1362. let querySearch = {};
  1363. let hzzx =[{
  1364. gisX: 121.302183,
  1365. gisY: 31.189991,
  1366. type: "国家会展中心",
  1367. }];
  1368. // this.sadian(hzzx, "security-plan", "国家会展中心");
  1369. if (id == 15) {
  1370. this.rightArray.headerData2 = [
  1371. { prop: "gridArea", name: "网格区域" },
  1372. { prop: "streetTown", name: "街道" },
  1373. { prop: "type1", name: "安监所人员" },
  1374. { prop: "type2", name: "城运中心人员" },
  1375. { prop: "type3", name: "消防助理员" },
  1376. ];
  1377. querySearch = {
  1378. gridArea: area,
  1379. gridGrade: 2,
  1380. };
  1381. }
  1382. if (id == 16) {
  1383. this.rightArray.headerData2 = [
  1384. { prop: "gridArea", name: "网格区域" },
  1385. { prop: "streetTown", name: "街道" },
  1386. { prop: "type1", name: "小网格人员" },
  1387. { prop: "type2", name: "小网格长" },
  1388. ];
  1389. querySearch = {
  1390. mapGridName: area,
  1391. gridGrade: 3,
  1392. };
  1393. }
  1394. this.$axios.get(this.$api.fireSite.gridMemberScatter + "?" + this.$qs.stringify(querySearch)).then((res) => {
  1395. let data = res.data;
  1396. let gridData = [];
  1397. if (data.length > 0) {
  1398. for (let i = 0; i < data.length; i++) {
  1399. if (data[i].gridMemderViceList && data[i].gridMemderViceList.length > 0) {
  1400. gridData[i] = {
  1401. gridArea: data[i].gridArea,
  1402. streetTown: data[i].streetTown,
  1403. mapGridName: data[i].mapGridName,
  1404. seniorGrid: data[i].seniorGrid,
  1405. type1: undefined,
  1406. type2: undefined,
  1407. type3: undefined,
  1408. };
  1409. if (data[i].gridMemderViceList) {
  1410. for (let ii = 0; ii < data[i].gridMemderViceList.length; ii++) {
  1411. if (id == 15) {
  1412. if (data[i].gridMemderViceList[ii].personnelType == 7) {
  1413. if (gridData[i].type1) {
  1414. gridData[i].type1 = `${gridData[i].type1}</br>${data[i].gridMemderViceList[ii].personnelName} ${data[i].gridMemderViceList[ii].phone}`;
  1415. } else {
  1416. gridData[i].type1 = `${data[i].gridMemderViceList[ii].personnelName} ${data[i].gridMemderViceList[ii].phone}`;
  1417. }
  1418. }
  1419. if (data[i].gridMemderViceList[ii].personnelType == 8) {
  1420. if (gridData[i].type2) {
  1421. gridData[i].type2 = `${gridData[i].type2}</br>${data[i].gridMemderViceList[ii].personnelName} ${data[i].gridMemderViceList[ii].phone}`;
  1422. } else {
  1423. gridData[i].type2 = `${data[i].gridMemderViceList[ii].personnelName} ${data[i].gridMemderViceList[ii].phone}`;
  1424. }
  1425. }
  1426. if (data[i].gridMemderViceList[ii].personnelType == 9) {
  1427. if (gridData[i].type3) {
  1428. gridData[i].type3 = `${gridData[i].type3}</br>${data[i].gridMemderViceList[ii].personnelName} ${data[i].gridMemderViceList[ii].phone}`;
  1429. } else {
  1430. gridData[i].type3 = `${data[i].gridMemderViceList[ii].personnelName} ${data[i].gridMemderViceList[ii].phone}`;
  1431. }
  1432. }
  1433. }
  1434. if (id == 16) {
  1435. if (data[i].gridMemderViceList[ii].personnelType == 10) {
  1436. if (gridData[i].type1) {
  1437. gridData[i].type1 = `${gridData[i].type1}</br>${data[i].gridMemderViceList[ii].personnelName} ${data[i].gridMemderViceList[ii].phone}`;
  1438. } else {
  1439. gridData[i].type1 = `${data[i].gridMemderViceList[ii].personnelName} ${data[i].gridMemderViceList[ii].phone}`;
  1440. }
  1441. }
  1442. if (data[i].gridMemderViceList[ii].personnelType == 11) {
  1443. if (gridData[i].type2) {
  1444. gridData[i].type2 = `${gridData[i].type2}</br>${data[i].gridMemderViceList[ii].personnelName} ${data[i].gridMemderViceList[ii].phone}`;
  1445. } else {
  1446. gridData[i].type2 = `${data[i].gridMemderViceList[ii].personnelName} ${data[i].gridMemderViceList[ii].phone}`;
  1447. }
  1448. }
  1449. }
  1450. }
  1451. }
  1452. }
  1453. }
  1454. if (position) {
  1455. let arr = {};
  1456. arr.type = id;
  1457. arr.name = area;
  1458. arr.position = position;
  1459. arr.content = gridData;
  1460. this.anbaoPopup(arr);
  1461. this.superiorGrid(gridData[0].seniorGrid, id == 15 ? 1 : id == 16 ? 2 : "");
  1462. } else {
  1463. }
  1464. this.rightArray.tableData = gridData;
  1465. } else {
  1466. this.dataNo2 = "暂无数据";
  1467. }
  1468. //用于地图居委会区块查询
  1469. if (query && id == 16) {
  1470. var queryData = [];
  1471. for (let i = 0; i < gridData.length; i++) {
  1472. if (gridData[i].mapGridName) {
  1473. queryData.push(gridData[i]);
  1474. }
  1475. }
  1476. this.anbao(1, 2, queryData);
  1477. }
  1478. });
  1479. },
  1480. /**
  1481. * 上级网格
  1482. * @param {*网格上级id} id
  1483. * @param {*等级} type 1镇级 2片区
  1484. */
  1485. superiorGrid(id, type) {
  1486. this.$axios
  1487. .get(
  1488. this.$api.fireSite.gridMemberScatter +
  1489. "?" +
  1490. this.$qs.stringify({
  1491. seniorGrid: id,
  1492. })
  1493. )
  1494. .then((res) => {
  1495. this.diversionArea = [];
  1496. if (res.data.length > 0) {
  1497. let data = res.data[0];
  1498. console.log(111, data, type);
  1499. if (type == 1) {
  1500. //镇级
  1501. this.diversionArea[0] = {
  1502. name: `${data.gridArea}面积`,
  1503. value: data.gridArea == "华漕镇" ? 61.46 : data.gridArea == "新虹街道" ? "19.26" : data.gridArea == "七宝镇" ? "7" : data.gridArea == "虹桥镇" ? "17" : "",
  1504. unit: "km²",
  1505. color: "#7DD807",
  1506. };
  1507. this.diversionArea[1] = {
  1508. name: "分管领导",
  1509. value: 0,
  1510. unit: "人",
  1511. color: "#01C3B4",
  1512. };
  1513. this.diversionArea[2] = {
  1514. name: "城运中心主任",
  1515. value: 0,
  1516. unit: "人",
  1517. color: "#FD843A",
  1518. };
  1519. this.diversionArea[3] = {
  1520. name: "安监所所长",
  1521. value: 0,
  1522. unit: "人",
  1523. color: "#7DD807",
  1524. };
  1525. this.diversionArea[4] = {
  1526. name: "支队外勤参谋",
  1527. value: 0,
  1528. unit: "人",
  1529. color: "#058DFE",
  1530. };
  1531. this.diversionArea[5] = {
  1532. name: "中网格",
  1533. value: data.gridArea == "华漕镇" ? 5 : data.gridArea == "新虹街道" ? "4" : data.gridArea == "七宝镇" ? "3" : data.gridArea == "虹桥镇" ? "2" : "",
  1534. unit: "个",
  1535. color: "#058DFE",
  1536. };
  1537. this.diversionArea[6] = {
  1538. name: "小网格",
  1539. value: data.gridArea == "华漕镇" ? 36 : data.gridArea == "新虹街道" ? "22" : data.gridArea == "七宝镇" ? "34" : data.gridArea == "虹桥镇" ? "11" : "",
  1540. unit: "个",
  1541. color: "#058DFE",
  1542. };
  1543. for (let i = 0; i < data.gridMemderViceList.length; i++) {
  1544. if (data.gridMemderViceList[i].personnelType == 3) {
  1545. //分管领导
  1546. this.diversionArea[1].value++;
  1547. }
  1548. if (data.gridMemderViceList[i].personnelType == 4) {
  1549. //城运中心主任
  1550. this.diversionArea[2].value++;
  1551. }
  1552. if (data.gridMemderViceList[i].personnelType == 5) {
  1553. //安监所所长
  1554. this.diversionArea[3].value++;
  1555. }
  1556. if (data.gridMemderViceList[i].personnelType == 6) {
  1557. //支队外勤参谋
  1558. this.diversionArea[4].value++;
  1559. }
  1560. }
  1561. }
  1562. if (type == 2) {
  1563. //片区
  1564. console.log(11, data);
  1565. this.diversionArea[0] = {
  1566. name: "",
  1567. value: data.gridArea,
  1568. unit: "",
  1569. color: "#7DD807",
  1570. };
  1571. this.diversionArea[1] = {
  1572. name: "安监所人员",
  1573. value: 0,
  1574. unit: "人",
  1575. color: "#01C3B4",
  1576. };
  1577. this.diversionArea[2] = {
  1578. name: "城运中心人员",
  1579. value: 0,
  1580. unit: "人",
  1581. color: "#FD843A",
  1582. };
  1583. this.diversionArea[3] = {
  1584. name: "消防助理员",
  1585. value: 0,
  1586. unit: "人",
  1587. color: "#7DD807",
  1588. };
  1589. this.diversionArea[4] = {
  1590. name: "小网格",
  1591. value:
  1592. data.gridArea == "闵S1-1(纪王西网格)"
  1593. ? "4"
  1594. : data.gridArea == "闵S1-2(纪王东网格)"
  1595. ? "6"
  1596. : data.gridArea == "闵S1-3(诸翟北网格)"
  1597. ? "12"
  1598. : data.gridArea == "闵S1-4(诸翟南网格)"
  1599. ? "8"
  1600. : data.gridArea == "闵S1-5(老华漕网格)"
  1601. ? "6"
  1602. : data.gridArea == "闵S2-1(爱博网格)"
  1603. ? "4"
  1604. : data.gridArea == "闵S2-2(华美网格)"
  1605. ? "6"
  1606. : data.gridArea == "闵S2-3(枢纽网格)"
  1607. ? "6"
  1608. : data.gridArea == "闵S2-4(航华网格)"
  1609. ? "6"
  1610. : data.gridArea == "闵S3-1(七宝北片网格)"
  1611. ? "10"
  1612. : data.gridArea == "闵S3-2(七宝吴宝路网格)"
  1613. ? "9"
  1614. : data.gridArea == "闵S3-3(七宝航华网格)"
  1615. ? "15"
  1616. : data.gridArea == "闵S4-1(紫藤红松网格)"
  1617. ? "6"
  1618. : data.gridArea == "闵S4-2(虹梅网格)"
  1619. ? "5"
  1620. : "0",
  1621. unit: "个",
  1622. color: "#7DD807",
  1623. };
  1624. for (let i = 0; i < data.gridMemderViceList.length; i++) {
  1625. if (data.gridMemderViceList[i].personnelType == 7) {
  1626. //安监所人员
  1627. this.diversionArea[1].value++;
  1628. }
  1629. if (data.gridMemderViceList[i].personnelType == 8) {
  1630. //城运中心人员
  1631. this.diversionArea[2].value++;
  1632. }
  1633. if (data.gridMemderViceList[i].personnelType == 9) {
  1634. //消防助理员
  1635. this.diversionArea[3].value++;
  1636. }
  1637. }
  1638. }
  1639. }
  1640. // diversionArea:[
  1641. // {name:"疏导区总面积",value:61.46,unit:"km²",color:"#7DD807"},
  1642. // {name:"华漕镇",value:28.2,unit:"km²",color:"#01C3B4"},
  1643. // {name:"新虹街道",value:19.26,unit:"km²",color:"#01C3B4"},
  1644. // {name:"七宝镇",value:7,unit:"㎡",color:"#01C3B4"},
  1645. // {name:"虹桥镇",value:7,unit:"km²",color:"#01C3B4"},
  1646. // {name:"大网格",value:4,unit:"个",color:"#FC0609 "},
  1647. // {name:"中网格",value:14,unit:"个",color:"#FD843A"},
  1648. // {name:"小网格",value:103,unit:"个",color:"#7DD807"},
  1649. // {name:"分管领导",value:20,unit:"人",color:"#058DFE"},
  1650. // {name:"增援干部",value:11,unit:"人",color:"#058DD1"},
  1651. // ],//疏导区基本情况
  1652. });
  1653. },
  1654. },
  1655. watch: {
  1656. "stores.$state.gridData": function (newValue, oldValue) {
  1657. if (this.gridStatus == 15) {
  1658. this.grid(15, newValue.name, newValue.position);
  1659. }
  1660. if (this.gridStatus == 16) {
  1661. this.grid(16, newValue.name, newValue.position);
  1662. }
  1663. },
  1664. },
  1665. };
  1666. </script>
  1667. <style lang="scss" scoped>
  1668. .contentBox {
  1669. .leftBox {
  1670. .leftTop {
  1671. height: 30%;
  1672. max-height: 30%;
  1673. justify-content: center;
  1674. align-items: center;
  1675. box-sizing: border-box;
  1676. .leftTopContent {
  1677. color: #ffffff;
  1678. height: calc(100% - 0.4375rem);
  1679. display: flex;
  1680. > .el-row {
  1681. width: 100%;
  1682. > .el-col {
  1683. display: flex;
  1684. > div {
  1685. margin: auto;
  1686. > .title {
  1687. width: 1.075rem;
  1688. height: 0.225rem;
  1689. font-size: 0.175rem;
  1690. padding-left: 0.1625rem;
  1691. margin: 0.0625rem 0 0.0625rem 0;
  1692. position: relative;
  1693. background-image: url(~@a/img/securityPlan/fhxcqk.png);
  1694. background-size: 100% 100%;
  1695. > div {
  1696. position: absolute;
  1697. bottom: 0.0625rem;
  1698. width: 150%;
  1699. }
  1700. }
  1701. > .content {
  1702. > span:nth-child(1) {
  1703. font-size: 0.3rem;
  1704. padding: 0 0.5625rem 0 0.1625rem;
  1705. color: #73fbfd;
  1706. }
  1707. > span:nth-child(2) {
  1708. font-size: 0.175rem;
  1709. margin-right: 0.125rem;
  1710. }
  1711. > span:nth-child(3) {
  1712. font-size: 0.175rem;
  1713. }
  1714. }
  1715. }
  1716. }
  1717. }
  1718. }
  1719. .leftTopContent2 {
  1720. color: #fff;
  1721. font-size: 0.175rem;
  1722. .el-row {
  1723. > div {
  1724. width: 20%;
  1725. margin-top: 40px;
  1726. p:nth-child(2) {
  1727. // text-align: center;
  1728. strong {
  1729. font-size: 0.2rem;
  1730. }
  1731. }
  1732. }
  1733. }
  1734. }
  1735. }
  1736. .leftCenter {
  1737. height: calc(30% - 0.125rem);
  1738. max-height: calc(30% - 0.125rem);
  1739. margin-top: 0.125rem;
  1740. width: 100%;
  1741. justify-content: center;
  1742. align-items: center;
  1743. // box-sizing: border-box;
  1744. color: #ffffff;
  1745. .leftCenterContent {
  1746. width: 100%;
  1747. height: calc(100% - 0.4375rem);
  1748. display: flex;
  1749. .content1,
  1750. .content2,
  1751. .content3 {
  1752. width: 33.33%;
  1753. overflow: hidden;
  1754. margin: auto 0;
  1755. > div:nth-child(1) {
  1756. display: flex;
  1757. > img {
  1758. width: 1.17rem; //大屏
  1759. height: 1.08rem; //大屏
  1760. margin: auto;
  1761. }
  1762. }
  1763. > div:nth-child(2) {
  1764. font-size: 0.2rem;
  1765. text-align: center;
  1766. & > span {
  1767. b {
  1768. margin-right: 0.0625rem;
  1769. font-size: 0.3rem;
  1770. line-height: 0.5rem;
  1771. }
  1772. }
  1773. p {
  1774. margin-top: 0.1rem;
  1775. color: #fff;
  1776. }
  1777. }
  1778. }
  1779. }
  1780. }
  1781. .rightCenter {
  1782. color: #ffffff;
  1783. height: calc(35% - 0.125rem);
  1784. max-height: calc(35% - 0.125rem);
  1785. margin-top: 0.125rem;
  1786. .rightTopContent {
  1787. width: 100%;
  1788. padding: 0.25rem 0 10px 0;
  1789. height: calc(100% - 0.8125rem);
  1790. .content {
  1791. height: 100%;
  1792. overflow: scroll;
  1793. position: relative;
  1794. & > .el-row {
  1795. overflow: hidden;
  1796. width: 100%;
  1797. height: auto;
  1798. & > .title {
  1799. width: 100%;
  1800. height: 0.4375rem;
  1801. line-height: 0.4375rem;
  1802. font-size: 0.175rem;
  1803. padding: 0 0.125rem;
  1804. background: rgba(115, 251, 253, 0.3) !important;
  1805. margin-bottom: 0.025rem;
  1806. }
  1807. & > .data {
  1808. width: 100%;
  1809. font-size: 0.175rem;
  1810. padding: 0 0.125rem;
  1811. background: rgba(115, 251, 253, 0.1) !important;
  1812. margin-bottom: 0.025rem;
  1813. white-space: initial;
  1814. .el-col {
  1815. line-height: 0.35rem;
  1816. span {
  1817. color: #73fbfd;
  1818. }
  1819. }
  1820. }
  1821. }
  1822. &::-webkit-scrollbar {
  1823. display: none;
  1824. }
  1825. }
  1826. }
  1827. }
  1828. }
  1829. .rightBox {
  1830. color: #ffffff;
  1831. .rightTop {
  1832. height: 30%;
  1833. max-height: 30%;
  1834. .rightTopContent {
  1835. width: 100%;
  1836. height: calc(100% - 0.4375rem);
  1837. display: flex;
  1838. > .el-row {
  1839. > .el-col {
  1840. display: flex;
  1841. margin: auto 0;
  1842. > div {
  1843. display: flex;
  1844. .left {
  1845. width: 1.375rem;
  1846. margin-right: 0.25rem;
  1847. div {
  1848. text-align: center;
  1849. font-size: 0.175rem;
  1850. overflow: hidden !important;
  1851. white-space: nowrap !important;
  1852. text-overflow: ellipsis !important;
  1853. }
  1854. img {
  1855. width: 0.675rem;
  1856. height: 0.675rem;
  1857. display: flex;
  1858. margin: auto auto 0.0625rem auto;
  1859. }
  1860. }
  1861. .right {
  1862. overflow: hidden !important;
  1863. white-space: nowrap !important;
  1864. text-overflow: ellipsis !important;
  1865. .el-col:nth-child(1) {
  1866. display: flex;
  1867. margin: auto 0 0 0;
  1868. font-size: 0.175rem;
  1869. }
  1870. .el-col:nth-child(2) {
  1871. display: flex;
  1872. margin: auto 0 0 0;
  1873. font-size: 0.3rem;
  1874. font-weight: bold;
  1875. }
  1876. }
  1877. }
  1878. }
  1879. }
  1880. }
  1881. }
  1882. .leftTopContent {
  1883. color: #ffffff;
  1884. height: calc(100% - 0.4375rem);
  1885. display: flex;
  1886. > .el-row {
  1887. width: 100%;
  1888. > .el-col {
  1889. display: flex;
  1890. > div {
  1891. margin: auto;
  1892. > .title {
  1893. width: 1.075rem;
  1894. height: 0.225rem;
  1895. font-size: 0.175rem;
  1896. padding-left: 0.1625rem;
  1897. margin: 0.0625rem 0 0.0625rem 0;
  1898. position: relative;
  1899. background-image: url(~@a/img/securityPlan/fhxcqk.png);
  1900. background-size: 100% 100%;
  1901. > div {
  1902. position: absolute;
  1903. bottom: 0.0625rem;
  1904. width: 150%;
  1905. }
  1906. }
  1907. > .content {
  1908. > span:nth-child(1) {
  1909. font-size: 0.3rem;
  1910. padding: 0 0.5625rem 0 0.1625rem;
  1911. color: #73fbfd;
  1912. }
  1913. > span:nth-child(2) {
  1914. font-size: 0.175rem;
  1915. margin-right: 0.125rem;
  1916. }
  1917. > span:nth-child(3) {
  1918. font-size: 0.175rem;
  1919. }
  1920. }
  1921. }
  1922. }
  1923. }
  1924. }
  1925. .leftBot {
  1926. height: calc(35% - 0.125rem);
  1927. max-height: calc(35% - 0.125rem);
  1928. margin-top: 0.125rem;
  1929. width: 100%;
  1930. .leftBotContent {
  1931. padding: 0.25rem 0 0 0;
  1932. height: calc(100% - 0.6875rem);
  1933. }
  1934. }
  1935. .rightBot {
  1936. height: calc(39% - 0.125rem);
  1937. max-height: calc(35% - 0.125rem);
  1938. margin-top: 0.125rem;
  1939. .rightBotContent {
  1940. padding: 0.25rem 0 0 0;
  1941. height: 100%;
  1942. }
  1943. }
  1944. }
  1945. }
  1946. .returnText {
  1947. width: 0.5rem;
  1948. text-align: center;
  1949. height: 0.3rem;
  1950. line-height: 0.3rem;
  1951. box-shadow: inset 0 0 0.05rem 0.05rem #1b4f90;
  1952. background: rgba(19, 42, 90, 0.2) !important;
  1953. color: #fff;
  1954. float: right;
  1955. margin-top: 0.1rem;
  1956. }
  1957. .leftBotContent2 {
  1958. height: 23%;
  1959. margin-top: -35%;
  1960. }
  1961. .rightTop2 {
  1962. > .el-col {
  1963. > div {
  1964. > div:nth-child(1) {
  1965. margin: 0.3rem 0;
  1966. }
  1967. > div:nth-child(3) {
  1968. width: 50%;
  1969. margin: 0.2rem auto;
  1970. padding: 0.075rem;
  1971. border-radius: 0.25rem;
  1972. box-shadow: inset 0 0 0.05rem 0.05rem rgba(27, 79, 144, 1);
  1973. background: rgba(#132a5a, 0.2) !important;
  1974. span {
  1975. margin-left: 0.075rem;
  1976. }
  1977. }
  1978. }
  1979. }
  1980. }
  1981. .monitor-list {
  1982. overflow: hidden;
  1983. margin-top:0.25rem;
  1984. > .list {
  1985. border: 1px solid #3a7e8e;
  1986. position: relative;
  1987. width:48%;
  1988. height:21vh;
  1989. box-sizing: border-box;
  1990. .videoSelect {
  1991. position: absolute;
  1992. width: 100%;
  1993. }
  1994. img{
  1995. width:100%;
  1996. height:192px;
  1997. overflow: hidden;
  1998. }
  1999. }
  2000. .list:nth-child(2){
  2001. margin-left:4%;
  2002. }
  2003. }
  2004. iframe {
  2005. border: none;
  2006. width:100%;
  2007. }
  2008. </style>
  2009. <style>
  2010. .el-tooltip__popper {
  2011. width: 200px;
  2012. }
  2013. .table-tooltip {
  2014. max-width: 200px;
  2015. }
  2016. .table-style .cell {
  2017. width: 200px;
  2018. overflow: hidden;
  2019. text-overflow: ellipsis;
  2020. white-space: nowrap;
  2021. }
  2022. .el-popper {
  2023. max-width: 30%;
  2024. padding-bottom: 5px !important;
  2025. display: -webkit-box;
  2026. overflow: hidden;
  2027. text-overflow: ellipsis;
  2028. -webkit-line-clamp: 15;
  2029. -webkit-box-orient: vertical;
  2030. }
  2031. </style>