|
|
@@ -111,19 +111,32 @@
|
|
|
|
|
|
switch (column.property) {
|
|
|
case 'badRate': {
|
|
|
- // 不良率计算平均值
|
|
|
- const validValues = values.filter(
|
|
|
- (value) => value && !isNaN(value)
|
|
|
- );
|
|
|
- if (validValues.length > 0) {
|
|
|
- const sum = validValues.reduce(
|
|
|
- (prev, curr) => prev + curr,
|
|
|
- 0
|
|
|
- );
|
|
|
- sums[index] =
|
|
|
- (sum / validValues.length).toFixed(2) + '%';
|
|
|
+ // 不良率 = 品相极差总数 / 录入书籍总数
|
|
|
+ const totalBadValues = data.map((item) => Number(item.totalBadNum || 0));
|
|
|
+ const totalNumValues = data.map((item) => Number(item.totalNum || 0));
|
|
|
+
|
|
|
+ const totalBadSum = totalBadValues.reduce((prev, curr) => {
|
|
|
+ const value = Number(curr);
|
|
|
+ if (!isNaN(value)) {
|
|
|
+ return prev + value;
|
|
|
+ } else {
|
|
|
+ return prev;
|
|
|
+ }
|
|
|
+ }, 0);
|
|
|
+
|
|
|
+ const totalNumSum = totalNumValues.reduce((prev, curr) => {
|
|
|
+ const value = Number(curr);
|
|
|
+ if (!isNaN(value)) {
|
|
|
+ return prev + value;
|
|
|
+ } else {
|
|
|
+ return prev;
|
|
|
+ }
|
|
|
+ }, 0);
|
|
|
+
|
|
|
+ if (totalNumSum > 0) {
|
|
|
+ sums[index] = ((totalBadSum / totalNumSum) * 100).toFixed(2) + '%';
|
|
|
} else {
|
|
|
- sums[index] = '';
|
|
|
+ sums[index] = '0.00%';
|
|
|
}
|
|
|
break;
|
|
|
}
|