action.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826
  1. <template>
  2. <el-dialog
  3. width="70%"
  4. @open="opened"
  5. @closed="closed"
  6. :fullscreen="true"
  7. :show-close="true"
  8. class="dialogs"
  9. >
  10. <template #title>
  11. <div class="showTitles currentShowTitles">
  12. <div class="titles">动作查询</div>
  13. </div>
  14. </template>
  15. <div class="body">
  16. <div class="bodyDetial">
  17. <!-- <div style="width: 50%;height:200px;background-color:red;"></div>
  18. <div style="width: 50%;height:200px;background-color:yellow;"></div> -->
  19. <div class="left-item">
  20. <el-scrollbar>
  21. <el-input placeholder="输入关键字进行过滤" v-model="filterText">
  22. </el-input>
  23. <el-tree
  24. class="filter-tree"
  25. :data="showData"
  26. :props="defaultProps"
  27. :filter-node-method="filterNode"
  28. node-key="id"
  29. :default-expanded-keys="[0]"
  30. ref="tree"
  31. @node-click="handleChange"
  32. >
  33. </el-tree>
  34. </el-scrollbar>
  35. </div>
  36. <div class="right-item">
  37. <div class="dateBar">
  38. <el-date-picker
  39. class="pickers"
  40. @change="changes"
  41. v-model="timeValue"
  42. type="datetimerange"
  43. range-separator="至"
  44. start-placeholder="开始日期"
  45. end-placeholder="结束日期"
  46. >
  47. </el-date-picker>
  48. <div
  49. class="buttons"
  50. @click="
  51. () => {
  52. getControlRecord();
  53. getControlStatistics();
  54. }
  55. "
  56. >
  57. 查询
  58. </div>
  59. </div>
  60. <el-scrollbar style="height: 94%">
  61. <div class="tables">
  62. <el-table
  63. :data="recordData"
  64. class="table"
  65. style="width: 100%"
  66. height="81vh"
  67. :header-cell-style="{
  68. background: 'rgb(30,30,30)',
  69. color: 'rgb(220,220,220)',
  70. padding: '4px',
  71. fontSize: '14px',
  72. 'border-bottom': 'solid 1px rgba(77, 77, 77, 1)',
  73. }"
  74. :cell-style="{
  75. height: '40px',
  76. background: 'rgb(30,30,30)',
  77. color: 'rgb(220,220,220)',
  78. padding: '3px',
  79. fontSize: '12px',
  80. 'border-bottom': '1px solid #000000',
  81. }"
  82. @cell-dblclick="cellDbClick"
  83. >
  84. <el-table-column
  85. prop="time"
  86. label="日期"
  87. width="120"
  88. align="center"
  89. >
  90. </el-table-column>
  91. <el-table-column
  92. prop="code"
  93. label="风机号"
  94. width="120"
  95. align="center"
  96. >
  97. </el-table-column>
  98. <el-table-column
  99. prop="controls"
  100. label="控制命令"
  101. width="100"
  102. align="center"
  103. >
  104. </el-table-column>
  105. <el-table-column prop="result" label="操作结果" align="center">
  106. </el-table-column>
  107. <el-table-column
  108. prop="userName"
  109. label="操作人"
  110. width="160"
  111. align="center"
  112. >
  113. </el-table-column>
  114. </el-table>
  115. <div class="titleinfoall" v-if="showControlStatistics">
  116. <div class="titleinfo">
  117. <span class="showTitle fontSty1">启动次数:</span>
  118. <span class="showvalue">
  119. {{ controlStatisticsInfo.startCount }}
  120. </span>
  121. <span class="showTitle fontSty">次</span>
  122. </div>
  123. <div class="titleinfo">
  124. <span class="showTitle fontSty1">停机次数:</span>
  125. <span class="showvalue">
  126. {{ controlStatisticsInfo.stopCount }}
  127. </span>
  128. <span class="showTitle fontSty">次</span>
  129. </div>
  130. <div class="titleinfo">
  131. <span class="showTitle fontSty1">维护次数:</span>
  132. <span class="showvalue">
  133. {{ controlStatisticsInfo.maintenanceCount }}
  134. </span>
  135. <span class="showTitle fontSty">次</span>
  136. </div>
  137. <div class="titleinfo">
  138. <span class="showTitle fontSty1">解除维护次数:</span>
  139. <span class="showvalue">
  140. {{ controlStatisticsInfo.unMaintenanceCount }}
  141. </span>
  142. <span class="showTitle fontSty">次</span>
  143. </div>
  144. <div class="titleinfo">
  145. <span class="showTitle fontSty1">提前时间:</span>
  146. <span class="showvalue">
  147. {{ controlStatisticsInfo.advanceTime?.toFixed(2) || 0 }}
  148. </span>
  149. <span class="showTitle fontSty">小时</span>
  150. </div>
  151. <div class="titleinfo">
  152. <span class="showTitle fontSty1">多发电量:</span>
  153. <span class="showvalue">
  154. {{ controlStatisticsInfo.powerGeneration?.toFixed(2) || 0 }}
  155. </span>
  156. <span class="showTitle fontSty">kw</span>
  157. </div>
  158. <div class="titleinfo">
  159. <span class="showTitle fontSty1">节约电量:</span>
  160. <span class="showvalue">
  161. {{ controlStatisticsInfo.powerSaving?.toFixed(2) || 0 }}
  162. </span>
  163. <span class="showTitle fontSty">kw</span>
  164. </div>
  165. <div class="titleinfo">
  166. <span class="showTitle fontSty1">维护时长:</span>
  167. <span class="showvalue">
  168. {{ controlStatisticsInfo.maintenanceTime?.toFixed(2) || 0 }}
  169. </span>
  170. <span class="showTitle fontSty">分钟</span>
  171. </div>
  172. </div>
  173. </div>
  174. </el-scrollbar>
  175. <div class="paginations">
  176. <el-pagination
  177. :hide-on-single-page="true"
  178. :page-size="currentPage"
  179. background
  180. layout="prev, pager, next"
  181. :total="total"
  182. @current-change="handleCurrentChange"
  183. />
  184. </div>
  185. </div>
  186. </div>
  187. </div>
  188. <el-dialog
  189. class="dialogs"
  190. custom-class="currentBorder"
  191. width="70%"
  192. top="50px"
  193. :show-close="true"
  194. append-to-body
  195. v-model="showStartDialog"
  196. >
  197. <div id="chart" style="width: 100%; height: 500px" />
  198. <el-card class="otherContentBox" v-if="otherContentInfo.success">
  199. <el-descriptions title="控制评分">
  200. <el-descriptions-item label="控制时间">{{
  201. otherContentInfo.operationRecordTs || "---"
  202. }}</el-descriptions-item>
  203. <el-descriptions-item label="并网开始时间">{{
  204. otherContentInfo.onLineStartTs || "---"
  205. }}</el-descriptions-item>
  206. <el-descriptions-item label="并网结束时间">{{
  207. otherContentInfo.onLineEndTs || "---"
  208. }}</el-descriptions-item>
  209. <el-descriptions-item label="并网时长">
  210. {{ otherContentInfo.onLineDuration || "---" }}
  211. </el-descriptions-item>
  212. <el-descriptions-item label="并网期间发电量">{{
  213. otherContentInfo.onLinePowerGeneration
  214. }}</el-descriptions-item>
  215. <el-descriptions-item label="单位时间内发电量">{{
  216. otherContentInfo.powerGenerationPerHour
  217. }}</el-descriptions-item>
  218. <el-descriptions-item label="并网期间耗电量">{{
  219. otherContentInfo.powerConsumption
  220. }}</el-descriptions-item>
  221. <!-- <el-descriptions-item label="风能利用百分比">{{
  222. otherContentInfo.windUseRate
  223. }}</el-descriptions-item> -->
  224. <el-descriptions-item label="评分">
  225. <el-rate
  226. style="display: inline-block"
  227. v-model="otherContentInfo.score"
  228. allow-half
  229. disabled
  230. />
  231. <span>{{ otherContentInfo.score * 2 }}&nbsp;/&nbsp;10&nbsp;分</span>
  232. </el-descriptions-item>
  233. </el-descriptions>
  234. </el-card>
  235. <el-card class="otherContentBox" v-else>
  236. <div
  237. style="
  238. width: 100%;
  239. height: 140px;
  240. color: #eee;
  241. display: flex;
  242. justify-content: center;
  243. align-items: center;
  244. font-size: 18px;
  245. "
  246. >
  247. <el-empty
  248. class="empSvg"
  249. :image-size="100"
  250. description="暂无控制评分"
  251. />
  252. </div>
  253. </el-card>
  254. </el-dialog>
  255. </el-dialog>
  256. </template>
  257. <script>
  258. import dayjs from "dayjs";
  259. import api from "api/index";
  260. import * as echarts from "echarts";
  261. export default {
  262. props: {},
  263. updated() {
  264. if (this.timeValue.length === 0) {
  265. let date = new Date();
  266. this.timeValue[0] = date.getTime() - 28800000;
  267. this.timeValue[1] = date.getTime() + 3600000;
  268. }
  269. },
  270. mounted() {},
  271. data() {
  272. return {
  273. currentPage: 20,
  274. filterText: "",
  275. pageIndex: 1,
  276. station: [],
  277. datas: {},
  278. chooseStation: {},
  279. timeValue: [],
  280. showData: [
  281. {
  282. id: 0,
  283. code: "全部",
  284. stationId: "",
  285. children: [],
  286. },
  287. ],
  288. defaultProps: {
  289. children: "children",
  290. label: "code",
  291. },
  292. recordData: [],
  293. total: "",
  294. controlErorCodes: [
  295. "控制成功",
  296. "控制命令发送失败",
  297. "无效的控制地址",
  298. "被控设备异常",
  299. "无效的控制功能",
  300. "网络连接错误,检查场站通信",
  301. "控制结果读取超时",
  302. "未知错误",
  303. "控制命令错误",
  304. "收到无法识别数据",
  305. "未读取到数据包",
  306. "未知错误",
  307. "风机操作过频繁",
  308. "风机被挂牌",
  309. "风机操作与风机状态不符",
  310. "需要登录",
  311. ],
  312. showStartDialog: false,
  313. rateValue: 4.5,
  314. otherContentInfo: {
  315. score: 0,
  316. },
  317. showControlStatistics: false,
  318. controlStatisticsInfo: {},
  319. };
  320. },
  321. methods: {
  322. // getWindturbineFdc() {
  323. // api.getWindturbineFdc().then((res) => {
  324. // this.station = res.data;
  325. // this.getControlRecord();
  326. // });
  327. // },
  328. dataDeal() {
  329. let stationList = this.$store.state.stationList;
  330. this.showData[0].children = [
  331. // {
  332. // id : 1,
  333. // code : "风机全部",
  334. // stationId : "WIND_ALL",
  335. // children : [],
  336. // }
  337. ];
  338. stationList.forEach((item, index) => {
  339. if (item.type === 1) {
  340. let obj = {};
  341. obj.id = index + 1;
  342. obj.code = item.name;
  343. obj.stationId = item.id;
  344. obj.children = [];
  345. this.showData[0].children.push(obj);
  346. }
  347. });
  348. this.datas = this.$store.state.windturbinelist
  349. ? this.$store.state.windturbinelist
  350. : {};
  351. let arr = Object.keys(this.datas).sort();
  352. for (let id of arr) {
  353. let item = this.datas[id];
  354. this.showData[0].children
  355. .filter((val) => val.stationId === item.stationId)[0]
  356. ?.children.push(item);
  357. }
  358. },
  359. handleChange(value) {
  360. this.chooseStation = value;
  361. this.pageIndex = 1;
  362. this.getControlRecord(value);
  363. },
  364. closed() {
  365. this.pageIndex = 1;
  366. this.chooseStation = {};
  367. this.showData = [
  368. {
  369. id: 0,
  370. code: "全部",
  371. stationId: "",
  372. children: [],
  373. },
  374. ];
  375. let stationList = this.$store.state.stationList;
  376. stationList.forEach((item, index) => {
  377. let obj = {};
  378. obj.id = index + 1;
  379. obj.code = item.name;
  380. obj.stationId = item.id;
  381. obj.children = [];
  382. this.showData[0].children.push(obj);
  383. });
  384. this.$emit("closed");
  385. },
  386. filterNode(value, data) {
  387. if (!value) return true;
  388. return data.code.indexOf(value) !== -1;
  389. },
  390. handleCurrentChange(val) {
  391. this.pageIndex = val;
  392. this.getControlRecord();
  393. },
  394. opened() {
  395. let date = new Date();
  396. this.timeValue[0] = date.getTime() - 28800000;
  397. this.timeValue[1] = date.getTime() + 3600000;
  398. this.dataDeal();
  399. this.getControlRecord();
  400. },
  401. getControlStatistics() {
  402. this.showControlStatistics = false;
  403. this.controlStatisticsInfo = {};
  404. const stTs = this.timeValue[0];
  405. const endTs = this.timeValue[1];
  406. api
  407. .getControlStatistics(
  408. new Date(stTs).getTime(),
  409. new Date(endTs).getTime()
  410. )
  411. .then((res) => {
  412. this.showControlStatistics = true;
  413. this.controlStatisticsInfo = {
  414. advanceTime: res.data.advanceTime,
  415. maintenanceCount: res.data.maintenanceCount,
  416. powerGeneration: res.data.powerGeneration,
  417. powerSaving: res.data.powerSaving,
  418. startCount: res.data.startCount,
  419. stopCount: res.data.stopCount,
  420. unMaintenanceCount: res.data.unMaintenanceCount,
  421. maintenanceTime: res.data.maintenanceTime,
  422. };
  423. });
  424. },
  425. getControlRecord() {
  426. api
  427. .controlRecord({
  428. stationId: this.chooseStation.stationId
  429. ? this.chooseStation.stationId
  430. : "",
  431. userName: "",
  432. windturbineId:
  433. String(this.chooseStation?.id)?.length < 2
  434. ? ""
  435. : this.chooseStation.stationId
  436. ? this.chooseStation.windturbineId
  437. : "",
  438. startTime: dayjs(this.timeValue[0]).format("YYYY/MM/DD HH:mm:ss"),
  439. endTime: dayjs(this.timeValue[1]).format("YYYY/MM/DD HH:mm:ss"),
  440. pageSize: this.currentPage,
  441. pageIndex: this.pageIndex,
  442. })
  443. .then((res) => {
  444. if (res) {
  445. let types = {
  446. Start: "启动",
  447. Stop: "停止",
  448. Reset: "复位",
  449. Maintain: "维护",
  450. UnMaintain: "取消维护",
  451. Lock: "挂牌",
  452. UnLock: "取消挂牌",
  453. };
  454. res.data.dataList.forEach((item) => {
  455. item.time = dayjs(item.time).format("MM-DD HH:mm:ss");
  456. item.result = this.controlErorCodes[item.errorCode];
  457. item.controls = types[item.controlType];
  458. item.showName = item.windturbineId;
  459. });
  460. this.total = res.data.total;
  461. this.recordData = res.data.dataList;
  462. }
  463. });
  464. },
  465. cellDbClick(row) {
  466. const controlType = row.controlType || "";
  467. if (controlType === "Start") {
  468. this.initEcharts(row.id);
  469. }
  470. },
  471. initEcharts(id) {
  472. api.getEvaluationData(id).then((res) => {
  473. var data = res.data.datas;
  474. var statistics = res.data.statistics;
  475. var marks = new Array();
  476. if (Array.isArray(statistics.mark)) {
  477. for (var j = 0; j < statistics.mark.length; ++j) {
  478. marks.push({ xAxis: statistics.mark[j] });
  479. }
  480. }
  481. var ser = new Array();
  482. var isFirst = true;
  483. for (var i = 0; i < data.length; ++i) {
  484. var s = {
  485. data: data[i].values.map((item) => {
  486. return item.value;
  487. }),
  488. type: "line",
  489. name: data[i].name,
  490. symbol: "none",
  491. yAxisIndex: /功率/g.test(data[i].name) ? 1 : 0,
  492. };
  493. if (isFirst) {
  494. s.markLine = {
  495. symbol: ["none", "none"],
  496. label: { show: false },
  497. data: marks,
  498. };
  499. }
  500. ser.push(s);
  501. isFirst = false;
  502. }
  503. var option = {
  504. tooltip: {
  505. trigger: "axis",
  506. },
  507. legend: {
  508. show: true,
  509. textStyle: {
  510. color: "#eee", //字体颜色
  511. },
  512. data: data.map((item) => {
  513. return item.name;
  514. }),
  515. },
  516. xAxis: {
  517. type: "category",
  518. data: data[0].values.map((item) => {
  519. return new Date(item.ts).toLocaleString();
  520. }),
  521. axisLabel: {
  522. show: true,
  523. textStyle: {
  524. color: "#eee",
  525. },
  526. },
  527. },
  528. yAxis: [
  529. {
  530. type: "value",
  531. name: "风速(m/s)",
  532. nameTextStyle: {
  533. color: "#fff",
  534. },
  535. axisLabel: {
  536. textStyle: {
  537. color: "#eee",
  538. },
  539. },
  540. splitLine: {
  541. lineStyle: {
  542. color: ["#878787"],
  543. },
  544. },
  545. },
  546. {
  547. type: "value",
  548. name: "功率(kw)",
  549. nameTextStyle: {
  550. color: "#fff",
  551. },
  552. axisLabel: {
  553. textStyle: {
  554. color: "#eee",
  555. },
  556. },
  557. splitLine: {
  558. show: false,
  559. },
  560. },
  561. ],
  562. dataZoom: [
  563. {
  564. type: "inside",
  565. start: 0,
  566. end: 100,
  567. },
  568. ],
  569. series: ser,
  570. };
  571. if (res.data.statistics.success) {
  572. this.otherContentInfo = {
  573. operationRecordTs: this.formatDate(
  574. new Date(res.data.statistics.allTime.operationRecordTs)
  575. ),
  576. onLineStartTs: this.formatDate(
  577. new Date(res.data.statistics.allTime.onlineStartTs)
  578. ),
  579. onLineEndTs: this.formatDate(
  580. new Date(res.data.statistics.allTime.onlineEndTs)
  581. ),
  582. onLineDuration: `${res.data.statistics.allTime.onLineDuration.toFixed(
  583. 2
  584. )} h`,
  585. onLinePowerGeneration: `${res.data.statistics.onLinePowerGeneration.toFixed(
  586. 2
  587. )} kwh`,
  588. powerGenerationPerHour: `${res.data.statistics.powerGenerationPerHour.toFixed(
  589. 2
  590. )} kwh`,
  591. powerConsumption: `${res.data.statistics.powerConsumption.toFixed(
  592. 2
  593. )} kwh`,
  594. windUseRate: `${res.data.statistics.windUseRate.toFixed(2)} %`,
  595. score: res.data.statistics.score / 2,
  596. success: res.data.statistics.success,
  597. };
  598. } else {
  599. this.otherContentInfo = {};
  600. }
  601. this.showStartDialog = true;
  602. this.$nextTick(() => {
  603. let chartDom = document.getElementById("chart");
  604. chartDom.innerHTML = "";
  605. chartDom?.removeAttribute("_echarts_instance_");
  606. let chart = echarts.init(chartDom, null, { renderer: "svg" });
  607. chart.setOption(option);
  608. });
  609. });
  610. },
  611. formatDate(value) {
  612. var date = new Date(value);
  613. var y = date.getFullYear(),
  614. m = date.getMonth() + 1,
  615. d = date.getDate(),
  616. h = date.getHours(),
  617. i = date.getMinutes(),
  618. s = date.getSeconds();
  619. if (m < 10) {
  620. m = "0" + m;
  621. }
  622. if (d < 10) {
  623. d = "0" + d;
  624. }
  625. if (h < 10) {
  626. h = "0" + h;
  627. }
  628. if (i < 10) {
  629. i = "0" + i;
  630. }
  631. if (s < 10) {
  632. s = "0" + s;
  633. }
  634. var t = y + "-" + m + "-" + d + " " + h + ":" + i + ":" + s;
  635. return t;
  636. },
  637. },
  638. watch: {
  639. filterText(val) {
  640. this.$refs.tree.filter(val);
  641. },
  642. },
  643. };
  644. </script>
  645. <style lang="less" scoped>
  646. .body {
  647. background-color: #000000;
  648. height: 90vh;
  649. width: 102%;
  650. margin-left: -1%;
  651. margin-top: -40px;
  652. }
  653. .searchTitle {
  654. display: flex;
  655. flex-direction: row;
  656. justify-content: space-between;
  657. align-items: center;
  658. }
  659. .bodyDetial {
  660. display: flex;
  661. flex-direction: row;
  662. margin-left: 3vw;
  663. padding-top: 10px;
  664. color: #ffffff;
  665. height: 98%;
  666. }
  667. .left-item {
  668. width: 20%;
  669. height: 100%;
  670. background-color: rgba(77, 77, 77, 1);
  671. border-right: 2px solid #000000;
  672. }
  673. .right-item {
  674. width: 80%;
  675. height: 100%;
  676. background-color: rgba(77, 77, 77, 1);
  677. }
  678. .el-tree {
  679. color: #ffffff !important;
  680. background-color: rgba(77, 77, 77, 1) !important;
  681. }
  682. .el-tree-node:focus > .el-tree-node__content {
  683. background-color: #000000 !important;
  684. }
  685. .el-tree-node__content:hover {
  686. background-color: #000000 !important;
  687. }
  688. .dateBar {
  689. display: flex;
  690. flex-direction: row;
  691. align-items: center;
  692. justify-content: space-between;
  693. margin-left: 20px;
  694. }
  695. .pickers {
  696. margin-left: 20px;
  697. }
  698. .tables {
  699. margin-top: 20px;
  700. width: 95%;
  701. margin-left: 3%;
  702. position: relative;
  703. }
  704. .table {
  705. background-color: rgba(77, 77, 77, 1) !important;
  706. }
  707. .el-table td,
  708. .el-table th.is-leaf {
  709. border-bottom: 1px solid rgba(77, 77, 77, 1) !important;
  710. }
  711. .el-table__header {
  712. width: 100% !important;
  713. }
  714. .el-table__body-wrapper {
  715. background-color: rgba(77, 77, 77, 1) !important;
  716. }
  717. .el-table::before {
  718. width: 0;
  719. }
  720. tr {
  721. line-height: 1.5;
  722. background: #1e1e1e;
  723. margin-bottom: 2px;
  724. border-radius: 5px;
  725. }
  726. .table-main {
  727. font-size: 14px;
  728. width: 600px;
  729. text-align: center;
  730. background: #000000;
  731. margin: 5px;
  732. border-collapse: separate;
  733. border-spacing: 0px 5px;
  734. }
  735. .paginations {
  736. display: flex;
  737. flex-direction: row-reverse;
  738. }
  739. .titleinfoall {
  740. display: flex;
  741. position: absolute;
  742. left: 10px;
  743. bottom: 10px;
  744. }
  745. .showTitle {
  746. color: #ffffff;
  747. margin-right: 10px;
  748. }
  749. .fontSty {
  750. font-size: 12px;
  751. }
  752. .fontSty1 {
  753. font-weight: bold;
  754. }
  755. .showvalue {
  756. color: #ffffff;
  757. font-size: 14px;
  758. font-weight: bold;
  759. margin-right: 10px;
  760. }
  761. </style>
  762. <style lang="less">
  763. .el-dialog.currentBorder {
  764. border: 1px solid #eee;
  765. }
  766. .el-card.otherContentBox {
  767. background: rgb(36, 36, 36);
  768. .el-descriptions__header {
  769. color: #fff;
  770. }
  771. .el-descriptions__cell {
  772. white-space: nowrap;
  773. }
  774. .el-descriptions__body {
  775. color: #eee;
  776. background: rgb(36, 36, 36);
  777. }
  778. .empSvg {
  779. .el-empty__image {
  780. opacity: 0.9;
  781. }
  782. .el-empty__description {
  783. p {
  784. color: #eee;
  785. }
  786. }
  787. }
  788. }
  789. </style>