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
f4dd1bed
authored
Apr 19, 2024
by
scholar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1, 修改数据列表无法刷新的问题;
2, 修改时间选择,后端按照年实现的,前端同样按照年份选择实现; 3,修改环比同比计算; 4,回款金额统计bug修复。
parent
b57a2c50
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
39 additions
and
33 deletions
+39
-33
src/views/crm/statistics/performance/components/ContractCountPerformance.vue
+7
-6
src/views/crm/statistics/performance/components/ContractPricePerformance.vue
+6
-5
src/views/crm/statistics/performance/components/ReceivablePricePerformance.vue
+6
-5
src/views/crm/statistics/performance/index.vue
+20
-17
No files found.
src/views/crm/statistics/performance/components/ContractCountPerformance.vue
View file @
f4dd1bed
<!--
客户总量
统计 -->
<!--
员工业绩
统计 -->
<
template
>
<
template
>
<!-- Echarts图 -->
<!-- Echarts图 -->
<el-card
shadow=
"never"
>
<el-card
shadow=
"never"
>
...
@@ -180,6 +180,7 @@ const loadData = async () => {
...
@@ -180,6 +180,7 @@ const loadData = async () => {
// 2.2 更新列表数据
// 2.2 更新列表数据
list
.
value
=
performanceList
list
.
value
=
performanceList
convertListData
()
loading
.
value
=
false
loading
.
value
=
false
}
}
...
@@ -189,9 +190,10 @@ const columnsData = reactive([]);
...
@@ -189,9 +190,10 @@ const columnsData = reactive([]);
const
tableData
=
reactive
([{
title
:
'当月合同数量统计(个)'
},
{
title
:
'上月合同数量统计(个)'
},
const
tableData
=
reactive
([{
title
:
'当月合同数量统计(个)'
},
{
title
:
'上月合同数量统计(个)'
},
{
title
:
'去年当月合同数量统计(个)'
},
{
title
:
'同比增长率(%)'
},
{
title
:
'环比增长率(%)'
}])
{
title
:
'去年当月合同数量统计(个)'
},
{
title
:
'同比增长率(%)'
},
{
title
:
'环比增长率(%)'
}])
// 定义
init 方法
// 定义
convertListData 方法,数据行列转置,展示每月数据
const
init
=
()
=>
{
const
convertListData
=
()
=>
{
const
columnObj
=
{
label
:
'日期'
,
prop
:
'title'
}
const
columnObj
=
{
label
:
'日期'
,
prop
:
'title'
}
columnsData
.
splice
(
0
,
columnsData
.
length
);
//清空数组
columnsData
.
push
(
columnObj
)
columnsData
.
push
(
columnObj
)
list
.
value
.
forEach
((
item
,
index
)
=>
{
list
.
value
.
forEach
((
item
,
index
)
=>
{
...
@@ -200,8 +202,8 @@ const init = () => {
...
@@ -200,8 +202,8 @@ const init = () => {
tableData
[
0
][
'prop'
+
index
]
=
item
.
currentMonthCount
tableData
[
0
][
'prop'
+
index
]
=
item
.
currentMonthCount
tableData
[
1
][
'prop'
+
index
]
=
item
.
lastMonthCount
tableData
[
1
][
'prop'
+
index
]
=
item
.
lastMonthCount
tableData
[
2
][
'prop'
+
index
]
=
item
.
lastYearCount
tableData
[
2
][
'prop'
+
index
]
=
item
.
lastYearCount
tableData
[
3
][
'prop'
+
index
]
=
item
.
last
YearCount
!==
0
?
(
item
.
currentMonthCount
/
item
.
lastYear
Count
).
toFixed
(
2
)
:
'NULL'
tableData
[
3
][
'prop'
+
index
]
=
item
.
last
MonthCount
!==
0
?
(
item
.
currentMonthCount
/
item
.
lastMonth
Count
).
toFixed
(
2
)
:
'NULL'
tableData
[
4
][
'prop'
+
index
]
=
item
.
last
MonthCount
!==
0
?
(
item
.
currentMonthCount
/
item
.
lastMonth
Count
).
toFixed
(
2
)
:
'NULL'
tableData
[
4
][
'prop'
+
index
]
=
item
.
last
YearCount
!==
0
?
(
item
.
currentMonthCount
/
item
.
lastYear
Count
).
toFixed
(
2
)
:
'NULL'
})
})
}
}
...
@@ -210,6 +212,5 @@ defineExpose({ loadData })
...
@@ -210,6 +212,5 @@ defineExpose({ loadData })
/** 初始化 */
/** 初始化 */
onMounted
(
async
()
=>
{
onMounted
(
async
()
=>
{
await
loadData
()
await
loadData
()
init
()
})
})
</
script
>
</
script
>
src/views/crm/statistics/performance/components/ContractPricePerformance.vue
View file @
f4dd1bed
<!--
客户总量
统计 -->
<!--
员工业绩
统计 -->
<
template
>
<
template
>
<!-- Echarts图 -->
<!-- Echarts图 -->
<el-card
shadow=
"never"
>
<el-card
shadow=
"never"
>
...
@@ -180,6 +180,7 @@ const loadData = async () => {
...
@@ -180,6 +180,7 @@ const loadData = async () => {
// 2.2 更新列表数据
// 2.2 更新列表数据
list
.
value
=
performanceList
list
.
value
=
performanceList
convertListData
()
loading
.
value
=
false
loading
.
value
=
false
}
}
...
@@ -190,8 +191,9 @@ const tableData = reactive([{title: '当月合同金额统计(元)'}, {title
...
@@ -190,8 +191,9 @@ const tableData = reactive([{title: '当月合同金额统计(元)'}, {title
{
title
:
'同比增长率(%)'
},
{
title
:
'环比增长率(%)'
}])
{
title
:
'同比增长率(%)'
},
{
title
:
'环比增长率(%)'
}])
// 定义 init 方法
// 定义 init 方法
const
init
=
()
=>
{
const
convertListData
=
()
=>
{
const
columnObj
=
{
label
:
'日期'
,
prop
:
'title'
}
const
columnObj
=
{
label
:
'日期'
,
prop
:
'title'
}
columnsData
.
splice
(
0
,
columnsData
.
length
)
//清空数组
columnsData
.
push
(
columnObj
)
columnsData
.
push
(
columnObj
)
list
.
value
.
forEach
((
item
,
index
)
=>
{
list
.
value
.
forEach
((
item
,
index
)
=>
{
...
@@ -200,8 +202,8 @@ const init = () => {
...
@@ -200,8 +202,8 @@ const init = () => {
tableData
[
0
][
'prop'
+
index
]
=
item
.
currentMonthCount
tableData
[
0
][
'prop'
+
index
]
=
item
.
currentMonthCount
tableData
[
1
][
'prop'
+
index
]
=
item
.
lastMonthCount
tableData
[
1
][
'prop'
+
index
]
=
item
.
lastMonthCount
tableData
[
2
][
'prop'
+
index
]
=
item
.
lastYearCount
tableData
[
2
][
'prop'
+
index
]
=
item
.
lastYearCount
tableData
[
3
][
'prop'
+
index
]
=
item
.
last
YearCount
!==
0
?
(
item
.
currentMonthCount
/
item
.
lastYear
Count
).
toFixed
(
2
)
:
'NULL'
tableData
[
3
][
'prop'
+
index
]
=
item
.
last
MonthCount
!==
0
?
(
item
.
currentMonthCount
/
item
.
lastMonth
Count
).
toFixed
(
2
)
:
'NULL'
tableData
[
4
][
'prop'
+
index
]
=
item
.
last
MonthCount
!==
0
?
(
item
.
currentMonthCount
/
item
.
lastMonth
Count
).
toFixed
(
2
)
:
'NULL'
tableData
[
4
][
'prop'
+
index
]
=
item
.
last
YearCount
!==
0
?
(
item
.
currentMonthCount
/
item
.
lastYear
Count
).
toFixed
(
2
)
:
'NULL'
})
})
}
}
...
@@ -210,6 +212,5 @@ defineExpose({ loadData })
...
@@ -210,6 +212,5 @@ defineExpose({ loadData })
/** 初始化 */
/** 初始化 */
onMounted
(
async
()
=>
{
onMounted
(
async
()
=>
{
await
loadData
()
await
loadData
()
init
()
})
})
</
script
>
</
script
>
src/views/crm/statistics/performance/components/ReceivablePricePerformance.vue
View file @
f4dd1bed
<!--
客户总量
统计 -->
<!--
员工业绩
统计 -->
<
template
>
<
template
>
<!-- Echarts图 -->
<!-- Echarts图 -->
<el-card
shadow=
"never"
>
<el-card
shadow=
"never"
>
...
@@ -180,6 +180,7 @@ const loadData = async () => {
...
@@ -180,6 +180,7 @@ const loadData = async () => {
// 2.2 更新列表数据
// 2.2 更新列表数据
list
.
value
=
performanceList
list
.
value
=
performanceList
convertListData
()
loading
.
value
=
false
loading
.
value
=
false
}
}
...
@@ -190,8 +191,9 @@ const tableData = reactive([{title: '当月回款金额统计(元)'}, {title
...
@@ -190,8 +191,9 @@ const tableData = reactive([{title: '当月回款金额统计(元)'}, {title
{
title
:
'去年当月回款金额统计(元)'
},
{
title
:
'同比增长率(%)'
},
{
title
:
'环比增长率(%)'
}]);
{
title
:
'去年当月回款金额统计(元)'
},
{
title
:
'同比增长率(%)'
},
{
title
:
'环比增长率(%)'
}]);
// 定义 init 方法
// 定义 init 方法
const
init
=
()
=>
{
const
convertListData
=
()
=>
{
const
columnObj
=
{
label
:
'日期'
,
prop
:
'title'
}
const
columnObj
=
{
label
:
'日期'
,
prop
:
'title'
}
columnsData
.
splice
(
0
,
columnsData
.
length
)
//清空数组
columnsData
.
push
(
columnObj
)
columnsData
.
push
(
columnObj
)
list
.
value
.
forEach
((
item
,
index
)
=>
{
list
.
value
.
forEach
((
item
,
index
)
=>
{
...
@@ -200,8 +202,8 @@ const init = () => {
...
@@ -200,8 +202,8 @@ const init = () => {
tableData
[
0
][
'prop'
+
index
]
=
item
.
currentMonthCount
tableData
[
0
][
'prop'
+
index
]
=
item
.
currentMonthCount
tableData
[
1
][
'prop'
+
index
]
=
item
.
lastMonthCount
tableData
[
1
][
'prop'
+
index
]
=
item
.
lastMonthCount
tableData
[
2
][
'prop'
+
index
]
=
item
.
lastYearCount
tableData
[
2
][
'prop'
+
index
]
=
item
.
lastYearCount
tableData
[
3
][
'prop'
+
index
]
=
item
.
last
YearCount
!==
0
?
(
item
.
currentMonthCount
/
item
.
lastYear
Count
).
toFixed
(
2
)
:
'NULL'
tableData
[
3
][
'prop'
+
index
]
=
item
.
last
MonthCount
!==
0
?
(
item
.
currentMonthCount
/
item
.
lastMonth
Count
).
toFixed
(
2
)
:
'NULL'
tableData
[
4
][
'prop'
+
index
]
=
item
.
last
MonthCount
!==
0
?
(
item
.
currentMonthCount
/
item
.
lastMonth
Count
).
toFixed
(
2
)
:
'NULL'
tableData
[
4
][
'prop'
+
index
]
=
item
.
last
YearCount
!==
0
?
(
item
.
currentMonthCount
/
item
.
lastYear
Count
).
toFixed
(
2
)
:
'NULL'
})
})
}
}
...
@@ -210,6 +212,5 @@ defineExpose({ loadData })
...
@@ -210,6 +212,5 @@ defineExpose({ loadData })
/** 初始化 */
/** 初始化 */
onMounted
(
async
()
=>
{
onMounted
(
async
()
=>
{
await
loadData
()
await
loadData
()
init
()
})
})
</
script
>
</
script
>
src/views/crm/statistics/performance/index.vue
View file @
f4dd1bed
<!-- 数据统计 - 员工
客户
分析 -->
<!-- 数据统计 - 员工
业绩
分析 -->
<
template
>
<
template
>
<ContentWrap>
<ContentWrap>
<!-- 搜索工作栏 -->
<!-- 搜索工作栏 -->
...
@@ -9,16 +9,13 @@
...
@@ -9,16 +9,13 @@
:inline=
"true"
:inline=
"true"
label-width=
"68px"
label-width=
"68px"
>
>
<el-form-item
label=
"
时间范围
"
prop=
"orderDate"
>
<el-form-item
label=
"
选择年份
"
prop=
"orderDate"
>
<el-date-picker
<el-date-picker
v-model=
"queryParams.times"
v-model=
"queryParams.times[0]"
:shortcuts=
"defaultShortcuts"
class=
"!w-240px"
class=
"!w-240px"
end-placeholder=
"结束日期"
type=
"year"
start-placeholder=
"开始日期"
value-format=
"YYYY"
type=
"daterange"
:default-time=
"[new Date().getFullYear()]"
value-format=
"YYYY-MM-DD HH:mm:ss"
:default-time=
"[new Date('1 00:00:00'), new Date('1 23:59:59')]"
/>
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"归属部门"
prop=
"deptId"
>
<el-form-item
label=
"归属部门"
prop=
"deptId"
>
...
@@ -62,7 +59,7 @@
...
@@ -62,7 +59,7 @@
<ContractPricePerformance
:query-params=
"queryParams"
ref=
"ContractPricePerformanceRef"
/>
<ContractPricePerformance
:query-params=
"queryParams"
ref=
"ContractPricePerformanceRef"
/>
</el-tab-pane>
</el-tab-pane>
<!-- 员工回款金额统计 -->
<!-- 员工回款金额统计 -->
<el-tab-pane
label=
"员工回款金额统计"
name=
"
followupTyp
e"
lazy
>
<el-tab-pane
label=
"员工回款金额统计"
name=
"
ReceivablePricePerformanc
e"
lazy
>
<ReceivablePricePerformance
:query-params=
"queryParams"
ref=
"ReceivablePricePerformanceRef"
/>
<ReceivablePricePerformance
:query-params=
"queryParams"
ref=
"ReceivablePricePerformanceRef"
/>
</el-tab-pane>
</el-tab-pane>
</el-tabs>
</el-tabs>
...
@@ -78,9 +75,6 @@ import { defaultProps, handleTree } from '@/utils/tree'
...
@@ -78,9 +75,6 @@ import { defaultProps, handleTree } from '@/utils/tree'
import
ContractCountPerformance
from
'./components/ContractCountPerformance.vue'
import
ContractCountPerformance
from
'./components/ContractCountPerformance.vue'
import
ContractPricePerformance
from
'./components/ContractPricePerformance.vue'
import
ContractPricePerformance
from
'./components/ContractPricePerformance.vue'
import
ReceivablePricePerformance
from
'./components/ReceivablePricePerformance.vue'
import
ReceivablePricePerformance
from
'./components/ReceivablePricePerformance.vue'
import
CustomerFollowupType
from
'./components/CustomerFollowupType.vue'
import
CustomerConversionStat
from
'./components/CustomerConversionStat.vue'
import
CustomerDealCycle
from
'./components/CustomerDealCycle.vue'
defineOptions
({
name
:
'CrmStatisticsCustomer'
})
defineOptions
({
name
:
'CrmStatisticsCustomer'
})
...
@@ -88,9 +82,8 @@ const queryParams = reactive({
...
@@ -88,9 +82,8 @@ const queryParams = reactive({
deptId
:
useUserStore
().
getUser
.
deptId
,
deptId
:
useUserStore
().
getUser
.
deptId
,
userId
:
undefined
,
userId
:
undefined
,
times
:
[
times
:
[
// 默认显示最近一周的数据
// 默认显示当年的数据
formatDate
(
beginOfDay
(
new
Date
(
new
Date
().
getTime
()
-
3600
*
1000
*
24
*
7
))),
formatDate
(
beginOfDay
(
new
Date
(
new
Date
().
getTime
()
-
3600
*
1000
*
24
*
7
)))
formatDate
(
endOfDay
(
new
Date
(
new
Date
().
getTime
()
-
3600
*
1000
*
24
)))
]
]
})
})
...
@@ -113,9 +106,19 @@ const ContractPricePerformanceRef = ref()
...
@@ -113,9 +106,19 @@ const ContractPricePerformanceRef = ref()
// 3.员工回款金额统计
// 3.员工回款金额统计
const
ReceivablePricePerformanceRef
=
ref
()
const
ReceivablePricePerformanceRef
=
ref
()
/** 搜索按钮操作 */
/** 搜索按钮操作 */
const
handleQuery
=
()
=>
{
const
handleQuery
=
()
=>
{
// 从 queryParams.times[0] 中获取到了年份
const
selectYear
=
parseInt
(
queryParams
.
times
[
0
])
// 创建一个新的 Date 对象,设置为指定的年份的第一天
const
fullDate
=
new
Date
(
selectYear
,
0
,
1
,
0
,
0
,
0
)
// 将完整的日期时间格式化为需要的字符串形式,比如 2004-01-01 00:00:00
queryParams
.
times
[
0
]
=
`
${
fullDate
.
getFullYear
()}
-
${
String
(
fullDate
.
getMonth
()
+
1
).
padStart
(
2
,
'0'
)
}
-
${
String
(
fullDate
.
getDate
()).
padStart
(
2
,
'0'
)}
${
String
(
fullDate
.
getHours
()).
padStart
(
2
,
'0'
)}
:
${
String
(
fullDate
.
getMinutes
()).
padStart
(
2
,
'0'
)}
:
${
String
(
fullDate
.
getSeconds
()).
padStart
(
2
,
'0'
)}
`
switch
(
activeTab
.
value
)
{
switch
(
activeTab
.
value
)
{
case
'ContractCountPerformance'
:
case
'ContractCountPerformance'
:
ContractCountPerformanceRef
.
value
?.
loadData
?.()
ContractCountPerformanceRef
.
value
?.
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