feat: 添加pinia持久化插件并优化布局和API配置

- 添加pinia-plugin-persistedstate依赖实现状态持久化
- 将多处actions-summary布局从2列改为4列
- 调整secondTop页面高度和滚动区域高度
- 更新API基础路径为192.168.15.53
- 添加seniorManager页面的用户下拉组件
- 创建senorManger.js API接口文件
This commit is contained in:
2025-08-12 17:15:42 +08:00
parent f93236ab36
commit d8bfcaab90
8 changed files with 73 additions and 20 deletions

View File

@@ -0,0 +1,50 @@
import https from '../utils/https'
// 团队总业绩 /api/v1/level_three/overview/overall_team_performance
export const getOverallTeamPerformance = (params) => {
return https.post('/api/v1/level_three/overview/overall_team_performance', params)
}
// 活跃组数 /api/v1/level_three/overview/total_group_count
export const getTotalGroupCount = (params) => {
return https.post('/api/v1/level_three/overview/total_group_count', params)
}
// 中心转化率 /api/v1/level_three/overview/center_conversion_rate
export const getCenterConversionRate = (params) => {
return https.post('/api/v1/level_three/overview/center_conversion_rate', params)
}
// 总通话次数 /api/v1/level_three/overview/total_call_count
export const getTotalCallCount = (params) => {
return https.post('/api/v1/level_three/overview/total_call_count', params)
}
// 获取新增客户数量、已加微客户数量以及新增客户与昨日对比情况 /api/v1/level_three/overview/new_customer
export const getNewCustomer = (params) => {
return https.post('/api/v1/level_three/overview/new_customer', params)
}
// 获取团队本期定金转化率、本月的定金转化率以及本期与上期的定金转化率对比情况 /api/v1/level_three/overview/deposit_conversion_rate
export const getDepositConversionRate = (params) => {
return https.post('/api/v1/level_three/overview/deposit_conversion_rate', params)
}
// 活跃客户沟通率 /api/v1/level_three/overview/active_customer_communication_rate
export const getActiveCustomerCommunicationRate = (params) => {
return https.post('/api/v1/level_three/overview/active_customer_communication_rate', params)
}
// 平均应答时间 /api/v1/level_three/overview/average_answer_time
export const getAverageAnswerTime = (params) => {
return https.post('/api/v1/level_three/overview/average_answer_time', params)
}
// 超时应答率、严重超时应答率 /api/v1/level_three/overview/timeout_rate
export const getTimeoutRate = (params) => {
return https.post('/api/v1/level_three/overview/timeout_rate', params)
}
// 表格填写率 /api/v1/level_three/overview/table_filling_rate
export const getTableFillingRate = (params) => {
return https.post('/api/v1/level_three/overview/table_filling_rate', params)
}

View File

@@ -5,7 +5,7 @@ import { useUserStore } from '@/stores/user'
// 创建axios实例
const service = axios.create({
baseURL: 'http://192.168.15.54:8890' || '', // API基础路径支持完整URL
baseURL: 'http://192.168.15.53:8890' || '', // API基础路径支持完整URL
timeout: 15000, // 请求超时时间
headers: {
'Content-Type': 'application/json;charset=UTF-8'

View File

@@ -881,7 +881,7 @@ const addAction = () => {
}
.actions-summary {
grid-template-columns: repeat(2, 1fr);
grid-template-columns: repeat(4, 1fr);
}
.action-item {

View File

@@ -712,7 +712,7 @@ const getStatusText = (status) => {
}
.actions-summary {
grid-template-columns: repeat(2, 1fr);
grid-template-columns: repeat(4, 1fr);
gap: 0.5rem;
margin-bottom: 1rem;

View File

@@ -809,7 +809,7 @@ const getStatusText = (status) => {
}
.action-items-compact {
height: 400px;
height: 380px;
overflow: hidden;
:deep(.action-items) {
@@ -839,7 +839,7 @@ const getStatusText = (status) => {
}
.actions-summary {
grid-template-columns: repeat(2, 1fr);
grid-template-columns: repeat(4, 1fr);
gap: 0.5rem;
margin-bottom: 1rem;
@@ -857,7 +857,7 @@ const getStatusText = (status) => {
}
.actions-list {
max-height: 200px;
max-height: 230px;
overflow-y: auto;
.action-item {

View File

@@ -8,19 +8,7 @@
<h1>高级经理指挥台</h1>
<p>统筹多组运营优化资源配置驱动业绩增长实现团队协同发展</p>
</div>
<div
class="header-ringht"
style="display: flex; align-items: center; gap: 10px;margin-left: auto;"
>
<img
src="https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png"
alt="用户头像"
class="avatar"
@error="handleAvatarError"
style="width: 35px; height: 35px"
/>
<span>你好管理员</span>
</div>
<UserDropdown class="header-ringht" style="margin-left: auto;" />
</div>
</div>
</header>
@@ -154,6 +142,7 @@ import CustomerDetail from './components/CustomerDetail.vue'
import ProblemRanking from './components/ProblemRanking.vue'
import StatisticalIndicators from './components/StatisticalIndicators.vue'
import manager from './components/manager.vue'
import UserDropdown from '@/components/UserDropdown.vue'
const customerCommunicationRate = ref(85)
const averageResponseTime = ref(15)
@@ -726,6 +715,7 @@ const getStatusText = (status) => {
.logo-section {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
}
@@ -809,7 +799,7 @@ const getStatusText = (status) => {
}
.actions-summary {
grid-template-columns: repeat(2, 1fr);
grid-template-columns: repeat(4, 1fr);
gap: 0.5rem;
margin-bottom: 1rem;