springboot+vue+element:echarts开发遇见问题---vue前端(二)
<template>
<u-grid>
<u-grid-item caption="服务使用统计排行">
<div class="u-grid-tools" slot="tools">
<el-button @click="exportExcel">导 出</el-button>
</div>
<div class="app-main">
<u-search-form
:formOption="formOption"
v-model="formValue"
@form-submit="search"
:tableLoading="tableLoading">
</u-search-form>
<u-grid class="u-grid-app">
<u-grid-item
caption="次数统计排行"
:span="24">
<div style="height: 420px">
<eCharts
ref="echartsColumnData"
class="app-charts-chart"
@click="triggerEvent"
:options="chartColumnOptions"></eCharts>
</div>
</u-grid-item>
</u-grid>
</div>
</u-grid-item>
</u-grid>
</template> <script>
import uGrid from '@/components/ui/u-grid';
import uGridItem from '@/components/ui/u-grid-item';
import uSearchForm from '@/components/ui/u-search-form';
import {mapActions} from "vuex";
import eCharts from 'vue-echarts'; export default {
name: 'service-ranking',
data() {
return { list: [], tableLoading: false, Dic: {},
formOption: {
dic: ['RANKING'],
column: [
{
// request_count/error_count/circuit_count/rate_limit_count
label: '排行选择',
prop: 'ranking_select',
type: "select",
dicData: "RANKING"
},
{
label: '时间选择',
prop: 'time_select',
type: 'select',
overHidden: true,
dicData: [
{
label: "3日排行",
value: "3"
},
{
label: "7日排行",
value: "7"
},
{
label: "月排行",
value: "30"
},
{
label: "历史排行",
value: "90"
}
]
},
{
label: '数量选择',
prop: 'top_row',
type: 'select',
overHidden: true,
dicData: [
{
label: "TOP 5",
value: "5"
},
{
label: "TOP 10",
value: "10"
},
{
label: "TOP 15",
value: "15"
},
{
label: "TOP 20",
value: "20"
}
]
},
{
label: '顺序选择',
prop: 'sortord',
type: 'select',
overHidden: true,
dicData: [
{
label: "倒序",
value: "asc"
},
{
label: "顺序",
value: "desc"
}
]
}
]
}, formValue: {
id: this.$route.params.id,
ranking_select: '',
time_select: '', begin_time: '',
end_time: '', top_row: '',
sortord: '',
},
chartColumnOptions: {},
echartsColumnData: [], serviceId: [],
serName: [],
serCount: [],
};
},
components: {
uGrid,
uGridItem,
uSearchForm,
eCharts
}, created() {
this.changeBars();
this.GetDic(['RANKING']).then(data => {
this.Dic = data;
});
this.getTimeSelect();
},
computed: {
// ...mapGetters(['GetDic']),
},
is_submit: false,
methods: {
...mapActions(["GetDic"]), triggerEvent(a) {
let name = a.value;
this.list.forEach(item => {
if (name == item.name) {
this.serviceId = item.ser_id;
} else {
}
})
this.$router.push('/service-ranking/detail/' + this.serviceId);
}, exportExcel() {
this.getTimeSelect();
this.exportData();
}, exportData() {
if (this.formValue.ranking_select == '' || this.formValue.time_select == '' ||
this.formValue.top_row == '' || this.formValue.sortord == '') {
this.$message({
showClose: true,
message: "所有条件必选!",
type: "error"
});
return;
} else {
axios.get('/service-ranking-excel/export-ranking-search?rankingSelect=' + this.formValue.ranking_select + '&topRow=' + this.formValue.top_row + '&Sortord=' + this.formValue.sortord + '&beginTime=' + this.formValue.begin_time + '&endTime=' + this.formValue.end_time, {
responseType: 'blob',
}).then((response) => {
let url = window.URL.createObjectURL(response.data)
let link = document.createElement('a')
link.style.display = 'none';
link.href = url;
//配置下载的文件名
link.setAttribute('download', '服务使用排行统计列表.xls');
document.body.appendChild(link);
link.click()
})
}
}, search() {
this.getTimeSelect()
this.getChange();
}, changeDateType(date) {
let seperator = "-";
let year = date.getFullYear();
let month = date.getMonth() + 1;
let strDate = date.getDate();
let hours = date.getHours();
let minutes = date.getMinutes();
let seconds = date.getSeconds();
if (month >= 1 && month <= 9) {
month = "0" + month;
}
if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
if (hours >= 0 && hours <= 9) {
hours = "0" + hours;
}
if (minutes >= 0 && minutes <= 9) {
minutes = "0" + minutes;
}
if (seconds >= 0 && seconds <= 9) {
seconds = "0" + seconds;
}
return (year + seperator + month + seperator + strDate
+ " " + hours + ":" + minutes
+ ":" + seconds);
}, getTimeSelect() {
this.formValue.end_time = this.changeDateType(new Date(Date.now()));
if (this.formValue.time_select == 3) {
this.formValue.begin_time = this.GetPrevDay(3);
}
if (this.formValue.time_select == 7) {
this.formValue.begin_time = this.GetPrevDay(7);
}
if (this.formValue.time_select == 30) {
this.formValue.begin_time = this.GetPrevDay(30);
}
if (this.formValue.time_select == 90) {
this.formValue.begin_time = this.GetPrevDay(90);
}
}, GetPrevDay(str) {
let yesterday = new Date(new Date() - 24 * 60 * 60 * 1000 * str);
return this.changeDateType(yesterday);
}, getChange() {
//查询排行-及时间选择
if (this.formValue.ranking_select == '' || this.formValue.time_select == '' ||
this.formValue.top_row == '' || this.formValue.sortord == '') {
this.$message({
showClose: true,
message: "所有条件必选!",
type: "error"
});
return;
} else {
axios.post('/service-invoke-ranking/get-sum-request-ranking-count', {
ranking_select: this.formValue.ranking_select,
top_row: this.formValue.top_row,
sortord: this.formValue.sortord,
end_time: this.formValue.end_time,
begin_time: this.formValue.begin_time,
}).then(res => {
if (res != null && this.GLOBAL.respSuc == res.data.result_code) {
let data = res.data.data;
this.list = data;
this.serName = [];
this.serCount = [];
this.serviceId = [];
data.forEach(item => {
this.serName.push(item.name);
});
data.forEach(item => {
this.serCount.push(item.count);
});
data.forEach(item => {
this.serviceId.push(item.serId);
});
if (this.list != '') {
this.changeBars();
} else {
// alert("查询结果为空");
this.$message({
showClose: true,
message: "查询结果为空!",
type: "error"
});
this.changeBars();
}
} else {
//查询失败
}
});
}
}, getColor(x = 0, y = 0, x2 = 0, y2 = 1) {
return {
color: {
type: 'linear',
x,
y,
x2,
y2,
colorStops: [{
offset: 0, color: '#CFDEED'
}, {
offset: 1, color: '#E7EBEF'
}],
}
};
}, changeBars: function () {
return this.chartColumnOptions = {
legend: {
right: 0,
data: ['统计次数']
},
title: {
subtext: '服务名称',
},
textStyle: {
color: '#888F95',
fontFamily: 'Microsoft YaHei',
fontSize: 14
},
grid: {
top: 35,
right: 0,
bottom: 5,
left: 0,
containLabel: true
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
xAxis: {
type: 'value',
boundaryGap: [0, 0.01],
offset: 5,//第一个服务跟x轴的距离
nameLocation: 'end',
axisLabel: {
interval: 0,
rotate: 30
},
splitLine: {
show: true,
lineStyle: this.getColor(0, 0, 1)
},
axisLine: {
show: true,
symbol: ['none', 'arrow'],
lineStyle: {
color: '#CFDEED'
}
},
axisTick: {
show: true,
alignWithLabel: true,
lineStyle: {
color: '#75BBFF'
}
},
},
yAxis: {
splitLine: {
show: false
},
//触发事件,为y轴标签/文字添加点击事件
triggerEvent: true,
componentType: String,
axisLabel: {
interval: 0,
color: "#000",
formatter: function (value) {
if (value.length > 6) {
return value.substring(0, 6) + "...";
} else {
return value;
}
},
}, axisLine: {
show: true,
lineStyle: {
color: '#CFDEED'
}
},
axisTick: {
show: true,
alignWithLabel: true,
lineStyle: {
color: '#75BBFF'
}
},
type: 'category',
data: this.serName
},
series: [
{
name: '统计次数',
type: 'bar',
data: this.serCount,
itemStyle: {
color: '#51A5DE'
},
barWidth: 20,
barGap: '0',
},
]
}
},
},
}
</script> <style scoped> </style>
springboot+vue+element:echarts开发遇见问题---vue前端(二)的更多相关文章
- vue+element+echarts柱状图+列表
前端由vue+element搭建框架,引入vue和element的index.js和css就可以写页面: 页面和js可以echarts官网实例看下都是有的,主要看下如何动态赋值: 柱状图和列表: &l ...
- springboot+vue+element:echarts开发遇见问题---后端sql(三)
<select id="getSumRequestRankingCount" parameterType="java.lang.String" resul ...
- vue+element+echarts饼状图+可折叠列表
html: <div id="echartsDiv" style="width: 48%; height: 430px; float: left;"> ...
- 基于Springboot+Mybatis+Element UI开发的钢贸供应链系统
小蓝钢贸云供应链系统以销售.采购.库存及财务一体化的设计理念,从供应商到客户的销售流程,实现订单.货物.资金的全面管控,并能对成本进行准确的跟踪与分析,为销售决策提供依据. 基于SpringBoot2 ...
- iOS开发遇见的坑之二:工程文件中插件和自身工程命名冲突
在升级cocoapod后,我重新管理了一下工程,其实也就是把各个类分类进行管理 类似于这样 然后编译就发现不能运行 1.其中一个错误是工程文件缺失,根据提示添加进来进行 2.有一个是pch的相对路径变 ...
- 循序渐进VUE+Element 前端应用开发(23)--- 基于ABP实现前后端的附件上传,图片或者附件展示管理
在我们一般系统中,往往都会涉及到附件的处理,有时候附件是图片文件,有时候是Excel.Word等文件,一般也就是可以分为图片附件和其他附件了,图片附件可以进行裁剪管理.多个图片上传管理,及图片预览操作 ...
- 循序渐进VUE+Element 前端应用开发(28)--- 附件内容的管理
在我们很多模块里面,都需要使用到一些诸如图片.Excel文件.PDF文件等附件的管理,一般我们倾向于把它独立为一个公用的附件管理模块,这样可以有效的统一管理附件的信息.本篇随笔介绍附件内容的管理,包括 ...
- 在基于ABP框架的前端项目Vue&Element项目中采用电子签章处理文件和打印处理
在一些内部OA或者流转的文件,或者给一些客户的报价文件.合同,或者一些医院出示的给保险机构的病历资料等,有时候可能都希望快速的使用电子签章的处理方式来给文件盖上特定的印章,本篇随笔介绍基于Vue&am ...
- 循序渐进VUE+Element 前端应用开发(10)--- 基于vue-echarts处理各种图表展示
在我们做应用系统的时候,往往都会涉及图表的展示,综合的图表展示能够给客户带来视觉的享受和数据直观体验,同时也是增强客户认同感的举措之一.基于图表的处理,我们一般往往都是利用对应第三方的图表组件,然后在 ...
随机推荐
- Java工具-----native2ascii
概述 native2ascii.exe位于%JAVA_HOME/bin目录下,所以要使用,得先安装JDK. 该工具用来将本地编码转换为Unicode,英文字母.阿拉伯数字不会转化. 官方文档:http ...
- JAVA 设计模式之原型模式
目录 JAVA 设计模式之原型模式 简介 Java实现 1.浅拷贝 2.深拷贝 优缺点说明 1.优点 2.缺点 JAVA 设计模式之原型模式 简介 原型模式是六种创建型设计模式之一,主要应用于创建相同 ...
- 使用mock.js进行数据模拟
mock.js的文档真的是无力吐槽,只说明API怎么使用,完全不说明mock.js这个工具怎么用到项目里面,最有意思的是google的大部分文章复制官网的API,不管是react还是Vue都是下面的流 ...
- day 35初识数据库
一.数据库概述 1.什么是数据库?先来看看百度怎么说的. 数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增.截取.更新.删除等操作. 所谓“数据库”系 ...
- C语言用一级指针处理字符串的反思
1.一级指针处理字符串的常见方式 如果使用单个指针,不方便对字符串本身进行操作,只适合遍历. 使用两个指针, 两个指针和字符串大致有两个常见处理方式: (1)两个指针从字符串首部开始向后移动,同时处理 ...
- ubuntu18.04 VirtualBox 开启虚拟机出错 Kernel driver not installed (rc=-1908)
写的很明白了 提示缺少GCC PERL MAKE,安装 重试..... 重启VM 搞定....
- POJ_1679_The Unique MST(次小生成树)
Description Given a connected undirected graph, tell if its minimum spanning tree is unique. Definit ...
- Linux Shell中管道的原理及C实现框架
在shell中我们经常用到管道,有没考虑过Shell是怎么实现管道的呢? cat minicom.log | grep "error" 标准输入.标准输出与管道 我们知道,每一个进 ...
- 20155209 2016-2017-2《Java程序设计》课程总结
20155209 2016-2017-2<Java程序设计>课程总结 预备作业1 刚刚接触Markdown的写法,刚刚接触博客,简单了解娄老师的教学方式. 预备作业2 怎么将学习java像 ...
- 20155235 2016-2017-2《Java程序设计》课程总结
每周作业链接汇总 预备作业一:学期前作业 预备作业二:技能获取与C语言学习情况 预备作业三:安装虚拟机与Linux的学习 第一周作业:20155235 2006-2007-2 <Java程序设计 ...