index.vue 42 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085
  1. /**
  2. *@author:Guoxiaohuan
  3. *@date:2020.06.08
  4. *@info 机房信息主页
  5. */
  6. <template>
  7. <div class='compute-box'>
  8. <el-dialog :title='`${systemName}`||"机房"' :visible.sync='visible' :fullscreen='true'>
  9. <div class='compute-span'></div>
  10. <el-tooltip class='item' effect='dark' :content='content' placement='top'>
  11. <div class='compute-zf' @click='jumpFloor'></div>
  12. </el-tooltip>
  13. <div class='compute-tab'>
  14. <el-tabs v-model='activeName' @tab-click='handleClick'>
  15. <el-tab-pane label='机房布置图' name='1' v-if='tableImg.length>0'>
  16. <room-table1 v-if='tableImg.length>=0' :tableImg='tableImg'></room-table1>
  17. </el-tab-pane>
  18. <el-tab-pane label='配电室低压柜及出线明细表' name='2' v-if='systemName=="配电室机房"'>
  19. <div class='compute-center'>
  20. <Select
  21. width='200'
  22. @change='Index1'
  23. v-model='floor2'
  24. tipPlace='top'
  25. caption='楼层:'
  26. :selectdata='floorSelect'
  27. :placeholder='"请选择"'
  28. style='margin-right:12px'
  29. ></Select>
  30. <el-input
  31. clearable
  32. @change='Index1'
  33. v-model='ctbhInput'
  34. placeholder='搜索抽屉编号'
  35. size='small'
  36. prefix-icon='el-icon-search'
  37. style='width:200px;margin-right:12px'
  38. ></el-input>
  39. <el-input
  40. clearable
  41. @change='Index1'
  42. v-model='cxggInput'
  43. placeholder='搜索出线规格'
  44. size='small'
  45. prefix-icon='el-icon-search'
  46. style='width:200px;margin-right:12px'
  47. ></el-input>
  48. <el-input
  49. clearable
  50. @change='Index1'
  51. v-model='djbhInput'
  52. placeholder='搜索电井编号'
  53. size='small'
  54. prefix-icon='el-icon-search'
  55. style='width:200px;margin-right:12px'
  56. ></el-input>
  57. <el-input
  58. clearable
  59. @change='Index1'
  60. v-model='kzhlInput'
  61. placeholder='搜索控制回路'
  62. size='small'
  63. prefix-icon='el-icon-search'
  64. style='width:200px;margin-right:12px'
  65. ></el-input>
  66. </div>
  67. <room-table2
  68. v-if='table2.length>=0'
  69. :table2='table2'
  70. :loading='loading1'
  71. :page='page1'
  72. :total='total1'
  73. :size='size1'
  74. @Index1Emit='Index1Emit'
  75. ></room-table2>
  76. </el-tab-pane>
  77. <el-tab-pane label='机房内核心设备' name='3'>
  78. <div class='compute-center'>
  79. <el-input
  80. clearable
  81. placeholder='搜索设备简称'
  82. size='small'
  83. prefix-icon='el-icon-search'
  84. v-model='sbjcInput'
  85. @change='Index2'
  86. style='width:200px;margin-right:12px'
  87. ></el-input>
  88. <el-input
  89. clearable
  90. @change='Index2'
  91. placeholder='搜索品牌、型号'
  92. size='small'
  93. prefix-icon='el-icon-search'
  94. v-model='ppxhInput'
  95. style='width:200px;margin-right:12px'
  96. ></el-input>
  97. <Select
  98. width='200'
  99. @change='Index2'
  100. tipPlace='top'
  101. v-model='floorChange'
  102. caption='楼层:'
  103. :selectdata='floorSelect'
  104. :placeholder='"请选择"'
  105. style='margin-right:12px'
  106. ></Select>
  107. <el-input
  108. clearable
  109. @change='Index2'
  110. placeholder='搜索生产厂商'
  111. size='small'
  112. prefix-icon='el-icon-search'
  113. v-model='sccsInput'
  114. style='width:200px;margin-right:12px'
  115. ></el-input>
  116. </div>
  117. <room-table3
  118. v-if='table3.length>=0'
  119. :table3='table3'
  120. :loading='loading2'
  121. :page='page2'
  122. :total='total2'
  123. :size='size2'
  124. :floorChange='floorChange'
  125. @Index2Emit='Index2Emit'
  126. ></room-table3>
  127. </el-tab-pane>
  128. <el-tab-pane label='维修记录' name='4'>
  129. <div class='compute-center'>
  130. <el-input
  131. clearable
  132. @change='Index3'
  133. placeholder='搜索设备名称、编号'
  134. size='small'
  135. prefix-icon='el-icon-search'
  136. v-model='sbmcInput4'
  137. style='width:200px;margin-right:12px'
  138. ></el-input>
  139. <el-input
  140. clearable
  141. @change='Index3'
  142. placeholder='搜索重要事项记录、描述'
  143. size='small'
  144. prefix-icon='el-icon-search'
  145. v-model='zysxInput4'
  146. style='width:200px;margin-right:12px'
  147. ></el-input>
  148. <Select
  149. @change='Index3'
  150. width='200'
  151. tipPlace='top'
  152. caption='是否更换:'
  153. v-model='sfghSelect'
  154. :selectdata='isReplaceData'
  155. :placeholder='"请选择"'
  156. style='margin-right:12px'
  157. ></Select>
  158. <el-input
  159. clearable
  160. @change='Index3'
  161. placeholder='搜索工单编号'
  162. size='small'
  163. prefix-icon='el-icon-search'
  164. v-model='gdbhInput4'
  165. style='width:200px;margin-right:12px'
  166. ></el-input>
  167. <div class='picker-box'>
  168. <span class='picker-span'>填报日期:</span>
  169. <el-date-picker
  170. style='width:190px'
  171. v-model='tbsjDate'
  172. value-format='yyyyMMdd'
  173. type='daterange'
  174. @change='Index3'
  175. size='mini'
  176. range-separator='-'
  177. start-placeholder
  178. end-placeholder
  179. ></el-date-picker>
  180. </div>
  181. <!-- <p class='input-dialog-p'>填报日期</p>
  182. <p class='input-dialog-p2'>
  183. <el-date-picker
  184. clearable
  185. v-model='tbsjDate'
  186. value-format='yyyyMMdd'
  187. type='daterange'
  188. size='mini'
  189. style='margin-right:12px;width:200px'
  190. range-separator='-'
  191. start-placeholder
  192. end-placeholder
  193. ></el-date-picker>
  194. </p>-->
  195. </div>
  196. <div class='dialog-none'>
  197. <div class='input-dialog'>
  198. <div class='input-dialog-top' @click='show'>
  199. <img src='@/assets/imgs/select.png' />
  200. 筛选
  201. </div>
  202. <div class='input-dialog-form' v-if='dialogFormVisible'>
  203. <p class='input-dialog-p'>验收日期</p>
  204. <p class='input-dialog-p2'>
  205. <el-date-picker
  206. clearable
  207. v-model='yssjDate'
  208. value-format='yyyyMMdd'
  209. type='daterange'
  210. size='mini'
  211. style='margin-right:12px;width:200px'
  212. range-separator='-'
  213. start-placeholder
  214. end-placeholder
  215. ></el-date-picker>
  216. </p>
  217. <!-- <p class='input-dialog-p'>工单编号</p>
  218. <p class='input-dialog-p2'>
  219. <el-input
  220. clearable
  221. placeholder
  222. style='width:200px;'
  223. size='mini'
  224. prefix-icon='el-icon-search'
  225. v-model='gdbhInput4'
  226. ></el-input>
  227. </p>-->
  228. <p class='input-dialog-foot'>
  229. <el-button @click='dialogFormVisible = false' size='mini'>取 消</el-button>
  230. <el-button type='primary' @click='confirm
  231. ' size='mini'>确 定</el-button>
  232. </p>
  233. </div>
  234. </div>
  235. </div>
  236. <room-table4
  237. v-if='table4.length>=0'
  238. :table4='table4'
  239. :loading='loading3'
  240. :page='page3'
  241. :total='total3'
  242. :size='size3'
  243. @Index3Emit='Index3Emit'
  244. ></room-table4>
  245. </el-tab-pane>
  246. <el-tab-pane label='维保记录' name='5'>
  247. <div class='compute-center'>
  248. <el-input
  249. @change='Index4'
  250. clearable
  251. placeholder='搜索设备名称、编号'
  252. size='small'
  253. prefix-icon='el-icon-search'
  254. v-model='sbmcInput5'
  255. style='margin-right:12px;width:220px;'
  256. ></el-input>
  257. <el-input
  258. @change='Index4'
  259. clearable
  260. placeholder='搜索核心维保事项记录描述'
  261. size='small'
  262. prefix-icon='el-icon-search'
  263. v-model='wbsxjlInput5'
  264. style='margin-right:12px;width:220px;'
  265. ></el-input>
  266. <el-input
  267. @change='Index4'
  268. clearable
  269. placeholder='搜索任务编号'
  270. size='small'
  271. prefix-icon='el-icon-search'
  272. v-model='rwbhInput5'
  273. style='margin-right:12px;width:220px;'
  274. ></el-input>
  275. <Select
  276. width='220'
  277. tipPlace='top'
  278. v-model='statuSelect5'
  279. caption='任务状态'
  280. v-if='status.length>0'
  281. :selectdata='status'
  282. :placeholder='"请选择"'
  283. style='margin-right:12px'
  284. ></Select>
  285. <Select
  286. width='220'
  287. tipPlace='top'
  288. v-model='iszcSelect5'
  289. caption='是否正常:'
  290. v-if='zt.length>0'
  291. :selectdata='zt'
  292. :placeholder='"请选择"'
  293. style='margin-right:12px'
  294. ></Select>
  295. </div>
  296. <div class='dialog-none'>
  297. <div class='input-dialog'>
  298. <div class='input-dialog-top' @click='show'>
  299. <img src='@/assets/imgs/select.png' />
  300. 筛选
  301. </div>
  302. <div class='input-dialog-form' v-if='dialogFormVisible'>
  303. <p class='input-dialog-p'>任务开始日期</p>
  304. <p class='input-dialog-p2'>
  305. <el-date-picker
  306. clearable
  307. value-format='yyyyMMdd'
  308. type='daterange'
  309. size='mini'
  310. v-model='rwksrq'
  311. style='width:200px'
  312. range-separator='-'
  313. start-placeholder
  314. end-placeholder
  315. ></el-date-picker>
  316. </p>
  317. <p class='input-dialog-p'>任务完成日期</p>
  318. <p class='input-dialog-p2'>
  319. <el-date-picker
  320. clearable
  321. value-format='yyyyMMdd'
  322. type='daterange'
  323. size='mini'
  324. v-model='rwwcrq'
  325. style='width:200px'
  326. range-separator='-'
  327. start-placeholder
  328. end-placeholder
  329. ></el-date-picker>
  330. </p>
  331. <!-- <el-input
  332. @change='Index4'
  333. clearable
  334. placeholder='异常工单编号'
  335. size='small'
  336. prefix-icon='el-icon-search'
  337. v-model='ycgdbhInput5'
  338. style='margin-right:12px;width:220px;'
  339. ></el-input>-->
  340. <p class='input-dialog-p'>异常工单编号</p>
  341. <p class='input-dialog-p2'>
  342. <el-input
  343. clearable
  344. placeholder='异常工单编号'
  345. size='small'
  346. prefix-icon='el-icon-search'
  347. v-model='ycgdbhInput5'
  348. style='width:200px;'
  349. ></el-input>
  350. </p>
  351. <p class='input-dialog-p'>异常工单填报日期</p>
  352. <p class='input-dialog-p2'>
  353. <el-date-picker
  354. clearable
  355. value-format='yyyyMMdd'
  356. type='daterange'
  357. size='mini'
  358. v-model='ycgdtbsj'
  359. style='width:200px'
  360. range-separator='-'
  361. start-placeholder
  362. end-placeholder
  363. ></el-date-picker>
  364. </p>
  365. <p class='input-dialog-p'>异常工单验收日期</p>
  366. <p class='input-dialog-p2'>
  367. <el-date-picker
  368. clearable
  369. value-format='yyyyMMdd'
  370. type='daterange'
  371. size='mini'
  372. style='width:200px'
  373. range-separator='-'
  374. start-placeholder
  375. end-placeholder
  376. v-model='ycgdyssj'
  377. ></el-date-picker>
  378. </p>
  379. <p class='input-dialog-foot'>
  380. <el-button @click='dialogFormVisible = false' size='mini'>取 消</el-button>
  381. <el-button type='primary' @click='confirm2' size='mini'>确 定</el-button>
  382. </p>
  383. </div>
  384. </div>
  385. </div>
  386. <room-table5
  387. v-if='table5.length>=0'
  388. :table5='table5'
  389. :loading='loading4'
  390. :page='page4'
  391. :total='total4'
  392. :size='size4'
  393. @Index4Emit='Index4Emit'
  394. ></room-table5>
  395. </el-tab-pane>
  396. </el-tabs>
  397. </div>
  398. </el-dialog>
  399. </div>
  400. </template>
  401. <script>
  402. import { queryEquipmentList } from '@/api/equipmentList.js'
  403. import { queryDygjcxline, queryHxsb, queryWxjf, queryWb, querySystem } from '@/api/room.js'
  404. import roomTable1 from './room1'
  405. import roomTable2 from './room2'
  406. import roomTable3 from './room3'
  407. import roomTable4 from './room4'
  408. import roomTable5 from './room5'
  409. import { mapGetters } from 'vuex'
  410. import { querySelect, queryPic } from '@/api/public.js'
  411. export default {
  412. data() {
  413. return {
  414. content: '',
  415. activeName: '1',
  416. visible: false,
  417. dialogFormVisible: false,
  418. systemName: '',
  419. loading: true,
  420. loading1: true,
  421. loading2: true,
  422. loading3: true,
  423. loading4: true,
  424. table2: [],
  425. table3: [],
  426. table4: [],
  427. table5: [],
  428. //
  429. total: 0,
  430. page: 1,
  431. size: 10,
  432. picFloor: '',
  433. tableImg: [],
  434. //
  435. total1: 0,
  436. page1: 1,
  437. size1: 10,
  438. floor2: '',
  439. ctbhInput: '',
  440. cxggInput: '',
  441. djbhInput: '',
  442. kzhlInput: '',
  443. //
  444. total2: 0,
  445. page2: 1,
  446. size2: 10,
  447. sccsInput: '',
  448. ppxhInput: '',
  449. sbjcInput: '',
  450. floorChange: '',
  451. //
  452. total3: 0,
  453. page3: 1,
  454. size3: 11,
  455. tbsjDate: '',
  456. yssjDate: '',
  457. // 是否更换配件
  458. isReplaceData: [
  459. { id: '1', name: '是' },
  460. { id: '0', name: '否' }
  461. ],
  462. sfghSelect: '',
  463. sbmcInput4: '',
  464. sbbhInput4: '',
  465. zysxInput4: '',
  466. msInput4: '',
  467. gdbhInput4: '',
  468. type1: 'wx',
  469. //
  470. total4: 0,
  471. page4: 1,
  472. size4: 11,
  473. searVal: '',
  474. status: [],
  475. zt: [],
  476. sbmcInput5: '',
  477. sbbhInput5: '',
  478. wbsxjlInput5: '',
  479. rwbhInput5: '',
  480. ycgdbhInput5: '',
  481. ssmsInput5: '',
  482. iszcSelect5: '',
  483. statuSelect5: '',
  484. rwksrq: '',
  485. rwwcrq: '',
  486. ycgdtbsj: '',
  487. ycgdyssj: '',
  488. smsxtArr: []
  489. }
  490. },
  491. components: {
  492. roomTable1,
  493. roomTable2,
  494. roomTable3,
  495. roomTable4,
  496. roomTable5
  497. },
  498. computed: {
  499. ...mapGetters(['floorSelect', 'plazaId'])
  500. },
  501. methods: {
  502. handleClick(tab) {
  503. if (tab.label == '机房布置图') {
  504. this.Index(this.smsxtArr.smsxt)
  505. } else if (tab.label == '配电室低压柜及出线明细表') {
  506. this.Index1()
  507. } else if (tab.label == '机房内核心设备') {
  508. this.Index2()
  509. } else if (tab.label == '维修记录') {
  510. this.Index3()
  511. } else if (tab.label == '维保记录') {
  512. this.Index4()
  513. this.changeSelect()
  514. }
  515. },
  516. // 右上角的筛选点击按钮
  517. show() {
  518. this.dialogFormVisible = !this.dialogFormVisible
  519. },
  520. Index(system) {
  521. this.picFloor = this.$cookie.get('floorNow')
  522. let getParams = {
  523. typename: '位置布置图',
  524. location: '1809',
  525. module: '1002',
  526. system: system,
  527. plazaId: this.plazaId
  528. }
  529. queryPic({ getParams }).then(res => {
  530. //console.log('机房布置图', res)
  531. this.tableImg = res.data ? res.data : []
  532. })
  533. },
  534. // 明细表
  535. Index1() {
  536. let getParams = {
  537. location: '1890',
  538. plazaId: this.plazaId,
  539. page: this.page1,
  540. size: this.size1
  541. }
  542. if (this.floor2) {
  543. getParams.floor = this.floor2
  544. }
  545. if (this.ctbhInput) {
  546. if (getParams.keyword) {
  547. getParams.keyword = `${getParams.keyword + ';' + this.ctbhInput}:drawernum`
  548. } else {
  549. getParams.keyword = `${this.ctbhInput}:drawernum`
  550. }
  551. }
  552. if (this.cxggInput) {
  553. if (getParams.keyword) {
  554. getParams.keyword = `${getParams.keyword + ';' + this.cxggInput}:outspec`
  555. } else {
  556. getParams.keyword = `${this.cxggInput}:outspec`
  557. }
  558. }
  559. if (this.djbhInput) {
  560. if (getParams.keyword) {
  561. getParams.keyword = `${getParams.keyword + ';' + this.djbhInput}:wellnum`
  562. } else {
  563. getParams.keyword = `${this.djbhInput}:wellnum`
  564. }
  565. }
  566. if (this.kzhlInput) {
  567. if (getParams.keyword) {
  568. getParams.keyword = `${getParams.keyword + ';' + this.kzhlInput}:control`
  569. } else {
  570. getParams.keyword = `${this.kzhlInput}:control`
  571. }
  572. }
  573. queryDygjcxline({ getParams }).then(res => {
  574. if (res.result == 'success') {
  575. this.loading1 = false
  576. this.total1 = res.count
  577. this.table2 = res.data ? res.data : []
  578. //console.log('明细表', res)
  579. }
  580. })
  581. },
  582. // 核心设备
  583. Index2() {
  584. let postParams = {}
  585. let data = {
  586. location: '1890',
  587. plazaId: this.plazaId,
  588. page: this.page2,
  589. size: this.size2
  590. }
  591. if (this.sbjcInput) {
  592. if (data.keyword) {
  593. data.keyword = `${data.keyword + ';' + this.sbjcInput}:sbjc`
  594. } else {
  595. data.keyword = `${this.sbjcInput}:sbjc`
  596. }
  597. }
  598. if (this.ppxhInput) {
  599. if (data.keyword) {
  600. data.keyword = `${data.keyword + ';' + this.ppxhInput}:brand,sbxh`
  601. } else {
  602. data.keyword = `${this.ppxhInput}:brand,sbxh`
  603. }
  604. }
  605. if (this.sccsInput) {
  606. if (data.keyword) {
  607. data.keyword = `${data.keyword + ';' + this.sccsInput}:manufacturer`
  608. } else {
  609. data.keyword = `${this.sccsInput}:manufacturer`
  610. }
  611. }
  612. if (this.floorChange) {
  613. postParams.gname = this.floorChange
  614. }
  615. queryHxsb({ data, postParams }).then(res => {
  616. this.loading2 = false
  617. this.total2 = res.data.count
  618. this.table3 = res.data.data ? res.data.data : []
  619. })
  620. },
  621. Index1Emit(val) {
  622. this.page1 = val
  623. this.Index1()
  624. },
  625. Index2Emit(val) {
  626. this.page2 = val
  627. this.Index2()
  628. },
  629. Index3Emit(val) {
  630. this.page3 = val
  631. this.Index3()
  632. },
  633. Index4Emit(val) {
  634. this.page4 = val
  635. this.Index4()
  636. },
  637. // 机房维修记录
  638. Index3() {
  639. let getParams = {
  640. location: '1890',
  641. // plazaId: '1001145',
  642. plazaId: this.plazaId,
  643. page: this.page3,
  644. size: this.size3,
  645. orderBy: 'sjjssj,0;location,1'
  646. }
  647. if (this.sfghSelect) {
  648. getParams.ismodel = this.sfghSelect
  649. }
  650. // 设备名称、编号
  651. if (this.sbmcInput4) {
  652. if (getParams.keyword) {
  653. getParams.keyword = `${getParams.keyword + ';' + this.sbmcInput4}:sbmc`
  654. } else {
  655. getParams.keyword = `${this.sbmcInput4}:sbmc,location`
  656. }
  657. }
  658. // 重要事项记录、描述
  659. if (this.zysxInput4) {
  660. if (getParams.keyword) {
  661. getParams.keyword = `${getParams.keyword + ';' + this.zysxInput4}:matters`
  662. } else {
  663. getParams.keyword = `${this.zysxInput4}:matters,manufacturer`
  664. }
  665. }
  666. // 填报时间
  667. if (this.tbsjDate) {
  668. getParams.reportedbyStartDate = this.tbsjDate[0] + '000000'
  669. getParams.reportedbyEndDate = this.tbsjDate[1] + '000000'
  670. }
  671. // 验收时间
  672. if (this.yssjDate) {
  673. getParams.sjjssjStartDate = this.yssjDate[0] + '000000'
  674. getParams.sjjssjEndDate = this.yssjDate[1] + '000000'
  675. }
  676. queryWxjf({ getParams }).then(res => {
  677. //console.log('维修', res)
  678. if (res.result == 'success') {
  679. this.loading3 = false
  680. this.total3 = res.count
  681. this.table4 = res.data ? res.data : []
  682. }
  683. })
  684. },
  685. // 机房维保记录
  686. Index4() {
  687. let postParams = {}
  688. let data = {
  689. location: '1890',
  690. plazaId: this.plazaId,
  691. page: this.page4,
  692. size: this.size4,
  693. orderBy: 'wb_gzglid,0;assetnum,1;reportedby,0;'
  694. }
  695. //
  696. // 任务开始日期
  697. if (this.rwksrq) {
  698. data.sjkssjStartDate = this.rwksrq[0] + '000000'
  699. data.sjkssjEndDate = this.rwksrq[1] + '000000'
  700. }
  701. // 任务完成日期
  702. if (this.rwwcrq) {
  703. data.sjwcsjStartDate = this.rwwcrq[0] + '000000'
  704. data.sjwcsjEndDate = this.rwwcrq[1] + '000000'
  705. }
  706. // 异常工单填报时间
  707. if (this.ycgdtbsj) {
  708. data.reportdateStartDate = this.ycgdtbsj[0] + '000000'
  709. data.reportdateEndDate = this.ycgdtbsj[1] + '000000'
  710. }
  711. // 异常工单验收时间
  712. if (this.ycgdyssj) {
  713. data.sjjssjStartDate = this.ycgdyssj[0] + '000000'
  714. data.sjjssjEndDate = this.ycgdyssj[1] + '000000'
  715. }
  716. //
  717. // 是否正常
  718. if (this.iszcSelect5) {
  719. data.zt = this.iszcSelect5
  720. }
  721. // 任务状态
  722. if (this.statuSelect5) {
  723. data.status = this.statuSelect5
  724. }
  725. if (this.sbmcInput5) {
  726. if (data.keyword) {
  727. data.keyword = `${data.keyword + ';' + this.sbmcInput5}:sbmc,assetnum`
  728. } else {
  729. data.keyword = `${this.sbmcInput5}:sbmc,assetnum`
  730. }
  731. }
  732. if (this.wbsxjlInput5) {
  733. if (data.keyword) {
  734. data.keyword = `${data.keyword + ';' + this.wbsxjlInput5}:matters`
  735. } else {
  736. data.keyword = `${this.wbsxjlInput5}:matters,description`
  737. }
  738. }
  739. if (this.rwbhInput5) {
  740. if (data.keyword) {
  741. data.keyword = `${data.keyword + ';' + this.rwbhInput5}:wb_gzglid`
  742. } else {
  743. data.keyword = `${this.rwbhInput5}:wb_gzglid`
  744. }
  745. }
  746. if (this.ycgdbhInput5) {
  747. if (data.keyword) {
  748. data.keyword = `${data.keyword + ';' + this.ycgdbhInput5}:wonum`
  749. } else {
  750. data.keyword = `${this.ycgdbhInput5}:wonum`
  751. }
  752. }
  753. queryWb({ data, postParams }).then(res => {
  754. //console.log('维保', res)
  755. this.loading4 = false
  756. this.total4 = res.data.count
  757. this.table5 = res.data.data ? res.data.data : []
  758. })
  759. },
  760. confirm() {
  761. this.Index3()
  762. },
  763. confirm2() {
  764. this.Index4()
  765. },
  766. // 下拉框数据
  767. changeSelect() {
  768. this.department = []
  769. let postParams = [
  770. {
  771. columnName: { status: 'status', zt: 'zt' },
  772. tableName: 'v_glsms_wbzy'
  773. }
  774. ]
  775. let data = {
  776. plazaId: this.plazaId
  777. }
  778. querySelect({ data, postParams }).then(res => {
  779. //console.log('下拉框', res)
  780. let status = [],
  781. zt = []
  782. status = res.data.data.v_glsms_wbzy.status ? res.data.data.v_glsms_wbzy.status : []
  783. zt = res.data.data.v_glsms_wbzy.zt ? res.data.data.v_glsms_wbzy.zt : []
  784. if (status.length > 0) {
  785. status.forEach(el => {
  786. let obj = {
  787. id: el.key,
  788. name: el.value
  789. }
  790. this.status.push(obj)
  791. })
  792. }
  793. if (zt.length > 0) {
  794. zt.forEach(el => {
  795. let obj = {
  796. id: el.key,
  797. name: el.value == '正常' ? '是' : '否'
  798. }
  799. this.zt.push(obj)
  800. })
  801. }
  802. })
  803. },
  804. // 查询楼层功能下的机房属于哪类设备
  805. init() {
  806. this.smsxtArr = []
  807. let params = {
  808. getParams: {
  809. locationid: '5209',
  810. plazaId: this.plazaId
  811. }
  812. }
  813. querySystem(params).then(res => {
  814. this.smsxtArr = res.data[0]
  815. console.log(this.smsxtArr)
  816. this.Index(this.smsxtArr.smsxt)
  817. this.content = `查看${this.$cookie.get('floorNow')}层${this.smsxtArr.smsxtname}分布图`
  818. })
  819. },
  820. // 打开机房弹框
  821. open(name) {
  822. this.visible = true
  823. this.systemName = name.name
  824. if (name.type == 'floor') {
  825. this.init()
  826. } else if (name.type == 'system') {
  827. let floor = this.$cookie.get('floorNow')
  828. this.content = `查看${floor}层楼层功能图`
  829. }
  830. },
  831. // 机房右上角的跳转 如果是在楼层功能打开的机房则要跳转到设备设施对应的系统\楼层 反之亦然
  832. jumpFloor() {
  833. if (this.smsxtArr.smsxt) {
  834. if (location.pathname.split('/')[3] == 'equipment') {
  835. this.$router.push({ path: '/home/floorFunc' })
  836. } else {
  837. this.$router.push({ path: '/home/equipment', query: { smsxt: this.smsxtArr.smsxt } })
  838. }
  839. }
  840. }
  841. },
  842. mounted() {
  843. // this.Index()
  844. }
  845. }
  846. </script>
  847. <style lang="less" scoped>
  848. .compute-box {
  849. .compute-zf {
  850. width: 15px;
  851. height: 13px;
  852. background: url('../../assets/imgs/zffx.png');
  853. background-repeat: no-repeat;
  854. background-size: 100% 100%;
  855. position: absolute;
  856. right: 74px;
  857. top: 25px;
  858. cursor: pointer;
  859. &::after {
  860. content: '';
  861. position: absolute;
  862. right: -16px;
  863. width: 1px;
  864. height: 16px;
  865. background: rgba(216, 216, 216, 1);
  866. }
  867. }
  868. .picker-box {
  869. display: flex;
  870. align-items: center;
  871. background: #fff;
  872. padding: 0 6px;
  873. border: 1px solid #dcdfe6;
  874. border-radius: 4px;
  875. height: 32px;
  876. box-sizing: border-box;
  877. margin-right: 12px;
  878. .picker-span {
  879. margin-right: 6px;
  880. color: rgba(0, 0, 0, 0.65);
  881. }
  882. }
  883. .compute-span {
  884. width: 100%;
  885. height: 1px;
  886. background: rgba(0, 0, 0, 0.06);
  887. margin-bottom: 20px;
  888. }
  889. .compute-center {
  890. display: flex;
  891. align-items: center;
  892. margin-bottom: 12px;
  893. }
  894. //
  895. .dialog-none {
  896. width: 100px;
  897. position: absolute;
  898. right: 0;
  899. .input-dialog {
  900. .input-dialog-top {
  901. color: #c3c7cb;
  902. cursor: pointer;
  903. position: absolute;
  904. top: -45px;
  905. right: 0px;
  906. }
  907. .input-dialog-form {
  908. padding: 20px 24px;
  909. background: rgba(255, 255, 255, 1);
  910. border-radius: 4px;
  911. border: 1px solid rgba(195, 199, 203, 1);
  912. z-index: 99999;
  913. position: absolute;
  914. top: -20px;
  915. right: 0px;
  916. }
  917. .input-dialog-p {
  918. margin-bottom: 8px;
  919. font-size: 14px;
  920. font-family: MicrosoftYaHei;
  921. color: rgba(100, 108, 115, 1);
  922. line-height: 22px;
  923. }
  924. .input-dialog-p2 {
  925. margin-bottom: 16px;
  926. }
  927. }
  928. .input-dialog-foot {
  929. // margin-bottom: 16px;
  930. display: flex;
  931. justify-content: flex-end;
  932. }
  933. }
  934. .compute-tab {
  935. margin-top: 16px;
  936. padding: 0 24px;
  937. }
  938. }
  939. </style>
  940. <style lang="less">
  941. .compute-box {
  942. .el-dialog {
  943. padding: 16px 20px 20px;
  944. overflow: hidden;
  945. .el-dialog__header {
  946. padding: 0;
  947. font-size: 16px;
  948. font-family: PingFangSC-Medium, PingFang SC;
  949. font-weight: 500;
  950. color: rgba(0, 0, 0, 0.85);
  951. line-height: 24px;
  952. padding-bottom: 16px;
  953. }
  954. }
  955. .compute-tab {
  956. .el-dialog__title {
  957. font-size: 16px;
  958. font-family: PingFangSC-Medium, PingFang SC;
  959. font-weight: 500;
  960. color: rgba(0, 0, 0, 0.85);
  961. line-height: 24px;
  962. }
  963. .el-dialog__body {
  964. padding: 0 24px;
  965. }
  966. .el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),
  967. .el-tabs--bottom .el-tabs__item.is-top:nth-child(2),
  968. .el-tabs--top .el-tabs__item.is-bottom:nth-child(2),
  969. .el-tabs--top .el-tabs__item.is-top:nth-child(2) {
  970. padding-left: 16px;
  971. }
  972. .el-tabs--bottom .el-tabs__item.is-bottom:last-child,
  973. .el-tabs--bottom .el-tabs__item.is-top:last-child,
  974. .el-tabs--top .el-tabs__item.is-bottom:last-child,
  975. .el-tabs--top .el-tabs__item.is-top:last-child {
  976. padding-right: 16px;
  977. }
  978. .el-tabs__nav-wrap::after {
  979. height: 0;
  980. }
  981. .el-tabs__item {
  982. padding: 5px 16px;
  983. height: 30px;
  984. line-height: 22px;
  985. font-size: 14px;
  986. font-family: MicrosoftYaHei;
  987. color: rgba(31, 36, 41, 1);
  988. border: 1px solid rgba(195, 199, 203, 1);
  989. }
  990. .el-tabs,
  991. .el-tabs__content {
  992. height: 800px;
  993. }
  994. .el-tabs__active-bar {
  995. background-color: transparent !important;
  996. }
  997. .is-active {
  998. color: #025baa;
  999. border-color: #025baa;
  1000. }
  1001. .compute-table {
  1002. .el-table td,
  1003. .el-table th {
  1004. padding: 8px 0;
  1005. }
  1006. }
  1007. }
  1008. .el-input--suffix .el-input__inner {
  1009. padding-right: 20px;
  1010. }
  1011. .el-dialog__wrapper {
  1012. transition-duration: 0.3s;
  1013. }
  1014. .dialog-fade-enter-active {
  1015. animation: none !important;
  1016. }
  1017. .dialog-fade-leave-active {
  1018. transition-duration: 0.15s !important;
  1019. animation: none !important;
  1020. }
  1021. .dialog-fade-enter-active .el-dialog,
  1022. .dialog-fade-leave-active .el-dialog {
  1023. animation-fill-mode: forwards;
  1024. }
  1025. .dialog-fade-enter-active .el-dialog {
  1026. animation-duration: 0.3s;
  1027. animation-name: anim-open;
  1028. animation-timing-function: cubic-bezier(0.6, 0, 0.4, 1);
  1029. }
  1030. .dialog-fade-leave-active .el-dialog {
  1031. animation-duration: 0.3s;
  1032. animation-name: anim-close;
  1033. }
  1034. @keyframes anim-open {
  1035. 0% {
  1036. opacity: 0;
  1037. transform: scale3d(0, 0, 1);
  1038. }
  1039. 100% {
  1040. opacity: 1;
  1041. transform: scale3d(1, 1, 1);
  1042. }
  1043. }
  1044. @keyframes anim-close {
  1045. 0% {
  1046. opacity: 1;
  1047. }
  1048. 100% {
  1049. opacity: 0;
  1050. transform: scale3d(0.5, 0.5, 1);
  1051. }
  1052. }
  1053. .picker-box {
  1054. .el-input__inner {
  1055. border: none;
  1056. }
  1057. .el-range-editor.el-input__inner {
  1058. padding: 3px 0px;
  1059. }
  1060. .el-icon-date {
  1061. display: none;
  1062. }
  1063. .el-range__close-icon {
  1064. position: absolute;
  1065. right: 0px;
  1066. top: 2px;
  1067. }
  1068. .el-range-editor--mini .el-range-input {
  1069. font-size: 14px;
  1070. color: rgb(31, 36, 41);
  1071. }
  1072. }
  1073. }
  1074. </style>