initSgLineChart() { // 基于DOM,初始化echarts实例(注意!Vue的DOM日怪的很,一般要腾个1秒才加载完) this.lineChart = this.$echarts.init( document.getElementById("sg-line-chart") ); onresize=()=>{ this.lineChart.resize();//当页面大小变化→图标对应变化 } // 绘制折线图(曲线图) this.lineChart.setOption({ grid: { left: 23, top: 30, right: 22, bottom: 10, containLabel: true//false是依据坐标轴来对齐的,true是依据坐标轴上面的文字边界来对齐 }, legend: { top: -2, right: 20, itemGap: 5,//图例每项之间的间隔 height: 10, itemWidth: 15,//图例标记的图形宽度 itemHeight: 10, padding: [5, 0, 0, 0], textStyle: { padding: [1, 0, 0, -5] }, data: [ { name: "实到", textStyle: { color: "#18c196" } }, { name: "迟到", textStyle: { color: "#ff976a" } }, { name: "旷课", textStyle: { color: "#f15441" } }, { name: "请假", textStyle: { color: "#0089ff" } } ] }, xAxis: { type: "category", boundaryGap: false, //防止统计图左侧和纵轴有间隙 axisLabel: { textStyle: { color: "gray" } }, axisTick: { show: false }, //隐藏横坐标刻度小线条 splitLine: { show: true, lineStyle: { color: ["#f0f0f0"] } //纵向分割线 }, axisLine: { lineStyle: { color: "lightgray", width: 1 } }, data: ["7/6", "7/7", "7/8", "7/9", "7/10"]//横坐标的标签文字 }, yAxis: { type: "value", name: "人数/日期", min: 0, minInterval: 1, nameLocation: "end", nameTextStyle: { color: "gray", fontSize: "12" }, axisLabel: { textStyle: { color: "gray" } }, axisTick: { show: false }, //隐藏纵坐标刻度小线条 splitLine: { show: true, lineStyle: { color: ["#f0f0f0"] } //横向分割线 }, axisLine: { lineStyle: { color: "lightgray", width: 1 } } }, series: [ { name: "实到", smooth: false, //平滑 type: "line", symbolSize: 10, //折线拐点大小 data: [41, 51, 55, 58, 49],//纵坐标值 itemStyle: { normal: { color: "#18c196", //图例颜色 borderWidth: 4, borderColor: "#18c196", lineStyle: { color: "#18c196", width: 2 } } }, areaStyle: { normal: { // 渐变填充色(线条下半部分) color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: "#18c196" }, { offset: 1, color: "#18c19600" } ]) } } }, { name: "迟到", smooth: false, //平滑 type: "line", symbolSize: 0, //折线拐点大小 data: [3, 6, 3, 1, 1],//纵坐标值 itemStyle: { normal: { color: "#ff976a", //图例颜色 borderWidth: 2, borderColor: "#ff976a", lineStyle: { color: "#ff976a", width: 1 } } }, areaStyle: { normal: { // 渐变填充色(线条下半部分) color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: "#ff976a" }, { offset: 1, color: "#ff976a00" } ]) } } }, { name: "旷课", smooth: false, //平滑 type: "line", symbolSize: 0, //折线拐点大小 data: [1, 3, 1, 0, 4],//纵坐标值 itemStyle: { normal: { color: "#f15441", //图例颜色 borderWidth: 2, borderColor: "#f15441", lineStyle: { color: "#f15441", width: 1 } } }, areaStyle: { normal: { // 渐变填充色(线条下半部分) color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: "#f15441" }, { offset: 1, color: "#f1544100" } ]) } } }, { name: "请假", smooth: false, //平滑 type: "line", symbolSize: 0, //折线拐点大小 data: [5, 0, 1, 1, 6],//纵坐标值 itemStyle: { normal: { color: "#0089ff", //图例颜色 borderWidth: 2, borderColor: "#0089ff", lineStyle: { color: "#0089ff", width: 1 } } }, areaStyle: { normal: { // 渐变填充色(线条下半部分) color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: "#0089ff" }, { offset: 1, color: "#0089ff00" } ]) } } } ] }); // 点击折线图拐点 this.lineChart.off("click"); //先移除,再点击(这行代码是为了防止重复绑定触发点击事件) this.lineChart.on("click", "series.line", params => { this.$parent.tempData.attendanceTeacher.form = this.form; this.$parent.tempData.attendanceTeacher.query = { KC: this.KC, BJ: this.BJ, RQ: params.name, KCRQFW: this.KCRQFW }; this.$router.push({ path: "/attendanceTeacherHistoryDetail", query: this.$parent.tempData.attendanceTeacher.query }); //折线点点击后,可具体查看本次课程的具体签到情况。 }); },