feat: 实现卡片可见性管理并优化多个组件功能
- 在UserDropdown组件中添加卡片名称映射 - 为sale.vue、seniorManager.vue、topone.vue和secondTop.vue添加卡片可见性控制 - 在CustomerDetail.vue中添加通话数据检查逻辑 - 将https.js中的API基础路径切换为生产环境
This commit is contained in:
@@ -4,28 +4,33 @@
|
||||
<div class="dashboard-header">
|
||||
<h1>管理者数据看板</h1>
|
||||
<!-- 头像 -->
|
||||
<UserDropdown />
|
||||
<UserDropdown
|
||||
:card-visibility="cardVisibility"
|
||||
@update-card-visibility="updateCardVisibility"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<!-- 第一行:核心业绩指标、销售实时进度 -->
|
||||
<div class="dashboard-row row-1">
|
||||
<!-- 核心业绩指标 -->
|
||||
<kpi-metrics :kpi-data="totalDeals" :format-number="formatNumber" />
|
||||
<kpi-metrics v-if="cardVisibility.kpiMetrics" :kpi-data="totalDeals" :format-number="formatNumber" />
|
||||
<!-- 销售实时进度 -->
|
||||
<sales-progress :sales-data="realTimeProgress" />
|
||||
<sales-progress v-if="cardVisibility.salesProgress" :sales-data="realTimeProgress" />
|
||||
<!-- 各中心营期阶段 -->
|
||||
<period-stage />
|
||||
<period-stage v-if="cardVisibility.periodStage" />
|
||||
</div>
|
||||
<!-- 第二行 -->
|
||||
<div class="dashboard-row row-3">
|
||||
<!-- 转化漏斗 -->
|
||||
<funnel-chart
|
||||
v-if="cardVisibility.funnelChart"
|
||||
:funnel-data="formattedFunnelData"
|
||||
:comparison-data="formattedComparisonData"
|
||||
@time-range-change="handleTimeRangeChange"
|
||||
/>
|
||||
<!-- 销售个人业绩排行榜 -->
|
||||
<personal-sales-ranking
|
||||
v-if="cardVisibility.personalSalesRanking"
|
||||
:ranking-data="formattedSalesRankingData"
|
||||
:format-number="formatNumber"
|
||||
:get-rank-class="getRankClass"
|
||||
@@ -34,6 +39,7 @@
|
||||
/>
|
||||
<!-- 优质通话 -->
|
||||
<quality-calls
|
||||
v-if="cardVisibility.qualityCalls"
|
||||
:quality-calls="excellentRecord"
|
||||
@play-call="playCall"
|
||||
@download-call="downloadCall"
|
||||
@@ -43,21 +49,23 @@
|
||||
<div class="dashboard-row row-3">
|
||||
<!-- 业绩排行榜 -->
|
||||
<ranking-list
|
||||
v-if="cardVisibility.rankingList"
|
||||
:format-number="formatNumber"
|
||||
:get-rank-class="getRankClass"
|
||||
/>
|
||||
<!-- 客户类型占比 -->
|
||||
<customer-type :customer-data="customerTypeRatio" @category-change="getCustomerTypeRatio" />
|
||||
<customer-type v-if="cardVisibility.customerType" :customer-data="customerTypeRatio" @category-change="getCustomerTypeRatio" />
|
||||
<!-- 客户迫切解决的问题排行榜 -->
|
||||
<problem-ranking :ranking-data="problemRankingData" />
|
||||
<problem-ranking v-if="cardVisibility.problemRanking" :ranking-data="problemRankingData" />
|
||||
</div>
|
||||
<!-- 第四行:详细数据表格和数据详情 -->
|
||||
<div class="dashboard-row" v-show="false">
|
||||
<CampManagement />
|
||||
<CampManagement v-if="cardVisibility.campManagement" />
|
||||
</div>
|
||||
<!-- 第五行 -->
|
||||
<div class="dashboard-row" >
|
||||
<DetailedDataTable
|
||||
v-if="cardVisibility.detailedDataTable"
|
||||
:table-data="detailData"
|
||||
:level-tree="levelTree"
|
||||
v-model:selected-person="selectedPerson"
|
||||
@@ -213,6 +221,26 @@ const selectedPerson = ref(null);
|
||||
|
||||
const userStore = useUserStore();
|
||||
|
||||
// 卡片显示状态管理
|
||||
const cardVisibility = ref({
|
||||
kpiMetrics: true,
|
||||
salesProgress: true,
|
||||
periodStage: true,
|
||||
funnelChart: true,
|
||||
personalSalesRanking: true,
|
||||
qualityCalls: true,
|
||||
rankingList: true,
|
||||
customerType: true,
|
||||
problemRanking: true,
|
||||
campManagement: true,
|
||||
detailedDataTable: true
|
||||
});
|
||||
|
||||
// 更新卡片显示状态
|
||||
const updateCardVisibility = (newVisibility) => {
|
||||
Object.assign(cardVisibility.value, newVisibility);
|
||||
};
|
||||
|
||||
// 计算属性
|
||||
const filteredTableData = computed(() => {
|
||||
let filtered = tableData.value;
|
||||
|
||||
Reference in New Issue
Block a user