Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
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
e45f4704
Commit
e45f4704
authored
May 26, 2021
by
乐宝呗666
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
联调客户接口修改bug
parent
d8b02a88
Show whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
526 additions
and
242 deletions
+526
-242
App.vue
src/App.vue
+3
-0
con.business.js
src/api/con.business.js
+1
-1
con.client.js
src/api/con.client.js
+35
-3
con.organ.js
src/api/con.organ.js
+33
-0
client.scss
src/assets/style/client.scss
+22
-6
start.scss
src/assets/style/start.scss
+105
-0
color.scss
src/assets/style/unit/color.scss
+1
-1
barChart.vue
src/components/echarts/barChart.vue
+1
-1
funnel.vue
src/components/echarts/funnel.vue
+8
-0
pieChart.vue
src/components/echarts/pieChart.vue
+2
-2
treeChart.vue
src/components/echarts/treeChart.vue
+18
-8
index.vue
src/components/start/index.vue
+83
-0
page.vue
src/views/content/business/page.vue
+15
-8
serviceAnalysis.vue
src/views/content/client/components/serviceAnalysis.vue
+16
-12
page.vue
src/views/content/client/page.vue
+74
-109
cashFlow.vue
src/views/content/operation/components/cashFlow.vue
+2
-2
revenueStatistics.vue
src/views/content/operation/components/revenueStatistics.vue
+2
-1
totalExpenses.vue
src/views/content/operation/components/totalExpenses.vue
+2
-1
page.vue
src/views/content/operation/page.vue
+1
-1
orgDetail.vue
src/views/content/organization/components/orgDetail.vue
+2
-1
staffInfo.vue
src/views/content/organization/components/staffInfo.vue
+46
-5
page.vue
src/views/content/organization/page.vue
+24
-68
itemNationwide.vue
src/views/system/index/components/itemNationwide.vue
+10
-5
knowledgeDialog.vue
src/views/system/index/components/knowledgeDialog.vue
+19
-6
mapChina.vue
...iews/system/index/components/mainPageEcharts/mapChina.vue
+1
-1
No files found.
src/App.vue
View file @
e45f4704
<
template
>
<div
id=
"app"
class=
"bg"
>
<router-view/>
<Star
/>
</div>
</
template
>
<
script
>
import
Star
from
'@/components/start/index'
import
util
from
'@/libs/util'
export
default
{
name
:
'app'
,
components
:
{
Star
},
watch
:
{
'$i18n.locale'
:
'i18nHandle'
},
...
...
src/api/con.business.js
View file @
e45f4704
...
...
@@ -59,7 +59,7 @@ export function getBillRate (params) {
})
}
// 用户端获取商机阶段分析饼状图
export
function
get
BigetOpportunitiesByNumberOrMoneyllRate
(
params
)
{
export
function
get
OpportunitiesByNumberOrMoney
(
params
)
{
return
request
({
url
:
'/tp/opportunities/getOpportunitiesByNumberOrMoney'
,
method
:
'get'
,
...
...
src/api/con.client.js
View file @
e45f4704
import
{
request
}
from
'./service'
// 用户端客户统计
export
function
getStatisticsCustomer
()
{
return
request
({
url
:
'/tp/customerInformation/getStatisticsCustomer'
,
method
:
'get'
})
}
// 用户端客户行业分布
export
function
getCustomerByCustomerAttribute
()
{
return
request
({
...
...
@@ -28,10 +36,11 @@ export function GetClientList () {
})
}
// 根据客户name查询
export
function
GetCustomerName
(
name
)
{
export
function
GetCustomerName
(
params
)
{
return
request
({
url
:
`/tp/customer/getByName?name=
${
name
}
`
,
method
:
'get'
url
:
'/tp/customerInformation/getList'
,
method
:
'post'
,
params
})
}
// 根据客户id查询
...
...
@@ -48,3 +57,26 @@ export function CustomerInfo () {
method
:
'get'
})
}
// 获取服务分析年份下拉框
export
function
getAnalysisYear
()
{
return
request
({
url
:
'/tp/customer/getAnalysisYear'
,
method
:
'get'
})
}
// 获取服务分析
export
function
getAnalysis
(
params
)
{
return
request
({
url
:
'/tp/customer/getAnalysis'
,
method
:
'get'
,
params
})
}
// 获取重要客户
export
function
getImportantCus
(
params
)
{
return
request
({
url
:
'/tp/customer/getImportantCus'
,
method
:
'get'
,
params
})
}
src/api/con.organ.js
View file @
e45f4704
...
...
@@ -16,3 +16,36 @@ export function recruitmentStatistics (params) {
params
})
}
// 用户端-员工信息-通过名字查询
export
function
getEmployeeInformanceByName
(
params
)
{
return
request
({
url
:
'/tp/Employee/getEmployeeInformanceByName'
,
method
:
'get'
,
params
})
}
// 用户端-员工信息
export
function
getEmployeeInformance
(
params
)
{
return
request
({
url
:
'/tp/Employee/getEmployeeInformance'
,
method
:
'get'
,
params
})
}
// 查询相应部门或中心下的入离职统计
export
function
getYearRms
(
params
)
{
return
request
({
url
:
'/tp/recruitment/getYearRms'
,
method
:
'get'
,
params
})
}
// 用户端-员工学历分布
// export function getEmpEdacutionData () {
// return request({
// url: '/tp/Employee/getEmpEdacutionData',
// method: 'get'
// })
// }
src/assets/style/client.scss
View file @
e45f4704
...
...
@@ -6,7 +6,7 @@
font-family
:
PingFang-SC-Medium
,
PingFang-SC
;
box-sizing
:
border-box
;
width
:
100%
;
padding
:
.24rem
;
padding
:
0
.24rem
;
margin
:
0
auto
;
>
.row-item
{
line-height
:
2
;
...
...
@@ -20,15 +20,21 @@
box-sizing
:
border-box
;
color
:
#fff
;
width
:
100%
;
height
:
1
.
3
rem
;
height
:
1
.
4
rem
;
overflow-y
:
auto
;
padding
:
.12rem
.24rem
;
border-radius
:
.05rem
;
border
:
1px
solid
rgba
(
48
,
221
,
244
,
1
);
background
:
#09154e
;
>
span
{
float
:
left
;
width
:
50%
;
.list-body
{
padding
:
.04rem
0
;
cursor
:
pointer
;
&
:nth-of-type
(
2n
)
{
background-color
:
#0d1e5b
;
}
&
:hover
{
background-color
:
rgba
(
48
,
221
,
244
,
1
);
}
}
}
.babel
{
...
...
@@ -55,10 +61,20 @@
cursor
:
pointer
;
}
.iconBlock
{
padding
:
.24rem
;
padding
:
1rem
.24rem
;
height
:calc
(
100
%
-
1
.6rem
)
;
margin
:
0
auto
;
}
.customer-list
{
font-size
:
.14rem
;
color
:
#fff
;
padding
:
.24rem
;
padding-top
:
0
;
height
:calc
(
100
%
-
1
.6rem
)
;
}
.customer-name
{
padding
:
.06rem
.12rem
;
}
i
{
display
:
inline-block
;
position
:
relative
;
...
...
src/assets/style/start.scss
0 → 100644
View file @
e45f4704
:root
{
--twinkle-duration
:
4s
;
}
.stars-wrapper
{
position
:
absolute
;
top
:
0
;
pointer-events
:
none
;
width
:
100vw
;
height
:
100vh
;
overflow
:
hidden
;
}
.stars
{
position
:
absolute
;
top
:
0
;
left
:
0
;
right
:
0
;
bottom
:
0
;
-webkit-animation
:
twinkle
var
(
--
twinkle-duration
)
ease-in-out
infinite
;
animation
:
twinkle
var
(
--
twinkle-duration
)
ease-in-out
infinite
;
}
.stars
:nth-child
(
2
)
{
-webkit-animation-delay
:
calc
(
var
(
--
twinkle-duration
)
*
-0
.33
);
animation-delay
:
calc
(
var
(
--
twinkle-duration
)
*
-0
.33
);
}
.stars
:nth-child
(
3
)
{
-webkit-animation-delay
:
calc
(
var
(
--
twinkle-duration
)
*
-0
.66
);
animation-delay
:
calc
(
var
(
--
twinkle-duration
)
*
-0
.66
);
}
@-webkit-keyframes
twinkle
{
25
%
{
opacity
:
0
;
}
}
@keyframes
twinkle
{
25
%
{
opacity
:
0
;
}
}
.star
{
fill
:
rgba
(
255
,
255
,
225
,.
6
);
}
.star
:nth-child
(
3n
)
{
opacity
:
0
.4
;
}
.star
:nth-child
(
7n
)
{
opacity
:
0
.3
;
}
.star
:nth-child
(
13n
)
{
opacity
:
0
.2
;
}
.star
:nth-child
(
19n
)
{
opacity
:
0
.1
;
}
.comet
{
-webkit-transform-origin
:
center
center
;
transform-origin
:
center
center
;
-webkit-animation
:
comet
10s
linear
infinite
;
animation
:
comet
10s
linear
infinite
;
}
@-webkit-keyframes
comet
{
0
%
,
40
%
{
-webkit-transform
:
translateX
(
0
);
transform
:
translateX
(
0
);
opacity
:
0
;
}
50
%
{
opacity
:
1
;
}
60
%
,
100
%
{
-webkit-transform
:
translateX
(
-100vmax
);
transform
:
translateX
(
-100vmax
);
opacity
:
0
;
}
}
@keyframes
comet
{
0
%
,
40
%
{
-webkit-transform
:
translateX
(
0
);
transform
:
translateX
(
0
);
opacity
:
0
;
}
50
%
{
opacity
:
1
;
}
60
%
,
100
%
{
-webkit-transform
:
translateX
(
-100vmax
);
transform
:
translateX
(
-100vmax
);
opacity
:
0
;
}
}
.comet-b
{
-webkit-animation-delay
:
-3
.3s
;
animation-delay
:
-3
.3s
;
}
.comet-c
{
-webkit-animation-delay
:
-5s
;
animation-delay
:
-5s
;
}
\ No newline at end of file
src/assets/style/unit/color.scss
View file @
e45f4704
...
...
@@ -20,4 +20,4 @@ $color-border-3: #EBEEF5;
$color-border-4
:
#F2F6FC
;
// 背景
$color-bg
:
#000E42
;
;
$color-bg
:
#000E42
;
src/components/echarts/barChart.vue
View file @
e45f4704
...
...
@@ -58,7 +58,7 @@ export default {
],
yAxis
:
{
type
:
'value'
,
name
:
'金额 :万元'
,
name
:
vm
.
message
.
yAxis
,
splitLine
:
{
show
:
true
,
lineStyle
:
{
...
...
src/components/echarts/funnel.vue
View file @
e45f4704
...
...
@@ -82,6 +82,14 @@ export default {
// 绘制图表
const
vm
=
this
vm
.
chart
.
setOption
(
vm
.
option
)
vm
.
eventList
()
},
eventList
()
{
const
vm
=
this
vm
.
chart
.
off
(
'click'
)
vm
.
chart
.
on
(
'click'
,
function
(
params
)
{
vm
.
$emit
(
'refreshPie'
,
params
.
name
)
})
}
},
watch
:
{
...
...
src/components/echarts/pieChart.vue
View file @
e45f4704
...
...
@@ -14,7 +14,7 @@ export default {
chart
:
null
}
},
props
:
[
'message'
,
'idstr'
,
'noDrill'
],
props
:
[
'message'
,
'idstr'
,
'noDrill'
,
'isLeft'
],
mounted
()
{
this
.
drawLine
()
},
...
...
@@ -49,7 +49,7 @@ export default {
{
type
:
'pie'
,
radius
:
[
'40%'
,
'70%'
],
center
:
[
'50%'
,
'50%'
],
center
:
vm
.
isLeft
?
[
'30%'
,
'50%'
]
:
[
'50%'
,
'50%'
],
label
:
{
show
:
false
},
...
...
src/components/echarts/treeChart.vue
View file @
e45f4704
...
...
@@ -141,27 +141,37 @@ export default {
data
:
[
data
],
top
:
'1%'
,
left
:
'7
%'
,
bottom
:
'1
%'
,
right
:
'2
0%'
,
left
:
'1%'
,
right
:
'1
%'
,
top
:
'8
%'
,
bottom
:
'3
0%'
,
symbolSize
:
14
,
orient
:
'vertical'
,
label
:
{
position
:
'left'
,
// rotate: -90,
verticalAlign
:
'middle'
,
align
:
'right'
,
fontSize
:
12
,
color
:
'#fff'
color
:
'#fff'
,
formatter
:
(
val
)
=>
{
console
.
log
(
val
)
return
val
.
name
.
split
(
''
).
join
(
'
\
n'
)
}
},
leaves
:
{
label
:
{
position
:
'right'
,
verticalAlign
:
'middle'
,
position
:
'bottom'
,
// rotate: -90,
verticalAlign
:
'top'
,
align
:
'left'
,
color
:
'#fff'
color
:
'#fff'
,
formatter
:
(
val
)
=>
{
return
val
.
name
.
split
(
''
).
join
(
'
\
n'
)
}
}
},
...
...
src/components/start/index.vue
0 → 100644
View file @
e45f4704
<
template
>
<div
class=
"stars-wrapper"
>
<svg
class=
"stars"
width=
"100%"
height=
"100%"
preserveAspectRatio=
"none"
>
<circle
class=
"star"
cx=
"37.3%"
cy=
"9.18%"
r=
"0.5"
></circle>
<circle
class=
"star"
cx=
"75.89%"
cy=
"22.4%"
r=
"1.5"
></circle>
<circle
class=
"star"
cx=
"88.67%"
cy=
"39.85%"
r=
"0.6"
></circle>
<circle
class=
"star"
cx=
"0.09%"
cy=
"100%"
r=
"1.3"
></circle>
<circle
class=
"star"
cx=
"80.4%"
cy=
"40.8%"
r=
"0.8"
></circle>
<circle
class=
"star"
cx=
"14.84%"
cy=
"85.07%"
r=
"1"
></circle>
<circle
class=
"star"
cx=
"45.8%"
cy=
"41.66%"
r=
"0.6"
></circle>
<circle
class=
"star"
cx=
"34.09%"
cy=
"47.77%"
r=
"1.5"
></circle>
<circle
class=
"star"
cx=
"38.71%"
cy=
"16.26%"
r=
"1.2"
></circle>
<circle
class=
"star"
cx=
"32.29%"
cy=
"77.33%"
r=
"1.3"
></circle>
<circle
class=
"star"
cx=
"64.98%"
cy=
"38.48%"
r=
"0.6"
></circle>
<circle
class=
"star"
cx=
"52.01%"
cy=
"54.4%"
r=
"1.2"
></circle>
<circle
class=
"star"
cx=
"85.95%"
cy=
"50.91%"
r=
"1.2"
></circle>
<circle
class=
"star"
cx=
"5.8%"
cy=
"53.26%"
r=
"1.3"
></circle>
<circle
class=
"star"
cx=
"22.81%"
cy=
"38.09%"
r=
"1.4"
></circle>
<circle
class=
"star"
cx=
"11.21%"
cy=
"6.08%"
r=
"0.5"
></circle>
<circle
class=
"star"
cx=
"60.81%"
cy=
"65.87%"
r=
"1"
></circle>
<circle
class=
"star"
cx=
"87.69%"
cy=
"69.93%"
r=
"0.7"
></circle>
<circle
class=
"star"
cx=
"13.58%"
cy=
"46.91%"
r=
"1.2"
></circle>
<circle
class=
"star"
cx=
"51.6%"
cy=
"32.09%"
r=
"0.7"
></circle>
<circle
class=
"star"
cx=
"47.54%"
cy=
"20.98%"
r=
"0.9"
></circle>
<circle
class=
"star"
cx=
"82.56%"
cy=
"92.52%"
r=
"1.1"
></circle>
<circle
class=
"star"
cx=
"63.14%"
cy=
"43.93%"
r=
"0.6"
></circle>
<circle
class=
"star"
cx=
"45.68%"
cy=
"14.5%"
r=
"1.1"
></circle>
<circle
class=
"star"
cx=
"10.86%"
cy=
"21.85%"
r=
"0.8"
></circle>
<circle
class=
"star"
cx=
"84.4%"
cy=
"3.4%"
r=
"1"
></circle>
<circle
class=
"star"
cx=
"75.88%"
cy=
"97.15%"
r=
"0.8"
></circle>
<circle
class=
"star"
cx=
"25.75%"
cy=
"8.19%"
r=
"1.1"
></circle>
<circle
class=
"star"
cx=
"19.18%"
cy=
"66.58%"
r=
"1.5"
></circle>
<circle
class=
"star"
cx=
"88.78%"
cy=
"61.2%"
r=
"0.7"
></circle>
<circle
class=
"star"
cx=
"32.47%"
cy=
"0.01%"
r=
"0.6"
></circle>
<circle
class=
"star"
cx=
"84.38%"
cy=
"41.2%"
r=
"0.9"
></circle>
<circle
class=
"star"
cx=
"66.33%"
cy=
"41.77%"
r=
"1"
></circle>
<circle
class=
"star"
cx=
"25.04%"
cy=
"87.88%"
r=
"1"
></circle>
<circle
class=
"star"
cx=
"71.12%"
cy=
"89.26%"
r=
"1"
></circle>
<circle
class=
"star"
cx=
"14.38%"
cy=
"66.74%"
r=
"1"
></circle>
<circle
class=
"star"
cx=
"38.42%"
cy=
"88.73%"
r=
"0.7"
></circle>
<circle
class=
"star"
cx=
"77.62%"
cy=
"46%"
r=
"0.7"
></circle>
<circle
class=
"star"
cx=
"72.33%"
cy=
"51.09%"
r=
"0.7"
></circle>
<circle
class=
"star"
cx=
"91.41%"
cy=
"34.87%"
r=
"0.5"
></circle>
<circle
class=
"star"
cx=
"78.46%"
cy=
"56.02%"
r=
"1.3"
></circle>
<circle
class=
"star"
cx=
"51.58%"
cy=
"91.83%"
r=
"1"
></circle>
<circle
class=
"star"
cx=
"16.06%"
cy=
"46.42%"
r=
"0.6"
></circle>
<circle
class=
"star"
cx=
"61.21%"
cy=
"12.52%"
r=
"1.2"
></circle>
<circle
class=
"star"
cx=
"4%"
cy=
"42.33%"
r=
"1.5"
></circle>
<circle
class=
"star"
cx=
"12.7%"
cy=
"71.96%"
r=
"1"
></circle>
<circle
class=
"star"
cx=
"46.69%"
cy=
"48.82%"
r=
"0.8"
></circle>
<circle
class=
"star"
cx=
"44.38%"
cy=
"18.71%"
r=
"1.3"
></circle>
<circle
class=
"star"
cx=
"17.78%"
cy=
"44.18%"
r=
"0.8"
></circle>
<circle
class=
"star"
cx=
"43.4%"
cy=
"56.16%"
r=
"0.7"
></circle>
</svg>
<svg
class=
"extras"
width=
"100%"
height=
"100%"
preserveAspectRatio=
"none"
>
<defs>
<radialGradient
id=
"comet-gradient"
cx=
"0"
cy=
".5"
r=
"0.5"
>
<stop
offset=
"0%"
stop-color=
"rgba(255,255,255,.8)"
></stop>
<stop
offset=
"100%"
stop-color=
"rgba(255,255,255,0)"
></stop>
</radialGradient>
</defs>
<g
transform=
"rotate(-135)"
>
<ellipse
class=
"comet comet-a"
fill=
"url(#comet-gradient)"
cx=
"0"
cy=
"0"
rx=
"150"
ry=
"2"
></ellipse>
</g>
<g
transform=
"rotate(20)"
>
<ellipse
class=
"comet comet-b"
fill=
"url(#comet-gradient)"
cx=
"100%"
cy=
"0"
rx=
"150"
ry=
"2"
></ellipse>
</g>
<g
transform=
"rotate(300)"
>
<ellipse
class=
"comet comet-c"
fill=
"url(#comet-gradient)"
cx=
"40%"
cy=
"100%"
rx=
"150"
ry=
"2"
></ellipse>
</g>
</svg>
</div>
</
template
>
<
script
>
export
default
{
}
</
script
>
<
style
lang=
"scss"
scoped
>
@import
'~@/assets/style/start.scss'
;
</
style
>
src/views/content/business/page.vue
View file @
e45f4704
...
...
@@ -11,7 +11,7 @@
<div
class=
"flex-1"
>
<div
class=
"box"
>
<div
class=
"boxTitle"
>
商机总数
<span>
(个)
</span></div>
<div
class=
"boxValue"
>
{{
totalObj
.
opportunitiesNumber
}}
</div>
<div
class=
"boxValue"
>
{{
totalObj
.
opportunitiesNumber
||
0
}}
</div>
</div>
<div
class=
"box"
>
<div
class=
"boxTitle"
>
整体预算
<span>
(百万)
</span></div>
...
...
@@ -33,7 +33,7 @@
<div
class=
"flex-1"
>
<div
class=
"box"
>
<div
class=
"boxTitle"
>
售前参与
<span>
(个)
</span></div>
<div
class=
"boxValue"
>
{{
totalObj
.
saler
}}
</div>
<div
class=
"boxValue"
>
{{
totalObj
.
saler
||
0
}}
</div>
</div>
<div
class=
"box"
>
<div
class=
"boxTitle"
>
预计成本
<span>
(百万)
</span></div>
...
...
@@ -65,7 +65,7 @@
<div
class=
"flex-1 d-flex"
>
<div
class=
"flex-1"
>
<div
class=
"title"
>
商机阶段分析
</div>
<funnel
:message=
"bussionStep"
:idstr=
"'bussionStep'"
class=
"heightCut44"
></funnel>
<funnel
:message=
"bussionStep"
@
refreshPie=
"refreshPie"
:idstr=
"'bussionStep'"
class=
"heightCut44"
></funnel>
</div>
<div
class=
"flex-1"
>
<div
class=
"title"
>
商机类型
</div>
...
...
@@ -111,6 +111,7 @@ export default {
data
()
{
return
{
chartActive
:
'number'
,
stepActive
:
''
,
totalObj
:
{},
// 商机统计
industry
:
''
,
// 行业分布
...
...
@@ -142,9 +143,9 @@ export default {
this
.
getProductType
()
this
.
getNewOpportunities
()
this
.
getBillRate
()
this
.
getBigetOpportunitiesByNumberOrMoneyllRate
()
this
.
getOpportunitiesByStep
()
this
.
getOpportunitiesByDept
(
''
,
false
)
this
.
getOpportunitiesByStep
()
this
.
getOpportunitiesByNumberOrMoney
()
},
filters
:
{
numFilter
(
value
)
{
...
...
@@ -181,6 +182,7 @@ export default {
async
getOpportunitiesDistribution
()
{
const
_data
=
await
API_BUSSINESS
.
getOpportunitiesDistribution
()
this
.
bussionDistribute
=
_data
.
data
this
.
bussionDistribute
.
yAxis
=
'单位 :个'
},
// 合同税率
async
getTaxRate
()
{
...
...
@@ -225,12 +227,17 @@ export default {
// q切换数量和金额
changeType
(
item
)
{
this
.
chartActive
=
item
this
.
get
BigetOpportunitiesByNumberOrMoneyllRate
()
this
.
get
OpportunitiesByNumberOrMoney
()
this
.
getOpportunitiesByDept
()
},
// 点击漏斗图 切换饼图数据
refreshPie
(
item
)
{
this
.
stepActive
=
item
this
.
getOpportunitiesByNumberOrMoney
()
},
// 商机阶段分析-中间饼图
async
get
BigetOpportunitiesByNumberOrMoneyllRate
()
{
const
_data
=
await
API_BUSSINESS
.
get
BigetOpportunitiesByNumberOrMoneyllRate
({
name
:
this
.
chartActive
})
async
get
OpportunitiesByNumberOrMoney
()
{
const
_data
=
await
API_BUSSINESS
.
get
OpportunitiesByNumberOrMoney
({
name
:
this
.
chartActive
,
step
:
this
.
stepActive
||
null
})
this
.
bussionType
=
{
legend
:
_data
.
data
.
legend
,
data
:
_data
.
data
.
data
.
map
(
item
=>
{
...
...
src/views/content/client/components/serviceAnalysis.vue
View file @
e45f4704
<
template
>
<div>
<div
class=
"d-flex search-box jc-end"
>
<el-select
v-model=
"selectYear"
size=
"mini"
>
<el-select
v-model=
"selectYear"
size=
"mini"
@
change=
"getAnalysis"
>
<el-option
v-for=
"item in yearList"
:key=
"item"
...
...
@@ -16,26 +16,30 @@
<
script
>
import
pieChart
from
'@/components/echarts/pieChart'
// 饼图
import
*
as
API_CLIENT
from
'@/api/con.client.js'
export
default
{
components
:
{
pieChart
},
data
()
{
return
{
selectYear
:
'2020'
,
yearList
:
[
'2021'
,
'2020'
,
'2019'
,
'2018'
,
'2017'
],
dataList
:
{
// 服务分析
legend
:
[
'软件解决方案'
,
'云产品及服务'
,
'系统集成及IT服务'
],
data
:
[
{
value
:
335
,
name
:
'软件解决方案'
},
{
value
:
310
,
name
:
'云产品及服务'
},
{
value
:
234
,
name
:
'系统集成及IT服务'
}
]
}
selectYear
:
''
,
yearList
:
[],
dataList
:
{}
// 服务分析
}
},
mounted
()
{
this
.
getAnalysisYear
()
},
methods
:
{
async
getAnalysisYear
()
{
const
_data
=
await
API_CLIENT
.
getAnalysisYear
()
this
.
yearList
=
_data
.
data
this
.
selectYear
=
_data
.
data
[
0
]
this
.
getAnalysis
()
},
async
getAnalysis
()
{
const
_data
=
await
API_CLIENT
.
getAnalysis
({
year
:
this
.
selectYear
})
this
.
dataList
=
_data
.
data
}
}
}
</
script
>
...
...
src/views/content/client/page.vue
View file @
e45f4704
...
...
@@ -11,33 +11,33 @@
<div
class=
"flex-1"
>
<div
class=
"box"
>
<div
class=
"boxTitle"
>
客户总数
<span>
(个)
</span></div>
<div
class=
"boxValue"
>
{{
totalObj
}}
</div>
<div
class=
"boxValue"
>
{{
totalObj
.
allCustomer
}}
</div>
</div>
<div
class=
"box"
>
<div
class=
"boxTitle"
>
商机客户
<span>
(个)
</span></div>
<div
class=
"boxValue"
>
{{
totalObj
}}
</div>
<div
class=
"boxValue"
>
{{
totalObj
.
opportunitiesCustomer
}}
</div>
</div>
</div>
<div
class=
"horizontal"
></div>
<div
class=
"flex-1"
>
<div
class=
"box"
>
<div
class=
"boxTitle"
>
集成商
<span>
(个)
</span></div>
<div
class=
"boxValue"
>
{{
totalObj
}}
</div>
<div
class=
"boxValue"
>
{{
totalObj
.
projectCustomer
}}
</div>
</div>
<div
class=
"box"
>
<div
class=
"boxTitle"
>
本年新增
<span>
(个)
</span></div>
<div
class=
"boxValue"
>
{{
totalObj
}}
</div>
<div
class=
"boxValue"
>
{{
totalObj
.
newCustomer
}}
</div>
</div>
</div>
<div
class=
"horizontal"
></div>
<div
class=
"flex-1"
>
<div
class=
"box"
>
<div
class=
"boxTitle"
>
优秀案例
<span>
(个)
</span></div>
<div
class=
"boxValue"
>
500
</div>
<div
class=
"boxValue"
>
{{
totalObj
.
excellentCustomer
}}
</div>
</div>
<div
class=
"box"
>
<div
class=
"boxTitle"
>
本年活跃
<span>
(个)
</span></div>
<div
class=
"boxValue"
>
29
</div>
<div
class=
"boxValue"
>
{{
totalObj
.
activeCustomer
}}
</div>
</div>
</div>
<div
class=
"horizontal horizontal1 "
></div>
...
...
@@ -75,99 +75,62 @@
<div
class=
"row-item d-flex jc-between"
>
<div
class=
"flex-1"
>
<span
class=
"babel"
>
客户名称
</span>
<span
class=
"babelMsg pr-24"
>
<template>
<span
v-if=
"customername.name == ''"
>
无
</span>
<span
v-else
>
{{
customername
.
name
}}
</span>
</
template
>
</span>
<span
class=
"babelMsg pr-24"
>
{{
companyInfo
.
customerName
||
'无'
}}
</span>
</div>
<div
class=
"flex-1"
>
<span
class=
"babel"
>
客户规模
</span>
<span
class=
"babelMsg"
>
3000人以上
</span>
<span
class=
"babelMsg"
>
{{
companyInfo
.
customerSize
}}
</span>
</div>
</div>
<div
class=
"row-item d-flex jc-between"
>
<div
class=
"flex-1"
><span
class=
"babel"
>
客户属性
</span><span
class=
"babelMsg pr-24"
>
IT服务
</span></div>
<div
class=
"flex-1"
><span
class=
"babel"
>
所在省份
</span><span
class=
"babelMsg"
>
河北省
</span></div>
<div
class=
"flex-1"
><span
class=
"babel"
>
客户属性
</span><span
class=
"babelMsg pr-24"
>
{{
companyInfo
.
customerAttribute
}}
</span></div>
<div
class=
"flex-1"
><span
class=
"babel"
>
所在省份
</span><span
class=
"babelMsg"
>
{{
companyInfo
.
province
}}
</span></div>
</div>
<div
class=
"row-item d-flex jc-between"
>
<div
class=
"flex-1"
>
<span
class=
"babel"
>
联系人
</span>
<span
class=
"babelMsg pr-24"
>
<
template
>
<span
v-if=
"customername.person == ''"
>
无
</span>
<span
v-else
>
{{
customername
.
person
}}
</span>
</
template
>
</span>
</div>
<div
class=
"flex-1"
>
<span
class=
"babel"
>
联系方式
</span>
<span
class=
"babelMsg"
>
<
template
>
<span
v-if=
"customername.phone == ''"
>
无
</span>
<span
v-else
>
{{
customername
.
phone
}}
</span>
</
template
>
</span>
<div
class=
"flex-1"
><span
class=
"babel"
>
联系人
</span><span
class=
"babelMsg pr-24"
>
{{
companyInfo
.
applicantName
||
'无'
}}
</span></div>
<div
class=
"flex-1"
><span
class=
"babel"
>
协同销售
</span><span
class=
"babelMsg"
>
{{
companyInfo
.
salesName
}}
</span></div>
</div>
<div
class=
"row-item d-flex jc-between"
>
<div
class=
"flex-1"
><span
class=
"babel"
>
主责任人
</span><span
class=
"babelMsg pr-24"
>
{{
companyInfo
.
chargePersonName
||
'无'
}}
</span></div>
<div
class=
"flex-1"
><span
class=
"babel"
>
项目数
</span><span
class=
"babelMsg"
>
{{
companyInfo
.
projectNum
}}
</span></div>
</div>
<div
class=
"row-item d-flex jc-between"
>
<div
class=
"flex-1"
><span
class=
"babel"
>
主责任人
</span><span
class=
"babelMsg pr-24"
>
李裙裙
</span></div>
<div
class=
"flex-1"
><span
class=
"babel"
>
协同销售
</span><span
class=
"babelMsg"
>
张苗苗
</span></div>
<div
class=
"flex-1"
><span
class=
"babel"
>
商机数
</span><span
class=
"babelMsg"
>
{{
companyInfo
.
nicheNum
}}
</span></div>
</div>
<div
class=
"row-item d-flex jc-between"
>
<div
class=
"flex-1"
><span
class=
"babel"
>
商机数
</span><span
class=
"babelMsg pr-24"
>
{{customername.nicheNum}}
</span></div>
<div
class=
"flex-1"
><span
class=
"babel"
>
项目数
</span><span
class=
"babelMsg"
>
{{customername.projectNum}}
</span></div>
<div
class=
"flex-1"
>
<span
class=
"babel"
>
联系方式
</span>
<span
class=
"babelMsg"
>
{{
companyInfo
.
postalAddress
||
'无'
}}
</span>
</div>
</div>
<div
class=
"row-item d-flex jc-between"
>
<div
class=
"flex-1"
>
<span
class=
"babel"
>
备注说明
</span>
<span
class=
"babelMsg"
>
{{c
ustomername
.remark || '无'}}
</span>
<span
class=
"babelMsg"
>
{{
c
ompanyInfo
.
remark
||
'无'
}}
</span>
</div>
</div>
<div
class=
"row-product"
>
<div
class=
"c-title"
>
项目
</div>
<div
class=
"row-product mt-2"
>
<div
class=
"c-list"
>
<span>
XXXXXX项目
</span>
<span>
XXXXXX项目
</span>
<span>
XXXXXX项目
</span>
<span>
XXXXXX项目
</span>
<span>
XXXXXX项目
</span>
<span>
XXXXXX项目
</span>
<span>
XXXXXX项目
</span>
<span>
XXXXXX项目
</span>
<span>
XXXXXX项目
</span>
<span>
XXXXXX项目
</span>
<span>
XXXXXX项目
</span>
<span>
XXXXXX项目
</span>
<span>
XXXXXX项目
</span>
<span>
XXXXXX项目
</span>
<span>
XXXXXX项目
</span>
<span>
XXXXXX项目
</span>
<span>
XXXXXX项目
</span>
<span>
XXXXXX项目
</span>
<span>
XXXXXX项目
</span>
<span>
XXXXXX项目
</span>
</div>
</div>
<div
class=
"row-business"
>
<div
class=
"c-title"
>
商机
</div>
<div
class=
"c-title d-flex"
>
<span
class=
"flex-1"
>
序号
</span>
<span
class=
"flex-4"
>
项目名称
</span>
</div>
<div
class=
"list-body d-flex"
v-for=
"(item,index) in companyInfo.projects"
:key=
"index"
>
<span
class=
"flex-1"
>
{{
index
+
1
}}
</span>
<span
class=
"flex-4"
>
{{
item
}}
</span>
</div>
</div>
</div>
<div
class=
"row-business mt-2"
>
<div
class=
"c-list"
>
<span>
XXXXXX商机
</span>
<span>
XXXXXX商机
</span>
<span>
XXXXXX商机
</span>
<span>
XXXXXX商机
</span>
<span>
XXXXXX商机
</span>
<span>
XXXXXX商机
</span>
<span>
XXXXXX商机
</span>
<span>
XXXXXX商机
</span>
<span>
XXXXXX商机
</span>
<span>
XXXXXX商机
</span>
<span>
XXXXXX商机
</span>
<span>
XXXXXX商机
</span>
<span>
XXXXXX商机
</span>
<span>
XXXXXX商机
</span>
<span>
XXXXXX商机
</span>
<div
class=
"c-title d-flex"
>
<span
class=
"flex-1"
>
序号
</span>
<span
class=
"flex-4"
>
商机名称
</span>
</div>
<div
class=
"list-body d-flex"
v-for=
"(item,index) in companyInfo.niches"
:key=
"index"
>
<span
class=
"flex-1"
>
{{
index
+
1
}}
</span>
<span
class=
"flex-4"
>
{{
item
}}
</span>
</div>
</div>
</div>
</div>
...
...
@@ -185,31 +148,21 @@
<div
class=
"boxHeight-3 mt-2"
>
<div
class=
"title"
>
重要客户
</div>
<div
class=
"d-flex search-box jc-end"
>
<el-select
v-model=
"selectYear"
size=
"mini"
>
<el-select
v-model=
"selectYear"
size=
"mini"
@
change=
"getImportantCus"
>
<el-option
v-for=
"item in yearList"
:key=
"item"
:label=
"item"
:value=
"item"
>
:key=
"item
.id
"
:label=
"item
.name
"
:value=
"item
.id
"
>
</el-option>
</el-select>
<span
class=
"moreTxt"
>
更多
</span>
</div>
<div
class=
"iconBlock"
>
<i
class=
"icon20 icon-datangjituan"
></i>
<i
class=
"icon20 icon-zhongguoshiyou"
></i>
<i
class=
"icon20 icon-changjiangdianli"
></i>
<i
class=
"icon20 icon-datangjituan"
></i>
<i
class=
"icon20 icon-zhongguoshiyou"
></i>
<i
class=
"icon20 icon-changjiangdianli"
></i>
<i
class=
"icon5 icon-guojiadianwang"
></i>
<div
class=
"customer-list"
>
<div
class=
"customer-name"
v-for=
"(item,index) in customerList"
:key=
"index"
>
{{
item
}}
</div>
</div>
</div>
<div
class=
"boxHeight-3 mt-2"
>
<div
class=
"title"
>
合作伙伴
</div>
<div
class=
"d-flex search-box jc-end"
>
<span
class=
"moreTxt"
>
更多
</span>
</div>
<div
class=
"iconBlock"
>
<i
class=
"icon20 icon-datangjituan"
></i>
<i
class=
"icon20 icon-zhongguoshiyou"
></i>
...
...
@@ -239,18 +192,29 @@ export default {
customDistribute
:
{},
// 地区分布
clientAnalysis
:
{},
// 客户分析
state
:
''
,
customername
:
{},
selectYear
:
'综合'
,
// 选中重要客户项
yearList
:
[
'综合'
,
'按资金'
,
'按项目'
]
// 重要客户下拉框
companyInfo
:
{},
selectYear
:
'1'
,
// 选中重要客户项
yearList
:
[
{
id
:
'1'
,
name
:
'综合'
},
{
id
:
'2'
,
name
:
'按资金'
},
{
id
:
'3'
,
name
:
'按项目'
}
],
// 重要客户下拉框
customerList
:
[]
// 重要客户
}
},
mounted
()
{
this
.
GetCustomerInfo
()
this
.
getCustomerByProvince
()
this
.
getDistribution
()
this
.
getCustomerByAmount
()
this
.
getImportantCus
()
this
.
getStatisticsCustomer
()
},
methods
:
{
// 客户统计
async
getStatisticsCustomer
()
{
const
_data
=
await
API_CLIENT
.
getStatisticsCustomer
()
this
.
totalObj
=
_data
.
data
},
// 行业分布
async
getDistribution
()
{
const
_data
=
await
API_CLIENT
.
getCustomerByCustomerAttribute
()
...
...
@@ -269,24 +233,25 @@ export default {
async
getCustomerByProvince
()
{
const
_data
=
await
API_CLIENT
.
getCustomerByProvince
()
this
.
customDistribute
=
_data
.
data
this
.
customDistribute
.
yAxis
=
'单位 :个'
},
// 合同分布
async
getCustomerByAmount
()
{
const
_data
=
await
API_CLIENT
.
getCustomerByAmount
()
this
.
clientAnalysis
=
_data
.
data
},
//
默认展示公司信息
GetCustomerInfo
()
{
API_CLIENT
.
CustomerInfo
().
then
(
res
=>
{
this
.
customername
=
res
.
data
}
)
//
中要客户
async
getImportantCus
()
{
const
_data
=
await
API_CLIENT
.
getImportantCus
({
type
:
this
.
selectYear
})
this
.
customerList
=
_data
.
data
.
map
(
item
=>
item
.
customerName
)
this
.
handleSelect
(
_data
.
data
[
0
]
)
},
// 输入公司名称触发
querySearch
(
queryString
,
cb
)
{
API_CLIENT
.
GetCustomerName
(
queryString
).
then
(
res
=>
{
API_CLIENT
.
GetCustomerName
(
{
customerName
:
queryString
}
).
then
(
res
=>
{
const
customerData
=
res
.
data
for
(
var
i
=
0
;
i
<
customerData
.
length
;
i
++
)
{
customerData
[
i
].
value
=
customerData
[
i
].
n
ame
customerData
[
i
].
value
=
customerData
[
i
].
customerN
ame
}
cb
(
customerData
)
})
...
...
@@ -294,7 +259,7 @@ export default {
// 点击下拉列表出发
handleSelect
(
item
)
{
API_CLIENT
.
GetCustomerId
(
item
.
id
).
then
(
res
=>
{
this
.
c
ustomername
=
res
.
data
this
.
c
ompanyInfo
=
res
.
data
})
}
}
...
...
src/views/content/operation/components/cashFlow.vue
View file @
e45f4704
...
...
@@ -9,7 +9,7 @@
:value=
"item.id"
>
</el-option>
</el-select>
<el-select
v-model=
"selectYear"
size=
"mini"
style=
"width:1.4rem;"
@
change=
"getCashFlow"
>
<el-select
v-model=
"selectYear"
size=
"mini"
@
change=
"getCashFlow"
>
<el-option
v-for=
"item in yearList"
:key=
"item"
...
...
@@ -57,7 +57,7 @@ export default {
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
)
this
.
dataList
.
data
.
netInflow
=
_data
.
data
.
data
.
netInflow
.
map
(
item
=>
item
.
value
)
}
}
}
...
...
src/views/content/operation/components/revenueStatistics.vue
View file @
e45f4704
...
...
@@ -55,7 +55,8 @@ export default {
isLeaf
:
isLeaf
,
xAxis
:
_data
.
data
.
xAxis
,
idxs
:
_data
.
data
.
idxs
,
data
:
_data
.
data
.
data
data
:
_data
.
data
.
data
,
yAxis
:
'单位:万元'
}
},
downData
(
item
)
{
...
...
src/views/content/operation/components/totalExpenses.vue
View file @
e45f4704
...
...
@@ -45,7 +45,8 @@ export default {
isLeaf
:
isLeaf
,
xAxis
:
_data
.
data
.
xAxis
,
idxs
:
_data
.
data
.
idxs
,
data
:
_data
.
data
.
data
data
:
_data
.
data
.
data
,
yAxis
:
'单位:万元'
}
},
downData
(
item
)
{
...
...
src/views/content/operation/page.vue
View file @
e45f4704
...
...
@@ -18,7 +18,7 @@
</div>
<div
class=
"centerBlock"
>
<div
class=
"centerBoxHeight-3"
>
<div
class=
"title"
>
回款
额
</div>
<div
class=
"title"
>
回款
统计
</div>
<receiptStatistics
class=
"heightCut44"
/>
</div>
<div
class=
"centerBoxHeight-3 mt-2"
>
...
...
src/views/content/organization/components/orgDetail.vue
View file @
e45f4704
...
...
@@ -56,9 +56,10 @@ export default {
}
}
.org-content
{
text-align
:
center
;
color
:
#fff
;
font-size
:
.14rem
;
width
:
10
.8rem
;
width
:
10
0%
;
height
:
7
.89rem
;
margin
:
0
auto
;
}
...
...
src/views/content/organization/components/staffInfo.vue
View file @
e45f4704
<
template
>
<div
class=
"staff-box"
>
<div
class=
"d-flex search-box jc-center"
>
<div
class=
"search"
>
<el-autocomplete
class=
"inline-input"
v-model=
"input"
size=
"mini"
clearable
:fetch-suggestions=
"querySearch"
placeholder=
"请输入员工名称"
:trigger-on-focus=
"false"
@
select=
"handleSelect"
></el-autocomplete>
<el-button
class=
"searchBtn"
type=
"text"
>
搜索
</el-button>
</div>
</div>
<div
class=
"tab-box"
>
<span
class=
"tab-btn"
...
...
@@ -14,11 +29,11 @@
<el-col
span=
"12"
>
<div
class=
"item-box d-flex jc-between"
>
<span
class=
"label"
>
姓名
</span>
<span
class=
"text"
>
赵忠祥
</span>
<span
class=
"text"
>
{{
employeeInfo
.
name
}}
</span>
</div>
<div
class=
"item-box d-flex jc-between"
>
<span
class=
"label"
>
职位
</span>
<span
class=
"text"
>
主持人
</span>
<span
class=
"text"
>
{{
employeeInfo
.
position
}}
</span>
</div>
</el-col>
...
...
@@ -36,11 +51,11 @@
<el-col
span=
"24"
>
<div
class=
"item-box d-flex jc-between"
>
<span
class=
"label"
>
电话
</span>
<span
class=
"text"
>
13242321122
</span>
<span
class=
"text"
>
{{
employeeInfo
.
phone
}}
</span>
</div>
<div
class=
"item-box d-flex jc-between"
>
<span
class=
"label"
>
邮箱
</span>
<span
class=
"text"
>
zhaozongxiang@163.cn
</span>
<span
class=
"text"
>
{{
employeeInfo
.
email
}}
</span>
</div>
</el-col>
</el-row>
...
...
@@ -50,10 +65,12 @@
</
template
>
<
script
>
import
*
as
API_ORGAN
from
'@/api/con.organ'
export
default
{
name
:
'staff'
,
data
()
{
return
{
input
:
''
,
isActive
:
0
,
tabList
:
[
{
name
:
'基本信息'
,
id
:
1
},
...
...
@@ -63,7 +80,31 @@ export default {
{
name
:
'项目经验'
,
id
:
5
},
{
name
:
'绩效呈现'
,
id
:
6
},
{
name
:
'素质评价'
,
id
:
7
}
]
],
employeeInfo
:
{}
}
},
mounted
()
{
const
userId
=
sessionStorage
.
getItem
(
'user'
)
?
JSON
.
parse
(
sessionStorage
.
getItem
(
'user'
)).
id
:
''
this
.
handleSelect
(
userId
)
},
methods
:
{
// 根据name查id
querySearch
(
queryString
,
cb
)
{
console
.
log
(
queryString
)
API_ORGAN
.
getEmployeeInformanceByName
({
name
:
queryString
}).
then
(
res
=>
{
const
_data
=
res
.
data
for
(
var
i
=
0
;
i
<
_data
.
length
;
i
++
)
{
_data
[
i
].
value
=
_data
[
i
].
name
}
cb
(
_data
)
})
},
// 点击下拉列表搜索
handleSelect
(
item
)
{
API_ORGAN
.
getEmployeeInformance
({
empId
:
item
||
null
}).
then
(
res
=>
{
this
.
employeeInfo
=
res
.
data
})
}
}
}
...
...
src/views/content/organization/page.vue
View file @
e45f4704
...
...
@@ -60,30 +60,7 @@
</div>
<div
class=
"centerBlock"
>
<div
class=
"content"
>
<div
class=
"d-flex search-box"
>
<el-select
v-model=
"value"
size=
"mini"
>
<el-option
v-for=
"item in options"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
</el-option>
</el-select>
<div
class=
"search"
>
<el-autocomplete
class=
"inline-input"
v-model=
"input"
size=
"mini"
clearable
:fetch-suggestions=
"querySearch"
placeholder=
"请输入公司名称"
:trigger-on-focus=
"false"
@
select=
"handleSelect"
></el-autocomplete>
<el-button
class=
"searchBtn"
type=
"text"
>
搜索
</el-button>
</div>
</div>
<staffInfo
:searchId=
"input"
/>
<staffInfo/>
</div>
<div
class=
"centerBoxHeight-3 mt-2"
>
<div
class=
"title"
>
入/离职统计
</div>
...
...
@@ -123,15 +100,6 @@ export default {
components
:
{
headerLayout
,
pieChart
,
barChart
,
waterBall
,
lineChart
,
peopleCounting
,
staffInfo
},
data
()
{
return
{
options
:
[
{
value
:
1
,
label
:
'员工名称'
},
{
value
:
2
,
label
:
'证书名称'
}
],
dataList
:
{
parentId
:
''
,
idxs
:
[
1
,
2
,
3
,
4
,
5
],
...
...
@@ -143,10 +111,9 @@ export default {
{
id
:
4
,
value
:
162.2
,
parent
:
''
,
isLeaf
:
false
},
{
id
:
5
,
value
:
32.6
,
parent
:
''
,
isLeaf
:
false
}
]
},
performActive
:
1
,
distributeActive
:
1
,
input
:
''
,
},
// 上月绩效
performActive
:
1
,
// 上月绩效
distributeActive
:
1
,
// 人员分布
jobDistribution
:
{
legend
:
[
'技术岗'
,
'销售岗'
,
'管理岗'
,
'职能岗'
,
'其他岗'
],
data
:
[
...
...
@@ -156,35 +123,14 @@ export default {
{
value
:
135
,
name
:
'职能岗'
},
{
value
:
548
,
name
:
'其他岗'
}
]
},
refundAmountLine
:
{
legend
:
[
'简历数'
,
'面试数'
,
'发放offer'
,
'入职'
],
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
:
'发放offer'
,
data
:
[
520
,
232
,
401
,
334
,
790
,
830
,
320
],
type
:
'line'
},
{
name
:
'入职'
,
data
:
[
620
,
732
,
101
,
234
,
690
,
530
,
520
],
type
:
'line'
}]
},
recruitment
:
{}
},
// 人员分布
refundAmountLine
:
{},
// 入离职统计
recruitment
:
{}
// 人才招聘
}
},
mounted
()
{
this
.
recruitmentStatistics
()
this
.
getYearRms
()
},
methods
:
{
// 获取人才招聘信息
...
...
@@ -204,13 +150,22 @@ export default {
name
:
'离职率'
}
},
querySearch
(
queryString
,
cb
)
{
// cb()
},
handleSelect
(
item
)
{
// 获取入离职统计
async
getYearRms
()
{
const
_data
=
await
API_ORGAN
.
getYearRms
()
this
.
refundAmountLine
=
{
legend
:
_data
.
data
.
legend
,
xAxis
:
_data
.
data
.
xAxis
,
data
:
_data
.
data
.
data
.
map
(
item
=>
{
return
{
name
:
item
.
name
,
data
:
item
.
data
,
type
:
'line'
}
})
}
},
// 上月绩效下钻
downData
(
item
)
{
// console.log('传来的值:', item)
setTimeout
(()
=>
{
...
...
@@ -259,6 +214,7 @@ export default {
}
},
0
)
},
// 跳转组织机构详情
orgDetail
()
{
this
.
$router
.
push
(
'/orgDetail'
)
}
...
...
src/views/system/index/components/itemNationwide.vue
View file @
e45f4704
...
...
@@ -3,7 +3,7 @@
<div
class=
"title"
>
全国
</div>
<div
class=
"content d-flex"
>
<div
class=
"flex-1"
>
<pieChart
:message=
"itemNationWide"
:noDrill=
"true"
idstr=
"itemNationWide"
class=
"heightCut44
"
></pieChart>
<pieChart
:message=
"itemNationWide"
:noDrill=
"true"
:isLeft=
"type=='4'"
idstr=
"itemNationWide"
class=
"h-100
"
></pieChart>
<p
v-if=
"type=='4'"
>
共计客户
<strong>
{{
message
.
allCustomerNumber
}}
个
</strong></p>
<p
v-if=
"type=='3'"
>
共计商机
<strong>
{{
message
.
allOpportunitiesNumber
}}
个
</strong></p>
<p
v-if=
"type=='1'"
>
共计项目
<strong>
{{
message
.
allProjectNumber
}}
个
</strong></p>
...
...
@@ -13,7 +13,7 @@
<div
class=
"d-flex flex-column"
>
<div
class=
"text-box"
>
<label>
本年度签署合同
</label>
<span>
{{
message
.
contactMoney
|
moneyFormat
(
8
)
|
numFormat
}}
亿
</span>
<span>
{{
message
.
contactMoney
|
moneyFormat
(
4
)
|
numFormat
}}
万元
</span>
</div>
<div
class=
"text-box"
>
<label>
相关产品
</label>
...
...
@@ -29,11 +29,11 @@
<div
class=
"d-flex flex-column"
>
<div
class=
"text-box"
>
<label>
预计总收入
</label>
<span>
{{
message
.
allRevenueMoney
|
moneyFormat
(
8
)
|
numFormat
}}
亿
</span>
<span>
{{
message
.
allRevenueMoney
|
moneyFormat
(
4
)
|
numFormat
}}
万元
</span>
</div>
<div
class=
"text-box"
>
<label>
预计总成本
</label>
<span>
{{
message
.
allCostMoney
|
moneyFormat
(
8
)
|
numFormat
}}
亿
</span>
<span>
{{
message
.
allCostMoney
|
moneyFormat
(
4
)
|
numFormat
}}
万元
</span>
</div>
<div
class=
"text-box"
>
<label>
参与售前
</label>
...
...
@@ -110,18 +110,23 @@ export default {
font-size
:
.16rem
;
color
:
#fff
;
text-align
:
center
;
margin-top
:
-.05rem
;
}
.sum-box
{
border-left
:
1px
solid
#30DDF4
;
padding-top
:
.24rem
;
}
.text-box
{
text-align
:
center
;
padding
:
0
.3rem
;
flex
:
1
;
font-family
:
PingFang-SC-Medium
;
font-size
:
.16rem
;
line-height
:
2
;
color
:
#FFFFFF
;
label
{
width
:
1
.4rem
;
display
:
inline-block
;
}
span
{
padding-left
:
.24rem
;
font-family
:
ZhenyanGB-Regular
;
...
...
src/views/system/index/components/knowledgeDialog.vue
View file @
e45f4704
...
...
@@ -36,8 +36,15 @@
</div>
</div>
<h3>
关系筛选
</h3>
<div
style=
"padding-left:30px;color:#fff;"
>
群智合
<span
class=
"pointer"
style=
"background-color:#f40;"
></span>
</div>
<el-checkbox-group
v-model=
"checked"
>
<el-checkbox
:disabled=
"value==item.value"
v-for=
"item in checkList"
:key=
"item.value"
:label=
"item.value"
>
{{
item
.
name
}}
</el-checkbox>
<el-checkbox
:disabled=
"value==item.value"
v-for=
"item in checkList"
:key=
"item.value"
:label=
"item.value"
>
{{
item
.
name
}}
<span
class=
"pointer"
:style=
"
{'background-color':item.color}">
</span>
</el-checkbox>
</el-checkbox-group>
<div
class=
"inquire"
@
click=
"handleChange"
>
查询
</div>
</div>
...
...
@@ -90,11 +97,11 @@ export default {
knowledData
:
[],
checked
:
[
1
,
2
,
3
,
4
,
5
],
checkList
:
[
{
name
:
'项目'
,
value
:
1
},
{
name
:
'销售'
,
value
:
2
},
{
name
:
'商机'
,
value
:
3
},
{
name
:
'客户'
,
value
:
4
},
{
name
:
'成员'
,
value
:
5
}
{
name
:
'项目'
,
value
:
1
,
color
:
'#8419c7'
},
{
name
:
'销售'
,
value
:
2
,
color
:
'#b9c719'
},
{
name
:
'商机'
,
value
:
3
,
color
:
'#199fc7'
},
{
name
:
'客户'
,
value
:
4
,
color
:
'#4f19c7'
},
{
name
:
'成员'
,
value
:
5
,
color
:
'#69c719'
}
],
value
:
''
,
topoData
:
{}
// 接收到的topo数据
...
...
@@ -198,6 +205,12 @@ export default {
padding-top
:
.5rem
;
position
:
relative
;
margin-top
:
.1rem
;
.pointer
{
display
:
inline-block
;
width
:
.08rem
;
height
:
.08rem
;
border-radius
:
50%
;
}
h3
{
width
:
calc
(
100%
-
.2rem
);
font-size
:
.16rem
;
...
...
src/views/system/index/components/mainPageEcharts/mapChina.vue
View file @
e45f4704
...
...
@@ -402,7 +402,7 @@ export default {
if
(
geoCoord
)
{
res
.
push
({
name
:
this
.
message
[
i
].
province
,
value
:
geoCoord
.
concat
(
this
.
message
[
i
][
type
])
value
:
geoCoord
.
concat
(
this
.
message
[
i
][
type
]
||
0
)
})
}
}
...
...
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