security-plan.vue 71 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614
  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. </div>
  15. </div>
  16. <div class="rightCenter">
  17. <h4>执勤战备力量部署</h4>
  18. <div class="rightTopContent">
  19. <el-table :data="tableData2" class="transparentTableRow" height="100%" :empty-text="dataNo">
  20. <el-table-column type="expand">
  21. <template #default="props">
  22. <template v-if="props.row.children">
  23. <template v-for="(item, ind) in props.row.children" :key="ind">
  24. <el-row class="tableExpendTitle" style="margin-top: 10px">
  25. 状态:{{ item.carStatus }}({{
  26. item.equipTypeName
  27. ? item.equipTypeName +
  28. ","
  29. : ""
  30. }}{{ item.renyuanNum }}人)
  31. </el-row>
  32. <el-row class="tableExpendcontent">
  33. <el-col>
  34. <div>
  35. 车牌号:<span style="
  36. color: #6ff3f6;
  37. ">{{
  38. item.cphm
  39. }}</span>
  40. </div>
  41. </el-col>
  42. <el-col v-if="item.zhy" :span="12">
  43. <div>
  44. 指挥员:<span style="
  45. color: #6ff3f6;
  46. ">{{
  47. item.zhy
  48. }}</span>
  49. </div>
  50. </el-col>
  51. <el-col v-if="item.txy" :span="12">
  52. <div>
  53. 通讯员:<span style="
  54. color: #6ff3f6;
  55. ">{{
  56. item.txy
  57. }}</span>
  58. </div>
  59. </el-col>
  60. <el-col v-if="item.jsy" :span="12">
  61. <div>
  62. 驾驶员:<span style="
  63. color: #6ff3f6;
  64. ">{{
  65. item.jsy
  66. }}</span>
  67. </div>
  68. </el-col>
  69. <el-col v-if="item.zsry" :span="24">
  70. <div>
  71. 战士人员:<span style="
  72. color: #6ff3f6;
  73. ">{{
  74. item.zsry
  75. }}</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"
  84. :prop="item.prop" align="center" min-width="20" :label="item.name">
  85. <template v-if="item.prop === 'car'" #default="scope">
  86. <span style="color: #6ff3f6">{{
  87. scope.row.car
  88. }}</span>
  89. </template>
  90. <template v-if="item.prop === 'personnel'" #default="scope">
  91. <span style="color: #6ff3f6">{{
  92. scope.row.personnel
  93. }}</span>
  94. </template>
  95. </el-table-column>
  96. </el-table>
  97. </div>
  98. </div>
  99. <div class="leftCenter">
  100. <h4 class="h4Top">接警处置情况</h4>
  101. <category ref="category" v-show="category" :dataMap="reportComplaintList.map((val, ind) => val.value)"
  102. :xData="reportComplaintList.map((val, ind) => val.name)" :isSlice="10" :width="40" color="#73FBFD"
  103. @echartsClick="categoryClick"></category>
  104. <div @click="goBack" class="return" v-if="!category">
  105. <div class="returnText">返回</div>
  106. </div>
  107. </div>
  108. <div class="leftBotContent2">
  109. <el-table v-if="!category" :data="tableData" class="transparentTableRow" height="100%" ref="reportTable"
  110. @mouseenter="autoScroll(true)" @mouseleave="autoScroll()">
  111. <el-table-column v-for="item in headerData" show-overflow-tooltip :key="item.prop" :prop="item.prop"
  112. align="center" min-width="20" :label="item.name">
  113. <template #default="scope">
  114. {{
  115. item.prop === "type"
  116. ? ""
  117. : item.prop === "status"
  118. ? scope.row[item.prop] == 1
  119. ? "可用"
  120. : "不可用"
  121. : scope.row[item.prop]
  122. }}
  123. </template>
  124. </el-table-column>
  125. </el-table>
  126. </div>
  127. </el-col>
  128. </transition>
  129. <transition name="el-fade-in-linear">
  130. <el-col class="centerBox" style="width: 100%">
  131. <div :class="stroes.$state.leftBtn ? 'leftBtn btnW' : 'leftBtn0 btnW'
  132. " @click="stroes.leftBtnClick()">
  133. <img src="@/assets/img/svg/left.svg" alt="" class="img" />
  134. </div>
  135. <el-col class="centerContent" id="mapF"></el-col>
  136. <div :class="stroes.$state.rightBtn
  137. ? 'rightBtn btnW'
  138. : 'rightBtn0 btnW'
  139. " @click="stroes.rightBtnClick()">
  140. <img src="@/assets/img/svg/left.svg" alt="" class="img" />
  141. </div>
  142. <div class="mapTips_type">
  143. <img src="@/assets/img/svg/danweitop.svg" alt="" class="img" />
  144. <div class="content">
  145. <p>类型筛选</p>
  146. <div class="selectType">
  147. <div @click="checkboxChange(0)" :class="checkedArray.checkedData[0] == 0
  148. ? 'checkTypeSelect'
  149. : ''
  150. ">
  151. <img :src="stores.sadianIcon.xfc" alt="" />
  152. <span>车辆</span>
  153. </div>
  154. <div @click="checkboxChange(1)" :class="checkedArray.checkedData[0] == 1
  155. ? 'checkTypeSelect'
  156. : ''
  157. ">
  158. <img :src="stores.sadianIcon.lsjq" alt="" />
  159. <span>历史警情</span>
  160. </div>
  161. <div @click="checkboxChange(2)" :class="checkedArray.checkedData[0] == 2
  162. ? 'checkTypeSelect'
  163. : ''
  164. ">
  165. <img :src="stores.sadianIcon.lshz" alt="" />
  166. <span>历史火灾</span>
  167. </div>
  168. <div @click="checkboxChange(3)" :class="checkedArray.checkedData[0] == 3
  169. ? 'checkTypeSelect'
  170. : ''
  171. ">
  172. <img :src="stores.sadianIcon.zddw" alt="" />
  173. <span>重点单位</span>
  174. </div>
  175. <div :class="checkedArray.checkedData[0] == 4 ? 'checkTypeSelect' :
  176. checkedArray.checkedData[0] == 40 ? 'checkTypeSelect' :
  177. checkedArray.checkedData[0] == 41 ? 'checkTypeSelect' :
  178. checkedArray.checkedData[0] == 42 ? 'checkTypeSelect' :
  179. checkedArray.checkedData[0] == 43 ? 'checkTypeSelect' :
  180. checkedArray.checkedData[0] == 44 ? 'checkTypeSelect' :
  181. checkedArray.checkedData[0] == 45 ? 'checkTypeSelect' :
  182. checkedSelectValue == '46' ? stores.sadianIcon.yjxfz :
  183. checkedSelectValue == '47' ? stores.sadianIcon.jzzzxfd :
  184. ' '
  185. ">
  186. <img :src="checkedSelectValue == '40' ? stores.sadianIcon.xfz :
  187. checkedSelectValue == '41' ? stores.sadianIcon.zzd :
  188. checkedSelectValue == '42' ? stores.sadianIcon.jzwxxfz :
  189. checkedSelectValue == '43' ? stores.sadianIcon.csxfz :
  190. checkedSelectValue == '44' ? stores.sadianIcon.qyxfd :
  191. checkedSelectValue == '45' ? stores.sadianIcon.sqwxxfz :
  192. checkedSelectValue == '46' ? stores.sadianIcon.sqwxxfz :
  193. checkedSelectValue == '47' ? stores.sadianIcon.sqwxxfz :
  194. stores.sadianIcon.xfz
  195. " alt="" />
  196. <span>{{ checkedSelectLabel }}</span>
  197. <el-select v-model="checkedSelectValue" placeholder="消防站" class="selectTypeIcon"
  198. style="display: inline-block; width:100%;position:absolute;right:0"
  199. @change="selectArray">
  200. <el-option v-for="item in checkedSelectArray" :key="item.value" :label="item.label"
  201. :value="item.value">
  202. </el-option>
  203. </el-select>
  204. </div>
  205. <div @click="checkboxChange(15)" :class="checkedArray.checkedData[0] == 15
  206. ? 'checkTypeSelect'
  207. : ''
  208. ">
  209. <img :src="stores.sadianIcon.zddw" alt="" />
  210. <span>中网格</span>
  211. </div>
  212. <div @click="checkboxChange(16)" :class="checkedArray.checkedData[0] == 16
  213. ? 'checkTypeSelect'
  214. : ''
  215. ">
  216. <img :src="stores.sadianIcon.zddw" alt="" />
  217. <span>小网格</span>
  218. </div>
  219. </div>
  220. </div>
  221. </div>
  222. </el-col>
  223. </transition>
  224. <transition name="el-fade-in-linear">
  225. <el-col class="rightBox" v-show="stroes.$state.rightBtn">
  226. <div class="rightTop">
  227. <h4>疏导区社会面风险评估情况</h4>
  228. <div class="rightTopContent">
  229. <el-row>
  230. <el-col :span="12">
  231. <div>
  232. <div class="left">
  233. <img src="@a/img/securityPlan/right1.png" alt="" />
  234. <div>高风险场所</div>
  235. </div>
  236. <el-row class="right">
  237. <el-col :span="24">单位总数(家)</el-col>
  238. <el-col :span="24" style="color: #ff0000">8</el-col>
  239. </el-row>
  240. </div>
  241. </el-col>
  242. <el-col :span="12">
  243. <div>
  244. <div class="left">
  245. <img src="@a/img/securityPlan/right2.png" alt="" />
  246. <div>较高风险场所</div>
  247. </div>
  248. <el-row class="right">
  249. <el-col :span="24">单位总数(家)</el-col>
  250. <el-col :span="24" style="color: #ff5a00">0</el-col>
  251. </el-row>
  252. </div>
  253. </el-col>
  254. <el-col :span="12">
  255. <div>
  256. <div class="left">
  257. <img src="@a/img/securityPlan/right3.png" alt="" />
  258. <div>一般风险场所</div>
  259. </div>
  260. <el-row class="right">
  261. <el-col :span="24">单位总数(家)</el-col>
  262. <el-col :span="24" style="color: #ffd800">6</el-col>
  263. </el-row>
  264. </div>
  265. </el-col>
  266. <el-col :span="12">
  267. <div>
  268. <div class="left">
  269. <img src="@a/img/securityPlan/right4.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: #0084ff">18</el-col>
  275. </el-row>
  276. </div>
  277. </el-col>
  278. </el-row>
  279. </div>
  280. </div>
  281. <div class="rightTop" >
  282. <h4>安保推送情况</h4>
  283. <el-row class="rightTop2">
  284. <el-col :span="8" v-for="(item, index) in proptionList" :key="index">
  285. <div>
  286. <div style="text-align: center;font-size:0.18rem">
  287. {{ item.type }}
  288. </div>
  289. <div style="height: 1.5rem">
  290. <gauge ref="gauge1" :data="item"></gauge>
  291. </div>
  292. </div>
  293. </el-col>
  294. </el-row>
  295. </div>
  296. <div class="rightBot">
  297. <h4>网格人员信息</h4>
  298. <div class="rightBotContent" v-if="erpData.length > 0">
  299. <el-table :data="rightArray.tableData" class="transparentTableRow" height="100%" :empty-text="dataNo" ref="reportTable" @mouseenter="autoScroll(true)"
  300. @mouseleave="autoScroll()">
  301. <el-table-column v-for="item in rightArray.headerData2" show-overflow-tooltip :key="item.prop"
  302. :prop="item.prop" align="center" min-width="20" :label="item.name">
  303. <template #default="scope">
  304. {{
  305. item.prop === "type"
  306. ? ""
  307. : item.prop === "status"
  308. ? scope.row[item.prop] == 1
  309. ? "可用"
  310. : "不可用"
  311. : scope.row[item.prop]
  312. }}
  313. </template>
  314. </el-table-column>
  315. </el-table>
  316. </div>
  317. </div>
  318. </el-col>
  319. </transition>
  320. </el-row>
  321. </template>
  322. <script>
  323. import linstener from "@c/mixins/linstener";
  324. import map from "@c/mixins/map-data1";
  325. import gauge from "@c/gauge/index6";
  326. // import map from "@c/mixins/map-gaode-public";
  327. import category from "@c/category/index22";
  328. import CountTo from '@/components/count-to/index.js'
  329. export default {
  330. mixins: [linstener, map],
  331. components: { category, gauge, CountTo },
  332. data() {
  333. return {
  334. diversionArea:[
  335. {
  336. name:"华漕镇",
  337. value:28.2,
  338. unit:"km²",
  339. },
  340. {
  341. name:"新虹街道",
  342. value:19.26,
  343. unit:"km²",
  344. },
  345. {
  346. name:"七宝镇",
  347. value:7.51,
  348. unit:"km²",
  349. },
  350. {
  351. name:"虹桥镇",
  352. value:4.03,
  353. unit:"km²",
  354. },
  355. {
  356. name:"大网格",
  357. value:4,
  358. unit:"个",
  359. },
  360. {
  361. name:"中网格",
  362. value:14,
  363. unit:"个",
  364. },
  365. {
  366. name:"小网格",
  367. value:103,
  368. unit:"个",
  369. },
  370. {
  371. name:"分管领导",
  372. value:20,
  373. unit:"位",
  374. },
  375. {
  376. name:"增援干部",
  377. value:11,
  378. unit:"位",
  379. },
  380. ],//疏导区
  381. gridStatus:2,
  382. dataNo: "加载中...",
  383. stores: this.$useStore(),
  384. proptionList: [
  385. {
  386. "type": "已推送单位",
  387. "number": 306,
  388. "month": null,
  389. "radio": "1",
  390. "sameStatus": 2,
  391. "avg": null,
  392. "color": [
  393. "#BF4216 ",
  394. "#F68E6A"
  395. ]
  396. },
  397. {
  398. "type": "已接收单位",
  399. "number": 303,
  400. "month": null,
  401. "radio": "1",
  402. "sameStatus": 2,
  403. "avg": null,
  404. "color": [
  405. "#06B1B9 ",
  406. "#14E1EA"
  407. ]
  408. },
  409. {
  410. "type": "推送接收率",
  411. "number": 99,
  412. "month": null,
  413. "radio": "0.99",
  414. "sameStatus": 2,
  415. "avg": null,
  416. "color": [
  417. "#E4951E ",
  418. "#F8ED41"
  419. ]
  420. }
  421. ],
  422. category: true,
  423. tableData2: [],
  424. headerData2: [
  425. { prop: "name", name: "站点名称" },
  426. { prop: "car", name: "站点车辆" },
  427. { prop: "personnel", name: "人员" },
  428. ],
  429. reportComplaintList: [
  430. { name: "火灾扑救", value: 100 },
  431. { name: "社会救助", value: 90 },
  432. { name: "抢险救援", value: 60 },
  433. ], //接处警情况
  434. checkedArray: {
  435. checkedData: [15],
  436. checkedList: [
  437. { value: 0, label: "车辆" },
  438. { value: 1, label: "历史警情" },
  439. { value: 2, label: "历史火灾" },
  440. { value: 3, label: "重点单位" },
  441. { value: 4, label: "消防站" },
  442. { value: 15, label: "中网格" },
  443. { value: 16, label: "小网格" },
  444. ],
  445. }, //类型筛选
  446. checkedSelectValue: "40",
  447. checkedSelectLabel: "消防站",
  448. checkedSelectArray: [
  449. { value: 40, label: "消防站" },
  450. { value: 41, label: "专职队" },
  451. // { value: 43, label: "城市消防站" },
  452. { value: 44, label: "企业消防队" },
  453. { value: 42, label: "街镇微型消防站" },
  454. { value: 45, label: "社区微型消防站" },
  455. { value: 46, label: "一级微型消防站" },
  456. { value: 47, label: "街镇专职消防队" },
  457. ],
  458. tableData: [
  459. {
  460. type: "火灾",
  461. policeTime: "23:00:00",
  462. alertLevel: "二级",
  463. address: "闵行区",
  464. car: "2辆",
  465. policeCause: "电器火灾",
  466. department: "吴泾支队",
  467. status: "1",
  468. callingUp: "1号",
  469. equipName: "一七",
  470. carNumber: "沪X5477应急",
  471. carStatus: "出动",
  472. disposeTime: "1:00:00",
  473. correspondent: "张三",
  474. commander: "李四",
  475. firemen: "王五",
  476. driver: "赵六",
  477. },
  478. {
  479. type: "火灾",
  480. policeTime: "23:00:00",
  481. alertLevel: "二级",
  482. address: "闵行区",
  483. car: "2辆",
  484. policeCause: "电器火灾",
  485. department: "吴泾支队",
  486. status: "1",
  487. callingUp: "1号",
  488. equipName: "一七",
  489. carNumber: "沪X5477应急",
  490. carStatus: "出动",
  491. disposeTime: "1:00:00",
  492. correspondent: "张三",
  493. commander: "李四",
  494. firemen: "王五",
  495. driver: "赵六",
  496. },
  497. {
  498. type: "火灾",
  499. policeTime: "23:00:00",
  500. alertLevel: "二级",
  501. address: "闵行区",
  502. car: "2辆",
  503. policeCause: "电器火灾",
  504. department: "吴泾支队",
  505. status: "1",
  506. callingUp: "1号",
  507. equipName: "一七",
  508. carNumber: "沪X5477应急",
  509. carStatus: "出动",
  510. disposeTime: "1:00:00",
  511. correspondent: "张三",
  512. commander: "李四",
  513. firemen: "王五",
  514. driver: "赵六",
  515. },
  516. {
  517. type: "社会救援",
  518. policeTime: "23:00:00",
  519. alertLevel: "二级",
  520. address: "闵行区",
  521. car: "2辆",
  522. policeCause: "电器火灾",
  523. department: "吴泾支队",
  524. status: "1",
  525. callingUp: "1号",
  526. equipName: "一七",
  527. carNumber: "沪X5477应急",
  528. carStatus: "出动",
  529. disposeTime: "1:00:00",
  530. correspondent: "张三",
  531. commander: "李四",
  532. firemen: "王五",
  533. driver: "赵六",
  534. },
  535. {
  536. type: "社会救援",
  537. policeTime: "23:00:00",
  538. alertLevel: "二级",
  539. address: "闵行区",
  540. car: "2辆",
  541. policeCause: "电器火灾",
  542. department: "吴泾支队",
  543. status: "1",
  544. callingUp: "1号",
  545. equipName: "一七",
  546. carNumber: "沪X5477应急",
  547. carStatus: "出动",
  548. disposeTime: "1:00:00",
  549. correspondent: "张三",
  550. commander: "李四",
  551. firemen: "王五",
  552. driver: "赵六",
  553. },
  554. {
  555. type: "社会救援",
  556. policeTime: "23:00:00",
  557. alertLevel: "二级",
  558. address: "闵行区",
  559. car: "2辆",
  560. policeCause: "电器火灾",
  561. department: "吴泾支队",
  562. status: "1",
  563. callingUp: "1号",
  564. equipName: "一七",
  565. carNumber: "沪X5477应急",
  566. carStatus: "出动",
  567. disposeTime: "1:00:00",
  568. correspondent: "张三",
  569. commander: "李四",
  570. firemen: "王五",
  571. driver: "赵六",
  572. },
  573. {
  574. type: "抢险救援",
  575. policeTime: "23:00:00",
  576. alertLevel: "二级",
  577. address: "闵行区",
  578. car: "2辆",
  579. policeCause: "电器火灾",
  580. department: "吴泾支队",
  581. status: "1",
  582. callingUp: "1号",
  583. equipName: "一七",
  584. carNumber: "沪X5477应急",
  585. carStatus: "出动",
  586. disposeTime: "1:00:00",
  587. correspondent: "张三",
  588. commander: "李四",
  589. firemen: "王五",
  590. driver: "赵六",
  591. },
  592. {
  593. type: "抢险救援",
  594. policeTime: "23:00:00",
  595. alertLevel: "二级",
  596. address: "闵行区",
  597. car: "2辆",
  598. policeCause: "电器火灾",
  599. department: "吴泾支队",
  600. status: "1",
  601. callingUp: "1号",
  602. equipName: "一七",
  603. carNumber: "沪X5477应急",
  604. carStatus: "出动",
  605. disposeTime: "1:00:00",
  606. correspondent: "张三",
  607. commander: "李四",
  608. firemen: "王五",
  609. driver: "赵六",
  610. },
  611. {
  612. type: "抢险救援",
  613. policeTime: "23:00:00",
  614. alertLevel: "二级",
  615. address: "闵行区",
  616. car: "2辆",
  617. policeCause: "电器火灾",
  618. department: "吴泾支队",
  619. status: "1",
  620. callingUp: "1号",
  621. equipName: "一七",
  622. carNumber: "沪X5477应急",
  623. carStatus: "出动",
  624. disposeTime: "1:00:00",
  625. correspondent: "张三",
  626. commander: "李四",
  627. firemen: "王五",
  628. driver: "赵六",
  629. },
  630. {
  631. type: "抢险救援",
  632. policeTime: "23:00:00",
  633. alertLevel: "二级",
  634. address: "闵行区",
  635. car: "2辆",
  636. policeCause: "电器火灾",
  637. department: "吴泾支队",
  638. status: "1",
  639. callingUp: "1号",
  640. equipName: "一七",
  641. carNumber: "沪X5477应急",
  642. carStatus: "出动",
  643. disposeTime: "1:00:00",
  644. correspondent: "张三",
  645. commander: "李四",
  646. firemen: "王五",
  647. driver: "赵六",
  648. },
  649. {
  650. type: "火灾",
  651. policeTime: "23:00:00",
  652. alertLevel: "二级",
  653. address: "闵行区",
  654. car: "2辆",
  655. policeCause: "电器火灾",
  656. department: "吴泾支队",
  657. status: "1",
  658. callingUp: "1号",
  659. equipName: "一七",
  660. carNumber: "沪X5477应急",
  661. carStatus: "出动",
  662. disposeTime: "1:00:00",
  663. correspondent: "张三",
  664. commander: "李四",
  665. firemen: "王五",
  666. driver: "赵六",
  667. },
  668. ],
  669. headerData: [
  670. { prop: "policeTime", name: "立案时间" },
  671. { prop: "alertLevel", name: "警情等级" },
  672. { prop: "address", name: "案发地址" },
  673. { prop: "car", name: "调动车辆" },
  674. // { prop: "type", name: "类型" },
  675. { prop: "policeCause", name: "原因" },
  676. { prop: "department", name: "所属中队" },
  677. { prop: "status", name: "状况" },
  678. ],
  679. erpData: [
  680. {
  681. linkPhone: "13917453877",
  682. address:
  683. "上海市闵行区新虹街道申滨南路1156号龙湖天街A栋112、115室",
  684. employeeNum: "",
  685. registrar: "市场监督管理局",
  686. companyType: "9",
  687. fireDutyName: "魏良满",
  688. delegateName: "魏静",
  689. completedTime: null,
  690. companyName: "龙湖虹桥天街",
  691. fireManageName: "魏良满",
  692. businessStatus: "开业",
  693. buildArea: "0.0",
  694. paidCapital: "500",
  695. companyId: "2DB679350A0F4023B74C4261539AA031",
  696. foundTime: null,
  697. buildingStructure: "钢筋混凝土",
  698. registeredCapital: "500",
  699. organization: "91310112MA1GEKG30K",
  700. companyNature: 9,
  701. buildingHeight: "25",
  702. fireRating: "一级",
  703. construction: null,
  704. id: 1415,
  705. },
  706. ],
  707. rightArray: {
  708. tableData: [
  709. ],
  710. headerData2: [
  711. { prop: "gridArea", name: "网格区域" },
  712. { prop: "streetTown", name: "街道" },
  713. { prop: "gridPeople", name: "网格人员" },
  714. { prop: "recruiting", name: "增援干部" },
  715. { prop: "responsibilities", name: "分管领导" },
  716. ],
  717. },
  718. };
  719. },
  720. mounted() {
  721. this.grid(2)
  722. setTimeout(()=>{
  723. this.autoScroll()
  724. })
  725. window.addEventListener(
  726. "resize",
  727. () => this.resizeTimeActions([this.$refs.category, this.$refs.gauge1,]),
  728. true
  729. );
  730. this.initMap("anbao"); //地图初始化
  731. this.anbao(null, 1)
  732. this.getFireSiteDuty(); //各站点执勤实力
  733. // this.sadianSelect(this.checkedArray.checkedData[0]); //撒点
  734. },
  735. methods: {
  736. beforeDestroy() {
  737. this.autoScroll(true)
  738. },
  739. selectArray(id) {
  740. this.checkedArray.checkedData[0] = 4
  741. let data = this.checkedSelectArray.filter((val) => {
  742. if (val.value == id) {
  743. return val.label
  744. }
  745. })
  746. this.checkedSelectLabel = data[0].label
  747. this.sadianSelect(data[0].value)
  748. },
  749. /**
  750. *
  751. */
  752. goBack() {
  753. this.category = true
  754. },
  755. /**
  756. * categoryClick echarts 点击事件
  757. */
  758. categoryClick() {
  759. this.category = false
  760. },
  761. /* 各站点执勤实力分页 */
  762. async getFireSiteDuty() {
  763. await this.$axios
  764. .get(
  765. this.$api.fireSite.page +
  766. "?" +
  767. this.$qs.stringify({
  768. current: 1,
  769. size: 100,
  770. })
  771. )
  772. .then((res) => {
  773. if (res.data.records.length > 0) {
  774. let arr = res.data.records;
  775. let data = arr.filter((item) => {
  776. let data = []
  777. if (item.name == "华漕站" || item.name == "新虹站" || item.name == "七宝站" || item.name == "申虹站") {
  778. data.push(item)
  779. return data
  780. }
  781. })
  782. for (let i = 0; i < data.length; i++) {
  783. data[i].cheliang = {};
  784. data[i].personnel = undefined;
  785. data[i].car = undefined;
  786. this.$axios
  787. .get(
  788. this.$api.fireSite.list +
  789. "?" +
  790. this.$qs.stringify({
  791. zdCode: data[i].xfjgId,
  792. })
  793. )
  794. .then((Response) => {
  795. if (Response.data.length > 0) {
  796. let children = Response.data;
  797. data[i].cheliang = children;
  798. data[i].car = children.length;
  799. data[i].children = [];
  800. data[i].personnel = 0;
  801. for (
  802. let a = 0;
  803. a < children.length;
  804. a++
  805. ) {
  806. children[a].renyuan = "";
  807. children[a].renyuanNum = 0;
  808. if (children[a].zhy) {
  809. children[a].renyuan =
  810. children[a].zhy + ",";
  811. }
  812. if (children[a].jsy) {
  813. children[a].renyuan +=
  814. children[a].jsy + ",";
  815. }
  816. if (children[a].txy) {
  817. children[a].renyuan +=
  818. children[a].txy + ",";
  819. }
  820. if (children[a].zsry) {
  821. children[a].renyuan +=
  822. children[a].zsry + ",";
  823. }
  824. data[i].children.push(children[a]);
  825. if (
  826. children[a].renyuan.indexOf(
  827. ","
  828. ) > -1
  829. ) {
  830. children[a].renyuanNum +=
  831. children[a].renyuan.match(
  832. /,/g
  833. ).length;
  834. }
  835. data[i].personnel +=
  836. children[a].renyuanNum;
  837. }
  838. for (let i = 0; i < data.length; i++) {
  839. if (data[i].name == "闵行支队") {
  840. data[i].name = "支队";
  841. } else {
  842. data[i].name = data[
  843. i
  844. ].name.slice(0, 2);
  845. }
  846. }
  847. setTimeout(() => {
  848. this.cldt = data;
  849. }, 1500);
  850. }
  851. });
  852. }
  853. setTimeout(() => {
  854. this.tableData2 = data;
  855. }, 1000);
  856. } else {
  857. this.dataNo = "暂未数据"
  858. }
  859. });
  860. },
  861. /**
  862. * 撒点类型选择
  863. */
  864. checkboxChange(id) {
  865. this.checkedArray.checkedData[0] = id;
  866. if (id == 15) {
  867. this.gridStatus = id
  868. this.anbao(1, 1)
  869. this.grid(2)
  870. } else if (id == 16) {
  871. this.gridStatus = id
  872. this.anbao(1, 2)
  873. this.grid(3)
  874. } else {
  875. this.sadianSelect(id);
  876. }
  877. },
  878. /* 历史警情 */
  879. async historicalWarning() {
  880. let monthDay = dayjs()
  881. .subtract(30, "day")
  882. .format("YYYY-MM-DD HH:mm:ss");
  883. let today = dayjs()
  884. .subtract(0, "day")
  885. .format("YYYY-MM-DD HH:mm:ss");
  886. return await this.$axios.get(
  887. this.$api.jqzhcz.page2 +
  888. "?" +
  889. this.$qs.stringify({
  890. // streetTown: this.stroes.$state.streetTown, //街镇
  891. current: 1,
  892. size: 150,
  893. startTime: monthDay,
  894. endTime: today,
  895. })
  896. );
  897. },
  898. /**
  899. * 撒点测绘院、高德
  900. */
  901. sadianSelect(id) {
  902. let type =
  903. this.checkedArray.checkedList[this.checkedArray.checkedData[0]]
  904. .label;
  905. let that = this;
  906. let arr = [];
  907. if (this.stroes.$state.mapBool == 1) {
  908. if (id == 0) {
  909. this.initMarkers(arr.slice(0, 500), "security-plan", type);
  910. } else if (id == 1 || id == 2) {
  911. this.historicalWarning()
  912. .then((res) => {
  913. if (res) {
  914. let data = res.data.records;
  915. arr = data
  916. arr = data.filter(
  917. (item) =>
  918. item.zhongdui === "华漕" ||
  919. item.zhongdui === "新虹" ||
  920. item.zhongdui === "七宝" ||
  921. item.zhongdui === "虹桥"
  922. );
  923. if (id == 2) {
  924. arr = arr.filter((item) => {
  925. return item.ajlxdm == 1;
  926. });
  927. }
  928. }
  929. })
  930. .then((res) => {
  931. this.initMarkers(arr.slice(0, 500), "security-plan", type);
  932. });
  933. } else {
  934. this.initMarkers([], "security-plan", type);
  935. }
  936. } else {
  937. if (id == 0) {
  938. let data = {
  939. gisX: 121.302183,
  940. gisY: 31.189991,
  941. type: "国家会展中心",
  942. }
  943. arr.push(data)
  944. this.sadian(arr, "security-plan", type);
  945. }
  946. if (id == 1 || id == 2) {
  947. this.historicalWarning()
  948. .then((res) => {
  949. if (res) {
  950. let data = res.data.records;
  951. arr = data
  952. arr = data.filter(
  953. (item) =>
  954. item.zhongdui === "华漕" ||
  955. item.zhongdui === "新虹" ||
  956. item.zhongdui === "七宝" ||
  957. item.zhongdui === "虹桥"
  958. );
  959. if (id == 2) {
  960. arr = arr.filter((item) => {
  961. return item.ajlxdm == 1;
  962. });
  963. }
  964. }
  965. })
  966. .then((res) => {
  967. let data = {
  968. gisX: 121.302183,
  969. gisY: 31.189991,
  970. type: "国家会展中心",
  971. }
  972. arr.push(data)
  973. this.sadian(arr, "security-plan", type);
  974. });
  975. }
  976. if (this.checkedArray.checkedData[0] == 40) {
  977. this.$axios.post(this.$api.fireSite.demFireStationList,
  978. {
  979. stationType: [1, 2, 3, 4]
  980. }
  981. ).then((res) => {
  982. for (let i = 0; i < res.data.length; i++) {
  983. if (res.data[i].streetTown.indexOf("华漕") > -1 || res.data[i].streetTown.indexOf("新虹") > -1 || res.data[i].streetTown.indexOf("七宝") > -1 || res.data[i].streetTown.indexOf("虹桥") > -1) {
  984. res.data[i].type = "消防站"
  985. arr.push(res.data[i])
  986. }
  987. }
  988. let data = {
  989. gisX: 121.302183,
  990. gisY: 31.189991,
  991. type: "国家会展中心",
  992. }
  993. arr.push(data)
  994. this.addMarker(arr, "rescue-station", "消防站");
  995. });
  996. }
  997. if (id == 41) {
  998. this.$axios.post(this.$api.fireSite.demFireStationList,
  999. {
  1000. stationType: [4]
  1001. }
  1002. ).then((res) => {
  1003. for (let i = 0; i < res.data.length; i++) {
  1004. if (res.data[i].streetTown.indexOf("华漕") > -1 || res.data[i].streetTown.indexOf("新虹") > -1 || res.data[i].streetTown.indexOf("七宝") > -1 || res.data[i].streetTown.indexOf("虹桥") > -1) {
  1005. res.data[i].type = "专职队"
  1006. arr.push(res.data[i])
  1007. }
  1008. }
  1009. let data = {
  1010. gisX: 121.302183,
  1011. gisY: 31.189991,
  1012. type: "国家会展中心",
  1013. }
  1014. arr.push(data)
  1015. this.addMarker(arr, "rescue-station", "专职队");
  1016. });
  1017. }
  1018. if (id == 42) {
  1019. this.$axios.get(this.$api.fireSite.demStreetMicroStationList + "?" +
  1020. this.$qs.stringify({
  1021. })).then((res) => {
  1022. for (let i = 0; i < res.data.length; i++) {
  1023. if (res.data[i].streetTown.indexOf("华漕") > -1 || res.data[i].streetTown.indexOf("新虹") > -1 || res.data[i].streetTown.indexOf("七宝") > -1 || res.data[i].streetTown.indexOf("虹桥") > -1) {
  1024. res.data[i].stationType = 5
  1025. arr.push(res.data[i])
  1026. }
  1027. }
  1028. let data = {
  1029. gisX: 121.302183,
  1030. gisY: 31.189991,
  1031. type: "国家会展中心",
  1032. }
  1033. arr.push(data)
  1034. this.addMarker(arr, "rescue-station", "微型消防站");
  1035. });
  1036. }
  1037. if (id == 44) {
  1038. this.$axios.post(this.$api.water.baseGgpFacilityList, {
  1039. "facilityType": [
  1040. 13, 14
  1041. ],
  1042. }).then((res) => {
  1043. for (let i = 0; i < res.data.length; i++) {
  1044. if (res.data[i].streetTown.indexOf("华漕") > -1 || res.data[i].streetTown.indexOf("新虹") > -1 || res.data[i].streetTown.indexOf("七宝") > -1 || res.data[i].streetTown.indexOf("虹桥") > -1) {
  1045. res.data[i].stationType = 112
  1046. arr.push(res.data[i])
  1047. }
  1048. }
  1049. let data = {
  1050. gisX: 121.302183,
  1051. gisY: 31.189991,
  1052. type: "国家会展中心",
  1053. }
  1054. arr.push(data)
  1055. this.addMarker(arr, "rescue-station", "企业消防");
  1056. });
  1057. }
  1058. if (id == 45) {
  1059. this.$axios.post(this.$api.water.baseGgpFacilityList, {
  1060. "facilityType": [
  1061. 15, 16
  1062. ],
  1063. }).then((res) => {
  1064. for (let i = 0; i < res.data.length; i++) {
  1065. if (res.data[i].streetTown.indexOf("华漕") > -1 || res.data[i].streetTown.indexOf("新虹") > -1 || res.data[i].streetTown.indexOf("七宝") > -1 || res.data[i].streetTown.indexOf("虹桥") > -1) {
  1066. res.data[i].stationType = 112
  1067. arr.push(res.data[i])
  1068. }
  1069. }
  1070. let data = {
  1071. gisX: 121.302183,
  1072. gisY: 31.189991,
  1073. type: "国家会展中心",
  1074. }
  1075. arr.push(data)
  1076. this.addMarker(arr, "rescue-station", "社区消防");
  1077. });
  1078. }
  1079. if (id == 46) {
  1080. this.$axios.post(this.$api.water.baseGgpFacilityList, {
  1081. "facilityType": [
  1082. 17
  1083. ],
  1084. }).then((res) => {
  1085. for (let i = 0; i < res.data.length; i++) {
  1086. if (res.data[i].streetTown.indexOf("华漕") > -1 || res.data[i].streetTown.indexOf("新虹") > -1 || res.data[i].streetTown.indexOf("七宝") > -1 || res.data[i].streetTown.indexOf("虹桥") > -1) {
  1087. res.data[i].stationType = 17
  1088. arr.push(res.data[i])
  1089. }
  1090. }
  1091. let data = {
  1092. gisX: 121.302183,
  1093. gisY: 31.189991,
  1094. type: "国家会展中心",
  1095. }
  1096. arr.push(data)
  1097. this.addMarker(arr, "rescue-station", "一级微型消防站");
  1098. });
  1099. }
  1100. if (id == 47) {
  1101. this.$axios.post(this.$api.water.baseGgpFacilityList, {
  1102. "facilityType": [
  1103. 18
  1104. ],
  1105. }).then((res) => {
  1106. for (let i = 0; i < res.data.length; i++) {
  1107. if (res.data[i].streetTown.indexOf("华漕") > -1 || res.data[i].streetTown.indexOf("新虹") > -1 || res.data[i].streetTown.indexOf("七宝") > -1 || res.data[i].streetTown.indexOf("虹桥") > -1) {
  1108. res.data[i].stationType = 18
  1109. arr.push(res.data[i])
  1110. }
  1111. }
  1112. let data = {
  1113. gisX: 121.302183,
  1114. gisY: 31.189991,
  1115. type: "国家会展中心",
  1116. }
  1117. arr.push(data)
  1118. this.addMarker(arr, "rescue-station", "街镇专职消防队");
  1119. });
  1120. }
  1121. }
  1122. },
  1123. /**
  1124. * 撒点
  1125. */
  1126. sadian(data, pageType, type) {
  1127. if (this.stroes.$state.mapBool == 1) {
  1128. if (data.length > 0) {
  1129. this.initMarkers(data.slice(0, 500), pageType, type);
  1130. } else {
  1131. this.initMarkers([], pageType, type);
  1132. }
  1133. } else {
  1134. // this.anbaoMapNew(); //安保区域
  1135. if (data.length > 0) {
  1136. this.addMarker(data.slice(0, 500), pageType, type);
  1137. } else {
  1138. this.addMarker([], pageType, type);
  1139. }
  1140. }
  1141. },
  1142. /**
  1143. * 网格人员
  1144. * id 2中网格 3小网格
  1145. */
  1146. grid(id,area) {
  1147. if(id == 2){
  1148. this.rightArray.headerData2 = [
  1149. { prop: "gridArea", name: "网格区域" },
  1150. { prop: "streetTown", name: "街道" },
  1151. { prop: "type1", name: "安监所人员" },
  1152. { prop: "type2", name: "城运中心人员" },
  1153. { prop: "type3", name: "消防助理员" },
  1154. ]
  1155. }
  1156. if(id == 3){
  1157. this.rightArray.headerData2 = [
  1158. { prop: "gridArea", name: "网格区域" },
  1159. { prop: "streetTown", name: "街道" },
  1160. { prop: "type1", name: "小网格人员" },
  1161. { prop: "type2", name: "小网格长" },
  1162. ]
  1163. }
  1164. this.$axios.get(this.$api.fireSite.gridMemberScatter +
  1165. "?" +
  1166. this.$qs.stringify({
  1167. gridArea: area,
  1168. gridGrade: id,
  1169. })).then(res => {
  1170. let data = res.data
  1171. let gridData = []
  1172. if (data.length > 0) {
  1173. for (let i = 0; i < data.length; i++) {
  1174. if (data[i].gridMemderViceList && data[i].gridMemderViceList.length > 0) {
  1175. gridData[i] = {
  1176. gridArea: data[i].gridArea,
  1177. streetTown: data[i].streetTown,
  1178. type1: undefined,
  1179. type2: undefined,
  1180. type3: undefined
  1181. }
  1182. if(data[i].gridMemderViceList){
  1183. for (let ii = 0; ii < data[i].gridMemderViceList.length; ii++) {
  1184. if(id == 2){
  1185. if (data[i].gridMemderViceList[ii].personnelType == 7) {
  1186. if (gridData[i].type1) {
  1187. gridData[i].type1 = `${gridData[i].type1}</br>${data[i].gridMemderViceList[ii].personnelName} ${data[i].gridMemderViceList[ii].phone}`
  1188. } else {
  1189. gridData[i].type1 = `${data[i].gridMemderViceList[ii].personnelName} ${data[i].gridMemderViceList[ii].phone}`
  1190. }
  1191. }
  1192. if (data[i].gridMemderViceList[ii].personnelType == 8) {
  1193. if (gridData[i].type2) {
  1194. gridData[i].type2 = `${gridData[i].type2}</br>${data[i].gridMemderViceList[ii].personnelName} ${data[i].gridMemderViceList[ii].phone}`
  1195. } else {
  1196. gridData[i].type2 = `${data[i].gridMemderViceList[ii].personnelName} ${data[i].gridMemderViceList[ii].phone}`
  1197. }
  1198. }
  1199. if (data[i].gridMemderViceList[ii].personnelType == 9) {
  1200. if (gridData[i].type3) {
  1201. gridData[i].type3 = `${gridData[i].type3}</br>${data[i].gridMemderViceList[ii].personnelName} ${data[i].gridMemderViceList[ii].phone}`
  1202. } else {
  1203. gridData[i].type3 = `${data[i].gridMemderViceList[ii].personnelName} ${data[i].gridMemderViceList[ii].phone}`
  1204. }
  1205. }
  1206. }
  1207. if(id == 3){
  1208. if (data[i].gridMemderViceList[ii].personnelType == 10) {
  1209. if (gridData[i].type1) {
  1210. gridData[i].type1 = `${gridData[i].type1}</br>${data[i].gridMemderViceList[ii].personnelName} ${data[i].gridMemderViceList[ii].phone}`
  1211. } else {
  1212. gridData[i].type1 = `${data[i].gridMemderViceList[ii].personnelName} ${data[i].gridMemderViceList[ii].phone}`
  1213. }
  1214. }
  1215. if (data[i].gridMemderViceList[ii].personnelType == 11) {
  1216. if (gridData[i].type2) {
  1217. gridData[i].type2 = `${gridData[i].type2}</br>${data[i].gridMemderViceList[ii].personnelName} ${data[i].gridMemderViceList[ii].phone}`
  1218. } else {
  1219. gridData[i].type2 = `${data[i].gridMemderViceList[ii].personnelName} ${data[i].gridMemderViceList[ii].phone}`
  1220. }
  1221. }
  1222. }
  1223. }
  1224. }
  1225. }
  1226. }
  1227. }
  1228. this.rightArray.tableData = gridData
  1229. })
  1230. }
  1231. },
  1232. watch:{
  1233. "stores.$state.gridName": function(newValue, oldValue) {
  1234. if(this.gridStatus == 2){
  1235. this.grid(2,newValue)
  1236. }
  1237. if(this.gridStatus == 3){
  1238. this.grid(2,newValue)
  1239. }
  1240. }
  1241. }
  1242. };
  1243. </script>
  1244. <style lang="scss" scoped>
  1245. .contentBox {
  1246. .leftBox {
  1247. .leftTop {
  1248. height: 30%;
  1249. max-height: 30%;
  1250. justify-content: center;
  1251. align-items: center;
  1252. box-sizing: border-box;
  1253. .leftTopContent {
  1254. color: #ffffff;
  1255. height: calc(100% - 0.4375rem);
  1256. display: flex;
  1257. >.el-row {
  1258. width: 100%;
  1259. >.el-col {
  1260. display: flex;
  1261. >div {
  1262. margin: auto;
  1263. >.title {
  1264. width: 1.075rem;
  1265. height: 0.225rem;
  1266. font-size: 0.175rem;
  1267. padding-left: 0.1625rem;
  1268. margin: 0.0625rem 0 0.0625rem 0;
  1269. position: relative;
  1270. background-image: url(~@a/img/securityPlan/fhxcqk.png);
  1271. background-size: 100% 100%;
  1272. >div {
  1273. position: absolute;
  1274. bottom: 0.0625rem;
  1275. width: 150%;
  1276. }
  1277. }
  1278. >.content {
  1279. >span:nth-child(1) {
  1280. font-size: 0.3rem;
  1281. padding: 0 0.5625rem 0 0.1625rem;
  1282. color: #73fbfd;
  1283. }
  1284. >span:nth-child(2) {
  1285. font-size: 0.175rem;
  1286. margin-right: 0.125rem;
  1287. }
  1288. >span:nth-child(3) {
  1289. font-size: 0.175rem;
  1290. }
  1291. }
  1292. }
  1293. }
  1294. }
  1295. }
  1296. .leftTopContent2 {
  1297. color: #fff;
  1298. font-size: 0.175rem;
  1299. .el-row {
  1300. >div {
  1301. width: 20%;
  1302. margin-top: 40px;
  1303. p:nth-child(2) {
  1304. // text-align: center;
  1305. strong {
  1306. font-size: 0.2rem;
  1307. }
  1308. }
  1309. }
  1310. }
  1311. }
  1312. }
  1313. .leftCenter {
  1314. height: calc(30% - 0.125rem);
  1315. max-height: calc(30% - 0.125rem);
  1316. margin-top: 0.125rem;
  1317. width: 100%;
  1318. justify-content: center;
  1319. align-items: center;
  1320. // box-sizing: border-box;
  1321. color: #ffffff;
  1322. .leftCenterContent {
  1323. width: 100%;
  1324. height: calc(100% - 0.4375rem);
  1325. display: flex;
  1326. .content1,
  1327. .content2,
  1328. .content3 {
  1329. width: 33.33%;
  1330. overflow: hidden;
  1331. margin: auto 0;
  1332. >div:nth-child(1) {
  1333. display: flex;
  1334. >img {
  1335. width: 1.17rem; //大屏
  1336. height: 1.08rem; //大屏
  1337. margin: auto;
  1338. }
  1339. }
  1340. >div:nth-child(2) {
  1341. font-size: 0.2rem;
  1342. text-align: center;
  1343. &>span {
  1344. b {
  1345. margin-right: 0.0625rem;
  1346. font-size: 0.3rem;
  1347. line-height: 0.5rem;
  1348. }
  1349. }
  1350. p {
  1351. margin-top: 0.1rem;
  1352. color: #fff;
  1353. }
  1354. }
  1355. }
  1356. }
  1357. }
  1358. .rightCenter {
  1359. color: #ffffff;
  1360. height: calc(35% - 0.125rem);
  1361. max-height: calc(35% - 0.125rem);
  1362. margin-top: 0.125rem;
  1363. .rightTopContent {
  1364. width: 100%;
  1365. padding: 0.25rem 0 10px 0;
  1366. height: calc(100% - 0.8125rem);
  1367. .content {
  1368. height: 100%;
  1369. overflow: scroll;
  1370. position: relative;
  1371. &>.el-row {
  1372. overflow: hidden;
  1373. width: 100%;
  1374. height: auto;
  1375. &>.title {
  1376. width: 100%;
  1377. height: 0.4375rem;
  1378. line-height: 0.4375rem;
  1379. font-size: 0.175rem;
  1380. padding: 0 0.125rem;
  1381. background: rgba(115, 251, 253, 0.3) !important;
  1382. margin-bottom: 0.025rem;
  1383. }
  1384. &>.data {
  1385. width: 100%;
  1386. font-size: 0.175rem;
  1387. padding: 0 0.125rem;
  1388. background: rgba(115, 251, 253, 0.1) !important;
  1389. margin-bottom: 0.025rem;
  1390. white-space: initial;
  1391. .el-col {
  1392. line-height: 0.35rem;
  1393. span {
  1394. color: #73fbfd;
  1395. }
  1396. }
  1397. }
  1398. }
  1399. &::-webkit-scrollbar {
  1400. display: none;
  1401. }
  1402. }
  1403. }
  1404. }
  1405. }
  1406. .rightBox {
  1407. color: #ffffff;
  1408. .rightTop {
  1409. height: 30%;
  1410. max-height: 30%;
  1411. .rightTopContent {
  1412. width: 100%;
  1413. height: calc(100% - 0.4375rem);
  1414. display: flex;
  1415. >.el-row {
  1416. >.el-col {
  1417. display: flex;
  1418. margin: auto 0;
  1419. >div {
  1420. display: flex;
  1421. .left {
  1422. width: 1.375rem;
  1423. margin-right: 0.25rem;
  1424. div {
  1425. text-align: center;
  1426. font-size: 0.175rem;
  1427. overflow: hidden !important;
  1428. white-space: nowrap !important;
  1429. text-overflow: ellipsis !important;
  1430. }
  1431. img {
  1432. width: 0.675rem;
  1433. height: 0.675rem;
  1434. display: flex;
  1435. margin: auto auto 0.0625rem auto;
  1436. }
  1437. }
  1438. .right {
  1439. overflow: hidden !important;
  1440. white-space: nowrap !important;
  1441. text-overflow: ellipsis !important;
  1442. .el-col:nth-child(1) {
  1443. display: flex;
  1444. margin: auto 0 0 0;
  1445. font-size: 0.175rem;
  1446. }
  1447. .el-col:nth-child(2) {
  1448. display: flex;
  1449. margin: auto 0 0 0;
  1450. font-size: 0.3rem;
  1451. font-weight: bold;
  1452. }
  1453. }
  1454. }
  1455. }
  1456. }
  1457. }
  1458. }
  1459. .leftBot {
  1460. height: calc(35% - 0.125rem);
  1461. max-height: calc(35% - 0.125rem);
  1462. margin-top: 0.125rem;
  1463. width: 100%;
  1464. .leftBotContent {
  1465. padding: 0.25rem 0 0 0;
  1466. height: calc(100% - 0.6875rem);
  1467. }
  1468. }
  1469. .rightBot {
  1470. height: calc(39% - 0.125rem);
  1471. max-height: calc(35% - 0.125rem);
  1472. margin-top: 0.125rem;
  1473. .rightBotContent {
  1474. padding: 0.25rem 0 0 0;
  1475. height: 100%;
  1476. }
  1477. }
  1478. }
  1479. }
  1480. .returnText {
  1481. width: 0.5rem;
  1482. text-align: center;
  1483. height: 0.3rem;
  1484. line-height: 0.3rem;
  1485. box-shadow: inset 0 0 0.05rem 0.05rem #1b4f90;
  1486. background: rgba(19, 42, 90, 0.2) !important;
  1487. color: #fff;
  1488. float: right;
  1489. margin-top: 0.1rem;
  1490. }
  1491. .leftBotContent2 {
  1492. height: 23%;
  1493. margin-top: -35%;
  1494. }
  1495. .rightTop2 {
  1496. >.el-col {
  1497. >div {
  1498. >div:nth-child(1) {
  1499. margin: 0.3rem 0;
  1500. }
  1501. >div:nth-child(3) {
  1502. width: 50%;
  1503. margin: 0.2rem auto;
  1504. padding: .075rem;
  1505. border-radius: .25rem;
  1506. box-shadow: inset 0 0 0.05rem 0.05rem rgba(27, 79, 144, 1);
  1507. background: rgba(#132A5A, 0.2) !important;
  1508. span {
  1509. margin-left: 0.075rem
  1510. }
  1511. }
  1512. }
  1513. }
  1514. }
  1515. </style>
  1516. <style>
  1517. .el-tooltip__popper{ width:200px }
  1518. .table-tooltip{
  1519. max-width: 200px;
  1520. }
  1521. .table-style .cell{
  1522. width:200px;
  1523. overflow: hidden;
  1524. text-overflow: ellipsis;
  1525. white-space: nowrap;
  1526. }
  1527. .el-popper {
  1528. max-width: 30%;
  1529. padding-bottom: 5px !important;
  1530. display: -webkit-box;
  1531. overflow: hidden;
  1532. text-overflow: ellipsis;
  1533. -webkit-line-clamp: 15;
  1534. -webkit-box-orient: vertical;
  1535. }
  1536. </style>