فهرست منبع

reactor:新增宜宾高效办成一件事报表

zhangchong 4 هفته پیش
والد
کامیت
e01a78b778
2فایلهای تغییر یافته به همراه223 افزوده شده و 2 حذف شده
  1. 186 0
      src/views/statistics/call/efficientDetail.vue
  2. 37 2
      src/views/statistics/call/seatDateDetail.vue

+ 186 - 0
src/views/statistics/call/efficientDetail.vue

@@ -0,0 +1,186 @@
+<template>
+	<div class="statistics-call-efficient-detail-container layout-padding">
+		<div class="layout-padding-auto layout-padding-view pd20">
+			<vxe-grid v-bind="gridOptions">
+				<template #form>
+					<el-form :model="state.queryParams" ref="ruleFormRef" @submit.native.prevent inline :disabled="gridOptions.loading">
+						<el-form-item prop="crTime">
+							<statistical-time v-model="state.queryParams.crTime" @change="handleQuery" ref="statisticalTimeRef" :disabled="state.loading" />
+						</el-form-item>
+						<el-form-item>
+							<el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
+							<el-button @click="resetQuery(ruleFormRef)" class="default-button" :loading="state.loading">
+								<SvgIcon name="ele-Refresh" class="mr5" />重置
+							</el-button>
+						</el-form-item>
+					</el-form>
+				</template>
+				<template #toolbar_buttons>
+					<el-popover :width="500" trigger="click">
+						<template #reference>
+							<el-button type="primary" title="字段说明"><SvgIcon name="ele-QuestionFilled" class="mr5" />字段说明</el-button>
+						</template>
+						<el-descriptions title="" :column="1" border style="max-height: 400px; overflow: auto">
+							<el-descriptions-item label="高效办成一件事总量">进入IVR以后,已按了3键的所有电话量</el-descriptions-item>
+							<el-descriptions-item label="高效办成一件事接通量">进入高效办成一件事道后,话务人员接通的所有电话量</el-descriptions-item>
+							<el-descriptions-item label="高效办成一件事挂断总量">已按了3键,但是在话务人员接通前挂断的电话量</el-descriptions-item>
+
+							<el-descriptions-item label="高效办成一件事队列挂断">已进入高效办成一件事通道,在队列中挂断的电话量</el-descriptions-item>
+							<el-descriptions-item label="高效办成一件事等待挂断">已进入高效办成一件事务话机,等待话务人员接听过程中挂断的电话量</el-descriptions-item>
+							<el-descriptions-item label="个人服务接通率"> 高效办成一件事接通量/高效办成一件事呼入总量 </el-descriptions-item>
+						</el-descriptions>
+					</el-popover>
+				</template>
+			</vxe-grid>
+		</div>
+	</div>
+</template>
+<script setup lang="tsx" name="statisticsCallEfficientDetail">
+import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
+import { FormInstance } from 'element-plus';
+import { defaultDate } from '@/utils/constants';
+import Other from '@/utils/other';
+import { callCompany, callCompanyExport } from '@/api/statistics/call';
+import XEUtils from 'xe-utils';
+
+const StatisticalTime = defineAsyncComponent(() => import('@/components/StatisticalTime/index.vue')); // 日期类型选择组件
+// 定义变量内容
+const ruleFormRef = ref<RefType>(); // 表单ref
+const state = reactive<any>({
+	queryParams: {
+		// 查询条件
+		crTime: defaultDate,
+	},
+	tableData: [], //表单
+	loading: false, // 加载
+	total: 0, // 总数
+	callForwardingSource: [],
+	totalCount: {},
+});
+
+const requestParams = ref<EmptyObjectType>({});
+const gridOptions = reactive<any>({
+	loading: false,
+	border: true,
+	showOverflow: true,
+	columnConfig: {
+		resizable: true,
+	},
+	scrollY: {
+		enabled: true,
+		gt: 100,
+	},
+	toolbarConfig: {
+		zoom: true,
+		custom: true,
+		refresh: {
+			queryMethod: () => {
+				handleQuery();
+			},
+		},
+		tools: [{ toolRender: { name: 'exportAll' } }],
+		slots: {
+			buttons: 'toolbar_buttons',
+		},
+	},
+	customConfig: {
+		storage: true,
+	},
+	id: 'statisticsCallEfficientDetail',
+	rowConfig: { isHover: true, height: 30, isCurrent: true, useKey: true },
+	height: 'auto',
+	align: 'center',
+	columns: [
+		{
+			field: 'date',
+			title: '日期',
+		},
+		{
+			field: 'enterpriseCallInCount',
+			title: '企业服务呼入总量',
+		},
+		{
+			field: 'enterpriseCallInPutthroughCount',
+			title: '企业服务接通量',
+		},
+		{
+			field: 'enterpriseRingOffCount',
+			title: '企业服务挂断总量',
+		},
+		{
+			title: '挂断类型',
+			children: [
+				{
+					field: 'enterpriseQueueOffCount',
+					title: '企业服务队列挂断',
+				},
+				{
+					field: 'enterpriseWaitOffCount',
+					title: '企业服务等待挂断',
+				},
+			],
+		},
+		{
+			field: 'enterpriseCallPutthorughRateText',
+			title: '企业服务接通率',
+		},
+	],
+	data: [],
+	params: {
+		exportMethod: callCompanyExport,
+		exportParams: requestParams,
+	},
+	sortConfig: {
+		remote: true,
+	},
+	showFooter: true,
+	footerMethod: ({ columns, data }) => {
+		return [
+			columns.map((column: any, columnIndex: number) => {
+				if (columnIndex === 0) {
+					return '合计';
+				}
+				// 后端返回了数据集合 state.totalCount 所以不需要计算 直接进行赋值
+				return XEUtils.get(state.totalCount, column.property);
+			}),
+		];
+	},
+});
+/** 搜索按钮操作 */
+const handleQuery = () => {
+	// state.queryParams.PageIndex = 1;
+	queryList();
+};
+/** 获取列表 */
+const queryList = async () => {
+	state.loading = true;
+	gridOptions.loading = true;
+	try {
+		requestParams.value = Other.deepClone(state.queryParams);
+		requestParams.value.StartTime = state.queryParams.crTime === null ? null : state.queryParams.crTime[0];
+		requestParams.value.EndTime = state.queryParams.crTime === null ? null : state.queryParams.crTime[1];
+		Reflect.deleteProperty(requestParams.value, 'crTime');
+		const { result } = await callCompany(requestParams.value);
+		state.tableData = result.list ?? [];
+		state.totalCount = result.total;
+		gridOptions.data = state.tableData;
+		state.loading = false;
+		gridOptions.loading = false;
+	} catch (e) {
+		state.loading = false;
+		gridOptions.loading = false;
+		console.log(e);
+	}
+};
+/** 重置按钮操作 */
+const statisticalTimeRef = ref<RefType>();
+const resetQuery = (formEl: FormInstance | undefined) => {
+	if (!formEl) return;
+	formEl.resetFields();
+	statisticalTimeRef.value.reset();
+	queryList();
+};
+onMounted(() => {
+	queryList();
+});
+</script>

