Files
DJKB/my-vue-app/src/views/maneger/components/SalesFunnel.vue
lbw_9527443 f93236ab36 feat: 初始化Vue3项目并添加核心功能模块
新增项目基础结构,包括Vue3、Pinia、Element Plus等核心依赖
添加路由配置和用户认证状态管理
实现销售数据看板、客户画像、团队管理等核心功能模块
集成图表库和API请求工具,完成基础样式配置
2025-08-12 14:34:44 +08:00

165 lines
3.7 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div class="sales-funnel">
<h2>团队销售漏斗</h2>
<p class="funnel-description">展示从线索到成交的各个环节转化情况帮助数据驱动在各阶段的工作重点优化</p>
<div class="funnel-chart">
<div class="funnel-stage" style="background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);">
<span class="stage-label">线索总数</span>
<span class="stage-value">1000</span>
</div>
<div class="funnel-stage" style="background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);">
<span class="stage-label">有效沟通</span>
<span class="stage-value">450</span>
</div>
<div class="funnel-stage" style="background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);">
<span class="stage-label">到课数据</span>
<span class="stage-value">180</span>
</div>
<div class="funnel-stage" style="background: linear-gradient(135deg, #43e97b 0%, #38f9d7 100%);">
<span class="stage-label">预付定金</span>
<span class="stage-value">50</span>
</div>
<div class="funnel-stage" style="background: linear-gradient(135deg, #ffecd2 0%, #fcb69f 100%);">
<span class="stage-label">成功签单</span>
<span class="stage-value">12</span>
</div>
</div>
</div>
</template>
<script setup>
// 团队销售漏斗组件
</script>
<style lang="scss" scoped>
// Sales Funnel
.sales-funnel {
background: white;
border-radius: 12px;
padding: 1.5rem;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
h2 {
font-size: 1.2rem;
font-weight: 600;
color: #1e293b;
margin: 0 0 0.5rem 0;
}
.funnel-description {
color: #64748b;
font-size: 0.85rem;
margin: 0 0 1.5rem 0;
line-height: 1.4;
}
.funnel-chart {
display: flex;
align-items: center;
gap: 0;
height: 80px;
overflow: hidden;
}
.funnel-stage {
flex: 1;
height: 80px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
color: white;
font-weight: 500;
position: relative;
clip-path: polygon(0 0, calc(100% - 20px) 0, 100% 50%, calc(100% - 20px) 100%, 0 100%, 20px 50%);
&:first-child {
clip-path: polygon(0 0, calc(100% - 20px) 0, 100% 50%, calc(100% - 20px) 100%, 0 100%);
}
&:last-child {
clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 20px 50%);
}
.stage-label {
font-size: 0.85rem;
margin-bottom: 0.25rem;
}
.stage-value {
font-size: 1.1rem;
font-weight: bold;
}
}
}
// 移动端适配
@media (max-width: 768px) {
.sales-funnel {
padding: 1rem;
h2 {
font-size: 1.1rem;
}
.funnel-description {
font-size: 0.8rem;
}
.funnel-chart {
height: auto;
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(2, 1fr);
gap: 0.5rem;
}
.funnel-stage {
height: 50px;
clip-path: none;
border-radius: 8px;
&:nth-child(4) {
grid-column: 1;
grid-row: 2;
}
&:nth-child(5) {
grid-column: 2;
grid-row: 2;
}
.stage-label {
font-size: 0.75rem;
}
.stage-value {
font-size: 1rem;
}
}
}
}
@media (max-width: 480px) {
.sales-funnel {
padding: 0.75rem;
border-radius: 8px;
.funnel-chart {
height: auto;
}
.funnel-stage {
height: 40px;
.stage-label {
font-size: 0.7rem;
}
.stage-value {
font-size: 0.9rem;
}
}
}
}
</style>