power-benchmarking.vue 28 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082
  1. <template>
  2. <div class="power-benchmarking-page">
  3. <div class="static">
  4. <div class="static-main">
  5. <span class="dot top-left"></span>
  6. <span class="dot bottom-left"></span>
  7. <span class="dot top-rignt"></span>
  8. <span class="dot bottom-right"></span>
  9. <div class="icon">
  10. <i class="svg-icon svg-icon-balck">
  11. <svg-icon :svgid="'svg-flash'" />
  12. </i>
  13. </div>
  14. <div class="info">
  15. <div class="title">累计增发电量</div>
  16. <div class="value">666.66</div>
  17. <div class="unit">kwh</div>
  18. </div>
  19. </div>
  20. <div class="static-items" style="flex:0 0 867px;">
  21. <div class="static-items-title">
  22. <i class="svg-icon svg-icon-green">
  23. <svg-icon :svgid="'svg-flash'" />
  24. </i>
  25. 理论电量平衡分析法
  26. </div>
  27. <div class="items">
  28. <div class="item" v-for="index of 6" :key="index">
  29. <div class="title">风能利用率</div>
  30. <div class="value">30%</div>
  31. <div class="up-down">
  32. <div class="up-down-item">
  33. <span class="name">周</span>
  34. <span class="icon">
  35. <i class="svg-icon svg-icon-sm svg-icon-yellow">
  36. <svg-icon :svgid="'svg-arrow-up-1'" />
  37. </i>
  38. </span>
  39. <span class="value">2%</span>
  40. </div>
  41. <div class="up-down-item">
  42. <span class="name">环</span>
  43. <span class="icon">
  44. <i class="svg-icon svg-icon-sm svg-icon-green">
  45. <svg-icon :svgid="'svg-arrow-dpwn-1'" />
  46. </i>
  47. </span>
  48. <span class="value">2%</span>
  49. </div>
  50. </div>
  51. <div class="percent">
  52. <div class="percent-box">
  53. <div class="percent-bar bg-green" style="width:24%;"></div>
  54. <div class="sj" style="left: calc(24% - 3px);"></div>
  55. </div>
  56. <div class="value">24%</div>
  57. </div>
  58. </div>
  59. </div>
  60. </div>
  61. <div class="static-items" style="flex:0 0 430px;">
  62. <div class="static-items-title">
  63. <i class="svg-icon svg-icon-green">
  64. <svg-icon :svgid="'svg-flash'" />
  65. </i>
  66. 理论电量平衡分析法
  67. </div>
  68. <div class="items">
  69. <div class="item" v-for="index of 3" :key="index">
  70. <div class="title">风能利用率</div>
  71. <div class="value">30%</div>
  72. <div class="up-down">
  73. <div class="up-down-item">
  74. <span class="name">周</span>
  75. <span class="icon">
  76. <i class="svg-icon svg-icon-sm svg-icon-yellow">
  77. <svg-icon :svgid="'svg-arrow-up-1'" />
  78. </i>
  79. </span>
  80. <span class="value">2%</span>
  81. </div>
  82. <div class="up-down-item">
  83. <span class="name">环</span>
  84. <span class="icon">
  85. <i class="svg-icon svg-icon-sm svg-icon-green">
  86. <svg-icon :svgid="'svg-arrow-dpwn-1'" />
  87. </i>
  88. </span>
  89. <span class="value">2%</span>
  90. </div>
  91. </div>
  92. <div class="percent">
  93. <div class="percent-box">
  94. <div class="percent-bar bg-green" style="width:24%;"></div>
  95. <div class="sj" style="left: calc(24% - 3px);"></div>
  96. </div>
  97. <div class="value">24%</div>
  98. </div>
  99. </div>
  100. </div>
  101. </div>
  102. <div class="static-items" style="flex:0 0 430px;">
  103. <div class="static-items-title">
  104. <i class="svg-icon svg-icon-green">
  105. <svg-icon :svgid="'svg-flash'" />
  106. </i>
  107. 理论电量平衡分析法
  108. </div>
  109. <div class="items">
  110. <div class="item" v-for="index of 3" :key="index">
  111. <div class="title">风能利用率</div>
  112. <div class="value">30%</div>
  113. <div class="up-down">
  114. <div class="up-down-item">
  115. <span class="name">周</span>
  116. <span class="icon">
  117. <i class="svg-icon svg-icon-sm svg-icon-yellow">
  118. <svg-icon :svgid="'svg-arrow-up-1'" />
  119. </i>
  120. </span>
  121. <span class="value">2%</span>
  122. </div>
  123. <div class="up-down-item">
  124. <span class="name">环</span>
  125. <span class="icon">
  126. <i class="svg-icon svg-icon-sm svg-icon-green">
  127. <svg-icon :svgid="'svg-arrow-dpwn-1'" />
  128. </i>
  129. </span>
  130. <span class="value">2%</span>
  131. </div>
  132. </div>
  133. <div class="percent">
  134. <div class="percent-box">
  135. <div class="percent-bar bg-green" style="width:24%;"></div>
  136. <div class="sj" style="left: calc(24% - 3px);"></div>
  137. </div>
  138. <div class="value">24%</div>
  139. </div>
  140. </div>
  141. </div>
  142. </div>
  143. </div>
  144. <div class="top">
  145. <div class="top-left">
  146. <div class="top-left-header">
  147. <div class="header-left">
  148. <div class="selecttion">
  149. <div class="item" :class="{ active: selecttionIndex == 0 }" @click="selectionClick(0)">日</div>
  150. <div class="item" :class="{ active: selecttionIndex == 1 }" @click="selectionClick(1)">周</div>
  151. <div class="item" :class="{ active: selecttionIndex == 2 }" @click="selectionClick(2)">月</div>
  152. <div class="item" :class="{ active: selecttionIndex == 3 }" @click="selectionClick(3)">季</div>
  153. <div class="item" :class="{ active: selecttionIndex == 4 }" @click="selectionClick(4)">年</div>
  154. </div>
  155. <div class="query">
  156. <div class="query-items">
  157. <div class="query-item">
  158. <div class="lable">风场:</div>
  159. <div class="search-input">
  160. <el-cascader :options="cascader.options" :props="cascader.props" collapse-tags clearable></el-cascader>
  161. </div>
  162. </div>
  163. </div>
  164. <div class="query-items">
  165. <div class="query-item">
  166. <div class="lable">风场:</div>
  167. <div class="search-input">
  168. <el-cascader :options="cascader.options" :props="cascader.props" collapse-tags clearable></el-cascader>
  169. </div>
  170. </div>
  171. </div>
  172. </div>
  173. </div>
  174. <div class="header-right">
  175. <div class="right-btn" :class="{ active: btnIndex == 0 }" @click="rightBtnClick(0)">风电</div>
  176. <div class="right-btn" :class="{ active: btnIndex == 1 }" @click="rightBtnClick(1)">光伏</div>
  177. </div>
  178. </div>
  179. <group-table :customClass="'table'" :data="eltableData" :height="'280px'" :pageSize="10" @headerClick="headerClick"></group-table>
  180. </div>
  181. <div class="top-right">
  182. <div class="rank-title">
  183. <div class="border top-left"></div>
  184. <div class="border top-right"></div>
  185. <div class="border bottom-left"></div>
  186. <div class="border bottom-right"></div>
  187. 排行榜
  188. </div>
  189. <div class="rank-block"></div>
  190. <group-table :customClass="'rank-table'" :data="greenTable" :height="'280px'">
  191. <template v-slot:rank="scope">
  192. <div class="rank-index" :class="'index-' + scope.row.rank">
  193. {{ scope.row.rank }}
  194. </div>
  195. </template>
  196. </group-table>
  197. </div>
  198. </div>
  199. <div class="bottom">
  200. <panel :title="'指标分析'">
  201. <multiple-bar-chart :list="barData" :height="'calc(100vh - 660px)'" :units="['功率数值(kW)']" />
  202. </panel>
  203. </div>
  204. </div>
  205. </template>
  206. <script>
  207. import MultipleBarChart from "../../components/chart/bar/multiple-bar-chart.vue";
  208. import SvgIcon from "../../components/coms/icon/svg-icon.vue";
  209. import Panel from "../../components/coms/panel/panel.vue";
  210. import groupTable from "../../components/coms/table/group-table.vue";
  211. export default {
  212. components: { groupTable, Panel, MultipleBarChart, SvgIcon },
  213. data() {
  214. let that = this;
  215. return {
  216. selecttionIndex: 0,
  217. btnIndex: 0,
  218. eltableData: {
  219. column: [
  220. {
  221. name: "",
  222. child: [
  223. {
  224. name: "区域公司",
  225. field: "name",
  226. width: 55,
  227. },
  228. {
  229. name: "评分",
  230. field: "v1",
  231. width: 55,
  232. },
  233. ],
  234. },
  235. {
  236. name: "基础指标",
  237. child: [
  238. {
  239. name: "装机容量(MW)",
  240. field: "v1",
  241. width: 55,
  242. },
  243. {
  244. name: "在运台数 (台)",
  245. field: "v1",
  246. width: 55,
  247. },
  248. {
  249. name: "理论电量 (万kwh)",
  250. field: "v1",
  251. width: 55,
  252. },
  253. {
  254. name: "发电量 (万kwh)",
  255. field: "v1",
  256. width: 55,
  257. },
  258. {
  259. name: "非计划检修损失电量 (万kwh)",
  260. field: "v1",
  261. width: 55,
  262. },
  263. {
  264. name: "计划检修损失电量 (万kwh)",
  265. field: "v1",
  266. width: 55,
  267. },
  268. {
  269. name: "限电损失电量 (万kwh)",
  270. field: "v1",
  271. width: 55,
  272. },
  273. {
  274. name: "受累损失电量 (万kwh)",
  275. field: "v1",
  276. width: 55,
  277. },
  278. {
  279. name: "性能损失电量 (万kwh)",
  280. field: "v1",
  281. width: 55,
  282. },
  283. ],
  284. },
  285. {
  286. name: "安全指标",
  287. child: [
  288. {
  289. name: "人身设备事故 (次)",
  290. field: "v1",
  291. width: 55,
  292. },
  293. {
  294. name: "设备一类障碍 (次)",
  295. field: "v1",
  296. width: 55,
  297. },
  298. ],
  299. },
  300. {
  301. name: "经济指标",
  302. child: [
  303. {
  304. name: "人身设备事故 (次)",
  305. field: "v1",
  306. width: 55,
  307. },
  308. {
  309. name: "限电损失率 (%)",
  310. field: "v1",
  311. width: 55,
  312. },
  313. {
  314. name: "性能损失率 (%)",
  315. field: "v1",
  316. width: 55,
  317. },
  318. {
  319. name: "综合厂用电率 (%)",
  320. field: "v1",
  321. width: 55,
  322. },
  323. {
  324. name: "设备利用小时 (小时)",
  325. field: "v1",
  326. width: 55,
  327. },
  328. {
  329. name: "光功率 预测 准确率 (%)",
  330. field: "v1",
  331. width: 55,
  332. },
  333. {
  334. name: "AGC 曲线 跟随率 (%)",
  335. field: "v1",
  336. width: 55,
  337. },
  338. ],
  339. },
  340. {
  341. name: "设备指标",
  342. child: [
  343. {
  344. name: "MTBF (小时)",
  345. field: "v1",
  346. width: 55,
  347. },
  348. {
  349. name: "MTTF (小时)",
  350. field: "v1",
  351. width: 55,
  352. },
  353. {
  354. name: "设备 可利 用率 (%)",
  355. field: "v1",
  356. width: 55,
  357. },
  358. {
  359. name: "等效 可用 系数 (%)",
  360. field: "v1",
  361. width: 55,
  362. },
  363. {
  364. name: "非计划 检修 损失率 (%)",
  365. field: "v1",
  366. width: 55,
  367. },
  368. {
  369. name: "计划检 修损 失率 (%)",
  370. field: "v1",
  371. width: 55,
  372. },
  373. ],
  374. },
  375. {
  376. name: "管理效率指标",
  377. child: [
  378. {
  379. name: "MTTR (小时)",
  380. field: "v1",
  381. width: 55,
  382. },
  383. {
  384. name: "隐患 发现 准确率 (%)",
  385. field: "v1",
  386. width: 55,
  387. },
  388. {
  389. name: "消缺 及时率 (%)",
  390. field: "v1",
  391. width: 55,
  392. },
  393. ],
  394. },
  395. {
  396. name: "资源指标",
  397. child: [
  398. {
  399. name: "累计 辐射 总量 (兆焦/ 平米)",
  400. field: "v1",
  401. width: 80,
  402. },
  403. ],
  404. },
  405. ],
  406. data: [
  407. {
  408. name: "宁夏",
  409. v1: 100.0,
  410. v2: 88.88,
  411. v3: 0.01,
  412. },
  413. {
  414. name: "湖北",
  415. v1: 100.0,
  416. v2: 88.88,
  417. v3: 0.01,
  418. },
  419. {
  420. name: "合肥",
  421. v1: 100.0,
  422. v2: 88.88,
  423. v3: 0.01,
  424. },
  425. {
  426. name: "宁波",
  427. v1: 100.0,
  428. v2: 88.88,
  429. v3: 0.01,
  430. },
  431. {
  432. name: "内蒙",
  433. v1: 100.0,
  434. v2: 88.88,
  435. v3: 0.01,
  436. },
  437. {
  438. name: "山东",
  439. v1: 100.0,
  440. v2: 88.88,
  441. v3: 0.01,
  442. },
  443. {
  444. name: "山西",
  445. v1: 100.0,
  446. v2: 88.88,
  447. v3: 0.01,
  448. },
  449. {
  450. name: "云南",
  451. v1: 100.0,
  452. v2: 88.88,
  453. v3: 0.01,
  454. },
  455. {
  456. name: "新疆",
  457. v1: 100.0,
  458. v2: 88.88,
  459. v3: 0.01,
  460. },
  461. {
  462. name: "湖南",
  463. v1: 100.0,
  464. v2: 88.88,
  465. v3: 0.01,
  466. },
  467. ],
  468. total: 12,
  469. },
  470. greenTable: {
  471. column: [
  472. {
  473. name: "排名",
  474. field: "rank",
  475. slot: true,
  476. },
  477. {
  478. name: "名称",
  479. field: "v2",
  480. width: 62,
  481. },
  482. {
  483. name: "指标项",
  484. child: [
  485. {
  486. name: "人身设备事故 (次)",
  487. field: "v1",
  488. width: 62,
  489. },
  490. ],
  491. },
  492. ],
  493. data: [
  494. {
  495. rank: 1,
  496. name: "宁夏",
  497. v1: 100.0,
  498. v2: 88.88,
  499. v3: 0.01,
  500. },
  501. {
  502. rank: 2,
  503. name: "湖北",
  504. v1: 100.0,
  505. v2: 88.88,
  506. v3: 0.01,
  507. },
  508. {
  509. rank: 3,
  510. name: "合肥",
  511. v1: 100.0,
  512. v2: 88.88,
  513. v3: 0.01,
  514. },
  515. {
  516. rank: 4,
  517. name: "宁波",
  518. v1: 100.0,
  519. v2: 88.88,
  520. v3: 0.01,
  521. },
  522. {
  523. rank: 4,
  524. name: "内蒙",
  525. v1: 100.0,
  526. v2: 88.88,
  527. v3: 0.01,
  528. },
  529. {
  530. rank: 4,
  531. name: "山东",
  532. v1: 100.0,
  533. v2: 88.88,
  534. v3: 0.01,
  535. },
  536. {
  537. rank: 4,
  538. name: "山西",
  539. v1: 100.0,
  540. v2: 88.88,
  541. v3: 0.01,
  542. },
  543. {
  544. rank: 4,
  545. name: "云南",
  546. v1: 100.0,
  547. v2: 88.88,
  548. v3: 0.01,
  549. },
  550. {
  551. rank: 4,
  552. name: "新疆",
  553. v1: 100.0,
  554. v2: 88.88,
  555. v3: 0.01,
  556. },
  557. {
  558. rank: 4,
  559. name: "湖南",
  560. v1: 100.0,
  561. v2: 88.88,
  562. v3: 0.01,
  563. },
  564. ],
  565. },
  566. barData: [
  567. {
  568. title: "日发电量",
  569. value: [
  570. {
  571. text: "宁夏",
  572. value: 1000,
  573. },
  574. {
  575. text: "宁夏",
  576. value: 1200,
  577. },
  578. {
  579. text: "宁夏",
  580. value: 1200,
  581. },
  582. {
  583. text: "宁夏",
  584. value: 1200,
  585. },
  586. {
  587. text: "宁夏",
  588. value: 1200,
  589. },
  590. {
  591. text: "宁夏",
  592. value: 1200,
  593. },
  594. {
  595. text: "宁夏",
  596. value: 1200,
  597. },
  598. {
  599. text: "宁夏",
  600. value: 1200,
  601. },
  602. {
  603. text: "宁夏",
  604. value: 1200,
  605. },
  606. {
  607. text: "宁夏",
  608. value: 1200,
  609. },
  610. ],
  611. },
  612. ],
  613. cascader: {
  614. props: { multiple: true },
  615. options: [
  616. {
  617. value: 1,
  618. label: "东南",
  619. children: [
  620. {
  621. value: 2,
  622. label: "上海",
  623. children: [
  624. { value: 3, label: "普陀" },
  625. { value: 4, label: "黄埔" },
  626. { value: 5, label: "徐汇" },
  627. ],
  628. },
  629. {
  630. value: 7,
  631. label: "江苏",
  632. children: [
  633. { value: 8, label: "南京" },
  634. { value: 9, label: "苏州" },
  635. { value: 10, label: "无锡" },
  636. ],
  637. },
  638. {
  639. value: 12,
  640. label: "浙江",
  641. children: [
  642. { value: 13, label: "杭州" },
  643. { value: 14, label: "宁波" },
  644. { value: 15, label: "嘉兴" },
  645. ],
  646. },
  647. ],
  648. },
  649. {
  650. value: 17,
  651. label: "西北",
  652. children: [
  653. {
  654. value: 18,
  655. label: "陕西",
  656. children: [
  657. { value: 19, label: "西安" },
  658. { value: 20, label: "延安" },
  659. ],
  660. },
  661. {
  662. value: 21,
  663. label: "新疆维吾尔族自治区",
  664. children: [
  665. { value: 22, label: "乌鲁木齐" },
  666. { value: 23, label: "克拉玛依" },
  667. ],
  668. },
  669. ],
  670. },
  671. ],
  672. },
  673. };
  674. },
  675. methods: {
  676. selectionClick(index) {
  677. this.selecttionIndex = index;
  678. },
  679. headerClick(param) {
  680. console.log(param);
  681. },
  682. rightBtnClick(index) {
  683. this.btnIndex = index;
  684. },
  685. },
  686. };
  687. </script>
  688. <style lang="less">
  689. .power-benchmarking-page {
  690. .static {
  691. display: flex;
  692. height: 162px;
  693. margin-bottom: 8px;
  694. .static-main {
  695. position: relative;
  696. flex: 0 0 150px;
  697. height: 162px;
  698. border: 1px solid fade(@green, 60);
  699. padding: 8px;
  700. background: fade(@gray, 20);
  701. margin-right: 8px;
  702. .dot {
  703. position: absolute;
  704. width: 3px;
  705. height: 3px;
  706. background: @green;
  707. &.top-left {
  708. top: 5px;
  709. left: 5px;
  710. }
  711. &.bottom-left {
  712. bottom: 5px;
  713. left: 5px;
  714. }
  715. &.top-rignt {
  716. top: 5px;
  717. right: 5px;
  718. }
  719. &.bottom-right {
  720. bottom: 5px;
  721. right: 5px;
  722. }
  723. }
  724. .icon {
  725. height: 40px;
  726. margin: 8px 0;
  727. display: flex;
  728. justify-content: center;
  729. i {
  730. width: 36px;
  731. height: 36px;
  732. padding: 2px;
  733. background: @green;
  734. border-radius: 100%;
  735. border: 4px solid @gray;
  736. svg {
  737. width: 24px;
  738. height: 24px;
  739. use {
  740. fill: #000;
  741. }
  742. }
  743. }
  744. }
  745. .info {
  746. text-align: center;
  747. .title {
  748. font-size: 18px;
  749. margin-bottom: 12px;
  750. }
  751. .value {
  752. font-size: 18px;
  753. color: @green;
  754. margin-bottom: 4px;
  755. }
  756. .unit {
  757. padding: 0 8px;
  758. text-align: right;
  759. }
  760. }
  761. }
  762. .static-items {
  763. border: 1px solid fade(@gray, 60);
  764. margin-right: 8px;
  765. .static-items-title {
  766. text-align: center;
  767. line-height: 27px;
  768. height: 27px;
  769. display: flex;
  770. justify-content: center;
  771. align-items: center;
  772. color: @green;
  773. }
  774. .items {
  775. display: flex;
  776. .item {
  777. flex: 0 0 138px;
  778. height: 133px;
  779. margin-left: 8px;
  780. background: fade(@gray, 20);
  781. text-align: center;
  782. padding: 8px;
  783. & > .title {
  784. font-size: 14px;
  785. color: @gray-l;
  786. }
  787. & > .value {
  788. font-size: 18px;
  789. font-family: @font-family-num;
  790. margin: 8px 0;
  791. }
  792. & > .up-down {
  793. display: flex;
  794. justify-content: space-around;
  795. margin: 8px 0;
  796. .up-down-item {
  797. flex: 1 0 auto;
  798. display: flex;
  799. align-items: center;
  800. justify-content: space-around;
  801. }
  802. }
  803. & > .percent {
  804. display: flex;
  805. .percent-box {
  806. position: relative;
  807. height: 10px;
  808. border: 1px solid @gray;
  809. margin-right: 8px;
  810. width: calc(100% - 38px);
  811. padding: 2px;
  812. margin-top: 2px;
  813. .percent-bar {
  814. height: 4px;
  815. }
  816. .sj {
  817. position: absolute;
  818. border-style: solid;
  819. border-width: 5px 3px 5px 3px;
  820. border-color: transparent transparent @green transparent;
  821. width: 0px;
  822. height: 0px;
  823. top: 8px;
  824. }
  825. }
  826. }
  827. &:first-child {
  828. margin-left: 0px;
  829. }
  830. }
  831. }
  832. &:last-child {
  833. margin-right: 0px;
  834. }
  835. }
  836. }
  837. .top {
  838. display: flex;
  839. margin-bottom: 16px;
  840. .top-left {
  841. flex: 1 0 auto;
  842. .top-left-header {
  843. display: flex;
  844. justify-content: space-between;
  845. margin-bottom: 16px;
  846. .header-left {
  847. display: flex;
  848. .selecttion {
  849. flex: 1 0 250px;
  850. width: 250px;
  851. display: flex;
  852. .item {
  853. flex: 0 0 44px;
  854. height: 28px;
  855. line-height: 28px;
  856. text-align: center;
  857. border: 1px solid @gray;
  858. margin-right: 8px;
  859. font-size: 14px;
  860. color: @gray;
  861. cursor: pointer;
  862. &.active,
  863. &:hover {
  864. background: fade(@purple, 60);
  865. color: @white;
  866. }
  867. }
  868. }
  869. }
  870. .header-right {
  871. display: flex;
  872. margin-right: 12px;
  873. & > div {
  874. width: 84px;
  875. height: 28px;
  876. line-height: 28px;
  877. border: 1px solid @gray;
  878. text-align: center;
  879. color: @gray;
  880. font-size: 14px;
  881. cursor: pointer;
  882. &:first-child {
  883. border-top-left-radius: 16px;
  884. border-bottom-left-radius: 16px;
  885. }
  886. &:last-child {
  887. border-top-right-radius: 16px;
  888. border-bottom-right-radius: 16px;
  889. }
  890. &.active,
  891. &:hover {
  892. background: fade(@green, 20);
  893. border-color: @green;
  894. color: @green;
  895. }
  896. }
  897. }
  898. }
  899. .table {
  900. &.el-table thead tr:first-child th {
  901. background: fade(@gray, 40);
  902. border-bottom: 1px solid #0b1010;
  903. border-right: 1px solid #0b1010;
  904. }
  905. &.el-table thead tr:last-child th {
  906. background: fade(@gray, 20);
  907. .cell {
  908. height: 116px;
  909. padding: 12px 6px;
  910. border-right: 1px solid #0b1010;
  911. }
  912. }
  913. }
  914. }
  915. .top-right {
  916. flex: 0 0 200px;
  917. margin-left: 8px;
  918. .rank-title {
  919. position: relative;
  920. height: 28px;
  921. line-height: 28px;
  922. border: 1px solid fade(@green, 40);
  923. text-align: center;
  924. color: @green;
  925. font-size: 14px;
  926. .border {
  927. position: absolute;
  928. width: 8px;
  929. height: 8px;
  930. border: 2px solid fade(@green, 60);
  931. &.top-left {
  932. left: -1px;
  933. top: -1px;
  934. border-right: 0px;
  935. border-bottom: 0px;
  936. }
  937. &.top-right {
  938. top: -1px;
  939. right: -1px;
  940. border-left: 0px;
  941. border-bottom: 0px;
  942. }
  943. &.bottom-left {
  944. bottom: -1px;
  945. left: -1px;
  946. border-right: 0px;
  947. border-top: 0px;
  948. }
  949. &.bottom-right {
  950. bottom: -1px;
  951. right: -1px;
  952. border-left: 0px;
  953. border-top: 0px;
  954. }
  955. }
  956. &::before {
  957. content: " ";
  958. position: absolute;
  959. width: 100%;
  960. height: 100%;
  961. left: 0;
  962. background: linear-gradient(135deg, rgba(5, 187, 76, 0.4), transparent, transparent, transparent, rgba(5, 187, 76, 0.4));
  963. }
  964. }
  965. .rank-block {
  966. height: 8px;
  967. width: 100%;
  968. border: 1px solid fade(@green, 40);
  969. border-left: 0px;
  970. border-right: 0px;
  971. background: fade(@green, 20);
  972. margin: 4px 0;
  973. opacity: 0.5;
  974. }
  975. .rank-table {
  976. border: 1px solid fade(@green, 40);
  977. &.el-table.el-table--striped .el-table__body tr.el-table__row--striped td {
  978. background: fade(@green, 10);
  979. }
  980. &.el-table.el-table--striped .el-table__body tr.el-table__row--striped:hover td {
  981. background: fade(@green, 10) !important;
  982. }
  983. .rank-index {
  984. height: 20px;
  985. width: 20px;
  986. line-height: 20px;
  987. text-align: center;
  988. margin: auto;
  989. &.index-1 {
  990. background: fade(@purple, 60);
  991. color: #fff;
  992. border: 1px solid @purple;
  993. }
  994. &.index-2 {
  995. background: fade(#2d6e76, 60);
  996. color: #fff;
  997. border: 1px solid #2d6e76;
  998. }
  999. &.index-3 {
  1000. background: fade(#366626, 60);
  1001. color: #fff;
  1002. border: 1px solid #366626;
  1003. }
  1004. }
  1005. &.el-table thead tr th {
  1006. background: fade(@green, 10);
  1007. border-bottom: 1px solid #0b1010;
  1008. border-right: 1px solid #0b1010;
  1009. height: 116px;
  1010. }
  1011. &.el-table thead tr:first-child th:last-child {
  1012. background: fade(@green, 20);
  1013. border-bottom: 1px solid #0b1010;
  1014. border-right: 1px solid #0b1010;
  1015. height: 30px;
  1016. }
  1017. }
  1018. }
  1019. }
  1020. .bottom {
  1021. height: 400px;
  1022. }
  1023. }
  1024. </style>