panoramicPower.vue 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792
  1. <template>
  2. <div class="panoramicPowerPage" :class="!theme ? 'themeDark' : 'themeLight'">
  3. <div class="windStstus">
  4. <div class="everyOne" v-for="(item, index) in !theme ? statusData : statusDataW" :key="index"
  5. :style="statusSty(item)">
  6. <div class="everyOneImg" style="width: 39px">
  7. <img :src="item.img" alt="" />
  8. </div>
  9. <span class="statusName"
  10. :style="{ color: `${!theme ? item.borderSty : '#fff'}` }">{{ item.name }}</span>
  11. <span class="statusNum" :style="statusNumSty(item)">{{
  12. item.number
  13. }}</span>
  14. </div>
  15. <div class="windLeft">
  16. <div class="windMsg">
  17. <span>总装机:</span>
  18. <span>{{ allStatus.zzj }}台组</span>
  19. </div>
  20. <div class="windMsg">
  21. <span>总装机容量:</span>
  22. <span>{{ allStatus.zzjrl }}Mw</span>
  23. </div>
  24. </div>
  25. </div>
  26. <div class="lineMain" :style="pageHeight" v-loading="loading">
  27. <el-row>
  28. <el-col :span="8" v-for="(item, index) in chartsData" :key="index">
  29. <div class="lineStyle" v-on:dblclick="doubleclick(item)" style="position: relative">
  30. <div style="
  31. display: flex;
  32. float: right;
  33. justify-content: end;
  34. margin-right: 53px;
  35. ">
  36. <div v-for="it in item.showpowerLegend" :key="it.name">
  37. <span class="lineColor" :style="{ background: it.color }"></span>
  38. <span class="powerLegendColor" :style="{ background: it.color }"></span>
  39. <span :style="!theme ? 'color: #fff' : ''" style="
  40. font-size: 12px;
  41. margin-left: 12px;
  42. position: relative;
  43. top: 1px;
  44. ">{{ it.name }}</span>
  45. </div>
  46. </div>
  47. <div class="chart-name">
  48. <div class="point point-left bottom"></div>
  49. <div class="point point-right bottom"></div>
  50. </div>
  51. <div :id="'lineChart' + Number(index + 1)" :style="lineChartStyle"></div>
  52. </div>
  53. </el-col>
  54. </el-row>
  55. </div>
  56. <panorama-dialog ref="panorama" from="panoramicPower" :ExceedTimeList="ExceedTimeList"
  57. :echartsTheme="echartsTheme" :theme="theme"></panorama-dialog>
  58. </div>
  59. </template>
  60. <script>
  61. import panoramaDialog from "@/components/powerPredictionComponent/panoramicPowerDialog/panoramaPowerDialogPage.vue";
  62. import {
  63. apiGetpanoramicPowerCharts,
  64. apiGetStatusInfoAll
  65. } from "../../api/api";
  66. import oneimg from "@/assets/windStatusPic/yunxing.png";
  67. import twoimg from "@/assets/windStatusPic/daiji.png";
  68. import threeimg from "@/assets/windStatusPic/weihu.png";
  69. import fourimg from "@/assets/windStatusPic/tingji.png";
  70. import fiveimg from "@/assets/windStatusPic/xiandian.png";
  71. import siximg from "@/assets/windStatusPic/shoulei.png";
  72. import sevenimg from "@/assets/windStatusPic/guzhang.png";
  73. import oneimg1 from "@/assets/windStatusPic/yunxing_W.png";
  74. import twoimg1 from "@/assets/windStatusPic/daiji_W.png";
  75. import threeimg1 from "@/assets/windStatusPic/weihu_W.png";
  76. import fourimg1 from "@/assets/windStatusPic/tingji_W.png";
  77. import fiveimg1 from "@/assets/windStatusPic/xiandian_W.png";
  78. import siximg1 from "@/assets/windStatusPic/shoulei_W.png";
  79. import sevenimg1 from "@/assets/windStatusPic/guzhang_W.png";
  80. import jsonData from "./component/panoramicPower.json";
  81. import {
  82. apiGethomeData
  83. } from "@/api/gengra";
  84. export default {
  85. components: {
  86. panoramaDialog,
  87. },
  88. data() {
  89. return {
  90. statusData: [],
  91. statusDataW: [],
  92. chartsData: [],
  93. weatherDataFromApi: {},
  94. pickerTime: [],
  95. loading: false,
  96. planFiveMin: "",
  97. allStatus: {},
  98. showpowerLegend: [],
  99. echartsTheme: "",
  100. theme: null,
  101. wpId: "GJNY_SXGS_DBXNY_ZGS0",
  102. };
  103. },
  104. watch: {
  105. "$store.state.theme": {
  106. handler: function (newVal, oldVal) {
  107. this.theme = newVal;
  108. this.echartsTheme = !newVal ? "dark" : "";
  109. this.getChartData();
  110. },
  111. immediate: true,
  112. },
  113. },
  114. created() {
  115. this.weatherDataFromApi = JSON.parse(
  116. window.sessionStorage.getItem("weatherData")
  117. );
  118. this.statusData = [{
  119. img: oneimg,
  120. name: "运行",
  121. nameEn: "yxsum",
  122. borderSty: "#1C99FF",
  123. backSty: "#0046C7",
  124. numBack: "#212223",
  125. number: 0,
  126. },
  127. {
  128. img: twoimg,
  129. name: "待机",
  130. nameEn: "djsum",
  131. borderSty: "#05BB4C",
  132. backSty: "#258952",
  133. numBack: "#212223",
  134. number: 0,
  135. },
  136. {
  137. img: fiveimg,
  138. name: "限电",
  139. nameEn: "xdsum",
  140. borderSty: "#C530C8",
  141. backSty: "#7A277F",
  142. numBack: "#212223",
  143. number: 0,
  144. },
  145. {
  146. img: sevenimg,
  147. name: "故障",
  148. nameEn: "jxsum",
  149. borderSty: "#BA3237",
  150. backSty: "#73262B",
  151. numBack: "#212223",
  152. number: 0,
  153. },
  154. {
  155. img: threeimg,
  156. name: "维护",
  157. nameEn: "whsum",
  158. borderSty: "#E17D24",
  159. backSty: "#694119",
  160. numBack: "#212223",
  161. number: 0,
  162. },
  163. {
  164. img: siximg,
  165. name: "受累",
  166. nameEn: "tjsum",
  167. borderSty: "#fff",
  168. backSty: "#38393B",
  169. numBack: "#212223",
  170. number: 0,
  171. },
  172. {
  173. img: fourimg,
  174. name: "离线",
  175. nameEn: "lxsum",
  176. borderSty: "#52595B",
  177. backSty: "#272a2b",
  178. numBack: "#212223",
  179. number: 0,
  180. },
  181. ];
  182. this.statusDataW = [{
  183. img: oneimg1,
  184. name: "运行",
  185. nameEn: "yxsum",
  186. borderSty: "#3777E8",
  187. backSty: "#1850B3",
  188. numBack: "#073484",
  189. number: 0,
  190. },
  191. {
  192. img: twoimg1,
  193. name: "待机",
  194. nameEn: "djsum",
  195. borderSty: "#6BDB97",
  196. backSty: "#0EAC4C",
  197. numBack: "#077C35",
  198. number: 0,
  199. },
  200. {
  201. img: fiveimg1,
  202. name: "限电",
  203. nameEn: "xdsum",
  204. borderSty: "#E757EA",
  205. backSty: "#C530C8",
  206. numBack: "#901193",
  207. number: 0,
  208. },
  209. {
  210. img: sevenimg1,
  211. name: "故障",
  212. nameEn: "jxsum",
  213. borderSty: "#73262B",
  214. backSty: "#BA3237",
  215. numBack: "#881B1F",
  216. number: 0,
  217. },
  218. {
  219. img: threeimg1,
  220. name: "维护",
  221. nameEn: "whsum",
  222. borderSty: "#F1AF74",
  223. backSty: "#E17D24",
  224. numBack: "#A6530A",
  225. number: 0,
  226. },
  227. {
  228. img: fourimg1,
  229. name: "受累",
  230. nameEn: "tjsum",
  231. borderSty: "#CDCDCD",
  232. backSty: "#A8A8A8",
  233. numBack: "#878787",
  234. number: 0,
  235. },
  236. {
  237. img: siximg1,
  238. name: "离线",
  239. nameEn: "lxsum",
  240. borderSty: "#595D61",
  241. backSty: "#38393B",
  242. numBack: "#151719",
  243. number: 0,
  244. },
  245. ];
  246. this.ExceedTimeList = [{
  247. label: "超前15分钟",
  248. value: 0,
  249. },
  250. {
  251. label: "超前30分钟",
  252. value: 1,
  253. },
  254. {
  255. label: "超前45分钟",
  256. value: 2,
  257. },
  258. {
  259. label: "超前1小时",
  260. value: 3,
  261. },
  262. {
  263. label: "超前1小时15分钟",
  264. value: 4,
  265. },
  266. {
  267. label: "超前1小时30分钟",
  268. value: 5,
  269. },
  270. {
  271. label: "超前1小时45分钟",
  272. value: 6,
  273. },
  274. {
  275. label: "超前2小时",
  276. value: 7,
  277. },
  278. {
  279. label: "超前2小时15分钟",
  280. value: 8,
  281. },
  282. {
  283. label: "超前2小时30分钟",
  284. value: 9,
  285. },
  286. {
  287. label: "超前2小时45分钟",
  288. value: 10,
  289. },
  290. {
  291. label: "超前3小时",
  292. value: 11,
  293. },
  294. {
  295. label: "超前3小时15分钟",
  296. value: 12,
  297. },
  298. {
  299. label: "超前3小时30分钟",
  300. value: 13,
  301. },
  302. {
  303. label: "超前3小时45分钟",
  304. value: 14,
  305. },
  306. {
  307. label: "超前4小时",
  308. value: 15,
  309. },
  310. {
  311. label: "超前5小时",
  312. value: 19,
  313. },
  314. {
  315. label: "超前6小时",
  316. value: 23,
  317. },
  318. ];
  319. this.pickerTime = [
  320. new Date(
  321. new Date(new Date().getTime()).setHours(0, 0, 0, 0) + 900 * 1000
  322. ),
  323. new Date(
  324. new Date(new Date().getTime()).setHours(0, 0, 0, 0) +
  325. 24 * 60 * 60 * 1000 -
  326. 1000
  327. ),
  328. ];
  329. },
  330. mounted() {
  331. let that = this;
  332. // that.initPageData();
  333. // that.getChartData();
  334. that.getWindStatus();
  335. that.planFiveMin = setInterval(function () {
  336. that.getChartData();
  337. }, 300000);
  338. },
  339. computed: {
  340. pageHeight() {
  341. return {
  342. // 'width': '100%',
  343. height: document.documentElement.clientHeight - 110 + "px",
  344. };
  345. },
  346. lineChartStyle() {
  347. let heightChart = "";
  348. // let pageHeight = document.documentElement.clientHeight-120-(Math.ceil(this.chartsData.length/3)*40)
  349. let pageHeight =
  350. document.documentElement.clientHeight -
  351. 100 -
  352. Math.ceil(this.chartsData.length / 3) * 40;
  353. if (this.chartsData.length <= 3) {
  354. heightChart = "350px";
  355. } else {
  356. heightChart = pageHeight / Math.ceil(this.chartsData.length / 3) + "px";
  357. }
  358. return {
  359. width: "100%",
  360. height: heightChart,
  361. // 'height': '300px'
  362. };
  363. },
  364. },
  365. beforeRouteLeave(to, from, next) {
  366. next();
  367. if (this.planFiveMin) {
  368. clearInterval(this.planFiveMin);
  369. this.planFiveMin = null;
  370. }
  371. },
  372. methods: {
  373. initPageData() {
  374. const that = this;
  375. that.$nextTick(() => {
  376. {
  377. let xAxis = [];
  378. xAxis = jsonData.panoramicPowerData.dateList.map((it) =>
  379. it.substring(it.indexOf(" ") + 1, it.length)
  380. );
  381. that.chartsData = jsonData.panoramicPowerData.stationInformationList;
  382. that.chartsData.forEach((item, index) => {
  383. item.showpowerLegend = [{
  384. name: "理论",
  385. color: "#5672c4",
  386. },
  387. {
  388. name: "可用",
  389. color: "#95cc7a",
  390. },
  391. {
  392. name: "AGC",
  393. color: "#f7c75f",
  394. },
  395. {
  396. name: "超短期",
  397. color: "#e96366",
  398. },
  399. {
  400. name: "实际",
  401. color: "#7ac1dd",
  402. },
  403. ];
  404. let legend = [];
  405. let series = [];
  406. let namess = "";
  407. for (let i = 0; i < item.dataFormatList.length; i++) {
  408. if (item.dataFormatList[i].name !== "短期") {
  409. legend.push(item.dataFormatList[i].name);
  410. namess = item.name;
  411. let seriesObj = {
  412. name: item.dataFormatList[i].name,
  413. type: "line",
  414. data: item.dataFormatList[i].data.map((it) => {
  415. return this.$utils.isHasNum(it);
  416. }),
  417. symbol: "none",
  418. };
  419. series.push(seriesObj);
  420. }
  421. }
  422. this.$nextTick(() => {
  423. this.getPowerLine(namess, index, xAxis, legend, series);
  424. });
  425. });
  426. that.loading = false;
  427. }
  428. that.statusData.forEach((item) => {
  429. for (let it in jsonData.unitStatusInfoAllData) {
  430. if (item.nameEn === it) {
  431. item.number = jsonData.unitStatusInfoAllData[it];
  432. }
  433. }
  434. });
  435. that.statusDataW.forEach((item) => {
  436. for (let it in jsonData.unitStatusInfoAllData) {
  437. if (item.nameEn === it) {
  438. item.number = jsonData.unitStatusInfoAllData[it];
  439. }
  440. }
  441. });
  442. that.allStatus = jsonData.unitStatusInfoAllData;
  443. });
  444. },
  445. statusSty(item) {
  446. return `border: 1px solid ${item.borderSty};background: ${item.backSty}`;
  447. },
  448. statusNumSty(item) {
  449. return `border: 1px solid ${item.borderSty};background:${item.numBack}`;
  450. },
  451. doubleclick(item) {
  452. console.log("db", item);
  453. this.$refs.panorama.dialogVisible = true;
  454. this.$refs.panorama.stationData = item;
  455. this.$refs.panorama.title = item.name + "功率预测";
  456. this.$refs.panorama.pickerTime = this.pickerTime;
  457. this.$nextTick(() => {
  458. this.$refs.panorama.getChartsData();
  459. this.$refs.panorama.getTableData();
  460. });
  461. },
  462. //获取风机状态
  463. getWindStatus() {
  464. let that = this;
  465. let params = {
  466. wpId: this.wpId,
  467. };
  468. apiGethomeData(params)
  469. .then((res) => {
  470. if (res && res.data.ztmap) {
  471. that.statusData.forEach((item) => {
  472. for (let it in res.data.ztmap) {
  473. if (item.nameEn === it) {
  474. item.number = res.data.ztmap[it];
  475. }
  476. }
  477. });
  478. that.statusDataW.forEach((item) => {
  479. for (let it in res.data.ztmap) {
  480. if (item.nameEn === it) {
  481. item.number = res.data.ztmap[it];
  482. }
  483. }
  484. });
  485. }
  486. })
  487. apiGetStatusInfoAll().then((datas) => {
  488. if (datas) {
  489. if (datas.data) {
  490. that.allStatus = datas.data;
  491. }
  492. }
  493. });
  494. },
  495. statusIcon(type) {
  496. let picture = "";
  497. if (type === "1") {
  498. picture = "yunxingPic";
  499. } else if (type === "2") {
  500. picture = "daijiPic";
  501. } else if (type === "3") {
  502. picture = "weihuPic";
  503. } else if (type === "4") {
  504. picture = "tingjiPic";
  505. } else if (type === "5") {
  506. picture = "xiandianPic";
  507. } else if (type === "6") {
  508. picture = "lixianPic";
  509. } else if (type === "7") {
  510. picture = "jianxiuPic";
  511. }
  512. return picture;
  513. },
  514. getChartData() {
  515. this.loading = true;
  516. this.chartsData = [];
  517. apiGetpanoramicPowerCharts().then((datas) => {
  518. if (datas && datas.data) {
  519. let xAxis = [];
  520. if (datas.data.dateList) {
  521. xAxis = datas.data.dateList.map((it) =>
  522. it.substring(it.indexOf(" ") + 1, it.length)
  523. );
  524. }
  525. if (datas.data.stationInformationList) {
  526. this.chartsData = datas.data.stationInformationList;
  527. this.chartsData.forEach((item, index) => {
  528. item.showpowerLegend = [{
  529. name: "理论",
  530. color: "#5672c4",
  531. },
  532. {
  533. name: "可用",
  534. color: "#95cc7a",
  535. },
  536. {
  537. name: "AGC",
  538. color: "#f7c75f",
  539. },
  540. {
  541. name: "超短期",
  542. color: "#e96366",
  543. },
  544. {
  545. name: "实际",
  546. color: "#7ac1dd",
  547. },
  548. ];
  549. let legend = [];
  550. let series = [];
  551. let namess = "";
  552. for (let i = 0; i < item.dataFormatList.length; i++) {
  553. if (item.dataFormatList[i].name !== "短期") {
  554. legend.push(item.dataFormatList[i].name);
  555. namess = item.name;
  556. let seriesObj = {
  557. name: item.dataFormatList[i].name,
  558. type: "line",
  559. data: item.dataFormatList[i].data.map((it) => {
  560. return this.$utils.isHasNum(it);
  561. }),
  562. symbol: "none",
  563. };
  564. series.push(seriesObj);
  565. }
  566. }
  567. this.$nextTick(() => {
  568. this.getPowerLine(namess, index, xAxis, legend, series);
  569. });
  570. });
  571. }
  572. this.loading = false;
  573. }
  574. });
  575. },
  576. getPowerLine(name, numxc, xAxis, legend, series) {
  577. let namevc = "lineChart" + Number(numxc + 1);
  578. let option = {
  579. title: {
  580. text: name,
  581. textStyle: {
  582. fontSize: "16",
  583. fontWeight: "bold",
  584. },
  585. },
  586. tooltip: {
  587. trigger: "axis",
  588. formatter: (item) => {
  589. // debugger
  590. let str =
  591. `<span style="display:inline-block;margin-bottom: 5px">${item[0].axisValue}</span></br>`;
  592. let strMsg = "";
  593. if (item.length > 1) {
  594. item.forEach((it, index) => {
  595. // if (index !== 3) {
  596. if (it.seriesName !== "超短期") {
  597. strMsg = `<div style="margin-bottom: 5px">
  598. <span style="display:inline-block;margin-right:4px;margin-top:3px;border-radius:10px;width:10px;height:10px;background-color:${it.color};\"></span>&nbsp;
  599. <span style="display:inline-block;">${it.seriesName}:</span>&nbsp;&nbsp;<span>${it.value}</span>
  600. </div>`;
  601. this.chartsData[numxc].showpowerLegend[index].name =
  602. it.seriesName;
  603. this.chartsData[numxc].showpowerLegend[index].color = it.color;
  604. } else {
  605. if (it.axisValue === "00:15:00") {
  606. it.color = "#e96366";
  607. }
  608. strMsg = `<div style="margin-bottom: 5px">
  609. <span style="display:inline-block;margin-right:4px;margin-top:3px;border-radius:10px;width:10px;height:10px;background-color:${
  610. it.color
  611. };\"></span>&nbsp;
  612. <span style="display:inline-block;">${
  613. it.color === "#e96366" ? "超短期" : "短期"
  614. }:</span>&nbsp;&nbsp;<span>${it.value}</span>
  615. </div>`;
  616. if (it.color === "#e96366") {
  617. this.chartsData[numxc].showpowerLegend[index].name = "超短期";
  618. } else {
  619. this.chartsData[numxc].showpowerLegend[index].name = "短期";
  620. }
  621. this.chartsData[numxc].showpowerLegend[index].color = it.color;
  622. }
  623. str = str + strMsg;
  624. });
  625. } else {
  626. if (item[0].axisValue === "00:15:00") {
  627. item[0].color = "#e96366";
  628. }
  629. strMsg = `<div style="margin-bottom: 5px">
  630. <span style="display:inline-block;margin-right:4px;margin-top:3px;border-radius:10px;width:10px;height:10px;background-color:${
  631. item[0].color
  632. };\"></span>&nbsp;
  633. <span style="display:inline-block;">${
  634. item[0].color === "#e96366" ? "超短期" : "短期"
  635. }:</span>&nbsp;&nbsp;<span>${item[0].value}</span>
  636. </div>`;
  637. if (item[0].color === "#e96366") {
  638. this.chartsData[numxc].showpowerLegend[3].name = "超短期";
  639. } else {
  640. this.chartsData[numxc].showpowerLegend[3].name = "短期";
  641. }
  642. this.chartsData[numxc].showpowerLegend[3].color = item[0].color;
  643. str = str + strMsg;
  644. }
  645. return str;
  646. },
  647. },
  648. legend: {
  649. top: 0,
  650. right: 0,
  651. data: legend,
  652. show: false,
  653. },
  654. grid: {
  655. left: "5%",
  656. right: "4%",
  657. bottom: "3%",
  658. containLabel: true,
  659. },
  660. xAxis: {
  661. type: "category",
  662. boundaryGap: false,
  663. data: xAxis,
  664. },
  665. yAxis: {
  666. type: "value",
  667. name: "兆瓦(Mw)",
  668. },
  669. series: series,
  670. };
  671. let hour = new Date().getHours() + 6;
  672. let min = new Date().getMinutes();
  673. let allTime = "";
  674. let num = 0;
  675. if (0 <= min && min < 15) {
  676. allTime = hour + ":00:00";
  677. } else if (15 <= min && min < 30) {
  678. allTime = hour + ":15:00";
  679. } else if (30 <= min && min < 45) {
  680. allTime = hour + ":30:00";
  681. } else if (45 <= min && min < 60) {
  682. allTime = hour + ":45:00";
  683. }
  684. xAxis.forEach((item, index) => {
  685. if (item === allTime) {
  686. num = index;
  687. }
  688. });
  689. if (num > 0) {
  690. option.visualMap = {
  691. show: false,
  692. dimension: 0,
  693. seriesIndex: 3,
  694. pieces: [{
  695. gt: 0,
  696. lte: num,
  697. color: "#e96366",
  698. },
  699. {
  700. gt: num,
  701. color: "#39ccd9",
  702. },
  703. ],
  704. };
  705. }
  706. if (!this.theme) {
  707. option.backgroundColor = "";
  708. }
  709. // 基于准备好的dom,初始化echarts实例
  710. let dom = document.getElementById(namevc);
  711. dom.removeAttribute("_echarts_instance_") ?
  712. dom.removeAttribute("_echarts_instance_") :
  713. "";
  714. let myChart = this.$echarts.init(dom, this.echartsTheme);
  715. myChart.setOption(option);
  716. window.addEventListener("resize", function () {
  717. myChart.resize();
  718. });
  719. },
  720. },
  721. };
  722. </script>
  723. <style lang="less" scoped>
  724. @import "../../viewsCss/panoramicPowerLess.less";
  725. .themeDark {
  726. .homePage_main {
  727. background: #040c0b;
  728. }
  729. .lineMain {
  730. background: #040c0b;
  731. .lineStyle {
  732. background: #161f1e;
  733. .chart-name {
  734. display: flex;
  735. align-items: center;
  736. position: absolute;
  737. top: 0;
  738. height: 39px;
  739. width: 96%;
  740. border-bottom: 1px solid rgba(153, 153, 153, 0.5);
  741. .point {
  742. width: 6px;
  743. height: 1px;
  744. background-color: #ffffff;
  745. position: absolute;
  746. &.point-left {
  747. left: 0;
  748. }
  749. &.point-right {
  750. right: 0;
  751. }
  752. &.top {
  753. top: -1px;
  754. }
  755. &.bottom {
  756. bottom: -1px;
  757. }
  758. }
  759. }
  760. }
  761. }
  762. }
  763. .themeLight {
  764. .windStstus {
  765. // background: linear-gradient(0deg, transparent, #373590);
  766. }
  767. .lineMain {
  768. background: #edeffb;
  769. .lineStyle {
  770. background: #fff;
  771. }
  772. }
  773. }
  774. </style>