App.vue 70 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873
  1. <template>
  2. <div
  3. v-if="!showSisView"
  4. id="screen"
  5. :style="{
  6. width: `${style.width}px`,
  7. height: `${style.height}px`,
  8. transform: `${style.transform}`,
  9. }"
  10. >
  11. <div class="main">
  12. <div class="header-body" v-if="hideHeard === '0'">
  13. <!-- <div class="header-title" @click="handleClickJump()"> -->
  14. <!-- <img v-if="$store.state.themeName === 'dark'" src="./assets/projectLogo.png" alt="" />
  15. <img v-if="$store.state.themeName === 'light'" src="./assets/light-projectLogo.png" alt="" /> -->
  16. <!-- <img src="./assets/logonx.png" alt="" /> -->
  17. <!-- <span
  18. :style="
  19. $store.state.themeName === 'dark'
  20. ? 'color:#fff; font-size:18px;font-family: SimHei'
  21. : 'color:#000'
  22. "
  23. >
  24. &gt;&gt;&nbsp;演示平台</span
  25. > -->
  26. <!-- </div> -->
  27. <div class="header-menu-nxf">
  28. <nxf-header />
  29. </div>
  30. <!-- <div class="header-menu-body">
  31. <tab-header />
  32. </div> -->
  33. </div>
  34. <!-- <div
  35. class="menu-body"
  36. :class="{ hover: isFixed ? true : isShowMenu }"
  37. @mouseenter="showMenu"
  38. @mouseleave="hideMenu"
  39. v-show="$store.state?.menuData?.length"
  40. >
  41. <Menu />
  42. </div> -->
  43. <div class="elmenuSty" style="background: #08172c; height: 100%">
  44. <el-menu
  45. :default-active="$route.path"
  46. router
  47. :unique-opened="true"
  48. :collapse="isCollapse"
  49. :collapse-transition="false"
  50. text-color="#fff"
  51. background-color="#132444"
  52. active-text-color="#fff"
  53. :style="`height:${
  54. switchTabShow() ? 'calc(100% - 72px - 80px)' : '100%'
  55. };margin-top:${switchTabShow() ? '30px' : '0'};${
  56. showMenuData?.[0]?.width && !isCollapse
  57. ? `width: ${showMenuData?.[0]?.width}`
  58. : ''
  59. }`"
  60. >
  61. <template v-for="menu in showMenuData">
  62. <el-sub-menu
  63. :key="menu.index"
  64. :index="menu.index"
  65. v-if="menu.children"
  66. :disabled="menu.index === '' ? true : false"
  67. >
  68. <template #title>
  69. <div class="elGrounpTitleAll" v-if="!isCollapse">
  70. <!-- <div v-html="menu.svg" class="svgSty"></div> -->
  71. <span style="margin-left: 10px" class="chSpna">{{
  72. menu.name
  73. }}</span>
  74. </div>
  75. <div class="elGrounpTitle" v-else>
  76. <div v-html="menu.svg" class="svgSty"></div>
  77. </div>
  78. </template>
  79. <!-- :class="getSelectState(menuitem)" -->
  80. <el-menu-item-group
  81. v-for="(menuitem, index) in menu.children"
  82. :key="index"
  83. class="elsubMenu"
  84. :class="getSelectState(menuitem.index)"
  85. >
  86. <el-menu-item :index="menuitem.index" class="grounpItem">
  87. <!-- <span class="grounpItemSty"></span> -->
  88. <span class="grounpItemSpan">{{ menuitem.name }}</span>
  89. </el-menu-item>
  90. </el-menu-item-group>
  91. </el-sub-menu>
  92. <el-menu-item
  93. :key="menu.index"
  94. :index="menu.index"
  95. :route="menu.index"
  96. v-else
  97. class="noGrounpItem"
  98. :style="noGrounpItemFn(menu.index)"
  99. >
  100. <div class="elMenuTitle elMenuTitleAll" v-if="!isCollapse">
  101. <!-- <div v-html="menu.svg" class="svgSty"></div> -->
  102. <span class="titspan" :class="getSelectState(menu.index)">{{
  103. menu.name
  104. }}</span>
  105. </div>
  106. <div class="elMenuTitle" v-else>
  107. <div v-html="menu.svg" style="display: flex"></div>
  108. </div>
  109. </el-menu-item>
  110. </template>
  111. </el-menu>
  112. </div>
  113. <div class="main-body" :style="pagestyFn(routepath)">
  114. <!-- :style="{ paddingLeft: isFixed && menuLength > 0 ? '52px' : 0 }" -->
  115. <router-view />
  116. </div>
  117. <alarmBadge />
  118. </div>
  119. <div class="curTabsBox" v-if="switchTabShow()">
  120. <div
  121. class="item"
  122. :class="activeTab === 'yxzb' ? 'active' : ''"
  123. @click="openWeb"
  124. >
  125. 运行指标
  126. </div>
  127. <div
  128. class="item"
  129. :class="activeTab === 'jjfx' ? 'active' : ''"
  130. @click="jumpUrl"
  131. >
  132. 经济分析
  133. </div>
  134. </div>
  135. <!-- <div v-else class="login"><login-page @onLogin="login" /></div> -->
  136. </div>
  137. </template>
  138. <script>
  139. import { alarm_history, fetchStationListAll } from "@/api/zhbj/index.js";
  140. // 导入header.vue文件
  141. import alarmBadge from "@/components/alarm-badge/index.vue";
  142. import Menu from "@/views/layout/Menu.vue";
  143. import Header from "@/views/layout/Header.vue";
  144. import nxfHeader from "@/views/layout/nxfHeader.vue";
  145. import tabHeader from "@/views/layout/tabHeader.vue";
  146. import LoginPage from "./views/layout/login-page.vue";
  147. import { GetBoosterlist } from "@/api/factoryMonitor/index.js";
  148. import { getApiWeatherstation } from "@/api/monthlyPerformanceAnalysis";
  149. import { getAllStation } from "@/api/common.js";
  150. import SvgIcon from "@com/coms/icon/svg-icon.vue";
  151. import { GetDeviceTableData } from "@/api/zhbj/index.js";
  152. import { ElNotification } from "element-plus";
  153. import dayjs, { locale } from "dayjs";
  154. import $ from "jquery";
  155. export default {
  156. components: {
  157. Menu,
  158. Header,
  159. tabHeader,
  160. nxfHeader,
  161. LoginPage,
  162. alarmBadge,
  163. SvgIcon,
  164. },
  165. data() {
  166. return {
  167. activeTab: "jjfx",
  168. routepath: "",
  169. showMenuData: [],
  170. isCollapse: false,
  171. isShowMenu: false,
  172. // 当前子系统
  173. root: "",
  174. // isLogined: localStorage.getItem("loginState") || false,
  175. showSisView: false,
  176. memuCloseTimeout: null,
  177. menuData: [],
  178. hideMenus: "0",
  179. hideHeard: "0",
  180. style: {
  181. width: "1920",
  182. height: "1080",
  183. fontsize: "16px",
  184. transform: "scaleY(1) scaleX(1) translate(-50%, -50%)",
  185. },
  186. alarmConfigArray: [],
  187. //请求参数
  188. requestAlarmHistoryParams: [
  189. {
  190. alarmType: "booststation",
  191. deviceType: "",
  192. },
  193. {
  194. alarmType: "inverter",
  195. deviceType: "",
  196. },
  197. {
  198. alarmType: "windturbine",
  199. deviceType: "",
  200. },
  201. {
  202. alarmType: "custom",
  203. deviceType: "inverter",
  204. },
  205. {
  206. alarmType: "custom",
  207. deviceType: "windturbine",
  208. },
  209. ],
  210. realList: [],
  211. dialogList: [],
  212. alarmList: [],
  213. //预警模块
  214. warnDatas: [
  215. {
  216. svg: `<svg t="1711616550762" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="28474" width="25" height="25"><path d="M554.666667 341.333333v128h85.333333l-128 213.333334V554.666667h-85.333333l128-213.333334z m384 170.666667c0 234.666667-192 426.666667-426.666667 426.666667S85.333333 746.666667 85.333333 512 277.333333 85.333333 512 85.333333v128c-166.4 0-298.666667 132.266667-298.666667 298.666667s132.266667 298.666667 298.666667 298.666667 298.666667-132.266667 298.666667-298.666667h128z m-46.933334 42.666667h-42.666666c-21.333333 166.4-166.4 298.666667-337.066667 298.666666-187.733333 0-341.333333-153.6-341.333333-341.333333C170.666667 337.066667 302.933333 196.266667 469.333333 174.933333v-42.666666C277.333333 153.6 128 315.733333 128 512c0 213.333333 170.666667 384 384 384 196.266667 0 358.4-149.333333 379.733333-341.333333z m-89.6-106.666667l123.733334-29.866667C891.733333 256 763.733333 128 601.6 93.866667l-29.866667 123.733333c119.466667 29.866667 204.8 115.2 230.4 230.4z" fill="" p-id="28475"></path></svg>`,
  217. name: "矩阵提醒",
  218. index: "/integratedAlarm/detailmatrix",
  219. },
  220. {
  221. svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="25" height="25"><path fill="#33CAB7" d="M640 288h-64V128H128v704h384v32a32 32 0 0 0 32 32H96a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32h512a32 32 0 0 1 32 32z"></path><path fill="#33CAB7" d="M128 320v512h768V320zm-32-64h832a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V288a32 32 0 0 1 32-32"></path><path fill="#33CAB7" d="M704 640a64 64 0 1 1 0-128 64 64 0 0 1 0 128"></path></svg>`,
  222. name: "综合报警",
  223. index: "/integratedAlarm/safe/realwarning",
  224. width: "276px",
  225. children: [
  226. {
  227. name: "实时预警",
  228. index: "/integratedAlarm/safe/realwarning",
  229. },
  230. {
  231. name: "预警查询",
  232. index: "/integratedAlarm/safe/customWarning",
  233. },
  234. // {
  235. // name: "报警查询",
  236. // index: "/integratedAlarm/safe/historyWarning",
  237. // },
  238. ],
  239. },
  240. {
  241. svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="25" height="25"><path fill="#33CAB7" d="M416 896V128h192v768zm-288 0V448h192v448zm576 0V320h192v576z"></path></svg>`,
  242. name: "可靠性分析",
  243. index: "/integratedAlarm/reliability/customAnalyse",
  244. children: [
  245. {
  246. name: "预警分析",
  247. index: "/integratedAlarm/reliability/customAnalyse",
  248. },
  249. {
  250. name: "报警分析",
  251. index: "/integratedAlarm/reliability/historyAnalyse",
  252. },
  253. ],
  254. },
  255. {
  256. svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="25" height="25"><path fill="#33cab8" d="M389.44 768a96.064 96.064 0 0 1 181.12 0H896v64H570.56a96.064 96.064 0 0 1-181.12 0H128v-64zm192-288a96.064 96.064 0 0 1 181.12 0H896v64H762.56a96.064 96.064 0 0 1-181.12 0H128v-64zm-320-288a96.064 96.064 0 0 1 181.12 0H896v64H442.56a96.064 96.064 0 0 1-181.12 0H128v-64z"></path></svg>`,
  257. name: "报警配置",
  258. index: "/integratedAlarm/alarmConfig/customConfig",
  259. children: [
  260. {
  261. name: "预警配置",
  262. index: "/integratedAlarm/alarmConfig/customConfig",
  263. },
  264. {
  265. name: "报警配置",
  266. index: "/integratedAlarm/alarmConfig/historyConfig",
  267. },
  268. {
  269. name: "预警排查方案",
  270. index: "/integratedAlarm/alarmConfig/earlyWarning",
  271. },
  272. {
  273. name: "规则修改日志",
  274. index: "/integratedAlarm/alarmConfig/logs",
  275. },
  276. ],
  277. },
  278. {
  279. svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="25" height="25"><path fill="#33cab7" d="M118.656 438.656a32 32 0 0 1 0-45.248L416 96l4.48-3.776A32 32 0 0 1 461.248 96l3.712 4.48a32.064 32.064 0 0 1-3.712 40.832L218.56 384H928a32 32 0 1 1 0 64H141.248a32 32 0 0 1-22.592-9.344zM64 608a32 32 0 0 1 32-32h786.752a32 32 0 0 1 22.656 54.592L608 928l-4.48 3.776a32.064 32.064 0 0 1-40.832-49.024L805.632 640H96a32 32 0 0 1-32-32"></path></svg>`,
  280. name: "设备模型配置",
  281. index: "/integratedAlarm/deviceConfig",
  282. },
  283. {
  284. svg: `<svg t="1711617136510" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="53900" width="25" height="25"><path d="M768 960H128c-17.67 0-32-14.33-32-32V224c0-17.67 14.33-32 32-32h640c17.67 0 32 14.33 32 32v704c0 17.67-14.33 32-32 32z m-608-64h576V256H160v640z" p-id="53901" fill="#33CAB7"></path><path d="M896 864c-17.67 0-32-14.33-32-32V128H225c-17.67 0-32-14.33-32-32s14.33-32 32-32h671c17.67 0 32 14.33 32 32v736c0 17.67-14.33 32-32 32zM288 832h-64V608c0-17.67 14.33-32 32-32s32 14.33 32 32v224zM480 832h-64V672c0-17.67 14.33-32 32-32s32 14.33 32 32v160z" p-id="53902" fill="#33CAB7"></path><path d="M672 832h-64V544c0-17.67 14.33-32 32-32s32 14.33 32 32v288z" p-id="53903" fill="#33CAB7"></path><path d="M448.02 512c-9.07 0-18.03-3.84-24.31-11.18L352 417.17l-71.7 83.65c-11.5 13.42-31.7 14.97-45.12 3.47-13.42-11.5-14.97-31.7-3.47-45.12l96-112a32 32 0 0 1 24.3-11.17 32 32 0 0 1 24.3 11.17l77.55 90.47 168.41-112.27c14.7-9.8 34.57-5.83 44.38 8.88 9.8 14.71 5.83 34.57-8.88 44.38l-192 128a32.008 32.008 0 0 1-17.75 5.37z" p-id="53904" fill="#33CAB7"></path></svg>`,
  285. name: "优化建议报告",
  286. index: "/integratedAlarm/optimizationSuggestions",
  287. },
  288. ],
  289. //经济运行
  290. economyDatas: [
  291. {
  292. svg: `<svg t="1711612156671" class="icon" viewBox="0 0 1024 1024" version="1.1"
  293. xmlns="http://www.w3.org/2000/svg" p-id="2759" width="25" height="25">
  294. <path
  295. d="M512 668.224l369.696-184.832a32 32 0 0 1 28.608 57.216l-384 192a32 32 0 0 1-28.608 0l-384-192a32 32 0 0 1 28.608-57.216L512 668.224z"
  296. fill="#33CAB7" p-id="2760"></path>
  297. <path
  298. d="M512 860.224l369.696-184.832a32 32 0 0 1 28.608 57.216l-384 192a32 32 0 0 1-28.608 0l-384-192a32 32 0 0 1 28.608-57.216L512 860.224zM113.696 348.64a32 32 0 0 1 0-57.28l384-192a32 32 0 0 1 28.608 0l384 192a32 32 0 0 1 0 57.28l-384 192a32 32 0 0 1-28.608 0l-384-192zM512 476.224L824.448 320 512 163.776 199.552 320 512 476.224z"
  299. fill="#33CAB7" p-id="2761"></path>
  300. </svg>`,
  301. name: "对标分析",
  302. index:
  303. "/economicsOperation/benchmarkingManagement/performanceRankingList",
  304. children: [
  305. {
  306. name: "绩效榜",
  307. index:
  308. "/economicsOperation/benchmarkingManagement/performanceRankingList",
  309. },
  310. // {
  311. // name: "五项对标损失",
  312. // index: "/economicsOperation/benchmarkingManagement/loseRate",
  313. // },
  314. {
  315. name: "场内对标",
  316. index:
  317. "/economicsOperation/benchmarkingManagement/siteBenchmarking",
  318. },
  319. {
  320. name: "场际对标",
  321. index:
  322. "/economicsOperation/benchmarkingManagement/intervalBenchmarking",
  323. },
  324. {
  325. name: "项目对标",
  326. index:
  327. "/economicsOperation/benchmarkingManagement/projectBenchmarking",
  328. },
  329. {
  330. name: "线路对标",
  331. index:
  332. "/economicsOperation/benchmarkingManagement/wiringBenchmarking",
  333. },
  334. ],
  335. },
  336. {
  337. svg: `<svg t="1711615881402" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4941" width="25" height="25"><path d="M884.38619844 385.57820094L534.26209813 32.02571281H305.41721469a57.85404375 57.85404375 0 0 0-42.85484719 17.14193906 57.85404375 57.85404375 0 0 0-17.14193906 42.85484719v731.53223906a58.28259188 58.28259188 0 0 0 59.56823812 59.13968907h521.11494a57.85404375 57.85404375 0 0 0 42.85484719-17.14193907 56.56839844 56.56839844 0 0 0 17.57048719-42.85484718V385.57820094zM534.26209813 110.45008345l273.41392406 275.12811749H539.40467938c-3.42838781 0-4.71403313 0-4.71403313-5.14258125z m296.55554156 713.10465468c0 3.42838781 0 5.14258125-4.71403313 5.14258125H305.41721469c-3.42838781 0-4.71403313 0-4.71403313-5.14258125V91.16540187c0-3.42838781 0-5.14258125 4.71403313-5.14258124H480.26499031v294.41279906a58.71114094 58.71114094 0 0 0 16.71339094 42.85484719 56.99694656 56.99694656 0 0 0 42.85484719 17.14193812h291.84150843zM196.99445187 937.54863125h-5.14258218V141.30557281a56.99694656 56.99694656 0 0 0-37.28371688 16.71339 57.85404375 57.85404375 0 0 0-17.14193812 42.8548472V931.97750094a58.28259188 58.28259188 0 0 0 59.56823719 59.99678625h520.68639187a57.85404375 57.85404375 0 0 0 42.85484719-17.14193907 56.13984937 56.13984937 0 0 0 17.14193812-36.85516875H196.99445187z" p-id="4942"></path></svg>`,
  338. name: "电量损失分解",
  339. index: "/economicsOperation/thematicAnalysis/comprehensiveAnalysis",
  340. children: [
  341. {
  342. name: "综合分析",
  343. index:
  344. "/economicsOperation/thematicAnalysis/comprehensiveAnalysis",
  345. },
  346. {
  347. name: "风能利用率",
  348. index: "/economicsOperation/thematicAnalysis/windEnergy",
  349. },
  350. {
  351. name: "五项损失率",
  352. index: "/economicsOperation/thematicAnalysis/failure",
  353. },
  354. {
  355. name: "可靠性分析",
  356. index: "/economicsOperation/thematicAnalysis/MTBF",
  357. },
  358. {
  359. name: "发电量分析",
  360. index: "/economicsOperation/thematicAnalysis/generation",
  361. },
  362. ],
  363. },
  364. {
  365. index: "/economicsOperation/stationAnalyse/stationElectricAnalyse",
  366. svg: `<svg t="1711616142393" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12350" width="25" height="25"><path d="M873.65 550.87a41.17 41.17 0 0 1 40.49 47.66C878.86 819.5 675 984.13 438.37 955.26c-191.86-23.41-347.41-179-370.8-371-28.85-236.71 135.71-440.61 356.59-475.9a41.16 41.16 0 0 1 47.64 40.51v402zM492.26 877c154.61 0 286.94-100.4 330.63-244.6H390.3V199.64C231.59 247.93 127.72 404 148.49 574.44c18.87 154.87 144.9 281 299.75 299.87a364.06 364.06 0 0 0 44 2.7z" fill="#949DA6" p-id="12351"></path><path d="M960.23 466.79a41.14 41.14 0 0 1-40.94 43.31H512.56V103.18a41.11 41.11 0 0 1 43.29-40.93c218.08 11.51 392.87 186.37 404.38 404.54zM874 428.56C848.72 285.1 736.21 172.88 594.06 148.28v280.28z" fill="#949DA6" p-id="12352"></path></svg>`,
  367. name: "整站分析",
  368. children: [
  369. {
  370. name: "综合场用电量分析",
  371. index:
  372. "/economicsOperation/stationAnalyse/stationElectricAnalyse",
  373. },
  374. {
  375. name: "风资源分析",
  376. index: "/economicsOperation/stationAnalyse/WindAndPhotovoltaic",
  377. },
  378. {
  379. name: "微观选址分析",
  380. index: "/economicsOperation/stationAnalyse/posAnalysis",
  381. },
  382. {
  383. name: "AGC曲线偏差分析",
  384. index: "/economicsOperation/stationAnalyse/agcAnalysis",
  385. },
  386. {
  387. name: "风机功率风速分析",
  388. index: "/economicsOperation/stationAnalyse/fjglfsAnalysis",
  389. },
  390. ],
  391. },
  392. {
  393. index: "/economicsOperation/windAnalyse/powerAnalyse",
  394. svg: `<svg t="1711616215524" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13469" width="25" height="25"><path d="M979.2 1017.6H89.6c-44.8 0-83.2-38.4-83.2-83.2V51.2C6.4 32 25.6 12.8 44.8 12.8s38.4 19.2 38.4 38.4v889.6l896 6.4c19.2 0 38.4 19.2 38.4 38.4s-19.2 32-38.4 32z" p-id="13470"></path><path d="M179.2 832v-128c0-19.2 19.2-38.4 38.4-38.4s38.4 19.2 38.4 38.4v128c0 19.2-19.2 38.4-38.4 38.4s-38.4-12.8-38.4-38.4zM377.6 832V601.6c0-19.2 19.2-38.4 38.4-38.4s38.4 19.2 38.4 38.4V832c0 19.2-19.2 38.4-38.4 38.4-25.6 0-38.4-12.8-38.4-38.4zM569.6 832v-128c0-19.2 19.2-38.4 38.4-38.4s38.4 19.2 38.4 38.4v128c0 19.2-19.2 38.4-38.4 38.4s-38.4-12.8-38.4-38.4zM768 832v-192c0-19.2 19.2-38.4 38.4-38.4s38.4 19.2 38.4 38.4v192c0 19.2-19.2 38.4-38.4 38.4s-38.4-12.8-38.4-38.4zM800 102.4h-140.8c-19.2 0-38.4 19.2-38.4 38.4s19.2 38.4 38.4 38.4h57.6L531.2 364.8 460.8 294.4c-12.8-19.2-38.4-19.2-57.6-6.4L192 505.6c-12.8 12.8-12.8 38.4 0 51.2 12.8 19.2 38.4 19.2 51.2 0l185.6-185.6 64 64 6.4 6.4V448c12.8 12.8 38.4 12.8 51.2 0L768 236.8v57.6c0 19.2 19.2 38.4 38.4 38.4s38.4-19.2 38.4-38.4V147.2c0-19.2-19.2-44.8-44.8-44.8z" p-id="13471"></path></svg>`,
  395. name: "机组分析",
  396. children: [
  397. {
  398. name: "功率曲线拟合",
  399. index: "/economicsOperation/windAnalyse/powerAnalyse",
  400. },
  401. {
  402. name: "功率曲线查询",
  403. index: "/economicsOperation/windAnalyse/powerSearch",
  404. },
  405. {
  406. name: "曲线偏差率分析",
  407. index: "/economicsOperation/windAnalyse/qxpclfx",
  408. },
  409. {
  410. name: "曲线区间偏差率分析",
  411. index: "/economicsOperation/windAnalyse/qxqjpcl",
  412. },
  413. {
  414. name: "切入切出分析",
  415. index: "/economicsOperation/windAnalyse/cutInAndOutAnalysis",
  416. },
  417. {
  418. name: "单机性能分析",
  419. index: "/economicsOperation/windAnalyse/singleWindAnasyle",
  420. },
  421. {
  422. name: "单机月度分析",
  423. index: "/economicsOperation/windAnalyse/monthlyAnalysis",
  424. },
  425. {
  426. name: "性能等级评估",
  427. index: "/economicsOperation/windAnalyse/performanceAssess",
  428. },
  429. {
  430. name: "各出力部件温度分析",
  431. index: "/economicsOperation/windAnalyse/partsTemperatureAnalyse",
  432. },
  433. ],
  434. },
  435. {
  436. index: "/economicsOperation/efficiency/restorationEfficiency",
  437. svg: `<svg t="1711616258471" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="14608" width="25" height="25"><path d="M793.6 640c-19.2-32-51.2-64-89.6-83.2V128c0-70.4-51.2-128-121.6-128C512 0 460.8 57.6 460.8 128v435.2c-38.4 12.8-64 44.8-89.6 76.8-25.6 38.4-38.4 83.2-38.4 134.4 0 64 25.6 128 70.4 172.8S518.4 1024 582.4 1024c64 0 128-25.6 172.8-70.4s70.4-108.8 70.4-172.8c6.4-51.2-6.4-96-32-140.8z m-211.2 339.2c-115.2 0-204.8-96-204.8-204.8 0-76.8 44.8-147.2 115.2-185.6l12.8-6.4V128c0-44.8 38.4-83.2 83.2-83.2 44.8 0 83.2 38.4 83.2 83.2v460.8l12.8 6.4c70.4 38.4 115.2 108.8 115.2 185.6-6.4 108.8-102.4 198.4-217.6 198.4z" p-id="14609"></path><path d="M620.8 665.6V262.4c0-19.2-19.2-38.4-38.4-38.4s-38.4 19.2-38.4 38.4v403.2c-44.8 12.8-70.4 57.6-70.4 102.4 0 57.6 51.2 108.8 108.8 108.8s108.8-51.2 108.8-108.8c0-44.8-25.6-89.6-70.4-102.4zM352 185.6H153.6c-25.6 0-38.4-12.8-38.4-38.4 0-19.2 12.8-38.4 38.4-38.4h204.8c19.2 0 38.4 19.2 38.4 38.4-6.4 25.6-19.2 38.4-44.8 38.4zM352 307.2h-128c-19.2 0-38.4-19.2-38.4-38.4s19.2-38.4 38.4-38.4h128c19.2 0 38.4 19.2 38.4 38.4 0 25.6-12.8 38.4-38.4 38.4zM352 435.2h-38.4c-19.2 0-38.4-19.2-38.4-38.4s19.2-38.4 38.4-38.4h44.8c19.2 0 38.4 19.2 38.4 38.4-6.4 19.2-19.2 38.4-44.8 38.4z" p-id="14610"></path></svg>`,
  438. name: "运维三率",
  439. children: [
  440. {
  441. name: "复位及时率",
  442. index: "/economicsOperation/efficiency/restorationEfficiency",
  443. },
  444. {
  445. name: "消缺及时率",
  446. index: "/economicsOperation/efficiency/consumeEfficiency",
  447. },
  448. {
  449. name: "状态转换率",
  450. index: "/economicsOperation/efficiency/stateEfficiency",
  451. },
  452. ],
  453. },
  454. {
  455. index: "/economicsOperation/rateAnalysis",
  456. svg: `<svg t="1711616084528" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10256" width="25" height="25"><path d="M819.2 256h-102.4v460.8h102.4z m-256-102.4H460.8v563.2h102.4zM307.2 358.4H204.8v358.4h102.4z m-204.8 409.6v102.4h819.2v-102.4z" fill="" p-id="10257"></path></svg>`,
  457. name: "对风偏差分析",
  458. },
  459. {
  460. index: "/economicsOperation/singleMachineDev",
  461. svg: `<svg t="1711616690183" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="35383" width="25" height="25"><path d="M167.68 753.92V1.28h-64v816.64h816.64v-64z" fill="#33CAB7" p-id="35384"></path><path d="M395.52 327.68L193.28 124.16v90.88l157.44 157.44zM481.28 674.56l44.8-44.8-122.88-122.88 75.52-75.52 139.52 139.52 64-64L828.16 652.8l44.8-44.8-145.92-145.92L856.32 332.8v62.72h64V224H748.8v64h62.72l-193.28 192-139.52-139.52L193.28 625.92V716.8L358.4 551.68z" fill="#33CAB7" p-id="35385"></path></svg>`,
  462. name: "测风塔单机偏差分析",
  463. },
  464. {
  465. index: "/economicsOperation/weatherMachine",
  466. svg: `<svg t="1711616550762" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="28474" width="25" height="25"><path d="M554.666667 341.333333v128h85.333333l-128 213.333334V554.666667h-85.333333l128-213.333334z m384 170.666667c0 234.666667-192 426.666667-426.666667 426.666667S85.333333 746.666667 85.333333 512 277.333333 85.333333 512 85.333333v128c-166.4 0-298.666667 132.266667-298.666667 298.666667s132.266667 298.666667 298.666667 298.666667 298.666667-132.266667 298.666667-298.666667h128z m-46.933334 42.666667h-42.666666c-21.333333 166.4-166.4 298.666667-337.066667 298.666666-187.733333 0-341.333333-153.6-341.333333-341.333333C170.666667 337.066667 302.933333 196.266667 469.333333 174.933333v-42.666666C277.333333 153.6 128 315.733333 128 512c0 213.333333 170.666667 384 384 384 196.266667 0 358.4-149.333333 379.733333-341.333333z m-89.6-106.666667l123.733334-29.866667C891.733333 256 763.733333 128 601.6 93.866667l-29.866667 123.733333c119.466667 29.866667 204.8 115.2 230.4 230.4z" fill="" p-id="28475"></path></svg>`,
  467. name: "气象单机偏差分析",
  468. },
  469. {
  470. index: "/economicsOperation/economicsReport",
  471. svg: `<svg t="1711616350515" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="17550" width="25" height="25"><path d="M361.39008 444.68224l-47.20128 78.69952c-0.78848-0.08192-1.73056-0.08192-2.51392-0.08192-4.5568 0-8.87808 0.71168-12.95872 1.96608l-32.44032-32.44032a43.776 43.776 0 0 0 1.96608-12.95872c0-23.95648-19.4816-43.43296-43.43808-43.43296s-43.42784 19.4816-43.42784 43.43296c0 8.33024 2.3552 16.0256 6.36416 22.62528l-47.2832 78.6944c-0.78848-0.0768-1.73056-0.0768-2.51392-0.0768-23.95648 0-43.43296 19.47648-43.43296 43.43296s19.4816 43.43296 43.43296 43.43296 43.43296-19.4816 43.43296-43.43296a43.4176 43.4176 0 0 0-6.35904-22.62016l47.27808-78.78656a43.9296 43.9296 0 0 0 15.47264-1.87904l32.44032 32.44032a43.71968 43.71968 0 0 0-1.96608 12.9536c0 23.9616 19.4816 43.43296 43.43296 43.43296s43.35616-19.47648 43.35616-43.43296c0-8.32512-2.3552-16.02048-6.35904-22.61504 0 0 49.00352-78.62272 49.79712-78.62272l-37.07904-20.73088z" fill="#575757" p-id="17551"></path><path d="M363.71968 521.51296l47.2832-78.78656a43.91936 43.91936 0 0 0 15.46752-1.87904l131.66592 131.66592a43.94496 43.94496 0 0 0-1.96608 12.95872c0 23.95648 19.4816 43.43296 43.43296 43.43296 23.9616 0 43.36128-19.4816 43.36128-43.43296a43.3152 43.3152 0 0 0-6.36416-22.62016l47.2832-78.70464c0.78336 0.08192 1.72544 0.08192 2.51392 0.08192 23.95648 0 43.43296-19.4816 43.43296-43.43296s-19.4816-43.35616-43.43296-43.35616c-23.95648 0-43.43296 19.4816-43.43296 43.43296 0 8.32512 2.3552 16.0256 6.35904 22.62016l-47.2064 78.70464c-0.78336-0.08192-1.73056-0.08192-2.51392-0.08192-4.5568 0-8.87296 0.70656-12.9536 1.96096L454.9888 412.416a43.94496 43.94496 0 0 0 1.96096-12.95872c0-23.95648-19.4816-43.43296-43.43296-43.43296s-43.43296 19.4816-43.43296 43.43296a43.4176 43.4176 0 0 0 6.36416 22.62528s-49.01376 78.61248-49.80224 78.61248l37.07392 20.81792z" fill="#575757" p-id="17552"></path><path d="M780.20608 704.46592l139.57632 140.04224c12.8768 12.20096 12.8768 32.93184 0.44544 45.3632-12.42112 12.90752-33.14688 13.35296-45.60384 0.45056l-140.49792-140.26752c-27.17184 22.57408-57.5744 41.2416-90.74688 54.81984a350.37696 350.37696 0 0 1-135.67488 27.20256c-103.42912 0-202.0096-45.85984-269.27616-125.33248-33.86368-39.59808 17.51552-76.68224 56.20736-34.06848 54.8352 60.11904 131.77344 94.19776 213.0688 94.19776 39.38816 0 76.70272-7.82336 110.55104-21.87264a286.208 286.208 0 0 0 93.52192-62.18752l0.47104-0.47104c26.49088-26.72128 48.14848-58.48576 62.88384-93.97248 13.81888-33.39776 21.66272-70.9376 21.66272-110.336a290.7904 290.7904 0 0 0-21.21728-108.9536l-0.45056-1.3824a286.98112 286.98112 0 0 0-61.27104-92.37504l-1.6128-1.59744c-26.9568-26.49088-58.74688-48.13312-93.98784-62.44352-33.60768-14.49472-71.15264-22.08256-110.55104-22.08256-117.69344 0-219.03872 71.85408-263.74656 172.49792-5.5296 11.99104-16.58368 19.12832-29.72672 19.12832h-0.20992c-11.52 0-20.96128-5.53984-27.19232-14.73024-6.21056-9.46176-6.912-20.51584-2.29376-31.12448C240.27648 209.92 367.43168 124.22656 507.6992 124.22656c47.6672 0 93.52704 9.6768 135.68 27.17184 43.30496 17.75104 82.44736 44.24704 114.69824 76.47744l1.82272 1.63328c31.80544 32.4608 57.14432 70.7072 74.87488 113.1008l0.68608 1.82272c17.04448 41.48224 26.27072 86.13888 26.27072 133.59616a350.45888 350.45888 0 0 1-26.9568 134.97856 356.87936 356.87936 0 0 1-54.56896 91.45856z" fill="#575757" p-id="17553"></path></svg>`,
  472. name: "经济运行分析报告",
  473. },
  474. ],
  475. //智能报表
  476. reportDatas: [
  477. {
  478. index: "/nxreport/scrb/fdcscrb",
  479. svg: `<svg t="1711617175108" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="55166" width="25" height="25"><path d="M800 32h-576a128 128 0 0 0-128 128v704a128 128 0 0 0 128 128h576a128 128 0 0 0 128-128v-704a128 128 0 0 0-128-128z m64 832a64 64 0 0 1-64 64h-576a64 64 0 0 1-64-64v-704a64 64 0 0 1 64-64h576a64 64 0 0 1 64 64v704z" fill="#33CAB7" p-id="55167"></path><path d="M736 736h-448a32 32 0 0 0 0 64h448a32 32 0 0 0 0-64zM736 576h-448a32 32 0 0 0 0 64h448a32 32 0 0 0 0-64zM736 192a64 64 0 0 0-64 64c0 5.568 1.792 10.496 3.136 15.616L591.616 355.136C586.496 353.792 581.568 352 576 352c-4.608 0-8.704 1.664-12.992 2.624l-53.632-53.632C510.336 296.704 512 292.608 512 288a64 64 0 1 0-128 0c0 5.568 1.792 10.496 3.136 15.616L303.616 387.136C298.496 385.792 293.568 384 288 384a64 64 0 1 0 0 128 64 64 0 0 0 64-64c0-5.568-1.792-10.496-3.136-15.616l83.52-83.52c5.12 1.344 10.048 3.136 15.616 3.136 5.248 0 9.856-1.792 14.72-3.008l52.288 52.288C513.792 406.144 512 410.752 512 416a64 64 0 1 0 128 0c0-5.568-1.792-10.496-3.136-15.616l83.52-83.52c5.12 1.344 10.048 3.136 15.616 3.136a64 64 0 1 0 0-128z" fill="#33CAB7" p-id="55168"></path></svg>`,
  480. name: "生产日报",
  481. children: [
  482. {
  483. name: "风电场站生产日报",
  484. index: "/nxreport/scrb/fdcscrb",
  485. },
  486. ],
  487. },
  488. {
  489. index: "/nxreport/dlcsdmb/huiandlcsdmb",
  490. svg: `<svg t="1711617136510" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="53900" width="25" height="25"><path d="M768 960H128c-17.67 0-32-14.33-32-32V224c0-17.67 14.33-32 32-32h640c17.67 0 32 14.33 32 32v704c0 17.67-14.33 32-32 32z m-608-64h576V256H160v640z" p-id="53901" fill="#33CAB7"></path><path d="M896 864c-17.67 0-32-14.33-32-32V128H225c-17.67 0-32-14.33-32-32s14.33-32 32-32h671c17.67 0 32 14.33 32 32v736c0 17.67-14.33 32-32 32zM288 832h-64V608c0-17.67 14.33-32 32-32s32 14.33 32 32v224zM480 832h-64V672c0-17.67 14.33-32 32-32s32 14.33 32 32v160z" p-id="53902" fill="#33CAB7"></path><path d="M672 832h-64V544c0-17.67 14.33-32 32-32s32 14.33 32 32v288z" p-id="53903" fill="#33CAB7"></path><path d="M448.02 512c-9.07 0-18.03-3.84-24.31-11.18L352 417.17l-71.7 83.65c-11.5 13.42-31.7 14.97-45.12 3.47-13.42-11.5-14.97-31.7-3.47-45.12l96-112a32 32 0 0 1 24.3-11.17 32 32 0 0 1 24.3 11.17l77.55 90.47 168.41-112.27c14.7-9.8 34.57-5.83 44.38 8.88 9.8 14.71 5.83 34.57-8.88 44.38l-192 128a32.008 32.008 0 0 1-17.75 5.37z" p-id="53904" fill="#33CAB7"></path></svg>`,
  491. name: "电量参数底码表",
  492. children: [
  493. {
  494. name: "惠安风电场电量底码(每日)",
  495. index: "/nxreport/dlcsdmb/huiandlcsdmb",
  496. },
  497. ],
  498. },
  499. {
  500. index: "/nxreport/zbyxcsjlb/huiansyzyxcs",
  501. svg: `<svg t="1720492799929" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1042" width="25" height="25"><path d="M570.81 930.78H191.75a40 40 0 0 1-39.9-39.94V120.72a40 40 0 0 1 39.9-39.94h643.89a40 40 0 0 1 39.9 39.94v282.56a25 25 0 0 1-50 0v-272.5H201.85v750h369a25 25 0 0 1 0 50z" p-id="1043"></path><path d="M580 433.06H316.18a27.65 27.65 0 0 0 0 55.29H580a27.65 27.65 0 0 0 0-55.29zM599.6 273.45H316.18a27.65 27.65 0 0 0 0 55.29H599.6a27.65 27.65 0 0 0 0-55.29zM489 607.58H316.18a27.65 27.65 0 0 0 0 55.29H489a27.65 27.65 0 0 0 0-55.29zM777.22 882.4c-113 0-205-92-205-205s92-205 205-205 205 92 205 205-91.97 205-205 205z m0-360c-85.47 0-155 69.53-155 155s69.53 155 155 155 155-69.54 155-155-69.54-155-155-155z" p-id="1044"></path><path d="M782.84 611.5c45.84 0 84.69 43.75 97.79 60.36a10.12 10.12 0 0 1 0 12.61c-13.1 16.62-52 60.36-97.79 60.36s-84.69-43.74-97.79-60.36a10.09 10.09 0 0 1 0-12.61c13.1-16.61 51.95-60.36 97.79-60.36z m0 35.9a30 30 0 0 0-27.71 19 31.31 31.31 0 0 0 6.5 33.52 29.44 29.44 0 0 0 32.69 6.67 30.78 30.78 0 0 0 18.52-28.42c0-17-13.43-30.77-30-30.77z" p-id="1045" fill="#33CAB7"></path></svg>`,
  502. name: "值班运行参数记录表",
  503. children: [
  504. {
  505. name: "惠安风电升压站运行参数",
  506. index: "/nxreport/zbyxcsjlb/huiansyzyxcs",
  507. },
  508. {
  509. name: "惠安风电一期风机运行参数",
  510. index: "/nxreport/zbyxcsjlb/huianfjyxcsyq",
  511. },
  512. {
  513. name: "惠安风电二期风机运行参数",
  514. index: "/nxreport/zbyxcsjlb/huianfjyxcseq",
  515. },
  516. {
  517. name: "单台风机电量统计",
  518. index: "/nxreport/zbyxcsjlb/dtfjdltj",
  519. },
  520. {
  521. name: "惠安风电电量统计",
  522. index: "/nxreport/zbyxcsjlb/huianfddltj",
  523. },
  524. ],
  525. },
  526. {
  527. index: "/nxreport/czzbjshjlb/huianfdzb",
  528. svg: `<svg t="1720492799929" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1042" width="25" height="25"><path d="M570.81 930.78H191.75a40 40 0 0 1-39.9-39.94V120.72a40 40 0 0 1 39.9-39.94h643.89a40 40 0 0 1 39.9 39.94v282.56a25 25 0 0 1-50 0v-272.5H201.85v750h369a25 25 0 0 1 0 50z" p-id="1043"></path><path d="M580 433.06H316.18a27.65 27.65 0 0 0 0 55.29H580a27.65 27.65 0 0 0 0-55.29zM599.6 273.45H316.18a27.65 27.65 0 0 0 0 55.29H599.6a27.65 27.65 0 0 0 0-55.29zM489 607.58H316.18a27.65 27.65 0 0 0 0 55.29H489a27.65 27.65 0 0 0 0-55.29zM777.22 882.4c-113 0-205-92-205-205s92-205 205-205 205 92 205 205-91.97 205-205 205z m0-360c-85.47 0-155 69.53-155 155s69.53 155 155 155 155-69.54 155-155-69.54-155-155-155z" p-id="1044"></path><path d="M782.84 611.5c45.84 0 84.69 43.75 97.79 60.36a10.12 10.12 0 0 1 0 12.61c-13.1 16.62-52 60.36-97.79 60.36s-84.69-43.74-97.79-60.36a10.09 10.09 0 0 1 0-12.61c13.1-16.61 51.95-60.36 97.79-60.36z m0 35.9a30 30 0 0 0-27.71 19 31.31 31.31 0 0 0 6.5 33.52 29.44 29.44 0 0 0 32.69 6.67 30.78 30.78 0 0 0 18.52-28.42c0-17-13.43-30.77-30-30.77z" p-id="1045" fill="#33CAB7"></path></svg>`,
  529. name: "场站指标及损耗记录表",
  530. children: [
  531. {
  532. name: "惠安风电指标",
  533. index: "/nxreport/czzbjshjlb/huianfdzb",
  534. },
  535. ],
  536. },
  537. {
  538. index: "/nxreport/czswdlgl/haswdlr",
  539. svg: `<svg t="1711617560802" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="69812" width="25" height="25"><path d="M495.7 495.2v-17.3H270.9c-6.7 0-18.2 14.1-18.2 21v7.5c0 6.8 11.6 23.4 18.2 23.4h172.9c12.6-19.4 33.2-22.3 51.9-34.6z" p-id="69813" fill="#33CAB7"></path><path d="M461.4 858.2H170.6c-13.4 0-20.8-3.4-20.8-17.2V183.9c0-13.7 3.9-17.3 17.3-17.3h518.7c13.4 0 17.4 8.7 17.4 22.5V426c16.6 1.4 33.5 0.6 51.9 0V166.6c0-27.4-25-51.9-51.7-51.9h-557c-26.7 0-48.4 22.2-48.4 49.6v693.8c0 27.4 25.2 52 51.9 52H513c-18.5-14.3-37.3-33.4-51.6-51.9z" p-id="69814" fill="#33CAB7"></path><path d="M409.3 650.8c0.6-5.1-1.7-12.4 0-17.3H270.9c-6.7 0-18.2 7.2-18.2 14v24.8c0 6.8 11.6 13.1 18.2 13.1h138.3c-0.2-9.4-1.7-19.4 0.3-28.8 0.1-0.4 0.8-16.6-0.2-5.8zM597.1 374.9l2.4-0.8v-17.3c0-6.8-10.6-17.3-17.3-17.3H270.9c-6.7 0-18.2 3.8-18.2 10.6v24.8c0 6.8 11.6 16.5 18.2 16.5h311.2c6.8 0 15-9.6 15-16.5zM712.9 564.4c-5.1-5.1-11.7-7.6-18.3-7.6-6.6 0-13.3 2.5-18.3 7.6l-97.8 97.8c-10.1 10.1-10.1 26.6 0 36.7 5.1 5.1 11.7 7.6 18.3 7.6 6.6 0 13.3-2.5 18.3-7.6l53.5-53.5v152.5c0 14.3 11.6 25.9 25.9 25.9 14.3 0 25.9-11.6 25.9-25.9V645.3l53.5 53.5c5.1 5.1 11.7 7.6 18.3 7.6 6.6 0 13.3-2.5 18.3-7.6 10.1-10.1 10.1-26.5 0-36.7l-97.6-97.7z" p-id="69815" fill="#33CAB7"></path><path d="M694.6 460.6c-128.9 0-233.4 104.5-233.4 233.4s104.5 233.4 233.4 233.4C823.5 927.5 928 822.9 928 694S823.5 460.6 694.6 460.6z m0 415C594.4 875.6 513 794.1 513 694s81.4-181.6 181.6-181.6c100.1 0 181.6 81.4 181.6 181.6s-81.5 181.6-181.6 181.6z" p-id="69816" fill="#33CAB7"></path></svg>`,
  540. name: "场站上网电量,功率(试运行)",
  541. children: [
  542. {
  543. name: "惠安上网电量(日)",
  544. index: "/nxreport/czswdlgl/haswdlr",
  545. },
  546. {
  547. name: "惠安上网电量(月)",
  548. index: "/nxreport/czswdlgl/haswdly",
  549. },
  550. {
  551. name: "惠安功率预测(日)",
  552. index: "/nxreport/czswdlgl/haglycr",
  553. },
  554. {
  555. name: "惠安功率预测(月)",
  556. index: "/nxreport/czswdlgl/haglycy",
  557. },
  558. ],
  559. },
  560. {
  561. index: "/nxreport/czzdybb",
  562. svg: `<svg t="1711617616189" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="71308" width="25" height="25"><path d="M787.4 918H238.8c-72 0-130.6-58.6-130.6-130.6V238.8c0-72 58.6-130.6 130.6-130.6h548.6c72 0 130.6 58.6 130.6 130.6v548.6c0 72-58.6 130.6-130.6 130.6zM238.8 168.2c-38.9 0-70.6 31.7-70.6 70.6v548.6c0 38.9 31.7 70.6 70.6 70.6h548.6c38.9 0 70.6-31.7 70.6-70.6V238.8c0-38.9-31.7-70.6-70.6-70.6H238.8z" p-id="71309" fill="#33CAB7"></path><path d="M451.1 728.8c-3.1 0-6.3-0.5-9.5-1.5-15.7-5.2-24.2-22.2-19-38l128-383.9c5.2-15.7 22.2-24.2 38-19 15.7 5.2 24.2 22.2 19 38l-128 383.9c-4.2 12.5-15.9 20.5-28.5 20.5zM643.1 661.9c-8.3 0-16.5-3.4-22.4-10.1-11-12.4-9.9-31.3 2.5-42.4l105.6-94-107.5-113c-11.4-12-10.9-31 1.1-42.4 12-11.4 31-10.9 42.4 1.1l128.8 135.6c5.6 5.9 8.6 13.8 8.2 21.9-0.3 8.1-4 15.7-10 21.2L663 654.3c-5.7 5.1-12.8 7.6-19.9 7.6zM385.9 661.9c-7.1 0-14.2-2.5-19.9-7.6L237.2 539.7c-6.1-5.4-9.7-13-10-21.2-0.3-8.1 2.6-16 8.2-21.9L364.2 361c11.4-12 30.4-12.5 42.4-1.1s12.5 30.4 1.1 42.4L300.2 515.5l105.6 94c12.4 11 13.5 30 2.5 42.4-5.9 6.6-14.2 10-22.4 10z" p-id="71310" fill="#33CAB7"></path></svg>`,
  563. name: "自定义报表",
  564. },
  565. ],
  566. };
  567. },
  568. computed: {
  569. isLogined() {
  570. return this.$store.state.user?.loginState;
  571. },
  572. isFixed() {
  573. return this.$store.state?.isFixed;
  574. },
  575. menuLength() {
  576. // return this.$store.state?.menuData?.length;
  577. return this.showMenuData.length;
  578. },
  579. },
  580. async created() {
  581. // await this.initWebSocket();
  582. // this.getAlarmConfig();
  583. // this.x = 80;
  584. // this.y = 80;
  585. // let requestResult = [];
  586. // this.requestAlarmHistoryParams.forEach(({ alarmType, deviceType }) => {
  587. // requestResult.push(this.getAlarmHistory(alarmType, deviceType));
  588. // });
  589. // Promise.all(requestResult)
  590. // .then((promiseResult) => {
  591. // this.alarmList = [];
  592. // promiseResult.forEach(({ data }) => {
  593. // data?.ls?.forEach((ele) => {
  594. // this.pushALarmItem(ele);
  595. // });
  596. // });
  597. // this.dialogList.sort((a, b) => {
  598. // return b.ts - a.ts;
  599. // });
  600. // this.realList.sort((a, b) => {
  601. // return b.ts - a.ts;
  602. // });
  603. // this.$store.commit("changeAlarmlist", this.alarmList);
  604. // this.$store.commit("setWarning", this.dialogList);
  605. // this.$store.commit("setWarningList", this.realList);
  606. // // if (!this.socketLeaveFlag) {
  607. // // // 没有离开——重连
  608. // // // websocket重连
  609. // // this.socketReconnect1();
  610. // // }
  611. // })
  612. // .catch(() => {
  613. // requestResult.forEach((ele, index) => {
  614. // ele
  615. // .then(({ data }) => {
  616. // data?.ls?.forEach((ele) => {
  617. // this.pushALarmItem(ele);
  618. // });
  619. // })
  620. // .catch((error) => {
  621. // ElNotification({
  622. // type: "error",
  623. // title: "查询历史未处理报警请求出错!",
  624. // dangerouslyUseHTMLString: true,
  625. // message: `<div class="currentRequestErrorNotification">
  626. // <p><span>主要参数:</p>
  627. // <p style="color:var(--el-color-primary)"><span class="errorTitle">alarmType:</span><span class="errorDesc">"${this.requestAlarmHistoryParams[index].alarmType}"</span></p>
  628. // <p style="color:var(--el-color-primary)"><span class="errorTitle">deviceType:</span><span class="errorDesc">"${this.requestAlarmHistoryParams[index].deviceType}"</span></p>
  629. // <p style="color:var(--el-color-danger)"><span class="errorTitle">错误正文:</span><span class="errorDesc">${error}</span></p>
  630. // </div>`,
  631. // });
  632. // throw error;
  633. // });
  634. // });
  635. // });
  636. },
  637. mounted() {
  638. this.initMenu();
  639. let that = this;
  640. that.setScale();
  641. /*窗口改变事件*/
  642. $(window).resize(() => {
  643. that.setScale();
  644. });
  645. },
  646. unmounted() {
  647. console.log("离开标记", this.socketLeaveFlag);
  648. },
  649. methods: {
  650. openWeb() {
  651. this.activeTab = "yxzb";
  652. window.location.href = `${process.env.VUE_APP_URL}/index.html/#/runtime/b0d3f1f4-3e5d-429b-af81-2661e7099caa/862c8272-8cf8-435c-b3fc-b28936b4bfe0?instanceId=82546b6b-59a3-7a1b-fbd4-b2d4516cf991`;
  653. },
  654. jumpUrl() {
  655. this.activeTab = "jjfx";
  656. this.$router.push({ path: "/economicsOperation" });
  657. },
  658. switchTabShow() {
  659. return (
  660. window.location.href.indexOf("#/integratedAlarm") === -1 &&
  661. window.location.href.indexOf("#/nxreport") === -1
  662. );
  663. },
  664. getSelectState(idx) {
  665. // routepath === $route.path ? 'isSelect' : ''
  666. const href = window.location.href;
  667. const path = this.$route.path;
  668. const reg = new RegExp(path);
  669. // return idx !== "/" && reg.test(path) ? "isSelect" : "";
  670. return idx !== "/" && path.indexOf(idx) !== -1 ? "isSelect" : "";
  671. },
  672. initMenu() {
  673. let str = window.location.href;
  674. if (str.indexOf("integratedAlarm") > -1) {
  675. this.showMenuData = this.warnDatas;
  676. this.$nextTick(() =>{
  677. document.title = '预警系统'
  678. })
  679. } else if (str.indexOf("economicsOperation") > -1) {
  680. this.showMenuData = this.economyDatas;
  681. this.$nextTick(() =>{
  682. document.title = '经济运行'
  683. })
  684. } else if (str.indexOf("nxreport") > -1) {
  685. this.showMenuData = this.reportDatas;
  686. this.$nextTick(() =>{
  687. document.title = '智能报表'
  688. })
  689. } else {
  690. this.showMenuData = this.warnDatas;
  691. this.$nextTick(() =>{
  692. document.title = '预警系统'
  693. })
  694. }
  695. },
  696. pagestyFn(path) {
  697. let str = "";
  698. if (this.isFixed && this.menuLength > 0) {
  699. if (path.indexOf("economicsOperation") > -1) {
  700. str = "padding-left: 220px";
  701. } else if (path.indexOf("nxreport") > -1) {
  702. str = "padding-left: 280px";
  703. } else if (path.indexOf("integratedAlarm") > -1) {
  704. str = "padding-left: 220px";
  705. }
  706. }
  707. return `${str};height:${
  708. this.switchTabShow()
  709. ? "calc(100% - 80px - 20px); margin-top:20px;"
  710. : "calc(100% - 80px);"
  711. }`;
  712. },
  713. noGrounpItemFn(path) {
  714. let str = "66px";
  715. if (!this.isCollapse) {
  716. if (path.indexOf("economicsOperation") > -1) {
  717. str = "width: 220px";
  718. } else if (path.indexOf("nxreport") > -1) {
  719. str = "width: 280px";
  720. } else if (path.indexOf("integratedAlarm") > -1) {
  721. str = "width: 220px";
  722. }
  723. } else {
  724. str = "width: 66px";
  725. }
  726. return str;
  727. },
  728. //获取报警配置
  729. getAlarmConfig() {
  730. if (localStorage.getItem("alarmConfigArray")) {
  731. this.alarmConfigArray = JSON.parse(
  732. localStorage.getItem("alarmConfigArray")
  733. );
  734. } else {
  735. this.alarmConfigArray = [
  736. {
  737. id: "1",
  738. alarmLevel: 1,
  739. isAlart: false,
  740. isAlarmSound: false,
  741. isContinuousAlarm: false,
  742. },
  743. {
  744. id: "2",
  745. alarmLevel: 2,
  746. isAlart: false,
  747. isAlarmSound: false,
  748. isContinuousAlarm: false,
  749. },
  750. {
  751. id: "3",
  752. alarmLevel: 3,
  753. isAlart: false,
  754. isAlarmSound: false,
  755. isContinuousAlarm: false,
  756. },
  757. {
  758. id: "4",
  759. alarmLevel: 4,
  760. isAlart: true,
  761. isAlarmSound: true,
  762. isContinuousAlarm: false,
  763. },
  764. {
  765. id: "5",
  766. alarmLevel: 5,
  767. isAlart: true,
  768. isAlarmSound: true,
  769. isContinuousAlarm: true,
  770. },
  771. ];
  772. localStorage.setItem(
  773. "alarmConfigArray",
  774. JSON.stringify(this.alarmConfigArray)
  775. );
  776. }
  777. },
  778. //查历史报警
  779. getAlarmHistory(alarmType, deviceType) {
  780. let params = {
  781. pageNum: 1,
  782. pageSize: 50,
  783. alarmId: "",
  784. alarmType,
  785. deviceType,
  786. stationid: "",
  787. deviceid: "",
  788. modelId: "",
  789. components: "",
  790. description: "",
  791. isclose: false,
  792. // begin: dayjs().add(-1, "hour").format("YYYY-MM-DD HH:mm:ss"),
  793. // end: dayjs().format("YYYY-MM-DD HH:mm:ss"),
  794. begin: `${dayjs().add(-1, "hour").format("YYYY-MM-DD")} 00:00:00`,
  795. end: `${dayjs().format("YYYY-MM-DD")} 23:59:59`,
  796. };
  797. if (params.alarmType == "windturbine") {
  798. params.stationid = "";
  799. } else if (params.alarmType == "inverter") {
  800. params.stationid = "";
  801. }
  802. return alarm_history(params, 12000);
  803. },
  804. pushALarmItem(alarmItem, type) {
  805. const configItem = this.getConfigItem(alarmItem.rank);
  806. const alarmOption = {
  807. id: alarmItem.id ? alarmItem.id : alarmItem.tbname,
  808. lv: alarmItem.rank,
  809. modelId: alarmItem.modelId,
  810. lvName: this.getLvName(alarmItem),
  811. rank: alarmItem.rank,
  812. confirmed: alarmItem.confirmed,
  813. class: `animate__bounceInRight lv${alarmItem.rank}`,
  814. deviceId: alarmItem.deviceId,
  815. faultCause: alarmItem.faultCause,
  816. resolvent: alarmItem.resolvent,
  817. characteristic: alarmItem.characteristic,
  818. code: alarmItem.code,
  819. wpName: alarmItem.stationName
  820. ? alarmItem.stationName
  821. : alarmItem.wpName,
  822. stationId: alarmItem.stationId ? alarmItem.stationId : alarmItem.wpId,
  823. isClose: alarmItem.closeTime ? true : alarmItem.endts ? true : false,
  824. isCloseName: alarmItem.closeTime
  825. ? "已解除"
  826. : alarmItem.endts
  827. ? "已解除"
  828. : "未解除",
  829. alarmId: alarmItem.alarmId,
  830. alarmType: alarmItem.alarmType,
  831. alarmName: this.getAlarmName(alarmItem),
  832. description: alarmItem.description,
  833. deviceType: alarmItem.deviceType,
  834. oval: alarmItem.oval,
  835. triggerType: alarmItem.triggerType,
  836. ts: alarmItem.ts
  837. ? dayjs(alarmItem.ts).valueOf()
  838. : dayjs(alarmItem.updateTime).valueOf(),
  839. endts: alarmItem.endts
  840. ? dayjs(alarmItem.endts).format("YYYY-MM-DD HH:mm:ss")
  841. : null,
  842. closeTime: alarmItem.closeTime
  843. ? dayjs(alarmItem.closeTime).format("YYYY-MM-DD HH:mm:ss")
  844. : null,
  845. deviceName: alarmItem.deviceName
  846. ? alarmItem.deviceName
  847. : alarmItem.code,
  848. tsName: alarmItem.ts
  849. ? new Date(alarmItem.ts).formatDate("MM-dd hh:mm:ss")
  850. : new Date(alarmItem.updateTime).formatDate("MM-dd hh:mm:ss"),
  851. fullTsName: alarmItem.ts
  852. ? new Date(alarmItem.ts).formatDate("yyyy-MM-dd hh:mm:ss")
  853. : new Date(alarmItem.updateTime).formatDate("yyyy-MM-dd hh:mm:ss"),
  854. };
  855. if (
  856. alarmOption.alarmType == "booststation" &&
  857. alarmOption.deviceType != "custom"
  858. ) {
  859. if (
  860. configItem.isAlarmSound ||
  861. configItem.isAlart ||
  862. configItem.isContinuousAlarm
  863. ) {
  864. let a = {};
  865. a[`${alarmOption.stationId}`] =
  866. alarmOption.closeTime || alarmOption.confirmed ? false : true;
  867. this.alarmList.push(a);
  868. this.alarmList = [
  869. ...new Set(this.alarmList.map((t) => JSON.stringify(t))),
  870. ].map((s) => JSON.parse(s));
  871. }
  872. }
  873. if (
  874. configItem.isAlarmSound ||
  875. configItem.isAlart ||
  876. configItem.isContinuousAlarm
  877. ) {
  878. if (type && type == "ws") {
  879. this.dialogList.unshift(alarmOption);
  880. } else {
  881. this.dialogList.push(alarmOption);
  882. }
  883. }
  884. if (type && type == "ws") {
  885. this.realList.unshift(alarmOption);
  886. } else {
  887. this.realList.push(alarmOption);
  888. }
  889. // && alarmOption.deviceType != "custom"
  890. this.playAudioEffect();
  891. },
  892. getAlarmName(alarmItem) {
  893. let alarmName = "";
  894. if (alarmItem.deviceType === "booststation") {
  895. alarmName = "升压站报警";
  896. } else if (alarmItem.deviceType === "inverter") {
  897. alarmName = "光伏报警";
  898. } else if (alarmItem.deviceType === "windturbine") {
  899. alarmName = "设备报警";
  900. } else if (alarmItem.deviceType === "station") {
  901. alarmName = "场站";
  902. }
  903. if (alarmItem.alarmType === "custom") {
  904. alarmName = "自定义报警";
  905. }
  906. return alarmName;
  907. },
  908. getLvName(alarmItem) {
  909. if (alarmItem.rank === 1) {
  910. return "低级";
  911. } else if (alarmItem.rank === 2) {
  912. return "低中级";
  913. } else if (alarmItem.rank === 3) {
  914. return "中级";
  915. } else if (alarmItem.rank === 4) {
  916. return "中高级";
  917. } else if (alarmItem.rank === 5) {
  918. return "高级";
  919. }
  920. },
  921. playAudioEffect() {
  922. const lv1Config = this.getConfigItem(1);
  923. let lv1Play = false;
  924. if (lv1Config.isAlarmSound) {
  925. lv1Play = this.dialogList.some((ele) => {
  926. return ele.lv === 1 && !ele.confirm;
  927. });
  928. }
  929. const lv2Config = this.getConfigItem(2);
  930. let lv2Play = false;
  931. if (lv2Config.isAlarmSound) {
  932. lv2Play = this.dialogList.some((ele) => {
  933. return ele.lv === 2 && !ele.confirm;
  934. });
  935. }
  936. const lv3Config = this.getConfigItem(3);
  937. let lv3Play = false;
  938. if (lv3Config.isAlarmSound) {
  939. lv3Play = this.dialogList.some((ele) => {
  940. return ele.lv === 3 && !ele.confirm;
  941. });
  942. }
  943. const lv4Config = this.getConfigItem(4);
  944. let lv4Play = false;
  945. if (lv4Config.isAlarmSound) {
  946. lv4Play = this.dialogList.some((ele) => {
  947. return ele.lv === 4 && !ele.confirm;
  948. });
  949. }
  950. const lv5Config = this.getConfigItem(5);
  951. let lv5Play = false;
  952. if (lv5Config.isAlarmSound) {
  953. lv5Play = this.dialogList.some((ele) => {
  954. return ele.lv === 5 && !ele.confirm;
  955. });
  956. }
  957. // console.log(lv1Play, lv2Play, lv3Play, lv4Play, lv5Play);
  958. if (lv5Play && !this.seriousWarning) {
  959. this.seriousWarning = true;
  960. this.audioElement = new Audio();
  961. this.audioElement.src = "./static/sound/lv5.mp3";
  962. this.audioElement.loop = true;
  963. false && this.audioElement?.play();
  964. } else if (
  965. (lv1Play || lv2Play || lv3Play || lv4Play) &&
  966. !this.seriousWarning
  967. ) {
  968. this.audioElement = new Audio();
  969. this.audioElement.src = "./static/sound/lv4.mp3";
  970. this.audioElement.addEventListener("ended", () => {
  971. this.audioElement?.removeEventListener(
  972. "ended",
  973. this.stopPlayAudioEffect
  974. );
  975. });
  976. false && this.audioElement?.play();
  977. } else {
  978. if (!this.seriousWarning) {
  979. this.stopPlayAudioEffect();
  980. }
  981. }
  982. },
  983. getConfigItem(lv) {
  984. return (
  985. this.alarmConfigArray.find((ele) => {
  986. return ele.alarmLevel === lv;
  987. }) || {}
  988. );
  989. },
  990. stopPlayAudioEffect() {
  991. this.seriousWarning = false;
  992. if (this.audioElement) {
  993. this.audioElement.pause();
  994. this.audioElement.currentTime = 0;
  995. this.audioElement.loop = false;
  996. }
  997. this.audioElement = null;
  998. },
  999. async initWebSocket() {
  1000. this.$ws.initWebSocket();
  1001. },
  1002. getScale() {
  1003. const w = window.innerWidth / this.style.width;
  1004. const h = window.innerHeight / this.style.height;
  1005. const d = window.devicePixelRatio;
  1006. // let f = 16;
  1007. // if (d > 1) {
  1008. // f = 18;
  1009. // }
  1010. return { x: w, y: h };
  1011. },
  1012. setScale() {
  1013. let scale = this.getScale();
  1014. this.style.transform =
  1015. "scaleY(" + scale.y + ") scaleX(" + scale.x + ") translate(-50%, -50%)";
  1016. },
  1017. // 切换子系统事件
  1018. HeaderMenuClick(data) {
  1019. this.root = data.id;
  1020. },
  1021. showMenu() {
  1022. if (!this.isFixed) {
  1023. this.isShowMenu = true;
  1024. clearTimeout(this.memuCloseTimeout);
  1025. this.memuCloseTimeout = null;
  1026. }
  1027. },
  1028. hideMenu() {
  1029. if (!this.isFixed) {
  1030. this.memuCloseTimeout = setTimeout(() => {
  1031. this.isShowMenu = false;
  1032. }, 500);
  1033. }
  1034. },
  1035. getBooster() {
  1036. // GetBoosterlist().then((res) => {
  1037. // if (res.data && res.data.code == 200) {
  1038. // this.$store.commit("changeBooster", res.data.data);
  1039. // }
  1040. // });
  1041. },
  1042. // 获取测风塔
  1043. async getCftlist() {
  1044. // const { data: datas } = await getApiWeatherstation();
  1045. // this.$store.commit("changeCft", datas.data);
  1046. },
  1047. // 获取全部场站(不分风电光伏)
  1048. async getAllStation() {
  1049. const { data: datas } = await getAllStation();
  1050. if (datas) {
  1051. this.$store.commit("changeStationAll", datas);
  1052. } else {
  1053. this.$store.commit("changeStationAll", []);
  1054. }
  1055. },
  1056. login() {
  1057. this.$store.commit("user/SET_LOGINSTATE", true);
  1058. },
  1059. },
  1060. watch: {
  1061. "$store.state.menuData"(res) {
  1062. this.menuData = res || [];
  1063. },
  1064. isLogined: {
  1065. handler(res) {
  1066. if (!res && this.socketObj) {
  1067. // 离开标记
  1068. this.socketLeaveFlag = true;
  1069. // 关闭WebSocket
  1070. this.socketObj.close();
  1071. }
  1072. if (res) {
  1073. this.getBooster();
  1074. this.getCftlist();
  1075. this.getAllStation();
  1076. }
  1077. },
  1078. immediate: true,
  1079. },
  1080. "$store.state.moudleName"(msg) {
  1081. if (window.__MODE__.showModuleName && msg) {
  1082. this.BASE.showMsg({
  1083. type: this.$store.state.themeName === "dark" ? "success" : "warning",
  1084. showClose: true,
  1085. msg,
  1086. });
  1087. }
  1088. },
  1089. $route(to, from) {
  1090. // 当路由发生变化时,更新 currentPath
  1091. this.routepath = to.path;
  1092. this.initMenu();
  1093. },
  1094. },
  1095. };
  1096. </script>
  1097. <style lang="less">
  1098. @import "~@/assets/styles/main.less";
  1099. .curTabsBox {
  1100. position: absolute;
  1101. left: 0;
  1102. top: 72px;
  1103. background: #030713;
  1104. z-index: 2003;
  1105. // width: 220px;
  1106. width: 100%;
  1107. display: flex;
  1108. justify-content: flex-start;
  1109. align-items: center;
  1110. .item {
  1111. font-size: 16px;
  1112. margin: 0 16px;
  1113. line-height: 34px;
  1114. color: #97a8ca;
  1115. cursor: pointer;
  1116. &.active {
  1117. color: #f8f8ff;
  1118. border-bottom: 2px solid #40a7ee;
  1119. }
  1120. }
  1121. }
  1122. #screen {
  1123. z-index: 100;
  1124. transform-origin: 0 0;
  1125. position: fixed;
  1126. left: 50%;
  1127. top: 50%;
  1128. transition: 0.3s;
  1129. }
  1130. .alarmDeligo {
  1131. z-index: 2003;
  1132. position: relative;
  1133. img {
  1134. width: 43px;
  1135. max-width: 43px;
  1136. height: 43px;
  1137. z-index: 3;
  1138. }
  1139. img:first-child {
  1140. width: 53px;
  1141. height: 57px;
  1142. max-width: 53px;
  1143. top: -7px;
  1144. left: -5px;
  1145. position: absolute;
  1146. z-index: 3;
  1147. }
  1148. }
  1149. * {
  1150. box-sizing: border-box;
  1151. &::-webkit-scrollbar {
  1152. width: 6px;
  1153. height: 8px;
  1154. }
  1155. &::-webkit-scrollbar-track-piece {
  1156. background-color: rgba(255, 255, 255, 0.05);
  1157. border-radius: 4px;
  1158. }
  1159. &::-webkit-scrollbar-thumb {
  1160. background-color: fade(@gray, 75);
  1161. border-radius: 4px;
  1162. outline: none;
  1163. outline-offset: 0px;
  1164. border: none;
  1165. }
  1166. }
  1167. body {
  1168. margin: 0;
  1169. background: #fff;
  1170. color: #fff;
  1171. // background-image: url("./assets/background.png");
  1172. background: rgb(4, 12, 11);
  1173. background-size: cover;
  1174. font-size: @fontsize;
  1175. font-family: @defalut-font-family;
  1176. }
  1177. @menuWidth: 51.28px;
  1178. // @headerHeight: 110px;
  1179. @headerHeight: 80px;
  1180. .main {
  1181. width: 100%;
  1182. height: 100%;
  1183. display: flex;
  1184. flex-wrap: wrap;
  1185. overflow: hidden;
  1186. .header-body {
  1187. z-index: 2;
  1188. // background: radial-gradient(closest-corner at 22% 40%, #2d5a47, #040d0a, #040d0a);
  1189. // flex: 0 0 100%;
  1190. width: 100%;
  1191. // display: flex;
  1192. // flex-direction: row;
  1193. height: @headerHeight;
  1194. border-bottom: 1px solid #142b29;
  1195. .header-title {
  1196. padding-left: 20px;
  1197. margin: auto;
  1198. color: #fff;
  1199. }
  1200. .header-menu-nxf {
  1201. height: 72px;
  1202. flex-grow: 1;
  1203. background-image: url("./assets/nxfImg/header2.png");
  1204. background-repeat: no-repeat;
  1205. background-size: cover;
  1206. }
  1207. .header-menu-body {
  1208. height: 38px;
  1209. flex-grow: 1;
  1210. background: #08172c;
  1211. }
  1212. }
  1213. .menu-body {
  1214. position: absolute;
  1215. display: flex;
  1216. flex-direction: column;
  1217. align-items: center;
  1218. justify-content: space-between;
  1219. flex: 0 0 @menuWidth;
  1220. width: @menuWidth;
  1221. height: calc(100% - @headerHeight);
  1222. // height: calc(100vh - 59px);
  1223. top: @headerHeight;
  1224. // top: 59px;
  1225. background-color: fade(#192a26, 75%);
  1226. z-index: 2002;
  1227. opacity: 0;
  1228. transition: opacity 0.2s;
  1229. transition-timing-function: ease-in;
  1230. // transform: translate(-@menuWidth);
  1231. &:hover,
  1232. &.hover {
  1233. opacity: 1;
  1234. transition: opacity 0.2s;
  1235. transition-timing-function: ease-out;
  1236. transform: translate(0);
  1237. }
  1238. }
  1239. .elmenuSty {
  1240. position: absolute;
  1241. display: flex;
  1242. // flex-direction: column;
  1243. // align-items: center;
  1244. // justify-content: space-between;
  1245. // flex: 0 0 @menuWidth;
  1246. // width: @menuWidth;
  1247. // height: calc(100% - @headerHeight);
  1248. top: @headerHeight;
  1249. background-color: fade(#192a26, 75%);
  1250. z-index: 2002;
  1251. // opacity: 0;
  1252. transition: opacity 0.2s;
  1253. transition-timing-function: ease-in;
  1254. img {
  1255. width: 25px;
  1256. height: 25px;
  1257. }
  1258. .menu-list {
  1259. width: 100%;
  1260. height: 40px;
  1261. line-height: 40px;
  1262. position: absolute;
  1263. bottom: 50px;
  1264. .menu-item {
  1265. height: 40px;
  1266. line-height: 40px;
  1267. display: flex;
  1268. justify-content: center;
  1269. align-items: center;
  1270. img {
  1271. width: 25px;
  1272. height: 25px;
  1273. }
  1274. }
  1275. }
  1276. .el-menu {
  1277. min-width: 66px;
  1278. border-right: transparent;
  1279. .el-sub-menu {
  1280. margin: 0 5px;
  1281. .el-sub-menu__title {
  1282. // height: 1px !important;
  1283. background: none;
  1284. .elGrounpTitleAll {
  1285. display: flex;
  1286. height: 45px;
  1287. line-height: 45px;
  1288. position: relative;
  1289. top: 5px;
  1290. .svgSty {
  1291. line-height: 45px;
  1292. position: relative;
  1293. }
  1294. .chSpna {
  1295. color: #a5b7df !important;
  1296. }
  1297. }
  1298. .elGrounpTitleAll:hover{
  1299. // .chSpna{
  1300. background: #1c69bb;
  1301. padding: 0 10px;
  1302. color: #a5b7df;
  1303. // }
  1304. }
  1305. .elGrounpTitle {
  1306. .svgSty {
  1307. line-height: 45px;
  1308. position: relative;
  1309. top: -10px;
  1310. left: -5px;
  1311. }
  1312. }
  1313. }
  1314. }
  1315. .is-opened {
  1316. .el-sub-menu__title {
  1317. border-radius: 8px 8px 0 0;
  1318. background: #001d53;
  1319. .elMenuTitleAll {
  1320. display: flex;
  1321. position: relative;
  1322. left: -5px;
  1323. .svgSty {
  1324. line-height: 45px;
  1325. position: relative;
  1326. top: -10px;
  1327. }
  1328. }
  1329. }
  1330. .el-menu {
  1331. border-radius: 0 0 8px 8px;
  1332. // padding: 10px 0 10px 0;
  1333. background: #132444;
  1334. .elsubMenu {
  1335. // width: 130px;
  1336. width: calc(100% - 70px);
  1337. height: 30px;
  1338. // margin: 10px 0;
  1339. position: relative;
  1340. left: 50px;
  1341. // background: #1c69bb;
  1342. .grounpItem {
  1343. height: 30px;
  1344. position: relative;
  1345. top: -24px;
  1346. .grounpItemSty {
  1347. width: 7px;
  1348. height: 7px;
  1349. background: #b1b8cb;
  1350. border-radius: 50%;
  1351. position: relative;
  1352. left: -60px;
  1353. }
  1354. .grounpItemSpan {
  1355. position: relative;
  1356. left: -30px;
  1357. }
  1358. }
  1359. // .is-active {
  1360. // max-width: 160px !important;
  1361. // background: rgba(0, 70, 199, 0.4);
  1362. // border: 1px solid #115fc8;
  1363. // .grounpItemSty {
  1364. // background: #1c99ff;
  1365. // position: relative;
  1366. // left: -61px;
  1367. // }
  1368. // }
  1369. }
  1370. .isSelect {
  1371. background: #1c69bb;
  1372. .grounpItemSpan {
  1373. color: #a5b7df;
  1374. }
  1375. }
  1376. .elsubMenu:hover {
  1377. background: #1c69bb;
  1378. .grounpItemSpan {
  1379. color: #a5b7df;
  1380. }
  1381. }
  1382. }
  1383. }
  1384. .noGrounpItem {
  1385. // padding: 0px 20px;
  1386. background: none;
  1387. position: relative;
  1388. // left: 5px;
  1389. .elMenuTitleAll {
  1390. display: flex;
  1391. height: 45px;
  1392. line-height: 45px;
  1393. .svgSty {
  1394. line-height: 45px;
  1395. position: relative;
  1396. }
  1397. }
  1398. .elMenuTitle {
  1399. height: 45px;
  1400. position: relative;
  1401. top: 5px;
  1402. .svgSty {
  1403. position: relative;
  1404. top: 3px;
  1405. left: 5px;
  1406. }
  1407. .titspan {
  1408. margin-left: 10px;
  1409. color: #a5b7df;
  1410. position: relative;
  1411. top: 4px;
  1412. left: 6px;
  1413. }
  1414. &.is-active {
  1415. background: #001d53;
  1416. border-radius: 8px;
  1417. padding: 5px;
  1418. position: relative;
  1419. top: 5px;
  1420. }
  1421. .titspan:hover {
  1422. padding: 0 10px;
  1423. background: #1c69bb;
  1424. }
  1425. .isSelect {
  1426. background: #1c69bb;
  1427. padding: 0 10px;
  1428. .grounpItemSpan {
  1429. color: #a5b7df;
  1430. }
  1431. }
  1432. }
  1433. }
  1434. .is-active {
  1435. // .elMenuTitle {
  1436. // background: #001d53;
  1437. // border-radius: 8px;
  1438. // padding: 5px;
  1439. // position: relative;
  1440. // top: 5px;
  1441. // .svgSty{
  1442. // line-height: 33px;
  1443. // }
  1444. // .titspan{
  1445. // margin-left: 10px;
  1446. // position: relative;
  1447. // top: -4px;
  1448. // }
  1449. // }
  1450. .elMenuTitleAll {
  1451. display: flex;
  1452. width: 100%;
  1453. }
  1454. }
  1455. }
  1456. }
  1457. .elmenuSty {
  1458. .el-menu {
  1459. .el-sub-menu {
  1460. .el-sub-menu__title {
  1461. color: #a5b7df;
  1462. svg {
  1463. path {
  1464. fill: #a5b7df;
  1465. }
  1466. }
  1467. }
  1468. .el-sub-menu__title:hover,
  1469. .is-active {
  1470. color: #a5b7df;
  1471. .chSpna {
  1472. color: #a5b7df !important;
  1473. }
  1474. svg {
  1475. path {
  1476. fill: #a5b7df;
  1477. }
  1478. }
  1479. }
  1480. }
  1481. .el-menu-item {
  1482. color: #a5b7df;
  1483. svg {
  1484. path {
  1485. fill: #a5b7df;
  1486. }
  1487. }
  1488. }
  1489. .el-menu-item:hover,
  1490. .is-active {
  1491. color: #1c69bb;
  1492. background: transparent !important;
  1493. .titspan {
  1494. color: #a5b7df !important;
  1495. }
  1496. svg {
  1497. path {
  1498. fill: #1c69bb;
  1499. }
  1500. }
  1501. }
  1502. }
  1503. }
  1504. .main-body {
  1505. flex: 0 0 100%;
  1506. max-width: 100%;
  1507. // padding: 1.481vh;
  1508. // transition: flex 0.1s, margin-left 0.1s;
  1509. // transition-timing-function: ease-in-out;
  1510. // &.show-menu {
  1511. // flex: 0 0 calc(100vw - @menuWidth);
  1512. // margin-left: @menuWidth;
  1513. // transition: flex 0.1s, margin-left 0.1s;
  1514. // transition-timing-function: ease-in-out;
  1515. // }
  1516. }
  1517. .el-table__body tr.current-row > td {
  1518. color: #fff;
  1519. background: rgba(66, 66, 66, 0.66) !important;
  1520. }
  1521. .el-transfer-panel {
  1522. width: 450px !important;
  1523. height: 73vh;
  1524. background-color: #111d1c !important;
  1525. border: 1px solid #999999 !important;
  1526. .el-transfer-panel__body {
  1527. height: 100% !important;
  1528. .el-transfer-panel__list {
  1529. height: 100% !important;
  1530. }
  1531. }
  1532. }
  1533. .el-transfer-panel .el-transfer-panel__header {
  1534. background-color: #111d1c !important;
  1535. color: #05bb4c !important;
  1536. .el-checkbox .el-checkbox__label {
  1537. color: #05bb4c !important;
  1538. }
  1539. }
  1540. .el-button--primary.is-disabled,
  1541. .el-button--primary.is-disabled:active,
  1542. .el-button--primary.is-disabled:focus,
  1543. .el-button--primary.is-disabled:hover {
  1544. background-color: #05bb4c;
  1545. border-color: #05bb4c;
  1546. }
  1547. }
  1548. .login {
  1549. width: 100%;
  1550. height: 100%;
  1551. background: url("~@/assets/login-bg.png") no-repeat;
  1552. background-size: cover;
  1553. position: relative;
  1554. }
  1555. .el-badge {
  1556. &.active {
  1557. .el-badge__content--danger {
  1558. opacity: 0 !important;
  1559. }
  1560. }
  1561. }
  1562. .el-badge__content--danger {
  1563. background: #ff4e00 !important;
  1564. border: none !important;
  1565. }
  1566. .el-badge__content.is-fixed {
  1567. top: 7px !important;
  1568. right: 14px !important;
  1569. z-index: 2003 !important;
  1570. }
  1571. .trans {
  1572. animation: circleProgess 3s linear infinite;
  1573. }
  1574. @keyframes circleProgess {
  1575. 0% {
  1576. transform: rotateZ(360deg);
  1577. }
  1578. 25% {
  1579. transform: rotateZ(270deg);
  1580. }
  1581. 50% {
  1582. transform: rotateZ(180deg);
  1583. }
  1584. 75% {
  1585. transform: rotateZ(90deg);
  1586. }
  1587. 100% {
  1588. transform: rotateZ(0deg);
  1589. }
  1590. }
  1591. .el-tree-node__content {
  1592. height: 40px !important;
  1593. }
  1594. .el-tree-node__label {
  1595. font-size: 14px !important;
  1596. }
  1597. .el-pagination.is-background .el-pager li:not(.disabled).active {
  1598. background-color: #05bb4c !important;
  1599. }
  1600. .el-table__body tr.hover-row > td.el-table__cell {
  1601. background-color: rgba(2, 2, 2) !important;
  1602. }
  1603. #appBody.light .el-table th.el-table__cell > .cell {
  1604. height: 8.2vh !important;
  1605. }
  1606. .power-benchmarking-page
  1607. .top
  1608. .top-left
  1609. .table.el-table
  1610. thead
  1611. tr:last-child
  1612. th
  1613. .cell {
  1614. height: 116px !important;
  1615. }
  1616. * {
  1617. -webkit-touch-callout: none; /*系统默认菜单被禁用*/
  1618. -webkit-user-select: none; /*webkit浏览器*/
  1619. -khtml-user-select: none; /*早期浏览器*/
  1620. -moz-user-select: none; /*火狐*/
  1621. -ms-user-select: none; /*IE10*/
  1622. user-select: none;
  1623. }
  1624. input {
  1625. -webkit-user-select: auto; /*webkit浏览器*/
  1626. }
  1627. textarea {
  1628. -webkit-user-select: auto; /*webkit浏览器*/
  1629. }
  1630. .gfSelect .el-input__suffix {
  1631. display: none !important;
  1632. }
  1633. body .gfSelect .el-input__inner {
  1634. background: rgba(83, 98, 104, 0);
  1635. color: #ffffff;
  1636. font-size: 16px;
  1637. }
  1638. .main-body {
  1639. .query {
  1640. display: flex;
  1641. // justify-content: space-between;
  1642. &.left {
  1643. justify-content: flex-start;
  1644. }
  1645. .query-items {
  1646. flex: 0 0 auto;
  1647. display: flex;
  1648. .query-item {
  1649. flex: 0 0 auto;
  1650. display: flex;
  1651. margin: 0 1.4815vh;
  1652. .el-input {
  1653. &.placeholder-left {
  1654. input {
  1655. &::placeholder {
  1656. text-align: left;
  1657. }
  1658. }
  1659. }
  1660. }
  1661. .placeholder-left {
  1662. .el-input {
  1663. input {
  1664. height: 33px !important;
  1665. &::placeholder {
  1666. text-align: left;
  1667. }
  1668. }
  1669. }
  1670. }
  1671. .lable {
  1672. flex: 0 0 auto;
  1673. margin-right: 1.4815vh;
  1674. line-height: 33px;
  1675. color: @gray-l;
  1676. }
  1677. .search-input {
  1678. position: relative;
  1679. // input {
  1680. // box-sizing: border-box;
  1681. // flex: 0 0 200px;
  1682. // border: 0px solid @darkgray;
  1683. // color: @white;
  1684. // outline: unset;
  1685. // border-radius: 0%;
  1686. // padding-right: 40px;
  1687. // background: fade(#536268, 20);
  1688. // height: 33px;
  1689. // line-height: 33px;
  1690. // &::placeholder {
  1691. // font-size: 12px;
  1692. // text-align: right;
  1693. // color: @darkgray;
  1694. // }
  1695. // }
  1696. // .unit {
  1697. // position: absolute;
  1698. // right: 12px;
  1699. // top: 6px;
  1700. // line-height: 33px;
  1701. // margin: auto;
  1702. // }
  1703. }
  1704. }
  1705. }
  1706. .query-actions {
  1707. flex: 0 0 auto;
  1708. margin-left: 50px;
  1709. display: flex;
  1710. justify-content: flex-start;
  1711. align-items: center;
  1712. .btn {
  1713. cursor: pointer;
  1714. }
  1715. }
  1716. }
  1717. input {
  1718. box-sizing: border-box;
  1719. flex: 0 0 200px;
  1720. border: 0px solid @darkgray;
  1721. color: @white;
  1722. outline: unset;
  1723. border-radius: 0%;
  1724. padding-right: 40px;
  1725. background: fade(#536268, 20);
  1726. height: 33px;
  1727. line-height: 33px;
  1728. &::placeholder {
  1729. font-size: 12px;
  1730. text-align: right;
  1731. color: @darkgray;
  1732. }
  1733. }
  1734. input[type="checkbox"] {
  1735. position: relative;
  1736. display: inline-block;
  1737. appearance: none;
  1738. width: 14px;
  1739. height: 14px;
  1740. outline: none;
  1741. border: 1px solid @gray;
  1742. background-color: #000;
  1743. border-radius: 20%;
  1744. margin: 0;
  1745. padding: 0;
  1746. &:checked {
  1747. border-color: @green;
  1748. background: @green;
  1749. }
  1750. &::after {
  1751. display: inline-block;
  1752. content: " ";
  1753. position: absolute;
  1754. left: 30%;
  1755. top: 5%;
  1756. width: 3px;
  1757. height: 7px;
  1758. border-color: #fff;
  1759. border-style: solid;
  1760. border-width: 0px 2px 2px 0px;
  1761. transform: rotate(45deg);
  1762. opacity: 0;
  1763. }
  1764. &:checked::after {
  1765. content: "";
  1766. opacity: 1;
  1767. transition: opacity 0.3s ease-out;
  1768. }
  1769. }
  1770. }
  1771. </style>