优化
This commit is contained in:
parent
8867e15955
commit
efd376e181
@ -1,387 +0,0 @@
|
|||||||
<!-- -->
|
|
||||||
<template>
|
|
||||||
<div class="basis">
|
|
||||||
<div class="basis-title commonFont">
|
|
||||||
基本信息
|
|
||||||
</div>
|
|
||||||
<div class="basis-form">
|
|
||||||
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
|
|
||||||
<el-form-item label="考评组名称:" prop="name">
|
|
||||||
<el-input
|
|
||||||
size="small"
|
|
||||||
v-model="form.name" placeholder="请输入名称"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<!-- <el-form-item label="周期类型:">
|
|
||||||
<el-radio-group v-model="form.radio">
|
|
||||||
<el-radio
|
|
||||||
v-for="(i,index) in zhouqi"
|
|
||||||
:key="index"
|
|
||||||
:label="i.id">{{i.name}}</el-radio>
|
|
||||||
</el-radio-group>
|
|
||||||
</el-form-item> -->
|
|
||||||
<el-form-item label="考评组管理员:" >
|
|
||||||
<el-tooltip class="item" effect="light" placement="right">
|
|
||||||
<div slot="content">
|
|
||||||
考评组管理员<br/>
|
|
||||||
只有考评组管理员可以编辑这个考评组,<br/>
|
|
||||||
权限为全部考评组的管理员默认可以管理<br/>
|
|
||||||
所有考评组,考评组管理员只能从智能绩<br/>
|
|
||||||
效的管理员中选择
|
|
||||||
</div>
|
|
||||||
<el-input
|
|
||||||
@focus='showRight=true'
|
|
||||||
style="width:300px;cursor: pointer;"
|
|
||||||
size="mini"
|
|
||||||
placeholder="请选择考评组管理员"
|
|
||||||
readonly
|
|
||||||
:value="Ground.title?(Ground.title+ ' 等'+ Ground.list.length + '人'):''">
|
|
||||||
<i @click='showRight=true' slot="suffix" class="el-input__icon el-icon-edit"></i>
|
|
||||||
</el-input>
|
|
||||||
</el-tooltip>
|
|
||||||
<div class="commonFont" style="font-size:12px">设置哪些管理员可以管理该考评组</div>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="被考核人员" prop="name">
|
|
||||||
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="考评员工:">
|
|
||||||
<div v-if="showData.list.length>0">
|
|
||||||
<el-input
|
|
||||||
@focus="handleGetChoose('isShow')"
|
|
||||||
style="width:300px;cursor: pointer;"
|
|
||||||
size="small"
|
|
||||||
:value ="showData.title + '等' + showData.list.length + '个部门' || '请选择部门'"
|
|
||||||
readonly>
|
|
||||||
<i @click="handleGetChoose('isShow')" slot="suffix" class="el-input__icon el-icon-edit"></i>
|
|
||||||
</el-input>
|
|
||||||
<i @click="handleClearList('showData')" style="margin-left:10px;cursor: pointer;" class="el-icon-delete"></i>
|
|
||||||
</div>
|
|
||||||
<div v-if="personnelList.list.length>0">
|
|
||||||
<el-input
|
|
||||||
@focus="handleGetChoose('isShowPersonnel')"
|
|
||||||
style="width:300px;cursor: pointer;"
|
|
||||||
size="small"
|
|
||||||
:value ="personnelList.list[0].name + '等' + personnelList.list.length + '个人'"
|
|
||||||
readonly>
|
|
||||||
<i @click="handleGetChoose('isShowPersonnel')" slot="suffix" class="el-input__icon el-icon-edit"></i>
|
|
||||||
</el-input>
|
|
||||||
<i @click="handleClearList('personnelList')" style="margin-left:10px;cursor: pointer;" class="el-icon-delete"></i>
|
|
||||||
</div>
|
|
||||||
<el-button size='mini' @click="handleGetChoose('isShow')" icon="el-icon-plus">选部门</el-button>
|
|
||||||
<!-- <el-button size='mini' @click="handleGetChoose" icon="el-icon-plus">选角色</el-button> -->
|
|
||||||
<el-button size='mini' @click="handleGetChoose('isShowPersonnel')" icon="el-icon-plus">选人员</el-button>
|
|
||||||
<div class="commonFont" style="font-size:12px">
|
|
||||||
按部门设置,新加入部门的员工将自动加入考评组
|
|
||||||
</div>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item v-if="showData.list.length>0" label="无需考评人员:">
|
|
||||||
<div v-if="outIdsLsit.list.length>0">
|
|
||||||
<el-input
|
|
||||||
@focus="handleGetChoose('isSshowOutIds')"
|
|
||||||
style="width:300px;cursor: pointer;"
|
|
||||||
size="small"
|
|
||||||
:value ="outIdsLsit.list[0].name + '等' + outIdsLsit.list.length + '个人'"
|
|
||||||
readonly>
|
|
||||||
<i @clcik="handleGetChoose('isSshowOutIds')" slot="suffix" class="el-input__icon el-icon-edit"></i>
|
|
||||||
</el-input>
|
|
||||||
<i @click="handleClearList('outIdsLsit')" style="margin-left:10px;cursor: pointer;" class="el-icon-delete"></i>
|
|
||||||
</div>
|
|
||||||
<!-- <el-button size='mini' @click="handleGetChoose(0)" icon="el-icon-plus">选部门</el-button> -->
|
|
||||||
<!-- <el-button size='mini' @click="handleGetChoose" icon="el-icon-plus">选角色</el-button> -->
|
|
||||||
<el-button size='mini' @click="handleGetChoose('isSshowOutIds')" icon="el-icon-plus">选人员</el-button>
|
|
||||||
<div class="commonFont" style="font-size:12px">
|
|
||||||
从已选部门中排除无需在本考评组或无需考核的人员
|
|
||||||
</div>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
<getPersonnel @cb='handleCheckOutIds' v-if="isSshowOutIds" :value.sync='form.outIds' :isShow.sync='isSshowOutIds' :showDataList.sync='outIdsLsit'/>
|
|
||||||
<getPersonnel @cb='handleCheckStaffIds' v-if="isShowPersonnel" :value.sync='form.staffIds' :isShow.sync='isShowPersonnel' :showDataList.sync='personnelList'/>
|
|
||||||
<get-depart @cb='handleCheckDepIds' v-if="isShow" :value.sync='form.depIds' :isShow.sync='isShow' :showDataList.sync='showData'/>
|
|
||||||
<popup-right v-if="showRight" @cancel='handleCancel' @submit="handleSubmit" title="选择考评组管理员">
|
|
||||||
<div slot="content" class="chooseManage">
|
|
||||||
<div v-for="i in GroundList" :key="i.staffId" class="chooseManage-item" >
|
|
||||||
<el-checkbox :true-label='1' :false-label='0' :disabled='i.isDisable===1' :checked='i.isDisable===1' v-model='i.isSelect'></el-checkbox><span class='commonFont' style="margin:0 0 0 10px;">{{i.staffName}} </span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</popup-right>
|
|
||||||
<el-dialog title="将重复的人员进行归位" :visible.sync="dialogTableVisible">
|
|
||||||
<el-transfer :props="options" :titles="transferTitle" v-model="mobileList" :data="repeatList"></el-transfer>
|
|
||||||
<span slot="footer" class="dialog-footer">
|
|
||||||
<el-button @click="dialogTableVisible = false">取 消</el-button>
|
|
||||||
<el-button type="primary" @click="handleChangeList">确 定</el-button>
|
|
||||||
</span>
|
|
||||||
</el-dialog>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import getDepart from '@/components/getDepart'
|
|
||||||
import getPersonnel from '@/components/getPersonnel'
|
|
||||||
import PopupRight from '@/components/PopupRight'
|
|
||||||
import { getGround } from '@/api/data'
|
|
||||||
import { getByIdForBasis, apiCheckStaff } from '@/api/workbench'
|
|
||||||
export default {
|
|
||||||
props: {
|
|
||||||
basisForm: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {
|
|
||||||
return {
|
|
||||||
counts: '', // 参与考核人数
|
|
||||||
depIds: '', // 参与部门id,逗号隔开
|
|
||||||
managerIdList: [],
|
|
||||||
managerIds: '', // 绩效管理员ID,system_user,id,逗号隔开
|
|
||||||
outIds: '', // 排除人员ids,逗号隔开
|
|
||||||
staffIds: '', // 参与考核员工staff_id,逗号隔开
|
|
||||||
name: ''
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data () {
|
|
||||||
return {
|
|
||||||
repeatList: [],
|
|
||||||
mobileList: [],
|
|
||||||
chooseList: [],
|
|
||||||
options: {key: 'staffId', label: 'name'},
|
|
||||||
transferTitle: ['排除人员', '参评人员'],
|
|
||||||
dialogTableVisible: false,
|
|
||||||
id: '',
|
|
||||||
GroundList: [],
|
|
||||||
GroundList1: [],
|
|
||||||
isSshowOutIds: false,
|
|
||||||
outIdsLsit: {
|
|
||||||
list: []
|
|
||||||
},
|
|
||||||
showRight: false,
|
|
||||||
isShow: false,
|
|
||||||
isShowPersonnel: false,
|
|
||||||
personnelList: {
|
|
||||||
list: []
|
|
||||||
},
|
|
||||||
showData: {
|
|
||||||
list: []
|
|
||||||
}, // 部门信息
|
|
||||||
form: {
|
|
||||||
name: ''
|
|
||||||
},
|
|
||||||
rules: {
|
|
||||||
name: [
|
|
||||||
{ required: true, message: '请输入考评组', trigger: 'blur' }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
components: {
|
|
||||||
getDepart,
|
|
||||||
getPersonnel,
|
|
||||||
PopupRight
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
Ground () {
|
|
||||||
const params = {
|
|
||||||
list: [],
|
|
||||||
title: '',
|
|
||||||
managerIds: ''
|
|
||||||
}
|
|
||||||
params.list = this.GroundList1.filter(i => i.isSelect === 1)
|
|
||||||
params.list.map((i, index) => {
|
|
||||||
params.managerIds += i.staffId + ','
|
|
||||||
if (index < 2) params.title += i.staffName.split(' ')[0] + ','
|
|
||||||
})
|
|
||||||
params.managerIds = params.managerIds.substring(0, params.managerIds.length - 1)
|
|
||||||
params.title = params.title.substring(0, params.title.length - 1)
|
|
||||||
// eslint-disable-next-line vue/no-side-effects-in-computed-properties
|
|
||||||
this.form.managerIds = params.managerIds
|
|
||||||
return params
|
|
||||||
}
|
|
||||||
},
|
|
||||||
beforeMount () {},
|
|
||||||
async mounted () {
|
|
||||||
this.$loadingStart()
|
|
||||||
await this.handleGetGround()
|
|
||||||
const id = this.$route.query.id || ''
|
|
||||||
this.id = id
|
|
||||||
if (id) {
|
|
||||||
await this.handleGetByIdForBasis(id)
|
|
||||||
}
|
|
||||||
this.$loadingEnd()
|
|
||||||
this.form = this.basisForm
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
handleChangeList (diff) {
|
|
||||||
console.log('repeatList: ', this.repeatList)
|
|
||||||
console.log('mobileList: ', this.mobileList)
|
|
||||||
},
|
|
||||||
handleClearList (item) {
|
|
||||||
this[item].list = []
|
|
||||||
if (item === 'outIdsLsit') {
|
|
||||||
this.form.outIds = ''
|
|
||||||
}
|
|
||||||
if (item === 'personnelList') {
|
|
||||||
this.form.staffIds = ''
|
|
||||||
}
|
|
||||||
if (item === 'showData') {
|
|
||||||
this.form.depIds = ''
|
|
||||||
}
|
|
||||||
},
|
|
||||||
handleDifferec (list, choose) {
|
|
||||||
this.repeatList = list
|
|
||||||
this.chooseList = choose
|
|
||||||
this.dialogTableVisible = true
|
|
||||||
},
|
|
||||||
handleCheckOutIds (item) {
|
|
||||||
this.transferTitle = ['排除人员', '参评人员']
|
|
||||||
this.handleDifferec(this._.intersectionBy(this.personnelList.list, item.list, 'staffId'), ['outIdsLsit', 'personnelList'])
|
|
||||||
this.dialogTableVisible = true
|
|
||||||
console.log(this._.intersectionBy(this.personnelList.list, item.list, 'staffId'))
|
|
||||||
// this.form.outIds = item.value
|
|
||||||
// this.outIdsLsit = item
|
|
||||||
// this.isSshowOutIds = false
|
|
||||||
},
|
|
||||||
async handleCheckStaffIds (item) {
|
|
||||||
const params = Object.assign({}, this.form, {staffIds: item.value})
|
|
||||||
const bool = await this.handleCheckStaff(params)
|
|
||||||
if (bool) {
|
|
||||||
this.form.staffIds = item.value
|
|
||||||
this.personnelList = item
|
|
||||||
this.isShowPersonnel = false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
async handleCheckDepIds (item) {
|
|
||||||
const params = Object.assign({}, this.form, {depIds: item.value})
|
|
||||||
const bool = await this.handleCheckStaff(params)
|
|
||||||
if (bool) {
|
|
||||||
this.form.depIds = item.value
|
|
||||||
this.showData = item
|
|
||||||
this.isShow = false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
async handleCheckStaff (parmas = this.form) {
|
|
||||||
return new Promise(async (resolve, reject) => {
|
|
||||||
let res = await apiCheckStaff(Object.assign({}, parmas, {confirm: 0, id: this.$route.query.id || ''}))
|
|
||||||
if (res.code === 504) {
|
|
||||||
this.$confirm(res.msg, '提示', {
|
|
||||||
confirmButtonText: '确定',
|
|
||||||
cancelButtonText: '取消',
|
|
||||||
type: 'warning'
|
|
||||||
}).then(() => {
|
|
||||||
resolve(true)
|
|
||||||
}).catch(() => {
|
|
||||||
resolve(false)
|
|
||||||
})
|
|
||||||
} else if (res.code === 200) {
|
|
||||||
resolve(true)
|
|
||||||
} else {
|
|
||||||
resolve(false)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 获取基础设置
|
|
||||||
async handleGetByIdForBasis (id) {
|
|
||||||
try {
|
|
||||||
let res = await getByIdForBasis({id})
|
|
||||||
res = res.data
|
|
||||||
this.GroundList1 = res.managers ? res.managers.map(i => {
|
|
||||||
i.staffId = i.id
|
|
||||||
i.staffName = i.name
|
|
||||||
i.isSelect = 1
|
|
||||||
this.GroundList = this.GroundList.map(j => {
|
|
||||||
if (i.staffId === j.staffId) {
|
|
||||||
i = Object.assign({}, j, i)
|
|
||||||
j.isSelect = 1
|
|
||||||
}
|
|
||||||
return j
|
|
||||||
})
|
|
||||||
return i
|
|
||||||
}) : []
|
|
||||||
|
|
||||||
const obj = {
|
|
||||||
id: this.$route.query.copy ? '' : res.id,
|
|
||||||
name: this.$route.query.copy ? '' : res.name
|
|
||||||
}
|
|
||||||
if (res.deps && res.deps.length !== 0 && !this.$route.query.copy) {
|
|
||||||
const b = this.$personlGetForm(res.outs)
|
|
||||||
this.outIdsLsit = b
|
|
||||||
obj.outIds = b.value
|
|
||||||
}
|
|
||||||
if (!this.$route.query.copy) {
|
|
||||||
const a = this.$personlGetForm(res.staffs)
|
|
||||||
const c = this.$departGetForm(res.deps)
|
|
||||||
obj.staffIds = a.value
|
|
||||||
obj.depIds = c.value
|
|
||||||
this.personnelList = a
|
|
||||||
this.showData = c
|
|
||||||
}
|
|
||||||
|
|
||||||
this.form = obj
|
|
||||||
} catch (error) {
|
|
||||||
this.$message.error(error.msg)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
async handleGetGround () {
|
|
||||||
try {
|
|
||||||
let res = await getGround({groupId: 1})
|
|
||||||
res = res.data
|
|
||||||
res = res.map(i => {
|
|
||||||
i.isDisable = i.isSelect
|
|
||||||
return i
|
|
||||||
})
|
|
||||||
this.GroundList = JSON.parse(JSON.stringify(res))
|
|
||||||
this.GroundList1 = JSON.parse(JSON.stringify(res))
|
|
||||||
} catch (error) {
|
|
||||||
this.$message.error(error.msg)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
handleCancel () {
|
|
||||||
this.GroundList = JSON.parse(JSON.stringify(this.GroundList1))
|
|
||||||
this.showRight = false
|
|
||||||
},
|
|
||||||
handleSubmit () {
|
|
||||||
this.GroundList1 = JSON.parse(JSON.stringify(this.GroundList))
|
|
||||||
this.showRight = false
|
|
||||||
},
|
|
||||||
handleGetChoose (item) {
|
|
||||||
this[item] = true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
form: {
|
|
||||||
deep: true,
|
|
||||||
handler (n, o) {
|
|
||||||
this.$emit('update:basisForm', n)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
<style lang="less">
|
|
||||||
.basis{
|
|
||||||
.el-transfer{
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-around;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<style lang='less' scoped>
|
|
||||||
.basis{
|
|
||||||
&-title{
|
|
||||||
text-align: center;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
&-form{
|
|
||||||
margin: 0 auto;
|
|
||||||
width: 50%;
|
|
||||||
}
|
|
||||||
.chooseManage-item{
|
|
||||||
min-width: 300px;
|
|
||||||
height: 40px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
border-bottom: 1px solid @borderColor;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
Loading…
x
Reference in New Issue
Block a user