From 551026f4e45d1355926a4c998f81842217ec1812 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期三, 14 一月 2026 17:50:24 +0800
Subject: [PATCH] 进销存-升级 1.开票登记、来票登记改成绑定订单,不绑定开票 2.客户往来、供应商往来展示联调修改 3.修改销售报价逻辑 4.新增销售台账时可以选择已通过报价的模版 5.指标统计页面数据展示修改
---
src/views/salesManagement/indicatorStats/index.vue | 47 ++++++++++++++++-------------------------------
1 files changed, 16 insertions(+), 31 deletions(-)
diff --git a/src/views/salesManagement/indicatorStats/index.vue b/src/views/salesManagement/indicatorStats/index.vue
index 617ef6f..7bd609e 100644
--- a/src/views/salesManagement/indicatorStats/index.vue
+++ b/src/views/salesManagement/indicatorStats/index.vue
@@ -3,7 +3,7 @@
<el-card class="box-card">
<!-- KPI 姹囨�� -->
<el-row :gutter="20" class="stats-row">
- <el-col :span="6">
+ <el-col :span="8">
<div class="stat-card">
<div class="stat-icon" style="background: #ecf5ff;">
<el-icon :size="30" color="#409eff"><Document /></el-icon>
@@ -14,7 +14,7 @@
</div>
</div>
</el-col>
- <el-col :span="6">
+ <el-col :span="8">
<div class="stat-card">
<div class="stat-icon" style="background: #f0f9ff;">
<el-icon :size="30" color="#67c23a"><Tickets /></el-icon>
@@ -25,7 +25,7 @@
</div>
</div>
</el-col>
- <el-col :span="6">
+ <el-col :span="8">
<div class="stat-card">
<div class="stat-icon" style="background: #fef0f0;">
<el-icon :size="30" color="#e6a23c"><Van /></el-icon>
@@ -33,17 +33,6 @@
<div class="stat-content">
<div class="stat-value">{{ indicatorKpis.shipmentRate }}%</div>
<div class="stat-label">鍙戣揣鐜�</div>
- </div>
- </div>
- </el-col>
- <el-col :span="6">
- <div class="stat-card">
- <div class="stat-icon" style="background: #f4f4f5;">
- <el-icon :size="30" color="#f56c6c"><Wallet /></el-icon>
- </div>
- <div class="stat-content">
- <div class="stat-value">{{ indicatorKpis.collectionRate }}%</div>
- <div class="stat-label">鍥炴鐜�</div>
</div>
</div>
</el-col>
@@ -93,7 +82,7 @@
</div>
<!-- 涓氱哗缁熻锛堝洟闃熺淮搴︼紝鏃犱釜浜哄鍚嶏級 -->
- <el-table :data="teamPerformanceList" border stripe style="margin-top: 20px;">
+ <el-table v-if="showTeamPerformance" :data="teamPerformanceList" border stripe style="margin-top: 20px;">
<el-table-column prop="team" label="閿�鍞洟闃�"/>
<el-table-column prop="orderCount" label="璁㈠崟鏁�"/>
<el-table-column prop="salesAmount" label="閿�鍞">
@@ -101,9 +90,6 @@
</el-table-column>
<el-table-column prop="shipmentRate" label="鍙戣揣鐜�">
<template #default="scope">{{ scope.row.shipmentRate }}%</template>
- </el-table-column>
- <el-table-column prop="collectionRate" label="鍥炴鐜�">
- <template #default="scope">{{ scope.row.collectionRate }}%</template>
</el-table-column>
<el-table-column prop="attainment" label="鐩爣杈炬垚鐜�">
<template #default="scope">
@@ -119,15 +105,17 @@
<script setup>
import { ref, reactive, onMounted, nextTick } from 'vue'
-import { Document, Van, Tickets, Wallet } from '@element-plus/icons-vue'
+import { Document, Van, Tickets } from '@element-plus/icons-vue'
import * as echarts from 'echarts'
const indicatorKpis = reactive({
orderCount: 1280,
salesAmount: 9650000,
- shipmentRate: 89.2,
- collectionRate: 76.4
+ shipmentRate: 89.2
})
+
+// 鏄惁灞曠ず閿�鍞洟闃熸槑缁嗚〃锛屾寜闇�寮�鍚�
+const showTeamPerformance = ref(false)
const indicatorFilter = reactive({
product: '',
@@ -140,10 +128,10 @@
let indicatorChart = null
const teamPerformanceList = ref([
- { team: '鍗庝笢澶у尯', orderCount: 320, salesAmount: 2850000, shipmentRate: 90, collectionRate: 80, attainment: 105 },
- { team: '鍗庡寳澶у尯', orderCount: 280, salesAmount: 2150000, shipmentRate: 86, collectionRate: 73, attainment: 92 },
- { team: '鍗庡崡澶у尯', orderCount: 210, salesAmount: 1850000, shipmentRate: 88, collectionRate: 70, attainment: 78 },
- { team: '瑗垮崡澶у尯', orderCount: 180, salesAmount: 1500000, shipmentRate: 83, collectionRate: 68, attainment: 74 }
+ { team: '鍗庝笢澶у尯', orderCount: 320, salesAmount: 2850000, shipmentRate: 90, attainment: 105 },
+ { team: '鍗庡寳澶у尯', orderCount: 280, salesAmount: 2150000, shipmentRate: 86, attainment: 92 },
+ { team: '鍗庡崡澶у尯', orderCount: 210, salesAmount: 1850000, shipmentRate: 88, attainment: 78 },
+ { team: '瑗垮崡澶у尯', orderCount: 180, salesAmount: 1500000, shipmentRate: 83, attainment: 74 }
])
const initIndicatorChart = () => {
@@ -153,7 +141,7 @@
const option = {
title: { text: '澶氱淮搴﹂攢鍞寚鏍囪秼鍔�', left: 'center' },
tooltip: { trigger: 'axis' },
- legend: { data: ['璁㈠崟鏁�', '閿�鍞', '鍙戣揣鐜�', '鍥炴鐜�'], top: 30 },
+ legend: { data: ['璁㈠崟鏁�', '閿�鍞', '鍙戣揣鐜�'], top: 30 },
grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true },
xAxis: { type: 'category', data: ['2024-12', '2025-01', '2025-02', '2025-03', '2025-04', '2025-05'] },
yAxis: [
@@ -163,8 +151,7 @@
series: [
{ name: '璁㈠崟鏁�', type: 'bar', data: [180, 220, 210, 260, 205, 225], itemStyle: { color: '#409eff' } },
{ name: '閿�鍞', type: 'bar', data: [820, 950, 910, 1080, 980, 1020], itemStyle: { color: '#67c23a' } },
- { name: '鍙戣揣鐜�', type: 'line', yAxisIndex: 1, data: [86, 89, 88, 91, 87, 90], itemStyle: { color: '#e6a23c' } },
- { name: '鍥炴鐜�', type: 'line', yAxisIndex: 1, data: [72, 76, 74, 79, 75, 78], itemStyle: { color: '#f56c6c' } }
+ { name: '鍙戣揣鐜�', type: 'line', yAxisIndex: 1, data: [86, 89, 88, 91, 87, 90], itemStyle: { color: '#e6a23c' } }
]
}
indicatorChart.setOption(option)
@@ -178,7 +165,6 @@
indicatorKpis.orderCount = random(1280, 120)
indicatorKpis.salesAmount = random(9650000, 350000)
indicatorKpis.shipmentRate = (85 + Math.random() * 10).toFixed(1) * 1
- indicatorKpis.collectionRate = (70 + Math.random() * 12).toFixed(1) * 1
setTimeout(() => initIndicatorChart(), 200)
}
@@ -191,13 +177,12 @@
}
const exportIndicatorTable = () => {
- const header = ['閿�鍞洟闃�', '璁㈠崟鏁�', '閿�鍞', '鍙戣揣鐜�(%)', '鍥炴鐜�(%)', '鐩爣杈炬垚鐜�(%)']
+ const header = ['閿�鍞洟闃�', '璁㈠崟鏁�', '閿�鍞', '鍙戣揣鐜�(%)', '鐩爣杈炬垚鐜�(%)']
const rows = teamPerformanceList.value.map(r => [
r.team,
r.orderCount,
r.salesAmount,
r.shipmentRate,
- r.collectionRate,
r.attainment
])
const csv = [header, ...rows].map(r => r.join(',')).join('\n')
--
Gitblit v1.9.3