This commit is contained in:
Paidax
2024-11-29 09:03:59 +08:00
commit 2ffadd89a7
3480 changed files with 879405 additions and 0 deletions
@@ -0,0 +1,152 @@
<!--#
layout("/mobile/platform.html"){
#-->
<style>
.van-dropdown-menu__bar {
display: -webkit-box;
}
.van-doc-card {
margin: 14px;
padding: 6px;
background-color: #fff;
border-radius: 10px;
box-shadow: 0 8px 12px #ebedf0;
line-height: 25px;
font-size: 12px;
}
.title {
text-align: center;
font-size: 18px;
}
.d_card {
background-color: #fff;
border-radius: 10px;
padding: 10px;
width: 90%;
margin: 10px;
}
</style>
<div id="app">
<van-nav-bar title="民主测评列表" left-arrow placeholder fixed
@click-left="history.back()"></van-nav-bar>
<div class="search-fixed">
<van-dropdown-menu active-color="#1989fa">
<van-dropdown-item v-model="pageForm.annual" :options="yearOption" @change="yearChange"></van-dropdown-item>
</van-dropdown-menu>
</div>
<div style="margin: 60px auto 60px auto">
<template>
<van-list :finished="finished" :finished-text="tableData.length>0?'没有更多了':''"
v-if="tableData && tableData.length>0"
v-model="loading"
@load="pageData">
<div v-for="o in tableData" :key="o.id" class="van-doc-card">
<div @click="toCommentator(o)" style="padding: 10px">
<div>
<div style="display: flex;font-size: 18px">{{ o.assessment }}</div>
<div style="align-items: center">
<van-tag type="primary">{{ o.assessmentMode==1 ? '会员评家考核' : '工会主席考核' }}</van-tag>
<!--<van-tag type="primary">{{ o.commentTarget==1 ? '校工会' : '分工会' }}</van-tag>-->
<van-tag type="primary" v-if="o.commentTarget==1">{{ '校工会' }}</van-tag>
<van-tag type="primary" v-if="o.commentTarget==2">{{ unionName }}</van-tag>
</div>
</div>
<van-row gutter="20">
<van-col span="12">
<span>年度:{{ o.annual }}</span>
</van-col>
<van-col span="12">
<span>测评模式:{{ o.scoringMode==1 ? '评分' : '满意度' }}</span>
</van-col>
</van-row>
</div>
</div>
</van-list>
<van-empty v-else description="暂无数据"></van-empty>
</template>
</div>
<div>
<van-tabbar v-model="tarBarActive">
<van-tabbar-item icon="home-o" replace url="/mobile/unioncomment/appraisal/index">民主测评</van-tabbar-item>
<van-tabbar-item icon="manager-o" replace url="/mobile/unioncomment/appraisal/mine">我的测评</van-tabbar-item>
</van-tabbar>
</div>
</div>
<script>
const vue = new Vue({
el:'#app',
mixins: [mobileMixins],
data(){
return{
tarBarActive: 0,
pageForm:{
annual:'',
},
yearOption:[],
unionName: '${@shiro.getPrincipalProperty("union").getUnionname()}'
}
},
methods:{
async pageData() {
this.mLoading = true
const resp = await $.post('/mobile/unioncomment/appraisal/pageData', this.pageForm)
if (resp.code === 0) {
if (resp.data.list.length === 0) {
this.tableData = []
this.loading = false
this.finished = true
} else {
this.tableData = this.tableData.concat(resp.data.list)
}
if (this.tableData.length === resp.data.totalCount) {
this.finished = true
} else {
this.pageForm.pageNumber++
}
}
this.loading = false;
this.mLoading = false
},
yearChange() {
this.pageForm.pageNumber = 1
this.tableData = []
this.finished = false
this.pageData()
},
async toCommentator(o){
const isExist = await getScopeUser(o.activityGroupId)
if (!isExist) {
vant.Dialog.alert({
title: '温馨提示',
message: '您不在测评人员范围中',
confirmButtonColor: '#1867b0'
})
return
}
const resp = await $.get('/mobile/unioncomment/appraisal/isAssess',{id:o.id})
if (resp.data > 0){
vant.Toast('您已经填写过,请前往我的测评中查看测评结果')
return
}
window.location.href = '/mobile/unioncomment/appraisal/commentator?id=' + o.id
}
},
async created(){
for (let i = new Date().getFullYear() - 10; i <= new Date().getFullYear(); i++) {
this.yearOption.unshift({value: i, text: i + '年'},)
}
this.$set(this.pageForm, "annual", this.yearOption[0].value)
this.pageData();
}
});
</script>
<!--#
}
#-->
@@ -0,0 +1,342 @@
<!--#
layout("/mobile/platform.html"){
#-->
<style>
.van-doc-card {
margin: 14px;
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
:readonly="isReadOnly"
placeholder="请填写测评分"
@change="changeScore(item)"
:rules="[{ required: true, message: '请填写测评分' }]"
></van-field>
<van-field v-if="item.isEvidence"
v-model="item.options"
name="意见或建议"
label="意见或建议"
placeholder="请填写意见或建议"
:readonly="isReadOnly"
></van-field>
</div>
</div>
</van-collapse-item>
</div>
</div>
<div v-if="commentatorData.scoringMode==2">
<div class="search-fixed">
<van-dropdown-menu active-color="#1989fa">
<van-dropdown-item v-model="president" :options="presidentList"
@change="presidentChange"></van-dropdown-item>
</van-dropdown-menu>
</div>
<div v-for="o in commentatorData.nrs" style="margin: 60px auto 0 auto">
<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" label="满意度" style="padding: 12px 2px;margin: 5px">
<template #input>
<van-radio-group style="margin-left: -20px" 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-group>
</template>
</van-field>
</div>
</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,
}
},
methods: {
async getCommentById() {
const resp = await $.get('/mobile/unioncomment/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 => {
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 score = 0;
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 = '不满意'
}
} else if (this.commentatorData.assessmentMode === 2) {
const result = this.bzList.filter(v => v.resultScore === '满意' || v.resultScore === '基本满意')
if (result.length >= 8) {
this.reviewResult = '满意'
} else if (result.length >= 6 && result.length <= 7) {
this.reviewResult = '基本满意'
} else {
this.reviewResult = '不满意'
}
const user = this.userList.find(v=> v.id === this.president)
evaluatedPersonName = user.username
evaluatedPersonType = user.evaluatedPersonType
}
const resp = await $.post('/mobile/unioncomment/appraisal/doSubmit', {
data: JSON.stringify(this.bzList),
id: this.id,
reviewResult: this.reviewResult,
evaluatedPersonId: this.president,
evaluatedPersonName:evaluatedPersonName,
evaluatedPersonType:evaluatedPersonType,
presidentOpinions: this.presidentOpinions
})
if (resp.code === 0) {
await this.getCommentById();
window.location.href = '/mobile/unioncomment/appraisal/mine'
}
})
},
async showAssess() {
this.$refs['addForm'].validate().then(async () => {
let score = 0;
await this.assignment();
if (this.commentatorData.assessmentMode === 1) {
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(score)
console.log(this.reviewResult)
vant.Dialog.alert({
title: '测评结果',
message: '您的测评分数为【' + score + "】分,测评结果为【" + this.reviewResult + "】",
confirmButtonColor: '#1867b0'
})
} else if (this.commentatorData.assessmentMode === 2) {
const result = this.bzList.filter(v => v.resultScore === '满意' || v.resultScore === '基本满意')
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/unioncomment/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/unioncomment/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>
<!--#
}
#-->
@@ -0,0 +1,271 @@
<!--#
layout("/mobile/platform.html"){
#-->
<style>
.van-doc-card {
margin: 14px;
padding: 6px;
background-color: #fff;
border-radius: 10px;
box-shadow: 0 8px 12px #ebedf0;
line-height: 25px;
font-size: 12px;
}
.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-dropdown-menu__bar {
display: -webkit-box;
}
</style>
<div id="app">
<van-nav-bar title="我的测评" left-arrow placeholder fixed
@click-left="history.back()"></van-nav-bar>
<div>
<div class="search-fixed">
<van-dropdown-menu active-color="#1989fa">
<van-dropdown-item v-model="pageForm.annual" :options="yearOption" @change="yearChange"></van-dropdown-item>
</van-dropdown-menu>
</div>
<div style="margin: 60px auto">
<template>
<van-list :finished="finished" :finished-text="tableData.length>0?'没有更多了':''"
v-if="tableData && tableData.length>0"
v-model="loading"
@load="pageData">
<div v-for="o in tableData" :key="o.id" class="van-doc-card">
<div @click="toCommentator(o)" style="padding: 10px">
<div>
<div style="display: flex;font-size: 18px">{{ o.assessment }}</div>
<div style="align-items: center">
<van-tag type="primary">{{ o.assessmentMode==1 ? '会员评家考核' : '工会主席考核' }}</van-tag>
<!--<van-tag type="primary">{{ o.commentTarget==1 ? '校工会' : '分工会' }}</van-tag>-->
<van-tag type="primary" v-if="o.commentTarget==1">{{ '校工会' }}</van-tag>
<van-tag type="primary" v-if="o.commentTarget==2">{{ unionName }}</van-tag>
</div>
</div>
<van-row gutter="20">
<van-col span="10">
<span>年度:{{ o.annual }}</span>
</van-col>
<van-col span="14" v-if="o.assessmentMode==2">
<span>测评对象:{{ o.evaluatedPersonName }}({{o.evaluatedPersonType}})</span>
</van-col>
</van-row>
<van-row gutter="20">
<van-col span="10">
<span>测评模式:{{ o.scoringMode==1 ? '评分' : '满意度' }}</span>
</van-col>
<van-col span="14">
<span>测评结果:{{ o.reviewResult ? o.reviewResult : '暂无' }}</span>
</van-col>
</van-row>
<!--<div>年度:{{ o.annual }}</div>
<div>测评结果:{{ o.reviewResult ? o.reviewResult : '暂无' }}</div>-->
</div>
</div>
</van-list>
<van-empty v-else description="暂无数据"></van-empty>
</template>
</div>
</div>
<van-popup v-model="descPopup" position="right" style="height: 100%;width: 100%;background-color: #f9f9f9"
safe-area-inset-bottom>
<van-sticky>
<van-nav-bar @click-left="descPopup=false" left-arrow
title="测评详情"></van-nav-bar>
</van-sticky>
<div>
<van-form :show-error-message="false" style="margin-bottom: 60px">
<!-- v-for测评内容 -->
<van-collapse v-model="activeNames" accordion>
<div v-if="zbxx.scoringMode==1">
<div v-for="o in zbxx.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="测评分"
readonly
></van-field>
<van-field v-if="item.isEvidence"
v-model="item.options"
name="意见或建议"
label="意见或建议"
readonly
></van-field>
</div>
</div>
</van-collapse-item>
</div>
<div >
<van-field
v-model="commentPeo.reviewResult"
name="测评结果"
label="测评结果"
readonly
></van-field>
</div>
</div>
<div v-if="zbxx.scoringMode==2">
<div v-for="o in zbxx.nrs">
<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" label="满意度" style="padding: 12px 2px;margin: 5px">
<template #input>
<van-radio-group style="margin-left: -20px" v-model="item.resultScore" disabled direction="horizontal">
<van-radio name="满意">满意</van-radio>
<van-radio name="基本满意">基本满意</van-radio>
<van-radio name="不满意">不满意</van-radio>
</van-radio-group>
</template>
</van-field>
</div>
</div>
</div>
<div class="van-doc-card">
<van-field
v-model="commentPeo.presidentOpinions"
rows="2"
readonly
name="意见或建议"
label="意见或建议"
></van-field>
<van-field
v-model="commentPeo.reviewResult"
name="测评结果"
label="测评结果"
readonly
></van-field>
</div>
</div>
</van-collapse>
</van-form>
</div>
</van-popup>
<div>
<van-tabbar v-model="tarBarActive">
<van-tabbar-item icon="home-o" replace url="/mobile/unioncomment/appraisal/index">民主测评</van-tabbar-item>
<van-tabbar-item icon="manager-o" replace url="/mobile/unioncomment/appraisal/mine">我的测评</van-tabbar-item>
</van-tabbar>
</div>
</div>
<script>
const vue = new Vue({
el: '#app',
mixins: [mobileMixins],
data() {
return {
tarBarActive: 1,
pageForm: {
annual:'',
},
descPopup: false,
commentPeo: {},
zbxx: {},
activeNames: '',
unionName: '${@shiro.getPrincipalProperty("union").getUnionname()}',
yearOption:[],
}
},
methods: {
yearChange() {
this.pageForm.pageNumber = 1
this.tableData = []
this.finished = false
this.pageData()
},
async pageData() {
this.mLoading = true
const resp = await $.post('/mobile/unioncomment/appraisal/onLoad', this.pageForm)
if (resp.code === 0) {
if (resp.data.list.length === 0) {
this.tableData = []
this.loading = false
this.finished = true
} else {
this.tableData = this.tableData.concat(resp.data.list)
}
if (this.tableData.length === resp.data.totalCount) {
this.finished = true
} else {
this.pageForm.pageNumber++
}
}
this.loading = false;
this.mLoading = false
},
async toCommentator(o) {
const resp = await $.get('/mobile/unioncomment/appraisal/getBzById', {
peoId: o.id,
})
if (resp.code === 0) {
this.commentPeo = resp.data.commentPeo;
this.zbxx = resp.data.zbxx
this.activeNames = this.zbxx.nrs[0].id
this.descPopup = true
}
}
},
async created() {
for (let i = new Date().getFullYear() - 10; i <= new Date().getFullYear(); i++) {
this.yearOption.unshift({value: i, text: i + '年'},)
}
this.$set(this.pageForm, "annual", this.yearOption[0].value)
this.pageData()
}
});
</script>
<!--#
}
#-->