index.vue 42 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574
  1. <template>
  2. <div class="bodys">
  3. <!-- v-if="Object.keys(monitorInfo).length" -->
  4. <div class="edge" v-if="0">
  5. <div class="info" style="position: relative">
  6. <div class="info-wrapper">
  7. <!-- <div class="ps-info">
  8. <div class="ps-title">厂商名称:</div>
  9. <div class="ps-name">{{ otherInfo?.manufacturer }}</div>
  10. </div> -->
  11. <div class="ps-info" @click="handleXhClick(windInfo)">
  12. <div class="ps-title">设备型号:</div>
  13. <div class="ps-name">{{otherInfo?.manufacturer}} ( {{ otherInfo?.model }} )</div>
  14. </div>
  15. </div>
  16. <div class="info-wrapper">
  17. <div class="info-title" :class="colorList[monitorInfo.status]">
  18. <span class="text">设备名称: {{ windname }}</span>
  19. </div>
  20. <div class="wt-alarm" @click="handleAlarm(wtid)">
  21. <i
  22. class="svg-icon svg-icon-sm"
  23. :class="'svg-icon-' + colorList[monitorInfo.status]"
  24. >
  25. <svgIcon svgid="svg-station-surveillance"></svgIcon>
  26. </i>
  27. <span :class="colorList[monitorInfo.status]">设备报警</span>
  28. </div>
  29. </div>
  30. <div class="info-item">
  31. 日发电量
  32. <div class="info-value">
  33. {{ Number(monitorInfo?.rfdl).toFixed(2) || "0" }}
  34. <div class="unit">kWh</div>
  35. </div>
  36. </div>
  37. </div>
  38. <div class="monitoring">
  39. <div class="monitoring-item">
  40. <div class="point point-left bottom"></div>
  41. <div class="point point-right bottom"></div>
  42. 监测信息
  43. </div>
  44. <div class="wind-info-list">
  45. <div class="wind-info">
  46. 风速
  47. <div class="wind-value">
  48. {{ Number(monitorInfo?.fs).toFixed(2) }}
  49. <div class="unit">m/s</div>
  50. </div>
  51. </div>
  52. <div class="wind-info">
  53. 风向
  54. <div class="wind-value">
  55. {{ Number(monitorInfo?.fx).toFixed(2) }}
  56. <div class="unit">°</div>
  57. </div>
  58. </div>
  59. <div class="wind-info">
  60. 实时功率
  61. <div class="wind-value">
  62. {{ Number(monitorInfo?.ssgl).toFixed(2) }}
  63. <div class="unit">kW</div>
  64. </div>
  65. </div>
  66. <div class="wind-info">
  67. 无功功率
  68. <div class="wind-value">
  69. {{ Number(monitorInfo?.wggl).toFixed(2) }}
  70. <div class="unit">kW</div>
  71. </div>
  72. </div>
  73. <div class="wind-info">
  74. 理论功率
  75. <div class="wind-value">
  76. {{ Number(monitorInfo?.llgl).toFixed(2) }}
  77. <div class="unit">kW</div>
  78. </div>
  79. </div>
  80. <div class="wind-info">
  81. 保证功率
  82. <div class="wind-value">
  83. {{ Number(monitorInfo?.bzgl).toFixed(2) }}
  84. <div class="unit">kW</div>
  85. </div>
  86. </div>
  87. <div class="wind-info">
  88. 叶轮转速
  89. <div class="wind-value">
  90. {{ Number(monitorInfo?.ylzs).toFixed(2) }}
  91. <div class="unit">rpm</div>
  92. </div>
  93. </div>
  94. <div class="wind-info">
  95. 故障损失
  96. <div class="wind-value">
  97. {{ Number(monitorInfo?.gzss).toFixed(2) }}
  98. <div class="unit">kWh</div>
  99. </div>
  100. </div>
  101. <div class="wind-info">
  102. 检修损失
  103. <div class="wind-value">
  104. {{ Number(monitorInfo?.jxss).toFixed(2) }}
  105. <div class="unit">kWh</div>
  106. </div>
  107. </div>
  108. <div class="wind-info">
  109. 限电损失
  110. <div class="wind-value">
  111. {{ Number(monitorInfo?.xdss).toFixed(2) }}
  112. <div class="unit">kWh</div>
  113. </div>
  114. </div>
  115. <div class="wind-info">
  116. 性能损失
  117. <div class="wind-value">
  118. {{ Number(monitorInfo?.xnss).toFixed(2) }}
  119. <div class="unit">kWh</div>
  120. </div>
  121. </div>
  122. <div class="wind-info">
  123. 受累损失
  124. <div class="wind-value">
  125. {{ Number(monitorInfo?.slss).toFixed(2) }}
  126. <div class="unit">kWh</div>
  127. </div>
  128. </div>
  129. </div>
  130. </div>
  131. </div>
  132. <div class="parts">
  133. <div class="part-top">
  134. <div class="part-title">
  135. <div
  136. class="title-item part-left"
  137. :class="{ active: current === 'fdj' }"
  138. @click="handleClick('fdj')"
  139. >
  140. 发电机
  141. </div>
  142. <div
  143. v-if="otherInfo?.model != 'XE100-2000'"
  144. class="title-item"
  145. :class="{ active: current === 'clx' }"
  146. @click="handleClick('clx')"
  147. >
  148. 齿轮箱
  149. </div>
  150. <div
  151. class="title-item"
  152. :class="{ active: current === 'bj' }"
  153. @click="handleClick('bj')"
  154. >
  155. 变桨
  156. </div>
  157. <div
  158. class="title-item"
  159. :class="{ active: current === 'ph' }"
  160. @click="handleClick('ph')"
  161. >
  162. 偏航
  163. </div>
  164. <div
  165. class="title-item"
  166. :class="{ active: current === 'yy' }"
  167. @click="handleClick('yy')"
  168. >
  169. 液压
  170. </div>
  171. <div
  172. class="title-item"
  173. :class="{ active: current === 'jc' }"
  174. @click="handleClick('jc')"
  175. >
  176. 机舱信息
  177. </div>
  178. <!-- <div
  179. class="title-item part-right"
  180. :class="{ active: current === 'qt' }"
  181. @click="handleClick('qt')"
  182. >
  183. 其他
  184. </div> -->
  185. <div
  186. class="title-item part-right"
  187. :class="{ active: current === 'zz' }"
  188. @click="handleClick('zz')"
  189. >
  190. 主轴
  191. </div>
  192. </div>
  193. <div class="part-imgs" v-if="otherInfo?.model == 'XE100-2000'">
  194. <img
  195. class="wind-part"
  196. :style="{ width: flag ? '450px' : '500px' }"
  197. src="@assets/imgs/zqfj.png"
  198. />
  199. </div>
  200. <div class="part-imgs" v-else>
  201. <img
  202. v-if="current === 'fdj'"
  203. class="wind-part"
  204. :style="{ width: flag ? '650px' : '800px' }"
  205. src="@assets/imgs/fdj_b.png"
  206. />
  207. <img
  208. v-if="current === 'clx'"
  209. class="wind-part"
  210. :style="{ width: flag ? '650px' : '800px' }"
  211. src="@assets/imgs/clx_b.png"
  212. />
  213. <img
  214. v-if="current === 'bj'"
  215. class="wind-part"
  216. :style="{ width: flag ? '650px' : '800px' }"
  217. src="@assets/imgs/bj_b.png"
  218. />
  219. <img
  220. v-if="current === 'ph'"
  221. class="wind-part"
  222. :style="{ width: flag ? '650px' : '800px' }"
  223. src="@assets/imgs/ph_b.png"
  224. />
  225. <img
  226. v-if="current === 'yy'"
  227. class="wind-part"
  228. :style="{ width: flag ? '650px' : '800px' }"
  229. src="@assets/imgs/yy_b.png"
  230. />
  231. <img
  232. v-if="current === 'jc'"
  233. class="wind-part"
  234. :style="{ width: flag ? '650px' : '800px' }"
  235. src="@assets/imgs/jc_b.png"
  236. />
  237. <img
  238. v-if="current === 'qt'"
  239. class="wind-part"
  240. :style="{ width: flag ? '650px' : '800px' }"
  241. src="@assets/imgs/qt_b.png"
  242. />
  243. </div>
  244. </div>
  245. <div class="part-info">
  246. <div
  247. class="part-body"
  248. style="max-height: 25vh"
  249. >
  250. <div class="monitoring-item">
  251. <div class="point point-left bottom"></div>
  252. <div class="point point-right bottom"></div>
  253. 遥信值
  254. </div>
  255. <div class="part-item">
  256. <div
  257. class="part"
  258. :class="{ active: index % 2 === 1 }"
  259. v-for="(val, index) in partDInfos"
  260. :key="index"
  261. >
  262. <div class="table-item" v-for="(item, ind) in val" :key="ind">
  263. <div>{{ item.name }}</div>
  264. <div
  265. class="table-value"
  266. :class="item.value == 1 ? 'round-red' : 'round'"
  267. ></div>
  268. </div>
  269. </div>
  270. </div>
  271. </div>
  272. <div
  273. class="part-body"
  274. style="max-height: 25vh"
  275. >
  276. <div class="monitoring-item">
  277. <div class="point point-left bottom"></div>
  278. <div class="point point-right bottom"></div>
  279. 遥测值
  280. </div>
  281. <div class="part-item">
  282. <div
  283. class="part"
  284. :class="{ active: index % 2 === 1 }"
  285. v-for="(val, index) in partAInfos"
  286. :key="index"
  287. >
  288. <div class="table-item" v-for="(item, ind) in val" :key="ind">
  289. <div>{{ item.name }}</div>
  290. <div class="table-value">
  291. {{
  292. item.name.includes("状态")
  293. ? item.value
  294. : item.name == "总发电量"
  295. ? (item.value / 10000).toFixed(2)
  296. : Number(item.value).toFixed(2)
  297. }}
  298. <div v-if="item.valueUnit != 'NULL'" class="unit">
  299. {{ item.valueUnit }}
  300. </div>
  301. <div v-else class="unit"></div>
  302. </div>
  303. </div>
  304. </div>
  305. </div>
  306. </div>
  307. </div>
  308. </div>
  309. <div class="problems" style="color: #fff">
  310. <div class="problemTit">
  311. <div class="point point-left bottom"></div>
  312. <div class="point point-right bottom"></div>
  313. <span style="font-size: 16px;position: relative;top: -5px;">故障分类</span>
  314. <div class="problemSeach">
  315. <el-input v-model="inputcv" clearable placeholder="请输入" />
  316. <div class="seachBtn">
  317. <el-icon :size="18" :color="color">
  318. <Search />
  319. </el-icon>
  320. </div>
  321. </div>
  322. </div>
  323. <div class="problemMain">
  324. <div class="problemWarn">
  325. <div class="warn">
  326. <div class="warnCom">
  327. <div class="circle-container">
  328. <svg class="circle-segment segment-1" viewBox="0 0 100 100">
  329. <circle cx="50" cy="50" r="40"></circle>
  330. </svg>
  331. </div>
  332. <div class="warnComImg">
  333. <img src="@/assets/imgs/danger.png" alt="">
  334. </div>
  335. <div class="warnComNum">
  336. <div class="numTop">42</div>
  337. <div class="numBot">总故障</div>
  338. </div>
  339. </div>
  340. <div class="warnItems" v-for="(it, index) in 7" :key="index">
  341. <div class="warnItemLeft">20</div>
  342. <div class="warnItemRight">防雷保护类</div>
  343. </div>
  344. </div>
  345. <div class="warn" v-for="(it, index) in 2" :key="index">
  346. <div class="warnItems" v-for="(it, index) in 10" :key="index">
  347. <div class="warnItemLeft" :class="isRed(index)">20</div>
  348. <div class="warnItemRight" :class="isRed(index)">防雷保护类</div>
  349. </div>
  350. </div>
  351. </div>
  352. <div class="warnTable">
  353. <el-table
  354. size="mini"
  355. :data="tableData"
  356. style="width: 100%; height: calc(100% - 310px)"
  357. max-height="520px"
  358. stripe>
  359. <el-table-column
  360. v-for="item in tableHeader"
  361. :label="item.name"
  362. :prop="item.code"
  363. :key="item.code"
  364. :width="item.width || ''"
  365. show-overflow-tooltip
  366. header-align="center"
  367. align="center"
  368. >
  369. <template #default="scope">
  370. <span v-if="item.code == 'status'">
  371. <span :style="scope.row.status === 0 ? 'color: red' : ''">{{scope.row.status === 0 ? "异常" : "正常"}}</span>
  372. </span>
  373. <span v-else>
  374. {{
  375. scope.row[item.code] != "NULL" ? scope.row[item.code] : ""
  376. }}
  377. </span>
  378. </template>
  379. </el-table-column>
  380. </el-table>
  381. </div>
  382. </div>
  383. </div>
  384. <alarmDialog ref="alarmDialog" />
  385. <powerAndSpeed ref="powerAndSpeed" :tabEvent="-1" />
  386. </div>
  387. </template>
  388. <script>
  389. import {
  390. Search
  391. } from '@element-plus/icons-vue'
  392. import { GetWtPoints, GetPointsData } from "@/api/points/index.js";
  393. import powerAndSpeed from "@/components/powerAndSpeedSearch/index.vue";
  394. import {
  395. GetWtMonitorInfo,
  396. GetWtTelemeteryInfo,
  397. GetWtOtherInfo,
  398. GetMatrixalarmtype,
  399. GetMatrixalarmtypeTable
  400. } from "@/api/factoryMonitor/index.js";
  401. import svgIcon from "@/components/coms/icon/svg-icon.vue";
  402. import alarmDialog from "@/components/alarm";
  403. export default {
  404. name: "windDetail",
  405. data() {
  406. return {
  407. inputcv: "",
  408. current: "fdj",
  409. windname: "",
  410. wtid: "",
  411. wpid: "",
  412. windInfo: {},
  413. monitorInfo: {},
  414. otherInfo: {},
  415. partAInfo: [],
  416. partDInfo: [],
  417. partAInfos: [
  418. [
  419. {
  420. "name": "AI值1",
  421. "value": 10.2,
  422. "valueUnit": "%"
  423. },
  424. {
  425. "name": "AI值2",
  426. "value": 23.4,
  427. "valueUnit": "%"
  428. },
  429. {
  430. "name": "AI值3",
  431. "value": 32.5,
  432. "valueUnit": "%"
  433. },
  434. {
  435. "name": "AI值4",
  436. "value": 54.5,
  437. "valueUnit": "%"
  438. },
  439. {
  440. "name": "AI值5",
  441. "value": 14.5,
  442. "valueUnit": "%"
  443. },
  444. ]
  445. ],
  446. partDInfos: [
  447. [
  448. {
  449. "name": "DI值1",
  450. "value": 10.2
  451. },
  452. {
  453. "name": "DI值2",
  454. "value": 23.4
  455. },
  456. {
  457. "name": "DI值3",
  458. "value": 32.5
  459. },
  460. {
  461. "name": "DI值4",
  462. "value": 54.5
  463. },
  464. {
  465. "name": "DI值5",
  466. "value": 14.5
  467. },
  468. ]
  469. ],
  470. uniformcodesA: [],
  471. uniformcodesD: [],
  472. resA: [],
  473. resD: [],
  474. indexe: 0,
  475. videoTit: [],
  476. dialogVisible: false,
  477. reliable: {},
  478. colorList: ["blue", "green", "red", "orange", "pink", "write", "gray"],
  479. path: ["camera.png", "camera2.png"],
  480. count: 0,
  481. colorFlag: false,
  482. timer: "",
  483. times: "",
  484. warnLeft: [
  485. {
  486. name: "防雷保护类",
  487. value: 10
  488. }
  489. ],
  490. tableData: [
  491. {
  492. code: "1000",
  493. name: "变桨电池充电故障",
  494. message: "error_battery_charger",
  495. status: 1
  496. },
  497. {
  498. code: "1002",
  499. name: "转子侧变流器电流故障",
  500. message: "error_converter_error_inu_flag",
  501. status: 0
  502. },
  503. {
  504. code: "1000",
  505. name: "变桨电池充电故障",
  506. message: "error_battery_charger",
  507. status: 1
  508. },
  509. {
  510. code: "1002",
  511. name: "转子侧变流器电流故障",
  512. message: "error_converter_error_inu_flag",
  513. status: 0
  514. },
  515. {
  516. code: "1000",
  517. name: "变桨电池充电故障",
  518. message: "error_battery_charger",
  519. status: 1
  520. },
  521. {
  522. code: "1002",
  523. name: "转子侧变流器电流故障",
  524. message: "error_converter_error_inu_flag",
  525. status: 0
  526. },
  527. {
  528. code: "1000",
  529. name: "变桨电池充电故障",
  530. message: "error_battery_charger",
  531. status: 1
  532. },
  533. {
  534. code: "1002",
  535. name: "转子侧变流器电流故障",
  536. message: "error_converter_error_inu_flag",
  537. status: 0
  538. },
  539. {
  540. code: "1000",
  541. name: "变桨电池充电故障",
  542. message: "error_battery_charger",
  543. status: 1
  544. },
  545. {
  546. code: "1002",
  547. name: "转子侧变流器电流故障",
  548. message: "error_converter_error_inu_flag",
  549. status: 0
  550. },
  551. {
  552. code: "1000",
  553. name: "变桨电池充电故障",
  554. message: "error_battery_charger",
  555. status: 1
  556. },
  557. {
  558. code: "1002",
  559. name: "转子侧变流器电流故障",
  560. message: "error_converter_error_inu_flag",
  561. status: 0
  562. },
  563. {
  564. code: "1000",
  565. name: "变桨电池充电故障",
  566. message: "error_battery_charger",
  567. status: 1
  568. },
  569. {
  570. code: "1002",
  571. name: "转子侧变流器电流故障",
  572. message: "error_converter_error_inu_flag",
  573. status: 0
  574. },
  575. {
  576. code: "1000",
  577. name: "变桨电池充电故障",
  578. message: "error_battery_charger",
  579. status: 1
  580. },
  581. {
  582. code: "1002",
  583. name: "转子侧变流器电流故障",
  584. message: "error_converter_error_inu_flag",
  585. status: 0
  586. },
  587. ],
  588. tableHeader: [
  589. {
  590. code: "code",
  591. name: "报警编号"
  592. },
  593. {
  594. code: "name",
  595. name: "PCL变量名"
  596. },
  597. {
  598. code: "message",
  599. name: "报警文字信息"
  600. },
  601. {
  602. code: "status",
  603. name: "报警状态"
  604. },
  605. ],
  606. warnTypeData: {
  607. typeData: [],
  608. tableData: []
  609. }
  610. };
  611. },
  612. components: { svgIcon, alarmDialog, powerAndSpeed, },
  613. apiUrl: "",
  614. props: {
  615. wind: {
  616. type: Object,
  617. default: () => {},
  618. },
  619. flag: {
  620. type: Boolean,
  621. default: false,
  622. },
  623. },
  624. computed: {
  625. windSpeedRota() {
  626. let count = this.windStatus?.SSPJFS / 25;
  627. let result = Number((310 * count + 50).toFixed(0));
  628. if (result) {
  629. if (result > 310) {
  630. return "rotateZ(310deg)";
  631. } else {
  632. return "rotateZ(" + Number((310 * count + 50).toFixed(0)) + "deg)";
  633. }
  634. } else {
  635. return "rotateZ(50deg)";
  636. }
  637. },
  638. },
  639. mounted() {
  640. this.timer = setInterval(() => {
  641. if (Object.keys(this.windInfo).length) {
  642. this.getWtMonitorInfo(this.windInfo);
  643. this.getPointsData(this.resA, this.resD);
  644. }
  645. }, 5000);
  646. this.times = setInterval(() => {
  647. this.count++;
  648. if (this.count > 1) {
  649. this.count = 0;
  650. }
  651. }, 800);
  652. if (document.getElementById("ifrId")) {
  653. const oIframe = document.getElementById("ifrId");
  654. const deviceWidth = document.getElementById("ifVideo").offsetWidth;
  655. const deviceHeight = document.getElementById("ifVideo").offsetHeight;
  656. oIframe.style.width = deviceWidth + "px";
  657. oIframe.style.height = deviceHeight + "px";
  658. }
  659. },
  660. unmounted() {
  661. clearInterval(this.timer);
  662. this.timer = null;
  663. clearInterval(this.times);
  664. this.times = null;
  665. },
  666. watch: {
  667. wind: {
  668. handler() {
  669. if (Object.keys(this.wind).length) {
  670. this.start(this.wind);
  671. }
  672. },
  673. },
  674. $route: {
  675. handler(val) {
  676. if (
  677. val.path.includes("lightmatrix") ||
  678. val.path.includes("detailmatrix") ||
  679. val.path.includes("draughtFan")
  680. ) {
  681. this.colorFlag = true;
  682. }
  683. },
  684. immediate: true,
  685. },
  686. },
  687. methods: {
  688. getwarnTypeData() {
  689. let that = this
  690. let params = {
  691. wtid: "NX_FGS_HA_F_WT_0039_EQ"
  692. // wtid: that.wind.wtid
  693. }
  694. GetMatrixalarmtype(params).then(res =>{
  695. if (res && res.data) {
  696. that.warnTypeData.typeData = res.data
  697. that.getwarnTableData(res.data[0])
  698. }
  699. })
  700. },
  701. getwarnTableData(data) {
  702. let that = this
  703. let params = {
  704. type: "BJXT",
  705. wtid: "NX_FGS_HA_F_WT_0039_EQ"
  706. // type: data.nemCode,
  707. // wtid: that.wind.wtid
  708. }
  709. GetMatrixalarmtypeTable(params).then(res =>{
  710. if (res && res.data) {
  711. that.warnTypeData.tableData = res.data
  712. }
  713. })
  714. },
  715. handleXhClick(wind) {
  716. // console.log(wind);
  717. this.$refs.powerAndSpeed && this.$refs.powerAndSpeed.init(wind);
  718. },
  719. isRed(val) {
  720. if (val === 2 || val === 6) {
  721. return 'redsty'
  722. }
  723. },
  724. cancle() {
  725. this.windInfo = {};
  726. this.windname = "";
  727. this.wtid = "";
  728. this.current = "fdj";
  729. this.monitorInfo = {};
  730. this.partAInfo = [];
  731. this.partDInfo = [];
  732. this.partAInfos = [];
  733. this.partDInfos = [];
  734. this.uniformcodesA = [];
  735. this.uniformcodesD = [];
  736. this.resA = [];
  737. this.resD = [];
  738. },
  739. // 页面初始信息
  740. start(val) {
  741. if (Object.keys(val).length) {
  742. this.windInfo = val;
  743. this.windname = val.wtname;
  744. this.wtid = val.wtid;
  745. this.wpid = val.wpid;
  746. this.current = "fdj";
  747. this.getWtMonitorInfo(val);
  748. this.getWtOtherInfo(val);
  749. this.handleClick("fdj");
  750. } else {
  751. this.cancle();
  752. }
  753. },
  754. // 设备监测信息
  755. getWtMonitorInfo(val) {
  756. if (val.wtType == -1) {
  757. GetWtMonitorInfo({ wtid: val.wtid }).then(({ data }) => {
  758. this.monitorInfo = data.data;
  759. this.monitorInfo.rfdl =
  760. this.monitorInfo.rfdl < 0 ? 0 : this.monitorInfo.rfdl;
  761. // for(var key in this.monitorInfo){
  762. // this.monitorInfo[key]=this.monitorInfo[key] < 0 ? 0 : this.monitorInfo[key];
  763. // }
  764. });
  765. } else {
  766. this.monitorInfo = {};
  767. }
  768. },
  769. // 设备其他信息
  770. getWtOtherInfo(val) {
  771. GetWtOtherInfo({ wtid: val.wtid }).then((res) => {
  772. if (res.code == 200) {
  773. this.otherInfo = res.data;
  774. }
  775. });
  776. },
  777. // 查看各部位编码
  778. handleClick(val) {
  779. this.current = val;
  780. if (this.wtid) {
  781. this.getPartInfo();
  782. }
  783. },
  784. // 统一编码
  785. getPartInfo() {
  786. if (this.windInfo.wtType == -1) {
  787. if (this.wtid.length && this.current) {
  788. GetWtTelemeteryInfo({
  789. part: this.current,
  790. wtid: this.wtid,
  791. }).then(({ data }) => {
  792. // 拿到初始获取数据
  793. this.partAInfo = data.data.AI;
  794. this.partDInfo = data.data.DI;
  795. // 拿到数据的uniformcode集合
  796. this.uniformcodesD = this.partDInfo.length
  797. ? this.partDInfo.map((item) => item.uniformCode)
  798. : [];
  799. this.uniformcodesA = this.partAInfo.length
  800. ? this.partAInfo.map((item) => item.uniformCode)
  801. : [];
  802. // 获取测点数据
  803. this.getPointsIds();
  804. });
  805. }
  806. }
  807. },
  808. getPointsIds() {
  809. let pointsIdsA = new Promise((resolve, reject) => {
  810. GetWtPoints({
  811. wtid: this.wtid,
  812. uniformcodes: this.uniformcodesA,
  813. })
  814. .then(({ data }) => {
  815. resolve(data);
  816. })
  817. .catch((e) => {
  818. reject("发生错误");
  819. });
  820. });
  821. let pointsIdsD = new Promise((resolve, reject) => {
  822. GetWtPoints({
  823. wtid: this.wtid,
  824. uniformcodes: this.uniformcodesD,
  825. })
  826. .then(({ data }) => {
  827. resolve(data);
  828. })
  829. .catch((e) => {
  830. // 标记失败后给定某个数据
  831. reject("发生错误");
  832. });
  833. });
  834. Promise.all([pointsIdsA, pointsIdsD])
  835. .then((results) => {
  836. this.resA = results[0].data.length
  837. ? results[0].data.map((item) => (item != null ? item.nemCode : ""))
  838. : [];
  839. this.resD = results[1].data.length
  840. ? results[1].data.map((item) => (item != null ? item.nemCode : ""))
  841. : [];
  842. this.getPointsData(this.resA, this.resD);
  843. })
  844. .catch((e) => {
  845. console.log("error", e);
  846. });
  847. },
  848. getPointsData(pointsA, pointsD) {
  849. let pointsDataA = new Promise((resolve, reject) => {
  850. GetPointsData({
  851. pointIds: pointsA,
  852. })
  853. .then(({ data }) => {
  854. resolve(data);
  855. })
  856. .catch((e) => {
  857. // 标记失败后给定某个数据
  858. reject("发生错误");
  859. });
  860. });
  861. let pointsDataD = new Promise((resolve, reject) => {
  862. GetPointsData({
  863. pointIds: pointsD,
  864. })
  865. .then(({ data }) => {
  866. resolve(data);
  867. })
  868. .catch((e) => {
  869. // 标记失败后给定某个数据
  870. reject("发生错误");
  871. });
  872. });
  873. Promise.all([pointsDataA, pointsDataD])
  874. .then((results) => {
  875. let pointsInfoA = results[0].data.length ? results[0].data : [];
  876. let pointsInfoD = results[1].data.length ? results[1].data : [];
  877. let partAInfo = [];
  878. let partDInfo = [];
  879. let chunk = 4;
  880. this.partAInfo.forEach((item, index) => {
  881. pointsInfoA.forEach((i, ind) => {
  882. if (index == ind) {
  883. item.value = i.pointValueInDouble;
  884. }
  885. });
  886. });
  887. for (let i = 0, j = this.partAInfo.length; i < j; i += chunk) {
  888. partAInfo.push(this.partAInfo.slice(i, i + chunk));
  889. }
  890. this.partDInfo.forEach((item, index) => {
  891. pointsInfoD.forEach((i, ind) => {
  892. if (index == ind) {
  893. item.value = i.pointValueInDouble;
  894. }
  895. });
  896. });
  897. for (let m = 0, n = this.partDInfo.length; m < n; m += chunk) {
  898. partDInfo.push(this.partDInfo.slice(m, m + chunk));
  899. }
  900. this.partDInfos = partDInfo;
  901. this.partAInfos = partAInfo;
  902. })
  903. .catch((e) => {
  904. // 失败的时候则返回最先被reject失败状态的值
  905. console.log("error", e);
  906. });
  907. },
  908. //打开报警页面
  909. handleAlarm(id) {
  910. this.$refs.alarmDialog &&
  911. this.$refs.alarmDialog.openDialog(id, this.wpid, this.windInfo.wtType);
  912. },
  913. clickVideo(index) {
  914. this.indexe = index;
  915. },
  916. clivkFun() {
  917. this.dialogVisible = true;
  918. },
  919. },
  920. };
  921. </script>
  922. <style lang="less" scoped>
  923. .icLi {
  924. background: rgba(0, 70, 199, 0.1);
  925. border-radius: 20px;
  926. color: #b3b3b3;
  927. }
  928. .actives {
  929. background: rgba(0, 70, 199, 0.4);
  930. border-radius: 20px;
  931. color: #f5f7fa;
  932. }
  933. .bodys {
  934. display: flex;
  935. flex-direction: row;
  936. width: 100%;
  937. height: 100%;
  938. .edge {
  939. width: 400px;
  940. display: flex;
  941. height: 100%;
  942. flex-direction: column;
  943. //
  944. .info {
  945. width: 100%;
  946. flex: 0 0 auto;
  947. padding: 10px 15px;
  948. // background-color: rgba(11, 12, 12, 0.45);
  949. background-color: rgba(96, 103, 105, 0.2);
  950. border-radius: 5px;
  951. display: flex;
  952. flex-direction: column;
  953. .info-wrapper {
  954. display: flex;
  955. width: 100%;
  956. align-items: center;
  957. justify-content: space-between;
  958. margin-bottom: 10px;
  959. .ps-info {
  960. display: flex;
  961. align-items: center;
  962. margin-bottom: -5px;
  963. white-space: nowrap;
  964. color: #959595;
  965. font-size: 15px;
  966. div:nth-child(2) {
  967. cursor: pointer;
  968. &:hover,
  969. &:active {
  970. font-weight: 700;
  971. }
  972. }
  973. }
  974. }
  975. .info-title {
  976. width: 50%;
  977. height: 25px;
  978. font-size: 16px;
  979. font-family: Microsoft YaHei;
  980. font-weight: 400;
  981. display: flex;
  982. flex-direction: row;
  983. align-items: center;
  984. justify-content: center;
  985. white-space: nowrap;
  986. &.green {
  987. background-color: rgba(5, 187, 76, 0.2);
  988. // border: 1px solid #05bb4c;
  989. color: #05bb4c;
  990. }
  991. &.blue {
  992. background-color: rgba(0, 70, 199, 0.2);
  993. // border: 1px solid #3c88f7;
  994. color: #1c99ff;
  995. }
  996. &.pink {
  997. background-color: rgba(197, 48, 200, 0.2);
  998. // border: 1px solid #c530c8;
  999. color: #c530c8;
  1000. }
  1001. &.red {
  1002. background-color: rgba(186, 50, 55, 0.2);
  1003. // border: 1px solid #ba3237;
  1004. color: #ba3237;
  1005. }
  1006. &.orange {
  1007. background-color: rgba(225, 125, 36, 0.2);
  1008. // border: 1px solid #e17d24;
  1009. color: #e17d24;
  1010. }
  1011. &.write {
  1012. background-color: rgba(255, 255, 255, 0.2);
  1013. // border: 1px solid #ffffff;
  1014. color: #ffffff;
  1015. }
  1016. &.gray {
  1017. background-color: rgba(96, 103, 105, 0.2);
  1018. // border: 1px solid #606769;
  1019. color: #606769;
  1020. }
  1021. }
  1022. .wt-alarm {
  1023. font-family: Microsoft YaHei;
  1024. font-weight: 400;
  1025. cursor: pointer;
  1026. span {
  1027. margin-left: 5px;
  1028. &.green {
  1029. color: #05bb4c;
  1030. }
  1031. &.blue {
  1032. color: #1c99ff;
  1033. }
  1034. &.pink {
  1035. color: #c530c8;
  1036. }
  1037. &.red {
  1038. color: #ba3237;
  1039. }
  1040. &.orange {
  1041. color: #e17d24;
  1042. }
  1043. &.write {
  1044. color: #ffffff;
  1045. }
  1046. &.gray {
  1047. color: #606769;
  1048. }
  1049. }
  1050. &:hover,
  1051. &:active {
  1052. span {
  1053. font-weight: 700;
  1054. font-size: 16px;
  1055. }
  1056. }
  1057. }
  1058. .info-item {
  1059. font-size: 24px;
  1060. font-family: Adobe Heiti Std;
  1061. font-weight: normal;
  1062. color: #ffffff;
  1063. display: flex;
  1064. align-items: center;
  1065. justify-content: space-between;
  1066. }
  1067. .info-value {
  1068. display: flex;
  1069. flex-direction: row;
  1070. align-items: baseline;
  1071. font-size: 40px;
  1072. font-family: Arial;
  1073. font-weight: 400;
  1074. color: #05bb4c;
  1075. white-space: nowrap;
  1076. .unit {
  1077. font-size: 24px;
  1078. font-family: Adobe Heiti Std;
  1079. font-weight: normal;
  1080. // margin-right: 20px;
  1081. }
  1082. }
  1083. }
  1084. .monitoring {
  1085. width: 100%;
  1086. flex: 1 0 auto;
  1087. background-color: rgba(96, 103, 105, 0.2);
  1088. // background-color: rgba(11, 12, 12, 0.45);
  1089. border-radius: 5px;
  1090. margin-top: 10px;
  1091. display: flex;
  1092. flex-direction: column;
  1093. align-items: center;
  1094. }
  1095. .wind-info-list {
  1096. height: calc(100% - 42px);
  1097. width: 100%;
  1098. display: flex;
  1099. flex-direction: column;
  1100. }
  1101. .wind-info {
  1102. flex: 1 0 auto;
  1103. display: flex;
  1104. flex-direction: row;
  1105. align-items: center;
  1106. justify-content: space-between;
  1107. width: 100%;
  1108. padding: 0 10%;
  1109. font-size: 14px;
  1110. font-family: Source Han Sans SC;
  1111. font-weight: 400;
  1112. color: #959595;
  1113. .wind-value {
  1114. display: flex;
  1115. flex-direction: row;
  1116. align-items: baseline;
  1117. font-size: 16px;
  1118. font-family: Arial;
  1119. font-weight: 400;
  1120. color: #05bb4c;
  1121. .unit {
  1122. font-size: 12px;
  1123. font-family: Source Han Sans SC;
  1124. font-weight: 400;
  1125. color: #959595;
  1126. width: 40px;
  1127. margin-left: 15px;
  1128. }
  1129. }
  1130. }
  1131. }
  1132. .parts {
  1133. // width: calc(100% - 600px - 20px);
  1134. width: calc(70vw - 20px);
  1135. margin-right: 20px;
  1136. height: 100%;
  1137. display: flex;
  1138. flex-direction: column;
  1139. align-items: center;
  1140. justify-content: space-between;
  1141. // position: relative;
  1142. .part-top {
  1143. flex: 1;
  1144. width: 100%;
  1145. }
  1146. .part-title {
  1147. width: 100%;
  1148. height: 30px;
  1149. display: flex;
  1150. align-items: flex-start;
  1151. flex-direction: row;
  1152. .title-item {
  1153. width: 140px;
  1154. height: 100%;
  1155. display: flex;
  1156. align-items: center;
  1157. color: #b3bdc0;
  1158. justify-content: center;
  1159. // background: rgba(67, 81, 107, 0.2);
  1160. background: rgba(96, 103, 105, 0.2);
  1161. border-left: 1px solid rgba(0, 70, 199, 0.48);
  1162. border-top: 1px solid rgba(0, 70, 199, 0.48);
  1163. border-bottom: 1px solid rgba(0, 70, 199, 0.48);
  1164. &.part-left {
  1165. border-radius: 15px 0px 0px 15px;
  1166. }
  1167. &.part-right {
  1168. border-right: 1px solid rgba(0, 70, 199, 0.48);
  1169. border-radius: 0px 15px 15px 0px;
  1170. }
  1171. &.active {
  1172. // background-color: rgba(0, 70, 199, 0.4);
  1173. background-color: rgba(0, 70, 199, 0.48);
  1174. color: #ffffff;
  1175. }
  1176. }
  1177. }
  1178. .part-imgs {
  1179. min-height: calc(100% - 30px);
  1180. position: relative;
  1181. }
  1182. .wind-part {
  1183. position: absolute;
  1184. top: 50%;
  1185. left: 50%;
  1186. transform: translate(-50%, -50%);
  1187. }
  1188. .part-info {
  1189. width: 100%;
  1190. max-height: 50vh;
  1191. bottom: 0px;
  1192. display: flex;
  1193. flex-direction: column-reverse;
  1194. [v-cloak] {
  1195. display: none;
  1196. }
  1197. .part-body {
  1198. width: 100%;
  1199. padding-bottom: 20px;
  1200. // background: rgba(11, 12, 12, 0.45);
  1201. background: rgba(96, 103, 105, 0.2);
  1202. border-radius: 5px;
  1203. margin-top: 10px;
  1204. display: flex;
  1205. flex-direction: column;
  1206. align-items: center;
  1207. padding: 10px 0;
  1208. .part-item {
  1209. width: 100%;
  1210. height: calc(100% - 42px);
  1211. overflow-y: scroll;
  1212. }
  1213. .part {
  1214. width: 100%;
  1215. display: flex;
  1216. flex-direction: row;
  1217. margin-top: 5px;
  1218. font-size: 13px;
  1219. font-family: Source Han Sans SC;
  1220. font-weight: 400;
  1221. color: #959595;
  1222. padding: 0 10px;
  1223. .table-item {
  1224. width: 25%;
  1225. font-size: 12px;
  1226. .table-value {
  1227. display: flex;
  1228. flex-direction: row;
  1229. align-items: baseline;
  1230. .unit {
  1231. font-size: 12px;
  1232. font-family: Source Han Sans SC;
  1233. font-weight: 400;
  1234. color: #817c7c;
  1235. margin-left: 5px;
  1236. width: 40px;
  1237. }
  1238. &.round {
  1239. width: 8px;
  1240. height: 8px;
  1241. border-radius: 50%;
  1242. background-color: rgba(0, 70, 199, 0.48);
  1243. margin-right: 90px;
  1244. }
  1245. &.round-red {
  1246. width: 8px;
  1247. height: 8px;
  1248. border-radius: 50%;
  1249. background-color: red;
  1250. margin-right: 90px;
  1251. }
  1252. }
  1253. }
  1254. &.active {
  1255. background-color: rgba(83, 89, 104, 0.15);
  1256. }
  1257. }
  1258. }
  1259. }
  1260. }
  1261. .problems{
  1262. width: 30vw;
  1263. background: rgba(96, 103, 105, 0.2);
  1264. border-radius: 5px;
  1265. padding: 10px;
  1266. .problemTit{
  1267. display: flex;
  1268. justify-content: space-between;
  1269. position: relative;
  1270. width: 98%;
  1271. height: 42px;
  1272. border-bottom: 1px solid #363b46;
  1273. display: flex;
  1274. align-items: center;
  1275. padding-left: 20px;
  1276. font-size: 16px;
  1277. font-family: Microsoft YaHei;
  1278. font-weight: 400;
  1279. color: #ffffff;
  1280. .problemSeach{
  1281. display: flex;
  1282. .el-input{
  1283. width: 150px;
  1284. position: relative;
  1285. top: -4px;
  1286. margin-right: 5px;
  1287. }
  1288. .seachBtn{
  1289. width: 30px;
  1290. height: 30px;
  1291. background: rgba(0, 70, 199, 0.48);
  1292. border-radius: 30px;
  1293. position: relative;
  1294. margin-left: 5px;
  1295. cursor: pointer;
  1296. .el-icon{
  1297. position: absolute;
  1298. top: 6px;
  1299. left: 7px;
  1300. }
  1301. &:hover {
  1302. background-color: rgba(16, 81, 219, 0.5);
  1303. color: #ffffff;
  1304. }
  1305. }
  1306. .buttons {
  1307. background-color: rgba(5, 187, 76, 0.2);
  1308. border: 1px solid #3b6c53;
  1309. color: #b3b3b3;
  1310. font-size: 14px;
  1311. width: 40px;
  1312. height: 30px;
  1313. position: relative;
  1314. padding: 0 25px !important;
  1315. .button{
  1316. position: absolute;
  1317. left: 13px;
  1318. top: 7px;
  1319. }
  1320. &:hover {
  1321. background-color: rgba(5, 187, 76, 0.5);
  1322. color: #ffffff;
  1323. }
  1324. }
  1325. }
  1326. }
  1327. .problemMain{
  1328. .problemWarn{
  1329. margin-top: 10px;
  1330. display: flex;
  1331. justify-content: space-between;
  1332. width: 100%;
  1333. .warn{
  1334. width: 32%;
  1335. }
  1336. .warnCom{
  1337. width: 100%;
  1338. height: 100px;
  1339. // border: 1px solid rgba(255,0,0,0.8);
  1340. margin-bottom: 5px;
  1341. box-shadow: inset 0px 0px 40px 0px red;
  1342. animation: flash 1s infinite alternate; /* 闪烁动画 */
  1343. .warnComImg{
  1344. width: 50px;
  1345. height: 50px;
  1346. text-align: center;
  1347. border-radius: 50px;
  1348. border: 1px solid rgba(255,0,0,.3);
  1349. position: relative;
  1350. top: -74px;
  1351. left: 22px;
  1352. img{
  1353. position: relative;
  1354. top: 5px;
  1355. }
  1356. }
  1357. .warnComNum{
  1358. position: relative;
  1359. top: -119px;
  1360. left: 88px;
  1361. width: 55px;
  1362. .numTop{
  1363. font-size: 22px;
  1364. font-weight: bold;
  1365. color: red;
  1366. text-align: end;
  1367. }
  1368. .numBot{
  1369. font-size: 14px;
  1370. color: rgb(136, 136, 136);
  1371. position: absolute;
  1372. right: 0;
  1373. top: 21px;
  1374. }
  1375. }
  1376. .circle-container {
  1377. width: 100px;
  1378. height: 100px;
  1379. position: relative;
  1380. }
  1381. .circle-segment {
  1382. position: absolute;
  1383. top: 20%;
  1384. left: 17%;
  1385. width: 60px;
  1386. height: 60px;
  1387. transform-origin: center;
  1388. transform: translate(-50%, -50%);
  1389. stroke-width: 5;
  1390. fill: none;
  1391. stroke-dasharray: 50, 30; /* 圆周长三分之一加间隔 */
  1392. stroke-dashoffset: 0;
  1393. animation: rotate 4s linear infinite;
  1394. }
  1395. .segment-1 {
  1396. stroke: red;
  1397. transform: rotate(0deg);
  1398. }
  1399. @keyframes rotate {
  1400. from {
  1401. transform: rotate(0deg);
  1402. }
  1403. to {
  1404. transform: rotate(360deg);
  1405. }
  1406. }
  1407. }
  1408. @keyframes flash {
  1409. from {
  1410. box-shadow: inset 0 0 10px #e60101; /* 开始时的内阴影 */
  1411. }
  1412. to {
  1413. box-shadow: inset 0 0 40px #f00; /* 结束时的内阴影,颜色更亮或更大 */
  1414. }
  1415. }
  1416. .warnItems{
  1417. width: 100%;
  1418. display: flex;
  1419. color: #817c7c;
  1420. margin-bottom: 3px;
  1421. .warnItemLeft{
  1422. height: 32px;
  1423. width: 20%;
  1424. border: 1px solid #817c7c;
  1425. margin-right: 1%;
  1426. text-align: center;
  1427. line-height: 28px;
  1428. }
  1429. .warnItemRight{
  1430. height: 32px;
  1431. width: 79%;
  1432. line-height: 28px;
  1433. border: 1px solid #817c7c;
  1434. padding-left: 5px;
  1435. }
  1436. .redsty{
  1437. border: 1px solid red;
  1438. color: red;
  1439. }
  1440. }
  1441. }
  1442. .warnTable{
  1443. margin-top: 10px;
  1444. }
  1445. }
  1446. }
  1447. }
  1448. .monitoring-item {
  1449. position: relative;
  1450. width: 98%;
  1451. height: 42px;
  1452. border-bottom: 1px solid #363b46;
  1453. display: flex;
  1454. align-items: center;
  1455. padding-left: 20px;
  1456. font-size: 16px;
  1457. font-family: Microsoft YaHei;
  1458. font-weight: 400;
  1459. color: #ffffff;
  1460. }
  1461. .point {
  1462. width: 8px;
  1463. height: 1px;
  1464. background-color: #ffffff;
  1465. position: absolute;
  1466. &.point-left {
  1467. left: 0;
  1468. }
  1469. &.point-right {
  1470. right: 0;
  1471. }
  1472. &.top {
  1473. top: -1px;
  1474. }
  1475. &.bottom {
  1476. bottom: -1px;
  1477. }
  1478. }
  1479. .points {
  1480. width: 1px;
  1481. height: 8px;
  1482. background-color: #ffffff;
  1483. position: absolute;
  1484. &.point-left {
  1485. left: 0;
  1486. }
  1487. &.point-right {
  1488. right: 0;
  1489. }
  1490. &.top {
  1491. top: -1px;
  1492. }
  1493. &.bottom {
  1494. bottom: -1px;
  1495. }
  1496. }
  1497. .table-item {
  1498. display: flex;
  1499. flex-direction: row;
  1500. align-items: center;
  1501. justify-content: space-between;
  1502. width: 100%;
  1503. height: 33px;
  1504. font-size: 12px;
  1505. font-family: Microsoft YaHei;
  1506. font-weight: 400;
  1507. color: #b3b3b3;
  1508. padding: 0 0px;
  1509. .table-value {
  1510. font-family: Arial;
  1511. font-weight: 400;
  1512. color: rgb(15, 120, 240);
  1513. margin-right: 25px;
  1514. }
  1515. }
  1516. </style>