Merge remote-tracking branch 'origin/main'

main
hshansha 5 months ago
commit 8511cd1267

@ -98,5 +98,9 @@ export default {
}
}
.pagination-container{
margin-top: 30px;
justify-content: flex-start;
}
</style>

@ -173,10 +173,10 @@
</el-form-item>
<el-form-item label="被考核对象类型" prop="bkhdxType">
<el-radio-group v-model="form.bkhdxType" :disabled="form.state!=='0'">
<el-radio v-for="dict in khdxRadios" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
<el-radio v-for="dict in dict.type.bkhdx_type" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="被考核对象" v-if="form.bkhdxType==='0'">
<el-form-item label="被考核对象" v-if="form.bkhdxType==='1'">
<el-button type="primary" @click="selectEmp" size="mini">选择职工</el-button>
<el-table :data="form_bkh_zg" style="width: 100%; margin-top: 10px" border max-height="500">
<el-table-column label="操作" width="100" fixed align="center">
@ -189,7 +189,7 @@
<el-table-column label="职工姓名" align="center" prop="empName" :show-overflow-tooltip="true" min-width="120"/>
</el-table>
</el-form-item>
<el-form-item label="被考核对象" v-if="form.bkhdxType==='1'">
<el-form-item label="被考核对象" v-if="form.bkhdxType==='0'">
<el-checkbox v-model="deptExpand" :disabled="form.state!=='0'" @change="handleCheckedTreeExpand($event, 'dept')">/</el-checkbox>
<el-checkbox v-model="deptNodeAll" :disabled="form.state!=='0'" @change="handleCheckedTreeNodeAll($event, 'dept')">/</el-checkbox>
<el-checkbox v-model="form.deptCheckStrictly" :disabled="form.state!=='0'" @change="handleCheckedTreeConnect($event, 'dept')"></el-checkbox>
@ -607,7 +607,7 @@ import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
name: "Pingce",
dicts: ['kh_state', 'sys_user_sex'],
dicts: ['kh_state', 'sys_user_sex', 'bkhdx_type'],
components: { Treeselect },
data() {
return {
@ -691,16 +691,6 @@ export default {
}
]
},
khdxRadios:[
{
value: '0',
label: '职工',
},
{
value: '1',
label: '部门',
},
],
deptExpand: true,
deptNodeAll: false,
deptOptions: [],
@ -905,7 +895,7 @@ export default {
const id = row.id || this.ids
getPingce(id).then(response => {
this.form = response.data;
if(this.form.bkhdxType==='0'){
if(this.form.bkhdxType==='1'){
this.form.pcBkhdxs.forEach(item=>{
this.form_bkh_zg.push({
id: item.bkhdxId,
@ -916,7 +906,7 @@ export default {
})
}
if(this.form.bkhdxType==='1'){
if(this.form.bkhdxType==='0'){
let Keys = [];
this.form.pcBkhdxs.forEach(item=>{
Keys.push(item.bkhdxId);
@ -936,7 +926,7 @@ export default {
if (valid) {
let flag = true;
// -
if(this.form.bkhdxType==='0'){
if(this.form.bkhdxType==='1'){
if( this.form_bkh_zg && this.form_bkh_zg.length <1 ){
flag = false;
this.$alert(`还没有选择被考核对象,请选择被考核对象!`, `提示`, {
@ -954,7 +944,7 @@ export default {
}
}
// -
if(this.form.bkhdxType==='1'){
if(this.form.bkhdxType==='0'){
//
let xzNodes = this.$refs.dept.getCheckedNodes();
if(xzNodes && xzNodes.length<1){

@ -1,30 +1,45 @@
<template>
<div class="app-container">
<div class="title">{{ kaohexiang.vote.voteTitle }}</div>
<div class="time">时间{{ kaohexiang.vote.sTime }} - {{ kaohexiang.vote.eTime }}</div>
<div class="des">{{ kaohexiang.vote.vDescription }}</div>
<div class="tou_piao" v-if="kaohexiang.type===2||kaohexiang.type===5">
<div v-for="item in voteList" class="tou_piao_item">
<div class="emp_name">{{ item.label }} <span style="color:#666;margin-left: 20px;">参与评分 231 </span> <span style="color:#666;margin-left: 20px;">均值96.45 </span></div>
<div>
<el-input-number v-model="item.value" controls-position="right" :min="0" :max="100"></el-input-number>
<div class="title">{{ vote.voteTitle }}</div>
<div class="time">时间{{ vote.sTime }} - {{ vote.eTime }}</div>
<div class="des">{{ vote.vDescription }}</div>
<el-row :gutter="10" class="tou_piao" v-if="vote.khitemTypeid===2||vote.khitemTypeid===3">
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" v-for="item in voteList">
<div class="tou_piao_item">
<div>
{{ item.bkhdxName }}
</div>
<div class="_desc">参与评分 {{ item.voteNum!==null?item.voteNum: ''}} </div>
<div class="_desc">均值{{ item.avgScore!==null?item.avgScore: '' }} </div>
<div>
<el-input-number v-model="item.score" :max="vote.maxNum"></el-input-number>
</div>
</div>
</div>
</div>
<div class="tou_piao" v-if="kaohexiang.type===1">
<div v-for="item in voteList" class="tou_piao_item">
<div class="emp_name">{{ item.label }} <span style="color:#666;margin-left: 20px;">参与评分 231 </span> <span style="color:#666;margin-left: 20px;">均值96.45 </span></div>
<div>
<el-radio v-model="item.value" label="1" border size="small"></el-radio>
<el-radio v-model="item.value" label="2" border size="small"></el-radio>
<el-radio v-model="item.value" label="3" border size="small"></el-radio>
<el-radio v-model="item.value" label="4" border size="small"></el-radio>
</el-col>
</el-row>
<el-row :gutter="10" class="tou_piao" v-if="vote.khitemTypeid===1">
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" v-for="item in voteList">
<div class="tou_piao_item">
<div>
{{ item.bkhdxName }}
</div>
<div class="_desc">参与评分 {{ item.voteNum!==null?item.voteNum: ''}} </div>
<div class="_desc">均值{{ item.avgScore!==null?item.avgScore: '' }} </div>
<div>
<el-radio-group v-model="item.option" size="mini">
<el-radio label="optionA">优秀</el-radio>
<el-radio label="optionB">合格</el-radio>
<el-radio label="optionC">基本合格</el-radio>
<el-radio label="optionD">不合格</el-radio>
</el-radio-group>
</div>
</div>
</div>
</div>
</el-col>
</el-row>
<div style="text-align: right; margin-top: 40px;">
<el-button type="primary" icon="el-icon-s-promotion">提交</el-button>
<div style="text-align: center; margin-top: 40px;">
<el-button type="primary" icon="el-icon-s-promotion" @click="VoteSubmit"></el-button>
</div>
</div>
@ -32,559 +47,19 @@
<script>
import { getVote } from "@/api/kaohe/vote"
import { listVote_emp } from "@/api/kaohe/vote_emp"
import { listVote_emp, VoteEmpSubmit } from "@/api/kaohe/vote_emp"
export default {
name: "votepage",
data() {
return {
index:0,
index1:0,
kaohexiang: null,
vote: {},
loading:null,
voteList: [
{
"id": 200,
"label": "生命科学系",
"value": null
},
{
"id": 201,
"label": "海洋学院",
"value": null
},
{
"id": 202,
"label": "历史文化与法学系",
"value": null
},
{
"id": 203,
"label": "物理科学与技术学院",
"value": null
},
{
"id": 204,
"label": "教育学院",
"value": null
},
{
"id": 205,
"label": "资源管理系",
"value": null
},
{
"id": 206,
"label": "马克思主义学院",
"value": null
},
{
"id": 207,
"label": "美术学院",
"value": null
},
{
"id": 208,
"label": "计算机科学技术系",
"value": null
},
{
"id": 209,
"label": "化学系",
"value": null
},
{
"id": 210,
"label": "数学与计算科学学院",
"value": null
},
{
"id": 211,
"label": "继续教育学院",
"value": null
},
{
"id": 212,
"label": "外国语学院",
"value": null
},
{
"id": 213,
"label": "体育系",
"value": null
},
{
"id": 214,
"label": "文学院",
"value": null
},
{
"id": 215,
"label": "音乐系",
"value": null
},
],
pingceList: [
{
id: 1,
pcTitle: '党建与行政目标任务',
pcDescription: '党建与行政目标任务考核描述',
templateId: 2,
templateName: '党建与行政目标任务模板',
state: '2',
khdx: '1',
remark: '备注',
deptCheckStrictly: false,
pcEmps:[],
checkedKeys: [ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215 ],
kaohexiang: [
{
id: 6,
itemName: '政治建设',
type: 2,
typeName: '占比评分',
vote:{
voteTitle: '政治建设评分',
options: [],
maxNum: 100,
percentage: 0.2, //
state: '2', //
sTime: '2025-06-15', //
eTime: '2025-06-20', //
vDescription: '政治建设评分详情描述', //
remark: '政治建设备注', //
}
},
{
id: 7,
itemName: '宣传与思想政治工作',
type: 2,
typeName: '占比评分',
vote:{
voteTitle: '宣传与思想政治工作评分',
options: [],
maxNum: 100,
percentage: 0.1, //
state: '2', //
sTime: '2025-06-15', //
eTime: '2025-06-20', //
vDescription: '宣传与思想政治工作评分详情描述', //
remark: '宣传与思想政治工作备注', //
}
},
{
id: 8,
itemName: '作风纪律',
type: 2,
typeName: '占比评分',
vote:{
voteTitle: '作风纪律评分',
options: [],
maxNum: 100,
percentage: 0.1, //
state: '2', //
sTime: '2025-06-15', //
eTime: '2025-06-20', //
vDescription: '作风纪律评分详情描述', //
remark: '作风纪律备注', //
}
},
{
id: 9,
itemName: '安全稳定',
type: 2,
typeName: '占比评分',
vote:{
voteTitle: '安全稳定评分',
options: [],
maxNum: 100,
percentage: 0.1, //
state: '2', //
sTime: '2025-06-15', //
eTime: '2025-06-20', //
vDescription: '安全稳定评分详情描述', //
remark: '安全稳定备注', //
}
},
{
id: 10,
itemName: '师资队伍与师德师风',
type: 2,
typeName: '占比评分',
vote:{
voteTitle: '师资队伍与师德师风评分',
options: [],
maxNum: 100,
percentage: 0.1, //
state: '2', //
sTime: '2025-06-15', //
eTime: '2025-06-20', //
vDescription: '师资队伍与师德师风评分详情描述', //
remark: '师资队伍与师德师风备注', //
}
},
{
id: 11,
itemName: '财务工作',
type: 2,
typeName: '占比评分',
vote:{
voteTitle: '财务工作评分',
options: [],
maxNum: 100,
percentage: 0.1, //
state: '2', //
sTime: '2025-06-15', //
eTime: '2025-06-20', //
vDescription: '财务工作评分详情描述', //
remark: '财务工作备注', //
}
},
{
id: 12,
itemName: '依法治校与综合治理',
type: 2,
typeName: '占比评分',
vote:{
voteTitle: '依法治校与综合治理评分',
options: [],
maxNum: 100,
percentage: 0.05, //
state: '2', //
sTime: '2025-06-15', //
eTime: '2025-06-20', //
vDescription: '依法治校与综合治理评分详情描述', //
remark: '依法治校与综合治理备注', //
}
},
{
id: 13,
itemName: '国有资产管理',
type: 2,
typeName: '占比评分',
vote:{
voteTitle: '国有资产管理评分',
options: [],
maxNum: 100,
percentage: 0.02, //
state: '2', //
sTime: '2025-06-15', //
eTime: '2025-06-20', //
vDescription: '国有资产管理评分详情描述', //
remark: '国有资产管理备注', //
}
},
{
id: 14,
itemName: '实验室管理',
type: 2,
typeName: '占比评分',
vote:{
voteTitle: '实验室管理评分',
options: [],
maxNum: 100,
percentage: 0.03, //
state: '2', //
sTime: '2025-06-15', //
eTime: '2025-06-20', //
vDescription: '实验室管理评分详情描述', //
remark: '实验室管理备注', //
}
},
{
id: 15,
itemName: '招生就业与创新创业工作',
type: 2,
typeName: '占比评分',
vote:{
voteTitle: '招生就业与创新创业工作评分',
options: [],
maxNum: 100,
percentage: 0.1, //
state: '2', //
sTime: '2025-06-15', //
eTime: '2025-06-20', //
vDescription: '招生就业与创新创业工作评分详情描述', //
remark: '招生就业与创新创业工作备注', //
}
},
{
id: 16,
itemName: '对外交流与合作',
type: 2,
typeName: '占比评分',
vote:{
voteTitle: '对外交流与合作评分',
options: [],
maxNum: 100,
percentage: 0.1, //
state: '2', //
sTime: '2025-06-15', //
eTime: '2025-06-20', //
vDescription: '对外交流与合作评分详情描述', //
remark: '对外交流与合作备注', //
}
}
]
},
{
id: 2,
pcTitle: '事业发展',
pcDescription: '事业发展考核描述',
templateId: 3,
templateName: '事业发展模板',
state: '2',
khdx: '1',
remark: '备注',
deptCheckStrictly: false,
pcEmps:[],
checkedKeys: [ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215 ],
kaohexiang: [
{
id: 17,
itemName: '教学工作',
type: 2,
typeName: '占比评分',
vote:{
voteTitle: '教学工作评分',
options: [],
maxNum: 100,
percentage: 0.2, //
state: '2', //
sTime: '2025-06-15', //
eTime: '2025-06-20', //
vDescription: '教学工作评分详情描述', //
remark: '教学工作备注', //
}
},
{
id: 18,
itemName: '科研工作',
type: 2,
typeName: '占比评分',
vote:{
voteTitle: '科研工作评分',
options: [],
maxNum: 100,
percentage: 0.1, //
state: '2', //
sTime: '2025-06-15', //
eTime: '2025-06-20', //
vDescription: '科研工作评分详情描述', //
remark: '科研工作备注', //
}
},
{
id: 19,
itemName: '学生工作',
type: 2,
typeName: '占比评分',
vote:{
voteTitle: '学生工作评分',
options: [],
maxNum: 100,
percentage: 0.1, //
state: '2', //
sTime: '2025-06-15', //
eTime: '2025-06-20', //
vDescription: '学生工作评分详情描述', //
remark: '学生工作备注', //
}
}
]
},
{
id: 3,
pcTitle: '民主测评',
pcDescription: '民主测评考核描述',
templateId: 4,
templateName: '民主测评模板',
state: '2',
khdx: '1',
remark: '备注',
deptCheckStrictly: false,
pcEmps:[],
checkedKeys: [ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215 ],
kaohexiang: [
{
id: 20,
itemName: '师院领导班子',
type: 1,
typeName: '选项评分',
vote:{
voteTitle: '师院领导班子评分',
options: [
{
value: 1,
label: '优秀'
},
{
value: 2,
label: '合格'
},
{
value: 3,
label: '基本合格'
},
{
value: 4,
label: '不合格'
}
],
maxNum: 100,
percentage: 0.2, //
state: '2', //
sTime: '2025-06-15', //
eTime: '2025-06-20', //
vDescription: '师院领导班子评分详情描述', //
remark: '师院领导班子备注', //
}
},
{
id: 21,
itemName: '师院处级领导干部',
type: 1,
typeName: '选项评分',
vote:{
voteTitle: '师院处级领导干部评分',
options: [
{
value: 1,
label: '优秀'
},
{
value: 2,
label: '合格'
},
{
value: 3,
label: '基本合格'
},
{
value: 4,
label: '不合格'
}
],
maxNum: 100,
percentage: 0.1, //
state: '2', //
sTime: '2025-06-15', //
eTime: '2025-06-20', //
vDescription: '师院处级领导干部评分详情描述', //
remark: '师院处级领导干部备注', //
}
},
{
id: 22,
itemName: '服务对象代表',
type: 1,
typeName: '选项评分',
vote:{
voteTitle: '服务对象代表评分',
options: [
{
value: 1,
label: '优秀'
},
{
value: 2,
label: '合格'
},
{
value: 3,
label: '基本合格'
},
{
value: 4,
label: '不合格'
}
],
maxNum: 100,
percentage: 0.1, //
state: '2', //
sTime: '2025-06-15', //
eTime: '2025-06-20', //
vDescription: '服务对象代表评分详情描述', //
remark: '服务对象代表备注', //
}
}
]
},
{
id: 4,
pcTitle: '特色创新',
pcDescription: '特色创新考核描述',
templateId: 5,
templateName: '特色创新模板',
state: '2',
khdx: '1',
remark: '备注',
deptCheckStrictly: false,
pcEmps:[],
checkedKeys: [ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215 ],
kaohexiang: [
{
id: 23,
itemName: '分数满分10分',
type: 5,
typeName: '单独评分',
vote:{
voteTitle: '特色创新分数满分10分评分',
options: [],
maxNum: 10,
percentage: null, //
state: '2', //
sTime: '2025-06-15', //
eTime: '2025-06-20', //
vDescription: '特色创新分数满分10分评分详情描述', //
remark: '特色创新分数满分10分备注', //
}
}
]
},
{
id: 5,
pcTitle: '综合评价',
pcDescription: '综合评价考核描述',
templateId: 6,
templateName: '综合评价模板',
state: '2',
khdx: '1',
remark: '备注',
deptCheckStrictly: false,
pcEmps:[],
checkedKeys: [ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215 ],
kaohexiang: [
{
id: 24,
itemName: '分数(加减分项,值域可以为负)',
type: 5,
typeName: '单独评分',
vote:{
voteTitle: '综合评价分数(加减分项,值域可以为负)',
options: [],
maxNum: 10,
percentage: null, //
state: '2', //
sTime: '2025-06-15', //
eTime: '2025-06-20', //
vDescription: '综合评价分数(加减分项,值域可以为负)评分详情描述', //
remark: '综合评价分数(加减分项,值域可以为负)备注', //
}
}
]
}
],
voteList: [],
}
},
created() {
// this.getVote()
if(this.$route.query.index&&this.$route.query.index1){
this.index=this.$route.query.index;
this.index1=this.$route.query.index1;
}
this.kaohexiang = this.pingceList[this.index].kaohexiang[this.index1];
console.log(this.kaohexiang);
this.getVote();
},
methods: {
getVote(){
@ -596,7 +71,7 @@ export default {
});
getVote(this.$route.query.id).then(response => {
this.vote = response.data;
this.getList()
this.getList();
})
},
/** 查询投票评测列表 */
@ -610,13 +85,69 @@ export default {
this.loading.close()
})
},
VoteSubmit(){
let voteEmpList = [];
let flag = true;
let bkhdxName = '';
if(this.vote.khitemTypeid===2 || this.vote.khitemTypeid===3){
this.voteList.forEach(item => {
voteEmpList.push({
id: item.id,
bkhdxName: item.bkhdxName,
score: item.score,
})
})
}
if(this.vote.khitemTypeid===1){
this.voteList.forEach(item => {
let obj = {
id: item.id,
bkhdxName: item.bkhdxName,
optionA: 0,
optionB: 0,
optionC: 0,
optionD: 0,
}
if(item.option){
obj[item.option] = 1;
}else {
flag = false;
bkhdxName += item.bkhdxName+''
}
voteEmpList.push(obj)
})
}
if(flag){
if(new Date(this.vote.eTime) > (new Date())){
VoteEmpSubmit({
khitemTypeid : this.vote.khitemTypeid,
voteId : this.vote.id,
userId : this.$store.state.user.id,
userName : this.$store.state.user.name,
uid : 1,
voteEmpList: voteEmpList
}).then(response => {
this.$modal.msgSuccess("提交成功");
this.$router.go(-1)
});
}else {
this.$alert(`已超时,无法提交评分!`, `提示`, {
type: 'Danger'
})
}
}else {
// bkhdxName
this.$alert(`${ bkhdxName }】未评分,请去评分!`, `提示`, {
type: 'Danger'
})
}
}
}
}
</script>
<style scoped lang="scss">
.app-container{
width: 1200px;
margin: 0 auto;
.title{
@ -630,22 +161,26 @@ export default {
}
.time{
padding: 10px;
color: #bb1313;
color: #af5e5e;
}
.tou_piao{
font-size: 14px;
.tou_piao_item{
margin: 10px;
border: 1px solid #eeeeee;
border: 1px solid #eee;
padding: 10px;
display: flex;
justify-content: space-between;
box-sizing: border-box;
margin-bottom: 10px;
._desc{
font-size: 12px;
color: #666666;
margin: 10px 0;
}
.emp_name{
height: 30px;
line-height: 30px;
font-size: 14px;
.el-radio{
margin-top: 10px;
}
}
}

Loading…
Cancel
Save