|
@@ -41,36 +41,86 @@
|
|
|
@selection-change="handleSelectionChange"
|
|
|
@sort-change="sortChange"
|
|
|
border
|
|
|
+ :summary-method="getSummaries"
|
|
|
>
|
|
|
<el-table-column type="selection" width="55" align="center" />
|
|
|
- <el-table-column prop="orgName" label="坐席工号" show-overflow-tooltip align="center" width="120"></el-table-column>
|
|
|
- <el-table-column prop="addNum" label="呼入总量" show-overflow-tooltip align="center" sortable="custom"></el-table-column>
|
|
|
- <el-table-column prop="deleteNum" label="接通总量" show-overflow-tooltip align="center" sortable="custom"></el-table-column>
|
|
|
- <el-table-column prop="deleteNum" label="呼入秒挂" show-overflow-tooltip align="center" sortable="custom"></el-table-column>
|
|
|
- <el-table-column prop="deleteNum" label="呼入超时未接" show-overflow-tooltip align="center" sortable="custom" width="140"></el-table-column>
|
|
|
- <el-table-column prop="deleteNum" label="接通率" show-overflow-tooltip align="center"></el-table-column>
|
|
|
- <el-table-column prop="deleteNum" label="呼入平均时长" show-overflow-tooltip align="center"></el-table-column>
|
|
|
- <el-table-column prop="deleteNum" label="有效接通率" show-overflow-tooltip align="center"></el-table-column>
|
|
|
- <el-table-column prop="deleteNum" label="接通秒挂" show-overflow-tooltip align="center"></el-table-column>
|
|
|
- <el-table-column prop="deleteNum" label="有效接通率" show-overflow-tooltip align="center"></el-table-column>
|
|
|
- <el-table-column prop="deleteNum" label="呼出总量" show-overflow-tooltip align="center"></el-table-column>
|
|
|
- <el-table-column prop="deleteNum" label="呼出接通量" show-overflow-tooltip align="center"></el-table-column>
|
|
|
- <el-table-column prop="deleteNum" label="呼出接通率" show-overflow-tooltip align="center"></el-table-column>
|
|
|
- <el-table-column prop="deleteNum" label="呼出平均时长" show-overflow-tooltip align="center"></el-table-column>
|
|
|
- <!-- <el-table-column prop="deleteNum" label="登录时长" show-overflow-tooltip align="center"></el-table-column>
|
|
|
- <el-table-column prop="deleteNum" label="小休+摘记时长" show-overflow-tooltip align="center"></el-table-column>
|
|
|
- <el-table-column prop="deleteNum" label="工作效率" show-overflow-tooltip align="center"></el-table-column>-->
|
|
|
+ <el-table-column label="坐席工号" show-overflow-tooltip align="center" width="120">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <span
|
|
|
+ >{{ row.name }} <span v-if="row.staffNo">({{ row.staffNo }})</span></span
|
|
|
+ >
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="inTotal" label="呼入总量" show-overflow-tooltip align="center" sortable="custom" width="130"></el-table-column>
|
|
|
+ <el-table-column prop="inAnswered" label="接通总量" show-overflow-tooltip align="center" sortable="custom" width="130"></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="inHangupImmediate"
|
|
|
+ label="呼入秒挂"
|
|
|
+ show-overflow-tooltip
|
|
|
+ align="center"
|
|
|
+ sortable="custom"
|
|
|
+ width="130"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column prop="inHanguped" label="呼入超时未接" show-overflow-tooltip align="center" sortable="custom" width="140"></el-table-column>
|
|
|
+ <el-table-column prop="inAnsweredRate" label="接通率" show-overflow-tooltip align="center" sortable="custom" width="130">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <span>{{ row.inAnsweredRate }}%</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="outDurationAvg"
|
|
|
+ label="呼入平均时长"
|
|
|
+ show-overflow-tooltip
|
|
|
+ width="140"
|
|
|
+ align="center"
|
|
|
+ sortable="custom"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="inAvailableAnswer"
|
|
|
+ label="有效接通率"
|
|
|
+ show-overflow-tooltip
|
|
|
+ width="130"
|
|
|
+ align="center"
|
|
|
+ sortable="custom"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="inHangupImmediateWhenAnswered"
|
|
|
+ label="接通秒挂"
|
|
|
+ show-overflow-tooltip
|
|
|
+ align="center"
|
|
|
+ sortable="custom"
|
|
|
+ width="130"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="inAnsweredRate"
|
|
|
+ label="有效接通率"
|
|
|
+ show-overflow-tooltip
|
|
|
+ align="center"
|
|
|
+ width="130"
|
|
|
+ sortable="custom"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column prop="outTotal" label="呼出总量" show-overflow-tooltip align="center" sortable="custom" width="130"></el-table-column>
|
|
|
+ <el-table-column prop="outAnswered" label="呼出接通量" show-overflow-tooltip align="center" sortable="custom" width="130"></el-table-column>
|
|
|
+ <el-table-column prop="outAnsweredRate" label="呼出接通率" show-overflow-tooltip align="center" sortable="custom" width="130">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <span>{{ row.outAnsweredRate }}%</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="outDurationAvg"
|
|
|
+ label="呼出平均时长"
|
|
|
+ show-overflow-tooltip
|
|
|
+ align="center"
|
|
|
+ width="150"
|
|
|
+ sortable="custom"
|
|
|
+ ></el-table-column>
|
|
|
+ <!-- <el-table-column prop="loginDuration" label="登录时长(分钟)" show-overflow-tooltip align="center"></el-table-column>
|
|
|
+ <el-table-column prop="restDuration" label="小休+摘记时长" show-overflow-tooltip align="center"></el-table-column>
|
|
|
+ <el-table-column prop="workRate" label="工作效率" show-overflow-tooltip align="center"></el-table-column>-->
|
|
|
<template #empty>
|
|
|
<Empty />
|
|
|
</template>
|
|
|
</el-table>
|
|
|
- <!-- 分页 -->
|
|
|
- <pagination
|
|
|
- :total="state.total"
|
|
|
- v-model:page="state.queryParams.PageIndex"
|
|
|
- v-model:limit="state.queryParams.PageSize"
|
|
|
- @pagination="queryList"
|
|
|
- />
|
|
|
</el-card>
|
|
|
</div>
|
|
|
</template>
|
|
@@ -100,15 +150,12 @@ const queryList = throttle(() => {
|
|
|
const request = {
|
|
|
CreationTimeStart: state.queryParams.crTime[0],
|
|
|
CreationTimeEnd: state.queryParams.crTime[1],
|
|
|
- PageIndex: state.queryParams.PageIndex,
|
|
|
- PageSize: state.queryParams.PageSize,
|
|
|
SortField: state.queryParams.SortField,
|
|
|
SortRule: state.queryParams.SortRule,
|
|
|
};
|
|
|
callAgent(request)
|
|
|
.then((res: any) => {
|
|
|
- state.tableData = res.result?.items ?? [];
|
|
|
- state.total = res.result?.total ?? 0;
|
|
|
+ state.tableData = res.result;
|
|
|
state.loading = false;
|
|
|
})
|
|
|
.catch((err: any) => {
|
|
@@ -134,7 +181,35 @@ const multipleSelection = ref<any>([]);
|
|
|
const handleSelectionChange = (val: any[]) => {
|
|
|
multipleSelection.value = val;
|
|
|
};
|
|
|
-
|
|
|
+// 合计
|
|
|
+const getSummaries = (param: any) => {
|
|
|
+ const { columns, data } = param;
|
|
|
+ const sums: string[] = [];
|
|
|
+ columns.forEach((column, index) => {
|
|
|
+ if (index === 0) {
|
|
|
+ sums[index] = '合计';
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ const values = data.map((item) => Number(item[column.property]));
|
|
|
+ if (['inAnsweredRate', 'outAnsweredRate'].includes(column.property)) {
|
|
|
+ //百分比不能计算
|
|
|
+ sums[index] = '';
|
|
|
+ return '';
|
|
|
+ } else if (!values.every((value) => Number.isNaN(value))) {
|
|
|
+ sums[index] = `${values.reduce((prev, curr) => {
|
|
|
+ const value = Number(curr);
|
|
|
+ if (!Number.isNaN(value)) {
|
|
|
+ return prev + curr;
|
|
|
+ } else {
|
|
|
+ return prev;
|
|
|
+ }
|
|
|
+ }, 0)}`;
|
|
|
+ } else {
|
|
|
+ sums[index] = ' ';
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return sums;
|
|
|
+};
|
|
|
onMounted(() => {
|
|
|
queryList();
|
|
|
});
|