123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563 |
- /* eslint-disable vue/valid-template-root */
- <template>
- <div class="app-container">
- <div class="filter-container">
- <div class="block">
- <el-date-picker v-model="yearDate" :clearable="false" type="year" placeholder="选择年" />
- </div>
- </div>
- <el-row v-if="isBarChart1" style="position: relative;">
- <p style="position: absolute;top:-12px;left:40%;color:rgb(130, 165, 252);background:rgb(230, 243, 255);border:1px solid rgb(130, 165, 252);padding:10px;border-radius:10px">
- {{ year }}年集团用电量:{{ total }}万度
- </p>
- <el-col :span="24">
- <div id="barChart1" style="width: 100%;height:400px;" />
- </el-col>
- </el-row>
- <!-- 年度维修成本 -->
- <el-row>
- <el-col :span="12">
- <div id="lineChart1" style="width: 100%;height:400px;" />
- </el-col>
- <el-col :span="12">
- <div id="lineChart2" style="width: 100%;height:400px;" />
- </el-col>
- </el-row>
- <el-row>
- <el-col :span="12">
- <div id="pieChart1" style="width: 100%;height:400px;" />
- </el-col>
- <el-col :span="12">
- <div id="barChart2" style="width: 100%;height:400px;" />
- </el-col>
- </el-row>
- </div>
- </template>
- <script>
- import echarts from 'echarts'
- require('echarts/theme/macarons') // echarts theme
- // eslint-disable-next-line no-unused-vars
- import waves from '@/directive/waves' // waves directive
- import Pagination from '@/components/Pagination' // secondary package based on el-pagination
- import { GetDataByName, GetDataByNames, GetReportform, checkButtons } from '@/api/common'
- import { parseTime } from '@/utils/index.js'
- import Cookies from 'js-cookie'
- export default {
- name: 'QueryElec',
- directives: { waves },
- components: { Pagination },
- data() {
- return {
- yearDate: new Date(),
- pasture: Cookies.get('pasturename'),
- year: new Date().getFullYear(),
- month: new Date().getMonth() < 9 ? '0' + (new Date().getMonth() + 1) : new Date().getMonth() + 1,
- deptment: '维修处',
- total: '',
- getBarChart1Parm: {
- name: 'getpSumNowElec',
- parammaps: {
- receiveTime: new Date().getFullYear(),
- center:'',
- pastureName: Cookies.get('pasturename')
- }
- },
- getLineChart1Parm: {
- name: 'getPastureSumMonthElec',
- parammaps: {
- receiveTime: new Date().getFullYear(),
- pastureName: Cookies.get('pasturename')
- }
- },
- getLineChart2Parm: {
- name: 'getPastureSumDayElec',
- parammaps: {
- receiveTime: new Date().getFullYear() + '-' + (new Date().getMonth() <= 9 ? '0' + (new Date().getMonth() + 1) : new Date().getMonth() + 1),
- pastureName: Cookies.get('pasturename')
- }
- },
- getPieChart1Parm: {
- name: 'getdeptSumMonthElec',
- parammaps: {
- receiveTime: new Date().getFullYear() + '-' + (new Date().getMonth() <= 9 ? '0' + (new Date().getMonth() + 1) : new Date().getMonth() + 1),
- pastureName: Cookies.get('pasturename')
- }
- },
- getBarChart2Parm: {
- name: 'geteqclassSumMonthElec',
- parammaps: {
- receiveTime: new Date().getFullYear() + '-' + (new Date().getMonth() <= 9 ? '0' + (new Date().getMonth() + 1) : new Date().getMonth() + 1),
- pastureName: Cookies.get('pasturename'),
- deptName: ''
- }
- },
- barChart1: null,
- lineChart1: null,
- lineChart2: null,
- pieChart1: null,
- barChart2: null,
- chart_data1: {
- // pasture: ['宝鸡', '恒盛', '塞一', '塞二', '塞三', '塞四', '塞五', '通山', '合肥', '和林'],
- // nowYear: [123, 332, 222, 333, 444, 333, 222, 334, 234, 223],
- // lastYear: [22, 44, 77, 88, 444, 234, 342, 234, 234, 66]
- },
- chart_data2: {
- // months: ['2019-01', '2019-02', '2019-01', '2019-01', '2019-01', '2019-01', '2019-01', '2019-01', '2019-01', '2019-01'],
- // nowYear: [123, 332, 222, 333, 444, 333, 222, 334, 234, 223],
- // lastYear: [22, 44, 77, 88, 444, 234, 342, 234, 234, 66]
- },
- chart_data3: {
- // day: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'],
- // nowYear: [123, 332, 222, 333, 444, 333, 222, 334, 234, 223],
- // lastYear: [22, 44, 77, 88, 444, 234, 342, 234, 234, 66]
- },
- chart_data4: {
- // name: ['饲养处', '其他部门', '设备处', '能源处', '牧场办公室'],
- // psum: [
- // { value: 335, name: '饲养处' },
- // { value: 310, name: '其他部门' },
- // { value: 234, name: '设备处' },
- // { value: 135, name: '能源处' },
- // { value: 1548, name: '牧场办公室' }
- // ]
- },
- chart_data5: {
- // typeName: ['小型装载机', '叉车', '拖拉机', '抛料机', '搅拌机'],
- // eqCost: [123, 332, 222, 333, 444],
- // lastYear: [22, 342, 234, 234, 66]
- },
- tableKey: 0,
- list: null,
- total: 0,
- listLoading: true,
- rowStyle: { maxHeight: 50 + 'px', height: 45 + 'px' },
- cellStyle: { padding: 0 + 'px' },
- dialogFormVisibleCard: false,
- listLoadingSee: true,
- rowSeeData: {},
- listSee: [],
- totalSee: 0,
- getdataListParmSee: {
- name: 'geteqclassSumDay',
- page: 1,
- offset: 1,
- pagecount: 10,
- returntype: 'Map',
- parammaps: {
- receiveTime: new Date().getFullYear() + '-' + (new Date().getMonth() <= 9 ? '0' + (new Date().getMonth() + 1) : new Date().getMonth() + 1),
- pastureName: Cookies.get('pasturename'),
- deptName: '',
- typeName: '',
- assetCode: '',
- eqName: '',
- startTime: '',
- stopTime: '',
- pastureId: Cookies.get('pastureid')
- }
- },
- buttons: [],
- isBarChart1: []
- }
- },
- watch: {
- 'yearDate': {
- deep: true,
- handler: function(newVal, oldVal) {
- var time = this.yearDate
- console.log(newVal.getFullYear())
- this.year = time.getFullYear()
- this.getBarChart1Parm.parammaps.receiveTime = time.getFullYear()
- this.getLineChart1Parm.parammaps.receiveTime = time.getFullYear()
- this.getLineChart2Parm.parammaps.receiveTime = time.getFullYear() + '-' + (new Date().getMonth() <= 9 ? '0' + (new Date().getMonth() + 1) : new Date().getMonth() + 1)
- this.getPieChart1Parm.parammaps.receiveTime = time.getFullYear() + '-' + (new Date().getMonth() <= 9 ? '0' + (new Date().getMonth() + 1) : new Date().getMonth() + 1)
- this.getBarChart2Parm.parammaps.receiveTime = time.getFullYear() + '-' + (new Date().getMonth() <= 9 ? '0' + (new Date().getMonth() + 1) : new Date().getMonth() + 1)
- this.getBarChart1()
- this.getLineChart1()
- this.getLineChart2()
- this.getPieChart1()
- }
- }
- },
- created() {
- this.getBarChart1()
- this.getLineChart1()
- this.getLineChart2()
- this.getPieChart1()
- const that = this
- GetDataByName({ 'name': 'getUserPCButtons', 'parammaps': { 'jwt_username': Cookies.get('name') }}).then(response => {
- that.buttons = response.data.list
- that.get_auto_buttons()
- })
- },
- mounted() {
- // this.roadBarChart1(this.chart_data1)
- // this.roadlineChart1(this.chart_data2, this.pasture, this.year)
- // this.roadlineChart2(this.chart_data3, this.pasture, this.month)
- // this.roadpieChart1(this.chart_data4, this.month)
- // this.roadBarChart2(this.chart_data5, this.deptment)
- },
- methods: {
- get_auto_buttons() {
- // 图1
- const BarChart1 = 'report:queryElec:pastures'
- const isBarChart1 = checkButtons(this.$store.state.user.buttons, BarChart1)
- this.isBarChart1 = isBarChart1
- },
- // 各牧场年度维修成本对比
- getBarChart1() {
- GetReportform(this.getBarChart1Parm).then(response => {
- console.log('图1', response)
- let pasture = response.data.chart_data.pasture
- let keys = []
- pasture.forEach((item,key)=>{
- if(item.includes("公司")){
- keys.push(key)
- }
- })
- let lastYear = response.data.chart_data.lastYear
- let new_pasture = pasture.splice(keys[0],keys.length)
- let new_lastYear = lastYear.splice(keys[0],keys.length)
- let NowYear = response.data.chart_data.nowYear
- let new_NowYear = NowYear.splice(keys[0],keys.length)
- this.chart_data1.pasture = pasture
- this.chart_data1.lastYear = lastYear
- this.chart_data1.nowYear = NowYear
- // this.chart_data1 = response.data.chart_data
- this.roadBarChart1(this.chart_data1)
- var nowYear = response.data.chart_data.nowYear
- var total = 0
- if (nowYear !== null || nowYear !== undefined) {
- nowYear.forEach(function(item, index) {
- console.log(parseFloat(item))
- total = total + parseFloat(item)
- })
- }
- this.total = total.toFixed(4)
- })
- },
- getLineChart1() {
- GetReportform(this.getLineChart1Parm).then(response => {
- console.log('图2', response)
- this.chart_data2 = response.data.chart_data
- this.roadlineChart1(this.chart_data2, this.pasture, this.year)
- })
- },
- getLineChart2() {
- GetReportform(this.getLineChart2Parm).then(response => {
- console.log('图3', response)
- this.chart_data3 = response.data.chart_data
- this.roadlineChart2(this.chart_data3, this.pasture, this.month)
- })
- },
- getPieChart1() {
- GetDataByName(this.getPieChart1Parm).then(response => {
- console.log('图4', response)
- if (response.data === null || response.data.list === null) {
- this.chart_data4 = { name: [], psum: [] }
- this.roadpieChart1(this.chart_data4, this.month)
- } else {
- this.chart_data4.psum = response.data.list
- var name = []
- console.log(response.data.list)
- response.data.list.forEach(function(i) {
- name.push(i.name)
- })
- console.log(this.chart_data4)
- this.chart_data4.name = name
- this.roadpieChart1(this.chart_data4, this.month)
- this.deptment = name[0]
- this.getdataListParmSee.parammaps.deptName = name[0]
- this.getBarChart2Parm.parammaps.deptName = name[0]
- this.getBarChart2()
- }
- })
- },
- getBarChart2() {
- GetReportform(this.getBarChart2Parm).then(response => {
- console.log('图5', response)
- this.chart_data5 = response.data.chart_data
- this.roadBarChart2(this.chart_data5, this.deptment)
- })
- },
- // 各牧场年度维修成本对比
- roadBarChart1(chart_data1) {
- if (this.barChart1 != null) {
- this.barChart1.dispose()
- }
- this.barChart1 = echarts.init(document.getElementById('barChart1'))
- var option = {
- title: { text: '各牧场年度用电量对比', textStyle: { color: '#769cfc' }},
- tooltip: { trigger: 'axis' },
- legend: {
- data: ['今年用量', '去年同期'],
- right: 40
- },
- color: ['#2dc0e8', '#769cfc', '#FFB800'],
- grid: { left: '3%', right: '4%', bottom: '4%', containLabel: true },
- xAxis: [{ type: 'category', data: chart_data1.pasture, axisLabel: { interval: 0, rotate: 30 }}],
- yAxis: [{ type: 'value', name: '电量(度)', axisLabel: { formatter: '{value}万' }}],
- series: [
- {
- name: '今年用量',
- type: 'bar',
- data: chart_data1.nowYear,
- emphasis: { label: { show: true, position: 'inside' }}
- },
- {
- name: '去年同期',
- type: 'bar',
- data: chart_data1.lastYear,
- emphasis: { label: { show: true, position: 'inside' }}
- }
- ]
- }
- this.barChart1.setOption(option)
- window.onresize = function() {
- this.barChart1.resize()
- }
- var that = this
- this.barChart1.on('click', function(param, i) {
- console.log(param)
- that.pasture = param.name
- that.getLineChart1Parm.parammaps.pastureName = param.name
- that.getLineChart2Parm.parammaps.pastureName = param.name
- that.getPieChart1Parm.parammaps.pastureName = param.name
- that.getBarChart2Parm.parammaps.pastureName = param.name
- that.getLineChart1()
- that.getLineChart2()
- that.getPieChart1()
- })
- },
- // 每月维修成本对比
- roadlineChart1(chart_data2, pasture, year) {
- if (this.lineChart1 != null) {
- this.lineChart1.dispose()
- }
- this.lineChart1 = echarts.init(document.getElementById('lineChart1'))
- var option = {
- title: { text: pasture + year + '每月用电量对比', textStyle: { color: '#769cfc' }},
- tooltip: { trigger: 'axis' },
- legend: {
- data: ['今年用量', '去年同期用量'],
- x: 'right'
- },
- color: [ '#769cfc', '#FFB800'],
- grid: { left: '3%', right: '5%', bottom: '4%', containLabel: true },
- xAxis: [{ type: 'category', data: chart_data2.months, name: '月份', axisLabel: { interval: 0, rotate: 30 }}],
- yAxis: [{ type: 'value', name: '电量(度)', axisLabel: { formatter: '{value}万' }}],
- series: [
- {
- name: '今年用量',
- type: 'line',
- data: chart_data2.nowYear,
- emphasis: { label: { show: true, position: 'inside' }}
- },
- {
- name: '去年同期用量',
- type: 'line',
- data: chart_data2.lastYear,
- emphasis: { label: { show: true, position: 'inside' }}
- }
- ]
- }
- this.lineChart1.setOption(option)
- window.onresize = function() {
- this.lineChart1.resize()
- }
- var that = this
- this.lineChart1.on('click', function(param, i) {
- console.log(param)
- that.getLineChart2Parm.parammaps.receiveTime = param.name
- that.getPieChart1Parm.parammaps.receiveTime = param.name
- that.getBarChart2Parm.parammaps.receiveTime = param.name
- var num = param.name.substring(5)
- console.log(num)
- that.month = num
- that.getLineChart2()
- that.getPieChart1()
- })
- },
- // 每月维修成本对比
- roadlineChart2(chart_data3, pasture, month) {
- if (this.lineChart2 != null) {
- this.lineChart2.dispose()
- }
- this.lineChart2 = echarts.init(document.getElementById('lineChart2'))
- var option = {
- title: { text: pasture + month + '月每日用电量对比', textStyle: { color: '#769cfc' }},
- tooltip: { trigger: 'axis' },
- legend: {
- data: ['今年日用量', '去年同期'],
- x: 'right'
- },
- color: [ '#769cfc', '#FFB800'],
- grid: { left: '3%', right: '5%', bottom: '4%', containLabel: true },
- xAxis: [{ type: 'category', data: chart_data3.day, name: '日期', axisLabel: { interval: 0 }}],
- yAxis: [{ type: 'value', name: '电量(度)', axisLabel: { formatter: '{value}' }}],
- series: [
- {
- name: '今年日用量',
- type: 'line',
- data: chart_data3.nowYear,
- emphasis: { label: { show: true, position: 'inside' }}
- },
- {
- name: '去年同期',
- type: 'line',
- data: chart_data3.lastYear,
- emphasis: { label: { show: true, position: 'inside' }}
- }
- ]
- }
- this.lineChart2.setOption(option)
- window.onresize = function() {
- this.lineChart2.resize()
- }
- this.lineChart2.on('click', function(param, i) {
- console.log(param)
- })
- },
- // 部门统计
- roadpieChart1(chart_data4, month) {
- if (this.pieChart1 != null) {
- this.pieChart1.dispose()
- }
- this.pieChart1 = echarts.init(document.getElementById('pieChart1'))
- var option = {
- title: { text: month + '月部门统计', textStyle: { color: '#769cfc' }},
- tooltip: {
- trigger: 'item',
- formatter: '{a} <br/>{b} : {c} ({d}%)'
- },
- legend: {
- data: chart_data4.name, top: 40, x: 'right'
- },
- color: ['#769cfc', '#FFB800'],
- grid: { left: '3%', right: '5%', bottom: '4%', containLabel: true },
- series: [
- {
- name: '',
- type: 'pie',
- radius: '55%',
- center: ['50%', '60%'],
- data: chart_data4.psum,
- emphasis: {
- itemStyle: {
- shadowBlur: 10,
- shadowOffsetX: 0,
- shadowColor: 'rgba(0, 0, 0, 0.5)'
- }
- }
- }
- ]
- }
- this.pieChart1.setOption(option)
- window.onresize = function() {
- this.pieChart1.resize()
- }
- var that = this
- this.pieChart1.on('click', function(param, i) {
- console.log(param)
- that.deptment = param.name
- that.getBarChart2Parm.parammaps.deptName = param.name
- that.getBarChart2()
- })
- },
- // 维修成本
- roadBarChart2(chart_data5, deptment) {
- if (this.barChart2 != null) {
- this.barChart2.dispose()
- }
- this.barChart2 = echarts.init(document.getElementById('barChart2'))
- var option = {
- title: { text: deptment + '用电量', textStyle: { color: '#769cfc' }},
- tooltip: { trigger: 'axis' },
- legend: {
- data: ['用电量'],
- x: 'right'
- },
- color: [ '#769cfc', '#FFB800'],
- grid: { left: '3%', right: '10%', bottom: '4%', containLabel: true },
- xAxis: [{ type: 'category', data: chart_data5.typeName, name: '电表名称', axisLabel: { interval: 0 }}],
- yAxis: [{ type: 'value', name: '电量(度)', axisLabel: { formatter: '{value}万' }}],
- series: [
- {
- name: '用电量',
- type: 'bar',
- barWidth: 14,
- data: chart_data5.eqCost,
- emphasis: { label: { show: true, position: 'inside' }}
- }
- ]
- }
- this.barChart2.setOption(option)
- window.onresize = function() {
- this.barChart2.resize()
- }
- }
- }
- }
- </script>
- <style>
- .el-row {
- margin-bottom: 40px;
- &:last-child {
- margin-bottom: 0;
- }
- }
- </style>
- <style lang="scss" scoped>
- .dashboard-editor-container {
- padding: 20px;
- background-color: rgb(240, 242, 245);
- position: relative;
- .github-corner {
- position: absolute;
- top: 0px;
- border: 0;
- right: 0;
- }
- .chart-wrapper {
- background: #fff;
- padding: 16px 16px 0;
- }
- }
- @media (max-width:1024px) {
- .chart-wrapper {
- padding: 8px;
- }
- }
- </style>
|