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
Expand all
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
This diff is collapsed.
Click to expand it.
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