gatewaynNewPage.vue 52 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258
  1. <template>
  2. <div class="gatewayNewPage">
  3. <el-row>
  4. <el-col :span="18" class="quarter">
  5. <div class="searchFn">
  6. <el-date-picker v-model="changeYear" type="year" value-format="YYYY" placeholder="选择年份"
  7. @change="changeYearFn" :style="getPickerSty()" />
  8. <div class="quarterChoose">
  9. <el-icon :size="20" color="#3B7AD1" @click="arrowLeft">
  10. <ArrowLeft />
  11. </el-icon>
  12. <span class="choose">{{seasonStr}}</span>
  13. <el-icon :size="20" color="#3B7AD1" @click="arrowRight">
  14. <ArrowRight />
  15. </el-icon>
  16. </div>
  17. </div>
  18. <div class="tableHeader">
  19. <div class="headerOne"></div>
  20. <div class="headerTwo">
  21. <div class="headerComTit">
  22. <span class="headerTwoTit">评级统计</span>
  23. </div>
  24. </div>
  25. <div class="headerThree">
  26. <div class="headerComTit">
  27. <span class="headerThreeTit">年度榜</span>
  28. </div>
  29. <div class="headerNameTit">
  30. <div class="headerNameTit_left">
  31. <span>单位名称</span>
  32. </div>
  33. <div class="headerNameTit_right">
  34. <span>级别</span>
  35. <span style="margin-left: 20px">得分</span>
  36. </div>
  37. </div>
  38. </div>
  39. <div class="headerFour">
  40. <div class="headerComTit">
  41. <span class="headerFourTit">考评排行榜</span>
  42. </div>
  43. <div class="headerNameForeTit">
  44. <div class="headerNameForeTit_left">
  45. <span>单位名称</span>
  46. </div>
  47. <div class="headerNameForeTit_right">
  48. <span>得分</span>
  49. <span>加分事项</span>
  50. <span>扣分事项</span>
  51. <span>管理加分</span>
  52. <span>管理扣分</span>
  53. <span>高于基准</span>
  54. <span>低于基准</span>
  55. </div>
  56. </div>
  57. </div>
  58. </div>
  59. <!-- v-for="it in 4" :key="it" -->
  60. <div class="tableMain" v-for="(it, index) in cupDataYearArr.section" :key="index">
  61. <div class="mainOne">
  62. <span :style="getMainOneSty()">{{it.name}}</span>
  63. </div>
  64. <div class="mainTwo">
  65. <!-- <div class="echartsNum" :style="it.echartsData.allNum < 10 ? 'left:70px': ''">
  66. {{it.echartsData.allNum}}</div> -->
  67. <div :id="'pieChart'+index" style="height: 100px;width: 100%"></div>
  68. <el-row class="mainTwoMsg" :style="getPos()">
  69. <el-col :span="12">
  70. <span class="mainTwoComColor" style="background: #F65177;"></span>
  71. <span class="mainTwoComTit">A级</span>
  72. </el-col>
  73. <el-col :span="12">
  74. <span class="mainTwoComColor" style="background: #50C14E;"></span>
  75. <span class="mainTwoComTit">B级</span>
  76. </el-col>
  77. <el-col :span="12">
  78. <span class="mainTwoComColor" style="background: #5093E1;"></span>
  79. <span class="mainTwoComTit">C级</span>
  80. </el-col>
  81. <el-col :span="12">
  82. <span class="mainTwoComColor" style="background: #9DA5BE;"></span>
  83. <span class="mainTwoComTit">D级</span>
  84. </el-col>
  85. </el-row>
  86. </div>
  87. <div class="mainThree">
  88. <div class="mainMore" @click="yearSeeMore(it.nameEn, 'year')"></div>
  89. <div style="display: flex" v-for="(item, index) in it.tableDatas" :key="index">
  90. <div class="mainThreeMsg">
  91. <img :src="item.img" alt="">
  92. <div class="msgProgress">
  93. <span :style="winPix === 1.25?'font-size: 12px;width: 65%':''">{{item.company}}</span>
  94. <span>{{item.grade}}</span>
  95. <span :style="winPix === 1.25?'width: 25%':''">{{item.score}}</span>
  96. </div>
  97. </div>
  98. </div>
  99. </div>
  100. <div class="mainFour">
  101. <div class="mainMore" @click="yearSeeMore(it.nameEn, 'season')"></div>
  102. <div style="display: flex" v-for="(item, index) in it.section" :key="index">
  103. <div class="mainFourMsg">
  104. <span class="mainFourcompany" :style="getFooter12Sty()">{{item.company}}</span>
  105. <div class="mainFourImg">
  106. <span class="mainFourImgSpan">{{item.score}}</span>
  107. <el-popover placement="right-start" :title="item.company +' '+ item.score"
  108. :width="200" trigger="hover" :content="item.matter_heigh_note">
  109. <template #reference>
  110. <img :src="item.matter_heigh === 0 ? cenImg : item.matter_heigh === 1 ? topImg : botImg"
  111. alt="">
  112. </template>
  113. </el-popover>
  114. <el-popover placement="right-start" :title="item.company +' '+ item.score"
  115. :width="200" trigger="hover" :content="item.matter_low_note">
  116. <template #reference>
  117. <img :src="item.matter_low === 0 ? cenImg : item.matter_low === 1 ? topImg : botImg"
  118. alt="">
  119. </template>
  120. </el-popover>
  121. <el-popover placement="right-start" :title="item.company +' '+ item.score"
  122. :width="200" trigger="hover" :content="item.manage_heigh_note">
  123. <template #reference>
  124. <img :src="item.manage_heigh === 0 ? cenImg : item.manage_heigh === 1 ? topImg : botImg"
  125. alt="">
  126. </template>
  127. </el-popover>
  128. <el-popover placement="right-start" :title="item.company +' '+ item.score"
  129. :width="200" trigger="hover" :content="item.manage_low_note">
  130. <template #reference>
  131. <img :src="item.manage_low === 0 ? cenImg : item.manage_low === 1 ? topImg : botImg"
  132. alt="">
  133. </template>
  134. </el-popover>
  135. <el-popover placement="right-start" :title="item.company +' '+ item.score"
  136. :width="200" trigger="hover" :content="item.standard_heigh_note">
  137. <template #reference>
  138. <img :src="item.standard_heigh === 0 ? cenImg : item.standard_heigh === 1 ? topImg : botImg"
  139. alt="">
  140. </template>
  141. </el-popover>
  142. <el-popover placement="right-start" :title="item.company +' '+ item.score"
  143. :width="200" trigger="hover" :content="item.standard_low_note">
  144. <template #reference>
  145. <img :src="item.standard_low === 0 ? cenImg : item.standard_low === 1 ? topImg : botImg"
  146. alt="">
  147. </template>
  148. </el-popover>
  149. </div>
  150. </div>
  151. </div>
  152. </div>
  153. </div>
  154. <div class="tableFooter">
  155. <div class="footerOne">
  156. <span :style="getFooterOneSty()">煤电一体化</span>
  157. </div>
  158. <div class="footerTwo">
  159. <div style="display: flex" v-for="(item, index) in cupDataYearArr.integration" :key="index">
  160. <div class="footerTwoMsg">
  161. <img :src="item.img" alt="">
  162. <div class="footerProgress">
  163. <span class="footerOneSpan" :style="getFooter12Sty()">{{item.company}}</span>
  164. <el-progress :percentage="Math.floor((item.score/item.base_score)*100)"
  165. :stroke-width="5" />
  166. <span class="footerTwoSpan">{{item.grade}}</span>
  167. <span class="footerThreeSpan">{{item.score}}</span>
  168. </div>
  169. </div>
  170. </div>
  171. </div>
  172. <div class="footerThree">
  173. <div class="mainMore" @click="yearSeeMore(it.nameEn, 'season')"></div>
  174. <div style="display: flex; justify-content: space-between;width: 100%"
  175. v-for="(item, index) in cupDataSeasonArr.integration" :key="index">
  176. <div class="footerThreeMsg" v-for="it in matterMsg" :key="it">
  177. <div class="footerImg">
  178. <span :style="getfooterSpan()">{{it}}</span>
  179. <el-popover placement="right-start" :title="item.company +' '+ item.score"
  180. :width="200" trigger="hover" :content="item.matter_heigh_note">
  181. <template #reference>
  182. <img :src="item.matter_heigh === 0 ? cenImg : item.matter_heigh === 1 ? topImg : botImg"
  183. v-if="it === '加分事项'">
  184. </template>
  185. </el-popover>
  186. <el-popover placement="right-start" :title="item.company +' '+ item.score"
  187. :width="200" trigger="hover" :content="item.matter_low_note">
  188. <template #reference>
  189. <img :src="item.matter_low === 0 ? cenImg : item.matter_low === 1 ? topImg : botImg"
  190. v-if="it === '扣分事项'">
  191. </template>
  192. </el-popover>
  193. <el-popover placement="right-start" :title="item.company +' '+ item.score"
  194. :width="200" trigger="hover" :content="item.manage_heigh_note">
  195. <template #reference>
  196. <img :src="item.manage_heigh === 0 ? cenImg : item.manage_heigh === 1 ? topImg : botImg"
  197. v-if="it === '管理加分'">
  198. </template>
  199. </el-popover>
  200. <el-popover placement="right-start" :title="item.company +' '+ item.score"
  201. :width="200" trigger="hover" :content="item.manage_low_note">
  202. <template #reference>
  203. <img :src="item.manage_low === 0 ? cenImg : item.manage_low === 1 ? topImg : botImg"
  204. v-if="it === '管理扣分'">
  205. </template>
  206. </el-popover>
  207. <el-popover placement="right-start" :title="item.company +' '+ item.score"
  208. :width="200" trigger="hover" :content="item.standard_heigh_note">
  209. <template #reference>
  210. <img :src="item.standard_heigh === 0 ? cenImg : item.standard_heigh === 1 ? topImg : botImg"
  211. v-if="it === '高于基准'">
  212. </template>
  213. </el-popover>
  214. <el-popover placement="right-start" :title="item.company +' '+ item.score"
  215. :width="200" trigger="hover" :content="item.standard_low_note">
  216. <template #reference>
  217. <img :src="item.standard_low === 0 ? cenImg : item.standard_low === 1 ? topImg : botImg"
  218. v-if="it === '低于基准'">
  219. </template>
  220. </el-popover>
  221. </div>
  222. </div>
  223. </div>
  224. </div>
  225. </div>
  226. </el-col>
  227. <el-col :span="5" class="report">
  228. <div class="gateway_report">
  229. <div class="reportTit">
  230. <p :style="winPix === 1.25? 'font-size: 16px;':''">通告栏</p>
  231. <el-icon :size="20" color="#3B7AD1" :style="winPix === 1.25? 'left: 80px;':''"
  232. @click="watchAllNotification">
  233. <Plus />
  234. </el-icon>
  235. </div>
  236. <div class="reportMain">
  237. <div class="reportMain_msg" v-for="it in noticeData" :key="it.id">
  238. <div class="rightDiv"></div>
  239. <div class="rightTitMsg">
  240. <p @click="watchDetail(it)" style="cursor:pointer">{{it.noticeTitle}}</p>
  241. <div style="margin-top: 5px; display: flex">
  242. <span
  243. style="margin-right: 10px">{{it.createTime.substring(0, it.createTime.indexOf(' '))}}</span>
  244. <span class="rightTwoSpanMsg"
  245. :style="winPix === 1.25? 'width: 50%;':''">{{it.releaseDeptName}}</span>
  246. </div>
  247. </div>
  248. </div>
  249. </div>
  250. </div>
  251. </el-col>
  252. </el-row>
  253. <year-from ref="yearFrom"></year-from>
  254. <season-from ref="seasonFrom"></season-from>
  255. <notification-detail ref="notificationDetail"></notification-detail>
  256. <notification-all-data ref="notificationAllData"></notification-all-data>
  257. </div>
  258. </template>
  259. <script>
  260. import cup1 from '../assets/getwayImg/cup1.png'
  261. import cup2 from '../assets/getwayImg/cup2.png'
  262. import cup3 from '../assets/getwayImg/cup3.png'
  263. import topImg from '../assets/getwayImg/topNew.png'
  264. import botImg from '../assets/getwayImg/botNew.png'
  265. import cenImg from '../assets/getwayImg/cenNew.png'
  266. import {
  267. apiGetevaluationportallist,apiGetevaluationportalhomeSeason,
  268. apiGetevaluationCircularDisplaylist
  269. } from '../api/api'
  270. import yearFrom from './gateWay/gatewayNewYearFrom.vue'
  271. import seasonFrom from './gateWay/gatewayNewSeasonFrom.vue'
  272. import notificationDetail from './gateWay/gateWayNotificationDetail.vue'
  273. import NotificationAllData from './gateWay/gateWayNotificationAllData.vue'
  274. export default {
  275. components: {
  276. yearFrom,
  277. seasonFrom,
  278. notificationDetail,
  279. NotificationAllData
  280. },
  281. data() {
  282. return {
  283. noticeData: [],
  284. cupDataYearArr: {
  285. section: [],
  286. integration: []
  287. },
  288. cupDataSeasonArr: {
  289. section: [],
  290. integration: []
  291. },
  292. cupFootMsgArr: [],
  293. matterMsg: ['加分事项', '扣分事项', '管理加分', '管理扣分', '高于基准', '低于基准'],
  294. topImg: topImg,
  295. botImg: botImg,
  296. cenImg: cenImg,
  297. changeYear: '',
  298. seasonStr: '',
  299. seasonArr: ['第一季度', '第二季度', '第三季度'],
  300. winPix: window.devicePixelRatio
  301. }
  302. },
  303. created() {
  304. this.cupFootMsgArr = [{
  305. level: 'A',
  306. points: '134',
  307. img: cup1,
  308. name: '大港电厂(广安津能)'
  309. },
  310. {
  311. level: 'A',
  312. points: '134',
  313. img: cup2,
  314. name: '怀安热电'
  315. }
  316. ]
  317. },
  318. mounted() {
  319. this.getYearSeasonData()
  320. this.getDeptNoticeData()
  321. },
  322. methods: {
  323. // 获取首页年份和季度数据
  324. getYearSeasonData() {
  325. let that = this
  326. apiGetevaluationportalhomeSeason().then(datas =>{
  327. if (datas.success) {
  328. if (datas.data) {
  329. that.changeYear = datas.data.year
  330. if (datas.data.season === '1') {
  331. that.seasonStr = '第一季度'
  332. } else if (datas.data.season === '2') {
  333. that.seasonStr = '第二季度'
  334. } else {
  335. that.seasonStr = '第三季度'
  336. }
  337. }
  338. } else {
  339. that.changeYear = (new Date().getFullYear() - 1).toString()
  340. that.seasonStr = '第一季度'
  341. }
  342. that.getGateWayData()
  343. })
  344. },
  345. getDeptNoticeData() {
  346. let that = this
  347. let userMes = JSON.parse(window.sessionStorage.getItem('user'))
  348. if (userMes.deptId) {
  349. let params = {
  350. deptId: userMes.deptId,
  351. noticeTitle: ''
  352. }
  353. apiGetevaluationCircularDisplaylist(params).then(datas => {
  354. if (datas && datas.data) {
  355. that.noticeData = datas.data
  356. }
  357. })
  358. }
  359. },
  360. getPos() {
  361. if (this.winPix === 1.25) {
  362. return 'top: -15%;'
  363. }
  364. },
  365. getPickerSty() {
  366. if (this.winPix === 1.25) {
  367. return 'margin: 5px 0 0 20px;'
  368. }
  369. },
  370. getMainOneSty() {
  371. if (this.winPix === 1.25) {
  372. return 'font-size: 14px'
  373. }
  374. },
  375. getFooterOneSty() {
  376. if (this.winPix === 1.25) {
  377. return 'font-size: 12px;line-height: 12px;'
  378. }
  379. },
  380. getFooter12Sty() {
  381. if (this.winPix === 1.25) {
  382. return 'font-size: 12px'
  383. }
  384. },
  385. getfooterSpan() {
  386. if (this.winPix === 1.25) {
  387. return 'width: 3.4vw;padding: 5px 3px 0;'
  388. }
  389. },
  390. changeYearFn(val) {
  391. this.changeYear = val
  392. this.cupDataYearArr = {
  393. section: [],
  394. integration: []
  395. }
  396. this.cupDataSeasonArr = {
  397. section: [],
  398. integration: []
  399. }
  400. this.getGateWayData()
  401. },
  402. watchDetail(row) {
  403. this.$refs.notificationDetail.init(row)
  404. },
  405. watchAllNotification() {
  406. this.$refs.notificationAllData.init()
  407. },
  408. arrowLeft() {
  409. if (this.seasonStr === '第一季度') {
  410. this.seasonStr = '第三季度'
  411. } else if (this.seasonStr === '第二季度') {
  412. this.seasonStr = '第一季度'
  413. } else if (this.seasonStr === '第三季度') {
  414. this.seasonStr = '第二季度'
  415. }
  416. this.cupDataYearArr = {
  417. section: [],
  418. integration: []
  419. }
  420. this.cupDataSeasonArr = {
  421. section: [],
  422. integration: []
  423. }
  424. this.getGateWayData()
  425. },
  426. arrowRight() {
  427. if (this.seasonStr === '第一季度') {
  428. this.seasonStr = '第二季度'
  429. } else if (this.seasonStr === '第二季度') {
  430. this.seasonStr = '第三季度'
  431. } else if (this.seasonStr === '第三季度') {
  432. this.seasonStr = '第一季度'
  433. }
  434. this.cupDataYearArr = {
  435. section: [],
  436. integration: []
  437. }
  438. this.cupDataSeasonArr = {
  439. section: [],
  440. integration: []
  441. }
  442. this.getGateWayData()
  443. },
  444. // 获取首页数据
  445. getGateWayData() {
  446. let that = this
  447. let params = {
  448. binSection: '',
  449. year: that.changeYear,
  450. season: that.seasonStr === '第一季度' ? '1' : that.seasonStr === '第二季度' ? '2' : '3'
  451. }
  452. apiGetevaluationportallist(params).then(datas => {
  453. if (datas && datas.data) {
  454. let secArr = ['HD', 'SD', 'XNYFG', 'GJYW', 'MDYTH']
  455. secArr.forEach(item => {
  456. for (let i in datas.data.year) {
  457. let it = datas.data.year[i]
  458. if (item === i && i !== 'MDYTH') {
  459. let gradeA = 0
  460. let gradeB = 0
  461. let gradeC = 0
  462. let gradeD = 0
  463. let tableData = []
  464. it.forEach((iv, index) => {
  465. if (index < 3) {
  466. let obj = iv
  467. if (index === 0) {
  468. obj.img = cup1
  469. } else if (index === 1) {
  470. obj.img = cup2
  471. } else if (index === 2) {
  472. obj.img = cup3
  473. }
  474. tableData.push(iv)
  475. }
  476. if (iv.grade === 'A') {
  477. gradeA++
  478. } else if (iv.grade === 'B') {
  479. gradeB++
  480. } else if (iv.grade === 'C') {
  481. gradeC++
  482. } else if (iv.grade === 'D') {
  483. gradeD++
  484. }
  485. })
  486. let obj = {
  487. name: item === 'HD' ? '火电板块' : item === 'SD' ? '水电板块' :
  488. item === 'XNYFG' ? '新能源' : '海外业务',
  489. nameEn: item,
  490. echartsData: {
  491. allNum: it.length,
  492. echarts: [{
  493. value: gradeA,
  494. name: 'A类'
  495. },
  496. {
  497. value: gradeB,
  498. name: 'B类'
  499. },
  500. {
  501. value: gradeC,
  502. name: 'C类'
  503. },
  504. {
  505. value: gradeD,
  506. name: 'D类'
  507. }
  508. ]
  509. },
  510. tableDatas: tableData,
  511. allTableData: it,
  512. section: [],
  513. sectionAll: []
  514. }
  515. that.cupDataYearArr.section.push(obj)
  516. } else if (item === i && i === 'MDYTH') {
  517. it.forEach((iv, index) => {
  518. if (index < 2) {
  519. if (index === 0) {
  520. iv.img = cup1
  521. } else if (index === 1) {
  522. iv.img = cup2
  523. }
  524. that.cupDataYearArr.integration.push(iv)
  525. }
  526. })
  527. }
  528. }
  529. })
  530. that.cupDataYearArr.section.forEach(item => {
  531. for (let i in datas.data.season) {
  532. let it = datas.data.season[i]
  533. if (item.nameEn === i) {
  534. it.forEach((iv, index) => {
  535. if (index < 3) {
  536. item.section.push(iv)
  537. }
  538. })
  539. item.sectionAll = it
  540. }
  541. }
  542. })
  543. if (datas.data.season['MDYTH']) {
  544. datas.data.season['MDYTH'].forEach((item, index) => {
  545. if (index < 2) {
  546. that.cupDataSeasonArr.integration.push(item)
  547. }
  548. })
  549. }
  550. console.log(that.cupDataYearArr)
  551. console.log(that.cupDataSeasonArr)
  552. this.$nextTick(() => {
  553. that.getEcharts(that.cupDataYearArr.section)
  554. })
  555. }
  556. })
  557. },
  558. getEcharts(datas) {
  559. datas.forEach((item, index) => {
  560. this.getEchartsData(item.echartsData.echarts, 'pieChart' + index)
  561. })
  562. },
  563. getEchartsData(data, name) {
  564. let total = 0
  565. data.forEach(it => {
  566. total += it.value
  567. })
  568. let option = {
  569. color: ['#F65177', '#50C14E', '#5093E1', '#9DA5BE'],
  570. tooltip: {
  571. trigger: 'item'
  572. },
  573. series: [{
  574. name: '年度榜',
  575. type: 'pie',
  576. radius: ['50%', '70%'],
  577. avoidLabelOverlap: false,
  578. label: {
  579. show: true,
  580. position: 'center',
  581. formatter: () => {
  582. return total
  583. },
  584. fontSize: 16,
  585. fontWeight: 600
  586. },
  587. // emphasis: {
  588. // label: {
  589. // show: true,
  590. // fontSize: 10,
  591. // fontWeight: 'bold'
  592. // }
  593. // },
  594. labelLine: {
  595. show: false
  596. },
  597. data: data
  598. }]
  599. };
  600. // 基于准备好的dom,初始化echarts实例
  601. let dom = document.getElementById(name);
  602. dom.removeAttribute("_echarts_instance_")
  603. let myChart = this.$echarts.init(dom);
  604. myChart.setOption(option);
  605. window.addEventListener("resize", function () {
  606. myChart.resize()
  607. })
  608. },
  609. yearSeeMore(name, type) {
  610. if (type === 'year') {
  611. this.$refs.yearFrom.init(name, this.changeYear, this.seasonStr)
  612. } else {
  613. this.$refs.seasonFrom.init(name, this.changeYear, this.seasonStr)
  614. }
  615. }
  616. }
  617. }
  618. </script>
  619. <style lang="less">
  620. .gatewayNewPage {
  621. height: 93vh;
  622. width: 87vw;
  623. background: #EDEFF5;
  624. padding: 15px 20px;
  625. .quarter {
  626. background: #fff;
  627. border-radius: 10px;
  628. height: 100%;
  629. // padding-right: 15px;
  630. .searchFn {
  631. // height: 50px;
  632. height: 5vh;
  633. display: flex;
  634. border-bottom: 1px solid #E1E3EA;
  635. .el-date-editor--year {
  636. width: 130px;
  637. margin: 10px 0 0 20px;
  638. .el-input__wrapper {
  639. background: #2C7EDC;
  640. height: 30px;
  641. .el-input__prefix,
  642. .el-input__inner,
  643. .el-input__suffix {
  644. color: #fff;
  645. }
  646. }
  647. }
  648. ::-webkit-input-placeholder {
  649. color: #fff;
  650. }
  651. .quarterChoose {
  652. position: relative;
  653. left: 33%;
  654. top: 15px;
  655. width: 225px;
  656. display: flex;
  657. justify-content: space-around;
  658. .choose {
  659. position: relative;
  660. top: -1px;
  661. }
  662. .el-icon {
  663. cursor: pointer;
  664. }
  665. }
  666. }
  667. .tableHeader {
  668. display: flex;
  669. border-bottom: 1px solid #E1E3EA;
  670. // height: 75px;
  671. height: 9vh;
  672. width: 100%;
  673. .headerComTit {
  674. // height: 40px;
  675. height: 5vh;
  676. border-bottom: 1px solid #E1E3EA;
  677. span {
  678. font-size: 14px;
  679. color: #3B7AD1;
  680. }
  681. }
  682. .headerNameTit {
  683. display: flex;
  684. justify-content: space-between;
  685. padding: 8px 10px;
  686. font-size: 12px;
  687. color: #414141;
  688. .headerNameTit_left {
  689. width: 60%;
  690. }
  691. .headerNameTit_right {
  692. width: 40%;
  693. display: flex;
  694. justify-content: center;
  695. }
  696. }
  697. .headerOne {
  698. // width: 35px;
  699. width: 3%;
  700. background: #184FB4;
  701. }
  702. .headerTwo {
  703. // width: 150px;
  704. width: 12%;
  705. border-right: 1px solid #E1E3EA;
  706. .headerTwoTit {
  707. position: relative;
  708. top: 10px;
  709. left: 30%;
  710. }
  711. }
  712. .headerThree {
  713. // width: 350px;
  714. width: 28%;
  715. border-right: 1px solid #E1E3EA;
  716. .headerThreeTit {
  717. position: relative;
  718. top: 10px;
  719. left: 40%;
  720. }
  721. }
  722. .headerFour {
  723. // width: calc(100% - 535px);
  724. width: 57%;
  725. .headerFourTit {
  726. position: relative;
  727. top: 10px;
  728. left: 40%;
  729. }
  730. .headerNameForeTit {
  731. display: flex;
  732. justify-content: space-between;
  733. padding: 8px 10px;
  734. font-size: 12px;
  735. color: #414141;
  736. .headerNameForeTit_left {
  737. width: 30%;
  738. }
  739. .headerNameForeTit_right {
  740. width: 72%;
  741. display: flex;
  742. justify-content: space-between;
  743. }
  744. }
  745. }
  746. }
  747. .tableMain {
  748. display: flex;
  749. border-bottom: 1px solid #E1E3EA;
  750. // height: 150px;
  751. height: 16vh;
  752. .mainOne {
  753. // width: 35px;
  754. width: 3%;
  755. background: #184FB4;
  756. span {
  757. display: inline-block;
  758. width: 20px;
  759. margin: 0 auto;
  760. line-height: 20px;
  761. font-size: 16px;
  762. font-weight: bold;
  763. color: #fff;
  764. position: relative;
  765. top: 20%;
  766. left: 25%;
  767. }
  768. }
  769. .mainTwo {
  770. // width: 149px;
  771. width: 12%;
  772. border-right: 1px solid #E1E3EA;
  773. position: relative;
  774. .mainTwoMsg {
  775. position: relative;
  776. .mainTwoComColor {
  777. display: inline-block;
  778. width: 6px;
  779. height: 6px;
  780. border-radius: 20px;
  781. margin-left: 15px;
  782. position: relative;
  783. top: -1px;
  784. }
  785. .mainTwoComTit {
  786. font-size: 14px;
  787. display: inline-block;
  788. margin-left: 5px;
  789. }
  790. }
  791. .echartsNum {
  792. font-size: 16px;
  793. font-weight: 600;
  794. position: absolute;
  795. top: 42px;
  796. left: 65px;
  797. }
  798. }
  799. .mainThree {
  800. // width: 350px;
  801. width: 28%;
  802. padding-top: 13px;
  803. border-right: 1px solid #E1E3EA;
  804. position: relative;
  805. .mainMore {
  806. width: 0;
  807. height: 0;
  808. border-top: 10px solid transparent;
  809. border-left: 10px solid #B6BBCB;
  810. border-right: 10px solid transparent;
  811. border-bottom: 10px solid transparent;
  812. position: absolute;
  813. top: -9px;
  814. right: -9px;
  815. transform: rotate(-45deg);
  816. cursor: pointer;
  817. }
  818. .mainThreeMsg {
  819. display: flex;
  820. margin: 0 10px;
  821. width: 100%;
  822. // height: 33px;
  823. height: 3.5vh;
  824. background: #F6F7FA;
  825. margin-bottom: 8px;
  826. padding-left: 10px;
  827. padding-top: 2px;
  828. border-radius: 5px;
  829. img {
  830. width: 20px;
  831. height: 20px;
  832. position: relative;
  833. top: 5px;
  834. margin-right: 10px;
  835. }
  836. .msgProgress {
  837. margin-top: 5px;
  838. display: flex;
  839. width: 90%;
  840. span {
  841. font-size: 14px;
  842. font-family: Microsoft YaHei;
  843. }
  844. span:nth-child(1) {
  845. display: inline-block;
  846. width: 70%;
  847. overflow: hidden;
  848. text-overflow: ellipsis;
  849. white-space: nowrap;
  850. font-weight: 400;
  851. color: #666;
  852. margin-right: 10px;
  853. }
  854. span:nth-child(2) {
  855. font-weight: 600;
  856. margin-right: 30px;
  857. color: #F65177;
  858. }
  859. span:nth-child(3) {
  860. display: inline-block;
  861. width: 20%;
  862. font-weight: 600;
  863. color: #666;
  864. }
  865. }
  866. }
  867. }
  868. .mainFour {
  869. // width: calc(100% - 536px);
  870. width: 57%;
  871. padding-top: 13px;
  872. position: relative;
  873. .mainMore {
  874. width: 0;
  875. height: 0;
  876. border-top: 10px solid transparent;
  877. border-left: 10px solid #B6BBCB;
  878. border-right: 10px solid transparent;
  879. border-bottom: 10px solid transparent;
  880. position: absolute;
  881. top: -9px;
  882. right: -9px;
  883. transform: rotate(-45deg);
  884. cursor: pointer;
  885. }
  886. .mainFourMsg {
  887. display: flex;
  888. justify-content: space-between;
  889. margin: 0 10px;
  890. width: 100%;
  891. // height: 33px;
  892. height: 3.5vh;
  893. background: #F6F7FA;
  894. margin-bottom: 8px;
  895. padding-left: 10px;
  896. padding-top: 2px;
  897. border-radius: 5px;
  898. span {
  899. font-size: 14px;
  900. font-family: Microsoft YaHei;
  901. position: relative;
  902. top: 6px;
  903. display: inline-block;
  904. }
  905. .mainFourcompany {
  906. width: 27%;
  907. overflow: hidden;
  908. text-overflow: ellipsis;
  909. white-space: nowrap;
  910. font-weight: 400;
  911. color: #666;
  912. margin-right: 17px;
  913. }
  914. .mainFourImg {
  915. display: flex;
  916. justify-content: space-between;
  917. width: 76%;
  918. .mainFourImgSpan {
  919. width: 5%;
  920. font-weight: 600;
  921. // margin-right: 15px;
  922. color: #666;
  923. }
  924. img {
  925. width: 20px;
  926. height: 20px;
  927. position: relative;
  928. top: 5px;
  929. left: -10px;
  930. // margin-right: 33px;
  931. // margin-left: 22px;
  932. }
  933. }
  934. }
  935. }
  936. }
  937. .tableFooter {
  938. display: flex;
  939. // height: 100px;
  940. height: 10vh;
  941. .footerOne {
  942. // width: 35px;
  943. width: 3%;
  944. background: #7D8297;
  945. border-radius: 0 0 0 10px;
  946. span {
  947. display: inline-block;
  948. // width: 20px;
  949. width: 3%;
  950. margin: 0 auto;
  951. line-height: 16px;
  952. font-size: 16px;
  953. font-weight: bold;
  954. color: #fff;
  955. position: relative;
  956. top: 10px;
  957. left: 10px;
  958. }
  959. }
  960. .footerTwo {
  961. // width: 500px;
  962. width: 40%;
  963. padding-top: 10px;
  964. border-right: 1px solid #E1E3EA;
  965. .footerTwoMsg {
  966. display: flex;
  967. margin: 0 10px;
  968. width: 100%;
  969. // height: 33px;
  970. height: 3.5vh;
  971. background: #F6F7FA;
  972. margin-bottom: 8px;
  973. padding-left: 10px;
  974. // padding-top: 2px;
  975. border-radius: 5px;
  976. img {
  977. width: 20px;
  978. height: 20px;
  979. position: relative;
  980. top: 5px;
  981. margin-right: 10px;
  982. }
  983. .footerProgress {
  984. margin-top: 5px;
  985. display: flex;
  986. width: 91%;
  987. span {
  988. font-size: 14px;
  989. font-family: Microsoft YaHei;
  990. }
  991. .footerOneSpan {
  992. display: inline-block;
  993. width: 35%;
  994. overflow: hidden;
  995. text-overflow: ellipsis;
  996. white-space: nowrap;
  997. font-weight: 400;
  998. color: #666;
  999. margin-right: 10px;
  1000. }
  1001. .el-progress {
  1002. width: calc(50% - 15px);
  1003. padding-right: 15px;
  1004. position: relative;
  1005. top: -3px;
  1006. .el-progress__text {
  1007. display: none;
  1008. }
  1009. }
  1010. .footerTwoSpan {
  1011. font-weight: 600;
  1012. margin-right: 30px;
  1013. color: #F65177;
  1014. }
  1015. .footerThreeSpan {
  1016. display: inline-block;
  1017. width: 12%;
  1018. font-weight: 600;
  1019. color: #666;
  1020. }
  1021. }
  1022. }
  1023. }
  1024. .footerThree {
  1025. // width: calc(100% - 536px);
  1026. width: 57%;
  1027. padding-top: 13px;
  1028. position: relative;
  1029. .mainMore {
  1030. width: 0;
  1031. height: 0;
  1032. border-top: 10px solid transparent;
  1033. border-left: 10px solid #B6BBCB;
  1034. border-right: 10px solid transparent;
  1035. border-bottom: 10px solid transparent;
  1036. position: absolute;
  1037. top: -9px;
  1038. right: -9px;
  1039. transform: rotate(-45deg);
  1040. cursor: pointer;
  1041. }
  1042. .footerThreeMsg {
  1043. display: flex;
  1044. width: 13%;
  1045. // margin: 0 10px;
  1046. // margin-left: 10px;
  1047. padding: 0 10px;
  1048. margin-bottom: 8px;
  1049. span {
  1050. font-size: 12px;
  1051. font-weight: 400;
  1052. color: #666;
  1053. font-family: Microsoft YaHei;
  1054. }
  1055. .footerImg {
  1056. display: flex;
  1057. border-radius: 5px;
  1058. background: #F6F7FA;
  1059. span {
  1060. display: inline-block;
  1061. // width: 100%;
  1062. // width: 48px;
  1063. width: 3vw;
  1064. // height: 30px;
  1065. height: 3vh;
  1066. padding: 5px 8px 0;
  1067. position: relative;
  1068. top: 2px;
  1069. }
  1070. img {
  1071. width: 20px;
  1072. height: 20px;
  1073. position: relative;
  1074. top: 5px;
  1075. margin-right: 8px;
  1076. position: relative;
  1077. top: 7px;
  1078. }
  1079. }
  1080. }
  1081. }
  1082. }
  1083. }
  1084. .report {
  1085. margin-left: 20px;
  1086. height: 100%;
  1087. .gateway_report {
  1088. // width: 355px;
  1089. width: 100%;
  1090. background: #fff;
  1091. // margin-right: 30px;
  1092. margin-right: calc(100% - 355px);
  1093. border-radius: 10px;
  1094. padding-bottom: 10px;
  1095. border: 1px solid #D6DBEA;
  1096. .reportTit {
  1097. padding: 21px 25px 10px 25px;
  1098. // background: #E3EFFF;
  1099. border-bottom: 1px solid #D6DBEA;
  1100. border-radius: 10px 10px 0px 0px;
  1101. text-align: center;
  1102. display: flex;
  1103. justify-content: center;
  1104. p {
  1105. font-size: 18px;
  1106. font-family: Microsoft YaHei;
  1107. font-weight: bold;
  1108. color: #3B7AD1;
  1109. }
  1110. .el-icon {
  1111. position: relative;
  1112. left: 120px;
  1113. top: 3px;
  1114. cursor: pointer;
  1115. }
  1116. }
  1117. .reportMain {
  1118. height: 80vh !important;
  1119. overflow-x: hidden;
  1120. overflow-y: auto;
  1121. .reportMain_msg {
  1122. width: 100%;
  1123. display: flex;
  1124. padding: 25px 0 25px 27px;
  1125. border-bottom: 1px solid #D6DBEA;
  1126. .rightDiv {
  1127. width: 4px;
  1128. height: 40px;
  1129. // height: 5vh;
  1130. background: #4883D4;
  1131. border-radius: 2px;
  1132. position: relative;
  1133. top: 2px;
  1134. }
  1135. .rightTitMsg {
  1136. margin-left: 15px;
  1137. width: calc(100% - 20px);
  1138. p {
  1139. // width: 300px;
  1140. width: 100%;
  1141. overflow: hidden;
  1142. text-overflow: ellipsis;
  1143. white-space: nowrap;
  1144. font-size: 16px;
  1145. font-family: Microsoft YaHei;
  1146. font-weight: bold;
  1147. color: #333333;
  1148. }
  1149. span {
  1150. font-size: 14px;
  1151. font-family: Microsoft YaHei;
  1152. font-weight: 400;
  1153. color: #8991B0;
  1154. display: inline-block;
  1155. }
  1156. .rightTwoSpanMsg {
  1157. width: 60%;
  1158. overflow: hidden;
  1159. text-overflow: ellipsis;
  1160. white-space: nowrap;
  1161. }
  1162. }
  1163. }
  1164. }
  1165. }
  1166. }
  1167. }
  1168. </style>