|
|
@@ -27,6 +27,14 @@
|
|
|
{{ scope.row.validAmount ? scope.row.validAmount.toFixed(2) : '0.00' }}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
+
|
|
|
+ <el-table-column prop="totalOfflineCalls" label="线下单数" min-width="40" align="center"></el-table-column>
|
|
|
+ <el-table-column prop="totalOfflineAmount" label="线下支付金额" min-width="70" align="center">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ scope.row.totalOfflineAmount ? scope.row.totalOfflineAmount.toFixed(2) : '0.00' }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
<el-table-column prop="waitingOrders" label="待审数" min-width="40" align="center"></el-table-column>
|
|
|
<el-table-column prop="waitingAmount" label="待审金额" min-width="70" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
@@ -120,11 +128,11 @@ export default {
|
|
|
if (!this.tableData || this.tableData.length === 0) {
|
|
|
return [];
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 按部门分组数据处理逻辑
|
|
|
const result = [];
|
|
|
const deptMap = new Map();
|
|
|
-
|
|
|
+
|
|
|
// 分组数据
|
|
|
this.tableData.forEach(item => {
|
|
|
const deptName = item.groupName || '未分配部门';
|
|
|
@@ -133,7 +141,7 @@ export default {
|
|
|
}
|
|
|
deptMap.get(deptName).push(item);
|
|
|
});
|
|
|
-
|
|
|
+
|
|
|
// 构建展示数据
|
|
|
for (const [deptName, employees] of deptMap) {
|
|
|
// 部门标题行
|
|
|
@@ -142,21 +150,21 @@ export default {
|
|
|
isGroup: true,
|
|
|
isDeptTitle: true
|
|
|
});
|
|
|
-
|
|
|
+
|
|
|
// 员工数据行
|
|
|
employees.forEach(emp => {
|
|
|
result.push({ ...emp });
|
|
|
});
|
|
|
-
|
|
|
+
|
|
|
// 部门小计行
|
|
|
const deptSummary = this.calculateDeptSummary(employees, deptName);
|
|
|
result.push(deptSummary);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 添加总计行
|
|
|
const totalSummary = this.calculateTotalSummary();
|
|
|
result.push(totalSummary);
|
|
|
-
|
|
|
+
|
|
|
return result;
|
|
|
}
|
|
|
},
|
|
|
@@ -176,7 +184,7 @@ export default {
|
|
|
};
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 部门小计行合并
|
|
|
if (row.isDeptSummary) {
|
|
|
if (columnIndex === 0) {
|
|
|
@@ -186,7 +194,7 @@ export default {
|
|
|
// 其他列正常显示数据
|
|
|
return [1, 1];
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 总计行合并
|
|
|
if (row.isTotalSummary) {
|
|
|
if (columnIndex === 0) {
|
|
|
@@ -196,7 +204,7 @@ export default {
|
|
|
// 其他列正常显示数据
|
|
|
return [1, 1];
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 普通行
|
|
|
return [1, 1];
|
|
|
},
|
|
|
@@ -207,17 +215,17 @@ export default {
|
|
|
isGroup: true,
|
|
|
isDeptSummary: true
|
|
|
};
|
|
|
-
|
|
|
- const sumFields = ['totalCalls', 'totalAmount', 'validAmount', 'waitingOrders', 'waitingAmount',
|
|
|
+
|
|
|
+ const sumFields = ['totalCalls', 'totalAmount', 'validAmount','totalOfflineCalls','totalOfflineAmount', 'waitingOrders', 'waitingAmount',
|
|
|
'unPassedOrders', 'unPassedAmount', 'cancelOrders', 'cancelAmount', 'completeOrders',
|
|
|
'completeAmount', 'unshippedOrders', 'unshippedAmount', 'shippedOrders', 'shippedAmount',
|
|
|
'transitOrders', 'transitAmount', 'receivedOrders', 'receivedAmount', 'returnOrders',
|
|
|
'returnAmount', 'paybackOrders', 'paybackAmount'];
|
|
|
-
|
|
|
+
|
|
|
sumFields.forEach(field => {
|
|
|
summary[field] = employees.reduce((sum, emp) => sum + (Number(emp[field]) || 0), 0);
|
|
|
});
|
|
|
-
|
|
|
+
|
|
|
return summary;
|
|
|
},
|
|
|
// 计算总计
|
|
|
@@ -227,20 +235,20 @@ export default {
|
|
|
isGroup: true,
|
|
|
isTotalSummary: true
|
|
|
};
|
|
|
-
|
|
|
- const sumFields = ['totalCalls', 'totalAmount', 'validAmount', 'waitingOrders', 'waitingAmount',
|
|
|
+
|
|
|
+ const sumFields = ['totalCalls', 'totalAmount', 'validAmount','totalOfflineCalls','totalOfflineAmount', 'waitingOrders', 'waitingAmount',
|
|
|
'unPassedOrders', 'unPassedAmount', 'cancelOrders', 'cancelAmount', 'completeOrders',
|
|
|
'completeAmount', 'unshippedOrders', 'unshippedAmount', 'shippedOrders', 'shippedAmount',
|
|
|
'transitOrders', 'transitAmount', 'receivedOrders', 'receivedAmount', 'returnOrders',
|
|
|
'returnAmount', 'paybackOrders', 'paybackAmount'];
|
|
|
-
|
|
|
+
|
|
|
// 从原始数据计算总计(排除部门标题和小计行)
|
|
|
const validData = this.tableData.filter(item => !item.isGroup);
|
|
|
-
|
|
|
+
|
|
|
sumFields.forEach(field => {
|
|
|
summary[field] = validData.reduce((sum, item) => sum + (Number(item[field]) || 0), 0);
|
|
|
});
|
|
|
-
|
|
|
+
|
|
|
return summary;
|
|
|
}
|
|
|
}
|
|
|
@@ -254,4 +262,17 @@ export default {
|
|
|
color: #333;
|
|
|
margin-bottom: 10px;
|
|
|
}
|
|
|
-</style>
|
|
|
+
|
|
|
+/* 使用 ::v-deep 穿透 scoped 作用域 */
|
|
|
+::v-deep .el-table {
|
|
|
+ font-size: 12px !important;
|
|
|
+}
|
|
|
+
|
|
|
+::v-deep .el-table th {
|
|
|
+ font-size: 11px !important;
|
|
|
+}
|
|
|
+
|
|
|
+::v-deep .el-table td {
|
|
|
+ font-size: 12px !important;
|
|
|
+}
|
|
|
+</style>
|