474 lines
17 KiB
Vue
474 lines
17 KiB
Vue
<template>
|
|
<el-form class="el_form" :model="data" ref="addForm" :rules="formRules" label-width="120px">
|
|
<vi-title title="指标信息"></vi-title>
|
|
<el-row gutter="20">
|
|
<el-col :span="8">
|
|
<el-form-item prop="annual" label="年  度" class="is-required">
|
|
<el-date-picker
|
|
style="width: 100%"
|
|
:disabled="is_view"
|
|
:picker-options="pickerOptions"
|
|
v-model="data.annual"
|
|
type="year"
|
|
value-format="yyyy"
|
|
placeholder="选择年度">
|
|
</el-date-picker>
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col :span="8">
|
|
<el-form-item prop="assessment" label="评测名称" class="is-required">
|
|
<el-input maxlength="30" :disabled="is_view" v-model="data.assessment"
|
|
placeholder="请填写评测名称"
|
|
type="text">
|
|
</el-input>
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
<!-- <el-col :span="8">
|
|
<el-form-item prop="assessment" label="">
|
|
<el-checkbox v-model="data.isEvaluationIndex" :disabled="is_view">是否采用以往评议指标</el-checkbox>
|
|
</el-form-item>
|
|
</el-col>-->
|
|
|
|
<el-col :span="8">
|
|
<el-form-item prop="zbId" label="以往评议指标" v-if="data.isEvaluationIndex">
|
|
<el-select v-model="data.zbId" placeholder="请选择" filterable clearable
|
|
style="width: 100%" @change="getByZbData">
|
|
<el-option
|
|
v-for="item in zbList"
|
|
:key="item.id"
|
|
:label="item.annual+item.assessment"
|
|
:value="item.id">
|
|
</el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
|
|
<el-row gutter="20">
|
|
<el-col :span="8">
|
|
<el-form-item prop="assessmentMode" label="评议选项" class="is-required">
|
|
<el-radio-group v-model="data.assessmentMode" :disabled="is_view">
|
|
<el-radio-button :label="1">工会评议</el-radio-button>
|
|
<el-radio-button :label="2">主席/副主席评议</el-radio-button>
|
|
</el-radio-group>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8">
|
|
<el-form-item prop="reviewMode" label="评议模式" class="is-required">
|
|
<el-radio-group v-model="data.reviewMode" :disabled="is_view">
|
|
<el-tooltip content="由校工会/分工会管理员自我测评"
|
|
placement="top">
|
|
<el-radio-button :label="1">自我评议</el-radio-button>
|
|
</el-tooltip>
|
|
<el-tooltip content="由教职工对选择的工会/主席进行评议"
|
|
placement="top">
|
|
<el-radio-button :label="2">教工评议</el-radio-button>
|
|
</el-tooltip>
|
|
</el-radio-group>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8">
|
|
<el-form-item prop="scoringMode" label="打分模式" class="is-required">
|
|
<el-radio-group v-model="data.scoringMode" :disabled="is_view">
|
|
<el-radio-button :label="1">评分模式</el-radio-button>
|
|
<el-radio-button :label="2">满意度模式</el-radio-button>
|
|
</el-radio-group>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
|
|
<el-row gutter="20">
|
|
<el-col :span="8" v-if="data.assessmentMode">
|
|
<el-form-item prop="scoringMode" label="评议范围" class="is-required">
|
|
<el-radio-group v-model="data.commentTarget" :disabled="is_view">
|
|
<el-tooltip :content="schoolContent" placement="top">
|
|
<el-radio-button :disabled="!(A06 || sysadmin)" :label="1">校工会</el-radio-button>
|
|
</el-tooltip>
|
|
<el-tooltip :content="allUnionContent" placement="top">
|
|
<el-radio-button :disabled="!(A06 || sysadmin)" :label="2">全部分工会</el-radio-button>
|
|
</el-tooltip>
|
|
<el-tooltip :content="selectUnionContent" placement="top">
|
|
<el-radio-button :label="3">自选分工会</el-radio-button>
|
|
</el-tooltip>
|
|
</el-radio-group>
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
<template v-if="data.commentTarget && data.reviewMode == 2 && data.commentTarget == 1">
|
|
<el-col :span="8">
|
|
<el-form-item prop="activityGroupId" label="可评议人员" class="is-required">
|
|
<div style="display: flex; justify-content: space-between">
|
|
<div style="width: 99%">
|
|
<el-select clearable filterable placeholder="请选择可评议人员"
|
|
style="width: 99%" v-model="data.activityGroupId" :disabled="is_view">
|
|
<el-option :key="item.groupId"
|
|
:label="item.groupName"
|
|
:value="item.groupId"
|
|
v-for="item in activityGroupList"></el-option>
|
|
</el-select>
|
|
</div>
|
|
<div>
|
|
<el-button
|
|
@click="$refs.drawerUserScope.userScopeDialog = true"
|
|
:disabled="is_view"
|
|
type="primary">设置
|
|
</el-button>
|
|
</div>
|
|
</div>
|
|
</el-form-item>
|
|
</el-col>
|
|
</template>
|
|
|
|
<template v-if="data.commentTarget && data.commentTarget == 3">
|
|
<el-col :span="8">
|
|
<el-form-item prop="unionIds" label="自选分工会" class="is-required">
|
|
<el-select v-model="data.unionIds" style="width: 100%"
|
|
:disabled="is_view"
|
|
multiple clearable filterable
|
|
placeholder="请选择分工会">
|
|
<el-option
|
|
v-for="item in reviewUnions"
|
|
:key="item.id"
|
|
:label="item.unionname"
|
|
:value="item.id">
|
|
</el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
</template>
|
|
|
|
<el-col :span="8">
|
|
<el-form-item prop="applyTime" label="评议时间" class="is-required">
|
|
<el-date-picker
|
|
end-placeholder="结束时间"
|
|
range-separator="-"
|
|
start-placeholder="开始时间"
|
|
style="width: 100%"
|
|
:disabled="is_view"
|
|
type="datetimerange"
|
|
v-model="data.applyTime"
|
|
value-format="yyyy-MM-dd HH:mm:ss">
|
|
</el-date-picker>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
|
|
|
|
<vi-title2 title="测评内容"></vi-title2>
|
|
|
|
<el-form-item label="" label-width="0" v-for="(nr,idx) in data.nrs">
|
|
|
|
<el-row type="flex" align="middle" justify="space-between">
|
|
<el-input v-model="nr.content" :disabled="is_view" maxlength="30" style="width: 50%"
|
|
placeholder="请填写测评内容">
|
|
<template slot="prepend"><span>
|
|
{{ nr.contentNumber = idx + 1 }}</span></template>
|
|
</el-input>
|
|
<el-button v-if="!is_view" size="medium" :disabled="data.nrs.length<=1" type="danger"
|
|
@click="data.nrs.splice(idx,1)"
|
|
icon="el-icon-delete"></el-button>
|
|
</el-row>
|
|
|
|
<el-row style="margin-top: 20px">
|
|
<el-table :data="nr.bzs" style="width: 100%" border show-summary
|
|
:summary-method="getSummaries" size="small">
|
|
<el-table-column align="center" header-align="center" label="序号" type="index"
|
|
width="100px">
|
|
<template scope="{$index,row}">
|
|
{{ row.contentNumber = $index + 1 }}
|
|
</template>
|
|
</el-table-column>
|
|
|
|
<el-table-column label="测评标准" prop="inspection">
|
|
<template scope="{row}">
|
|
<el-input v-if="!is_view" v-model="row.inspection" placeholder="请填写测评标准" type="textarea"
|
|
rows="2"></el-input>
|
|
<div v-else style="white-space:break-spaces">{{ row.inspection }}</div>
|
|
</template>
|
|
</el-table-column>
|
|
|
|
<!-- <el-table-column label="单项分" prop="single_score" header-align="center" align="center" width="100px">
|
|
<template scope="{row}">
|
|
<el-input v-if="!is_view" v-model="row.single_score" placeholder="请填写单项分"></el-input>
|
|
<span v-else>{{ row.single_score }}</span>
|
|
</template>
|
|
</el-table-column>-->
|
|
|
|
<el-table-column label="标准分" prop="score" header-align="center" align="center"
|
|
width="100px" v-if="data.scoringMode===1">
|
|
<template scope="{row}">
|
|
<el-input v-if="!is_view" v-model.number="row.score" maxlength="4"
|
|
placeholder="请填写标准分"></el-input>
|
|
<span v-else>{{ row.score }}</span>
|
|
</template>
|
|
</el-table-column>
|
|
|
|
<!-- <el-table-column label="能否超过标准分" prop="beyond_highestscore" header-align="center" align="center" width="120px">
|
|
<template scope="{row}">
|
|
<el-switch
|
|
v-if="!is_view"
|
|
v-model="row.beyond_highestscore"
|
|
active-color="#13ce66"
|
|
inactive-color="#ff4949">
|
|
</el-switch>
|
|
<el-switch
|
|
v-else
|
|
disabled
|
|
v-model="row.beyond_highestscore">
|
|
</el-switch>
|
|
</template>
|
|
</el-table-column>-->
|
|
|
|
<!-- <el-table-column label="是否填写意见" prop="isEvidence" header-align="center" align="center"
|
|
width="120px" v-if="data.scoringMode===1">
|
|
<template scope="{row}">
|
|
<el-switch
|
|
:disabled="is_view"
|
|
v-model="row.isEvidence"
|
|
active-color="#13ce66"
|
|
inactive-color="#ff4949">
|
|
</el-switch>
|
|
</template>
|
|
</el-table-column>-->
|
|
|
|
<el-table-column v-if="!is_view" label="操作" header-align="center" align="center"
|
|
width="200px">
|
|
<template scope="{row,$index}">
|
|
<el-button size="mini" :disabled="nr.bzs.length<=1 || (!row.canDelete && row.id)"
|
|
type="danger" icon="el-icon-delete"
|
|
@click="nr.bzs.splice($index,1)"></el-button>
|
|
<el-button size="mini"
|
|
type="primary" icon="el-icon-plus"
|
|
@click="nr.bzs.splice($index+1,0,{inspection:null,score:null,isEvidence:true})"></el-button>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-row>
|
|
|
|
<el-row class="mt10 mb10" style="border-top: 1px dashed rgb(229, 225, 225)"></el-row>
|
|
</el-form-item>
|
|
|
|
<el-row type="flex" justify="center">
|
|
<el-button v-if="!is_view"
|
|
type="primary"
|
|
@click="data.nrs.push({bzs:[{inspection:null,score:null,isEvidence:true}]})">
|
|
添加测评内容
|
|
</el-button>
|
|
</el-row>
|
|
|
|
<div>
|
|
|
|
<drawer-user-scope
|
|
@group_change="getActivityGroup"
|
|
ref="drawerUserScope"
|
|
:group_id.sync="data.activityGroupId"
|
|
></drawer-user-scope>
|
|
</div>
|
|
|
|
</el-form>
|
|
|
|
</template>
|
|
|
|
<script>
|
|
|
|
const METHOD_NAME = "change"
|
|
|
|
module.exports = {
|
|
props: {
|
|
is_view: {
|
|
type: Boolean,
|
|
default: false
|
|
},
|
|
data: {
|
|
type: Object,
|
|
default: {
|
|
nrs: [{
|
|
bzs: [{}]
|
|
}],
|
|
unionIds: []
|
|
}
|
|
}
|
|
},
|
|
watch: {
|
|
data: {
|
|
deep: true,
|
|
handler(val) {
|
|
this.$emit(METHOD_NAME, val)
|
|
}
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
activityGroupList: [],
|
|
isEvaluationIndex: false,
|
|
zbList: [],
|
|
formRules: {
|
|
xxx: [{required: true, message: '请填写年度', trigger: ['blur', 'change']}],
|
|
},
|
|
pickerOptions: {
|
|
disabledDate(time) {
|
|
return (
|
|
time.getFullYear() > new Date().getFullYear()
|
|
);
|
|
}
|
|
},
|
|
relationData: [
|
|
{moduleName: '提案系统模块', id: 'proposal'},
|
|
{moduleName: '二级教代会', id: 'secteameet'},
|
|
{moduleName: '慰问/补助', id: 'ConandDif'},
|
|
],
|
|
roleDataReview: {},
|
|
reviewUnions: [],
|
|
}
|
|
},
|
|
components: {
|
|
'drawer-user-scope': httpVueLoader('/components/plugins/DrawerUserScope.vue'),
|
|
},
|
|
methods: {
|
|
async getActivityGroup() {
|
|
const {data} = await $.get('/platform/activity/basic/scope/getActivityUserScopeGroup')
|
|
this.activityGroupList = data
|
|
},
|
|
async getByZbData() {
|
|
const {
|
|
code,
|
|
data,
|
|
msg
|
|
} = await $.get('/platform/wakeshome/review/viewZb/edit', {id: this.data.zbId})
|
|
if (data) {
|
|
this.$set(this.data, "nrs", data.nrs)
|
|
} else {
|
|
this.$set(this.data, "nrs", [{bzs: [{}]}])
|
|
}
|
|
},
|
|
async getZbList() {
|
|
const res = await $.get("/platform/wakeshome/review/Xjkhzb/getZbList")
|
|
this.zbList = res.data
|
|
},
|
|
getSummaries(param) {
|
|
const {columns, data} = param;
|
|
const sums = [];
|
|
columns.forEach((column, index) => {
|
|
if (index === 0 && this.data.scoringMode === 1) {
|
|
sums[index] = '小计';
|
|
return;
|
|
} else if ([1, 3, 4].includes(index) && this.data.scoringMode === 1) {
|
|
sums[index] = '';
|
|
return;
|
|
} else if ([1, 2, 3].includes(index) && this.data.scoringMode === 2) {
|
|
sums[index] = '';
|
|
return;
|
|
}
|
|
const values = data.map(item => Number(item[column.property]));
|
|
if (!values.every(value => isNaN(value))) {
|
|
sums[index] = values.reduce((prev, curr) => {
|
|
const value = Number(curr);
|
|
if (!isNaN(value)) {
|
|
return prev + curr;
|
|
} else {
|
|
return prev;
|
|
}
|
|
}, 0);
|
|
sums[index] += ' 分';
|
|
} else {
|
|
sums[index] = '';
|
|
}
|
|
});
|
|
return sums;
|
|
},
|
|
async getRolesAndUnion() {
|
|
const {data} = await $.post("/platform/activity/basic/scope/getRolesAndUnion")
|
|
this.roleDataReview = data
|
|
}
|
|
},
|
|
async created() {
|
|
await this.getRolesAndUnion()
|
|
await this.getActivityGroup()
|
|
await this.getZbList()
|
|
if (!this.data || !Object.keys(this.data).length) {
|
|
this.data = {
|
|
nrs: [{
|
|
bzs: [{inspection: null, score: null, isEvidence: true}]
|
|
}],
|
|
}
|
|
}
|
|
|
|
if (((this.is_sysadmin || this.is_A06 || this.is_H02) === false) && this.is_H04 === true) {
|
|
this.reviewUnions = await getUnionList(this.unionId)
|
|
this.$set(this.data, "unionIds", this.reviewUnions[0].id)
|
|
} else {
|
|
this.reviewUnions = await getUnions(null)
|
|
}
|
|
},
|
|
computed: {
|
|
H10() {
|
|
return this.roleDataReview.is_H10
|
|
},
|
|
A06() {
|
|
return this.roleDataReview.is_A06
|
|
},
|
|
H04() {
|
|
return this.roleDataReview.is_H04
|
|
},
|
|
H02() {
|
|
return this.roleDataReview.is_H02
|
|
},
|
|
sysadmin() {
|
|
return this.roleDataReview.is_sysadmin
|
|
},
|
|
unionId() {
|
|
return this.roleDataReview.unionid
|
|
},
|
|
schoolContent() {
|
|
if (this.data.reviewMode == 1) {
|
|
return '勾选后,仅校工会管理员可参加测评'
|
|
} else if (this.data.reviewMode == 2) {
|
|
return '勾选后,全校所有人员可评议校工会,也可根据右侧选框【可评议人员】指定评议人员范围'
|
|
} else {
|
|
return '请选择评议模式'
|
|
}
|
|
},
|
|
allUnionContent() {
|
|
if (this.data.reviewMode == 1) {
|
|
return '勾选后,仅各工会管理员可对本分工会进行自我评议'
|
|
} else if (this.data.reviewMode == 2) {
|
|
return '勾选后,所有分工会人员对本分工会进行评议,不可跨工会评议'
|
|
} else {
|
|
return '请选择评议模式'
|
|
}
|
|
},
|
|
selectUnionContent() {
|
|
if (this.data.reviewMode == 1) {
|
|
return '勾选后,仅右侧选择的分工会管理员可对本分工会进行自我评议'
|
|
} else if (this.data.reviewMode == 2) {
|
|
return '勾选后,可根据右侧选框【自选分工会】指定分工会评议范围'
|
|
} else {
|
|
return '请选择评议模式'
|
|
}
|
|
}
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<style>
|
|
.fixedBox {
|
|
position: fixed;
|
|
top: 200px;
|
|
right: 10px;
|
|
z-index: 100;
|
|
}
|
|
|
|
.el_form {
|
|
position: relative;
|
|
}
|
|
|
|
.el-input-group__prepend {
|
|
background-color: #1867b0;
|
|
color: white;
|
|
}
|
|
|
|
</style>
|