Menu.vue 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958
  1. <template>
  2. <div class="menu">
  3. <ul class="menu-list">
  4. <li class="menu-item" v-for="(menu, index) of currentMenu" :key="menu" @click="click(index)" :class="{ active: activeIndex == index }" @mouseenter="subMenuShow(menu.children, index)">
  5. <router-link :to="menu.path">
  6. <el-tooltip class="item" effect="dark" :content="menu.text" placement="bottom" :show-after="500">
  7. <div class="menu-icon svg-icon" :class="activeIndex == index ? 'svg-icon-green' : 'svg-icon-gray'">
  8. <SvgIcon :svgid="menu.icon"></SvgIcon>
  9. </div>
  10. </el-tooltip>
  11. </router-link>
  12. <!-- <div v-if="menu.children" class="sub-menu-item">
  13. <div class="menu-icon svg-icon" :class="activeIndex == index ? 'svg-icon-green' : 'svg-icon-gray'">
  14. <SvgIcon :svgid="menu.icon"></SvgIcon>
  15. </div>
  16. </div> -->
  17. </li>
  18. </ul>
  19. </div>
  20. <div class="sub-menu" v-show="isShowSubMenu" @mouseleave="subMenuHide">
  21. <ul class="menu-list">
  22. <li class="menu-item" v-for="(menu, index) of subMenu" @click="subclick(index)" :key="menu" :class="{ active: subIndex == index }">
  23. <router-link :to="menu.path">
  24. <div class="menu-icon svg-icon">
  25. <SvgIcon :svgid="menu.icon"></SvgIcon>
  26. </div>
  27. <div class="sub-menu-text" :class="subIndex == index ? 'green' : 'gray'">{{ menu.text }}</div>
  28. </router-link>
  29. </li>
  30. </ul>
  31. </div>
  32. </template>
  33. <script>
  34. import SvgIcon from "@com/coms/icon/svg-icon.vue";
  35. export default {
  36. components: {
  37. SvgIcon,
  38. },
  39. props: {},
  40. data () {
  41. return {
  42. currRoot: "monitor",
  43. menuData: [
  44. {
  45. id: "monitor",
  46. text: "状态监视",
  47. data: [
  48. {
  49. text: "驾驶舱",
  50. icon: "svg-lead-cockpit",
  51. path: "/monitor/home",
  52. },
  53. {
  54. text: "基础矩阵",
  55. icon: "svg-matrix",
  56. path: "/monitor/lightmatrix1",
  57. },
  58. {
  59. text: "明细矩阵",
  60. icon: "svg-mx-matrix",
  61. path: "/monitor/lightmatrix3",
  62. },
  63. {
  64. text: "欠发矩阵",
  65. icon: "svg-qf-matrix",
  66. path: "/monitor/lightmatrix2",
  67. },
  68. {
  69. text: "光伏矩阵",
  70. icon: "svg-gf-matrix",
  71. path: "/monitor/lightmatrix",
  72. },
  73. {
  74. text: "状态监视",
  75. icon: "svg-state-watch",
  76. path: "/monitor/status",
  77. },
  78. {
  79. text: "Agc",
  80. icon: "svg-agc",
  81. path: "/monitor/agc",
  82. },
  83. {
  84. text: "风场",
  85. icon: "svg-wind-site",
  86. path: "/monitor/windsite/home/MHS_FDC",
  87. },
  88. ],
  89. },
  90. {
  91. id: "performanceAnalysis",
  92. text: "增发分析",
  93. data: [
  94. {
  95. text: "能效分析",
  96. icon: "svg-wind-site",
  97. path: "/powerCurve",
  98. children: [
  99. {
  100. text: "功率曲线拟合",
  101. icon: "svg-wind-site",
  102. path: "/powerCurve",
  103. },
  104. {
  105. text: "偏航对风分析",
  106. icon: "svg-wind-site",
  107. path: "/nxfx2",
  108. },
  109. {
  110. text: "切入切出分析",
  111. icon: "svg-wind-site",
  112. path: "/cutAnalyse",
  113. },
  114. {
  115. text: "曲线偏差率分析",
  116. icon: "svg-wind-site",
  117. path: "/qxpclfx",
  118. },
  119. {
  120. text: "单机性能分析",
  121. icon: "svg-wind-site",
  122. path: "/performanceAnalysis",
  123. },
  124. {
  125. text: "单机月度分析",
  126. icon: "svg-wind-site",
  127. path: "/singleAnalysis",
  128. },
  129. {
  130. text: "单机饱和度",
  131. icon: "svg-wind-site",
  132. path: "/wtSaturability",
  133. },
  134. ],
  135. },
  136. {
  137. text: "可靠性分析",
  138. icon: "svg-wind-site",
  139. path: "/new/alarmcenter1",
  140. children: [
  141. {
  142. text: "预警分析",
  143. icon: "svg-wind-site",
  144. path: "/new/alarmcenter1",
  145. },
  146. {
  147. text: "故障分析",
  148. icon: "svg-wind-site",
  149. path: "/new/alarmcenter2",
  150. },
  151. {
  152. text: "预警评判分析",
  153. icon: "svg-wind-site",
  154. path: "/warnStatistics",
  155. },
  156. {
  157. text: "故障评判分析",
  158. icon: "svg-wind-site",
  159. path: "/malfunctionStatistics",
  160. }
  161. ],
  162. },
  163. {
  164. text: "风光资源分析",
  165. icon: "svg-wind-site",
  166. path: "/windAnalysis",
  167. children: [
  168. {
  169. text: "风资源散点",
  170. icon: "svg-wind-site",
  171. path: "/windAnalysis",
  172. }, {
  173. text: "风资源风向",
  174. icon: "svg-wind-site",
  175. path: "/windAnalysis/fx",
  176. },
  177. ],
  178. }
  179. // {
  180. // text: "单机分析",
  181. // icon: "svg-wind-site",
  182. // path: "/fgzyfx",
  183. // children: [
  184. // {
  185. // text: "单机分析详细",
  186. // icon: "svg-wind-site",
  187. // path: "/new/dj1",
  188. // },
  189. // {
  190. // text: "电量预测",
  191. // icon: "svg-wind-site",
  192. // path: "/new/pf1",
  193. // },
  194. // {
  195. // text: "气象预测",
  196. // icon: "svg-wind-site",
  197. // path: "/new/fs",
  198. // }
  199. // ]
  200. // }
  201. ],
  202. },
  203. ,
  204. {
  205. id: "ztfx",
  206. text: "降损分析",
  207. data: [
  208. {
  209. text: "专题分析",
  210. icon: "svg-wind-site",
  211. path: "/new/ztfx",
  212. children: [
  213. {
  214. text: "综合分析",
  215. icon: "svg-wind-site",
  216. path: "/new/ztfx",
  217. },
  218. {
  219. text: "风能利用率",
  220. icon: "svg-wind-site",
  221. path: "/new/fnlyl",
  222. },
  223. {
  224. text: "维护损失率",
  225. icon: "svg-wind-site",
  226. path: "/new/whssl",
  227. },
  228. {
  229. text: "故障损失率",
  230. icon: "svg-wind-site",
  231. path: "/new/gzssl",
  232. },
  233. {
  234. text: "限电损失率",
  235. icon: "svg-wind-site",
  236. path: "/new/xdssl",
  237. },
  238. {
  239. text: "性能损失率",
  240. icon: "svg-wind-site",
  241. path: "/new/xnssl",
  242. },
  243. {
  244. text: "受累损失率",
  245. icon: "svg-wind-site",
  246. path: "/new/slssl",
  247. },
  248. {
  249. text: "MTBF分析",
  250. icon: "svg-wind-site",
  251. path: "/new/mtbf",
  252. },
  253. {
  254. text: "MTTR分析",
  255. icon: "svg-wind-site",
  256. path: "/new/mttr",
  257. },
  258. {
  259. text: "复位及时率",
  260. icon: "svg-wind-site",
  261. path: "/new/zfwjsl",
  262. },
  263. {
  264. text: "状态转换率",
  265. icon: "svg-wind-site",
  266. path: "/new/zztzhl",
  267. },
  268. {
  269. text: "消缺及时率",
  270. icon: "svg-wind-site",
  271. path: "/new/zxqjsl",
  272. },
  273. {
  274. text: "发电量分析",
  275. icon: "svg-wind-site",
  276. path: "/new/zfdl",
  277. },
  278. {
  279. text: "综合场用电量",
  280. icon: "svg-wind-site",
  281. path: "/new/zzhcydl",
  282. },
  283. ]
  284. }, {
  285. text: "对标管理",
  286. icon: "svg-matrix",
  287. path: "/decision1",
  288. children: [
  289. {
  290. text: "风机绩效榜",
  291. icon: "svg-wind-site",
  292. path: "/decision1",
  293. },
  294. {
  295. text: "五项损失率",
  296. icon: "svg-wind-site",
  297. path: "/decision2",
  298. },
  299. {
  300. text: "场内对标",
  301. icon: "svg-wind-site",
  302. path: "/decision2Cndb",
  303. },
  304. {
  305. text: "场际对标",
  306. icon: "svg-wind-site",
  307. path: "/decision2Cjdb",
  308. },
  309. {
  310. text: "项目对标",
  311. icon: "svg-wind-site",
  312. path: "/decision2Xmdb",
  313. },
  314. {
  315. text: "线路对标",
  316. icon: "svg-wind-site",
  317. path: "/decision2Xldb",
  318. },
  319. {
  320. text: "性能对标",
  321. icon: "svg-wind-site",
  322. path: "/decision3",
  323. },
  324. {
  325. text: "值际对标",
  326. icon: "svg-wind-site",
  327. path: "/decision4",
  328. },
  329. {
  330. text: "单机横向对比",
  331. icon: "svg-matrix",
  332. path: "/decision3db",
  333. },{
  334. text: "操作指令统计",
  335. icon: "svg-matrix",
  336. path: "/decision4czzl",
  337. },
  338. ],
  339. }, // 三率管理
  340. {
  341. text: "三率管理",
  342. icon: "svg-matrix",
  343. path: "/fwjsl",
  344. children: [
  345. {
  346. text: "复位及时率",
  347. icon: "svg-wind-site",
  348. path: "/fwjsl",
  349. },
  350. {
  351. text: "状态转换率",
  352. icon: "svg-wind-site",
  353. path: "/ztzhl",
  354. },
  355. {
  356. text: "消缺及时率",
  357. icon: "svg-wind-site",
  358. path: "/xqjsl",
  359. },
  360. ],
  361. },
  362. // {
  363. // text: "单机分析",
  364. // icon: "svg-wind-site",
  365. // path: "/fgzyfx",
  366. // children: [
  367. // {
  368. // text: "单机分析详细",
  369. // icon: "svg-wind-site",
  370. // path: "/new/dj1",
  371. // },
  372. // {
  373. // text: "电量预测",
  374. // icon: "svg-wind-site",
  375. // path: "/new/pf1",
  376. // },
  377. // {
  378. // text: "气象预测",
  379. // icon: "svg-wind-site",
  380. // path: "/new/fs",
  381. // }
  382. // ]
  383. // }
  384. ],
  385. },
  386. {
  387. id: "realSearch",
  388. text: "数据管理",
  389. data: [
  390. {
  391. text: "原始数据查询",
  392. icon: "svg-wind-site",
  393. path: "/realSearch",
  394. children: [
  395. {
  396. text: "测点数据查询",
  397. icon: "svg-wind-site",
  398. path: "/realSearch",
  399. },
  400. {
  401. text: "测点历史数据查询",
  402. icon: "svg-wind-site",
  403. path: "/historySearch",
  404. },
  405. ],
  406. },
  407. {
  408. text: "预警记录",
  409. icon: "svg-wind-site",
  410. path: "/new/alarmcenter",
  411. children: [
  412. {
  413. text: "预警管理",
  414. icon: "svg-wind-site",
  415. path: "/new/alarmcenter",
  416. },
  417. {
  418. text: "停机事件管理",
  419. icon: "svg-wind-site",
  420. path: "/new/tjsj",
  421. },
  422. {
  423. text: "限电管理",
  424. icon: "svg-wind-site",
  425. path: "/new/xdgl",
  426. },
  427. {
  428. text: "升压站报警",
  429. icon: "svg-wind-site",
  430. path: "/alarmCenter/boosterAlarm",
  431. },
  432. {
  433. text: "SCADA报警",
  434. icon: "svg-wind-site",
  435. path: "/alarmCenter/scadaAlarm",
  436. },
  437. {
  438. text: "自定义报警",
  439. icon: "svg-wind-site",
  440. path: "/alarmCenter/customAlarm",
  441. },
  442. {
  443. text: "自定义报警统计",
  444. icon: "svg-wind-site",
  445. path: "/alarmCenter/customStatistics",
  446. },
  447. ],
  448. },
  449. {
  450. text: "专家知识",
  451. icon: "svg-wind-site",
  452. path: "/knowledge",
  453. children: [
  454. {
  455. text: "故障知识列表",
  456. icon: "svg-matrix",
  457. path: "/knowledge",
  458. },
  459. {
  460. text: "安全措施知识",
  461. icon: "svg-matrix",
  462. path: "/knowledge2",
  463. },
  464. {
  465. text: "排查检修方案",
  466. icon: "svg-matrix",
  467. path: "/knowledge6",
  468. },
  469. {
  470. text: "预警知识",
  471. icon: "svg-matrix",
  472. path: "/knowledge7",
  473. },
  474. {
  475. text: "特征参数",
  476. icon: "svg-matrix",
  477. path: "/knowledge5",
  478. },
  479. {
  480. text: "风险辨识知识",
  481. icon: "svg-matrix",
  482. path: "/knowledge3",
  483. },
  484. {
  485. text: "作业指导知识",
  486. icon: "svg-matrix",
  487. path: "/knowledge4",
  488. },
  489. ],
  490. },
  491. ],
  492. },
  493. {
  494. id: "health",
  495. text: "健康管理",
  496. data: [
  497. {
  498. text: "等级评估",
  499. icon: "svg-wind-site",
  500. path: "/djpg",
  501. },{
  502. text: "健康管理",
  503. icon: "svg-wind-site",
  504. path: "/health",
  505. children: [
  506. {
  507. text: "健康推荐",
  508. icon: "svg-wind-site",
  509. path: "/health",
  510. },
  511. {
  512. text: "健康首页",
  513. icon: "svg-wind-site",
  514. path: "/health/health2",
  515. },
  516. {
  517. text: "健康总览",
  518. icon: "svg-wind-site",
  519. path: "/health/health6",
  520. },
  521. {
  522. text: "健康矩阵",
  523. icon: "svg-wind-site",
  524. path: "/health/health5",
  525. },
  526. // {
  527. // text: "健康列表",
  528. // icon: "svg-wind-site",
  529. // path: "/health/health6",
  530. // },
  531. {
  532. text: "健康列表",
  533. icon: "svg-wind-site",
  534. path: "/health/health8",
  535. },
  536. ],
  537. },{
  538. text: "全生命周期",
  539. icon: "svg-wind-site",
  540. path: "/allLifeManage",
  541. },
  542. ],
  543. },
  544. {
  545. id: "personnel",
  546. text: "安措管控",
  547. data: [
  548. // ,
  549. // {
  550. // text: "五项损失率",
  551. // icon: "svg-matrix",
  552. // path: "/decision2",
  553. // },
  554. // {
  555. // text: "场内对标",
  556. // icon: "svg-matrix",
  557. // path: "/decision2Cndb",
  558. // },
  559. // {
  560. // text: "场际对标",
  561. // icon: "svg-matrix",
  562. // path: "/decision2Cjdb",
  563. // },
  564. // {
  565. // text: "项目对标",
  566. // icon: "svg-matrix",
  567. // path: "/decision2Xmdb",
  568. // },
  569. // {
  570. // text: "线路对标",
  571. // icon: "svg-matrix",
  572. // path: "/decision2Xldb",
  573. // },
  574. // {
  575. // text: "性能对标",
  576. // icon: "svg-matrix",
  577. // path: "/decision3",
  578. // },
  579. // {
  580. // text: "值际对标",
  581. // icon: "svg-matrix",
  582. // path: "/decision4",
  583. // }
  584. {
  585. text: "安全管控",
  586. icon: "svg-matrix",
  587. path: "/new/personnel",
  588. children: [
  589. {
  590. text: "人员矩阵",
  591. icon: "svg-wind-site",
  592. path: "/new/personnel",
  593. },
  594. {
  595. text: "全局监视",
  596. icon: "svg-wind-site",
  597. path: "/new/personnel",
  598. },
  599. ],
  600. },
  601. ],
  602. },
  603. // {
  604. // id: "knowledge",
  605. // text: "知识管理",
  606. // data: [
  607. // {
  608. // text: "故障知识列表",
  609. // icon: "svg-matrix",
  610. // path: "/knowledge",
  611. // },
  612. // {
  613. // text: "安全措施知识",
  614. // icon: "svg-matrix",
  615. // path: "/knowledge2",
  616. // },
  617. // {
  618. // text: "排查检修方案",
  619. // icon: "svg-matrix",
  620. // path: "/knowledge6",
  621. // },
  622. // {
  623. // text: "预警知识",
  624. // icon: "svg-matrix",
  625. // path: "/knowledge7",
  626. // },
  627. // {
  628. // text: "特征参数",
  629. // icon: "svg-matrix",
  630. // path: "/knowledge5",
  631. // },
  632. // {
  633. // text: "风险辨识知识",
  634. // icon: "svg-matrix",
  635. // path: "/knowledge3",
  636. // },
  637. // {
  638. // text: "作业指导知识",
  639. // icon: "svg-matrix",
  640. // path: "/knowledge4",
  641. // },
  642. // ],
  643. // },
  644. {
  645. id: "bdzcx",
  646. text: "智能报表",
  647. data: [
  648. // 统计分析
  649. {
  650. text: "统计分析",
  651. icon: "svg-matrix",
  652. path: "/tjfx",
  653. children: [
  654. {
  655. text: "统计分析",
  656. icon: "svg-matrix",
  657. path: "/tjfx",
  658. },
  659. {
  660. text: "表底值查询",
  661. icon: "svg-matrix",
  662. path: "/bdzcx",
  663. },
  664. ],
  665. },
  666. // 报表管理
  667. {
  668. text: "报表管理",
  669. icon: "svg-matrix",
  670. path: "/bdzcx",
  671. children: [
  672. {
  673. text: "OA日报",
  674. icon: "svg-matrix",
  675. path: "/oafd",
  676. },
  677. {
  678. text: "OA日报(光伏)",
  679. icon: "svg-matrix",
  680. path: "/oagf",
  681. },
  682. {
  683. text: "新能源日报",
  684. icon: "svg-matrix",
  685. path: "/xnyrb",
  686. },
  687. {
  688. text: "国电电力MISS日报(风电)",
  689. icon: "svg-matrix",
  690. path: "/missfdrb",
  691. },
  692. {
  693. text: "国电电力MISS日报(光伏)",
  694. icon: "svg-matrix",
  695. path: "/missgfrb",
  696. },
  697. {
  698. text: "新能源风电生产月报",
  699. icon: "svg-matrix",
  700. path: "/xnyfdscyb",
  701. },
  702. {
  703. text: "麻黄山生产月报",
  704. icon: "svg-matrix",
  705. path: "/mhsscyb",
  706. },
  707. {
  708. text: "牛首山生产月报",
  709. icon: "svg-matrix",
  710. path: "/nssscyb",
  711. },
  712. {
  713. text: "青山生产月报",
  714. icon: "svg-matrix",
  715. path: "/qsscyb",
  716. },
  717. {
  718. text: "石板泉生产月报",
  719. icon: "svg-matrix",
  720. path: "/sbqscyb",
  721. },
  722. {
  723. text: "香山生产月报",
  724. icon: "svg-matrix",
  725. path: "/xsscyb",
  726. },
  727. {
  728. text: "新能源光伏生产月报",
  729. icon: "svg-matrix",
  730. path: "/xnygfscyb",
  731. },
  732. {
  733. text: "大武口生产月报",
  734. icon: "svg-matrix",
  735. path: "/dwkscyb",
  736. },
  737. {
  738. text: "平罗生产月报",
  739. icon: "svg-matrix",
  740. path: "/plscyb",
  741. },
  742. {
  743. text: "宣和生产月报",
  744. icon: "svg-matrix",
  745. path: "/xhscyb",
  746. },
  747. ],
  748. },
  749. // 自定制报表管理
  750. {
  751. text: "自定制报表管理",
  752. icon: "svg-matrix",
  753. path: "/fdczzdy",
  754. children: [
  755. {
  756. text: "风电场站自定义",
  757. icon: "svg-matrix",
  758. path: "/fdczzdy",
  759. },
  760. {
  761. text: "风电项目自定义",
  762. icon: "svg-matrix",
  763. path: "/fdxmzdy",
  764. },
  765. {
  766. text: "光伏场站自定义",
  767. icon: "svg-matrix",
  768. path: "/gfczzdy",
  769. },
  770. {
  771. text: "光伏项目自定义",
  772. icon: "svg-matrix",
  773. path: "/gfxmzdy",
  774. },
  775. ],
  776. },
  777. ],
  778. },
  779. ],
  780. activeIndex: 0,
  781. isShowSubMenu: false,
  782. parentIndex: null,
  783. subMenu: [],
  784. subIndex: null,
  785. };
  786. },
  787. methods: {
  788. click (index) {
  789. this.activeIndex = index;
  790. this.subIndex = null;
  791. },
  792. subMenuShow (children, index) {
  793. if (children) {
  794. this.isShowSubMenu = true;
  795. this.parentIndex = index;
  796. } else {
  797. this.isShowSubMenu = false;
  798. this.parentIndex = null;
  799. }
  800. this.subMenu = children;
  801. },
  802. subMenuHide () {
  803. this.isShowSubMenu = false;
  804. this.parentIndex = null;
  805. // this.subMenu = [];
  806. },
  807. subclick (index) {
  808. this.activeIndex = this.parentIndex;
  809. this.subIndex = index;
  810. },
  811. },
  812. computed: {
  813. currentMenu () {
  814. let data = this.menuData.filter((t) => {
  815. return t.id == this.currRoot;
  816. })[0].data;
  817. return data;
  818. },
  819. },
  820. watch: {
  821. // 监听路由
  822. $route: {
  823. handler: function (val, oldVal) {
  824. this.menuData.some((element, index) => {
  825. if (val.path.includes(element.id)) {
  826. this.currRoot = element.id;
  827. this.$nextTick(() => {
  828. this.currentMenu.some((element, index) => {
  829. if (val.path == element.path) {
  830. this.activeIndex = index;
  831. }
  832. });
  833. });
  834. return true;
  835. }
  836. });
  837. },
  838. //深度观察监听
  839. deep: true,
  840. },
  841. },
  842. };
  843. </script>
  844. <style lang="less">
  845. .menu {
  846. padding-top: 1.481vh;
  847. .menu-list {
  848. margin: 0;
  849. padding: 0;
  850. list-style: none;
  851. .menu-item {
  852. padding: 1.481vh 0;
  853. text-align: center;
  854. .menu-icon {
  855. display: flex;
  856. justify-content: center;
  857. }
  858. &.active i {
  859. color: #05bb4c;
  860. transition: color 1s;
  861. }
  862. }
  863. }
  864. i {
  865. font-size: 2.222vh;
  866. color: rgba(255, 255, 255, 50%);
  867. }
  868. }
  869. .sub-menu {
  870. position: absolute;
  871. top: 0;
  872. left: 5.3704vh;
  873. width: 158px;
  874. height: 100%;
  875. padding-top: 1.481vh;
  876. background: fade(#192a26, 75);
  877. border-right: 1px solid fade(@green, 50);
  878. box-shadow: inset 11px 0px 20px 0px fade(#021412, 60);
  879. .menu-list {
  880. margin: 0;
  881. padding: 0;
  882. list-style: none;
  883. .menu-item {
  884. display: flex;
  885. text-align: center;
  886. line-height: 1.5;
  887. padding: 8px 0;
  888. background: #121d1c;
  889. a {
  890. display: flex;
  891. width: 100%;
  892. height: 100%;
  893. padding: 0 1.4815vh;
  894. font-size: @fontsize-s;
  895. text-decoration: unset;
  896. .menu-icon {
  897. display: flex;
  898. align-items: center;
  899. svg {
  900. width: 14px;
  901. height: 14px;
  902. use {
  903. fill: fade(@green, 75);
  904. }
  905. }
  906. }
  907. }
  908. &.active {
  909. background: #323e70;
  910. .menu-icon {
  911. display: flex;
  912. svg use {
  913. fill: fade(@white, 75);
  914. }
  915. }
  916. }
  917. .sub-menu-text {
  918. margin-left: 1.1111vh;
  919. color: @gray-l;
  920. }
  921. & + .menu-item {
  922. border-top: 1px solid fade(@darkgray, 40);
  923. }
  924. }
  925. }
  926. i {
  927. font-size: 2.222vh;
  928. color: rgba(255, 255, 255, 50%);
  929. }
  930. }
  931. </style>