Commit e45f4704 authored by 乐宝呗666's avatar 乐宝呗666

联调客户接口修改bug

parent d8b02a88
<template> <template>
<div id="app" class="bg"> <div id="app" class="bg">
<router-view/> <router-view/>
<Star />
</div> </div>
</template> </template>
<script> <script>
import Star from '@/components/start/index'
import util from '@/libs/util' import util from '@/libs/util'
export default { export default {
name: 'app', name: 'app',
components: { Star },
watch: { watch: {
'$i18n.locale': 'i18nHandle' '$i18n.locale': 'i18nHandle'
}, },
......
...@@ -59,7 +59,7 @@ export function getBillRate (params) { ...@@ -59,7 +59,7 @@ export function getBillRate (params) {
}) })
} }
// 用户端获取商机阶段分析饼状图 // 用户端获取商机阶段分析饼状图
export function getBigetOpportunitiesByNumberOrMoneyllRate (params) { export function getOpportunitiesByNumberOrMoney (params) {
return request({ return request({
url: '/tp/opportunities/getOpportunitiesByNumberOrMoney', url: '/tp/opportunities/getOpportunitiesByNumberOrMoney',
method: 'get', method: 'get',
......
import { request } from './service' import { request } from './service'
// 用户端客户统计
export function getStatisticsCustomer () {
return request({
url: '/tp/customerInformation/getStatisticsCustomer',
method: 'get'
})
}
// 用户端客户行业分布 // 用户端客户行业分布
export function getCustomerByCustomerAttribute () { export function getCustomerByCustomerAttribute () {
return request({ return request({
...@@ -28,10 +36,11 @@ export function GetClientList () { ...@@ -28,10 +36,11 @@ export function GetClientList () {
}) })
} }
// 根据客户name查询 // 根据客户name查询
export function GetCustomerName (name) { export function GetCustomerName (params) {
return request({ return request({
url: `/tp/customer/getByName?name=${name}`, url: '/tp/customerInformation/getList',
method: 'get' method: 'post',
params
}) })
} }
// 根据客户id查询 // 根据客户id查询
...@@ -48,3 +57,26 @@ export function CustomerInfo () { ...@@ -48,3 +57,26 @@ export function CustomerInfo () {
method: 'get' 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
})
}
...@@ -16,3 +16,36 @@ export function recruitmentStatistics (params) { ...@@ -16,3 +16,36 @@ export function recruitmentStatistics (params) {
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'
// })
// }
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
font-family:PingFang-SC-Medium,PingFang-SC; font-family:PingFang-SC-Medium,PingFang-SC;
box-sizing: border-box; box-sizing: border-box;
width: 100%; width: 100%;
padding: .24rem; padding: 0 .24rem;
margin: 0 auto; margin: 0 auto;
>.row-item { >.row-item {
line-height: 2; line-height: 2;
...@@ -20,15 +20,21 @@ ...@@ -20,15 +20,21 @@
box-sizing: border-box; box-sizing: border-box;
color: #fff; color: #fff;
width: 100%; width: 100%;
height: 1.3rem; height: 1.4rem;
overflow-y: auto; overflow-y: auto;
padding: .12rem .24rem; padding: .12rem .24rem;
border-radius: .05rem; border-radius: .05rem;
border: 1px solid rgba(48,221,244,1); border: 1px solid rgba(48,221,244,1);
background: #09154e; background: #09154e;
>span{ .list-body{
float: left; padding: .04rem 0;
width: 50%; cursor: pointer;
&:nth-of-type(2n){
background-color: #0d1e5b;
}
&:hover {
background-color: rgba(48,221,244,1);
}
} }
} }
.babel{ .babel{
...@@ -55,10 +61,20 @@ ...@@ -55,10 +61,20 @@
cursor: pointer; cursor: pointer;
} }
.iconBlock{ .iconBlock{
padding: .24rem; padding: 1rem .24rem;
height:calc(100% - 1.6rem); height:calc(100% - 1.6rem);
margin: 0 auto; 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{ i{
display: inline-block; display: inline-block;
position: relative; position: relative;
......
: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
...@@ -20,4 +20,4 @@ $color-border-3: #EBEEF5; ...@@ -20,4 +20,4 @@ $color-border-3: #EBEEF5;
$color-border-4: #F2F6FC; $color-border-4: #F2F6FC;
// 背景 // 背景
$color-bg: #000E42;; $color-bg: #000E42;
...@@ -58,7 +58,7 @@ export default { ...@@ -58,7 +58,7 @@ export default {
], ],
yAxis: { yAxis: {
type: 'value', type: 'value',
name: '金额 :万元', name: vm.message.yAxis,
splitLine: { splitLine: {
show: true, show: true,
lineStyle: { lineStyle: {
......
...@@ -82,6 +82,14 @@ export default { ...@@ -82,6 +82,14 @@ export default {
// 绘制图表 // 绘制图表
const vm = this const vm = this
vm.chart.setOption(vm.option) 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: { watch: {
......
...@@ -14,7 +14,7 @@ export default { ...@@ -14,7 +14,7 @@ export default {
chart: null chart: null
} }
}, },
props: ['message', 'idstr', 'noDrill'], props: ['message', 'idstr', 'noDrill', 'isLeft'],
mounted () { mounted () {
this.drawLine() this.drawLine()
}, },
...@@ -49,7 +49,7 @@ export default { ...@@ -49,7 +49,7 @@ export default {
{ {
type: 'pie', type: 'pie',
radius: ['40%', '70%'], radius: ['40%', '70%'],
center: ['50%', '50%'], center: vm.isLeft ? ['30%', '50%'] : ['50%', '50%'],
label: { label: {
show: false show: false
}, },
......
...@@ -141,27 +141,37 @@ export default { ...@@ -141,27 +141,37 @@ export default {
data: [data], data: [data],
top: '1%', left: '1%',
left: '7%', right: '1%',
bottom: '1%', top: '8%',
right: '20%', bottom: '30%',
symbolSize: 14, symbolSize: 14,
orient: 'vertical',
label: { label: {
position: 'left', position: 'left',
// rotate: -90,
verticalAlign: 'middle', verticalAlign: 'middle',
align: 'right', align: 'right',
fontSize: 12, fontSize: 12,
color: '#fff' color: '#fff',
formatter: (val) => {
console.log(val)
return val.name.split('').join('\n')
}
}, },
leaves: { leaves: {
label: { label: {
position: 'right', position: 'bottom',
verticalAlign: 'middle', // rotate: -90,
verticalAlign: 'top',
align: 'left', align: 'left',
color: '#fff' color: '#fff',
formatter: (val) => {
return val.name.split('').join('\n')
}
} }
}, },
......
<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>
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<div class="flex-1"> <div class="flex-1">
<div class="box"> <div class="box">
<div class="boxTitle">商机总数<span>(个)</span></div> <div class="boxTitle">商机总数<span>(个)</span></div>
<div class="boxValue">{{totalObj.opportunitiesNumber}}</div> <div class="boxValue">{{totalObj.opportunitiesNumber|| 0}}</div>
</div> </div>
<div class="box"> <div class="box">
<div class="boxTitle">整体预算<span>(百万)</span></div> <div class="boxTitle">整体预算<span>(百万)</span></div>
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
<div class="flex-1"> <div class="flex-1">
<div class="box"> <div class="box">
<div class="boxTitle">售前参与<span>(个)</span></div> <div class="boxTitle">售前参与<span>(个)</span></div>
<div class="boxValue">{{totalObj.saler}}</div> <div class="boxValue">{{totalObj.saler || 0}}</div>
</div> </div>
<div class="box"> <div class="box">
<div class="boxTitle">预计成本<span>(百万)</span></div> <div class="boxTitle">预计成本<span>(百万)</span></div>
...@@ -65,7 +65,7 @@ ...@@ -65,7 +65,7 @@
<div class="flex-1 d-flex"> <div class="flex-1 d-flex">
<div class="flex-1"> <div class="flex-1">
<div class="title">商机阶段分析</div> <div class="title">商机阶段分析</div>
<funnel :message="bussionStep" :idstr="'bussionStep'" class="heightCut44"></funnel> <funnel :message="bussionStep" @refreshPie="refreshPie" :idstr="'bussionStep'" class="heightCut44"></funnel>
</div> </div>
<div class="flex-1"> <div class="flex-1">
<div class="title">商机类型</div> <div class="title">商机类型</div>
...@@ -111,6 +111,7 @@ export default { ...@@ -111,6 +111,7 @@ export default {
data () { data () {
return { return {
chartActive: 'number', chartActive: 'number',
stepActive: '',
totalObj: {}, // 商机统计 totalObj: {}, // 商机统计
industry: '', industry: '',
// 行业分布 // 行业分布
...@@ -142,9 +143,9 @@ export default { ...@@ -142,9 +143,9 @@ export default {
this.getProductType() this.getProductType()
this.getNewOpportunities() this.getNewOpportunities()
this.getBillRate() this.getBillRate()
this.getBigetOpportunitiesByNumberOrMoneyllRate()
this.getOpportunitiesByStep()
this.getOpportunitiesByDept('', false) this.getOpportunitiesByDept('', false)
this.getOpportunitiesByStep()
this.getOpportunitiesByNumberOrMoney()
}, },
filters: { filters: {
numFilter (value) { numFilter (value) {
...@@ -181,6 +182,7 @@ export default { ...@@ -181,6 +182,7 @@ export default {
async getOpportunitiesDistribution () { async getOpportunitiesDistribution () {
const _data = await API_BUSSINESS.getOpportunitiesDistribution() const _data = await API_BUSSINESS.getOpportunitiesDistribution()
this.bussionDistribute = _data.data this.bussionDistribute = _data.data
this.bussionDistribute.yAxis = '单位 :个'
}, },
// 合同税率 // 合同税率
async getTaxRate () { async getTaxRate () {
...@@ -225,12 +227,17 @@ export default { ...@@ -225,12 +227,17 @@ export default {
// q切换数量和金额 // q切换数量和金额
changeType (item) { changeType (item) {
this.chartActive = item this.chartActive = item
this.getBigetOpportunitiesByNumberOrMoneyllRate() this.getOpportunitiesByNumberOrMoney()
this.getOpportunitiesByDept() this.getOpportunitiesByDept()
}, },
// 点击漏斗图 切换饼图数据
refreshPie (item) {
this.stepActive = item
this.getOpportunitiesByNumberOrMoney()
},
// 商机阶段分析-中间饼图 // 商机阶段分析-中间饼图
async getBigetOpportunitiesByNumberOrMoneyllRate () { async getOpportunitiesByNumberOrMoney () {
const _data = await API_BUSSINESS.getBigetOpportunitiesByNumberOrMoneyllRate({ name: this.chartActive }) const _data = await API_BUSSINESS.getOpportunitiesByNumberOrMoney({ name: this.chartActive, step: this.stepActive || null })
this.bussionType = { this.bussionType = {
legend: _data.data.legend, legend: _data.data.legend,
data: _data.data.data.map(item => { data: _data.data.data.map(item => {
......
<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="getAnalysis">
<el-option <el-option
v-for="item in yearList" v-for="item in yearList"
:key="item" :key="item"
...@@ -16,26 +16,30 @@ ...@@ -16,26 +16,30 @@
<script> <script>
import pieChart from '@/components/echarts/pieChart' // 饼图 import pieChart from '@/components/echarts/pieChart' // 饼图
import * as API_CLIENT from '@/api/con.client.js'
export default { export default {
components: { pieChart }, components: { pieChart },
data () { data () {
return { return {
selectYear: '2020', selectYear: '',
yearList: ['2021', '2020', '2019', '2018', '2017'], yearList: [],
dataList: { // 服务分析 dataList: {} // 服务分析
legend: ['软件解决方案', '云产品及服务', '系统集成及IT服务'],
data: [
{ value: 335, name: '软件解决方案' },
{ value: 310, name: '云产品及服务' },
{ value: 234, name: '系统集成及IT服务' }
]
}
} }
}, },
mounted () { mounted () {
this.getAnalysisYear()
}, },
methods: { 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> </script>
......
This diff is collapsed.
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
:value="item.id"> :value="item.id">
</el-option> </el-option>
</el-select> </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 <el-option
v-for="item in yearList" v-for="item in yearList"
:key="item" :key="item"
...@@ -57,7 +57,7 @@ export default { ...@@ -57,7 +57,7 @@ export default {
this.dataList = _data.data this.dataList = _data.data
this.dataList.data.inflow = _data.data.data.inflow.map(item => item.value) 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.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)
} }
} }
} }
......
...@@ -55,7 +55,8 @@ export default { ...@@ -55,7 +55,8 @@ export default {
isLeaf: isLeaf, isLeaf: isLeaf,
xAxis: _data.data.xAxis, xAxis: _data.data.xAxis,
idxs: _data.data.idxs, idxs: _data.data.idxs,
data: _data.data.data data: _data.data.data,
yAxis: '单位:万元'
} }
}, },
downData (item) { downData (item) {
......
...@@ -45,7 +45,8 @@ export default { ...@@ -45,7 +45,8 @@ export default {
isLeaf: isLeaf, isLeaf: isLeaf,
xAxis: _data.data.xAxis, xAxis: _data.data.xAxis,
idxs: _data.data.idxs, idxs: _data.data.idxs,
data: _data.data.data data: _data.data.data,
yAxis: '单位:万元'
} }
}, },
downData (item) { downData (item) {
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
</div> </div>
<div class="centerBlock"> <div class="centerBlock">
<div class="centerBoxHeight-3"> <div class="centerBoxHeight-3">
<div class="title">回款</div> <div class="title">回款统计</div>
<receiptStatistics class="heightCut44"/> <receiptStatistics class="heightCut44"/>
</div> </div>
<div class="centerBoxHeight-3 mt-2"> <div class="centerBoxHeight-3 mt-2">
......
...@@ -56,9 +56,10 @@ export default { ...@@ -56,9 +56,10 @@ export default {
} }
} }
.org-content { .org-content {
text-align: center;
color: #fff; color: #fff;
font-size: .14rem; font-size: .14rem;
width: 10.8rem; width: 100%;
height: 7.89rem; height: 7.89rem;
margin: 0 auto; margin: 0 auto;
} }
......
<template> <template>
<div class="staff-box"> <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"> <div class="tab-box">
<span <span
class="tab-btn" class="tab-btn"
...@@ -14,11 +29,11 @@ ...@@ -14,11 +29,11 @@
<el-col span="12"> <el-col span="12">
<div class="item-box d-flex jc-between"> <div class="item-box d-flex jc-between">
<span class="label">姓名</span> <span class="label">姓名</span>
<span class="text">赵忠祥</span> <span class="text">{{employeeInfo.name}}</span>
</div> </div>
<div class="item-box d-flex jc-between"> <div class="item-box d-flex jc-between">
<span class="label">职位</span> <span class="label">职位</span>
<span class="text">主持人</span> <span class="text">{{employeeInfo.position}}</span>
</div> </div>
</el-col> </el-col>
...@@ -36,11 +51,11 @@ ...@@ -36,11 +51,11 @@
<el-col span="24"> <el-col span="24">
<div class="item-box d-flex jc-between"> <div class="item-box d-flex jc-between">
<span class="label">电话</span> <span class="label">电话</span>
<span class="text">13242321122</span> <span class="text">{{employeeInfo.phone}}</span>
</div> </div>
<div class="item-box d-flex jc-between"> <div class="item-box d-flex jc-between">
<span class="label">邮箱</span> <span class="label">邮箱</span>
<span class="text">zhaozongxiang@163.cn</span> <span class="text">{{employeeInfo.email}}</span>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
...@@ -50,10 +65,12 @@ ...@@ -50,10 +65,12 @@
</template> </template>
<script> <script>
import * as API_ORGAN from '@/api/con.organ'
export default { export default {
name: 'staff', name: 'staff',
data () { data () {
return { return {
input: '',
isActive: 0, isActive: 0,
tabList: [ tabList: [
{ name: '基本信息', id: 1 }, { name: '基本信息', id: 1 },
...@@ -63,7 +80,31 @@ export default { ...@@ -63,7 +80,31 @@ export default {
{ name: '项目经验', id: 5 }, { name: '项目经验', id: 5 },
{ name: '绩效呈现', id: 6 }, { name: '绩效呈现', id: 6 },
{ name: '素质评价', id: 7 } { 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
})
} }
} }
} }
......
...@@ -60,30 +60,7 @@ ...@@ -60,30 +60,7 @@
</div> </div>
<div class="centerBlock"> <div class="centerBlock">
<div class="content"> <div class="content">
<div class="d-flex search-box"> <staffInfo/>
<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"/>
</div> </div>
<div class="centerBoxHeight-3 mt-2"> <div class="centerBoxHeight-3 mt-2">
<div class="title">入/离职统计</div> <div class="title">入/离职统计</div>
...@@ -123,15 +100,6 @@ export default { ...@@ -123,15 +100,6 @@ export default {
components: { headerLayout, pieChart, barChart, waterBall, lineChart, peopleCounting, staffInfo }, components: { headerLayout, pieChart, barChart, waterBall, lineChart, peopleCounting, staffInfo },
data () { data () {
return { return {
options: [
{
value: 1,
label: '员工名称'
}, {
value: 2,
label: '证书名称'
}
],
dataList: { dataList: {
parentId: '', parentId: '',
idxs: [1, 2, 3, 4, 5], idxs: [1, 2, 3, 4, 5],
...@@ -143,10 +111,9 @@ export default { ...@@ -143,10 +111,9 @@ export default {
{ id: 4, value: 162.2, parent: '', isLeaf: false }, { id: 4, value: 162.2, parent: '', isLeaf: false },
{ id: 5, value: 32.6, parent: '', isLeaf: false } { id: 5, value: 32.6, parent: '', isLeaf: false }
] ]
}, }, // 上月绩效
performActive: 1, performActive: 1, // 上月绩效
distributeActive: 1, distributeActive: 1, // 人员分布
input: '',
jobDistribution: { jobDistribution: {
legend: ['技术岗', '销售岗', '管理岗', '职能岗', '其他岗'], legend: ['技术岗', '销售岗', '管理岗', '职能岗', '其他岗'],
data: [ data: [
...@@ -156,35 +123,14 @@ export default { ...@@ -156,35 +123,14 @@ export default {
{ value: 135, name: '职能岗' }, { value: 135, name: '职能岗' },
{ value: 548, name: '其他岗' } { value: 548, name: '其他岗' }
] ]
}, }, // 人员分布
refundAmountLine: { refundAmountLine: {}, // 入离职统计
legend: ['简历数', '面试数', '发放offer', '入职'], recruitment: {} // 人才招聘
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: {}
} }
}, },
mounted () { mounted () {
this.recruitmentStatistics() this.recruitmentStatistics()
this.getYearRms()
}, },
methods: { methods: {
// 获取人才招聘信息 // 获取人才招聘信息
...@@ -204,13 +150,22 @@ export default { ...@@ -204,13 +150,22 @@ export default {
name: '离职率' name: '离职率'
} }
}, },
// 获取入离职统计
querySearch (queryString, cb) { async getYearRms () {
// cb() const _data = await API_ORGAN.getYearRms()
}, this.refundAmountLine = {
handleSelect (item) { 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) { downData (item) {
// console.log('传来的值:', item) // console.log('传来的值:', item)
setTimeout(() => { setTimeout(() => {
...@@ -259,6 +214,7 @@ export default { ...@@ -259,6 +214,7 @@ export default {
} }
}, 0) }, 0)
}, },
// 跳转组织机构详情
orgDetail () { orgDetail () {
this.$router.push('/orgDetail') this.$router.push('/orgDetail')
} }
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div class="title">全国</div> <div class="title">全国</div>
<div class="content d-flex"> <div class="content d-flex">
<div class="flex-1"> <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=='4'">共计客户 <strong>{{message.allCustomerNumber}}</strong></p>
<p v-if="type=='3'">共计商机 <strong>{{message.allOpportunitiesNumber}}</strong></p> <p v-if="type=='3'">共计商机 <strong>{{message.allOpportunitiesNumber}}</strong></p>
<p v-if="type=='1'">共计项目 <strong>{{message.allProjectNumber}}</strong></p> <p v-if="type=='1'">共计项目 <strong>{{message.allProjectNumber}}</strong></p>
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
<div class="d-flex flex-column"> <div class="d-flex flex-column">
<div class="text-box"> <div class="text-box">
<label>本年度签署合同</label> <label>本年度签署合同</label>
<span>{{message.contactMoney|moneyFormat(8)|numFormat}} 亿</span> <span>{{message.contactMoney|moneyFormat(4)|numFormat}} 万元</span>
</div> </div>
<div class="text-box"> <div class="text-box">
<label>相关产品</label> <label>相关产品</label>
...@@ -29,11 +29,11 @@ ...@@ -29,11 +29,11 @@
<div class="d-flex flex-column"> <div class="d-flex flex-column">
<div class="text-box"> <div class="text-box">
<label>预计总收入</label> <label>预计总收入</label>
<span>{{message.allRevenueMoney|moneyFormat(8)|numFormat}} 亿</span> <span>{{message.allRevenueMoney|moneyFormat(4)|numFormat}} 万元</span>
</div> </div>
<div class="text-box"> <div class="text-box">
<label>预计总成本</label> <label>预计总成本</label>
<span>{{message.allCostMoney|moneyFormat(8)|numFormat}} 亿</span> <span>{{message.allCostMoney|moneyFormat(4)|numFormat}} 万元</span>
</div> </div>
<div class="text-box"> <div class="text-box">
<label>参与售前</label> <label>参与售前</label>
...@@ -110,18 +110,23 @@ export default { ...@@ -110,18 +110,23 @@ export default {
font-size: .16rem; font-size: .16rem;
color: #fff; color: #fff;
text-align: center; text-align: center;
margin-top: -.05rem;
} }
.sum-box { .sum-box {
border-left: 1px solid #30DDF4; border-left: 1px solid #30DDF4;
padding-top: .24rem; padding-top: .24rem;
} }
.text-box { .text-box {
text-align: center; padding: 0 .3rem;
flex: 1; flex: 1;
font-family: PingFang-SC-Medium; font-family: PingFang-SC-Medium;
font-size: .16rem; font-size: .16rem;
line-height: 2; line-height: 2;
color: #FFFFFF; color: #FFFFFF;
label {
width: 1.4rem;
display: inline-block;
}
span { span {
padding-left: .24rem; padding-left: .24rem;
font-family: ZhenyanGB-Regular; font-family: ZhenyanGB-Regular;
......
...@@ -36,8 +36,15 @@ ...@@ -36,8 +36,15 @@
</div> </div>
</div> </div>
<h3>关系筛选</h3> <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-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> </el-checkbox-group>
<div class="inquire" @click="handleChange">查询</div> <div class="inquire" @click="handleChange">查询</div>
</div> </div>
...@@ -90,11 +97,11 @@ export default { ...@@ -90,11 +97,11 @@ export default {
knowledData: [], knowledData: [],
checked: [1, 2, 3, 4, 5], checked: [1, 2, 3, 4, 5],
checkList: [ checkList: [
{ name: '项目', value: 1 }, { name: '项目', value: 1, color: '#8419c7' },
{ name: '销售', value: 2 }, { name: '销售', value: 2, color: '#b9c719' },
{ name: '商机', value: 3 }, { name: '商机', value: 3, color: '#199fc7' },
{ name: '客户', value: 4 }, { name: '客户', value: 4, color: '#4f19c7' },
{ name: '成员', value: 5 } { name: '成员', value: 5, color: '#69c719' }
], ],
value: '', value: '',
topoData: {} // 接收到的topo数据 topoData: {} // 接收到的topo数据
...@@ -198,6 +205,12 @@ export default { ...@@ -198,6 +205,12 @@ export default {
padding-top: .5rem; padding-top: .5rem;
position: relative; position: relative;
margin-top: .1rem; margin-top: .1rem;
.pointer {
display: inline-block;
width: .08rem;
height: .08rem;
border-radius: 50%;
}
h3{ h3{
width: calc(100% - .2rem); width: calc(100% - .2rem);
font-size:.16rem; font-size:.16rem;
......
...@@ -402,7 +402,7 @@ export default { ...@@ -402,7 +402,7 @@ export default {
if (geoCoord) { if (geoCoord) {
res.push({ res.push({
name: this.message[i].province, name: this.message[i].province,
value: geoCoord.concat(this.message[i][type]) value: geoCoord.concat(this.message[i][type] || 0)
}) })
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment