diff --git a/src/api/crm/bi/rank.ts b/src/api/crm/statistics/rank.ts
similarity index 65%
rename from src/api/crm/bi/rank.ts
rename to src/api/crm/statistics/rank.ts
index 13ceb7ef..a9b355e0 100644
--- a/src/api/crm/bi/rank.ts
+++ b/src/api/crm/statistics/rank.ts
@@ -1,66 +1,66 @@
 import request from '@/config/axios'
 
-export interface BiRankRespVO {
+export interface StatisticsRankRespVO {
   count: number
   nickname: string
   deptName: string
 }
 
 // 排行 API
-export const RankApi = {
+export const StatisticsRankApi = {
   // 获得合同排行榜
   getContractPriceRank: (params: any) => {
     return request.get({
-      url: '/crm/bi-rank/get-contract-price-rank',
+      url: '/crm/statistics-rank/get-contract-price-rank',
       params
     })
   },
   // 获得回款排行榜
   getReceivablePriceRank: (params: any) => {
     return request.get({
-      url: '/crm/bi-rank/get-receivable-price-rank',
+      url: '/crm/statistics-rank/get-receivable-price-rank',
       params
     })
   },
   // 签约合同排行
   getContractCountRank: (params: any) => {
     return request.get({
-      url: '/crm/bi-rank/get-contract-count-rank',
+      url: '/crm/statistics-rank/get-contract-count-rank',
       params
     })
   },
   // 产品销量排行
   getProductSalesRank: (params: any) => {
     return request.get({
-      url: '/crm/bi-rank/get-product-sales-rank',
+      url: '/crm/statistics-rank/get-product-sales-rank',
       params
     })
   },
   // 新增客户数排行
   getCustomerCountRank: (params: any) => {
     return request.get({
-      url: '/crm/bi-rank/get-customer-count-rank',
+      url: '/crm/statistics-rank/get-customer-count-rank',
       params
     })
   },
   // 新增联系人数排行
   getContactsCountRank: (params: any) => {
     return request.get({
-      url: '/crm/bi-rank/get-contacts-count-rank',
+      url: '/crm/statistics-rank/get-contacts-count-rank',
       params
     })
   },
   // 跟进次数排行
   getFollowCountRank: (params: any) => {
     return request.get({
-      url: '/crm/bi-rank/get-follow-count-rank',
+      url: '/crm/statistics-rank/get-follow-count-rank',
       params
     })
   },
   // 跟进客户数排行
   getFollowCustomerCountRank: (params: any) => {
     return request.get({
-      url: '/crm/bi-rank/get-follow-customer-count-rank',
+      url: '/crm/statistics-rank/get-follow-customer-count-rank',
       params
     })
   }
diff --git a/src/views/crm/bi/rank/ContactsCountRank.vue b/src/views/crm/statistics/rank/ContactsCountRank.vue
similarity index 91%
rename from src/views/crm/bi/rank/ContactsCountRank.vue
rename to src/views/crm/statistics/rank/ContactsCountRank.vue
index 61ef91a6..199d94bd 100644
--- a/src/views/crm/bi/rank/ContactsCountRank.vue
+++ b/src/views/crm/statistics/rank/ContactsCountRank.vue
@@ -18,7 +18,7 @@
   </el-card>
 </template>
 <script setup lang="ts">
-import { RankApi, BiRankRespVO } from '@/api/crm/bi/rank'
+import { StatisticsRankApi, StatisticsRankRespVO } from '@/api/crm/statistics/rank'
 import { EChartsOption } from 'echarts'
 import { clone } from 'lodash-es'
 
@@ -26,7 +26,7 @@ defineOptions({ name: 'ContactsCountRank' })
 const props = defineProps<{ queryParams: any }>() // 搜索参数
 
 const loading = ref(false) // 加载中
-const list = ref<BiRankRespVO[]>([]) // 列表的数据
+const list = ref<StatisticsRankRespVO[]>([]) // 列表的数据
 
 /** 柱状图配置:横向 */
 const echartsOption = reactive<EChartsOption>({
@@ -80,7 +80,7 @@ const echartsOption = reactive<EChartsOption>({
 const loadData = async () => {
   // 1. 加载排行数据
   loading.value = true
-  const rankingList = await RankApi.getContactsCountRank(props.queryParams)
+  const rankingList = await StatisticsRankApi.getContactsCountRank(props.queryParams)
   // 2.1 更新 Echarts 数据
   if (echartsOption.dataset && echartsOption.dataset['source']) {
     echartsOption.dataset['source'] = clone(rankingList).reverse()
diff --git a/src/views/crm/bi/rank/ContractCountRank.vue b/src/views/crm/statistics/rank/ContractCountRank.vue
similarity index 90%
rename from src/views/crm/bi/rank/ContractCountRank.vue
rename to src/views/crm/statistics/rank/ContractCountRank.vue
index 28332653..fc50a6db 100644
--- a/src/views/crm/bi/rank/ContractCountRank.vue
+++ b/src/views/crm/statistics/rank/ContractCountRank.vue
@@ -18,7 +18,7 @@
   </el-card>
 </template>
 <script setup lang="ts">
-import { RankApi, BiRankRespVO } from '@/api/crm/bi/rank'
+import { StatisticsRankApi, StatisticsRankRespVO } from '@/api/crm/statistics/rank'
 import { EChartsOption } from 'echarts'
 import { clone } from 'lodash-es'
 
@@ -26,7 +26,7 @@ defineOptions({ name: 'ContractCountRank' })
 const props = defineProps<{ queryParams: any }>() // 搜索参数
 
 const loading = ref(false) // 加载中
-const list = ref<BiRankRespVO[]>([]) // 列表的数据
+const list = ref<StatisticsRankRespVO[]>([]) // 列表的数据
 
 /** 柱状图配置:横向 */
 const echartsOption = reactive<EChartsOption>({
@@ -80,7 +80,7 @@ const echartsOption = reactive<EChartsOption>({
 const loadData = async () => {
   // 1. 加载排行数据
   loading.value = true
-  const rankingList = await RankApi.getContractCountRank(props.queryParams)
+  const rankingList = await StatisticsRankApi.getContractCountRank(props.queryParams)
   // 2.1 更新 Echarts 数据
   if (echartsOption.dataset && echartsOption.dataset['source']) {
     echartsOption.dataset['source'] = clone(rankingList).reverse()
diff --git a/src/views/crm/bi/rank/ContractPriceRank.vue b/src/views/crm/statistics/rank/ContractPriceRank.vue
similarity index 90%
rename from src/views/crm/bi/rank/ContractPriceRank.vue
rename to src/views/crm/statistics/rank/ContractPriceRank.vue
index 067fa36c..79794c4e 100644
--- a/src/views/crm/bi/rank/ContractPriceRank.vue
+++ b/src/views/crm/statistics/rank/ContractPriceRank.vue
@@ -18,7 +18,7 @@
   </el-card>
 </template>
 <script setup lang="ts">
-import { RankApi, BiRankRespVO } from '@/api/crm/bi/rank'
+import { StatisticsRankApi, StatisticsRankRespVO } from '@/api/crm/statistics/rank'
 import { EChartsOption } from 'echarts'
 import { clone } from 'lodash-es'
 
@@ -26,7 +26,7 @@ defineOptions({ name: 'ContractPriceRank' })
 const props = defineProps<{ queryParams: any }>() // 搜索参数
 
 const loading = ref(false) // 加载中
-const list = ref<BiRankRespVO[]>([]) // 列表的数据
+const list = ref<StatisticsRankRespVO[]>([]) // 列表的数据
 
 /** 柱状图配置:横向 */
 const echartsOption = reactive<EChartsOption>({
@@ -80,7 +80,7 @@ const echartsOption = reactive<EChartsOption>({
 const loadData = async () => {
   // 1. 加载排行数据
   loading.value = true
-  const rankingList = await RankApi.getContractPriceRank(props.queryParams)
+  const rankingList = await StatisticsRankApi.getContractPriceRank(props.queryParams)
   // 2.1 更新 Echarts 数据
   if (echartsOption.dataset && echartsOption.dataset['source']) {
     echartsOption.dataset['source'] = clone(rankingList).reverse()
diff --git a/src/views/crm/bi/rank/CustomerCountRank.vue b/src/views/crm/statistics/rank/CustomerCountRank.vue
similarity index 90%
rename from src/views/crm/bi/rank/CustomerCountRank.vue
rename to src/views/crm/statistics/rank/CustomerCountRank.vue
index aeafd039..b66a6816 100644
--- a/src/views/crm/bi/rank/CustomerCountRank.vue
+++ b/src/views/crm/statistics/rank/CustomerCountRank.vue
@@ -18,7 +18,7 @@
   </el-card>
 </template>
 <script setup lang="ts">
-import { RankApi, BiRankRespVO } from '@/api/crm/bi/rank'
+import { StatisticsRankApi, StatisticsRankRespVO } from '@/api/crm/statistics/rank'
 import { EChartsOption } from 'echarts'
 import { clone } from 'lodash-es'
 
@@ -26,7 +26,7 @@ defineOptions({ name: 'CustomerCountRank' })
 const props = defineProps<{ queryParams: any }>() // 搜索参数
 
 const loading = ref(false) // 加载中
-const list = ref<BiRankRespVO[]>([]) // 列表的数据
+const list = ref<StatisticsRankRespVO[]>([]) // 列表的数据
 
 /** 柱状图配置:横向 */
 const echartsOption = reactive<EChartsOption>({
@@ -80,7 +80,7 @@ const echartsOption = reactive<EChartsOption>({
 const loadData = async () => {
   // 1. 加载排行数据
   loading.value = true
-  const rankingList = await RankApi.getCustomerCountRank(props.queryParams)
+  const rankingList = await StatisticsRankApi.getCustomerCountRank(props.queryParams)
   // 2.1 更新 Echarts 数据
   if (echartsOption.dataset && echartsOption.dataset['source']) {
     echartsOption.dataset['source'] = clone(rankingList).reverse()
diff --git a/src/views/crm/bi/rank/FollowCountRank.vue b/src/views/crm/statistics/rank/FollowCountRank.vue
similarity index 90%
rename from src/views/crm/bi/rank/FollowCountRank.vue
rename to src/views/crm/statistics/rank/FollowCountRank.vue
index e86cd7fa..43352ab0 100644
--- a/src/views/crm/bi/rank/FollowCountRank.vue
+++ b/src/views/crm/statistics/rank/FollowCountRank.vue
@@ -18,7 +18,7 @@
   </el-card>
 </template>
 <script setup lang="ts">
-import { RankApi, BiRankRespVO } from '@/api/crm/bi/rank'
+import { StatisticsRankApi, StatisticsRankRespVO } from '@/api/crm/statistics/rank'
 import { EChartsOption } from 'echarts'
 import { clone } from 'lodash-es'
 
@@ -26,7 +26,7 @@ defineOptions({ name: 'FollowCountRank' })
 const props = defineProps<{ queryParams: any }>() // 搜索参数
 
 const loading = ref(false) // 加载中
-const list = ref<BiRankRespVO[]>([]) // 列表的数据
+const list = ref<StatisticsRankRespVO[]>([]) // 列表的数据
 
 /** 柱状图配置:横向 */
 const echartsOption = reactive<EChartsOption>({
@@ -80,7 +80,7 @@ const echartsOption = reactive<EChartsOption>({
 const loadData = async () => {
   // 1. 加载排行数据
   loading.value = true
-  const rankingList = await RankApi.getFollowCountRank(props.queryParams)
+  const rankingList = await StatisticsRankApi.getFollowCountRank(props.queryParams)
   // 2.1 更新 Echarts 数据
   if (echartsOption.dataset && echartsOption.dataset['source']) {
     echartsOption.dataset['source'] = clone(rankingList).reverse()
diff --git a/src/views/crm/bi/rank/FollowCustomerCountRank.vue b/src/views/crm/statistics/rank/FollowCustomerCountRank.vue
similarity index 90%
rename from src/views/crm/bi/rank/FollowCustomerCountRank.vue
rename to src/views/crm/statistics/rank/FollowCustomerCountRank.vue
index 81d3b99d..92a22058 100644
--- a/src/views/crm/bi/rank/FollowCustomerCountRank.vue
+++ b/src/views/crm/statistics/rank/FollowCustomerCountRank.vue
@@ -18,7 +18,7 @@
   </el-card>
 </template>
 <script setup lang="ts">
-import { RankApi, BiRankRespVO } from '@/api/crm/bi/rank'
+import { StatisticsRankApi, StatisticsRankRespVO } from '@/api/crm/statistics/rank'
 import { EChartsOption } from 'echarts'
 import { clone } from 'lodash-es'
 
@@ -26,7 +26,7 @@ defineOptions({ name: 'FollowCustomerCountRank' })
 const props = defineProps<{ queryParams: any }>() // 搜索参数
 
 const loading = ref(false) // 加载中
-const list = ref<BiRankRespVO[]>([]) // 列表的数据
+const list = ref<StatisticsRankRespVO[]>([]) // 列表的数据
 
 /** 柱状图配置:横向 */
 const echartsOption = reactive<EChartsOption>({
@@ -80,7 +80,7 @@ const echartsOption = reactive<EChartsOption>({
 const loadData = async () => {
   // 1. 加载排行数据
   loading.value = true
-  const rankingList = await RankApi.getFollowCustomerCountRank(props.queryParams)
+  const rankingList = await StatisticsRankApi.getFollowCustomerCountRank(props.queryParams)
   // 2.1 更新 Echarts 数据
   if (echartsOption.dataset && echartsOption.dataset['source']) {
     echartsOption.dataset['source'] = clone(rankingList).reverse()
diff --git a/src/views/crm/bi/rank/ProductSalesRank.vue b/src/views/crm/statistics/rank/ProductSalesRank.vue
similarity index 90%
rename from src/views/crm/bi/rank/ProductSalesRank.vue
rename to src/views/crm/statistics/rank/ProductSalesRank.vue
index 3401dd91..e2a02b70 100644
--- a/src/views/crm/bi/rank/ProductSalesRank.vue
+++ b/src/views/crm/statistics/rank/ProductSalesRank.vue
@@ -18,7 +18,7 @@
   </el-card>
 </template>
 <script setup lang="ts">
-import { RankApi, BiRankRespVO } from '@/api/crm/bi/rank'
+import { StatisticsRankApi, StatisticsRankRespVO } from '@/api/crm/statistics/rank'
 import { EChartsOption } from 'echarts'
 import { clone } from 'lodash-es'
 
@@ -26,7 +26,7 @@ defineOptions({ name: 'ProductSalesRank' })
 const props = defineProps<{ queryParams: any }>() // 搜索参数
 
 const loading = ref(false) // 加载中
-const list = ref<BiRankRespVO[]>([]) // 列表的数据
+const list = ref<StatisticsRankRespVO[]>([]) // 列表的数据
 
 /** 柱状图配置:横向 */
 const echartsOption = reactive<EChartsOption>({
@@ -80,7 +80,7 @@ const echartsOption = reactive<EChartsOption>({
 const loadData = async () => {
   // 1. 加载排行数据
   loading.value = true
-  const rankingList = await RankApi.getProductSalesRank(props.queryParams)
+  const rankingList = await StatisticsRankApi.getProductSalesRank(props.queryParams)
   // 2.1 更新 Echarts 数据
   if (echartsOption.dataset && echartsOption.dataset['source']) {
     echartsOption.dataset['source'] = clone(rankingList).reverse()
diff --git a/src/views/crm/bi/rank/ReceivablePriceRank.vue b/src/views/crm/statistics/rank/ReceivablePriceRank.vue
similarity index 90%
rename from src/views/crm/bi/rank/ReceivablePriceRank.vue
rename to src/views/crm/statistics/rank/ReceivablePriceRank.vue
index b073dcda..a2f38422 100644
--- a/src/views/crm/bi/rank/ReceivablePriceRank.vue
+++ b/src/views/crm/statistics/rank/ReceivablePriceRank.vue
@@ -18,7 +18,7 @@
   </el-card>
 </template>
 <script setup lang="ts">
-import { RankApi, BiRankRespVO } from '@/api/crm/bi/rank'
+import { StatisticsRankApi, StatisticsRankRespVO } from '@/api/crm/statistics/rank'
 import { EChartsOption } from 'echarts'
 import { clone } from 'lodash-es'
 
@@ -26,7 +26,7 @@ defineOptions({ name: 'ReceivablePriceRank' })
 const props = defineProps<{ queryParams: any }>() // 搜索参数
 
 const loading = ref(false) // 加载中
-const list = ref<BiRankRespVO[]>([]) // 列表的数据
+const list = ref<StatisticsRankRespVO[]>([]) // 列表的数据
 
 /** 柱状图配置:横向 */
 const echartsOption = reactive<EChartsOption>({
@@ -81,7 +81,7 @@ const echartsOption = reactive<EChartsOption>({
 const loadData = async () => {
   // 1. 加载排行数据
   loading.value = true
-  const rankingList = await RankApi.getReceivablePriceRank(props.queryParams)
+  const rankingList = await StatisticsRankApi.getReceivablePriceRank(props.queryParams)
   // 2.1 更新 Echarts 数据
   if (echartsOption.dataset && echartsOption.dataset['source']) {
     echartsOption.dataset['source'] = clone(rankingList).reverse()
diff --git a/src/views/crm/bi/rank/index.vue b/src/views/crm/statistics/rank/index.vue
similarity index 99%
rename from src/views/crm/bi/rank/index.vue
rename to src/views/crm/statistics/rank/index.vue
index b82ff9a1..50f2f43f 100644
--- a/src/views/crm/bi/rank/index.vue
+++ b/src/views/crm/statistics/rank/index.vue
@@ -90,7 +90,7 @@ import * as DeptApi from '@/api/system/dept'
 import { beginOfDay, defaultShortcuts, endOfDay, formatDate } from '@/utils/formatTime'
 import { useUserStore } from '@/store/modules/user'
 
-defineOptions({ name: 'CrmBiRank' })
+defineOptions({ name: 'CrmStatisticsRank' })
 
 const queryParams = reactive({
   deptId: useUserStore().getUser.deptId,