lambo-design-bi 0.0.166 → 0.0.168

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <LamboChartsFactory :height="height" :type="chartsType" :data-x="dataX" :data-y="dataY" :data-dim="dataDim">
2
+ <LamboChartsFactory v-if="dataX" :height="height" :type="chartsType" :data-x="dataX" :data-y="dataY" :data-dim="dataDim">
3
3
  </LamboChartsFactory>
4
4
  </template>
5
5
  <script>
@@ -89,6 +89,7 @@ export function convertChartsData(rows, columns) {
89
89
  rootArr.push(dimDataArr)
90
90
  }
91
91
  } else {
92
+ let dimDataArr = []
92
93
  for (let i = 0; i < dataX.length; i++) {
93
94
  let bizV = dataX[i]
94
95
  // 遍历数据
@@ -96,11 +97,12 @@ export function convertChartsData(rows, columns) {
96
97
  let rowData = rows[k]
97
98
  if (rowData && Object.prototype.hasOwnProperty.call(rowData, xKey) &&
98
99
  bizV === rowData[xKey]) {
99
- rootArr.push(rowData[yKey])
100
+ dimDataArr.push(rowData[yKey])
100
101
  break
101
102
  }
102
103
  }
103
104
  }
105
+ rootArr.push(dimDataArr)
104
106
  }
105
107
  dataY = rootArr
106
108
  }
