gatewayPage.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655
  1. <template>
  2. <div class="gatewayPage">
  3. <el-row class="gateway_top">
  4. <el-col :span="6" v-for="it in titleMsgArr" :key="it.isClass" @click="changeTit(it)">
  5. <div class="comClass" :class="!it.showClick ? it.isClass : it.isClassC">
  6. <div class="huodian_tit">
  7. <img :src="it.img" v-if="!it.showClick">
  8. <img :src="it.clickImg" v-else>
  9. <span :style="!it.showClick?'color: #333;': 'color: #fff;'">{{it.isName}}</span>
  10. </div>
  11. <div class="huodian_main">
  12. <div v-for="item in huodianArr" :key="item" style="margin-right: 15px">
  13. <p :style="!it.showClick ? {'color': it.color} : 'color: #fff;'">{{item.Num}}</p>
  14. <p :style="!it.showClick?'color: #999;': 'color: #fff;'">{{item.Name}}</p>
  15. </div>
  16. </div>
  17. </div>
  18. </el-col>
  19. </el-row>
  20. <el-row class="gateway_bot">
  21. <el-col :span="6">
  22. <div class="gateway_bot_left">
  23. <div class="bot_leftTit">
  24. <p>年度A级企业排行</p>
  25. <el-select v-model="value" class="m-2" placeholder="请选择分类" size="large">
  26. <el-option
  27. v-for="item in options"
  28. :key="item.value"
  29. :label="item.label"
  30. :value="item.value"
  31. />
  32. </el-select>
  33. </div>
  34. <div class="bot_leftMain">
  35. <div style="display: flex;margin-bottom:25px" v-for="(item, index) in cupMsgArr" :key="index">
  36. <div class="mainImg">
  37. <img :src="item.img" alt="" v-if="item.img">
  38. <span v-else>{{index+1}}</span>
  39. </div>
  40. <div class="mainMsg">
  41. <div class="msgProgress">
  42. <el-progress :percentage="item.progress" :stroke-width="10" />
  43. </div>
  44. <div class="msgProgressT">
  45. <span>{{item.name}}</span>
  46. <span>{{item.level}}级</span>
  47. <span>{{item.points}}分</span>
  48. </div>
  49. </div>
  50. </div>
  51. </div>
  52. </div>
  53. </el-col>
  54. <el-col :span="12">
  55. <div class="gateway_bot_center">
  56. <div class="bot_Tit">
  57. <p>考评排行榜</p>
  58. <div style="display:flex">
  59. <el-select v-model="value" class="m-2" placeholder="选择季度" size="large">
  60. <el-option
  61. v-for="item in options"
  62. :key="item.value"
  63. :label="item.label"
  64. :value="item.value"
  65. />
  66. </el-select>
  67. <el-select v-model="value" class="m-2" placeholder="选择月份" size="large">
  68. <el-option
  69. v-for="item in options"
  70. :key="item.value"
  71. :label="item.label"
  72. :value="item.value"
  73. />
  74. </el-select>
  75. </div>
  76. </div>
  77. <el-table :data="tableData" stripe style="width: 100%">
  78. <el-table-column type="index" label="排名" width="50" align="center" />
  79. <el-table-column prop="name" label="单位名称" />
  80. <el-table-column prop="points" label="得分" width="50" />
  81. <el-table-column prop="address" label="加分事项" width="80" align="center">
  82. <template #default="scope">
  83. <img :src="cenImg" v-if="scope.row.jiaA === 0">
  84. <img :src="topImg" v-else-if="scope.row.jiaA === 1">
  85. <img :src="botImg" v-else>
  86. </template>
  87. </el-table-column>
  88. <el-table-column prop="address" label="扣分事项" width="80" align="center">
  89. <template #default="scope">
  90. <img :src="cenImg" v-if="scope.row.jiaB === 0">
  91. <img :src="topImg" v-else-if="scope.row.jiaB === 1">
  92. <img :src="botImg" v-else>
  93. </template>
  94. </el-table-column>
  95. <el-table-column prop="address" label="管理加分项" width="90" align="center">
  96. <template #default="scope">
  97. <img :src="cenImg" v-if="scope.row.guanA === 0">
  98. <img :src="topImg" v-else-if="scope.row.guanA === 1">
  99. <img :src="botImg" v-else>
  100. </template>
  101. </el-table-column>
  102. <el-table-column prop="address" label="管理扣分项" width="90" align="center">
  103. <template #default="scope">
  104. <img :src="cenImg" v-if="scope.row.guanB === 0">
  105. <img :src="topImg" v-else-if="scope.row.guanB === 1">
  106. <img :src="botImg" v-else>
  107. </template>
  108. </el-table-column>
  109. <el-table-column prop="address" label="高于基准分" width="90" align="center">
  110. <template #default="scope">
  111. <img :src="cenImg" v-if="scope.row.gaoA === 0">
  112. <img :src="topImg" v-else-if="scope.row.gaoA === 1">
  113. <img :src="botImg" v-else>
  114. </template>
  115. </el-table-column>
  116. <el-table-column prop="address" label="低于基准分" width="90" align="center">
  117. <template #default="scope">
  118. <img :src="cenImg" v-if="scope.row.gaoB === 0">
  119. <img :src="topImg" v-else-if="scope.row.gaoB === 1">
  120. <img :src="botImg" v-else>
  121. </template>
  122. </el-table-column>
  123. </el-table>
  124. </div>
  125. </el-col>
  126. <el-col :span="6">
  127. <div class="gateway_bot_right">
  128. <div class="bot_rightTit">
  129. <p>通告栏</p>
  130. </div>
  131. <div class="bot_rightMain">
  132. <div class="bot_rightMain_msg" v-for="it in 10" :key="it">
  133. <div class="rightDiv"></div>
  134. <div class="rightTitMsg">
  135. <p>关于2022年度各单位年度考评得分</p>
  136. <div style="margin-top: 5px">
  137. <span style="margin-right: 10px">2023-01-15</span>
  138. <span>组织人事部</span>
  139. </div>
  140. </div>
  141. </div>
  142. </div>
  143. </div>
  144. </el-col>
  145. </el-row>
  146. </div>
  147. </template>
  148. <script>
  149. import huodian from '../assets/getwayImg/huodianIcon.png'
  150. import shuidian from '../assets/getwayImg/shuidianIcon.png'
  151. import xinnengyuan from '../assets/getwayImg/xinnengyuanIcon.png'
  152. import meidian from '../assets/getwayImg/meidianIcon.png'
  153. import huodianC from '../assets/getwayImg/huodianIconC.png'
  154. import shuidianC from '../assets/getwayImg/shuidianIconC.png'
  155. import xinnengyuanC from '../assets/getwayImg/xinnengyuanIconC.png'
  156. import meidianC from '../assets/getwayImg/meidianIconC.png'
  157. import cup1 from '../assets/getwayImg/cup1.png'
  158. import cup2 from '../assets/getwayImg/cup2.png'
  159. import cup3 from '../assets/getwayImg/cup3.png'
  160. import topImg from '../assets/getwayImg/top.png'
  161. import botImg from '../assets/getwayImg/bot.png'
  162. import cenImg from '../assets/getwayImg/cen.png'
  163. export default {
  164. data() {
  165. return {
  166. huodianArr: [],
  167. titleMsgArr: [],
  168. cupMsgArr: [],
  169. tableData: [],
  170. topImg: topImg,
  171. botImg: botImg,
  172. cenImg: cenImg,
  173. }
  174. },
  175. created() {
  176. this.titleMsgArr = [
  177. {
  178. isClass: 'huodian',
  179. isClassC: 'huodianC',
  180. isName: '火电',
  181. img: huodian,
  182. clickImg: huodianC,
  183. color: '#F65177',
  184. showClick: false
  185. },
  186. {
  187. isClass: 'shuidian',
  188. isClassC: 'shuidianC',
  189. isName: '水电',
  190. img: shuidian,
  191. clickImg: shuidianC,
  192. color: '#3B7AD1',
  193. showClick: false
  194. },
  195. {
  196. isClass: 'xinnengyuan',
  197. isClassC: 'xinnengyuanC',
  198. isName: '新能源',
  199. img: xinnengyuan,
  200. clickImg: xinnengyuanC,
  201. color: '#50C14E',
  202. showClick: false
  203. },
  204. {
  205. isClass: 'meidian',
  206. isClassC: 'meidianC',
  207. isName: '煤电一体化',
  208. img: meidian,
  209. clickImg: meidianC,
  210. color: '#F5A623',
  211. showClick: false
  212. },
  213. ]
  214. this.huodianArr = [
  215. {
  216. Num: 32,
  217. Name: 'A级单位'
  218. },
  219. {
  220. Num: 20,
  221. Name: 'B级单位'
  222. },
  223. {
  224. Num: 5,
  225. Name: 'C级单位'
  226. },
  227. {
  228. Num: 16,
  229. Name: 'D级单位'
  230. }
  231. ]
  232. this.cupMsgArr = [
  233. {
  234. progress: '100',
  235. level: 'A',
  236. points: '134',
  237. name: '大港电厂(广安津能)'
  238. },
  239. {
  240. progress: '100',
  241. level: 'A',
  242. points: '134',
  243. name: '怀安热电'
  244. },
  245. {
  246. progress: '90',
  247. level: 'A',
  248. points: '124',
  249. name: '滨海电力'
  250. },
  251. {
  252. progress: '88',
  253. level: 'A',
  254. points: '120',
  255. name: '秦皇岛公司'
  256. },
  257. {
  258. progress: '80',
  259. level: 'A',
  260. points: '111',
  261. name: '胜利电厂'
  262. },
  263. {
  264. progress: '76',
  265. level: 'A',
  266. points: '110',
  267. name: '宣威分公司'
  268. },
  269. {
  270. progress: '70',
  271. level: 'A',
  272. points: '106',
  273. name: '大同公司(大二厂)'
  274. },
  275. {
  276. progress: '65',
  277. level: 'A',
  278. points: '102',
  279. name: '廊坊热电'
  280. },
  281. {
  282. progress: '60',
  283. level: 'A',
  284. points: '96',
  285. name: '滨海电力(天津洁能)'
  286. },
  287. {
  288. progress: '55',
  289. level: 'A',
  290. points: '92',
  291. name: '胜利电厂'
  292. },
  293. ]
  294. this.tableData = [
  295. {
  296. name: '中国国电电力上海庙公司',
  297. points: '134',
  298. jiaA: 1,
  299. jiaB: 2,
  300. guanA: 1,
  301. guanB: 0,
  302. gaoA: 1,
  303. gaoB: 0
  304. },
  305. {
  306. name: '中国国电电力上海庙公司',
  307. points: '134',
  308. jiaA: 1,
  309. jiaB: 2,
  310. guanA: 1,
  311. guanB: 0,
  312. gaoA: 1,
  313. gaoB: 0
  314. },
  315. {
  316. name: '中国国电电力上海庙公司',
  317. points: '134',
  318. jiaA: 1,
  319. jiaB: 2,
  320. guanA: 1,
  321. guanB: 0,
  322. gaoA: 1,
  323. gaoB: 0
  324. },
  325. {
  326. name: '中国国电电力上海庙公司',
  327. points: '134',
  328. jiaA: 1,
  329. jiaB: 2,
  330. guanA: 1,
  331. guanB: 0,
  332. gaoA: 1,
  333. gaoB: 0
  334. },
  335. {
  336. name: '中国国电电力上海庙公司',
  337. points: '134',
  338. jiaA: 1,
  339. jiaB: 2,
  340. guanA: 1,
  341. guanB: 0,
  342. gaoA: 1,
  343. gaoB: 0
  344. },
  345. {
  346. name: '中国国电电力上海庙公司',
  347. points: '134',
  348. jiaA: 1,
  349. jiaB: 2,
  350. guanA: 1,
  351. guanB: 0,
  352. gaoA: 1,
  353. gaoB: 0
  354. },
  355. {
  356. name: '中国国电电力上海庙公司',
  357. points: '134',
  358. jiaA: 1,
  359. jiaB: 2,
  360. guanA: 1,
  361. guanB: 0,
  362. gaoA: 1,
  363. gaoB: 0
  364. },
  365. {
  366. name: '中国国电电力上海庙公司',
  367. points: '134',
  368. jiaA: 1,
  369. jiaB: 2,
  370. guanA: 1,
  371. guanB: 0,
  372. gaoA: 1,
  373. gaoB: 0
  374. },
  375. {
  376. name: '中国国电电力上海庙公司',
  377. points: '134',
  378. jiaA: 1,
  379. jiaB: 2,
  380. guanA: 1,
  381. guanB: 0,
  382. gaoA: 1,
  383. gaoB: 0
  384. },
  385. {
  386. name: '中国国电电力上海庙公司',
  387. points: '134',
  388. jiaA: 1,
  389. jiaB: 2,
  390. guanA: 1,
  391. guanB: 0,
  392. gaoA: 1,
  393. gaoB: 0
  394. },
  395. ]
  396. this.cupMsgArr.forEach((item, index) =>{
  397. if (index === 0) {
  398. item.img = cup1
  399. } else if (index === 1) {
  400. item.img = cup2
  401. } else if (index === 2) {
  402. item.img = cup3
  403. }
  404. })
  405. },
  406. mounted() {
  407. },
  408. methods: {
  409. changeTit(it) {
  410. this.titleMsgArr.forEach(item =>{
  411. item.showClick = false
  412. if (item.isName === it.isName) {
  413. item.showClick = true
  414. }
  415. })
  416. }
  417. }
  418. }
  419. </script>
  420. <style lang="less">
  421. .gatewayPage{
  422. height: 93vh;
  423. width: 87vw;
  424. background: #EDEFF5;
  425. .gateway_top{
  426. padding: 24px 0 16px 26px;
  427. .comClass{
  428. width: 380px;
  429. height: 120px;
  430. .huodian_tit{
  431. img {
  432. margin: 13px 7px 5px 22px;
  433. }
  434. span{
  435. position: relative;
  436. top: -8px;
  437. font-size: 16px;
  438. font-family: Microsoft YaHei;
  439. font-weight: bold;
  440. }
  441. }
  442. .huodian_main{
  443. display: flex;
  444. padding-left: 20px;
  445. p:nth-child(1){
  446. font-size: 30px;
  447. font-family: PangMenZhengDao-3;
  448. font-weight: 600;
  449. }
  450. p:nth-child(2){
  451. font-size: 14px;
  452. font-family: Microsoft YaHei;
  453. font-weight: 400;
  454. }
  455. }
  456. }
  457. .huodian{
  458. background-image: url('../assets/getwayImg/huodian.png');
  459. }
  460. .huodianC{
  461. background-image: url('../assets/getwayImg/huodianC.png');
  462. }
  463. .shuidian{
  464. background-image: url('../assets/getwayImg/shuidian.png');
  465. }
  466. .shuidianC{
  467. background-image: url('../assets/getwayImg/shuidianC.png');
  468. }
  469. .xinnengyuan{
  470. background-image: url('../assets/getwayImg/xinnengyuan.png');
  471. }
  472. .xinnengyuanC{
  473. background-image: url('../assets/getwayImg/xinnengyuanC.png');
  474. }
  475. .meidian{
  476. background-image: url('../assets/getwayImg/meidian.png');
  477. }
  478. .meidianC{
  479. background-image: url('../assets/getwayImg/meidianC.png');
  480. }
  481. }
  482. .gateway_bot{
  483. padding: 15px 0 16px 26px;
  484. .gateway_bot_left{
  485. background: #fff;
  486. margin-right: 30px;
  487. border-radius: 10px;
  488. padding-left: 25px;
  489. padding-bottom: 10px;
  490. border: 1px solid #E1E3EA;
  491. .bot_leftTit{
  492. padding: 21px 0 10px 0;
  493. display: flex;
  494. justify-content: space-between;
  495. p{
  496. font-size: 18px;
  497. font-family: Microsoft YaHei;
  498. font-weight: bold;
  499. color: #3B7AD1;
  500. }
  501. .el-select{
  502. width: 130px;
  503. margin-right: 30px;
  504. }
  505. }
  506. .bot_leftMain{
  507. height: 62vh !important;
  508. overflow: auto;
  509. padding-top: 20px;
  510. .mainImg{
  511. position: relative;
  512. top: -3px;
  513. span{
  514. text-align: center;
  515. line-height: 32px;
  516. font-size: 16px;
  517. color: #333333;
  518. font-weight: 400;
  519. font-family: Microsoft YaHei;
  520. display: inline-block;
  521. width: 32px;
  522. height: 32px;
  523. background: #EDEFF5;
  524. border-radius: 50%;
  525. }
  526. }
  527. .mainMsg{
  528. margin-left: 10px;
  529. width: 100%;
  530. .msgProgress{
  531. .el-progress{
  532. width: 90%;
  533. .el-progress__text{
  534. display: none;
  535. }
  536. }
  537. }
  538. .msgProgressT{
  539. margin-top: 5px;
  540. span{
  541. font-size: 14px;
  542. font-family: Microsoft YaHei;
  543. }
  544. span:nth-child(1){
  545. display: inline-block;
  546. width: 65%;
  547. font-weight: 400;
  548. color: #999999;
  549. }
  550. span:nth-child(2){
  551. font-weight: 600;
  552. margin-right: 15px;
  553. color: #333;
  554. }
  555. span:nth-child(3){
  556. font-weight: 600;
  557. color: #333;
  558. }
  559. }
  560. }
  561. }
  562. }
  563. .gateway_bot_center{
  564. background: #fff;
  565. margin-right: 30px;
  566. border-radius: 10px;
  567. padding: 0 25px;
  568. padding-bottom: 10px;
  569. border: 1px solid #E1E3EA;
  570. .bot_Tit{
  571. padding: 21px 0 10px 0;
  572. display: flex;
  573. justify-content: space-between;
  574. p{
  575. font-size: 18px;
  576. font-family: Microsoft YaHei;
  577. font-weight: bold;
  578. color: #3B7AD1;
  579. }
  580. .el-select{
  581. width: 130px;
  582. margin-right: 10px;
  583. }
  584. }
  585. .el-table{
  586. .el-table__body-wrapper{
  587. height: 59vh !important;
  588. }
  589. }
  590. }
  591. .gateway_bot_right{
  592. background: #fff;
  593. margin-right: 30px;
  594. border-radius: 10px;
  595. padding-bottom: 10px;
  596. border: 1px solid #D6DBEA;
  597. .bot_rightTit{
  598. padding: 21px 25px 10px 25px;
  599. background: #E3EFFF;
  600. border-radius: 10px 10px 0px 0px;
  601. p{
  602. font-size: 18px;
  603. font-family: Microsoft YaHei;
  604. font-weight: bold;
  605. color: #3B7AD1;
  606. }
  607. }
  608. .bot_rightMain{
  609. height: 65vh !important;
  610. overflow-y: auto;
  611. .bot_rightMain_msg{
  612. display: flex;
  613. padding: 25px 0 25px 27px;
  614. border-bottom: 1px solid #D6DBEA;
  615. .rightDiv{
  616. width: 4px;
  617. height: 40px;
  618. background: #4883D4;
  619. border-radius: 2px;
  620. position: relative;
  621. top: 2px;
  622. }
  623. .rightTitMsg{
  624. margin-left: 15px;
  625. p{
  626. width: 300px;
  627. overflow: hidden;
  628. text-overflow: ellipsis;
  629. white-space: nowrap;
  630. font-size: 16px;
  631. font-family: Microsoft YaHei;
  632. font-weight: bold;
  633. color: #333333;
  634. }
  635. span{
  636. font-size: 14px;
  637. font-family: Microsoft YaHei;
  638. font-weight: 400;
  639. color: #8991B0;
  640. }
  641. }
  642. }
  643. }
  644. }
  645. }
  646. }
  647. </style>