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

添加组织人才功能

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