@@ -111,7 +113,7 @@ export function convertChartsData(rows, columns) {
111
113
  dataY = [...dataYSet]
112
114
  let dataDimSet = new Set(dArr)
113
115
  dataDim = [...dataDimSet]
114
-
116
+ console.log(`dataY:${dataY},dataDim:${dataDim}`)
115
117
  if (dataDim && dataDim.length > 0) {
116
118
  for (let i = 0; i < dataY.length; i++) {
117
119
  let bizV = dataY[i]
@@ -132,6 +134,7 @@ export function convertChartsData(rows, columns) {
132
134
  rootArr.push(dimDataArr)
133
135
  }
134
136
  } else {
137
+ let dimDataArr = []
135
138
  for (let i = 0; i < dataY.length; i++) {
136
139
  let bizV = dataY[i]
137
140
  // 遍历数据
@@ -139,11 +142,12 @@ export function convertChartsData(rows, columns) {
139
142
  let rowData = rows[k]
140
143
  if (Object.prototype.hasOwnProperty.call(rowData, yKey) &&
141
144
  bizV === rowData[yKey]) {
142
- rootArr.push(rowData[xKey])
145
+ dimDataArr.push(rowData[xKey])
143
146
  break
144
147
  }
145
148
  }
146
149
  }
150
+ rootArr.push(dimDataArr)
147
151
  }
148
152
  }
149
153
  dataX = rootArr
@@ -40,7 +40,7 @@ export default {
40
40
  this.$set(this.tableSearchParams, 'inJson', this.params)
41
41
  },
42
42
  goDetail(routerName, pageId, row) {
43
- let parentPageId = this.widget.options.rootId || ''
43
+ let parentPageId = this.widget.rootId || ''
44
44
  let newQuery = Object.assign({}, this.params, row);
45
45
  newQuery['pageId'] = pageId
46
46
  newQuery['parentPageId'] = parentPageId
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lambo-design-bi",
3
- "version": "0.0.166",
3
+ "version": "0.0.168",
4
4
  "description": "Vue2 BI 数据可视化组件库",
5
5
  "main": "index.js",
6
6
  "author": "finch",
@@ -1088,10 +1088,12 @@ export function getECharts(type, dataX, dataY, dataDim) {
1088
1088
  if (type === '30') {
1089
1089
  let newArry = [];
1090
1090
  for (let i = 0; i < dataY.length; i++) {
1091
- newArry.push({
1092
- 'name': dataX[i],
1093
- 'value': dataY[i],
1094
- });
1091
+ for (let j = 0; j < dataY[i].length; j++) {
1092
+ newArry.push({
1093
+ 'name': dataX[i],
1094
+ 'value': dataY[i][j],
1095
+ })
1096
+ }
1095
1097
  }
1096
1098
  opt = {
1097
1099
  backgroundColor: '#fff',
@@ -1200,14 +1202,14 @@ export function getECharts(type, dataX, dataY, dataDim) {
1200
1202
  let colorList = [];
1201
1203
 
1202
1204
  // 将 dataY 转换为带索引的排序数组
1203
- let sortedIndices = dataY.map((_, index) => index)
1204
- .sort((a, b) => dataY[b] - dataY[a]); // 根据 dataX 的值降序排列
1205
+ let sortedIndices = dataY[0].map((_, index) => index)
1206
+ .sort((a, b) => dataY[0][b] - dataY[0][a]); // 根据 dataX 的值降序排列
1205
1207
 
1206
1208
  for (let i = 0; i < sortedIndices.length; i++) {
1207
1209
  const index = sortedIndices[i];
1208
1210
  colorList.push(colors[(i + 1) % colors.length]);
1209
1211
  datas.push({
1210
- value: dataY[index],
1212
+ value: dataY[0][index],
1211
1213
  name: dataX[index], // 获取对应的 dataX 值
1212
1214
  });
1213
1215
  }
@@ -1230,9 +1232,9 @@ export function getECharts(type, dataX, dataY, dataDim) {
1230
1232
  let total = 0;
1231
1233
  let tarValue;
1232
1234
  for (let i = 0, l = dataX.length; i < l; i++) {
1233
- total += dataY[i];
1235
+ total += dataY[0][i];
1234
1236
  if (dataX[i] === name) {
1235
- tarValue = dataY[i];
1237
+ tarValue = dataY[0][i];
1236
1238
  }
1237
1239
  }
1238
1240
  let p;
@@ -1284,15 +1286,15 @@ export function getECharts(type, dataX, dataY, dataDim) {
1284
1286
  let colorList = [];
1285
1287
  let radius = ['40%', '60%']; // 控制饼块粗细的半径范围
1286
1288
  let prevAngle = 0; // 初始角度
1287
- let sortedIndices = dataY.map((_, index) => index)
1288
- .sort((a, b) => dataY[b] - dataY[a]); // 根据dataY的值进行降序排序并获取索引
1289
+ let sortedIndices = dataY[0].map((_, index) => index)
1290
+ .sort((a, b) => dataY[0][b] - dataY[0][a]); // 根据dataY的值进行降序排序并获取索引
1289
1291
 
1290
1292
  for (let i = 0; i < sortedIndices.length; i++) {
1291
1293
  const index = sortedIndices[i];
1292
1294
  colorList.push(colors[(i + 1) % colors.length]);
1293
- total += dataY[index]; // 使用排序后的数据
1295
+ total += dataY[0][index]; // 使用排序后的数据
1294
1296
  datas.push({
1295
- value: dataY[index], // 使用排序后的数据
1297
+ value: dataY[0][index], // 使用排序后的数据
1296
1298
  name: dataX[index], // 获取对应的dataY值
1297
1299
  });
1298
1300
  }
@@ -1317,9 +1319,9 @@ export function getECharts(type, dataX, dataY, dataDim) {
1317
1319
  let total = 0;
1318
1320
  let tarValue;
1319
1321
  for (let i = 0, l = dataX.length; i < l; i++) {
1320
- total += dataY[i];
1322
+ total += dataY[0][i];
1321
1323
  if (dataX[i] === name) {
1322
- tarValue = dataY[i];
1324
+ tarValue = dataY[0][i];
1323
1325
  }
1324
1326
  }
1325
1327
  let p;
@@ -1389,12 +1391,12 @@ export function getECharts(type, dataX, dataY, dataDim) {
1389
1391
  else if (type === '33') {
1390
1392
  let data = []
1391
1393
  let sum = 0
1392
- for (let i = 0; i < dataY.length; i++) {
1394
+ for (let i = 0; i < dataY[0].length; i++) {
1393
1395
  data.push({
1394
1396
  name: dataX[i],
1395
- value: dataY[i]
1397
+ value: dataY[0][i]
1396
1398
  })
1397
- sum += dataY[i]
1399
+ sum += dataY[0][i]
1398
1400
  }
1399
1401
 
1400
1402
  opt = {
@@ -1435,10 +1437,10 @@ export function getECharts(type, dataX, dataY, dataDim) {
1435
1437
  if (sum === 0) {
1436
1438
  p = 0
1437
1439
  } else {
1438
- p = (accMul(accDiv(dataY[i], sum), 100)).toFixed(2)
1440
+ p = (accMul(accDiv(dataY[0][i], sum), 100)).toFixed(2)
1439
1441
  }
1440
1442
  if (dataX[i] === name) {
1441
- var tarValue = dataY[i]
1443
+ var tarValue = dataY[0][i]
1442
1444
  var showName = name.length > 5 ? name.substr(0, 5) + '...' : name
1443
1445
  var showValue = tarValue.length > 6 ? tarValue.substr(0, 6) + '...' : tarValue
1444
1446
  return '{a|' + showName + '}' + '{b|' + p + '%}' + '{c|' + showValue + '}'
@@ -1478,10 +1480,10 @@ export function getECharts(type, dataX, dataY, dataDim) {
1478
1480
  if (sum === 0) {
1479
1481
  p = 0
1480
1482
  } else {
1481
- p = (accMul(accDiv(dataY[i], sum), 100)).toFixed(2)
1483
+ p = (accMul(accDiv(dataY[0][i], sum), 100)).toFixed(2)
1482
1484
  }
1483
1485
  if (dataX[i] === item.name) {
1484
- return item.name + ':<br/>' + p + '%' + '<br/>' + dataY[i]
1486
+ return item.name + ':<br/>' + p + '%' + '<br/>' + dataY[0][i]
1485
1487
  }
1486
1488
  }
1487
1489
  },
@@ -1511,10 +1513,10 @@ export function getECharts(type, dataX, dataY, dataDim) {
1511
1513
  }
1512
1514
  else if (type === '34') {
1513
1515
  let newArry = [];
1514
- for (let i = 0; i < dataY.length; i++) {
1516
+ for (let i = 0; i < dataY[0].length; i++) {
1515
1517
  newArry.push({
1516
1518
  'name': dataX[i],
1517
- 'value': dataY[i],
1519
+ 'value': dataY[0][i],
1518
1520
  });
1519
1521
  }
1520
1522
  opt = {
@@ -1642,12 +1644,12 @@ export function getECharts(type, dataX, dataY, dataDim) {
1642
1644
  let total = 0;
1643
1645
  let datas = [];
1644
1646
  let colorList = [];
1645
- for (let i = 0; i < dataY.length; i++) {
1647
+ for (let i = 0; i < dataY[0].length; i++) {
1646
1648
  colorList.push(colors[(i + 1) % colors.length]);
1647
- total += dataY[i];
1649
+ total += dataY[0][i];
1648
1650
  var showName = dataX[i].length > 5 ? dataX[i].substr(0, 5) + '...' : dataX[i]
1649
1651
  datas.push({
1650
- value: dataY[i],
1652
+ value: dataY[0][i],
1651
1653
  name: showName,
1652
1654
  })
1653
1655
  }
@@ -1683,12 +1685,12 @@ export function getECharts(type, dataX, dataY, dataDim) {
1683
1685
  if (name !== null && name !== "" && name !== "__other") {
1684
1686
  let total = 0;
1685
1687
  let tarValue;
1686
- for (let i = 0, l = dataY.length; i < l; i++) {
1687
- total += dataY[i];
1688
+ for (let i = 0, l = dataY[0].length; i < l; i++) {
1689
+ total += dataY[0][i];
1688
1690
  var showName = dataX[i].length > 5 ? dataX[i].substr(0, 5) + '...' : dataX[i]
1689
1691
 
1690
1692
  if (showName === name) {
1691
- tarValue = dataY[i];
1693
+ tarValue = dataY[0][i];
1692
1694
  }
1693
1695
  }
1694
1696
  let p;
@@ -1735,15 +1737,15 @@ export function getECharts(type, dataX, dataY, dataDim) {
1735
1737
  }
1736
1738
  }
1737
1739
  else if (type === '36') {
1738
- let sum = dataY.reduce((a, b) => a + b);
1740
+ let sum = dataY[0].reduce((a, b) => a + b);
1739
1741
  let pieSeries = [];
1740
1742
  let showBackground = false;//是否显示圆环条形背景,true显示,false不显示
1741
1743
  let barOut = 65, barIn = 62, barBroad = 4;//控制圆环条宽度 barOut - barIn = 圆环条宽度,barBroad - 圆环条宽度 = 圆环条间距
1742
- if (dataY.length <= 7) {//根据数据量选择合适的宽度,7条及以下数据将放宽圆环条
1744
+ if (dataY[0].length <= 7) {//根据数据量选择合适的宽度,7条及以下数据将放宽圆环条
1743
1745
  barOut = 65;
1744
1746
  barIn = 58;
1745
1747
  barBroad = 8;
1746
- } else if (dataY.length >= 14) {
1748
+ } else if (dataY[0].length >= 14) {
1747
1749
  barOut = 65;
1748
1750
  barIn = 63;
1749
1751
  barBroad = 3;
@@ -1761,11 +1763,11 @@ export function getECharts(type, dataX, dataY, dataDim) {
1761
1763
  show: false
1762
1764
  },
1763
1765
  data: [{
1764
- value: dataY[index] * dataX.length,
1766
+ value: dataY[0][index] * dataX.length,
1765
1767
  name: name
1766
1768
  },
1767
1769
  {
1768
- value: sum - dataY[index],
1770
+ value: sum - dataY[0][index],
1769
1771
  name: name,
1770
1772
  itemStyle: {
1771
1773
  normal: {
@@ -1845,10 +1847,10 @@ export function getECharts(type, dataX, dataY, dataDim) {
1845
1847
  formatter: function (name) {
1846
1848
  let total = 0;
1847
1849
  let tarValue;
1848
- for (let i = 0, l = dataY.length; i < l; i++) {
1849
- total += dataY[i];
1850
+ for (let i = 0, l = dataY[0].length; i < l; i++) {
1851
+ total += dataY[0][i];
1850
1852
  if (dataX[i] === name) {
1851
- tarValue = dataY[i];
1853
+ tarValue = dataY[0][i];
1852
1854
  }
1853
1855
  }
1854
1856
  let p;
@@ -1882,15 +1884,15 @@ export function getECharts(type, dataX, dataY, dataDim) {
1882
1884
  };
1883
1885
  }
1884
1886
  else if (type === '37') {
1885
- let sum = dataY.reduce((a, b) => a + b);
1887
+ let sum = dataY[0].reduce((a, b) => a + b);
1886
1888
  let pieSeries = [];
1887
1889
  let showBackground = true;//是否显示圆环条形背景,true显示,false不显示
1888
1890
  let barOut = 85, barIn = 82, barBroad = 4;//控制圆环条宽度 barOut - barIn = 圆环条宽度,barBroad - 圆环条宽度 = 圆环条间距
1889
- if (dataY.length <= 7) {//根据数据量选择合适的宽度,7条及以下数据将放宽圆环条
1891
+ if (dataY[0].length <= 7) {//根据数据量选择合适的宽度,7条及以下数据将放宽圆环条
1890
1892
  barOut = 85;
1891
1893
  barIn = 78;
1892
1894
  barBroad = 8;
1893
- } else if (dataY.length >= 14) {
1895
+ } else if (dataY[0].length >= 14) {
1894
1896
  barOut = 85;
1895
1897
  barIn = 83;
1896
1898
  barBroad = 3;
@@ -1909,7 +1911,7 @@ export function getECharts(type, dataX, dataY, dataDim) {
1909
1911
  show: false
1910
1912
  },
1911
1913
  data: [{
1912
- value: dataY[index],
1914
+ value: dataY[0][index],
1913
1915
  name: name
1914
1916
  },
1915
1917
  {
@@ -2026,10 +2028,10 @@ export function getECharts(type, dataX, dataY, dataDim) {
2026
2028
  if (name !== null && name !== "" && name !== "__other") {
2027
2029
  let total = 0;
2028
2030
  let tarValue;
2029
- for (let i = 0, l = dataY.length; i < l; i++) {
2030
- total += dataY[i];
2031
+ for (let i = 0, l = dataY[0].length; i < l; i++) {
2032
+ total += dataY[0][i];
2031
2033
  if (dataX[i] === name) {
2032
- tarValue = dataY[i];
2034
+ tarValue = dataY[0][i];
2033
2035
  }
2034
2036
  }
2035
2037
  let p;
@@ -2074,8 +2076,8 @@ export function getECharts(type, dataX, dataY, dataDim) {
2074
2076
  }
2075
2077
  else if (type === '40' || type === '41' || type === '42' || type === '43') {
2076
2078
  if (type === '40') {
2077
- const sortedDataX = dataY.slice().sort((a, b) => a - b);
2078
- let total = dataY.reduce((a, b) => a + b);
2079
+ const sortedDataX = dataY[0].slice().sort((a, b) => a - b);
2080
+ let total = dataY[0].reduce((a, b) => a + b);
2079
2081
  opt = {
2080
2082
  backgroundColor: '#fff',
2081
2083
  color: colors,
@@ -2086,7 +2088,7 @@ export function getECharts(type, dataX, dataY, dataDim) {
2086
2088
  bottom: "10%",
2087
2089
  selectedMode: true,
2088
2090
  data: dataX.map((name, index) => {
2089
- const value = dataY[index];
2091
+ const value = dataY[0][index];
2090
2092
  let p;
2091
2093
  if (total === 0) {
2092
2094
  p = 0
@@ -2143,19 +2145,19 @@ export function getECharts(type, dataX, dataY, dataDim) {
2143
2145
  fontSize: 20
2144
2146
  }
2145
2147
  },
2146
- data: dataY.map((value, index) => {
2148
+ data: dataY[0].map((value, index) => {
2147
2149
  const rank = sortedDataX.indexOf(value) + 1;
2148
2150
  let p;
2149
- if (dataY.reduce((a, b) => a + b) === 0) {
2151
+ if (dataY[0].reduce((a, b) => a + b) === 0) {
2150
2152
  p = 0
2151
2153
  } else {
2152
- p = (accMul(accDiv(value, dataY.reduce((a, b) => a + b)), 100)).toFixed(2)
2154
+ p = (accMul(accDiv(value, dataY[0].reduce((a, b) => a + b)), 100)).toFixed(2)
2153
2155
  }
2154
2156
  let d;
2155
- if (dataY.reduce((a, b) => a + b)) {
2157
+ if (dataY[0].reduce((a, b) => a + b)) {
2156
2158
  d = 0
2157
2159
  } else {
2158
- d = (accMul(accDiv(value, dataY.reduce((a, b) => a + b)), 100)).toFixed(2)
2160
+ d = (accMul(accDiv(value, dataY[0].reduce((a, b) => a + b)), 100)).toFixed(2)
2159
2161
  }
2160
2162
  return {
2161
2163
  value: rank * 60,
@@ -2214,7 +2216,7 @@ export function getECharts(type, dataX, dataY, dataDim) {
2214
2216
  }
2215
2217
  },
2216
2218
  levels: getLevelOption(),
2217
- data: generateTestData(dataX, dataY)
2219
+ data: generateTestData(dataX, dataY[0])
2218
2220
  }]
2219
2221
  }
2220
2222
  }
package/util/math-util.js CHANGED
@@ -1,34 +1,41 @@
1
1
  //js除法计算
2
2
  export function accDiv(arg1, arg2) {
3
- let t1 = 0, t2 = 0, r1, r2;
4
- try {
5
- t1 = arg1.toString().split(".")[1].length
6
- } catch (e) {
7
- console.error('accDiv:', e)
3
+ if (arg2 === 0) {
4
+ throw new Error('Division by zero');
8
5
  }
9
- try {
10
- t2 = arg2.toString().split(".")[1].length
11
- } catch (e) {
12
- console.error('accDiv:', e)
6
+
7
+ let t1 = 0, t2 = 0;
8
+ const str1 = arg1.toString();
9
+ const str2 = arg2.toString();
10
+
11
+ // 处理arg1的小数位
12
+ if (str1.includes('.')) {
13
+ t1 = str1.split('.')[1].length;
14
+ }
15
+
16
+ // 处理arg2的小数位
17
+ if (str2.includes('.')) {
18
+ t2 = str2.split('.')[1].length;
13
19
  }
14
- r1 = Number(arg1.toString().replace(".", ""))
15
- r2 = Number(arg2.toString().replace(".", ""))
20
+
21
+ const r1 = Number(str1.replace('.', ''));
22
+ const r2 = Number(str2.replace('.', ''));
23
+
16
24
  return (r1 / r2) * Math.pow(10, t2 - t1);
17
25
  }
18
26
 
19
27
  //js乘法计算
20
28
  export function accMul(arg1, arg2) {
21
29
  let m = 0, s1 = arg1.toString(), s2 = arg2.toString();
22
- try {
23
- m += s1.split(".")[1].length
24
- } catch (e) {
25
- console.error('accMul:', e)
30
+
31
+ // 安全地获取小数位数
32
+ if (s1.includes('.')) {
33
+ m += s1.split(".")[1].length;
26
34
  }
27
- try {
28
- m += s2.split(".")[1].length
29
- } catch (e) {
30
- console.error('accMul:', e)
35
+ if (s2.includes('.')) {
36
+ m += s2.split(".")[1].length;
31
37
  }
38
+
32
39
  return accDiv(Number(s1.replace(".", "")) * Number(s2.replace(".", "")), Math.pow(10, m));
33
40
  }
34
41