Commit 4d78aa3e authored by ww-xxy's avatar ww-xxy

统计目标增加联动

parent 50f4e654
......@@ -80,7 +80,7 @@ export default {
name: '目标线',
yAxis: this.markLine,
label: {
formatter: '{b}:'+this.legendName+'不高于20.0%,',
formatter: '{b}:' + this.legendName + '不高于20.0%,',
position: 'insideStartTop'
},
lineStyle: {
......@@ -188,6 +188,10 @@ export default {
]
})
}
myChart.on('click', (params)=>{
this.$emit("click",params)
})
},
},
};
......
......@@ -9,17 +9,8 @@
<el-radio-button :label="2">按个人</el-radio-button>
</el-radio-group>
<div class="search_box">
<el-select
v-model="boardQuery.month"
placeholder="请选择"
style="margin: 0 10px;"
>
<el-option
v-for="item in optionsMonths"
:key="item.value"
:label="item.label"
:value="item.value"
>
<el-select v-model="boardQuery.month" placeholder="请选择" style="margin: 0 10px;">
<el-option v-for="item in optionsMonths" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
<el-button type="primary">搜索</el-button>
......@@ -28,60 +19,30 @@
<div class="mid">
<div class="mid_top">
<div class="jixiaozongfen">
<bar-charts
:title="'绩效总分排名'"
:id="'jixiaozongfen'"
:legendName="'绩效总分'"
:parameter="depStatObj.totalScore"
:styleObj="{ width: '100%', height: '300px' }"
/>
<bar-charts :title="'绩效总分排名'" :id="'jixiaozongfen'" :legendName="'绩效总分'"
:parameter="depStatObj.totalScore" :styleObj="{ width: '100%', height: '300px' }" />
</div>
<div class="jixiaopingjunfen">
<line-charts
:title="'绩效平均分排名'"
:id="'jixiaopingjunfen'"
:parameter="depStatObj.averageScore"
:legendName="'绩效平均分'"
:styleObj="{ width: '100%', height: '300px' }"
/>
<line-charts :title="'绩效平均分排名'" :id="'jixiaopingjunfen'" :parameter="depStatObj.averageScore"
:legendName="'绩效平均分'" :styleObj="{ width: '100%', height: '300px' }" />
</div>
</div>
<div class="mid_down">
<div class="top_10 box">
<bar-charts
:title="'部门加分排名TOP10'"
:id="'top_10'"
:parameter="depStatObj.totalAddScore"
:legendName="'部门加分分值'"
:styleObj="{ width: '100%', height: '300px' }"
/>
<bar-charts :title="'部门加分排名TOP10'" :id="'top_10'" :parameter="depStatObj.totalAddScore"
:legendName="'部门加分分值'" @click="rowClick" :styleObj="{ width: '100%', height: '300px' }" />
</div>
<div class="jiafen box">
<pie-charts
:title="'部门加分整体分布'"
:id="'jiafen'"
:parameter="depStatObj.pieAddScore"
:legendName="'部门加分'"
:styleObj="{ width: '100%', height: '300px' }"
/>
<pie-charts :title="'部门加分整体分布'" :id="'jiafen'" :parameter="depStatObj.pieAddScore" :legendName="'部门加分'"
:styleObj="{ width: '100%', height: '300px' }" />
</div>
<div class="koufen_10 box">
<bar-charts
:title="'部门扣分排名TOP10'"
:id="'koufen_10'"
:parameter="depStatObj.totalSubScore"
:legendName="'部门分值'"
:styleObj="{ width: '100%', height: '300px' }"
/>
<bar-charts :title="'部门扣分排名TOP10'" :id="'koufen_10'" :parameter="depStatObj.totalSubScore"
:legendName="'部门分值'" @click="rowClickSub" :styleObj="{ width: '100%', height: '300px' }" />
</div>
<div class="koufen box">
<pie-charts
:parameter="depStatObj.pieSubScore"
:title="'部门扣分整体分布'"
:id="'koufen'"
:legendName="'部门扣分'"
:styleObj="{ onAssessmentScope2width: '100%', height: '300px' }"
/>
<pie-charts :parameter="depStatObj.pieSubScore" :title="'部门扣分整体分布'" :id="'koufen'" :legendName="'部门扣分'"
:styleObj="{ onAssessmentScope2width: '100%', height: '300px' }" />
</div>
</div>
</div>
......@@ -96,41 +57,20 @@
</el-radio-group>
<div class="search_box">
<el-select v-model="value" @change="deptList" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
>
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
<el-select
@change="deptList"
v-model="StatQuery.month"
placeholder="请选择"
style="margin: 0 10px;"
>
<el-option
v-for="item in optionsMonths"
:key="item.value"
:label="item.label"
:value="item.value"
>
<el-select @change="deptList" v-model="StatQuery.month" placeholder="请选择" style="margin: 0 10px;">
<el-option v-for="item in optionsMonths" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
<el-button type="primary" @click="deptList">搜索</el-button>
</div>
</div>
<div class="bar_content">
<bar-charts
:title="`${type1 == 1 ? '各部门' : '个人'}${StatQuery.month}月${alignmentName}对齐情况`"
:id="'bar_content'"
:legendName="alignmentName"
:option="{title:{left:'center',textStyle:{fontSize:24}}}"
:markLine="0.2"
:parameter="depStatObj.alignment"
:styleObj="{ width: '1800px', height: '650px' }"
/>
<bar-charts :title="`${type1 == 1 ? '各部门' : '个人'}${StatQuery.month}月${alignmentName}对齐情况`" :id="'bar_content'"
:legendName="alignmentName" :option="{ title: { left: 'center', textStyle: { fontSize: 24 } } }" :markLine="0.2"
:parameter="depStatObj.alignment" :styleObj="{ width: '1800px', height: '650px' }" />
</div>
</div>
</el-tab-pane>
......@@ -142,48 +82,34 @@
<el-radio-button :label="2">按个人</el-radio-button>
</el-radio-group>
<el-button type="primary" style="margin: 0 20px;" @click="addGoal">
+ 创建目标</el-button
>
+ 创建目标</el-button>
</div>
<div class="mid_content" style="height: auto;">
<div class="goal_box" v-for="(val, i) in dataList" :key="i">
<div class="goal_title">
<img src="../../../../assets/images/u17641.svg" alt="" />
<span>
{{dictString('assessmentType',val.assessmentType)}}{{dictString('compareScope',val.compareScope)}}{{val.ratio}}%
{{ dictString('assessmentType', val.assessmentType) }}{{ dictString('compareScope', val.compareScope) }}{{ val.ratio }}%
</span>
</div>
<p class="goal_txt">
<span>{{ type2 == 1 ? "目标部门:" : "目标个人:" }}</span
><span>{{
<span>{{ type2 == 1 ? "目标部门:" : "目标个人:" }}</span><span>{{
type2 == 1 ? val.deptPerpose : val.staffPerpose
}}</span>
</p>
<p class="goal_txt">
<span>周期:</span><span>{{val.year}} {{dictString('periodType',val.periodType)}}</span>
<span>周期:</span><span>{{ val.year }} {{ dictString('periodType', val.periodType) }}</span>
</p>
<p class="goal_txt">
<span>负责人:</span><span>{{val.leaders}}</span>
<span>负责人:</span><span>{{ val.leaders }}</span>
</p>
<p class="goal_txt">
<span>最近更新:</span><span>{{val.updateTime}}</span>
<span>最近更新:</span><span>{{ val.updateTime }}</span>
</p>
<p class="goal_txt"><span>更新人员:</span><span>{{dictString('updateUserId',val.updateUserId)}}</span></p>
<p class="goal_txt"><span>更新人员:</span><span>{{ dictString('updateUserId', val.updateUserId) }}</span></p>
<div class="button_box">
<el-button
type="primary"
style="width: 150px;"
plain
@click="hanleEdit(val)"
>编辑</el-button
>
<el-button
type="danger"
style="width: 150px;"
plain
@click="hanleDel(val)"
>删除</el-button
>
<el-button type="primary" style="width: 150px;" plain @click="hanleEdit(val)">编辑</el-button>
<el-button type="danger" style="width: 150px;" plain @click="hanleDel(val)">删除</el-button>
</div>
</div>
</div>
......@@ -217,10 +143,10 @@ export default {
},
methods: {
// 个人绩效分数统计
staffStatList(){
staffStatList() {
this.$post("/staff/perform/stat/list", this.boardQuery).then((res) => {
const {code,data,dict} = res
if(code == 1){
const { code, data, dict } = res
if (code == 1) {
const row = data.data || []
// this.statArr = row
const x = []
......@@ -234,10 +160,10 @@ export default {
}
});
// 加分top10
const top10 = {...this.boardQuery,size:10}
const top10 = { ...this.boardQuery, size: 10 }
this.$post("/staff/perform/stat/list", top10).then((res) => {
const {code,data,dict} = res
if(code == 1){
const { code, data, dict } = res
if (code == 1) {
const row = data.data || []
// this.statArr = row
const x = []
......@@ -251,10 +177,10 @@ export default {
}
});
// 减分
const top10Sub = {...this.boardQuery,size:10,orderColList:[{colName:'totalSubScore',sortKind:'desc'}]}
const top10Sub = { ...this.boardQuery, size: 10, orderColList: [{ colName: 'totalSubScore', sortKind: 'desc' }] }
this.$post("/staff/perform/stat/list", top10Sub).then((res) => {
const {code,data,dict} = res
if(code == 1){
const { code, data, dict } = res
if (code == 1) {
const row = data.data || []
// this.statArr = row
const x = []
......@@ -269,10 +195,10 @@ export default {
});
},
// 部门绩效分数统计
statList(){
this.$post("/dept/perform/stat/list",this.boardQuery).then((res) => {
const {code,data,dict} = res
if(code == 1){
statList() {
this.$post("/dept/perform/stat/list", this.boardQuery).then((res) => {
const { code, data, dict } = res
if (code == 1) {
const row = data.data || []
// this.statArr = row
const x = []
......@@ -292,10 +218,10 @@ export default {
}
});
// 加分top10
const top10 = {...this.boardQuery,size:10,orderColList:[{colName:'totalAddScore',sortKind:'desc'}]}
const top10 = { ...this.boardQuery, size: 10, orderColList: [{ colName: 'totalAddScore', sortKind: 'desc' }] }
this.$post("/dept/perform/stat/list", top10).then((res) => {
const {code,data,dict} = res
if(code == 1){
const { code, data, dict } = res
if (code == 1) {
const row = data.data || []
// this.statArr = row
const x = []
......@@ -306,14 +232,14 @@ export default {
});
this.depStatObj.totalAddScore.x = x
this.depStatObj.totalAddScore.y = y
this.depStatObj.totalAddScore.row = row
}
});
// 减分
const top10Sub = {...this.boardQuery,size:10,orderColList:[{colName:'totalSubScore',sortKind:'desc'}]}
const top10Sub = { ...this.boardQuery, size: 10, orderColList: [{ colName: 'totalSubScore', sortKind: 'desc' }] }
this.$post("/dept/perform/stat/list", top10Sub).then((res) => {
const {code,data,dict} = res
if(code == 1){
const { code, data, dict } = res
if (code == 1) {
const row = data.data || []
// this.statArr = row
const x = []
......@@ -328,10 +254,10 @@ export default {
});
},
// 部门目标对齐
deptList(){
deptList() {
this.$post("/perform/perpose/dept/stat/list", this.StatQuery).then((res) => {
const {code,data,dict} = res
if(code == 1){
const { code, data, dict } = res
if (code == 1) {
const row = data.data || []
const x = []
const y = []
......@@ -345,10 +271,10 @@ export default {
});
},
// 个人对齐方式
staffList(){
staffList() {
this.$post("/perform/perpose/staff/stat/list", this.StatQuery).then((res) => {
const {code,data,dict} = res
if(code == 1){
const { code, data, dict } = res
if (code == 1) {
const row = data.data || []
const x = []
const y = []
......@@ -379,9 +305,9 @@ export default {
},
// 目标管理
getData() {
this.$post("/perform/perpose/list",this.query).then((res) => {
console.log(res,"@@@@@@@@@@@@");
const {code,data,dict} = res
this.$post("/perform/perpose/list", this.query).then((res) => {
console.log(res, "@@@@@@@@@@@@");
const { code, data, dict } = res
this.dict = dict || {}
if (code == 1) {
this.dataList = data.data;
......@@ -391,39 +317,64 @@ export default {
});
},
// 字典转换
dictString(key,id){
const keyName = this.dict[key]
return keyName?keyName[id]:""
dictString(key, id) {
const keyName = this.dict[key]
return keyName ? keyName[id] : ""
},
// TAB个人/法人
onAssessmentScope(v){
if(v == 1){
onAssessmentScope(v) {
if (v == 1) {
this.statList()
}else{
} else {
this.staffStatList()
}
},
// 目标看齐
onAssessmentScope1(v){
if(v == 1){
onAssessmentScope1(v) {
if (v == 1) {
this.deptList()
}else{
} else {
this.staffList()
}
},
onAssessmentScope2(v){
if(v == 1){
onAssessmentScope2(v) {
if (v == 1) {
this.query.assessmentScope = 1
}else{
} else {
this.query.assessmentScope = 2
}
this.getData()
},
rowClick(row) {
const { dataIndex } = row
const {attendScoreAdd,reviewScoreAdd,goworkScoreAdd,effectScoreAdd,otherScoreAdd,complainScoreAdd} = this.depStatObj.totalAddScore.row[dataIndex]
this.depStatObj.pieAddScore = [
{ value: attendScoreAdd, name: '考勤绩效' },
{ value: reviewScoreAdd, name: '评价绩效' },
{ value: goworkScoreAdd, name: '办件绩效' },
{ value: effectScoreAdd, name: '效能绩效' },
{ value: complainScoreAdd, name: '投诉绩效' },
{ value: otherScoreAdd, name: '其它绩效' },
]
},
// 减分top10
rowClickSub(row) {
const { dataIndex } = row
const {attendScoreSub,reviewScoreSub,goworkScoreSub,effectScoreSub,complainScoreSub,otherScoreSub} = this.depStatObj.totalAddScore.row[dataIndex]
this.depStatObj.pieSubScore = [
{ value: attendScoreSub, name: '考勤绩效' },
{ value: reviewScoreSub, name: '评价绩效' },
{ value: goworkScoreSub, name: '办件绩效' },
{ value: effectScoreSub, name: '效能绩效' },
{ value: complainScoreSub, name: '投诉绩效' },
{ value: otherScoreSub, name: '其它绩效' },
]
}
},
computed: {
alignmentName:function(){
const obj = this.options.find(v=>v.value == this.value)
alignmentName: function () {
const obj = this.options.find(v => v.value == this.value)
return obj.label
}
},
......@@ -528,63 +479,63 @@ export default {
],
value: "lateRate",//默认显示迟到类型
dataList: [],
depStatObj:{
totalScore:{
x:[],
y:[]
depStatObj: {
totalScore: {
x: [],
y: []
},//绩效总分排名
averageScore:{
x:[],
y:[]
averageScore: {
x: [],
y: []
},//绩效平均排名
totalAddScore:{
x:[],
y:[]
totalAddScore: {
x: [],
y: []
},//加分
totalSubScore:{
x:[],
y:[]
totalSubScore: {
x: [],
y: []
},//减分
alignment:{
x:[],
y:[]
alignment: {
x: [],
y: []
},//目标对齐
pieAddScore:[
{value:0,name:'考勤绩效'},
{value:0,name:'评价绩效'},
{value:0,name:'办件绩效'},
{value:0,name:'效能绩效'},
{value:0,name:'投诉绩效'},
{value:0,name:'其它绩效'},
pieAddScore: [
{ value: 0, name: '考勤绩效' },
{ value: 0, name: '评价绩效' },
{ value: 0, name: '办件绩效' },
{ value: 0, name: '效能绩效' },
{ value: 0, name: '投诉绩效' },
{ value: 0, name: '其它绩效' },
],//部门加分分布
pieSubScore:[
{value:0,name:'考勤绩效'},
{value:0,name:'评价绩效'},
{value:0,name:'办件绩效'},
{value:0,name:'效能绩效'},
{value:0,name:'投诉绩效'},
{value:0,name:'其它绩效'},
pieSubScore: [
{ value: 0, name: '考勤绩效' },
{ value: 0, name: '评价绩效' },
{ value: 0, name: '办件绩效' },
{ value: 0, name: '效能绩效' },
{ value: 0, name: '投诉绩效' },
{ value: 0, name: '其它绩效' },
]//部门减分分布
},//按部门
month:"",//月份
boardQuery:{
page:1,
size:-1,
year:parseInt(moment().format('YYYY')),
month:parseInt(moment().format('MM')),
month: "",//月份
boardQuery: {
page: 1,
size: -1,
year: parseInt(moment().format('YYYY')),
month: parseInt(moment().format('MM')),
},//看板查询条件
query:{
page:1,
size:-1,
assessmentScope:1//考核范围(1.部门,2.个人)
query: {
page: 1,
size: -1,
assessmentScope: 1//考核范围(1.部门,2.个人)
},//目标管理查询条件
StatQuery:{
page:1,
size:-1,
year:parseInt(moment().format('YYYY')),
month:parseInt(moment().format('MM')),
StatQuery: {
page: 1,
size: -1,
year: parseInt(moment().format('YYYY')),
month: parseInt(moment().format('MM')),
},//对齐方式入参
dict:{}//字典
dict: {}//字典
};
},
};
......@@ -594,55 +545,66 @@ export default {
width: 100%;
height: 100%;
overflow: hidden;
/deep/.el-tabs__item {
width: 120px;
font-size: 14px;
text-align: center;
}
.content {
width: 100%;
height: 100%;
.search_top {
width: 100%;
height: 1000%;
display: flex;
justify-content: space-between;
}
/deep/.el-radio-button {
width: 150px;
text-align: center;
border: 1px solid #eee;
}
/deep/.el-radio-button__inner {
width: 150px;
}
/deep/.el-radio-button__orig-radio:checked + .el-radio-button__inner {
/deep/.el-radio-button__orig-radio:checked+.el-radio-button__inner {
width: 150px;
border: none;
background: #1890ff;
color: #fff;
border: 1px solid #eee;
}
.top {
width: 100%;
height: 60px;
}
.mid {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
.mid_top {
width: 100%;
height: 300px;
display: flex;
justify-content: space-between;
.jixiaozongfen,
.jixiaopingjunfen {
width: 48%;
height: 100%;
}
}
.mid_down {
width: 100%;
height: 380px;
......@@ -656,16 +618,19 @@ export default {
}
}
}
.mid_content,
.bar_content {
width: 100%;
height: 700px;
overflow: hidden;
}
.mid_content {
overflow-y: auto;
display: flex;
flex-wrap: wrap;
.goal_box {
width: 405px;
height: 238px;
......@@ -678,14 +643,17 @@ export default {
-webkit-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.117647058823529);
margin: 10px 20px 20px 10px;
padding: 20px;
.goal_title {
width: 100%;
display: flex;
align-items: center;
img {
margin-right: 10px;
}
}
.goal_txt {
font-family: "微软雅黑", sans-serif;
font-weight: 400;
......@@ -695,6 +663,7 @@ export default {
width: 100%;
margin: 10px 0;
}
.button_box {
width: 100%;
display: flex;
......
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