home.vue 74 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503
  1. <template>
  2. <div class="main">
  3. <img class="bg_img" src="@/assets/image/bg.png"/>
  4. <div class="header">
  5. <img class="header_l" src="" />
  6. <div class="header_c">实验室安全智能监测与控制系统</div>
  7. <div class="header_r1">
  8. <img class="header_r1_l" src="@/assets/image/index_icon3.png"/>
  9. <i class="schoolName">****</i>
  10. <img class="header_r1_r" src="@/assets/image/index_icon4.png" @click="openBackManageUrl()"/>
  11. </div>
  12. </div>
  13. <div class="left">
  14. <div class="left_t">
  15. <img class="left_t_l" src="@/assets/image/index_icon5.png" />
  16. <div class="left_t_l1"></div>
  17. <div class="left_t_c">
  18. <li :class="{'checked_li':checkedNum==0}">校院通知</li>
  19. <li :class="{'checked_li':checkedNum==1}">工作计划</li>
  20. <li :class="{'checked_li':checkedNum==2}">安全检查</li>
  21. <li :class="{'checked_li':checkedNum==3}">分级管控</li>
  22. </div>
  23. <div class="left_t_n">
  24. <div class="swiper-container">
  25. <div class="swiper-wrapper">
  26. <div class="swiper-slide">
  27. <!--院校通知-->
  28. <div class="left_t_r" v-if="infoList">
  29. <li v-for='(item,index) in infoList' :key="index" @click="openInfoUrl(item)">
  30. <div class="left_t_r_t">
  31. <i>{{item.title}}</i>
  32. <i>{{item.company}}</i>
  33. <i>{{ item.createTime.substring(0,10)}}</i>
  34. <img class="left_t_r_t_r" src="@/assets/image/index_icon8.png" />
  35. </div>
  36. <div class="left_t_r_b over2">{{item.conAbstract}}</div>
  37. </li>
  38. <div v-if="infoList.length<=0" style="position:relative;left: 44%; top:8%;color:#fff;">暂无数据</div>
  39. </div>
  40. </div>
  41. <div class="swiper-slide">
  42. <!--工作计划-->
  43. <div class="left_t_r2" v-if="planList">
  44. <!--<div class="left_t_r2_t">
  45. <i>{{planTitle}}</i>
  46. </div>-->
  47. <div class="left_t_r2_m">
  48. <i>工作内容</i>
  49. <i>执行单位</i>
  50. <i>执行日期</i>
  51. </div>
  52. <div class="left_t_r2_b" v-for='(item,index2) in planList' :key="index2">
  53. <li v-if="index2<7" @click="openInfoUrl(item)">
  54. <i class="over">{{item.title}}</i>
  55. <i>{{item.company}}</i>
  56. <i>{{item.executionTime}}</i>
  57. <img src="@/assets/image/index_icon8.png" @click="openPlanUrl()"/>
  58. </li>
  59. </div>
  60. <div v-if="planList.length<=0" style="position:relative;left: 44%; top:8%;color:#fff;">暂无数据</div>
  61. </div>
  62. </div>
  63. <div class="swiper-slide">
  64. <!--安全检查-->
  65. <div class="left_t_r3">
  66. <div class="left_t_r2_t">
  67. <i>{{inspecremark}}-安全检查</i>
  68. <img src="@/assets/image/index_icon8.png" @click="openinspectUrl()"/>
  69. </div>
  70. <div class="left_t_r2_t2">
  71. <i>本次隐患排查数:{{inspeccheckZs}}</i>
  72. <i>历史遗留:{{inspeccheckWzg}}</i>
  73. <i>本次已整改:{{inspeccheckYzg}}</i>
  74. </div>
  75. <div class="left_t_r2_m">
  76. <i>实验室</i>
  77. <i>类型</i>
  78. <i>级别</i>
  79. <i>隐患排查数</i>
  80. <i>已整改</i>
  81. </div>
  82. <div class="left_t_r2_b" v-if="inspectList">
  83. <li v-for='(item,index3) in inspectList' :key="index3">
  84. <i class="over">{{item.laboratoryName}}</i>
  85. <i>{{item.typeName}}</i>
  86. <i>{{item.typeLevel}}</i>
  87. <i>{{item.checkZs}}</i>
  88. <i>{{item.checkYzg}}</i>
  89. </li>
  90. </div>
  91. <div v-if="inspectList.length<=0" style="position:relative;left: 44%; top:8%;color:#fff;">暂无数据</div>
  92. </div>
  93. </div>
  94. <div class="swiper-slide">
  95. <!--分级管控-->
  96. <div class="left_t_r4" v-if="controlList">
  97. <div class="left_t_r2_t">
  98. <i>{{controlTitle}}</i>
  99. <img src="@/assets/image/index_icon8.png" @click="openControlUrl()"/>
  100. </div>
  101. <div class="left_t_r2_m">
  102. <i>实验室</i>
  103. <i>类型</i>
  104. <i>级别</i>
  105. <i>计划执行数</i>
  106. <i>实际执行数</i>
  107. <i>执行率</i>
  108. </div>
  109. <div class="left_t_r2_b" v-for='(item,index4) in controlList' :key="index4">
  110. <li v-if="index4<7">
  111. <i>{{item.subName}}</i>
  112. <i>{{item.typeName}}</i>
  113. <i v-if="item.levelName=='一级'" class="controlColorOne">{{item.levelName}}</i>
  114. <i v-if="item.levelName=='二级'" class="controlColorTow">{{item.levelName}}</i>
  115. <i v-if="item.levelName=='三级'" class="controlColorThree">{{item.levelName}}</i>
  116. <i v-if="item.levelName=='四级'" class="controlColorFour">{{item.levelName}}</i>
  117. <i>{{item.planNum}}</i>
  118. <i>{{item.finishedNum}}</i>
  119. <div class="left_t_r2_b_i6">
  120. <progress :value="item.rateNum" max="100"></progress>
  121. <i>{{item.rateNum}}%</i>
  122. </div>
  123. </li>
  124. </div>
  125. <div v-if="controlList.length<=0" style="position:relative;left: 44%; top:20%;color:#fff;">暂无数据</div>
  126. </div>
  127. </div>
  128. </div>
  129. </div>
  130. </div>
  131. </div>
  132. <div class="left_b">
  133. <div class="left_b_t">
  134. <div class="left_b_t_l">
  135. <!--公共小标题-->
  136. <div class="small_title">
  137. <div class="small_title_l">人员违规统计-本月</div>
  138. <div class="small_title_r">
  139. <i>总违规人数:{{resultCount}}</i>
  140. <img class="left_b_t_l_btn" src="@/assets/image/index_icon8.png" @click="left_b_t_l_btn"/>
  141. </div>
  142. </div>
  143. <div class="left_b_t_l_b" id="left_b_t_l_b"></div>
  144. </div>
  145. <div class="left_b_t_r">
  146. <!--公共小标题-->
  147. <div class="small_title">
  148. <div class="small_title_l">安全准入办理统计</div>
  149. <div class="small_title_r" @click="left_b_t_r_btn">
  150. <i>准入办理总人数:{{listcount}}</i>
  151. <img class="left_b_t_r_btn" src="@/assets/image/index_icon8.png"/>
  152. </div>
  153. </div>
  154. <div class="left_b_t_r_b" id="left_b_t_r_b"></div>
  155. </div>
  156. </div>
  157. <img class="left_b_t1" src="@/assets/image/index_icon12.png" />
  158. <!--实验室信息-->
  159. <!---->
  160. <div class="left_b_b" >
  161. <ul id="move_ani" :style="`animation-duration: ${labInfoList.length/0.1}s;height:${labInfoList.length*66*1.7}px;`">
  162. <template v-for='(item) in labInfoList' >
  163. <li v-if="item.sensorFunctionStatusList.length>0" :key="item.id">
  164. <div class="left_b_b_t">
  165. <i>{{item.room}}</i>
  166. <i>{{item.address}}</i>
  167. <!--<i>正常</i>-->
  168. </div>
  169. <div class="left_b_b_b">
  170. <i v-for='(item2,index) in item.sensorFunctionStatusList' :key="index">{{item2.funcName}}:{{item2.formatVal}}</i>
  171. </div>
  172. </li>
  173. </template>
  174. </ul>
  175. </div>
  176. <!--风险预案-->
  177. <div class="risk" >
  178. <!--:class="index==1:one_top risk_li"-->
  179. <li v-for='(item,index7) in warningList' :key="index7">
  180. <img src="@/assets/image/index_icon14.png"/>
  181. <i class="risk_li_l">{{item.groupName}}</i>
  182. <i class="risk_li_l2">{{item.roomName}}</i>
  183. <i class="risk_li_l3">{{item.buildName}} {{item.floorName}}</i>
  184. <i class="risk_li_l4">{{item.sensorStr}}</i>
  185. <i @click="openRiskPlanUrl(item)">查看详情 >></i>
  186. </li>
  187. </div>
  188. <div class="risk_one" >
  189. <!--:class="index==1:one_top risk_li"-->
  190. <li v-for='(item,index9) in warningList' :key="index9">
  191. <img src="@/assets/image/index_icon14.png"/>
  192. <i class="risk_li_l">{{item.groupName}}</i>
  193. <i class="risk_li_l2">{{item.roomName}}</i>
  194. <i class="risk_li_l3">{{item.buildName}} {{item.floorName}}</i>
  195. <i class="risk_li_l4">{{item.sensorStr}}</i>
  196. <i @click="openRiskPlanUrl(item)">查看详情 >></i>
  197. </li>
  198. </div>
  199. </div>
  200. </div>
  201. <div class="right">
  202. <div class="right_t">
  203. <!--公共小标题-->
  204. <div class="small_title">
  205. <div class="small_title_l">预案执行计划</div>
  206. <div class="small_title_r" @click="right_t_btn">
  207. <i>风险预警总数:{{planResultCount}}</i>
  208. <img class="right_t_btn" src="@/assets/image/index_icon8.png" />
  209. </div>
  210. </div>
  211. <div class="right_t_b" id="right_t_b"></div>
  212. <img class="left_b_t1" src="@/assets/image/index_icon12.png" />
  213. </div>
  214. <div class="right_m">
  215. <div class="right_m_l">
  216. <!--公共小标题-->
  217. <div class="small_title">
  218. <div class="small_title_l">安全隐患统计-本月</div>
  219. <div class="small_title_r2" @click="right_m_l_btn">
  220. <i>隐患总数:{{dangerCount}}</i>
  221. <img class="right_m_l_btn" src="@/assets/image/index_icon8.png"/>
  222. </div>
  223. </div>
  224. <div class="right_m_l_b" id="right_m_l_b"></div>
  225. </div>
  226. <div class="right_m_r">
  227. <!--公共小标题-->
  228. <div class="small_title">
  229. <div class="small_title_l">危险源统计</div>
  230. <div class="small_title_r2" @click="right_m_r_btn">
  231. <!--<i>隐患总数:63</i>-->
  232. <img class="right_m_r_btn" src="@/assets/image/index_icon8.png"/>
  233. </div>
  234. </div>
  235. <div class="right_m_r_b" id="right_m_r_b"></div>
  236. </div>
  237. </div>
  238. <img class="left_b_t1" src="@/assets/image/index_icon12.png" />
  239. <div class="right_b">
  240. <div class="right_b_l">
  241. <!--公共小标题-->
  242. <div class="small_title">
  243. <div class="small_title_l">进入实验室人员</div>
  244. <div class="small_title_r">
  245. <i>总人数:{{labResultCount}}</i>
  246. <img class="right_b_btn" src="@/assets/image/index_icon8.png" @click="right_b_btn"/>
  247. </div>
  248. </div>
  249. <div class="right_b_l_b">
  250. <div class="right_b_l_b_t">
  251. <i>实验室名称</i>
  252. <i>当前人数</i>
  253. </div>
  254. <div class="right_b_l_b_b" v-if="labList">
  255. <li v-for='(item,index10) in labList' :key="index10"><a :name="item.name">{{item.name}}</a><i>{{item.online}}</i></li>
  256. </div>
  257. <div v-if="labList.length<=0" style="position:absolute;left: 36%; top:38%;color:#fff;">暂无数据</div>
  258. </div>
  259. </div>
  260. <div class="right_b_r">
  261. <!--公共小标题-->
  262. <div class="small_title">
  263. <div class="small_title_l">实验室分类分级统计</div>
  264. <div class="small_title_r" style="width:100px;">
  265. <img class="right_b_btn" src="@/assets/image/index_icon8.png" @click="classifyGrade"/>
  266. </div>
  267. </div>
  268. <div class="right_b_r_b">
  269. <div class="right_b_r_b_t">
  270. <li v-for='(item,index11) in labTypeList' :key="index11"><i></i><i>{{item.typeName}}({{item.totalNum}})</i></li>
  271. </div>
  272. <div class="right_b_r_b_b" id="right_b_r_b_b"></div>
  273. </div>
  274. </div>
  275. </div>
  276. </div>
  277. </div>
  278. </template>
  279. <script>
  280. import {
  281. getLogoInfo,
  282. getYearControlInfo,
  283. groupGetList,
  284. indexCollegeListCheck,
  285. indexListRelease,
  286. listCollegeApplyColumn,
  287. listCollegeJh,
  288. listCollegeTz,
  289. mySub, newStatistics,
  290. onlineSumByBigView,
  291. optionCharts,
  292. queryHazardColumnar,
  293. workInfo,
  294. getUrlConfig,
  295. requestUrl, getTypeCount, getFiedCount
  296. } from "../api/http"
  297. import Swiper from 'swiper'
  298. import $ from 'jquery'
  299. import mqtt from 'mqtt/dist/mqtt'
  300. import { Encrypt,Decrypt} from '@/utils/secret.js'
  301. export default {
  302. data(){
  303. return {
  304. //MQTT请求参数-传感器
  305. mtopic:"lab/bigview",
  306. mtopicTwo:"manage/work"+localStorage.getItem('userId'),
  307. timer: '',//定时器
  308. dataList:[],
  309. labList:[],//实验室人员
  310. infoList:[],//工作通知
  311. planList:[],//工作计划
  312. planTitle:'',//工作计划
  313. inspectList:[],//安全检查
  314. inspecremark:'',//安全检查时间
  315. inspeccheckZs:'',//安全检查隐患排查数
  316. inspeccheckWzg:'',//安全检查历史遗留
  317. inspeccheckYzg:'',//安全检查已整改
  318. labInfoList:[],//实验室信息
  319. controlList:[],//分级管控
  320. controlTitle:'',//分级管控标题
  321. inspectBatchList:[],//安全检查批次列表
  322. //风险预案
  323. warningList:[],
  324. groupName:'',
  325. roomName:'',
  326. buildName:'',
  327. floorName:'',
  328. riskPlanId:'',//风险预案id
  329. subjectId:'',//实验室id
  330. sensorStr:'',//实验室id
  331. laboratoryId:'',//安全检查实验室检查批次id
  332. checkedNum:0,
  333. //首页总数
  334. resultCount:'',
  335. listcount:'',
  336. planResultCount:'',
  337. dangerCount:'',
  338. labResultCount:'',
  339. mySwiper:null,
  340. labTypeList:[]
  341. }
  342. },
  343. methods: {
  344. initSwiper: function () {
  345. let _this=this;
  346. _this.mySwiper= new Swiper('.swiper-container', {
  347. //loop: true, // 循环模式选项
  348. //autoplay:true,
  349. autoplay: {
  350. delay: 12000,
  351. stopOnLastSlide: false,
  352. disableOnInteraction: true,
  353. },
  354. direction : 'vertical',
  355. //监听滚动到第几页
  356. on:{
  357. slideChangeTransitionEnd: function () {
  358. _this.checkedNum=this.realIndex
  359. }
  360. },
  361. });
  362. },
  363. //安全准入办理统计
  364. left_b_t_r_btn(){
  365. this.$router.push('./admittanceDetail')
  366. },
  367. //安全隐患统计
  368. right_m_l_btn(){
  369. this.$router.push('./dangerDetail')
  370. },
  371. //人员违规统计
  372. left_b_t_l_btn(){
  373. this.$router.push('./illegalDetail')
  374. },
  375. //工作通知
  376. openInfoUrl(d){
  377. this.$router.push({path:'./workInfoDetail',query:{key:d.id}})
  378. },
  379. //工作计划
  380. openPlanUrl(){
  381. this.$router.push('./workPlanDetail')
  382. },
  383. //分级管控
  384. openControlUrl(){
  385. this.$router.push('./controlDetail')
  386. },
  387. //安全检查
  388. openinspectUrl(){
  389. this.$router.push({path:'./inspectDetail',query:{key:this.laboratoryId}})
  390. },
  391. //安全检查批次
  392. openinspectBatchUrl(d){
  393. this.$router.push({path:'./inspectDetail',query:{key:d.id}})
  394. },
  395. //进入实验室人员
  396. right_b_btn(){
  397. this.$router.push('./labPersonDetail')
  398. },
  399. //预案执行统计
  400. right_t_btn(){
  401. this.$router.push('./planDetail')
  402. },
  403. //危险源统计
  404. right_m_r_btn(){
  405. this.$router.push('./riskDetail')
  406. },
  407. //实验室分类分级
  408. classifyGrade(){
  409. this.$router.push('./classifyGradeDetail')
  410. },
  411. //获取报警信息
  412. openRiskPlanUrl(d){
  413. this.$router.push({path:'./warningDetail',query:{key:d.id,subjectId:d.subjectId}})
  414. },
  415. //跳转后台管理
  416. openBackManageUrl(){
  417. window.location.href = localStorage.getItem('pcVisitUrl')
  418. },
  419. //MQTT订阅
  420. subscriptionMQTT(){
  421. let _this = this;
  422. this.client = mqtt.connect(localStorage.getItem('mqttUrl'), {
  423. username: localStorage.getItem('mqttUser'),
  424. password:localStorage.getItem('mqttPassword')
  425. });
  426. this.client.on("connect", e =>{
  427. console.log("连接成功",e);
  428. this.client.subscribe(this.mtopic, (err) => {
  429. if (!err) {
  430. console.log("警报通道订阅成功:" + this.mtopic);
  431. }
  432. });
  433. });
  434. this.client.on("message", (topic, message) => {
  435. if (message){
  436. let data = JSON.parse(message)
  437. if(topic == this.mtopic){
  438. //报警
  439. if(data.data == 'SUB_RISKPLAN_GROUP'){
  440. console.log("预案信息",data);
  441. _this.warningInfoFun();
  442. }
  443. }
  444. }
  445. });
  446. },
  447. getAjaxData: function () {
  448. let _this = this;
  449. //获取logo图片
  450. getLogoInfo({}).then((res) =>{
  451. if(res.code==200){
  452. $(".header_l").attr("src",requestUrl+res.data.rectangleLogo);
  453. $(".schoolName").html(res.data.schoolName);
  454. localStorage.setItem('logoImg',requestUrl+res.data.rectangleLogo)
  455. }
  456. })
  457. getUrlConfig().then(response => {
  458. console.log('开发配置',response.data)
  459. //判定http或者https
  460. let urlText = window.location.href.split('://')[0]+'://';
  461. let outerNet=window.location.href.indexOf(response.data.ipIdentify) == -1//true外网 false 内网
  462. if(outerNet){//外网
  463. //文件预览地址
  464. localStorage.setItem('filePreviewUrl',urlText+response.data.fileExtranetUrl)
  465. //摄像头代理访问地址
  466. localStorage.setItem('cameraExtranetAgent',urlText+response.data.cameraExtranetAgent)
  467. //摄像头地址ip段
  468. localStorage.setItem('ipIdentify',response.data.ipIdentify)
  469. //摄像头访问地址
  470. localStorage.setItem('cameraUrl',urlText+response.data.cameraExtranetUrl)
  471. //MQTT地址
  472. localStorage.setItem('mqttUrl','wss://'+Decrypt(response.data.mqttExtranetUrl))
  473. //MQTT账号
  474. localStorage.setItem('mqttUser',Decrypt(response.data.mqttExtranetUser))
  475. //MQTT密码
  476. localStorage.setItem('mqttPassword',Decrypt(response.data.mqttExtranetPassword))
  477. //可视化大屏访问地址
  478. localStorage.setItem('screenUrl',urlText+response.data.screenExtranetUrl)
  479. //后台访问地址
  480. localStorage.setItem('pcVisitUrl',urlText+response.data.pcExtranetUrl)
  481. }else{
  482. //文件预览地址
  483. localStorage.setItem('filePreviewUrl',urlText+response.data.fileIntranetUrl)
  484. //摄像头代理访问地址
  485. localStorage.setItem('cameraExtranetAgent',urlText+response.data.cameraIntranetAgent)
  486. //摄像头地址ip段
  487. localStorage.setItem('ipIdentify',response.data.ipIdentify)
  488. //摄像头访问地址
  489. localStorage.setItem('cameraUrl',urlText+response.data.cameraIntranetUrl)
  490. //MQTT地址
  491. localStorage.setItem('mqttUrl','ws://'+Decrypt(response.data.mqttIntranetUrl))
  492. //MQTT账号
  493. localStorage.setItem('mqttUser',Decrypt(response.data.mqttIntranetUser))
  494. //MQTT密码
  495. localStorage.setItem('mqttPassword',Decrypt(response.data.mqttIntranetPassword))
  496. //可视化大屏访问地址
  497. localStorage.setItem('screenUrl',urlText+response.data.screenIntranetUrl)
  498. //后台访问地址
  499. localStorage.setItem('pcVisitUrl',urlText+response.data.pcIntranetUrl)
  500. }
  501. });
  502. //安全隐患统计
  503. optionCharts({type:localStorage.getItem('deptLevel')}).then((res) =>{
  504. if(res.code==200){
  505. let dataX=[];
  506. let dataCount=[];
  507. let data=res.data.list;
  508. _this.dangerCount=res.data.count
  509. for (var i = 0; i < 3; i++) {
  510. dataX.push( data[i].optionName)
  511. dataCount.push(data[i].count)
  512. }
  513. dataX.reverse()
  514. dataCount.reverse()
  515. this.safetyFun(dataX,dataCount)
  516. }
  517. })
  518. //人员违规统计
  519. newStatistics({}).then((res) =>{
  520. if(res.code==200){
  521. let illegalX=[];
  522. let illegalData=[];
  523. let data=res.data.list;
  524. _this.resultCount=res.data.resultCount;//总数
  525. if(data.length<=0){
  526. for (let i = 0; i <4; i++) {
  527. illegalX.push('其他')
  528. illegalData.push(0)
  529. }
  530. }else{
  531. data.forEach(function (item) {
  532. illegalX.push(item.content)
  533. illegalData.push(item.count)
  534. })
  535. }
  536. this.illegalFun(illegalX,illegalData)
  537. }
  538. })
  539. //安全准入办理统计
  540. listCollegeApplyColumn({}).then((res) =>{
  541. if(res.code==200){
  542. let dataX=[];
  543. let dataValue=[];
  544. let data=res.data.listTg;
  545. _this.listcount=res.data.listcount////总数
  546. for (var i = 0; i < data.length; i++) {
  547. dataX.push( data[i].applyMonth)
  548. dataValue.push(data[i].applyNum);
  549. }
  550. this.admittanceFun(dataX,dataValue)
  551. }
  552. })
  553. //预案执行统计
  554. getYearControlInfo({}).then((res) =>{
  555. if(res.code==200){
  556. let dataX=[];
  557. let dataValue=[];
  558. let data=res.data.list;
  559. _this.planResultCount=res.data.resultCount
  560. for (var i = 0; i < data.length; i++) {
  561. dataX.push( data[i].yearMonth)
  562. dataValue.push(data[i].num)
  563. }
  564. this.planFun(dataX,dataValue)
  565. }
  566. })
  567. //危险源统计
  568. queryHazardColumnar({}).then((res) =>{
  569. if(res.code==200){
  570. // let dataX=[
  571. // {
  572. // value:'73',
  573. // name:'危化品 73kg',
  574. // },
  575. // {
  576. // value:'62',
  577. // name:'气瓶 62瓶',
  578. // },
  579. // {
  580. // value:'51',
  581. // name:'冷热设备 51台',
  582. // },
  583. // {
  584. // value:'34',
  585. // name:'特种设备 34台',
  586. // },
  587. //
  588. // ];
  589. let dataX=[];
  590. let data=res.data;
  591. data.forEach(function (item) {
  592. if(item.totalNum==0){
  593. dataX.push({value:'', name:item.dictLabel+' '+item.totalNum})
  594. }else{
  595. dataX.push({value:item.totalNum, name:item.dictLabel+' '+item.totalNum})
  596. }
  597. })
  598. this.riskFun(dataX)
  599. }
  600. })
  601. //实验室人员
  602. onlineSumByBigView({pageNumStr:1,pageSizeStr:50}).then((res) =>{
  603. if(res.code==200){
  604. let data=res.data.list;
  605. _this.labResultCount=res.data.resultCount
  606. _this.labList=data
  607. }
  608. })
  609. //实验室分类
  610. getTypeCount({}).then((res) =>{
  611. if(res.code==200){
  612. let data=res.data
  613. this.labTypeList=data
  614. }
  615. })
  616. //实验室分级
  617. getFiedCount({}).then((res) =>{
  618. if(res.code==200){
  619. let _this=this;
  620. let data=res.data
  621. let dataX=[]
  622. data.forEach(function (item) {
  623. dataX.push({name:item.classifiedName,value:item.totalNum})
  624. })
  625. _this.classifyFun(dataX)
  626. }
  627. })
  628. //分级管控
  629. workInfo({pageNum:1,pageSize:9,type:localStorage.getItem('deptLevel')}).then((res) =>{
  630. if(res.code==200){
  631. let data=res.data;
  632. _this.controlList=data.list
  633. _this.controlTitle=data.title
  634. }
  635. })
  636. //安全检查批次
  637. indexListRelease({pageNum:1,pageSize:10}).then((res) =>{
  638. if(res.code==200){
  639. let data=res.rows;
  640. let list=[];
  641. let num=0;
  642. if(data.length<10){
  643. for(var i=0;i<10;i++){
  644. if(num==data.length){
  645. num=0;
  646. }
  647. list.push(data[num])
  648. num++;
  649. }
  650. _this.inspectBatchList=list
  651. }else{
  652. _this.inspectBatchList=data
  653. }
  654. }
  655. })
  656. //实验室信息
  657. mySub({}).then((res) =>{
  658. if(res.code==200){
  659. let data=res.data;
  660. _this.labInfoList=[]
  661. data.forEach(function (item){
  662. if(item.sensorFunctionStatusList.length>0){
  663. _this.labInfoList.push(item)
  664. }
  665. })
  666. /* _this.controlList=data.list
  667. _this.controlTitle=data.title*/
  668. }
  669. })
  670. },
  671. //工作通知
  672. infoFun:function(){
  673. let _this=this;
  674. listCollegeTz({pageNum:1,pageSize:4,notifyType:2}).then((res) =>{
  675. if(res.code==200){
  676. let data=res.rows;
  677. _this.infoList=data
  678. }
  679. })
  680. },
  681. //工作计划
  682. workPlanFun:function(){
  683. let _this=this;
  684. listCollegeJh({pageNum:1,pageSize:10,notifyType:1}).then((res) =>{
  685. if(res.code==200){
  686. let data=res.rows;
  687. _this.planList=data
  688. //_this.planTitle=res.data.list.title
  689. }
  690. })
  691. },
  692. //安全检查
  693. safetyInspectFun:function(){
  694. let _this=this;
  695. indexCollegeListCheck({pageNum:1,pageSize:10}).then((res) =>{
  696. if(res.code==200){
  697. let data=res.rows;
  698. _this.inspectList=data
  699. for (var i = 0; i < data.length; i++) {
  700. _this.inspecremark=data[0].remark;
  701. _this.inspeccheckWzg=data[0].listVo[0].checkWzg;
  702. _this.inspeccheckYzg=data[0].listVo[0].checkYzg;
  703. _this.inspeccheckZs=data[0].listVo[0].checkZs;
  704. _this.laboratoryId=data[0].id;
  705. }
  706. }
  707. })
  708. },
  709. //获取报警信息
  710. warningInfoFun:function(){
  711. let _this=this
  712. groupGetList({status:1}).then((res) =>{
  713. if(res.code==200) {
  714. let data = res.data
  715. if (res.data.length > 0) {
  716. _this.warningList=data
  717. if (res.data.length == 1) {
  718. $('.left_b_b').css('display', 'none');
  719. $('.risk').css('display', 'none');
  720. $('.risk_one').css('display', 'block');
  721. } else if (res.data.length > 1) {
  722. $('.risk').css('display', 'block')
  723. $('.risk_one').css('display', 'none');
  724. $('.left_b_t').css('display', 'none')
  725. $('.left_b_b').css('display', 'none')
  726. }
  727. } else {
  728. $('.risk').css('display', 'none');
  729. $('.risk_one').css('display', 'none');
  730. $('.left_b_b').css('display', 'block');
  731. }
  732. }
  733. })
  734. },
  735. /*人员违规统计*/
  736. illegalFun:function(illegalX,illegalData) {
  737. let illegalOption = {
  738. grid: {
  739. left: '6%',
  740. right: '14%',
  741. bottom: '3%',
  742. top:'14%',
  743. containLabel: true
  744. },
  745. xAxis: {
  746. type: 'category',
  747. boundaryGap: false,
  748. axisLabel: {
  749. //rotate:(-10),
  750. textStyle: {//改变X轴字体颜色
  751. color: '#fff',
  752. fontSize:14,
  753. align: 'left' //**
  754. },
  755. interval: 0,//使x轴上的文字显示完全,
  756. //设置一行显示几个字,自己设置
  757. formatter: function (params) {
  758. var newParamsName = "";
  759. var paramsNameNumber = params.length;
  760. var provideNumber = 3;
  761. var rowNumber = Math.ceil(paramsNameNumber / provideNumber);
  762. if (paramsNameNumber > provideNumber) {
  763. for (var p = 0; p < rowNumber; p++) {
  764. var tempStr = "";
  765. var start = p * provideNumber;
  766. var end = start + provideNumber;
  767. if (p == rowNumber - 1) {
  768. tempStr = params.substring(start, paramsNameNumber);
  769. } else {
  770. tempStr = params.substring(start, end) + "\n";
  771. }
  772. newParamsName += tempStr;
  773. }
  774. } else {
  775. newParamsName = params;
  776. }
  777. return newParamsName;
  778. }
  779. },
  780. axisTick:{//去掉X轴刻度
  781. show:false,
  782. },
  783. axisLine:{
  784. show:true,
  785. lineStyle:{
  786. color:'#848cae',//改变X轴颜色
  787. width:2,
  788. }
  789. },
  790. data: illegalX
  791. },
  792. yAxis: {
  793. type: 'value',
  794. splitLine:{
  795. show:true,
  796. lineStyle:{
  797. color:'#314288',
  798. opacity:'.2',
  799. }
  800. },
  801. axisLabel: {
  802. formatter: '{value}',
  803. textStyle: {
  804. color: '#fff',
  805. }
  806. },
  807. axisTick:{
  808. show:false,
  809. },
  810. axisLine:{
  811. lineStyle:{
  812. color:'#848cae',
  813. width:2,
  814. }
  815. }
  816. },
  817. series: [{
  818. data: illegalData,
  819. label:{
  820. show:true,
  821. color:'#fff',
  822. formatter:function(data){
  823. return data.value;
  824. }
  825. },
  826. type: 'line',
  827. smooth: true,//让折线平滑
  828. symbolSize:8, //拐点圆的大小
  829. itemStyle: {
  830. normal: {
  831. color: "#917FFF",
  832. lineStyle:{
  833. width:4,
  834. type:'solid' //'dotted'虚线 'solid'实线
  835. }
  836. },
  837. },
  838. areaStyle: {
  839. normal: {
  840. color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [{
  841. offset: 0,
  842. color: '#917FFF'
  843. }, {
  844. offset: 1,
  845. color: 'rgba(0, 0, 0, 0.5)'
  846. }])
  847. }
  848. },
  849. }]
  850. };
  851. var left_m_b = this.$echarts.init(document.getElementById('left_b_t_l_b'));
  852. left_m_b.setOption(illegalOption);
  853. //定时动画
  854. clearInterval(chartReload);
  855. var chartReload = setInterval(function(){
  856. left_m_b.clear();
  857. left_m_b.setOption(illegalOption);
  858. },1000*6);
  859. },
  860. /*安全准入办理统计*/
  861. admittanceFun:function(dataX,dataValue) {
  862. var paperDataURI = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAABqCAYAAAC1StHGAAAAAXNSR0IArs4c6QAAAx9JREFUWEfFmVlv00AUhc+1E6ep6AK8AC/8A/4E7zzywjPiiQdU9kVICCEEiH0pRYAoKkuhLGUTW1ERQuyV+A1tQyElblrsxok9aCYOWCVIIacSVxpFGXu+OfeM72icCHT0uQtTpfIKqchalcZKlUV75FiibDGXESrYQaTER1EqGFK26qlk0p+xprMgGCgsR6DWiS2rYallykIWFmAaYgAUEME0ieAjlHGJVH/kyFlB/1QvJFoFCx2w4zEqMbaqAZpheDEIEaYQWoOCa4VJ2FhkbtI36GZmrxN6sAb9gokrdnc+H3bai5GOLySVJxl6UC30JAGQcsOCtHeNuqUlTkd5aQqRI7/Trqmpya99KkBKCk6ugpZcqSgd60c9JchGjoWw00bYbiHMClRGAMuqyo0iSKBg+RFSxQi2G8EKIp2tL20bxjxRKmvMkViB1HFRKUAlVkX0V/GlrUsDkDXpGZOU8TGJqKVv+vUksclKtIKuMQ+IAUmTkqbVjJ3bp1NYsHHck7mAxIIkmXMXVhnApnEPtRT+svx1u6t2+NK6ub6CRlhGQesWEpDdmvvTxEamr97jS8u2XF0TG2GYFFq2s4AdJCCz8wvnQWbX/wY4rIL07gnOAwOQOdXYyENQ3aF8Se2ZaK6YqiUeA+qUc4MifLH3fuUUGACjwNpHKjAARoHs/8Z5YACMAhwgFRgApeBgngQcynMm4jCr4AgLODpJenCMBRxnASe+kymcZAGnWMBpFnCmQHrQzQLOsoAeFnDOJT0475LlfGE+ANSWdrHoAap62P7nEF9wqehBH/ebCX3cNwBKQS8LuDxNKuibJj3QAMqDKyzg6gyp4PoM6YEGUB70swpu/CAV3GQBAyzgFgu4zQLueKSJd1nAIAu4xwLu+6QHD1jAQxbwiAU89sn94MksCXjKAp6xgOfzAaD2xKFZ8ojzggUMaw+afP3Xb+/QAOqIM1wiq/FliUzh1XwAKA9eswo0gFLwJiDLWQNoBRTgrU6BeZTfsSm8ZwEfymQtGECTHuhfdfGRBXxiASPlADD/sDQTZcFIxQWU08xoQIKf1XEgxrNrNF0AAAAASUVORK5CYII='
  863. var admittanceOption = {
  864. grid: {
  865. left: '3%',
  866. right: '4%',
  867. bottom: '3%',
  868. top:'16%',
  869. containLabel: true
  870. },
  871. "xAxis": [{
  872. "type": "category",
  873. "data": dataX,
  874. /*"axisTick": {
  875. "alignWithLabel": true
  876. },*/
  877. axisTick: {
  878. show: false,
  879. },
  880. "nameTextStyle": {
  881. "color": "#82b0ec"
  882. },
  883. "axisLine": {
  884. show: true,
  885. "lineStyle": {
  886. "color": "#486CC2",
  887. width:2,
  888. }
  889. },
  890. "axisLabel": {
  891. "textStyle": {
  892. "color": "#fff",
  893. fontSize:14,
  894. },
  895. //margin: 20
  896. }
  897. }],
  898. "yAxis": [
  899. {
  900. axisTick: {
  901. show: false,
  902. },
  903. //坐标轴
  904. "axisLine": {
  905. show: true,
  906. "lineStyle": {
  907. "color": "#486CC2",
  908. width:2,
  909. }
  910. },
  911. //坐标值标注
  912. axisLabel: {
  913. show: true,
  914. textStyle: {
  915. color: '#fff',
  916. fontSize:16,
  917. }
  918. },
  919. //分格线
  920. splitLine: {
  921. show: false,
  922. lineStyle: {
  923. color: '#4784e8',
  924. type:'dashed',
  925. opacity:0.4,
  926. }
  927. }
  928. },
  929. ],
  930. series: [
  931. {
  932. label: {
  933. normal: {
  934. show: true,
  935. position: 'top',
  936. textStyle: {
  937. color: '#fff',
  938. }
  939. }
  940. },
  941. data: dataValue,
  942. type: "pictorialBar",
  943. barMaxWidth: "20",
  944. symbolPosition: "end",
  945. // symbol: "diamond",
  946. symbol: 'image://' + paperDataURI,
  947. // symbolOffset: [0, "-50%"],
  948. //symbolSize: [30, 22],
  949. zlevel: 2,
  950. },
  951. ],
  952. tooltip: {
  953. trigger: "axis",
  954. show: false,
  955. },
  956. };
  957. var left_b_b = this.$echarts.init(document.getElementById('left_b_t_r_b'));
  958. left_b_b.setOption(admittanceOption);
  959. //定时动画
  960. clearInterval(chartReload2);
  961. var chartReload2 = setInterval(function(){
  962. left_b_b.clear();
  963. left_b_b.setOption(admittanceOption);
  964. },1000*4);
  965. },
  966. /*预案执行统计*/
  967. planFun:function(dataX,dataValue) {
  968. 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=='
  969. var planOption = {
  970. /*内边距*/
  971. grid: {
  972. top: '14%',
  973. left: '2%',
  974. right: '2%',
  975. bottom: '5%',
  976. containLabel: true
  977. },
  978. xAxis: {
  979. data:dataX,
  980. //坐标轴
  981. axisLine: {
  982. lineStyle: {
  983. "color": "#486CC2",
  984. width:2,
  985. }
  986. },
  987. axisTick: {
  988. show: false,
  989. },
  990. //坐标值标注
  991. axisLabel: {
  992. show: true,
  993. textStyle: {
  994. color: '#fff',
  995. fontSize:14,
  996. }
  997. }
  998. },
  999. yAxis: [
  1000. {
  1001. axisTick: {
  1002. show: false,
  1003. },
  1004. //坐标轴
  1005. axisLine: {
  1006. lineStyle: {
  1007. "color": "#486CC2",
  1008. width:2,
  1009. }
  1010. },
  1011. //坐标值标注
  1012. axisLabel: {
  1013. show: true,
  1014. textStyle: {
  1015. color: '#fff',
  1016. fontSize:16,
  1017. }
  1018. },
  1019. //分格线
  1020. splitLine: {
  1021. show: false,
  1022. lineStyle: {
  1023. color: '#4784e8'
  1024. }
  1025. }
  1026. }
  1027. ],
  1028. series: [
  1029. {
  1030. label: {
  1031. normal: {
  1032. show: true,
  1033. position: 'top',
  1034. textStyle: {
  1035. color: '#fff',
  1036. }
  1037. }
  1038. },
  1039. data:dataValue,
  1040. type: "pictorialBar",
  1041. barMaxWidth: "20",
  1042. symbolPosition: "end",
  1043. // symbol: "diamond",
  1044. symbol: 'image://' + paperDataURI,
  1045. // symbolOffset: [0, "-50%"],
  1046. //symbolSize: [30, 22],
  1047. zlevel: 2,
  1048. },
  1049. ],
  1050. tooltip: {
  1051. trigger: "axis",
  1052. show: false,
  1053. },
  1054. };
  1055. var right_t_b = this.$echarts.init(document.getElementById('right_t_b'));
  1056. right_t_b.setOption(planOption);
  1057. //定时动画
  1058. clearInterval(chartReload3);
  1059. var chartReload3 = setInterval(function(){
  1060. right_t_b.clear();
  1061. right_t_b.setOption(planOption);
  1062. },1000*4);
  1063. },
  1064. /*安全隐患统计*/
  1065. safetyFun:function(dataX,dataValue) {
  1066. let safetyOption = {
  1067. tooltip: {
  1068. /*trigger: 'axis',
  1069. axisPointer: {
  1070. type: 'shadow'
  1071. }*/
  1072. },
  1073. grid: {
  1074. left: '3%',
  1075. right: '4%',
  1076. bottom: '3%',
  1077. top:'14%',
  1078. containLabel: true
  1079. },
  1080. xAxis: {
  1081. type: 'value',
  1082. axisLabel: {
  1083. show:false,
  1084. textStyle: {//改变X轴字体颜色
  1085. color: '#1463E3',
  1086. },
  1087. },
  1088. axisTick:{//去掉X轴刻度
  1089. show:false,
  1090. },
  1091. axisLine:{
  1092. show:false,
  1093. lineStyle:{
  1094. color:'#fff',//改变X轴颜色
  1095. }
  1096. },
  1097. splitLine: { // 分隔线
  1098. show: false, // 默认显示,属性show控制显示与否
  1099. lineStyle: { // 属性lineStyle(详见lineStyle)控制线条样式
  1100. color: ['rgba(44,118,239,1)'],
  1101. width: 1,
  1102. type: 'solid',
  1103. opacity:0.1
  1104. },
  1105. },
  1106. boundaryGap: [0, 0.01]
  1107. },
  1108. yAxis: {
  1109. type: 'category',
  1110. axisLabel: {
  1111. textStyle: {//改变X轴字体颜色
  1112. color: '#fff',
  1113. fontSize:14,
  1114. },
  1115. },
  1116. axisTick:{//去掉X轴刻度
  1117. show:false,
  1118. },
  1119. axisLine:{
  1120. show:false,
  1121. lineStyle:{
  1122. color:'#2C76EF',//改变X轴颜色
  1123. }
  1124. },
  1125. data: dataX
  1126. },
  1127. series: [
  1128. {
  1129. name: '安全隐患',
  1130. type: 'bar',
  1131. barGap: 0.1,
  1132. barMaxWidth: '20%',
  1133. label: {
  1134. normal: {
  1135. show: true,
  1136. position: 'right',
  1137. fontSize: 14,
  1138. textStyle: {
  1139. color: '#fff',
  1140. }
  1141. }
  1142. },
  1143. itemStyle: {
  1144. normal: {
  1145. barBorderRadius: 5, //统计条弧度
  1146. color: {
  1147. colorStops: [{
  1148. offset: 0,
  1149. color: '#1CC3F5' // 0% 处的颜色
  1150. }, {
  1151. offset: 1,
  1152. color: '#006FFF' // 100% 处的颜色
  1153. }],
  1154. globalCoord: false, // 缺省为 false
  1155. }
  1156. },
  1157. },
  1158. data: dataValue
  1159. },
  1160. ]
  1161. };
  1162. var left_t_b = this.$echarts.init(document.getElementById('right_m_l_b'));
  1163. left_t_b.setOption(safetyOption);
  1164. //定时动画
  1165. clearInterval(chartReload4);
  1166. var chartReload4 = setInterval(function(){
  1167. left_t_b.clear();
  1168. left_t_b.setOption(safetyOption);
  1169. },1000*5);
  1170. },
  1171. /*危险源统计*/
  1172. riskFun:function(dataX) {
  1173. let riskOption = {
  1174. color: ['#58aecf', '#3b43cc', '#84bb77','#ebb474','#9b43ce'],//颜色
  1175. legend: {
  1176. type: 'scroll',
  1177. orient: 'vertical',
  1178. itemGap:20,
  1179. itemWidth :14,
  1180. textStyle:{
  1181. color:'#fff',
  1182. fontSize:14,
  1183. },
  1184. left: '5%',
  1185. top: '20%',
  1186. },
  1187. series: [
  1188. {
  1189. type: 'pie',
  1190. radius: ['30%', '70%'],
  1191. center: ['74%', '50%'],
  1192. roseType: 'area',
  1193. label: {
  1194. normal: {
  1195. show: false,
  1196. },
  1197. },
  1198. itemStyle: {
  1199. borderRadius: 0
  1200. },
  1201. data:dataX,
  1202. /*data: [
  1203. { value: 40, name: '危险品 40%' },
  1204. { value: 38, name: '气瓶数量 30%' },
  1205. { value: 32, name: '冷热设备数量 20%' },
  1206. { value: 30, name: '特种设备数量 15%' },
  1207. { value: 28, name: '其他' },
  1208. ]*/
  1209. }
  1210. ]
  1211. };
  1212. var right_m_b = this.$echarts.init(document.getElementById('right_m_r_b'));
  1213. right_m_b.setOption(riskOption);
  1214. //定时动画
  1215. clearInterval(chartReload5);
  1216. var chartReload5 = setInterval(function(){
  1217. right_m_b.clear();
  1218. right_m_b.setOption(riskOption);
  1219. },1000*6);
  1220. },
  1221. /*实验室分级统计*/
  1222. classifyFun(dataX){
  1223. var colorList = ['#d02c2c', '#ff9b17', '#0183fa','#0a9419'];
  1224. let classifyOption = {
  1225. series: [{
  1226. type: 'pie',
  1227. z: 3,
  1228. center: ['45%', '55%'],
  1229. radius: ['40%', '55%'],
  1230. clockwise: true,
  1231. avoidLabelOverlap: true,
  1232. hoverOffset: 15,
  1233. itemStyle: {
  1234. normal: {
  1235. color: function(params) {
  1236. return colorList[params.dataIndex]
  1237. }
  1238. }
  1239. },
  1240. label: {
  1241. normal: {
  1242. formatter: (params) => {
  1243. return '{b|' + params.name + '}' + '{c|(' + params.value + ')}'+ '{a|' +params.percent.toFixed(0)+ ' %}'
  1244. },
  1245. borderWidth: 0,
  1246. borderRadius: 4,
  1247. padding: [0, -10],
  1248. height: 30,
  1249. fontSize: 12,
  1250. align: 'center',
  1251. color: '#fff',
  1252. rich: {
  1253. b: {
  1254. fontSize: 12,
  1255. lineHeight: 12,
  1256. color: '#fff',
  1257. },
  1258. c: {
  1259. fontSize: 12,
  1260. lineHeight: 12,
  1261. color: '#fff'
  1262. },
  1263. d: {
  1264. fontSize: 12,
  1265. lineHeight: 12,
  1266. color: '#fff',
  1267. },
  1268. }
  1269. }
  1270. },
  1271. labelLine: {
  1272. normal: {
  1273. length: 20,
  1274. length2: 16,
  1275. lineStyle: {
  1276. width: 1,
  1277. color:'#fff'
  1278. }
  1279. }
  1280. },
  1281. data: dataX
  1282. }]
  1283. };
  1284. var right_b_r_b_b = this.$echarts.init(document.getElementById('right_b_r_b_b'));
  1285. right_b_r_b_b.setOption(classifyOption);
  1286. //定时动画
  1287. clearInterval(chartReload6);
  1288. var chartReload6 = setInterval(function(){
  1289. right_b_r_b_b.clear();
  1290. right_b_r_b_b.setOption(classifyOption);
  1291. },1000*6);
  1292. },
  1293. },
  1294. mounted: function () {
  1295. let _this=this;
  1296. _this.getAjaxData();
  1297. _this.warningInfoFun();
  1298. _this.infoFun();
  1299. _this.workPlanFun();
  1300. _this.safetyInspectFun();
  1301. _this.initSwiper();
  1302. _this.subscriptionMQTT();
  1303. // let timer = setInterval(() => {
  1304. // _this.getAjaxData();
  1305. // _this.infoFun();
  1306. // _this.workPlanFun();
  1307. // _this.safetyInspectFun();
  1308. // },12000)
  1309. //中间部分点击方法
  1310. $(".left_t_c li").click(function(){
  1311. let index = $(".left_t_c li").index(this);
  1312. _this.mySwiper.slideTo(index, 1000, false);
  1313. $(this).parent().children().removeClass();
  1314. $(this).addClass("checked_li");
  1315. });
  1316. },
  1317. }
  1318. </script>
  1319. <!-- Add "scoped" attribute to limit CSS to this component only -->
  1320. <style lang="scss" scoped>
  1321. @function rw($px){
  1322. @return $px*100/1920 *1vw;
  1323. }
  1324. @function rh($px){
  1325. @return $px*100/1080 *1vh;
  1326. }
  1327. * {
  1328. padding: 0;
  1329. margin: 0;
  1330. box-sizing: border-box;
  1331. }
  1332. .over2{
  1333. overflow: hidden;
  1334. display: -webkit-box;
  1335. text-overflow: ellipsis;
  1336. -webkit-line-clamp: 2;
  1337. -webkit-box-orient: vertical;
  1338. }
  1339. .main {
  1340. width: rw(1920);
  1341. height: rh(1080);
  1342. /* background: url("../img/index_bg.png") no-repeat;
  1343. background-size: 100% 100%;*/
  1344. position: relative;
  1345. left: 0;
  1346. top: 0;
  1347. z-index: 50;
  1348. .bg_img{
  1349. width: rw(1920);
  1350. height: rh(1080);
  1351. position: absolute;
  1352. left: 0;
  1353. top: 0;
  1354. z-index: 50;
  1355. }
  1356. /*公共小标题*/
  1357. .small_title {
  1358. width: 100%;
  1359. display: flex;
  1360. justify-content: space-between;
  1361. .small_title_l{
  1362. font-size: rh(18);
  1363. font-family: Source Han Sans CN;
  1364. font-weight: bold;
  1365. color: #1ED0F8;
  1366. line-height: rh(18);
  1367. }
  1368. .small_title_r{
  1369. width: rw(300);
  1370. text-align: right;
  1371. >i{
  1372. width: rw(200);
  1373. display: inline-block;
  1374. font-size: rh(14);
  1375. font-family: Source Han Sans CN;
  1376. font-weight: 400;
  1377. color: #FFFFFF;
  1378. line-height: rh(14);
  1379. text-align: right;
  1380. margin-right: rw(12);
  1381. }
  1382. >img{
  1383. width: rw(12);
  1384. height: rh(12);
  1385. cursor: pointer;
  1386. position: relative;
  1387. top: rh(0);
  1388. }
  1389. }
  1390. .small_title_r2{
  1391. width: rw(140);
  1392. text-align: right;
  1393. >i{
  1394. width: rw(100);
  1395. display: inline-block;
  1396. font-size: rh(14);
  1397. font-family: Source Han Sans CN;
  1398. font-weight: 400;
  1399. color: #FFFFFF;
  1400. line-height: rh(14);
  1401. text-align: right;
  1402. margin-right: rw(12);
  1403. }
  1404. >img{
  1405. width: rw(12);
  1406. height: rh(12);
  1407. cursor: pointer;
  1408. position: relative;
  1409. top: rh(-2);
  1410. }
  1411. }
  1412. }
  1413. .header {
  1414. width: 100%;
  1415. position: absolute;
  1416. left: rw(0);
  1417. top: rh(0);
  1418. z-index: 50;
  1419. display: flex;
  1420. justify-content: flex-start;
  1421. .header_l{
  1422. width: rw(182);
  1423. height: rh(44);
  1424. margin: rh(10) 0 0 rw(40);
  1425. }
  1426. .header_c{
  1427. width: rw(1180);
  1428. height: rh(152);
  1429. margin-left: rw(136);
  1430. background: url("~@/assets/image/index_icon2.png") no-repeat;
  1431. background-size: 100% 100%;
  1432. font-size: rh(30);
  1433. font-family: Microsoft YaHei;
  1434. font-weight: bold;
  1435. color: #FFFFFF;
  1436. line-height:rh(30);
  1437. text-align: center;
  1438. padding-top: rh(26);
  1439. }
  1440. .header_r1{
  1441. margin-left: rw(116);
  1442. height: rh(64);
  1443. display: flex;
  1444. justify-content: flex-start;
  1445. cursor: pointer;
  1446. align-items: center;
  1447. .header_r1_l{
  1448. width: rw(24);
  1449. height: rh(24);
  1450. }
  1451. >i{
  1452. font-size: rh(18);
  1453. font-family: Source Han Sans CN;
  1454. font-weight: 400;
  1455. color: #FFFFFF;
  1456. line-height: rh(18);
  1457. margin-left: rw(14);
  1458. display: inline-block;
  1459. width: rw(154);
  1460. }
  1461. .header_r1_r{
  1462. width: rw(24);
  1463. height: rh(24);
  1464. }
  1465. }
  1466. }
  1467. .left{
  1468. position: absolute;
  1469. left: rw(52);
  1470. top: rh(66);
  1471. z-index: 50;
  1472. .left_t{
  1473. display: flex;
  1474. justify-content: flex-start;
  1475. .left_t_l{
  1476. width: rw(18);
  1477. height: rh(166);
  1478. margin-top: rh(40);
  1479. }
  1480. .left_t_l1{
  1481. width: rw(4);
  1482. height: rh(446);
  1483. background: #004C95;
  1484. margin-left: rw(4);
  1485. }
  1486. .left_t_c{
  1487. margin-top: rh(68);
  1488. >li{
  1489. width: rw(308);
  1490. height: rh(74);
  1491. background: url("~@/assets/image/index_icon6.png") no-repeat;
  1492. background-size: 100% 100%;
  1493. font-size: rh(34);
  1494. font-family: Source Han Sans CN;
  1495. font-weight: 400;
  1496. line-height: rh(80);
  1497. color: #FFFFFF;
  1498. padding-left: rw(120);
  1499. margin-bottom: rh(40);
  1500. cursor: pointer;
  1501. }
  1502. >li:nth-of-type(4){
  1503. margin-bottom: 0;
  1504. }
  1505. .checked_li{
  1506. background: url("~@/assets/image/index_icon7.png") no-repeat;
  1507. background-size: 100% 100%;
  1508. }
  1509. .unchecked{
  1510. background: url("~@/assets/image/index_icon6.png") no-repeat;
  1511. background-size: 100% 100%;
  1512. }
  1513. }
  1514. .left_t_n{
  1515. overflow: hidden;
  1516. width: rw(672);
  1517. height: rh(406);
  1518. margin-left: rw(36);
  1519. margin-top: rh(82);
  1520. /*校院通知*/
  1521. .left_t_r{
  1522. width: rw(672);
  1523. height: rh(406);
  1524. background: url("~@/assets/image/index_icon9.png") no-repeat;
  1525. background-size: 100% 100%;
  1526. padding: rh(12) rw(28) 0;
  1527. box-sizing: border-box;
  1528. >li{
  1529. width: 100%;
  1530. height: rh(90);
  1531. border-bottom: 1px solid #2098B7;
  1532. padding-top: rh(18);
  1533. .left_t_r_t{
  1534. height: rh(16);
  1535. display: flex;
  1536. justify-content: flex-start;
  1537. align-items: center;
  1538. >i{
  1539. display: inline-block;
  1540. font-size: rh(16);
  1541. font-family: Source Han Sans CN;
  1542. font-weight: 400;
  1543. color: #FFFFFF;
  1544. line-height: rh(16);
  1545. }
  1546. >i:nth-of-type(1){
  1547. width: rw(242);
  1548. white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  1549. margin-right: rw(20);
  1550. }
  1551. >i:nth-of-type(2){
  1552. width: rw(208);
  1553. }
  1554. >i:nth-of-type(3){
  1555. width: rw(128);
  1556. }
  1557. >img{
  1558. width: rw(12);
  1559. height: rh(12);
  1560. cursor: pointer;
  1561. }
  1562. }
  1563. .left_t_r_b{
  1564. margin-top: rh(12);
  1565. font-size: rh(14);
  1566. font-family: Source Han Sans CN;
  1567. font-weight: 400;
  1568. color: #FFFFFF;
  1569. line-height: rh(18);
  1570. }
  1571. }
  1572. }
  1573. /*工作计划*/
  1574. .left_t_r2{
  1575. width: rw(672);
  1576. height: rh(406);
  1577. background: url("~@/assets/image/index_icon9.png") no-repeat;
  1578. background-size: 100% 100%;
  1579. padding: rh(10) rw(16) 0;
  1580. box-sizing: border-box;
  1581. .left_t_r2_t{
  1582. width: 100%;
  1583. height: rh(50);
  1584. display: flex;
  1585. justify-content: flex-start;
  1586. align-items: center;
  1587. >i{
  1588. width: rw(624);
  1589. display: inline-block;
  1590. font-size: rh(18);
  1591. font-family: Source Han Sans CN;
  1592. font-weight: 400;
  1593. color: #FFFFFF;
  1594. line-height: rh(50);
  1595. text-align: center;
  1596. }
  1597. >img{
  1598. width: rw(12);
  1599. height: rh(12);
  1600. cursor: pointer;
  1601. }
  1602. }
  1603. .left_t_r2_m{
  1604. background: rgba(15, 96, 124, 0.2);
  1605. height: rh(50);
  1606. width: 100%;
  1607. display: flex;
  1608. justify-content: flex-start;
  1609. >i{
  1610. display: inline-block;
  1611. font-size: rh(16);
  1612. font-family: Source Han Sans CN;
  1613. font-weight: 400;
  1614. color: #FFFFFF;
  1615. line-height: rh(50);
  1616. white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  1617. }
  1618. >i:nth-of-type(1){
  1619. width: rw(272);
  1620. margin-left: rw(22);
  1621. margin-right: rw(20);
  1622. }
  1623. >i:nth-of-type(2){
  1624. width: rw(214);
  1625. }
  1626. >i:nth-of-type(3){
  1627. width: rw(100);
  1628. }
  1629. }
  1630. .left_t_r2_b{
  1631. >li{
  1632. height: rh(40);
  1633. width: 100%;
  1634. display: flex;
  1635. justify-content: flex-start;
  1636. align-items: center;
  1637. >i{
  1638. display: inline-block;
  1639. font-size: rh(16);
  1640. font-family: Source Han Sans CN;
  1641. font-weight: 400;
  1642. color: #FFFFFF;
  1643. line-height: rh(40);
  1644. white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  1645. }
  1646. >i:nth-of-type(1){
  1647. width: rw(272);
  1648. margin-left: rw(22);
  1649. margin-right: rw(20);
  1650. }
  1651. >i:nth-of-type(2){
  1652. width: rw(214);
  1653. }
  1654. >i:nth-of-type(3){
  1655. // width: rw(146);
  1656. width: rw(100);
  1657. }
  1658. >img{
  1659. width:rw(12);
  1660. height: rh(12);
  1661. margin-left: rw(10);
  1662. }
  1663. }
  1664. >li:nth-of-type(even){
  1665. background: rgba(41, 124, 158, 0.2);
  1666. }
  1667. }
  1668. }
  1669. /*安全检查*/
  1670. .left_t_r3{
  1671. width: rw(672);
  1672. height: rh(406);
  1673. background: url("~@/assets/image/index_icon9.png") no-repeat;
  1674. background-size: 100% 100%;
  1675. padding: rh(10) rw(16) 0;
  1676. box-sizing: border-box;
  1677. .left_t_r2_t{
  1678. width: 100%;
  1679. display: flex;
  1680. justify-content: flex-start;
  1681. align-items: center;
  1682. margin-top: rh(26);
  1683. >i{
  1684. width: rw(624);
  1685. display: inline-block;
  1686. font-size: rh(18);
  1687. font-family: Source Han Sans CN;
  1688. font-weight: 400;
  1689. color: #FFFFFF;
  1690. line-height: rh(18);
  1691. text-align: center;
  1692. }
  1693. >img{
  1694. width: rw(12);
  1695. height: rh(12);
  1696. cursor: pointer;
  1697. }
  1698. }
  1699. .left_t_r2_t2{
  1700. width: 100%;
  1701. height: rh(56);
  1702. display: flex;
  1703. justify-content: flex-start;
  1704. align-items: center;
  1705. >i{
  1706. width: rw(624);
  1707. display: inline-block;
  1708. font-size: rh(16);
  1709. font-family: Source Han Sans CN;
  1710. font-weight: 400;
  1711. color: #FFFFFF;
  1712. line-height: rh(56);
  1713. text-align: center;
  1714. }
  1715. }
  1716. .left_t_r2_m{
  1717. background: rgba(15, 96, 124, 0.2);
  1718. height: rh(50);
  1719. width: 100%;
  1720. display: flex;
  1721. justify-content: flex-start;
  1722. >i{
  1723. display: inline-block;
  1724. font-size: rh(16);
  1725. font-family: Source Han Sans CN;
  1726. font-weight: 400;
  1727. color: #FFFFFF;
  1728. line-height: rh(50);
  1729. white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  1730. }
  1731. >i:nth-of-type(1){
  1732. width: rw(184);
  1733. margin-left: rw(22);
  1734. }
  1735. >i:nth-of-type(2){
  1736. width: rw(110);
  1737. }
  1738. >i:nth-of-type(3){
  1739. width: rw(106);
  1740. }
  1741. >i:nth-of-type(4){
  1742. width: rw(156);
  1743. }
  1744. >i:nth-of-type(5){
  1745. width: rw(72);
  1746. }
  1747. }
  1748. .left_t_r2_b{
  1749. >li{
  1750. height: rh(40);
  1751. width: 100%;
  1752. display: flex;
  1753. justify-content: flex-start;
  1754. >i{
  1755. display: inline-block;
  1756. font-size: rh(14);
  1757. font-family: Source Han Sans CN;
  1758. font-weight: 400;
  1759. color: #FFFFFF;
  1760. line-height: rh(40);
  1761. white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  1762. }
  1763. >i:nth-of-type(1){
  1764. width: rw(184);
  1765. margin-left: rw(22);
  1766. }
  1767. >i:nth-of-type(2){
  1768. width: rw(110);
  1769. }
  1770. >i:nth-of-type(3){
  1771. width: rw(106);
  1772. }
  1773. >i:nth-of-type(4){
  1774. width: rw(156);
  1775. }
  1776. >i:nth-of-type(5){
  1777. width: rw(72);
  1778. }
  1779. >img{
  1780. width:rw(12);
  1781. height: rh(12);
  1782. }
  1783. }
  1784. >li:nth-of-type(even){
  1785. background: rgba(41, 124, 158, 0.2);
  1786. }
  1787. }
  1788. }
  1789. /*分级管控*/
  1790. .left_t_r4{
  1791. width: rw(672);
  1792. height: rh(406);
  1793. background: url("~@/assets/image/index_icon9.png") no-repeat;
  1794. background-size: 100% 100%;
  1795. padding: rh(10) rw(16) 0;
  1796. box-sizing: border-box;
  1797. .left_t_r2_t{
  1798. width: 100%;
  1799. height: rh(50);
  1800. display: flex;
  1801. justify-content: flex-start;
  1802. align-items: center;
  1803. >i{
  1804. width: rw(624);
  1805. display: inline-block;
  1806. font-size: rh(18);
  1807. font-family: Source Han Sans CN;
  1808. font-weight: 400;
  1809. color: #FFFFFF;
  1810. line-height: rh(50);
  1811. text-align: center;
  1812. }
  1813. >img{
  1814. width: rw(12);
  1815. height: rh(12);
  1816. cursor: pointer;
  1817. }
  1818. }
  1819. .left_t_r2_m{
  1820. background: rgba(15, 96, 124, 0.2);
  1821. height: rh(50);
  1822. width: 100%;
  1823. display: flex;
  1824. justify-content: flex-start;
  1825. >i{
  1826. display: inline-block;
  1827. font-size: rh(16);
  1828. font-family: Source Han Sans CN;
  1829. font-weight: 400;
  1830. color: #FFFFFF;
  1831. line-height: rh(50);
  1832. white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  1833. }
  1834. >i:nth-of-type(1){
  1835. width: rw(150);
  1836. margin-left: rw(22);
  1837. }
  1838. >i:nth-of-type(2){
  1839. width: rw(68);
  1840. }
  1841. >i:nth-of-type(3){
  1842. width: rw(60);
  1843. }
  1844. >i:nth-of-type(4){
  1845. width: rw(102);
  1846. }
  1847. >i:nth-of-type(5){
  1848. width: rw(108);
  1849. }
  1850. >i:nth-of-type(6){
  1851. width: rw(140);
  1852. }
  1853. }
  1854. .left_t_r2_b{
  1855. >li{
  1856. height: rh(40);
  1857. width: 100%;
  1858. display: flex;
  1859. justify-content: flex-start;
  1860. >i{
  1861. display: inline-block;
  1862. font-size: rh(16);
  1863. font-family: Source Han Sans CN;
  1864. font-weight: 400;
  1865. color: #FFFFFF;
  1866. line-height: rh(40);
  1867. white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  1868. }
  1869. >i:nth-of-type(1){
  1870. width: rw(150);
  1871. margin-left: rw(22);
  1872. }
  1873. >i:nth-of-type(2){
  1874. width: rw(68);
  1875. }
  1876. >i:nth-of-type(3){
  1877. width: rw(60);
  1878. }
  1879. >i:nth-of-type(4){
  1880. width: rw(102);
  1881. }
  1882. >i:nth-of-type(5){
  1883. width: rw(108);
  1884. }
  1885. >i:nth-of-type(6){
  1886. width: rw(140);
  1887. }
  1888. .left_t_r2_b_i6{
  1889. width: rw(140);
  1890. display: flex;
  1891. justify-content: flex-start;
  1892. align-items: center;
  1893. >progress{
  1894. width: rw(90);
  1895. }
  1896. >i{
  1897. display: inline-block;
  1898. width: rw(40);
  1899. font-size: rh(14);
  1900. font-family: Microsoft YaHei;
  1901. font-weight: 400;
  1902. color: #FFFFFF;
  1903. margin-left: rw(6);
  1904. }
  1905. }
  1906. }
  1907. .controlColorOne{
  1908. color: #FF4448;
  1909. }
  1910. .controlColorTow{
  1911. color: #F98556;
  1912. }
  1913. .controlColorThree{
  1914. color: #46AF2D;
  1915. }
  1916. .controlColorFour{
  1917. color: #5688F9;
  1918. }
  1919. >li:nth-of-type(even){
  1920. background: rgba(41, 124, 158, 0.2);
  1921. }
  1922. }
  1923. }
  1924. }
  1925. }
  1926. .left_b{
  1927. width: rw(1027);
  1928. height: rh(452);
  1929. background: url("~@/assets/image/index_icon10.png") no-repeat;
  1930. background-size: 100% 100%;
  1931. margin-top: rh(20);
  1932. margin-left: rw(16);
  1933. .left_b_t{
  1934. display: flex;
  1935. justify-content: flex-start;
  1936. .left_b_t_l{
  1937. width: rw(482);
  1938. padding-top: rh(28);
  1939. margin-left: rw(14);
  1940. .left_b_t_l_b{
  1941. width: rw(482);
  1942. height: rh(268);
  1943. }
  1944. }
  1945. .left_b_t_r{
  1946. width: rw(468);
  1947. padding-top: rh(28);
  1948. margin-left: rw(34);
  1949. .left_b_t_r_b{
  1950. width: rw(468);
  1951. height: rh(268);
  1952. }
  1953. }
  1954. }
  1955. .left_b_t1{
  1956. width: rw(952);
  1957. height: rh(2);
  1958. margin-left: rw(48);
  1959. }
  1960. .left_b_b{
  1961. width: 100%;
  1962. height: rh(112);
  1963. overflow: hidden;
  1964. background: 0;
  1965. >ul{
  1966. /*height: rh(2000);*/
  1967. animation-name: move;
  1968. //animation-duration: 6s;
  1969. /* 设置无限循环 */
  1970. animation-timing-function: linear; // 动画速度曲线,匀速
  1971. animation-iteration-count: infinite; // 动画循环无限次播放
  1972. >li{
  1973. width: rw(966);
  1974. height: auto;
  1975. margin: 0 rw(30);
  1976. background: rgba(30, 118, 142, 0.2);
  1977. margin-bottom: rh(12);
  1978. padding: rh(12) 0;
  1979. box-sizing: border-box;
  1980. .left_b_b_t{
  1981. display: flex;
  1982. justify-content: flex-start;
  1983. >i{
  1984. display: inline-block;
  1985. font-size: rh(16);
  1986. font-family: Source Han Sans CN;
  1987. font-weight: bold;
  1988. color: #00FAFF;
  1989. line-height: rh(16);
  1990. }
  1991. >i:nth-of-type(1){
  1992. margin-right: rw(42);
  1993. margin-left: rw(12);
  1994. }
  1995. >i:nth-of-type(2){
  1996. font-weight: bold;
  1997. margin-right: rw(8);
  1998. }
  1999. >i:nth-of-type(3){
  2000. color: #00AA3C;
  2001. }
  2002. }
  2003. .left_b_b_b{
  2004. width: 100%;
  2005. display: flex;
  2006. justify-content: flex-start;
  2007. overflow: hidden;
  2008. margin-top: rh(16);
  2009. margin-left: rw(12);
  2010. flex-wrap: wrap;
  2011. >i{
  2012. display: inline-block;
  2013. font-size: rh(14);
  2014. font-family: Source Han Sans CN;
  2015. font-weight: 400;
  2016. color: #FFFFFF;
  2017. line-height:rh(18);
  2018. margin-right: rw(30);
  2019. }
  2020. }
  2021. }
  2022. }
  2023. }
  2024. .left_b_b:hover>ul
  2025. {
  2026. cursor: pointer;
  2027. animation-play-state: paused ;
  2028. }
  2029. .showClass{
  2030. display: block;
  2031. }
  2032. /*风险预案*/
  2033. .risk{
  2034. width: rw(1028);
  2035. height: rh(458);
  2036. position: absolute;
  2037. left: rw(0);
  2038. top: rh(512);
  2039. z-index: 200;
  2040. display: flex;
  2041. justify-content: flex-start;
  2042. flex-wrap: wrap;
  2043. align-items: center;
  2044. padding-left: rw(34);
  2045. padding-top: rh(50);
  2046. overflow-y: auto;
  2047. display: none;
  2048. >li{
  2049. -webkit-animation: ani 2s linear infinite;
  2050. background: url("~@/assets/image/index_icon13.png") no-repeat;
  2051. background-size: 100% 100%;
  2052. width:100%;
  2053. height: rh(100);
  2054. display: flex;
  2055. justify-content: flex-start;
  2056. align-items: center;
  2057. margin-bottom: rh(40);
  2058. >img{
  2059. width: rw(40);
  2060. height: rh(40);
  2061. margin-left: rw(28);
  2062. margin-right: rw(12);
  2063. }
  2064. >i{
  2065. display: inline-block;
  2066. font-size: rh(18);
  2067. font-family: Source Han Sans CN;
  2068. font-weight: bold;
  2069. color: #FFFFFF;
  2070. line-height: rh(22);
  2071. }
  2072. >i:nth-of-type(1){
  2073. font-size: rh(22);
  2074. width: rw(144);
  2075. }
  2076. >i:nth-of-type(2){
  2077. width: rw(76);
  2078. }
  2079. >i:nth-of-type(3){
  2080. width: rw(288);
  2081. }
  2082. >i:nth-of-type(4){
  2083. width: rw(248);
  2084. }
  2085. >i:nth-of-type(5){
  2086. width: rw(120);
  2087. }
  2088. }
  2089. .one_top{
  2090. margin-top: rh(276);
  2091. }
  2092. }
  2093. .risk_one{
  2094. width: rw(956);
  2095. height: rh(100);
  2096. position: absolute;
  2097. left: rw(34);
  2098. top: rh(838);
  2099. z-index: 200;
  2100. justify-content: flex-start;
  2101. flex-wrap: wrap;
  2102. align-items: center;
  2103. overflow: hidden;
  2104. >li{
  2105. -webkit-animation: ani 2s linear infinite;
  2106. background: url("~@/assets/image/index_icon13.png") no-repeat;
  2107. background-size: 100% 100%;
  2108. width:100%;
  2109. height: rh(100);
  2110. display: flex;
  2111. justify-content: flex-start;
  2112. align-items: center;
  2113. margin-bottom: rh(40);
  2114. >img{
  2115. width: rw(40);
  2116. height: rh(40);
  2117. margin-left: rw(28);
  2118. margin-right: rw(12);
  2119. }
  2120. >i{
  2121. display: inline-block;
  2122. font-size: rh(18);
  2123. font-family: Source Han Sans CN;
  2124. font-weight: bold;
  2125. color: #FFFFFF;
  2126. line-height: rh(22);
  2127. }
  2128. >i:nth-of-type(1){
  2129. font-size: rh(22);
  2130. width: rw(144);
  2131. }
  2132. >i:nth-of-type(2){
  2133. width: rw(76);
  2134. }
  2135. >i:nth-of-type(3){
  2136. width: rw(288);
  2137. }
  2138. >i:nth-of-type(4){
  2139. width: rw(248);
  2140. }
  2141. >i:nth-of-type(5){
  2142. width: rw(120);
  2143. }
  2144. }
  2145. }
  2146. }
  2147. }
  2148. .right{
  2149. width: rw(748);
  2150. height: rh(880);
  2151. position: absolute;
  2152. right: rw(62);
  2153. top: rh(148);
  2154. z-index: 50;
  2155. background: url("~@/assets/image/index_icon11.png") no-repeat;
  2156. background-size: 100% 100%;
  2157. padding: rh(34) rw(30) 0 rw(34);
  2158. box-sizing: border-box;
  2159. .right_t{
  2160. width: rw(684);
  2161. .right_t_b{
  2162. width: rw(684);
  2163. height: rh(226);
  2164. }
  2165. }
  2166. .right_m{
  2167. margin-top: rh(26);
  2168. display: flex;
  2169. justify-content: flex-start;
  2170. .right_m_l{
  2171. width: rw(304);
  2172. .right_m_l_b{
  2173. width: rw(304);
  2174. height: rh(214);
  2175. }
  2176. }
  2177. .right_m_r{
  2178. margin-left: rw(46);
  2179. .right_m_r_b{
  2180. width: rw(334);
  2181. height: rh(214);
  2182. }
  2183. }
  2184. }
  2185. .right_b{
  2186. margin-top: rh(18);
  2187. display: flex;
  2188. justify-content: space-between;
  2189. .right_b_l{
  2190. width: rw(304);
  2191. /*小标题*/
  2192. .small_title {
  2193. width: 100%;
  2194. display: flex;
  2195. justify-content: space-between;
  2196. .small_title_l{
  2197. font-size: rh(18);
  2198. font-family: Source Han Sans CN;
  2199. font-weight: bold;
  2200. color: #1ED0F8;
  2201. line-height: rh(18);
  2202. }
  2203. .small_title_r{
  2204. flex: 1;
  2205. text-align: right;
  2206. >i{
  2207. width: rw(100);
  2208. display: inline-block;
  2209. font-size: rh(14);
  2210. font-family: Source Han Sans CN;
  2211. font-weight: 400;
  2212. color: #FFFFFF;
  2213. line-height: rh(14);
  2214. text-align: right;
  2215. margin-right: rw(12);
  2216. }
  2217. >img{
  2218. width: rw(12);
  2219. height: rh(12);
  2220. cursor: pointer;
  2221. position: relative;
  2222. top: rh(0);
  2223. }
  2224. }
  2225. .small_title_r2{
  2226. width: rw(140);
  2227. text-align: right;
  2228. >i{
  2229. width: rw(100);
  2230. display: inline-block;
  2231. font-size: rh(14);
  2232. font-family: Source Han Sans CN;
  2233. font-weight: 400;
  2234. color: #FFFFFF;
  2235. line-height: rh(14);
  2236. text-align: right;
  2237. margin-right: rw(12);
  2238. }
  2239. >img{
  2240. width: rw(12);
  2241. height: rh(12);
  2242. cursor: pointer;
  2243. position: relative;
  2244. top: rh(-2);
  2245. }
  2246. }
  2247. }
  2248. .right_b_l_b{
  2249. position: relative;
  2250. .right_b_l_b_t{
  2251. height: rh(48);
  2252. display: flex;
  2253. justify-content: flex-start;
  2254. border-bottom: 1px solid #00FAFF;
  2255. margin-top: rh(16);
  2256. >i{
  2257. display: inline-block;
  2258. font-size: rh(16);
  2259. font-family: Microsoft YaHei;
  2260. font-weight: 400;
  2261. color: #00FAFF;
  2262. line-height: rh(48);
  2263. margin-left: rw(6);
  2264. }
  2265. >i:nth-of-type(1){
  2266. width: rw(223);
  2267. }
  2268. >i:nth-of-type(2){
  2269. width: rw(84);
  2270. }
  2271. }
  2272. .right_b_l_b_b{
  2273. height: rh(190);
  2274. overflow-y: auto;
  2275. background: 0;
  2276. >li{
  2277. height: rh(40);
  2278. display: flex;
  2279. justify-content: flex-start;
  2280. border-bottom: 1px solid #00DFFF;
  2281. >a{
  2282. width: rw(223);
  2283. display: inline-block;
  2284. font-size: rh(14);
  2285. font-family: Microsoft YaHei;
  2286. font-weight: 400;
  2287. color: #fff;
  2288. line-height: rh(40);
  2289. margin-left: rw(6);
  2290. overflow:hidden;
  2291. text-overflow:ellipsis;
  2292. white-space:nowrap
  2293. }
  2294. >i{
  2295. width: rw(84);
  2296. text-align: center;
  2297. padding-right: rw(50);
  2298. display: inline-block;
  2299. font-size: rh(14);
  2300. font-family: Microsoft YaHei;
  2301. font-weight: 400;
  2302. color: #fff;
  2303. line-height: rh(40);
  2304. margin-left: rw(6);
  2305. }
  2306. }
  2307. }
  2308. }
  2309. }
  2310. .right_b_r{
  2311. width: rw(334);
  2312. /*小标题*/
  2313. .small_title {
  2314. width: 100%;
  2315. display: flex;
  2316. justify-content: space-between;
  2317. .small_title_l{
  2318. font-size: rh(18);
  2319. font-family: Source Han Sans CN;
  2320. font-weight: bold;
  2321. color: #1ED0F8;
  2322. line-height: rh(18);
  2323. }
  2324. }
  2325. .right_b_r_b_t{
  2326. display: flex;
  2327. justify-content: flex-start;
  2328. flex-wrap:wrap;
  2329. margin-top: rh(10);
  2330. >li{
  2331. display: flex;
  2332. justify-content: flex-start;
  2333. align-items: center;
  2334. margin-right: rw(30);
  2335. >i:nth-of-type(1){
  2336. width:rw(8);
  2337. height: rh(8);
  2338. background: #FFFFFF;
  2339. border-radius:rh(4);
  2340. margin-right: rw(4);
  2341. }
  2342. >i:nth-of-type(2){
  2343. font-size: rh(12);
  2344. font-family: Microsoft YaHei;
  2345. font-weight: 400;
  2346. color: #FFFFFF;
  2347. line-height: rh(32);
  2348. }
  2349. }
  2350. }
  2351. .right_b_r_b_b{
  2352. width: rw(344);
  2353. height: rh(204);
  2354. color: ['#E9BA44', '#0086F1', '#21B532','#1B96EA'],//颜色
  2355. }
  2356. }
  2357. }
  2358. }
  2359. }
  2360. /*滚动动画*/
  2361. @keyframes move{
  2362. 0%{
  2363. transform: translateY(0);
  2364. }
  2365. 100%{
  2366. transform: translateY(-70%);
  2367. }
  2368. }
  2369. </style>
  2370. <style lang="scss">
  2371. li{list-style:none}
  2372. i,em,b{font-style:normal;font-weight:100;}
  2373. body{margin: 0}
  2374. </style>