mapComponent.vue 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774
  1. <template>
  2. <div class="mapComponent">
  3. <div class="top-num-max-box">
  4. <div class="for-address-box" v-for="(item,index) in addressList" :key="index">
  5. <p class="el-icon-d-arrow-right icon-p" v-if="index != 0"></p>
  6. <p class="name-p">{{item}}</p>
  7. </div>
  8. <img class="num-img" src="@/assets/ZDimages/icon_bg_rs@1x.png">
  9. <p class="name-p">实时人数</p>
  10. <div class="for-p" v-for="(item,index) in floorUserNum" :key="item.value">
  11. <p>{{item.label}}</p>
  12. </div>
  13. <p class="name-p" style="margin-left:10px;">人</p>
  14. </div>
  15. <!--楼层图/楼层选择-->
  16. <div class="content-map-select-box">
  17. <!--楼层图-->
  18. <div class="content-map-box">
  19. <div class="newEvacuation-map-max-big-box"
  20. v-if="mapType"
  21. :style="'width:'+mapData.width+'px;height:'+mapData.height+'px;transform: scale('+mapData.zoomData+');margin-top:-'+mapData.height/2+'px;margin-left:-'+mapData.width/2+'px;'">
  22. <div class="newEvacuation-map-big-box"
  23. :style="'width:'+mapData.width+'px;height:'+mapData.height+'px;'">
  24. <div class="newEvacuation-map-for-box for-map-box-one" @click="planButton('on',item)"
  25. v-for="(item,index) in mapList" :key="item.key" v-if="item.type == 1"
  26. :style="'top:'+item.y+'px;left:'+item.x+'px;width:'+item.w+'px;height:'+item.h+'px;'+(item.levelColor?'background-color:'+item.levelColor+';':'')">
  27. <div class="newEvacuation-map-for-min-box">
  28. <!--名称/实验室名称-->
  29. <!--<el-tooltip class="item" effect="dark" :content="item.roomType == '-99'?item.roomName:(item.subName?item.subName:'未绑定')" placement="top">-->
  30. <!--<p class="map-for-name-p" :style="'margin-top:'+((item.h/2)-20)+'px;'">{{item.roomType == '-99'?item.roomName:(item.subName?item.subName:'未绑定')}}</p>-->
  31. <!--</el-tooltip>-->
  32. <!--编号-->
  33. <el-tooltip class="item" effect="dark" :content="item.roomNum" placement="top">
  34. <p class="map-for-num-p" :style="'height:'+item.h+'px;line-height:'+item.h+'px;'">{{item.roomNum}}</p>
  35. </el-tooltip>
  36. <!--门-->
  37. <div class="position-box"
  38. :class="minItem.toward=='top'?'center-move-door-p-t':(minItem.toward=='bottom'?'center-move-door-p-b':(minItem.toward=='left'?'center-move-door-p-l':(minItem.toward=='right'?'center-move-door-p-r':'')))"
  39. v-for="(minItem,minIndex) in item.doorList" :key="minIndex"
  40. :style="'top:'+minItem.y+'px;left:'+minItem.x+'px;width:'+minItem.w+'px;height:'+minItem.h+'px;'"></div>
  41. <!--报警灯-->
  42. <img class="plan-img plan-img-animation" src="@/assets/ZDimages/emergencyManagement/img_fjbj_jb@1x.png" v-if="item.planType">
  43. <!--实验室人数-->
  44. <div v-if="item.onLineNum!=null && item.onLineNum > 0" class="user-num-box" :class="item.doorList[0].toward == 'top'?'user-num-two':'user-num-one'">
  45. <img src="@/assets/ZDimages/emergencyManagement/icon_pmt_ry.png">
  46. <p>{{item.onLineNum}} 人</p>
  47. </div>
  48. </div>
  49. </div>
  50. <div class="newEvacuation-map-for-box for-map-box"
  51. v-for="(item,indexOne) in mapList" :key="item.key" v-if="item.type == 2"
  52. :style="'top:'+item.y+'px;left:'+item.x+'px;width:'+item.w+'px;height:'+item.h+'px;'">
  53. <div class="newEvacuation-map-for-min-box">
  54. <!--灯-->
  55. <!--<div class="position-box"-->
  56. <!--:class="-->
  57. <!--minItem.state=='1'&&minItem.openType?'lightTopOn':(minItem.state=='1'&&!minItem.openType?'lightTopOff':-->
  58. <!--(minItem.state=='2'&&minItem.openType?'lightBottomOn':(minItem.state=='2'&&!minItem.openType?'lightBottomOff':-->
  59. <!--(minItem.state=='3'&&minItem.openType?'lightLeftOn':(minItem.state=='3'&&!minItem.openType?'lightLeftOff':-->
  60. <!--(minItem.state=='4'&&minItem.openType?'lightRightOn':(minItem.state=='4'&&!minItem.openType?'lightRightOff':'')))))))"-->
  61. <!--v-for="(minItem,minIndex) in item.lightList" :key="minIndex"-->
  62. <!--:style="'top:'+minItem.y+'px;left:'+minItem.x+'px;width:'+minItem.w+'px;height:'+minItem.h+'px;'"></div>-->
  63. </div>
  64. </div>
  65. <div class="newEvacuation-map-for-box for-map-box-two"
  66. v-for="(item,indexTwo) in mapList" :key="item.key" v-if="item.type == 3"
  67. :class="item.roomCheckType?'for-map-box-two-check':''"
  68. :style="'top:'+item.y+'px;left:'+item.x+'px;width:'+item.w+'px;height:'+item.h+'px;'">
  69. <div class="newEvacuation-map-for-min-box"></div>
  70. <div class="position-box"
  71. :class="minItem.toward=='top'?'center-move-door-p-t':(minItem.toward=='bottom'?'center-move-door-p-b':(minItem.toward=='left'?'center-move-door-p-l':(minItem.toward=='right'?'center-move-door-p-r':'')))"
  72. v-for="(minItem,minIndex) in item.doorList" :key="minIndex"
  73. :style="'top:'+minItem.y+'px;left:'+minItem.x+'px;width:'+minItem.w+'px;height:'+minItem.h+'px;'"></div>
  74. </div>
  75. <!--<div class="plan-map-for-box" :class="checkPlanId == item.subId?'check-plan-map-for-box':''"-->
  76. <!--:style="'width:'+item.width+'px;height:'+item.height+'px;left:'+item.left+'px;top:'+item.top+'px;'"-->
  77. <!--v-for="(item,index) in planMapList" :key="item.subId" v-if="item.planType">-->
  78. <!--<div class="plan-top-button-box">-->
  79. <!--</div>-->
  80. <!--<div class="plan-time-box">-->
  81. <!--<img src="@/assets/ZDimages/emergencyManagement/icon_dp_bjsj.png">-->
  82. <!--<p>{{item.riskPlanTriggerTime}}</p>-->
  83. <!--</div>-->
  84. <!--<div class="plan-text-box">-->
  85. <!--<p class="plan-title-p" :class="item.riskPlanLevel==1?'color-type-1':(item.riskPlanLevel==2?'color-type-2':(item.riskPlanLevel==3?'color-type-3':(item.riskPlanLevel==4?'color-type-4':'')))">{{item.riskPlanLevelName}}</p>-->
  86. <!--<p class="plan-text-p">{{item.name}}</p>-->
  87. <!--</div>-->
  88. <!--&lt;!&ndash;<p class="plan-button-p" @click="shadeButton(7,item.groupId)">结束预案</p>&ndash;&gt;-->
  89. <!--</div>-->
  90. </div>
  91. </div>
  92. <img v-if="!mapList[0]" class="null-img" src="@/assets/ZDimages/null-data-1.png">
  93. </div>
  94. </div>
  95. </div>
  96. </template>
  97. <script>
  98. import { laboratoryBigViewGetFloorByBigView,laboratoryBigViewSelectTriggerInfo } from "@/api/index";
  99. export default {
  100. name: 'mapComponent',
  101. data () {
  102. return {
  103. mapType:false,
  104. mapData:[],
  105. mapList:[],
  106. zoomData:null,
  107. //地址
  108. addressList:[],
  109. //人数
  110. planMapList:[],
  111. floorId:null,
  112. floorUserNum:null,
  113. //报警页面状态
  114. planType:false,
  115. }
  116. },
  117. created(){
  118. },
  119. mounted(){
  120. this.laboratoryBigViewSelectTriggerInfo();
  121. },
  122. methods:{
  123. // 报警页面查看关闭
  124. planButton(type,item){
  125. // if(type == 'off'){
  126. // this.$set(this,'planType',false);
  127. // }else if(type == 'on'){
  128. // if(item.planType){
  129. // this.$set(this,'planType',true);
  130. // }
  131. // }
  132. },
  133. initialize(item){
  134. this.$set(this,'floorId',item.floorId);
  135. this.$nextTick(()=>{
  136. this.laboratoryBigViewGetFloorByBigView();
  137. })
  138. },
  139. //刷新地址
  140. getAddress(list){
  141. this.$set(this,'addressList',list);
  142. },
  143. //刷新人数
  144. getUserNum(num){
  145. if(num == 0){
  146. this.$set(this,'floorUserNum',[{
  147. value:'a0',
  148. label:'0',
  149. }]);
  150. }else{
  151. let list = [];
  152. let newNum = num;
  153. newNum = newNum+'';
  154. for(let i=0;i<newNum.length;i++){
  155. list.push({
  156. value:'a'+i,
  157. label:newNum[i]+'',
  158. })
  159. }
  160. this.$set(this,'floorUserNum',list);
  161. }
  162. },
  163. //查询当前正在发生的预案
  164. laboratoryBigViewSelectTriggerInfo(){
  165. let self = this;
  166. laboratoryBigViewSelectTriggerInfo().then(response => {
  167. //实验室预案标记
  168. for(let o=0;o<self.mapList.length;o++){
  169. let num = 0;
  170. if(self.mapList[o].type == 1){
  171. let newData = {};
  172. for(let i=0;i<response.data.length;i++){
  173. if(response.data[i].subId == self.mapList[o].subId){
  174. num++
  175. newData = response.data[i];
  176. }
  177. }
  178. if(num != 0){
  179. self.$set(self.mapList[o],'planType',true);
  180. for(let x=0;x<self.planMapList.length;x++){
  181. if(self.planMapList[x].subId == self.mapList[o].subId){
  182. self.$set(self.planMapList[x],'riskPlanTriggerTime',this.parseTime(newData.eventStartTime,"{y}-{m}-{d} {h}:{i}:{s}"));
  183. self.$set(self.planMapList[x],'riskAttribute',newData.riskAttribute);
  184. self.$set(self.planMapList[x],'riskPlanLevel',newData.riskPlanLevel);
  185. self.$set(self.planMapList[x],'riskPlanLevelName',newData.riskPlanLevel==1?'低风险':(newData.riskPlanLevel==2?'中风险':(newData.riskPlanLevel==3?'较高风险':(newData.riskPlanLevel==4?'高风险':''))));
  186. self.$set(self.planMapList[x],'name',newData.riskPlanName);
  187. self.$set(self.planMapList[x],'groupId',newData.eventId);
  188. self.$set(self.planMapList[x],'planType',true);
  189. }
  190. }
  191. }else{
  192. self.mapList[o].planType = false;
  193. for(let x=0;x<self.planMapList.length;x++){
  194. if(self.planMapList[x].subId == self.mapList[o].subId){
  195. self.$set(self.planMapList[x],'planType',false);
  196. self.$set(self.planMapList[x],'riskPlanTriggerTime',null);
  197. self.$set(self.planMapList[x],'riskAttribute',null);
  198. self.$set(self.planMapList[x],'riskPlanLevel',null);
  199. self.$set(self.planMapList[x],'riskPlanLevelName',null);
  200. self.$set(self.planMapList[x],'groupId',null);
  201. self.$set(self.planMapList[x],'name',null);
  202. }
  203. }
  204. }
  205. }
  206. }
  207. this.$forceUpdate();
  208. })
  209. },
  210. //获取楼层布局数据
  211. laboratoryBigViewGetFloorByBigView(){
  212. laboratoryBigViewGetFloorByBigView({id:this.floorId}).then(response => {
  213. if(response.data[0]){
  214. if(response.data[0].buildLayoutVoList && response.data[0].labExitLineVo){
  215. let list = JSON.parse(response.data[0].labExitLineVo.layoutJoinData)
  216. for(let i=0;i<list.length;i++){
  217. if(list[i].type == '2'){
  218. //楼道
  219. for(let o=0;o<list[i].lightList.length;o++){
  220. list[i].lightList[o].openType = false;
  221. }
  222. }else if(list[i].type == '1'){
  223. const hex2Rgba = (bgColor) => {
  224. let color = bgColor.slice(1); // 去掉'#'号
  225. let rgba = [
  226. parseInt("0x" + color.slice(0, 2)),
  227. parseInt("0x" + color.slice(2, 4)),
  228. parseInt("0x" + color.slice(4, 6)),
  229. 0.6
  230. ];
  231. return "rgba(" + rgba.toString() + ")";
  232. };
  233. for(let o=0;o<response.data[0].buildLayoutVoList.length;o++){
  234. if(list[i].key == response.data[0].buildLayoutVoList[o].pointName){
  235. list[i].id = response.data[0].buildLayoutVoList[o].id;
  236. list[i].buildId = response.data[0].buildLayoutVoList[o].buildId;
  237. list[i].floorId = response.data[0].buildLayoutVoList[o].floorId;
  238. list[i].roomType = response.data[0].buildLayoutVoList[o].roomType;
  239. list[i].roomName = response.data[0].buildLayoutVoList[o].roomName;
  240. list[i].roomNum = response.data[0].buildLayoutVoList[o].roomNum;
  241. list[i].subName = response.data[0].buildLayoutVoList[o].subName;
  242. list[i].subId = response.data[0].buildLayoutVoList[o].subId;
  243. list[i].onLineNum = response.data[0].buildLayoutVoList[o].onLineNum;
  244. list[i].loginAdmin = response.data[0].buildLayoutVoList[o].loginAdmin;
  245. list[i].levelColor = response.data[0].buildLayoutVoList[o].levelColor?hex2Rgba(response.data[0].buildLayoutVoList[o].levelColor):'';
  246. list[i].planType = false;
  247. }
  248. }
  249. }else if(list[i].type == 3){
  250. list[i].roomCheckType = false;
  251. }
  252. }
  253. let obj = this.calculateMapMax(list)
  254. this.$set(this.mapData,'width',obj.maxWidth);
  255. this.$set(this.mapData,'height',obj.maxHeight);
  256. this.$set(this.mapData,'zoomData',obj.zoomData);
  257. this.$set(this,'mapList',JSON.parse(JSON.stringify(list)));
  258. this.$set(this,'mapType',true);
  259. //处理实验室弹窗数据
  260. let roomList = [];
  261. for(let i=0;i<list.length;i++){
  262. if(list[i].type == 1 && list[i].subId){
  263. let roomObj = {
  264. subId:list[i].subId
  265. };
  266. if(list[i].doorList[0].toward == 'top'){
  267. roomObj.width = 266;
  268. roomObj.height = 142;
  269. roomObj.left = (list[i].w/2) + (list[i].x) - 133;
  270. roomObj.top = list[i].y - 111;
  271. roomObj.planType = false;
  272. }else if(list[i].doorList[0].toward == 'bottom'){
  273. roomObj.width = 266;
  274. roomObj.height = 142;
  275. roomObj.left = (list[i].w/2) + (list[i].x) - 133;
  276. roomObj.top = list[i].y + list[i].h;
  277. roomObj.planType = false;
  278. }else if(list[i].doorList[0].toward == 'left'){
  279. roomObj.width = 266;
  280. roomObj.height = 142;
  281. roomObj.left = list[i].x - 133;
  282. roomObj.top = (list[i].h/2) + (list[i].y) - 56;
  283. roomObj.planType = false;
  284. }else if(list[i].doorList[0].toward == 'fight'){
  285. roomObj.width = 266;
  286. roomObj.height = 142;
  287. roomObj.left = list[i].x + list[i].w + 133;
  288. roomObj.top = (list[i].h/2) + (list[i].y) - 56;
  289. roomObj.planType = false;
  290. }
  291. roomList.push(roomObj);
  292. }
  293. }
  294. this.$set(this,'planMapList',roomList);
  295. }else{
  296. this.$set(this,'mapData',{});
  297. this.$set(this,'mapList',[]);
  298. this.$set(this,'mapType',false);
  299. this.$set(this,'planMapList',[]);
  300. }
  301. //获取预案列表
  302. this.laboratoryBigViewSelectTriggerInfo();
  303. //获取疏散数据
  304. // this.laboratoryExitLineGetRedisEvacuation();
  305. }else{
  306. this.$set(this,'mapType',false);
  307. this.$set(this,'mapData',[]);
  308. this.$set(this,'mapList',[]);
  309. }
  310. })
  311. },
  312. //计算布局最大尺寸
  313. calculateMapMax(list) {
  314. //基础参数
  315. let height = 700;
  316. let width = 1428;
  317. let maxWidth = 0
  318. let maxHeight = 0
  319. let zoomData = 1;
  320. //参数处理
  321. for (let i = 0; i < list.length; i++) {
  322. if ((list[i].x + list[i].w) > maxWidth) {
  323. maxWidth = list[i].x + list[i].w
  324. }
  325. if ((list[i].y + list[i].h) > maxHeight) {
  326. maxHeight = list[i].y + list[i].h
  327. }
  328. }
  329. //处理等值数据
  330. if(maxHeight == height){
  331. maxHeight++
  332. }
  333. if(maxWidth == width){
  334. maxWidth++
  335. }
  336. //缩放判断
  337. let zoomNumOne = height / maxHeight;
  338. if(parseInt(this.accMul(zoomNumOne,maxHeight)) <= height && parseInt(this.accMul(zoomNumOne,maxWidth)) <= width){
  339. zoomData = zoomNumOne;
  340. this.$set(this,'zoomData',zoomNumOne);
  341. }
  342. let zoomNumTwo = width / maxWidth;
  343. if(parseInt(this.accMul(zoomNumTwo,maxHeight)) <= height && parseInt(this.accMul(zoomNumTwo,maxWidth)) <= width){
  344. zoomData = zoomNumTwo;
  345. this.$set(this,'zoomData',zoomNumTwo);
  346. }
  347. return { maxWidth: maxWidth, maxHeight: maxHeight,zoomData:zoomData }
  348. },
  349. accMul(arg1,arg2){
  350. var m=0,s1=arg1.toString(),s2=arg2.toString();
  351. try{m+=s1.split(".")[1].length}catch(e){}
  352. try{m+=s2.split(".")[1].length}catch(e){}
  353. return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)
  354. },
  355. },
  356. }
  357. </script>
  358. <style scoped lang="scss">
  359. .mapComponent{
  360. margin:83px 20px 0;
  361. height:837px;
  362. width:1650px;
  363. background: linear-gradient(180deg, rgba(4, 117, 129, 0.2) 0%, rgba(0, 15, 22, 0) 100%);
  364. .top-num-max-box{
  365. padding:0 51px;
  366. height:100px;
  367. display: flex;
  368. .for-address-box{
  369. display: flex;
  370. }
  371. .name-p{
  372. line-height:100px;
  373. font-size:24px;
  374. color:#ffffff;
  375. }
  376. .icon-p{
  377. width:60px;
  378. text-align: center;
  379. color:#03B7CA;
  380. font-size:20px;
  381. line-height:100px;
  382. }
  383. .num-img{
  384. display: block;
  385. margin:30px 10px 0 96px;
  386. width:40px;
  387. height:40px;
  388. }
  389. .for-p{
  390. margin:30px 0 0 10px;
  391. width:34px;
  392. height:40px;
  393. line-height:40px;
  394. font-size:36px;
  395. text-align: center;
  396. border:1px solid #117977;
  397. background-color: #073e42;
  398. border-radius:2px;
  399. p{
  400. background: -webkit-linear-gradient(0deg, #FFFFFF, #0183FA); /* Chrome, Safari */
  401. background: linear-gradient(0deg, #FFFFFF, #0183FA); /* 标准语法 */
  402. -webkit-background-clip: text; /* Chrome, Safari */
  403. background-clip: text;
  404. -webkit-text-fill-color: transparent; /* Chrome, Safari */
  405. color: transparent; /* 其他浏览器 */
  406. }
  407. }
  408. }
  409. .content-map-select-box{
  410. flex:1;
  411. display: flex;
  412. .content-map-box{
  413. flex:1;
  414. height:700px;
  415. position: relative;
  416. .newEvacuation-map-max-big-box{
  417. position: absolute;
  418. top: 50%;
  419. left: 50%;
  420. -webkit-user-select: none;
  421. img{
  422. -webkit-user-drag: none;
  423. }
  424. .newEvacuation-map-big-box{
  425. position: relative;
  426. border:1px solid #33494E;
  427. /*cursor: pointer;*/
  428. .newEvacuation-map-for-box{
  429. position: absolute;
  430. display: flex;
  431. flex-direction: column;
  432. overflow: hidden;
  433. .newEvacuation-map-for-min-box{
  434. height:100%;
  435. position: relative;
  436. .map-for-name-p{
  437. padding:0 10px;
  438. height:20px;
  439. line-height:20px;
  440. font-size:14px;
  441. text-align: center;
  442. color:#24D1F9;
  443. overflow: hidden;
  444. text-overflow:ellipsis;
  445. white-space:nowrap;
  446. }
  447. .map-for-num-p{
  448. font-size:14px;
  449. text-align: center;
  450. color:#fff;
  451. overflow: hidden;
  452. text-overflow:ellipsis;
  453. white-space:nowrap;
  454. }
  455. .user-num-box{
  456. position: absolute;
  457. right:0;
  458. bottom:0;
  459. display: flex;
  460. img{
  461. display: block;
  462. width:18px;
  463. height:18px;
  464. margin-right:5px;
  465. }
  466. p{
  467. height:18px;
  468. line-height:18px;
  469. font-size:14px;
  470. color:#fff;
  471. }
  472. }
  473. .user-num-one{
  474. top:0;
  475. }
  476. .user-num-two{
  477. bottom:0;
  478. }
  479. .position-box{
  480. position: absolute;
  481. font-size:14px;
  482. overflow: hidden;
  483. }
  484. .plan-img{
  485. width:27px;
  486. height:27px;
  487. display: block;
  488. position: absolute;
  489. top:0;
  490. left:0;
  491. }
  492. .plan-img-animation {
  493. animation: rotate 1s infinite linear;
  494. }
  495. @keyframes rotate {
  496. from {
  497. opacity:1;
  498. }
  499. to {
  500. opacity:0;
  501. }
  502. }
  503. .center-move-door-p-t {
  504. background: url("../../../assets/ZDimages/emergencyManagement/icon_pmbjt_m.png") !important;
  505. background-size: 100% !important;
  506. transform: rotate(180deg);
  507. }
  508. .center-move-door-p-b {
  509. background: url("../../../assets/ZDimages/emergencyManagement/icon_pmbjt_m.png") !important;
  510. background-size: 100% !important;
  511. }
  512. .center-move-door-p-l {
  513. background: url("../../../assets/ZDimages/emergencyManagement/icon_pmbjt_m.png") !important;
  514. background-size: 100% !important;
  515. transform: rotate(90deg);
  516. }
  517. .center-move-door-p-r {
  518. background: url("../../../assets/ZDimages/emergencyManagement/icon_pmbjt_m.png") !important;
  519. background-size: 100% !important;
  520. transform: rotateZ(270deg);
  521. }
  522. .lightTopOn {
  523. background: url("../../../assets/ZDimages/emergencyManagement/icon_sjt.png");
  524. background-size: 100%;
  525. }
  526. .lightTopOff {
  527. background: url("../../../assets/ZDimages/emergencyManagement/icon_shang_hs.png");
  528. background-size: 100%;
  529. }
  530. .lightBottomOn {
  531. background: url("../../../assets/ZDimages/emergencyManagement/icon_xjt.png");
  532. background-size: 100%;
  533. }
  534. .lightBottomOff {
  535. background: url("../../../assets/ZDimages/emergencyManagement/icon_xia_hs.png");
  536. background-size: 100%;
  537. }
  538. .lightLeftOn {
  539. background: url("../../../assets/ZDimages/emergencyManagement/icon_zuo.png");
  540. background-size: 100%;
  541. }
  542. .lightLeftOff {
  543. background: url("../../../assets/ZDimages/emergencyManagement/icon_zou_hs.png");
  544. background-size: 100%;
  545. }
  546. .lightRightOn {
  547. background: url("../../../assets/ZDimages/emergencyManagement/icon_yuo.png");
  548. background-size: 100%;
  549. }
  550. .lightRightOff {
  551. background: url("../../../assets/ZDimages/emergencyManagement/icon_you_hs.png");
  552. background-size: 100%;
  553. }
  554. }
  555. }
  556. .for-map-box-one{
  557. border:1px dashed #fff;
  558. }
  559. .for-map-box{
  560. background: rgba(1,16,32,1);
  561. /*background: #001319;*/
  562. }
  563. .for-map-box-two{
  564. /*background: url("../../../assets/ZDimages/emergencyManagement/icon_jjck.png") center center no-repeat rgba(5,45,43,0.5);*/
  565. background: url("../../../assets/ZDimages/emergencyManagement/icon_jjck.png") center center no-repeat rgba(50,205,50,1);
  566. background-size: 60px 60px;
  567. .position-box{
  568. position: absolute;
  569. font-size:14px;
  570. overflow: hidden;
  571. }
  572. .center-move-door-p-t {
  573. background: url("../../../assets/ZDimages/emergencyManagement/icon_aqtd_m.png") !important;
  574. background-size: 100% !important;
  575. transform: rotate(180deg);
  576. }
  577. .center-move-door-p-b {
  578. background: url("../../../assets/ZDimages/emergencyManagement/icon_aqtd_m.png") !important;
  579. background-size: 100% !important;
  580. }
  581. .center-move-door-p-l {
  582. background: url("../../../assets/ZDimages/emergencyManagement/icon_aqtd_m.png") !important;
  583. background-size: 100% !important;
  584. transform: rotate(90deg);
  585. }
  586. .center-move-door-p-r {
  587. background: url("../../../assets/ZDimages/emergencyManagement/icon_aqtd_m.png") !important;
  588. background-size: 100% !important;
  589. transform: rotateZ(270deg);
  590. }
  591. }
  592. .for-map-box-two-check{
  593. background: url("../../../assets/ZDimages/emergencyManagement/icon_jjck.png") center center no-repeat rgba(50,205,50,1);
  594. background-size: 80px 80px;
  595. }
  596. .room-type-one{
  597. //选中
  598. background: rgba(30,118,142,0.4);
  599. }
  600. .room-type-two{
  601. //报警
  602. background: rgba(232,0,0,0.4);
  603. box-shadow:0 0 10px 1px #E80000 inset;
  604. }
  605. .room-type-three{
  606. //选中报警
  607. background: rgba(30,118,142,0.4);
  608. box-shadow:0 0 10px 1px #E80000 inset;
  609. }
  610. .room-type-noe{
  611. /*border:1px solid #666;*/
  612. /*background: rgba(102,102,102,0.6);*/
  613. /*color:#666!important;*/
  614. p{
  615. /*color:#666!important;*/
  616. }
  617. }
  618. .plan-map-for-box{
  619. font-weight:500;
  620. position:absolute;
  621. z-index:100;
  622. background: url("../../../assets/ZDimages/emergencyManagement/img_bg_yatk.png");
  623. .plan-top-button-box{
  624. height:22px;
  625. }
  626. .plan-time-box{
  627. display: flex;
  628. img{
  629. width:24px;
  630. height:24px;
  631. margin-left:19px;
  632. margin-right:8px;
  633. }
  634. p{
  635. line-height:24px;
  636. color:#fff;
  637. font-size:14px;
  638. }
  639. }
  640. .plan-text-box{
  641. display: flex;
  642. color:#fff;
  643. margin-top:15px;
  644. overflow: hidden;
  645. .plan-title-p{
  646. width:60px;
  647. height:20px;
  648. line-height:20px;
  649. font-size:14px;
  650. text-align: center;
  651. margin:0 10px 0 18px;
  652. border-radius:15px;
  653. }
  654. .plan-text-p{
  655. width:170px;
  656. height:20px;
  657. line-height:20px;
  658. font-size:14px;
  659. overflow:hidden;
  660. text-overflow:ellipsis;
  661. white-space:nowrap;
  662. }
  663. .color-type-1{
  664. background: #0183FA;
  665. }
  666. .color-type-2{
  667. background: #FF9900;
  668. }
  669. .color-type-3{
  670. background: #FF4800;
  671. }
  672. .color-type-4{
  673. background: #FF0000;
  674. }
  675. }
  676. .plan-text-box-two{
  677. display: flex;
  678. color:#fff;
  679. margin-top:22px;
  680. overflow: hidden;
  681. .plan-title-p{
  682. width:60px;
  683. height:20px;
  684. line-height:20px;
  685. font-size:14px;
  686. text-align: center;
  687. margin:0 10px 0 18px;
  688. border-radius:15px;
  689. }
  690. .plan-text-p{
  691. width:170px;
  692. height:20px;
  693. line-height:20px;
  694. font-size:14px;
  695. overflow:hidden;
  696. text-overflow:ellipsis;
  697. white-space:nowrap;
  698. }
  699. .color-type-1{
  700. background: #0183FA;
  701. }
  702. .color-type-2{
  703. background: #FF9900;
  704. }
  705. .color-type-3{
  706. background: #FF4800;
  707. }
  708. .color-type-4{
  709. background: #FF0000;
  710. }
  711. }
  712. .plan-button-p{
  713. margin:15px auto 0;
  714. width:100px;
  715. line-height:30px;
  716. background: #163277;
  717. color:#fff;
  718. text-align: center;
  719. border-radius:6px;
  720. /*cursor: pointer;*/
  721. }
  722. }
  723. .check-plan-map-for-box{
  724. z-index:1000!important;
  725. }
  726. }
  727. }
  728. .null-img{
  729. display: block;
  730. width:300px;
  731. margin:100px auto;
  732. }
  733. }
  734. .content-select-box{
  735. width:158px;
  736. position: relative;
  737. .for-select-box{
  738. position: absolute;
  739. bottom:31px;
  740. left:59px;
  741. display: flex;
  742. flex-direction: column-reverse;
  743. .for-select-p:nth-child(1){
  744. border-bottom:1px solid #19667e;
  745. border-bottom-left-radius:4px;
  746. border-bottom-right-radius:4px;
  747. }
  748. .for-select-p:last-child{
  749. border-top-left-radius:4px;
  750. border-top-right-radius:4px;
  751. }
  752. .for-select-p{
  753. cursor: pointer;
  754. width:40px;
  755. line-height:40px;
  756. text-align: center;
  757. color:#19667e;
  758. border-top:1px solid #19667e;
  759. border-left:1px solid #19667e;
  760. border-right:1px solid #19667e;
  761. }
  762. .for-select-p-check{
  763. /*border:1px solid #20d0fa !important;*/
  764. color:#fff;
  765. box-shadow: inset 0 0 4px 1px rgba(32,208,250,1);
  766. }
  767. }
  768. }
  769. }
  770. }
  771. </style>