Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
admin
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
13cf1fee
authored
Apr 06, 2024
by
dhb52
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor: 使用try finally停止loading
parent
8926dd11
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
152 additions
and
42 deletions
+152
-42
src/views/crm/statistics/customer/components/CustomerConversionStat.vue
+17
-8
src/views/crm/statistics/customer/components/CustomerDealCycle.vue
+39
-11
src/views/crm/statistics/customer/components/CustomerFollowUpSummary.vue
+42
-9
src/views/crm/statistics/customer/components/CustomerFollowUpType.vue
+15
-4
src/views/crm/statistics/customer/components/CustomerSummary.vue
+39
-10
No files found.
src/views/crm/statistics/customer/components/CustomerConversionStat.vue
View file @
13cf1fee
...
...
@@ -69,12 +69,12 @@ import {
CrmStatisticsCustomerSummaryByDateRespVO
}
from
'@/api/crm/statistics/customer'
import
{
EChartsOption
}
from
'echarts'
import
{
round
}
from
'lodash-es'
import
{
dateFormatter
}
from
'@/utils/formatTime'
import
{
erpPriceTableColumnFormatter
}
from
'@/utils'
import
{
DICT_TYPE
}
from
'@/utils/dict'
defineOptions
({
name
:
'CustomerConversionStat'
})
const
props
=
defineProps
<
{
queryParams
:
any
}
>
()
// 搜索参数
const
loading
=
ref
(
false
)
// 加载中
...
...
@@ -84,7 +84,7 @@ const list = ref<CrmStatisticsCustomerSummaryByDateRespVO[]>([]) // 列表的数
const
echartsOption
=
reactive
<
EChartsOption
>
({
grid
:
{
left
:
20
,
right
:
20
,
right
:
40
,
// 让X轴右侧显示完整
bottom
:
20
,
containLabel
:
true
},
...
...
@@ -124,11 +124,9 @@ const echartsOption = reactive<EChartsOption>({
}
})
as
EChartsOption
/** 获取
统计数据
*/
const
loadData
=
async
()
=>
{
/** 获取
数据并填充图表
*/
const
fetchAndFill
=
async
()
=>
{
// 1. 加载统计数据
loading
.
value
=
true
// TODO @ddhb52:这里调用 StatisticsCustomerApi.getCustomerSummaryByDate 好像不太对???
const
customerCount
=
await
StatisticsCustomerApi
.
getCustomerSummaryByDate
(
props
.
queryParams
)
const
contractSummary
=
await
StatisticsCustomerApi
.
getContractSummary
(
props
.
queryParams
)
// 2.1 更新 Echarts 数据
...
...
@@ -143,7 +141,7 @@ const loadData = async () => {
return
{
name
:
item
.
time
,
value
:
item
.
customerCreateCount
?
round
((
item
.
customerDealCount
/
item
.
customerCreateCount
)
*
100
,
2
)
?
((
item
.
customerDealCount
/
item
.
customerCreateCount
)
*
100
).
toFixed
(
2
)
:
0
}
}
...
...
@@ -151,8 +149,19 @@ const loadData = async () => {
}
// 2.2 更新列表数据
list
.
value
=
contractSummary
loading
.
value
=
false
}
/** 获取统计数据 */
const
loadData
=
async
()
=>
{
loading
.
value
=
true
try
{
fetchAndFill
()
}
finally
{
loading
.
value
=
false
}
}
defineExpose
({
loadData
})
/** 初始化 */
...
...
src/views/crm/statistics/customer/components/CustomerDealCycle.vue
View file @
13cf1fee
...
...
@@ -31,6 +31,7 @@ import {
import
{
EChartsOption
}
from
'echarts'
defineOptions
({
name
:
'CustomerDealCycle'
})
const
props
=
defineProps
<
{
queryParams
:
any
}
>
()
// 搜索参数
const
loading
=
ref
(
false
)
// 加载中
...
...
@@ -40,7 +41,7 @@ const list = ref<CrmStatisticsCustomerDealCycleByDateRespVO[]>([]) // 列表的
const
echartsOption
=
reactive
<
EChartsOption
>
({
grid
:
{
left
:
20
,
right
:
20
,
right
:
40
,
// 让X轴右侧显示完整
bottom
:
20
,
containLabel
:
true
},
...
...
@@ -49,12 +50,14 @@ const echartsOption = reactive<EChartsOption>({
{
name
:
'成交周期(天)'
,
type
:
'bar'
,
data
:
[]
data
:
[],
yAxisIndex
:
0
,
},
{
name
:
'成交客户数'
,
type
:
'bar'
,
data
:
[]
data
:
[],
yAxisIndex
:
1
,
}
],
toolbox
:
{
...
...
@@ -74,10 +77,26 @@ const echartsOption = reactive<EChartsOption>({
type
:
'shadow'
}
},
yAxis
:
{
type
:
'value'
,
name
:
'数量(个)'
},
yAxis
:
[
{
type
:
'value'
,
name
:
'成交周期(天)'
,
min
:
0
,
minInterval
:
1
,
// 显示整数刻度
},
{
type
:
'value'
,
name
:
'成交客户数'
,
min
:
0
,
minInterval
:
1
,
// 显示整数刻度
splitLine
:
{
lineStyle
:
{
type
:
'dotted'
,
// 右侧网格线虚化, 减少混乱
opacity
:
0.7
,
}
}
},
],
xAxis
:
{
type
:
'category'
,
name
:
'日期'
,
...
...
@@ -85,10 +104,9 @@ const echartsOption = reactive<EChartsOption>({
}
})
as
EChartsOption
/** 获取
统计数据
*/
const
loadData
=
async
()
=>
{
/** 获取
数据并填充图表
*/
const
fetchAndFill
=
async
()
=>
{
// 1. 加载统计数据
loading
.
value
=
true
const
customerDealCycleByDate
=
await
StatisticsCustomerApi
.
getCustomerDealCycleByDate
(
props
.
queryParams
)
...
...
@@ -116,7 +134,17 @@ const loadData = async () => {
}
// 2.2 更新列表数据
list
.
value
=
customerDealCycleByUser
loading
.
value
=
false
}
/** 获取统计数据 */
const
loadData
=
async
()
=>
{
loading
.
value
=
true
try
{
fetchAndFill
()
}
finally
{
loading
.
value
=
false
}
}
defineExpose
({
loadData
})
...
...
src/views/crm/statistics/customer/components/CustomerFollowUpSummary.vue
View file @
13cf1fee
<!-- 客户跟进次数分析 -->
<
template
>
<!-- Echarts图 -->
<el-card
shadow=
"never"
>
<el-card
shadow=
"never"
>
<el-skeleton
:loading=
"loading"
animated
>
<Echart
:height=
"500"
:options=
"echartsOption"
/>
</el-skeleton>
...
...
@@ -28,9 +28,11 @@ import {
CrmStatisticsFollowUpSummaryByDateRespVO
,
CrmStatisticsFollowUpSummaryByUserRespVO
}
from
'@/api/crm/statistics/customer'
import
Echart
from
'@/components/Echart/src/Echart.vue'
;
import
{
EChartsOption
}
from
'echarts'
defineOptions
({
name
:
'CustomerFollowupSummary'
})
const
props
=
defineProps
<
{
queryParams
:
any
}
>
()
// 搜索参数
const
loading
=
ref
(
false
)
// 加载中
...
...
@@ -40,7 +42,7 @@ const list = ref<CrmStatisticsFollowUpSummaryByUserRespVO[]>([]) // 列表的数
const
echartsOption
=
reactive
<
EChartsOption
>
({
grid
:
{
left
:
20
,
right
:
20
,
right
:
30
,
// 让X轴右侧显示完整
bottom
:
20
,
containLabel
:
true
},
...
...
@@ -49,11 +51,13 @@ const echartsOption = reactive<EChartsOption>({
{
name
:
'跟进客户数'
,
type
:
'bar'
,
yAxisIndex
:
0
,
data
:
[]
},
{
name
:
'跟进次数'
,
type
:
'bar'
,
yAxisIndex
:
1
,
data
:
[]
}
],
...
...
@@ -74,19 +78,38 @@ const echartsOption = reactive<EChartsOption>({
type
:
'shadow'
}
},
yAxis
:
{
type
:
'value'
,
name
:
'数量(个)'
},
yAxis
:
[
{
type
:
'value'
,
name
:
'跟进客户数'
,
min
:
0
,
minInterval
:
1
,
// 显示整数刻度
},
{
type
:
'value'
,
name
:
'跟进次数'
,
min
:
0
,
minInterval
:
1
,
// 显示整数刻度
splitLine
:
{
lineStyle
:
{
type
:
'dotted'
,
// 右侧网格线虚化, 减少混乱
opacity
:
0.7
,
}
}
}
],
xAxis
:
{
type
:
'category'
,
name
:
'日期'
,
axisTick
:
{
alignWithLabel
:
true
},
data
:
[]
}
})
as
EChartsOption
/** 获取
统计数据
*/
const
loadData
=
async
()
=>
{
/** 获取
数据并填充图表
*/
const
fetchAndFill
=
async
()
=>
{
// 1. 加载统计数据
loading
.
value
=
true
const
followUpSummaryByDate
=
await
StatisticsCustomerApi
.
getFollowUpSummaryByDate
(
...
...
@@ -113,7 +136,17 @@ const loadData = async () => {
}
// 2.2 更新列表数据
list
.
value
=
followUpSummaryByUser
loading
.
value
=
false
}
/** 获取统计数据 */
const
loadData
=
async
()
=>
{
loading
.
value
=
true
try
{
fetchAndFill
()
}
finally
{
loading
.
value
=
false
}
}
defineExpose
({
loadData
})
...
...
src/views/crm/statistics/customer/components/CustomerFollowUpType.vue
View file @
13cf1fee
...
...
@@ -32,6 +32,7 @@ import { DICT_TYPE, getDictLabel } from '@/utils/dict'
import
{
erpCalculatePercentage
}
from
'@/utils'
defineOptions
({
name
:
'CustomerFollowupType'
})
const
props
=
defineProps
<
{
queryParams
:
any
}
>
()
// 搜索参数
const
loading
=
ref
(
false
)
// 加载中
...
...
@@ -73,10 +74,9 @@ const echartsOption = reactive<EChartsOption>({
]
})
as
EChartsOption
/** 获取
统计数据
*/
const
loadData
=
async
()
=>
{
/** 获取
数据并填充图表
*/
const
fetchAndFill
=
async
()
=>
{
// 1. 加载统计数据
loading
.
value
=
true
const
followUpSummaryByType
=
await
StatisticsCustomerApi
.
getFollowUpSummaryByType
(
props
.
queryParams
)
...
...
@@ -99,8 +99,19 @@ const loadData = async () => {
portion
:
erpCalculatePercentage
(
row
.
followUpRecordCount
,
totalCount
)
}
})
loading
.
value
=
false
}
/** 获取统计数据 */
const
loadData
=
async
()
=>
{
loading
.
value
=
true
try
{
fetchAndFill
()
}
finally
{
loading
.
value
=
false
}
}
defineExpose
({
loadData
})
/** 初始化 */
...
...
src/views/crm/statistics/customer/components/CustomerSummary.vue
View file @
13cf1fee
...
...
@@ -61,6 +61,7 @@ import { EChartsOption } from 'echarts'
import
{
erpCalculatePercentage
,
erpPriceTableColumnFormatter
}
from
'@/utils'
defineOptions
({
name
:
'CustomerSummary'
})
const
props
=
defineProps
<
{
queryParams
:
any
}
>
()
// 搜索参数
const
loading
=
ref
(
false
)
// 加载中
...
...
@@ -70,7 +71,7 @@ const list = ref<CrmStatisticsCustomerSummaryByUserRespVO[]>([]) // 列表的数
const
echartsOption
=
reactive
<
EChartsOption
>
({
grid
:
{
left
:
20
,
right
:
20
,
right
:
30
,
// 让X轴右侧显示完整
bottom
:
20
,
containLabel
:
true
},
...
...
@@ -79,11 +80,13 @@ const echartsOption = reactive<EChartsOption>({
{
name
:
'新增客户数'
,
type
:
'bar'
,
yAxisIndex
:
0
,
data
:
[]
},
{
name
:
'成交客户数'
,
type
:
'bar'
,
yAxisIndex
:
1
,
data
:
[]
}
],
...
...
@@ -104,21 +107,36 @@ const echartsOption = reactive<EChartsOption>({
type
:
'shadow'
}
},
yAxis
:
{
type
:
'value'
,
name
:
'数量(个)'
},
yAxis
:
[
{
type
:
'value'
,
name
:
'新增客户数'
,
min
:
0
,
minInterval
:
1
,
// 显示整数刻度
},
{
type
:
'value'
,
name
:
'成交客户数'
,
min
:
0
,
minInterval
:
1
,
// 显示整数刻度
splitLine
:
{
lineStyle
:
{
type
:
'dotted'
,
// 右侧网格线虚化, 减少混乱
opacity
:
0.7
,
}
}
}
],
xAxis
:
{
type
:
'category'
,
name
:
'日期'
,
data
:
[]
data
:
[]
,
}
})
as
EChartsOption
/** 获取
统计数据
*/
const
loadData
=
async
()
=>
{
/** 获取
数据并填充图表
*/
const
fetchAndFill
=
async
()
=>
{
// 1. 加载统计数据
loading
.
value
=
true
const
customerSummaryByDate
=
await
StatisticsCustomerApi
.
getCustomerSummaryByDate
(
props
.
queryParams
)
...
...
@@ -141,10 +159,21 @@ const loadData = async () => {
(
s
:
CrmStatisticsCustomerSummaryByDateRespVO
)
=>
s
.
customerDealCount
)
}
// 2.2 更新列表数据
list
.
value
=
customerSummaryByUser
loading
.
value
=
false
}
/** 获取统计数据 */
const
loadData
=
async
()
=>
{
loading
.
value
=
true
try
{
fetchAndFill
()
}
finally
{
loading
.
value
=
false
}
}
defineExpose
({
loadData
})
/** 初始化 */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment