From d8bfcaab902bcd02643acabd22656dd161024853 Mon Sep 17 00:00:00 2001 From: lbw_9527443 <780139497@qq.com> Date: Tue, 12 Aug 2025 17:15:42 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0pinia=E6=8C=81?= =?UTF-8?q?=E4=B9=85=E5=8C=96=E6=8F=92=E4=BB=B6=E5=B9=B6=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=B8=83=E5=B1=80=E5=92=8CAPI=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加pinia-plugin-persistedstate依赖实现状态持久化 - 将多处actions-summary布局从2列改为4列 - 调整secondTop页面高度和滚动区域高度 - 更新API基础路径为192.168.15.53 - 添加seniorManager页面的用户下拉组件 - 创建senorManger.js API接口文件 --- my-vue-app/package.json | 1 + my-vue-app/pnpm-lock.yaml | 12 +++++ my-vue-app/src/api/senorManger.js | 50 +++++++++++++++++++ my-vue-app/src/utils/https.js | 2 +- .../secondTop/components/ActionItems.vue | 2 +- .../secondTop/components/seniorManager.vue | 2 +- my-vue-app/src/views/secondTop/secondTop.vue | 6 +-- .../src/views/senorManger/seniorManager.vue | 18 ++----- 8 files changed, 73 insertions(+), 20 deletions(-) create mode 100644 my-vue-app/src/api/senorManger.js diff --git a/my-vue-app/package.json b/my-vue-app/package.json index 683223e..6803d85 100644 --- a/my-vue-app/package.json +++ b/my-vue-app/package.json @@ -18,6 +18,7 @@ "markdown-it": "^14.1.0", "marked": "^16.1.1", "pinia": "^3.0.2", + "pinia-plugin-persistedstate": "^3.2.3", "vue": "^3.5.17", "vue-chartjs": "^5.3.2", "vue-echarts": "^7.0.3", diff --git a/my-vue-app/pnpm-lock.yaml b/my-vue-app/pnpm-lock.yaml index 5c0f5ac..a7fd223 100644 --- a/my-vue-app/pnpm-lock.yaml +++ b/my-vue-app/pnpm-lock.yaml @@ -35,6 +35,9 @@ importers: pinia: specifier: ^3.0.2 version: 3.0.3(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3)) + pinia-plugin-persistedstate: + specifier: ^3.2.3 + version: 3.2.3(pinia@3.0.3(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3))) vue: specifier: ^3.5.17 version: 3.5.17(typescript@5.8.3) @@ -1651,6 +1654,11 @@ packages: engines: {node: '>=0.10'} hasBin: true + pinia-plugin-persistedstate@3.2.3: + resolution: {integrity: sha512-Cm819WBj/s5K5DGw55EwbXDtx+EZzM0YR5AZbq9XE3u0xvXwvX2JnWoFpWIcdzISBHqy9H1UiSIUmXyXqWsQRQ==} + peerDependencies: + pinia: ^2.0.0 + pinia@3.0.3: resolution: {integrity: sha512-ttXO/InUULUXkMHpTdp9Fj4hLpD/2AoJdmAbAeW2yu1iy1k+pkFekQXw5VpC0/5p51IOR/jDaDRfRWRnMMsGOA==} peerDependencies: @@ -3545,6 +3553,10 @@ snapshots: pidtree@0.6.0: {} + pinia-plugin-persistedstate@3.2.3(pinia@3.0.3(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3))): + dependencies: + pinia: 3.0.3(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3)) + pinia@3.0.3(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3)): dependencies: '@vue/devtools-api': 7.7.7 diff --git a/my-vue-app/src/api/senorManger.js b/my-vue-app/src/api/senorManger.js new file mode 100644 index 0000000..0e375c5 --- /dev/null +++ b/my-vue-app/src/api/senorManger.js @@ -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) +} + + + diff --git a/my-vue-app/src/utils/https.js b/my-vue-app/src/utils/https.js index 53dd71c..fd10e23 100644 --- a/my-vue-app/src/utils/https.js +++ b/my-vue-app/src/utils/https.js @@ -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' diff --git a/my-vue-app/src/views/secondTop/components/ActionItems.vue b/my-vue-app/src/views/secondTop/components/ActionItems.vue index 360ba8e..7c817dd 100644 --- a/my-vue-app/src/views/secondTop/components/ActionItems.vue +++ b/my-vue-app/src/views/secondTop/components/ActionItems.vue @@ -881,7 +881,7 @@ const addAction = () => { } .actions-summary { - grid-template-columns: repeat(2, 1fr); + grid-template-columns: repeat(4, 1fr); } .action-item { diff --git a/my-vue-app/src/views/secondTop/components/seniorManager.vue b/my-vue-app/src/views/secondTop/components/seniorManager.vue index 4e29108..f33a9ef 100644 --- a/my-vue-app/src/views/secondTop/components/seniorManager.vue +++ b/my-vue-app/src/views/secondTop/components/seniorManager.vue @@ -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; diff --git a/my-vue-app/src/views/secondTop/secondTop.vue b/my-vue-app/src/views/secondTop/secondTop.vue index 4ff6a78..0ed98cb 100644 --- a/my-vue-app/src/views/secondTop/secondTop.vue +++ b/my-vue-app/src/views/secondTop/secondTop.vue @@ -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 { diff --git a/my-vue-app/src/views/senorManger/seniorManager.vue b/my-vue-app/src/views/senorManger/seniorManager.vue index 57b98a3..3e60815 100644 --- a/my-vue-app/src/views/senorManger/seniorManager.vue +++ b/my-vue-app/src/views/senorManger/seniorManager.vue @@ -8,19 +8,7 @@

高级经理指挥台

统筹多组运营,优化资源配置,驱动业绩增长,实现团队协同发展。

-
- 用户头像 - 你好,管理员 -
+ @@ -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;