考核任务》 添加/删除被考核对象

main
wanglei 1 month ago
parent f5dcab9caf
commit 915df86316

@ -108,17 +108,39 @@
v-hasPermi="['system:user:list']" v-hasPermi="['system:user:list']"
>多任务评分账号查看</el-button> >多任务评分账号查看</el-button>
</el-col> </el-col>
<!-- <el-col :span="2.5">
<el-button
type="primary"
plain
icon="el-icon-circle-plus-outline"
size="mini"
:disabled="single"
@click="bkhdxAddFun"
v-hasPermi="['kaohe:pingce:edit']"
>被考核对象添加</el-button>
</el-col>
<el-col :span="2.5">
<el-button
type="danger"
plain
icon="el-icon-remove-outline"
size="mini"
:disabled="single"
@click="bkhdxDelFun"
v-hasPermi="['kaohe:pingce:edit']"
>被考核对象删除</el-button>
</el-col>-->
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
<el-table v-loading="loading" :data="pingceList" @selection-change="handleSelectionChange"> <el-table border v-loading="loading" :data="pingceList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" fixed/> <el-table-column type="selection" width="55" align="center"/>
<!-- <el-table-column label="主键" align="center" prop="id" />--> <!-- <el-table-column label="主键" align="center" prop="id" />-->
<el-table-column label="考核任务名称" align="center" prop="pcTitle" /> <el-table-column label="考核任务名称" align="center" prop="pcTitle" />
<el-table-column label="考核任务描述" align="center" prop="pcDescription" /> <el-table-column label="考核任务描述" align="center" prop="pcDescription" />
<el-table-column label="模板名称" align="center" prop="templateName" /> <el-table-column label="模板名称" align="center" prop="templateName" />
<el-table-column label="创建时间" align="center" prop="createTime" min-width="110"/> <el-table-column label="创建时间" align="center" prop="createTime" width="160"/>
<el-table-column label="考核任务状态" align="center" prop="state"> <el-table-column label="考核任务状态" align="center" prop="state" width="110">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.kh_state" :value="scope.row.state"/> <dict-tag :options="dict.type.kh_state" :value="scope.row.state"/>
</template> </template>
@ -172,6 +194,15 @@
@click="viewUser(scope.row)" @click="viewUser(scope.row)"
>查看评分账号 >查看评分账号
</el-button> </el-button>
<el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['kaohe:pingce:edit']">
<el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="bkhdxAddFun" icon="el-icon-plus" v-hasPermi="['kaohe:pingce:edit']"></el-dropdown-item>
<el-dropdown-item command="bkhdxDelFun" icon="el-icon-delete" v-hasPermi="['kaohe:pingce:edit']"></el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -302,10 +333,10 @@
<el-table :data="emp.selectList" style="width: 100%" border max-height="500"> <el-table :data="emp.selectList" style="width: 100%" border max-height="500">
<el-table-column label="操作" width="50" fixed align="center"> <el-table-column label="操作" width="50" fixed align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<i class="el-icon-remove-outline" style="font-size: 20px;color:#F56C6C;" @click="selectListDel(scope.row,scope.$index)"></i> <i v-if="!scope.row.disabled" class="el-icon-remove-outline" style="font-size: 20px;color:#F56C6C;"
@click="selectListDel(scope.row,scope.$index)"></i>
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column label="主键" align="center" prop="id" />-->
<el-table-column label="工号" align="center" prop="wordId"/> <el-table-column label="工号" align="center" prop="wordId"/>
<el-table-column label="部门名称" align="center" prop="deptName" :show-overflow-tooltip="true" min-width="100"/> <el-table-column label="部门名称" align="center" prop="deptName" :show-overflow-tooltip="true" min-width="100"/>
<el-table-column label="职工姓名" align="center" prop="empName" :show-overflow-tooltip="true" min-width="100"/> <el-table-column label="职工姓名" align="center" prop="empName" :show-overflow-tooltip="true" min-width="100"/>
@ -323,10 +354,10 @@
clearable clearable
size="small" size="small"
prefix-icon="el-icon-search" prefix-icon="el-icon-search"
style="margin-bottom: 20px" style="margin-bottom: 10px"
/> />
</div> </div>
<div class="head-container"> <div class="head-container" style="max-height: 490px;overflow: auto;border: 1px solid #eee;">
<el-tree <el-tree
:data="deptOptions" :data="deptOptions"
:props="defaultProps" :props="defaultProps"
@ -355,7 +386,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table border ref="empTable" v-loading="emp.loading" :data="emp.list" @select="empSelect" @select-all="empSelectAll"> <el-table border ref="empTable" v-loading="emp.loading" :data="emp.list" @select="empSelect" @select-all="empSelectAll">
<el-table-column type="selection" width="50" align="center" /> <el-table-column type="selection" width="50" align="center" :selectable="empSelectable"/>
<el-table-column label="工号" align="center" prop="wordId"/> <el-table-column label="工号" align="center" prop="wordId"/>
<el-table-column label="部门名称" align="center" prop="deptName" :show-overflow-tooltip="true" min-width="100"/> <el-table-column label="部门名称" align="center" prop="deptName" :show-overflow-tooltip="true" min-width="100"/>
<el-table-column label="职工姓名" align="center" prop="empName" :show-overflow-tooltip="true" min-width="100"/> <el-table-column label="职工姓名" align="center" prop="empName" :show-overflow-tooltip="true" min-width="100"/>
@ -688,11 +719,88 @@
</div> </div>
</el-dialog> </el-dialog>
<!-- 被考核对象添加对话框 -->
<el-dialog title="被考核对象添加" :visible.sync="bkhdxAdd.open" width="800px" append-to-body :close-on-click-modal="false">
<el-form ref="bkhdxForm" :model="bkhdxAdd.form" label-width="110px">
<el-form-item label="考核任务名称" prop="pcTitle">
<el-input v-model="bkhdxAdd.form.pcTitle" placeholder="请输入考核任务名称" :disabled="true"/>
</el-form-item>
<el-form-item label="被考核对象" v-if="bkhdxAdd.form.bkhdxType==='1'">
<el-button type="primary" @click="selectEmp" size="mini">选择职工</el-button>
<el-table :data="bkhdxAdd.form_bkh_zg" style="width: 100%; margin-top: 10px" border max-height="500">
<el-table-column label="操作" width="100" fixed align="center">
<template slot-scope="scope">
<i v-if="!scope.row.disabled" class="el-icon-remove-outline" style="font-size: 20px;color:#F56C6C;" @click="delEmpList(scope.row,scope.$index)"></i>
</template>
</el-table-column>
<el-table-column label="工号" align="center" prop="wordId"/>
<el-table-column label="部门名称" align="center" prop="deptName" :show-overflow-tooltip="true" min-width="100"/>
<el-table-column label="职工姓名" align="center" prop="empName" :show-overflow-tooltip="true" min-width="100"/>
<el-table-column label="身份" align="center" prop="position" />
</el-table>
</el-form-item>
<el-form-item label="被考核对象" v-if="bkhdxAdd.form.bkhdxType==='0'">
<el-checkbox v-model="bkhdxAdd.deptExpand" :disabled="bkhdxAdd.form.state!=='0'" @change="handleCheckedTreeExpand($event, 'bkhdxDept')">/</el-checkbox>
<el-checkbox v-model="bkhdxAdd.form.deptCheckStrictly" :disabled="bkhdxAdd.form.state!=='0'" @change="handleCheckedTreeConnect($event, 'bkhdxDept')"></el-checkbox>
<el-tree
:disabled="bkhdxAdd.form.state!=='0'"
class="tree-border"
:data="deptOptions"
show-checkbox
default-expand-all
ref="bkhdxDept"
node-key="id"
:check-strictly="!bkhdxAdd.form.deptCheckStrictly"
empty-text="加载中,请稍候"
:props="defaultProps"
></el-tree>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="bkhdxAddSubmitForm"> </el-button>
<el-button @click="bkhdxAddCancel"> </el-button>
</div>
</el-dialog>
<!-- 被考核对象删除对话框 -->
<el-dialog title="被考核对象删除" :visible.sync="bkhdxDel.open" width="800px" append-to-body :close-on-click-modal="false">
<el-row :gutter="10">
<el-col :span="20">
<span>考核任务名称{{ bkhdxDel.form.pcTitle }}</span>
<el-button
style="margin-left: 15px;"
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="bkhdxDel.multiple"
@click="bkhdxDelRemove"
>删除</el-button>
</el-col>
<el-col :span="24" v-if="bkhdxDel.form.bkhdxType==='1'">
<el-table :data="bkhdxDel.list" border max-height="500" @selection-change="bkhdxDelSelectionChange" style="width: 100%; margin-top: 10px">
<el-table-column type="selection" width="55" align="center" fixed/>
<el-table-column label="工号" align="center" prop="wordId"/>
<el-table-column label="部门名称" align="center" prop="deptName" :show-overflow-tooltip="true" min-width="100"/>
<el-table-column label="职工姓名" align="center" prop="bkhdxName" :show-overflow-tooltip="true" min-width="100"/>
<el-table-column label="身份" align="center" prop="position" />
</el-table>
</el-col>
<el-col :span="24" v-if="bkhdxDel.form.bkhdxType==='0'">
<el-table :data="bkhdxDel.list" border max-height="500" @selection-change="bkhdxDelSelectionChange" style="width: 100%; margin-top: 10px">
<el-table-column type="selection" width="55" align="center" fixed/>
<el-table-column label="部门ID" align="center" prop="deptId"/>
<el-table-column label="部门名称" align="center" prop="deptName" :show-overflow-tooltip="true" min-width="100"/>
</el-table>
</el-col>
</el-row>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { listPingce, getPingce, delPingce, addPingce, updatePingce, getItemVote, addsUser, generateResult, pcItemVotes } from "@/api/kaohe/pingce"; import { listPingce, getPingce, delPingce, addPingce, updatePingce, getItemVote, addsUser, generateResult, pcItemVotes, modifyBkhdx } from "@/api/kaohe/pingce";
import { listKh_result } from "@/api/kaohe/kh_result"; import { listKh_result } from "@/api/kaohe/kh_result";
import { deptTreeSelect, ldUserlist, delUser, delUserPingfen } from "@/api/system/user"; import { deptTreeSelect, ldUserlist, delUser, delUserPingfen } from "@/api/system/user";
import { listTemplate } from "@/api/kaohe/template"; import { listTemplate } from "@/api/kaohe/template";
@ -710,6 +818,32 @@ export default {
components: { Treeselect, TableColumn }, components: { Treeselect, TableColumn },
data() { data() {
return { return {
//
bkhdxAdd:{
open: false,
//
form: {},
//
form_bkh_zg: [],
// /
deptExpand: true,
//
xzKeys: []
},
//
bkhdxDel:{
open: false,
//
form: {},
//
list:[],
//
selectedRows: [],
//
ids: [],
//
multiple: true,
},
// //
khdf:{ khdf:{
title:'', title:'',
@ -791,6 +925,7 @@ export default {
deptName: undefined, deptName: undefined,
/** 选择职工*/ /** 选择职工*/
emp: { emp: {
type: 1, // 1 2
// //
open: false, open: false,
// //
@ -808,6 +943,8 @@ export default {
selectList: [], selectList: [],
// //
total: 0, total: 0,
// Ids
yIds: []
}, },
// //
pcSetUp: { pcSetUp: {
@ -905,6 +1042,19 @@ export default {
this.getVoteItemsList(); this.getVoteItemsList();
}, },
methods: { methods: {
//
handleCommand(command, row) {
switch (command) {
case "bkhdxAddFun":
this.bkhdxAddFun(row)
break
case "bkhdxDelFun":
this.bkhdxDelFun(row)
break
default:
break
}
},
samePercentChange(row){ samePercentChange(row){
let voteEmps = []; let voteEmps = [];
if(row.vote.samePercent==='1'){ if(row.vote.samePercent==='1'){
@ -956,7 +1106,8 @@ export default {
}; };
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.dept.setCheckedKeys([]) this.$refs.dept.setCheckedKeys([])
}) });
this.clearDisabledByKeys()
this.resetForm("form") this.resetForm("form")
}, },
/** 搜索按钮操作 */ /** 搜索按钮操作 */
@ -991,6 +1142,8 @@ export default {
if(response.data.state==='0'){ if(response.data.state==='0'){
this.form = response.data; this.form = response.data;
if(this.form.bkhdxType==='1'){ if(this.form.bkhdxType==='1'){
this.emp.type = 1;
this.emp.yIds = [];
this.form.pcBkhdxs.forEach(item=>{ this.form.pcBkhdxs.forEach(item=>{
this.form_bkh_zg.push({ this.form_bkh_zg.push({
id: item.bkhdxId, id: item.bkhdxId,
@ -1131,7 +1284,12 @@ export default {
// //
selectEmp(){ selectEmp(){
this.emp.open = true; this.emp.open = true;
this.emp.selectList = [...this.form_bkh_zg] if(this.emp.type === 1){
this.emp.selectList = [...this.form_bkh_zg]
}
if(this.emp.type === 2){
this.emp.selectList = [...this.bkhdxAdd.form_bkh_zg]
}
this.emp.queryParams.pageNum = 1; this.emp.queryParams.pageNum = 1;
this.empQuery(); this.empQuery();
}, },
@ -1153,9 +1311,22 @@ export default {
}) })
}); });
}, },
//
empSelectable(row) {
if(this.emp.yIds.indexOf(row.id)===-1) {
return true; //
} else {
return false; //
}
},
/** 职工选择弹出框 确认*/ /** 职工选择弹出框 确认*/
empConfirm() { empConfirm() {
this.form_bkh_zg = this.emp.selectList; if(this.emp.type === 1){
this.form_bkh_zg = this.emp.selectList;
}
if(this.emp.type === 2){
this.bkhdxAdd.form_bkh_zg = this.emp.selectList;
}
this.emp.open = false this.emp.open = false
}, },
// Checkbox selection, row // Checkbox selection, row
@ -1175,7 +1346,7 @@ export default {
// Checkbox selection // Checkbox selection
empSelectAll(val){ empSelectAll(val){
this.$nextTick(()=> { this.$nextTick(()=> {
if(val.length > 0){ if(this.$refs['empTable'].store.states.isAllSelected){
val.forEach(item=>{ val.forEach(item=>{
if(this.emp.selectList.filter(item1=>{ return item1.id===item.id}).length<1){ if(this.emp.selectList.filter(item1=>{ return item1.id===item.id}).length<1){
this.emp.selectList.push(item) this.emp.selectList.push(item)
@ -1184,7 +1355,7 @@ export default {
}else { }else {
this.emp.list.forEach(item=>{ this.emp.list.forEach(item=>{
this.emp.selectList.forEach((item1,index)=>{ this.emp.selectList.forEach((item1,index)=>{
if(item1.id===item.id){ if(item1.id===item.id && this.emp.yIds.indexOf(item.id)===-1){
this.emp.selectList.splice(index,1) this.emp.selectList.splice(index,1)
} }
}) })
@ -1202,7 +1373,12 @@ export default {
}) })
}, },
delEmpList(row,index){ delEmpList(row,index){
this.form_bkh_zg.splice(index,1) if(this.emp.type === 1){
this.form_bkh_zg.splice(index,1)
}
if(this.emp.type === 2){
this.bkhdxAdd.form_bkh_zg.splice(index,1)
}
}, },
// //
handleSetUp(row){ handleSetUp(row){
@ -1251,7 +1427,6 @@ export default {
pageSize: 1000000000, pageSize: 1000000000,
voteId: row.vote.id, voteId: row.vote.id,
}).then(response1 => { }).then(response1 => {
console.log(response1.rows);
let voteEmps = []; let voteEmps = [];
response1.rows.forEach(item => { response1.rows.forEach(item => {
voteEmps.push({ voteEmps.push({
@ -1442,6 +1617,14 @@ export default {
this.$refs.dept.store.nodesMap[treeList[i].id].expanded = value this.$refs.dept.store.nodesMap[treeList[i].id].expanded = value
} }
} }
if (type == 'bkhdxDept') {
let treeList = this.deptOptions
for (let i = 0; i < treeList.length; i++) {
if(!treeList[i].disabled){
this.$refs.bkhdxDept.store.nodesMap[treeList[i].id].expanded = value
}
}
}
}, },
// / // /
handleCheckedTreeNodeAll(value, type) { handleCheckedTreeNodeAll(value, type) {
@ -1454,6 +1637,9 @@ export default {
if (type == 'dept') { if (type == 'dept') {
this.form.deptCheckStrictly = value ? true: false this.form.deptCheckStrictly = value ? true: false
} }
if (type == 'bkhdxDept') {
this.bkhdxAdd.form.deptCheckStrictly = value ? true: false
}
}, },
/** 查询部门下拉树结构 */ /** 查询部门下拉树结构 */
getDeptTree() { getDeptTree() {
@ -1773,7 +1959,184 @@ export default {
this.download('system/user/taskExport', { this.download('system/user/taskExport', {
...this.drwScpfzhInfo.queryParams ...this.drwScpfzhInfo.queryParams
}, `多任务评分账号_${new Date().getTime()}.xlsx`) }, `多任务评分账号_${new Date().getTime()}.xlsx`)
} },
//
bkhdxAddReset() {
this.bkhdxAdd.deptExpand = true;
this.bkhdxAdd.deptNodeAll = false;
this.bkhdxAdd.form_bkh_zg = [];
this.bkhdxAdd.form = {};
this.$nextTick(() => {
this.$refs.bkhdxDept.setCheckedKeys([]);
})
this.resetForm("bkhdxForm");
},
//
bkhdxAddFun(row){
this.bkhdxAddReset();
getPingce(row.id).then(response => {
this.bkhdxAdd.form = response.data;
if(this.bkhdxAdd.form.bkhdxType==='1'){
this.emp.type = 2;
let arr = [];
this.bkhdxAdd.form.pcBkhdxs.forEach(item=>{
arr.push(item.bkhdxId)
this.bkhdxAdd.form_bkh_zg.push({
id: item.bkhdxId,
empName: item.bkhdxName,
deptId: item.deptId,
deptName: item.deptName,
position: item.position,
wordId: item.wordId,
disabled: true
})
})
this.emp.yIds = arr;
}
if(this.bkhdxAdd.form.bkhdxType==='0'){
let Keys = [];
this.bkhdxAdd.form.pcBkhdxs.forEach(item=>{
Keys.push(item.bkhdxId);
})
this.setDisabledByKeys(Keys, true);
this.bkhdxAdd.xzKeys = Keys;
this.$nextTick(() => {
this.$refs.bkhdxDept.setCheckedKeys(Keys)
})
}
this.bkhdxAdd.form.pcBkhdxs = [];
this.bkhdxAdd.open = true;
})
},
// keys
setDisabledByKeys(keys, disabled) {
const setDisabled = (data) => {
data.forEach(item => {
if (keys.includes(item.id)) {
item.disabled = disabled
}
if (item.children && item.children.length > 0) {
setDisabled(item.children)
}
})
}
setDisabled(this.deptOptions);
},
// keys
clearDisabledByKeys() {
const setDisabled = (data) => {
data.forEach(item => {
item.disabled = false
if (item.children && item.children.length > 0) {
setDisabled(item.children)
}
})
}
setDisabled(this.deptOptions);
},
//
bkhdxAddCancel() {
this.bkhdxAdd.open = false
this.bkhdxAddReset()
},
/** 被考核对象提交按钮 */
bkhdxAddSubmitForm() {
this.$refs["bkhdxForm"].validate(valid => {
if (valid) {
let flag = true;
// -
if(this.bkhdxAdd.form.bkhdxType==='1'){
if( this.bkhdxAdd.form_bkh_zg && this.bkhdxAdd.form_bkh_zg.length <1 ){
flag = false;
this.$alert(`还没有选择被考核对象,请选择被考核对象!`, `提示`, {
type: 'warning'
})
}else {
this.bkhdxAdd.form_bkh_zg.forEach(item=>{
if(!item.disabled){
this.bkhdxAdd.form.pcBkhdxs.push({
bkhdxId: item.id,
bkhdxName: item.empName,
deptId: item.deptId,
deptName: item.deptName,
position: item.position,
wordId: item.wordId,
})
}
})
}
}
// -
if(this.bkhdxAdd.form.bkhdxType==='0'){
//
let xzNodes = this.$refs.bkhdxDept.getCheckedNodes();
if(xzNodes && xzNodes.length<1){
flag = false;
this.$alert(`还没有选择需要添加的被考核对象,请选择需要添加的被考核对象!`, `提示`, {
type: 'warning'
})
}else {
xzNodes.forEach(item=>{
if(!item.disabled){
this.bkhdxAdd.form.pcBkhdxs.push({
bkhdxId: item.id,
bkhdxName: item.label,
deptId: item.id,
deptName: item.label,
})
}
})
}
}
if(flag){
modifyBkhdx({...this.bkhdxAdd.form, addOrDel:0 }).then(response => {
this.$modal.msgSuccess("修改成功")
this.bkhdxAdd.open = false
this.getList()
})
}
}
})
},
//
bkhdxDelSelectionChange(selection){
this.bkhdxDel.selectedRows = selection.map(item => item)
this.bkhdxDel.ids = selection.map(item => item.id)
this.bkhdxDel.multiple = !selection.length
},
//
bkhdxDelReset() {
this.bkhdxDel.form = {};
this.bkhdxDel.list = [];
},
//
bkhdxDelFun(row){
this.bkhdxDelReset();
getPingce(row.id).then(response => {
this.bkhdxDel.form = response.data;
this.bkhdxDel.list = response.data.pcBkhdxs
this.bkhdxDel.open = true;
})
},
/** 删除按钮操作 */
bkhdxDelRemove() {
this.$modal.confirm('是否确认删除该数据项?').then(()=> {
const DataForm={...this.bkhdxDel.form}
DataForm.pcBkhdxs = this.bkhdxDel.selectedRows;
modifyBkhdx({...DataForm, addOrDel: 1 }).then(response => {
this.$modal.msgSuccess("删除成功")
this.bkhdxDel.open = false
this.getList()
})
}).catch(() => {})
},
} }
} }
</script> </script>
<style lang="scss" scoped>
.tree-border{
max-height: 500px;
overflow: auto;
}
</style>

Loading…
Cancel
Save