429 lines
18 KiB
HTML
429 lines
18 KiB
HTML
<!--#
|
|
layout("/mobile/platform.html"){
|
|
#-->
|
|
<style>
|
|
.van-doc-card {
|
|
margin: 5px;
|
|
padding: 6px;
|
|
background-color: #fff;
|
|
border-radius: 10px;
|
|
box-shadow: 0 8px 12px #ebedf0;
|
|
line-height: 25px;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.search-fixed {
|
|
position: fixed;
|
|
top: 46px;
|
|
left: 0;
|
|
width: 100%;
|
|
z-index: 1;
|
|
box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
|
|
}
|
|
|
|
.van-dropdown-menu__bar {
|
|
display: -webkit-box;
|
|
}
|
|
|
|
.van-collapse-item .van-cell__title :before {
|
|
content: '';
|
|
display: inline-block;
|
|
height: 15px;
|
|
background-color: #0e5996;
|
|
width: 4px;
|
|
position: relative;
|
|
top: 3px;
|
|
margin-right: 2px;
|
|
border-radius: 8px;
|
|
}
|
|
|
|
.van-collapse-item__content .van-cell__title :before {
|
|
display: none;
|
|
}
|
|
|
|
.content_div {
|
|
margin-top: 10px;
|
|
background-color: white;
|
|
padding: 6px;
|
|
border-radius: 10px;
|
|
box-shadow: 0 8px 12px #ebedf0;
|
|
}
|
|
|
|
.van-collapse-item__content {
|
|
padding: 0px 6px;
|
|
background-color: #f9f9f9;
|
|
}
|
|
|
|
.van-button {
|
|
height: 40px;
|
|
margin: 6px 20px
|
|
}
|
|
|
|
</style>
|
|
<div id="app">
|
|
<van-nav-bar title="民主测评" left-arrow placeholder fixed
|
|
@click-left="history.back()"></van-nav-bar>
|
|
|
|
<div>
|
|
<van-form ref="addForm" :show-error-message="false" style="margin-bottom: 60px">
|
|
<!-- v-for测评内容 -->
|
|
<van-collapse v-model="activeNames" accordion>
|
|
<div v-if="commentatorData.scoringMode==1">
|
|
<div v-for="o in commentatorData.nrs">
|
|
<van-collapse-item :title="o.content" :name="o.id" style="margin: 5px">
|
|
<!-- v-for测评指标 -->
|
|
<div v-for="item in o.bzs" style="margin-top: 10px" class="content_div">
|
|
<div>
|
|
<div style="font-size: 15px;color: black">
|
|
{{item.contentNumber}}、{{item.inspection}}
|
|
</div>
|
|
<van-row>
|
|
<div style="font-size: 15px;text-align: right;margin-right: 30px;margin-bottom:-4px">
|
|
标准分:{{item.score}}
|
|
</div>
|
|
</van-row>
|
|
<van-field
|
|
v-model="item.resultScore"
|
|
name="评议分"
|
|
label="评议分"
|
|
type="digit"
|
|
required
|
|
maxlength="4"
|
|
:readonly="isReadOnly"
|
|
placeholder="请填写评议分"
|
|
@change="changeScore(item)"
|
|
:rules="[{ required: true, message: '请填写评议分' }]"
|
|
></van-field>
|
|
</div>
|
|
</div>
|
|
<div class="content_div" style="margin: 10px 0">
|
|
<van-field v-model="o.remark"
|
|
name="备注" label="备注"
|
|
required rows="3" type="textarea"
|
|
autosize show-word-limit
|
|
maxlength="300"
|
|
placeholder="请填写备注"
|
|
:readonly="isReadOnly"
|
|
></van-field>
|
|
</div>
|
|
</van-collapse-item>
|
|
</div>
|
|
<div v-if="commentatorData.reviewMode == 1" class="content_div">
|
|
<van-field name="files" label="职工评家总结" required style="flex-flow: column"
|
|
input-align="left">
|
|
<template #label>
|
|
<div class="mb10">职工评家总结</div>
|
|
</template>
|
|
<template #input>
|
|
<vant-file-upload :files.sync="commentatorData.files"></vant-file-upload>
|
|
</template>
|
|
</van-field>
|
|
</div>
|
|
</div>
|
|
|
|
<div v-if="commentatorData.scoringMode==2">
|
|
|
|
<div class="search-fixed" style="margin: 0px auto 60px auto" v-if="commentatorData.assessmentMode == 2">
|
|
<van-dropdown-menu active-color="#1989fa">
|
|
<van-dropdown-item v-model="president" :options="presidentList"
|
|
@change="presidentChange"></van-dropdown-item>
|
|
</van-dropdown-menu>
|
|
</div>
|
|
|
|
<div>
|
|
<div v-for="o in commentatorData.nrs">
|
|
<van-collapse-item :title="o.content" :name="o.id" style="margin: 5px">
|
|
<div v-for="item in o.bzs">
|
|
<div class="van-doc-card">
|
|
<div style="font-size: 15px;color: black">
|
|
{{item.contentNumber}}、{{item.inspection}}
|
|
</div>
|
|
<van-field name="radio" style="padding: 12px 2px;margin: 5px">
|
|
<template #input>
|
|
<van-radio-group v-model="item.resultScore" :disabled="isReadOnly"
|
|
direction="horizontal">
|
|
<van-radio name="非常满意">非常满意</van-radio>
|
|
<van-radio name="满意">满意</van-radio>
|
|
<van-radio name="良好">良好</van-radio>
|
|
<van-radio name="一般">一般</van-radio>
|
|
</van-radio-group>
|
|
</template>
|
|
</van-field>
|
|
</div>
|
|
</div>
|
|
</van-collapse-item>
|
|
</div>
|
|
</div>
|
|
<div class="van-doc-card">
|
|
<van-field
|
|
v-model="presidentOpinions"
|
|
:readonly="isReadOnly"
|
|
rows="2" type="textarea"
|
|
autosize show-word-limit
|
|
name="备注" label="备注" maxlength="200"
|
|
placeholder="请填写备注"
|
|
></van-field>
|
|
</div>
|
|
</div>
|
|
</van-collapse>
|
|
|
|
</van-form>
|
|
|
|
</div>
|
|
|
|
<div>
|
|
<van-tabbar>
|
|
<van-button id="buttonAss" :disabled="isShowSubmit" round block type="info" @click="showAssess">
|
|
查看测评结果
|
|
</van-button>
|
|
<van-button id="buttonSub" :disabled="isShowSubmit" round block type="info" @click="onSubmit">提交
|
|
</van-button>
|
|
</van-tabbar>
|
|
</div>
|
|
|
|
</div>
|
|
<script>
|
|
|
|
const vue = new Vue({
|
|
el: '#app',
|
|
data() {
|
|
return {
|
|
id: "",
|
|
activeNames: '',
|
|
commentatorData: {},
|
|
reviewResult: null,
|
|
presidentOpinions: '',
|
|
bzList: [],
|
|
president: '',
|
|
presidentList: [],
|
|
userList: [],
|
|
isShowSubmit: false,
|
|
isReadOnly: false,
|
|
formData: {
|
|
id: '',
|
|
reviewResult: '',
|
|
presidentOpinions: '',
|
|
president: '',
|
|
files: [],
|
|
nrs: [],
|
|
reviewMode: '',
|
|
scoringMode: '',
|
|
assessmentMode: '',
|
|
assessmentResult: '',
|
|
assessmentOpinions: '',
|
|
assessmentFiles: [],
|
|
assessmentNrs: [],
|
|
assessmentReviewMode: '',
|
|
assessmentScoringMode: '',
|
|
}
|
|
}
|
|
},
|
|
methods: {
|
|
async getCommentById() {
|
|
const resp = await $.get('/mobile/wakeshome/review/appraisal/getById', {id: this.id})
|
|
if (resp.code === 0) {
|
|
this.commentatorData = resp.data
|
|
if (this.commentatorData.assessmentMode === 2) {
|
|
this.commentatorData.nrs.forEach(v => {
|
|
v.bzs.forEach(o => {
|
|
o.resultScore = '满意'
|
|
})
|
|
})
|
|
await this.getPresidents();
|
|
}
|
|
this.activeNames = this.commentatorData.nrs[0].id
|
|
}
|
|
},
|
|
async assignment() {
|
|
const self = this;
|
|
this.bzList = [];
|
|
this.commentatorData.nrs.forEach(v => {
|
|
v.bzs.forEach(o => {
|
|
if (self.commentatorData.assessmentMode === 1 && v.remark) {
|
|
if (!o.resultScore) {
|
|
return
|
|
}
|
|
o.options = v.remark
|
|
}
|
|
self.bzList.push(o)
|
|
})
|
|
})
|
|
},
|
|
async onSubmit() {
|
|
this.$refs['addForm'].validate().then(async () => {
|
|
await this.$dialog.confirm({
|
|
title: '确定要提交该测评结果吗?',
|
|
message: '提交后不可修改,请仔细检查后提交'
|
|
})
|
|
await this.assignment();
|
|
|
|
let evaluatedPersonName = null;
|
|
let evaluatedPersonType = null;
|
|
|
|
if (this.commentatorData.assessmentMode === 1) {
|
|
let source = 0; // 标准分
|
|
let resultScore = 0; // 评议分
|
|
|
|
this.bzList.forEach(v => {
|
|
source += Number(v.score)
|
|
resultScore += Number(v.resultScore)
|
|
})
|
|
const result = (resultScore / source) * 100
|
|
|
|
if (result >= 80) {
|
|
this.reviewResult = '满意'
|
|
} else if (result >= 60 && result <= 79) {
|
|
this.reviewResult = '基本满意'
|
|
} else {
|
|
this.reviewResult = '不满意'
|
|
}
|
|
} else if (this.commentatorData.assessmentMode === 2) {
|
|
const result = this.bzList.filter(v => v.resultScore === '满意' || v.resultScore === '基本满意')
|
|
const satisfactionPercentage = (result.length / this.bzList.length) * 100;
|
|
if (satisfactionPercentage >= 80) {
|
|
this.reviewResult = '满意'
|
|
} else if (satisfactionPercentage >= 60 && satisfactionPercentage <= 79) {
|
|
this.reviewResult = '基本满意'
|
|
} else {
|
|
this.reviewResult = '不满意'
|
|
}
|
|
|
|
const user = this.userList.find(v => v.id === this.president)
|
|
evaluatedPersonName = user.username
|
|
evaluatedPersonType = user.evaluatedPersonType
|
|
}
|
|
|
|
const formData = this.formData
|
|
// this.$set(formData,"bzList",this.bzList)
|
|
formData.bzList = JSON.stringify(this.bzList)
|
|
formData.id = this.id
|
|
formData.president = this.president
|
|
formData.reviewResult = this.reviewResult
|
|
formData.evaluatedPersonName = evaluatedPersonName
|
|
formData.evaluatedPersonType = evaluatedPersonType
|
|
formData.files = JSON.stringify(this.commentatorData.files)
|
|
|
|
const resp = await $.post('/mobile/wakeshome/review/appraisal/doSubmit', formData)
|
|
if (resp.code === 0) {
|
|
await this.getCommentById();
|
|
vant.Toast.success('操作成功')
|
|
setTimeout(() => {
|
|
window.location.href = '/mobile/wakeshome/review/appraisal/mine'
|
|
}, 500)
|
|
}
|
|
})
|
|
},
|
|
async showAssess() {
|
|
this.$refs['addForm'].validate().then(async () => {
|
|
// let score = 0;
|
|
if (this.commentatorData.assessmentMode === 1) {
|
|
await this.assignment();
|
|
let source = 0; // 标准分
|
|
let resultScore = 0; // 评议分
|
|
|
|
this.bzList.forEach(v => {
|
|
source += Number(v.score)
|
|
resultScore += Number(v.resultScore)
|
|
})
|
|
const result = (resultScore / source) * 100
|
|
|
|
if (result > 95) {
|
|
this.reviewResult = '非常满意'
|
|
} else if (result > 80 && result <= 94) {
|
|
this.reviewResult = '满意'
|
|
} else if (result > 60 && result <= 79) {
|
|
this.reviewResult = '良好'
|
|
} else {
|
|
this.reviewResult = '一般'
|
|
}
|
|
|
|
/*this.bzList.forEach(v => {
|
|
score += Number(v.resultScore)
|
|
})
|
|
if (score >= Number(80)) {
|
|
this.reviewResult = '满意'
|
|
} else if (score >= Number(60) && score <= Number(79)) {
|
|
this.reviewResult = '基本满意'
|
|
} else {
|
|
this.reviewResult = '不满意'
|
|
}*/
|
|
console.log(this.reviewResult)
|
|
vant.Dialog.alert({
|
|
title: '测评结果',
|
|
message: '您的测评分数为【' + resultScore + "】分,测评结果为【" + this.reviewResult + "】",
|
|
confirmButtonColor: '#1867b0'
|
|
})
|
|
} else if (this.commentatorData.assessmentMode === 2) {
|
|
const result = this.bzList.filter(v => v.resultScore === '满意')
|
|
const satisfactionPercentage = (result.length / this.bzList.length) * 100;
|
|
|
|
if (satisfactionPercentage > 95) {
|
|
this.reviewResult = '非常满意'
|
|
} else if (satisfactionPercentage > 80 && satisfactionPercentage <= 94) {
|
|
this.reviewResult = '满意'
|
|
} else if (satisfactionPercentage > 60 && satisfactionPercentage <= 79) {
|
|
this.reviewResult = '良好'
|
|
} else {
|
|
this.reviewResult = '一般'
|
|
}
|
|
|
|
/*if (result.length >= 8) {
|
|
this.reviewResult = '满意'
|
|
} else if (result.length >= 6 && result.length <= 7) {
|
|
this.reviewResult = '基本满意'
|
|
} else {
|
|
this.reviewResult = '不满意'
|
|
}*/
|
|
console.log(result)
|
|
console.log(this.reviewResult)
|
|
vant.Dialog.alert({
|
|
title: '测评结果',
|
|
message: '您的满意或基本满意个数为【' + result.length + "】个,测评结果为【" + this.reviewResult + "】",
|
|
confirmButtonColor: '#1867b0'
|
|
})
|
|
}
|
|
})
|
|
},
|
|
changeScore(item) {
|
|
if (Number(item.score) < Number(item.resultScore)) {
|
|
item.resultScore = null;
|
|
vant.Toast('评议分不能超过标准分!')
|
|
}
|
|
},
|
|
async getPresidents() {
|
|
const resp = await $.get('/mobile/wakeshome/review/appraisal/getPresidents')
|
|
if (resp.code === 0) {
|
|
this.userList = resp.data
|
|
this.userList.forEach(v => {
|
|
this.presidentList.push({value: v.id, text: v.presidents})
|
|
})
|
|
}
|
|
this.president = this.presidentList[0].value
|
|
await this.presidentChange();
|
|
},
|
|
async presidentChange() {
|
|
const resp = await $.get('/mobile/wakeshome/review/appraisal/isAssess', {
|
|
id: this.id,
|
|
evaluatedPersonId: this.president,
|
|
})
|
|
if (resp.data > 0) {
|
|
vant.Dialog.alert({
|
|
title: '提示',
|
|
message: '您已经评测过该主席(副主席),请在【我的评议】中查看结果,或更换主席(副主席)进行测评',
|
|
confirmButtonColor: '#1867b0'
|
|
})
|
|
this.isShowSubmit = true;
|
|
this.isReadOnly = true
|
|
}
|
|
},
|
|
},
|
|
async created() {
|
|
this.id = GetQueryString('id')
|
|
await this.getCommentById();
|
|
}
|
|
});
|
|
</script>
|
|
<!--#
|
|
}
|
|
#-->
|