diff --git a/src/assets/images/line.png b/src/assets/images/line.png new file mode 100644 index 0000000..3909745 Binary files /dev/null and b/src/assets/images/line.png differ diff --git a/src/assets/styles/index.scss b/src/assets/styles/index.scss index c52e9c8..1635c26 100644 --- a/src/assets/styles/index.scss +++ b/src/assets/styles/index.scss @@ -80,6 +80,9 @@ div:focus { .plr-50 { padding: 0 50px; } +.p10 { + padding: 10px; +} .p15 { padding: 15px; } @@ -220,6 +223,9 @@ aside { .w30 { width: 30%; } +.w40 { + width: 40%; +} .w45 { width: 45%; } diff --git a/src/components/echartsList/bar.vue b/src/components/echartsList/bar.vue index b026129..f844882 100644 --- a/src/components/echartsList/bar.vue +++ b/src/components/echartsList/bar.vue @@ -36,7 +36,7 @@ this.num = Math.floor(Math.random() * 9000); }, mounted() { - console.log('barData=',this.barData); + // console.log('barData=',this.barData); if (this.barData && this.barData.hiddenTime) { this.getList(this.title,this.barData) } @@ -44,13 +44,20 @@ methods: { getList(title, dataXY) { const barDataListIntance = echarts.init(document.getElementById('barChart' + this.num)); - let option = { - title: [{ + let titleSet = {}; + if (dataXY && dataXY.titleVal) { + titleSet = { text: title, - x: '50%', - y: '3%', - textAlign: 'center', - }], + x: dataXY && dataXY.titleVal && dataXY.titleVal.x || '50%', + y: dataXY && dataXY.titleVal && dataXY.titleVal.y || '3%', + textAlign: dataXY && dataXY.titleVal && dataXY.titleVal.textAlign || 'center', + textStyle: { + fontSize: 14 + }, + }; + } + let option = { + title: [titleSet], tooltip: { trigger: 'axis', axisPointer: { @@ -58,7 +65,7 @@ } }, grid: { - top: '20%', + top: dataXY && dataXY.gridTop || '20%', left: '3%', right: '4%', bottom: '3%', @@ -66,17 +73,36 @@ }, xAxis: [ { - type: 'category', - data: dataXY.lineXData, - axisTick: { + type: dataXY && dataXY.yAxis ? 'value' :'category', + data: dataXY && dataXY.yAxis ? [] : dataXY.lineData, + // 去掉x轴线 + axisLine: { show: false }, + // 去掉x轴刻度线 + axisTick: { show: false }, + // 去掉X轴网格线(竖向网格) + splitLine: { show: false }, + // x轴标签样式(保留标签便于阅读) + axisLabel: { show: false - }, + } } ], yAxis: [ { - type: 'value', - name: '单位Mbps' + type: dataXY && dataXY.yAxis ? 'category' :'value', + name: dataXY.name || '单位Mbps', + inverse: true, + // 去掉y轴线 + axisLine: { show: false }, + // 去掉y轴刻度线 + axisTick: { show: false }, + // 去掉y轴网格线(横向网格) + splitLine: { show: false }, + // Y轴标签样式(保留标签便于阅读) + axisLabel: { + show: true + }, + data: dataXY && dataXY.yAxis ? dataXY.lineData : [], } ], series: [ @@ -84,7 +110,11 @@ // name: 'Direct', type: 'bar', barWidth: '60%', - data: dataXY.data + data: dataXY.data, + label: { + show: dataXY && dataXY.seriesLabel || false, + position: 'insideLeft', + } } ] }; @@ -96,7 +126,10 @@ dataChangeValue(val, days) { // console.log(props.chartData(val)); - this.getList(this.title, {data: this.barData.data, lineXData: days}); + // this.getList(this.title, {data: this.barData.data, lineData: days, yAxis: this.barData && this.barData.yAxis}); + let newbarData = {...this.barData}; + newbarData['lineData'] = days; + this.getList(this.title, newbarData); } } } diff --git a/src/components/echartsList/pie.vue b/src/components/echartsList/pie.vue index 845387f..68a87e6 100644 --- a/src/components/echartsList/pie.vue +++ b/src/components/echartsList/pie.vue @@ -35,70 +35,161 @@ methods: { getList(dataList) { const pieDataListIntance = echarts.init(document.getElementById('pieChart' + this.num)); + let titleSet = {}; + if (dataList && dataList.titleVal) { + titleSet = { + show: dataList && dataList.titleVal && dataList.titleVal.show || false, + text: dataList && dataList.titleVal && dataList.titleVal.title || '', + x: dataList && dataList.titleVal && dataList.titleVal.x || '50%', + y: dataList && dataList.titleVal && dataList.titleVal.y || '3%', + textAlign: dataList && dataList.titleVal && dataList.titleVal.textAlign || 'center', + textStyle: { + fontSize: 14 + }, + }; + } let option = { + title: titleSet, color: dataList.color, - // title: [ - // { - // text: `${dataList.centerVal}${dataList.unit}`, - // left: "16%", - // top: "43%", - // textStyle: { - // fontSize: 18, - // fontWeight: "bold", - // color: "#333", - // }, - // } - // ], legend: { - // orient: 'vertical', // 垂直排列 top: 'bottom', // 垂直居中 - // right: 1, // 距离右侧40px itemWidth: 12, // 图例标记宽度 itemHeight: 12, // 图例标记高度 itemGap: 20, // 图例项间距 textStyle: { - fontSize: 14, + fontSize: 12, color: '#333' }, - formatter: function(name) { - // 查找对应数据项 - const item = dataList.data.find(item => item.name === name); - // 返回带数量的图例文本 - return `${name} ${item.value}${dataList.unit}`; - } + // formatter: function(name) { + // // 查找对应数据项 + // const item = dataList.data.find(item => item.name === name); + // // 返回带数量的图例文本 + // return `${name} ${item.value}${dataList.unit}`; + // } }, series: [{ name: 'Access From', type: 'pie', radius: dataList && dataList.radius || ['40%', '70%'], - // center: dataList && dataList.center || ['20%', '50%'], label: { - show: false, - position: 'center' - }, - emphasis: { - label: { - show: false, - } - }, - labelLine: { - show: false + normal: { + show: true, + position: 'center', + color: '#333', + fontSize: 16, + formatter: function () { + // let total = 0; + // for (let i = 0; i < m2R2Data.length; i++) { + // const val = parseFloat(m2R2Data[i].value); + // if (!isNaN(val)) total += val; + // } + return `{value|${dataList.centerVal}}\n{unit|${dataList.lastVal}}`; + }, + rich: { + value: { + fontSize: 24, + fontFamily: 'HarmonyOS Sans SC', + fontweight: 'bold', + color: '#333', + }, + unit: { + fontFamily: 'HarmonyOS Sans SC', + fontSize: 10, + color: '#333', + }, + }, + }, }, data: dataList.data }], - graphic: [{ - type: 'text', - left: 'center', - top: 'middle', - style: { - text: `${dataList.centerVal}${dataList.unit}`, - textBaseline: 'middle', - textAlign: 'center', - fontSize: 20, - fill: '#333' - } - }], + // graphic: [{ + // type: 'text', + // left: 'center', + // top: 'middle', + // style: { + // text: `${dataList.centerVal}\n${dataList.lastVal}`, + // textBaseline: 'middle', + // textAlign: 'center', + // fontSize: 20, + // fill: '#333' + // } + // }], }; + // let option = { + // title: { + // text: '{a|' + Math.round((dataList.value * 100) / dataList.total) + '%}\n{b|' + dataList.lastVal + '}', // 显示标题 + // show: true, // 是否显示 + // x: 'center', // x轴位置 + // y: 'center', // y轴位置 + // textStyle: { // 样式配置 + // rich: { + // a: { + // fontSize: 24, // 字体大小 + // color: '#333333', // 字体颜色 + // padding: [0, 0, 5, 0], // 边距 + // }, + // b: { + // fontSize: 14, // 字体大小 + // color: '#808080', // 字体颜色 + // }, + // }, + // }, + // }, + // angleAxis: { + // max: dataList.total, + // clockwise: false, // 逆时针 + // // 隐藏刻度线 + // show: false, + // // 开始的角度 + // startAngle: 180 + // }, + // radiusAxis: { + // type: 'category', + // show: true, + // axisLabel: { + // show: false, // 是否显示标签 + // }, + // axisLine: { + // show: false, // 是否显示轴线 + // }, + // axisTick: { + // show: false, // 是否显示刻度 + // }, + // }, + // polar: [ + // { + // radius: ['54%', '66%'] //图形大小 + // } + // ], + // series: [ + // { + // type: 'bar', + // z: 10, + // data: [dataList.value], // 数据 + // coordinateSystem: 'polar', // 坐标 + // roundCap: true, // 是否在环形柱条两侧使用圆弧效果 + // barWidth: 20, // 大的占比环 + // itemStyle: { // 图形样式 + // normal: { + // color: "#2A91D9", + // } + // } + // }, + // { + // type: 'pie', + // name: '内层细圆环', + // radius: ['55%', '65%'], // 饼图的半径 + // hoverAnimation: false, // 悬浮突出 + // itemStyle: { // 图形样式 + // color: "#DFE0EF", // 颜色 + // }, + // label: { + // show: false // 是否显示 + // }, + // data: [dataList.total] + // } + // ] + // }; pieDataListIntance.setOption(option); // window.addEventListener("resize", () => { // pieDataListIntance.resize() diff --git a/src/components/table/index.vue b/src/components/table/index.vue index 8d2917c..6f4e4a3 100644 --- a/src/components/table/index.vue +++ b/src/components/table/index.vue @@ -11,7 +11,7 @@ - +