|
|
@@ -54,7 +54,7 @@
|
|
|
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
|
|
</el-row>
|
|
|
|
|
|
- <el-table border v-loading="loading" :data="courseWatchLogList" @selection-change="handleSelectionChange" show-summary>
|
|
|
+ <el-table border v-loading="loading" :data="courseWatchLogList" @selection-change="handleSelectionChange" show-summary :summary-method="getSummaries" >
|
|
|
<el-table-column type="selection" width="55" align="center" />
|
|
|
<el-table-column label="企微员工名称" align="center" prop="qwUserName" />
|
|
|
<el-table-column label="发课时间" align="center" prop="createTime"/>
|
|
|
@@ -159,6 +159,66 @@ export default {
|
|
|
});
|
|
|
},
|
|
|
methods: {
|
|
|
+ getSummaries(param) {
|
|
|
+ let totalNum = 0;
|
|
|
+ const { columns, data } = param;
|
|
|
+ const sums = [];
|
|
|
+ let totalOnline = 0;
|
|
|
+ let totalFinishCourse = 0;
|
|
|
+ columns.forEach((column, index) => {
|
|
|
+ if (index === 0) {
|
|
|
+ sums[index] = "总计";
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ const values = data.map((item) => Number(item[column.property]));
|
|
|
+ if (!values.every((value) => isNaN(value))) {
|
|
|
+ sums[index] = values.reduce((prev, curr) => {
|
|
|
+ const value = Number(curr);
|
|
|
+ if (!isNaN(value)) {
|
|
|
+ return prev + curr;
|
|
|
+ } else {
|
|
|
+ return prev;
|
|
|
+ }
|
|
|
+ }, 0);
|
|
|
+ if(index > 3 && totalNum != 0){
|
|
|
+ sums[index] = sums[index] + "("+ ((sums[index] / totalNum) * 100).toFixed(2) + "%)"
|
|
|
+ }
|
|
|
+ if( column.property=="videoName"){
|
|
|
+ sums[index] = "";
|
|
|
+ }
|
|
|
+ if (
|
|
|
+ column.property === "type3" ||
|
|
|
+ column.property === "type1" ||
|
|
|
+ column.property === "type2" ||
|
|
|
+ column.property === "type4" ||
|
|
|
+ column.property === "sendNumber" ||
|
|
|
+ column.property === "isUserWaitNumber" ||
|
|
|
+ column.property === "noUserWaitNumber" ||
|
|
|
+ column.property === "onLineRate" ||
|
|
|
+ column.property === "finishedRate" ||
|
|
|
+ column.property === "redAmount"
|
|
|
+ ) {
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ sums[index] = "";
|
|
|
+ if(index === 12 || index === 13){
|
|
|
+ // let numbers = data.map(item => {
|
|
|
+ // return parseFloat(item[column.property].replace('%', '')) || 0; // 处理空值或无效值
|
|
|
+ // });
|
|
|
+ // let sumRates = numbers.reduce((acc, curr) => acc + curr, 0);
|
|
|
+ // console.log("index:" + index + " rates:" + sumRates + " data.length:" + data.length);
|
|
|
+ if(index === 12 && !!sums[9]){
|
|
|
+ let sumsNum = sums[6] + sums[7] + sums[8];
|
|
|
+ sums[index] = (sumsNum * 100 / sums[9]).toFixed(2) + '%';
|
|
|
+ } else if(index === 13 && !!sums[9]){
|
|
|
+ sums[index] = (sums[7] * 100 / sums[9]).toFixed(2) + '%';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ console.log(sums);
|
|
|
+ return sums;
|
|
|
+ },
|
|
|
courseChange(row){
|
|
|
this.queryParams.videoId=null;
|
|
|
if(row === ''){
|