|
@@ -2,196 +2,150 @@
|
|
|
import apiDashboard from "@/api/dashboard/apiDashboard";
|
|
|
|
|
|
export default {
|
|
|
- data() {
|
|
|
- let colors = {
|
|
|
- ownEmployees: ['#178FE6', '#8BCFFF'],
|
|
|
- outsourcingStaff: ['#3CC2AC', '#7EE6D4'],
|
|
|
- visitors: ['#EE8242', '#FFB78D']
|
|
|
- };
|
|
|
- return {
|
|
|
- chart: null,
|
|
|
- show: false,
|
|
|
- option: {
|
|
|
- legend: {
|
|
|
- data: [
|
|
|
- '自有员工',
|
|
|
- '外协员工',
|
|
|
- '访客人员',
|
|
|
- ]
|
|
|
- },
|
|
|
- grid: {
|
|
|
- left: '2%', //默认10%
|
|
|
- right: '3.5%', //默认10%
|
|
|
- bottom: '15%', //默认60
|
|
|
- top: '15%',
|
|
|
- containLabel: true
|
|
|
- //grid区域是否包含坐标轴的刻度标签
|
|
|
- },
|
|
|
- xAxis: {
|
|
|
- data: []
|
|
|
- },
|
|
|
- yAxis: [
|
|
|
- {
|
|
|
- name: '人数(人)',
|
|
|
- type: 'value',
|
|
|
- nameTextStyle: {
|
|
|
- padding: [10, 0, 10, -12]
|
|
|
- },
|
|
|
- },
|
|
|
- ],
|
|
|
- dataZoom: [
|
|
|
- {
|
|
|
- type: 'slider',
|
|
|
- start: 0,
|
|
|
- end: 100,
|
|
|
- height: 12,
|
|
|
- },
|
|
|
- {
|
|
|
- type: 'inside',
|
|
|
- start: 0,
|
|
|
- end: 100,
|
|
|
- }
|
|
|
- ],
|
|
|
- tooltip: {
|
|
|
- trigger: 'axis',
|
|
|
- axisPointer: {
|
|
|
- type: 'shadow'
|
|
|
- },
|
|
|
- textStyle: {
|
|
|
- color: '#fff',
|
|
|
- align: 'left',
|
|
|
- fontSize: 14
|
|
|
- },
|
|
|
- axisLine: {//x坐标轴轴线
|
|
|
- show: true,
|
|
|
- lineStyle: {//x坐标轴轴线样式
|
|
|
- color: '#000',//'#ccc' | 'rgb(128, 128, 128)' | 'rgba(128, 128, 128, 0.5)',设置标签颜色
|
|
|
- }
|
|
|
- },
|
|
|
- backgroundColor: 'rgba(0,0,0,0.8)',
|
|
|
- },
|
|
|
- series: [
|
|
|
- {
|
|
|
- name: '访客人员',
|
|
|
- data: [],
|
|
|
- type: 'line',
|
|
|
- stack: 'x',
|
|
|
- smooth: true,
|
|
|
- showSymbol: false,
|
|
|
- areaStyle: {
|
|
|
- color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
|
|
- offset: 0,
|
|
|
- color: colors.visitors[1] // 0% 处的颜色
|
|
|
- }, {
|
|
|
- offset: 0.8,
|
|
|
- color: '#ffffff' // 100% 处的颜色
|
|
|
- }], false),
|
|
|
- },
|
|
|
- lineStyle: {
|
|
|
- color: colors.visitors[0],
|
|
|
- width: 1,
|
|
|
- },
|
|
|
- itemStyle: {
|
|
|
- color: colors.visitors[0]
|
|
|
- },
|
|
|
- emphasis: {
|
|
|
- scale: 1.5
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- name: '外协员工',
|
|
|
- data: [],
|
|
|
- type: 'line',
|
|
|
- stack: 'x',
|
|
|
- smooth: true,
|
|
|
- showSymbol: false,
|
|
|
- areaStyle: {
|
|
|
- color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
|
|
- offset: 0,
|
|
|
- color: colors.outsourcingStaff[1] // 0% 处的颜色
|
|
|
- }, {
|
|
|
- offset: 0.8,
|
|
|
- color: '#ffffff' // 100% 处的颜色
|
|
|
- }], false),
|
|
|
- },
|
|
|
- lineStyle: {
|
|
|
- color: colors.outsourcingStaff[0],
|
|
|
- width: 1,
|
|
|
- },
|
|
|
- itemStyle: {
|
|
|
- color: colors.outsourcingStaff[0]
|
|
|
- },
|
|
|
- emphasis: {
|
|
|
- scale: 1.5
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- name: '自有员工',
|
|
|
- data: [],
|
|
|
- type: 'line',
|
|
|
- stack: 'x',
|
|
|
- smooth: true,
|
|
|
- showSymbol: false,
|
|
|
- areaStyle: {
|
|
|
- color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
|
|
- offset: 0,
|
|
|
- color: colors.ownEmployees[1] // 0% 处的颜色
|
|
|
- }, {
|
|
|
- offset: 0.8,
|
|
|
- color: '#ffffff' // 100% 处的颜色
|
|
|
- }], false),
|
|
|
- },
|
|
|
- lineStyle: {
|
|
|
- color: colors.ownEmployees[0],
|
|
|
- width: 1,
|
|
|
- },
|
|
|
- itemStyle: {
|
|
|
- color: colors.ownEmployees[0]
|
|
|
- },
|
|
|
- emphasis: {
|
|
|
- scale: 1.5
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- ]
|
|
|
- },
|
|
|
- }
|
|
|
- },
|
|
|
- props: {
|
|
|
- height: Number,
|
|
|
- data: Object,
|
|
|
- queryData: Object,
|
|
|
- },
|
|
|
- mounted() {
|
|
|
- this.$nextTick(() => {
|
|
|
- this.initChart();
|
|
|
- })
|
|
|
- },
|
|
|
- methods: {
|
|
|
- initChart() {
|
|
|
- let chart = this.$echarts.init(this.$refs.myChart)
|
|
|
- this.chart = chart;
|
|
|
- this.$util.chartsResize(this.chart);
|
|
|
- chart.setOption(this.option)
|
|
|
- for (let i = 0; i < 5; i++) {
|
|
|
- setTimeout(function () {
|
|
|
- chart.resize()
|
|
|
- }, 500 * i)
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ loading: false,
|
|
|
+ chart: null,
|
|
|
+ show: false,
|
|
|
+ option: {
|
|
|
+ legend: {
|
|
|
+ data: [
|
|
|
+ '自有员工',
|
|
|
+ '外协员工',
|
|
|
+ '访客人员',
|
|
|
+ ],
|
|
|
+ selected: {
|
|
|
+ '访客人员': false
|
|
|
+ }
|
|
|
+ },
|
|
|
+ grid: {
|
|
|
+ left: '1%', //默认10%
|
|
|
+ right: '1%', //默认10%
|
|
|
+ bottom: '20px', //默认60
|
|
|
+ top: '60px',
|
|
|
+ containLabel: true
|
|
|
+ //grid区域是否包含坐标轴的刻度标签
|
|
|
+ },
|
|
|
+ xAxis: {
|
|
|
+ data: []
|
|
|
+ },
|
|
|
+ yAxis: [
|
|
|
+ {
|
|
|
+ name: '人数(人)',
|
|
|
+ type: 'value',
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ dataZoom: this.$constant.ECHARTS_OPTION_DATAZOOM,
|
|
|
+ tooltip: {
|
|
|
+ trigger: 'axis',
|
|
|
+ axisPointer: {
|
|
|
+ type: 'shadow'
|
|
|
+ },
|
|
|
+ textStyle: {
|
|
|
+ color: '#fff',
|
|
|
+ align: 'left',
|
|
|
+ fontSize: 14
|
|
|
+ },
|
|
|
+ axisLine: {//x坐标轴轴线
|
|
|
+ show: true,
|
|
|
+ lineStyle: {//x坐标轴轴线样式
|
|
|
+ color: '#000',//'#ccc' | 'rgb(128, 128, 128)' | 'rgba(128, 128, 128, 0.5)',设置标签颜色
|
|
|
}
|
|
|
- this.getData()
|
|
|
+ },
|
|
|
+ backgroundColor: 'rgba(0,0,0,0.8)',
|
|
|
},
|
|
|
- getData() {
|
|
|
- return apiDashboard.getPersonEnterSummary(this.queryData).then(res => {
|
|
|
- let data = this.$util.dataUtil.covertDataToEcharts(res, ['visitors', 'outsourcingStaff', 'ownEmployees'])
|
|
|
- this.$util.dataUtil.refreshEchartsData(this.chart, this.option, data)
|
|
|
- })
|
|
|
- }
|
|
|
+ series: [
|
|
|
+ {
|
|
|
+ name: '自有员工',
|
|
|
+ data: [],
|
|
|
+ type: 'line',
|
|
|
+ stack: 'x',
|
|
|
+ smooth: true,
|
|
|
+ showSymbol: false,
|
|
|
+ areaStyle: {},
|
|
|
+ lineStyle: {
|
|
|
+ width: 1,
|
|
|
+ },
|
|
|
+ emphasis: {
|
|
|
+ scale: 1.5
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '外协员工',
|
|
|
+ data: [],
|
|
|
+ type: 'line',
|
|
|
+ stack: 'x',
|
|
|
+ smooth: true,
|
|
|
+ showSymbol: false,
|
|
|
+ areaStyle: {},
|
|
|
+ lineStyle: {
|
|
|
+ width: 1,
|
|
|
+ },
|
|
|
+ emphasis: {
|
|
|
+ scale: 1.5
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '访客人员',
|
|
|
+ data: [],
|
|
|
+ type: 'line',
|
|
|
+ stack: 'x',
|
|
|
+ smooth: true,
|
|
|
+ showSymbol: false,
|
|
|
+ areaStyle: {},
|
|
|
+ lineStyle: {
|
|
|
+ width: 1,
|
|
|
+ },
|
|
|
+ emphasis: {
|
|
|
+ scale: 1.5
|
|
|
+ },
|
|
|
+ },
|
|
|
+
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ }
|
|
|
+ },
|
|
|
+ props: {
|
|
|
+ height: Number,
|
|
|
+ data: Object,
|
|
|
+ queryData: Object,
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.initChart();
|
|
|
+ })
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ initChart() {
|
|
|
+ let chart = this.$echarts.init(this.$refs.myChart, null, {renderer: 'svg'})
|
|
|
+ this.chart = chart;
|
|
|
+ this.$util.chartsResize(this.chart);
|
|
|
+ chart.setOption(this.option)
|
|
|
+ for (let i = 0; i < 5; i++) {
|
|
|
+ setTimeout(function () {
|
|
|
+ chart.resize()
|
|
|
+ }, 500 * i)
|
|
|
+ }
|
|
|
+ this.getData()
|
|
|
+ },
|
|
|
+ getData() {
|
|
|
+ this.loading = true;
|
|
|
+ return apiDashboard.getPersonEnterSummary(this.queryData).then(res => {
|
|
|
+ let data = this.$util.dataUtil.covertDataToEcharts(res, [ 'ownEmployees', 'outsourcingStaff', 'visitors',])
|
|
|
+ this.$util.dataUtil.refreshEchartsData(this.chart, this.option, data)
|
|
|
+ this.loading = false;
|
|
|
+ }).catch(err=>{
|
|
|
+ this.loading = false;
|
|
|
+ })
|
|
|
}
|
|
|
+ }
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
<template>
|
|
|
+ <a-spin :spinning="loading">
|
|
|
<div id="personTrendChart" style="width: 100%" :style="{height: height+'px'}" ref="myChart"></div>
|
|
|
+ </a-spin>
|
|
|
</template>
|
|
|
|
|
|
<style lang="less" scoped>
|