Home.vue 47 KB

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