newIndex.vue 77 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943
  1. <!--新版布局管理-->
  2. <template>
  3. <div class="app-container building">
  4. <div class="buildingManagement" v-if="pageType == 1">
  5. <div class="max-left-box">
  6. <div class="tree-box scrollbar-box" v-if="treeList[0]">
  7. <div class="terr-max-box" v-for="(item,index) in treeList" :key="index">
  8. <div class="max-name-box">
  9. <p class="max-name" :class="checkTreeId==item.id?'check-color':''" @click="clickCheckTree(item,1)">
  10. {{item.name}}</p>
  11. <el-dropdown @command="(command)=>handleCommand(command,item)" trigger="click">
  12. <img src="@/assets/ZDimages/evacuation3_2/icon_bjgl_gd.png"
  13. style="cursor:pointer;width:16px;height:4px;margin-top:7px;">
  14. <el-dropdown-menu slot="dropdown">
  15. <el-dropdown-item command="1">编辑</el-dropdown-item>
  16. <el-dropdown-item command="2">删除</el-dropdown-item>
  17. </el-dropdown-menu>
  18. </el-dropdown>
  19. </div>
  20. <div class="terr-big-box" v-for="(itemOne,indexOne) in item.buildFloorVoList" :key="indexOne">
  21. <div class="big-name-box">
  22. <p v-if="!itemOne.buildFloorVoList[0]" style="width:16px;"></p>
  23. <img v-if="!itemOne.onType&&itemOne.buildFloorVoList[0]"
  24. src="@/assets/ZDimages/evacuation3_2/icon_bjgl_jt.png" @click="terrClick(itemOne)">
  25. <img v-if="itemOne.onType&&itemOne.buildFloorVoList[0]"
  26. src="@/assets/ZDimages/evacuation3_2/icon_bjgl_xjt.png" @click="terrClick(itemOne)">
  27. <p class="name-p" :class="checkTreeId==itemOne.id?'check-color':''" @click="clickCheckTree(itemOne,2)">
  28. {{itemOne.name}}</p>
  29. </div>
  30. <div v-if="itemOne.onType" class="terr-min-box" v-for="(itemTwo,indexTwo) in itemOne.buildFloorVoList"
  31. :key="indexTwo">
  32. <p class="min-name" :class="checkTreeId==itemTwo.id?'check-color':''"
  33. @click="clickCheckTree(itemTwo,3)">{{itemTwo.name}}</p>
  34. </div>
  35. </div>
  36. </div>
  37. </div>
  38. <p class="tree-null-p" v-if="!treeList[0]">暂无数据</p>
  39. <p class="max-left-big-button" @click="handleCommand(3)">+ 新增校院</p>
  40. </div>
  41. <div class="max-right-box">
  42. <div class="school-box" v-if="checkTreeType == 1">
  43. <div class="max-right-button-box">
  44. <p class="null-p"></p>
  45. <p class="max-right-big-button" @click="handleCommand(4)">+ 新增楼栋</p>
  46. </div>
  47. <div class="right-big-list-box scrollbar-box">
  48. <div class="for-max-box" v-for="(item,index) in buildingList" :key="index"
  49. @dragover.prevent="dragoverPrevent(item)">
  50. <div class="for-big-box">
  51. <div class="for-big-box-left">
  52. <img src="@/assets/ZDimages/evacuation3_2/icon_bjgl_td.png" class="for-img-one"
  53. draggable="true"
  54. @dragstart="dragstartPlay($event)"
  55. @dragend="dragEnterOver($event, item)">
  56. <p class="for-text-one">{{item.name}}</p>
  57. <img src="@/assets/ZDimages/evacuation3_2/icon_bjgl_lcs.png" class="for-img-two">
  58. <div class="for-text-box-one">
  59. <p>{{item.floorNum}}</p>
  60. <p>楼层数</p>
  61. </div>
  62. <img src="@/assets/ZDimages/evacuation3_2/icon_bjgl_fj.png" class="for-img-three">
  63. <div class="for-text-box-two">
  64. <p>{{item.roomNum}}</p>
  65. <p>房间数</p>
  66. </div>
  67. </div>
  68. <div class="for-button-min-box">
  69. <div @click="handleCommand(5,item)">
  70. <img src="@/assets/ZDimages/evacuation3_2/icon_znwl_bj.png">
  71. <p>编辑</p>
  72. </div>
  73. <div @click="handleCommand(6,item)">
  74. <img src="@/assets/ZDimages/evacuation3_2/icon_znwl_sc.png">
  75. <p>删除</p>
  76. </div>
  77. </div>
  78. </div>
  79. </div>
  80. <img class="null-img" v-if="!buildingList[0]" src="@/assets/ZDimages/null-data-1.png">
  81. </div>
  82. </div>
  83. <div class="building-box" v-if="checkTreeType == 2">
  84. <div class="max-right-button-box">
  85. <p class="null-p"></p>
  86. <p class="max-right-big-button" style="margin-right:20px;" @click="handleCommand(7)">+ 新增楼层</p>
  87. <p class="max-right-big-button" @click="floorZK(1)">{{floorZkType==1?'一键收起':'一键展开'}}</p>
  88. </div>
  89. <div class="right-big-list-box scrollbar-box">
  90. <div class="for-max-box" v-for="(item,index) in buildingList" :key="index"
  91. @dragover.prevent="dragoverPrevent(item)">
  92. <div class="for-big-box">
  93. <div class="for-big-box-left">
  94. <img src="@/assets/ZDimages/evacuation3_2/icon_bjgl_td.png" class="for-img-one"
  95. draggable="true"
  96. @dragstart="dragstartPlay($event)"
  97. @dragend="dragEnterOver($event, item)">
  98. <p class="for-text-one">{{item.name}}</p>
  99. </div>
  100. <div class="for-button-min-box">
  101. <div @click="handleCommand(8,item)">
  102. <img src="@/assets/ZDimages/evacuation3_2/icon_znwl_bj.png">
  103. <p>编辑</p>
  104. </div>
  105. <div @click="handleCommand(9,item)">
  106. <img src="@/assets/ZDimages/evacuation3_2/icon_znwl_sc.png">
  107. <p>删除</p>
  108. </div>
  109. <div @click="floorZK(2,index)">
  110. <img src="@/assets/ZDimages/evacuation3_2/icon_bjgl_zk.png">
  111. <p>{{item.onType?'收起':'展开'}}</p>
  112. </div>
  113. </div>
  114. </div>
  115. <div v-if="item.onType">
  116. <div class="layout-data-max-big-box"
  117. v-if="item.layoutData">
  118. <div class="layout-data-max-big-min-box"
  119. :style="'width:'+item.width+'px;height:'+item.height+'px;transform: scale('+item.zoomData+');margin-top:-'+item.height/2+'px;margin-left:-'+item.width/2+'px;'">
  120. <div class="layout-data-max-min-box"
  121. :style="'width:'+item.width+'px;height:'+item.height+'px;'">
  122. <div class="map-max-for-box"
  123. v-for="(bigItem,index) in item.mapList" :key="index"
  124. :class="bigItem.type == 2?'for-map-box-one':''"
  125. :style="'top:'+bigItem.y+'px;left:'+bigItem.x+'px;width:'+bigItem.w+'px;height:'+bigItem.h+'px;'">
  126. <div class="map-max-for-left-box"></div>
  127. <div class="map-max-for-center-box">
  128. <div class="map-max-for-center-min-left"></div>
  129. <div class="map-max-for-center-min-center"
  130. :class="bigItem.type == 2?'for-map-box-one':(bigItem.type == 1?'for-map-box':(bigItem.type == 3?'for-map-box-two':''))">
  131. <div class="min-text-box" v-if="bigItem.type==1">{{bigItem.roomNum}}</div>
  132. <div v-if="bigItem.type == 1"
  133. :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':'')))"
  134. v-for="(minItem,minIndex) in bigItem.doorList" :key="minIndex"
  135. :style="'top:'+minItem.y+'px;left:'+minItem.x+'px;width:'+minItem.w+'px;height:'+minItem.h+'px;'"></div>
  136. <div v-if="bigItem.type == 3"
  137. :class="minItem.toward=='top'?'center-move-door-p-t-ss':(minItem.toward=='bottom'?'center-move-door-p-b-ss':(minItem.toward=='left'?'center-move-door-p-l-ss':(minItem.toward=='right'?'center-move-door-p-r-ss':'')))"
  138. v-for="(minItem,minIndex) in bigItem.doorList" :key="minIndex"
  139. :style="'top:'+minItem.y+'px;left:'+minItem.x+'px;width:'+minItem.w+'px;height:'+minItem.h+'px;'"></div>
  140. <div @click="lighButton(minItem)"
  141. :class="minItem.state=='1'?'lightTop':(minItem.state=='2'?'lightBottom':(minItem.state=='3'?'lightLeft':(minItem.state=='4'?'lightRight':'')))"
  142. v-for="(minItem,minIndex) in bigItem.lightList" :key="minIndex"
  143. :style="'top:'+minItem.y+'px;left:'+minItem.x+'px;width:'+minItem.w+'px;height:'+minItem.h+'px;'"></div>
  144. </div>
  145. <div class="map-max-for-center-min-right"></div>
  146. </div>
  147. <div class="map-max-for-right-box"></div>
  148. </div>
  149. </div>
  150. </div>
  151. </div>
  152. <div class="layout-data-max-big-null-box" v-else>
  153. <img src="@/assets/ZDimages/evacuation3_2/icon_wsctp.png">
  154. <div>
  155. <p></p>
  156. <p>暂未设置房间布局</p>
  157. <p @click="clickPage(2,item)">设置布局</p>
  158. <p></p>
  159. </div>
  160. </div>
  161. </div>
  162. </div>
  163. <img class="null-img" v-if="!buildingList[0]" src="@/assets/ZDimages/null-data-1.png">
  164. </div>
  165. </div>
  166. <div class="floor-box" v-if="checkTreeType == 3">
  167. <div class="map-max-big-box">
  168. <div class="layout-data-max-big-box" v-if="buildingList.layoutData">
  169. <div class="layout-data-max-big-min-box"
  170. :style="'width:'+buildingList.width+'px;height:'+buildingList.height+'px;transform: scale('+buildingList.zoomData+');margin-top:-'+buildingList.height/2+'px;margin-left:-'+buildingList.width/2+'px;'">
  171. <div class="layout-data-max-min-box"
  172. :style="'width:'+buildingList.width+'px;height:'+buildingList.height+'px;'">
  173. <div class="map-max-for-box"
  174. v-for="(item,index) in buildingList.mapList" :key="index"
  175. :class="item.type == 2?'for-map-box-one':''"
  176. :style="'top:'+item.y+'px;left:'+item.x+'px;width:'+item.w+'px;height:'+item.h+'px;'">
  177. <div class="map-max-for-left-box"></div>
  178. <div class="map-max-for-center-box">
  179. <div class="map-max-for-center-min-left"></div>
  180. <div class="map-max-for-center-min-center"
  181. :class="item.type == 2?'for-map-box-one':(item.type == 1?'for-map-box':(item.type == 3?'for-map-box-two':''))">
  182. <div class="min-text-box" v-if="item.type==1">{{item.roomNum}}</div>
  183. <div v-if="item.type == 1"
  184. :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':'')))"
  185. v-for="(minItem,minIndex) in item.doorList" :key="minIndex"
  186. :style="'top:'+minItem.y+'px;left:'+minItem.x+'px;width:'+minItem.w+'px;height:'+minItem.h+'px;'"></div>
  187. <div v-if="item.type == 3"
  188. :class="minItem.toward=='top'?'center-move-door-p-t-ss':(minItem.toward=='bottom'?'center-move-door-p-b-ss':(minItem.toward=='left'?'center-move-door-p-l-ss':(minItem.toward=='right'?'center-move-door-p-r-ss':'')))"
  189. v-for="(minItem,minIndex) in item.doorList" :key="minIndex"
  190. :style="'top:'+minItem.y+'px;left:'+minItem.x+'px;width:'+minItem.w+'px;height:'+minItem.h+'px;'"></div>
  191. <div @click="lighButton(minItem)"
  192. :class="minItem.state=='1'?'lightTop':(minItem.state=='2'?'lightBottom':(minItem.state=='3'?'lightLeft':(minItem.state=='4'?'lightRight':'')))"
  193. v-for="(minItem,minIndex) in item.lightList" :key="minIndex"
  194. :style="'top:'+minItem.y+'px;left:'+minItem.x+'px;width:'+minItem.w+'px;height:'+minItem.h+'px;'"></div>
  195. </div>
  196. <div class="map-max-for-center-min-right"></div>
  197. </div>
  198. <div class="map-max-for-right-box"></div>
  199. </div>
  200. </div>
  201. </div>
  202. </div>
  203. <div class="layout-data-max-big-null-box" v-else>
  204. <img src="@/assets/ZDimages/evacuation3_2/icon_wsctp.png">
  205. <div>
  206. <p></p>
  207. <p>暂未设置房间布局</p>
  208. <p @click="clickPage(2,buildingList)">设置布局</p>
  209. <p></p>
  210. </div>
  211. </div>
  212. <p class="position-button-p" @click="clickPage(2,buildingList)" v-if="buildingList.layoutData">设置布局</p>
  213. </div>
  214. <div class="table-box">
  215. <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
  216. <el-form-item label="关键字" prop="searchValue" style="margin-right:20px;margin-bottom:20px;">
  217. <el-input
  218. v-model="queryParams.searchValue"
  219. placeholder="请输入关键字"
  220. clearable
  221. size="small"
  222. />
  223. </el-form-item>
  224. <el-form-item label="房间类型" prop="roomType" style="margin-right:20px;margin-bottom:20px;">
  225. <el-select v-model="queryParams.roomType" placeholder="请选择房间类型"
  226. style="margin-right:20px;margin-bottom:20px;">
  227. <el-option
  228. v-for="dict in roomTypeOptions"
  229. :key="dict.dictValue"
  230. :label="dict.dictLabel"
  231. :value="dict.dictValue">
  232. </el-option>
  233. </el-select>
  234. </el-form-item>
  235. <el-form-item>
  236. <p class="inquire-button-one" @click="handleQuery" style="margin-right:20px;margin-bottom:20px;">查询</p>
  237. <p class="reset-button-one" @click="resetQuery">重置</p>
  238. </el-form-item>
  239. </el-form>
  240. <el-table border :data="dataList">
  241. <el-table-column label="房间号" align="left" prop="roomNum" width="100"/>
  242. <el-table-column label="房间名称" align="left" prop="roomName">
  243. <template slot-scope="scope">
  244. <span>{{scope.row.roomType!='-99'?scope.row.subName:scope.row.roomName}}</span>
  245. <!--<span>{{scope.row.roomType}}</span>-->
  246. </template>
  247. </el-table-column>
  248. <el-table-column label="房间类型" align="left" prop="roomType" width="200">
  249. <template slot-scope="scope">
  250. <span v-for="(item,index) in roomTypeOptions" :key="index" v-if="item.dictValue == scope.row.roomType">{{item.dictLabel}}</span>
  251. </template>
  252. </el-table-column>
  253. <el-table-column label="创建人" align="left" prop="createBy" width="200"/>
  254. <el-table-column label="创建时间" align="left" prop="createTime" width="200"/>
  255. <el-table-column label="操作" align="left" class-name="small-padding fixed-width" width="100">
  256. <template slot-scope="scope">
  257. <div class="button-box" style="display: flex">
  258. <p class="table-min-button" @click="roomClick(1,scope.row)">编辑</p>
  259. </div>
  260. </template>
  261. </el-table-column>
  262. </el-table>
  263. <pagination
  264. style="margin-top:20px;"
  265. v-show="total>0"
  266. :total="total"
  267. :page.sync="queryParams.pageNum"
  268. :limit.sync="queryParams.pageSize"
  269. @pagination="getList"
  270. />
  271. </div>
  272. </div>
  273. </div>
  274. <!-- 新增/编辑院校 -->
  275. <el-dialog :title="dialogTitle" v-if="dialogOpen" :visible.sync="dialogOpen" width="600px" append-to-body>
  276. <el-form ref="dialogForm" :model="dialogForm" :rules="rules" label-width="110px">
  277. <el-form-item label="院校名称:" prop="nameOne">
  278. <el-input v-model="dialogForm.nameOne" maxlength="10" placeholder="请输入院校名称"
  279. :disabled="dialogType==2 || dialogType==22 || dialogType==3 || dialogType==33"/>
  280. </el-form-item>
  281. <el-form-item label="楼栋名称:" prop="nameTwo"
  282. v-if="dialogType==2 || dialogType==22 || dialogType==3 || dialogType==33">
  283. <el-input v-model="dialogForm.nameTwo" maxlength="10" placeholder="请输入楼栋名称"
  284. :disabled="dialogType==3 || dialogType==33"/>
  285. </el-form-item>
  286. <el-form-item label="楼层名称:" prop="nameThree" v-if="dialogType==3 || dialogType==33">
  287. <el-input v-model="dialogForm.nameThree" maxlength="10" placeholder="请输入楼层名称"/>
  288. </el-form-item>
  289. <el-form-item label="排序序号:" prop="sortNo" class="dialog-sort-no-form-item-box">
  290. <el-input-number v-model="dialogForm.sortNo" :min="1" :max="999" placeholder="请输入排序序号" :controls="false"
  291. style="width:450px;"></el-input-number>
  292. </el-form-item>
  293. </el-form>
  294. <div slot="footer" class="dialog-footer">
  295. <div style="display: flex">
  296. <p style="flex:1;"></p>
  297. <p
  298. style="cursor:pointer;border-radius:6px;width:70px;line-height:30px;font-size:12px;text-align:center;margin-right:17px;color:#999999;background:#E0E0E0;"
  299. @click="cancel">取消</p>
  300. <p
  301. style="cursor:pointer;border-radius:6px;width:70px;line-height:30px;font-size:12px;text-align:center;color:#fff;background:#0045AF;"
  302. @click="submitForm">确定</p>
  303. <p style="flex:1;"></p>
  304. </div>
  305. </div>
  306. </el-dialog>
  307. <el-dialog title="房间配置" v-if="dialogOpenRoom" :visible.sync="dialogOpenRoom" width="800px" append-to-body class="building-dialog-box">
  308. <el-form ref="roomDialogForm" :model="roomDialogForm" :rules="rules" label-width="110px">
  309. <el-form-item label="楼栋名称:" prop="buildName">
  310. <el-input v-model="roomDialogForm.buildName" maxlength="10" placeholder="请输入楼栋名称" disabled style="width:575px;"/>
  311. </el-form-item>
  312. <el-form-item label="楼层名称:" prop="floorName">
  313. <el-input v-model="roomDialogForm.floorName" maxlength="10" placeholder="请输入楼层名称" disabled style="width:575px;"/>
  314. </el-form-item>
  315. <el-form-item label="房间类型:" prop="roomType">
  316. <el-select v-model="roomDialogForm.roomType" placeholder="请选择房间类型" style="width:575px;">
  317. <el-option
  318. v-for="dict in roomTypeOptions"
  319. :key="dict.dictValue"
  320. :label="dict.dictLabel"
  321. :value="dict.dictValue">
  322. </el-option>
  323. </el-select>
  324. </el-form-item>
  325. <el-form-item label="房间号:" prop="roomNum">
  326. <el-input v-model="roomDialogForm.roomNum" maxlength="10" placeholder="请输入房间号" style="width:575px;"/>
  327. </el-form-item>
  328. <el-form-item label="房间名称:" prop="roomName" v-if="roomDialogForm.roomType == '-99'">
  329. <el-input v-model="roomDialogForm.roomName" maxlength="10" placeholder="请输入房间名称" style="width:575px;"/>
  330. </el-form-item>
  331. <el-form-item label="房间选择:" prop="subId" v-if="roomDialogForm.roomType != '-99'">
  332. <el-select
  333. style="width:575px;"
  334. v-model="roomDialogForm.subId"
  335. filterable
  336. remote
  337. reserve-keyword
  338. @focus="selectFocus"
  339. placeholder="请选择房间"
  340. :remote-method="userSelectList"
  341. :loading="loading">
  342. <el-option
  343. v-for="item in subjectOptions"
  344. :key="item.id"
  345. :label="item.name"
  346. :value="item.id">
  347. </el-option>
  348. </el-select>
  349. </el-form-item>
  350. <el-form-item label="房间位置:">
  351. <div class="map-max-big-box">
  352. <div class="layout-data-max-big-box">
  353. <div class="layout-data-max-big-min-box"
  354. :style="'width:'+dialogBuildingData.width+'px;height:'+dialogBuildingData.height+'px;transform: scale('+zoomData+');margin-top:-'+dialogBuildingData.height/2+'px;margin-left:-'+dialogBuildingData.width/2+'px;'">
  355. <div class="layout-data-max-min-box"
  356. :style="'width:'+dialogBuildingData.width+'px;height:'+dialogBuildingData.height+'px;'">
  357. <div class="map-max-for-box"
  358. v-for="(item,index) in dialogBuildingData.mapList" :key="index"
  359. :class="item.type == 2?'for-map-box-one':''"
  360. :style="'top:'+item.y+'px;left:'+item.x+'px;width:'+item.w+'px;height:'+item.h+'px;'">
  361. <div class="map-max-for-left-box"></div>
  362. <div class="map-max-for-center-box">
  363. <div class="map-max-for-center-min-left"></div>
  364. <div class="map-max-for-center-min-center"
  365. :class="item.type == 2?'for-map-box-one':(item.type == 1 &&item.checkType?'for-map-box-three':(item.type == 3?'for-map-box-two':(item.type == 1?'for-map-box':'')))">
  366. <div class="min-text-box" v-if="item.type==1">{{item.roomNum}}</div>
  367. <div v-if="item.type == 1"
  368. :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':'')))"
  369. v-for="(minItem,minIndex) in item.doorList" :key="minIndex"
  370. :style="'top:'+minItem.y+'px;left:'+minItem.x+'px;width:'+minItem.w+'px;height:'+minItem.h+'px;'"></div>
  371. <div v-if="item.type == 3"
  372. :class="minItem.toward=='top'?'center-move-door-p-t-ss':(minItem.toward=='bottom'?'center-move-door-p-b-ss':(minItem.toward=='left'?'center-move-door-p-l-ss':(minItem.toward=='right'?'center-move-door-p-r-ss':'')))"
  373. v-for="(minItem,minIndex) in item.doorList" :key="minIndex"
  374. :style="'top:'+minItem.y+'px;left:'+minItem.x+'px;width:'+minItem.w+'px;height:'+minItem.h+'px;'"></div>
  375. <div @click="lighButton(minItem)"
  376. :class="minItem.state=='1'?'lightTop':(minItem.state=='2'?'lightBottom':(minItem.state=='3'?'lightLeft':(minItem.state=='4'?'lightRight':'')))"
  377. v-for="(minItem,minIndex) in item.lightList" :key="minIndex"
  378. :style="'top:'+minItem.y+'px;left:'+minItem.x+'px;width:'+minItem.w+'px;height:'+minItem.h+'px;'"></div>
  379. </div>
  380. <div class="map-max-for-center-min-right"></div>
  381. </div>
  382. <div class="map-max-for-right-box"></div>
  383. </div>
  384. </div>
  385. </div>
  386. </div>
  387. </div>
  388. </el-form-item>
  389. </el-form>
  390. <div slot="footer" class="dialog-footer">
  391. <div style="display: flex">
  392. <p style="flex:1;"></p>
  393. <p
  394. style="cursor:pointer;border-radius:6px;width:70px;line-height:30px;font-size:12px;text-align:center;margin-right:17px;color:#999999;background:#E0E0E0;"
  395. @click="roomCancel">取消</p>
  396. <p
  397. style="cursor:pointer;border-radius:6px;width:70px;line-height:30px;font-size:12px;text-align:center;color:#fff;background:#0045AF;"
  398. @click="roomSubmitForm">确定</p>
  399. <p style="flex:1;"></p>
  400. </div>
  401. </div>
  402. </el-dialog>
  403. </div>
  404. <building-details :propsData="propsData" v-if="pageType == 2"></building-details>
  405. </div>
  406. </template>
  407. <script>
  408. import {
  409. getTreeList, getTreeSonList, addBuildFloor, putBuildFloor, delBuildFloor, editSortNum, buildFloorLayoutList,
  410. getBuildFloorLayout, putBuildFloorLayout, subjectList
  411. } from '@/api/evacuation3_2/index'
  412. import buildingManagement from './buildingManagement.vue'
  413. import buildingDetails from './buildingDetails.vue'
  414. export default {
  415. name: 'newIndex',
  416. components: {
  417. buildingManagement,
  418. buildingDetails
  419. },
  420. data() {
  421. return {
  422. pageType: 1,
  423. //拖拽起始Y点(用于计算朝向)
  424. clientY: null,
  425. clientId: null,
  426. //学校/楼栋/楼层
  427. treeList: [],
  428. //选中状态
  429. checkTreeId: null,
  430. checkTreeType: 1,
  431. buildingList: [],
  432. //楼层展开/关闭状态
  433. floorZkType: null, //1.全部展开 2.全部关闭 3.有关有开
  434. //编辑弹窗开关
  435. dialogOpen: false,
  436. dialogType: null,
  437. dialogTitle: '',
  438. // 表单参数
  439. dialogForm: {},
  440. roomDialogForm: {},
  441. //院校名称
  442. yxName: null,
  443. ldName: null,
  444. lcName: null,
  445. parentId: null,
  446. // 表单校验
  447. rules: {
  448. nameOne: [
  449. { required: true, message: '请输入院校名称', trigger: 'blur' },
  450. { required: true, message: '请输入院校名称', validator: this.spaceJudgment, trigger: 'blur' }
  451. ],
  452. nameTwo: [
  453. { required: true, message: '请输入楼栋名称', trigger: 'blur' },
  454. { required: true, message: '请输入楼栋名称', validator: this.spaceJudgment, trigger: 'blur' }
  455. ],
  456. nameThree: [
  457. { required: true, message: '请输入楼层名称', trigger: 'blur' },
  458. { required: true, message: '请输入楼层名称', validator: this.spaceJudgment, trigger: 'blur' }
  459. ],
  460. sortNo: [
  461. { required: true, message: '请输入排序序号', trigger: 'blur' },
  462. { required: true, message: '请输入排序序号', validator: this.spaceJudgment, trigger: 'blur' }
  463. ]
  464. },
  465. // 显示搜索条件
  466. showSearch: true,
  467. loading: false,
  468. //楼层查询数据
  469. queryParams: {},
  470. //楼层表单数据
  471. dataList: [],
  472. total: 10,
  473. //房间配置相关
  474. dialogOpenRoom: false,
  475. //房间类型列表
  476. roomTypeOptions: [],
  477. //实验室选择列表
  478. subjectOptions: [],
  479. //传参数据
  480. propsData: {},
  481. //缩放比例
  482. zoomData: null,
  483. dialogBuildingData:[]
  484. }
  485. },
  486. created() {
  487. },
  488. mounted() {
  489. this.getTreeList()
  490. this.getDicts('layout_room_type').then(response => {
  491. this.roomTypeOptions = response.data
  492. this.roomTypeOptions.push({ dictLabel: '其他', dictValue: '-99' })
  493. })
  494. },
  495. methods: {
  496. //新增学校/楼栋/楼层数据
  497. addBuildFloor(type) {
  498. this.$refs['dialogForm'].validate(valid => {
  499. if (valid) {
  500. //1.学校 2.楼栋 3.楼层
  501. let obj = {
  502. name: type == 1 ? this.dialogForm.nameOne : (type == 2 ? this.dialogForm.nameTwo : (type == 3 ? this.dialogForm.nameThree : '')),
  503. type: type,
  504. sortNo: this.dialogForm.sortNo,
  505. parentId: type == 1 ? 0 : this.checkTreeId
  506. }
  507. addBuildFloor(obj).then(response => {
  508. this.msgSuccess(response.msg)
  509. this.cancel()
  510. this.getTreeList()
  511. })
  512. }
  513. })
  514. },
  515. //编辑学校/楼栋/楼层数据
  516. putBuildFloor(type) {
  517. this.$refs['dialogForm'].validate(valid => {
  518. if (valid) {
  519. //1.学校 2.楼栋 3.楼层
  520. let obj = {
  521. id: this.dialogForm.id,
  522. name: type == 1 ? this.dialogForm.nameOne : (type == 2 ? this.dialogForm.nameTwo : (type == 3 ? this.dialogForm.nameThree : '')),
  523. type: type,
  524. sortNo: this.dialogForm.sortNo
  525. }
  526. putBuildFloor(obj).then(response => {
  527. this.msgSuccess(response.msg)
  528. this.cancel()
  529. this.getTreeList()
  530. })
  531. }
  532. })
  533. },
  534. //删除学校/楼栋/楼层数据
  535. delBuildFloor(id) {
  536. delBuildFloor(id).then(response => {
  537. this.msgSuccess(response.msg)
  538. this.getTreeList()
  539. })
  540. },
  541. //调整排序
  542. editSortNum(data) {
  543. editSortNum(data).then(response => {
  544. this.msgSuccess(response.msg)
  545. this.getTreeList()
  546. })
  547. },
  548. roomCancel() {
  549. this.$set(this, 'dialogOpenRoom', false)
  550. },
  551. roomSubmitForm() {
  552. this.$refs['roomDialogForm'].validate(valid => {
  553. if (valid) {
  554. let obj = {
  555. id: this.roomDialogForm.id,
  556. roomNum: this.roomDialogForm.roomNum,
  557. roomType: this.roomDialogForm.roomType
  558. }
  559. if (this.roomDialogForm.roomType == '-99') {
  560. obj.roomName = this.roomDialogForm.roomName
  561. } else {
  562. obj.subId = this.roomDialogForm.subId
  563. }
  564. putBuildFloorLayout(obj).then(response => {
  565. this.$set(this, 'dialogOpenRoom', false)
  566. this.msgSuccess(response.msg)
  567. let obj = {
  568. id: this.checkTreeId ,
  569. type: this.checkTreeType,
  570. parentId: this.parentId
  571. }
  572. this.getTreeSonList(obj)
  573. this.getList()
  574. })
  575. }
  576. })
  577. },
  578. // 取消按钮
  579. cancel() {
  580. this.$set(this, 'dialogOpen', false)
  581. this.$set(this, 'dialogForm', {})
  582. this.$set(this, 'dialogType', null)
  583. },
  584. //确定按钮
  585. submitForm() {
  586. if (this.dialogType == 1) {
  587. //新增
  588. this.addBuildFloor(1)
  589. } else if (this.dialogType == 11) {
  590. //编辑
  591. this.putBuildFloor(1)
  592. } else if (this.dialogType == 2) {
  593. //新增
  594. this.addBuildFloor(2)
  595. } else if (this.dialogType == 22) {
  596. //编辑
  597. this.putBuildFloor(2)
  598. } else if (this.dialogType == 3) {
  599. //新增
  600. this.addBuildFloor(3)
  601. } else if (this.dialogType == 33) {
  602. //编辑
  603. this.putBuildFloor(3)
  604. }
  605. },
  606. //楼栋弹出下啦列表选中事件
  607. handleCommand(command, item) {
  608. let self = this
  609. if (command == 1) {
  610. //编辑院校
  611. this.$set(this, 'dialogTitle', '编辑院校')
  612. this.$set(this, 'dialogForm', {
  613. id: item.id,
  614. nameOne: item.name,
  615. sortNo: item.sortNo
  616. })
  617. this.$set(this, 'dialogType', 11)
  618. this.$set(this, 'dialogOpen', true)
  619. } else if (command == 2) {
  620. //删除院校
  621. this.$confirm('确定要删除该院校吗?', '警告', {
  622. confirmButtonText: '确定',
  623. cancelButtonText: '取消',
  624. type: 'warning'
  625. }).then(function() {
  626. self.delBuildFloor(item.id)
  627. }).then(() => {
  628. }).catch(() => {
  629. })
  630. } else if (command == 3) {
  631. //新增院校
  632. this.$set(this, 'dialogForm', {})
  633. this.$set(this, 'dialogTitle', '新增院校')
  634. this.$set(this, 'dialogType', 1)
  635. this.$set(this, 'dialogOpen', true)
  636. } else if (command == 4) {
  637. //新增楼栋
  638. this.$set(this, 'dialogForm', {
  639. nameOne: this.yxName
  640. })
  641. this.$set(this, 'dialogTitle', '新增楼栋')
  642. this.$set(this, 'dialogType', 2)
  643. this.$set(this, 'dialogOpen', true)
  644. } else if (command == 5) {
  645. //编辑楼栋
  646. this.$set(this, 'dialogForm', {
  647. id: item.id,
  648. nameOne: this.yxName,
  649. nameTwo: item.name,
  650. sortNo: item.sortNo
  651. })
  652. this.$set(this, 'dialogTitle', '编辑楼栋')
  653. this.$set(this, 'dialogType', 22)
  654. this.$set(this, 'dialogOpen', true)
  655. } else if (command == 6) {
  656. //删除楼栋
  657. this.$confirm('确定要删除该楼栋吗?', '警告', {
  658. confirmButtonText: '确定',
  659. cancelButtonText: '取消',
  660. type: 'warning'
  661. }).then(function() {
  662. self.delBuildFloor(item.id)
  663. }).then(() => {
  664. }).catch(() => {
  665. })
  666. } else if (command == 7) {
  667. //新增楼层
  668. this.$set(this, 'dialogForm', {
  669. nameOne: this.yxName,
  670. nameTwo: this.ldName
  671. })
  672. this.$set(this, 'dialogTitle', '新增楼层')
  673. this.$set(this, 'dialogType', 3)
  674. this.$set(this, 'dialogOpen', true)
  675. } else if (command == 8) {
  676. //编辑楼层
  677. this.$set(this, 'dialogForm', {
  678. id: item.id,
  679. nameOne: this.yxName,
  680. nameTwo: this.ldName,
  681. nameThree: item.name,
  682. sortNo: item.sortNo
  683. })
  684. this.$set(this, 'dialogTitle', '编辑楼层')
  685. this.$set(this, 'dialogType', 33)
  686. this.$set(this, 'dialogOpen', true)
  687. } else if (command == 9) {
  688. //删除楼层
  689. this.$confirm('确定要删除该楼层吗?', '警告', {
  690. confirmButtonText: '确定',
  691. cancelButtonText: '取消',
  692. type: 'warning'
  693. }).then(function() {
  694. self.delBuildFloor(item.id)
  695. }).then(() => {
  696. }).catch(() => {
  697. })
  698. }
  699. },
  700. //获取学校/楼栋/楼层数据
  701. getTreeList() {
  702. getTreeList().then(response => {
  703. if (response.data[0]) {
  704. for (let i = 0; i < response.data.length; i++) {
  705. for (let o = 0; o < response.data[i].buildFloorVoList.length; o++) {
  706. response.data[i].buildFloorVoList[o].onType = true
  707. }
  708. }
  709. this.$set(this, 'treeList', response.data)
  710. if (!this.checkTreeId) {
  711. this.$set(this, 'checkTreeId', response.data[0].id)
  712. this.$set(this, 'yxName', response.data[0].name)
  713. this.$set(this, 'parentId', response.data[0].parentId)
  714. }
  715. let obj = {
  716. id: this.checkTreeId ? this.checkTreeId : response.data[0].id,
  717. type: 1,
  718. parentId: this.parentId ? this.parentId : 0
  719. }
  720. this.getTreeSonList(obj)
  721. }
  722. })
  723. },
  724. //获取校区/楼栋/楼层详情数据
  725. getTreeSonList(data) {
  726. getTreeSonList(data).then(response => {
  727. if (this.checkTreeType == 1) {
  728. this.$set(this, 'buildingList', response.rows)
  729. } else if (this.checkTreeType == 2) {
  730. for (let i = 0; i < response.rows.length; i++) {
  731. response.rows[i].onType = false
  732. if (response.rows[i].layoutData) {
  733. response.rows[i].mapList = JSON.parse(response.rows[i].layoutData)
  734. let obj = this.calculateMapMax(response.rows[i].mapList, 380)
  735. response.rows[i].width = obj.maxWidth
  736. response.rows[i].height = obj.maxHeight
  737. response.rows[i].zoomData = obj.zoomData
  738. }
  739. }
  740. this.$set(this, 'buildingList', response.rows)
  741. this.floorZkFor()
  742. } else if (this.checkTreeType == 3) {
  743. if (response.rows[0].layoutData) {
  744. response.rows[0].mapList = JSON.parse(response.rows[0].layoutData)
  745. let obj = this.calculateMapMax(response.rows[0].mapList, 380)
  746. response.rows[0].width = obj.maxWidth
  747. response.rows[0].height = obj.maxHeight
  748. response.rows[0].zoomData = obj.zoomData
  749. }
  750. this.$set(this, 'queryParams', {
  751. searchValue: '',
  752. roomType: '',
  753. pageNum: 1,
  754. pageSize: 10
  755. })
  756. this.getList()
  757. this.$set(this, 'buildingList', response.rows[0])
  758. }
  759. })
  760. },
  761. //获取楼层实验室数据列表
  762. getList() {
  763. this.queryParams.floorId = this.checkTreeId
  764. buildFloorLayoutList(this.queryParams).then(response => {
  765. this.dataList = response.rows
  766. this.total = response.total
  767. })
  768. },
  769. //页面切换
  770. clickPage(type, item) {
  771. if (type == 1) {
  772. this.$set(this, 'pageType', type)
  773. } else if (type == 2) {
  774. this.$set(this, 'propsData', item)
  775. this.$set(this, 'pageType', type)
  776. }else if(type == 3){
  777. this.$set(this, 'pageType', 1)
  778. let obj = {
  779. id: this.checkTreeId ,
  780. type: this.checkTreeType,
  781. parentId: this.parentId
  782. }
  783. this.getTreeSonList(obj)
  784. }
  785. },
  786. //懒加载实验室
  787. userSelectList(e) {
  788. subjectList({ name: e }).then(response => {
  789. this.subjectOptions = response.data
  790. this.subjectOptions.push({ id: this.roomDialogForm.subId, name: this.roomDialogForm.subName })
  791. })
  792. },
  793. selectFocus() {
  794. console.log('123')
  795. },
  796. //房间操作按钮
  797. roomClick(type, item) {
  798. //查询房间实验室详情
  799. getBuildFloorLayout(item.id).then(response => {
  800. let obj = {
  801. id: response.data.id,
  802. buildName: response.data.buildName,
  803. floorName: response.data.floorName,
  804. roomNum: response.data.roomNum,
  805. roomType: response.data.roomType + '',
  806. pointName: response.data.pointName
  807. }
  808. if (response.data.roomType == '-99') {
  809. obj.roomName = response.data.roomName
  810. } else {
  811. obj.subId = response.data.subId
  812. obj.subName = response.data.subName
  813. }
  814. //根据返回实验室名称查询实验室选择列表回填
  815. this.$set(this, 'roomDialogForm', obj)
  816. this.$set(this, 'subjectOptions', [{ id: response.data.subId, name: response.data.subName }])
  817. let newData = JSON.parse(JSON.stringify(this.buildingList));
  818. for(let i=0;i<newData.mapList.length;i++){
  819. console.log('response.data.subId',response.data.subId)
  820. console.log('newData.mapList[i].subId',newData.mapList[i].subId)
  821. console.log('response.data.roomName',response.data.roomName)
  822. console.log('newData.mapList[i].roomName',newData.mapList[i].roomName)
  823. if( response.data.subId == newData.mapList[i].subId || response.data.roomName == newData.mapList[i].roomName){
  824. newData.mapList[i].checkType = true;
  825. }else{
  826. newData.mapList[i].checkType = false;
  827. }
  828. }
  829. this.$set(this,'dialogBuildingData',newData);
  830. this.dialogOpenRoom = true
  831. })
  832. },
  833. //树状结构选中
  834. clickCheckTree(item, type) {
  835. if (item.id != this.checkTreeId) {
  836. this.$set(this, 'checkTreeId', item.id)
  837. this.$set(this, 'checkTreeType', type)
  838. if (type == 1) {
  839. this.$set(this, 'yxName', item.name)
  840. this.$set(this, 'buildingList', [])
  841. } else if (type == 2) {
  842. this.$set(this, 'ldName', item.name)
  843. this.$set(this, 'buildingList', [])
  844. } else if (type == 3) {
  845. this.$set(this, 'lcName', item.name)
  846. this.$set(this, 'buildingList', {})
  847. }
  848. let obj = {
  849. id: item.id,
  850. type: type,
  851. parentId: item.parentId
  852. }
  853. this.$set(this,'parentId',item.parentId);
  854. this.getTreeSonList(obj)
  855. }
  856. },
  857. //树状结构展开收回
  858. terrClick(itemOne) {
  859. itemOne.onType = !itemOne.onType
  860. },
  861. //展开/收起开关
  862. floorZK(type, index) {
  863. let self = this
  864. //type等于1时全部开关功能 等于2时单个开关
  865. if (type == 1) {
  866. let list = JSON.parse(JSON.stringify(self.buildingList))
  867. for (let i = 0; i < list.length; i++) {
  868. if (self.floorZkType == 1) {
  869. list[i].onType = false
  870. } else if (self.floorZkType == 2) {
  871. list[i].onType = true
  872. } else if (self.floorZkType == 3) {
  873. list[i].onType = true
  874. }
  875. }
  876. this.$set(this, 'buildingList', list)
  877. this.floorZkFor()
  878. } else if (type == 2) {
  879. this.$set(this.buildingList[index], 'onType', this.buildingList[index].onType ? false : true)
  880. this.floorZkFor()
  881. }
  882. },
  883. //层展开关闭判断
  884. floorZkFor() {
  885. let self = this
  886. let numOne = 0
  887. let numTwo = 0
  888. for (let i = 0; i < self.buildingList.length; i++) {
  889. if (self.buildingList[i].onType) {
  890. numOne++
  891. } else {
  892. numTwo++
  893. }
  894. }
  895. if (numOne == self.buildingList.length) {
  896. this.$set(this, 'floorZkType', 1)
  897. } else if (numTwo == self.buildingList.length) {
  898. this.$set(this, 'floorZkType', 2)
  899. } else {
  900. this.$set(this, 'floorZkType', 3)
  901. }
  902. console.log('self.buildingList',self.buildingList)
  903. console.log('self.buildingList.length',self.buildingList.length)
  904. console.log('numOne',numOne)
  905. console.log('numTwo',numTwo)
  906. console.log('floorZkFor',this.floorZkType)
  907. },
  908. //拖拽抓取时触发
  909. dragstartPlay(event) {
  910. this.$set(this, 'clientY', event.clientY)
  911. },
  912. //拖拽途径触发
  913. dragoverPrevent(item) {
  914. this.$set(this, 'clientId', item.id)
  915. },
  916. //拖拽释放触发
  917. dragEnterOver(event, item) {
  918. let self = this
  919. let newList = []
  920. if (this.clientId && item.id != this.clientId) {
  921. let list = []
  922. let obj = null
  923. for (let i = 0; i < self.buildingList.length; i++) {
  924. if (self.buildingList[i].id == item.id) {
  925. obj = JSON.parse(JSON.stringify(self.buildingList[i]))
  926. }
  927. }
  928. if (event.clientY > this.clientY) {
  929. for (let i = 0; i < self.buildingList.length; i++) {
  930. if (self.buildingList[i].id != item.id && self.buildingList[i].id != this.clientId) {
  931. list.push(self.buildingList[i])
  932. } else if (self.buildingList[i].id == this.clientId) {
  933. list.push(self.buildingList[i])
  934. list.push(obj)
  935. }
  936. }
  937. } else if (event.clientY < this.clientY) {
  938. for (let i = 0; i < self.buildingList.length; i++) {
  939. if (self.buildingList[i].id == this.clientId) {
  940. list.push(obj)
  941. list.push(self.buildingList[i])
  942. } else if (self.buildingList[i].id != item.id && self.buildingList[i].id != this.clientId) {
  943. list.push(self.buildingList[i])
  944. }
  945. }
  946. }
  947. for (let i = 0; i < list.length; i++) {
  948. newList.push({ id: list[i].id, sortNo: i })
  949. }
  950. // this.$set(this,'buildingList',list);
  951. this.$set(this, 'clientId', null)
  952. this.editSortNum(newList)
  953. }
  954. },
  955. /** 搜索按钮操作 */
  956. handleQuery() {
  957. this.$set(this.queryParams, 'pageNum', 1)
  958. this.getList()
  959. },
  960. /** 重置按钮操作 */
  961. resetQuery() {
  962. this.$set(this, 'queryParams', {
  963. searchValue: '',
  964. roomType: '',
  965. pageNum: 1,
  966. pageSize: 10
  967. })
  968. this.handleQuery()
  969. },
  970. //计算布局最大尺寸
  971. calculateMapMax(list, num) {
  972. let maxWidth = 0
  973. let maxHeight = 0
  974. let zoomData = 1;
  975. for (let i = 0; i < list.length; i++) {
  976. if ((list[i].x + list[i].w) > maxWidth) {
  977. maxWidth = list[i].x + list[i].w
  978. }
  979. if ((list[i].y + list[i].h) > maxHeight) {
  980. maxHeight = list[i].y + list[i].h
  981. }
  982. }
  983. if (num > maxHeight) {
  984. zoomData = maxHeight / num;
  985. } else {
  986. zoomData = num / maxHeight;
  987. }
  988. if (260 > maxHeight) {
  989. this.$set(this,'zoomData',maxHeight / 260);
  990. } else {
  991. this.$set(this,'zoomData',260 / maxHeight);
  992. }
  993. return { maxWidth: maxWidth, maxHeight: maxHeight,zoomData:zoomData }
  994. }
  995. }
  996. }
  997. </script>
  998. <style scoped lang="scss">
  999. .building {
  1000. flex: 1;
  1001. display: flex !important;
  1002. flex-direction: column;
  1003. overflow: hidden;
  1004. * {
  1005. margin: 0;
  1006. font-weight: 500;
  1007. }
  1008. .buildingManagement {
  1009. flex: 1;
  1010. display: flex !important;
  1011. overflow: hidden;
  1012. padding: 22px 28px 22px 32px;
  1013. .max-left-box {
  1014. width: 281px;
  1015. border-right: 1px dashed #A2A2A2;
  1016. display: flex;
  1017. flex-direction: column;
  1018. .tree-null-p {
  1019. text-align: center;
  1020. line-height: 100px;
  1021. flex: 1;
  1022. color: #999;
  1023. }
  1024. .tree-box {
  1025. flex: 1;
  1026. .terr-max-box {
  1027. margin-top: 20px;
  1028. .max-name-box {
  1029. display: flex;
  1030. margin-right: 20px;
  1031. margin-bottom: 10px;
  1032. color: #D8D8D8;
  1033. font-size: 20px;
  1034. .max-name {
  1035. flex: 1;
  1036. margin-right: 19px;
  1037. color: #333;
  1038. font-size: 16px;
  1039. line-height: 16px;
  1040. margin-top: 3px;
  1041. cursor: pointer;
  1042. }
  1043. }
  1044. .terr-big-box {
  1045. margin-left: 30px;
  1046. .big-name-box {
  1047. cursor: pointer;
  1048. height: 40px;
  1049. line-height: 40px;
  1050. display: flex;
  1051. font-size: 16px;
  1052. color: #333;
  1053. img {
  1054. width: 16px;
  1055. height: 16px;
  1056. margin-top: 12px;
  1057. margin-right: 4px;
  1058. }
  1059. .name-p {
  1060. flex: 1;
  1061. }
  1062. }
  1063. .terr-min-box {
  1064. margin-left: 30px;
  1065. .min-name {
  1066. cursor: pointer;
  1067. height: 40px;
  1068. line-height: 40px;
  1069. display: flex;
  1070. font-size: 16px;
  1071. color: #333;
  1072. }
  1073. }
  1074. }
  1075. .check-color {
  1076. color: #0183FA !important;
  1077. }
  1078. }
  1079. }
  1080. .max-left-big-button {
  1081. color: #0183FA;
  1082. border: 1px dashed #0183FA;
  1083. -webkit-border-radius: 6px;
  1084. -moz-border-radius: 6px;
  1085. border-radius: 6px;
  1086. width: 180px;
  1087. line-height: 40px;
  1088. margin: 20px 0 20px 40px;
  1089. text-align: center;
  1090. font-size: 14px;
  1091. cursor: pointer;
  1092. }
  1093. .max-left-big-button:hover {
  1094. color: #fff;
  1095. background: #0183FA;
  1096. border: 1px solid #0183FA;
  1097. }
  1098. }
  1099. .max-right-box {
  1100. flex: 1;
  1101. display: flex;
  1102. flex-direction: column;
  1103. overflow: hidden;
  1104. .school-box {
  1105. flex: 1;
  1106. display: flex;
  1107. flex-direction: column;
  1108. overflow: hidden;
  1109. .max-right-button-box {
  1110. height: 40px;
  1111. display: flex;
  1112. margin-bottom: 22px;
  1113. .null-p {
  1114. flex: 1;
  1115. }
  1116. .max-right-big-button {
  1117. color: #fff;
  1118. background: #0045AF;
  1119. -webkit-border-radius: 6px;
  1120. -moz-border-radius: 6px;
  1121. border-radius: 6px;
  1122. width: 130px;
  1123. line-height: 40px;
  1124. text-align: center;
  1125. font-size: 14px;
  1126. cursor: pointer;
  1127. }
  1128. .max-right-big-button:hover {
  1129. color: #fff;
  1130. background: #0183FA;
  1131. }
  1132. }
  1133. .right-big-list-box {
  1134. flex: 1;
  1135. position: relative;
  1136. .for-max-box {
  1137. .for-big-box {
  1138. display: flex;
  1139. border: 1px solid #dedede;
  1140. height: 100px;
  1141. box-shadow: 0px 3px 8px 0px rgba(0, 0, 0, 0.16);
  1142. margin-bottom: 30px;
  1143. margin-left: 36px;
  1144. border-radius: 6px;
  1145. .for-big-box-left {
  1146. flex: 1;
  1147. display: flex;
  1148. .for-img-one {
  1149. cursor: pointer;
  1150. height: 30px;
  1151. width: 30px;
  1152. margin: 35px 0 0 30px;
  1153. }
  1154. .for-text-one {
  1155. font-size: 16px;
  1156. line-height: 100px;
  1157. margin-left: 95px;
  1158. width: 230px;
  1159. font-weight: 500;
  1160. }
  1161. .for-img-two {
  1162. height: 48px;
  1163. width: 48px;
  1164. margin: 26px 23px 0 30px;
  1165. }
  1166. .for-text-box-one {
  1167. width: 88px;
  1168. margin-right: 73px;
  1169. p {
  1170. text-align: center;
  1171. }
  1172. p:nth-child(1) {
  1173. margin-top: 20px;
  1174. font-size: 24px;
  1175. line-height: 30px;
  1176. color: #0183FA;
  1177. }
  1178. p:nth-child(2) {
  1179. margin-top: 10px;
  1180. font-size: 16px;
  1181. line-height: 16px;
  1182. color: #333;
  1183. }
  1184. }
  1185. .for-img-three {
  1186. height: 48px;
  1187. width: 48px;
  1188. margin: 26px 23px 0 0;
  1189. }
  1190. .for-text-box-two {
  1191. width: 88px;
  1192. p {
  1193. text-align: center;
  1194. }
  1195. p:nth-child(1) {
  1196. margin-top: 20px;
  1197. font-size: 24px;
  1198. line-height: 30px;
  1199. color: #0183FA;
  1200. }
  1201. p:nth-child(2) {
  1202. margin-top: 10px;
  1203. font-size: 16px;
  1204. line-height: 16px;
  1205. color: #333;
  1206. }
  1207. }
  1208. }
  1209. .for-button-min-box {
  1210. width: 220px;
  1211. margin-top: 9px;
  1212. height: 82px;
  1213. border-left: 1px dashed rgba(0, 0, 0, 0.3);
  1214. display: flex;
  1215. line-height: 82px;
  1216. div {
  1217. margin-left: 34px;
  1218. display: flex;
  1219. width: 60px;
  1220. cursor: pointer;
  1221. img {
  1222. width: 16px;
  1223. height: 16px;
  1224. margin-right: 8px;
  1225. margin-top: 33px;
  1226. }
  1227. p {
  1228. font-size: 14px;
  1229. color: #333;
  1230. }
  1231. }
  1232. }
  1233. }
  1234. }
  1235. .null-img {
  1236. position: absolute;
  1237. top: 40%;
  1238. left: 50%;
  1239. width: 276px;
  1240. height: 321px;
  1241. margin-top: -160px;
  1242. margin-left: -138px;
  1243. }
  1244. }
  1245. }
  1246. .building-box {
  1247. flex: 1;
  1248. display: flex;
  1249. flex-direction: column;
  1250. overflow: hidden;
  1251. .max-right-button-box {
  1252. height: 40px;
  1253. display: flex;
  1254. margin-bottom: 22px;
  1255. .null-p {
  1256. flex: 1;
  1257. }
  1258. .max-right-big-button {
  1259. color: #fff;
  1260. background: #0045AF;
  1261. -webkit-border-radius: 6px;
  1262. -moz-border-radius: 6px;
  1263. border-radius: 6px;
  1264. width: 130px;
  1265. line-height: 40px;
  1266. text-align: center;
  1267. font-size: 14px;
  1268. cursor: pointer;
  1269. }
  1270. .max-right-big-button:hover {
  1271. color: #fff;
  1272. background: #0183FA;
  1273. }
  1274. }
  1275. .right-big-list-box {
  1276. flex: 1;
  1277. position: relative;
  1278. .for-max-box {
  1279. margin-bottom: 30px;
  1280. .for-big-box {
  1281. display: flex;
  1282. border: 1px solid #dedede;
  1283. height: 100px;
  1284. box-shadow: 0px 3px 8px 0px rgba(0, 0, 0, 0.16);
  1285. margin-left: 36px;
  1286. border-radius: 6px;
  1287. .for-big-box-left {
  1288. flex: 1;
  1289. display: flex;
  1290. .for-img-one {
  1291. cursor: pointer;
  1292. height: 30px;
  1293. width: 30px;
  1294. margin: 35px 0 0 30px;
  1295. }
  1296. .for-text-one {
  1297. font-size: 16px;
  1298. line-height: 100px;
  1299. margin-left: 95px;
  1300. width: 230px;
  1301. font-weight: 500;
  1302. }
  1303. .for-img-two {
  1304. height: 48px;
  1305. width: 48px;
  1306. margin: 26px 23px 0 30px;
  1307. }
  1308. .for-text-box-one {
  1309. width: 88px;
  1310. margin-right: 73px;
  1311. p {
  1312. text-align: center;
  1313. }
  1314. p:nth-child(1) {
  1315. margin-top: 20px;
  1316. font-size: 24px;
  1317. line-height: 30px;
  1318. color: #0183FA;
  1319. }
  1320. p:nth-child(2) {
  1321. margin-top: 10px;
  1322. font-size: 16px;
  1323. line-height: 16px;
  1324. color: #333;
  1325. }
  1326. }
  1327. .for-img-three {
  1328. height: 48px;
  1329. width: 48px;
  1330. margin: 26px 23px 0 0;
  1331. }
  1332. .for-text-box-two {
  1333. width: 88px;
  1334. p {
  1335. text-align: center;
  1336. }
  1337. p:nth-child(1) {
  1338. margin-top: 20px;
  1339. font-size: 24px;
  1340. line-height: 30px;
  1341. color: #0183FA;
  1342. }
  1343. p:nth-child(2) {
  1344. margin-top: 10px;
  1345. font-size: 16px;
  1346. line-height: 16px;
  1347. color: #333;
  1348. }
  1349. }
  1350. }
  1351. .for-button-min-box {
  1352. width: 330px;
  1353. margin-top: 9px;
  1354. height: 82px;
  1355. border-left: 1px dashed rgba(0, 0, 0, 0.3);
  1356. display: flex;
  1357. line-height: 82px;
  1358. div {
  1359. margin-left: 34px;
  1360. display: flex;
  1361. width: 60px;
  1362. cursor: pointer;
  1363. img {
  1364. width: 16px;
  1365. height: 16px;
  1366. margin-right: 8px;
  1367. margin-top: 33px;
  1368. }
  1369. p {
  1370. font-size: 14px;
  1371. color: #333;
  1372. }
  1373. }
  1374. }
  1375. }
  1376. .layout-data-max-big-box {
  1377. width: 1195px;
  1378. height: 400px;
  1379. margin-left: 36px;
  1380. border-left: 1px solid #e0e0e0;
  1381. border-right: 1px solid #e0e0e0;
  1382. border-bottom: 1px solid #e0e0e0;
  1383. position: relative;
  1384. .layout-data-max-big-min-box {
  1385. position: absolute;
  1386. top: 50%;
  1387. left: 50%;
  1388. .layout-data-max-min-box {
  1389. position: relative;
  1390. border:1px solid #e0e0e0;
  1391. .map-max-for-box {
  1392. position: absolute;
  1393. display: flex;
  1394. flex-direction: column;
  1395. .map-max-for-left-box {
  1396. height: 2px;
  1397. }
  1398. .map-max-for-center-box {
  1399. flex: 1;
  1400. display: flex;
  1401. .map-max-for-center-min-left {
  1402. width: 2px;
  1403. }
  1404. .map-max-for-center-min-center {
  1405. flex: 1;
  1406. position: relative;
  1407. .min-text-box{
  1408. width:100%;
  1409. text-align: center;
  1410. color:#333;
  1411. word-wrap:break-word;
  1412. word-break:break-all;
  1413. overflow: hidden;
  1414. z-index:999;
  1415. margin:30% 0 0 0;
  1416. font-size:14px;
  1417. line-height:20px;
  1418. }
  1419. div {
  1420. position: absolute
  1421. }
  1422. .center-move-door-p-t {
  1423. background: url("../../../../assets/ZDimages/evacuation3_2/icon_sysbjt_m.png") !important;
  1424. background-size: 100% !important;
  1425. transform: rotate(180deg);
  1426. }
  1427. .center-move-door-p-b {
  1428. background: url("../../../../assets/ZDimages/evacuation3_2/icon_sysbjt_m.png") !important;
  1429. background-size: 100% !important;
  1430. }
  1431. .center-move-door-p-l {
  1432. background: url("../../../../assets/ZDimages/evacuation3_2/icon_sysbjt_m.png") !important;
  1433. background-size: 100% !important;
  1434. transform: rotate(90deg);
  1435. }
  1436. .center-move-door-p-r {
  1437. background: url("../../../../assets/ZDimages/evacuation3_2/icon_sysbjt_m.png") !important;
  1438. background-size: 100% !important;
  1439. transform: rotateZ(270deg);
  1440. }
  1441. .center-move-door-p-t-ss {
  1442. background: url("../../../../assets/ZDimages/evacuation3_2/icon_aqtd_m.png") !important;
  1443. background-size: 100% !important;
  1444. transform: rotate(180deg);
  1445. }
  1446. .center-move-door-p-b-ss {
  1447. background: url("../../../../assets/ZDimages/evacuation3_2/icon_aqtd_m.png") !important;
  1448. background-size: 100% !important;
  1449. }
  1450. .center-move-door-p-l-ss {
  1451. background: url("../../../../assets/ZDimages/evacuation3_2/icon_aqtd_m.png") !important;
  1452. background-size: 100% !important;
  1453. transform: rotate(90deg);
  1454. }
  1455. .center-move-door-p-r-ss {
  1456. background: url("../../../../assets/ZDimages/evacuation3_2/icon_aqtd_m.png") !important;
  1457. background-size: 100% !important;
  1458. transform: rotateZ(270deg);
  1459. }
  1460. .lightTop {
  1461. background: url("../../../../assets/ZDimages/evacuation3_2/icon_sjt.png");
  1462. background-size: 100%;
  1463. }
  1464. .lightBottom {
  1465. background: url("../../../../assets/ZDimages/evacuation3_2/icon_xjt.png");
  1466. background-size: 100%;
  1467. }
  1468. .lightLeft {
  1469. background: url("../../../../assets/ZDimages/evacuation3_2/icon_zuo.png");
  1470. background-size: 100%;
  1471. }
  1472. .lightRight {
  1473. background: url("../../../../assets/ZDimages/evacuation3_2/icon_yuo.png");
  1474. background-size: 100%;
  1475. }
  1476. }
  1477. .map-max-for-center-min-right {
  1478. width: 2px;
  1479. }
  1480. }
  1481. .map-max-for-right-box {
  1482. height: 2px;
  1483. }
  1484. .map-max-for-min-box {
  1485. position: relative;
  1486. div {
  1487. position: absolute
  1488. }
  1489. }
  1490. }
  1491. .for-map-box {
  1492. background: #CEF2FD;
  1493. }
  1494. .for-map-box-one {
  1495. background: #CEFDD5;
  1496. }
  1497. .for-map-box-two {
  1498. background: url("../../../../assets/ZDimages/evacuation3_2/icon_yjtd.png") center center no-repeat #39AE36;
  1499. background-size: 60px 60px;
  1500. }
  1501. }
  1502. }
  1503. }
  1504. .layout-data-max-big-null-box {
  1505. height: 400px;
  1506. margin-left: 36px;
  1507. border-left: 1px solid #e0e0e0;
  1508. border-right: 1px solid #e0e0e0;
  1509. border-bottom: 1px solid #e0e0e0;
  1510. position: relative;
  1511. overflow: hidden;
  1512. img {
  1513. position: absolute;
  1514. top: 50%;
  1515. left: 50%;
  1516. margin-left: -71px;
  1517. margin-top: -71px;
  1518. width: 142px;
  1519. height: 142px;
  1520. }
  1521. div {
  1522. margin-top: 300px;
  1523. height: 30px;
  1524. display: flex;
  1525. p:nth-child(1) {
  1526. flex: 1;
  1527. }
  1528. p:nth-child(2) {
  1529. margin-right: 20px;
  1530. color: #333;
  1531. font-size: 14px;
  1532. }
  1533. p:nth-child(3) {
  1534. color: #0183FA;
  1535. font-size: 14px;
  1536. cursor: pointer;
  1537. }
  1538. p:nth-child(4) {
  1539. flex: 1;
  1540. }
  1541. }
  1542. }
  1543. }
  1544. .null-img {
  1545. position: absolute;
  1546. top: 40%;
  1547. left: 50%;
  1548. width: 276px;
  1549. height: 321px;
  1550. margin-top: -160px;
  1551. margin-left: -138px;
  1552. }
  1553. }
  1554. }
  1555. .floor-box {
  1556. flex: 1;
  1557. display: flex;
  1558. flex-direction: column;
  1559. overflow: hidden;
  1560. .map-max-big-box {
  1561. height: 400px;
  1562. position: relative;
  1563. border: 1px solid #E0E0E0;
  1564. margin-bottom: 20px;
  1565. margin-left: 36px;
  1566. .layout-data-max-big-box {
  1567. width: 1195px;
  1568. height: 400px;
  1569. position: relative;
  1570. .layout-data-max-big-min-box {
  1571. position: absolute;
  1572. top: 50%;
  1573. left: 50%;
  1574. .layout-data-max-min-box {
  1575. position: relative;
  1576. border:1px solid #e0e0e0;
  1577. .map-max-for-box {
  1578. position: absolute;
  1579. display: flex;
  1580. flex-direction: column;
  1581. .map-max-for-left-box {
  1582. height: 2px;
  1583. }
  1584. .map-max-for-center-box {
  1585. flex: 1;
  1586. display: flex;
  1587. .map-max-for-center-min-left {
  1588. width: 2px;
  1589. }
  1590. .map-max-for-center-min-center {
  1591. flex: 1;
  1592. position: relative;
  1593. .min-text-box{
  1594. width:100%;
  1595. text-align: center;
  1596. color:#333;
  1597. word-wrap:break-word;
  1598. word-break:break-all;
  1599. overflow: hidden;
  1600. z-index:999;
  1601. margin:30% 0 0 0;
  1602. font-size:14px;
  1603. line-height:20px;
  1604. }
  1605. div {
  1606. position: absolute
  1607. }
  1608. .center-move-door-p-t {
  1609. background: url("../../../../assets/ZDimages/evacuation3_2/icon_sysbjt_m.png") !important;
  1610. background-size: 100% !important;
  1611. transform: rotate(180deg);
  1612. }
  1613. .center-move-door-p-b {
  1614. background: url("../../../../assets/ZDimages/evacuation3_2/icon_sysbjt_m.png") !important;
  1615. background-size: 100% !important;
  1616. }
  1617. .center-move-door-p-l {
  1618. background: url("../../../../assets/ZDimages/evacuation3_2/icon_sysbjt_m.png") !important;
  1619. background-size: 100% !important;
  1620. transform: rotate(90deg);
  1621. }
  1622. .center-move-door-p-r {
  1623. background: url("../../../../assets/ZDimages/evacuation3_2/icon_sysbjt_m.png") !important;
  1624. background-size: 100% !important;
  1625. transform: rotateZ(270deg);
  1626. }
  1627. .center-move-door-p-t-ss {
  1628. background: url("../../../../assets/ZDimages/evacuation3_2/icon_aqtd_m.png") !important;
  1629. background-size: 100% !important;
  1630. transform: rotate(180deg);
  1631. }
  1632. .center-move-door-p-b-ss {
  1633. background: url("../../../../assets/ZDimages/evacuation3_2/icon_aqtd_m.png") !important;
  1634. background-size: 100% !important;
  1635. }
  1636. .center-move-door-p-l-ss {
  1637. background: url("../../../../assets/ZDimages/evacuation3_2/icon_aqtd_m.png") !important;
  1638. background-size: 100% !important;
  1639. transform: rotate(90deg);
  1640. }
  1641. .center-move-door-p-r-ss {
  1642. background: url("../../../../assets/ZDimages/evacuation3_2/icon_aqtd_m.png") !important;
  1643. background-size: 100% !important;
  1644. transform: rotateZ(270deg);
  1645. }
  1646. .lightTop {
  1647. background: url("../../../../assets/ZDimages/evacuation3_2/icon_sjt.png");
  1648. background-size: 100%;
  1649. }
  1650. .lightBottom {
  1651. background: url("../../../../assets/ZDimages/evacuation3_2/icon_xjt.png");
  1652. background-size: 100%;
  1653. }
  1654. .lightLeft {
  1655. background: url("../../../../assets/ZDimages/evacuation3_2/icon_zuo.png");
  1656. background-size: 100%;
  1657. }
  1658. .lightRight {
  1659. background: url("../../../../assets/ZDimages/evacuation3_2/icon_yuo.png");
  1660. background-size: 100%;
  1661. }
  1662. }
  1663. .map-max-for-center-min-right {
  1664. width: 2px;
  1665. }
  1666. }
  1667. .map-max-for-right-box {
  1668. height: 2px;
  1669. }
  1670. .map-max-for-min-box {
  1671. position: relative;
  1672. div {
  1673. position: absolute
  1674. }
  1675. }
  1676. }
  1677. .for-map-box {
  1678. background: #CEF2FD;
  1679. }
  1680. .for-map-box-one {
  1681. background: #CEFDD5;
  1682. }
  1683. .for-map-box-two {
  1684. background: url("../../../../assets/ZDimages/evacuation3_2/icon_yjtd.png") center center no-repeat #39AE36;
  1685. background-size: 60px 60px;
  1686. }
  1687. }
  1688. }
  1689. }
  1690. .layout-data-max-big-null-box {
  1691. height: 400px;
  1692. position: relative;
  1693. overflow: hidden;
  1694. img {
  1695. position: absolute;
  1696. top: 50%;
  1697. left: 50%;
  1698. margin-left: -71px;
  1699. margin-top: -71px;
  1700. width: 142px;
  1701. height: 142px;
  1702. }
  1703. div {
  1704. margin-top: 300px;
  1705. height: 30px;
  1706. display: flex;
  1707. p:nth-child(1) {
  1708. flex: 1;
  1709. }
  1710. p:nth-child(2) {
  1711. margin-right: 20px;
  1712. color: #333;
  1713. font-size: 14px;
  1714. }
  1715. p:nth-child(3) {
  1716. color: #0183FA;
  1717. font-size: 14px;
  1718. cursor: pointer;
  1719. }
  1720. p:nth-child(4) {
  1721. flex: 1;
  1722. }
  1723. }
  1724. }
  1725. .position-button-p {
  1726. position: absolute;
  1727. right: 12px;
  1728. top: 13px;
  1729. width: 100px;
  1730. line-height: 40px;
  1731. font-size: 14px;
  1732. color: #fff;
  1733. background: #0045AF;
  1734. border-radius: 6px;
  1735. text-align: center;
  1736. cursor: pointer;
  1737. }
  1738. }
  1739. .table-box {
  1740. margin-left: 36px;
  1741. flex: 1;
  1742. display: flex;
  1743. flex-direction: column;
  1744. overflow: hidden;
  1745. }
  1746. }
  1747. }
  1748. }
  1749. }
  1750. </style>
  1751. <style lang="scss">
  1752. .dialog-sort-no-form-item-box input {
  1753. text-align: left !important;
  1754. }
  1755. .building-dialog-box{
  1756. .map-max-big-box {
  1757. width: 575px;
  1758. height: 286px;
  1759. position: relative;
  1760. border: 1px solid #E0E0E0;
  1761. overflow: hidden;
  1762. .layout-data-max-big-box {
  1763. width: 575px;
  1764. height: 286px;
  1765. position: relative;
  1766. .layout-data-max-big-min-box {
  1767. position: absolute;
  1768. top: 50%;
  1769. left: 50%;
  1770. .layout-data-max-min-box {
  1771. position: relative;
  1772. .map-max-for-box {
  1773. position: absolute;
  1774. display: flex;
  1775. flex-direction: column;
  1776. .map-max-for-left-box {
  1777. height: 2px;
  1778. }
  1779. .map-max-for-center-box {
  1780. flex: 1;
  1781. display: flex;
  1782. .map-max-for-center-min-left {
  1783. width: 2px;
  1784. }
  1785. .map-max-for-center-min-center {
  1786. flex: 1;
  1787. position: relative;
  1788. .min-text-box{
  1789. width:100%;
  1790. text-align: center;
  1791. color:#333;
  1792. word-wrap:break-word;
  1793. word-break:break-all;
  1794. overflow: hidden;
  1795. z-index:999;
  1796. margin:30% 0 0 0;
  1797. font-size:14px;
  1798. line-height:20px;
  1799. }
  1800. div {
  1801. position: absolute
  1802. }
  1803. .center-move-door-p-t {
  1804. background: url("../../../../assets/ZDimages/evacuation3_2/icon_sysbjt_m.png") !important;
  1805. background-size: 100% !important;
  1806. transform: rotate(180deg);
  1807. }
  1808. .center-move-door-p-b {
  1809. background: url("../../../../assets/ZDimages/evacuation3_2/icon_sysbjt_m.png") !important;
  1810. background-size: 100% !important;
  1811. }
  1812. .center-move-door-p-l {
  1813. background: url("../../../../assets/ZDimages/evacuation3_2/icon_sysbjt_m.png") !important;
  1814. background-size: 100% !important;
  1815. transform: rotate(90deg);
  1816. }
  1817. .center-move-door-p-r {
  1818. background: url("../../../../assets/ZDimages/evacuation3_2/icon_sysbjt_m.png") !important;
  1819. background-size: 100% !important;
  1820. transform: rotateZ(270deg);
  1821. }
  1822. .center-move-door-p-t-ss {
  1823. background: url("../../../../assets/ZDimages/evacuation3_2/icon_aqtd_m.png") !important;
  1824. background-size: 100% !important;
  1825. transform: rotate(180deg);
  1826. }
  1827. .center-move-door-p-b-ss {
  1828. background: url("../../../../assets/ZDimages/evacuation3_2/icon_aqtd_m.png") !important;
  1829. background-size: 100% !important;
  1830. }
  1831. .center-move-door-p-l-ss {
  1832. background: url("../../../../assets/ZDimages/evacuation3_2/icon_aqtd_m.png") !important;
  1833. background-size: 100% !important;
  1834. transform: rotate(90deg);
  1835. }
  1836. .center-move-door-p-r-ss {
  1837. background: url("../../../../assets/ZDimages/evacuation3_2/icon_aqtd_m.png") !important;
  1838. background-size: 100% !important;
  1839. transform: rotateZ(270deg);
  1840. }
  1841. .lightTop {
  1842. background: url("../../../../assets/ZDimages/evacuation3_2/icon_sjt.png");
  1843. background-size: 100%;
  1844. }
  1845. .lightBottom {
  1846. background: url("../../../../assets/ZDimages/evacuation3_2/icon_xjt.png");
  1847. background-size: 100%;
  1848. }
  1849. .lightLeft {
  1850. background: url("../../../../assets/ZDimages/evacuation3_2/icon_zuo.png");
  1851. background-size: 100%;
  1852. }
  1853. .lightRight {
  1854. background: url("../../../../assets/ZDimages/evacuation3_2/icon_yuo.png");
  1855. background-size: 100%;
  1856. }
  1857. }
  1858. .map-max-for-center-min-right {
  1859. width: 2px;
  1860. }
  1861. }
  1862. .map-max-for-right-box {
  1863. height: 2px;
  1864. }
  1865. .map-max-for-min-box {
  1866. position: relative;
  1867. div {
  1868. position: absolute
  1869. }
  1870. }
  1871. }
  1872. .for-map-box {
  1873. background: #CEF2FD;
  1874. }
  1875. .for-map-box-one {
  1876. background: #CEFDD5;
  1877. }
  1878. .for-map-box-two {
  1879. background: url("../../../../assets/ZDimages/evacuation3_2/icon_yjtd.png") center center no-repeat #39AE36;
  1880. background-size: 60px 60px;
  1881. }
  1882. .for-map-box-three {
  1883. background: #FFBBBB!important;
  1884. }
  1885. }
  1886. }
  1887. }
  1888. .layout-data-max-big-null-box {
  1889. height: 400px;
  1890. position: relative;
  1891. overflow: hidden;
  1892. img {
  1893. position: absolute;
  1894. top: 50%;
  1895. left: 50%;
  1896. margin-left: -71px;
  1897. margin-top: -71px;
  1898. width: 142px;
  1899. height: 142px;
  1900. }
  1901. div {
  1902. margin-top: 300px;
  1903. height: 30px;
  1904. display: flex;
  1905. p:nth-child(1) {
  1906. flex: 1;
  1907. }
  1908. p:nth-child(2) {
  1909. margin-right: 20px;
  1910. color: #333;
  1911. font-size: 14px;
  1912. }
  1913. p:nth-child(3) {
  1914. color: #0183FA;
  1915. font-size: 14px;
  1916. cursor: pointer;
  1917. }
  1918. p:nth-child(4) {
  1919. flex: 1;
  1920. }
  1921. }
  1922. }
  1923. .position-button-p {
  1924. position: absolute;
  1925. right: 12px;
  1926. top: 13px;
  1927. width: 100px;
  1928. line-height: 40px;
  1929. font-size: 14px;
  1930. color: #fff;
  1931. background: #0045AF;
  1932. border-radius: 6px;
  1933. text-align: center;
  1934. cursor: pointer;
  1935. }
  1936. }
  1937. }
  1938. </style>