Commit 00cc35d9 authored by 赵啸非's avatar 赵啸非

Merge remote-tracking branch 'origin/master'

parents ba37775e 49da75a0
...@@ -344,6 +344,7 @@ export default { ...@@ -344,6 +344,7 @@ export default {
let newData = { page: 1 }; let newData = { page: 1 };
Object.keys(data).forEach((item) => { Object.keys(data).forEach((item) => {
let val = data[item]; let val = data[item];
console.log(item,this.search)
this.search.forEach((obj) => { this.search.forEach((obj) => {
if ( if (
obj.name === item && obj.name === item &&
...@@ -363,6 +364,7 @@ export default { ...@@ -363,6 +364,7 @@ export default {
}); });
newData[item] = this.decodeVal(val); newData[item] = this.decodeVal(val);
}); });
return newData; return newData;
}, },
decodeVal(val) { decodeVal(val) {
......
<template> <template>
<div class="page"> <div class="page">
<div style="margin:10px 0"> <div >
<tab-pane <tab-pane
:thirdList="thirdList" :thirdList="thirdList"
:activeName="activeName" :activeName="activeName"
...@@ -66,14 +66,14 @@ ...@@ -66,14 +66,14 @@
@click="lookexportHis" @click="lookexportHis"
>导出记录</el-button >导出记录</el-button
> >
<el-button <!-- <el-button
slot="table-head-left2" slot="table-head-left2"
style="margin-left: 10px" style="margin-left: 10px"
icon="el-icon-tickets" icon="el-icon-tickets"
size="mini" size="mini"
@click="setdialog" @click="setdialog"
>表格设置</el-button >表格设置</el-button
> > -->
</LayoutTable> </LayoutTable>
<drawer-show ref="drawerform" @ok="getData" /> <drawer-show ref="drawerform" @ok="getData" />
<!-- 导出记录查看 --> <!-- 导出记录查看 -->
......
...@@ -18,13 +18,13 @@ ...@@ -18,13 +18,13 @@
type="success" type="success"
@click="lookexportHis" @click="lookexportHis"
>导出记录</el-button> >导出记录</el-button>
<el-button <!-- <el-button
slot="table-head-left2" slot="table-head-left2"
style="margin-left: 10px" style="margin-left: 10px"
icon="el-icon-tickets" icon="el-icon-tickets"
size="mini" size="mini"
@click="setdialog" @click="setdialog"
>表格设置</el-button> >表格设置</el-button> -->
</LayoutTable> </LayoutTable>
<dialog-show ref="dialogform" @ok="getData" /> <dialog-show ref="dialogform" @ok="getData" />
<!-- 表格设置 --> <!-- 表格设置 -->
......
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
<el-form-item label="问卷封面:" label-width="125px"> <el-form-item label="问卷封面:" label-width="125px">
<div style="display: flex;align-items: center;"> <div style="display: flex;align-items: center;">
<img style="width:80px; height: 80px; margin-right: 10px;cursor: pointer;" <img style="width:80px; height: 80px; margin-right: 10px;cursor: pointer;"
v-for="(i, j) in coverImg" :key="j" :src="ImgUrl + '/' + i.url" alt="" v-for="(i, j) in coverImg" :key="j" :src="showImgUrl + '/' + i.url" alt=""
:class="selImg == j ? 'selImg' : ''" @click="selImg = j"> :class="selImg == j ? 'selImg' : ''" @click="selImg = j">
<el-upload v-show="coverImg.length < 4" :action="ImgUrl + '/attendance/file/commonupload'" <el-upload v-show="coverImg.length < 4" :action="ImgUrl + '/attendance/file/commonupload'"
accept="image/jpeg,image/png,image/jpg" list-type="picture-card" class="upload" accept="image/jpeg,image/png,image/jpg" list-type="picture-card" class="upload"
...@@ -185,6 +185,7 @@ export default { ...@@ -185,6 +185,7 @@ export default {
editStyle: false, editStyle: false,
loadingstate: false, loadingstate: false,
ImgUrl: process.env.VUE_APP_API_BASE_URL, ImgUrl: process.env.VUE_APP_API_BASE_URL,
showImgUrl:'',
coverImg: [], coverImg: [],
weblink: 0, weblink: 0,
...@@ -198,6 +199,13 @@ export default { ...@@ -198,6 +199,13 @@ export default {
} }
} }
}, },
created(){
if(process.env.NODE_ENV == "development"){
this.showImgUrl= process.env.VUE_APP_API_BASE_URL
}else{
this.showImgUrl=''
}
},
mounted() { mounted() {
console.log(process.env.VUE_APP_API_BASE_URL) console.log(process.env.VUE_APP_API_BASE_URL)
this.getDeptData() this.getDeptData()
......
<template> <template>
<!-- 弹出框表单 --> <!-- 弹出框表单 -->
<el-drawer <el-drawer
:title="title" :title="title"
:visible.sync="open" :visible.sync="open"
:direction="direction" :direction="direction"
size="50%"> size="50%"
<el-form ref="form" :model="form" :rules="rules" label-width="120px" style="padding:20px"> >
<el-row> <el-form
<Field v-if="from == 'job'" label="分组" prop="groupId" v-model="form.groupId" ref="form"
:enumData="dict.group" type="select" placeholder="请选择分组"/> :model="form"
:rules="rules"
label-width="120px"
style="padding:20px"
>
<el-row>
<Field
v-if="from == 'job'"
label="分组"
prop="groupId"
v-model="form.groupId"
:enumData="dict.group"
type="select"
placeholder="请选择分组"
/>
<Field label="分组名称" prop="groupName" v-model="form.groupName" placeholder="请输入分组名称" :maxLength="10" v-if="from == 'group'"/> <Field
label="分组名称"
prop="groupName"
v-model="form.groupName"
placeholder="请输入分组名称"
:maxLength="10"
v-if="from == 'group'"
/>
<Field label="职位编码" prop="jobCode" :maxLength="10" v-model="form.jobCode" placeholder="请输入职位编码" v-if="from == 'job'"/> <Field
<Field label="职位名称" prop="jobName" :maxLength="10" v-model="form.jobName" placeholder="请输入职位名称" v-if="from == 'job'" /> label="职位编码"
prop="jobCode"
:maxLength="10"
v-model="form.jobCode"
placeholder="请输入职位编码"
v-if="from == 'job'"
/>
<Field
label="职位名称"
prop="jobName"
:maxLength="10"
v-model="form.jobName"
placeholder="请输入职位名称"
v-if="from == 'job'"
/>
<Field label="类型" disabled prop="type" v-model="form.type" type="select" :enumData="dict.type" placeholder="请选择类型"/> <Field
<Field label="备注" prop="remark" :maxLength="50" v-model="form.remark" type="textarea" placeholder="请输入备注"/> label="类型"
</el-row> disabled
<form-buttons @submit='submitForm' noCancelBtn /> prop="type"
</el-form> v-model="form.type"
type="select"
</el-drawer> :enumData="dict.type"
placeholder="请选择类型"
/>
<Field
label="备注"
prop="remark"
:maxLength="50"
v-model="form.remark"
type="textarea"
placeholder="请输入备注"
/>
</el-row>
<form-buttons @submit="submitForm" noCancelBtn />
</el-form>
</el-drawer>
</template> </template>
<script> <script>
import form from "@/assets/mixins/formdialog"; import form from "@/assets/mixins/formdialog";
export default { export default {
name: "JobDetail", name: "JobDetail",
mixins: [form], mixins: [form],
components: { components: {},
created() {
}, this.changePath("job");
created() { },
this.changePath("job") data() {
}, return {
data() { // 遮罩层
return { loading: true,
// 遮罩层 // 弹出层标题
loading: true, title: "职位信息",
// 弹出层标题 // 是否显示弹出层
title: "职位信息", open: false,
// 是否显示弹出层 direction: "rtl",
open: false, toString: [],
direction:"rtl", toDate: [],
toString:[ // 表单校验
], rules: {
toDate:[ groupId: [{ required: true, message: "请选择分组", trigger: "change" }],
], },
// 表单校验 from: "",
rules: { };
}, },
from:''
};
},
methods: {
/** 编辑 */
edit(from,row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="job/edit";
this.getData();
this.pageInfo.type="edit"
this.from = from
this.title = from === 'group'?"修改分组信息":'修改职位信息'; methods: {
}, /** 编辑 */
/** 新增 */ edit(from, row) {
add(row) { this.reset();
console.log(row,'添加') this.query = { id: row.id };
this.from = row this.urls.currUrl = "job/edit";
this.title = row === 'group'?"新增分组信息":'新增职位信息'; this.getData();
this.reset() this.pageInfo.type = "edit";
this.urls.currUrl = "job/add"; this.from = from;
this.getData();
this.pageInfo.type="add"
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="job/view";
this.getData();
this.pageInfo.type="view"
this.title = "职位信息详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
// 固定新增类型 this.title = from === "group" ? "修改分组信息" : "修改职位信息";
if(this.from == 'group'){ },
this.form.type = '1' /** 新增 */
}else{ add(row) {
this.form.type = '2' console.log(row, "添加");
} this.from = row;
this.open = true; this.title = row === "group" ? "新增分组信息" : "新增职位信息";
}, this.reset();
afterSubmit(data) { this.urls.currUrl = "job/add";
this.open = false; this.getData();
this.$emit("ok"); this.pageInfo.type = "add";
}, },
/** 查看*/
view(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "job/view";
this.getData();
this.pageInfo.type = "view";
this.title = "职位信息详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
// 固定新增类型
if (this.from == "group") {
this.form.type = "1";
} else {
this.form.type = "2";
}
this.open = true;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置 // 表单重置
reset() { reset() {
this.form = { this.form = {
groupId : null, groupId: null,
groupName : "", groupName: "",
jobCode : "", jobCode: "",
jobName : "", jobName: "",
remark : "", remark: "",
}; };
this.resetForm("form"); this.resetForm("form");
}, },
resetForm(refName) { resetForm(refName) {
if (this.$refs[refName]) { if (this.$refs[refName]) {
this.$refs[refName].resetFields(); this.$refs[refName].resetFields();
} }
}, },
}, },
}; };
</script> </script>
...@@ -80,7 +80,7 @@ export default { ...@@ -80,7 +80,7 @@ export default {
name: '目标线', name: '目标线',
yAxis: this.markLine, yAxis: this.markLine,
label: { label: {
formatter: '{b}:'+this.legendName+'不高于20.0%,', formatter: '{b}:' + this.legendName + '不高于20.0%,',
position: 'insideStartTop' position: 'insideStartTop'
}, },
lineStyle: { lineStyle: {
...@@ -188,6 +188,10 @@ export default { ...@@ -188,6 +188,10 @@ export default {
] ]
}) })
} }
myChart.on('click', (params)=>{
this.$emit("click",params)
})
}, },
}, },
}; };
......
...@@ -9,17 +9,8 @@ ...@@ -9,17 +9,8 @@
<el-radio-button :label="2">按个人</el-radio-button> <el-radio-button :label="2">按个人</el-radio-button>
</el-radio-group> </el-radio-group>
<div class="search_box"> <div class="search_box">
<el-select <el-select v-model="boardQuery.month" placeholder="请选择" style="margin: 0 10px;">
v-model="boardQuery.month" <el-option v-for="item in optionsMonths" :key="item.value" :label="item.label" :value="item.value">
placeholder="请选择"
style="margin: 0 10px;"
>
<el-option
v-for="item in optionsMonths"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option> </el-option>
</el-select> </el-select>
<el-button type="primary">搜索</el-button> <el-button type="primary">搜索</el-button>
...@@ -28,60 +19,30 @@ ...@@ -28,60 +19,30 @@
<div class="mid"> <div class="mid">
<div class="mid_top"> <div class="mid_top">
<div class="jixiaozongfen"> <div class="jixiaozongfen">
<bar-charts <bar-charts :title="'绩效总分排名'" :id="'jixiaozongfen'" :legendName="'绩效总分'"
:title="'绩效总分排名'" :parameter="depStatObj.totalScore" :styleObj="{ width: '100%', height: '300px' }" />
:id="'jixiaozongfen'"
:legendName="'绩效总分'"
:parameter="depStatObj.totalScore"
:styleObj="{ width: '100%', height: '300px' }"
/>
</div> </div>
<div class="jixiaopingjunfen"> <div class="jixiaopingjunfen">
<line-charts <line-charts :title="'绩效平均分排名'" :id="'jixiaopingjunfen'" :parameter="depStatObj.averageScore"
:title="'绩效平均分排名'" :legendName="'绩效平均分'" :styleObj="{ width: '100%', height: '300px' }" />
:id="'jixiaopingjunfen'"
:parameter="depStatObj.averageScore"
:legendName="'绩效平均分'"
:styleObj="{ width: '100%', height: '300px' }"
/>
</div> </div>
</div> </div>
<div class="mid_down"> <div class="mid_down">
<div class="top_10 box"> <div class="top_10 box">
<bar-charts <bar-charts :title="'部门加分排名TOP10'" :id="'top_10'" :parameter="depStatObj.totalAddScore"
:title="'部门加分排名TOP10'" :legendName="'部门加分分值'" @click="rowClick" :styleObj="{ width: '100%', height: '300px' }" />
:id="'top_10'"
:parameter="depStatObj.totalAddScore"
:legendName="'部门加分分值'"
:styleObj="{ width: '100%', height: '300px' }"
/>
</div> </div>
<div class="jiafen box"> <div class="jiafen box">
<pie-charts <pie-charts :title="'部门加分整体分布'" :id="'jiafen'" :parameter="depStatObj.pieAddScore" :legendName="'部门加分'"
:title="'部门加分整体分布'" :styleObj="{ width: '100%', height: '300px' }" />
:id="'jiafen'"
:parameter="depStatObj.pieAddScore"
:legendName="'部门加分'"
:styleObj="{ width: '100%', height: '300px' }"
/>
</div> </div>
<div class="koufen_10 box"> <div class="koufen_10 box">
<bar-charts <bar-charts :title="'部门扣分排名TOP10'" :id="'koufen_10'" :parameter="depStatObj.totalSubScore"
:title="'部门扣分排名TOP10'" :legendName="'部门分值'" @click="rowClickSub" :styleObj="{ width: '100%', height: '300px' }" />
:id="'koufen_10'"
:parameter="depStatObj.totalSubScore"
:legendName="'部门分值'"
:styleObj="{ width: '100%', height: '300px' }"
/>
</div> </div>
<div class="koufen box"> <div class="koufen box">
<pie-charts <pie-charts :parameter="depStatObj.pieSubScore" :title="'部门扣分整体分布'" :id="'koufen'" :legendName="'部门扣分'"
:parameter="depStatObj.pieSubScore" :styleObj="{ onAssessmentScope2width: '100%', height: '300px' }" />
:title="'部门扣分整体分布'"
:id="'koufen'"
:legendName="'部门扣分'"
:styleObj="{ onAssessmentScope2width: '100%', height: '300px' }"
/>
</div> </div>
</div> </div>
</div> </div>
...@@ -96,41 +57,20 @@ ...@@ -96,41 +57,20 @@
</el-radio-group> </el-radio-group>
<div class="search_box"> <div class="search_box">
<el-select v-model="value" @change="deptList" placeholder="请选择"> <el-select v-model="value" @change="deptList" placeholder="请选择">
<el-option <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option> </el-option>
</el-select> </el-select>
<el-select <el-select @change="deptList" v-model="StatQuery.month" placeholder="请选择" style="margin: 0 10px;">
@change="deptList" <el-option v-for="item in optionsMonths" :key="item.value" :label="item.label" :value="item.value">
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-option>
</el-select> </el-select>
<el-button type="primary" @click="deptList">搜索</el-button> <el-button type="primary" @click="deptList">搜索</el-button>
</div> </div>
</div> </div>
<div class="bar_content"> <div class="bar_content">
<bar-charts <bar-charts :title="`${type1 == 1 ? '各部门' : '个人'}${StatQuery.month}月${alignmentName}对齐情况`" :id="'bar_content'"
:title="`${type1 == 1 ? '各部门' : '个人'}${StatQuery.month}月${alignmentName}对齐情况`" :legendName="alignmentName" :option="{ title: { left: 'center', textStyle: { fontSize: 24 } } }" :markLine="0.2"
:id="'bar_content'" :parameter="depStatObj.alignment" :styleObj="{ width: '1800px', height: '650px' }" />
:legendName="alignmentName"
:option="{title:{left:'center',textStyle:{fontSize:24}}}"
:markLine="0.2"
:parameter="depStatObj.alignment"
:styleObj="{ width: '1800px', height: '650px' }"
/>
</div> </div>
</div> </div>
</el-tab-pane> </el-tab-pane>
...@@ -142,48 +82,34 @@ ...@@ -142,48 +82,34 @@
<el-radio-button :label="2">按个人</el-radio-button> <el-radio-button :label="2">按个人</el-radio-button>
</el-radio-group> </el-radio-group>
<el-button type="primary" style="margin: 0 20px;" @click="addGoal"> <el-button type="primary" style="margin: 0 20px;" @click="addGoal">
+ 创建目标</el-button + 创建目标</el-button>
>
</div> </div>
<div class="mid_content" style="height: auto;"> <div class="mid_content" style="height: auto;">
<div class="goal_box" v-for="(val, i) in dataList" :key="i"> <div class="goal_box" v-for="(val, i) in dataList" :key="i">
<div class="goal_title"> <div class="goal_title">
<img src="../../../../assets/images/u17641.svg" alt="" /> <img src="../../../../assets/images/u17641.svg" alt="" />
<span> <span>
{{dictString('assessmentType',val.assessmentType)}}{{dictString('compareScope',val.compareScope)}}{{val.ratio}}% {{ dictString('assessmentType', val.assessmentType) }}{{ dictString('compareScope', val.compareScope) }}{{ val.ratio }}%
</span> </span>
</div> </div>
<p class="goal_txt"> <p class="goal_txt">
<span>{{ type2 == 1 ? "目标部门:" : "目标个人:" }}</span <span>{{ type2 == 1 ? "目标部门:" : "目标个人:" }}</span><span>{{
><span>{{
type2 == 1 ? val.deptPerpose : val.staffPerpose type2 == 1 ? val.deptPerpose : val.staffPerpose
}}</span> }}</span>
</p> </p>
<p class="goal_txt"> <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>
<p class="goal_txt"> <p class="goal_txt">
<span>负责人:</span><span>{{val.leaders}}</span> <span>负责人:</span><span>{{ val.leaders }}</span>
</p> </p>
<p class="goal_txt"> <p class="goal_txt">
<span>最近更新:</span><span>{{val.updateTime}}</span> <span>最近更新:</span><span>{{ val.updateTime }}</span>
</p> </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"> <div class="button_box">
<el-button <el-button type="primary" style="width: 150px;" plain @click="hanleEdit(val)">编辑</el-button>
type="primary" <el-button type="danger" style="width: 150px;" plain @click="hanleDel(val)">删除</el-button>
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> </div>
</div> </div>
...@@ -217,10 +143,10 @@ export default { ...@@ -217,10 +143,10 @@ export default {
}, },
methods: { methods: {
// 个人绩效分数统计 // 个人绩效分数统计
staffStatList(){ staffStatList() {
this.$post("/staff/perform/stat/list", this.boardQuery).then((res) => { this.$post("/staff/perform/stat/list", this.boardQuery).then((res) => {
const {code,data,dict} = res const { code, data, dict } = res
if(code == 1){ if (code == 1) {
const row = data.data || [] const row = data.data || []
// this.statArr = row // this.statArr = row
const x = [] const x = []
...@@ -234,10 +160,10 @@ export default { ...@@ -234,10 +160,10 @@ export default {
} }
}); });
// 加分top10 // 加分top10
const top10 = {...this.boardQuery,size:10} const top10 = { ...this.boardQuery, size: 10 }
this.$post("/staff/perform/stat/list", top10).then((res) => { this.$post("/staff/perform/stat/list", top10).then((res) => {
const {code,data,dict} = res const { code, data, dict } = res
if(code == 1){ if (code == 1) {
const row = data.data || [] const row = data.data || []
// this.statArr = row // this.statArr = row
const x = [] const x = []
...@@ -251,10 +177,10 @@ export default { ...@@ -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) => { this.$post("/staff/perform/stat/list", top10Sub).then((res) => {
const {code,data,dict} = res const { code, data, dict } = res
if(code == 1){ if (code == 1) {
const row = data.data || [] const row = data.data || []
// this.statArr = row // this.statArr = row
const x = [] const x = []
...@@ -269,10 +195,10 @@ export default { ...@@ -269,10 +195,10 @@ export default {
}); });
}, },
// 部门绩效分数统计 // 部门绩效分数统计
statList(){ statList() {
this.$post("/dept/perform/stat/list",this.boardQuery).then((res) => { this.$post("/dept/perform/stat/list", this.boardQuery).then((res) => {
const {code,data,dict} = res const { code, data, dict } = res
if(code == 1){ if (code == 1) {
const row = data.data || [] const row = data.data || []
// this.statArr = row // this.statArr = row
const x = [] const x = []
...@@ -292,10 +218,10 @@ export default { ...@@ -292,10 +218,10 @@ export default {
} }
}); });
// 加分top10 // 加分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) => { this.$post("/dept/perform/stat/list", top10).then((res) => {
const {code,data,dict} = res const { code, data, dict } = res
if(code == 1){ if (code == 1) {
const row = data.data || [] const row = data.data || []
// this.statArr = row // this.statArr = row
const x = [] const x = []
...@@ -306,14 +232,14 @@ export default { ...@@ -306,14 +232,14 @@ export default {
}); });
this.depStatObj.totalAddScore.x = x this.depStatObj.totalAddScore.x = x
this.depStatObj.totalAddScore.y = y 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) => { this.$post("/dept/perform/stat/list", top10Sub).then((res) => {
const {code,data,dict} = res const { code, data, dict } = res
if(code == 1){ if (code == 1) {
const row = data.data || [] const row = data.data || []
// this.statArr = row // this.statArr = row
const x = [] const x = []
...@@ -328,10 +254,10 @@ export default { ...@@ -328,10 +254,10 @@ export default {
}); });
}, },
// 部门目标对齐 // 部门目标对齐
deptList(){ deptList() {
this.$post("/perform/perpose/dept/stat/list", this.StatQuery).then((res) => { this.$post("/perform/perpose/dept/stat/list", this.StatQuery).then((res) => {
const {code,data,dict} = res const { code, data, dict } = res
if(code == 1){ if (code == 1) {
const row = data.data || [] const row = data.data || []
const x = [] const x = []
const y = [] const y = []
...@@ -345,10 +271,10 @@ export default { ...@@ -345,10 +271,10 @@ export default {
}); });
}, },
// 个人对齐方式 // 个人对齐方式
staffList(){ staffList() {
this.$post("/perform/perpose/staff/stat/list", this.StatQuery).then((res) => { this.$post("/perform/perpose/staff/stat/list", this.StatQuery).then((res) => {
const {code,data,dict} = res const { code, data, dict } = res
if(code == 1){ if (code == 1) {
const row = data.data || [] const row = data.data || []
const x = [] const x = []
const y = [] const y = []
...@@ -379,9 +305,9 @@ export default { ...@@ -379,9 +305,9 @@ export default {
}, },
// 目标管理 // 目标管理
getData() { getData() {
this.$post("/perform/perpose/list",this.query).then((res) => { this.$post("/perform/perpose/list", this.query).then((res) => {
console.log(res,"@@@@@@@@@@@@"); console.log(res, "@@@@@@@@@@@@");
const {code,data,dict} = res const { code, data, dict } = res
this.dict = dict || {} this.dict = dict || {}
if (code == 1) { if (code == 1) {
this.dataList = data.data; this.dataList = data.data;
...@@ -391,39 +317,64 @@ export default { ...@@ -391,39 +317,64 @@ export default {
}); });
}, },
// 字典转换 // 字典转换
dictString(key,id){ dictString(key, id) {
const keyName = this.dict[key] const keyName = this.dict[key]
return keyName?keyName[id]:"" return keyName ? keyName[id] : ""
}, },
// TAB个人/法人 // TAB个人/法人
onAssessmentScope(v){ onAssessmentScope(v) {
if(v == 1){ if (v == 1) {
this.statList() this.statList()
}else{ } else {
this.staffStatList() this.staffStatList()
} }
}, },
// 目标看齐 // 目标看齐
onAssessmentScope1(v){ onAssessmentScope1(v) {
if(v == 1){ if (v == 1) {
this.deptList() this.deptList()
}else{ } else {
this.staffList() this.staffList()
} }
}, },
onAssessmentScope2(v){ onAssessmentScope2(v) {
if(v == 1){ if (v == 1) {
this.query.assessmentScope = 1 this.query.assessmentScope = 1
}else{ } else {
this.query.assessmentScope = 2 this.query.assessmentScope = 2
} }
this.getData() 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: { computed: {
alignmentName:function(){ alignmentName: function () {
const obj = this.options.find(v=>v.value == this.value) const obj = this.options.find(v => v.value == this.value)
return obj.label return obj.label
} }
}, },
...@@ -528,63 +479,63 @@ export default { ...@@ -528,63 +479,63 @@ export default {
], ],
value: "lateRate",//默认显示迟到类型 value: "lateRate",//默认显示迟到类型
dataList: [], dataList: [],
depStatObj:{ depStatObj: {
totalScore:{ totalScore: {
x:[], x: [],
y:[] y: []
},//绩效总分排名 },//绩效总分排名
averageScore:{ averageScore: {
x:[], x: [],
y:[] y: []
},//绩效平均排名 },//绩效平均排名
totalAddScore:{ totalAddScore: {
x:[], x: [],
y:[] y: []
},//加分 },//加分
totalSubScore:{ totalSubScore: {
x:[], x: [],
y:[] y: []
},//减分 },//减分
alignment:{ alignment: {
x:[], x: [],
y:[] y: []
},//目标对齐 },//目标对齐
pieAddScore:[ pieAddScore: [
{value:0,name:'考勤绩效'}, { value: 0, name: '考勤绩效' },
{value:0,name:'评价绩效'}, { value: 0, name: '评价绩效' },
{value:0,name:'办件绩效'}, { value: 0, name: '办件绩效' },
{value:0,name:'效能绩效'}, { value: 0, name: '效能绩效' },
{value:0,name:'投诉绩效'}, { value: 0, name: '投诉绩效' },
{value:0,name:'其它绩效'}, { value: 0, name: '其它绩效' },
],//部门加分分布 ],//部门加分分布
pieSubScore:[ pieSubScore: [
{value:0,name:'考勤绩效'}, { value: 0, name: '考勤绩效' },
{value:0,name:'评价绩效'}, { value: 0, name: '评价绩效' },
{value:0,name:'办件绩效'}, { value: 0, name: '办件绩效' },
{value:0,name:'效能绩效'}, { value: 0, name: '效能绩效' },
{value:0,name:'投诉绩效'}, { value: 0, name: '投诉绩效' },
{value:0,name:'其它绩效'}, { value: 0, name: '其它绩效' },
]//部门减分分布 ]//部门减分分布
},//按部门 },//按部门
month:"",//月份 month: "",//月份
boardQuery:{ boardQuery: {
page:1, page: 1,
size:-1, size: -1,
year:parseInt(moment().format('YYYY')), year: parseInt(moment().format('YYYY')),
month:parseInt(moment().format('MM')), month: parseInt(moment().format('MM')),
},//看板查询条件 },//看板查询条件
query:{ query: {
page:1, page: 1,
size:-1, size: -1,
assessmentScope:1//考核范围(1.部门,2.个人) assessmentScope: 1//考核范围(1.部门,2.个人)
},//目标管理查询条件 },//目标管理查询条件
StatQuery:{ StatQuery: {
page:1, page: 1,
size:-1, size: -1,
year:parseInt(moment().format('YYYY')), year: parseInt(moment().format('YYYY')),
month:parseInt(moment().format('MM')), month: parseInt(moment().format('MM')),
},//对齐方式入参 },//对齐方式入参
dict:{}//字典 dict: {}//字典
}; };
}, },
}; };
...@@ -594,55 +545,66 @@ export default { ...@@ -594,55 +545,66 @@ export default {
width: 100%; width: 100%;
height: 100%; height: 100%;
overflow: hidden; overflow: hidden;
/deep/.el-tabs__item { /deep/.el-tabs__item {
width: 120px; width: 120px;
font-size: 14px; font-size: 14px;
text-align: center; text-align: center;
} }
.content { .content {
width: 100%; width: 100%;
height: 100%; height: 100%;
.search_top { .search_top {
width: 100%; width: 100%;
height: 1000%; height: 1000%;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
} }
/deep/.el-radio-button { /deep/.el-radio-button {
width: 150px; width: 150px;
text-align: center; text-align: center;
border: 1px solid #eee; border: 1px solid #eee;
} }
/deep/.el-radio-button__inner { /deep/.el-radio-button__inner {
width: 150px; 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; width: 150px;
border: none; border: none;
background: #1890ff; background: #1890ff;
color: #fff; color: #fff;
border: 1px solid #eee; border: 1px solid #eee;
} }
.top { .top {
width: 100%; width: 100%;
height: 60px; height: 60px;
} }
.mid { .mid {
width: 100%; width: 100%;
height: 100%; height: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
.mid_top { .mid_top {
width: 100%; width: 100%;
height: 300px; height: 300px;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
.jixiaozongfen, .jixiaozongfen,
.jixiaopingjunfen { .jixiaopingjunfen {
width: 48%; width: 48%;
height: 100%; height: 100%;
} }
} }
.mid_down { .mid_down {
width: 100%; width: 100%;
height: 380px; height: 380px;
...@@ -656,16 +618,19 @@ export default { ...@@ -656,16 +618,19 @@ export default {
} }
} }
} }
.mid_content, .mid_content,
.bar_content { .bar_content {
width: 100%; width: 100%;
height: 700px; height: 700px;
overflow: hidden; overflow: hidden;
} }
.mid_content { .mid_content {
overflow-y: auto; overflow-y: auto;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
.goal_box { .goal_box {
width: 405px; width: 405px;
height: 238px; height: 238px;
...@@ -678,14 +643,17 @@ export default { ...@@ -678,14 +643,17 @@ export default {
-webkit-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.117647058823529); -webkit-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.117647058823529);
margin: 10px 20px 20px 10px; margin: 10px 20px 20px 10px;
padding: 20px; padding: 20px;
.goal_title { .goal_title {
width: 100%; width: 100%;
display: flex; display: flex;
align-items: center; align-items: center;
img { img {
margin-right: 10px; margin-right: 10px;
} }
} }
.goal_txt { .goal_txt {
font-family: "微软雅黑", sans-serif; font-family: "微软雅黑", sans-serif;
font-weight: 400; font-weight: 400;
...@@ -695,6 +663,7 @@ export default { ...@@ -695,6 +663,7 @@ export default {
width: 100%; width: 100%;
margin: 10px 0; margin: 10px 0;
} }
.button_box { .button_box {
width: 100%; width: 100%;
display: flex; display: flex;
......
<template> <template>
<div class="page"> <div class="page">
<LayoutTable :data="tableData" notAdd notDel :config="tableConfig"> <LayoutTable :data="tableData" notAdd notDel :config="tableConfig">
<el-button <el-button slot="table-head-left2" style="margin-left: 10px" icon="el-icon-tickets" size="mini" @click="doExport"
slot="table-head-left2" :disabled="isExport">导出</el-button>
style="margin-left: 10px"
icon="el-icon-tickets"
size="mini"
@click="doExport"
:disabled="isExport"
>导出</el-button
>
</LayoutTable> </LayoutTable>
<dialog-show ref="dialogform" @ok="getData" /> <dialog-show ref="dialogform" @ok="getData" />
...@@ -26,7 +19,7 @@ export default { ...@@ -26,7 +19,7 @@ export default {
dialogShow, dialogShow,
}, },
mixins: [table], mixins: [table],
created() {}, created() { },
methods: { methods: {
/** 导出Excel */ /** 导出Excel */
doExport() { doExport() {
......
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