Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
E
enterprise-opt-kit
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fubaole
enterprise-opt-kit
Commits
6402c952
Commit
6402c952
authored
May 19, 2021
by
乐宝呗666
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加运营模块的功能
parent
b30dab83
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
673 additions
and
1025 deletions
+673
-1025
.env.production
.env.production
+1
-0
con.business.js
src/api/con.business.js
+56
-5
con.operation.js
src/api/con.operation.js
+155
-0
element.scss
src/assets/style/fixed/element.scss
+6
-0
public.scss
src/assets/style/public.scss
+1
-0
index.vue
src/components/HeaderLayout/index.vue
+3
-3
barChart.vue
src/components/echarts/barChart.vue
+9
-8
doubleYBarChart.vue
src/components/echarts/doubleYBarChart.vue
+8
-7
negativeBarChart.vue
src/components/echarts/negativeBarChart.vue
+6
-5
pieChart.vue
src/components/echarts/pieChart.vue
+5
-9
page.vue
src/views/content/business/page.vue
+159
-555
agingAnalysis.vue
src/views/content/operation/components/agingAnalysis.vue
+24
-15
budgetRatio.vue
src/views/content/operation/components/budgetRatio.vue
+30
-182
cashFlow.vue
src/views/content/operation/components/cashFlow.vue
+32
-20
contractAmount.vue
src/views/content/operation/components/contractAmount.vue
+18
-16
productIncome.vue
src/views/content/operation/components/productIncome.vue
+24
-18
receiptStatistics.vue
src/views/content/operation/components/receiptStatistics.vue
+24
-29
revenueRanking.vue
src/views/content/operation/components/revenueRanking.vue
+44
-33
revenueStatistics.vue
src/views/content/operation/components/revenueStatistics.vue
+29
-58
totalExpenses.vue
src/views/content/operation/components/totalExpenses.vue
+29
-55
page.vue
src/views/content/operation/page.vue
+2
-0
importantProject.vue
src/views/system/index/components/importantProject.vue
+1
-0
knowledgeGraph.vue
src/views/system/index/components/knowledgeGraph.vue
+1
-1
page.vue
src/views/system/login/page.vue
+6
-6
No files found.
.env.production
View file @
6402c952
...
@@ -6,5 +6,6 @@ VUE_APP_TITLE = D2Admin Dev
...
@@ -6,5 +6,6 @@ VUE_APP_TITLE = D2Admin Dev
NODE_ENV = "production"
NODE_ENV = "production"
# 生产环境 API
# 生产环境 API
VUE_APP_BASE_API = '/'
VUE_APP_BASE_API = '/'
VUE_APP_PUBLIC_PATH = '/front'
# 生产环境 URL
# 生产环境 URL
VUE_APP_REQUEST_URL = 'http://111.203.232.175:8085'
VUE_APP_REQUEST_URL = 'http://111.203.232.175:8085'
src/api/con.business.js
View file @
6402c952
import
{
service
,
request
,
serviceForMock
,
requestForMock
,
mock
}
from
'./service'
import
{
request
}
from
'./service'
// 获取商机统计
// 获取商机
export
function
getOpportunitiesStatistics
()
{
export
function
GetBusinessList
()
{
return
request
({
return
request
({
url
:
'/tp/
niche/list
'
,
url
:
'/tp/
opportunities/getOpportunitiesStatistics
'
,
method
:
'get'
method
:
'get'
})
})
}
}
// 获取商机行业分布
export
function
getDistribution
(
params
)
{
return
request
({
url
:
'/tp/opportunities/getDistribution'
,
method
:
'get'
,
params
})
}
// 用户端获取商机分布
export
function
getOpportunitiesDistribution
(
params
)
{
return
request
({
url
:
'/tp/opportunities/getOpportunitiesDistribution'
,
method
:
'get'
,
params
})
}
// 用户端获取合同税率分布
export
function
getTaxRate
(
params
)
{
return
request
({
url
:
'/tp/opportunities/getTaxRate'
,
method
:
'get'
,
params
})
}
// 用户端获取产品类型分析
export
function
getProductType
(
params
)
{
return
request
({
url
:
'/tp/opportunities/getProductType'
,
method
:
'get'
,
params
})
}
// 用户端获取新商机分析
export
function
getNewOpportunities
(
params
)
{
return
request
({
url
:
'/tp/opportunities/getNewOpportunities'
,
method
:
'get'
,
params
})
}
// 用户端获取商机成功率
export
function
getBillRate
(
params
)
{
return
request
({
url
:
'/tp/opportunities/getBillRate'
,
method
:
'get'
,
params
})
}
src/api/con.operation.js
0 → 100644
View file @
6402c952
import
{
request
}
from
'./service'
// 获取预算完成比年份下拉框
export
function
getBudgetYear
()
{
return
request
({
url
:
'/tp/operate/getBudgetYear'
,
method
:
'get'
})
}
// 获取预算完图表数据
export
function
getBudget
(
params
)
{
return
request
({
url
:
'/tp/operate/getBudget'
,
method
:
'get'
,
params
})
}
// 获取合同金额年份下拉框
export
function
getContractYear
(
params
)
{
return
request
({
url
:
'/tp/operate/getContractYear'
,
method
:
'get'
,
params
})
}
// 获取合同金额图表数据
export
function
getContract
(
params
)
{
return
request
({
url
:
'/tp/operate/getContract'
,
method
:
'get'
,
params
})
}
// 获取项目收入年份下拉框
export
function
getProjectYear
()
{
return
request
({
url
:
'/tp/operate/getProjectYear'
,
method
:
'get'
})
}
// 获取项目收入图表数据
export
function
getProject
(
params
)
{
return
request
({
url
:
'/tp/operate/getProject'
,
method
:
'get'
,
params
})
}
// 获取应收账龄年份下拉框
export
function
getCollectAgeYear
(
params
)
{
return
request
({
url
:
'/tp/operate/getCollectAgeYear'
,
method
:
'get'
,
params
})
}
// 获取应收账龄图表数据
export
function
getCollectAge
(
params
)
{
return
request
({
url
:
'/tp/operate/getCollectAge'
,
method
:
'get'
,
params
})
}
// 获取回款统计年份下拉框
export
function
getCollectionYear
()
{
return
request
({
url
:
'/tp/operate/getCollectionYear'
,
method
:
'get'
})
}
// 获取回款统计图表数据
export
function
getCollection
(
params
)
{
return
request
({
url
:
'/tp/operate/getCollection'
,
method
:
'get'
,
params
})
}
// 获取现金流年份下拉框
export
function
getCashFlowYear
(
params
)
{
return
request
({
url
:
'/tp/operate/getCashFlowYear'
,
method
:
'get'
,
params
})
}
// 获取现金流图表数据
export
function
getCashFlow
(
params
)
{
return
request
({
url
:
'/tp/operate/getCashFlow'
,
method
:
'get'
,
params
})
}
// 获取组织机构下拉列表数据
export
function
getCashFlowList
(
params
)
{
return
request
({
url
:
'/tp/organ/getList'
,
method
:
'post'
,
params
})
}
// 营收排行年份下拉框
export
function
getRankYear
(
params
)
{
return
request
({
url
:
'/tp/operate/getRankYear'
,
method
:
'get'
,
params
})
}
// 获取营收排行图表数据
export
function
getRank
(
params
)
{
return
request
({
url
:
'/tp/operate/getRank'
,
method
:
'get'
,
params
})
}
// 费用统计年份下拉框
export
function
getFeeYear
(
params
)
{
return
request
({
url
:
'/tp/operate/getFeeYear'
,
method
:
'get'
,
params
})
}
// 费用统计
export
function
getFee
(
params
)
{
return
request
({
url
:
'/tp/operate/getFee'
,
method
:
'get'
,
params
})
}
// 营收统计年份下拉框
export
function
getRevenueYear
(
params
)
{
return
request
({
url
:
'/tp/operate/getRevenueYear'
,
method
:
'get'
,
params
})
}
// 营收统计
export
function
getRevenue
(
params
)
{
return
request
({
url
:
'/tp/operate/getRevenue'
,
method
:
'get'
,
params
})
}
src/assets/style/fixed/element.scss
View file @
6402c952
...
@@ -16,4 +16,10 @@
...
@@ -16,4 +16,10 @@
.el-tabs__item
:focus
.is-active.is-focus
:not
(
:active
)
{
.el-tabs__item
:focus
.is-active.is-focus
:not
(
:active
)
{
box-shadow
:
none
!
important
;
box-shadow
:
none
!
important
;
}
.el-autocomplete-suggestion
li
.highlighted
,
.el-autocomplete-suggestion
li
:hover
{
text-overflow
:
inherit
;
}
.el-autocomplete-suggestion
li
{
padding
:
0
.1rem
!
important
;
}
}
\ No newline at end of file
src/assets/style/public.scss
View file @
6402c952
...
@@ -121,6 +121,7 @@ ul{list-style: none; padding: 0}
...
@@ -121,6 +121,7 @@ ul{list-style: none; padding: 0}
.height21
{
height
:
2
.1rem
}
.height21
{
height
:
2
.1rem
}
.heightCut44
{
height
:
calc
(
100%
-
.44rem
);}
.heightCut44
{
height
:
calc
(
100%
-
.44rem
);}
.heightCut68
{
height
:
calc
(
100%
-
0
.68rem
);}
.heightCut68
{
height
:
calc
(
100%
-
0
.68rem
);}
.heightCut112
{
height
:
calc
(
100%
-
1
.12rem
);}
.section
{
.section
{
...
...
src/components/HeaderLayout/index.vue
View file @
6402c952
...
@@ -8,7 +8,7 @@
...
@@ -8,7 +8,7 @@
<h3
class=
"flex-1"
>
企业运营图谱
</h3>
<h3
class=
"flex-1"
>
企业运营图谱
</h3>
<div
class=
"flex-1 header-right-box"
>
<div
class=
"flex-1 header-right-box"
>
<!--
<div
class=
"time"
>
{{
nowDate
|
moment
(
"YYYY/MM/DD"
)
}}
{{
nowDate
|
moment
(
"HH:mm:ss"
)
}}
星期
{{
week
|
weekFilter
}}
</div>
-->
<!--
<div
class=
"time"
>
{{
nowDate
|
moment
(
"YYYY/MM/DD"
)
}}
{{
nowDate
|
moment
(
"HH:mm:ss"
)
}}
星期
{{
week
|
weekFilter
}}
</div>
-->
<div
class=
"time"
>
{{
user
}}
</div>
<div
class=
"time"
>
{{
deptName
}}
</div>
<div
class=
"right-menu"
>
<div
class=
"right-menu"
>
<el-dropdown
class=
"avatar-container"
trigger=
"click"
>
<el-dropdown
class=
"avatar-container"
trigger=
"click"
>
<div
class=
"avatar-wrapper"
>
<div
class=
"avatar-wrapper"
>
...
@@ -35,7 +35,7 @@ export default {
...
@@ -35,7 +35,7 @@ export default {
data
()
{
data
()
{
return
{
return
{
screenWidth
:
document
.
body
.
clientWidth
,
screenWidth
:
document
.
body
.
clientWidth
,
user
:
''
,
deptName
:
''
,
num
:
0
,
num
:
0
,
nowDate
:
''
,
nowDate
:
''
,
week
:
''
,
week
:
''
,
...
@@ -109,7 +109,7 @@ export default {
...
@@ -109,7 +109,7 @@ export default {
this
.
$router
.
push
(
'/login'
)
this
.
$router
.
push
(
'/login'
)
},
},
init
()
{
init
()
{
this
.
user
=
sessionStorage
.
getItem
(
'user'
)
?
JSON
.
parse
(
sessionStorage
.
getItem
(
'user'
)).
n
ame
:
'无相关信息'
this
.
deptName
=
sessionStorage
.
getItem
(
'user'
)
?
JSON
.
parse
(
sessionStorage
.
getItem
(
'user'
)).
deptN
ame
:
'无相关信息'
this
.
num
=
sessionStorage
.
getItem
(
'num'
)
this
.
num
=
sessionStorage
.
getItem
(
'num'
)
},
},
// 获取时间
// 获取时间
...
...
src/components/echarts/barChart.vue
View file @
6402c952
<
template
>
<
template
>
<div
class=
"wrapper"
>
<div
class=
"wrapper"
>
<div
class=
"back text-right"
@
click=
"goBack"
v-if=
"message.parent"
>
<
返回
</div>
<div
class=
"back text-right"
@
click=
"goBack"
v-if=
"message.parent
Id
"
>
<
返回
</div>
<div
:id=
"idstr"
class=
"h-100"
></div>
<div
:id=
"idstr"
class=
"h-100"
></div>
</div>
</div>
</
template
>
</
template
>
...
@@ -75,7 +75,7 @@ export default {
...
@@ -75,7 +75,7 @@ export default {
series
:
[
series
:
[
{
{
type
:
'bar'
,
type
:
'bar'
,
barWidth
:
'
30
%'
,
barWidth
:
'
25
%'
,
itemStyle
:
{
itemStyle
:
{
color
:
'#30DDF4'
,
color
:
'#30DDF4'
,
barBorderRadius
:
[
20
,
20
,
20
,
20
]
barBorderRadius
:
[
20
,
20
,
20
,
20
]
...
@@ -84,7 +84,6 @@ export default {
...
@@ -84,7 +84,6 @@ export default {
}
}
]
]
}
}
vm
.
drawBar
()
vm
.
drawBar
()
// window.addEventListener("resize",()=>{
// window.addEventListener("resize",()=>{
// chart.resize();
// chart.resize();
...
@@ -99,7 +98,7 @@ export default {
...
@@ -99,7 +98,7 @@ export default {
goBack
()
{
goBack
()
{
if
(
this
.
recordList
.
length
)
{
if
(
this
.
recordList
.
length
)
{
const
popItem
=
this
.
recordList
.
pop
()
const
popItem
=
this
.
recordList
.
pop
()
this
.
$emit
(
'downData'
,
popItem
.
parent
)
this
.
$emit
(
'downData'
,
popItem
.
parent
Id
)
}
else
{
}
else
{
this
.
$emit
(
'update:isShow'
,
false
)
this
.
$emit
(
'update:isShow'
,
false
)
}
}
...
@@ -108,11 +107,13 @@ export default {
...
@@ -108,11 +107,13 @@ export default {
const
vm
=
this
const
vm
=
this
vm
.
chart
.
off
(
'click'
)
vm
.
chart
.
off
(
'click'
)
vm
.
chart
.
on
(
'click'
,
function
(
params
)
{
vm
.
chart
.
on
(
'click'
,
function
(
params
)
{
if
(
params
.
data
.
isLeaf
)
return
if
(
vm
.
message
.
isLeaf
)
return
if
(
params
.
data
.
parent
===
undefined
)
return
if
(
vm
.
message
.
parentId
===
undefined
)
return
vm
.
recordList
.
push
({
name
:
params
.
name
,
parent
:
params
.
data
.
parent
})
console
.
log
(
params
.
dataIndex
)
const
_id
=
vm
.
message
.
idxs
[
params
.
dataIndex
]
vm
.
recordList
.
push
({
name
:
params
.
name
,
id
:
_id
,
parentId
:
vm
.
message
.
parentId
})
console
.
log
(
vm
.
recordList
)
console
.
log
(
vm
.
recordList
)
vm
.
$emit
(
'downData'
,
params
.
name
)
vm
.
$emit
(
'downData'
,
_id
)
})
})
}
}
},
},
...
...
src/components/echarts/doubleYBarChart.vue
View file @
6402c952
<
template
>
<
template
>
<div
class=
"wrapper"
>
<div
class=
"wrapper"
>
<div
class=
"back text-right"
@
click=
"goBack"
v-if=
"message.parent"
>
<
返回
</div>
<div
class=
"back text-right"
@
click=
"goBack"
v-if=
"message.parent
Id
"
>
<
返回
</div>
<div
:id=
"idstr"
class=
"h-100"
></div>
<div
:id=
"idstr"
class=
"h-100"
></div>
</div>
</div>
</
template
>
</
template
>
...
@@ -112,19 +112,20 @@ export default {
...
@@ -112,19 +112,20 @@ export default {
goBack
()
{
goBack
()
{
if
(
this
.
recordList
.
length
)
{
if
(
this
.
recordList
.
length
)
{
const
popItem
=
this
.
recordList
.
pop
()
const
popItem
=
this
.
recordList
.
pop
()
this
.
$emit
(
'downData'
,
popItem
.
parent
)
this
.
$emit
(
'downData'
,
popItem
.
parent
Id
)
}
}
},
},
eventList
()
{
eventList
()
{
const
vm
=
this
const
vm
=
this
vm
.
chart
.
off
(
'click'
)
vm
.
chart
.
off
(
'click'
)
vm
.
chart
.
on
(
'click'
,
function
(
params
)
{
vm
.
chart
.
on
(
'click'
,
function
(
params
)
{
console
.
log
(
params
)
if
(
vm
.
message
.
isLeaf
)
return
if
(
params
.
data
.
isLeaf
)
return
if
(
vm
.
message
.
parentId
===
undefined
)
return
if
(
params
.
data
.
parent
===
undefined
)
return
console
.
log
(
params
.
dataIndex
)
vm
.
recordList
.
push
({
name
:
params
.
name
,
parent
:
params
.
data
.
parent
})
const
_id
=
vm
.
message
.
idxs
[
params
.
dataIndex
]
vm
.
recordList
.
push
({
name
:
params
.
name
,
id
:
_id
,
parentId
:
vm
.
message
.
parentId
})
console
.
log
(
vm
.
recordList
)
console
.
log
(
vm
.
recordList
)
vm
.
$emit
(
'downData'
,
params
.
name
)
vm
.
$emit
(
'downData'
,
_id
)
})
})
}
}
},
},
...
...
src/components/echarts/negativeBarChart.vue
View file @
6402c952
...
@@ -6,10 +6,8 @@
...
@@ -6,10 +6,8 @@
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
dataObj
:
{},
option
:
{},
option
:
{},
chart
:
null
,
chart
:
null
clickNum
:
[
1
,
1
,
1
,
1
,
1
]
}
}
},
},
props
:
[
'message'
,
'idstr'
],
props
:
[
'message'
,
'idstr'
],
...
@@ -68,14 +66,16 @@ export default {
...
@@ -68,14 +66,16 @@ export default {
},
},
series
:
[
series
:
[
{
{
name
:
vm
.
message
.
legend
[
0
],
type
:
'bar'
,
type
:
'bar'
,
barWidth
:
'25%'
,
barWidth
:
'25%'
,
itemStyle
:
{
itemStyle
:
{
color
:
'#30DDF4'
color
:
'#30DDF4'
},
},
data
:
vm
.
message
.
data
.
in
Come
data
:
vm
.
message
.
data
.
in
flow
},
},
{
{
name
:
vm
.
message
.
legend
[
1
],
type
:
'bar'
,
type
:
'bar'
,
barWidth
:
'25%'
,
barWidth
:
'25%'
,
itemStyle
:
{
itemStyle
:
{
...
@@ -84,12 +84,13 @@ export default {
...
@@ -84,12 +84,13 @@ export default {
data
:
vm
.
message
.
data
.
flowOut
data
:
vm
.
message
.
data
.
flowOut
},
},
{
{
name
:
vm
.
message
.
legend
[
2
],
type
:
'bar'
,
type
:
'bar'
,
barWidth
:
'25%'
,
barWidth
:
'25%'
,
itemStyle
:
{
itemStyle
:
{
color
:
'#E23AA2'
color
:
'#E23AA2'
},
},
data
:
vm
.
message
.
data
.
inF
low
data
:
vm
.
message
.
data
.
netInf
low
}
}
]
]
}
}
...
...
src/components/echarts/pieChart.vue
View file @
6402c952
<
template
>
<
template
>
<div
class=
"wrapper"
>
<div
class=
"wrapper"
>
<div
class=
"back text-right"
@
click=
"goBack"
v-if=
"
message.parent
"
>
<
返回
</div>
<div
class=
"back text-right"
@
click=
"goBack"
v-if=
"
isShowBack
"
>
<
返回
</div>
<div
:id=
"idstr"
class=
"h-100"
></div>
<div
:id=
"idstr"
class=
"h-100"
></div>
</div>
</div>
</
template
>
</
template
>
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
recordList
:
[]
,
isShowBack
:
false
,
option
:
{},
option
:
{},
chart
:
null
chart
:
null
}
}
...
@@ -72,18 +72,14 @@ export default {
...
@@ -72,18 +72,14 @@ export default {
vm
.
eventList
()
vm
.
eventList
()
},
},
goBack
()
{
goBack
()
{
if
(
this
.
recordList
.
length
)
{
this
.
isShowBack
=
false
const
popItem
=
this
.
recordList
.
pop
()
this
.
$emit
(
'downData'
,
''
)
this
.
$emit
(
'downData'
,
popItem
.
parent
)
}
},
},
eventList
()
{
eventList
()
{
const
vm
=
this
const
vm
=
this
vm
.
chart
.
off
(
'click'
)
vm
.
chart
.
off
(
'click'
)
vm
.
chart
.
on
(
'click'
,
function
(
params
)
{
vm
.
chart
.
on
(
'click'
,
function
(
params
)
{
if
(
params
.
data
.
isLeaf
)
return
vm
.
isShowBack
=
true
if
(
params
.
data
.
parent
===
undefined
)
return
vm
.
recordList
.
push
({
name
:
params
.
name
,
parent
:
params
.
data
.
parent
})
vm
.
$emit
(
'downData'
,
params
.
name
)
vm
.
$emit
(
'downData'
,
params
.
name
)
})
})
}
}
...
...
src/views/content/business/page.vue
View file @
6402c952
<
template
>
<
template
>
<d2-container
class=
"business"
>
<d2-container
class=
"business"
>
<dv-loading
v-show=
"loading"
>
Loading...
</dv-loading>
<headerLayout></headerLayout>
<div
v-show=
"!loading"
>
<div
class=
"section"
>
<headerLayout></headerLayout>
<div
class=
"leftBlock"
>
<div
class=
"section"
>
<div
class=
"boxHeight-3"
>
<div
class=
"leftBlock"
>
<div
class=
"title"
>
商机统计
</div>
<div
class=
"boxHeight-3"
>
<div
class=
"businessStatistics d-flex"
>
<div
class=
"title"
>
商机统计
</div>
<div
class=
"circle"
>
商机统计
</div>
<div
class=
"businessStatistics d-flex"
>
<div
class=
"circle circleOut"
></div>
<div
class=
"circle"
>
商机统计
</div>
<div
class=
"flex-1"
>
<div
class=
"circle circleOut"
></div>
<div
class=
"box"
>
<div
class=
"flex-1"
>
<div
class=
"boxTitle"
>
商机总数
<span>
(个)
</span></div>
<div
class=
"box"
>
<div
class=
"boxValue"
>
{{
totalObj
.
opportunitiesNumber
}}
</div>
<div
class=
"boxTitle"
>
商机总数
<span>
(个)
</span></div>
<div
class=
"boxValue"
>
{{
totalObj
.
total
[
'商机总数'
]
}}
</div>
</div>
<div
class=
"box"
>
<div
class=
"boxTitle"
>
整体预算
<span>
(百万)
</span></div>
<div
class=
"boxValue"
>
{{
totalObj
.
total
[
'商机整体总预算'
]
|
numFilter
}}
</div>
</div>
</div>
<div
class=
"horizontal"
></div>
<div
class=
"flex-1"
>
<div
class=
"box"
>
<div
class=
"boxTitle"
>
本月新增
<span>
(个)
</span></div>
<div
class=
"boxValue"
>
{{
(
totalObj
.
total
[
'本月新增'
]
||
0
)
|
numFilter
}}
</div>
</div>
<div
class=
"box"
>
<div
class=
"boxTitle"
>
预计毛利
<span>
(百万)
</span></div>
<div
class=
"boxValue"
>
{{
totalObj
.
total
[
'公司预计毛利'
]
|
numFilter
}}
</div>
</div>
</div>
</div>
<div
class=
"horizontal"
></div>
<div
class=
"box"
>
<div
class=
"flex-1"
>
<div
class=
"boxTitle"
>
整体预算
<span>
(百万)
</span></div>
<div
class=
"box"
>
<div
class=
"boxValue"
>
{{
totalObj
.
budget
|
numFilter
}}
</div>
<div
class=
"boxTitle"
>
售前参与
<span>
(个)
</span></div>
<div
class=
"boxValue"
>
{{
totalObj
.
total
[
'售前参与'
]
}}
</div>
</div>
<div
class=
"box"
>
<div
class=
"boxTitle"
>
预计成本
<span>
(百万)
</span></div>
<div
class=
"boxValue"
>
{{
totalObj
.
total
[
'公司预计成本'
]
|
numFilter
}}
</div>
</div>
</div>
</div>
<div
class=
"horizontal horizontal1 "
></div>
<div
class=
"horizontal horizontal1 horizontal2"
></div>
<div
class=
"vertical"
></div>
</div>
</div>
<div
class=
"boxHeight-3 mt-2"
>
<div
class=
"title"
>
行业分布
</div>
<pieChart
@
downData=
"downDistributeData"
:message=
"typeDistribute"
idstr=
"typeDistribute"
class=
"heightCut44"
></pieChart>
</div>
<div
class=
"boxHeight-3 mt-2"
>
<div
class=
"title"
>
商机分布
</div>
<barChart
:message=
"bussionDistribute"
idstr=
"bussionDistribute"
class=
"heightCut44 mt-2"
></barChart>
</div>
</div>
<div
class=
"centerBlock"
>
<div
class=
"centerBoxHeight-32 d-flex flex-column"
>
<div
class=
"select-box mt-2"
>
<div
class=
"tab-chart"
>
<span
class=
"tab-button"
@
click=
"chartActive=1"
:class=
"
{'is-active':chartActive=== 1 }">数量
</span>
<span
class=
"tab-button"
@
click=
"chartActive=2"
:class=
"
{'is-active':chartActive=== 2 }">金额
</span>
</div>
</div>
</div>
<div
class=
"flex-1 d-flex"
>
<div
class=
"horizontal"
></div>
<div
class=
"flex-1"
>
<div
class=
"flex-1"
>
<div
class=
"title"
>
商机阶段分析
</div>
<div
class=
"box"
>
<funnel
:message=
"bussionStep"
:idstr=
"'bussionStep'"
class=
"heightCut44"
></funnel>
<div
class=
"boxTitle"
>
本月新增
<span>
(个)
</span></div>
<div
class=
"boxValue"
>
{{
(
totalObj
.
newOpportunities
||
0
)
}}
</div>
</div>
</div>
<div
class=
"
flex-1
"
>
<div
class=
"
box
"
>
<div
class=
"
title"
>
商机类型
</div>
<div
class=
"
boxTitle"
>
预计毛利
<span>
(百万)
</span>
</div>
<
pieChart
:message=
"bussionType"
idstr=
"bussionType"
class=
"heightCut44"
></pieChart
>
<
div
class=
"boxValue"
>
{{
totalObj
.
budgetGrossProfit
|
numFilter
}}
</div
>
</div>
</div>
</div>
</div>
<div
class=
"horizontal"
></div>
<div
class=
"flex-1"
>
<div
class=
"flex-1"
>
<doubleYBarChart
@
downData=
"downData"
:message=
"bussionAnalysis"
idstr=
"bussionAnalysis"
class=
"heightCut44 mt-1"
></doubleYBarChart>
<div
class=
"box"
>
<div
class=
"boxTitle"
>
售前参与
<span>
(个)
</span></div>
<div
class=
"boxValue"
>
{{
totalObj
.
saler
}}
</div>
</div>
<div
class=
"box"
>
<div
class=
"boxTitle"
>
预计成本
<span>
(百万)
</span></div>
<div
class=
"boxValue"
>
{{
totalObj
.
budgetCost
|
numFilter
}}
</div>
</div>
</div>
</div>
<div
class=
"horizontal horizontal1 "
></div>
<div
class=
"horizontal horizontal1 horizontal2"
></div>
<div
class=
"vertical"
></div>
</div>
</div>
<div
class=
"centerBoxHeight-3 mt-2"
>
<div
class=
"title"
>
合同税率分布
</div>
<doubleYBarChart
:message=
"taxRateDistribute"
idstr=
"taxRateDistribute"
class=
"heightCut44 mt-1"
></doubleYBarChart>
</div>
</div>
</div>
<div
class=
"rightBlock"
>
<div
class=
"boxHeight-3 mt-2"
>
<div
class=
"boxHeight-3"
>
<div
class=
"title"
>
行业分布
</div>
<div
class=
"title"
>
商机成功率
</div>
<pieChart
@
downData=
"downDistributeData"
:message=
"typeDistribute"
idstr=
"typeDistribute"
class=
"heightCut44"
></pieChart>
<doubleYBarChart
:message=
"successRatio"
idstr=
"successRatio"
class=
"heightCut44 mt-1"
></doubleYBarChart>
</div>
<div
class=
"boxHeight-3 mt-2"
>
<div
class=
"title"
>
商机分布
</div>
<barChart
:message=
"bussionDistribute"
idstr=
"bussionDistribute"
class=
"heightCut44 mt-2"
></barChart>
</div>
</div>
<div
class=
"centerBlock"
>
<div
class=
"centerBoxHeight-32 d-flex flex-column"
>
<div
class=
"select-box mt-2"
>
<div
class=
"tab-chart"
>
<span
class=
"tab-button"
@
click=
"chartActive=1"
:class=
"
{'is-active':chartActive=== 1 }">数量
</span>
<span
class=
"tab-button"
@
click=
"chartActive=2"
:class=
"
{'is-active':chartActive=== 2 }">金额
</span>
</div>
</div>
</div>
<div
class=
"boxHeight-3 mt-2"
>
<div
class=
"flex-1 d-flex"
>
<div
class=
"title"
>
新商机分析
</div>
<div
class=
"flex-1"
>
<doubleYBarChart
:message=
"newBussAnalysis"
idstr=
"newBussAnalysis"
class=
"heightCut44 mt-1"
></doubleYBarChart>
<div
class=
"title"
>
商机阶段分析
</div>
<funnel
:message=
"bussionStep"
:idstr=
"'bussionStep'"
class=
"heightCut44"
></funnel>
</div>
<div
class=
"flex-1"
>
<div
class=
"title"
>
商机类型
</div>
<pieChart
:message=
"bussionType"
idstr=
"bussionType"
class=
"heightCut44"
></pieChart>
</div>
</div>
</div>
<div
class=
"boxHeight-3 mt-2"
>
<div
class=
"flex-1"
>
<div
class=
"title"
>
产品类型分析
</div>
<doubleYBarChart
@
downData=
"downData"
:message=
"bussionAnalysis"
idstr=
"bussionAnalysis"
class=
"heightCut44 mt-1"
></doubleYBarChart>
<pieChart
@
downData=
"downTypeData"
:message=
"typeAnalysis"
idstr=
"typeAnalysis"
class=
"heightCut44"
></pieChart>
</div>
</div>
</div>
</div>
<div
class=
"centerBoxHeight-3 mt-2"
>
<div
class=
"title"
>
合同税率分布
</div>
<doubleYBarChart
:message=
"taxRateDistribute"
idstr=
"taxRateDistribute"
class=
"heightCut44 mt-1"
></doubleYBarChart>
</div>
</div>
<div
class=
"rightBlock"
>
<div
class=
"boxHeight-3"
>
<div
class=
"title"
>
商机成功率
</div>
<doubleYBarChart
:message=
"successRatio"
idstr=
"successRatio"
class=
"heightCut44 mt-1"
></doubleYBarChart>
</div>
<div
class=
"boxHeight-3 mt-2"
>
<div
class=
"title"
>
新商机分析
</div>
<doubleYBarChart
:message=
"newBussAnalysis"
idstr=
"newBussAnalysis"
class=
"heightCut44 mt-1"
></doubleYBarChart>
</div>
<div
class=
"boxHeight-3 mt-2"
>
<div
class=
"title"
>
产品类型分析
</div>
<pieChart
@
downData=
"downTypeData"
:message=
"typeAnalysis"
idstr=
"typeAnalysis"
class=
"heightCut44"
></pieChart>
</div>
</div>
</div>
</div>
</div>
</d2-container>
</d2-container>
...
@@ -113,95 +110,22 @@ export default {
...
@@ -113,95 +110,22 @@ export default {
components
:
{
headerLayout
,
pieChart
,
barChart
,
doubleYBarChart
,
funnel
},
components
:
{
headerLayout
,
pieChart
,
barChart
,
doubleYBarChart
,
funnel
},
data
()
{
data
()
{
return
{
return
{
loading
:
true
,
chartActive
:
1
,
chartActive
:
1
,
totalObj
:
{},
// 商机统计
industry
:
''
,
// 行业分布
// 行业分布
typeDistribute
:
{
typeDistribute
:
{},
legend
:
[
'政府'
,
'制造业'
,
'能源'
,
'金融'
,
'军工'
],
productType
:
''
,
data
:
[
{
value
:
335
,
name
:
'政府'
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
310
,
name
:
'制造业'
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
234
,
name
:
'能源'
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
135
,
name
:
'金融'
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
1548
,
name
:
'军工'
,
isLeaf
:
false
,
parent
:
''
}
]
},
// 产品类型分析
// 产品类型分析
typeAnalysis
:
{
typeAnalysis
:
{},
legend
:
[
'DELL'
,
'联想'
,
'自有服务'
,
'第三方'
,
'H3C'
],
data
:
[
{
value
:
335
,
name
:
'DELL'
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
310
,
name
:
'联想'
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
234
,
name
:
'自有服务'
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
135
,
name
:
'第三方'
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
1548
,
name
:
'H3C'
,
isLeaf
:
false
,
parent
:
''
}
]
},
// 商机分布
// 商机分布
bussionDistribute
:
{
bussionDistribute
:
{},
xAxis
:
[
'上海'
,
'北京'
,
'广州'
,
'河南'
,
'天津'
,
'深圳'
,
'贵州'
,
'河北'
,
'江苏'
],
data
:
[
223.2
,
195.6
,
176.7
,
135.6
,
122.2
,
122
,
114
,
95
,
76
]
},
// 新商机分析
// 新商机分析
newBussAnalysis
:
{
newBussAnalysis
:
{},
legend
:
[
'新商机'
,
'传统商机'
,
'占比'
],
xAxis
:
[
'2017'
,
'2018'
,
'2019'
,
'2020'
,
'2021'
],
yAxis
:
[
'单位:个'
,
'占比:%'
],
data
:
[
{
name
:
'新商机'
,
type
:
'bar'
,
data
:
[
23.2
,
25.6
,
76.7
,
135.6
,
162.2
]
},
{
name
:
'传统商机'
,
type
:
'bar'
,
data
:
[
13.2
,
45.6
,
76.7
,
55.6
,
62.2
]
},
{
name
:
'占比'
,
type
:
'line'
,
yAxisIndex
:
1
,
data
:
[
4.5
,
6.3
,
10.2
,
20.3
,
23.4
]
}
]
},
// 商机预算及硬蛋率
successRatio
:
{
legend
:
[
'商机预算'
,
'赢单率'
],
xAxis
:
[
'10以下'
,
'10-30'
,
'30-50'
,
'50-100'
,
'100以上'
],
yAxis
:
[
'单位:万元'
,
'百分:%'
],
data
:
[
{
name
:
'商机预算'
,
type
:
'bar'
,
barWidth
:
'25%'
,
data
:
[
23.2
,
25.6
,
76.7
,
135.6
,
162.2
]
},
{
name
:
'赢单率'
,
type
:
'line'
,
yAxisIndex
:
1
,
data
:
[
4.5
,
6.3
,
10.2
,
20.3
,
23.4
]
}
]
},
// 合同税率分布
// 合同税率分布
taxRateDistribute
:
{
taxRateDistribute
:
{},
legend
:
[
'合同数'
,
'合同税率占比'
],
// 商机预算及硬蛋率
xAxis
:
[
'0%'
,
'3%'
,
'6%'
,
'9%'
,
'13%'
],
successRatio
:
{},
yAxis
:
[
'单位:个'
,
'百分比:%'
],
data
:
[
{
name
:
'合同数'
,
type
:
'bar'
,
barWidth
:
'25%'
,
data
:
[
23.2
,
25.6
,
76.7
,
135.6
,
162.2
]
},
{
name
:
'合同税率占比'
,
type
:
'line'
,
yAxisIndex
:
1
,
data
:
[
4.5
,
6.3
,
10.2
,
20.3
,
23.4
]
}
]
},
// 商机分析-中间图
// 商机分析-中间图
bussionAnalysis
:
{
bussionAnalysis
:
{
legend
:
[
'初步接洽'
,
'需求确定'
,
'方案/报价'
,
'谈判审核'
,
'赢单'
],
legend
:
[
'初步接洽'
,
'需求确定'
,
'方案/报价'
,
'谈判审核'
,
'赢单'
],
...
@@ -303,22 +227,17 @@ export default {
...
@@ -303,22 +227,17 @@ export default {
{
value
:
89
,
name
:
'终止'
},
{
value
:
89
,
name
:
'终止'
},
{
value
:
23
,
name
:
'暂停'
}
{
value
:
23
,
name
:
'暂停'
}
]
]
},
}
businessType
:
[],
// 商机业务类型
quoteProportion
:
{},
// 商机报价及占比
taxRate
:
{},
// 商机税率
projectAnalysis
:
[],
// 项目分析
funnelChart
:
[],
// 商机成功率
source
:
[],
// 商机来源
process
:
{},
// 商机流程
totalData
:
{},
// 商机整体数据
totalObj
:
{},
// 商机数据
analysisData
:
{},
// 项目分析数据
projectObj
:
[]
}
}
},
},
mounted
()
{
mounted
()
{
this
.
GetBusinessList
()
this
.
getOpportunitiesStatistics
()
this
.
getDistribution
()
this
.
getOpportunitiesDistribution
()
this
.
getTaxRate
()
this
.
getProductType
()
this
.
getNewOpportunities
()
this
.
getBillRate
()
},
},
filters
:
{
filters
:
{
numFilter
(
value
)
{
numFilter
(
value
)
{
...
@@ -329,396 +248,81 @@ export default {
...
@@ -329,396 +248,81 @@ export default {
}
}
},
},
methods
:
{
methods
:
{
GetBusinessList
()
{
// 商机统计
API_BUSSINESS
.
GetBusinessList
().
then
(
res
=>
{
async
getOpportunitiesStatistics
()
{
this
.
loading
=
false
const
_data
=
await
API_BUSSINESS
.
getOpportunitiesStatistics
()
this
.
totalData
=
res
this
.
totalObj
=
_data
.
data
[
0
]
this
.
totalObj
=
this
.
totalData
.
data
},
// 商机税率
// 行业分布
const
argRate
=
this
.
totalData
.
data
.
taxrate
async
getDistribution
()
{
const
taxrate
=
[]
const
_data
=
await
API_BUSSINESS
.
getDistribution
({
industry
:
this
.
industry
||
null
})
const
arr5
=
[]
const
_distribute
=
{
const
arr6
=
[]
legend
:
_data
.
data
.
legend
,
let
maxra
=
0
data
:
_data
.
data
.
data
.
map
(
item
=>
{
argRate
.
forEach
(
e
=>
{
return
{
taxrate
.
push
(
e
.
taxrate
)
name
:
item
.
industry
,
arr5
.
push
(
e
.
num
)
value
:
Number
(
item
.
value
)
arr6
.
push
(
e
.
percentage
)
const
mid
=
parseInt
(
e
.
num
)
if
(
mid
>
maxra
)
{
maxra
=
mid
}
}
})
})
const
darate
=
[]
}
const
sj
=
{
name
:
'商机'
,
type
:
'bar'
,
data
:
arr5
}
this
.
typeDistribute
=
_distribute
const
rate
=
{
name
:
'税率'
,
type
:
'line'
,
data
:
arr6
}
},
darate
.
push
(
sj
)
// 商机分布
darate
.
push
(
rate
)
async
getOpportunitiesDistribution
()
{
this
.
taxRate
=
{
data
:
darate
,
max
:
maxra
,
title
:
[
'商机'
,
'税率'
],
column
:
taxrate
}
const
_data
=
await
API_BUSSINESS
.
getOpportunitiesDistribution
()
// 商机报价及占比
this
.
bussionDistribute
=
_data
.
data
const
argquo
=
this
.
totalData
.
data
.
offer
},
const
column
=
[]
// 合同税率
const
arr2
=
[]
async
getTaxRate
()
{
const
arr3
=
[]
const
_data
=
await
API_BUSSINESS
.
getTaxRate
()
let
max
=
0
this
.
taxRateDistribute
=
_data
.
data
argquo
.
forEach
(
e
=>
{
this
.
taxRateDistribute
.
data
=
this
.
taxRateDistribute
.
data
.
map
(
item
=>
{
column
.
push
(
e
.
level
)
item
.
barWidth
=
'25%'
arr2
.
push
(
e
.
num
)
return
item
arr3
.
push
(
e
.
percentage
)
})
const
mid
=
parseInt
(
e
.
num
)
},
if
(
mid
>
max
)
{
// 产品类型分析
max
=
mid
async
getProductType
()
{
const
_data
=
await
API_BUSSINESS
.
getProductType
({
type
:
this
.
productType
||
null
})
const
_typeAnalysis
=
{
legend
:
_data
.
data
.
legend
,
data
:
_data
.
data
.
data
.
map
(
item
=>
{
return
{
name
:
item
.
productType
||
item
.
name
,
value
:
Number
(
item
.
number
)
}
}
})
})
const
daq
=
[]
}
const
bj
=
{
name
:
'报价'
,
type
:
'bar'
,
data
:
arr2
}
this
.
typeAnalysis
=
_typeAnalysis
const
ratio
=
{
name
:
'占比'
,
type
:
'line'
,
data
:
arr3
}
},
daq
.
push
(
bj
)
// 新商机分析
daq
.
push
(
ratio
)
async
getNewOpportunities
()
{
this
.
quoteProportion
=
{
data
:
daq
,
max
:
max
,
title
:
[
'报价'
,
'占比'
],
column
:
column
}
const
_data
=
await
API_BUSSINESS
.
getNewOpportunities
()
// 项目分析
this
.
newBussAnalysis
=
_data
.
data
this
.
projectObj
=
this
.
totalData
.
data
.
analysis
this
.
newBussAnalysis
.
data
=
this
.
newBussAnalysis
.
data
.
map
(
item
=>
{
this
.
projectAnalysis
=
this
.
projectObj
item
.
barWidth
=
'25%'
// 商机成功率
return
item
const
argsuc
=
this
.
totalData
.
data
.
success
const
titlesuc
=
[]
const
dasuc
=
[]
argsuc
.
forEach
(
e
=>
{
titlesuc
.
push
(
e
.
success
)
var
suc
=
{
name
:
e
.
success
,
value
:
e
.
num
}
dasuc
.
push
(
suc
)
})
this
.
funnelChart
.
push
({
success
:
titlesuc
,
num
:
dasuc
})
// 对商机业务类型遍历
const
arg
=
this
.
totalData
.
data
.
type
const
title
=
[]
const
da
=
[]
arg
.
forEach
(
element
=>
{
title
.
push
(
element
.
type
)
var
jso
=
{
name
:
element
.
type
,
value
:
element
.
num
}
da
.
push
(
jso
)
})
this
.
businessType
.
push
({
title
:
title
,
data
:
da
})
// 对商机来源遍历
const
argsou
=
this
.
totalData
.
data
.
source
const
titlesou
=
[]
const
dasou
=
[]
argsou
.
forEach
(
element
=>
{
titlesou
.
push
(
element
.
source
)
var
sou
=
{
name
:
element
.
source
,
value
:
element
.
num
}
dasou
.
push
(
sou
)
})
this
.
source
.
push
({
title
:
titlesou
,
data
:
dasou
})
}).
catch
(
err
=>
{
console
.
log
(
err
)
})
})
},
},
// 商机成功率
async
getBillRate
()
{
const
_data
=
await
API_BUSSINESS
.
getBillRate
()
this
.
successRatio
=
_data
.
data
},
// 行业分布下钻数据
// 行业分布下钻数据
downDistributeData
(
item
)
{
downDistributeData
(
item
)
{
console
.
log
(
'pie传来的值:'
,
item
)
console
.
log
(
'传来的值:'
,
item
)
setTimeout
(()
=>
{
this
.
industry
=
item
if
(
item
)
{
this
.
getDistribution
()
this
.
typeDistribute
=
{
parent
:
item
,
legend
:
[
'运营管理中心'
,
'解决方案中心'
,
'智能制造中心'
,
'生态合作中心'
,
'客户运营中心'
],
data
:
[
{
name
:
'运营管理中心'
,
value
:
123.2
,
parent
:
item
,
isLeaf
:
true
},
{
name
:
'解决方案中心'
,
value
:
76.7
,
parent
:
item
,
isLeaf
:
true
},
{
name
:
'智能制造中心'
,
value
:
135.6
,
parent
:
item
,
isLeaf
:
true
},
{
name
:
'生态合作中心'
,
value
:
162.2
,
parent
:
item
,
isLeaf
:
true
},
{
name
:
'客户运营中心'
,
value
:
32.6
,
parent
:
item
,
isLeaf
:
true
}
]
}
}
else
{
this
.
typeDistribute
=
{
legend
:
[
'政府'
,
'制造业'
,
'能源'
,
'金融'
,
'军工'
],
data
:
[
{
value
:
335
,
name
:
'政府'
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
310
,
name
:
'制造业'
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
234
,
name
:
'能源'
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
135
,
name
:
'金融'
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
1548
,
name
:
'军工'
,
isLeaf
:
false
,
parent
:
''
}
]
}
}
},
0
)
},
},
// 产品类型分析下钻数据
// 产品类型分析下钻数据
downTypeData
(
item
)
{
downTypeData
(
item
)
{
console
.
log
(
'pie传来的值:'
,
item
)
console
.
log
(
'pie传来的值:'
,
item
)
setTimeout
(()
=>
{
this
.
productType
=
item
if
(
item
)
{
this
.
getProductType
()
this
.
typeAnalysis
=
{
parent
:
item
,
legend
:
[
'运营管理中心'
,
'解决方案中心'
,
'智能制造中心'
,
'生态合作中心'
,
'客户运营中心'
],
data
:
[
{
name
:
'运营管理中心'
,
value
:
123.2
,
parent
:
item
,
isLeaf
:
true
},
{
name
:
'解决方案中心'
,
value
:
76.7
,
parent
:
item
,
isLeaf
:
true
},
{
name
:
'智能制造中心'
,
value
:
135.6
,
parent
:
item
,
isLeaf
:
true
},
{
name
:
'生态合作中心'
,
value
:
162.2
,
parent
:
item
,
isLeaf
:
true
},
{
name
:
'客户运营中心'
,
value
:
32.6
,
parent
:
item
,
isLeaf
:
true
}
]
}
}
else
{
this
.
typeAnalysis
=
{
legend
:
[
'DELL'
,
'联想'
,
'自有服务'
,
'第三方'
,
'H3C'
],
data
:
[
{
value
:
335
,
name
:
'DELL'
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
310
,
name
:
'联想'
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
234
,
name
:
'自有服务'
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
135
,
name
:
'第三方'
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
1548
,
name
:
'H3C'
,
isLeaf
:
false
,
parent
:
''
}
]
}
}
},
0
)
},
},
downData
(
item
)
{
downData
(
item
)
{
console
.
log
(
'传来的值:'
,
item
)
setTimeout
(()
=>
{
if
(
!
item
)
{
this
.
bussionAnalysis
=
{
legend
:
[
'初步接洽'
,
'需求确定'
,
'方案/报价'
,
'谈判审核'
,
'赢单'
],
xAxis
:
[
'运营管理中心'
,
'解决方案中心'
,
'智能制造中心'
,
'生态合作中心'
,
'客户运营中心'
,
'XXXX中心'
],
yAxis
:
[
'单位:个'
,
'赢单率:%'
],
data
:
[
{
name
:
'初步接洽'
,
type
:
'bar'
,
data
:
[
{
value
:
123.2
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
125.6
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
176.7
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
135.6
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
162.2
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
200
,
isLeaf
:
false
,
parent
:
''
}
]
},
{
name
:
'需求确定'
,
type
:
'bar'
,
data
:
[
{
value
:
83.2
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
75.6
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
86.7
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
85.6
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
62.2
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
90
,
isLeaf
:
false
,
parent
:
''
}
]
},
{
name
:
'方案/报价'
,
type
:
'bar'
,
yAxisIndex
:
1
,
data
:
[
{
value
:
74.5
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
66.3
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
70.2
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
80.3
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
53.4
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
87
,
isLeaf
:
false
,
parent
:
''
}
]
},
{
name
:
'谈判审核'
,
type
:
'bar'
,
yAxisIndex
:
1
,
data
:
[
{
value
:
64.5
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
56.3
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
60.2
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
70.3
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
43.4
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
77
,
isLeaf
:
false
,
parent
:
''
}
]
},
{
name
:
'赢单'
,
type
:
'bar'
,
yAxisIndex
:
1
,
data
:
[
{
value
:
54.5
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
46.3
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
50.2
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
60.3
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
33.4
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
65
,
isLeaf
:
false
,
parent
:
''
}
]
},
{
name
:
'赢单率'
,
type
:
'line'
,
yAxisIndex
:
1
,
data
:
[
{
value
:
4.5
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
6.3
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
10.2
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
20.3
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
23.4
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
30.2
,
isLeaf
:
false
,
parent
:
''
}
]
}
]
}
}
if
(
item
.
indexOf
(
'中心'
)
!==
-
1
)
{
this
.
bussionAnalysis
=
{
parent
:
item
,
legend
:
[
'初步接洽'
,
'需求确定'
,
'方案/报价'
,
'谈判审核'
,
'赢单'
],
xAxis
:
[
'运营管理部门'
,
'解决方案部门'
,
'智能制造部门'
,
'生态合作部门'
,
'客户运营部门'
,
'XXXX部门'
],
yAxis
:
[
'单位:个'
,
'赢单率:%'
],
data
:
[
{
name
:
'初步接洽'
,
type
:
'bar'
,
data
:
[
{
value
:
123.2
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
125.6
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
176.7
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
135.6
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
162.2
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
200
,
isLeaf
:
false
,
parent
:
item
}
]
},
{
name
:
'需求确定'
,
type
:
'bar'
,
data
:
[
{
value
:
83.2
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
75.6
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
86.7
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
85.6
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
62.2
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
90
,
isLeaf
:
false
,
parent
:
item
}
]
},
{
name
:
'方案/报价'
,
type
:
'bar'
,
yAxisIndex
:
1
,
data
:
[
{
value
:
74.5
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
66.3
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
70.2
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
80.3
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
53.4
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
87
,
isLeaf
:
false
,
parent
:
item
}
]
},
{
name
:
'谈判审核'
,
type
:
'bar'
,
yAxisIndex
:
1
,
data
:
[
{
value
:
64.5
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
56.3
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
60.2
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
70.3
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
43.4
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
77
,
isLeaf
:
false
,
parent
:
item
}
]
},
{
name
:
'赢单'
,
type
:
'bar'
,
yAxisIndex
:
1
,
data
:
[
{
value
:
54.5
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
46.3
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
50.2
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
60.3
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
33.4
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
65
,
isLeaf
:
false
,
parent
:
item
}
]
},
{
name
:
'赢单率'
,
type
:
'line'
,
yAxisIndex
:
1
,
data
:
[
{
value
:
4.5
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
6.3
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
10.2
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
20.3
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
23.4
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
30.2
,
isLeaf
:
false
,
parent
:
item
}
]
}
]
}
}
if
(
item
.
indexOf
(
'部门'
)
!==
-
1
)
{
this
.
bussionAnalysis
=
{
parent
:
item
,
legend
:
[
'初步接洽'
,
'需求确定'
,
'方案/报价'
,
'谈判审核'
,
'赢单'
],
xAxis
:
[
'小小黄'
,
'小小安'
,
'小小圆'
,
'小小静'
,
'小小宝'
,
'XXXXXXX'
],
yAxis
:
[
'单位:个'
,
'赢单率:%'
],
data
:
[
{
name
:
'初步接洽'
,
type
:
'bar'
,
data
:
[
{
value
:
123.2
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
125.6
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
176.7
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
135.6
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
162.2
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
200
,
isLeaf
:
true
,
parent
:
item
}
]
},
{
name
:
'需求确定'
,
type
:
'bar'
,
data
:
[
{
value
:
83.2
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
75.6
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
86.7
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
85.6
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
62.2
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
90
,
isLeaf
:
true
,
parent
:
item
}
]
},
{
name
:
'方案/报价'
,
type
:
'bar'
,
yAxisIndex
:
1
,
data
:
[
{
value
:
74.5
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
66.3
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
70.2
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
80.3
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
53.4
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
87
,
isLeaf
:
true
,
parent
:
item
}
]
},
{
name
:
'谈判审核'
,
type
:
'bar'
,
yAxisIndex
:
1
,
data
:
[
{
value
:
64.5
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
56.3
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
60.2
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
70.3
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
43.4
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
77
,
isLeaf
:
true
,
parent
:
item
}
]
},
{
name
:
'赢单'
,
type
:
'bar'
,
yAxisIndex
:
1
,
data
:
[
{
value
:
54.5
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
46.3
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
50.2
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
60.3
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
33.4
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
65
,
isLeaf
:
true
,
parent
:
item
}
]
},
{
name
:
'赢单率'
,
type
:
'line'
,
yAxisIndex
:
1
,
data
:
[
{
value
:
4.5
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
6.3
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
10.2
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
20.3
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
23.4
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
30.2
,
isLeaf
:
true
,
parent
:
item
}
]
}
]
}
}
},
0
)
}
}
}
}
}
}
...
...
src/views/content/operation/components/agingAnalysis.vue
View file @
6402c952
<
template
>
<
template
>
<div>
<div>
<div
class=
"d-flex search-box jc-end"
>
<div
class=
"d-flex search-box jc-end"
>
<el-select
v-model=
"selectType"
size=
"mini"
>
<el-select
v-model=
"selectType"
size=
"mini"
@
change=
"getCollectAgeYear"
>
<el-option
<el-option
v-for=
"item in typeList"
v-for=
"item in typeList"
:key=
"item"
:key=
"item"
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
:value=
"item"
>
:value=
"item"
>
</el-option>
</el-option>
</el-select>
</el-select>
<el-select
v-model=
"selectYear"
size=
"mini"
>
<el-select
v-model=
"selectYear"
size=
"mini"
@
change=
"getCollectAge"
>
<el-option
<el-option
v-for=
"item in yearList"
v-for=
"item in yearList"
:key=
"item"
:key=
"item"
...
@@ -24,7 +24,7 @@
...
@@ -24,7 +24,7 @@
<
script
>
<
script
>
import
pieChart
from
'@/components/echarts/pieChart'
// 应收账龄分析饼图
import
pieChart
from
'@/components/echarts/pieChart'
// 应收账龄分析饼图
import
*
as
API_OPERATION
from
'@/api/con.operation'
export
default
{
export
default
{
components
:
{
pieChart
},
components
:
{
pieChart
},
data
()
{
data
()
{
...
@@ -33,22 +33,31 @@ export default {
...
@@ -33,22 +33,31 @@ export default {
yearList
:
[
'2021'
,
'2020'
,
'2019'
,
'2018'
,
'2017'
],
yearList
:
[
'2021'
,
'2020'
,
'2019'
,
'2018'
,
'2017'
],
selectType
:
'合同'
,
selectType
:
'合同'
,
typeList
:
[
'合同'
,
'验收'
,
'开票'
,
'出库'
],
typeList
:
[
'合同'
,
'验收'
,
'开票'
,
'出库'
],
dataList
:
{
dataList
:
{}
legend
:
[
'<30天'
,
'<60天'
,
'<90天'
,
'<120天'
,
'<180天'
,
'180+天'
],
data
:
[
{
value
:
335
,
name
:
'<30天'
},
{
value
:
310
,
name
:
'<60天'
},
{
value
:
234
,
name
:
'<90天'
},
{
value
:
135
,
name
:
'<120天'
},
{
value
:
548
,
name
:
'<180天'
},
{
value
:
348
,
name
:
'180+天'
}
]
}
}
}
},
},
mounted
()
{
async
mounted
()
{
await
this
.
getCollectAgeYear
()
},
},
methods
:
{
methods
:
{
async
getCollectAgeYear
()
{
const
_data
=
await
API_OPERATION
.
getCollectAgeYear
({
type
:
this
.
selectType
})
this
.
yearList
=
_data
.
data
this
.
selectYear
=
_data
.
data
[
0
]
this
.
getCollectAge
()
},
async
getCollectAge
()
{
const
_data
=
await
API_OPERATION
.
getCollectAge
({
type
:
this
.
selectType
,
year
:
this
.
selectYear
})
this
.
dataList
=
_data
.
data
// for (var i of _seriesData) {
// for (var k in i) {
// console.log('键:' + k)
// console.log('值:' + i[k])
// }
// }
console
.
log
(
this
.
dataList
)
}
}
}
}
}
</
script
>
</
script
>
...
...
src/views/content/operation/components/budgetRatio.vue
View file @
6402c952
<
template
>
<
template
>
<div>
<div>
<div
class=
"d-flex search-box jc-end"
>
<div
class=
"d-flex search-box jc-end"
>
<el-select
v-model=
"selectYear"
size=
"mini"
>
<el-select
v-model=
"selectYear"
size=
"mini"
@
change=
"getBudget('')"
>
<el-option
<el-option
v-for=
"item in yearList"
v-for=
"item in yearList"
:key=
"item"
:key=
"item"
...
@@ -16,198 +16,46 @@
...
@@ -16,198 +16,46 @@
<
script
>
<
script
>
import
doubleYBarChart
from
'@/components/echarts/doubleYBarChart'
// 预算完成比 双柱加折线图
import
doubleYBarChart
from
'@/components/echarts/doubleYBarChart'
// 预算完成比 双柱加折线图
import
*
as
API_OPERATION
from
'@/api/con.operation'
export
default
{
export
default
{
components
:
{
doubleYBarChart
},
components
:
{
doubleYBarChart
},
data
()
{
data
()
{
return
{
return
{
selectYear
:
'2020'
,
selectYear
:
''
,
yearList
:
[
'2021'
,
'2020'
,
'2019'
,
'2018'
,
'2017'
],
yearList
:
[],
dataList
:
{
selectId
:
''
,
legend
:
[
'新签预算'
,
'新签实际'
,
'完成比'
],
dataList
:
{}
xAxis
:
[
'运营管理中心'
,
'解决方案中心'
,
'智能制造中心'
,
'生态合作中心'
,
'客户运营中心'
,
'XXXX中心'
],
yAxis
:
[
'单位:万元'
,
'完成比:%'
],
data
:
[
{
name
:
'新签预算'
,
type
:
'bar'
,
data
:
[
{
value
:
123.2
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
125.6
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
176.7
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
135.6
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
162.2
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
200
,
isLeaf
:
false
,
parent
:
''
}
]
},
{
name
:
'新签实际'
,
type
:
'bar'
,
data
:
[
{
value
:
83.2
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
75.6
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
86.7
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
85.6
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
62.2
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
90
,
isLeaf
:
false
,
parent
:
''
}
]
},
{
name
:
'完成比'
,
type
:
'line'
,
yAxisIndex
:
1
,
data
:
[
{
value
:
4.5
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
6.3
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
10.2
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
20.3
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
23.4
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
30.2
,
isLeaf
:
false
,
parent
:
''
}
]
}
]
}
}
}
},
},
mounted
()
{
mounted
()
{
this
.
getYears
()
},
},
methods
:
{
methods
:
{
async
getYears
()
{
const
_data
=
await
API_OPERATION
.
getBudgetYear
()
this
.
yearList
=
_data
.
data
this
.
selectYear
=
_data
.
data
[
0
]
this
.
getBudget
()
},
async
getBudget
(
param
,
isLeaf
)
{
this
.
selectId
=
param
||
null
const
_data
=
await
API_OPERATION
.
getBudget
({
center
:
this
.
selectId
,
year
:
this
.
selectYear
})
this
.
dataList
=
{
parentId
:
param
||
''
,
isLeaf
:
isLeaf
,
xAxis
:
_data
.
data
.
xAxis
,
yAxis
:
_data
.
data
.
yAxis
,
idxs
:
_data
.
data
.
idxs
,
data
:
_data
.
data
.
data
}
},
downData
(
item
)
{
downData
(
item
)
{
console
.
log
(
'传来的值:'
,
item
)
console
.
log
(
'传来的值:'
,
item
)
setTimeout
(()
=>
{
if
(
!
item
)
{
if
(
!
item
)
{
this
.
getBudget
(
''
,
false
)
this
.
dataList
=
{
}
else
{
legend
:
[
'新签预算'
,
'新签实际'
,
'完成比'
],
this
.
getBudget
(
item
,
true
)
xAxis
:
[
'运营管理中心'
,
'解决方案中心'
,
'智能制造中心'
,
'生态合作中心'
,
'客户运营中心'
,
'XXXX中心'
],
}
yAxis
:
[
'单位:万元'
,
'完成比:%'
],
data
:
[
{
name
:
'新签预算'
,
type
:
'bar'
,
data
:
[
{
value
:
123.2
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
125.6
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
176.7
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
135.6
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
162.2
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
200
,
isLeaf
:
false
,
parent
:
''
}
]
},
{
name
:
'新签实际'
,
type
:
'bar'
,
data
:
[
{
value
:
83.2
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
75.6
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
86.7
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
85.6
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
62.2
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
90
,
isLeaf
:
false
,
parent
:
''
}
]
},
{
name
:
'完成比'
,
type
:
'line'
,
yAxisIndex
:
1
,
data
:
[
{
value
:
4.5
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
6.3
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
10.2
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
20.3
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
23.4
,
isLeaf
:
false
,
parent
:
''
},
{
value
:
30.2
,
isLeaf
:
false
,
parent
:
''
}
]
}
]
}
}
if
(
item
.
indexOf
(
'中心'
)
!==
-
1
)
{
this
.
dataList
=
{
parent
:
item
,
legend
:
[
'新签预算'
,
'新签实际'
,
'完成比'
],
xAxis
:
[
'运营管理部门'
,
'解决方案部门'
,
'智能制造部门'
,
'生态合作部门'
,
'客户运营部门'
,
'XXXX部门'
],
yAxis
:
[
'单位:万元'
,
'完成比:%'
],
data
:
[
{
name
:
'新签预算'
,
type
:
'bar'
,
data
:
[
{
value
:
123.2
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
125.6
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
176.7
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
135.6
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
162.2
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
200
,
isLeaf
:
false
,
parent
:
item
}
]
},
{
name
:
'新签实际'
,
type
:
'bar'
,
data
:
[
{
value
:
83.2
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
75.6
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
86.7
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
85.6
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
62.2
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
90
,
isLeaf
:
false
,
parent
:
item
}
]
},
{
name
:
'完成比'
,
type
:
'line'
,
yAxisIndex
:
1
,
data
:
[
{
value
:
4.5
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
6.3
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
10.2
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
20.3
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
23.4
,
isLeaf
:
false
,
parent
:
item
},
{
value
:
30.2
,
isLeaf
:
false
,
parent
:
item
}
]
}
]
}
}
if
(
item
.
indexOf
(
'部门'
)
!==
-
1
)
{
this
.
dataList
=
{
parent
:
item
,
legend
:
[
'新签预算'
,
'新签实际'
,
'完成比'
],
xAxis
:
[
'小小黄'
,
'小小安'
,
'小小圆'
,
'小小静'
,
'小小宝'
,
'XXXXXXX'
],
yAxis
:
[
'单位:万元'
,
'完成比:%'
],
data
:
[
{
name
:
'新签预算'
,
type
:
'bar'
,
data
:
[
{
value
:
123.2
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
125.6
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
176.7
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
135.6
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
162.2
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
200
,
isLeaf
:
true
,
parent
:
item
}
]
},
{
name
:
'新签实际'
,
type
:
'bar'
,
data
:
[
{
value
:
83.2
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
75.6
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
86.7
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
85.6
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
62.2
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
90
,
isLeaf
:
true
,
parent
:
item
}
]
},
{
name
:
'完成比'
,
type
:
'line'
,
yAxisIndex
:
1
,
data
:
[
{
value
:
4.5
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
6.3
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
10.2
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
20.3
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
23.4
,
isLeaf
:
true
,
parent
:
item
},
{
value
:
30.2
,
isLeaf
:
true
,
parent
:
item
}
]
}
]
}
}
},
0
)
}
}
}
}
}
}
...
...
src/views/content/operation/components/cashFlow.vue
View file @
6402c952
<
template
>
<
template
>
<div>
<div>
<div
class=
"d-flex search-box jc-end"
>
<div
class=
"d-flex search-box jc-end"
>
<el-select
v-model=
"selectType
"
size=
"mini
"
>
<el-select
v-model=
"selectType
Id"
size=
"mini"
@
change=
"getCashFlowYear
"
>
<el-option
<el-option
v-for=
"item in typeList"
v-for=
"item in typeList"
:key=
"item"
:key=
"item
.id
"
:label=
"item"
:label=
"item
.name
"
:value=
"item"
>
:value=
"item
.id
"
>
</el-option>
</el-option>
</el-select>
</el-select>
<el-select
v-model=
"selectYear"
size=
"mini"
>
<el-select
v-model=
"selectYear"
size=
"mini"
@
change=
"getCashFlow"
>
<el-option
<el-option
v-for=
"item in yearList"
v-for=
"item in yearList"
:key=
"item"
:key=
"item"
...
@@ -24,29 +24,41 @@
...
@@ -24,29 +24,41 @@
<
script
>
<
script
>
import
negativeBarChart
from
'@/components/echarts/negativeBarChart'
// 饼图
import
negativeBarChart
from
'@/components/echarts/negativeBarChart'
// 饼图
import
*
as
API_OPERATION
from
'@/api/con.operation'
export
default
{
export
default
{
components
:
{
negativeBarChart
},
components
:
{
negativeBarChart
},
data
()
{
data
()
{
return
{
return
{
selectYear
:
'2020'
,
selectYear
:
''
,
yearList
:
[
'2021'
,
'2020'
,
'2019'
,
'2018'
,
'2017'
],
yearList
:
[],
selectType
:
'总裁办'
,
selectTypeId
:
''
,
typeList
:
[
'总裁办'
,
'客户营销中心'
,
'计划财务中心'
,
'运营管理中心'
,
'解决方案中心'
,
'IT服务中心'
,
'智能制造中心'
,
'生态合作中心'
,
'客户运营中心'
],
typeList
:
[],
dataList
:
{
dataList
:
{}
legend
:
[
'流入'
,
'流出'
,
'净流入'
],
xAxis
:
[
'1月'
,
'2月'
,
'3月'
,
'4月'
,
'5月'
,
'6月'
,
'7月'
,
'8月'
,
'9月'
,
'10月'
,
'11月'
,
'12月'
],
data
:
{
inCome
:
[
34
,
56
,
55
,
33
,
11
,
76
,
54
,
34
,
21
,
33
,
87
,
66
],
flowOut
:
[
-
4
,
-
56
,
-
55
,
-
33
,
-
11
,
-
76
,
-
54
,
-
34
,
-
21
,
-
33
,
-
87
,
-
66
],
inFlow
:
[
30
,
0
,
0
,
0
,
22
,
-
65
,
22
,
20
,
13
,
0
,
0
,
0
]
}
}
}
}
},
},
mounted
()
{
async
mounted
()
{
await
this
.
getCashFlowList
()
},
},
methods
:
{
methods
:
{
async
getCashFlowList
()
{
const
_data
=
await
API_OPERATION
.
getCashFlowList
()
this
.
typeList
=
_data
.
data
this
.
selectTypeId
=
this
.
typeList
[
0
].
id
this
.
getCashFlowYear
()
},
async
getCashFlowYear
()
{
const
_data
=
await
API_OPERATION
.
getCashFlowYear
({
id
:
this
.
selectTypeId
})
this
.
yearList
=
_data
.
data
this
.
selectYear
=
this
.
yearList
[
0
]
this
.
getCashFlow
()
},
async
getCashFlow
()
{
const
_data
=
await
API_OPERATION
.
getCashFlow
({
id
:
this
.
selectTypeId
,
year
:
this
.
selectYear
})
this
.
dataList
=
_data
.
data
this
.
dataList
.
data
.
inflow
=
_data
.
data
.
data
.
inflow
.
map
(
item
=>
item
.
value
)
this
.
dataList
.
data
.
flowOut
=
_data
.
data
.
data
.
flowOut
.
map
(
item
=>
-
item
.
value
)
this
.
dataList
.
data
.
netInflow
=
_data
.
data
.
data
.
netInflow
.
map
(
item
=>
-
item
.
value
)
}
}
}
}
}
</
script
>
</
script
>
...
...
src/views/content/operation/components/contractAmount.vue
View file @
6402c952
<
template
>
<
template
>
<div>
<div>
<div
class=
"d-flex search-box jc-end"
>
<div
class=
"d-flex search-box jc-end"
>
<el-select
v-model=
"selectType"
size=
"mini"
>
<el-select
v-model=
"selectType"
size=
"mini"
@
change=
"getContractYear"
>
<el-option
<el-option
v-for=
"item in typeList"
v-for=
"item in typeList"
:key=
"item"
:key=
"item"
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
:value=
"item"
>
:value=
"item"
>
</el-option>
</el-option>
</el-select>
</el-select>
<el-select
v-model=
"selectYear"
size=
"mini"
>
<el-select
v-model=
"selectYear"
size=
"mini"
@
change=
"getContract"
>
<el-option
<el-option
v-for=
"item in yearList"
v-for=
"item in yearList"
:key=
"item"
:key=
"item"
...
@@ -24,30 +24,32 @@
...
@@ -24,30 +24,32 @@
<
script
>
<
script
>
import
pieChart
from
'@/components/echarts/pieChart'
// 合同金额 饼图
import
pieChart
from
'@/components/echarts/pieChart'
// 合同金额 饼图
import
*
as
API_OPERATION
from
'@/api/con.operation'
export
default
{
export
default
{
components
:
{
pieChart
},
components
:
{
pieChart
},
data
()
{
data
()
{
return
{
return
{
selectYear
:
'
2020
'
,
selectYear
:
''
,
yearList
:
[
'2021'
,
'2020'
,
'2019'
,
'2018'
,
'2017'
],
yearList
:
[],
selectType
:
'销售合同'
,
selectType
:
'销售合同'
,
typeList
:
[
'销售合同'
,
'采购合同'
],
typeList
:
[
'销售合同'
,
'采购合同'
],
dataList
:
{
dataList
:
{}
legend
:
[
'10W以下'
,
'10W-30W'
,
'30W-50W'
,
'50W-100W'
,
'100W以上'
],
data
:
[
{
value
:
335
,
name
:
'10W以下'
},
{
value
:
310
,
name
:
'10W-30W'
},
{
value
:
234
,
name
:
'30W-50W'
},
{
value
:
135
,
name
:
'50W-100W'
},
{
value
:
1548
,
name
:
'100W以上'
}
]
}
}
}
},
},
mounted
()
{
async
mounted
()
{
await
this
.
getContractYear
()
},
},
methods
:
{
methods
:
{
async
getContractYear
()
{
const
_data
=
await
API_OPERATION
.
getContractYear
({
type
:
this
.
selectType
})
this
.
yearList
=
_data
.
data
this
.
selectYear
=
_data
.
data
[
0
]
this
.
getContract
()
},
async
getContract
()
{
const
_data
=
await
API_OPERATION
.
getContract
({
type
:
this
.
selectType
,
year
:
this
.
selectYear
})
this
.
dataList
=
_data
.
data
}
}
}
}
}
</
script
>
</
script
>
...
...
src/views/content/operation/components/productIncome.vue
View file @
6402c952
<
template
>
<
template
>
<div>
<div>
<div
class=
"d-flex search-box jc-end"
>
<div
class=
"d-flex search-box jc-end"
>
<el-select
v-model=
"selectYear"
size=
"mini"
>
<el-select
v-model=
"selectYear"
size=
"mini"
@
change=
"getProject"
>
<el-option
<el-option
v-for=
"item in yearList"
v-for=
"item in yearList"
:key=
"item"
:key=
"item"
...
@@ -12,14 +12,14 @@
...
@@ -12,14 +12,14 @@
</div>
</div>
<div
class=
"d-flex heightCut68"
>
<div
class=
"d-flex heightCut68"
>
<div
class=
"flex-1 ball"
>
<div
class=
"flex-1 ball"
>
<waterBall
:message=
"
dataList1
"
idstr=
"ball1"
class=
"heightCut68"
></waterBall>
<waterBall
:message=
"
acutalBall.charts
"
idstr=
"ball1"
class=
"heightCut68"
></waterBall>
<p>
预算收入
200
万元
</p>
<p>
预算收入
{{
acutalBall
.
budgetCost
}}
万元
</p>
<p>
实际收入 170万元
</p>
<p>
实际收入
{{
acutalBall
.
actualCost
}}
170万元
</p>
</div>
</div>
<div
class=
"flex-1 ball"
>
<div
class=
"flex-1 ball"
>
<waterBall
:message=
"
dataList2
"
idstr=
"ball2"
class=
"heightCut68"
></waterBall>
<waterBall
:message=
"
budgetBall.charts
"
idstr=
"ball2"
class=
"heightCut68"
></waterBall>
<p>
预算成本
200
万元
</p>
<p>
预算成本
{{
budgetBall
.
budgetIncome
}}
万元
</p>
<p>
实际成本
170
万元
</p>
<p>
实际成本
{{
budgetBall
.
realIncome
}}
万元
</p>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -27,26 +27,32 @@
...
@@ -27,26 +27,32 @@
<
script
>
<
script
>
import
waterBall
from
'@/components/echarts/waterBallChart'
// 项目收入 水球图
import
waterBall
from
'@/components/echarts/waterBallChart'
// 项目收入 水球图
import
*
as
API_OPERATION
from
'@/api/con.operation'
export
default
{
export
default
{
components
:
{
waterBall
},
components
:
{
waterBall
},
data
()
{
data
()
{
return
{
return
{
selectYear
:
'2021/4'
,
selectYear
:
''
,
yearList
:
[
'2021/4'
,
'2021/3'
,
'2021/2'
,
'2021/1'
],
yearList
:
[],
dataList1
:
{
acutalBall
:
{},
name
:
'收入比'
,
budgetBall
:
{}
data
:
[
0.79
]
},
dataList2
:
{
name
:
'成本比'
,
data
:
[
0.59
]
}
}
}
},
},
mounted
()
{
mounted
()
{
this
.
getProjectYear
()
},
},
methods
:
{
methods
:
{
async
getProjectYear
()
{
const
_data
=
await
API_OPERATION
.
getProjectYear
()
this
.
yearList
=
_data
.
data
this
.
selectYear
=
_data
.
data
[
0
]
this
.
getProject
()
},
async
getProject
()
{
const
_data
=
await
API_OPERATION
.
getProject
({
date
:
this
.
selectYear
})
this
.
budgetBall
=
_data
.
data
.
budgetBall
this
.
acutalBall
=
_data
.
data
.
acutalBall
}
}
}
}
}
</
script
>
</
script
>
...
...
src/views/content/operation/components/receiptStatistics.vue
View file @
6402c952
<
template
>
<
template
>
<div>
<div>
<div
class=
"d-flex search-box jc-end"
>
<div
class=
"d-flex search-box jc-end"
>
<el-select
v-model=
"selectYear"
size=
"mini"
>
<el-select
v-model=
"selectYear"
size=
"mini"
@
change=
"changeYear"
>
<el-option
<el-option
v-for=
"item in yearList"
v-for=
"item in yearList"
:key=
"item"
:key=
"item"
...
@@ -12,9 +12,9 @@
...
@@ -12,9 +12,9 @@
</div>
</div>
<div
class=
"ball-line d-flex heightCut68"
>
<div
class=
"ball-line d-flex heightCut68"
>
<div
class=
"ball flex-1"
>
<div
class=
"ball flex-1"
>
<waterBall
:message=
"
dataList1
"
idstr=
"ballLeft"
class=
"heightCut68"
></waterBall>
<waterBall
:message=
"
waterBall.charts
"
idstr=
"ballLeft"
class=
"heightCut68"
></waterBall>
<p>
共计
1200
万元
</p>
<p>
共计
{{
waterBall
.
sign
.
toFixed
(
2
)
}}
万元
</p>
<p>
已回款
170
万元
</p>
<p>
已回款
{{
waterBall
.
acc
.
toFixed
(
2
)
}}
万元
</p>
</div>
</div>
<div
class=
"flex-2"
>
<div
class=
"flex-2"
>
<lineChart
:message=
"dataList"
idstr=
"receiptStatistics"
class=
"receiptStatistics"
></lineChart>
<lineChart
:message=
"dataList"
idstr=
"receiptStatistics"
class=
"receiptStatistics"
></lineChart>
...
@@ -27,40 +27,35 @@
...
@@ -27,40 +27,35 @@
<
script
>
<
script
>
import
lineChart
from
'@/components/echarts/lineChart'
// 回款额 折线图
import
lineChart
from
'@/components/echarts/lineChart'
// 回款额 折线图
import
waterBall
from
'@/components/echarts/waterBallChart'
import
waterBall
from
'@/components/echarts/waterBallChart'
import
*
as
API_OPERATION
from
'@/api/con.operation'
export
default
{
export
default
{
components
:
{
waterBall
,
lineChart
},
components
:
{
waterBall
,
lineChart
},
data
()
{
data
()
{
return
{
return
{
selectYear
:
'2020'
,
selectYear
:
''
,
yearList
:
[
'2021'
,
'2020'
,
'2019'
,
'2018'
,
'2017'
],
yearList
:
[],
dataList1
:
{
waterBall
:
{},
name
:
'收入比'
,
dataList
:
{}
data
:
[
0.19
]
},
dataList
:
{
legend
:
[
'合同签署金额'
,
'应收款'
,
'累计收款金额'
],
xAxis
:
[
'1月'
,
'2月'
,
'3月'
,
'4月'
,
'5月'
,
'6月'
,
'7月'
],
data
:
[{
name
:
'合同签署金额'
,
data
:
[
820
,
932
,
901
,
934
,
1290
,
1330
,
620
],
type
:
'line'
},
{
name
:
'应收款'
,
data
:
[
420
,
532
,
701
,
434
,
290
,
330
,
120
],
type
:
'line'
},
{
name
:
'累计收款金额'
,
data
:
[
520
,
232
,
401
,
334
,
790
,
830
,
320
],
type
:
'line'
}]
}
}
}
},
},
mounted
()
{
mounted
()
{
this
.
getYears
()
},
},
methods
:
{
methods
:
{
async
getYears
()
{
const
_data
=
await
API_OPERATION
.
getCollectionYear
()
this
.
yearList
=
_data
.
data
this
.
selectYear
=
_data
.
data
[
0
]
this
.
getCollection
()
},
changeYear
()
{
this
.
getCollection
()
},
async
getCollection
()
{
const
_data
=
await
API_OPERATION
.
getCollection
({
year
:
this
.
selectYear
})
this
.
dataList
=
_data
.
data
this
.
waterBall
=
_data
.
data
.
waterBall
}
}
}
}
}
</
script
>
</
script
>
...
...
src/views/content/operation/components/revenueRanking.vue
View file @
6402c952
<
template
>
<
template
>
<div>
<div>
<div
class=
"d-flex search-box jc-end"
>
<div
class=
"d-flex search-box jc-end"
>
<el-select
v-model=
"selectYear"
size=
"mini"
>
<div
class=
"back"
@
click=
"goBack"
v-if=
"!isClick"
>
<
返回
</div>
<el-select
v-model=
"selectYear"
size=
"mini"
@
change=
"getRank"
>
<el-option
<el-option
v-for=
"item in yearList"
v-for=
"item in yearList"
:key=
"item"
:key=
"item"
...
@@ -9,17 +10,18 @@
...
@@ -9,17 +10,18 @@
:value=
"item"
>
:value=
"item"
>
</el-option>
</el-option>
</el-select>
</el-select>
</div>
</div>
<div
class=
"block"
>
<div
class=
"block"
>
<div
class=
"listTitleBox"
>
<div
class=
"listTitleBox"
>
<div
class=
"listTitle"
v-for=
"(item,index) in column"
:key=
"index"
>
{{
item
}}
</div>
<div
class=
"listTitle"
v-for=
"(item,index) in column"
:key=
"index"
>
{{
item
}}
</div>
</div>
</div>
<ul>
<ul>
<li
v-for=
"(item,index) in list"
:key=
"index"
>
<li
v-for=
"(item,index) in list"
:key=
"index"
@
click=
"getDataById(item)"
>
<div>
{{
Number
(
index
)
+
1
}}
</div>
<div>
{{
Number
(
index
)
+
1
}}
</div>
<div>
{{
item
.
name
}}
</div>
<div>
{{
item
.
name
}}
</div>
<div>
{{
item
.
num
}}
</div>
<div>
{{
item
.
autual
}}
</div>
<div>
{{
item
.
percent
}}
</div>
<div>
{{
item
.
rate
}}
</div>
</li>
</li>
</ul>
</ul>
</div>
</div>
...
@@ -27,49 +29,58 @@
...
@@ -27,49 +29,58 @@
</
template
>
</
template
>
<
script
>
<
script
>
import
*
as
API_OPERATION
from
'@/api/con.operation'
// 营收排行
// 营收排行
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
selectYear
:
'2020'
,
selectYear
:
''
,
yearList
:
[
'2021'
,
'2020'
,
'2019'
,
'2018'
,
'2017'
],
yearList
:
[],
selectType
:
''
,
isClick
:
true
,
column
:
[
'排名'
,
'中心名称'
,
'完成数额'
,
'完成比'
],
column
:
[
'排名'
,
'中心名称'
,
'完成数额'
,
'完成比'
],
list
:
[
list
:
[]
{
name
:
'平台应用吧'
,
num
:
'1500W'
,
percent
:
'50%'
},
{
name
:
'平台应用吧'
,
num
:
'1500W'
,
percent
:
'50%'
},
{
name
:
'平台应用吧'
,
num
:
'1500W'
,
percent
:
'50%'
},
{
name
:
'平台应用吧'
,
num
:
'1500W'
,
percent
:
'50%'
},
{
name
:
'平台应用吧'
,
num
:
'1500W'
,
percent
:
'50%'
}
]
}
}
},
},
mounted
()
{
mounted
()
{
this
.
getRankYear
()
},
},
methods
:
{
methods
:
{
async
getRankYear
()
{
const
_data
=
await
API_OPERATION
.
getRankYear
()
this
.
yearList
=
_data
.
data
this
.
selectYear
=
this
.
yearList
[
0
]
this
.
getRank
()
},
async
getRank
()
{
const
_data
=
await
API_OPERATION
.
getRank
({
center
:
this
.
selectType
||
null
,
year
:
this
.
selectYear
})
this
.
list
=
_data
.
data
},
getDataById
(
item
)
{
if
(
this
.
isClick
)
{
this
.
isClick
=
false
this
.
selectType
=
item
.
id
this
.
$set
(
this
.
column
,
1
,
'部门名称'
)
this
.
getRank
()
}
},
goBack
()
{
this
.
isClick
=
true
this
.
selectType
=
null
this
.
$set
(
this
.
column
,
1
,
'中心名称'
)
this
.
getRank
()
}
}
}
}
}
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
@import
'~@/assets/style/operation.scss'
;
@import
'~@/assets/style/operation.scss'
;
.back
{
font-size
:
.12rem
;
color
:
#fff
;
padding-right
:
.1rem
;
padding-top
:
.05rem
;
cursor
:
pointer
;
}
</
style
>
</
style
>
src/views/content/operation/components/revenueStatistics.vue
View file @
6402c952
<
template
>
<
template
>
<div>
<div>
<div
class=
"d-flex search-box jc-end"
>
<div
class=
"d-flex search-box jc-end"
>
<el-select
v-model=
"selectType"
size=
"mini"
>
<el-select
v-model=
"selectType"
size=
"mini"
@
change=
"getRevenueYear"
>
<el-option
<el-option
v-for=
"item in typeList"
v-for=
"item in typeList"
:key=
"item"
:key=
"item"
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
:value=
"item"
>
:value=
"item"
>
</el-option>
</el-option>
</el-select>
</el-select>
<el-select
v-model=
"selectYear"
size=
"mini"
>
<el-select
v-model=
"selectYear"
size=
"mini"
@
change=
"getRevenue('')"
>
<el-option
<el-option
v-for=
"item in yearList"
v-for=
"item in yearList"
:key=
"item"
:key=
"item"
...
@@ -24,15 +24,16 @@
...
@@ -24,15 +24,16 @@
<
script
>
<
script
>
import
barChart
from
'@/components/echarts/barChart'
// 营收统计 柱图
import
barChart
from
'@/components/echarts/barChart'
// 营收统计 柱图
import
*
as
API_OPERATION
from
'@/api/con.operation'
export
default
{
export
default
{
components
:
{
barChart
},
components
:
{
barChart
},
data
()
{
data
()
{
return
{
return
{
selectId
:
''
,
selectType
:
'合同收入'
,
selectType
:
'合同收入'
,
typeList
:
[
'合同收入'
,
'项目收入'
,
'切分收入'
],
typeList
:
[
'合同收入'
,
'项目收入'
,
'切分收入'
],
selectYear
:
'
2021/4
'
,
selectYear
:
''
,
yearList
:
[
'2021/4'
,
'2021/3'
,
'2021/2'
,
'2021/1'
],
yearList
:
[],
dataList
:
{
dataList
:
{
xAxis
:
[
'总裁办中心'
,
'客户营销中心'
,
'计划财务中心'
,
'运营管理中心'
,
'解决方案中心'
,
'IT服务中心'
,
'智能制造中心'
,
'生态合作中心'
,
'客户运营中心'
],
xAxis
:
[
'总裁办中心'
,
'客户营销中心'
,
'计划财务中心'
,
'运营管理中心'
,
'解决方案中心'
,
'IT服务中心'
,
'智能制造中心'
,
'生态合作中心'
,
'客户运营中心'
],
data
:
[
data
:
[
...
@@ -50,63 +51,33 @@ export default {
...
@@ -50,63 +51,33 @@ export default {
}
}
},
},
mounted
()
{
mounted
()
{
this
.
getRevenueYear
()
},
},
methods
:
{
methods
:
{
async
getRevenueYear
()
{
const
_data
=
await
API_OPERATION
.
getRevenueYear
({
type
:
this
.
selectType
})
this
.
yearList
=
_data
.
data
this
.
selectYear
=
this
.
yearList
[
0
]
this
.
getRevenue
()
},
async
getRevenue
(
param
,
isLeaf
)
{
this
.
selectId
=
param
||
null
const
_data
=
await
API_OPERATION
.
getRevenue
({
center
:
this
.
selectId
,
type
:
this
.
selectType
,
date
:
this
.
selectYear
})
this
.
dataList
=
{
parentId
:
param
||
''
,
isLeaf
:
isLeaf
,
xAxis
:
_data
.
data
.
xAxis
,
idxs
:
_data
.
data
.
idxs
,
data
:
_data
.
data
.
data
}
},
downData
(
item
)
{
downData
(
item
)
{
console
.
log
(
'传来的值:'
,
item
)
console
.
log
(
'传来的值:'
,
item
)
setTimeout
(()
=>
{
if
(
!
item
)
{
if
(
!
item
)
{
this
.
getRevenue
(
''
,
false
)
this
.
dataList
=
{
}
else
{
xAxis
:
[
'总裁办中心'
,
'客户营销中心'
,
'计划财务中心'
,
'运营管理中心'
,
'解决方案中心'
,
'IT服务中心'
,
'智能制造中心'
,
'生态合作中心'
,
'客户运营中心'
],
this
.
getRevenue
(
item
,
true
)
data
:
[
}
{
value
:
123.2
,
parent
:
''
,
isLeaf
:
false
},
{
value
:
76.7
,
parent
:
''
,
isLeaf
:
false
},
{
value
:
135.6
,
parent
:
''
,
isLeaf
:
false
},
{
value
:
162.2
,
parent
:
''
,
isLeaf
:
false
},
{
value
:
32.6
,
parent
:
''
,
isLeaf
:
false
},
{
value
:
76.7
,
parent
:
''
,
isLeaf
:
false
},
{
value
:
135.6
,
parent
:
''
,
isLeaf
:
false
},
{
value
:
162.2
,
parent
:
''
,
isLeaf
:
false
},
{
value
:
32.6
,
parent
:
''
,
isLeaf
:
false
}
]
}
}
if
(
item
.
indexOf
(
'中心'
)
!==
-
1
)
{
this
.
dataList
=
{
parent
:
item
,
xAxis
:
[
'总裁办部门'
,
'客户营销部门'
,
'计划财务部门'
,
'运营管理部门'
,
'解决方案部门'
,
'IT服务部门'
,
'智能制造部门'
,
'生态合作部门'
,
'客户运营部门'
],
data
:
[
{
value
:
123.2
,
parent
:
item
,
isLeaf
:
false
},
{
value
:
76.7
,
parent
:
item
,
isLeaf
:
false
},
{
value
:
135.6
,
parent
:
item
,
isLeaf
:
false
},
{
value
:
162.2
,
parent
:
item
,
isLeaf
:
false
},
{
value
:
32.6
,
parent
:
item
,
isLeaf
:
false
},
{
value
:
123.2
,
parent
:
item
,
isLeaf
:
false
},
{
value
:
76.7
,
parent
:
item
,
isLeaf
:
false
},
{
value
:
135.6
,
parent
:
item
,
isLeaf
:
false
},
{
value
:
162.2
,
parent
:
item
,
isLeaf
:
false
}
]
}
}
if
(
item
.
indexOf
(
'部门'
)
!==
-
1
)
{
this
.
dataList
=
{
parent
:
item
,
level
:
'people'
,
xAxis
:
[
'小小黄'
,
'小小安'
,
'小小圆'
,
'小小静'
,
'小小宝'
,
'小小丽'
,
'小小徐'
,
'小小→'
,
'小小人'
],
data
:
[
{
value
:
23.2
,
parent
:
item
,
isLeaf
:
true
},
{
value
:
6.7
,
parent
:
item
,
isLeaf
:
true
},
{
value
:
35.6
,
parent
:
item
,
isLeaf
:
true
},
{
value
:
62.2
,
parent
:
item
,
isLeaf
:
true
},
{
value
:
2.6
,
parent
:
item
,
isLeaf
:
true
},
{
value
:
6.7
,
parent
:
item
,
isLeaf
:
true
},
{
value
:
35.6
,
parent
:
item
,
isLeaf
:
true
},
{
value
:
62.2
,
parent
:
item
,
isLeaf
:
true
},
{
value
:
2.6
,
parent
:
item
,
isLeaf
:
true
}
]
}
}
},
0
)
}
}
}
}
}
}
...
...
src/views/content/operation/components/totalExpenses.vue
View file @
6402c952
<
template
>
<
template
>
<div>
<div>
<div
class=
"d-flex search-box jc-end"
>
<div
class=
"d-flex search-box jc-end"
>
<el-select
v-model=
"selectYear"
size=
"mini"
>
<el-select
v-model=
"selectYear"
size=
"mini"
@
change=
"getFee('')"
>
<el-option
<el-option
v-for=
"item in yearList"
v-for=
"item in yearList"
:key=
"item"
:key=
"item"
...
@@ -16,71 +16,45 @@
...
@@ -16,71 +16,45 @@
<
script
>
<
script
>
import
barChart
from
'@/components/echarts/barChart'
// 费用统计 柱图
import
barChart
from
'@/components/echarts/barChart'
// 费用统计 柱图
import
*
as
API_OPERATION
from
'@/api/con.operation'
export
default
{
export
default
{
components
:
{
barChart
},
components
:
{
barChart
},
data
()
{
data
()
{
return
{
return
{
selectYear
:
'2021/4'
,
selectYear
:
''
,
yearList
:
[
'2021/4'
,
'2021/3'
,
'2021/2'
,
'2021/1'
],
yearList
:
[],
dataList
:
{
selectId
:
''
,
xAxis
:
[
'运营管理中心'
,
'解决方案中心'
,
'智能制造中心'
,
'生态合作中心'
,
'客户运营中心'
],
dataList
:
{}
data
:
[
{
value
:
123.2
,
parent
:
''
,
isLeaf
:
false
},
{
value
:
76.7
,
parent
:
''
,
isLeaf
:
false
},
{
value
:
135.6
,
parent
:
''
,
isLeaf
:
false
},
{
value
:
162.2
,
parent
:
''
,
isLeaf
:
false
},
{
value
:
32.6
,
parent
:
''
,
isLeaf
:
false
}
]
}
}
}
},
},
mounted
()
{
mounted
()
{
this
.
getFeeYear
()
},
},
methods
:
{
methods
:
{
async
getFeeYear
()
{
const
_data
=
await
API_OPERATION
.
getFeeYear
()
this
.
yearList
=
_data
.
data
this
.
selectYear
=
this
.
yearList
[
0
]
this
.
getFee
()
},
async
getFee
(
param
,
isLeaf
)
{
this
.
selectId
=
param
||
null
const
_data
=
await
API_OPERATION
.
getFee
({
center
:
this
.
selectId
,
date
:
this
.
selectYear
})
this
.
dataList
=
{
parentId
:
param
||
''
,
isLeaf
:
isLeaf
,
xAxis
:
_data
.
data
.
xAxis
,
idxs
:
_data
.
data
.
idxs
,
data
:
_data
.
data
.
data
}
},
downData
(
item
)
{
downData
(
item
)
{
console
.
log
(
'传来的值:'
,
item
)
console
.
log
(
'传来的值:'
,
item
)
setTimeout
(()
=>
{
if
(
!
item
)
{
if
(
!
item
)
{
this
.
getFee
(
''
,
false
)
this
.
dataList
=
{
}
else
{
xAxis
:
[
'运营管理中心'
,
'解决方案中心'
,
'智能制造中心'
,
'生态合作中心'
,
'客户运营中心'
],
this
.
getFee
(
item
,
true
)
data
:
[
}
{
value
:
123.2
,
parent
:
''
,
isLeaf
:
false
},
{
value
:
76.7
,
parent
:
''
,
isLeaf
:
false
},
{
value
:
135.6
,
parent
:
''
,
isLeaf
:
false
},
{
value
:
162.2
,
parent
:
''
,
isLeaf
:
false
},
{
value
:
32.6
,
parent
:
''
,
isLeaf
:
false
}
]
}
}
if
(
item
.
indexOf
(
'中心'
)
!==
-
1
)
{
this
.
dataList
=
{
parent
:
'运营管理中心'
,
xAxis
:
[
'运营管理部门'
,
'解决方案部门'
,
'智能制造部门'
,
'生态合作部门'
,
'客户运营部门'
],
data
:
[
{
value
:
123.2
,
parent
:
'运营管理中心'
,
isLeaf
:
false
},
{
value
:
76.7
,
parent
:
'运营管理中心'
,
isLeaf
:
false
},
{
value
:
135.6
,
parent
:
'运营管理中心'
,
isLeaf
:
false
},
{
value
:
162.2
,
parent
:
'运营管理中心'
,
isLeaf
:
false
},
{
value
:
32.6
,
parent
:
'运营管理中心'
,
isLeaf
:
false
}
]
}
}
if
(
item
.
indexOf
(
'部门'
)
!==
-
1
)
{
this
.
dataList
=
{
parent
:
'解决方案部门'
,
level
:
'people'
,
xAxis
:
[
'小小黄'
,
'小小安'
,
'小小圆'
,
'小小静'
,
'小小宝'
],
data
:
[
{
value
:
23.2
,
parent
:
'解决方案部门'
,
isLeaf
:
true
},
{
value
:
6.7
,
parent
:
'解决方案部门'
,
isLeaf
:
true
},
{
value
:
35.6
,
parent
:
'解决方案部门'
,
isLeaf
:
true
},
{
value
:
62.2
,
parent
:
'解决方案部门'
,
isLeaf
:
true
},
{
value
:
2.6
,
parent
:
'解决方案部门'
,
isLeaf
:
true
}
]
}
}
},
0
)
}
}
}
}
}
}
...
...
src/views/content/operation/page.vue
View file @
6402c952
...
@@ -67,8 +67,10 @@ export default {
...
@@ -67,8 +67,10 @@ export default {
}
}
},
},
mounted
()
{
mounted
()
{
},
},
methods
:
{
methods
:
{
}
}
}
}
</
script
>
</
script
>
...
...
src/views/system/index/components/importantProject.vue
View file @
6402c952
...
@@ -118,6 +118,7 @@ export default {
...
@@ -118,6 +118,7 @@ export default {
margin
:
.12rem
0
.24rem
;
margin
:
.12rem
0
.24rem
;
.el-carousel
{
.el-carousel
{
height
:
1
.24rem
;
height
:
1
.24rem
;
overflow-y
:
hidden
;
}
}
::v-deep
.el-carousel__container
{
::v-deep
.el-carousel__container
{
height
:
1
.24rem
;
height
:
1
.24rem
;
...
...
src/views/system/index/components/knowledgeGraph.vue
View file @
6402c952
...
@@ -25,7 +25,7 @@
...
@@ -25,7 +25,7 @@
</div>
</div>
</div>
</div>
<graphChart
:message=
"mapData"
idstr=
"graphChart"
class=
"heightCut
44
"
></graphChart>
<graphChart
:message=
"mapData"
idstr=
"graphChart"
class=
"heightCut
112
"
></graphChart>
<div
class=
"open"
@
click=
"openDialog"
></div>
<div
class=
"open"
@
click=
"openDialog"
></div>
<knowledgeDialog
v-if=
"knowledgeDialogShow"
ref=
"child"
></knowledgeDialog>
<knowledgeDialog
v-if=
"knowledgeDialogShow"
ref=
"child"
></knowledgeDialog>
</div>
</div>
...
...
src/views/system/login/page.vue
View file @
6402c952
...
@@ -8,7 +8,7 @@
...
@@ -8,7 +8,7 @@
<el-form
ref=
"loginForm"
:model=
"loginForm"
:rules=
"loginRules"
class=
"login-form"
auto-complete=
"on"
label-position=
"left"
>
<el-form
ref=
"loginForm"
:model=
"loginForm"
:rules=
"loginRules"
class=
"login-form"
auto-complete=
"on"
label-position=
"left"
>
<div
class=
"title-container"
>
<div
class=
"title-container"
>
<h3
class=
"title"
style=
"width: 450px"
>
内部运营大数据平台
</h3>
<h3
class=
"title"
style=
"width: 450px"
>
企业运营图谱
</h3>
</div>
</div>
<el-form-item
prop=
"username"
>
<el-form-item
prop=
"username"
>
...
@@ -46,14 +46,14 @@
...
@@ -46,14 +46,14 @@
<svg-icon
:icon-class=
"passwordType === 'password' ? 'eye' : 'eye-open'"
/>
<svg-icon
:icon-class=
"passwordType === 'password' ? 'eye' : 'eye-open'"
/>
</span>
</span>
</el-form-item>
</el-form-item>
<div
class=
"foundpass"
style=
"padding-bottom: 22px; float: right;"
>
<
!--
<
div
class=
"foundpass"
style=
"padding-bottom: 22px; float: right;"
>
<el-button
type=
"text"
@
click=
"resetVisible = true"
style=
"color: #00ffff"
><d2-icon
name=
"question-circle"
/>
忘记密码
</el-button>
<el-button
type=
"text"
@
click=
"resetVisible = true"
style=
"color: #00ffff"
><d2-icon
name=
"question-circle"
/>
忘记密码
</el-button>
</div
>
</div>
--
>
<el-button
:loading=
"loading"
type=
"primary"
style=
"width:100%;margin-bottom:30px;background-image: linear-gradient(to right, #3a8ee6 , #30ddf4);"
@
click
.
native
.
prevent=
"handleLogin"
round
>
登录
</el-button>
<el-button
:loading=
"loading"
type=
"primary"
style=
"width:100%;margin-bottom:30px;background-image: linear-gradient(to right, #3a8ee6 , #30ddf4);"
@
click
.
native
.
prevent=
"handleLogin"
round
>
登录
</el-button>
<div
class=
"tips"
>
<
!--
<
div
class=
"tips"
>
<span
style=
"margin-right:20px;"
>
账号: admin
</span>
<span
style=
"margin-right:20px;"
>
账号: admin
</span>
<span>
密码: 123456
</span>
<span>
密码: 123456
</span>
</div>
</div>
-->
</el-form>
</el-form>
</div></el-col>
</div></el-col>
</el-row>
</el-row>
...
...
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