diff --git a/my-vue-app/src/views/senorManger/components/StatisticalIndicators.vue b/my-vue-app/src/views/senorManger/components/StatisticalIndicators.vue index 61f6911..e5b9a05 100644 --- a/my-vue-app/src/views/senorManger/components/StatisticalIndicators.vue +++ b/my-vue-app/src/views/senorManger/components/StatisticalIndicators.vue @@ -5,35 +5,35 @@
-
{{ customerCommunicationRate.active_customer_communication_rate||0 }}
+
{{ (customerCommunicationRate && customerCommunicationRate.active_customer_communication_rate) || 0 }}

活跃客户沟通率

-
{{ averageResponseTime.average_answer_time||0 }}分钟
+
{{ (averageResponseTime && averageResponseTime.average_answer_time)||0 }}分钟

平均应答时间

-
{{ timeoutResponseRate.timeout_rate||0 }}
+
{{ (timeoutResponseRate && timeoutResponseRate.timeout_rate)||0 }}

超时应答率

-
{{ timeoutResponseRate.serious_timeout_rate||0 }}
+
{{ (timeoutResponseRate && timeoutResponseRate.serious_timeout_rate)||0 }}

严重超时应答率

-
{{ formCompletionRate.table_filling_rate||0 }}
+
{{ (formCompletionRate && formCompletionRate.table_filling_rate)||0 }}

表格填写率

@@ -53,24 +53,24 @@ import Tooltip from '@/components/Tooltip.vue'; defineProps({ customerCommunicationRate: { - type: Number, - default: 0 + type: Object, + default: () => ({}) }, averageResponseTime: { - type: Number, - default: 0 + type: Object, + default: () => ({}) }, timeoutResponseRate: { - type: Number, - default: 0 + type: Object, + default: () => ({}) }, severeTimeoutRate: { - type: Number, - default: 0 + type: Object, + default: () => ({}) }, formCompletionRate: { - type: Number, - default: 0 + type: Object, + default: () => ({}) } }); diff --git a/my-vue-app/src/views/senorManger/seniorManager.vue b/my-vue-app/src/views/senorManger/seniorManager.vue index feb25f0..d7773a6 100644 --- a/my-vue-app/src/views/senorManger/seniorManager.vue +++ b/my-vue-app/src/views/senorManger/seniorManager.vue @@ -566,11 +566,11 @@ async function fetchDepositConversions() { } const statisticalIndicators = ref({ - customerCommunicationRate: 0, - averageResponseTime: 0, - timeoutResponseRate: 0, - severeTimeoutRate: 0, - formCompletionRate: 0, + customerCommunicationRate: {}, + averageResponseTime: {}, + timeoutResponseRate: {}, + severeTimeoutRate: {}, + formCompletionRate: {}, }) // 销售漏斗 @@ -602,17 +602,18 @@ async function fetchAbnormalResponseRate() { () => getAbnormalResponseRate(hasParams ? params : undefined), requestParams ) - const rawData = response.data + const rawData = response.data || {} // 添加默认值防止null访问 const processedAlerts = [] const teamData = new Map() + // 添加安全检查防止访问null属性 if (rawData.team_serious_timeout_abnormal_counts_by_group) { Object.entries(rawData.team_serious_timeout_abnormal_counts_by_group).forEach(([teamName, data]) => { if (!teamData.has(teamName)) { teamData.set(teamName, { timeoutCount: 0, fillingCount: 0 }) } - teamData.get(teamName).timeoutCount = data.count + teamData.get(teamName).timeoutCount = data.count || 0 }) } @@ -621,7 +622,7 @@ async function fetchAbnormalResponseRate() { if (!teamData.has(teamName)) { teamData.set(teamName, { timeoutCount: 0, fillingCount: 0 }) } - teamData.get(teamName).fillingCount = data.count + teamData.get(teamName).fillingCount = data.count || 0 }) } @@ -663,9 +664,12 @@ async function fetchCustomerCommunicationRate() { () => getActiveCustomerCommunicationRate(hasParams ? params : undefined), requestParams ) - statisticalIndicators.value.customerCommunicationRate = response.data + // 确保响应数据不为null + statisticalIndicators.value.customerCommunicationRate = response.data || {} } catch (error) { console.error('获取活跃客户沟通率失败:', error) + // 出错时设置为空对象 + statisticalIndicators.value.customerCommunicationRate = {} } } // 统计指标--平均应答时间 @@ -680,9 +684,12 @@ async function fetchAverageResponseTime() { () => getAverageAnswerTime(hasParams ? params : undefined), requestParams ) - statisticalIndicators.value.averageResponseTime = response.data + // 确保响应数据不为null + statisticalIndicators.value.averageResponseTime = response.data || {} } catch (error) { console.error('获取平均应答时间失败:', error) + // 出错时设置为空对象 + statisticalIndicators.value.averageResponseTime = {} } } // 统计指标--超时应答率、严重超时应答率 @@ -697,9 +704,15 @@ async function fetchTimeoutRate() { () => getTimeoutRate(hasParams ? params : undefined), requestParams ) - statisticalIndicators.value.timeoutResponseRate = response.data + // 确保响应数据不为null + statisticalIndicators.value.timeoutResponseRate = response.data || {} + // severeTimeoutRate使用相同的数据源 + statisticalIndicators.value.severeTimeoutRate = response.data || {} } catch (error) { console.error('获取超时应答率失败:', error) + // 出错时设置为空对象 + statisticalIndicators.value.timeoutResponseRate = {} + statisticalIndicators.value.severeTimeoutRate = {} } } // 统计指标--表格填写率 @@ -714,9 +727,12 @@ async function fetchTableFillingRate() { () => getTableFillingRate(hasParams ? params : undefined), requestParams ) - statisticalIndicators.value.formCompletionRate = response.data + // 确保响应数据不为null + statisticalIndicators.value.formCompletionRate = response.data || {} } catch (error) { console.error('获取表格填写率失败:', error) + // 出错时设置为空对象 + statisticalIndicators.value.formCompletionRate = {} } } const problemRanking = ref({})