+ 37 - 2
src/views/statistics/call/seatDateDetail.vue

@@ -25,18 +25,21 @@
 							<el-descriptions-item label="IVR呼入总量"> 进入IVR以后,群众未按键直接挂断电话的(该数据与IVR挂断数据一致) </el-descriptions-item>
 							<el-descriptions-item label="个人服务呼入总量">进入IVR以后,已按了1键的所有电话量</el-descriptions-item>
 							<el-descriptions-item label="企业服务呼入总量">进入IVR以后,已按了2键的所有电话量</el-descriptions-item>
-							<el-descriptions-item label="智能应答呼入总量">进入IVR以后,已按了3键的所有电话量。(智能应答视为全部接通)</el-descriptions-item>
+							<el-descriptions-item label="高效办成一件事总量">进入IVR以后,已按了3键的所有电话量。</el-descriptions-item>
+							<el-descriptions-item label="智能应答呼入总量">进入IVR以后,已按了4键的所有电话量。(智能应答视为全部接通)</el-descriptions-item>
 							<el-descriptions-item label="接通总量">
 								个人服务接通总量+企业服务接通总量+智能应答呼入总量(智能应答视为全部接通)
 							</el-descriptions-item>
 							<el-descriptions-item label="个人服务接通量">通过个人服务通道后,话务人员接通的所有电话量</el-descriptions-item>
 							<el-descriptions-item label="企业服务接通量">进入企业服务通道后,话务人员接通的所有电话量</el-descriptions-item>
