classifyGradeDetail.vue 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815
  1. <template>
  2. <div class="main">
  3. <Header/>
  4. <div class="main_t">
  5. <div class="main_t_t">
  6. <i class="main_t_t_l">当前位置:首页 &gt;</i>
  7. <i>实验室分类分级</i>
  8. </div>
  9. <div class="max-big-box">
  10. <div class="left-big-box">
  11. <div class="max-building-box scrollbar-box">
  12. <div class="for-building-box" v-if="item.buildFloorVoList[0]"
  13. v-for="(item,index) in buildingOptions" :key="index">
  14. <p :class="item.id == campusId?'check-item-color':''" class="item-name">{{item.name}}</p>
  15. <div class="min-for-box" @click="buildingButton(index,minIndex)" v-if="minItem.buildFloorVoList[0]"
  16. v-for="(minItem,minIndex) in item.buildFloorVoList">
  17. <p :class="minItem.id == buildingId?'check-item-back':''"></p>
  18. <p :class="minItem.id == buildingId?'check-item-color':''">{{minItem.name}}</p>
  19. </div>
  20. </div>
  21. </div>
  22. </div>
  23. <div class="center-big-box">
  24. <div class="center-map-big-box" ref="centerBox">
  25. <div class="evacuation-shade-map-big-box"
  26. v-if="newMapData"
  27. :style="'width:'+newMapData.width+'px;height:'+newMapData.height+'px;transform: scale('+newMapData.zoomData+');margin-top:-'+newMapData.height/2+'px;margin-left:-'+newMapData.width/2+'px;'">
  28. <div class="evacuation-shade-map-box"
  29. :style="'width:'+newMapData.width+'px;height:'+newMapData.height+'px;'">
  30. <div class="evacuation-shade-map-for-box for-map-box-one"
  31. v-for="(item,index) in newMapData.mapList" :key="index" v-if="item.type == 1"
  32. :style="'background:'+item.classifiedColor+';top:'+item.y+'px;left:'+item.x+'px;width:'+item.w+'px;height:'+item.h+'px;'">
  33. <div class="evacuation-shade-map-min-box">
  34. <!--名称/实验室名称-->
  35. <el-tooltip class="item" effect="dark"
  36. :content="item.roomType != '1'?item.roomName:item.subName"
  37. placement="top">
  38. <p class="map-for-name-p" :style="'margin-top:'+((item.h/2)-25)+'px;'">
  39. {{item.roomType != '1'?item.roomName:item.subName}}</p>
  40. </el-tooltip>
  41. <!--编号-->
  42. <el-tooltip class="item" effect="dark" :content="item.roomNum"
  43. placement="top">
  44. <p class="map-for-num-p">{{item.roomNum}}</p>
  45. </el-tooltip>
  46. </div>
  47. </div>
  48. <div class="evacuation-shade-map-for-box for-map-box"
  49. v-for="(item,indexOne) in newMapData.mapList" :key="indexOne" v-if="item.type == 2"
  50. :style="'top:'+item.y+'px;left:'+item.x+'px;width:'+item.w+'px;height:'+item.h+'px;'">
  51. <div class="evacuation-shade-map-min-box"></div>
  52. </div>
  53. <div class="evacuation-shade-map-for-box for-map-box-two"
  54. v-for="(item,indexTwo) in newMapData.mapList" :key="indexTwo" v-if="item.type == 3"
  55. @click="shadeCheckRoomClick(item)"
  56. :class="item.roomCheckType?'for-map-box-two-check':''"
  57. :style="'top:'+item.y+'px;left:'+item.x+'px;width:'+item.w+'px;height:'+item.h+'px;'">
  58. <div class="evacuation-shade-map-min-box"></div>
  59. </div>
  60. </div>
  61. </div>
  62. </div>
  63. <div class="center-bottom-max-big-box scrollbar-x-box">
  64. <div class="center-bottom-for-big-box" v-if="mapData.mapList[0]"
  65. :class="mapData.id==floorId?'checkFloor':''"
  66. @click="floorCheck(bigIndex)"
  67. v-for="(mapData,bigIndex) in floorList" :key="mapData.id">
  68. <div class="center-bottom-for-min-box">
  69. <div class="evacuation-shade-map-big-box"
  70. :style="'width:'+mapData.minWidth+'px;height:'+mapData.minHeight+'px;transform: scale('+mapData.minZoomData+');margin-top:-'+mapData.minHeight/2+'px;margin-left:-'+mapData.minWidth/2+'px;'">
  71. <div class="evacuation-shade-map-box"
  72. :style="'width:'+mapData.minWidth+'px;height:'+mapData.minHeight+'px;'">
  73. <div class="evacuation-shade-map-for-box "
  74. :class="item.type==1?'for-map-box-one':(item.type==2?'for-map-box':(item.type==3?'for-map-box-two':''))"
  75. v-for="(item,index) in mapData.mapList" :key="item.key" v-if="item.type == 1 || item.type == 2 || item.type == 3"
  76. :style="'background:'+item.classifiedColor+';top:'+item.y+'px;left:'+item.x+'px;width:'+item.w+'px;height:'+item.h+'px;'">
  77. <div class="evacuation-shade-map-min-box" v-if="item.type == 1">
  78. <!--名称/实验室名称-->
  79. <p class="map-for-name-p" :style="'margin-top:'+((item.h/2)-25)+'px;'">
  80. {{item.roomType == '-99'?item.roomName:item.subName}}</p>
  81. <!--编号-->
  82. <p class="map-for-num-p">{{item.roomNum}}</p>
  83. </div>
  84. </div>
  85. </div>
  86. </div>
  87. </div>
  88. <p class="max-for-name-p">{{mapData.name}}</p>
  89. </div>
  90. <div class="center-bottom-for-big-box-position" ref="minForBox"></div>
  91. </div>
  92. </div>
  93. <div class="right-big-box">
  94. <div class="lv-max-box scrollbar-box">
  95. <div class="lv-for-box" v-for="(item,index) in lvList" :key="index">
  96. <p :style="'background:'+item.levelColor+';'"></p>
  97. <p>{{item.levelName}}</p>
  98. </div>
  99. </div>
  100. </div>
  101. </div>
  102. </div>
  103. </div>
  104. </template>
  105. <script>
  106. import {
  107. getNoAuthTreeList,
  108. getBuildOrFloorDetailList,
  109. getNoAuthList,
  110. classTypeListAll
  111. } from "@/api/index";
  112. import {
  113. laboratoryClassLevelGetList,
  114. laboratoryBigViewGetFloorListByBigView,
  115. laboratoryBuildLayoutGetTreeSonList,
  116. systemBuildingGetTreeList
  117. } from "@/api/index";
  118. import Header from '@/components/header.vue'
  119. export default {
  120. components: {
  121. Header
  122. },
  123. data() {
  124. return {
  125. //校区ID
  126. campusId:null,
  127. //楼栋数据
  128. buildingOptions:[],
  129. buildingId:null,
  130. //楼层数据
  131. floorList:[],
  132. floorId:null,
  133. //分级数据
  134. lvList: [],
  135. //大图缩放比例
  136. zoomData: null,
  137. //小图缩放比例
  138. minZoomData: null,
  139. //地图数据
  140. newMapData:null,
  141. //地图窗口尺寸
  142. mapBoxWidth:null,
  143. mapBoxHeight:null,
  144. //小地图窗口尺寸
  145. minMapBoxWidth:null,
  146. minMapBoxHeight:null,
  147. }
  148. },
  149. created() {
  150. },
  151. mounted() {
  152. this.systemBuildingGetTreeList();
  153. this.laboratoryClassLevelGetList();
  154. },
  155. methods: {
  156. //楼栋选择
  157. buildingButton(index,minIndex){
  158. console.log('index==',index)
  159. console.log('minIndex==',minIndex)
  160. console.log('campusId==',this.campusId)
  161. console.log('buildingId==',this.buildingId)
  162. if(this.campusId == this.buildingOptions[index].id && this.buildingId == this.buildingOptions[index].buildFloorVoList[minIndex].id){
  163. }else{
  164. this.laboratoryBigViewGetFloorListByBigView(this.buildingOptions[index].id,this.buildingOptions[index].buildFloorVoList[minIndex].id);
  165. }
  166. },
  167. //获取楼栋数据
  168. systemBuildingGetTreeList() {
  169. systemBuildingGetTreeList({}).then((response) => {
  170. if (response.code == 200) {
  171. let list = [];
  172. for(let i=0;i<response.data.length;i++){
  173. let num = 0;
  174. if(response.data[i].buildFloorVoList[0]){
  175. for(let o=0;o<response.data[i].buildFloorVoList.length;o++){
  176. if(response.data[i].buildFloorVoList[o].buildFloorVoList[0]){
  177. for(let x=0;x<response.data[i].buildFloorVoList[o].buildFloorVoList.length;x++){
  178. num++
  179. }
  180. }
  181. }
  182. }
  183. if(num != 0){
  184. list.push(response.data[i]);
  185. }
  186. }
  187. this.$set(this,'buildingOptions',list);
  188. if(list[0]){
  189. this.laboratoryBigViewGetFloorListByBigView(list[0].id,list[0].buildFloorVoList[0].id);
  190. }
  191. }
  192. })
  193. },
  194. //获取楼层数据
  195. laboratoryBigViewGetFloorListByBigView(campusId,buildingId) {
  196. let self = this;
  197. this.$set(this,'mapBoxWidth',parseInt(this.$refs.centerBox.getBoundingClientRect().width));
  198. this.$set(this,'mapBoxHeight',parseInt(this.$refs.centerBox.getBoundingClientRect().height));
  199. this.$set(this,'minMapBoxWidth',parseInt(this.$refs.minForBox.getBoundingClientRect().width));
  200. this.$set(this,'minMapBoxHeight',parseInt(this.$refs.minForBox.getBoundingClientRect().height));
  201. laboratoryBigViewGetFloorListByBigView({id : buildingId}).then((response) => {
  202. if (response.code == 200) {
  203. let list = [];
  204. console.log('response.data',response.data);
  205. for(let i=0;i<response.data.length;i++){
  206. if(response.data[i].buildLayoutVoList){
  207. if(response.data[i].buildLayoutVoList[0]){
  208. this.$set(this,'floorId',null);
  209. let obj = {
  210. id:response.data[i].id,
  211. name:response.data[i].name,
  212. parentId:response.data[i].parentId,
  213. subNum:response.data[i].subNum,
  214. buildFloorLayoutVoList:response.data[i].buildLayoutVoList,
  215. checkType:i==0?true:false,
  216. }
  217. let minList = JSON.parse(response.data[i].labExitLineVo.layoutJoinData)
  218. for(let x=0;x<minList.length;x++){
  219. if(minList[x].type == '1'){
  220. for(let o=0;o<response.data[i].buildLayoutVoList.length;o++){
  221. if(minList[x].key == response.data[i].buildLayoutVoList[o].pointName){
  222. minList[x].id = response.data[i].buildLayoutVoList[o].id;
  223. minList[x].buildId = response.data[i].buildLayoutVoList[o].buildId;
  224. minList[x].floorId = response.data[i].buildLayoutVoList[o].floorId;
  225. minList[x].roomType = response.data[i].buildLayoutVoList[o].roomType;
  226. minList[x].roomName = response.data[i].buildLayoutVoList[o].roomName;
  227. minList[x].roomNum = response.data[i].buildLayoutVoList[o].roomNum;
  228. minList[x].subName = response.data[i].buildLayoutVoList[o].subName;
  229. minList[x].subId = response.data[i].buildLayoutVoList[o].subId;
  230. minList[x].classifiedId = response.data[i].buildLayoutVoList[o].classifiedId?response.data[i].buildLayoutVoList[o].classifiedId:'';
  231. minList[x].classifiedColor = response.data[i].buildLayoutVoList[o].levelColor?response.data[i].buildLayoutVoList[o].levelColor:'#093751';
  232. minList[x].typeId = response.data[i].buildLayoutVoList[o].typeId?response.data[i].buildLayoutVoList[o].typeId:'';
  233. }
  234. }
  235. }
  236. }
  237. let minObj = this.calculateMapMax(minList,this.mapBoxHeight,this.mapBoxWidth);
  238. let minObjTwo = this.calculateMapMax(minList,this.minMapBoxHeight,this.minMapBoxWidth);
  239. obj.width = minObj.maxWidth;
  240. obj.height = minObj.maxHeight;
  241. obj.zoomData = minObj.zoomData;
  242. obj.minWidth = minObjTwo.maxWidth;
  243. obj.minHeight = minObjTwo.maxHeight;
  244. obj.minZoomData = minObjTwo.zoomData;
  245. obj.mapList = JSON.parse(JSON.stringify(minList));
  246. list.push(obj);
  247. }
  248. }
  249. }
  250. if(list[0]){
  251. this.$set(this,'campusId',campusId);
  252. this.$set(this,'buildingId',buildingId);
  253. this.$set(this,'floorList',list);
  254. this.$set(this,'floorId',list[0].id);
  255. this.floorCheck(0)
  256. }else{
  257. this.$message({
  258. type:'error',
  259. message:'该楼栋下未配置楼层',
  260. iconClass:'123',
  261. });
  262. }
  263. }else{
  264. this.$message({
  265. type:'error',
  266. message:'该楼栋下未配置楼层',
  267. iconClass:'123',
  268. });
  269. }
  270. })
  271. },
  272. //选中楼层
  273. floorCheck(index){
  274. if(index != this.floorId){
  275. this.$set(this,'newMapData',this.floorList[index]);
  276. this.$set(this,'floorId',this.floorList[index].id);
  277. this.$forceUpdate;
  278. }
  279. },
  280. //获取实验室数据
  281. getNoAuthList(){
  282. getNoAuthList().then((response) => {
  283. if (response.code == 200) {
  284. }
  285. })
  286. },
  287. //获取分级数据
  288. laboratoryClassLevelGetList() {
  289. laboratoryClassLevelGetList({}).then((response) => {
  290. if (response.code == 200) {
  291. this.$set(this, 'lvList', response.data);
  292. }
  293. })
  294. },
  295. //返回按钮
  296. back() {
  297. this.$router.push('/home')
  298. },
  299. //计算布局最大尺寸
  300. calculateMapMax(list, height, width) {
  301. //基础参数
  302. let maxWidth = 0
  303. let maxHeight = 0
  304. let zoomData = 1;
  305. //参数处理
  306. for (let i = 0; i < list.length; i++) {
  307. if ((list[i].x + list[i].w) > maxWidth) {
  308. maxWidth = list[i].x + list[i].w
  309. }
  310. if ((list[i].y + list[i].h) > maxHeight) {
  311. maxHeight = list[i].y + list[i].h
  312. }
  313. }
  314. //处理等值数据
  315. if (maxHeight == height) {
  316. maxHeight++
  317. }
  318. if (maxWidth == width) {
  319. maxWidth++
  320. }
  321. //缩放判断
  322. let zoomNumOne = height / maxHeight;
  323. if (parseInt(this.accMul(zoomNumOne, maxHeight)) <= height && parseInt(this.accMul(zoomNumOne, maxWidth)) <= width) {
  324. zoomData = zoomNumOne;
  325. }
  326. let zoomNumTwo = width / maxWidth;
  327. if (parseInt(this.accMul(zoomNumTwo, maxHeight)) <= height && parseInt(this.accMul(zoomNumTwo, maxWidth)) <= width) {
  328. zoomData = zoomNumTwo;
  329. }
  330. return {maxWidth: maxWidth, maxHeight: maxHeight, zoomData: zoomData}
  331. },
  332. accMul(arg1, arg2) {
  333. var m = 0, s1 = arg1.toString(), s2 = arg2.toString();
  334. try {
  335. m += s1.split(".")[1].length
  336. } catch (e) {
  337. }
  338. try {
  339. m += s2.split(".")[1].length
  340. } catch (e) {
  341. }
  342. return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m)
  343. },
  344. },
  345. }
  346. </script>
  347. <!-- Add "scoped" attribute to limit CSS to this component only -->
  348. <style lang="scss" scoped>
  349. * {
  350. padding: 0;
  351. margin: 0;
  352. box-sizing: border-box;
  353. }
  354. .main {
  355. width: 1920px;
  356. height: 1080px;
  357. /* background: url("../img/index_bg.png") no-repeat;
  358. background-size: 100% 100%;*/
  359. position: relative;
  360. left: 0;
  361. top: 0;
  362. z-index: 50;
  363. background: #062338;
  364. .main_t {
  365. width: 1852px;
  366. height: 955px;
  367. position: absolute;
  368. left: 34px;
  369. top: 86px;
  370. z-index: 200;
  371. overflow: hidden;
  372. display: flex;
  373. flex-direction: column;
  374. background: #093751;
  375. margin-top:20px;
  376. .main_t_t {
  377. margin: 20px 0 0 18px;
  378. > i {
  379. font-size: 16px;
  380. font-family: Microsoft YaHei;
  381. font-weight: bold;
  382. color: #FFFFFF;
  383. line-height: 16px;
  384. }
  385. > i:nth-of-type(1) {
  386. }
  387. > i:nth-of-type(2) {
  388. color: #1ED0F8;
  389. }
  390. }
  391. .max-big-box {
  392. flex: 1;
  393. display: flex;
  394. overflow: hidden;
  395. .left-big-box {
  396. width: 270px;
  397. height: 880px;
  398. overflow: hidden;
  399. margin-left:20px;
  400. .max-building-box{
  401. margin-top:80px;
  402. margin-right:20px;
  403. height: 800px;
  404. .for-building-box:nth-child(1){
  405. border:none;
  406. }
  407. .for-building-box{
  408. margin-right:20px;
  409. margin-bottom:20px;
  410. border-top:1px dashed #1095FB;
  411. .item-name{
  412. margin-top:20px;
  413. flex:1;
  414. display:block;
  415. overflow:hidden;
  416. text-overflow:ellipsis;
  417. white-space:nowrap;
  418. color:#fff;
  419. font-size:16px;
  420. line-height:20px;
  421. margin-bottom:20px;
  422. }
  423. .min-for-box{
  424. cursor: pointer;
  425. display: flex;;
  426. margin-bottom:10px;
  427. p:nth-child(1){
  428. width:10px;
  429. height:10px;
  430. margin:5px 10px 5px 20px;
  431. border-radius:50%;
  432. }
  433. p:nth-child(2){
  434. flex:1;
  435. display:block;
  436. overflow:hidden;
  437. text-overflow:ellipsis;
  438. white-space:nowrap;
  439. color:#fff;
  440. font-size:14px;
  441. line-height:20px;
  442. }
  443. }
  444. .check-item-back{
  445. background:#1ED0F8;
  446. }
  447. .check-item-color{
  448. color:#1ED0F8!important;
  449. }
  450. }
  451. }
  452. }
  453. .center-big-box {
  454. /*background: #fff;*/
  455. display: flex;
  456. flex-direction: column;
  457. flex: 1;
  458. overflow: hidden;
  459. .center-map-big-box {
  460. margin-top: 80px;
  461. height: 600px;
  462. /*background: #0E9EED;*/
  463. position: relative;
  464. .evacuation-shade-map-big-box {
  465. position: absolute;
  466. top: 50%;
  467. left: 50%;
  468. -webkit-user-select: none;
  469. .evacuation-shade-map-box {
  470. position: relative;
  471. border: 1px dashed #fff;
  472. overflow: hidden;
  473. .evacuation-shade-map-for-box {
  474. position: absolute;
  475. display: flex;
  476. flex-direction: column;
  477. overflow: hidden;
  478. .evacuation-shade-map-min-box {
  479. height: 100%;
  480. position: relative;
  481. .map-for-name-p {
  482. padding: 0 10px;
  483. height: 20px;
  484. line-height: 20px;
  485. font-size: 16px;
  486. text-align: center;
  487. color: #fff;
  488. overflow: hidden;
  489. text-overflow: ellipsis;
  490. white-space: nowrap;
  491. }
  492. .map-for-num-p {
  493. margin-top:10px;
  494. padding: 0 10px;
  495. height: 20px;
  496. line-height: 20px;
  497. font-size: 16px;
  498. text-align: center;
  499. color: #fff;
  500. overflow: hidden;
  501. text-overflow: ellipsis;
  502. white-space: nowrap;
  503. }
  504. .position-box {
  505. position: absolute;
  506. font-size: 14px;
  507. overflow: hidden;
  508. }
  509. .center-move-door-p-t {
  510. background: url("../../assets/image/icon_pmbjt_m.png") !important;
  511. background-size: 100% !important;
  512. transform: rotate(180deg);
  513. }
  514. .center-move-door-p-b {
  515. background: url("../../assets/image/icon_pmbjt_m.png") !important;
  516. background-size: 100% !important;
  517. }
  518. .center-move-door-p-l {
  519. background: url("../../assets/image/icon_pmbjt_m.png") !important;
  520. background-size: 100% !important;
  521. transform: rotate(90deg);
  522. }
  523. .center-move-door-p-r {
  524. background: url("../../assets/image/icon_pmbjt_m.png") !important;
  525. background-size: 100% !important;
  526. transform: rotateZ(270deg);
  527. }
  528. }
  529. }
  530. .for-map-box-one {
  531. /*background: rgba(7, 36, 54, 1px;*/
  532. border: 1px solid #fff;
  533. }
  534. .for-map-box {
  535. /*background: rgba(1,16,32,1px;*/
  536. /*background: rgba(6, 30, 48, 1px;*/
  537. }
  538. .for-map-box-two {
  539. /*background: url("../assets/image/icon_jjck.png") center center no-repeat rgba(24, 137, 60, 1px;*/
  540. background: url("../../assets/image/icon_jjck.png") center center no-repeat rgba(24, 137, 60, 0);
  541. background-size: 80px 80px;
  542. }
  543. .for-map-box-two-check {
  544. /*background: url("../assets/image/icon_jjck.png") center center no-repeat rgba(50, 205, 50, 1px;*/
  545. background: url("../../assets/image/icon_jjck.png") center center no-repeat rgba(50, 205, 50, 0);
  546. background-size: 80px 80px;
  547. }
  548. .room-type-one {
  549. //选中
  550. background: rgba(30, 118, 142, 0.4);
  551. }
  552. .room-type-two {
  553. //报警
  554. background: rgba(232, 0, 0, 0.4);
  555. box-shadow: 0 0 10px 1px #E80000 inset;
  556. }
  557. .room-type-three {
  558. //选中报警
  559. background: rgba(30, 118, 142, 0.4);
  560. box-shadow: 0 0 10px 1px #E80000 inset;
  561. }
  562. .room-type-noe {
  563. /*border:1px solid #666;*/
  564. /*background: rgba(102,102,102,0.6px;*/
  565. }
  566. }
  567. }
  568. }
  569. .center-bottom-max-big-box{
  570. margin-top:40px;
  571. width:1270px;
  572. height:220px;
  573. white-space: nowrap;
  574. .center-bottom-for-big-box:nth-child(1){
  575. margin-left:0;
  576. }
  577. .center-bottom-for-big-box{
  578. cursor: pointer;
  579. margin-left:20px;
  580. display: inline-block;
  581. width:300px;
  582. height:200px;
  583. .center-bottom-for-min-box{
  584. width:302px;
  585. height:162px;
  586. border:1px solid #666;
  587. position: relative;
  588. .evacuation-shade-map-big-box {
  589. position: absolute;
  590. top: 50%;
  591. left: 50%;
  592. -webkit-user-select: none;
  593. .evacuation-shade-map-box {
  594. position: relative;
  595. overflow: hidden;
  596. .evacuation-shade-map-for-box {
  597. position: absolute;
  598. display: flex;
  599. flex-direction: column;
  600. overflow: hidden;
  601. .evacuation-shade-map-min-box {
  602. height: 100%;
  603. position: relative;
  604. .map-for-name-p {
  605. padding: 0 10px;
  606. height: 20px;
  607. line-height: 20px;
  608. font-size: 16px;
  609. text-align: center;
  610. color: #fff;
  611. overflow: hidden;
  612. text-overflow: ellipsis;
  613. white-space: nowrap;
  614. }
  615. .map-for-num-p {
  616. margin-top:10px;
  617. padding: 0 10px;
  618. height: 20px;
  619. line-height: 20px;
  620. font-size: 16px;
  621. text-align: center;
  622. color: #fff;
  623. overflow: hidden;
  624. text-overflow: ellipsis;
  625. white-space: nowrap;
  626. }
  627. .position-box {
  628. position: absolute;
  629. font-size: 14px;
  630. overflow: hidden;
  631. }
  632. .center-move-door-p-t {
  633. background: url("../../assets/image/icon_pmbjt_m.png") !important;
  634. background-size: 100% !important;
  635. transform: rotate(180deg);
  636. }
  637. .center-move-door-p-b {
  638. background: url("../../assets/image/icon_pmbjt_m.png") !important;
  639. background-size: 100% !important;
  640. }
  641. .center-move-door-p-l {
  642. background: url("../../assets/image/icon_pmbjt_m.png") !important;
  643. background-size: 100% !important;
  644. transform: rotate(90deg);
  645. }
  646. .center-move-door-p-r {
  647. background: url("../../assets/image/icon_pmbjt_m.png") !important;
  648. background-size: 100% !important;
  649. transform: rotateZ(270deg);
  650. }
  651. }
  652. }
  653. .for-map-box-one {
  654. /*background: rgba(7, 36, 54, 1px;*/
  655. border: 1px solid #fff;
  656. }
  657. .for-map-box {
  658. /*background: rgba(1,16,32,1px;*/
  659. /*background: rgba(6, 30, 48, 1px;*/
  660. }
  661. .for-map-box-two {
  662. /*background: url("../assets/image/icon_jjck.png") center center no-repeat rgba(24, 137, 60, 1px;*/
  663. background: url("../../assets/image/icon_jjck.png") center center no-repeat rgba(6,35,56,0)!important;
  664. background-size: 80px 80px;
  665. }
  666. .for-map-box-two-check {
  667. /*background: url("../assets/image/icon_jjck.png") center center no-repeat rgba(50, 205, 50, 1px;*/
  668. background: url("../../assets/image/icon_jjck.png") center center no-repeat rgba(50, 205, 50, 0);
  669. background-size: 80px 80px;
  670. }
  671. .room-type-one {
  672. //选中
  673. background: rgba(30, 118, 142, 0.4);
  674. }
  675. .room-type-two {
  676. //报警
  677. background: rgba(232, 0, 0, 0.4);
  678. box-shadow: 0 0 10px 1px #E80000 inset;
  679. }
  680. .room-type-three {
  681. //选中报警
  682. background: rgba(30, 118, 142, 0.4);
  683. box-shadow: 0 0 10px 1px #E80000 inset;
  684. }
  685. .room-type-noe {
  686. /*border:1px solid #666;*/
  687. /*background: rgba(102,102,102,0.6px;*/
  688. }
  689. }
  690. }
  691. }
  692. .max-for-name-p{
  693. line-height:40px;
  694. font-size:18px;
  695. color:#fff;
  696. text-align: center;
  697. display:block;
  698. overflow:hidden;
  699. text-overflow:ellipsis;
  700. white-space:nowrap;
  701. }
  702. }
  703. .checkFloor{
  704. .center-bottom-for-min-box{
  705. border:1px solid #1ED0F8!important;
  706. }
  707. .max-for-name-p{
  708. color:#1ED0F8!important;
  709. }
  710. }
  711. .center-bottom-for-big-box-position{
  712. position: absolute;
  713. top:9999px;
  714. left:9999px;
  715. z-index: -100;
  716. display: inline-block;
  717. width:300px;
  718. height:160px;
  719. }
  720. }
  721. }
  722. .right-big-box {
  723. width: 290px;
  724. height: 880px;
  725. overflow: hidden;
  726. .lv-max-box {
  727. height: 800px;
  728. margin-top: 80px;
  729. margin-left: 100px;
  730. .lv-for-box {
  731. display: flex;
  732. margin-bottom: 18px;
  733. p:nth-child(1) {
  734. width: 18px;
  735. height: 18px;
  736. }
  737. p:nth-child(2) {
  738. margin-left: 20px;
  739. color: #fff;
  740. font-size: 16px;
  741. }
  742. }
  743. }
  744. }
  745. //滚动条
  746. .scrollbar-box{
  747. overflow-y: scroll;
  748. }
  749. .scrollbar-box::-webkit-scrollbar{
  750. width: 4px; /*高宽分别对应横竖滚动条的尺寸*/
  751. height: 4px;
  752. }
  753. .scrollbar-box::-webkit-scrollbar-thumb{
  754. border-radius: 5px;
  755. -webkit-box-shadow: inset 0 0 5px #999;
  756. background: #fff;
  757. }
  758. .scrollbar-box::-webkit-scrollbar-track{
  759. -webkit-box-shadow: inset 0 0 5px rgba(255,255,255,0);
  760. border-radius: 0;
  761. background: rgba(255,255,255,0);
  762. }
  763. .scrollbar-x-box{
  764. overflow-y: hidden;
  765. overflow-x: scroll;
  766. }
  767. .scrollbar-x-box::-webkit-scrollbar{
  768. width: 4px; /*高宽分别对应横竖滚动条的尺寸*/
  769. height: 4px;
  770. }
  771. .scrollbar-x-box::-webkit-scrollbar-thumb{
  772. border-radius: 5px;
  773. -webkit-box-shadow: inset 0 0 5px #999;
  774. background: #fff;
  775. }
  776. .scrollbar-x-box::-webkit-scrollbar-track{
  777. -webkit-box-shadow: inset 0 0 5px rgba(255,255,255,0);
  778. border-radius: 0;
  779. background: rgba(255,255,255,0);
  780. }
  781. }
  782. .main_t_b {
  783. position: absolute;
  784. width: 1490px;
  785. height: 794px;
  786. margin-left: 282px;
  787. margin-top: 80px;
  788. }
  789. }
  790. }
  791. </style>
  792. <style lang="scss">
  793. li {
  794. list-style: none
  795. }
  796. i, em, b {
  797. font-style: normal;
  798. font-weight: 100;
  799. }
  800. body {
  801. margin: 0
  802. }
  803. </style>