Home.vue 47 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148
  1. <template>
  2. <div :class="$store.state.themeName === 'light' ? 'home_light' : 'home'">
  3. <div class="top-mid-panel">
  4. <Map
  5. ref="map"
  6. :wpId="wpId"
  7. :homeSuspensionWindowsData="homeSuspensionWindowsData"
  8. :ForecastPowerNewHome_fc="ForecastPowerNewHome_fc"
  9. :ForecastPowerNewHome_gf="ForecastPowerNewHome_gf"
  10. :qyPower="qyPower"
  11. :powerDataHome="powerDataHome"
  12. :mapList="mapList"
  13. :StationinformationData="StationinformationData"
  14. :CurveValues="CurveValues"
  15. @mapClick="mapClick"
  16. @mapClicks="mapClicks"
  17. @mapClickBack="mapClickBack"
  18. @currentActiveTab="currentActiveTab"
  19. @backStation="onBackStation"
  20. ></Map>
  21. </div>
  22. <el-dialog
  23. :title="dialogTitle"
  24. v-model="dialogShow"
  25. width="80%"
  26. top="10vh"
  27. custom-class="modal"
  28. :close-on-click-modal="true"
  29. @closed="
  30. (res) => {
  31. dialogType = '';
  32. powerLineChartData = null;
  33. }
  34. "
  35. >
  36. <Table :data="dialogData" v-if="dialogType === 'table'" />
  37. <multiple-y-line-chart-normal
  38. height="800px"
  39. :list="powerLineChartData"
  40. :yAxises="powerLineChartYAxises"
  41. :showLegend="true"
  42. v-if="dialogType === 'powerLineChart' && powerLineChartData"
  43. />
  44. <multiple-y-line-chart-normal
  45. height="800px"
  46. :list="Powertrend"
  47. :yAxises="PowertrendYAxises"
  48. :showLegend="true"
  49. v-if="dialogType === 'powerLineChart' && !powerLineChartData"
  50. />
  51. <multiple-bar-chart
  52. height="800px"
  53. :units="doneLineChartData.units"
  54. :list="doneLineChartData.value"
  55. v-if="dialogType === 'doneLineChart'"
  56. />
  57. </el-dialog>
  58. </div>
  59. </template>
  60. <script>
  61. import {
  62. FindBasicDataInfo,
  63. FindPowerInfo,
  64. FindProjectplan,
  65. } from "@/api/home/home.js";
  66. import MultipleLineChartHome from "@/components/chart/line/double-line-chart-home.vue";
  67. import ListBarChart2Home from "../../components/chart/bar/list-bar-chart2-home.vue";
  68. import PowerReviewHome from "./components/power-review-home.vue";
  69. // @ is an alias to /src
  70. import Row from "../../components/coms/grid/row.vue";
  71. import Col from "../../components/coms/grid/col.vue";
  72. import ComPanel from "../../components/coms/panel/panel";
  73. // import ListBarChart from "../../components/chart/bar/list-bar-chart.vue";
  74. import ToolbarPanel from "../../components/coms/panel/toolbar-panel.vue";
  75. import MultipleBarChart from "../../components/chart/bar/multiple-bar-chart.vue";
  76. import MultipleYLineChartNormal from "../../components/chart/line/multiple-y-line-chart-normal.vue";
  77. import Panel3 from "../../components/coms/panel/panel3.vue";
  78. import SvgIcon from "../../components/coms/icon/svg-icon.vue";
  79. import CoulometricAnalysis from "./components/coulometric-analysis.vue";
  80. import Weather from "./components/weather.vue";
  81. import PowerReview from "./components/power-review.vue";
  82. import PowerPlan from "./components/power-plan.vue";
  83. import Map from "./components/map.vue";
  84. import ListBarChart2 from "../../components/chart/bar/list-bar-chart2.vue";
  85. // import ListBarChartNewHome from "../../components/chart/bar/list-bar-chart2-new-home.vue";
  86. import DoubleLineChart from "@com/chart/line/double-line-chart.vue";
  87. import api from "@api/cockpit/matrix/index.js";
  88. import Table from "./dialog/table.vue";
  89. import dayjs from "dayjs";
  90. export default {
  91. name: "Home",
  92. components: {
  93. PowerReviewHome,
  94. ListBarChart2Home,
  95. MultipleLineChartHome,
  96. Row,
  97. Col,
  98. ComPanel,
  99. Weather,
  100. CoulometricAnalysis,
  101. // ListBarChart,
  102. PowerReview,
  103. ToolbarPanel,
  104. PowerPlan,
  105. MultipleBarChart,
  106. MultipleYLineChartNormal,
  107. Panel3,
  108. SvgIcon,
  109. Map,
  110. ListBarChart2,
  111. // ListBarChartNewHome,
  112. Table,
  113. DoubleLineChart,
  114. },
  115. data() {
  116. return {
  117. wpId: "KGDL_FGS",
  118. wpIds: "KGDL_FGS0",
  119. StationinformationData: [],
  120. powerDataHome: {},
  121. ForecastPowerNewHome_fc: [],
  122. ForecastPowerNewHome_gf: [],
  123. qyPower: {},
  124. homeSuspensionWindowsData: [],
  125. CurveValues: {
  126. value: [
  127. {
  128. title: "",
  129. value: [],
  130. },
  131. ],
  132. },
  133. activeTab: 0,
  134. tabTitle: [
  135. { id: 1, title: "日" },
  136. { id: 2, title: "月" },
  137. { id: 3, title: "年" },
  138. ],
  139. tabTitle_gf: [
  140. { id: 1, title: "日" },
  141. { id: 2, title: "月" },
  142. { id: 3, title: "年" },
  143. ],
  144. newpointmapData: {},
  145. //
  146. historyWpId: "",
  147. historyPlanBtnName: "全部",
  148. timmer: null, // 计时器
  149. timmer2: null,
  150. timmer3: null,
  151. powerplanShowSingle: false,
  152. fcNum: 0,
  153. gfNum: 0,
  154. powerData: {},
  155. weatherChart: [
  156. {
  157. title: "温度",
  158. smooth: true,
  159. value: [],
  160. },
  161. {
  162. title: "湿度",
  163. smooth: true,
  164. value: [],
  165. },
  166. ],
  167. tqmap5: [],
  168. jczbmap: {},
  169. wxssmap: {},
  170. gxkmap: {},
  171. mxztmap: {},
  172. planData: {},
  173. tqmap: {},
  174. nowTime: "",
  175. planBtnName: "全部",
  176. powerLineChartYAxises: [],
  177. powerLineChartData: [
  178. {
  179. title: "",
  180. yAxisIndex: 0, // 使用单位
  181. value: [],
  182. },
  183. ],
  184. doneLineChartData: {
  185. // 图表所用单位
  186. units: [""],
  187. value: [
  188. {
  189. title: "",
  190. yAxisIndex: 0, // 使用单位
  191. value: [],
  192. },
  193. ],
  194. },
  195. dialogType: null,
  196. xtmap: {},
  197. dialogShow: false,
  198. dialogTitle: "",
  199. dialogData: {},
  200. // 预测电量
  201. ForecastPower: [],
  202. // 日发电量
  203. DayPower: {
  204. // 图表所用单位
  205. units: [""],
  206. value: [
  207. {
  208. title: "",
  209. yAxisIndex: 0, // 使用单位
  210. value: [],
  211. },
  212. ],
  213. },
  214. PowertrendYAxises: [
  215. {
  216. name: "功率",
  217. min: 0,
  218. max: null,
  219. unit: "(万kWh)",
  220. position: "left",
  221. },
  222. {
  223. name: "风速",
  224. min: 0,
  225. max: 25,
  226. unit: "(m/s)",
  227. position: "right",
  228. },
  229. ],
  230. mapList: [
  231. { text: "山西", code: "sxqyxx" },
  232. { text: "内蒙", code: "nmqyxx" },
  233. { text: "新疆", code: "xjqyxx" },
  234. { text: "河北", code: "hbqyxx" },
  235. { text: "陕西", code: "xsqyxx" },
  236. { text: "山东", code: "sdqyxx" },
  237. { text: "西藏", code: "xzqyxx" },
  238. ],
  239. penetrateType: 0,
  240. };
  241. },
  242. methods: {
  243. // 获取场站24小时功率图
  244. getData(wpId) {
  245. FindPowerInfo({ id: wpId }).then((res) => {
  246. if (res.data) {
  247. let Powertrend = {
  248. // 图表所用单位
  249. units: ["(万KWh)", "(风速)"],
  250. value: [
  251. {
  252. title: "保证功率",
  253. smooth: true, // 使用单位
  254. value: [],
  255. },
  256. {
  257. title: "理论功率",
  258. smooth: true, // 使用单位
  259. value: [],
  260. },
  261. {
  262. title: "实际功率",
  263. smooth: true, // 使用单位
  264. value: [],
  265. },
  266. ],
  267. };
  268. Powertrend.value[0].value = res.data.map((item) => {
  269. return {
  270. dateTime: dayjs()
  271. .startOf("date")
  272. .add(item.hours, "hour")
  273. .format("YYYY-MM-DD HH:mm:ss"),
  274. value: item.bzgl,
  275. };
  276. });
  277. Powertrend.value[1].value = res.data.map((item) => {
  278. return {
  279. dateTime: dayjs()
  280. .startOf("date")
  281. .add(item.hours, "hour")
  282. .format("YYYY-MM-DD HH:mm:ss"),
  283. value: item.llgl,
  284. };
  285. });
  286. Powertrend.value[2].value = res.data.map((item) => {
  287. return {
  288. dateTime: dayjs()
  289. .startOf("date")
  290. .add(item.hours, "hour")
  291. .format("YYYY-MM-DD HH:mm:ss"),
  292. value: item.sjgl,
  293. };
  294. });
  295. this.CurveValues = Powertrend.value;
  296. }
  297. });
  298. },
  299. // 请求服务
  300. requestData() {
  301. FindBasicDataInfo({ wpId: this.wpIds }).then(({ data }) => {
  302. this.StationinformationData = data;
  303. this.StationinformationData.cblpoint.fcShow = true;
  304. this.StationinformationData.cblpoint.gfShow = true;
  305. if (Object.keys(data).length) {
  306. let mapInfos = [];
  307. this.mapList.forEach((item) => {
  308. for (var key in data.sytc) {
  309. if (item.code == key) {
  310. data.sytc[key].name = item.text;
  311. mapInfos.push({ ...data.sytc[key] });
  312. }
  313. }
  314. });
  315. mapInfos.forEach((element) => {
  316. element.industryState = true;
  317. element.companyState = true;
  318. if (element.name == "山西") {
  319. if (!Object.hasOwn(element, "sxgszzjrl")) {
  320. element.companyState = false;
  321. }
  322. if (!Object.hasOwn(element, "sxcyzzjrl")) {
  323. element.industryState = false;
  324. }
  325. this.homeSuspensionWindowsData.sxqyxx = { ...element };
  326. } else if (element.name == "新疆") {
  327. if (!Object.hasOwn(element, "xjgszzjrl")) {
  328. element.companyState = false;
  329. }
  330. if (!Object.hasOwn(element, "xjcyzzjrl")) {
  331. element.industryState = false;
  332. }
  333. this.homeSuspensionWindowsData.xjqyxx = { ...element };
  334. } else if (element.name == "内蒙") {
  335. if (!Object.hasOwn(element, "nmgszzjrl")) {
  336. element.companyState = false;
  337. }
  338. if (!Object.hasOwn(element, "nmcyzzjrl")) {
  339. element.industryState = false;
  340. }
  341. this.homeSuspensionWindowsData.nmqyxx = { ...element };
  342. } else if (element.name == "西藏") {
  343. if (!Object.hasOwn(element, "xzgszzjrl")) {
  344. element.companyState = false;
  345. }
  346. if (!Object.hasOwn(element, "xzcyzzjrl")) {
  347. element.industryState = false;
  348. }
  349. this.homeSuspensionWindowsData.xzqyxx = { ...element };
  350. } else if (element.name == "山东") {
  351. if (!Object.hasOwn(element, "sdgszzjrl")) {
  352. element.companyState = false;
  353. }
  354. if (!Object.hasOwn(element, "sdcyzzjrl")) {
  355. element.industryState = false;
  356. }
  357. this.homeSuspensionWindowsData.sdqyxx = { ...element };
  358. } else if (element.name == "陕西") {
  359. if (!Object.hasOwn(element, "xsgszzjrl")) {
  360. element.companyState = false;
  361. }
  362. if (!Object.hasOwn(element, "xscyzzjrl")) {
  363. element.industryState = false;
  364. }
  365. this.homeSuspensionWindowsData.xsqyxx = { ...element };
  366. } else if (element.name == "河北") {
  367. if (!Object.hasOwn(element, "hbgszzjrl")) {
  368. element.companyState = false;
  369. }
  370. if (!Object.hasOwn(element, "hbcyzzjrl")) {
  371. element.industryState = false;
  372. }
  373. this.homeSuspensionWindowsData.hbqyxx = { ...element };
  374. }
  375. });
  376. this.powerDataHome = [
  377. {
  378. title: "清洁能源",
  379. value: (data?.qt?.sjgl / 1000).toFixed(2),
  380. dialogTitle: "清洁能源",
  381. subUrl: "genreset/findGLDetail",
  382. targetName: "bzgl",
  383. dialogType: "powerLineChart",
  384. max: 3000,
  385. },
  386. {
  387. title: "风电",
  388. value: (data?.qt?.fdsjgl / 1000).toFixed(2),
  389. dialogTitle: "保证功率详情",
  390. subUrl: "genreset/findGLDetail",
  391. targetName: "bzgl",
  392. dialogType: "powerLineChart",
  393. max: 3000,
  394. },
  395. {
  396. title: "光伏",
  397. value: (data?.qt?.gfsjgl / 1000).toFixed(2),
  398. dialogTitle: "保证功率详情",
  399. subUrl: "genreset/findGLDetail",
  400. targetName: "bzgl",
  401. dialogType: "powerLineChart",
  402. max: 3000,
  403. },
  404. ];
  405. let sbztmap = {
  406. fd: {},
  407. gf: {},
  408. };
  409. for (var key in data.mxztmap) {
  410. let a = key.substring(3, key.length);
  411. if (key.includes("gf_")) {
  412. sbztmap.gf[a] = data.mxztmap[key];
  413. } else if (key.includes("fd_")) {
  414. sbztmap.fd[a] = data.mxztmap[key];
  415. }
  416. }
  417. this.StationinformationData.sbztmap = sbztmap;
  418. }
  419. });
  420. },
  421. // 发电量
  422. findProjectPlan() {
  423. FindProjectplan({ wpId: this.wpIds }).then(({ data }) => {
  424. this.qyPower = data.proplanmap;
  425. this.ForecastPowerNewHome_fc = [
  426. [
  427. {
  428. name: "日发电量",
  429. id: "day",
  430. value: data?.proplanmap
  431. ? data?.proplanmap?.fd_r_sjdl < 0
  432. ? 0
  433. : (data?.proplanmap?.fd_r_sjdl / 10000).toFixed(2)
  434. : 0,
  435. color: 1,
  436. total: data?.proplanmap
  437. ? data?.proplanmap?.fd_r_jhdl < 0
  438. ? 0
  439. : data?.proplanmap?.fd_r_jhdl
  440. : 0,
  441. },
  442. ],
  443. [
  444. {
  445. name: "月发电量",
  446. id: "month",
  447. value: data?.proplanmap
  448. ? data?.proplanmap?.fd_y_sjdl < 0
  449. ? 0
  450. : (data?.proplanmap?.fd_y_sjdl / 10000).toFixed(2)
  451. : 0,
  452. color: 1,
  453. total: data?.proplanmap
  454. ? data?.proplanmap?.fd_y_jhdl < 0
  455. ? 0
  456. : data?.proplanmap?.fd_y_jhdl
  457. : 0,
  458. },
  459. ],
  460. [
  461. {
  462. name: "年发电量",
  463. id: "year",
  464. value: data?.proplanmap
  465. ? data?.proplanmap?.fd_n_sjdl < 0
  466. ? 0
  467. : (data?.proplanmap?.fd_n_sjdl / 10000).toFixed(2)
  468. : 0,
  469. color: 0,
  470. total: data?.proplanmap
  471. ? data?.proplanmap?.fd_n_jhdl < 0
  472. ? 0
  473. : data?.proplanmap?.fd_n_jhdl
  474. : 0,
  475. },
  476. ],
  477. ];
  478. this.ForecastPowerNewHome_gf = [
  479. [
  480. {
  481. name: "日发电量",
  482. id: "day",
  483. value: data?.proplanmap
  484. ? data?.proplanmap?.gf_r_sjdl < 0
  485. ? 0
  486. : (data?.proplanmap?.gf_r_sjdl / 10000).toFixed(2)
  487. : 0,
  488. color: 1,
  489. total: data?.proplanmap
  490. ? data?.proplanmap?.gf_r_jhdl < 0
  491. ? 0
  492. : data?.proplanmap?.gf_r_jhdl
  493. : 0,
  494. },
  495. ],
  496. [
  497. {
  498. name: "月发电量",
  499. id: "month",
  500. value: data?.proplanmap
  501. ? data?.proplanmap?.gf_y_sjdl < 0
  502. ? 0
  503. : (data?.proplanmap?.gf_y_sjdl / 10000).toFixed(2)
  504. : 0,
  505. color: 1,
  506. total: data?.proplanmap
  507. ? data?.proplanmap?.gf_y_jhdl < 0
  508. ? 0
  509. : data?.proplanmap?.gf_y_jhdl
  510. : 0,
  511. },
  512. ],
  513. [
  514. {
  515. name: "年发电量",
  516. id: "year",
  517. value: data?.proplanmap
  518. ? data?.proplanmap?.gf_n_sjdl < 0
  519. ? 0
  520. : (data?.proplanmap?.gf_n_sjdl / 10000).toFixed(2)
  521. : 0,
  522. color: 0,
  523. total: data?.proplanmap
  524. ? data?.proplanmap?.gf_n_jhdl < 0
  525. ? 0
  526. : data?.proplanmap?.gf_n_jhdl
  527. : 0,
  528. },
  529. ],
  530. ];
  531. });
  532. },
  533. // 点击地图展示类型
  534. mapClick(wpId, activeTab) {
  535. clearInterval(this.timmer);
  536. clearInterval(this.timmer2);
  537. this.timmer = null;
  538. this.timmer2 = null;
  539. this.activeTab = activeTab;
  540. this.wpId = wpId;
  541. this.wpIds =
  542. wpId.includes("FDC") || wpId.includes("GDC") ? wpId : wpId + activeTab;
  543. this.requestData();
  544. this.findProjectPlan();
  545. this.timmer = setInterval(() => {
  546. this.requestData();
  547. }, 5000);
  548. this.timmer2 = setInterval(() => {
  549. this.findProjectPlan(); //发电量
  550. if (this.penetrateType == 3) {
  551. this.getData(this.wpIds); //24小时功率曲线
  552. }
  553. }, 15 * 60 * 1000);
  554. },
  555. mapClicks(wpId, activeTab) {
  556. this.historyWpId = wpId;
  557. this.mapClick(wpId, activeTab);
  558. },
  559. mapClickBack(wpId, activeTab) {
  560. this.historyWpId = wpId;
  561. this.activeTab = activeTab;
  562. this.mapClick(this.historyWpId, activeTab);
  563. },
  564. currentActiveTab(penetrateType) {
  565. this.penetrateType = penetrateType;
  566. if (penetrateType === 3) {
  567. this.getData(this.wpIds);
  568. }
  569. },
  570. },
  571. created() {},
  572. mounted() {},
  573. unmounted() {
  574. clearInterval(this.timmer);
  575. clearInterval(this.timmer2);
  576. this.timmer = null;
  577. this.timmer2 = null;
  578. },
  579. };
  580. </script>
  581. <style lang="less">
  582. .top-distance {
  583. top: 97px !important;
  584. }
  585. .el-col + .el-col {
  586. padding-left: 0;
  587. }
  588. .home {
  589. width: 100%;
  590. height: 100%;
  591. background: url(../../assets/newHome_h.png);
  592. background-repeat: round;
  593. .date {
  594. display: flex;
  595. flex-direction: row;
  596. align-items: center;
  597. font-size: 12px;
  598. font-family: Microsoft YaHei;
  599. font-weight: 400;
  600. color: #b3b3b3;
  601. position: absolute;
  602. right: 0;
  603. top: -20px;
  604. .day {
  605. display: flex;
  606. align-items: center;
  607. justify-content: center;
  608. width: 30px;
  609. height: 22px;
  610. border: 1px solid #0f5e30;
  611. border-radius: 11px 0px 0px 11px;
  612. background: rgba(67, 81, 107, 0.2);
  613. &.active {
  614. background: rgba(5, 187, 76, 0.4);
  615. color: #ffffff;
  616. }
  617. }
  618. .mouth {
  619. display: flex;
  620. align-items: center;
  621. justify-content: center;
  622. width: 30px;
  623. height: 22px;
  624. border-top: 1px solid #0f5e30;
  625. border-bottom: 1px solid #0f5e30;
  626. background: rgba(67, 81, 107, 0.2);
  627. &.active {
  628. background: rgba(5, 187, 76, 0.4);
  629. color: #ffffff;
  630. }
  631. }
  632. .year {
  633. display: flex;
  634. align-items: center;
  635. justify-content: center;
  636. width: 30px;
  637. height: 22px;
  638. border: 1px solid #0f5e30;
  639. border-radius: 0px 11px 11px 0px;
  640. background: rgba(67, 81, 107, 0.2);
  641. &.active {
  642. background: rgba(5, 187, 76, 0.4);
  643. color: #ffffff;
  644. }
  645. }
  646. }
  647. @keyframes safe_power {
  648. 0% {
  649. left: -320px;
  650. }
  651. 20% {
  652. left: -300px;
  653. }
  654. 100% {
  655. left: 48px;
  656. }
  657. }
  658. .safe_power {
  659. animation: safe_power 2.5s linear;
  660. }
  661. .security-days {
  662. position: absolute;
  663. top: 65px;
  664. left: 37px;
  665. font-weight: 400;
  666. z-index: 4;
  667. .text {
  668. font-size: 20px;
  669. font-family: Microsoft YaHei;
  670. margin-bottom: 12px;
  671. color: #ffffff;
  672. }
  673. .num {
  674. font-size: 35px;
  675. font-family: Bicubik;
  676. color: #05bb4c;
  677. .unit {
  678. font-size: 12px;
  679. font-family: Microsoft YaHei;
  680. margin-left: 5px;
  681. }
  682. }
  683. .security {
  684. margin-top: 15px;
  685. .unit-t {
  686. font-size: 14px;
  687. font-family: Adobe Heiti Std;
  688. color: #05bb4c;
  689. margin-left: 5px;
  690. }
  691. }
  692. .lineBox {
  693. .fd-rl,
  694. .gf-rl {
  695. font-size: 14px;
  696. font-family: Microsoft YaHei;
  697. color: #ffffff;
  698. .font-num {
  699. font-size: 16px;
  700. font-family: Bicubik;
  701. color: #05bb4c;
  702. margin: 0 5px;
  703. }
  704. .unit {
  705. font-size: 12px;
  706. color: #5e6269;
  707. }
  708. }
  709. .gf-rl {
  710. margin-top: 12px;
  711. .font-num {
  712. color: #ff8300;
  713. }
  714. }
  715. }
  716. }
  717. .qjny-info {
  718. background: rgba(0, 0, 0, 0.3);
  719. border-radius: 8px;
  720. bottom: 369px;
  721. position: absolute;
  722. padding: 20px 10px;
  723. z-index: 5;
  724. left: 37px;
  725. .qty_img {
  726. position: relative;
  727. left: -39px;
  728. top: -16px;
  729. animation: move 1s infinite linear;
  730. }
  731. .qty_content {
  732. margin-top: -25px;
  733. }
  734. ul {
  735. display: flex;
  736. li {
  737. width: 170px;
  738. height: 170px;
  739. margin-left: 20px;
  740. line-height: 30px;
  741. }
  742. .line {
  743. border-right: 1px dashed #252e43;
  744. width: 1px;
  745. margin-left: 0;
  746. margin-right: 5px;
  747. }
  748. }
  749. .qty_tit {
  750. font-size: 14px;
  751. position: relative;
  752. left: 75px;
  753. bottom: 50px;
  754. color: #999999;
  755. .qty_u {
  756. position: relative;
  757. top: 23px;
  758. left: -38px;
  759. }
  760. }
  761. .qty_value {
  762. font-size: 14px;
  763. position: relative;
  764. top: 26px;
  765. left: -54px;
  766. color: #05bb4c;
  767. font-family: "AgencyFB-Reg";
  768. font-weight: bold;
  769. .qty_u {
  770. font-size: 12px;
  771. color: #999999;
  772. margin-left: 20px;
  773. }
  774. }
  775. .qty_imag {
  776. font-size: 14px;
  777. color: #999999;
  778. .qty_val {
  779. font-family: "AgencyFB-Reg";
  780. font-weight: bold;
  781. color: #ffffff;
  782. margin: 0 20px;
  783. }
  784. .qty_unit {
  785. font-size: 12px;
  786. color: #999999;
  787. }
  788. }
  789. .qty_imag:first-of-type {
  790. margin-top: 10px;
  791. }
  792. }
  793. .switch-jrqk {
  794. position: absolute;
  795. top: 40%;
  796. left: 80%;
  797. backdrop-filter: blur(5px);
  798. z-index: 5;
  799. font-size: 16px;
  800. color: #fff;
  801. background: rgba(0, 0, 0, 0.3);
  802. border-radius: 8px;
  803. padding: 20px 10px;
  804. border: 1px solid #05bb4c;
  805. > div {
  806. margin-bottom: 10px;
  807. > img {
  808. display: inline-block;
  809. margin-right: 10px;
  810. vertical-align: -4%;
  811. }
  812. }
  813. }
  814. .ecoName {
  815. width: 406px;
  816. height: 138px;
  817. background: rgba(0, 0, 0, 0.3);
  818. border-radius: 8px;
  819. bottom: 210px;
  820. position: absolute;
  821. z-index: 4;
  822. left: 37px;
  823. .ecoTitle {
  824. width: 350px;
  825. height: 45px;
  826. border-bottom: 1px solid #252e43;
  827. margin: 0 auto;
  828. font-size: 16px;
  829. font-weight: 400;
  830. color: #ffffff;
  831. line-height: 45px;
  832. position: relative;
  833. span {
  834. position: absolute;
  835. right: 0;
  836. font-size: 12px;
  837. font-family: Source Han Sans SC;
  838. color: #b1b1b1;
  839. }
  840. }
  841. ul {
  842. display: flex;
  843. text-align: center;
  844. width: 350px;
  845. height: 92px;
  846. margin: 0 auto;
  847. justify-content: space-between;
  848. align-items: center;
  849. .eco_count {
  850. line-height: 23px;
  851. width: 25%;
  852. .kind {
  853. height: 23px;
  854. text-align: center;
  855. svg {
  856. width: 40px;
  857. height: 40px;
  858. margin-top: -10px;
  859. }
  860. }
  861. .eco_val {
  862. font-size: 14px;
  863. font-family: SourceHanSansCN;
  864. color: #ffffff;
  865. &.text-ellipsis {
  866. overflow: hidden;
  867. white-space: nowrap;
  868. text-overflow: ellipsis;
  869. -o-text-overflow: ellipsis;
  870. }
  871. }
  872. .eco_name {
  873. font-size: 12px;
  874. color: #b3b3b3;
  875. }
  876. }
  877. }
  878. }
  879. .my_echarts {
  880. width: 700px;
  881. height: 150px;
  882. background: rgba(0, 0, 0, 0.3);
  883. border-radius: 6px;
  884. position: absolute;
  885. bottom: 38px;
  886. left: 37px;
  887. z-index: 4;
  888. }
  889. @keyframes card {
  890. 0% {
  891. right: -360px;
  892. }
  893. 20% {
  894. right: -300px;
  895. }
  896. 100% {
  897. right: 37px;
  898. }
  899. }
  900. .card {
  901. width: 434px;
  902. background: rgba(0, 0, 0, 0.3);
  903. padding: 25px;
  904. position: absolute;
  905. right: 37px;
  906. animation: card 2.5s linear;
  907. }
  908. .wind_card {
  909. z-index: 5;
  910. height: 158px;
  911. top: 38px;
  912. .el-col {
  913. flex: 1;
  914. position: relative;
  915. }
  916. .grid-content {
  917. text-align: center;
  918. cursor: pointer;
  919. .img {
  920. position: relative;
  921. width: 84px;
  922. height: 84px;
  923. background: url("../../assets/imgs/instrumentPanel.png") no-repeat;
  924. img {
  925. position: absolute;
  926. top: 50%;
  927. left: 50%;
  928. transform: rotateZ(360deg);
  929. transform-origin: left top;
  930. }
  931. .information {
  932. font-size: 14px;
  933. color: #2b99ff;
  934. font-family: "Arial";
  935. position: absolute;
  936. width: 100%;
  937. top: 32px;
  938. }
  939. > .unit {
  940. width: 100%;
  941. color: #7d838c;
  942. text-align: center;
  943. position: absolute;
  944. top: 65px;
  945. }
  946. p {
  947. position: absolute;
  948. left: 50%;
  949. bottom: -36%;
  950. white-space: nowrap;
  951. transform: translateX(-50%);
  952. }
  953. }
  954. }
  955. }
  956. .electric_card {
  957. height: 320px;
  958. top: 217px;
  959. right: 37px;
  960. z-index: 5;
  961. .el-row {
  962. align-items: center;
  963. margin-bottom: 31px;
  964. .el-col:first-child {
  965. text-align: right;
  966. margin-right: 10px;
  967. color: #b3b3b3;
  968. }
  969. .el-col:last-child {
  970. text-align: left;
  971. margin-left: 10px;
  972. font-size: 14px;
  973. font-family: "Arial";
  974. }
  975. }
  976. .el-row:nth-child(2) {
  977. .electric {
  978. .progress_bar {
  979. background: linear-gradient(90deg, #561f00, #853000, #f78712);
  980. .img {
  981. background: url("../../assets/imgs/generatingCapacityDay.png")
  982. no-repeat;
  983. }
  984. }
  985. .count {
  986. color: #ff8300;
  987. }
  988. }
  989. }
  990. .el-header {
  991. display: flex;
  992. justify-content: space-between;
  993. .title {
  994. font-size: 16px;
  995. font-family: "SourceHanSansSC-Regular";
  996. }
  997. .unit {
  998. color: #b1b1b1;
  999. }
  1000. }
  1001. .electric {
  1002. width: 100%;
  1003. height: 4.5px;
  1004. background-color: rgba(142, 176, 255, 0.2);
  1005. .progress_bar {
  1006. position: relative;
  1007. height: 100%;
  1008. max-width: 100%;
  1009. background: linear-gradient(90deg, #001442, #1c99ff);
  1010. .img {
  1011. background: url("../../assets/imgs/generatingCapacityMonth.png")
  1012. no-repeat;
  1013. position: absolute;
  1014. display: inline-block;
  1015. width: 39px;
  1016. height: 39px;
  1017. top: -17px;
  1018. right: -22px;
  1019. transform: scale(0.8);
  1020. }
  1021. .count {
  1022. position: absolute;
  1023. top: -30px;
  1024. right: -22px;
  1025. font-size: 14px;
  1026. color: #2b99ff;
  1027. font-family: "Arial";
  1028. font-weight: bolder;
  1029. }
  1030. .dot {
  1031. display: inline-block;
  1032. width: 22.4px;
  1033. height: 22.4px;
  1034. border-radius: 50%;
  1035. border: 1px solid #ff8300;
  1036. background-color: #573e27;
  1037. position: absolute;
  1038. right: -11px;
  1039. top: -9px;
  1040. text-align: center;
  1041. line-height: 22.4px;
  1042. .dots_center {
  1043. display: inline-block;
  1044. width: 12px;
  1045. height: 12px;
  1046. border-radius: 50%;
  1047. background-color: #fec448;
  1048. box-shadow: 0px 0px 13px 12px #e77409a8;
  1049. }
  1050. }
  1051. .percentage {
  1052. position: absolute;
  1053. top: -8px;
  1054. right: -50px;
  1055. font-family: "Arial";
  1056. }
  1057. }
  1058. }
  1059. .summarize {
  1060. position: absolute;
  1061. bottom: 0;
  1062. margin-bottom: 0;
  1063. margin-left: -25px;
  1064. width: 100%;
  1065. height: 80px;
  1066. background-color: rgba(0, 0, 0, 0.2);
  1067. border-bottom-left-radius: 8px;
  1068. border-bottom-right-radius: 8px;
  1069. color: #b3b3b3;
  1070. padding: 0 35px;
  1071. justify-content: space-between;
  1072. .summarize-left {
  1073. text-align: left !important;
  1074. cursor: pointer;
  1075. }
  1076. .summarize-right {
  1077. text-align: left !important;
  1078. cursor: pointer;
  1079. }
  1080. p:last-child {
  1081. margin-top: 8px;
  1082. span:first-child {
  1083. font-size: 18px;
  1084. color: #ffffff;
  1085. display: inline-block;
  1086. width: 110px;
  1087. text-align: left;
  1088. font-family: "Arial";
  1089. }
  1090. }
  1091. .line {
  1092. width: 1px;
  1093. height: 48px;
  1094. background: #252e43;
  1095. }
  1096. }
  1097. }
  1098. .station_card {
  1099. height: 302px;
  1100. top: 557px;
  1101. right: 37px;
  1102. padding: 24px 14px;
  1103. color: #7d838c;
  1104. z-index: 5;
  1105. > .card_header {
  1106. line-height: 48px;
  1107. .el-col:first-child {
  1108. img {
  1109. margin-right: 30px;
  1110. vertical-align: -10%;
  1111. }
  1112. span {
  1113. font-size: 20px;
  1114. color: #05bb4c;
  1115. display: inline-block;
  1116. width: 70px;
  1117. font-family: Arial;
  1118. line-height: 33px;
  1119. }
  1120. }
  1121. .el-col:last-child {
  1122. text-align: right;
  1123. span {
  1124. padding: 0 6px;
  1125. font-size: 20px;
  1126. text-align: center;
  1127. font-family: AgencyFB-Reg-Light;
  1128. color: #ffffff;
  1129. line-height: 33px;
  1130. }
  1131. }
  1132. }
  1133. > .el-row:last-child {
  1134. border: none;
  1135. margin-bottom: 0;
  1136. }
  1137. }
  1138. .infos-echarts {
  1139. padding: 10px;
  1140. background-color: rgba(3, 5, 9, 0.5);
  1141. }
  1142. .model-bg-new-right {
  1143. width: 100%;
  1144. min-height: 135px;
  1145. background-color: rgba(3, 5, 9, 0.5);
  1146. border-radius: 6px;
  1147. display: flex;
  1148. flex-direction: column;
  1149. // padding: 1% 5%;
  1150. .power-charts {
  1151. display: flex;
  1152. flex-direction: row;
  1153. align-items: flex-end;
  1154. width: 100%;
  1155. margin-top: 10px;
  1156. .power-name-old {
  1157. width: 80px;
  1158. margin-bottom: 10px;
  1159. color: #999999;
  1160. }
  1161. .power-name {
  1162. width: 80px;
  1163. margin-bottom: 20px;
  1164. color: #999999;
  1165. }
  1166. .power-item {
  1167. display: flex;
  1168. flex-direction: column;
  1169. width: 360px;
  1170. .power-value-old {
  1171. display: flex;
  1172. flex-direction: row;
  1173. align-items: center;
  1174. justify-content: space-between;
  1175. margin-bottom: -12px;
  1176. padding: 0 15px;
  1177. .green-value {
  1178. color: #05bb4c;
  1179. }
  1180. .purple-value {
  1181. color: #4b55ae;
  1182. }
  1183. }
  1184. .power-value {
  1185. font-size: 12px;
  1186. margin-bottom: -31px;
  1187. font-family: Bicubik;
  1188. margin-left: 255px;
  1189. span:nth-child(1) {
  1190. width: 5px;
  1191. height: 5px;
  1192. border-radius: 5px;
  1193. display: inline-block;
  1194. background-color: #fff;
  1195. margin-right: 5px;
  1196. }
  1197. .green-value {
  1198. color: #05bb4c;
  1199. }
  1200. .purple-value {
  1201. color: #4b55ae;
  1202. }
  1203. }
  1204. }
  1205. }
  1206. .infos {
  1207. display: flex;
  1208. flex-direction: column;
  1209. width: 50%;
  1210. height: 100%;
  1211. width: 100%;
  1212. .titles {
  1213. display: flex;
  1214. flex-direction: row;
  1215. align-items: center;
  1216. justify-content: space-between;
  1217. // padding: 0 15px;
  1218. height: 50%;
  1219. .amount {
  1220. display: flex;
  1221. flex-direction: row;
  1222. align-items: center;
  1223. .amount-image {
  1224. margin-left: -42px;
  1225. }
  1226. .amount-nums {
  1227. font-size: 12px;
  1228. color: #7d838c;
  1229. margin-left: 10px;
  1230. display: flex;
  1231. flex-direction: row;
  1232. align-items: baseline;
  1233. .num-item {
  1234. font-size: 20px;
  1235. color: #ffffff;
  1236. margin-right: 5px;
  1237. }
  1238. }
  1239. }
  1240. .info-nums {
  1241. display: flex;
  1242. align-items: baseline;
  1243. font-size: 14px;
  1244. color: #7d838c;
  1245. .nums {
  1246. font-size: 20px;
  1247. color: #ffffff;
  1248. margin: 0 5px;
  1249. }
  1250. }
  1251. }
  1252. .tabSwitchover {
  1253. // height: 23px;
  1254. margin-top: 5px;
  1255. .tabSwitchover-item {
  1256. width: 42px;
  1257. line-height: 23px;
  1258. text-align: center;
  1259. color: #b3b3b3;
  1260. float: left;
  1261. cursor: pointer;
  1262. }
  1263. .tab-active {
  1264. border-bottom: 1px solid rgb(39, 219, 54);
  1265. background: linear-gradient(
  1266. to top,
  1267. rgba(5, 187, 76, 0.5),
  1268. rgba(5, 187, 76, 0)
  1269. );
  1270. }
  1271. .unit {
  1272. text-align: right;
  1273. color: #b1b1b1;
  1274. font-size: 12px;
  1275. // float: right;
  1276. }
  1277. }
  1278. .types {
  1279. display: flex;
  1280. flex-direction: row;
  1281. align-items: center;
  1282. height: 50%;
  1283. width: 100%;
  1284. margin-top: 15px;
  1285. padding-bottom: 10px;
  1286. border-bottom: 1px solid #302c2c;
  1287. .type-model {
  1288. display: flex;
  1289. flex-direction: column;
  1290. justify-content: space-between;
  1291. align-items: center;
  1292. width: 16%;
  1293. // height: 75%;
  1294. font-size: 16px;
  1295. .type-name {
  1296. font-size: 14px;
  1297. font-family: Agency FB;
  1298. margin-bottom: 10px;
  1299. }
  1300. .type-num {
  1301. height: 15px;
  1302. }
  1303. }
  1304. }
  1305. }
  1306. }
  1307. .base-info {
  1308. height: 186px;
  1309. background: rgba(3, 5, 9, 0.5);
  1310. position: absolute;
  1311. bottom: 4%;
  1312. left: 43px;
  1313. display: flex;
  1314. flex-direction: row;
  1315. border-radius: 6px;
  1316. .charts {
  1317. width: 100%;
  1318. height: 100%;
  1319. position: relative;
  1320. margin-left: 1%;
  1321. .energy-title {
  1322. // margin-left: 2%;
  1323. margin-top: 1%;
  1324. font-size: 16px;
  1325. color: #fff;
  1326. }
  1327. .dots {
  1328. width: 0.185vh;
  1329. height: 0.185vh;
  1330. border-radius: 50%;
  1331. background-color: @write;
  1332. position: absolute;
  1333. &.left {
  1334. left: 0.37vh;
  1335. }
  1336. &.top {
  1337. top: 0.37vh;
  1338. }
  1339. }
  1340. .charts-item {
  1341. // margin-left: 5%;
  1342. margin-top: 10px;
  1343. }
  1344. }
  1345. }
  1346. .model-bg-new {
  1347. width: 100%;
  1348. min-height: 135px;
  1349. background-color: rgba(3, 5, 9, 0.5);
  1350. border-radius: 6px;
  1351. display: flex;
  1352. flex-direction: column;
  1353. padding: 10px;
  1354. .titles {
  1355. height: 45px;
  1356. border-bottom: 1px solid #333333;
  1357. display: flex;
  1358. flex-direction: row;
  1359. align-items: center;
  1360. justify-content: space-between;
  1361. .name {
  1362. font-size: 16px;
  1363. color: #ffffff;
  1364. }
  1365. .unit {
  1366. font-size: 12px;
  1367. color: #b1b1b1;
  1368. }
  1369. }
  1370. .save {
  1371. display: flex;
  1372. flex-direction: row;
  1373. align-items: center;
  1374. width: 100%;
  1375. margin: 17px 0;
  1376. .save-item {
  1377. width: 25%;
  1378. display: flex;
  1379. flex-direction: column;
  1380. align-items: center;
  1381. .kind {
  1382. width: 20px;
  1383. height: 22px;
  1384. .kind-img {
  1385. width: 100%;
  1386. height: 100%;
  1387. }
  1388. }
  1389. .save-value {
  1390. font-size: 16px;
  1391. color: #ffffff;
  1392. margin: 10px 0;
  1393. }
  1394. .save-name {
  1395. font-size: 12px;
  1396. color: #b3b3b3;
  1397. }
  1398. }
  1399. }
  1400. }
  1401. .model-bg {
  1402. width: 100%;
  1403. min-height: 135px;
  1404. background-color: rgba(3, 5, 9, 0.5);
  1405. border-radius: 6px;
  1406. display: flex;
  1407. flex-direction: column;
  1408. padding: 1% 5%;
  1409. .titles {
  1410. height: 45px;
  1411. border-bottom: 1px solid #333333;
  1412. display: flex;
  1413. flex-direction: row;
  1414. align-items: center;
  1415. justify-content: space-between;
  1416. .name {
  1417. font-size: 16px;
  1418. color: #ffffff;
  1419. }
  1420. .unit {
  1421. font-size: 12px;
  1422. color: #b1b1b1;
  1423. }
  1424. }
  1425. .save {
  1426. display: flex;
  1427. flex-direction: row;
  1428. align-items: center;
  1429. width: 100%;
  1430. margin: 17px 0;
  1431. .save-item {
  1432. width: 25%;
  1433. display: flex;
  1434. flex-direction: column;
  1435. align-items: center;
  1436. .kind {
  1437. width: 20px;
  1438. height: 22px;
  1439. .kind-img {
  1440. width: 100%;
  1441. height: 100%;
  1442. }
  1443. }
  1444. .save-value {
  1445. font-size: 16px;
  1446. color: #ffffff;
  1447. margin: 10px 0;
  1448. }
  1449. .save-name {
  1450. font-size: 12px;
  1451. color: #b3b3b3;
  1452. }
  1453. }
  1454. }
  1455. }
  1456. }
  1457. .home_light {
  1458. width: 100%;
  1459. height: 100%;
  1460. background: url(../../assets/newHome_b.png);
  1461. background-repeat: round;
  1462. .model-bg-new-right {
  1463. width: 100%;
  1464. min-height: 135px;
  1465. background-color: rgba(83, 98, 104, 0.2);
  1466. border-radius: 6px;
  1467. display: flex;
  1468. flex-direction: column;
  1469. // padding: 1% 5%;
  1470. .infos {
  1471. display: flex;
  1472. flex-direction: column;
  1473. width: 50%;
  1474. height: 100%;
  1475. width: 100%;
  1476. .titles {
  1477. display: flex;
  1478. flex-direction: row;
  1479. align-items: center;
  1480. justify-content: space-between;
  1481. // padding: 0 15px;
  1482. height: 50%;
  1483. .amount {
  1484. display: flex;
  1485. flex-direction: row;
  1486. align-items: center;
  1487. .amount-image {
  1488. margin-left: -42px;
  1489. }
  1490. .amount-nums {
  1491. font-size: 12px;
  1492. color: #7d838c;
  1493. margin-left: 10px;
  1494. display: flex;
  1495. flex-direction: row;
  1496. align-items: baseline;
  1497. .num-item {
  1498. font-size: 20px;
  1499. color: #ffffff;
  1500. margin-right: 5px;
  1501. }
  1502. }
  1503. }
  1504. .info-nums {
  1505. display: flex;
  1506. align-items: baseline;
  1507. font-size: 14px;
  1508. color: #7d838c;
  1509. .nums {
  1510. font-size: 20px;
  1511. color: #ffffff;
  1512. margin: 0 5px;
  1513. }
  1514. }
  1515. }
  1516. .tabSwitchover {
  1517. // height: 23px;
  1518. margin-top: 5px;
  1519. .tabSwitchover-item {
  1520. width: 42px;
  1521. line-height: 23px;
  1522. text-align: center;
  1523. color: #000;
  1524. float: left;
  1525. cursor: pointer;
  1526. }
  1527. .tab-active {
  1528. border-bottom: 1px solid rgb(39, 219, 54);
  1529. background: linear-gradient(
  1530. to top,
  1531. rgba(5, 187, 76, 0.5),
  1532. rgba(5, 187, 76, 0)
  1533. );
  1534. }
  1535. .unit {
  1536. height: 35px;
  1537. line-height: 35px;
  1538. color: #000;
  1539. font-size: 12px;
  1540. // float: right;
  1541. }
  1542. }
  1543. .types {
  1544. display: flex;
  1545. flex-direction: row;
  1546. align-items: center;
  1547. height: 50%;
  1548. width: 100%;
  1549. margin-top: 15px;
  1550. padding-bottom: 10px;
  1551. border-bottom: 1px solid #302c2c;
  1552. .type-model {
  1553. display: flex;
  1554. flex-direction: column;
  1555. justify-content: space-between;
  1556. align-items: center;
  1557. width: 16%;
  1558. // height: 75%;
  1559. font-size: 16px;
  1560. .type-name {
  1561. font-size: 14px;
  1562. font-family: Agency FB;
  1563. margin-bottom: 10px;
  1564. }
  1565. .type-num {
  1566. height: 15px;
  1567. }
  1568. }
  1569. }
  1570. }
  1571. // .power-charts {
  1572. // display: flex;
  1573. // flex-direction: row;
  1574. // align-items: flex-end;
  1575. // width: 100%;
  1576. // margin-top: 10px;
  1577. // .power-name {
  1578. // width: 80px;
  1579. // margin-bottom: 10px;
  1580. // color: #000;
  1581. // }
  1582. // .power-item {
  1583. // display: flex;
  1584. // flex-direction: column;
  1585. // width: 300px;
  1586. // .power-value {
  1587. // border: 1px solid #fff;
  1588. // margin-bottom: -12px;
  1589. // padding: 0 15px;
  1590. // .green-value {
  1591. // color: #05BB4C;
  1592. // }
  1593. // .purple-value {
  1594. // color: #4B55AE;
  1595. // }
  1596. // }
  1597. // }
  1598. // }
  1599. }
  1600. .base-info {
  1601. height: 186px;
  1602. background: rgba(83, 98, 104, 0.2);
  1603. position: absolute;
  1604. bottom: 4%;
  1605. left: 117px;
  1606. display: flex;
  1607. flex-direction: row;
  1608. border-radius: 6px;
  1609. .charts {
  1610. width: 100%;
  1611. height: 100%;
  1612. position: relative;
  1613. margin-left: 1%;
  1614. .energy-title {
  1615. // margin-left: 2%;
  1616. margin-top: 1%;
  1617. font-size: 16px;
  1618. color: #000;
  1619. }
  1620. .dots {
  1621. width: 0.185vh;
  1622. height: 0.185vh;
  1623. border-radius: 50%;
  1624. background-color: @write;
  1625. position: absolute;
  1626. &.left {
  1627. left: 0.37vh;
  1628. }
  1629. &.top {
  1630. top: 0.37vh;
  1631. }
  1632. }
  1633. .charts-item {
  1634. // margin-left: 5%;
  1635. margin-top: 10px;
  1636. }
  1637. }
  1638. }
  1639. .model-bg-new {
  1640. width: 100%;
  1641. min-height: 135px;
  1642. background-color: #d1d6d9;
  1643. border-radius: 6px;
  1644. display: flex;
  1645. flex-direction: column;
  1646. padding: 1% 5%;
  1647. .titles {
  1648. height: 45px;
  1649. border-bottom: 1px solid #333333;
  1650. display: flex;
  1651. flex-direction: row;
  1652. align-items: center;
  1653. justify-content: space-between;
  1654. .name {
  1655. font-size: 16px;
  1656. color: #000;
  1657. }
  1658. .unit {
  1659. font-size: 12px;
  1660. color: #000;
  1661. }
  1662. }
  1663. .save {
  1664. display: flex;
  1665. flex-direction: row;
  1666. align-items: center;
  1667. width: 100%;
  1668. margin: 17px 0;
  1669. .save-item {
  1670. width: 25%;
  1671. display: flex;
  1672. flex-direction: column;
  1673. align-items: center;
  1674. .kind {
  1675. width: 20px;
  1676. height: 22px;
  1677. .kind-img {
  1678. width: 100%;
  1679. height: 100%;
  1680. }
  1681. }
  1682. .save-value {
  1683. font-size: 16px;
  1684. color: #ffffff;
  1685. margin: 10px 0;
  1686. }
  1687. .save-name {
  1688. font-size: 12px;
  1689. color: #b3b3b3;
  1690. }
  1691. }
  1692. }
  1693. }
  1694. .model-bg {
  1695. width: 100%;
  1696. min-height: 135px;
  1697. background-color: rgba(83, 98, 104, 0.2);
  1698. border-radius: 6px;
  1699. display: flex;
  1700. flex-direction: column;
  1701. padding: 1% 5%;
  1702. .titles {
  1703. height: 45px;
  1704. border-bottom: 1px solid #333333;
  1705. display: flex;
  1706. flex-direction: row;
  1707. align-items: center;
  1708. justify-content: space-between;
  1709. .name {
  1710. font-size: 16px;
  1711. color: #000000;
  1712. }
  1713. .unit {
  1714. font-size: 12px;
  1715. color: #606769;
  1716. }
  1717. }
  1718. .save {
  1719. display: flex;
  1720. flex-direction: row;
  1721. align-items: center;
  1722. width: 100%;
  1723. margin: 17px 0;
  1724. .save-item {
  1725. width: 25%;
  1726. display: flex;
  1727. flex-direction: column;
  1728. align-items: center;
  1729. .kind {
  1730. width: 20px;
  1731. height: 22px;
  1732. .kind-img {
  1733. width: 100%;
  1734. height: 100%;
  1735. }
  1736. }
  1737. .save-value {
  1738. font-size: 16px;
  1739. color: #ffffff;
  1740. margin: 10px 0;
  1741. }
  1742. .save-name {
  1743. font-size: 12px;
  1744. color: #b3b3b3;
  1745. }
  1746. }
  1747. }
  1748. }
  1749. }
  1750. // .right {
  1751. // width: 400px;
  1752. // height: 100px;
  1753. // position: absolute;
  1754. // right: 25px;
  1755. // top: 60px;
  1756. // z-index: 2;
  1757. // margin-top: 20px;
  1758. // }
  1759. .right {
  1760. width: 450px;
  1761. height: 100px;
  1762. position: absolute;
  1763. right: 25px;
  1764. top: 25px;
  1765. z-index: 2;
  1766. }
  1767. .com-panel {
  1768. height: 100%;
  1769. .panel-body {
  1770. height: calc(100% - 32px);
  1771. }
  1772. }
  1773. .top-mid-panel {
  1774. flex: 1 1 auto;
  1775. height: 100%;
  1776. }
  1777. .model-item {
  1778. display: flex;
  1779. flex-direction: row;
  1780. justify-content: space-between;
  1781. align-items: center;
  1782. }
  1783. .infos {
  1784. display: flex;
  1785. flex-direction: column;
  1786. width: 50%;
  1787. height: 100%;
  1788. width: 370px;
  1789. padding: 10px;
  1790. .titles {
  1791. display: flex;
  1792. flex-direction: row;
  1793. align-items: center;
  1794. justify-content: space-between;
  1795. padding: 0 15px;
  1796. height: 50%;
  1797. .amount {
  1798. display: flex;
  1799. flex-direction: row;
  1800. align-items: center;
  1801. .amount-image {
  1802. margin-left: -42px;
  1803. }
  1804. .amount-nums {
  1805. font-size: 12px;
  1806. color: #7d838c;
  1807. margin-left: 10px;
  1808. display: flex;
  1809. flex-direction: row;
  1810. align-items: baseline;
  1811. .num-item {
  1812. font-size: 20px;
  1813. color: #ffffff;
  1814. margin-right: 5px;
  1815. }
  1816. }
  1817. }
  1818. .info-nums {
  1819. display: flex;
  1820. align-items: baseline;
  1821. font-size: 14px;
  1822. color: #7d838c;
  1823. .nums {
  1824. font-size: 20px;
  1825. color: #ffffff;
  1826. margin: 0 5px;
  1827. }
  1828. }
  1829. }
  1830. .types {
  1831. display: flex;
  1832. flex-direction: row;
  1833. align-items: center;
  1834. height: 50%;
  1835. width: 100%;
  1836. .type-model {
  1837. display: flex;
  1838. flex-direction: column;
  1839. justify-content: space-between;
  1840. align-items: center;
  1841. width: 14%;
  1842. height: 75%;
  1843. font-size: 16px;
  1844. .type-name {
  1845. font-size: 14px;
  1846. }
  1847. }
  1848. }
  1849. }
  1850. .fengji-icon {
  1851. border-radius: 50%;
  1852. width: 49px;
  1853. height: 49px;
  1854. box-shadow: inset 1.5px -1px 1px 0px @green;
  1855. animation: fadenum 5s linear infinite;
  1856. @keyframes fadenum {
  1857. 100% {
  1858. transform: rotate(360deg);
  1859. }
  1860. }
  1861. svg {
  1862. width: 25px;
  1863. height: 22px;
  1864. }
  1865. }
  1866. .jnjp-icon {
  1867. svg {
  1868. width: 25px;
  1869. height: 25px;
  1870. }
  1871. }
  1872. .jnjp-icon1 {
  1873. margin-top: -10px;
  1874. svg {
  1875. width: 40px;
  1876. height: 40px;
  1877. }
  1878. }
  1879. .power-charts {
  1880. display: flex;
  1881. flex-direction: row;
  1882. align-items: flex-end;
  1883. width: 100%;
  1884. margin-top: 10px;
  1885. .power-name-old {
  1886. width: 80px;
  1887. margin-bottom: 10px;
  1888. color: #7a8385;
  1889. }
  1890. .power-name {
  1891. width: 80px;
  1892. margin-bottom: 20px;
  1893. color: #000;
  1894. }
  1895. .power-item {
  1896. display: flex;
  1897. flex-direction: column;
  1898. width: 360px;
  1899. .power-value-old {
  1900. display: flex;
  1901. flex-direction: row;
  1902. align-items: center;
  1903. justify-content: space-between;
  1904. margin-bottom: -12px;
  1905. padding: 0 15px;
  1906. .green-value {
  1907. color: #05bb4c;
  1908. }
  1909. .purple-value {
  1910. color: #4b55ae;
  1911. }
  1912. }
  1913. .power-value {
  1914. font-size: 12px;
  1915. margin-bottom: -31px;
  1916. font-family: Bicubik;
  1917. margin-left: 255px;
  1918. span:nth-child(1) {
  1919. width: 5px;
  1920. height: 5px;
  1921. border-radius: 5px;
  1922. display: inline-block;
  1923. background-color: #fff;
  1924. margin-right: 5px;
  1925. }
  1926. .green-value {
  1927. color: #05bb4c;
  1928. }
  1929. .purple-value {
  1930. color: #4b55ae;
  1931. }
  1932. }
  1933. }
  1934. }
  1935. // .power-charts {
  1936. // display: flex;
  1937. // flex-direction: row;
  1938. // align-items: flex-end;
  1939. // width: 100%;
  1940. // margin-top: 10px;
  1941. // .power-name {
  1942. // width: 80px;
  1943. // margin-bottom: 20px;
  1944. // color: #7a8385;
  1945. // }
  1946. // .power-item {
  1947. // display: flex;
  1948. // flex-direction: column;
  1949. // width: 300px;
  1950. // .power-value-old {
  1951. // display: flex;
  1952. // flex-direction: row;
  1953. // align-items: center;
  1954. // justify-content: space-between;
  1955. // margin-bottom: -12px;
  1956. // padding: 0 15px;
  1957. // .green-value {
  1958. // color: #05BB4C;
  1959. // }
  1960. // .purple-value {
  1961. // color: #4B55AE;
  1962. // }
  1963. // }
  1964. // .power-value {
  1965. // font-size: 12px;
  1966. // margin-bottom: -31px;
  1967. // font-family: Bicubik;
  1968. // margin-left: 255px;
  1969. // span:nth-child(1) {
  1970. // width: 5px;
  1971. // height: 5px;
  1972. // border-radius: 5px;
  1973. // display: inline-block;
  1974. // background-color: #fff;
  1975. // margin-right: 5px;
  1976. // }
  1977. // .green-value {
  1978. // color: #05BB4C;
  1979. // }
  1980. // .purple-value {
  1981. // color: #4B55AE;
  1982. // }
  1983. // }
  1984. // }
  1985. // }
  1986. </style>