App.vue 70 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881
  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. this.getAllWp();
  582. // await this.initWebSocket();
  583. // this.getAlarmConfig();
  584. // this.x = 80;
  585. // this.y = 80;
  586. // let requestResult = [];
  587. // this.requestAlarmHistoryParams.forEach(({ alarmType, deviceType }) => {
  588. // requestResult.push(this.getAlarmHistory(alarmType, deviceType));
  589. // });
  590. // Promise.all(requestResult)
  591. // .then((promiseResult) => {
  592. // this.alarmList = [];
  593. // promiseResult.forEach(({ data }) => {
  594. // data?.ls?.forEach((ele) => {
  595. // this.pushALarmItem(ele);
  596. // });
  597. // });
  598. // this.dialogList.sort((a, b) => {
  599. // return b.ts - a.ts;
  600. // });
  601. // this.realList.sort((a, b) => {
  602. // return b.ts - a.ts;
  603. // });
  604. // this.$store.commit("changeAlarmlist", this.alarmList);
  605. // this.$store.commit("setWarning", this.dialogList);
  606. // this.$store.commit("setWarningList", this.realList);
  607. // // if (!this.socketLeaveFlag) {
  608. // // // 没有离开——重连
  609. // // // websocket重连
  610. // // this.socketReconnect1();
  611. // // }
  612. // })
  613. // .catch(() => {
  614. // requestResult.forEach((ele, index) => {
  615. // ele
  616. // .then(({ data }) => {
  617. // data?.ls?.forEach((ele) => {
  618. // this.pushALarmItem(ele);
  619. // });
  620. // })
  621. // .catch((error) => {
  622. // ElNotification({
  623. // type: "error",
  624. // title: "查询历史未处理报警请求出错!",
  625. // dangerouslyUseHTMLString: true,
  626. // message: `<div class="currentRequestErrorNotification">
  627. // <p><span>主要参数:</p>
  628. // <p style="color:var(--el-color-primary)"><span class="errorTitle">alarmType:</span><span class="errorDesc">"${this.requestAlarmHistoryParams[index].alarmType}"</span></p>
  629. // <p style="color:var(--el-color-primary)"><span class="errorTitle">deviceType:</span><span class="errorDesc">"${this.requestAlarmHistoryParams[index].deviceType}"</span></p>
  630. // <p style="color:var(--el-color-danger)"><span class="errorTitle">错误正文:</span><span class="errorDesc">${error}</span></p>
  631. // </div>`,
  632. // });
  633. // throw error;
  634. // });
  635. // });
  636. // });
  637. },
  638. mounted() {
  639. this.initMenu();
  640. let that = this;
  641. that.setScale();
  642. /*窗口改变事件*/
  643. $(window).resize(() => {
  644. that.setScale();
  645. });
  646. },
  647. unmounted() {
  648. console.log("离开标记", this.socketLeaveFlag);
  649. },
  650. methods: {
  651. getAllWp() {
  652. fetchStationListAll().then(({ data }) => {
  653. data.forEach((ele) => {
  654. ele.name = ele.aname;
  655. });
  656. this.$store.commit("changeStationAll", data);
  657. });
  658. },
  659. openWeb() {
  660. this.activeTab = "yxzb";
  661. 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`;
  662. },
  663. jumpUrl() {
  664. this.activeTab = "jjfx";
  665. this.$router.push({ path: "/economicsOperation" });
  666. },
  667. switchTabShow() {
  668. return (
  669. window.location.href.indexOf("#/integratedAlarm") === -1 &&
  670. window.location.href.indexOf("#/nxreport") === -1
  671. );
  672. },
  673. getSelectState(idx) {
  674. // routepath === $route.path ? 'isSelect' : ''
  675. const href = window.location.href;
  676. const path = this.$route.path;
  677. const reg = new RegExp(path);
  678. // return idx !== "/" && reg.test(path) ? "isSelect" : "";
  679. return idx !== "/" && path.indexOf(idx) !== -1 ? "isSelect" : "";
  680. },
  681. initMenu() {
  682. let str = window.location.href;
  683. if (str.indexOf("integratedAlarm") > -1) {
  684. this.showMenuData = this.warnDatas;
  685. this.$nextTick(() => {
  686. document.title = "预警系统";
  687. });
  688. } else if (str.indexOf("economicsOperation") > -1) {
  689. this.showMenuData = this.economyDatas;
  690. this.$nextTick(() => {
  691. document.title = "经济运行";
  692. });
  693. } else if (str.indexOf("nxreport") > -1) {
  694. this.showMenuData = this.reportDatas;
  695. this.$nextTick(() => {
  696. document.title = "智能报表";
  697. });
  698. } else {
  699. this.showMenuData = this.warnDatas;
  700. this.$nextTick(() => {
  701. document.title = "预警系统";
  702. });
  703. }
  704. },
  705. pagestyFn(path) {
  706. let str = "";
  707. if (this.isFixed && this.menuLength > 0) {
  708. if (path.indexOf("economicsOperation") > -1) {
  709. str = "padding-left: 220px";
  710. } else if (path.indexOf("nxreport") > -1) {
  711. str = "padding-left: 280px";
  712. } else if (path.indexOf("integratedAlarm") > -1) {
  713. str = "padding-left: 220px";
  714. }
  715. }
  716. return `${str};height:${
  717. this.switchTabShow()
  718. ? "calc(100% - 80px - 20px); margin-top:20px;"
  719. : "calc(100% - 80px);"
  720. }`;
  721. },
  722. noGrounpItemFn(path) {
  723. let str = "66px";
  724. if (!this.isCollapse) {
  725. if (path.indexOf("economicsOperation") > -1) {
  726. str = "width: 220px";
  727. } else if (path.indexOf("nxreport") > -1) {
  728. str = "width: 280px";
  729. } else if (path.indexOf("integratedAlarm") > -1) {
  730. str = "width: 220px";
  731. }
  732. } else {
  733. str = "width: 66px";
  734. }
  735. return str;
  736. },
  737. //获取报警配置
  738. getAlarmConfig() {
  739. if (localStorage.getItem("alarmConfigArray")) {
  740. this.alarmConfigArray = JSON.parse(
  741. localStorage.getItem("alarmConfigArray")
  742. );
  743. } else {
  744. this.alarmConfigArray = [
  745. {
  746. id: "1",
  747. alarmLevel: 1,
  748. isAlart: false,
  749. isAlarmSound: false,
  750. isContinuousAlarm: false,
  751. },
  752. {
  753. id: "2",
  754. alarmLevel: 2,
  755. isAlart: false,
  756. isAlarmSound: false,
  757. isContinuousAlarm: false,
  758. },
  759. {
  760. id: "3",
  761. alarmLevel: 3,
  762. isAlart: false,
  763. isAlarmSound: false,
  764. isContinuousAlarm: false,
  765. },
  766. {
  767. id: "4",
  768. alarmLevel: 4,
  769. isAlart: true,
  770. isAlarmSound: true,
  771. isContinuousAlarm: false,
  772. },
  773. {
  774. id: "5",
  775. alarmLevel: 5,
  776. isAlart: true,
  777. isAlarmSound: true,
  778. isContinuousAlarm: true,
  779. },
  780. ];
  781. localStorage.setItem(
  782. "alarmConfigArray",
  783. JSON.stringify(this.alarmConfigArray)
  784. );
  785. }
  786. },
  787. //查历史报警
  788. getAlarmHistory(alarmType, deviceType) {
  789. let params = {
  790. pageNum: 1,
  791. pageSize: 50,
  792. alarmId: "",
  793. alarmType,
  794. deviceType,
  795. stationid: "",
  796. deviceid: "",
  797. modelId: "",
  798. components: "",
  799. description: "",
  800. isclose: false,
  801. // begin: dayjs().add(-1, "hour").format("YYYY-MM-DD HH:mm:ss"),
  802. // end: dayjs().format("YYYY-MM-DD HH:mm:ss"),
  803. begin: `${dayjs().add(-1, "hour").format("YYYY-MM-DD")} 00:00:00`,
  804. end: `${dayjs().format("YYYY-MM-DD")} 23:59:59`,
  805. };
  806. if (params.alarmType == "windturbine") {
  807. params.stationid = "";
  808. } else if (params.alarmType == "inverter") {
  809. params.stationid = "";
  810. }
  811. return alarm_history(params, 12000);
  812. },
  813. pushALarmItem(alarmItem, type) {
  814. const configItem = this.getConfigItem(alarmItem.rank);
  815. const alarmOption = {
  816. id: alarmItem.id ? alarmItem.id : alarmItem.tbname,
  817. lv: alarmItem.rank,
  818. modelId: alarmItem.modelId,
  819. lvName: this.getLvName(alarmItem),
  820. rank: alarmItem.rank,
  821. confirmed: alarmItem.confirmed,
  822. class: `animate__bounceInRight lv${alarmItem.rank}`,
  823. deviceId: alarmItem.deviceId,
  824. faultCause: alarmItem.faultCause,
  825. resolvent: alarmItem.resolvent,
  826. characteristic: alarmItem.characteristic,
  827. code: alarmItem.code,
  828. wpName: alarmItem.stationName
  829. ? alarmItem.stationName
  830. : alarmItem.wpName,
  831. stationId: alarmItem.stationId ? alarmItem.stationId : alarmItem.wpId,
  832. isClose: alarmItem.closeTime ? true : alarmItem.endts ? true : false,
  833. isCloseName: alarmItem.closeTime
  834. ? "已解除"
  835. : alarmItem.endts
  836. ? "已解除"
  837. : "未解除",
  838. alarmId: alarmItem.alarmId,
  839. alarmType: alarmItem.alarmType,
  840. alarmName: this.getAlarmName(alarmItem),
  841. description: alarmItem.description,
  842. deviceType: alarmItem.deviceType,
  843. oval: alarmItem.oval,
  844. triggerType: alarmItem.triggerType,
  845. ts: alarmItem.ts
  846. ? dayjs(alarmItem.ts).valueOf()
  847. : dayjs(alarmItem.updateTime).valueOf(),
  848. endts: alarmItem.endts
  849. ? dayjs(alarmItem.endts).format("YYYY-MM-DD HH:mm:ss")
  850. : null,
  851. closeTime: alarmItem.closeTime
  852. ? dayjs(alarmItem.closeTime).format("YYYY-MM-DD HH:mm:ss")
  853. : null,
  854. deviceName: alarmItem.deviceName
  855. ? alarmItem.deviceName
  856. : alarmItem.code,
  857. tsName: alarmItem.ts
  858. ? new Date(alarmItem.ts).formatDate("MM-dd hh:mm:ss")
  859. : new Date(alarmItem.updateTime).formatDate("MM-dd hh:mm:ss"),
  860. fullTsName: alarmItem.ts
  861. ? new Date(alarmItem.ts).formatDate("yyyy-MM-dd hh:mm:ss")
  862. : new Date(alarmItem.updateTime).formatDate("yyyy-MM-dd hh:mm:ss"),
  863. };
  864. if (
  865. alarmOption.alarmType == "booststation" &&
  866. alarmOption.deviceType != "custom"
  867. ) {
  868. if (
  869. configItem.isAlarmSound ||
  870. configItem.isAlart ||
  871. configItem.isContinuousAlarm
  872. ) {
  873. let a = {};
  874. a[`${alarmOption.stationId}`] =
  875. alarmOption.closeTime || alarmOption.confirmed ? false : true;
  876. this.alarmList.push(a);
  877. this.alarmList = [
  878. ...new Set(this.alarmList.map((t) => JSON.stringify(t))),
  879. ].map((s) => JSON.parse(s));
  880. }
  881. }
  882. if (
  883. configItem.isAlarmSound ||
  884. configItem.isAlart ||
  885. configItem.isContinuousAlarm
  886. ) {
  887. if (type && type == "ws") {
  888. this.dialogList.unshift(alarmOption);
  889. } else {
  890. this.dialogList.push(alarmOption);
  891. }
  892. }
  893. if (type && type == "ws") {
  894. this.realList.unshift(alarmOption);
  895. } else {
  896. this.realList.push(alarmOption);
  897. }
  898. // && alarmOption.deviceType != "custom"
  899. this.playAudioEffect();
  900. },
  901. getAlarmName(alarmItem) {
  902. let alarmName = "";
  903. if (alarmItem.deviceType === "booststation") {
  904. alarmName = "升压站报警";
  905. } else if (alarmItem.deviceType === "inverter") {
  906. alarmName = "光伏报警";
  907. } else if (alarmItem.deviceType === "windturbine") {
  908. alarmName = "设备报警";
  909. } else if (alarmItem.deviceType === "station") {
  910. alarmName = "场站";
  911. }
  912. if (alarmItem.alarmType === "custom") {
  913. alarmName = "自定义报警";
  914. }
  915. return alarmName;
  916. },
  917. getLvName(alarmItem) {
  918. if (alarmItem.rank === 1) {
  919. return "低级";
  920. } else if (alarmItem.rank === 2) {
  921. return "低中级";
  922. } else if (alarmItem.rank === 3) {
  923. return "中级";
  924. } else if (alarmItem.rank === 4) {
  925. return "中高级";
  926. } else if (alarmItem.rank === 5) {
  927. return "高级";
  928. }
  929. },
  930. playAudioEffect() {
  931. const lv1Config = this.getConfigItem(1);
  932. let lv1Play = false;
  933. if (lv1Config.isAlarmSound) {
  934. lv1Play = this.dialogList.some((ele) => {
  935. return ele.lv === 1 && !ele.confirm;
  936. });
  937. }
  938. const lv2Config = this.getConfigItem(2);
  939. let lv2Play = false;
  940. if (lv2Config.isAlarmSound) {
  941. lv2Play = this.dialogList.some((ele) => {
  942. return ele.lv === 2 && !ele.confirm;
  943. });
  944. }
  945. const lv3Config = this.getConfigItem(3);
  946. let lv3Play = false;
  947. if (lv3Config.isAlarmSound) {
  948. lv3Play = this.dialogList.some((ele) => {
  949. return ele.lv === 3 && !ele.confirm;
  950. });
  951. }
  952. const lv4Config = this.getConfigItem(4);
  953. let lv4Play = false;
  954. if (lv4Config.isAlarmSound) {
  955. lv4Play = this.dialogList.some((ele) => {
  956. return ele.lv === 4 && !ele.confirm;
  957. });
  958. }
  959. const lv5Config = this.getConfigItem(5);
  960. let lv5Play = false;
  961. if (lv5Config.isAlarmSound) {
  962. lv5Play = this.dialogList.some((ele) => {
  963. return ele.lv === 5 && !ele.confirm;
  964. });
  965. }
  966. // console.log(lv1Play, lv2Play, lv3Play, lv4Play, lv5Play);
  967. if (lv5Play && !this.seriousWarning) {
  968. this.seriousWarning = true;
  969. this.audioElement = new Audio();
  970. this.audioElement.src = "./static/sound/lv5.mp3";
  971. this.audioElement.loop = true;
  972. false && this.audioElement?.play();
  973. } else if (
  974. (lv1Play || lv2Play || lv3Play || lv4Play) &&
  975. !this.seriousWarning
  976. ) {
  977. this.audioElement = new Audio();
  978. this.audioElement.src = "./static/sound/lv4.mp3";
  979. this.audioElement.addEventListener("ended", () => {
  980. this.audioElement?.removeEventListener(
  981. "ended",
  982. this.stopPlayAudioEffect
  983. );
  984. });
  985. false && this.audioElement?.play();
  986. } else {
  987. if (!this.seriousWarning) {
  988. this.stopPlayAudioEffect();
  989. }
  990. }
  991. },
  992. getConfigItem(lv) {
  993. return (
  994. this.alarmConfigArray.find((ele) => {
  995. return ele.alarmLevel === lv;
  996. }) || {}
  997. );
  998. },
  999. stopPlayAudioEffect() {
  1000. this.seriousWarning = false;
  1001. if (this.audioElement) {
  1002. this.audioElement.pause();
  1003. this.audioElement.currentTime = 0;
  1004. this.audioElement.loop = false;
  1005. }
  1006. this.audioElement = null;
  1007. },
  1008. async initWebSocket() {
  1009. this.$ws.initWebSocket();
  1010. },
  1011. getScale() {
  1012. const w = window.innerWidth / this.style.width;
  1013. const h = window.innerHeight / this.style.height;
  1014. const d = window.devicePixelRatio;
  1015. // let f = 16;
  1016. // if (d > 1) {
  1017. // f = 18;
  1018. // }
  1019. return { x: w, y: h };
  1020. },
  1021. setScale() {
  1022. let scale = this.getScale();
  1023. this.style.transform =
  1024. "scaleY(" + scale.y + ") scaleX(" + scale.x + ") translate(-50%, -50%)";
  1025. },
  1026. // 切换子系统事件
  1027. HeaderMenuClick(data) {
  1028. this.root = data.id;
  1029. },
  1030. showMenu() {
  1031. if (!this.isFixed) {
  1032. this.isShowMenu = true;
  1033. clearTimeout(this.memuCloseTimeout);
  1034. this.memuCloseTimeout = null;
  1035. }
  1036. },
  1037. hideMenu() {
  1038. if (!this.isFixed) {
  1039. this.memuCloseTimeout = setTimeout(() => {
  1040. this.isShowMenu = false;
  1041. }, 500);
  1042. }
  1043. },
  1044. getBooster() {
  1045. // GetBoosterlist().then((res) => {
  1046. // if (res.data && res.data.code == 200) {
  1047. // this.$store.commit("changeBooster", res.data.data);
  1048. // }
  1049. // });
  1050. },
  1051. // 获取测风塔
  1052. async getCftlist() {
  1053. // const { data: datas } = await getApiWeatherstation();
  1054. // this.$store.commit("changeCft", datas.data);
  1055. },
  1056. // 获取全部场站(不分风电光伏)
  1057. async getAllStation() {
  1058. const { data: datas } = await getAllStation();
  1059. if (datas) {
  1060. this.$store.commit("changeStationAll", datas);
  1061. } else {
  1062. this.$store.commit("changeStationAll", []);
  1063. }
  1064. },
  1065. login() {
  1066. this.$store.commit("user/SET_LOGINSTATE", true);
  1067. },
  1068. },
  1069. watch: {
  1070. "$store.state.menuData"(res) {
  1071. this.menuData = res || [];
  1072. },
  1073. isLogined: {
  1074. handler(res) {
  1075. if (!res && this.socketObj) {
  1076. // 离开标记
  1077. this.socketLeaveFlag = true;
  1078. // 关闭WebSocket
  1079. this.socketObj.close();
  1080. }
  1081. if (res) {
  1082. this.getBooster();
  1083. this.getCftlist();
  1084. this.getAllStation();
  1085. }
  1086. },
  1087. immediate: true,
  1088. },
  1089. "$store.state.moudleName"(msg) {
  1090. if (window.__MODE__.showModuleName && msg) {
  1091. this.BASE.showMsg({
  1092. type: this.$store.state.themeName === "dark" ? "success" : "warning",
  1093. showClose: true,
  1094. msg,
  1095. });
  1096. }
  1097. },
  1098. $route(to, from) {
  1099. // 当路由发生变化时,更新 currentPath
  1100. this.routepath = to.path;
  1101. this.initMenu();
  1102. },
  1103. },
  1104. };
  1105. </script>
  1106. <style lang="less">
  1107. @import "~@/assets/styles/main.less";
  1108. .curTabsBox {
  1109. position: absolute;
  1110. left: 0;
  1111. top: 72px;
  1112. background: #030713;
  1113. z-index: 2003;
  1114. // width: 220px;
  1115. width: 100%;
  1116. display: flex;
  1117. justify-content: flex-start;
  1118. align-items: center;
  1119. .item {
  1120. font-size: 16px;
  1121. margin: 0 16px;
  1122. line-height: 34px;
  1123. color: #97a8ca;
  1124. cursor: pointer;
  1125. &.active {
  1126. color: #f8f8ff;
  1127. border-bottom: 2px solid #40a7ee;
  1128. }
  1129. }
  1130. }
  1131. #screen {
  1132. z-index: 100;
  1133. transform-origin: 0 0;
  1134. position: fixed;
  1135. left: 50%;
  1136. top: 50%;
  1137. transition: 0.3s;
  1138. }
  1139. .alarmDeligo {
  1140. z-index: 2003;
  1141. position: relative;
  1142. img {
  1143. width: 43px;
  1144. max-width: 43px;
  1145. height: 43px;
  1146. z-index: 3;
  1147. }
  1148. img:first-child {
  1149. width: 53px;
  1150. height: 57px;
  1151. max-width: 53px;
  1152. top: -7px;
  1153. left: -5px;
  1154. position: absolute;
  1155. z-index: 3;
  1156. }
  1157. }
  1158. * {
  1159. box-sizing: border-box;
  1160. &::-webkit-scrollbar {
  1161. width: 6px;
  1162. height: 8px;
  1163. }
  1164. &::-webkit-scrollbar-track-piece {
  1165. background-color: rgba(255, 255, 255, 0.05);
  1166. border-radius: 4px;
  1167. }
  1168. &::-webkit-scrollbar-thumb {
  1169. background-color: fade(@gray, 75);
  1170. border-radius: 4px;
  1171. outline: none;
  1172. outline-offset: 0px;
  1173. border: none;
  1174. }
  1175. }
  1176. body {
  1177. margin: 0;
  1178. background: #fff;
  1179. color: #fff;
  1180. // background-image: url("./assets/background.png");
  1181. background: rgb(4, 12, 11);
  1182. background-size: cover;
  1183. font-size: @fontsize;
  1184. font-family: @defalut-font-family;
  1185. }
  1186. @menuWidth: 51.28px;
  1187. // @headerHeight: 110px;
  1188. @headerHeight: 80px;
  1189. .main {
  1190. width: 100%;
  1191. height: 100%;
  1192. display: flex;
  1193. flex-wrap: wrap;
  1194. overflow: hidden;
  1195. .header-body {
  1196. z-index: 2;
  1197. // background: radial-gradient(closest-corner at 22% 40%, #2d5a47, #040d0a, #040d0a);
  1198. // flex: 0 0 100%;
  1199. width: 100%;
  1200. // display: flex;
  1201. // flex-direction: row;
  1202. height: @headerHeight;
  1203. border-bottom: 1px solid #142b29;
  1204. .header-title {
  1205. padding-left: 20px;
  1206. margin: auto;
  1207. color: #fff;
  1208. }
  1209. .header-menu-nxf {
  1210. height: 72px;
  1211. flex-grow: 1;
  1212. background-image: url("./assets/nxfImg/header2.png");
  1213. background-repeat: no-repeat;
  1214. background-size: cover;
  1215. }
  1216. .header-menu-body {
  1217. height: 38px;
  1218. flex-grow: 1;
  1219. background: #08172c;
  1220. }
  1221. }
  1222. .menu-body {
  1223. position: absolute;
  1224. display: flex;
  1225. flex-direction: column;
  1226. align-items: center;
  1227. justify-content: space-between;
  1228. flex: 0 0 @menuWidth;
  1229. width: @menuWidth;
  1230. height: calc(100% - @headerHeight);
  1231. // height: calc(100vh - 59px);
  1232. top: @headerHeight;
  1233. // top: 59px;
  1234. background-color: fade(#192a26, 75%);
  1235. z-index: 2002;
  1236. opacity: 0;
  1237. transition: opacity 0.2s;
  1238. transition-timing-function: ease-in;
  1239. // transform: translate(-@menuWidth);
  1240. &:hover,
  1241. &.hover {
  1242. opacity: 1;
  1243. transition: opacity 0.2s;
  1244. transition-timing-function: ease-out;
  1245. transform: translate(0);
  1246. }
  1247. }
  1248. .elmenuSty {
  1249. position: absolute;
  1250. display: flex;
  1251. // flex-direction: column;
  1252. // align-items: center;
  1253. // justify-content: space-between;
  1254. // flex: 0 0 @menuWidth;
  1255. // width: @menuWidth;
  1256. // height: calc(100% - @headerHeight);
  1257. top: @headerHeight;
  1258. background-color: fade(#192a26, 75%);
  1259. z-index: 2002;
  1260. // opacity: 0;
  1261. transition: opacity 0.2s;
  1262. transition-timing-function: ease-in;
  1263. img {
  1264. width: 25px;
  1265. height: 25px;
  1266. }
  1267. .menu-list {
  1268. width: 100%;
  1269. height: 40px;
  1270. line-height: 40px;
  1271. position: absolute;
  1272. bottom: 50px;
  1273. .menu-item {
  1274. height: 40px;
  1275. line-height: 40px;
  1276. display: flex;
  1277. justify-content: center;
  1278. align-items: center;
  1279. img {
  1280. width: 25px;
  1281. height: 25px;
  1282. }
  1283. }
  1284. }
  1285. .el-menu {
  1286. min-width: 66px;
  1287. border-right: transparent;
  1288. .el-sub-menu {
  1289. margin: 0 5px;
  1290. .el-sub-menu__title {
  1291. // height: 1px !important;
  1292. background: none;
  1293. .elGrounpTitleAll {
  1294. display: flex;
  1295. height: 45px;
  1296. line-height: 45px;
  1297. position: relative;
  1298. top: 5px;
  1299. .svgSty {
  1300. line-height: 45px;
  1301. position: relative;
  1302. }
  1303. .chSpna {
  1304. color: #a5b7df !important;
  1305. }
  1306. }
  1307. .elGrounpTitleAll:hover {
  1308. // .chSpna{
  1309. background: #1c69bb;
  1310. padding: 0 10px;
  1311. color: #a5b7df;
  1312. // }
  1313. }
  1314. .elGrounpTitle {
  1315. .svgSty {
  1316. line-height: 45px;
  1317. position: relative;
  1318. top: -10px;
  1319. left: -5px;
  1320. }
  1321. }
  1322. }
  1323. }
  1324. .is-opened {
  1325. .el-sub-menu__title {
  1326. border-radius: 8px 8px 0 0;
  1327. background: #001d53;
  1328. .elMenuTitleAll {
  1329. display: flex;
  1330. position: relative;
  1331. left: -5px;
  1332. .svgSty {
  1333. line-height: 45px;
  1334. position: relative;
  1335. top: -10px;
  1336. }
  1337. }
  1338. }
  1339. .el-menu {
  1340. border-radius: 0 0 8px 8px;
  1341. // padding: 10px 0 10px 0;
  1342. background: #132444;
  1343. .elsubMenu {
  1344. // width: 130px;
  1345. width: calc(100% - 70px);
  1346. height: 30px;
  1347. // margin: 10px 0;
  1348. position: relative;
  1349. left: 50px;
  1350. // background: #1c69bb;
  1351. .grounpItem {
  1352. height: 30px;
  1353. position: relative;
  1354. top: -24px;
  1355. .grounpItemSty {
  1356. width: 7px;
  1357. height: 7px;
  1358. background: #b1b8cb;
  1359. border-radius: 50%;
  1360. position: relative;
  1361. left: -60px;
  1362. }
  1363. .grounpItemSpan {
  1364. position: relative;
  1365. left: -30px;
  1366. }
  1367. }
  1368. // .is-active {
  1369. // max-width: 160px !important;
  1370. // background: rgba(0, 70, 199, 0.4);
  1371. // border: 1px solid #115fc8;
  1372. // .grounpItemSty {
  1373. // background: #1c99ff;
  1374. // position: relative;
  1375. // left: -61px;
  1376. // }
  1377. // }
  1378. }
  1379. .isSelect {
  1380. background: #1c69bb;
  1381. .grounpItemSpan {
  1382. color: #a5b7df;
  1383. }
  1384. }
  1385. .elsubMenu:hover {
  1386. background: #1c69bb;
  1387. .grounpItemSpan {
  1388. color: #a5b7df;
  1389. }
  1390. }
  1391. }
  1392. }
  1393. .noGrounpItem {
  1394. // padding: 0px 20px;
  1395. background: none;
  1396. position: relative;
  1397. // left: 5px;
  1398. .elMenuTitleAll {
  1399. display: flex;
  1400. height: 45px;
  1401. line-height: 45px;
  1402. .svgSty {
  1403. line-height: 45px;
  1404. position: relative;
  1405. }
  1406. }
  1407. .elMenuTitle {
  1408. height: 45px;
  1409. position: relative;
  1410. top: 5px;
  1411. .svgSty {
  1412. position: relative;
  1413. top: 3px;
  1414. left: 5px;
  1415. }
  1416. .titspan {
  1417. margin-left: 10px;
  1418. color: #a5b7df;
  1419. position: relative;
  1420. top: 4px;
  1421. left: 6px;
  1422. }
  1423. &.is-active {
  1424. background: #001d53;
  1425. border-radius: 8px;
  1426. padding: 5px;
  1427. position: relative;
  1428. top: 5px;
  1429. }
  1430. .titspan:hover {
  1431. padding: 0 10px;
  1432. background: #1c69bb;
  1433. }
  1434. .isSelect {
  1435. background: #1c69bb;
  1436. padding: 0 10px;
  1437. .grounpItemSpan {
  1438. color: #a5b7df;
  1439. }
  1440. }
  1441. }
  1442. }
  1443. .is-active {
  1444. // .elMenuTitle {
  1445. // background: #001d53;
  1446. // border-radius: 8px;
  1447. // padding: 5px;
  1448. // position: relative;
  1449. // top: 5px;
  1450. // .svgSty{
  1451. // line-height: 33px;
  1452. // }
  1453. // .titspan{
  1454. // margin-left: 10px;
  1455. // position: relative;
  1456. // top: -4px;
  1457. // }
  1458. // }
  1459. .elMenuTitleAll {
  1460. display: flex;
  1461. width: 100%;
  1462. }
  1463. }
  1464. }
  1465. }
  1466. .elmenuSty {
  1467. .el-menu {
  1468. .el-sub-menu {
  1469. .el-sub-menu__title {
  1470. color: #a5b7df;
  1471. svg {
  1472. path {
  1473. fill: #a5b7df;
  1474. }
  1475. }
  1476. }
  1477. .el-sub-menu__title:hover,
  1478. .is-active {
  1479. color: #a5b7df;
  1480. .chSpna {
  1481. color: #a5b7df !important;
  1482. }
  1483. svg {
  1484. path {
  1485. fill: #a5b7df;
  1486. }
  1487. }
  1488. }
  1489. }
  1490. .el-menu-item {
  1491. color: #a5b7df;
  1492. svg {
  1493. path {
  1494. fill: #a5b7df;
  1495. }
  1496. }
  1497. }
  1498. .el-menu-item:hover,
  1499. .is-active {
  1500. color: #1c69bb;
  1501. background: transparent !important;
  1502. .titspan {
  1503. color: #a5b7df !important;
  1504. }
  1505. svg {
  1506. path {
  1507. fill: #1c69bb;
  1508. }
  1509. }
  1510. }
  1511. }
  1512. }
  1513. .main-body {
  1514. flex: 0 0 100%;
  1515. max-width: 100%;
  1516. // padding: 1.481vh;
  1517. // transition: flex 0.1s, margin-left 0.1s;
  1518. // transition-timing-function: ease-in-out;
  1519. // &.show-menu {
  1520. // flex: 0 0 calc(100vw - @menuWidth);
  1521. // margin-left: @menuWidth;
  1522. // transition: flex 0.1s, margin-left 0.1s;
  1523. // transition-timing-function: ease-in-out;
  1524. // }
  1525. }
  1526. .el-table__body tr.current-row > td {
  1527. color: #fff;
  1528. background: rgba(66, 66, 66, 0.66) !important;
  1529. }
  1530. .el-transfer-panel {
  1531. width: 450px !important;
  1532. height: 73vh;
  1533. background-color: #111d1c !important;
  1534. border: 1px solid #999999 !important;
  1535. .el-transfer-panel__body {
  1536. height: 100% !important;
  1537. .el-transfer-panel__list {
  1538. height: 100% !important;
  1539. }
  1540. }
  1541. }
  1542. .el-transfer-panel .el-transfer-panel__header {
  1543. background-color: #111d1c !important;
  1544. color: #05bb4c !important;
  1545. .el-checkbox .el-checkbox__label {
  1546. color: #05bb4c !important;
  1547. }
  1548. }
  1549. .el-button--primary.is-disabled,
  1550. .el-button--primary.is-disabled:active,
  1551. .el-button--primary.is-disabled:focus,
  1552. .el-button--primary.is-disabled:hover {
  1553. background-color: #05bb4c;
  1554. border-color: #05bb4c;
  1555. }
  1556. }
  1557. .login {
  1558. width: 100%;
  1559. height: 100%;
  1560. background: url("~@/assets/login-bg.png") no-repeat;
  1561. background-size: cover;
  1562. position: relative;
  1563. }
  1564. .el-badge {
  1565. &.active {
  1566. .el-badge__content--danger {
  1567. opacity: 0 !important;
  1568. }
  1569. }
  1570. }
  1571. .el-badge__content--danger {
  1572. background: #ff4e00 !important;
  1573. border: none !important;
  1574. }
  1575. .el-badge__content.is-fixed {
  1576. top: 7px !important;
  1577. right: 14px !important;
  1578. z-index: 2003 !important;
  1579. }
  1580. .trans {
  1581. animation: circleProgess 3s linear infinite;
  1582. }
  1583. @keyframes circleProgess {
  1584. 0% {
  1585. transform: rotateZ(360deg);
  1586. }
  1587. 25% {
  1588. transform: rotateZ(270deg);
  1589. }
  1590. 50% {
  1591. transform: rotateZ(180deg);
  1592. }
  1593. 75% {
  1594. transform: rotateZ(90deg);
  1595. }
  1596. 100% {
  1597. transform: rotateZ(0deg);
  1598. }
  1599. }
  1600. .el-tree-node__content {
  1601. height: 40px !important;
  1602. }
  1603. .el-tree-node__label {
  1604. font-size: 14px !important;
  1605. }
  1606. .el-pagination.is-background .el-pager li:not(.disabled).active {
  1607. background-color: #05bb4c !important;
  1608. }
  1609. .el-table__body tr.hover-row > td.el-table__cell {
  1610. background-color: rgba(2, 2, 2) !important;
  1611. }
  1612. #appBody.light .el-table th.el-table__cell > .cell {
  1613. height: 8.2vh !important;
  1614. }
  1615. .power-benchmarking-page
  1616. .top
  1617. .top-left
  1618. .table.el-table
  1619. thead
  1620. tr:last-child
  1621. th
  1622. .cell {
  1623. height: 116px !important;
  1624. }
  1625. * {
  1626. -webkit-touch-callout: none; /*系统默认菜单被禁用*/
  1627. -webkit-user-select: none; /*webkit浏览器*/
  1628. -khtml-user-select: none; /*早期浏览器*/
  1629. -moz-user-select: none; /*火狐*/
  1630. -ms-user-select: none; /*IE10*/
  1631. user-select: none;
  1632. }
  1633. input {
  1634. -webkit-user-select: auto; /*webkit浏览器*/
  1635. }
  1636. textarea {
  1637. -webkit-user-select: auto; /*webkit浏览器*/
  1638. }
  1639. .gfSelect .el-input__suffix {
  1640. display: none !important;
  1641. }
  1642. body .gfSelect .el-input__inner {
  1643. background: rgba(83, 98, 104, 0);
  1644. color: #ffffff;
  1645. font-size: 16px;
  1646. }
  1647. .main-body {
  1648. .query {
  1649. display: flex;
  1650. // justify-content: space-between;
  1651. &.left {
  1652. justify-content: flex-start;
  1653. }
  1654. .query-items {
  1655. flex: 0 0 auto;
  1656. display: flex;
  1657. .query-item {
  1658. flex: 0 0 auto;
  1659. display: flex;
  1660. margin: 0 1.4815vh;
  1661. .el-input {
  1662. &.placeholder-left {
  1663. input {
  1664. &::placeholder {
  1665. text-align: left;
  1666. }
  1667. }
  1668. }
  1669. }
  1670. .placeholder-left {
  1671. .el-input {
  1672. input {
  1673. height: 33px !important;
  1674. &::placeholder {
  1675. text-align: left;
  1676. }
  1677. }
  1678. }
  1679. }
  1680. .lable {
  1681. flex: 0 0 auto;
  1682. margin-right: 1.4815vh;
  1683. line-height: 33px;
  1684. color: @gray-l;
  1685. }
  1686. .search-input {
  1687. position: relative;
  1688. // input {
  1689. // box-sizing: border-box;
  1690. // flex: 0 0 200px;
  1691. // border: 0px solid @darkgray;
  1692. // color: @white;
  1693. // outline: unset;
  1694. // border-radius: 0%;
  1695. // padding-right: 40px;
  1696. // background: fade(#536268, 20);
  1697. // height: 33px;
  1698. // line-height: 33px;
  1699. // &::placeholder {
  1700. // font-size: 12px;
  1701. // text-align: right;
  1702. // color: @darkgray;
  1703. // }
  1704. // }
  1705. // .unit {
  1706. // position: absolute;
  1707. // right: 12px;
  1708. // top: 6px;
  1709. // line-height: 33px;
  1710. // margin: auto;
  1711. // }
  1712. }
  1713. }
  1714. }
  1715. .query-actions {
  1716. flex: 0 0 auto;
  1717. margin-left: 50px;
  1718. display: flex;
  1719. justify-content: flex-start;
  1720. align-items: center;
  1721. .btn {
  1722. cursor: pointer;
  1723. }
  1724. }
  1725. }
  1726. input {
  1727. box-sizing: border-box;
  1728. flex: 0 0 200px;
  1729. border: 0px solid @darkgray;
  1730. color: @white;
  1731. outline: unset;
  1732. border-radius: 0%;
  1733. padding-right: 40px;
  1734. background: fade(#536268, 20);
  1735. height: 33px;
  1736. line-height: 33px;
  1737. &::placeholder {
  1738. font-size: 12px;
  1739. text-align: right;
  1740. color: @darkgray;
  1741. }
  1742. }
  1743. input[type="checkbox"] {
  1744. position: relative;
  1745. display: inline-block;
  1746. appearance: none;
  1747. width: 14px;
  1748. height: 14px;
  1749. outline: none;
  1750. border: 1px solid @gray;
  1751. background-color: #000;
  1752. border-radius: 20%;
  1753. margin: 0;
  1754. padding: 0;
  1755. &:checked {
  1756. border-color: @green;
  1757. background: @green;
  1758. }
  1759. &::after {
  1760. display: inline-block;
  1761. content: " ";
  1762. position: absolute;
  1763. left: 30%;
  1764. top: 5%;
  1765. width: 3px;
  1766. height: 7px;
  1767. border-color: #fff;
  1768. border-style: solid;
  1769. border-width: 0px 2px 2px 0px;
  1770. transform: rotate(45deg);
  1771. opacity: 0;
  1772. }
  1773. &:checked::after {
  1774. content: "";
  1775. opacity: 1;
  1776. transition: opacity 0.3s ease-out;
  1777. }
  1778. }
  1779. }
  1780. </style>