|
@@ -146,12 +146,13 @@ let programChart = undefined;
|
|
|
const createSex = (list = []) => {
|
|
|
if (!sex.value || !list || list.length == 0) return;
|
|
|
const p = {
|
|
|
- ...config.sexOption
|
|
|
+ ...config.pieOption
|
|
|
};
|
|
|
p.series[0].data = list.map(v => {
|
|
|
return {
|
|
|
name: v.category,
|
|
|
- value: v.ct
|
|
|
+ value: v.ct,
|
|
|
+ selected: true
|
|
|
};
|
|
|
});
|
|
|
sexChart = createChart(sex.value, sex.value.offsetWidth / 2, p, sexChart);
|
|
@@ -159,24 +160,39 @@ const createSex = (list = []) => {
|
|
|
|
|
|
const createAge = (list = []) => {
|
|
|
if (!age.value || !list || list.length == 0) return;
|
|
|
- const keys = [],
|
|
|
- values = [];
|
|
|
- let total = 0;
|
|
|
- for (let i = 0; i < list.length; i++) {
|
|
|
- const v = list[i];
|
|
|
- keys.push(v.category);
|
|
|
- values.push(v.ct);
|
|
|
- total += v.ct;
|
|
|
- }
|
|
|
+ // const keys = [],
|
|
|
+ // values = [];
|
|
|
+ // let total = 0;
|
|
|
+ // for (let i = 0; i < list.length; i++) {
|
|
|
+ // const v = list[i];
|
|
|
+ // keys.push(v.category);
|
|
|
+ // values.push(v.ct);
|
|
|
+ // total += v.ct;
|
|
|
+ // }
|
|
|
+ // const p = {
|
|
|
+ // ...config.ageOption
|
|
|
+ // };
|
|
|
+ // p.series[0].label.formatter = data => formatterLabel(data, total);
|
|
|
+ // p.tooltip.formatter = v => v[0].name + formatterTootip(v, total);
|
|
|
+ // p.yAxis.data = keys;
|
|
|
+ // p.series[0].data = values;
|
|
|
+
|
|
|
const p = {
|
|
|
- ...config.ageOption
|
|
|
+ ...JSON.parse(JSON.stringify(config.pieOption))
|
|
|
};
|
|
|
- p.tooltip.formatter = v => {
|
|
|
- const b = ((v[0].data / total) * 100).toFixed(2);
|
|
|
- return `${v[0].name}: ${numform(v[0].data)} 占比${b}%`;
|
|
|
+ p.series[0].radius = ['40%', '70%'];
|
|
|
+ p.series[0].itemStyle = {
|
|
|
+ borderRadius: 5,
|
|
|
+ borderColor: '#fff',
|
|
|
+ borderWidth: 1
|
|
|
};
|
|
|
- p.yAxis.data = keys;
|
|
|
- p.series[0].data = values;
|
|
|
+ p.series[0].data = list.map(v => {
|
|
|
+ return {
|
|
|
+ name: v.category,
|
|
|
+ value: v.ct,
|
|
|
+ selected: true
|
|
|
+ };
|
|
|
+ });
|
|
|
ageChart = createChart(age.value, age.value.offsetWidth / 2, p, ageChart);
|
|
|
};
|
|
|
|
|
@@ -221,47 +237,44 @@ const createCity = (list = []) => {
|
|
|
tableProData.value = list;
|
|
|
let max = -Infinity,
|
|
|
min = Infinity,
|
|
|
- keys = [],
|
|
|
values = [];
|
|
|
for (let i = 0; i < list.length; i++) {
|
|
|
const v = list[i];
|
|
|
if (v.ct > max) max = v.ct;
|
|
|
if (v.ct < min) min = v.ct;
|
|
|
- keys.push(v.category);
|
|
|
values.push({
|
|
|
name: v.category,
|
|
|
- value: v.ct,
|
|
|
- selected: true
|
|
|
+ value: v.ct
|
|
|
+ // distribution: ((v.ct / t) * 100).toFixed(2) - 0 + '%'
|
|
|
});
|
|
|
}
|
|
|
+
|
|
|
const p = {
|
|
|
...config.cityOption
|
|
|
};
|
|
|
+ p.visualMap.min = min;
|
|
|
+ p.visualMap.max = max;
|
|
|
+ p.tooltip.formatter = data => {
|
|
|
+ if(isNaN(data.value)) return ''
|
|
|
+ return `${data.name}<br/>${numform(data.value)}`
|
|
|
+ };
|
|
|
+ p.visualMap.text = [max, min];
|
|
|
p.series[0].data = values;
|
|
|
cityChart = createChart(city.value, city.value.offsetWidth, p, cityChart);
|
|
|
};
|
|
|
|
|
|
const createPhone = (list = []) => {
|
|
|
if (!phone.value || !list || list.length == 0) return;
|
|
|
- const keys = [],
|
|
|
- values = [];
|
|
|
- let total = 0;
|
|
|
list = list.reverse();
|
|
|
- for (let i = 0; i < list.length; i++) {
|
|
|
- const v = list[i];
|
|
|
- keys.push(v.category);
|
|
|
- values.push(v.ct);
|
|
|
- total += v.ct;
|
|
|
- }
|
|
|
const p = {
|
|
|
...config.phoneOption
|
|
|
};
|
|
|
- p.tooltip.formatter = v => {
|
|
|
- const b = ((v[0].data / total) * 100).toFixed(2);
|
|
|
- return `${v[0].name}: ${numform(v[0].data)} 占比${b}%`;
|
|
|
- };
|
|
|
- p.yAxis.data = keys;
|
|
|
- p.series[0].data = values;
|
|
|
+ p.series[0].data = list.map(v=>{
|
|
|
+ return {
|
|
|
+ value: v.ct,
|
|
|
+ name: v.category
|
|
|
+ }
|
|
|
+ })
|
|
|
phoneChart = createChart(
|
|
|
phone.value,
|
|
|
phone.value.offsetWidth / 2,
|
|
@@ -272,25 +285,16 @@ const createPhone = (list = []) => {
|
|
|
|
|
|
const createCategory = (list = []) => {
|
|
|
if (!category.value || !list || list.length == 0) return;
|
|
|
- const keys = [],
|
|
|
- values = [];
|
|
|
- let total = 0;
|
|
|
list = list.reverse();
|
|
|
- for (let i = 0; i < list.length; i++) {
|
|
|
- const v = list[i];
|
|
|
- keys.push(v.category);
|
|
|
- values.push(v.ct);
|
|
|
- total += v.ct;
|
|
|
- }
|
|
|
const p = {
|
|
|
- ...config.categoryOption
|
|
|
- };
|
|
|
- p.tooltip.formatter = v => {
|
|
|
- const b = ((v[0].data / total) * 100).toFixed(2);
|
|
|
- return `${v[0].name}: ${numform(v[0].data)} 占比${b}%`;
|
|
|
+ ...config.phoneOption
|
|
|
};
|
|
|
- p.yAxis.data = keys;
|
|
|
- p.series[0].data = values;
|
|
|
+ p.series[0].data = list.map(v=>{
|
|
|
+ return {
|
|
|
+ value: v.ct,
|
|
|
+ name: v.category
|
|
|
+ }
|
|
|
+ })
|
|
|
categoryChart = createChart(
|
|
|
category.value,
|
|
|
category.value.offsetWidth / 2,
|