1 export default {
2 Histogram: function () {
3 let data = [
4 {
5 type: '城市1',
6 sales: '20',
7 datsdetail: [‘城市1-1’,‘城市1-1’]
8 },
9 {
10 type: '地市2',
11 sales: 18,
12 datsdetail: ['城市2-1','城市2-2']
13 }
14 ]
15 const config = {
16 data,
17 xField: 'type', //x轴字段
18 yField: 'sales', // y轴字段
19 color:'#5470c6', // 柱子颜色
20 maxColumnWidth: 40, // 柱子宽度
21 minColumnWidth: 40,
22 tooltip: {
23 trigger: 'axis',
24 // triggerOn:'click',
25 axisPointer: {
26 type: 'shadow',
27 },
28 fields: ['type', 'sales', 'datsdetail'],
29 customContent: (title, params) => { // 鼠标移入提示内容
30 if (params[0]) {
31 const { data } = params[0]
32 var result = '';
33 if (data?.datsdetail) {
34 result += `<div style="padding:8px 8px 0 8px">${data.type} <span style="float:right">任务项${data.sales}</span><hr /></div>`
35 data.datsdetail.forEach(function (item, index) {
36 result += `<p style="margin:0;padding:8px;">${index}、${item}</p>`
37 });
38 }
39 return result;
40 }
41
42 }
43 },
44 xAxis: {
45 label: {
46 autoHide: true,
47 autoRotate: true,
48 formatter: function (params) { // x轴的内容太长换行
49 var newParamsName = "";// 最终拼接成的字符串
50 var paramsNameNumber = params.length;// 实际标签的个数
51 var provideNumber = 4;// 每行能显示的字的个数
52 var rowNumber = Math.ceil(paramsNameNumber / provideNumber);// 换行的话,需要显示几行,向上取整
53 /**
54 * 判断标签的个数是否大于规定的个数, 如果大于,则进行换行处理 如果不大于,即等于或小于,就返回原标签
55 */
56 // 条件等同于rowNumber>1
57 if (paramsNameNumber > provideNumber) {
58 /** 循环每一行,p表示行 */
59 for (var p = 0; p < rowNumber; p++) {
60 var tempStr = "";// 表示每一次截取的字符串
61 var start = p * provideNumber;// 开始截取的位置
62 var end = start + provideNumber;// 结束截取的位置
63 // 此处特殊处理最后一行的索引值
64 if (p == rowNumber - 1) {
65 // 最后一次不换行
66 tempStr = params.substring(start, paramsNameNumber);
67 } else {
68 // 每一次拼接字符串并换行
69 tempStr = params.substring(start, end) + "\n";
70 }
71 newParamsName += tempStr;// 最终拼成的字符串
72 }
73
74 } else {
75 // 将旧标签的值赋给新标签
76 newParamsName = params;
77 }
78 //将最终的字符串返回
79 return newParamsName
80 }
81 },
82 },
83 };
84 return <Column {...config} />;
85 }
86 }