|
@ -0,0 +1,159 @@
|
|
|
|
(function(){
|
|
|
|
Vue.component('line-chart',{
|
|
|
|
template: '<div class="mtb10 bgc-fff c-border pb10">\
|
|
|
|
<div class="ui-grid ui-grid-middle plr10 c-border-b">\
|
|
|
|
<div class="ui-col-0">\
|
|
|
|
<span class="c-333 c-bold c-f14">{{panelName}}</span>\
|
|
|
|
</div>\
|
|
|
|
<div class="ui-col-1 c-t-right ptb5">\
|
|
|
|
<span class="date-tag" :class="{active: selectedDateType == 1}" data-type="1" @click="changeType(1)">日</span><!--\
|
|
|
|
--><span class="date-tag" :class="{active: selectedDateType == 2}" data-type="2" @click="changeType(2)">周</span><!--\
|
|
|
|
--><span class="date-tag" :class="{active: selectedDateType == 3}" data-type="3" @click="changeType(3)">月</span>\
|
|
|
|
</div>\
|
|
|
|
</div>\
|
|
|
|
<div class="clearfix mt5 plr10">\
|
|
|
|
<div class="fl c-f12 c-909090"><span>{{startDate}}</span> ~ <span>{{endDate}}</span>数据</div>\
|
|
|
|
<div class="fr c-f12 c-909090">单位:人</div>\
|
|
|
|
</div>\
|
|
|
|
<div class="line-chart" id="lineChart" style="height: 200px; width: 100%;"></div>\
|
|
|
|
</div>',
|
|
|
|
props:[],
|
|
|
|
data: function(){
|
|
|
|
return {
|
|
|
|
selectedDateType: 1,
|
|
|
|
startDate: "", //数据展示时显示的开始时间
|
|
|
|
endDate: "", //数据展示时显示的结束时间
|
|
|
|
panelName: ""
|
|
|
|
}
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
changeType: function(type){
|
|
|
|
this.selectedDateType = type;
|
|
|
|
//触发页面更新折线图的数据
|
|
|
|
EventBus.$emit("get-line-chart-data", {dateType: type});
|
|
|
|
}
|
|
|
|
},
|
|
|
|
mounted: function(){
|
|
|
|
var vm = this;
|
|
|
|
EventBus.$on("draw-line-chart", function(arg){
|
|
|
|
vm.panelName = arg.panelName;
|
|
|
|
drawLine(vm, arg);
|
|
|
|
})
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
function drawLine(vm, arg){
|
|
|
|
var lineCharts = echarts.init(document.getElementById('lineChart'));
|
|
|
|
var xData = arg.xData,
|
|
|
|
yDatas = arg.yDatas,
|
|
|
|
names = arg.quotaNames,
|
|
|
|
colors = arg.colors;
|
|
|
|
//处理数据, 数据按照10条数一屏展示
|
|
|
|
var lastIndex = xData.length % 10;
|
|
|
|
if(xData.length >10 ){
|
|
|
|
dataZoom_end = 100-(9/xData.length)*100;
|
|
|
|
}else{
|
|
|
|
dataZoom_end = 0;
|
|
|
|
}
|
|
|
|
//初始结束时间
|
|
|
|
var lastValue = xData[xData.length - 1];
|
|
|
|
if(vm.selectedDateType == 1 || vm.selectedDateType == 2){
|
|
|
|
vm.endDate = lastValue;
|
|
|
|
}else if(vm.selectedDateType == 3){
|
|
|
|
var val = lastValue.substr(5,2)+"月"
|
|
|
|
vm.endDate = lastValue.substr(0,4)+"年"+val;
|
|
|
|
}
|
|
|
|
console.log(lastValue);
|
|
|
|
var options = {
|
|
|
|
tooltip: {
|
|
|
|
trigger: 'axis'
|
|
|
|
},
|
|
|
|
color: colors,
|
|
|
|
legend: {
|
|
|
|
bottom: '0px',
|
|
|
|
data: name,
|
|
|
|
borderColor: "#f1f1f1"
|
|
|
|
},
|
|
|
|
grid: {
|
|
|
|
show: false,
|
|
|
|
left: '20px',
|
|
|
|
right: '20px',
|
|
|
|
bottom: '40px',
|
|
|
|
top: '20px',
|
|
|
|
containLabel: true
|
|
|
|
},
|
|
|
|
xAxis: {
|
|
|
|
type: 'category',
|
|
|
|
boundaryGap: false,
|
|
|
|
data: xData,
|
|
|
|
axisLabel: {
|
|
|
|
interval:0,//横轴信息全部显示
|
|
|
|
formatter: function (value, index) {
|
|
|
|
if(vm.selectedDateType == 1 || vm.selectedDateType == 2){
|
|
|
|
if(index == 0){
|
|
|
|
vm.startDate = value;
|
|
|
|
return value.substr(5,2)+"月"+value.substr(8,2);
|
|
|
|
}else{
|
|
|
|
if(index == 9){
|
|
|
|
vm.endDate = value;
|
|
|
|
}
|
|
|
|
return value.substr(8,2);
|
|
|
|
}
|
|
|
|
}else if(vm.selectedDateType == 3){
|
|
|
|
var val = value.substr(5,2)+"月"
|
|
|
|
if(index == 0){
|
|
|
|
vm.startDate = value.substr(0,4)+"年"+val;
|
|
|
|
}else{
|
|
|
|
if(index == 9){
|
|
|
|
vm.endDate = value.substr(0,4)+"年"+val;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return val;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
yAxis: {
|
|
|
|
type: 'value',
|
|
|
|
axisPointer: {
|
|
|
|
snap: true
|
|
|
|
},
|
|
|
|
scale: true,
|
|
|
|
minInterval: 1,
|
|
|
|
boundaryGap: ['10%', '30%'],
|
|
|
|
splitLine: {show:false}
|
|
|
|
},
|
|
|
|
dataZoom: [{//给x轴设置滚动条
|
|
|
|
// show: false,
|
|
|
|
start: dataZoom_end,
|
|
|
|
end: 100,
|
|
|
|
type: 'slider',
|
|
|
|
zoomLock: true,
|
|
|
|
},{ //下面这个属性是内容区域配置
|
|
|
|
start: dataZoom_end,
|
|
|
|
end: 100,
|
|
|
|
type: 'inside',
|
|
|
|
zoomLock: true,
|
|
|
|
}]
|
|
|
|
};
|
|
|
|
var series = [],
|
|
|
|
legend = [];
|
|
|
|
for(var i=0; i<yDatas.length; i++){
|
|
|
|
var obj = {
|
|
|
|
name: name[i],
|
|
|
|
type: 'line',
|
|
|
|
smooth: true,
|
|
|
|
data: yDatas[i],
|
|
|
|
lineStyle:{
|
|
|
|
normal:{
|
|
|
|
color: colors[i]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
series.push(obj);
|
|
|
|
}
|
|
|
|
options.series = series;
|
|
|
|
$("#lineChart").removeAttr('_echarts_instance_')
|
|
|
|
lineCharts.setOption(options);
|
|
|
|
}
|
|
|
|
})()
|