绩效考核PC端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

565 lines
22 KiB

<template>
<el-dialog :close-on-click-modal="false" :visible.sync="tableAddDetailsBoxes" :before-close="closeTableAddBox" title="新增指标细则" custom-class="dialogBox" append-to-body width="80%" top="15vh">
<el-row>
<el-col :span="24">
<el-button
icon="el-icon-circle-plus-outline"
type="primary"
@click="addTablePostDetailsCont()"
>添加细则</el-button>
</el-col>
</el-row>
<el-table ref="detailsPostTablees" :data="addDetailsInfoList" style="width: 100%" empty-text="">
<el-table-column
fixed
label="考核内容"
width="150">
<template slot-scope="scope">
<el-input
type="textarea"
autosize
placeholder="请输入考核内容"
v-model="scope.row.title">
</el-input>
</template>
</el-table-column>
<el-table-column
align="center"
label="操作属性"
width="110">
<template slot-scope="scope">
<el-select v-model="scope.row.punishtype" placeholder="请选择">
<el-option label="分数" :value=1></el-option>
<el-option label="现金" :value=2></el-option>
<el-option label="分数和现金" :value=3></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column
label="考核标准"
width="150">
<template slot-scope="scope">
<el-input
autosize
placeholder="请输入考核标准"
v-model="scope.row.standard">
</el-input>
</template>
</el-table-column>
<el-table-column
align="center"
label="单位"
width="80">
<template slot-scope="scope">
<el-input
autosize
placeholder="单位"
v-model="scope.row.unit">
</el-input>
</template>
</el-table-column>
<el-table-column
label="现金标准"
width="150">
<template slot-scope="scope">
<el-input
autosize
placeholder="请输入现金标准"
v-model="scope.row.cashstandard">
</el-input>
</template>
</el-table-column>
<el-table-column
align="center"
label="操作类型"
width="130">
<template slot-scope="scope">
<el-select v-model="scope.row.types" placeholder="请选择">
<el-option label="扣除" :value=1></el-option>
<el-option label="增加" :value=2></el-option>
<el-option label="现场确认扣除/增加" :value=3></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column
align="center"
label="检查方式"
width="140">
<template slot-scope="scope">
<el-select multiple v-model="scope.row.inspemethod" placeholder="请选择">
<el-option label="现场检查" :value=1></el-option>
<el-option label="资料审查" :value=2></el-option>
<el-option label="事件触发" :value=3></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column
align="center"
label="检查周期"
width="110">
<template slot-scope="scope">
<el-select v-model="scope.row.cycle" placeholder="请选择">
<el-option
v-for="item in optionsclye"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</template>
</el-table-column>
<el-table-column
align="center"
label="检查频次"
width="120">
<template slot-scope="scope">
<el-input-number v-model="scope.row.frequency" :min="1" :max="12" label="检查频次" controls-position="right" style="width:100px"></el-input-number>
</template>
</el-table-column>
<el-table-column
label="检查依据"
width="180">
<template slot-scope="scope">
<el-input
type="textarea"
autosize
placeholder="请输入检查依据"
v-model="scope.row.evidence">
</el-input>
</template>
</el-table-column>
<el-table-column
prop="remarks"
label="备注说明"
width="180">
<template slot-scope="scope">
<el-input
type="textarea"
autosize
placeholder="请输入备注说明"
v-model="scope.row.remarks">
</el-input>
</template>
</el-table-column>
<el-table-column
prop="postandexport"
align="center"
fixed="right"
label="设置岗位及提报人"
width="140">
<template slot-scope="scope">
<el-button type="primary" icon="el-icon-s-tools" size="small" @click="setTablePostAndReport(scope)">设置</el-button>
</template>
</el-table-column>
<el-table-column
fixed="right"
align="center"
label="操作"
width="100">
<template #default="scope">
<el-button
icon="el-icon-delete"
size="mini"
type="danger"
@click="deleteRulesTableList(scope)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<template #footer>
<div class="dialog-footer">
<el-button size="small" @click="closeTableAddBox">取 消</el-button>
<el-button size="small" type="primary" @click="addTableDetails" :loading="butLoadings">确 定</el-button>
</div>
</template>
<!--设置岗位及提报人-->
<el-dialog :close-on-click-modal="false" :visible.sync="setDialogPostManBox" :before-close="closeSetPostAndReportBoxes" title="设置岗位及提报人" custom-class="dialogBox" append-to-body width="50%" top="25vh">
<el-table
ref="setPostManTables"
:data="orgPostList"
style="width: 100%"
@selection-change="handleSelectionChangees">
<el-table-column
label="已关联"
type="selection"
width="55">
</el-table-column>
<el-table-column
prop="date"
label="关联岗位"
>
<template slot-scope="scope">
<el-input v-model="scope.row.name"></el-input>
</template>
</el-table-column>
<el-table-column
prop="name"
label="提报人"
>
<template slot-scope="scope">
<el-cascader
filterable
clearable
v-model="scope.row.keylist"
:options="scope.row.child"
:show-all-levels="false"
:props="userProps"
collapse-tags
>
<template slot-scope="{ node, data }">
<span>{{ data.name }}</span>
<span v-if="node.isLeaf"> ({{ data.number }}) </span>
</template>
</el-cascader>
</template>
</el-table-column>
</el-table>
<template #footer>
<div class="dialog-footer">
<el-row>
<el-col :span="3"><el-button type="warning" size="small" @click="clearAllSetTable">全部取消</el-button></el-col>
<el-col :span="21">
<el-button size="small" @click="closeSetPostAndReportBoxes">取 消</el-button>
<el-button size="small" type="primary" @click="setIsTruePostManEs" :loading="butLoadings"> </el-button>
</el-col>
</el-row>
</div>
</template>
</el-dialog>
</el-dialog>
</template>
<script>
import { getNewTargetDepartPostMan,addTableDetailsList } from "@/api/systemaccredit/systemapi";
export default {
props:['tableAddDetailsBox','tableToTargetid','tableToid','targetPostMakList','targetunit'],
data() {
return {
butLoadings:false, //按钮是否加载Loading
tableAddDetailsBoxes:this.tableAddDetailsBox,
targetId:this.tableToTargetid,
tableId:this.tableToid,
orgPostList:this.targetPostMakList,
addDetailsInfoList:[], //细则列表
// 选择员工配置项
userProps: {
value: "id",
label: "name",
children: "govlist",
emitPath:false,
multiple: true
},
//统计周期
optionsclye: [
{
value: 4,
label: '月'
}, {
value: 5,
label: '季度'
}, {
value: 6,
label: '年'
}
],
setDialogPostManBox:false,
multipleSelectiontable:[], //选中的列表
listIndex:"", //表单编号
}
},
created(){
},
watch:{
tableAddDetailsBox(){
this.tableAddDetailsBoxes = this.tableAddDetailsBox
},
tableToTargetid(){
this.targetId = this.tableToTargetid
},
tableToid(){
this.tableId = this.tableToid
this.addTablePostDetailsCont()
},
targetPostMakList:{
handler(newVal){
// console.log("newVal");
// console.log("newVal------------>",newVal);
// this.orgPostList = this.targetPostMakList
// console.log("newVal-----222------->",this.targetPostMakList);
},
deep: true
},
},
methods:{
//处理细则列表
addTablePostDetailsCont(){
let detailsInfo = {
title:"", //考核内容
punishtype:1, //1:分数;2:现金;3:分数加现金
standard:"", //考核标准
unit:this.targetunit,
cashstandard:"", //现金考核标准
types:1, //操作种类1:加分;2:减分;3:加减分
inspemethod:[1], //检查方式
cycle:4, //周期
frequency:"", //检查频次
evidence:"", //客观证据
remarks:"", //备注说明
postandexport:[], //相关岗位及提报人
}
this.addDetailsInfoList.push(detailsInfo);
},
//关闭
closeTableAddBox(){
this.tableAddDetailsBoxes = false;
// this.$refs.setPostManTables.clearSelection();
this.$emit('closeTableAddBox');
this.addDetailsInfoList = [];
},
//色织关联人
async setTablePostAndReport(val){
this.setDialogPostManBox = true;
this.listIndex = val.$index
// this.getOrgPostLists()
let sendData = {
id:this.targetId.toString()
}
const res = await getNewTargetDepartPostMan(sendData)
this.orgPostList =res.data.organdpostlist
if(val.row.postandexport != null && val.row.postandexport.length > 0){
// val.row.postandexport.forEach(item=>{
// this.$refs.setPostManTables.toggleRowSelection(item, true);
// })
this.orgPostList.forEach((item,indx) =>{
val.row.postandexport.forEach(items=>{
if(item.id == items.id && item.orgid == items.orgid){
console.log("色织关联人---------0--------->",item,indx)
item.keylist = items.keylist
this.$nextTick(() => {
this.$refs.setPostManTables.toggleRowSelection(item, true)
})
}
})
})
}else{
this.$nextTick(() => {
for (let i = 0; i < this.orgPostList.length; i++) {
this.$refs.setPostManTables.toggleRowSelection(this.orgPostList[i], true)
}
})
}
console.log("色织关联人---------1--------->",this.listIndex)
console.log("色织关联人---------2--------->",val.row.postandexport)
console.log("色织关联人---------3--------->",this.orgPostList)
console.log("色织关联人---------4--------->",val.row)
},
//在列表中删除细则
deleteRulesTableList(row){
if(this.addDetailsInfoList.length - 1 > 0){
this.addDetailsInfoList.splice(row.$index,1);
}else{
this.$alert('<strong>至少要有一条细则内容!</strong>!</strong>', '温馨提示!', {
confirmButtonText: '确定',
type: 'warning',
center: true,
dangerouslyUseHTMLString: true
})
}
},
//关闭设置提报人弹窗
closeSetPostAndReportBoxes(){
this.setDialogPostManBox = false;
this.butLoadings= false;
this.clearAllSetTable();
this.multipleSelectiontable = [];
},
//确定提报人
setIsTruePostManEs(){
if(this.multipleSelectiontable != null && this.multipleSelectiontable.length >0){
let isShouw = true;
this.multipleSelectiontable.forEach(item=>{
if(item.keylist == null || item.keylist.length < 1){
this.$alert('<strong>请检查您选中的岗位,存在未选择提报人的选项!!</strong>!</strong>', '温馨提示!', {
confirmButtonText: '确定',
type: 'warning',
center: true,
dangerouslyUseHTMLString: true
})
isShouw = false;
return false;
}
})
if(!isShouw){
return false;
}
}else{
this.$alert('<strong>至少要关联一个岗位!</strong>!</strong>!</strong>', '温馨提示!', {
confirmButtonText: '确定',
type: 'warning',
center: true,
dangerouslyUseHTMLString: true
})
return false;
}
// this.$refs.setPostManTable
// console.log("选中内容--111111---->",this.multipleSelectiontable,this.addDetailsInfoList[this.listIndex])
this.addDetailsInfoList[this.listIndex].postandexport = this.multipleSelectiontable
// console.log("选中内容--22222---->",this.multipleSelectiontable,this.addDetailsInfoList)
this.closeSetPostAndReportBoxes()
},
//获取选中的数据
handleSelectionChangees(val){
this.multipleSelectiontable = val;
},
//全部取消
clearAllSetTable(){
this.$refs.setPostManTables.clearSelection();
},
//提交添加数据
async addTableDetails(){
console.log("提交添加数据---->",this.addDetailsInfoList)
this.butLoadings= true
if(this.addDetailsInfoList == null || this.addDetailsInfoList.length <1){
this.$alert('<strong>请您至少添加一条考核细则内容</strong>', '温馨提示', {
confirmButtonText: '确定',
type: 'warning',
center: true,
dangerouslyUseHTMLString: true
})
this.butLoadings= false
return false;
}
let nextWriterIsTrue = true;
this.addDetailsInfoList.forEach(item=>{
if(item.title == null || item.title == ""){
nextWriterIsTrue = false;
// console.log("1----------------->")
}
switch (item.punishtype){
case 2:
if(item.cashstandard == null || item.cashstandard == ""){
nextWriterIsTrue = false;
// console.log("5-----1------------>")
}
break;
case 3:
if(item.standard == null || item.standard == ""){
nextWriterIsTrue = false;
// console.log("5-----3------------>")
}
if(item.cashstandard == null || item.cashstandard == ""){
nextWriterIsTrue = false;
// console.log("5-----2------------>")
}
break;
default:
if(item.standard == null || item.standard == ""){
nextWriterIsTrue = false;
// console.log("5-----4------------>")
}
break;
}
if(item.unit == null || item.unit == ""){
nextWriterIsTrue = false;
// console.log("2----------------->")
}
if(item.types == null || item.types == "" || item.types == 0){
nextWriterIsTrue = false;
// console.log("3----------------->")
}
if(item.inspemethod == null || item.inspemethod.length <1){
nextWriterIsTrue = false;
// console.log("4----------------->")
}else{
item.inspemethod = item.inspemethod.map(String)
}
// if(item.postandexport == null || item.postandexport.length < 1){
// nextWriterIsTrue = false;
// // console.log("5----------------->")
// }
});
if(!nextWriterIsTrue){
this.$alert('<strong>至少一条考核细则内容填写不符合规范请检查并补充完成后重新提交</strong>', '温馨提示', {
confirmButtonText: '确定',
type: 'warning',
center: true,
dangerouslyUseHTMLString: true
})
this.butLoadings= false
return false;
}
let sendData = {
targetid:this.targetId.toString(),
tableid:this.tableId.toString(),
detailslist:this.addDetailsInfoList
}
const res = await addTableDetailsList(sendData)
console.log("提交添加数据--1-->",sendData,res)
if(res.code == 0){
this.$message({
showClose: true,
message: res.msg,
type: 'success'
});
// this.getTargetPostDetailsList();
this.$emit('getTargetPostDetailsList');
this.closeTableAddBox();
this.butLoadings= false
}else{
this.butLoadings= false
}
},
//获取岗位与相关行政组织
async getOrgPostLists(){
let sendData = {
id:this.targetId.toString()
}
const res = await getNewTargetDepartPostMan(sendData)
if(res.code ==0){
this.orgPostList = res.data.organdpostlist
}
},
}
}
</script>
<style>
</style>