|
|
@@ -61,7 +61,10 @@
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
|
|
|
- <el-table border v-loading="loading" :data="courseWatchLogList" @selection-change="handleSelectionChange" show-summary height="600">
|
|
|
+ <el-table border v-loading="loading" :data="courseWatchLogList" @selection-change="handleSelectionChange" show-summary
|
|
|
+ :summary-method="getSummaries"
|
|
|
+ max-height="500"
|
|
|
+ highlight-current-row>
|
|
|
<el-table-column type="selection" width="55" align="center" />
|
|
|
<!-- <el-table-column label="会员名称" align="center" prop="fsUserName" />-->
|
|
|
<el-table-column label="销售名称" align="center" prop="qwUserName" />
|
|
|
@@ -577,6 +580,74 @@ export default {
|
|
|
})
|
|
|
},
|
|
|
methods: {
|
|
|
+ // 合计
|
|
|
+ getSummaries(param) {
|
|
|
+ const { columns, data } = param;
|
|
|
+ const sums = [];
|
|
|
+
|
|
|
+ columns.forEach((column, index) => {
|
|
|
+ if (index === 0) {
|
|
|
+ sums[index] = '合计';
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取列的真实属性名
|
|
|
+ const prop = column.property;
|
|
|
+
|
|
|
+ // 定义需要合计的字段
|
|
|
+ const summaryFields = [
|
|
|
+ 'line', 'firstOnline', 'firstOver',
|
|
|
+ 'd1Online', 'd1Over', 'd2Online', 'd2Over',
|
|
|
+ 'd3Online', 'd3Over', 'd4Online', 'd4Over',
|
|
|
+ 'd5Online', 'd5Over', 'd6Online', 'd6Over',
|
|
|
+ 'd7Online', 'd7Over', 'd8Online', 'd8Over',
|
|
|
+ 'd9Online', 'd9Over', 'd10Online', 'd10Over',
|
|
|
+ 'd11Online', 'd11Over', 'd12Online', 'd12Over',
|
|
|
+ 'd13Online', 'd13Over', 'd14Online', 'd14Over',
|
|
|
+ 'd15Online', 'd15Over', 'd16Online', 'd16Over',
|
|
|
+ 'd17Online', 'd17Over', 'd18Online', 'd18Over',
|
|
|
+ 'd19Online', 'd19Over', 'd20Online', 'd20Over',
|
|
|
+ 'd21Online', 'd21Over', 'd22Online', 'd22Over',
|
|
|
+ 'd23Online', 'd23Over', 'd24Online', 'd24Over',
|
|
|
+ 'd25Online', 'd25Over', 'd26Online', 'd26Over',
|
|
|
+ 'd27Online', 'd27Over', 'd28Online', 'd28Over',
|
|
|
+ 'd29Online', 'd29Over', 'd30Online', 'd30Over'
|
|
|
+ ];
|
|
|
+
|
|
|
+ if (prop && summaryFields.includes(prop)) {
|
|
|
+ const values = data.map(item => {
|
|
|
+ const value = Number(item[prop]);
|
|
|
+ return isNaN(value) ? 0 : value;
|
|
|
+ });
|
|
|
+ const sum = values.reduce((prev, curr) => prev + curr, 0);
|
|
|
+
|
|
|
+ // 如果是line字段,直接显示合计值
|
|
|
+ if (prop === 'line') {
|
|
|
+ sums[index] = sum;
|
|
|
+ } else if (prop.endsWith('Online') || prop.endsWith('Over')) {
|
|
|
+ // 对于上线和完课字段,显示合计值和百分比
|
|
|
+ const lineValues = data.map(item => {
|
|
|
+ const value = Number(item.line);
|
|
|
+ return isNaN(value) ? 0 : value;
|
|
|
+ });
|
|
|
+ const totalLine = lineValues.reduce((prev, curr) => prev + curr, 0);
|
|
|
+
|
|
|
+ if (totalLine > 0) {
|
|
|
+ const percentage = ((sum / totalLine) * 100).toFixed(2);
|
|
|
+ sums[index] = `${sum} (${percentage}%)`;
|
|
|
+ } else {
|
|
|
+ sums[index] = `${sum} (0.00%)`;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ sums[index] = sum;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ sums[index] = '';
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ return sums;
|
|
|
+ },
|
|
|
handleSeller(){
|
|
|
if(this.queryParams.companyId != null) {
|
|
|
getUserList(this.queryParams.companyId).then(res=>{
|
|
|
@@ -620,6 +691,7 @@ export default {
|
|
|
qwWatchLogAllStatisticsList(this.queryParams).then(response => {
|
|
|
this.courseWatchLogList = response.rows;
|
|
|
this.total = response.total;
|
|
|
+ console.log('数据列表:', this.courseWatchLogList);
|
|
|
}).finally(()=>{
|
|
|
this.loading = false;
|
|
|
})
|
|
|
@@ -750,3 +822,14 @@ export default {
|
|
|
}
|
|
|
};
|
|
|
</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+::v-deep .el-table__footer td {
|
|
|
+ font-size: 12px;
|
|
|
+ color: #606266;
|
|
|
+}
|
|
|
+
|
|
|
+::v-deep .el-table__footer td .cell {
|
|
|
+ font-weight: 500;
|
|
|
+}
|
|
|
+</style>
|