courtyardHome.vue 57 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871
  1. <template>
  2. <div class="main">
  3. <img class="bg_img" src="@/assets/image/bg.png"/>
  4. <div class="header">
  5. <p class="header_l"></p>
  6. <img class="header_l-position" :src="rectangleLogo"/>
  7. <div class="header_c">实验室安全智慧化管控系统</div>
  8. <div class="header_r1">
  9. <img class="header_r1_l" src="@/assets/image/index_icon3.png"/>
  10. <i class="schoolName">{{deptName?deptName:'****'}}</i>
  11. <img class="header_r1_r" src="@/assets/image/index_icon4.png" @click="openBackManageUrl()"/>
  12. </div>
  13. <p class="position-button-right-bottom-1" @click="topButtonGoPage('video')">视频监控</p>
  14. <p class="position-button-right-bottom-2" @click="topButtonGoPage('alarm')">智能预警</p>
  15. </div>
  16. <div class="left">
  17. <div class="left_t">
  18. <img class="left_t_l" src="@/assets/image/index_icon5.png"/>
  19. <div class="left_t_l1"></div>
  20. <div class="left_t_c">
  21. <li :class="{'checked_li':checkedNum==0}" @click="checkedNumButton(0)">校院通知</li>
  22. <li :class="{'checked_li':checkedNum==1}" @click="checkedNumButton(1)">预警事件</li>
  23. <li :class="{'checked_li':checkedNum==2}" @click="checkedNumButton(2)">工作计划</li>
  24. </div>
  25. <div class="left_t_n">
  26. <el-carousel ref="el-carousel" class="swiper-container" @change="checkedNumChange" :interval="6000"
  27. trigger="click" direction="vertical" indicator-position="none" height="410px">
  28. <el-carousel-item class="swiper-wrapper">
  29. <div class="swiper-slide">
  30. <!--院校通知-->
  31. <div class="left_t_r" v-if="infoList">
  32. <li v-for='(item,index) in infoList' :key="index" @click="openInfoUrl(item,1)">
  33. <div class="left_t_r_t">
  34. <i>{{item.title}}</i>
  35. <i>{{item.company}}</i>
  36. <i>{{parseTime(item.createTime,'{y}-{m}-{d}')}}</i>
  37. <img class="left_t_r_t_r" src="@/assets/image/index_icon8.png"/>
  38. </div>
  39. <div class="left_t_r_b over2">{{item.contentText}}</div>
  40. </li>
  41. <div v-if="infoList.length<=0"
  42. style="position:relative;left: 44%; top:8%;color:#fff;">暂无数据
  43. </div>
  44. </div>
  45. </div>
  46. </el-carousel-item>
  47. <el-carousel-item class="swiper-wrapper">
  48. <div class="swiper-slide">
  49. <!--预警事件通知-->
  50. <div class="left_t_r2" v-if="planList">
  51. <div class="left_t_r2_title">
  52. <p>预警事件通知</p>
  53. <img src="@/assets/image/index_icon8.png" @click="eventUrl()"/>
  54. </div>
  55. <div class="left_t_r2_m">
  56. <i>预警时间</i>
  57. <i>预警事件</i>
  58. <i>实验室</i>
  59. </div>
  60. <div class="left_t_r2_b" v-for='(item,index2) in planList' :key="index2">
  61. <li v-if="index2<7" @click="openInfoUrl(item,2)">
  62. <i class="over">{{parseTime(item.warnTime,'{y}-{m}-{d} {h}:{i}')}}</i>
  63. <i>{{item.warnContent}}</i>
  64. <i>{{item.subName}}</i>
  65. <img src="@/assets/image/index_icon8.png"/>
  66. </li>
  67. </div>
  68. <div v-if="planList.length<=0"
  69. style="position:relative;left: 44%; top:8%;color:#fff;">暂无数据
  70. </div>
  71. </div>
  72. </div>
  73. </el-carousel-item>
  74. <el-carousel-item class="swiper-wrapper">
  75. <div class="swiper-slide">
  76. <!--工作计划-->
  77. <div class="left_t_r3" v-if="workList">
  78. <!--<div class="left_t_r2_t">
  79. <i>{{planTitle}}</i>
  80. </div>-->
  81. <div class="left_t_r2_m">
  82. <i>工作内容</i>
  83. <i>执行单位</i>
  84. <i>执行日期</i>
  85. </div>
  86. <div class="left_t_r2_b" v-for='(item,index2) in workList' :key="index2">
  87. <li v-if="index2<7" @click="openInfoUrl(item,3)">
  88. <i class="over">{{item.title}}</i>
  89. <i>{{item.company}}</i>
  90. <i>{{parseTime(item.createTime,'{y}-{m}-{d}')}}</i>
  91. <img src="@/assets/image/index_icon8.png"/>
  92. </li>
  93. </div>
  94. <div v-if="workList.length<=0" style="position:relative;left: 44%; top:8%;color:#fff;">暂无数据</div>
  95. </div>
  96. </div>
  97. </el-carousel-item>
  98. </el-carousel>
  99. </div>
  100. </div>
  101. <div class="left_b">
  102. <personnelAdmittanceECharts v-if="!warningList[1]"></personnelAdmittanceECharts>
  103. <img class="left_b_t1" v-if="!warningList[1]" src="@/assets/image/index_icon12.png"/>
  104. <!--实验室信息-->
  105. <subSensorComponent v-if="!warningList[0]"></subSensorComponent>
  106. <!--报警预案-->
  107. <div class="warning-max-big-box" :class="warningList[1]?'warning-max-big-box-all':''"
  108. v-if="warningList[0]">
  109. <div class="warning-for-box" v-for='(item,index8) in warningList' :key="index8">
  110. <img src="@/assets/image/index_icon14.png">
  111. <p class="warning-name">{{item.eventName}}</p>
  112. <div>
  113. <span v-for="(minItem,index9) in item.triggerUploadData" :key="index9">{{minItem.deviceName}}:{{minItem.deviceValue}}{{minItem.unit}}</span>
  114. </div>
  115. <p class="warning-button" @click="openRiskPlanUrl(item)">查看详情 >></p>
  116. </div>
  117. </div>
  118. </div>
  119. </div>
  120. <div class="right">
  121. <div class="right_t">
  122. <!--公共小标题-->
  123. <div class="small_title">
  124. <div class="small_title_l">风险预警统计</div>
  125. <div class="small_title_r" @click="right_t_btn">
  126. <i>风险预警总数:{{planResultCount}}</i>
  127. <img class="right_t_btn" src="@/assets/image/index_icon8.png"/>
  128. </div>
  129. </div>
  130. <div class="right_t_b" id="right_t_b"></div>
  131. <img class="left_b_t1" src="@/assets/image/index_icon12.png"/>
  132. </div>
  133. <div class="right_b">
  134. </div>
  135. </div>
  136. <planAlarm ref="planAlarm"></planAlarm>
  137. </div>
  138. </template>
  139. <script>
  140. import {
  141. getLogoInfo,
  142. indexListRelease,
  143. mySub,
  144. onlineSumByBigView,
  145. getUrlConfig,
  146. requestUrl, getTypeCount, getFiedCount
  147. } from '../../api/http'
  148. import {
  149. systemNotifyList,
  150. laboratoryBigViewSelectTriggerInfo,
  151. laboratoryBigViewCollegeEventStatistics,
  152. laboratoryBigViewListCollegeApplyColumn,
  153. examBigViewNewStatistics,
  154. systemWarningNoticeNoMenuList
  155. } from '@/api/index'
  156. import {
  157. laboratoryClassTypeGetList
  158. } from '@/api/index'
  159. import Swiper from 'swiper'
  160. import $ from 'jquery'
  161. import mqtt from 'mqtt/dist/mqtt'
  162. import { getToken, removeToken } from '@/utils/auth'
  163. import { Encrypt, Decrypt } from '@/utils/secret'
  164. import subSensorComponent from '@/components/subSensorComponent.vue'
  165. import planAlarm from '@/components/planAlarm/planAlarm.vue'
  166. import personnelAdmittanceECharts from '@/components/personnelAdmittanceECharts/personnelAdmittanceECharts.vue'
  167. export default {
  168. components: {
  169. subSensorComponent,
  170. planAlarm,
  171. personnelAdmittanceECharts
  172. },
  173. data() {
  174. return {
  175. rectangleLogo: localStorage.getItem('rectangleLogo'),
  176. deptName: null,
  177. deptId: null,
  178. mtopicTwo: 'manage/work' + localStorage.getItem('userId'),
  179. timer: null,//定时器
  180. chartReload3: null,//定时器
  181. chartReload4: null,//定时器
  182. chartReload5: null,//定时器
  183. chartReload6: null,//定时器
  184. dataList: [],
  185. labList: [],//实验室人员
  186. infoList: [],//院校通知
  187. planList: [],//预警事件
  188. planTitle: '',//预警事件
  189. workList: [],//工作计划
  190. workTitle: '',//工作计划
  191. inspecremark: '',//安全检查时间
  192. inspeccheckZs: '',//安全检查隐患排查数
  193. inspeccheckWzg: '',//安全检查历史遗留
  194. inspeccheckYzg: '',//安全检查已整改
  195. labInfoList: [],//实验室信息
  196. controlTitle: '',//分级管控标题
  197. inspectBatchList: [],//安全检查批次列表
  198. //风险预案
  199. warningList: [],
  200. groupName: '',
  201. roomName: '',
  202. buildName: '',
  203. floorName: '',
  204. riskPlanId: '',//风险预案id
  205. subjectId: '',//实验室id
  206. sensorStr: '',//实验室id
  207. planId: '',//安全检查id
  208. checkedNum: 0,
  209. //首页总数
  210. resultCount: '',
  211. listcount: '',
  212. planResultCount: '',
  213. mySwiper: null,
  214. labTypeList: [],
  215. //v3
  216. classifyList: [],
  217. //MQTT请求参数-预案
  218. planOpic: 'lab/risk/plan/change',
  219. planClient: {}
  220. }
  221. },
  222. created() {
  223. this.$set(this, 'deptName', localStorage.getItem('deptName'))
  224. this.$set(this, 'deptId', localStorage.getItem('deptId'))
  225. },
  226. mounted() {
  227. let self = this
  228. self.infoFun()
  229. self.warningPlanFun()
  230. self.workPlanFun()
  231. self.laboratoryBigViewSelectTriggerInfo()
  232. self.laboratoryBigViewCollegeEventStatistics()
  233. this.offPlanMQTT('on')
  234. this.timerPlay()
  235. },
  236. methods: {
  237. //跳转视频/应急页面
  238. topButtonGoPage(type) {
  239. if (type == 'video') {
  240. this.$router.push('/videoSurveillance')
  241. } else if (type == 'alarm') {
  242. this.$router.push('/emergencyManagement')
  243. }
  244. },
  245. // 定时器
  246. timerPlay() {
  247. let self = this
  248. clearInterval(this.timer)
  249. this.timer = setInterval(function() {
  250. self.infoFun()
  251. self.warningPlanFun()
  252. self.workPlanFun()
  253. self.laboratoryBigViewSelectTriggerInfo()
  254. self.laboratoryBigViewCollegeEventStatistics()
  255. }, 50000 * 6)
  256. },
  257. /**V3新--------------start----**/
  258. // 切换轮播
  259. checkedNumButton(type) {
  260. if (type != this.checkedNum) {
  261. this.$set(this, 'checkedNum', type)
  262. this.$set(this.$refs['el-carousel'], 'activeIndex', type)
  263. }
  264. },
  265. checkedNumChange() {
  266. this.$set(this, 'checkedNum', this.$refs['el-carousel'].activeIndex)
  267. },
  268. //跳转页面
  269. tableButton(type, row) {
  270. if (type == 'classifyGradeDetail') {//实验室分类分级
  271. this.$router.push('./classifyGradeDetail')
  272. } else if (type == 'riskDetail') {//危险源统计
  273. this.$router.push('./riskDetail')
  274. } else if (type == 'dangerDetail') {//安全隐患统计
  275. this.$router.push('./dangerDetail')
  276. }
  277. },
  278. /**V3新--------------end----**/
  279. initSwiper() {
  280. let self = this
  281. self.mySwiper = new Swiper('.swiper-container', {
  282. //loop: true, // 循环模式选项
  283. //autoplay:true,
  284. autoplay: {
  285. delay: 12000,
  286. stopOnLastSlide: false,
  287. disableOnInteraction: true
  288. },
  289. direction: 'vertical',
  290. //监听滚动到第几页
  291. on: {
  292. slideChangeTransitionEnd: function() {
  293. self.checkedNum = this.realIndex
  294. }
  295. }
  296. })
  297. },
  298. //通知详情
  299. openInfoUrl(item, type) {
  300. this.$router.push(
  301. {
  302. path: './workInfoDetail',
  303. query: {
  304. item: item,
  305. type: type
  306. }
  307. })
  308. },
  309. //安全检查
  310. openinspectUrl() {
  311. this.$router.push({ path: './inspectDetail' })
  312. },
  313. //预警通知
  314. eventUrl() {
  315. this.$router.push({ path: './eventList' })
  316. },
  317. //进入实验室人员
  318. right_b_btn() {
  319. this.$router.push('./labPersonDetail')
  320. },
  321. //预案执行统计
  322. right_t_btn() {
  323. this.$router.push('./planDetail')
  324. },
  325. //获取报警信息
  326. openRiskPlanUrl(item) {
  327. this.$refs['planAlarm'].initialize(item)
  328. },
  329. //跳转后台管理
  330. openBackManageUrl() {
  331. this.$confirm('确定注销并退出系统吗?', '提示', {
  332. confirmButtonText: '确定',
  333. cancelButtonText: '取消',
  334. type: 'warning'
  335. }).then(() => {
  336. removeToken()
  337. if (localStorage.getItem('entranceJumpType') == 'PC') {
  338. window.location.href = process.env.VUE_APP_OUT_URL
  339. } else {
  340. window.location.href = '#/'
  341. }
  342. }).catch(() => {
  343. })
  344. },
  345. //预案执行统计
  346. laboratoryBigViewCollegeEventStatistics() {
  347. let self = this
  348. laboratoryBigViewCollegeEventStatistics({}).then((res) => {
  349. if (res.code == 200) {
  350. let dataX = []
  351. let dataValue = []
  352. let data = res.data.list
  353. self.planResultCount = res.data.total
  354. for (var i = 0; i < data.length; i++) {
  355. dataX.push(data[i].yearMonth)
  356. dataValue.push(data[i].count)
  357. }
  358. this.planFun(dataX, dataValue)
  359. }
  360. })
  361. },
  362. getAjaxData: function() {
  363. let self = this
  364. //获取logo图片
  365. getLogoInfo({}).then((res) => {
  366. if (res.code == 200) {
  367. $('.header_l').attr('src', requestUrl + res.data.rectangleLogo)
  368. $('.schoolName').html(res.data.schoolName)
  369. localStorage.setItem('logoImg', requestUrl + res.data.rectangleLogo)
  370. }
  371. })
  372. getUrlConfig().then(response => {
  373. console.log('开发配置', response.data)
  374. //判定http或者https
  375. let urlText = window.location.href.split('://')[0] + '://'
  376. let outerNet = window.location.href.indexOf(response.data.ipIdentify) == -1//true外网 false 内网
  377. if (outerNet) {//外网
  378. //文件预览地址
  379. localStorage.setItem('filePreviewUrl', urlText + response.data.fileExtranetUrl)
  380. //摄像头代理访问地址
  381. localStorage.setItem('cameraExtranetAgent', urlText + response.data.cameraExtranetAgent)
  382. //摄像头地址ip段
  383. localStorage.setItem('ipIdentify', response.data.ipIdentify)
  384. //摄像头访问地址
  385. localStorage.setItem('cameraUrl', urlText + response.data.cameraExtranetUrl)
  386. //MQTT地址
  387. localStorage.setItem('mqttUrl', 'wss://' + Decrypt(response.data.mqttExtranetUrl))
  388. //MQTT账号
  389. localStorage.setItem('mqttUser', Decrypt(response.data.mqttExtranetUser))
  390. //MQTT密码
  391. localStorage.setItem('mqttPassword', Decrypt(response.data.mqttExtranetPassword))
  392. //可视化大屏访问地址
  393. localStorage.setItem('screenUrl', urlText + response.data.screenExtranetUrl)
  394. //后台访问地址
  395. localStorage.setItem('pcVisitUrl', urlText + response.data.pcExtranetUrl)
  396. } else {
  397. //文件预览地址
  398. localStorage.setItem('filePreviewUrl', urlText + response.data.fileIntranetUrl)
  399. //摄像头代理访问地址
  400. localStorage.setItem('cameraExtranetAgent', urlText + response.data.cameraIntranetAgent)
  401. //摄像头地址ip段
  402. localStorage.setItem('ipIdentify', response.data.ipIdentify)
  403. //摄像头访问地址
  404. localStorage.setItem('cameraUrl', urlText + response.data.cameraIntranetUrl)
  405. //MQTT地址
  406. localStorage.setItem('mqttUrl', 'ws://' + Decrypt(response.data.mqttIntranetUrl))
  407. //MQTT账号
  408. localStorage.setItem('mqttUser', Decrypt(response.data.mqttIntranetUser))
  409. //MQTT密码
  410. localStorage.setItem('mqttPassword', Decrypt(response.data.mqttIntranetPassword))
  411. //可视化大屏访问地址
  412. localStorage.setItem('screenUrl', urlText + response.data.screenIntranetUrl)
  413. //后台访问地址
  414. localStorage.setItem('pcVisitUrl', urlText + response.data.pcIntranetUrl)
  415. }
  416. })
  417. //实验室人员
  418. onlineSumByBigView({ pageNumStr: 1, pageSizeStr: 50 }).then((res) => {
  419. if (res.code == 200) {
  420. let data = res.data.list
  421. self.labResultCount = res.data.resultCount
  422. self.labList = data
  423. }
  424. })
  425. //实验室分类
  426. getTypeCount({}).then((res) => {
  427. if (res.code == 200) {
  428. let data = res.data
  429. this.labTypeList = data
  430. }
  431. })
  432. //实验室分级
  433. getFiedCount({}).then((res) => {
  434. if (res.code == 200) {
  435. let self = this
  436. let data = res.data
  437. let dataX = []
  438. data.forEach(function(item) {
  439. dataX.push({ name: item.classifiedName, value: item.totalNum })
  440. })
  441. self.classifyFun(dataX)
  442. }
  443. })
  444. //安全检查批次
  445. indexListRelease({ pageNum: 1, pageSize: 10 }).then((res) => {
  446. if (res.code == 200) {
  447. let data = res.rows
  448. let list = []
  449. let num = 0
  450. if (data.length < 10) {
  451. for (var i = 0; i < 10; i++) {
  452. if (num == data.length) {
  453. num = 0
  454. }
  455. list.push(data[num])
  456. num++
  457. }
  458. self.inspectBatchList = list
  459. } else {
  460. self.inspectBatchList = data
  461. }
  462. }
  463. })
  464. //实验室信息
  465. mySub({}).then((res) => {
  466. if (res.code == 200) {
  467. let data = res.data
  468. self.labInfoList = []
  469. data.forEach(function(item) {
  470. if (item.sensorFunctionStatusList.length > 0) {
  471. self.labInfoList.push(item)
  472. }
  473. })
  474. /* self.controlList=data.list
  475. self.controlTitle=data.title*/
  476. }
  477. })
  478. },
  479. //校院通知
  480. infoFun: function() {
  481. let self = this
  482. systemNotifyList({ pageNum: 1, pageSize: 4, notifyType: 2 }).then((res) => {
  483. if (res.code == 200) {
  484. res.data.forEach((item) => {
  485. item.contentText = item.content.replace(/<\/?.+?\/?>/g, '')
  486. })
  487. this.$set(self, 'infoList', res.data)
  488. }
  489. })
  490. },
  491. //预警事件
  492. warningPlanFun: function() {
  493. let self = this
  494. systemWarningNoticeNoMenuList({ page: 1, pageSize: 6 }).then((res) => {
  495. if (res.code == 200) {
  496. this.$set(self, 'planList', res.data.records)
  497. }
  498. })
  499. },
  500. //工作计划
  501. workPlanFun: function() {
  502. let self = this
  503. systemNotifyList({ pageNum: 1, pageSize: 4, notifyType: 3 }).then((res) => {
  504. if (res.code == 200) {
  505. res.data.forEach((item) => {
  506. item.contentText = item.content.replace(/<\/?.+?\/?>/g, '')
  507. })
  508. this.$set(self, 'workList', res.data)
  509. }
  510. })
  511. },
  512. /*预案执行统计*/
  513. planFun: function(dataX, dataValue) {
  514. var paperDataURI = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAACECAYAAACUGttzAAAAAXNSR0IArs4c6QAABg9JREFUaEO1mktvHEUUhc/tdgLJMpuxY8dJTByyhR2IJVt2rPkZbJEgJCCeAgQCCQQCIRAg3iAEAoEgAsczjp3YIeRlO2BFkRC2FM/Y8+iLbnW1M7G7qvpW4tnYnsfnM6dO3bpV3YTND+ZkdLp1P5AcB+hegGnLe7Y8QUCSAgMJaHUFdO1i++YPMaej0937GL0nwHiACANhKHIoJUBzGenSLKi50rkBnuQdIzvXH0yYH+eM7iFCWh1KoJWrSJbmQGvX5R+1DHjkBO9KdrcfAvNjTDgiXywMJSBNAc6QXLuE5Oo58ztI1FOLRk6s7MHuXQ8T86MgHgPD4Wnf00TAQArqtJD+PQdaXgILNBkAyWtAi0anVo8x6BGAhl0qCSwqAPMzAScpY/U/Tv+ZI2ouU/4a2fcYSovuPnvlXzD2uKE3XmH5+EAK7nWzdn16jXudOylNEzNwNz9adGRuYQ3AHWFP7TvE1yzjtYlJRpISJUmZdaJ4sUmMXZXBSQIwY22ikX97+XvrIwKcJkDGWJ9omKnjBB+ei1PctmC4FMeCg1aowBILsWKzx/J8/4PQosOzcVaEFZ9ebBKUqUCFVByOAYsVJwNxG59RKrYety3YmQo12E6Q9mQjH66yuMngjU8rFRsQQxSbMNxWcCWPTy02oUmF9Xi9f/DKcjyuBVfxWOrx+JRScZ/HZq1x1YooMDPWJRW+6naooVRc5nFZPVaD+zz21uPK4GLkq3gsE+RQXWmFVez1WMB3xYJ9RciAJ5WK7ZontYKJytc8Az6pBBeDV58ycSvpKfKGJRo8acGuCTI2caUJsLqv6DSm3GVTFOdgxdKUJuCM0bUzzzmlx/640oS2EwKjEwT/rlS8MXiBWnFwW8EaK6zHnUa+5jl7t4MnIq0QsK8ex4LX63XTxZPMxLKyeeA3ZSqKvqIeGLwDvyqtsLXCeOyzYr8SbL56xmgXYEryvc3mPYgBa1JR5HgqkIr9vyjBEjdmdE418g2hqwjt/1npsVUsYGfvZjaQSnDhcXDwDFjpsVjRE8W+Qj/6kxJsc9ydDlnxY5zHQfA+JViKjin0IcUGfCseu+K274ftskILtlO6W6TCpXjk+wpW2DMQMyFsKnohjyuB+wuMnXm96Xp+ouJU/F0Fxf1gWyt6M3mhN+CyPciIFmwVm7j56nFVcCGqyHFvJgAe/lYfN6kVmVjh83j4mziw8dgL/loPloOQrs8K6Y/3fqUDG4+lbIY81oIlXsbj04GyufdLneI8t4zemRD4i0iwKJYmaOvxo+S7RUOf68CFx8YK19IUAy6syEKDN/SZTvEG+IzNcZkVsvwPfaoF56fc2exkPkGc4E+0+zw5us/Q8yk2HqvB+WGTF2ysUIDNiXcxQWZtjl1xG/xYa0U+QTIB+zqhwY8iwXOBmWfAyr7CKPaBZfAGP4wAw4K9VnwQacXZkMexYLEiqDjWY1d1kxzX3tdZYXIc8pgLcIziPz1WGPB7OsUb1U3A+S69fMsbDZbB83r8bqRiiVsQHOPxuUDcau9EKhawb2caDS4Gz9Uf196OVOyLm5kgAt4Wj9+KAMvM+yvkcQxY6rGAfUWoFgsOxu3NCCsqKX4jIhWy/DussMdDLarFgKWjP9+wF9BvLkK3DA4P3usRVojH50OpeC0CLDkWsLcex4CN4kAbWwuATb9m14iNK47M4POBNrb2qt+Kzftvc78KZ+ALIfArC7rDf3utKbsQGrwYsHh88XaDzapswfkS4lilX1ZaIeBKil9Sgu3ONGzFtoFfjFBceOwt9DHgwmNvw6IFb06Fa9dUe0FpRX8qvIqfV4KLVFwKTZBtAz+3oG9YJBUexWQ6oWeVVtjB48shKwQc02L1gUvu8mrR4DNxinshxbFgn8fmurQBa6wwZZKRzYc2kE/HWbE9YKkVPsVm9/+UUnEx8wTs6iuiwEWtCHp8fF6/Shsr7E0FZWueUawFF2XzcuA2iMFjSsUFuFDs2kurwUWOF0KKn4xUfKvgLQVG7tZFhmxBZp7nbLN29HKbQDvK2pnS5wqPfYoZbaodnV8mYKcavDhlL3SXtljX/wdq6JsQCOkG3QAAAABJRU5ErkJggg=='
  515. var planOption = {
  516. /*内边距*/
  517. grid: {
  518. top: '14%',
  519. left: '2%',
  520. right: '2%',
  521. bottom: '5%',
  522. containLabel: true
  523. },
  524. xAxis: {
  525. data: dataX,
  526. //坐标轴
  527. axisLine: {
  528. lineStyle: {
  529. 'color': '#486CC2',
  530. width: 2
  531. }
  532. },
  533. axisTick: {
  534. show: false
  535. },
  536. //坐标值标注
  537. axisLabel: {
  538. show: true,
  539. textStyle: {
  540. color: '#fff',
  541. fontSize: 14
  542. }
  543. }
  544. },
  545. yAxis: [
  546. {
  547. axisTick: {
  548. show: false
  549. },
  550. //坐标轴
  551. axisLine: {
  552. lineStyle: {
  553. 'color': '#486CC2',
  554. width: 2
  555. }
  556. },
  557. //坐标值标注
  558. axisLabel: {
  559. show: true,
  560. textStyle: {
  561. color: '#fff',
  562. fontSize: 16
  563. }
  564. },
  565. //分格线
  566. splitLine: {
  567. show: false,
  568. lineStyle: {
  569. color: '#4784e8'
  570. }
  571. }
  572. }
  573. ],
  574. series: [
  575. {
  576. label: {
  577. normal: {
  578. show: true,
  579. position: 'top',
  580. textStyle: {
  581. color: '#fff'
  582. }
  583. }
  584. },
  585. data: dataValue,
  586. type: 'pictorialBar',
  587. barMaxWidth: '20',
  588. symbolPosition: 'end',
  589. // symbol: "diamond",
  590. symbol: 'image://' + paperDataURI,
  591. // symbolOffset: [0, "-50%"],
  592. //symbolSize: [30, 22],
  593. zlevel: 2
  594. }
  595. ],
  596. tooltip: {
  597. trigger: 'axis',
  598. show: false
  599. }
  600. }
  601. var right_t_b = this.$echarts.init(document.getElementById('right_t_b'))
  602. right_t_b.setOption(planOption)
  603. //定时动画
  604. clearInterval(this.chartReload3)
  605. this.chartReload3 = setInterval(function() {
  606. right_t_b.clear()
  607. right_t_b.setOption(planOption)
  608. }, 1000 * 4)
  609. },
  610. //预案-MQTT连接
  611. offPlanMQTT(type) {
  612. let self = this
  613. if (self.planClient.unsubscribe) {
  614. self.planClient.unsubscribe(self.planOpic, error => {
  615. if (error) {
  616. // console.log('mqtt关闭连接错误:', error)
  617. }
  618. })
  619. self.planClient.end()
  620. this.$set(this, 'planClient', {})
  621. }
  622. //判断传入参数如果存在 发起一次新的连接
  623. if (type) {
  624. this.planMQTT()
  625. }
  626. },
  627. //预案-MQTT订阅
  628. planMQTT() {
  629. let self = this
  630. this.planClient = mqtt.connect(localStorage.getItem('mqttUrl'), {
  631. username: localStorage.getItem('mqttUser'),
  632. password: localStorage.getItem('mqttPassword')
  633. })
  634. this.planClient.on('connect', e => {
  635. this.planClient.subscribe(self.planOpic, (err) => {
  636. if (!err) {
  637. // console.log("预案-订阅成功:" + self.planOpic);
  638. } else {
  639. // console.log("预案-连接错误:" + err);
  640. }
  641. })
  642. })
  643. this.planClient.on('message', (topic, message) => {
  644. if (message) {
  645. console.log('预案-message', message)
  646. //获取预案数据
  647. this.laboratoryBigViewSelectTriggerInfo()
  648. }
  649. })
  650. },
  651. //获取报警信息
  652. laboratoryBigViewSelectTriggerInfo: function() {
  653. let self = this
  654. laboratoryBigViewSelectTriggerInfo().then((res) => {
  655. if (res.code == 200) {
  656. for (let i = 0; i < res.data.length; i++) {
  657. res.data[i].triggerUploadData = JSON.parse(res.data[i].triggerUploadData)
  658. }
  659. this.$set(this, 'warningList', res.data)
  660. }
  661. })
  662. }
  663. },
  664. beforeDestroy() {
  665. let self = this
  666. clearInterval(this.timer)
  667. self.offPlanMQTT()
  668. }
  669. }
  670. </script>
  671. <style lang="scss" scoped>
  672. * {
  673. padding: 0;
  674. margin: 0;
  675. box-sizing: border-box;
  676. }
  677. .over2 {
  678. overflow: hidden;
  679. display: -webkit-box;
  680. text-overflow: ellipsis;
  681. -webkit-line-clamp: 2;
  682. -webkit-box-orient: vertical;
  683. }
  684. .main {
  685. width: 1920px;
  686. height: 1080px;
  687. /* background: url("../img/index_bg.png") no-repeat;
  688. background-size: 100% 100%;*/
  689. position: relative;
  690. left: 0;
  691. top: 0;
  692. z-index: 50;
  693. .bg_img {
  694. width: 1920px;
  695. height: 1080px;
  696. position: absolute;
  697. left: 0;
  698. top: 0;
  699. z-index: 50;
  700. }
  701. /*公共小标题*/
  702. .small_title {
  703. width: 100%;
  704. display: flex;
  705. justify-content: space-between;
  706. .small_title_l {
  707. font-size: 18px;
  708. font-family: Source Han Sans CN;
  709. font-weight: bold;
  710. color: #1ED0F8;
  711. line-height: 18px;
  712. }
  713. .small_title_r {
  714. width: 280px;
  715. text-align: right;
  716. display: flex;
  717. justify-content: flex-end;
  718. align-items: center;
  719. > i {
  720. // width: 200px;
  721. display: inline-block;
  722. font-size: 14px;
  723. font-family: Source Han Sans CN;
  724. font-weight: 400;
  725. color: #FFFFFF;
  726. line-height: 14px;
  727. text-align: right;
  728. margin-right: 12px;
  729. }
  730. > img {
  731. width: 12px;
  732. height: 12px;
  733. cursor: pointer;
  734. position: relative;
  735. top: 0;
  736. }
  737. }
  738. .small_title_r2 {
  739. //width: 140px;
  740. text-align: right;
  741. display: flex;
  742. justify-content: flex-end;
  743. align-items: center;
  744. > i {
  745. width: 100px;
  746. display: inline-block;
  747. font-size: 14px;
  748. font-family: Source Han Sans CN;
  749. font-weight: 400;
  750. color: #FFFFFF;
  751. line-height: 14px;
  752. text-align: center;
  753. }
  754. > img {
  755. width: 12px;
  756. height: 12px;
  757. cursor: pointer;
  758. }
  759. }
  760. }
  761. .header {
  762. width: 100%;
  763. position: absolute;
  764. left: 0;
  765. top: 0;
  766. z-index: 50;
  767. display: flex;
  768. justify-content: flex-start;
  769. .position-img-button-left-box {
  770. cursor: pointer;
  771. position: absolute;
  772. top: 4px;
  773. left: 410px;
  774. display: flex;
  775. width: 190px;
  776. height: 24px;
  777. img {
  778. width: 24px;
  779. height: 18px;
  780. display: inline-block;
  781. margin: 4px 0;
  782. }
  783. p {
  784. color: #24D1F9;
  785. font-size: 16px;
  786. line-height: 24px;
  787. margin-left: 14px;
  788. font-family: Source Han Sans CN;
  789. font-weight: 400;
  790. }
  791. }
  792. .position-img-button-right-box {
  793. cursor: pointer;
  794. position: absolute;
  795. top: 4px;
  796. right: 385px;
  797. display: flex;
  798. width: 190px;
  799. height: 24px;
  800. img {
  801. width: 24px;
  802. height: 24px;
  803. display: inline-block;
  804. }
  805. p {
  806. color: #24D1F9;
  807. font-size: 16px;
  808. line-height: 24px;
  809. margin-left: 14px;
  810. font-family: Source Han Sans CN;
  811. font-weight: 400;
  812. }
  813. }
  814. .header_l {
  815. width: 182px;
  816. height: 44px;
  817. margin: 10px 0 0 40px;
  818. }
  819. .header_l-position {
  820. z-index: 10;
  821. position: absolute;
  822. top: 0;
  823. left: 30px;
  824. width: 250px;
  825. height: 55px;
  826. }
  827. .header_c {
  828. width: 1180px;
  829. height: 152px;
  830. margin-left: 136px;
  831. background: url("~@/assets/image/index_icon2.png") no-repeat;
  832. background-size: 100% 100%;
  833. font-size: 30px;
  834. font-family: Microsoft YaHei;
  835. font-weight: bold;
  836. color: #FFFFFF;
  837. line-height: 30px;
  838. text-align: center;
  839. padding-top: 26px;
  840. }
  841. .header_r1 {
  842. margin-left: 116px;
  843. height: 64px;
  844. display: flex;
  845. justify-content: flex-start;
  846. cursor: pointer;
  847. align-items: center;
  848. .header_r1_l {
  849. width: 24px;
  850. height: 24px;
  851. }
  852. > i {
  853. font-size: 18px;
  854. font-family: Source Han Sans CN;
  855. font-weight: 400;
  856. color: #FFFFFF;
  857. line-height: 18px;
  858. margin-left: 14px;
  859. display: inline-block;
  860. width: 154px;
  861. }
  862. .header_r1_r {
  863. width: 24px;
  864. height: 24px;
  865. }
  866. }
  867. .position-button-right-bottom-1{
  868. position:absolute;
  869. bottom:20px;
  870. right:350px;
  871. color:#fff;
  872. background-color:#013147;
  873. border:2px solid #1d94b2;
  874. border-radius:4px;
  875. font-size:18px;
  876. height:50px;
  877. line-height:44px;
  878. width:120px;
  879. text-align: center;
  880. cursor: pointer;
  881. }
  882. .position-button-right-bottom-2{
  883. position:absolute;
  884. bottom:20px;
  885. right:150px;
  886. color:#fff;
  887. background-color:#013147;
  888. border:2px solid #1d94b2;
  889. border-radius:4px;
  890. font-size:18px;
  891. height:50px;
  892. line-height:44px;
  893. width:120px;
  894. text-align: center;
  895. cursor: pointer;
  896. }
  897. }
  898. .left {
  899. position: absolute;
  900. left: 52px;
  901. top: 66px;
  902. z-index: 50;
  903. .left_t {
  904. display: flex;
  905. justify-content: flex-start;
  906. .left_t_l {
  907. width: 18px;
  908. height: 166px;
  909. margin-top: 40px;
  910. }
  911. .left_t_l1 {
  912. width: 4px;
  913. height: 446px;
  914. background: #004C95;
  915. margin-left: 4px;
  916. }
  917. .left_t_c {
  918. margin-top: 145px;
  919. > li {
  920. width: 308px;
  921. height: 74px;
  922. background: url("~@/assets/image/index_icon6.png") no-repeat;
  923. background-size: 100% 100%;
  924. font-size: 34px;
  925. font-family: Source Han Sans CN;
  926. font-weight: 400;
  927. line-height: 80px;
  928. color: #FFFFFF;
  929. padding-left: 120px;
  930. margin-bottom: 40px;
  931. cursor: pointer;
  932. }
  933. > li:nth-of-type(4) {
  934. margin-bottom: 0;
  935. }
  936. .checked_li {
  937. background: url("~@/assets/image/index_icon7.png") no-repeat;
  938. background-size: 100% 100%;
  939. }
  940. .unchecked {
  941. background: url("~@/assets/image/index_icon6.png") no-repeat;
  942. background-size: 100% 100%;
  943. }
  944. }
  945. .left_t_n {
  946. overflow: hidden;
  947. width: 672px;
  948. height: 406px;
  949. margin-left: 36px;
  950. margin-top: 82px;
  951. /*校院通知*/
  952. .left_t_r {
  953. width: 672px;
  954. height: 406px;
  955. background: url("~@/assets/image/index_icon9.png") no-repeat;
  956. background-size: 100% 100%;
  957. padding: 12px 28px 0;
  958. box-sizing: border-box;
  959. > li {
  960. width: 100%;
  961. height: 90px;
  962. border-bottom: 1px solid #2098B7;
  963. padding-top: 18px;
  964. .left_t_r_t {
  965. height: 16px;
  966. display: flex;
  967. justify-content: flex-start;
  968. align-items: center;
  969. > i {
  970. display: inline-block;
  971. font-size: 16px;
  972. font-family: Source Han Sans CN;
  973. font-weight: 400;
  974. color: #FFFFFF;
  975. line-height: 16px;
  976. }
  977. > i:nth-of-type(1) {
  978. width: 242px;
  979. white-space: nowrap;
  980. overflow: hidden;
  981. text-overflow: ellipsis;
  982. margin-right: 20px;
  983. }
  984. > i:nth-of-type(2) {
  985. width: 208px;
  986. }
  987. > i:nth-of-type(3) {
  988. width: 128px;
  989. }
  990. > img {
  991. width: 12px;
  992. height: 12px;
  993. cursor: pointer;
  994. }
  995. }
  996. .left_t_r_b {
  997. margin-top: 12px;
  998. font-size: 14px;
  999. font-family: Source Han Sans CN;
  1000. font-weight: 400;
  1001. color: #FFFFFF;
  1002. line-height: 18px;
  1003. }
  1004. }
  1005. }
  1006. /*预警通知*/
  1007. .left_t_r2 {
  1008. width: 672px;
  1009. height: 406px;
  1010. background: url("~@/assets/image/index_icon9.png") no-repeat;
  1011. background-size: 100% 100%;
  1012. padding: 10px 16px 0;
  1013. box-sizing: border-box;
  1014. .left_t_r2_t {
  1015. width: 100%;
  1016. height: 50px;
  1017. display: flex;
  1018. justify-content: flex-start;
  1019. align-items: center;
  1020. > i {
  1021. width: 624px;
  1022. display: inline-block;
  1023. font-size: 18px;
  1024. font-family: Source Han Sans CN;
  1025. font-weight: 400;
  1026. color: #FFFFFF;
  1027. line-height: 50px;
  1028. text-align: center;
  1029. }
  1030. > img {
  1031. width: 12px;
  1032. height: 12px;
  1033. cursor: pointer;
  1034. }
  1035. }
  1036. .left_t_r2_title {
  1037. display: flex;
  1038. p {
  1039. flex: 1;
  1040. text-align: center;
  1041. font-size: 16px;
  1042. line-height: 18px;
  1043. color: #fff;
  1044. margin: 26px 0;
  1045. font-family: Source Han Sans CN;
  1046. font-weight: 400;
  1047. }
  1048. img {
  1049. width: 12px;
  1050. height: 12px;
  1051. cursor: pointer;
  1052. margin: 28px 10px;
  1053. }
  1054. }
  1055. .left_t_r2_m {
  1056. background: rgba(15, 96, 124, 0.2);
  1057. height: 50px;
  1058. width: 100%;
  1059. display: flex;
  1060. justify-content: flex-start;
  1061. > i {
  1062. display: inline-block;
  1063. font-size: 16px;
  1064. font-family: Source Han Sans CN;
  1065. font-weight: 400;
  1066. color: #FFFFFF;
  1067. line-height: 50px;
  1068. white-space: nowrap;
  1069. overflow: hidden;
  1070. text-overflow: ellipsis;
  1071. }
  1072. > i:nth-of-type(1) {
  1073. width: 146px;
  1074. margin-left: 22px;
  1075. margin-right: 20px;
  1076. }
  1077. > i:nth-of-type(2) {
  1078. width: 234px;
  1079. }
  1080. > i:nth-of-type(3) {
  1081. width: 179px;
  1082. }
  1083. }
  1084. .left_t_r2_b {
  1085. > li {
  1086. cursor: pointer;
  1087. height: 40px;
  1088. width: 100%;
  1089. display: flex;
  1090. justify-content: flex-start;
  1091. align-items: center;
  1092. > i {
  1093. display: inline-block;
  1094. font-size: 16px;
  1095. font-family: Source Han Sans CN;
  1096. font-weight: 400;
  1097. color: #FFFFFF;
  1098. line-height: 40px;
  1099. white-space: nowrap;
  1100. overflow: hidden;
  1101. text-overflow: ellipsis;
  1102. }
  1103. > i:nth-of-type(1) {
  1104. width: 146px;
  1105. margin-left: 22px;
  1106. margin-right: 10px;
  1107. }
  1108. > i:nth-of-type(2) {
  1109. width: 240px;
  1110. margin-right: 10px;
  1111. }
  1112. > i:nth-of-type(3) {
  1113. // width: 146px;
  1114. width: 179px;
  1115. }
  1116. > img {
  1117. width: 12px;
  1118. height: 12px;
  1119. margin-left: 10px;
  1120. }
  1121. }
  1122. > li:nth-of-type(even) {
  1123. background: rgba(41, 124, 158, 0.2);
  1124. }
  1125. }
  1126. }
  1127. /*安全检查*/
  1128. .left_t_r3 {
  1129. width: 672px;
  1130. height: 406px;
  1131. background: url("~@/assets/image/index_icon9.png") no-repeat;
  1132. background-size: 100% 100%;
  1133. padding: 10px 16px 0;
  1134. box-sizing: border-box;
  1135. .left_t_r2_t {
  1136. width: 100%;
  1137. display: flex;
  1138. justify-content: flex-start;
  1139. align-items: center;
  1140. margin-top: 26px;
  1141. > i {
  1142. width: 624px;
  1143. display: inline-block;
  1144. font-size: 18px;
  1145. font-family: Source Han Sans CN;
  1146. font-weight: 400;
  1147. color: #FFFFFF;
  1148. line-height: 18px;
  1149. text-align: center;
  1150. }
  1151. > img {
  1152. width: 12px;
  1153. height: 12px;
  1154. cursor: pointer;
  1155. }
  1156. }
  1157. .left_t_r2_t2 {
  1158. width: 100%;
  1159. height: 56px;
  1160. display: flex;
  1161. justify-content: flex-start;
  1162. align-items: center;
  1163. > i {
  1164. width: 624px;
  1165. display: inline-block;
  1166. font-size: 16px;
  1167. font-family: Source Han Sans CN;
  1168. font-weight: 400;
  1169. color: #FFFFFF;
  1170. line-height: 56px;
  1171. text-align: center;
  1172. }
  1173. }
  1174. .left_t_r2_m {
  1175. background: rgba(15, 96, 124, 0.2);
  1176. height: 50px;
  1177. width: 100%;
  1178. display: flex;
  1179. justify-content: flex-start;
  1180. > i {
  1181. display: inline-block;
  1182. font-size: 16px;
  1183. font-family: Source Han Sans CN;
  1184. font-weight: 400;
  1185. color: #FFFFFF;
  1186. line-height: 50px;
  1187. white-space: nowrap;
  1188. overflow: hidden;
  1189. text-overflow: ellipsis;
  1190. }
  1191. > i:nth-of-type(1) {
  1192. width: 260px;
  1193. margin-left: 22px;
  1194. }
  1195. > i:nth-of-type(2) {
  1196. width: 140px;
  1197. }
  1198. > i:nth-of-type(3) {
  1199. width: 180px;
  1200. }
  1201. > i:nth-of-type(4) {
  1202. width: 182px;
  1203. }
  1204. > i:nth-of-type(5) {
  1205. width: 62px;
  1206. }
  1207. }
  1208. .left_t_r2_b {
  1209. > li {
  1210. height: 40px;
  1211. width: 100%;
  1212. display: flex;
  1213. justify-content: flex-start;
  1214. > i {
  1215. display: inline-block;
  1216. font-size: 14px;
  1217. font-family: Source Han Sans CN;
  1218. font-weight: 400;
  1219. color: #FFFFFF;
  1220. line-height: 40px;
  1221. white-space: nowrap;
  1222. overflow: hidden;
  1223. text-overflow: ellipsis;
  1224. }
  1225. > i:nth-of-type(1) {
  1226. width: 260px;
  1227. margin-left: 22px;
  1228. }
  1229. > i:nth-of-type(2) {
  1230. width: 140px;
  1231. }
  1232. > i:nth-of-type(3) {
  1233. width: 180px;
  1234. }
  1235. > i:nth-of-type(4) {
  1236. width: 182px;
  1237. }
  1238. > i:nth-of-type(5) {
  1239. width: 62px;
  1240. }
  1241. > img {
  1242. width: 12px;
  1243. height: 12px;
  1244. margin-top:13px;
  1245. cursor: pointer;
  1246. }
  1247. }
  1248. > li:nth-of-type(even) {
  1249. background: rgba(41, 124, 158, 0.2);
  1250. }
  1251. }
  1252. }
  1253. /*分级管控*/
  1254. .left_t_r4 {
  1255. width: 672px;
  1256. height: 406px;
  1257. background: url("~@/assets/image/index_icon9.png") no-repeat;
  1258. background-size: 100% 100%;
  1259. padding: 10px 16px 0;
  1260. box-sizing: border-box;
  1261. .left_t_r2_t {
  1262. width: 100%;
  1263. height: 50px;
  1264. display: flex;
  1265. justify-content: flex-start;
  1266. align-items: center;
  1267. > i {
  1268. width: 624px;
  1269. display: inline-block;
  1270. font-size: 18px;
  1271. font-family: Source Han Sans CN;
  1272. font-weight: 400;
  1273. color: #FFFFFF;
  1274. line-height: 50px;
  1275. text-align: center;
  1276. }
  1277. > img {
  1278. width: 12px;
  1279. height: 12px;
  1280. cursor: pointer;
  1281. }
  1282. }
  1283. .left_t_r2_m {
  1284. background: rgba(15, 96, 124, 0.2);
  1285. height: 50px;
  1286. width: 100%;
  1287. display: flex;
  1288. justify-content: flex-start;
  1289. > i {
  1290. display: inline-block;
  1291. font-size: 16px;
  1292. font-family: Source Han Sans CN;
  1293. font-weight: 400;
  1294. color: #FFFFFF;
  1295. line-height: 50px;
  1296. white-space: nowrap;
  1297. overflow: hidden;
  1298. text-overflow: ellipsis;
  1299. }
  1300. > i:nth-child(1) {
  1301. width: 130px;
  1302. margin-left: 22px;
  1303. }
  1304. > i:nth-child(2) {
  1305. width: 120px;
  1306. }
  1307. > i:nth-child(3) {
  1308. width: 140px;
  1309. }
  1310. > i:nth-child(4) {
  1311. width: 140px;
  1312. }
  1313. > i:nth-child(5) {
  1314. width: 80px;
  1315. }
  1316. }
  1317. .left_t_r2_b {
  1318. > li {
  1319. height: 40px;
  1320. width: 100%;
  1321. display: flex;
  1322. justify-content: flex-start;
  1323. > i {
  1324. display: inline-block;
  1325. font-size: 16px;
  1326. font-family: Source Han Sans CN;
  1327. font-weight: 400;
  1328. color: #FFFFFF;
  1329. line-height: 40px;
  1330. white-space: nowrap;
  1331. overflow: hidden;
  1332. text-overflow: ellipsis;
  1333. }
  1334. > i:nth-child(1) {
  1335. width: 130px;
  1336. margin-left: 22px;
  1337. }
  1338. > i:nth-child(2) {
  1339. width: 120px;
  1340. }
  1341. > i:nth-child(3) {
  1342. width: 140px;
  1343. }
  1344. > i:nth-child(4) {
  1345. width: 140px;
  1346. }
  1347. > i:nth-child(5) {
  1348. width: 80px;
  1349. }
  1350. }
  1351. .controlColorOne {
  1352. color: #FF4448;
  1353. }
  1354. .controlColorTow {
  1355. color: #F98556;
  1356. }
  1357. .controlColorThree {
  1358. color: #46AF2D;
  1359. }
  1360. .controlColorFour {
  1361. color: #5688F9;
  1362. }
  1363. > li:nth-of-type(even) {
  1364. background: rgba(41, 124, 158, 0.2);
  1365. }
  1366. }
  1367. }
  1368. }
  1369. }
  1370. .left_b {
  1371. width: 1027px;
  1372. height: 452px;
  1373. background: url("~@/assets/image/index_icon10.png") no-repeat;
  1374. background-size: 100% 100%;
  1375. margin-top: 20px;
  1376. margin-left: 16px;
  1377. overflow: hidden;
  1378. .left_b_t {
  1379. display: flex;
  1380. justify-content: flex-start;
  1381. .left_b_t_l {
  1382. width: 482px;
  1383. padding-top: 28px;
  1384. margin-left: 14px;
  1385. .left_b_t_l_b {
  1386. width: 482px;
  1387. height: 268px;
  1388. }
  1389. }
  1390. .left_b_t_r {
  1391. width: 468px;
  1392. padding-top: 28px;
  1393. margin-left: 34px;
  1394. .left_b_t_r_b {
  1395. width: 468px;
  1396. height: 268px;
  1397. }
  1398. }
  1399. }
  1400. .left_b_t1 {
  1401. width: 952px;
  1402. height: 2px;
  1403. margin-left: 48px;
  1404. }
  1405. .left_b_b {
  1406. width: 100%;
  1407. height: 112px;
  1408. overflow: hidden;
  1409. background: 0;
  1410. > ul {
  1411. /*height: 2000px;*/
  1412. animation-name: move;
  1413. //animation-duration: 6s;
  1414. /* 设置无限循环 */
  1415. animation-timing-function: linear; // 动画速度曲线,匀速
  1416. animation-iteration-count: infinite; // 动画循环无限次播放
  1417. > li {
  1418. width: 966px;
  1419. height: auto;
  1420. margin: 0 30px;
  1421. background: rgba(30, 118, 142, 0.2);
  1422. margin-bottom: 12px;
  1423. padding: 12px 0;
  1424. box-sizing: border-box;
  1425. .left_b_b_t {
  1426. display: flex;
  1427. justify-content: flex-start;
  1428. > i {
  1429. display: inline-block;
  1430. font-size: 16px;
  1431. font-family: Source Han Sans CN;
  1432. font-weight: bold;
  1433. color: #00FAFF;
  1434. line-height: 16px;
  1435. }
  1436. > i:nth-of-type(1) {
  1437. margin-right: 42px;
  1438. margin-left: 12px;
  1439. }
  1440. > i:nth-of-type(2) {
  1441. font-weight: bold;
  1442. margin-right: 8px;
  1443. }
  1444. > i:nth-of-type(3) {
  1445. color: #00AA3C;
  1446. }
  1447. }
  1448. .left_b_b_b {
  1449. width: 100%;
  1450. display: flex;
  1451. justify-content: flex-start;
  1452. overflow: hidden;
  1453. margin-top: 16px;
  1454. margin-left: 12px;
  1455. flex-wrap: wrap;
  1456. > i {
  1457. display: inline-block;
  1458. font-size: 14px;
  1459. font-family: Source Han Sans CN;
  1460. font-weight: 400;
  1461. color: #FFFFFF;
  1462. line-height: 18px;
  1463. margin-right: 30px;
  1464. }
  1465. }
  1466. }
  1467. }
  1468. }
  1469. .left_b_b:hover > ul {
  1470. cursor: pointer;
  1471. animation-play-state: paused;
  1472. }
  1473. .showClass {
  1474. display: block;
  1475. }
  1476. /*风险预案*/
  1477. .risk {
  1478. width: 1028px;
  1479. height: 458px;
  1480. position: absolute;
  1481. left: 0px;
  1482. top: 512px;
  1483. z-index: 200;
  1484. display: flex;
  1485. justify-content: flex-start;
  1486. flex-wrap: wrap;
  1487. align-items: center;
  1488. padding-left: 34px;
  1489. padding-top: 50px;
  1490. overflow-y: auto;
  1491. display: none;
  1492. > li {
  1493. -webkit-animation: ani 2s linear infinite;
  1494. background: url("~@/assets/image/index_icon13.png") no-repeat;
  1495. background-size: 100% 100%;
  1496. width: 100%;
  1497. height: 100px;
  1498. display: flex;
  1499. justify-content: flex-start;
  1500. align-items: center;
  1501. margin-bottom: 40px;
  1502. > img {
  1503. width: 40px;
  1504. height: 40px;
  1505. margin-left: 28px;
  1506. margin-right: 12px;
  1507. }
  1508. > i {
  1509. display: inline-block;
  1510. font-size: 18px;
  1511. font-family: Source Han Sans CN;
  1512. font-weight: bold;
  1513. color: #FFFFFF;
  1514. line-height: 22px;
  1515. }
  1516. > i:nth-of-type(1) {
  1517. font-size: 22px;
  1518. width: 144px;
  1519. }
  1520. > i:nth-of-type(2) {
  1521. width: 76px;
  1522. }
  1523. > i:nth-of-type(3) {
  1524. width: 288px;
  1525. }
  1526. > i:nth-of-type(4) {
  1527. width: 248px;
  1528. }
  1529. > i:nth-of-type(5) {
  1530. width: 120px;
  1531. }
  1532. }
  1533. .one_top {
  1534. margin-top: 276px;
  1535. }
  1536. }
  1537. .warning-max-big-box-all {
  1538. padding: 15px 20px 0 !important;
  1539. height: 439px !important;
  1540. }
  1541. .warning-max-big-box {
  1542. padding: 5px 20px 0;
  1543. height: 116px;
  1544. z-index: 200;
  1545. justify-content: flex-start;
  1546. flex-wrap: wrap;
  1547. align-items: center;
  1548. overflow-y: scroll;
  1549. .warning-for-box {
  1550. -webkit-animation: ani 2s linear infinite;
  1551. background: url("~@/assets/image/index_icon13.png") no-repeat;
  1552. background-size: 100% 100%;
  1553. width: 100%;
  1554. height: 100px;
  1555. display: flex;
  1556. justify-content: flex-start;
  1557. align-items: center;
  1558. margin-bottom: 10px;
  1559. img {
  1560. width: 40px;
  1561. height: 40px;
  1562. margin-left: 28px;
  1563. margin-right: 12px;
  1564. }
  1565. .warning-name {
  1566. display: inline-block;
  1567. font-family: Source Han Sans CN;
  1568. font-weight: bold;
  1569. color: #FFFFFF;
  1570. line-height: 22px;
  1571. font-size: 22px;
  1572. width: 200px;
  1573. }
  1574. div {
  1575. flex: 1;
  1576. span {
  1577. display: inline-block;
  1578. font-size: 18px;
  1579. font-family: Source Han Sans CN;
  1580. font-weight: bold;
  1581. color: #FFFFFF;
  1582. line-height: 22px;
  1583. margin-right: 20px;
  1584. }
  1585. }
  1586. .warning-button {
  1587. display: inline-block;
  1588. font-size: 18px;
  1589. font-family: Source Han Sans CN;
  1590. font-weight: bold;
  1591. color: #FFFFFF;
  1592. line-height: 22px;
  1593. margin-right: 20px;
  1594. cursor: pointer;
  1595. }
  1596. }
  1597. }
  1598. }
  1599. }
  1600. .right {
  1601. width: 748px;
  1602. height: 880px;
  1603. position: absolute;
  1604. right: 62px;
  1605. top: 148px;
  1606. z-index: 50;
  1607. background: url("~@/assets/image/index_icon11.png") no-repeat;
  1608. background-size: 100% 100%;
  1609. padding: 34px 30px 0 34px;
  1610. box-sizing: border-box;
  1611. .right_t {
  1612. width: 684px;
  1613. .right_t_b {
  1614. width: 684px;
  1615. height: 226px;
  1616. }
  1617. }
  1618. .right_b {
  1619. margin-top: 18px;
  1620. display: flex;
  1621. justify-content: space-between;
  1622. .right_b_l {
  1623. width: 324px;
  1624. /*小标题*/
  1625. .small_title {
  1626. width: 100%;
  1627. display: flex;
  1628. justify-content: space-between;
  1629. align-items: center;
  1630. .small_title_l {
  1631. font-size: 18px;
  1632. font-family: Source Han Sans CN;
  1633. font-weight: bold;
  1634. color: #1ED0F8;
  1635. line-height: 18px;
  1636. }
  1637. .small_title_r {
  1638. flex: 1;
  1639. text-align: right;
  1640. > i {
  1641. //width: 100px;
  1642. display: inline-block;
  1643. font-size: 14px;
  1644. font-family: Source Han Sans CN;
  1645. font-weight: 400;
  1646. color: #FFFFFF;
  1647. line-height: 14px;
  1648. text-align: right;
  1649. margin-right: 12px;
  1650. }
  1651. > img {
  1652. width: 12px;
  1653. height: 12px;
  1654. cursor: pointer;
  1655. position: relative;
  1656. top: 0px;
  1657. }
  1658. }
  1659. .small_title_r2 {
  1660. flex: 1;
  1661. text-align: right;
  1662. > i {
  1663. //width: 100px;
  1664. display: inline-block;
  1665. font-size: 14px;
  1666. font-family: Source Han Sans CN;
  1667. font-weight: 400;
  1668. color: #FFFFFF;
  1669. line-height: 14px;
  1670. text-align: right;
  1671. margin-right: 12px;
  1672. }
  1673. > img {
  1674. width: 12px;
  1675. height: 12px;
  1676. cursor: pointer;
  1677. position: relative;
  1678. top: -2px;
  1679. }
  1680. }
  1681. }
  1682. .right_b_l_b {
  1683. position: relative;
  1684. .right_b_l_b_t {
  1685. height: 48px;
  1686. display: flex;
  1687. justify-content: flex-start;
  1688. border-bottom: 1px solid #00FAFF;
  1689. margin-top: 16px;
  1690. > i {
  1691. display: inline-block;
  1692. font-size: 16px;
  1693. font-family: Microsoft YaHei;
  1694. font-weight: 400;
  1695. color: #00FAFF;
  1696. line-height: 48px;
  1697. margin-left: 6px;
  1698. }
  1699. > i:nth-of-type(1) {
  1700. width: 223px;
  1701. }
  1702. > i:nth-of-type(2) {
  1703. width: 84px;
  1704. }
  1705. }
  1706. .right_b_l_b_b {
  1707. height: 190px;
  1708. overflow-y: auto;
  1709. background: 0;
  1710. > li {
  1711. height: 40px;
  1712. display: flex;
  1713. justify-content: flex-start;
  1714. border-bottom: 1px solid #00DFFF;
  1715. > a {
  1716. width: 223px;
  1717. display: inline-block;
  1718. font-size: 14px;
  1719. font-family: Microsoft YaHei;
  1720. font-weight: 400;
  1721. color: #fff;
  1722. line-height: 40px;
  1723. margin-left: 6px;
  1724. overflow: hidden;
  1725. text-overflow: ellipsis;
  1726. white-space: nowrap
  1727. }
  1728. > i {
  1729. width: 84px;
  1730. text-align: center;
  1731. padding-right: 50px;
  1732. display: inline-block;
  1733. font-size: 14px;
  1734. font-family: Microsoft YaHei;
  1735. font-weight: 400;
  1736. color: #fff;
  1737. line-height: 40px;
  1738. margin-left: 6px;
  1739. }
  1740. }
  1741. }
  1742. }
  1743. }
  1744. .right_b_r {
  1745. width: 334px;
  1746. /*小标题*/
  1747. .small_title {
  1748. width: 100%;
  1749. display: flex;
  1750. justify-content: space-between;
  1751. .small_title_l {
  1752. font-size: 18px;
  1753. font-family: Source Han Sans CN;
  1754. font-weight: bold;
  1755. color: #1ED0F8;
  1756. line-height: 18px;
  1757. }
  1758. }
  1759. .right_b_r_b_t {
  1760. display: flex;
  1761. justify-content: flex-start;
  1762. flex-wrap: wrap;
  1763. margin-top: 10px;
  1764. height: 60px;
  1765. > li {
  1766. display: flex;
  1767. justify-content: flex-start;
  1768. align-items: center;
  1769. margin-right: 30px;
  1770. > i:nth-of-type(1) {
  1771. width: 8px;
  1772. height: 8px;
  1773. background: #FFFFFF;
  1774. border-radius: 4px;
  1775. margin-right: 4px;
  1776. }
  1777. > i:nth-of-type(2) {
  1778. font-size: 12px;
  1779. font-family: Microsoft YaHei;
  1780. font-weight: 400;
  1781. color: #FFFFFF;
  1782. line-height: 32px;
  1783. }
  1784. }
  1785. }
  1786. .right_b_r_b_b {
  1787. width: 344px;
  1788. height: 166px;
  1789. }
  1790. }
  1791. }
  1792. }
  1793. }
  1794. /*滚动动画*/
  1795. @keyframes move {
  1796. 0% {
  1797. transform: translateY(0)
  1798. }
  1799. 100% {
  1800. transform: translateY(-70)
  1801. }
  1802. }
  1803. </style>
  1804. <style lang="scss">
  1805. li {
  1806. list-style: none
  1807. }
  1808. i, em, b {
  1809. font-style: normal;
  1810. font-weight: 100;
  1811. }
  1812. body {
  1813. margin: 0
  1814. }
  1815. </style>