+							<el-descriptions-item label="高效办成一件事接通量">进入高效办成一件事道后,话务人员接通的所有电话量</el-descriptions-item>
 							<!--							<el-descriptions-item label="智能应答接通量">进入企业服务通道后。</el-descriptions-item>-->
 							<el-descriptions-item label="挂断总量">人服务挂断总量+企业服务挂断总量+IVR挂断</el-descriptions-item>
 							<el-descriptions-item label="个人服务挂断总量">已按了1键,但是在话务人员接通前挂断的电话量</el-descriptions-item>
 							<el-descriptions-item label="企业服务挂断总量">已按了2键,但是在话务人员接通前挂断的电话量</el-descriptions-item>
+							<el-descriptions-item label="高效办成一件事挂断总量">已按了3键,但是在话务人员接通前挂断的电话量</el-descriptions-item>
 							<!--							<el-descriptions-item label="IVR挂断">进入IVR以后,话务人员挂断的所有电话量</el-descriptions-item>-->
-							<el-descriptions-item label="总体接通率">=接通总量/呼入总量</el-descriptions-item>
+							<el-descriptions-item label="总体接通率">接通总量/呼入总量</el-descriptions-item>
 							<el-descriptions-item label="服务接通率">
 								(个人服务接通总量+企业服务接通总量+智能应答呼入总量)/(个人服务呼入总量+企业服务呼入总量+智能应答呼入总量)
 							</el-descriptions-item>
@@ -110,10 +113,12 @@ const gridOptions = reactive<any>({
 		{
 			field: 'date',
 			title: '日期',
+			minWidth: 100,
 		},
 		{
 			field: 'callInTotal',
 			title: '呼入总量',
+			minWidth: 150,
 		},
 		{
 			title: '呼入类型',
@@ -121,24 +126,34 @@ const gridOptions = reactive<any>({
 				{
 					field: 'ivrCallInTotal',
 					title: 'IVR呼入总量',
+					minWidth: 150,
 				},
 				{
 					title: '个人服务呼入总量',
 					field: 'personCallInCount',
+					minWidth: 150,
 				},
 				{
 					field: 'enterpriseCallInCount',
 					title: '企业服务呼入总量',
+					minWidth: 150,
+				},
+				{
+					title: ' 高效办成一件事总量',
+					field: 'gaoXiaoCallInCount',
+					minWidth: 150,
 				},
 				{
 					field: 'aiCallInCount',
 					title: '智能应答呼入总量',
+					minWidth: 150,
 				},
 			],
 		},
 		{
 			field: 'putthroughCount',
 			title: '接通总量',
+			minWidth: 150,
 		},
 		{
 			title: '呼入接通类型',
@@ -146,20 +161,29 @@ const gridOptions = reactive<any>({
 				{
 					title: '个人服务接通量',
 					field: 'personCallInPutthroughCount',
+					minWidth: 150,
 				},
 				{
 					title: '企业服务接通量',
 					field: 'enterpriseCallInPutthroughCount',
+					minWidth: 150,
+				},
+				{
+					title: '高效办成一件事接通量',
+					field: 'gaoXiaoCallInPutthroughCount',
+					minWidth: 160,
 				},
 				{
 					title: '智能应答接通量',
 					field: 'aiCallInPutthroughCount',
+					minWidth: 150,
 				},
 			],
 		},
 		{
 			title: '挂断总量',
 			field: 'ringOffCount',
+			minWidth: 150,
 		},
 		{
 			title: '挂断类型',
@@ -167,28 +191,39 @@ const gridOptions = reactive<any>({
 				{
 					title: '个人服务挂断总量',
 					field: 'personRingOffCount',
+					minWidth: 150,
 				},
 				{
 					title: '企业服务挂断总量',
 					field: 'enterpriseRingOffCount',
+					minWidth: 150,
+				},
+				{
+					title: '高效办成一件事挂断总量',
+					field: 'gaoXiaoRingOffCount',
+					minWidth: 180,
 				},
 				{
 					title: 'IVR挂断',
 					field: 'ivrRingOffCount',
+					minWidth: 150,
 				},
 			],
 		},
 		{
 			field: 'totalPutthroughRateText',
 			title: '总体接通率',
+			minWidth: 150,
 		},
 		{
 			field: 'servicePutthorughRateText',
 			title: '服务接通率',
+			minWidth: 150,
 		},
 		{
 			field: 'callPutthorughRateText',
 			title: '话务接通率',
+			minWidth: 150,
 		},
 	],
 	data: [],