classifyGradeDetail.vue 48 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936
  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.titleColor+';'"></p>
  97. <p>{{item.titleName}}</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. laboratoryLevelConfigGetLevelTitleList,
  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.laboratoryLevelConfigGetLevelTitleList();
  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. floorNum: null,
  173. groupName: null,
  174. id: "101093843117592688",
  175. imgUrl: null,
  176. name: "南校区",
  177. parentId: "0",
  178. roomNum: null,
  179. sortNo: 1,
  180. type: 1,
  181. buildFloorVoList:[{
  182. "id": "101093843117592803",
  183. "name": "农科楼(资源环境学院)",
  184. "type": 2,
  185. "imgUrl": null,
  186. "parentId": "101093843117592688",
  187. "sortNo": 1,
  188. "floorNum": null,
  189. "roomNum": null,
  190. "groupName": null,
  191. "buildFloorVoList": [{
  192. "id": "101093843117593020",
  193. "name": "1层",
  194. "type": 3,
  195. "imgUrl": null,
  196. "parentId": "101093843117592803",
  197. "sortNo": 1,
  198. "floorNum": null,
  199. "roomNum": null,
  200. "groupName": null,
  201. "buildFloorVoList": []
  202. }, {
  203. "id": "101093843117593021",
  204. "name": "2层",
  205. "type": 3,
  206. "imgUrl": null,
  207. "parentId": "101093843117592803",
  208. "sortNo": 1,
  209. "floorNum": null,
  210. "roomNum": null,
  211. "groupName": null,
  212. "buildFloorVoList": []
  213. }, {
  214. "id": "101093843117593022",
  215. "name": "9层",
  216. "type": 3,
  217. "imgUrl": null,
  218. "parentId": "101093843117592803",
  219. "sortNo": 1,
  220. "floorNum": null,
  221. "roomNum": null,
  222. "groupName": null,
  223. "buildFloorVoList": []
  224. }, {
  225. "id": "101093843117593023",
  226. "name": "3层",
  227. "type": 3,
  228. "imgUrl": null,
  229. "parentId": "101093843117592803",
  230. "sortNo": 1,
  231. "floorNum": null,
  232. "roomNum": null,
  233. "groupName": null,
  234. "buildFloorVoList": []
  235. }, {
  236. "id": "101093843117593024",
  237. "name": "4层",
  238. "type": 3,
  239. "imgUrl": null,
  240. "parentId": "101093843117592803",
  241. "sortNo": 1,
  242. "floorNum": null,
  243. "roomNum": null,
  244. "groupName": null,
  245. "buildFloorVoList": []
  246. }, {
  247. "id": "101093843117593025",
  248. "name": "5层",
  249. "type": 3,
  250. "imgUrl": null,
  251. "parentId": "101093843117592803",
  252. "sortNo": 1,
  253. "floorNum": null,
  254. "roomNum": null,
  255. "groupName": null,
  256. "buildFloorVoList": []
  257. }, {
  258. "id": "101093843117593026",
  259. "name": "6层",
  260. "type": 3,
  261. "imgUrl": null,
  262. "parentId": "101093843117592803",
  263. "sortNo": 1,
  264. "floorNum": null,
  265. "roomNum": null,
  266. "groupName": null,
  267. "buildFloorVoList": []
  268. }, {
  269. "id": "101093843117593027",
  270. "name": "7层",
  271. "type": 3,
  272. "imgUrl": null,
  273. "parentId": "101093843117592803",
  274. "sortNo": 1,
  275. "floorNum": null,
  276. "roomNum": null,
  277. "groupName": null,
  278. "buildFloorVoList": []
  279. }, {
  280. "id": "101093843117593028",
  281. "name": "8层",
  282. "type": 3,
  283. "imgUrl": null,
  284. "parentId": "101093843117592803",
  285. "sortNo": 1,
  286. "floorNum": null,
  287. "roomNum": null,
  288. "groupName": null,
  289. "buildFloorVoList": []
  290. }]
  291. }]
  292. }];
  293. // for(let i=0;i<response.data.length;i++){
  294. // let num = 0;
  295. // if(response.data[i].buildFloorVoList[0]){
  296. // for(let o=0;o<response.data[i].buildFloorVoList.length;o++){
  297. // if(response.data[i].buildFloorVoList[o].buildFloorVoList[0]){
  298. // for(let x=0;x<response.data[i].buildFloorVoList[o].buildFloorVoList.length;x++){
  299. // num++
  300. // }
  301. // }
  302. // }
  303. // }
  304. // if(num != 0){
  305. // list.push(response.data[i]);
  306. // }
  307. // }
  308. this.$set(this,'buildingOptions',list);
  309. if(list[0]){
  310. this.laboratoryBigViewGetFloorListByBigView(list[0].id,list[0].buildFloorVoList[0].id);
  311. }
  312. }
  313. })
  314. },
  315. //获取楼层数据
  316. laboratoryBigViewGetFloorListByBigView(campusId,buildingId) {
  317. let self = this;
  318. this.$set(this,'mapBoxWidth',parseInt(this.$refs.centerBox.getBoundingClientRect().width));
  319. this.$set(this,'mapBoxHeight',parseInt(this.$refs.centerBox.getBoundingClientRect().height));
  320. this.$set(this,'minMapBoxWidth',parseInt(this.$refs.minForBox.getBoundingClientRect().width));
  321. this.$set(this,'minMapBoxHeight',parseInt(this.$refs.minForBox.getBoundingClientRect().height));
  322. laboratoryBigViewGetFloorListByBigView({id : buildingId}).then((response) => {
  323. if (response.code == 200) {
  324. let list = [];
  325. console.log('response.data',response.data);
  326. for(let i=0;i<response.data.length;i++){
  327. if(response.data[i].buildLayoutVoList){
  328. if(response.data[i].buildLayoutVoList[0]){
  329. this.$set(this,'floorId',null);
  330. let obj = {
  331. id:response.data[i].id,
  332. name:response.data[i].name,
  333. parentId:response.data[i].parentId,
  334. subNum:response.data[i].subNum,
  335. buildFloorLayoutVoList:response.data[i].buildLayoutVoList,
  336. checkType:i==0?true:false,
  337. }
  338. let minList = JSON.parse(response.data[i].labExitLineVo.layoutJoinData)
  339. for(let x=0;x<minList.length;x++){
  340. if(minList[x].type == '1'){
  341. for(let o=0;o<response.data[i].buildLayoutVoList.length;o++){
  342. if(minList[x].key == response.data[i].buildLayoutVoList[o].pointName){
  343. minList[x].id = response.data[i].buildLayoutVoList[o].id;
  344. minList[x].buildId = response.data[i].buildLayoutVoList[o].buildId;
  345. minList[x].floorId = response.data[i].buildLayoutVoList[o].floorId;
  346. minList[x].roomType = response.data[i].buildLayoutVoList[o].roomType;
  347. minList[x].roomName = response.data[i].buildLayoutVoList[o].roomName;
  348. minList[x].roomNum = response.data[i].buildLayoutVoList[o].roomNum;
  349. minList[x].subName = response.data[i].buildLayoutVoList[o].subName;
  350. minList[x].subId = response.data[i].buildLayoutVoList[o].subId;
  351. minList[x].classifiedId = response.data[i].buildLayoutVoList[o].classifiedId?response.data[i].buildLayoutVoList[o].classifiedId:'';
  352. minList[x].classifiedColor = response.data[i].buildLayoutVoList[o].levelColor?response.data[i].buildLayoutVoList[o].levelColor:'#093751';
  353. minList[x].typeId = response.data[i].buildLayoutVoList[o].typeId?response.data[i].buildLayoutVoList[o].typeId:'';
  354. }
  355. }
  356. }
  357. }
  358. let minObj = this.calculateMapMax(minList,this.mapBoxHeight,this.mapBoxWidth);
  359. let minObjTwo = this.calculateMapMax(minList,this.minMapBoxHeight,this.minMapBoxWidth);
  360. obj.width = minObj.maxWidth;
  361. obj.height = minObj.maxHeight;
  362. obj.zoomData = minObj.zoomData;
  363. obj.minWidth = minObjTwo.maxWidth;
  364. obj.minHeight = minObjTwo.maxHeight;
  365. obj.minZoomData = minObjTwo.zoomData;
  366. obj.mapList = JSON.parse(JSON.stringify(minList));
  367. list.push(obj);
  368. }
  369. }
  370. }
  371. if(list[0]){
  372. this.$set(this,'campusId',campusId);
  373. this.$set(this,'buildingId',buildingId);
  374. this.$set(this,'floorList',list);
  375. this.$set(this,'floorId',list[0].id);
  376. this.floorCheck(0)
  377. }else{
  378. this.$message({
  379. type:'error',
  380. message:'该楼栋下未配置楼层',
  381. iconClass:'123',
  382. });
  383. }
  384. }else{
  385. this.$message({
  386. type:'error',
  387. message:'该楼栋下未配置楼层',
  388. iconClass:'123',
  389. });
  390. }
  391. })
  392. },
  393. //选中楼层
  394. floorCheck(index){
  395. if(index != this.floorId){
  396. this.$set(this,'newMapData',this.floorList[index]);
  397. this.$set(this,'floorId',this.floorList[index].id);
  398. this.$forceUpdate;
  399. }
  400. },
  401. //获取实验室数据
  402. getNoAuthList(){
  403. getNoAuthList().then((response) => {
  404. if (response.code == 200) {
  405. }
  406. })
  407. },
  408. //获取分级数据
  409. laboratoryLevelConfigGetLevelTitleList() {
  410. laboratoryLevelConfigGetLevelTitleList({}).then((response) => {
  411. if (response.code == 200) {
  412. this.$set(this, 'lvList', response.data);
  413. }
  414. })
  415. },
  416. //返回按钮
  417. back() {
  418. this.$router.push('/home')
  419. },
  420. //计算布局最大尺寸
  421. calculateMapMax(list, height, width) {
  422. //基础参数
  423. let maxWidth = 0
  424. let maxHeight = 0
  425. let zoomData = 1;
  426. //参数处理
  427. for (let i = 0; i < list.length; i++) {
  428. if ((list[i].x + list[i].w) > maxWidth) {
  429. maxWidth = list[i].x + list[i].w
  430. }
  431. if ((list[i].y + list[i].h) > maxHeight) {
  432. maxHeight = list[i].y + list[i].h
  433. }
  434. }
  435. //处理等值数据
  436. if (maxHeight == height) {
  437. maxHeight++
  438. }
  439. if (maxWidth == width) {
  440. maxWidth++
  441. }
  442. //缩放判断
  443. let zoomNumOne = height / maxHeight;
  444. if (parseInt(this.accMul(zoomNumOne, maxHeight)) <= height && parseInt(this.accMul(zoomNumOne, maxWidth)) <= width) {
  445. zoomData = zoomNumOne;
  446. }
  447. let zoomNumTwo = width / maxWidth;
  448. if (parseInt(this.accMul(zoomNumTwo, maxHeight)) <= height && parseInt(this.accMul(zoomNumTwo, maxWidth)) <= width) {
  449. zoomData = zoomNumTwo;
  450. }
  451. return {maxWidth: maxWidth, maxHeight: maxHeight, zoomData: zoomData}
  452. },
  453. accMul(arg1, arg2) {
  454. var m = 0, s1 = arg1.toString(), s2 = arg2.toString();
  455. try {
  456. m += s1.split(".")[1].length
  457. } catch (e) {
  458. }
  459. try {
  460. m += s2.split(".")[1].length
  461. } catch (e) {
  462. }
  463. return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m)
  464. },
  465. },
  466. }
  467. </script>
  468. <!-- Add "scoped" attribute to limit CSS to this component only -->
  469. <style lang="scss" scoped>
  470. * {
  471. padding: 0;
  472. margin: 0;
  473. box-sizing: border-box;
  474. }
  475. .main {
  476. width: 1920px;
  477. height: 1080px;
  478. /* background: url("../img/index_bg.png") no-repeat;
  479. background-size: 100% 100%;*/
  480. position: relative;
  481. left: 0;
  482. top: 0;
  483. z-index: 50;
  484. background: #062338;
  485. .main_t {
  486. width: 1852px;
  487. height: 955px;
  488. position: absolute;
  489. left: 34px;
  490. top: 86px;
  491. z-index: 200;
  492. overflow: hidden;
  493. display: flex;
  494. flex-direction: column;
  495. background: #093751;
  496. margin-top:20px;
  497. .main_t_t {
  498. margin: 20px 0 0 18px;
  499. > i {
  500. font-size: 16px;
  501. font-family: Microsoft YaHei;
  502. font-weight: bold;
  503. color: #FFFFFF;
  504. line-height: 16px;
  505. }
  506. > i:nth-of-type(1) {
  507. }
  508. > i:nth-of-type(2) {
  509. color: #1ED0F8;
  510. }
  511. }
  512. .max-big-box {
  513. flex: 1;
  514. display: flex;
  515. overflow: hidden;
  516. .left-big-box {
  517. width: 270px;
  518. height: 880px;
  519. overflow: hidden;
  520. margin-left:20px;
  521. .max-building-box{
  522. margin-top:80px;
  523. margin-right:20px;
  524. height: 800px;
  525. .for-building-box:nth-child(1){
  526. border:none;
  527. }
  528. .for-building-box{
  529. margin-right:20px;
  530. margin-bottom:20px;
  531. border-top:1px dashed #1095FB;
  532. .item-name{
  533. margin-top:20px;
  534. flex:1;
  535. display:block;
  536. overflow:hidden;
  537. text-overflow:ellipsis;
  538. white-space:nowrap;
  539. color:#fff;
  540. font-size:16px;
  541. line-height:20px;
  542. margin-bottom:20px;
  543. }
  544. .min-for-box{
  545. cursor: pointer;
  546. display: flex;;
  547. margin-bottom:10px;
  548. p:nth-child(1){
  549. width:10px;
  550. height:10px;
  551. margin:5px 10px 5px 20px;
  552. border-radius:50%;
  553. }
  554. p:nth-child(2){
  555. flex:1;
  556. display:block;
  557. overflow:hidden;
  558. text-overflow:ellipsis;
  559. white-space:nowrap;
  560. color:#fff;
  561. font-size:14px;
  562. line-height:20px;
  563. }
  564. }
  565. .check-item-back{
  566. background:#1ED0F8;
  567. }
  568. .check-item-color{
  569. color:#1ED0F8!important;
  570. }
  571. }
  572. }
  573. }
  574. .center-big-box {
  575. /*background: #fff;*/
  576. display: flex;
  577. flex-direction: column;
  578. flex: 1;
  579. overflow: hidden;
  580. .center-map-big-box {
  581. margin-top: 80px;
  582. height: 600px;
  583. /*background: #0E9EED;*/
  584. position: relative;
  585. .evacuation-shade-map-big-box {
  586. position: absolute;
  587. top: 50%;
  588. left: 50%;
  589. -webkit-user-select: none;
  590. .evacuation-shade-map-box {
  591. position: relative;
  592. border: 1px dashed #fff;
  593. overflow: hidden;
  594. .evacuation-shade-map-for-box {
  595. position: absolute;
  596. display: flex;
  597. flex-direction: column;
  598. overflow: hidden;
  599. .evacuation-shade-map-min-box {
  600. height: 100%;
  601. position: relative;
  602. .map-for-name-p {
  603. padding: 0 10px;
  604. height: 20px;
  605. line-height: 20px;
  606. font-size: 16px;
  607. text-align: center;
  608. color: #fff;
  609. overflow: hidden;
  610. text-overflow: ellipsis;
  611. white-space: nowrap;
  612. }
  613. .map-for-num-p {
  614. margin-top:10px;
  615. padding: 0 10px;
  616. height: 20px;
  617. line-height: 20px;
  618. font-size: 16px;
  619. text-align: center;
  620. color: #fff;
  621. overflow: hidden;
  622. text-overflow: ellipsis;
  623. white-space: nowrap;
  624. }
  625. .position-box {
  626. position: absolute;
  627. font-size: 14px;
  628. overflow: hidden;
  629. }
  630. .center-move-door-p-t {
  631. background: url("../../assets/image/icon_pmbjt_m.png") !important;
  632. background-size: 100% !important;
  633. transform: rotate(180deg);
  634. }
  635. .center-move-door-p-b {
  636. background: url("../../assets/image/icon_pmbjt_m.png") !important;
  637. background-size: 100% !important;
  638. }
  639. .center-move-door-p-l {
  640. background: url("../../assets/image/icon_pmbjt_m.png") !important;
  641. background-size: 100% !important;
  642. transform: rotate(90deg);
  643. }
  644. .center-move-door-p-r {
  645. background: url("../../assets/image/icon_pmbjt_m.png") !important;
  646. background-size: 100% !important;
  647. transform: rotateZ(270deg);
  648. }
  649. }
  650. }
  651. .for-map-box-one {
  652. /*background: rgba(7, 36, 54, 1px;*/
  653. border: 1px solid #fff;
  654. }
  655. .for-map-box {
  656. /*background: rgba(1,16,32,1px;*/
  657. /*background: rgba(6, 30, 48, 1px;*/
  658. }
  659. .for-map-box-two {
  660. /*background: url("../assets/image/icon_jjck.png") center center no-repeat rgba(24, 137, 60, 1px;*/
  661. background: url("../../assets/image/icon_jjck.png") center center no-repeat rgba(24, 137, 60, 0);
  662. background-size: 80px 80px;
  663. }
  664. .for-map-box-two-check {
  665. /*background: url("../assets/image/icon_jjck.png") center center no-repeat rgba(50, 205, 50, 1px;*/
  666. background: url("../../assets/image/icon_jjck.png") center center no-repeat rgba(50, 205, 50, 0);
  667. background-size: 80px 80px;
  668. }
  669. .room-type-one {
  670. //选中
  671. background: rgba(30, 118, 142, 0.4);
  672. }
  673. .room-type-two {
  674. //报警
  675. background: rgba(232, 0, 0, 0.4);
  676. box-shadow: 0 0 10px 1px #E80000 inset;
  677. }
  678. .room-type-three {
  679. //选中报警
  680. background: rgba(30, 118, 142, 0.4);
  681. box-shadow: 0 0 10px 1px #E80000 inset;
  682. }
  683. .room-type-noe {
  684. /*border:1px solid #666;*/
  685. /*background: rgba(102,102,102,0.6px;*/
  686. }
  687. }
  688. }
  689. }
  690. .center-bottom-max-big-box{
  691. margin-top:40px;
  692. width:1270px;
  693. height:220px;
  694. white-space: nowrap;
  695. .center-bottom-for-big-box:nth-child(1){
  696. margin-left:0;
  697. }
  698. .center-bottom-for-big-box{
  699. cursor: pointer;
  700. margin-left:20px;
  701. display: inline-block;
  702. width:300px;
  703. height:200px;
  704. .center-bottom-for-min-box{
  705. width:302px;
  706. height:162px;
  707. border:1px solid #666;
  708. position: relative;
  709. .evacuation-shade-map-big-box {
  710. position: absolute;
  711. top: 50%;
  712. left: 50%;
  713. -webkit-user-select: none;
  714. .evacuation-shade-map-box {
  715. position: relative;
  716. overflow: hidden;
  717. .evacuation-shade-map-for-box {
  718. position: absolute;
  719. display: flex;
  720. flex-direction: column;
  721. overflow: hidden;
  722. .evacuation-shade-map-min-box {
  723. height: 100%;
  724. position: relative;
  725. .map-for-name-p {
  726. padding: 0 10px;
  727. height: 20px;
  728. line-height: 20px;
  729. font-size: 16px;
  730. text-align: center;
  731. color: #fff;
  732. overflow: hidden;
  733. text-overflow: ellipsis;
  734. white-space: nowrap;
  735. }
  736. .map-for-num-p {
  737. margin-top:10px;
  738. padding: 0 10px;
  739. height: 20px;
  740. line-height: 20px;
  741. font-size: 16px;
  742. text-align: center;
  743. color: #fff;
  744. overflow: hidden;
  745. text-overflow: ellipsis;
  746. white-space: nowrap;
  747. }
  748. .position-box {
  749. position: absolute;
  750. font-size: 14px;
  751. overflow: hidden;
  752. }
  753. .center-move-door-p-t {
  754. background: url("../../assets/image/icon_pmbjt_m.png") !important;
  755. background-size: 100% !important;
  756. transform: rotate(180deg);
  757. }
  758. .center-move-door-p-b {
  759. background: url("../../assets/image/icon_pmbjt_m.png") !important;
  760. background-size: 100% !important;
  761. }
  762. .center-move-door-p-l {
  763. background: url("../../assets/image/icon_pmbjt_m.png") !important;
  764. background-size: 100% !important;
  765. transform: rotate(90deg);
  766. }
  767. .center-move-door-p-r {
  768. background: url("../../assets/image/icon_pmbjt_m.png") !important;
  769. background-size: 100% !important;
  770. transform: rotateZ(270deg);
  771. }
  772. }
  773. }
  774. .for-map-box-one {
  775. /*background: rgba(7, 36, 54, 1px;*/
  776. border: 1px solid #fff;
  777. }
  778. .for-map-box {
  779. /*background: rgba(1,16,32,1px;*/
  780. /*background: rgba(6, 30, 48, 1px;*/
  781. }
  782. .for-map-box-two {
  783. /*background: url("../assets/image/icon_jjck.png") center center no-repeat rgba(24, 137, 60, 1px;*/
  784. background: url("../../assets/image/icon_jjck.png") center center no-repeat rgba(6,35,56,0)!important;
  785. background-size: 80px 80px;
  786. }
  787. .for-map-box-two-check {
  788. /*background: url("../assets/image/icon_jjck.png") center center no-repeat rgba(50, 205, 50, 1px;*/
  789. background: url("../../assets/image/icon_jjck.png") center center no-repeat rgba(50, 205, 50, 0);
  790. background-size: 80px 80px;
  791. }
  792. .room-type-one {
  793. //选中
  794. background: rgba(30, 118, 142, 0.4);
  795. }
  796. .room-type-two {
  797. //报警
  798. background: rgba(232, 0, 0, 0.4);
  799. box-shadow: 0 0 10px 1px #E80000 inset;
  800. }
  801. .room-type-three {
  802. //选中报警
  803. background: rgba(30, 118, 142, 0.4);
  804. box-shadow: 0 0 10px 1px #E80000 inset;
  805. }
  806. .room-type-noe {
  807. /*border:1px solid #666;*/
  808. /*background: rgba(102,102,102,0.6px;*/
  809. }
  810. }
  811. }
  812. }
  813. .max-for-name-p{
  814. line-height:40px;
  815. font-size:18px;
  816. color:#fff;
  817. text-align: center;
  818. display:block;
  819. overflow:hidden;
  820. text-overflow:ellipsis;
  821. white-space:nowrap;
  822. }
  823. }
  824. .checkFloor{
  825. .center-bottom-for-min-box{
  826. border:1px solid #1ED0F8!important;
  827. }
  828. .max-for-name-p{
  829. color:#1ED0F8!important;
  830. }
  831. }
  832. .center-bottom-for-big-box-position{
  833. position: absolute;
  834. top:9999px;
  835. left:9999px;
  836. z-index: -100;
  837. display: inline-block;
  838. width:300px;
  839. height:160px;
  840. }
  841. }
  842. }
  843. .right-big-box {
  844. width: 290px;
  845. height: 880px;
  846. overflow: hidden;
  847. .lv-max-box {
  848. height: 800px;
  849. margin-top: 80px;
  850. margin-left: 100px;
  851. .lv-for-box {
  852. display: flex;
  853. margin-bottom: 18px;
  854. p:nth-child(1) {
  855. width: 18px;
  856. height: 18px;
  857. }
  858. p:nth-child(2) {
  859. margin-left: 20px;
  860. color: #fff;
  861. font-size: 16px;
  862. }
  863. }
  864. }
  865. }
  866. //滚动条
  867. .scrollbar-box{
  868. overflow-y: scroll;
  869. }
  870. .scrollbar-box::-webkit-scrollbar{
  871. width: 4px; /*高宽分别对应横竖滚动条的尺寸*/
  872. height: 4px;
  873. }
  874. .scrollbar-box::-webkit-scrollbar-thumb{
  875. border-radius: 5px;
  876. -webkit-box-shadow: inset 0 0 5px #999;
  877. background: #fff;
  878. }
  879. .scrollbar-box::-webkit-scrollbar-track{
  880. -webkit-box-shadow: inset 0 0 5px rgba(255,255,255,0);
  881. border-radius: 0;
  882. background: rgba(255,255,255,0);
  883. }
  884. .scrollbar-x-box{
  885. overflow-y: hidden;
  886. overflow-x: scroll;
  887. }
  888. .scrollbar-x-box::-webkit-scrollbar{
  889. width: 4px; /*高宽分别对应横竖滚动条的尺寸*/
  890. height: 4px;
  891. }
  892. .scrollbar-x-box::-webkit-scrollbar-thumb{
  893. border-radius: 5px;
  894. -webkit-box-shadow: inset 0 0 5px #999;
  895. background: #fff;
  896. }
  897. .scrollbar-x-box::-webkit-scrollbar-track{
  898. -webkit-box-shadow: inset 0 0 5px rgba(255,255,255,0);
  899. border-radius: 0;
  900. background: rgba(255,255,255,0);
  901. }
  902. }
  903. .main_t_b {
  904. position: absolute;
  905. width: 1490px;
  906. height: 794px;
  907. margin-left: 282px;
  908. margin-top: 80px;
  909. }
  910. }
  911. }
  912. </style>
  913. <style lang="scss">
  914. li {
  915. list-style: none
  916. }
  917. i, em, b {
  918. font-style: normal;
  919. font-weight: 100;
  920. }
  921. body {
  922. margin: 0
  923. }
  924. </style>