feat(secondTop): 优化团队成员展示和排序逻辑

refactor(sale): 调整数据分析区域布局和样式
fix(router): 移除路由元信息注释
style(StatisticData): 调整统计卡片网格布局
feat(api): 新增顶级管理接口文件
This commit is contained in:
2025-08-15 21:36:15 +08:00
parent a96a25355f
commit 74aa6c3235
5 changed files with 157 additions and 136 deletions

View File

@@ -102,7 +102,7 @@ $white: #ffffff;
// 统计指标卡片特定样式
.stats-grid-inner {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
gap: 0.75rem;
}

View File

@@ -18,7 +18,7 @@
{{ routeUserName }}
</div>
</div>
<!-- 自己登录时的顶栏原有样式 -->
<template v-else>
<h1 class="app-title">销售驾驶舱</h1>
@@ -39,23 +39,7 @@
<UserDropdown />
</template>
</div>
<div class="section-content">
<!-- 数据分析区域加载状态 -->
<div v-if="isKpiLoading || isStatisticsLoading || isUrgentProblemLoading" class="section-loading">
<div class="loading-spinner"></div>
<div class="loading-text">正在加载数据分析...</div>
</div>
<!-- 数据分析内容 -->
<PersonalDashboard
v-else
:kpi-data="kpiData"
:funnel-data="funnelData"
:contact-time-data="contactTimeData"
:statistics-data="statisticsData"
:urgent-problem-data="urgentProblemData"
/>
</div>
</section>
<!-- 销售时间线区域 -->
<section class="timeline-section">
@@ -119,7 +103,25 @@
</section>
</main>
</div>
<section class="analytics-section-full" style="width: 100%;">
<div class="section-content">
<!-- 数据分析区域加载状态 -->
<div v-if="isKpiLoading || isStatisticsLoading || isUrgentProblemLoading" class="section-loading">
<div class="loading-spinner"></div>
<div class="loading-text">正在加载数据分析...</div>
</div>
<!-- 数据分析内容 -->
<PersonalDashboard
v-else
:kpi-data="kpiData"
:funnel-data="funnelData"
:contact-time-data="contactTimeData"
:statistics-data="statisticsData"
:urgent-problem-data="urgentProblemData"
/>
</div>
</section>
</div>
</template>
@@ -132,7 +134,6 @@ import CustomerDetail from "./components/CustomerDetail.vue";
import PersonalDashboard from "./components/PersonalDashboard.vue";
import SalesTimelineWithTaskList from "./components/SalesTimelineWithTaskList.vue";
import RawDataCards from "./components/RawDataCards.vue";
// import FloatingTodo from "./components/FloatingTodo.vue";
import UserDropdown from "@/components/UserDropdown.vue";
import Loading from "@/components/Loading.vue";
import {getCustomerAttendance,getTodayCall,getProblemDistribution,getTableFillingRate,getAverageResponseTime,
@@ -501,50 +502,6 @@ async function getCustomerChat() {
}
try {
const res = await getCustomerChatInfo(params)
/**
* message:[
* 0:{content
:
"您好孩子妈妈,我是负责咱们本次课程的王慧老师[玫瑰]"
format_add_time
:
"2天前"
format_direction
:
"我"
type
:
"文本"},
1:{
content
:
"嗯,王老师好"
format_add_time
:
"2天前"
format_direction
:
"客户"
type
:
"文本"
},
3:{
content
:
"孩子妈妈,您好,这个是咱们的青少年成长评估表。您这个抽一分钟的时间填写一下孩子的基本信息。填写完了之后,您跟老师说一声。"
format_add_time
:
"2天前"
format_direction
:
"我"
type
:
"语音"
}
* ]
*/
if(res.code === 200) {
chatRecords.value = res.data
console.log('聊天数据获取成功:', res.data)
@@ -854,9 +811,6 @@ $primary: #3b82f6;
box-sizing: border-box;
}
}
// 主要布局
.main-layout {
width: 100vw;
@@ -1348,7 +1302,7 @@ $primary: #3b82f6;
min-height: 400px;
@include desktop {
min-height: 450px;
min-height: 150px;
}
@include tablet {