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

添加组织人才功能

parent e45f4704
...@@ -42,10 +42,45 @@ export function getYearRms (params) { ...@@ -42,10 +42,45 @@ export function getYearRms (params) {
}) })
} }
// 用户端-员工学历分布 // 用户端-员工分布
// export function getEmpEdacutionData () { export function getEmpEdacutionData (params) {
// return request({ return request({
// url: '/tp/Employee/getEmpEdacutionData', url: '/tp/Employee/getEmpData',
// method: 'get' method: 'get',
// }) params
// } })
}
// 用户端-获取全公司的人效
export function getEfficiency (params) {
return request({
url: '/tp/efficiency/getEfficiency',
method: 'get',
params
})
}
// 用户端-获取中心或部门的人效
export function getOneEfficiency (params) {
return request({
url: '/tp/efficiency/getOneEfficiency',
method: 'get',
params
})
}
// 用户端-上月绩效统计-分数
export function fractionLastCenterPerformance (params) {
return request({
url: '/tp/performance/fractionLastCenterPerformance',
method: 'get',
params
})
}
// 用户端-上月绩效统计-部门
export function lastCenterPerformance (params) {
return request({
url: '/tp/performance/lastCenterPerformance',
method: 'get',
params
})
}
...@@ -15,7 +15,7 @@ function createService () { ...@@ -15,7 +15,7 @@ function createService () {
baseURL: process.env.NODE_ENV === 'production' ? process.env.VUE_APP_REQUEST_URL : process.env.VUE_APP_BASE_API, baseURL: process.env.NODE_ENV === 'production' ? process.env.VUE_APP_REQUEST_URL : process.env.VUE_APP_BASE_API,
// baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url // baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
// withCredentials: true, // send cookies when cross-domain requests // withCredentials: true, // send cookies when cross-domain requests
timeout: 60000 // request timeout timeout: 160000 // request timeout
}) })
// 请求拦截 // 请求拦截
service.interceptors.request.use( service.interceptors.request.use(
......
<template> <template>
<div class="peopleCounting"> <div class="peopleCounting">
<div class="title">统计</div> <div class="title">统计</div>
<div class="count-body heightCut44"> <div class="count-body heightCut44">
<div class="d-flex flex-column" v-if="!showBar"> <div class="d-flex flex-column" v-if="!showBar">
<div class="count-item d-flex jc-between" v-for="item in dataList" :key="item.name" @click="showBarFn(item)"> <div class="count-item d-flex jc-between" v-for="item in dataList" :key="item.name" @click="showBarFn(item)">
...@@ -14,99 +14,80 @@ ...@@ -14,99 +14,80 @@
</template> </template>
<script> <script>
// import * as API_BASIC from '@/api/sys.basic.js' import * as API_ORGAN from '@/api/con.organ'
import barChart from '@/components/echarts/barChart' // 柱图 import barChart from '@/components/echarts/barChart' // 柱图
export default { export default {
components: { barChart }, components: { barChart },
data () { data () {
return { return {
showBar: false, showBar: false,
dataList: [ dataList: [],
{ // dataList: [
name: '劳动生产率', // {
value: '1000/人' // name: '劳动生产率',
}, { // value: '1000/人'
name: '人力成本绿润效率', // }, {
value: '19.2' // name: '人力成本绿润效率',
}, { // value: '19.2'
name: '人力成本含量', // }, {
value: '10.2' // name: '人力成本含量',
}, { // value: '10.2'
name: '人均收入', // }, {
value: '1000元/人' // name: '人均收入',
}, { // value: '1000元/人'
name: '人力成本绩效', // }, {
value: '11.7' // name: '人力成本绩效',
}, // value: '11.7'
{ // },
name: '人均贡献利润', // {
value: '1000元/人' // name: '人均贡献利润',
} // value: '1000元/人'
], // }
// ],
itemList: {} itemList: {}
} }
}, },
mounted () { mounted () {
this.getEfficiency()
}, },
methods: { methods: {
// 获取人效统计
async getEfficiency () {
const _data = await API_ORGAN.getEfficiency()
this.dataList = _data.data
},
showBarFn (item) { showBarFn (item) {
this.type = item.type
this.getOneEfficiency()
this.showBar = true this.showBar = true
this.itemList = {
parentId: 'company',
xAxis: ['运营管理中心', '解决方案中心', '智能制造中心', '生态合作中心', '客户运营中心'],
data: [
{ value: 123.2, parent: 'company', isLeaf: false },
{ value: 76.7, parent: 'company', isLeaf: false },
{ value: 135.6, parent: 'company', isLeaf: false },
{ value: 162.2, parent: 'company', isLeaf: false },
{ value: 32.6, parent: 'company', isLeaf: false }
]
}
}, },
downData (item) { // 获取柱状图数据
// console.log('传来的值:', item) async getOneEfficiency (param) {
setTimeout(() => { if (typeof param === 'boolean') {
if (item.indexOf('company') !== -1) { this.parentId = null
this.itemList = { } else {
parentId: 'company', this.parentId = param || null
xAxis: ['运营管理中心', '解决方案中心', '智能制造中心', '生态合作中心', '客户运营中心'],
data: [
{ value: 123.2, parent: 'company', isLeaf: false },
{ value: 76.7, parent: 'company', isLeaf: false },
{ value: 135.6, parent: 'company', isLeaf: false },
{ value: 162.2, parent: 'company', isLeaf: false },
{ value: 32.6, parent: 'company', isLeaf: false }
]
} }
} const _data = await API_ORGAN.getOneEfficiency({ centerId: this.parentId, type: this.type })
if (item.indexOf('中心') !== -1) { let isLeaf = false
this.itemList = { if (!_data.data.idxs.length) {
parentId: item, // 下级无数据 即为叶子节点
xAxis: ['运营管理部门', '解决方案部门', '智能制造部门', '生态合作部门', '客户运营部门'], isLeaf = true
data: [ this.itemList.isLeaf = isLeaf
{ value: 123.2, parent: item, isLeaf: false }, } else {
{ 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 }
]
}
}
if (item.indexOf('部门') !== -1) {
this.itemList = { this.itemList = {
parentId: item, parentId: param || this.showBar,
level: 'people', isLeaf: isLeaf,
xAxis: ['小小黄', '小小安', '小小圆', '小小静', '小小宝'], xAxis: _data.data.xAxis,
data: [ yAxis: '单位:分数',
{ value: 23.2, parent: item, isLeaf: true }, idxs: _data.data.idxs,
{ value: 6.7, parent: item, isLeaf: true }, data: _data.data.data
{ value: 35.6, parent: item, isLeaf: true },
{ value: 62.2, parent: item, isLeaf: true },
{ value: 2.6, parent: item, isLeaf: true }
]
} }
} }
}, 0) },
downData (item) {
this.selectId = item
this.getOneEfficiency(item)
} }
} }
} }
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
:key="index" :key="index"
@click="isActive = index">{{item.name}}</span> @click="isActive = index">{{item.name}}</span>
</div> </div>
<div class="content d-flex"> <div class="content d-flex" v-if="isActive==0">
<el-image src=""></el-image> <el-image src=""></el-image>
<el-row :gutter="12" class="inner-content flex-1"> <el-row :gutter="12" class="inner-content flex-1">
<el-col span="12"> <el-col span="12">
...@@ -40,13 +40,12 @@ ...@@ -40,13 +40,12 @@
<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">123</span> <span class="text">{{employeeInfo.age}}</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">12</span> <span class="text">{{employeeInfo.hireDate}}</span>
</div> </div>
</el-col> </el-col>
<el-col span="24"> <el-col span="24">
<div class="item-box d-flex jc-between"> <div class="item-box d-flex jc-between">
...@@ -60,6 +59,73 @@ ...@@ -60,6 +59,73 @@
</el-col> </el-col>
</el-row> </el-row>
</div> </div>
<div class="content d-flex" v-if="isActive==1">
<el-row :gutter="12" class="inner-content flex-1">
<el-col span="24" v-for="item in employeeInfo.empExperiences" :key="item.id">
<div class="item-box d-flex jc-between">
<span class="label">公司名称</span>
<span class="text">{{item.company}}</span>
</div>
<div>
<el-col span="12" style="padding-left:0;">
<div class="item-box d-flex jc-between">
<span class="label">岗位</span>
<span class="text">{{item.position}}</span>
</div>
</el-col>
<el-col span="12" style="padding-right:0;">
<div class="item-box d-flex jc-between">
<span class="label">工作时间</span>
<span class="text">{{item.hireDate.toString().substring(0,10)}}{{item.departureTime.toString().substring(0,10)}}</span>
</div>
</el-col>
</div>
</el-col>
</el-row>
</div>
<div class="content d-flex" v-if="isActive==2">
<el-row :gutter="12" class="inner-content flex-1">
<el-col span="24">
<div class="item-box d-flex jc-between">
<span class="label">证书名称</span>
<span class="text"></span>
</div>
</el-col>
</el-row>
</div>
<div class="content d-flex" v-if="isActive==3">
<el-row :gutter="12" class="inner-content flex-1">
<el-col span="24" v-for="item in employeeInfo.empProjects" :key="item.id">
<div class="item-box d-flex jc-between">
<span class="label">项目名称</span>
<span class="text">{{item.project}}</span>
</div>
<div>
<el-col span="24" style="padding-left:0;">
<div class="item-box d-flex jc-between">
<span class="label">服务时间</span>
<span class="text">{{item.beginDate}}{{item.endDate}}</span>
</div>
</el-col>
</div>
</el-col>
</el-row>
</div>
<div class="content d-flex" v-if="isActive==4">
<el-row :gutter="12" class="inner-content flex-1">
<el-col span="24" >
<el-col span="12" v-for="item in employeeInfo.empPerformances" :key="item.id">
<div class="item-box d-flex jc-between">
<span class="label">{{item.year}}/{{item.month}}</span>
<span class="text">{{item.score}}</span>
</div>
</el-col>
</el-col>
</el-row>
</div>
<div class="content d-flex" v-if="isActive==5">
<div class="label-evaluation" v-html="employeeInfo.evaluation"></div>
</div>
</div> </div>
</template> </template>
...@@ -74,24 +140,23 @@ export default { ...@@ -74,24 +140,23 @@ export default {
isActive: 0, isActive: 0,
tabList: [ tabList: [
{ name: '基本信息', id: 1 }, { name: '基本信息', id: 1 },
{ name: '任之轨迹', id: 2 }, // { name: '任之轨迹', id: 2 },
{ name: '工作经历', id: 3 }, { name: '工作经历', id: 2 },
{ name: '资质证书', id: 4 }, { name: '资质证书', id: 3 },
{ name: '项目经验', id: 5 }, { name: '项目经验', id: 4 },
{ name: '绩效呈现', id: 6 }, { name: '绩效呈现', id: 5 },
{ name: '素质评价', id: 7 } { name: '素质评价', id: 6 }
], ],
employeeInfo: {} employeeInfo: {}
} }
}, },
mounted () { mounted () {
const userId = sessionStorage.getItem('user') ? JSON.parse(sessionStorage.getItem('user')).id : '' // const userId = sessionStorage.getItem('user') ? JSON.parse(sessionStorage.getItem('user')).id : ''
this.handleSelect(userId) this.handleSelect({})
}, },
methods: { methods: {
// 根据name查id // 根据name查id
querySearch (queryString, cb) { querySearch (queryString, cb) {
console.log(queryString)
API_ORGAN.getEmployeeInformanceByName({ name: queryString }).then(res => { API_ORGAN.getEmployeeInformanceByName({ name: queryString }).then(res => {
const _data = res.data const _data = res.data
for (var i = 0; i < _data.length; i++) { for (var i = 0; i < _data.length; i++) {
...@@ -102,7 +167,7 @@ export default { ...@@ -102,7 +167,7 @@ export default {
}, },
// 点击下拉列表搜索 // 点击下拉列表搜索
handleSelect (item) { handleSelect (item) {
API_ORGAN.getEmployeeInformance({ empId: item || null }).then(res => { API_ORGAN.getEmployeeInformance({ empId: item.id || null }).then(res => {
this.employeeInfo = res.data this.employeeInfo = res.data
}) })
} }
...@@ -161,6 +226,10 @@ export default { ...@@ -161,6 +226,10 @@ export default {
height: 1.64rem; height: 1.64rem;
margin-right: .2rem; margin-right: .2rem;
} }
.label-evaluation {
font-size: .12rem;
color:#fff;
}
.inner-content { .inner-content {
color: #fff; color: #fff;
.item-box { .item-box {
......
...@@ -27,11 +27,11 @@ ...@@ -27,11 +27,11 @@
<div class="peopleContent"> <div class="peopleContent">
<div class="select-box"> <div class="select-box">
<div class="tab-chart"> <div class="tab-chart">
<span class="tab-button" @click="distributeActive=1" :class="{'is-active':distributeActive=== 1 }">岗位</span> <span class="tab-button" @click="changeType('1')" :class="{'is-active':distributeActive=== '1' }">岗位</span>
<span class="tab-button" @click="distributeActive=2" :class="{'is-active':distributeActive=== 2 }">学历</span> <span class="tab-button" @click="changeType('2')" :class="{'is-active':distributeActive=== '2' }">学历</span>
<span class="tab-button" @click="distributeActive=3" :class="{'is-active':distributeActive=== 3 }">年龄</span> <span class="tab-button" @click="changeType('3')" :class="{'is-active':distributeActive=== '3' }">年龄</span>
<span class="tab-button" @click="distributeActive=4" :class="{'is-active':distributeActive=== 4 }">男女比例</span> <span class="tab-button" @click="changeType('4')" :class="{'is-active':distributeActive=== '4' }">男女比例</span>
<span class="tab-button" @click="distributeActive=5" :class="{'is-active':distributeActive=== 5 }">司龄</span> <span class="tab-button" @click="changeType('5')" :class="{'is-active':distributeActive=== '5' }">司龄</span>
</div> </div>
</div> </div>
<pieChart :message="jobDistribution" :noDrill="true" idstr="jobDistribution" class="jobDistribution heightCut42"></pieChart> <pieChart :message="jobDistribution" :noDrill="true" idstr="jobDistribution" class="jobDistribution heightCut42"></pieChart>
...@@ -73,8 +73,8 @@ ...@@ -73,8 +73,8 @@
<div class="px-24 heightCut68"> <div class="px-24 heightCut68">
<div class="select-box"> <div class="select-box">
<div class="tab-chart"> <div class="tab-chart">
<span class="tab-button" @click="performActive=1" :class="{'is-active':performActive=== 1 }">按分数</span> <span class="tab-button" @click="changeTypeActive('1')" :class="{'is-active':performActive=== '1' }">按分数</span>
<span class="tab-button" @click="performActive=2" :class="{'is-active':performActive=== 2 }">按部门</span> <span class="tab-button" @click="changeTypeActive('2')" :class="{'is-active':performActive=== '2' }">按部门</span>
</div> </div>
</div> </div>
<barChart :message="dataList" idstr="lastMonthPerformance" @downData="downData" class="heightCut44"></barChart> <barChart :message="dataList" idstr="lastMonthPerformance" @downData="downData" class="heightCut44"></barChart>
...@@ -100,30 +100,10 @@ export default { ...@@ -100,30 +100,10 @@ export default {
components: { headerLayout, pieChart, barChart, waterBall, lineChart, peopleCounting, staffInfo }, components: { headerLayout, pieChart, barChart, waterBall, lineChart, peopleCounting, staffInfo },
data () { data () {
return { return {
dataList: { dataList: {}, // 上月绩效
parentId: '', performActive: '1', // 上月绩效
idxs: [1, 2, 3, 4, 5], distributeActive: '1', // 人员分布
xAxis: ['运营管理中心', '解决方案中心', '智能制造中心', '生态合作中心', '客户运营中心'], jobDistribution: {}, // 人员分布
data: [
{ id: 1, value: 123.2, parent: '', isLeaf: false },
{ id: 2, value: 76.7, parent: '', isLeaf: false },
{ id: 3, value: 135.6, parent: '', isLeaf: false },
{ id: 4, value: 162.2, parent: '', isLeaf: false },
{ id: 5, value: 32.6, parent: '', isLeaf: false }
]
}, // 上月绩效
performActive: 1, // 上月绩效
distributeActive: 1, // 人员分布
jobDistribution: {
legend: ['技术岗', '销售岗', '管理岗', '职能岗', '其他岗'],
data: [
{ value: 335, name: '技术岗' },
{ value: 310, name: '销售岗' },
{ value: 234, name: '管理岗' },
{ value: 135, name: '职能岗' },
{ value: 548, name: '其他岗' }
]
}, // 人员分布
refundAmountLine: {}, // 入离职统计 refundAmountLine: {}, // 入离职统计
recruitment: {} // 人才招聘 recruitment: {} // 人才招聘
} }
...@@ -131,6 +111,8 @@ export default { ...@@ -131,6 +111,8 @@ export default {
mounted () { mounted () {
this.recruitmentStatistics() this.recruitmentStatistics()
this.getYearRms() this.getYearRms()
this.getEmpEdacutionData()
this.fractionLastCenterPerformance()
}, },
methods: { methods: {
// 获取人才招聘信息 // 获取人才招聘信息
...@@ -165,58 +147,80 @@ export default { ...@@ -165,58 +147,80 @@ export default {
}) })
} }
}, },
// 上月绩效下钻 changeType (type) {
downData (item) { this.distributeActive = type
// console.log('传来的值:', item) this.getEmpEdacutionData()
setTimeout(() => { },
if (!item) { // 人员分布
this.dataList = { async getEmpEdacutionData () {
parentId: '', const _data = await API_ORGAN.getEmpEdacutionData({ type: this.distributeActive })
xAxis: ['运营管理中心', '解决方案中心', '智能制造中心', '生态合作中心', '客户运营中心'], this.jobDistribution = _data.data
idxs: [1, 2, 3, 4, 5], },
data: [ // 跳转组织机构详情
{ id: 1, value: 123.2, parent: '', isLeaf: false }, orgDetail () {
{ id: 2, value: 76.7, parent: '', isLeaf: false }, this.$router.push('/orgDetail')
{ id: 3, value: 135.6, parent: '', isLeaf: false }, },
{ id: 4, value: 162.2, parent: '', isLeaf: false }, // 切换部门和 分数
{ id: 5, value: 32.6, parent: '', isLeaf: false } changeTypeActive (itm) {
] this.performActive = itm
} if (this.performActive === '1') {
// 分数
this.fractionLastCenterPerformance()
} else {
// 部门
this.lastCenterPerformance()
} }
if (item.indexOf('中心') !== -1) { },
// 按分数查询绩效
async fractionLastCenterPerformance (param) {
this.parentId = param || null
const _data = await API_ORGAN.fractionLastCenterPerformance({ type: this.parentId })
let isLeaf = false
if (!_data.data.idxs.length) {
// 下级无数据 即为叶子节点
isLeaf = true
this.dataList.isLeaf = isLeaf
} else {
this.dataList = { this.dataList = {
parentId: item, parentId: param || '',
xAxis: ['运营管理部门', '解决方案部门', '智能制造部门', '生态合作部门', '客户运营部门'], isLeaf: isLeaf,
idxs: [11, 22, 33, 44, 55], xAxis: _data.data.xAxis,
data: [ yAxis: '单位:个',
{ id: 11, value: 123.2, parent: '运营管理中心', isLeaf: false }, idxs: _data.data.idxs,
{ id: 22, value: 76.7, parent: '运营管理中心', isLeaf: false }, data: _data.data.data
{ id: 33, value: 135.6, parent: '运营管理中心', isLeaf: false },
{ id: 44, value: 162.2, parent: '运营管理中心', isLeaf: false },
{ id: 55, value: 32.6, parent: '运营管理中心', isLeaf: false }
]
} }
} }
if (item.indexOf('部门') !== -1) { },
// 按部门查询
async lastCenterPerformance (param) {
this.parentId = param || null
const _data = await API_ORGAN.lastCenterPerformance({ deptId: this.parentId })
let isLeaf = false
if (!_data.data.idxs.length) {
// 下级无数据 即为叶子节点
isLeaf = true
this.dataList.isLeaf = isLeaf
} else {
this.dataList = { this.dataList = {
parentId: item, parentId: param || '',
level: 'people', isLeaf: isLeaf,
xAxis: ['小小黄', '小小安', '小小圆', '小小静', '小小宝'], xAxis: _data.data.xAxis,
idxs: [111, 222, 333, 444, 555], yAxis: '单位:分数',
data: [ idxs: _data.data.idxs,
{ id: 111, value: 23.2, parent: '解决方案部门', isLeaf: true }, data: _data.data.data
{ id: 222, value: 6.7, parent: '解决方案部门', isLeaf: true },
{ id: 333, value: 35.6, parent: '解决方案部门', isLeaf: true },
{ id: 444, value: 62.2, parent: '解决方案部门', isLeaf: true },
{ id: 555, value: 2.6, parent: '解决方案部门', isLeaf: true }
]
} }
} }
}, 0)
}, },
// 跳转组织机构详情 // 上月绩效下钻
orgDetail () { downData (item) {
this.$router.push('/orgDetail') console.log('传来的值:', item)
if (this.performActive === '1') {
// 分数
this.fractionLastCenterPerformance(item)
} else {
// 部门
this.lastCenterPerformance(item)
}
} }
} }
} }
......
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
</div> </div>
<div class="text-box"> <div class="text-box">
<label>参与售前</label> <label>参与售前</label>
<span>{{message.allSalerNumber}}</span> <span>{{message.allSalerNumber}}</span>
</div> </div>
</div> </div>
</div> </div>
...@@ -49,11 +49,11 @@ ...@@ -49,11 +49,11 @@
</div> </div>
<div class="text-box"> <div class="text-box">
<label>当前参与技术人员</label> <label>当前参与技术人员</label>
<span>{{message.technologyEmployee}}</span> <span>{{message.technologyEmployee}}</span>
</div> </div>
<div class="text-box"> <div class="text-box">
<label>当前参与销售人员</label> <label>当前参与销售人员</label>
<span>{{message.saleEmployee}}</span> <span>{{message.saleEmployee}}</span>
</div> </div>
</div> </div>
</div> </div>
......
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